diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..7b4ac69c6f4cbfb764c355b249e301b4efc8a172 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.project +.TITAN_properties +/build/ +/bin/ +.DS_Store +.vscode +/logs/ +/mocks/**/*.log \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000000000000000000000000000000000..2207ee29bd664881d912784dc6ee0a076d5d4a06 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,16 @@ +[submodule "ttcn/LibCommon"] + path = ttcn/LibCommon + url = https://forge.etsi.org/gitlab/LIBS/LibCommon.git + branch = master +[submodule "ttcn/LibSip"] + path = ttcn/LibSip + url = https://forge.etsi.org/gitlab/LIBS/LibSip.git + branch = master +[submodule "ttcn/LibIms"] + path = ttcn/LibIms + url = https://forge.etsi.org/gitlab/LIBS/LibIms.git + branch = master +[submodule "ttcn/LibIts"] + path = ttcn/LibIts + url = https://forge.etsi.org/gitlab/LIBS/LibIts + branch = TTF011 diff --git a/.jenkins.sh b/.jenkins.sh index ce3ff721f3ce9985954f9be90c4ed4171468414b..cb03e934c581eae499df378c57670c971f70ef2d 100755 --- a/.jenkins.sh +++ b/.jenkins.sh @@ -10,7 +10,7 @@ cd $(dirname $0) run_dir=`pwd` # Docker version 2 -cd docker +cd virtualization/docker ./build.sh #--force-stfubuntu ret_code=`echo $?` @@ -22,6 +22,11 @@ fi ./run.sh +if [ "$1" == "--remove" ] +then + docker rmi --force etsiforge/ttf_t009_ng112:latest +fi + cd $run_dir exit 0 diff --git a/.project b/.project deleted file mode 100644 index 082e1b36f2bade7c1e0be82ce9c6f1ce616b1f9c..0000000000000000000000000000000000000000 --- a/.project +++ /dev/null @@ -1,37 +0,0 @@ - - - Ng112 - - - Abstract_Socket_CNL113384 - - - - org.eclipse.xtext.ui.shared.xtextBuilder - - - - - org.eclipse.titan.designer.core.TITANBuilder - - - - - - org.eclipse.titan.designer.core.TITANNature - org.eclipse.titan.log.viewer.TitanLogProject - org.eclipse.xtext.ui.shared.xtextNature - - - - ccsrc/Protocols/Tcp/Abstract_Socket.cc - 1 - /home/andreas/gridGears/projects/etsi/ng112/eclipse/C::/Users/yann/Documents/wireshark/cygwin64/home/yann/frameworks/titan/titan.core/performance_test/SIPApplibPerfTest/src/Abstract_Socket.cc - - - ccsrc/Protocols/Tcp/Abstract_Socket.hh - 1 - /home/andreas/gridGears/projects/etsi/ng112/eclipse/C::/Users/yann/Documents/wireshark/cygwin64/home/yann/frameworks/titan/titan.core/performance_test/SIPApplibPerfTest/src/Abstract_Socket.hh - - - diff --git a/README.md b/README.md index 397c3a0a12d2e79cddd086665ed90f9f26a97064..9b8fdb581df00648c20dad1016f147f9b4e2ea2e 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ## Introduction This repositories contains the test specifications and test adapter code -to test compliance to ETSI TS 103 479 (V1.1.1: “Emergency Communications (EMTEL); Core elements for network independent access to emergency services”. +to test compliance to ETSI TS 103 479 (Emergency Communications (EMTEL); Core elements for network independent access to emergency services). ## Contact information Email at cti_support at etsi dot org @@ -13,9 +13,10 @@ See the attached LICENSE file or visit https://forge.etsi.org/legal-matters ## Standard links -- ETSI TS 103 650-1, Part 1: Test Purposes - Available soon -- ETSI TS 103 650-2, Part 2: Test Suite - Available soon -- ETSI TS 103 479, Core elements for network independent access to emergency services - Available soon +- ETSI TS 103 650-1, Part 1: Test Purposes V1.2.1 - Available [here](https://www.etsi.org/deliver/etsi_ts/103600_103699/10365001/01.02.01_60/ts_10365001v010201p.pdf) +- ETSI TS 103 650-2, Part 2: Test Suite V1.2.1 - Available [here](https://www.etsi.org/deliver/etsi_ts/103600_103699/10365002/01.02.01_60/ts_10365002v010201p.pdf) +- ETSI TS 103 479 V1.2.1, Core elements for network independent access to emergency services - Available [here](https://www.etsi.org/deliver/etsi_ts/103400_103499/103479/01.02.01_60/ts_103479v010201p.pdf) +- ETSI TS 103 698, Emergency Communications (EMTEL); Lightweight Messaging Protocol for Emergency Service Accessibility (LMPE) - Available [here](https://www.etsi.org/deliver/etsi_ts/103600_103699/103698/01.01.01_60/ts_103698v010101p.pdf) - Next Generation 112 Long Term Definition, accessible [here](https://eena.org/wp-content/uploads/2018/11/Next-Generation-112-Long-Term-Definition-Standard-For-Emergency-Services.pdf) ## RFC links @@ -187,17 +188,46 @@ Procedure: - $HOME/frameworks, - $HOME/dev - $HOME/lib + - In $HOME/frameworks, build the following package: - Eclipse IDE for C/C++ Developers, according the procedure specified [here](https://www.eclipse.org/cdt/) - TITAN, according the procedure specified [here](https://github.com/eclipse/titan.core) - Import the TITAN plugin into your Eclipse IDE, according the procedure specified [here](https://github.com/eclipse/titan.core) + +- Install LibOSIP framework +```sh +$ cd ${HOME}/frameworks +$ git clone https://git.savannah.gnu.org/git/osip.git ./osip +$ cd osip +$ ./autogen.sh +$ ./configure --prefix=/home/etsi +$ make && make install +``` + - Clone the ETSI Emergency Communications project into $HOME/dev folder ```sh -$ git clone +$ git clone --recurse-submodules --branch ttf_t009 https://forge.etsi.org/rep/emtel/NG112.git ./TTF009_Ng112 +$ cd /home/etsi/dev/TTF009_Ng112/ttcn/LibIts +rm -fr t3q +cd ttcn && rm -fr Common ``` -- Update your default environment with the content of the script $HOME/dev/STF549_Ng112/scripts/devenv.bash.ubuntu +- Apply patches +```sh +$ cd /home/etsi/dev/TTF009_Ng112 +$ cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ +$ cp ./ttcn/patch_lib_common_titan/*.ttcn ./ttcn/LibCommon/ +$ cp ./ttcn/patch_lib_http/*.ttcn ./ttcn/LibIts/ttcn/Http/ +$ cp ./ttcn/patch_ims_titan/*.ttcn ./ttcn/LibIms/ttcn/ +$ cp ./ttcn/patch_ims_titan/module.mk ./ttcn/LibIms/ +$ cp ./ttcn/patch_sip_titan/*.ttcn ./ttcn/LibSip/ttcn/ +$ cp ./ttcn/patch_sip_titan/module.mk ./ttcn/LibSip/ +$ cp ./ttcn/patch_lib_its/module.mk ./ttcn/LibIts/ +``` + +- Update your default environment with the content of the script $HOME/dev/TTF009_Ng112/scripts/devenv.bash.ubuntu + - Switch to the next clause (Usage) @@ -215,34 +245,37 @@ Procedure using Eclipse TITAN: - Start eclipse using a new workspace, (e.g. with the name workspace_titan) - Download and follow the steps to install Eclipse plugins for TITAN, accessible [here]{https://www.eclipse.org/downloads/download.php?file=/titan/Eclipse_installationguide.pdf} - Open the workspace_titan -- Create a new TITAN project (e.g. STF549_Ng112) - +- Create a new TITAN project (e.g. TTF009_Ng112) +- Import the .tpd file located at the root level of the project Procedure in TITAN command line: - Open several SSH session (PuTTY...) -- Change to the directory ~/dev/STF549_Ng112/src/AtsNg112/objs -- Build the test suite AtsNg112 +- Change to the directory ~/dev/TTF009_Ng112/ +- Build the test suite you want to exectue (e.g. LIS test suite) ```sh -$ ../bin/ng112_generate_makefile.bash +$ cd ~/dev/TTF009_Ng112/ +$ export ATS=AtsLIS +$ make ... ``` -- Edit the file ../etc/AtsNg112.cfg +- Edit the file ../etc/AtsLIS/AtsLIS.cfg - Update the following fields: - system.httpPort.params - Caller.SIPP.params - Ecrf.SIPP.params - - CallTaker.SIPP.params + - CallTalker.SIPP.params - To run the test suitem, execute the following command: ```sh -$ ../bin/run-all.bash +$ cd ~/dev/TTF009_Ng112/scripts +$ ./run-all.bash ... ``` -- The log files are located in ../logs folder. You can edit them using any editor or using the Eclipse TITAN log plugins +- The log files are located in ../logs/AtsLIS folder. You can edit them using any editor or using the Eclipse TITAN log plugins ## How to Report a Bug diff --git a/ccsrc/EncDec/LibEmtel/LibNg112_EncDec.cc b/ccsrc/EncDec/LibEmtel/LibNg112_EncDec.cc new file mode 100644 index 0000000000000000000000000000000000000000..b13692a172270bb06e2aa90ffb8ca117ea1aa71d --- /dev/null +++ b/ccsrc/EncDec/LibEmtel/LibNg112_EncDec.cc @@ -0,0 +1,130 @@ +#include "LibNg112_EncdecDeclarations.hh" + +#include "json_codec.hh" + +#include "loggers.hh" + +namespace LibNg112__EncdecDeclarations { // TODO File to be removed + +/* BITSTRING enc__DequeueRegistrationRequest(const LibNg112__DequeueRegistration::DequeueRegistrationRequest& p) { + loggers::get_instance().log_msg(">>> enc__DequeueRegistrationRequest: ", (const Base_Type&)p); + + OCTETSTRING os; + json_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + + INTEGER dec__DequeueRegistrationRequest(BITSTRING& pdu, LibNg112__DequeueRegistration::DequeueRegistrationRequest& p) { + loggers::get_instance().log_msg(">>> dec__DequeueRegistrationRequest: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + json_codec codec; + codec.decode(os, p); + + return 0; + } + + BITSTRING enc__DequeueRegistrationResponse(const LibNg112__DequeueRegistration::DequeueRegistrationResponse& p) { + loggers::get_instance().log_msg(">>> enc__DequeueRegistrationResponse: ", (const Base_Type&)p); + + OCTETSTRING os; + json_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + + INTEGER dec__DequeueRegistrationResponse(BITSTRING& pdu, LibNg112__DequeueRegistration::DequeueRegistrationResponse& p) { + loggers::get_instance().log_msg(">>> dec__DequeueRegistrationResponse: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + json_codec codec; + codec.decode(os, p); + + return 0; + } + + BITSTRING enc__ServiceStatePayload(const LibNg112__SubscriptionPayloads::ServiceStatePayload& p) { + loggers::get_instance().log_msg(">>> enc__ServiceStatePayload: ", (const Base_Type&)p); + + OCTETSTRING os; + json_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + + INTEGER dec__ServiceStatePayload(BITSTRING& pdu, LibNg112__SubscriptionPayloads::ServiceStatePayload& p) { + loggers::get_instance().log_msg(">>> dec__ServiceStatePayload: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + json_codec codec; + codec.decode(os, p); + + return 0; + } + + BITSTRING enc__ElementStatePayload(const LibNg112__SubscriptionPayloads::ElementStatePayload& p) { + loggers::get_instance().log_msg(">>> enc__ElementStatePayload: ", (const Base_Type&)p); + + OCTETSTRING os; + json_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + + INTEGER dec__ElementStatePayload(BITSTRING& pdu, LibNg112__SubscriptionPayloads::ElementStatePayload& p) { + loggers::get_instance().log_msg(">>> dec__ElementStatePayload: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + json_codec codec; + codec.decode(os, p); + + return 0; + } + + BITSTRING enc__SecurityPosturePayload(const LibNg112__SubscriptionPayloads::SecurityPosturePayload& p) { + loggers::get_instance().log_msg(">>> enc__SecurityPosturePayload: ", (const Base_Type&)p); + + OCTETSTRING os; + json_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + + INTEGER dec__SecurityPosturePayload(BITSTRING& pdu, LibNg112__SubscriptionPayloads::SecurityPosturePayload& p) { + loggers::get_instance().log_msg(">>> dec__QueueStdec__SecurityPosturePayloadtePayload: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + json_codec codec; + codec.decode(os, p); + + return 0; + } + + BITSTRING enc__QueueStatePayload(const LibNg112__SubscriptionPayloads::QueueStatePayload& p) { + loggers::get_instance().log_msg(">>> enc__QueueStatePayload: ", (const Base_Type&)p); + + OCTETSTRING os; + json_codec codec; + codec.encode(p, os); + + return oct2bit(os); + } + + INTEGER dec__QueueStatePayload(BITSTRING& pdu, LibNg112__SubscriptionPayloads::QueueStatePayload& p) { + loggers::get_instance().log_msg(">>> dec__QueueStatePayload: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + json_codec codec; + codec.decode(os, p); + + return 0; + } +*/ +} // End of namespace LibNg112__EncdecDeclarations + diff --git a/ccsrc/EncDec/LibEmtel/module.mk b/ccsrc/EncDec/LibEmtel/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..43f2b71da14e30dd5787c7c62c3ec752d93fe363 --- /dev/null +++ b/ccsrc/EncDec/LibEmtel/module.mk @@ -0,0 +1 @@ +sources := LibNg112_EncDec.cc diff --git a/ccsrc/EncDec/LibSip/LibSip_Encdec.cc b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc index b5ee489daa1a99c55bfb839db4ef8f438c378d0e..add0174651c9c2875983a50eaef8a6fc7a730cbe 100644 --- a/ccsrc/EncDec/LibSip/LibSip_Encdec.cc +++ b/ccsrc/EncDec/LibSip/LibSip_Encdec.cc @@ -8,6 +8,8 @@ #include "sip_codec_bye_request.hh" #include "sip_codec_ack_request.hh" #include "sip_codec_subscribe_request.hh" +#include "sip_codec_notify_request.hh" +#include "sip_codec_info_request.hh" #include "sip_codec_message_request.hh" #include "sip_codec_message_body.hh" #include "sip_codec_response.hh" @@ -126,7 +128,24 @@ namespace LibSip__EncdecDeclarations { BITSTRING fx__enc__CANCEL__Request(const LibSip__SIPTypesAndValues::CANCEL__Request& p) { return BITSTRING(); } BITSTRING fx__enc__PRACK__Request(const LibSip__SIPTypesAndValues::PRACK__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__NOTIFY__Request(const LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__NOTIFY__Request(const LibSip__SIPTypesAndValues::NOTIFY__Request& p) { + loggers::get_instance().log_msg(">>> fx__enc__NOTIFY__Request: ", p); + + float duration; + std::string tag("fx__enc__NOTIFY__Request"); + loggers::get_instance().set_start_time(tag); + + OCTETSTRING os; + sip_codec_notify_request codec; + if (codec.encode(p, os) == -1) { + loggers::get_instance().warning("fx__enc__NOTIFY__Request: -1 result code was returned"); + return int2bit(0, 1); + } + loggers::get_instance().set_stop_time(tag, duration); + + return oct2bit(os); + } + BITSTRING fx__enc__SUBSCRIBE__Request(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { loggers::get_instance().log_msg(">>> fx__enc__SUBSCRIBE__Request: ", p); @@ -166,7 +185,24 @@ namespace LibSip__EncdecDeclarations { BITSTRING fx__enc__PUBLISH__Request(const LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return BITSTRING(); } BITSTRING fx__enc__UPDATE__Request(const LibSip__SIPTypesAndValues::UPDATE__Request& p) { return BITSTRING(); } BITSTRING fx__enc__REFER__Request(const LibSip__SIPTypesAndValues::REFER__Request& p) { return BITSTRING(); } - BITSTRING fx__enc__INFO__Request(const LibSip__SIPTypesAndValues::INFO__Request& p) { return BITSTRING(); } + BITSTRING fx__enc__INFO__Request(const LibSip__SIPTypesAndValues::INFO__Request& p) { + loggers::get_instance().log_msg(">>> fx__enc__INFO__Request: ", p); + + float duration; + std::string tag("fx__enc__INFO__Request"); + loggers::get_instance().set_start_time(tag); + + OCTETSTRING os; + sip_codec_info_request codec; + if (codec.encode(p, os) == -1) { + loggers::get_instance().warning("fx__enc__INFO__Request: -1 result code was returned"); + return int2bit(0, 1); + } + loggers::get_instance().set_stop_time(tag, duration); + + return oct2bit(os); + } + BITSTRING fx__enc__Response(const LibSip__SIPTypesAndValues::Response& p) { loggers::get_instance().log_msg(">>> fx__enc__Response: ", p); @@ -269,7 +305,15 @@ namespace LibSip__EncdecDeclarations { INTEGER fx__dec__CANCEL__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::CANCEL__Request& p) { return INTEGER(0); } INTEGER fx__dec__PRACK__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PRACK__Request& p) { return INTEGER(0); } - INTEGER fx__dec__NOTIFY__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::NOTIFY__Request& p) { return INTEGER(0); } + INTEGER fx__dec__NOTIFY__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::NOTIFY__Request& p) { + loggers::get_instance().log_msg(">>> fx__dec__NOTIFY__Request: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + sip_codec_notify_request codec; + codec.decode(os, p); + + return 0; + } INTEGER fx__dec__SUBSCRIBE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::SUBSCRIBE__Request& p) { loggers::get_instance().log_msg(">>> fx__dec__SUBSCRIBE__Request: ", pdu); @@ -294,7 +338,15 @@ namespace LibSip__EncdecDeclarations { INTEGER fx__dec__PUBLISH__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::PUBLISH__Request& p) { return INTEGER(0); } INTEGER fx__dec__UPDATE__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::UPDATE__Request& p) { return INTEGER(0); } INTEGER fx__dec__REFER__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::REFER__Request& p) { return INTEGER(0); } - INTEGER fx__dec__INFO__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INFO__Request& p) { return INTEGER(0); } + INTEGER fx__dec__INFO__Request(BITSTRING& pdu, LibSip__SIPTypesAndValues::INFO__Request& p) { + loggers::get_instance().log_msg(">>> fx__dec__INFO__Request: ", pdu); + + OCTETSTRING os = bit2oct(pdu); + sip_codec_info_request codec; + codec.decode(os, p); + + return 0; + } INTEGER fx__dec__Response(BITSTRING& pdu, LibSip__SIPTypesAndValues::Response& p) { loggers::get_instance().log_msg(">>> fx__dec__Response: ", pdu); diff --git a/ccsrc/Framework/include/params.hh b/ccsrc/Framework/include/params.hh index 043152be4afcb62b20318af99c4ae8e2de9ac0a1..9f2f6a2f1ee9d49efaa1f12525ec0be187bff418 100644 --- a/ccsrc/Framework/include/params.hh +++ b/ccsrc/Framework/include/params.hh @@ -40,6 +40,8 @@ public: //! \publicsection static const std::string& server; //! HTTP server address (e.g. www.etsi.org) static const std::string& port; //! HTTP server port. Default: 80 static const std::string& use_ssl; //! Set to 1 to use SSL to communicate with the HTTP server. Default: false + static const std::string& mutual_auth; //! Set to 1 to use mutual TLS authentication to communicate with the HTTPS server. Default: false + static const std::string& trusted_ca_list; //! List of trusted CA certificates static const std::string& server_mode; //! Does the test sytem acting as a server. Default: 0 static const std::string& local_port; //! Local listener port. Default: 80 diff --git a/ccsrc/Framework/src/params.cc b/ccsrc/Framework/src/params.cc index 8eee73a844e892801bb179f0c66998202ee6ad6f..7dd51a7d1d99670ea0e855ab3cdcbcddd168f00d 100644 --- a/ccsrc/Framework/src/params.cc +++ b/ccsrc/Framework/src/params.cc @@ -34,6 +34,8 @@ const std::string& params::device_mode = std::string("device_mode"); const std::string& params::server = std::string("server"); const std::string& params::port = std::string("port"); const std::string& params::use_ssl = std::string("use_ssl"); +const std::string& params::mutual_auth = std::string("mutual_auth"); +const std::string& params::trusted_ca_list = std::string("trusted_ca_list"); const std::string& params::server_mode = std::string("server_mode"); const std::string& params::local_port = std::string("local_port"); diff --git a/ccsrc/Ports/LibSip/SipPort.cc b/ccsrc/Ports/LibSip/SipPort.cc index 392f5bb160a66d6018212d52b8e109e52899e3ec..a11a7d229db2286631a6998a96a1390e03f045ff 100644 --- a/ccsrc/Ports/LibSip/SipPort.cc +++ b/ccsrc/Ports/LibSip/SipPort.cc @@ -94,12 +94,26 @@ namespace LibSip__Interface { return; } - if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::INVITE__E) { + if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::REGISTER__E) { + incoming_message(LibSip__SIPTypesAndValues::REGISTER__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::INVITE__E) { incoming_message(LibSip__SIPTypesAndValues::INVITE__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::SUBSCRIBE__E) { + incoming_message(LibSip__SIPTypesAndValues::SUBSCRIBE__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::NOTIFY__E) { incoming_message(LibSip__SIPTypesAndValues::NOTIFY__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::BYE__E) { incoming_message(LibSip__SIPTypesAndValues::BYE__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::INFO__E) { + incoming_message(LibSip__SIPTypesAndValues::INFO__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::OPTIONS__E) { + incoming_message(LibSip__SIPTypesAndValues::OPTIONS__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::MESSAGE__E) { + incoming_message(LibSip__SIPTypesAndValues::MESSAGE__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::CANCEL__E) { + incoming_message(LibSip__SIPTypesAndValues::CANCEL__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); + } else if (p_ind.requestLine().method() == LibSip__SIPTypesAndValues::Method::ACK__E) { + incoming_message(LibSip__SIPTypesAndValues::ACK__Request(p_ind.requestLine(), p_ind.msgHeader(), p_ind.messageBody(), p_ind.payload())); } else { incoming_message(p_ind); } @@ -195,5 +209,49 @@ namespace LibSip__Interface { loggers::get_instance().set_stop_time(_time_key, duration); } + void SipPort::outgoing_send(const LibSip__SIPTypesAndValues::CANCEL__Request& send_par, const Address4SIP *destination_address) { + loggers::get_instance().log_msg(">>> SipPort::outgoing_send: ", send_par); + loggers::get_instance().log(">>> SipPort::outgoing_send: %s", destination_address); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void SipPort::outgoing_send(const LibSip__SIPTypesAndValues::NOTIFY__Request& send_par, const Address4SIP *destination_address) { + loggers::get_instance().log_msg(">>> SipPort::outgoing_send: ", send_par); + loggers::get_instance().log(">>> SipPort::outgoing_send: %s", destination_address); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void SipPort::outgoing_send(const LibSip__SIPTypesAndValues::INFO__Request& send_par, const Address4SIP *destination_address) { + loggers::get_instance().log_msg(">>> SipPort::outgoing_send: ", send_par); + loggers::get_instance().log(">>> SipPort::outgoing_send: %s", destination_address); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + + void SipPort::outgoing_send(const LibSip__SIPTypesAndValues::Response& send_par, const Address4SIP *destination_address) { + loggers::get_instance().log_msg(">>> SipPort::outgoing_send: ", send_par); + loggers::get_instance().log(">>> SipPort::outgoing_send: %s", destination_address); + + float duration; + loggers::get_instance().set_start_time(_time_key); + params params; + static_cast(_layer)->sendMsg(send_par, params); + loggers::get_instance().set_stop_time(_time_key, duration); + } + } diff --git a/ccsrc/Ports/LibSip/SipPort.hh b/ccsrc/Ports/LibSip/SipPort.hh index 2d04c842de02a3b026ae110d6ef511b4aa206a49..cc39af5cfbbc2c3eac1dfb7afd120b82b85624bd 100644 --- a/ccsrc/Ports/LibSip/SipPort.hh +++ b/ccsrc/Ports/LibSip/SipPort.hh @@ -46,17 +46,17 @@ namespace LibSip__Interface { void outgoing_send(const LibSip__SIPTypesAndValues::INVITE__Request& send_par, const Address4SIP *destination_address); void outgoing_send(const LibSip__SIPTypesAndValues::OPTIONS__Request& send_par, const Address4SIP *destination_address); void outgoing_send(const LibSip__SIPTypesAndValues::BYE__Request& send_par, const Address4SIP *destination_address); - virtual void outgoing_send(const LibSip__SIPTypesAndValues::CANCEL__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::CANCEL__Request& send_par, const Address4SIP *destination_address); void outgoing_send(const LibSip__SIPTypesAndValues::ACK__Request& send_par, const Address4SIP *destination_address); virtual void outgoing_send(const LibSip__SIPTypesAndValues::PRACK__Request& send_par, const Address4SIP *destination_address) { }; - virtual void outgoing_send(const LibSip__SIPTypesAndValues::NOTIFY__Request& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::NOTIFY__Request& send_par, const Address4SIP *destination_address); void outgoing_send(const LibSip__SIPTypesAndValues::SUBSCRIBE__Request& send_par, const Address4SIP *destination_address); virtual void outgoing_send(const LibSip__SIPTypesAndValues::PUBLISH__Request& send_par, const Address4SIP *destination_address) { }; virtual void outgoing_send(const LibSip__SIPTypesAndValues::UPDATE__Request& send_par, const Address4SIP *destination_address) { }; virtual void outgoing_send(const LibSip__SIPTypesAndValues::REFER__Request& send_par, const Address4SIP *destination_address) { }; void outgoing_send(const LibSip__SIPTypesAndValues::MESSAGE__Request& send_par, const Address4SIP *destination_address); - virtual void outgoing_send(const LibSip__SIPTypesAndValues::INFO__Request& send_par, const Address4SIP *destination_address) { }; - virtual void outgoing_send(const LibSip__SIPTypesAndValues::Response& send_par, const Address4SIP *destination_address) { }; + virtual void outgoing_send(const LibSip__SIPTypesAndValues::INFO__Request& send_par, const Address4SIP *destination_address); + virtual void outgoing_send(const LibSip__SIPTypesAndValues::Response& send_par, const Address4SIP *destination_address); virtual void outgoing_send(const CHARSTRING& send_par, const Address4SIP *destination_address) { }; }; // End of class SipPort diff --git a/ccsrc/Protocols/Held/held_codec.cc b/ccsrc/Protocols/Held/held_codec.cc index 3ab7d86d24e9b320959c5df554ad61ab8eb29ca2..42841dff0be80a81169627e53ee6c6a3edcafebd 100644 --- a/ccsrc/Protocols/Held/held_codec.cc +++ b/ccsrc/Protocols/Held/held_codec.cc @@ -46,7 +46,6 @@ int held_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCT } // End of 'while' statement // NG112-2021: Apply draft-ietf-geopriv-held-identity-extensions-06: Use of Device Identity in HTTP-Enabled Location Delivery (HELD) draft-ietf-geopriv-held-identity-extensions-06 - // For Gridgears: TITAN issue: Not possible to remove prefix id:device & held:location... // FIXME: Add parameter to enable/disable draft-ietf-geopriv-held-identity-extensions-06 support f.assign("xmlns:id"); t.assign("xmlns"); @@ -112,19 +111,19 @@ int held_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTyp } } - if (it->second.find("locationRequest>") != std::string::npos) { + if ((it->second.find("second.find(":locationRequest") != std::string::npos)) { urn__ietf__params__xml__ns__geopriv__held::LocationRequestType location_request; location_request.decode(urn__ietf__params__xml__ns__geopriv__held::LocationRequest_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.locationRequest() = location_request; - } else if (it->second.find("locationResponse>") != std::string::npos) { + } else if ((it->second.find("second.find(":locationResponse") != std::string::npos)) { urn__ietf__params__xml__ns__geopriv__held::LocationResponseType location_response; location_response.decode(urn__ietf__params__xml__ns__geopriv__held::LocationResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.locationResponse() = location_response; - } else if (it->second.find("presence>") != std::string::npos) { + } else if ((it->second.find("second.find(":presence") != std::string::npos)) { urn__ietf__params__xml__ns__pidf::Presence presence; presence.decode(urn__ietf__params__xml__ns__pidf::Presence_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.presence() = presence; - } else if (it->second.find("error>") != std::string::npos) { + } else if ((it->second.find("second.find(":error") != std::string::npos)) { urn__ietf__params__xml__ns__geopriv__held::Error error; error.decode(urn__ietf__params__xml__ns__geopriv__held::Error_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.errorType() = error; diff --git a/ccsrc/Protocols/Held/held_codec_factory.hh b/ccsrc/Protocols/Held/held_codec_factory.hh index 703fa8f57b0b4270315a3753aa3168300f5db106..fd0a6c3ba49caa7eb6fd9f4b417dba77c42742fd 100644 --- a/ccsrc/Protocols/Held/held_codec_factory.hh +++ b/ccsrc/Protocols/Held/held_codec_factory.hh @@ -1,6 +1,6 @@ /*! * \file held_codec_factory.hh - * \brief Header file for ITS HELD/IP protocol codec factory. + * \brief Header file for HELD/IP protocol codec factory. * \author ETSI STF525 * \copyright ETSI Copyright Notification * No part may be reproduced except as authorized by written permission. diff --git a/ccsrc/Protocols/Http/http_codec.cc b/ccsrc/Protocols/Http/http_codec.cc index 40931af7402385721d9dd4a3cca3bf17dc94e75b..41f5c7070df56a5202da8d91e14f32d57c114ddc 100644 --- a/ccsrc/Protocols/Http/http_codec.cc +++ b/ccsrc/Protocols/Http/http_codec.cc @@ -88,7 +88,24 @@ int http_codec::decode (const OCTETSTRING& data, LibItsHttp__TypesAndValues::Htt } else { response.body() = OPTIONAL(body); } - msg.response() = response; + // Add lower layers parameters + loggers::get_instance().log("http_codec::decode: Add lower layers parameters"); + params->log(); + params::const_iterator it = params->find(params::use_ssl); + if (it != params->cend()) { + loggers::get_instance().log("http_codec::receive_data: tls=%s", it->second.c_str()); + response.tls() = (it->second.compare("1") == 0) ? true : false; + } else { + response.tls().set_to_omit(); + } + it = params->find(params::mutual_auth); + if (it != params->cend()) { + loggers::get_instance().log("http_codec::receive_data: mutual_tls=%s", it->second.c_str()); + response.mutual__tls() = (it->second.compare("1") == 0) ? true : false; + } else { + response.mutual__tls().set_to_omit(); + } + msg.response() = response; } else { // HTTP request LibItsHttp__TypesAndValues::Request request; std::regex rgx ("\\s*(\\w+)\\s+(.+)\\s+HTTP/(\\d)\\.(\\d)"); @@ -242,18 +259,19 @@ int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_r for (int i = 0; i < headers.size_of(); i++) { const LibItsHttp__TypesAndValues::Header& header = headers[i]; loggers::get_instance().log_msg("http_codec::encode_response: Processing header ", header.header__name()); - p_encoding_buffer.put_cs(header.header__name()); - p_encoding_buffer.put_cs(": "); if (std::string(static_cast(header.header__name())).compare("Content-Length") == 0) { + loggers::get_instance().log("http_codec::encode_response: Skip it"); continue; } else { + p_encoding_buffer.put_cs(header.header__name()); + p_encoding_buffer.put_cs(": "); const OPTIONAL& o = header.header__value(); if (o.ispresent()) { const LibItsHttp__TypesAndValues::charstring__list& v = dynamic_cast &>(o); if (v.size_of() > 0) { loggers::get_instance().log_msg("http_codec::encode_response: Processing value ", v[0]); if (std::string(static_cast(header.header__name())).compare("Content-Type") == 0) { // Store it for HTTP body payload encoding - int j = 1; + int j = 0; while (j < v.size_of()) { content_type += v[j++]; } // End of 'while' statement @@ -285,16 +303,18 @@ int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_r _ec.length = os.lengthof(); _ec.is_content_length_present = 0x01; } - loggers::get_instance().log("http_codec::encode_request: length=%d", _ec.length); + loggers::get_instance().log("http_codec::encode_response: length=%d", _ec.length); } else { - loggers::get_instance().log("http_codec::encode_request: HTTP body field not present"); + loggers::get_instance().log("http_codec::encode_response: HTTP body field not present"); _ec.length = 0; _ec.is_content_length_present = 0x00; } // Encode Content-Length header + p_encoding_buffer.put_cs("Content-Length: "); if (_ec.length != 0) { - p_encoding_buffer.put_cs(int2str(_ec.length + 2/*Stand for the last CRLF*/)); + loggers::get_instance().log("http_codec::encode_response: Content-Length: %s", static_cast(int2str(_ec.length + 2/*Stand for the last CRLF*/))); + p_encoding_buffer.put_cs(static_cast(int2str(_ec.length))); _ec.is_content_length_present = 0x01; } else { p_encoding_buffer.put_cs("0"); @@ -303,12 +323,14 @@ int http_codec::encode_response (const LibItsHttp__TypesAndValues::Response& p_r loggers::get_instance().log("http_codec::encode_response: Content-Length: %d - %x", _ec.length, _ec.is_content_length_present); p_encoding_buffer.put_cs("\r\n"); + // Add message body p_encoding_buffer.put_cs("\r\n"); - if (_ec.length != 0) { + if (_ec.is_content_length_present == 0x01) { + loggers::get_instance().log_msg("http_codec::encode_response: Add body ", os); p_encoding_buffer.put_os(os); - p_encoding_buffer.put_cs("\r\n"); + // p_encoding_buffer.put_cs("\r\n"); } - + return 0; } @@ -423,6 +445,27 @@ int http_codec::encode_body(const LibItsHttp__MessageBodyTypes::HttpMessageBody& p_encoding_buffer = OCTETSTRING(p_message_body.html__body().lengthof(), (unsigned char*)static_cast(p_message_body.html__body())); } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_text__body)) { p_encoding_buffer = OCTETSTRING(p_message_body.text__body().lengthof(), (unsigned char*)static_cast(p_message_body.text__body())); + } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_json__body)) { + const LibItsHttp__JsonMessageBodyTypes::JsonBody& json_body = p_message_body.json__body(); + if (json_body.ischosen(LibItsHttp__JsonMessageBodyTypes::JsonBody::ALT_raw)) { + p_encoding_buffer = OCTETSTRING(json_body.raw().lengthof(), (unsigned char*)static_cast(json_body.raw().get_stringRepr_for_pattern())); + } else { + std::map > >::const_iterator it; + bool processed = false; + loggers::get_instance().log("http_codec::encode_body: Content-Type:'%s'", p_content_type.c_str()); + if (p_content_type.find("json") != std::string::npos) { + it = _codecs.find("json"); // TODO Use params + if (it != _codecs.cend()) { + loggers::get_instance().log("http_codec::encode_body: Call 'json_codec'"); + _codecs["json"]->encode((Record_Type&)json_body, p_encoding_buffer); // TODO Use params + processed = true; + } + } // TODO Add new HTTP message codec here + if (!processed) { + loggers::get_instance().warning("http_codec::encode_body: Unsupported HTTP codec, use raw field as default"); + p_encoding_buffer = OCTETSTRING(0, nullptr); + } + } } else if (p_message_body.ischosen(LibItsHttp__MessageBodyTypes::HttpMessageBody::ALT_xml__body)) { const LibItsHttp__XmlMessageBodyTypes::XmlBody& xml_body = p_message_body.xml__body(); if (xml_body.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_raw)) { @@ -472,7 +515,7 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod if (decoding_buffer.get_len() - decoding_buffer.get_pos() <= 0) { return -1; } - /* TODO Uncommentif (p_content_type.empty()) { + /* TODO Uncomment if (p_content_type.empty()) { loggers::get_instance().warning("http_codec::encode_body: Failed to select a codec for HTTP body payload"); return -1; }*/ @@ -646,6 +689,23 @@ int http_codec::decode_body(TTCN_Buffer& decoding_buffer, LibItsHttp__MessageBod loggers::get_instance().log("http_codec::decode_body: Find html message"); LibItsHttp__MessageBodyTypes::HtmlBody html_body; message_body.html__body() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } else if (p_content_type.find("json") != std::string::npos) { + loggers::get_instance().log("http_codec::decode_body: Find json message"); + LibItsHttp__JsonMessageBodyTypes::JsonBody json_body; + if (_codecs["json"].get() != nullptr) { + loggers::get_instance().log("http_codec::decode_body: Call 'json_codec'"); + if (_codecs["json"]->decode(body, (Record_Type&)json_body, &p) == -1) { + loggers::get_instance().warning("http_codec::decode_body: Failed to decode JSON message"); + json_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } else { + loggers::get_instance().log_msg("http_codec::decode_body: Decoded message:", json_body); + message_body.json__body() = json_body; + } + } else { + loggers::get_instance().warning("http_codec::decode_body: No codec for JSON"); + json_body.raw() = CHARSTRING(body.lengthof(), (char*)static_cast(body)); + } + message_body.json__body() = json_body; } else { loggers::get_instance().log("http_codec::decode_body: Use textBdy as default"); LibItsHttp__MessageBodyTypes::TextBody text_body; diff --git a/ccsrc/Protocols/Http/http_layer.cc b/ccsrc/Protocols/Http/http_layer.cc index b154557a432c9e757082d7d529c53cc0d8ed8bc0..01407d23bd0b079d4f36bc5c96654a2fac4230aa 100644 --- a/ccsrc/Protocols/Http/http_layer.cc +++ b/ccsrc/Protocols/Http/http_layer.cc @@ -86,7 +86,7 @@ void http_layer::receive_data(OCTETSTRING& data, params& params) // Decode HTTP message LibItsHttp__TypesAndValues::HttpMessage http_message; - if (_codec.decode(data, http_message) == -1) { + if (_codec.decode(data, http_message, ¶ms) == -1) { loggers::get_instance().warning("http_layer::receive_data: Failed to decode data"); return; } diff --git a/ccsrc/Protocols/Json/json_codec.cc b/ccsrc/Protocols/Json/json_codec.cc new file mode 100644 index 0000000000000000000000000000000000000000..01c2fb38d707e362f7019001ed8eaf3707b159b6 --- /dev/null +++ b/ccsrc/Protocols/Json/json_codec.cc @@ -0,0 +1,86 @@ +#include +#include +#include + +#include "json_codec_factory.hh" + +#include "loggers.hh" + +#include "LibItsHttp_JsonMessageBodyTypes.hh" + +int json_codec::encode (const LibItsHttp__JsonMessageBodyTypes::JsonBody& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> json_codec::encode: ", (const Base_Type&)msg); + + TTCN_EncDec::clear_error(); + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_Buffer encoding_buffer; + + if (msg.ischosen(LibItsHttp__JsonMessageBodyTypes::JsonBody::ALT_dequeueRegistrationRequest)) { + const LibNg112__DequeueRegistration::DequeueRegistrationRequest& dequeue_registration_request = msg.dequeueRegistrationRequest(); + dequeue_registration_request.encode(LibNg112__DequeueRegistration::DequeueRegistrationRequest_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + } else if (msg.ischosen(LibItsHttp__JsonMessageBodyTypes::JsonBody::ALT_dequeueRegistrationResponse)) { + const LibNg112__DequeueRegistration::DequeueRegistrationResponse& dequeue_registration_response = msg.dequeueRegistrationResponse(); + dequeue_registration_response.encode(LibNg112__DequeueRegistration::DequeueRegistrationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_JSON); + data = OCTETSTRING(encoding_buffer.get_len(), encoding_buffer.get_data()); + } else { + loggers::get_instance().error("json_codec::encode: Not supported"); + } + + loggers::get_instance().log("<<< json_codec::encode"); + return 0; +} + +int json_codec::decode (const OCTETSTRING& p_data, LibItsHttp__JsonMessageBodyTypes::JsonBody& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> json_codec::decode: p_data=", p_data); + + // Sanity checks + params::const_iterator it; + if (p_params == nullptr) { + loggers::get_instance().warning("json_codec::decode: Failed to access p_params (null pointer)"); + return -1; + } else { + it = p_params->find("decode_str"); + if (it == p_params->cend()) { + loggers::get_instance().warning("json_codec::decode: Failed to access p_params item (decode_str)"); + return -1; + } + } + + // Remove data structure name (if present) ... + std::string str; + if ((it->second[0] != '[') && (it->second[0] != '{')) { + int idx_begin = it->second.find(":"); + int idx_end = it->second.rfind("}") - 1; // Remove the last '}' + str = it->second.substr(idx_begin + 1, idx_end - idx_begin); + } else { + str = it->second; + } + // ..and create the decoding buffer + TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT); + TTCN_EncDec::clear_error(); + loggers::get_instance().log("json_codec::decode: decoding_buffer='%c' / '%s'", str[0], str.c_str()); + TTCN_Buffer decoding_buffer(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); + + if (it->second.find("\"DequeueRegistrationQueueUri\"") != std::string::npos) { + LibNg112__DequeueRegistration::DequeueRegistrationRequest dequeue_registration_request; + TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); + dequeue_registration_request.decode(LibNg112__DequeueRegistration::DequeueRegistrationRequest_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON); + msg.dequeueRegistrationRequest() = dequeue_registration_request; + } else if (it->second.find("\"DequeueRegistrationStatusCode\"") != std::string::npos) { + LibNg112__DequeueRegistration::DequeueRegistrationResponse dequeue_registration_response; + TTCN_Buffer decoding_buffer_(OCTETSTRING(str.length(), (const unsigned char*)str.c_str())); + dequeue_registration_response.decode(LibNg112__DequeueRegistration::DequeueRegistrationResponse_descr_, decoding_buffer_, TTCN_EncDec::CT_JSON); + msg.dequeueRegistrationResponse() = dequeue_registration_response; + } else { + loggers::get_instance().warning("json_codec::decode: Unsupported variant"); + return -1; + } + + loggers::get_instance().log_msg("<<< json_codec::decode: ", (const Base_Type&)msg); + return 0; +} + +json_codec_factory json_codec_factory::_f; diff --git a/ccsrc/Protocols/Json/json_codec.hh b/ccsrc/Protocols/Json/json_codec.hh new file mode 100644 index 0000000000000000000000000000000000000000..01073c52f5f82eb59d901c90f9f2699f5d6d17fa --- /dev/null +++ b/ccsrc/Protocols/Json/json_codec.hh @@ -0,0 +1,23 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibItsHttp__JsonMessageBodyTypes { + class JsonBody; +} + +class json_codec: public codec +{ +public: + explicit json_codec() : codec() { }; + virtual ~json_codec() { }; + + virtual int encode (const LibItsHttp__JsonMessageBodyTypes::JsonBody&, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& p_data, LibItsHttp__JsonMessageBodyTypes::JsonBody&, params* p_params = NULL); + +}; // End of class json_codec diff --git a/ccsrc/Protocols/Json/json_codec_factory.hh b/ccsrc/Protocols/Json/json_codec_factory.hh new file mode 100644 index 0000000000000000000000000000000000000000..b3d2084a09a361bb6df2ddb44821457cc20827a0 --- /dev/null +++ b/ccsrc/Protocols/Json/json_codec_factory.hh @@ -0,0 +1,46 @@ +/*! + * \file json_codec_factory.hh + * \brief Header file for LOST/IP protocol codec factory. + * \author ETSI STF525 + * \copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * \version 0.1 + */ +#pragma once + +#include "codec_stack_builder.hh" + +#include "json_codec.hh" + +class Record_Type; //! TITAN forward declaration + +/*! + * \class json_codec_factory + * \brief This class provides a factory class to create an json_codec class instance + */ +class json_codec_factory: public codec_factory { + static json_codec_factory _f; //! Reference to the unique instance of this class +public: //! \publicsection + /*! + * \brief Default constructor + * Create a new instance of the json_codec_factory class + * \remark The LOST/IP codec identifier is LOST + */ + json_codec_factory() { + // register factory + codec_stack_builder::register_codec_factory("json_codec", this); + }; + /*! + * \fn codec* create_codec(const std::string & type, const std::string & param); + * \brief Create the codecs stack based on the provided codecs stack description + * \param[in] p_type The provided codecs stack description + * \param[in] p_params Optional parameters + * \return 0 on success, -1 otherwise + * \inline + */ + inline virtual codec* create_codec() { + return (codec*)new json_codec(); + }; +}; // End of class json_codec_factory diff --git a/ccsrc/Protocols/Json/module.mk b/ccsrc/Protocols/Json/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..d5376a47206e3eef78c4cfec11f9708d3bbac2f1 --- /dev/null +++ b/ccsrc/Protocols/Json/module.mk @@ -0,0 +1,3 @@ +sources := json_codec.cc +includes := . + diff --git a/ccsrc/Protocols/Lost/lost_codec.cc b/ccsrc/Protocols/Lost/lost_codec.cc index bf4f5aae04b5f632aab2458adbab2a7d7fb2822d..e3d1e8aae55ff97ff404d5bf79c77fd785ebe50c 100644 --- a/ccsrc/Protocols/Lost/lost_codec.cc +++ b/ccsrc/Protocols/Lost/lost_codec.cc @@ -44,6 +44,10 @@ int lost_codec::encode (const LibItsHttp__XmlMessageBodyTypes::XmlBody& msg, OCT const urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse& list_services_by_location_response = msg.listServicesByLocationResponse(); loggers::get_instance().log_msg("lost_codec::encode: Process ListServicesByLocationResponse", (const Base_Type&)list_services_by_location_response); list_services_by_location_response.encode(urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + } else if (msg.ischosen(LibItsHttp__XmlMessageBodyTypes::XmlBody::ALT_redirect)) { + const urn__ietf__params__xml__ns__lost1::Redirect& redirect = msg.redirect(); + loggers::get_instance().log_msg("lost_codec::encode: Process Redirect", (const Base_Type&)redirect); + redirect.encode(urn__ietf__params__xml__ns__lost1::Redirect_descr_, encoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); } else { loggers::get_instance().warning("lost_codec::encode: Unsupported variant"); return -1; @@ -94,26 +98,31 @@ int lost_codec::decode (const OCTETSTRING& p_data, LibItsHttp__XmlMessageBodyTyp TTCN_EncDec::clear_error(); TTCN_Buffer decoding_buffer(p_data); - if (it->second.find("second.find("second.find(":findServiceResponse") != std::string::npos)) { loggers::get_instance().warning("lost_codec::decode: Process FindServiceResponse"); urn__ietf__params__xml__ns__lost1::FindServiceResponse find_service_response; find_service_response.decode(urn__ietf__params__xml__ns__lost1::FindServiceResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.findServiceResponse() = find_service_response; - } else if (it->second.find("second.find("second.find(":listServicesResponse") != std::string::npos)) { loggers::get_instance().warning("lost_codec::decode: Process ListServicesResponse"); urn__ietf__params__xml__ns__lost1::ListServicesResponse list_services_response; list_services_response.decode(urn__ietf__params__xml__ns__lost1::ListServicesResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.listServicesResponse() = list_services_response; - } else if (it->second.find("second.find("second.find(":listServicesByLocationResponse") != std::string::npos)) { loggers::get_instance().warning("lost_codec::decode: Process ListServicesByLocationResponse"); urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse list_services_by_location_response; list_services_by_location_response.decode(urn__ietf__params__xml__ns__lost1::ListServicesByLocationResponse_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.listServicesByLocationResponse() = list_services_by_location_response; - } else if (it->second.find("second.find("second.find(":redirect") != std::string::npos)) { + loggers::get_instance().warning("lost_codec::decode: Process Redirect"); + urn__ietf__params__xml__ns__lost1::Redirect redirect; + redirect.decode(urn__ietf__params__xml__ns__lost1::Redirect_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); + msg.redirect() = redirect; + } else if ((it->second.find("second.find(":findService") != std::string::npos)) { urn__ietf__params__xml__ns__lost1::FindService find_service; find_service.decode(urn__ietf__params__xml__ns__lost1::FindService_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.findServiceRequest() = find_service; - } else if (it->second.find("second.find("second.find(":error") != std::string::npos)) { urn__ietf__params__xml__ns__lost1::ExceptionContainer exception; exception.decode(urn__ietf__params__xml__ns__lost1::Errors_descr_, decoding_buffer, TTCN_EncDec::CT_XER, XER_EXTENDED); msg.exceptionContainer() = exception; diff --git a/ccsrc/Protocols/Sip/module.mk b/ccsrc/Protocols/Sip/module.mk index 556e16ae77bd8c84bc285c964682a6ce3626f3a7..84c4b97a4c8a58740f5308c8c557b58543521073 100644 --- a/ccsrc/Protocols/Sip/module.mk +++ b/ccsrc/Protocols/Sip/module.mk @@ -1,14 +1,17 @@ sources := \ - sip_codec_ack_request.cc \ - sip_codec_headers.cc \ - sip_codec_message_body.cc \ - sip_codec_options_request.cc \ - sip_codec_request.cc \ - sip_codec_subscribe_request.cc \ - sip_codec_bye_request.cc \ - sip_codec_invite_request.cc \ - sip_codec_message_request.cc \ - sip_codec_register_request.cc \ - sip_codec_response.cc sip_layer.cc + sip_codec_ack_request.cc \ + sip_codec_headers.cc \ + sip_codec_message_body.cc \ + sip_codec_options_request.cc \ + sip_codec_request.cc \ + sip_codec_subscribe_request.cc \ + sip_codec_bye_request.cc \ + sip_codec_invite_request.cc \ + sip_codec_message_request.cc \ + sip_codec_register_request.cc \ + sip_codec_cancel_request.cc \ + sip_codec_notify_request.cc \ + sip_codec_info_request.cc \ + sip_codec_response.cc \ + sip_layer.cc includes := . - diff --git a/ccsrc/Protocols/Sip/sip_codec_cancel_request.cc b/ccsrc/Protocols/Sip/sip_codec_cancel_request.cc new file mode 100644 index 0000000000000000000000000000000000000000..3a6000222eaee265c2a5f0f08bd84f3cf7c672c8 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_cancel_request.cc @@ -0,0 +1,46 @@ +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_codec_cancel_request.hh" +#include "loggers.hh" + +int sip_codec_cancel_request::encode (const LibSip__SIPTypesAndValues::CANCEL__Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_cancel_request::encode: ", (const Base_Type&)msg); + + if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { + loggers::get_instance().warning("sip_codec_cancel_request::encode: Failed to encode message"); + return -1; + } + + loggers::get_instance().log_msg("<<< sip_codec_cancel_request::encode: data=", data); + return 0; +} + +int sip_codec_cancel_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::CANCEL__Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_cancel_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_cancel_request::decode: Wrong parameters"); + return -1; + } + + // LibSip__SIPTypesAndValues::Request request; + if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { + // if (_codec.decode(data, request) == -1) { + loggers::get_instance().warning("sip_codec_cancel_request::decode: Failed to decode message"); + return -1; + } + // msg.requestLine() = request.requestLine(); + // msg.msgHeader() = request.msgHeader(); + // msg.messageBody() = request.messageBody(); + // msg.payload() = request.payload(); + + if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::CANCEL__E) { + loggers::get_instance().warning("sip_codec_cancel_request::decode: Wrong SIP Method, expected CANCEL"); + return -1; + } + + return 0; +} diff --git a/ccsrc/Protocols/Sip/sip_codec_cancel_request.hh b/ccsrc/Protocols/Sip/sip_codec_cancel_request.hh new file mode 100644 index 0000000000000000000000000000000000000000..b011e03b398b7275b05ed4a64437c37b3c368ac5 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_cancel_request.hh @@ -0,0 +1,27 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "sip_codec_request.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class CANCEL__Request; +} + +class sip_codec_cancel_request: public codec < +LibSip__SIPTypesAndValues::CANCEL__Request, +LibSip__SIPTypesAndValues::CANCEL__Request> +{ + sip_codec_request _codec; +public: + explicit sip_codec_cancel_request() : codec(), _codec() { }; + virtual ~sip_codec_cancel_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::CANCEL__Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::CANCEL__Request& msg, params* p_params = NULL); +}; // End of class sip_codec_cancel_request diff --git a/ccsrc/Protocols/Sip/sip_codec_headers.cc b/ccsrc/Protocols/Sip/sip_codec_headers.cc index c556f9619e1c6f69a0f49e237e753d39ce286f8b..4b991167b217ab1d1eab597978acbfd435e5e171 100644 --- a/ccsrc/Protocols/Sip/sip_codec_headers.cc +++ b/ccsrc/Protocols/Sip/sip_codec_headers.cc @@ -1,3 +1,5 @@ +#include + #include "LibSip_SIPTypesAndValues.hh" #include "LibSip_Common.hh" @@ -113,6 +115,14 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe osip_free(hvalue); } + // CallInfo + if (p_msg_header.callInfo().is_present()) { + if (encode_call_info_header(p_msg_header.callInfo(), &p_sip_message) == -1) { + loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode CallInfo header"); + return -1; + } + } + // CallId if (p_msg_header.callId().is_present()) { osip_call_id_t* call_id_header; @@ -181,6 +191,22 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe ::osip_cseq_free(cseq_header); osip_free(hvalue); + // Event + if (p_msg_header.event().is_present()) { + if (encode_event_header(p_msg_header.event(), &p_sip_message) == -1) { + loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Event header"); + return -1; + } + } + + // Expires + if (p_msg_header.expires().is_present()) { + if (encode_expires_header(p_msg_header.expires(), &p_sip_message) == -1) { + loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode Expires header"); + return -1; + } + } + // Geolocation if (p_msg_header.geolocation().is_present()) { if (encode_geolocation_header(p_msg_header.geolocation(), &p_sip_message) == -1) { @@ -275,13 +301,16 @@ int sip_codec_headers::encode_headers(const LibSip__SIPTypesAndValues::MessageHe loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to encode WwwAuthenticate header"); return -1; } - loggers::get_instance().log("3333"); + //std::string s("Digest realm=\"testrealm@host.com\", nonce=\"dcd98b7102dd2f0e8b11d0f600bfb0c093\", opaque=\"5ccc069c403ebaf9f0171e9517f40e41\""); ::osip_www_authenticate_to_str(www_authenticate_header, &hvalue); loggers::get_instance().log("sip_codec_headers::encode_headers: WwwAuthenticate:%s", hvalue); if (::osip_message_set_www_authenticate(p_sip_message, hvalue) != OSIP_SUCCESS) { loggers::get_instance().warning("sip_codec_headers::encode_headers: Failed to set WwwAuthenticate header in sip_message"); return -1; } + //int result = ::osip_message_set_www_authenticate(p_sip_message, s.c_str());//hvalue); + //loggers::get_instance().log("sip_codec_headers::encode_headers: osip_message_set_www_authenticate return code:%d", result); + osip_free(hvalue); } // TODO continue @@ -407,7 +436,13 @@ void sip_codec_headers::decode_headers(const osip_message_t* p_sip_message, LibS p_headers.callId().set_to_omit(); } - p_headers.callInfo().set_to_omit(); + LibSip__SIPTypesAndValues::CallInfo call_info_header; + decode_call_info_header(p_sip_message, call_info_header); + if (call_info_header.is_value()) { + p_headers.callInfo() = call_info_header; + } else { + p_headers.callInfo().set_to_omit(); + } LibSip__SIPTypesAndValues::Contact contact_header; decode_contact_header(p_sip_message, contact_header); @@ -471,6 +506,22 @@ void sip_codec_headers::decode_headers(const osip_message_t* p_sip_message, LibS p_headers.infoPackage().set_to_omit(); p_headers.inReplyTo().set_to_omit(); + LibSip__SIPTypesAndValues::Event event_header; + decode_event_header(p_sip_message, event_header); + if (event_header.is_value()) { + p_headers.event() = event_header; + } else { + p_headers.event().set_to_omit(); + } + + LibSip__SIPTypesAndValues::Expires expires_header; + decode_expires_header(p_sip_message, expires_header); + if (expires_header.is_value()) { + p_headers.expires() = expires_header; + } else { + p_headers.expires().set_to_omit(); + } + LibSip__SIPTypesAndValues::MaxForwards max_forwards_header; decode_max_forwards_header(p_sip_message, max_forwards_header); if (max_forwards_header.is_value()) { @@ -947,6 +998,43 @@ int sip_codec_headers::encode_call_id_header(const LibSip__SIPTypesAndValues::Ca return 0; } // End of method encode_call_id_header +int sip_codec_headers::encode_call_info_header(const OPTIONAL& p_call_info, osip_message_t** p_sip_message) { + loggers::get_instance().log_msg(">>> sip_codec_headers::encode_call_info_header", p_call_info); + + const LibSip__SIPTypesAndValues::CallInfo& call_info = static_cast(*p_call_info.get_opt_value()); + + if (!call_info.callInfoBody().is_present()) { + return 0; + } + + const LibSip__SIPTypesAndValues::CallInfoBody__List& c = static_cast(*call_info.callInfoBody().get_opt_value()); + if (c.lengthof() == 0) { + return 0; + } + + int pos = 0; + std::string value; + do { + const LibSip__SIPTypesAndValues::CallInfoBody& call_info_body = c[pos++]; + loggers::get_instance().log_msg("sip_codec_headers::encode_call_info_header: Processing ", call_info_body); + osip_call_info_t *header; + ::osip_call_info_init(&header); + ::osip_call_info_set_uri(header, (char*)static_cast(call_info_body.url())); + if (call_info_body.infoParams().is_present()) { + encode_semi_colon_params(static_cast(call_info_body.infoParams()), &(header)->gen_params); + } + char *buffer; + ::osip_call_info_to_str(header, &buffer); + value += buffer; + osip_free(buffer); + osip_free(header); + loggers::get_instance().log("sip_codec_headers::encode_call_info_header: value=%s", value.c_str()); + } while (pos < c.lengthof()); + ::osip_message_set_header((osip_message_t *)*p_sip_message, (const char *)"callInfo", value.c_str()); + loggers::get_instance().log("<<< sip_codec_headers::encode_call_info_header"); + return 0; +} // End of method encode_call_info_header + int sip_codec_headers::encode_contact_header(const LibSip__SIPTypesAndValues::Contact& p_contact, osip_contact_t** p_contact_header) { loggers::get_instance().log(">>> sip_codec_headers::encode_contact_header"); @@ -1056,6 +1144,62 @@ int sip_codec_headers::encode_c_seq_header(const LibSip__SIPTypesAndValues::CSeq return 0; } // End of method encode_c_seq_header +int sip_codec_headers::encode_event_header(const OPTIONAL& p_event, osip_message_t** p_sip_message) { + loggers::get_instance().log(">>> sip_codec_headers::encode_event_header"); + + if (!p_event.is_present()) { + return 0; + } + const LibSip__SIPTypesAndValues::Event& event = static_cast(*p_event.get_opt_value()); + + // eventType + std::string value(static_cast(event.eventType())); + loggers::get_instance().log("sip_codec_headers::encode_event_header: eventType: %s", value.c_str()); + + // eventParam + const OPTIONAL& event_param = event.eventParams(); // TODO Create a method to fill an std::string with SemicolonParam__List + if (event_param.is_present()) { + const LibSip__Common::SemicolonParam__List& l = static_cast(*event_param.get_opt_value()); + int i = 0; + do { + value += ";"; + const LibSip__Common::GenericParam& g = l[i]; + value += static_cast(g.id()); + if (g.paramValue().is_present()) { + value += "="; + const LibSip__Common::GenValue& v = static_cast(*g.paramValue().get_opt_value()); + if (v.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { + value += static_cast(v.tokenOrHost()); + } else { + value += static_cast(v.quotedString()); + } + } + i += 1; + } while (i < l.lengthof()); + } + loggers::get_instance().log("sip_codec_headers::encode_event_header: %s", value.c_str()); + ::osip_message_set_header((osip_message_t *)*p_sip_message,(const char *)"Event", value.c_str()); + + return 0; +} + +int sip_codec_headers::encode_expires_header(const OPTIONAL& p_expires, osip_message_t** p_sip_message) { + loggers::get_instance().log(">>> sip_codec_headers::encode_expires_header"); + + if (!p_expires.is_present()) { + return 0; + } + const LibSip__SIPTypesAndValues::Expires& expires = static_cast(*p_expires.get_opt_value()); + + // deltaSec + std::string value(static_cast(expires.deltaSec())); + + loggers::get_instance().log("sip_codec_headers::encode_expires_header: %s", value.c_str()); + ::osip_message_set_header((osip_message_t *)*p_sip_message,(const char *)"Expires", value.c_str()); + + return 0; +} + int sip_codec_headers::encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t** p_from_header) { loggers::get_instance().log(">>> sip_codec_headers::encode_from_header"); @@ -1566,60 +1710,68 @@ int sip_codec_headers::encode_www_authenticate_header(const LibSip__SIPTypesAndV ::osip_www_authenticate_init(p_www_authenticate_header); const LibSip__SIPTypesAndValues::Challenge& c = p_www_authenticate.challenge(); if (c.ischosen(LibSip__SIPTypesAndValues::Challenge::ALT_digestCln)) { + osip_www_authenticate_set_auth_type(*p_www_authenticate_header, (char*)::strdup("Digest")); const LibSip__Common::CommaParam__List& l = c.digestCln(); for (int i = 0; i < l.lengthof(); i++) { const LibSip__Common::GenericParam& p = l[i]; - if (std::string(static_cast(p.id())).compare("Digest") == 0) { - osip_www_authenticate_set_auth_type(*p_www_authenticate_header, (char*)static_cast(p.id())); - } else if (std::string(static_cast(p.id())).compare("realm") == 0) { + if (std::string(static_cast(p.id())).compare("realm") == 0) { if (p.paramValue().is_present()) { const LibSip__Common::GenValue& g = static_cast(*p.paramValue().get_opt_value()); if (g.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { - ::osip_www_authenticate_set_realm(*p_www_authenticate_header, (char*)static_cast(g.tokenOrHost())); + ::osip_www_authenticate_set_realm(*p_www_authenticate_header, (char*)::strdup(static_cast(g.tokenOrHost()))); } else { - ::osip_www_authenticate_set_realm(*p_www_authenticate_header, (char*)static_cast(g.quotedString())); + std::stringstream ss; + ss << std::quoted(static_cast(g.quotedString())); + ::osip_www_authenticate_set_realm(*p_www_authenticate_header, (char*)::strdup(ss.str().c_str())); } } } else if (std::string(static_cast(p.id())).compare("nonce") == 0) { if (p.paramValue().is_present()) { const LibSip__Common::GenValue& g = static_cast(*p.paramValue().get_opt_value()); if (g.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { - ::osip_www_authenticate_set_realm(*p_www_authenticate_header, (char*)static_cast(g.tokenOrHost())); + ::osip_www_authenticate_set_nonce(*p_www_authenticate_header, (char*)::strdup(static_cast(g.tokenOrHost()))); } else { - ::osip_www_authenticate_set_realm(*p_www_authenticate_header, (char*)static_cast(g.quotedString())); + std::stringstream ss; + ss << std::quoted(static_cast(g.quotedString())); + ::osip_www_authenticate_set_nonce(*p_www_authenticate_header, (char*)::strdup(ss.str().c_str())); } } } else if (std::string(static_cast(p.id())).compare("stale") == 0) { if (p.paramValue().is_present()) { const LibSip__Common::GenValue& g = static_cast(*p.paramValue().get_opt_value()); if (g.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { - ::osip_www_authenticate_set_stale(*p_www_authenticate_header, (char*)static_cast(g.tokenOrHost())); + ::osip_www_authenticate_set_stale(*p_www_authenticate_header, (char*)::strdup(static_cast(g.tokenOrHost()))); } else { - ::osip_www_authenticate_set_stale(*p_www_authenticate_header, (char*)static_cast(g.quotedString())); + std::stringstream ss; + ss << std::quoted(static_cast(g.quotedString())); + ::osip_www_authenticate_set_stale(*p_www_authenticate_header, (char*)::strdup(ss.str().c_str())); } } } else if (std::string(static_cast(p.id())).compare("algorithm") == 0) { if (p.paramValue().is_present()) { const LibSip__Common::GenValue& g = static_cast(*p.paramValue().get_opt_value()); + std::stringstream ss; if (g.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { - ::osip_www_authenticate_set_algorithm(*p_www_authenticate_header, (char*)static_cast(g.tokenOrHost())); + ss << std::quoted(static_cast(g.tokenOrHost())); } else { - ::osip_www_authenticate_set_algorithm(*p_www_authenticate_header, (char*)static_cast(g.quotedString())); + ss << std::quoted(static_cast(g.quotedString())); } + ::osip_www_authenticate_set_algorithm(*p_www_authenticate_header, (char*)::strdup(ss.str().c_str())); } } else if (std::string(static_cast(p.id())).compare("qop") == 0) { if (p.paramValue().is_present()) { const LibSip__Common::GenValue& g = static_cast(*p.paramValue().get_opt_value()); + std::stringstream ss; if (g.ischosen(LibSip__Common::GenValue::ALT_tokenOrHost)) { - ::osip_www_authenticate_set_qop_options(*p_www_authenticate_header, (char*)static_cast(g.tokenOrHost())); + ss << std::quoted(static_cast(g.tokenOrHost())); } else { - ::osip_www_authenticate_set_qop_options(*p_www_authenticate_header, (char*)static_cast(g.quotedString())); + ss << std::quoted(static_cast(g.quotedString())); } + ::osip_www_authenticate_set_qop_options(*p_www_authenticate_header, (char*)::strdup(ss.str().c_str())); } } else { loggers::get_instance().warning("sip_codec_headers::encode_www_authenticate_header: Unimplemented param '%s'", static_cast(p.id())); } - } // End of 'for'statement } else { const LibSip__SIPTypesAndValues::OtherAuth& l = c.otherChallenge(); @@ -2344,6 +2496,40 @@ void sip_codec_headers::decode_call_id_header(const osip_message_t* p_sip_messag } } // End of method decode_call_id_header +void sip_codec_headers::decode_call_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallInfo& p_call_info_header) +{ + loggers::get_instance().log(">>> sip_codec_headers::decode_call_info_header: %p", p_sip_message->call_infos); + + osip_call_info_t *call_info = nullptr; + ::osip_message_get_call_info(p_sip_message, 0, &call_info); + if (call_info == nullptr) { + return; + } + + // FieldName + p_call_info_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("CALL_INFO_E")); + // CallInfoBody_List + loggers::get_instance().log("sip_codec_headers::decode_call_info_header: value: %s", call_info->element); + if ((call_info->element == nullptr) || (strlen(call_info->element) == 0)) { + p_call_info_header.callInfoBody().set_to_omit(); + } else if (osip_list_size(&(p_sip_message->call_infos)) == 0) { + p_call_info_header.callInfoBody().set_to_omit(); + } else { + LibSip__SIPTypesAndValues::CallInfoBody__List l; + int pos = 0; + while (pos < osip_list_size(&(p_sip_message->call_infos))) { + ::osip_message_get_call_info(p_sip_message, pos, &call_info); + loggers::get_instance().log("sip_codec_headers::decode_call_info_header: call_info.element=%s", call_info->element); + OPTIONAL params; + decode_semi_colon_params(call_info->gen_params, params); + l[pos++] = LibSip__SIPTypesAndValues::CallInfoBody(call_info->element, params); + } // End of 'while' statement + p_call_info_header.callInfoBody() = OPTIONAL(l); + } + + loggers::get_instance().log_msg("<<< sip_codec_headers::decode_call_info_header: ", p_call_info_header); +} // End of method decode_call_info_header + void sip_codec_headers::decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header) { loggers::get_instance().log(">>> sip_codec_headers::decode_c_seq_header"); @@ -2448,6 +2634,65 @@ void sip_codec_headers::decode_contact_header(const osip_message_t* p_sip_messag loggers::get_instance().log_msg("<<< sip_codec_headers::decode_contact_header: ", p_contact_header); } // End of method decode_contact_header +void sip_codec_headers::decode_event_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Event& p_event_header) +{ + loggers::get_instance().log("sip_codec_headers::decode_event_header"); + + // Sanity checks + osip_header_t *dest = nullptr; + ::osip_message_header_get_byname(p_sip_message, (const char *)"Event", 0, &dest); // TODO Create osip_message_[g|s]et_event + if (dest == nullptr) { + loggers::get_instance().warning("sip_codec_headers::decode_event_header: Not found"); + return; + } + loggers::get_instance().log("sip_codec_headers::decode_event_header: hname='%s' : hvalue='%s'\n", dest->hname, dest->hvalue); + + // FieldName + p_event_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("EVENT_E")); + // EventType + std::string str(dest->hvalue); + size_t p1 = str.find("<"); + size_t p2 = str.find(">"); + size_t p3 = str.find(";"); + std::string u = str.substr(p1 + 1, p2 - p1 - 1); + loggers::get_instance().log("sip_codec_headers::decode_event_header: u='%s'\n", u.c_str()); + p_event_header.eventType() = CHARSTRING(u.c_str()); + // eventParam + if (p3 != std::string::npos) { + std::string p = str.substr(p3 + 1); + loggers::get_instance().log("sip_codec_headers::decode_event_header: p='%s'\n", p.c_str()); + LibSip__Common::SemicolonParam__List params; + decode_semi_colon_params(p.c_str(), params); + if (params.is_bound()) { + p_event_header.eventParams() = OPTIONAL(params); + } else { + p_event_header.eventParams().set_to_omit(); + } + } else { + p_event_header.eventParams().set_to_omit(); + } +} // End of method decode_event_header + +void sip_codec_headers::decode_expires_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Expires& p_expires_header) +{ + loggers::get_instance().log("sip_codec_headers::decode_expires_header"); + + // Sanity checks + osip_header_t *dest = nullptr; + ::osip_message_header_get_byname(p_sip_message, (const char *)"Expires", 0, &dest); // TODO Create osip_message_[g|s]et_expires + if (dest == nullptr) { + loggers::get_instance().warning("sip_codec_headers::decode_expires_header: Not found"); + return; + } + loggers::get_instance().log("sip_codec_headers::decode_expires_header: hname='%s' : hvalue='%s'\n", dest->hname, dest->hvalue); + + // FieldName + p_expires_header.fieldName() = LibSip__SIPTypesAndValues::FieldName(LibSip__SIPTypesAndValues::FieldName::str_to_enum("EXPIRES_E")); + // DeltaSec + std::string str(dest->hvalue); + p_expires_header.deltaSec() = CHARSTRING(str.c_str()); +} // End of method decode_expires_header + void sip_codec_headers::decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header) { loggers::get_instance().log("sip_codec_headers::decode_from_header"); diff --git a/ccsrc/Protocols/Sip/sip_codec_headers.hh b/ccsrc/Protocols/Sip/sip_codec_headers.hh index 046621d4d77f116ddf4c4c94586737285440b4a7..8ee78ed9b10b48e500347d675a16de3755fe52e2 100644 --- a/ccsrc/Protocols/Sip/sip_codec_headers.hh +++ b/ccsrc/Protocols/Sip/sip_codec_headers.hh @@ -9,9 +9,12 @@ namespace LibSip__SIPTypesAndValues { class Authorization; class CallId; + class CallInfo; class ContentLength; class ContentType; class CSeq; + class Event; + class Expires; class From; class Geolocation; class GeolocationRouting; @@ -48,10 +51,13 @@ public: virtual int encode_allow_header(const OPTIONAL& p_allow, osip_message_t** p_sip_message); virtual int encode_authorization_header(const LibSip__SIPTypesAndValues::Authorization& p_authorization, osip_authorization_t** p_authorization_header); virtual int encode_call_id_header(const LibSip__SIPTypesAndValues::CallId& p_call_id, osip_call_id_t** p_call_id_header); + virtual int encode_call_info_header(const OPTIONAL& p_call_info, osip_message_t** p_sip_message); virtual int encode_contact_header(const LibSip__SIPTypesAndValues::Contact& p_contact, osip_contact_t** p_contact_header); virtual int encode_content_length_header(const LibSip__SIPTypesAndValues::ContentLength& p_contact, osip_content_length_t** p_content_length_header); virtual int encode_content_type_header(const LibSip__SIPTypesAndValues::ContentType& p_contact, osip_content_type_t** p_content_type_header); virtual int encode_c_seq_header(const LibSip__SIPTypesAndValues::CSeq& p_c_seq, osip_cseq_t** p_c_seq_header); + virtual int encode_event_header(const OPTIONAL& p_event, osip_message_t** p_sip_message); + virtual int encode_expires_header(const OPTIONAL& p_expires, osip_message_t** p_sip_message); virtual int encode_from_header(const LibSip__SIPTypesAndValues::From& p_from, osip_from_t** p_from_header); virtual int encode_geolocation_header(const OPTIONAL& p_geolocation, osip_message_t** p_sip_message); virtual int encode_geolocation_routing_header(const OPTIONAL& p_geolocation, osip_message_t** p_sip_message); @@ -83,10 +89,13 @@ public: virtual void decode_allow_events_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::AllowEvents& p_allow_events_header); virtual void decode_authorization_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Authorization& p_authorization_header); virtual void decode_call_id_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallId& p_call_id_header); + virtual void decode_call_info_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CallInfo& p_call_info_header); virtual void decode_content_length_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentLength& p_content_length_header); virtual void decode_content_type_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::ContentType& p_content_type_header); virtual void decode_c_seq_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::CSeq& p_c_seq_header); virtual void decode_contact_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Contact& p_contact_header); + virtual void decode_event_header(const osip_message_t* p_sip_event, LibSip__SIPTypesAndValues::Event& p_event_header); + virtual void decode_expires_header(const osip_message_t* p_sip_expires, LibSip__SIPTypesAndValues::Expires& p_expires_header); virtual void decode_from_header(const osip_from_t* p_sip_from, LibSip__SIPTypesAndValues::From& p_from_header); virtual void decode_geolocation_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::Geolocation& p_geolocation_header); virtual void decode_geolocation_routing_header(const osip_message_t* p_sip_message, LibSip__SIPTypesAndValues::GeolocationRouting& p_geolocation_routing_header); diff --git a/ccsrc/Protocols/Sip/sip_codec_info_request.cc b/ccsrc/Protocols/Sip/sip_codec_info_request.cc new file mode 100644 index 0000000000000000000000000000000000000000..7beb70c1b096b6762ef7f09eee95f7bf0fb23bc9 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_info_request.cc @@ -0,0 +1,46 @@ +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_codec_info_request.hh" +#include "loggers.hh" + +int sip_codec_info_request::encode (const LibSip__SIPTypesAndValues::INFO__Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_info_request::encode: ", (const Base_Type&)msg); + + if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { + loggers::get_instance().warning("sip_codec_info_request::encode: Failed to encode message"); + return -1; + } + + loggers::get_instance().log_msg("<<< sip_codec_info_request::encode: data=", data); + return 0; +} + +int sip_codec_info_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::INFO__Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_info_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_info_request::decode: Wrong parameters"); + return -1; + } + + // LibSip__SIPTypesAndValues::Request request; + if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { + // if (_codec.decode(data, request) == -1) { + loggers::get_instance().warning("sip_codec_info_request::decode: Failed to decode message"); + return -1; + } + // msg.requestLine() = request.requestLine(); + // msg.msgHeader() = request.msgHeader(); + // msg.messageBody() = request.messageBody(); + // msg.payload() = request.payload(); + + if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::INFO__E) { + loggers::get_instance().warning("sip_codec_info_request::decode: Wrong SIP Method, expected INFO"); + return -1; + } + + return 0; +} diff --git a/ccsrc/Protocols/Sip/sip_codec_info_request.hh b/ccsrc/Protocols/Sip/sip_codec_info_request.hh new file mode 100644 index 0000000000000000000000000000000000000000..49ae049e0cd4a3e9e26566e73ee16b21bb91043a --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_info_request.hh @@ -0,0 +1,27 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "sip_codec_request.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class INFO__Request; +} + +class sip_codec_info_request: public codec < +LibSip__SIPTypesAndValues::INFO__Request, +LibSip__SIPTypesAndValues::INFO__Request> +{ + sip_codec_request _codec; +public: + explicit sip_codec_info_request() : codec(), _codec() { }; + virtual ~sip_codec_info_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::INFO__Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::INFO__Request& msg, params* p_params = NULL); +}; // End of class sip_codec_info_request diff --git a/ccsrc/Protocols/Sip/sip_codec_message_body.cc b/ccsrc/Protocols/Sip/sip_codec_message_body.cc index 04ce46ed5deb40512a77e0500dc225f510b40b86..69f0a2b43266bf3fcdae598c2ca3a858b04e5ebd 100644 --- a/ccsrc/Protocols/Sip/sip_codec_message_body.cc +++ b/ccsrc/Protocols/Sip/sip_codec_message_body.cc @@ -39,6 +39,8 @@ int sip_codec_message_body::encode (const LibSip__MessageBodyTypes::MessageBody& osip_free(buff); sdp_message_free(sdp_body); } + } else if (msg.ischosen(LibSip__MessageBodyTypes::MessageBody::ALT_textplain)) { + data = char2oct(msg.textplain()); } else { loggers::get_instance().warning("sip_codec_message_body::encode: Unsupported variant"); return -1; @@ -78,6 +80,9 @@ int sip_codec_message_body::encode_message_body(const LibSip__MessageBodyTypes:: osip_free(buff); sdp_message_free(sdp_body); } + } else if (p_message_body.ischosen(LibSip__MessageBodyTypes::MessageBody::ALT_textplain)) { + const CHARSTRING& text = p_message_body.textplain(); + ::osip_message_set_body(p_sip_message, static_cast(text), text.lengthof()); } else if (p_message_body.ischosen(LibSip__MessageBodyTypes::MessageBody::ALT_mimeMessageBody)) { ::osip_message_set_mime_version(p_sip_message, "2.0"); const LibSip__MessageBodyTypes::MIME__Message& mime = p_message_body.mimeMessageBody(); @@ -114,7 +119,13 @@ int sip_codec_message_body::encode_message_body(const LibSip__MessageBodyTypes:: loggers::get_instance().warning("sip_codec_message_body::encode_message_body: Failed to set XML body content-type"); return -1; } - ::osip_body_set_contenttype(body, "application/sdp"); + const char* ct = static_cast(p.content__type()); + loggers::get_instance().log("sip_codec_message_body::encode_message_body: content-type: %s", ct); + if (ct != nullptr) { + ::osip_body_set_contenttype(body, ct); + } else { // Use a default value + ::osip_body_set_contenttype(body, "application/sdp"); + } } } else if (ps.ischosen(LibSip__MessageBodyTypes::MIME__Encapsulated__Parts::ALT_xmlBody)) { const LibSip__XMLTypes::XmlBody& xml = ps.xmlBody(); @@ -136,10 +147,16 @@ int sip_codec_message_body::encode_message_body(const LibSip__MessageBodyTypes:: body = nullptr; loggers::get_instance().log("sip_codec_message_body::encode_message_body: get item #%d", ::osip_list_size(&p_sip_message->bodies) - 1); if (::osip_message_get_body(p_sip_message, ::osip_list_size(&p_sip_message->bodies) - 1, &body) != ::osip_list_size(&p_sip_message->bodies) - 1) { - loggers::get_instance().warning("sip_codec_message_body::encode_message_body: Failed to set XML body content-type"); + loggers::get_instance().warning("sip_codec_message_body::encode_message_body: Failed to set content-type"); return -1; } - ::osip_body_set_contenttype(body, "application/resource-lists+xml"); + const char* ct = static_cast(p.content__type()); + loggers::get_instance().log("sip_codec_message_body::encode_message_body: content-type: %s", ct); + if (ct != nullptr) { + ::osip_body_set_contenttype(body, ct); + } else { // Use a default value + ::osip_body_set_contenttype(body, "application/resource-lists+xml"); + } } else if (ps.ischosen(LibSip__MessageBodyTypes::MIME__Encapsulated__Parts::ALT_msdBody)) { loggers::get_instance().warning("sip_codec_message_body::encode_message_body: Unsupported decoding of ALT_msdBody"); } else { @@ -147,7 +164,6 @@ int sip_codec_message_body::encode_message_body(const LibSip__MessageBodyTypes:: } pos += 1; } // End of 'while' statement - } else { loggers::get_instance().warning("sip_codec_message_body::encode_message_body: Unsupported variant"); return -1; diff --git a/ccsrc/Protocols/Sip/sip_codec_notify_request.cc b/ccsrc/Protocols/Sip/sip_codec_notify_request.cc new file mode 100644 index 0000000000000000000000000000000000000000..88429a14b11d4acccfa8472b910d68dc6cd907a8 --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_notify_request.cc @@ -0,0 +1,46 @@ +#include "LibSip_SIPTypesAndValues.hh" + +#include "sip_codec_notify_request.hh" +#include "loggers.hh" + +int sip_codec_notify_request::encode (const LibSip__SIPTypesAndValues::NOTIFY__Request& msg, OCTETSTRING& data) +{ + loggers::get_instance().log_msg(">>> sip_codec_notify_request::encode: ", (const Base_Type&)msg); + + if (_codec.encode((LibSip__SIPTypesAndValues::Request&)msg, data) == -1) { + loggers::get_instance().warning("sip_codec_notify_request::encode: Failed to encode message"); + return -1; + } + + loggers::get_instance().log_msg("<<< sip_codec_notify_request::encode: data=", data); + return 0; +} + +int sip_codec_notify_request::decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::NOTIFY__Request& msg, params* p_params) +{ + loggers::get_instance().log_msg(">>> sip_codec_notify_request::decode: data=", data); + + // Sanity checks + if (data.lengthof() == 0) { + loggers::get_instance().warning("sip_codec_notify_request::decode: Wrong parameters"); + return -1; + } + + // LibSip__SIPTypesAndValues::Request request; + if (_codec.decode(data, (LibSip__SIPTypesAndValues::Request&)msg) == -1) { + // if (_codec.decode(data, request) == -1) { + loggers::get_instance().warning("sip_codec_notify_request::decode: Failed to decode message"); + return -1; + } + // msg.requestLine() = request.requestLine(); + // msg.msgHeader() = request.msgHeader(); + // msg.messageBody() = request.messageBody(); + // msg.payload() = request.payload(); + + if (msg.requestLine().method() != LibSip__SIPTypesAndValues::Method::NOTIFY__E) { + loggers::get_instance().warning("sip_codec_notify_request::decode: Wrong SIP Method, expected NOTIFY"); + return -1; + } + + return 0; +} diff --git a/ccsrc/Protocols/Sip/sip_codec_notify_request.hh b/ccsrc/Protocols/Sip/sip_codec_notify_request.hh new file mode 100644 index 0000000000000000000000000000000000000000..d3fecef0898c0ae6b67ae6fba48d16ad89026cab --- /dev/null +++ b/ccsrc/Protocols/Sip/sip_codec_notify_request.hh @@ -0,0 +1,27 @@ +#pragma once + +#include "codec.hh" +#include "params.hh" + +#include "sip_codec_request.hh" + +class Base_Type; +class TTCN_Typedescriptor_t; +class TTCN_Buffer; + +namespace LibSip__SIPTypesAndValues { + class NOTIFY__Request; +} + +class sip_codec_notify_request: public codec < +LibSip__SIPTypesAndValues::NOTIFY__Request, +LibSip__SIPTypesAndValues::NOTIFY__Request> +{ + sip_codec_request _codec; +public: + explicit sip_codec_notify_request() : codec(), _codec() { }; + virtual ~sip_codec_notify_request() { }; + + virtual int encode (const LibSip__SIPTypesAndValues::NOTIFY__Request& msg, OCTETSTRING& data); + virtual int decode (const OCTETSTRING& data, LibSip__SIPTypesAndValues::NOTIFY__Request& msg, params* p_params = NULL); +}; // End of class sip_codec_notify_request diff --git a/ccsrc/Protocols/Sip/sip_layer.cc b/ccsrc/Protocols/Sip/sip_layer.cc index 8dcd22bfd322b0b5149f890f9c344c024d3bf5f2..64be3bdda37fe05ef81ce7b2d3894f9ba09bbbe7 100644 --- a/ccsrc/Protocols/Sip/sip_layer.cc +++ b/ccsrc/Protocols/Sip/sip_layer.cc @@ -7,7 +7,7 @@ #include "converter.hh" -sip_layer::sip_layer(const std::string & p_type, const std::string & p_param) : t_layer(p_type), _params(), _codec_request(), _codec_response(), _codec_register(), _codec_invite(), _codec_ack(), _codec_subscribe(), _codec_message(), _codec_options(), _codec_bye() { +sip_layer::sip_layer(const std::string & p_type, const std::string & p_param) : t_layer(p_type), _params(), _codec_request(), _codec_response(), _codec_register(), _codec_invite(), _codec_ack(), _codec_subscribe(), _codec_message(), _codec_options(), _codec_cancel(), _codec_notify(), _codec_info(), _codec_bye() { loggers::get_instance().log(">>> sip_layer::sip_layer: %s, %s", to_string().c_str(), p_param.c_str()); // Setup parameters params::convert(_params, p_param); @@ -76,6 +76,42 @@ void sip_layer::sendMsg(const LibSip__SIPTypesAndValues::BYE__Request& p_sip_mes send_data(data, _params); } +void sip_layer::sendMsg(const LibSip__SIPTypesAndValues::CANCEL__Request& p_sip_message, params& p_param) { + loggers::get_instance().log_msg(">>> sip_layer::sendMsg: ", p_sip_message); + + // Encode SipMessage + OCTETSTRING data; + _codec_cancel.encode(p_sip_message, data); + send_data(data, _params); +} + +void sip_layer::sendMsg(const LibSip__SIPTypesAndValues::NOTIFY__Request& p_sip_message, params& p_param) { + loggers::get_instance().log_msg(">>> sip_layer::sendMsg: ", p_sip_message); + + // Encode SipMessage + OCTETSTRING data; + _codec_notify.encode(p_sip_message, data); + send_data(data, _params); +} + +void sip_layer::sendMsg(const LibSip__SIPTypesAndValues::INFO__Request& p_sip_message, params& p_param) { + loggers::get_instance().log_msg(">>> sip_layer::sendMsg: ", p_sip_message); + + // Encode SipMessage + OCTETSTRING data; + _codec_info.encode(p_sip_message, data); + send_data(data, _params); +} + +void sip_layer::sendMsg(const LibSip__SIPTypesAndValues::Response& p_sip_message, params& p_param) { + loggers::get_instance().log_msg(">>> sip_layer::sendMsg: ", p_sip_message); + + // Encode SipMessage + OCTETSTRING data; + _codec_response.encode(p_sip_message, data); + send_data(data, _params); +} + void sip_layer::send_data(OCTETSTRING& data, params& p_params) { loggers::get_instance().log_msg(">>> sip_layer::send_data: ", data); @@ -87,7 +123,7 @@ void sip_layer::receive_data(OCTETSTRING& data, params& p_params) loggers::get_instance().log_msg(">>> sip_layer::receive_data: ", data); // Decode SIP message - if (data[0].get_octet() == 'S') { // Assume it is a responce + if ((data[0].get_octet() == 'S') && (data[1].get_octet() == 'I') && (data[2].get_octet() == 'P')) { // SIP... Assume it is a responce LibSip__SIPTypesAndValues::Response sip_response; if (_codec_response.decode(data, sip_response) == -1) { loggers::get_instance().warning("sip_layer::receive_data: Failed to decode response data"); diff --git a/ccsrc/Protocols/Sip/sip_layer.hh b/ccsrc/Protocols/Sip/sip_layer.hh index 4fd5d9ecb0685ac049040ead95278a349e36b1d8..c8a58428c422478d469b47cc47039c781b98931d 100644 --- a/ccsrc/Protocols/Sip/sip_layer.hh +++ b/ccsrc/Protocols/Sip/sip_layer.hh @@ -22,6 +22,9 @@ #include "sip_codec_subscribe_request.hh" #include "sip_codec_message_request.hh" #include "sip_codec_options_request.hh" +#include "sip_codec_notify_request.hh" +#include "sip_codec_cancel_request.hh" +#include "sip_codec_info_request.hh" #include "sip_codec_bye_request.hh" namespace LibSip__Interface { @@ -35,6 +38,9 @@ namespace LibSip__SIPTypesAndValues { class SUSCRIBE__Request; //! Forward declaration of TITAN class class MESSAGE__Request; //! Forward declaration of TITAN class class OPTIONS__Request; //! Forward declaration of TITAN class + class CANCEL__Request; //! Forward declaration of TITAN class + class NOTIFY__Request; //! Forward declaration of TITAN class + class INFO__Request; //! Forward declaration of TITAN class class BYE__Request; //! Forward declaration of TITAN class class Resquest; //! Forward declaration of TITAN class class Response; //! Forward declaration of TITAN class @@ -56,6 +62,9 @@ class sip_layer : public t_layer { sip_codec_subscribe_request _codec_subscribe; sip_codec_message_request _codec_message; sip_codec_options_request _codec_options; + sip_codec_cancel_request _codec_cancel; + sip_codec_notify_request _codec_notify; + sip_codec_info_request _codec_info; sip_codec_bye_request _codec_bye; public: //! \publicsection @@ -65,7 +74,7 @@ public: //! \publicsection * \param[in] p_type \todo * \param[in] p_param \todo */ - sip_layer() : t_layer(), _params(), _codec_request(), _codec_response(), _codec_register(), _codec_invite(), _codec_ack(), _codec_subscribe(), _codec_message(), _codec_options(), _codec_bye() {}; + sip_layer() : t_layer(), _params(), _codec_request(), _codec_response(), _codec_register(), _codec_invite(), _codec_ack(), _codec_subscribe(), _codec_message(), _codec_options(), _codec_cancel(), _codec_notify(), _codec_info(), _codec_bye() {}; /*! * \brief Specialised constructor * Create a new instance of the sip_layer class @@ -92,6 +101,14 @@ public: //! \publicsection void sendMsg(const LibSip__SIPTypesAndValues::BYE__Request& p_sip_message, params& p_param); + void sendMsg(const LibSip__SIPTypesAndValues::CANCEL__Request& p_sip_message, params& p_param); + + void sendMsg(const LibSip__SIPTypesAndValues::NOTIFY__Request& p_sip_message, params& p_param); + + void sendMsg(const LibSip__SIPTypesAndValues::INFO__Request& p_sip_message, params& p_param); + + void sendMsg(const LibSip__SIPTypesAndValues::Response& p_sip_message, params& p_param); + /*! * \virtual * \fn void send_data(OCTETSTRING& data, params& p_params); diff --git a/ccsrc/Protocols/Tcp/tcp_layer.cc b/ccsrc/Protocols/Tcp/tcp_layer.cc index bbda36185935eb7a0b9cf0e16ecf0683cc63baec..5a53c1b4c2a7ee4eea48cde36838292ab76e8e2e 100644 --- a/ccsrc/Protocols/Tcp/tcp_layer.cc +++ b/ccsrc/Protocols/Tcp/tcp_layer.cc @@ -21,10 +21,16 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la } else if (it->second.compare("1") == 0) { set_socket_debugging(true); } + it = _params.find(std::string("tcp_fragmented")); + if (it == _params.cend()) { + _params.insert(std::pair(std::string("tcp_fragmented"), "0")); + } bool server_mode = false; it = _params.find(params::server_mode); if (it != _params.cend()) { server_mode = (1 == std::stoi(it->second)); + } else { + _params.insert(std::pair(std::string("server_mode"), "0")); } it = _params.find(params::server); if (it == _params.cend()) { @@ -33,13 +39,15 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la if (!parameter_set(params::server.c_str(), _params[params::server].c_str())) { loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::server.c_str()); } - set_ssl_use_ssl(false); + bool ssl_mode = false; it = _params.find(params::use_ssl); if (it == _params.cend()) { _params.insert(std::pair(std::string("use_ssl"), "0")); } else if (it->second.compare("1") == 0) { - set_ssl_use_ssl(true); + _params.insert(std::pair(std::string("use_ssl"), "1")); + ssl_mode = true; } + set_ssl_use_ssl(ssl_mode); it = _params.find(params::port); if (it == _params.cend()) { if (_params[params::use_ssl].compare("0") == 0) { // Use standard HTTP port @@ -48,7 +56,7 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la _params.insert(std::pair(std::string("port"), "443")); } } - if (!parameter_set(params::port.c_str(), _params[params::port].c_str())) { + if (!parameter_set(remote_port_name(), _params[params::port].c_str())) { loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::port.c_str()); } it = _params.find(params::local_port); @@ -59,10 +67,10 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la _params.insert(std::pair(std::string("local_port"), "443")); } } - if (!parameter_set(params::local_port.c_str(), _params[params::local_port].c_str())) { + if (!parameter_set(local_port_name(), _params[params::local_port].c_str())) { loggers::get_instance().warning("tcp_layer::set_parameter: Unprocessed parameter: %s", params::local_port.c_str()); } - + parameter_set(use_connection_ASPs_name(), (!server_mode) ? "yes" : "no"); parameter_set(server_backlog_name(), "1024"); loggers::get_instance().log("tcp_layer::tcp_layer: server_mode=%x", server_mode); @@ -70,15 +78,41 @@ tcp_layer::tcp_layer(const std::string & p_type, const std::string & param) : la if (server_mode) { parameter_set("serverPort", _params[params::local_port].c_str()); } + if (ssl_mode) { // Add certificate bundle + // Check mutual authentication param + _params.insert(std::pair(std::string("mutual_tls"), "0")); + parameter_set(ssl_verifycertificate_name(), "no"); + it = _params.find(params::mutual_auth); + if (it == _params.cend()) { + if (_params[params::mutual_auth].compare("1") == 0) { // Use mutual authentication + parameter_set(ssl_verifycertificate_name(), "yes"); + _params.insert(std::pair(std::string("mutual_tls"), "1")); + } + } + // Set trusted CA file + it = _params.find(params::mutual_auth); + if (it == _params.cend()) { + parameter_set(ssl_trustedCAlist_file_name(), it->second.c_str()); + _params.insert(std::pair(std::string("mutual_tls"), it->second)); + } else { + parameter_set(ssl_trustedCAlist_file_name(), "/usr/share/ca-certificates/mozilla/Amazon_Root_CA_1.crt"); + } + // Set additional certificates + //parameter_set(ssl_private_key_file_name(), "../certificates/out/privates/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.key.pem"); + //parameter_set(ssl_certificate_file_name(), "../certificates/out/certs/e5e11abad8003766e4a7b721afb175a189b5f4cc7046af9b0d8eaebb86f28c40_server_dsa.cert.pem"); + } set_ttcn_buffer_usercontrol(false); set_handle_half_close(true); map_user(); - if (!_reconnect_on_send) { + parameter_set(client_TCP_reconnect_name(), "yes"); + + if (server_mode == 0) { + loggers::get_instance().log("tcp_layer::tcp_layer: Establish connection: %s/%s", _params[params::server].c_str(), _params[params::port].c_str()); open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); } - } + } tcp_layer::~tcp_layer() { loggers::get_instance().log(">>> tcp_layer::~tcp_layer: %d", _client_id); @@ -107,7 +141,14 @@ void tcp_layer::send_data(OCTETSTRING& data, params& params) { loggers::get_instance().log_msg(">>> tcp_layer::send_data: ", data); loggers::get_instance().log("tcp_layer::send_data: SSL mode: %x", get_ssl_use_ssl()); + loggers::get_instance().log("tcp_layer::send_data: server_mode: %s", _params[params::server_mode].c_str()); + loggers::get_instance().log("tcp_layer::send_data: peer_list_get_nr_of_peers: %d", peer_list_get_nr_of_peers()); + if ((_params[params::server_mode].compare("0") == 0) && (peer_list_get_nr_of_peers() == 0)) { + // Reconnect (e.g. HTTP connection lost + loggers::get_instance().log("tcp_layer::send_data: Re-establish connection: %s/%s", _params[params::server].c_str(), _params[params::port].c_str()); + open_client_connection(_params[params::server].c_str(), _params[params::port].c_str(), NULL, NULL); + } send_outgoing(static_cast(data), data.lengthof(), _client_id); } @@ -151,11 +192,10 @@ int tcp_layer::send_message_on_fd(int p_client_id, const unsigned char * message { loggers::get_instance().log(">>> tcp_layer::send_message_on_fd: %d", p_client_id); - if(get_user_data(p_client_id)) - { - loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); - return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); - } + if(get_user_data(p_client_id)) { + loggers::get_instance().log("tcp_layer::send_message_on_fd: SSL mode"); + return SSL_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); + } loggers::get_instance().log("tcp_layer::send_message_on_fd: Non secured mode"); return Abstract_Socket::send_message_on_fd(p_client_id, message_buffer, length_of_message); @@ -165,11 +205,10 @@ int tcp_layer::send_message_on_nonblocking_fd(int p_client_id, const unsigned ch { loggers::get_instance().log(">>> tcp_layer::send_message_on_nonblocking_fd: %d", p_client_id); - if(get_user_data(p_client_id)) - { - loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); - return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); - } + if(get_user_data(p_client_id)) { + loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: SSL mode"); + return SSL_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); + } loggers::get_instance().log("tcp_layer::send_message_on_nonblocking_fd: Non secured mode"); return Abstract_Socket::send_message_on_nonblocking_fd(p_client_id, message_buffer, length_of_message); @@ -186,6 +225,9 @@ int tcp_layer::receive_message_on_fd(int p_client_id) } loggers::get_instance().log("tcp_layer::receive_message_on_fd: Non secured mode"); + if (_params[std::string("tcp_fragmented")].compare("1") == 0) { + sleep(5); // FIXME When HTTP paquet is fragmented into several TCP packets, a timer is required. This is a Q&D solution + } return Abstract_Socket::receive_message_on_fd(p_client_id); } diff --git a/certs/gen_rsa.sh b/certs/gen_rsa.sh deleted file mode 100755 index 6a0eb089808bcde3c0f92bae7e3a0502248f662e..0000000000000000000000000000000000000000 --- a/certs/gen_rsa.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash -set -e -set -vx - -echo " Set environment" -export dir=./out -export cadir=./out/ca -export format=pem - -if ! [ -d $dir ] -then - mkdir $dir - mkdir -p $dir/certs $dir/crl $dir/csr $dir/newcerts $dir/privates $dir/serials $dir/publics $dir/trusted -fi - -echo "--------------------------------------------------------------------------------------" -echo " Generate Test System Signing Certificate" - -# For OCSP support use uncomment these: -ocspurl=ocsp.www.fscom.fr -export ocspIAI="OCSP;URI:http://$ocspurl" - -countryName="/C=FR" -stateOrProvinceName="/ST=AM" -localityName="/L=Sophia-Antipolis" -organizationName="/O=ETSI" -organizationalUnitName="/OU=Plugtests" -commonName="/CN=plugtests.net" -DN=$countryName$stateOrProvinceName$localityName -DN=$DN$organizationName$organizationalUnitName$commonName -echo $DN -ConfTestID=plugtestsit -echo $ConfTestID > $dir/privates/ConfTestID_rsa.txt -sleep 1 -cse_fqdn=etsi.org -emailaddr=${ConfTestID}@${cse_fqdn} -export subjectAltName="email:$emailaddr" -echo $subjectAltName - -echo " Generate serial number" -openssl rand -hex $sn > $dir/serials/${ConfTestID}_server_rsa.srl -echo " Generate private Key" -openssl genrsa -out $dir/privates/${ConfTestID}_server_rsa.key.$format $key_size -echo " View key" -openssl rsa -inform $format -in $dir/privates/${ConfTestID}_server_rsa.key.$format -text -noout -#chmod 400 $dir/privates/${ConfTestID}_server_rsa.$format -echo " Create the CSR for Server Certificate file" -openssl req -config ./ca_intermediate_rsa.cfg -key $dir/privates/${ConfTestID}_server_rsa.key.$format -subj "$DN" -new -sha256 -out $dir/csr/${ConfTestID}_server_rsa.csr.$format -openssl req -text -noout -verify -in $dir/csr/${ConfTestID}_server_rsa.csr.$format -echo " Create Server Certificate file" -cp $dir/serials/${ConfTestID}_server_rsa.srl $dir/serial # hex 8 is minimum, 19 is maximum -# Note 'openssl ca' does not support DER format -openssl x509 -req -sha256 -days 375 -extensions server_cert -CA PCA-root-ca-cert.ccc -in $dir/csr/${ConfTestID}_server_rsa.csr.$format -out $dir/certs/${ConfTestID}_server_rsa.cert.$format -#chmod 444 $dir/certs/${ConfTestID}_server_rsa.cert.$format -echo " View Server Certificate" -openssl x509 -noout -text -in $dir/certs/${ConfTestID}_server_rsa.cert.$format -echo " Verify Server Certificate" -openssl verify -CAfile PCA-root-ca-cert.ccc $dir/certs/${ConfTestID}_server_rsa.cert.$format -echo " Extract public key" -openssl x509 -in $dir/certs/${ConfTestID}_server_rsa.cert.$format -pubkey -out $dir/publics/${ConfTestID}_server_rsa.pub.$format diff --git a/docker/home/etc/init.d/20-eclipse.sh b/docker/home/etc/init.d/20-eclipse.sh deleted file mode 100755 index 1d8ac948d7abab1ea1515d84b1867dcd55d7c5e4..0000000000000000000000000000000000000000 --- a/docker/home/etc/init.d/20-eclipse.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash - -ECLIPSE_URL='https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-06/R/eclipse-jee-2020-06-R-linux-gtk-x86_64.tar.gz&r=1' -TITAN_URL='https://www.eclipse.org/downloads/download.php?file=/titan/TITAN_Designer_and_Executor_Plugin_7.1.0.zip&r=1' - -#set -e -set -vx - -echo -e "*****************************\n* Install eclipse\n*****************************\n" - -mkdir -p ${HOME}/frameworks -cd ${HOME}/frameworks || exit 1 -wget --progress=dot:mega 'http://www.mirrorservice.org/sites/download.eclipse.org/eclipseMirror/technology/epp/downloads/release/2020-06/R/eclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz' -Oeclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz || exit 1 -tar -zxvf ./eclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz || exit 1 -ln -sf ${HOME}/frameworks/eclipse/eclipse ${HOME}/bin/eclipse -rm -f ./eclipse-cpp-2020-06-R-linux-gtk-x86_64.tar.gz - -if wget --progress=dot:mega 'https://mirrors.dotsrc.org/eclipse//titan/TITAN_Designer_and_Executor_Plugin_7.1.0.zip' -OTITAN_Designer_and_Executor_plugin.zip; then - eclipse/eclipse -noSplash -application org.eclipse.equinox.p2.director \ - -destination /home/etsi/frameworks/eclipse \ - -repository 'jar:file:///home/etsi/frameworks/TITAN_Designer_and_Executor_plugin.zip!/' \ - -installIU TITAN_Designer.feature.group,TITAN_Executor.feature.group,TITAN_Log_Viewer.feature.group,Titan_external_dependencies.feature.group,Titanium.feature.group,Titanium_external_dependencies.feature.group - rm -f TITAN_Designer_and_Executor_plugin.zip -fi - -cd ${HOME} diff --git a/docker/run.sh b/docker/run.sh deleted file mode 100755 index 0bde37c45641a574e4004e232f9555b82d4ba787..0000000000000000000000000000000000000000 --- a/docker/run.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# Copyright ETSI 2021 -# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt - -#set -e -set -vx - -docker run --interactive --tty --rm --publish 2222:22 --env DISPLAY=$DISPLAY --volume /tmp/.X11-unix:/tmp/.X11-unix --cap-add=NET_RAW --cap-add=NET_ADMIN --user etsi ttf_t009_ng112:latest /bin/bash -c ". /home/etsi/devenv.bash && export ATS=AtsNg112 && cd /home/etsi/dev/ETSI_Ng112/etc/AtsNg112 && ln -sf AtsNg112_Gridgears_lis.cfg_ AtsNg112.cfg && cd /home/etsi/dev/ETSI_Ng112/scripts && ./run_all.bash" - -# That's all Floks -exit 0 diff --git a/etc/AtsNg112/AtsNg112_Frequentis_psap.cfg_ b/etc/AtsBCF/AtsBCF.cfg similarity index 57% rename from etc/AtsNg112/AtsNg112_Frequentis_psap.cfg_ rename to etc/AtsBCF/AtsBCF.cfg index 12595c8bb39098c4d49e1d3a37bada999151124d..8dc381cc574d54c11523b6ab7b93e22f537c499d 100644 --- a/etc/AtsNg112/AtsNg112_Frequentis_psap.cfg_ +++ b/etc/AtsBCF/AtsBCF.cfg @@ -1,12 +1,6 @@ [MODULE_PARAMETERS] # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. -# IUT roles -LibNg112_Pics.PICS_LIS_IUT := false; -LibNg112_Pics.PICS_ECRF_IUT := false; -LibNg112_Pics.PICS_ESRP_IUT := false; -LibNg112_Pics.PICS_PSAP_IUT := true; - LibCommon_Time.PX_TAC := 30.0 LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; @@ -17,18 +11,17 @@ LibItsHttp_Pics.PICS_HEADER_HOST := "lis.gridgears.io" # Used for LIS LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" -#LibNg112_Pics.PICS_HTTP_GET_REQUEST := false -#LibNg112_Pics.PICS_HTTP_POST_REQUEST := false - - -LibNg112_Pixits.PX_IMS_SUT_UE1_PUBLIC_USER := "alice-06" +LibNg112_Pixits.PX_IMS_SUT_UE1_PUBLIC_USER := "alice-01" LibNg112_Pixits.PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net" LibNg112_Pixits.PX_IMS_TS_UE1_IPADDR := "conftest.plugtests.net" # Local UE address used for From header LibNg112_Pixits.PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net" # Local UE address used for SDP connection attrubute -#LibNg112_Pics.PICS_S_SIP_TCP1 := true # Set to true when using SIP over TCP ==> change SIP ports configuration -#LibNg112_Pics.PICS_S_SIP_UDP1 := false -#LibSip_PIXITS.PX_SIP_TRANSPORT := "TCP" # Transport is TCP +LibNg112_Pixits.PX_IMS_SUT_BCF_PORT := 5062 +LibNg112_Pixits.PX_IMS_SUT_BCF_IPADDR := "127.0.0.1" +LibNg112_Pixits.PX_IMS_SUT_BCF_HOME_DOMAIN := "bcf22.sut.net" + +AtsBCF_Pics.PICS_BCF_S_SIP_TCP1 := true # Set to true when using SIP over TCP ==> change SIP ports configuration + #LibNg112_Pixits.PX_IMS_TS_UE1_PORT := 5052 # SIP over TCP port LibNg112_Pixits.PX_IMS_SUT_EMERGENCY_SERVICE := "sos" LibNg112_Pixits.PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "psap1.frequentis.plugtests.net" @@ -36,13 +29,20 @@ LibNg112_Pixits.PX_IMS_SUT_PCSCF1_IPADDR := "psap1.frequentis.plugtests. LibNg112_Pixits.PX_IMS_SUT_UE_IPADDR := "psap1.frequentis.plugtests.net" -LibSip_PIXITS.PX_SIP_TRANSPORT := "TCP"; +LibNg112_Pixits.PX_GEOLOCATION_ID := "lis1.etsi.plugtests.net/locref?ref=660bc838-882e-4683-8241-af26bb5960d8" + +AtsBCF_Pixits.PX_CALL_INFO_INCIDENT_ID := "" +AtsBCF_Pixits.PX_CALL_INFO_CALL_ID := "" +AtsBCF_Pixits.PX_CALL_INFO_SOURCE_ID := "" + +LibSip_PIXITS.PX_SIP_TRANSPORT := "UDP"; + [LOGGING] # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsBCF/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP @@ -56,8 +56,12 @@ LogEventTypes:= Yes # In this section you can specify parameters that are passed to Test Ports. # SIP -Caller.SIPP.params := "SIP/TCP(debug=1,server=psap1.frequentis.plugtests.net,port=5060,use_ssl=1)" -CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" +# TCP +#Caller.SIPP.params := "SIP/TCP(debug=1,server=127.0.0.1,port=5060,use_ssl=0)" +#CallTalker.SIPP.params := "SIP/TCP(debug=1,server_mode=1,server=127.0.0.1,local_port=5080,use_ssl=0)" +# UDP +Caller.SIPP.params := "SIP/UDP(debug=1,dst_ip=127.0.0.1,dst_port=5060,src_port=5061,use_ssl=0)" +CallTalker.SIPP.params := "SIP/UDP(debug=1,server_mode=1,src_port=5080,reuse_incoming_source_adddress=1,use_ssl=0)" [DEFINE] # In this section you can create macro definitions, @@ -82,24 +86,29 @@ CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=506 [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -AtsNg112_TestControl.control - -# IUT successfully handles SIP INVITE with service urn and ULAW via UDP -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_01 -# IUT successfully handles SIP INVITE with service urn and ULAW via UDP -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_02 -# IUT successfully handles SIP INVITE with service urn via TCP -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_03 -# IUT successfully handles SIP INVITE with SDP and PIDF-LO content -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_04 -# IUT successfully handles SIP INVITE without service URN -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_05 -# IUT successfully handles an incoming SIP BYE -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_06 -# IUT successfully handles an incoming SIP MESSAGE -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_07 -# IUT successfully handles an incoming SIP OPTION -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_08 +AtsBCF_TestControl.control + +# IUT forwards well-formated INVITE to PSAP +#AtsBCF_TestCases.TC_BCF_SIP_INVITE_BV_01 +# IUT adds EES-source to the INVITE message +#AtsBCF_TestCases.TC_BCF_SIP_INVITE_BV_02 +# IUT adds Incident Tracking ID within Call-Info header to the INVITE message. +#AtsBCF_TestCases.TC_BCF_SIP_INVITE_BV_03 +# IUT adds Call ID within Call-Info header to the INVITE message. +#AtsBCF_TestCases.TC_BCF_SIP_INVITE_BV_04 +# IUT adds Source ID within Call-Info header to the INVITE message. +#AtsBCF_TestCases.TC_BCF_SIP_INVITE_BV_05 +# IUT forwards well-formated MESSAGE to PSAP +#AtsBCF_TestCases.TC_BCF_SIP_MESSAGE_BV_01 +# IUT adds EES-source to the MESSAGE message +#AtsBCF_TestCases.TC_BCF_SIP_MESSAGE_BV_02 +# IUT adds Incident Tracking ID within Call-Info header to the MESSAGE message. +#AtsBCF_TestCases.TC_BCF_SIP_MESSAGE_BV_03 +# IUT adds Call ID within Call-Info header to the MESSAGE message. +#AtsBCF_TestCases.TC_BCF_SIP_MESSAGE_BV_04 +# IUT adds Source ID within Call-Info header to the MESSAGE message. +#AtsBCF_TestCases.TC_BCF_SIP_MESSAGE_BV_05 + [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/etc/AtsNg112/AtsNg112_Beta80_ecrf.cfg_ b/etc/AtsECRF/AtsNg112_Beta80_ecrf.cfg_ similarity index 99% rename from etc/AtsNg112/AtsNg112_Beta80_ecrf.cfg_ rename to etc/AtsECRF/AtsNg112_Beta80_ecrf.cfg_ index 539b8188312125291788d69cdfb3c3b5fb1198b6..8ad3859d92224ac7441d0c571a02f44f5065b26c 100644 --- a/etc/AtsNg112/AtsNg112_Beta80_ecrf.cfg_ +++ b/etc/AtsECRF/AtsNg112_Beta80_ecrf.cfg_ @@ -48,7 +48,7 @@ LibNg112_Pixits.PX_V_POLICE_SIP_URI := "sip:police@psap2.plugtests.net" # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsECRF/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP diff --git a/etc/AtsNg112/AtsNg112_Gridgears_ecrf.cfg_ b/etc/AtsECRF/AtsNg112_Gridgears_ecrf.cfg_ similarity index 83% rename from etc/AtsNg112/AtsNg112_Gridgears_ecrf.cfg_ rename to etc/AtsECRF/AtsNg112_Gridgears_ecrf.cfg_ index 403f73ff6ffb3fba882b7d1510b698e308615880..ec5f4f7a576e9a56b61042bbbc0da79138fadd1b 100644 --- a/etc/AtsNg112/AtsNg112_Gridgears_ecrf.cfg_ +++ b/etc/AtsECRF/AtsNg112_Gridgears_ecrf.cfg_ @@ -1,12 +1,6 @@ [MODULE_PARAMETERS] # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. -# IUT roles -LibNg112_Pics.PICS_LIS_IUT := false; -LibNg112_Pics.PICS_ECRF_IUT := true; -LibNg112_Pics.PICS_ESRP_IUT := false; -LibNg112_Pics.PICS_PSAP_IUT := false; - LibCommon_Time.PX_TAC := 30.0 LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; @@ -17,12 +11,8 @@ LibItsHttp_Pics.PICS_HTTP_VERSION_MINOR := 0; #LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" -# LIS PICS -LibNg112_Pics.PICS_LIS_URI := "/" -LibNg112_Pics.PICS_HTTP_POST_GET_KEEP_ALIVE := false - # ECRF PICS -LibNg112_Pics.PICS_ECRF_URI := "/" +AtsECRF_Pics.PICS_ECRF_URI := "/ecrf" LibNg112_Pixits.PX_V_POLICE_PATH := "ecrf1.gridgears.plugtests.net" @@ -48,7 +38,7 @@ LibNg112_Pixits.PX_V_POLICE_SIP_URI := "sip:police@psap2.plugtests.net" # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsECRF/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP @@ -62,7 +52,8 @@ LogEventTypes:= Yes # In this section you can specify parameters that are passed to Test Ports. # LOST -system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ecrf1.gridgears.plugtests.net,port=443,use_ssl=1)" +#system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ecrf1.gridgears.plugtests.net,port=443,use_ssl=1)" +system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=192.168.1.39,port=30090,use_ssl=0)" [DEFINE] # In this section you can create macro definitions, @@ -87,32 +78,32 @@ system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debu [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -#AtsNg112_TestControl.control +#AtsECRF_TestControl.control # "IUT successfully responds with a service URI for a Point in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_01 +AtsECRF_TestCases.TC_ECRF_LOST_BV_01 # "IUT successfully responds with a service URI for a Circle in the service boundary" -AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_02 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_02 # "IUT successfully responds with an error response for an unknown Service URN in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_03 # "IUT successfully responds with an error response for an unrecognized location profile" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_04 # "IUT successfully responds with service boundary by value if requested" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_05 # "IUT successfully responds with service URI for a Circle that intersects service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_06 # "IUT successfully responds with a service URI for a Circle that intersects multiple service boundaries" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_07 # "IUT successfully responds with a service URI for a Circle in the service boundary with multiple services" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_08 # "IUT successfully responds with configured service types for a ListServices request" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_09 # "IUT successfully responds with configured service types for a ListServicesByLocation request" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_10 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_10 # "IUT successfully responds with configured service types for a ListServices request without service element" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_11 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_11 # "IUT successfully responds with configured service types for a ListServicesByLocation request without service element" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_12 +#AtsECRF_TestCases.TC_ECRF_LOST_BV_12 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/etc/AtsNg112/AtsNg112_Unify_ecrf.cfg_ b/etc/AtsECRF/AtsNg112_Unify_ecrf.cfg_ similarity index 99% rename from etc/AtsNg112/AtsNg112_Unify_ecrf.cfg_ rename to etc/AtsECRF/AtsNg112_Unify_ecrf.cfg_ index df3a885c654933e0de8d4a604df02574510ff10d..46ad27b76c5a412b95fd84223c16971bb91482ff 100644 --- a/etc/AtsNg112/AtsNg112_Unify_ecrf.cfg_ +++ b/etc/AtsECRF/AtsNg112_Unify_ecrf.cfg_ @@ -48,7 +48,7 @@ LibNg112_Pixits.PX_V_POLICE_SIP_URI := "sip:police@psap2.plugtests.net" # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsECRF/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP diff --git a/etc/AtsNg112/AtsNg112_Frequentis_esrp.cfg_ b/etc/AtsESRP/AtsNg112_Frequentis_esrp.cfg_ similarity index 71% rename from etc/AtsNg112/AtsNg112_Frequentis_esrp.cfg_ rename to etc/AtsESRP/AtsNg112_Frequentis_esrp.cfg_ index b85714fdfcf321c1d2a6f768b6320db63a963071..dcff5318ac442a88f2fa3c219752916783fcf9d7 100644 --- a/etc/AtsNg112/AtsNg112_Frequentis_esrp.cfg_ +++ b/etc/AtsESRP/AtsNg112_Frequentis_esrp.cfg_ @@ -1,12 +1,6 @@ [MODULE_PARAMETERS] # This section shall contain the values of all parameters that are defined in your TTCN-3 modules. -# IUT roles -LibNg112_Pics.PICS_LIS_IUT := false; -LibNg112_Pics.PICS_ECRF_IUT := false; -LibNg112_Pics.PICS_ESRP_IUT := true; -LibNg112_Pics.PICS_PSAP_IUT := false; - LibCommon_Time.PX_TAC := 30.0 LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; @@ -14,8 +8,8 @@ LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; LibItsHttp_Pics.PICS_HEADER_HOST := "lis1.gridgears.plugtests.net" # Used for LIS #LibItsHttp_Pics.PICS_HEADER_HOST := "ecrf1.gridgears.plugtests.net" # Used for ECRF -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" -#LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" +#LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" +LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" #LibNg112_Pics.PICS_HTTP_GET_REQUEST := false #LibNg112_Pics.PICS_HTTP_POST_REQUEST := false @@ -24,14 +18,14 @@ LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" LibSip_PIXITS.PX_SIP_REGISTRATION := true; #LibSip_PIXITS.PX_SEED := true; -LibSip_PIXITS.PX_PRESENCE_USER := "sip:alice-06@plugtests.net" -LibSip_PIXITS.PX_PRESENCE_USER_POS := { 43.623013240241434, 7.046184539794921 }; // ALICE6 position +LibNg112_Pixits.PX_PRESENCE_USER := "sip:alice-06@plugtests.net" +LibNg112_Pixits.PX_PRESENCE_USER_POS := { 43.623013240241434, 7.046184539794921 }; // ALICE6 position [LOGGING] # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsESRP/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP @@ -45,11 +39,13 @@ LogEventTypes:= Yes # In this section you can specify parameters that are passed to Test Ports. # ECRF -Ecrf.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ecrf1.gridgears.plugtests.net,use_ssl=1)" +#Ecrf.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=ecrf1.gridgears.plugtests.net,use_ssl=1)" +Ecrf.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server_mode=1,local_port=8080,use_ssl=0)" # SIP/PSAP -Ue.SIPP.params := "SIP/TCP(debug=1,server=esrp1.frequentis.plugtests.net,port=5071,use_ssl=0)" -Psap.SIPP.params := "SIP/TCP(debug=1,server_mode=1,local_port=5061,use_ssl=0)" +#Ue.SIPP.params := "SIP/TCP(debug=1,server=esrp1.frequentis.plugtests.net,port=5071,use_ssl=0)" +Ue.SIPP.params := "SIP/TCP(debug=1,server=127.0.0.1,port=5071,use_ssl=0)" +Psap.SIPP.params := "SIP/TCP(debug=1,server_mode=1,local_port=5062,use_ssl=0)" [DEFINE] # In this section you can create macro definitions, @@ -74,68 +70,71 @@ Psap.SIPP.params := "SIP/TCP(debug=1,server_mode=1,local_port=5061,use_ssl=0)" [EXECUTE] # In this section you can specify what parts of your test suite you want to execute. -AtsNg112_TestControl.control +AtsESRP_TestControl.control + +# "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" +#AtsESRP_TestCases.TC_ESRP_FIND_SERVICE_BV_01 # "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_01 # "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_02 # "IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_03 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_03 # "IUT successfully responds with a reference and geodetic location when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_04 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_04 # "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_05 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_05 # "IUT successfully responds with a CIVIC address when it receives a HTTP POST location request without location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_06 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_06 # "IUT successfully responds with an error response when it receives a HTTP POST location request with an unknown location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_07 +#AtsESRP_TestCases.TC_LIS_HTTP_POST_BV_07 # "IUT successfully returns the location when a locationURI is dereferenced" -#AtsNg112_TestCases.TC_LIS_HTTP_GET_BV_01 +#AtsESRP_TestCases.TC_LIS_HTTP_GET_BV_01 # "IUT returns HTTP error 404 if it does not support HTTP GET method" -#AtsNg112_TestCases.TC_LIS_HTTP_GET_BV_02 +#AtsESRP_TestCases.TC_LIS_HTTP_GET_BV_02 # "IUT successfully responds with a service URI for a Point in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_01 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_01 # "IUT successfully responds with a service URI for a Circle in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_02 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_02 # "IUT successfully responds with an error response for an unknown Service URN in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_03 # "IUT successfully responds with an error response for an unrecognized location profile" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_04 # "IUT successfully responds with service boundary by value if requested" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_05 # "IUT successfully responds with service URI for a Circle that intersects service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_06 # "IUT successfully responds with a service URI for a Circle that intersects multiple service boundaries" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_07 # "IUT successfully responds with a service URI for a Circle in the service boundary with multiple services" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_08 # "IUT successfully responds with configured service types for a ListServices request" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_09 # "IUT successfully responds with configured service types for a ListServicesByLocation request" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_10 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_10 # "IUT successfully responds with configured service types for a ListServices request without service element" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_11 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_11 # "IUT successfully responds with configured service types for a ListServicesByLocation request without service element" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_12 +#AtsESRP_TestCases.TC_ECRF_HTTP_POST_BV_12 # "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" -AtsNg112_TestCases.TC_ESRP_SIP_INVITE_BV_01 +#AtsESRP_TestCases.TC_ESRP_SIP_INVITE_BV_01 # "IUT successfully handles SIP INVITE with service urn and ULAW via UDP" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_01 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_01 # "IUT successfully handles SIP INVITE with service urn and ULAW via UDP" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_02 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_02 # "IUT successfully handles SIP INVITE with service urn via TCP" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_03 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_03 # "IUT successfully handles SIP INVITE with SDP and PIDF-LO content" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_04 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_04 # "IUT successfully handles SIP INVITE without service URN" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_05 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_05 # "IUT successfully handles an incoming SIP BYE" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_06 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_06 # "IUT successfully handles an incoming SIP MESSAGE" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_07 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_07 # "IUT successfully handles an incoming SIP OPTION" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_08 +#AtsESRP_TestCases.TC_PSAP_SIP_INVITE_BV_08 [GROUPS] # In this section you can specify groups of hosts. These groups can be used inside the diff --git a/etc/AtsNg112/AtsNg112_Unify_esrp.cfg_ b/etc/AtsESRP/AtsNg112_Unify_esrp.cfg_ similarity index 99% rename from etc/AtsNg112/AtsNg112_Unify_esrp.cfg_ rename to etc/AtsESRP/AtsNg112_Unify_esrp.cfg_ index 0f9a09f55c7d7f62d1f31fb6b98eab8da7122b3e..a5f20e5fdfe5b0781e360a61a3319c97e2f87ea9 100644 --- a/etc/AtsNg112/AtsNg112_Unify_esrp.cfg_ +++ b/etc/AtsESRP/AtsNg112_Unify_esrp.cfg_ @@ -52,7 +52,7 @@ LibNg112_Pixits.PX_IMS_SUT_PCSCF1_IPADDR := "psap1.conftest.plugtests.ne # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsESRP/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP diff --git a/etc/AtsESRP/ESRP.cfg b/etc/AtsESRP/ESRP.cfg new file mode 100644 index 0000000000000000000000000000000000000000..2434d89d068455802a0773be8f7f74b6698c7f35 --- /dev/null +++ b/etc/AtsESRP/ESRP.cfg @@ -0,0 +1,118 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +LibItsHttp_Pics.PICS_HEADER_HOST := "192.168.50.64" +LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/json" + +## Add HTTP Header with Testcase Name +PX_ADD_TC_NAME_HTTP_HEADER := true + +PX_SIP_TRANSPORT := "TCP" + +# Only relevant for SIP Register Target Testcase +PX_SIP_REGISTRATION := true + +# ATS Configuration +PX_ESINET_TS_SUBSCRIBER_PORT := 5080 # SIP Port of the ATS +PX_ESINET_TS_SUBSCRIBER_IPADDR := "127.0.0.1" # IP Address of the ATS +PX_ESINET_TS_UPSTREAM_PORT := 5080 +PX_ESINET_TS_UPSTREAM_IPADDR := "127.0.0.1" + +# Caller +PX_IMS_SUT_UE1_HOME_DOMAIN := "esinet.io"; +PX_IMS_SUT_UE1_PUBLIC_USER := "caller"; + +# Emergency Queue +PX_IMS_SUT_EMERGENCY_SERVICE := "112" +PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "esinet.io" + +# SUT Configuration +PX_SUT_ESRP_SIP_PORT := 5060 +PX_SUT_ESRP_SIP_IPADDR := "127.0.0.1" +PX_SUT_ESRP_SIP_HOME_DOMAIN := "esinet.io" + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). +#../logs/AtsNg112 +LogFile := "../logs/AtsESRP/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. + +# ECRF +Ecrf.httpPort.params := "HTTP(codecs=lost:lost_codec)/TCP(debug=1,server_mode=1,local_port=8080,use_ssl=0)" +EcrfRedirectTarget.httpPort.params := "HTTP(codecs=lost:lost_codec)/TCP(debug=1,server_mode=1,local_port=8082,use_ssl=0)" + +# LIS +Lis.httpPort.params := "HTTP(codecs=held:held_codec)/TCP(debug=1,server_mode=1,local_port=8084,use_ssl=0)" + +system.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=host.docker.internal,port=8090,use_ssl=0)" +# QueueState 01/02 Only Subscription Test Cases +#system.SIPP.params := "SIP/TCP(debug=1,server_mode=1,local_port=5080,use_ssl=0)" + +# SIP Subscribe Test Cases +system.SIPP.params := "SIP/TCP(debug=1,server=localhost,port=5060,use_ssl=0)" + +#Ecrf.httpPort.params := "HTTP(codecs=lost:lost_codec)/TCP(debug=1,server_mode=1,local_port=8080,use_ssl=0)" + +# SIP/PSAP +Upstream.SIPP.params := "SIP/TCP(debug=1,server=localhost,port=5060,use_ssl=0)" +Downstream.SIPP.params := "SIP/TCP(debug=1,local_port=5080,server_mode=1,use_ssl=0)" +Diversion.SIPP.params := "SIP/TCP(debug=1,local_port=5070,server_mode=1,use_ssl=0)" +Downstream.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=host.docker.internal,port=8090,use_ssl=0)" +Psap.SIPP.params := "SIP/TCP(debug=1,server=localhost,port=5060,use_ssl=0)" +#Psap.SIPP.params := "SIP/TCP(debug=1,server_mode=1,local_port=5070,use_ssl=0)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +AtsESRP_TestControl.control + +#AtsESRP_TestCases.TC_ESRP_FIND_SERVICE_BV_01 +#AtsESRP_TestCases.TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_REGISTRATION_BV_01 +#AtsESRP_TestCases.TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_REGISTRATION_BV_02 +#AtsESRP_TestCases.TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_DEREGISTRATION_BV_01 +#AtsESRP_TestCases.TC_ESRP_QUEUE_STATE_BV_01 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/AtsNg112/AtsNg112_Beta80_lis.cfg_ b/etc/AtsLIS/AtsNg112_Beta80_lis.cfg_ similarity index 99% rename from etc/AtsNg112/AtsNg112_Beta80_lis.cfg_ rename to etc/AtsLIS/AtsNg112_Beta80_lis.cfg_ index 91d7d614261a031792bc9ff7e548cc0e480045d8..bac10c6b2fa67fa68f03ade80d96ce9f3cd2517b 100644 --- a/etc/AtsNg112/AtsNg112_Beta80_lis.cfg_ +++ b/etc/AtsLIS/AtsNg112_Beta80_lis.cfg_ @@ -48,7 +48,7 @@ LibNg112_Pixits.PX_DEVICE_NUMBER := { "tel:+336152555011", "tel: # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsLIS/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP diff --git a/etc/AtsLIS/AtsNg112_Gridgears_lis.cfg_ b/etc/AtsLIS/AtsNg112_Gridgears_lis.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..afe08c69c2d7d59ea9117c8072d3f23b50723fa0 --- /dev/null +++ b/etc/AtsLIS/AtsNg112_Gridgears_lis.cfg_ @@ -0,0 +1,105 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +LibCommon_Time.PX_TAC := 30.0 +LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; +LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; + +LibItsHttp_Pics.PICS_HEADER_HOST := "lis.demo.gridgears.io" +LibItsHttp_Pixits.PX_ADDITIONAL_HTTP_HEADERS_KEYS := { "x-api-key" } +LibItsHttp_Pixits.PX_ADDITIONAL_HTTP_HEADERS_VALUES := { "Y1AOH8RYCJ3F7NBA7S1B9G8ZH4XN43SY5ZM4MJYA" } + +LibItsHttp_Pics.PICS_HTTP_VERSION_MINOR := 0; +LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" +#LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" + +LibNg112_Pics.PICS_HTTP_POST_GET_KEEP_ALIVE := false + +# LIS PICS +#LibNg112_Pics.PICS_LIS_URI := "/?x-api-key=5637d3fa-3d42-4a50-a8bf-422ae1052d87/" +AtsLIS_Pics.PICS_LIS_URI := "/held" + +AtsLIS_Pixits.PX_DEVICE_NUMBER_POINT_POS := { 48.20821091317917, 16.372756238916846 } #{ 43.6230132402414, 7.04618453979492 } +#AtsLIS_Pixits.PX_DEVICE_NUMBER := { "tel:+336152555011", "tel:+336152555012", "tel:+336152555013", "tel:+33336152555014" } # ALICE01, BOB01, CAROL01, DAVE01 +AtsLIS_Pixits.PX_DEVICE_NUMBER := { "sip:alice-01@demo.gridgears.io", "tel:+336152555012", "tel:+336152555013", "tel:+33336152555014" } # ALICE01, BOB01, CAROL01, DAVE01 +AtsLIS_Pixits.PX_DEVICE_NUMBER_POINT := 0 + +LibNg112_Pixits.PX_V_POLICE_PATH := "ecrf1.gridgears.io" + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/AtsLIS/%e.%h-%r.%s" +#FileMask := LOG_ALL | USER | DEBUG | MATCHING +#ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +FileMask := ERROR | WARNING | USER | PORTEVENT | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | TIMEROP +ConsoleMask := ERROR | WARNING | USER | PORTEVENT | MATCHING | EXECUTOR_RUNTIME | VERDICTOP | TIMEROP +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. + +# LIS +system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=lis.demo.gridgears.io,port=443,use_ssl=1)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +#AtsLIS_TestControl.control + +# "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" +AtsLIS_TestCases.TC_LIS_HELD_BV_01 +# "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" +#AtsLIS_TestCases.TC_LIS_HELD_BV_02 +# "IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute" +#AtsLIS_TestCases.TC_LIS_HELD_BV_03 +# "IUT successfully responds with a reference and geodetic location when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute" +#AtsLIS_TestCases.TC_LIS_HELD_BV_04 +# "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" +#AtsLIS_TestCases.TC_LIS_HELD_BV_05 +# "IUT successfully responds with a CIVIC address when it receives a HTTP POST location request without location type" +#AtsLIS_TestCases.TC_LIS_HELD_BV_06 +# "IUT successfully responds with an error response when it receives a HTTP POST location request with an unknown location type" +#AtsLIS_TestCases.TC_LIS_HELD_BV_07 +# "IUT successfully returns the location when a locationURI is dereferenced" +#AtsLIS_TestCases.TC_LIS_HTTP_GET_BV_01 +# "IUT returns HTTP error 404 if it does not support HTTP GET method" +#AtsLIS_TestCases.TC_LIS_HTTP_GET_BV_02 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/AtsNg112/AtsNg112_Intersys_lis.cfg_ b/etc/AtsLIS/AtsNg112_Intersys_lis.cfg_ similarity index 99% rename from etc/AtsNg112/AtsNg112_Intersys_lis.cfg_ rename to etc/AtsLIS/AtsNg112_Intersys_lis.cfg_ index 9b3076440dde4fffef22effc927d95e1b9a00664..fadb166213a6f14f2bdcdd2a1876f85b07730caa 100644 --- a/etc/AtsNg112/AtsNg112_Intersys_lis.cfg_ +++ b/etc/AtsLIS/AtsNg112_Intersys_lis.cfg_ @@ -62,7 +62,7 @@ LibNg112_Pixits.PX_DEVICE_NUMBER_CIVIC := 3 # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsLIS/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP diff --git a/etc/AtsNg112/AtsNg112_test_lis.cfg_ b/etc/AtsLIS/AtsNg112_test_lis.cfg_ similarity index 99% rename from etc/AtsNg112/AtsNg112_test_lis.cfg_ rename to etc/AtsLIS/AtsNg112_test_lis.cfg_ index 4b91cfa2f69a0ec38423a98d7ec0a41bad287284..1e0557c1ac61695696ee7de64c15c400ba664cf1 100644 --- a/etc/AtsNg112/AtsNg112_test_lis.cfg_ +++ b/etc/AtsLIS/AtsNg112_test_lis.cfg_ @@ -46,7 +46,7 @@ LibNg112_Pixits.PX_V_POLICE_SIP_URI := "sip:police@psap2.plugtests.net" # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsLIS/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP diff --git a/etc/AtsNg112/AtsNg112_Gridgears_lis.cfg_ b/etc/AtsNg112/AtsNg112_Gridgears_lis.cfg_ deleted file mode 100644 index 63650dbf23aa6c8387607ca9b17354d67cb1fbb8..0000000000000000000000000000000000000000 --- a/etc/AtsNg112/AtsNg112_Gridgears_lis.cfg_ +++ /dev/null @@ -1,168 +0,0 @@ -[MODULE_PARAMETERS] -# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. - -# IUT roles -LibNg112_Pics.PICS_LIS_IUT := true; -LibNg112_Pics.PICS_ECRF_IUT := false; -LibNg112_Pics.PICS_ESRP_IUT := false; -LibNg112_Pics.PICS_PSAP_IUT := false; - -LibCommon_Time.PX_TAC := 30.0 -LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; -LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; - -LibItsHttp_Pics.PICS_HEADER_HOST := "lis.demo.gridgears.io" -LibItsHttp_Pixits.PX_ADDITIONAL_HTTP_HEADERS_KEYS := { "x-api-key" } -LibItsHttp_Pixits.PX_ADDITIONAL_HTTP_HEADERS_VALUES := { "5637d3fa-3d42-4a50-a8bf-422ae1052d87" } - -LibItsHttp_Pics.PICS_HTTP_VERSION_MINOR := 0; -LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" -#LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" - -# LIS PICS -#LibNg112_Pics.PICS_LIS_URI := "/?x-api-key=5637d3fa-3d42-4a50-a8bf-422ae1052d87/" -LibNg112_Pics.PICS_LIS_URI := "/" -LibNg112_Pics.PICS_HTTP_POST_GET_KEEP_ALIVE := false - -LibNg112_Pixits.PX_V_POLICE_PATH := "ecrf1.gridgears.io" -LibNg112_Pixits.PX_DEVICE_NUMBER_POINT_POS := { 43.6230132402414, 7.04618453979492 }; - -# PSAP01 -#LibNg112_Pixits.PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY := { 43.623013240241434, 7.046184539794921 } # ALICE01 -#LibNg112_Pixits.PX_E_POLICE_SOURCE_ID := "1d2af31b-4f75-4277-871a-dd3fad15b002"; -#LibNg112_Pixits.PX_V_POLICE_SOURCE_ID := "1d2af31b-4f75-4277-871a-dd3fad15b002"; -#LibNg112_Pixits.PX_E_POLICE_DISPLAY_NAME := "PSAP 1 Police" -#LibNg112_Pixits.PX_V_POLICE_DISPLAY_NAME := "PSAP 1 Police" -#LibNg112_Pixits.PX_E_POLICE_SIP_URI := "sip:police@psap1.plugtests.net" -#LibNg112_Pixits.PX_V_POLICE_SIP_URI := "sip:police@psap1.plugtests.net" -# PSAP02 -LibNg112_Pixits.PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY := { 43.62357242915213, 7.053029537200927 } # ALICE02 -LibNg112_Pixits.PX_CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_POS := { 43.62139000963511, 7.055529356002808 } # CAROL02 -LibNg112_Pixits.PX_E_POLICE_SOURCE_ID := "bcba560d-9132-4307-894e-f82db5c8478c" -LibNg112_Pixits.PX_V_POLICE_SOURCE_ID := "bcba560d-9132-4307-894e-f82db5c8478c" -LibNg112_Pixits.PX_E_POLICE_DISPLAY_NAME := "PSAP 2 Police" -LibNg112_Pixits.PX_V_POLICE_DISPLAY_NAME := "PSAP 2 Police" -LibNg112_Pixits.PX_E_POLICE_SIP_URI := "sip:police@psap2.plugtests.net" -LibNg112_Pixits.PX_V_POLICE_SIP_URI := "sip:police@psap2.plugtests.net" - -LibNg112_Pixits.PX_DEVICE_NUMBER := { "tel:+336152555011", "tel:+336152555012", "tel:+336152555013", "tel:+33336152555014" } # ALICE01, BOB01, CAROL01, DAVE01 - -[LOGGING] -# In this section you can specify the name of the log file and the classes of events -# you want to log into the file or display on console (standard error). - -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" -FileMask := LOG_ALL | USER | DEBUG | MATCHING -ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING -#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP -#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP -LogSourceInfo := Stack -LogEntityName:= Yes -LogEventTypes:= Yes -#TimeStampFormat := DateTime - -[TESTPORT_PARAMETERS] -# In this section you can specify parameters that are passed to Test Ports. - -# LIS -system.httpPort.params := "HTTP(codecs=lost:lost_codec;held:held_codec)/TCP(debug=1,server=lis.demo.gridgears.io,port=443,use_ssl=1)" - -[DEFINE] -# In this section you can create macro definitions, -# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. - -[INCLUDE] -# To use configuration settings given in other configuration files, -# the configuration files just need to be listed in this section, with their full or relative pathnames. - -[ORDERED_INCLUDE] -# To use configuration settings given in other configuration files, -# the configuration files just need to be listed in this section, with their full or relative pathnames. - -[EXTERNAL_COMMANDS] -# This section can define external commands (shell scripts) to be executed by the ETS -# whenever a control part or test case is started or terminated. - -#BeginTestCase := "" -#EndTestCase := "" -#BeginControlPart := "" -#EndControlPart := "" - -[EXECUTE] -# In this section you can specify what parts of your test suite you want to execute. -#AtsNg112_TestControl.control - -# "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_01 -# "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_02 -# "IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute" -AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_03 -# "IUT successfully responds with a reference and geodetic location when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_04 -# "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_05 -# "IUT successfully responds with a CIVIC address when it receives a HTTP POST location request without location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_06 -# "IUT successfully responds with an error response when it receives a HTTP POST location request with an unknown location type" -#AtsNg112_TestCases.TC_LIS_HTTP_POST_BV_07 -# "IUT successfully returns the location when a locationURI is dereferenced" -#AtsNg112_TestCases.TC_LIS_HTTP_GET_BV_01 -# "IUT returns HTTP error 404 if it does not support HTTP GET method" -#AtsNg112_TestCases.TC_LIS_HTTP_GET_BV_02 -# "IUT successfully responds with a service URI for a Point in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_01 -# "IUT successfully responds with a service URI for a Circle in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_02 -# "IUT successfully responds with an error response for an unknown Service URN in the service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_03 -# "IUT successfully responds with an error response for an unrecognized location profile" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_04 -# "IUT successfully responds with service boundary by value if requested" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_05 -# "IUT successfully responds with service URI for a Circle that intersects service boundary" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_06 -# "IUT successfully responds with a service URI for a Circle that intersects multiple service boundaries" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_07 -# "IUT successfully responds with a service URI for a Circle in the service boundary with multiple services" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_08 -# "IUT successfully responds with configured service types for a ListServices request" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_09 -# "IUT successfully responds with configured service types for a ListServicesByLocation request" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_10 -# "IUT successfully responds with configured service types for a ListServices request without service element" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_11 -# "IUT successfully responds with configured service types for a ListServicesByLocation request without service element" -#AtsNg112_TestCases.TC_ECRF_HTTP_POST_BV_12 -# "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" -#AtsNg112_TestCases.TC_ESRP_SIP_INVITE_BV_01 -# "IUT successfully handles SIP INVITE with service urn and ULAW via UDP" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_01 -# "IUT successfully handles SIP INVITE with service urn and ULAW via UDP" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_02 -# "IUT successfully handles SIP INVITE with service urn via TCP" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_03 -# "IUT successfully handles SIP INVITE with SDP and PIDF-LO content" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_04 -# "IUT successfully handles SIP INVITE without service URN" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_05 -# "IUT successfully handles an incoming SIP BYE" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_06 -# "IUT successfully handles an incoming SIP MESSAGE" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_07 -# "IUT successfully handles an incoming SIP OPTION" -#AtsNg112_TestCases.TC_PSAP_SIP_INVITE_BV_08 - -[GROUPS] -# In this section you can specify groups of hosts. These groups can be used inside the -# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. - -[COMPONENTS] -# This section consists of rules restricting the location of created PTCs. - -[MAIN_CONTROLLER] -# The options herein control the behavior of MC. -KillTimer := 10.0 -LocalAddress := 127.0.0.1 -TCPPort := 12000 -NumHCs := 1 diff --git a/etc/AtsPSAP/AtsNg112_Frequentis_psap.cfg_ b/etc/AtsPSAP/AtsNg112_Frequentis_psap.cfg_ new file mode 100644 index 0000000000000000000000000000000000000000..e2e14b81f70a967d3fb574e9f481509869d1d8f6 --- /dev/null +++ b/etc/AtsPSAP/AtsNg112_Frequentis_psap.cfg_ @@ -0,0 +1,124 @@ +[MODULE_PARAMETERS] +# This section shall contain the values of all parameters that are defined in your TTCN-3 modules. + +LibCommon_Time.PX_TAC := 30.0 +#LibCommon_Sync.PX_TSYNC_TIME_LIMIT := 30.0; +#LibCommon_Sync.PX_TSHUT_DOWN_TIME_LIMIT := 30.0; + +LibItsHttp_Pics.PICS_HEADER_HOST := "lis.gridgears.io" # Used for LIS +#LibItsHttp_Pics.PICS_HEADER_HOST := "ecrf.gridgears.io" # Used for ECRF + +LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/held+xml;charset=utf-8" +#LibItsHttp_Pics.PICS_HEADER_CONTENT_TYPE := "application/lost+xml;charset=utf-8" + +LibNg112_Pixits.PX_IMS_SUT_UE1_PUBLIC_USER := "alice-06" +LibNg112_Pixits.PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net" +LibNg112_Pixits.PX_IMS_TS_UE1_IPADDR := "conftest.plugtests.net" # Local UE address used for From header +LibNg112_Pixits.PX_IMS_SUT_UE1_BEARER_IPADDR := "conftest.plugtests.net" # Local UE address used for SDP connection attrubute +LibNg112_Pics.PICS_PSAP_CALL_TAKER := true # Set to true when CallTalker interface is available +#LibNg112_Pixits.PX_IMS_TS_UE1_PORT := 5052 # SIP over TCP port +LibNg112_Pixits.PX_IMS_SUT_EMERGENCY_SERVICE := "sos" +LibNg112_Pixits.PX_IMS_SUT_EMERGENCY_HOME_DOMAIN := "psap1.frequentis.plugtests.net" +LibNg112_Pixits.PX_IMS_SUT_PCSCF1_IPADDR := "psap1.frequentis.plugtests.net" +LibNg112_Pixits.PX_IMS_SUT_UE_IPADDR := "psap1.frequentis.plugtests.net" + +AtsPSAP_Pics.PICS_PSAP_S_SIP_REGISTRATION := false +AtsPSAP_Pics.PICS_PSAP_S_SIP_TCP1 := false # Set to true when using SIP over TCP ==> change SIP ports configuration + # Update LibSip_PIXITS.PX_SIP_TRANSPORT according to true/false value +AtsPSAP_Pics.PICS_PSAP_S_SIP_UDP1 := true +AtsPSAP_Pics.PICS_PSAP_USE_TLS := true + +AtsPSAP_Pics.PICS_PSAP_B_SDP_ULA1 := true +AtsPSAP_Pics.PICS_PSAP_B_SDP_ALA1 := false + +LibSip_PIXITS.PX_SIP_TRANSPORT := "TCP" # Transport is TCP or TCP + +[LOGGING] +# In this section you can specify the name of the log file and the classes of events +# you want to log into the file or display on console (standard error). + +LogFile := "../logs/AtsPSAP/%e.%h-%r.%s" +FileMask := LOG_ALL | USER | DEBUG | MATCHING +ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING +#FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +#ConsoleMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP +LogSourceInfo := Stack +LogEntityName:= Yes +LogEventTypes:= Yes +#TimeStampFormat := DateTime + +[TESTPORT_PARAMETERS] +# In this section you can specify parameters that are passed to Test Ports. + +# SIP +# TCP +#Caller.SIPP.params := "SIP/TCP(debug=1,server=127.0.0.1,port=5060,use_ssl=0)" +#CallTalker.SIPP.params := "SIP/TCP(debug=1,server_mode=1,server=127.0.0.1,local_port=5080,use_ssl=0)" +# UDP +Caller.SIPP.params := "SIP/UDP(debug=1,dst_ip=127.0.0.1,dst_port=5060,src_port=5061,use_ssl=0)" +CallTalker.SIPP.params := "SIP/UDP(debug=1,server_mode=1,src_port=5080,reuse_incoming_source_adddress=1,use_ssl=0)" + +# ESRP +system.httpPort.params := "HTTP(codecs=json:json_codec)/TCP(debug=1,server=192.168.1.39,port=30044,use_ssl=0)" + +[DEFINE] +# In this section you can create macro definitions, +# that can be used in other configuration file sections except [INCLUDE] and [ORDERED_INCLUDE]. + +[INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[ORDERED_INCLUDE] +# To use configuration settings given in other configuration files, +# the configuration files just need to be listed in this section, with their full or relative pathnames. + +[EXTERNAL_COMMANDS] +# This section can define external commands (shell scripts) to be executed by the ETS +# whenever a control part or test case is started or terminated. + +#BeginTestCase := "" +#EndTestCase := "" +#BeginControlPart := "" +#EndControlPart := "" + +[EXECUTE] +# In this section you can specify what parts of your test suite you want to execute. +AtsPSAP_TestControl.control + +# IUT successfully handles SIP INVITE with service urn and ULAW via UDP +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_01 +# IUT successfully handles SIP INVITE with service urn and ULAW via UDP +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_02 +# IUT successfully handles SIP INVITE with service urn via TCP +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_03 +# IUT successfully handles SIP INVITE with SDP and PIDF-LO content +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_04 +# IUT successfully handles SIP INVITE without service URN +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_05 +# IUT successfully handles an incoming SIP BYE +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_06 +# IUT successfully handles an incoming SIP MESSAGE +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_07 +# IUT successfully handles an incoming SIP OPTION +#AtsPSAP_TestCases.TC_PSAP_SIP_INVITE_BV_08 + +# IUT successfully handles an incoming SIP MESSAGE +#AtsPSAP_TestCases.TC_PSAP_SIP_MESSAGE_BV_01 + +# Check that the IUT registers properly to an ESRP Dequeue" +#AtsPSAP_TestCases.TC_PSAP_DEQUEUE_BV_01 + +[GROUPS] +# In this section you can specify groups of hosts. These groups can be used inside the +# [COMPONENTS] section to restrict the creation of certain PTCs to a given set of hosts. + +[COMPONENTS] +# This section consists of rules restricting the location of created PTCs. + +[MAIN_CONTROLLER] +# The options herein control the behavior of MC. +KillTimer := 10.0 +LocalAddress := 127.0.0.1 +TCPPort := 12000 +NumHCs := 1 diff --git a/etc/AtsNg112/AtsNg112_Huawei_psap.cfg_ b/etc/AtsPSAP/AtsNg112_Huawei_psap.cfg_ similarity index 94% rename from etc/AtsNg112/AtsNg112_Huawei_psap.cfg_ rename to etc/AtsPSAP/AtsNg112_Huawei_psap.cfg_ index a880225d8d76e81644790ef4eea4002af5cd2b23..89769c5475d0a6a39af1f2f81593bdd535329079 100644 --- a/etc/AtsNg112/AtsNg112_Huawei_psap.cfg_ +++ b/etc/AtsPSAP/AtsNg112_Huawei_psap.cfg_ @@ -25,8 +25,8 @@ LibNg112_Pixits.PX_IMS_SUT_UE1_HOME_DOMAIN := "plugtests.net" LibNg112_Pixits.PX_IMS_TS_UE1_IPADDR := "10.101.243.1" #"conftest.plugtests.net" # Local UE address used for From header LibNg112_Pixits.PX_IMS_SUT_UE1_BEARER_IPADDR := "10.101.243.1" #"conftest.plugtests.net" # Local UE address used for SDP connection attrubute -#LibNg112_Pics.PICS_S_SIP_TCP1 := true # Set to true when using SIP over TCP ==> change SIP ports configuration -LibNg112_Pics.PICS_S_SIP_UDP1 := true +#AtsPSAP_Pics.PICS_PSAP_S_SIP_TCP1 := true # Set to true when using SIP over TCP ==> change SIP ports configuration +AtsPSAP_Pics.PICS_PSAP_S_SIP_UDP1 := true LibSip_PIXITS.PX_SIP_TRANSPORT := "TCP" # Transport is TCP #LibNg112_Pixits.PX_IMS_TS_UE1_PORT := 5052 # SIP over TCP port LibNg112_Pixits.PX_IMS_SUT_EMERGENCY_SERVICE := "sos" @@ -39,7 +39,7 @@ LibNg112_Pixits.PX_IMS_SUT_UE_IPADDR := "psap1.huawei.plugtests.net" # In this section you can specify the name of the log file and the classes of events # you want to log into the file or display on console (standard error). -LogFile := "../logs/AtsNg112/%e.%h-%r.%s" +LogFile := "../logs/AtsPSAP/%e.%h-%r.%s" FileMask := LOG_ALL | USER | DEBUG | MATCHING ConsoleMask := LOG_ALL | USER | DEBUG | MATCHING #FileMask := ERROR | WARNING | USER | MATCHING | EXECUTOR_RUNTIME | VERDICTOP @@ -55,7 +55,7 @@ LogEventTypes:= Yes # SIP #Caller.SIPP.params := "SIP/TCP(debug=1,server=172.24.99.196,port=5060)" Caller.SIPP.params := "SIP/TCP(debug=1,server=psap1.huawei.plugtests.net,port=5061,use_ssl=1)" -CallTaker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" +CallTalker.SIPP.params := "SIP/UDP(dst_ip=172.24.1.241,dst_port=5060,src_port=5060)" [DEFINE] # In this section you can create macro definitions, diff --git a/etsi_ng112.tpd b/etsi_ng112.tpd index 0bba34994f961725d097abd5086bb3a87202de34..8d6894ab701a7fe21acc65cc899febe192f1468d 100644 --- a/etsi_ng112.tpd +++ b/etsi_ng112.tpd @@ -6,41 +6,14 @@ which accompanies this distribution, and is available at https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html --> - STF549_ng112 + TTF009_Test - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -53,105 +26,51 @@ + - - - - + + + + - + + + + + + + - + + + + + - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - @@ -160,581 +79,21 @@ - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -779,6 +138,10 @@ + + + + @@ -799,14 +162,20 @@ + + + + + + @@ -820,8 +189,6 @@ - - @@ -834,44 +201,49 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + - - - - - - - + + + + + + + + + + + + + + + + + @@ -881,36 +253,41 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -918,6 +295,9 @@ + + + @@ -958,62 +338,23 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + @@ -1024,6 +365,7 @@ + @@ -1031,60 +373,21 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1108,7 +411,6 @@ - @@ -1120,43 +422,24 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + @@ -1174,14 +457,13 @@ + - - @@ -1225,14 +507,17 @@ true true false - false + true false - false + true true false none executable - bin/STF549_ng112 + class + false + false + bin/TTF009_Ng112 cpp AS_USE_SSL @@ -1271,8 +556,8 @@ None -std=gnu++0x - ssl osipparser2 + lpcap ../../frameworks/osip/src/osipparser2/.libs @@ -1316,7 +601,7 @@ - ttcn/modules + docs true false @@ -1349,42 +634,9 @@ - build/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112/xsd + scripts - false + true false @@ -1415,9 +667,9 @@ - bin + testdata - false + true false @@ -1448,9 +700,9 @@ - docs/AtsNg112 + ttcn/LibIts/ttcn/Common - false + true false @@ -1481,9 +733,9 @@ - build/AtsNg112/ccsrc/Protocols/Http + ttcn/LibSip/xsd - false + true false @@ -1514,9 +766,9 @@ - ttcn/LibIms/.git/branches + ttcn/modules - false + true false @@ -1547,9 +799,9 @@ - ttcn/LibIts/.git/refs/heads + validation - false + true false @@ -1580,7 +832,7 @@ - ttcn/LibSip/.git/refs/remotes/origin + ttcn/LibEmcom/LibNg112/xsd false false @@ -1613,7 +865,7 @@ - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images + validation/NG112_Plugtest_2019 false false @@ -1646,7 +898,7 @@ - ttcn/LibIms/.git/logs/refs/remotes/origin + etc/AtsLIS false false @@ -1679,7 +931,7 @@ - build/AtsNg112/ccsrc/Protocols/Tcp + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module false false @@ -1712,7 +964,7 @@ - ttcn/LibCommon/.git/info + ttcn/patch_sip_titan false false @@ -1745,7 +997,7 @@ - ttcn/LibCommon/.git/logs + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images false false @@ -1778,7 +1030,7 @@ - ttcn/LibCommon/.git/refs/heads + ttcn/AtsECRF false false @@ -1811,7 +1063,7 @@ - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG + ccsrc/Framework false false @@ -1877,40 +1129,7 @@ - docs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git + etc false false @@ -1976,7 +1195,7 @@ - ttcn/AtsNg112 + ttcn/LibEmcom/LibNg112 false false @@ -2009,7 +1228,7 @@ - ttcn/LibIms/.git/info + test_purposes/common false false @@ -2042,7 +1261,7 @@ - ttcn/LibIms/.git/logs + test_purposes/ecrf false false @@ -2075,7 +1294,7 @@ - build/AtsNg112/ccsrc/Protocols/Sip + ccsrc/Framework/include false false @@ -2108,7 +1327,7 @@ - ttcn/LibSip/.git/hooks + logs false false @@ -2141,7 +1360,7 @@ - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc + ttcn/AtsBCF false false @@ -2174,7 +1393,7 @@ - build/AtsNg112/ccsrc/EncDec/LibHttp + ttcn/LibEmcom/LibNg112/ttcn false false @@ -2207,7 +1426,7 @@ - ttcn/LibIts/.git/refs/remotes/origin + test_purposes false false @@ -2240,7 +1459,7 @@ - validation + ccsrc/Protocols/Held false false @@ -2273,7 +1492,7 @@ - ttcn/LibIms/.git/refs/remotes/origin + ccsrc false false @@ -2306,7 +1525,7 @@ - ccsrc + ttcn/LibEmcom/LibNg112/json false false @@ -2339,7 +1558,7 @@ - ttcn/LibIts/.git/info + ttcn/LibSip/ttcn false false @@ -2372,7 +1591,7 @@ - build/AtsNg112/ccsrc/Ports/LibSip + ttcn/LibIts false false @@ -2405,7 +1624,7 @@ - build/AtsNg112/ccsrc/Protocols/Pcap + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src false false @@ -2438,7 +1657,7 @@ - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src + ttcn/LibIts/ttcn false false @@ -2471,7 +1690,7 @@ - ttcn/LibIts/.git/logs + ccsrc/Protocols/Lost false false @@ -2504,7 +1723,7 @@ - build/AtsNg112/ccsrc/Protocols/UDP + test_purposes/esrp false false @@ -2537,7 +1756,7 @@ - ttcn/LibSip/.git/objects/pack + ttcn/patch_lib_its false false @@ -2570,7 +1789,7 @@ - ccsrc/Protocols/ETH + test_purposes/psap false false @@ -2603,7 +1822,7 @@ - ttcn/LibCommon/.git/logs/refs/remotes/origin + test_purposes/bcf false false @@ -2636,7 +1855,7 @@ - ttcn/LibIts/.git/logs/refs/remotes + ccsrc/Protocols/ETH false false @@ -2669,7 +1888,7 @@ - ccsrc/EncDec + test_purposes/aml false false @@ -2702,7 +1921,7 @@ - ttcn/LibIts/.git/branches + ccsrc/EncDec false false @@ -2801,7 +2020,7 @@ - ttcn/LibSip/.git/branches + test_purposes/lis false false @@ -2834,7 +2053,7 @@ - ttcn/modules/titan.TestPorts.HTTPmsg + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket false false @@ -2867,7 +2086,7 @@ - build/AtsNg112/ttcn/modules + ttcn/LibIms false false @@ -2900,7 +2119,7 @@ - build/AtsNg112/ccsrc/loggers + etc/AtsPSAP false false @@ -2998,39 +2217,6 @@ - - ttcn/LibIms/.git/refs/tags - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - ttcn/patch_ims_titan @@ -3065,7 +2251,7 @@ - ttcn/LibIts/.git/refs/remotes + ccsrc/Protocols false false @@ -3098,7 +2284,7 @@ - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD + ccsrc/Protocols/Tcp false false @@ -3131,7 +2317,7 @@ - build/AtsNg112/ccsrc/EncDec + ttcn/LibSip false false @@ -3164,7 +2350,7 @@ - ttcn/LibSip/.git/refs + ttcn/LibIts/ttcn/Http false false @@ -3197,7 +2383,7 @@ - docs/TestCodec + ttcn/LibIts/t3q false false @@ -3230,7 +2416,7 @@ - ccsrc/loggers + ccsrc/Protocols/Http false false @@ -3263,7 +2449,7 @@ - ttcn/LibIts/.git/refs/tags + ttcn/patch_lib_common_titan false false @@ -3296,7 +2482,7 @@ - ttcn/LibIts/.git/objects/info + ccsrc/loggers false false @@ -3329,7 +2515,7 @@ - ttcn/patch_lib_http + etc/AtsESRP false false @@ -3362,7 +2548,7 @@ - ttcn/LibIms/.git/refs/heads + ttcn false false @@ -3395,7 +2581,7 @@ - build/AtsNg112/ccsrc/Framework + ttcn/patch_lib_http false false @@ -3428,7 +2614,7 @@ - ttcn/LibCommon/.git/objects/pack + ccsrc/EncDec/LibHttp false false @@ -3461,7 +2647,7 @@ - validation/NG112_Plugtest_2021 + ttcn/AtsPSAP false false @@ -3494,7 +2680,7 @@ - ttcn/LibCommon/.git/logs/refs/heads + ttcn/AtsESRP false false @@ -3527,7 +2713,7 @@ - ttcn/LibIms/.git/refs + ccsrc/Framework/src false false @@ -3560,7 +2746,7 @@ - ttcn/modules/titan.TestPorts.HTTPmsg/module/src + validation/NG112_Plugtest_2021 false false @@ -3593,7 +2779,7 @@ - logs/AtsNg112 + ccsrc/Protocols/UDP false false @@ -3626,7 +2812,7 @@ - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/images + ccsrc/Protocols/Pcap false false @@ -3659,7 +2845,7 @@ - ttcn/LibIts/.git/logs/refs + ttcn/AtsLIS false false @@ -3692,7 +2878,7 @@ - ttcn/LibCommon/.git/logs/refs/remotes + ccsrc/Protocols/Json false false @@ -3725,7 +2911,7 @@ - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc + ccsrc/Protocols/Sip false false @@ -3758,7 +2944,7 @@ - build/AtsNg112/ccsrc/Ports + ttcn/LibEmcom false false @@ -3791,7 +2977,7 @@ - build/AtsNg112/ttcn + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc false false @@ -3857,73 +3043,7 @@ - ttcn/LibCommon/.git/hooks - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/logs/refs/heads - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/objects + etc/AtsECRF false false @@ -3956,7 +3076,7 @@ - build/AtsNg112/ccsrc/Ports/LibHttp + ccsrc/EncDec/LibEmtel false false @@ -3988,8983 +3108,2410 @@ - - ttcn/LibCommon/.git/objects/info - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git/hooks - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - validation/NG112_Plugtest_2019 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/refs/remotes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/refs/remotes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/logs/refs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/patch_sip_titan - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ttcn/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - testdata - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/objects/info - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/refs/tags - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/logs/refs/remotes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git/refs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework/include - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - logs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/xsd - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/refs/remotes/origin - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/refs/tags - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git/logs/refs/heads - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - test_purposes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Held - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/objects/info - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc/Framework/src - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git/objects - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/logs/refs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/logs/refs/remotes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Lost - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/images - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git/logs/refs/remotes/origin - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/hooks - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/objects - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc/Protocols - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/info - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/refs/heads - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/logs/refs/remotes/origin - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Tcp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docker - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/logs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/ttcn/Http - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Http - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/patch_lib_common_titan - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - vagrant - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc/Protocols/ETH - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - scripts - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/logs/refs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc/Protocols/Held - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc/Protocols/Lost - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/refs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/.git/objects/pack - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git/branches - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec/LibHttp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/refs/remotes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework/src - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/UDP - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/logs/refs/heads - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ccsrc/EncDec/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build/AtsNg112/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Pcap - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - build - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Sip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIms/.git/objects/pack - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/.git/objects - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/.git - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - - - ttcn/LibCommon/ttcn/LibCommon_Sync.ttcn - - true - - - - ttcn/LibIms/ttcn/LibIms_Steps.ttcn - - true - - - - ttcn/LibIms/ttcn/LibIms_Templates.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTypes.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_TestSystem.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_XMLTypes.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn - - true - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_XmlTemplates.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_Common.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_EncdecDeclarations.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - - true - - - - ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - - true - - - - ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_Steps.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_Templates.ttcn - - true - - - - ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn - - true - - - - ttcn/LibSip/ttcn/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn - - true - - - - ttcn/LibSip/ttcn/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn - - true - - - - ttcn/LibSip/ttcn/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn - - true - - - - ttcn/LibSip/ttcn/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn - - true - - - - ttcn/LibSip/ttcn/urn_3gpp_ns_cw_1_0.ttcn - - true - - - - ttcn/LibSip/ttcn/urn_ietf_params_xml_ns_common_policy.ttcn - - true - - - - ttcn/LibSip/ttcn/urn_ietf_params_xml_ns_conference_info.ttcn - - true - - - - ttcn/LibSip/ttcn/urn_ietf_params_xml_ns_reginfo.ttcn - - true - - - - ttcn/LibSip/ttcn/urn_ietf_params_xml_ns_resource_lists.ttcn - - true - - - - ttcn/LibSip/ttcn/urn_oma_xml_xdm_common_policy.ttcn - - true - - - - bin/sip_codec_message_body.o - - false - - - - ttcn/LibIts/.git/refs/remotes/origin/HEAD - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.pdf - - false - - - - bin/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc - - false - - - - ccsrc/Ports/LibHttp/HttpPort.cc - - false - - - - build/AtsNg112/LibItsHttp_Templates.o - - false - - - - bin/LibNg112_Steps.o - - false - - - - bin/http_codec.o - - false - - - - ccsrc/Protocols/Sip/sip_codec_register_request.hh - - false - - - - ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc - - false - - - - ttcn/LibSip/xsd/simservs.xsd - - false - - - - bin/LibIms_Interface.cc - - false - - - - build/AtsNg112/LibIms_SIPTypesAndValues.hh - - false - - - - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_comm_div_info.o - - false - - - - ttcn/LibCommon/.git/logs/HEAD - - false - - - - bin/http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc - - false - - - - ccsrc/Protocols/Lost/module.mk - - false - - - - ttcn/LibSip/xsd/pidf.xsd - - false - - - - bin/LibItsHttp_XmlMessageBodyTypes.cc - - false - - - - build/AtsNg112/LibNg112_EncdecDeclarations.hh - - false - - - - build/AtsNg112/urn_oma_xml_xdm_common_policy.cc - - false - - - - ccsrc/Framework/include/base_time.hh - - false - - - - build/AtsNg112/LibSip_SMSFunctions.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_conf.o - - false - - - - build/AtsNg112/LibItsHttp_XMLTypes.o - - false - - - - STF549.tpd - - false - - - - bin/sip_codec_response.o - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_08.log - - false - - - - ttcn/LibSip/xsd/MCID.xsd - - false - - - - bin/tcp_layer.o - - false - - - - ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - - false - - - - bin/LibSip_SMSTemplates.o - - false - - - - ttcn/LibIms/.git/hooks/pre-applypatch.sample - - false - - - - bin/LibSip_SimpleMsgSummaryTypes.cc - - false - - - - bin/LibIms_Templates.hh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.cc - - false - - - - scripts/run_mtc.bash - - false - - - - ccsrc/Protocols/Sip/sip_layer.cc - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_conf.hh - - false - - - - build/AtsNg112/LibCommon_TextStrings.hh - - false - - - - ccsrc/Protocols/Pcap/pcap_layer.cc - - false - - - - build/AtsNg112/http_www_opengis_net_gml.o - - false - - - - bin/LibNg112_TypesAndValues.cc - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_held.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_common_policy.o - - false - - - - ttcn/LibIms/.git/logs/refs/heads/master - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_01.log - - false - - - - ccsrc/Protocols/Http/http_layer.hh - - false - - - - build/AtsNg112/LibItsHttp_JsonTemplates.hh - - false - - - - ccsrc/Protocols/UDP/udp_layer.cc - - false - - - - build/AtsNg112/LibItsHttp_BinaryMessageBodyTypes.hh - - false - - - - build/AtsNg112/LibNg112_Pics.cc - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_conf.cc - - false - - - - bin/NoTargetNamespace.hh - - false - - - - bin/http_uri_etsi_org_ngn_params_xml_comm_div_info.hh - - false - - - - build/AtsNg112/LibSip_Common.cc - - false - - - - scripts/titan_repos.txt - - false - - - - bin/lost_codec.o - - false - - - - bin/layer_factory.o - - false - - - - bin/urn_3gpp_ns_cw_1_0.cc - - false - - - - ccsrc/EncDec/LibSip/module.mk - - false - - - - ccsrc/Framework/include/converter.hh - - false - - - - build/AtsNg112/urn_oma_xml_xdm_common_policy.hh - - false - - - - ttcn/patch_ims_titan/LibIms_Templates.ttcn - - false - - - - ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn - - false - - - - etc/AtsNg112/AtsNg112_Huawei_psap.cfg_ - - false - - - - bin/held_codec.o - - false - - - - build/AtsNg112/LibItsHttp_XmlMessageBodyTypes.o - - false - - - - build/AtsNg112/LibItsHttp_Templates.cc - - false - - - - ttcn/LibIms/.git/hooks/pre-push.sample - - false - - - - build/AtsNg112/LibSip_EncdecDeclarations.cc - - false - - - - ttcn/LibSip/.git/hooks/pre-applypatch.sample - - false - - - - ttcn/LibIts/.git/hooks/pre-receive.sample - - false - - - - bin/LibItsHttp_BinaryTypes.o - - false - - - - bin/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.hh - - false - - - - bin/LibSip_SimpleMsgSummaryTypes.hh - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_09.log - - false - - - - ccsrc/Protocols/Sip/sip_codec_subscribe_request.hh - - false - - - - build/AtsNg112/LibSip_Steps.o - - false - - - - bin/LibIms_Interface.hh - - false - - - - build/AtsNg112/LibIms_SIPTypesAndValues.cc - - false - - - - bin/urn_ietf_params_xml_ns_resource_lists.cc - - false - - - - bin/LibIms_Library.cc - - false - - - - ccsrc/Protocols/Tcp/Abstract_Socket.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd - - false - - - - build/AtsNg112/ccsrc/Protocols/Tcp/tcp_layer.o - - false - - - - bin/LibIms_Library.o - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.adoc - - false - - - - bin/LibSip_Steps_Encdec.o - - false - - - - ccsrc/Protocols/Http/http_layer.cc - - false - - - - test_purposes/psap.tplan2 - - false - - - - bin/XSD.o - - false - - - - build/AtsNg112/ccsrc/Protocols/ETH/ethernet_layer.o - - false - - - - build/AtsNg112/LibNg112_Pics.hh - - false - - - - ttcn/LibIms/.git/hooks/update.sample - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_held_id.cc - - false - - - - bin/LibSip_SIPTypesAndValues.cc - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_reginfo.cc - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PortType.ttcn - - false - - - - bin/LibItsHttp_EncdecDeclarations.o - - false - - - - ttcn/LibSip/.git/hooks/post-update.sample - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_02.log - - false - - - - bin/LibIms_Templates.cc - - false - - - - ccsrc/Ports/LibHttp/HttpPort.hh - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_held.o - - false - - - - ccsrc/Protocols/UDP/module.mk - - false - - - - bin/http_uri_etsi_org_ngn_params_xml_simservs_pstn.hh - - false - - - - build/AtsNg112/LibIms_Library.cc - - false - - - - ccsrc/Protocols/Sip/sip_layer.hh - - false - - - - ttcn/LibSip/.git/hooks/pre-receive.sample - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf.o - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_test.prj - - false - - - - bin/LibItsHttp_JsonMessageBodyTypes.o - - false - - - - ccsrc/Protocols/Pcap/pcap_layer.hh - - false - - - - ttcn/LibSip/xsd/regInfo.xsd - - false - - - - ttcn/LibIms/.git/logs/HEAD - - false - - - - bin/LibNg112_TypesAndValues.hh - - false - - - - build/AtsNg112/LibNg112_TestSystem.o - - false - - - - build/AtsNg112/LibIms_Interface.o - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_conf.o - - false - - - - ttcn/LibCommon/ttcn/LibCommon_DataStrings.ttcn - - false - - - - build/AtsNg112/UsefulTtcn3Types.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_conf.hh - - false - - - - ttcn/LibCommon/.git/info/exclude - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_06.log - - false - - - - bin/urn_ietf_params_xml_ns_resource_lists.hh - - false - - - - build/AtsNg112/LibSip_SimpleMsgSummaryTypes.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn - - false - - - - bin/urn_3gpp_ns_cw_1_0.hh - - false - - - - build/AtsNg112/LibSip_MessageBodyTypes.hh - - false - - - - bin/LibSip_SMSFunctions.cc - - false - - - - bin/LibSip_XMLTypes.hh - - false - - - - build/AtsNg112/LibItsHttp_Pics.hh - - false - - - - bin/LibSip_Library.o - - false - - - - build/AtsNg112/ccsrc/Protocols/Held/held_codec.o - - false - - - - build/AtsNg112/LibIms_Interface.cc - - false - - - - ccsrc/Framework/include/layer.hh - - false - - - - ccsrc/EncDec/LibSip/LibSip_Encdec.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.cc - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn - - false - - - - ttcn/LibSip/.git/hooks/applypatch-msg.sample - - false - - - - build/AtsNg112/LibSip_Interface.cc - - false - - - - bin/pcap_cygwin_layer.o - - false - - - - build/AtsNg112/LibNg112_TestSystem.hh - - false - - - - build/AtsNg112/LibCommon_DataStrings.o - - false - - - - build/AtsNg112/ccsrc/Protocols/Http/http_codec.o - - false - - - - build/AtsNg112/LibCommon_Time.o - - false - - - - build/AtsNg112/LibIms_Templates.hh - - false - - - - build/AtsNg112/ccsrc/Ports/LibHttp/HttpPort.o - - false - - - - ttcn/LibIms/ttcn/LibIms_Library.ttcn - - false - - - - bin/LibItsHttp_XmlMessageBodyTypes.hh - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.pdf - - false - - - - build/AtsNg112/AtsNg112_Steps.cc - - false - - - - build/AtsNg112/LibSip_Templates.cc - - false - - - - test_purposes/esrp.tplan2 - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf.hh - - false - - - - build/AtsNg112/LibItsHttp_TypesAndValues.cc - - false - - - - ttcn/LibIts/.git/objects/pack/pack-751eec2d2be63bf7a0b7d3f6aba6dc523ed4ee60.idx - - false - - - - bin/ethernet_layer.o - - false - - - - build/AtsNg112/XSD.cc - - false - - - - bin/LibCommon_VerdictControl.hh - - false - - - - build/AtsNg112/LibSip_SMSTemplates.o - - false - - - - bin/LibSip_SMSTypesAndValues.o - - false - - - - ttcn/LibCommon/ttcn/LibCommon_Time.ttcn - - false - - - - bin/urn_ietf_params_xml_ns_reginfo.o - - false - - - - ttcn/LibSip/.git/hooks/pre-rebase.sample - - false - - - - ttcn/patch_sip_titan/LibSip_Templates.ttcn - - false - - - - bin/LibIms_Templates.o - - false - - - - bin/http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc - - false - - - - build/AtsNg112/LibNg112_TypesAndValues.o - - false - - - - build/AtsNg112/ccsrc/loggers/loggers.o - - false - - - - bin/urn_ietf_params_xml_ns_pidf.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_held_id.hh - - false - - - - bin/LibSip_SIPTypesAndValues.hh - - false - - - - testdata/SIP_MESSAGE_Request.pcap - - false - - - - bin/LibSip_XMLTypes.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn - - false - - - - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_xcap.cc - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_07.pcapng - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_02.pcapng - - false - - - - bin/LibItsHttp_JsonTemplates.o - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_07.log - - false - - - - build/AtsNg112/LibItsHttp_BinaryMessageBodyTypes.cc - - false - - - - ttcn/LibIts/.git/hooks/fsmonitor-watchman.sample - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd - - false - - - - ccsrc/EncDec/LibHttp/module.mk - - false - - - - build/AtsNg112/LibIms_Interface.hh - - false - - - - build/AtsNg112/UsefulTtcn3Types.cc - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn - - false - - - - ttcn/patch_lib_http/LibItsHttp_BinaryTypes.ttcn - - false - - - - build/AtsNg112/LibNg112_TestSystem.cc - - false - - - - build/AtsNg112/LibCommon_Sync.o - - false - - - - bin/LibItsHttp_BinaryMessageBodyTypes.o - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_held_id.o - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_13.log - - false - - - - ttcn/LibIms/.git/hooks/applypatch-msg.sample - - false - - - - build/AtsNg112/LibSip_Templates.hh - - false - - - - etc/AtsNg112/AtsNg112_Gridgears_ecrf.cfg_ - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/Makefile - - false - - - - README.md - - false - - - - docker/build-container.sh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf.cc - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10.hh - - false - - - - build/AtsNg112/LibCommon_TextStrings.cc - - false - - - - bin/LibItsHttp_XmlTemplates.cc - - false - - - - ccsrc/Protocols/UDP/udp_layer.hh - - false - - - - bin/LibCommon_Time.hh - - false - - - - ttcn/LibIms/.git/packed-refs - - false - - - - bin/compile-all - - false - - - - bin/http_uri_etsi_org_ngn_params_xml_simservs_xcap.hh - - false - - - - ttcn/LibIts/module.mk - - false - - - - bin/converter.o - - false - - - - bin/urn_3gpp_ns_cw_1_0.o - - false - - - - build/AtsNg112/LibSip_Interface.hh - - false - - - - bin/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.o - - false - - - - ccsrc/Protocols/Tcp/Abstract_Socket.cc - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Steps.ttcn - - false - - - - ttcn/LibCommon/.git/packed-refs - - false - - - - build/AtsNg112/LibIms_Templates.cc - - false - - - - ttcn/AtsNg112/AtsNg112_TestCases.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/xml.xsd - - false - - - - build/AtsNg112/LibItsHttp_Functions.o - - false - - - - bin/sip_codec_headers.o - - false - - - - ttcn/LibIms/.git/index - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk - - false - - - - ttcn/LibCommon/.git/hooks/fsmonitor-watchman.sample - - false - - - - bin/LibCommon_BasicTypesAndValues.cc - - false - - - - etc/AtsNg112/AtsNg112_Gridgears_lis.cfg_ - - false - - - - bin/LibNg112_Templates.o - - false - - - - build/AtsNg112/LibItsHttp_Templates.hh - - false - - - - bin/LibCommon_VerdictControl.cc - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_conf.cc - - false - - - - build/AtsNg112/ccsrc/Protocols/Sip/sip_layer.o - - false - - - - bin/LibItsHttp_MessageBodyTypes.cc - - false - - - - bin/sip_codec_request.o - - false - - - - build/AtsNg112/LibNg112_Pics.o - - false - - - - bin/LibIms_Steps.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_common_policy.cc - - false - - - - ttcn/LibCommon/module.mk - - false - - - - ttcn/LibIms/module.mk - - false - - - - ccsrc/Framework/include/layer_factory.hh - - false - - - - bin/LibCommon_BasicTypesAndValues.hh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd - - false - - - - build/AtsNg112/NoTargetNamespace.hh - - false - - - - ccsrc/Framework/include/codec.hh - - false - - - - build/AtsNg112/LibCommon_Time.hh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_resource_lists.o - - false - - - - ttcn/LibIts/.git/hooks/pre-applypatch.sample - - false - - - - ttcn/LibIts/.git/hooks/pre-rebase.sample - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/.git - - false - - - - ttcn/LibSip/xsd/ACR_CB.xsd - - false - - - - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_message_body.o - - false - - - - ccsrc/Protocols/Sip/sip_codec_request.cc - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/Abstract_Socket_CNL113384.tpd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC5139_pdif_geopriv10_civic_address.xsd - - false - - - - docs/TestCodec/o2.cfg - - false - - - - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc - - false - - - - ccsrc/Protocols/Pcap/pcap_linux_layer.cc - - false - - - - ttcn/LibSip/.git/info/exclude - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_12.log - - false - - - - bin/LibNg112_Pixits.hh - - false - - - - docker/Dockerfile - - false - - - - ttcn/LibIms/.git/logs/refs/remotes/origin/HEAD - - false - - - - bin/LibCommon_DataStrings.hh - - false - - - - ttcn/LibIms/.git/hooks/fsmonitor-watchman.sample - - false - - - - ccsrc/Protocols/Http/http_layer_factory.hh - - false - - - - bin/LibSip_SMSFunctions.hh - - false - - - - bin/LibSip_Templates.cc - - false - - - - ttcn/LibIms/.git/hooks/commit-msg.sample - - false - - - - bin/urn_oma_xml_xdm_common_policy.cc - - false - - - - build/AtsNg112/LibItsHttp_Functions.cc - - false - - - - ttcn/LibEmcom/LibNg112/module.mk - - false - - - - ttcn/LibIts/ttcn/Http/module.mk - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn - - false - - - - ttcn/LibCommon/.git/hooks/prepare-commit-msg.sample - - false - - - - bin/LibNg112_Functions.cc - - false - - - - bin/urn_ietf_params_xml_ns_conference_info.o - - false - - - - bin/LibIms_Interface.o - - false - - - - build/AtsNg112/LibSip_SMSTemplates.cc - - false - - - - ttcn/LibSip/xsd/CDIVN.xsd - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_held_id.cc - - false - - - - build/AtsNg112/ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.o - - false - - - - ttcn/LibCommon/.git/refs/heads/master - - false - - - - ttcn/LibCommon/.git/logs/refs/remotes/origin/HEAD - - false - - - - bin/LibItsHttp_XmlTemplates.hh - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_conference_info.o - - false - - - - build/AtsNg112/ccsrc/Framework/src/converter.o - - false - - - - ttcn/LibIts/.git/HEAD - - false - - - - build/AtsNg112/LibItsHttp_XmlTemplates.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn - - false - - - - bin/LibItsHttp_Functions.o - - false - - - - build/AtsNg112/UsefulTtcn3Types.hh - - false - - - - ttcn/patch_ims_titan/LibIms_Steps.ttcn - - false - - - - bin/http_www_opengis_net_gml.hh - - false - - - - ttcn/LibCommon/.git/HEAD - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn - - false - - - - build/AtsNg112/AtsNg112_TestControl.o - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd - - false - - - - testdata/SIP_STATUS_100trying.pcap - - false - - - - build/AtsNg112/LibSip_MessageBodyTypes.cc - - false - - - - bin/base_time.o - - false - - - - ttcn/LibCommon/.git/logs/refs/heads/master - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_03.pcapng - - false - - - - build/AtsNg112/http_www_opengis_net_pidflo_1_0.o - - false - - - - bin/LibCommon_BasicTypesAndValues.o - - false - - - - build/AtsNg112/LibItsHttp_BinaryTemplates.o - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.hh - - false - - - - build/AtsNg112/LibIms_Steps.cc - - false - - - - build/AtsNg112/LibNg112_Steps.hh - - false - - - - bin/udp_layer.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_lost1.o - - false - - - - ttcn/LibSip/.git/objects/pack/pack-13ca218939aff4e87685d613a8720860f7ebc078.idx - - false - - - - ccsrc/Protocols/Pcap/module.mk - - false - - - - ttcn/LibIts/.git/hooks/prepare-commit-msg.sample - - false - - - - bin/LibSip_SMSFunctions.o - - false - - - - bin/LibNg112_TypesAndValues.o - - false - - - - ttcn/LibIts/.git/objects/pack/pack-751eec2d2be63bf7a0b7d3f6aba6dc523ed4ee60.pack - - false - - - - build/AtsNg112/LibItsHttp_JsonTemplates.o - - false - - - - ttcn/LibIts/.git/hooks/post-update.sample - - false - - - - build/AtsNg112/NoTargetNamespace.cc - - false - - - - build/AtsNg112/ccsrc/EncDec/LibSip/LibSip_Encdec.o - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.key - - false - - - - .gitignore - - false - - - - build/AtsNg112/LibCommon_DataStrings.hh - - false - - - - build/AtsNg112/LibItsHttp_Pics.cc - - false - - - - build/AtsNg112/LibItsHttp_Pics.o - - false - - - - build/AtsNg112/LibSip_SMSFunctions.hh - - false - - - - ccsrc/Protocols/Sip/sip_codec_request.hh - - false - - - - build/AtsNg112/LibItsHttp_XmlTemplates.cc - - false - - - - build/AtsNg112/LibItsHttp_XmlTemplates.o - - false - - - - testdata/SIP_BYE_Request.pcap - - false - - - - bin/LibItsHttp_TypesAndValues.hh - - false - - - - ttcn/LibIts/.git/description - - false - - - - bin/http_www_opengis_net_gml.cc - - false - - - - build/AtsNg112/LibNg112_Templates.o - - false - - - - bin/LibCommon_DataStrings.cc - - false - - - - bin/LibSip_Templates.hh - - false - - - - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_subscribe_request.o - - false - - - - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_xcap.hh - - false - - - - ccsrc/Protocols/Lost/lost_codec.cc - - false - - - - ttcn/LibIts/.git/refs/heads/cygwin - - false - - - - bin/LibItsHttp_MessageBodyTypes.hh - - false - - - - build/AtsNg112/AtsNg112_Steps.hh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_common_policy.hh - - false - - - - bin/LibItsHttp_JSONTypes.hh - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn - - false - - - - ttcn/LibIts/.git/index - - false - - - - ttcn/LibCommon/ttcn/LibCommon_VerdictControl.ttcn - - false - - - - ttcn/LibSip/xsd/pidf_lo.xsd - - false - - - - build/AtsNg112/XSD.hh - - false - - - - build/AtsNg112/LibCommon_BasicTypesAndValues.o - - false - - - - build/AtsNg112/LibCommon_Time.cc - - false - - - - bin/LibSip_XMLTypes.o - - false - - - - build/AtsNg112/LibSip_SMSTemplates.hh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_reginfo.hh - - false - - - - build/AtsNg112/LibSip_EncdecDeclarations.hh - - false - - - - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_mcid.o - - false - - - - ccsrc/Protocols/ETH/ethernet_layer.cc - - false - - - - ttcn/LibCommon/ttcn/LibCommon_AbstractData.ttcn - - false - - - - ttcn/LibIts/.git/hooks/applypatch-msg.sample - - false - - - - build/AtsNg112/LibSip_SDPTypes.o - - false - - - - etc/AtsNg112/AtsNg112_test_lis.cfg_ - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_01_11.log - - false - - - - bin/sip_codec_bye_request.o - - false - - - - bin/pcap_offline_layer.o - - false - - - - test_purposes/lis.tplan2 - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn - - false - - - - bin/LibSip_SMSTemplates.hh - - false - - - - build/AtsNg112/LibNg112_Steps.o - - false - - - - ccsrc/Protocols/Sip/sip_codec_bye_request.hh - - false - - - - ttcn/LibSip/xsd/TIP-TIR.xsd - - false - - - - bin/LibIms_SIPTypesAndValues.o - - false - - - - testdata/SIP_REGISTER_Request.pcap - - false - - - - ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn - - false - - - - ccsrc/Protocols/Sip/sip_codec_message_body.hh - - false - - - - .project - - false - - - - bin/LibCommon_AbstractData.o - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.cc - - false - - - - build/AtsNg112/LibNg112_TypesAndValues.hh - - false - - - - ccsrc/Protocols/Http/module.mk - - false - - - - ttcn/LibIms/LICENSE - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn - - false - - - - ttcn/LibIms/.git/hooks/pre-receive.sample - - false - - - - ttcn/LibSip/.git/logs/refs/remotes/origin/HEAD - - false - - - - ttcn/LibSip/module.mk~ - - false - - - - bin/NoTargetNamespace.o - - false - - - - build/AtsNg112/LibNg112_EncdecDeclarations.cc - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_held.hh - - false - - - - bin/LibItsHttp_JSONTypes.o - - false - - - - ttcn/LibIts/.git/logs/refs/remotes/origin/HEAD - - false - - - - build/AtsNg112/AtsNg112_TestControl.cc - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/README.md - - false - - - - build/AtsNg112/LibSip_Library.hh - - false - - - - bin/LibItsHttp_JSONTypes.cc - - false - - - - bin/http_uri_etsi_org_ngn_params_xml_simservs_pstn.cc - - false - - - - build/AtsNg112/LibIms_Library.hh - - false - - - - ccsrc/Protocols/Sip/sip_codec_subscribe_request.cc - - false - - - - build/AtsNg112/http_www_w3_org_XML_1998_namespace.o - - false - - - - bin/http_www_opengis_net_pidflo_1_0.hh - - false - - - - ccsrc/Protocols/Held/held_codec_factory.hh - - false - - - - build/AtsNg112/LibSip_PIXITS.cc - - false - - - - ttcn/LibCommon/.git/hooks/update.sample - - false - - - - ccsrc/Ports/LibHttp/module.mk - - false - - - - bin/LibItsHttp_JsonMessageBodyTypes.hh - - false - - - - bin/sip_codec_register_request.o - - false - - - - ttcn/LibSip/.git/hooks/commit-msg.sample - - false - - - - bin/urn_ietf_params_xml_ns_pidf.cc - - false - - - - build/AtsNg112/LibNg112_Pixits.o - - false - - - - bin/LibCommon_TextStrings.cc - - false - - - - bin/LibSip_SMSFunctions_Encdec.o - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test_no_ASPs.ttcn - - false - - - - vagrant/provisioner.bash - - false - - - - ttcn/LibCommon/LICENSE - - false - - - - ttcn/LibSip/.git/refs/remotes/origin/HEAD - - false - - - - ttcn/LibSip/.git/hooks/update.sample - - false - - - - ccsrc/Framework/include/codec_factory.hh - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen.ttcn - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/LICENSE - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn - - false - - - - ccsrc/Protocols/Sip/sip_codec_bye_request.cc - - false - - - - ccsrc/Protocols/Lost/lost_codec.hh - - false - - - - test_purposes/ecrf.tplan2 - - false - - - - ttcn/LibCommon/.git/hooks/pre-rebase.sample - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.adoc - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_05.pcapng - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10.o - - false - - - - ttcn/patch_sip_titan/LibSip_XMLTypes.ttcn - - false - - - - bin/urn_ietf_params_xml_ns_lost1.o - - false - - - - ttcn/LibSip/xsd/CONF.xsd - - false - - - - ttcn/LibIms/.git/config - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.hh - - false - - - - bin/AtsNg112_TestCases.o - - false - - - - bin/LibItsHttp_TestSystem.o - - false - - - - ccsrc/Protocols/Sip/sip_codec_response.hh - - false - - - - bin/LibItsHttp_XMLTypes.o - - false - - - - build/AtsNg112/LibCommon_DataStrings.cc - - false - - - - bin/urn_ietf_params_xml_ns_geopriv_held.cc - - false - - - - bin/LibSip_SIPTypesAndValues.o - - false - - - - etc/AtsNg112/AtsNg112_Intersys_lis.cfg_ - - false - - - - representations.aird - - false - - - - bin/codec_stack_builder.o - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn - - false - - - - ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd - - false - - - - test_purposes/lis.txt - - false - - - - bin/LibNg112_Functions.hh - - false - - - - build/AtsNg112/LibSip_PIXITS.o - - false - - - - bin/LibSip_SMSTemplates.cc - - false - - - - bin/LibItsHttp_JsonMessageBodyTypes.cc - - false - - - - ttcn/LibSip/xsd/geopriv10basic.xsd - - false - - - - build/AtsNg112/LibCommon_BasicTypesAndValues.hh - - false - - - - build/AtsNg112/LibItsHttp_JSONTypes.o - - false - - - - bin/urn_ietf_params_xml_ns_pidf.hh - - false - - - - ccsrc/Protocols/Sip/sip_codec_message_body.cc - - false - - - - ttcn/LibIts/.git/config - - false - - - - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_invite_request.o - - false - - - - bin/params.o - - false - - - - bin/LibSip_Common.cc - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn - - false - - - - ccsrc/Protocols/Pcap/pcap_linux_layer.hh - - false - - - - bin/NoTargetNamespace.cc - - false - - - - build/AtsNg112/LibCommon_TextStrings.o - - false - - - - ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn - - false - - - - build/AtsNg112/ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.o - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn - - false - - - - build/AtsNg112/AtsNg112_TestControl.hh - - false - - - - bin/urn_oma_xml_xdm_common_policy.hh - - false - - - - vagrant/Vagrantfile - - false - - - - build/AtsNg112/LibItsHttp_Functions.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn - - false - - - - ccsrc/Ports/LibSip/OperatorPort.hh - - false - - - - bin/LibSip_Common.o - - false - - - - build/AtsNg112/LibNg112_Steps.cc - - false - - - - ccsrc/Framework/src/layer_factory.cc - - false - - - - etc/AtsNg112/AtsNg112.cfg - - false - - - - bin/http_www_opengis_net_pidflo_1_0.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn - - false - - - - bin/sip_codec_message_request.o - - false - - - - build/AtsNg112/LibSip_PIXITS.hh - - false - - - - bin/LibCommon_AbstractData.hh - - false - - - - bin/LibNg112_EncdecDeclarations.hh - - false - - - - bin/LibNg112_EncdecDeclarations.o - - false - - - - ttcn/LibIms/.git/info/exclude - - false - - - - ttcn/LibSip/.git/logs/refs/heads/master - - false - - - - ttcn/LibSip/.git/hooks/pre-commit.sample - - false - - - - bin/urn_ietf_params_xml_ns_conference_info.cc - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_resource_lists.cc - - false - - - - bin/LibCommon_TextStrings.hh - - false - - - - ttcn/patch_sip_titan/LibSip_Common.ttcn - - false - - - - bin/http_www_w3_org_XML_1998_namespace.o - - false - - - - build/AtsNg112/LibSip_SDPTypes.hh - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_held_id.o - - false - - - - build/AtsNg112/ccsrc/Protocols/Pcap/pcap_offline_layer.o - - false - - - - ttcn/LibSip/ttcn/LibSip_Interface.ttcn - - false - - - - ccsrc/Protocols/ETH/ethernet_layer_factory.hh - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn - - false - - - - bin/LibItsHttp_Pics.hh - - false - - - - test_purposes/esrp.txt - - false - - - - build/AtsNg112/LibCommon_AbstractData.hh - - false - - - - testdata/SIP_INVITE_Request_sdp.pcap - - false - - - - logs/AtsNg112/merged.2021021825.log - - false - - - - build/AtsNg112/LibIms_Templates.o - - false - - - - ccsrc/Protocols/ETH/module.mk - - false - - - - bin/LibCommon_Time.o - - false - - - - build/AtsNg112/LibNg112_EncdecDeclarations.o - - false - - - - build/AtsNg112/ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.o - - false - - - - bin/LibSip_Common.hh - - false - - - - build/AtsNg112/http_www_opengis_net_gml.cc - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_held.hh - - false - - - - build/AtsNg112/http_www_w3_org_XML_1998_namespace.cc - - false - - - - build/AtsNg112/LibItsHttp_XmlMessageBodyTypes.cc - - false - - - - ttcn/LibIms/.git/hooks/post-update.sample - - false - - - - ttcn/LibSip/xsd/OIP-OIR.xsd - - false - - - - ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh - - false - - - - validation/NG112_Plugtest_2021/TC_ECRF_HTTP_POST_BV_01_Gridgears.log - - false - - - - bin/LibItsHttp_Templates.cc - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.cc - - false - - - - build/AtsNg112/LibNg112_Functions.o - - false - - - - build/AtsNg112/LibSip_Library.o - - false - - - - ccsrc/Framework/module.mk - - false - - - - bin/UsefulTtcn3Types.o - - false - - - - ttcn/LibCommon/.git/config - - false - - - - ttcn/LibSip/xsd/SupplementaryServices.xsd - - false - - - - ttcn/LibSip/.git/logs/HEAD - - false - - - - bin/LibSip_PIXITS.hh - - false - - - - ttcn/patch_lib_http/LibItsHttp_BinaryTemplates.ttcn - - false - - - - ttcn/LibIms/.git/refs/heads/master - - false - - - - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_request.o - - false - - - - logs/AtsNg112/AtsNg112.FSCOM-DEV-mtc.log - - false - - - - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_01.log - - false - - - - build/AtsNg112/LibNg112_TypesAndValues.cc - - false - - - - ttcn/AtsNg112/AtsNg112_TestControl.ttcn - - false - - - - bin/LibItsHttp_BinaryTemplates.hh - - false - - - - bin/LibSip_EncdecDeclarations.cc - - false - - - - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_PRI.doc - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_JsonTemplates.ttcn - - false - - - - build/AtsNg112/LibItsHttp_JsonMessageBodyTypes.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn - - false - - - - build/AtsNg112/LibCommon_BasicTypesAndValues.cc - - false - - - - bin/AtsNg112_TestControl.hh - - false - - - - ttcn/LibSip/.git/description - - false - - - - bin/loggers.o - - false - - - - ccsrc/Framework/src/converter.cc - - false - - - - build/AtsNg112/ccsrc/Protocols/UDP/udp_layer.o - - false - - - - bin/http_www_opengis_net_gml.o - - false - - - - bin/LibItsHttp_JsonTemplates.cc - - false - - - - ccsrc/Protocols/Held/held_codec.hh - - false - - - - bin/LibSip_Steps.cc - - false - - - - ccsrc/Ports/LibSip/SipPort.cc - - false - - - - STF549_ng112_win.tpd - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/images/Overview.png - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_06.pcapng - - false - - - - bin/LibSip_Encdec.o - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/HTTPmsg_CNL113312_PRI_2.doc - - false - - - - bin/LibItsHttp_Templates.o - - false - - - - build/AtsNg112/LibItsHttp_JsonMessageBodyTypes.o - - false - - - - build/AtsNg112/http_www_w3_org_XML_1998_namespace.hh - - false - - - - bin/LibItsHttp_BinaryTypes.hh - - false - - - - build/AtsNg112/LibItsHttp_XmlMessageBodyTypes.hh - - false - - - - bin/LibItsHttp_BinaryMessageBodyTypes.hh - - false - - - - bin/LibCommon_DataStrings.o - - false - - - - etc/AtsNg112/AtsNg112_Beta80_ecrp.cfg_ - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_01.pcapng - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.hh - - false - - - - build/AtsNg112/LibCommon_Sync.cc - - false - - - - ccsrc/Protocols/UDP/udp_layer_factory.hh - - false - - - - LICENSE - - false - - - - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.o - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/.git - - false - - - - build/AtsNg112/AtsNg112_TestCases.cc - - false - - - - build/AtsNg112/LibSip_MessageBodyTypes.o - - false - - - - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_mcid.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.ttcn - - false - - - - ccsrc/Protocols/Held/module.mk - - false - - - - ccsrc/Protocols/ETH/ethernet_layer.hh - - false - - - - build/AtsNg112/LibSip_Library.cc - - false - - - - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/images/Overview.png - - false - - - - build/AtsNg112/LibIms_Library.o - - false - - - - ttcn/LibSip/.git/hooks/fsmonitor-watchman.sample - - false - - - - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_07.log - - false - - - - bin/LibItsHttp_Pics.cc - - false - - - - ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn - - false - - - - build/AtsNg112/ccsrc/Protocols/Http/http_layer.o - - false - - - - build/AtsNg112/http_www_opengis_net_pidflo_1_0.hh - - false - - - - ttcn/LibCommon/.git/hooks/applypatch-msg.sample - - false - - + + - build/AtsNg112/LibItsHttp_BinaryTemplates.hh + ttcn/LibCommon/ttcn/LibCommon_Sync.ttcn - false + true - testdata/SIP_INVITE_Request.pcap + ttcn/LibIms/ttcn/LibIms_Steps.ttcn - false + true - build/AtsNg112/http_www_opengis_net_gml.hh + ttcn/LibIms/ttcn/LibIms_Templates.ttcn - false + true - build/AtsNg112/urn_ietf_params_xml_ns_geopriv_held.cc + ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn - false + true - bin/LibSip_Library.cc + ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn - false + true - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_10.log + ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTypes.ttcn - false + true - build/AtsNg112/LibItsHttp_BinaryTypes.hh + ttcn/LibIts/ttcn/Http/LibItsHttp_JSONTypes.ttcn - false + true - ttcn/LibIms/.git/objects/pack/pack-a1a178fa8f0274d030723ec432c4241683c34b05.pack + ttcn/LibIts/ttcn/Http/LibItsHttp_JsonMessageBodyTypes.ttcn - false + true - bin/urn_ietf_params_xml_ns_reginfo.cc + ttcn/LibIts/ttcn/Http/LibItsHttp_JsonTemplates.ttcn - false + true - ccsrc/Protocols/Held/held_codec.cc + ttcn/LibIts/ttcn/Http/LibItsHttp_Templates.ttcn - false + true - ttcn/LibSip/xsd/xml.xsd + ttcn/LibIts/ttcn/Http/LibItsHttp_TestSystem.ttcn - false + true - ccsrc/Protocols/Pcap/pcap_layer_factory.hh + ttcn/LibIts/ttcn/Http/LibItsHttp_TypesAndValues.ttcn - false + true - bin/http_www_w3_org_XML_1998_namespace.cc + ttcn/LibIts/ttcn/Http/LibItsHttp_XMLTypes.ttcn - false + true - bin/LibItsHttp_TestSystem.cc + ttcn/LibIts/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn - false + true - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_ack_request.o + ttcn/LibIts/ttcn/Http/LibItsHttp_XmlTemplates.ttcn - false + true - bin/LibSip_PIXITS.cc + ttcn/LibSip/ttcn/LibSip_Common.ttcn - false + true - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn + ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn - false + true - test_purposes/references.txt + ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn - false + true - bin/LibCommon_Sync.cc + ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn - false + true - build/AtsNg112/LibSip_SIPTypesAndValues.hh + ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn - false + true - build/AtsNg112/LibSip_EncdecDeclarations.o + ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - false + true - build/AtsNg112/AtsNg112_TestCases.o + ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - false + true - logs/AtsNg112/AtsNg112.FSCOM-DEV-hc.log + ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - false + true - ttcn/LibCommon/.git/hooks/pre-push.sample + ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - false + true - build/AtsNg112/urn_3gpp_ns_cw_1_0.o + ttcn/LibSip/ttcn/LibSip_Steps.ttcn - false + true - ccsrc/Protocols/Sip/sip_codec_response.cc + ttcn/LibSip/ttcn/LibSip_Templates.ttcn - false + true - build/AtsNg112/LibItsHttp_BinaryMessageBodyTypes.o + ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn - false + true - bin/urn_ietf_params_xml_ns_geopriv_held_id.hh + ccsrc/Ports/LibHttp/HttpPort.cc false - bin/AtsNg112_TestControl.o + ttcn/patch_sip_titan/LibSip_Common.ttcn false - bin/LibNg112_Pics.o + ccsrc/Protocols/Sip/sip_codec_register_request.hh false - build/AtsNg112/LibCommon_VerdictControl.o + ttcn/LibIts/ttcn/Http/LibItsHttp_Pixits.ttcn false - build/AtsNg112/LibNg112_Functions.hh + ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc false - bin/LibNg112_Templates.cc + ttcn/LibSip/ttcn/LibSip_Interface.ttcn false - docs/AtsNg112/o2.cfg + test_purposes/lis/lis_commons.tplan2 false - ttcn/LibIts/ttcn/Http/LibItsHttp_JsonMessageBodyTypes.ttcn + ttcn/LibSip/xsd/simservs.xsd false - build/AtsNg112/urn_ietf_params_xml_ns_conference_info.hh + ccsrc/Protocols/ETH/ethernet_layer_factory.hh false - build/AtsNg112/ccsrc/Framework/src/params.o + ttcn/LibIts/ttcn/Common/module.mk false - ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn + ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn false - bin/sip_codec_options_request.o + ccsrc/Protocols/Lost/module.mk false - ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn + testdata/SIP_INVITE_Request_sdp.pcap false - bin/LibSip_Steps.hh + ttcn/LibSip/xsd/pidf.xsd false - bin/LibItsHttp_EncdecDeclarations.cc + ttcn/AtsECRF/AtsECRF_Functions.ttcn false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_GET_BV_01.log + ccsrc/Framework/include/base_time.hh false - ttcn/LibCommon/.git/index + ccsrc/Protocols/ETH/module.mk false - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc + ttcn/LibSip/xsd/OIP-OIR.xsd false - ttcn/LibSip/xsd/PSTN.xsd + ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh false - build/AtsNg112/LibSip_SMSTypesAndValues.o + validation/NG112_Plugtest_2021/TC_ECRF_HTTP_POST_BV_01_Gridgears.log false - build/AtsNg112/ccsrc/Ports/LibSip/SipPort.o + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_08.log false - ttcn/patch_sip_titan/LibSip_PIXITS.ttcn + ccsrc/Framework/module.mk false - bin/urn_ietf_params_xml_ns_resource_lists.o + test_purposes/esrp/esrp_commons.tplan2 false - ttcn/LibCommon/.git/hooks/commit-msg.sample + ttcn/LibSip/xsd/MCID.xsd false - ttcn/LibCommon/.git/refs/remotes/origin/HEAD + ttcn/LibSip/xsd/SupplementaryServices.xsd false - bin/LibSip_MessageBodyTypes.o + ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn false - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_11.log + ttcn/patch_lib_http/LibItsHttp_BinaryTemplates.ttcn false - build/AtsNg112/LibCommon_AbstractData.o + scripts/run_mtc.bash false - build/AtsNg112/ccsrc/Protocols/Lost/lost_codec.o + ccsrc/Protocols/Sip/sip_layer.cc false - bin/LibCommon_Sync.hh + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_01.log false - bin/urn_ietf_params_xml_ns_pidf_geopriv10.o + ccsrc/Protocols/Pcap/pcap_layer.cc false - build/AtsNg112/LibItsHttp_BinaryTypes.o + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_PRI.doc false - bin/LibIms_SIPTypesAndValues.cc + ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn false - bin/sip_codec_ack_request.o + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_01.log false - bin/LibItsHttp_Templates.hh + ccsrc/Protocols/Http/http_layer.hh false - etc/AtsNg112/AtsNg112_Beta80_lis.cfg_ + ttcn/AtsLIS/AtsLIS_Pics.ttcn false - ttcn/LibIts/.git/hooks/pre-commit.sample + ccsrc/Protocols/UDP/udp_layer.cc false - .TITAN_properties + ccsrc/Framework/src/converter.cc false - bin/LibNg112_EncdecDeclarations.cc + etsi_ng112_win.tpd false - testdata/SIP_STATUS_200ok.pcap + ccsrc/Protocols/Held/held_codec.hh false - ttcn/LibSip/.git/refs/heads/master + ccsrc/Ports/LibSip/SipPort.cc false - ttcn/LibIts/.git/info/exclude + test_purposes/lis/lis.txt false - bin/LibSip_MessageBodyTypes.hh + scripts/titan_repos.txt false - build/AtsNg112/ccsrc/Framework/src/base_time.o + ccsrc/EncDec/LibSip/module.mk false - build/AtsNg112/LibItsHttp_BinaryTypes.cc + ccsrc/Framework/include/converter.hh false - bin/LibSip_Steps.o + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_06.pcapng false - build/AtsNg112/LibItsHttp_EncdecDeclarations.cc + ttcn/patch_ims_titan/LibIms_Templates.ttcn false - build/AtsNg112/LibIms_Steps.hh + ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn false - bin/LibItsHttp_TypesAndValues.cc + etc/AtsPSAP/AtsNg112_Frequentis_psap.cfg_ false - build/AtsNg112/ccsrc/Protocols/Pcap/pcap_cygwin_layer.o + ttcn/AtsPSAP/AtsPSAP_TestCases.ttcn false - ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_01.pcapng false - build/AtsNg112/LibCommon_Sync.hh + ccsrc/Protocols/UDP/udp_layer_factory.hh false - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_options_request.o + LICENSE false - etc/AtsNg112/AtsNg112_Frequentis_esrp.cfg_ + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.ttcn false - ttcn/LibIms/.git/hooks/pre-commit.sample + ttcn/LibEmcom/LibNg112/json/LibNg112_SubscriptionPayloads.ttcn false - ttcn/LibSip/.git/hooks/pre-push.sample + ccsrc/Protocols/Held/module.mk false - bin/LibNg112_TestSystem.cc + ccsrc/Protocols/ETH/ethernet_layer.hh false - scripts/build_titan.bash + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_09.log false - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_pstn.o + ccsrc/Protocols/Sip/sip_codec_subscribe_request.hh false - ttcn/LibSip/.git/hooks/prepare-commit-msg.sample + ccsrc/EncDec/LibEmtel/LibNg112_EncDec.cc false - build/AtsNg112/LibItsHttp_JsonMessageBodyTypes.cc + ccsrc/EncDec/LibEmtel/module.mk false - build/AtsNg112/ccsrc/Framework/src/layer_factory.o + ttcn/AtsESRP/AtsESRP_Steps.ttcn false - ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_07.log false - ccsrc/Protocols/Lost/lost_codec_factory.hh + ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn false - build/AtsNg112/LibSip_SIPTypesAndValues.cc + test_purposes/ecrf/ecrf_tps.tplan2.docx false - bin/LibSip_MessageBodyTypes.cc + ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd false - bin/http_uri_etsi_org_ngn_params_xml_simservs_mcid.o + ttcn/AtsPSAP/module.mk false - ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd + ccsrc/Protocols/Http/http_layer.cc false - bin/LibNg112_Pixits.cc + scripts/f.bash false - ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc + testdata/SIP_INVITE_Request.pcap false - ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn + test_purposes/psap/psap_commons.tplan2 false - bin/Makefile.bak + ttcn/patch_ims_titan/module.mk false - build/AtsNg112/http_www_opengis_net_pidflo_1_0.cc + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_10.log false - etc/AtsNg112/AtsNg112_Intersys_lis.cfg_~ + ccsrc/Protocols/Held/held_codec.cc false - build/AtsNg112/LibNg112_Functions.cc + ttcn/LibSip/xsd/xml.xsd false - build/AtsNg112/LibSip_SMSFunctions.cc + ccsrc/Protocols/Pcap/pcap_layer_factory.hh false - bin/urn_ietf_params_xml_ns_conference_info.hh + etc/AtsESRP/AtsNg112_Frequentis_esrp.cfg_ false - ttcn/LibIts/.git/hooks/commit-msg.sample + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn false - bin/LibNg112_Templates.hh + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_02.log false - ccsrc/Protocols/Sip/sip_codec_headers.hh + ccsrc/Protocols/Json/json_codec.cc false - ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd + test_purposes/references.txt false - scripts/devenv.bash.ubuntu + ccsrc/Ports/LibHttp/HttpPort.hh false - ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd + ccsrc/Protocols/UDP/module.mk false - bin/LibItsHttp_EncdecDeclarations.hh + ccsrc/Protocols/Sip/sip_layer.hh false - build/AtsNg112/ccsrc/Protocols/Pcap/pcap_layer.o + ccsrc/Protocols/Sip/sip_codec_response.cc false - build/AtsNg112/AtsNg112_TestCases.hh + logs/README.md false - build/AtsNg112/LibCommon_AbstractData.cc + ccsrc/Protocols/Pcap/pcap_layer.hh false - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_register_request.o + ttcn/LibSip/xsd/regInfo.xsd false - ttcn/LibEmcom/LibNg112/xsd/measures.xsd + ttcn/AtsLIS/module.mk false - build/AtsNg112/ccsrc/Framework/src/codec_stack_builder.o + ttcn/LibIts/t3q/t3q_ITS.xml false - build/AtsNg112/ccsrc/Protocols/Pcap/pcap_linux_layer.o + ttcn/LibCommon/ttcn/LibCommon_DataStrings.ttcn false - bin/urn_ietf_params_xml_ns_common_policy.cc + ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn false - ttcn/LibIms/.git/refs/remotes/origin/HEAD + etc/AtsPSAP/AtsNg112_Huawei_psap.cfg_ false - ttcn/LibIts/ttcn/Http/LibItsHttp_EncdecDeclarations.ttcn + ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn false - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_pstn.hh + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_06.log false - ccsrc/Ports/LibSip/SipPort.hh + validation/NG112_Plugtest_2019/TC_LIS_HTTP_GET_BV_01.log false - bin/XSD.cc + ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn false - bin/LibNg112_TestSystem.hh + test_purposes/psap/psap.txt false - ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn + ttcn/AtsESRP/AtsESRP_Templates.ttcn false - bin/http_uri_etsi_org_ngn_params_xml_simservs_xcap.o + ttcn/LibSip/xsd/PSTN.xsd false - ttcn/LibSip/xsd/common-policy.xsd + ccsrc/Framework/include/layer.hh false - ccsrc/Protocols/Tcp/tcp_layer_factory.hh + etc/AtsECRF/AtsNg112_Unify_ecrf.cfg_ false - ttcn/modules/titan.TestPorts.HTTPmsg/module/README.md + ccsrc/EncDec/LibSip/LibSip_Encdec.cc false - ttcn/LibCommon/.git/hooks/pre-applypatch.sample + ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd false - bin/LibItsHttp_TypesAndValues.o + ttcn/LibIts/ttcn/Common/LibItsCommon_TestSystem.ttcn false - build/AtsNg112/LibSip_SDPTypes.cc + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.cc false - bin/LibIms_SIPTypesAndValues.hh + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn false - ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd + ttcn/patch_sip_titan/LibSip_PIXITS.ttcn false - ttcn/LibIms/.git/HEAD + ttcn/LibIts/ttcn/Common/LibItsCommon_ASN1_NamedNumbers.ttcn false - bin/LibItsHttp_BinaryTemplates.cc + etc/AtsLIS/AtsNg112_Beta80_lis.cfg_ false - ttcn/LibIts/.git/packed-refs + ttcn/LibIms/ttcn/LibIms_Library.ttcn false - ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_11.log false - bin/LibSip_Templates_Encdec.o + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.pdf false - build/AtsNg112/AtsNg112_Steps.o + ttcn/AtsBCF/AtsBCF_Pixits.ttcn false - build/AtsNg112/LibCommon_VerdictControl.hh + ttcn/AtsBCF/module.mk false - bin/AtsNg112 + ccsrc/Protocols/Json/module.mk false - build/AtsNg112/LibSip_Interface.o + ttcn/LibCommon/ttcn/LibCommon_Time.ttcn false - bin/LibSip_Templates.o + testdata/SIP_STATUS_200ok.pcap false - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn + ttcn/AtsECRF/AtsECRF_TestCases.ttcn false - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn + ttcn/patch_sip_titan/LibSip_Templates.ttcn false - ccsrc/Protocols/Sip/sip_codec_headers.cc + ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn false - ttcn/LibSip/.git/HEAD + ccsrc/Protocols/Sip/sip_codec_info_request.cc false - bin/LibSip_Interface.cc + test_purposes/common/sip_commons.tplan2 false - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.o + scripts/build_titan.bash false - ttcn/LibIts/ttcn/Http/LibItsHttp_Templates.ttcn + testdata/SIP_MESSAGE_Request.pcap false - bin/LibNg112_Steps.cc + ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn false - ttcn/patch_lib_http/LibItsHttp_BinaryMessageBodyTypes.ttcn + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_07.pcapng false - bin/LibIms_Steps.hh + ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn false - ccsrc/Protocols/Sip/sip_codec_options_request.hh + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_02.pcapng false - build/AtsNg112/urn_ietf_params_xml_ns_lost1.cc + ccsrc/Protocols/Json/json_codec.hh false - ccsrc/Framework/include/codec_stack_builder.hh + ccsrc/Protocols/Lost/lost_codec_factory.hh false - build/AtsNg112/LibSip_Steps.hh + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_07.log false - scripts/run_ptcs.bash + ttcn/AtsPSAP/AtsPSAP_Pics.ttcn false - ttcn/patch_lib_http/LibItsHttp_TestSystem.ttcn + ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd false - build/AtsNg112/LibSip_XMLTypes.o + ccsrc/EncDec/LibHttp/module.mk false - ttcn/LibCommon/.git/hooks/pre-receive.sample + ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd false - ttcn/LibCommon/ttcn/LibCommon_BasicTypesAndValues.ttcn + ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn false - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test.cfg + ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc false - bin/AtsNg112_Steps.hh + ttcn/patch_lib_http/LibItsHttp_BinaryTypes.ttcn false - ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc + ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn false - bin/LibItsHttp_Pics.o + etc/AtsESRP/AtsNg112_Unify_esrp.cfg_ false - ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_13.log false - scripts/get-pip.py.2 + ccsrc/Protocols/Sip/sip_codec_headers.hh false - ttcn/modules/titan.TestPorts.HTTPmsg/module/LICENSE + README.md false - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_comm_div_info.cc + ttcn/AtsBCF/AtsBCF_Steps.ttcn false - ttcn/LibSip/xsd/Ims3gpp.xsd + ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd false - bin/LibItsHttp_XmlMessageBodyTypes.o + scripts/devenv.bash.ubuntu false - ttcn/LibSip/LICENSE + ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd false - bin/LibSip_EncdecDeclarations.o + ttcn/LibEmcom/LibNg112/xsd/measures.xsd false - ttcn/LibSip/.git/objects/pack/pack-13ca218939aff4e87685d613a8720860f7ebc078.pack + ttcn/patch_lib_its/module.mk false - build/AtsNg112/ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.o + ttcn/AtsESRP/AtsESRP_Functions.ttcn false - ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc + ccsrc/Protocols/UDP/udp_layer.hh false - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_response.o + ttcn/AtsESRP/AtsESRP_TestControl.ttcn false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_05.log + etc/AtsLIS/AtsNg112_Intersys_lis.cfg_ false - ttcn/LibSip/module.mk + ttcn/LibIts/ttcn/Http/LibItsHttp_EncdecDeclarations.ttcn false - bin/LibNg112_Functions.o + ttcn/LibIts/module.mk false - ttcn/LibSip/.git/packed-refs + ccsrc/Ports/LibSip/SipPort.hh false - bin/LibItsHttp_XMLTypes.hh + ttcn/AtsECRF/AtsECRF_TestControl.ttcn false - ttcn/LibIms/ttcn/LibIms_Interface.ttcn + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Steps.ttcn false - bin/LibSip_SMSTypesAndValues.cc + ttcn/LibIts/ttcn/Common/LibItsExternal_TypesAndValues.ttcn false - build/AtsNg112/NoTargetNamespace.o + ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn false - ttcn/LibSip/xsd/cw.xsd + ttcn/AtsBCF/AtsBCF_TestControl.ttcn false - build/AtsNg112/LibNg112_Templates.hh + ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd false - ccsrc/Protocols/Http/http_codec.hh + ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd false - ccsrc/Protocols/Sip/sip_layer_factory.hh + ttcn/LibEmcom/LibNg112/xsd/xml.xsd false - ccsrc/loggers/loggers.hh + ttcn/LibSip/xsd/common-policy.xsd false - ttcn/LibIms/.git/hooks/prepare-commit-msg.sample + ccsrc/Protocols/Tcp/tcp_layer_factory.hh false - ttcn/LibIms/ttcn/LibIms_SIPTypesAndValues.ttcn + ttcn/AtsECRF/AtsECRF_AltSteps.ttcn false - build/AtsNg112/LibItsHttp_MessageBodyTypes.cc + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module.mk false - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/change.log + ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd false - ttcn/LibCommon/.git/hooks/pre-commit.sample + ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn false - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_05.log + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn false - build/AtsNg112/LibSip_SimpleMsgSummaryTypes.o + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn false - bin/urn_ietf_params_xml_ns_common_policy.hh + ccsrc/Protocols/Sip/sip_codec_headers.cc false - ttcn/LibSip/.git/index + test_purposes/esrp/esrp_tps.tplan2 false - bin/LibItsHttp_MessageBodyTypes.o + ttcn/LibIts/ttcn/Common/LibItsCommon_ASN1_ISDSRC_NamedNumbers.ttcn false - bin/SipPort.o + ccsrc/Framework/include/layer_factory.hh false - ttcn/README.md + ttcn/LibEmcom/LibNg112/json/JSON.ttcn false - bin/XSD.hh + ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd false - build/AtsNg112/LibSip_XMLTypes.hh + ccsrc/Framework/include/codec.hh false - bin/LibNg112_Pixits.o + ttcn/patch_lib_http/LibItsHttp_BinaryMessageBodyTypes.ttcn false - build/AtsNg112/LibItsHttp_MessageBodyTypes.hh + ttcn/patch_sip_titan/module.mk false - build/AtsNg112/LibItsHttp_EncdecDeclarations.o + ccsrc/Protocols/Sip/sip_codec_options_request.hh false - ttcn/LibIms/.git/hooks/pre-rebase.sample + ccsrc/Framework/include/codec_stack_builder.hh false - bin/LibIms_Steps.cc + ccsrc/Protocols/Json/json_codec_factory.hh false - ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen_Function.cc + scripts/run_ptcs.bash false - build/AtsNg112/urn_ietf_params_xml_ns_lost1.hh + ttcn/LibSip/xsd/ACR_CB.xsd false - bin/LibSip_SimpleMsgSummaryTypes.o + ttcn/patch_lib_http/LibItsHttp_TestSystem.ttcn false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_04.pcapng + ccsrc/Protocols/Sip/sip_codec_request.cc false - bin/LibItsHttp_Encdec.o + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/Abstract_Socket_CNL113384.tpd false - ccsrc/Framework/src/codec_stack_builder.cc + ttcn/LibCommon/ttcn/LibCommon_BasicTypesAndValues.ttcn false - ttcn/LibSip/xsd/cug.xsd + ttcn/LibEmcom/LibNg112/xsd/RFC5139_pdif_geopriv10_civic_address.xsd false - bin/UsefulTtcn3Types.cc + ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc false - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_message_request.o + ccsrc/Protocols/Pcap/pcap_linux_layer.cc false - ccsrc/Protocols/Pcap/pcap_offline_layer.cc + ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd false - ttcn/patch_sip_titan/LibSip_Steps.ttcn + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_12.log false - bin/AtsNg112_Steps.cc + ttcn/AtsLIS/AtsLIS_TestCases.ttcn false - test_purposes/psap.txt + ttcn/LibSip/xsd/Ims3gpp.xsd false - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_comm_div_info.hh + ttcn/LibSip/LICENSE false - ccsrc/Protocols/Sip/sip_codec_ack_request.hh + ccsrc/Protocols/Http/http_layer_factory.hh false - ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn + ttcn/AtsLIS/AtsLIS_Pixits.ttcn false - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/installCAI.script + ttcn/patch_lib_http/LibItsHttp_TypesAndValues.ttcn false - ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn + ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc false - bin/urn_ietf_params_xml_ns_lost1.hh + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_05.log false - bin/Makefile + ttcn/LibEmcom/LibNg112/module.mk false - ttcn/LibCommon/ttcn/LibCommon_TextStrings.ttcn + etc/AtsLIS/AtsNg112_test_lis.cfg_ false - bin/LibCommon_Time.cc + ttcn/LibIts/ttcn/Http/module.mk false - bin/LibSip_Interface.hh + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn false - bin/http_uri_etsi_org_ngn_params_xml_comm_div_info.o + ttcn/LibIms/ttcn/LibIms_Interface.ttcn false - bin/LibSip_SMSTypesAndValues.hh + ttcn/LibSip/xsd/cw.xsd false - ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd + ccsrc/Protocols/Http/http_codec.hh false - ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn + ccsrc/Protocols/Sip/sip_layer_factory.hh false - build/AtsNg112/LibSip_SimpleMsgSummaryTypes.hh + ccsrc/loggers/loggers.hh false - bin/LibNg112_Steps.hh + ttcn/LibIms/ttcn/LibIms_SIPTypesAndValues.ttcn false - bin/urn_oma_xml_xdm_common_policy.o + ttcn/LibSip/xsd/CDIVN.xsd false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_GET_BV_01.pcapng + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/change.log false - Makefile + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_05.log false - bin/sip_codec_subscribe_request.o + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn false - ttcn/LibIms/.git/description + ttcn/AtsPSAP/AtsPSAP_Steps.ttcn false - ccsrc/Protocols/Sip/sip_codec_invite_request.cc + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn false - docker/validate-in-docker.sh + ttcn/patch_ims_titan/LibIms_Steps.ttcn false - ttcn/LibCommon/.git/description + etsi_ng112.tpd false - build/AtsNg112/LibItsHttp_EncdecDeclarations.hh + ttcn/README.md false - bin/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.hh + ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn false - build/AtsNg112/LibItsHttp_MessageBodyTypes.o + ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd false - ttcn/AtsNg112/AtsNg112_Steps.ttcn + test_purposes/lis/lis_tps.tplan2 false - ccsrc/Protocols/Sip/module.mk + testdata/SIP_STATUS_100trying.pcap false - ccsrc/Framework/include/params.hh + ttcn/AtsLIS/AtsLIS_Functions.ttcn false - bin/http_www_opengis_net_pidflo_1_0.o + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_03.pcapng false - ttcn/LibCommon/.git/objects/pack/pack-15aed8af1b070cd4aa37e7e3728a825baf05678f.pack + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_04.pcapng false - build/AtsNg112/urn_oma_xml_xdm_common_policy.o + ccsrc/Framework/src/codec_stack_builder.cc false - bin/urn_ietf_params_xml_ns_pidf_geopriv10.cc + ttcn/LibSip/xsd/cug.xsd false - build/AtsNg112/LibItsHttp_TestSystem.hh + ccsrc/Protocols/Pcap/pcap_offline_layer.cc false - build/AtsNg112/LibSip_SIPTypesAndValues.o + ttcn/patch_sip_titan/LibSip_Steps.ttcn false - ccsrc/Protocols/Tcp/tcp_layer.hh + ccsrc/Protocols/Sip/sip_codec_notify_request.cc false - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/change.log + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.hh false - build/AtsNg112/urn_ietf_params_xml_ns_conference_info.cc + ccsrc/Protocols/Sip/sip_codec_ack_request.hh false - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_04.log + ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn false - build/AtsNg112/LibItsHttp_TypesAndValues.hh + ccsrc/Protocols/Pcap/module.mk false - ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn + ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn false - ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc + ttcn/AtsLIS/AtsLIS_AltSteps.ttcn false - bin/LibItsHttp_XMLTypes.cc + ttcn/LibCommon/ttcn/LibCommon_TextStrings.ttcn false - bin/urn_ietf_params_xml_ns_pidf_geopriv10.hh + test_purposes/bcf/bcf_commons.tplan2 false - build/AtsNg112/LibItsHttp_JsonTemplates.cc + test_purposes/aml/aml_tps.tplan2 false - build/AtsNg112/LibItsHttp_TestSystem.cc + test_purposes/ecrf/ecrf_commons.tplan2 false - build/AtsNg112/LibItsHttp_TestSystem.o + ttcn/LibEmcom/LibNg112/json/LibNg112_DequeueRegistration.ttcn false - bin/LibCommon_VerdictControl.o + ccsrc/Protocols/Sip/sip_codec_cancel_request.hh false - bin/http_uri_etsi_org_ngn_params_xml_simservs_pstn.o + ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd false - bin/pcap_layer.o + ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn false - ccsrc/Protocols/Sip/sip_codec_message_request.cc + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn false - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/lssl_script + validation/NG112_Plugtest_2019/TC_LIS_HTTP_GET_BV_01.pcapng false - bin/LibItsHttp_JsonTemplates.hh + Makefile false - bin/AtsNg112_TestCases.cc + ccsrc/Protocols/Sip/sip_codec_invite_request.cc false - build/AtsNg112/LibSip_Common.hh + test_purposes/esrp/esrp.txt false - bin/sip_layer.o + ccsrc/Protocols/Sip/sip_codec_request.hh false - build/AtsNg112/XSD.o + testdata/SIP_BYE_Request.pcap false - bin/LibIms_Library.hh + ccsrc/Protocols/Sip/module.mk false - build/AtsNg112/ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.o + ccsrc/Framework/include/params.hh false - bin/http_layer.o + ccsrc/Protocols/Sip/sip_codec_info_request.hh false - build/AtsNg112/LibItsHttp_XMLTypes.hh + ttcn/AtsBCF/AtsBCF_Pics.ttcn false - build/AtsNg112/LibIms_SIPTypesAndValues.o + ccsrc/Protocols/Lost/lost_codec.cc false - bin/LibItsHttp_BinaryTemplates.o + ttcn/patch_lib_http/LibItsHttp_Templates.ttcn false - bin/HttpPort.o + ccsrc/Protocols/Tcp/tcp_layer.hh false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_06.log + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_04.log false - bin/UsefulTtcn3Types.hh + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn false - build/AtsNg112/LibSip_SMSTypesAndValues.hh + ttcn/LibCommon/ttcn/LibCommon_VerdictControl.ttcn false - ccsrc/loggers/module.mk + ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn false - build/AtsNg112/urn_3gpp_ns_cw_1_0.cc + ttcn/LibSip/xsd/pidf_lo.xsd false - bin/LibItsHttp_BinaryTypes.cc + ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc false - bin/LibNg112_Pics.hh + test_purposes/ecrf/ecrf_tps.tplan2 false - ccsrc/Protocols/Sip/sip_codec_ack_request.cc + ttcn/AtsECRF/AtsECRF_Pics.ttcn false - bin/compile + ccsrc/Protocols/ETH/ethernet_layer.cc false - ccsrc/Framework/src/params.cc + ttcn/LibCommon/ttcn/LibCommon_AbstractData.ttcn false - build/AtsNg112/LibSip_Common.o + ccsrc/Protocols/Sip/sip_codec_message_request.cc false - ccsrc/Protocols/Http/http_codec.cc + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_01_11.log false - ccsrc/loggers/loggers.cc + ccsrc/Protocols/Sip/sip_codec_cancel_request.cc false - ttcn/LibCommon/.git/hooks/post-update.sample + etc/AtsECRF/AtsNg112_Gridgears_ecrf.cfg_ false - bin/sip_codec_invite_request.o + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn false - bin/pcap_linux_layer.o + etc/AtsLIS/AtsNg112_Gridgears_lis.cfg_ false - bin/urn_ietf_params_xml_ns_lost1.cc + ccsrc/Protocols/Sip/sip_codec_bye_request.hh false - ccsrc/Protocols/Sip/sip_codec_options_request.cc + ttcn/LibSip/xsd/TIP-TIR.xsd false - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_03.log + testdata/SIP_REGISTER_Request.pcap false - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_mcid.cc + ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn false - ttcn/LibIts/.git/hooks/update.sample + ccsrc/Protocols/Sip/sip_codec_message_body.hh false - bin/LibCommon_Sync.o + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_06.log false - bin/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.o + ccsrc/loggers/module.mk false - build/AtsNg112/LibSip_Steps.cc + ccsrc/Protocols/Sip/sip_codec_notify_request.hh false - ccsrc/Protocols/Tcp/tcp_layer.cc + ccsrc/Protocols/Sip/sip_codec_ack_request.cc false - bin/LibSip_PIXITS.o + ccsrc/Framework/src/params.cc false - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images/Abstract socket.png + ccsrc/Protocols/Http/module.mk false - bin/LibItsHttp_XmlTemplates.o + ttcn/AtsESRP/module.mk false - docker/run-container.sh + ttcn/LibIms/LICENSE false - bin/LibCommon_TextStrings.o + ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn false - ccsrc/Framework/src/base_time.cc + ccsrc/Protocols/Http/http_codec.cc false - bin/LibItsHttp_Functions.cc + ccsrc/loggers/loggers.cc false - ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.crt + ccsrc/Protocols/Sip/sip_codec_options_request.cc false - build/AtsNg112/.generate + ttcn/LibIts/ttcn/Common/LibItsCommon_Pixits.ttcn false - bin/LibSip_SDPTypes.hh + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_03.log false - bin/LibCommon_AbstractData.cc + etc/AtsECRF/AtsNg112_Beta80_ecrf.cfg_ false - ccsrc/Framework/include/layer_stack_builder.hh + ccsrc/Protocols/Tcp/tcp_layer.cc false - ttcn/LibSip/ttcn/LibSip_Library.ttcn + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/README.md false - build/AtsNg112/LibCommon_VerdictControl.cc + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/images/Abstract socket.png false - build/AtsNg112/LibItsHttp_BinaryTemplates.cc + ccsrc/Framework/src/base_time.cc false - bin/AtsNg112_Steps.o + ccsrc/Protocols/Sip/sip_codec_subscribe_request.cc false - build/AtsNg112/LibItsHttp_JSONTypes.hh + ccsrc/Protocols/Held/held_codec_factory.hh false - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_headers.o + ttcn/patch_lib_common_titan/module.mk false - build/AtsNg112/urn_ietf_params_xml_ns_resource_lists.hh + ccsrc/Ports/LibHttp/module.mk false - ccsrc/Protocols/Sip/sip_codec_invite_request.hh + ccsrc/Framework/include/layer_stack_builder.hh false - ttcn/LibSip/xsd/ResourceList.xsd + ttcn/LibSip/ttcn/LibSip_Library.ttcn false - ttcn/LibIts/ttcn/Http/LibItsHttp_MessageBodyTypes.ttcn + ttcn/AtsESRP/AtsESRP_Pics.ttcn false - bin/LibSip_Library.hh + ccsrc/Protocols/Sip/sip_codec_invite_request.hh false - ttcn/LibCommon/.git/objects/pack/pack-15aed8af1b070cd4aa37e7e3728a825baf05678f.idx + ttcn/LibSip/xsd/ResourceList.xsd false - ttcn/LibIms/.git/objects/pack/pack-a1a178fa8f0274d030723ec432c4241683c34b05.idx + ttcn/LibIts/ttcn/Http/LibItsHttp_MessageBodyTypes.ttcn false - ccsrc/Protocols/Sip/sip_codec_register_request.cc + ttcn/LibCommon/LICENSE false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_03.log + ttcn/LibIts/ttcn/Common/LibItsCommon_TypesAndValues.ttcn false - bin/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.cc + ttcn/AtsPSAP/AtsPSAP_TestControl.ttcn false - build/AtsNg112/LibItsHttp_TypesAndValues.o + ccsrc/Protocols/Sip/sip_codec_register_request.cc false - bin/LibSip_SDPTypes.o + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_03.log false - build/AtsNg112/LibNg112_Pixits.hh + ttcn/AtsLIS/AtsLIS_TestControl.ttcn false - bin/http_uri_etsi_org_ngn_params_xml_simservs_mcid.hh + ccsrc/Framework/include/codec_factory.hh false - bin/LibSip_Interface.o + ttcn/patch_lib_http/LibItsHttp_JSONTypes.ttcn false - ccsrc/Framework/include/t_layer.hh + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/LICENSE false - build/AtsNg112/LibItsHttp_XMLTypes.cc + ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn false - build/AtsNg112/LibSip_SMSTypesAndValues.cc + ccsrc/Framework/include/t_layer.hh false - bin/LibNg112_Pics.cc + ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn false - bin/LibNg112_TestSystem.o + test_purposes/bcf/bcf.tplan2 false - test_purposes/README.md + ccsrc/Protocols/Sip/sip_codec_bye_request.cc false - build/AtsNg112/urn_ietf_params_xml_ns_reginfo.o + ccsrc/Protocols/Lost/lost_codec.hh false - build/AtsNg112/LibIms_Steps.o + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/doc/Abstract_Socket_CNL113384_1551.adoc false - model.tdl + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_05.pcapng false - ccsrc/Protocols/Tcp/module.mk + ttcn/patch_sip_titan/LibSip_XMLTypes.ttcn false - build/AtsNg112/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.hh + test_purposes/aml/aml_commons.tplan2 false - testdata/SIP_ACK_Request.pcap + scripts/update_user_name.sh false - build/AtsNg112/ccsrc/Protocols/Sip/sip_codec_bye_request.o + ttcn/AtsESRP/AtsESRP_TestCases.ttcn false - ccsrc/Protocols/Sip/sip_codec_message_request.hh + ttcn/LibIts/ttcn/Common/LibItsCommon_Functions.ttcn false - bin/LibItsHttp_Functions.hh + ttcn/LibSip/xsd/CONF.xsd false - ttcn/LibIts/ttcn/Http/LibItsHttp_Functions.ttcn + test_purposes/psap/psap.tplan2 false - ttcn/LibIts/ttcn/Http/LibItsHttp_JSONTypes.ttcn + ccsrc/Protocols/Sip/sip_codec_response.hh false - bin/urn_ietf_params_xml_ns_reginfo.hh + test_purposes/README.md false - bin/AtsNg112_TestCases.hh + ttcn/AtsESRP/AtsESRP_Pixits.ttcn false - bin/http_www_w3_org_XML_1998_namespace.hh + ttcn/AtsBCF/AtsBCF_TestCases.ttcn false - build/AtsNg112/LibNg112_Templates.cc + model.tdl false - ttcn/LibSip/.git/config + ccsrc/Protocols/Tcp/module.mk false - bin/LibItsHttp_TestSystem.hh + representations.aird false - bin/LibSip_SDPTypes.cc + testdata/SIP_ACK_Request.pcap false - ttcn/LibIts/ttcn/Http/LibItsHttp_Pics.ttcn + ccsrc/Protocols/Sip/sip_codec_message_request.hh false - ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf + ttcn/LibIts/ttcn/Http/LibItsHttp_Functions.ttcn false - ttcn/LibSip/xsd/CDIV.xsd + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn false - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_04.log + ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh false - config.mk + ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn false - build/AtsNg112/LibItsHttp_JSONTypes.cc + ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd false - bin/AtsNg112_TestControl.cc + ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn false - ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.grp + docs/o2.cfg false - ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd + ttcn/LibIts/ttcn/Http/LibItsHttp_Pics.ttcn false - etc/AtsNg112/AtsNg112_Unify_ecrp.cfg_ + ttcn/AtsECRF/AtsECRF_Pixits.ttcn false - build/AtsNg112/urn_3gpp_ns_cw_1_0.hh + ttcn/LibSip/xsd/CDIV.xsd false - ttcn/LibIts/.git/hooks/pre-push.sample + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_04.log false - bin/http_uri_etsi_org_ngn_params_xml_comm_div_info.cc + ttcn/LibSip/xsd/geopriv10basic.xsd false - validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_02.log + config.mk false - .jenkins.sh + ttcn/modules/titan.TestPorts.Common_Components.Abstract_Socket/module/src/Abstract_Socket.grp false - validation/NG112_Plugtest_2021/TC_ECRF_HTTP_POST_BV_02_Gridgears.log + ttcn/AtsECRF/AtsECRF_Templates.ttcn false - build/AtsNg112/LibNg112_Pixits.cc + ccsrc/Protocols/Sip/sip_codec_message_body.cc false - ccsrc/Ports/LibSip/module.mk + ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd false - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn + ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn false - ttcn/modules/titan.TestPorts.HTTPmsg/module/HTTPmsg_CNL113312.tpd + ccsrc/Protocols/Pcap/pcap_linux_layer.hh false - build/AtsNg112/LibSip_XMLTypes.cc + validation/NG112_Plugtest_2019/TC_ECRF_HTTP_POST_BV_02.log false - etc/AtsNg112/AtsNg112_Frequentis_psap.cfg_ + validation/NG112_Plugtest_2021/TC_ECRF_HTTP_POST_BV_02_Gridgears.log false - ttcn/LibIts/.git/logs/HEAD + ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn false - build/AtsNg112/http_uri_etsi_org_ngn_params_xml_simservs_xcap.o + ccsrc/Ports/LibSip/module.mk false - ttcn/modules/titan.TestPorts.HTTPmsg/module.mk + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn false - ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_Types.ttcn + ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn false - build/AtsNg112/LibSip_Templates.o + ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn false - scripts/run_all.bash + ttcn/LibIts/ttcn/Common/LibItsCommon_Templates.ttcn false - ttcn/AtsNg112/module.mk + scripts/run_all.bash false @@ -12976,37 +5523,37 @@ - validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_01_07_GET_BV_01.log + ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn false - bin/LibItsHttp_BinaryMessageBodyTypes.cc + validation/NG112_Plugtest_2019/TC_LIS_HTTP_POST_BV_01_07_GET_BV_01.log false - ttcn/LibIts/ttcn/Http/LibItsHttp_TypesAndValues.ttcn + ccsrc/Ports/LibSip/OperatorPort.hh false - bin/urn_ietf_params_xml_ns_common_policy.o + ccsrc/Framework/src/layer_factory.cc false - bin/LibSip_EncdecDeclarations.hh + ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn false - ttcn/LibIts/.git/logs/refs/heads/cygwin + ttcn/AtsECRF/module.mk false @@ -13017,26 +5564,16 @@ Abstract_Socket_CNL113384 - - - - - - - - - - SSL @@ -13054,6 +5591,9 @@ false none executable + class + false + false bin/Abstract_Socket_CNL113384 cpp @@ -13124,60 +5664,7 @@ T_.* - - - bin_ssl - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - - bin_ssl/Abstract_Socket_CNL113384 - - false - - - - bin_ssl/Makefile - - false - - - - bin_ssl/Makefile.bak - - false - - Abstract_Socket.cc @@ -13190,30 +5677,6 @@ false - - .project - - false - - - - bin_ssl/Abstract_Socket.o - - false - - - - .TITAN_properties - - false - - - - bin_ssl/compile - - false - - @@ -13230,6 +5693,9 @@ false none executable + class + false + false bin_ssl/Abstract_Socket_CNL113384 cpp @@ -13311,60 +5777,7 @@ T_.* - - - bin_ssl - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - - bin_ssl/Abstract_Socket_CNL113384 - - false - - - - bin_ssl/Makefile - - false - - - - bin_ssl/Makefile.bak - - false - - Abstract_Socket.cc @@ -13377,30 +5790,6 @@ false - - .project - - false - - - - bin_ssl/Abstract_Socket.o - - false - - - - .TITAN_properties - - false - - - - bin_ssl/compile - - false - - diff --git a/etsi_ng112_win.tpd b/etsi_ng112_win.tpd index 356352df73b041f7ad0ed6e21b1923535f0f1880..61f6ce57152e4df0129b55e87b1abf0b896bf9bd 100644 --- a/etsi_ng112_win.tpd +++ b/etsi_ng112_win.tpd @@ -1,14 +1,17 @@ - - + - STF549_ng112 + TTF009_Test + + + + @@ -28,46 +31,408 @@ - + - - - - + + + + - + + + + + + + - + + + + + + + + + - + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75,33 +440,40 @@ - + + - + + + + + + + @@ -112,55 +484,89 @@ + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - + - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -169,8 +575,34 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178,10 +610,12 @@ + + @@ -216,19 +650,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -265,22 +726,37 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -289,1811 +765,130 @@ + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default - true - true - true - false true - true - false true - false - none - executable - bin\STF549_ng112.exe - cpp + bin/TTF009_Ng112.exe AS_USE_SSL + __CYGWIN__ - - C:\npcap-sdk-0.1\Include - C:\Users\yann\Documents\wireshark\cygwin64\home\yann\frameworks\osip\include + /cygwin64/home/yanng/frameworks/osip/include true - false - false - false true true - false - false - false - false - false true true - false true - false - false true - true - false - false - g++ None -std=gnu++0x - - wpcap - osipparser2 + wpcap - C:\npcap-sdk-0.1\Lib - C:\Users\yann\Documents\wireshark\cygwin64\home\yann\frameworks\osip\src\osipparser2\.libs + /cygwin64/home/yanng/frameworks/osip/src/osipparser2/.libs + C:\npcap-sdk-1.12\Lib\x64 - false - false - - Level5-CreatingExecutableTestSuitewithdependencyupdate - - bin - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - ttcn/LibEmcom/LibNg112/xsd - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docs/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/patch_sip_titan - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - testdata - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Ports - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - docs - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework/include - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - logs - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/xsd - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - validation - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibEmcom/LibNg112/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - test_purposes - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Held - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Lost - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/ETH - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Ports/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/TestCodec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibCommon - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Tcp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docker - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc/AtsNg112 - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibSip - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/LibIts/ttcn/Http - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Protocols/Http - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/patch_lib_common_titan - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - vagrant - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - docs/TestCodec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true scripts - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ttcn/patch_lib_http - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - etc/TestCodec - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/EncDec/LibHttp - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - src - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - - - - - ccsrc/Framework/src - - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true - ccsrc/Protocols/UDP + testdata - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true - ccsrc/Protocols/Pcap + ttcn/LibIts/ttcn/Common - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true - ccsrc/Protocols/Sip + ttcn/LibSip/xsd - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true - ttcn/LibEmcom + ttcn/modules - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true - ccsrc/Ports/LibHttp + validation - false - false - - - .* - .* - as_.* - cg_.* - ec_.* - f_.* - ef_.* - m.* - .*_PT - t.* - tc_.* - T.* - .* - [A-Z].* - cl.* - vl.* - t.* - vt.* - TL_.* - pl_.* - c_.* - v_.* - T_.* - + true @@ -2105,1509 +900,141 @@ - ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn + ttcn/LibIms/ttcn/LibIms_Steps.ttcn true - ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn + ttcn/LibIms/ttcn/LibIms_Templates.ttcn true - ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTypes.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryMessageBodyTypes.ttcn true - ttcn/LibIts/ttcn/Http/LibItsHttp_XMLTypes.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTemplates.ttcn true - ttcn/LibIts/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_BinaryTypes.ttcn true - ttcn/LibIts/ttcn/Http/LibItsHttp_XmlTemplates.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_Templates.ttcn true - ttcn/LibSip/ttcn/LibSip_Common.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_TestSystem.ttcn true - ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_TypesAndValues.ttcn true - ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_XMLTypes.ttcn true - ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn + ttcn/LibIts/ttcn/Http/LibItsHttp_XmlMessageBodyTypes.ttcn true - ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 + ttcn/LibIts/ttcn/Http/LibItsHttp_XmlTemplates.ttcn true - ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 + ttcn/LibSip/ttcn/LibSip_Common.ttcn true - ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn + ttcn/LibSip/ttcn/LibSip_MessageBodyTypes.ttcn true - ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn + ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn true - ttcn/LibSip/ttcn/LibSip_Steps.ttcn + ttcn/LibSip/ttcn/LibSip_SDPTypes.ttcn true - ttcn/LibSip/ttcn/LibSip_Templates.ttcn + ttcn/LibSip/ttcn/LibSip_SIPTypesAndValues.ttcn true - ccsrc/Ports/LibHttp/HttpPort.cc - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn - - false - - - - ttcn/patch_sip_titan/LibSip_Common.ttcn - - false - - - - ccsrc/Framework/include/layer_factory.hh - - false - - - - ccsrc/Protocols/Sip/sip_codec_register_request.hh + ttcn/LibSip/ttcn/LibSip_SMSFunctions.ttcn3 - false + true - ccsrc/EncDec/LibSip/LibSip_SMSFunctions_Encdec.cc + ttcn/LibSip/ttcn/LibSip_SMSTemplates.ttcn3 - false + true - ttcn/LibSip/ttcn/LibSip_Interface.ttcn + ttcn/LibSip/ttcn/LibSip_SMSTypesAndValues.ttcn - false + true - ttcn/LibEmcom/LibNg112/xsd/basicTypes.xsd + ttcn/LibSip/ttcn/LibSip_SimpleMsgSummaryTypes.ttcn - false + true - ttcn/LibSip/xsd/simservs.xsd + ttcn/LibSip/ttcn/LibSip_Steps.ttcn - false + true - ccsrc/Protocols/ETH/ethernet_layer_factory.hh + ttcn/LibSip/ttcn/LibSip_Templates.ttcn - false + true - ccsrc/Framework/include/codec.hh + ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_Templates.ttcn - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_resource_lists.ttcn - - false - - - - test_purposes/esrp.txt - - false - - - - ttcn/TestCodec/TestCodec_HttpResponse.ttcn - - false - - - - testdata/SIP_INVITE_Request_sdp.pcap - - false - - - - ttcn/LibSip/xsd/pidf.xsd - - false - - - - ttcn/patch_lib_http/LibItsHttp_BinaryMessageBodyTypes.ttcn - - false - - - - ccsrc/Framework/include/codec_stack_builder.hh - - false - - - - logs/STF549_ng112.yann-FSCOM-mtc.log - - false - - - - ttcn/TestCodec/TestCodec_Invite.ttcn - - false - - - - scripts/run_ptcs.bash - - false - - - - scripts/ng112_generate_makefile.bash - - false - - - - ttcn/LibSip/xsd/ACR_CB.xsd - - false - - - - ccsrc/Protocols/Sip/sip_codec_request.cc - - false - - - - ttcn/LibCommon/ttcn/LibCommon_BasicTypesAndValues.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC5139_pdif_geopriv10_civic_address.xsd - - false - - - - docs/TestCodec/o2.cfg - - false - - - - validation/TC_LIS_HTTP_GET_BV_01.pcapng - - false - - - - ccsrc/EncDec/LibSip/LibSip_Templates_Encdec.cc - - false - - - - ccsrc/Protocols/Pcap/pcap_linux_layer.cc - - false - - - - ttcn/LibSip/xsd/xdm_commonPolicy-v1_0.xsd - - false - - - - ttcn/TestCodec/TestCodec_HttpRequest.ttcn - - false - - - - docker/Dockerfile - - false - - - - ttcn/LibSip/xsd/OIP-OIR.xsd - - false - - - - ccsrc/Protocols/Pcap/pcap_cygwin_layer.hh - - false - - - - ttcn/LibSip/xsd/Ims3gpp.xsd - - false - - - - ccsrc/Protocols/Http/http_layer_factory.hh - - false - - - - ttcn/LibSip/xsd/MCID.xsd - - false - - - - ttcn/LibSip/xsd/SupplementaryServices.xsd - - false - - - - ttcn/patch_sip_titan/urn_oma_xml_xdm_common_policy.ttcn - - false - - - - ttcn/patch_lib_http/LibItsHttp_BinaryTemplates.ttcn - - false - - - - ccsrc/EncDec/LibHttp/LibItsHttp_Encdec.cc - - false - - - - ccsrc/Framework/include/loggers.hh - - false - - - - scripts/run_mtc.bash - - false - - - - ccsrc/Protocols/Sip/sip_layer.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy.ttcn - - false - - - - ttcn/AtsNg112/AtsNg112_TestControl.ttcn - - false - - - - validation/TC_LIS_HTTP_POST_BV_04.log - - false - - - - ttcn/LibSip/xsd/cw.xsd - - false - - - - ccsrc/Protocols/Http/http_codec.hh - - false - - - - ccsrc/Protocols/Sip/sip_layer_factory.hh - - false - - - - ccsrc/Protocols/Pcap/pcap_layer.cc - - false - - - - ttcn/LibSip/xsd/CDIVN.xsd - - false - - - - validation/TC_LIS_HTTP_POST_BV_04.pcapng - - false - - - - ttcn/LibEmcom/LibNg112/xsd/NoTargetNamespace.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn - - false - - - - ccsrc/Protocols/Http/http_layer.hh - - false - - - - ccsrc/Protocols/UDP/udp_layer.cc - - false - - - - ccsrc/Framework/src/converter.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn - - false - - - - ccsrc/Protocols/Held/held_codec.hh - - false - - - - ccsrc/Ports/LibSip/SipPort.cc - - false - - - - scripts/titan_repos.txt - - false - - - - ttcn/README.md - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_mcid.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10_basic_policy.xsd - - false - - - - testdata/SIP_STATUS_100trying.pcap - - false - - - - ccsrc/Framework/include/converter.hh - - false - - - - ccsrc/Framework/src/codec_stack_builder.cc - - false - - - - ttcn/LibSip/xsd/cug.xsd - - false - - - - ttcn/patch_sip_titan/urn_3gpp_ns_cw_1_0.ttcn - - false - - - - scripts/merge_emcom_project.bash - - false - - - - ttcn/TestCodec/TestCodec_Register.ttcn - - false - - - - validation/TC_LIS_HTTP_POST_BV_01.log - - false - - - - ccsrc/Protocols/Pcap/pcap_offline_layer.cc - - false - - - - ttcn/patch_sip_titan/LibSip_Steps.ttcn - - false - - - - test_purposes/psap.txt - - false - - - - ccsrc/Protocols/UDP/udp_layer_factory.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/XSD.ttcn - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_TestSystem.ttcn - - false - - - - ttcn/patch_lib_common_titan/LibCommon_Sync.ttcn - - false - - - - validation/TC_LIS_HTTP_POST_BV_03.pcapng - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr.ttcn - - false - - - - ttcn/LibCommon/ttcn/LibCommon_TextStrings.ttcn - - false - - - - validation/TC_LIS_HTTP_POST_BV_01.pcapng - - false - - - - ccsrc/Framework/src/loggers.cc - - false - - - - ccsrc/Protocols/ETH/ethernet_layer.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/geometryBasic0d1d.xsd - - false - - - - ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn - - false - - - - ttcn/patch_lib_http/LibItsHttp_XMLTypes.ttcn - - false - - - - ccsrc/Protocols/Tcp/Abstract_Socket.hh - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/GML-pidf-lo-shape.xsd - - false - - - - ccsrc/Protocols/Http/http_layer.cc - - false - - - - test_purposes/psap.tplan2 - - false - - - - testdata/SIP_INVITE_Request.pcap - - false - - - - validation/TC_LIS_HTTP_POST_BV_05.log - - false - - - - ccsrc/Protocols/Sip/sip_codec_invite_request.cc - - false - - - - ccsrc/Protocols/Sip/sip_codec_request.hh - - false - - - - docker/validate-in-docker.sh - - false - - - - testdata/SIP_BYE_Request.pcap - - false - - - - ccsrc/Protocols/Held/held_codec.cc - - false - - - - ttcn/LibSip/xsd/xml.xsd - - false - - - - ccsrc/Framework/include/params.hh - - false - - - - ccsrc/Protocols/Pcap/pcap_layer_factory.hh - - false - - - - scripts/update_emcom_project.bash - - false - - - - ccsrc/Protocols/Lost/lost_codec.cc - - false - - - - logs/STF549_ng112.yann-FSCOM-hc.log - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held_id.ttcn - - false - - - - ttcn/LibSip/ttcn/LibSip_XMLTypes.ttcn - - false - - - - ccsrc/Ports/LibHttp/HttpPort.hh - - false - - - - ccsrc/Protocols/Tcp/tcp_layer.hh - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn - - false - - - - ttcn/LibCommon/ttcn/LibCommon_VerdictControl.ttcn - - false - - - - ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn - - false - - - - ccsrc/Protocols/Sip/sip_layer.hh - - false - - - - ttcn/LibSip/xsd/pidf_lo.xsd - - false - - - - ccsrc/EncDec/LibSip/LibSip_Steps_Encdec.cc - - false - - - - ccsrc/Protocols/Pcap/pcap_layer.hh - - false - - - - ttcn/LibSip/xsd/regInfo.xsd - - false - - - - ccsrc/Protocols/ETH/ethernet_layer.cc - - false - - - - docs/AtsNg112/o2.cfg - - false - - - - ttcn/LibCommon/ttcn/LibCommon_AbstractData.ttcn - - false - - - - ttcn/LibCommon/ttcn/LibCommon_DataStrings.ttcn - - false - - - - ttcn/patch_sip_titan/LibSip_SMSTypesAndValues.ttcn - - false - - - - ttcn/patch_sip_titan/LibSip_EncdecDeclarations.ttcn - - false - - - - test_purposes/lis.tplan2 - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/http_www_w3_org_XML_1998_namespace.ttcn - - false - - - - ttcn/LibSip/xsd/TIP-TIR.xsd - - false - - - - testdata/SIP_REGISTER_Request.pcap - - false - - - - ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn - - false - - - - ttcn/LibSip/xsd/PSTN.xsd - - false - - - - ccsrc/Framework/include/layer.hh - - false - - - - ccsrc/EncDec/LibSip/LibSip_Encdec.cc - - false - - - - ttcn/LibEmcom/LibNg112/xsd/gmlBase.xsd - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn - - false - - - - ccsrc/Framework/src/params.cc - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_common_policy.ttcn - - false - - - - ccsrc/Protocols/Http/http_codec.cc - - false - - - - validation/TC_LIS_HTTP_POST_BV_02.log - - false - - - - ccsrc/Protocols/Tcp/tcp_layer.cc - - false - - - - docker/run-container.sh - - false - - - - test_purposes/esrp.tplan2 - - false - - - - ccsrc/Protocols/Held/held_codec_factory.hh - - false - - - - ccsrc/Framework/include/layer_stack_builder.hh - - false - - - - ttcn/LibCommon/ttcn/LibCommon_Time.ttcn - - false - - - - ttcn/LibSip/ttcn/LibSip_Library.ttcn - - false - - - - testdata/SIP_STATUS_200ok.pcap - - false - - - - ccsrc/Protocols/Sip/sip_codec_invite_request.hh - - false - - - - ttcn/patch_sip_titan/LibSip_Templates.ttcn - - false - - - - ttcn/LibSip/xsd/ResourceList.xsd - - false - - - - vagrant/provisioner.bash - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_MessageBodyTypes.ttcn - - false - - - - ccsrc/Protocols/Sip/sip_codec_register_request.cc - - false - - - - ttcn/patch_sip_titan/LibSip_MessageBodyTypes.ttcn - - false - - - - ccsrc/Framework/include/codec_factory.hh - - false - - - - etc/TestCodec/TestCodec.cfg - - false - - - - ccsrc/Framework/include/t_layer.hh - - false - - - - scripts/build_titan.bash - - false - - - - testdata/SIP_MESSAGE_Request.pcap - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_reginfo.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_gml.ttcn - - false - - - - ttcn/TestCodec/TestCodec_HttpPort.ttcn - - false - - - - ccsrc/Protocols/Lost/lost_codec.hh - - false - - - - ttcn/patch_sip_titan/LibSip_SimpleMsgSummaryTypes.ttcn - - false - - - - test_purposes/ecrf.tplan2 - - false - - - - ccsrc/Protocols/Lost/lost_codec_factory.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC4119_geopriv10.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/geometryBasic2d.xsd - - false - - - - ttcn/LibSip/xsd/CONF.xsd - - false - - - - ttcn/patch_sip_titan/urn_ietf_params_xml_ns_conference_info.ttcn - - false - - - - ccsrc/Protocols/Pcap/pcap_cygwin_layer.cc - - false - - - - ttcn/patch_lib_http/LibItsHttp_BinaryTypes.ttcn - - false - - - - ttcn/patch_sip_titan/LibSip_SMSTemplates.ttcn - - false - - - - test_purposes/README.md - - false - - - - model.tdl - - false - - - - validation/TC_LIS_HTTP_POST_BV_05.pcapng - - false - - - - validation/TC_LIS_HTTP_POST_BV_03.log - - false - - - - representations.aird - - false - - - - testdata/SIP_ACK_Request.pcap - - false - - - - README.md - - false - - - - docker/build-container.sh - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_Functions.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn - - false - - - - ccsrc/Protocols/Pcap/pcap_offline_layer_factory.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/xml_2001.xsd - - false - - - - validation/TC_LIS_HTTP_GET_BV_01.log - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_pstn.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC5222_lost.xsd - - false - - - - scripts/devenv.bash.ubuntu - - false - - - - test_purposes/lis.txt - - false - - - - ttcn/LibEmcom/LibNg112/xsd/geometryPrimitives.xsd - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_Pics.ttcn - - false - - - - ttcn/LibSip/xsd/CDIV.xsd - - false - - - - ttcn/LibSip/xsd/geopriv10basic.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/measures.xsd - - false - - - - ccsrc/Protocols/UDP/udp_layer.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC5985_held.xsd - - false - - - - validation/TC_ECRF_HTTP_POST_BV_01.log - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_EncdecDeclarations.ttcn - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_simservs_xcap.ttcn - - false - - - - ccsrc/Protocols/Pcap/pcap_linux_layer.hh - - false - - - - ccsrc/Ports/LibSip/SipPort.hh - - false - - - - ttcn/LibSip/ttcn/LibSip_PIXITS.ttcn - - false - - - - ttcn/patch_sip_titan/LibSip_SDPTypes.ttcn - - false - - - - scripts/testcodec_generate_makefile.bash - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn - - false - - - - ccsrc/Protocols/Tcp/Abstract_Socket.cc - - false - - - - scripts/run_tshark.bash - - false - - - - ttcn/patch_sip_titan/LibSip_SMSFunctions.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn - - false - - - - ttcn/patch_sip_titan/http_uri_etsi_org_ngn_params_xml_comm_div_info.ttcn - - false - - - - validation/TC_LIS_HTTP_POST_BV_02.pcapng - - false - - - - ttcn/AtsNg112/AtsNg112_TestCases.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC3863_pidf.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC6155_held_id.xsd - - false - - - - ttcn/LibEmcom/LibNg112/xsd/xml.xsd - - false - - - - ttcn/LibSip/xsd/common-policy.xsd - - false - - - - ccsrc/Protocols/Tcp/tcp_layer_factory.hh - - false - - - - scripts/run_all.bash - - false - - - - vagrant/Vagrantfile - - false - - - - ccsrc/Protocols/Pcap/pcap_offline_layer.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/http_www_opengis_net_pidflo_1_0.ttcn - - false - - - - ttcn/TestCodec/TestCodec_TestAndSystem.ttcn - - false - - - - ccsrc/Ports/LibSip/OperatorPort.hh - - false - - - - ttcn/LibEmcom/LibNg112/xsd/RFC7459_pidf_lo.xsd - - false - - - - ccsrc/Framework/src/layer_factory.cc - - false - - - - ttcn/LibIts/ttcn/Http/LibItsHttp_TypesAndValues.ttcn - - false - - - - etc/AtsNg112/AtsNg112.cfg - - false - - - - ccsrc/README.md - - false - - - - ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_conf.ttcn - - false - - - - ttcn/LibEmcom/LibNg112/xsd/UsefulTtcn3Types.ttcn - - false + true diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..43005105e18990da6f84806e80808c2f6f476d43 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/CallerNetwork.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..9cee19b80b62437d7fb2492e57b5addd7bc2d338 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_01/Psap.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..0cdb85de8fb2533e1d7c7dc1351bcd183e09e3a0 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/CallerNetwork.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..d938e7f661d91e3e0f62b1d3f6a27dc8e174542d --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_02/Psap.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..43005105e18990da6f84806e80808c2f6f476d43 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/CallerNetwork.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f5714046831f051de1850a5190e9c02671027ca --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_03/Psap.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=EmergencyCallData.IncidentId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..43005105e18990da6f84806e80808c2f6f476d43 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/CallerNetwork.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..63ed9a7f59a07a5ec73d417644eb14f14a582510 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_04/Psap.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=EmergencyCallData.CallId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..43005105e18990da6f84806e80808c2f6f476d43 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/CallerNetwork.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..f7a259a0637f4fd1c1936c23d493a5b366b87de1 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_INVITE_BV_05/Psap.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=EmergencyCallData.SourceId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d91e28778403564a18a38acd6d7949d01b5e578 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/CallerNetwork.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..49abe2813653a9bbbfb21c361de737b7eb0d759e --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_01/Psap.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + ]]> + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d91e28778403564a18a38acd6d7949d01b5e578 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/CallerNetwork.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..49abe2813653a9bbbfb21c361de737b7eb0d759e --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_02/Psap.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + ]]> + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d91e28778403564a18a38acd6d7949d01b5e578 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/CallerNetwork.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..6bbfb0a7d0da9dbd8953029a2f8a410f8876744a --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_03/Psap.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=EmergencyCallData.IncidentId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Content-Type: text/plain + Content-Length: [len] + + blablabla + ]]> + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..6d91e28778403564a18a38acd6d7949d01b5e578 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/CallerNetwork.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..6cba85f6fdbe9f09fbcd3736fcc939a7c79ca9c1 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_04/Psap.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=EmergencyCallData.CallId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Content-Type: text/plain + Content-Length: [len] + + blablabla + ]]> + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/CallerNetwork.sh b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/CallerNetwork.sh new file mode 100755 index 0000000000000000000000000000000000000000..30c5f659ad94186641c186421daf576b77445da5 --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/CallerNetwork.sh @@ -0,0 +1,4 @@ +echo "Simulate BCF side." +echo "CallerNetwork(TS Titan) <--> BCF(SUT SIPP) <--> PSAP(TS Titan)" +rm *.log +sipp -nr -t u1 -trace_msg -trace_err -m 2 -sf CallerNetwork.xml 127.0.0.1:5060 diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/CallerNetwork.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/CallerNetwork.xml new file mode 100644 index 0000000000000000000000000000000000000000..bc108a50cc1ec5c17846ad348cd4d987d86f490d --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/CallerNetwork.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/Psap.xml b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/Psap.xml new file mode 100644 index 0000000000000000000000000000000000000000..60543bf9db0c7cecfbc0337c8cb997b79e994b5a --- /dev/null +++ b/mocks/AtsBCF/TC_BCF_SIP_MESSAGE_BV_05/Psap.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=EmergencyCallData.SourceId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Content-Type: text/plain + Content-Length: [len] + + blablabla + ]]> + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_01/FindServiceRequest.sh b/mocks/AtsESRP/FIND_SERVICE_BV_01/FindServiceRequest.sh new file mode 100755 index 0000000000000000000000000000000000000000..242c93c84e2772d963c997c3bd720dbb7aa4da09 --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_01/FindServiceRequest.sh @@ -0,0 +1,16 @@ +echo "Sending ECRF Request" +curl --location --request POST 'http://127.0.0.1:8080' \ +--header 'Content-Type: application/lost+xml' \ +--data-raw ' + + + + 43.58206959563555 6.974515914916991 + 200.0 + + + + + + urn:service:sos.police +' \ No newline at end of file diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_01/Outgoing.xml b/mocks/AtsESRP/FIND_SERVICE_BV_01/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6c24a9a8f476df56d16b4587bc2ed6377490b19 --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_01/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_01/Scenario.xml b/mocks/AtsESRP/FIND_SERVICE_BV_01/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc1a79a03ddb290a7f31ab701aeb97a52007731d --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_01/Scenario.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_01/run.sh b/mocks/AtsESRP/FIND_SERVICE_BV_01/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..497ac8b98d54fdd60ede83c1581cdc1caa24048e --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_01/run.sh @@ -0,0 +1,2 @@ +rm -f *.log +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml \ No newline at end of file diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_02/FindServiceRequest.sh b/mocks/AtsESRP/FIND_SERVICE_BV_02/FindServiceRequest.sh new file mode 100755 index 0000000000000000000000000000000000000000..599af5806f6fd54181397677908c9b9ae9f2b2ca --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_02/FindServiceRequest.sh @@ -0,0 +1,35 @@ +echo "Sending ECRF Request" +curl --location --request POST 'http://127.0.0.1:8080' \ +--header 'Content-Type: application/lost+xml' \ +--data-raw ' + + + + 43.58206959563555 6.974515914916991 + 200.0 + + + + + + urn:service:sos.police +' >> http.log + +sleep 5 + +curl --location --request POST 'http://127.0.0.1:8082' \ +--header 'Content-Type: application/lost+xml' \ +--data-raw ' + + + + 43.58206959563555 6.974515914916991 + 200.0 + + + + + + + urn:service:sos.police +' >> http.log \ No newline at end of file diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_02/Outgoing.xml b/mocks/AtsESRP/FIND_SERVICE_BV_02/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6c24a9a8f476df56d16b4587bc2ed6377490b19 --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_02/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_02/Scenario.xml b/mocks/AtsESRP/FIND_SERVICE_BV_02/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..cc1a79a03ddb290a7f31ab701aeb97a52007731d --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_02/Scenario.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_02/run.sh b/mocks/AtsESRP/FIND_SERVICE_BV_02/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..497ac8b98d54fdd60ede83c1581cdc1caa24048e --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_02/run.sh @@ -0,0 +1,2 @@ +rm -f *.log +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml \ No newline at end of file diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_03/Outgoing.xml b/mocks/AtsESRP/FIND_SERVICE_BV_03/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6c24a9a8f476df56d16b4587bc2ed6377490b19 --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_03/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_03/Scenario.xml b/mocks/AtsESRP/FIND_SERVICE_BV_03/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc73dd0b9ea85fb9ee020ef5934cb699ca13d2cd --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_03/Scenario.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_03/onInvite.sh b/mocks/AtsESRP/FIND_SERVICE_BV_03/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..383ef5f57c22dc07da6ccb22016cc75de734da67 --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_03/onInvite.sh @@ -0,0 +1,28 @@ +echo "Retrieve Location from LIS" >> http.log +curl --location --request POST 'http://127.0.0.1:8084' \ +--header 'Content-Type: application/held+xml' \ +--data-raw ' + + + sip:carol-01@demo.gridgears.io + +' >> http.log + +sleep 2 + +echo "Retrieve Next Hop from ECRF" >> http.log +curl --location --request POST 'http://127.0.0.1:8080' \ +--header 'Content-Type: application/lost+xml' \ +--data-raw ' + + + + 43.58206959563555 6.974515914916991 + 200.0 + + + + + + urn:service:sos.police +' >> http.log \ No newline at end of file diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_04/Outgoing.xml b/mocks/AtsESRP/FIND_SERVICE_BV_04/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6c24a9a8f476df56d16b4587bc2ed6377490b19 --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_04/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_04/Scenario.xml b/mocks/AtsESRP/FIND_SERVICE_BV_04/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..fc73dd0b9ea85fb9ee020ef5934cb699ca13d2cd --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_04/Scenario.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/FIND_SERVICE_BV_04/onInvite.sh b/mocks/AtsESRP/FIND_SERVICE_BV_04/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..f55294fcb37d8711e58d5bb403d409d4b6241cad --- /dev/null +++ b/mocks/AtsESRP/FIND_SERVICE_BV_04/onInvite.sh @@ -0,0 +1,25 @@ +echo "Dereference Location from LIS" >> http.log +curl --location --request POST 'http://127.0.0.1:8084/660bc838-882e-4683-8241-af26bb5960d8' \ +--header 'Content-Type: application/held+xml' \ +--data-raw ' + +' >> http.log + +sleep 2 + +echo "Retrieve Next Hop from ECRF" >> http.log +curl --location --request POST 'http://127.0.0.1:8080' \ +--header 'Content-Type: application/lost+xml' \ +--data-raw ' + + + + 43.58206959563555 6.974515914916991 + 200.0 + + + + + + urn:service:sos.police +' >> http.log \ No newline at end of file diff --git a/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/Outgoing.xml b/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..b6c24a9a8f476df56d16b4587bc2ed6377490b19 --- /dev/null +++ b/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/Scenario.xml b/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..3458ab2a575eb618f4903e912cb1008b0e08a235 --- /dev/null +++ b/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/Scenario.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/onInvite.sh b/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..040d7899853595f09bf4d9c01635f0bf6944f49f --- /dev/null +++ b/mocks/AtsESRP/FIXED_TARGET_SIP_INVITE_BV_01/onInvite.sh @@ -0,0 +1,2 @@ +echo "Simulate Proxy" +sipp -t t1 -trace_msg -m 1 -sf Outgoing.xml 127.0.0.1:5080 \ No newline at end of file diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/Outgoing.xml b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..38a806b327253a733ac441a9589c6a9a37dcac6d --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Call-Info: ;purpose=emergency-CallId + Max-Forwards: 70 + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/Scenario.xml b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..cd31a1b7ff38cc5ee46e6f9f0d0e2f8d2da5e0d4 --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/Scenario.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/onInvite.sh b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..040d7899853595f09bf4d9c01635f0bf6944f49f --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/onInvite.sh @@ -0,0 +1,2 @@ +echo "Simulate Proxy" +sipp -t t1 -trace_msg -m 1 -sf Outgoing.xml 127.0.0.1:5080 \ No newline at end of file diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/run.sh b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..02ae87f672435487bc2ff270d772e89a4f72f13d --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_01/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/Outgoing.xml b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/Outgoing.xml new file mode 100644 index 0000000000000000000000000000000000000000..da6189a59ac0655b51dac4764fdfc88b3fc964a9 --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/Outgoing.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Call-Info: ;purpose=emergency-IncidentId + Max-Forwards: 70 + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/Scenario.xml b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..3458ab2a575eb618f4903e912cb1008b0e08a235 --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/Scenario.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/onInvite.sh b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..040d7899853595f09bf4d9c01635f0bf6944f49f --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/onInvite.sh @@ -0,0 +1,2 @@ +echo "Simulate Proxy" +sipp -t t1 -trace_msg -m 1 -sf Outgoing.xml 127.0.0.1:5080 \ No newline at end of file diff --git a/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/run.sh b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..02ae87f672435487bc2ff270d772e89a4f72f13d --- /dev/null +++ b/mocks/AtsESRP/HEADERS_SIP_INVITE_BV_02/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_01/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_01/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..ccc1742d117628e03c7352a305e4c4eadb048397 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_01/Scenario.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_02/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_02/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..4cbb786cdebb737b114f89cb910ab86dcbcd151e --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_02/Scenario.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:psap1@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + + + Content-Length: 0 + ]]> + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_02/run.sh b/mocks/AtsESRP/QUEUE_STATE_BV_02/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..dd78b551a7fea5e486cd7bf91574c32734eb04c9 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_02/run.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +#set -vx + +rm *.log + +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml 127.0.0.1:5080 + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_03/Downstream.xml b/mocks/AtsESRP/QUEUE_STATE_BV_03/Downstream.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3c1643ac3597639950db1ba7e78ee12ee11b3ec --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_03/Downstream.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:psap1@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + + + Content-Length: 0 + ]]> + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_03/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_03/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..e73eef7b8a68cf604292e0ee6bd84b76ae4a4227 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_03/Scenario.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_03/runDownstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_03/runDownstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..36ed9bbbf35f4cb6844c6fbfd68af1a5fca03cf9 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_03/runDownstream.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -e +#set -vx + +sipp -t t1 -trace_msg -m 1 -sf Downstream.xml 127.0.0.1:5080 + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_03/runUpstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_03/runUpstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..d0461df85b795e8e34e954e3110f29d79a2c6d8c --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_03/runUpstream.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +#set -vx + +rm -f *.log + +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_04/Diversion.xml b/mocks/AtsESRP/QUEUE_STATE_BV_04/Diversion.xml new file mode 100644 index 0000000000000000000000000000000000000000..18dba90fe0193905cbebb33af455ad928b3c8a87 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_04/Diversion.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_04/Downstream.xml b/mocks/AtsESRP/QUEUE_STATE_BV_04/Downstream.xml new file mode 100644 index 0000000000000000000000000000000000000000..82d11c7120783b79a6e9c776b01a41a25c257cc8 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_04/Downstream.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:psap1@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + + + Content-Length: 0 + ]]> + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_04/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_04/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..3458ab2a575eb618f4903e912cb1008b0e08a235 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_04/Scenario.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_04/onInvite.sh b/mocks/AtsESRP/QUEUE_STATE_BV_04/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..dd445beb913d33801af578aabcb2f78378bcb8da --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_04/onInvite.sh @@ -0,0 +1,2 @@ +echo "Simulate Proxy" +sipp -t t1 -trace_msg -m 1 -sf Diversion.xml 127.0.0.1:5070 \ No newline at end of file diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_04/runDownstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_04/runDownstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..1652ae5e3c3470ad9bc1fd3a12a0d981e0dcada1 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_04/runDownstream.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 1 -sf Downstream.xml 127.0.0.1:5080 \ No newline at end of file diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_04/runUpstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_04/runUpstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..d0461df85b795e8e34e954e3110f29d79a2c6d8c --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_04/runUpstream.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +#set -vx + +rm -f *.log + +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_05/Diversion.xml b/mocks/AtsESRP/QUEUE_STATE_BV_05/Diversion.xml new file mode 100644 index 0000000000000000000000000000000000000000..18dba90fe0193905cbebb33af455ad928b3c8a87 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_05/Diversion.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_05/Downstream.xml b/mocks/AtsESRP/QUEUE_STATE_BV_05/Downstream.xml new file mode 100644 index 0000000000000000000000000000000000000000..82d11c7120783b79a6e9c776b01a41a25c257cc8 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_05/Downstream.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:psap1@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + + + Content-Length: 0 + ]]> + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_05/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_05/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..3458ab2a575eb618f4903e912cb1008b0e08a235 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_05/Scenario.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_05/onInvite.sh b/mocks/AtsESRP/QUEUE_STATE_BV_05/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..dd445beb913d33801af578aabcb2f78378bcb8da --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_05/onInvite.sh @@ -0,0 +1,2 @@ +echo "Simulate Proxy" +sipp -t t1 -trace_msg -m 1 -sf Diversion.xml 127.0.0.1:5070 \ No newline at end of file diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_05/runDownstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_05/runDownstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..1652ae5e3c3470ad9bc1fd3a12a0d981e0dcada1 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_05/runDownstream.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 1 -sf Downstream.xml 127.0.0.1:5080 \ No newline at end of file diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_05/runUpstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_05/runUpstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..d0461df85b795e8e34e954e3110f29d79a2c6d8c --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_05/runUpstream.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +#set -vx + +rm -f *.log + +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_06/Diversion.xml b/mocks/AtsESRP/QUEUE_STATE_BV_06/Diversion.xml new file mode 100644 index 0000000000000000000000000000000000000000..18dba90fe0193905cbebb33af455ad928b3c8a87 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_06/Diversion.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_06/Downstream.xml b/mocks/AtsESRP/QUEUE_STATE_BV_06/Downstream.xml new file mode 100644 index 0000000000000000000000000000000000000000..82d11c7120783b79a6e9c776b01a41a25c257cc8 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_06/Downstream.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:psap1@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + + + Content-Length: 0 + ]]> + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_06/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_06/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..3458ab2a575eb618f4903e912cb1008b0e08a235 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_06/Scenario.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_06/onInvite.sh b/mocks/AtsESRP/QUEUE_STATE_BV_06/onInvite.sh new file mode 100755 index 0000000000000000000000000000000000000000..dd445beb913d33801af578aabcb2f78378bcb8da --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_06/onInvite.sh @@ -0,0 +1,2 @@ +echo "Simulate Proxy" +sipp -t t1 -trace_msg -m 1 -sf Diversion.xml 127.0.0.1:5070 \ No newline at end of file diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_06/runDownstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_06/runDownstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..1652ae5e3c3470ad9bc1fd3a12a0d981e0dcada1 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_06/runDownstream.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 1 -sf Downstream.xml 127.0.0.1:5080 \ No newline at end of file diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_06/runUpstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_06/runUpstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..d0461df85b795e8e34e954e3110f29d79a2c6d8c --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_06/runUpstream.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +#set -vx + +rm -f *.log + +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_07/Downstream.xml b/mocks/AtsESRP/QUEUE_STATE_BV_07/Downstream.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3c1643ac3597639950db1ba7e78ee12ee11b3ec --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_07/Downstream.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: sut + Call-ID: [call_id] + CSeq: 1 SUBSCRIBE + Contact: sip:psap1@[local_ip]:[local_port] + Max-Forwards: 70 + Event: emergency-QueueState + Expires: 60 + Content-Length: 0 + ]]> + + + + + + + + + Content-Length: 0 + ]]> + + + + + + ;tag=[call_number] + To: sut + Call-ID: [call_id] + Cseq: 1 INVITE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=FAST_V2R1 2006 2007 IN IP4 155.11.49.64 + s=- + t=0 0 + m=audio 10500 RTP/AVP 8 0 18 4 96 97 + c=IN IP4 conftest.plugtests.net + a=rtpmap:0 PCMU/8000 + a=rtpmap:18 G729/8000 + a=rtpmap:4 G723/8000 + a=rtpmap:96 AMR/8000 + a=rtpmap:97 telephone-event/8000 + a=fmtp:97 0-15 + a=sendrecv + ]]> + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_07/Scenario.xml b/mocks/AtsESRP/QUEUE_STATE_BV_07/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..e73eef7b8a68cf604292e0ee6bd84b76ae4a4227 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_07/Scenario.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_07/runDownstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_07/runDownstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..36ed9bbbf35f4cb6844c6fbfd68af1a5fca03cf9 --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_07/runDownstream.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -e +#set -vx + +sipp -t t1 -trace_msg -m 1 -sf Downstream.xml 127.0.0.1:5080 + +exit $? diff --git a/mocks/AtsESRP/QUEUE_STATE_BV_07/runUpstream.sh b/mocks/AtsESRP/QUEUE_STATE_BV_07/runUpstream.sh new file mode 100755 index 0000000000000000000000000000000000000000..d0461df85b795e8e34e954e3110f29d79a2c6d8c --- /dev/null +++ b/mocks/AtsESRP/QUEUE_STATE_BV_07/runUpstream.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e +#set -vx + +rm -f *.log + +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml + +exit $? diff --git a/mocks/AtsESRP/SIP_BV_01/Scenario.xml b/mocks/AtsESRP/SIP_BV_01/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..e2825d40d3f3e2636be95f57a5b219ba432d8f25 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_01/Scenario.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + diff --git a/mocks/AtsESRP/SIP_BV_01/run.sh b/mocks/AtsESRP/SIP_BV_01/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..99c078cbad4e2ae027d739a5ace825c2b85f3364 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_01/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 2 -sf Scenario.xml diff --git a/mocks/AtsESRP/SIP_BV_02/Scenario.xml b/mocks/AtsESRP/SIP_BV_02/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..e2825d40d3f3e2636be95f57a5b219ba432d8f25 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_02/Scenario.xml @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + diff --git a/mocks/AtsESRP/SIP_BV_02/run.sh b/mocks/AtsESRP/SIP_BV_02/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..99c078cbad4e2ae027d739a5ace825c2b85f3364 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_02/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 2 -sf Scenario.xml diff --git a/mocks/AtsESRP/SIP_BV_03/Scenario.xml b/mocks/AtsESRP/SIP_BV_03/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..14f190b060717862b0aa0bfcc4167b7a7730dbe9 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_03/Scenario.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + diff --git a/mocks/AtsESRP/SIP_BV_03/run.sh b/mocks/AtsESRP/SIP_BV_03/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..99c078cbad4e2ae027d739a5ace825c2b85f3364 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_03/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 2 -sf Scenario.xml diff --git a/mocks/AtsESRP/SIP_BV_04/Scenario.xml b/mocks/AtsESRP/SIP_BV_04/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..14f190b060717862b0aa0bfcc4167b7a7730dbe9 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_04/Scenario.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + diff --git a/mocks/AtsESRP/SIP_BV_04/run.sh b/mocks/AtsESRP/SIP_BV_04/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..99c078cbad4e2ae027d739a5ace825c2b85f3364 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_04/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 2 -sf Scenario.xml diff --git a/mocks/AtsESRP/SIP_BV_05/Scenario.xml b/mocks/AtsESRP/SIP_BV_05/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..6240a7465dc2d79e2ab37b9341413f6117123edd --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_05/Scenario.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + diff --git a/mocks/AtsESRP/SIP_BV_05/run.sh b/mocks/AtsESRP/SIP_BV_05/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..99c078cbad4e2ae027d739a5ace825c2b85f3364 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_05/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 2 -sf Scenario.xml diff --git a/mocks/AtsESRP/SIP_BV_06/Scenario.xml b/mocks/AtsESRP/SIP_BV_06/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..6240a7465dc2d79e2ab37b9341413f6117123edd --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_06/Scenario.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + diff --git a/mocks/AtsESRP/SIP_BV_06/run.sh b/mocks/AtsESRP/SIP_BV_06/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..99c078cbad4e2ae027d739a5ace825c2b85f3364 --- /dev/null +++ b/mocks/AtsESRP/SIP_BV_06/run.sh @@ -0,0 +1 @@ +sipp -t t1 -trace_msg -m 2 -sf Scenario.xml diff --git a/mocks/AtsESRP/TARGET_SIP_REGISTER_BV_01/Scenario.xml b/mocks/AtsESRP/TARGET_SIP_REGISTER_BV_01/Scenario.xml new file mode 100644 index 0000000000000000000000000000000000000000..e8bb60f8ed303f007ffc00ee992ae44de4228874 --- /dev/null +++ b/mocks/AtsESRP/TARGET_SIP_REGISTER_BV_01/Scenario.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + diff --git a/mocks/AtsESRP/TARGET_SIP_REGISTER_BV_01/run.sh b/mocks/AtsESRP/TARGET_SIP_REGISTER_BV_01/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..497ac8b98d54fdd60ede83c1581cdc1caa24048e --- /dev/null +++ b/mocks/AtsESRP/TARGET_SIP_REGISTER_BV_01/run.sh @@ -0,0 +1,2 @@ +rm -f *.log +sipp -t t1 -trace_msg -m 1 -sf Scenario.xml \ No newline at end of file diff --git a/mocks/AtsPSAP/TC_PSAP_DEQUEUE_BV_01/TC_PSAP_DEQUEUE_BV_01.json b/mocks/AtsPSAP/TC_PSAP_DEQUEUE_BV_01/TC_PSAP_DEQUEUE_BV_01.json new file mode 100644 index 0000000000000000000000000000000000000000..7331d5ae5de6f1712c7cbeef931b67f9a7819c76 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_DEQUEUE_BV_01/TC_PSAP_DEQUEUE_BV_01.json @@ -0,0 +1,72 @@ +{ + "uuid": "dafbe210-ba60-11ec-b294-23089ec390f3", + "lastMigration": 19, + "name": "PSAP", + "endpointPrefix": "", + "latency": 0, + "port": 30044, + "routes": [ + { + "uuid": "dafbe211-ba60-11ec-b294-23089ec390f3", + "documentation": "", + "method": "get", + "endpoint": "", + "responses": [ + { + "uuid": "dafbe212-ba60-11ec-b294-23089ec390f3", + "body": "{\n \"DequeueRegistrationExpirationTime\": 10,\n \"DequeueRegistrationStatusCode\": 0\n}\n", + "latency": 0, + "statusCode": 200, + "label": "", + "headers": [ + { + "key": "Content-Type", + "value": "application/json;charset=utf-8" + } + ], + "filePath": "", + "sendFileAsBody": false, + "rules": [], + "rulesOperator": "OR", + "disableTemplating": false, + "fallbackTo404": false + } + ], + "enabled": true, + "randomResponse": false, + "sequentialResponse": false + } + ], + "proxyMode": false, + "proxyHost": "", + "proxyRemovePrefix": false, + "cors": true, + "headers": [ + { + "key": "Content-Type", + "value": "application/json" + } + ], + "proxyReqHeaders": [ + { + "key": "", + "value": "" + } + ], + "proxyResHeaders": [ + { + "key": "", + "value": "" + } + ], + "hostname": "0.0.0.0", + "tlsOptions": { + "enabled": false, + "type": "CERT", + "pfxPath": "", + "certPath": "", + "keyPath": "", + "caPath": "", + "passphrase": "" + } +} \ No newline at end of file diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..3900a2089816aa83bdee4c749d0092ca979b018e --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCallTalker.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 10 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: text/plain + Content-Length: [len] + + blablabla + + ]]> + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f3cbc9ccd237aea396e26ba25ce2b534917ae5c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..050e8bb98df9fd522f844259f866747d27b75dab --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/PsapCaller.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/uac_urn.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/uac_urn.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5f95a88eea7eaec87ab94372038625dfd7b5810 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INFO_BV_01/uac_urn.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..640a977035d3189e8855331251ed06f1437980eb --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f3cbc9ccd237aea396e26ba25ce2b534917ae5c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..38c7b58b80fe87c4b73ceff2b4a8b44420dd8a81 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/PsapCaller.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/uac_urn.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/uac_urn.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5f95a88eea7eaec87ab94372038625dfd7b5810 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_01/uac_urn.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..a302e9060e1b009fbb41ece01561b0f800b89896 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..471e14555ab7df5fa003774cb62ad335b29a510d --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller_register.xml -oocsf PsapCaller.xml 127.0.0.1:5061 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..b7dd0004585a4786560c6916b351cb8ddc2c39a1 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller_register.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller_register.xml new file mode 100644 index 0000000000000000000000000000000000000000..687598d31044385410bd49c3332aa310c57b8fa0 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_02/PsapCaller_register.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: caller + Call-ID: [call_id] + CSeq: 1 REGISTER + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Expires: 1800 + User-Agent: SIPp/Linux + Content-Length: 0 + + ]]> + + + + + + + ;tag=[call_number] + To: caller + Call-ID: [call_id] + CSeq: 2 REGISTER + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Expires: 1800 + User-Agent: SIPp/Linux + Content-Length: 0 + ]]> + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..6b1f2b1a55e003273cc147b0018bea65c063e325 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMA/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f3cbc9ccd237aea396e26ba25ce2b534917ae5c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c861c7e9fea6f932fd0cd902718f5ea413c84d1 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_03/PsapCaller.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMA/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..1a5350dad48f910d132312d803f320ff69377789 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMA/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCallTalker.xml~ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCallTalker.xml~ new file mode 100644 index 0000000000000000000000000000000000000000..a302e9060e1b009fbb41ece01561b0f800b89896 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCallTalker.xml~ @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..471e14555ab7df5fa003774cb62ad335b29a510d --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller_register.xml -oocsf PsapCaller.xml 127.0.0.1:5061 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff6f9c94278dfea9bd8d1769152c16914212b0e6 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMA/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.xml~ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.xml~ new file mode 100644 index 0000000000000000000000000000000000000000..b7dd0004585a4786560c6916b351cb8ddc2c39a1 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller.xml~ @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller_register.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller_register.xml new file mode 100644 index 0000000000000000000000000000000000000000..687598d31044385410bd49c3332aa310c57b8fa0 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_04/PsapCaller_register.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[call_number] + To: caller + Call-ID: [call_id] + CSeq: 1 REGISTER + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Expires: 1800 + User-Agent: SIPp/Linux + Content-Length: 0 + + ]]> + + + + + + + ;tag=[call_number] + To: caller + Call-ID: [call_id] + CSeq: 2 REGISTER + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Expires: 1800 + User-Agent: SIPp/Linux + Content-Length: 0 + ]]> + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..640a977035d3189e8855331251ed06f1437980eb --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..d41b9a7926ac65867c4ae31c6895e0441070bf6b --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t t1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..aad338da3788f4e9a94ed0ce4b63d2e67f2fdc4f --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_05/PsapCaller.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..640a977035d3189e8855331251ed06f1437980eb --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..5f3825b44e99d2b3d753b619157c991fca54ff52 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t t1 -trace_msg -trace_calldebug -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..aad338da3788f4e9a94ed0ce4b63d2e67f2fdc4f --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_06/PsapCaller.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..640a977035d3189e8855331251ed06f1437980eb --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCallTalker.xml @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 INVITE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Accept: application/pidf+xml + Content-Type: multipart/mixed; boundary=qfpbntOwkOXuJWki + Content-Length: [len] + + --qfpbntOwkOXuJWki + Content-Type: application/sdp + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + --qfpbntOwkOXuJWki + Content-Type: application/pidf+xml + Content-ID: + + 43.62303240 7.04618454false2018-04-16T08:23:31.036Zgps01003118-0200-d09c-a762-00046e1800032018-04-15T08:23:31.036Z + --qfpbntOwkOXuJWki-- + + ]]> + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 1 ACK + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] [peer_tag_param] + Call-ID: [call_id] + CSeq: 2 BYE + Contact: sip:sipp@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Performance Test + Content-Length: 0 + + ]]> + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..5f3825b44e99d2b3d753b619157c991fca54ff52 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t t1 -trace_msg -trace_calldebug -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..aad338da3788f4e9a94ed0ce4b63d2e67f2fdc4f --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_INVITE_BV_08/PsapCaller.xml @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Length: 0 + + ]]> + + + + + + + Content-Type: application/sdp + Content-Length: [len] + + v=0 + o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] + s=- + c=IN IP[media_ip_type] [media_ip] + t=0 0 + m=audio [media_port] RTP/AVP 0 + a=rtpmap:0 PCMU/8000 + + ]]> + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..f38c53a65a5a09129add5ae5bedc6bad3f0f44b6 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCallTalker.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + ]]> + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f3cbc9ccd237aea396e26ba25ce2b534917ae5c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3399760bdba8a07ebce4b79eaf3f209e0b57808 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_01/PsapCaller.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..e55666b9ead9774753ad0e7dafbbb2bc276ed01c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCallTalker.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 MESSAGE + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Call-Info: ;purpose=emergency-CallId + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Content-Type: text/plain + Content-Length: [len] + + blablabla + + ]]> + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f3cbc9ccd237aea396e26ba25ce2b534917ae5c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3399760bdba8a07ebce4b79eaf3f209e0b57808 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_MESSAGE_BV_02/PsapCaller.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCallTalker.xml b/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCallTalker.xml new file mode 100644 index 0000000000000000000000000000000000000000..8dad9293710b3f627f5fa7a203fd9c4c17994edd --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCallTalker.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + ;tag=[pid]SIPpTag00[call_number] + To: [service] + Call-ID: [call_id] + CSeq: 1 OPTIONS + Contact: sip:alice-01@[local_ip]:[local_port] + Max-Forwards: 70 + Subject: Plugtests Test + Geolocation: ;inserted_by="sip:bob-04@plugtests.net" + Geolocation-Routing: no + Content-Type: text/plain + Content-Length: [len] + + blablabla + + ]]> + + + + + + + + + + + + + + + + diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCaller.sh b/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCaller.sh new file mode 100755 index 0000000000000000000000000000000000000000..7f3cbc9ccd237aea396e26ba25ce2b534917ae5c --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCaller.sh @@ -0,0 +1,3 @@ +echo "Simulate PSAP Caller side (UAS)" +rm *.log +sipp -t u1 -trace_msg -trace_err -m 2 -sf PsapCaller.xml 127.0.0.1:5060 diff --git a/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCaller.xml b/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCaller.xml new file mode 100644 index 0000000000000000000000000000000000000000..c58928912d65d89a6f90b3b907f642567e3154e5 --- /dev/null +++ b/mocks/AtsPSAP/TC_PSAP_SIP_OPTIONS_BV_01/PsapCaller.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Content-Length: 0 + + ]]> + + + + + + + + + + + + + + + + + + + + diff --git a/scripts/run_all.bash b/scripts/run_all.bash index 49cd1ab3eec01aedb067f1dea2ef79d9f2827769..300ebf0a27c1c743a4e56721da2e6a78e613e9b1 100755 --- a/scripts/run_all.bash +++ b/scripts/run_all.bash @@ -1,6 +1,6 @@ #!/bin/bash #set -e -set -vx +#set -vx clear diff --git a/scripts/run_mtc.bash b/scripts/run_mtc.bash index 109c392701313c734fe92aa908c497cdf18a038c..0559a9eaa0bd77cbbbdbd85f61678d8367e14861 100755 --- a/scripts/run_mtc.bash +++ b/scripts/run_mtc.bash @@ -1,6 +1,6 @@ #!/bin/bash #set -e -set -vx +#set -vx clear diff --git a/scripts/run_ptcs.bash b/scripts/run_ptcs.bash index 9e69a065eae7d58800a6cb5d7618ae676414e995..1c097d445d09ed82c6c8e934e7e57c03fe142474 100755 --- a/scripts/run_ptcs.bash +++ b/scripts/run_ptcs.bash @@ -1,6 +1,6 @@ #!/bin/bash #set -e -set -vx +#set -vx clear diff --git a/scripts/update_user_name.sh b/scripts/update_user_name.sh new file mode 100755 index 0000000000000000000000000000000000000000..b5c5d7f3aa7a64d722acac43be8be11ebc2a15df --- /dev/null +++ b/scripts/update_user_name.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +# Debug mode +#set -e +#set -vx + +# Usage: sudo ./update_user_name.bash +# TODO Use git clone in temporary directory + +USER_NAME='s/etsi/vagrant/g' +for i in `find /home/vagrant/dev/$1 -name "*.cf*"` +do + sed --in-place ${USER_NAME} $i +done + +exit 0 diff --git a/test_purposes/aml/aml_commons.tplan2 b/test_purposes/aml/aml_commons.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..d6e9ae81d8aa9385971b9bfb6c5fc0e8d63c6af5 --- /dev/null +++ b/test_purposes/aml/aml_commons.tplan2 @@ -0,0 +1,121 @@ +Package aml_commons { + Domain { + pics: + - PICS_SMS_SUPPORT // IUT supports AML via SMS + - PICS_HTTPS_SUPPORT // IUT supports AML via HTTPS + ; + entities: + - USER + - IUT // The end-user device + - SMS_ENDPOINT + - HTTPS_ENDPOINT + ; + events: + - configured + - sends + - initiates + - determines + - has_no_record_of + - is_triggered_to_perform + - close_to + ; + event templates: + - "Emergency Call is triggered" { + the IUT entity initiates an emergency sms + } + ; + } + Data { + type IMSI; + + type Config + with + "SMS_ENDPOINT" of type Number + ; + + + type AML_SMS_MESSAGE + with + "A\"ML" of type Number, + "lt" of type DecimalDegrees, + "lg" of type DecimalDegrees, + "rd" of type Number, + "top" of type UTCString, + "lc" of type LevelOfConfidence, + "pm" of type PositioningMethod, + "si" of type IMSI, + "ei" of type Number, + "mcc" of type Number, + "mnc" of type Number, + "ml" of type Number, + optional "al" of type Number, + optional "toc" of type UTCString + ; + + type HTTP_MESSAGE + with + "Body" of type AML_BODY, + "ContentType" of type String, + "Method" of type String + ; + + type AML_BODY + with + "location_latitude" of type DecimalDegrees, + "location_longitude" of type DecimalDegrees, + "location_accuracy" of type Number, + "location_time" of type Number, + "location_source" of type String, + "location_confidence" of type Number, + "device_imsi" of type Number, + "device_imei" of type Number, + "cell_network_mcc" of type Number, + "cell_network_mnc" of type Number, + "v" of type Number, + optional "emergency_number" of type String, + optional "source" of type String, + optional "os_version" of type String, + optional "time" of type Number, + optional "gt_location_latitude" of type DecimalDegrees, + optional "gt_location_longitude" of type DecimalDegrees, + optional "location_altitude" of type Number, + optional "location_vertical_accuracy" of type Number, + optional "location_bearing" of type Number, + optional "location_speed" of type Number, + optional "device_number" of type String, + optional "device_model" of type String, + optional "device_iccid" of type Number, + optional "cell_home_mcc" of type Number, + optional "cell_home_mnc" of type Number + ; + + type LevelOfConfidence; + type DecimalDegrees; + type Number; + type String; + type PositioningMethod; + type UTCString; // YYYYMMDDhhmmss + type AML_SMS_FORMAT; + type Radius; // Numeric or 'N' + type PartialImsi; // MccMnc000000000 (MCC and MNC only, rest 0s) + type PartialImei; // Complete IMEI or optionally when only SMS is used Handset identifier only, rest 0s + + Number AML_VERSION; // 1 + + PositioningMethod POSITIONING_SUCCESS; // W = WIFI, G = GNSS, C = CELL + PositioningMethod POSITIONING_FAILURE; // N + Number LEVEL_OF_CONFIDENCE; // The Level of Confidence is a percentage probability that the mobile handset is within the area being communicated + + + // ###### + // PIXITS + DecimalDegrees PX_LATITUDE; // The WGS84 latitude of the center of the location area given in decimal degrees using 5 decimal places giving resolution to 1.1 meters + DecimalDegrees PX_LONGITUDE; // The WGS84 longitude of the center of the location area given in decimal degrees using 5 decimal places giving resolution to 1.1 meters + + + Number PX_IMSI; // The SIM card identifier of the IUT + Number PX_IMEI; // The identifier of the IUT + Number PX_MCC; // Mobile Country Code of the IUT + Number PX_MNC; // Mobile Network Code of the IUT + } +} \ No newline at end of file diff --git a/test_purposes/aml/aml_tps.tplan2 b/test_purposes/aml/aml_tps.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..78cfa5d075321416bedc765736a7d9c1106b6e41 --- /dev/null +++ b/test_purposes/aml/aml_tps.tplan2 @@ -0,0 +1,405 @@ +Package AML { + Group 'SMS Transmission' { + import all from aml_commons; + + Test Purpose { + TP Id TP_AML_SMS_BV_01 + + Test objective + "Verify that the IUT automatically sends AML via SMS when an emergency call is initiated" + + Reference + "ETSI TS 103 625 V1.2.1, clause 5.2 paragraph 2" + + PICS Selection PICS_SMS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the SMS_ENDPOINT entity + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency call + } + then { + the IUT entity sends an AML_SMS_MESSAGE to the SMS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_SMS_BV_02 + + Test objective + "Verify that the IUT automatically sends AML via SMS when an emergency SMS is sent" + + Reference + "ETSI TS 103 625 V1.2.1, clause 5.2 paragraph 3" + + PICS Selection PICS_SMS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the SMS_ENDPOINT entity + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency sms + } + then { + the IUT entity sends an AML_SMS_MESSAGE to the SMS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_SMS_BV_03 + + Test objective + "Verify the SMS format and values of the AML SMS message" + + Reference + "ETSI TS 103 625 V1.2.1, Annex A, table A.1" + + PICS Selection PICS_SMS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the SMS_ENDPOINT entity + and the IUT entity determines a Location + containing + latitude indicating value close_to PX_LATITUDE, + longitude indicating value close_to PX_LONGITUDE + ; + } + + Expected behaviour + ensure that { + when { + the IUT entity is_triggered_to_perform an emergency call + } + then { + the IUT entity sends an AML_SMS_MESSAGE containing + User_Data containing + "AM\"L" indicating value AML_VERSION, + "lt" indicating value close_to PX_LATITUDE, + "lg" indicating value close_to PX_LONGITUDE, + "rd" containing Number + indicating value "the radius of the location area in meters";, + "top" containing UTCString + indicating value "when the location was determined";, + "lc" containing Number + indicating value "the level of confidence";, + "pm" indicating value "('G' | 'W' | 'C')", + "si" containing PartialImsi + derived from PX_IMSI;, + "ei" containing PartialImei + derived from PX_IMEI;, + "mcc" corresponding to PX_MCC, + "mnc" corresponding to PX_MNC, + "ml" derived from the value of AML_SMS_MESSAGE; + ; + to the SMS_ENDPOINT entity + } + } + } + Test Purpose { + TP Id TP_AML_SMS_BV_04 + Test objective + "Verify that the IUT sends AML via SMS within the timeout T1" + Reference + "ETSI TS 103 625 V1.2.1, clause 5.1 paragraph 1-2" + + PICS Selection PICS_SMS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the SMS_ENDPOINT entity + and the IUT entity is configured the timeout T1 + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency call + } + then { + the IUT entity sends an AML_SMS_MESSAGE "within" timeout T1 + to the SMS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_SMS_BV_05 + + Test objective + "Verify the SMS format and values of the AML message when no location can be determined" + + Reference + "ETSI TS 103 625 V1.2.1, Annex A, table A.1" + + PICS Selection PICS_SMS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the SMS_ENDPOINT entity + and the IUT entity not determines a Location + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency call + } + then { + the IUT entity sends an AML_SMS_MESSAGE containing + User_Data containing + "AM\"L" indicating value AML_VERSION, + "lt" set to '+00.00000', + "lg" set to '+000.00000', + "rd" set to N, + "top" containing UTCString + indicating value "when location process was deemed to have failed";, + "lc" set to 0, + "pm" set to N, + "si" containing PartialImsi + derived from PX_IMSI;, + "ei" containing PartialImei + derived from PX_IMEI;, + "mcc" set to PX_MCC, + "mnc" set to PX_MNC, + "ml" derived from the value of AML_SMS_MESSAGE; + ; + to the SMS_ENDPOINT entity + } + } + } + Test Purpose { + TP Id TP_AML_SMS_BV_06 + Test objective + "Verify that no record of the AML message is available to the user" + Reference + "ETSI TS 103 625 V1.2.1, clause 5.2 paragraph 2" + + PICS Selection PICS_SMS_SUPPORT + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency call + } + then { + the IUT entity sends an AML_SMS_MESSAGE to the SMS_ENDPOINT entity + and the USER entity has_no_record_of the AML_SMS + } + } + } + } + + Group 'HTTPs Transmission' { + import all from aml_commons; + + Test Purpose { + TP Id TP_AML_HTTPS_BV_01 + + Test objective + "Verify that the IUT automatically sends AML via HTTPs when an emergency call is initiated" + + Reference + "ETSI TS 103 625 V1.2.1, clause 5.2 paragraph 2" + + PICS Selection PICS_HTTPS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the HTTPS_ENDPOINT entity + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency call + } + then { + the IUT entity sends an HTTP_MESSAGE containing + Method set to 'POST', + ContentType set to 'application/x-www-form-urlencoded', + Body corresponding to any AML_BODY + ; + to the HTTPS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_HTTPS_BV_02 + + Test objective + "Verify that the IUT automatically sends AML via HTTPs when an emergency SMS is sent" + + Reference + "ETSI TS 103 625 V1.2.1, clause 5.2 paragraph 3" + + PICS Selection PICS_HTTPS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the HTTPS_ENDPOINT entity + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency sms + } + then { + the IUT entity sends an HTTP_MESSAGE containing + Method set to 'POST', + ContentType set to 'application/x-www-form-urlencoded', + Body corresponding to any AML_BODY + ; + to the HTTPS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_HTTPS_BV_03 + + Test objective + "Verify the HTTP Format of the AML message" + + Reference + "ETSI TS 103 625 V1.2.1, Annex A, table A.1" + + PICS Selection PICS_HTTPS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the HTTPS_ENDPOINT entity + and the IUT entity determines a Location + containing + latitude indicating value close_to PX_LATITUDE, + longitude indicating value close_to PX_LONGITUDE + ; + } + + Expected behaviour + ensure that { + when { + the IUT entity is_triggered_to_perform an emergency call + } + then { + the IUT entity sends an HTTP_MESSAGE containing + Method set to 'POST', + ContentType set to 'application/x-www-form-urlencoded', + Body containing + "v" set to 1, + "location_latitude" indicating value close_to PX_LATITUDE, + "location_longitude" indicating value close_to PX_LONGITUDE, + "location_time" containing Number + indicating value "when the location was determined";, + "location_accuracy" containing Number + indicating value "the radius of the location area in meters";, + "location_source" indicating value "('gps' | 'Wi-Fi' | 'cell')", + "location_confidence" containing Number + indicating value "the level of confidence";, + "device_imsi" corresponding to PX_IMSI, + "device_imei" corresponding to PX_IMEI, + "cell_network_mcc" corresponding to PX_MCC, + "cell_network_mnc" corresponding to PX_MNC + ; + ; + to the HTTPS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_HTTPS_BV_04 + + Test objective + "Verify that the IUT sends AML via HTTPs within the timeout T1" + + Reference + "ETSI TS 103 625 V1.2.1, clause 5.1 paragraph 1-2" + + PICS Selection PICS_HTTPS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the HTTPS_ENDPOINT entity + and the IUT entity is configured the timeout T1 + } + + Expected behaviour + ensure that { + when { + the IUT entity initiates an emergency call + } + then { + the IUT entity sends an HTTP_MESSAGE "within" timeout T1 containing + Method set to 'POST', + ContentType set to 'application/x-www-form-urlencoded', + Body corresponding to any AML_BODY + ; + to the HTTPS_ENDPOINT entity + } + } + } + + Test Purpose { + TP Id TP_AML_HTTPS_BV_05 + + Test objective + "Verify the HTTP format and values of the AML message when no location can be determined" + + Reference + "ETSI TS 103 625 V1.2.1, clause 6.3.6.2, paragraph 3", + "ETSI TS 103 625 V1.2.1, Annex A, table B.1" + + PICS Selection PICS_HTTPS_SUPPORT + + Initial conditions + with { + the IUT entity is configured to the HTTPS_ENDPOINT entity + and the IUT entity not determines a Location + } + + Expected behaviour + ensure that { + when { + the IUT entity is_triggered_to_perform an emergency call + } + then { + the IUT entity sends an HTTP_MESSAGE containing + Method set to 'POST', + ContentType set to 'application/x-www-form-urlencoded', + Body containing + "v" set to 1, + "location_latitude" set to '+00.00000', + "location_longitude" set to '+000.00000', + "location_time" containing Number + indicating value "when location process was deemed to have failed";, + "location_source" set to 'unknown', + "location_accuracy" set to 0, + "location_confidence" set to 0, + "device_imsi" corresponding to PX_IMSI, + "device_imei" corresponding to PX_IMEI, + "cell_network_mcc" corresponding to PX_MCC, + "cell_network_mnc" corresponding to PX_MNC + ; + ; + to the HTTPS_ENDPOINT entity + } + } + } + } +} + + + diff --git a/test_purposes/bcf/bcf.tplan2 b/test_purposes/bcf/bcf.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..d1d3e717bb2c7f18cdbb82a65ee8af6c9c434d33 --- /dev/null +++ b/test_purposes/bcf/bcf.tplan2 @@ -0,0 +1,379 @@ +/* ETSI Software License +* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, +* free of charge, to use, reproduce and modify this software source code, under the following conditions: +* This source code is provided AS IS with no warranties, express or implied, including but not limited to, +* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement +* of intellectual property rights. +* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without +* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary +* loss) arising out of or related to the use of or inability to use the source code. +* This permission is granted to facilitate the implementation of the related ETSI standard, provided that +* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions +* as the present permission. +* This permission does not apply to any documentation associated with this source code for which ETSI keeps +* all rights reserved. +* The present ETSI Source Code license shall be included in all copies of whole or part of this source code +* and shall not imply any sub-license right. +* (c) ETSI 2021 +*/ + + +Package NG112_BCF { + + Group "Invite" { + + import all from bcf_commons; + + Test Purpose { + TP Id TP_BCF_SIP_INVITE_BV_01 + Test objective + "IUT forwards well-formated INVITE to PSAP" + Reference + "ETSI TS 103 479 [1], clause 5.1", + "ETSI TS 103 698 [11], clause 5.1.1", + "EENA Next Generation 112 LTD [2], Clause 4.2" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 + Initial conditions with { + the IUT entity acceptingIncomingCalls + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "application/sdp" + ; + } + then { + the IUT entity sends a TCP SIP INVITE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "application/sdp" + ; + } + } + } // End of TP_BCF_SIP_INVITE_BV_01 + + Test Purpose { + TP Id TP_BCF_SIP_INVITE_BV_02 + Test objective + "IUT adds EES-source to the INVITE Via header" + Reference + "EENA Next Generation 112 LTD [2], Clause 4.2 and 4.2.2" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 + Initial conditions with { + the IUT entity acceptingIncomingCalls + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "application/sdp" + ; + } + then { + the IUT entity sends a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "application/sdp", + Via indicating value PX_BCF_ESS_SOURCE //e.g. a7123gc42@sbc22.example.net + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_INVITE_BV_02 + + Test Purpose { + TP Id TP_BCF_SIP_INVITE_BV_03 + Test objective + "IUT adds Incident Tracking ID within Call-Info header to the INVITE message." + Reference + "ETSI TS 103 479 [1], clause 5.1.1, 6.1.2.7", + "ETSI TS 103 698 [11], clause 5.1.1" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 and PICS_BCF_M_SIP_CALL_INFO_INCIDENT_TRACKING_ID + Initial conditions with { + the IUT entity acceptingIncomingCalls + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "application/sdp" + ; + } + then { + the IUT entity sends a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "application/sdp", + Call_Info indicating value PX_CALL_INFO_INCIDENT_ID + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_INVITE_BV_03 + + Test Purpose { + TP Id TP_BCF_SIP_INVITE_BV_04 + Test objective + "IUT adds Call ID within Call-Info header to the INVITE message." + Reference + "ETSI TS 103 479 [1], clauses 5.1.1 and 6.1.2.7", + "ETSI TS 103 698 [11], clauses 5.1.1 and 6.1.2.7" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 and PICS_BCF_M_SIP_CALL_INFO_CALL_ID + Initial conditions with { + the IUT entity acceptingIncomingCalls + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "application/sdp" + ; + } + then { + the IUT entity sends a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "application/sdp", + Call_Info indicating value PX_CALL_INFO_CALL_ID + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_INVITE_BV_04 + + Test Purpose { + TP Id TP_BCF_SIP_INVITE_BV_05 + Test objective + "IUT adds Source ID within Call-Info header to the INVITE message." + Reference + "ETSI TS 103 479 [1], clause 5.1.1, 6.1.2.7", + "ETSI TS 103 698 [11], clause 5.1.1" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 and PICS_BCF_M_SIP_CALL_INFO_SOURCE_ID + Initial conditions with { + the IUT entity acceptingIncomingCalls + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "application/sdp" + ; + } + then { + the IUT entity sends a TCP SIP_INVITE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "application/sdp", + Call_Info indicating value PX_CALL_INFO_SOURCE_ID + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_INVITE_BV_05 + + } // End of group Invite + + Group "Message" { + + import all from bcf_commons; + + Test Purpose { + TP Id TP_BCF_SIP_MESSAGE_BV_01 + Test objective + "IUT forwards well-formated MESSAGE to PSAP" + Reference + "ETSI TS 103 479 [1], clause 5.1", + "ETSI TS 103 698 [11], clause 5.1.1", + "EENA Next Generation 112 LTD [2], Clause 4.2" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 + Initial conditions with { + the IUT entity acceptingIM + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "text/plain" + ; + } + then { + the IUT entity sends a TCP SIP MESSAGE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "text/plain" + ; + } + } + } // End of TP_BCF_SIP_MESSAGE_BV_01 + + Test Purpose { + TP Id TP_BCF_SIP_MESSAGE_BV_02 + Test objective + "IUT adds EES-source to the MESSAGE Via header" + Reference + "EENA Next Generation 112 LTD [2], Clause 4.2 and 4.2.2" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 + Initial conditions with { + the IUT entity acceptingIM + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "text/plain" + ; + } + then { + the IUT entity sends a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "text/plain", + Via indicating value "PX_IMS_SUT_BCF_IPADDR or PX_IMS_SUT_BCF_HOME_DOMAIN and PX_IMS_SUT_BCF_PORT" + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_MESSAGE_BV_02 + + Test Purpose { + TP Id TP_BCF_SIP_MESSAGE_BV_03 + Test objective + "IUT adds Incident Tracking ID within Call-Info header to the MESSAGE message." + Reference + "ETSI TS 103 479 [1], clause 5.1.1, 6.1.2.7", + "ETSI TS 103 698 [11], clause 5.1.1" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 and PICS_BCF_M_SIP_CALL_INFO_INCIDENT_TRACKING_ID + Initial conditions with { + the IUT entity acceptingIM + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "text/plain" + ; + } + then { + the IUT entity sends a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "text/plain", + Call_Info indicating value PX_CALL_INFO_INCIDENT_ID + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_MESSAGE_BV_03 + + Test Purpose { + TP Id TP_BCF_SIP_MESSAGE_BV_04 + Test objective + "IUT adds Call ID within Call-Info header to the MESSAGE message." + Reference + "ETSI TS 103 479 [1], clauses 5.1.1 and 6.1.2.7", + "ETSI TS 103 698 [11], clauses 5.1.1 and 6.1.2.7" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 and PICS_BCF_M_SIP_CALL_INFO_CALL_ID + Initial conditions with { + the IUT entity acceptingIM + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "text/plain" + ; + } + then { + the IUT entity sends a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "text/plain", + Call_Info indicating value PX_CALL_INFO_CALL_ID + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_MESSAGE_BV_04 + + Test Purpose { + TP Id TP_BCF_SIP_MESSAGE_BV_05 + Test objective + "IUT adds Source ID within Call-Info header to the MESSAGE message." + Reference + "ETSI TS 103 479 [1], clause 5.1.1, 6.1.2.7", + "ETSI TS 103 698 [11], clause 5.1.1" + Config Id CFG_BCF_01 + PICS Selection PICS_BCF_S_SIP_TCP1 and PICS_BCF_M_SIP_CALL_INFO_SOURCE_ID + Initial conditions with { + the IUT entity acceptingIM + } + Expected behaviour + ensure that { + when { + the IUT entity receives a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_SERVICE_URN, + Content_Type indicating value "text/plain" + ; + } + then { + the IUT entity sends a TCP SIP_MESSAGE containing + Request_URI indicating value PX_BCF_REQUEST_URI, + Content_Type indicating value "text/plain", + Call_Info indicating value PX_CALL_INFO_SOURCE_ID + ; + to the PSAP entity + } + } + } // End of TP_BCF_SIP_MESSAGE_BV_05 + + } // End of group Message + + Group "Security" { + + import all from bcf_commons; + import all from psap_commons; + + Test Purpose { + TP Id TP_BCF_TLS_BI_01 + + Test objective + "IUT rejects requests without a certificate" + + Reference + "ETSI TS 103 479 [1], clause 5.5", + "EENA Next Generation 112 LTD [2], Clause 4.10", + "RFC5985 [3]" + Config Id CFG_BCF_01 + + PICS Selection PICS_BCF_TLS_AUTHENTICATION + + Initial conditions with { + the IUT entity isDisconnected + } + + Expected behaviour + ensure that { + when { + the IUT entity receives any SIP_REQUEST containing + not certificate + ; + } + then { + the IUT entity rejects the Connection + } + } + } + + } // End of group Security + +} // End of package NG112_BCF diff --git a/test_purposes/bcf/bcf_commons.tplan2 b/test_purposes/bcf/bcf_commons.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..eea1d4485d42233f2180ce744955f886cbae90ff --- /dev/null +++ b/test_purposes/bcf/bcf_commons.tplan2 @@ -0,0 +1,65 @@ +Package bcf_commons { + + Domain { + pics: + //- PICS_BCF_A_SIP_BSC1 //admin call + //- PICS_BCF_E_SIP_URN1 //em call with geolocation (value) + //- PICS_BCF_E_SIP_URN2 //em call with geolocation (token) + //- PICS_BCF_E_SIP_URN3 //em call without geolocation (id) + //- PICS_BCF_S_SIP_UDP1 //call via UDP + - PICS_BCF_S_SIP_TCP1 //call via TCP + //- PICS_BCF_S_SIP_BYE1 //BYE handled + //- PICS_BCF_M_SIP_URN1 //SIP message with geolocation (value) + //- PICS_BCF_S_SIP_OPT1 //receive SIP OPTIONS - respond OK + - PICS_BCF_M_SIP_CALL_INFO_INCIDENT_TRACKING_ID //SIP header Call-Info with Incident Tracking ID supported + - PICS_BCF_M_SIP_CALL_INFO_CALL_ID //SIP header Call-Info with Call ID supported + - PICS_BCF_M_SIP_CALL_INFO_SOURCE_ID //SIP header Call-Info with Source ID supported + - PICS_BCF_TLS_AUTHENTICATION + ; + entities: + - IUT + - CLIENT + - PSAP + ; + events: + - acceptingIncomingCalls //BCF ready to receive incoming calls + - receives //for packets coming from the network to the IUT + - sends //for packets sent by the IUT to the network + - establishesIncomingCall //[ref psap.txt:establishesIncomingCall] The IUT establishes the incoming call + - inAnActiveIncomingCall //[ref psap.txt:inAnActiveIncomingCall] An incoming call is established + - acceptingIM // PSAP ready to receive IM(Instant messaging) + -rejects + ; + } + + Data { + type PDU; + + type Request_URI; + type Via; + type Call_Info; + + // ###### + // PIXITS + Request_URI PX_BCF_SERVICE_URN; //"urn:service:sos.police" + Request_URI PX_BCF_REQUEST_URI; //PSAP Request_URI + Via PX_BCF_ESS_SOURCE; //e.g. a7123gc42@sbc22.example.net + Call_Info PX_BCF_CALL_INFO_INCIDENT_ID; //;purpose=EmergencyCallData.IncidentId + Call_Info PX_BCF_CALL_INFO_CALL_ID; //;purpose=EmergencyCallData.CallId + Call_Info PX_BCF_CALL_INFO_SOURCE_ID; //;purpose=EmergencyCallData.SourceId + + + } + Configuration { + Interface Type defaultGT accepts PDU; + Component Type NG112Comp with gate g of type defaultGT; + Test Configuration CFG_BCF_01 + containing + Tester component CLIENT of type NG112Comp + Tester component PSAP of type NG112Comp + SUT component IUT of type NG112Comp + connection between CLIENT.g and IUT.g + connection between PSAP.g and IUT.g; + } + +} diff --git a/test_purposes/common/sip_commons.tplan2 b/test_purposes/common/sip_commons.tplan2 new file mode 100644 index 0000000000000000000000000000000000000000..853ad8d2afea1d49d51ef05e2393eaa7103288c9 --- /dev/null +++ b/test_purposes/common/sip_commons.tplan2 @@ -0,0 +1,86 @@ +Package sip_commons { + Domain { + pics: + - PICS_SIP_SUBSCRIPTION_ELEMENT_STATE + - PICS_SIP_SUBSCRIPTION_SECURITY_POSTURE + - PICS_SIP_SUBSCRIPTION_SERVICE_STATE + ; + } + Data { + + type String; + type Number; + + + type SubscribeRequest + with + "event" of type String, + expires of type Number, + optional certificate of type Certificate + ; + + type OkResponse; + + type Notify; + type Certificate; + + Number 0; + + // Subscriptions: ElementState + type ElementStateEnum; + + ElementStateEnum normal; + ElementStateEnum scheduledMaintenance; + ElementStateEnum serviceDisruption; + ElementStateEnum overloaded; + ElementStateEnum goingDown; + ElementStateEnum down; + + type ElementState + with + state of type ElementStateEnum, + optional reason of type String + ; + + // Subscriptions: SecurityPosture + type SecurityPostureEnum; + + SecurityPostureEnum green; + SecurityPostureEnum yellow; + SecurityPostureEnum orange; + SecurityPostureEnum red; + + + type SecurityPosture + with + state of type SecurityPostureEnum, + optional reason of type String + ; + + + // Subscriptions: ServiceState + type ServiceStateEnum; + + ServiceStateEnum normal; + ServiceStateEnum unmanned; + ServiceStateEnum "scheduledMaintenance(down)"; + ServiceStateEnum "scheduledMaintenance(available)"; + ServiceStateEnum majorIncidentInProgress; + ServiceStateEnum partialService; + ServiceStateEnum overloaded; + ServiceStateEnum goingDown; + ServiceStateEnum down; + + type ServiceState + with + service of type String, + state of type ServiceStateEnum, + optional reason of type String + ; + + + SubscribeRequest UnsubscribeRequest containing + expires indicating value 0 + ; + } +} \ No newline at end of file diff --git a/test_purposes/ecrf.tplan2 b/test_purposes/ecrf.tplan2 deleted file mode 100644 index f921ed41487768f0b3cd971885cfde8332ae457f..0000000000000000000000000000000000000000 --- a/test_purposes/ecrf.tplan2 +++ /dev/null @@ -1,1160 +0,0 @@ -/* ETSI Software License -* As long as the hereunder conditions are respected, non-exclusive permission is hereby granted, -* free of charge, to use, reproduce and modify this software source code, under the following conditions: -* This source code is provided AS IS with no warranties, express or implied, including but not limited to, -* the warranties of merchantability, fitness for a particular purpose and warranties for non-infringement -* of intellectual property rights. -* ETSI shall not be held liable in any event for any direct or indirect damages whatsoever (including, without -* limitation, damages for loss of profits, business interruption, loss of information, or any other pecuniary -* loss) arising out of or related to the use of or inability to use the source code. -* This permission is granted to facilitate the implementation of the related ETSI standard, provided that -* ETSI is given the right to use, reproduce and amend the modified source code under the same conditions -* as the present permission. -* This permission does not apply to any documentation associated with this source code for which ETSI keeps -* all rights reserved. -* The present ETSI Source Code license shall be included in all copies of whole or part of this source code -* and shall not imply any sub-license right. -* (c) ETSI 2018 -*/ - - -Package NG112_ECRF { - Domain { - pics: - - L_FIS_GEO1 //findService LOST - point - - L_FIS_GEO2 //findService LOST - circle -// - L_FIS_GEO3 //findService LOST - polygon -// - L_GET_GEO1 //getServiceBoundary -// - L_FIS_CIV1 //findService LOST - civic -// - L_GET_CIV1 //getServiceBoundary - - L_FIS_SBV1 //findService LOST - service boundary by value - - L_LST_GEO1 //listServicesByLocation LOST - point -// - L_LST_GEO2 //listServicesByLocation - circle -// - L_LST_GEO3 //listServicesByLocation LOST - polygon -// - L_LST_CIV1 //listServicesByLocation LOST - civic - - L_LST_ALL1 //listServices - - L_FIS_ERR1 //findService LOST - serviceNotImplemented - - L_FIS_ERR2 //findService LOST - locationProfileUnrecognized - ; - entities: - - IUT - - CLIENT - ; - events: - - receives //for packets coming from the network to the IUT - - sends //for packets sent by the IUT to the network - - havingServiceBoundaryFor //IUT is provisioned with the relevant service boundary - - serviceMappingFor //IUT is provisioned with the relevant service mapping - - isRequestedToSend //an upper layer requests the IUT to send a packet - - generates //for internal event generation - ; - } - -// Const { -// E_POLICE_SERVICE_URN: "urn:service:sos.police"; -// E_POLICE_SIP_URI: "sip:police@etsi.com"; -// E_POLICE_SERVICE_BOUNDARY: "{ -// \"type\": \"Polygon\", -// \"coordinates\": [ -// [ -// [ -// 7.06665, -// 43.61676 -// ], -// [ -// 7.07562, -// 43.61676 -// ], -// [ -// 7.07562, -// 43.62349 -// ], -// [ -// 7.06665, -// 43.62349 -// ], -// [ -// 7.06665, -// 43.61676 -// ] -// ] -// ] -// }"; // (geoJson) -// E_POLICE_SERVICE_BOUNDARY_POS_LIST: "43.61676 7.06665 43.61676 7.07562 43.62349 7.07562 43.62349 7.06665 43.61676 7.06665" -// V_FIRE_SERVICE_URN: "urn:service:sos.fire"; -// V_FIRE_SIP_URI: "sip:fire@vienna.com"; -// V_FIRE_SERVICE_BOUNDARY: "{ -// \"type\": \"Polygon\", -// \"coordinates\": [ -// [ -// [ -// 16.245346069335938, -// 48.13126755117026 -// ], -// [ -// 16.491851806640625, -// 48.13126755117026 -// ], -// [ -// 16.491851806640625, -// 48.294614813244344 -// ], -// [ -// 16.245346069335938, -// 48.294614813244344 -// ], -// [ -// 16.245346069335938, -// 48.13126755117026 -// ] -// ] -// ] -// }"; // (geoJson) -// V_POLICE_SERVICE_URN: "urn:service:sos.police"; -// V_POLICE_SIP_URI: "sip:police@vienna.com"; -// V_POLICE_SERVICE_BOUNDARY: "{ -// \"type\": \"Polygon\", -// \"coordinates\": [ -// [ -// [ -// 16.245346069335938, -// 48.13126755117026 -// ], -// [ -// 16.491851806640625, -// 48.13126755117026 -// ], -// [ -// 16.491851806640625, -// 48.294614813244344 -// ], -// [ -// 16.245346069335938, -// 48.294614813244344 -// ], -// [ -// 16.245346069335938, -// 48.13126755117026 -// ] -// ] -// ] -// }"; // (geoJson) -// H_FIRE_SERVICE_URN: "urn:service:sos.fire"; -// H_FIRE_SIP_URI: "sip:fire@hadersdorf.com"; -// H_FIRE_SERVICE_BOUNDARY: "{ -// \"type\": \"Polygon\", -// \"coordinates\": [ -// [ -// [ -// 16.221656799316406, -// 48.20597092201654 -// ], -// [ -// 16.228179931640625, -// 48.20597092201654 -// ], -// [ -// 16.228179931640625, -// 48.21174802569084 -// ], -// [ -// 16.221656799316406, -// 48.21174802569084 -// ], -// [ -// 16.221656799316406, -// 48.20597092201654 -// ] -// ] -// ] -// }"; // (geoJson) -// N_AMBULANCE_SERVICE_URN: "urn:service:sos.ambulance" -// N_AMBULANCE_SIP_URI: "sip:ambulance@nice.com"; -// N_AMBULANCE_SERVICE_BOUNDARY: "{ -// "type": "Polygon", -// "coordinates": [ -// [ -// [ -// 7.232093811035156, -// 43.68301868481534 -// ], -// [ -// 7.311401367187499, -// 43.68301868481534 -// ], -// [ -// 7.311401367187499, -// 43.73575527365514 -// ], -// [ -// 7.232093811035156, -// 43.73575527365514 -// ], -// [ -// 7.232093811035156, -// 43.68301868481534 -// ] -// ] -// ] -// }" // (geoJson) -// A_SOS_SERVICE_URN: "urn:service:sos" -// A_SOS_SIP_URI: "sip:sos@airport.com"; -// A_SOS_SERVICE_BOUNDARY: "{ -// "type": "Polygon", -// "coordinates": [ -// [ -// [ -// 7.198534011840821, -// 43.64141714294849 -// ], -// [ -// 7.236814498901367, -// 43.64141714294849 -// ], -// [ -// 7.236814498901367, -// 43.67321076947475 -// ], -// [ -// 7.198534011840821, -// 43.67321076947475 -// ], -// [ -// 7.198534011840821, -// 43.64141714294849 -// ] -// ] -// ] -// } // (geoJson) -// POINT_IN_E_POLICE_SERVICE_BOUNDARY: "43.62023 7.071032"; // (lat lon) -// POINT_IN_V_POLICE_SERVICE_BOUNDARY: "48.22192 16.34010"; // (lat lon) -// CIRCLE_IN_V_FIRE_SERVICE_BOUNDARY_POS: "48.22192 16.34010"; // (lat lon) -// CIRCLE_IN_V_FIRE_SERVICE_BOUNDARY_RADIUS: "2"; -// CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_POS: "48.22192 16.34010"; // (lat lon) -// CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_RADIUS: "2"; -// CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_POS: "48.30260 16.35160"; // (lat lon) -// CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_RADIUS: "5000"; -// CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_AND_H_FIRE_SERVICE_BOUNDARY_POS: "48.20688615019928 16.22955322265625"; // (lat lon) -// CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_AND_H_FIRE_SERVICE_BOUNDARY_RADIUS: "5000"; -// LOCATION_ID: "locationId"; -// } - - Data { - type PDU; - } - Configuration { - Interface Type defaultGT accepts PDU; - Component Type NG112Comp with gate g of type defaultGT; - Test Configuration CFG_ECRF_01 - containing - Tester component CLIENT of type NG112Comp - SUT component IUT of type NG112Comp - connection between CLIENT.g and IUT.g; - } - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_01 -Test objective - "IUT successfully responds with a service URI for a Point in the service boundary" -Reference - "ETSI TS 103 479 [1], clause XXXX", - "EENA Next Generation 112 LTD [2], clause 4.4", - "RFC5222 [5]" -Config Id CFG_ECRF_01 -PICS Selection L_FIS_GEO1 -Initial conditions with { - the IUT entity havingServiceBoundaryFor the E_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor E_POLICE_SERVICE_URN containing - URI indicating value E_POLICE_SIP_URI; - ; - and the IUT entity havingServiceBoundaryFor the V_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor V_POLICE_SERVICE_URN containing - URI indicating value V_POLICE_SIP_URI; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - attribute "profile" indicating value "geodetic-2d", - attribute "id" indicating value LOCATION_ID, - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_IN_E_POLICE_SERVICE_BOUNDARY; - , - element "service" indicating value E_POLICE_SERVICE_URN; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "mapping" containing - attribute "source", - attribute "sourceId", - attribute "lastUpdated", - attribute "expires", - element "service" indicating value E_POLICE_SERVICE_URN, - element "uri" indicating value E_POLICE_SIP_URI; - , - element "path" containing - element via containing attribute "source"; - ;, - element "locationUsed" containing - attribute "id" indicating value LOCATION_ID; - ; - ; - ; - ; - } - } -} //End of TP_ECRF_HTTP_POST_BV_01 - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_02 -Test objective - "IUT successfully responds with a service URI for a Circle in the service boundary" -Reference - "ETSI TS 103 479 [1], clause XXXX", - "EENA Next Generation 112 LTD [2], clause 4.4", - "RFC5222 [5]" -Config Id CFG_ECRF_01 -PICS Selection L_FIS_GEO2 -Initial conditions with { - the IUT entity havingServiceBoundaryFor the E_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor E_POLICE_SERVICE_URN containing - URI indicating value E_POLICE_SIP_URI; - ; - and the IUT entity havingServiceBoundaryFor the V_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor V_POLICE_SERVICE_URN containing - URI indicating value V_POLICE_SIP_URI; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - attribute "profile" indicating value "geodetic-2d", - attribute "id" indicating value LOCATION_ID, - element "Circle" inNamespace "http://www.opengis.net/pidflo/1.0" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" inNamespace "http://www.opengis.net/gml" indicating value CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_POS, - element "radius" indicating value CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_RADIUS containing - attribute "uom" indicating value "urn:ogc:def:uom:EPSG::9001" - ; - ; - , - element "service" indicating value V_POLICE_SERVICE_URN; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "mapping" containing - attribute "source", - attribute "sourceId", - attribute "lastUpdated", - attribute "expires", - element "service" indicating value V_POLICE_SERVICE_URN, - element "uri" indicating value V_POLICE_SIP_URI; - , - element "path" containing - element via containing attribute "source"; - ;, - element "locationUsed" containing - attribute "id" indicating value LOCATION_ID; - ; - ; - ; - ; - } - } -} //End of TP_ECRF_HTTP_POST_BV_02 - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_03 -Test objective - "IUT successfully responds with an error response for an unknown Service URN in the service boundary" -Reference - "ETSI TS 103 479 [1], clause XXXX", - "EENA Next Generation 112 LTD [2], clause 4.4", - "RFC5222 [5]" -Config Id CFG_ECRF_01 -PICS Selection L_FIS_ERR1 -Initial conditions with { - the IUT entity havingServiceBoundaryFor the E_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor E_POLICE_SERVICE_URN containing - URI indicating value E_POLICE_SIP_URI; - ; - and the IUT entity havingServiceBoundaryFor the V_FIRE_SERVICE_BOUNDARY containing - serviceMappingFor V_POLICE_SERVICE_URN containing - URI indicating value V_POLICE_SIP_URI; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - attribute "profile" indicating value "geodetic-2d", - attribute "id" indicating value LOCATION_ID, - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_IN_E_POLICE_SERVICE_BOUNDARY; - , - element "service" indicating value V_FIRE_SERVICE_URN; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "errors" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "serviceNotImplemented" - ; - ; - ; - ; - } - } -} //End of TP_ECRF_HTTP_POST_BV_03 - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_04 -Test objective - "IUT successfully responds with an error response for an unrecognized location profile" -Reference - "ETSI TS 103 479 [1], clause XXXX", - "EENA Next Generation 112 LTD [2], clause 4.4", - "RFC5222 [5]" -Config Id CFG_ECRF_01 -PICS Selection L_FIS_ERR2 -Initial conditions with { - the IUT entity havingServiceBoundaryFor the E_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor E_POLICE_SERVICE_URN containing - URI indicating value E_POLICE_SIP_URI; - ; - and the IUT entity havingServiceBoundaryFor the V_FIRE_SERVICE_BOUNDARY containing - serviceMappingFor V_FIRE_SERVICE_URN containing - URI indicating value V_FIRE_SIP_URI; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "location" containing - attribute "profile" indicating value "someUnknownProfile", - attribute "id" indicating value LOCATION_ID, - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_IN_E_POLICE_SERVICE_BOUNDARY; - , - element "service" indicating value V_FIRE_SERVICE_URN; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "errors" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "locationProfileUnrecognized" - ; - ; - ; - ; - } - } -}//End of TP_ECRF_HTTP_POST_BV_04 - -Test Purpose { -TP Id TP_ECRF_HTTP_POST_BV_05 -Test objective - "IUT successfully responds with service boundary by value if requested" -Reference - "ETSI TS 103 479 [1], clause XXXX", - "EENA Next Generation 112 LTD [2], clause 4.4", - "RFC5222 [5]" -Config Id CFG_ECRF_01 -PICS Selection L_FIS_GEO1 and L_FIS_SBV1 -Initial conditions with { - the IUT entity havingServiceBoundaryFor the E_POLICE_SERVICE_BOUNDARY containing - serviceMappingFor E_POLICE_SERVICE_URN containing - URI indicating value E_POLICE_SIP_URI; - ; -} -Expected behaviour - ensure that { - when { - the IUT entity receives a POST containing - Uri indicating value "/service", - Host, - not Accept, - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findService" inNamespace "urn:ietf:params:xml:ns:lost1" containing - attribute "serviceBoundary" indicating value "value" - element "location" containing - attribute "profile" indicating value "geodetic-2d", - attribute "id" indicating value LOCATION_ID, - element "Point" inNamespace "http://www.opengis.net/gml" containing - attribute "srsName" indicating value "urn:ogc:def:crs:EPSG::4326", - element "pos" indicating value POINT_IN_E_POLICE_SERVICE_BOUNDARY; - , - element "service" indicating value E_POLICE_SERVICE_URN; - ; - ; - ; - ; - } - then { - the IUT entity sends a httpResponse containing - Status_Code indicating value "200 OK", - version indicating value "1.0", - Content_type indicating value "application/lost+xml;charset=utf-8", - body containing - xmlMessage containing - version indicating value "1.0", - element "findServiceResponse" inNamespace "urn:ietf:params:xml:ns:lost1" containing - element "mapping" containing - attribute "source", - attribute "sourceId", - attribute "lastUpdated", - attribute "expires", - element "service" indicating value E_POLICE_SERVICE_URN, - element " 0) { + v_msg := v_msg & ", "; + } + v_msg := v_msg & p_statements[v_i].name; + } + } + + if (lengthof(v_msg) > 0) { + log("*** " & testcasename() & ": " & v_msg &" required for executing the TC ***") + setverdict(inconc); + stop; + } + } + + function f_sendFindServiceRequest(template (value) FindService p_request) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ECRF_URI, + v_headers, + m_http_message_body_xml(m_body_xml_find_service_request(p_request)) + ) + ) + ); + } + + function f_sendListServicesRequest(template (value) ListServices p_request) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ECRF_URI, + v_headers, + m_http_message_body_xml(m_body_xml_list_services_request(p_request)) + ) + ) + ); + } + + function f_sendListServicesByLocationRequest(template (value) ListServicesByLocation p_request) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ECRF_URI, + v_headers, + m_http_message_body_xml(m_body_xml_list_services_by_location_request(p_request)) + ) + ) + ); + } + + + function f_sendRawRequest(template (value) TextBody p_text_body) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_post( + PICS_ECRF_URI, + v_headers, + { text_body := p_text_body} + ) + ) + ); + } + + function f_receiveResponse(template HttpMessage p_message) runs on HttpComponent return HttpMessage { + var HttpMessage v_response; + + alt { + [] httpPort.receive(p_message) -> value v_response { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] httpPort.receive { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } + + return v_response; + } + +} diff --git a/ttcn/AtsECRF/AtsECRF_Pics.ttcn b/ttcn/AtsECRF/AtsECRF_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9e8010becd7ea4a0b71e26b083bb9e2eba549b29 --- /dev/null +++ b/ttcn/AtsECRF/AtsECRF_Pics.ttcn @@ -0,0 +1,92 @@ +module AtsECRF_Pics { + + type record of charstring request_uri_list; + + /** + * @desc Does the IUT support mutual tls authentication? + */ + modulepar boolean PICS_ECRF_TLS_AUTHENTICATION := true + + /** + * @desc Does the IUT support FindService + */ + modulepar boolean PICS_ECRF_FIND_SERVICE := true + + /** + * @desc Does the IUT support ListServices ? + */ + modulepar boolean PICS_ECRF_LIST_SERVICES := true; + + /** + * @desc Does the IUT support ListServicesByLocation ? + */ + modulepar boolean PICS_ECRF_LIST_SERVICES_BY_LOCATION := true; + + /** + * @desc Does the IUT support SIP Element State ? + */ + modulepar boolean PICS_ECRF_SIP_ELEMENT_STATE := true + + /** + * @desc Does the IUT support SIP Security Posture ? + */ + modulepar boolean PICS_ECRF_SIP_SECURITY_POSTURE := true + + /** + * @desc Does the IUT support SIP Service State ? + */ + modulepar boolean PICS_ECRF_SIP_SERVICE_STATE := true + + /** + * @desc Does the IUT support Redirect? + */ + modulepar boolean PICS_ECRF_REDIRECT := true + + /** + * @desc Does the IUT support Loop detection? + */ + modulepar boolean PICS_ECRF_LOOP_DETECTION := true + + /** + * @desc Does the IUT support geometry Point? + */ + modulepar boolean PICS_ECRF_GEOMETRY_POINT := true; + + /** + * @desc Does the IUT support geometry Circle? + */ + modulepar boolean PICS_ECRF_GEOMETRY_CIRCLE := true; + + /** + * @desc Does the IUT support geometry Ellipse? + */ + modulepar boolean PICS_ECRF_GEOMETRY_ELLIPSE := true; + + /** + * @desc Does the IUT support geometry Arcband? + */ + modulepar boolean PICS_ECRF_GEOMETRY_ARCBAND := true; + + /** + * @desc Does the IUT support geometry Polygon? + */ + modulepar boolean PICS_ECRF_GEOMETRY_POLYGON := true; + + + /** + * @desc HTTP POST Uris + * @see RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 + */ + modulepar request_uri_list PICS_ECRF_REQUEST_URIs := { "/t/0ahy0-1531830377/post" }; + + /** + * @desc HTTP post URI for LIS protocol + */ + modulepar charstring PICS_ECRF_URI := "/"; + + /** + * @desc Does the IUT support LoST protocol? + */ + modulepar boolean PICS_SERVICE_LOST := true; + +} // End of module AtsECRF_Pics diff --git a/ttcn/AtsECRF/AtsECRF_Pixits.ttcn b/ttcn/AtsECRF/AtsECRF_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..bda6ea127db075ed094da5b12f54c3f2c96da928 --- /dev/null +++ b/ttcn/AtsECRF/AtsECRF_Pixits.ttcn @@ -0,0 +1,137 @@ +module AtsECRF_Pixits { + + import from XSD all; + + // RFC 5139 + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr language "XSD" all + with { + extension "File:../xsd/RFC5139_pdif_geopriv10_civic_address.xsd"; + } + + // OpenGIS + import from http_www_opengis_net_pidflo_1_0 language "XSD" all + with { + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } + + type set of XSD.String StringSet; + + modulepar XSD.AnyURI PX_E_UNKNOWN_SERVICE_URN := "urn:service:sos.unknown"; + + // ECRF Configurations + modulepar XSD.String PX_ECRF_SOURCE := "ecrf1.etsi.plugtests.net"; + + // Usually the same as PX_ECRF_SOURCE + modulepar XSD.String PX_ECRF_VIA := "ecrf1.etsi.plugtests.net"; + + // Usually the same as PX_ECRF_SOURCE + modulepar XSD.Token PX_ECRF_NAPTR := "ecrf1.etsi.plugtests.net"; + + modulepar StringSet PX_CONFIGURED_SERVICES := { "urn:service:sos", "urn:service:sos.ambulance", "urn:service:sos.fire", "urn:service:sos.police" }; + modulepar XSD.Token PX_REDIRECT_TARGET := "other.ecrf.plugtests.net"; + + // Polygon (Lat/Lon) + modulepar DoubleList PX_G1 := { + 43.69816193608326, 6.912803649902344, + 43.54406887505369, 6.912117004394531, + 43.54456658436357, 7.060089111328125, + 43.69965122967144, 7.061805725097656, + 43.69816193608326, 6.912803649902344 + }; + + // Polygon (Lat/Lon) + modulepar DoubleList PX_G2 := { + 43.548796947590226, 7.048072814941405, + 43.548796947590226, 7.131500244140625, + 43.605131986533884, 7.131500244140625, + 43.605131986533884, 7.048072814941405, + 43.548796947590226, 7.048072814941405 + }; + + + // Polygon (Lat/Lon) + modulepar DoubleList PX_G3 := { + 39.232253141714885, 2.252197265625, + 39.232253141714885, 4.427490234375, + 40.111688665595956, 4.427490234375, + 40.111688665595956, 2.252197265625, + 39.232253141714885, 2.252197265625 + }; + + // PX_POINT_IN_G1 + modulepar DoubleList PX_POINT_IN_G1 := { 43.58206959563555, 6.974515914916991 }; + + // PX_CIRCLE_IN_G1 + modulepar DoubleList PX_CIRCLE_IN_G1_CENTER := { 43.58206959563555, 6.974515914916991 }; + modulepar XSD.Double PX_CIRCLE_IN_G1_RADIUS := 200.000; + modulepar XSD.AnyURI PX_CIRCLE_IN_G1_UOM := "urn:ogc:def:uom:EPSG::9001"; + + // PX_CIRCLE_INTERSECT_ONLY_G1 + modulepar DoubleList PX_CIRCLE_INTERSECT_ONLY_G1_CENTER := { 43.576287071814875, 7.023181915283203 }; + modulepar XSD.Double PX_CIRCLE_INTERSECT_ONLY_G1_RADIUS := 1000.000; + modulepar XSD.AnyURI PX_CIRCLE_INTERSECT_ONLY_G1_UOM := "urn:ogc:def:uom:EPSG::9001"; + + // PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2 + modulepar DoubleList PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2_CENTER := { 43.576287071814875, 7.023181915283203 }; + modulepar XSD.Double PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2_RADIUS := 3000.000; + modulepar XSD.AnyURI PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2_UOM := "urn:ogc:def:uom:EPSG::9001"; + + // PX_ELLIPSE_IN_G1 + modulepar DoubleList PX_ELLIPSE_IN_G1_CENTER := { 43.58206959563555, 6.974515914916991 }; + modulepar XSD.Double PX_ELLIPSE_IN_G1_MAJOR_AXIS := 400.000; + modulepar XSD.AnyURI PX_ELLIPSE_IN_G1_MAJOR_AXIS_UOM := "urn:ogc:def:uom:EPSG::9001"; + modulepar XSD.Double PX_ELLIPSE_IN_G1_MINOR_AXIS := 200.000; + modulepar XSD.AnyURI PX_ELLIPSE_IN_G1_MINOR_AXIS_UOM := "urn:ogc:def:uom:EPSG::9001"; + modulepar XSD.Double PX_ELLIPSE_IN_G1_ORIENTATION := 43.2; + modulepar XSD.AnyURI PX_ELLIPSE_IN_G1_ORIENTATION_UOM := "urn:ogc:def:uom:EPSG::9002"; + + // PX_ARCBAND_IN_G1 + modulepar DoubleList PX_ARCBAND_IN_G1_CENTER := { 43.58206959563555, 6.974515914916991 }; + modulepar XSD.Double PX_ARCBAND_IN_G1_INNER_RADIUS := 400.000; + modulepar XSD.AnyURI PX_ARCBAND_IN_G1_INNER_RADIUS_UOM := "urn:ogc:def:uom:EPSG::9001"; + modulepar XSD.Double PX_ARCBAND_IN_G1_OUTER_RADIUS := 200.000; + modulepar XSD.AnyURI PX_ARCBAND_IN_G1_OUTER_RADIUS_UOM := "urn:ogc:def:uom:EPSG::9001"; + modulepar XSD.Double PX_ARCBAND_IN_G1_START_ANGLE := 20.0; + modulepar XSD.AnyURI PX_ARCBAND_IN_G1_START_ANGLE_UOM := "urn:ogc:def:uom:EPSG::9002"; + modulepar XSD.Double PX_ARCBAND_IN_G1_OPENING_ANGLE := 20.0; + modulepar XSD.AnyURI PX_ARCBAND_IN_G1_OPENING_ANGLE_UOM := "urn:ogc:def:uom:EPSG::9002"; + + // PX_POLYGON_IN_G1 + modulepar DoubleList PX_POLYGON_IN_G1 := { + 43.60973097491503, 6.9797515869140625, + 43.60973097491503, 7.010993957519531, + 43.630608445093486, 7.010993957519531, + 43.630608445093486, 6.9797515869140625, + 43.60973097491503, 6.9797515869140625 + }; + + // PX_POINT_IN_G3 + modulepar DoubleList PX_POINT_IN_G3 := { 39.631076770083666, 2.92236328125 }; + + // POLICE G1 + modulepar XSD.AnyURI PX_URI_POLICE_G1 := "sip:police@g1.esinet.io"; + modulepar XSD.String PX_DISPLAY_NAME_POLICE_G1 := "Police G1"; + modulepar XSD.AnyURI PX_SOURCE_ID_POLICE_G1 := "1d2af31b-4f75-4277-871a-dd3fad15b002"; + + // FIRE G1 + modulepar XSD.AnyURI PX_URI_FIRE_G1 := "sip:fire@g1.esinet.io" + modulepar XSD.String PX_DISPLAY_NAME_FIRE_G1 := "Fire G1"; + modulepar XSD.AnyURI PX_SOURCE_ID_FIRE_G1 := "1d2af31b-4f75-4277-871a-dd3fad15b002"; + + + modulepar charstring PX_INVALID_REQUEST := "xml"; + + + // Debug + modulepar boolean PX_ADD_TC_NAME_HTTP_HEADER := false; + +} // End of module AtsECRF_Pixits diff --git a/ttcn/AtsECRF/AtsECRF_Templates.ttcn b/ttcn/AtsECRF/AtsECRF_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..f4aaf0a43fd28e9e96f14cb89f1b62637cc17b40 --- /dev/null +++ b/ttcn/AtsECRF/AtsECRF_Templates.ttcn @@ -0,0 +1,32 @@ +module AtsECRF_Templates { + + import from LibItsHttp_Templates all; + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_XmlTemplates all; + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + + template HttpMessage mw_http_find_service_response( + in template (present) FindServiceResponse p_find_service_response + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_find_service_response(p_find_service_response)))) + + template HttpMessage mw_http_find_service_response_error( + in template ExceptionContainer p_error + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_find_service_response_error(p_error)))) + + template HttpMessage mw_http_list_services_response( + in template (present) ListServicesResponse p_list_services_response + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_list_services_response(p_list_services_response)))) + + template HttpMessage mw_http_list_services_by_location_response( + in template (present) ListServicesByLocationResponse p_list_services_by_location_response + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_list_services_by_location_response(p_list_services_by_location_response)))) + + template HttpMessage mw_http_redirect_response( + in template (present) Redirect p_redirect + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_redirect_response(p_redirect)))) +} diff --git a/ttcn/AtsECRF/AtsECRF_TestCases.ttcn b/ttcn/AtsECRF/AtsECRF_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..64e53208d6c0dcf8b957beae578da0e131eef0c2 --- /dev/null +++ b/ttcn/AtsECRF/AtsECRF_TestCases.ttcn @@ -0,0 +1,1561 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the NG112 test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module AtsECRF_TestCases { + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + // RFC3863 PIDF + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr language "XSD" all + with { + extension "File:../xsd/RFC5139_pdif_geopriv10_civic_address.xsd"; + } + + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + + // OpenGIS + import from http_www_opengis_net_pidflo_1_0 language "XSD" all + with { + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } + + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibItsHttp + import from LibItsHttp_Pics all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_TestSystem all; + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Steps all; + import from LibSip_Templates all; + import from LibSip_Interface all; + + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Steps all; + import from LibIms_Templates all; + import from LibIms_Interface all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Templates all; + import from LibNg112_Functions all; + import from LibNg112_TestSystem all; + import from LibNg112_Steps all; + import from LibNg112_Pics all; + import from LibNg112_Pixits all; + import from LibNg112_SubscriptionPayloads all; + + // AtsECRF + import from AtsECRF_Pics all; + import from AtsECRF_Pixits all; + import from AtsECRF_Functions all; + import from AtsECRF_Templates all; + + group LOST { + + /** + * @desc "IUT successfully responds with a service URI for a Point in the service boundary" + */ + testcase TC_ECRF_LOST_BV_01() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_POINT", val := PICS_ECRF_GEOMETRY_POINT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a service URI for a Circle in the service boundary" + */ + testcase TC_ECRF_LOST_BV_02() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_CIRCLE", val := PICS_ECRF_GEOMETRY_CIRCLE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_IN_G1_CENTER), m_radius(PX_CIRCLE_IN_G1_UOM, PX_CIRCLE_IN_G1_RADIUS), PX_SRS_NAME)))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with an error response for unknown service URI in the service boundary + */ + testcase TC_ECRF_LOST_BV_03() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_IN_G1_CENTER), m_radius(PX_CIRCLE_IN_G1_UOM, PX_CIRCLE_IN_G1_RADIUS), PX_SRS_NAME)))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + "urn:some:unknown:service", + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response_error( + mw_exception_serviceNotImplemented( + PX_ECRF_SOURCE, + mw_basic_exception + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with an error response for an unrecognized location profile + */ + testcase TC_ECRF_LOST_BV_04() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_IN_G1_CENTER), m_radius(PX_CIRCLE_IN_G1_UOM, PX_CIRCLE_IN_G1_RADIUS), PX_SRS_NAME)))) }, + "unknown-location-profile" // TODO Use a Pixit + ) + }, + { }, + "urn:some:unknown:service", + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response_error( + mw_exception_locationProfileUnrecognized( + PX_ECRF_SOURCE, + mw_location_profile_unrecognized + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds the service boundary by value" + */ + testcase TC_ECRF_LOST_BV_05() runs on HttpComponent system TestAdapter { + // Local variables + var HttpMessage v_response; + + + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_POINT", val := PICS_ECRF_GEOMETRY_POINT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + {}, + PX_E_POLICE_SERVICE_URN, + true, + value_ + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + v_response := f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + mw_mapping_service_boundary( + mw_service_boundary( { mw_service_boundary_item("geodetic-2d") } ) + ), + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + var universal charstring v_temp; + var integer v_result; + var PolygonType v_polygon; + + tc_ac.stop; + + v_temp := v_response.response.body.xml_body.findServiceResponse.mapping_list[0].choice.serviceBoundary.serviceBoundary_list[0].extensionPoint_list[0].elem; + v_result := decvalue_unichar(v_temp, v_polygon); + if (v_result == 0) { + log("v_polygon= ", v_polygon); + log("match(v_polygon, mw_polygon(PX_SRS_NAME))= ", match(v_polygon, mw_polygon(PX_SRS_NAME))); + + log("*** " & testcasename() & ": PASS: IUT successfully responds with a Polygon ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log("*** " & testcasename() & ": FAIL: Cannot decode Polygon ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a service URI for intersecting circle" + */ + testcase TC_ECRF_LOST_BV_06() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_CIRCLE", val := PICS_ECRF_GEOMETRY_CIRCLE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_INTERSECT_ONLY_G1_CENTER), m_radius(PX_CIRCLE_INTERSECT_ONLY_G1_UOM, PX_CIRCLE_INTERSECT_ONLY_G1_RADIUS), PX_SRS_NAME)))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a service URI for circle intersecting multiple service boundaries" + */ + testcase TC_ECRF_LOST_BV_07() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_CIRCLE", val := PICS_ECRF_GEOMETRY_CIRCLE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2_CENTER), m_radius(PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2_UOM, PX_CIRCLE_INTERSECT_MAINLY_G1_AND_G2_RADIUS), PX_SRS_NAME)))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_FIRE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a service URI for circle intersecting multiple service boundaries" + */ + testcase TC_ECRF_LOST_BV_08() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_CIRCLE", val := PICS_ECRF_GEOMETRY_CIRCLE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_IN_G1_CENTER), m_radius(PX_CIRCLE_IN_G1_UOM, PX_CIRCLE_IN_G1_RADIUS), PX_SRS_NAME)))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_FIRE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_FIRE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_FIRE_G1) }, + { PX_URI_FIRE_G1 }, + -, + PX_E_FIRE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with configured service types for a ListServices request" + */ + testcase TC_ECRF_LOST_BV_09() runs on HttpComponent system TestAdapter { + // Test control + f_check_statements({ + { name := "PICS_ECRF_LIST_SERVICES", val := PICS_ECRF_LIST_SERVICES } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendListServicesRequest(m_list_services(-,"urn:service:sos")); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_list_services_response( + mw_list_services_response( + PX_CONFIGURED_SERVICES, + LibItsHttp_XmlTemplates.mw_path({ LibItsHttp_XmlTemplates.mw_via(PX_ECRF_VIA) }) + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_LOST_BV_09 + + /** + * @desc "IUT successfully responds with configured service types for a ListServicesByLocation request" + */ + testcase TC_ECRF_LOST_BV_10() runs on HttpComponent system TestAdapter { + // Test control + f_check_statements({ + { name := "PICS_ECRF_LIST_SERVICES_BY_LOCATION", val := PICS_ECRF_LIST_SERVICES_BY_LOCATION } + }) + + // Test component configuration + f_cf_01_http_up(); + + + // Preamble + f_sendListServicesByLocationRequest( + m_list_services_by_location( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + -, + "urn:service:sos" + ) + ); + + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + + f_receiveResponse(mw_http_list_services_by_location_response( + mw_list_services_by_location_response( + { "urn:service:sos.fire", "urn:service:sos.police" }, + LibItsHttp_XmlTemplates.mw_path({ LibItsHttp_XmlTemplates.mw_via(PX_ECRF_VIA) }), + -, + mw_location_used(PX_LOCATION_ID) + ) + ) + ); + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_LOST_BV_10 + + /** + * @desc "IUT successfully responds with configured service types for a ListServices request without service element" + */ + testcase TC_ECRF_LOST_BV_11() runs on HttpComponent system TestAdapter { + // Test control + f_check_statements({ + { name := "PICS_ECRF_LIST_SERVICES", val := PICS_ECRF_LIST_SERVICES } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendListServicesRequest(m_list_services(-,-)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_list_services_response( + mw_list_services_response( + PX_CONFIGURED_SERVICES, + LibItsHttp_XmlTemplates.mw_path({ LibItsHttp_XmlTemplates.mw_via(PX_ECRF_VIA) }) + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_LOST_BV_11 + +/** + * @desc "IUT successfully responds with configured service types for a ListServicesByLocation request without service" + */ + testcase TC_ECRF_LOST_BV_12() runs on HttpComponent system TestAdapter { + // Test control + f_check_statements({ + { name := "PICS_ECRF_LIST_SERVICES_BY_LOCATION", val := PICS_ECRF_LIST_SERVICES_BY_LOCATION } + }) + + // Test component configuration + f_cf_01_http_up(); + + + // Preamble + f_sendListServicesByLocationRequest( + m_list_services_by_location( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + -, + - + ) + ); + + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + + f_receiveResponse(mw_http_list_services_by_location_response( + mw_list_services_by_location_response( + { "urn:service:sos.fire", "urn:service:sos.police" }, + LibItsHttp_XmlTemplates.mw_path({ LibItsHttp_XmlTemplates.mw_via(PX_ECRF_VIA) }), + -, + mw_location_used(PX_LOCATION_ID) + ) + ) + ); + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_LOST_BV_12 + + /** + * @desc "IUT successfully responds with a service URI for an Ellipse in the service boundary" + */ + testcase TC_ECRF_LOST_BV_13() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_ELLIPSE", val := PICS_ECRF_GEOMETRY_ELLIPSE } + }) + + // Test component configuration + f_cf_01_http_up(); + + template (omit) EllipseType ellipse := m_ellipse( + m_center_group_pos(PX_ELLIPSE_IN_G1_CENTER), + { uom := PX_ELLIPSE_IN_G1_MAJOR_AXIS_UOM, base := PX_ELLIPSE_IN_G1_MAJOR_AXIS }, + { uom := PX_ELLIPSE_IN_G1_MINOR_AXIS_UOM, base := PX_ELLIPSE_IN_G1_MINOR_AXIS }, + { uom := PX_ELLIPSE_IN_G1_ORIENTATION_UOM, base := PX_ELLIPSE_IN_G1_ORIENTATION } + ); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(ellipse))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a service URI for an Arcband in the service boundary" + */ + testcase TC_ECRF_LOST_BV_14() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_ARCBAND", val := PICS_ECRF_GEOMETRY_ARCBAND } + }) + + // Test component configuration + f_cf_01_http_up(); + + template (omit) ArcBandType arcband := m_arcband( + m_center_group_pos(PX_ARCBAND_IN_G1_CENTER), + { uom := PX_ARCBAND_IN_G1_INNER_RADIUS_UOM, base := PX_ARCBAND_IN_G1_INNER_RADIUS }, + { uom := PX_ARCBAND_IN_G1_OUTER_RADIUS_UOM, base := PX_ARCBAND_IN_G1_OUTER_RADIUS }, + { uom := PX_ARCBAND_IN_G1_START_ANGLE_UOM, base := PX_ARCBAND_IN_G1_START_ANGLE }, + { uom := PX_ARCBAND_IN_G1_OPENING_ANGLE_UOM,base := PX_ARCBAND_IN_G1_OPENING_ANGLE } + ); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(arcband))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a service URI for an Arcband in the service boundary" + */ + testcase TC_ECRF_LOST_BV_15() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_POLYGON", val := PICS_ECRF_GEOMETRY_POLYGON } + }) + + // Test component configuration + f_cf_01_http_up(); + + template (omit) PolygonType polygon := m_polygon(PX_POLYGON_IN_G1); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(polygon))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response( + mw_find_service_response( + { mw_mapping( + mw_expires_date_time(PX_LOST_EXPIRES), + PX_LOST_LAST_UPDATED, + PX_ECRF_SOURCE, + PX_SOURCE_ID_POLICE_G1, + { mw_display_name(-, PX_DISPLAY_NAME_POLICE_G1) }, + { PX_URI_POLICE_G1 }, + -, + PX_E_POLICE_SERVICE_URN, + -, -, -, + "112" + ) + } + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a redirect for findServiceRequest" + */ + testcase TC_ECRF_LOST_BV_16() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_GEOMETRY_POINT", val := PICS_ECRF_GEOMETRY_POINT }, + { name := "PICS_ECRF_REDIRECT", val := PICS_ECRF_REDIRECT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + false + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse( + mw_http_redirect_response( + mw_redirect(PX_ECRF_SOURCE,PX_REDIRECT_TARGET,?) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT successfully responds with a redirect for listServiceByLocation" + */ + testcase TC_ECRF_LOST_BV_17() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_LIST_SERVICES_BY_LOCATION", val := PICS_ECRF_LIST_SERVICES_BY_LOCATION }, + { name := "PICS_ECRF_GEOMETRY_POINT", val := PICS_ECRF_GEOMETRY_POINT }, + { name := "PICS_ECRF_REDIRECT", val := PICS_ECRF_REDIRECT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendListServicesByLocationRequest( + m_list_services_by_location( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G3, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + -, + "urn:service:sos" + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse( + mw_http_redirect_response( + mw_redirect(PX_ECRF_SOURCE,PX_REDIRECT_TARGET,?) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + } // End of group LOST + + + group Errors { + + /** + * @desc "IUT responds to a findServiceRequest with a loop error response" + */ + testcase TC_ECRF_LOST_BI_01() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE }, + { name := "PICS_ECRF_LOOP_DETECTION", val := PICS_ECRF_LOOP_DETECTION } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true, + omit, + omit, + LibItsHttp_XmlTemplates.m_path({LibItsHttp_XmlTemplates.m_via(PX_ECRF_NAPTR)}) + ) + ); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response_error( + mw_exception_loop( + PX_ECRF_NAPTR, + mw_basic_exception + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + /** + * @desc "IUT responds to a listServiceByLocation with a loop error response" + */ + testcase TC_ECRF_LOST_BI_02() runs on HttpComponent system TestAdapter { + // Test control + f_check_statements({ + { name := "PICS_ECRF_LIST_SERVICES_BY_LOCATION", val := PICS_ECRF_LIST_SERVICES_BY_LOCATION }, + { name := "PICS_ECRF_LOOP_DETECTION", val := PICS_ECRF_LOOP_DETECTION } + }) + + // Test component configuration + f_cf_01_http_up(); + + + // Preamble + f_sendListServicesByLocationRequest( + m_list_services_by_location( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + LibItsHttp_XmlTemplates.m_path({LibItsHttp_XmlTemplates.m_via(PX_ECRF_NAPTR)}), + "urn:service:sos" + ) + ); + + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response_error( + mw_exception_loop( + PX_ECRF_NAPTR, + mw_basic_exception + ) + ) + ); + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_ECRF_LOST_BI_02 + + /** + * @desc "IUT responds to a findServiceRequest with an badRequest error response" + */ + testcase TC_ECRF_LOST_BI_03() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ECRF_FIND_SERVICE", val := PICS_ECRF_FIND_SERVICE } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRawRequest(PX_INVALID_REQUEST); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_find_service_response_error( + mw_exception_badRequest( + PX_ECRF_NAPTR, + mw_basic_exception + ) + ) + ); + + // Postamble + f_cf_01_http_down(); + } + + } + + group Subscriptions { + + /** + * @desc "IUT responds to SIP Subscribe for Element State with an 200 OK" + */ + testcase TC_ECRF_SIP_BV_01() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + f_check_statements({ + { name := "PICS_ECRF_SIP_ELEMENT_STATE", val := PICS_ECRF_SIP_ELEMENT_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); + + var ElementStatePayload v_elementStatePayload; + f_decodeElementState(v_msg_recv, v_elementStatePayload); + + if (match(v_elementStatePayload, mw_element_state_payload)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_elementStatePayload, mw_element_state_payload)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_01 + + + /** + * @desc "IUT responds to a SIP "Unsubscribe" for elementState event package with an 200 OK and NOTIFY" + */ + testcase TC_ECRF_SIP_BV_02() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + f_check_statements({ + { name := "PICS_ECRF_SIP_ELEMENT_STATE", val := PICS_ECRF_SIP_ELEMENT_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_05 + + + /** + * @desc "IUT responds to SIP Subscribe for Security Posture" + */ + testcase TC_ECRF_SIP_BV_03() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ECRF_SIP_SECURITY_POSTURE", val := PICS_ECRF_SIP_SECURITY_POSTURE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); + + var SecurityPosturePayload v_securityPosturePayload; + f_decodeSecurityPosture(v_msg_recv, v_securityPosturePayload); + + if (match(v_securityPosturePayload, mw_security_posture_payload())) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_securityPosturePayload, mw_security_posture_payload())); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_03 + + + /** + * @desc "IUT responds to SIP Unsubscribe for Security Posture" + */ + testcase TC_ECRF_SIP_BV_04() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ECRF_SIP_SECURITY_POSTURE", val := PICS_ECRF_SIP_SECURITY_POSTURE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_04 + + + /** + * @desc "IUT responds to SIP Subscribe for ServiceState" + */ + testcase TC_ECRF_SIP_BV_05() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ECRF_SIP_SERVICE_STATE", val := PICS_ECRF_SIP_SERVICE_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); + + var ServiceStatePayload v_serviceStatePayload; + f_decodeServiceState(v_msg_recv, v_serviceStatePayload); + + if (match(v_serviceStatePayload, mw_service_state_payload)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_serviceStatePayload, mw_service_state_payload)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_05 + + + /** + * @desc "IUT responds to SIP Unsubscribe for ServiceState" + */ + testcase TC_ECRF_SIP_BV_06() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ECRF_SIP_SERVICE_STATE", val := PICS_ECRF_SIP_SERVICE_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_09 + } + + group Security { + + testcase TC_ECRF_TLS_BI_01() runs on HttpComponent system TestAdapter { + // Test control + f_check_statements({ + { name := "PICS_ECRF_TLS_AUTHENTICATION", val := PICS_ECRF_TLS_AUTHENTICATION } + }) + + // Preamble + f_cf_01_http_up(); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + @try { + f_sendFindServiceRequest( + m_find_service_request( + { + m_location( + PX_LOCATION_ID, + { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_G1, PX_SRS_NAME, "point1")))) }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + { }, + PX_E_POLICE_SERVICE_URN, + true + ) + ); + + log("The IUT should reject the connection."); + // Should not get here since connection should have been refused + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + + } @catch(err) { + if (match(err, pattern "*There is no connection alive*")) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + } + + + // Postamble + f_cf_01_http_down(); + } + + testcase TC_ECRF_TLS_BI_02() runs on HttpSipComponent system TestAdapter { + // Local Variables + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ECRF_TLS_AUTHENTICATION", val := PICS_ECRF_TLS_AUTHENTICATION } + }) + + // Preamble + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + + // Test Body + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + @try { + f_SendSUBSCRIBE(request); + + log("The IUT should reject the connection."); + // Should not get here since connection should have been refused + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + + } @catch(err) { + if (match(err, pattern "*There is no connection alive*")) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + } + + // Postamble + f_cf_01_down(); + } + + } + +} // End of module AtsECRF_TestCases diff --git a/ttcn/AtsECRF/AtsECRF_TestControl.ttcn b/ttcn/AtsECRF/AtsECRF_TestControl.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..35f37dc89a7fa2715babe99d8d82b7922207d3e9 --- /dev/null +++ b/ttcn/AtsECRF/AtsECRF_TestControl.ttcn @@ -0,0 +1,40 @@ +module AtsECRF_TestControl { + + // LibSip + import from LibSip_SIPTypesAndValues all; + + // LibNg112 + import from LibNg112_Pics all; + + // AtsECRF + import from AtsECRF_TestCases all; + import from AtsECRF_Pics all; + + // Test Execution + control { + /** + if (PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST) { + if (PICS_L_FIS_GEO1) { execute(TC_ECRF_HTTP_POST_BV_01()); } + if (PICS_L_FIS_GEO2) { execute(TC_ECRF_HTTP_POST_BV_02()); } + if (PICS_L_FIS_ERR1) { execute(TC_ECRF_HTTP_POST_BV_03()); } + if (PICS_L_FIS_ERR2) { execute(TC_ECRF_HTTP_POST_BV_04()); } + if (PICS_L_FIS_SBV1) { execute(TC_ECRF_HTTP_POST_BV_05()); } + if (PICS_L_FIS_GEO2) { + execute(TC_ECRF_HTTP_POST_BV_06()); + execute(TC_ECRF_HTTP_POST_BV_07()); + execute(TC_ECRF_HTTP_POST_BV_08()); + } + if (PICS_L_FIS_GEO1) { + execute(TC_ECRF_HTTP_POST_BV_10()); + execute(TC_ECRF_HTTP_POST_BV_12()); + } + if (PICS_L_LST_ALL1) { + execute(TC_ECRF_HTTP_POST_BV_09()); + execute(TC_ECRF_HTTP_POST_BV_11()); + } + } + **/ + + } // End of 'control' statement + +} // End of module AtsECRF_TestControl diff --git a/ttcn/AtsECRF/module.mk b/ttcn/AtsECRF/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..ba0af8d8dbe768e778ff1356c72e2d8f7f250b6e --- /dev/null +++ b/ttcn/AtsECRF/module.mk @@ -0,0 +1,31 @@ +suite := AtsECRF + +sources := \ + AtsECRF_AltSteps.ttcn \ + AtsECRF_Functions.ttcn \ + AtsECRF_Templates.ttcn \ + AtsECRF_TestCases.ttcn \ + AtsECRF_Pics.ttcn \ + AtsECRF_Pixits.ttcn \ + AtsECRF_TestControl.ttcn + +modules := ../LibCommon \ + ../LibIts/ttcn/Http \ + ../LibEmcom/LibNg112 \ + ../LibIms \ + ../LibSip \ + ../../ccsrc/Ports/LibHttp \ + ../../ccsrc/EncDec/LibHttp \ + ../../ccsrc/Ports/LibSip \ + ../../ccsrc/EncDec/LibSip \ + ../../ccsrc/Framework \ + ../../ccsrc/loggers \ + ../../ccsrc/Protocols/ETH \ + ../../ccsrc/Protocols/Held \ + ../../ccsrc/Protocols/Http \ + ../../ccsrc/Protocols/Lost \ + ../../ccsrc/Protocols/Pcap \ + ../../ccsrc/Protocols/Sip \ + ../../ccsrc/Protocols/Tcp \ + ../../ccsrc/Protocols/UDP \ + ../modules/titan.TestPorts.Common_Components.Abstract_Socket diff --git a/ttcn/AtsESRP/AtsESRP_Functions.ttcn b/ttcn/AtsESRP/AtsESRP_Functions.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..afd3337faf6d05676b2df549b7b9ecea871e882b --- /dev/null +++ b/ttcn/AtsESRP/AtsESRP_Functions.ttcn @@ -0,0 +1,301 @@ +module AtsESRP_Functions { + import from LibItsHttp_Templates all; + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_TestSystem all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Pics all; + + import from LibSip_SIPTypesAndValues all; + + import from LibNg112_Templates all; + import from LibNg112_TypesAndValues all; + + import from LibSip_Templates all; + import from LibSip_Steps all; + + import from AtsESRP_Pixits all; + + import from LibNg112_TestSystem all; + import from LibIms_Interface all; + import from LibCommon_Sync all; + + import from LibNg112_DequeueRegistration all; + + import from http_www_opengis_net_pidflo_1_0 all; + + type record Statement { + charstring name, + boolean val + } + + type record of Statement StatementList; + + function f_check_statements(StatementList p_statements) { + var charstring v_msg := ""; + for(var integer v_i := 0; v_i < sizeof(p_statements); v_i := v_i + 1) { + if (not(p_statements[v_i].val)) { + if (lengthof(v_msg) > 0) { + v_msg := v_msg & ", "; + } + v_msg := v_msg & p_statements[v_i].name; + } + } + + if (lengthof(v_msg) > 0) { + log("*** " & testcasename() & ": " & v_msg &" required for executing the TC ***") + setverdict(inconc); + stop; + } + } + + function awaitingRequest_sendReply(template LibItsHttp_TypesAndValues.Request p_request, template (value) XmlBody p_reply, in charstring p_content_type := PICS_HEADER_CONTENT_TYPE ) runs on HttpComponent { + var Headers v_headers; + + alt { + [] httpPort.receive(mw_http_request(p_request)) { + tc_ac.stop; + + // Send the response + f_init_default_headers_list(p_content_type, -, v_headers); + httpPort.send( + m_http_response( + m_http_response_ok( + {xml_body := p_reply}, + v_headers))); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } + } + + function f_http_post(in charstring p_uri, in template (omit) HttpMessageBody p_body := omit) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_post( + p_uri, + v_headers, + p_body + ) + ) + ); + } + + function f_http_put(in charstring p_uri, in template (omit) HttpMessageBody p_body := omit) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_put( + p_uri, + v_headers, + p_body + ) + ) + ); + } + + group FindService { + import from urn_ietf_params_xml_ns_lost1 all; + + function f_awaitingFindServiceRequest(template (present) FindService p_findServiceRequest) runs on HttpComponent return HttpMessage{ + var HttpMessage v_request; + + template HttpMessage v_expected_request := mw_http_request( + mw_http_request_post(?,?, + mw_http_message_body_xml( + mw_body_xml_find_service_request(p_findServiceRequest) + ) + ) + ); + + alt { + [] httpPort.receive(v_expected_request) -> value v_request { + tc_ac.stop; + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } + + return v_request; + } + + function f_assertFindServiceRequestLocation(HttpMessage p_request, template (present) Circle p_circle) return boolean { + var universal charstring v_temp; + var integer v_result; + var Circle v_circle; + v_temp := p_request.request.body.xml_body.findServiceRequest.location_list[0].extensionPoint_list[0].elem; + + log("Decoding " & v_temp); + v_result := decvalue_unichar(v_temp, v_circle); + log("Result"); + log(v_circle) + + if (match(v_circle, p_circle)) { + return true; + } else { + log(match(v_circle, p_circle)); + } + + return false; + } + + function f_sendFindServiceResponse(template (value) FindServiceResponse p_findServiceResponse) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list("application/lost+xml", -, v_headers); + httpPort.send( + m_http_response( + m_http_response_ok( + {xml_body := m_body_xml_find_service_response(p_findServiceResponse)}, + v_headers))); + } + + function f_sendFindServiceRedirect(template (value) Redirect p_redirect) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list("application/lost+xml", -, v_headers); + httpPort.send( + m_http_response( + m_http_response_ok( + {xml_body := m_body_xml_redirect_response(p_redirect)}, + v_headers))); + } + } + + group LocationRequest { + import from urn_ietf_params_xml_ns_geopriv_held all; + + function f_awaitingLocationRequest(template (present) LocationRequest p_locationRequest) runs on HttpComponent return HttpMessage{ + var HttpMessage v_request; + + template HttpMessage v_expected_request := mw_http_request( + mw_http_request_post(?,?, + mw_http_message_body_xml( + mw_body_xml_location_request(p_locationRequest) + ) + ) + ); + + alt { + [] httpPort.receive(v_expected_request) -> value v_request { + tc_ac.stop; + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } + + return v_request; + } + + function f_sendLocationResponse(template (value) LocationResponse p_locationResponse) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list("application/held+xml", -, v_headers); + httpPort.send( + m_http_response( + m_http_response_ok( + {xml_body := m_body_xml_location_response(p_locationResponse)}, + v_headers))); + } + + } + group QueueState { + function f_awaitingSubscribeQueueState() runs on ImsComponent { + var LibSip_SIPTypesAndValues.Request v_request; + + template LibSip_SIPTypesAndValues.Request mw_request := ?; + + log("**** f_awaitingSubscribeQueueState ****"); + f_awaitingSUBSCRIBE(mw_SUBSCRIBE_QueueState_Request); + // SIPP.receive(mw_request) -> value v_request + log("**** f_awaitingSubscribeQueueState: -> "); + log(v_request); + } + + function f_sendSubscribeQueueStateResponse() runs on ImsComponent { + log("**** f_sendSubscribeQueueStateResponse ****") ; + f_send200OK(); + } + + } // End of group QueueState + + group DequeueRegistration { + function f_sendDequeueRegistration(template DequeueRegistrationRequest p_request) runs on HttpComponent { + log("**** f_sendDequeueRegistration ****") ; + f_http_put( + PX_ESRP_DEQUEUE_REGISTRATION_URI, + m_http_message_body_json( + m_body_json_dequeue_registration_request(p_request) + ) + ) + } + + function f_awaitingDequeueRegistrationResponse(template (present) DequeueRegistrationResponse p_response) runs on HttpComponent return boolean { + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_json( + mw_body_json_dequeue_registration_response(p_response) + )))) { + tc_ac.stop; + log("*** " & testcasename() & ": INFO: IUT successfully responsds to dequeue registration***"); + return true; + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + return false; + } + } + return false; + } + + function f_awaitingDequeueResponse(template LibItsHttp_TypesAndValues.Response p_response) runs on HttpComponent { + alt { + [] httpPort.receive( + mw_http_response(p_response)) { + tc_ac.stop; + log("*** " & testcasename() & ": INFO: IUT successfully responsds with an error code***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } + + + } + } // End of group DequeueRegistration +} diff --git a/ttcn/AtsESRP/AtsESRP_Pics.ttcn b/ttcn/AtsESRP/AtsESRP_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8a0743f4a5949e20174e956e33d8976c6303c2c8 --- /dev/null +++ b/ttcn/AtsESRP/AtsESRP_Pics.ttcn @@ -0,0 +1,84 @@ +module AtsESRP_Pics { + + type record of charstring request_uri_list; + + /** + * @desc Does the IUT support LoST protocol? + */ + modulepar boolean PICS_ESRP_LOST := true; + + /** + * @desc Does the IUT support LoST redirects? + */ + modulepar boolean PICS_ESRP_LOST_REDIRECT := true; + + /** + * @desc Does the IUT support HELD protocol? + */ + modulepar boolean PICS_ESRP_HELD := true; + + /** + * @desc Does the IUT support HELD Location By Reference? + */ + modulepar boolean PICS_ESRP_HELD_LOCATION_REFERENCE := true + /** + * @desc Does the IUT support Dequeue Registration? + */ + modulepar boolean PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT := true; + + /** + * @desc Does the IUT support the configuration of fixed targets? + */ + modulepar boolean PICS_ESRP_FIXED_TARGET_SUPPORT := true + + /** + * @desc Does the IUT support SIP Registrations ? + */ + modulepar boolean PICS_ESRP_TARGET_SIP_REGISTER_SUPPORT := true + + /** + * @desc Does the IUT support adding Call Identifier ? + */ + modulepar boolean PICS_ESRP_CALL_IDENTIFIER_SUPPORT := true + + /** + * @desc Does the IUT support adding Incident Identifier ? + */ + modulepar boolean PICS_ESRP_INCIDENT_IDENTIFIER_SUPPORT := true + + /** + * @desc Does the IUT support Queue States ? + */ + modulepar boolean PICS_ESRP_QUEUE_STATE_SUPPORT := true + + /** + * @desc Does the IUT support SIP Element State ? + */ + modulepar boolean PICS_ESRP_SIP_ELEMENT_STATE := true + + /** + * @desc Does the IUT support SIP Security Posture ? + */ + modulepar boolean PICS_ESRP_SIP_SECURITY_POSTURE := true + + /** + * @desc Does the IUT support SIP Service State ? + */ + modulepar boolean PICS_ESRP_SIP_SERVICE_STATE := true + + /** + * @desc Does the IUT support mutual TLS ? + */ + modulepar boolean PICS_ESRP_TLS_AUTHENTICATION := true + + /** + * @desc HTTP post URI for LIS protocol + */ + modulepar charstring PICS_ECRF_URI := "/"; + + /** + * @desc Does the IUT support LoST protocol? + */ + modulepar boolean PICS_SERVICE_LOST := true; + +} // End of module AtsESRP_Pics diff --git a/ttcn/AtsESRP/AtsESRP_Pixits.ttcn b/ttcn/AtsESRP/AtsESRP_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..ccd2aa79824d685b28714df9701d480884cf8b9f --- /dev/null +++ b/ttcn/AtsESRP/AtsESRP_Pixits.ttcn @@ -0,0 +1,46 @@ +module AtsESRP_Pixits { + + import from XSD all; + import from http_www_opengis_net_gml all; + + // Dequeue Registration + modulepar charstring PX_ESRP_DEQUEUE_REGISTRATION_URI := "/esrp"; + + modulepar charstring PX_ESRP_DEQUEUE_REGISTRATION_QUEUE := "sip:queue@esinet.io"; + modulepar charstring PX_ESRP_DEQUEUE_REGISTRATION_QUEUE_INVALID := "not-a-queue"; + + modulepar charstring PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER := "sip:127.0.0.1:5080@esinet.io"; // Should equal the corresponding ATS port + modulepar integer PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION := 3600; + modulepar integer PX_ESRP_DEQUEUE_REGISTRATION_PREFERENCE := 5; + + // PX_CIRCLE_IN_G1 + modulepar DoubleList PX_CIRCLE_IN_G1_CENTER := { 43.58206959563555, 6.974515914916991 }; + modulepar XSD.Double PX_CIRCLE_IN_G1_RADIUS := 200.000; + modulepar XSD.AnyURI PX_CIRCLE_IN_G1_UOM := "urn:ogc:def:uom:EPSG::9001"; + + // Downstream Element + modulepar XSD.AnyURI PX_URI_POLICE_G1 := "sip:police@g1.esinet.io"; + + + // ECRF Test System Defaults + modulepar XSD.String PX_PATH := "ecrf.testcomponent.esinet.io"; + modulepar XSD.DateTime PX_MAPPING_EXPIRATION := "2099-03-03T09:36:53+00:00"; + modulepar XSD.DateTime PX_MAPPING_LAST_UPDATED := "2021-03-03T09:36:53+00:00"; + modulepar XSD.String PX_MAPPING_SOURCE := "ecrf.testcomponent.esinet.io"; + modulepar XSD.AnyURI PX_MAPPING_SOURCE_ID := "1d2af31b-4f75-4277-871a-dd3fad15b002"; + modulepar XSD.String PX_MAPPING_DISPLAY_NAME := "Police"; + + // ECRF Redirect Target (NAPTR Record) + modulepar XSD.String PX_REDIRECT_TARGET := "ecrf2.testcomponent.esinet.io"; + + // LIS Test System Defaults + modulepar charstring PX_TS_LIS_SCHEME := "http"; + modulepar charstring PX_TS_LIS_DEREFERENCE := "//localhost:8084/660bc838-882e-4683-8241-af26bb5960d8" // needs to be correlated with lis port + + // ECRF Fixed Target + + + // Debug + modulepar boolean PX_ADD_TC_NAME_HTTP_HEADER := false; + +} // End of module AtsECRF_Pixits diff --git a/ttcn/AtsNg112/AtsNg112_Steps.ttcn b/ttcn/AtsESRP/AtsESRP_Steps.ttcn similarity index 98% rename from ttcn/AtsNg112/AtsNg112_Steps.ttcn rename to ttcn/AtsESRP/AtsESRP_Steps.ttcn index 623f238fa1974b99559bbe08d38a0cf9e2f72e7c..dabc01ae7c4e405e45fd0dde6d446794fed9bfe4 100644 --- a/ttcn/AtsNg112/AtsNg112_Steps.ttcn +++ b/ttcn/AtsESRP/AtsESRP_Steps.ttcn @@ -1,4 +1,4 @@ -module AtsNg112_Steps { +module AtsESRP_Steps { // LibSip import from LibSip_SIPTypesAndValues all; @@ -92,4 +92,4 @@ module AtsNg112_Steps { } // End of group globalSteps -} // End of module AtsNg112_Steps +} // End of module AtsESRP_Steps diff --git a/ttcn/AtsESRP/AtsESRP_Templates.ttcn b/ttcn/AtsESRP/AtsESRP_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..285dae88054163620f7e9a2c0a09bd583f567c66 --- /dev/null +++ b/ttcn/AtsESRP/AtsESRP_Templates.ttcn @@ -0,0 +1,38 @@ +module AtsESRP_Templates { + import from AtsESRP_Pixits all; + + group ECRF { + import from XSD all; + import from urn_ietf_params_xml_ns_lost1 all; + import from LibItsHttp_XmlTemplates all; + + template (omit) Mapping m_mapping_Base( + in template (value) Mapping.uri_list p_uri_list, + in template (omit) Service p_service := omit + ) := { + lang := omit, + expires := { dateTime := PX_MAPPING_EXPIRATION }, + lastUpdated := PX_MAPPING_LAST_UPDATED, + message_ := omit, + source := PX_MAPPING_SOURCE, + sourceId := PX_MAPPING_SOURCE_ID, + displayName_list := { {lang := "en", base := PX_MAPPING_DISPLAY_NAME} }, + service := p_service, + choice := omit, + uri_list := p_uri_list, + serviceNumber := omit, + notLost_list := {} + } // End of template m_mapping + + template (omit) FindServiceResponse m_find_service_response_Base( + in template (value) FindServiceResponse.mapping_list p_mapping_list + ) := { + mapping_list := p_mapping_list, + locationValidation := omit, + warnings_list := {}, + path := LibItsHttp_XmlTemplates.m_path({ LibItsHttp_XmlTemplates.m_via(PX_PATH)}), + notLost_list := {}, + locationUsed := omit + } // End of template m_find_service_response + } +} \ No newline at end of file diff --git a/ttcn/AtsESRP/AtsESRP_TestCases.ttcn b/ttcn/AtsESRP/AtsESRP_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..30860eb9d9f99049073632277409d3e604e863ce --- /dev/null +++ b/ttcn/AtsESRP/AtsESRP_TestCases.ttcn @@ -0,0 +1,1864 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the NG112 test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module AtsESRP_TestCases { + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + // RFC3863 PIDF + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr language "XSD" all + with { + extension "File:../xsd/RFC5139_pdif_geopriv10_civic_address.xsd"; + } + + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + + // OpenGIS + import from http_www_opengis_net_pidflo_1_0 language "XSD" all + with { + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } + + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibItsHttp + import from LibItsHttp_Pics all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_TestSystem all; + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_XmlMessageBodyTypes all; + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Steps all; + import from LibSip_Templates all; + import from LibSip_Interface all; + import from LibNg112_SubscriptionPayloads all; + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Steps all; + import from LibIms_Templates all; + import from LibIms_Interface all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Templates all; + import from LibNg112_Functions all; + import from LibNg112_TestSystem all; + import from LibNg112_Steps all; + import from LibNg112_Pics all; + import from LibNg112_Pixits all; + + // AtsESRP + import from AtsESRP_Steps all; + import from AtsESRP_Pics all; + import from AtsESRP_Pixits all; + import from AtsESRP_Functions all; + import from AtsESRP_Templates all; + + group FindService { + + /** + * @desc "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" + */ + testcase TC_ESRP_FIND_SERVICE_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var HttpComponent v_ecrf; + var ImsComponent v_upstream; + var ImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_LOST", PICS_ESRP_LOST } + }) + + // Test component configuration + f_cf_03_up(v_ecrf, v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + v_ecrf.start(f_TC_ESRP_FIND_SERVICE()); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); v_downstream.start(f_TC_ESRP_SIP_INVITE_BV_01_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_03_down(v_ecrf, v_upstream, v_downstream); + + } // End of testcase TC_ESRP_FIND_SERVICE_BV_01 + + group f_TC_ESRP_FIND_SERVICE_BV_01 { + + function f_TC_ESRP_SIP_INVITE_BV_01_downstream( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE( + mw_INVITE_Request_IMS_Ng112( + vc_requestUri + ) + ); + //f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + timer t_wait := 1.0; + t_wait.start + t_wait.timeout + + // Postamble + //f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + // f_IMS_postamble_withDeRegistration(vc_cSeq); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_ESRP_SIP_INVITE_BV_01_downstream + + } // End of group f_TC_ESRP_FIND_SERVICE_BV_01 + + /** + * @desc "IUT fetches service uri from ECRF with redirect and forwards an incoming call with geodetic location" + */ + testcase TC_ESRP_FIND_SERVICE_BV_02( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var HttpComponent v_ecrf; + var HttpComponent v_ecrf_redirect_target; + var ImsComponent v_upstream; + var ImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_LOST", PICS_ESRP_LOST }, + { "PICS_ESRP_LOST_REDIRECT", PICS_ESRP_LOST_REDIRECT } + }) + + // Test component configuration + f_cf_04_up(v_ecrf, v_ecrf_redirect_target, v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + v_ecrf.start(f_TC_ESRP_REDIRECT()); + v_ecrf_redirect_target.start(f_TC_ESRP_FIND_SERVICE()); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); v_downstream.start(f_TC_ESRP_SIP_INVITE_BV_01_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(4, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_04_down(v_ecrf,v_ecrf_redirect_target, v_upstream, v_downstream); + + } // End of testcase TC_ESRP_FIND_SERVICE_BV_02 + + group f_TC_ESRP_FIND_SERVICE_BV_02 { + + function f_TC_ESRP_REDIRECT() runs on HttpComponent { + // Local variables + var Headers v_headers; + var HttpMessage v_request; + + // Test control + + // Preamble + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + + v_request := f_awaitingFindServiceRequest( + mw_find_service_request( + { + mw_location( + PX_LOCATION_ID, + { mw_extension_point }, + "geodetic-2d" // TODO Use a Pixit + ) + }, + ?, + PX_E_POLICE_SERVICE_URN + ) + ); + // Check Location + var boolean matches := f_assertFindServiceRequestLocation(v_request, + mw_circle( + mw_center_group_pos_1((PX_CIRCLE_IN_G1_CENTER[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_IN_G1_CENTER[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_IN_G1_CENTER[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_IN_G1_CENTER[1] + PX_DOUBLE_CMP_EPSILON)), + mw_radius(PX_CIRCLE_IN_G1_UOM, (PX_CIRCLE_IN_G1_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_IN_G1_RADIUS + PX_DOUBLE_CMP_EPSILON)), + PX_SRS_NAME + ) + ); + if (not matches) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + f_sendFindServiceRedirect( + m_redirect(PX_PATH, PX_REDIRECT_TARGET) + ) + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_ESRP_REDIRECT + } // End of group f_TC_ESRP_FIND_SERVICE_BV_02 + + /** + * @desc "IUT gets location from LIS and fetches service uri from ECRF and forwards an incoming call without location" + */ + testcase TC_ESRP_FIND_SERVICE_BV_03( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var HttpComponent v_ecrf; + var HttpComponent v_lis; + var ImsComponent v_upstream; + var ImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_LOST", PICS_ESRP_LOST }, + { "PICS_ESRP_HELD", PICS_ESRP_HELD } + }) + + // Test component configuration + f_cf_05_up(v_ecrf,v_lis, v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + v_lis.start(f_TC_ESRP_LIS_LOCATION_REQUEST()); + v_ecrf.start(f_TC_ESRP_FIND_SERVICE()); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); v_downstream.start(f_TC_ESRP_SIP_INVITE_BV_01_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(4, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_05_down(v_ecrf,v_lis, v_upstream, v_downstream); + + } // End of testcase TC_ESRP_FIND_SERVICE_BV_03 + + group f_TC_ESRP_FIND_SERVICE_BV_03 { + + + } + + /** + * @desc "IUT gets location from LIS and fetches service uri from ECRF and forwards an incoming call without location" + */ + testcase TC_ESRP_FIND_SERVICE_BV_04( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var HttpComponent v_ecrf; + var HttpComponent v_lis; + var ImsComponent v_upstream; + var ImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_LOST", PICS_ESRP_LOST }, + { "PICS_ESRP_HELD_LOCATION_REFERENCE", PICS_ESRP_HELD_LOCATION_REFERENCE } + }) + + // Test component configuration + f_cf_05_up(v_ecrf,v_lis, v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + v_lis.start(f_TC_ESRP_LIS_LOCATION_DEREFERENCE()); + v_ecrf.start(f_TC_ESRP_FIND_SERVICE()); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_LOCATION_BY_REFERENCE_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); v_downstream.start(f_TC_ESRP_SIP_INVITE_BV_01_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(4, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_05_down(v_ecrf,v_lis, v_upstream, v_downstream); + + } // End of testcase TC_ESRP_FIND_SERVICE_BV_04 + + group f_TC_ESRP_FIND_SERVICE_BV_04 { + + + } + } + + group FixedTarget { + /** + * @desc "IUT successfully forwards an incoming SIP INVITE to a fixed target" + */ + testcase TC_ESRP_FIXED_TARGET_SIP_INVITE_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_FIXED_TARGET_SUPPORT", PICS_ESRP_FIXED_TARGET_SUPPORT } + }) + + // Test component configuration + f_cf_06_up(v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_SIP_INVITE_BV_01_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_06_down(v_upstream, v_downstream); + + } // End of testcase TC_ESRP_FIXED_TARGET_SIP_INVITE_BV_01 + } // End of group FixedTarget + + group Registration { + /** + * @desc "IUT successfully forwards an incoming SIP INVITE to the registered target" + */ + testcase TC_ESRP_TARGET_SIP_REGISTER_BV_01() runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_psap; + + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "REGISTER" + }; + + // Test control + f_check_statements({ + { "PICS_ESRP_TARGET_SIP_REGISTER_SUPPORT", PICS_ESRP_TARGET_SIP_REGISTER_SUPPORT } + }) + + f_cf_07_up(v_psap); + + f_incCSeq(v_cSeq_s); + v_psap.start(f_TC_ESRP_TARGET_SIP_REGISTER_BV_01_REGISTER(v_cSeq_s)); + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + f_cf_07_down(v_psap); + } // End of testcase TC_ESRP_TARGET_SIP_REGISTER_BV_01 + + group f_TC_ESRP_TARGET_SIP_REGISTER_BV_01 { + function f_TC_ESRP_TARGET_SIP_REGISTER_BV_01_REGISTER( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local Variables + var template REGISTER_Request p_register; + + // Preamble + // Test component configuration + f_init_userprofile(c_userProfile_ESINetPSAP); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Test control + f_IMS_preamble_woRegistration(p_cSeq_s); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_Registration(p_cSeq_s, p_register, false); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } + } // End of group f_TC_ESRP_TARGET_SIP_REGISTER_BV_01 + } // End of group Registration + + group DequeueRegistrationTarget { + + /** + * @desc "IUT accepts Dequeue Registration" + */ + testcase TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_REGISTRATION_BV_01() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT", val := PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION + ) + ); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + if(f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok(?))) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + + // Postamble + f_cf_01_http_down(); + } // TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_REGISTRATION_BV_01 + + /** + * @desc "IUT sends correct error response for invalid Dequeue Registration" + */ + testcase TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_REGISTRATION_BV_02() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT", val := PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE_INVALID, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION + ) + ); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_awaitingDequeueResponse(mw_http_response_456_bad_queue) + + // Postamble + f_cf_01_http_down(); + } // End of TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_REGISTRATION_BV_02 + + /** + * @desc "IUT sends correct response for Dequeue Deregistration" + */ + testcase TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_DEREGISTRATION_BV_01() runs on HttpComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT", val := PICS_ESRP_TARGET_DEQUEUE_REGISTRATION_SUPPORT } + }) + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE_INVALID, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION + ) + ); + if(f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok(?))) { + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + } else { + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_timeout); + } + + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE_INVALID, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + 0 + ) + ); + + // Test Body + tc_ac.start; + + if(f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok())) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + + // Postamble + f_cf_01_http_down(); + } // End of TC_ESRP_HTTP_DEQUEUE_REGISTRATION_TARGET_DEREGISTRATION_BV_01 + + } // End of group DequeueRegistrationTarget + + group QueueState { + testcase TC_ESRP_QUEUE_STATE_BV_01() runs on HttpSipComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + f_cf_01_up() + + // Initialize + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION, + PX_ESRP_DEQUEUE_REGISTRATION_PREFERENCE + ) + ); + if(f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok)) { + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + } else { + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_timeout); + } + + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingSubscribeQueueState(); + f_sendSubscribeQueueStateResponse(); + + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + f_cf_01_down() + } + + testcase TC_ESRP_QUEUE_STATE_BV_02() runs on HttpSipComponent system TestAdapter { + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + f_cf_01_up() + + // Initialize + f_init_userprofile(c_userProfile_ESINetPSAP); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION, + PX_ESRP_DEQUEUE_REGISTRATION_PREFERENCE + ) + ); + if(f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok)) { + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_success); + } else { + f_selfOrClientSyncAndVerdictTestBody(c_prDone, e_timeout); + } + + f_awaitingSubscribeQueueState(); + f_sendSubscribeQueueStateResponse(); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + var QueueStatePayload state := { + QueueStateEventUri := PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + QueueStateEventQueueLength := 5, + QueueStateEventMaxLength := 20, + QueueStateValuesCode := "active" + } + + var charstring json := oct2char(unichar2oct(encvalue_unichar(valueof(state)))); + + LibSip_Steps.f_setHeadersNOTIFY(vc_cSeq); + f_SendNOTIFY(m_NOTIFY_QueueState( + vc_requestUri, vc_callId ,vc_cSeq, vc_from, vc_to, vc_via, { textplain := json } + )); + + f_awaitingOkResponse(vc_cSeq); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + f_cf_01_down() + } // End of TC_ESRP_QUEUE_STATE_BV_02 + + testcase TC_ESRP_QUEUE_STATE_BV_03(in CSeq p_cSeq_s) runs on HttpImsComponent { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + // Test component configuration + f_cf_06_up(v_upstream, v_downstream, true); + + + // Test Body + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration_ReceiveConversation(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + + f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_06_down(v_upstream, v_downstream, true); + } // End of TC_ESRP_QUEUE_STATE_BV_02 + + + testcase TC_ESRP_QUEUE_STATE_BV_04(in CSeq p_cSeq_s) runs on HttpImsComponent { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var ImsComponent v_downstream_diversion; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + // Test component configuration + f_cf_08_up(v_upstream, v_downstream, v_downstream_diversion); + + + // Test Body + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration(v_cSeq_s, "inactive")); + f_incCSeq(v_cSeq_s); + v_downstream_diversion.start(f_TC_ESRP_QUEUE_STATE_GENERAL_ReceiveConversation(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + + f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_08_down(v_upstream, v_downstream, v_downstream_diversion); + } // End of TC_ESRP_QUEUE_STATE_BV_04 + + testcase TC_ESRP_QUEUE_STATE_BV_05(in CSeq p_cSeq_s) runs on HttpImsComponent { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var ImsComponent v_downstream_diversion; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + // Test component configuration + f_cf_08_up(v_upstream, v_downstream, v_downstream_diversion); + + + // Test Body + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration(v_cSeq_s, "disabled")); + f_incCSeq(v_cSeq_s); + v_downstream_diversion.start(f_TC_ESRP_QUEUE_STATE_GENERAL_ReceiveConversation(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + + f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_08_down(v_upstream, v_downstream, v_downstream_diversion); + } // End of TC_ESRP_QUEUE_STATE_BV_05 + + testcase TC_ESRP_QUEUE_STATE_BV_06(in CSeq p_cSeq_s) runs on HttpImsComponent { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var ImsComponent v_downstream_diversion; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + // Test component configuration + f_cf_08_up(v_upstream, v_downstream, v_downstream_diversion); + + + // Test Body + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration(v_cSeq_s, "full")); + f_incCSeq(v_cSeq_s); + v_downstream_diversion.start(f_TC_ESRP_QUEUE_STATE_GENERAL_ReceiveConversation(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + + f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_08_down(v_upstream, v_downstream, v_downstream_diversion); + } // End of TC_ESRP_QUEUE_STATE_BV_06 + + testcase TC_ESRP_QUEUE_STATE_BV_07(in CSeq p_cSeq_s) runs on HttpImsComponent { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { name := "PICS_ESRP_QUEUE_STATE_SUPPORT", val := PICS_ESRP_QUEUE_STATE_SUPPORT } + }) + + // Test component configuration + f_cf_06_up(v_upstream, v_downstream, true); + + + // Test Body + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration_ReceiveConversation(v_cSeq_s, "standby")); + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + + f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_06_down(v_upstream, v_downstream, true); + } // End of TC_ESRP_QUEUE_STATE_BV_07 + + function f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration(in CSeq p_cSeq_s, charstring queueState) runs on HttpImsComponent { + // Initialize + f_init_userprofile(c_userProfile_ESINetPSAP); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION, + PX_ESRP_DEQUEUE_REGISTRATION_PREFERENCE + ) + ); + if(not f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok)) { + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error); + } + + f_awaitingSubscribeQueueState(); + f_sendSubscribeQueueStateResponse(); + + + var QueueStatePayload state := { + QueueStateEventUri := PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + QueueStateEventQueueLength := 5, + QueueStateEventMaxLength := 20, + QueueStateValuesCode := queueState + } + + var charstring json := oct2char(unichar2oct(encvalue_unichar(valueof(state)))); + + LibSip_Steps.f_setHeadersNOTIFY(p_cSeq_s); + f_SendNOTIFY(m_NOTIFY_QueueState( + vc_requestUri, vc_callId ,p_cSeq_s, vc_from, vc_to, vc_via, { textplain := json } + )); + + f_awaitingOkResponse(p_cSeq_s); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration + + function f_TC_ESRP_QUEUE_STATE_GENERAL_DequeueRegistration_ReceiveConversation(in CSeq p_cSeq_s, charstring queueState := "active") runs on HttpImsComponent { + + // Initialize + f_init_userprofile(c_userProfile_ESINetPSAP); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + f_sendDequeueRegistration( + m_dequeue_registration_request( + PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + PX_ESRP_DEQUEUE_REGISTRATION_DEQUEUER, + PX_ESRP_DEQUEUE_REGISTRATION_EXPIRATION, + PX_ESRP_DEQUEUE_REGISTRATION_PREFERENCE + ) + ); + if(not f_awaitingDequeueRegistrationResponse(mw_dequeue_response_ok)) { + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error); + } + + f_awaitingSubscribeQueueState(); + f_sendSubscribeQueueStateResponse(); + + + var QueueStatePayload state := { + QueueStateEventUri := PX_ESRP_DEQUEUE_REGISTRATION_QUEUE, + QueueStateEventQueueLength := 5, + QueueStateEventMaxLength := 20, + QueueStateValuesCode := queueState + } + + var charstring json := oct2char(unichar2oct(encvalue_unichar(valueof(state)))); + + LibSip_Steps.f_setHeadersNOTIFY(p_cSeq_s); + f_SendNOTIFY(m_NOTIFY_QueueState( + vc_requestUri, vc_callId ,p_cSeq_s, vc_from, vc_to, vc_via, { textplain := json } + )); + + f_awaitingOkResponse(p_cSeq_s); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE_No100Response( + mw_INVITE_Request_IMS_Ng112 + ); + log("*** Downstream element received INVITE"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + timer t_wait := 1.0; + t_wait.start + t_wait.timeout + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } + + function f_TC_ESRP_QUEUE_STATE_GENERAL_ReceiveConversation(in CSeq p_cSeq_s) runs on ImsComponent { + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE(mw_INVITE_Request_IMS_CallInfo_Ng112); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + timer t_wait := 1.0; + t_wait.start + t_wait.timeout + + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_ESRP_QUEUE_STATE_GENERAL_ReceiveConversation + + } // End of group QueueState + + group Subscriptions { + + /** + * @desc "IUT responds to SIP Subscribe for Element State with an 200 OK" + */ + testcase TC_ESRP_SIP_BV_01() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + f_check_statements({ + { name := "PICS_ESRP_SIP_ELEMENT_STATE", val := PICS_ESRP_SIP_ELEMENT_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); + + var ElementStatePayload v_elementStatePayload; + f_decodeElementState(v_msg_recv, v_elementStatePayload); + + if (match(v_elementStatePayload, mw_element_state_payload)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_elementStatePayload, mw_element_state_payload)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + f_cf_01_down(); + } // End of testcase TC_ESRP_SIP_BV_01 + + + /** + * @desc "IUT responds to a SIP "Unsubscribe" for elementState event package with an 200 OK and NOTIFY" + */ + testcase TC_ESRP_SIP_BV_02() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + f_check_statements({ + { name := "PICS_ESRP_SIP_ELEMENT_STATE", val := PICS_ESRP_SIP_ELEMENT_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_ECRF_SIP_BV_02 + + + /** + * @desc "IUT responds to SIP Subscribe for Security Posture" + */ + testcase TC_ESRP_SIP_BV_03() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ESRP_SIP_SECURITY_POSTURE", val := PICS_ESRP_SIP_SECURITY_POSTURE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); + + var SecurityPosturePayload v_securityPosturePayload; + f_decodeSecurityPosture(v_msg_recv, v_securityPosturePayload); + + if (match(v_securityPosturePayload, mw_security_posture_payload())) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_securityPosturePayload, mw_security_posture_payload())); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + f_cf_01_down(); + } // End of testcase TC_ESRP_SIP_BV_03 + + + /** + * @desc "IUT responds to SIP Unsubscribe for Security Posture" + */ + testcase TC_ESRP_SIP_BV_04() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ESRP_SIP_SECURITY_POSTURE", val := PICS_ESRP_SIP_SECURITY_POSTURE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_ESRP_SIP_BV_04 + + + /** + * @desc "IUT responds to SIP Subscribe for ServiceState" + */ + testcase TC_ESRP_SIP_BV_05() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ESRP_SIP_SERVICE_STATE", val := PICS_ESRP_SIP_SERVICE_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); + + var ServiceStatePayload v_serviceStatePayload; + f_decodeServiceState(v_msg_recv, v_serviceStatePayload); + + if (match(v_serviceStatePayload, mw_service_state_payload)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_serviceStatePayload, mw_service_state_payload)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + f_cf_01_down(); + } // End of testcase TC_ESRP_SIP_BV_05 + + + /** + * @desc "IUT responds to SIP Unsubscribe for ServiceState" + */ + testcase TC_ESRP_SIP_BV_06() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ESRP_SIP_SERVICE_STATE", val := PICS_ESRP_SIP_SERVICE_STATE } + }) + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ESRP); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_ESRP_SIP_BV_06 + } + + group Security { + testcase TC_ESRP_TLS_SIP_BI_01() runs on HttpSipComponent system TestAdapter { + // Local Variables + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_statements({ + { name := "PICS_ESRP_TLS_AUTHENTICATION", val := PICS_ESRP_TLS_AUTHENTICATION } + }) + + // Preamble + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + + // Test Body + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + @try { + f_SendSUBSCRIBE(request); + + log("The IUT should reject the connection."); + // Should not get here since connection should have been refused + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + + } @catch(err) { + if (match(err, pattern "*There is no connection alive*")) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + } + + // Postamble + f_cf_01_down(); + } + + } + + group Headers { + /** + * @desc "IUT successfully forwards an incoming SIP INVITE to a fixed target" + */ + testcase TC_ESRP_HEADERS_SIP_INVITE_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_FIXED_TARGET_SUPPORT", PICS_ESRP_FIXED_TARGET_SUPPORT }, + { "PICS_ESRP_CALL_IDENTIFIER_SUPPORT", PICS_ESRP_CALL_IDENTIFIER_SUPPORT } + }) + + // Test component configuration + f_cf_06_up(v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_HEADERS_SIP_INVITE_BV_01_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_06_down(v_upstream, v_downstream); + + } // End of testcase TC_ESRP_HEADERS_SIP_INVITE_BV_01 + + group f_TC_ESRP_HEADERS_SIP_INVITE_BV_01 { + + function f_TC_ESRP_HEADERS_SIP_INVITE_BV_01_downstream( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE( + mw_INVITE_Request_IMS_CallInfo_Ng112( + vc_requestUri, + ?, + ?, + ?, + ?, + ?, + ?, + *, + *, + *, + *, + *, + ?, + *, + *, + *, + mw_call_info_callId(pattern "*urn:emergency:uid:callid:*") + ) + ); + //f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + timer t_wait := 1.0; + t_wait.start + t_wait.timeout + + // Postamble + //f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + // f_IMS_postamble_withDeRegistration(vc_cSeq); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_ESRP_SIP_INVITE_BV_01_downstream + + } // End of group f_TC_ESRP_FIND_SERVICE_BV_01 + + /** + * @desc "IUT successfully forwards an incoming SIP INVITE to a fixed target" + */ + testcase TC_ESRP_HEADERS_SIP_INVITE_BV_02( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_upstream; + var HttpImsComponent v_downstream; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + f_check_statements({ + { "PICS_ESRP_FIXED_TARGET_SUPPORT", PICS_ESRP_FIXED_TARGET_SUPPORT }, + { "PICS_ESRP_INCIDENT_IDENTIFIER_SUPPORT", PICS_ESRP_INCIDENT_IDENTIFIER_SUPPORT } + }) + + // Test component configuration + f_cf_06_up(v_upstream, v_downstream); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); + v_upstream.start(f_TC_ESRP_SIP_INVITE_Without_Location_Upstream(v_cSeq_s)); + f_incCSeq(v_cSeq_s); + v_downstream.start(f_TC_ESRP_HEADERS_SIP_INVITE_BV_02_downstream(v_cSeq_s)); + f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_06_down(v_upstream, v_downstream); + + } // End of testcase TC_ESRP_HEADERS_SIP_INVITE_BV_02 + + group f_TC_ESRP_HEADERS_SIP_INVITE_BV_02 { + + function f_TC_ESRP_HEADERS_SIP_INVITE_BV_02_downstream( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE( + mw_INVITE_Request_IMS_CallInfo_Ng112( + vc_requestUri, + ?, + ?, + ?, + ?, + ?, + ?, + *, + *, + *, + *, + *, + ?, + *, + *, + *, + mw_call_info_incidentId(pattern "* 0) { + v_msg := v_msg & ", "; + } + v_msg := v_msg & pics.names[v_i]; + } + } + + if (lengthof(v_msg) > 0) { + log("*** " & testcasename() & ": " & v_msg &" required for executing the TC ***") + setverdict(inconc); + stop; + } + } + + function f_sendRequest(template (value) LocationRequest request) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send( + m_http_request( + m_http_request_post( + PICS_LIS_URI, + v_headers, + m_http_message_body_xml(m_body_xml_location_request(request)) + ) + ) + ); + } + + function f_sendAdvancedMobileLocation(charstring p_params) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_content_type, c_header_accept, c_header_authorization }, v_headers); + f_set_headers_list({ c_header_content_type }, { "application/x-www-form-urlencoded" }, v_headers); + + if (PX_ADD_TC_NAME_HTTP_HEADER) { + f_set_headers_list({ "X-TestcaseName"},{ testcasename()},v_headers); + } + + httpPort.send(m_http_request(m_http_request_post(PICS_LIS_AML_URI & "?" & p_params, v_headers))); + } + + function f_dereference(charstring v_params, template (omit) LocationRequest p_request) runs on HttpComponent { + // Local variables + var Headers v_headers; + + f_init_default_headers_list(-, -, v_headers); + f_remove_headers_list({ c_header_accept, c_header_authorization }, v_headers); + f_set_headers_list({ c_header_accept }, { "application/pidf+xml" }, v_headers); + + if (isvalue(p_request)) { + log("request template is defined, should use post for dereference"); + httpPort.send(m_http_request(m_http_request_post(v_params, v_headers, m_http_message_body_xml(m_body_xml_location_request(p_request))))); + } else { + httpPort.send(m_http_request(m_http_request_get(v_params,v_headers))); + } + } + + function f_findLocationUri(ReturnLocationType.locationURI_list p_uris, charstring schema) return charstring { + for(var integer i:=0; i < lengthof(p_uris); i := i + 1) { + if (substr(p_uris[i], 0, lengthof(schema)) == schema) { + return oct2char(unichar2oct(p_uris[i])); + } + } + return ""; + } + + function f_receiveResponse(template HttpMessage p_message) runs on HttpComponent return HttpMessage { + var HttpMessage v_response; + + alt { + [] httpPort.receive(p_message) -> value v_response { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] httpPort.receive { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } + + return v_response; + } + + function f_decodePresence(in NOTIFY_Request p_request, inout Presence p_presence) return integer { + var integer v_result; + var universal charstring v_temp; + + v_temp := p_request.messageBody.textplain; + log("gg:v_temp"); + log(v_temp); + v_result := decvalue_unichar(v_temp, p_presence); + + return v_result; + } + + function f_receiveResponsePreamble(template HttpMessage p_message) runs on HttpComponent return HttpMessage { + var HttpMessage v_response; + + alt { + [] httpPort.receive(p_message) -> value v_response { + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + } + [] httpPort.receive { + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_timeout); + } + } + + return v_response; + } +} diff --git a/ttcn/AtsLIS/AtsLIS_Pics.ttcn b/ttcn/AtsLIS/AtsLIS_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..9aedd8aeabfab8d255fdf650886e8a9776e405fc --- /dev/null +++ b/ttcn/AtsLIS/AtsLIS_Pics.ttcn @@ -0,0 +1,139 @@ +module AtsLIS_Pics { + + /** + * @desc Does the IUT support mutual tls authentication? + */ + modulepar boolean PICS_LIS_TLS_AUTHENTICATION := true + + /** + * @desc Does the IUT support HELD by Value? + */ + modulepar boolean PICS_LIS_HELD_BY_VALUE := true; + + /** + * @desc Does the IUT support HELD by Reference? + */ + modulepar boolean PICS_LIS_HELD_BY_REFERENCE := true; + + /** + * @desc Does the IUT support HELD by Reference via HTTP GET? + */ + modulepar boolean PICS_LIS_HELD_BY_REFERENCE_GET := true; + + /** + * @desc Does the IUT support geometry Point? + */ + modulepar boolean PICS_LIS_GEOMETRY_POINT := true; + + + /** + * @desc Does the IUT support geometry Circle? + */ + modulepar boolean PICS_LIS_GEOMETRY_CIRCLE := true; + + + /** + * @desc Does the IUT support Civic? + */ + modulepar boolean PICS_LIS_CIVIC := true; + + /** + * @desc Does the IUT support SIP Subscriptions? + */ + modulepar boolean PICS_LIS_SIP_SUBSCRIPTION := true; + + /** + * @desc Does the IUT support SIP Element State? + */ + modulepar boolean PICS_LIS_SIP_ELEMENT_STATE := true; + + + /** + * @desc Does the IUT support SIP Service State? + */ + modulepar boolean PICS_LIS_SIP_SERVICE_STATE := true; + + /** + * @desc Does the IUT support Security Posture within Service State? + */ + modulepar boolean PICS_LIS_SIP_SECURITY_POSTURE := true; + + + /** + * @desc Does the IUT support AML via HTTP? + */ + modulepar boolean PICS_LIS_AML_HTTP := true + + /** + * @desc Does the IUT support AML via SMS Text? + */ + modulepar boolean PICS_LIS_AML_TEXT_SMS := true + + /** + * @desc Does the IUT support AML via SMS Text? + */ + modulepar boolean PICS_LIS_AML_DATA_SMS := true + + /** + * @desc HTTP post URI for LIS protocol + */ + modulepar charstring PICS_LIS_URI := "/"; + + + /** + * @desc HTTP post URI for AML + */ + modulepar charstring PICS_LIS_AML_URI := "/aml"; + + + /** + * @desc Does the IUT support HELD protocol? + */ + modulepar boolean PICS_LOCATION_HELD := true; + + /** + * @desc Does IUT support Point? + */ + modulepar boolean PICS_H_QRY_GEO1 := true; + + /** + * @desc Does IUT support Circle? + */ + modulepar boolean PICS_H_QRY_GEO2 := true; + + /** + * @desc Does IUT support Polygon? + */ + modulepar boolean PICS_H_QRY_GEO3 := true; + + /** + * @desc Does IUT support Tocken? + */ + modulepar boolean PICS_H_QRY_GEO4 := true; + + /** + * @desc Does IUT support Civic? + */ + modulepar boolean PICS_H_QRY_CIV1 := true; + + /** + * @desc Does IUT support Token? + */ + modulepar boolean PICS_H_QRY_CIV2 := true; + + /** + * @desc Does IUT support Requested Type? + */ + modulepar boolean PICS_H_QRY_STR1 := true; + + /** + * @desc Does IUT support Requested locationUnknown error message? + */ + modulepar boolean PICS_H_QRY_ERR1 := true; + + /** + * @desc Does IUT support Requested cannotProvideLiType error message? + */ + modulepar boolean PICS_H_QRY_ERR2 := true; + +} // End of module AtsLIS_Pics diff --git a/ttcn/AtsLIS/AtsLIS_Pixits.ttcn b/ttcn/AtsLIS/AtsLIS_Pixits.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8f82003551c9c083ce1ca7e73aaf8bd4f26f2d05 --- /dev/null +++ b/ttcn/AtsLIS/AtsLIS_Pixits.ttcn @@ -0,0 +1,80 @@ +module AtsLIS_Pixits { + + import from XSD all; + + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } + + /** + * @desc List of device URIs + */ + type record of charstring DeviceURIs; + + /** + * @desc Device identifier using SIP uri + */ + modulepar charstring PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d"; + + /** + * @desc Device telephone URIs + * See NG112 Plugtest for Boundary and Location (e.g. ALICE01 sip:alice-01@plugtests.net tel:+336152555011 7.04618454 43.62301324 + + */ + modulepar DeviceURIs PX_DEVICE_NUMBER := { "tel:+336152555011", "tel:+336152555012", "tel:+336152555013", "tel:+33336152555014" }; // ALICE01, BOB01, CAROL01, DAVE01 + + /** + * @desc Device telephone URI to get a response with a point + */ + modulepar integer PX_DEVICE_NUMBER_POINT := 0; + + /** + * @desc Device telephone URI to get a response with a circle + */ + modulepar integer PX_DEVICE_NUMBER_CIRCLE := 2; + + /** + * @desc Device telephone URI to get a response with a civic address + */ + modulepar integer PX_DEVICE_NUMBER_CIVIC := 2; + + /** + * @desc Device telephone URI to get a response with an unknown device URI + */ + modulepar integer PX_UNKNOWN_DEVICE_NUMBER := 3; + + /** + * @desc Unknown device identifier + */ + modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; + + /** + * @desc Device point position + */ + modulepar DoubleList PX_DEVICE_NUMBER_POINT_POS := { 43.623013, 7.046185 }; // ALICE01 + + + /** Advanced Mobile Location */ + + /** + * @desc The number of the mobile used for sending SMS + */ + modulepar charstring PX_AML_MOBILE_NUMBER := "0043123456789"; + + /** + * @desc The number of the LIS to receive SMS + */ + modulepar charstring PX_AML_LIS_ENDPOINT_NUMBER := "0043987654321"; + + modulepar charstring PX_AML_MESSAGE := "A\"ML=1;lt=+54.76397;lg=-0.18305;rd=50;top=20130717141935;lc=90;pm=W;si=123456789012345;ei=1234567890123456;mcc=234;mnc=30;ml=128" + + // Debug + modulepar boolean PX_ADD_TC_NAME_HTTP_HEADER := false; + +} // End of module AtsLIS_Pixits diff --git a/ttcn/AtsLIS/AtsLIS_TestCases.ttcn b/ttcn/AtsLIS/AtsLIS_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..ca61b30e3a40389aa4a18ebccc39c01ed7a1d549 --- /dev/null +++ b/ttcn/AtsLIS/AtsLIS_TestCases.ttcn @@ -0,0 +1,1423 @@ +/** + * @author ETSI / STF549 + * @version $URL:$ + * $ID:$ + * @desc This module provides the NG112 test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module AtsLIS_TestCases { + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + // RFC3863 PIDF + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr language "XSD" all + with { + extension "File:../xsd/RFC5139_pdif_geopriv10_civic_address.xsd"; + } + + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + + // OpenGIS + import from http_www_opengis_net_pidflo_1_0 language "XSD" all + with { + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } + + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibItsHttp + import from LibItsHttp_Pics all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_TestSystem all; + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Steps all; + import from LibSip_Templates all; + import from LibSip_Interface all; + + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Steps all; + import from LibIms_Templates all; + import from LibIms_Interface all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Templates all; + import from LibNg112_Functions all; + import from LibNg112_TestSystem all; + import from LibNg112_Steps all; + import from LibNg112_Pics all; + import from LibNg112_Pixits all; + import from LibNg112_SubscriptionPayloads all; + + // AtsLIS + import from AtsLIS_Pics all; + import from AtsLIS_Pixits all; + import from AtsLIS_Functions all; + import from AtsLIS_AltSteps all; + + group HELD { + + template LocationResponseType mw_location_response := { + locationUriSet := ?, + presence := { + entity := ?, + tuple_list := { + { + id := ?, + status := { + basic := *, + geopriv := ?, + elem_list := { * } + }, + elem_list := ?, + contact := *, + note_list := ?, + timestamp_ := * + } + }, + note_list := ?, + elem_list := ? + }, + elem_list := {} + } + + template LocationResponseType mdw_geodetic_response( + in template (present) Geopriv_1 p_geopriv + ) modifies mw_location_response := { + presence := { + tuple_list := { + { + status := { + geopriv := p_geopriv + } + } + } + } + } + + + template HttpMessage mw_http_location_response( + in template (present) LocationResponseType p_location_response + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_location_response(p_location_response)))) + + template HttpMessage mw_http_error_response( + in template (present) ErrorType p_error + ) := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_location_response_error(p_error)))) + + + /** + * @desc "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" + */ + testcase TC_LIS_HELD_BV_01() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_VALUE, PICS_LIS_GEOMETRY_POINT}, names := {"PICS_LIS_HELD_BY_VALUE", "PICS_LIS_GEOMETRY_POINT"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] })))})); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + + // Test Body + tc_ac.start; + + template Point mw_expected_point := mw_point_1((PX_DEVICE_NUMBER_POINT_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_DEVICE_NUMBER_POINT_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[1] + PX_DOUBLE_CMP_EPSILON)); + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := omit, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ point := mw_expected_point}) + } + } + } + } + } + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_01 + + /** + * @desc "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" + */ + testcase TC_LIS_HELD_BV_02() runs on HttpComponent system TestAdapter { + + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_VALUE, PICS_LIS_GEOMETRY_CIRCLE}, names := {"PICS_LIS_HELD_BY_VALUE", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] })))})) + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := omit, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ circle := mw_expected_circle}) + } + } + } + } + } + + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_02 + +/** + * @desc "IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute" + */ + testcase TC_LIS_HELD_BV_03() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_REFERENCE, PICS_LIS_GEOMETRY_POINT}, names := {"PICS_LIS_HELD_BY_REFERENCE", "PICS_LIS_GEOMETRY_POINT"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] })))}, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + + // Test Body + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := omit + } + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_03 + + + /** + * @desc "IUT successfully responds with a Reference and Cirle when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute" + */ + testcase TC_LIS_HELD_BV_04() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_REFERENCE, PICS_LIS_GEOMETRY_CIRCLE}, names := {"PICS_LIS_HELD_BY_REFERENCE", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] })))}, + m_locationTypeType( + { alt_1 := { locationURI, geodetic }}, + true + ) + ) + ) + + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ circle := mw_expected_circle}) + } + } + } + } + } + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_04 + + + /** + * @desc "IUT successfully responds with a CIVIC address when it receives a HTTP POST location request with location type civic" + */ + testcase TC_LIS_HELD_BV_05() runs on HttpComponent system TestAdapter { + + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_VALUE, PICS_LIS_CIVIC}, names := {"PICS_LIS_HELD_BY_VALUE", "PICS_LIS_CIVIC"}}); + + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_sendRequest( + m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIVIC] })))}, + m_locationTypeType( + m_locationTypeBase_civic, + true + ) + ) + ) + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := omit, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ civic := mw_civicAddress(PX_CIVIC_ADDR_COUNTRY, PX_CIVIC_ADDR_A1, PX_CIVIC_ADDR_A3, PX_CIVIC_ADDR_A4, PX_CIVIC_ADDR_STS, PX_CIVIC_ADDR_LMK) }) + } + } + } + } + } + + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_05 + + + /** + * @desc "IUT successfully responds with a Cirle when the locationURI is dereferenced by HTTP GET" + */ + testcase TC_LIS_HELD_BV_06() runs on HttpComponent system TestAdapter { + // Local Variabls + var HttpMessage v_response; + + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_REFERENCE_GET, PICS_LIS_GEOMETRY_CIRCLE}, names := {"PICS_LIS_HELD_BY_REFERENCE_GET", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] })))}, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := omit + } + + v_response := f_receiveResponsePreamble(mw_http_location_response(mdw_location_response)); + + var template charstring v_uri_pattern := "(http[s]#(0,1))://([^/\\s]+)/(?+)"; + var charstring v_uri; + var charstring v_scheme; + var charstring v_host; + var charstring v_params; + + // Extract link details + v_uri := oct2char(unichar2oct(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list[0])); + v_scheme := regexp(v_uri, v_uri_pattern, 0); + v_host := regexp(v_uri, v_uri_pattern, 1); // FIXME Add support of a different host + v_params := "/" & regexp(v_uri, v_uri_pattern, 2); + log("*** " & testcasename() & ": INFO: URI:", v_params); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + f_cf_01_http_down(); + + f_cf_01_http_up(); + // Test Body + f_dereference(v_params, omit ); + + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template Presence mw_presence := { + entity := ?, + tuple_list := { + { + id := ?, + status := { + basic := *, + geopriv := mw_geopriv({ circle := mw_expected_circle}), + elem_list := { * } + }, + elem_list := ?, + contact := *, + note_list := ?, + timestamp_ := * + } + }, + note_list := ?, + elem_list := ? + } + + template HttpMessage mw_http_response_presence := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_presence(mw_presence)))); + + f_receiveResponse(mw_http_response_presence); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_06 + + /** + * @desc "IUT successfully responds with a Cirle when the locationURI is dereferenced by HTTP POST" + */ + testcase TC_LIS_HELD_BV_07() runs on HttpComponent system TestAdapter { + // Local Variabls + var HttpMessage v_response; + + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_REFERENCE_GET, PICS_LIS_GEOMETRY_CIRCLE}, names := {"PICS_LIS_HELD_BY_REFERENCE_GET", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] })))}, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := omit + } + + v_response := f_receiveResponse(mw_http_location_response(mdw_location_response)); + + var template charstring v_uri_pattern := "(http[s]#(0,1))://([^/\\s]+)/(?+)"; + var charstring v_uri; + var charstring v_scheme; + var charstring v_host; + var charstring v_params; + + // Extract link details + v_uri := oct2char(unichar2oct(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list[0])); + v_scheme := regexp(v_uri, v_uri_pattern, 0); + v_host := regexp(v_uri, v_uri_pattern, 1); // FIXME Add support of a different host + v_params := "/" & regexp(v_uri, v_uri_pattern, 2); + log("*** " & testcasename() & ": INFO: URI:", v_params); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + f_cf_01_http_down(); + + f_cf_01_http_up(); + // Test Body + + f_dereference(v_params, m_locationRequest({})); + + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template Presence mw_presence := { + entity := ?, + tuple_list := { + { + id := ?, + status := { + basic := *, + geopriv := mw_geopriv({ circle := mw_expected_circle}), + elem_list := { * } + }, + elem_list := ?, + contact := *, + note_list := ?, + timestamp_ := * + } + }, + note_list := ?, + elem_list := ? + } + + template HttpMessage mw_http_response_presence := mw_http_response(mw_http_response_ok(mw_http_message_body_xml(mw_body_xml_presence(mw_presence)))); + + f_receiveResponse(mw_http_response_presence); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BV_07 + + } // End of Group HELD + + group Errors { + + /** + * @desc "IUT responds with an error response when it receives a location request for an unknown device" + */ + testcase TC_LIS_HELD_BI_01() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_VALUE}, names := {"PICS_LIS_HELD_BY_VALUE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ PX_UNKNOWN_DEVICE_URI })))})); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_error_response(mw_error_type("locationUnknown"))); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BI_01 + + /** + * @desc "IUT responds with an error response when it receives a location request with an unmatched location type" + */ + testcase TC_LIS_HELD_BI_02() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_HELD_BY_VALUE}, names := {"PICS_LIS_HELD_BY_VALUE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] })))}, m_locationTypeType(m_locationTypeBase_civic, true))); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + f_receiveResponse(mw_http_error_response(mw_error_type("cannotProvideLiType"))); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BI_02 + + } // End of Group Errors + + group Subscriptions { + + /** + * @desc "IUT responds to a SIP Subscribe for presence event package with an 200 OK and NOTIFY" + */ + testcase TC_LIS_SIP_BV_01() runs on HttpSipComponent system TestAdapter { + // Local variables + var HttpMessage v_response; + var SipUrl v_subscription_target; + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SUBSCRIPTION, PICS_LIS_HELD_BY_REFERENCE, PICS_LIS_GEOMETRY_POINT}, names := {"PICS_LIS_SIP_SUBSCRIPTION", "PICS_LIS_HELD_BY_REFERENCE", "PICS_LIS_GEOMETRY_POINT"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] })))}, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := omit + } + + v_response := f_receiveResponsePreamble(mw_http_location_response(mdw_location_response)); + v_subscription_target := f_initSipUrlFromCharstring(f_findLocationUri(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list, "sip")); + + + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_Presence_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + + template Point mw_expected_point := mw_point_1((PX_DEVICE_NUMBER_POINT_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_DEVICE_NUMBER_POINT_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[1] + PX_DOUBLE_CMP_EPSILON)); + template Presence mw_expected_presence := mw_Presence_Base(mw_geopriv({ point := mw_expected_point})); + + + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Presence_Base(vc_callId), v_msg_recv); + + + var Presence v_presence; + f_decodePresence(v_msg_recv, v_presence); + + if (match(v_presence, mw_presence)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_presence, mw_presence)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_Presence_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_01 + + /** + * @desc "IUT responds to a SIP "Unsubscribe" for presence event package with an 200 OK and NOTIFY" + */ + testcase TC_LIS_SIP_BV_02() runs on HttpSipComponent system TestAdapter { + // Local variables + var HttpMessage v_response; + var SipUrl v_subscription_target; + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SUBSCRIPTION, PICS_LIS_HELD_BY_REFERENCE, PICS_LIS_GEOMETRY_POINT}, names := {"PICS_LIS_SIP_SUBSCRIPTION", "PICS_LIS_HELD_BY_REFERENCE", "PICS_LIS_GEOMETRY_POINT"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] })))}, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := omit + } + + v_response := f_receiveResponsePreamble(mw_http_location_response(mdw_location_response)); + v_subscription_target := f_initSipUrlFromCharstring(f_findLocationUri(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list, "sip")); + + + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_Presence_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Presence_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_Presence_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_02 + + + /** + * @desc "IUT sends a SIP NOTIFY when the location changes" + */ + testcase TC_LIS_SIP_BV_03() runs on HttpSipComponent system TestAdapter { + // Local variables + var HttpMessage v_response; + var SipUrl v_subscription_target; + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SUBSCRIPTION, PICS_LIS_HELD_BY_REFERENCE, PICS_LIS_GEOMETRY_POINT}, names := {"PICS_LIS_SIP_SUBSCRIPTION", "PICS_LIS_HELD_BY_REFERENCE", "PICS_LIS_GEOMETRY_POINT"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + f_sendRequest(m_locationRequest( + {encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] })))}, + m_locationTypeType( + m_locationTypeBase_locationUri, + true + ) + ) + ) + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := { + expires := ?, + locationURI_list := ? length (1 .. infinity) + }, + presence := omit + } + + v_response := f_receiveResponsePreamble(mw_http_location_response(mdw_location_response)); + v_subscription_target := f_initSipUrlFromCharstring(f_findLocationUri(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list, "sip")); + + + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_Presence_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Presence_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + + // Manually Trigger Location Change + f_checkUserInfo("Update Location Information for " & PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT], 1.0); + + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_Presence_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_03 + + + /** + * @desc "IUT responds to SIP Subscribe for Element State with an 200 OK" + */ + testcase TC_LIS_SIP_BV_04() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_ELEMENT_STATE}, names := {"PICS_LIS_SIP_ELEMENT_STATE"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); + + var ElementStatePayload v_elementStatePayload; + f_decodeElementState(v_msg_recv, v_elementStatePayload); + + if (match(v_elementStatePayload, mw_element_state_payload)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_elementStatePayload, mw_element_state_payload)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_04 + + /** + * @desc "IUT responds to a SIP "Unsubscribe" for elementState event package with an 200 OK and NOTIFY" + */ + testcase TC_LIS_SIP_BV_05() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_ELEMENT_STATE}, names := {"PICS_LIS_SIP_ELEMENT_STATE"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ElementState_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_05 + + + /** + * @desc "IUT responds to SIP Subscribe for Security Posture" + */ + testcase TC_LIS_SIP_BV_06() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SECURITY_POSTURE}, names := {"PICS_LIS_SIP_SECURITY_POSTURE"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); + + var SecurityPosturePayload v_securityPosturePayload; + f_decodeSecurityPosture(v_msg_recv, v_securityPosturePayload); + + if (match(v_securityPosturePayload, mw_security_posture_payload())) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_securityPosturePayload, mw_security_posture_payload())); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_06 + + + /** + * @desc "IUT responds to SIP Unsubscribe for Security Posture" + */ + testcase TC_LIS_SIP_BV_07() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SECURITY_POSTURE}, names := {"PICS_LIS_SIP_SECURITY_POSTURE"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_SecurityPosture_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_SecurityPosture_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_07 + + + /** + * @desc "IUT responds to SIP Subscribe for ServiceState" + */ + testcase TC_LIS_SIP_BV_08() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SERVICE_STATE}, names := {"PICS_LIS_SIP_SERVICE_STATE"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); + + var ServiceStatePayload v_serviceStatePayload; + f_decodeServiceState(v_msg_recv, v_serviceStatePayload); + + if (match(v_serviceStatePayload, mw_service_state_payload)) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } else { + log(match(v_serviceStatePayload, mw_service_state_payload)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + + // Postamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ElementState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_08 + + /** + * @desc "IUT responds to SIP Unsubscribe for ServiceState" + */ + testcase TC_LIS_SIP_BV_09() runs on HttpSipComponent system TestAdapter { + // Local variables + var NOTIFY_Request v_msg_recv; + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_SIP_SERVICE_STATE}, names := {"PICS_LIS_SIP_SERVICE_STATE"}}); + + // Test component configuration + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_LIS); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + f_SendSUBSCRIBE(request); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_ServiceState_Base(vc_callId), v_msg_recv); + + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + f_SendSUBSCRIBE(m_UNSUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ) + ); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_awaitingNOTIFY_sendReply(mw_NOTIFY_Request_Base(vc_callId), v_msg_recv); + + // Postamble + f_cf_01_down(); + } // End of testcase TC_LIS_SIP_BV_09 + + } + + + group AdvancedMobileLocation { + + /** + * @desc "IUT responds with an 200 OK response when it receives a AML via HTTP" + */ + testcase TC_LIS_AML_BV_01() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_AML_HTTP}, names := {"PICS_LIS_AML_HTTP"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + var charstring url_params := "&v=3&device_number=%2B447477593102&location_latitude=55.85732&location_longitude=-4.26325&location_time=1476189444435&location_accuracy=10.4&location_source=GPS&location_certainty=83&device_imei=354773072099116&device_imsi=234159176307582&cell_network_mcc=234&cell_network_mnc=15" + + f_sendAdvancedMobileLocation(url_params); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + + // Test Body + tc_ac.start; + + f_receiveResponse(mw_http_response( + { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := ?, + header := ?, + body := omit, + tls := *, + mutual_tls := * + } + )); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_HELD_BI_01 + + + /** + * @desc "IUT successfully responds with a Circle for provided AML Data " + */ + testcase TC_LIS_AML_BV_02() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_AML_HTTP, PICS_LIS_HELD_BY_VALUE, PICS_LIS_GEOMETRY_CIRCLE }, names := {"PICS_LIS_AML_HTTP", "PICS_LIS_HELD_BY_VALUE", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + var charstring v_device_number := "&device_number=" & PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE]; + var charstring v_location_latitude := "&location_latitude=" & float2str(PX_CIRCLE_POS[0]); + var charstring v_location_longitude := "&location_longitude=" & float2str(PX_CIRCLE_POS[1]); + + var charstring url_params := "&v=3" & v_device_number & v_location_latitude & v_location_longitude & "&location_time=1476189444435&location_accuracy=10.4&location_source=GPS&location_certainty=83&device_imei=354773072099116&device_imsi=234159176307582&cell_network_mcc=234&cell_network_mnc=15" + + f_sendAdvancedMobileLocation(url_params); + f_receiveResponsePreamble(mw_http_response( + { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := ?, + header := ?, + body := omit, + tls := *, + mutual_tls := * + } + )); + + + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] })))})) + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := omit, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ circle := mw_expected_circle}) + } + } + } + } + } + + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_AML_BV_02 + + /** + * @desc "IUT successfully responds with a Circle for provided AML Data via SMS Text " + */ + testcase TC_LIS_AML_BV_03() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_AML_TEXT_SMS, PICS_LIS_HELD_BY_VALUE, PICS_LIS_GEOMETRY_CIRCLE }, names := {"PICS_LIS_AML_TEXT_SMS", "PICS_LIS_HELD_BY_VALUE", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ "tel:" & PX_AML_MOBILE_NUMBER & ""})))})); + f_receiveResponsePreamble(mw_http_error_response(mw_error_type("locationUnknown"))); + + f_checkUserInfo("Send Text SMS containing '" & AtsLIS_Pixits.PX_AML_MESSAGE & "' from " & AtsLIS_Pixits.PX_AML_MOBILE_NUMBER & " to " & AtsLIS_Pixits.PX_AML_LIS_ENDPOINT_NUMBER, 60.0); + + var float v_latitude := str2float(regexp(AtsLIS_Pixits.PX_AML_MESSAGE, charstring:"(?+)lt=([+\-0-9.]+);?+", 1)); + var float v_longitude := str2float(regexp(AtsLIS_Pixits.PX_AML_MESSAGE, charstring:"(?+)lg=([+\-0-9.]+);?+", 1)); + var float v_radius := str2float(regexp(AtsLIS_Pixits.PX_AML_MESSAGE, charstring:"(?+)rd=([+\-0-9.]+);?+", 1)); + + // Test Body + tc_ac.start; + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ "tel:" & PX_AML_MOBILE_NUMBER & ""})))})); + + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((v_latitude - PX_DOUBLE_CMP_EPSILON .. v_latitude + PX_DOUBLE_CMP_EPSILON), (v_longitude - PX_DOUBLE_CMP_EPSILON .. v_longitude + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (v_radius - PX_DOUBLE_CMP_EPSILON .. v_radius + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := omit, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ circle := mw_expected_circle}) + } + } + } + } + } + + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_AML_BV_03 + + + /** + * @desc "IUT successfully responds with a Circle for provided AML Data via SMS Data " + */ + testcase TC_LIS_AML_BV_04() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_AML_DATA_SMS, PICS_LIS_HELD_BY_VALUE, PICS_LIS_GEOMETRY_CIRCLE }, names := {"PICS_LIS_AML_DATA_SMS", "PICS_LIS_HELD_BY_VALUE", "PICS_LIS_GEOMETRY_CIRCLE"}}); + + // Test component configuration + f_cf_01_http_up(); + + // Preamble + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ "tel:" & PX_AML_MOBILE_NUMBER & ""})))})); + f_receiveResponsePreamble(mw_http_error_response(mw_error_type("locationUnknown"))); + + f_checkUserInfo("Send Data SMS containing '" & AtsLIS_Pixits.PX_AML_MESSAGE & "' from " & AtsLIS_Pixits.PX_AML_MOBILE_NUMBER & " to " & AtsLIS_Pixits.PX_AML_LIS_ENDPOINT_NUMBER, 60.0); + + var float v_latitude := str2float(regexp(AtsLIS_Pixits.PX_AML_MESSAGE, charstring:"(?+)lt=([+\-0-9.]+);?+", 1)); + var float v_longitude := str2float(regexp(AtsLIS_Pixits.PX_AML_MESSAGE, charstring:"(?+)lg=([+\-0-9.]+);?+", 1)); + var float v_radius := str2float(regexp(AtsLIS_Pixits.PX_AML_MESSAGE, charstring:"(?+)rd=([+\-0-9.]+);?+", 1)); + + // Test Body + tc_ac.start; + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ "tel:" & PX_AML_MOBILE_NUMBER & ""})))})); + + template Circle mw_expected_circle := mw_circle(mw_center_group_pos_1((v_latitude - PX_DOUBLE_CMP_EPSILON .. v_latitude + PX_DOUBLE_CMP_EPSILON), (v_longitude - PX_DOUBLE_CMP_EPSILON .. v_longitude + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (v_radius - PX_DOUBLE_CMP_EPSILON .. v_radius + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME); + + template LocationResponseType mdw_location_response modifies mw_location_response := { + locationUriSet := omit, + presence := { + tuple_list := { + { + status := { + geopriv := mw_geopriv({ circle := mw_expected_circle}) + } + } + } + } + } + + + f_receiveResponse(mw_http_location_response(mdw_location_response)); + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_LIS_AML_BV_04 + + } // End of group AdvancedMobileLocation + + group Security { + + testcase TC_LIS_TLS_BI_01() runs on HttpComponent system TestAdapter { + // Test control + f_check_pics({ values := {PICS_LIS_TLS_AUTHENTICATION }, names := {"PICS_LIS_TLS_AUTHENTICATION"}}); + + // Preamble + f_cf_01_http_up(); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + @try { + f_sendRequest(m_locationRequest({encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] })))})); + + log("The IUT should reject the connection"); + // Should not get here since connection should have been refused + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + + } @catch(err) { + if (match(err, pattern "*There is no connection alive*")) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + } + + + // Postamble + f_cf_01_http_down(); + } + + testcase TC_ECRF_TLS_BI_02() runs on HttpSipComponent system TestAdapter { + // Local Variables + var CSeq v_cSeq_s := { + fieldName := CSEQ_E, + seqNumber := 0, + method := "SUBSCRIBE" + }; + + var SipUrl v_subscription_target := f_initSipUrl(c_serviceProfile_SUBSCRIPTION_SERVICE); + + // Test control + f_check_pics({ values := {PICS_LIS_TLS_AUTHENTICATION }, names := {"PICS_LIS_TLS_AUTHENTICATION"}}); + + // Preamble + f_cf_01_up(); + f_init_userprofile(c_userProfile_ESINetSubscriber); + f_init_interfaceprofile(c_interfaceProfile_SUT_ECRF); + + // Preamble + LibIms_Steps.f_setHeadersSUBSCRIBE(v_cSeq_s, v_subscription_target, f_initSipUrl(c_serviceProfile_SUBSCRIBER)); + + // Test Body + template SUBSCRIBE_Request request := m_SUBSCRIBE_ServiceState_Request_Event( + v_subscription_target, vc_callId ,v_cSeq_s, vc_from, vc_to, vc_via, omit + ); + + @try { + f_SendSUBSCRIBE(request); + + log("The IUT should reject the connection."); + // Should not get here since connection should have been refused + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + + } @catch(err) { + if (match(err, pattern "*There is no connection alive*")) { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + } + + // Postamble + f_cf_01_down(); + } + } + +} // End of module AtsLIS_TestCases diff --git a/ttcn/AtsLIS/AtsLIS_TestControl.ttcn b/ttcn/AtsLIS/AtsLIS_TestControl.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1a174bb2eb18f411f39ed2081f41f59c763b4e03 --- /dev/null +++ b/ttcn/AtsLIS/AtsLIS_TestControl.ttcn @@ -0,0 +1,27 @@ +module AtsLIS_TestControl { + + // LibSip + import from LibSip_SIPTypesAndValues all; + + // LibNg112 + import from LibNg112_Pics all; + + // AtsLIS + import from AtsLIS_TestCases all; + import from AtsLIS_Pics all; + + // Test Execution + control { + + if (PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD) { + if (PICS_H_QRY_GEO1) { execute(TC_LIS_HELD_BV_01()); } + if (PICS_H_QRY_GEO2) { execute(TC_LIS_HELD_BV_02()); } + if (PICS_H_QRY_GEO4) { execute(TC_LIS_HELD_BV_03()); } + if (PICS_H_QRY_STR1 and PICS_H_QRY_GEO2 and PICS_H_QRY_GEO4) { execute(TC_LIS_HELD_BV_04()); } + if (PICS_H_QRY_ERR1) { execute(TC_LIS_HELD_BV_05()); } + if (PICS_H_QRY_CIV1) { execute(TC_LIS_HELD_BV_06()); } + } + + } // End of 'control' statement + +} // End of module AtsLIS_TestControl diff --git a/ttcn/AtsLIS/module.mk b/ttcn/AtsLIS/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..e4d55f1dc691a020a232c45d4e01029e4b85dc9a --- /dev/null +++ b/ttcn/AtsLIS/module.mk @@ -0,0 +1,30 @@ +suite := AtsLIS + +sources := \ + AtsLIS_AltSteps.ttcn \ + AtsLIS_Functions.ttcn \ + AtsLIS_TestCases.ttcn \ + AtsLIS_Pics.ttcn \ + AtsLIS_Pixits.ttcn \ + AtsLIS_TestControl.ttcn + +modules := ../LibCommon \ + ../LibIts/ttcn/Http \ + ../LibEmcom/LibNg112 \ + ../LibIms \ + ../LibSip \ + ../../ccsrc/Ports/LibHttp \ + ../../ccsrc/EncDec/LibHttp \ + ../../ccsrc/Ports/LibSip \ + ../../ccsrc/EncDec/LibSip \ + ../../ccsrc/Framework \ + ../../ccsrc/loggers \ + ../../ccsrc/Protocols/ETH \ + ../../ccsrc/Protocols/Held \ + ../../ccsrc/Protocols/Http \ + ../../ccsrc/Protocols/Lost \ + ../../ccsrc/Protocols/Pcap \ + ../../ccsrc/Protocols/Sip \ + ../../ccsrc/Protocols/Tcp \ + ../../ccsrc/Protocols/UDP \ + ../modules/titan.TestPorts.Common_Components.Abstract_Socket diff --git a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn b/ttcn/AtsNg112/AtsNg112_TestCases.ttcn deleted file mode 100644 index 673f497b8c8716fe3d9aff22dbf8b26f2d8575ed..0000000000000000000000000000000000000000 --- a/ttcn/AtsNg112/AtsNg112_TestCases.ttcn +++ /dev/null @@ -1,4282 +0,0 @@ -/** - * @author ETSI / STF549 - * @version $URL:$ - * $ID:$ - * @desc This module provides the NG112 test cases. - * @copyright ETSI Copyright Notification - * No part may be reproduced except as authorized by written permission. - * The copyright and the foregoing restriction extend to reproduction in all media. - * All rights reserved. - * @see ETSI TS 103 478 - */ -module AtsNg112_TestCases { - import from XSD all; - - // RFC5985 Held - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all - with { - extension "File:../xsd/RFC5985_held.xsd"; - } - // RFC6155 Held ID - import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all - with { - extension "File:../xsd/RFC6155_held_id.xsd"; - } - // RFC3863 PIDF - import from urn_ietf_params_xml_ns_pidf language "XSD" all - with { - extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" - } - import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all - with { - extension "File:../xsd/RFC4119_geopriv10.xsd"; - } - import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all - with { - extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; - } - import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr language "XSD" all - with { - extension "File:../xsd/RFC5139_pdif_geopriv10_civic_address.xsd"; - } - - // RFC3863 - import from urn_ietf_params_xml_ns_pidf language "XSD" all - with { - extension "File:../xsd/RFC3863_pidf.xsd"; - } - - // RFC5222 - import from urn_ietf_params_xml_ns_lost1 language "XSD" all - with { - extension "File:../xsd/RFC5222_lost.xsd"; - } - - // OpenGIS - import from http_www_opengis_net_pidflo_1_0 language "XSD" all - with { - extension "File:../xsd/GLM_pidf_lo_shape.xsd"; - } - import from http_www_opengis_net_gml language "XSD" all - with { - extension "File:../xsd/gmlBase.xsd"; - extension "File:../xsd/basicTypes.xsd"; - extension "File:../xsd/measures.xsd"; - extension "File:../xsd/geometryPrimitives.xsd"; - extension "File:../xsd/geometryBasic0d1d.xsd"; - extension "File:../xsd/geometryBasic2d.xsd"; - } - - // Libcommon - import from LibCommon_Time all; - import from LibCommon_VerdictControl all; - import from LibCommon_Sync all; - - // LibItsHttp - import from LibItsHttp_Pics all; - - // LibHttp - import from LibItsHttp_TypesAndValues all; - import from LibItsHttp_Functions all; - import from LibItsHttp_Templates all; - import from LibItsHttp_XmlTemplates all; - import from LibItsHttp_TestSystem all; - - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_SDPTypes all; - import from LibSip_Steps all; - import from LibSip_Templates all; - import from LibSip_Interface all; - - // LibIms - import from LibIms_SIPTypesAndValues all; - import from LibIms_Steps all; - import from LibIms_Templates all; - import from LibIms_Interface all; - - // LibNg112 - import from LibNg112_TypesAndValues all; - import from LibNg112_Templates all; - import from LibNg112_Functions all; - import from LibNg112_TestSystem all; - import from LibNg112_Steps all; - import from LibNg112_Pics all; - import from LibNg112_Pixits all; - - // AtsNg112 - import from AtsNg112_Steps all; - - group lis_role { - - /** - * @desc "IUT successfully responds with a Point when it receives a HTTP POST location request without location type" - */ - testcase TC_LIS_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_QRY_GEO1)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] }))) } - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse(-, ?) - ))))) -> value v_response { - var Presence v_presence; - var Tuple v_tuple; - var Geopriv v_geopriv; - var Point v_point; - var universal charstring v_temp; - var integer v_result; - - tc_ac.stop; - - // Extract presence element from Location-Response - v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_presence); - if (v_result == 0) { - log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_presence, mw_presence)) { - // Extract first Tuple element from Presence - v_tuple := v_presence.tuple_list[0]; - v_temp := v_tuple.status.elem_list[0]; - // Extract Geopriv element from Tuple - v_result := decvalue_unichar(v_temp, v_geopriv); - if (v_result == 0) { - log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { - // Extract Circle element from Tuple - v_temp := v_geopriv.location_info.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_point); - log(match(v_point, mw_point_1((PX_DEVICE_NUMBER_POINT_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_DEVICE_NUMBER_POINT_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[1] + PX_DOUBLE_CMP_EPSILON)))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_point, mw_point_1((PX_DEVICE_NUMBER_POINT_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_DEVICE_NUMBER_POINT_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_DEVICE_NUMBER_POINT_POS[1] + PX_DOUBLE_CMP_EPSILON)))) { - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_01 - - /** - * @desc "IUT successfully responds with a Circle when it receives a HTTP POST location request without location type" - */ - testcase TC_LIS_HTTP_POST_BV_02() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_QRY_GEO2)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_GEO2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] }))) } - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse(-, ?) - ))))) -> value v_response { - var Presence v_presence; - var Tuple v_tuple; - var Geopriv v_geopriv; - var Circle v_circle; - var universal charstring v_temp; - var integer v_result; - - tc_ac.stop; - - // Extract presence element from Location-Response - v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_presence); - if (v_result == 0) { - log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_presence, mw_presence)) { - // Extract first Tuple element from Presence - v_tuple := v_presence.tuple_list[0]; - v_temp := v_tuple.status.elem_list[0]; - // Extract Geopriv element from Tuple - v_result := decvalue_unichar(v_temp, v_geopriv); - if (v_result == 0) { - log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { - // Extract Circle element from Tuple - v_temp := v_geopriv.location_info.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_circle); - log(match(v_circle, mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_circle, mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_02 - - /** - * @desc "IUT successfully responds with a reference when it receives a HTTP POST location request with location type locationURI and exact attribute" - */ - testcase TC_LIS_HTTP_POST_BV_03() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) and not(PICS_H_QRY_GEO4)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_GEO4 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] }))) }, - m_locationTypeType( - m_locationTypeBase_locationUri, - true - ) - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse( - mw_locationUriSet - ) - ))))) -> value v_response { - var template charstring v_uri_pattern := "(http[s]#(0,1))://([^/\\s]+)/(?+)"; - var charstring v_uri; - var charstring v_scheme; - var charstring v_host; - var charstring v_params; - - tc_ac.stop; - - // Extract link details - v_uri := oct2char(unichar2oct(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list[0])); - v_scheme := regexp(v_uri, v_uri_pattern, 0); - v_host := regexp(v_uri, v_uri_pattern, 1); // FIXME Add support of a different host - v_params := "/" & regexp(v_uri, v_uri_pattern, 2); - log("*** " & testcasename() & ": INFO: URI:", v_params); - - f_cf_01_http_down(); // Close the TCP connection - - f_cf_01_http_up(); // Reopen it - // Send the GET request - f_init_default_headers_list(-, -, v_headers); - f_set_headers_list({ c_header_accept }, { "application/pidf+xml" }, v_headers); // YANN To be restored - httpPort.send( - m_http_request( - m_http_request_get( - v_params, - v_headers - ) - ) - ); - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_presence( - mw_presence(-, { mw_tuple }) - ))))) -> value v_response { - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Reference ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected response message not received for the GET ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_03 - - /** - * @desc "IUT successfully responds with a reference and geodetic location when it receives a HTTP POST location request with location types locationURI and geodetic and exact attribute" - */ - testcase TC_LIS_HTTP_POST_BV_04() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_QRY_STR1) or not(PICS_H_QRY_GEO2) or not(PICS_H_QRY_GEO4)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_STR1 and PICS_H_QRY_GEO2 and PICS_H_QRY_GEO4 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] }))) }, - m_locationTypeType( - m_locationTypeBase_geodetic, - true - ) - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse(-, ?) - ))))) -> value v_response { - var Presence v_presence; - var Tuple v_tuple; - var Geopriv v_geopriv; - var Circle v_circle; - var universal charstring v_temp; - var integer v_result; - - tc_ac.stop; - - // Extract presence element from Location-Response - v_temp := v_response.response.body.xml_body.locationResponse.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_presence); - if (v_result == 0) { - log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_presence, mw_presence)) { - // Extract first Tuple element from Presence - v_tuple := v_presence.tuple_list[0]; - v_temp := v_tuple.status.elem_list[0]; - // Extract Geopriv element from Tuple - v_result := decvalue_unichar(v_temp, v_geopriv); - if (v_result == 0) { - log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { - // Extract Circle element from Tuple - v_temp := v_geopriv.location_info.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_circle); - log(match(v_circle, mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_circle, mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_04 - - /** - * @desc "IUT successfully responds with an error response when it receives a HTTP POST location request for an unknown device" - */ - testcase TC_LIS_HTTP_POST_BV_05() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_QRY_ERR1)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_ERR1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_UNKNOWN_DEVICE_URI }))) }, - m_locationTypeType(m_locationTypeBase_geodetic, true) - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response_error( - mw_error_type("locationUnknown") - ))))) { - tc_ac.stop; - log("*** " & testcasename() & ": PASS: Error message received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_05 - - /** - * @desc "IUT successfully responds with a CIVIC address when it receives a HTTP POST location request without location type" - */ - testcase TC_LIS_HTTP_POST_BV_06() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_QRY_CIV1)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_CIV1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIVIC] }))) }, - m_locationTypeType( - m_locationTypeBase_civic, - true - ) - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse(-, ?) - ))))) -> value v_response { - var Presence v_presence; - var Tuple v_tuple; - var Geopriv v_geopriv; - var universal charstring v_temp; - var CivicAddress v_civic_address; - var integer v_result; - - tc_ac.stop; - - // Extract presence element from Location-Response - v_temp := v_response.response.body.xml_body.locationResponse.elem_list[PX_DEVICE_NUMBER_POINT]; - v_result := decvalue_unichar(v_temp, v_presence); - if (v_result == 0) { - log(match(v_presence, mw_presence)); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_presence, mw_presence)) { - // Extract first Tuple element from Presence - v_tuple := v_presence.tuple_list[0]; - v_temp := v_tuple.status.elem_list[0]; - // Extract Geopriv element from Tuple - v_result := decvalue_unichar(v_temp, v_geopriv); - if (v_result == 0) { - log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { - // Extract Civic address element from Tuple - v_temp := v_geopriv.location_info.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_civic_address); - log(match(v_civic_address, mw_civicAddress(PX_CIVIC_ADDR_COUNTRY, PX_CIVIC_ADDR_A1, PX_CIVIC_ADDR_A3, PX_CIVIC_ADDR_A4, PX_CIVIC_ADDR_STS, PX_CIVIC_ADDR_LMK))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_civic_address, mw_civicAddress(PX_CIVIC_ADDR_COUNTRY, PX_CIVIC_ADDR_A1, PX_CIVIC_ADDR_A3, PX_CIVIC_ADDR_A4, PX_CIVIC_ADDR_STS, PX_CIVIC_ADDR_LMK))) { - log("*** " & testcasename() & ": PASS: IUT successfully responds with a correct CivicAddress ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Incorrect CivicAddress ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_06 - - /** - * @desc "IUT successfully responds with an error response when it receives a HTTP POST location request with an unknown location type" - */ - testcase TC_LIS_HTTP_POST_BV_07() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_QRY_ERR2)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD and PICS_H_QRY_ERR2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_POINT] }))) }, - m_locationTypeType( - m_locationTypeBase_civic, - true - ) - ) - ) - ) - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response_error( - mw_error_type("cannotProvideLiType") - ))))) -> value v_response { - log("*** " & testcasename() & ": PASS: Expected error message received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_POST_BV_07 - - /** - * @desc "IUT successfully returns the location when a locationURI is dereferenced" - */ - testcase TC_LIS_HTTP_GET_BV_01() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - var charstring v_params; - - // Test control - if (not(PICS_LIS_IUT) or (not PICS_HTTP_GET_REQUEST) or (not PICS_LOCATION_HELD)or not(PICS_H_DER_TOK1)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and PICS_HTTP_GET_REQUEST and PICS_LOCATION_HELD and PICS_H_DER_TOK1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_LIS_URI, - v_headers, - m_http_message_body_xml(m_body_xml_location_request( - m_locationRequest( - { encvalue_unichar(valueof(m_device({ PX_DEVICE_NUMBER[PX_DEVICE_NUMBER_CIRCLE] }))) }, - m_locationTypeType( - m_locationTypeBase_locationUri, - true - ) - ) - ) - ) - ) - ) - ); - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_location_response( - mw_locationResponse( - mw_locationUriSet - ) - ))))) -> value v_response { - var template charstring v_uri_pattern := "(http[s]#(0,1))://([^/\\s]+)/(?+)"; - var charstring v_uri; - var charstring v_scheme; - var charstring v_host; - - tc_ac.stop; - - // Extract link details - v_uri := oct2char(unichar2oct(v_response.response.body.xml_body.locationResponse.locationUriSet.locationURI_list[0])); - v_scheme := regexp(v_uri, v_uri_pattern, 0); - v_host := regexp(v_uri, v_uri_pattern, 1); // FIXME Add support of a different host - v_params := "/" & regexp(v_uri, v_uri_pattern, 2); - log("*** " & testcasename() & ": INFO: URI:", v_params); - if (PICS_HTTP_POST_GET_KEEP_ALIVE) { - // Send the GET request - httpPort.send( - m_http_request( - m_http_request_get( - v_params, - v_headers - ) - ) - ); - log("*** " & testcasename() & ": INFO: IUT successfully responds with a Reference ***"); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - } - } - [] httpPort.receive(mw_http_response) { - tc_ac.stop; - log("*** " & testcasename() & ": FAIL: Unexpected message received ***"); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_error); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - if (not(PICS_HTTP_POST_GET_KEEP_ALIVE)) { - f_cf_01_http_down(); - - f_cf_01_http_up(); - f_init_default_headers_list(-, -, v_headers); - f_set_headers_list({ c_header_accept }, { "application/pidf+xml" }, v_headers); // YANN To be restored - httpPort.send( - m_http_request( - m_http_request_get( - v_params, - v_headers - ) - ) - ); - log("*** " & testcasename() & ": INFO: IUT successfully responds with a Reference ***"); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - } - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_presence( - mw_presence(-, { mw_tuple }) - ))))) -> value v_response { - var Tuple v_tuple; - var Geopriv v_geopriv; - var Circle v_circle; - var universal charstring v_temp; - var integer v_result; - - tc_ac.stop; - // Extract first Tuple element from Presence - v_tuple := v_response.response.body.xml_body.presence.tuple_list[0]; - v_temp := v_tuple.status.elem_list[0]; - // Extract Geopriv element from Tuple - v_result := decvalue_unichar(v_temp, v_geopriv); - if (v_result == 0) { - log(match(v_geopriv, mw_geopriv(mw_location_info({ ? })))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_geopriv, mw_geopriv(mw_location_info({ ? })))) { - // Extract Circle element from Tuple - v_temp := v_geopriv.location_info.elem_list[0]; - v_result := decvalue_unichar(v_temp, v_circle); - log(match(v_circle, mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))); // FIXME Required by TITAN to get details in case of mismatch - if (match(v_circle, mw_circle(mw_center_group_pos_1((PX_CIRCLE_POS[0] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[0] + PX_DOUBLE_CMP_EPSILON), (PX_CIRCLE_POS[1] - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_POS[1] + PX_DOUBLE_CMP_EPSILON)), mw_radius(PX_CIRCLE_UOM, (PX_CIRCLE_RADIUS - PX_DOUBLE_CMP_EPSILON .. PX_CIRCLE_RADIUS + PX_DOUBLE_CMP_EPSILON)), PX_SRS_NAME))) { - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Incorrect Circle position ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } else { - log("*** " & testcasename() & ": FAIL: Unexpected response ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_GET_BV_01 - - /** - * @desc "IUT returns HTTP error 404 if it does not support HTTP GET method" - */ - testcase TC_LIS_HTTP_GET_BV_02() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - - // Test control - if (not(PICS_LIS_IUT) or (PICS_HTTP_GET_REQUEST) or (not PICS_LOCATION_HELD) or not(PICS_H_GET_ERR1)) { - log("*** " & testcasename() & ": PICS_LIS_IUT and not PICS_HTTP_GET_REQUEST and PICS_LOCATION_HELD and PICS_H_GET_ERR1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_remove_headers_list({ c_header_accept }, v_headers); - httpPort.send( - m_http_request( - m_http_request_get( - PICS_LIS_URI, - v_headers - ) - ) - ); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_404_not_found - )) { - tc_ac.stop; - log("*** " & testcasename() & ": PASS: IUT successfully responds with HTTP 404 Not found ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_LIS_HTTP_GET_BV_02 - - } // End of group lis_role - - group ecrf_role { - - /** - * @desc "IUT successfully responds with a service URI for a Point in the service boundary" - */ - testcase TC_ECRF_HTTP_POST_BV_01() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_GEO1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point1")))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN, - true - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response( - mw_find_service_response( - { mw_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { mw_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - -, - PX_E_POLICE_SERVICE_URN, - -, -, -, - "112" - ) } - )))))) { - tc_ac.stop; - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_01 - - /** - * @desc "IUT successfully responds with a service URI for a Circle in the service boundary" - */ - testcase TC_ECRF_HTTP_POST_BV_02() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_GEO2)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_GEO2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_IN_V_POLICE_SERVICE_BOUNDARY_RADIUS), PX_SRS_NAME)))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_V_POLICE_SERVICE_URN, - true - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response( - mw_find_service_response( - { mw_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_V_POLICE_SOURCE_ID, - { mw_display_name(-, PX_V_POLICE_DISPLAY_NAME) }, - { PX_V_POLICE_SIP_URI }, - -, - PX_V_POLICE_SERVICE_URN - ) } - )))))) { - tc_ac.stop; - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_02 - - /** - * @desc "IUT successfully responds with an error response for an unknown Service URN in the service boundary" - */ - testcase TC_ECRF_HTTP_POST_BV_03() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_ERR1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_ERR1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point2")))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_FIRE_SERVICE_URN, - true - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response_error( - mw_exception_serviceNotImplemented( - PX_V_POLICE_SOURCE, - mw_basic_exception - )))))) { - tc_ac.stop; - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_03 - - /** - * @desc "IUT successfully responds with an error response for an unrecognized location profile" - */ - testcase TC_ECRF_HTTP_POST_BV_04() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_ERR2)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_ERR2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point2")))) }, - "someUnknownProfile" - ) - }, - { }, - PX_E_POLICE_SERVICE_URN, - true - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response_error( - mw_exception_locationProfileUnrecognized( - PX_V_POLICE_SOURCE, - mw_location_profile_unrecognized - )))))) { - tc_ac.stop; - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Point ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_04 - - /** - * @desc "IUT successfully responds with service boundary by value if requested" - */ - testcase TC_ECRF_HTTP_POST_BV_05() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_SBV1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_SBV1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point2")))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN, - true, - value_ - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response( - mw_find_service_response( - { mw_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { mw_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - mw_mapping_service_boundary( - mw_service_boundary( { mw_service_boundary_item("geodetic-2d") } ) - ), - PX_E_POLICE_SERVICE_URN - ) - }, - -, - -, - -, - -, - ? - )))))) -> value v_response { - var universal charstring v_temp; - var integer v_result; - var PolygonType v_polygon; - - tc_ac.stop; - - v_temp := v_response.response.body.xml_body.findServiceResponse.mapping_list[0].choice.serviceBoundary.serviceBoundary_list[0].extensionPoint_list[0].elem; - v_result := decvalue_unichar(v_temp, v_polygon); - if (v_result == 0) { - log("v_polygon= ", v_polygon); - log("match(v_polygon, mw_polygon(PX_SRS_NAME))= ", match(v_polygon, mw_polygon(PX_SRS_NAME))); - - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Polygon ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } else { - log("*** " & testcasename() & ": FAIL: Cannot decode Polygon ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); - } - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_05 - - /** - * @desc "IUT successfully responds with service URI for a Circle that intersects service boundary" - */ - testcase TC_ECRF_HTTP_POST_BV_06() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_GEO2)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_GEO2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_RADIUS), PX_SRS_NAME)))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_V_FIRE_SERVICE_URN, - true - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response( - mw_find_service_response( - { mw_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_FIRE_SOURCE, - PX_V_FIRE_SOURCE_ID, - { mw_display_name(-, PX_V_FIRE_DISPLAY_NAME) }, - { PX_V_FIRE_SIP_URI }, - -, - PX_V_FIRE_SERVICE_URN - ) - }, - -, - -, - -, - -, - ? - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with a Polygon ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_06 - - /** - * @desc "IUT successfully responds with a service URI for a Circle that intersects multiple service boundaries" - */ - testcase TC_ECRF_HTTP_POST_BV_07() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_GEO2)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_GEO2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_INTERSECTING_V_FIRE_SERVICE_BOUNDARY_RADIUS), PX_SRS_NAME)))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_V_FIRE_SERVICE_URN, - true, - value_ - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response( - mw_find_service_response( - { mw_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_FIRE_SOURCE, - PX_V_FIRE_SOURCE_ID, - { mw_display_name(-, PX_V_FIRE_DISPLAY_NAME) }, - { PX_V_FIRE_SIP_URI }, - mw_mapping_service_boundary, - PX_V_FIRE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.mw_path( - { LibItsHttp_XmlTemplates.mw_via(PX_V_FIRE_PATH) } - ), - -, - -, - mw_location_used(PX_LOCATION_ID) - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with multiple services ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_07 - - /** - * @desc "IUT successfully responds with a service URI for a Circle in the service boundary with multiple services" - */ - testcase TC_ECRF_HTTP_POST_BV_08() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_FIS_GEO2)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_FIS_GEO2 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_find_service_request( - m_find_service_request( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_circle(m_center_group_pos(PX_CIRCLE_IN_V_FIRE_SERVICE_BOUNDARY_POS), m_radius(PX_CIRCLE_UOM, PX_CIRCLE_IN_V_FIRE_SERVICE_BOUNDARY_RADIUS), PX_SRS_NAME)))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_V_FIRE_SERVICE_URN, - true, - value_ - ))) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_find_service_response( - mw_find_service_response( - { mw_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_FIRE_SOURCE, - PX_V_FIRE_SOURCE_ID, - { mw_display_name(-, PX_V_FIRE_DISPLAY_NAME) }, - { PX_V_FIRE_SIP_URI }, - mw_mapping_service_boundary, - PX_V_FIRE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.mw_path( - { LibItsHttp_XmlTemplates.mw_via(PX_V_FIRE_PATH) } - ), - -, - -, - mw_location_used(PX_LOCATION_ID) - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with multiple services ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_08 - - /** - * @desc "IUT successfully responds with configured service types for a ListServices request" - */ - testcase TC_ECRF_HTTP_POST_BV_09() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_LST_ALL1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_LST_ALL1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_list_services_request( - m_list_services( - -, - "urn:service:sos" - ) - ) - ) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_list_services_response( - mw_list_services_response( - { "urn:service:sos", "urn:service:sos.ambulance", "urn:service:sos.fire", "urn:service:sos.police" }, - LibItsHttp_XmlTemplates.mw_path( - { LibItsHttp_XmlTemplates.mw_via } - ) - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with ListServicesResponse ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_09 - - /** - * @desc "IUT successfully responds with configured service types for a ListServicesByLocation request" - */ - testcase TC_ECRF_HTTP_POST_BV_10() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_LST_GEO1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_LST_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_list_services_by_location_request( - m_list_services_by_location( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point1")))) }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - -, - "urn:service:sos" - ) - ) - ) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_list_services_by_location_response( - mw_list_services_by_location_response( - { "urn:service:sos.police" }, - LibItsHttp_XmlTemplates.mw_path({ LibItsHttp_XmlTemplates.mw_via }), - -, - mw_location_used(PX_LOCATION_ID) - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with ListServicesByLocationResponse ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_10 - - /** - * @desc "IUT successfully responds with configured service types for a ListServices request without service element" - */ - testcase TC_ECRF_HTTP_POST_BV_11() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_LST_ALL1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_LST_ALL1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_list_services_request( - m_list_services - ) - ) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_list_services_response( - mw_list_services_response( - { "urn:service:sos", "urn:service:sos.ambulance", "urn:service:sos.fire", "urn:service:sos.police" }, - LibItsHttp_XmlTemplates.mw_path( - { LibItsHttp_XmlTemplates.mw_via } - ) - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with ListServicesByLocationResponse ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_11 - - /** - * @desc "IUT successfully responds with configured service types for a ListServicesByLocation request without service element" - */ - testcase TC_ECRF_HTTP_POST_BV_12() runs on HttpComponent system TestAdapter { - // Local variables - var Headers v_headers; - var HttpMessage v_response; - - // Test control - if (not(PICS_ECRF_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_L_LST_GEO1)) { - log("*** " & testcasename() & ": PICS_ECRF_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_L_LST_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_request( - m_http_request_post( - PICS_ECRF_URI, - v_headers, - m_http_message_body_xml( - m_body_xml_list_services_by_location_request( - m_list_services_by_location( - { - m_location( - PX_LOCATION_ID, - { m_extension_point(encvalue_unichar(valueof(m_point(PX_POINT_IN_E_POLICE_SERVICE_BOUNDARY, PX_SRS_NAME, "point1")))) }, - "geodetic-2d" // TODO Use a Pixit - ) - } - ) - ) - ) - ))); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_response( - mw_http_response_ok( - mw_http_message_body_xml( - mw_body_xml_list_services_by_location_response( - mw_list_services_by_location_response( - { "urn:service:sos.police" }, - LibItsHttp_XmlTemplates.mw_path({ mw_via }), - -, - mw_location_used(PX_LOCATION_ID) - )))))) -> value v_response { - tc_ac.stop; - - log("*** " & testcasename() & ": PASS: IUT successfully responds with ListServicesByLocationResponse ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' statement - - // Postamble - f_cf_01_http_down(); - } // End of testcase TC_ECRF_HTTP_POST_BV_12 - - } // End of group ecrf_role - - group esrp_role { - - /** - * @desc "IUT successfully forwards an incoming SIP INVITE to the correct downstream element, based on the ECRF response" - */ - testcase TC_ESRP_SIP_INVITE_BV_01( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN1) or not(PICS_L_FIS_GEO1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1 and PICS_L_FIS_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_01_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_01_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_01_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_01 - - group f_TC_ESRP_SIP_INVITE_BV_01 { - - function f_TC_ESRP_SIP_INVITE_BV_01_ecrf() runs on HttpComponent { - // Local variables - var Headers v_headers; - var HttpMessage v_request; - - // Test control - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_uPlane, e_success); - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_request( - mw_http_request_post( - PICS_ECRF_URI, - v_headers, - mw_http_message_body_xml( - mw_body_xml_find_service_request( - mw_find_service_request( - { - mw_location( - PX_LOCATION_ID, - { mw_extension_point }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN - )))))) -> value v_request { - tc_ac.stop; - - // Send the response - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_response( - m_http_response_ok( - m_http_message_body_xml( - m_body_xml_find_service_response( - m_find_service_response( - { m_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { m_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - -, - PX_E_POLICE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.m_path( - { LibItsHttp_XmlTemplates.m_via(PX_V_POLICE_SOURCE) } - ), - -, -, - m_location_used(PX_LOCATION_ID) - )) - ), - v_headers))); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' staement - - // Postamble - f_cf_01_http_down(); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_01_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_01_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template INVITE_Request v_invite; - var XSD.String v_point; - var XSD.String v_location_info; - var XSD.String v_status := "manual"; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - v_point := encvalue_unichar(valueof(m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME))); - v_location_info := encvalue_unichar(valueof(m_geopriv(m_location_info({ v_point }), m_LocPolicyType))); - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - vc_reqUrnUri := { namespaceId := "service", namespaceSpecificString := "sos" } // TODO To be refined, create template - v_invite := m_INVITE_Request_IMS_Ng112(SipUrl: {scheme := "urn", components := { urn := vc_reqUrnUri }, urlParameters := omit, headers := omit }, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - m_route( - { m_routeBody_currIpAddr_1("esrp1.unify.plugtests.net") } - ), - -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local) - ); - /* - m_MBody_MIMESdpXml_Emergency( - vc_sdp_local, - m_XmlBody_Presence( - m_presence( - PX_PRESENCE_USER, - { m_tuple( - "fclnzj22sbtoxpj", - { basic := omit, elem_list := { v_location_info } } - ) - } - ) - ) - ), - -, //m_geolocation({ scheme:= "http", components := { other := "//.plugtests.net" }, urlParameters := omit, headers := omit }, omit), - -, //m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - ); - v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); - */ - f_SendINVITE(v_invite); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_01_ue - - function f_TC_ESRP_SIP_INVITE_BV_01_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE( - mw_INVITE_Request_IMS_Ng112( - vc_requestUri - ) - ); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_01_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_01 - - /** - * @desc "IUT adds Incident-ID and Call-ID INFO headers" - */ - testcase TC_ESRP_SIP_INVITE_BV_02( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN1) or not(PICS_L_FIS_GEO1) or not(PICS_E_SIP_HDR1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1 and PICS_L_FIS_GEO1 and PICS_E_SIP_HDR1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_02_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_02_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_02_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_02 - - group f_TC_ESRP_SIP_INVITE_BV_02 { - - function f_TC_ESRP_SIP_INVITE_BV_02_ecrf() runs on HttpComponent { - // Local variables - var Headers v_headers; - var HttpMessage v_request; - - // Test control - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_request( - mw_http_request_post( - PICS_ECRF_URI, - v_headers, - mw_http_message_body_xml( - mw_body_xml_find_service_request( - mw_find_service_request( - { - mw_location( - PX_LOCATION_ID, - { mw_extension_point }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN - )))))) -> value v_request { - tc_ac.stop; - - // Send the response - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_response( - m_http_response_ok( - m_http_message_body_xml( - m_body_xml_find_service_response( - m_find_service_response( - { m_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { m_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - -, - PX_E_POLICE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.m_path( - { LibItsHttp_XmlTemplates.m_via(PX_V_POLICE_SOURCE) } - ), - -, -, - m_location_used(PX_LOCATION_ID) - )) - ), - v_headers))); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' staement - - // Postamble - f_cf_01_http_down(); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_02_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_02_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_CallInfo_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - m_route( - { m_routeBody_currIpAddr_1("esrp1.unify.plugtests.net") } - ), - -, - m_Supported_100rel, - -, - m_MBody_MIMESdpXml( - vc_sdp_local, - m_XmlBody_Presence( - m_presence( - "pres:3650n87934c@ls.example.com" // TODO Use a Pixit - ) - ) - ), - -, -, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } }, - m_call_info("") // m_callInfo_incident - )); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_02_ue - - function f_TC_ESRP_SIP_INVITE_BV_02_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_02_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_02 - - /** - * @desc "IUT uses HELD request to query location when INVITE does not contain the location" - */ - testcase TC_ESRP_SIP_INVITE_BV_03( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN3) or not(PICS_L_QRY_GEO1) or not(PICS_L_FIS_GEO1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN3 and PICS_L_QRY_GEO1 and PICS_L_FIS_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_03_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_03_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_03_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_03 - - group f_TC_ESRP_SIP_INVITE_BV_03 { - - function f_TC_ESRP_SIP_INVITE_BV_03_ecrf() runs on HttpComponent { - // Local variables - var Headers v_headers; - var HttpMessage v_request; - - // Test control - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_request( - mw_http_request_post( - PICS_ECRF_URI, - v_headers, - mw_http_message_body_xml( - mw_body_xml_find_service_request( - mw_find_service_request( - { - mw_location( - PX_LOCATION_ID, - { mw_extension_point }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN - )))))) -> value v_request { - tc_ac.stop; - - // Send the response - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_response( - m_http_response_ok( - m_http_message_body_xml( - m_body_xml_find_service_response( - m_find_service_response( - { m_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { m_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - -, - PX_E_POLICE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.m_path( - { LibItsHttp_XmlTemplates.m_via(PX_V_POLICE_SOURCE) } - ), - -, -, - m_location_used(PX_LOCATION_ID) - )) - ), - v_headers))); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' staement - - // Postamble - f_cf_01_http_down(); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_03_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_03_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_CallInfo_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - m_route( - { m_routeBody_currIpAddr(vc_userprofile) } - ), - -, - m_Supported_100rel, - -, - m_MBody_MIMESdpXml( - vc_sdp_local, - m_XmlBody_Presence( - m_presence( - "pres:3650n87934c@ls.example.com" // TODO Use a Pixit - ) - ) - ), - -, -, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } }, - m_call_info("") // m_callInfo_incident - )); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_03_ue - - function f_TC_ESRP_SIP_INVITE_BV_03_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_03_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_03 - - /** - * @desc "IUT uses HELD request to query location when INVITE contains location by reference" - */ - testcase TC_ESRP_SIP_INVITE_BV_04( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN2) or not(PICS_H_DER_TOK1) or not(PICS_L_FIS_GEO1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN2 and PICS_H_DER_TOK1 and PICS_L_FIS_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_04_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_04_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_04_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_04 - - group f_TC_ESRP_SIP_INVITE_BV_04 { - - function f_TC_ESRP_SIP_INVITE_BV_04_ecrf() runs on HttpComponent { - // Local variables - var Headers v_headers; - var HttpMessage v_request; - - // Test control - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_request( - mw_http_request_post( - PICS_ECRF_URI, - v_headers, - mw_http_message_body_xml( - mw_body_xml_find_service_request( - mw_find_service_request( - { - mw_location( - PX_LOCATION_ID, - { mw_extension_point }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN - )))))) -> value v_request { - tc_ac.stop; - - // Send the response - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_response( - m_http_response_ok( - m_http_message_body_xml( - m_body_xml_find_service_response( - m_find_service_response( - { m_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { m_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - -, - PX_E_POLICE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.m_path( - { LibItsHttp_XmlTemplates.m_via(PX_V_POLICE_SOURCE) } - ), - -, -, - m_location_used(PX_LOCATION_ID) - )) - ), - v_headers))); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' staement - - // Postamble - f_cf_01_http_down(); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_04_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_04_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_CallInfo_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - m_route( - { m_routeBody_currIpAddr(vc_userprofile) } - ), - -, - m_Supported_100rel, - -, - m_MBody_MIMESdpXml( - vc_sdp_local, - m_XmlBody_Presence( - m_presence( - "pres:3650n87934c@ls.example.com" // TODO Use a Pixit - ) - ) - ), - -, -, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } }, - m_call_info("") // m_callInfo_incident - )); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_04_ue - - function f_TC_ESRP_SIP_INVITE_BV_04_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_04_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_04 - - /** - * @desc "IUT responds to OPTIONS requests" - */ - testcase TC_ESRP_SIP_INVITE_BV_05( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or not(PICS_S_SIP_OPT1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_S_SIP_OPT1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_05_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_05_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_05_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_05 - - group f_TC_ESRP_SIP_INVITE_BV_05 { - - function f_TC_ESRP_SIP_INVITE_BV_05_ecrf() runs on HttpComponent { - // Local variables - - // Test control - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_05_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_05_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersOPTIONS(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_SendOPTIONS(m_OPTIONS_Request_Base(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via - )); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_05_ue - - function f_TC_ESRP_SIP_INVITE_BV_05_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_05_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_05 - - /** - * @desc "IUT successfully forwards an incoming SIP MESSAGE to the correct downstream element, based on the ECRF response" - */ - testcase TC_ESRP_SIP_INVITE_BV_06( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or (not PICS_HTTP_POST_REQUEST) or (not PICS_SERVICE_LOST) or not(PICS_E_SIP_URN1) or not(PICS_L_FIS_GEO1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1 and PICS_L_FIS_GEO1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_06_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_06_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_06_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(3, {c_prDone, c_tbDone, c_poDone}); - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_06 - - group f_TC_ESRP_SIP_INVITE_BV_06 { - - function f_TC_ESRP_SIP_INVITE_BV_06_ecrf() runs on HttpComponent { - // Local variables - var Headers v_headers; - var HttpMessage v_request; - - // Test control - - // Test component configuration - f_cf_01_http_up(); - - // Test adapter configuration - - // Preamble - f_init_default_headers_list(-, -, v_headers); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - tc_ac.start; - alt { - [] httpPort.receive( - mw_http_request( - mw_http_request_post( - PICS_ECRF_URI, - v_headers, - mw_http_message_body_xml( - mw_body_xml_find_service_request( - mw_find_service_request( - { - mw_location( - PX_LOCATION_ID, - { mw_extension_point }, - "geodetic-2d" // TODO Use a Pixit - ) - }, - { }, - PX_E_POLICE_SERVICE_URN - )))))) -> value v_request { - tc_ac.stop; - - // Send the response - f_init_default_headers_list(-, -, v_headers); - httpPort.send( - m_http_response( - m_http_response_ok( - m_http_message_body_xml( - m_body_xml_find_service_response( - m_find_service_response( - { m_mapping( - mw_expires_date_time(PX_LOST_EXPIRES), - PX_LOST_LAST_UPDATED, - PX_V_POLICE_SOURCE, - PX_E_POLICE_SOURCE_ID, - { m_display_name(-, PX_E_POLICE_DISPLAY_NAME) }, - { PX_E_POLICE_SIP_URI }, - -, - PX_E_POLICE_SERVICE_URN - ) - }, - -, - LibItsHttp_XmlTemplates.m_path( - { LibItsHttp_XmlTemplates.m_via(PX_V_POLICE_SOURCE) } - ), - -, -, - m_location_used(PX_LOCATION_ID) - )) - ), - v_headers))); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - } - [] tc_ac.timeout { - log("*** " & testcasename() & ": INCONC: Expected message not received ***"); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); - } - } // End of 'alt' staement - - // Postamble - f_cf_01_http_down(); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_06_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_06_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendMESSAGE(m_MESSAGE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - m_Require_100rel, - -, - m_Supported_100rel, - m_MBody_SDP(vc_sdp_local) - )); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_06_ue - - function f_TC_ESRP_SIP_INVITE_BV_06_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingMESSAGE( - mw_MESSAGE_Request_IMS_Ng112( - vc_requestUri - ) - ); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_06_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_06 - - /** - * @desc "IUT responds BUSY for an incoming SIP INVITE when downstream element is not reachable" - */ - testcase TC_ESRP_SIP_INVITE_BV_07( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var HttpComponent v_ecrf; - var ImsComponent v_ue; - var ImsComponent v_psap; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_ESRP_IUT) or not(PICS_S_SIP_BUS1)) { - log("*** " & testcasename() & ": PICS_ESRP_IUT and PICS_S_SIP_BUS1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_03_up(v_ecrf, v_ue, v_psap); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_07_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_07_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_07_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - v_ecrf.start(f_TC_ESRP_SIP_INVITE_BV_07_ecrf()); - f_incCSeq(v_cSeq_s); v_ue.start(f_TC_ESRP_SIP_INVITE_BV_07_ue(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_psap.start(f_TC_ESRP_SIP_INVITE_BV_07_psap(v_cSeq_s)); - f_serverSyncNClientsAndStop(3, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_03_down(v_ecrf, v_ue, v_psap); - - } // End of testcase TC_ESRP_SIP_INVITE_BV_07 - - group f_TC_ESRP_SIP_INVITE_BV_07 { - - function f_TC_ESRP_SIP_INVITE_BV_07_ecrf() runs on HttpComponent { - // Local variables - var Headers v_headers; - var HttpMessage v_request; - - // Test control - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_uPlane, e_success); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_cf_01_http_down(); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - - } // End of function f_TC_ESRP_SIP_INVITE_BV_07_ecrf - - function f_TC_ESRP_SIP_INVITE_BV_07_ue( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local), - m_geolocation({ scheme:= "http", components := {other := "//" & PICS_HEADER_HOST }, urlParameters := omit, headers := omit }, omit), - m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - )); - - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_IMS_postamble_withDeRegistration(vc_cSeq); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_07_ue - - function f_TC_ESRP_SIP_INVITE_BV_07_psap( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_ESRP_SIP_INVITE_BV_07_psap - - } // End of group f_TC_ESRP_SIP_INVITE_BV_07 - - } // End of group esrp_role - - group psap_role { - - /** - * @desc "IUT successfully handles SIP INVITE with service urn and ULAW via UDP" - */ - testcase TC_PSAP_SIP_INVITE_BV_01( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_UDP1) or (not PICS_E_SIP_URN3) or not(PICS_B_SDP_ULA1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_UDP1 and PICS_E_SIP_URN3 and PICS_B_SDP_ULA1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_01_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_01_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_01_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_01 - - group f_TC_PSAP_SIP_INVITE_BV_01 { - - function f_TC_PSAP_SIP_INVITE_BV_01_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template INVITE_Request v_invite; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local), - /*m_MBody_MIMESdpXml_Emergency( - vc_sdp_local, - m_XmlBody_Presence( - m_presence( - PX_PRESENCE_USER, - { m_tuple( - "fclnzj22sbtoxpj", - { basic := omit, elem_list := { v_location_info } } - ) - } - ) - ) - ),*/ - m_geolocation({ scheme:= "https", components := {other := "//lis1.gridgears.plugtests.net/locref?ref=660bc838-882e-4683-8241-af26bb5960d8" }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference - m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - ); - //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); - f_SendINVITE(v_invite); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_sleep(10.0); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_01_caller - - function f_TC_PSAP_SIP_INVITE_BV_01_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_01_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_01 - - /** - * @desc "IUT successfully handles SIP INVITE with service urn and ULAW via UDP" - */ - testcase TC_PSAP_SIP_INVITE_BV_02( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_UDP1) or (not PICS_E_SIP_URN3) or not(PICS_B_SDP_ALA1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_UDP1 and PICS_E_SIP_URN3 and PICS_B_SDP_ALA1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_01_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_01_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_01_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_02 - - group f_TC_PSAP_SIP_INVITE_BV_02 { - - function f_TC_PSAP_SIP_INVITE_BV_02_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - //f_IMS_preamble_withRegistration(p_cSeq_s, v_register); - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local), - m_geolocation({ scheme:= "http", components := { other := "//lis1.gridgears.plugtests.net" }, urlParameters := omit, headers := omit }, omit), - m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - )); - - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_sleep(10.0); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_02_caller - - function f_TC_PSAP_SIP_INVITE_BV_02_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template REGISTER_Request v_register; - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_02_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_02 - - /** - * @desc "IUT successfully handles SIP INVITE with service urn via TCP" - */ - testcase TC_PSAP_SIP_INVITE_BV_03( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_TCP1) or (not PICS_E_SIP_URN3) or not(PICS_B_SDP_ULA1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_TCP1 and PICS_E_SIP_URN3 and PICS_B_SDP_ULA1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_03_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_03_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_03_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_03 - - group f_TC_PSAP_SIP_INVITE_BV_03 { - - function f_TC_PSAP_SIP_INVITE_BV_03_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local), - m_geolocation({ scheme:= "http", components := { other := "//lis1.gridgears.plugtests.net" }, urlParameters := omit, headers := omit }, omit), - m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - )); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_03_caller - - function f_TC_PSAP_SIP_INVITE_BV_03_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s) - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_03_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_03 - - /** - * @desc "IUT successfully handles SIP INVITE with SDP and PIDF-LO content" - */ - testcase TC_PSAP_SIP_INVITE_BV_04( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_TCP1) or (not PICS_E_SIP_URN1) or not(PICS_B_SDP_ULA1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_TCP1 and PICS_E_SIP_URN1 and PICS_B_SDP_ULA1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_04_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_04_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_04_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_04 - - group f_TC_PSAP_SIP_INVITE_BV_04 { - - function f_TC_PSAP_SIP_INVITE_BV_04_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - var template INVITE_Request v_invite; - var XSD.String v_point; - var XSD.String v_location_info; - var XSD.String v_status := "manual"; - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - v_point := encvalue_unichar(valueof(m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME))); - v_location_info := encvalue_unichar(valueof(m_geopriv(m_location_info({ v_point }), m_LocPolicyType))); - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_MIMESdpXml_Emergency( - vc_sdp_local, - m_XmlBody_Presence( - m_presence( - PX_PRESENCE_USER, - { m_tuple( - "fclnzj22sbtoxpj", - { basic := omit, elem_list := { v_location_info } } - ) - } - ) - ) - ), - m_geolocation({ scheme:= "http", components := { other := "//lis1.gridgears.plugtests.net" }, urlParameters := omit, headers := omit }, omit), - m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - ); - v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); - f_SendINVITE(v_invite); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_04_caller - - function f_TC_PSAP_SIP_INVITE_BV_04_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s) - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_04_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_04 - - /** - * @desc "IUT successfully handles SIP INVITE without service URN" - */ - testcase TC_PSAP_SIP_INVITE_BV_05( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_UDP1) or (not PICS_E_SIP_BSC1) or not(PICS_B_SDP_ULA1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_UDP1 and PICS_E_SIP_BSC1 and PICS_B_SDP_ULA1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_05_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_05_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_05_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_05 - - group f_TC_PSAP_SIP_INVITE_BV_05 { - - function f_TC_PSAP_SIP_INVITE_BV_05_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE2atSUThome), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_Mime_IMS(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local) - )); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_05_caller - - function f_TC_PSAP_SIP_INVITE_BV_05_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s) - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_05_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_05 - - /** - * @desc "IUT successfully handles an incoming SIP BYE" - */ - testcase TC_PSAP_SIP_INVITE_BV_06( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_TCP1) or (not PICS_E_SIP_URN1) or not(PICS_B_SDP_ULA1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_TCP1 and PICS_E_SIP_URN1 and PICS_B_SDP_ULA1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_06_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_06_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_06_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_06 - - group f_TC_PSAP_SIP_INVITE_BV_06 { - - function f_TC_PSAP_SIP_INVITE_BV_06_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - vc_contact, - m_Require_100rel, - -, -, - m_Supported_100rel, - -, - m_MBody_SDP(vc_sdp_local) - )); - f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - LibSip_Steps.f_setHeadersACK(); - f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_06_caller - - function f_TC_PSAP_SIP_INVITE_BV_06_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s) - LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); - f_awaitingResponse(mw_Response_Base(c_statusLine100, vc_callId, vc_cSeq)); - f_check_Conversation(PX_CHECK_CONVERSATION); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingBYE_sendReply(); - //f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_06_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_06 - - /** - * @desc "IUT successfully handles an incoming SIP MESSAGE" - */ - testcase TC_PSAP_SIP_INVITE_BV_07( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_E_SIP_URN1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_E_SIP_URN1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_07_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_07_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_07_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_07 - - group f_TC_PSAP_SIP_INVITE_BV_07 { - - function f_TC_PSAP_SIP_INVITE_BV_07_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendMESSAGE(m_MESSAGE_Request_IMS_Ng112(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via, - m_Require_100rel, - -, - m_Supported_100rel, - m_MBody_SDP(vc_sdp_local), - m_geolocation({ scheme:= "https", components := {other := "//lis1.gridgears.plugtests.net/locref?ref=660bc838-882e-4683-8241-af26bb5960d8" }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference - m_geolocation_routing, - { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } - )); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_07_caller - - function f_TC_PSAP_SIP_INVITE_BV_07_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s) - LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingMESSAGE_sendReply(); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_07_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_07 - - /** - * @desc "IUT successfully handles an incoming SIP NOTIFY" - */ - testcase TC_PSAP_SIP_INVITE_BV_08( - in CSeq p_cSeq_s - ) runs on HttpImsComponent system TestAdapter { - // Local variables - var ImsComponent v_caller; - var ImsComponent v_call_taker; - var CSeq v_cSeq_s := p_cSeq_s; - - // Test control - if (not(PICS_PSAP_IUT) or (not PICS_S_SIP_OPT1)) { - log("*** " & testcasename() & ": PICS_PSAP_IUT and PICS_S_SIP_OPT1 required for executing the TC ***"); - setverdict(inconc); - stop; - } - - // Test component configuration - f_cf_02_up(v_caller, v_call_taker); - - // Test adapter configuration - - // Preamble - - // Test Body - if (not(PICS_PSAP_CALL_TAKER)) { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_08_caller(v_cSeq_s)); - f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); - } else { - f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_08_caller(v_cSeq_s)); - f_incCSeq(v_cSeq_s); v_call_taker.start(f_TC_PSAP_SIP_INVITE_BV_08_call_taker(v_cSeq_s)); - f_serverSyncNClientsAndStop(2, {c_prDone, c_tbDone, c_poDone}); - } - - // Postamble - f_cf_02_down(v_caller, v_call_taker); - - } // End of testcase TC_PSAP_SIP_INVITE_BV_08 - - group f_TC_PSAP_SIP_INVITE_BV_08 { - - function f_TC_PSAP_SIP_INVITE_BV_08_caller( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - - // Test component configuration - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_userProfile_UE1atSUThome); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s); - LibIms_Steps.f_setHeadersOPTIONS(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); - f_SendOPTIONS(m_OPTIONS_Request_Base(vc_requestUri, - vc_callId, - vc_cSeq, - vc_from, - vc_to, - vc_via - )); - f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_08_caller - - function f_TC_PSAP_SIP_INVITE_BV_08_call_taker( - in CSeq p_cSeq_s - ) runs on ImsComponent { - // Local variables - - // Test control - f_init_userprofile(c_userProfile_UE1atSUThome); - f_initSipUrl(c_serviceProfile_EMERGENCY); - f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); - - // Test component configuration - - // Test adapter configuration - - // Preamble - f_IMS_preamble_woRegistration(p_cSeq_s) - LibIms_Steps.f_setHeadersNOTIFY(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); - f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); - - // Test Body - f_awaitingNOTIFY_sendReply(); - f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); - - // Postamble - f_clientSyncAndVerdictPostamble(c_poDone, e_success); - } // End of function f_TC_PSAP_SIP_INVITE_BV_08_call_taker - - } // End of group f_TC_PSAP_SIP_INVITE_BV_08 - - } // End of group psap_role - -} // End of module AtsNg112_TestCases diff --git a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn b/ttcn/AtsNg112/AtsNg112_TestControl.ttcn deleted file mode 100644 index 0669dabd528323d17a37657005956aa318cca421..0000000000000000000000000000000000000000 --- a/ttcn/AtsNg112/AtsNg112_TestControl.ttcn +++ /dev/null @@ -1,89 +0,0 @@ -module AtsNg112_TestControl { - - // LibSip - import from LibSip_SIPTypesAndValues all; - - // LibNg112 - import from LibNg112_Pics all; - - // AtsNg112 - import from AtsNg112_TestCases all; - - // Test Execution - control { - var CSeq v_cSeq := { - fieldName := CSEQ_E, - seqNumber := 1, - method := "INVITE" - } - - if (PICS_LIS_IUT) { - if (PICS_HTTP_POST_REQUEST and PICS_LOCATION_HELD) { - if (PICS_H_QRY_GEO1) { execute(TC_LIS_HTTP_POST_BV_01()); } - if (PICS_H_QRY_GEO2) { execute(TC_LIS_HTTP_POST_BV_02()); } - if (PICS_H_QRY_GEO4) { execute(TC_LIS_HTTP_POST_BV_03()); } - if (PICS_H_QRY_STR1 and PICS_H_QRY_GEO2 and PICS_H_QRY_GEO4) { execute(TC_LIS_HTTP_POST_BV_04()); } - if (PICS_H_QRY_ERR1) { execute(TC_LIS_HTTP_POST_BV_05()); } - if (PICS_H_QRY_CIV1) { execute(TC_LIS_HTTP_POST_BV_06()); } - if (PICS_H_QRY_ERR2) { execute(TC_LIS_HTTP_POST_BV_07()); } - } - if (PICS_HTTP_GET_REQUEST and PICS_LOCATION_HELD) { - if (PICS_H_DER_TOK1) { execute(TC_LIS_HTTP_GET_BV_01()); } - } - if (not(PICS_HTTP_GET_REQUEST) and PICS_LOCATION_HELD) { - if (PICS_H_GET_ERR1) { execute(TC_LIS_HTTP_GET_BV_02()); } - } - } - if (PICS_ECRF_IUT) { - if (PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST) { - if (PICS_L_FIS_GEO1) { execute(TC_ECRF_HTTP_POST_BV_01()); } - if (PICS_L_FIS_GEO2) { execute(TC_ECRF_HTTP_POST_BV_02()); } - if (PICS_L_FIS_ERR1) { execute(TC_ECRF_HTTP_POST_BV_03()); } - if (PICS_L_FIS_ERR2) { execute(TC_ECRF_HTTP_POST_BV_04()); } - if (PICS_L_FIS_SBV1) { execute(TC_ECRF_HTTP_POST_BV_05()); } - if (PICS_L_FIS_GEO2) { - execute(TC_ECRF_HTTP_POST_BV_06()); - execute(TC_ECRF_HTTP_POST_BV_07()); - execute(TC_ECRF_HTTP_POST_BV_08()); - } - if (PICS_L_FIS_GEO1) { - execute(TC_ECRF_HTTP_POST_BV_10()); - execute(TC_ECRF_HTTP_POST_BV_12()); - } - if (PICS_L_LST_ALL1) { - execute(TC_ECRF_HTTP_POST_BV_09()); - execute(TC_ECRF_HTTP_POST_BV_11()); - } - } - } - if (PICS_ESRP_IUT) { - if (PICS_HTTP_POST_REQUEST and PICS_SERVICE_LOST and PICS_E_SIP_URN1) { - if (PICS_L_FIS_GEO1) { execute(TC_ESRP_SIP_INVITE_BV_01(v_cSeq)); } - } - } - if (PICS_PSAP_IUT) { - execute(TC_PSAP_SIP_INVITE_BV_01(v_cSeq)); - /*if (PICS_S_SIP_UDP1 and PICS_E_SIP_URN3) { - if (PICS_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_01(v_cSeq)); } - if (PICS_B_SDP_ALA1) { execute(TC_PSAP_SIP_INVITE_BV_02(v_cSeq)); } - }*/ - /*if (PICS_S_SIP_TCP1 and PICS_E_SIP_URN3) { - if (PICS_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_03(v_cSeq)); } - }*/ - /*if (PICS_S_SIP_TCP1 and PICS_E_SIP_URN1) { - if (PICS_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_04(v_cSeq)); } - //if (PICS_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_06(v_cSeq)); } - } - if (PICS_S_SIP_UDP1 and PICS_E_SIP_BSC1) { - if (PICS_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_05(v_cSeq)); } - } - if (PICS_E_SIP_URN1) { - execute(TC_PSAP_SIP_INVITE_BV_07(v_cSeq)); - } - if (PICS_S_SIP_OPT1) { - execute(TC_PSAP_SIP_INVITE_BV_08(v_cSeq)); - }*/ - } - } // End of 'control' statement - -} // End of module AtsNg112_TestControl diff --git a/ttcn/AtsPSAP/AtsPSAP_Pics.ttcn b/ttcn/AtsPSAP/AtsPSAP_Pics.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..364318880ff87cc55d425e09881bdabd6f9e71b4 --- /dev/null +++ b/ttcn/AtsPSAP/AtsPSAP_Pics.ttcn @@ -0,0 +1,99 @@ +module AtsPSAP_Pics { + + // LibCommon + import from LibCommon_BasicTypesAndValues all; + + /** + * @desc Does IUT configured to use TLS? + */ + modulepar boolean PICS_PSAP_USE_TLS := true; + + /** + * @desc Does IUT configured for UDP? + */ + modulepar boolean PICS_PSAP_S_SIP_UDP1 := false; + + /** + * @desc Does IUT configured for TCP? + */ + modulepar boolean PICS_PSAP_S_SIP_TCP1 := true; + + modulepar boolean PICS_PSAP_E_SIP_BSC1 := true; + + modulepar boolean PICS_PSAP_E_SIP_URN1 := true; + + modulepar boolean PICS_PSAP_E_SIP_URN3 := true; + /** + * @desc Does IUT support A-Law? + */ + modulepar boolean PICS_PSAP_B_SDP_ALA1 := true; + + /** + * @desc Does IUT support U-Law? + */ + modulepar boolean PICS_PSAP_B_SDP_ULA1 := true; + + /** + * @desc Does IUT support SIP CANCEL? + */ + modulepar boolean PICS_PSAP_S_SIP_CANCEL1 := true; + + /** + * @desc Does IUT support SIP OPTIONS? + */ + modulepar boolean PICS_PSAP_S_SIP_OPT1 := true; + + /** + * @desc Does IUT support SIP INFO? + */ + modulepar boolean PICS_PSAP_S_SIP_INFO1 := true; + + /** + * @desc Does the IUT support SIP registration + */ + modulepar boolean PICS_PSAP_S_SIP_REGISTRATION := true; + + /** + * @desc Does the IUT support HTTP Dequeue Registration + */ + modulepar boolean PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION := true; + + /** + * @desc Does the IUT support HELD protocol + */ + modulepar boolean PICS_PSAP_S_HELD := true; + + /** + * @desc Does the IUT support LoST protocol + */ + modulepar boolean PICS_PSAP_S_LoST := true; + + /** + * @desc HTTP post URI for LIS protocol + */ + modulepar charstring PICS_PSAP_LIS_URI := "/"; + + /** + * @desc HTTP post URI for LIS protocol + */ + modulepar charstring PICS_PSAP_LoST_URI := "/"; + + modulepar charstring PICS_PSAP_ESRP_DEQUEUE_URI := "/"; + /** + * @desc URI to ESRP Dequeue Registration web service + */ + modulepar charstring PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_URI := "sip:queue@esinet.io"; + + /** + * @desc SIP URI of dequeuer (where to send calls) + */ + modulepar charstring PICS_PSAP_ESRP_DEQUEUER_REGISTRATION_URI := "sip:target@esinet.io"; + + /** + * @desc Requested time in seconds this registration will expire (in seconds) + */ + modulepar UInt32 PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_EXPIRATION_TIME := 3600; + + modulepar UInt32 PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_PREFERENCE := 5; + +} // End of module AtsPSAP_Pics diff --git a/ttcn/AtsPSAP/AtsPSAP_Steps.ttcn b/ttcn/AtsPSAP/AtsPSAP_Steps.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4e5b5bd497724ea379ea69d91fd817a3aa063451 --- /dev/null +++ b/ttcn/AtsPSAP/AtsPSAP_Steps.ttcn @@ -0,0 +1,199 @@ +/** + * @author ETSI / TTF009 + * @version $URL:$ + * $ID:$ + * @desc This module provides the NG112 PSAP Steps. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478, ETSI TS 103 698 + */ + module AtsPSAP_Steps { + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Steps all; + import from LibSip_Templates all; + import from LibSip_Interface all; + import from LibSip_PIXITS all; + + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Steps all; + import from LibIms_Templates all; + import from LibIms_Interface all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Steps all; + import from LibNg112_Pixits all; + + group Constants { + + group SdpUserProfileConstants { + + const integer c_userProfile_Huawei := 1; + const integer c_userProfile_Huawei_alaw := 2; + + } // End of group SdpUserProfileConstants + + + } // End of group Constants + + group globalSteps { + + /* + * + * @desc sets user parameters with PIXIT values + * @param p_user identifies the selected user configuration and location + * @verdict + */ + function f_init_sdp_userprofile( + inout SDP_Message p_loc_SDP, + in integer p_user, // TODO To be removed + in integer p_sdp_user + ) runs on ImsComponent { + + select(p_sdp_user){ + case (c_userProfile_UE1atSUThome) { // variant c_userProfile_UE1atSUThome + p_loc_SDP := valueof( + m_SDP_mediaList( + { + { { c_audio, { 20000, omit}, "RTP/AVP", {"0"} }, omit, omit, omit, omit, omit }, + { { c_video, { 20002, omit}, "RTP/AVP", {"31"} }, omit, omit, omit, omit, omit } + }, + vc_userprofile + ) + ); + vc_sdp_local.origin.user_name := PX_IMS_SUT_UE1_PUBLIC_USER; + vc_sdp_local.origin.session_id := "2890844526"; + vc_sdp_local.origin.session_version := "2890842807"; + vc_sdp_local.origin.addr := "atlanta.example.com"; + vc_sdp_local.session_name := "c_userProfile_UE1atSUThome"; + f_append_media_attribute(vc_sdp_local, { rtpmap := {"0", {"PCMU", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"31", {"H261", "90000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { sendrecv := { } } ); + } // c_userProfile_UE1atSUThome + case (c_userProfile_Huawei) { //variant c_userProfile_Huawei + p_loc_SDP := valueof( + m_SDP_mediaList( + { + { { c_audio, { 10500, omit}, "RTP/AVP", {"8", "0", "18", "4", "96", "97"} }, omit, omit, omit, omit, omit } + }, + vc_userprofile + ) + ); + vc_sdp_local.origin.user_name := "FAST_V2R1"; + vc_sdp_local.origin.session_id := "2006"; + vc_sdp_local.origin.session_version := "2007"; + vc_sdp_local.origin.addr := "155.11.49.64"; + vc_sdp_local.session_name := "-"; + f_append_media_attribute(vc_sdp_local, { rtpmap := {"0", {"PCMU", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"18", {"G729", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"4", {"G723", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"96", {"AMR", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"97", {"telephone-event", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { fmtp := { "97", { unstructured := "0-15" } } } ); + f_append_media_attribute(vc_sdp_local, { sendrecv := { } } ); + } // c_userProfile_Huawei + case (c_userProfile_Huawei_alaw) { //variant c_userProfile_Huawei + p_loc_SDP := valueof( + m_SDP_mediaList( + { + { { c_audio, { 10500, omit}, "RTP/AVP", {"8", "0", "18", "4", "96", "97"} }, omit, omit, omit, omit, omit } + }, + vc_userprofile + ) + ); + vc_sdp_local.origin.user_name := "FAST_V2R1"; + vc_sdp_local.origin.session_id := "2006"; + vc_sdp_local.origin.session_version := "2007"; + vc_sdp_local.origin.addr := "155.11.49.64"; + vc_sdp_local.session_name := "-"; + f_append_media_attribute(vc_sdp_local, { rtpmap := {"0", {"PCMA", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"18", {"G729", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"4", {"G723", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"96", {"AMR", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { rtpmap := {"97", {"telephone-event", "8000", omit} } } ); + f_append_media_attribute(vc_sdp_local, { fmtp := { "97", { unstructured := "0-15" } } } ); + f_append_media_attribute(vc_sdp_local, { sendrecv := { } } ); + } // c_userProfile_Huawei + } // End of 'select' statement + + log("<<< f_init_sdp_userprofile: p_loc_SDP= ", p_loc_SDP); + } // End of function f_init_sdp_userprofile + + } // End of group globalSteps + + group awaitingMessages { + + /** + * @desc await OPTIONS request reply with 200 OK + */ + function f_awaitingOPTIONS_sendReply( + in template(present) OPTIONS_Request p_MSG := ? + ) runs on ImsComponent { + var OPTIONS_Request v_MSG; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_MSG) -> value v_MSG { + tc_wait.stop; + //f_getRouteMapIntoRecordRoute(v_MSG); + f_setHeadersOnReceiptOfRequest(v_MSG); + // Answer to the OPTIONS + f_send200OK(); + } + } + } // end of f_awaitingOPTIONS_sendReply + + /** + * @desc await INFO request reply with 200 OK + */ + function f_awaitingINFO_sendReply_( + in template(present) INFO_Request p_info := ? + ) runs on ImsComponent { + var INFO_Request v_request; + + tc_wait.start(PX_SIP_TWAIT); + alt { + [] SIPP.receive(p_info) -> value v_request { + tc_wait.stop; + f_setHeadersOnReceiptOfRequest(v_request); + // Answer to the INFO + f_send200OK(); + } + } + } // end of f_awaitingINFO_sendReply + }//end of group awaitingMessages + + group fieldOperations { + function f_setHeadersINFO( + inout CSeq p_cSeq_s, + in SipUrl p_to_user, + in SipUrl p_from_user + ) runs on ImsComponent { + f_setHeadersGeneral(p_cSeq_s, "INFO"); // cseq, contact, branch, via + vc_cancel_To := vc_to; + vc_caller_To := vc_to; + vc_caller_From := vc_from; + + vc_reqHostPort := vc_requestUri.components.sip.hostPort; + + vc_branch := c_branchCookie & f_getRndTag(); + vc_via := { + fieldName := VIA_E, + viaBody := {valueof(m_ViaBody_virtual_XCSCF(vc_branch, vc_userprofile))} + }; + + vc_to := f_initToHeader(p_to_user); // init of vc_to using userProfile identifier + vc_from := f_initFromHeader(p_from_user, f_getRndTag()); // init of vc_from using userProfile identifier + vc_requestUri := p_to_user; // Request URI of Invite is identical with To header + // contact header initialization for sending of OPTIONS from CSCF component + vc_contact := m_Contact(m_SipUrl_currIpaddr_CSCF(vc_userprofile)); + } // end function f_setHeadersINFO + } //end group fieldOperations + +} // End of module AtsPSAP_Steps diff --git a/ttcn/AtsPSAP/AtsPSAP_TestCases.ttcn b/ttcn/AtsPSAP/AtsPSAP_TestCases.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..16b93e4a17b0a4ddcc6acbab91bc0d9d9a65a61e --- /dev/null +++ b/ttcn/AtsPSAP/AtsPSAP_TestCases.ttcn @@ -0,0 +1,2889 @@ +/** + * @author ETSI / STF549, TTF009 + * @version $URL:$ + * $ID:$ + * @desc This module provides the NG112 PSAP test cases. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478, ETSI TS 103 698 + */ +module AtsPSAP_TestCases { + import from XSD all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + // RFC6155 Held ID + import from urn_ietf_params_xml_ns_geopriv_held_id language "XSD" all + with { + extension "File:../xsd/RFC6155_held_id.xsd"; + } + // RFC3863 PIDF + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" + } + import from urn_ietf_params_xml_ns_pidf_geopriv10 language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy language "XSD" all + with { + extension "File:../xsd/RFC4119_geopriv10_basic_policy.xsd"; + } + import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr language "XSD" all + with { + extension "File:../xsd/RFC5139_pdif_geopriv10_civic_address.xsd"; + } + + // RFC3863 + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/RFC3863_pidf.xsd"; + } + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + + // OpenGIS + import from http_www_opengis_net_pidflo_1_0 language "XSD" all + with { + extension "File:../xsd/GLM_pidf_lo_shape.xsd"; + } + import from http_www_opengis_net_gml language "XSD" all + with { + extension "File:../xsd/gmlBase.xsd"; + extension "File:../xsd/basicTypes.xsd"; + extension "File:../xsd/measures.xsd"; + extension "File:../xsd/geometryPrimitives.xsd"; + extension "File:../xsd/geometryBasic0d1d.xsd"; + extension "File:../xsd/geometryBasic2d.xsd"; + } + + // Libcommon + import from LibCommon_Time all; + import from LibCommon_VerdictControl all; + import from LibCommon_Sync all; + + // LibItsHttp + import from LibItsHttp_Pics all; + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_Functions all; + import from LibItsHttp_Templates all; + import from LibItsHttp_XmlTemplates all; + import from LibItsHttp_TestSystem all; + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_SDPTypes all; + import from LibSip_Steps all; + import from LibSip_Templates all; + import from LibSip_Interface all; + + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Steps all; + import from LibIms_Templates all; + import from LibIms_Interface all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_Templates all; + import from LibNg112_Functions all; + import from LibNg112_TestSystem all; + import from LibNg112_Steps all; + import from LibNg112_Pics all; + import from LibNg112_Pixits all; + + // AtsPSAP + import from AtsPSAP_Steps all; + import from AtsPSAP_Pics all; + + group Invite { + + /** + * @desc "IUT successfully handles SIP INVITE with different service urn and ULAW via UDP, with no SIP registration" + */ + testcase TC_PSAP_SIP_INVITE_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_USE_TLS) or (not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_USE_TLS and PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_01 + + group f_TC_PSAP_SIP_INVITE_BV_01 { + + function f_TC_PSAP_SIP_INVITE_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := { other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_01_caller + + function f_TC_PSAP_SIP_INVITE_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + //f_initSipUrl(c_serviceProfile_EMERGENCY); TODO To be removed + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_01 + + /** + * @desc "IUT successfully handles SIP INVITE with different service urn and ULAW via UDP, with SIP registration" + */ + testcase TC_PSAP_SIP_INVITE_BV_02( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_USE_TLS) or (not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or not(PICS_PSAP_S_SIP_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_USE_TLS and PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_02_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_02_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_02 + + group f_TC_PSAP_SIP_INVITE_BV_02 { + + function f_TC_PSAP_SIP_INVITE_BV_02_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + f_setHeaders_REGISTER(p_cSeq_s, true); + //await REGISTRATION + f_awaitingRegistration_IMS(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), "auth", mw_REGISTER_authorizedRequest_wo_securityheaders_IMS); + // Send INVITE + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_IMS_postamble_withDeRegistration(vc_cSeq); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_02_caller + + function f_TC_PSAP_SIP_INVITE_BV_02_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble with REGISTRATION + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_02_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_02 + + /** + * @desc "IUT successfully handles SIP INVITE with different service urn and ALAW via UDP, with no SIP registration" + */ + testcase TC_PSAP_SIP_INVITE_BV_03( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ALA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ALA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_03_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_03_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_03 + + group f_TC_PSAP_SIP_INVITE_BV_03 { + + function f_TC_PSAP_SIP_INVITE_BV_03_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei_alaw); + // Send INVITE + f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + m_geolocation({ scheme:= "http", components := { other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + )); + + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_03_caller + + function f_TC_PSAP_SIP_INVITE_BV_03_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_03_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_03 + + /** + * @desc "IUT successfully handles SIP INVITE with different service urn and ALAW via UDP, with SIP registration" + */ + testcase TC_PSAP_SIP_INVITE_BV_04( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ALA1) or not(PICS_PSAP_S_SIP_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ALA1 and PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_04_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_04_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_04 + + group f_TC_PSAP_SIP_INVITE_BV_04 { + + function f_TC_PSAP_SIP_INVITE_BV_04_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + f_setHeaders_REGISTER(p_cSeq_s, true); + //await REGISTRATION + f_awaitingRegistration_IMS(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), "auth", mw_REGISTER_authorizedRequest_wo_securityheaders_IMS); + // Send INVITE + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei_alaw); + f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + m_geolocation({ scheme:= "http", components := { other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + )); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_04_caller + + function f_TC_PSAP_SIP_INVITE_BV_04_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble with Registration + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_04_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_04 + + /** + * @desc "IUT successfully handles SIP INVITE with service urn via TCP" + */ + testcase TC_PSAP_SIP_INVITE_BV_05( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if (/*(not PICS_PSAP_USE_TLS) or */(not PICS_PSAP_S_SIP_TCP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_USE_TLS and PICS_PSAP_S_SIP_TCP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_05_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_05_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_05 + + group f_TC_PSAP_SIP_INVITE_BV_05 { + + function f_TC_PSAP_SIP_INVITE_BV_05_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := { other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_05_caller + + function f_TC_PSAP_SIP_INVITE_BV_05_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + //f_initSipUrl(c_serviceProfile_EMERGENCY); TODO To be removed + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_05_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_05 + + /** + * @desc "IUT successfully handles SIP INVITE with SDP and PIDF-LO content" + */ + testcase TC_PSAP_SIP_INVITE_BV_06( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_TCP1) or (not PICS_PSAP_E_SIP_URN1) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_TCP1 and PICS_PSAP_E_SIP_URN1 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_06_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_06_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_06 + + group f_TC_PSAP_SIP_INVITE_BV_06 { + + function f_TC_PSAP_SIP_INVITE_BV_06_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + var XSD.String v_point; + var XSD.String v_location_info; + var XSD.String v_status := "manual"; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + //v_point := encvalue_unichar(valueof(m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME))); + //v_location_info := encvalue_unichar(valueof(m_geopriv(m_location_info({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }), m_LocPolicyType))); + v_location_info := encvalue_unichar(valueof(m_geopriv({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }, m_LocPolicyType))); + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { //tuple_list + m_tuple( + "0ehvxv4kxwrzzbp", + { + omit, + m_geopriv({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }, m_LocPolicyType), + { } + } + ) + } + ) + ) + ), + m_geolocation({ scheme:= "http", components := { other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_06_caller + + function f_TC_PSAP_SIP_INVITE_BV_06_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_06_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_06 + + /** + * @desc "IUT successfully handles SIP INVITE without service URN" + */ + testcase TC_PSAP_SIP_INVITE_BV_07( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_BSC1) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_BSC1 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_07_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_07_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_07 + + group f_TC_PSAP_SIP_INVITE_BV_07 { + + function f_TC_PSAP_SIP_INVITE_BV_07_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_userProfile_UE2atSUThome), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + f_SendINVITE(m_INVITE_Request_Mime_IMS(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local) + )); + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_07_caller + + function f_TC_PSAP_SIP_INVITE_BV_07_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s) + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_07_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_07 + + /** + * @desc "IUT successfully handles SIP INVITE with Geolocation header" + */ + testcase TC_PSAP_SIP_INVITE_BV_08( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or not(PICS_PSAP_S_SIP_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INVITE_BV_08_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INVITE_BV_08_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INVITE_BV_08 + + group f_TC_PSAP_SIP_INVITE_BV_08 { + + function f_TC_PSAP_SIP_INVITE_BV_08_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + var XSD.String v_point; + var XSD.String v_location_info; + var XSD.String v_status := "manual"; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + //v_point := encvalue_unichar(valueof(m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME))); + //v_location_info := encvalue_unichar(valueof(m_geopriv(m_location_info({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }), m_LocPolicyType))); + v_location_info := encvalue_unichar(valueof(m_geopriv({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }, m_LocPolicyType))); + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { //tuple_list + m_tuple( + "0ehvxv4kxwrzzbp", + { + omit, + m_geopriv({ point := m_point(PX_PRESENCE_USER_POS, PX_SRS_NAME) }, m_LocPolicyType), + { } + } + ) + } + ) + ) + ), + m_geolocation({ scheme:= "http", components := { other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_08_caller + + function f_TC_PSAP_SIP_INVITE_BV_08_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 180 RINGING + f_sendResponse(m_Response_18XonINVITE_UE(c_statusLine180, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INVITE_BV_08_call_talker + + } // End of group f_TC_PSAP_SIP_INVITE_BV_08 + + } // End of group Invite + + group Ack { + /** + * @desc "IUT after sending 200 OK INVITE successfully handles an incoming SIP ACK to accept the emergency call" + */ + testcase TC_PSAP_SIP_ACK_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or not(PICS_PSAP_S_SIP_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_ACK_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_ACK_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_ACK_BV_01 + + group f_TC_PSAP_SIP_ACK_BV_01 { + + function f_TC_PSAP_SIP_ACK_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + + //await REGISTRATION + f_awaitingREGISTER(mw_REGISTER_unauthorizedRequest_IMS); + // 200OK to complete the request + f_sendResponse(m_Response_2xxonREGISTER_IMS(c_statusLine200,vc_callId, vc_cSeq,vc_callee_From, vc_callee_To, vc_via,vc_contact,f_initSipUrl(c_interfaceProfile_IMS_SUT_PCSCF1),vc_caller_From.addressField.nameAddr.addrSpec)); + + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_ACK_BV_01_caller + + function f_TC_PSAP_SIP_ACK_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble with REGISTRATION + v_register := valueof(m_REGISTER_Request_Base(vc_requestUri, vc_callId, p_cSeq_s, vc_from, vc_to, vc_via_REG, vc_contact, vc_authorization)); + f_awaitingRegistration_IMS(p_cSeq_s, v_register); + + //set Invite headers + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_ACK_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_ACK_BV_01 + + } // End of group Ack + + group Bye { + /** + * @desc "IUT successfully handles an incoming SIP BYE" + */ + testcase TC_PSAP_SIP_BYE_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_TCP1) or (not PICS_PSAP_E_SIP_URN1) or not(PICS_PSAP_B_SDP_ULA1 or PICS_PSAP_S_SIP_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_TCP1 and PICS_PSAP_E_SIP_URN1 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_BYE_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_BYE_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_BYE_BV_01 + + group f_TC_PSAP_SIP_BYE_BV_01 { + + function f_TC_PSAP_SIP_BYE_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local) + )); + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_BYE_BV_01_caller + + function f_TC_PSAP_SIP_BYE_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s) + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); + //f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_BYE_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_BYE_BV_01 + + /** + * @desc "IUT successfully trigger SIP BYE and accepts 200 OK response" + */ + testcase TC_PSAP_SIP_BYE_BV_02( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_TCP1) or (not PICS_PSAP_E_SIP_URN1) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_TCP1 and PICS_PSAP_E_SIP_URN1 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_BYE_BV_02_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_BYE_BV_02_caller(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_BYE_BV_02 + + group f_TC_PSAP_SIP_BYE_BV_02 { + + function f_TC_PSAP_SIP_BYE_BV_02_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + f_SendINVITE(m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local) + )); + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingBYE_sendReply(mw_BYE_Request_Base(vc_callId)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_BYE_BV_02_caller + + function f_TC_PSAP_SIP_BYE_BV_02_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s) + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_callee_From, vc_callee_To) + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_BYE_BV_02_call_talker + + } // End of group f_TC_PSAP_SIP_BYE_BV_02 + + } // End of group Bye + + group Message { + + /** + * @desc "IUT successfully handles an incoming SIP MESSAGE" + */ + testcase TC_PSAP_SIP_MESSAGE_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_E_SIP_URN1)) { + log("*** " & testcasename() & ": PICS_PSAP_E_SIP_URN1 required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_MESSAGE_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_MESSAGE_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_MESSAGE_BV_01 + + group f_TC_PSAP_SIP_MESSAGE_BV_01 { + + function f_TC_PSAP_SIP_MESSAGE_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + f_SendMESSAGE(m_MESSAGE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + m_Require_100rel, + -, + m_Supported_100rel, + m_MBody_SDP(vc_sdp_local), + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + )); + // awaiting 200 OK + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_MESSAGE_BV_01_caller + + function f_TC_PSAP_SIP_MESSAGE_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s) + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingMESSAGE_sendReply(); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_MESSAGE_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_MESSAGE_BV_01 + + /** + * @desc "IUT successfully handles an incoming SIP MESSAGE with Call-info and Geolocation header fields" + */ + testcase TC_PSAP_SIP_MESSAGE_BV_02( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_E_SIP_URN1)) { + log("*** " & testcasename() & ": PICS_PSAP_E_SIP_URN1 required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_MESSAGE_BV_02_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_MESSAGE_BV_02_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_MESSAGE_BV_02 + + group f_TC_PSAP_SIP_MESSAGE_BV_02 { + + function f_TC_PSAP_SIP_MESSAGE_BV_02_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + f_SendMESSAGE(m_MESSAGE_Request_IMS_CallInfo_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + m_Require_100rel, + -, + m_Supported_100rel, + m_MBody_SDP(vc_sdp_local), + //TODO make geolocation as PIXIT and update MIME body and Content-Type header as multipart/mixed + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } }, + m_call_info("urn:emergency:uid:callid:a56e556d871:bcf.at", m_semicolonParams_callInfo({quotedString := "EmergencyCallData.CallId"})) + )); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_MESSAGE_BV_02_caller + + function f_TC_PSAP_SIP_MESSAGE_BV_02_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s) + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingMESSAGE(mw_MESSAGE_Request_IMS_CallInfo_Ng112(vc_requestUri,-,-,-,-,-,-,-,-,-,?)); + f_sendResponse(m_Response_Base(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_MESSAGE_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_MESSAGE_BV_02 + + } // End of group Message + + group Options { + + /** + * @desc "IUT successfully handles an incoming SIP OPTIONS" + */ + testcase TC_PSAP_SIP_OPTIONS_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if (not(PICS_PSAP_S_SIP_OPT1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_OPT1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_OPTIONS_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_OPTIONS_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_NOTIFY_BV_01 + + group f_TC_PSAP_SIP_OPTIONS_BV_01 { + + function f_TC_PSAP_SIP_OPTIONS_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersOPTIONS(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + vc_callId := valueof(m_call_id(f_getRndCallId() & c_AT & vc_userprofile.currIpaddr)); + f_SendOPTIONS(m_OPTIONS_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + m_Require_100rel, + -, + m_Supported_100rel, + m_MBody_SDP(vc_sdp_local), + //TODO make geolocation as PIXIT and update MIME body and Content-Type header as multipart/mixed + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } })); + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_OPTIONS_BV_01_caller + + function f_TC_PSAP_SIP_OPTIONS_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s) + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingOPTIONS_sendReply(mw_OPTIONS_Request_IMS_Ng112); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_OPTIONS_BV_01_call_talker; + + } // End of group f_TC_PSAP_SIP_OPTIONS_BV_01 + + } // End of group Options + + group Cancel { + + /** + * @desc "Check that IUT successfully handles an incoming SIP CANCEL, release the call with 200 OK CANCEL and 487" + */ + testcase TC_PSAP_SIP_CANCEL_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_CANCEL1) or (not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_CANCEL1 and PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_CANCEL_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_CANCEL_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_CANCEL_BV_01 + + group f_TC_PSAP_SIP_CANCEL_BV_01 { + + function f_TC_PSAP_SIP_CANCEL_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + //100 Trying should be matched in defalut altstep + + // Test Body + f_sleep(0.5); + LibIms_Steps.f_setHeadersCANCEL(vc_cSeq); + f_SendCANCEL(m_CANCEL_Request_UE(vc_requestUri, vc_callId, vc_cSeq, vc_from, vc_to, vc_via, vc_route)); + vc_cSeq.method := "CANCEL"; + f_awaitingOkResponse(vc_cSeq); + vc_cSeq.method := "INVITE"; + // await response - 487 + f_awaitingResponseSendACK(mw_Response_Base(c_statusLine487, vc_callId, vc_cSeq)); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_CANCEL_BV_01_caller + + function f_TC_PSAP_SIP_CANCEL_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + + f_awaitingCANCEL(mw_CANCEL_Request_Base(vc_callId)); + f_send200OK(); + + vc_cSeq.method := "INVITE"; + f_sendResponse(m_Response_4XXonINVITE_UE(c_statusLine487, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, omit)); + //await ACK + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_CANCEL_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_CANCEL_BV_01 + + } // End of group Cancel + + group Info { + + /** + * @desc "IUT rejects requests without a certificate" + */ + testcase TC_PSAP_SIP_INFO_BV_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + var integer v_running_ptc := 1; + + // Test control + if ((not PICS_PSAP_S_SIP_UDP1) or (not PICS_PSAP_E_SIP_URN3) or not(PICS_PSAP_B_SDP_ULA1) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3 and PICS_PSAP_B_SDP_ULA1 and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_SIP_INFO_BV_01_caller(v_cSeq_s)); + if (PICS_PSAP_CALL_TAKER) { + v_running_ptc := v_running_ptc + 1; + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_SIP_INFO_BV_01_call_talker(v_cSeq_s)); + } + f_serverSyncNClientsAndStop(v_running_ptc, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_SIP_INFO_BV_01 + + group f_TC_PSAP_SIP_INFO_BV_01 { + + function f_TC_PSAP_SIP_INFO_BV_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + // awaiting 180 RINGING + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine180, vc_callId, vc_cSeq)); + // awaiting 200 OK INVITE + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + // Send INVITE ACK + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_SendINFO(m_INFO_Request_Base(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via + )); + // awaiting 200 OK + f_awaitingResponse(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INFO_BV_01_caller + + function f_TC_PSAP_SIP_INFO_BV_01_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initUrnUrl("service", PX_IMS_SUT_EMERGENCY_SERVICE), f_initSipUrl(c_userProfile_UE1atSUThome)); + // Await INVITE + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + // Send 200 OK INVITE + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + // Await ACK INVITE + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_check_Conversation(PX_CHECK_CONVERSATION); + // Await INFO + f_awaitingINFO_sendReply_(mw_INFO_Request_Base(vc_callId)); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_SIP_INFO_BV_01_call_talker + + } // End of group f_TC_PSAP_SIP_INFO_BV_01 + + } // End of group Info + + group Dequeue { + + /** + * @desc "Check that the IUT registers properly to an ESRP Dequeue" + */ + testcase TC_PSAP_DEQUEUE_BV_01() runs on HttpComponent system TestAdapter { + // Local variables + var Headers v_headers; + var HttpMessage v_response; + var charstring v_params; + + // Test control + if ((not PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list("application/json;charset=utf-8", -, v_headers); + f_remove_headers_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_PSAP_ESRP_DEQUEUE_URI, + v_headers, + m_http_message_body_json( + m_body_json_dequeue_registration_request( + m_dequeue_registration_request( + PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_URI, + PICS_PSAP_ESRP_DEQUEUER_REGISTRATION_URI, + PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_EXPIRATION_TIME, + PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_PREFERENCE + )))))); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_json( + mw_body_json_dequeue_registration_response( + mw_dequeue_response_ok + ))))) -> value v_response { + tc_ac.stop; + + log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_PSAP_DEQUEUE_BV_01 + + /** + * @desc "Check that the IUT registers properly to an ESRP Dequeue" + */ + testcase TC_PSAP_DEQUEUE_BV_02( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var HttpComponent v_dequeue; + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + if ((not PICS_PSAP_USE_TLS) or (not PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION) or PICS_PSAP_S_SIP_REGISTRATION) { + log("*** " & testcasename() & ": PICS_PSAP_USE_TLS and PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION and NOT PICS_PSAP_S_SIP_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_03_up(v_dequeue, v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + v_dequeue.start(f_TC_PSAP_DEQUEUE_BV_02_dequeue()); + if (not(PICS_PSAP_CALL_TAKER)) { + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_DEQUEUE_BV_02_caller(v_cSeq_s)); + f_serverSyncNClientsAndStop(2, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + } else { + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_DEQUEUE_BV_02_caller(v_cSeq_s)); + f_incCSeq(v_cSeq_s); v_call_talker.start(f_TC_PSAP_DEQUEUE_BV_02_call_talker(v_cSeq_s)); + f_serverSyncNClientsAndStop(3, {c_prDone, c_uPlane, c_tbDone, c_poDone}); + } + + // Postamble + f_cf_03_down(v_dequeue, v_caller, v_call_talker); + + } // End of testcase TC_PSAP_DEQUEUE_BV_02 + + group f_TC_PSAP_DEQUEUE_BV_02 { + + function f_TC_PSAP_DEQUEUE_BV_02_dequeue() runs on HttpComponent system TestAdapter { + // Local variables + var Headers v_headers; + var HttpMessage v_response; + var charstring v_params; + + // Test control + if ((not PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list("application/json;charset=utf-8", -, v_headers); + f_remove_headers_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_PSAP_ESRP_DEQUEUE_URI, + v_headers, + m_http_message_body_json( + m_body_json_dequeue_registration_request( + m_dequeue_registration_request( + PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_URI, + PICS_PSAP_ESRP_DEQUEUER_REGISTRATION_URI, + PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_EXPIRATION_TIME + )))))); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + f_selfOrClientSyncAndVerdictPreamble(c_uPlane, e_success); + + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_json( + mw_body_json_dequeue_registration_response( + mw_dequeue_response_ok + ))))) -> value v_response { + tc_ac.stop; + + log("*** " & testcasename() & ": INFO: IUT successfully registers to ESRP dequeue ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of testcase f_TC_PSAP_DEQUEUE_BV_02 + + function f_TC_PSAP_DEQUEUE_BV_02_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template INVITE_Request v_invite; + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(vc_cSeq, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + v_invite := m_INVITE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + vc_contact, + m_Require_100rel, + -, -, + m_Supported_100rel, + -, + m_MBody_SDP(vc_sdp_local), + /*m_MBody_MIMESdpXml_Emergency( + vc_sdp_local, + m_XmlBody_Presence( + m_presence( + PX_PRESENCE_USER, + { m_tuple( + "fclnzj22sbtoxpj", + { basic := omit, elem_list := { v_location_info } } + ) + } + ) + ) + ),*/ + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + ); + //v_invite.msgHeader.contentType := m_contentType(m_mimeMultipart); + f_SendINVITE(v_invite); + f_awaitingResponseIgnore100Trying(mw_Response_Base(c_statusLine200, vc_callId, vc_cSeq)); + LibSip_Steps.f_setHeadersACK(); + f_SendACK(m_ACK_Request_route(vc_requestUri, vc_callId, vc_response.msgHeader.cSeq, vc_from, vc_to, vc_via, vc_route)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_sleep(10.0); + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_terminateCall_UE(vc_requestUri, valueof(vc_callId), vc_cSeq, vc_caller_From, vc_caller_To); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_DEQUEUE_BV_02_caller + + function f_TC_PSAP_DEQUEUE_BV_02_call_talker( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + var template REGISTER_Request v_register; + + // Test control + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_serviceProfile_EMERGENCY); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test component configuration + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersINVITE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + f_awaitingINVITE(mw_INVITE_Request_RequestURI(vc_requestUri)); + f_sendResponse(m_Response_2xxonINVITE_UE(c_statusLine200, vc_callId, vc_cSeq, vc_caller_From, vc_caller_To, vc_via, + vc_contact, f_recordroute(), valueof(m_MBody_SDP(vc_sdp_local)))); + f_awaitingACK(mw_ACK_Request_Base(vc_callId)); + + f_check_Conversation(PX_CHECK_CONVERSATION); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + + // Postamble + f_awaitingBYE_sendReply(); + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_DEQUEUE_BV_02_call_talker + + } // End of group f_TC_PSAP_DEQUEUE_BV_02 + + /** + * @desc "Check that the IUT registers properly to an ESRP Dequeue" + */ + testcase TC_PSAP_DEQUEUE_BV_03() runs on HttpComponent system TestAdapter { + // Local variables + var Headers v_headers; + var HttpMessage v_response; + var charstring v_params; + + // Test control + if ((not PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION)) { + log("*** " & testcasename() & ": PICS_PSAP_S_HTTP_DEQUEUE_REGISTRATION required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_init_default_headers_list("application/json;charset=utf-8", -, v_headers); + f_remove_headers_list({ c_header_accept }, v_headers); + httpPort.send( + m_http_request( + m_http_request_get( + PICS_PSAP_ESRP_DEQUEUE_URI, + v_headers, + m_http_message_body_json( + m_body_json_dequeue_registration_request( + m_dequeue_deregistration_request( + PICS_PSAP_ESRP_DEQUEUE_REGISTRATION_URI, + PICS_PSAP_ESRP_DEQUEUER_REGISTRATION_URI + )))))); + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_response( + mw_http_response_ok( + mw_http_message_body_json( + mw_body_json_dequeue_registration_response( + mw_dequeue_response_ok + ))))) -> value v_response { + tc_ac.stop; + + log("*** " & testcasename() & ": INFO: IUT successfully de-registers from ESRP dequeue ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_timeout); + } + } // End of 'alt' statement + + // Postamble + f_cf_01_http_down(); + } // End of testcase TC_PSAP_DEQUEUE_BV_03 + + } // End of group Dequeue + + group HELD { + + testcase TC_PSAP_HELD_BV_01() runs on HttpComponent system TestAdapter { + // Local variables + var HttpMessage v_request; + + // Test control + if ((not PICS_PSAP_S_HELD)) { + log("*** " & testcasename() & ": PICS_PSAP_S_HELD required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_checkUserInfo("Trigger HELD request", 30.0); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_request( + mw_http_request_post( + PICS_PSAP_LIS_URI, + ?, + mw_http_message_body_xml( + mw_body_xml_location_request + )))) -> value v_request { + var HttpMessage v_response; + + tc_ac.stop; + + // TODO Send response + + + log("*** " & testcasename() & ": INFO: IUT successfully sends LIS request ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } + } + + } // End of group HELD + + group LoST { + + testcase TC_PSAP_LoST_BV_01() runs on HttpComponent system TestAdapter { + // Local variables + var HttpMessage v_request; + + // Test control + if ((not PICS_PSAP_S_LoST)) { + log("*** " & testcasename() & ": PICS_PSAP_S_LoST required for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_01_http_up(); + + // Test adapter configuration + + // Preamble + f_checkUserInfo("Trigger LoST request", 30.0); + f_selfOrClientSyncAndVerdictPreamble(c_prDone, e_success); + + // Test Body + tc_ac.start; + alt { + [] httpPort.receive( + mw_http_request( + mw_http_request_post( + PICS_PSAP_LoST_URI, + ?, + mw_http_message_body_json( + mw_body_xml_find_service_request( + mw_find_service_request + ))))) -> value v_request { + var HttpMessage v_response; + + tc_ac.stop; + + // TODO Send response + + + log("*** " & testcasename() & ": INFO: IUT successfully sends LoST request ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + [] tc_ac.timeout { + log("*** " & testcasename() & ": INCONC: Expected message not received ***"); + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + } + } + + } // End of group LoST + + group Security { + + /** + * @desc "IUT successfully handles an incoming SIP MESSAGE" + */ + testcase TC_PSAP_TLS_BI_01( + in CSeq p_cSeq_s + ) runs on HttpImsComponent system TestAdapter { + // Local variables + var ImsComponent v_caller; + var ImsComponent v_call_talker; + var CSeq v_cSeq_s := p_cSeq_s; + + // Test control + if ((PICS_PSAP_USE_TLS)) { + log("*** " & testcasename() & ": PICS_PSAP_TLS not required (unsecured connection) for executing the TC ***"); + setverdict(inconc); + stop; + } + + // Test component configuration + f_cf_02_up(v_caller, v_call_talker); + + // Test adapter configuration + + // Preamble + + // Test Body + f_incCSeq(v_cSeq_s); v_caller.start(f_TC_PSAP_TLS_BI_01_caller(v_cSeq_s)); + f_serverSyncNClientsAndStop(1, {c_prDone, c_tbDone, c_poDone}); + + // Postamble + f_cf_02_down(v_caller, v_call_talker); + + } // End of testcase TC_PSAP_TLS_BI_01 + + group f_TC_PSAP_TLS_BI_01 { + + function f_TC_PSAP_TLS_BI_01_caller( + in CSeq p_cSeq_s + ) runs on ImsComponent { + // Local variables + + // Test control + + // Test component configuration + f_init_userprofile(c_userProfile_UE1atSUThome); + f_initSipUrl(c_userProfile_UE1atSUThome); + f_init_interfaceprofile(c_interfaceProfile_IMS_SUT_PCSCF1); + + // Test adapter configuration + + // Preamble + f_IMS_preamble_woRegistration(p_cSeq_s); + LibIms_Steps.f_setHeadersMESSAGE(p_cSeq_s, f_initSipUrl(c_serviceProfile_EMERGENCY), f_initSipUrl(c_userProfile_UE1atSUThome)); + f_init_sdp_userprofile(vc_sdp_local, c_userProfile_UE1atSUThome, c_userProfile_Huawei); + + // Test Body + f_SendMESSAGE(m_MESSAGE_Request_IMS_Ng112(vc_requestUri, + vc_callId, + vc_cSeq, + vc_from, + vc_to, + vc_via, + m_Require_100rel, + -, + m_Supported_100rel, + m_MBody_SDP(vc_sdp_local), + m_geolocation({ scheme:= "https", components := {other := PX_GEOLOCATION_ID }, urlParameters := omit, headers := omit }, omit), // TODO Add a LIS component to do a request for location by reference + m_geolocation_routing, + { fieldName := USER_AGENT_E, userAgentBody := { "ETSI_Conf_testing" } } + )); + tc_resp.start; + alt { + [] SIPP.receive { + tc_resp.stop; + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_error); + } + [] tc_resp.timeout { + f_selfOrClientSyncAndVerdictTestBody(c_tbDone, e_success); + } + } // End of 'alt' statement + + // Postamble + f_clientSyncAndVerdictPostamble(c_poDone, e_success); + } // End of function f_TC_PSAP_TLS_BI_01_caller + + } // End of testcase TC_PSAP_TLS_BI_01 + + } // End of group Security + +} // End of module AtsPSAP_TestCases diff --git a/ttcn/AtsPSAP/AtsPSAP_TestControl.ttcn b/ttcn/AtsPSAP/AtsPSAP_TestControl.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8e37782d023ad54243f23bb251afc5082f906331 --- /dev/null +++ b/ttcn/AtsPSAP/AtsPSAP_TestControl.ttcn @@ -0,0 +1,58 @@ +module AtsPSAP_TestControl { + + // LibSip + import from LibSip_SIPTypesAndValues all; + + // LibNg112 + import from LibNg112_Pics all; + + // AtsPSAP + import from AtsPSAP_TestCases all; + import from AtsPSAP_Pics all; + + // Test Execution + control { + var CSeq v_cSeq := { + fieldName := CSEQ_E, + seqNumber := 1, + method := "INVITE" + } + + //execute(TC_PSAP_SIP_INVITE_BV_02(v_cSeq)); + if (PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_URN3) { + if (PICS_PSAP_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_01(v_cSeq)); } + //if (PICS_PSAP_B_SDP_ALA1) { execute(TC_PSAP_SIP_INVITE_BV_03(v_cSeq)); } + //if (PICS_PSAP_B_SDP_ALA1) { execute(TC_PSAP_SIP_INVITE_BV_04(v_cSeq)); } + } + //execute(TC_PSAP_SIP_INVITE_BV_04(v_cSeq)); + /*if (PICS_PSAP_S_SIP_TCP1 and PICS_PSAP_E_SIP_URN3) { + if (PICS_PSAP_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_05(v_cSeq)); } + } + if (PICS_PSAP_S_SIP_TCP1 and PICS_PSAP_E_SIP_URN1) { + if (PICS_PSAP_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_06(v_cSeq)); } + //if (PICS_PSAP_B_SDP_ULA1) { execute(TC_PSAP_SIP_BYE_BV_01(v_cSeq)); } + } + if (PICS_PSAP_S_SIP_UDP1 and PICS_PSAP_E_SIP_BSC1) { + if (PICS_PSAP_B_SDP_ULA1) { execute(TC_PSAP_SIP_INVITE_BV_07(v_cSeq)); } + } + if (PICS_PSAP_E_SIP_URN1) { + execute(TC_PSAP_SIP_MESSAGE_BV_01(v_cSeq)); + execute(TC_PSAP_SIP_MESSAGE_BV_02(v_cSeq)); + } + if (PICS_PSAP_S_SIP_OPT1) { + execute(TC_PSAP_SIP_OPTIONS_BV_01(v_cSeq)); + } + if (PICS_PSAP_S_SIP_INFO1) { + execute(TC_PSAP_SIP_INFO_BV_01(v_cSeq)); + }*/ + /* + if (PICS_PSAP_S_SIP_CANCEL1) { + execute(TC_PSAP_SIP_CANCEL_BV_01(v_cSeq)); + } +if (not PICS_PSAP_USE_TLS) { + execute(TC_PSAP_TLS_BI_01(v_cSeq)); + }*/ + + } // End of 'control' statement + +} // End of module AtsPSAP_TestControl diff --git a/ttcn/AtsPSAP/module.mk b/ttcn/AtsPSAP/module.mk new file mode 100644 index 0000000000000000000000000000000000000000..7af81cb56e48f3508cb6a96d21e6b33d848735cf --- /dev/null +++ b/ttcn/AtsPSAP/module.mk @@ -0,0 +1,29 @@ +suite := AtsPSAP + +sources := \ + AtsPSAP_Steps.ttcn \ + AtsPSAP_Pics.ttcn \ + AtsPSAP_TestCases.ttcn \ + AtsPSAP_TestControl.ttcn + +modules := ../LibCommon \ + ../LibIms \ + ../LibSip \ + ../LibIts/ttcn/Http \ + ../LibEmcom/LibNg112 \ + ../../ccsrc/Ports/LibHttp \ + ../../ccsrc/Ports/LibSip \ + ../../ccsrc/EncDec/LibHttp \ + ../../ccsrc/EncDec/LibSip \ + ../../ccsrc/Framework \ + ../../ccsrc/loggers \ + ../../ccsrc/Protocols/ETH \ + ../../ccsrc/Protocols/Held \ + ../../ccsrc/Protocols/Http \ + ../../ccsrc/Protocols/Lost \ + ../../ccsrc/Protocols/Json \ + ../../ccsrc/Protocols/Pcap \ + ../../ccsrc/Protocols/Sip \ + ../../ccsrc/Protocols/Tcp \ + ../../ccsrc/Protocols/UDP \ + ../modules/titan.TestPorts.Common_Components.Abstract_Socket diff --git a/ttcn/LibEmcom/LibNg112/json/JSON.ttcn b/ttcn/LibEmcom/LibNg112/json/JSON.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..5867bd3ced6ddf8f960b6c4835e693de91c51e3e --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/json/JSON.ttcn @@ -0,0 +1,151 @@ +module JSON { + + // These constants are used in the JSON date/time type definitions + const charstring + dash := "-", + cln := ":", + year := "[0-9]#4", + yearExpansion := "(-([1-9][0-9]#(0,))#(,1))#(,1)", + month := "(0[1-9]|1[0-2])", + dayOfMonth := "(0[1-9]|[12][0-9]|3[01])", + hour := "([01][0-9]|2[0-3])", + minute := "([0-5][0-9])", + second := "([0-5][0-9])", + sFraction := "(.[0-9]#(1,))#(,1)", + endOfDayExt := "24:00:00(.0#(1,))#(,1)", + nums := "[0-9]#(1,)", + ZorTimeZoneExt := "(Z|[+-]((0[0-9]|1[0-3]):[0-5][0-9]|14:00))#(,1)", + durTime := "(T[0-9]#(1,)"& + "(H([0-9]#(1,)(M([0-9]#(1,)(S|.[0-9]#(1,)S))#(,1)|.[0-9]#(1,)S|S))#(,1)|"& + "M([0-9]#(1,)(S|.[0-9]#(1,)S)|.[0-9]#(1,)M)#(,1)|"& + "S|"& + ".[0-9]#(1,)S))"; + type universal charstring utf8string; + type utf8string JSONCompatibleString + ( + char(0,0,0,9)..char(0,0,0,9), + char(0,0,0,10)..char(0,0,0,10), + char(0,0,0,13)..char(0,0,0,13), + char(0,0,0,32)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) + ); + type utf8string JSONStringWithNoWhitespace + ( + char(0,0,0,33)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) + ); + type utf8string JSONStringWithNoCRLFHT + ( + char(0,0,0,32)..char(0,0,215,255), + char(0,0,224,0)..char(0,0,255,253), + char(0,1,0,0)..char(0,16,255,253) + ); + + // JSON Number type (generic) + type float Number (!-infinity .. !infinity) /*with { + variant "JSON:number" + }*/; + // Integer type + type integer Integer (-infinity .. infinity) /*with { + variant "JSON:integer" + }*/; + // String type + type utf8string String /*with { + variant "JSON:string" + }*/; + type JSONStringWithNoCRLFHT NormalizedString /*with { + variant "JSON:normalizedString"; + }*/; + type JSONStringWithNoWhitespace Name /*with { + variant "JSON:Name"; + }*/; + type Name NCName /*with { + variant "JSON:NCName"; + }*/; + type NormalizedString Token /*with { + variant "JSON:token"; + }*/; + type JSONStringWithNoCRLFHT AnyURI /*with { + variant "JSON:anyURI"; + }*/; + type charstring Duration (pattern + "{dash}#(,1)P({nums}(Y({nums}(M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|" & + "{durTime}#(,1))|M({nums}D{durTime}#(,1)|{durTime}#(,1))|D{durTime}#(,1))|{durTime})") + /*with { + variant "JSON:duration"; + }*/; + type charstring DateTime (pattern + "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}T({hour}{cln}{minute}{cln}{second}" & + "{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ) + /*with { + variant "JSON:dateTime"; + }*/; + type charstring Time (pattern "({hour}{cln}{minute}{cln}{second}{sFraction}|{endOfDayExt}){ZorTimeZoneExt}" ) + /*with { + variant "JSON:time"; + }*/; + type charstring Date (pattern "{yearExpansion}{year}{dash}{month}{dash}{dayOfMonth}{ZorTimeZoneExt}" ) + /*with { + variant "JSON:date"; + }*/; + // Array type + /*type record of JSON.Values Array with { + variant "JSON:array" + }*/ + // Subsidiary array types + type record of JSON.String StrArray; /*with { + variant "JSON:array" + }*/ + type record of JSON.Number NumArray; /*with { + variant "JSON:array" + }*/ + type record of JSON.Integer IntArray; /*with { + variant "JSON:array" + } + type record of JSON.Bool BoolArray with { + variant "JSON:array" + } + type record of JSON.Object ObjArray with { + variant "JSON:array" + }*/ + // Object member + /*type record ObjectMember { + JSON.String name, + JSON.Values value_ + } with { + variant "JSON:objectMember" + }*/ + // Generic JSON object type + /*type record Object { + record length (1..infinity) of JSON.ObjectMember memberList optional + } with { + variant "JSON:object" + } + type union Values { + JSON.String str, + JSON.Number num, + JSON.Integer int, + JSON.Object object, + JSON.Array array, + JSON.StrArray strArray, + JSON.NumArray numArray, + JSON.IntArray intArray, + JSON.BoolArray boolArray, + JSON.ObjArray objArray, + JSON.Bool bool, + JSON.Null null_ + } with { + variant "asValue" + }*/ + + //JSON literals + //When only the true and false literals are allowed + type boolean Bool; /*with { variant "JSON:literal" }*/ + //When only the null literal is allowed + type enumerated Null { null_ }; /*with { variant "JSON:literal" }*/ + +} with { + encode "JSON" +} // End of module JSON diff --git a/ttcn/LibEmcom/LibNg112/json/LibNg112_DequeueRegistration.ttcn b/ttcn/LibEmcom/LibNg112/json/LibNg112_DequeueRegistration.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..cbed7a47f06e6855ac57df87da7794dfb2dd2245 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/json/LibNg112_DequeueRegistration.ttcn @@ -0,0 +1,34 @@ +module LibNg112_DequeueRegistration { + + // Json + import from JSON all; + + /** + * @desc Dequeue Registration/Deregistrationrequest data structure + * @member registrationQueueUri SIP URI of queue to register on + * @member registrationDequeuer SIP URI of dequeuer (where to send calls) + * @member registrationExpirationTime Requested time in seconds this registration will expire + * @member registrationDequeuePreference Integer from 1 - 5 indicating queuing preference. 5 indicating highest preference + * @see ETSI TS 103 479 Table 5: DequeueRegistrationRequest + */ + type record DequeueRegistrationRequest { + JSON.String DequeueRegistrationQueueUri, + JSON.String DequeueRegistrationDequeuer, + JSON.Integer DequeueRegistrationExpirationTime, + JSON.Integer DequeueRegistrationDequeuePreference optional + } // End of type DequeueRegistrationRequest + + /** + * @desc Dequeue Registration/Deregistration response data structure + * @member registrationExpirationTime Requested time in seconds this registration will expire + * @member registrationStatusCode Integer from 1 - 5 indicating queuing preference. 5 indicating highest preference + * @see ETSI TS 103 479 Table 5: DequeueRegistrationRequest + */ + type record DequeueRegistrationResponse { + JSON.Integer DequeueRegistrationExpirationTime, + JSON.Integer DequeueRegistrationStatusCode + } // End of type DequeueRegistrationResponse + +} with { + encode "JSON"; variant ""; +} diff --git a/ttcn/LibEmcom/LibNg112/json/LibNg112_SubscriptionPayloads.ttcn b/ttcn/LibEmcom/LibNg112/json/LibNg112_SubscriptionPayloads.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..09888fe8739e5f2d0fe489329a4b12a90d0e0578 --- /dev/null +++ b/ttcn/LibEmcom/LibNg112/json/LibNg112_SubscriptionPayloads.ttcn @@ -0,0 +1,51 @@ +module LibNg112_SubscriptionPayloads { + + type record ElementStatePayload { + ElementState elementState + } + + type record ElementState { + charstring elementId, + charstring state, + charstring reason optional + } with { + variant(reason) "JSON:omit as null" + } + + type record ServiceStatePayload { + Service service, + ServiceState serviceState + } + + + type record Service { + charstring name, + charstring domain + } + + type record ServiceState { + charstring state, + charstring reason + } + + type record SecurityPosturePayload { + Service service, + charstring securityPosture + } + + type record QueueStatePayload { + QueueStateEventUri QueueStateEventUri, + QueueStateEventQueueLength QueueStateEventQueueLength, + QueueStateEventMaxLength QueueStateEventMaxLength, + QueueStateValuesCode QueueStateValuesCode + } + + type charstring QueueStateEventUri; + type integer QueueStateEventQueueLength (0 .. infinity) ; + type integer QueueStateEventMaxLength (0 .. infinity); + type charstring QueueStateValuesCode (pattern "active|inactive|disabled|full|standby"); + +} with { + encode "JSON"; variant ""; +} + diff --git a/ttcn/LibEmcom/LibNg112/module.mk b/ttcn/LibEmcom/LibNg112/module.mk index 7b3619678b9fad63a84ab9aedf71fc82047d0b4b..f5933182bed67744ab0796684c81421f67587c18 100644 --- a/ttcn/LibEmcom/LibNg112/module.mk +++ b/ttcn/LibEmcom/LibNg112/module.mk @@ -20,4 +20,8 @@ sources := \ xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn \ xsd/NoTargetNamespace.ttcn \ xsd/urn_ietf_params_xml_ns_lost1.ttcn \ - xsd/urn_ietf_params_xml_ns_pidf.ttcn + xsd/urn_ietf_params_xml_ns_pidf.ttcn \ + json/JSON.ttcn \ + json/LibNg112_SubscriptionPayloads.ttcn \ + json/LibNg112_DequeueRegistration.ttcn + diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn index f9c84a97f56542fa54c039c70c33e527b0ce10d8..014a67dcb51530de9d294d001bad8e3d13f1adf9 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_EncdecDeclarations.ttcn @@ -46,6 +46,9 @@ module LibNg112_EncdecDeclarations { extension "File:../xsd/geometryBasic0d1d.xsd"; extension "File:../xsd/geometryBasic2d.xsd"; } + + import from LibNg112_DequeueRegistration all; + import from LibNg112_SubscriptionPayloads all; external function enc_LocationRequest(in LocationRequest p_loction_request) return octetstring with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; @@ -81,5 +84,10 @@ module LibNg112_EncdecDeclarations { with { extension "prototype (convert) encode(XER:XER_EXTENDED)" }; external function dec_Circle(in octetstring p_pdu) return Circle with { extension "prototype (convert) decode(XER:XER_EXTENDED)" }; - + + external function enc_QueueStatePayload(in QueueStatePayload p_queueStatePayload) return octetstring + with { extension "prototype (convert) encode(JSON)" }; + external function dec_QueueStatePayload(in octetstring p_pdu) return QueueStatePayload + with { extension "prototype (convert) decode(JSON)" }; + } // End of module LibNg112_EncdecDeclarations diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn index c6d6ca2bf6a104c1411dfd50da4f7ed360666ff9..275be5afe95e83e5da909367b4cd20d0bb5da7c0 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Functions.ttcn @@ -23,7 +23,8 @@ module LibNg112_Functions { import from LibNg112_Steps all; import from LibNg112_TestSystem all; import from LibNg112_Pics all; - + import from LibNg112_SubscriptionPayloads all; + group preambles { /** @@ -43,46 +44,162 @@ module LibNg112_Functions { } // End of function f_cf_01_http_up + function f_cf_01_up() runs on HttpSipComponent { + // Map ports + map(self:httpPort, system:httpPort); + map(self:SIPP, system:SIPP); + + // Connect + f_connect4SelfOrClientSync(); + + activate(a_cf_01_http_down()); + activate(a_default_requests()); + activate(a_default_responses()); + } // End of function f_cf_01__sip_up + function f_cf_02_up( out ImsComponent p_caller, - out ImsComponent p_call_taker + out ImsComponent p_call_talker ) runs on HttpImsComponent { p_caller := ImsComponent.create("Caller") alive; - p_call_taker := ImsComponent.create("CallTaker") alive; + p_call_talker := ImsComponent.create("CallTalker") alive; connect(p_caller:syncPort, self:syncPort); map(p_caller:SIPP, system:SIPP); if (PICS_PSAP_CALL_TAKER) { - connect(p_call_taker:syncPort, self:syncPort); - map(p_call_taker:SIPP, system:SIPP); + connect(p_call_talker:syncPort, self:syncPort); + map(p_call_talker:SIPP, system:SIPP); } else { - p_call_taker := null; + p_call_talker := null; } } // End of function f_cf_02_up function f_cf_03_up( out HttpComponent p_ecrf, - out ImsComponent p_ue, - out ImsComponent p_psap + out ImsComponent p_upstream, + out ImsComponent p_downstream ) runs on HttpImsComponent { p_ecrf := HttpComponent.create("Ecrf") alive; - p_ue := ImsComponent.create("Ue") alive; - p_psap := ImsComponent.create("Psap") alive; + p_upstream := ImsComponent.create("Upstream") alive; + p_downstream := ImsComponent.create("Downstream") alive; connect(p_ecrf:syncPort, self:syncPort); - connect(p_ue:syncPort, self:syncPort); + connect(p_upstream:syncPort, self:syncPort); + connect(p_downstream:syncPort, self:syncPort); + map(p_ecrf:httpPort, system:httpPort); - map(p_ue:SIPP, system:SIPP); - if (PICS_PSAP_CALL_TAKER) { - connect(p_psap:syncPort, self:syncPort); - map(p_psap:SIPP, system:SIPP); - } else { - p_psap := null; - } - + map(p_upstream:SIPP, system:SIPP); + map(p_downstream:SIPP, system:SIPP); } // End of function f_cf_03_up + function f_cf_04_up( + out HttpComponent p_ecrf, + out HttpComponent p_ecrf_redirect_target, + out ImsComponent p_upstream, + out ImsComponent p_downstream + ) runs on HttpImsComponent { + p_ecrf := HttpComponent.create("Ecrf") alive; + p_ecrf_redirect_target := HttpComponent.create("EcrfRedirectTarget") alive; + p_upstream := ImsComponent.create("Upstream") alive; + p_downstream := ImsComponent.create("Downstream") alive; + + connect(p_ecrf:syncPort, self:syncPort); + connect(p_ecrf_redirect_target:syncPort, self:syncPort); + connect(p_upstream:syncPort, self:syncPort); + connect(p_downstream:syncPort, self:syncPort); + + map(p_ecrf:httpPort, system:httpPort); + map(p_ecrf_redirect_target:httpPort, system:httpPort); + map(p_upstream:SIPP, system:SIPP); + map(p_downstream:SIPP, system:SIPP); + } // End of function f_cf_04_up + + function f_cf_05_up( + out HttpComponent p_ecrf, + out HttpComponent p_lis, + out ImsComponent p_upstream, + out ImsComponent p_downstream + ) runs on HttpImsComponent { + p_ecrf := HttpComponent.create("Ecrf") alive; + p_lis := HttpComponent.create("Lis") alive; + p_upstream := ImsComponent.create("Upstream") alive; + p_downstream := ImsComponent.create("Downstream") alive; + + connect(p_ecrf:syncPort, self:syncPort); + connect(p_lis:syncPort, self:syncPort); + connect(p_upstream:syncPort, self:syncPort); + connect(p_downstream:syncPort, self:syncPort); + + map(p_ecrf:httpPort, system:httpPort); + map(p_lis:httpPort, system:httpPort); + map(p_upstream:SIPP, system:SIPP); + map(p_downstream:SIPP, system:SIPP); + } // End of function f_cf_04_up + + function f_cf_06_up( + out ImsComponent p_upstream, + out HttpImsComponent p_downstream, + boolean p_downstream_dequeue_registration := false + ) runs on HttpImsComponent { + p_upstream := ImsComponent.create("Upstream") alive; + p_downstream := HttpImsComponent.create("Downstream") alive; + + connect(p_upstream:syncPort, self:syncPort); + connect(p_downstream:syncPort, self:syncPort); + + map(p_upstream:SIPP, system:SIPP); + map(p_downstream:SIPP, system:SIPP); + + if (p_downstream_dequeue_registration) { + map(p_downstream:httpPort, system:httpPort); + } + } // End of function f_cf_06_up + + function f_cf_07_up( + out ImsComponent p_psap + ) runs on HttpImsComponent { + p_psap := ImsComponent.create("Psap") alive; + + connect(p_psap:syncPort, self:syncPort); + + map(p_psap:SIPP, system:SIPP); + } // End of function f_cf_07_up + + function f_cf_08_up( + out ImsComponent p_upstream, + out HttpImsComponent p_downstream, + out ImsComponent p_downstream_diversion + ) runs on HttpImsComponent { + p_upstream := ImsComponent.create("Upstream") alive; + p_downstream := HttpImsComponent.create("Downstream") alive; + p_downstream_diversion := ImsComponent.create("Diversion") alive; + + connect(p_upstream:syncPort, self:syncPort); + connect(p_downstream:syncPort, self:syncPort); + connect(p_downstream_diversion:syncPort, self:syncPort); + + map(p_upstream:SIPP, system:SIPP); + map(p_downstream:SIPP, system:SIPP); + map(p_downstream:httpPort, system:httpPort); + map(p_downstream_diversion:SIPP, system:SIPP) + } // End of function f_cf_06_up + + function f_cf_09_up( + out ImsComponent p_network_caller, + out ImsComponent p_psap + ) runs on HttpImsComponent { + p_network_caller := ImsComponent.create("Caller") alive; + p_psap := ImsComponent.create("CallTalker") alive; + + connect(p_network_caller:syncPort, self:syncPort); + map(p_network_caller:SIPP, system:SIPP); + + connect(p_psap:syncPort, self:syncPort); + map(p_psap:SIPP, system:SIPP); + + } // End of function f_cf_09_up + } // End of group preambles group postambles { @@ -100,47 +217,178 @@ module LibNg112_Functions { deactivate; } // End of function f_cf_01_http_down - + + function f_cf_01_down() runs on HttpSipComponent { + // Unmap ports + unmap(self:httpPort, system:httpPort); + unmap(self:SIPP, system:SIPP); + + // Disconnect ports + f_disconnect4SelfOrClientSync(); + + deactivate; + } // End of function f_cf_02_down + function f_cf_02_down( inout ImsComponent p_caller, - inout ImsComponent p_call_taker + inout ImsComponent p_call_talker ) runs on HttpImsComponent { disconnect(p_caller:syncPort, self:syncPort); unmap(p_caller:SIPP, system:SIPP); + p_caller.done; if (PICS_PSAP_CALL_TAKER) { - disconnect(p_call_taker:syncPort, self:syncPort); - unmap(p_call_taker:SIPP, system:SIPP); + disconnect(p_call_talker:syncPort, self:syncPort); + unmap(p_call_talker:SIPP, system:SIPP); + p_call_talker.done; } - - p_caller.done; - p_call_taker.done; - + deactivate; } // End of function f_cf_02_down function f_cf_03_down( inout HttpComponent p_ecrf, - inout ImsComponent p_ue, - inout ImsComponent p_psap + inout ImsComponent p_upstream, + inout ImsComponent p_downstream ) runs on HttpImsComponent { disconnect(p_ecrf:syncPort, self:syncPort); - disconnect(p_ue:syncPort, self:syncPort); + disconnect(p_upstream:syncPort, self:syncPort); + disconnect(p_downstream:syncPort, self:syncPort); + unmap(p_ecrf:httpPort, system:httpPort); - unmap(p_ue:SIPP, system:SIPP); - if (PICS_PSAP_CALL_TAKER) { - disconnect(p_psap:syncPort, self:syncPort); - unmap(p_psap:SIPP, system:SIPP); - } + unmap(p_upstream:SIPP, system:SIPP); + unmap(p_downstream:SIPP, system:SIPP); p_ecrf.done; - p_ue.done; - p_psap.done; + p_upstream.done; + p_downstream.done; deactivate; } // End of function f_cf_03_down - + + function f_cf_04_down( + inout HttpComponent p_ecrf, + inout HttpComponent p_ecrf_redirect_target, + inout ImsComponent p_upstream, + inout ImsComponent p_downstream + ) runs on HttpImsComponent { + + disconnect(p_ecrf:syncPort, self:syncPort); + disconnect(p_ecrf_redirect_target:syncPort, self:syncPort); + disconnect(p_upstream:syncPort, self:syncPort); + disconnect(p_downstream:syncPort, self:syncPort); + + unmap(p_ecrf:httpPort, system:httpPort); + unmap(p_ecrf_redirect_target:httpPort, system:httpPort); + unmap(p_upstream:SIPP, system:SIPP); + unmap(p_downstream:SIPP, system:SIPP); + + p_ecrf.done; + p_ecrf_redirect_target.done; + p_upstream.done; + p_downstream.done; + + deactivate; + } // End of function f_cf_04_down + + function f_cf_05_down( + inout HttpComponent p_ecrf, + inout HttpComponent p_lis, + inout ImsComponent p_upstream, + inout ImsComponent p_downstream + ) runs on HttpImsComponent { + + disconnect(p_ecrf:syncPort, self:syncPort); + disconnect(p_lis:syncPort, self:syncPort); + disconnect(p_upstream:syncPort, self:syncPort); + disconnect(p_downstream:syncPort, self:syncPort); + + unmap(p_ecrf:httpPort, system:httpPort); + unmap(p_lis:httpPort, system:httpPort); + unmap(p_upstream:SIPP, system:SIPP); + unmap(p_downstream:SIPP, system:SIPP); + + p_ecrf.done; + p_lis.done; + p_upstream.done; + p_downstream.done; + + deactivate; + } // End of function f_cf_05_down + + function f_cf_06_down( + inout ImsComponent p_upstream, + inout HttpImsComponent p_downstream, + boolean p_downstream_dequeue_registration := false + ) runs on HttpImsComponent { + + disconnect(p_upstream:syncPort, self:syncPort); + disconnect(p_downstream:syncPort, self:syncPort); + + unmap(p_upstream:SIPP, system:SIPP); + unmap(p_downstream:SIPP, system:SIPP); + + if (p_downstream_dequeue_registration) { + unmap(p_downstream:httpPort, system:httpPort); + } + + p_upstream.done; + p_downstream.done; + + deactivate; + } // End of function f_cf_06_down + + function f_cf_07_down( + inout ImsComponent p_psap + ) runs on HttpImsComponent { + + disconnect(p_psap:syncPort, self:syncPort); + + unmap(p_psap:SIPP, system:SIPP); + + p_psap.done; + + deactivate; + } // End of function f_cf_06_down + + function f_cf_08_down( + inout ImsComponent p_upstream, + inout HttpImsComponent p_downstream, + inout ImsComponent p_downstream_diversion + ) runs on HttpImsComponent { + + disconnect(p_upstream:syncPort, self:syncPort); + disconnect(p_downstream:syncPort, self:syncPort); + disconnect(p_downstream_diversion:syncPort, self:syncPort); + + unmap(p_upstream:SIPP, system:SIPP); + unmap(p_downstream:SIPP, system:SIPP); + unmap(p_downstream:httpPort, system:httpPort); + unmap(p_downstream_diversion:SIPP, system:SIPP); + + p_upstream.done; + p_downstream.done; + p_downstream_diversion.done; + + deactivate; + } // End of function f_cf_06_down + + function f_cf_09_down( + inout ImsComponent p_network_caller, + inout ImsComponent p_psap + ) runs on HttpImsComponent { + + disconnect(p_network_caller:syncPort, self:syncPort); + unmap(p_network_caller:SIPP, system:SIPP); + p_network_caller.done; + disconnect(p_psap:syncPort, self:syncPort); + unmap(p_psap:SIPP, system:SIPP); + p_psap.done; + + deactivate; + } // End of function f_cf_09_down + /** * @desc Default handling cf01 de-initialisation. */ @@ -165,6 +413,20 @@ module LibNg112_Functions { return } // End of function f_incCSeq + function f_checkUserInfo( + in charstring p_message, + in float p_expiry := 10.0 + ) { + timer tc := p_expiry; + + action(p_message); + tc.start; + alt { + [] tc.timeout { + log("f_checkUserInfo: Timer expiry") + } + } + } // End of function f_checkUserInfo group altsteps { @@ -213,5 +475,37 @@ module LibNg112_Functions { } // End of altstep a_default_responses } // end of group altsteps + + group decoding { + function f_decodeElementState(in NOTIFY_Request p_request, inout ElementStatePayload p_elementStatePayload) return integer { + var integer v_result; + var universal charstring v_temp; + + v_temp := p_request.messageBody.textplain; + v_result := decvalue_unichar(v_temp, p_elementStatePayload); + + return v_result; + } + + function f_decodeServiceState(in NOTIFY_Request p_request, inout ServiceStatePayload p_serviceStatePayload) return integer { + var integer v_result; + var universal charstring v_temp; + + v_temp := p_request.messageBody.textplain; + v_result := decvalue_unichar(v_temp, p_serviceStatePayload); + + return v_result; + } + + function f_decodeSecurityPosture(in NOTIFY_Request p_request, inout SecurityPosturePayload p_securityPosturePayload) return integer { + var integer v_result; + var universal charstring v_temp; + + v_temp := p_request.messageBody.textplain; + v_result := decvalue_unichar(v_temp, p_securityPosturePayload); + + return v_result; + } + } } // End of module LibNg112_Functions diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn index 44eeb35727a94f00e22d544863a224900d70c4b4..a07451aae6b07233abe83913454face3800e1bd5 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pics.ttcn @@ -1,27 +1,5 @@ module LibNg112_Pics { - type record of charstring request_uri_list; - - /** - * @desc Has the IUT the role of LIS? - */ - modulepar boolean PICS_LIS_IUT := false; - - /** - * @desc Has the IUT the role of ECRF? - */ - modulepar boolean PICS_ECRF_IUT := false; - - /** - * @desc Has the IUT the role of ESRP? - */ - modulepar boolean PICS_ESRP_IUT := false; - - /** - * @desc Has the IUT the role of PSAP? - */ - modulepar boolean PICS_PSAP_IUT := false; - /** * @desc Does the IUT support HTTP GET request method? */ @@ -37,77 +15,6 @@ module LibNg112_Pics { */ modulepar boolean PICS_HTTP_POST_REQUEST := true; - /** - * @desc Does the IUT support HELD protocol? - */ - modulepar boolean PICS_LOCATION_HELD := true; - - /** - * @desc Does the IUT support LoST protocol? - */ - modulepar boolean PICS_SERVICE_LOST := true; - - /** - * @desc HTTP post URI for LIS protocol - */ - modulepar charstring PICS_LIS_URI := "/"; - - /** - * @desc HTTP post URI for LIS protocol - */ - modulepar charstring PICS_ECRF_URI := "/"; - - /** - * @desc HTTP POST Uris - * @see RFC 2616 Hypertext Transfer Protocol -- HTTP/1.1 - */ - modulepar request_uri_list PICS_ECRF_REQUEST_URIs := { "/t/0ahy0-1531830377/post" }; - - /** - * @desc Does IUT support Point? - */ - modulepar boolean PICS_H_QRY_GEO1 := true; - - /** - * @desc Does IUT support Circle? - */ - modulepar boolean PICS_H_QRY_GEO2 := true; - - /** - * @desc Does IUT support Polygon? - */ - modulepar boolean PICS_H_QRY_GEO3 := true; - - /** - * @desc Does IUT support Tocken? - */ - modulepar boolean PICS_H_QRY_GEO4 := true; - - /** - * @desc Does IUT support Civic? - */ - modulepar boolean PICS_H_QRY_CIV1 := true; - - /** - * @desc Does IUT support Token? - */ - modulepar boolean PICS_H_QRY_CIV2 := true; - - /** - * @desc Does IUT support Requested Type? - */ - modulepar boolean PICS_H_QRY_STR1 := true; - - /** - * @desc Does IUT support Requested locationUnknown error message? - */ - modulepar boolean PICS_H_QRY_ERR1 := true; - - /** - * @desc Does IUT support Requested cannotProvideLiType error message? - */ - modulepar boolean PICS_H_QRY_ERR2 := true; - /** * @desc Does IUT support returning geolocation? */ @@ -175,8 +82,6 @@ module LibNg112_Pics { */ modulepar boolean PICS_S_SIP_TCP1 := true; - modulepar boolean PICS_E_SIP_BSC1 := true; - modulepar boolean PICS_E_SIP_URN1 := true; modulepar boolean PICS_E_SIP_URN2 := true; @@ -184,15 +89,6 @@ module LibNg112_Pics { modulepar boolean PICS_E_SIP_URN3 := true; modulepar boolean PICS_E_SIP_HDR1 := true; - /** - * @desc Does IUT support A-Law? - */ - modulepar boolean PICS_B_SDP_ALA1 := true; - - /** - * @desc Does IUT support U-Law? - */ - modulepar boolean PICS_B_SDP_ULA1 := true; /** * @desc Does IUT support SIP OPTIONS? diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn index 209621e3be1cfc84685d8533d20e659ee87ee170..96282b71031ae7c086ac34e977f93bcd9a5ee69e 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Pixits.ttcn @@ -42,47 +42,6 @@ module LibNg112_Pixits { * @desc Epsilon for Double valules comparison */ modulepar XSD.Double PX_DOUBLE_CMP_EPSILON := 0.00001; - /** - * @desc Device identifier using SIP uri - */ - modulepar charstring PX_DEVICE_URI_SIP := "sip:user@example.net;gr=kjh29x97us97d"; - - /** - * @desc Device telephone URIs - * See NG112 Plugtest for Boundary and Location (e.g. ALICE01 sip:alice-01@plugtests.net tel:+336152555011 7.04618454 43.62301324 - - */ - modulepar DeviceURIs PX_DEVICE_NUMBER := { "tel:+336152555011", "tel:+336152555012", "tel:+336152555013", "tel:+33336152555014" }; // ALICE01, BOB01, CAROL01, DAVE01 - - /** - * @desc Device telephone URI to get a response with a point - */ - modulepar integer PX_DEVICE_NUMBER_POINT := 0; - - /** - * @desc Device telephone URI to get a response with a circle - */ - modulepar integer PX_DEVICE_NUMBER_CIRCLE := 2; - - /** - * @desc Device telephone URI to get a response with a civic address - */ - modulepar integer PX_DEVICE_NUMBER_CIVIC := 2; - - /** - * @desc Device telephone URI to get a response with an unknown device URI - */ - modulepar integer PX_UNKNOWN_DEVICE_NUMBER := 3; - - /** - * @desc Unknown device identifier - */ - modulepar charstring PX_UNKNOWN_DEVICE_URI := "sip:no_one@example.net;gr=kjh29x97us97d"; - - /** - * @desc Device point position - */ - modulepar DoubleList PX_DEVICE_NUMBER_POINT_POS := { 43.623013, 7.046185 }; // ALICE01 /** * @desc Device position with a circle of conficence @@ -106,37 +65,31 @@ module LibNg112_Pixits { */ modulepar XSD.AnyURI PX_SRS_NAME := "urn:ogc:def:crs:EPSG::4326"; - modulepar Iso3166a2 PX_CIVIC_ADDR_COUNTRY := "AU"; - - modulepar XSD.String PX_CIVIC_ADDR_A1 := "NSW"; - - modulepar XSD.String PX_CIVIC_ADDR_A3 := "Wollongong"; + modulepar XSD.Token PX_LOCATION_ID := "6020688f1ce1896d"; + + modulepar charstring PX_GEOLOCATION_ID := "//lis1.etsi.plugtests.net/locref?ref=660bc838-882e-4683-8241-af26bb5960d8"; - modulepar XSD.String PX_CIVIC_ADDR_A4 := "Gwynneville"; + modulepar XSD.AnyURI PX_E_POLICE_SERVICE_URN := "urn:service:sos.police"; - modulepar XSD.String PX_CIVIC_ADDR_STS := "Northfield Avenue"; + modulepar XSD.DateTime PX_LOST_EXPIRES := "2023-01-11T09:36:53+00:00"; - modulepar XSD.String PX_CIVIC_ADDR_LMK := "University of Wollongong"; + modulepar XSD.DateTime PX_LOST_LAST_UPDATED := "2021-01-11T09:36:53+00:00"; - modulepar XSD.Token PX_LOCATION_ID := "6020688f1ce1896d"; - modulepar XSD.String PX_V_POLICE_DISPLAY_NAME := "PSAP 1 Police"; modulepar XSD.String PX_E_POLICE_DISPLAY_NAME := "PSAP 1 Police"; - modulepar XSD.String PX_V_POLICE_SOURCE := "ecrf1.gridgears.plugtests.net"; + modulepar XSD.String PX_V_POLICE_SOURCE := "ecrf1.etsi.plugtests.net"; modulepar XSD.AnyURI PX_V_POLICE_SOURCE_ID := "1d2af31b-4f75-4277-871a-dd3fad15b002"; modulepar XSD.AnyURI PX_E_POLICE_SOURCE_ID := "1d2af31b-4f75-4277-871a-dd3fad15b002"; - modulepar XSD.AnyURI PX_E_POLICE_SERVICE_URN := "urn:service:sos.police"; - modulepar XSD.AnyURI PX_V_POLICE_SERVICE_URN := "urn:service:sos.police"; modulepar XSD.AnyURI PX_E_POLICE_SIP_URI := "sip:police@psap1.plugtests.net"; - modulepar XSD.Token PX_V_POLICE_PATH := "ecrf1.gridgears.plugtests.net"; + modulepar XSD.Token PX_V_POLICE_PATH := "ecrf1.etsi.plugtests.net"; modulepar XSD.AnyURI PX_V_POLICE_SIP_URI := "sip:police@psap1.plugtests.net"; @@ -150,7 +103,7 @@ module LibNg112_Pixits { modulepar XSD.AnyURI PX_V_FIRE_SERVICE_URN := "urn:service:sos.fire"; - modulepar XSD.String PX_V_FIRE_SOURCE := "ecrf1.gridgears.plugtests.net"; + modulepar XSD.String PX_V_FIRE_SOURCE := "ecrf1.etsi.plugtests.net"; modulepar XSD.AnyURI PX_V_FIRE_SOURCE_ID := "7788a2fb-703c-4e53-85ca-bceca3d1dc2d"; @@ -158,7 +111,7 @@ module LibNg112_Pixits { modulepar XSD.AnyURI PX_V_FIRE_SIP_URI := "sip:fire@psap4.plugtests.net"; - modulepar XSD.Token PX_V_FIRE_PATH := "ecrf1.gridgears.plugtests.net"; + modulepar XSD.Token PX_V_FIRE_PATH := "ecrf1.etsi.plugtests.net"; modulepar DoubleList PX_POINT_IN_E_FIRE_SERVICE_BOUNDARY := { 43.621723979321644, 7.058994770050049 }; // BOB03 @@ -172,17 +125,23 @@ module LibNg112_Pixits { modulepar XSD.Double PX_CIRCLE_IN_V_FIRE_SERVICE_BOUNDARY_RADIUS := 5.0; - modulepar XSD.DateTime PX_LOST_EXPIRES := "2023-01-11T09:36:53+00:00"; - - modulepar XSD.DateTime PX_LOST_LAST_UPDATED := "2021-01-11T09:36:53+00:00"; - - modulepar XSD.AnyURI PX_E_UNKNOWN_SERVICE_URN := "urn:service:sos.unknown"; - /** * @desc Set to true to check conversation when SIP callis established */ modulepar boolean PX_CHECK_CONVERSATION := false; + modulepar Iso3166a2 PX_CIVIC_ADDR_COUNTRY := "AU"; + + modulepar XSD.String PX_CIVIC_ADDR_A1 := "NSW"; + + modulepar XSD.String PX_CIVIC_ADDR_A3 := "Wollongong"; + + modulepar XSD.String PX_CIVIC_ADDR_A4 := "Gwynneville"; + + modulepar XSD.String PX_CIVIC_ADDR_STS := "Northfield Avenue"; + + modulepar XSD.String PX_CIVIC_ADDR_LMK := "University of Wollongong"; + group SUT { group SUT_UE { @@ -492,6 +451,21 @@ module LibNg112_Pixits { modulepar charstring PX_IMS_SUT_AS_HOME_DOMAIN := "as.sut.net"; } // End of group SUT_UE1 + + group SUT_BCF { + /** @desc charstring for SUT - BCF IP address to exchange SIP messages - connection point for PSAP + */ + modulepar charstring PX_IMS_SUT_BCF_IPADDR := "172.31.10.8"; + + /** @desc integer for SUT - BCF port number to exchange SIP messages - connection point for PSAP + */ + modulepar integer PX_IMS_SUT_BCF_PORT := 5060; + + /** @desc charstring for SUT/BCF domain + */ + modulepar charstring PX_IMS_SUT_BCF_HOME_DOMAIN := "bcf22.sut.net"; + + } // End of group SUT_UE1 group SUT_IMGCF { /** @desc charstring for SUT/I-MGCF IP address to exchange SIP messages @@ -527,6 +501,51 @@ module LibNg112_Pixits { modulepar charstring PX_IMS_SUT_CONF_FACTORY_NAME := "factory.uri.name"; } // End of group SUT_CONF + + group SUT_LIS { + + /** @desc charstring for SUT - LIS IP address to exchange SIP messages + */ + modulepar charstring PX_SUT_LIS_SIP_IPADDR := "172.31.10.8"; + + /** @desc integer for SUT - LIS port number to exchange SIP messages + */ + modulepar integer PX_SUT_LIS_SIP_PORT := 5060; + + /** @desc charstring for SUT/LIS domain + */ + modulepar charstring PX_SUT_LIS_SIP_HOME_DOMAIN := "esinet.io"; + } + + group SUT_ECRF { + + /** @desc charstring for SUT - LIS IP address to exchange SIP messages + */ + modulepar charstring PX_SUT_ECRF_SIP_IPADDR := "172.31.10.8"; + + /** @desc integer for SUT - LIS port number to exchange SIP messages + */ + modulepar integer PX_SUT_ECRF_SIP_PORT := 5060; + + /** @desc charstring for SUT/LIS domain + */ + modulepar charstring PX_SUT_ECRF_SIP_HOME_DOMAIN := "esinet.io"; + } + + group SUT_ESRP { + + /** @desc charstring for SUT - LIS IP address to exchange SIP messages + */ + modulepar charstring PX_SUT_ESRP_SIP_IPADDR := "172.31.10.8"; + + /** @desc integer for SUT - LIS port number to exchange SIP messages + */ + modulepar integer PX_SUT_ESRP_SIP_PORT := 5060; + + /** @desc charstring for SUT/LIS domain + */ + modulepar charstring PX_SUT_ESRP_SIP_HOME_DOMAIN := "esinet.io"; + } } // End og grup sut @@ -546,6 +565,33 @@ module LibNg112_Pixits { } // End of group ts_ue1 + group ts_esinet_subscriber { + + modulepar charstring PX_ESINET_TS_SUBSCRIBER := "subscriber"; + modulepar integer PX_ESINET_TS_SUBSCRIBER_PORT := 5060; + modulepar charstring PX_ESINET_TS_SUBSCRIBER_IPADDR := "esinet.io"; + modulepar charstring PX_ESINET_TS_SUBSCRIBER_BEARER_IPADDR := "esinet.io" + modulepar charstring PX_ESINET_TS_SUBSCRIBER_HOME_DOMAIN := "esinet.io" + modulepar charstring PX_ESINET_TS_SUBSCRIBER_PUBLIC_USER := "subscriber" + + modulepar charstring PX_ESINET_SUT_PRIVAT_USERNAME := "psap" + modulepar charstring PX_ESINET_SUT_PRIVAT_PASSWD := "secret" + modulepar charstring PX_ESINET_SUT_REGISTRAR := "registrar.esinet.io" + + modulepar charstring PX_ESINET_SUT_SERVICE := "service"; + modulepar charstring PX_ESINET_SUT_HOME_DOMAIN := "esinet.io"; + modulepar charstring PX_ESINET_SUT_IPADDR := "172.0.0.1"; + } + + group ts_esinet_upstream_element { + modulepar charstring PX_ESINET_TS_UPSTREAM := "upstream"; + modulepar integer PX_ESINET_TS_UPSTREAM_PORT := 5060; + modulepar charstring PX_ESINET_TS_UPSTREAM_IPADDR := "esinet.io"; + modulepar charstring PX_ESINET_TS_UPSTREAM_BEARER_IPADDR := "esinet.io" + modulepar charstring PX_ESINET_TS_UPSTREAM_HOME_DOMAIN := "esinet.io" + modulepar charstring PX_ESINET_TS_UPSTREAM_PUBLIC_USER := "upstream" + } + modulepar XSD.String PX_PRESENCE_USER := "sip:alice-06@plugtests.net"; modulepar DoubleList PX_PRESENCE_USER_POS := { 43.623013240241434, 7.046184539794921 }; // ALICE6 position diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Steps.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Steps.ttcn index 1931f8b0d370935e07b7fc8a48b9df8131da96a1..f7930f66e542560e62ca09d512e657c0abb3f277 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Steps.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Steps.ttcn @@ -1,26 +1,26 @@ module LibNg112_Steps { - + // LibSip import from LibSip_SIPTypesAndValues all; import from LibSip_SDPTypes all; import from LibSip_Steps all; import from LibSip_Templates all; import from LibSip_Interface all; - + // LibIms import from LibIms_SIPTypesAndValues all; import from LibIms_Steps all; import from LibIms_Templates all; import from LibIms_Interface all; - + // LibNg112 import from LibNg112_TypesAndValues all; import from LibNg112_Pixits all; - + group Constants { - + const integer c_ISUP_HOP_COUNT:=31; //TODO replace this value with appropriate PIXIT parameter - + group UserProfileConstants { // number of user profile (RESERVED: from 1-10 for SIP profile) const integer c_userProfile_UE1atSUThome := 11; // location is SUT domain @@ -40,76 +40,153 @@ module LibNg112_Steps { const integer c_userProfile_SCSCFwithHomeUE := 46; // location is IMS1 domain const integer c_userProfile_SCSCFwithHomeUE_domain :=55; const integer c_userProfile_ECSCFwithHomeUE := 47; // location is IMS1 domain - const integer c_userProfile_ISUP := 49; // + const integer c_userProfile_ISUP := 49; // const integer c_userProfile_AS1 := 51; // Isc userProfile at AS1 const integer c_userProfile_AS2 := 52; // Isc userProfile at AS2 - - // number of interface profile - const integer c_interfaceProfile_IMS_SUT_IBCF1 := 100; // Ic interface at IBCF1 located in SUT - const integer c_interfaceProfile_IMS_SUT_IBCF2 := 101; // Ic interface at IBCF2 located in SUT + + const integer c_userProfile_ESINetSubscriber := 53; + const integer c_userProfile_ESINetPSAP := 54; + const integer c_userProfile_ESINetUpstreamElement := 55; + + // number of interface profile + const integer c_interfaceProfile_IMS_SUT_IBCF1 := 100; // Ic interface at IBCF1 located in SUT + const integer c_interfaceProfile_IMS_SUT_IBCF2 := 101; // Ic interface at IBCF2 located in SUT const integer c_interfaceProfile_IMS_SUT_PCSCF1 := 110; // Gm interface towards UE1 located in SUT const integer c_interfaceProfile_IMS_SUT_PCSCF2 := 111; // Gm interface towards UE2 located in SUT - const integer c_interfaceProfile_IMS_SUT_PCSCF := 112; // Mw interface at P-CSCF located in SUT - const integer c_interfaceProfile_IMS_SUT_SCSCF := 113; // Mw interface at S-CSCF located in SUT - const integer c_interfaceProfile_IMS_SUT_ICSCF := 114; // Mw interface at I-CSCF located in SUT - const integer c_interfaceProfile_IMS_SUT_MGCF := 115; // Mw interface at MGCF located in SUT - const integer c_interfaceProfile_IMS_SUT_AS := 116; // Isc interface at AS located in SUT - const integer c_interfaceProfile_IMS_SUT_ECSCF := 117; // Mw interface at E-CSCF located in SUT - + const integer c_interfaceProfile_IMS_SUT_PCSCF := 112; // Mw interface at P-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_SCSCF := 113; // Mw interface at S-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_ICSCF := 114; // Mw interface at I-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_MGCF := 115; // Mw interface at MGCF located in SUT + const integer c_interfaceProfile_IMS_SUT_AS := 116; // Isc interface at AS located in SUT + const integer c_interfaceProfile_IMS_SUT_ECSCF := 117; // Mw interface at E-CSCF located in SUT + const integer c_interfaceProfile_IMS_SUT_BCF := 118; // SIP interface at BCF located in SUT + const integer c_interfaceProfile_SUT_LIS := 119; + const integer c_interfaceProfile_SUT_ECRF := 120; + const integer c_interfaceProfile_SUT_ESRP := 121; + // number of conference profile const integer c_conferenceProfile_factoryURI := 800; // conference factory URI - + // number of service profile const integer c_serviceProfile_EMERGENCY := 112; const integer c_serviceProfile_EMERGENCY_INVALID := 666; - + const integer c_serviceProfile_SUBSCRIBER := 115; + const integer c_serviceProfile_SUBSCRIPTION_SERVICE := 116; + // number of SIPURL identifiers const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_domain := 1101; // c_interfaceProfile_IMS_SUT_PCSCF1 const integer c_interfaceSIPURL_IMS_SUT_PCSCF1_ip := 1102; // c_interfaceProfile_IMS_SUT_PCSCF1 - + } // End of group UserProfileConstants - - + + } // End of group Constants - + group globalSteps { - + /* - * + * * @desc sets user parameters with PIXIT values * @param p_user identifies the selected user configuration and location - * @verdict + * @verdict */ function f_init_userprofile( in integer p_user ) runs on ImsComponent { - + select(p_user){ case (c_userProfile_UE1atSUThome) { //variant c_userProfile_UE1atSUThome vc_userprofile.id := p_user; vc_userprofile.currPort := PX_IMS_TS_UE1_PORT; - vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; + vc_userprofile.currIpaddr := PX_IMS_TS_UE1_IPADDR; vc_userprofile.contactPort := PX_IMS_TS_UE1_PORT; vc_userprofile.contactIpaddr := PX_IMS_TS_UE1_IPADDR; vc_userprofile.bearerIpaddr := PX_IMS_SUT_UE1_BEARER_IPADDR; - vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; + vc_userprofile.homeDomain := PX_IMS_SUT_UE1_HOME_DOMAIN; vc_userprofile.publUsername := PX_IMS_SUT_UE1_PUBLIC_USER; vc_userprofile.qop := PX_IMS_SUT_UE1_QOP; - vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; - vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; + vc_userprofile.privUsername := PX_IMS_SUT_UE1_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_IMS_SUT_UE1_PRIVAT_PASSWD; vc_userprofile.registrarDomain := PX_IMS_SUT_UE1_REGISTRAR; } - + case (c_userProfile_ESINetSubscriber) { + vc_userprofile.id := p_user; + vc_userprofile.currPort := PX_ESINET_TS_SUBSCRIBER_PORT; + vc_userprofile.currIpaddr := PX_ESINET_TS_SUBSCRIBER_IPADDR; + vc_userprofile.contactPort := PX_ESINET_TS_SUBSCRIBER_PORT; + vc_userprofile.contactIpaddr := PX_ESINET_TS_SUBSCRIBER_IPADDR; + vc_userprofile.bearerIpaddr := PX_ESINET_SUT_IPADDR; + vc_userprofile.homeDomain := PX_ESINET_TS_SUBSCRIBER_HOME_DOMAIN; + vc_userprofile.publUsername := PX_ESINET_TS_SUBSCRIBER_PUBLIC_USER; + } + case (c_userProfile_ESINetUpstreamElement) { + vc_userprofile.id := p_user; + vc_userprofile.currPort := PX_ESINET_TS_UPSTREAM_PORT; + vc_userprofile.currIpaddr := PX_ESINET_TS_UPSTREAM_IPADDR; + vc_userprofile.contactPort := PX_ESINET_TS_UPSTREAM_PORT; + vc_userprofile.contactIpaddr := PX_ESINET_TS_UPSTREAM_IPADDR; + vc_userprofile.bearerIpaddr := PX_ESINET_SUT_IPADDR; + vc_userprofile.homeDomain := PX_ESINET_TS_UPSTREAM_HOME_DOMAIN; + vc_userprofile.publUsername := PX_ESINET_TS_UPSTREAM_PUBLIC_USER; + } + case (c_userProfile_ESINetPSAP) { + vc_userprofile.id := p_user; + vc_userprofile.currPort := PX_ESINET_TS_SUBSCRIBER_PORT; + vc_userprofile.currIpaddr := PX_ESINET_TS_SUBSCRIBER_IPADDR; + vc_userprofile.contactPort := PX_ESINET_TS_SUBSCRIBER_PORT; + vc_userprofile.contactIpaddr := PX_ESINET_TS_SUBSCRIBER_IPADDR; + vc_userprofile.bearerIpaddr := PX_ESINET_SUT_IPADDR; + vc_userprofile.homeDomain := PX_ESINET_TS_SUBSCRIBER_HOME_DOMAIN; + vc_userprofile.publUsername := PX_ESINET_TS_SUBSCRIBER_PUBLIC_USER; + vc_userprofile.privUsername := PX_ESINET_SUT_PRIVAT_USERNAME; + vc_userprofile.passwd := PX_ESINET_SUT_PRIVAT_PASSWD; + vc_userprofile.registrarDomain := PX_ESINET_SUT_REGISTRAR; + } + } // End of 'select' statement - + } // End of function f_init_userprofile - + + function f_initSipUrlFromCharstring(charstring p_uri) return SipUrl { + var charstring v_scheme := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@?+", 0); + var charstring v_user := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@?+", 1); + var charstring v_host_port := regexp(p_uri, charstring:"(sip[s]#(0,1)):([^@\\s]+)@(?+)", 2); + var charstring v_host := ""; + var charstring v_port := ""; + + template charstring t_has_port := pattern "?+:?+"; + if (match(v_host_port,t_has_port)) { + v_host := regexp(v_host_port, charstring:"(?+):(?+)",0); + v_port := regexp(v_host_port, charstring:"(?+):(?+)",1); + } else { + v_host := v_host_port; + v_port := "5060"; + } + + var SipUrl p_sipUrl := { + scheme := v_scheme, // contains "sip" + components := { + sip := { + userInfo := {userOrTelephoneSubscriber:=v_user, password:=omit}, + hostPort := { + host := v_host, // hostname, IPv4 or IPv6 + portField := str2int(v_port) // represented as an integer + } + } + }, + urlParameters := omit, + headers := omit + }; + + return(p_sipUrl) + } + function f_initSipUrl( in integer p_user ) return SipUrl { var SipUrl p_sipUrl := { scheme := c_sipScheme, // contains "sip" - components := { + components := { sip := { userInfo := omit, hostPort := { @@ -121,7 +198,7 @@ module LibNg112_Steps { urlParameters := omit, headers := omit }; - + select(p_user) { case (c_userProfile_UE1atSUThome) { p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_UE1_PUBLIC_USER, password:=omit}; @@ -135,71 +212,137 @@ module LibNg112_Steps { p_sipUrl.components.sip.userInfo := {userOrTelephoneSubscriber:=PX_IMS_SUT_EMERGENCY_SERVICE, password:=omit}; p_sipUrl.components.sip.hostPort := {host := PX_IMS_SUT_EMERGENCY_HOME_DOMAIN, portField :=omit} } + case (c_serviceProfile_SUBSCRIBER) { + p_sipUrl.components.sip.userInfo := { userOrTelephoneSubscriber := PX_ESINET_TS_SUBSCRIBER, password := omit}; + p_sipUrl.components.sip.hostPort := {host := PX_ESINET_TS_SUBSCRIBER_HOME_DOMAIN, portField :=omit} + } + case (c_serviceProfile_SUBSCRIPTION_SERVICE) { + p_sipUrl.components.sip.userInfo := { userOrTelephoneSubscriber := PX_ESINET_SUT_SERVICE, password := omit}; + p_sipUrl.components.sip.hostPort := {host := PX_ESINET_SUT_HOME_DOMAIN, portField :=omit} + } + }; // End of 'select' statement - + return(p_sipUrl) } // End of function f_initSipUrl - + + + function f_initTelUrl( + in charstring p_subscriber + ) return SipUrl { + var SipUrl p_sipUrl := { + scheme := c_telScheme, // contains "tel" + components := { + tel := { + subscriber := p_subscriber + } + }, + urlParameters := omit, + headers := omit + }; + + return(p_sipUrl) + } // End of function f_initTelUrl + + function f_initUrnUrl( + in charstring p_namespaceId, + in charstring p_namespaceSpecificString + ) return SipUrl { + var SipUrl p_sipUrl := { + scheme := c_urnScheme, // contains "urn" + components := { + urn := { + namespaceId := p_namespaceId, + namespaceSpecificString := p_namespaceSpecificString + } + }, + urlParameters := omit, + headers := omit + }; + + return(p_sipUrl) + } // End of function f_initUrnUrl + /* * @desc sets user parameters with PIXIT values * @param p_user identifies the selected user configuration and location - * @verdict + * @verdict */ function f_init_interfaceprofile( in integer p_interface ) runs on ImsComponent { - + vc_sent_label := { host := PX_IMS_SUT_UE_IPADDR, portField := PX_IMS_SUT_UE_PORT }; - + select(p_interface){ case (c_interfaceProfile_IMS_SUT_IBCF1) { //variant c_interfaceProfile_IMS_SUT_IBCF1 vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF1_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF1_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF1_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_IBCF2) { //variant c_interfaceProfile_IMS_SUT_IBCF2 vc_interfaceprofile.SUTPort := PX_IMS_SUT_IBCF2_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IBCF2_IPADDR; vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IBCF2_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_PCSCF1) { //variant c_interfaceProfile_IMS_SUT_PCSCF1 vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF1_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF1_IPADDR; vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF1_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_PCSCF2) { //variant c_interfaceProfile_IMS_SUT_PCSCF2 vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF2_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF2_IPADDR; vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF2_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_PCSCF) { //variant c_interfaceProfile_IMS_SUT_PCSCF vc_interfaceprofile.SUTPort := PX_IMS_SUT_PCSCF_PORT; vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_PCSCF_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_PCSCF_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_SCSCF) { //variant c_interfaceProfile_IMS_SUT_SCSCF vc_interfaceprofile.SUTPort := PX_IMS_SUT_SCSCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; - vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_SCSCF_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_SCSCF_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_ICSCF) { //variant c_interfaceProfile_IMS_SUT_ICSCF vc_interfaceprofile.SUTPort := PX_IMS_SUT_ICSCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_ICSCF_IPADDR; vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_ICSCF_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_MGCF) { //variant c_interfaceProfile_IMS_SUT_MGCF vc_interfaceprofile.SUTPort := PX_IMS_SUT_IMGCF_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_IMGCF_IPADDR; vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_IMGCF_HOME_DOMAIN; } case (c_interfaceProfile_IMS_SUT_AS) { //variant c_interfaceProfile_IMS_SUT_AS vc_interfaceprofile.SUTPort := PX_IMS_SUT_AS_PORT; - vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_AS_IPADDR; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_AS_IPADDR; vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_AS_HOME_DOMAIN; + } + case (c_interfaceProfile_IMS_SUT_BCF) { //variant c_interfaceProfile_IMS_SUT_BCF + vc_interfaceprofile.SUTPort := PX_IMS_SUT_BCF_PORT; + vc_interfaceprofile.SUTIpaddr := PX_IMS_SUT_BCF_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_IMS_SUT_BCF_HOME_DOMAIN; + } + case (c_interfaceProfile_SUT_LIS) { //variant c_interfaceProfile_SUT_LIS + vc_interfaceprofile.SUTPort := PX_SUT_LIS_SIP_PORT; + vc_interfaceprofile.SUTIpaddr := PX_SUT_LIS_SIP_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_SUT_LIS_SIP_HOME_DOMAIN; + } + case (c_interfaceProfile_SUT_ECRF) { //variant c_interfaceProfile_SUT_ECRF + vc_interfaceprofile.SUTPort := PX_SUT_ECRF_SIP_PORT; + vc_interfaceprofile.SUTIpaddr := PX_SUT_ECRF_SIP_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_SUT_ECRF_SIP_HOME_DOMAIN; + } + case (c_interfaceProfile_SUT_ESRP) { //variant c_interfaceProfile_SUT_ECRF + vc_interfaceprofile.SUTPort := PX_SUT_ESRP_SIP_PORT; + vc_interfaceprofile.SUTIpaddr := PX_SUT_ESRP_SIP_IPADDR; + vc_interfaceprofile.SUTHomeDomain := PX_SUT_ESRP_SIP_HOME_DOMAIN; } } } // End of function f_init_interfaceprofile - + } // End of group globalSteps - -} // End of module LibNg112_Steps + +} // End of module LibNg112_Steps diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn index d1e6859002c579dc9341ce7c7ce2be17d4cfafd3..f252278a2841a992a7666c60472ed15f2109629d 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_Templates.ttcn @@ -1,323 +1,950 @@ -module LibNg112_Templates { - - // LibCommon - import from LibCommon_DataStrings all; - - // LibSip - import from LibSip_SIPTypesAndValues all; - import from LibSip_Templates all; - import from LibSip_Steps all; - import from LibSip_PIXITS all; - import from LibSip_XMLTypes all; - import from LibSip_MessageBodyTypes all; - import from LibSip_Common all; - - // LibIms - import from LibIms_SIPTypesAndValues all; - import from LibIms_Templates all; - - // LibXMLTypes - import from XSD all; - import from urn_ietf_params_xml_ns_pidf language "XSD" all - with { - extension "File:../xsd/pidf.xsd"; - } - - group ng112_invite { - - /** - * @desc INVITE message exchanged at Mw - * @param p_requestUri - * @param p_callId - * @param p_cSeq - * @param p_from - * @param p_to - * @param p_via - * @param p_contact - * @param p_require - * @param p_route - * @param p_recordRoute - * @param p_supported - * @param p_pChargingVector - * @param p_mb - */ - template(value) INVITE_Request m_INVITE_Request_IMS_Ng112( - template(value) SipUrl p_requestUri, - template(value) CallId p_callId, - template(value) CSeq p_cSeq, - template(value) From p_from, - template(value) To p_to, - template(value) Via p_via, - template(value) LibSip_SIPTypesAndValues.Contact p_contact, - template(omit) Require p_require := omit, - template(omit) Route p_route := omit, - template(omit) RecordRoute p_recordRoute := omit, - template(omit) Supported p_supported := omit, - template(omit) PChargingVector p_pChargingVector := omit, - template(value) MessageBody p_mb, - template(omit) Geolocation p_geolocation := omit, - template(omit) GeolocationRouting p_geolocationRouting := omit, - template(omit) UserAgent p_userAgent := omit - ) modifies m_INVITE_Request_IMS := { - msgHeader := { - allow := { fieldName := ALLOW_E, methods := { "INVITE", "ACK", "BYE", "MESSAGE", "OPTIONS", "CANCEL" } }, - geolocation := p_geolocation, - geolocationRouting := p_geolocationRouting, - userAgent := p_userAgent - } - } // End of template m_INVITE_Request_IMS_Ng112 - - template INVITE_Request mw_INVITE_Request_IMS_Ng112( - template(present) SipUrl p_requestUri := ?, - template(present) CallId p_callId := ?, - template(present) CSeq p_cSeq := ?, - template(present) From p_from := ?, - template(present) To p_to := ?, - template(present) Via p_via := ?, - template(present) LibSip_SIPTypesAndValues.Contact p_contact := ?, - template Require p_require := *, - template Route p_route := *, - template RecordRoute p_recordRoute := *, - template Supported p_supported := *, - template PChargingVector p_pChargingVector := *, - template(present) MessageBody p_mb := ?, - template Geolocation p_geolocation := *, - template GeolocationRouting p_geolocationRouting := *, - template UserAgent p_userAgent := * - ) modifies mw_INVITE_Request_Base := { - msgHeader := { - geolocation := p_geolocation, - geolocationRouting := p_geolocationRouting, - userAgent := p_userAgent - } - } // End of template mw_INVITE_Request_IMS_Ng112 - - template(omit) INVITE_Request m_INVITE_Request_IMS_CallInfo_Ng112( - template(value) SipUrl p_requestUri , - template(value) CallId p_callId , - template(value) CSeq p_cSeq , - template(value) From p_from , - template(value) To p_to , - template(value) Via p_via , - template(value) LibSip_SIPTypesAndValues.Contact p_contact , - template(omit) Require p_require := omit, - template(omit) Route p_route := omit, - template(omit) RecordRoute p_recordRoute := omit, - template(omit) Supported p_supported := omit, - template(omit) PChargingVector p_pChargingVector := omit, - template(value) MessageBody p_mb , - template(omit) Geolocation p_geolocation := omit, - template(omit) GeolocationRouting p_geolocationRouting := omit, - template(omit) UserAgent p_userAgent := omit, - template(omit) CallInfo p_callInfo := omit - ) modifies m_INVITE_Request_IMS_Ng112 := { - msgHeader := { - callInfo := p_callInfo - } - } // End of template m_INVITE_Request_IMS_CallInfo_Ng112 - - template INVITE_Request mw_INVITE_Request_IMS_CallInfo_Ng112( - template(present) SipUrl p_requestUri := ?, - template(present) CallId p_callId := ?, - template(present) CSeq p_cSeq := ?, - template(present) From p_from := ?, - template(present) To p_to := ?, - template(present) Via p_via := ?, - template(present) LibSip_SIPTypesAndValues.Contact p_contact := ?, - template Require p_require := *, - template Route p_route := *, - template RecordRoute p_recordRoute := *, - template Supported p_supported := *, - template PChargingVector p_pChargingVector := *, - template(present) MessageBody p_mb := ?, - template Geolocation p_geolocation := *, - template GeolocationRouting p_geolocationRouting := *, - template UserAgent p_userAgent := *, - template CallInfo p_callInfo := * - ) modifies mw_INVITE_Request_IMS_Ng112 := { - msgHeader := { - callInfo := p_callInfo - } - } // End of template mw_INVITE_Request_IMS_CallInfo_Ng112 - - } // End of group ng112_invite - - group ng112_message { - - template(value) MESSAGE_Request m_MESSAGE_Request_IMS_Ng112( - template(value) SipUrl p_requestUri, - template(value) CallId p_callId, - template(value) CSeq p_cSeq, - template(value) From p_from, - template(value) To p_to, - template(value) Via p_via, - template(omit) Require p_require := omit, - template(omit) Route p_route := omit, - template(omit) Supported p_supported := omit, - template(value) MessageBody p_mb, - template(omit) Geolocation p_geolocation := omit, - template(omit) GeolocationRouting p_geolocationRouting := omit, - template(omit) UserAgent p_userAgent := omit - ) modifies m_MESSAGE_Request_MBody_UE := { - msgHeader := { - contentLength := m_contentLength(f_MessageBodyLength(p_mb)), - contentType := m_contentType(c_plainText), - pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, - require := p_require, - route := p_route, - supported := p_supported, - geolocation := p_geolocation, - geolocationRouting := p_geolocationRouting, - userAgent := p_userAgent - }, - messageBody := p_mb - } // End of template m_MESSAGE_Request_IMS_Ng112 - - template(present) MESSAGE_Request mw_MESSAGE_Request_IMS_Ng112( - template(present) SipUrl p_requestUri := ?, - template(present) CallId p_callId := ?, - template(present) CSeq p_cSeq := ?, - template(present) From p_from := ?, - template(present) To p_to := ?, - template(present) Via p_via := ?, - template Require p_require := *, - template Route p_route := *, - template Supported p_supported := *, - template(present) MessageBody p_mb := ? - ) modifies mw_MESSAGE_Request_Base := { - msgHeader := { - contentType := m_contentType(c_plainText), - pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, - require := p_require, - route := p_route, - supported := p_supported - }, - messageBody := p_mb - } // End of template mw_MESSAGE_Request_IMS_Ng112 - - } // End of group ng112_message - - group routes { - - // FIXME To unify with LibSip_Template Route & RouteBody - template(value) Route m_route( - template(value) RouteBody_List p_routeBody - ) := { - fieldName := ROUTE_E, - routeBody := p_routeBody - } // End of template m_route - - template(value) RouteBody m_routeBody_currIpAddr_1( - template(value) charstring p_host, - template(value) integer p_portField := 5060 - ) := { - nameAddr := { - displayName := omit, - addrSpec := { - scheme := c_sipScheme, //* contains "sip" - components := { - sip := { - userInfo := omit, - hostPort := { - host := p_host, - portField := p_portField - } - } - }, - urlParameters := omit, - headers := omit - } - }, - rrParam := omit - } - - } // End of group routes - - group geolocation { - - template (omit) Geolocation m_geolocation( - in template (value) SipUrl p_addrSpec, - in template (omit) SemicolonParam_List p_geolocParam := omit - ) := { - fieldName := GEOLOCATION_E, - addrSpec := p_addrSpec, - geolocParam := p_geolocParam - } // End of template m_geolocation - - template Geolocation mw_geolocation( - template (present) SipUrl p_addrSpec := ?, - template SemicolonParam_List p_geolocParam := * - ) := { - fieldName := GEOLOCATION_E, - addrSpec := p_addrSpec, - geolocParam := p_geolocParam - } // End of template mw_geolocation - - } - - template (omit) GeolocationRouting m_geolocation_routing( - in template (value) GeolocationRoutingState p_state := GEOLOCATION_ROUTING_YES_E, - in template (omit) GenericParam p_genericValue := omit - ) := { - fieldName := GEOLOCATION_ROUTING_E, - state := p_state, - genericValue := p_genericValue - } // End of template m_geolocation_routing - - template GeolocationRouting mw_geolocation_routing( - template (present) GeolocationRoutingState p_state := ?, - template GenericParam p_genericValue := * - ) := { - fieldName := GEOLOCATION_ROUTING_E, - state := p_state, - genericValue := p_genericValue - } // End of template mw_geolocation_routing - - template (omit) CallInfo m_call_info( - in template (value) charstring p_url, - in template (omit) SemicolonParam_List p_infoParams := omit - ) := { - fieldName := CALL_INFO_E, - callInfoBody := { - { - url := p_url, - infoParams := p_infoParams - } - } - } // End of template m_call_info - - - - group ng112_presence { - - template (value) Presence m_presence( - in template (value) XSD.AnyURI p_entity, - in template (value) Presence.tuple_list p_tuple_list := { }, - in template (value) Presence.elem_list p_elem_list := { } - ) := { - entity := p_entity, - tuple_list := p_tuple_list, - note_list := { }, - elem_list := p_elem_list - - } // End of template m_presence - - template (omit) Tuple m_tuple( - in template (value) XSD.ID p_id, - in template (value) Status p_status, - in template (value) Tuple.elem_list p_elem_list := {}, - in template (value) Tuple.note_list p_note_list := { }, - in template (omit) urn_ietf_params_xml_ns_pidf.Contact p_contact := omit, - in template (omit) XSD.DateTime p_timestamp := omit - ) := { - id := p_id, - status := p_status, - elem_list := p_elem_list, - contact := p_contact, - note_list := p_note_list, - timestamp_ := p_timestamp - } // end of template m_tuple - - } - -} // End of module LibNg112_Templates +module LibNg112_Templates { + + // LibCommon + import from LibCommon_DataStrings all; + + // LibSip + import from LibSip_SIPTypesAndValues all; + import from LibSip_Templates all; + import from LibSip_Steps all; + import from LibSip_PIXITS all; + import from LibSip_XMLTypes all; + import from LibSip_MessageBodyTypes all; + import from LibSip_Common all; + + // LibIms + import from LibIms_SIPTypesAndValues all; + import from LibIms_Templates all; + + // LibXMLTypes + import from XSD all; + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/pidf.xsd"; + } + + // LibItsHttp + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_JsonMessageBodyTypes all; + import from LibItsHttp_JsonTemplates all; + import from LibItsHttp_Templates all; + import from LibItsHttp_TypesAndValues all; + import from urn_ietf_params_xml_ns_pidf_geopriv10 all; + + // Json + import from JSON all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + import from LibNg112_SubscriptionPayloads all; + import from LibNg112_DequeueRegistration all; + + group ng112_invite { + + /** + * @desc INVITE message exchanged at Mw + * @param p_requestUri + * @param p_callId + * @param p_cSeq + * @param p_from + * @param p_to + * @param p_via + * @param p_contact + * @param p_require + * @param p_route + * @param p_recordRoute + * @param p_supported + * @param p_pChargingVector + * @param p_mb + */ + template(value) INVITE_Request m_INVITE_Request_IMS_Ng112( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) LibSip_SIPTypesAndValues.Contact p_contact, + template(omit) Require p_require := omit, + template(omit) Route p_route := omit, + template(omit) RecordRoute p_recordRoute := omit, + template(omit) Supported p_supported := omit, + template(omit) PChargingVector p_pChargingVector := omit, + template(value) MessageBody p_mb, + template(omit) Geolocation p_geolocation := omit, + template(omit) GeolocationRouting p_geolocationRouting := omit, + template(omit) UserAgent p_userAgent := omit + ) modifies m_INVITE_Request_IMS := { + msgHeader := { + allow := { fieldName := ALLOW_E, methods := { "INVITE", "ACK", "BYE", "MESSAGE", "OPTIONS", "CANCEL" } }, + geolocation := p_geolocation, + geolocationRouting := p_geolocationRouting, + userAgent := p_userAgent + } + } // End of template m_INVITE_Request_IMS_Ng112 + + template INVITE_Request mw_INVITE_Request_IMS_Ng112( + template(present) SipUrl p_requestUri := ?, + template(present) CallId p_callId := ?, + template(present) CSeq p_cSeq := ?, + template(present) From p_from := ?, + template(present) To p_to := ?, + template(present) Via p_via := ?, + template(present) LibSip_SIPTypesAndValues.Contact p_contact := ?, + template Require p_require := *, + template Route p_route := *, + template RecordRoute p_recordRoute := *, + template Supported p_supported := *, + template PChargingVector p_pChargingVector := *, + template(present) MessageBody p_mb := ?, + template Geolocation p_geolocation := *, + template GeolocationRouting p_geolocationRouting := *, + template UserAgent p_userAgent := * + ) modifies mw_INVITE_Request_Base := { + msgHeader := { + geolocation := p_geolocation, + geolocationRouting := p_geolocationRouting, + userAgent := p_userAgent + } + } // End of template mw_INVITE_Request_IMS_Ng112 + + template(omit) INVITE_Request m_INVITE_Request_IMS_CallInfo_Ng112( + template(value) SipUrl p_requestUri , + template(value) CallId p_callId , + template(value) CSeq p_cSeq , + template(value) From p_from , + template(value) To p_to , + template(value) Via p_via , + template(value) LibSip_SIPTypesAndValues.Contact p_contact , + template(omit) Require p_require := omit, + template(omit) Route p_route := omit, + template(omit) RecordRoute p_recordRoute := omit, + template(omit) Supported p_supported := omit, + template(omit) PChargingVector p_pChargingVector := omit, + template(value) MessageBody p_mb , + template(omit) Geolocation p_geolocation := omit, + template(omit) GeolocationRouting p_geolocationRouting := omit, + template(omit) UserAgent p_userAgent := omit, + template(omit) CallInfo p_callInfo := omit + ) modifies m_INVITE_Request_IMS_Ng112 := { + msgHeader := { + callInfo := p_callInfo + } + } // End of template m_INVITE_Request_IMS_CallInfo_Ng112 + + template INVITE_Request mw_INVITE_Request_IMS_CallInfo_Ng112( + template(present) SipUrl p_requestUri := ?, + template(present) CallId p_callId := ?, + template(present) CSeq p_cSeq := ?, + template(present) From p_from := ?, + template(present) To p_to := ?, + template(present) Via p_via := ?, + template(present) LibSip_SIPTypesAndValues.Contact p_contact := ?, + template Require p_require := *, + template Route p_route := *, + template RecordRoute p_recordRoute := *, + template Supported p_supported := *, + template PChargingVector p_pChargingVector := *, + template(present) MessageBody p_mb := ?, + template Geolocation p_geolocation := *, + template GeolocationRouting p_geolocationRouting := *, + template UserAgent p_userAgent := *, + template CallInfo p_callInfo := * + ) modifies mw_INVITE_Request_IMS_Ng112 := { + msgHeader := { + callInfo := p_callInfo + } + } // End of template mw_INVITE_Request_IMS_CallInfo_Ng112 + + } // End of group ng112_invite + + group ng112_message { + + template(value) MESSAGE_Request m_MESSAGE_Request_IMS_Ng112( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Require p_require := omit, + template(omit) Route p_route := omit, + template(omit) Supported p_supported := omit, + template(value) MessageBody p_mb, + template(omit) Geolocation p_geolocation := omit, + template(omit) GeolocationRouting p_geolocationRouting := omit, + template(omit) UserAgent p_userAgent := omit + ) modifies m_MESSAGE_Request_MBody_UE := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_plainText), + pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, + require := p_require, + route := p_route, + supported := p_supported, + geolocation := p_geolocation, + geolocationRouting := p_geolocationRouting, + userAgent := p_userAgent + }, + messageBody := p_mb + } // End of template m_MESSAGE_Request_IMS_Ng112 + + template(value) MESSAGE_Request m_MESSAGE_Request_IMS_CallInfo_Ng112( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Require p_require := omit, + template(omit) Route p_route := omit, + template(omit) Supported p_supported := omit, + template(value) MessageBody p_mb, + template(omit) Geolocation p_geolocation := omit, + template(omit) GeolocationRouting p_geolocationRouting := omit, + template(omit) UserAgent p_userAgent := omit, + template(omit) CallInfo p_callInfo := omit + ) modifies m_MESSAGE_Request_IMS_Ng112 := { + msgHeader := { + callInfo := p_callInfo + } + }// End of template m_MESSAGE_Request_IMS_CallInfo_Ng112 + + template(present) MESSAGE_Request mw_MESSAGE_Request_IMS_Ng112( + template(present) SipUrl p_requestUri := ?, + template(present) CallId p_callId := ?, + template(present) CSeq p_cSeq := ?, + template(present) From p_from := ?, + template(present) To p_to := ?, + template(present) Via p_via := ?, + template Require p_require := *, + template Route p_route := *, + template Supported p_supported := *, + template(present) MessageBody p_mb := ? + ) modifies mw_MESSAGE_Request_Base := { + msgHeader := { + contentType := m_contentType(c_plainText), + require := p_require, + route := p_route, + supported := p_supported + }, + messageBody := p_mb + } // End of template mw_MESSAGE_Request_IMS_Ng112 + + template(present) MESSAGE_Request mw_MESSAGE_Request_IMS_CallInfo_Ng112( + template(present) SipUrl p_requestUri := ?, + template(present) CallId p_callId := ?, + template(present) CSeq p_cSeq := ?, + template(present) From p_from := ?, + template(present) To p_to := ?, + template(present) Via p_via := ?, + template Require p_require := *, + template Route p_route := *, + template Supported p_supported := *, + template(present) MessageBody p_mb := ?, + template CallInfo p_callInfo := * + ) modifies mw_MESSAGE_Request_IMS_Ng112 := { + msgHeader := { + callInfo := p_callInfo + } + } // End of template mw_MESSAGE_Request_IMS_Ng112 + + template(value) OPTIONS_Request m_OPTIONS_Request_IMS_Ng112( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Require p_require := omit, + template(omit) Route p_route := omit, + template(omit) Supported p_supported := omit, + template(value) MessageBody p_mb, + template(omit) Geolocation p_geolocation := omit, + template(omit) GeolocationRouting p_geolocationRouting := omit, + template(omit) UserAgent p_userAgent := omit + ) modifies m_OPTIONS_Request_Base := { + msgHeader := { + contentLength := m_contentLength(f_MessageBodyLength(p_mb)), + contentType := m_contentType(c_plainText), + pAccessNetworkInfo := m_pAccessNetworkInfo_IEEE_11a, + require := p_require, + route := p_route, + supported := p_supported, + geolocation := p_geolocation, + geolocationRouting := p_geolocationRouting, + userAgent := p_userAgent + }, + messageBody := p_mb + } // End of template m_OPTIONS_Request_IMS_Ng112 + + template(present) OPTIONS_Request mw_OPTIONS_Request_IMS_Ng112( + template(present) CallId p_callId := ?, + template(present) SipUrl p_requestUri := ?, + template(present) CSeq p_cSeq := ?, + template(present) From p_from := ?, + template(present) To p_to := ?, + template(present) Via p_via := ?, + template Require p_require := *, + template Route p_route := *, + template Supported p_supported := *, + template(present) MessageBody p_mb := ? + ) modifies mw_OPTIONS_Request_Base := { + msgHeader := { + contentType := m_contentType(c_plainText), + require := p_require, + route := p_route, + supported := p_supported + }, + messageBody := p_mb + } // End of template mw_OPTIONS_Request_IMS_Ng112 + + template(value) OPTIONS_Request m_OPTIONS_Request_IMS_CallInfo_Ng112( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) Require p_require := omit, + template(omit) Route p_route := omit, + template(omit) Supported p_supported := omit, + template(value) MessageBody p_mb, + template(omit) Geolocation p_geolocation := omit, + template(omit) GeolocationRouting p_geolocationRouting := omit, + template(omit) UserAgent p_userAgent := omit, + template(omit) CallInfo p_callInfo := omit + ) modifies m_OPTIONS_Request_IMS_Ng112 := { + msgHeader := { + callInfo := p_callInfo + } + }// End of template m_OPTIONS_Request_IMS_CallInfo_Ng112 + + template(present) OPTIONS_Request mw_OPTIONS_Request_IMS_CallInfo_Ng112( + template(present) CallId p_callId := ?, + template(present) SipUrl p_requestUri := ?, + template(present) CSeq p_cSeq := ?, + template(present) From p_from := ?, + template(present) To p_to := ?, + template(present) Via p_via := ?, + template Require p_require := *, + template Route p_route := *, + template Supported p_supported := *, + template(present) MessageBody p_mb := ?, + template CallInfo p_callInfo := * + ) modifies mw_OPTIONS_Request_IMS_Ng112 := { + msgHeader := { + callInfo := p_callInfo + } + } // End of template mw_OPTIONS_Request_IMS_Ng112 + + } // End of group ng112_message + + group routes { + + // FIXME To unify with LibSip_Template Route & RouteBody + template(value) Route m_route( + template(value) RouteBody_List p_routeBody + ) := { + fieldName := ROUTE_E, + routeBody := p_routeBody + } // End of template m_route + + template(value) RouteBody m_routeBody_currIpAddr_1( + template(value) charstring p_host, + template(value) integer p_portField := 5060 + ) := { + nameAddr := { + displayName := omit, + addrSpec := { + scheme := c_sipScheme, //* contains "sip" + components := { + sip := { + userInfo := omit, + hostPort := { + host := p_host, + portField := p_portField + } + } + }, + urlParameters := omit, + headers := omit + } + }, + rrParam := omit + } + + } // End of group routes + + group geolocation { + + template (omit) Geolocation m_geolocation( + in template (value) SipUrl p_addrSpec, + in template (omit) SemicolonParam_List p_geolocParam := omit + ) := { + fieldName := GEOLOCATION_E, + addrSpec := p_addrSpec, + geolocParam := p_geolocParam + } // End of template m_geolocation + + template Geolocation mw_geolocation( + template (present) SipUrl p_addrSpec := ?, + template SemicolonParam_List p_geolocParam := * + ) := { + fieldName := GEOLOCATION_E, + addrSpec := p_addrSpec, + geolocParam := p_geolocParam + } // End of template mw_geolocation + + template (omit) GeolocationRouting m_geolocation_routing( + in template (value) GeolocationRoutingState p_state := GEOLOCATION_ROUTING_YES_E, + in template (omit) GenericParam p_genericValue := omit + ) := { + fieldName := GEOLOCATION_ROUTING_E, + state := p_state, + genericValue := p_genericValue + } // End of template m_geolocation_routing + + template GeolocationRouting mw_geolocation_routing( + template (present) GeolocationRoutingState p_state := ?, + template GenericParam p_genericValue := * + ) := { + fieldName := GEOLOCATION_ROUTING_E, + state := p_state, + genericValue := p_genericValue + } // End of template mw_geolocation_routing + + } // End of group geolocation + + group sip_call { + + template (value) CallId m_call_id( + in template (value) CallidString p_callid + ) := { + fieldName := CALL_ID_E, + callid := p_callid + } // End of template m_call_id + + template (present) CallId mw_call_id( + template (present) CallidString p_callid := ? + ) := { + fieldName := CALL_ID_E, + callid := p_callid + } // End of template mw_call_id + + template (omit) CallInfo m_call_info( + in template (value) charstring p_url, + in template (omit) SemicolonParam_List p_infoParams := omit + ) := { + fieldName := CALL_INFO_E, + callInfoBody := { + { + url := p_url, + infoParams := p_infoParams + } + } + } // End of template m_call_info + + template CallInfo mw_call_info( + in template (present) charstring p_url := ?, + in template SemicolonParam_List p_infoParams := * + ) := { + fieldName := CALL_INFO_E, + callInfoBody := { + { + url := p_url, + infoParams := p_infoParams + } + } + } // End of template m_call_info + + template CallInfo mw_call_info_incidentId( + in template (present) charstring p_url := ?, + in template SemicolonParam_List p_infoParams := mw_semicolonParams_callInfo({tokenOrHost := "EmergencyCallData.IncidentId"}) + ) := { + fieldName := CALL_INFO_E, + callInfoBody := { + { + url := p_url, + infoParams := p_infoParams + } + } + } // End of template m_call_info_incidentId + + template CallInfo mw_call_info_callId( + in template (present) charstring p_url := ?, + in template SemicolonParam_List p_infoParams := mw_semicolonParams_callInfo({tokenOrHost := "EmergencyCallData.CallId"}) + ) := { + fieldName := CALL_INFO_E, + callInfoBody := { + { + url := p_url, + infoParams := p_infoParams + } + } + } // End of template m_call_info_callId + + template CallInfo mw_call_info_sourceId( + in template (present) charstring p_url := ?, + in template SemicolonParam_List p_infoParams := mw_semicolonParams_callInfo({tokenOrHost := "EmergencyCallData.SourceId"}) + ) := { + fieldName := CALL_INFO_E, + callInfoBody := { + { + url := p_url, + infoParams := p_infoParams + } + } + } // End of template m_call_info_callId + + template(value) SemicolonParam_List m_semicolonParams_callInfo( + template(omit) GenValue p_purpose := omit + ) := { + { + "purpose", + p_purpose + } + } + + template SemicolonParam_List mw_semicolonParams_callInfo( + template GenValue p_purpose := * + ) := { + { + "purpose", + p_purpose + } + } + + } // End of group sip_call + + group ng112_presence { + + template (value) Presence m_presence( + in template (value) XSD.AnyURI p_entity, + in template (value) Presence.tuple_list p_tuple_list := { }, + in template (value) Presence.elem_list p_elem_list := { } + ) := { + entity := p_entity, + tuple_list := p_tuple_list, + note_list := { }, + elem_list := p_elem_list + + } // End of template m_presence + + template (omit) Tuple m_tuple( + in template (value) XSD.ID p_id, + in template (value) Status p_status, + in template (value) Tuple.elem_list p_elem_list := {}, + in template (value) Tuple.note_list p_note_list := { }, + in template (omit) urn_ietf_params_xml_ns_pidf.Contact p_contact := omit, + in template (omit) XSD.DateTime p_timestamp := omit + ) := { + id := p_id, + status := p_status, + elem_list := p_elem_list, + contact := p_contact, + note_list := p_note_list, + timestamp_ := p_timestamp + } // end of template m_tuple + + + template(present) Presence mw_Presence_Base( + template (present) Geopriv p_geopriv + ) modifies mw_Presence_Dummy := { + tuple_list := { + { + status := { + geopriv := p_geopriv + } + } + } + } + + + template(present) Presence mw_Presence_Dummy := { + entity := ?, + tuple_list := { + { + id := ?, + status := { + basic := *, + geopriv := ?, + elem_list := { * } + } , + elem_list := ?, + contact := *, + note_list := ?, + timestamp_ := * + } + }, + note_list := ?, + elem_list := ? + } + + } // End of group ng112_presence + + group dequeue_register { + + template (value) LibItsHttp_JsonMessageBodyTypes.JsonBody m_body_json_dequeue_registration_request( + in template (value) DequeueRegistrationRequest p_dequeue_registration_request + ) := { + dequeueRegistrationRequest := p_dequeue_registration_request + } // End of template m_dequeue_registration_request + + template (present) LibItsHttp_JsonMessageBodyTypes.JsonBody mw_body_json_dequeue_registration_request( + template (present) DequeueRegistrationRequest p_dequeue_registration_request := ? + ) := { + dequeueRegistrationRequest := p_dequeue_registration_request + } // End of template mw_dequeue_registration_request + + template (present) LibItsHttp_JsonMessageBodyTypes.JsonBody mw_body_json_dequeue_registration_response( + template (present) DequeueRegistrationResponse p_dequeue_registration_response := ? + ) := { + dequeueRegistrationResponse := p_dequeue_registration_response + } // End of template m_dequeue_registration_response + + template (omit) DequeueRegistrationRequest m_dequeue_registration_request( + in template (value) JSON.String p_DequeueRegistrationQueueUri, + in template (value) JSON.String p_DequeueRegistrationDequeuer, + in template (value) JSON.Integer p_DequeueRegistrationExpirationTime, + in template (omit) JSON.Integer p_DequeueRegistrationDequeuePreference := omit + ) := { + DequeueRegistrationQueueUri := p_DequeueRegistrationQueueUri, + DequeueRegistrationDequeuer := p_DequeueRegistrationDequeuer, + DequeueRegistrationExpirationTime := p_DequeueRegistrationExpirationTime, + DequeueRegistrationDequeuePreference := p_DequeueRegistrationDequeuePreference + } // End of template m_dequeue_registration_request + + template (present) DequeueRegistrationRequest mw_dequeue_registration_request( + template (present) JSON.String p_DequeueRegistrationQueueUri := ?, + template (present) JSON.String p_DequeueRegistrationDequeuer := ?, + template (present) JSON.Integer p_DequeueRegistrationExpirationTime := ?, + template JSON.Integer p_DequeueRegistrationDequeuePreference := * + ) := { + DequeueRegistrationQueueUri := p_DequeueRegistrationQueueUri, + DequeueRegistrationDequeuer := p_DequeueRegistrationDequeuer, + DequeueRegistrationExpirationTime := p_DequeueRegistrationExpirationTime, + DequeueRegistrationDequeuePreference := p_DequeueRegistrationDequeuePreference + } // End of template mw_dequeue_registration_request + + template (omit) DequeueRegistrationRequest m_dequeue_deregistration_request( + in template (value) JSON.String p_DequeueRegistrationQueueUri, + in template (value) JSON.String p_DequeueRegistrationDequeuer, + in template (omit) JSON.Integer p_DequeueRegistrationDequeuePreference := omit + ) := { + DequeueRegistrationQueueUri := p_DequeueRegistrationQueueUri, + DequeueRegistrationDequeuer := p_DequeueRegistrationDequeuer, + DequeueRegistrationExpirationTime := 0, + DequeueRegistrationDequeuePreference := p_DequeueRegistrationDequeuePreference + } // End of template m_dequeue_deregistration_request + + template (present) DequeueRegistrationRequest mw_dequeue_deregistration_request( + template (present) JSON.String p_DequeueRegistrationQueueUri := ?, + template (present) JSON.String p_DequeueRegistrationDequeuer := ?, + template JSON.Integer p_DequeueRegistrationDequeuePreference := * + ) := { + DequeueRegistrationQueueUri := p_DequeueRegistrationQueueUri, + DequeueRegistrationDequeuer := p_DequeueRegistrationDequeuer, + DequeueRegistrationExpirationTime := 0, + DequeueRegistrationDequeuePreference := p_DequeueRegistrationDequeuePreference + } // End of template mw_dequeue_registration_request + + template (value) DequeueRegistrationResponse m_dequeue_response_ok( + in template (value) JSON.Integer p_DequeueRegistrationExpirationTime + ) := { + DequeueRegistrationExpirationTime := p_DequeueRegistrationExpirationTime, + DequeueRegistrationStatusCode := 0 + + } // End of template m_dequeue_registration_request + + template (present) DequeueRegistrationResponse mw_dequeue_response_ok( + template (present) JSON.Integer p_DequeueRegistrationExpirationTime := ? + ) := { + DequeueRegistrationExpirationTime := p_DequeueRegistrationExpirationTime, + DequeueRegistrationStatusCode := ? + } // End of template mw_dequeue_registration_request + + template LibItsHttp_TypesAndValues.Response mw_http_response_456_bad_queue( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 456, + statustext := ? + } // End of template mw_http_response_456_bad_queue + + template LibItsHttp_TypesAndValues.Response mw_http_response_457_bad_dequeuePreference( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 457, + statustext := ? + } // End of template mw_http_response_457_bad_dequeuePreference + + } // End of group dequeue_register + + + group sip_subscribe { + template(value) Expires m_Expires_3600 modifies m_Expires_base := {deltaSec := "3600"} + + template(value) Expires m_Expires_0 modifies m_Expires_base := {deltaSec := "0"} + + + template(value) Event m_Event_elementState modifies m_Event_base := {eventType := "emergency-ElementState"} + template(value) Event m_Event_serviceState modifies m_Event_base := {eventType := "emergency-ServiceState"} + template(value) Event m_Event_securityPosture modifies m_Event_base := {eventType := "emergency-SecurityPosture"} + template(value) Event m_Event_queueState modifies m_Event_base := { eventType := "emergency-QueueState"} + + template (present) ElementStatePayload mw_element_state_payload( + template (present) charstring p_elementId := ?, + template (present) charstring p_state := pattern "normal|scheduledMaintenance|serviceDisruption|overloaded|goingDown|down", + template charstring p_reason := * + ) := { + elementState := { + elementId := p_elementId, + state := p_state, + reason := p_reason + } + } // End of template mw_element_state_payload + + + template (present) SecurityPosturePayload mw_security_posture( + template (present) charstring p_service_name := ?, + template (present) charstring p_service_domain := ?, + template (present) charstring p_posture := pattern "Green|Yellow|Orange|Red" + ) := { + service := { + name := p_service_name, + domain := p_service_domain + }, + securityPosture := p_posture + } + + + template (present) ServiceStatePayload mw_service_state_payload( + template (present) charstring p_service_name := ?, + template (present) charstring p_service_domain := ?, + template (present) charstring p_service_state := pattern "Normal|Unstaffed|ScheduledMaintenanceDown|ScheduledMaintenanceAvailable|MajorIncidentInProgress|Partial|Overloaded|GoingDown|Down", + template (present) charstring p_service_state_reason := ? + ) := { + service := { + name := p_service_name, + domain := p_service_domain + }, + serviceState := { + state := p_service_state, + reason := p_service_state_reason + } + } // End of template mw_service_state_payload + + + template (present) SecurityPosturePayload mw_security_posture_payload( + template (present) charstring p_service_name := ?, + template (present) charstring p_service_domain := ?, + template (present) charstring p_security_posture := pattern "green|yellow|orange|red" + ) := { + service := { + name := p_service_name, + domain := p_service_domain + }, + securityPosture := p_security_posture + } // End of template mw_security_posture_payload + + + template (present) QueueStatePayload mw_queue_state_payload( + template (present) QueueStateEventUri p_queue_uri := ?, + template (present) QueueStateEventQueueLength p_queue_length := ?, + template (present) QueueStateEventMaxLength p_queue_max := ?, + template (present) QueueStateValuesCode p_queue_code := ? + ) := { + QueueStateEventUri := p_queue_uri, + QueueStateEventQueueLength := p_queue_length, + QueueStateEventMaxLength := p_queue_max, + QueueStateValuesCode := p_queue_code + } // End of template mw_queue_state_payload + + + template(present) SUBSCRIBE_Request mw_SUBSCRIBE_QueueState_Request( + template(present) From p_from := ?, + template(present) To p_to := ? + ) modifies mw_SUBSCRIBE_Request_Base := { + requestLine := { + method := SUBSCRIBE_E + }, + msgHeader := { + fromField := p_from, + toField := p_to, + event := m_Event_queueState + } + } + + + + template(present) NOTIFY_Request mw_NOTIFY_Presence_Base( + template CallId p_callId + ) modifies mw_NOTIFY_Request_Base := { + msgHeader := { + contentType :={ + fieldName := CONTENT_TYPE_E, + mTypeSubtype := "application/pidf+xml" + } + } + } + + + template(present) NOTIFY_Request mw_NOTIFY_ElementState_Base( + template CallId p_callId + ) modifies mw_NOTIFY_Request_Base := { + msgHeader := { + contentType :={ + fieldName := CONTENT_TYPE_E, + mTypeSubtype := "application/emergencyCallData.ElementState+json" + } + } + } + + + template(present) NOTIFY_Request mw_NOTIFY_ServiceState_Base( + template CallId p_callId + ) modifies mw_NOTIFY_Request_Base := { + msgHeader := { + contentType :={ + fieldName := CONTENT_TYPE_E, + mTypeSubtype := "application/emergencyCallData.ServiceState+json" + } + } + } + + + template(present) NOTIFY_Request mw_NOTIFY_SecurityPosture_Base( + template CallId p_callId + ) modifies mw_NOTIFY_Request_Base := { + msgHeader := { + contentType :={ + fieldName := CONTENT_TYPE_E, + mTypeSubtype := "application/emergencyCallData.SecurityPosture+json" + } + } + } + + + template(value) SUBSCRIBE_Request m_SUBSCRIBE_Presence_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_presence, + expires := m_Expires_3600 + } + } + template(value) SUBSCRIBE_Request m_UNSUBSCRIBE_Presence_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_presence, + expires := m_Expires_0 + } + } + + template(value) SUBSCRIBE_Request m_SUBSCRIBE_ElementState_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_elementState, + expires := m_Expires_3600 + } + } + template(value) SUBSCRIBE_Request m_UNSUBSCRIBE_ElementState_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_elementState, + expires := m_Expires_0 + } + } + + template(value) SUBSCRIBE_Request m_SUBSCRIBE_ServiceState_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_serviceState, + expires := m_Expires_3600 + } + } + + template(value) SUBSCRIBE_Request m_UNSUBSCRIBE_ServiceState_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_serviceState, + expires := m_Expires_0 + } + } + + template(value) SUBSCRIBE_Request m_SUBSCRIBE_SecurityPosture_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_securityPosture, + expires := m_Expires_3600 + } + } + + template(value) SUBSCRIBE_Request m_UNSUBSCRIBE_SecurityPosture_Request_Event( + template(value) SipUrl p_requestUri, + template(value) CallId p_callId, + template(value) CSeq p_cSeq, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(omit) LibSip_SIPTypesAndValues.Contact p_contact := omit + ) modifies m_SUBSCRIBE_Request_IMS := { + msgHeader := { + event := m_Event_securityPosture, + expires := m_Expires_0 + } + } + + } + +} // End of module LibNg112_Templates diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn index fff4538a0e15eaccee9ef35922967e3ba43a5ca0..5c02eeaf459eec4aa32fc38940e608b3cc2ee4d3 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TestSystem.ttcn @@ -12,10 +12,14 @@ module LibNg112_TestSystem { // LibIms import from LibIms_Interface all; - type component HttpImsComponent extends ImsComponent, ServerSyncComp { - port HttpPort httpPort; + type component HttpImsComponent extends ImsComponent, HttpComponent, ServerSyncComp { + } // End of component HttpImsComponent + + type component HttpSipComponent extends ImsComponent, HttpComponent { + } + type component TestAdapter { port SipPort SIPP; port HttpPort httpPort; diff --git a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn index e3e07ec49c960b0c227522b7fd7622c3fb4d17a0..7e4f34cf474b81be29df6830f4478b327ca4030c 100644 --- a/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn +++ b/ttcn/LibEmcom/LibNg112/ttcn/LibNg112_TypesAndValues.ttcn @@ -1,8 +1,6 @@ -module LibNg112_TypesAndValues { - - /** - * @desc List of device URIs - */ - type record of charstring DeviceURIs; - -} // End of module LibNg112_TypesAndValues +module LibNg112_TypesAndValues { + + // LibCommon + import from LibCommon_BasicTypesAndValues all; + +} // End of module LibNg112_TypesAndValues diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn index cf652849b9e3ac9b690b76f3cc688b9d57776885..22b1707a183851943f9e1596b84e7e746d21f89f 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_geopriv_held.ttcn @@ -41,6 +41,7 @@ import from XSD all; import from http_www_w3_org_XML_1998_namespace all; +import from urn_ietf_params_xml_ns_pidf all; const XSD.Boolean c_defaultForEmpty_1 := false; @@ -190,10 +191,12 @@ with { type record LocationResponseType { ReturnLocationType locationUriSet optional, + Presence presence optional, record of XSD.String elem_list } with { variant "name as uncapitalized"; + variant (presence) "namespace as 'urn:ietf:params:xml:ns:pidf'"; variant (elem_list) "untagged"; variant (elem_list[-]) "anyElement except unqualified"; // , 'urn:ietf:params:xml:ns:geopriv:held' }; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn index 571ad5867f4c65e05f43f02c834a21b6474d8f43..73d149a431359e0503ff3c607ff21ee44bb3da61 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_lost1.ttcn @@ -671,7 +671,7 @@ with { }; -type record of XSD.AnyURI ServiceList +type set of XSD.AnyURI ServiceList with { variant "name as uncapitalized"; variant "list"; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn index 33fc0111fff5d9deb5810456c1b6011e717a0ed2..916fdca0cf96cb9ab5c0cf7ae745b32ee541012a 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf.ttcn @@ -38,6 +38,7 @@ module urn_ietf_params_xml_ns_pidf { import from XSD all; +import from urn_ietf_params_xml_ns_pidf_geopriv10 all; import from http_www_w3_org_XML_1998_namespace all; @@ -96,10 +97,12 @@ with { type record Status { Basic basic optional, + Geopriv_1 geopriv, record of XSD.String elem_list } with { - variant "name as uncapitalized"; + variant "name as uncapitalized"; + variant (geopriv) "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10'" variant (elem_list) "untagged"; variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf'"; }; diff --git a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn index fda41fef5c5079cb7e3f269ff49144e425e7dde1..55ffeb42e46d1bc912b9d6338630b44604e191e8 100644 --- a/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn +++ b/ttcn/LibEmcom/LibNg112/xsd/urn_ietf_params_xml_ns_pidf_geopriv10.ttcn @@ -40,10 +40,12 @@ import from XSD all; import from urn_ietf_params_xml_ns_pidf_geopriv10_basicPolicy all; - +import from urn_ietf_params_xml_ns_pidf_geopriv10_civicAddr all; import from http_www_w3_org_XML_1998_namespace all; +import from http_www_opengis_net_gml all; +import from http_www_opengis_net_pidflo_1_0 all; /* This import brings in the XML language attribute xml:lang */ @@ -72,15 +74,19 @@ with { variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; }; - -type record LocInfoType +type union LocInfoType { - record of XSD.String elem_list + PointType point, + CircleType circle, + CivicAddress civic } -with { - variant "name as uncapitalized"; - variant (elem_list) "untagged"; - variant (elem_list[-]) "anyElement except unqualified, 'urn:ietf:params:xml:ns:pidf:geopriv10'"; +with { + variant (point) "name as 'Point'"; + variant (point) "namespace as 'http://www.opengis.net/gml'"; + variant (circle) "name as 'Circle'"; + variant (circle) "namespace as 'http://www.opengis.net/pidflo/1.0'"; + variant (civic) "namespace as 'urn:ietf:params:xml:ns:pidf:geopriv10:civicAddr'"; + variant (civic) "name as 'civicAddress'"; }; diff --git a/ttcn/LibIts b/ttcn/LibIts index 48de6746bf1a47fa2bc1f9f19715210e2930a41b..8cc82f9090a74ea159ee1da9f26c3b94de153f3b 160000 --- a/ttcn/LibIts +++ b/ttcn/LibIts @@ -1 +1 @@ -Subproject commit 48de6746bf1a47fa2bc1f9f19715210e2930a41b +Subproject commit 8cc82f9090a74ea159ee1da9f26c3b94de153f3b diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module.mk b/ttcn/modules/titan.TestPorts.HTTPmsg/module.mk deleted file mode 100644 index f8df57abc8b77d674486cea82c53e0f4615625f0..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module.mk +++ /dev/null @@ -1,9 +0,0 @@ -sources := module/src/HTTPmsg_MessageLen.ttcn \ - module/src/HTTPmsg_MessageLen_Function.cc \ - module/src/HTTPmsg_PortType.ttcn \ - module/src/HTTPmsg_PT.cc \ - module/src/HTTPmsg_PT.hh \ - module/src/HTTPmsg_Types.ttcn -includes := module/src - -modules := ../titan.TestPorts.Common_Components.Abstract_Socket diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/HTTPmsg_CNL113312.tpd b/ttcn/modules/titan.TestPorts.HTTPmsg/module/HTTPmsg_CNL113312.tpd deleted file mode 100644 index 032494ea30e4adc62be9c9ca3ad6484757637a1c..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/HTTPmsg_CNL113312.tpd +++ /dev/null @@ -1,50 +0,0 @@ - - - - HTTPmsg_CNL113312 - - - - - - - - - - - - - - - Default - - - - - true - true - true - bin/HTTPmsg_CNL113312 - Level 3 - Creating object files with dependency update - - - bin - - - - - diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/LICENSE b/ttcn/modules/titan.TestPorts.HTTPmsg/module/LICENSE deleted file mode 100644 index 3534f2ff9d512c471aab17543d08c32a1110b32d..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/LICENSE +++ /dev/null @@ -1,277 +0,0 @@ -Eclipse Public License - v 2.0 - - THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE - PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION - OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. - -1. DEFINITIONS - -"Contribution" means: - - a) in the case of the initial Contributor, the initial content - Distributed under this Agreement, and - - b) in the case of each subsequent Contributor: - i) changes to the Program, and - ii) additions to the Program; - where such changes and/or additions to the Program originate from - and are Distributed by that particular Contributor. A Contribution - "originates" from a Contributor if it was added to the Program by - such Contributor itself or anyone acting on such Contributor's behalf. - Contributions do not include changes or additions to the Program that - are not Modified Works. - -"Contributor" means any person or entity that Distributes the Program. - -"Licensed Patents" mean patent claims licensable by a Contributor which -are necessarily infringed by the use or sale of its Contribution alone -or when combined with the Program. - -"Program" means the Contributions Distributed in accordance with this -Agreement. - -"Recipient" means anyone who receives the Program under this Agreement -or any Secondary License (as applicable), including Contributors. - -"Derivative Works" shall mean any work, whether in Source Code or other -form, that is based on (or derived from) the Program and for which the -editorial revisions, annotations, elaborations, or other modifications -represent, as a whole, an original work of authorship. - -"Modified Works" shall mean any work in Source Code or other form that -results from an addition to, deletion from, or modification of the -contents of the Program, including, for purposes of clarity any new file -in Source Code form that contains any contents of the Program. Modified -Works shall not include works that contain only declarations, -interfaces, types, classes, structures, or files of the Program solely -in each case in order to link to, bind by name, or subclass the Program -or Modified Works thereof. - -"Distribute" means the acts of a) distributing or b) making available -in any manner that enables the transfer of a copy. - -"Source Code" means the form of a Program preferred for making -modifications, including but not limited to software source code, -documentation source, and configuration files. - -"Secondary License" means either the GNU General Public License, -Version 2.0, or any later versions of that license, including any -exceptions or additional permissions as identified by the initial -Contributor. - -2. GRANT OF RIGHTS - - a) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free copyright - license to reproduce, prepare Derivative Works of, publicly display, - publicly perform, Distribute and sublicense the Contribution of such - Contributor, if any, and such Derivative Works. - - b) Subject to the terms of this Agreement, each Contributor hereby - grants Recipient a non-exclusive, worldwide, royalty-free patent - license under Licensed Patents to make, use, sell, offer to sell, - import and otherwise transfer the Contribution of such Contributor, - if any, in Source Code or other form. This patent license shall - apply to the combination of the Contribution and the Program if, at - the time the Contribution is added by the Contributor, such addition - of the Contribution causes such combination to be covered by the - Licensed Patents. The patent license shall not apply to any other - combinations which include the Contribution. No hardware per se is - licensed hereunder. - - c) Recipient understands that although each Contributor grants the - licenses to its Contributions set forth herein, no assurances are - provided by any Contributor that the Program does not infringe the - patent or other intellectual property rights of any other entity. - Each Contributor disclaims any liability to Recipient for claims - brought by any other entity based on infringement of intellectual - property rights or otherwise. As a condition to exercising the - rights and licenses granted hereunder, each Recipient hereby - assumes sole responsibility to secure any other intellectual - property rights needed, if any. For example, if a third party - patent license is required to allow Recipient to Distribute the - Program, it is Recipient's responsibility to acquire that license - before distributing the Program. - - d) Each Contributor represents that to its knowledge it has - sufficient copyright rights in its Contribution, if any, to grant - the copyright license set forth in this Agreement. - - e) Notwithstanding the terms of any Secondary License, no - Contributor makes additional grants to any Recipient (other than - those set forth in this Agreement) as a result of such Recipient's - receipt of the Program under the terms of a Secondary License - (if permitted under the terms of Section 3). - -3. REQUIREMENTS - -3.1 If a Contributor Distributes the Program in any form, then: - - a) the Program must also be made available as Source Code, in - accordance with section 3.2, and the Contributor must accompany - the Program with a statement that the Source Code for the Program - is available under this Agreement, and informs Recipients how to - obtain it in a reasonable manner on or through a medium customarily - used for software exchange; and - - b) the Contributor may Distribute the Program under a license - different than this Agreement, provided that such license: - i) effectively disclaims on behalf of all other Contributors all - warranties and conditions, express and implied, including - warranties or conditions of title and non-infringement, and - implied warranties or conditions of merchantability and fitness - for a particular purpose; - - ii) effectively excludes on behalf of all other Contributors all - liability for damages, including direct, indirect, special, - incidental and consequential damages, such as lost profits; - - iii) does not attempt to limit or alter the recipients' rights - in the Source Code under section 3.2; and - - iv) requires any subsequent distribution of the Program by any - party to be under a license that satisfies the requirements - of this section 3. - -3.2 When the Program is Distributed as Source Code: - - a) it must be made available under this Agreement, or if the - Program (i) is combined with other material in a separate file or - files made available under a Secondary License, and (ii) the initial - Contributor attached to the Source Code the notice described in - Exhibit A of this Agreement, then the Program may be made available - under the terms of such Secondary Licenses, and - - b) a copy of this Agreement must be included with each copy of - the Program. - -3.3 Contributors may not remove or alter any copyright, patent, -trademark, attribution notices, disclaimers of warranty, or limitations -of liability ("notices") contained within the Program from any copy of -the Program which they Distribute, provided that Contributors may add -their own appropriate notices. - -4. COMMERCIAL DISTRIBUTION - -Commercial distributors of software may accept certain responsibilities -with respect to end users, business partners and the like. While this -license is intended to facilitate the commercial use of the Program, -the Contributor who includes the Program in a commercial product -offering should do so in a manner which does not create potential -liability for other Contributors. Therefore, if a Contributor includes -the Program in a commercial product offering, such Contributor -("Commercial Contributor") hereby agrees to defend and indemnify every -other Contributor ("Indemnified Contributor") against any losses, -damages and costs (collectively "Losses") arising from claims, lawsuits -and other legal actions brought by a third party against the Indemnified -Contributor to the extent caused by the acts or omissions of such -Commercial Contributor in connection with its distribution of the Program -in a commercial product offering. The obligations in this section do not -apply to any claims or Losses relating to any actual or alleged -intellectual property infringement. In order to qualify, an Indemnified -Contributor must: a) promptly notify the Commercial Contributor in -writing of such claim, and b) allow the Commercial Contributor to control, -and cooperate with the Commercial Contributor in, the defense and any -related settlement negotiations. The Indemnified Contributor may -participate in any such claim at its own expense. - -For example, a Contributor might include the Program in a commercial -product offering, Product X. That Contributor is then a Commercial -Contributor. If that Commercial Contributor then makes performance -claims, or offers warranties related to Product X, those performance -claims and warranties are such Commercial Contributor's responsibility -alone. Under this section, the Commercial Contributor would have to -defend claims against the other Contributors related to those performance -claims and warranties, and if a court requires any other Contributor to -pay any damages as a result, the Commercial Contributor must pay -those damages. - -5. NO WARRANTY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT -PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS" -BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR -IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF -TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR -PURPOSE. Each Recipient is solely responsible for determining the -appropriateness of using and distributing the Program and assumes all -risks associated with its exercise of rights under this Agreement, -including but not limited to the risks and costs of program errors, -compliance with applicable laws, damage to or loss of data, programs -or equipment, and unavailability or interruption of operations. - -6. DISCLAIMER OF LIABILITY - -EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT -PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS -SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST -PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE -EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - -7. GENERAL - -If any provision of this Agreement is invalid or unenforceable under -applicable law, it shall not affect the validity or enforceability of -the remainder of the terms of this Agreement, and without further -action by the parties hereto, such provision shall be reformed to the -minimum extent necessary to make such provision valid and enforceable. - -If Recipient institutes patent litigation against any entity -(including a cross-claim or counterclaim in a lawsuit) alleging that the -Program itself (excluding combinations of the Program with other software -or hardware) infringes such Recipient's patent(s), then such Recipient's -rights granted under Section 2(b) shall terminate as of the date such -litigation is filed. - -All Recipient's rights under this Agreement shall terminate if it -fails to comply with any of the material terms or conditions of this -Agreement and does not cure such failure in a reasonable period of -time after becoming aware of such noncompliance. If all Recipient's -rights under this Agreement terminate, Recipient agrees to cease use -and distribution of the Program as soon as reasonably practicable. -However, Recipient's obligations under this Agreement and any licenses -granted by Recipient relating to the Program shall continue and survive. - -Everyone is permitted to copy and distribute copies of this Agreement, -but in order to avoid inconsistency the Agreement is copyrighted and -may only be modified in the following manner. The Agreement Steward -reserves the right to publish new versions (including revisions) of -this Agreement from time to time. No one other than the Agreement -Steward has the right to modify this Agreement. The Eclipse Foundation -is the initial Agreement Steward. The Eclipse Foundation may assign the -responsibility to serve as the Agreement Steward to a suitable separate -entity. Each new version of the Agreement will be given a distinguishing -version number. The Program (including Contributions) may always be -Distributed subject to the version of the Agreement under which it was -received. In addition, after a new version of the Agreement is published, -Contributor may elect to Distribute the Program (including its -Contributions) under the new version. - -Except as expressly stated in Sections 2(a) and 2(b) above, Recipient -receives no rights or licenses to the intellectual property of any -Contributor under this Agreement, whether expressly, by implication, -estoppel or otherwise. All rights in the Program not expressly granted -under this Agreement are reserved. Nothing in this Agreement is intended -to be enforceable by any entity that is not a Contributor or Recipient. -No third-party beneficiary rights are created under this Agreement. - -Exhibit A - Form of Secondary Licenses Notice - -"This Source Code may also be made available under the following -Secondary Licenses when the conditions for such availability set forth -in the Eclipse Public License, v. 2.0 are satisfied: {name license(s), -version(s), and exceptions or additional permissions here}." - - Simply including a copy of this Agreement, including this Exhibit A - is not sufficient to license the Source Code under Secondary Licenses. - - If it is not possible or desirable to put the notice in a particular - file, then You may include the notice in a location (such as a LICENSE - file in a relevant directory) where a recipient would be likely to - look for such a notice. - - You may add additional accurate notices of copyright ownership. \ No newline at end of file diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/README.md b/ttcn/modules/titan.TestPorts.HTTPmsg/module/README.md deleted file mode 100644 index ecff83ef8a40bc392ea037cf63f28447b50476e1..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# titan.TestPorts.HTTPmsg - -Main project page: - -https://projects.eclipse.org/projects/tools.titan - -The source code of the TTCN-3 compiler and executor: - -https://github.com/eclipse/titan.core diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test.cfg b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test.cfg deleted file mode 100644 index 0ae719448171cd80bb150e3955ebf460d8c089bf..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test.cfg +++ /dev/null @@ -1,34 +0,0 @@ -[LOGGING] -FileMask := LOG_ALL | TTCN_MATCHING | TTCN_DEBUG -ConsoleMask := TTCN_PORTEVENT | TTCN_DEBUG -SourceInfoFormat := Single - -[MODULE_PARAMETERS] -HTTP_Test_no_ASPs.HttpServerHostName := "localhost" -HTTP_Test_no_ASPs.HttpServerPort := 1025 -HTTP_Test_no_ASPs.HTTPClientUseSSL := false -HTTP_Test_no_ASPs.HttpServerListenPort := 1025 -HTTP_Test_no_ASPs.HttpServerUseSSL := false - -[TESTPORT_PARAMETERS] -#system.HTTP_client_port.VERIFYCERTIFICATE := "no" -#system.HTTP_client_port.TRUSTEDCALIST_FILE := "certificates/CAcert.pem" -system.HTTP_client_port.http_debugging := "yes" -system.HTTP_client_port.use_notification_ASPs := "no" -system.HTTP_server_port.use_notification_ASPs := "no" -system.HTTP_server_port.KEYFILE := "/mnt/unix/vobs/ttcn/TCC_Common/TestPorts/HTTPmsg_CNL113312/demo/server.key" -system.HTTP_server_port.CERTIFICATEFILE := "/mnt/unix/vobs/ttcn/TCC_Common/TestPorts/HTTPmsg_CNL113312/demo/server.crt" -system.HTTP_server_port.PASSWORD := "katinka1" -system.HTTP_server_port.TRUSTEDCALIST_FILE := "certificates/CAcert.pem" -system.HTTP_server_port.http_debugging := "yes" - -[MAIN_CONTROLLER] -KillTimer := 1 -TCPPort := 9036 - -[EXECUTE] -#HTTP_Test_no_ASPs.parallel_TC_client -#HTTP_Test_no_ASPs.stress_TC_Persistent_both -#HTTP_Test_no_ASPs.tc_http_encDec -HTTP_Test_no_ASPs.tc_http_encDec2 -//saved by GUI diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test_no_ASPs.ttcn b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test_no_ASPs.ttcn deleted file mode 100644 index 3d69543f9bc991777c5fae144ea98844022e8319..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_Test_no_ASPs.ttcn +++ /dev/null @@ -1,409 +0,0 @@ -// -// File: HTTP_Test_no_ASPs -// Description: To demonstrate how to use the test port -// Rev: R8C -// Prodnr: CNL 113 469 -// Updated: 2007-11-09 -// Contact: http://ttcn.ericsson.se -// Author: ETH/RZX Eduard Czimbalmos -module HTTP_Test_no_ASPs { - -modulepar { - charstring HttpServerHostName := "www.eth.ericsson.se"; - integer HttpServerPort := 80; - boolean HTTPClientUseSSL := false; - integer HttpServerListenPort := 1026; - boolean HttpServerUseSSL := false -} - -import from HTTPmsg_Types all; -import from HTTPmsg_PortType all; - -type component MTC {}; - -type component HTTP_client { - port HTTPmsg_PT HTTP_client_port; -}; - -type component HTTP_server { - port HTTPmsg_PT HTTP_server_port; -}; - -//========================================================================= -// Data Types -//========================================================================= - -type record of charstring CHARSTRINGS; -type record of octetstring OCTETSTRINGS; - -type record of HTTP_client ptcList; - - -template Half_close h := { client_id := ? }; -template HTTPMessage recv_resp := { response := ? }; -template HTTPMessage recv_req := { request := ? }; -template HTTPMessage recv_err := { erronous_msg := ? }; - -function TC() runs on HTTP_client -{ -/* var HeaderLines hd := { {header_name := "Host", header_value := HttpServerHostName}, - {header_name := "Connection", header_value := "close" } }; - var HTTPRequest r := { method := "GET", uri := "/x1.xml", - version_major := 1, version_minor := 1, header := hd, body := omit };*/ - var HeaderLines hd := { {header_name := "Content-Type", header_value := "text/xml"}, - {header_name := "Content-Length", header_value := "508" }, - {header_name := "Expires", header_value := "Sat, 01 Jan 2000 00:00:00 GMT" }, - {header_name := "Pragma", header_value := "no-cache" } }; - var HTTPRequest r := { client_id := omit, method := "POS T", uri := "/", - version_major := 1, version_minor := 0, header := hd, body := "clientPushclientPush+0100N100410E0202020N101610E0202620N101610E0201420" }; - var HTTPMessage send_req := { request := r }; - var Connect conn := { hostname := HttpServerHostName, - portnumber := HttpServerPort, use_ssl := HTTPClientUseSSL }; - var Close c := { client_id := omit }; - - map(self:HTTP_client_port, system:HTTP_client_port); - - var boolean conn_ok := false; - while(conn_ok == false) - { - timer t_connect := 2.0; - t_connect.start; - HTTP_client_port.send(conn); - alt { - [] HTTP_client_port.receive(recv_err) { - timer t_wait := 2.0; - t_wait.start; - t_wait.timeout; } - [] t_connect.timeout { - conn_ok := true; - log("connection to server ok"); } - } - } // endwhile - - timer T_guard := 5.0; - T_guard.start; - HTTP_client_port.send(send_req); - - alt { - [] HTTP_client_port.receive(h) { - HTTP_client_port.send(c); - setverdict(fail); } - [] HTTP_client_port.receive(recv_resp) { - timer t := 10.0; - t.start; - alt { - [] HTTP_client_port.receive(h) { - HTTP_client_port.send(c); - t.stop; - setverdict(pass); } - [] t.timeout { - HTTP_client_port.send(c); - t.stop; - setverdict(fail); } - }; - } - [] HTTP_client_port.receive { - HTTP_client_port.send(c); - setverdict(fail); - } - [] T_guard.timeout { - setverdict(fail); } - }; - - unmap(self:HTTP_client_port, system:HTTP_client_port); -} - -function server_TC() runs on HTTP_server -{ - var Listen listen := { local_hostname := omit, portnumber := HttpServerListenPort, use_ssl := HttpServerUseSSL }; - var HTTPResponse resp := { client_id := omit, version_major := 1, version_minor := 1, statuscode := 200, statustext := "OK", - header := { { header_name := "Server", header_value := "TTCN Test Suite simulated HTTP/1.1 server" }, - { header_name := "Content-Length", header_value := "643" } }, - body := "\n\n\n\n+0100\n\n\n\n\n\nN301628\nW974425\n\n1100\n1650\n120\n240\n\n\n\n\n\n\n\n\nN301630\nW974450\n\n0\n1650\n 120 \n240\n\n\n\n\n\n\n" }; - var HTTPMessage send_resp := { response := resp }; - var Close c := { client_id := omit }; - - map(self:HTTP_server_port, system:HTTP_server_port); - - HTTP_server_port.send(listen); - - timer T_guard := 500.0; - T_guard.start; - var boolean ready := false; - - while(ready == false) { - alt { - [] HTTP_server_port.receive(recv_req) { - HTTP_server_port.send(send_resp); - } - [] HTTP_server_port.receive(h) { - HTTP_server_port.send(c); - ready := true; - setverdict(pass); - } - [] T_guard.timeout { - setverdict(fail); - } - }; - } - - unmap(self:HTTP_server_port, system:HTTP_server_port); -} - -//==== Encode decode test ==== - -function f_singleEncDecCheck( in HTTPMessage p_msg) -{ - var template HTTPMessage tr_expectedMsg := p_msg; - if(ischosen( p_msg.request ) ){ - tr_expectedMsg.request.client_id := *; - } - else if(ischosen( p_msg.response )){ - tr_expectedMsg.response.client_id := *; - } - - var octetstring vloc_encodedMsg; - log("Original message:",p_msg); - log("\n======================\n"); - vloc_encodedMsg := enc_HTTPMessage(p_msg); - log("Encoded message:",vloc_encodedMsg); - - //==== Request decoding ==== - var HTTPMessage vloc_decodedMsg; - var integer vl_lengthOfRemainingMsg := dec_HTTPMessage( vloc_encodedMsg, vloc_decodedMsg ); //socket debugging has default value - log("length of the encoded msg: ", lengthof(vloc_encodedMsg)); - log("length of the remaining msg after encoding:", vl_lengthOfRemainingMsg); - if( vl_lengthOfRemainingMsgclientPushclientPush+0100N100410E0202020N101610E0202620N101610E0201420xy" }; //xy will be fragmented????? - - var HTTPMessage send_req := { request := r }; - f_singleEncDecCheck( send_req ); - - //==== Response Test ==== - var HTTPResponse resp := { client_id := omit, version_major := 1, version_minor := 1, statuscode := 200, statustext := "OK", - header := { { header_name := "Server", header_value := "TTCN Test Suite simulated HTTP/1.1 server" }, - { header_name := "Content-Length", header_value := "643" } }, - body := "\n\n\n\n+0100\n\n\n\n\n\nN301628\nW974425\n\n1100\n1650\n120\n240\n\n\n\n\n\n\n\n\nN301630\nW974450\n\n0\n1650\n 120 \n240\n\n\n\n\n\n\n" }; - var HTTPMessage send_resp := { response := resp }; - - f_singleEncDecCheck( send_resp ); - - -}//f_EncDec - - -function f_EncDec2() runs on MTC { - - var CHARSTRINGS test_msgs := { - "HTTP/1.1 302 Moved Temporarily\r\nDate: Wed, 22 Feb 2006 13:37:49 GMT\r\nPragma: no-cache\r\nLocation: http://caylem.etm.ericsson.se:7001/McxOwu/list_useractions.jsp?reload\r\nContent-Type: text/html\r\nExpires: Sat, 6 May 1995 12:00:00 GMT\r\nTransfer-Encoding: chunked\r\nCache-Control: no-store, no-cache, must-revalidate\r\nCache-Control: post-check=0, pre-check=0\r\n\r\n014d\r\n302 Moved Temporarily\r\n\r\n

This document you requested has moved temporarily.

\r\n

It's now at http://caylem.etm.ericsson.se:7001/McxOwu/list_useractions.jsp?reload.

\r\n\r\n\r\n0000\r\n\r\n", - "HTTP/1.1 200 OK\r\nDate: Wed, 22 Feb 2006 13:37:49 GMT\r\nContent-Type: text/html\r\nTransfer-Encoding: chunked\r\n\r\n0fe8\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nPresence\r\n\r\n\r\n\r\n\r\n\r\n0fe8\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n Sambal Bij (1100)\r\n\r\n \r\n \r\n \r\n Reset user settings\r\n \r\n \r\n \r\n Log out\r\n \r\n

\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Presence\r\n \r\n\r\n Left for the day\r\n\r\n\r\n

\r\n \r\n\r\n" & - "
Predefined options\r\n \r\n\r\n
\r\n \r\n Change to Available\r\n \r\n
\r\n\r\n
\r\n \r\n Change to Busy\r\n \r\n
\r\n\r\n
\r\n \r\n Change to Meeting\r\n \r\n
\r\n\r\n
\r\n \r\n Change to Lunch\r\n \r\n
\r\n\r\n
\r\n \r\n Change to Left for the day\r\n \r\n
\r\n\r\n


\r\n \r\n
More options...\r\n \r\n \r\n   \r\n Change now\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n\r\n
Back \r\n (MM/dd/yyyy)\r\n \r\n (HH:mm)\r\n \r\n
Message\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n \r\n \r\n
Deflect call\r\n \r\n \r\n

\r\n
  Main number\r\n
  Voicemail\r\n
  Phone\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n\r\n
\r\n
\r\n \r\n \r\n
Activate/deactivate
Call distribution groups\r\n
\r\n

\r\n
Not member of any call distribution group\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n\r\n\r\n\r\n0000\r\n\r\n" - }; - - var HTTPResponse resp := { client_id := omit, version_major := 1, version_minor := 1, statuscode := 200, statustext := "OK", - header := { { header_name := "Server", header_value := "TTCN Test Suite simulated HTTP/1.1 server" }, - { header_name := "Content-Length", header_value := int2str(lengthof(test_msgs[0])+ lengthof(test_msgs[1])) } }, - body := test_msgs[0] & test_msgs[1] }; - var HTTPMessage send_resp := { response := resp }; - - f_singleEncDecCheck( send_resp ); - - var octetstring received_reply := '485454502F312E3120333032204D6F7665642054656D706F726172696C790D0A446174653A205765642C2032322046656220323030362031333A33373A343920474D540D0A507261676D613A206E6F2D63616368650D0A4C6F636174696F6E3A20687474703A2F2F6361796C656D2E65746D2E6572696373736F6E2E73653A373030312F4D63784F77752F6C6973745F75736572616374696F6E732E6A73703F72656C6F61640D0A436F6E74656E742D547970653A20746578742F68746D6C0D0A457870697265733A205361742C2036204D617920313939352031323A30303A303020474D540D0A5472616E736665722D456E636F64696E673A206368756E6B65640D0A43616368652D436F6E74726F6C3A206E6F2D73746F72652C206E6F2D63616368652C206D7573742D726576616C69646174650D0A43616368652D436F6E74726F6C3A20706F73742D636865636B3D302C207072652D636865636B3D300D0A0D0A3C68746D6C3E3C686561643E3C7469746C653E333032204D6F7665642054656D706F726172696C793C2F7469746C653E3C2F686561643E0D0A3C626F6479206267636F6C6F723D2223464646464646223E0D0A3C703E5468697320646F63756D656E7420796F752072657175657374656420686173206D6F7665642074656D706F726172696C792E3C2F703E0D0A3C703E49742773206E6F77206174203C6120687265663D22687474703A2F2F6361796C656D2E65746D2E6572696373736F6E2E73653A373030312F4D63784F77752F6C6973745F75736572616374696F6E732E6A73703F72656C6F6164223E687474703A2F2F6361796C656D2E65746D2E6572696373736F6E2E73653A373030312F4D63784F77752F6C6973745F75736572616374696F6E732E6A73703F72656C6F61643C2F613E2E3C2F703E0D0A3C2F626F64793E3C2F68746D6C3E0D0A485454502F312E3120323030204F4B0D0A446174653A205765642C2032322046656220323030362031333A33373A343920474D540D0A436F6E74656E742D547970653A20746578742F68746D6C0D0A5472616E736665722D456E636F64696E673A206368756E6B65640D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A0D0A3C21444F43545950452048544D4C205055424C494320222D2F2F5733432F2F4454442048544D4C20342E3031205472616E736974696F6E616C2F2F454E223E0D0A0D0A3C68746D6C3E0D0A3C686561643E0D0A3C7469746C653E50726573656E63653C2F7469746C653E0D0A0D0A3C7363726970743E0D0A766172206672616D6573657432203D206E756C6C3B0D0A766172206672616D6573657431203D206E756C6C3B0D0A0D0A7661722077696E57203D203633302C2077696E48203D203436303B0D0A0D0A66756E6374696F6E2067657457696E53697A652829207B0D0A09696620287061727365496E74286E6176696761746F722E61707056657273696F6E293E3329207B0D0A0920696620286E6176696761746F722E6170704E616D653D3D224E657473636170652229207B0D0A09202077696E57203D2077696E646F772E696E6E657257696474683B0D0A09202077696E48203D2077696E646F772E696E6E65724865696768743B0D0A09207D0D0A0920696620286E6176696761746F722E6170704E616D652E696E6465784F6628224D6963726F736F66742229213D2D3129207B0D0A09202077696E57203D20646F63756D656E742E626F64792E6F666673657457696474683B0D0A09202077696E48203D20646F63756D656E742E626F64792E6F66667365744865696768743B0D0A09207D0D0A097D0D0A092F2F616C657274282277696E573D22202B2077696E57202B20222077696E483D22202B2077696E48293B0D0A7D0D0A7661722063757272526F77203D206E756C6C3B0D0A66756E6374696F6E2074725F6D6F7573656F76657228726F7729207B0D0A096966202821726F7729207B0D0A0909726F77203D20676574726F772877696E646F772E6576656E742E737263456C656D656E74293B0D0A09096966202821726F772972657475726E3B0D0A097D0D0A0969662028726F772E7374796C652E6261636B67726F756E64436F6C6F72203D3D20222229207B0D0A0909726F772E7374796C652E6261636B67726F756E64436F6C6F72203D20226C6967687467726579223B0D0A097D0D0A7D0D0A0D0A66756E6374696F6E2074725F6D6F7573656F757428726F7729207B0D0A096966202821726F7729207B0D0A0909726F77203D20676574726F772877696E646F772E6576656E742E737263456C656D656E74293B0D0A09096966202821726F772972657475726E3B0D0A097D0D0A0969662028726F772E7374796C652E6261636B67726F756E64436F6C6F72203D3D20226C69676874677265792229207B0D0A0909726F772E7374796C652E6261636B67726F756E64436F6C6F723D2022223B0D0A097D0D0A7D0D0A0D0A66756E6374696F6E20676574726F77286F626A290D0A7B0D0A097768696C65286F626A202626206F626A2E7461674E616D6520213D202254522229206F626A203D206F626A2E706172656E744E6F64653B0D0A0972657475726E206F626A3B0D0A7D0D0A2F2F2052656D6F7665206C656164696E6720616E6420747261696C696E672077686974652073706163650D0A66756E6374696F6E207472696D2874787429207B090D0A092F2F616C65727428227472696D3D22202B20747874293B0D0A090D0A09747279207B0D0A090972657475726E207478742E7265706C616365282F285E202B297C28202B24297C2809292F672C2222293B0D0A097D20636174636820286529207B0D0A09097661722078203D206E657720537472696E6728747874293B0D0A0909092F2F616C6572742822783D22202B2078293B0D0A09097768696C652028782E636861724174283029203D3D2022202229207B0D0A09090978203D20782E737562737472696E672831293B0D0A09090969662028782E6C656E677468203D3D2030292072657475726E2022223B0D0A0909092F2F616C6572742822783D22202B2078293B0D0A09097D0D0A090969662028782E6C656E677468203D3D2030292072657475726E2022223B0D0A09097768696C652028782E63686172417428782E6C656E677468202D203129203D3D2022202229207B0D0A09090978203D20782E737562737472696E6728302C20782E6C656E6774682D31293B0D0A09090969662028782E6C656E677468203D3D2030292072657475726E2022223B0D0A09097D0D0A090D0A090972657475726E20783B090D0A09090D0A090D0A097D0D0A0D0A7D0D0A0D0A66756E6374696F6E206E6F74796574696D706C656D656E74656428290D0A7B0D0A09616C65727428226E6F742079657420696D706C656D656E74656422293B0D0A7D0D0A0D0A66756E6374696F6E206C6F676F757428290D0A7B0D0A09746F702E6672616D65735B225F6F77755F68696464656E225D2E6C6F636174696F6E2E61737369676E282268696464656E5F6C6F676F75742E6A737022293B0D0A2F2F0977696E646F772E706172656E742E6672616D65735B225F6F77755F68696464656E225D2E6C6F636174696F6E2E61737369676E282268696464656E5F6C6F676F75742E6A737022293B0D0A7D0D0A66756E6374696F6E20646F7265667265736828290D0A7B0D0A09747279207B0D0A0909746F702E6672616D65735B225F6F77755F73696465626172225D2E6C6F636174696F6E203D202250726570617265536964656261723F6E6F73656C656374223B0D0A097D20636174636820286529207B0D0A0909616C65727428226661696C656420746F2072656C6F6164206672616D657322202B20652E746F537472696E672829293B0D0A097D0D0A7D0D0A0D0A66756E6374696F6E204E756D6265724368616E676564286F626A29207B0D0A0D0A097661722076616C203D206F626A2E76616C75653B0D0A09766172206C656164696E67706C7573203D2066616C73653B0D0A096966202876616C2E736561726368282F5E5C2B2F29203D3D203029207B0D0A09096C656164696E67706C7573203D20747275653B0D0A090976616C20203D2076616C2E737562737472696E672831293B0D0A097D0D0A096966202876616C2E736561726368282F5B5E302D395D2F29203E3D203029207B200D0A09092F2F616C6572742822476976652061206E756D62657222293B0D0A090976616C203D2076616C2E7265706C616365282F5B5E302D395D2F672C202222293B0D0A0909696620286C656164696E67706C757329207B0D0A0909096F626A2E76616C7565203D20222B22202B2076616C3B0D0A09097D20656C7365207B0D0A0909096F626A2E76616C7565203D2076616C3B0D0A09097D0D0A097D0D0A090D0A7D0D0A0D0A766172206D6F64616C4F626A2C206D6F64616C46756E632C206D6F64616C57696E3B0D0A66756E6374696F6E2073686F774D6F64616C286F626A2C2066756E632C2066696C656E616D652C20617267732C20617267733129207B0D0A097661722072657476616C203D2022223B0D0A2F2F096966202877696E646F772E73686F774D6F64616C4469616C6F6729207B0D0A2F2F090972657476616C203D2077696E646F772E73686F774D6F64616C4469616C6F672866696C656E616D652C20617267732C206172677331293B0D0A2F2F097D20656C7365207B0D0A09096D6F64616C4F626A203D206F626A3B0D0A09096D6F64616C46756E63203D2066756E633B0D0A0909646F63756D656E742E676574456C656D656E744279496428226D6F64616C41726722292E76616C7565203D20617267733B0D0A09096172677331203D2061726773312E7265706C616365282F3B2F672C20222C22293B0D0A09096172677331203D2061726773312E7265706C616365282F3A2F672C20223D22293B0D0A09096172677331203D2061726773312E7265706C616365282F6469616C6F6757696474682F672C2022776964746822293B0D0A09096172677331203D2061726773312E7265706C616365282F6469616C6F674865696768742F672C202268656967687422293B0D0A09096172677331203D2061726773312E7265706C616365282F6469616C6F67546F702F672C2022746F7022293B0D0A09096172677331203D2061726773312E7265706C616365282F6469616C'O & - '6F674C6566742F672C20226C65667422293B0D0A09096172677331203D2061726773312E7265706C616365282F7363726F6C6C2F672C20227363726F6C6C6261727322293B0D0A09090D0A09092F2F616C65727428226D6F64616C3A22202B20617267733120293B0D0A09092F2F616C657274282277696E646F772E6C6566743D22202B2077696E646F772E73637265656E2E6C656674202B20222077696E646F772E746F703D22202B2077696E646F772E73637265656E2E746F700D0A09092F2F092B20225C77696E646F772E7363726565583D22202B2077696E646F772E73637265656E58202B20222077696E646F772E73637265656E593D22202B2077696E646F772E73637265656E59293B0D0A0D0A09092F2F616C657274282273686F776D6F64616C3A22202B206172677331293B0D0A09202020092F2F6D6F64616C57696E203D2077696E646F772E6F70656E2866696C656E616D652C202220222C20617267733120293B0D0A09202020092F2F66696C656E616D65203D2022696E646578706F7075702E6A73703F22202B2066696C656E616D653B0D0A09096D6F64616C57696E203D2077696E646F772E6F70656E2866696C656E616D652C20225F6F77755F706F707570222C206172677331293B0D0A09096D6F64616C57696E2E666F63757328293B0D0A09090D0A2F2F097D0D0A0972657475726E2072657476616C3B0D0A7D0D0A0D0A66756E6374696F6E206D6F64616C446F6E652829207B0D0A09696620286D6F64616C4F626A202626206D6F64616C46756E6329207B0D0A09096D6F64616C46756E63286D6F64616C4F626A2C2020646F63756D656E742E676574456C656D656E744279496428226D6F64616C52657476616C22292E76616C7565293B0D0A097D0D0A7D0D0A0D0A66756E6374696F6E20676F4261636B2829207B0D0A096966202877696E646F772E6E616D65203D3D20225F6F77755F6C6973742229207B0D0A090977696E646F772E6C6F636174696F6E2E61737369676E28226C6973745F636174616C6F672E6A73703F636174616C6F673D636174616C6F67756522293B0D0A097D20656C7365207B0D0A090977696E646F772E686973746F72792E676F282D31293B0D0A097D0D0A7D0D0A66756E6374696F6E207363726F6C6C3256696577286F626A290D0A7B0D0A202020747279207B0D0A2020202076617220706172656E74203D206F626A2E706172656E744E6F64653B0D0A202020207768696C652028706172656E7420262620706172656E742E7461674E616D6520213D20282244495622292920706172656E74203D20706172656E742E706172656E744E6F64653B0D0A2020200D0A202020202F2F616C65727428227363726F6C6C32766965773D22202B20706172656E742E6964293B0D0A2020202076617220746F7473697A6520203D20706172656E742E6F66667365744865696768743B20202F2F2074686973206973207468652076697369626C652061726561200D73697A650D0A202020207661722063757272746F70203D20706172656E742E7363726F6C6C546F703B2020202020202F2F6865726520626567696E73207468652076697369626C6520617265610D0A2020202076617220626567696E506F73203D206F626A2E6F6666736574546F703B0D0A202020207661722073746570203D206F626A2E6F6666736574486569676874202B20333B0D0A2020202F2F09616C6572742822737465703D22202B2073746570202B20222070616464696E673D22202B206F626A2E7374796C652E70616464696E67546F70293B0D0A2020202076617220656E64506F73203D20626567696E506F73202B20737465703B0D0A202020200D0A202020207768696C652028656E64506F73203E202863757272746F70202B20746F7473697A65292920207B0D0A2020202020202063757272746F70202B3D20737465703B0D0A202020207D0D0A202020207768696C652028626567696E506F73203C2063757272746F7029207B0D0A2020202020202063757272746F70202D3D20737465703B0D0A202020207D0D0A20202020706172656E742E7363726F6C6C546F70203D2063757272746F703B0D0A202020202F2F77696E646F772E737461747573203D20227363726F6C6C746F703D22202B2063757272746F703B0D0A2020207D206361746368286529207B0D0A20202020202077696E646F772E737461747573203D20224661696C656420207363726F6C6C3276696577223B0D0A2020207D0D0A7D0D0A0D0A3C2F7363726970743E0D0A0D0A3C7363726970743E0D0A0D0A66756E6374696F6E20696E69742829207B0D0A092F2F646F63756D656E742E676574456C656D656E74427949642822705F7465787422292E73656C65637428293B0D0A0D0A0D0A090976617220646F72656C6F6164203D202272656C6F6164223B0D0A090969662028646F72656C6F61643D3D202272656C6F61642229207B0D0A090909646F7265667265736828293B0D0A09097D0D0A09090D0A0909766172206572726F726D7367203D2022223B0D0A0909696620286572726F726D736720213D20222229207B0D0A0909096572726F726D7367203D206572726F726D73672E7265706C616365282F5E6572726F723D2F692C202222293B0D0A0909096572726F726D7367203D206572726F726D73672E7265706C616365282F5C2532302F672C20222022293B0D0A090909616C657274286572726F726D7367293B0D0A09097D0D0A090D0A7D0D0A0D0A66756E6374696F6E2072656D6F766550726573656E63652829207B0D0A09646F63756D656E742E676574456C656D656E7442794964282270726573656E63655F636F646522292E76616C7565203D202230223B0D0A09646F63756D656E742E666F726D735B2270726573656E6365666F726D225D2E7375626D697428293B0D0A7D0D0A0D0A66756E6374696F6E2070636F64654368616E676564286F626A29207B0D0A092F2F616C657274282270636F64656368616E6765643D22202B206F626A2E6F7074696F6E735B6F626A2E73656C6563746564496E6465785D2E76616C7565293B0D0A097661722070636F646573203D206F626A2E6F7074696F6E735B6F626A2E73656C6563746564496E6465785D2E76616C75653B0D0A096966202870636F646573203D3D202222292072657475726E3B0D0A090D0A0976617220746D70203D2070636F6465732E73706C697428225F22293B0D0A097661722070636F6465203D20746D705B305D3B0D0A09766172206E756D626572203D20746D705B315D3B0D0A090D0A0976617220616374696F6E696D616765203D20646F63756D656E742E676574456C656D656E74427949642822616374696F6E696D61676522293B0D0A0969662028616374696F6E696D61676529207B0D0A0909696620286E756D626572203D3D20222229207B0D0A090909616374696F6E696D6167652E7372633D22696D672F6E6F745F617661696C61626C655F6E6F5F4346502E676966223B0D0A09097D20656C7365207B0D0A090909616374696F6E696D6167652E7372633D22696D672F6E6F745F617661696C61626C655F4346502E676966223B0D0A09097D0D0A097D0D0A09696620286E756D626572203D3D2022782229207B0D0A0909646F63756D656E742E676574456C656D656E74427949642822646976657273696F6E6E627222292E7374796C652E646973706C6179203D2022223B0D0A097D20656C7365207B0D0A0909646F63756D656E742E676574456C656D656E74427949642822646976657273696F6E6E627222292E7374796C652E646973706C6179203D20226E6F6E65223B0D0A097D0D0A7D0D0A66756E6374696F6E2073657450726573656E63652829207B0D0A097661722070636F64656C697374203D20646F63756D656E742E676574456C656D656E7442794964282270636F64656C69737422293B0D0A096966202870636F64656C6973742E73656C6563746564496E646578203C30207C7C2070636F64656C6973742E6F7074696F6E735B70636F64656C6973742E73656C6563746564496E6465785D2E76616C7565203D3D20222229207B0D0A0909616C6572742822646F207069636B20612076616C6964206F7074696F6E22290D0A090972657475726E3B0D0A097D0D0A097661722070636F646573203D2070636F64656C6973742E6F7074696F6E735B70636F64656C6973742E73656C6563746564496E6465785D2E76616C7565203B0D0A0976617220746D70203D2070636F6465732E73706C697428225F22293B0D0A097661722070636F6465203D20746D705B305D3B0D0A09766172206E756D626572203D20746D705B315D3B0D0A090D0A09646F63756D656E742E676574456C656D656E7442794964282270726573656E63655F636F646522292E76616C7565203D2070636F64653B0D0A09696620286E756D626572203D3D2022782229207B0D0A09096E756D626572203D207472696D28646F63756D656E742E676574456C656D656E74427949642822646976657273696F6E6E627222292E76616C7565293B0D0A097D200D0A09646F63756D656E742E676574456C656D656E7442794964282270726573656E63655F6469766572746E627222292E76616C7565203D206E756D6265723B0D0A090D0A0976617220756E74696C203D20646F63756D656E742E676574456C656D656E74427949642822756E74696C6461746522292E76616C7565200D0A090909092B20222022202B20646F63756D656E742E676574456C656D656E74427949642822756E74696C74696D6522292E76616C75653B0D0A09756E74696C203D207472696D28756E74696C293B0D0A0969662028756E74696C20213D20222229207B0D0A0909646F63756D656E742E676574456C656D656E7442794964282270726573656E63655F756E74696C22292E76616C7565203D20756E74696C3B0D0A097D0D0A090D0A09766172206D7367656C656D20203D20646F63756D656E742E676574456C656D656E74427949642822705F7465787422293B0D0A092F2F6A757374206D616B6520737572652074686174207468652074657874206973206E6F742074686520696E697469616C206578706C2E20746578742E0D0A09696620286D7367656C656D2E6F6E6B6579646F776E203D3D206E756C6C29207B200D0A0909766172207074657874203D207472696D286D7367656C656D2E76616C7565293B0D0A090969662028707465787420213D20222229207B0D0A090909646F63756D656E742E676574456C656D656E7442794964282270726573656E63655F7465787422292E76616C7565203D2070746578743B0D0A09097D0D0A097D0D0A09646F63756D656E742E666F726D735B2270726573656E6365666F726D225D2E7375626D697428293B0D0A7D0D0A66756E6374696F6E2070726573657450726573656E6365'O & - '2869647829207B0D0A09646F63756D656E742E676574456C656D656E7442794964282270726573656E63655F70726573657422292E76616C7565203D206964783B0D0A09646F63756D656E742E666F726D735B2270726573656E6365666F726D225D2E7375626D697428293B0D0A090D0A7D0D0A0D0A66756E6374696F6E205365744465666C65637428290D0A7B0D0A0976617220656C656D73203D20646F63756D656E742E676574456C656D656E747342794E616D652822636622293B0D0A09666F72202876617220693D303B2069203C656C656D732E6C656E6774683B20692B2B29207B0D0A090969662028656C656D735B695D2E636865636B656429207B0D0A090909766172206465666C6563746E72203D20656C656D735B695D2E76616C75653B0D0A090909696620286465666C6563746E72203D3D2022582229207B0D0A090909096465666C6563746E72203D20646F63756D656E742E676574456C656D656E7442794964282263665F6E756D62657222292E76616C75653B0D0A0909097D0D0A090909646F63756D656E742E676574456C656D656E7442794964282263616C6C6465666C6563746E7222292E76616C7565203D206465666C6563746E723B0D0A090909627265616B3B0D0A09097D0D0A097D0D0A09646F63756D656E742E666F726D735B2263616C6C6465666C656374666F726D225D2E7375626D697428293B0D0A7D0D0A0D0A66756E6374696F6E206366436C69636B6564286F626A29207B0D0A092F2F616C65727428226F626A3D22202B206F626A2E636865636B6564293B0D0A09696620286F626A2E636865636B6564202626206F626A2E76616C7565203D3D2022582229207B0D0A0909646F63756D656E742E676574456C656D656E7442794964282263665F6E756D62657222292E7374796C652E7669736962696C697479203D2022223B0D0A0909646F63756D656E742E676574456C656D656E7442794964282263665F6E756D62657222292E666F63757328293B0D0A097D20656C7365207B0D0A0909646F63756D656E742E676574456C656D656E7442794964282263665F6E756D62657222292E7374796C652E7669736962696C697479203D202268696464656E223B0D0A097D0D0A7D0D0A0D0A66756E6374696F6E20416374697661746547726F75707328290D0A7B0D0A09646F63756D656E742E666F726D735B226867736574746E67225D2E7375626D697428293B0D0A7D0D0A0D0A66756E6374696F6E2073686F776D6F72656F7074696F6E732829207B0D0A09646F63756D656E742E676574456C656D656E744279496428226D6F72656F7074696F6E737461626C6522292E7374796C652E646973706C6179203D2022223B0D0A09646F63756D656E742E676574456C656D656E744279496428226D6F72656F7074696F6E73627574746F6E22292E7374796C652E646973706C6179203D2022223B0D0A7D0D0A66756E6374696F6E206469766D73674368616E676564286F626A29207B0D0A09696620287061727365496E74286F626A2E76616C75652E6C656E67746829203E2032353529207B0D0A09096F626A2E76616C7565203D206F626A2E76616C75652E737562737472696E6728302C323535293B0D0A0909616C65727428224D61782032353522293B0D0A097D0D0A092F2F77696E646F772E737461747573203D206F626A2E76616C75652E6C656E6774683B0D0A7D090D0A66756E6374696F6E2072657365745573657253657474696E67732829200D0A7B0D0A09646F63756D656E742E666F726D735B22726573657475736572666F726D225D2E7375626D697428293B0D0A7D0D0A3C2F7363726970743E0D0A3C7374796C6520747970653D22746578742F637373223E0D0A0D0A626F6479207B0D0A09666F6E742D66616D696C793A2076657264616E612C20617269616C3B0D0A09666F6E742D73697A653A20313030253B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F626F64792E676966293B0D0A09636F6C6F72203A20626C61636B3B0D0A7D0D0A0D0A7461626C65207B0D0A09666F6E742D66616D696C793A2076657264616E612C20617269616C3B0D0A09666F6E742D73697A653A203930253B0D0A7D0D0A0D0A2E6C6F67696E666F726D207B0D0A09666F6E742D73697A653A203930253B0D0A09636F6C6F72203A20626C61636B3B0D0A7D0D0A2E627574746F6E207B0D0A09666F6E742D73697A653A3830253B0D0A09666F6E742D7765696768743A626F6C643B0D0A0970616464696E673A313B0D0A7D0D0A2E6D61696E666F726D207B0D0A09636F6C6F72203A20626C61636B3B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B0D0A09666F6E742D73697A653A3730253B0D0A0977696474683A313030253B0D0A096865696768743A313030253B0D0A0970616464696E673A303B0D0A096D617267696E3A303B0D0A0D0A7D090D0A2E617474656E64616E74666F726D207B0D0A09636F6C6F72203A20626C61636B3B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F626F64792E676966293B0D0A096D617267696E3A303B0D0A0970616464696E673A303B0D0A0977696474683A313030253B0D0A096865696768743A313030253B0D0A7D0D0A0D0A2E6D61696E7469746C65207B0D0A09666F6E742D7765696768743A20626F6C643B0D0A09636F6C6F72203A20626C61636B3B0D0A096C65747465722D73706163696E673A313B0D0A096865696768743A353070783B0D0A0977696474683A32333070783B0D0A0970616464696E673A303B0D0A096D617267696E3A303B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F746F702E676966293B0D0A7D0D0A0D0A2E616374696F6E6D656E75207B0D0A09666F6E742D73697A653A203930253B0D0A09636F6C6F72203A20626C61636B3B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B0D0A096D617267696E203A20353B0D0A0970616464696E673A353B0D0A0977696474683A3939253B0D0A0D0A7D0D0A2E616374696F6E64726F70646F776E207B0D0A09636F6C6F72203A20626C61636B3B0D0A7D0D0A0D0A2E736561726368666F726D207B0D0A09666F6E742D73697A653A203930253B0D0A09636F6C6F72203A20626C61636B3B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F626F64792E676966293B0D0A7D0D0A0D0A2F2A2055736564206279207468652073696465626172202A2F0D0A236D61696E626F6479207B0D0A096865696768743A3939253B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B200D0A096D696E2D77696474683A31333070783B0D0A096C6566743A353B0D0A09746F703A333B0D0A09706F736974696F6E3A6162736F6C7574653B0D0A090D0A7D0D0A0D0A2E6D656E7574726565207B0D0A0970616464696E673A303B0D0A09616C69676E3A63656E7465723B0D0A09636F6C6F723A20626C61636B3B0D0A096D696E2D77696474683A32333070783B0D0A0977696474683A313030253B0D0A7D0D0A0D0A2E73657474696E6773626F6479207B0D0A0970616464696E673A303B0D0A09616C69676E3A63656E7465723B0D0A09636F6C6F723A20626C61636B3B0D0A096D696E2D77696474683A31393870783B0D0A0977696474683A313030253B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F626F64792E676966293B0D0A09746F703A373070783B0D0A09706F736974696F6E3A6162736F6C7574653B0D0A09666F6E742D7765696768743A6E6F726D616C3B0D0A096865696768743A3930253B0D0A09666F6E742D73697A653A3830253B0D0A7D0D0A2E73657474696E67736C697374207B0D0A09666F6E742D73697A653A3830253B0D0A7D0D0A2E696E7075746669656C64207B0D0A09666F6E742D73697A653A3930253B0D0A7D0D0A2E73657474696E677368656164696E67207B0D0A0970616464696E673A30203020302031323B0D0A0977696474683A3330253B0D0A7D0D0A2E74726565726F77207B0D0A09666F6E742D7765696768743A6E6F726D616C3B0D0A09666F6E742D73697A653A3835253B0D0A09766572746963616C2D616C69676E3A746578742D746F703B0D0A0970616464696E673A33203020332030203B0D0A096D617267696E3A303B0D0A09636F6C6F72203A20626C61636B3B0D0A09637572736F723A68616E643B0D0A096D696E2D6865696768743A313670783B0D0A7D0D0A2E726F7768656164696E67207B0D0A096261636B67726F756E642D636F6C6F723A234343434343433B0D0A09666F6E742D7765696768743A626F6C643B0D0A09636F6C6F723A626C61636B3B0D0A09626F726465723A33206F7574736574206C69676874677261793B0D0A096D617267696E3A3270783B0D0A0970616464696E672D6C6566743A353B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A7D0D0A0D0A236D61696E636174616C6F67626F6479207B0D0A096865696768743A3939253B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F626F64792E676966293B0D0A0977696474683A313030253B0D0A096C6566743A353B0D0A09746F703A333B0D0A09706F736974696F6E3A6162736F6C7574653B0D0A7D0D0A0D0A2E696D67627574746F6E207B0D0A096261636B67726F756E642D636F6C6F723A234343434343433B0D0A09666F6E742D7765696768743A626F6C643B0D0A09636F6C6F723A626C61636B3B0D0A09626F726465723A33206F7574736574206C69676874677261793B0D0A096D617267696E3A3270783B0D0A0970616464696E673A323B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A09666F6E742D73697A653A3830253B0D0A7D0D0A0D0A2E6E756D626572627574746F6E207B0D0A096261636B67726F756E642D636F6C6F723A234343434343433B0D0A09666F6E742D7765696768743A6E6F726D616C3B0D0A09636F6C6F723A626C61636B3B0D0A096D617267696E3A3170783B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A09626F726465723A33206F7574736574206C69676874677261793B0D0A096865696768743A323070783B3B0D0A0977696474683A31323070783B0D0A09766572746963616C2D616C69676E3A626F74746F6D3B0D0A0970616464696E67203A20302030203020353B0D0A09666F6E742D73697A653A3830253B0D0A090D0A7D0D0A0D0A2E6E756D626572627574746F6E707573686564207B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B0D0A09666F6E742D7765696768743A626F6C643B0D0A092F2A636F6C6F'O & - '723A626C75653B2A2F0D0A096D617267696E3A3170783B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A09626F726465723A3320696E736574206C69676874677261793B0D0A096865696768743A323070783B3B0D0A0977696474683A31323070783B0D0A09766572746963616C2D616C69676E3A626F74746F6D3B0D0A0970616464696E67203A20302030203020353B0D0A09666F6E742D73697A653A3830253B0D0A090D0A7D0D0A2E616374696F6E736D616C6C627574746F6E207B0D0A096261636B67726F756E642D636F6C6F723A234343434343433B0D0A09666F6E742D7765696768743A626F6C643B0D0A09636F6C6F723A626C61636B3B0D0A096D617267696E3A3170783B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A09666F6E742D73697A653A3730253B0D0A09626F726465723A32206F7574736574206C69676874677261793B0D0A096865696768743A313170783B0D0A0977696474683A313170783B0D0A09766572746963616C2D616C69676E3A626F74746F6D3B0D0A7D0D0A2E616374696F6E627574746F6E207B0D0A096261636B67726F756E642D636F6C6F723A234343434343433B0D0A09666F6E742D7765696768743A626F6C643B0D0A09636F6C6F723A626C61636B3B0D0A096D617267696E3A3270783B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A09666F6E742D73697A653A3630253B0D0A09626F726465723A35206F7574736574206C69676874677261793B0D0A096865696768743A323570783B0D0A0977696474683A323570783B0D0A09766572746963616C2D616C69676E3A746F703B0D0A7D0D0A0D0A2E616374696F6E627574746F6E707573686564207B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B0D0A09666F6E742D7765696768743A626F6C643B0D0A09636F6C6F723A626C61636B3B0D0A096D617267696E3A3270783B0D0A09616C69676E3A63656E7465723B0D0A09666F6E742D73697A653A3730253B0D0A09626F726465723A3520696E736574206C69676874677261793B0D0A096865696768743A323570783B0D0A0977696474683A323570783B0D0A09766572746963616C2D616C69676E3A746F703B0D0A09637572736F723A68616E643B0D0A090D0A7D0D0A0D0A0D0A2E7472656563656C6C207B0D0A0970616464696E673A302030203220323B0D0A7D0D0A2E74726565737061636572207B0D0A0970616464696E673A303B0D0A096D617267696E3A303B0D0A096D696E2D6865696768743A3270783B0D0A09666F6E742D73697A653A3170783B0D0A0977696474683A32303070783B0D0A090D0A7D0D0A2E706F707570666F726D207B0D0A09616C69676E203A2063656E7465723B0D0A09666F6E742D73697A653A203930253B0D0A09636F6C6F72203A20626C61636B3B0D0A096261636B67726F756E642D696D6167653A2075726C28696D672F626F64792E676966293B0D0A7D0D0A0D0A2E706F7075707469746C65207B0D0A09666F6E742D73697A653A20313230253B0D0A09666F6E742D776569676874203A20626F6C643B0D0A096C65747465722D73706163696E67203A20313B0D0A7D0D0A2E706F707570746162207B0D0A09666F6E742D73697A653A20313130253B0D0A096C65747465722D73706163696E67203A20313B0D0A09626F726465722D746F70203A203120736F6C696420626C61636B3B0D0A09626F726465722D7269676874203A203120736F6C696420626C61636B3B0D0A09626F726465722D6C656674203A203120736F6C696420626C61636B3B0D0A0970616464696E67203A20343B0D0A096D617267696E203A20382033203020333B0D0A097769647468203A20313030253B0D0A096865696768743A3830253B0D0A09766572746963616C2D616C69676E3A746578742D746F703B0D0A096261636B67726F756E642D636F6C6F723A626C61636B3B0D0A09616C69676E3A63656E7465723B090D0A09636F6C6F723A626C61636B3B0D0A09637572736F723A68616E643B0D0A7D0D0A2E74616273656C6563746564207B0D0A09666F6E742D73697A653A20313130253B0D0A096C65747465722D73706163696E67203A20313B0D0A09626F72646572203A203120736F6C696420626C61636B3B0D0A09626F726465722D626F74746F6D203A20303B0D0A0970616464696E67203A20342034203020343B0D0A096D617267696E203A20303B0D0A09746578742D616C69676E203A206C6566743B0D0A09766572746963616C2D616C69676E3A746578742D746F703B0D0A09616C69676E3A63656E7465723B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B0D0A09636F6C6F723A626C61636B3B0D0A7D0D0A0D0A2E706F707570627574746F6E207B0D0A0977696474683A2031303070783B0D0A7D0D0A0D0A2E726573756C746C697374207B0D0A09616C69676E3A63656E7465723B0D0A09636F6C6F723A20626C61636B3B0D0A0977696474683A313030253B0D0A096865696768743A3839253B0D0A096F766572666C6F773A6175746F3B0D0A09706F736974696F6E3A6162736F6C7574653B0D0A096261636B67726F756E642D636F6C6F723A234530453045303B0D0A090D0A7D0D0A2E726573756C74726F77207B0D0A09666F6E742D7765696768743A6E6F726D616C3B0D0A09666F6E742D73697A653A3735253B0D0A09766572746963616C2D616C69676E3A746578742D746F703B0D0A0970616464696E673A313B0D0A096D617267696E3A303B0D0A09636F6C6F72203A20626C61636B3B0D0A09637572736F723A68616E643B0D0A096D696E2D6865696768743A313670783B0D0A7D0D0A2E726573756C7468656164696E67207B0D0A096261636B67726F756E642D636F6C6F723A234343434343433B0D0A09666F6E742D7765696768743A626F6C643B0D0A09636F6C6F723A626C61636B3B0D0A09626F726465723A33206F7574736574206C69676874677261793B0D0A096D617267696E3A3270783B0D0A0970616464696E672D6C6566743A353B0D0A09637572736F723A68616E643B0D0A09616C69676E3A63656E7465723B0D0A09666F6E742D73697A653A3835253B0D0A7D0D0A2E616374696F6E7465787461726561207B0D0A09666F6E742D73697A653A3930253B0D0A09746578742D616C69676E3A6C6566743B0D0A0977696474683A313030253B0D0A096865696768743A31303070783B0D0A7D0D0A0D0A3C2F7374796C653E0D0A0D0A3C2F686561643E0D0A3C626F6479206F6E6C6F61643D22696E697428293B22203E0D0A0D0A0D0A3C6469762069643D226D61696E626F647922203E0D0A0D0A3C666F726D206E616D653D22726573657475736572666F726D22207461726765743D225F73656C662220616374696F6E3D22736572766C65742F44727352657365745573657222206D6574686F643D22706F7374223E0D0A3C696E70757420747970653D68696464656E206E616D653D227265736574757365725F6469726964222069643D227265736574757365725F6469726964222076616C75653D22333631393031303030313A303436313832223E0D0A3C2F666F726D3E0D0A0D0A3C666F726D206E616D653D2270726573656E6365666F726D22207461726765743D225F73656C662220616374696F6E3D2244727350726573656E636522206D6574686F643D22706F7374223E0D0A3C696E70757420747970653D68696464656E206E616D653D2270726573656E63655F636F6465222069643D2270726573656E63655F636F6465222076616C75653D22223E0D0A3C696E70757420747970653D68696464656E206E616D653D2270726573656E63655F6469766572746E6272222069643D2270726573656E63655F6469766572746E6272222076616C75653D22223E0D0A3C696E70757420747970653D68696464656E206E616D653D2270726573656E63655F756E74696C222069643D2270726573656E63655F756E74696C222076616C75653D22223E0D0A3C696E70757420747970653D68696464656E206E616D653D2270726573656E63655F6469726964222069643D2270726573656E63655F6469726964222076616C75653D22223E0D0A3C696E70757420747970653D68696464656E206E616D653D2270726573656E63655F74657874222069643D2270726573656E63655F74657874222076616C75653D22223E0D0A3C696E70757420747970653D68696464656E206E616D653D2270726573656E63655F707265736574222069643D2270726573656E63655F707265736574222076616C75653D22223E0D0A3C2F666F726D3E0D0A0D0A3C64697620636C6173733D226D61696E7469746C6522207374796C653D2277696474683A31303025223E0D0A3C7461626C652063656C6C73706163696E673D302063656C6C70616464696E673D332077696474683D223130302522203E0D0A3C74723E0D0A093C746420636C6173733D226D61696E7469746C6522207374796C653D2277696474683A313030252220616C69676E3D626173656C696E653E0D0A093C696D67207372633D22696D672F7370616365722E67696622206865696768743D35302077696474683D323E0D0A0953616D62616C2042696A20202831313030290D0A3C212D2D20746F6F6C626F78202D2D3E0D0A093C746420616C69676E3D7269676874202076616C69676E3D626173656C696E65206E6F777261703E200D0A09090D0A09093C7370616E2069643D227265736574627574746F6E222020636C6173733D22616374696F6E627574746F6E22206F6E636C69636B3D2272657365745573657253657474696E677328292220203E0D0A090909093C696D67207372633D22696D672F7370616365722E676966222077696474683D22323522206865696774683D223235223E526573657420757365722073657474696E67730D0A09093C2F7370616E3E0D0A09090D0A09093C7370616E2069643D226C6F676F7574627574746F6E222020636C6173733D22616374696F6E627574746F6E22206F6E636C69636B3D226C6F676F757428292220203E0D0A090909093C696D67207372633D22696D672F7370616365722E676966222077696474683D22323522206865696774683D223235223E4C6F67206F75740D0A09093C2F7370616E3E0D0A3C74723E3C746420636F6C7370616E3D323E3C68723E0D0A0D0A3C2F7461626C653E0D0A0D0A3C2F6469763E0D0A0D0A3C64697620636C6173733D2273657474696E6773626F647922202069643D2270726573656E63656D656E75223E0D0A0D0A3C7461626C6520207374796C653D2277696474683A313030253B636F6C6F723A626C61636B3B6261636B67726F756E642D636F6C6F723A23453045304530'O & - '2220626F726465723D302063656C6C70616464696E673D332063656C6C73706163696E673D323E0D0A3C74723E3C7464207374796C653D2277696474683A3335253B626F726465723A3120736F6C696420677261793B223E0D0A0D0A093C7461626C6520207374796C653D2277696474683A313030253B636F6C6F723A626C61636B3B6261636B67726F756E642D636F6C6F723A234530453045302220626F726465723D302063656C6C70616464696E673D332063656C6C73706163696E673D323E0D0A09093C74723E3C746420207374796C653D22666F6E742D73697A653A31303025223E3C623E50726573656E63650D0A090D0A0D0A09093C7464206E6F777261703E093C696D67207372633D27696D672F6E6F745F617661696C61626C655F6E6F5F4346502E676966273E4C65667420666F7220746865206461790D0A0D0A0D0A093C74723E0D0A09093C746420636F6C7370616E3D323E3C68723E0D0A090D0A0D0A09093C7472207374796C653D22646973706C61793A223E3C746420636F6C7370616E3D323E507265646566696E6564206F7074696F6E730D0A090D0A0D0A09093C747220207374796C653D22646973706C61793A223E0D0A0909093C74642020636F6C7370616E3D32203E0D0A0909093C7370616E207374796C653D2277696474683A3730252220636C6173733D27696D67627574746F6E27206F6E636C69636B3D2270726573657450726573656E636528273027293B22203E0D0A090909093C696D67207372633D27696D672F617661696C61626C652E676966272077696474683D3136206865696768743D31363E4368616E676520746F20417661696C61626C650D0A0909093C2F7370616E3E0D0A0909093C62723E0D0A0D0A09093C747220207374796C653D22646973706C61793A223E0D0A0909093C74642020636F6C7370616E3D32203E0D0A0909093C7370616E207374796C653D2277696474683A3730252220636C6173733D27696D67627574746F6E27206F6E636C69636B3D2270726573657450726573656E636528273127293B22203E0D0A090909093C696D67207372633D27696D672F6E6F745F617661696C61626C655F6E6F5F4346502E676966272077696474683D3136206865696768743D31363E4368616E676520746F20427573790D0A0909093C2F7370616E3E0D0A0909093C62723E0D0A0D0A09093C747220207374796C653D22646973706C61793A223E0D0A0909093C74642020636F6C7370616E3D32203E0D0A0909093C7370616E207374796C653D2277696474683A3730252220636C6173733D27696D67627574746F6E27206F6E636C69636B3D2270726573657450726573656E636528273227293B22203E0D0A090909093C696D67207372633D27696D672F6E6F745F617661696C61626C655F6E6F5F4346502E676966272077696474683D3136206865696768743D31363E4368616E676520746F204D656574696E670D0A0909093C2F7370616E3E0D0A0909093C62723E0D0A0D0A09093C747220207374796C653D22646973706C61793A223E0D0A0909093C74642020636F6C7370616E3D32203E0D0A0909093C7370616E207374796C653D2277696474683A3730252220636C6173733D27696D67627574746F6E27206F6E636C69636B3D2270726573657450726573656E636528273327293B22203E0D0A090909093C696D67207372633D27696D672F6E6F745F617661696C61626C655F6E6F5F4346502E676966272077696474683D3136206865696768743D31363E4368616E676520746F204C756E63680D0A0909093C2F7370616E3E0D0A0909093C62723E0D0A0D0A09093C747220207374796C653D22646973706C61793A223E0D0A0909093C74642020636F6C7370616E3D32203E0D0A0909093C7370616E207374796C653D2277696474683A3730252220636C6173733D27696D67627574746F6E27206F6E636C69636B3D2270726573657450726573656E636528273427293B22203E0D0A090909093C696D67207372633D27696D672F6E6F745F617661696C61626C655F6E6F5F4346502E676966272077696474683D3136206865696768743D31363E4368616E676520746F204C65667420666F7220746865206461790D0A0909093C2F7370616E3E0D0A0909093C62723E0D0A0D0A09093C74723E0D0A09093C74642020636F6C7370616E3D323E3C62723E3C68723E0D0A09090D0A09093C74723E3C7464203E3C6120687265663D23206F6E636C69636B3D2273686F776D6F72656F7074696F6E73282922203E4D6F7265206F7074696F6E732E2E2E3C2F613E0D0A09090D0A0909093C7464207374796C653D22646973706C61793A6E6F6E65222069643D226D6F72656F7074696F6E73627574746F6E22206E6F7772617020616C69676E3D72696768743E3C7370616E20636C6173733D22696D67627574746F6E22207374796C653D22666F6E742D73697A653A37352522206F6E636C69636B3D2273657450726573656E636528293B223E0D0A09090909093C696D672069643D22616374696F6E696D61676522207372633D22696D672F7370616365722E676966223E266E6273703B266E6273703B0D0A090909094368616E6765206E6F773C2F7370616E3E0D0A09090D0A0D0A09093C74723E0D0A09093C746420636F6C7370616E3D323E0D0A09093C7461626C652069643D226D6F72656F7074696F6E737461626C6522207374796C653D22646973706C61793A6E6F6E65223E0D0A09093C74723E0D0A0909093C746420636F6C7370616E3D322076616C69676E3D746F70203E0D0A0909093C73656C656374207374796C653D2277696474683A31303025222069643D2270636F64656C6973742220206F6E6368616E67653D2270636F64654368616E67656428746869732922203E0D0A0909093C6F7074696F6E2076616C75653D27273E2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3C2F6F7074696F6E3E0D0A3C6F7074696F6E2076616C75653D27315F273E42757379202D204E6F20646976657273696F6E0A3C6F7074696F6E2076616C75653D27315F2D31273E42757379202D20416C6C2063616C6C7320746F206D61696E206E756D6265720A3C6F7074696F6E2076616C75653D27315F2D32273E42757379202D20416C6C2063616C6C7320746F20766F6963656D61696C0A3C6F7074696F6E2076616C75653D27315F78273E42757379202D20416C6C2063616C6C7320746F206E756D6265720A3C6F7074696F6E2076616C75653D27273E2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3C2F6F7074696F6E3E0A3C6F7074696F6E2076616C75653D27325F273E4D656574696E67202D204E6F20646976657273696F6E0A3C6F7074696F6E2076616C75653D27325F2D31273E4D656574696E67202D20416C6C2063616C6C7320746F206D61696E206E756D6265720A3C6F7074696F6E2076616C75653D27325F2D32273E4D656574696E67202D20416C6C2063616C6C7320746F20766F6963656D61696C0A3C6F7074696F6E2076616C75653D27325F78273E4D656574696E67202D20416C6C2063616C6C7320746F206E756D6265720A3C6F7074696F6E2076616C75653D27273E2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3C2F6F7074696F6E3E0A3C6F7074696F6E2076616C75653D27335F273E4C756E6368202D204E6F20646976657273696F6E0A3C6F7074696F6E2076616C75653D27335F2D31273E4C756E6368202D20416C6C2063616C6C7320746F206D61696E206E756D6265720A3C6F7074696F6E2076616C75653D27335F2D32273E4C756E6368202D20416C6C2063616C6C7320746F20766F6963656D61696C0A3C6F7074696F6E2076616C75653D27335F78273E4C756E6368202D20416C6C2063616C6C7320746F206E756D6265720A3C6F7074696F6E2076616C75653D27273E2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3C2F6F7074696F6E3E0A3C6F7074696F6E2076616C75653D27345F273E4C65667420666F722074686520646179202D204E6F20646976657273696F6E0A3C6F7074696F6E2076616C75653D27345F2D31273E4C65667420666F722074686520646179202D20416C6C2063616C6C7320746F206D61696E206E756D6265720A3C6F7074696F6E2076616C75653D27345F2D32273E4C65667420666F722074686520646179202D20416C6C2063616C6C7320746F20766F6963656D61696C0A3C6F7074696F6E2076616C75653D27345F78273E4C65667420666F722074686520646179202D20416C6C2063616C6C7320746F206E756D6265720A3C6F7074696F6E2076616C75653D27273E2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3C2F6F7074696F6E3E0A3C6F7074696F6E2076616C75653D27355F273E52657475726E73202D204E6F20646976657273696F6E0A3C6F7074696F6E2076616C75653D27355F2D31273E52657475726E73202D20416C6C2063616C6C7320746F206D61696E206E756D6265720A3C6F7074696F6E2076616C75653D27355F2D32273E52657475726E73202D20416C6C2063616C6C7320746F20766F6963656D61696C0A3C6F7074696F6E2076616C75653D27355F78273E52657475726E73202D20416C6C2063616C6C7320746F206E756D6265720A3C6F7074696F6E2076616C75653D27273E2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3C2F6F7074696F6E3E0A0D0A09090909090D0A0909093C2F73656C6563743E0D0A0909093C74723E3C746420636F6C7370616E3D323E0D0A090909093C696E70757420747970653D746578742076616C75653D2222206F6E6B657975703D224E756D6265724368616E67656428746869732922207374796C653D22646973706C61793A6E6F6E65222069643D22646976657273696F6E6E6272223E0D0A0D0A093C74723E0D0A093C7464207374796C653D22666F6E742D73697A653A3930253B22206E6F7772617020636F6C7370616E3D323E4261636B200D0A09093C7370616E207374796C653D22666F6E742D73697A653A373525223E284D4D2F64642F79797979293C2F7370616E3E0D0A0909093C696E70757420747970653D746578742069643D22756E74696C64617465222076616C75653D22222073697A653D223130223E0D0A09093C7370616E207374796C653D22666F6E742D73697A653A373525223E2848483A6D6D293C2F7370616E3E0D0A0909093C696E70757420747970653D746578742069643D22756E74696C74696D65222076616C75653D22222073697A653D2235223E0D0A093C74723E0D0A0909093C746420636F6C'O & - '7370616E3D322076616C69676E3D746F702077696474683D3330253E3C623E4D6573736167650D0A09090D0A09093C7472203E0909090D0A0909093C746420636F6C7370616E3D322076616C69676E3D746F70203E0D0A0909093C7465787461726561207374796C653D2277696474683A3939253B2220726F77733D3520636C6173736E616D653D22616374696F6E7465787461726561220D0A0909090969643D22705F7465787422206F6E6B6579646F776E3D22746869732E76616C75653D27273B746869732E6F6E6B6579646F776E3D6E756C6C22206F6E6B657975703D226469766D73674368616E676564287468697329223E4865726520796F752063616E20777269746520796F7572206D65737361676520746F2074686520617474656E64616E7420616E64206F74686572732E204D61782032353520636861726163746572732E3C2F74657874617265613E0D0A09090D0A09090D0A0909093C2F7461626C653E3C212D2D6D6F7265206F7074696F6E732D2D3E0D0A093C2F7461626C653E0D0A0D0A3C212D2D2043616C6C206465666C656374202D2D3E0D0A3C7464207374796C653D2277696474683A3335253B626F726465723A3120736F6C696420677261793B646973706C61793A6E6F6E65222076616C69676E3D746F703E0D0A093C7461626C6520207374796C653D22636F6C6F723A626C61636B3B6261636B67726F756E642D636F6C6F723A234530453045303B77696474683A313030252220626F726465723D302063656C6C70616464696E673D332063656C6C73706163696E673D323E0D0A09093C74723E3C7464207374796C653D22666F6E742D73697A653A31303025223E3C623E4465666C6563742063616C6C0D0A0909093C746420616C69676E3D72696768743E3C696E7075742020636C6173733D22696D67627574746F6E22207374796C653D22666F6E742D73697A653A3830253B22200D0A09090909747970653D22627574746F6E222076616C75653D224368616E676522206F6E636C69636B3D225365744465666C656374282922203E0D0A0909090D0A09093C74723E3C746420636F6C7370616E3D323E3C68723E090D0A09093C7472206F6E6D6F7573656F7665723D2274725F6D6F7573656F7665722874686973293B22206F6E6D6F7573656F75743D2274725F6D6F7573656F75742874686973292220636C6173733D74726565726F773E0D0A0909093C746420636F6C7370616E3D323E3C696E707574206F6E636C69636B3D226366436C69636B65642874686973293B2220747970653D726164696F2069643D2263665F6F70657261746F7222206E616D653D226366222076616C75653D222D3122203E266E6273703B266E6273703B4D61696E206E756D6265720D0A09093C7472206F6E6D6F7573656F7665723D2274725F6D6F7573656F7665722874686973293B22206F6E6D6F7573656F75743D2274725F6D6F7573656F75742874686973292220636C6173733D74726565726F773E0D0A0909093C746420636F6C7370616E3D323E3C696E707574206F6E636C69636B3D226366436C69636B65642874686973293B2220747970653D726164696F2069643D2263665F766F6963656D61696C22206E616D653D226366222076616C75653D222D3222203E266E6273703B266E6273703B566F6963656D61696C0D0A09093C7472206F6E6D6F7573656F7665723D2274725F6D6F7573656F7665722874686973293B22206F6E6D6F7573656F75743D2274725F6D6F7573656F75742874686973292220636C6173733D74726565726F773E0D0A0909093C746420636F6C7370616E3D323E3C696E707574206F6E636C69636B3D226366436C69636B65642874686973293B2220747970653D726164696F2069643D2263665F7822206E616D653D226366222076616C75653D225822203E266E6273703B266E6273703B50686F6E650D0A0909093C696E70757420747970653D74657874206E616D653D2263665F6E756D626572222069643D2263665F6E756D62657222206F6E6B657975703D224E756D6265724368616E6765642874686973293B22207374796C653D227669736962696C6974793A68696464656E222076616C75653D22223E0D0A09090D0A093C2F7461626C653E0D0A0D0A0D0A3C666F726D206E616D653D2263616C6C6465666C656374666F726D22207461726765743D225F73656C662220616374696F6E3D22736572766C65742F4472734465666C65637422206D6574686F643D22706F7374223E0D0A3C696E70757420747970653D68696464656E206E616D653D226469726964222069643D226469726964222076616C75653D22223E0D0A3C696E70757420747970653D68696464656E206E616D653D2263616C6C6465666C6563746E72222069643D2263616C6C6465666C6563746E72222076616C75653D22223E0D0A3C2F666F726D3E0D0A0D0A3C212D2D204344472F68756E7467726F757073202D2D3E0D0A3C7464207374796C653D2277696474683A3335253B626F726465723A3120736F6C696420677261793B222076616C69676E3D746F703E0D0A093C666F726D206E616D653D226867736574746E6722207461726765743D225F73656C662220616374696F6E3D22736572766C65742F44727348756E7447726F757022206D6574686F643D22706F7374223E0D0A093C696E70757420747970653D68696464656E206E616D653D226469726964222069643D226469726964222076616C75653D22223E0D0A093C7461626C6520207374796C653D22636F6C6F723A626C61636B3B6261636B67726F756E642D636F6C6F723A234530453045303B77696474683A313030252220626F726465723D302063656C6C70616464696E673D332063656C6C73706163696E673D323E0D0A09093C74723E3C7464207374796C653D22666F6E742D73697A653A313030253B223E3C623E41637469766174652F64656163746976617465203C62723E43616C6C20646973747269627574696F6E2067726F7570730D0A0909093C746420616C69676E3D72696768742076616C69676E3D746F703E3C696E7075742020636C6173733D22696D67627574746F6E22207374796C653D22666F6E742D73697A653A3830253B22200D0A09090909747970653D22627574746F6E222076616C75653D224368616E676522206F6E636C69636B3D22416374697661746547726F757073282922203E0D0A09093C74723E3C746420636F6C7370616E3D323E3C68723E090D0A3C74723E3C74643E4E6F74206D656D626572206F6620616E792063616C6C20646973747269627574696F6E2067726F75700A0D0A093C2F666F726D3E0D0A093C2F7461626C653E0D0A0D0A3C2F7461626C653E0D0A3C2F6469763E0D0A3C2F6469763E0D0A0D0A3C2F626F64793E0D0A3C2F68746D6C3E0D0A'O; - - // - - var integer vl_remainingStringLength := lengthof(received_reply); - var CHARSTRINGS vl_decodedMessagePieces := {}; - var HTTPMessage vloc_decodedMsg; - while( vl_remainingStringLength >0 ) - { - log("Original msg string length = ", lengthof(received_reply) ); - vl_remainingStringLength:= dec_HTTPMessage( received_reply, vloc_decodedMsg, true) - log(" The decoded message Piece = ", vloc_decodedMsg ); - log("remaining msg string length:", vl_remainingStringLength); - } - - -}//eof TC - - - function singleTC() runs on HTTP_client - { - // These may be declared as templates at global scope. - // Variables are used for performance reasons: - // sending is faster in this way. - var HeaderLines hd := { {header_name := "Host", header_value := HttpServerHostName}, - {header_name := "Content-Length", header_value := "0" } }; - // {header_name := "Connection", header_value := "close" } - - var HTTPRequest r := { client_id := omit, method := "GET", uri := "/", - version_major := 1, version_minor := 1, header := hd, body := "" }; - - var HTTPMessage send_req := { request := r }; - var Connect conn := { hostname := HttpServerHostName, - portnumber := HttpServerPort, use_ssl := HTTPClientUseSSL }; - var Close c := { client_id := omit }; - timer T_guard := 5.0; - var integer i; - var integer how_many_times := 1; //100 - - map(self:HTTP_client_port, system:HTTP_client_port); - - HTTP_client_port.send(conn); - - for(i := 0; i < how_many_times; i := i + 1 ) { - HTTP_client_port.send(send_req); - if(T_guard.running) { T_guard.stop } - - T_guard.start; - - alt { - [] HTTP_client_port.receive(recv_resp) { - if(i == how_many_times - 1) { - HTTP_client_port.send(c); - setverdict(pass); - } - } - [] HTTP_client_port.receive(h) { - HTTP_client_port.send(c); - setverdict(fail); - i := how_many_times; - } - [] HTTP_client_port.receive { - HTTP_client_port.send(c); - setverdict(fail); - } - [] T_guard.timeout { - setverdict(fail); } - }; - } - - unmap(self:HTTP_client_port, system:HTTP_client_port); - } - //================================== - //= Testcases = - //================================== - - - testcase parallel_TC_client() runs on HTTP_client - { - var HTTP_client client_PTC; - client_PTC := HTTP_client.create; - client_PTC.start(TC()); - client_PTC.done; - } - - testcase tc_parallel_server() runs on HTTP_server - { - var HTTP_server server_PTC; - server_PTC := HTTP_server.create; - server_PTC.start(server_TC()); - server_PTC.done; - } - - testcase tc_stress(in integer n) runs on HTTP_client - { - var ptcList ptc; - var integer r; - - for( r := 0; r < n; r := r + 1 ) { - ptc[r] := HTTP_client.create; - }; - - for( r := 0; r < n; r := r + 1 ) { - ptc[r].start(singleTC()); - }; - - for( r := 0; r < n; r := r + 1 ) { - ptc[r].done; - }; - } - - testcase tc_stress_Persistent_both() runs on HTTP_client - { - var HTTP_client client_PTC; - client_PTC := HTTP_client.create; - var HTTP_server server_PTC; - server_PTC := HTTP_server.create; - - server_PTC.start(server_TC()); - timer t_wait := 0.1; - t_wait.start; - t_wait.timeout; - client_PTC.start(singleTC()); - - client_PTC.done; - server_PTC.done; - } - - testcase tc_server() runs on HTTP_server - { - server_TC(); - } - - testcase tc_client() runs on HTTP_client - { - singleTC(); - } - - - testcase tc_http_encDec() runs on MTC - { - f_EncDec(); - } - - testcase tc_http_encDec2() runs on MTC - { - f_EncDec2(); - } - control - { - log("control started"); - //execute(tc_parallel_server()); - //execute(tc_stress(1)); - //execute(tc_stress_Persistent_both()); - //execute(tc_server); - //execute(tc_client); - execute(tc_http_encDec()); - execute(tc_http_encDec2()); - } - -} diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_test.prj b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_test.prj deleted file mode 100644 index d5db5774722248d24e5bae50631a60c342afac2e..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/HTTP_test.prj +++ /dev/null @@ -1,48 +0,0 @@ - - - - HTTP_test - ../bin/HTTP_test - ../bin - alpha - Parallel - lssl_script - yes - yes - no - yes - yes - rsh %host "cd %project_working_dir ; "%executable" %localhost %mctr_port" - alfa, beta, gamma - - - - ../src/HTTPmsg_PortType.ttcn - ../src/HTTPmsg_Types.ttcn - HTTP_Test_no_ASPs.ttcn - - - ../src/HTTPmsg_PT.cc - ../src/HTTPmsg_PT.hh - - - ../../Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.cc - ../../Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.hh - - - HTTP_Test.cfg - - - HTTP_Test_no_ASPs.control - HTTP_Test_no_ASPs.parallel_TC_client - HTTP_Test_no_ASPs.parallel_TC_server - HTTP_Test_no_ASPs.stress_TC_Persistent_both - HTTP_Test_no_ASPs.server_testcase - HTTP_Test_no_ASPs.client_testcase - - - lssl_script - server.crt - server.key - - diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/Makefile b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/Makefile deleted file mode 100644 index 4cd41c1507adac69911f452c8b7c0f3dd3ccc24a..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -# This Makefile was generated by the Makefile Generator -# of the TTCN-3 Test Executor version 1.7.pre0 build 2 -# for Attila Balasko (ethbaat@ehubuux110) on Mon Jan 15 16:28:23 2007 - -# Copyright (c) 2000-2019 Ericsson Telecom AB - -# The following make commands are available: -# - make, make all Builds the executable test suite. -# - make archive Archives all source files. -# - make check Checks the semantics of TTCN-3 and ASN.1 modules. -# - make clean Removes all generated files. -# - make compile Translates TTCN-3 and ASN.1 modules to C++. -# - make dep Creates/updates dependency list. -# - make objects Builds the object files without linking the executable. -# - make tags Creates/updates tags file using ctags. - -# -# Set these variables... -# - -# The path of your TTCN-3 Test Executor installation: -# Uncomment this line to override the environment variable. -# TTCN3_DIR = - -# Your platform: (SOLARIS, SOLARIS8, LINUX, FREEBSD or WIN32) -PLATFORM = SOLARIS8 - -# Your C++ compiler: -CXX = g++ - -# Flags for the C++ preprocessor (and makedepend as well): -CPPFLAGS = -D$(PLATFORM) -I$(TTCN3_DIR)/include - -# Flags for the C++ compiler: -CXXFLAGS = -Wall - -# Flags for the linker: -LDFLAGS = - -# Flags for the TTCN-3 and ASN.1 compiler: -COMPILER_FLAGS = -L - -# Execution mode: (either ttcn3 or ttcn3-parallel) -TTCN3_LIB = ttcn3-parallel - -# The path of your OpenSSL installation: -# If you do not have your own one, leave it unchanged. -OPENSSL_DIR = $(TTCN3_DIR) - -# Directory to store the archived source files: -# Note: you can set any directory except ./archive -ARCHIVE_DIR = backup - -# -# You may change these variables. Add your files if necessary... -# - -# TTCN-3 modules of this project: -TTCN3_MODULES = HTTP_Test_no_ASPs.ttcn HTTPmsg_PortType.ttcn HTTPmsg_Types.ttcn - -# ASN.1 modules of this project: -ASN1_MODULES = - -# C++ source & header files generated from the TTCN-3 & ASN.1 modules of -# this project: -GENERATED_SOURCES = HTTP_Test_no_ASPs.cc HTTPmsg_PortType.cc HTTPmsg_Types.cc -GENERATED_HEADERS = HTTP_Test_no_ASPs.hh HTTPmsg_PortType.hh HTTPmsg_Types.hh - -# C/C++ Source & header files of Test Ports, external functions and -# other modules: -USER_SOURCES = Abstract_Socket.cc HTTPmsg_PT.cc -USER_HEADERS = Abstract_Socket.hh HTTPmsg_PT.hh - -# Object files of this project that are needed for the executable test suite: -OBJECTS = HTTP_Test_no_ASPs.o HTTPmsg_PortType.o HTTPmsg_Types.o Abstract_Socket.o HTTPmsg_PT.o - -# Other files of the project (Makefile, configuration files, etc.) -# that will be added to the archived source files: -OTHER_FILES = Makefile - -# The name of the executable test suite: -TARGET = HTTP_Test_no_ASPs - -# -# Do not modify these unless you know what you are doing... -# Platform specific additional libraries: -# -SOLARIS_LIBS = -lsocket -lnsl -lxml2 -SOLARIS8_LIBS = -lsocket -lnsl -lxml2 -LINUX_LIBS = -lxml2 -FREEBSD_LIBS = -lxml2 -WIN32_LIBS = -lxml2 - -# -# Rules for building the executable... -# - -all: $(TARGET) ; - -objects: $(OBJECTS) ; - -$(TARGET): $(OBJECTS) - $(CXX) $(LDFLAGS) -o $@ $(OBJECTS) \ - -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \ - -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) - -.cc.o .c.o: - $(CXX) -c $(CPPFLAGS) $(CXXFLAGS) -o $@ $< - -$(GENERATED_SOURCES) $(GENERATED_HEADERS): compile - @if [ ! -f $@ ]; then rm -f compile; $(MAKE) compile; fi - -check: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -s $(COMPILER_FLAGS) \ - $(TTCN3_MODULES) $(PREPROCESSED_TTCN3_MODULES) $(ASN1_MODULES) - -compile: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler $(COMPILER_FLAGS) \ - $(TTCN3_MODULES) $(ASN1_MODULES) - $? - touch $@ - -browserdata.dat: $(TTCN3_MODULES) $(ASN1_MODULES) - $(TTCN3_DIR)/bin/compiler -B -s $(COMPILER_FLAGS) \ - $(TTCN3_MODULES) $(ASN1_MODULES) - -tags: $(TTCN3_MODULES) $(ASN1_MODULES) \ -$(USER_HEADERS) $(USER_SOURCES) - $(TTCN3_DIR)/bin/ctags_ttcn3 --line-directives=yes \ - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) - -clean: - -rm -f $(TARGET) $(OBJECTS) $(GENERATED_HEADERS) \ - $(GENERATED_SOURCES) compile \ - browserdata.dat tags *.log - -dep: $(GENERATED_SOURCES) $(USER_SOURCES) - makedepend $(CPPFLAGS) $(GENERATED_SOURCES) $(USER_SOURCES) - -archive: - mkdir -p $(ARCHIVE_DIR) - tar -cvhf - $(TTCN3_MODULES) $(ASN1_MODULES) \ - $(USER_HEADERS) $(USER_SOURCES) $(OTHER_FILES) \ - | gzip >$(ARCHIVE_DIR)/`basename $(TARGET) .exe`-`date '+%y%m%d-%H%M'`.tgz - -# -# Add your rules here if necessary... -# - -# DO NOT DELETE diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/installCAI.script b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/installCAI.script deleted file mode 100644 index fc9491d6eed4b85949e698e4ef67f0a890023483..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/installCAI.script +++ /dev/null @@ -1,80 +0,0 @@ -#! /bin/sh -# Run this script from _MAIN library. It will create links in bin to all necessary -# files. If you store test ports in different location set TESTPORT_PATH variable first, -# so that this script can locate test port files. - -# Create bin/ directory if does not exist -if [ ! -d ../bin2 ] ; then mkdir ../bin2 ; fi - -# Creating softlinks from main & protocols' directories -# -# Linking non-protocol-bound files - - -# NOTE: after creating dependencies using the make utility the soft link in the bin -# directory is overwritten with a new Makefile; copy this new Makefile back to the -# _Main directory if you want to preserve it. -ln -sf ../_Main/MakefileCAI ../bin2/Makefile - -#Test Execution - -ln -sf ../CAI/PortMappingTelnet.ttcn ../bin2 -ln -sf ../_Main/CAIConfigBuild.ttcn ../bin2 -ln -sf ../_Main/TestExecCAI.ttcn ../bin2 -ln -sf ../_Main/TestExecCAI.cfg ../bin2 - - - -# Linking CAI files - -tmppath=${PROTOCOLMODULE_PATH:-'/vobs/ttcn/TCC_Common/ProtocolModules/CAI_CNL113422/src'} - -ln -sf $tmppath/CAITopLevel.ttcn ../bin2 -ln -sf $tmppath/CAICommonDefinitions.ttcn ../bin2 -ln -sf $tmppath/CAI_Cms11AC.ttcn ../bin2 -ln -sf $tmppath/CAI_Cms11Hlr.ttcn ../bin2 -ln -sf $tmppath/CAI_FmcCac.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmAAA.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmAuc.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmEir.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmFnr.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmHlr.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmMMC.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmMML.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmMMS.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmMc.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmMoIP.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmMpc.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmPps.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmVIG.ttcn ../bin2 -ln -sf $tmppath/CAI_Imsich.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmGMRM.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmIPMM.ttcn ../bin2 -ln -sf $tmppath/CAI_GsmFBC.ttcn ../bin2 -ln -sf $tmppath/CAI_EMM2_1.ttcn ../bin2 -ln -sf $tmppath/CAI_EMM2_0.ttcn ../bin2 -ln -sf $tmppath/CAI_MINSAT.ttcn ../bin2 -ln -sf $tmppath/CAI_IMT3_0.ttcn ../bin2 -ln -sf $tmppath/CAI_EPC1_0.ttcn ../bin2 - -#Encoders -ln -sf $tmppath/CAI_EncDec.cc ../bin2 -ln -sf ../CAI/CAI_DecEnc.cc ../bin2 - - -# Linking test ports - -tmppath=${TESTPORT_PATH:-'/vobs/ttcn/TCC_Common/TestPorts'} - -ln -sf $tmppath/TELNETasp_CNL113320/src/TELNETasp_PT.cc ../bin2 -ln -sf $tmppath/TELNETasp_CNL113320/src/TELNETasp_PT.hh ../bin2 -ln -sf $tmppath/TELNETasp_CNL113320/src/TELNETasp_PortType.ttcn ../bin2 -ln -sf $tmppath/HTTPmsg_CNL113312/src/HTTPmsg_Types.ttcn ../bin2 -ln -sf $tmppath/HTTPmsg_CNL113312/src/HTTPmsg_PT.cc ../bin2 -ln -sf $tmppath/HTTPmsg_CNL113312/src/HTTPmsg_PT.hh ../bin2 -ln -sf $tmppath/HTTPmsg_CNL113312/src/HTTPmsg_PortType.ttcn ../bin2 - -tmppath=${TESTPORT_PATH:-'/vobs/ttcn/TCC_Releases/TestPorts'} - -ln -sf $tmppath/Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.cc ../bin2 -ln -sf $tmppath/Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.hh ../bin2 diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/lssl_script b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/lssl_script deleted file mode 100644 index e0db83f5a8d9ded915af74c1ad21448842835711..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/lssl_script +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -editcmd=' - -s/OPENSSL_DIR = $(TTCN3_DIR)/OPENSSL_DIR = \/mnt\/TTCN\/Tools\/openssl-0.9.8e/g - -s/CPPFLAGS = -D$(PLATFORM) -I$(TTCN3_DIR)\/include/CPPFLAGS = -D$(PLATFORM) -DAS_USE_SSL -I$(TTCN3_DIR)\/include -I$(OPENSSL_DIR)\/include/g - -s/ -lcrypto/ -L$(OPENSSL_DIR)\/lib -lssl -lcrypto/g -' -sed -e "$editcmd" <$1 >$2 - diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.crt b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.crt deleted file mode 100644 index 2381e9fb5405869d67d748e4e8ed89a2ee6870a3..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.crt +++ /dev/null @@ -1,69 +0,0 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 2 (0x2) - Signature Algorithm: md5WithRSAEncryption - Issuer: C=HU, ST=Pest, L=Budapest, O=Ericsson Telecom Hungary, OU=RUST, CN=a99027.eth.ericsson.se/emailAddress=Eduard.Czimbalmos@ericsson.com - Validity - Not Before: Jan 8 11:39:44 2004 GMT - Not After : Jan 7 11:39:44 2005 GMT - Subject: C=HU, ST=Pest, O=Ericsson Telecom Hungary, OU=RUST, CN=a99027.eth.ericsson.se/emailAddress=Eduard.Czimbalmos@ericsson.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:ac:e3:07:4b:97:49:4f:27:35:fd:c5:7f:d1:b5: - 4a:f4:3c:53:cf:bf:36:31:02:19:e0:6f:8f:a2:34: - 39:0f:d7:4f:4f:e0:4b:36:dc:5c:ef:3f:a4:fb:60: - 07:3d:50:50:d5:6f:0e:ce:60:7e:98:ed:de:b9:de: - 63:60:9b:ec:86:ff:d6:79:34:3f:e7:c2:16:d4:d3: - d8:6d:c6:a5:9f:ef:7d:7a:be:25:c1:c5:88:ec:65: - 0a:ca:c5:16:2b:3d:3d:d8:de:a8:32:b5:c4:9b:5d: - 9c:25:91:ef:65:9a:3a:9c:80:ea:95:0b:90:b0:9f: - 75:ba:aa:6d:8a:24:35:54:89 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - C1:32:B9:1E:DC:0C:44:1C:69:7F:AE:6C:85:B6:DA:59:35:0C:D2:E6 - X509v3 Authority Key Identifier: - keyid:E5:52:E4:91:CB:97:9B:48:D2:67:A3:49:EE:7E:C3:44:4B:BE:9B:2C - DirName:/C=HU/ST=Pest/L=Budapest/O=Ericsson Telecom Hungary/OU=RUST/CN=a99027.eth.ericsson.se/emailAddress=Eduard.Czimbalmos@ericsson.com - serial:00 - - Signature Algorithm: md5WithRSAEncryption - 9b:bd:ab:b4:4b:da:df:e1:f9:97:6a:37:ad:34:c8:01:6b:ba: - 20:7a:f3:77:ba:f7:d9:68:8e:f5:e6:82:dd:e3:e1:50:77:b7: - 02:39:12:4c:b9:92:2e:ac:0e:a2:1d:2e:9a:eb:50:fa:df:3e: - d3:45:57:64:9c:3f:fc:7b:d3:f1:39:ff:68:61:46:cd:68:13: - 5d:71:cf:60:9b:68:2b:87:99:31:54:3d:a9:54:27:c3:f3:eb: - 43:6c:ef:d7:bb:3d:72:f8:5b:13:e6:39:a9:f6:d7:1c:d5:23: - ca:be:3a:93:d3:39:43:a0:54:e8:29:21:cf:aa:d8:90:88:0a: - a2:c4 ------BEGIN CERTIFICATE----- -MIIEBjCCA2+gAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBsTELMAkGA1UEBhMCSFUx -DTALBgNVBAgTBFBlc3QxETAPBgNVBAcTCEJ1ZGFwZXN0MSEwHwYDVQQKExhFcmlj -c3NvbiBUZWxlY29tIEh1bmdhcnkxDTALBgNVBAsTBFJVU1QxHzAdBgNVBAMTFmE5 -OTAyNy5ldGguZXJpY3Nzb24uc2UxLTArBgkqhkiG9w0BCQEWHkVkdWFyZC5Demlt -YmFsbW9zQGVyaWNzc29uLmNvbTAeFw0wNDAxMDgxMTM5NDRaFw0wNTAxMDcxMTM5 -NDRaMIGeMQswCQYDVQQGEwJIVTENMAsGA1UECBMEUGVzdDEhMB8GA1UEChMYRXJp -Y3Nzb24gVGVsZWNvbSBIdW5nYXJ5MQ0wCwYDVQQLEwRSVVNUMR8wHQYDVQQDExZh -OTkwMjcuZXRoLmVyaWNzc29uLnNlMS0wKwYJKoZIhvcNAQkBFh5FZHVhcmQuQ3pp -bWJhbG1vc0Blcmljc3Nvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB -AKzjB0uXSU8nNf3Ff9G1SvQ8U8+/NjECGeBvj6I0OQ/XT0/gSzbcXO8/pPtgBz1Q -UNVvDs5gfpjt3rneY2Cb7Ib/1nk0P+fCFtTT2G3GpZ/vfXq+JcHFiOxlCsrFFis9 -PdjeqDK1xJtdnCWR72WaOpyA6pULkLCfdbqqbYokNVSJAgMBAAGjggE9MIIBOTAJ -BgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0 -aWZpY2F0ZTAdBgNVHQ4EFgQUwTK5HtwMRBxpf65shbbaWTUM0uYwgd4GA1UdIwSB -1jCB04AU5VLkkcuXm0jSZ6NJ7n7DREu+myyhgbekgbQwgbExCzAJBgNVBAYTAkhV -MQ0wCwYDVQQIEwRQZXN0MREwDwYDVQQHEwhCdWRhcGVzdDEhMB8GA1UEChMYRXJp -Y3Nzb24gVGVsZWNvbSBIdW5nYXJ5MQ0wCwYDVQQLEwRSVVNUMR8wHQYDVQQDExZh -OTkwMjcuZXRoLmVyaWNzc29uLnNlMS0wKwYJKoZIhvcNAQkBFh5FZHVhcmQuQ3pp -bWJhbG1vc0Blcmljc3Nvbi5jb22CAQAwDQYJKoZIhvcNAQEEBQADgYEAm72rtEva -3+H5l2o3rTTIAWu6IHrzd7r32WiO9eaC3ePhUHe3AjkSTLmSLqwOoh0umutQ+t8+ -00VXZJw//HvT8Tn/aGFGzWgTXXHPYJtoK4eZMVQ9qVQnw/PrQ2zv17s9cvhbE+Y5 -qfbXHNUjyr46k9M5Q6BU6Ckhz6rYkIgKosQ= ------END CERTIFICATE----- diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.key b/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.key deleted file mode 100644 index 8d6ece88633f8f5cb81d73de05005fa42c3523cc..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/demo/server.key +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -Proc-Type: 4,ENCRYPTED -DEK-Info: DES-EDE3-CBC,EBFCB69E20E5D263 - -KrzktC2qxWrTeP4NnRvqaI6TZWi7yyiEhSaj5/mH4RTCb2eDd6Ro+7TxTUQHVPW5 -+FVkdYIa6sMXjUmiKIiFTqcVH6uYl2SgK+tqaAIsEUIzJIYiwQh3sXMOcN3ZuFET -JYb1EypMCqFHAjfYHxFF4lJzryc5I16uOV8ajIfxvPZVcE7V5YPr9sMRxrZV8k/p -qj/TNWuDNnwJzVEtZnEUKPuHqLEXHI8kq9sqrDiDHZMAVwQb6ABpE74RfHbCYO2N -PnYZE6veiOTSZATQzjEhzGXiXslQqozRWH5iFpTI5ND00Zvm7u9AfYxgX/OWHm0/ -8SF0sxC/A+oSu00XKWVLQPvHekxGRdfqHqygdXAdlZS0BxtkUtln/ago9/QekRHL -u8O1iGz03mozFWn52VmEy9O1+V22fmpiuM95T+mzPCOwEAuN3O4BxGUkP/kwLrkY -uxeCe+Cm/3jKijMkm2ejKJhlmDS4sLuvEHG+H5C78W+7U3mNJ9/aMTTQR44H0vXz -f45OfrSt3eZsH10OoNWGk/T1EiJauOQx948bF3e6Pl4TrB2/O2GdRUKrZk5cvNQw -zHmY9JNTTPWA5rmc7HfRn7rHJ5O1eZ1P4oBA+1rTuIbqwykf1CzTWZvOH1cK77uP -0ZsL/lzJRz8NrRv768rqEm8UpDdP96XwZ9rx9euW1r+cA0NGcD+bRssm4vIWxI3F -JMG5cN2X58URsIpkTvQtA5s7XJ0y0TqMcnhtcrSz+dXyq6otT92uO3qfGZWbAdva -Gsogib7OS/BSNfvaEHIplT5u/xy4ney1G7PkoEr89WFwR6gufElJyw== ------END RSA PRIVATE KEY----- diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc deleted file mode 100644 index 86d945d87c0eaf216e7c8e00795e1d2b86ba8f4c..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.adoc +++ /dev/null @@ -1,255 +0,0 @@ ---- -Author: István Óváry -Version: 155 17-CNL 113 312, Rev. E -Date: 2010-12-14 - ---- -= HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification -:author: István Óváry -:revnumber: 155 17-CNL 113 312, Rev. E -:revdate: 2010-12-14 -:toc: - -== How to Read This Document - -This is the Function Specification for the HTTPmsg_CNL113312 (called HTTP from now on) test port. The HTTP test port is developed for the TTCN-3 Toolset with TITAN. This document is intended to be read together with User’s Guide <<_3, [3]>> - -== Scope - -The purpose of this document is to specify the functionality of the HTTP test port. The document is primarily addressed to the end users of the product. Basic knowledge of TTCN-3, TITAN TTCN-3 Test Executor and the HTTP protocol is valuable when reading this document (see <<_1, [1]>> and <<_2, [2]>> - - -This document is based on specifications of Hypertext Transfer Protocol (HTTP1.1) defined by http://www.ietf.org/rfc/rfc2616.txt[RFC 2616]. - -= General - -The HTTP Test Port makes possible to execute test suites towards an IUT. The test port allows sending and receiving HTTP messages between the test suite and IUT via a TCP/IP socket connection. - -The HTTP Test Port can be used as a protocol module via encoding and decoding functions, see <>. - -Both IPv4 and IPv6 are supported. - -The test port can handle multiple connections. Every connection gets an 'id' when it is established. When sending HTTP messages, the `client_id` parameter selects the connection on which the message should be sent. If it is set to `omit`, the HTTP message will be sent on the first available connection. - -The communication between the HTTP test port and the TITAN RTE is done by using the API functions described in <<_2, [2]>> - -The HTTP protocol messages are then transferred by the HTTP test port to the IUT through a network connection. - -See the transfer of HTTP protocol messages by the HTTP test port to the IUT through a network connection below: - -image::images/overview.png[alt] - -= Function Specification - -== Implementation - -=== Environment - -The HTTP test port makes use of the services provided by the UNIX socket interface. When connecting to an SSL enabled IUT, the connection is secured with the OpenSSL toolkit based on configuration data. Every test port is able to handle one listening (server) port and multiple TCP connections. Proxy is supported. - -=== Module Structure - -The HTTP test port is implemented in the following TTCN-3 modules: - -* _HTTPmsg_Types.ttcn_ -* _HTTPmsg_PortType.ttcn_ - -The file _HTTPmsg_Types.ttcn_ defines the HTTP message types and ASPs to control the TCP connection, furthermore contains the declaration of the declaration of the encoding and decoding external functions. - -The port type is defined in _HTTPmsg_PortType.ttcn_. - -The c++ implementation of the test port and the encoding-decoding functions are contained in the following files: - -* _HTTPmsg_PT.hh_ -* _HTTPmsg_PT.cc_ - -The encoding and decoding functions also have been implemented here. - -The port is using the Abstract_Socket, a common component with the product number CNL 113 384, implementing the basic sending, receiving and socket handling routines. The following files should be included in the Makefile: - -* _Abstract_Socket.hh_ -* _Abstract_Socket.cc_ - -== Configuration - -The configuration of the HTTP test port is done by the TITAN RTE configuration file. The description of the specific parameters can be found in the HTTP test port User’s Guide <<_2, [2]>> - - -=== Notification ASPs - -The test port is able to provide the result of the Connect, Listen operations, and inform the server test suite if a new client has connected or the remote end has disconnected a specific connection. This behavior is switched on by setting the `use_notification_ASPs` test port parameter to `_"yes"_`. - -== Start Procedure - -After the test port is mapped by TITAN RTE to the IUT system’s interface port, it waits for a `Connect` or a `Listen` ASP. - -The `Connect` ASP sets up a connection toward an HTTP server, on which instances of HTTP Messages can be sent and received. - -The `Listen` ASP commands the test port to wait for incoming connections from HTTP clients by opening a listening port. - -For detailed operation see the User Guide <<_3, [3]>> - -[[sending-receiving-http-messages]] -== Sending/Receiving HTTP Messages - -=== HTTP Messages Sent by the Test Port - -The HTTP test port is able to send and receive `HTTPMessage` structures. The `HTTPMessage` can be one of the following types: - -* `HTTPRequest` -+ -The Request message represents a single request to perform by the HTTP server, usually to access a resource on the server. - -* `HTTPResponse` -+ -The Response message is sent by the HTTP server to the client. It includes the return status code of the request and the requested resource. - -* `HTTPRequest_binary_body` -+ -The same as the `HTTPRequest` message. It is passed to TTCN when the body of the message contains non-ascii characters. - -* `HTTPResponse_binary_body` -+ -The same as the `HTTPResponse` message. It is passed to TTCN when the body of the message contains non-ascii characters. - -Apart from the `HTTPRequest` and `HTTPResponse` ASPs above, the `erronous_msg` is received by the test port and sent to the test suite: - -* `HTTP_erronous_msg` If a message is received on the connection, which can not be decoded as a HTTP1.1 or HTTP1.0 message, the `Message` will contain an erroneous message with the `client_id`, and sent to the test suite. - -For detailed operation see the User Guide <<_3, [3]>> - -[[encoding_and_decoding_functions]] -== Encoding and Decoding Functions - -If the test port is used as protocol module, the following encoder and decoder funcions are available: - -[options="header"] -|===================================================== -|Name |Type of formal parameters |Type of return value -|`enc_HTTPMessage` |HTTPMessage |octetstring -|`dec_HTTPMessage` |in octetstring stream + -inout HTTPMessage msg + -in boolean socket debugging |integer -|===================================================== - -The encoder function returns with an octetstring as the encoded form of the `HTTPMessage` structure. - -The decoder function returns with the number of not processed octets of the input octetstring stream and the decoded message in its inout parameter. - -If the return value is not zero, there are not processed octetets. Those octets can be gathered from the original octetstring by the user and can be processed by calling the decoding function once again with the modified stream. This process is necessary only if more http message can be found in the original stream. - -== Message Length Function - -The following function can be used to calculate the length of the received HTTP message. It returns the length of the received HTTP message in octets or -1 if the length can not be determined. - -[cols=",,",options="header",] -|===================================================== -|Name |Type of formal parameters |Type of return value -|`f_HTTPMessage_len` |in octetstring stream |integer -|===================================================== - -== Closing Down - -=== Close - -The `Close` shuts down the client connection between the test port and the IUT. The `client_id` parameter of the `Close` ASP identifies the connection to be closed. If it is set to omit, all current connections will be closed. - -The `Half_close` ASP indicates that the remote end closed the connection. - -=== Shutdown - -Instructs the test port to close the server listening port. The client connections will remain open. The server will not accept further client connections until a `Listen` ASP is sent again. - -For detailed operation see the User Guide <<_3, [3]>> - -== Logging - -The type of information that will be logged can be categorized into two groups. The first one consists of information that shows the flow of the internal execution of the test port, e.g. important events, which function that is currently executing etc. The second group deals with presenting valuable data, e.g. presenting the content of a PDU. The logging printouts will be directed to the RTE log file. The user is able to decide whether logging is to take place or not by setting appropriate configuration data, see <<_2, [2]>> - - -== Error Handling - -Erroneous behavior detected during runtime may be presented on the console and directed into the RTE log file. The following two types of messages are taken care of: - -* Errors: information about errors detected is provided. If an error occurs the execution of the test case will stop immediately. The test ports will be unmapped. -* Warnings: information about warnings detected is provided. The execution continues after the warning is shown. - -== SSL Functionality - -The SSL implementation is based on the same OpenSSL as TITAN. Protocols SSLv2, SSLv3 and TLSv1 are supported. - -=== Compilation - -The usage of SSL and even the compilation of the SSL related code parts are optional. This is because SSL related code parts cannot be compiled without the OpenSSL installed. - -The compilation of SSL related code parts can be disabled by not defining the `AS_USE_SSL` macro in the _Makefile_ during the compilation. If the macro is defined in the _Makefile_, the SSL code parts are compiled to the executable test code. The usage of the SSL can be enabled/disabled by setting the `use_ssl` field of the `Connect`/`Listen` ASPs. For more information about the compilation see <<_3, [3]>> - -=== Authentication - -The test port provides both server side and client side authentication. When authenticating the other side, a certificate is requested and the own trusted certificate authorities’ list is sent. The received certificate is verified whether it is a valid certificate or not (the public and private keys are matching). No further authentication is performed (e.g. whether hostname is present in the certificate). The verification can be enabled/disabled in the runtime configuration file, see <<_3, [3]>>. - -In server mode the test port will always send its certificate and trusted certificate authorities’ list to its clients. If verification is enabled in the runtime configuration file, the server will request for a client’s certificate. If the client does not send a valid certificate, the connection will be refused. If verification is disabled, then the connection will be accepted even if the client does not send or send an invalid certificate. - -In client mode the test port will send its certificate to the server on the server’s request. If verification is enabled in the runtime configuration file, the client will send its own trusted certificate authorities’ list to the server and will verify the server’s certificate as well. If the server’s certificate is not valid, the SSL connection will not be established. If verification is disabled, then the connection will be accepted even if the server does not send or send an invalid certificate. - -The own certificate(s), the own private key file, the optional password protecting the own private key file and the trusted certificate authorities’ list file can be specified in the runtime configuration file, see <<_3, [3]>>. - -The test port will check the consistency between the own private key and the public key (based on the own certificate) automatically. If the check fails, a warning is issued and execution continues. - -=== Other Features - -Both client and server support SSLv2, SSLv3 and TLSv1, however no restriction is possible to use only a subset of these. The used protocol will be selected during the SSL handshake automatically. - -The usage of SSL session resumption can be enabled/disabled in the runtime configuration file, see <<_3, [3]>>. - -The allowed ciphering suites can be restricted in the runtime configuration file, see <<_3, [3]>>. - -The SSL re-handshaking requests are accepted and processed, however re-handshaking cannot be initiated from the test port. - -== Limitations - -* No restriction is possible on the used protocols (e.g. use only SSLv2); it is determined during SSL handshake between the peers. -* SSL re-handshaking cannot be initiated from the test port. -* The own certificate file(s), the own private key file and the trusted certificate authorities’ list file must be in PEM format. Other formats are not supported. - -= Terminology - -*Sockets:* + -The sockets is a method for communication between a client program and a server program in a network. A socket is defined as "the endpoint in a connection." Sockets are created and used with a set of programming requests or "function calls" sometimes called the sockets application programming interface (API). The most common sockets API is the Berkeley UNIX C language interface for sockets. Sockets can also be used for communication between processes within the same computer. - -= Abbreviations - -API:: Application Program Interface - -ASP:: Abstract Service Primitive - -IUT:: Implementation Under Test - -RTE:: Run-Time Environment - -HTTP:: Hypertext Transfer Protocol - -SUT:: System Under Test - -SSL:: Secure Sockets Layer - -TTCN-3:: Testing and Test Control Notation version 3 - -= References - -[[_1]] -[1] ETSI ES 201 873-1 v3.1.1 (2005-06)The Testing and Test Control Notation version 3; Part 1: Core Language - -[[_2]] -[2] TITAN User Guide - -[[_3]] -[3] HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide - -[[_4]] -[4] http://www.ietf.org/rfc/rfc2616.txt[RFC 2616] + -Hypertext Transfer Protocol – HTTP/1.1 - -[[_5]] -[5] OpenSSL toolkit + -http://www.openssl.org diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf deleted file mode 100644 index dad4f64a86c52bd04ccd13d8bd753b38e337491e..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification.pdf +++ /dev/null @@ -1,7798 +0,0 @@ -%PDF-1.3 -% -1 0 obj -<< /Title (HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Function Specification) -/Author -/Creator (Asciidoctor PDF 1.5.0.alpha.16, based on Prawn 2.2.2) -/Producer -/ModDate (D:20180815082627+02'00') -/CreationDate (D:20180815082627+02'00') ->> -endobj -2 0 obj -<< /Type /Catalog -/Pages 3 0 R -/Names 14 0 R -/Outlines 144 0 R -/PageLabels 174 0 R -/PageMode /UseOutlines -/OpenAction [7 0 R /FitH 842.89] -/ViewerPreferences << /DisplayDocTitle true ->> ->> -endobj -3 0 obj -<< /Type /Pages -/Count 10 -/Kids [7 0 R 10 0 R 12 0 R 30 0 R 37 0 R 47 0 R 53 0 R 65 0 R 75 0 R 81 0 R] ->> -endobj -4 0 obj -<< /Length 2 ->> -stream -q - -endstream -endobj -5 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 4 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] ->> ->> -endobj -6 0 obj -<< /Length 950 ->> -stream -q -/DeviceRGB cs -0.6 0.6 0.6 scn -/DeviceRGB CS -0.6 0.6 0.6 SCN - -BT -102.0202 361.6965 Td -/F1.0 27 Tf -[<485454506d73675f434e4c3131333331322054> 29.7852 <65737420506f727420666f72>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6 0.6 0.6 scn -0.6 0.6 0.6 SCN - -BT -73.5373 327.6765 Td -/F1.0 27 Tf -[<5454> 20.0195 <434e2d332054> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e2c2046756e6374696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6 0.6 0.6 scn -0.6 0.6 0.6 SCN - -BT -381.341 293.6565 Td -/F1.0 27 Tf -<53706563696669636174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.0941 0.0941 0.0941 scn -0.0941 0.0941 0.0941 SCN - -BT -467.311 259.1849 Td -/F1.0 13 Tf -<49737476876e20ee76877279> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -315.5453 229.3714 Td -/F1.0 10.5 Tf -[<56> 60.0586 <657273696f6e203135352031372d434e4c20313133203331322c20526576> 69.8242 <2e20452c20323031302d31322d3134>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q - -endstream -endobj -7 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 6 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R ->> ->> ->> -endobj -8 0 obj -<< /Type /Font -/BaseFont /43219f+NotoSerif -/Subtype /TrueType -/FontDescriptor 176 0 R -/FirstChar 32 -/LastChar 255 -/Widths 178 0 R -/ToUnicode 177 0 R ->> -endobj -9 0 obj -<< /Length 19961 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 782.394 Td -/F2.0 22 Tf -[<54> 29.7852 <61626c65206f6620436f6e74656e7473>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 751.856 Td -/F1.0 10.5 Tf -<486f7720746f2052656164205468697320446f63756d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -193.0981 751.856 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 751.856 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 751.856 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 733.376 Td -/F1.0 10.5 Tf -<53636f7065> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -80.8636 733.376 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 733.376 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 733.376 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 714.896 Td -/F1.0 10.5 Tf -[<47656e6572> 20.0195 <616c>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -91.5526 714.896 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 714.896 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 714.896 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 696.416 Td -/F1.0 10.5 Tf -<46756e6374696f6e2053706563696669636174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -161.0311 696.416 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 696.416 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 696.416 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 677.936 Td -/F1.0 10.5 Tf -<496d706c656d656e746174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -144.9976 677.936 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 677.936 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 677.936 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 659.456 Td -/F1.0 10.5 Tf -<456e7669726f6e6d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -139.6531 659.456 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 659.456 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 659.456 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 640.976 Td -/F1.0 10.5 Tf -<4d6f64756c6520537472756374757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -161.0311 640.976 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 640.976 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 640.976 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 622.496 Td -/F1.0 10.5 Tf -[<436f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -134.3086 622.496 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 622.496 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 622.496 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 604.016 Td -/F1.0 10.5 Tf -<4e6f74696669636174696f6e2041535073> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -161.0311 604.016 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 604.016 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 604.016 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 585.536 Td -/F1.0 10.5 Tf -<53746172742050726f636564757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -139.6531 585.536 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 585.536 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 585.536 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 567.056 Td -/F1.0 10.5 Tf -<53656e64696e672f526563656976696e672048545450204d65737361676573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -235.8541 567.056 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 567.056 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 567.056 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 548.576 Td -/F1.0 10.5 Tf -[<48545450204d657373616765732053656e742062> 20.0195 <79207468652054> 29.7852 <65737420506f7274>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -257.2321 548.576 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 548.576 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 548.576 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 530.096 Td -/F1.0 10.5 Tf -<456e636f64696e6720616e64204465636f64696e672046756e6374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -230.5096 530.096 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 530.096 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 530.096 Td -/F1.0 10.5 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 511.616 Td -/F1.0 10.5 Tf -<4d657373616765204c656e6774682046756e6374696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -187.7536 511.616 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 511.616 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 511.616 Td -/F1.0 10.5 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 493.136 Td -/F1.0 10.5 Tf -<436c6f73696e6720446f776e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -128.9641 493.136 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 493.136 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 493.136 Td -/F1.0 10.5 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 474.656 Td -/F1.0 10.5 Tf -<436c6f7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -102.2416 474.656 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 474.656 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 474.656 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 456.176 Td -/F1.0 10.5 Tf -<53687574646f776e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -123.6196 456.176 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 456.176 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 456.176 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 437.696 Td -/F1.0 10.5 Tf -<4c6f6767696e67> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -102.2416 437.696 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 437.696 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 437.696 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 419.216 Td -/F1.0 10.5 Tf -<4572726f722048616e646c696e67> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -139.6531 419.216 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 419.216 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 419.216 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 400.736 Td -/F1.0 10.5 Tf -<53534c2046756e6374696f6e616c697479> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -150.3421 400.736 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 400.736 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 400.736 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 382.256 Td -/F1.0 10.5 Tf -<436f6d70696c6174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -134.3086 382.256 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 382.256 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 382.256 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 363.776 Td -/F1.0 10.5 Tf -[<41> 20.0195 <757468656e7469636174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -150.3421 363.776 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 363.776 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 363.776 Td -/F1.0 10.5 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 345.296 Td -/F1.0 10.5 Tf -[<4f746865722046> 40.0391 <65617475726573>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -150.3421 345.296 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 345.296 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 345.296 Td -/F1.0 10.5 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 326.816 Td -/F1.0 10.5 Tf -<4c696d69746174696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -118.2751 326.816 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 326.816 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 326.816 Td -/F1.0 10.5 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 308.336 Td -/F1.0 10.5 Tf -[<54> 29.7852 <65726d696e6f6c6f6779>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -112.9306 308.336 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 308.336 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 308.336 Td -/F1.0 10.5 Tf -<37> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 289.856 Td -/F1.0 10.5 Tf -<416262726576696174696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -123.6196 289.856 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 289.856 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 289.856 Td -/F1.0 10.5 Tf -<37> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 271.376 Td -/F1.0 10.5 Tf -<5265666572656e636573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -107.5861 271.376 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 271.376 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 271.376 Td -/F1.0 10.5 Tf -<37> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q - -endstream -endobj -10 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 9 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R ->> ->> -/Annots [88 0 R 89 0 R 90 0 R 91 0 R 92 0 R 93 0 R 94 0 R 95 0 R 96 0 R 97 0 R 98 0 R 99 0 R 100 0 R 101 0 R 102 0 R 103 0 R 104 0 R 105 0 R 106 0 R 107 0 R 108 0 R 109 0 R 110 0 R 111 0 R 112 0 R 113 0 R 114 0 R 115 0 R 116 0 R 117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R] ->> -endobj -11 0 obj -<< /Length 8552 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 782.394 Td -/F2.0 22 Tf -<486f7720746f2052656164205468697320446f63756d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0951 Tw - -BT -48.24 753.206 Td -/F1.0 10.5 Tf -<54686973206973207468652046756e6374696f6e2053706563696669636174696f6e20666f722074686520485454506d73675f434e4c313133333132202863616c6c656420485454502066726f6d206e6f77206f6e29207465737420706f72742e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1357 Tw - -BT -48.24 737.426 Td -/F1.0 10.5 Tf -[<5468652048545450207465737420706f727420697320646576656c6f70656420666f7220746865205454> 20.0195 <434e2d332054> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e2e205468697320646f63756d656e7420697320696e74656e64656420746f206265>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 721.646 Td -/F1.0 10.5 Tf -[<7265616420746f67657468657220776974682055736572> -29.7852 ] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -209.4547 721.646 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 677.534 Td -/F2.0 22 Tf -<53636f7065> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.523 Tw - -BT -48.24 648.346 Td -/F1.0 10.5 Tf -<54686520707572706f7365206f66207468697320646f63756d656e7420697320746f2073706563696679207468652066756e6374696f6e616c697479206f66207468652048545450207465737420706f72742e2054686520646f63756d656e74206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1825 Tw - -BT -48.24 632.566 Td -/F1.0 10.5 Tf -[<7072696d6172696c792061646472657373656420746f2074686520656e64207573657273206f66207468652070726f647563742e204261736963206b6e6f776c65646765206f66205454> 20.0195 <434e2d332c20544954> 60.0586 <414e205454> 20.0195 <434e2d332054> 29.7852 <657374>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 616.786 Td -/F1.0 10.5 Tf -<4578656375746f7220616e642074686520485454502070726f746f636f6c2069732076616c7561626c65207768656e2072656164696e67207468697320646f63756d656e74202873656520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -436.194 616.786 Td -/F1.0 10.5 Tf -<5b315d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -449.6025 616.786 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -474.1515 616.786 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.768 Tw - -BT -48.24 589.006 Td -/F1.0 10.5 Tf -[<5468697320646f63756d656e74206973206261736564206f6e2073706563696669636174696f6e73206f6620487970657274657874205472> 20.0195 <616e736665722050726f746f636f6c202848545450312e312920646566696e65642062> 20.0195 <7920>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -0.768 Tw - -BT -527.5415 589.006 Td -/F1.0 10.5 Tf -<524643> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 573.226 Td -/F1.0 10.5 Tf -<32363136> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -71.718 573.226 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 523.774 Td -/F2.0 27 Tf -[<47656e6572> 20.0195 <616c>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.3523 Tw - -BT -48.24 493.126 Td -/F1.0 10.5 Tf -[<54686520485454502054> 29.7852 <65737420506f7274206d616b> 20.0195 <657320706f737369626c6520746f206578656375746520746573742073756974657320746f776172647320616e20495554> 89.8438 <2e20546865207465737420706f727420616c6c6f7773>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2291 Tw - -BT -48.24 477.346 Td -/F1.0 10.5 Tf -[<73656e64696e6720616e6420726563656976696e672048545450206d65737361676573206265747765656e20746865207465737420737569746520616e64204955542076696120612054> 20.0195 <43502f495020736f636b> 20.0195 <6574>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 461.566 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.685 Tw - -BT -48.24 433.786 Td -/F1.0 10.5 Tf -[<54686520485454502054> 29.7852 <65737420506f72742063616e206265207573656420617320612070726f746f636f6c206d6f64756c652076696120656e636f64696e6720616e64206465636f64696e672066756e6374696f6e732c20736565>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 418.006 Td -/F1.0 10.5 Tf -<456e636f64696e6720616e64204465636f64696e672046756e6374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -218.3295 418.006 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 390.226 Td -/F1.0 10.5 Tf -<426f7468204950763420616e6420495076362061726520737570706f727465642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6256 Tw - -BT -48.24 362.446 Td -/F1.0 10.5 Tf -<546865207465737420706f72742063616e2068616e646c65206d756c7469706c6520636f6e6e656374696f6e732e20457665727920636f6e6e656374696f6e206765747320616e2027696427207768656e2069742069732065737461626c69736865642e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.3239 Tw - -BT -48.24 346.666 Td -/F1.0 10.5 Tf -<5768656e2073656e64696e672048545450206d657373616765732c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.3239 Tw - -BT -240.8292 346.666 Td -/F3.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.3239 Tw - -BT -288.0792 346.666 Td -/F1.0 10.5 Tf -[<20706172> 20.0195 <616d657465722073656c656374732074686520636f6e6e656374696f6e206f6e20776869636820746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.7291 Tw - -BT -48.24 330.886 Td -/F1.0 10.5 Tf -<6d6573736167652073686f756c642062652073656e742e2049662069742069732073657420746f20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.7291 Tw - -BT -246.407 330.886 Td -/F3.0 10.5 Tf -<6f6d6974> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.7291 Tw - -BT -267.407 330.886 Td -/F1.0 10.5 Tf -<2c207468652048545450206d6573736167652077696c6c2062652073656e74206f6e2074686520666972737420617661696c61626c65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 315.106 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.5376 Tw - -BT -48.24 287.326 Td -/F1.0 10.5 Tf -[<54686520636f6d6d756e69636174696f6e206265747765656e207468652048545450207465737420706f727420616e642074686520544954> 60.0586 <414e2052> 20.0195 <544520697320646f6e652062> 20.0195 <79207573696e672074686520415049>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 271.546 Td -/F1.0 10.5 Tf -<66756e6374696f6e732064657363726962656420696e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -162.3435 271.546 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4851 Tw - -BT -48.24 243.766 Td -/F1.0 10.5 Tf -[<54686520485454502070726f746f636f6c206d6573736167657320617265207468656e207472> 20.0195 <616e736665727265642062> 20.0195 <79207468652048545450207465737420706f727420746f2074686520495554207468726f7567682061>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 227.986 Td -/F1.0 10.5 Tf -<6e6574776f726b20636f6e6e656374696f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5792 Tw - -BT -48.24 200.206 Td -/F1.0 10.5 Tf -[<53656520746865207472> 20.0195 <616e73666572206f6620485454502070726f746f636f6c206d657373616765732062> 20.0195 <79207468652048545450207465737420706f727420746f2074686520495554207468726f7567682061206e6574776f726b>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 184.426 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e2062656c6f773a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -12 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 11 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F3.0 26 0 R ->> -/XObject << /Stamp1 142 0 R ->> ->> -/Annots [18 0 R 20 0 R 21 0 R 22 0 R 23 0 R 25 0 R 27 0 R] ->> -endobj -13 0 obj -[12 0 R /XYZ 0 841.89 null] -endobj -14 0 obj -<< /Type /Names -/Dests 15 0 R ->> -endobj -15 0 obj -<< /Kids [61 0 R 62 0 R] ->> -endobj -16 0 obj -[12 0 R /XYZ 0 841.89 null] -endobj -17 0 obj -<< /Type /Font -/BaseFont /c62bea+NotoSerif-Bold -/Subtype /TrueType -/FontDescriptor 180 0 R -/FirstChar 32 -/LastChar 255 -/Widths 182 0 R -/ToUnicode 181 0 R ->> -endobj -18 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [209.4547 718.58 222.8632 732.86] -/Type /Annot ->> -endobj -19 0 obj -[12 0 R /XYZ 0 705.83 null] -endobj -20 0 obj -<< /Border [0 0 0] -/Dest (_1) -/Subtype /Link -/Rect [436.194 613.72 449.6025 628.0] -/Type /Annot ->> -endobj -21 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [474.1515 613.72 487.56 628.0] -/Type /Annot ->> -endobj -22 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.ietf.org/rfc/rfc2616.txt) ->> -/Subtype /Link -/Rect [527.5415 585.94 547.04 600.22] -/Type /Annot ->> -endobj -23 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.ietf.org/rfc/rfc2616.txt) ->> -/Subtype /Link -/Rect [48.24 570.16 71.718 584.44] -/Type /Annot ->> -endobj -24 0 obj -[12 0 R /XYZ 0 557.41 null] -endobj -25 0 obj -<< /Border [0 0 0] -/Dest (encoding_and_decoding_functions) -/Subtype /Link -/Rect [48.24 414.94 218.3295 429.22] -/Type /Annot ->> -endobj -26 0 obj -<< /Type /Font -/BaseFont /96a564+mplus1mn-regular -/Subtype /TrueType -/FontDescriptor 184 0 R -/FirstChar 32 -/LastChar 255 -/Widths 186 0 R -/ToUnicode 185 0 R ->> -endobj -27 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [162.3435 268.48 175.752 282.76] -/Type /Annot ->> -endobj -28 0 obj -<< /Type /XObject -/Subtype /Image -/Height 170 -/Width 555 -/BitsPerComponent 8 -/ColorSpace /DeviceRGB -/Length 3949 -/Filter [/FlateDecode] -/DecodeParms [<< /Predictor 15 -/Colors 3 -/BitsPerComponent 8 -/Columns 555 ->>] ->> -stream -xi0aXq3*S%$`Ehb &4Et:@j@YD d$Et:@j@YD d$Et:Oߔ̎L~O O}61CrcD -x] -Z-g )8 -s/f7Y6_+#`<ˊaƙ+;2hɝ Th+du{r 0=&w%и?QE.h - \М@~lIq|蓵cT 1G3>(^GH.Cx@aR#hM }OD#`.Kph9g`h9ZC+. ږ@Cu:JDB5ȷ灜K9&}T %>HOg^F~x6|#9'.so"T@$*Ԓ@%:@ H t5 ,ԀNP":@ H t5 ,ԀNP":@ H t5 ,ԀNP":@ H t5o!x0@ -@AK0 -_2Z0 3Z|I (b1PLT\%..$d@PL@AK0 .$d@PL@AK0 .$d@PL@AK0 .$d@PL@AK0 .$d@PL@AK0 .$d@PL@AK0 .$d@P|K*u`K@%̕]*a@P-$g?PK@Yv/e.$tZ N|?vVL7 zCGh :@+HZA -7tV@# $Po(@S)GutЊ@pAL{;sX(fWH 2>Y1'η49ܒGJ޿wtl˛%ruh<0wmuyǖY@+H؜~*JUy¥,!J46=K.?j "#6.WYl:EpBgH@ <?$j@! @#C$H@ <?$j@! T@v?=,EYMxoFۨI'g|)tpi;o9.$ݺ:p>Cjx3*21ܿӫyNܣA~Ccgnp2L$ނàzzF5NrlhYOph7բ&W"R Hs v9$3ެ"ꁸ5#Z[9ۣ5b:NUxDa#CP:NO;@ؙ@ͪ!M5z9|it84'^尻یNb'u9 8O7v :@]"SAy3TZgXbk4Tqe P5Y{(yz<.ʰ@[Tqhɥ~: $H Grxvv]SbpLbt]5ó4N]j~HYgHs@)@ʼn\ye#Zj^3knC -wpm;XzZYb]ʑS Jד[[n\E^z-]_%Ro1vW9{ҫlf[b3@?ZBNXƆP.6 @_yj} ›A)GۖU[qedo-~M}k,vl(+bQG ^e Cg"$ڃ;Gʕ-3{o M ,'V=y'F*5@(46 T`u =vP>7潽I 9 -WG;Ek>y]Vl5p&#pz}j&bO]#'$;}G`vխS2]m -d JyyE;EiR73ѝpn_V{zRh45/o%9_"'3qAwɹf5=3-zMk1)I 'PPgL -f̑0~.w8|uص~؎e `:֥:^n &ٚ)uһ'P4 {$P75B$Pq'aohW,; (<Ў~_(@oew#v eg*@J A! @#C$H@ <?$j'_:BS)U -endstream -endobj -29 0 obj -<< /Length 6747 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN - -q -416.25 0.0 0.0 127.5 48.24 678.39 cm -/I1 Do -Q -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 632.754 Td -/F2.0 27 Tf -<46756e6374696f6e2053706563696669636174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 585.774 Td -/F2.0 22 Tf -<496d706c656d656e746174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 544.526 Td -/F2.0 18 Tf -<456e7669726f6e6d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.2724 Tw - -BT -48.24 516.506 Td -/F1.0 10.5 Tf -[<5468652048545450207465737420706f7274206d616b> 20.0195 <657320757365206f66207468652073657276696365732070726f76696465642062> 20.0195 <792074686520554e495820736f636b> 20.0195 <657420696e746572666163652e205768656e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.7973 Tw - -BT -48.24 500.726 Td -/F1.0 10.5 Tf -[<636f6e6e656374696e6720746f20616e2053534c20656e61626c656420495554> 89.8438 <2c2074686520636f6e6e656374696f6e2069732073656375726564207769746820746865204f70656e53534c20746f6f6c6b6974206261736564206f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4307 Tw - -BT -48.24 484.946 Td -/F1.0 10.5 Tf -[<636f6e6669677572> 20.0195 <6174696f6e20646174612e204576657279207465737420706f72742069732061626c6520746f2068616e646c65206f6e65206c697374656e696e6720287365727665722920706f727420616e64206d756c7469706c652054> 20.0195 <4350>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 469.166 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e732e2050726f787920697320737570706f727465642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 429.326 Td -/F2.0 18 Tf -<4d6f64756c6520537472756374757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 401.306 Td -/F1.0 10.5 Tf -[<5468652048545450207465737420706f727420697320696d706c656d656e74656420696e2074686520666f6c6c6f77696e67205454> 20.0195 <434e2d33206d6f64756c65733a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 373.526 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 373.526 Td -/F4.0 10.5 Tf -<485454506d73675f54797065732e7474636e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 351.746 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 351.746 Td -/F4.0 10.5 Tf -<485454506d73675f506f7274547970652e7474636e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.1417 Tw - -BT -48.24 323.966 Td -/F1.0 10.5 Tf -<5468652066696c6520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.1417 Tw - -BT -96.7593 323.966 Td -/F4.0 10.5 Tf -<485454506d73675f54797065732e7474636e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.1417 Tw - -BT -199.1448 323.966 Td -/F1.0 10.5 Tf -[<20646566696e6573207468652048545450206d65737361676520747970657320616e64204153507320746f20636f6e74726f6c207468652054> 20.0195 <4350>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8967 Tw - -BT -48.24 308.186 Td -/F1.0 10.5 Tf -[<636f6e6e656374696f6e2c20667572746865726d6f726520636f6e7461696e7320746865206465636c6172> 20.0195 <6174696f6e206f6620746865206465636c6172> 20.0195 <6174696f6e206f662074686520656e636f64696e6720616e64206465636f64696e67>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 292.406 Td -/F1.0 10.5 Tf -<65787465726e616c2066756e6374696f6e732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 264.626 Td -/F1.0 10.5 Tf -<54686520706f7274207479706520697320646566696e656420696e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -182.3775 264.626 Td -/F4.0 10.5 Tf -<485454506d73675f506f7274547970652e7474636e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -301.206 264.626 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7813 Tw - -BT -48.24 236.846 Td -/F1.0 10.5 Tf -<54686520632b2b20696d706c656d656e746174696f6e206f6620746865207465737420706f727420616e642074686520656e636f64696e672d6465636f64696e672066756e6374696f6e732061726520636f6e7461696e656420696e20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 221.066 Td -/F1.0 10.5 Tf -<666f6c6c6f77696e672066696c65733a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 193.286 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 193.286 Td -/F4.0 10.5 Tf -[<485454506d73675f5054> 89.8438 <2e6868>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 171.506 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 171.506 Td -/F4.0 10.5 Tf -[<485454506d73675f5054> 89.8438 <2e6363>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 143.726 Td -/F1.0 10.5 Tf -<54686520656e636f64696e6720616e64206465636f64696e672066756e6374696f6e7320616c736f2068617665206265656e20696d706c656d656e74656420686572652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1357 Tw - -BT -48.24 115.946 Td -/F1.0 10.5 Tf -[<54686520706f7274206973207573696e6720746865204162737472> 20.0195 <6163745f536f636b> 20.0195 <65742c206120636f6d6d6f6e20636f6d706f6e656e742077697468207468652070726f64756374206e756d62657220434e4c20313133203338342c>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4636 Tw - -BT -48.24 100.166 Td -/F1.0 10.5 Tf -[<696d706c656d656e74696e67207468652062617369632073656e64696e672c20726563656976696e6720616e6420736f636b> 20.0195 <65742068616e646c696e6720726f7574696e65732e2054686520666f6c6c6f77696e672066696c65732073686f756c64>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 84.386 Td -/F1.0 10.5 Tf -[<626520696e636c7564656420696e20746865204d616b> 20.0195 <6566696c653a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 56.606 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 56.606 Td -/F4.0 10.5 Tf -[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6868>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -30 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 29 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/XObject << /I1 28 0 R -/Stamp2 143 0 R ->> -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F4.0 35 0 R ->> ->> ->> -endobj -31 0 obj -[30 0 R /XYZ 0 666.39 null] -endobj -32 0 obj -[30 0 R /XYZ 0 614.07 null] -endobj -33 0 obj -[30 0 R /XYZ 0 568.55 null] -endobj -34 0 obj -[30 0 R /XYZ 0 453.35 null] -endobj -35 0 obj -<< /Type /Font -/BaseFont /86b0d1+NotoSerif-Italic -/Subtype /TrueType -/FontDescriptor 188 0 R -/FirstChar 32 -/LastChar 255 -/Widths 190 0 R -/ToUnicode 189 0 R ->> -endobj -36 0 obj -<< /Length 10152 ->> -stream -q - --0.5 Tc -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -56.8805 793.926 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 793.926 Td -/F4.0 10.5 Tf -[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6363>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 749.814 Td -/F2.0 22 Tf -[<436f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1259 Tw - -BT -48.24 720.626 Td -/F1.0 10.5 Tf -[<54686520636f6e6669677572> 20.0195 <6174696f6e206f66207468652048545450207465737420706f727420697320646f6e652062> 20.0195 <792074686520544954> 60.0586 <414e2052> 20.0195 <544520636f6e6669677572> 20.0195 <6174696f6e2066696c652e20546865206465736372697074696f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 704.846 Td -/F1.0 10.5 Tf -[<6f662074686520737065636966696320706172> 20.0195 <616d65746572732063616e20626520666f756e6420696e207468652048545450207465737420706f72742055736572> -29.7852 ] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -419.6225 704.846 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 665.006 Td -/F2.0 18 Tf -<4e6f74696669636174696f6e2041535073> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8504 Tw - -BT -48.24 636.986 Td -/F1.0 10.5 Tf -[<546865207465737420706f72742069732061626c6520746f2070726f766964652074686520726573756c74206f662074686520436f6e6e6563742c204c697374656e206f706572> 20.0195 <6174696f6e732c20616e6420696e666f726d2074686520736572766572>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.0039 Tw - -BT -48.24 621.206 Td -/F1.0 10.5 Tf -<746573742073756974652069662061206e657720636c69656e742068617320636f6e6e6563746564206f72207468652072656d6f746520656e642068617320646973636f6e6e6563746564206120737065636966696320636f6e6e656374696f6e2e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 605.426 Td -/F1.0 10.5 Tf -[<54686973206265686176696f72206973207377697463686564206f6e2062> 20.0195 <792073657474696e672074686520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -263.4583 605.426 Td -/F3.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -373.7083 605.426 Td -/F1.0 10.5 Tf -[<207465737420706f727420706172> 20.0195 <616d6574657220746f20>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -488.7041 605.426 Td -/F5.0 10.5 Tf -<2279657322> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -514.9541 605.426 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 561.314 Td -/F2.0 22 Tf -<53746172742050726f636564757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4813 Tw - -BT -48.24 532.126 Td -/F1.0 10.5 Tf -[<416674657220746865207465737420706f7274206973206d61707065642062> 20.0195 <7920544954> 60.0586 <414e2052> 20.0195 <544520746f20746865204955542073797374656dd57320696e7465726661636520706f72742c20697420776169747320666f72206120>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4813 Tw - -BT -510.29 532.126 Td -/F3.0 10.5 Tf -<436f6e6e656374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4813 Tw - -BT -547.04 532.126 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 516.346 Td -/F1.0 10.5 Tf -<6f72206120> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -70.584 516.346 Td -/F3.0 10.5 Tf -<4c697374656e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -102.084 516.346 Td -/F1.0 10.5 Tf -[<20415350> 120.1172 <2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1022 Tw - -BT -48.24 488.566 Td -/F1.0 10.5 Tf -<54686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1022 Tw - -BT -69.7622 488.566 Td -/F3.0 10.5 Tf -<436f6e6e656374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1022 Tw - -BT -106.5122 488.566 Td -/F1.0 10.5 Tf -<204153502073657473207570206120636f6e6e656374696f6e20746f7761726420616e2048545450207365727665722c206f6e20776869636820696e7374616e636573206f662048545450204d65737361676573> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 472.786 Td -/F1.0 10.5 Tf -<63616e2062652073656e7420616e642072656365697665642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8506 Tw - -BT -48.24 445.006 Td -/F1.0 10.5 Tf -<54686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.8506 Tw - -BT -71.5106 445.006 Td -/F3.0 10.5 Tf -<4c697374656e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8506 Tw - -BT -103.0106 445.006 Td -/F1.0 10.5 Tf -[<2041535020636f6d6d616e647320746865207465737420706f727420746f207761697420666f7220696e636f6d696e6720636f6e6e656374696f6e732066726f6d204854545020636c69656e74732062> 20.0195 <79>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 429.226 Td -/F1.0 10.5 Tf -<6f70656e696e672061206c697374656e696e6720706f72742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 401.446 Td -/F1.0 10.5 Tf -[<46> 40.0391 <6f722064657461696c6564206f706572> 20.0195 <6174696f6e2073656520746865205573657220477569646520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -257.2839 401.446 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 357.334 Td -/F2.0 22 Tf -<53656e64696e672f526563656976696e672048545450204d65737361676573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 316.086 Td -/F2.0 18 Tf -[<48545450204d657373616765732053656e742062> 20.0195 <79207468652054> 29.7852 <65737420506f7274>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2006 Tw - -BT -48.24 288.066 Td -/F1.0 10.5 Tf -<5468652048545450207465737420706f72742069732061626c6520746f2073656e6420616e64207265636569766520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.2006 Tw - -BT -280.6474 288.066 Td -/F3.0 10.5 Tf -<485454504d657373616765> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2006 Tw - -BT -338.3974 288.066 Td -/F1.0 10.5 Tf -<20737472756374757265732e2054686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.2006 Tw - -BT -419.3346 288.066 Td -/F3.0 10.5 Tf -<485454504d657373616765> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2006 Tw - -BT -477.0846 288.066 Td -/F1.0 10.5 Tf -<2063616e206265206f6e65206f66> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 272.286 Td -/F1.0 10.5 Tf -<74686520666f6c6c6f77696e672074797065733a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 244.506 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 246.69 Td -/F3.0 10.5 Tf -<4854545052657175657374> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.0171 Tw - -BT -66.24 220.506 Td -/F1.0 10.5 Tf -[<5468652052657175657374206d65737361676520726570726573656e747320612073696e676c65207265717565737420746f20706572666f726d2062> 20.0195 <79207468652048545450207365727665722c20757375616c6c7920746f>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 204.726 Td -/F1.0 10.5 Tf -<6163636573732061207265736f75726365206f6e20746865207365727665722e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 176.946 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 179.13 Td -/F3.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1955 Tw - -BT -66.24 152.946 Td -/F1.0 10.5 Tf -[<54686520526573706f6e7365206d6573736167652069732073656e742062> 20.0195 <792074686520485454502073657276657220746f2074686520636c69656e742e20497420696e636c75646573207468652072657475726e2073746174757320636f6465>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 137.166 Td -/F1.0 10.5 Tf -<6f6620746865207265717565737420616e642074686520726571756573746564207265736f757263652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 109.386 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 111.57 Td -/F3.0 10.5 Tf -<48545450526571756573745f62696e6172795f626f6479> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4967 Tw - -BT -66.24 85.386 Td -/F1.0 10.5 Tf -<5468652073616d652061732074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.4967 Tw - -BT -158.5783 85.386 Td -/F3.0 10.5 Tf -<4854545052657175657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4967 Tw - -BT -216.3283 85.386 Td -/F1.0 10.5 Tf -[<206d6573736167652e2049742069732070617373656420746f205454> 20.0195 <434e207768656e2074686520626f6479206f6620746865206d657373616765>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 69.606 Td -/F1.0 10.5 Tf -[<636f6e7461696e73206e6f6e2d61736369692063686172> 20.0195 <6163746572732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -37 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 36 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F4.0 35 0 R -/F2.0 17 0 R -/F3.0 26 0 R -/F5.0 41 0 R ->> -/XObject << /Stamp1 142 0 R ->> ->> -/Annots [39 0 R 43 0 R] ->> -endobj -38 0 obj -[37 0 R /XYZ 0 778.11 null] -endobj -39 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [419.6225 701.78 433.031 716.06] -/Type /Annot ->> -endobj -40 0 obj -[37 0 R /XYZ 0 689.03 null] -endobj -41 0 obj -<< /Type /Font -/BaseFont /8b258c+mplus1mn-italic -/Subtype /TrueType -/FontDescriptor 192 0 R -/FirstChar 32 -/LastChar 255 -/Widths 194 0 R -/ToUnicode 193 0 R ->> -endobj -42 0 obj -[37 0 R /XYZ 0 589.61 null] -endobj -43 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [257.2839 398.38 270.6924 412.66] -/Type /Annot ->> -endobj -44 0 obj -[37 0 R /XYZ 0 385.63 null] -endobj -45 0 obj -[37 0 R /XYZ 0 340.11 null] -endobj -46 0 obj -<< /Length 16231 ->> -stream -q - --0.5 Tc -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -56.8805 793.926 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 796.11 Td -/F3.0 10.5 Tf -<48545450526573706f6e73655f62696e6172795f626f6479> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1686 Tw - -BT -66.24 769.926 Td -/F1.0 10.5 Tf -<5468652073616d652061732074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.1686 Tw - -BT -157.2658 769.926 Td -/F3.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1686 Tw - -BT -220.2658 769.926 Td -/F1.0 10.5 Tf -[<206d6573736167652e2049742069732070617373656420746f205454> 20.0195 <434e207768656e2074686520626f6479206f6620746865206d657373616765>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 754.146 Td -/F1.0 10.5 Tf -[<636f6e7461696e73206e6f6e2d61736369692063686172> 20.0195 <6163746572732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -48.24 720.366 Td -/F1.0 10.5 Tf -<41706172742066726f6d2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3626 Tw - -BT -129.6288 720.366 Td -/F3.0 10.5 Tf -<4854545052657175657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -187.3788 720.366 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3626 Tw - -BT -214.6529 720.366 Td -/F3.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -277.6529 720.366 Td -/F1.0 10.5 Tf -<20415350732061626f76652c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3626 Tw - -BT -366.8513 720.366 Td -/F3.0 10.5 Tf -<6572726f6e6f75735f6d7367> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -429.8513 720.366 Td -/F1.0 10.5 Tf -[<2069732072656365697665642062> 20.0195 <79207468652074657374>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 704.586 Td -/F1.0 10.5 Tf -<706f727420616e642073656e7420746f2074686520746573742073756974653a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 676.806 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.4395 Tw - -BT -66.24 676.806 Td -/F3.0 10.5 Tf -<485454505f6572726f6e6f75735f6d7367> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4395 Tw - -BT -155.49 676.806 Td -/F1.0 10.5 Tf -<2049662061206d657373616765206973207265636569766564206f6e2074686520636f6e6e656374696f6e2c2077686963682063616e206e6f74206265206465636f6465642061732061> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1328 Tw - -BT -66.24 661.026 Td -/F1.0 10.5 Tf -<48545450312e31206f722048545450312e30206d6573736167652c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1328 Tw - -BT -236.0172 661.026 Td -/F3.0 10.5 Tf -<4d657373616765> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1328 Tw - -BT -272.7672 661.026 Td -/F1.0 10.5 Tf -<2077696c6c20636f6e7461696e20616e206572726f6e656f7573206d65737361676520776974682074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1328 Tw - -BT -497.165 661.026 Td -/F3.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1328 Tw - -BT -544.415 661.026 Td -/F1.0 10.5 Tf -<2c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 645.246 Td -/F1.0 10.5 Tf -<616e642073656e7420746f2074686520746573742073756974652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 617.466 Td -/F1.0 10.5 Tf -[<46> 40.0391 <6f722064657461696c6564206f706572> 20.0195 <6174696f6e2073656520746865205573657220477569646520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -257.2839 617.466 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 573.354 Td -/F2.0 22 Tf -<456e636f64696e6720616e64204465636f64696e672046756e6374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.1925 Tw - -BT -48.24 544.166 Td -/F1.0 10.5 Tf -<496620746865207465737420706f727420697320757365642061732070726f746f636f6c206d6f64756c652c2074686520666f6c6c6f77696e6720656e636f64657220616e64206465636f6465722066756e63696f6e7320617265> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 528.386 Td -/F1.0 10.5 Tf -<617661696c61626c653a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 492.29 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 492.29 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 492.29 166.267 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 472.01 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 472.01 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 472.01 166.267 20.28 re -f -0.0 0.0 0.0 scn -0.9765 0.9765 0.9765 scn -48.24 423.17 166.2665 48.84 re -f -0.0 0.0 0.0 scn -0.9765 0.9765 0.9765 scn -214.5065 423.17 166.2665 48.84 re -f -0.0 0.0 0.0 scn -0.9765 0.9765 0.9765 scn -380.773 423.17 166.267 48.84 re -f -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 512.57 m -214.5065 512.57 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 492.29 m -214.5065 492.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 512.82 m -48.24 491.665 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 512.82 m -214.5065 491.665 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -51.24 498.356 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 512.57 m -380.773 512.57 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 492.29 m -380.773 492.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 512.82 m -214.5065 491.665 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 512.82 m -380.773 491.665 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 498.356 Td -/F2.0 10.5 Tf -[<54797065206f6620666f726d616c20706172> 20.0195 <616d6574657273>] TJ -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 512.57 m -547.04 512.57 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 492.29 m -547.04 492.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 512.82 m -380.773 491.665 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 512.82 m -547.04 491.665 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 498.356 Td -/F2.0 10.5 Tf -<54797065206f662072657475726e2076616c7565> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 492.29 m -214.5065 492.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 472.01 m -214.5065 472.01 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 492.915 m -48.24 471.76 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 492.915 m -214.5065 471.76 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -51.24 480.26 Td -/F3.0 10.5 Tf -<656e635f485454504d657373616765> Tj -ET - -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 492.29 m -380.773 492.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 472.01 m -380.773 472.01 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 492.915 m -214.5065 471.76 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 492.915 m -380.773 471.76 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 478.076 Td -/F1.0 10.5 Tf -<485454504d657373616765> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 492.29 m -547.04 492.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 472.01 m -547.04 472.01 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 492.915 m -380.773 471.76 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 492.915 m -547.04 471.76 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 478.076 Td -/F1.0 10.5 Tf -<6f63746574737472696e67> Tj -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 472.01 m -214.5065 472.01 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 423.17 m -214.5065 423.17 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 472.26 m -48.24 422.92 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 472.26 m -214.5065 422.92 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -51.24 459.98 Td -/F3.0 10.5 Tf -<6465635f485454504d657373616765> Tj -ET - -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 472.01 m -380.773 472.01 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 423.17 m -380.773 423.17 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 472.26 m -214.5065 422.92 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 472.26 m -380.773 422.92 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 457.796 Td -/F1.0 10.5 Tf -<696e206f63746574737472696e672073747265616d> Tj -ET - - -BT -217.5065 443.516 Td -/F1.0 10.5 Tf -<696e6f757420485454504d657373616765206d7367> Tj -ET - - -BT -217.5065 429.236 Td -/F1.0 10.5 Tf -[<696e20626f6f6c65616e20736f636b> 20.0195 <657420646562756767696e67>] TJ -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 472.01 m -547.04 472.01 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 423.17 m -547.04 423.17 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 472.26 m -380.773 422.92 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 472.26 m -547.04 422.92 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 457.796 Td -/F1.0 10.5 Tf -<696e7465676572> Tj -ET - -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 399.206 Td -/F1.0 10.5 Tf -<54686520656e636f6465722066756e6374696f6e2072657475726e73207769746820616e206f63746574737472696e672061732074686520656e636f64656420666f726d206f662074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -430.8285 399.206 Td -/F3.0 10.5 Tf -<485454504d657373616765> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -488.5785 399.206 Td -/F1.0 10.5 Tf -<207374727563747572652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2573 Tw - -BT -48.24 371.426 Td -/F1.0 10.5 Tf -<546865206465636f6465722066756e6374696f6e2072657475726e73207769746820746865206e756d626572206f66206e6f742070726f636573736564206f6374657473206f662074686520696e707574206f63746574737472696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 355.646 Td -/F1.0 10.5 Tf -[<73747265616d20616e6420746865206465636f646564206d65737361676520696e2069747320696e6f757420706172> 20.0195 <616d657465722e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6854 Tw - -BT -48.24 327.866 Td -/F1.0 10.5 Tf -<4966207468652072657475726e2076616c7565206973206e6f74207a65726f2c20746865726520617265206e6f742070726f636573736564206f637465746574732e2054686f7365206f63746574732063616e2062652067617468657265642066726f6d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8423 Tw - -BT -48.24 312.086 Td -/F1.0 10.5 Tf -[<746865206f726967696e616c206f63746574737472696e672062> 20.0195 <7920746865207573657220616e642063616e2062652070726f6365737365642062> 20.0195 <792063616c6c696e6720746865206465636f64696e672066756e6374696f6e206f6e6365>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7539 Tw - -BT -48.24 296.306 Td -/F1.0 10.5 Tf -<616761696e207769746820746865206d6f6469666965642073747265616d2e20546869732070726f63657373206973206e6563657373617279206f6e6c79206966206d6f72652068747470206d6573736167652063616e20626520666f756e64> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 280.526 Td -/F1.0 10.5 Tf -<696e20746865206f726967696e616c2073747265616d2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 236.414 Td -/F2.0 22 Tf -<4d657373616765204c656e6774682046756e6374696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3529 Tw - -BT -48.24 207.226 Td -/F1.0 10.5 Tf -<54686520666f6c6c6f77696e672066756e6374696f6e2063616e206265207573656420746f2063616c63756c61746520746865206c656e677468206f66207468652072656365697665642048545450206d6573736167652e2049742072657475726e73> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 191.446 Td -/F1.0 10.5 Tf -<746865206c656e677468206f66207468652072656365697665642048545450206d65737361676520696e206f6374657473206f72202d3120696620746865206c656e6774682063616e206e6f742062652064657465726d696e65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 155.35 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 155.35 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 155.35 166.267 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 135.07 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 135.07 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 135.07 166.267 20.28 re -f -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 175.63 m -214.5065 175.63 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 155.35 m -214.5065 155.35 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 175.88 m -48.24 154.725 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 175.88 m -214.5065 154.725 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -51.24 161.416 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 175.63 m -380.773 175.63 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 155.35 m -380.773 155.35 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 175.88 m -214.5065 154.725 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 175.88 m -380.773 154.725 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 161.416 Td -/F2.0 10.5 Tf -[<54797065206f6620666f726d616c20706172> 20.0195 <616d6574657273>] TJ -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 175.63 m -547.04 175.63 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 155.35 m -547.04 155.35 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 175.88 m -380.773 154.725 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 175.88 m -547.04 154.725 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 161.416 Td -/F2.0 10.5 Tf -<54797065206f662072657475726e2076616c7565> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 155.35 m -214.5065 155.35 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 135.07 m -214.5065 135.07 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 155.975 m -48.24 134.82 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 155.975 m -214.5065 134.82 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -51.24 143.32 Td -/F3.0 10.5 Tf -<665f485454504d6573736167655f6c656e> Tj -ET - -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 155.35 m -380.773 155.35 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 135.07 m -380.773 135.07 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 155.975 m -214.5065 134.82 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 155.975 m -380.773 134.82 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 141.136 Td -/F1.0 10.5 Tf -<696e206f63746574737472696e672073747265616d> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 155.35 m -547.04 155.35 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 135.07 m -547.04 135.07 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 155.975 m -380.773 134.82 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 155.975 m -547.04 134.82 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 141.136 Td -/F1.0 10.5 Tf -<696e7465676572> Tj -ET - -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 94.774 Td -/F2.0 22 Tf -<436c6f73696e6720446f776e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -47 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 46 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F3.0 26 0 R -/F2.0 17 0 R ->> -/XObject << /Stamp2 143 0 R ->> ->> -/Annots [48 0 R] ->> -endobj -48 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [257.2839 614.4 270.6924 628.68] -/Type /Annot ->> -endobj -49 0 obj -[47 0 R /XYZ 0 601.65 null] -endobj -50 0 obj -[47 0 R /XYZ 0 264.71 null] -endobj -51 0 obj -[47 0 R /XYZ 0 123.07 null] -endobj -52 0 obj -<< /Length 9827 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 786.666 Td -/F2.0 18 Tf -<436c6f7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7234 Tw - -BT -48.24 758.646 Td -/F1.0 10.5 Tf -<54686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.7234 Tw - -BT -72.3834 758.646 Td -/F3.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7234 Tw - -BT -98.6334 758.646 Td -/F1.0 10.5 Tf -[<20736875747320646f776e2074686520636c69656e7420636f6e6e656374696f6e206265747765656e20746865207465737420706f727420616e642074686520495554> 89.8438 <2e2054686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.7234 Tw - -BT -499.79 758.646 Td -/F3.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7234 Tw - -BT -547.04 758.646 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6151 Tw - -BT -48.24 742.866 Td -/F1.0 10.5 Tf -[<706172> 20.0195 <616d65746572206f662074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.6151 Tw - -BT -139.9097 742.866 Td -/F3.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6151 Tw - -BT -166.1597 742.866 Td -/F1.0 10.5 Tf -<20415350206964656e7469666965732074686520636f6e6e656374696f6e20746f20626520636c6f7365642e2049662069742069732073657420746f206f6d69742c20616c6c2063757272656e74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 727.086 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e732077696c6c20626520636c6f7365642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 699.306 Td -/F1.0 10.5 Tf -<54686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -69.66 699.306 Td -/F3.0 10.5 Tf -<48616c665f636c6f7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -122.16 699.306 Td -/F1.0 10.5 Tf -<2041535020696e646963617465732074686174207468652072656d6f746520656e6420636c6f7365642074686520636f6e6e656374696f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 659.466 Td -/F2.0 18 Tf -<53687574646f776e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3207 Tw - -BT -48.24 631.446 Td -/F1.0 10.5 Tf -<496e7374727563747320746865207465737420706f727420746f20636c6f73652074686520736572766572206c697374656e696e6720706f72742e2054686520636c69656e7420636f6e6e656374696f6e732077696c6c2072656d61696e206f70656e2e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 615.666 Td -/F1.0 10.5 Tf -<546865207365727665722077696c6c206e6f7420616363657074206675727468657220636c69656e7420636f6e6e656374696f6e7320756e74696c206120> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -347.532 615.666 Td -/F3.0 10.5 Tf -<4c697374656e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -379.032 615.666 Td -/F1.0 10.5 Tf -<204153502069732073656e7420616761696e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 587.886 Td -/F1.0 10.5 Tf -[<46> 40.0391 <6f722064657461696c6564206f706572> 20.0195 <6174696f6e2073656520746865205573657220477569646520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -257.2839 587.886 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 543.774 Td -/F2.0 22 Tf -<4c6f6767696e67> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4687 Tw - -BT -48.24 514.586 Td -/F1.0 10.5 Tf -<5468652074797065206f6620696e666f726d6174696f6e20746861742077696c6c206265206c6f676765642063616e2062652063617465676f72697a656420696e746f2074776f2067726f7570732e20546865206669727374206f6e65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4086 Tw - -BT -48.24 498.806 Td -/F1.0 10.5 Tf -<636f6e7369737473206f6620696e666f726d6174696f6e20746861742073686f77732074686520666c6f77206f662074686520696e7465726e616c20657865637574696f6e206f6620746865207465737420706f72742c20652e672eca696d706f7274616e74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2202 Tw - -BT -48.24 483.026 Td -/F1.0 10.5 Tf -<6576656e74732c2077686963682066756e6374696f6e20746861742069732063757272656e746c7920657865637574696e67206574632e20546865207365636f6e642067726f7570206465616c7320776974682070726573656e74696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1305 Tw - -BT -48.24 467.246 Td -/F1.0 10.5 Tf -[<76616c7561626c6520646174612c20652e672eca70726573656e74696e672074686520636f6e74656e74206f662061205044552e20546865206c6f6767696e67207072696e746f7574732077696c6c20626520646972656374656420746f207468652052> 20.0195 <5445>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4973 Tw - -BT -48.24 451.466 Td -/F1.0 10.5 Tf -[<6c6f672066696c652e2054686520757365722069732061626c6520746f206465636964652077686574686572206c6f6767696e6720697320746f2074616b> 20.0195 <6520706c616365206f72206e6f742062> 20.0195 <792073657474696e6720617070726f707269617465>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 435.686 Td -/F1.0 10.5 Tf -[<636f6e6669677572> 20.0195 <6174696f6e20646174612c2073656520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -164.9683 435.686 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 391.574 Td -/F2.0 22 Tf -<4572726f722048616e646c696e67> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0118 Tw - -BT -48.24 362.386 Td -/F1.0 10.5 Tf -[<4572726f6e656f7573206265686176696f7220646574656374656420647572696e672072756e74696d65206d61> 20.0195 <792062652070726573656e746564206f6e2074686520636f6e736f6c6520616e6420646972656374656420696e746f20746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 346.606 Td -/F1.0 10.5 Tf -[<52> 20.0195 <5445206c6f672066696c652e2054686520666f6c6c6f77696e672074776f207479706573206f66206d65737361676573206172652074616b> 20.0195 <656e2063617265206f663a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 318.826 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.2851 Tw - -BT -66.24 318.826 Td -/F1.0 10.5 Tf -<4572726f72733a20696e666f726d6174696f6e2061626f7574206572726f72732064657465637465642069732070726f76696465642e20496620616e206572726f72206f63637572732074686520657865637574696f6e206f6620746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 303.046 Td -/F1.0 10.5 Tf -[<7465737420636173652077696c6c2073746f7020696d6d6564696174656c79> 89.8438 <2e20546865207465737420706f7274732077696c6c20626520756e6d61707065642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 281.266 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7095 Tw - -BT -66.24 281.266 Td -/F1.0 10.5 Tf -[<57> 49.8047 <61726e696e67733a20696e666f726d6174696f6e2061626f7574207761726e696e67732064657465637465642069732070726f76696465642e2054686520657865637574696f6e20636f6e74696e75657320616674657220746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 265.486 Td -/F1.0 10.5 Tf -<7761726e696e672069732073686f776e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 221.374 Td -/F2.0 22 Tf -<53534c2046756e6374696f6e616c697479> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0713 Tw - -BT -48.24 192.186 Td -/F1.0 10.5 Tf -[<5468652053534c20696d706c656d656e746174696f6e206973206261736564206f6e207468652073616d65204f70656e53534c20617320544954> 60.0586 <414e2e2050726f746f636f6c732053534c76322c2053534c763320616e6420544c537631>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 176.406 Td -/F1.0 10.5 Tf -<61726520737570706f727465642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 136.566 Td -/F2.0 18 Tf -<436f6d70696c6174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.3605 Tw - -BT -48.24 108.546 Td -/F1.0 10.5 Tf -<546865207573616765206f662053534c20616e64206576656e2074686520636f6d70696c6174696f6e206f66207468652053534c2072656c6174656420636f646520706172747320617265206f7074696f6e616c2e2054686973206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 92.766 Td -/F1.0 10.5 Tf -<626563617573652053534c2072656c6174656420636f64652070617274732063616e6e6f7420626520636f6d70696c656420776974686f757420746865204f70656e53534c20696e7374616c6c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6975 Tw - -BT -48.24 64.986 Td -/F1.0 10.5 Tf -[<54686520636f6d70696c6174696f6e206f662053534c2072656c6174656420636f64652070617274732063616e2062652064697361626c65642062> 20.0195 <79206e6f7420646566696e696e672074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.6975 Tw - -BT -445.6011 64.986 Td -/F3.0 10.5 Tf -<41535f5553455f53534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6975 Tw - -BT -498.1011 64.986 Td -/F1.0 10.5 Tf -<206d6163726f20696e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -53 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 52 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F3.0 26 0 R ->> -/XObject << /Stamp1 142 0 R ->> ->> -/Annots [56 0 R 58 0 R] ->> -endobj -54 0 obj -[53 0 R /XYZ 0 841.89 null] -endobj -55 0 obj -[53 0 R /XYZ 0 683.49 null] -endobj -56 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [257.2839 584.82 270.6924 599.1] -/Type /Annot ->> -endobj -57 0 obj -[53 0 R /XYZ 0 572.07 null] -endobj -58 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [164.9683 432.62 178.3768 446.9] -/Type /Annot ->> -endobj -59 0 obj -[53 0 R /XYZ 0 419.87 null] -endobj -60 0 obj -[53 0 R /XYZ 0 249.67 null] -endobj -61 0 obj -<< /Limits [(_1) (_http_messages_sent_by_the_test_port)] -/Names [(_1) 79 0 R (_2) 82 0 R (_3) 83 0 R (_4) 84 0 R (_5) 86 0 R (__anchor-top) 13 0 R (_abbreviations) 77 0 R (_authentication) 67 0 R (_close) 54 0 R (_closing_down) 51 0 R (_compilation) 63 0 R (_configuration) 38 0 R (_environment) 33 0 R (_error_handling) 59 0 R (_function_specification) 31 0 R (_general) 24 0 R (_how_to_read_this_document) 16 0 R (_http_messages_sent_by_the_test_port) 45 0 R] ->> -endobj -62 0 obj -<< /Limits [(_implementation) (sending-receiving-http-messages)] -/Names [(_implementation) 32 0 R (_limitations) 73 0 R (_logging) 57 0 R (_message_length_function) 50 0 R (_module_structure) 34 0 R (_notification_asps) 40 0 R (_other_features) 70 0 R (_references) 78 0 R (_scope) 19 0 R (_shutdown) 55 0 R (_ssl_functionality) 60 0 R (_start_procedure) 42 0 R (_terminology) 76 0 R (encoding_and_decoding_functions) 49 0 R (sending-receiving-http-messages) 44 0 R] ->> -endobj -63 0 obj -[53 0 R /XYZ 0 160.59 null] -endobj -64 0 obj -<< /Length 12585 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -0.6354 Tw - -BT -48.24 794.676 Td -/F1.0 10.5 Tf -<74686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6354 Tw - -BT -67.5654 794.676 Td -/F4.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6354 Tw - -BT -109.3027 794.676 Td -/F1.0 10.5 Tf -<20647572696e672074686520636f6d70696c6174696f6e2e20496620746865206d6163726f20697320646566696e656420696e2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6354 Tw - -BT -386.531 794.676 Td -/F4.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6354 Tw - -BT -428.2683 794.676 Td -/F1.0 10.5 Tf -<2c207468652053534c20636f646520706172747320617265> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1115 Tw - -BT -48.24 778.896 Td -/F1.0 10.5 Tf -[<636f6d70696c656420746f207468652065786563757461626c65207465737420636f64652e20546865207573616765206f66207468652053534c2063616e20626520656e61626c65642f64697361626c65642062> 20.0195 <792073657474696e6720746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 763.116 Td -/F3.0 10.5 Tf -<7573655f73736c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -84.99 763.116 Td -/F1.0 10.5 Tf -<206669656c64206f662074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -144.3045 763.116 Td -/F3.0 10.5 Tf -<436f6e6e656374> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -181.0545 763.116 Td -/F1.0 10.5 Tf -<2f> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -184.0785 763.116 Td -/F3.0 10.5 Tf -<4c697374656e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -215.5785 763.116 Td -/F1.0 10.5 Tf -[<20415350732e2046> 40.0391 <6f72206d6f726520696e666f726d6174696f6e2061626f75742074686520636f6d70696c6174696f6e2073656520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -491.4971 763.116 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 723.276 Td -/F2.0 18 Tf -[<41> 20.0195 <757468656e7469636174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.952 Tw - -BT -48.24 695.256 Td -/F1.0 10.5 Tf -<546865207465737420706f72742070726f766964657320626f746820736572766572207369646520616e6420636c69656e7420736964652061757468656e7469636174696f6e2e205768656e2061757468656e7469636174696e6720746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8982 Tw - -BT -48.24 679.476 Td -/F1.0 10.5 Tf -<6f7468657220736964652c20612063657274696669636174652069732072657175657374656420616e6420746865206f776e207472757374656420636572746966696361746520617574686f726974696573d5206c6973742069732073656e742e20546865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0653 Tw - -BT -48.24 663.696 Td -/F1.0 10.5 Tf -[<7265636569766564206365727469666963617465206973207665726966696564207768657468657220697420697320612076616c6964206365727469666963617465206f72206e6f742028746865207075626c696320616e642070726976617465206b> 20.0195 <65797320617265>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.9449 Tw - -BT -48.24 647.916 Td -/F1.0 10.5 Tf -<6d61746368696e67292e204e6f20667572746865722061757468656e7469636174696f6e20697320706572666f726d65642028652e672eca7768657468657220686f73746e616d652069732070726573656e7420696e20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 632.136 Td -/F1.0 10.5 Tf -[<6365727469666963617465292e2054686520766572696669636174696f6e2063616e20626520656e61626c65642f64697361626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c2073656520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -499.2673 632.136 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -512.6758 632.136 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2079 Tw - -BT -48.24 604.356 Td -/F1.0 10.5 Tf -[<496e20736572766572206d6f646520746865207465737420706f72742077696c6c20616c7761> 20.0195 <79732073656e642069747320636572746966696361746520616e64207472757374656420636572746966696361746520617574686f726974696573d5206c69737420746f>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9488 Tw - -BT -48.24 588.576 Td -/F1.0 10.5 Tf -[<69747320636c69656e74732e20496620766572696669636174696f6e20697320656e61626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c20746865207365727665722077696c6c207265717565737420666f722061>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1286 Tw - -BT -48.24 572.796 Td -/F1.0 10.5 Tf -<636c69656e74d5732063657274696669636174652e2049662074686520636c69656e7420646f6573206e6f742073656e6420612076616c69642063657274696669636174652c2074686520636f6e6e656374696f6e2077696c6c20626520726566757365642e204966> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6273 Tw - -BT -48.24 557.016 Td -/F1.0 10.5 Tf -<766572696669636174696f6e2069732064697361626c65642c207468656e2074686520636f6e6e656374696f6e2077696c6c206265206163636570746564206576656e2069662074686520636c69656e7420646f6573206e6f742073656e64206f72> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 541.236 Td -/F1.0 10.5 Tf -<73656e6420616e20696e76616c69642063657274696669636174652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.0851 Tw - -BT -48.24 513.456 Td -/F1.0 10.5 Tf -[<496e20636c69656e74206d6f646520746865207465737420706f72742077696c6c2073656e642069747320636572746966696361746520746f2074686520736572766572206f6e2074686520736572766572> -29.7852 ] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.2083 Tw - -BT -48.24 497.676 Td -/F1.0 10.5 Tf -[<766572696669636174696f6e20697320656e61626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c2074686520636c69656e742077696c6c2073656e6420697473206f776e2074727573746564>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2134 Tw - -BT -48.24 481.896 Td -/F1.0 10.5 Tf -[<636572746966696361746520617574686f726974696573d5206c69737420746f207468652073657276657220616e642077696c6c207665726966792074686520736572766572> -29.7852 -29.7852 ] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1982 Tw - -BT -48.24 466.116 Td -/F1.0 10.5 Tf -<6365727469666963617465206973206e6f742076616c69642c207468652053534c20636f6e6e656374696f6e2077696c6c206e6f742062652065737461626c69736865642e20496620766572696669636174696f6e2069732064697361626c65642c207468656e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 450.336 Td -/F1.0 10.5 Tf -<74686520636f6e6e656374696f6e2077696c6c206265206163636570746564206576656e206966207468652073657276657220646f6573206e6f742073656e64206f722073656e6420616e20696e76616c69642063657274696669636174652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.0041 Tw - -BT -48.24 422.556 Td -/F1.0 10.5 Tf -[<546865206f776e2063657274696669636174652873292c20746865206f776e2070726976617465206b> 20.0195 <65792066696c652c20746865206f7074696f6e616c2070617373776f72642070726f74656374696e6720746865206f776e2070726976617465>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3485 Tw - -BT -48.24 406.776 Td -/F1.0 10.5 Tf -[<6b> 20.0195 <65792066696c6520616e6420746865207472757374656420636572746966696361746520617574686f726974696573d5206c6973742066696c652063616e2062652073706563696669656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 390.996 Td -/F1.0 10.5 Tf -<66696c652c2073656520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -88.371 390.996 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -101.7795 390.996 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.578 Tw - -BT -48.24 363.216 Td -/F1.0 10.5 Tf -[<546865207465737420706f72742077696c6c20636865636b2074686520636f6e73697374656e6379206265747765656e20746865206f776e2070726976617465206b> 20.0195 <657920616e6420746865207075626c6963206b> 20.0195 <657920286261736564206f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 347.436 Td -/F1.0 10.5 Tf -[<746865206f776e20636572746966696361746529206175746f6d61746963616c6c79> 89.8438 <2e2049662074686520636865636b206661696c732c2061207761726e696e672069732069737375656420616e6420657865637574696f6e20636f6e74696e7565732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 307.596 Td -/F2.0 18 Tf -[<4f746865722046> 40.0391 <65617475726573>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1632 Tw - -BT -48.24 279.576 Td -/F1.0 10.5 Tf -<426f746820636c69656e7420616e642073657276657220737570706f72742053534c76322c2053534c763320616e6420544c5376312c20686f7765766572206e6f207265737472696374696f6e20697320706f737369626c6520746f20757365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 263.796 Td -/F1.0 10.5 Tf -[<6f6e6c79206120737562736574206f662074686573652e2054686520757365642070726f746f636f6c2077696c6c2062652073656c656374656420647572696e67207468652053534c2068616e647368616b> 20.0195 <65206175746f6d61746963616c6c79> 89.8438 <2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4648 Tw - -BT -48.24 236.016 Td -/F1.0 10.5 Tf -[<546865207573616765206f662053534c2073657373696f6e20726573756d7074696f6e2063616e20626520656e61626c65642f64697361626c656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c20736565>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 220.236 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -61.6485 220.236 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 192.456 Td -/F1.0 10.5 Tf -[<54686520616c6c6f77656420636970686572696e67207375697465732063616e206265207265737472696374656420696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652c2073656520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -466.4653 192.456 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -479.8738 192.456 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8923 Tw - -BT -48.24 164.676 Td -/F1.0 10.5 Tf -<5468652053534c2072652d68616e647368616b696e672072657175657374732061726520616363657074656420616e642070726f6365737365642c20686f77657665722072652d68616e647368616b696e672063616e6e6f74206265> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 148.896 Td -/F1.0 10.5 Tf -<696e697469617465642066726f6d20746865207465737420706f72742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 104.784 Td -/F2.0 22 Tf -<4c696d69746174696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 75.596 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.169 Tw - -BT -66.24 75.596 Td -/F1.0 10.5 Tf -<4e6f207265737472696374696f6e20697320706f737369626c65206f6e2074686520757365642070726f746f636f6c732028652e672eca757365206f6e6c792053534c7632293b2069742069732064657465726d696e656420647572696e672053534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 59.816 Td -/F1.0 10.5 Tf -[<68616e647368616b> 20.0195 <65206265747765656e207468652070656572732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -65 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 64 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F4.0 35 0 R -/F3.0 26 0 R -/F2.0 17 0 R ->> -/XObject << /Stamp2 143 0 R ->> ->> -/Annots [66 0 R 68 0 R 69 0 R 71 0 R 72 0 R] ->> -endobj -66 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [491.4971 760.05 504.9056 774.33] -/Type /Annot ->> -endobj -67 0 obj -[65 0 R /XYZ 0 747.3 null] -endobj -68 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [499.2673 629.07 512.6758 643.35] -/Type /Annot ->> -endobj -69 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [88.371 387.93 101.7795 402.21] -/Type /Annot ->> -endobj -70 0 obj -[65 0 R /XYZ 0 331.62 null] -endobj -71 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [48.24 217.17 61.6485 231.45] -/Type /Annot ->> -endobj -72 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [466.4653 189.39 479.8738 203.67] -/Type /Annot ->> -endobj -73 0 obj -[65 0 R /XYZ 0 133.08 null] -endobj -74 0 obj -<< /Length 6477 ->> -stream -q - --0.5 Tc -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -56.8805 793.926 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 793.926 Td -/F1.0 10.5 Tf -<53534c2072652d68616e647368616b696e672063616e6e6f7420626520696e697469617465642066726f6d20746865207465737420706f72742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 772.146 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0829 Tw - -BT -66.24 772.146 Td -/F1.0 10.5 Tf -[<546865206f776e2063657274696669636174652066696c652873292c20746865206f776e2070726976617465206b> 20.0195 <65792066696c6520616e6420746865207472757374656420636572746966696361746520617574686f726974696573d5206c6973742066696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 756.366 Td -/F1.0 10.5 Tf -<6d75737420626520696e2050454d20666f726d61742e204f7468657220666f726d61747320617265206e6f7420737570706f727465642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 706.914 Td -/F2.0 27 Tf -[<54> 29.7852 <65726d696e6f6c6f6779>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 676.266 Td -/F2.0 10.5 Tf -[<536f636b> 20.0195 <6574733a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1149 Tw - -BT -48.24 660.486 Td -/F1.0 10.5 Tf -[<54686520736f636b> 20.0195 <6574732069732061206d6574686f6420666f7220636f6d6d756e69636174696f6e206265747765656e206120636c69656e742070726f6772> 20.0195 <616d20616e642061207365727665722070726f6772> 20.0195 <616d20696e2061>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3859 Tw - -BT -48.24 644.706 Td -/F1.0 10.5 Tf -[<6e6574776f726b2e204120736f636b> 20.0195 <657420697320646566696e6564206173202274686520656e64706f696e7420696e206120636f6e6e656374696f6e2e2220536f636b> 20.0195 <65747320617265206372656174656420616e64207573656420776974682061>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -5.2202 Tw - -BT -48.24 628.926 Td -/F1.0 10.5 Tf -[<736574206f662070726f6772> 20.0195 <616d6d696e67207265717565737473206f72202266756e6374696f6e2063616c6c732220736f6d6574696d65732063616c6c65642074686520736f636b> 20.0195 <657473206170706c69636174696f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7097 Tw - -BT -48.24 613.146 Td -/F1.0 10.5 Tf -[<70726f6772> 20.0195 <616d6d696e6720696e746572666163652028415049292e20546865206d6f737420636f6d6d6f6e20736f636b> 20.0195 <6574732041504920697320746865204265726b> 20.0195 <656c657920554e49582043206c616e6775616765>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.658 Tw - -BT -48.24 597.366 Td -/F1.0 10.5 Tf -[<696e7465726661636520666f7220736f636b> 20.0195 <6574732e20536f636b> 20.0195 <6574732063616e20616c736f206265207573656420666f7220636f6d6d756e69636174696f6e206265747765656e2070726f6365737365732077697468696e20746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 581.586 Td -/F1.0 10.5 Tf -<73616d6520636f6d70757465722e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 532.134 Td -/F2.0 27 Tf -<416262726576696174696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 501.486 Td -/F2.0 10.5 Tf -<415049> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 482.706 Td -/F1.0 10.5 Tf -[<4170706c69636174696f6e2050726f6772> 20.0195 <616d20496e74657266616365>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 454.926 Td -/F2.0 10.5 Tf -<415350> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 436.146 Td -/F1.0 10.5 Tf -[<4162737472> 20.0195 <6163742053657276696365205072696d6974697665>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 408.366 Td -/F2.0 10.5 Tf -<495554> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 389.586 Td -/F1.0 10.5 Tf -[<496d706c656d656e746174696f6e20556e6465722054> 29.7852 <657374>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 361.806 Td -/F2.0 10.5 Tf -[<52> 20.0195 <5445>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 343.026 Td -/F1.0 10.5 Tf -<52756e2d54696d6520456e7669726f6e6d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 315.246 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 296.466 Td -/F1.0 10.5 Tf -[<487970657274657874205472> 20.0195 <616e736665722050726f746f636f6c>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 268.686 Td -/F2.0 10.5 Tf -<535554> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 249.906 Td -/F1.0 10.5 Tf -[<53> 20.0195 <797374656d20556e6465722054> 29.7852 <657374>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 222.126 Td -/F2.0 10.5 Tf -<53534c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 203.346 Td -/F1.0 10.5 Tf -[<53656375726520536f636b> 20.0195 <657473204c61> 20.0195 <796572>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 175.566 Td -/F2.0 10.5 Tf -[<5454> 20.0195 <434e2d33>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 156.786 Td -/F1.0 10.5 Tf -[<54> 29.7852 <657374696e6720616e642054> 29.7852 <65737420436f6e74726f6c204e6f746174696f6e2076657273696f6e2033>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 107.334 Td -/F2.0 27 Tf -<5265666572656e636573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8862 Tw - -BT -48.24 76.686 Td -/F1.0 10.5 Tf -[<5b315d204554534920455320323031203837332d312076332e312e312028323030352d3036295468652054> 29.7852 <657374696e6720616e642054> 29.7852 <65737420436f6e74726f6c204e6f746174696f6e2076657273696f6e20333b205061727420313a20436f7265>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 60.906 Td -/F1.0 10.5 Tf -<4c616e6775616765> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<37> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -75 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 74 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F2.0 17 0 R ->> -/XObject << /Stamp1 142 0 R ->> ->> ->> -endobj -76 0 obj -[75 0 R /XYZ 0 740.55 null] -endobj -77 0 obj -[75 0 R /XYZ 0 565.77 null] -endobj -78 0 obj -[75 0 R /XYZ 0 140.97 null] -endobj -79 0 obj -[75 0 R /XYZ 0 88.65 null] -endobj -80 0 obj -<< /Length 1547 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 793.926 Td -/F1.0 10.5 Tf -[<5b325d20544954> 60.0586 <414e2055736572204775696465>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 766.146 Td -/F1.0 10.5 Tf -[<5b335d20485454506d73675f434e4c3131333331322054> 29.7852 <65737420506f727420666f72205454> 20.0195 <434e2d332054> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e2c2055736572204775696465>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 738.366 Td -/F1.0 10.5 Tf -<5b345d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -64.368 738.366 Td -/F1.0 10.5 Tf -<5246432032363136> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 722.586 Td -/F1.0 10.5 Tf -[<487970657274657874205472> 20.0195 <616e736665722050726f746f636f6c20d020485454502f312e31>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 694.806 Td -/F1.0 10.5 Tf -<5b355d204f70656e53534c20746f6f6c6b6974> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 679.026 Td -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 679.026 Td -/F1.0 10.5 Tf -[<687474703a2f2f777777> 69.8242 <2e6f70656e73736c2e6f7267>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<38> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -81 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 80 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R ->> -/XObject << /Stamp2 143 0 R ->> ->> -/Annots [85 0 R 87 0 R] ->> -endobj -82 0 obj -[81 0 R /XYZ 0 805.89 null] -endobj -83 0 obj -[81 0 R /XYZ 0 778.11 null] -endobj -84 0 obj -[81 0 R /XYZ 0 750.33 null] -endobj -85 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.ietf.org/rfc/rfc2616.txt) ->> -/Subtype /Link -/Rect [64.368 735.3 110.064 749.58] -/Type /Annot ->> -endobj -86 0 obj -[81 0 R /XYZ 0 706.77 null] -endobj -87 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org) ->> -/Subtype /Link -/Rect [48.24 675.96 163.6788 690.24] -/Type /Annot ->> -endobj -88 0 obj -<< /Border [0 0 0] -/Dest (_how_to_read_this_document) -/Subtype /Link -/Rect [48.24 748.79 189.801 763.07] -/Type /Annot ->> -endobj -89 0 obj -<< /Border [0 0 0] -/Dest (_how_to_read_this_document) -/Subtype /Link -/Rect [541.1705 748.79 547.04 763.07] -/Type /Annot ->> -endobj -90 0 obj -<< /Border [0 0 0] -/Dest (_scope) -/Subtype /Link -/Rect [48.24 730.31 77.22 744.59] -/Type /Annot ->> -endobj -91 0 obj -<< /Border [0 0 0] -/Dest (_scope) -/Subtype /Link -/Rect [541.1705 730.31 547.04 744.59] -/Type /Annot ->> -endobj -92 0 obj -<< /Border [0 0 0] -/Dest (_general) -/Subtype /Link -/Rect [48.24 711.83 87.6253 726.11] -/Type /Annot ->> -endobj -93 0 obj -<< /Border [0 0 0] -/Dest (_general) -/Subtype /Link -/Rect [541.1705 711.83 547.04 726.11] -/Type /Annot ->> -endobj -94 0 obj -<< /Border [0 0 0] -/Dest (_function_specification) -/Subtype /Link -/Rect [48.24 693.35 160.0545 707.63] -/Type /Annot ->> -endobj -95 0 obj -<< /Border [0 0 0] -/Dest (_function_specification) -/Subtype /Link -/Rect [541.1705 693.35 547.04 707.63] -/Type /Annot ->> -endobj -96 0 obj -<< /Border [0 0 0] -/Dest (_implementation) -/Subtype /Link -/Rect [60.24 674.87 141.09 689.15] -/Type /Annot ->> -endobj -97 0 obj -<< /Border [0 0 0] -/Dest (_implementation) -/Subtype /Link -/Rect [541.1705 674.87 547.04 689.15] -/Type /Annot ->> -endobj -98 0 obj -<< /Border [0 0 0] -/Dest (_environment) -/Subtype /Link -/Rect [72.24 656.39 138.7575 670.67] -/Type /Annot ->> -endobj -99 0 obj -<< /Border [0 0 0] -/Dest (_environment) -/Subtype /Link -/Rect [541.1705 656.39 547.04 670.67] -/Type /Annot ->> -endobj -100 0 obj -<< /Border [0 0 0] -/Dest (_module_structure) -/Subtype /Link -/Rect [72.24 637.91 159.9045 652.19] -/Type /Annot ->> -endobj -101 0 obj -<< /Border [0 0 0] -/Dest (_module_structure) -/Subtype /Link -/Rect [541.1705 637.91 547.04 652.19] -/Type /Annot ->> -endobj -102 0 obj -<< /Border [0 0 0] -/Dest (_configuration) -/Subtype /Link -/Rect [60.24 619.43 129.5503 633.71] -/Type /Annot ->> -endobj -103 0 obj -<< /Border [0 0 0] -/Dest (_configuration) -/Subtype /Link -/Rect [541.1705 619.43 547.04 633.71] -/Type /Annot ->> -endobj -104 0 obj -<< /Border [0 0 0] -/Dest (_notification_asps) -/Subtype /Link -/Rect [72.24 600.95 158.424 615.23] -/Type /Annot ->> -endobj -105 0 obj -<< /Border [0 0 0] -/Dest (_notification_asps) -/Subtype /Link -/Rect [541.1705 600.95 547.04 615.23] -/Type /Annot ->> -endobj -106 0 obj -<< /Border [0 0 0] -/Dest (_start_procedure) -/Subtype /Link -/Rect [60.24 582.47 138.6855 596.75] -/Type /Annot ->> -endobj -107 0 obj -<< /Border [0 0 0] -/Dest (_start_procedure) -/Subtype /Link -/Rect [541.1705 582.47 547.04 596.75] -/Type /Annot ->> -endobj -108 0 obj -<< /Border [0 0 0] -/Dest (sending-receiving-http-messages) -/Subtype /Link -/Rect [60.24 563.99 231.8205 578.27] -/Type /Annot ->> -endobj -109 0 obj -<< /Border [0 0 0] -/Dest (sending-receiving-http-messages) -/Subtype /Link -/Rect [541.1705 563.99 547.04 578.27] -/Type /Annot ->> -endobj -110 0 obj -<< /Border [0 0 0] -/Dest (_http_messages_sent_by_the_test_port) -/Subtype /Link -/Rect [72.24 545.51 254.0076 559.79] -/Type /Annot ->> -endobj -111 0 obj -<< /Border [0 0 0] -/Dest (_http_messages_sent_by_the_test_port) -/Subtype /Link -/Rect [541.1705 545.51 547.04 559.79] -/Type /Annot ->> -endobj -112 0 obj -<< /Border [0 0 0] -/Dest (encoding_and_decoding_functions) -/Subtype /Link -/Rect [60.24 527.03 230.3295 541.31] -/Type /Annot ->> -endobj -113 0 obj -<< /Border [0 0 0] -/Dest (encoding_and_decoding_functions) -/Subtype /Link -/Rect [541.1705 527.03 547.04 541.31] -/Type /Annot ->> -endobj -114 0 obj -<< /Border [0 0 0] -/Dest (_message_length_function) -/Subtype /Link -/Rect [60.24 508.55 187.3635 522.83] -/Type /Annot ->> -endobj -115 0 obj -<< /Border [0 0 0] -/Dest (_message_length_function) -/Subtype /Link -/Rect [541.1705 508.55 547.04 522.83] -/Type /Annot ->> -endobj -116 0 obj -<< /Border [0 0 0] -/Dest (_closing_down) -/Subtype /Link -/Rect [60.24 490.07 128.721 504.35] -/Type /Annot ->> -endobj -117 0 obj -<< /Border [0 0 0] -/Dest (_closing_down) -/Subtype /Link -/Rect [541.1705 490.07 547.04 504.35] -/Type /Annot ->> -endobj -118 0 obj -<< /Border [0 0 0] -/Dest (_close) -/Subtype /Link -/Rect [72.24 471.59 98.343 485.87] -/Type /Annot ->> -endobj -119 0 obj -<< /Border [0 0 0] -/Dest (_close) -/Subtype /Link -/Rect [541.1705 471.59 547.04 485.87] -/Type /Annot ->> -endobj -120 0 obj -<< /Border [0 0 0] -/Dest (_shutdown) -/Subtype /Link -/Rect [72.24 453.11 123.2595 467.39] -/Type /Annot ->> -endobj -121 0 obj -<< /Border [0 0 0] -/Dest (_shutdown) -/Subtype /Link -/Rect [541.1705 453.11 547.04 467.39] -/Type /Annot ->> -endobj -122 0 obj -<< /Border [0 0 0] -/Dest (_logging) -/Subtype /Link -/Rect [60.24 434.63 99.909 448.91] -/Type /Annot ->> -endobj -123 0 obj -<< /Border [0 0 0] -/Dest (_logging) -/Subtype /Link -/Rect [541.1705 434.63 547.04 448.91] -/Type /Annot ->> -endobj -124 0 obj -<< /Border [0 0 0] -/Dest (_error_handling) -/Subtype /Link -/Rect [60.24 416.15 136.848 430.43] -/Type /Annot ->> -endobj -125 0 obj -<< /Border [0 0 0] -/Dest (_error_handling) -/Subtype /Link -/Rect [541.1705 416.15 547.04 430.43] -/Type /Annot ->> -endobj -126 0 obj -<< /Border [0 0 0] -/Dest (_ssl_functionality) -/Subtype /Link -/Rect [60.24 397.67 147.684 411.95] -/Type /Annot ->> -endobj -127 0 obj -<< /Border [0 0 0] -/Dest (_ssl_functionality) -/Subtype /Link -/Rect [541.1705 397.67 547.04 411.95] -/Type /Annot ->> -endobj -128 0 obj -<< /Border [0 0 0] -/Dest (_compilation) -/Subtype /Link -/Rect [72.24 379.19 133.4655 393.47] -/Type /Annot ->> -endobj -129 0 obj -<< /Border [0 0 0] -/Dest (_compilation) -/Subtype /Link -/Rect [541.1705 379.19 547.04 393.47] -/Type /Annot ->> -endobj -130 0 obj -<< /Border [0 0 0] -/Dest (_authentication) -/Subtype /Link -/Rect [72.24 360.71 146.8213 374.99] -/Type /Annot ->> -endobj -131 0 obj -<< /Border [0 0 0] -/Dest (_authentication) -/Subtype /Link -/Rect [541.1705 360.71 547.04 374.99] -/Type /Annot ->> -endobj -132 0 obj -<< /Border [0 0 0] -/Dest (_other_features) -/Subtype /Link -/Rect [72.24 342.23 146.6006 356.51] -/Type /Annot ->> -endobj -133 0 obj -<< /Border [0 0 0] -/Dest (_other_features) -/Subtype /Link -/Rect [541.1705 342.23 547.04 356.51] -/Type /Annot ->> -endobj -134 0 obj -<< /Border [0 0 0] -/Dest (_limitations) -/Subtype /Link -/Rect [60.24 323.75 117.6015 338.03] -/Type /Annot ->> -endobj -135 0 obj -<< /Border [0 0 0] -/Dest (_limitations) -/Subtype /Link -/Rect [541.1705 323.75 547.04 338.03] -/Type /Annot ->> -endobj -136 0 obj -<< /Border [0 0 0] -/Dest (_terminology) -/Subtype /Link -/Rect [48.24 305.27 111.8933 319.55] -/Type /Annot ->> -endobj -137 0 obj -<< /Border [0 0 0] -/Dest (_terminology) -/Subtype /Link -/Rect [541.1705 305.27 547.04 319.55] -/Type /Annot ->> -endobj -138 0 obj -<< /Border [0 0 0] -/Dest (_abbreviations) -/Subtype /Link -/Rect [48.24 286.79 119.0205 301.07] -/Type /Annot ->> -endobj -139 0 obj -<< /Border [0 0 0] -/Dest (_abbreviations) -/Subtype /Link -/Rect [541.1705 286.79 547.04 301.07] -/Type /Annot ->> -endobj -140 0 obj -<< /Border [0 0 0] -/Dest (_references) -/Subtype /Link -/Rect [48.24 268.31 103.0815 282.59] -/Type /Annot ->> -endobj -141 0 obj -<< /Border [0 0 0] -/Dest (_references) -/Subtype /Link -/Rect [541.1705 268.31 547.04 282.59] -/Type /Annot ->> -endobj -142 0 obj -<< /Type /XObject -/Subtype /Form -/BBox [0 0 595.28 841.89] -/Length 162 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -q -0.25 w -/DeviceRGB CS -0.8667 0.8667 0.8667 SCN -48.24 30.0 m -547.04 30.0 l -S -Q -Q - -endstream -endobj -143 0 obj -<< /Type /XObject -/Subtype /Form -/BBox [0 0 595.28 841.89] -/Length 162 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -q -0.25 w -/DeviceRGB CS -0.8667 0.8667 0.8667 SCN -48.24 30.0 m -547.04 30.0 l -S -Q -Q - -endstream -endobj -144 0 obj -<< /Type /Outlines -/Count 29 -/First 145 0 R -/Last 173 0 R ->> -endobj -145 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 146 0 R -/Dest [7 0 R /XYZ 0 841.89 null] ->> -endobj -146 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 147 0 R -/Prev 145 0 R -/Dest [10 0 R /XYZ 0 841.89 null] ->> -endobj -147 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 148 0 R -/Prev 146 0 R -/Dest [12 0 R /XYZ 0 841.89 null] ->> -endobj -148 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 149 0 R -/Prev 147 0 R -/Dest [12 0 R /XYZ 0 705.83 null] ->> -endobj -149 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 150 0 R -/Prev 148 0 R -/Dest [12 0 R /XYZ 0 557.41 null] ->> -endobj -150 0 obj -<< /Title -/Parent 144 0 R -/Count 20 -/First 151 0 R -/Last 170 0 R -/Next 171 0 R -/Prev 149 0 R -/Dest [30 0 R /XYZ 0 666.39 null] ->> -endobj -151 0 obj -<< /Title -/Parent 150 0 R -/Count 2 -/First 152 0 R -/Last 153 0 R -/Next 154 0 R -/Dest [30 0 R /XYZ 0 614.07 null] ->> -endobj -152 0 obj -<< /Title -/Parent 151 0 R -/Count 0 -/Next 153 0 R -/Dest [30 0 R /XYZ 0 568.55 null] ->> -endobj -153 0 obj -<< /Title -/Parent 151 0 R -/Count 0 -/Prev 152 0 R -/Dest [30 0 R /XYZ 0 453.35 null] ->> -endobj -154 0 obj -<< /Title -/Parent 150 0 R -/Count 1 -/First 155 0 R -/Last 155 0 R -/Next 156 0 R -/Prev 151 0 R -/Dest [37 0 R /XYZ 0 778.11 null] ->> -endobj -155 0 obj -<< /Title -/Parent 154 0 R -/Count 0 -/Dest [37 0 R /XYZ 0 689.03 null] ->> -endobj -156 0 obj -<< /Title -/Parent 150 0 R -/Count 0 -/Next 157 0 R -/Prev 154 0 R -/Dest [37 0 R /XYZ 0 589.61 null] ->> -endobj -157 0 obj -<< /Title -/Parent 150 0 R -/Count 1 -/First 158 0 R -/Last 158 0 R -/Next 159 0 R -/Prev 156 0 R -/Dest [37 0 R /XYZ 0 385.63 null] ->> -endobj -158 0 obj -<< /Title -/Parent 157 0 R -/Count 0 -/Dest [37 0 R /XYZ 0 340.11 null] ->> -endobj -159 0 obj -<< /Title -/Parent 150 0 R -/Count 0 -/Next 160 0 R -/Prev 157 0 R -/Dest [47 0 R /XYZ 0 601.65 null] ->> -endobj -160 0 obj -<< /Title -/Parent 150 0 R -/Count 0 -/Next 161 0 R -/Prev 159 0 R -/Dest [47 0 R /XYZ 0 264.71 null] ->> -endobj -161 0 obj -<< /Title -/Parent 150 0 R -/Count 2 -/First 162 0 R -/Last 163 0 R -/Next 164 0 R -/Prev 160 0 R -/Dest [47 0 R /XYZ 0 123.07 null] ->> -endobj -162 0 obj -<< /Title -/Parent 161 0 R -/Count 0 -/Next 163 0 R -/Dest [53 0 R /XYZ 0 841.89 null] ->> -endobj -163 0 obj -<< /Title -/Parent 161 0 R -/Count 0 -/Prev 162 0 R -/Dest [53 0 R /XYZ 0 683.49 null] ->> -endobj -164 0 obj -<< /Title -/Parent 150 0 R -/Count 0 -/Next 165 0 R -/Prev 161 0 R -/Dest [53 0 R /XYZ 0 572.07 null] ->> -endobj -165 0 obj -<< /Title -/Parent 150 0 R -/Count 0 -/Next 166 0 R -/Prev 164 0 R -/Dest [53 0 R /XYZ 0 419.87 null] ->> -endobj -166 0 obj -<< /Title -/Parent 150 0 R -/Count 3 -/First 167 0 R -/Last 169 0 R -/Next 170 0 R -/Prev 165 0 R -/Dest [53 0 R /XYZ 0 249.67 null] ->> -endobj -167 0 obj -<< /Title -/Parent 166 0 R -/Count 0 -/Next 168 0 R -/Dest [53 0 R /XYZ 0 160.59 null] ->> -endobj -168 0 obj -<< /Title -/Parent 166 0 R -/Count 0 -/Next 169 0 R -/Prev 167 0 R -/Dest [65 0 R /XYZ 0 747.3 null] ->> -endobj -169 0 obj -<< /Title -/Parent 166 0 R -/Count 0 -/Prev 168 0 R -/Dest [65 0 R /XYZ 0 331.62 null] ->> -endobj -170 0 obj -<< /Title -/Parent 150 0 R -/Count 0 -/Prev 166 0 R -/Dest [65 0 R /XYZ 0 133.08 null] ->> -endobj -171 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 172 0 R -/Prev 150 0 R -/Dest [75 0 R /XYZ 0 740.55 null] ->> -endobj -172 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Next 173 0 R -/Prev 171 0 R -/Dest [75 0 R /XYZ 0 565.77 null] ->> -endobj -173 0 obj -<< /Title -/Parent 144 0 R -/Count 0 -/Prev 172 0 R -/Dest [75 0 R /XYZ 0 140.97 null] ->> -endobj -174 0 obj -<< /Nums [0 << /P (i) ->> 1 << /P (ii) ->> 2 << /P (1) ->> 3 << /P (2) ->> 4 << /P (3) ->> 5 << /P (4) ->> 6 << /P (5) ->> 7 << /P (6) ->> 8 << /P (7) ->> 9 << /P (8) ->>] ->> -endobj -175 0 obj -<< /Length1 12352 -/Length 7795 -/Filter [/FlateDecode] ->> -stream -xz |Ό˶lْeKNÖ%8َ qL!B6xSG)]~]Bٖ-)fnlk|{=3#ٲcڿxޙy9^ aYMy'/` B8jptщ>o|ހgN n*6B~x&ghh.I1Iãp #&K7o< =3?/ Ro{ݥG(Uqϩpp`E( 壿Ha(4,\)FR@<6NOP!huzhH2&"ґ -֌L[݁sr.wAaQqIiYyQq"[gj6$,y5"fl#nj|Vt}ES=&q_,Ur YQn-*p:<08峅9'` Xs -uFV1Ȫ2FI 1$.dt.be®@_pɜ³YYAAp!Kv&ʈyIz?{y}B$ ЈYfʞe|8ak;Fy 5)=|R&OQ;rS ˉ _%*y/Vf#dck- zrpĂToQ*,zLoQ(-zdF,ؓ`GDp`9ޮoaMn_xol#c bGBL7Asn6'g?\ VU -ʂxʏ}˟{Kر g|--׹Evz"5[eOŇݿP^flwmF@UJF=\wg3caL,PDa ˮL[CX{͏NtgH4:鵾=΁n*wꋽ{RL[u0ӛKDG`ih.stXIueEGN…W&0l1&&N<ƀ+_д y@54aӬXcn&YMV%ecYv޾N yC>15 p[(f< n#;)άiYK3C)Qf(gUh\[Z4ſUzic[ї^ЊZKS̱A-~LBبzBV-Tx(`  H%8flROԅJ,tQSG7O_UʕKa.DG?{/"ɲz< [8X归DRUʭVcu?LZdFN1^EC Z mwF4L3ns4e -ˬP]:a"LtuwNewۏtTjZReCu(aX޶7/1fVx~r˫j.ɧ)QU=Vp E^ )YU8hC.%O ڔ֢Βg|fwVO($1ѥ'~{[n Rkwԗ~r#Z MR h Kg} x1X ]13 ^W\9oXyy=K\9M & -򕦓?3pX^KVa-SPAiGPFYoS\f%PCDӊi|1clyM 6z{@/3[F$8mP ZA&JWcƚJZ.*f' *|5Qu.KLbHmjuGv@1i?toQʒ!Lc/vN1T3tͼ4*Sv+V1 _@%[xn%),r iV&%qLirDMiZ; ?݋OY2eLJx3 `6TǪb})$Ht M8 qsQשQen}Ok/>IWtl<[xsCI`N RcOƋ5l-*1/op[cԑM9]|L -uxq wWRǗkCkFe4 fwWz_Nןqͷ>4?=5t_zz?LM0+do\ +\xDH/޴/Z r}?ە{?.6f#49qZzun☱Vqj * ꘔn͍z&z =98WdAv{FyF82_;X`.s(Kr-Z^qs\/Olpzr7̪ žʇTul\{HJh+rn+iwͪijH9-%cmmL*l2Xm1k]k[uIq`Vc|;_+i .e@&gڲr MBdi>8:R]v?/wFM >{}ypunגXkRďʵ|}o]e^ڙbb7`Je63MV/8y -8;'V 0CLF,nW:]ԂjTUI>,6V;Z!ř%vwg*`1D!$dwr -z㣎c`GϒB>pè2%"K/F̀7 )̒ 僾W+NT*EK*o_綟Vbb$ k5 V+^P,&!،8CM$!9_Re3ިXy/tOqHTOdž-x_0l3+4ެhɅ_y(y8sRg3<U/k 'BHƟ' *elԻanQI?O7u\.ѵ7\Ҿy~uޕ]$5l!Ĥ6}}Wɾ͟_Ws=Zr!:}e}>Sn$f -p1nu$@(4꙽60 M -Zg+8[~"Ve@B#WvζXsa8g{rՎ%>/"hy*K@Ğ* ͧNJ x*:6RBD6AE?q|S OGx<'lY?RT4nwǻ?\'䶵ZA}gf'p<818;ةQ_$ݛ>w. -:#%Y{v#iz҂/`9qY[yVO!}~W_/ѳ RY -" 9r[ь]w1TC~6F(wr81a$IP};1\)[UQW^jx'rcjsϿ<=ád[~ -R`0KTq&!\eLw&F`-< y}]dȒ4i j9^W[4]A̲ezm -AԊFjն02!1F^ٍGܿ@(RpEJ1Lsu?%CK|5]T|\i?1#N%s+KQԸTut:56.ULA",?PD*,LeMsxEП 6-9$=[pI؇ i~"9i -Q Qq8B4z<)[KqoTrR)T}D׷eU`3ʫo^`dBxӺ#pG6qT9"H)RֶX3;j]ueCn?r[!,̉ r'b5R6|Oe4邠GU'cI}y~t$FZ)TlmhXh~Y`ar E0>lċE]JFjkw'ٳ0* ǖ /LM˛>SBl}̧<":0FP }~6.* Í]HvstJb SvBD`I/4X`.a.Y #$ܘ/%Ie+K)MO4ZM ɀx ٟ3@(&cBmpkS3uv>-7Zڄ~XO[8Ө' o]]XRUl-r ,Fe_WܕphB.VGl_ʫL0>1`Mb"uO^:Wʄ jJ2rg/z!nPx(<>NJ x(4~:BU0&oxCs`4I̔XiC[kBQ@aQ_Ami͎Qcp52ؖLoԐ\R4ϏR|4D)+;ڐMZ-vyAa|E-yD˯YZY(ᑒ3fBm$SX߼ӿ}(2#Iz~""l!S*rzRSzs+ST*UNfF%u.rcG߭Q{тi$nD'|- -jlz|@aI0c{Ju#A'S65 !O 59Nm$B?erH~BEUW~wGpLp]X*#|#o!D"QhRОГ=A"|* qCo":"ND|9yV"-d9J {!/(E,q=9G68/CpCN81G7Q-Br:34{pG, _qc}4u0ށzD)א=(W nt]A~TEP>Gfqx8"TJfdbrnjxphFiTLL h5EFִq`z`ꮁ~3*Al pL3h;F\mAҀ -QՀoMWpYw~d4 L a& x}bgGSkhzT$@jL ) a49Lc dc]ߍ305=<10[4C̍iŨf$ ECY̌\_#Ȋx53S1Ԉf|a(/3 $ B#06[HVcÃ㚙&odl:BYcfv|hx|> -endobj -177 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -178 0 obj -[259 1000 408 1000 1000 1000 1000 220 346 346 1000 559 250 310 250 288 559 559 559 559 559 559 559 559 559 1000 286 286 1000 1000 1000 1000 1000 705 653 613 727 623 589 713 792 367 1000 1000 623 937 763 742 604 1000 655 543 612 716 674 1046 660 1000 1000 359 1000 359 1000 458 1000 562 613 492 613 535 369 538 634 319 1000 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 511 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 562 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 742 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -179 0 obj -<< /Length1 8816 -/Length 5646 -/Filter [/FlateDecode] ->> -stream -xY{xՕwf$˲-KdˣeYKdYgw'1e[~Ē'wB!JS4 vCQv˲ ݶ ,(_ڴ&dόX1*3ws~s5#ȉxhj(z?$GKG# #M!ĆB %E(O0o,:wŻAH!IiEh)To>pO:Lf'yGwLO.ri٠nXwBxJ&}'wD_*/|"Hg $K(K&W$=Qs4#2 ,VT>D#q]VV&u>ʗf>tU"u]R~ <(-$2 vUBNXqiiD\g4\&"R4${瞙p:zc-e,[7ܹf֛Dw=yn*gLmnNsEV=Xͭ6imNlPPsG{\_2{WS tGTBfI0 ɪR j{@V9&t+M! gST^B8E)?k9yk]pv,"SH-~/UZis6^_9ZsQq=KS*l:}??>S#d tmzZէEYy]~K͐j`NB<C<YPw @pȑ}*q=r޳̕3[^o}~\[=P( -0 =/[KwK"o`s'Ic&کv;ݝO5΂T|J$N-RHybhJX1l?R_Ҕ+=ĉS8CgǏMx+2$M-)"?R#_`>?Xsmݦ9F- b7plzD+|$μޣ0Ź&e5-8 Tg%FSY 0{â'A;P&;W=tn$c6 -ۂ̿z%;dq쌩 - u4.[`Bh%n̞D1kvykT$"L|J敻*]`&8P=utfbhnTfCЩkpa:"L9/Z%HҮǒ{Y,}*5)z$y&y:ɕJc=rQ=DZ}s63Y˘E{MqL85Y~YmqI\-.ћ͹]͌c]$UUlvf#aY7=o.>Mn.33 -V܍ pD6#qMF};7}[|q.Xm@«AYXk,}r&N,SX㉉g~C~!vu=})W'A5=KŪG.\'wBXɉnղ6_VNQ}9!ǘ΅62D7oNSܦmbi&8`XK8u86\WUqqIoz/wal6_Nn@],'sǮj9WdEEF~p˦[#qn>i\Wv}bIrSƫ"csuy4P_+xwġ-/GOL%]~K]mGߒtJ7tȮODʹlXiWY6e;֖B뇾{k ]=xsYXCA.(W(уiԢpo&eBvAf;u_[IxF) z|mwf^5nYۧMn(s5sK3 ̕i|CysRk}0 {k7u\fY/"9%#eE nu_ۥx\Jge*)w%f㕭*>w"UE~#)JTthn[ -;e2gg e ay*gMPSEa9Nl}=vt{%럑omI x$yÞ=1Rghf8w[Z|Ҝl{qYpO[fҁFuE-t۫-~ |@+^_mzrOJu ,@^#C巬/( -$V*tb+b#n7-:4GN:tk5Ӆn ruzg\h 7k5$3粁0J́{]WwϿ.Q"CU[RsGNc_hyG)x=<`g}YWVa`c7r/u9qx4nkK/>UNa9/Ǡbs)V pYC-(-*ܥUZ*IT"$5M= 5p"?q.o`z4]X8| ;Pqe:7L?v*g^Jo :J`\ZD4{\HefSA*5]]H7.>ߝ~RO"E^•mv'?c c2o:I`B' aoX,N8?p2iqZ]n\&[*otk!f{Gk'I -Z+/:!YS]OC^zn(9Z(n:٣j!GcFi~Sei* -l{:c+7@qO20wn_G'5|'&rɝH˦q=3?ۄ3`{JwVpN01{`-V{#ѓS>w'kK ?~BPe9x4J n\q*g%7D1U[vg[Gشn[ -gG7o:Z_c|+qjn^ﰙzqFb~whx1w"DY|\{DwBe<^OY2gw*y2RJ55Qa~y5czrcGXaUklfysSkyqQwǴbGlf.pn()5vݹ;>z 4u6`S#u]vI -ҪFL -;WWUwMw~@7Li-q8mꍻxH lxrnV4boS~HX~03W B[%CKo鉟mJSl=(L7!g7vnuXWj𛙆 -[qM]9,֧K3[]پbm{m% [M4N] Ĺ!o'q2KafqB]ȵ)s̜I3uĎ|coQȓJ3} ޏ_#/ -ŋ/;t9N sG}%U;חaq\Q֤&84}c ؛E'9>/5CEV[/4E:4H'zՕ4~P*ΠsTpDIewMت8t}е:R/9Mf Q[T2W5*wh98Nc9 RDxE88R -iܞGwhhjfX?Xms ]+P"led2.{>@5GEzu?}gdFy:)o!o82pt[r(\UC]~k BvtS?Wu1CdT)yyNP:WSRoO=+ ; -`8;hv- C|$ix>>G>,RY+|[4O ga2U~xHOy\hAfjx=HOCz2~M BZr [  -R0xEHiaZ74i$F?FU SF|'AH( `o ߅ܨy:T֡ԈP3ZZP+jCuB%MmF[PhÃ7,aÉwPB?!gfBN -}/!gߡr*rkcS 3csYbHnՑޚ;ó[vTbh --4F!!17"( &4Z S\/ 0#{kl.FwgG1Q]܈q4R CMb)@ O6zaFNrZqO8GovZW ̎&bCfaO%КGcC`8de pm~,fBhhf$$ 8|L7&@㐭/SZx]xv|t k<]Ŗ$1 u=?96>9\JhӃ Ij9nf2*F`^Z`p>ʹ>:$H:ϗCqc;X񩝓G|'q$4vmhbZٹ*ͷqf+gA6ցH-CYpx S!$4tٝYAK&ݖYq흫'[~6C  -endstream -endobj -180 0 obj -<< /Type /FontDescriptor -/FontName /c62bea+NotoSerif-Bold -/FontFile2 179 0 R -/FontBBox [-212 -250 1306 1058] -/Flags 6 -/StemV 0 -/ItalicAngle 0.0 -/Ascent 1068 -/Descent -292 -/CapHeight 1462 -/XHeight 1098 ->> -endobj -181 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -182 0 obj -[259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 310 1000 288 1000 1000 1000 559 1000 1000 1000 1000 1000 1000 304 1000 1000 1000 1000 1000 1000 752 1000 667 767 652 621 769 818 400 1000 1000 653 952 788 787 638 1000 707 585 652 747 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 1000 636 352 985 666 612 645 1000 522 487 404 666 605 855 1000 579 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -183 0 obj -<< /Length1 4472 -/Length 2986 -/Filter [/FlateDecode] ->> -stream -xV{lSuE;vBpps'vlq8!:y84PnՎMiꐪBYk2jEF)XG -eh])7ν7)tYmw}uˠ -R#ѽo"Q t=(돖̮Gיx,;\uHtz4v\5ez/zdBq=UH,gwb"7U @γ0ip}וC#/0 lJP ~66>qN`@ )!=#3ki7ˋVWqdD)셜˷s_0O^:?p>~ctjg4!s4mҦqFGn+$Ξ3N{Mck)O(i/z_SЍsjڵʮ5 322>r z9!We?'\9*1ɰpy~T^@hAC`ZG#L&?P1l^bN -5aT@.R'0sog4}A 5ns7G%!_`j85|0'UՌNog T^CȇbQR[PBUD$9jP2Xk]ٸeiB׫zMLa"ljuV#abBhŘ]@{)(Q;ƈi$h 7a߾9sc+zSP{k`W{wf1'{8 ٧wfNy*sc\cVR_VF{jˬu$ķ]͡W SQ|qW3"&hh<մloX]?<٫Nj>ɥ\w J*T( -%c簫8b-+d_l>8TKF WƢGi3(%Ĥ.=jDiv󉔖:#]ŎZם0"9G846Қ8# b:q9d%ͩ| Jse<$/7e6/sz*/yYV`A:m,*TidwcG,U9[p߯'_QBzD_+9 8kIkp"ΤN.7LOO$"sa'%7406H9)!jҠ[)Xя*rX[liX]鵓t*qq;WT$˵*]jz7٥;E(T=]]JVNzN y)I /Ԙ9ki^ܟͅ -sUVS3{ ue͙MdMk"F(#]HUxV n\_1BAE{ x΂|ϥ<̷+8ŽwK CE"!_{"H_0FoEB$2="&T&=J`(om#QӃL, n I[M{&m׷ P&pw<Z۠: Ѕ-+JfɔR )x[RNANΆe:u2-ȁ5pT+P+2=rHLObR$SaqTXA<2= -I<yCN~M {Fxv>"Wy_3;g,|F^(Fi>[&KtZŮZ 3Ur Űc@8KFY: ]R\U)PbhNJt˶q]lDPeT3fl[5%$'pލh%]QSD7D-c3lf&+ذKgI$D:$&;\0@'Уf4"=6Tl \{w4M]Ô{}0!zΣÁp;>9GXEE]Z3T v)+;_f߿~ - -endstream -endobj -184 0 obj -<< /Type /FontDescriptor -/FontName /96a564+mplus1mn-regular -/FontFile2 183 0 R -/FontBBox [0 -230 1000 860] -/Flags 4 -/StemV 0 -/ItalicAngle 0.0 -/Ascent 860 -/Descent -140 -/CapHeight 860 -/XHeight 0 ->> -endobj -185 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -186 0 obj -[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 1000 500 1000 1000 500 1000 1000 1000 500 500 1000 1000 500 1000 500 500 500 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 500 500 500 500 500 500 1000 500 1000 1000 500 500 500 500 500 500 500 500 500 500 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -187 0 obj -<< /Length1 5372 -/Length 3472 -/Filter [/FlateDecode] ->> -stream -xW{\T׵^33<5P'F$JAf1**GT P/203 *6*! chi5FRxm^Rk:{Ι?.朽{[k 24=MuKQ@mMv"js;+;Qos: ߎI0a_^i̺vh د}~${ uB~׋P]c_~4@}dzG@)-bB/VxpNhGD¸XSԚxH?A#` ^&3I$X٦,ZtvWibE<&؍d@"Le -F=(tVSVTIDYFNN+Xh73Ҭe9Ѿ#rqb3{9]n2c\v OlnDͰٜS9G>! b cm+@ȢJǎʶӉUЧo&9qcg'*[@*Sl ժ*Dm[iӣ+lJ U(+d|Zh Ɠˈ1c#GPmȸmJCEq_Ԯ#lڦ6OQrrEoQW7q=`wh!@xtaϘX~R['+=4|emy"]Sc*l6CCyˎ*u<'<$ӛ'#g:>!hԜ>e2ZΧ{^;7o{ݏlRW&?<#Yw:͛?P{`űt/ -Z!$s.h#_X~9*Sz7qKHuTמenj=WUY+ \Z<R5w rіXL -aJd!?gζ -{@xhjԪh":Ajޜ J?3*i9DfAWo =+_8Jt*3έgEMHS=#m`.SMVYl̯]_S[Cn3CCŎN=rrR-ڒ%iƤZyAz*VI:N`KlnУ덳YI> (1_̋hHXj'|}Jޔ\0: j ղOnRzp.jdNc q"W ,x"er;!`%9Z?Y>U蹦ʵm~[x9mCsȫc} %Y{QP$ըdnxA{~U$IqRqa5zrTXKK3nD\>ֳc9ghҦWK?>]q-U ꌮOXݚW~\_TtЍ{⺬H:1"[T&ImƩ߸U-\pmՄm/_, 7;.*uğ{@o-e P #:drv&cat/ܶ(Yl4%]X5!};v2ԑd-bNVΖ}\6seeMablG[^P `;,^j 9fلu|;5n"jb߇01CO .vF!GiKІחۯ8,9,yJȶEBoh"C 02q 7[b. )b\A! aL5?ߥe7:Gg ƼW#&Y! -J ya!<ѨE``1J$#|!6q{DD@$'-9.+%Y$gIA"9H!3$ bbI.$T!+sZ_v79RWmk+!_97x?? : <m^) EI+FVĞԵ`XJ 8RM~{[Kj@| v{soQK։CQC3jpǫ?=q戭%6v fÉ)-L᐀Gsfluszv}fth%#dE4kot۽Kyw8"Վ??K"U/,E[7fr_{_K;c.-dK@]vp9[\~/IG6R["TCs AC=8a46fņwcD n~\?kE-q˧Qގ%+V0KD>Gc+j->uuLy- =jtxyz F1ːu3uĭ(QLMN;hώB܇;S9KHQ"ll .,P>ʪ5{ѧ^C\~>σI! -endstream -endobj -188 0 obj -<< /Type /FontDescriptor -/FontName /86b0d1+NotoSerif-Italic -/FontFile2 187 0 R -/FontBBox [-254 -250 1238 1047] -/Flags 70 -/StemV 0 -/ItalicAngle -12.0 -/Ascent 1068 -/Descent -292 -/CapHeight 1462 -/XHeight 1098 ->> -endobj -189 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -190 0 obj -[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 705 1000 1000 1000 1000 1000 1000 792 1000 1000 1000 1000 937 1000 1000 620 1000 1000 543 612 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 458 1000 579 562 486 1000 493 317 556 599 304 1000 568 304 895 599 574 577 1000 467 463 368 1000 1000 1000 1000 527 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -191 0 obj -<< /Length1 2376 -/Length 1493 -/Filter [/FlateDecode] ->> -stream -xT}h[U?4e֛u%i6JYڦM{5Y6-It[pQEDAPa"C :*ŁQ![/u"}q~|ι= P`wXND ֹOqGm* -\0 -T&ӅI Jmd"f9!|2E%;%Ѕ tljd3BgXG X:bg Aw3MSxYӆYݳٹtͧQ%LGC]hޝ,Y{!,`ow)X.lRy c٭ݰ S5M}owg>O/02%"4;eU6C -9H шF+ Xޯh)^abDWY)<. |#e+.fCt<#`QOcUfr,x\贋fJ4jgnʤ oAɺXDO _ Dʌ "PcozbW5i$JjX!ѯt*%aeXJ`ltX׫14U*UE-ȝ3?jb~`ЦZuˀF!d3sshj5H"v#bB!QR7(j5XvXK@[xLiI/Έj~Ol''@b?j3W<.ǐBV?./e 8G(8ۙؽ^bb]prn -Upz -endstream -endobj -192 0 obj -<< /Type /FontDescriptor -/FontName /8b258c+mplus1mn-italic -/FontFile2 191 0 R -/FontBBox [0 -230 1000 860] -/Flags 4 -/StemV 0 -/ItalicAngle 0.0 -/Ascent 860 -/Descent -140 -/CapHeight 860 -/XHeight 0 ->> -endobj -193 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -194 0 obj -[1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -xref -0 195 -0000000000 65535 f -0000000015 00000 n -0000000394 00000 n -0000000598 00000 n -0000000719 00000 n -0000000770 00000 n -0000001042 00000 n -0000002043 00000 n -0000002339 00000 n -0000002506 00000 n -0000022520 00000 n -0000023260 00000 n -0000031865 00000 n -0000032279 00000 n -0000032323 00000 n -0000032372 00000 n -0000032416 00000 n -0000032460 00000 n -0000032633 00000 n -0000032750 00000 n -0000032794 00000 n -0000032909 00000 n -0000033023 00000 n -0000033201 00000 n -0000033376 00000 n -0000033420 00000 n -0000033563 00000 n -0000033738 00000 n -0000033854 00000 n -0000038054 00000 n -0000044854 00000 n -0000045220 00000 n -0000045264 00000 n -0000045308 00000 n -0000045352 00000 n -0000045396 00000 n -0000045571 00000 n -0000055777 00000 n -0000056182 00000 n -0000056226 00000 n -0000056342 00000 n -0000056386 00000 n -0000056560 00000 n -0000056604 00000 n -0000056721 00000 n -0000056765 00000 n -0000056809 00000 n -0000073094 00000 n -0000073466 00000 n -0000073582 00000 n -0000073626 00000 n -0000073670 00000 n -0000073714 00000 n -0000083594 00000 n -0000083973 00000 n -0000084017 00000 n -0000084061 00000 n -0000084177 00000 n -0000084221 00000 n -0000084337 00000 n -0000084381 00000 n -0000084425 00000 n -0000084906 00000 n -0000085392 00000 n -0000085436 00000 n -0000098075 00000 n -0000098488 00000 n -0000098605 00000 n -0000098648 00000 n -0000098765 00000 n -0000098880 00000 n -0000098924 00000 n -0000099037 00000 n -0000099154 00000 n -0000099198 00000 n -0000105728 00000 n -0000106070 00000 n -0000106114 00000 n -0000106158 00000 n -0000106202 00000 n -0000106245 00000 n -0000107845 00000 n -0000108198 00000 n -0000108242 00000 n -0000108286 00000 n -0000108330 00000 n -0000108506 00000 n -0000108550 00000 n -0000108714 00000 n -0000108851 00000 n -0000108990 00000 n -0000109105 00000 n -0000109224 00000 n -0000109343 00000 n -0000109464 00000 n -0000109599 00000 n -0000109735 00000 n -0000109860 00000 n -0000109988 00000 n -0000110112 00000 n -0000110237 00000 n -0000110367 00000 n -0000110498 00000 n -0000110625 00000 n -0000110753 00000 n -0000110883 00000 n -0000111015 00000 n -0000111144 00000 n -0000111274 00000 n -0000111418 00000 n -0000111563 00000 n -0000111712 00000 n -0000111862 00000 n -0000112006 00000 n -0000112151 00000 n -0000112288 00000 n -0000112426 00000 n -0000112551 00000 n -0000112678 00000 n -0000112795 00000 n -0000112915 00000 n -0000113037 00000 n -0000113160 00000 n -0000113279 00000 n -0000113401 00000 n -0000113528 00000 n -0000113657 00000 n -0000113787 00000 n -0000113919 00000 n -0000114044 00000 n -0000114170 00000 n -0000114298 00000 n -0000114427 00000 n -0000114555 00000 n -0000114684 00000 n -0000114809 00000 n -0000114935 00000 n -0000115060 00000 n -0000115186 00000 n -0000115313 00000 n -0000115441 00000 n -0000115565 00000 n -0000115690 00000 n -0000115961 00000 n -0000116232 00000 n -0000116310 00000 n -0000116743 00000 n -0000116935 00000 n -0000117159 00000 n -0000117303 00000 n -0000117455 00000 n -0000117697 00000 n -0000117892 00000 n -0000118046 00000 n -0000118220 00000 n -0000118425 00000 n -0000118589 00000 n -0000118773 00000 n -0000119050 00000 n -0000119286 00000 n -0000119534 00000 n -0000119750 00000 n -0000119951 00000 n -0000120081 00000 n -0000120223 00000 n -0000120375 00000 n -0000120555 00000 n -0000120776 00000 n -0000120930 00000 n -0000121109 00000 n -0000121275 00000 n -0000121429 00000 n -0000121597 00000 n -0000121773 00000 n -0000121923 00000 n -0000122105 00000 n -0000129992 00000 n -0000130208 00000 n -0000131571 00000 n -0000132635 00000 n -0000138372 00000 n -0000138593 00000 n -0000139956 00000 n -0000141051 00000 n -0000144128 00000 n -0000144342 00000 n -0000145705 00000 n -0000146813 00000 n -0000150376 00000 n -0000150602 00000 n -0000151965 00000 n -0000153078 00000 n -0000154662 00000 n -0000154875 00000 n -0000156238 00000 n -trailer -<< /Size 195 -/Root 2 0 R -/Info 1 0 R ->> -startxref -157373 -%%EOF diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/images/Overview.png b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/images/Overview.png deleted file mode 100644 index 14427f069264c2cea19dc81809b7b8ec382f0dbf..0000000000000000000000000000000000000000 Binary files a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/FD/images/Overview.png and /dev/null differ diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/HTTPmsg_CNL113312_PRI_2.doc b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/HTTPmsg_CNL113312_PRI_2.doc deleted file mode 100644 index 8bc1bb47f40a9306d6be5e17993e48883db46f22..0000000000000000000000000000000000000000 Binary files a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/HTTPmsg_CNL113312_PRI_2.doc and /dev/null differ diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.adoc b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.adoc deleted file mode 100644 index bea385857f6b794419cafc631e3273353fe29343..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.adoc +++ /dev/null @@ -1,572 +0,0 @@ ---- -Author: Péter Dimitrov -Version: 198 17-CNL 113 312, Rev. G -Date: 2010-07-01 - ---- -= HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide -:author: Péter Dimitrov -:revnumber: 198 17-CNL 113 312, Rev. G -:revdate: 2010-07-01 -:toc: - -== About This Document - -=== How to Read This Document - -This is the User’s Guide for the _HTTPmsg_CNL113312_ (called HTTP from now on) test port. The HTTP test port is developed for the TTCN-3 Toolset with TITAN according to the Functional Specification <<_3, [3]>>. - -=== Prerequisite Knowledge - -The knowledge of the TITAN TTCN-3 Test Executor <<_2, [2]>> and the TTCN-3 language <<_1, [1]>> is essential. Basic knowledge of the HTTP protocol is valuable when reading this document. - - -== System Requirements - -In order to operate the HTTP test port the following system requirements must be satisfied: - -* Platform: any platform supported by TITAN RTE, optional OpenSSL. -* TITAN TTCN-3 Test Executor R8A (1.8.pl0) or higher installed. For installation guide see <<_2, [2]>> - -NOTE: This version of the test port is not compatible with TITAN releases earlier than R8A. - -* The C compiler gcc version 2.95 or above is installed. -* The OpenSSL 0.9.7 or above is installed. See <<_5, [5]>>. -* The Abstract_Socket CNL 113 384, rev. R6A or later product has to be installed. - -== Fundamental Concepts - -The test port establishes connection between the TTCN-3 test executor and the HTTP server or client trough a TCP/IP socket connection. The test port transmits and receives HTTP1.1 messages; see <<_3, [3]>> and <<_4, [4]>> - -= The Test Port - -== Overview - -The HTTP test port offers HTTP message primitives and TCP connection control ASPs to the test suite in TTCN-3 format. The TTCN-3 definition of the HTTP messages and TCP notification ASPs can be found in a separate TTCN-3 module. This module should be imported into the test suite. - -== Installation - -Since the HTTP test port is used as a part of the TTCN-3 test environment this requires TTCN-3 Test Executor to be installed before any operation of the HTTP test port. For more details on the installation of TTCN-3 Test Executor see the relevant section of <<_2, [2]>> - -When building the executable test suite intended to handle HTTP over SSL connections, the libraries compiled for the OpenSSL toolkit and the TTCN-3 Test Executor should also be linked into the executable. - -Using and compiling OpenSSL is optional in the test port. See <<_5, [5]>> for more information. OpenSSL libraries should be added to the _Makefile_ generated by the TITAN executor see example in close <<8_examples.adoc#makefile, Makefile>>. - -== Configuration - -The executable test program behavior is customized via the RTE configuration file. This is a simple text file, which contains various sections (e.g. `[TESTPORT_PARAMETERS]`) after each other. The usual suffix of the RTE configuration file is _.cfg_. For further information about the configuration file see <<_2, [2]>> - -[[HTTP_test_port_parameters_in_the_RTE_configuration_file]] -=== HTTP Test Port Parameters in the RTE Configuration File - -In the `[TESTPORT_PARAMETERS]` section you can specify parameters that are passed to the test ports. Each parameter definition consists of a component name, a port name, a parameter name and a parameter value. The component name can be either an identifier or a component reference (integer) value. The port and parameter names are identifiers while the parameter value must always be a charstring (with quotation marks). Instead of component name or port name (or both of them) the asterisk ("*") sign can be used, which means "all components" or "all ports of the component". More information about the RTE configuration file can be found in <<_2, [2]>> - -In the `[TESTPORT_PARAMETERS]` section the following parameters can be set for the HTTP test port. Parameters marked with bold fonts apply to *SSL* using HTTP test ports *only*. Parameter values are *case-sensitive*! - -* `use_notification_ASPs` -+ -Enables receiving of `Connect_result`, `Client_connected` and `Listen_result` ASPs. Its default value is `_"no"_` in order to provide backward-compatibility for test suites using the port versions older than R2A. - -* `server_backlog` -+ -The parameter can be used to specify the number of allowed pending (queued) connection requests on the port the server listens. It is optional in server mode and not used in client mode. The default value is `_"1024"_`. - -* `http_debugging` -+ -Enables detailed debugging in the test port. It has only effect when TTCN_DEBUG is also set within the logging parameters of the configuration file. Its default value is `_"no"_`. - -* `TRUSTEDCALIST_FILE` -+ -It specifies a PEM encoded file’s path on the file system containing the certificates of the trusted CA authorities to use. Mandatory in server mode, and mandatory in client mode if VERIFYCERTIFICATE=`_"yes"_`. - -* `VERIFYCERTIFICATE` -+ -The parameter is *optional*, and can be used to tell the HTTP test port whether to check the certificate of the other side. If it is defined `_"yes"_`, the test port will query and check the certificate. If the certificate is not valid (i.e. the public and private keys do not match), it will exit with a corresponding error message. If it is defined `_"no"_`, the test port will not check the validity of the certificate. The default value is `_"no"_`. - -* `KEYFILE` -+ -This parameter is *conditional*. It specifies a PEM encoded file’s path on the file system containing the RSA private key. Mandatory in server mode and optional in client mode. - -* `CERTIFICATEFILE` -+ -This parameter is *conditional*. It specifies a PEM encoded file’s path on the file system containing the certificate chain. For detailed information see <<_5, [5]>> Mandatory in server mode and optional in client mode. Note that the server may require client authentication. In this case no connection can be established without a client certificate. - -* `PASSWORD` -+ -The parameter is *optional*, and can be used to specify the password protecting the private key file. The PASSWORD has to be the password used by generation of the private key file. If the password is not defined, the SSL toolkit asks for it when the test port receives the `LISTEN` ASP. It is recommended to define it in the config file instead. - -== Start Procedure - -=== TTCN-3 Test Executor - -Before the executable test suite can be run the TTCN-3 modules and C++ codes should be compiled and linked into an executable program. This process can be automated using the make utility. For more information about the _Makefile_ see the *_Makefile_* section and <<_2, [2]>> - -NOTE: The c++ implementation files __HTTPmsg_PT.hh__, __HTTPmsg_PT.cc__, __Abstract_Socket.cc__, __Abstract_Socket.hh__ and the TTCN-3 modules __HTTPmsg_Types.ttcn__ and __HTTPmsg_PortType.ttcn__ of the test port should be included in the _Makefile_. - -For information on how to start the execution see <<_2, [2]>> - -=== Connecting to a Server - -In case of the test performs the role of a HTTP client, the `Connect` ASP has to be sent. Its parameters are: - -`hostname`: host name or IP address of the remote server. - -`portnumber`: port number of the remote server where it accepts connections. - -`use_ssl`: has to be `_false_` on normal TCP/IP connections, `_true_` if the server accepts HTTPS connections. - -Multiple parallel connections can be opened and used. If two or more connections are used in parallel, `use_notification_ASPs` parameter has to be set to `_true_`, see <>. In this case `Connect_result` ASP is returned to the test case with the `client_id` associated to the connection. The returned `client_id` has to be used in the messages targeted to send on this connection. The returned `client_id` with value `_–1_` means that the server did not accept the connection because an error occurred. - -=== Starting a Server, Listening for Client Connections - -In case of the test performs the role of a HTTP server, the `Listen` ASP has to be sent. Its parameters are: - -`local_hostname`: host name or IP address of the interface in the local computer. It should be set if the workstation has multiple IP interfaces, and the test has to use a specific one. - -`portnumber`: port number where the server will accept connections. - -`use_ssl`: has to be `_false_` to accept normal TCP/IP connections, `_true_` to accept HTTPS connections. - -Sending the `Listen` ASP multiple times will cause to close the listening port and open another one. - -If `use_notification_ASPs` parameter is set to `_true_` in the configuration, the `Listen_result` ASP is returned to the test case with the opened port number. The returned `portnumber` with value `_–1_` means that an error occurred while setting up the requested listening port. - -If a client connects to the server and `use_notification_ASPs` parameter is set to `_true_` in the configuration, the `Client_connected` ASP is sent to the test case with `_hostname_`, `_portnumber_` and `_client_id_` fields. `client_id` has to be used as described above. - -[[sending-receiving-http-messages]] -== Sending/receiving HTTP Messages - -The HTTP test port is able to send and receive `HTTPMessage` structures. The `HTTPMessage` can be one of the following types: - -* `HTTPRequest` + -The Request message represents a single request to perform by the HTTP server, usually to access a `resource` on the server. -* `HTTPResponse` + -The Response message is sent by the HTTP server to the client. It includes the return status code of the request and the requested resource. -* `HTTPRequest_binary_body` + -The same as the `HTTPRequest` message. It is passed to TTCN when the body of the message contains non-ascii characters. -* `HTTPResponse_binary_body` + -The same as the `HTTPResponse` message. It is passed to TTCN when the body of the message contains non-ascii characters. - -In case of multiple connections, the `client_id` will identify the connection. When sending an HTTP message, it has to be set to the corresponding connection id. When receiving the message, the test port sets it to the corresponding connection id, and the test case will get the right value. - -Apart from the `HTTPRequest` and `HTTPResponse` ASPs above, the `erronous_msg` is received by the test port and sent to the test suite: - -`HTTP_erronous_msg` + -If a message is received on the connection, which can not be decoded as a `HTTP1.1` or `HTTP1.0` message, the `HTTPMessage` will contain an erroneous message with a `client_id`, and sent to the test suite. - -== Stop Procedure - -=== Closing Connections - -To close a specific client connection, the `Close` ASP has to be sent with the relevant `client_id`. If `client_id` is `_omit_`, all client connections will be closed. - -To close the server listening port, the `Shutdown` ASP has to be sent. - -If `use_notification_ASPs` parameter is set to `_true_` in the configuration, the test case will receive the `Close` ASP if the remote end of the connection disconnects. The `client_id` field will identify the relevant connection. - -If the remote end closes the connection, a `Half_close` ASP is received by the test case. `Half_close` means that the remote end will not send any more data, but it may receive. Some test cases may use this functionality, but in most cases a `Close` ASP has to be sent in reply to it, with the `client_id` received in the `Half_close` message. - -[[ttcn-3-test-executor-0]] -=== TTCN-3 Test Executor - -The TITAN executor stops the test port after the test case is finished or in case of execution error during the test case. - -= Usage as Protocol Module - -The HTTP test port can be used as a protocol module, i.e. only a protocol data structure description with the appropriate encoding and decoding functions. The data structure definitions are the same as in case of http test port, they can be found in file _HTTPmsg_Types.ttcn._ The encoding and decoding functions are declared as external functions in file _HTTPmsg_Types.ttcn_ but they are implemented in files _HTTPmsg_PT.cc/hh._ - -The available functions are as follows: - -[cols=",,",options="header",] -|===================================================== -|Name |Type of formal parameters |Type of return value -|`enc_HTTPMessage` |HTTPMessage |octetstring -|`dec_HTTPMessage` |in octetstring stream + -inout HTTPMessage msg + -in boolean socket debugging |integer -|===================================================== - -If the test port used as protocol module, the Makefile is the same as in normal case i.e _HTTPmsg_PT.cc/hh_ is used and the port definition file _HTTPmsg_PortType.ttcn_ is also used but (generally) there will not be defined any port of this port type ``HTTPmsg_PT``. - -= Usage with IPL4 Test Port - -To use IPL4 test port for HTTP traffic the HTTP test port provides a message length calculator function. That function can be used to determine the message boundary by the IPL4 test port. - -[cols=",,",options="header",] -|===================================================== -|Name |Type of formal parameters |Type of return value -|`f_HTTPMessage_len` |in octetstring stream |integer -|===================================================== - -= Migrating Test Suite Using R1x - -With the release of the port version R2A it has been decided to add four new received ASPs and a new message field to the test port types. This modification has been made to fulfil the requirement of a HTTP server handling multiple parallel client connections. The change causes test suites written for R1x port to fail the compilation. However, the transition to the R2 port is straightforward. - -Steps to compile older test suites with HTTP port R2: - -* Decide whether SSL will be used or not in the test. If yes, please see <<8_examples.adoc, makefile, Makefile>> about editing the _Makefile_ to allow SSL in the test. If SSL is not used in the test, then SSL specific parts can be removed from the _Makefile_. -+ -NOTE: `OPENSSL_DIR` and `–lssl` are still needed to compile the executable. - -* Remove _buffer.cc_ and _buffer.hh_ from the (user) sources, and add __Abstract_Socket.cc__ and __Abstract_Socket.hh__. - -* Do not set the `use_notification_ASPs` to `_"yes"_` unless you do not modify the test suite to handle the incoming `Close`, `Connect_result`, `Client_connected` and `Listen_result` ASPs. It is recommended to consider the usage of these ASPs since they allow the test suite to implement more complex TCP event handling. For example, a client test case can wait for a server to be started up by checking if the `client_id` is `_–1_` in the returned `Connect_result` ASP. - -* Add the `client_id := omit` assignment to every `HTTPRequest` , `HTTPResponse`, `HTTPRequest_binary_body`, `HTTPResponse_binary_body`, `erronous_msg`, `Half_close` and `Close` variables and templates. - -Example: - -[source] ----- -var HTTPRequest r := { method := "GET", uri := "/", - version_major := 1, version_minor := 1, header := hd, body := ""} ----- - -has to be modified to: - -[source] ----- -var HTTPRequest r := { client_id := omit, method := "GET", uri := "/", - version_major := 1, version_minor := 1, header := hd, body := ""} ----- - -The new ASPs are only received by the test if the `use_notification ASPs := "yes"` is specified in the runtime configuration file. - -= Error Messages - -The error messages have the following general form: - -`*`Dynamic test case error: *`` - -The list of the possible error messages is shown below. Note that this list contains the error messages produced by the test port. The error messages coming from the TITAN are not shown: - -`*Parameter value not recognized for parameter *` - -The specified `` in the runtime configuration file is not recognized for the parameter ``. See <<2_the_test_port.adoc#HTTP_test_port_parameters_in_the_RTE_configuration_file, HTTP Test Port Parameters in the RTE Configuration File>>. - -`*: HTTP test port is not compiled to support SSL connections. Please check the User's Guide for instructions on compiling the HTTP test port with SSL support.*` - -`-DAS_USE_SSL` and OpenSSL related compiling instructions are missing from the _Makefile_. See <<8_examples.adoc#makefile, Makefile>>. - -`*Cannot connect to server*` - -The Connect operation failed; look for the reason above this message in the log. - -`*Cannot listen at port*` - -The Listen operation failed; look for the reason above this message in the log. - -`*Cannot accept connection at port*` - -The server failed to accept an incoming connection; look for the reason above this message in the log. - -`*Cannot open socket*` - -There was an error while allocating a socket for a connection; look for the reason above this message in the log. - -`*Setsockopt failed*` - -There was an error while allocating a socket for a connection; look for the reason above this message in the log. - -`*Cannot bind to port*` - -There was an error while allocating the requested port number for a connection; look for the reason above this message in the log. - -`*getsockname() system call failed on the server socket*` - -There was an error while allocating the requested port number for a connection; look for the reason above this message in the log. - -`*Client Id not specified although not only 1 client exists*` - -Since multiple connections are alive, you have to specify a client id when sending a message to distinguish between the connections where the message has to be sent. - -`*There is no connection alive, use the 'ASP_TCP_Connect' before sending anything.*` - -Connect has to be sent before sending a message, or the server has to accept a connection first. - -`*Send system call failed: There is no client nr connected to the TCP server*` - -A send operation is performed to a non-existing client. - -`*Send system call failed: bytes were sent instead of *` - -The send operation failed because of the ``. - -`*The host name is not valid in the configuration file.*` - -The given host name in the Connect / Listen ASP cannot be resolved by the system. - -`*Number of clients<>0 but cannot get first client, programming error*` - -Never should show up. Please send a bug report including log files produced with all debugging possibilities turned on. - -`*Index exceeds length of peer list.*` - -Never should show up. Please send a bug report including log files produced with all debugging possibilities turned on. - -`*Abstract_Socket::get_peer: Client does not exist*` - -Never should show up. Please send a bug report including log files produced with all debugging possibilities turned on. - -`*Invalid Client Id is given: .*` - -Please send a bug report including log files produced with all debugging possibilities turned on. - -`*Peer does not exist.*` - -Never should show up. Please send a bug report including log files produced with all debugging possibilities turned on. - -== Additional Error Messages in case SSL Connections Are Used - -`*No SSL CTX found, SSL not initialized*` - -Never should show up. - -`*Creation of SSL object failed*` - -Never should show up. - -`*Binding of SSL object to socket failed*` - -The SSL object could not be bound to the TCP socket - -`*SSL error occurred*` - -A general SSL error occurred. Check the test port logs to see previous error messages showing the real problem. - -`* is not defined in the configuration file*` - -The test port parameter with is mandatory, but is not defined in the configuration file. - -`*No SSL data available for client *` - -Please send a bug report including log files produced with all debugging possibilities turned on. - -`*Could not read from /dev/urandom*` - -The read operation on the installed random device is failed. - -`*Could not read from /dev/random*` - -The read operation on the installed random device is failed. - -`*Could not seed the Pseudo Random Number Generator with enough data.*` - -As no random devices found, a workaround is used to seed the SSL PRNG. Consider upgrading your system with the latest available patches. HelpDesk should correct this within a day. - -`*The seeding failed.*` - -Please send a bug report including log files produced with all debugging possibilities turned on. - -`*SSL method creation failed.*` - -The creation of the SSL method object failed. - -`*SSL context creation failed.*` - -The creation of the SSL context object failed. - -`*Can't read certificate file*` - -The specified certificate file could not be read. - -`*Can't read key file*` - -The specified private key file could not be read. - -`*Can't read trustedCAlist file*` - -The specified certificate of the trusted CAs file could not be read. - -`*Cipher list restriction failed for *` - -The specified cipher restriction list could not be set. - -`*Unknown SSL error code: *` - -Please send a bug report including log files produced with all debugging possibilities turned on. - -= Warning Messages - -The following list shows the possible warning messages produced by the test port: - -`*HTTPmsg__PT::set_parameter(): Unsupported Test Port parameter: *` - -The specified parameter is not recognized by the test port. Check <<2_the_test_port.adoc#HTTP_test_port_parameters_in_the_RTE_configuration_file, HTTP Test Port Parameters in the RTE Configuration File>> for parameter names. The parameter names have to be given case sensitive. - -`*: to switch on HTTP test port debugging, set the ..http_debugging := ``yes'' in the port's parameters.*` - -HTTP test port produces detailed logs if you specify `thehttp_debugging := "yes"` in the configuration file. - -`*Error when reading the received TCP PDU.*` - -There was an error while reading incoming data from the connection. The connection gets disconnected immediately, the test is informed about the disconnect by a Close ASP with the relevant `client_id`. - -`*Cannot open socket when trying to open the listen port: *` - -The Listen operation failed because of ``. - -`*Setsockopt failed when trying to open the listen port: *` - -There was an error while allocating a socket because of ``. The test is informed about the failure by receiving a `Listen_result` ASP with portnumber = `_"-1"_`. - -`*Cannot bind to port when trying to open the listen port: *` - -There was an error while binding to the requested port because of ``. The test is informed about the failure by receiving a `Listen_result` ASP with portnumber = `_"-1"_`. - -`*Cannot listen at port when trying to open the listen port: *` - -There was an error while trying to listen for incoming connections because of ``. The test is informed about the failure by receiving a `Listen_result` ASP with portnumber = `_"-1"_`. - -`*getsockname() system call failed on the server socket when trying to open the listen port: *` - -There was an error while trying to listen on the specified port because of ``. The test is informed about the failure by receiving a `Listen_result` ASP with portnumber = `_"-1"_`. - -`*Cannot open socket when trying to open client connection: *` - -There was an error while allocating a socket for a connection because of ``. The test is informed about the failure by receiving a `Connect_result` ASP with client_id = `_"-1"_`. - -`*Setsockopt failed when trying to open client connection: *` - -There was an error while allocating a socket for a connection because of ``. The test is informed about the failure by receiving a `Connect_result` ASP with client_id = `_"-1"_`. - -`*Cannot bind to port when trying to open client connection: *` - -There was an error while binding to the requested port to the socket because of ``. The test is informed about the failure by receiving a `Connect_result` ASP with client_id = `_"-1"_`. - -`*connect() returned error code EADDRINUSE. Perhaps this is a kernel bug. Trying to connect again.*` - -If the connect system call fails because of the `address is already in use' error, the test port automatically does 16 retry. Meanwhile this warning is logged. - -`*Cannot connect to server when trying to open client connection: *` - -The Connect operation failed; look for the reason above this message in the log. A `Connect_result` with `client_id = -1` will be returned to the test. - -`*Abstract_Socket::remove_client: is the server listening port, can not be removed!*` - -The specified `client_id` in the Close ASP belongs to the server listening port. Wrong `client_id` is specified. - -`*Client has not been removed, programming error*` - -Please send a bug report including log files produced with all debugging possibilities turned on. - -`*Warning: race condition while setting current client object pointer*`` - -There are multiple instances of the port running trying to access a common resource concurrently. This may cause problem. - -`*Connection from client is refused*` - -The connection from a client is refused in the server. - -`*Connection to server is refused*` - -The connection from the client is refused by the server. - -`*Server did not send a session ID*` - -The connection from the client is refused by the server. - -`*Verification failed*` - -The verification of the other side is failed. The connection will be shut down. - -`*SSL object not found for client *` - -Please send a bug report including log files produced with all debugging possibilities turned on. - -`*SSL_Socket::receive_message_on_fd: SSL connection was interrupted by the other side*` - -The TLS/SSL connection has been closed. If the protocol version is SSL 3.0 or TLS 1.0, this warning appears only if a closure alert has occurred in the protocol, i.e. if the connection has been closed cleanly. Note that in this case it does not necessarily indicate that the underlying transport has been closed. - -`*SSL_Socket::send_message_on_fd: SSL connection was interrupted by the other side*` - -See above. - -`*Other side does not have certificate.*` - -The other side of the SSL connection does not have a certificate. - -`*Solaris patches to provide random generation devices are not installed. See http://www.openssl.org/support/faq.html "Why do I get a''PRNG not seeded" error message?" A workaround will be used.*` - -Solaris patches to provide random generation devices are not installed. A workaround will be used to seed the PRNG. - -`*Private key does not match the certificate public key*`` - -The private key specified for the test port does not match with the public key. - -= Examples - -== Configuration File - -An example RTE configuration file is included in the 'demo' directory of the test port release. - -[[makefile]] -== Makefile - -In this section the most important parameters are listed in the _Makefile_. The following gives some detail about them: - -* `OPENSSL_DIR =` -+ -Specifies the OpenSSL installation directory. It has to contain the _lib/libssl.a_ file and the include directory. It is not needed if OpenSSL is installed by root in the default location. It is recommended to change the already-present OPENSSL_DIR entry, which is included by the _Makefile_ generation process. - -* `CPPFLAGS = -Dlatexmath:[$(PLATFORM) -I$](TTCN3_DIR)/include -DAS_USE_SSL-I$(OPENSSL_DIR)/include` -+ -The `DAS_USE_SSL` switch activates the SSL-specific code in the test port. If the switch is missing, SSL functionality will not be available, and the test port will generate dynamic test case error when connecting or listening with parameter including `use_ssl=true` setting. -+ -This `-I$(OPENSSL_DIR)/include` switch tells the C++ compiler where to look for the OpenSSL header files. It is not needed if OpenSSL is installed by root in the default location. - -* `TTCN3_MODULES =` -+ -The list of TTCN-3 modules needed. - -* `USER_SOURCES =` -+ -The list of other external C++ source files. - -* `$(TARGET): $(OBJECTS)` - -** `$(CXX) $(LDFLAGS) -o $@ $(OBJECTS) -L$(TTCN3_DIR)/lib -l$(TTCN3_LIB) \` - -** `-L$(OPENSSL_DIR)/lib –lssl -lcrypto $($(PLATFORM)_LIBS)` -+ -The `–L$(OPENSSL_DIR)/lib` and `–lssl` parameter tells the linker to use the _libssl.a_ compiled in the `$(OPENSSL_DIR)/lib` directory. - -= Terminology - -None. - -= Abbreviations - -ASP:: Abstract Service Primitive - -IUT:: Implementation Under Test (HTTP 1.1 server or client) - -RTE:: Run-Time Environment - -HTTP:: Hypertext Transfer Protocol - -SUT:: System Under Test - -SSL:: Secure Sockets Layer - -TTCN-3:: Testing and Test Control Notation version 3 - -= References - -[[_1]] -[1] ETSI ES 201 873-1 v3.1.1 (2005-06)The Testing and Test Control Notation version 3; Part 1: Core Language - -[[_2]] -[2] TITAN User Guide - -[[_3]] -[3] HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, Functional Specification - -[[_4]] -[4] http://www.ietf.org/rfc/rfc2616.txt[RFC 2616] + -Hypertext Transfer Protocol – HTTP/1.1 - -[[_5]] -[5] OpenSSL toolkit + -http://www.openssl.org - diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.pdf b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.pdf deleted file mode 100644 index eb197e7f5de58c6faf922ea82095d9635336a156..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide.pdf +++ /dev/null @@ -1,15626 +0,0 @@ -%PDF-1.3 -% -1 0 obj -<< /Title (HTTPmsg_CNL113312 Test Port for TTCN-3 Toolset with TITAN, User Guide) -/Author -/Creator (Asciidoctor PDF 1.5.0.alpha.16, based on Prawn 2.2.2) -/Producer -/ModDate (D:20180815083032+02'00') -/CreationDate (D:20180815083032+02'00') ->> -endobj -2 0 obj -<< /Type /Catalog -/Pages 3 0 R -/Names 14 0 R -/Outlines 179 0 R -/PageLabels 212 0 R -/PageMode /UseOutlines -/OpenAction [7 0 R /FitH 842.89] -/ViewerPreferences << /DisplayDocTitle true ->> ->> -endobj -3 0 obj -<< /Type /Pages -/Count 16 -/Kids [7 0 R 10 0 R 12 0 R 33 0 R 45 0 R 52 0 R 61 0 R 66 0 R 74 0 R 80 0 R 82 0 R 85 0 R 90 0 R 92 0 R 99 0 R 106 0 R] ->> -endobj -4 0 obj -<< /Length 2 ->> -stream -q - -endstream -endobj -5 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 4 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] ->> ->> -endobj -6 0 obj -<< /Length 931 ->> -stream -q -/DeviceRGB cs -0.6 0.6 0.6 scn -/DeviceRGB CS -0.6 0.6 0.6 SCN - -BT -102.0202 361.6965 Td -/F1.0 27 Tf -[<485454506d73675f434e4c3131333331322054> 29.7852 <65737420506f727420666f72>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6 0.6 0.6 scn -0.6 0.6 0.6 SCN - -BT -129.6973 327.6765 Td -/F1.0 27 Tf -[<5454> 20.0195 <434e2d332054> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e2c2055736572>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6 0.6 0.6 scn -0.6 0.6 0.6 SCN - -BT -471.062 293.6565 Td -/F1.0 27 Tf -<4775696465> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.0941 0.0941 0.0941 scn -0.0941 0.0941 0.0941 SCN - -BT -455.468 259.1849 Td -/F1.0 13 Tf -<508e7465722044696d6974726f76> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -314.6003 229.3714 Td -/F1.0 10.5 Tf -[<56> 60.0586 <657273696f6e203139382031372d434e4c20313133203331322c20526576> 69.8242 <2e20472c20323031302d30372d3031>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q - -endstream -endobj -7 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 6 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R ->> ->> ->> -endobj -8 0 obj -<< /Type /Font -/BaseFont /b45cdd+NotoSerif -/Subtype /TrueType -/FontDescriptor 214 0 R -/FirstChar 32 -/LastChar 255 -/Widths 216 0 R -/ToUnicode 215 0 R ->> -endobj -9 0 obj -<< /Length 22038 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 782.394 Td -/F2.0 22 Tf -[<54> 29.7852 <61626c65206f6620436f6e74656e7473>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 751.856 Td -/F1.0 10.5 Tf -<41626f7574205468697320446f63756d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -161.0311 751.856 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 751.856 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 751.856 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 733.376 Td -/F1.0 10.5 Tf -<486f7720746f2052656164205468697320446f63756d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -203.7871 733.376 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 733.376 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 733.376 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 714.896 Td -/F1.0 10.5 Tf -<507265726571756973697465204b6e6f776c65646765> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -182.4091 714.896 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 714.896 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 714.896 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 696.416 Td -/F1.0 10.5 Tf -[<53> 20.0195 <797374656d20526571756972656d656e7473>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -161.0311 696.416 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 696.416 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 696.416 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 677.936 Td -/F1.0 10.5 Tf -<46756e64616d656e74616c20436f6e6365707473> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -166.3756 677.936 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 677.936 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 677.936 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 659.456 Td -/F1.0 10.5 Tf -[<5468652054> 29.7852 <65737420506f7274>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -118.2751 659.456 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 659.456 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 659.456 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 640.976 Td -/F1.0 10.5 Tf -<4f76657276696577> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -112.9306 640.976 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 640.976 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 640.976 Td -/F1.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 622.496 Td -/F1.0 10.5 Tf -<496e7374616c6c6174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -118.2751 622.496 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 622.496 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 622.496 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 604.016 Td -/F1.0 10.5 Tf -[<436f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -134.3086 604.016 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 604.016 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 604.016 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 585.536 Td -/F1.0 10.5 Tf -[<485454502054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652052> 20.0195 <544520436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -358.7776 585.536 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 585.536 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 585.536 Td -/F1.0 10.5 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 567.056 Td -/F1.0 10.5 Tf -<53746172742050726f636564757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -139.6531 567.056 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 567.056 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 567.056 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 548.576 Td -/F1.0 10.5 Tf -[<5454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f72>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -182.4091 548.576 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 548.576 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 548.576 Td -/F1.0 10.5 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 530.096 Td -/F1.0 10.5 Tf -<436f6e6e656374696e6720746f206120536572766572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -187.7536 530.096 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 530.096 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 530.096 Td -/F1.0 10.5 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 511.616 Td -/F1.0 10.5 Tf -<5374617274696e672061205365727665722c204c697374656e696e6720666f7220436c69656e7420436f6e6e656374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -326.7106 511.616 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 511.616 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 511.616 Td -/F1.0 10.5 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 493.136 Td -/F1.0 10.5 Tf -<53656e64696e672f726563656976696e672048545450204d65737361676573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -230.5096 493.136 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 493.136 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 493.136 Td -/F1.0 10.5 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 474.656 Td -/F1.0 10.5 Tf -<53746f702050726f636564757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -139.6531 474.656 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 474.656 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 474.656 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 456.176 Td -/F1.0 10.5 Tf -<436c6f73696e6720436f6e6e656374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -177.0646 456.176 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 456.176 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 456.176 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -72.24 437.696 Td -/F1.0 10.5 Tf -[<5454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f72>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -182.4091 437.696 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 437.696 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 437.696 Td -/F1.0 10.5 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 419.216 Td -/F1.0 10.5 Tf -<55736167652061732050726f746f636f6c204d6f64756c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -177.0646 419.216 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 419.216 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 419.216 Td -/F1.0 10.5 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 400.736 Td -/F1.0 10.5 Tf -[<557361676520776974682049504c342054> 29.7852 <65737420506f7274>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -177.0646 400.736 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 400.736 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 400.736 Td -/F1.0 10.5 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 382.256 Td -/F1.0 10.5 Tf -[<4d696772> 20.0195 <6174696e672054> 29.7852 <657374205375697465205573696e6720523178>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -203.7871 382.256 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 382.256 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 382.256 Td -/F1.0 10.5 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 363.776 Td -/F1.0 10.5 Tf -<4572726f72204d65737361676573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -128.9641 363.776 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 363.776 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 363.776 Td -/F1.0 10.5 Tf -<37> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 345.296 Td -/F1.0 10.5 Tf -[<41> 20.0195 <64646974696f6e616c204572726f72204d6573736167657320696e20636173652053534c20436f6e6e656374696f6e73204172652055736564>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -364.1221 345.296 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -540.4906 345.296 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.1705 345.296 Td -/F1.0 10.5 Tf -<39> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 326.816 Td -/F1.0 10.5 Tf -[<57> 49.8047 <61726e696e67204d65737361676573>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -144.4726 326.816 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 326.816 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 326.816 Td -/F1.0 10.5 Tf -<3130> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 308.336 Td -/F1.0 10.5 Tf -<4578616d706c6573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -101.7166 308.336 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 308.336 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 308.336 Td -/F1.0 10.5 Tf -<3133> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 289.856 Td -/F1.0 10.5 Tf -[<436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -155.1616 289.856 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 289.856 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 289.856 Td -/F1.0 10.5 Tf -<3133> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.24 271.376 Td -/F1.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -107.0611 271.376 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 271.376 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 271.376 Td -/F1.0 10.5 Tf -<3133> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 252.896 Td -/F1.0 10.5 Tf -[<54> 29.7852 <65726d696e6f6c6f6779>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -112.4056 252.896 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 252.896 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 252.896 Td -/F1.0 10.5 Tf -<3133> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 234.416 Td -/F1.0 10.5 Tf -<416262726576696174696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -123.0946 234.416 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 234.416 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 234.416 Td -/F1.0 10.5 Tf -<3134> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 215.936 Td -/F1.0 10.5 Tf -<5265666572656e636573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6627 0.6627 0.6627 scn -0.6627 0.6627 0.6627 SCN - -BT -107.0611 215.936 Td -/F1.0 10.5 Tf -<2e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e202e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -BT -534.6211 215.936 Td -/F1.0 2.625 Tf - Tj -ET - -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.301 215.936 Td -/F1.0 10.5 Tf -<3134> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q - -endstream -endobj -10 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 9 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R ->> ->> -/Annots [117 0 R 118 0 R 119 0 R 120 0 R 121 0 R 122 0 R 123 0 R 124 0 R 125 0 R 126 0 R 127 0 R 128 0 R 129 0 R 130 0 R 131 0 R 132 0 R 133 0 R 134 0 R 135 0 R 136 0 R 137 0 R 138 0 R 139 0 R 140 0 R 141 0 R 142 0 R 143 0 R 144 0 R 145 0 R 146 0 R 147 0 R 148 0 R 149 0 R 150 0 R 151 0 R 152 0 R 153 0 R 154 0 R 155 0 R 156 0 R 157 0 R 158 0 R 159 0 R 160 0 R 161 0 R 162 0 R 163 0 R 164 0 R 165 0 R 166 0 R 167 0 R 168 0 R 169 0 R 170 0 R 171 0 R 172 0 R 173 0 R 174 0 R 175 0 R 176 0 R] ->> -endobj -11 0 obj -<< /Length 9096 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 782.394 Td -/F2.0 22 Tf -<41626f7574205468697320446f63756d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 741.146 Td -/F2.0 18 Tf -<486f7720746f2052656164205468697320446f63756d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.9243 Tw - -BT -48.24 713.126 Td -/F1.0 10.5 Tf -[<54686973206973207468652055736572> -29.7852 ] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.9243 Tw - -BT -216.8557 713.126 Td -/F3.0 10.5 Tf -<485454506d73675f434e4c313133333132> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.9243 Tw - -BT -325.7827 713.126 Td -/F1.0 10.5 Tf -<202863616c6c656420485454502066726f6d206e6f77206f6e29207465737420706f72742e20546865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.4917 Tw - -BT -48.24 697.346 Td -/F1.0 10.5 Tf -[<48545450207465737420706f727420697320646576656c6f70656420666f7220746865205454> 20.0195 <434e2d332054> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e206163636f7264696e6720746f207468652046756e6374696f6e616c>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 681.566 Td -/F1.0 10.5 Tf -<53706563696669636174696f6e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -115.398 681.566 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -128.8065 681.566 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 641.726 Td -/F2.0 18 Tf -<507265726571756973697465204b6e6f776c65646765> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.887 Tw - -BT -48.24 613.706 Td -/F1.0 10.5 Tf -[<546865206b6e6f776c65646765206f662074686520544954> 60.0586 <414e205454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f7220>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -1.887 Tw - -BT -316.891 613.706 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.887 Tw - -BT -330.2995 613.706 Td -/F1.0 10.5 Tf -[<20616e6420746865205454> 20.0195 <434e2d33206c616e677561676520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -1.887 Tw - -BT -470.0286 613.706 Td -/F1.0 10.5 Tf -<5b315d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.887 Tw - -BT -483.4371 613.706 Td -/F1.0 10.5 Tf -<20697320657373656e7469616c2e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 597.926 Td -/F1.0 10.5 Tf -<4261736963206b6e6f776c65646765206f662074686520485454502070726f746f636f6c2069732076616c7561626c65207768656e2072656164696e67207468697320646f63756d656e742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 553.814 Td -/F2.0 22 Tf -[<53> 20.0195 <797374656d20526571756972656d656e7473>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 524.626 Td -/F1.0 10.5 Tf -[<496e206f7264657220746f206f706572> 20.0195 <617465207468652048545450207465737420706f72742074686520666f6c6c6f77696e672073797374656d20726571756972656d656e7473206d757374206265207361746973666965643a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 496.846 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 496.846 Td -/F1.0 10.5 Tf -[<506c6174666f726d3a20616e> 20.0195 <7920706c6174666f726d20737570706f727465642062> 20.0195 <7920544954> 60.0586 <414e2052> 20.0195 <54452c206f7074696f6e616c204f70656e53534c2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 475.066 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 475.066 Td -/F1.0 10.5 Tf -[<544954> 60.0586 <414e205454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f72205238412028312e382e706c3029206f722068696768657220696e7374616c6c65642e2046> 40.0391 <6f7220696e7374616c6c6174696f6e2067756964652073656520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -500.8885 475.066 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.5 w -0.9333 0.9333 0.9333 SCN -102.4695 459.25 m -102.4695 435.47 l -S -Q -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.3451 443.286 Td -/F2.0 10.5 Tf -[<4e4f> 20.0195 <5445>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -114.4695 443.286 Td -/F1.0 10.5 Tf -[<546869732076657273696f6e206f6620746865207465737420706f7274206973206e6f7420636f6d70617469626c65207769746820544954> 60.0586 <414e2072656c6561736573206561726c696572207468616e205238412e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 411.506 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 411.506 Td -/F1.0 10.5 Tf -<546865204320636f6d70696c6572206763632076657273696f6e20322e3935206f722061626f766520697320696e7374616c6c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 389.726 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 389.726 Td -/F1.0 10.5 Tf -<546865204f70656e53534c20302e392e37206f722061626f766520697320696e7374616c6c65642e2053656520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -285.879 389.726 Td -/F1.0 10.5 Tf -<5b355d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -299.2875 389.726 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 367.946 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 367.946 Td -/F1.0 10.5 Tf -[<546865204162737472> 20.0195 <6163745f536f636b> 20.0195 <657420434e4c20313133203338342c20726576> 69.8242 <2e20523641206f72206c617465722070726f647563742068617320746f20626520696e7374616c6c65642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 323.834 Td -/F2.0 22 Tf -<46756e64616d656e74616c20436f6e6365707473> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0208 Tw - -BT -48.24 294.646 Td -/F1.0 10.5 Tf -[<546865207465737420706f72742065737461626c697368657320636f6e6e656374696f6e206265747765656e20746865205454> 20.0195 <434e2d332074657374206578656375746f7220616e6420746865204854545020736572766572206f7220636c69656e74>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9419 Tw - -BT -48.24 278.866 Td -/F1.0 10.5 Tf -[<74726f75676820612054> 20.0195 <43502f495020736f636b> 20.0195 <657420636f6e6e656374696f6e2e20546865207465737420706f7274207472> 20.0195 <616e736d69747320616e642072656365697665732048545450312e31206d657373616765733b2073656520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -0.9419 Tw - -BT -533.6315 278.866 Td -/F1.0 10.5 Tf -<5b335d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9419 Tw - -BT -547.04 278.866 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 263.086 Td -/F1.0 10.5 Tf -<616e6420> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -70.0695 263.086 Td -/F1.0 10.5 Tf -<5b345d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 213.634 Td -/F2.0 27 Tf -[<5468652054> 29.7852 <65737420506f7274>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 166.654 Td -/F2.0 22 Tf -<4f76657276696577> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.7015 Tw - -BT -48.24 137.466 Td -/F1.0 10.5 Tf -[<5468652048545450207465737420706f7274206f66666572732048545450206d657373616765207072696d69746976657320616e642054> 20.0195 <435020636f6e6e656374696f6e20636f6e74726f6c204153507320746f207468652074657374>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5284 Tw - -BT -48.24 121.686 Td -/F1.0 10.5 Tf -[<737569746520696e205454> 20.0195 <434e2d3320666f726d61742e20546865205454> 20.0195 <434e2d3320646566696e6974696f6e206f66207468652048545450206d6573736167657320616e642054> 20.0195 <4350206e6f74696669636174696f6e20415350732063616e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 105.906 Td -/F1.0 10.5 Tf -[<626520666f756e6420696e2061207365706172> 20.0195 <617465205454> 20.0195 <434e2d33206d6f64756c652e2054686973206d6f64756c652073686f756c6420626520696d706f7274656420696e746f2074686520746573742073756974652e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -12 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 11 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F3.0 19 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> -/Annots [20 0 R 22 0 R 23 0 R 25 0 R 26 0 R 28 0 R 29 0 R] ->> -endobj -13 0 obj -[12 0 R /XYZ 0 841.89 null] -endobj -14 0 obj -<< /Type /Names -/Dests 15 0 R ->> -endobj -15 0 obj -<< /Kids [69 0 R 115 0 R 70 0 R] ->> -endobj -16 0 obj -[12 0 R /XYZ 0 841.89 null] -endobj -17 0 obj -<< /Type /Font -/BaseFont /8ce6bb+NotoSerif-Bold -/Subtype /TrueType -/FontDescriptor 218 0 R -/FirstChar 32 -/LastChar 255 -/Widths 220 0 R -/ToUnicode 219 0 R ->> -endobj -18 0 obj -[12 0 R /XYZ 0 765.17 null] -endobj -19 0 obj -<< /Type /Font -/BaseFont /7c8351+NotoSerif-Italic -/Subtype /TrueType -/FontDescriptor 222 0 R -/FirstChar 32 -/LastChar 255 -/Widths 224 0 R -/ToUnicode 223 0 R ->> -endobj -20 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [115.398 678.5 128.8065 692.78] -/Type /Annot ->> -endobj -21 0 obj -[12 0 R /XYZ 0 665.75 null] -endobj -22 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [316.891 610.64 330.2995 624.92] -/Type /Annot ->> -endobj -23 0 obj -<< /Border [0 0 0] -/Dest (_1) -/Subtype /Link -/Rect [470.0286 610.64 483.4371 624.92] -/Type /Annot ->> -endobj -24 0 obj -[12 0 R /XYZ 0 582.11 null] -endobj -25 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [500.8885 472.0 514.297 486.28] -/Type /Annot ->> -endobj -26 0 obj -<< /Border [0 0 0] -/Dest (_5) -/Subtype /Link -/Rect [285.879 386.66 299.2875 400.94] -/Type /Annot ->> -endobj -27 0 obj -[12 0 R /XYZ 0 352.13 null] -endobj -28 0 obj -<< /Border [0 0 0] -/Dest (_3) -/Subtype /Link -/Rect [533.6315 275.8 547.04 290.08] -/Type /Annot ->> -endobj -29 0 obj -<< /Border [0 0 0] -/Dest (_4) -/Subtype /Link -/Rect [70.0695 260.02 83.478 274.3] -/Type /Annot ->> -endobj -30 0 obj -[12 0 R /XYZ 0 247.27 null] -endobj -31 0 obj -[12 0 R /XYZ 0 194.95 null] -endobj -32 0 obj -<< /Length 13937 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 782.394 Td -/F2.0 22 Tf -<496e7374616c6c6174696f6e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5143 Tw - -BT -48.24 753.206 Td -/F1.0 10.5 Tf -[<53696e6365207468652048545450207465737420706f7274206973207573656420617320612070617274206f6620746865205454> 20.0195 <434e2d33207465737420656e7669726f6e6d656e742074686973207265717569726573205454> 20.0195 <434e2d332054> 29.7852 <657374>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.8835 Tw - -BT -48.24 737.426 Td -/F1.0 10.5 Tf -[<4578656375746f7220746f20626520696e7374616c6c6564206265666f726520616e> 20.0195 <79206f706572> 20.0195 <6174696f6e206f66207468652048545450207465737420706f72742e2046> 40.0391 <6f72206d6f72652064657461696c73206f6e20746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 721.646 Td -/F1.0 10.5 Tf -[<696e7374616c6c6174696f6e206f66205454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f7220736565207468652072656c6576616e742073656374696f6e206f6620>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -362.3916 721.646 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.3614 Tw - -BT -48.24 693.866 Td -/F1.0 10.5 Tf -<5768656e206275696c64696e67207468652065786563757461626c65207465737420737569746520696e74656e64656420746f2068616e646c652048545450206f7665722053534c20636f6e6e656374696f6e732c20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5702 Tw - -BT -48.24 678.086 Td -/F1.0 10.5 Tf -[<6c696272> 20.0195 <617269657320636f6d70696c656420666f7220746865204f70656e53534c20746f6f6c6b697420616e6420746865205454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f722073686f756c6420616c736f206265206c696e6b> 20.0195 <656420696e746f>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 662.306 Td -/F1.0 10.5 Tf -<7468652065786563757461626c652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3011 Tw - -BT -48.24 634.526 Td -/F1.0 10.5 Tf -<5573696e6720616e6420636f6d70696c696e67204f70656e53534c206973206f7074696f6e616c20696e20746865207465737420706f72742e2053656520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -1.3011 Tw - -BT -368.26 634.526 Td -/F1.0 10.5 Tf -<5b355d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3011 Tw - -BT -381.6685 634.526 Td -/F1.0 10.5 Tf -<20666f72206d6f726520696e666f726d6174696f6e2e204f70656e53534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6218 Tw - -BT -48.24 618.746 Td -/F1.0 10.5 Tf -[<6c696272> 20.0195 <61726965732073686f756c6420626520616464656420746f2074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6218 Tw - -BT -219.0198 618.746 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6218 Tw - -BT -260.7571 618.746 Td -/F1.0 10.5 Tf -[<2067656e6572> 20.0195 <617465642062> 20.0195 <792074686520544954> 60.0586 <414e206578656375746f7220736565206578616d706c6520696e20636c6f7365>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 602.966 Td -/F1.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -91.6153 602.966 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 558.854 Td -/F2.0 22 Tf -[<436f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5074 Tw - -BT -48.24 529.666 Td -/F1.0 10.5 Tf -[<5468652065786563757461626c6520746573742070726f6772> 20.0195 <616d206265686176696f7220697320637573746f6d697a656420766961207468652052> 20.0195 <544520636f6e6669677572> 20.0195 <6174696f6e2066696c652e205468697320697320612073696d706c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6894 Tw - -BT -48.24 513.886 Td -/F1.0 10.5 Tf -<746578742066696c652c20776869636820636f6e7461696e7320766172696f75732073656374696f6e732028652e672e20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.6894 Tw - -BT -288.2309 513.886 Td -/F4.0 10.5 Tf -<5b54455354504f52545f504152414d45544552535d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6894 Tw - -BT -398.4809 513.886 Td -/F1.0 10.5 Tf -<292061667465722065616368206f746865722e2054686520757375616c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8994 Tw - -BT -48.24 498.106 Td -/F1.0 10.5 Tf -[<737566666978206f66207468652052> 20.0195 <544520636f6e6669677572> 20.0195 <6174696f6e2066696c6520697320>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8994 Tw - -BT -239.8919 498.106 Td -/F3.0 10.5 Tf -<2e636667> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8994 Tw - -BT -256.7864 498.106 Td -/F1.0 10.5 Tf -[<2e2046> 40.0391 <6f72206675727468657220696e666f726d6174696f6e2061626f75742074686520636f6e6669677572> 20.0195 <6174696f6e2066696c6520736565>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 482.326 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 442.486 Td -/F2.0 18 Tf -[<485454502054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652052> 20.0195 <544520436f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 418.006 Td -/F2.0 18 Tf -<46696c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.2261 Tw - -BT -48.24 389.986 Td -/F1.0 10.5 Tf -<496e2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.2261 Tw - -BT -82.7277 389.986 Td -/F4.0 10.5 Tf -<5b54455354504f52545f504152414d45544552535d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.2261 Tw - -BT -192.9777 389.986 Td -/F1.0 10.5 Tf -[<2073656374696f6e20796f752063616e207370656369667920706172> 20.0195 <616d65746572732074686174206172652070617373656420746f20746865207465737420706f7274732e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.304 Tw - -BT -48.24 374.206 Td -/F1.0 10.5 Tf -[<4561636820706172> 20.0195 <616d6574657220646566696e6974696f6e20636f6e7369737473206f66206120636f6d706f6e656e74206e616d652c206120706f7274206e616d652c206120706172> 20.0195 <616d65746572206e616d6520616e642061>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7791 Tw - -BT -48.24 358.426 Td -/F1.0 10.5 Tf -[<706172> 20.0195 <616d657465722076616c75652e2054686520636f6d706f6e656e74206e616d652063616e2062652065697468657220616e206964656e746966696572206f72206120636f6d706f6e656e74207265666572656e6365>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.183 Tw - -BT -48.24 342.646 Td -/F1.0 10.5 Tf -[<28696e7465676572292076616c75652e2054686520706f727420616e6420706172> 20.0195 <616d65746572206e616d657320617265206964656e74696669657273207768696c652074686520706172> 20.0195 <616d657465722076616c7565206d757374>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7558 Tw - -BT -48.24 326.866 Td -/F1.0 10.5 Tf -[<616c7761> 20.0195 <797320626520612063686172737472696e672028776974682071756f746174696f6e206d61726b73292e20496e7374656164206f6620636f6d706f6e656e74206e616d65206f7220706f7274206e616d6520286f7220626f7468>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.0585 Tw - -BT -48.24 311.086 Td -/F1.0 10.5 Tf -<6f66207468656d292074686520617374657269736b2028222a2229207369676e2063616e20626520757365642c207768696368206d65616e732022616c6c20636f6d706f6e656e747322206f722022616c6c20706f727473206f6620746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 295.306 Td -/F1.0 10.5 Tf -[<636f6d706f6e656e74222e204d6f726520696e666f726d6174696f6e2061626f7574207468652052> 20.0195 <544520636f6e6669677572> 20.0195 <6174696f6e2066696c652063616e20626520666f756e6420696e20>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -449.7281 295.306 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.7068 Tw - -BT -48.24 267.526 Td -/F1.0 10.5 Tf -<496e2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.7068 Tw - -BT -83.6892 267.526 Td -/F4.0 10.5 Tf -<5b54455354504f52545f504152414d45544552535d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.7068 Tw - -BT -193.9392 267.526 Td -/F1.0 10.5 Tf -[<2073656374696f6e2074686520666f6c6c6f77696e6720706172> 20.0195 <616d65746572732063616e2062652073657420666f72207468652048545450207465737420706f72742e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6313 Tw - -BT -48.24 251.746 Td -/F1.0 10.5 Tf -[<506172> 20.0195 <616d6574657273206d61726b> 20.0195 <6564207769746820626f6c6420666f6e7473206170706c7920746f20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6313 Tw - -BT -275.605 251.746 Td -/F2.0 10.5 Tf -<53534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6313 Tw - -BT -294.7465 251.746 Td -/F1.0 10.5 Tf -<207573696e672048545450207465737420706f72747320> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6313 Tw - -BT -409.7909 251.746 Td -/F2.0 10.5 Tf -<6f6e6c79> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6313 Tw - -BT -432.9854 251.746 Td -/F1.0 10.5 Tf -[<2e20506172> 20.0195 <616d657465722076616c75657320617265>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 235.966 Td -/F2.0 10.5 Tf -<636173652d73656e736974697665> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -121.5825 235.966 Td -/F1.0 10.5 Tf -<21> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 208.186 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 210.37 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8342 Tw - -BT -66.24 184.186 Td -/F1.0 10.5 Tf -<456e61626c657320726563656976696e67206f6620> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8342 Tw - -BT -172.6401 184.186 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8342 Tw - -BT -246.1401 184.186 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8342 Tw - -BT -252.3188 184.186 Td -/F4.0 10.5 Tf -<436c69656e745f636f6e6e6563746564> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8342 Tw - -BT -336.3188 184.186 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8342 Tw - -BT -362.5362 184.186 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8342 Tw - -BT -430.7862 184.186 Td -/F1.0 10.5 Tf -<20415350732e204974732064656661756c742076616c7565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9146 Tw - -BT -66.24 168.406 Td -/F1.0 10.5 Tf -<697320> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.9146 Tw - -BT -77.9591 168.406 Td -/F5.0 10.5 Tf -<226e6f22> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9146 Tw - -BT -98.9591 168.406 Td -/F1.0 10.5 Tf -<20696e206f7264657220746f2070726f76696465206261636b776172642d636f6d7061746962696c69747920666f72207465737420737569746573207573696e672074686520706f72742076657273696f6e73206f6c646572> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 152.626 Td -/F1.0 10.5 Tf -<7468616e205232412e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 124.846 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 127.03 Td -/F4.0 10.5 Tf -<7365727665725f6261636b6c6f67> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2175 Tw - -BT -66.24 100.846 Td -/F1.0 10.5 Tf -[<54686520706172> 20.0195 <616d657465722063616e206265207573656420746f207370656369667920746865206e756d626572206f6620616c6c6f7765642070656e64696e6720287175657565642920636f6e6e656374696f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1006 Tw - -BT -66.24 85.066 Td -/F1.0 10.5 Tf -<7265717565737473206f6e2074686520706f72742074686520736572766572206c697374656e732e204974206973206f7074696f6e616c20696e20736572766572206d6f646520616e64206e6f74207573656420696e20636c69656e74206d6f64652e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 69.286 Td -/F1.0 10.5 Tf -<5468652064656661756c742076616c756520697320> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -166.851 69.286 Td -/F5.0 10.5 Tf -<223130323422> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -198.351 69.286 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<32> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -33 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 32 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F3.0 19 0 R -/F4.0 39 0 R -/F5.0 43 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> -/Annots [35 0 R 36 0 R 37 0 R 40 0 R 42 0 R] ->> -endobj -34 0 obj -[33 0 R /XYZ 0 841.89 null] -endobj -35 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [362.3916 718.58 375.8001 732.86] -/Type /Annot ->> -endobj -36 0 obj -<< /Border [0 0 0] -/Dest (_5) -/Subtype /Link -/Rect [368.26 631.46 381.6685 645.74] -/Type /Annot ->> -endobj -37 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (8_examples.pdf#makefile) ->> -/Subtype /Link -/Rect [48.24 599.9 91.6153 614.18] -/Type /Annot ->> -endobj -38 0 obj -[33 0 R /XYZ 0 587.15 null] -endobj -39 0 obj -<< /Type /Font -/BaseFont /e7f085+mplus1mn-regular -/Subtype /TrueType -/FontDescriptor 226 0 R -/FirstChar 32 -/LastChar 255 -/Widths 228 0 R -/ToUnicode 227 0 R ->> -endobj -40 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [48.24 479.26 61.6485 493.54] -/Type /Annot ->> -endobj -41 0 obj -[33 0 R /XYZ 0 466.51 null] -endobj -42 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [449.7281 292.24 463.1366 306.52] -/Type /Annot ->> -endobj -43 0 obj -<< /Type /Font -/BaseFont /0e5052+mplus1mn-italic -/Subtype /TrueType -/FontDescriptor 230 0 R -/FirstChar 32 -/LastChar 255 -/Widths 232 0 R -/ToUnicode 231 0 R ->> -endobj -44 0 obj -<< /Length 15330 ->> -stream -q - --0.5 Tc -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -56.8805 793.926 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 796.11 Td -/F4.0 10.5 Tf -<687474705f646562756767696e67> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8546 Tw - -BT -66.24 769.926 Td -/F1.0 10.5 Tf -[<456e61626c65732064657461696c656420646562756767696e6720696e20746865207465737420706f72742e20497420686173206f6e6c7920656666656374207768656e205454> 20.0195 <434e5f444542554720697320616c736f20736574>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 754.146 Td -/F1.0 10.5 Tf -[<77697468696e20746865206c6f6767696e6720706172> 20.0195 <616d6574657273206f662074686520636f6e6669677572> 20.0195 <6174696f6e2066696c652e204974732064656661756c742076616c756520697320>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -437.5721 754.146 Td -/F5.0 10.5 Tf -<226e6f22> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -458.5721 754.146 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 726.366 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 728.55 Td -/F4.0 10.5 Tf -<5452555354454443414c4953545f46494c45> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2628 Tw - -BT -66.24 702.366 Td -/F1.0 10.5 Tf -<49742073706563696669657320612050454d20656e636f6465642066696c65d5732070617468206f6e207468652066696c652073797374656d20636f6e7461696e696e672074686520636572746966696361746573206f66207468652074727573746564> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -5.4992 Tw - -BT -66.24 686.586 Td -/F1.0 10.5 Tf -<434120617574686f72697469657320746f207573652e204d616e6461746f727920696e20736572766572206d6f64652c20616e64206d616e6461746f727920696e20636c69656e74206d6f6465206966> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 670.806 Td -/F1.0 10.5 Tf -[<564552494659> 29.7852 <434552> 20.0195 <544946494341> 60.0586 <54453d>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -175.0319 670.806 Td -/F5.0 10.5 Tf -<2279657322> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -201.2819 670.806 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 643.026 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 645.21 Td -/F4.0 10.5 Tf -<5645524946594345525449464943415445> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.81 Tw - -BT -66.24 619.026 Td -/F1.0 10.5 Tf -[<54686520706172> 20.0195 <616d6574657220697320>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.81 Tw - -BT -159.3763 619.026 Td -/F2.0 10.5 Tf -<6f7074696f6e616c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.81 Tw - -BT -203.9173 619.026 Td -/F1.0 10.5 Tf -<2c20616e642063616e206265207573656420746f2074656c6c207468652048545450207465737420706f7274207768657468657220746f20636865636b20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.0329 Tw - -BT -66.24 603.246 Td -/F1.0 10.5 Tf -<6365727469666963617465206f6620746865206f7468657220736964652e20496620697420697320646566696e656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.0329 Tw - -BT -304.996 603.246 Td -/F5.0 10.5 Tf -<2279657322> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.0329 Tw - -BT -331.246 603.246 Td -/F1.0 10.5 Tf -<2c20746865207465737420706f72742077696c6c20717565727920616e6420636865636b20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0818 Tw - -BT -66.24 587.466 Td -/F1.0 10.5 Tf -[<63657274696669636174652e20496620746865206365727469666963617465206973206e6f742076616c69642028692e652eca746865207075626c696320616e642070726976617465206b> 20.0195 <65797320646f206e6f74206d61746368292c2069742077696c6c2065786974>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2418 Tw - -BT -66.24 571.686 Td -/F1.0 10.5 Tf -<77697468206120636f72726573706f6e64696e67206572726f72206d6573736167652e20496620697420697320646566696e656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.2418 Tw - -BT -326.7476 571.686 Td -/F5.0 10.5 Tf -<226e6f22> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2418 Tw - -BT -347.7476 571.686 Td -/F1.0 10.5 Tf -<2c20746865207465737420706f72742077696c6c206e6f7420636865636b207468652076616c6964697479> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 555.906 Td -/F1.0 10.5 Tf -<6f66207468652063657274696669636174652e205468652064656661756c742076616c756520697320> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -253.917 555.906 Td -/F5.0 10.5 Tf -<226e6f22> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -274.917 555.906 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 528.126 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 530.31 Td -/F4.0 10.5 Tf -<4b455946494c45> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6056 Tw - -BT -66.24 504.126 Td -/F1.0 10.5 Tf -[<5468697320706172> 20.0195 <616d6574657220697320>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6056 Tw - -BT -167.2307 504.126 Td -/F2.0 10.5 Tf -<636f6e646974696f6e616c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6056 Tw - -BT -228.0152 504.126 Td -/F1.0 10.5 Tf -<2e2049742073706563696669657320612050454d20656e636f6465642066696c65d5732070617468206f6e207468652066696c652073797374656d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 488.346 Td -/F1.0 10.5 Tf -[<636f6e7461696e696e6720746865205253> 20.0195 <412070726976617465206b> 20.0195 <6579> 89.8438 <2e204d616e6461746f727920696e20736572766572206d6f646520616e64206f7074696f6e616c20696e20636c69656e74206d6f64652e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 460.566 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 462.75 Td -/F4.0 10.5 Tf -<434552544946494341544546494c45> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6056 Tw - -BT -66.24 436.566 Td -/F1.0 10.5 Tf -[<5468697320706172> 20.0195 <616d6574657220697320>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6056 Tw - -BT -167.2307 436.566 Td -/F2.0 10.5 Tf -<636f6e646974696f6e616c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6056 Tw - -BT -228.0152 436.566 Td -/F1.0 10.5 Tf -<2e2049742073706563696669657320612050454d20656e636f6465642066696c65d5732070617468206f6e207468652066696c652073797374656d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2556 Tw - -BT -66.24 420.786 Td -/F1.0 10.5 Tf -[<636f6e7461696e696e672074686520636572746966696361746520636861696e2e2046> 40.0391 <6f722064657461696c656420696e666f726d6174696f6e2073656520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -0.2556 Tw - -BT -374.0868 420.786 Td -/F1.0 10.5 Tf -<5b355d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2556 Tw - -BT -387.4953 420.786 Td -/F1.0 10.5 Tf -<204d616e6461746f727920696e20736572766572206d6f646520616e64> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8284 Tw - -BT -66.24 405.006 Td -/F1.0 10.5 Tf -[<6f7074696f6e616c20696e20636c69656e74206d6f64652e204e6f746520746861742074686520736572766572206d61> 20.0195 <79207265717569726520636c69656e742061757468656e7469636174696f6e2e20496e20746869732063617365206e6f>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 389.226 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e2063616e2062652065737461626c697368656420776974686f7574206120636c69656e742063657274696669636174652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 361.446 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 363.63 Td -/F4.0 10.5 Tf -<50415353574f5244> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7256 Tw - -BT -66.24 337.446 Td -/F1.0 10.5 Tf -[<54686520706172> 20.0195 <616d6574657220697320>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7256 Tw - -BT -156.123 337.446 Td -/F2.0 10.5 Tf -<6f7074696f6e616c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7256 Tw - -BT -200.664 337.446 Td -/F1.0 10.5 Tf -[<2c20616e642063616e206265207573656420746f2073706563696679207468652070617373776f72642070726f74656374696e67207468652070726976617465206b> 20.0195 <6579>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4542 Tw - -BT -66.24 321.666 Td -/F1.0 10.5 Tf -[<66696c652e205468652050> 49.8047 <415353> 20.0195 <57> 20.0195 <4f52442068617320746f206265207468652070617373776f726420757365642062> 20.0195 <792067656e6572> 20.0195 <6174696f6e206f66207468652070726976617465206b> 20.0195 <65792066696c652e20496620746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4851 Tw - -BT -66.24 305.886 Td -/F1.0 10.5 Tf -<70617373776f7264206973206e6f7420646566696e65642c207468652053534c20746f6f6c6b69742061736b7320666f72206974207768656e20746865207465737420706f72742072656365697665732074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4851 Tw - -BT -480.7715 305.886 Td -/F4.0 10.5 Tf -<4c495354454e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4851 Tw - -BT -512.2715 305.886 Td -/F1.0 10.5 Tf -[<20415350> 120.1172 <2e204974>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 290.106 Td -/F1.0 10.5 Tf -<6973207265636f6d6d656e64656420746f20646566696e6520697420696e2074686520636f6e6669672066696c6520696e73746561642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 239.994 Td -/F2.0 22 Tf -<53746172742050726f636564757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 198.746 Td -/F2.0 18 Tf -[<5454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f72>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6253 Tw - -BT -48.24 170.726 Td -/F1.0 10.5 Tf -[<4265666f7265207468652065786563757461626c6520746573742073756974652063616e2062652072756e20746865205454> 20.0195 <434e2d33206d6f64756c657320616e6420432b2b20636f6465732073686f756c6420626520636f6d70696c6564>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8804 Tw - -BT -48.24 154.946 Td -/F1.0 10.5 Tf -[<616e64206c696e6b> 20.0195 <656420696e746f20616e2065786563757461626c652070726f6772> 20.0195 <616d2e20546869732070726f636573732063616e206265206175746f6d61746564207573696e6720746865206d616b> 20.0195 <65207574696c697479> 89.8438 <2e2046> 40.0391 <6f72>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 139.166 Td -/F1.0 10.5 Tf -<6d6f726520696e666f726d6174696f6e2061626f75742074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -191.061 139.166 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -232.7983 139.166 Td -/F1.0 10.5 Tf -<207365652074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -272.8978 139.166 Td -/F6.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -318.8351 139.166 Td -/F1.0 10.5 Tf -<2073656374696f6e20616e6420> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -381.4991 139.166 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.5 w -0.9333 0.9333 0.9333 SCN -102.4695 123.35 m -102.4695 68.01 l -S -Q -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -60.3451 91.606 Td -/F2.0 10.5 Tf -[<4e4f> 20.0195 <5445>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -114.4695 107.386 Td -/F1.0 10.5 Tf -<54686520632b2b20696d706c656d656e746174696f6e2066696c657320> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -269.7124 107.386 Td -/F3.0 10.5 Tf -[<485454506d73675f5054> 89.8438 <2e6868>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -349.4931 107.386 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -356.7329 107.386 Td -/F3.0 10.5 Tf -[<485454506d73675f5054> 89.8438 <2e6363>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -434.1406 107.386 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -441.3804 107.386 Td -/F3.0 10.5 Tf -[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6363>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8954 Tw - -BT -532.415 107.386 Td -/F1.0 10.5 Tf -<2c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -12.5639 Tw - -BT -114.4695 91.606 Td -/F3.0 10.5 Tf -[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6868>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -12.5639 Tw - -BT -207.8771 91.606 Td -/F1.0 10.5 Tf -[<20616e6420746865205454> 20.0195 <434e2d33206d6f64756c657320>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -12.5639 Tw - -BT -398.2611 91.606 Td -/F3.0 10.5 Tf -<485454506d73675f54797065732e7474636e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -12.5639 Tw - -BT -500.6466 91.606 Td -/F1.0 10.5 Tf -<20616e64> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -114.4695 75.826 Td -/F3.0 10.5 Tf -<485454506d73675f506f7274547970652e7474636e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -233.298 75.826 Td -/F1.0 10.5 Tf -<206f6620746865207465737420706f72742073686f756c6420626520696e636c7564656420696e2074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -440.9145 75.826 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -482.6518 75.826 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<33> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -45 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 44 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F4.0 39 0 R -/F5.0 43 0 R -/F2.0 17 0 R -/F3.0 19 0 R -/F6.0 49 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> -/Annots [46 0 R 50 0 R] ->> -endobj -46 0 obj -<< /Border [0 0 0] -/Dest (_5) -/Subtype /Link -/Rect [374.0868 417.72 387.4953 432.0] -/Type /Annot ->> -endobj -47 0 obj -[45 0 R /XYZ 0 268.29 null] -endobj -48 0 obj -[45 0 R /XYZ 0 222.77 null] -endobj -49 0 obj -<< /Type /Font -/BaseFont /37ee38+NotoSerif-BoldItalic -/Subtype /TrueType -/FontDescriptor 234 0 R -/FirstChar 32 -/LastChar 255 -/Widths 236 0 R -/ToUnicode 235 0 R ->> -endobj -50 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [381.4991 136.1 394.9076 150.38] -/Type /Annot ->> -endobj -51 0 obj -<< /Length 17608 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 794.676 Td -/F1.0 10.5 Tf -[<46> 40.0391 <6f7220696e666f726d6174696f6e206f6e20686f7720746f2073746172742074686520657865637574696f6e2073656520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -298.4336 794.676 Td -/F1.0 10.5 Tf -<5b325d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 754.836 Td -/F2.0 18 Tf -<436f6e6e656374696e6720746f206120536572766572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.401 Tw - -BT -48.24 726.816 Td -/F1.0 10.5 Tf -<496e2063617365206f6620746865207465737420706572666f726d732074686520726f6c65206f662061204854545020636c69656e742c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.401 Tw - -BT -336.6693 726.816 Td -/F4.0 10.5 Tf -<436f6e6e656374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.401 Tw - -BT -373.4193 726.816 Td -/F1.0 10.5 Tf -[<204153502068617320746f2062652073656e742e2049747320706172> 20.0195 <616d6574657273>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 711.036 Td -/F1.0 10.5 Tf -<6172653a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 683.256 Td -/F4.0 10.5 Tf -<686f73746e616d65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -90.24 683.256 Td -/F1.0 10.5 Tf -<3a20686f7374206e616d65206f722049502061646472657373206f66207468652072656d6f7465207365727665722e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 655.476 Td -/F4.0 10.5 Tf -<706f72746e756d626572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -100.74 655.476 Td -/F1.0 10.5 Tf -<3a20706f7274206e756d626572206f66207468652072656d6f746520736572766572207768657265206974206163636570747320636f6e6e656374696f6e732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -4.6341 Tw - -BT -48.24 627.696 Td -/F4.0 10.5 Tf -<7573655f73736c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.6341 Tw - -BT -84.99 627.696 Td -/F1.0 10.5 Tf -<3a2068617320746f20626520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -4.6341 Tw - -BT -156.5093 627.696 Td -/F5.0 10.5 Tf -<66616c7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.6341 Tw - -BT -182.7593 627.696 Td -/F1.0 10.5 Tf -[<206f6e206e6f726d616c2054> 20.0195 <43502f495020636f6e6e656374696f6e732c20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -4.6341 Tw - -BT -364.2066 627.696 Td -/F5.0 10.5 Tf -<74727565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.6341 Tw - -BT -385.2066 627.696 Td -/F1.0 10.5 Tf -<20696620746865207365727665722061636365707473204854545053> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 611.916 Td -/F1.0 10.5 Tf -<636f6e6e656374696f6e732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.0739 Tw - -BT -48.24 584.136 Td -/F1.0 10.5 Tf -[<4d756c7469706c6520706172> 20.0195 <616c6c656c20636f6e6e656374696f6e732063616e206265206f70656e656420616e6420757365642e2049662074776f206f72206d6f726520636f6e6e656374696f6e7320617265207573656420696e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.2852 Tw - -BT -48.24 568.356 Td -/F1.0 10.5 Tf -[<706172> 20.0195 <616c6c656c2c20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.2852 Tw - -BT -93.226 568.356 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.2852 Tw - -BT -203.476 568.356 Td -/F1.0 10.5 Tf -[<20706172> 20.0195 <616d657465722068617320746f2062652073657420746f20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.2852 Tw - -BT -347.1767 568.356 Td -/F5.0 10.5 Tf -<74727565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.2852 Tw - -BT -368.1767 568.356 Td -/F1.0 10.5 Tf -<2c2073656520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -1.2852 Tw - -BT -394.7816 568.356 Td -/F1.0 10.5 Tf -[<485454502054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -1.8459 Tw - -BT -48.24 552.576 Td -/F1.0 10.5 Tf -[<7468652052> 20.0195 <544520436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8459 Tw - -BT -185.2583 552.576 Td -/F1.0 10.5 Tf -<2e20496e2074686973206361736520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.8459 Tw - -BT -256.6289 552.576 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.8459 Tw - -BT -330.1289 552.576 Td -/F1.0 10.5 Tf -<204153502069732072657475726e656420746f2074686520746573742063617365207769746820746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.2798 Tw - -BT -48.24 536.796 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2798 Tw - -BT -95.49 536.796 Td -/F1.0 10.5 Tf -<206173736f63696174656420746f2074686520636f6e6e656374696f6e2e205468652072657475726e656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.2798 Tw - -BT -329.2502 536.796 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2798 Tw - -BT -376.5002 536.796 Td -/F1.0 10.5 Tf -<2068617320746f206265207573656420696e20746865206d65737361676573> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1856 Tw - -BT -48.24 521.016 Td -/F1.0 10.5 Tf -<746172676574656420746f2073656e64206f6e207468697320636f6e6e656374696f6e2e205468652072657475726e656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1856 Tw - -BT -299.068 521.016 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1856 Tw - -BT -346.318 521.016 Td -/F1.0 10.5 Tf -<20776974682076616c756520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1856 Tw - -BT -405.2862 521.016 Td -/F7.0 10.5 Tf - Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1856 Tw - -BT -410.2422 521.016 Td -/F5.0 10.5 Tf -<31> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1856 Tw - -BT -415.4922 521.016 Td -/F1.0 10.5 Tf -<206d65616e732074686174207468652073657276657220646964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 505.236 Td -/F1.0 10.5 Tf -<6e6f74206163636570742074686520636f6e6e656374696f6e206265636175736520616e206572726f72206f636375727265642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 465.396 Td -/F2.0 18 Tf -<5374617274696e672061205365727665722c204c697374656e696e6720666f7220436c69656e7420436f6e6e656374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4593 Tw - -BT -48.24 437.376 Td -/F1.0 10.5 Tf -<496e2063617365206f6620746865207465737420706572666f726d732074686520726f6c65206f6620612048545450207365727665722c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4593 Tw - -BT -341.5114 437.376 Td -/F4.0 10.5 Tf -<4c697374656e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4593 Tw - -BT -373.0114 437.376 Td -/F1.0 10.5 Tf -[<204153502068617320746f2062652073656e742e2049747320706172> 20.0195 <616d6574657273>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 421.596 Td -/F1.0 10.5 Tf -<6172653a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.092 Tw - -BT -48.24 393.816 Td -/F4.0 10.5 Tf -<6c6f63616c5f686f73746e616d65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.092 Tw - -BT -121.74 393.816 Td -/F1.0 10.5 Tf -<3a20686f7374206e616d65206f722049502061646472657373206f662074686520696e7465726661636520696e20746865206c6f63616c20636f6d70757465722e2049742073686f756c642062652073657420696620746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 378.036 Td -/F1.0 10.5 Tf -<776f726b73746174696f6e20686173206d756c7469706c6520495020696e74657266616365732c20616e642074686520746573742068617320746f207573652061207370656369666963206f6e652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 350.256 Td -/F4.0 10.5 Tf -<706f72746e756d626572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -100.74 350.256 Td -/F1.0 10.5 Tf -<3a20706f7274206e756d62657220776865726520746865207365727665722077696c6c2061636365707420636f6e6e656374696f6e732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 322.476 Td -/F4.0 10.5 Tf -<7573655f73736c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -84.99 322.476 Td -/F1.0 10.5 Tf -<3a2068617320746f20626520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -137.973 322.476 Td -/F5.0 10.5 Tf -<66616c7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -164.223 322.476 Td -/F1.0 10.5 Tf -[<20746f20616363657074206e6f726d616c2054> 20.0195 <43502f495020636f6e6e656374696f6e732c20>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -354.1258 322.476 Td -/F5.0 10.5 Tf -<74727565> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -375.1258 322.476 Td -/F1.0 10.5 Tf -<20746f2061636365707420485454505320636f6e6e656374696f6e732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 294.696 Td -/F1.0 10.5 Tf -<53656e64696e672074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -109.9485 294.696 Td -/F4.0 10.5 Tf -<4c697374656e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -141.4485 294.696 Td -/F1.0 10.5 Tf -<20415350206d756c7469706c652074696d65732077696c6c20636175736520746f20636c6f736520746865206c697374656e696e6720706f727420616e64206f70656e20616e6f74686572206f6e652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4084 Tw - -BT -48.24 266.916 Td -/F1.0 10.5 Tf -<496620> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.4084 Tw - -BT -61.0959 266.916 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4084 Tw - -BT -171.3459 266.916 Td -/F1.0 10.5 Tf -[<20706172> 20.0195 <616d657465722069732073657420746f20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.4084 Tw - -BT -281.6361 266.916 Td -/F5.0 10.5 Tf -<74727565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4084 Tw - -BT -302.6361 266.916 Td -/F1.0 10.5 Tf -[<20696e2074686520636f6e6669677572> 20.0195 <6174696f6e2c2074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.4084 Tw - -BT -441.0032 266.916 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4084 Tw - -BT -509.2532 266.916 Td -/F1.0 10.5 Tf -<20415350206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1551 Tw - -BT -48.24 251.136 Td -/F1.0 10.5 Tf -<72657475726e656420746f2074686520746573742063617365207769746820746865206f70656e656420706f7274206e756d6265722e205468652072657475726e656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.1551 Tw - -BT -419.4571 251.136 Td -/F4.0 10.5 Tf -<706f72746e756d626572> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1551 Tw - -BT -471.9571 251.136 Td -/F1.0 10.5 Tf -<20776974682076616c756520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.1551 Tw - -BT -536.834 251.136 Td -/F7.0 10.5 Tf - Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.1551 Tw - -BT -541.79 251.136 Td -/F5.0 10.5 Tf -<31> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1551 Tw - -BT -547.04 251.136 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 235.356 Td -/F1.0 10.5 Tf -<6d65616e73207468617420616e206572726f72206f63637572726564207768696c652073657474696e672075702074686520726571756573746564206c697374656e696e6720706f72742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.5845 Tw - -BT -48.24 207.576 Td -/F1.0 10.5 Tf -<4966206120636c69656e7420636f6e6e6563747320746f207468652073657276657220616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.5845 Tw - -BT -260.9184 207.576 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.5845 Tw - -BT -371.1684 207.576 Td -/F1.0 10.5 Tf -[<20706172> 20.0195 <616d657465722069732073657420746f20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.5845 Tw - -BT -487.3394 207.576 Td -/F5.0 10.5 Tf -<74727565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.5845 Tw - -BT -508.3394 207.576 Td -/F1.0 10.5 Tf -<20696e20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.1224 Tw - -BT -48.24 191.796 Td -/F1.0 10.5 Tf -[<636f6e6669677572> 20.0195 <6174696f6e2c2074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.1224 Tw - -BT -146.559 191.796 Td -/F4.0 10.5 Tf -<436c69656e745f636f6e6e6563746564> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.1224 Tw - -BT -230.559 191.796 Td -/F1.0 10.5 Tf -<204153502069732073656e7420746f2074686520746573742063617365207769746820> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.1224 Tw - -BT -419.1213 191.796 Td -/F5.0 10.5 Tf -<686f73746e616d65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.1224 Tw - -BT -461.1213 191.796 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.1224 Tw - -BT -469.5881 191.796 Td -/F5.0 10.5 Tf -<706f72746e756d626572> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.1224 Tw - -BT -522.0881 191.796 Td -/F1.0 10.5 Tf -<20616e64> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 176.016 Td -/F5.0 10.5 Tf -<636c69656e745f6964> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -95.49 176.016 Td -/F1.0 10.5 Tf -<206669656c64732e20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -130.8225 176.016 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -178.0725 176.016 Td -/F1.0 10.5 Tf -<2068617320746f2062652075736564206173206465736372696265642061626f76652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 131.904 Td -/F2.0 22 Tf -<53656e64696e672f726563656976696e672048545450204d65737361676573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2006 Tw - -BT -48.24 102.716 Td -/F1.0 10.5 Tf -<5468652048545450207465737420706f72742069732061626c6520746f2073656e6420616e64207265636569766520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.2006 Tw - -BT -280.6474 102.716 Td -/F4.0 10.5 Tf -<485454504d657373616765> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2006 Tw - -BT -338.3974 102.716 Td -/F1.0 10.5 Tf -<20737472756374757265732e2054686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.2006 Tw - -BT -419.3346 102.716 Td -/F4.0 10.5 Tf -<485454504d657373616765> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.2006 Tw - -BT -477.0846 102.716 Td -/F1.0 10.5 Tf -<2063616e206265206f6e65206f66> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 86.936 Td -/F1.0 10.5 Tf -<74686520666f6c6c6f77696e672074797065733a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 59.156 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 59.156 Td -/F4.0 10.5 Tf -<4854545052657175657374> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<34> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -52 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 51 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F2.0 17 0 R -/F4.0 39 0 R -/F5.0 43 0 R -/F7.0 57 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> -/Annots [53 0 R 55 0 R 56 0 R] ->> -endobj -53 0 obj -<< /Border [0 0 0] -/Dest (_2) -/Subtype /Link -/Rect [298.4336 791.61 311.8421 805.89] -/Type /Annot ->> -endobj -54 0 obj -[52 0 R /XYZ 0 778.86 null] -endobj -55 0 obj -<< /Border [0 0 0] -/Dest (HTTP_test_port_parameters_in_the_RTE_configuration_file) -/Subtype /Link -/Rect [394.7816 565.29 547.04 579.57] -/Type /Annot ->> -endobj -56 0 obj -<< /Border [0 0 0] -/Dest (HTTP_test_port_parameters_in_the_RTE_configuration_file) -/Subtype /Link -/Rect [48.24 549.51 185.2583 563.79] -/Type /Annot ->> -endobj -57 0 obj -<< /Type /Font -/BaseFont /ebad8f+mplus-1p-regular -/Subtype /TrueType -/FontDescriptor 238 0 R -/FirstChar 32 -/LastChar 255 -/Widths 240 0 R -/ToUnicode 239 0 R ->> -endobj -58 0 obj -[52 0 R /XYZ 0 489.42 null] -endobj -59 0 obj -[52 0 R /XYZ 0 160.2 null] -endobj -60 0 obj -<< /Length 15752 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -2.0171 Tw - -BT -66.24 794.676 Td -/F1.0 10.5 Tf -[<5468652052657175657374206d65737361676520726570726573656e747320612073696e676c65207265717565737420746f20706572666f726d2062> 20.0195 <79207468652048545450207365727665722c20757375616c6c7920746f>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 778.896 Td -/F1.0 10.5 Tf -<616363657373206120> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -108.9015 778.896 Td -/F4.0 10.5 Tf -<7265736f75726365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -150.9015 778.896 Td -/F1.0 10.5 Tf -<206f6e20746865207365727665722e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 757.116 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 757.116 Td -/F4.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1955 Tw - -BT -66.24 741.336 Td -/F1.0 10.5 Tf -[<54686520526573706f6e7365206d6573736167652069732073656e742062> 20.0195 <792074686520485454502073657276657220746f2074686520636c69656e742e20497420696e636c75646573207468652072657475726e2073746174757320636f6465>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 725.556 Td -/F1.0 10.5 Tf -<6f6620746865207265717565737420616e642074686520726571756573746564207265736f757263652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 703.776 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 703.776 Td -/F4.0 10.5 Tf -<48545450526571756573745f62696e6172795f626f6479> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4967 Tw - -BT -66.24 687.996 Td -/F1.0 10.5 Tf -<5468652073616d652061732074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.4967 Tw - -BT -158.5783 687.996 Td -/F4.0 10.5 Tf -<4854545052657175657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4967 Tw - -BT -216.3283 687.996 Td -/F1.0 10.5 Tf -[<206d6573736167652e2049742069732070617373656420746f205454> 20.0195 <434e207768656e2074686520626f6479206f6620746865206d657373616765>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 672.216 Td -/F1.0 10.5 Tf -[<636f6e7461696e73206e6f6e2d61736369692063686172> 20.0195 <6163746572732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 650.436 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 650.436 Td -/F4.0 10.5 Tf -<48545450526573706f6e73655f62696e6172795f626f6479> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1686 Tw - -BT -66.24 634.656 Td -/F1.0 10.5 Tf -<5468652073616d652061732074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.1686 Tw - -BT -157.2658 634.656 Td -/F4.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.1686 Tw - -BT -220.2658 634.656 Td -/F1.0 10.5 Tf -[<206d6573736167652e2049742069732070617373656420746f205454> 20.0195 <434e207768656e2074686520626f6479206f6620746865206d657373616765>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 618.876 Td -/F1.0 10.5 Tf -[<636f6e7461696e73206e6f6e2d61736369692063686172> 20.0195 <6163746572732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6478 Tw - -BT -48.24 591.096 Td -/F1.0 10.5 Tf -<496e2063617365206f66206d756c7469706c6520636f6e6e656374696f6e732c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.6478 Tw - -BT -231.3619 591.096 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6478 Tw - -BT -278.6119 591.096 Td -/F1.0 10.5 Tf -<2077696c6c206964656e746966792074686520636f6e6e656374696f6e2e205768656e2073656e64696e6720616e2048545450> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7959 Tw - -BT -48.24 575.316 Td -/F1.0 10.5 Tf -<6d6573736167652c2069742068617320746f2062652073657420746f2074686520636f72726573706f6e64696e6720636f6e6e656374696f6e2069642e205768656e20726563656976696e6720746865206d6573736167652c207468652074657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 559.536 Td -/F1.0 10.5 Tf -<706f7274207365747320697420746f2074686520636f72726573706f6e64696e6720636f6e6e656374696f6e2069642c20616e6420746865207465737420636173652077696c6c20676574207468652072696768742076616c75652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -48.24 531.756 Td -/F1.0 10.5 Tf -<41706172742066726f6d2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3626 Tw - -BT -129.6288 531.756 Td -/F4.0 10.5 Tf -<4854545052657175657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -187.3788 531.756 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3626 Tw - -BT -214.6529 531.756 Td -/F4.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -277.6529 531.756 Td -/F1.0 10.5 Tf -<20415350732061626f76652c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3626 Tw - -BT -366.8513 531.756 Td -/F4.0 10.5 Tf -<6572726f6e6f75735f6d7367> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3626 Tw - -BT -429.8513 531.756 Td -/F1.0 10.5 Tf -[<2069732072656365697665642062> 20.0195 <79207468652074657374>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 515.976 Td -/F1.0 10.5 Tf -<706f727420616e642073656e7420746f2074686520746573742073756974653a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 488.196 Td -/F4.0 10.5 Tf -<485454505f6572726f6e6f75735f6d7367> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2882 Tw - -BT -48.24 472.416 Td -/F1.0 10.5 Tf -<49662061206d657373616765206973207265636569766564206f6e2074686520636f6e6e656374696f6e2c2077686963682063616e206e6f74206265206465636f646564206173206120> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.2882 Tw - -BT -452.5205 472.416 Td -/F4.0 10.5 Tf -<48545450312e31> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2882 Tw - -BT -489.2705 472.416 Td -/F1.0 10.5 Tf -<206f7220> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.2882 Tw - -BT -510.29 472.416 Td -/F4.0 10.5 Tf -<48545450312e30> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2882 Tw - -BT -547.04 472.416 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9805 Tw - -BT -48.24 456.636 Td -/F1.0 10.5 Tf -<6d6573736167652c2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.9805 Tw - -BT -116.4036 456.636 Td -/F4.0 10.5 Tf -<485454504d657373616765> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9805 Tw - -BT -174.1536 456.636 Td -/F1.0 10.5 Tf -<2077696c6c20636f6e7461696e20616e206572726f6e656f7573206d6573736167652077697468206120> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.9805 Tw - -BT -395.2633 456.636 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.9805 Tw - -BT -442.5133 456.636 Td -/F1.0 10.5 Tf -<2c20616e642073656e7420746f207468652074657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 440.856 Td -/F1.0 10.5 Tf -<73756974652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 396.744 Td -/F2.0 22 Tf -<53746f702050726f636564757265> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 355.496 Td -/F2.0 18 Tf -<436c6f73696e6720436f6e6e656374696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5451 Tw - -BT -48.24 327.476 Td -/F1.0 10.5 Tf -[<54> 29.7852 <6f20636c6f7365206120737065636966696320636c69656e7420636f6e6e656374696f6e2c2074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.5451 Tw - -BT -260.5738 327.476 Td -/F4.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5451 Tw - -BT -286.8238 327.476 Td -/F1.0 10.5 Tf -<204153502068617320746f2062652073656e742077697468207468652072656c6576616e7420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.5451 Tw - -BT -485.1724 327.476 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5451 Tw - -BT -532.4224 327.476 Td -/F1.0 10.5 Tf -<2e204966> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 311.696 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -95.49 311.696 Td -/F1.0 10.5 Tf -<20697320> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -109.014 311.696 Td -/F5.0 10.5 Tf -<6f6d6974> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -130.014 311.696 Td -/F1.0 10.5 Tf -<2c20616c6c20636c69656e7420636f6e6e656374696f6e732077696c6c20626520636c6f7365642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 283.916 Td -/F1.0 10.5 Tf -[<54> 29.7852 <6f20636c6f73652074686520736572766572206c697374656e696e6720706f72742c2074686520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -235.1213 283.916 Td -/F4.0 10.5 Tf -<53687574646f776e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -277.1213 283.916 Td -/F1.0 10.5 Tf -<204153502068617320746f2062652073656e742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7482 Tw - -BT -48.24 256.136 Td -/F1.0 10.5 Tf -<496620> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.7482 Tw - -BT -59.4357 256.136 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7482 Tw - -BT -169.6857 256.136 Td -/F1.0 10.5 Tf -[<20706172> 20.0195 <616d657465722069732073657420746f20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.7482 Tw - -BT -271.6748 256.136 Td -/F5.0 10.5 Tf -<74727565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7482 Tw - -BT -292.6748 256.136 Td -/F1.0 10.5 Tf -[<20696e2074686520636f6e6669677572> 20.0195 <6174696f6e2c20746865207465737420636173652077696c6c207265636569766520746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.9738 Tw - -BT -48.24 240.356 Td -/F4.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.9738 Tw - -BT -74.49 240.356 Td -/F1.0 10.5 Tf -<20415350206966207468652072656d6f746520656e64206f662074686520636f6e6e656374696f6e20646973636f6e6e656374732e2054686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.9738 Tw - -BT -384.5952 240.356 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.9738 Tw - -BT -431.8452 240.356 Td -/F1.0 10.5 Tf -<206669656c642077696c6c206964656e7469667920746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 224.576 Td -/F1.0 10.5 Tf -<72656c6576616e7420636f6e6e656374696f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3845 Tw - -BT -48.24 196.796 Td -/F1.0 10.5 Tf -<4966207468652072656d6f746520656e6420636c6f7365732074686520636f6e6e656374696f6e2c206120> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3845 Tw - -BT -268.9384 196.796 Td -/F4.0 10.5 Tf -<48616c665f636c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3845 Tw - -BT -321.4384 196.796 Td -/F1.0 10.5 Tf -[<204153502069732072656365697665642062> 20.0195 <7920746865207465737420636173652e20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3845 Tw - -BT -494.54 196.796 Td -/F4.0 10.5 Tf -<48616c665f636c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3845 Tw - -BT -547.04 196.796 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.0541 Tw - -BT -48.24 181.016 Td -/F1.0 10.5 Tf -[<6d65616e732074686174207468652072656d6f746520656e642077696c6c206e6f742073656e6420616e> 20.0195 <79206d6f726520646174612c20627574206974206d61> 20.0195 <7920726563656976652e20536f6d652074657374206361736573206d61> 20.0195 <7920757365>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.677 Tw - -BT -48.24 165.236 Td -/F1.0 10.5 Tf -[<746869732066756e6374696f6e616c697479> 89.8438 <2c2062757420696e206d6f7374206361736573206120>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.677 Tw - -BT -246.9753 165.236 Td -/F4.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.677 Tw - -BT -273.2253 165.236 Td -/F1.0 10.5 Tf -<204153502068617320746f2062652073656e7420696e207265706c7920746f2069742c20776974682074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.677 Tw - -BT -499.79 165.236 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.677 Tw - -BT -547.04 165.236 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 149.456 Td -/F1.0 10.5 Tf -<726563656976656420696e2074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -125.3205 149.456 Td -/F4.0 10.5 Tf -<48616c665f636c6f7365> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -177.8205 149.456 Td -/F1.0 10.5 Tf -<206d6573736167652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 109.616 Td -/F2.0 18 Tf -[<5454> 20.0195 <434e2d332054> 29.7852 <657374204578656375746f72>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.0709 Tw - -BT -48.24 81.596 Td -/F1.0 10.5 Tf -[<54686520544954> 60.0586 <414e206578656375746f722073746f707320746865207465737420706f727420616674657220746865207465737420636173652069732066696e6973686564206f7220696e2063617365206f6620657865637574696f6e206572726f72>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 65.816 Td -/F1.0 10.5 Tf -<647572696e6720746865207465737420636173652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<35> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -61 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 60 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F4.0 39 0 R -/F2.0 17 0 R -/F5.0 43 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> ->> -endobj -62 0 obj -[61 0 R /XYZ 0 425.04 null] -endobj -63 0 obj -[61 0 R /XYZ 0 379.52 null] -endobj -64 0 obj -[61 0 R /XYZ 0 133.64 null] -endobj -65 0 obj -<< /Length 18700 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 777.054 Td -/F2.0 27 Tf -<55736167652061732050726f746f636f6c204d6f64756c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4343 Tw - -BT -48.24 746.406 Td -/F1.0 10.5 Tf -<5468652048545450207465737420706f72742063616e206265207573656420617320612070726f746f636f6c206d6f64756c652c20692e652eca6f6e6c7920612070726f746f636f6c206461746120737472756374757265206465736372697074696f6e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4247 Tw - -BT -48.24 730.626 Td -/F1.0 10.5 Tf -<776974682074686520617070726f70726961746520656e636f64696e6720616e64206465636f64696e672066756e6374696f6e732e2054686520646174612073747275637475726520646566696e6974696f6e7320617265207468652073616d65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7961 Tw - -BT -48.24 714.846 Td -/F1.0 10.5 Tf -<617320696e2063617365206f662068747470207465737420706f72742c20746865792063616e20626520666f756e6420696e2066696c6520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7961 Tw - -BT -341.8501 714.846 Td -/F3.0 10.5 Tf -<485454506d73675f54797065732e7474636e2e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7961 Tw - -BT -446.8606 714.846 Td -/F1.0 10.5 Tf -<2054686520656e636f64696e6720616e64> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.5347 Tw - -BT -48.24 699.066 Td -/F1.0 10.5 Tf -<6465636f64696e672066756e6374696f6e7320617265206465636c617265642061732065787465726e616c2066756e6374696f6e7320696e2066696c6520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.5347 Tw - -BT -373.746 699.066 Td -/F3.0 10.5 Tf -<485454506d73675f54797065732e7474636e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.5347 Tw - -BT -476.1315 699.066 Td -/F1.0 10.5 Tf -<20627574207468657920617265> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 683.286 Td -/F1.0 10.5 Tf -<696d706c656d656e74656420696e2066696c657320> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -153.975 683.286 Td -/F3.0 10.5 Tf -[<485454506d73675f5054> 89.8438 <2e63632f68682e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 655.506 Td -/F1.0 10.5 Tf -<54686520617661696c61626c652066756e6374696f6e732061726520617320666f6c6c6f77733a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 619.41 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 619.41 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 619.41 166.267 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 599.13 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 599.13 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 599.13 166.267 20.28 re -f -0.0 0.0 0.0 scn -0.9765 0.9765 0.9765 scn -48.24 550.29 166.2665 48.84 re -f -0.0 0.0 0.0 scn -0.9765 0.9765 0.9765 scn -214.5065 550.29 166.2665 48.84 re -f -0.0 0.0 0.0 scn -0.9765 0.9765 0.9765 scn -380.773 550.29 166.267 48.84 re -f -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 639.69 m -214.5065 639.69 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 619.41 m -214.5065 619.41 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 639.94 m -48.24 618.785 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 639.94 m -214.5065 618.785 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -51.24 625.476 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 639.69 m -380.773 639.69 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 619.41 m -380.773 619.41 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 639.94 m -214.5065 618.785 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 639.94 m -380.773 618.785 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 625.476 Td -/F2.0 10.5 Tf -[<54797065206f6620666f726d616c20706172> 20.0195 <616d6574657273>] TJ -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 639.69 m -547.04 639.69 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 619.41 m -547.04 619.41 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 639.94 m -380.773 618.785 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 639.94 m -547.04 618.785 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 625.476 Td -/F2.0 10.5 Tf -<54797065206f662072657475726e2076616c7565> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 619.41 m -214.5065 619.41 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 599.13 m -214.5065 599.13 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 620.035 m -48.24 598.88 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 620.035 m -214.5065 598.88 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -51.24 607.38 Td -/F4.0 10.5 Tf -<656e635f485454504d657373616765> Tj -ET - -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 619.41 m -380.773 619.41 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 599.13 m -380.773 599.13 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 620.035 m -214.5065 598.88 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 620.035 m -380.773 598.88 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 605.196 Td -/F1.0 10.5 Tf -<485454504d657373616765> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 619.41 m -547.04 619.41 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 599.13 m -547.04 599.13 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 620.035 m -380.773 598.88 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 620.035 m -547.04 598.88 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 605.196 Td -/F1.0 10.5 Tf -<6f63746574737472696e67> Tj -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 599.13 m -214.5065 599.13 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 550.29 m -214.5065 550.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 599.38 m -48.24 550.04 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 599.38 m -214.5065 550.04 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -51.24 587.1 Td -/F4.0 10.5 Tf -<6465635f485454504d657373616765> Tj -ET - -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 599.13 m -380.773 599.13 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 550.29 m -380.773 550.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 599.38 m -214.5065 550.04 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 599.38 m -380.773 550.04 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 584.916 Td -/F1.0 10.5 Tf -<696e206f63746574737472696e672073747265616d> Tj -ET - - -BT -217.5065 570.636 Td -/F1.0 10.5 Tf -<696e6f757420485454504d657373616765206d7367> Tj -ET - - -BT -217.5065 556.356 Td -/F1.0 10.5 Tf -[<696e20626f6f6c65616e20736f636b> 20.0195 <657420646562756767696e67>] TJ -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 599.13 m -547.04 599.13 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 550.29 m -547.04 550.29 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 599.38 m -380.773 550.04 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 599.38 m -547.04 550.04 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 584.916 Td -/F1.0 10.5 Tf -<696e7465676572> Tj -ET - -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.3228 Tw - -BT -48.24 526.326 Td -/F1.0 10.5 Tf -[<496620746865207465737420706f727420757365642061732070726f746f636f6c206d6f64756c652c20746865204d616b> 20.0195 <6566696c65206973207468652073616d6520617320696e206e6f726d616c206361736520692e65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7445 Tw - -BT -48.24 510.546 Td -/F3.0 10.5 Tf -[<485454506d73675f5054> 89.8438 <2e63632f6868>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7445 Tw - -BT -141.2506 510.546 Td -/F1.0 10.5 Tf -<206973207573656420616e642074686520706f727420646566696e6974696f6e2066696c6520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7445 Tw - -BT -338.0844 510.546 Td -/F3.0 10.5 Tf -<485454506d73675f506f7274547970652e7474636e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7445 Tw - -BT -456.9129 510.546 Td -/F1.0 10.5 Tf -<20697320616c736f207573656420627574> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 494.766 Td -/F1.0 10.5 Tf -[<2867656e6572> 20.0195 <616c6c79292074686572652077696c6c206e6f7420626520646566696e656420616e> 20.0195 <7920706f7274206f66207468697320706f7274207479706520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -357.6851 494.766 Td -/F4.0 10.5 Tf -<485454506d73675f5054> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -410.1851 494.766 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 445.314 Td -/F2.0 27 Tf -[<557361676520776974682049504c342054> 29.7852 <65737420506f7274>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.2434 Tw - -BT -48.24 414.666 Td -/F1.0 10.5 Tf -[<54> 29.7852 <6f207573652049504c34207465737420706f727420666f722048545450207472> 20.0195 <6166666963207468652048545450207465737420706f72742070726f76696465732061206d657373616765206c656e6774682063616c63756c61746f72>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 398.886 Td -/F1.0 10.5 Tf -[<66756e6374696f6e2e20546861742066756e6374696f6e2063616e206265207573656420746f2064657465726d696e6520746865206d65737361676520626f756e646172792062> 20.0195 <79207468652049504c34207465737420706f72742e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 362.79 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 362.79 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 362.79 166.267 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -48.24 342.51 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -214.5065 342.51 166.2665 20.28 re -f -0.0 0.0 0.0 scn -1.0 1.0 1.0 scn -380.773 342.51 166.267 20.28 re -f -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 383.07 m -214.5065 383.07 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 362.79 m -214.5065 362.79 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 383.32 m -48.24 362.165 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 383.32 m -214.5065 362.165 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -51.24 368.856 Td -/F2.0 10.5 Tf -<4e616d65> Tj -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 383.07 m -380.773 383.07 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 362.79 m -380.773 362.79 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 383.32 m -214.5065 362.165 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 383.32 m -380.773 362.165 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 368.856 Td -/F2.0 10.5 Tf -[<54797065206f6620666f726d616c20706172> 20.0195 <616d6574657273>] TJ -ET - -0.0 0.0 0.0 scn -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 383.07 m -547.04 383.07 l -S -[] 0 d -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 362.79 m -547.04 362.79 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 383.32 m -380.773 362.165 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 383.32 m -547.04 362.165 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 368.856 Td -/F2.0 10.5 Tf -<54797065206f662072657475726e2076616c7565> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -48.24 362.79 m -214.5065 362.79 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 342.51 m -214.5065 342.51 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -48.24 363.415 m -48.24 342.26 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 363.415 m -214.5065 342.26 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -51.24 350.76 Td -/F4.0 10.5 Tf -<665f485454504d6573736167655f6c656e> Tj -ET - -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -214.5065 362.79 m -380.773 362.79 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 342.51 m -380.773 342.51 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -214.5065 363.415 m -214.5065 342.26 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 363.415 m -380.773 342.26 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -217.5065 348.576 Td -/F1.0 10.5 Tf -<696e206f63746574737472696e672073747265616d> Tj -ET - -0.0 0.0 0.0 scn -1.25 w -0.8667 0.8667 0.8667 SCN -380.773 362.79 m -547.04 362.79 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 342.51 m -547.04 342.51 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -380.773 363.415 m -380.773 342.26 l -S -[] 0 d -0.5 w -0.8667 0.8667 0.8667 SCN -547.04 363.415 m -547.04 342.26 l -S -[] 0 d -1 w -0.0 0.0 0.0 SCN -0.2 0.2 0.2 scn - -BT -383.773 348.576 Td -/F1.0 10.5 Tf -<696e7465676572> Tj -ET - -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 296.874 Td -/F2.0 27 Tf -[<4d696772> 20.0195 <6174696e672054> 29.7852 <657374205375697465205573696e6720523178>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7724 Tw - -BT -48.24 266.226 Td -/F1.0 10.5 Tf -<57697468207468652072656c65617365206f662074686520706f72742076657273696f6e2052324120697420686173206265656e206465636964656420746f2061646420666f7572206e6577207265636569766564204153507320616e642061> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.454 Tw - -BT -48.24 250.446 Td -/F1.0 10.5 Tf -<6e6577206d657373616765206669656c6420746f20746865207465737420706f72742074797065732e2054686973206d6f64696669636174696f6e20686173206265656e206d61646520746f2066756c66696c2074686520726571756972656d656e74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.9519 Tw - -BT -48.24 234.666 Td -/F1.0 10.5 Tf -[<6f6620612048545450207365727665722068616e646c696e67206d756c7469706c6520706172> 20.0195 <616c6c656c20636c69656e7420636f6e6e656374696f6e732e20546865206368616e676520636175736573207465737420737569746573>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -5.3562 Tw - -BT -48.24 218.886 Td -/F1.0 10.5 Tf -[<7772697474656e20666f722052317820706f727420746f206661696c2074686520636f6d70696c6174696f6e2e20486f77657665722c20746865207472> 20.0195 <616e736974696f6e20746f2074686520523220706f7274206973>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 203.106 Td -/F1.0 10.5 Tf -[<737472> 20.0195 <6169676874666f72776172642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 175.326 Td -/F1.0 10.5 Tf -<537465707320746f20636f6d70696c65206f6c6465722074657374207375697465732077697468204854545020706f72742052323a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 147.546 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1658 Tw - -BT -66.24 147.546 Td -/F1.0 10.5 Tf -<44656369646520776865746865722053534c2077696c6c2062652075736564206f72206e6f7420696e2074686520746573742e204966207965732c20706c656173652073656520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -1.1658 Tw - -BT -421.0713 147.546 Td -/F1.0 10.5 Tf -[<6d616b> 20.0195 <6566696c652c204d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1658 Tw - -BT -514.4057 147.546 Td -/F1.0 10.5 Tf -<2061626f7574> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3935 Tw - -BT -66.24 131.766 Td -/F1.0 10.5 Tf -<65646974696e672074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3935 Tw - -BT -123.307 131.766 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3935 Tw - -BT -165.0443 131.766 Td -/F1.0 10.5 Tf -<20746f20616c6c6f772053534c20696e2074686520746573742e2049662053534c206973206e6f74207573656420696e2074686520746573742c207468656e2053534c207370656369666963207061727473> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 115.986 Td -/F1.0 10.5 Tf -<63616e2062652072656d6f7665642066726f6d2074686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -195.159 115.986 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -236.8963 115.986 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.5 w -0.9333 0.9333 0.9333 SCN -120.4695 100.17 m -120.4695 76.39 l -S -Q -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -78.3451 84.206 Td -/F2.0 10.5 Tf -[<4e4f> 20.0195 <5445>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -132.4695 84.206 Td -/F4.0 10.5 Tf -<4f50454e53534c5f444952> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -190.2195 84.206 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -214.7685 84.206 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -219.7245 84.206 Td -/F4.0 10.5 Tf -<6c73736c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -240.7245 84.206 Td -/F1.0 10.5 Tf -<20617265207374696c6c206e656564656420746f20636f6d70696c65207468652065786563757461626c652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 52.426 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -66.24 52.426 Td -/F1.0 10.5 Tf -<52656d6f766520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -113.4103 52.426 Td -/F3.0 10.5 Tf -<6275666665722e6363> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -155.1688 52.426 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -188.2944 52.426 Td -/F3.0 10.5 Tf -<6275666665722e6868> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -232.4259 52.426 Td -/F1.0 10.5 Tf -<2066726f6d207468652028757365722920736f75726365732c20616e642061646420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -429.8876 52.426 Td -/F3.0 10.5 Tf -[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6363>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.2883 Tw - -BT -520.9222 52.426 Td -/F1.0 10.5 Tf -<20616e64> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<36> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -66 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 65 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F3.0 19 0 R -/F4.0 39 0 R -/F7.0 57 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> -/Annots [72 0 R] ->> -endobj -67 0 obj -[66 0 R /XYZ 0 841.89 null] -endobj -68 0 obj -[66 0 R /XYZ 0 478.95 null] -endobj -69 0 obj -<< /Limits [(HTTP_test_port_parameters_in_the_RTE_configuration_file) (_additional_error_messages_in_case_ssl_connections_are_used)] -/Names [(HTTP_test_port_parameters_in_the_RTE_configuration_file) 41 0 R (_1) 109 0 R (_2) 110 0 R (_3) 111 0 R (_4) 112 0 R (_5) 114 0 R (__anchor-top) 13 0 R (_abbreviations) 107 0 R (_about_this_document) 16 0 R (_additional_error_messages_in_case_ssl_connections_are_used) 83 0 R] ->> -endobj -70 0 obj -<< /Limits [(_prerequisite_knowledge) (ttcn-3-test-executor-0)] -/Names [(_prerequisite_knowledge) 21 0 R (_references) 108 0 R (_start_procedure) 47 0 R (_starting_a_server_listening_for_client_connections) 58 0 R (_stop_procedure) 62 0 R (_system_requirements) 24 0 R (_terminology) 104 0 R (_the_test_port) 30 0 R (_ttcn_3_test_executor) 48 0 R (_usage_as_protocol_module) 67 0 R (_usage_with_ipl4_test_port) 68 0 R (_warning_messages) 86 0 R (makefile) 102 0 R (sending-receiving-http-messages) 59 0 R (ttcn-3-test-executor-0) 64 0 R] ->> -endobj -71 0 obj -[66 0 R /XYZ 0 330.51 null] -endobj -72 0 obj -<< /Border [0 0 0] -/Dest (8_examples.adoc) -/Subtype /Link -/Rect [421.0713 144.48 514.4057 158.76] -/Type /Annot ->> -endobj -73 0 obj -<< /Length 16393 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -66.24 794.676 Td -/F3.0 10.5 Tf -[<4162737472> 20.0195 <6163745f536f636b> 20.0195 <65742e6868>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -159.6476 794.676 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 772.896 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8528 Tw - -BT -66.24 772.896 Td -/F1.0 10.5 Tf -<446f206e6f74207365742074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8528 Tw - -BT -140.7676 772.896 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e5f41535073> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8528 Tw - -BT -251.0176 772.896 Td -/F1.0 10.5 Tf -<20746f20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8528 Tw - -BT -267.9167 772.896 Td -/F5.0 10.5 Tf -<2279657322> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8528 Tw - -BT -294.1667 772.896 Td -/F1.0 10.5 Tf -<20756e6c65737320796f7520646f206e6f74206d6f6469667920746865207465737420737569746520746f2068616e646c65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -8.2804 Tw - -BT -66.24 757.116 Td -/F1.0 10.5 Tf -<74686520696e636f6d696e6720> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -8.2804 Tw - -BT -151.2398 757.116 Td -/F4.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -8.2804 Tw - -BT -177.4898 757.116 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -8.2804 Tw - -BT -191.1147 757.116 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -8.2804 Tw - -BT -264.6147 757.116 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -8.2804 Tw - -BT -278.2396 757.116 Td -/F4.0 10.5 Tf -<436c69656e745f636f6e6e6563746564> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -8.2804 Tw - -BT -362.2396 757.116 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -8.2804 Tw - -BT -403.3493 757.116 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -8.2804 Tw - -BT -471.5993 757.116 Td -/F1.0 10.5 Tf -<20415350732e204974206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8382 Tw - -BT -66.24 741.336 Td -/F1.0 10.5 Tf -<7265636f6d6d656e64656420746f20636f6e736964657220746865207573616765206f6620746865736520415350732073696e6365207468657920616c6c6f7720746865207465737420737569746520746f20696d706c656d656e74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.285 Tw - -BT -66.24 725.556 Td -/F1.0 10.5 Tf -[<6d6f726520636f6d706c65782054> 20.0195 <4350206576656e742068616e646c696e672e2046> 40.0391 <6f72206578616d706c652c206120636c69656e74207465737420636173652063616e207761697420666f7220612073657276657220746f206265>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 709.776 Td -/F1.0 10.5 Tf -[<737461727465642075702062> 20.0195 <7920636865636b696e672069662074686520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -210.5308 709.776 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -257.7808 709.776 Td -/F1.0 10.5 Tf -<20697320> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -271.3048 709.776 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -276.2608 709.776 Td -/F5.0 10.5 Tf -<31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -281.5108 709.776 Td -/F1.0 10.5 Tf -<20696e207468652072657475726e656420> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -363.1693 709.776 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -436.6693 709.776 Td -/F1.0 10.5 Tf -[<20415350> 120.1172 <2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 687.996 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -11.2681 Tw - -BT -66.24 687.996 Td -/F1.0 10.5 Tf -[<41> 20.0195 <64642074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -11.2681 Tw - -BT -130.2509 687.996 Td -/F4.0 10.5 Tf -<636c69656e745f6964203a3d206f6d6974> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -11.2681 Tw - -BT -242.0371 687.996 Td -/F1.0 10.5 Tf -<2061737369676e6d656e7420746f20657665727920> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -11.2681 Tw - -BT -393.0649 687.996 Td -/F4.0 10.5 Tf -<4854545052657175657374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -11.2681 Tw - -BT -450.8149 687.996 Td -/F1.0 10.5 Tf -<202c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -11.2681 Tw - -BT -481.415 687.996 Td -/F4.0 10.5 Tf -<48545450526573706f6e7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -11.2681 Tw - -BT -544.415 687.996 Td -/F1.0 10.5 Tf -<2c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4628 Tw - -BT -66.24 672.216 Td -/F4.0 10.5 Tf -<48545450526571756573745f62696e6172795f626f6479> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4628 Tw - -BT -186.99 672.216 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4628 Tw - -BT -192.7973 672.216 Td -/F4.0 10.5 Tf -<48545450526573706f6e73655f62696e6172795f626f6479> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4628 Tw - -BT -318.7973 672.216 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4628 Tw - -BT -324.6047 672.216 Td -/F4.0 10.5 Tf -<6572726f6e6f75735f6d7367> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4628 Tw - -BT -387.6047 672.216 Td -/F1.0 10.5 Tf -<2c20> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4628 Tw - -BT -393.412 672.216 Td -/F4.0 10.5 Tf -<48616c665f636c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4628 Tw - -BT -445.912 672.216 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.4628 Tw - -BT -471.3867 672.216 Td -/F4.0 10.5 Tf -<436c6f7365> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4628 Tw - -BT -497.6367 672.216 Td -/F1.0 10.5 Tf -<207661726961626c6573> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 656.436 Td -/F1.0 10.5 Tf -<616e642074656d706c617465732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 628.656 Td -/F1.0 10.5 Tf -<4578616d706c653a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.9608 0.9608 0.9608 scn -52.24 612.84 m -543.04 612.84 l -545.2491 612.84 547.04 611.0491 547.04 608.84 c -547.04 565.36 l -547.04 563.1509 545.2491 561.36 543.04 561.36 c -52.24 561.36 l -50.0309 561.36 48.24 563.1509 48.24 565.36 c -48.24 608.84 l -48.24 611.0491 50.0309 612.84 52.24 612.84 c -h -f -0.8 0.8 0.8 SCN -0.75 w -52.24 612.84 m -543.04 612.84 l -545.2491 612.84 547.04 611.0491 547.04 608.84 c -547.04 565.36 l -547.04 563.1509 545.2491 561.36 543.04 561.36 c -52.24 561.36 l -50.0309 561.36 48.24 563.1509 48.24 565.36 c -48.24 608.84 l -48.24 611.0491 50.0309 612.84 52.24 612.84 c -h -S -Q -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -59.24 590.015 Td -/F4.0 11 Tf -<7661722048545450526571756573742072203a3d207b206d6574686f64203a3d2022474554222c20757269203a3d20222f222c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -59.24 575.275 Td -/F4.0 11 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 537.396 Td -/F1.0 10.5 Tf -<68617320746f206265206d6f64696669656420746f3a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.9608 0.9608 0.9608 scn -52.24 521.58 m -543.04 521.58 l -545.2491 521.58 547.04 519.7891 547.04 517.58 c -547.04 474.1 l -547.04 471.8909 545.2491 470.1 543.04 470.1 c -52.24 470.1 l -50.0309 470.1 48.24 471.8909 48.24 474.1 c -48.24 517.58 l -48.24 519.7891 50.0309 521.58 52.24 521.58 c -h -f -0.8 0.8 0.8 SCN -0.75 w -52.24 521.58 m -543.04 521.58 l -545.2491 521.58 547.04 519.7891 547.04 517.58 c -547.04 474.1 l -547.04 471.8909 545.2491 470.1 543.04 470.1 c -52.24 470.1 l -50.0309 470.1 48.24 471.8909 48.24 474.1 c -48.24 517.58 l -48.24 519.7891 50.0309 521.58 52.24 521.58 c -h -S -Q -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -59.24 498.755 Td -/F4.0 11 Tf -<7661722048545450526571756573742072203a3d207b20636c69656e745f6964203a3d206f6d69742c206d6574686f64203a3d2022474554222c20757269203a3d20222f222c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -59.24 484.015 Td -/F4.0 11 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.393 Tw - -BT -48.24 446.136 Td -/F1.0 10.5 Tf -[<546865206e6577204153507320617265206f6e6c792072656365697665642062> 20.0195 <792074686520746573742069662074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.393 Tw - -BT -297.1502 446.136 Td -/F4.0 10.5 Tf -<7573655f6e6f74696669636174696f6e2041535073203a3d202279657322> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.393 Tw - -BT -455.8293 446.136 Td -/F1.0 10.5 Tf -<2069732073706563696669656420696e20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 430.356 Td -/F1.0 10.5 Tf -[<72756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c652e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 380.904 Td -/F2.0 27 Tf -<4572726f72204d65737361676573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 350.256 Td -/F1.0 10.5 Tf -[<546865206572726f72206d6573736167657320686176652074686520666f6c6c6f77696e672067656e6572> 20.0195 <616c20666f726d3a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 324.66 Td -/F8.0 10.5 Tf -<6044796e616d696320746573742063617365206572726f723a203c6572726f7220746578743e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -247.74 324.66 Td -/F4.0 10.5 Tf -<60> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.8885 Tw - -BT -48.24 298.476 Td -/F1.0 10.5 Tf -[<546865206c697374206f662074686520706f737369626c65206572726f72206d657373616765732069732073686f776e2062656c6f77> 69.8242 <2e204e6f746520746861742074686973206c69737420636f6e7461696e7320746865206572726f72>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 282.696 Td -/F1.0 10.5 Tf -[<6d657373616765732070726f64756365642062> 20.0195 <7920746865207465737420706f72742e20546865206572726f72206d6573736167657320636f6d696e672066726f6d2074686520544954> 60.0586 <414e20617265206e6f742073686f776e3a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 257.1 Td -/F8.0 10.5 Tf -<506172616d657465722076616c7565203c76616c75653e206e6f74207265636f676e697a656420666f7220706172616d65746572203c6e616d653e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8706 Tw - -BT -48.24 230.916 Td -/F1.0 10.5 Tf -<5468652073706563696669656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8706 Tw - -BT -118.7037 230.916 Td -/F4.0 10.5 Tf -<3c76616c75653e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8706 Tw - -BT -155.4537 230.916 Td -/F1.0 10.5 Tf -[<20696e207468652072756e74696d6520636f6e6669677572> 20.0195 <6174696f6e2066696c65206973206e6f74207265636f676e697a656420666f722074686520706172> 20.0195 <616d6574657220>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.8706 Tw - -BT -512.915 230.916 Td -/F4.0 10.5 Tf -<3c6e616d653e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8706 Tw - -BT -544.415 230.916 Td -/F1.0 10.5 Tf -<2e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 215.136 Td -/F1.0 10.5 Tf -<53656520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -67.896 215.136 Td -/F1.0 10.5 Tf -[<485454502054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e207468652052> 20.0195 <544520436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -349.2136 215.136 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1517 Tw - -BT -48.24 189.54 Td -/F8.0 10.5 Tf -<3c706f7274206e616d653e3a2048545450207465737420706f7274206973206e6f7420636f6d70696c656420746f20737570706f72742053534c20636f6e6e656374696f6e732e20506c6561736520636865636b207468652055736572> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1517 Tw - -BT -538.766 189.54 Td -/F7.0 10.5 Tf - Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1517 Tw - -BT -541.79 189.54 Td -/F8.0 10.5 Tf -<73> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 176.595 Td -/F8.0 10.5 Tf -<477569646520666f7220696e737472756374696f6e73206f6e20636f6d70696c696e67207468652048545450207465737420706f727420776974682053534c20737570706f72742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -3.6213 Tw - -BT -48.24 150.411 Td -/F4.0 10.5 Tf -<2d4441535f5553455f53534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6213 Tw - -BT -111.24 150.411 Td -/F1.0 10.5 Tf -<20616e64204f70656e53534c2072656c6174656420636f6d70696c696e6720696e737472756374696f6e7320617265206d697373696e672066726f6d2074686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6213 Tw - -BT -479.4004 150.411 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6213 Tw - -BT -521.1377 150.411 Td -/F1.0 10.5 Tf -<2e20536565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 134.631 Td -/F1.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -91.6153 134.631 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 109.035 Td -/F8.0 10.5 Tf -<43616e6e6f7420636f6e6e65637420746f20736572766572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 82.851 Td -/F1.0 10.5 Tf -[<54686520436f6e6e656374206f706572> 20.0195 <6174696f6e206661696c65643b206c6f6f6b20666f722074686520726561736f6e2061626f76652074686973206d65737361676520696e20746865206c6f672e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 57.255 Td -/F8.0 10.5 Tf -<43616e6e6f74206c697374656e20617420706f7274> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<37> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -74 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 73 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F3.0 19 0 R -/F1.0 8 0 R -/F4.0 39 0 R -/F5.0 43 0 R -/F7.0 57 0 R -/F2.0 17 0 R -/F8.0 76 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> -/Annots [77 0 R 78 0 R] ->> -endobj -75 0 obj -[74 0 R /XYZ 0 414.54 null] -endobj -76 0 obj -<< /Type /Font -/BaseFont /439c15+mplus1mn-bold -/Subtype /TrueType -/FontDescriptor 242 0 R -/FirstChar 32 -/LastChar 255 -/Widths 244 0 R -/ToUnicode 243 0 R ->> -endobj -77 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (2_the_test_port.pdf#HTTP_test_port_parameters_in_the_RTE_configuration_file) ->> -/Subtype /Link -/Rect [67.896 212.07 349.2136 226.35] -/Type /Annot ->> -endobj -78 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (8_examples.pdf#makefile) ->> -/Subtype /Link -/Rect [48.24 131.565 91.6153 145.845] -/Type /Annot ->> -endobj -79 0 obj -<< /Length 8225 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 793.926 Td -/F1.0 10.5 Tf -[<546865204c697374656e206f706572> 20.0195 <6174696f6e206661696c65643b206c6f6f6b20666f722074686520726561736f6e2061626f76652074686973206d65737361676520696e20746865206c6f672e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 768.33 Td -/F8.0 10.5 Tf -<43616e6e6f742061636365707420636f6e6e656374696f6e20617420706f7274> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8228 Tw - -BT -48.24 742.146 Td -/F1.0 10.5 Tf -<54686520736572766572206661696c656420746f2061636365707420616e20696e636f6d696e6720636f6e6e656374696f6e3b206c6f6f6b20666f722074686520726561736f6e2061626f76652074686973206d65737361676520696e20746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 726.366 Td -/F1.0 10.5 Tf -<6c6f672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 700.77 Td -/F8.0 10.5 Tf -<43616e6e6f74206f70656e20736f636b6574> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4385 Tw - -BT -48.24 674.586 Td -/F1.0 10.5 Tf -[<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67206120736f636b> 20.0195 <657420666f72206120636f6e6e656374696f6e3b206c6f6f6b20666f722074686520726561736f6e2061626f76652074686973>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 658.806 Td -/F1.0 10.5 Tf -<6d65737361676520696e20746865206c6f672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 633.21 Td -/F8.0 10.5 Tf -<536574736f636b6f7074206661696c6564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.4385 Tw - -BT -48.24 607.026 Td -/F1.0 10.5 Tf -[<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67206120736f636b> 20.0195 <657420666f72206120636f6e6e656374696f6e3b206c6f6f6b20666f722074686520726561736f6e2061626f76652074686973>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 591.246 Td -/F1.0 10.5 Tf -<6d65737361676520696e20746865206c6f672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 565.65 Td -/F8.0 10.5 Tf -<43616e6e6f742062696e6420746f20706f7274> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.279 Tw - -BT -48.24 539.466 Td -/F1.0 10.5 Tf -<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67207468652072657175657374656420706f7274206e756d62657220666f72206120636f6e6e656374696f6e3b206c6f6f6b20666f7220746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 523.686 Td -/F1.0 10.5 Tf -<726561736f6e2061626f76652074686973206d65737361676520696e20746865206c6f672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 498.09 Td -/F8.0 10.5 Tf -<676574736f636b6e616d6528292073797374656d2063616c6c206661696c6564206f6e207468652073657276657220736f636b6574> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.279 Tw - -BT -48.24 471.906 Td -/F1.0 10.5 Tf -<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67207468652072657175657374656420706f7274206e756d62657220666f72206120636f6e6e656374696f6e3b206c6f6f6b20666f7220746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 456.126 Td -/F1.0 10.5 Tf -<726561736f6e2061626f76652074686973206d65737361676520696e20746865206c6f672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 430.53 Td -/F8.0 10.5 Tf -<436c69656e74204964206e6f742073706563696669656420616c74686f756768206e6f74206f6e6c79203120636c69656e7420657869737473> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.6569 Tw - -BT -48.24 404.346 Td -/F1.0 10.5 Tf -<53696e6365206d756c7469706c6520636f6e6e656374696f6e732061726520616c6976652c20796f75206861766520746f2073706563696679206120636c69656e74206964207768656e2073656e64696e672061206d65737361676520746f> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 388.566 Td -/F1.0 10.5 Tf -<64697374696e6775697368206265747765656e2074686520636f6e6e656374696f6e7320776865726520746865206d6573736167652068617320746f2062652073656e742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 362.97 Td -/F8.0 10.5 Tf -<5468657265206973206e6f20636f6e6e656374696f6e20616c6976652c207573652074686520274153505f5443505f436f6e6e65637427206265666f72652073656e64696e6720616e797468696e672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 336.786 Td -/F1.0 10.5 Tf -<436f6e6e6563742068617320746f2062652073656e74206265666f72652073656e64696e672061206d6573736167652c206f7220746865207365727665722068617320746f20616363657074206120636f6e6e656374696f6e2066697273742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 311.19 Td -/F8.0 10.5 Tf -<53656e642073797374656d2063616c6c206661696c65643a205468657265206973206e6f20636c69656e74206e72203c636c69656e745f69643e20636f6e6e656374656420746f207468652054435020736572766572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 285.006 Td -/F1.0 10.5 Tf -[<412073656e64206f706572> 20.0195 <6174696f6e20697320706572666f726d656420746f2061206e6f6e2d6578697374696e6720636c69656e742e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 259.41 Td -/F8.0 10.5 Tf -<53656e642073797374656d2063616c6c206661696c65643a203c616d6f756e743e20627974657320776572652073656e7420696e7374656164206f66203c616d6f756e743e203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 233.226 Td -/F1.0 10.5 Tf -[<5468652073656e64206f706572> 20.0195 <6174696f6e206661696c65642062656361757365206f662074686520>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -252.6328 233.226 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -294.6328 233.226 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 207.63 Td -/F8.0 10.5 Tf -<54686520686f7374206e616d65203c6e616d653e206973206e6f742076616c696420696e2074686520636f6e66696775726174696f6e2066696c652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 181.446 Td -/F1.0 10.5 Tf -[<54686520676976656e20686f7374206e616d6520696e2074686520436f6e6e656374202f204c697374656e204153502063616e6e6f74206265207265736f6c7665642062> 20.0195 <79207468652073797374656d2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 155.85 Td -/F8.0 10.5 Tf -<4e756d626572206f6620636c69656e74733c3e30206275742063616e6e6f742067657420666972737420636c69656e742c2070726f6772616d6d696e67206572726f72> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4684 Tw - -BT -48.24 129.666 Td -/F1.0 10.5 Tf -<4e657665722073686f756c642073686f772075702e20506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 113.886 Td -/F1.0 10.5 Tf -<706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 88.29 Td -/F8.0 10.5 Tf -<496e646578203c616d6f756e743e2065786365656473206c656e677468206f662070656572206c6973742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4684 Tw - -BT -48.24 62.106 Td -/F1.0 10.5 Tf -<4e657665722073686f756c642073686f772075702e20506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<38> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -80 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 79 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F8.0 76 0 R -/F4.0 39 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> ->> -endobj -81 0 obj -<< /Length 6563 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 794.676 Td -/F1.0 10.5 Tf -<706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 769.08 Td -/F8.0 10.5 Tf -<41627374726163745f536f636b65743a3a6765745f706565723a20436c69656e74203c636c69656e745f69643e20646f6573206e6f74206578697374> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4684 Tw - -BT -48.24 742.896 Td -/F1.0 10.5 Tf -<4e657665722073686f756c642073686f772075702e20506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 727.116 Td -/F1.0 10.5 Tf -<706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 701.52 Td -/F8.0 10.5 Tf -<496e76616c696420436c69656e7420496420697320676976656e3a203c636c69656e745f69643e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 675.336 Td -/F1.0 10.5 Tf -<506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e6720706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 649.74 Td -/F8.0 10.5 Tf -<50656572203c636c69656e745f69643e20646f6573206e6f742065786973742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.4684 Tw - -BT -48.24 623.556 Td -/F1.0 10.5 Tf -<4e657665722073686f756c642073686f772075702e20506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 607.776 Td -/F1.0 10.5 Tf -<706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 563.664 Td -/F2.0 22 Tf -[<41> 20.0195 <64646974696f6e616c204572726f72204d6573736167657320696e20636173652053534c>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 533.744 Td -/F2.0 22 Tf -<436f6e6e656374696f6e73204172652055736564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 506.74 Td -/F8.0 10.5 Tf -<4e6f2053534c2043545820666f756e642c2053534c206e6f7420696e697469616c697a6564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 480.556 Td -/F1.0 10.5 Tf -<4e657665722073686f756c642073686f772075702e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 454.96 Td -/F8.0 10.5 Tf -<4372656174696f6e206f662053534c206f626a656374206661696c6564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 428.776 Td -/F1.0 10.5 Tf -<4e657665722073686f756c642073686f772075702e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 403.18 Td -/F8.0 10.5 Tf -<42696e64696e67206f662053534c206f626a65637420746f20736f636b6574206661696c6564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 376.996 Td -/F1.0 10.5 Tf -[<5468652053534c206f626a65637420636f756c64206e6f7420626520626f756e6420746f207468652054> 20.0195 <435020736f636b> 20.0195 <6574>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 351.4 Td -/F8.0 10.5 Tf -<53534c206572726f72206f63637572726564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7782 Tw - -BT -48.24 325.216 Td -/F1.0 10.5 Tf -[<412067656e6572> 20.0195 <616c2053534c206572726f72206f636375727265642e20436865636b20746865207465737420706f7274206c6f677320746f207365652070726576696f7573206572726f72206d657373616765732073686f77696e6720746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 309.436 Td -/F1.0 10.5 Tf -<7265616c2070726f626c656d2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 283.84 Td -/F8.0 10.5 Tf -<3c6e616d653e206973206e6f7420646566696e656420696e2074686520636f6e66696775726174696f6e2066696c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 257.656 Td -/F1.0 10.5 Tf -[<546865207465737420706f727420706172> 20.0195 <616d657465722077697468203c6e616d653e206973206d616e6461746f7279> 89.8438 <2c20627574206973206e6f7420646566696e656420696e2074686520636f6e6669677572> 20.0195 <6174696f6e2066696c652e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 232.06 Td -/F8.0 10.5 Tf -<4e6f2053534c206461746120617661696c61626c6520666f7220636c69656e74203c636c69656e745f69643e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 205.876 Td -/F1.0 10.5 Tf -<506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e6720706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 180.28 Td -/F8.0 10.5 Tf -<436f756c64206e6f7420726561642066726f6d202f6465762f7572616e646f6d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 154.096 Td -/F1.0 10.5 Tf -[<5468652072656164206f706572> 20.0195 <6174696f6e206f6e2074686520696e7374616c6c65642072> 20.0195 <616e646f6d20646576696365206973206661696c65642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 128.5 Td -/F8.0 10.5 Tf -<436f756c64206e6f7420726561642066726f6d202f6465762f72616e646f6d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 102.316 Td -/F1.0 10.5 Tf -[<5468652072656164206f706572> 20.0195 <6174696f6e206f6e2074686520696e7374616c6c65642072> 20.0195 <616e646f6d20646576696365206973206661696c65642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 76.72 Td -/F8.0 10.5 Tf -<436f756c64206e6f742073656564207468652050736575646f2052616e646f6d204e756d6265722047656e657261746f72207769746820656e6f75676820646174612e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -541.009 14.388 Td -/F1.0 9 Tf -<39> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -82 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 81 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F8.0 76 0 R -/F2.0 17 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> ->> -endobj -83 0 obj -[82 0 R /XYZ 0 591.96 null] -endobj -84 0 obj -<< /Length 9395 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -0.2348 Tw - -BT -48.24 794.676 Td -/F1.0 10.5 Tf -[<4173206e6f2072> 20.0195 <616e646f6d206465766963657320666f756e642c206120776f726b61726f756e64206973207573656420746f2073656564207468652053534c2050524e472e20436f6e73696465722075706772> 20.0195 <6164696e6720796f7572>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 778.896 Td -/F1.0 10.5 Tf -[<73797374656d207769746820746865206c617465737420617661696c61626c6520706174636865732e2048656c704465736b2073686f756c6420636f727265637420746869732077697468696e2061206461> 20.0195 <79> 89.8438 <2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 753.3 Td -/F8.0 10.5 Tf -<5468652073656564696e67206661696c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 727.116 Td -/F1.0 10.5 Tf -<506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e6720706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 701.52 Td -/F8.0 10.5 Tf -<53534c206d6574686f64206372656174696f6e206661696c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 675.336 Td -/F1.0 10.5 Tf -<546865206372656174696f6e206f66207468652053534c206d6574686f64206f626a656374206661696c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 649.74 Td -/F8.0 10.5 Tf -<53534c20636f6e74657874206372656174696f6e206661696c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 623.556 Td -/F1.0 10.5 Tf -<546865206372656174696f6e206f66207468652053534c20636f6e74657874206f626a656374206661696c65642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 597.96 Td -/F8.0 10.5 Tf -<43616e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -63.99 597.96 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -67.014 597.96 Td -/F8.0 10.5 Tf -<7420726561642063657274696669636174652066696c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 571.776 Td -/F1.0 10.5 Tf -<546865207370656369666965642063657274696669636174652066696c6520636f756c64206e6f7420626520726561642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 546.18 Td -/F8.0 10.5 Tf -<43616e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -63.99 546.18 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -67.014 546.18 Td -/F8.0 10.5 Tf -<742072656164206b65792066696c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 519.996 Td -/F1.0 10.5 Tf -[<546865207370656369666965642070726976617465206b> 20.0195 <65792066696c6520636f756c64206e6f7420626520726561642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 494.4 Td -/F8.0 10.5 Tf -<43616e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -63.99 494.4 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -67.014 494.4 Td -/F8.0 10.5 Tf -<742072656164207472757374656443416c6973742066696c65> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 468.216 Td -/F1.0 10.5 Tf -<54686520737065636966696564206365727469666963617465206f66207468652074727573746564204341732066696c6520636f756c64206e6f7420626520726561642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 442.62 Td -/F8.0 10.5 Tf -<436970686572206c697374207265737472696374696f6e206661696c656420666f72203c6e616d653e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 416.436 Td -/F1.0 10.5 Tf -<5468652073706563696669656420636970686572207265737472696374696f6e206c69737420636f756c64206e6f74206265207365742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 390.84 Td -/F8.0 10.5 Tf -<556e6b6e6f776e2053534c206572726f7220636f64653a203c6572726f7220636f64653e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 364.656 Td -/F1.0 10.5 Tf -<506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e6720706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 315.204 Td -/F2.0 27 Tf -[<57> 49.8047 <61726e696e67204d65737361676573>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 284.556 Td -/F1.0 10.5 Tf -[<54686520666f6c6c6f77696e67206c6973742073686f77732074686520706f737369626c65207761726e696e67206d657373616765732070726f64756365642062> 20.0195 <7920746865207465737420706f72743a>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 258.96 Td -/F8.0 10.5 Tf -<485454506d73675f5f50543a3a7365745f706172616d6574657228293a20556e737570706f72746564205465737420506f727420706172616d657465723a203c6e616d653e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.488 Tw - -BT -48.24 232.776 Td -/F1.0 10.5 Tf -[<5468652073706563696669656420706172> 20.0195 <616d65746572206973206e6f74207265636f676e697a65642062> 20.0195 <7920746865207465737420706f72742e20436865636b20>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -0.488 Tw - -BT -378.7925 232.776 Td -/F1.0 10.5 Tf -[<485454502054> 29.7852 <65737420506f727420506172> 20.0195 <616d657465727320696e20746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 216.996 Td -/F1.0 10.5 Tf -[<52> 20.0195 <544520436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -161.0306 216.996 Td -/F1.0 10.5 Tf -[<20666f7220706172> 20.0195 <616d65746572206e616d65732e2054686520706172> 20.0195 <616d65746572206e616d6573206861766520746f20626520676976656e20636173652073656e7369746976652e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.0231 Tw - -BT -48.24 191.4 Td -/F8.0 10.5 Tf -<3c706f7274206e616d653e3a20746f20737769746368206f6e2048545450207465737420706f727420646562756767696e672c2073657420746865202e3c706f7274206e616d653e2e687474705f646562756767696e67203a3d> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 178.455 Td -/F8.0 10.5 Tf -<6060796573272720696e2074686520706f7274> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -147.99 178.455 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -151.014 178.455 Td -/F8.0 10.5 Tf -<7320706172616d65746572732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1513 Tw - -BT -48.24 152.271 Td -/F1.0 10.5 Tf -<48545450207465737420706f72742070726f64756365732064657461696c6564206c6f677320696620796f75207370656369667920> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1513 Tw - -BT -307.4925 152.271 Td -/F4.0 10.5 Tf -<746865687474705f646562756767696e67203a3d202279657322> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1513 Tw - -BT -444.2952 152.271 Td -/F1.0 10.5 Tf -[<20696e2074686520636f6e6669677572> 20.0195 <6174696f6e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 136.491 Td -/F1.0 10.5 Tf -<66696c652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 110.895 Td -/F8.0 10.5 Tf -<4572726f72207768656e2072656164696e672074686520726563656976656420544350205044552e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -3.6247 Tw - -BT -48.24 84.711 Td -/F1.0 10.5 Tf -<54686572652077617320616e206572726f72207768696c652072656164696e6720696e636f6d696e6720646174612066726f6d2074686520636f6e6e656374696f6e2e2054686520636f6e6e656374696f6e2067657473> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.906 Tw - -BT -48.24 68.931 Td -/F1.0 10.5 Tf -[<646973636f6e6e656374656420696d6d6564696174656c79> 89.8438 <2c20746865207465737420697320696e666f726d65642061626f75742074686520646973636f6e6e6563742062> 20.0195 <79206120436c6f736520415350207769746820746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 53.151 Td -/F1.0 10.5 Tf -<72656c6576616e7420> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -92.844 53.151 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -140.094 53.151 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<3130> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -85 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 84 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F1.0 8 0 R -/F8.0 76 0 R -/F7.0 57 0 R -/F2.0 17 0 R -/F4.0 39 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> -/Annots [87 0 R 88 0 R] ->> -endobj -86 0 obj -[85 0 R /XYZ 0 348.84 null] -endobj -87 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (2_the_test_port.pdf#HTTP_test_port_parameters_in_the_RTE_configuration_file) ->> -/Subtype /Link -/Rect [378.7925 229.71 547.04 243.99] -/Type /Annot ->> -endobj -88 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (2_the_test_port.pdf#HTTP_test_port_parameters_in_the_RTE_configuration_file) ->> -/Subtype /Link -/Rect [48.24 213.93 161.0306 228.21] -/Type /Annot ->> -endobj -89 0 obj -<< /Length 16197 ->> -stream -q -/DeviceRGB cs -0.6941 0.1294 0.2745 scn -/DeviceRGB CS -0.6941 0.1294 0.2745 SCN - -BT -48.24 796.11 Td -/F8.0 10.5 Tf -<43616e6e6f74206f70656e20736f636b6574207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 769.926 Td -/F1.0 10.5 Tf -[<546865204c697374656e206f706572> 20.0195 <6174696f6e206661696c65642062656361757365206f6620>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -241.0933 769.926 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -283.0933 769.926 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 744.33 Td -/F8.0 10.5 Tf -<536574736f636b6f7074206661696c6564207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3898 Tw - -BT -48.24 718.146 Td -/F1.0 10.5 Tf -[<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67206120736f636b> 20.0195 <65742062656361757365206f6620>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.3898 Tw - -BT -341.5427 718.146 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.3898 Tw - -BT -383.5427 718.146 Td -/F1.0 10.5 Tf -<2e20546865207465737420697320696e666f726d65642061626f757420746865> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 702.366 Td -/F1.0 10.5 Tf -[<6661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -157.3138 702.366 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -225.5638 702.366 Td -/F1.0 10.5 Tf -<20415350207769746820706f72746e756d626572203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -348.6973 702.366 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -369.6973 702.366 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 676.77 Td -/F8.0 10.5 Tf -<43616e6e6f742062696e6420746f20706f7274207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1043 Tw - -BT -48.24 650.586 Td -/F1.0 10.5 Tf -<54686572652077617320616e206572726f72207768696c652062696e64696e6720746f207468652072657175657374656420706f72742062656361757365206f6620> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.1043 Tw - -BT -395.6228 650.586 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1043 Tw - -BT -437.6228 650.586 Td -/F1.0 10.5 Tf -<2e20546865207465737420697320696e666f726d6564> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 634.806 Td -/F1.0 10.5 Tf -[<61626f757420746865206661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -207.4723 634.806 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -275.7223 634.806 Td -/F1.0 10.5 Tf -<20415350207769746820706f72746e756d626572203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -398.8558 634.806 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -419.8558 634.806 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 609.21 Td -/F8.0 10.5 Tf -<43616e6e6f74206c697374656e20617420706f7274207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6522 Tw - -BT -48.24 583.026 Td -/F1.0 10.5 Tf -<54686572652077617320616e206572726f72207768696c6520747279696e6720746f206c697374656e20666f7220696e636f6d696e6720636f6e6e656374696f6e732062656361757365206f6620> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.6522 Tw - -BT -447.7695 583.026 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.6522 Tw - -BT -489.7695 583.026 Td -/F1.0 10.5 Tf -<2e205468652074657374206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 567.246 Td -/F1.0 10.5 Tf -[<696e666f726d65642061626f757420746865206661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -257.1583 567.246 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -325.4083 567.246 Td -/F1.0 10.5 Tf -<20415350207769746820706f72746e756d626572203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -448.5418 567.246 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -469.5418 567.246 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.8786 Tw - -BT -48.24 541.65 Td -/F8.0 10.5 Tf -<676574736f636b6e616d6528292073797374656d2063616c6c206661696c6564206f6e207468652073657276657220736f636b6574207768656e20747279696e6720746f206f70656e20746865206c697374656e20706f72743a> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 528.705 Td -/F8.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.0745 Tw - -BT -48.24 502.521 Td -/F1.0 10.5 Tf -<54686572652077617320616e206572726f72207768696c6520747279696e6720746f206c697374656e206f6e207468652073706563696669656420706f72742062656361757365206f6620> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.0745 Tw - -BT -443.5024 502.521 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.0745 Tw - -BT -485.5024 502.521 Td -/F1.0 10.5 Tf -<2e205468652074657374206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 486.741 Td -/F1.0 10.5 Tf -[<696e666f726d65642061626f757420746865206661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -257.1583 486.741 Td -/F4.0 10.5 Tf -<4c697374656e5f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -325.4083 486.741 Td -/F1.0 10.5 Tf -<20415350207769746820706f72746e756d626572203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -448.5418 486.741 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -469.5418 486.741 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 461.145 Td -/F8.0 10.5 Tf -<43616e6e6f74206f70656e20736f636b6574207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.3571 Tw - -BT -48.24 434.961 Td -/F1.0 10.5 Tf -[<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67206120736f636b> 20.0195 <657420666f72206120636f6e6e656374696f6e2062656361757365206f6620>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.3571 Tw - -BT -442.6547 434.961 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.3571 Tw - -BT -484.6547 434.961 Td -/F1.0 10.5 Tf -<2e205468652074657374206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 419.181 Td -/F1.0 10.5 Tf -[<696e666f726d65642061626f757420746865206661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -257.1583 419.181 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -330.6583 419.181 Td -/F1.0 10.5 Tf -<20415350207769746820636c69656e745f6964203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -434.7658 419.181 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -455.7658 419.181 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 393.585 Td -/F8.0 10.5 Tf -<536574736f636b6f7074206661696c6564207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.3571 Tw - -BT -48.24 367.401 Td -/F1.0 10.5 Tf -[<54686572652077617320616e206572726f72207768696c6520616c6c6f636174696e67206120736f636b> 20.0195 <657420666f72206120636f6e6e656374696f6e2062656361757365206f6620>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.3571 Tw - -BT -442.6547 367.401 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.3571 Tw - -BT -484.6547 367.401 Td -/F1.0 10.5 Tf -<2e205468652074657374206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 351.621 Td -/F1.0 10.5 Tf -[<696e666f726d65642061626f757420746865206661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -257.1583 351.621 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -330.6583 351.621 Td -/F1.0 10.5 Tf -<20415350207769746820636c69656e745f6964203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -434.7658 351.621 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -455.7658 351.621 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 326.025 Td -/F8.0 10.5 Tf -<43616e6e6f742062696e6420746f20706f7274207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1265 Tw - -BT -48.24 299.841 Td -/F1.0 10.5 Tf -[<54686572652077617320616e206572726f72207768696c652062696e64696e6720746f207468652072657175657374656420706f727420746f2074686520736f636b> 20.0195 <65742062656361757365206f6620>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.1265 Tw - -BT -449.3466 299.841 Td -/F4.0 10.5 Tf -<3c726561736f6e3e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1265 Tw - -BT -491.3466 299.841 Td -/F1.0 10.5 Tf -<2e205468652074657374206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 284.061 Td -/F1.0 10.5 Tf -[<696e666f726d65642061626f757420746865206661696c7572652062> 20.0195 <7920726563656976696e67206120>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -257.1583 284.061 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -330.6583 284.061 Td -/F1.0 10.5 Tf -<20415350207769746820636c69656e745f6964203d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -434.7658 284.061 Td -/F5.0 10.5 Tf -<222d3122> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -455.7658 284.061 Td -/F1.0 10.5 Tf -<2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.4269 Tw - -BT -48.24 258.465 Td -/F8.0 10.5 Tf -<636f6e6e65637428292072657475726e6564206572726f7220636f6465204541444452494e5553452e205065726861707320746869732069732061206b65726e656c206275672e20547279696e6720746f20636f6e6e656374> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 245.52 Td -/F8.0 10.5 Tf -<616761696e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.7008 Tw - -BT -48.24 219.336 Td -/F1.0 10.5 Tf -<49662074686520636f6e6e6563742073797374656d2063616c6c206661696c732062656361757365206f662074686520606164647265737320697320616c726561647920696e2075736527206572726f722c20746865207465737420706f7274> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 203.556 Td -/F1.0 10.5 Tf -[<6175746f6d61746963616c6c7920646f6573203136207265747279> 89.8438 <2e204d65616e7768696c652074686973207761726e696e67206973206c6f676765642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 177.96 Td -/F8.0 10.5 Tf -<43616e6e6f7420636f6e6e65637420746f20736572766572207768656e20747279696e6720746f206f70656e20636c69656e7420636f6e6e656374696f6e3a203c726561736f6e3e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1373 Tw - -BT -48.24 151.776 Td -/F1.0 10.5 Tf -[<54686520436f6e6e656374206f706572> 20.0195 <6174696f6e206661696c65643b206c6f6f6b20666f722074686520726561736f6e2061626f76652074686973206d65737361676520696e20746865206c6f672e204120>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.1373 Tw - -BT -473.54 151.776 Td -/F4.0 10.5 Tf -<436f6e6e6563745f726573756c74> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1373 Tw - -BT -547.04 151.776 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 135.996 Td -/F1.0 10.5 Tf -<7769746820> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -73.7025 135.996 Td -/F4.0 10.5 Tf -<636c69656e745f6964203d202d31> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -147.2025 135.996 Td -/F1.0 10.5 Tf -<2077696c6c2062652072657475726e656420746f2074686520746573742e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 110.4 Td -/F8.0 10.5 Tf -<41627374726163745f536f636b65743a3a72656d6f76655f636c69656e743a203c636c69656e745f69643e2069732074686520736572766572206c697374656e696e6720706f72742c2063616e206e6f742062652072656d6f76656421> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5293 Tw - -BT -48.24 84.216 Td -/F1.0 10.5 Tf -<5468652073706563696669656420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.5293 Tw - -BT -120.0212 84.216 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5293 Tw - -BT -167.2712 84.216 Td -/F1.0 10.5 Tf -<20696e2074686520436c6f7365204153502062656c6f6e677320746f2074686520736572766572206c697374656e696e6720706f72742e2057726f6e6720> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.5293 Tw - -BT -487.4562 84.216 Td -/F4.0 10.5 Tf -<636c69656e745f6964> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.5293 Tw - -BT -534.7062 84.216 Td -/F1.0 10.5 Tf -<206973> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 68.436 Td -/F1.0 10.5 Tf -<7370656369666965642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.978 14.388 Td -/F1.0 9 Tf -<3131> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -90 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 89 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F8.0 76 0 R -/F1.0 8 0 R -/F4.0 39 0 R -/F5.0 43 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> ->> -endobj -91 0 obj -<< /Length 8785 ->> -stream -q -/DeviceRGB cs -0.6941 0.1294 0.2745 scn -/DeviceRGB CS -0.6941 0.1294 0.2745 SCN - -BT -48.24 796.86 Td -/F8.0 10.5 Tf -<436c69656e74203c636c69656e745f69643e20686173206e6f74206265656e2072656d6f7665642c2070726f6772616d6d696e67206572726f72> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 770.676 Td -/F1.0 10.5 Tf -<506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e6720706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 745.08 Td -/F8.0 10.5 Tf -<5761726e696e673a207261636520636f6e646974696f6e207768696c652073657474696e672063757272656e7420636c69656e74206f626a65637420706f696e746572> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -399.99 745.08 Td -/F4.0 10.5 Tf -<60> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.4662 Tw - -BT -48.24 718.896 Td -/F1.0 10.5 Tf -[<546865726520617265206d756c7469706c6520696e7374616e636573206f662074686520706f72742072756e6e696e6720747279696e6720746f20616363657373206120636f6d6d6f6e207265736f7572636520636f6e63757272656e746c79> 89.8438 <2e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 703.116 Td -/F1.0 10.5 Tf -[<54686973206d61> 20.0195 <792063617573652070726f626c656d2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 677.52 Td -/F8.0 10.5 Tf -<436f6e6e656374696f6e2066726f6d20636c69656e74203c636c69656e745f69643e2069732072656675736564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 651.336 Td -/F1.0 10.5 Tf -<54686520636f6e6e656374696f6e2066726f6d206120636c69656e74206973207265667573656420696e20746865207365727665722e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 625.74 Td -/F8.0 10.5 Tf -<436f6e6e656374696f6e20746f207365727665722069732072656675736564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 599.556 Td -/F1.0 10.5 Tf -[<54686520636f6e6e656374696f6e2066726f6d2074686520636c69656e7420697320726566757365642062> 20.0195 <7920746865207365727665722e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 573.96 Td -/F8.0 10.5 Tf -<53657276657220646964206e6f742073656e6420612073657373696f6e204944> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 547.776 Td -/F1.0 10.5 Tf -[<54686520636f6e6e656374696f6e2066726f6d2074686520636c69656e7420697320726566757365642062> 20.0195 <7920746865207365727665722e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 522.18 Td -/F8.0 10.5 Tf -<566572696669636174696f6e206661696c6564> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 495.996 Td -/F1.0 10.5 Tf -<54686520766572696669636174696f6e206f6620746865206f746865722073696465206973206661696c65642e2054686520636f6e6e656374696f6e2077696c6c206265207368757420646f776e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 470.4 Td -/F8.0 10.5 Tf -<53534c206f626a656374206e6f7420666f756e6420666f7220636c69656e74203c636c69656e745f69643e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 444.216 Td -/F1.0 10.5 Tf -<506c656173652073656e64206120627567207265706f727420696e636c7564696e67206c6f672066696c65732070726f6475636564207769746820616c6c20646562756767696e6720706f73736962696c6974696573207475726e6564206f6e2e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 418.62 Td -/F8.0 10.5 Tf -<53534c5f536f636b65743a3a726563656976655f6d6573736167655f6f6e5f66643a2053534c20636f6e6e656374696f6e2077617320696e74657272757074656420627920746865206f746865722073696465> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.7244 Tw - -BT -48.24 392.436 Td -/F1.0 10.5 Tf -<54686520544c532f53534c20636f6e6e656374696f6e20686173206265656e20636c6f7365642e204966207468652070726f746f636f6c2076657273696f6e2069732053534c20332e30206f7220544c5320312e302c2074686973207761726e696e67> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.1929 Tw - -BT -48.24 376.656 Td -/F1.0 10.5 Tf -<61707065617273206f6e6c79206966206120636c6f7375726520616c65727420686173206f6363757272656420696e207468652070726f746f636f6c2c20692e652eca69662074686520636f6e6e656374696f6e20686173206265656e20636c6f736564> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.1041 Tw - -BT -48.24 360.876 Td -/F1.0 10.5 Tf -[<636c65616e6c79> 89.8438 <2e204e6f7465207468617420696e2074686973206361736520697420646f6573206e6f74206e65636573736172696c7920696e64696361746520746861742074686520756e6465726c79696e67207472> 20.0195 <616e73706f727420686173206265656e>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 345.096 Td -/F1.0 10.5 Tf -<636c6f7365642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 319.5 Td -/F8.0 10.5 Tf -<53534c5f536f636b65743a3a73656e645f6d6573736167655f6f6e5f66643a2053534c20636f6e6e656374696f6e2077617320696e74657272757074656420627920746865206f746865722073696465> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 293.316 Td -/F1.0 10.5 Tf -<5365652061626f76652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 267.72 Td -/F8.0 10.5 Tf -<4f74686572207369646520646f6573206e6f7420686176652063657274696669636174652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 241.536 Td -/F1.0 10.5 Tf -<546865206f746865722073696465206f66207468652053534c20636f6e6e656374696f6e20646f6573206e6f74206861766520612063657274696669636174652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -10.505 Tw - -BT -48.24 215.94 Td -/F8.0 10.5 Tf -<536f6c61726973207061746368657320746f2070726f766964652072616e646f6d2067656e65726174696f6e206465766963657320617265206e6f7420696e7374616c6c65642e20536565> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -2.105 Tw - -BT -48.24 202.995 Td -/F8.0 10.5 Tf -<687474703a2f2f7777772e6f70656e73736c2e6f72672f> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -2.105 Tw - -BT -168.99 202.995 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -2.105 Tw - -BT -168.99 202.995 Td -/F8.0 10.5 Tf -<737570706f72742f> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -2.105 Tw - -BT -210.99 202.995 Td -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -2.105 Tw - -BT -210.99 202.995 Td -/F8.0 10.5 Tf -<6661712e68746d6c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.105 Tw - -BT -252.99 202.995 Td -/F8.0 10.5 Tf -<202257687920646f2049206765742061272750524e47206e6f742073656564656422206572726f72206d6573736167653f222041> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 190.05 Td -/F8.0 10.5 Tf -<776f726b61726f756e642077696c6c20626520757365642e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.3944 Tw - -BT -48.24 163.866 Td -/F1.0 10.5 Tf -[<536f6c61726973207061746368657320746f2070726f766964652072> 20.0195 <616e646f6d2067656e6572> 20.0195 <6174696f6e206465766963657320617265206e6f7420696e7374616c6c65642e204120776f726b61726f756e642077696c6c2062652075736564>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 148.086 Td -/F1.0 10.5 Tf -<746f2073656564207468652050524e472e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -48.24 122.49 Td -/F8.0 10.5 Tf -<50726976617465206b657920646f6573206e6f74206d6174636820746865206365727469666963617465207075626c6963206b6579> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -326.49 122.49 Td -/F4.0 10.5 Tf -<60> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 96.306 Td -/F1.0 10.5 Tf -[<5468652070726976617465206b> 20.0195 <65792073706563696669656420666f7220746865207465737420706f727420646f6573206e6f74206d61746368207769746820746865207075626c6963206b> 20.0195 <6579> 89.8438 <2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<3132> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -92 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 91 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F8.0 76 0 R -/F1.0 8 0 R -/F4.0 39 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> -/Annots [93 0 R 94 0 R 95 0 R 96 0 R 97 0 R] ->> -endobj -93 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org/support/faq.html) ->> -/Subtype /Link -/Rect [48.24 201.525 168.99 212.025] -/Type /Annot ->> -endobj -94 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org/support/faq.html) ->> -/Subtype /Link -/Rect [168.99 201.525 168.99 212.025] -/Type /Annot ->> -endobj -95 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org/support/faq.html) ->> -/Subtype /Link -/Rect [168.99 201.525 210.99 212.025] -/Type /Annot ->> -endobj -96 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org/support/faq.html) ->> -/Subtype /Link -/Rect [210.99 201.525 210.99 212.025] -/Type /Annot ->> -endobj -97 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org/support/faq.html) ->> -/Subtype /Link -/Rect [210.99 201.525 252.99 212.025] -/Type /Annot ->> -endobj -98 0 obj -<< /Length 10709 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 777.054 Td -/F2.0 27 Tf -<4578616d706c6573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 730.074 Td -/F2.0 22 Tf -[<436f6e6669677572> 20.0195 <6174696f6e2046696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 700.886 Td -/F1.0 10.5 Tf -[<416e206578616d706c652052> 20.0195 <544520636f6e6669677572> 20.0195 <6174696f6e2066696c6520697320696e636c7564656420696e20746865202764656d6f27206469726563746f7279206f6620746865207465737420706f72742072656c656173652e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 656.774 Td -/F2.0 22 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8756 Tw - -BT -48.24 627.586 Td -/F1.0 10.5 Tf -[<496e20746869732073656374696f6e20746865206d6f737420696d706f7274616e7420706172> 20.0195 <616d657465727320617265206c697374656420696e2074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8756 Tw - -BT -370.5295 627.586 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8756 Tw - -BT -412.2668 627.586 Td -/F1.0 10.5 Tf -<2e2054686520666f6c6c6f77696e6720676976657320736f6d65> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 611.806 Td -/F1.0 10.5 Tf -<64657461696c2061626f7574207468656d3a> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 584.026 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 586.21 Td -/F4.0 10.5 Tf -<4f50454e53534c5f444952203d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5612 Tw - -BT -66.24 560.026 Td -/F1.0 10.5 Tf -[<53706563696669657320746865204f70656e53534c20696e7374616c6c6174696f6e206469726563746f7279> 89.8438 <2e2049742068617320746f20636f6e7461696e2074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5612 Tw - -BT -396.2725 560.026 Td -/F3.0 10.5 Tf -<6c69622f6c696273736c2e61> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5612 Tw - -BT -445.486 560.026 Td -/F1.0 10.5 Tf -<2066696c6520616e642074686520696e636c756465> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -4.0604 Tw - -BT -66.24 544.246 Td -/F1.0 10.5 Tf -[<6469726563746f7279> 89.8438 <2e204974206973206e6f74206e6565646564206966204f70656e53534c20697320696e7374616c6c65642062> 20.0195 <7920726f6f7420696e207468652064656661756c74206c6f636174696f6e2e204974206973>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.6043 Tw - -BT -66.24 528.466 Td -/F1.0 10.5 Tf -[<7265636f6d6d656e64656420746f206368616e67652074686520616c72656164792d70726573656e74204f50454e53534c5f44495220656e747279> 89.8438 <2c20776869636820697320696e636c756465642062> 20.0195 <7920746865>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 512.686 Td -/F3.0 10.5 Tf -[<4d616b> 20.0195 <6566696c65>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -107.9773 512.686 Td -/F1.0 10.5 Tf -[<2067656e6572> 20.0195 <6174696f6e2070726f636573732e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 484.906 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 487.09 Td -/F4.0 10.5 Tf -<435050464c414753203d202d442428504c4154464f524d29202d4924285454434e335f444952292f696e636c756465202d4441535f5553455f53534c2d4924284f50454e53534c5f444952292f696e636c756465> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.0314 Tw - -BT -66.24 460.906 Td -/F1.0 10.5 Tf -<54686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -1.0314 Tw - -BT -88.6914 460.906 Td -/F4.0 10.5 Tf -<4441535f5553455f53534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.0314 Tw - -BT -146.4414 460.906 Td -/F1.0 10.5 Tf -<2073776974636820616374697661746573207468652053534c2d737065636966696320636f646520696e20746865207465737420706f72742e2049662074686520737769746368206973206d697373696e672c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -1.079 Tw - -BT -66.24 445.126 Td -/F1.0 10.5 Tf -[<53534c2066756e6374696f6e616c6974792077696c6c206e6f7420626520617661696c61626c652c20616e6420746865207465737420706f72742077696c6c2067656e6572> 20.0195 <6174652064796e616d696320746573742063617365206572726f72>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 429.346 Td -/F1.0 10.5 Tf -[<7768656e20636f6e6e656374696e67206f72206c697374656e696e67207769746820706172> 20.0195 <616d6574657220696e636c7564696e6720>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -345.4978 429.346 Td -/F4.0 10.5 Tf -<7573655f73736c3d74727565> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -408.4978 429.346 Td -/F1.0 10.5 Tf -<2073657474696e672e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.53 Tw - -BT -66.24 401.566 Td -/F1.0 10.5 Tf -<5468697320> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -2.53 Tw - -BT -92.6575 401.566 Td -/F4.0 10.5 Tf -<2d4924284f50454e53534c5f444952292f696e636c756465> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -2.53 Tw - -BT -218.6575 401.566 Td -/F1.0 10.5 Tf -<207377697463682074656c6c732074686520432b2b20636f6d70696c657220776865726520746f206c6f6f6b20666f7220746865204f70656e53534c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 385.786 Td -/F1.0 10.5 Tf -[<6865616465722066696c65732e204974206973206e6f74206e6565646564206966204f70656e53534c20697320696e7374616c6c65642062> 20.0195 <7920726f6f7420696e207468652064656661756c74206c6f636174696f6e2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 358.006 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 360.19 Td -/F4.0 10.5 Tf -<5454434e335f4d4f44554c4553203d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 334.006 Td -/F1.0 10.5 Tf -[<546865206c697374206f66205454> 20.0195 <434e2d33206d6f64756c6573206e65656465642e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 306.226 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 308.41 Td -/F4.0 10.5 Tf -<555345525f534f5552434553203d> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -66.24 282.226 Td -/F1.0 10.5 Tf -<546865206c697374206f66206f746865722065787465726e616c20432b2b20736f757263652066696c65732e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -56.8805 254.446 Td -/F1.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -66.24 256.63 Td -/F4.0 10.5 Tf -<2428544152474554293a2024284f424a4543545329> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -74.954 236.446 Td -/F1.1 10.5 Tf -<21> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -84.24 238.63 Td -/F4.0 10.5 Tf -<2428435858292024284c44464c41475329202d6f2024402024284f424a4543545329202d4c24285454434e335f444952292f6c6962202d6c24285454434e335f4c494229205c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - --0.5 Tc -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -74.954 218.446 Td -/F1.1 10.5 Tf -<21> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn - -0.0 Tc -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -84.24 220.63 Td -/F4.0 10.5 Tf -<2d4c24284f50454e53534c5f444952292f6c696220> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -194.49 220.63 Td -/F7.0 10.5 Tf - Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -199.446 220.63 Td -/F4.0 10.5 Tf -<6c73736c202d6c63727970746f2024282428504c4154464f524d295f4c49425329> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5252 Tw - -BT -84.24 194.446 Td -/F1.0 10.5 Tf -<54686520> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.5252 Tw - -BT -106.1852 194.446 Td -/F7.0 10.5 Tf - Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.5252 Tw - -BT -111.1412 194.446 Td -/F4.0 10.5 Tf -<4c24284f50454e53534c5f444952292f6c6962> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5252 Tw - -BT -210.8912 194.446 Td -/F1.0 10.5 Tf -<20616e6420> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.5252 Tw - -BT -236.4906 194.446 Td -/F7.0 10.5 Tf - Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -0.5252 Tw - -BT -241.4466 194.446 Td -/F4.0 10.5 Tf -<6c73736c> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5252 Tw - -BT -262.4466 194.446 Td -/F1.0 10.5 Tf -[<20706172> 20.0195 <616d657465722074656c6c7320746865206c696e6b> 20.0195 <657220746f207573652074686520>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5252 Tw - -BT -450.2926 194.446 Td -/F3.0 10.5 Tf -<6c696273736c2e61> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.5252 Tw - -BT -484.1971 194.446 Td -/F1.0 10.5 Tf -<20636f6d70696c656420696e> Tj -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -84.24 178.666 Td -/F1.0 10.5 Tf -<74686520> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.6941 0.1294 0.2745 scn -0.6941 0.1294 0.2745 SCN - -BT -102.93 178.666 Td -/F4.0 10.5 Tf -<24284f50454e53534c5f444952292f6c6962> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -197.43 178.666 Td -/F1.0 10.5 Tf -[<206469726563746f7279> 89.8438 <2e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 123.214 Td -/F2.0 27 Tf -[<54> 29.7852 <65726d696e6f6c6f6779>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 92.566 Td -/F1.0 10.5 Tf -<4e6f6e652e> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp1 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -535.978 14.388 Td -/F1.0 9 Tf -<3133> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -99 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 98 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R -/F3.0 19 0 R -/F4.0 39 0 R -/F1.1 103 0 R -/F7.0 57 0 R ->> -/XObject << /Stamp1 177 0 R ->> ->> ->> -endobj -100 0 obj -[99 0 R /XYZ 0 841.89 null] -endobj -101 0 obj -[99 0 R /XYZ 0 758.37 null] -endobj -102 0 obj -[99 0 R /XYZ 0 685.07 null] -endobj -103 0 obj -<< /Type /Font -/BaseFont /427dad+NotoSerif -/Subtype /TrueType -/FontDescriptor 246 0 R -/FirstChar 32 -/LastChar 255 -/Widths 248 0 R -/ToUnicode 247 0 R ->> -endobj -104 0 obj -[99 0 R /XYZ 0 156.85 null] -endobj -105 0 obj -<< /Length 4437 ->> -stream -q -/DeviceRGB cs -0.2 0.2 0.2 scn -/DeviceRGB CS -0.2 0.2 0.2 SCN - -BT -48.24 777.054 Td -/F2.0 27 Tf -<416262726576696174696f6e73> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 746.406 Td -/F2.0 10.5 Tf -<415350> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 727.626 Td -/F1.0 10.5 Tf -[<4162737472> 20.0195 <6163742053657276696365205072696d6974697665>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 699.846 Td -/F2.0 10.5 Tf -<495554> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 681.066 Td -/F1.0 10.5 Tf -[<496d706c656d656e746174696f6e20556e6465722054> 29.7852 <65737420284854545020312e3120736572766572206f7220636c69656e7429>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 653.286 Td -/F2.0 10.5 Tf -[<52> 20.0195 <5445>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 634.506 Td -/F1.0 10.5 Tf -<52756e2d54696d6520456e7669726f6e6d656e74> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 606.726 Td -/F2.0 10.5 Tf -<48545450> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 587.946 Td -/F1.0 10.5 Tf -[<487970657274657874205472> 20.0195 <616e736665722050726f746f636f6c>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 560.166 Td -/F2.0 10.5 Tf -<535554> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 541.386 Td -/F1.0 10.5 Tf -[<53> 20.0195 <797374656d20556e6465722054> 29.7852 <657374>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 513.606 Td -/F2.0 10.5 Tf -<53534c> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 494.826 Td -/F1.0 10.5 Tf -[<53656375726520536f636b> 20.0195 <657473204c61> 20.0195 <796572>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 467.046 Td -/F2.0 10.5 Tf -[<5454> 20.0195 <434e2d33>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -63.24 448.266 Td -/F1.0 10.5 Tf -[<54> 29.7852 <657374696e6720616e642054> 29.7852 <65737420436f6e74726f6c204e6f746174696f6e2076657273696f6e2033>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 398.814 Td -/F2.0 27 Tf -<5265666572656e636573> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -0.8862 Tw - -BT -48.24 368.166 Td -/F1.0 10.5 Tf -[<5b315d204554534920455320323031203837332d312076332e312e312028323030352d3036295468652054> 29.7852 <657374696e6720616e642054> 29.7852 <65737420436f6e74726f6c204e6f746174696f6e2076657273696f6e20333b205061727420313a20436f7265>] TJ -ET - - -0.0 Tw -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 352.386 Td -/F1.0 10.5 Tf -<4c616e6775616765> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 324.606 Td -/F1.0 10.5 Tf -[<5b325d20544954> 60.0586 <414e2055736572204775696465>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 296.826 Td -/F1.0 10.5 Tf -[<5b335d20485454506d73675f434e4c3131333331322054> 29.7852 <65737420506f727420666f72205454> 20.0195 <434e2d332054> 29.7852 <6f6f6c736574207769746820544954> 60.0586 <414e2c2046756e6374696f6e616c2053706563696669636174696f6e>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 269.046 Td -/F1.0 10.5 Tf -<5b345d20> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -64.368 269.046 Td -/F1.0 10.5 Tf -<5246432032363136> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 253.266 Td -/F1.0 10.5 Tf -[<487970657274657874205472> 20.0195 <616e736665722050726f746f636f6c20d020485454502f312e31>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 225.486 Td -/F1.0 10.5 Tf -<5b355d204f70656e53534c20746f6f6c6b6974> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -48.24 209.706 Td -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -0.2588 0.5451 0.7922 scn -0.2588 0.5451 0.7922 SCN - -BT -48.24 209.706 Td -/F1.0 10.5 Tf -[<687474703a2f2f777777> 69.8242 <2e6f70656e73736c2e6f7267>] TJ -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -q -0.0 0.0 0.0 scn -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -/Stamp2 Do -0.2 0.2 0.2 scn -0.2 0.2 0.2 SCN - -BT -49.24 14.388 Td -/F1.0 9 Tf -<3134> Tj -ET - -0.0 0.0 0.0 SCN -0.0 0.0 0.0 scn -Q -Q - -endstream -endobj -106 0 obj -<< /Type /Page -/Parent 3 0 R -/MediaBox [0 0 595.28 841.89] -/CropBox [0 0 595.28 841.89] -/BleedBox [0 0 595.28 841.89] -/TrimBox [0 0 595.28 841.89] -/ArtBox [0 0 595.28 841.89] -/Contents 105 0 R -/Resources << /ProcSet [/PDF /Text /ImageB /ImageC /ImageI] -/Font << /F2.0 17 0 R -/F1.0 8 0 R ->> -/XObject << /Stamp2 178 0 R ->> ->> -/Annots [113 0 R 116 0 R] ->> -endobj -107 0 obj -[106 0 R /XYZ 0 841.89 null] -endobj -108 0 obj -[106 0 R /XYZ 0 432.45 null] -endobj -109 0 obj -[106 0 R /XYZ 0 380.13 null] -endobj -110 0 obj -[106 0 R /XYZ 0 336.57 null] -endobj -111 0 obj -[106 0 R /XYZ 0 308.79 null] -endobj -112 0 obj -[106 0 R /XYZ 0 281.01 null] -endobj -113 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.ietf.org/rfc/rfc2616.txt) ->> -/Subtype /Link -/Rect [64.368 265.98 110.064 280.26] -/Type /Annot ->> -endobj -114 0 obj -[106 0 R /XYZ 0 237.45 null] -endobj -115 0 obj -<< /Limits [(_closing_connections) (_overview)] -/Names [(_closing_connections) 63 0 R (_configuration) 38 0 R (_configuration_file) 101 0 R (_connecting_to_a_server) 54 0 R (_error_messages) 75 0 R (_examples) 100 0 R (_fundamental_concepts) 27 0 R (_how_to_read_this_document) 18 0 R (_installation) 34 0 R (_migrating_test_suite_using_r1x) 71 0 R (_overview) 31 0 R] ->> -endobj -116 0 obj -<< /Border [0 0 0] -/A << /Type /Action -/S /URI -/URI (http://www.openssl.org) ->> -/Subtype /Link -/Rect [48.24 206.64 163.6788 220.92] -/Type /Annot ->> -endobj -117 0 obj -<< /Border [0 0 0] -/Dest (_about_this_document) -/Subtype /Link -/Rect [48.24 748.79 156.6105 763.07] -/Type /Annot ->> -endobj -118 0 obj -<< /Border [0 0 0] -/Dest (_about_this_document) -/Subtype /Link -/Rect [541.1705 748.79 547.04 763.07] -/Type /Annot ->> -endobj -119 0 obj -<< /Border [0 0 0] -/Dest (_how_to_read_this_document) -/Subtype /Link -/Rect [60.24 730.31 201.801 744.59] -/Type /Annot ->> -endobj -120 0 obj -<< /Border [0 0 0] -/Dest (_how_to_read_this_document) -/Subtype /Link -/Rect [541.1705 730.31 547.04 744.59] -/Type /Annot ->> -endobj -121 0 obj -<< /Border [0 0 0] -/Dest (_prerequisite_knowledge) -/Subtype /Link -/Rect [60.24 711.83 180.066 726.11] -/Type /Annot ->> -endobj -122 0 obj -<< /Border [0 0 0] -/Dest (_prerequisite_knowledge) -/Subtype /Link -/Rect [541.1705 711.83 547.04 726.11] -/Type /Annot ->> -endobj -123 0 obj -<< /Border [0 0 0] -/Dest (_system_requirements) -/Subtype /Link -/Rect [48.24 693.35 156.5683 707.63] -/Type /Annot ->> -endobj -124 0 obj -<< /Border [0 0 0] -/Dest (_system_requirements) -/Subtype /Link -/Rect [541.1705 693.35 547.04 707.63] -/Type /Annot ->> -endobj -125 0 obj -<< /Border [0 0 0] -/Dest (_fundamental_concepts) -/Subtype /Link -/Rect [48.24 674.87 162.984 689.15] -/Type /Annot ->> -endobj -126 0 obj -<< /Border [0 0 0] -/Dest (_fundamental_concepts) -/Subtype /Link -/Rect [541.1705 674.87 547.04 689.15] -/Type /Annot ->> -endobj -127 0 obj -<< /Border [0 0 0] -/Dest (_the_test_port) -/Subtype /Link -/Rect [48.24 656.39 113.5838 670.67] -/Type /Annot ->> -endobj -128 0 obj -<< /Border [0 0 0] -/Dest (_the_test_port) -/Subtype /Link -/Rect [541.1705 656.39 547.04 670.67] -/Type /Annot ->> -endobj -129 0 obj -<< /Border [0 0 0] -/Dest (_overview) -/Subtype /Link -/Rect [60.24 637.91 108.7605 652.19] -/Type /Annot ->> -endobj -130 0 obj -<< /Border [0 0 0] -/Dest (_overview) -/Subtype /Link -/Rect [541.1705 637.91 547.04 652.19] -/Type /Annot ->> -endobj -131 0 obj -<< /Border [0 0 0] -/Dest (_installation) -/Subtype /Link -/Rect [60.24 619.43 117.486 633.71] -/Type /Annot ->> -endobj -132 0 obj -<< /Border [0 0 0] -/Dest (_installation) -/Subtype /Link -/Rect [541.1705 619.43 547.04 633.71] -/Type /Annot ->> -endobj -133 0 obj -<< /Border [0 0 0] -/Dest (_configuration) -/Subtype /Link -/Rect [60.24 600.95 129.5503 615.23] -/Type /Annot ->> -endobj -134 0 obj -<< /Border [0 0 0] -/Dest (_configuration) -/Subtype /Link -/Rect [541.1705 600.95 547.04 615.23] -/Type /Annot ->> -endobj -135 0 obj -<< /Border [0 0 0] -/Dest (HTTP_test_port_parameters_in_the_RTE_configuration_file) -/Subtype /Link -/Rect [72.24 582.47 353.5576 596.75] -/Type /Annot ->> -endobj -136 0 obj -<< /Border [0 0 0] -/Dest (HTTP_test_port_parameters_in_the_RTE_configuration_file) -/Subtype /Link -/Rect [541.1705 582.47 547.04 596.75] -/Type /Annot ->> -endobj -137 0 obj -<< /Border [0 0 0] -/Dest (_start_procedure) -/Subtype /Link -/Rect [60.24 563.99 138.6855 578.27] -/Type /Annot ->> -endobj -138 0 obj -<< /Border [0 0 0] -/Dest (_start_procedure) -/Subtype /Link -/Rect [541.1705 563.99 547.04 578.27] -/Type /Annot ->> -endobj -139 0 obj -<< /Border [0 0 0] -/Dest (_ttcn_3_test_executor) -/Subtype /Link -/Rect [72.24 545.51 178.8066 559.79] -/Type /Annot ->> -endobj -140 0 obj -<< /Border [0 0 0] -/Dest (_ttcn_3_test_executor) -/Subtype /Link -/Rect [541.1705 545.51 547.04 559.79] -/Type /Annot ->> -endobj -141 0 obj -<< /Border [0 0 0] -/Dest (_connecting_to_a_server) -/Subtype /Link -/Rect [72.24 527.03 185.2515 541.31] -/Type /Annot ->> -endobj -142 0 obj -<< /Border [0 0 0] -/Dest (_connecting_to_a_server) -/Subtype /Link -/Rect [541.1705 527.03 547.04 541.31] -/Type /Annot ->> -endobj -143 0 obj -<< /Border [0 0 0] -/Dest (_starting_a_server_listening_for_client_connections) -/Subtype /Link -/Rect [72.24 508.55 321.6255 522.83] -/Type /Annot ->> -endobj -144 0 obj -<< /Border [0 0 0] -/Dest (_starting_a_server_listening_for_client_connections) -/Subtype /Link -/Rect [541.1705 508.55 547.04 522.83] -/Type /Annot ->> -endobj -145 0 obj -<< /Border [0 0 0] -/Dest (sending-receiving-http-messages) -/Subtype /Link -/Rect [60.24 490.07 229.8885 504.35] -/Type /Annot ->> -endobj -146 0 obj -<< /Border [0 0 0] -/Dest (sending-receiving-http-messages) -/Subtype /Link -/Rect [541.1705 490.07 547.04 504.35] -/Type /Annot ->> -endobj -147 0 obj -<< /Border [0 0 0] -/Dest (_stop_procedure) -/Subtype /Link -/Rect [60.24 471.59 136.638 485.87] -/Type /Annot ->> -endobj -148 0 obj -<< /Border [0 0 0] -/Dest (_stop_procedure) -/Subtype /Link -/Rect [541.1705 471.59 547.04 485.87] -/Type /Annot ->> -endobj -149 0 obj -<< /Border [0 0 0] -/Dest (_closing_connections) -/Subtype /Link -/Rect [72.24 453.11 172.6515 467.39] -/Type /Annot ->> -endobj -150 0 obj -<< /Border [0 0 0] -/Dest (_closing_connections) -/Subtype /Link -/Rect [541.1705 453.11 547.04 467.39] -/Type /Annot ->> -endobj -151 0 obj -<< /Border [0 0 0] -/Dest (ttcn-3-test-executor-0) -/Subtype /Link -/Rect [72.24 434.63 178.8066 448.91] -/Type /Annot ->> -endobj -152 0 obj -<< /Border [0 0 0] -/Dest (ttcn-3-test-executor-0) -/Subtype /Link -/Rect [541.1705 434.63 547.04 448.91] -/Type /Annot ->> -endobj -153 0 obj -<< /Border [0 0 0] -/Dest (_usage_as_protocol_module) -/Subtype /Link -/Rect [48.24 416.15 175.899 430.43] -/Type /Annot ->> -endobj -154 0 obj -<< /Border [0 0 0] -/Dest (_usage_as_protocol_module) -/Subtype /Link -/Rect [541.1705 416.15 547.04 430.43] -/Type /Annot ->> -endobj -155 0 obj -<< /Border [0 0 0] -/Dest (_usage_with_ipl4_test_port) -/Subtype /Link -/Rect [48.24 397.67 175.0928 411.95] -/Type /Annot ->> -endobj -156 0 obj -<< /Border [0 0 0] -/Dest (_usage_with_ipl4_test_port) -/Subtype /Link -/Rect [541.1705 397.67 547.04 411.95] -/Type /Annot ->> -endobj -157 0 obj -<< /Border [0 0 0] -/Dest (_migrating_test_suite_using_r1x) -/Subtype /Link -/Rect [48.24 379.19 200.0826 393.47] -/Type /Annot ->> -endobj -158 0 obj -<< /Border [0 0 0] -/Dest (_migrating_test_suite_using_r1x) -/Subtype /Link -/Rect [541.1705 379.19 547.04 393.47] -/Type /Annot ->> -endobj -159 0 obj -<< /Border [0 0 0] -/Dest (_error_messages) -/Subtype /Link -/Rect [48.24 360.71 125.226 374.99] -/Type /Annot ->> -endobj -160 0 obj -<< /Border [0 0 0] -/Dest (_error_messages) -/Subtype /Link -/Rect [541.1705 360.71 547.04 374.99] -/Type /Annot ->> -endobj -161 0 obj -<< /Border [0 0 0] -/Dest (_additional_error_messages_in_case_ssl_connections_are_used) -/Subtype /Link -/Rect [60.24 342.23 361.9048 356.51] -/Type /Annot ->> -endobj -162 0 obj -<< /Border [0 0 0] -/Dest (_additional_error_messages_in_case_ssl_connections_are_used) -/Subtype /Link -/Rect [541.1705 342.23 547.04 356.51] -/Type /Annot ->> -endobj -163 0 obj -<< /Border [0 0 0] -/Dest (_warning_messages) -/Subtype /Link -/Rect [48.24 323.75 141.6396 338.03] -/Type /Annot ->> -endobj -164 0 obj -<< /Border [0 0 0] -/Dest (_warning_messages) -/Subtype /Link -/Rect [535.301 323.75 547.04 338.03] -/Type /Annot ->> -endobj -165 0 obj -<< /Border [0 0 0] -/Dest (_examples) -/Subtype /Link -/Rect [48.24 305.27 96.708 319.55] -/Type /Annot ->> -endobj -166 0 obj -<< /Border [0 0 0] -/Dest (_examples) -/Subtype /Link -/Rect [535.301 305.27 547.04 319.55] -/Type /Annot ->> -endobj -167 0 obj -<< /Border [0 0 0] -/Dest (_configuration_file) -/Subtype /Link -/Rect [60.24 286.79 150.6763 301.07] -/Type /Annot ->> -endobj -168 0 obj -<< /Border [0 0 0] -/Dest (_configuration_file) -/Subtype /Link -/Rect [535.301 286.79 547.04 301.07] -/Type /Annot ->> -endobj -169 0 obj -<< /Border [0 0 0] -/Dest (makefile) -/Subtype /Link -/Rect [60.24 268.31 103.6153 282.59] -/Type /Annot ->> -endobj -170 0 obj -<< /Border [0 0 0] -/Dest (makefile) -/Subtype /Link -/Rect [535.301 268.31 547.04 282.59] -/Type /Annot ->> -endobj -171 0 obj -<< /Border [0 0 0] -/Dest (_terminology) -/Subtype /Link -/Rect [48.24 249.83 111.8933 264.11] -/Type /Annot ->> -endobj -172 0 obj -<< /Border [0 0 0] -/Dest (_terminology) -/Subtype /Link -/Rect [535.301 249.83 547.04 264.11] -/Type /Annot ->> -endobj -173 0 obj -<< /Border [0 0 0] -/Dest (_abbreviations) -/Subtype /Link -/Rect [48.24 231.35 119.0205 245.63] -/Type /Annot ->> -endobj -174 0 obj -<< /Border [0 0 0] -/Dest (_abbreviations) -/Subtype /Link -/Rect [535.301 231.35 547.04 245.63] -/Type /Annot ->> -endobj -175 0 obj -<< /Border [0 0 0] -/Dest (_references) -/Subtype /Link -/Rect [48.24 212.87 103.0815 227.15] -/Type /Annot ->> -endobj -176 0 obj -<< /Border [0 0 0] -/Dest (_references) -/Subtype /Link -/Rect [535.301 212.87 547.04 227.15] -/Type /Annot ->> -endobj -177 0 obj -<< /Type /XObject -/Subtype /Form -/BBox [0 0 595.28 841.89] -/Length 162 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -q -0.25 w -/DeviceRGB CS -0.8667 0.8667 0.8667 SCN -48.24 30.0 m -547.04 30.0 l -S -Q -Q - -endstream -endobj -178 0 obj -<< /Type /XObject -/Subtype /Form -/BBox [0 0 595.28 841.89] -/Length 162 ->> -stream -q -/DeviceRGB cs -0.0 0.0 0.0 scn -/DeviceRGB CS -0.0 0.0 0.0 SCN -1 w -0 J -0 j -[] 0 d -q -0.25 w -/DeviceRGB CS -0.8667 0.8667 0.8667 SCN -48.24 30.0 m -547.04 30.0 l -S -Q -Q - -endstream -endobj -179 0 obj -<< /Type /Outlines -/Count 32 -/First 180 0 R -/Last 211 0 R ->> -endobj -180 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 181 0 R -/Dest [7 0 R /XYZ 0 841.89 null] ->> -endobj -181 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 182 0 R -/Prev 180 0 R -/Dest [10 0 R /XYZ 0 841.89 null] ->> -endobj -182 0 obj -<< /Title -/Parent 179 0 R -/Count 2 -/First 183 0 R -/Last 184 0 R -/Next 185 0 R -/Prev 181 0 R -/Dest [12 0 R /XYZ 0 841.89 null] ->> -endobj -183 0 obj -<< /Title -/Parent 182 0 R -/Count 0 -/Next 184 0 R -/Dest [12 0 R /XYZ 0 765.17 null] ->> -endobj -184 0 obj -<< /Title -/Parent 182 0 R -/Count 0 -/Prev 183 0 R -/Dest [12 0 R /XYZ 0 665.75 null] ->> -endobj -185 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 186 0 R -/Prev 182 0 R -/Dest [12 0 R /XYZ 0 582.11 null] ->> -endobj -186 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 187 0 R -/Prev 185 0 R -/Dest [12 0 R /XYZ 0 352.13 null] ->> -endobj -187 0 obj -<< /Title -/Parent 179 0 R -/Count 12 -/First 188 0 R -/Last 197 0 R -/Next 200 0 R -/Prev 186 0 R -/Dest [12 0 R /XYZ 0 247.27 null] ->> -endobj -188 0 obj -<< /Title -/Parent 187 0 R -/Count 0 -/Next 189 0 R -/Dest [12 0 R /XYZ 0 194.95 null] ->> -endobj -189 0 obj -<< /Title -/Parent 187 0 R -/Count 0 -/Next 190 0 R -/Prev 188 0 R -/Dest [33 0 R /XYZ 0 841.89 null] ->> -endobj -190 0 obj -<< /Title -/Parent 187 0 R -/Count 1 -/First 191 0 R -/Last 191 0 R -/Next 192 0 R -/Prev 189 0 R -/Dest [33 0 R /XYZ 0 587.15 null] ->> -endobj -191 0 obj -<< /Title -/Parent 190 0 R -/Count 0 -/Dest [33 0 R /XYZ 0 466.51 null] ->> -endobj -192 0 obj -<< /Title -/Parent 187 0 R -/Count 3 -/First 193 0 R -/Last 195 0 R -/Next 196 0 R -/Prev 190 0 R -/Dest [45 0 R /XYZ 0 268.29 null] ->> -endobj -193 0 obj -<< /Title -/Parent 192 0 R -/Count 0 -/Next 194 0 R -/Dest [45 0 R /XYZ 0 222.77 null] ->> -endobj -194 0 obj -<< /Title -/Parent 192 0 R -/Count 0 -/Next 195 0 R -/Prev 193 0 R -/Dest [52 0 R /XYZ 0 778.86 null] ->> -endobj -195 0 obj -<< /Title -/Parent 192 0 R -/Count 0 -/Prev 194 0 R -/Dest [52 0 R /XYZ 0 489.42 null] ->> -endobj -196 0 obj -<< /Title -/Parent 187 0 R -/Count 0 -/Next 197 0 R -/Prev 192 0 R -/Dest [52 0 R /XYZ 0 160.2 null] ->> -endobj -197 0 obj -<< /Title -/Parent 187 0 R -/Count 2 -/First 198 0 R -/Last 199 0 R -/Prev 196 0 R -/Dest [61 0 R /XYZ 0 425.04 null] ->> -endobj -198 0 obj -<< /Title -/Parent 197 0 R -/Count 0 -/Next 199 0 R -/Dest [61 0 R /XYZ 0 379.52 null] ->> -endobj -199 0 obj -<< /Title -/Parent 197 0 R -/Count 0 -/Prev 198 0 R -/Dest [61 0 R /XYZ 0 133.64 null] ->> -endobj -200 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 201 0 R -/Prev 187 0 R -/Dest [66 0 R /XYZ 0 841.89 null] ->> -endobj -201 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 202 0 R -/Prev 200 0 R -/Dest [66 0 R /XYZ 0 478.95 null] ->> -endobj -202 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 203 0 R -/Prev 201 0 R -/Dest [66 0 R /XYZ 0 330.51 null] ->> -endobj -203 0 obj -<< /Title -/Parent 179 0 R -/Count 1 -/First 204 0 R -/Last 204 0 R -/Next 205 0 R -/Prev 202 0 R -/Dest [74 0 R /XYZ 0 414.54 null] ->> -endobj -204 0 obj -<< /Title -/Parent 203 0 R -/Count 0 -/Dest [82 0 R /XYZ 0 591.96 null] ->> -endobj -205 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 206 0 R -/Prev 203 0 R -/Dest [85 0 R /XYZ 0 348.84 null] ->> -endobj -206 0 obj -<< /Title -/Parent 179 0 R -/Count 2 -/First 207 0 R -/Last 208 0 R -/Next 209 0 R -/Prev 205 0 R -/Dest [99 0 R /XYZ 0 841.89 null] ->> -endobj -207 0 obj -<< /Title -/Parent 206 0 R -/Count 0 -/Next 208 0 R -/Dest [99 0 R /XYZ 0 758.37 null] ->> -endobj -208 0 obj -<< /Title -/Parent 206 0 R -/Count 0 -/Prev 207 0 R -/Dest [99 0 R /XYZ 0 685.07 null] ->> -endobj -209 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 210 0 R -/Prev 206 0 R -/Dest [99 0 R /XYZ 0 156.85 null] ->> -endobj -210 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Next 211 0 R -/Prev 209 0 R -/Dest [106 0 R /XYZ 0 841.89 null] ->> -endobj -211 0 obj -<< /Title -/Parent 179 0 R -/Count 0 -/Prev 210 0 R -/Dest [106 0 R /XYZ 0 432.45 null] ->> -endobj -212 0 obj -<< /Nums [0 << /P (i) ->> 1 << /P (ii) ->> 2 << /P (1) ->> 3 << /P (2) ->> 4 << /P (3) ->> 5 << /P (4) ->> 6 << /P (5) ->> 7 << /P (6) ->> 8 << /P (7) ->> 9 << /P (8) ->> 10 << /P (9) ->> 11 << /P (10) ->> 12 << /P (11) ->> 13 << /P (12) ->> 14 << /P (13) ->> 15 << /P (14) ->>] ->> -endobj -213 0 obj -<< /Length1 13164 -/Length 8335 -/Filter [/FlateDecode] ->> -stream -xz \׵3m$ЊXľͬb5F؀0KlLI8Rn9nu]?YiKI_4yN/_~63# &mo4;3{ιW0BHl&}'3aЉVE&B#?x-L#3MفPZ/>22[_]hAlnf}֣;I̥PF79ε"dFCd-Bvh#'1~0A2'#Q˜XX"JTjVOFc) g-VDYȎΜܼ|WSXT\RZV^QY~6q"~73_-+{*""!ԓž"dR!Y7zzRadzBiK9GɜY*sVy5O]_ߠ ̽<F&J R!Y‘-Ւ=~7?O) o^Pԓ{:־ -V&#d5ee[CEeRBy%_Y\~~Mx'r{.\ee\i' h3HR]y]E/*Gyp;uro>78pG'quEBCiZ]s<7~ `!vd[(G1>ܸ{'Nf$xw4+R&M4]m7*bߡ q(h/>#A(gG] {qgwD=ss_X 62CX0/(bXܞ hTkׅ/ξwv5CJe`upQ"q_{_|Kڶ-㗞􅶶>}雧Z[O B;7x I.E܅enXQVՅ'TX@omjw&_npI^Fʌ 샵 ZɀFGV}o#85KA -&*Yі%6ٔ#cyl?AS ##VZ&Qj5Xm츟Nz<2]՚|׎CgV%m 9yjhdVuU>4q+j,V'7NٖS0zWvGřevV;9U$@xXDIa/GEJzB ɍXeIrqT-Uy#X@TbғIṹrnO[n 7<@qÇs -b]2AxCǭDl*2؄IlŤ$r+eT ]J|:o:qxDAG[E67:ٓIy'ZѰO,\j>zo&- W0ɘGDH+Z ftL3mqV4[% -ۢPZ:aL-mWNiWUε-PU#1?*Ʒ/Ĝ~OS9p_}ʐt[u͠G!n -ߐ{E PsgJ[qJB^WCȷvL*Dqũg/ -/|ӒukO.dgP66CE,}{%aBuv-_lLG,4E|(_Թnv~?'*yg; A/VjFq0wA⃙G]xB(:GAH17Img_p 2e$3:ՠd2lAV);xsӰ|n diVA%׃<u)1 "!&o׿N}{G^qg˟@R~RvJUgn>9IlMO,AN*_Kv];p/yQV3CL(u84Je -&f : ?݇^Ys#(x0agU (}`u9)z&XA(ˍw)"h3"<~sQquϝ qUAxԎ-9F!iiQfVˋش|=Ƣ_~)qhX)Kqn&BcQ} -A3+9"S#Ct6H9:.m\%OSUl=;NgwƩ`긍auPQcu%AԱ{|SU+ܱC<>Ϲϯ9->{_O44uٛZ|`xnj:1h^n}u㧧SP:[AZzQbb!mf^Xr%*, SabT0&az QleV7*]-MZ [gc ?H|=ɤk㣓蛅8X0lzc n06q$)ZBvAA -ۗVjYiٵFTeL ҎBfTO~G':yZTDI_&^rECCo!rR^o|nˊ%67*e$&Aoz.X I \B!ѨBV`eʃmU/\L֎k{ -U@?ֈ4U]Ee?bTj 6nMVȥamA-Qm3[\{.*;8r8;x w3 -z޺P-ry\=- bj.g۱AWo+.:RƊs|ނcrhW"x{cVwbGգ -[Ieu+f:J2vʿd^ c'ǜ)7qL}XTeCgR^>CE]lֲ'_>FkWyù ٛ6o!cl(JMW@/up5"0BnO1Z]MiŐ#_]fqQ$IPu^`ʟ?K SXi7+f&a [}H^|vş|µ%Lu]ybaBFW7>ܛ}gwc5y_Hf|=PW2s ׄ2將,X3;qnx[&JU f!Zmp%`-! ͔dkӓb.KxηXi)PCΪV݄QHvqW6pn9öy6ҙI! wfRh))Ҥz&XΪsW _9_UveiQEF5PΌIrfU҉[tJG鍅);3$-:Θ$EGE϶q`LbA*Eq,;Jw?TYJsji^{ǣ}ّX6NdoJV^VK>[>Ё@ khp{ 5Mrakwt!wx=E[*憠}CQV^?ґ*mn`*@jYϬr" Putա'WŚ4DNOHӈF,w@-)JTd8GG'AS`[~ajv|`ژK͂Xfb#/[|',\{}΁@*Il<`/G\"h97c"7Y@Z #mBioU.4M^ois.|%Pn/mi67ic1^@W$zY[}! -ΥX~-\C0`X׶oʃ+t?7pkJ}~uO\ZmYunH]a]U攇5Kr\˚n1o N9ϙ-0ٽdqR8s8pD!FF)Tnlah,3*'| {ȏfìXpl১@S|?7_@Un[I=#!NJ{L|OL-(=;5uf:? O q}I_&LޒS qa]q5|w - -<$[n)tm(I;,Sr-sNRD`#ƒJa\d - Ԏy99kjg"ÀDSh,O)3h)Se/6Nauela o d|ȐB*8]Silr\fʶ>s-/fit+5N&kX#PPLURye~Uٺ=6,ny}՛gkSrk4YRWڕ 68JYLMroH9NS&SiRfRrlY}qblS^[:<Ql̳u%}E S' -foU,ho(HNtOV:tEjms;QmvLJ2yiv~[a^fUkx]c1*D怍fOP, g~Ȇ*SQ1ke7!lm͵_LJu Xw,IC]3j=@ -? xyZxXQZ_N`Yr'oy6H/$( qfaei ye)@;ì(6UГ VAϯD)nDzYZ. =,8u@y o+ݞHn N t\}*[ZaF?VXQz} ΁^/,mrV(d a_żG ,Y.[pB+)VeZb1E`+V/<!sx!7+K 6Z( %\b -34~cI0:=^G!4{qp?y{ Ⱦ8_7@\f{GL4y#]#B6q"8iT,Dq[?"-;%jL -Aȓ}!?))|FڗaRU- ׉&l,JID[k/4<&>ַ,߽Xqb@,Z s>`}Z_AsҪrLĵr|eGJUQ/A |BIG^r"3Oš.PHipfO3H;[I:91_*Z4Fo_!G w3x E֒Rbz:A]~sF8g9p{x^.)8~%⡈WBpBEd\dvdIdw䅨بڨSQNOJ#<&Uc1H#%:-)viI~#7/!E.Yf,q=J(Z9Gv8%9 8F pcQcd)b.TO}f9y Kٓ嶣z3hs MSW\ Oy9C9 tZϩxڇ@ p}GAB9T=r@8f@Hd0Cf~/G'43 .c-t8|3> xLPoN"v Ll<4ÎqČPfNӧA}^L[A0K?nux>gX@*O15(yΝX3uwiCffdPS0²S |p_ YY"cMfi) -kZpR0aRQV,pm)"φwo/*t"@ ~?H -endstream -endobj -214 0 obj -<< /Type /FontDescriptor -/FontName /b45cdd+NotoSerif -/FontFile2 213 0 R -/FontBBox [-212 -250 1246 1047] -/Flags 6 -/StemV 0 -/ItalicAngle 0.0 -/Ascent 1068 -/Descent -292 -/CapHeight 1462 -/XHeight 1098 ->> -endobj -215 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -216 0 obj -[259 333 408 1000 1000 1000 1000 220 346 346 500 559 250 310 250 288 559 559 559 559 559 559 559 559 559 559 286 286 559 559 559 1000 1000 705 653 613 727 623 589 713 792 367 1000 700 623 937 763 742 604 1000 655 543 612 716 674 1046 1000 625 1000 359 1000 359 1000 458 577 562 613 492 613 535 369 538 634 319 299 584 310 944 645 577 613 613 471 451 352 634 579 861 578 564 511 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 535 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 361 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 259 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 250 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -217 0 obj -<< /Length1 9656 -/Length 6276 -/Filter [/FlateDecode] ->> -stream -xY{tՙwfl˖%H$˲Ӳ,?qǎ-?boBWBHJSYBJ=> -JCr 6fH~3c;_+3#Dȅxhr ?yiMPEKc;=U)61GG(7 go^##~I 8BRoDi`Lt8ݟ߁7`7913k}?xxARDi(]22%,+HuZz2̖|kp^gu@JГLL|e|^ǭwWە -E,0eC-6ٵY*2g9˃_!#D(˧{9~ܹ=tO4e={/BXSB_<2'F0#ivRmVYj+:լSJ?Oz,j. BgvK 8^Dixx,Wo$PhrrV!Z=˳Oyr\FSb5VkuZAG:f7 Nw2*Wtuj65Y~F*Zϩ -m˿:Q=y{tcK]~aٞZejQm].duF 襝FFP<=6>xI֓42z4횅_8B#O]\%:Q<.ҕv"2߼7}ٝ['SV6b@Rl뱖>91 -BBIZ/,E[Rf-٦ ZƯ8U S5qiUJ`i^di* q]kK99v{:gYPZ̚h3"?ovF0.gRX9vV初 qʩ͖+HE­G01ն-ثXX긩b\x?>|C Sg@_jd}>eLFp-RHyp)aɼ3=?`o =9'33׬ǟ?`N;;73zlO|zo!H<)lګk6i@.H5/ y,Łz^9+xg\m(̹9fe> 3O㋌z hcą|BoNJӿA;QR&V,%ٔQ$j)g~+n_%IJ+&DTx~OȭٓY-Qrpw81|$ǬZs$fyxH%x%"N?{,53-ݙ7q1uKyl5LYX(bɷvph7C 9 )lTHH RE]-'lk1.m o޾eb.mbmI)1?GBUErz6*9W93. -|4>Wǜ!c 9R~ևW*Gnɑ]RLFB?os^KQY޴߿/؈WWG -^i]Dg28/w5D5P8\`(aD_Q_X-|ޞ0_—m ҺK AHcG>YrYvwR#-D'H G}( YsԲ\ɦeՐ{̵c>+>MWfgK=&S[vw ej gcc?cC|!8wtÆB<QpCSY8- C l;:[RdB0x$E ~kPVLjG f 㱸H[줌>(ehAw67lG#=Ů/wi}}6ȩ~k=lXZ+^ʉ*s~ 4J3 ղ2ਭ90p& +|l,vdd0IbԐiH&+j { b(~ʩCUJnyE2UQ cWuΨL -@@`exs^Kr:Sp*DyxV;}ę[IK@! I~[#gw|[_etpՙvMaKik3 {,1FgtEͱŮr_xh]-<6jį7myxد -U[ L_&;AQEh+ڞpN"?S] ^t&6LDNRn)>XɐXRy̢R 0]#O>:?ᣗzZη goXS5?7]ϰ7χ~k_/JiEX 4ǘh[\%T^g(9֡fRKE]ph7&o(37L^.ޠPK<KScae,ezى 6opܶ!1x|ɪ5&rf͛˖.m*i1J{x1\)5g-fidp*rfN k*xXb.ΓJ,pN7ϟLTפSȿBK /Gkq󔹓О I& 򀇠݁3EQ^C9օO,ANQi[lPwl:lkkN=P6tqj%E%,|䒁 t|o(9P(ox̼b빪-~҈8W:f:6-]56W81^?TR'j_@ēwt?qkamھW.kh2\Lg8@;jw?ۀ3p+{JO{(Qpv22݃Xk?w0~b2<j<{T/r#OV]z"cZ -E5a.I.6ֳ&O?hJQ@ ~kpB(|$M~ƍp;+2wpW}U.uw>|nƵN9BHx$f<cGێxXܽg~t|Ȧs ;r{rQDPjװy%Gc Bϣ̲BCؙÖmӂmxÆdfdq -IZlcMUÇ~Z*H>Wϰ;{ͳoPbI?2!+^5'DO7(>U$sUo*1})JKn7ON)>mZh)cZr}[HAE"/XPlרc53 Y^E6V ՙO紫r+;joikCS{pKr"k2^=Ҳ;yxȹNCAܕ@gzGFtg0R`4C_x`k_ؽ9@#4ϼ"zVI>HW߾u{¯eڋ|ZɃJcګotZ|ajZm{5qG-'Iy`KҸ|G'(+ҳB-u l'Y?~R̴najugSՆB-ҔSM"if:OѩR j;d6uӌW ]]-ǍK|jjnR{MDgC%r.fr$W43J_F?;X@&w]||^u:b,̦gTsde>:L0-w vH֐Lxj'a;BExuZ6mFUxmmE"S銓ߊ G? kdz1@r_ ^:(}裞9tf^sK).2ͨq쑑j@֐$Kk|dHϐ "M,&Pnbc6wxd&۷' g-ͳ{lriEu_fF^,X1{BA4'ߒ^r8R> -YE8?7GqS(nOⅈ;ƒ"34/H"VnYهZZD̵Fy/ wm ԍ=Y"R@XP>HAzFՠZ:TP#ZP3jA Cى֣ڀFԍ6NR.z}NN*j #+Bt7tQ{I:}$D$Lt -e$BZ\ޘ1I#9)y-@?9Gj$]s.'s'Iz -EIz -'jtr$]zǒT%$驨̾E_Kv&i@Nӑ<IPIuR['&wLnWE]=:tj4&Q4F,;ijL;(0j@h\?̼ 79 -Ah;ӣC0kfup3FPDlRp\71>1cGLJi;0\39.;qOQ*r:)F_99./=7NI,4=yjD[X;˟7:Cӳx=1&r*c&8d n|&:3:gGtdw -E7t;\_GK$5qsLV#v*A^?KV>S:5sXŌ΢X}ˤ:4 Z].}(MxP7!j!d9\6âя%q+']> -endobj -219 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -220 0 obj -[259 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 293 310 1000 288 1000 559 1000 559 559 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 752 1000 667 767 652 621 1000 818 400 1000 733 653 952 788 787 638 1000 707 585 652 747 1000 1066 1000 1000 1000 1000 1000 1000 1000 1000 1000 599 648 526 648 570 407 560 666 352 1000 636 352 985 666 612 645 647 522 487 404 666 605 855 645 579 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -221 0 obj -<< /Length1 6200 -/Length 4041 -/Filter [/FlateDecode] ->> -stream -xX{\w?I< -""B-GU0 !(ERW.ZʵVVjU׮emzWkug&7|ߙߜs|9/*4W!J$f?k{'ZX#|'zj1 Y\4/I7\wZypjo0Ukl=̕7$KXTWSmÃ/>Oo~,'yL$kv>'?  -~j8x'ߵ!`p%xb1Jᆌ Lg \.vT ,LClF`At*90DꯜHdj>&Ψ3j&7VcMV|Z5=^]ݚl)#ڹd /m^0@c$!v&u{ddD&tV2Ӹ3ƒIMٻvz~EKUݸ:9  gCTB&l$oT l!;_\r~|YS%/e OӋ+رz0 =-LΩp)˸$#mZ+B2;2B*cd҈q~Tǎgε~w\ Net .֥dm4{3Q&uS7)BWs^D#fAjT jW+u |,;m'׉Ys:>RqD* _!!DJ^`K2L$5=FxcYA\FjqJb#Q-ӄ_7~Ay>gI 7L^B^A>R3j"-M+/~^n.^]Շh+cmrTJۙ>C=Clܔ$ϯ h{>m‡tl4H7+ӣ[XZ[u~ݶkc[l oj9{L;?+ K̫+8;_pvCQE篽ِF TC4H~IpPJgxxM\cb3B0{H 6#j.^aC]&Qr=AIzC[|2ax4||P1@)6Xbfti\veN s[6U}bGOCȷΪ&0i#&phaNv#p95Jez9ft",/(#kH|~ -꒵mj6LgEm$#f;\;!`{UcXǯ3Ct@:_rٜo{~YE9)+O/_#Ur Hkf_q2pO35)W*"¼DԼ]i/?*>/tN*C\L$ZA;k78RNԇ?oo=F;z/OAWCǔ Io vv/j꜃+s=5}!~N!qnbG.r!8}bz*,K.$G$R+'u3FDDy-kB$-?Iuf=k6 N&[C|ވS}Iz&>/'u7͒-V%d-H͠WLN[ lsojkwܽY"@/ GȘ#[ӊE}FV㹏٢Yɡ&ɽt~)rvی^ǁ\E Q$9aL -LJ$sXyxV/O҈bXyo7#F宋9 ՠ4Ź%ȂQ!Z-ݗ=8^c6Q6ԝEzszZ[Gjiy>~ߣxp[ONX?~IO_{ 7{ G7>7vJ_1w}Fffu \7v Q]d=2ӛ|ZOEy48tH8b'A:2Y) Wڲ-z6)E.q޾ۍ_ihI0 ;$az*te0ww׿M V64]? cH=uCcOn,u+ KGxzJ[bK닦%>r|YybJCӉ KlW k$?=1#cz^qcլ]튳 =VmjilS|o*<2wFbs#_VeG>M2—/Vkv9|tz<~ѵm̶FM.Gҙ͂mzgC]SXy0uTd|r/l,%q_CnŬ<NՓMKUM$=%FMxi 7*qjN_"K.7f,S̴22߰ =D}ݓIJJ, J^y tW"Wӹ:<Jv$K\\뒬uIcxsv͕ʽy\vAM=ɐ T`̀ 90 L0`.jN -8O<㊈xA('hq(g@ -D9Q΢?r=Ѣ02AK!EZ[=2H&rg0L(Q̯DFQQ>BXoQ>&c~= -a|0W!e?C`.{W{n(\naPŌQUHJPejTٖKBKUPP`!FHl ^];+ Ah*%x{FXYlA] 1hvU`]vܕ#( :ʠhfwU2[*JHJ? muۯJPl__UvR]SfbUV$5o0fZ\,^ՂXɛDfjTf\l4WWK穟eBXx8АCjV|L/)(ב{dKMYM尘+x:Y7uU&fUZfs D bUaOmq?CXj+7}0TPU8S<3VjNWd/hKk앺*:b u]ТEbx -yѢEJQ[\fB"OZբuԲ"#Vk+TV*\'XU/c"3QM(b158X$=3sf,Jr O~͂Z{uEnjFR(ދYբj]K}kP2c:V^ -`]p+^i> Zw}{vާyˣG'|j -endstream -endobj -222 0 obj -<< /Type /FontDescriptor -/FontName /7c8351+NotoSerif-Italic -/FontFile2 221 0 R -/FontBBox [-254 -250 1238 1047] -/Flags 70 -/StemV 0 -/ItalicAngle -12.0 -/Ascent 1068 -/Descent -292 -/CapHeight 1462 -/XHeight 1098 ->> -endobj -223 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -224 0 obj -[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 250 288 1000 559 559 559 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 705 1000 626 1000 1000 1000 1000 792 1000 1000 1000 623 937 763 1000 620 1000 1000 543 612 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 458 1000 579 562 486 1000 493 317 556 599 304 1000 568 304 895 599 574 577 1000 467 463 368 599 1000 1000 1000 527 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -225 0 obj -<< /Length1 7108 -/Length 4843 -/Filter [/FlateDecode] ->> -stream -x8 TSW I^1A@I $G% -1D ?ZA*hNJuñngvtTn봝=uc]Xi;ۿ}Aٳp~}!@I$<ַ|ϗNhoㇳq !vhXBQz|tՈ'!\inҊ7-˷o)7mxaB3pC<х (f!H\ӝξ}Os9BfpՓp*Y  $f!= 'AEJ8+cQcM&OH$'%̚6'}H2,Sv<2?L,yt,,*.z|*H%"{~ v*fjخ8`N+>C1C)38b'$dl֤Sy)ۑGMl -0n,cj_5p@8SƮy:P_5F9гFMk0 kLSCY2Q?[s'> h:mBS.8DPۆ|;weœ=W_U,z{MGxEq#+|}<(IqCk)p]V$#1FrdIE 6. σKq[LpfQ|W|>eHDS@,GQ ^"=~|~KC;<E3#*4m4frU.Ã!Z,SUmݴeeeyyv\{c MHDU[" nc6&j^gKƿb j+zP/PPG 1Jb7@fkPf=RѴ硫`MYqn o8.);7^O8N(7S%xNw9|pË2O2 i5s K(]@c*xHxunΟ{b-(1i=0!J4G,0oy{В_W8r3 7. 3v=G}"+GwuA'&C/ӂAdix\haYc yC'd|uWXNSWE{,Ǝj8|5H UФDU)Qks&2T{G"#v*=+~Yxjв{pTHb".=0%%Ɯ3É݊-嵖p{=89BMcʼANwknlws tx̄XG.)`B`)- ` \{SH(9%1iOі8z{Gc(6C]2NϢعOO43,Zx/w/1va;gyznc߹[Pn]/TkzywѭH!ιd u Bb>EjC9TZ%H'KEru]L-67ֿXUύ jCqL.}yYeg7bmy47v7is*׶&t;+3O>v\4 -'qOD`Wvh໋ -i;lÏ@|%{l. BJb>H,?\Ӗj*L^ mFvrw Z'Q&-Ils,;QeEiq{;YDbu{M#J#;9ϳZ{L3a5!Om9ħ<=g&:}9/XSY4؜%0!V2gVmlfmcjL[9!k>˫sYbDiY5GS8Y;ϝV ---%B 4PGl.֚,;~g>Z̚FTəU}eZyNgj҉c~,ObӲe~P{CA >ȩiAwQ~_9<~VۜmN!ܱ҅m|KLI-椞}H\tMC*}b"\xl\93ź!҉q|{DxruU9 Ss;=@n\ 3$;㨨dT8cT[6W6ٷ7פ&fڴGWupU5hEӒZ\k0%U 9f쪅L#)Ņ`ue`_QF+o }d H֒.MO)yWKkDZ?v7BIiX:׷mD$:Fm#+7TnaY 1F 6faR" >y#RC $p8aà27 - n5Yn|ݏ b8iu;r{#eL{`oa~ty7wt26@/G r`Jj#~\"v9i<}SmwR!?}⌰*s+՟9ķl-6Xr-8 GakzRh&6\4͉r[\.!Qb] :?oj4_74MQX`6\ȵD9j¼6UQ#o7Rq,M1$hjBz1-͖BA=--Qd2Ewkj -ifv5$c*jxCTiGIqcT)uX܅c8].15ш̆ՙa6Ghl[gh4DH$LY UÕmaxԋDlgEN%WRTÕa4Aieٌ"Z7\TcQ~7 mtMh"s0Bķ[=UvTgF%w3#:j6o8IӉ!7g_T彡`謎 ^zsh|XXĒ_> -endobj -227 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -228 0 obj -[500 1000 500 1000 500 1000 1000 1000 500 500 1000 1000 500 500 500 500 500 500 1000 500 1000 1000 1000 1000 1000 1000 500 1000 500 500 500 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 1000 500 500 500 500 500 500 500 500 1000 500 500 500 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 1000 500 1000 500 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -229 0 obj -<< /Length1 3844 -/Length 2621 -/Filter [/FlateDecode] ->> -stream -xV{lS?<'!n ^?B$p ^`8kq -l-3eFՉLPu1PסmTiPu$!uebUZ^j^;w~| rh<2ۺy(яMac nj&)ѿ -@x|~y%8x,Oc Ǖ,q - ]]Iw5Vn6c[<0d< -Sf;Bűctv,Zp|c}ٞ9X>ɀ/#w)&-mֺ\( `,*._Dd\ D,ִX49=&cI>y4.\f4)!V+Ӏ*(:0腢 -KXU8zVSX39Eȫ1+22 -ӽazY1_a,,ϽHo ;hm+4;"jhoP fOKύL$odz}4LAT 2KP,BũS!r7ȶ 4o]7 -{g1VbU@Cuxm=B[{5|t˝hĖ@z7ocz\1qUI%dk^p;-'ؽ 'O4SAoReX$6 Ы+g25ŜC31Qfn, :Sm)F.A2h9dS8 (^Z vkS~Rz;csiQjN(4\u.ZH }BmUQ 4H,Ec,`Bpco -Ёn]$~~D}eI޻i7g]- >ӮKd[9I #95d -;Oˤ P(,#MC@ I]Jp:%s%bp%bnH9VDmP6%mARyLoMZ1}6f)D8xܡAa;WAwАIɴTD"M6ڥ,8sr a8ISsRK`(KF8i0aSR#pʮT`FlN21!#\V!^.󌮹$מG$w<1䍱)Sb6w4D6)nfE-s卵\(g2K$Jb@|璝I> Tإ zc $YG&> 350,m]#|2S₡&8Sh^mi!K)X⇑=b†-yoo> -endobj -231 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -232 0 obj -[1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 1000 500 500 500 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 500 500 500 500 500 1000 500 500 1000 1000 500 500 500 500 500 1000 500 500 500 500 1000 1000 1000 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -233 0 obj -<< /Length1 3536 -/Length 2105 -/Filter [/FlateDecode] ->> -stream -xVkh>w%[X~kGRHqpGp}@q(+m##VW+8@k|T; jhr ZKaѱzHGڸVO\:aZhÊ<2Uϔ4+|Y3hdk -Kybsm/a\fVZǠ+]–3sX(;h[CLWIՅh];=:M0b"7'6qꕉH6zXn;;9\Q^g8-t4<%{̱a8?S'v-~ifF+Ջ>+PwovwXK@굫~aVնQ[I8 s٭oF&=Prđ~G-{~;=|So~[CAxzU)zJckt#snk /ҧ&NY{3->p6V Rq-o`=xܖJX[y.rv6{G;k3WU3 wRG}KǮ&B(ۋSb ZE} }R.C##\UcןP?A^]3bzUP3@%Zԑ*Qr-x:N.|>C Uki&^jsu4‡ë^#P_7Wc{>EW47T3jR3o ڱ"y :C:Vl]V]'ݧ(.M_ОLuSSK5lp-A~v쭛s'N]&7R2kG/#p7pdr{ǃv 'rL[-*K^康gMmߦǷH|yPisW@ yq2%1P`iccҵ" -u\ro}vL?aK ߝ~zq$L\EL shq7'u ~`80kbߚ8 Qp1g`/9m,TK&΂0q 4 Vp+OMZ*l&MxjKK]6RSLG&^Nz`?}zv7Mx&^`smp[Χ)M:˜&3Da(PA9 Er yHCRq:)g@F+YoCdn*qJTaVΧ*Rq֬1# j&.D4)A=!vDͪr+R2M -–Ga#> -endobj -235 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -236 0 obj -[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 952 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 665 1000 1000 1000 535 403 1000 1000 354 1000 597 354 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -237 0 obj -<< /Length1 2308 -/Length 1328 -/Filter [/FlateDecode] ->> -stream -xV]lU>wflavf@  tݖf4a;qwK(`d/|MDxS41h@x t=w|=?9{] Pwr""s4M/|;@L1gAl& #۰ q5y Ně $*⃈p<:z$Gb3g_*>،DSGXޙ( ӘY!J 64{yI-HCw(Iti?kD,~OvsPHmW\11/cd렦;r$WNnAHT$ImX]!F)wj&w`TBo%V"-T[.DD'ʂ g/t ^-pQ2dl֓#K~_|"/ rRA/yWan{§dQ4B>n+:󥩉J{n Mv$Slzh0dv@y(L$Tr#v@F;̙phɞJ9I)&1̀pȮ$JXi2A';Εc"̢<0IH_4$tؿ=jSYuQ<*%`tه|̕<6[sMǦo, q|КeԙF9 `֞ƓȻEG^ڝ!ʿ>^=x̷ aho2d@B:56YKF&k04 6/czq~HsMgD7ؚ$m0kVMEg6FY*iS|UTm33~ƣȯfDU?ja;0M,-l":=56aifJ-S!>*EbgU|0Z]E1#5 G -f^;k4gA{Դ5M :~XtTWNY -=?N4xz)J^sq ԏj mVS5Q\pDa4\l_uUj!|Y M74M섇6k؄:;#WE{R$K/.{+wo5kP8Tָ/{P9aVƐŹ kB -I7@y -endstream -endobj -238 0 obj -<< /Type /FontDescriptor -/FontName /ebad8f+mplus-1p-regular -/FontFile2 237 0 R -/FontBBox [-109 -288 1403 1075] -/Flags 4 -/StemV 0 -/ItalicAngle 0.0 -/Ascent 860 -/Descent -140 -/CapHeight 860 -/XHeight 0 ->> -endobj -239 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -240 0 obj -[1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 472 1000 1000 1000 1000 288 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -241 0 obj -<< /Length1 6204 -/Length 4350 -/Filter [/FlateDecode] ->> -stream -x7itTU$$U%KeyU/,UVBLB!P!fRّiNGf".Gg4>4C8"apЃy@N>Ťȳ=#c_#|H$ot,q/3<=|d0B6aLm}+ \0d` IH1؀\sME-'qwH'T"#ac!-B"޸#ĸ }cM׏㺰o$W2AI c'AMP*ՐEqwOD-% FbJN!$IFfgPv-7/pϿli2%Q -z(PDw+xm<}@;=@/ 1QKpp -l7ýi͊x"8 IaE'f1,G,3߭iy[\_]\ v#`A}:m300+a7t$!OE'[ȓ%<~kQ~x_ U7]Wp^!qH]Mk!h}f(ޚFCr&]L[QQ떾gK$e⠠W 8VUu 2 @~_wr̕CRvr5^[wxuæ}6fWBI^}`v -(ZJeTs9pFW>~IxZG -Oٚ+M2jd/|hoN/X q+ꪅb߿?ɉt^A:z\XuZoT${m8{i;OLˆG|>%&ԶUBlzԥ̶BRtXgG]cv.ғ;{؝@}7m,pƕ+7砋>x]z-< 0Fx[$(6( 4Z̻?k켳UyOuιu)>v$z{2@ D4cHGDk/93qXL8%JV:gC_a|bp4iކ톨Lʮa$Vi) -`V*)b}xpzRsҎ vLƙ˦P(3$l.+ʇǧMxڭck}fM;aR |$V `>s%\*O=M%厵}`T8wMe2k -'7so~,/Jufd=yEWK4Ot{U:u;D7=m9_T%)EC z3-)1Y5(]|E2)QZm^4- a?5K/0XKr[fiC^[ץX:E`wpJq o6$B/^+餝laYk"f![O axkeVkQv'~D`DQ|xq#7U>Y#O?r4M*s* Db)HƄ ۑo۞[z*SdhRm.ܱ^4'n<̯xyJ̡4:-54ѽ*tul4>nN- E~M0c(R!..y ']]6eR)}CA2\|devFa<匬Y M7R^-F|sȗ- aY9W?XVVz I,ԅTc@m -Q^91A$Hmig:4[e}k6_4QIDG3\ep/ j->90_47=XF;n._m[גh ?bׯ$CQ -?T!ɜ,RiR{T6 ƝL/[mKZӶ /G?w]$2acIVZ ž'_KuACpE0 ߴŋD`!g^Kh$"#zC ;%ydUK qdt32Ohh*5`N [jji+kF8h6@ȷ$pׇr3"p~j7$t0߽4fˤU[m$c / \xjrҤ=•={ ]8t2! JB 0蓵V9cٹHc ?M>3*}%~6F5)Uާ_;}' -D)}%L"U$ }b<#X/đjع|tl`T^O>*.phMm\svydmd ~2Gz75XzʡޚPWm%U=js9iC%#Hp/{лb42bt?̹ -2NF½#v.' 2 d&,2Qlph@p^dzgҹ yu͟^yOLFb4|N"QD%K<Ҟ}dlxz:7#"qه2NNNOCc.PeEHw )N#z'$$4A}/$CϬ - |ݍ_~O|;.)):6n,Ea:| k+% 8ʈP`'$JQ_-hF뷄/Bޮw1 -ghՁ`-8 -` -lF!gT`W-e{?7O[*{0bKH<ʱs3vfH;iDq-nUۊq$"gtňh"gE(i΄g96YbXBqV`ĝ֬ 8wA'E5[ɯ\f [(#in[9fxϐG+c0[ҲK)4jKv7K2q n5[ -Π@Y5w 68Zf$[` 0{hw%aWbf?S[}/?rrH%TVW3ZtGgAf䞯6|5j2> -endobj -243 0 obj -<< /Length 1286 -/Filter [/FlateDecode] ->> -stream -xenFὮBtHs&@nu{stԒ + }i /y_!ut~]snVyg쾝+|<.÷}v)[eO/_q9_ɯ}ഏOmt_LLv͵LJ1w9)e6=nPҪtN*eP)DT.ʕrU)BYTVʪQ6[ky ^#k5x5F^ky ^#k5x5F^kZy-^+kxZV^kZy-^+kxZV^:y^'uxu:N^:y^'uxu:N^zy=^/xz^^zy=^/xz^ހ7y o xo7 Aހ7y o xo7 Aވ7Fy#(oĻnuW.I$$*I$ITH$$QI"IDD%$JI$$*I$ITH$$III$$%I$I|›Mx o7M&Iބ7ɛ&y$o›Mx o7M.xyUo ުMMol x; -JÂ31x; -JJ특xxx+!ÊwBxbx+ށr;2kΜJYeY7+|x oS7+[ƛețךyޢoV浖 -㭌"RW*4XqC^J[(^1»y]k}YM-x Vz[YEVY_}/7*Y%eӫq+:.7JE/3Y(Y*AW RVJS:(u@cD]a*f)9J)o,#\Z>MU\jPS {HSMj{fkyGm[z*Esa>&ӫj%u; 2^W[®v[2쯲u[P:V̡Յ> MBi2 .Ħԇ!dk`=o qWޕwdJF(L164U)x0E~Z?=/ί~:o?$O -endstream -endobj -244 0 obj -[500 500 500 1000 1000 1000 1000 500 500 500 1000 1000 500 1000 500 500 500 500 1000 1000 1000 1000 1000 1000 1000 1000 500 1000 500 500 500 500 1000 500 500 500 500 500 1000 500 500 500 1000 1000 500 1000 500 500 500 1000 500 500 500 500 500 500 500 1000 1000 1000 1000 1000 1000 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -245 0 obj -<< /Length1 2356 -/Length 1171 -/Filter [/FlateDecode] ->> -stream -xUMlE~IӀ Ҫ -m8i@Q*5W\UT Բwػ q#R[pGH zP!D\8 R $q!g֚}ޛoތQF)ArMS|Bˉ/^YG?L Oڵp' -`?϶M}ۮSO:=ɪa墖u6^ -_˯( :&E">Ї)? -uk@Kw:}~br<{XC]cIVrMÙ_zΚKʫk7KJe~ѰwYu;/4On -v~г%wa $F}Zbrdnb$ƑgǾ -M!7qE?$e"myayy.Rj{CrSʉ}]LIrw*TS,jժF VUk#ރp:6%(MoK\nX -g 'MSx)'(;/eXN]4[7 1_#$ O{(aS)E{)NMb PC LADC7FPP;yY5Uڕo ttdI >\93p,^;+R4U!*F2/5FS(-R [q Dq*!<); SV Sj٫iu x(SM4,,*85U^x͕{Iu&%a8uShNt(p m^F'G -̪O\8L5` ufOǼ9 k8puVmehٹBqn$ʢz*}hA< -oPEGZݎpVӿ+Iq}LJv{QV$n[ o -endstream -endobj -246 0 obj -<< /Type /FontDescriptor -/FontName /427dad+NotoSerif -/FontFile2 245 0 R -/FontBBox [-212 -250 1246 1047] -/Flags 6 -/StemV 0 -/ItalicAngle 0.0 -/Ascent 1068 -/Descent -292 -/CapHeight 1462 -/XHeight 1098 ->> -endobj -247 0 obj -<< /Length 228 -/Filter [/FlateDecode] ->> -stream -x]n <"ANi.9liD!o?CNЏyx/?r4#p>،kܲAp7Z7N7Wl9SvJ1U/}p0 -endstream -endobj -248 0 obj -[259 354 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000] -endobj -xref -0 249 -0000000000 65535 f -0000000015 00000 n -0000000398 00000 n -0000000602 00000 n -0000000766 00000 n -0000000817 00000 n -0000001089 00000 n -0000002071 00000 n -0000002367 00000 n -0000002534 00000 n -0000024625 00000 n -0000025425 00000 n -0000034574 00000 n -0000034988 00000 n -0000035032 00000 n -0000035081 00000 n -0000035133 00000 n -0000035177 00000 n -0000035350 00000 n -0000035394 00000 n -0000035569 00000 n -0000035684 00000 n -0000035728 00000 n -0000035844 00000 n -0000035961 00000 n -0000036005 00000 n -0000036120 00000 n -0000036236 00000 n -0000036280 00000 n -0000036394 00000 n -0000036507 00000 n -0000036551 00000 n -0000036595 00000 n -0000050586 00000 n -0000051012 00000 n -0000051056 00000 n -0000051173 00000 n -0000051288 00000 n -0000051451 00000 n -0000051495 00000 n -0000051670 00000 n -0000051783 00000 n -0000051827 00000 n -0000051944 00000 n -0000052118 00000 n -0000067502 00000 n -0000067920 00000 n -0000068036 00000 n -0000068080 00000 n -0000068124 00000 n -0000068303 00000 n -0000068419 00000 n -0000086081 00000 n -0000086493 00000 n -0000086610 00000 n -0000086654 00000 n -0000086822 00000 n -0000086989 00000 n -0000087164 00000 n -0000087208 00000 n -0000087251 00000 n -0000103057 00000 n -0000103425 00000 n -0000103469 00000 n -0000103513 00000 n -0000103557 00000 n -0000122311 00000 n -0000122709 00000 n -0000122753 00000 n -0000122797 00000 n -0000123234 00000 n -0000123791 00000 n -0000123835 00000 n -0000123965 00000 n -0000140412 00000 n -0000140843 00000 n -0000140887 00000 n -0000141059 00000 n -0000141277 00000 n -0000141443 00000 n -0000149721 00000 n -0000150076 00000 n -0000156692 00000 n -0000157047 00000 n -0000157091 00000 n -0000166539 00000 n -0000166944 00000 n -0000166988 00000 n -0000167206 00000 n -0000167423 00000 n -0000183674 00000 n -0000184042 00000 n -0000192880 00000 n -0000193280 00000 n -0000193461 00000 n -0000193643 00000 n -0000193825 00000 n -0000194007 00000 n -0000194189 00000 n -0000204952 00000 n -0000205347 00000 n -0000205392 00000 n -0000205437 00000 n -0000205482 00000 n -0000205651 00000 n -0000205696 00000 n -0000210187 00000 n -0000210557 00000 n -0000210603 00000 n -0000210649 00000 n -0000210695 00000 n -0000210741 00000 n -0000210787 00000 n -0000210833 00000 n -0000211011 00000 n -0000211057 00000 n -0000211446 00000 n -0000211611 00000 n -0000211744 00000 n -0000211878 00000 n -0000212016 00000 n -0000212156 00000 n -0000212291 00000 n -0000212428 00000 n -0000212561 00000 n -0000212695 00000 n -0000212828 00000 n -0000212963 00000 n -0000213090 00000 n -0000213218 00000 n -0000213340 00000 n -0000213463 00000 n -0000213588 00000 n -0000213715 00000 n -0000213842 00000 n -0000213970 00000 n -0000214138 00000 n -0000214307 00000 n -0000214436 00000 n -0000214566 00000 n -0000214700 00000 n -0000214835 00000 n -0000214971 00000 n -0000215108 00000 n -0000215272 00000 n -0000215437 00000 n -0000215581 00000 n -0000215726 00000 n -0000215853 00000 n -0000215982 00000 n -0000216115 00000 n -0000216249 00000 n -0000216384 00000 n -0000216520 00000 n -0000216657 00000 n -0000216796 00000 n -0000216935 00000 n -0000217075 00000 n -0000217219 00000 n -0000217364 00000 n -0000217491 00000 n -0000217620 00000 n -0000217792 00000 n -0000217965 00000 n -0000218095 00000 n -0000218225 00000 n -0000218345 00000 n -0000218467 00000 n -0000218599 00000 n -0000218731 00000 n -0000218852 00000 n -0000218973 00000 n -0000219098 00000 n -0000219223 00000 n -0000219350 00000 n -0000219477 00000 n -0000219601 00000 n -0000219725 00000 n -0000219996 00000 n -0000220267 00000 n -0000220345 00000 n -0000220730 00000 n -0000220922 00000 n -0000221151 00000 n -0000221361 00000 n -0000221559 00000 n -0000221759 00000 n -0000221963 00000 n -0000222169 00000 n -0000222311 00000 n -0000222483 00000 n -0000222688 00000 n -0000223004 00000 n -0000223217 00000 n -0000223407 00000 n -0000223619 00000 n -0000223933 00000 n -0000224180 00000 n -0000224375 00000 n -0000224561 00000 n -0000224751 00000 n -0000224971 00000 n -0000225195 00000 n -0000225439 00000 n -0000225648 00000 n -0000225976 00000 n -0000226164 00000 n -0000226349 00000 n -0000226531 00000 n -0000226673 00000 n -0000226841 00000 n -0000227018 00000 n -0000227169 00000 n -0000227452 00000 n -0000235879 00000 n -0000236095 00000 n -0000237458 00000 n -0000238514 00000 n -0000244881 00000 n -0000245102 00000 n -0000246465 00000 n -0000247556 00000 n -0000251688 00000 n -0000251914 00000 n -0000253277 00000 n -0000254382 00000 n -0000259316 00000 n -0000259530 00000 n -0000260893 00000 n -0000261959 00000 n -0000264671 00000 n -0000264884 00000 n -0000266247 00000 n -0000267361 00000 n -0000269557 00000 n -0000269787 00000 n -0000271150 00000 n -0000272282 00000 n -0000273701 00000 n -0000273919 00000 n -0000275282 00000 n -0000276419 00000 n -0000280860 00000 n -0000281071 00000 n -0000282434 00000 n -0000283510 00000 n -0000284772 00000 n -0000284988 00000 n -0000285292 00000 n -trailer -<< /Size 249 -/Root 2 0 R -/Info 1 0 R ->> -startxref -286429 -%%EOF diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/images/Overview.png b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/images/Overview.png deleted file mode 100644 index 8cd7437f84f8640658b9c7d71cd99e712cd579c1..0000000000000000000000000000000000000000 Binary files a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/UG/images/Overview.png and /dev/null differ diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/change.log b/ttcn/modules/titan.TestPorts.HTTPmsg/module/doc/change.log deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen.ttcn b/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen.ttcn deleted file mode 100644 index a2c49c37c5853c0e1d30328684d33bde80888c7b..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen.ttcn +++ /dev/null @@ -1,24 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2019 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Eduard Czimbalmos - initial implementation and initial documentation -* Istvan Ovary -* Peter Dimitrov -* Balasko Jeno -* Gabor Szalai -******************************************************************************/ -/////////////////////////////////////////////////////////////////////////////// -// -// File: HTTPmsg_MessageLen.ttcn -// Description: HTTP Message length calculator -// Rev: R9B -// Prodnr: CNL 113 469 - -module HTTPmsg_MessageLen{ - external function f_HTTPMessage_len(in octetstring stream) return integer -} diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen_Function.cc b/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen_Function.cc deleted file mode 100644 index 0284415705fd9e8a7a04dc1e8f191de15b894d7f..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_MessageLen_Function.cc +++ /dev/null @@ -1,49 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2019 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Eduard Czimbalmos - initial implementation and initial documentation -* Istvan Ovary -* Peter Dimitrov -* Balasko Jeno -* Gabor Szalai -******************************************************************************/ -// -// File: HTTPmsg_MessageLen_Function.cc -// Description: HTTP Message length calculator -// Rev: R9B -// Prodnr: CNL 113 469 - -#include "HTTPmsg_PT.hh" -#include "HTTPmsg_Types.hh" -#include "HTTPmsg_MessageLen.hh" - -using namespace HTTPmsg__Types; -using namespace HTTPmsg__PortType; - -namespace HTTPmsg__MessageLen { -INTEGER f__HTTPMessage__len(OCTETSTRING const& stream) { - HTTPMessage msg; - TTCN_Buffer *buf_p = new TTCN_Buffer() ; - buf_p->put_os(stream); - - int buf_len = buf_p->get_read_len(); - if( buf_len > 0) - { - if(f_HTTP_decodeCommon(buf_p, msg, true, false, NULL, NULL)) - { - buf_len -= buf_p->get_read_len(); - } - else - buf_len = -1; - - - } else buf_len = -1; - delete buf_p; - return buf_len; -} -} diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.cc b/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.cc deleted file mode 100644 index 3daf3c85e7bf312718fbab47cf2bce0118752408..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.cc +++ /dev/null @@ -1,1270 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2019 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Eduard Czimbalmos - initial implementation and initial documentation -* Istvan Ovary -* Peter Dimitrov -* Balasko Jeno -* Gabor Szalai -******************************************************************************/ -// -// File: HTTPmsg_PT.cc -// Description: HTTP test port implementation -// Rev: R9B -// Prodnr: CNL 113 469 - - -#include "HTTPmsg_PT.hh" - -#include -#include - -#ifdef AS_USE_SSL -#include -#include -#include -#endif - -static bool report_lf=true; - -namespace HTTPmsg__PortType { - -HTTPmsg__PT::HTTPmsg__PT(const char *par_port_name) - : HTTPmsg__PT_BASE(par_port_name) -{ - parameter_set(use_connection_ASPs_name(), "yes"); - parameter_set(server_backlog_name(), "1024"); - use_notification_ASPs = false; - set_ttcn_buffer_usercontrol(true); - set_handle_half_close(true); - adding_client_connection = false; - adding_ssl_connection = false; - server_use_ssl = false; -#ifdef AS_USE_SSL - - set_ssl_use_ssl(true); -#endif - use_send_failed = false; - last_msg = NULL; -} - -HTTPmsg__PT::~HTTPmsg__PT() -{ - -} - -void HTTPmsg__PT::set_parameter(const char *parameter_name, - const char *parameter_value) -{ - log_debug("entering HTTPmsg__PT::set_parameter(%s, %s)", parameter_name, parameter_value); - if(strcasecmp(parameter_name, use_notification_ASPs_name()) == 0) { - if (strcasecmp(parameter_value,"yes")==0) use_notification_ASPs = true; - else if (strcasecmp(parameter_value,"no")==0) use_notification_ASPs = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, use_notification_ASPs_name()); - } else if(strcasecmp(parameter_name, "report_failed_message") == 0){ - if (strcasecmp(parameter_value,"yes")==0) use_send_failed = true; - else if (strcasecmp(parameter_value,"no")==0) use_send_failed = false; - else log_error("Parameter value '%s' not recognized for parameter '%s'", parameter_value, "report_failed_message"); - } - else if((strcasecmp(parameter_name, use_connection_ASPs_name()) == 0) || !parameter_set(parameter_name ,parameter_value)) { - log_warning("HTTPmsg__PT::set_parameter(): Unsupported Test Port parameter: %s", parameter_name); - } - log_debug("leaving HTTPmsg__PT::set_parameter(%s, %s)", parameter_name, parameter_value); -} - -void HTTPmsg__PT::Handle_Fd_Event(int fd, - boolean is_readable, boolean is_writable, boolean is_error) -{ - log_debug("-------------- entering HTTPmsg__PT::Handle_Fd_Event() - event received on a connection"); - Handle_Socket_Event(fd, is_readable, is_writable, is_error); - log_debug("leaving HTTPmsg__PT::Handle_Fd_Event()"); -} - -void HTTPmsg__PT::Handle_Timeout(double time_since_last_call) -{ - log_debug("entering HTTPmsg__PT::Handle_Timeout()"); - Handle_Timeout_Event(time_since_last_call); - log_debug("leaving HTTPmsg__PT::Handle_Timeout()"); -} - -void HTTPmsg__PT::user_map(const char *system_port) -{ - log_debug("entering HTTPmsg__PT::user_map(%s)",system_port); - if(TTCN_Logger::log_this_event(TTCN_DEBUG)) { - if(!get_socket_debugging()) - log_warning("%s: to switch on HTTP test port debugging, set the '*.%s.http_debugging := \"yes\" in the port's parameters.", get_name(), get_name()); - } - map_user(); - log_debug("leaving HTTPmsg__PT::user_map()"); -} - -void HTTPmsg__PT::user_unmap(const char *system_port) -{ - log_debug("entering HTTPmsg__PT::user_unmap(%s)",system_port); - - unmap_user(); - - log_debug("leaving HTTPmsg__PT::user_unmap()"); -} - -void HTTPmsg__PT::user_start() -{ -} - -void HTTPmsg__PT::user_stop() -{ -} - -void HTTPmsg__PT::outgoing_send(const HTTPmsg__Types::Close& send_par) -{ - log_debug("entering HTTPmsg__PT::outgoing_send(Close)"); - - if(send_par.client__id().ispresent()) - remove_client((int)send_par.client__id()()); - else - remove_all_clients(); - - log_debug("leaving HTTPmsg__PT::outgoing_send(Close)"); -} - -void HTTPmsg__PT::outgoing_send(const HTTPmsg__Types::Connect& send_par) -{ - log_debug("entering HTTPmsg__PT::outgoing_send(Connect)"); - - adding_ssl_connection = send_par.use__ssl(); - adding_client_connection = true; - -#ifndef AS_USE_SSL - if(adding_ssl_connection) - { - log_error("%s: HTTP test port is not compiled to support SSL connections. Please check the User's Guide for instructions on compiling the HTTP test port with SSL support.", get_name()); - } -#endif - - int client_id = open_client_connection(send_par.hostname(),int2str((INTEGER)send_par.portnumber()),NULL,NULL); - - adding_ssl_connection = false; - adding_client_connection = false; - - log_debug("leaving HTTPmsg__PT::outgoing_send(Connect),client_id: %d", client_id); -} - -void HTTPmsg__PT::outgoing_send(const HTTPmsg__Types::Listen& send_par) -{ - log_debug("entering HTTPmsg__PT::outgoing_send(Listen)"); - - server_use_ssl = send_par.use__ssl(); - - if(server_use_ssl) - { - #ifndef AS_USE_SSL - log_error("%s: HTTP test port is not compiled to support SSL connections. Please check the User's Guide for instructions on compiling the HTTP test port with SSL support.", get_name()); - #endif - } - - if(send_par.local__hostname().ispresent()) - { - - open_listen_port(send_par.local__hostname()(),int2str((INTEGER)send_par.portnumber())); - - } - else - { - log_debug("using IN_ADDR_ANY as local host name"); - open_listen_port(NULL,int2str((INTEGER)send_par.portnumber())); - - } - - log_debug("leaving HTTPmsg__PT::outgoing_send(Listen)"); - -} - -void HTTPmsg__PT::outgoing_send(const HTTPmsg__Types::Half__close& send_par) -{ - log_debug("entering HTTPmsg__PT::outgoing_send(Half_close)"); - - if(send_par.client__id().ispresent()) - send_shutdown((int)send_par.client__id()()); - else - send_shutdown(); - - log_debug("leaving HTTPmsg__PT::outgoing_send(Half_close)"); - -} - -void HTTPmsg__PT::outgoing_send(const HTTPmsg__Types::Shutdown& /*send_par*/) -{ - log_debug("entering HTTPmsg__PT::outgoing_send(Shutdown)"); - - close_listen_port(); - - log_debug("leaving HTTPmsg__PT::outgoing_send(Shutdown)"); -} - -void HTTPmsg__PT::outgoing_send(const HTTPmsg__Types::HTTPMessage& send_par) -{ - log_debug("entering HTTPmsg__PT::outgoing_send(HTTPMessage)"); - - TTCN_Buffer snd_buf; - int client_id = -1; - last_msg = &send_par; - - switch(send_par.get_selection()) - { - case HTTPmsg__Types::HTTPMessage::ALT_request: - { - if(send_par.request().client__id().ispresent()) - client_id = send_par.request().client__id()(); - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_request__binary: - { - if(send_par.request__binary().client__id().ispresent()) - client_id = send_par.request__binary().client__id()(); - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_response: - { - if(send_par.response().client__id().ispresent()) - client_id = send_par.response().client__id()(); - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_response__binary: - { - if(send_par.response__binary().client__id().ispresent()) - client_id = send_par.response__binary().client__id()(); - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_erronous__msg: - { - if(send_par.erronous__msg().client__id().ispresent()) - client_id = send_par.erronous__msg().client__id()(); - break; - } - default: - TTCN_error("Unknown HTTP_Message type to encode and send!"); - } - - f_HTTP_encodeCommon(send_par, snd_buf); - - if(client_id >= 0) - send_outgoing(snd_buf.get_data(), snd_buf.get_len(), client_id); - else - send_outgoing(snd_buf.get_data(), snd_buf.get_len()); - - last_msg = NULL; - log_debug("leaving HTTPmsg__PT::outgoing_send(HTTPMessage)"); -} - -void HTTPmsg__PT::report_unsent(int client_id, int /*msg_length*/, int /*sent_length*/, const unsigned char* /*msg*/, const char* /*error_text*/) -{ - if(use_send_failed && last_msg){ - HTTPmsg__Types::Send__failed asp; - asp.msg()=*last_msg; - asp.already__half__closed()= (get_peer(client_id,true)->tcp_state) == CLOSE_WAIT ; - - incoming_message(asp); - } -} - - -void HTTPmsg__PT::client_connection_opened(int client_id) -{ - log_debug("entering HTTPmsg__PT::client_connection_opened(%d)", client_id); - - if(use_notification_ASPs) - { - HTTPmsg__Types::Connect__result asp; - asp.client__id() = client_id; - incoming_message(asp); - } - else if(client_id < 0) - log_error("Cannot connect to server"); - - log_debug("leaving HTTPmsg__PT::client_connection_opened()"); -} - -void HTTPmsg__PT::listen_port_opened(int port_number) -{ - log_debug("entering HTTPmsg__PT::listen_port_opened(%d)", port_number); - - if(use_notification_ASPs) - { - HTTPmsg__Types::Listen__result asp; - asp.portnumber() = port_number; - incoming_message(asp); - } - else if(port_number < 0) - log_error("Cannot listen at port"); - - log_debug("leaving HTTPmsg__PT::listen_port_opened()"); -} - -void HTTPmsg__PT::message_incoming(const unsigned char* /*msg*/, int /*messageLength*/, int client_id) -{ - log_debug("entering HTTPmsg__PT::message_incoming()"); - - TTCN_Buffer* buf_p = get_buffer(client_id); - - while(buf_p->get_read_len() > 0) - { - log_debug("HTTPmsg__PT::message_incoming(): decoding next message, len: %d", (int)buf_p->get_read_len()); - if(!HTTP_decode(buf_p, client_id)) - break; - } - - log_debug("leaving HTTPmsg__PT::message_incoming()"); -} - -void HTTPmsg__PT::peer_half_closed(int client_id) -{ - log_debug("entering HTTPmsg__PT::peer_half_closed(client_id: %d)", client_id); - - TTCN_Buffer* buf_p = get_buffer(client_id); - buf_p->rewind(); - while(buf_p->get_read_len() > 0) - { - log_debug("HTTPmsg__PT::remove_client(): decoding next message, len: %d", (int)buf_p->get_read_len()); - if(!HTTP_decode(buf_p, client_id,true)) - break; - } - - HTTPmsg__Types::Half__close asp; - asp.client__id() = client_id; - incoming_message(asp); - - log_debug("leaving HTTPmsg__PT::peer_half_closed(client_id: %d)", client_id); -} - -void HTTPmsg__PT::peer_disconnected(int client_id) -{ - log_debug("entering HTTPmsg__PT::peer_disconnected(client_id: %d)", client_id); - - if(use_notification_ASPs) - { - HTTPmsg__Types::Close asp; - asp.client__id() = client_id; - incoming_message(asp); - } - else Abstract_Socket::peer_disconnected(client_id); - - log_debug("leaving HTTPmsg__PT::peer_disconnected(client_id: %d)", client_id); -} - -//void HTTPmsg__PT::peer_connected(int client_id, sockaddr_in& addr) - -void HTTPmsg__PT::peer_connected(int client_id, const char * host, const int port) -{ - log_debug("entering HTTPmsg__PT::peer_connected(%d)", client_id); - - if(use_notification_ASPs) - { - HTTPmsg__Types::Client__connected asp; - asp.hostname() = host; - asp.portnumber() = port; - asp.client__id() = client_id; - - incoming_message(asp); - } - else Abstract_Socket::peer_connected(client_id, host, port); - - log_debug("leaving HTTPmsg__PT::peer_connected()"); -} - -bool HTTPmsg__PT::add_user_data(int client_id) -{ - log_debug("entering HTTPmsg__PT::add_user_data(client_id: %d, use_ssl: %s)", - client_id, (adding_client_connection && adding_ssl_connection) || (server_use_ssl && !adding_ssl_connection) ? "yes" : "no"); - - set_server_mode(!adding_client_connection); - - if((adding_client_connection && !adding_ssl_connection) || (!adding_client_connection && !server_use_ssl)) - { - log_debug("leaving HTTPmsg__PT::add_user_data() with returning Abstract_Socket::add_user_data()"); - return Abstract_Socket::add_user_data(client_id); - } - else - { -#ifdef AS_USE_SSL - log_debug("leaving HTTPmsg__PT::add_user_data() with returning SSL_Socket::add_user_data()"); - return SSL_Socket::add_user_data(client_id); -#else - log_error("%s: HTTP test port is not compiled to support SSL connections. Please check the User's Guide for instructions on compiling the HTTP test port with SSL support.", get_name()); -#endif - } - - // Programming error in HTTPmsg__PT::add_user_data() - return false; -} - -bool HTTPmsg__PT::remove_user_data(int client_id) -{ - log_debug("entering HTTPmsg__PT::remove_user_data(client_id: %d", client_id); - -#ifdef AS_USE_SSL - if(get_user_data(client_id)) - { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - log_debug("leaving HTTPmsg__PT::remove_user_data() with returning SSL_Socket::remove_user_data()"); - return SSL_Socket::remove_user_data(client_id); - } -#endif - - log_debug("leaving HTTPmsg__PT::remove_user_data() with returning Abstract_Socket::remove_user_data()"); - return Abstract_Socket::remove_user_data(client_id); -} - -int HTTPmsg__PT::receive_message_on_fd(int client_id) -{ - log_debug("entering HTTPmsg__PT::receive_message_on_fd(client_id: %d)", client_id); - -#ifdef AS_USE_SSL - if(get_user_data(client_id)) - { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - log_debug("leaving HTTPmsg__PT::receive_message_on_fd() with returning SSL_Socket::receive_message_on_fd()"); - return SSL_Socket::receive_message_on_fd(client_id); - } -#endif - - log_debug("leaving HTTPmsg__PT::receive_message_on_fd() with returning Abstract_Socket::receive_message_on_fd()"); - return Abstract_Socket::receive_message_on_fd(client_id); -} - -void HTTPmsg__PT::remove_client(int client_id) -{ - log_debug("entering HTTPmsg__PT::remove_client(client_id: %d)", client_id); - - TTCN_Buffer* buf_p = get_buffer(client_id); - - while(buf_p->get_read_len() > 0) - { - log_debug("HTTPmsg__PT::remove_client(): decoding next message, len: %d", (int)buf_p->get_read_len()); - if(!HTTP_decode(buf_p, client_id,true)) - break; - } - -#ifdef AS_USE_SSL - if(get_user_data(client_id)) - { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - log_debug("leaving HTTPmsg__PT::remove_client() with returning SSL_Socket::remove_client()"); - return SSL_Socket::remove_client(client_id); - } -#endif - - log_debug("leaving HTTPmsg__PT::remove_client() with returning Abstract_Socket::remove_client()"); - return Abstract_Socket::remove_client(client_id); -} - -int HTTPmsg__PT::send_message_on_fd(int client_id, const unsigned char * message_buffer, int length_of_message) -{ - log_debug("entering HTTPmsg__PT::send_message_on_fd(client_id: %d)", client_id); - -#ifdef AS_USE_SSL - if(get_user_data(client_id)) - { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - log_debug("leaving HTTPmsg__PT::send_message_on_fd() with returning SSL_Socket::send_message_on_fd()"); - return SSL_Socket::send_message_on_fd(client_id, message_buffer, length_of_message); - } -#endif - - log_debug("leaving HTTPmsg__PT::send_message_on_fd() with returning Abstract_Socket::send_message_on_fd()"); - return Abstract_Socket::send_message_on_fd(client_id, message_buffer, length_of_message); -} - -int HTTPmsg__PT::send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message) -{ - log_debug("entering HTTPmsg__PT::(client_id: %d)", client_id); - -#ifdef AS_USE_SSL - if(get_user_data(client_id)) - { - // INFO: it is assumed that only SSL_Socket assigns user data to each peer - log_debug("leaving HTTPmsg__PT::send_message_on_nonblocking_fd() with returning SSL_Socket::send_message_on_nonblocking_fd()"); - return SSL_Socket::send_message_on_nonblocking_fd(client_id, message_buffer, length_of_message); - } -#endif - - log_debug("leaving HTTPmsg__PT::send_message_on_nonblocking_fd() with returning Abstract_Socket::send_message_on_nonblocking_fd()"); - return Abstract_Socket::send_message_on_nonblocking_fd(client_id, message_buffer, length_of_message); -} - -// HTTP specific functions - -// replaced by f_HTTP_encodeCommon: -// void HTTPmsg__PT::HTTP_encode(const HTTPmsg__Types::HTTPMessage& msg, TTCN_Buffer& buf) -// { -// f_HTTP_encodeCommon( msg, buf); -// } - -//Encodes msg type of "HTTPMessage" into buffer -void f_HTTP_encodeCommon(const HTTPmsg__Types::HTTPMessage& msg, TTCN_Buffer& buf) -{ - buf.clear(); - if( msg.get_selection() == HTTPmsg__Types::HTTPMessage::ALT_erronous__msg ) - buf.put_cs(msg.erronous__msg().msg()); - else - { - const HTTPmsg__Types::HeaderLines* header = NULL; - const HTTPmsg__Types::HTTPRequest* request = NULL; - const HTTPmsg__Types::HTTPResponse* response = NULL; - const HTTPmsg__Types::HTTPRequest__binary__body* request_binary = NULL; - const HTTPmsg__Types::HTTPResponse__binary__body* response_binary = NULL; - const CHARSTRING* body = NULL; - const OCTETSTRING* body_binary = NULL; - - if(msg.get_selection() == HTTPmsg__Types::HTTPMessage::ALT_request) - { - request = &msg.request(); - header = &request->header(); - body = &request->body(); - buf.put_cs(request->method()); - buf.put_c(' '); - buf.put_cs(request->uri()); - buf.put_cs(" HTTP/"); - buf.put_cs(int2str(request->version__major())); - buf.put_c('.'); - buf.put_cs(int2str(request->version__minor())); - buf.put_cs("\r\n"); - } - else if(msg.get_selection() == HTTPmsg__Types::HTTPMessage::ALT_response) - { - response = &msg.response(); - header = &response->header(); - body = &response->body(); - buf.put_cs("HTTP/"); - buf.put_cs(int2str(response->version__major())); - buf.put_c('.'); - buf.put_cs(int2str(response->version__minor())); - buf.put_c(' '); - buf.put_cs(int2str(response->statuscode())); - buf.put_c(' '); - buf.put_cs(response->statustext()); - buf.put_cs("\r\n"); - } - else if(msg.get_selection() == HTTPmsg__Types::HTTPMessage::ALT_request__binary) - { - request_binary = &msg.request__binary(); - header = &request_binary->header(); - body_binary = &request_binary->body(); - buf.put_cs(request_binary->method()); - buf.put_c(' '); - buf.put_cs(request_binary->uri()); - buf.put_cs(" HTTP/"); - buf.put_cs(int2str(request_binary->version__major())); - buf.put_c('.'); - buf.put_cs(int2str(request_binary->version__minor())); - buf.put_cs("\r\n"); - } - else if(msg.get_selection() == HTTPmsg__Types::HTTPMessage::ALT_response__binary) - { - response_binary = &msg.response__binary(); - header = &response_binary->header(); - body_binary = &response_binary->body(); - buf.put_cs("HTTP/"); - buf.put_cs(int2str(response_binary->version__major())); - buf.put_c('.'); - buf.put_cs(int2str(response_binary->version__minor())); - buf.put_c(' '); - buf.put_cs(int2str(response_binary->statuscode())); - buf.put_c(' '); - buf.put_cs(response_binary->statustext()); - buf.put_cs("\r\n"); - } - - for( int i = 0; i < header->size_of(); i++ ) - { - buf.put_cs((*header)[i].header__name()); - buf.put_cs(": "); - buf.put_cs((*header)[i].header__value()); - buf.put_cs("\r\n"); - } - - buf.put_cs("\r\n"); - - if(body && body->lengthof() > 0) - { - buf.put_cs(*body); - } - else if(body_binary && body_binary->lengthof() > 0) - { - buf.put_os(*body_binary); - } - } -} - -bool HTTPmsg__PT::HTTP_decode(TTCN_Buffer* buffer, const int client_id, const bool connection_closed) -{ - - //HTTPmsg__Types::HTTPMessage * msg = new HTTPmsg__Types::HTTPMessage(); - - HTTPmsg__Types::HTTPMessage msg; - - if(f_HTTP_decodeCommon(buffer, msg, connection_closed, get_socket_debugging(), test_port_type, test_port_name )) - { - TTCN_Logger::log(TTCN_DEBUG,"HTTPmsg__PT::HTTP_decode, before calling incoming_message"); - f_setClientId(msg,client_id); - incoming_message(msg); - TTCN_Logger::log(TTCN_DEBUG,"HTTPmsg__PT::HTTP_decode, after calling incoming_message"); - return true; - } - return false; -} - -void f_setClientId( HTTPmsg__Types::HTTPMessage& msg, const int client_id) -{ - switch(msg.get_selection()) - { - case HTTPmsg__Types::HTTPMessage::ALT_request: - { - msg.request().client__id()=client_id; - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_request__binary: - { - msg.request__binary().client__id()=client_id; - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_response: - { - msg.response().client__id()=client_id; - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_response__binary: - { - msg.response__binary().client__id()=client_id; - break; - } - case HTTPmsg__Types::HTTPMessage::ALT_erronous__msg: //is this case redundant code(?) - { - msg.erronous__msg().client__id()=OMIT_VALUE; - break; - } - default: - break; - }//switch - return; -}//f_setClientId - -// -// returns with true if the buffer is not empty and it contain valid message -// Postcondition: if buffer contains valid message, msg will contain the first decoded HTTP message, the decoded part will be removed from the buffer -bool f_HTTP_decodeCommon( TTCN_Buffer* buffer, HTTPmsg__Types::HTTPMessage& msg, const bool connection_closed, - const bool socket_debugging, const char *test_port_type, const char *test_port_name) -{ - - TTCN_Logger::log(TTCN_DEBUG, "starting f_HTTP_decodeCommon "); - if(buffer->get_read_len() <= 0) - return FALSE; - - buffer->rewind(); - - Decoding_Params decoding_params; - decoding_params.non_persistent_connection = FALSE; - decoding_params.chunked_body = FALSE; - decoding_params.content_length = -1; - decoding_params.error = FALSE; - decoding_params.isMessage = TRUE; - - if (TTCN_Logger::log_this_event(TTCN_DEBUG)) - { - if( test_port_name!= NULL) - TTCN_Logger::log(TTCN_DEBUG, "%s DECODER: <%s>\n", test_port_name, - (const char*)CHARSTRING(buffer->get_read_len(), (const char*)buffer->get_read_data())); - else - TTCN_Logger::log(TTCN_DEBUG, "DECODER: <%s>\n", - (const char*)CHARSTRING(buffer->get_read_len(), (const char*)buffer->get_read_data())); - } - - CHARSTRING first; - bool isResponse; - - // Decoding the first line - - switch(get_line(buffer, first, false)) - { - case TRUE: // The first line is available - { - //HTTPmsg__Types::HTTPMessage msg; - HTTPmsg__Types::HeaderLines header = NULL_VALUE; - OCTETSTRING body=OCTETSTRING(0, (const unsigned char*)""); - const char *cc_first = (const char *)first; - //fprintf(stderr, "first: %s\n", cc_first); - int version__major, version__minor, statusCode; - - char* method_name; - const char* pos = strchr(cc_first, ' '); - if(pos == NULL) - { - TTCN_Logger::log(TTCN_DEBUG, "could not find space in the first line of response: <%s>", cc_first); - decoding_params.isMessage = FALSE; - decoding_params.error = TRUE; - break; - } - method_name = (char*)Malloc(pos - cc_first + 1); - strncpy(method_name, cc_first, pos - cc_first); - method_name[pos - cc_first] = '\0'; - - char* stext = (char*)Malloc(strlen(cc_first)); - stext[0] = '\0'; - - TTCN_Logger::log(TTCN_DEBUG, "method_name: <%s>", method_name); - if(strncasecmp(method_name, "HTTP/", 5) == 0) - { - // The first line contains a response like HTTP/1.1 200 OK - isResponse = true; - - if(sscanf(cc_first, "HTTP/%d.%d %d %[^\r]", &version__major, &version__minor, - &statusCode, stext) < 3) - { - decoding_params.isMessage = FALSE; - decoding_params.error = TRUE; - Free(method_name); - Free(stext); - break; - } - if (version__minor == 0) - decoding_params.non_persistent_connection = TRUE; - } - else - { - isResponse = false; - // The first line contains a request - // like "POST / HTTP/1.0" - if(sscanf(pos + 1, "%s HTTP/%d.%d", - stext, &version__major, &version__minor ) != 3) - { - decoding_params.isMessage = FALSE; - decoding_params.error = TRUE; - Free(method_name); - Free(stext); - break; - } - } - - // Additional header lines - TTCN_Logger::log(TTCN_DEBUG, "Decoding the headers"); - HTTP_decode_header(buffer, header, decoding_params, socket_debugging, isResponse, test_port_type, test_port_name); - TTCN_Logger::log(TTCN_DEBUG, "Headers decoded. %s headers.", decoding_params.isMessage ? "Valid" : "Invalid"); - - if(isResponse && decoding_params.content_length==-1){ - if( (statusCode>99 && statusCode <200) || statusCode==204 || statusCode==304 ) decoding_params.content_length=0; - } - - if(decoding_params.isMessage) - HTTP_decode_body(buffer, body, decoding_params, connection_closed, socket_debugging, test_port_type, test_port_name); - - if(decoding_params.isMessage) - { - TTCN_Logger::log(TTCN_DEBUG, "Message successfully decoded"); - bool foundBinaryCharacter = false; - - int len = body.lengthof(); - const unsigned char* ptr = (const unsigned char*)body; - for(int i = 0; i < len && !foundBinaryCharacter; i++) - { - if(!isascii(ptr[i])) - foundBinaryCharacter = true; - } - if(foundBinaryCharacter) - TTCN_Logger::log(TTCN_DEBUG, "Binary data found"); - if(isResponse) - { - if(foundBinaryCharacter) - { - HTTPmsg__Types::HTTPResponse__binary__body& response_binary = msg.response__binary(); - response_binary.client__id() = OMIT_VALUE; - response_binary.version__major() = version__major; - response_binary.version__minor() = version__minor; - response_binary.statuscode() = statusCode; - if(strlen(stext) > 0) - response_binary.statustext() = CHARSTRING(stext); - else - response_binary.statustext() = ""; - response_binary.header() = header; - response_binary.body() = body; - } - else - { - HTTPmsg__Types::HTTPResponse& response = msg.response(); - response.client__id() = OMIT_VALUE; - response.version__major() = version__major; - response.version__minor() = version__minor; - response.statuscode() = statusCode; - if(strlen(stext) > 0) - response.statustext() = CHARSTRING(stext); - else - response.statustext() = ""; - response.header() = header; - response.body() = oct2char(body); - } - } - else - { - if(foundBinaryCharacter) - { - HTTPmsg__Types::HTTPRequest__binary__body& request_binary = msg.request__binary(); - request_binary.client__id() = OMIT_VALUE; - request_binary.method() = CHARSTRING(method_name); - request_binary.uri() = CHARSTRING(stext); - request_binary.version__major() = version__major; - request_binary.version__minor() = version__minor; - request_binary.header() = header; - request_binary.body() = body; - } - else - { - HTTPmsg__Types::HTTPRequest& request = msg.request(); - request.client__id() = OMIT_VALUE; - request.method() = CHARSTRING(method_name); - request.uri() = CHARSTRING(stext); - request.version__major() = version__major; - request.version__minor() = version__minor; - request.header() = header; - request.body() = oct2char(body); - } - } - //incoming_message(msg); <- outer function calls if necessary - } - Free(method_name); - Free(stext); - } - break; - case BUFFER_CRLF: - case BUFFER_FAIL: - decoding_params.error = TRUE; - case FALSE: - decoding_params.isMessage = FALSE; - } - - if(decoding_params.error) - { - - if(buffer->get_read_len() > 0) - msg.erronous__msg().msg() = CHARSTRING(buffer->get_read_len(), (const char*)buffer->get_read_data()); - else - msg.erronous__msg().msg() = "The previous message is erronous."; - msg.erronous__msg().client__id() = OMIT_VALUE; - //incoming_message(msg); - buffer->clear(); - decoding_params.isMessage = TRUE; - } - - if(decoding_params.isMessage) - { - buffer->cut(); - } - - return decoding_params.isMessage; -} - -void HTTP_decode_header(TTCN_Buffer* buffer, HTTPmsg__Types::HeaderLines& headers, Decoding_Params& decoding_params, - const bool socket_debugging, const bool resp, const char *test_port_type, const char *test_port_name) -{ - CHARSTRING cstr; - const char* separator; - char* header_name = NULL; - bool length_received = false; - - for(int i = 0; ; i++) - { - switch(get_line(buffer, cstr, true)) - { - case TRUE: - { - char h[cstr.lengthof() + 1]; - strcpy(h, (const char*)cstr); - separator = strchr(h, ':'); - if(separator) - { - header_name = (char*)Realloc(header_name, separator - h + 1); - strncpy(header_name, h, separator - h); - header_name[separator - h] = '\0'; - separator++; - while(*separator && isspace(separator[0])) - separator++; - char* end = h + strlen(h); - while(isspace((end - 1)[0])) - { - end--; - *end = '\0'; - } - headers[i] = HTTPmsg__Types::HeaderLine(header_name, separator); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "+Header line: <%s: %s>", header_name, separator); - - if(!strcasecmp(header_name, "Content-Length")) - { sscanf(separator, "%d", &decoding_params.content_length); length_received=true;} - else if(!strcasecmp(header_name, "Connection") && !strcasecmp(separator, "close")) - decoding_params.non_persistent_connection = TRUE; - else if(!strcasecmp(header_name, "Connection") && !strcasecmp(separator, "keep-alive")) - decoding_params.non_persistent_connection = FALSE; - else if(!strcasecmp(header_name, "Transfer-Encoding") && !strcasecmp(separator, "chunked")) - decoding_params.chunked_body = TRUE; - - } - continue; - } - case BUFFER_FAIL: - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "BUFFER_FAIL in HTTP_decode_header!"); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "whole bufer now: <%s>", (const char*)buffer->get_data()); - log_to_hexa(buffer); - decoding_params.error = TRUE; - case FALSE: - decoding_params.isMessage = FALSE; - case BUFFER_CRLF: - break; - } - break; - } - if(decoding_params.isMessage && !resp && !length_received && !decoding_params.chunked_body) decoding_params.content_length=0; - Free(header_name); -} - -void HTTP_decode_body(TTCN_Buffer* buffer, OCTETSTRING& body, Decoding_Params& decoding_params, const bool connection_closed, - const bool socket_debugging, const char *test_port_type, const char *test_port_name) -{ - if(buffer->get_read_len() > 0) - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "Decoding body, buffer length: %d", buffer->get_read_len()); - - if (decoding_params.chunked_body) - { - HTTP_decode_chunked_body(buffer, body, decoding_params, socket_debugging, test_port_type, test_port_name); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "--------- After chunked body decoding:"); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "--------- non_persistent_connection: %s", decoding_params.non_persistent_connection ? "yes" : "no"); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "--------- chunked_body: %s", decoding_params.chunked_body ? "yes" : "no"); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "--------- content_length: %d", decoding_params.content_length); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "--------- error: %s", decoding_params.error ? "yes" : "no"); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "--------- isMessage: %s", decoding_params.isMessage ? "yes" : "no"); - - } - else if(decoding_params.content_length >= 0) - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "lengthof body: %d, content_length given: %d", buffer->get_read_len(), decoding_params.content_length); - if(buffer->get_read_len() >= (unsigned)decoding_params.content_length) - { - body = OCTETSTRING(decoding_params.content_length, buffer->get_read_data()); - buffer->set_pos(buffer->get_pos() + decoding_params.content_length); - } - else - { - decoding_params.isMessage = FALSE; - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "The decoder's body length %d is less than the Content_length in the message header %d; The HTTP port is waiting for additional data.", buffer->get_read_len(), decoding_params.content_length); - buffer->set_pos(buffer->get_pos() + buffer->get_read_len()); - } - } - else if(connection_closed) - { - /* if(buffer->get_read_len() >= 0)*/ // Always true - { - body = OCTETSTRING(buffer->get_read_len(), buffer->get_read_data()); - buffer->set_pos(buffer->get_pos() + buffer->get_read_len()); - } - } else { - decoding_params.isMessage = FALSE; - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "The HTTP port is waiting for additional data."); - buffer->set_pos(buffer->get_pos() + buffer->get_read_len()); - } -} - -void HTTP_decode_chunked_body(TTCN_Buffer* buffer, OCTETSTRING& body, Decoding_Params& decoding_params, - const bool socket_debugging, const char *test_port_type, const char *test_port_name) -{ - OCTETSTRING chunk; - CHARSTRING line; - unsigned int chunk_size = 1; - - while(chunk_size > 0) - { - switch(get_line(buffer, line, false)) - { - case TRUE: - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "line: <%s>", (const char*)line); - if(sscanf((const char *)line, "%x", &chunk_size) != 1) - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "No chunksize found"); - body = body + OCTETSTRING(line.lengthof(), (const unsigned char*)(const char*)line); - chunk_size = 0; - decoding_params.error = TRUE; - } - else - { - if(chunk_size == 0) - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "chunk_size 0 -> closing chunk"); - if(get_line(buffer, line, false) == BUFFER_CRLF) - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "Trailing \\r\\n ok!"); - else - TTCN_Logger::log(TTCN_WARNING,"Trailing \\r\\n after the closing chunk is not present, instead it is <%s>!", (const char*)line); - } -/* else if(chunk_size < 0) // the chunk_size is unsigned, never true - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "chunk_size less than 0"); - decoding_params.error = TRUE; - chunk_size = 0; - }*/ - else // chunk_size > 0 - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "processing next chunk, size: %d", chunk_size); - if(buffer->get_read_len() < chunk_size) - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "chunk size is greater than the buffer length, more data is needed"); - decoding_params.isMessage = FALSE; - chunk_size = 0; - } - } - } - break; - case FALSE: - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "buffer does not contain a whole line, more data is needed"); - decoding_params.isMessage = FALSE; - chunk_size = 0; - break; - case BUFFER_CRLF: - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "beginning CRLF removed"); - continue; - case BUFFER_FAIL: - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "BUFFER_FAIL"); - decoding_params.error = FALSE; - chunk_size = 0; - break; - default: - decoding_params.isMessage = FALSE; - chunk_size = 0; - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "more data is needed"); - } - - body = body + OCTETSTRING(chunk_size, buffer->get_read_data()); - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "pull %d bytes from %d", chunk_size, buffer->get_read_len()); - buffer->set_pos(buffer->get_pos() + chunk_size); - // hack - if(buffer->get_read_len() && buffer->get_read_data()[0] == '\n') // don't read from the buffer if there is nothing in it. - { - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name,"hack: adjusted buffer position after the '\\n'"); - buffer->set_pos(buffer->get_pos() + 1); - } - HTTPmsg__Types::log_debug(socket_debugging, test_port_type, test_port_name, "remaining data: <%s>, len: %d", (const char *)CHARSTRING(buffer->get_read_len(), (const char*)buffer->get_read_data()), buffer->get_read_len()); - } -} - -int get_line(TTCN_Buffer* buffer, CHARSTRING& to, const bool concatenate_header_lines) -{ - unsigned int i = 0; - const unsigned char *cc_to = buffer->get_read_data(); - - if(!buffer->get_read_len()) - return FALSE; - - while(1) - { - for( ; i < buffer->get_read_len() && cc_to[i] != '\0' && cc_to[i] != '\r' && cc_to[i] != '\n'; i++); - - if(i >= buffer->get_read_len()) - { - to = CHARSTRING(""); - return FALSE; - } - else - { - if(cc_to[i] == '\n') {// - if(report_lf){ - switch(HTTPmsg__Types::crlf__mode){ - case HTTPmsg__Types::strict__crlf__mode::ERROR_: - return BUFFER_FAIL; - break; - case HTTPmsg__Types::strict__crlf__mode::WARNING__ONCE: - report_lf=false; - // no break - case HTTPmsg__Types::strict__crlf__mode::WARNING: - TTCN_warning("Missing '\\r'."); - break; - default: - break; - } - } - if(i > 0 && (i + 1) < buffer->get_read_len() && concatenate_header_lines && (cc_to[i+1] == ' ' || cc_to[i+1] == '\t')) - i += 1; - else - { - to = CHARSTRING(i, (const char*)cc_to); - buffer->set_pos(buffer->get_pos() + i + 1); - return i == 0 ? BUFFER_CRLF : TRUE; - } - - } else - { - if((i + 1) < buffer->get_read_len() && cc_to[i + 1] != '\n') - return BUFFER_FAIL; - else if(i > 0 && (i + 2) < buffer->get_read_len() && concatenate_header_lines && (cc_to[i+2] == ' ' || cc_to[i+2] == '\t')) - i += 2; - else - { - to = CHARSTRING(i, (const char*)cc_to); - buffer->set_pos(buffer->get_pos() + i + 2); - return i == 0 ? BUFFER_CRLF : TRUE; - } - } - } - } -} - -void log_to_hexa(TTCN_Buffer* buffer) -{ - int len = buffer->get_read_len(); - const unsigned char* ptr = buffer->get_read_data(); - for(int i = buffer->get_pos(); i < len; i++) - { - TTCN_Logger::log_event(" %02X", ptr[i]); - } -} - - -const char* HTTPmsg__PT::local_port_name() { return "";} -const char* HTTPmsg__PT::remote_address_name() { return "";} -const char* HTTPmsg__PT::local_address_name() { return "";} -const char* HTTPmsg__PT::remote_port_name() { return "";} -const char* HTTPmsg__PT::use_notification_ASPs_name() { return "use_notification_ASPs";} -const char* HTTPmsg__PT::halt_on_connection_reset_name(){ return "";} -const char* HTTPmsg__PT::server_mode_name() { return "";} -const char* HTTPmsg__PT::socket_debugging_name() { return "http_debugging";} -const char* HTTPmsg__PT::nagling_name() { return "";} -const char* HTTPmsg__PT::server_backlog_name() { return "server_backlog";} -const char* HTTPmsg__PT::ssl_use_ssl_name() { return "";} -const char* HTTPmsg__PT::ssl_use_session_resumption_name() { return "";} -const char* HTTPmsg__PT::ssl_private_key_file_name() { return "KEYFILE";} -const char* HTTPmsg__PT::ssl_trustedCAlist_file_name() { return "TRUSTEDCALIST_FILE";} -const char* HTTPmsg__PT::ssl_certificate_file_name() { return "CERTIFICATEFILE";} -const char* HTTPmsg__PT::ssl_password_name() { return "PASSWORD";} -const char* HTTPmsg__PT::ssl_verifycertificate_name() { return "VERIFYCERTIFICATE";} - - -} //eof namespace "HTTPmsg__PortType" - -namespace HTTPmsg__Types { - -using namespace HTTPmsg__PortType; - -//========================================================================= -//==== Working Functions independent from sending and receiving:=== -//========================================================================= - -//from AbstractSocket -void log_debug(const bool socket_debugging, const char *test_port_type, const char *test_port_name, const char *fmt, ...) -{ - if (socket_debugging) { - TTCN_Logger::begin_event(TTCN_DEBUG); - if ((test_port_type!=NULL && test_port_name!=NULL)&&(strlen(test_port_type)!=0 && strlen(test_port_name)!=0)) - TTCN_Logger::log_event("%s test port (%s): ", test_port_type, test_port_name); - va_list args; - va_start(args, fmt); - TTCN_Logger::log_event_va_list(fmt, args); - va_end(args); - TTCN_Logger::end_event(); - } -} - -void log_warning(const char *test_port_type, const char *test_port_name, const char *fmt, ...) -{ - TTCN_Logger::begin_event(TTCN_WARNING); - if (test_port_type!=NULL && test_port_name!=NULL) - TTCN_Logger::log_event("%s test port (%s): ", test_port_type, test_port_name); - va_list args; - va_start(args, fmt); - TTCN_Logger::log_event_va_list(fmt, args); - va_end(args); - TTCN_Logger::end_event(); -} - -//========================================================================= -//==== Encoder-decoder Functions independent from sending and receiving:=== -//========================================================================= - -/********************************************************* -* Function: enc__HTTPMessage -* -* Purpose: -* To encode msg type of HTTPMessage into OCTETSTRING separated from sending functionality -* It is for users using this test port as a protocol module -* -* References: -* RFC2616 -* -* Precondition: -* msg is filled in properly -* Postcondition: -* -* -* Parameters: -* msg - the HTTP Message to be encoded -* -* Return Value: -* OCTETSTRING - the encoded message -* Detailed Comments: -* - -* -*********************************************************/ -OCTETSTRING enc__HTTPMessage( const HTTPmsg__Types::HTTPMessage& msg ) { - TTCN_Buffer buf; - buf.clear(); - HTTPmsg__PortType::f_HTTP_encodeCommon( msg, buf); - return OCTETSTRING(buf.get_len(), buf.get_data()); -} -/********************************************************* -* Function: dec__HTTPMessage -* -* Purpose: -* To decode msg type of OCTETSTRING into HTTPMessage separated from receiving functionality -* It is for users using this test port as a protocol module -* -* References: -* RFC2616 -* -* Precondition: -* stream is filled in properly -* Postcondition: -* - -* -* Parameters: -* stream - the message to be decoded -* msg - reference to the record type of HTTPMessage which will contain the decoded value if the return value less than the length of the original stream -* Return Value: -* integer - the length of the remaining data which is not decoded yet. -* Detailed Comments: -* If the full stream is decoded, the return value is zero -* If nothing is decoded (decoding failed) the return value equals to the original length of the stream -* -*********************************************************/ - -INTEGER dec__HTTPMessage(OCTETSTRING const& stream, HTTPMessage& msg, const BOOLEAN& socket_debugging = dec__HTTPMessage_socket__debugging_defval ) -{ - TTCN_Logger::log(TTCN_DEBUG, "starting HTTPmsg__Types::dec__HTTPMessage"); - TTCN_Buffer *buf_p = new TTCN_Buffer() ; - buf_p->put_os(stream); - - int buf_len = buf_p->get_read_len(); - if( buf_len > 0) - { - if(f_HTTP_decodeCommon(buf_p, msg, true, socket_debugging, NULL, NULL)) - { - log_debug(socket_debugging,"","","dec__HTTPMessage, after decoding:\nbuf_len: %d\nget_len: %d\nget_read_len:%d", - buf_len, - buf_p->get_len(), - buf_p->get_read_len()); - buf_len = buf_p->get_read_len(); //remaining data length - } - else - buf_len = -1; - - - } else buf_len = -1; - delete buf_p; - return buf_len; -} - -}//namespace diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.hh b/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.hh deleted file mode 100644 index f0eab18728259fa66e91bd0ef71b0eda04254b27..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PT.hh +++ /dev/null @@ -1,166 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2019 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Eduard Czimbalmos - initial implementation and initial documentation -* Istvan Ovary -* Peter Dimitrov -* Balasko Jeno -* Gabor Szalai -******************************************************************************/ -// -// File: HTTPmsg_PT.hh -// Description: HTTP test port header file -// Rev: R9B -// Prodnr: CNL 113 469 - - -#ifndef HTTPmsg__PT_HH -#define HTTPmsg__PT_HH - -#include "HTTPmsg_PortType.hh" -#include "Abstract_Socket.hh" - -#define BUFFER_FAIL 2 -#define BUFFER_CRLF 3 -//============================== -namespace HTTPmsg__PortType { -//============================== -typedef struct { - bool non_persistent_connection; - bool chunked_body; - int content_length; - bool error; - bool isMessage; -} Decoding_Params; - -#ifdef AS_USE_SSL -class HTTPmsg__PT : public SSL_Socket, public HTTPmsg__PT_BASE { -#else - class HTTPmsg__PT : public Abstract_Socket, public HTTPmsg__PT_BASE { -#endif - -public: - - HTTPmsg__PT(const char *par_port_name = NULL); - ~HTTPmsg__PT(); - - void set_parameter(const char *parameter_name, const char *parameter_value); - -protected: - void user_map(const char *system_port); - void user_unmap(const char *system_port); - - void user_start(); - void user_stop(); - - void outgoing_send(const HTTPmsg__Types::Close& send_par); - void outgoing_send(const HTTPmsg__Types::Connect& send_par); - void outgoing_send(const HTTPmsg__Types::Listen& send_par); - void outgoing_send(const HTTPmsg__Types::Half__close& send_par); - void outgoing_send(const HTTPmsg__Types::Shutdown& send_par); - void outgoing_send(const HTTPmsg__Types::HTTPMessage& send_par); - - const char* local_port_name(); - const char* remote_address_name(); - const char* local_address_name(); - const char* remote_port_name(); - const char* use_notification_ASPs_name(); - const char* halt_on_connection_reset_name(); - const char* server_mode_name(); - const char* socket_debugging_name(); - const char* nagling_name(); - const char* server_backlog_name(); - const char* ssl_use_ssl_name(); - const char* ssl_use_session_resumption_name(); - const char* ssl_private_key_file_name(); - const char* ssl_trustedCAlist_file_name(); - const char* ssl_certificate_file_name(); - const char* ssl_password_name(); - const char* ssl_verifycertificate_name(); - - void message_incoming(const unsigned char* msg, int length, int client_id = -1); - void Add_Fd_Read_Handler(int fd) { Handler_Add_Fd_Read(fd); } - void Add_Fd_Write_Handler(int fd) { Handler_Add_Fd_Write(fd); } - void Remove_Fd_Read_Handler(int fd) { Handler_Remove_Fd_Read(fd); } - void Remove_Fd_Write_Handler(int fd) { Handler_Remove_Fd_Write(fd); } - void Remove_Fd_All_Handlers(int fd) { Handler_Remove_Fd(fd); } - void Handler_Uninstall() { Uninstall_Handler(); } - void Timer_Set_Handler(double call_interval, boolean is_timeout = TRUE, - boolean call_anyway = TRUE, boolean is_periodic = TRUE) { - Handler_Set_Timer(call_interval, is_timeout, call_anyway, is_periodic); - } - -// overriden functions in order to distinguish between normal and SSL connections - virtual bool add_user_data(int client_id); - virtual bool remove_user_data(int client_id); - virtual int send_message_on_fd(int client_id, const unsigned char * message_buffer, int length_of_message); - virtual int send_message_on_nonblocking_fd(int client_id, const unsigned char * message_buffer, int length_of_message); - virtual int receive_message_on_fd(int client_id); - virtual void client_connection_opened(int client_id); - virtual void listen_port_opened(int port_number); - virtual void peer_connected(int client_id, const char * host, const int port); - - - virtual void peer_disconnected(int client_id); - virtual void peer_half_closed(int client_id); - virtual void remove_client(int client_id); - virtual void report_unsent(int client_id, int msg_length, int sent_length, const unsigned char* msg, const char* error_text); - -// HTTP specific functions - - // returns encoded message in buf - //void HTTP_encode(const HTTPmsg__Types::HTTPMessage &msg, TTCN_Buffer& buf); //replaced by f_HTTP_encodeCommon - bool HTTP_decode(TTCN_Buffer*, const int, const bool connection_closed = false); - //void HTTP_decode_header(TTCN_Buffer*, HTTPmsg__Types::HeaderLines&, Decoding_Params&); //moved outside the class - //void HTTP_decode_body(TTCN_Buffer*, OCTETSTRING&, Decoding_Params&, const bool); //moved outside the class - //void HTTP_decode_chunked_body(TTCN_Buffer*, OCTETSTRING&, Decoding_Params&); //moved outside the class - -private: - void Handle_Fd_Event(int fd, boolean is_readable, boolean is_writable, boolean is_error); - void Handle_Timeout(double time_since_last_call); - - //int get_line(TTCN_Buffer*, CHARSTRING&, const bool concatenate_header_lines = true); - //void log_to_hexa(TTCN_Buffer*); - - bool adding_ssl_connection; - bool adding_client_connection; - bool server_use_ssl; - - bool use_notification_ASPs; - - bool use_send_failed; - const HTTPmsg__Types::HTTPMessage* last_msg; -}; -//=================================== -//== Functions outside the class: === -//=================================== -void f_setClientId( HTTPmsg__Types::HTTPMessage& msg, const int client_id); -void f_HTTP_encodeCommon(const HTTPmsg__Types::HTTPMessage& msg, TTCN_Buffer& buf); -bool f_HTTP_decodeCommon(TTCN_Buffer* buffer,HTTPmsg__Types::HTTPMessage& msg, const bool connection_closed, - const bool socket_debugging, const char *test_port_type, const char *test_port_name); -int get_line(TTCN_Buffer* buffer, CHARSTRING& to, const bool concatenate_header_lines); -void log_to_hexa(TTCN_Buffer*); - -void HTTP_decode_header(TTCN_Buffer*, HTTPmsg__Types::HeaderLines&, Decoding_Params&,const bool socket_debugging, const bool resp,const char *test_port_type, const char *test_port_name); - -void HTTP_decode_body(TTCN_Buffer*, OCTETSTRING&, Decoding_Params&, const bool, - const bool socket_debugging, const char *test_port_type, const char *test_port_name); - -void HTTP_decode_chunked_body(TTCN_Buffer*, OCTETSTRING&, Decoding_Params&, - const bool socket_debugging, const char *test_port_type, const char *test_port_name); -}//namespace - -//============================== -namespace HTTPmsg__Types -//=============================== -{ -void log_debug(const bool socket_debugging, const char *test_port_type, const char *test_port_name, const char *fmt, ...); -void log_warning(const char *test_port_type, const char *test_port_name, const char *fmt, ...); -} - -#endif diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PortType.ttcn b/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PortType.ttcn deleted file mode 100644 index 747f614fa9f14d5992d79fcf605ba6e29296ef17..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_PortType.ttcn +++ /dev/null @@ -1,43 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2019 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Eduard Czimbalmos - initial implementation and initial documentation -* Istvan Ovary -* Peter Dimitrov -* Balasko Jeno -* Gabor Szalai -******************************************************************************/ -// -// File: HTTPmsg_Types.ttcn -// Description: HTTP port type definition -// Rev: R9B -// Prodnr: CNL 113 469 - - -module HTTPmsg_PortType -{ - import from HTTPmsg_Types all; - - type port HTTPmsg_PT message - { - // Connection handling ASPs - inout Close; - out Connect; - in Connect_result; - in Client_connected; - inout Half_close; - out Listen; - in Listen_result; - inout Shutdown; - - in Send_failed; - - // Message to send and receive - inout HTTPMessage; - }; -} diff --git a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_Types.ttcn b/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_Types.ttcn deleted file mode 100644 index 493440fab99ad53f48f23b53492e011e808be6a9..0000000000000000000000000000000000000000 --- a/ttcn/modules/titan.TestPorts.HTTPmsg/module/src/HTTPmsg_Types.ttcn +++ /dev/null @@ -1,163 +0,0 @@ -/****************************************************************************** -* Copyright (c) 2000-2019 Ericsson Telecom AB -* All rights reserved. This program and the accompanying materials -* are made available under the terms of the Eclipse Public License v2.0 -* which accompanies this distribution, and is available at -* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html -* -* Contributors: -* Eduard Czimbalmos - initial implementation and initial documentation -* Istvan Ovary -* Peter Dimitrov -* Balasko Jeno -* Gabor Szalai -******************************************************************************/ -// -// File: HTTPmsg_Types.ttcn -// Description: HTTP Message and TCP connection handling ASP types -// Rev: R9B -// Prodnr: CNL 113 469 - - -module HTTPmsg_Types { - -modulepar { - boolean tsp_socket_debugging := false; - strict_crlf_mode crlf_mode:=WARNING_ONCE; -} - -external function enc_HTTPMessage( in HTTPMessage msg) return octetstring; -external function dec_HTTPMessage( in octetstring stream, inout HTTPMessage msg, in boolean socket_debugging := tsp_socket_debugging) return integer; - - -type enumerated strict_crlf_mode {ERROR, WARNING, WARNING_ONCE, ACCEPT}; -/* Basic types */ - -type record HeaderLine { - charstring header_name, - charstring header_value -}; - -type record of HeaderLine HeaderLines; - -type record HTTPResponse { - // client_id is used only in case of multiple connections, otherwise set it to omit - integer client_id optional, - integer version_major, - integer version_minor, - integer statuscode, - charstring statustext, - HeaderLines header, - charstring body -}; - -type record HTTPRequest { - // client_id is used only in case of multiple connections, otherwise set it to omit - integer client_id optional, - charstring method, - charstring uri, - integer version_major, - integer version_minor, - HeaderLines header, - charstring body -}; - -type record HTTPResponse_binary_body { - // client_id is used only in case of multiple connections, otherwise set it to omit - integer client_id optional, - integer version_major, - integer version_minor, - integer statuscode, - charstring statustext, - HeaderLines header, - octetstring body -}; - -type record HTTPRequest_binary_body { - // client_id is used only in case of multiple connections, otherwise set it to omit - integer client_id optional, - charstring method, - charstring uri, - integer version_major, - integer version_minor, - HeaderLines header, - octetstring body -}; - -type record HTTP_erronous_msg { - // client_id is used only in case of multiple connections, otherwise set it to omit - integer client_id optional, - charstring msg -} - -type union HTTPMessage { - HTTPResponse response, - HTTPRequest request, - HTTPResponse_binary_body response_binary, - HTTPRequest_binary_body request_binary, - HTTP_erronous_msg erronous_msg -}; - -/* - * Connection handling ASPs - */ - -// Closes all connections, or the specified one only. -// client_id = omit means close all connections. -// Close comes when a connection gets disconnected -type record Close { - // when sending, client_id shall be used in case of multiple connections - // when receiving, client_id determines the client which has disconnected - integer client_id optional -}; - -type record Connect { - charstring hostname, - integer portnumber, - boolean use_ssl -}; - -// Received by the client after Connect is sent. -// The client_id will be filled with -1 if unsuccessful. -// Returned client_id shall be used to distinguish between the open connections. -type record Connect_result { - integer client_id -} - -// Received when the server has accepted an incoming connection. -type record Client_connected { - charstring hostname, - integer portnumber (1..65535), - integer client_id -}; - -// Sent when the local end of the connection has to be shut down for writing. -// Received when the remote end of the connection has been shut down for writing. -type record Half_close { - integer client_id optional -}; - -type record Listen { - charstring local_hostname optional, - integer portnumber, - boolean use_ssl -}; - -// Received after Listen. Sends back the listening port number, -1 on fail -type record Listen_result { - integer portnumber (-1..65535) -}; - -type record Shutdown {}; - -// Used to report messages, which can't be sent because fo the broken connection -// Set the "report_failed_message" test port parameter to "yes" to enable the sending of this message !!!! -type record Send_failed { - HTTPMessage msg, // The unsent message - boolean already_half_closed // the connection already half closed - // true: the test port already enqued the half_close message - // false: the half_close is not enqued yet -} - - -} diff --git a/ttcn/patch_lib_http/LibItsHttp_JSONTypes.ttcn b/ttcn/patch_lib_http/LibItsHttp_JSONTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4760f2f882e5595046f8b88fc5735d7bd1718910 --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_JSONTypes.ttcn @@ -0,0 +1,9 @@ +module LibItsHttp_JSONTypes { // FIXME To be removed + + /** + * This file is volontary empry. You have to declare all XSD files required by your project + * In addition, the TTCN-3 module LibItsHttp_XmlMessageBodyTypes have to be updated too. + */ + // TODO Add here your custom RFCs import + +} // End of module LibItsHttp_JSONTypes diff --git a/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn b/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..a12e4c5dd01d63d9b48e9bb9a096d81d841e1458 --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_JsonMessageBodyTypes.ttcn @@ -0,0 +1,23 @@ +module LibItsHttp_JsonMessageBodyTypes { + + // LibNg112 + import from LibNg112_DequeueRegistration all; + + /** + * This file volontary contains a trivial declaration of the type JsonBody. + * In accordance with your TTCN-3 module LibItsHttp_JSONTypes, you have to change the JsonBody typing. + */ + // TODO Add here your custom RFCs import + + type union JsonBody { + // TODO Add here your custom variants + DequeueRegistrationRequest dequeueRegistrationRequest, + DequeueRegistrationResponse dequeueRegistrationResponse, + universal charstring raw + } with { + variant "" + } + +} with { + variant "" +} // End of module LibItsHttp_JsonMessageBodyTypes diff --git a/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn b/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4b31b78fc884e88b443fb385b709b58bc8600acc --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_JsonTemplates.ttcn @@ -0,0 +1,31 @@ +/** + * @author ETSI / STF569 + * @version $URL$ + * $ID:$ + * @desc This module provides the custom templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + */ +module LibItsHttp_JsonTemplates { + + // TODO Add here your custom RFCs import + + // LibItsHttp + import from LibItsHttp_JsonMessageBodyTypes all; + import from LibItsHttp_XMLTypes all; + + template (value) JsonBody m_json_body_raw( + in template (value) charstring p_raw + ) := { + raw := p_raw + } // End of template m_json_body_raw + + template (present) JsonBody mw_json_body_raw( + template (present) charstring p_raw := ? + ) := { + raw := p_raw + } // End of template mw_json_body_raw + +} // End of module LibItsHttp_JsonTemplates diff --git a/ttcn/patch_lib_http/LibItsHttp_Templates.ttcn b/ttcn/patch_lib_http/LibItsHttp_Templates.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..2ac488deb9ae055382c2b253422f7b10ab0e6183 --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_Templates.ttcn @@ -0,0 +1,382 @@ +/** + * @author ETSI / STF549 + * @version $URL$ + * $ID:$ + * @desc This module provides the templates for ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module LibItsHttp_Templates { + + // LibHttp + import from LibItsHttp_TypesAndValues all; + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_XmlMessageBodyTypes all; + import from LibItsHttp_JsonMessageBodyTypes all; + import from LibItsHttp_BinaryMessageBodyTypes all; + + group http_messages { + + template (value) HttpMessage m_http_request( + in template (value) Request p_request + ) := { + request := p_request + } // End of template m_http_request + + template (present) HttpMessage mw_http_request( + template (present) Request p_request := ? + ) := { + request := p_request + } // End of template mw_http_request + + template (value) HttpMessage m_http_response( + in template (value) Response p_response + ) := { + response := p_response + } // End of template m_http_response + + template (present) HttpMessage mw_http_response( + template (present) Response p_response := ? + ) := { + response := p_response + } // End of template mw_http_response + + } // End of group http_messages + + group http_headers { + + template (value) Header m_header_line( + in template (value) charstring p_header_name, + in template (value) charstring_list p_header_value + ) := { + header_name := p_header_name, + header_value := p_header_value + } // End of template m_header_line + + } // End of group http_headers + + group http_requests { + + template (omit) Request m_http_request_get( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) := { + method := "GET", + uri := p_uri, + version_major := c_http_version_major, + version_minor := c_http_version_minor, + header := p_headers, + body := p_body + } // End of template m_http_request_get + + template Request mw_http_request_get( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) := { + method := "GET", + uri := p_uri, + version_major := c_http_version_major, + version_minor := c_http_version_minor, + header := p_headers, + body := p_body + } // End of template mw_http_request_get + + template (omit) Request m_http_request_post( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "POST" + } // End of template m_http_request_post + + template Request mw_http_request_post( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "POST" + } // End of template mw_http_request_post + + template (omit) Request m_http_request_patch( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "PATCH" + } // End of template m_http_request_patch + + template Request mw_http_request_patch( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "PATCH" + } // End of template mw_http_request_patch + + template (omit) Request m_http_request_put( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "PUT" + } // End of template m_http_request_put + + template Request mw_http_request_put( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "PUT" + } // End of template mw_http_request_put + + template (omit) Request m_http_request_delete( + in charstring p_uri, + in template (value) Headers p_headers, + in template (omit) HttpMessageBody p_body := omit + ) modifies m_http_request_get := { + method := "DELETE" + } // End of template m_http_request_delete + + template Request mw_http_request_delete( + template (present) charstring p_uri := ?, + template (present) Headers p_headers := ?, + template HttpMessageBody p_body := * + ) modifies mw_http_request_get := { + method := "DELETE" + } // End of template mw_http_request_post + + } // End of group http_requests + + group http_responses { + + template (value) Response m_http_response_ok( + in template (value) HttpMessageBody p_body, + in template (value) Headers p_header + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := p_header, + body := p_body, + tls := omit, + mutual_tls := omit + } // End of template m_http_response_ok + + template (value) Response m_http_response_ok_no_body( + in template (value) Headers p_header + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := "OK", + header := p_header, + body := omit, + tls := omit, + mutual_tls := omit + } // End of template m_http_response_ok_no_body + + template (value) Response m_http_response_204_no_content( + in template (value) Headers p_header + ) modifies m_http_response_ok_no_body := { + statuscode := 204, + statustext := "No Content" + } // End of template m_http_response_204_no_content + + template (present) Response mw_http_response_ok( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ?, + template boolean p_tls := *, + template boolean p_mutual_tls := * + ) := { + version_major := 1, + version_minor := 1, + statuscode := 200, + statustext := ?, + header := p_header, + body := p_body, + tls := *, + mutual_tls := * + } // End of template mw_http_response_ok + + template (present) Response mw_http_response_201_created( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ?, + template boolean p_tls := *, + template boolean p_mutual_tls := * + ) modifies mw_http_response_ok := { + statuscode := 201, + statustext := "Created" + } // End of template mw_http_response_ok + + template (present) Response mw_http_response_202_accepted( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ?, + template boolean p_tls := *, + template boolean p_mutual_tls := * + ) modifies mw_http_response_ok := { + statuscode := 202, + statustext := "Accepted" + } // End of template mw_http_response_ok + + template (present) Response mw_http_response_204_no_content( + template (present) HttpMessageBody p_body := ?, + template (present) Headers p_header := ?, + template boolean p_tls := *, + template boolean p_mutual_tls := * + ) modifies mw_http_response_ok := { + statuscode := 204, + statustext := "No Content" + } // End of template mw_http_response_ok + + template (value) Response m_http_response_ko( + in template (value) HttpMessageBody p_body, + in template (value) Headers p_header, + in template (value) integer p_statuscode := 404, + in template (value) charstring p_statustext := "Not found" + ) := { + version_major := 1, + version_minor := 1, + statuscode := p_statuscode, + statustext := p_statustext, + header := p_header, + body := p_body, + tls := omit, + mutual_tls := omit + } // End of template m_http_response_ko + + template (value) Response m_http_response_ko_no_body( + in template (value) Headers p_header, + in template (value) integer p_statuscode := 404, + in template (value) charstring p_statustext := "Not found" + ) := { + version_major := 1, + version_minor := 1, + statuscode := p_statuscode, + statustext := p_statustext, + header := p_header, + body := omit, + tls := omit, + mutual_tls := omit + } // End of template m_http_response_ko_no_body + + template Response mw_http_response_ko( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) := { + version_major := 1, + version_minor := 1, + statuscode := complement(200), + statustext := ?, + header := p_header, + body := p_body, + tls := *, + mutual_tls := * + } // End of template mw_http_response_ko + + template Response mw_http_response_400_bad_request( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 400, + statustext := "Bad Request" + } // End of template mw_http_response_400_bad_request + + template Response mw_http_response_401_unauthorized( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 401, + statustext := "Unauthorized" + } // End of template mw_http_response_401_unauthorized + + template Response mw_http_response_403_forbidden( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 403, + statustext := "Forbidden" + } // End of template mw_http_response_403_forbidden + + template Response mw_http_response_404_not_found( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 404, + statustext := "Not Found" + } // End of template mw_http_response_404_not_found + + template Response mw_http_response_412_precondition_failed( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ? + ) modifies mw_http_response_ko := { + statuscode := 412, + statustext := "Precondition Failed" + } // End of template mw_http_response_412_not_found + + template Response mw_http_response_4XX( + template HttpMessageBody p_body := *, + template (present) Headers p_header := ?, + template (present) integer p_status_code := 400, + template (present) charstring p_status_text := "Bad Request" + ) modifies mw_http_response_ko := { + statuscode := p_status_code, + statustext := p_status_text + } // End of template mw_http_response_4XX + + } // End of group http_responses + + group http_xml_body { + + template (value) HttpMessageBody m_http_message_body_xml( + in template (value) XmlBody p_xml_body + ) := { + xml_body := p_xml_body + } // End of template m_http_message_body_xml + + template (present) HttpMessageBody mw_http_message_body_xml( + template (present) XmlBody p_xml_body := ? + ) := { + xml_body := p_xml_body + } // End of template mw_http_message_body_xml + + } // End of group http_xml_body + + group http_json_body { + + template (value) HttpMessageBody m_http_message_body_json( + in template (value) JsonBody p_json_body + ) := { + json_body := p_json_body + } // End of template m_http_message_body_json + + template (present) HttpMessageBody mw_http_message_body_json( + template (present) JsonBody p_json_body := ? + ) := { + json_body := p_json_body + } // End of template mw_http_message_body_json + + } // End of group http_json_body + + group http_binary_body { + + template (value) HttpMessageBody m_http_message_body_binary( + in template (value) BinaryBody p_binary_body + ) := { + binary_body := p_binary_body + } // End of template m_http_message_body_binary + + template (present) HttpMessageBody mw_http_message_body_binary( + template (present) BinaryBody p_binary_body := ? + ) := { + binary_body := p_binary_body + } // End of template mw_http_message_body_binary + + } // End of group http_binary_body + +} // End of module LibItsHttp_Templates diff --git a/ttcn/patch_lib_http/LibItsHttp_TypesAndValues.ttcn b/ttcn/patch_lib_http/LibItsHttp_TypesAndValues.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..bb4b004144f6085c28e6186175464ee120436e18 --- /dev/null +++ b/ttcn/patch_lib_http/LibItsHttp_TypesAndValues.ttcn @@ -0,0 +1,75 @@ +/** + * @author ETSI / STF545 + * @version $URL$ + * $ID:$ + * @desc This module provides the types and values used by ITS HTTP based protocols. + * @copyright ETSI Copyright Notification + * No part may be reproduced except as authorized by written permission. + * The copyright and the foregoing restriction extend to reproduction in all media. + * All rights reserved. + * @see ETSI TS 103 478 + */ +module LibItsHttp_TypesAndValues { + + // LibHttp + import from LibItsHttp_MessageBodyTypes all; + import from LibItsHttp_Pics all; + + const charstring c_header_host := "Host"; + const charstring c_header_content_type := "Content-Type"; + const charstring c_header_content_text := "Content-Text"; + const charstring c_header_content_length := "Content-Length"; + const charstring c_header_accept := "Accept"; + const charstring c_header_connection := "Connection"; + const charstring c_header_pragma := "Pragma"; + const charstring c_header_cache_control := "Cache-Control"; + const charstring c_header_authorization := "Authorization"; + + const integer c_http_version_major := PICS_HTTP_VERSION_MAJOR; + const integer c_http_version_minor := PICS_HTTP_VERSION_MINOR; + + type record of charstring charstring_list; + type record Header { + charstring header_name, + charstring_list header_value optional + } with { + variant "FIELDORDER(msb)" + } + + type record of Header Headers; + + type record Request { + charstring method, + charstring uri, + integer version_major, + integer version_minor, + Headers header, + HttpMessageBody body optional + } with { + variant "FIELDORDER(msb)" + } + + type record Response { + integer version_major, + integer version_minor, + integer statuscode, + charstring statustext, + Headers header, + HttpMessageBody body optional, + boolean tls optional, + boolean mutual_tls optional + } with { + variant "FIELDORDER(msb)" + } + + type union HttpMessage { + Response response, + Request request + } with { + variant "" + } + +} with { + variant "" + encode "HttpCodec" +} // End of module LibItsHttp_TypesAndValues diff --git a/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn b/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn index d925af3093171e73a1e8fb653cc06f6a50d7f316..302248f44424ab4e3bc9e85a69fae741ee7be4dc 100644 --- a/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn +++ b/ttcn/patch_lib_http/LibItsHttp_XmlMessageBodyTypes.ttcn @@ -1,52 +1,56 @@ -module LibItsHttp_XmlMessageBodyTypes { - - // LibItsHttp - import from LibItsHttp_XMLTypes all; - - import from XSD all; - - // RFC5985 Held - import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all - with { - extension "File:../xsd/RFC5985_held.xsd"; - } - - // RFC3863 PIDF - import from urn_ietf_params_xml_ns_pidf language "XSD" all - with { - extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" - } - - // RFC5222 - import from urn_ietf_params_xml_ns_lost1 language "XSD" all - with { - extension "File:../xsd/RFC5222_lost.xsd"; - } - - /** - * This file volontary contains a trivial declaration of the type XmlBody. - * In accordance with your TTCN-3 module LibItsHttp_XMLTypes, you have to change the XmlBody typing. - */ - // TODO Add here your custom RFCs import - - type union XmlBody { - // TODO Add here your custom variants - LocationRequest locationRequest, - LocationResponse locationResponse, - Presence presence, - ErrorType errorType, - FindService findServiceRequest, - FindServiceResponse findServiceResponse, - ListServices listServices, - ListServicesResponse listServicesResponse, - ListServicesByLocation listServicesByLocation, - ListServicesByLocationResponse listServicesByLocationResponse, - ExceptionContainer exceptionContainer, - charstring raw - } with { - variant "" - } - -} with { - variant "" -} // End of LibItsHttp_XmlMessageBodyTypes +module LibItsHttp_XmlMessageBodyTypes { + + import from XSD all; + + // LibNg112 + import from LibNg112_TypesAndValues all; + + // LibItsHttp + import from LibItsHttp_XMLTypes all; + + // RFC5985 Held + import from urn_ietf_params_xml_ns_geopriv_held language "XSD" all + with { + extension "File:../xsd/RFC5985_held.xsd"; + } + + // RFC3863 PIDF + import from urn_ietf_params_xml_ns_pidf language "XSD" all + with { + extension "File:../xsd/urn_ietf_params_xml_ns_pidf.ttcn" + } + + // RFC5222 + import from urn_ietf_params_xml_ns_lost1 language "XSD" all + with { + extension "File:../xsd/RFC5222_lost.xsd"; + } + + /** + * This file volontary contains a trivial declaration of the type XmlBody. + * In accordance with your TTCN-3 module LibItsHttp_XMLTypes, you have to change the XmlBody typing. + */ + // TODO Add here your custom RFCs import + + type union XmlBody { + // TODO Add here your custom variants + LocationRequest locationRequest, + LocationResponse locationResponse, + Presence presence, + ErrorType errorType, + FindService findServiceRequest, + FindServiceResponse findServiceResponse, + ListServices listServices, + ListServicesResponse listServicesResponse, + ListServicesByLocation listServicesByLocation, + ListServicesByLocationResponse listServicesByLocationResponse, + ExceptionContainer exceptionContainer, + Redirect redirect, + charstring raw + } with { + variant "" + } + +} with { + variant "" +} // End of LibItsHttp_XmlMessageBodyTypes diff --git a/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn b/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn index dd57ffbf59d3850ada9be3e181278e1b7891d4b4..a4f30dfd0260e6f542768e5e41acccc8f557eeab 100644 --- a/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn +++ b/ttcn/patch_lib_http/LibItsHttp_XmlTemplates.ttcn @@ -94,8 +94,20 @@ module LibItsHttp_XmlTemplates { locationRequest := p_locationRequest } // End of template m_body_xml_location_request + template (present) XmlBody mw_body_xml_location_request( + template (present) LocationRequest p_locationRequest := ? + ) := { + locationRequest := p_locationRequest + } // End of template mw_body_xml_location_request + + template (value) XmlBody m_body_xml_location_response( + in template (value) LocationResponse p_locationResponse + ) := { + locationResponse := p_locationResponse + } // End of template m_body_xml_location_response + template (present) XmlBody mw_body_xml_location_response( - in template (present) LocationResponse p_locationResponse := ? + template (present) LocationResponse p_locationResponse := ? ) := { locationResponse := p_locationResponse } // End of template mw_body_xml_location_response @@ -160,6 +172,18 @@ module LibItsHttp_XmlTemplates { listServicesByLocationResponse := p_listServicesByLocationResponse } // End of template mw_body_xml_list_services_by_location_response + template (value) XmlBody m_body_xml_redirect_response( + in template (value) Redirect p_redirect + ) := { + redirect := p_redirect + } // End of template m_body_xml_list_services_request + + template (present) XmlBody mw_body_xml_redirect_response( + template (present) Redirect p_redirect := ? + ) := { + redirect := p_redirect + } // End of template mw_body_xml_list_services_by_location_response + template (present) XmlBody mw_body_xml_find_service_response_error( template (present) ExceptionContainer p_exceptionContainer := ? ) := { @@ -195,18 +219,22 @@ module LibItsHttp_XmlTemplates { //template (value) Uri m_uri(in template (value) Uri p_uri) := p_uri; template (value) LocationResponseType m_locationResponse( - in template (value) ReturnLocationType p_locationUriSet, + in template (omit) ReturnLocationType p_locationUriSet := omit, + in template (value) Presence p_presence, in template (value) LocationResponseType.elem_list p_elem_list := { } ) := { locationUriSet := p_locationUriSet, + presence := p_presence, elem_list := p_elem_list } // End of template m_locationResponse template LocationResponseType mw_locationResponse( template ReturnLocationType p_locationUriSet := *, + template Presence p_presence := *, template LocationResponseType.elem_list p_elem_list := * ) := { locationUriSet := p_locationUriSet, + presence := p_presence, elem_list := p_elem_list } // End of template mw_locationResponse @@ -320,15 +348,15 @@ module LibItsHttp_XmlTemplates { group rfc4119_geopriv10 { template (value) LocInfoType m_location_info( - in template (value) LocInfoType.elem_list p_elem_list + in template (value) LocInfoType.point p_point ) := { - elem_list := p_elem_list + point := p_point } // End of template m_location_info template (present) LocInfoType mw_location_info( - template (present) LocInfoType.elem_list p_elem_list := ? + template LocInfoType.point p_point := * ) := { - elem_list := p_elem_list + point := p_point } // End of template mw_location_info template (value) Geopriv m_geopriv( @@ -543,6 +571,30 @@ module LibItsHttp_XmlTemplates { locationUsed := p_locationUsed } // End of template mw_find_service_response + template Redirect mw_redirect( + template (present) XSD.Token p_source := ?, + template (present) XSD.Token p_target := ?, + template (present) XSD.Token p_message := ? + ) := { + lang := ?, + message_ := p_message, + source := p_source, + target := p_target, + notLost_list := {} + } // End of template mw_find_service_response + + template Redirect m_redirect( + template (present) XSD.Token p_source := ?, + template (present) XSD.Token p_target := ?, + template (present) XSD.Token p_message := "Out of jurisdiction" + ) := { + lang := "en", + message_ := p_message, + source := p_source, + target := p_target, + notLost_list := {} + } // End of template mw_find_service_response + template (omit) Mapping m_mapping( in template (value) Mapping.expires p_expires, in template (value) XSD.DateTime p_lastUpdated, @@ -681,6 +733,26 @@ module LibItsHttp_XmlTemplates { notLost_list := p_notLost_list } // End of template mw_exception_locationProfileUnrecognized + template (present) ExceptionContainer mw_exception_loop( + template (present) AppUniqueString p_source := ?, + template (present) Loop p_loop := ?, + template (present) ExceptionContainer.notLost_list p_notLost_list := ? + ) := { + source := p_source, + choice_list := { { loop := p_loop } }, + notLost_list := p_notLost_list + } // End of template mw_exception_loop + + template (present) ExceptionContainer mw_exception_badRequest( + template (present) AppUniqueString p_source := ?, + template (present) BadRequest p_bad := ?, + template (present) ExceptionContainer.notLost_list p_notLost_list := ? + ) := { + source := p_source, + choice_list := { { badRequest := p_bad } }, + notLost_list := p_notLost_list + } // End of template mw_exception_badRequest + template (value) LocationUsed m_location_used( in template (value) XSD.Token p_id ) := { @@ -841,6 +913,81 @@ module LibItsHttp_XmlTemplates { radius := p_radius } // End of template mw_circle + template (omit) EllipseType m_ellipse( + in template (value) CenterGroup p_centerGroup, + in template (value) LengthType p_semiMajorAxis, + in template (value) LengthType p_semiMinorAxis, + in template (value) AngleType p_orientation, + in template (omit) XSD.AnyURI p_srsName := omit, + in template (omit) XSD.AnyURI p_id := omit + ) := { + axisLabels := omit, + gid := omit, + id := omit, + srsDimension := omit, + srsName := p_srsName, + uomLabels := omit, + centerGroup := p_centerGroup, + semiMajorAxis := p_semiMajorAxis, + semiMinorAxis := p_semiMinorAxis, + orientation := p_orientation + } // End of template m_ellipse + + template (omit) ArcBandType m_arcband( + in template (value) CenterGroup p_centerGroup, + in template (value) LengthType p_innerRadius, + in template (value) LengthType p_outerRadius, + in template (value) AngleType p_startAngle, + in template (value) AngleType p_openingAngle, + in template (omit) XSD.AnyURI p_srsName := omit, + in template (omit) XSD.AnyURI p_id := omit + ) := { + axisLabels := omit, + gid := omit, + id := omit, + srsDimension := omit, + srsName := p_srsName, + uomLabels := omit, + centerGroup := p_centerGroup, + innerRadius := p_innerRadius, + outerRadius := p_outerRadius, + startAngle := p_startAngle, + openingAngle := p_openingAngle + } // End of template m_arcband + + + template (omit) PolygonType m_polygon( + in template (omit) DoubleList p_posList, + in template (omit) XSD.AnyURI p_srsName := omit + ) := { + axisLabels := omit, + gid := omit, + id := omit, + srsDimension := omit, + srsName := p_srsName, + uomLabels := omit, + exterior := { + ring := { + linearRing := { + axisLabels := omit, + gid := omit, + id := omit, + srsDimension := omit, + srsName := omit, + uomLabels := omit, + choice := { + posList := { + count := omit, + base := p_posList + } + } + } + } + } + } + + + template (value) CenterGroup m_center_group_pos( in template (value) CenterGroup.pos p_pos ) := { diff --git a/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn b/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn index f38329e6f3747f38466debb8e88820670e77cbbb..dc9243cee85b993389b4b40939c152a5c56ccceb 100644 --- a/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn +++ b/ttcn/patch_sip_titan/LibSip_SIPTypesAndValues.ttcn @@ -91,6 +91,21 @@ module LibSip_SIPTypesAndValues { const charstring c_imsEmergencyApplication := "application/pidf+xml"; + // emergency-QueueState (ETSI TS 103 479) + const charstring c_emergency_QueueState := "application/vnd.emergency.queuestate+json"; + + // emergency-AbandonedCall (ETSI TS 103 479) + const charstring c_emergency_AbandonedCall := "application/vnd.emergency.abandonedcall+json"; + + // emergency-SecurityPosture (ETSI TS 103 479) + const charstring c_emergency_SecurityPosture := "application/vnd.emergency.securityposture+json"; + + // emergency-ElementState (ETSI TS 103 479) + const charstring c_emergency_ElementState := "application/vnd.emergency.elementstate+json"; + + // emergency-ServiceState (ETSI TS 103 479) + const charstring c_emergency_ServiceState := "application/vnd.emergency.Servicestate+json"; + // OCTET-STREAM name application const charstring c_octetApplication := "application/octet-stream"; diff --git a/ttcn/patch_sip_titan/LibSip_Steps.ttcn b/ttcn/patch_sip_titan/LibSip_Steps.ttcn index a346e42257d5322b99f1873ecc4d95e229fcea28..66c2f2e8782cd5506311022dd5f1302b1ecade23 100644 --- a/ttcn/patch_sip_titan/LibSip_Steps.ttcn +++ b/ttcn/patch_sip_titan/LibSip_Steps.ttcn @@ -1808,7 +1808,7 @@ module LibSip_Steps { fromParams := vc_caller_To.toParams }; - if (isvalue(p_Request.msgHeader.authorization)) { + if (ispresent(p_Request.msgHeader.authorization)) { vc_authorization := valueof(p_Request.msgHeader.authorization); } } // end f_setHeadersOnReceiptOfREGISTER @@ -2017,7 +2017,7 @@ module LibSip_Steps { }; vc_caller_To := vc_to; } - if (isvalue(p_Request.msgHeader.recordRoute.fieldName)) {//Due to ES 201 873-1/C.3.3 Better to check if fieldName of Record Route is present + if (ispresent(p_Request.msgHeader.recordRoute.fieldName)) {//Due to ES 201 873-1/C.3.3 Better to check if fieldName of Record Route is present vc_boo_recordRoute := true; vc_recordRoute := p_Request.msgHeader.recordRoute; } @@ -3610,16 +3610,15 @@ module LibSip_Steps { * @desc await NOTIFY request reply with 200 OK */ function f_awaitingNOTIFY_sendReply( - in template(present) NOTIFY_Request p_MSG := ? + in template(present) NOTIFY_Request p_MSG := ?, + out NOTIFY_Request p_MSG_recv ) runs on SipComponent { - var NOTIFY_Request v_MSG; - tc_wait.start(PX_SIP_TWAIT); alt { - [] SIPP.receive(p_MSG) -> value v_MSG /*TODO Dynami error: sender vc_sent_label*/ { + [] SIPP.receive(p_MSG) -> value p_MSG_recv /*TODO Dynami error: sender vc_sent_label*/ { tc_wait.stop; - f_getRouteMapIntoRecordRoute(v_MSG); - f_setHeadersOnReceiptOfRequest(v_MSG); + f_getRouteMapIntoRecordRoute(p_MSG_recv); + f_setHeadersOnReceiptOfRequest(p_MSG_recv); // Answer to the NOTIFY f_send200OK(); } diff --git a/ttcn/patch_sip_titan/LibSip_Templates.ttcn b/ttcn/patch_sip_titan/LibSip_Templates.ttcn index e54b903847dc4197be8996b926147c7336a545bc..938ad2901cc9b43adaa70922bc38734434d29f0d 100644 --- a/ttcn/patch_sip_titan/LibSip_Templates.ttcn +++ b/ttcn/patch_sip_titan/LibSip_Templates.ttcn @@ -768,6 +768,8 @@ module LibSip_Templates { template(value) Event m_Event_cdiv modifies m_Event_base := {eventType := "comm-div-info"} + template(value) Event m_Event_QueueState modifies m_Event_base := {eventType := "emergency-QueueState"} + template(value) Event m_Event_mcid := m_Event_cdiv; template(value) Expires m_Expires_base := { @@ -2623,6 +2625,26 @@ module LibSip_Templates { } } + template(value) NOTIFY_Request m_NOTIFY_QueueState( + template(value) SipUrl p_requestUri, + template(omit) CallId p_callId := omit, + template(omit) CSeq p_cSeq := omit, + template(value) From p_from, + template(value) To p_to, + template(value) Via p_via, + template(value) MessageBody p_messageBody, + template(omit) Contact p_contact := omit + ) modifies m_NOTIFY_Request_Base := { + msgHeader := { + contact := p_contact, + contentLength := m_contentLength(f_MessageBodyLength(p_messageBody)), + contentType := m_contentType(c_emergency_QueueState), + event := m_Event_QueueState, + subscriptionState := m_SubscriptionState_active + }, + messageBody := p_messageBody + } + // FIXME STF549: : Titan error: Restriction on template definition does not allow usage of any value // template(omit) NOTIFY_Request m_NOTIFY_Request_sipfrag( @@ -4625,7 +4647,7 @@ module LibSip_Templates { ) runs on SipComponent return template(omit) Route { var template(omit) Route v_route := omit; - if (vc_boo_route) { + if ((vc_boo_route) and isbound(vc_route)) { return vc_route; } else { diff --git a/docker/Dockerfile b/virtualization/docker/Dockerfile similarity index 80% rename from docker/Dockerfile rename to virtualization/docker/Dockerfile index 3b7964b89783d8deeac1c81bf872a5df5b6bc5e5..acfb074eb52966612e0c6936950b95915b5d8103 100644 --- a/docker/Dockerfile +++ b/virtualization/docker/Dockerfile @@ -1,7 +1,6 @@ -FROM stfubuntu:18.04 - -MAINTAINER ETSI NG112 +FROM stfubuntu:20.04 +LABEL ETSI NG112 LABEL description="ETSI NG112 Docker Image" ENV TERM=linux \ @@ -10,6 +9,8 @@ ENV TERM=linux \ COPY home /home/etsi +RUN /etc/init.d/ssh start + RUN cd /home/etsi \ && chown -R etsi:etsi . \ && ls ./etc/init.d/*.sh | while read S; do chmod 0750 "$S" || exit 1; done @@ -17,6 +18,7 @@ RUN cd /home/etsi \ USER etsi RUN cd ${HOME} \ + && ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 \ && export PATH=$HOME/bin:$PATH \ && ls ${HOME}/etc/init.d/*.sh | while read S; do /bin/bash -c "$S" || exit 1; done \ && rm -fr ${HOME}/etc diff --git a/docker/Dockerfile.stfubuntu b/virtualization/docker/Dockerfile.stfubuntu similarity index 74% rename from docker/Dockerfile.stfubuntu rename to virtualization/docker/Dockerfile.stfubuntu index 7b45bbdfa95295a11be5fe749b9458707b3610be..9fa6645dfc7b2239c01bf04ee2d81fad6416528c 100644 --- a/docker/Dockerfile.stfubuntu +++ b/virtualization/docker/Dockerfile.stfubuntu @@ -1,7 +1,6 @@ -FROM ubuntu:18.04 - -MAINTAINER ETSI STF +FROM ubuntu:20.04 +LABEL ETSI CTI LABEL description="STF Docker Ubuntu image" ENV TERM=linux \ @@ -10,11 +9,8 @@ ENV TERM=linux \ RUN echo "docker-STF-dev" > /etc/hostname \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \ - && DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y \ - && DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y \ && DEBIAN_FRONTEND=noninteractive apt-get update \ - && ( echo "oracle-java16-installer shared/accepted-oracle-license-v1-2 boolean true" | debconf-set-selections -v ) \ - && DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install -y \ + && DEBIAN_FRONTEND=noninteractive apt-get install -y \ autoconf \ bison \ build-essential \ @@ -25,10 +21,9 @@ RUN echo "docker-STF-dev" > /etc/hostname \ emacs \ expect \ flex \ - g++-8 \ - gcc-8 \ - gdb \ - git-core \ + g++-9 \ + gcc-9 \ + git \ gnutls-bin \ graphviz \ iputils-ping \ @@ -40,41 +35,27 @@ RUN echo "docker-STF-dev" > /etc/hostname \ libjsoncpp-dev \ libncurses5-dev \ libpcap-dev \ - libqt5svg5-dev \ libssl-dev \ libtool-bin \ libtool \ - libwireshark-dev \ libxml2-dev \ libxml2-utils \ libyaml-dev \ lsof \ - net-tools \ ntp \ - oracle-java16-installer \ - oracle-java16-set-default \ openssh-server \ pkg-config \ python3-dev \ python3-pip \ python3-setuptools \ - qt5-default \ - qtmultimedia5-dev \ - subversion \ sudo \ sshpass \ tcpdump \ texlive-font-utils \ texlive-latex-extra \ - tshark \ tzdata \ valgrind \ - vim \ - vsftpd \ xutils-dev \ - tree \ - unzip \ - wget \ xsltproc \ && DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y \ && DEBIAN_FRONTEND=noninteractive apt-get autoclean \ diff --git a/docker/README.md b/virtualization/docker/README.md similarity index 100% rename from docker/README.md rename to virtualization/docker/README.md diff --git a/docker/build.sh b/virtualization/docker/build.sh similarity index 60% rename from docker/build.sh rename to virtualization/docker/build.sh index 508bd927aa70097a548e322bd5c8da21f1e785bd..31b7838bd915b0fc8756ac679905fb281411645d 100755 --- a/docker/build.sh +++ b/virtualization/docker/build.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright ETSI 2018-2021 +# Copyright ETSI 2020-2021 # See: https://forge.etsi.org/etsi-forge-copyright-statement.txt set -e @@ -13,13 +13,13 @@ if [ "$1" == "--force-stfubuntu" ]; then fi # Check and build stfubuntu image if [ -z `docker images -q stfubuntu` ]; then - docker build --no-cache --tag stfubuntu:18.04 -f Dockerfile.stfubuntu --force-rm . || exit 1 + docker build --no-cache --tag stfubuntu:20.04 -f Dockerfile.stfubuntu --force-rm . || exit 1 fi -docker build --no-cache --tag ttf_t009_ng112 --force-rm . || ( echo "Docker build failed: $?"; exit 1 ) +docker build --no-cache --tag etsiforge/ttf_t009_ng112 --force-rm . || ( echo "Docker build failed: $?"; exit 1 ) docker images -docker inspect ttf_t009_ng112:latest || ( echo "Docker inspect failed: $?"; exit 1 ) +docker inspect etsiforge/ttf_t009_ng112:latest || ( echo "Docker inspect failed: $?"; exit 1 ) # That's all Floks exit 0 diff --git a/docker/home/etc/init.d/10-titan.sh b/virtualization/docker/home/etc/init.d/10-titan.sh similarity index 100% rename from docker/home/etc/init.d/10-titan.sh rename to virtualization/docker/home/etc/init.d/10-titan.sh diff --git a/docker/home/etc/init.d/30-osip.sh b/virtualization/docker/home/etc/init.d/30-osip.sh similarity index 100% rename from docker/home/etc/init.d/30-osip.sh rename to virtualization/docker/home/etc/init.d/30-osip.sh diff --git a/docker/home/etc/init.d/40-etsi_Ng112.sh b/virtualization/docker/home/etc/init.d/40-etsi_Ng112.sh similarity index 61% rename from docker/home/etc/init.d/40-etsi_Ng112.sh rename to virtualization/docker/home/etc/init.d/40-etsi_Ng112.sh index 7122a07206540afe03421e609a1969f596df6cdf..41ea4591cae4982429991c68c47a1d232437b440 100755 --- a/docker/home/etc/init.d/40-etsi_Ng112.sh +++ b/virtualization/docker/home/etc/init.d/40-etsi_Ng112.sh @@ -6,20 +6,16 @@ set -vx echo -e "*****************************\n* Checkout TTF T012 sources\n*****************************\n" mkdir -p ${HOME}/dev && cd ${HOME}/dev || exit 1 -git clone --recurse-submodules --single-branch https://forge.etsi.org/gitlab/emergency-communications/NG112.git ETSI_Ng112 -cd /home/etsi/dev/ETSI_Ng112/ttcn -git clone https://forge.etsi.org/gitlab/LIBS/LibCommon.git ./LibCommon -git clone https://forge.etsi.org/gitlab/LIBS/LibSip.git ./LibSip -git clone https://forge.etsi.org/gitlab/LIBS/LibIms.git ./LibIms -git clone -bTTF0002 https://forge.etsi.org/gitlab/LIBS/LibIts ./LibIts +git clone --branch ttf_t009 --recurse-submodules --single-branch https://forge.etsi.org/gitlab/emergency-communications/NG112.git ETSI_Ng112 cd /home/etsi/dev/ETSI_Ng112/ttcn/LibIts -rm -fr asn1 t3q xsd -cd ttcn && rm -fr BTP CAM Common DENM GeoNetworking Ipv6OverGeoNetworking IVIM MapemSpatem Pki Security SremSsem Rtcmem +rm -fr t3q +cd ttcn && rm -fr Common echo -e "*****************************\n* Set up environment\n*****************************\n" cd /home/etsi/dev/ETSI_Ng112/scripts ln -sf /home/etsi/dev/ETSI_Ng112/scripts/devenv.bash.ubuntu /home/etsi/devenv.bash . /home/etsi/devenv.bash + echo -e "*****************************\n* Apply patched \n*****************************\n" cd /home/etsi/dev/ETSI_Ng112 cp ./ttcn/patch_lib_common_titan/module.mk ./ttcn/LibCommon/ @@ -31,16 +27,25 @@ cp ./ttcn/patch_sip_titan/*.ttcn ./ttcn/LibSip/ttcn/ cp ./ttcn/patch_sip_titan/module.mk ./ttcn/LibSip/ cp ./ttcn/patch_lib_its/module.mk ./ttcn/LibIts/ -echo -e "*****************************\n* Build Mec test suite\n*****************************\n" -export ATS=AtsNg112 -make +echo -e "*****************************\n* Build test suites\n*****************************\n" +ATS_LIST="AtsLIS AtsECRF AtsESRP AtsPSAP AtsBCF" +for i in ${ATS_LIST} +do + export ATS=$i + make +done echo -e "*****************************\n* Init Eclipse Workspace\n*****************************\n" +echo -e "*****************************\n* Setup a configuration file\n*****************************\n" +cd ./etc/AtsLIS +ln -sf AtsNg112_Gridgears_lis.cfg_ AtsNg112.cfg +cd - + echo -e "*****************************\n* Change sudo in command line\n*****************************\n" cd /home/etsi/dev/ETSI_Ng112/scripts -sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_mtc.bash -sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_ptcs.bash +export ATS=AtsLIS +#sed --in-place 's/sudo/echo "etsi" \| sudo -S/' ./run_all.bash cd /home/etsi/dev/ETSI_Ng112 diff --git a/docker/home/etc/init.d/50-doxygen.sh b/virtualization/docker/home/etc/init.d/50-doxygen.sh similarity index 100% rename from docker/home/etc/init.d/50-doxygen.sh rename to virtualization/docker/home/etc/init.d/50-doxygen.sh diff --git a/docker/home/etc/titan_repos.txt b/virtualization/docker/home/etc/titan_repos.txt similarity index 100% rename from docker/home/etc/titan_repos.txt rename to virtualization/docker/home/etc/titan_repos.txt diff --git a/virtualization/docker/run.sh b/virtualization/docker/run.sh new file mode 100755 index 0000000000000000000000000000000000000000..1b823d864f8635010662f87fe41cf5a9bdd35048 --- /dev/null +++ b/virtualization/docker/run.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# Copyright ETSI 2018-2020 +# See: https://forge.etsi.org/etsi-forge-copyright-statement.txt + +#set -e +set -vx + +docker run --interactive --tty --rm --publish 2222:22 --env DISPLAY=$DISPLAY --volume /tmp/.X11-unix:/tmp/.X11-unix --cap-add=NET_RAW --cap-add=NET_ADMIN etsiforge/ttf_t009_ng112:latest + +# That's all Floks +exit 0 diff --git a/vagrant/Vagrantfile b/virtualization/vagrant/Vagrantfile similarity index 100% rename from vagrant/Vagrantfile rename to virtualization/vagrant/Vagrantfile diff --git a/vagrant/provisioner.bash b/virtualization/vagrant/provisioner.bash similarity index 65% rename from vagrant/provisioner.bash rename to virtualization/vagrant/provisioner.bash index fe46a3b12331dd8e3bd0f7d2d94b490c415ad65a..92ff1f9ac61200bc5f73c3a8e5be095b48bbe454 100755 --- a/vagrant/provisioner.bash +++ b/virtualization/vagrant/provisioner.bash @@ -7,12 +7,8 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get update sudo DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y sudo DEBIAN_FRONTEND=noninteractive apt-get install software-properties-common -y -sudo DEBIAN_FRONTEND=noninteractive add-apt-repository ppa:linuxuprising/java -y sudo DEBIAN_FRONTEND=noninteractive apt-get update -sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-8 g++-8 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libtool libncurses5-dev expect libssl-dev libgcrypt-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qttools5-dev qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y -# Install java -#sudo DEBIAN_FRONTEND=noninteractive apt-get install oracle-java9-installer oracle-java9-set-default -y -#sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install oracle-java10-installer oracle-java10-set-default -y +sudo DEBIAN_FRONTEND=noninteractive apt-get --allow-unauthenticated install emacs openjdk-11-jre gcc-9 g++-9 git subversion lsof ntp gdb make cmake flex bison autoconf doxygen graphviz libedit2 libedit-dev libtool libncurses5-dev expect libssl-dev libgcrypt-dev libxml2-dev xutils-dev tcpdump libpcap-dev libwireshark-dev wget tree unzip sshpass kubuntu-desktop valgrind qt5-default qttools5-dev qtmultimedia5-dev libqt5svg5-dev vim tzdata dos2unix xsltproc -y #sudo DEBIAN_FRONTEND=noninteractive apt --fix-broken install -y sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove --purge -y sudo DEBIAN_FRONTEND=noninteractive apt-get clean @@ -20,7 +16,6 @@ sudo DEBIAN_FRONTEND=noninteractive apt-get clean gcc --version g++ --version valgrind --version -java -version export HOME=/home/vagrant @@ -73,25 +68,31 @@ then exit -1 fi +cd /home/vagrant +echo "" >> /home/vagrant/.bashrc +echo "export LD_LIBRARY_PATH=/home/vagrant/dev/TTF009_Ng112/lib:$LD_LIBRARY_PATH" >> /home/vagrant/.bashrc +echo "export PATH=/home/vagrant/bin:$PATH" >> /home/vagrant/.bashrc +echo ". ~/devenv.bash" >> /home/vagrant/.bashrc + cd /home/vagrant/dev -git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./STF549_Ng112 -cd /home/vagrant/dev/STF549_Ng112 -cd /home/vagrant/dev/STF549_Ng112/ttcn +git clone https://forge.etsi.org/gitlab/emergency-communications/NG112 ./TTF009_Ng112 +cd /home/vagrant/dev/TTF009_Ng112 +cd /home/vagrant/dev/TTF009_Ng112/ttcn git clone https://forge.etsi.org/gitlab/LIBS/LibSip.git ./LibSip git clone https://forge.etsi.org/gitlab/LIBS/LibIms.git ./LibIms git clone https://forge.etsi.org/gitlab/LIBS/LibCommon.git ./LibCommon git clone -bSTF525 https://forge.etsi.org/gitlab/LIBS/LibIts ./LibIt -cd /home/etsi/dev/STF549_Ng112/ttcn/LibIts +cd /home/vagrant/dev/TTF009_Ng112/ttcn/LibIts rm -fr asn1 t3q xsd cd ttcn && rm -fr BTP CALM CAM Common DCC DENM GeoNetworking Ipv6OverGeoNetworking IVIM MapemSpatem Pki Security SremSsem V2G -cd /home/vagrant/dev/STF549_Ng112/scripts +cd /home/vagrant/dev/TTF009_Ng112/scripts chmod 775 *.bash devenv.bash.* -cd /home/vagrant/dev/STF549_Ng112/docker +cd /home/vagrant/dev/TTF009_Ng112/docker chmod 775 *.sh -cd /home/vagrant/dev/STF549_Ng112 +cd /home/vagrant/dev/TTF009_Ng112 chmod 775 ./.jenkins.sh cd /home/vagrant -ln -sf /home/vagrant/dev/STF549_Ng112/scripts/devenv.bash.ubuntu /home/vagrant/devenv.bash +ln -sf /home/vagrant/dev/TTF009_Ng112/scripts/devenv.bash.ubuntu /home/vagrant/devenv.bash . /home/vagrant/devenv.bash # Install all frameworks @@ -126,26 +127,19 @@ sudo gem install coveralls-lcov lcov --version coveralls-lcov -h -# Install eclipse -cd ${HOME_FRAMEWORKS} -wget -q 'http://ftp.halifax.rwth-aachen.de/eclipse/technology/epp/downloads/release/photon/R/eclipse-cpp-photon-R-linux-gtk-x86_64.tar.gz' -tar -zxvf ./eclipse-cpp-photon-R-linux-gtk-x86_64.tar.gz -rm -f ./eclipse-cpp-photon-R-linux-gtk-x86_64.tar.gz - -cd /home/vagrant -echo "" >> /home/vagrant/.bashrc -echo "export LD_LIBRARY_PATH=/home/vagrant/dev/etsi_emcom/lib:$LD_LIBRARY_PATH" >> /home/vagrant/.bashrc -echo "export PATH=/home/vagrant/bin:$PATH" >> /home/vagrant/.bashrc -echo ". ~/devenv.bash" >> /home/vagrant/.bashrc - -. /home/vagrant/.bashrc -cd /home/vagrant/dev/STF549_Ng112/scripts +# Build TITAN +cd /home/vagrant/dev/TTF009_Ng112/scripts ./build_titan.bash . /home/vagrant/devenv.bash -./update_its_project.bash -cd /home/vagrant/dev/etsi_emco/src/TestCodec/objs -../bin/testcodec_generate_makefile.bash -../bin/run_all.bash + +# Build the AtsLIS +cd /home/vagrant/dev/TTF009_Ng112 +export ATS=AtsLIS +make + +# Change user in cfg files +cd ${HOME}/dev/TTF009_Ng112/scripts +./update_user_name.sh TTF009_Ng112 cd ${OLD_PWD}