From f519c8fa2022cb239ee373d459495db75513b5ed Mon Sep 17 00:00:00 2001
From: Elemer Lelik <ethlel@esekilxxen1845.rnd.ericsson.se>
Date: Fri, 16 Jan 2015 10:41:31 +0100
Subject: [PATCH] Titan HTTPmsg TP Initial Contribution

---
 HTTPmsg_CNL113312.tpd                |   64 ++
 demo/HTTP_Test.cfg                   |   34 +
 demo/HTTP_Test_no_ASPs.ttcn          |  409 +++++++++
 demo/HTTP_test.prj                   |   48 +
 demo/Makefile                        |  152 ++++
 demo/installCAI.script               |   80 ++
 demo/lssl_script                     |   12 +
 demo/server.crt                      |   69 ++
 demo/server.key                      |   18 +
 doc/15517-CNL113312_EN_E_PDFV1R2.pdf |  Bin 0 -> 65542 bytes
 doc/19817-CNL113312_EN_G_PDFV1R2.pdf |  Bin 0 -> 156835 bytes
 src/HTTPmsg_MessageLen.ttcn          |   24 +
 src/HTTPmsg_MessageLen_Function.cc   |   49 +
 src/HTTPmsg_PT.cc                    | 1233 ++++++++++++++++++++++++++
 src/HTTPmsg_PT.hh                    |  161 ++++
 src/HTTPmsg_PortType.ttcn            |   41 +
 src/HTTPmsg_Types.ttcn               |  153 ++++
 17 files changed, 2547 insertions(+)
 create mode 100644 HTTPmsg_CNL113312.tpd
 create mode 100644 demo/HTTP_Test.cfg
 create mode 100644 demo/HTTP_Test_no_ASPs.ttcn
 create mode 100644 demo/HTTP_test.prj
 create mode 100644 demo/Makefile
 create mode 100644 demo/installCAI.script
 create mode 100644 demo/lssl_script
 create mode 100644 demo/server.crt
 create mode 100644 demo/server.key
 create mode 100644 doc/15517-CNL113312_EN_E_PDFV1R2.pdf
 create mode 100644 doc/19817-CNL113312_EN_G_PDFV1R2.pdf
 create mode 100644 src/HTTPmsg_MessageLen.ttcn
 create mode 100644 src/HTTPmsg_MessageLen_Function.cc
 create mode 100644 src/HTTPmsg_PT.cc
 create mode 100644 src/HTTPmsg_PT.hh
 create mode 100644 src/HTTPmsg_PortType.ttcn
 create mode 100644 src/HTTPmsg_Types.ttcn

