Commit a15394f59cb37d1b64bb65439409ecc664ccf2d0
1 parent
fe22e2de
Exists in
master
and in
7 other branches
--no commit message
Showing
5 changed files
with
0 additions
and
523 deletions
Show diff stats
classesphp/lews/index.php
@@ -1,64 +0,0 @@ | @@ -1,64 +0,0 @@ | ||
1 | -<HTML> | ||
2 | -<HEAD> | ||
3 | -<TITLE>PHP WMS Client</TITLE> | ||
4 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | ||
5 | -</HEAD> | ||
6 | -<BODY BGCOLOR=#FFFFFF> | ||
7 | - | ||
8 | -<H1>PHP WMS Client</H1> | ||
9 | - | ||
10 | -<P>This client uses the XML capabilities of PHP and standard web application | ||
11 | -programming techniques to present an HTML/JavaScript view of | ||
12 | -<A HREF='http://www.opengis.org'>OpenGIS</A> Web Map Server (WMS) internet | ||
13 | -mapping servers.</P> | ||
14 | - | ||
15 | -<H2>Test Servers</H2> | ||
16 | - | ||
17 | -<P>Our goal is to "do the right thing" with all these servers. It will be | ||
18 | -a long hard road.</P> | ||
19 | - | ||
20 | -<? | ||
21 | - | ||
22 | -$servers = array( | ||
23 | - | ||
24 | - array("Refractions USA","http://office.refractions.net/ms/cgi-bin/mapserv?map=/home/httpd/mapserver/html/usa/usa.map&","Good"), | ||
25 | - array("Refractions PostGIS","http://mapserver.refractions.net/cgi-bin/mapserv?map=/home/www/mapserv/maps/postgis.map&","OK"), | ||
26 | - array("CubeWerx World","http://www.cubewerx.com/demo/cubeserv/cubeserv.cgi?","Bad"), | ||
27 | - array("DMSolutions GMAP","http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?","Good") | ||
28 | -); | ||
29 | - | ||
30 | -print "<TABLE WIDTH=100% BORDER=1 CELLPADDING=5>"; | ||
31 | -print "<TR BGCOLOR=#EEEEEE><TH>WMS Site</TH><TH>Online Resource URL</TH><TH>Status</TH></TR>"; | ||
32 | -foreach ( $servers as $s ) { | ||
33 | - $hurl = urlencode($s[1]); | ||
34 | - print "<TR><TH ALIGN=CENTER>$s[0]</TH><TD><A HREF='wms.php?onlineresource=$hurl'>$s[1]</A></TD><TD>$s[2]</TD></TR>"; | ||
35 | -} | ||
36 | - | ||
37 | -?> | ||
38 | - | ||
39 | -<FORM ACTION='wms.php' METHOD='get'> | ||
40 | -<TR> | ||
41 | - <TH ALIGN=RIGHT>Enter a Server</TH> | ||
42 | - <TD COLSPAN=2><INPUT NAME='onlineresource' TYPE='text' SIZE='50'> | ||
43 | - <INPUT TYPE='submit' VALUE=' Try Server '></TD> | ||
44 | -</TR> | ||
45 | -</FORM> | ||
46 | - | ||
47 | -</TABLE> | ||
48 | - | ||
49 | - | ||
50 | -<H2>To Do List</H2> | ||
51 | - | ||
52 | -<UL> | ||
53 | -<LI>Properly handle heirarchical <Layer> objects and provide a | ||
54 | -tree-based layer list. | ||
55 | -<LI>Enable and disable layer entries appropriately based on the | ||
56 | -<ScaleHint> provided for <Layer>s. | ||
57 | -<LI>Continue to test against new and unknown WMS servers to obtain maximum | ||
58 | -compatibility. | ||
59 | -<LI>Aesthetic improvements to the interface. Graphical mode selectors, | ||
60 | -rollovers, highlighting. "Themability" of the interface. | ||
61 | -</UL> | ||
62 | - | ||
63 | -</BODY> | ||
64 | -</HTML> |
classesphp/lews/wms.php
@@ -1,129 +0,0 @@ | @@ -1,129 +0,0 @@ | ||
1 | -<HTML> | ||
2 | -<HEAD> | ||
3 | -<TITLE>WMS</TITLE> | ||
4 | -<LINK REL="stylesheet" TYPE="text/css" HREF="wms_style.css"> | ||
5 | -<SCRIPT LANGUAGE='JavaScript'> | ||
6 | - | ||
7 | -function doSetup() { | ||
8 | - // | ||
9 | - // Initialize the mapframe variables for future wraparound, copying | ||
10 | - // data out of layerframe, which read the information from the | ||
11 | - // XML capabilities file. | ||
12 | - // | ||
13 | - var flds = new Array( "bbox", "format", "mode", "width", "height", "srs", "onlineresource" ); | ||
14 | - for ( i = 0; i < flds.length; i++ ) { | ||
15 | - mapframe.document.mapform.elements[flds[i]].value = | ||
16 | - layerframe.document.layerform.elements[flds[i]].value; | ||
17 | - } | ||
18 | - // | ||
19 | - // Read the mapframe size and set the state variables. | ||
20 | - // | ||
21 | - doSize(); | ||
22 | - // | ||
23 | - // Have the layerframe initiate the first update. This gets all | ||
24 | - // the layer states to match the form values. | ||
25 | - // | ||
26 | - layerframe.toggle(); | ||
27 | -} | ||
28 | - | ||
29 | -function doSize() { | ||
30 | - // | ||
31 | - // Read the mapframe size using javascript and set the | ||
32 | - // width and height variables in the mapframe. | ||
33 | - // | ||
34 | - var width = 500; | ||
35 | - var height = 500; | ||
36 | - // | ||
37 | - // IE has different ways of reading frame size. | ||
38 | - // | ||
39 | - if( navigator.appName.indexOf('Microsoft') != -1 ) { // IE | ||
40 | - if ( window.createPopup ) { // IE >= 5.5 | ||
41 | - width = top.mapframe.frameElement.clientWidth; | ||
42 | - height = top.mapframe.frameElement.clientHeight; | ||
43 | - } else { // IE < 5.5 | ||
44 | - width = top.mapframe.document.body.clientWidth; | ||
45 | - height = top.mapframe.document.body.clientHeight; | ||
46 | - } | ||
47 | - } | ||
48 | - // | ||
49 | - // Other browsers are fairly consistent. | ||
50 | - // | ||
51 | - else { // Not IE | ||
52 | - width = top.mapframe.innerWidth; | ||
53 | - height = top.mapframe.innerHeight; | ||
54 | - } | ||
55 | - // | ||
56 | - // Set the size state values in the mapframe. | ||
57 | - // | ||
58 | - mapframe.document.mapform.width.value = width; | ||
59 | - mapframe.document.mapform.height.value = height; | ||
60 | -} | ||
61 | - | ||
62 | -function doResize() { | ||
63 | - // | ||
64 | - // On a resize event, read the new size, then | ||
65 | - // redraw the map. | ||
66 | - // | ||
67 | - doSize(); | ||
68 | - mapframe.document.mapform.submit(); | ||
69 | -} | ||
70 | - | ||
71 | -</SCRIPT> | ||
72 | -<SCRIPT LANGUAGE='JavaScript'> | ||
73 | - | ||
74 | -// | ||
75 | -// Netscape 4 event handling requires us to capture | ||
76 | -// the resize event at the top. | ||
77 | -// | ||
78 | -if ( navigator.appName.indexOf('Netscape') != -1 ) { | ||
79 | - self.captureEvents( Event.RESIZE ); | ||
80 | -} | ||
81 | - | ||
82 | -// | ||
83 | -// Set some event handlers. | ||
84 | -// | ||
85 | -self.onload = doSetup; | ||
86 | -self.onresize = doResize; | ||
87 | - | ||
88 | -</SCRIPT> | ||
89 | -</HEAD> | ||
90 | - | ||
91 | -<FRAMESET | ||
92 | - border=1 | ||
93 | - rows=55,* | ||
94 | - framespacing=0 | ||
95 | - > | ||
96 | - | ||
97 | - <FRAME | ||
98 | - name=titleframe | ||
99 | - frameBorder=Yes | ||
100 | - scrolling=No | ||
101 | - src="wms_titleframe.php" | ||
102 | - > | ||
103 | - | ||
104 | - <FRAMESET | ||
105 | - border=1 | ||
106 | - cols=250,* | ||
107 | - frameSpacing=0 | ||
108 | - > | ||
109 | - | ||
110 | - <FRAME | ||
111 | - name=layerframe | ||
112 | - frameBorder=Yes | ||
113 | - scrolling=Yes | ||
114 | - src="wms_layerframe.php?onlineresource=<? echo urlencode($_GET['onlineresource']) ?>" | ||
115 | - > | ||
116 | - <FRAME | ||
117 | - name=mapframe | ||
118 | - frameBorder=Yes | ||
119 | - marginHeight=0 | ||
120 | - marginWidth=0 | ||
121 | - scrolling=No | ||
122 | - src="wms_mapframe.php" | ||
123 | - > | ||
124 | - | ||
125 | - </FRAMESET> | ||
126 | - | ||
127 | -</FRAMESET> | ||
128 | - | ||
129 | -</HTML> |
classesphp/lews/wms_layerframe.php
@@ -1,99 +0,0 @@ | @@ -1,99 +0,0 @@ | ||
1 | -<HTML> | ||
2 | -<HEAD> | ||
3 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | ||
4 | - | ||
5 | -<SCRIPT LANGUAGE='JavaScript'> | ||
6 | - | ||
7 | -function toggle(event) { | ||
8 | - var lyrs = new Array(); | ||
9 | - var qlyrs = new Array(); | ||
10 | - for( i = 0; i < document.layerform.elements.length; i++ ) { | ||
11 | - if( document.layerform.elements[i].name == "checks" ) { | ||
12 | - if( document.layerform.elements[i].checked ) { | ||
13 | - lyrs.push(document.layerform.elements[i].value); | ||
14 | - if( eval("document.layerform.query_" + document.layerform.elements[i].value + ".value") ) { | ||
15 | - qlyrs.push(document.layerform.elements[i].value); | ||
16 | - } | ||
17 | - } | ||
18 | - } | ||
19 | - } | ||
20 | - top.mapframe.document.mapform.layers.value = lyrs.join(","); | ||
21 | - top.mapframe.document.mapform.qlayers.value = qlyrs.join(","); | ||
22 | - top.mapframe.doSubmit(); | ||
23 | -} | ||
24 | - | ||
25 | -</SCRIPT> | ||
26 | - | ||
27 | -</HEAD> | ||
28 | -<BODY> | ||
29 | - | ||
30 | -<? | ||
31 | - | ||
32 | - | ||
33 | -# ------------------------------------------------------------- | ||
34 | -# Import the WMS support functions for PHP. These are mostly responsible for | ||
35 | -# handling the XML capabilities request, and creating appropriate JavaScript | ||
36 | -# objects from that data.8 | ||
37 | -# | ||
38 | -# PHP functions are also used to generate the query result page. | ||
39 | -# | ||
40 | -include("wms_functions.php"); | ||
41 | - | ||
42 | -# ------------------------------------------------------------- | ||
43 | -# Test that there is a wms service defined before proceding. | ||
44 | -# | ||
45 | -if ( ! $onlineresource ) { | ||
46 | - # No WMS service provided. | ||
47 | - wms_fatal("No 'onlineresource' defined."); | ||
48 | - } | ||
49 | - | ||
50 | -$wms_service_request = $onlineresource . "REQUEST=GetCapabilities&SERVICE=WMS"; | ||
51 | - | ||
52 | - | ||
53 | -# ------------------------------------------------------------- | ||
54 | -# Test that the capabilites file has successfully downloaded. | ||
55 | -# | ||
56 | -if( !($wms_capabilities = file($wms_service_request)) ) { | ||
57 | - # Cannot download the capabilities file. | ||
58 | - wms_fatal("Unable to retrieve capabilities file '$wms_service_request'."); | ||
59 | -} | ||
60 | - | ||
61 | -$wms_capabilities = implode("",$wms_capabilities); | ||
62 | - | ||
63 | -# ------------------------------------------------------------- | ||
64 | -# Test that the capabilites file has successfully parsed. | ||
65 | -# | ||
66 | -if( !($dom = xmldoc($wms_capabilities)) ) { | ||
67 | - # Cannot parse the capabilities file. | ||
68 | - wms_fatal("Unable to parse capabilities file from '$onlineresource'.<P>" . xml2html($wms_capabilities)); | ||
69 | -} | ||
70 | - | ||
71 | -# ------------------------------------------------------------- | ||
72 | -# Create the JavaScript map object and layer objects. | ||
73 | -# Set the layer objects to have a valid reference to the map object. | ||
74 | -# | ||
75 | -#print xml2html($wms_capabilities); exit; | ||
76 | -print "<H1>" . wms_title($dom) . "</H1>"; | ||
77 | -print "<FORM NAME='layerform'>"; | ||
78 | -foreach (wms_layers($dom) as $layer) { | ||
79 | - print wms_layer2html($layer); | ||
80 | -} | ||
81 | -$bbox = wms_bbox($dom); | ||
82 | -print wms_hidden("bbox",$bbox); | ||
83 | -print wms_hidden("format","image/png"); | ||
84 | -print wms_hidden("mode","PAN"); | ||
85 | -print wms_hidden("width","500"); | ||
86 | -print wms_hidden("height","500"); | ||
87 | -print wms_hidden("onlineresource",$onlineresource); | ||
88 | -print wms_hidden("srs",wms_srs($dom)); | ||
89 | -print "</FORM>"; | ||
90 | -$bbox = explode(",",$bbox); | ||
91 | -print "<TABLE BORDER=0 WIDTH=100% CELLPADDING=3>"; | ||
92 | -print "<TR VALIGN=TOP><TH CLASS=SMALL ALIGN=RIGHT>BBOX:</TH><TD CLASS=SMALL>LL $bbox[0],$bbox[1]<BR> UR $bbox[2],$bbox[3]</TD></TR>"; | ||
93 | -print "<TR VALIGN=TOP><TH CLASS=SMALL ALIGN=RIGHT>SRS:</TH><TD CLASS=SMALL>".wms_srs($dom)."</TD></TR>"; | ||
94 | -print "</TABLE>"; | ||
95 | - | ||
96 | -?> | ||
97 | - | ||
98 | -</BODY> | ||
99 | -</HTML> |
classesphp/lews/wms_mapframe.php
@@ -1,156 +0,0 @@ | @@ -1,156 +0,0 @@ | ||
1 | -<HTML> | ||
2 | -<HEAD> | ||
3 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | ||
4 | -<SCRIPT LANGUAGE='JavaScript'> | ||
5 | - | ||
6 | -function doQuery() { | ||
7 | - // | ||
8 | - // If we are in query mode, we want a new window | ||
9 | - // to submit the form into. | ||
10 | - // | ||
11 | - var win_size = "width=280,height=450"; | ||
12 | - var win_frame = "status=no,menubar=no,toolbar=no,resizeable=yes,scrollbars=yes"; | ||
13 | - window.qwin = open("","queryframe",win_size + "," + win_frame); | ||
14 | - window.qwin.focus(); | ||
15 | - return(true); | ||
16 | -} | ||
17 | - | ||
18 | -function doSubmit() { | ||
19 | - // | ||
20 | - // This function takes submissions from the layer list and | ||
21 | - // ensures they go to the right target if we happen to be | ||
22 | - // in query mode at the time. | ||
23 | - // | ||
24 | - if ( document.mapform.mode.value == "qry" ) { | ||
25 | - document.mapform.action = "wms_mapframe.php"; | ||
26 | - document.mapform.target = "mapframe"; | ||
27 | - } | ||
28 | - document.mapform.submit(); | ||
29 | -} | ||
30 | - | ||
31 | -function setMode(mode) { | ||
32 | - // | ||
33 | - // This takes mode changes from the titleframe and handles | ||
34 | - // the interface state appropriately. | ||
35 | - // | ||
36 | - document.mapform.mode.value = mode; | ||
37 | - if ( mode == "qry" ) { | ||
38 | - // | ||
39 | - // Set the target and action appropriately for query mode. | ||
40 | - // | ||
41 | - document.mapform.onsubmit = doQuery; | ||
42 | - document.mapform.action = "wms_query.php"; | ||
43 | - document.mapform.target = "queryframe"; | ||
44 | - } | ||
45 | - else { | ||
46 | - // | ||
47 | - // Set the target and action appropriately for other modes. | ||
48 | - // | ||
49 | - document.mapform.action = "wms_mapframe.php"; | ||
50 | - document.mapform.onsubmit = null; | ||
51 | - document.mapform.target = "mapframe"; | ||
52 | - if( window.qwin != null ) { | ||
53 | - window.qwin.close(); | ||
54 | - } | ||
55 | - } | ||
56 | - if ( mode == "all" ) { | ||
57 | - document.mapform.submit(); | ||
58 | - } | ||
59 | -} | ||
60 | - | ||
61 | - | ||
62 | -</SCRIPT> | ||
63 | -</HEAD> | ||
64 | -<BODY TOPMARGIN=0 BOTTOMMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0> | ||
65 | -<FORM NAME='mapform' TARGET='mapframe' METHOD='post' ACTION='wms_mapframe.php'> | ||
66 | - | ||
67 | -<? | ||
68 | - | ||
69 | -include("wms_functions.php"); | ||
70 | - | ||
71 | -if ( $_POST["onlineresource"] ) { | ||
72 | - | ||
73 | - $size = array($_POST["width"],$_POST["height"]); | ||
74 | - $bbox = explode(",",$_POST["bbox"]); | ||
75 | - | ||
76 | - if( $_POST["mapimg_x"] && $_POST["mapimg_y"] ) { | ||
77 | - | ||
78 | - $click = array($_POST["mapimg_x"],$_POST["mapimg_y"]); | ||
79 | - | ||
80 | - if( $_POST["mode"] == "pan" ) { | ||
81 | - $bbox = wms_pan( $bbox, $size, $click ); | ||
82 | - } | ||
83 | - elseif( $_POST["mode"] == "zin" ) { | ||
84 | - $bbox = wms_pan( $bbox, $size, $click ); | ||
85 | - $bbox = wms_zoom( $bbox, 0.5 ); | ||
86 | - } | ||
87 | - elseif( $_POST["mode"] == "zout" ) { | ||
88 | - $bbox = wms_pan( $bbox, $size, $click ); | ||
89 | - $bbox = wms_zoom( $bbox, 2.0 ); | ||
90 | - } | ||
91 | - } | ||
92 | - | ||
93 | - # | ||
94 | - # We are in zoom-to-extents mode, to override current | ||
95 | - # extent with saved original extent. Then switch to | ||
96 | - # the default mode (pan). | ||
97 | - # | ||
98 | - if( $_POST["mode"] == "all" ) { | ||
99 | - $bbox = explode(",",$_POST["bbox0"]); | ||
100 | - $_POST["mode"] = "pan"; | ||
101 | - } | ||
102 | - # | ||
103 | - # Resize the spatial extents to match the image | ||
104 | - # aspect. | ||
105 | - # | ||
106 | - $bbox = wms_scale( $bbox, $size ); | ||
107 | - $_POST["bbox"] = implode(",",$bbox); | ||
108 | - # | ||
109 | - # Store the initial extent for future use. | ||
110 | - # | ||
111 | - if( ! $_POST["bbox0"] ) { | ||
112 | - $_POST["bbox0"] = $_POST["bbox"]; | ||
113 | - } | ||
114 | - # | ||
115 | - # Create the GETMAP URL. | ||
116 | - # | ||
117 | - $url = $_POST["onlineresource"] . | ||
118 | - "VERSION=" . urlencode("1.1.0") . "&" . | ||
119 | - "REQUEST=GetMap&" . | ||
120 | - "BBOX=" . urlencode($_POST["bbox"]) . "&" . | ||
121 | - "LAYERS=" . urlencode($_POST["layers"]) . "&" . | ||
122 | - "SRS=" . urlencode($_POST["srs"]) . "&" . | ||
123 | - "WIDTH=" . urlencode($_POST["width"]) . "&" . | ||
124 | - "HEIGHT=" . urlencode($_POST["height"]) . "&" . | ||
125 | - "FORMAT=" . urlencode($_POST["format"]); | ||
126 | - # | ||
127 | - # Get the map image. | ||
128 | - # | ||
129 | - print "<INPUT BORDER=0 TYPE='image' NAME='mapimg' SRC='$url'>"; | ||
130 | - | ||
131 | -} | ||
132 | - | ||
133 | -# | ||
134 | -# Fill out the wraparound information. This saves the state of the | ||
135 | -# system for use in the next action. | ||
136 | -# | ||
137 | -$wms_vars = array("bbox","format","width","height","layers","mode","srs","onlineresource","bbox0","qlayers"); | ||
138 | -foreach ( $wms_vars as $var ) { | ||
139 | - print wms_hidden($var,$_POST[$var]); | ||
140 | -} | ||
141 | - | ||
142 | -?> | ||
143 | - | ||
144 | -</FORM> | ||
145 | -<SCRIPT LANGUAGE='JavaScript'> | ||
146 | -// | ||
147 | -// A silly hack to ensure that if we are in query mode the | ||
148 | -// form target and action correspond to the query mode. | ||
149 | -// | ||
150 | -if ( document.mapform.mode.value == "qry" ) { | ||
151 | - document.mapform.target = "queryframe"; | ||
152 | - document.mapform.action = "wms_query.php"; | ||
153 | -} | ||
154 | -</SCRIPT> | ||
155 | -</BODY> | ||
156 | -</HTML> |
classesphp/lews/wms_titleframe.php
@@ -1,75 +0,0 @@ | @@ -1,75 +0,0 @@ | ||
1 | -<HTML> | ||
2 | -<HEAD> | ||
3 | -<LINK REL='stylesheet' TYPE='text/css' HREF='wms_style.css'> | ||
4 | -</HEAD> | ||
5 | -<SCRIPT LANGUAGE='JavaScript'> | ||
6 | -function doClick(mode) { | ||
7 | - // | ||
8 | - // Ensure that buttons behave the way we want. When we | ||
9 | - // get graphical buttons, this behavior will still exist, | ||
10 | - // but the javascript will be more complex with rollovers | ||
11 | - // and so on. | ||
12 | - // | ||
13 | - if( mode == "all" ) { | ||
14 | - // | ||
15 | - // If zooming to all, set the mode back to the default | ||
16 | - // mode (pan) right away, then initiate the action. | ||
17 | - // | ||
18 | - top.mapframe.setMode(mode); | ||
19 | - mode = "pan"; | ||
20 | - } | ||
21 | - // | ||
22 | - // Blank all modes then set the mode to the current one. | ||
23 | - // | ||
24 | - for ( var i = 0; i < document.controls.elements.length; i++ ) { | ||
25 | - document.controls.elements[i].checked = false; | ||
26 | - } | ||
27 | - eval("document.controls." + mode + ".checked = true"); | ||
28 | - // | ||
29 | - // Pass the mode on through. | ||
30 | - // | ||
31 | - top.mapframe.setMode(mode); | ||
32 | - return false; | ||
33 | -} | ||
34 | -</SCRIPT> | ||
35 | -<BODY> | ||
36 | -<FORM NAME=controls> | ||
37 | - | ||
38 | -<TABLE WIDTH=100% BORDER=0> | ||
39 | -<TR> | ||
40 | -<TD ALIGN=LEFT><A HREF="index.php" TARGET="_top">Home</A></TD> | ||
41 | -<TD ALIGN=RIGHT> | ||
42 | -<INPUT | ||
43 | - TYPE=radio | ||
44 | - NAME=all | ||
45 | - onClick='doClick("all")' | ||
46 | - > ALL | ||
47 | -<INPUT | ||
48 | - TYPE=radio | ||
49 | - NAME=pan | ||
50 | - CHECKED | ||
51 | - onClick='doClick("pan")' | ||
52 | - > PAN | ||
53 | -<INPUT | ||
54 | - TYPE=radio | ||
55 | - NAME=zin | ||
56 | - onClick='doClick("zin")' | ||
57 | - > ZIN | ||
58 | -<INPUT | ||
59 | - TYPE=radio | ||
60 | - NAME=zout | ||
61 | - onClick='doClick("zout")' | ||
62 | - > ZOUT | ||
63 | -<INPUT | ||
64 | - TYPE=radio | ||
65 | - NAME=qry | ||
66 | - onClick='doClick("qry")' | ||
67 | - > QRY | ||
68 | -</TD> | ||
69 | -</TR> | ||
70 | -</TABLE> | ||
71 | - | ||
72 | -</FORM> | ||
73 | - | ||
74 | -</BODY> | ||
75 | -</HTML> |