diff --git a/tests/syntax-tests/highlighted/Java Server Page (JSP)/sessionDetail.jsp b/tests/syntax-tests/highlighted/Java Server Page (JSP)/sessionDetail.jsp
new file mode 100644
index 00000000..2ac59da1
--- /dev/null
+++ b/tests/syntax-tests/highlighted/Java Server Page (JSP)/sessionDetail.jsp
@@ -0,0 +1,197 @@
+[38;2;255;255;255m[0m[38;2;249;38;114mxml[0m[38;2;248;248;242m [0m[38;2;166;226;46mversion[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m1.0[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mencoding[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mUTF-8[0m[38;2;255;255;255m"[0m[38;2;255;255;255m?>[0m
+[38;2;117;113;94m<%--[0m
+[38;2;117;113;94m Licensed to the Apache Software Foundation (ASF) under one or more[0m
+[38;2;117;113;94m contributor license agreements. See the NOTICE file distributed with[0m
+[38;2;117;113;94m this work for additional information regarding copyright ownership.[0m
+[38;2;117;113;94m The ASF licenses this file to You under the Apache License, Version 2.0[0m
+[38;2;117;113;94m (the "License"); you may not use this file except in compliance with[0m
+[38;2;117;113;94m the License. You may obtain a copy of the License at[0m
+
+[38;2;117;113;94m http://www.apache.org/licenses/LICENSE-2.0[0m
+
+[38;2;117;113;94m Unless required by applicable law or agreed to in writing, software[0m
+[38;2;117;113;94m distributed under the License is distributed on an "AS IS" BASIS,[0m
+[38;2;117;113;94m WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.[0m
+[38;2;117;113;94m See the License for the specific language governing permissions and[0m
+[38;2;117;113;94m limitations under the License.[0m
+[38;2;117;113;94m--%>[0m
+[38;2;248;248;242m<%@[0m[38;2;249;38;114mpage[0m[38;2;248;248;242m [0m[38;2;190;132;255msession[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mfalse[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;190;132;255mcontentType[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mtext/html; charset=ISO-8859-1[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m<%@[0m[38;2;249;38;114mpage[0m[38;2;248;248;242m [0m[38;2;190;132;255mimport[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mjava.util.Enumeration[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m<%@[0m[38;2;249;38;114mpage[0m[38;2;248;248;242m [0m[38;2;190;132;255mimport[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116mjakarta.servlet.http.HttpSession[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m<%@[0m[38;2;249;38;114mpage[0m[38;2;248;248;242m [0m[38;2;190;132;255mimport[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116morg.apache.catalina.Session[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m<%@[0m[38;2;249;38;114mpage[0m[38;2;248;248;242m [0m[38;2;190;132;255mimport[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116morg.apache.catalina.manager.JspHelper[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m<%@[0m[38;2;249;38;114mpage[0m[38;2;248;248;242m [0m[38;2;190;132;255mimport[0m[38;2;249;38;114m=[0m[38;2;230;219;116m"[0m[38;2;230;219;116morg.apache.catalina.util.ContextName[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;255;255;255m[0m
+[38;2;117;113;94m<%--[0m[38;2;117;113;94m!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"[0m
+[38;2;117;113;94m "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[0m[38;2;117;113;94m--%>[0m
+
+[38;2;255;255;255m<[0m[38;2;249;38;114mhtml[0m[38;2;248;248;242m [0m[38;2;166;226;46mxmlns[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhttp://www.w3.org/1999/xhtml[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mxml:lang[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116men[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m<%[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m path [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m)[0m[38;2;248;248;242m request[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttribute[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mpath[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m version [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m)[0m[38;2;248;248;242m request[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttribute[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mversion[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mContextName[0m[38;2;248;248;242m cn [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;249;38;114mnew[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mContextName[0m[38;2;248;248;242m([0m[38;2;248;248;242mpath[0m[38;2;248;248;242m,[0m[38;2;248;248;242m version[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mSession[0m[38;2;248;248;242m currentSession [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[3;38;2;166;226;46mSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242mrequest[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttribute[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mcurrentSession[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m currentSessionId [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255mnull[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mHttpSession[0m[38;2;248;248;242m currentHttpSession [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255mnull[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession [0m[38;2;249;38;114m!=[0m[38;2;248;248;242m [0m[38;2;190;132;255mnull[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m currentHttpSession [0m[38;2;249;38;114m=[0m[38;2;248;248;242m currentSession[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetSession[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m currentSessionId [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mescapeXml[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetId[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m }[0m[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m currentSessionId [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mSession invalidated[0m[38;2;230;219;116m"[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m }[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m submitUrl [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mescapeXml[0m[38;2;248;248;242m([0m[38;2;248;248;242mresponse[0m[38;2;248;248;242m.[0m[38;2;248;248;242mencodeURL[0m[38;2;248;248;242m([0m
+[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242m([0m[3;38;2;166;226;46mHttpServletRequest[0m[38;2;248;248;242m)[0m[38;2;248;248;242m pageContext[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetRequest[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetRequestURI[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m
+[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m?path=[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m path [0m[38;2;249;38;114m+[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m&version=[0m[38;2;230;219;116m"[0m[38;2;248;248;242m [0m[38;2;249;38;114m+[0m[38;2;248;248;242m version[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m%>[0m
+[38;2;255;255;255m<[0m[38;2;249;38;114mhead[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mhttp-equiv[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mcontent-type[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mtext/html; charset=iso-8859-1[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mhttp-equiv[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mpragma[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mno-cache[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m[38;2;124;120;101m[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mhttp-equiv[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mcache-control[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mno-cache,must-revalidate[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m[38;2;124;120;101m[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mhttp-equiv[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mexpires[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m0[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m[38;2;124;120;101m[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mhttp-equiv[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mcontent-language[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116men[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mauthor[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mCedrik LIME[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mcopyright[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mcopyright 2005-2021 the Apache Software Foundation[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mmeta[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mrobots[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcontent[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mnoindex,nofollow,noarchive[0m[38;2;255;255;255m"[0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtitle[0m[38;2;255;255;255m>[0m[38;2;248;248;242mSessions Administration: details for [0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m currentSessionId [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtitle[0m[38;2;255;255;255m>[0m
+[38;2;255;255;255m[0m[38;2;249;38;114mhead[0m[38;2;255;255;255m>[0m
+[38;2;255;255;255m<[0m[38;2;249;38;114mbody[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m<%[0m[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentHttpSession [0m[38;2;249;38;114m==[0m[38;2;248;248;242m [0m[38;2;190;132;255mnull[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{ [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh1[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242mcurrentSessionId[0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mh1[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m<%[0m[38;2;248;248;242m }[0m[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;248;248;242m{ [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mh1[0m[38;2;255;255;255m>[0m[38;2;248;248;242mDetails for Session [0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m currentSessionId [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mh1[0m[38;2;255;255;255m>[0m
+
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtable[0m[38;2;248;248;242m [0m[38;2;166;226;46mstyle[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[3;38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mborder[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m0[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mSession Id[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m currentSessionId [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mGuessed Locale[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mguessDisplayLocaleFromSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mGuessed User[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mguessDisplayUserFromSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mCreation Time[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetDisplayCreationTimeForSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mLast Accessed Time[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetDisplayLastAccessedTimeForSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mSession Max Inactive Interval[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242msecondsToTimeString[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetMaxInactiveInterval[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mUsed Time[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetDisplayUsedTimeForSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mInactive Time[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetDisplayInactiveTimeForSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mTTL[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetDisplayTTLForSession[0m[38;2;248;248;242m([0m[38;2;248;248;242mcurrentSession[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtable[0m[38;2;255;255;255m>[0m
+
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mform[0m[38;2;248;248;242m [0m[38;2;166;226;46mmethod[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mpost[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46maction[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%= submitUrl %>[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mdiv[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msessionId[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%= currentSessionId %>[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116maction[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msessionDetail[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mPrimary[0m[38;2;230;219;116m"[0m[38;2;248;248;242m.[0m[38;2;248;248;242mequals[0m[38;2;248;248;242m([0m[38;2;248;248;242mrequest[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetParameter[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116msessionType[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msessionType[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mPrimary[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m
+[38;2;248;248;242m }[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msubmit[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mRefresh[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mdiv[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mform[0m[38;2;255;255;255m>[0m
+
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mdiv[0m[38;2;248;248;242m [0m[38;2;166;226;46mclass[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116merror[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mescapeXml[0m[38;2;248;248;242m([0m[38;2;248;248;242mrequest[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttribute[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116merror[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mdiv[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mdiv[0m[38;2;248;248;242m [0m[38;2;166;226;46mclass[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mmessage[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mescapeXml[0m[38;2;248;248;242m([0m[38;2;248;248;242mrequest[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttribute[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mmessage[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mdiv[0m[38;2;255;255;255m>[0m
+
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtable[0m[38;2;248;248;242m [0m[38;2;166;226;46mstyle[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[3;38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mleft[0m[38;2;255;255;255m;[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mborder[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m1[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcellpadding[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m2[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mcellspacing[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m2[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m[38;2;248;248;242m [0m[3;38;2;102;217;239mint[0m[38;2;248;248;242m nAttributes [0m[38;2;249;38;114m=[0m[38;2;248;248;242m [0m[38;2;190;132;255m0[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mEnumeration[0m[38;2;248;248;242m<[0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m>[0m[38;2;248;248;242m attributeNamesEnumeration [0m[38;2;249;38;114m=[0m[38;2;248;248;242m currentHttpSession[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttributeNames[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mwhile[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mattributeNamesEnumeration[0m[38;2;248;248;242m.[0m[38;2;248;248;242mhasMoreElements[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m attributeNamesEnumeration[0m[38;2;248;248;242m.[0m[38;2;248;248;242mnextElement[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114m++[0m[38;2;248;248;242mnAttributes[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m }[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mcaption[0m[38;2;248;248;242m [0m[38;2;166;226;46mstyle[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[3;38;2;102;217;239mfont-variant[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239msmall-caps[0m[38;2;255;255;255m;[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mformatNumber[0m[38;2;248;248;242m([0m[38;2;248;248;242mnAttributes[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;248;248;242m attributes[0m[38;2;255;255;255m[0m[38;2;249;38;114mcaption[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mthead[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mRemove Attribute[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mAttribute name[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m[38;2;248;248;242mAttribute value[0m[38;2;255;255;255m[0m[38;2;249;38;114mth[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mthead[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;117;113;94m<%--[0m[38;2;117;113;94mtfoot>[0m
+[38;2;117;113;94m
[0m
+[38;2;117;113;94m [0m
+[38;2;117;113;94m TODO: set Max Inactive Interval on sessions[0m
+[38;2;117;113;94m | [0m
+[38;2;117;113;94m
[0m
+[38;2;117;113;94m [0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtbody[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m[38;2;248;248;242m attributeNamesEnumeration [0m[38;2;249;38;114m=[0m[38;2;248;248;242m currentHttpSession[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttributeNames[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mwhile[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;248;248;242mattributeNamesEnumeration[0m[38;2;248;248;242m.[0m[38;2;248;248;242mhasMoreElements[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[3;38;2;166;226;46mString[0m[38;2;248;248;242m attributeName [0m[38;2;249;38;114m=[0m[38;2;248;248;242m attributeNamesEnumeration[0m[38;2;248;248;242m.[0m[38;2;248;248;242mnextElement[0m[38;2;248;248;242m([0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;248;248;242m [0m[38;2;166;226;46malign[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mcenter[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mform[0m[38;2;248;248;242m [0m[38;2;166;226;46mmethod[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mpost[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46maction[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%= submitUrl %>[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mdiv[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116maction[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mremoveSessionAttribute[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msessionId[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%= currentSessionId %>[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mattributeName[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%= JspHelper.escapeXml(attributeName) %>[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m
+[38;2;248;248;242m [0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mPrimary[0m[38;2;230;219;116m"[0m[38;2;248;248;242m.[0m[38;2;248;248;242mequals[0m[38;2;248;248;242m([0m[38;2;248;248;242mrequest[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetParameter[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116msessionType[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msubmit[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mRemove[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mhidden[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mname[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msessionType[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mPrimary[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m
+[38;2;248;248;242m }[0m[38;2;248;248;242m [0m[38;2;249;38;114melse[0m[38;2;248;248;242m [0m[38;2;248;248;242m{[0m
+[38;2;248;248;242m out[0m[38;2;248;248;242m.[0m[38;2;248;248;242mprint[0m[38;2;248;248;242m([0m[38;2;230;219;116m"[0m[38;2;230;219;116mPrimary sessions only[0m[38;2;230;219;116m"[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m
+[38;2;248;248;242m }[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mdiv[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mform[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mescapeXml[0m[38;2;248;248;242m([0m[38;2;248;248;242mattributeName[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m[38;2;248;248;242m<%[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mObject[0m[38;2;248;248;242m attributeValue [0m[38;2;249;38;114m=[0m[38;2;248;248;242m currentHttpSession[0m[38;2;248;248;242m.[0m[38;2;248;248;242mgetAttribute[0m[38;2;248;248;242m([0m[38;2;248;248;242mattributeName[0m[38;2;248;248;242m)[0m[38;2;248;248;242m;[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m<[0m[38;2;249;38;114mspan[0m[38;2;248;248;242m [0m[38;2;166;226;46mtitle[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%= attributeValue == null ? [0m[38;2;255;255;255m"[0m[38;2;248;248;240m"[0m[38;2;248;248;242m [0m[38;2;166;226;46m:[0m[38;2;248;248;242m [0m[38;2;166;226;46mattributeValue.getClass().toString()[0m[38;2;248;248;242m [0m[38;2;166;226;46m%[0m[38;2;255;255;255m>[0m[38;2;248;248;242m">[0m[38;2;248;248;242m<%=[0m[38;2;248;248;242m [0m[3;38;2;166;226;46mJspHelper[0m[38;2;248;248;242m.[0m[38;2;248;248;242mescapeXml[0m[38;2;248;248;242m([0m[38;2;248;248;242mattributeValue[0m[38;2;248;248;242m)[0m[38;2;248;248;242m [0m[38;2;248;248;242m%>[0m[38;2;255;255;255m[0m[38;2;249;38;114mspan[0m[38;2;255;255;255m>[0m[38;2;255;255;255m[0m[38;2;249;38;114mtd[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtr[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;248;248;242m<%[0m[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m end while [0m[38;2;248;248;242m%>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtbody[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mtable[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m<%[0m[38;2;248;248;242m [0m[38;2;248;248;242m}[0m[38;2;248;248;242m [0m[38;2;117;113;94m//[0m[38;2;117;113;94m endif[0m[38;2;248;248;242m%>[0m
+
+[38;2;255;255;255m<[0m[38;2;249;38;114mform[0m[38;2;248;248;242m [0m[38;2;166;226;46mmethod[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mpost[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46maction[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116m<%=submitUrl%>[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114mp[0m[38;2;248;248;242m [0m[38;2;166;226;46mstyle[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[3;38;2;102;217;239mtext-align[0m[38;2;255;255;255m:[0m[38;2;248;248;242m [0m[38;2;102;217;239mcenter[0m[38;2;255;255;255m;[0m[38;2;255;255;255m"[0m[38;2;255;255;255m>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m<[0m[38;2;249;38;114minput[0m[38;2;248;248;242m [0m[38;2;166;226;46mtype[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116msubmit[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;166;226;46mvalue[0m[38;2;166;226;46m=[0m[38;2;255;255;255m"[0m[38;2;230;219;116mReturn to session list[0m[38;2;255;255;255m"[0m[38;2;248;248;242m [0m[38;2;255;255;255m/>[0m
+[38;2;248;248;242m [0m[38;2;255;255;255m[0m[38;2;249;38;114mp[0m[38;2;255;255;255m>[0m
+[38;2;255;255;255m[0m[38;2;249;38;114mform[0m[38;2;255;255;255m>[0m
+
+[38;2;117;113;94m<%--[0m[38;2;117;113;94mdiv style="display: none;">[0m
+[38;2;117;113;94m[0m
+[38;2;117;113;94m
[0m
+[38;2;117;113;94m
[0m
+[38;2;117;113;94m
[0m
+[38;2;117;113;94m
[0m
+[38;2;117;113;94m[0m
+
+[38;2;255;255;255m[0m[38;2;249;38;114mbody[0m[38;2;255;255;255m>[0m
+[38;2;255;255;255m[0m[38;2;249;38;114mhtml[0m[38;2;255;255;255m>[0m
diff --git a/tests/syntax-tests/source/Java Server Page (JSP)/LICENSE.md b/tests/syntax-tests/source/Java Server Page (JSP)/LICENSE.md
new file mode 100644
index 00000000..cb4f7f5d
--- /dev/null
+++ b/tests/syntax-tests/source/Java Server Page (JSP)/LICENSE.md
@@ -0,0 +1,1141 @@
+The `sessionDetail.jsp` file has been added from https://github.com/apache/tomcat under the following license:
+
+```text
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+APACHE TOMCAT SUBCOMPONENTS:
+
+Apache Tomcat includes a number of subcomponents with separate copyright notices
+and license terms. Your use of these subcomponents is subject to the terms and
+conditions of the following licenses.
+
+
+For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component and the
+following Jakarta EE Schemas:
+- jakartaee_9.xsd
+- jakarta_web-services_2_0.xsd
+- jakarta_web-services_client_2_0.xsd
+- jsp_3_0.xsd
+- web-app_5_0.xsd
+- web-commonn_5_0.xsd
+- web-fragment_5_0.xsd
+- web-jsptaglibrary_3_0.xsd
+
+Eclipse Public License - v 2.0
+
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+ PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+ a) in the case of the initial Contributor, the initial content
+ Distributed under this Agreement, and
+
+ b) in the case of each subsequent Contributor:
+ i) changes to the Program, and
+ ii) additions to the Program;
+ where such changes and/or additions to the Program originate from
+ and are Distributed by that particular Contributor. A Contribution
+ "originates" from a Contributor if it was added to the Program by
+ such Contributor itself or anyone acting on such Contributor's behalf.
+ Contributions do not include changes or additions to the Program that
+ are not Modified Works.
+
+"Contributor" means any person or entity that Distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions Distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement
+or any Secondary License (as applicable), including Contributors.
+
+"Derivative Works" shall mean any work, whether in Source Code or other
+form, that is based on (or derived from) the Program and for which the
+editorial revisions, annotations, elaborations, or other modifications
+represent, as a whole, an original work of authorship.
+
+"Modified Works" shall mean any work in Source Code or other form that
+results from an addition to, deletion from, or modification of the
+contents of the Program, including, for purposes of clarity any new file
+in Source Code form that contains any contents of the Program. Modified
+Works shall not include works that contain only declarations,
+interfaces, types, classes, structures, or files of the Program solely
+in each case in order to link to, bind by name, or subclass the Program
+or Modified Works thereof.
+
+"Distribute" means the acts of a) distributing or b) making available
+in any manner that enables the transfer of a copy.
+
+"Source Code" means the form of a Program preferred for making
+modifications, including but not limited to software source code,
+documentation source, and configuration files.
+
+"Secondary License" means either the GNU General Public License,
+Version 2.0, or any later versions of that license, including any
+exceptions or additional permissions as identified by the initial
+Contributor.
+
+2. GRANT OF RIGHTS
+
+ a) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
+ license to reproduce, prepare Derivative Works of, publicly display,
+ publicly perform, Distribute and sublicense the Contribution of such
+ Contributor, if any, and such Derivative Works.
+
+ b) Subject to the terms of this Agreement, each Contributor hereby
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
+ license under Licensed Patents to make, use, sell, offer to sell,
+ import and otherwise transfer the Contribution of such Contributor,
+ if any, in Source Code or other form. This patent license shall
+ apply to the combination of the Contribution and the Program if, at
+ the time the Contribution is added by the Contributor, such addition
+ of the Contribution causes such combination to be covered by the
+ Licensed Patents. The patent license shall not apply to any other
+ combinations which include the Contribution. No hardware per se is
+ licensed hereunder.
+
+ c) Recipient understands that although each Contributor grants the
+ licenses to its Contributions set forth herein, no assurances are
+ provided by any Contributor that the Program does not infringe the
+ patent or other intellectual property rights of any other entity.
+ Each Contributor disclaims any liability to Recipient for claims
+ brought by any other entity based on infringement of intellectual
+ property rights or otherwise. As a condition to exercising the
+ rights and licenses granted hereunder, each Recipient hereby
+ assumes sole responsibility to secure any other intellectual
+ property rights needed, if any. For example, if a third party
+ patent license is required to allow Recipient to Distribute the
+ Program, it is Recipient's responsibility to acquire that license
+ before distributing the Program.
+
+ d) Each Contributor represents that to its knowledge it has
+ sufficient copyright rights in its Contribution, if any, to grant
+ the copyright license set forth in this Agreement.
+
+ e) Notwithstanding the terms of any Secondary License, no
+ Contributor makes additional grants to any Recipient (other than
+ those set forth in this Agreement) as a result of such Recipient's
+ receipt of the Program under the terms of a Secondary License
+ (if permitted under the terms of Section 3).
+
+3. REQUIREMENTS
+
+3.1 If a Contributor Distributes the Program in any form, then:
+
+ a) the Program must also be made available as Source Code, in
+ accordance with section 3.2, and the Contributor must accompany
+ the Program with a statement that the Source Code for the Program
+ is available under this Agreement, and informs Recipients how to
+ obtain it in a reasonable manner on or through a medium customarily
+ used for software exchange; and
+
+ b) the Contributor may Distribute the Program under a license
+ different than this Agreement, provided that such license:
+ i) effectively disclaims on behalf of all other Contributors all
+ warranties and conditions, express and implied, including
+ warranties or conditions of title and non-infringement, and
+ implied warranties or conditions of merchantability and fitness
+ for a particular purpose;
+
+ ii) effectively excludes on behalf of all other Contributors all
+ liability for damages, including direct, indirect, special,
+ incidental and consequential damages, such as lost profits;
+
+ iii) does not attempt to limit or alter the recipients' rights
+ in the Source Code under section 3.2; and
+
+ iv) requires any subsequent distribution of the Program by any
+ party to be under a license that satisfies the requirements
+ of this section 3.
+
+3.2 When the Program is Distributed as Source Code:
+
+ a) it must be made available under this Agreement, or if the
+ Program (i) is combined with other material in a separate file or
+ files made available under a Secondary License, and (ii) the initial
+ Contributor attached to the Source Code the notice described in
+ Exhibit A of this Agreement, then the Program may be made available
+ under the terms of such Secondary Licenses, and
+
+ b) a copy of this Agreement must be included with each copy of
+ the Program.
+
+3.3 Contributors may not remove or alter any copyright, patent,
+trademark, attribution notices, disclaimers of warranty, or limitations
+of liability ("notices") contained within the Program from any copy of
+the Program which they Distribute, provided that Contributors may add
+their own appropriate notices.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program,
+the Contributor who includes the Program in a commercial product
+offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes
+the Program in a commercial product offering, such Contributor
+("Commercial Contributor") hereby agrees to defend and indemnify every
+other Contributor ("Indemnified Contributor") against any losses,
+damages and costs (collectively "Losses") arising from claims, lawsuits
+and other legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the Program
+in a commercial product offering. The obligations in this section do not
+apply to any claims or Losses relating to any actual or alleged
+intellectual property infringement. In order to qualify, an Indemnified
+Contributor must: a) promptly notify the Commercial Contributor in
+writing of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may
+participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those performance
+claims and warranties, and if a court requires any other Contributor to
+pay any damages as a result, the Commercial Contributor must pay
+those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
+BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
+TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
+PURPOSE. Each Recipient is solely responsible for determining the
+appropriateness of using and distributing the Program and assumes all
+risks associated with its exercise of rights under this Agreement,
+including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs
+or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
+PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
+SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
+EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the
+Program itself (excluding combinations of the Program with other software
+or hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. The Eclipse Foundation
+is the initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+Distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is published,
+Contributor may elect to Distribute the Program (including its
+Contributions) under the new version.
+
+Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
+receives no rights or licenses to the intellectual property of any
+Contributor under this Agreement, whether expressly, by implication,
+estoppel or otherwise. All rights in the Program not expressly granted
+under this Agreement are reserved. Nothing in this Agreement is intended
+to be enforceable by any entity that is not a Contributor or Recipient.
+No third-party beneficiary rights are created under this Agreement.
+
+Exhibit A - Form of Secondary Licenses Notice
+
+"This Source Code may also be made available under the following
+Secondary Licenses when the conditions for such availability set forth
+in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
+version(s), and exceptions or additional permissions here}."
+
+ Simply including a copy of this Agreement, including this Exhibit A
+ is not sufficient to license the Source Code under Secondary Licenses.
+
+ If it is not possible or desirable to put the notice in a particular
+ file, then You may include the notice in a location (such as a LICENSE
+ file in a relevant directory) where a recipient would be likely to
+ look for such a notice.
+
+ You may add additional accurate notices of copyright ownership.
+
+
+For the Windows Installer component:
+
+ * All NSIS source code, plug-ins, documentation, examples, header files and
+ graphics, with the exception of the compression modules and where
+ otherwise noted, are licensed under the zlib/libpng license.
+ * The zlib compression module for NSIS is licensed under the zlib/libpng
+ license.
+ * The bzip2 compression module for NSIS is licensed under the bzip2 license.
+ * The lzma compression module for NSIS is licensed under the Common Public
+ License version 1.0.
+
+zlib/libpng license
+
+This software is provided 'as-is', without any express or implied warranty. In
+no event will the authors be held liable for any damages arising from the use of
+this software.
+
+Permission is granted to anyone to use this software for any purpose, including
+commercial applications, and to alter it and redistribute it freely, subject to
+the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not claim
+ that you wrote the original software. If you use this software in a
+ product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+bzip2 license
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. The origin of this software must not be misrepresented; you must not claim
+ that you wrote the original software. If you use this software in a
+ product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 3. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 4. The name of the author may not be used to endorse or promote products
+ derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+
+Julian Seward, Cambridge, UK.
+
+jseward@acm.org
+Common Public License version 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and b) in the case of each subsequent
+Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to
+its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by
+that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor,
+and informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
+
+Special exception for LZMA compression module
+
+Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for
+NSIS, expressly permit you to statically or dynamically link your code (or bind
+by name) to the files from the LZMA compression module for NSIS without
+subjecting your linked code to the terms of the Common Public license version
+1.0. Any modifications or additions to files from the LZMA compression module
+for NSIS, however, are subject to the terms of the Common Public License version
+1.0.
+
+
+For the following XML Schemas for Java EE Deployment Descriptors:
+ - javaee_5.xsd
+ - javaee_web_services_1_2.xsd
+ - javaee_web_services_client_1_2.xsd
+ - javaee_6.xsd
+ - javaee_web_services_1_3.xsd
+ - javaee_web_services_client_1_3.xsd
+ - jsp_2_2.xsd
+ - web-app_3_0.xsd
+ - web-common_3_0.xsd
+ - web-fragment_3_0.xsd
+ - javaee_7.xsd
+ - javaee_web_services_1_4.xsd
+ - javaee_web_services_client_1_4.xsd
+ - jsp_2_3.xsd
+ - web-app_3_1.xsd
+ - web-common_3_1.xsd
+ - web-fragment_3_1.xsd
+ - javaee_8.xsd
+ - web-app_4_0.xsd
+ - web-common_4_0.xsd
+ - web-fragment_4_0.xsd
+
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+
+1. Definitions.
+
+ 1.1. Contributor. means each individual or entity that creates or contributes
+ to the creation of Modifications.
+
+ 1.2. Contributor Version. means the combination of the Original Software,
+ prior Modifications used by a Contributor (if any), and the
+ Modifications made by that particular Contributor.
+
+ 1.3. Covered Software. means (a) the Original Software, or (b) Modifications,
+ or (c) the combination of files containing Original Software with files
+ containing Modifications, in each case including portions thereof.
+
+ 1.4. Executable. means the Covered Software in any form other than Source
+ Code.
+
+ 1.5. Initial Developer. means the individual or entity that first makes
+ Original Software available under this License.
+
+ 1.6. Larger Work. means a work which combines Covered Software or portions
+ thereof with code not governed by the terms of this License.
+
+ 1.7. License. means this document.
+
+ 1.8. Licensable. means having the right to grant, to the maximum extent
+ possible, whether at the time of the initial grant or subsequently
+ acquired, any and all of the rights conveyed herein.
+
+ 1.9. Modifications. means the Source Code and Executable form of any of the
+ following:
+
+ A. Any file that results from an addition to, deletion from or
+ modification of the contents of a file containing Original Software
+ or previous Modifications;
+
+ B. Any new file that contains any part of the Original Software or
+ previous Modification; or
+
+ C. Any new file that is contributed or otherwise made available under
+ the terms of this License.
+
+ 1.10. Original Software. means the Source Code and Executable form of
+ computer software code that is originally released under this License.
+
+ 1.11. Patent Claims. means any patent claim(s), now owned or hereafter
+ acquired, including without limitation, method, process, and apparatus
+ claims, in any patent Licensable by grantor.
+
+ 1.12. Source Code. means (a) the common form of computer software code in
+ which modifications are made and (b) associated documentation included
+ in or with such code.
+
+ 1.13. You. (or .Your.) means an individual or a legal entity exercising
+ rights under, and complying with all of the terms of, this License. For
+ legal entities, .You. includes any entity which controls, is controlled
+ by, or is under common control with You. For purposes of this
+ definition, .control. means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+ 2.1. The Initial Developer Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and subject to
+ third party intellectual property claims, the Initial Developer hereby
+ grants You a world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by Initial Developer, to use, reproduce, modify, display,
+ perform, sublicense and distribute the Original Software (or
+ portions thereof), with or without Modifications, and/or as part of
+ a Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using or selling of
+ Original Software, to make, have made, use, practice, sell, and
+ offer for sale, and/or otherwise dispose of the Original Software
+ (or portions thereof).
+
+ (c) The licenses granted in Sections 2.1(a) and (b) are effective on the
+ date Initial Developer first distributes or otherwise makes the
+ Original Software available to a third party under the terms of this
+ License.
+
+ (d) Notwithstanding Section 2.1(b) above, no patent license is granted:
+ (1) for code that You delete from the Original Software, or (2) for
+ infringements caused by: (i) the modification of the Original
+ Software, or (ii) the combination of the Original Software with
+ other software or devices.
+
+ 2.2. Contributor Grant.
+
+ Conditioned upon Your compliance with Section 3.1 below and subject to third
+ party intellectual property claims, each Contributor hereby grants You a
+ world-wide, royalty-free, non-exclusive license:
+
+ (a) under intellectual property rights (other than patent or trademark)
+ Licensable by Contributor to use, reproduce, modify, display,
+ perform, sublicense and distribute the Modifications created by such
+ Contributor (or portions thereof), either on an unmodified basis,
+ with other Modifications, as Covered Software and/or as part of a
+ Larger Work; and
+
+ (b) under Patent Claims infringed by the making, using, or selling of
+ Modifications made by that Contributor either alone and/or in
+ combination with its Contributor Version (or portions of such
+ combination), to make, use, sell, offer for sale, have made, and/or
+ otherwise dispose of: (1) Modifications made by that Contributor (or
+ portions thereof); and (2) the combination of Modifications made by
+ that Contributor with its Contributor Version (or portions of such
+ combination).
+
+ (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on
+ the date Contributor first distributes or otherwise makes the
+ Modifications available to a third party.
+
+ (d) Notwithstanding Section 2.2(b) above, no patent license is granted:
+ (1) for any code that Contributor has deleted from the Contributor
+ Version; (2) for infringements caused by: (i) third party
+ modifications of Contributor Version, or (ii) the combination of
+ Modifications made by that Contributor with other software (except
+ as part of the Contributor Version) or other devices; or (3) under
+ Patent Claims infringed by Covered Software in the absence of
+ Modifications made by that Contributor.
+
+3. Distribution Obligations.
+
+ 3.1. Availability of Source Code.
+ Any Covered Software that You distribute or otherwise make available in
+ Executable form must also be made available in Source Code form and that
+ Source Code form must be distributed only under the terms of this License.
+ You must include a copy of this License with every copy of the Source Code
+ form of the Covered Software You distribute or otherwise make available.
+ You must inform recipients of any such Covered Software in Executable form
+ as to how they can obtain such Covered Software in Source Code form in a
+ reasonable manner on or through a medium customarily used for software
+ exchange.
+
+ 3.2. Modifications.
+ The Modifications that You create or to which You contribute are governed
+ by the terms of this License. You represent that You believe Your
+ Modifications are Your original creation(s) and/or You have sufficient
+ rights to grant the rights conveyed by this License.
+
+ 3.3. Required Notices.
+ You must include a notice in each of Your Modifications that identifies
+ You as the Contributor of the Modification. You may not remove or alter
+ any copyright, patent or trademark notices contained within the Covered
+ Software, or any notices of licensing or any descriptive text giving
+ attribution to any Contributor or the Initial Developer.
+
+ 3.4. Application of Additional Terms.
+ You may not offer or impose any terms on any Covered Software in Source
+ Code form that alters or restricts the applicable version of this License
+ or the recipients. rights hereunder. You may choose to offer, and to
+ charge a fee for, warranty, support, indemnity or liability obligations to
+ one or more recipients of Covered Software. However, you may do so only on
+ Your own behalf, and not on behalf of the Initial Developer or any
+ Contributor. You must make it absolutely clear that any such warranty,
+ support, indemnity or liability obligation is offered by You alone, and
+ You hereby agree to indemnify the Initial Developer and every Contributor
+ for any liability incurred by the Initial Developer or such Contributor as
+ a result of warranty, support, indemnity or liability terms You offer.
+
+ 3.5. Distribution of Executable Versions.
+ You may distribute the Executable form of the Covered Software under the
+ terms of this License or under the terms of a license of Your choice,
+ which may contain terms different from this License, provided that You are
+ in compliance with the terms of this License and that the license for the
+ Executable form does not attempt to limit or alter the recipient.s rights
+ in the Source Code form from the rights set forth in this License. If You
+ distribute the Covered Software in Executable form under a different
+ license, You must make it absolutely clear that any terms which differ
+ from this License are offered by You alone, not by the Initial Developer
+ or Contributor. You hereby agree to indemnify the Initial Developer and
+ every Contributor for any liability incurred by the Initial Developer or
+ such Contributor as a result of any such terms You offer.
+
+ 3.6. Larger Works.
+ You may create a Larger Work by combining Covered Software with other code
+ not governed by the terms of this License and distribute the Larger Work
+ as a single product. In such a case, You must make sure the requirements
+ of this License are fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+ 4.1. New Versions.
+ Sun Microsystems, Inc. is the initial license steward and may publish
+ revised and/or new versions of this License from time to time. Each
+ version will be given a distinguishing version number. Except as provided
+ in Section 4.3, no one other than the license steward has the right to
+ modify this License.
+
+ 4.2. Effect of New Versions.
+ You may always continue to use, distribute or otherwise make the Covered
+ Software available under the terms of the version of the License under
+ which You originally received the Covered Software. If the Initial
+ Developer includes a notice in the Original Software prohibiting it from
+ being distributed or otherwise made available under any subsequent version
+ of the License, You must distribute and make the Covered Software
+ available under the terms of the version of the License under which You
+ originally received the Covered Software. Otherwise, You may also choose
+ to use, distribute or otherwise make the Covered Software available under
+ the terms of any subsequent version of the License published by the
+ license steward.
+
+ 4.3. Modified Versions.
+ When You are an Initial Developer and You want to create a new license for
+ Your Original Software, You may create and use a modified version of this
+ License if You: (a) rename the license and remove any references to the
+ name of the license steward (except to note that the license differs from
+ this License); and (b) otherwise make it clear that the license contains
+ terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+ COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT
+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+ LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS,
+ MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK
+ AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD
+ ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL
+ DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
+ SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN
+ ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED
+ HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+6. TERMINATION.
+
+ 6.1. This License and the rights granted hereunder will terminate
+ automatically if You fail to comply with terms herein and fail to
+ cure such breach within 30 days of becoming aware of the breach.
+ Provisions which, by their nature, must remain in effect beyond the
+ termination of this License shall survive.
+
+ 6.2. If You assert a patent infringement claim (excluding declaratory
+ judgment actions) against Initial Developer or a Contributor (the
+ Initial Developer or Contributor against whom You assert such claim
+ is referred to as .Participant.) alleging that the Participant
+ Software (meaning the Contributor Version where the Participant is a
+ Contributor or the Original Software where the Participant is the
+ Initial Developer) directly or indirectly infringes any patent, then
+ any and all rights granted directly or indirectly to You by such
+ Participant, the Initial Developer (if the Initial Developer is not
+ the Participant) and all Contributors under Sections 2.1 and/or 2.2
+ of this License shall, upon 60 days notice from Participant terminate
+ prospectively and automatically at the expiration of such 60 day
+ notice period, unless if within such 60 day period You withdraw Your
+ claim with respect to the Participant Software against such
+ Participant either unilaterally or pursuant to a written agreement
+ with Participant.
+
+ 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end
+ user licenses that have been validly granted by You or any
+ distributor hereunder prior to termination (excluding licenses
+ granted to You by any distributor) shall survive termination.
+
+7. LIMITATION OF LIABILITY.
+
+ UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING
+ NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY
+ OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF
+ ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL,
+ INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT
+ LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE,
+ COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR
+ LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF
+ SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR
+ DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT
+ APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+ EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS
+ EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+ The Covered Software is a .commercial item,. as that term is defined in 48
+ C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as
+ that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial
+ computer software documentation. as such terms are used in 48 C.F.R. 12.212
+ (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1
+ through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered
+ Software with only those rights set forth herein. This U.S. Government Rights
+ clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or
+ provision that addresses Government rights in computer software under this
+ License.
+
+9. MISCELLANEOUS.
+
+ This License represents the complete agreement concerning subject matter
+ hereof. If any provision of this License is held to be unenforceable, such
+ provision shall be reformed only to the extent necessary to make it
+ enforceable. This License shall be governed by the law of the jurisdiction
+ specified in a notice contained within the Original Software (except to the
+ extent applicable law, if any, provides otherwise), excluding such
+ jurisdiction's conflict-of-law provisions. Any litigation relating to this
+ License shall be subject to the jurisdiction of the courts located in the
+ jurisdiction and venue specified in a notice contained within the Original
+ Software, with the losing party responsible for costs, including, without
+ limitation, court costs and reasonable attorneys. fees and expenses. The
+ application of the United Nations Convention on Contracts for the
+ International Sale of Goods is expressly excluded. Any law or regulation
+ which provides that the language of a contract shall be construed against
+ the drafter shall not apply to this License. You agree that You alone are
+ responsible for compliance with the United States export administration
+ regulations (and the export control laws and regulation of any other
+ countries) when You use, distribute or otherwise make available any Covered
+ Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+
+ As between Initial Developer and the Contributors, each party is responsible
+ for claims and damages arising, directly or indirectly, out of its
+ utilization of rights under this License and You agree to work with Initial
+ Developer and Contributors to distribute such responsibility on an equitable
+ basis. Nothing herein is intended or shall be deemed to constitute any
+ admission of liability.
+
+ NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION
+ LICENSE (CDDL)
+
+ The code released under the CDDL shall be governed by the laws of the State
+ of California (excluding conflict-of-law provisions). Any litigation relating
+ to this License shall be subject to the jurisdiction of the Federal Courts of
+ the Northern District of California and the state courts of the State of
+ California, with venue lying in Santa Clara County, California.
+
+```
diff --git a/tests/syntax-tests/source/Java Server Page (JSP)/NOTICE b/tests/syntax-tests/source/Java Server Page (JSP)/NOTICE
new file mode 100644
index 00000000..43bc6be6
--- /dev/null
+++ b/tests/syntax-tests/source/Java Server Page (JSP)/NOTICE
@@ -0,0 +1,68 @@
+Apache Tomcat
+Copyright 1999-2021 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (https://www.apache.org/).
+
+This software contains code derived from netty-native
+developed by the Netty project
+(https://netty.io, https://github.com/netty/netty-tcnative/)
+and from finagle-native developed at Twitter
+(https://github.com/twitter/finagle).
+
+This software contains code derived from jgroups-kubernetes
+developed by the JGroups project (http://www.jgroups.org/).
+
+The Windows Installer is built with the Nullsoft
+Scriptable Install System (NSIS), which is
+open source software. The original software and
+related information is available at
+http://nsis.sourceforge.net.
+
+Java compilation software for JSP pages is provided by the Eclipse
+JDT Core Batch Compiler component, which is open source software.
+The original software and related information is available at
+https://www.eclipse.org/jdt/core/.
+
+org.apache.tomcat.util.json.JSONParser.jj is a public domain javacc grammar
+for JSON written by Robert Fischer.
+https://github.com/RobertFischer/json-parser
+
+For portions of the Tomcat JNI OpenSSL API and the OpenSSL JSSE integration
+The org.apache.tomcat.jni and the org.apache.tomcat.net.openssl packages
+are derivative work originating from the Netty project and the finagle-native
+project developed at Twitter
+* Copyright 2014 The Netty Project
+* Copyright 2014 Twitter
+
+For portions of the Tomcat cloud support
+The org.apache.catalina.tribes.membership.cloud package contains derivative
+work originating from the jgroups project.
+https://github.com/jgroups-extras/jgroups-kubernetes
+Copyright 2002-2018 Red Hat Inc.
+
+The original XML Schemas for Java EE Deployment Descriptors:
+ - javaee_5.xsd
+ - javaee_web_services_1_2.xsd
+ - javaee_web_services_client_1_2.xsd
+ - javaee_6.xsd
+ - javaee_web_services_1_3.xsd
+ - javaee_web_services_client_1_3.xsd
+ - jsp_2_2.xsd
+ - web-app_3_0.xsd
+ - web-common_3_0.xsd
+ - web-fragment_3_0.xsd
+ - javaee_7.xsd
+ - javaee_web_services_1_4.xsd
+ - javaee_web_services_client_1_4.xsd
+ - jsp_2_3.xsd
+ - web-app_3_1.xsd
+ - web-common_3_1.xsd
+ - web-fragment_3_1.xsd
+ - javaee_8.xsd
+ - web-app_4_0.xsd
+ - web-common_4_0.xsd
+ - web-fragment_4_0.xsd
+
+may be obtained from:
+http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html
diff --git a/tests/syntax-tests/source/Java Server Page (JSP)/sessionDetail.jsp b/tests/syntax-tests/source/Java Server Page (JSP)/sessionDetail.jsp
new file mode 100644
index 00000000..d4c5fbca
--- /dev/null
+++ b/tests/syntax-tests/source/Java Server Page (JSP)/sessionDetail.jsp
@@ -0,0 +1,197 @@
+
+<%--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--%>
+<%@page session="false" contentType="text/html; charset=ISO-8859-1" %>
+<%@page import="java.util.Enumeration" %>
+<%@page import="jakarta.servlet.http.HttpSession" %>
+<%@page import="org.apache.catalina.Session" %>
+<%@page import="org.apache.catalina.manager.JspHelper" %>
+<%@page import="org.apache.catalina.util.ContextName" %>
+
+<%--!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"--%>
+
+
+<% String path = (String) request.getAttribute("path");
+ String version = (String) request.getAttribute("version");
+ ContextName cn = new ContextName(path, version);
+ Session currentSession = (Session)request.getAttribute("currentSession");
+ String currentSessionId = null;
+ HttpSession currentHttpSession = null;
+ if (currentSession != null) {
+ currentHttpSession = currentSession.getSession();
+ currentSessionId = JspHelper.escapeXml(currentSession.getId());
+ } else {
+ currentSessionId = "Session invalidated";
+ }
+ String submitUrl = JspHelper.escapeXml(response.encodeURL(
+ ((HttpServletRequest) pageContext.getRequest()).getRequestURI() +
+ "?path=" + path + "&version=" + version));
+%>
+
+
+
+
+
+
+
+
+
+ Sessions Administration: details for <%= currentSessionId %>
+
+
+<% if (currentHttpSession == null) { %>
+ <%=currentSessionId%>
+<% } else { %>
+ Details for Session <%= currentSessionId %>
+
+
+
+ Session Id |
+ <%= currentSessionId %> |
+
+
+ Guessed Locale |
+ <%= JspHelper.guessDisplayLocaleFromSession(currentSession) %> |
+
+
+ Guessed User |
+ <%= JspHelper.guessDisplayUserFromSession(currentSession) %> |
+
+
+ Creation Time |
+ <%= JspHelper.getDisplayCreationTimeForSession(currentSession) %> |
+
+
+ Last Accessed Time |
+ <%= JspHelper.getDisplayLastAccessedTimeForSession(currentSession) %> |
+
+
+ Session Max Inactive Interval |
+ <%= JspHelper.secondsToTimeString(currentSession.getMaxInactiveInterval()) %> |
+
+
+ Used Time |
+ <%= JspHelper.getDisplayUsedTimeForSession(currentSession) %> |
+
+
+ Inactive Time |
+ <%= JspHelper.getDisplayInactiveTimeForSession(currentSession) %> |
+
+
+ TTL |
+ <%= JspHelper.getDisplayTTLForSession(currentSession) %> |
+
+
+
+
+
+ <%= JspHelper.escapeXml(request.getAttribute("error")) %>
+ <%= JspHelper.escapeXml(request.getAttribute("message")) %>
+
+
+ <% int nAttributes = 0;
+ Enumeration attributeNamesEnumeration = currentHttpSession.getAttributeNames();
+ while (attributeNamesEnumeration.hasMoreElements()) {
+ attributeNamesEnumeration.nextElement();
+ ++nAttributes;
+ }
+ %>
+ <%= JspHelper.formatNumber(nAttributes) %> attributes
+
+
+ Remove Attribute |
+ Attribute name |
+ Attribute value |
+
+
+ <%--tfoot>
+
+
+ TODO: set Max Inactive Interval on sessions
+ |
+
+
+
+ <% attributeNamesEnumeration = currentHttpSession.getAttributeNames();
+ while (attributeNamesEnumeration.hasMoreElements()) {
+ String attributeName = attributeNamesEnumeration.nextElement();
+ %>
+
+
+
+ |
+ <%= JspHelper.escapeXml(attributeName) %> |
+ <% Object attributeValue = currentHttpSession.getAttribute(attributeName); %>"><%= JspHelper.escapeXml(attributeValue) %> |
+
+ <% } // end while %>
+
+
+<% } // endif%>
+
+
+
+<%--div style="display: none;">
+
+
+
+
+
+
+
+
+