libxml2 2.9.1 clean sources
[tomato.git] / release / src / router / libxml2 / doc / devhelp / libxml2-chvalid.html
blob9c771583d0b94df061546155b4d5c7190fe9a09b
1 <?xml version="1.0" encoding="UTF-8"?>
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
5 <title>chvalid: Unicode character range checking</title>
6 <meta name="generator" content="Libxml2 devhelp stylesheet"/>
7 <link rel="start" href="index.html" title="libxml2 Reference Manual"/>
8 <link rel="up" href="general.html" title="API"/>
9 <link rel="stylesheet" href="style.css" type="text/css"/>
10 <link rel="chapter" href="general.html" title="API"/>
11 </head>
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
14 <tr valign="middle">
15 <td>
16 <a accesskey="p" href="libxml2-catalog.html">
17 <img src="left.png" width="24" height="24" border="0" alt="Prev"/>
18 </a>
19 </td>
20 <td>
21 <a accesskey="u" href="general.html">
22 <img src="up.png" width="24" height="24" border="0" alt="Up"/>
23 </a>
24 </td>
25 <td>
26 <a accesskey="h" href="index.html">
27 <img src="home.png" width="24" height="24" border="0" alt="Home"/>
28 </a>
29 </td>
30 <td>
31 <a accesskey="n" href="libxml2-debugXML.html">
32 <img src="right.png" width="24" height="24" border="0" alt="Next"/>
33 </a>
34 </td>
35 <th width="100%" align="center">libxml2 Reference Manual</th>
36 </tr>
37 </table>
38 <h2>
39 <span class="refentrytitle">chvalid</span>
40 </h2>
41 <p>chvalid - Unicode character range checking</p>
42 <p>this module exports interfaces for the character range validation APIs This file is automatically generated from the cvs source definition files using the genChRanges.py Python script </p>
43 <p>Author(s): William Brack &lt;wbrack@mmm.com.hk&gt; </p>
44 <div class="refsynopsisdiv">
45 <h2>Synopsis</h2>
46 <pre class="synopsis">#define <a href="#xmlIsExtender_ch">xmlIsExtender_ch</a>(c);
47 #define <a href="#xmlIsPubidCharQ">xmlIsPubidCharQ</a>(c);
48 #define <a href="#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a>(c);
49 #define <a href="#xmlIsIdeographicQ">xmlIsIdeographicQ</a>(c);
50 #define <a href="#xmlIsExtenderQ">xmlIsExtenderQ</a>(c);
51 #define <a href="#xmlIsChar_ch">xmlIsChar_ch</a>(c);
52 #define <a href="#xmlIsDigitQ">xmlIsDigitQ</a>(c);
53 #define <a href="#xmlIsDigit_ch">xmlIsDigit_ch</a>(c);
54 #define <a href="#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a>(c);
55 #define <a href="#xmlIsCombiningQ">xmlIsCombiningQ</a>(c);
56 #define <a href="#xmlIsBlankQ">xmlIsBlankQ</a>(c);
57 #define <a href="#xmlIsCharQ">xmlIsCharQ</a>(c);
58 #define <a href="#xmlIsBaseCharQ">xmlIsBaseCharQ</a>(c);
59 #define <a href="#xmlIsBlank_ch">xmlIsBlank_ch</a>(c);
60 typedef struct _xmlChLRange <a href="#xmlChLRange">xmlChLRange</a>;
61 typedef <a href="libxml2-chvalid.html#xmlChSRange">xmlChSRange</a> * <a href="#xmlChSRangePtr">xmlChSRangePtr</a>;
62 typedef <a href="libxml2-chvalid.html#xmlChLRange">xmlChLRange</a> * <a href="#xmlChLRangePtr">xmlChLRangePtr</a>;
63 typedef <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * <a href="#xmlChRangeGroupPtr">xmlChRangeGroupPtr</a>;
64 typedef struct _xmlChSRange <a href="#xmlChSRange">xmlChSRange</a>;
65 typedef struct _xmlChRangeGroup <a href="#xmlChRangeGroup">xmlChRangeGroup</a>;
66 int <a href="#xmlIsChar">xmlIsChar</a> (unsigned int ch);
67 int <a href="#xmlIsDigit">xmlIsDigit</a> (unsigned int ch);
68 int <a href="#xmlIsBlank">xmlIsBlank</a> (unsigned int ch);
69 int <a href="#xmlIsIdeographic">xmlIsIdeographic</a> (unsigned int ch);
70 int <a href="#xmlCharInRange">xmlCharInRange</a> (unsigned int val, <br/> const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * rptr);
71 int <a href="#xmlIsPubidChar">xmlIsPubidChar</a> (unsigned int ch);
72 int <a href="#xmlIsCombining">xmlIsCombining</a> (unsigned int ch);
73 int <a href="#xmlIsBaseChar">xmlIsBaseChar</a> (unsigned int ch);
74 int <a href="#xmlIsExtender">xmlIsExtender</a> (unsigned int ch);
75 </pre>
76 </div>
77 <div class="refsect1" lang="en">
78 <h2>Description</h2>
79 </div>
80 <div class="refsect1" lang="en">
81 <h2>Details</h2>
82 <div class="refsect2" lang="en">
83 <div class="refsect2" lang="en"><h3><a name="xmlIsBaseCharQ">Macro </a>xmlIsBaseCharQ</h3><pre class="programlisting">#define <a href="#xmlIsBaseCharQ">xmlIsBaseCharQ</a>(c);
84 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
85 </div>
86 <hr/>
87 <div class="refsect2" lang="en"><h3><a name="xmlIsBaseChar_ch">Macro </a>xmlIsBaseChar_ch</h3><pre class="programlisting">#define <a href="#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a>(c);
88 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
89 </div>
90 <hr/>
91 <div class="refsect2" lang="en"><h3><a name="xmlIsBlankQ">Macro </a>xmlIsBlankQ</h3><pre class="programlisting">#define <a href="#xmlIsBlankQ">xmlIsBlankQ</a>(c);
92 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
93 </div>
94 <hr/>
95 <div class="refsect2" lang="en"><h3><a name="xmlIsBlank_ch">Macro </a>xmlIsBlank_ch</h3><pre class="programlisting">#define <a href="#xmlIsBlank_ch">xmlIsBlank_ch</a>(c);
96 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
97 </div>
98 <hr/>
99 <div class="refsect2" lang="en"><h3><a name="xmlIsCharQ">Macro </a>xmlIsCharQ</h3><pre class="programlisting">#define <a href="#xmlIsCharQ">xmlIsCharQ</a>(c);
100 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
101 </div>
102 <hr/>
103 <div class="refsect2" lang="en"><h3><a name="xmlIsChar_ch">Macro </a>xmlIsChar_ch</h3><pre class="programlisting">#define <a href="#xmlIsChar_ch">xmlIsChar_ch</a>(c);
104 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
105 </div>
106 <hr/>
107 <div class="refsect2" lang="en"><h3><a name="xmlIsCombiningQ">Macro </a>xmlIsCombiningQ</h3><pre class="programlisting">#define <a href="#xmlIsCombiningQ">xmlIsCombiningQ</a>(c);
108 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
109 </div>
110 <hr/>
111 <div class="refsect2" lang="en"><h3><a name="xmlIsDigitQ">Macro </a>xmlIsDigitQ</h3><pre class="programlisting">#define <a href="#xmlIsDigitQ">xmlIsDigitQ</a>(c);
112 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
113 </div>
114 <hr/>
115 <div class="refsect2" lang="en"><h3><a name="xmlIsDigit_ch">Macro </a>xmlIsDigit_ch</h3><pre class="programlisting">#define <a href="#xmlIsDigit_ch">xmlIsDigit_ch</a>(c);
116 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
117 </div>
118 <hr/>
119 <div class="refsect2" lang="en"><h3><a name="xmlIsExtenderQ">Macro </a>xmlIsExtenderQ</h3><pre class="programlisting">#define <a href="#xmlIsExtenderQ">xmlIsExtenderQ</a>(c);
120 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
121 </div>
122 <hr/>
123 <div class="refsect2" lang="en"><h3><a name="xmlIsExtender_ch">Macro </a>xmlIsExtender_ch</h3><pre class="programlisting">#define <a href="#xmlIsExtender_ch">xmlIsExtender_ch</a>(c);
124 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
125 </div>
126 <hr/>
127 <div class="refsect2" lang="en"><h3><a name="xmlIsIdeographicQ">Macro </a>xmlIsIdeographicQ</h3><pre class="programlisting">#define <a href="#xmlIsIdeographicQ">xmlIsIdeographicQ</a>(c);
128 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
129 </div>
130 <hr/>
131 <div class="refsect2" lang="en"><h3><a name="xmlIsPubidCharQ">Macro </a>xmlIsPubidCharQ</h3><pre class="programlisting">#define <a href="#xmlIsPubidCharQ">xmlIsPubidCharQ</a>(c);
132 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
133 </div>
134 <hr/>
135 <div class="refsect2" lang="en"><h3><a name="xmlIsPubidChar_ch">Macro </a>xmlIsPubidChar_ch</h3><pre class="programlisting">#define <a href="#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a>(c);
136 </pre><p>Automatically generated by genChRanges.py</p><div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>c</tt></i>:</span></td><td>char to validate</td></tr></tbody></table></div>
137 </div>
138 <hr/>
139 <div class="refsect2" lang="en"><h3><a name="xmlChLRange">Structure </a>xmlChLRange</h3><pre class="programlisting">struct _xmlChLRange {
140 unsigned int low
141 unsigned int high
142 } xmlChLRange;
143 </pre><p/>
144 </div>
145 <hr/>
146 <div class="refsect2" lang="en"><h3><a name="xmlChLRangePtr">Typedef </a>xmlChLRangePtr</h3><pre class="programlisting"><a href="libxml2-chvalid.html#xmlChLRange">xmlChLRange</a> * xmlChLRangePtr;
147 </pre><p/>
148 </div>
149 <hr/>
150 <div class="refsect2" lang="en"><h3><a name="xmlChRangeGroup">Structure </a>xmlChRangeGroup</h3><pre class="programlisting">struct _xmlChRangeGroup {
151 int nbShortRange
152 int nbLongRange
153 const <a href="libxml2-chvalid.html#xmlChSRange">xmlChSRange</a> * shortRange : points to an array of ranges
154 const <a href="libxml2-chvalid.html#xmlChLRange">xmlChLRange</a> * longRange
155 } xmlChRangeGroup;
156 </pre><p/>
157 </div>
158 <hr/>
159 <div class="refsect2" lang="en"><h3><a name="xmlChRangeGroupPtr">Typedef </a>xmlChRangeGroupPtr</h3><pre class="programlisting"><a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * xmlChRangeGroupPtr;
160 </pre><p/>
161 </div>
162 <hr/>
163 <div class="refsect2" lang="en"><h3><a name="xmlChSRange">Structure </a>xmlChSRange</h3><pre class="programlisting">struct _xmlChSRange {
164 unsigned short low
165 unsigned short high
166 } xmlChSRange;
167 </pre><p/>
168 </div>
169 <hr/>
170 <div class="refsect2" lang="en"><h3><a name="xmlChSRangePtr">Typedef </a>xmlChSRangePtr</h3><pre class="programlisting"><a href="libxml2-chvalid.html#xmlChSRange">xmlChSRange</a> * xmlChSRangePtr;
171 </pre><p/>
172 </div>
173 <hr/>
174 <div class="refsect2" lang="en"><h3><a name="xmlIsBaseCharGroup">Variable </a>xmlIsBaseCharGroup</h3><pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsBaseCharGroup;
175 </pre><p/>
176 </div>
177 <hr/>
178 <div class="refsect2" lang="en"><h3><a name="xmlIsCharGroup">Variable </a>xmlIsCharGroup</h3><pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsCharGroup;
179 </pre><p/>
180 </div>
181 <hr/>
182 <div class="refsect2" lang="en"><h3><a name="xmlIsCombiningGroup">Variable </a>xmlIsCombiningGroup</h3><pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsCombiningGroup;
183 </pre><p/>
184 </div>
185 <hr/>
186 <div class="refsect2" lang="en"><h3><a name="xmlIsDigitGroup">Variable </a>xmlIsDigitGroup</h3><pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsDigitGroup;
187 </pre><p/>
188 </div>
189 <hr/>
190 <div class="refsect2" lang="en"><h3><a name="xmlIsExtenderGroup">Variable </a>xmlIsExtenderGroup</h3><pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsExtenderGroup;
191 </pre><p/>
192 </div>
193 <hr/>
194 <div class="refsect2" lang="en"><h3><a name="xmlIsIdeographicGroup">Variable </a>xmlIsIdeographicGroup</h3><pre class="programlisting">const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> xmlIsIdeographicGroup;
195 </pre><p/>
196 </div>
197 <hr/>
198 <div class="refsect2" lang="en"><h3><a name="xmlIsPubidChar_tab">Variable </a>xmlIsPubidChar_tab</h3><pre class="programlisting">const unsigned charxmlIsPubidChar_tab[256] xmlIsPubidChar_tab;
199 </pre><p/>
200 </div>
201 <hr/>
202 <div class="refsect2" lang="en"><h3><a name="xmlCharInRange"/>xmlCharInRange ()</h3><pre class="programlisting">int xmlCharInRange (unsigned int val, <br/> const <a href="libxml2-chvalid.html#xmlChRangeGroup">xmlChRangeGroup</a> * rptr)<br/>
203 </pre><p>Does a binary search of the range table to determine if char is valid</p>
204 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>character to be validated</td></tr><tr><td><span class="term"><i><tt>rptr</tt></i>:</span></td><td>pointer to range to be used to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if character valid, false otherwise</td></tr></tbody></table></div></div>
205 <hr/>
206 <div class="refsect2" lang="en"><h3><a name="xmlIsBaseChar"/>xmlIsBaseChar ()</h3><pre class="programlisting">int xmlIsBaseChar (unsigned int ch)<br/>
207 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsBaseChar_ch">xmlIsBaseChar_ch</a> or <a href="libxml2-chvalid.html#xmlIsBaseCharQ">xmlIsBaseCharQ</a> instead</p>
208 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
209 <hr/>
210 <div class="refsect2" lang="en"><h3><a name="xmlIsBlank"/>xmlIsBlank ()</h3><pre class="programlisting">int xmlIsBlank (unsigned int ch)<br/>
211 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsBlank_ch">xmlIsBlank_ch</a> or <a href="libxml2-chvalid.html#xmlIsBlankQ">xmlIsBlankQ</a> instead</p>
212 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
213 <hr/>
214 <div class="refsect2" lang="en"><h3><a name="xmlIsChar"/>xmlIsChar ()</h3><pre class="programlisting">int xmlIsChar (unsigned int ch)<br/>
215 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsChar_ch">xmlIsChar_ch</a> or <a href="libxml2-chvalid.html#xmlIsCharQ">xmlIsCharQ</a> instead</p>
216 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
217 <hr/>
218 <div class="refsect2" lang="en"><h3><a name="xmlIsCombining"/>xmlIsCombining ()</h3><pre class="programlisting">int xmlIsCombining (unsigned int ch)<br/>
219 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsCombiningQ">xmlIsCombiningQ</a> instead</p>
220 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
221 <hr/>
222 <div class="refsect2" lang="en"><h3><a name="xmlIsDigit"/>xmlIsDigit ()</h3><pre class="programlisting">int xmlIsDigit (unsigned int ch)<br/>
223 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsDigit_ch">xmlIsDigit_ch</a> or <a href="libxml2-chvalid.html#xmlIsDigitQ">xmlIsDigitQ</a> instead</p>
224 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
225 <hr/>
226 <div class="refsect2" lang="en"><h3><a name="xmlIsExtender"/>xmlIsExtender ()</h3><pre class="programlisting">int xmlIsExtender (unsigned int ch)<br/>
227 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsExtender_ch">xmlIsExtender_ch</a> or <a href="libxml2-chvalid.html#xmlIsExtenderQ">xmlIsExtenderQ</a> instead</p>
228 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
229 <hr/>
230 <div class="refsect2" lang="en"><h3><a name="xmlIsIdeographic"/>xmlIsIdeographic ()</h3><pre class="programlisting">int xmlIsIdeographic (unsigned int ch)<br/>
231 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsIdeographicQ">xmlIsIdeographicQ</a> instead</p>
232 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
233 <hr/>
234 <div class="refsect2" lang="en"><h3><a name="xmlIsPubidChar"/>xmlIsPubidChar ()</h3><pre class="programlisting">int xmlIsPubidChar (unsigned int ch)<br/>
235 </pre><p>This function is DEPRECATED. Use <a href="libxml2-chvalid.html#xmlIsPubidChar_ch">xmlIsPubidChar_ch</a> or <a href="libxml2-chvalid.html#xmlIsPubidCharQ">xmlIsPubidCharQ</a> instead</p>
236 <div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ch</tt></i>:</span></td><td>character to validate</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>true if argument valid, false otherwise</td></tr></tbody></table></div></div>
237 <hr/>
238 </div>
239 </div>
240 </body>
241 </html>