diff --git a/HTTPmsg_CNL113312.tpd b/HTTPmsg_CNL113312.tpd
new file mode 100644
index 0000000..b8043a7
--- /dev/null
+++ b/HTTPmsg_CNL113312.tpd
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2014 Ericsson
+
+  All rights reserved. This program and the accompanying materials
+  are made available under the terms of the Eclipse Public License v1.0
+  which accompanies this distribution, and is available at
+  http://www.eclipse.org/legal/epl-v10.html
+
+
+   File:               HTTPmsg_CNL113312.tpd
+   Description:        tpd project file
+   Rev:                R8D
+   Prodnr:             CNL 113 312
+   Updated:            2014-09-03
+   Contact:            http://ttcn.ericsson.se
+
+ -->
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>HTTPmsg_CNL113312</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="Abstract_Socket_CNL113384" projectLocationURI="../Common_Components/Abstract_Socket_CNL113384/Abstract_Socket_CNL113384.tpd"/>
+  </ReferencedProjects>
+  <Folders>
+    <FolderResource projectRelativePath="doc" relativeURI="doc"/>
+    <FolderResource projectRelativePath="src" relativeURI="src"/>
+  </Folders>
+  <Files>
+    <FileResource projectRelativePath="doc/HTTPmsg_CNL113312_FS.pdf" relativeURI="doc/HTTPmsg_CNL113312_FS.pdf"/>
+    <FileResource projectRelativePath="doc/HTTPmsg_CNL113312_PRI.pdf" relativeURI="doc/HTTPmsg_CNL113312_PRI.pdf"/>
+    <FileResource projectRelativePath="doc/HTTPmsg_CNL113312_UG.pdf" relativeURI="doc/HTTPmsg_CNL113312_UG.pdf"/>
+    <FileResource projectRelativePath="src/HTTPmsg_MessageLen.ttcn" relativeURI="src/HTTPmsg_MessageLen.ttcn"/>
+    <FileResource projectRelativePath="src/HTTPmsg_MessageLen_Function.cc" relativeURI="src/HTTPmsg_MessageLen_Function.cc"/>
+    <FileResource projectRelativePath="src/HTTPmsg_PT.cc" relativeURI="src/HTTPmsg_PT.cc"/>
+    <FileResource projectRelativePath="src/HTTPmsg_PT.hh" relativeURI="src/HTTPmsg_PT.hh"/>
+    <FileResource projectRelativePath="src/HTTPmsg_PortType.ttcn" relativeURI="src/HTTPmsg_PortType.ttcn"/>
+    <FileResource projectRelativePath="src/HTTPmsg_Types.ttcn" relativeURI="src/HTTPmsg_Types.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <generateInternalMakefile>true</generateInternalMakefile>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/HTTPmsg_CNL113312</targetExecutable>
+          <buildLevel>Level 3 - Creating object files with dependency update</buildLevel>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+      <FolderProperties>
+        <FolderResource>
+          <FolderPath>doc</FolderPath>
+          <FolderProperties>
+            <ExcludeFromBuild>true</ExcludeFromBuild>
+          </FolderProperties>
+        </FolderResource>
+      </FolderProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/demo/HTTP_Test.cfg b/demo/HTTP_Test.cfg
new file mode 100644
index 0000000..0ae7194
--- /dev/null
+++ b/demo/HTTP_Test.cfg
@@ -0,0 +1,34 @@
+[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/demo/HTTP_Test_no_ASPs.ttcn b/demo/HTTP_Test_no_ASPs.ttcn
new file mode 100644
index 0000000..3d69543
--- /dev/null
+++ b/demo/HTTP_Test_no_ASPs.ttcn
@@ -0,0 +1,409 @@
+//
+//  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 := "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><!DOCTYPE ANS SYSTEM 'file://mpp50_ans.dtd'><ANS ver=\"5.00\"><PUSH_USER><PUSH_ID>clientPush</PUSH_ID><PUSH_PWD>clientPush</PUSH_PWD></PUSH_USER><LPA><GMT_OFF>+0100</GMT_OFF><POS msid=\"4670112345\"><PD><TIME>20040117132719</TIME><POLYGON><LL_POINT><LAT>N100410</LAT><LONG>E0202020</LONG></LL_POINT><LL_POINT><LAT>N101610</LAT><LONG>E0202620</LONG></LL_POINT><LL_POINT><LAT>N101610</LAT><LONG>E0201420</LONG></LL_POINT></POLYGON></PD></POS></LPA></ANS>" };
+  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 := "<?xml version= '1.0' encoding='ISO-8859-1' standalone='yes'?>\n<!DOCTYPE ANS>\n<ANS ver=\"3.00\">\n<LIA>\n<GMT_OFF>+0100</GMT_OFF>\n<POS msid=\"1234512345\">\n<PD>\n<TIME>20000626171825</TIME>\n<ARC>\n<LL_POINT>\n<LAT>N301628</LAT>\n<LONG>W974425</LONG>\n</LL_POINT>\n<IN_RAD>1100</IN_RAD>\n<OUT_RAD>1650</OUT_RAD>\n<START_ANGLE>120</START_ANGLE>\n<STOP_ANGLE>240</STOP_ANGLE>\n</ARC>\n</PD>\n</POS>\n<POS msid=\"1234512346\">\n<PD>\n<TIME>20000626171825</TIME>\n<ARC>\n<LL_POINT>\n<LAT>N301630</LAT>\n<LONG>W974450</LONG>\n</LL_POINT>\n<IN_RAD>0</IN_RAD>\n<OUT_RAD>1650</OUT_RAD>\n<START_ANGLE> 120 </START_ANGLE>\n<STOP_ANGLE>240</STOP_ANGLE>\n</ARC>\n</PD>\n</POS>\n</LIA>\n</ANS>\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_lengthOfRemainingMsg<lengthof(vloc_encodedMsg))
+  {
+    log( "The decoded message:", vloc_decodedMsg);
+
+    if(match( vloc_decodedMsg,tr_expectedMsg))
+    {
+      setverdict(pass);
+    }
+    else 
+    {
+      log(match( vloc_decodedMsg,tr_expectedMsg));
+      setverdict(fail);
+    }
+  }
+  else
+  {
+    log( "Decoding not happened");
+    setverdict(fail);
+  }
+}
+
+function f_EncDec() runs on MTC
+{
+
+  //=== Request Test ====
+
+  var HeaderLines hd := { {header_name := "Content-Type", header_value := "text/xml"},
+    {header_name := "Content-Length", header_value := "510" },
+    {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 := "POST", uri := "/",
+    version_major := 1, version_minor := 0, header := hd, body := "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><!DOCTYPE ANS SYSTEM 'file://mpp50_ans.dtd'><ANS ver=\"5.00\"><PUSH_USER><PUSH_ID>clientPush</PUSH_ID><PUSH_PWD>clientPush</PUSH_PWD></PUSH_USER><LPA><GMT_OFF>+0100</GMT_OFF><POS msid=\"4670112345\"><PD><TIME>20040117132719</TIME><POLYGON><LL_POINT><LAT>N100410</LAT><LONG>E0202020</LONG></LL_POINT><LL_POINT><LAT>N101610</LAT><LONG>E0202620</LONG></LL_POINT><LL_POINT><LAT>N101610</LAT><LONG>E0201420</LONG></LL_POINT></POLYGON></PD></POS></LPA></ANS>xy" }; //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 := "<?xml version= '1.0' encoding='ISO-8859-1' standalone='yes'?>\n<!DOCTYPE ANS>\n<ANS ver=\"3.00\">\n<LIA>\n<GMT_OFF>+0100</GMT_OFF>\n<POS msid=\"1234512345\">\n<PD>\n<TIME>20000626171825</TIME>\n<ARC>\n<LL_POINT>\n<LAT>N301628</LAT>\n<LONG>W974425</LONG>\n</LL_POINT>\n<IN_RAD>1100</IN_RAD>\n<OUT_RAD>1650</OUT_RAD>\n<START_ANGLE>120</START_ANGLE>\n<STOP_ANGLE>240</STOP_ANGLE>\n</ARC>\n</PD>\n</POS>\n<POS msid=\"1234512346\">\n<PD>\n<TIME>20000626171825</TIME>\n<ARC>\n<LL_POINT>\n<LAT>N301630</LAT>\n<LONG>W974450</LONG>\n</LL_POINT>\n<IN_RAD>0</IN_RAD>\n<OUT_RAD>1650</OUT_RAD>\n<START_ANGLE> 120 </START_ANGLE>\n<STOP_ANGLE>240</STOP_ANGLE>\n</ARC>\n</PD>\n</POS>\n</LIA>\n</ANS>\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\n<html><head><title>302 Moved Temporarily</title></head>\r\n<body bgcolor=\"#FFFFFF\">\r\n<p>This document you requested has moved temporarily.</p>\r\n<p>It's now at <a href=\"http://caylem.etm.ericsson.se:7001/McxOwu/list_useractions.jsp?reload\">http://caylem.etm.ericsson.se:7001/McxOwu/list_useractions.jsp?reload</a>.</p>\r\n</body></html>\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<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n\r\n<html>\r\n<head>\r\n<title>Presence</title>\r\n\r\n<script>\r\nvar frameset2 = null;\r\nvar frameset1 = null;\r\n\r\nvar winW = 630, winH = 460;\r\n\r\nfunction getWinSize() {\r\n	if (parseInt(navigator.appVersion)>3) {\r\n	 if (navigator.appName==\"Netscape\") {\r\n	  winW = window.innerWidth;\r\n	  winH = window.innerHeight;\r\n	 }\r\n	 if (navigator.appName.indexOf(\"Microsoft\")!=-1) {\r\n	  winW = document.body.offsetWidth;\r\n	  winH = document.body.offsetHeight;\r\n	 }\r\n	}\r\n	//alert(\"winW=\" + winW + \" winH=\" + winH);\r\n}\r\nvar currRow = null;\r\nfunction tr_mouseover(row) {\r\n	if (!row) {\r\n		row = getrow(window.event.srcElement);\r\n		if (!row)return;\r\n	}\r\n	if (row.style.backgroundColor == \"\") {\r\n		row.style.backgroundColor = \"lightgrey\";\r\n	}\r\n}\r\n\r\nfunction tr_mouseout(row) {\r\n	if (!row) {\r\n		row = getrow(window.event.srcElement);\r\n		if (!row)return;\r\n	}\r\n	if (row.style.backgroundColor == \"lightgrey\") {\r\n		row.style.backgroundColor= \"\";\r\n	}\r\n}\r\n\r\nfunction getrow(obj)\r\n{\r\n	while(obj && obj.tagName != \"TR\") obj = obj.parentNode;\r\n	return obj;\r\n}\r\n// Remove leading and trailing white space\r\nfunction trim(txt) {	\r\n	//alert(\"trim=\" + txt);\r\n	\r\n	try {\r\n		return txt.replace(/(^ +)|( +$)|(\t)/g,\"\");\r\n	} catch (e) {\r\n		var x = new String(txt);\r\n			//alert(\"x=\" + x);\r\n		while (x.charAt(0) == \" \") {\r\n			x = x.substring(1);\r\n			if (x.length == 0) return \"\";\r\n			//alert(\"x=\" + x);\r\n		}\r\n		if (x.length == 0) return \"\";\r\n		while (x.charAt(x.length - 1) == \" \") {\r\n			x = x.substring(0, x.length-1);\r\n			if (x.length == 0) return \"\";\r\n		}\r\n	\r\n		return x;	\r\n		\r\n	\r\n	}\r\n\r\n}\r\n\r\nfunction notyetimplemented()\r\n{\r\n	alert(\"not yet implemented\");\r\n}\r\n\r\nfunction logout()\r\n{\r\n	top.frames[\"_owu_hidden\"].location.assign(\"hidden_logout.jsp\");\r\n//	window.parent.frames[\"_owu_hidden\"].location.assign(\"hidden_logout.jsp\");\r\n}\r\nfunction dorefresh()\r\n{\r\n	try {\r\n		top.frames[\"_owu_sidebar\"].location = \"PrepareSidebar?noselect\";\r\n	} catch (e) {\r\n		alert(\"failed to reload frames\" + e.toString());\r\n	}\r\n}\r\n\r\nfunction NumberChanged(obj) {\r\n\r\n	var val = obj.value;\r\n	var leadingplus = false;\r\n	if (val.search(/^\\+/) == 0) {\r\n		leadingplus = true;\r\n		val  = val.substring(1);\r\n	}\r\n	if (val.search(/[^0-9]/) >= 0) { \r\n		//alert(\"Give a number\");\r\n		val = val.replace(/[^0-9]/g, \"\");\r\n		if (leadingplus) {\r\n			obj.value = \"+\" + val;\r\n		} else {\r\n			obj.value = val;\r\n		}\r\n	}\r\n	\r\n}\r\n\r\nvar modalObj, modalFunc, modalWin;\r\nfunction showModal(obj, func, filename, args, args1) {\r\n	var retval = \"\";\r\n//	if (window.showModalDialog) {\r\n//		retval = window.showModalDialog(filename, args, args1);\r\n//	} else {\r\n		modalObj = obj;\r\n		modalFunc = func;\r\n		document.getElementById(\"modalArg\").value = args;\r\n		args1 = args1.replace(/;/g, \",\");\r\n		args1 = args1.replace(/:/g, \"=\");\r\n		args1 = args1.replace(/dialogWidth/g, \"width\");\r\n		args1 = args1.replace(/dialogHeight/g, \"height\");\r\n		args1 = args1.replace(/dialogTop/g, \"top\");\r\n		args1 = args1.replace(/dialogLeft/g, \"left\");\r\n		args1 = args1.replace(/scroll/g, \"scrollbars\");\r\n		\r\n		//alert(\"modal:\" + args1 );\r\n		//alert(\"window.left=\" + window.screen.left + \" window.top=\" + window.screen.top\r\n		//	+ \"\\window.screeX=\" + window.screenX + \" window.screenY=\" + window.screenY);\r\n\r\n		//alert(\"showmodal:\" + args1);\r\n	   	//modalWin = window.open(filename, \" \", args1 );\r\n	   	//filename = \"indexpopup.jsp?\" + filename;\r\n		modalWin = window.open(filename, \"_owu_popup\", args1);\r\n		modalWin.focus();\r\n		\r\n//	}\r\n	return retval;\r\n}\r\n\r\nfunction modalDone() {\r\n	if (modalObj && modalFunc) {\r\n		modalFunc(modalObj,  document.getElementById(\"modalRetval\").value);\r\n	}\r\n}\r\n\r\nfunction goBack() {\r\n	if (window.name == \"_owu_list\") {\r\n		window.location.assign(\"list_catalog.jsp?catalog=catalogue\");\r\n	} else {\r\n		window.history.go(-1);\r\n	}\r\n}\r\nfunction scroll2View(obj)\r\n{\r\n   try {\r\n    var parent = obj.parentNode;\r\n    while (parent && parent.tagName != (\"DIV\")) parent = parent.parentNode;\r\n" &
+    // wrapped into max. 8000 columns lines because ClearCase complains about too long lines
+    "   \r\n    //alert(\"scroll2view=\" + parent.id);\r\n    var totsize  = parent.offsetHeight;  // this is the visible area \r\n0fe8\r\nsize\r\n    var currtop = parent.scrollTop;      //here begins the visible area\r\n    var beginPos = obj.offsetTop;\r\n    var step = obj.offsetHeight + 3;\r\n   //	alert(\"step=\" + step + \" padding=\" + obj.style.paddingTop);\r\n    var endPos = beginPos + step;\r\n    \r\n    while (endPos > (currtop + totsize))  {\r\n       currtop += step;\r\n    }\r\n    while (beginPos < currtop) {\r\n       currtop -= step;\r\n    }\r\n    parent.scrollTop = currtop;\r\n    //window.status = \"scrolltop=\" + currtop;\r\n   } catch(e) {\r\n      window.status = \"Failed  scroll2view\";\r\n   }\r\n}\r\n\r\n</script>\r\n\r\n<script>\r\n\r\nfunction init() {\r\n	//document.getElementById(\"p_text\").select();\r\n\r\n\r\n		var doreload = \"reload\";\r\n		if (doreload== \"reload\") {\r\n			dorefresh();\r\n		}\r\n		\r\n		var errormsg = \"\";\r\n		if (errormsg != \"\") {\r\n			errormsg = errormsg.replace(/^error=/i, \"\");\r\n			errormsg = errormsg.replace(/\\%20/g, \" \");\r\n			alert(errormsg);\r\n		}\r\n	\r\n}\r\n\r\nfunction removePresence() {\r\n	document.getElementById(\"presence_code\").value = \"0\";\r\n	document.forms[\"presenceform\"].submit();\r\n}\r\n\r\nfunction pcodeChanged(obj) {\r\n	//alert(\"pcodechanged=\" + obj.options[obj.selectedIndex].value);\r\n	var pcodes = obj.options[obj.selectedIndex].value;\r\n	if (pcodes == \"\") return;\r\n	\r\n	var tmp = pcodes.split(\"_\");\r\n	var pcode = tmp[0];\r\n	var number = tmp[1];\r\n	\r\n	var actionimage = document.getElementById(\"actionimage\");\r\n	if (actionimage) {\r\n		if (number == \"\") {\r\n			actionimage.src=\"img/not_available_no_CFP.gif\";\r\n		} else {\r\n			actionimage.src=\"img/not_available_CFP.gif\";\r\n		}\r\n	}\r\n	if (number == \"x\") {\r\n		document.getElementById(\"diversionnbr\").style.display = \"\";\r\n	} else {\r\n		document.getElementById(\"diversionnbr\").style.display = \"none\";\r\n	}\r\n}\r\nfunction setPresence() {\r\n	var pcodelist = document.getElementById(\"pcodelist\");\r\n	if (pcodelist.selectedIndex <0 || pcodelist.options[pcodelist.selectedIndex].value == \"\") {\r\n		alert(\"do pick a valid option\")\r\n		return;\r\n	}\r\n	var pcodes = pcodelist.options[pcodelist.selectedIndex].value ;\r\n	var tmp = pcodes.split(\"_\");\r\n	var pcode = tmp[0];\r\n	var number = tmp[1];\r\n	\r\n	document.getElementById(\"presence_code\").value = pcode;\r\n	if (number == \"x\") {\r\n		number = trim(document.getElementById(\"diversionnbr\").value);\r\n	} \r\n	document.getElementById(\"presence_divertnbr\").value = number;\r\n	\r\n	var until = document.getElementById(\"untildate\").value \r\n				+ \" \" + document.getElementById(\"untiltime\").value;\r\n	until = trim(until);\r\n	if (until != \"\") {\r\n		document.getElementById(\"presence_until\").value = until;\r\n	}\r\n	\r\n	var msgelem  = document.getElementById(\"p_text\");\r\n	//just make sure that the text is not the initial expl. text.\r\n	if (msgelem.onkeydown == null) { \r\n		var ptext = trim(msgelem.value);\r\n		if (ptext != \"\") {\r\n			document.getElementById(\"presence_text\").value = ptext;\r\n		}\r\n	}\r\n	document.forms[\"presenceform\"].submit();\r\n}\r\nfunction presetPresence(idx) {\r\n	document.getElementById(\"presence_preset\").value = idx;\r\n	document.forms[\"presenceform\"].submit();\r\n	\r\n}\r\n\r\nfunction SetDeflect()\r\n{\r\n	var elems = document.getElementsByName(\"cf\");\r\n	for (var i=0; i <elems.length; i++) {\r\n		if (elems[i].checked) {\r\n			var deflectnr = elems[i].value;\r\n			if (deflectnr == \"X\") {\r\n				deflectnr = document.getElementById(\"cf_number\").value;\r\n			}\r\n			document.getElementById(\"calldeflectnr\").value = deflectnr;\r\n			break;\r\n		}\r\n	}\r\n	document.forms[\"calldeflectform\"].submit();\r\n}\r\n\r\nfunction cfClicked(obj) {\r\n	//alert(\"obj=\" + obj.checked);\r\n	if (obj.checked && obj.value == \"X\") {\r\n		document.getElementById(\"cf_number\").style.visibility = \"\";\r\n		document.getElementById(\"cf_number\").focus();\r\n	} else {\r\n		document.getElementById(\"cf_number\").style.visibility = \"hidden\";\r\n	}\r\n}\r\n\r\nfunction ActivateGroups()\r\n{\r\n	document.forms[\"hgsettng\"].submit();\r\n}\r\n\r\nfunction showmoreoptions() {\r\n	document.getElementById(\"moreoptionstable\").style.display = \"\";\r\n	document.getElementById(\"moreoptionsbutton\").style.display = \"\";\r\n}\r\nfunction divmsgChanged(obj) {\r\n	if (parseInt(obj.value.length) > 255) {\r\n		obj.value = obj.value.substring(0,255);\r\n		alert(\"Max 255\");\r\n	\r\n0fe8\r\n}\r\n	//window.status = obj.value.length;\r\n}	\r\nfunction resetUserSettings() \r\n{\r\n	document.forms[\"resetuserform\"].submit();\r\n}\r\n</script>\r\n<style type=\"text/css\">\r\n\r\nbody {\r\n	font-family: verdana, arial;\r\n	font-size: 100%;\r\n	background-image: url(img/body.gif);\r\n	color : black;\r\n}\r\n\r\ntable {\r\n	font-family: verdana, arial;\r\n	font-size: 90%;\r\n}\r\n\r\n.loginform {\r\n	font-size: 90%;\r\n	color : black;\r\n}\r\n.button {\r\n	font-size:80%;\r\n	font-weight:bold;\r\n	padding:1;\r\n}\r\n.mainform {\r\n	color : black;\r\n	background-color:#E0E0E0;\r\n	font-size:70%;\r\n	width:100%;\r\n	height:100%;\r\n	padding:0;\r\n	margin:0;\r\n\r\n}	\r\n.attendantform {\r\n	color : black;\r\n	background-image: url(img/body.gif);\r\n	margin:0;\r\n	padding:0;\r\n	width:100%;\r\n	height:100%;\r\n}\r\n\r\n.maintitle {\r\n	font-weight: bold;\r\n	color : black;\r\n	letter-spacing:1;\r\n	height:50px;\r\n	width:230px;\r\n	padding:0;" &
+    "\r\n	margin:0;\r\n	background-image: url(img/top.gif);\r\n}\r\n\r\n.actionmenu {\r\n	font-size: 90%;\r\n	color : black;\r\n	background-color:#E0E0E0;\r\n	margin : 5;\r\n	padding:5;\r\n	width:99%;\r\n\r\n}\r\n.actiondropdown {\r\n	color : black;\r\n}\r\n\r\n.searchform {\r\n	font-size: 90%;\r\n	color : black;\r\n	background-image: url(img/body.gif);\r\n}\r\n\r\n/* Used by the sidebar */\r\n#mainbody {\r\n	height:99%;\r\n	background-color:#E0E0E0; \r\n	min-width:130px;\r\n	left:5;\r\n	top:3;\r\n	position:absolute;\r\n	\r\n}\r\n\r\n.menutree {\r\n	padding:0;\r\n	align:center;\r\n	color: black;\r\n	min-width:230px;\r\n	width:100%;\r\n}\r\n\r\n.settingsbody {\r\n	padding:0;\r\n	align:center;\r\n	color: black;\r\n	min-width:198px;\r\n	width:100%;\r\n	background-image: url(img/body.gif);\r\n	top:70px;\r\n	position:absolute;\r\n	font-weight:normal;\r\n	height:90%;\r\n	font-size:80%;\r\n}\r\n.settingslist {\r\n	font-size:80%;\r\n}\r\n.inputfield {\r\n	font-size:90%;\r\n}\r\n.settingsheading {\r\n	padding:0 0 0 12;\r\n	width:30%;\r\n}\r\n.treerow {\r\n	font-weight:normal;\r\n	font-size:85%;\r\n	vertical-align:text-top;\r\n	padding:3 0 3 0 ;\r\n	margin:0;\r\n	color : black;\r\n	cursor:hand;\r\n	min-height:16px;\r\n}\r\n.rowheading {\r\n	background-color:#CCCCCC;\r\n	font-weight:bold;\r\n	color:black;\r\n	border:3 outset lightgray;\r\n	margin:2px;\r\n	padding-left:5;\r\n	cursor:hand;\r\n	align:center;\r\n}\r\n\r\n#maincatalogbody {\r\n	height:99%;\r\n	background-image: url(img/body.gif);\r\n	width:100%;\r\n	left:5;\r\n	top:3;\r\n	position:absolute;\r\n}\r\n\r\n.imgbutton {\r\n	background-color:#CCCCCC;\r\n	font-weight:bold;\r\n	color:black;\r\n	border:3 outset lightgray;\r\n	margin:2px;\r\n	padding:2;\r\n	cursor:hand;\r\n	align:center;\r\n	font-size:80%;\r\n}\r\n\r\n.numberbutton {\r\n	background-color:#CCCCCC;\r\n	font-weight:normal;\r\n	color:black;\r\n	margin:1px;\r\n	cursor:hand;\r\n	align:center;\r\n	border:3 outset lightgray;\r\n	height:20px;;\r\n	width:120px;\r\n	vertical-align:bottom;\r\n	padding : 0 0 0 5;\r\n	font-size:80%;\r\n	\r\n}\r\n\r\n.numberbuttonpushed {\r\n	background-color:#E0E0E0;\r\n	font-weight:bold;\r\n	/*color:blue;*/\r\n	margin:1px;\r\n	cursor:hand;\r\n	align:center;\r\n	border:3 inset lightgray;\r\n	height:20px;;\r\n	width:120px;\r\n	vertical-align:bottom;\r\n	padding : 0 0 0 5;\r\n	font-size:80%;\r\n	\r\n}\r\n.actionsmallbutton {\r\n	background-color:#CCCCCC;\r\n	font-weight:bold;\r\n	color:black;\r\n	margin:1px;\r\n	cursor:hand;\r\n	align:center;\r\n	font-size:70%;\r\n	border:2 outset lightgray;\r\n	height:11px;\r\n	width:11px;\r\n	vertical-align:bottom;\r\n}\r\n.actionbutton {\r\n	background-color:#CCCCCC;\r\n	font-weight:bold;\r\n	color:black;\r\n	margin:2px;\r\n	cursor:hand;\r\n	align:center;\r\n	font-size:60%;\r\n	border:5 outset lightgray;\r\n	height:25px;\r\n	width:25px;\r\n	vertical-align:top;\r\n}\r\n\r\n.actionbuttonpushed {\r\n	background-color:#E0E0E0;\r\n	font-weight:bold;\r\n	color:black;\r\n	margin:2px;\r\n	align:center;\r\n	font-size:70%;\r\n	border:5 inset lightgray;\r\n	height:25px;\r\n	width:25px;\r\n	vertical-align:top;\r\n	cursor:hand;\r\n	\r\n}\r\n\r\n\r\n.treecell {\r\n	padding:0 0 2 2;\r\n}\r\n.treespacer {\r\n	padding:0;\r\n	margin:0;\r\n	min-height:2px;\r\n	font-size:1px;\r\n	width:200px;\r\n	\r\n}\r\n.popupform {\r\n	align : center;\r\n	font-size: 90%;\r\n	color : black;\r\n	background-image: url(img/body.gif);\r\n}\r\n\r\n.popuptitle {\r\n	font-size: 120%;\r\n	font-weight : bold;\r\n	letter-spacing : 1;\r\n}\r\n.popuptab {\r\n	font-size: 110%;\r\n	letter-spacing : 1;\r\n	border-top : 1 solid black;\r\n	border-right : 1 solid black;\r\n	bor\r\n0438\r\nder-left : 1 solid black;\r\n	padding : 4;\r\n	margin : 8 3 0 3;\r\n	width : 100%;\r\n	height:80%;\r\n	vertical-align:text-top;\r\n	background-color:black;\r\n	align:center;	\r\n	color:black;\r\n	cursor:hand;\r\n}\r\n.tabselected {\r\n	font-size: 110%;\r\n	letter-spacing : 1;\r\n	border : 1 solid black;\r\n	border-bottom : 0;\r\n	padding : 4 4 0 4;\r\n	margin : 0;\r\n	text-align : left;\r\n	vertical-align:text-top;\r\n	align:center;\r\n	background-color:#E0E0E0;\r\n	color:black;\r\n}\r\n\r\n.popupbutton {\r\n	width: 100px;\r\n}\r\n\r\n.resultlist {\r\n	align:center;\r\n	color: black;\r\n	width:100%;\r\n	height:89%;\r\n	overflow:auto;\r\n	position:absolute;\r\n	background-color:#E0E0E0;\r\n	\r\n}\r\n.resultrow {\r\n	font-weight:normal;\r\n	font-size:75%;\r\n	vertical-align:text-top;\r\n	padding:1;\r\n	margin:0;\r\n	color : black;\r\n	cursor:hand;\r\n	min-height:16px;\r\n}\r\n.resultheading {\r\n	background-color:#CCCCCC;\r\n	font-weight:bold;\r\n	color:black;\r\n	border:3 outset lightgray;\r\n	margin:2px;\r\n	padding-left:5;\r\n	cursor:hand;\r\n	align:center;\r\n	font-size:85%;\r\n}\r\n.actiontextarea {\r\n	font-size:90%;\r\n	text-align:left;\r\n	width:100%;\r\n	height:100px;\r\n}\r\n\r\n</style>\r\n0fe8\r\n\r\n\r\n</head>\r\n<body onload=\"init();\" >\r\n\r\n\r\n<div id=\"mainbody\" >\r\n\r\n<form name=\"resetuserform\" target=\"_self\" action=\"servlet/DrsResetUser\" method=\"post\">\r\n<input type=hidden name=\"resetuser_dirid\" id=\"resetuser_dirid\" value=\"3619010001:046182\">\r\n</form>\r\n\r\n<form name=\"presenceform\" target=\"_self\" action=\"DrsPresence\" method=\"post\">\r\n<input type=hidden name=\"presence_code\" id=\"presence_code\" value=\"\">\r\n<input type=hidden name=\"presence_divertnbr\" id=\"presence_divertnbr\" value=\"\">\r\n<input type=hidden name=\"presence_until\" id=\"presence_until\" value=\"\">\r\n<input type=hidden name=\"presence_dirid\" id=\"presence_dirid\" value=\"\">\r\n<input type=hidden name=\"presence_text\" id=\"presence_text\" value=\"\">\r\n<input type=hidden name=\"presence_preset\" id=\"presence_preset\" value=\"\">\r\n</form>\r\n\r\n<div class=\"maintitle\" style=\"width:100%\">\r\n<table cellspacing=0 cellpadding=3 width=\"100%\" >\r\n<tr>\r\n	<td class=\"maintitle\" style=\"width:100%\" align=baseline>\r\n	<img src=\"img/spacer.gif\" height=50 width=2>\r\n	Sambal Bij  (1100)\r\n<!-- toolbox -->\r\n	<td align=right  valign=baseline nowrap> \r\n		\r\n		<span id=\"resetbutton\"  class=\"actionbutton\" onclick=\"resetUserSettings()\"  >\r\n				<img src=\"img/spacer.gif\" width=\"25\" heigth=\"25\">Reset user settings\r\n		</span>\r\n		\r\n		<span id=\"logoutbutton\"  class=\"actionbutton\" onclick=\"logout()\"  >\r\n				<img src=\"img/spacer.gif\" width=\"25\" heigth=\"25\">Log out\r\n		</span>\r\n<tr><td colspan=2><hr>\r\n\r\n</table>\r\n\r\n</div>\r\n\r\n<div class=\"settingsbody\"  id=\"presencemenu\">\r\n\r\n<table  style=\"width:100%;color:black;background-color:#E0E0E0\" border=0 cellpadding=3 cellspacing=2>\r\n<tr><td style=\"width:35%;border:1 solid gray;\">\r\n\r\n	<table  style=\"width:100%;color:black;background-color:#E0E0E0\" border=0 cellpadding=3 cellspacing=2>\r\n		<tr><td  style=\"font-size:100%\"><b>Presence\r\n	\r\n\r\n		<td nowrap>	<img src='img/not_available_no_CFP.gif'>Left for the day\r\n\r\n\r\n	<tr>\r\n		<td colspan=2><hr>\r\n	\r\n\r\n" &
+    "		<tr style=\"display:\"><td colspan=2>Predefined options\r\n	\r\n\r\n		<tr  style=\"display:\">\r\n			<td  colspan=2 >\r\n			<span style=\"width:70%\" class='imgbutton' onclick=\"presetPresence('0');\" >\r\n				<img src='img/available.gif' width=16 height=16>Change to Available\r\n			</span>\r\n			<br>\r\n\r\n		<tr  style=\"display:\">\r\n			<td  colspan=2 >\r\n			<span style=\"width:70%\" class='imgbutton' onclick=\"presetPresence('1');\" >\r\n				<img src='img/not_available_no_CFP.gif' width=16 height=16>Change to Busy\r\n			</span>\r\n			<br>\r\n\r\n		<tr  style=\"display:\">\r\n			<td  colspan=2 >\r\n			<span style=\"width:70%\" class='imgbutton' onclick=\"presetPresence('2');\" >\r\n				<img src='img/not_available_no_CFP.gif' width=16 height=16>Change to Meeting\r\n			</span>\r\n			<br>\r\n\r\n		<tr  style=\"display:\">\r\n			<td  colspan=2 >\r\n			<span style=\"width:70%\" class='imgbutton' onclick=\"presetPresence('3');\" >\r\n				<img src='img/not_available_no_CFP.gif' width=16 height=16>Change to Lunch\r\n			</span>\r\n			<br>\r\n\r\n		<tr  style=\"display:\">\r\n			<td  colspan=2 >\r\n			<span style=\"width:70%\" class='imgbutton' onclick=\"presetPresence('4');\" >\r\n				<img src='img/not_available_no_CFP.gif' width=16 height=16>Change to Left for the day\r\n			</span>\r\n			<br>\r\n\r\n		<tr>\r\n		<td  colspan=2><br><hr>\r\n		\r\n		<tr><td ><a href=# onclick=\"showmoreoptions()\" >More options...</a>\r\n		\r\n			<td style=\"display:none\" id=\"moreoptionsbutton\" nowrap align=right><span class=\"imgbutton\" style=\"font-size:75%\" onclick=\"setPresence();\">\r\n					<img id=\"actionimage\" src=\"img/spacer.gif\">&nbsp;&nbsp;\r\n				Change now</span>\r\n		\r\n\r\n		<tr>\r\n		<td colspan=2>\r\n		<table id=\"moreoptionstable\" style=\"display:none\">\r\n		<tr>\r\n			<td colspan=2 valign=top >\r\n			<select style=\"width:100%\" id=\"pcodelist\"  onchange=\"pcodeChanged(this)\" >\r\n			<option value=''>------------------------------------</option>\r\n<option value='1_'>Busy - No diversion\n<option value='1_-1'>Busy - All calls to main number\n<option value='1_-2'>Busy - All calls to voicemail\n<option value='1_x'>Busy - All calls to number\n<option value=''>------------------------------------</option>\n<option value='2_'>Meeting - No diversion\n<option value='2_-1'>Meeting - All calls to\r\n0f53\r\n main number\n<option value='2_-2'>Meeting - All calls to voicemail\n<option value='2_x'>Meeting - All calls to number\n<option value=''>------------------------------------</option>\n<option value='3_'>Lunch - No diversion\n<option value='3_-1'>Lunch - All calls to main number\n<option value='3_-2'>Lunch - All calls to voicemail\n<option value='3_x'>Lunch - All calls to number\n<option value=''>------------------------------------</option>\n<option value='4_'>Left for the day - No diversion\n<option value='4_-1'>Left for the day - All calls to main number\n<option value='4_-2'>Left for the day - All calls to voicemail\n<option value='4_x'>Left for the day - All calls to number\n<option value=''>------------------------------------</option>\n<option value='5_'>Returns - No diversion\n<option value='5_-1'>Returns - All calls to main number\n<option value='5_-2'>Returns - All calls to voicemail\n<option value='5_x'>Returns - All calls to number\n<option value=''>------------------------------------</option>\n\r\n					\r\n			</select>\r\n			<tr><td colspan=2>\r\n				<input type=text value=\"\" onkeyup=\"NumberChanged(this)\" style=\"display:none\" id=\"diversionnbr\">\r\n\r\n	<tr>\r\n	<td style=\"font-size:90%;\" nowrap colspan=2>Back \r\n		<span style=\"font-size:75%\">(MM/dd/yyyy)</span>\r\n			<input type=text id=\"untildate\" value=\"\" size=\"10\">\r\n		<span style=\"font-size:75%\">(HH:mm)</span>\r\n			<input type=text id=\"untiltime\" value=\"\" size=\"5\">\r\n	<tr>\r\n			<td colspan=2 valign=top width=30%><b>Message\r\n		\r\n		<tr >			\r\n			<td colspan=2 valign=top >\r\n			<textarea style=\"width:99%;\" rows=5 classname=\"actiontextarea\"\r\n				id=\"p_text\" onkeydown=\"this.value='';this.onkeydown=null\" onkeyup=\"divmsgChanged(this)\">Here you can write your message to the attendant and others. Max 255 characters.</textarea>\r\n		\r\n		\r\n			</table><!--more options-->\r\n	</table>\r\n\r\n<!-- Call deflect -->\r\n<td style=\"width:35%;border:1 solid gray;display:none\" valign=top>\r\n	<table  style=\"color:black;background-color:#E0E0E0;width:100%\" border=0 cellpadding=3 cellspacing=2>\r\n		<tr><td style=\"font-size:100%\"><b>Deflect call\r\n			<td align=right><input  class=\"imgbutton\" style=\"font-size:80%;\" \r\n				type=\"button\" value=\"Change\" onclick=\"SetDeflect()\" >\r\n			\r\n		<tr><td colspan=2><hr>	\r\n		<tr onmouseover=\"tr_mouseover(this);\" onmouseout=\"tr_mouseout(this)\" class=treerow>\r\n			<td colspan=2><input onclick=\"cfClicked(this);\" type=radio id=\"cf_operator\" name=\"cf\" value=\"-1\" >&nbsp;&nbsp;Main number\r\n		<tr onmouseover=\"tr_mouseover(this);\" onmouseout=\"tr_mouseout(this)\" class=treerow>\r\n			<td colspan=2><input onclick=\"cfClicked(this);\" type=radio id=\"cf_voicemail\" name=\"cf\" value=\"-2\" >&nbsp;&nbsp;Voicemail\r\n		<tr onmouseover=\"tr_mouseover(this);\" onmouseout=\"tr_mouseout(this)\" class=treerow>\r\n			<td colspan=2><input onclick=\"cfClicked(this);\" type=radio id=\"cf_x\" name=\"cf\" value=\"X\" >&nbsp;&nbsp;Phone\r\n			<input type=text name=\"cf_number\" id=\"cf_number\" onkeyup=\"NumberChanged(this);\" style=\"visibility:hidden\" value=\"\">\r\n		\r\n	</table>\r\n\r\n\r\n<form name=\"calldeflectform\" target=\"_self\" action=\"servlet/DrsDeflect\" method=\"post\">\r\n<input type=hidden name=\"dirid\" id=\"dirid\" value=\"\">\r\n<input type=hidden name=\"calldeflectnr\" id=\"calldeflectnr\" value=\"\">\r\n</form>\r\n\r\n<!-- CDG/huntgroups -->\r\n<td style=\"width:35%;border:1 solid gray;\" valign=top>\r\n	<form name=\"hgsettng\" target=\"_self\" action=\"servlet/DrsHuntGroup\" method=\"post\">\r\n	<input type=hidden name=\"dirid\" id=\"dirid\" value=\"\">\r\n	<table  style=\"color:black;background-color:#E0E0E0;width:100%\" border=0 cellpadding=3 cellspacing=2>\r\n		<tr><td style=\"font-size:100%;\"><b>Activate/deactivate <br>Call distribution groups\r\n			<td align=right valign=top><input  class=\"imgbutton\" style=\"font-size:80%;\" \r\n				type=\"button\" value=\"Change\" onclick=\"ActivateGroups()\" >\r\n		<tr><td colspan=2><hr>	\r\n<tr><td>Not member of any call distribution group\n\r\n	</form>\r\n	</table>\r\n\r\n</table>\r\n</div>\r\n</div>\r\n\r\n</body>\r\n</html>\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/demo/HTTP_test.prj b/demo/HTTP_test.prj
new file mode 100644
index 0000000..d5db577
--- /dev/null
+++ b/demo/HTTP_test.prj
@@ -0,0 +1,48 @@
+<!DOCTYPE TITAN_GUI_project_file>
+<Project>
+    <General>
+        <Project_Name>HTTP_test</Project_Name>
+        <Executable_Path>../bin/HTTP_test</Executable_Path>
+        <Working_Dir>../bin</Working_Dir>
+        <Build_Host>alpha</Build_Host>
+        <Execution_Mode>Parallel</Execution_Mode>
+        <ScriptFile_AfterMake>lssl_script</ScriptFile_AfterMake>
+        <Log_Format>yes</Log_Format>
+        <Update_Symlinks>yes</Update_Symlinks>
+        <Create_Absolute_Symlinks>no</Create_Absolute_Symlinks>
+        <Update_Makefile>yes</Update_Makefile>
+        <Localhost_Execute>yes</Localhost_Execute>
+        <Execute_Command>rsh %host &quot;cd %project_working_dir ; &quot;%executable&quot; %localhost %mctr_port&quot;</Execute_Command>
+        <Execute_Hosts>alfa, beta, gamma</Execute_Hosts>
+        <UnUsed_List></UnUsed_List>
+    </General>
+    <Modules>
+        <Module>../src/HTTPmsg_PortType.ttcn</Module>
+        <Module>../src/HTTPmsg_Types.ttcn</Module>
+        <Module>HTTP_Test_no_ASPs.ttcn</Module>
+    </Modules>
+    <TestPorts>
+        <TestPort>../src/HTTPmsg_PT.cc</TestPort>
+        <TestPort>../src/HTTPmsg_PT.hh</TestPort>
+    </TestPorts>
+    <Other_Sources>
+        <Other_Source>../../Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.cc</Other_Source>
+        <Other_Source>../../Common_Components/Abstract_Socket_CNL113384/src/Abstract_Socket.hh</Other_Source>
+    </Other_Sources>
+    <Configs>
+        <Config>HTTP_Test.cfg</Config>
+    </Configs>
+    <Test_Cases>
+        <Test_Case>HTTP_Test_no_ASPs.control</Test_Case>
+        <Test_Case>HTTP_Test_no_ASPs.parallel_TC_client</Test_Case>
+        <Test_Case>HTTP_Test_no_ASPs.parallel_TC_server</Test_Case>
+        <Test_Case>HTTP_Test_no_ASPs.stress_TC_Persistent_both</Test_Case>
+        <Test_Case>HTTP_Test_no_ASPs.server_testcase</Test_Case>
+        <Test_Case>HTTP_Test_no_ASPs.client_testcase</Test_Case>
+    </Test_Cases>
+    <Others>
+        <Other>lssl_script</Other>
+        <Other>server.crt</Other>
+        <Other>server.key</Other>
+    </Others>
+</Project>
diff --git a/demo/Makefile b/demo/Makefile
new file mode 100644
index 0000000..a85067f
--- /dev/null
+++ b/demo/Makefile
@@ -0,0 +1,152 @@
+# 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 2000-2006 Test Competence Center, Ericsson R & D, Hungary
+# For trouble reporting use the tool MTTSMS.
+# For TR writers guide please visit the web page: http://ttcn.ericsson.se
+
+# 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/demo/installCAI.script b/demo/installCAI.script
new file mode 100644
index 0000000..fc9491d
--- /dev/null
+++ b/demo/installCAI.script
@@ -0,0 +1,80 @@
+#! /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/demo/lssl_script b/demo/lssl_script
new file mode 100644
index 0000000..e0db83f
--- /dev/null
+++ b/demo/lssl_script
@@ -0,0 +1,12 @@
+#!/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/demo/server.crt b/demo/server.crt
new file mode 100644
index 0000000..2381e9f
--- /dev/null
+++ b/demo/server.crt
@@ -0,0 +1,69 @@
+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/demo/server.key b/demo/server.key
new file mode 100644
index 0000000..8d6ece8
--- /dev/null
+++ b/demo/server.key
@@ -0,0 +1,18 @@
+-----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/doc/15517-CNL113312_EN_E_PDFV1R2.pdf b/doc/15517-CNL113312_EN_E_PDFV1R2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..dcc542c739156b7d93b9298648e08e4fcce2e308
GIT binary patch
literal 65542
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

literal 0
HcmV?d00001

diff --git a/doc/19817-CNL113312_EN_G_PDFV1R2.pdf b/doc/19817-CNL113312_EN_G_PDFV1R2.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..b82b0e7696caed67114adbeb7373a7446fa081cc
GIT binary patch
literal 156835
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

literal 0
HcmV?d00001

diff --git a/src/HTTPmsg_MessageLen.ttcn b/src/HTTPmsg_MessageLen.ttcn
new file mode 100644
index 0000000..99453a8
--- /dev/null
+++ b/src/HTTPmsg_MessageLen.ttcn
@@ -0,0 +1,24 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.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:                R8D
+//  Prodnr:             CNL 113 469
+
+module HTTPmsg_MessageLen{
+  external function f_HTTPMessage_len(in octetstring stream) return integer
+}
diff --git a/src/HTTPmsg_MessageLen_Function.cc b/src/HTTPmsg_MessageLen_Function.cc
new file mode 100644
index 0000000..fd6c7fd
--- /dev/null
+++ b/src/HTTPmsg_MessageLen_Function.cc
@@ -0,0 +1,49 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.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:                R8D
+//  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/src/HTTPmsg_PT.cc b/src/HTTPmsg_PT.cc
new file mode 100644
index 0000000..71de291
--- /dev/null
+++ b/src/HTTPmsg_PT.cc
@@ -0,0 +1,1233 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.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:                R8D
+//  Prodnr:             CNL 113 469
+
+
+#include "HTTPmsg_PT.hh"
+
+#include <ctype.h>
+#include <arpa/inet.h>
+
+#ifdef AS_USE_SSL
+#include <openssl/ssl.h>
+#include <openssl/rand.h>
+#include <openssl/err.h>
+#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
+}
+
+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, 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;
+
+    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());
+
+    log_debug("leaving HTTPmsg__PT::outgoing_send(HTTPMessage)");
+}
+
+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);
+}
+
+
+// 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));
+
+            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) != 4)
+                {
+                    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_data()[0] == '\n')
+        {
+            TTCN_Logger::log(TTCN_WARNING, "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/src/HTTPmsg_PT.hh b/src/HTTPmsg_PT.hh
new file mode 100644
index 0000000..3d3f6eb
--- /dev/null
+++ b/src/HTTPmsg_PT.hh
@@ -0,0 +1,161 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.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:                R8D
+//  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  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);
+    
+// 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;
+};
+//===================================
+//== 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/src/HTTPmsg_PortType.ttcn b/src/HTTPmsg_PortType.ttcn
new file mode 100644
index 0000000..f56fdde
--- /dev/null
+++ b/src/HTTPmsg_PortType.ttcn
@@ -0,0 +1,41 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.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:                R8D
+//  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;
+
+    // Message to send and receive
+    inout   HTTPMessage;
+  };
+}
diff --git a/src/HTTPmsg_Types.ttcn b/src/HTTPmsg_Types.ttcn
new file mode 100644
index 0000000..c7ef281
--- /dev/null
+++ b/src/HTTPmsg_Types.ttcn
@@ -0,0 +1,153 @@
+/******************************************************************************
+* Copyright (c) 2004, 2014  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.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:                R8D
+//  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 {};
+
+}
-- 
GitLab