buildSDK/doc_templates/class.html
[roojs1] / buildSDK / doc_templates / class.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
3
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
6         <head>
7                 <meta http-equiv="content-type" content="text/html; charset={+Options.encoding+}" />
8                 <meta name="generator" content="JsDoc Toolkit" />
9                 {! Link.base = "../"; /* all generated links will be relative to this */ !}
10                 
11                 <title>JsDoc Reference - {+data.alias+}</title>
12                 
13                 
14         <link rel="stylesheet" type="text/css" href="../../css/roojs.css" />            
15         <link rel="stylesheet" type="text/css" href="../default.css" />
16         
17         
18         <script type="text/javascript" src="../page.js">
19         
20         </script>
21          
22                 
23         </head>
24
25         <body onload="RooDocsPage.onload();">
26          
27         
28 <div class="body-wrap">
29
30     <!-- ============================== links to methods. ================================= --> 
31
32     <div class="top-tools">
33     <!--
34         <a class="inner-link" href="#{+data.alias+}-props"><img src="resources/s.gif" class="item-icon icon-prop">Properties</a>
35         <a class="inner-link" href="#{+data.alias+}-methods"><img src="resources/s.gif" class="item-icon icon-method">Methods</a>
36         <a class="inner-link" href="#{+data.alias+}-events"><img src="resources/s.gif" class="item-icon icon-event">Events</a>
37         <a class="inner-link" href="#{+data.alias+}-configs"><img src="resources/s.gif" class="item-icon icon-config">Config Options</a>
38         <a class="bookmark" href="NEED_TO_CREATE_DIRECT_LINK_HREF"><img src="resources/s.gif" class="item-icon icon-fav">Direct Link</a>
39         -->
40     </div>
41
42     
43 <!-- ============================== inheritance Block. ================================= -->    
44         <if test="data.augments.length">
45                 <div class="inheritance res-block">
46                    <pre class="res-block-inner">{!
47                                 var iblock_indent = 0;
48                                  data.augments.reverse().map(
49                                         function($) {  
50                                                 output += iblock_indent ? ('<img src="../../images/default/s.gif" height="1" width="' + 
51                                                         iblock_indent + '"/><img src="../../images/default/tree/elbow-end.gif" class="elbow"/>') : '';
52                                                 output += new Link().toSymbol($) + "\n"; 
53                                                 iblock_indent += 20;
54                                         }
55                                 )
56                         !}<img src="../../images/default/s.gif" height="1"  width="{+ iblock_indent +}"/><img class="elbow" src="../../images/default/tree/elbow-end.gif"/>{+data.alias+} 
57
58                    </pre>
59                 </div>
60        </if>
61 <!-- ============================== class title / details ============================ -->
62     
63     {! 
64                         var fullpath = data.alias.split('.');
65                         var cls = fullpath.pop();
66                         var packge = fullpath.join(".");
67                          
68                         
69                         
70         !}
71     <h1 class="classTitle">
72                                 {!
73                                         var classType = "";
74                                         
75                                         if (data.isBuiltin()) {
76                                                 classType += "Built-In ";
77                                         }
78                                         
79                                         if (data.isNamespace) {
80                                                 if (data.is('FUNCTION')) {
81                                                         classType += "Function ";
82                                                 }
83                                                 classType += "Namespace ";
84                                         }
85                                         else {
86                                                 classType += "Class ";
87                                         }
88                                 !}
89                                 {+classType+}{+data.alias+}
90                         </h1>
91                         
92     <table cellspacing="0" class="class-summary-table">
93         <if test="packge.length">
94                 <tr><td class="label">Package:</td><td class="hd-info">{+packge+}</td></tr>
95         </if>
96         <tr><td class="label">Defined In:</td><td class="hd-info">
97                         <if test="data.srcFile.length">{# isn't defined in any file #}
98                                         {+new Link({ 
99                         url : './src/' + Link.srcFileFlatName(data.srcFile),
100                         text : Link.srcFileRelName(data.srcFile)
101                     })+}.
102                         </if>
103         </td></tr>
104         <tr><td class="label">Class:</td><td class="hd-info">{+cls+}</td></tr>
105         
106         <if test="data.childClasses.length">
107         <tr><td class="label">Subclasses:</td><td class="hd-info">
108                 {+
109                         data.childClasses
110                         .sort()
111                         .map(
112                                 function($) { return new Link().toSymbol($); }
113                         )
114                         .join(", ")
115                 +}
116
117         
118         
119         </td></tr>
120         </if>
121         <if test="data.augments.length">
122         
123                 <tr><td class="label">Extends:</td><td class="hd-info">
124                         {+
125                                 new Link().toSymbol(data.augments[data.augments.length -1])
126                                 
127                         +}
128         
129                 </td></tr>    
130         </if>
131         
132     </table>
133
134     
135 <!-- ============================== class summary ========================== -->                        
136     <div class="description">
137         {+resolveLinks(data.desc)+}
138     </div>
139
140         
141 <!-- ============================== Class comment block... ========================== -->                                       
142
143 <div class="comments">
144         <b>Class Comments / Notes</B> =>  
145         <u onclick="parent.CommentDialog.showCommentId = '{+data.alias+}';">[Add Your comment/notes about this class]</u>
146         <br/>
147         <iframe frameborder="0"  id="comments-{+data.memberOf+}" style="border: none;width:100%;" 
148                 src="/blog.php/GtkDjsComments/{+data.alias+}.html"></iframe>
149 </div>
150         
151
152                 
153 <!-- ============================== config options ========================== -->                                               
154                  
155     
156     {!
157         
158          
159          
160         var cfgProperties = [];
161         if (!data.comment.getTag('singleton').length) {
162                 cfgProperties = data.configToArray();
163                 cfgProperties = cfgProperties.sort(makeSortby("name"));
164                 
165         }
166         
167                 
168                 
169         !}
170                 
171     <div class="hr"></div>
172     <a id="{+data.alias+}-configs"></a>
173                 
174     <if test="!cfgProperties.length">
175     
176      <table cellspacing="0" class="member-table">
177       <caption class="Empty">Config Options - Has None</caption>
178      </table>
179     
180     </if>
181      
182     <if test="cfgProperties.length">
183         
184       <table cellspacing="0" class="member-table">   
185       <caption>Config Options (Usually are also Properties)</caption>
186     
187         
188         <tr>
189             <th class="sig-header" colspan="2">Options</th>
190             
191             <th class="msource-header">Defined By</th>
192         </tr>
193         
194         
195         
196         <for each="dtag" in="cfgProperties">
197         
198                 <tr class="config-row expandable config-row-alt{+$dtag_i % 2+}{+ ((dtag.memberOf == data.alias) ?   " notInherited" : "") +}">
199                    <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
200                     <td class="sig">
201
202                         <a id="{+dtag.memberOf+}-cfg-{+dtag.name+}" name=".{+dtag.name+}"></a>
203                         <div class="fixedFont">
204                                 <b  class="itemname">{+dtag.name+}</b> : {+((dtag.type) ? (new Link().toSymbol(dtag.type)) : "" )+}
205                                 
206                                 
207                         </div>
208                   
209                         <div class="mdesc">
210                             <div class="short">{+resolveLinks(summarize(dtag.desc))+}</div> 
211                         </div>
212                         
213                         <div class="mdesc">
214                             <div class="long">{+resolveLinks(dtag.desc)+}</div> 
215                         </div>
216                         
217                         
218
219                     </td>
220                     <td class="msource">
221                         {# - fixme - add inheritied as link here #}
222                         {+ (dtag.memberOf == data.alias) ? dtag.memberOf :  new Link().toSymbol(dtag.memberOf) +}
223                                 
224                     </td>
225                 </tr>
226         </for>
227         
228     </table>
229   </if>         
230   
231   
232   
233   
234   
235   
236   
237   
238   <!-- ============================== public properties ==================== -->        
239   
240   
241   
242     <a id="{+data.alias+}-props"></a>      
243     
244     {! 
245                 var ownProperties = [];
246                 var psorted = data.properties.sort(makeSortby("name"));
247                 psorted.filter(
248                         
249                         function($){
250                                 if (/$.hide/.test($.desc)) {
251                                         return false;
252                                 }
253                                 if ( !$.isNamespace || (($.memberOf != data.alias) && $.isStatic)) {
254                                         if ($.isStatic)  ownProperties.push($);
255                                 }
256                                 return true;
257                 
258                         }
259                 );
260      
261     !}
262
263     <if test="!ownProperties.length">
264     
265      <table cellspacing="0" class="member-table">
266       <caption class="Empty">Public Properties - Has None</caption>
267      </table>
268     
269     </if>
270      
271     <if test="ownProperties.length">
272         
273       <table cellspacing="0" class="member-table">   
274       <caption>Public Properties </caption>
275         <tr>
276             <th class="sig-header" colspan="2">Property</th>
277             <th class="sig-header">Description</th>
278             <th class="msource-header">Defined By</th>
279         </tr>
280         
281       
282                     
283           
284         <for each="member" in="ownProperties">   
285          
286         
287         
288           <tr class="property-row config-row-alt{+$member_i % 2+}{!
289
290                 if (member.memberOf == data.alias) {
291                         output += " notInherited";
292                  }
293                   
294                  !}">
295             <td class="micon">
296                 <a class="exi" href="#expand">&nbsp;</a>
297             </td>
298             <td class="sig">
299                <a id="{+member.memberOf+}-prop-{+member.name+}" name=".{+member.name+}"></a>
300                <div class="fixedFont">
301                     <span class="attributes">{!
302                         if (member.isPrivate) output += "&lt;private&gt; ";
303                         if (member.isInner) output += "&lt;inner&gt; ";
304                         
305                         if (member.isConstant) output += "&lt;constant&gt; ";
306                         if (member.isStatic) output += ""+data.alias +".";
307                      !}</span><b  class="itemname">{+member.name+}</b> :
308                      <span type="etype">{+((member.type) ? (new Link().toSymbol(member.type)) : "" )+}</span>
309                      </div>
310             </td>
311             <td class="sig">
312                 <div class="mdesc">
313
314
315                    <div class="short">
316                         {+resolveLinks(summarize(member.desc))+}
317                    
318                    
319                    
320                    </div> 
321                     
322                     <div class="long">
323                     
324                         {+resolveLinks(member.desc)+}                        
325                  
326                 </div>
327                 </div>
328             </td>
329             
330             <td class="msource">  
331             {+ (member.memberOf == data.alias) ? member.memberOf :  new Link().toSymbol(member.memberOf) +}
332             </td>             
333                 
334           </tr>
335         </for>
336         
337          
338         
339       
340         <!-- TODO: implement this alt row.  also notice non-linked "Defined by" when property is a part of this class.     
341         <tr class="property-row alt">
342              
343         -->
344
345     </table>
346   
347     </if>
348   <!-- ============================== methods summary / details ======================== -->
349   
350   
351   <a id="{+data.alias+}-methods"></a>
352         <!-- constructor?? -->
353         {! 
354                 var ownMethods = [];
355         
356                 if (data.comment.getTag('class').length && 
357                         !data.isBuiltin() && 
358                         !data.comment.getTag('singleton').length &&
359                         !data.comment.getTag('static').length
360                         ) {
361                         data.isInherited = false;
362                         ownMethods.push(data);
363                 }
364                 
365                 var msorted = data.methods.sort(makeSortby("name"));
366         !}
367         <!-- static's first 
368         
369         
370         -->
371         {!
372                 msorted.filter(
373                                 function($){
374                                         
375                                         if (/@hide/.test($.desc)) {
376                                                 return false;
377                                         }
378                                         
379                                         if (!$.isEvent && (data.comment.getTag("instanceOf").length || data.comment.getTag("singleton").length)) {
380                                                 if ($.isStatic && (data.comment.getTag("instanceOf").length || data.comment.getTag("singleton").length) &&
381                                                         ($.memberOf != data.alias)) {
382                                                                 return true;
383                                                         }
384                                                 $.isInherited = ($.memberOf != data.alias);
385                                                 ownMethods.push($);
386                                                 return true;
387                                         }
388                                         
389                                         
390                                         if ($.isNamespace || $.isEvent || (($.memberOf != data.alias) && $.isStatic)){
391                                                 return true;
392                                         }
393                                         if ($.isStatic) {
394                                                 $.isInherited = ($.memberOf != data.alias);
395                                                 ownMethods.push($);
396                                         }
397                                         
398                                         return true;
399                                 }
400                         );
401         !}
402         <!-- then dynamics first -->
403         {!      
404                 msorted.filter(
405                                 function($){
406                                         if (/@hide/.test($.desc)) {
407                                                 return false;
408                                         }
409                                         if (data.comment.getTag("instanceOf").length  || data.comment.getTag("singleton").length) {
410                                                 return true;
411                                         }
412                                         if ($.isNamespace || $.isEvent || (($.memberOf != data.alias) && $.isStatic)){
413                                                 
414                                                 return true;
415                                         }
416                                         if (!$.isStatic) {
417                                                 $.isInherited = ($.memberOf != data.alias);
418                                                 ownMethods.push($);
419                                         }
420                                         
421                                         return true;
422                                 }
423                         );
424                  
425         !}
426   
427   
428     <if test="!ownMethods.length">
429     
430      <table cellspacing="0" class="member-table">
431       <caption class="Empty">Public Methods - Has None</caption>
432      </table>
433     
434     </if>
435     <if test="ownMethods.length">
436     
437       <table cellspacing="0" class="member-table">
438       <caption>Public Methods</caption>
439         <tr>
440             <th class="sig-header" colspan="2">Method</th>            
441             <th class="msource-header">Defined By</th>
442
443         </tr>
444         
445         
446         
447          
448         
449         <for each="member" in="ownMethods">
450           
451           <tr class="method-row config-row-alt{+$member_i % 2+}{!
452                   if (member.is("CONSTRUCTOR") && !member.params.length) {
453                           output += '';
454                  } else {
455                           output += ' expandable';
456                         }
457                   
458                   
459                 if (!member.isInherited) {
460                         output += " notInherited";
461                  }
462                   
463                  !}">
464             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
465            
466            
467             <td class="sig">
468                 <a id="{+member.memberOf+}-method-{+member.name+}"   name=".{+member.name+}"></a>
469                 <div class="fixedFont">
470                         <span class="attributes">{!
471                                         if (member.is('CONSTRUCTOR')) {
472                                                 output += "new <B>" + member.memberOf + (member.memberOf.length ? "." : "") +"</B>";
473                                         } else {
474                                                 
475                                                 
476                                                 if (member.isPrivate) output += "&lt;private&gt; ";
477                                                 if (member.isInner) output += "&lt;inner&gt; ";
478                                                 if (member.isStatic || data.comment.getTag("singleton").length || data.comment.getTag("instanceOf").length) {
479                                                         output +=  data.alias + ".";    
480                                                 }
481                                         }
482                                 !}</span><b class="itemname">{+member.name+}</b>
483                                 
484                                  {+makeSignature(member.params)+} 
485                         
486                                 <if test="member.returns.length">
487                                          : 
488                                         <for each="item" in="member.returns">
489                                                 <if test="$item_i > 0"> or </if>
490                                                 {+((item.type) ? (new Link().toSymbol(item.type)) : "" )+}
491                                         
492                                         </for>
493                                         
494                                 </if>
495                         
496                 </div>
497                 <div class="mdesc">
498                 <if test="!member.is('CONSTRUCTOR')">
499                    <div class="short">{+resolveLinks(summarize(member.desc))+}</div> 
500                  </if>
501                  <if test="member.is('CONSTRUCTOR')">
502                         <div class="short">Create a new {+data.alias +}</div> 
503                  </if>
504                  
505                     <div class="long">
506                         <if test="!member.is('CONSTRUCTOR')">
507                                 {+resolveLinks(member.desc)+}
508                     
509                                 <if test="member.example">
510                                         <pre class="code">{+member.example+}</pre>
511                                 </if>
512                         </if>
513                         
514                         <if test="member.is('CONSTRUCTOR')">
515                                 Create a new {+data.alias +}
516                         </if>
517                         <if test="member.params.length">
518                                 <dl class="detailList">
519                                 <dt class="heading">Parameters:</dt>
520                                 <for each="item" in="member.params">
521                                         <dt>
522                                                 {+((item.type)?"<span class=\"fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+} <b>{+item.name+}</b>
523                                                 <if test="item.isOptional"><i>Optional
524                                                         <if test="item.defaultValue">, 
525                                                         Default: {+item.defaultValue+}
526                                                 </if></i></if>
527                                         </dt>
528                                         <dd>{+resolveLinks(item.desc)+}</dd>
529                                 </for>
530                                 </dl>
531                         </if>
532                         <if test="member.deprecated">
533                                 <dl class="detailList">
534                                 <dt class="heading">Deprecated:</dt>
535                                 <dt>
536                                         {+member.deprecated+}
537                                 </dt>
538                                 </dl>
539                         </if>
540                         <if test="member.since.length">
541                                 <dl class="detailList">
542                                 <dt class="heading">Since:</dt>
543                                         <dd>{+ member.since +}</dd>
544                                 </dl>
545                                 </dl>
546                         </if>
547                         <if test="member.exceptions.length">
548                                 <dl class="detailList">
549                                 <dt class="heading">Throws:</dt>
550                                 <for each="item" in="member.exceptions">
551                                         <dt>
552                                                 {+((item.type)?"<span class=\"fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
553                                         </dt>
554                                         <dd>{+resolveLinks(item.desc)+}</dd>
555                                 </for>
556                                 </dl>
557                         </if>
558                         <if test="member.returns.length">
559                                 <dl class="detailList">
560                                 <dt class="heading">Returns:</dt>
561                                 <for each="item" in="member.returns">
562                                         <dd>{+((item.type)?"<span class=\"fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+} {+resolveLinks(item.desc)+}</dd>
563                                 </for>
564                                 </dl>
565                         </if>
566                         <if test="member.requires.length">
567                                 <dl class="detailList">
568                                 <dt class="heading">Requires:</dt>
569                                 <for each="item" in="member.requires">
570                                         <dd>{+ resolveLinks(item) +}</dd>
571                                 </for>
572                                 </dl>
573                         </if>
574                         <if test="member.see.length">
575                                 <dl class="detailList">
576                                 <dt class="heading">See:</dt>
577                                 <for each="item" in="member.see">
578                                         <dd>{+ new Link().toSymbol(item) +}</dd>
579                                 </for>
580                                 </dl>
581                         </if>
582
583                     
584                     
585                      
586                     </div>                    
587                 </div>
588
589             </td>
590             <td class="msource">
591                 <if test="!member.is('CONSTRUCTOR')">
592                         {+ (member.memberOf == data.alias) ? member.memberOf :  new Link().toSymbol(member.memberOf) +}
593                 </if>&nbsp;
594             </td>
595         </tr>
596         </for>
597                                                        
598     </table>
599 </if>
600   
601   <!-- ============================== events summary / details ======================== -->
602   
603   
604   <a id="{+data.alias+}-events"></a>
605     
606   
607         {! 
608                 
609                 
610                 var ownEvents = data.methods.filter(
611                                 function($){
612                                         
613                                         return $.isEvent && !$.comment.getTag('hide').length;
614                                                 
615                                 }
616                         ).sort(makeSortby("name"));
617                  
618         !}
619    <if test="!ownEvents.length">
620     
621      <table cellspacing="0" class="member-table">
622       <caption class="Empty">Events - Has None</caption>
623      </table>
624     
625     </if>
626   
627     
628     <if test="ownEvents.length">
629     
630       <table cellspacing="0" class="member-table">
631                 <caption>Events</caption>
632               <thead>
633                 <tr>
634                     <th class="sig-header" colspan="2">Event</th>            
635                     <th class="msource-header">Defined By</th>
636
637                 </tr>
638               </thead>  
639         
640         
641          
642         
643         <for each="member" in="ownEvents">
644           <tr class="method-row expandable config-row-alt{+$member_i % 2+}{!
645
646                 if (member.memberOf == data.alias) {
647                         output += " notInherited";
648                  }
649                   
650                  !}">
651             <td class="micon"><a class="exi" href="#expand">&nbsp;</a></td>
652             
653             <td class="sig">
654                 <a id="{+member.memberOf+}-event-{+member.name+}"></a>
655                 
656                <div class="fixedFont">
657                 <b class="itemname">{+member.name.substring(1)+}</b> {+makeSignature(member.params)+} 
658                 
659                 </div>
660
661                 <div class="mdesc">
662
663                    <div class="short">{+resolveLinks(summarize(member.desc))+}
664                    
665                 </div> 
666                     
667                     <div class="long">
668                     
669                         {+resolveLinks(member.desc)+}
670                     
671                         <if test="member.example">
672                                 <pre class="code">{+member.example+}</pre>
673                         </if>
674                         
675                 
676                         <if test="member.params.length">
677                                 <dl class="detailList">
678                                 <dt class="heading">Parameters:</dt>
679                                 <for each="item" in="member.params">
680                                         <dt>
681                                                 {+((item.type)?"<span class=\"fixedFont\">"+(new Link().toSymbol(item.type))+"</span> " : "")+}<b>{+item.name+}</b>
682                                                 <if test="item.isOptional"><i>Optional
683                                                         <if test="item.defaultValue">, 
684                                                         Default: {+item.defaultValue+}
685                                                 </if></i></if>
686                                         </dt>
687                                         <dd>{+resolveLinks(item.desc)+}</dd>
688                                 </for>
689                                 </dl>
690                         </if>
691                         <if test="member.deprecated">
692                                 <dl class="detailList">
693                                 <dt class="heading">Deprecated:</dt>
694                                 <dt>
695                                         {+member.deprecated+}
696                                 </dt>
697                                 </dl>
698                         </if>
699                         <if test="member.since.length">
700                                 <dl class="detailList">
701                                 <dt class="heading">Since:</dt>
702                                         <dd>{+ member.since +}</dd>
703                                 </dl>
704                                 </dl>
705                         </if>
706                         <if test="member.exceptions.length">
707                                 <dl class="detailList">
708                                 <dt class="heading">Throws:</dt>
709                                 <for each="item" in="member.exceptions">
710                                         <dt>
711                                                 {+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+} <b>{+item.name+}</b>
712                                         </dt>
713                                         <dd>{+resolveLinks(item.desc)+}</dd>
714                                 </for>
715                                 </dl>
716                         </if>
717                         <if test="member.returns.length">
718                                 <dl class="detailList">
719                                 <dt class="heading">Returns:</dt>
720                                 <for each="item" in="member.returns">
721                                         <dd>{+((item.type)?"<span class=\"light fixedFont\">{"+(new Link().toSymbol(item.type))+"}</span> " : "")+}{+resolveLinks(item.desc)+}</dd>
722                                 </for>
723                                 </dl>
724                         </if>
725                         <if test="member.requires.length">
726                                 <dl class="detailList">
727                                 <dt class="heading">Requires:</dt>
728                                 <for each="item" in="member.requires">
729                                         <dd>{+ resolveLinks(item) +}</dd>
730                                 </for>
731                                 </dl>
732                         </if>
733                         <if test="member.see.length">
734                                 <dl class="detailList">
735                                 <dt class="heading">See:</dt>
736                                 <for each="item" in="member.see">
737                                         <dd>{+ new Link().toSymbol(item) +}</dd>
738                                 </for>
739                                 </dl>
740                         </if>
741
742                     
743                     
744                      
745                     </div>                    
746                 </div>
747
748             </td>
749             <td class="msource">
750                 {+ (member.memberOf == data.alias) ? member.memberOf :  new Link().toSymbol(member.memberOf) +}
751             </td>
752         </tr>
753         </for>
754                                                        
755     </table>
756 </if>
757   
758   
759   
760  
761 <!-- ============================== footer ================================= -->
762                 <div class="fineprint" style="clear:both">
763                         <if test="Options.copyright">&copy;{+Options.copyright+}<br /></if>
764                         Documentation generated by <a href="http://www.akbkhome.com" target="_blankt">Introspeciton Doc Generator</a> {+Options.version+} on {+new Date()+}
765                         Based on 
766                         <a href="http://www.jsdoctoolkit.org/" target="_blank">JsDoc Toolkit</a> on {+new Date()+}
767                 </div>
768         </body>
769 </html>