File: il__psp_8h-source.html

package info (click to toggle)
devil 1.7.8-10
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, buster, stretch
  • size: 9,796 kB
  • sloc: ansic: 45,835; sh: 15,558; cpp: 4,009; python: 1,300; pascal: 792; makefile: 307; cs: 192; fortran: 5
file content (271 lines) | stat: -rw-r--r-- 21,018 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>DevIL: /home/dwoods/DevIL/src-IL/include/il_psp.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
<h1>/home/dwoods/DevIL/src-IL/include/il_psp.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00002"></a>00002 <span class="comment">//</span>
<a name="l00003"></a>00003 <span class="comment">// ImageLib Sources</span>
<a name="l00004"></a>00004 <span class="comment">// Copyright (C) 2000-2002 by Denton Woods</span>
<a name="l00005"></a>00005 <span class="comment">// Last modified: 05/02/2002 &lt;--Y2K Compliant! =]</span>
<a name="l00006"></a>00006 <span class="comment">//</span>
<a name="l00007"></a>00007 <span class="comment">// Filename: src-IL/include/il_psp.h</span>
<a name="l00008"></a>00008 <span class="comment">//</span>
<a name="l00009"></a>00009 <span class="comment">// Description: Reads a Paint Shop Pro file.</span>
<a name="l00010"></a>00010 <span class="comment">//</span>
<a name="l00011"></a>00011 <span class="comment">//-----------------------------------------------------------------------------</span>
<a name="l00012"></a>00012 
<a name="l00013"></a>00013 
<a name="l00014"></a>00014 <span class="preprocessor">#ifndef PSP_H</span>
<a name="l00015"></a>00015 <span class="preprocessor"></span><span class="preprocessor">#define PSP_H</span>
<a name="l00016"></a>00016 <span class="preprocessor"></span>
<a name="l00017"></a>00017 <span class="preprocessor">#include "il_internal.h"</span>
<a name="l00018"></a>00018 
<a name="l00019"></a>00019 
<a name="l00020"></a>00020 <span class="comment">// Block identifiers</span>
<a name="l00021"></a>00021 <span class="keyword">enum</span> PSPBlockID {
<a name="l00022"></a>00022         PSP_IMAGE_BLOCK = 0,                    <span class="comment">// (0)  General Image Attributes Block (main)</span>
<a name="l00023"></a>00023         PSP_CREATOR_BLOCK,                              <span class="comment">// (1)  Creator Data Block (main)</span>
<a name="l00024"></a>00024         PSP_COLOR_BLOCK,                                <span class="comment">// (2)  Color Palette Block (main and sub)</span>
<a name="l00025"></a>00025         PSP_LAYER_START_BLOCK,                  <span class="comment">// (3)  Layer Bank Block (main)</span>
<a name="l00026"></a>00026         PSP_LAYER_BLOCK,                                <span class="comment">// (4)  Layer Block (sub)</span>
<a name="l00027"></a>00027         PSP_CHANNEL_BLOCK,                              <span class="comment">// (5)  Channel Block (sub)</span>
<a name="l00028"></a>00028         PSP_SELECTION_BLOCK,                    <span class="comment">// (6)  Selection Block (main)</span>
<a name="l00029"></a>00029         PSP_ALPHA_BANK_BLOCK,                   <span class="comment">// (7)  Alpha Bank Block (main)</span>
<a name="l00030"></a>00030         PSP_ALPHA_CHANNEL_BLOCK,                <span class="comment">// (8)  Alpha Channel Block (sub)</span>
<a name="l00031"></a>00031         PSP_COMPOSITE_IMAGE_BLOCK,              <span class="comment">// (9)  Composite Image Block (sub)</span>
<a name="l00032"></a>00032         PSP_EXTENDED_DATA_BLOCK,                <span class="comment">// (10) Extended Data Block (main)</span>
<a name="l00033"></a>00033         PSP_TUBE_BLOCK,                                 <span class="comment">// (11) Picture Tube Data Block (main)</span>
<a name="l00034"></a>00034         PSP_ADJUSTMENT_EXTENSION_BLOCK, <span class="comment">// (12) Adjustment Layer Block (sub)</span>
<a name="l00035"></a>00035         PSP_VECTOR_EXTENSION_BLOCK,             <span class="comment">// (13) Vector Layer Block (sub)</span>
<a name="l00036"></a>00036         PSP_SHAPE_BLOCK,                                <span class="comment">// (14) Vector Shape Block (sub)</span>
<a name="l00037"></a>00037         PSP_PAINTSTYLE_BLOCK,                   <span class="comment">// (15) Paint Style Block (sub)</span>
<a name="l00038"></a>00038         PSP_COMPOSITE_IMAGE_BANK_BLOCK, <span class="comment">// (16) Composite Image Bank (main)</span>
<a name="l00039"></a>00039         PSP_COMPOSITE_ATTRIBUTES_BLOCK, <span class="comment">// (17) Composite Image Attr. (sub)</span>
<a name="l00040"></a>00040         PSP_JPEG_BLOCK,                                 <span class="comment">// (18) JPEG Image Block (sub)</span>
<a name="l00041"></a>00041         PSP_LINESTYLE_BLOCK,                    <span class="comment">// (19) Line Style Block (sub)</span>
<a name="l00042"></a>00042         PSP_TABLE_BANK_BLOCK,                   <span class="comment">// (20) Table Bank Block (main)</span>
<a name="l00043"></a>00043         PSP_TABLE_BLOCK,                                <span class="comment">// (21) Table Block (sub)</span>
<a name="l00044"></a>00044         PSP_PAPER_BLOCK,                                <span class="comment">// (22) Vector Table Paper Block (sub)</span>
<a name="l00045"></a>00045         PSP_PATTERN_BLOCK,                              <span class="comment">// (23) Vector Table Pattern Block (sub)</span>
<a name="l00046"></a>00046 };
<a name="l00047"></a>00047 
<a name="l00048"></a>00048 
<a name="l00049"></a>00049 <span class="comment">// Bitmap type</span>
<a name="l00050"></a>00050 <span class="keyword">enum</span> PSPDIBType {
<a name="l00051"></a>00051         PSP_DIB_IMAGE = 0,      <span class="comment">// Layer color bitmap</span>
<a name="l00052"></a>00052         PSP_DIB_TRANS_MASK,     <span class="comment">// Layer transparency mask bitmap</span>
<a name="l00053"></a>00053         PSP_DIB_USER_MASK,      <span class="comment">// Layer user mask bitmap</span>
<a name="l00054"></a>00054         PSP_DIB_SELECTION,      <span class="comment">// Selection mask bitmap</span>
<a name="l00055"></a>00055         PSP_DIB_ALPHA_MASK,     <span class="comment">// Alpha channel mask bitmap</span>
<a name="l00056"></a>00056         PSP_DIB_THUMBNAIL       <span class="comment">// Thumbnail bitmap</span>
<a name="l00057"></a>00057 };
<a name="l00058"></a>00058 
<a name="l00059"></a>00059 <span class="comment">// Channel types</span>
<a name="l00060"></a>00060 <span class="keyword">enum</span> PSPChannelType {
<a name="l00061"></a>00061         PSP_CHANNEL_COMPOSITE = 0,      <span class="comment">// Channel of single channel bitmap</span>
<a name="l00062"></a>00062         PSP_CHANNEL_RED,                        <span class="comment">// Red channel of 24 bit bitmap</span>
<a name="l00063"></a>00063         PSP_CHANNEL_GREEN,                      <span class="comment">// Green channel of 24 bit bitmap</span>
<a name="l00064"></a>00064         PSP_CHANNEL_BLUE                        <span class="comment">// Blue channel of 24 bit bitmap</span>
<a name="l00065"></a>00065 };
<a name="l00066"></a>00066 
<a name="l00067"></a>00067 <span class="comment">// Possible metrics used to measure resolution</span>
<a name="l00068"></a>00068 <span class="keyword">enum</span> PSP_METRIC { 
<a name="l00069"></a>00069         PSP_METRIC_UNDEFINED = 0,       <span class="comment">// Metric unknown</span>
<a name="l00070"></a>00070         PSP_METRIC_INCH,                        <span class="comment">// Resolution is in inches</span>
<a name="l00071"></a>00071         PSP_METRIC_CM                           <span class="comment">// Resolution is in centimeters</span>
<a name="l00072"></a>00072 };
<a name="l00073"></a>00073 
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="comment">// Possible types of compression.</span>
<a name="l00076"></a>00076 <span class="keyword">enum</span> PSPCompression {
<a name="l00077"></a>00077         PSP_COMP_NONE = 0,      <span class="comment">// No compression</span>
<a name="l00078"></a>00078         PSP_COMP_RLE,           <span class="comment">// RLE compression</span>
<a name="l00079"></a>00079         PSP_COMP_LZ77,          <span class="comment">// LZ77 compression</span>
<a name="l00080"></a>00080         PSP_COMP_JPEG           <span class="comment">// JPEG compression (only used by thumbnail and composite image)</span>
<a name="l00081"></a>00081 };
<a name="l00082"></a>00082 
<a name="l00083"></a>00083 
<a name="l00084"></a>00084 <span class="comment">// Picture tube placement mode.</span>
<a name="l00085"></a>00085 <span class="keyword">enum</span> TubePlacementMode {
<a name="l00086"></a>00086         tpmRandom,              <span class="comment">// Place tube images in random intervals</span>
<a name="l00087"></a>00087         tpmConstant             <span class="comment">// Place tube images in constant intervals</span>
<a name="l00088"></a>00088 };
<a name="l00089"></a>00089 
<a name="l00090"></a>00090 <span class="comment">// Picture tube selection mode.</span>
<a name="l00091"></a>00091 <span class="keyword">enum</span> TubeSelectionMode {
<a name="l00092"></a>00092         tsmRandom,              <span class="comment">// Randomly select the next image in tube to display</span>
<a name="l00093"></a>00093         tsmIncremental, <span class="comment">// Select each tube image in turn</span>
<a name="l00094"></a>00094         tsmAngular,             <span class="comment">// Select image based on cursor direction</span>
<a name="l00095"></a>00095         tsmPressure,    <span class="comment">// Select image based on pressure (from pressure-sensitive pad)</span>
<a name="l00096"></a>00096         tsmVelocity             <span class="comment">// Select image based on cursor speed</span>
<a name="l00097"></a>00097 };
<a name="l00098"></a>00098 
<a name="l00099"></a>00099 <span class="comment">// Extended data field types.</span>
<a name="l00100"></a>00100 <span class="keyword">enum</span> PSPExtendedDataID {
<a name="l00101"></a>00101         PSP_XDATA_TRNS_INDEX = 0        <span class="comment">// Transparency index field</span>
<a name="l00102"></a>00102 };
<a name="l00103"></a>00103 
<a name="l00104"></a>00104 <span class="comment">// Creator field types.</span>
<a name="l00105"></a>00105 <span class="keyword">enum</span> PSPCreatorFieldID {
<a name="l00106"></a>00106         PSP_CRTR_FLD_TITLE = 0,         <span class="comment">// Image document title field</span>
<a name="l00107"></a>00107         PSP_CRTR_FLD_CRT_DATE,          <span class="comment">// Creation date field</span>
<a name="l00108"></a>00108         PSP_CRTR_FLD_MOD_DATE,          <span class="comment">// Modification date field</span>
<a name="l00109"></a>00109         PSP_CRTR_FLD_ARTIST,            <span class="comment">// Artist name field</span>
<a name="l00110"></a>00110         PSP_CRTR_FLD_CPYRGHT,           <span class="comment">// Copyright holder name field</span>
<a name="l00111"></a>00111         PSP_CRTR_FLD_DESC,                      <span class="comment">// Image document description field</span>
<a name="l00112"></a>00112         PSP_CRTR_FLD_APP_ID,            <span class="comment">// Creating app id field</span>
<a name="l00113"></a>00113         PSP_CRTR_FLD_APP_VER,           <span class="comment">// Creating app version field</span>
<a name="l00114"></a>00114 };
<a name="l00115"></a>00115 
<a name="l00116"></a>00116 <span class="comment">// Creator application identifiers.</span>
<a name="l00117"></a>00117 <span class="keyword">enum</span> PSPCreatorAppID {
<a name="l00118"></a>00118         PSP_CREATOR_APP_UNKNOWN = 0,    <span class="comment">// Creator application unknown</span>
<a name="l00119"></a>00119         PSP_CREATOR_APP_PAINT_SHOP_PRO  <span class="comment">// Creator is Paint Shop Pro</span>
<a name="l00120"></a>00120 };
<a name="l00121"></a>00121 
<a name="l00122"></a>00122 <span class="comment">// Layer types.</span>
<a name="l00123"></a>00123 <span class="keyword">enum</span> PSPLayerType {
<a name="l00124"></a>00124         PSP_LAYER_NORMAL = 0,                   <span class="comment">// Normal layer</span>
<a name="l00125"></a>00125         PSP_LAYER_FLOATING_SELECTION    <span class="comment">// Floating selection layer</span>
<a name="l00126"></a>00126 };
<a name="l00127"></a>00127 
<a name="l00128"></a>00128 <span class="comment">// Truth values.</span>
<a name="l00129"></a>00129 <span class="comment">/*enum PSP_BOOLEAN {</span>
<a name="l00130"></a>00130 <span class="comment">        FALSE = 0,</span>
<a name="l00131"></a>00131 <span class="comment">        TRUE</span>
<a name="l00132"></a>00132 <span class="comment">};*/</span>
<a name="l00133"></a>00133 
<a name="l00134"></a>00134 
<a name="l00135"></a>00135 
<a name="l00136"></a>00136 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l00137"></a>00137 <span class="preprocessor"></span><span class="preprocessor">#pragma pack(push, packed_struct, 1)</span>
<a name="l00138"></a>00138 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00139"></a>00139 <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keyword">struct </span>PSPRECT
<a name="l00140"></a>00140 {
<a name="l00141"></a>00141         ILuint x1,y1,x2,y2;
<a name="l00142"></a>00142 } IL_PACKSTRUCT PSPRECT;
<a name="l00143"></a>00143 
<a name="l00144"></a>00144 <span class="keyword">typedef</span> <span class="keyword">struct </span>PSPHEAD
<a name="l00145"></a>00145 {
<a name="l00146"></a>00146         <span class="keywordtype">char</span>            FileSig[32];
<a name="l00147"></a>00147         ILushort        MajorVersion;
<a name="l00148"></a>00148         ILushort        MinorVersion;
<a name="l00149"></a>00149 } IL_PACKSTRUCT PSPHEAD;
<a name="l00150"></a>00150 
<a name="l00151"></a>00151 <span class="keyword">typedef</span> <span class="keyword">struct </span>BLOCKHEAD
<a name="l00152"></a>00152 {
<a name="l00153"></a>00153         ILubyte         HeadID[4];
<a name="l00154"></a>00154         ILushort        BlockID;
<a name="l00155"></a>00155         ILuint          BlockLen;
<a name="l00156"></a>00156 } IL_PACKSTRUCT BLOCKHEAD;
<a name="l00157"></a>00157 
<a name="l00158"></a>00158 <span class="keyword">typedef</span> <span class="keyword">struct </span>GENATT_CHUNK
<a name="l00159"></a>00159 {
<a name="l00160"></a>00160         ILint           Width;
<a name="l00161"></a>00161         ILint           Height;
<a name="l00162"></a>00162         ILdouble        Resolution;
<a name="l00163"></a>00163         ILubyte         ResMetric;
<a name="l00164"></a>00164         ILushort        Compression;
<a name="l00165"></a>00165         ILushort        BitDepth;
<a name="l00166"></a>00166         ILushort        PlaneCount;
<a name="l00167"></a>00167         ILuint          ColourCount;
<a name="l00168"></a>00168         ILubyte         GreyscaleFlag;
<a name="l00169"></a>00169         ILuint          SizeOfImage;
<a name="l00170"></a>00170         ILint           ActiveLayer;
<a name="l00171"></a>00171         ILushort        LayerCount;
<a name="l00172"></a>00172         ILuint          GraphicContents;
<a name="l00173"></a>00173 } IL_PACKSTRUCT GENATT_CHUNK;
<a name="l00174"></a>00174 
<a name="l00175"></a>00175 <span class="keyword">typedef</span> <span class="keyword">struct </span>LAYERINFO_CHUNK
<a name="l00176"></a>00176 {
<a name="l00177"></a>00177         ILubyte         LayerType;
<a name="l00178"></a>00178         PSPRECT         ImageRect;
<a name="l00179"></a>00179         PSPRECT         SavedImageRect;
<a name="l00180"></a>00180         ILubyte         Opacity;
<a name="l00181"></a>00181         ILubyte         BlendingMode;
<a name="l00182"></a>00182         ILubyte         LayerFlags;
<a name="l00183"></a>00183         ILubyte         TransProtFlag;
<a name="l00184"></a>00184         ILubyte         LinkID;
<a name="l00185"></a>00185         PSPRECT         MaskRect;
<a name="l00186"></a>00186         PSPRECT         SavedMaskRect;
<a name="l00187"></a>00187         ILubyte         MaskLinked;
<a name="l00188"></a>00188         ILubyte         MaskDisabled;
<a name="l00189"></a>00189         ILubyte         InvertMaskBlend;
<a name="l00190"></a>00190         ILushort        BlendRange;
<a name="l00191"></a>00191         ILubyte         SourceBlend1[4];
<a name="l00192"></a>00192         ILubyte         DestBlend1[4];
<a name="l00193"></a>00193         ILubyte         SourceBlend2[4];
<a name="l00194"></a>00194         ILubyte         DestBlend2[4];
<a name="l00195"></a>00195         ILubyte         SourceBlend3[4];
<a name="l00196"></a>00196         ILubyte         DestBlend3[4];
<a name="l00197"></a>00197         ILubyte         SourceBlend4[4];
<a name="l00198"></a>00198         ILubyte         DestBlend4[4];
<a name="l00199"></a>00199         ILubyte         SourceBlend5[4];
<a name="l00200"></a>00200         ILubyte         DestBlend5[4];
<a name="l00201"></a>00201 } IL_PACKSTRUCT LAYERINFO_CHUNK;
<a name="l00202"></a>00202 
<a name="l00203"></a>00203 <span class="keyword">typedef</span> <span class="keyword">struct </span>LAYERBITMAP_CHUNK
<a name="l00204"></a>00204 {
<a name="l00205"></a>00205         ILushort        NumBitmaps;
<a name="l00206"></a>00206         ILushort        NumChannels;
<a name="l00207"></a>00207 } IL_PACKSTRUCT LAYERBITMAP_CHUNK;
<a name="l00208"></a>00208 
<a name="l00209"></a>00209 <span class="keyword">typedef</span> <span class="keyword">struct </span>CHANNEL_CHUNK
<a name="l00210"></a>00210 {
<a name="l00211"></a>00211         ILuint          CompLen;
<a name="l00212"></a>00212         ILuint          Length;
<a name="l00213"></a>00213         ILushort        BitmapType;
<a name="l00214"></a>00214         ILushort        ChanType;
<a name="l00215"></a>00215 } IL_PACKSTRUCT CHANNEL_CHUNK;
<a name="l00216"></a>00216 
<a name="l00217"></a>00217 <span class="keyword">typedef</span> <span class="keyword">struct </span>ALPHAINFO_CHUNK
<a name="l00218"></a>00218 {
<a name="l00219"></a>00219         PSPRECT         AlphaRect;
<a name="l00220"></a>00220         PSPRECT         AlphaSavedRect;
<a name="l00221"></a>00221 } IL_PACKSTRUCT ALPHAINFO_CHUNK;
<a name="l00222"></a>00222 
<a name="l00223"></a>00223 <span class="keyword">typedef</span> <span class="keyword">struct </span>ALPHA_CHUNK
<a name="l00224"></a>00224 {
<a name="l00225"></a>00225         ILushort        BitmapCount;
<a name="l00226"></a>00226         ILushort        ChannelCount;
<a name="l00227"></a>00227 } IL_PACKSTRUCT ALPHA_CHUNK;
<a name="l00228"></a>00228 
<a name="l00229"></a>00229 <span class="preprocessor">#ifdef _MSC_VER</span>
<a name="l00230"></a>00230 <span class="preprocessor"></span><span class="preprocessor">#pragma pack(pop,  packed_struct)</span>
<a name="l00231"></a>00231 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00232"></a>00232 <span class="preprocessor"></span>
<a name="l00233"></a>00233 
<a name="l00234"></a>00234 <span class="comment">// Function definitions</span>
<a name="l00235"></a>00235 ILboolean       iLoadPspInternal(<span class="keywordtype">void</span>);
<a name="l00236"></a>00236 ILboolean       iCheckPsp(<span class="keywordtype">void</span>);
<a name="l00237"></a>00237 ILboolean       iIsValidPsp(<span class="keywordtype">void</span>);
<a name="l00238"></a>00238 ILboolean       ReadGenAttributes(<span class="keywordtype">void</span>);
<a name="l00239"></a>00239 ILboolean       ParseChunks(<span class="keywordtype">void</span>);
<a name="l00240"></a>00240 ILboolean       ReadLayerBlock(ILuint BlockLen);
<a name="l00241"></a>00241 ILboolean       ReadAlphaBlock(ILuint BlockLen);
<a name="l00242"></a>00242 ILubyte         *GetChannel(<span class="keywordtype">void</span>);
<a name="l00243"></a>00243 ILboolean       UncompRLE(ILubyte *CompData, ILubyte *Data, ILuint CompLen);
<a name="l00244"></a>00244 ILboolean       ReadPalette(ILuint BlockLen);
<a name="l00245"></a>00245 ILboolean       AssembleImage(<span class="keywordtype">void</span>);
<a name="l00246"></a>00246 ILboolean       Cleanup(<span class="keywordtype">void</span>);
<a name="l00247"></a>00247 
<a name="l00248"></a>00248 
<a name="l00249"></a>00249 
<a name="l00250"></a>00250 <span class="preprocessor">#endif//PSP_H</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Sun Mar 8 20:01:41 2009 for DevIL by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>