mirror of
https://github.com/ChronosX88/FreePastry.git
synced 2025-01-16 01:26:27 +00:00
345 lines
15 KiB
HTML
345 lines
15 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
|
<!--NewPage-->
|
||
|
<HTML>
|
||
|
<HEAD>
|
||
|
<!-- Generated by javadoc (build 1.6.0_07) on Fri Mar 13 20:01:03 CET 2009 -->
|
||
|
<TITLE>
|
||
|
Cache (Rice Pastry - API Specifications)
|
||
|
</TITLE>
|
||
|
|
||
|
<META NAME="date" CONTENT="2009-03-13">
|
||
|
|
||
|
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../stylesheet.css" TITLE="Style">
|
||
|
|
||
|
<SCRIPT type="text/javascript">
|
||
|
function windowTitle()
|
||
|
{
|
||
|
if (location.href.indexOf('is-external=true') == -1) {
|
||
|
parent.document.title="Cache (Rice Pastry - API Specifications)";
|
||
|
}
|
||
|
}
|
||
|
</SCRIPT>
|
||
|
<NOSCRIPT>
|
||
|
</NOSCRIPT>
|
||
|
|
||
|
</HEAD>
|
||
|
|
||
|
<BODY BGCOLOR="white" onload="windowTitle();">
|
||
|
<HR>
|
||
|
|
||
|
|
||
|
<!-- ========= START OF TOP NAVBAR ======= -->
|
||
|
<A NAME="navbar_top"><!-- --></A>
|
||
|
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
|
||
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||
|
<TR>
|
||
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||
|
<A NAME="navbar_top_firstrow"><!-- --></A>
|
||
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||
|
<TR ALIGN="center" VALIGN="top">
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Cache.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
</TD>
|
||
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||
|
Rice Pastry API</EM>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
|
||
|
<TR>
|
||
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||
|
PREV CLASS
|
||
|
<A HREF="../../rice/persistence/Catalog.html" title="interface in rice.persistence"><B>NEXT CLASS</B></A></FONT></TD>
|
||
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||
|
<A HREF="../../index.html?rice/persistence/Cache.html" target="_top"><B>FRAMES</B></A>
|
||
|
<A HREF="Cache.html" target="_top"><B>NO FRAMES</B></A>
|
||
|
<SCRIPT type="text/javascript">
|
||
|
<!--
|
||
|
if(window==top) {
|
||
|
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||
|
}
|
||
|
//-->
|
||
|
</SCRIPT>
|
||
|
<NOSCRIPT>
|
||
|
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
|
||
|
</NOSCRIPT>
|
||
|
|
||
|
|
||
|
</FONT></TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||
|
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||
|
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
<A NAME="skip-navbar_top"></A>
|
||
|
<!-- ========= END OF TOP NAVBAR ========= -->
|
||
|
|
||
|
<HR>
|
||
|
<!-- ======== START OF CLASS DATA ======== -->
|
||
|
<H2>
|
||
|
<FONT SIZE="-1">
|
||
|
rice.persistence</FONT>
|
||
|
<BR>
|
||
|
Interface Cache</H2>
|
||
|
<DL>
|
||
|
<DT><B>All Superinterfaces:</B> <DD><A HREF="../../rice/persistence/Catalog.html" title="interface in rice.persistence">Catalog</A></DD>
|
||
|
</DL>
|
||
|
<DL>
|
||
|
<DT><B>All Known Subinterfaces:</B> <DD><A HREF="../../rice/persistence/StorageManager.html" title="interface in rice.persistence">StorageManager</A></DD>
|
||
|
</DL>
|
||
|
<DL>
|
||
|
<DT><B>All Known Implementing Classes:</B> <DD><A HREF="../../rice/persistence/EmptyCache.html" title="class in rice.persistence">EmptyCache</A>, <A HREF="../../rice/persistence/LRUCache.html" title="class in rice.persistence">LRUCache</A>, <A HREF="../../rice/persistence/StorageManagerImpl.html" title="class in rice.persistence">StorageManagerImpl</A></DD>
|
||
|
</DL>
|
||
|
<HR>
|
||
|
<DL>
|
||
|
<DT><PRE>public interface <B>Cache</B><DT>extends <A HREF="../../rice/persistence/Catalog.html" title="interface in rice.persistence">Catalog</A></DL>
|
||
|
</PRE>
|
||
|
|
||
|
<P>
|
||
|
This interface is the abstraction of something which provides a
|
||
|
caching service. Implementations should take in parameters specific
|
||
|
to the cache algorithm. Two implementations are provided,
|
||
|
the LRUCache and GDSCache. This interface extends the Catalog
|
||
|
interface, as the cache provides a Catalog service.
|
||
|
<P>
|
||
|
|
||
|
<P>
|
||
|
<DL>
|
||
|
<DT><B>Version:</B></DT>
|
||
|
<DD>$Id: Cache.java 4654 2009-01-08 16:33:07Z jeffh $</DD>
|
||
|
</DL>
|
||
|
<HR>
|
||
|
|
||
|
<P>
|
||
|
|
||
|
<!-- ========== METHOD SUMMARY =========== -->
|
||
|
|
||
|
<A NAME="method_summary"><!-- --></A>
|
||
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||
|
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||
|
<B>Method Summary</B></FONT></TH>
|
||
|
</TR>
|
||
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||
|
<CODE> void</CODE></FONT></TD>
|
||
|
<TD><CODE><B><A HREF="../../rice/persistence/Cache.html#cache(rice.p2p.commonapi.Id, java.io.Serializable, java.io.Serializable, rice.Continuation)">cache</A></B>(<A HREF="../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> id,
|
||
|
java.io.Serializable metadata,
|
||
|
java.io.Serializable obj,
|
||
|
<A HREF="../../rice/Continuation.html" title="interface in rice">Continuation</A> c)</CODE>
|
||
|
|
||
|
<BR>
|
||
|
Caches an object in this storage.</TD>
|
||
|
</TR>
|
||
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||
|
<CODE> long</CODE></FONT></TD>
|
||
|
<TD><CODE><B><A HREF="../../rice/persistence/Cache.html#getMaximumSize()">getMaximumSize</A></B>()</CODE>
|
||
|
|
||
|
<BR>
|
||
|
Returns the maximum size of the cache, in bytes.</TD>
|
||
|
</TR>
|
||
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||
|
<CODE> void</CODE></FONT></TD>
|
||
|
<TD><CODE><B><A HREF="../../rice/persistence/Cache.html#setMaximumSize(int, rice.Continuation)">setMaximumSize</A></B>(int size,
|
||
|
<A HREF="../../rice/Continuation.html" title="interface in rice">Continuation</A> c)</CODE>
|
||
|
|
||
|
<BR>
|
||
|
Sets the maximum size of the cache, in bytes.</TD>
|
||
|
</TR>
|
||
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||
|
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||
|
<CODE> void</CODE></FONT></TD>
|
||
|
<TD><CODE><B><A HREF="../../rice/persistence/Cache.html#uncache(rice.p2p.commonapi.Id, rice.Continuation)">uncache</A></B>(<A HREF="../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> id,
|
||
|
<A HREF="../../rice/Continuation.html" title="interface in rice">Continuation</A> c)</CODE>
|
||
|
|
||
|
<BR>
|
||
|
Removes the object from the list of cached objects.</TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
<A NAME="methods_inherited_from_class_rice.persistence.Catalog"><!-- --></A>
|
||
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||
|
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||
|
<TH ALIGN="left"><B>Methods inherited from interface rice.persistence.<A HREF="../../rice/persistence/Catalog.html" title="interface in rice.persistence">Catalog</A></B></TH>
|
||
|
</TR>
|
||
|
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||
|
<TD><CODE><A HREF="../../rice/persistence/Catalog.html#exists(rice.p2p.commonapi.Id)">exists</A>, <A HREF="../../rice/persistence/Catalog.html#flush(rice.Continuation)">flush</A>, <A HREF="../../rice/persistence/Catalog.html#getMetadata(rice.p2p.commonapi.Id)">getMetadata</A>, <A HREF="../../rice/persistence/Catalog.html#getObject(rice.p2p.commonapi.Id, rice.Continuation)">getObject</A>, <A HREF="../../rice/persistence/Catalog.html#getSize()">getSize</A>, <A HREF="../../rice/persistence/Catalog.html#getTotalSize()">getTotalSize</A>, <A HREF="../../rice/persistence/Catalog.html#rename(rice.p2p.commonapi.Id, rice.p2p.commonapi.Id, rice.Continuation)">rename</A>, <A HREF="../../rice/persistence/Catalog.html#scan()">scan</A>, <A HREF="../../rice/persistence/Catalog.html#scan(rice.p2p.commonapi.IdRange)">scan</A>, <A HREF="../../rice/persistence/Catalog.html#scanMetadata()">scanMetadata</A>, <A HREF="../../rice/persistence/Catalog.html#scanMetadata(rice.p2p.commonapi.IdRange)">scanMetadata</A>, <A HREF="../../rice/persistence/Catalog.html#scanMetadataValuesHead(java.lang.Object)">scanMetadataValuesHead</A>, <A HREF="../../rice/persistence/Catalog.html#scanMetadataValuesNull()">scanMetadataValuesNull</A>, <A HREF="../../rice/persistence/Catalog.html#setMetadata(rice.p2p.commonapi.Id, java.io.Serializable, rice.Continuation)">setMetadata</A></CODE></TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
|
||
|
<P>
|
||
|
|
||
|
<!-- ============ METHOD DETAIL ========== -->
|
||
|
|
||
|
<A NAME="method_detail"><!-- --></A>
|
||
|
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||
|
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||
|
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||
|
<B>Method Detail</B></FONT></TH>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
|
||
|
<A NAME="cache(rice.p2p.commonapi.Id, java.io.Serializable, java.io.Serializable, rice.Continuation)"><!-- --></A><H3>
|
||
|
cache</H3>
|
||
|
<PRE>
|
||
|
void <B>cache</B>(<A HREF="../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> id,
|
||
|
java.io.Serializable metadata,
|
||
|
java.io.Serializable obj,
|
||
|
<A HREF="../../rice/Continuation.html" title="interface in rice">Continuation</A> c)</PRE>
|
||
|
<DL>
|
||
|
<DD>Caches an object in this storage. This method is non-blocking.
|
||
|
If the object has already been stored at the location id, this
|
||
|
method has the effect of calling <code>uncache(id)</code> followed
|
||
|
by <code>cache(id, obj)</code>. This method finishes by calling
|
||
|
receiveResult() on the provided continuation with whether or not
|
||
|
the object was cached. Note that the object may not actually be
|
||
|
cached due to the cache replacement policy.
|
||
|
|
||
|
Returns <code>True</code> if the cache actaully stores the object, else
|
||
|
<code>False</code> (through receiveResult on c).
|
||
|
<P>
|
||
|
<DD><DL>
|
||
|
</DL>
|
||
|
</DD>
|
||
|
<DD><DL>
|
||
|
<DT><B>Parameters:</B><DD><CODE>id</CODE> - The object's id.<DD><CODE>metadata</CODE> - The object's metdatadata<DD><CODE>obj</CODE> - The object to cache.<DD><CODE>c</CODE> - The command to run once the operation is complete</DL>
|
||
|
</DD>
|
||
|
</DL>
|
||
|
<HR>
|
||
|
|
||
|
<A NAME="uncache(rice.p2p.commonapi.Id, rice.Continuation)"><!-- --></A><H3>
|
||
|
uncache</H3>
|
||
|
<PRE>
|
||
|
void <B>uncache</B>(<A HREF="../../rice/p2p/commonapi/Id.html" title="interface in rice.p2p.commonapi">Id</A> id,
|
||
|
<A HREF="../../rice/Continuation.html" title="interface in rice">Continuation</A> c)</PRE>
|
||
|
<DL>
|
||
|
<DD>Removes the object from the list of cached objects. This method is
|
||
|
non-blocking. If the object was not in the cached list in the first place,
|
||
|
nothing happens and <code>False</code> is returned.
|
||
|
|
||
|
Returns <code>True</code> if the action succeeds, else
|
||
|
<code>False</code> (through receiveResult on c).
|
||
|
<P>
|
||
|
<DD><DL>
|
||
|
</DL>
|
||
|
</DD>
|
||
|
<DD><DL>
|
||
|
<DT><B>Parameters:</B><DD><CODE>pid</CODE> - The object's id<DD><CODE>c</CODE> - The command to run once the operation is complete</DL>
|
||
|
</DD>
|
||
|
</DL>
|
||
|
<HR>
|
||
|
|
||
|
<A NAME="getMaximumSize()"><!-- --></A><H3>
|
||
|
getMaximumSize</H3>
|
||
|
<PRE>
|
||
|
long <B>getMaximumSize</B>()</PRE>
|
||
|
<DL>
|
||
|
<DD>Returns the maximum size of the cache, in bytes. The result
|
||
|
is returned via the receiveResult method on the provided
|
||
|
Continuation with an Integer representing the size.
|
||
|
<P>
|
||
|
<DD><DL>
|
||
|
</DL>
|
||
|
</DD>
|
||
|
<DD><DL>
|
||
|
<DT><B>Parameters:</B><DD><CODE>c</CODE> - The command to run once the operation is complete</DL>
|
||
|
</DD>
|
||
|
</DL>
|
||
|
<HR>
|
||
|
|
||
|
<A NAME="setMaximumSize(int, rice.Continuation)"><!-- --></A><H3>
|
||
|
setMaximumSize</H3>
|
||
|
<PRE>
|
||
|
void <B>setMaximumSize</B>(int size,
|
||
|
<A HREF="../../rice/Continuation.html" title="interface in rice">Continuation</A> c)</PRE>
|
||
|
<DL>
|
||
|
<DD>Sets the maximum size of the cache, in bytes. Setting this
|
||
|
value to a smaller value than the current value may result in
|
||
|
object being evicted from the cache.
|
||
|
|
||
|
Returns the success or failure of the setSize operation
|
||
|
(through receiveResult on c).
|
||
|
<P>
|
||
|
<DD><DL>
|
||
|
</DL>
|
||
|
</DD>
|
||
|
<DD><DL>
|
||
|
<DT><B>Parameters:</B><DD><CODE>size</CODE> - The new maximum size, in bytes, of the cache.<DD><CODE>c</CODE> - The command to run once the operation is complete</DL>
|
||
|
</DD>
|
||
|
</DL>
|
||
|
<!-- ========= END OF CLASS DATA ========= -->
|
||
|
<HR>
|
||
|
|
||
|
|
||
|
<!-- ======= START OF BOTTOM NAVBAR ====== -->
|
||
|
<A NAME="navbar_bottom"><!-- --></A>
|
||
|
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
|
||
|
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
|
||
|
<TR>
|
||
|
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
|
||
|
<A NAME="navbar_bottom_firstrow"><!-- --></A>
|
||
|
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
|
||
|
<TR ALIGN="center" VALIGN="top">
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/Cache.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
|
||
|
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
</TD>
|
||
|
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
|
||
|
Rice Pastry API</EM>
|
||
|
</TD>
|
||
|
</TR>
|
||
|
|
||
|
<TR>
|
||
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||
|
PREV CLASS
|
||
|
<A HREF="../../rice/persistence/Catalog.html" title="interface in rice.persistence"><B>NEXT CLASS</B></A></FONT></TD>
|
||
|
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
|
||
|
<A HREF="../../index.html?rice/persistence/Cache.html" target="_top"><B>FRAMES</B></A>
|
||
|
<A HREF="Cache.html" target="_top"><B>NO FRAMES</B></A>
|
||
|
<SCRIPT type="text/javascript">
|
||
|
<!--
|
||
|
if(window==top) {
|
||
|
document.writeln('<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>');
|
||
|
}
|
||
|
//-->
|
||
|
</SCRIPT>
|
||
|
<NOSCRIPT>
|
||
|
<A HREF="../../allclasses-noframe.html"><B>All Classes</B></A>
|
||
|
</NOSCRIPT>
|
||
|
|
||
|
|
||
|
</FONT></TD>
|
||
|
</TR>
|
||
|
<TR>
|
||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||
|
SUMMARY: NESTED | FIELD | CONSTR | <A HREF="#method_summary">METHOD</A></FONT></TD>
|
||
|
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
|
||
|
DETAIL: FIELD | CONSTR | <A HREF="#method_detail">METHOD</A></FONT></TD>
|
||
|
</TR>
|
||
|
</TABLE>
|
||
|
<A NAME="skip-navbar_bottom"></A>
|
||
|
<!-- ======== END OF BOTTOM NAVBAR ======= -->
|
||
|
|
||
|
<HR>
|
||
|
<i>Copyright © 2001-2005 - Rice Pastry.</i>
|
||
|
</BODY>
|
||
|
</HTML>
|