[ http://issues.apache.org/jira/browse/XALANJ-997?page=history ]
     
Brian Minchau resolved XALANJ-997:
----------------------------------

     Assign To:     (was: Xalan Developers Mailing List)
    Resolution: Cannot Reproduce

> java.lang.OutOfMemoryError when processing large CALS tables - memory leak?
> ---------------------------------------------------------------------------
>
>          Key: XALANJ-997
>          URL: http://issues.apache.org/jira/browse/XALANJ-997
>      Project: XalanJ2
>         Type: Bug
>   Components: transformation, Xalan-interpretive
>     Versions: 2.3
>  Environment: Operating System: Windows 9x
> Platform: PC
>     Reporter: Peter
>     Priority: Critical

>
> Our application is an SGML to HTML rendering tool.  We validate the SGML, 
> convert to XML and transform to XML using XSLT.
> A significant portion of the data is CALS tables and we have borrowed from 
> Norm 
> Walsh's DocBook code to perform these conversions.
> When processing large tables, Xalan crashes with a java.lang.OutOfMemoryError 
> and no further information.  
> When I isolated which tables were causing the crash, I processed them 
> individually.  By removing some rows and entries I finally got the table to 
> render but as soon as I add one entry back in, the crash will reoccur.
> This data is rendered successfully and properly using other XSLT processors 
> such as Saxon.  In a comparison (admittedly not complete) of Saxon and Xalan, 
> both seemed to be returning exactly the same values and iterating the same 
> number of times right up to the point where Xalan crashed.  
> Our client is already using Xalan for other purposes and wishes to remain 
> consistent in their toolset but will be unable to unless this problem is 
> remedied. They don't seem to receptive to the 'If tables crash it,  don't use 
> tables!' solution. :P
> Below is the xslt code for processing the tables followed by the XML to be 
> processed.  Simply using the XML as your input with this xslt code will 
> reproduce our error.  
> Thanks 
> ---------------------- cals_table.xsl
> <?xml version='1.0'?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version='1.0'>
> <xsl:param name="default.table.width" select="'80%'"/>
> <!-- ************************************************* -->
> <!-- ************************************************* -->
> <!-- Most of the following code was borrowed from Norm Walsh -->
> <xsl:template name="OUTPUT-ENTRY-ATTRIBUTES"/>
> <xsl:template match="table">
>   <xsl:apply-templates/>
> </xsl:template>
> <xsl:template match="tgroup">
>   <table>
>     <xsl:if test="../@pgwide=1">
>       <xsl:attribute name="width">100%</xsl:attribute>
>     </xsl:if>
>     <xsl:attribute name="cellpadding">6</xsl:attribute>
>     <xsl:choose>
>       <xsl:when test="../@frame='all'">
>         <xsl:attribute name="border">1</xsl:attribute>
>       </xsl:when>
>       <xsl:when test="../@frame='none'">
>          <xsl:attribute name="border">0</xsl:attribute>
>       </xsl:when>
>       <xsl:when test="../@frame='bottom'">
>          <xsl:attribute name="border">1</xsl:attribute>
>       </xsl:when>
>       <xsl:when test="../@frame='top'">
>          <xsl:attribute name="border">1</xsl:attribute>
>       </xsl:when>
>       <xsl:when test="../@frame='sides'">
>          <xsl:attribute name="border">border</xsl:attribute>
>       </xsl:when>
>       <xsl:when test="../@frame='topbot'">
>          <xsl:attribute name="border">1</xsl:attribute>
>       </xsl:when>
>       <xsl:otherwise>
>         <xsl:attribute name="border">1</xsl:attribute>
>       </xsl:otherwise>
>     </xsl:choose>
>     <xsl:variable name="colgroup">
>       <colgroup>
>         <xsl:call-template name="generate.colgroup">
>           <xsl:with-param name="cols" select="@cols"/>
>         </xsl:call-template>
>       </colgroup>
>     </xsl:variable>
>     <xsl:variable name="table.width">
>       <xsl:choose>
>         <xsl:when test="$default.table.width = ''">
>           <xsl:text>100%</xsl:text>
>         </xsl:when>
>         <xsl:otherwise>
>           <xsl:value-of select="$default.table.width"/>
>         </xsl:otherwise>
>       </xsl:choose>
>     </xsl:variable>
>     <xsl:attribute name="width">
>        <xsl:value-of select="$table.width"/>
>     </xsl:attribute>
>     <xsl:copy-of select="$colgroup"/>
>     <xsl:apply-templates/>
>    </table>
>    <xsl:text disable-output-escaping="yes">&lt;br/&gt;</xsl:text>
>    <xsl:text disable-output-escaping="yes">&lt;br/&gt;</xsl:text>
>   </xsl:template>
> <xsl:template match="colspec"></xsl:template>
> <xsl:template match="spanspec"></xsl:template>
> <xsl:template match="thead|tfoot">
>   <xsl:element name="{name(.)}">
>     <xsl:if test="@align">
>       <xsl:attribute name="align">
>         <xsl:value-of select="@align"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@char">
>       <xsl:attribute name="char">
>         <xsl:value-of select="@char"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@charoff">
>       <xsl:attribute name="charoff">
>         <xsl:value-of select="@charoff"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@valign">
>       <xsl:attribute name="valign">
>         <xsl:value-of select="@valign"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:apply-templates/>
>   </xsl:element>
> </xsl:template>
> <xsl:template match="tbody">
>   <tbody>
>     <xsl:if test="@align">
>       <xsl:attribute name="align">
>         <xsl:value-of select="@align"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@char">
>       <xsl:attribute name="char">
>         <xsl:value-of select="@char"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@charoff">
>       <xsl:attribute name="charoff">
>         <xsl:value-of select="@charoff"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@valign">
>       <xsl:attribute name="valign">
>         <xsl:value-of select="@valign"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:apply-templates/>
>   </tbody>
> </xsl:template>
> <xsl:template match="row">
>   <tr>
>     <xsl:if test="@align">
>       <xsl:attribute name="align">
>         <xsl:value-of select="@align"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@char">
>       <xsl:attribute name="char">
>         <xsl:value-of select="@char"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@charoff">
>       <xsl:attribute name="charoff">
>         <xsl:value-of select="@charoff"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@valign">
>       <xsl:attribute name="valign">
>         <xsl:value-of select="@valign"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:apply-templates/>
>   </tr>
> </xsl:template>
> <xsl:template match="thead/row/entry">
>   <xsl:call-template name="process.cell">
>     <xsl:with-param name="cellgi">th</xsl:with-param>
>   </xsl:call-template>
> </xsl:template>
> <xsl:template match="tbody/row/entry">
>   <xsl:call-template name="process.cell">
>     <xsl:with-param name="cellgi">td</xsl:with-param>
>   </xsl:call-template>
> </xsl:template>
> <xsl:template match="tfoot/row/entry">
>   <xsl:call-template name="process.cell">
>     <xsl:with-param name="cellgi">th</xsl:with-param>
>   </xsl:call-template>
> </xsl:template>
> <xsl:template name="process.cell">
>   <xsl:param name="cellgi">td</xsl:param>
>   <xsl:variable name="empty.cell" select="count(node()) = 0"/>
>   <xsl:variable name="entry.colnum">
>     <xsl:call-template name="entry.colnum"/>
>   </xsl:variable>
>   <xsl:if test="$entry.colnum != ''">
>     <xsl:variable name="prev.entry" select="preceding-sibling::*[1]"/>
>     <xsl:variable name="prev.ending.colnum">
>       <xsl:choose>
>         <xsl:when test="$prev.entry">
>           <xsl:call-template name="entry.ending.colnum">
>             <xsl:with-param name="entry" select="$prev.entry"/>
>           </xsl:call-template>
>         </xsl:when>
>         <xsl:otherwise>0</xsl:otherwise>
>       </xsl:choose>
>     </xsl:variable>
>     
>     <xsl:call-template name="add-empty-entries">
>       <xsl:with-param name="number">
>         <xsl:choose>
>           <xsl:when test="$prev.ending.colnum = ''">0</xsl:when>
>           <xsl:otherwise>
>             <xsl:value-of select="$entry.colnum - $prev.ending.colnum - 1"/>
>           </xsl:otherwise>
>         </xsl:choose>
>       </xsl:with-param>
>     </xsl:call-template>
>   </xsl:if>
>   <xsl:element name="{$cellgi}">
>   <xsl:if test="@spanname">
>       <xsl:variable name="namest"
>       select="ancestor::tgroup/[EMAIL PROTECTED]/@spanname]/@namest"/>
>       <xsl:variable name="nameend"
>       select="ancestor::tgroup/[EMAIL PROTECTED]/@spanname]/@nameend"/>
>       <xsl:variable name="colst"
>       select="ancestor::*[colspec/@colname=$namest]/colspec
> [EMAIL PROTECTED]/@colnum"/>
>       <xsl:variable name="colend" 
>       select="ancestor::*[colspec/@colname=$nameend]/colspec
> [EMAIL PROTECTED]/@colnum"/>
>       <xsl:attribute name="colspan"><xsl:value-of select="number($colend) - 
> number($colst) + 1"/></xsl:attribute>
>   </xsl:if>
>     <xsl:if test="@morerows">
>       <xsl:attribute name="rowspan">
>         <xsl:value-of select="@morerows+1"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@namest">
>       <xsl:attribute name="colspan">
>         <xsl:call-template name="calculate.colspan"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@align">
>       <xsl:attribute name="align">
>         <xsl:value-of select="@align"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@char">
>       <xsl:attribute name="char">
>         <xsl:value-of select="@char"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@charoff">
>       <xsl:attribute name="charoff">
>         <xsl:value-of select="@charoff"/>
>       </xsl:attribute>
>     </xsl:if>
>     <xsl:if test="@valign">
>       <xsl:attribute name="valign">
>         <xsl:value-of select="@valign"/>
>       </xsl:attribute>
>     </xsl:if>
>       <xsl:if test="@rowsep='1'">
>               <xsl:attribute name="style">border-bottom:thin solid 
> black</xsl:attribute>
>       </xsl:if>
>     <xsl:if test="not(preceding-sibling::*)
>                   and ancestor::row/@id">
>       <a name="{ancestor::row/@id}"/>
>     </xsl:if>
>     <xsl:if test="@id">
>       <a name="[EMAIL PROTECTED]"/>
>     </xsl:if>
>     <xsl:choose>
>       <xsl:when test="$empty.cell">
>         <xsl:text>&#160;</xsl:text>
>       </xsl:when>
>       <xsl:otherwise>
>         <xsl:apply-templates/>
>       </xsl:otherwise>
>     </xsl:choose>
>   </xsl:element>
> </xsl:template>
> <xsl:template name="add-empty-entries">
>   <xsl:param name="number" select="'0'"/>
>   <xsl:choose>
>     <xsl:when test="$number &lt;= 0"></xsl:when>
>     <xsl:otherwise>
>       <td>&#160;</td>
>       <xsl:call-template name="add-empty-entries">
>         <xsl:with-param name="number" select="$number - 1"/>
>       </xsl:call-template>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="entry.colnum">
>   <xsl:param name="entry" select="."/>
>   <xsl:choose>
>     <xsl:when test="$entry/@colname">
>       <xsl:variable name="colname" select="$entry/@colname"/>
>       <xsl:variable name="colspec"
>       select="$entry/ancestor::tgroup/[EMAIL PROTECTED]"/>
>       <xsl:call-template name="colspec.colnum">
>         <xsl:with-param name="colspec" select="$colspec"/>
>       </xsl:call-template>
>     </xsl:when>
>     <xsl:when test="$entry/@namest">
>       <xsl:variable name="namest" select="$entry/@namest"/>
>       <xsl:variable name="colspec"
>       select="$entry/ancestor::tgroup/[EMAIL PROTECTED]"/>
>       <xsl:call-template name="colspec.colnum">
>         <xsl:with-param name="colspec" select="$colspec"/>
>       </xsl:call-template>
>     </xsl:when>
>     <xsl:when test="count($entry/preceding-sibling::*) = 0">1</xsl:when>
>     <xsl:otherwise>
>       <xsl:variable name="pcol">
>         <xsl:call-template name="entry.ending.colnum">
>           <xsl:with-param name="entry" 
> select="$entry/preceding-sibling::*[1]"/>
>         </xsl:call-template>
>       </xsl:variable>
>       <xsl:value-of select="$pcol + 1"/>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="entry.ending.colnum">
>   <xsl:param name="entry" select="."/>
>    <xsl:choose>
>     <xsl:when test="$entry/@colname">
>       <xsl:variable name="colname" select="$entry/@colname"/>
>       <xsl:variable name="colspec" select="$entry/ancestor::tgroup/colspec
> [EMAIL PROTECTED]"/>
>       <xsl:call-template name="colspec.colnum">
>         <xsl:with-param name="colspec" select="$colspec"/>
>       </xsl:call-template>
>     </xsl:when>
>     
>     <xsl:when test="$entry/@nameend">
>       <xsl:variable name="nameend" select="$entry/@nameend"/>
>       <xsl:variable name="colspec" select="$entry/ancestor::tgroup/colspec
> [EMAIL PROTECTED]"/>
>       <xsl:call-template name="colspec.colnum">
>         <xsl:with-param name="colspec" select="$colspec"/>
>       </xsl:call-template>
>     </xsl:when>
>     <xsl:when test="count($entry/preceding-sibling::*) = 0">1</xsl:when>
>     
>     <xsl:otherwise>
>       <xsl:variable name="pcol">
>         <xsl:call-template name="entry.ending.colnum">
>           <xsl:with-param name="entry" 
> select="$entry/preceding-sibling::*[1]"/>
>         </xsl:call-template>
>        </xsl:variable>
>       <xsl:value-of select="$pcol + 1"/>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="colspec.colnum">
>   <xsl:param name="colspec" select="."/>
>   <xsl:choose>
>     <xsl:when test="$colspec/@colnum">
>       <xsl:value-of select="$colspec/@colnum"/>
>     </xsl:when>
>     <xsl:when test="$colspec/preceding-sibling::colspec">
>    <!--
>       <xsl:variable name="prec.colspec.colnum">
>         <xsl:call-template name="colspec.colnum">
>           <xsl:with-param name="colspec" select="$colspec/preceding-
> sibling::colspec[1]"/>
>         </xsl:call-template>
>       </xsl:variable>
>     -->  
>       
>       <xsl:value-of select="count($colspec/preceding-sibling::colspec) + 1"/>
>     </xsl:when>
>     <xsl:otherwise>1</xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="generate.colgroup">
>   <xsl:param name="cols" select="1"/>
>   <xsl:param name="count" select="1"/>
>   <xsl:choose>
>     <xsl:when test="$count>$cols"></xsl:when>
>     <xsl:otherwise>
>       <xsl:call-template name="generate.col">
>         <xsl:with-param name="countcol" select="$count"/>
>       </xsl:call-template>
>       <xsl:call-template name="generate.colgroup">
>         <xsl:with-param name="cols" select="$cols"/>
>         <xsl:with-param name="count" select="$count+1"/>
>       </xsl:call-template>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="generate.col">
>   <xsl:param name="countcol">1</xsl:param>
>   <xsl:param name="colspecs" select="./colspec"/>
>   <xsl:param name="count">1</xsl:param>
>   <xsl:param name="colnum">1</xsl:param>
>   <xsl:choose>
>     <xsl:when test="$count>count($colspecs)">
>       <xsl:text disable-output-escaping="yes">&lt;col/&gt;</xsl:text>
>     </xsl:when>
>     <xsl:otherwise>
>       <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
>       <xsl:variable name="colspec.colnum">
>         <xsl:choose>
>           <xsl:when test="$colspec/@colnum">
>             <xsl:value-of select="$colspec/@colnum"/>
>           </xsl:when>
>           <xsl:otherwise>
>             <xsl:value-of select="$colnum"/>
>           </xsl:otherwise>
>         </xsl:choose>
>       </xsl:variable>
>       <xsl:choose>
>         <xsl:when test="$colspec.colnum=$countcol">
>           <col>
>             <xsl:if test="$colspec/@align">
>               <xsl:attribute name="align">
>                 <xsl:value-of select="$colspec/@align"/>
>               </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="$colspec/@char">
>               <xsl:attribute name="char">
>                 <xsl:value-of select="$colspec/@char"/>
>               </xsl:attribute>
>             </xsl:if>
>             <xsl:if test="$colspec/@charoff">
>               <xsl:attribute name="charoff">
>                 <xsl:value-of select="$colspec/@charoff"/>
>               </xsl:attribute>
>             </xsl:if>
>            </col>
>         </xsl:when>
>         <xsl:otherwise>
>           <xsl:call-template name="generate.col">
>             <xsl:with-param name="countcol" select="$countcol"/>
>             <xsl:with-param name="colspecs" select="$colspecs"/>
>             <xsl:with-param name="count" select="$count+1"/>
>             <xsl:with-param name="colnum">
>               <xsl:choose>
>                 <xsl:when test="$colspec/@colnum">
>                   <xsl:value-of select="$colspec/@colnum + 1"/>
>                 </xsl:when>
>                 <xsl:otherwise>
>                   <xsl:value-of select="$colnum + 1"/>
>                 </xsl:otherwise>
>               </xsl:choose>
>             </xsl:with-param>
>            </xsl:call-template>
>         </xsl:otherwise>
>       </xsl:choose>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="colspec.colwidth">
>   <!-- when this macro is called, the current context must be an entry -->
>   <xsl:param name="colname"></xsl:param>
>   <!-- .. = row, ../.. = thead|tbody, ../../.. = tgroup -->
>   <xsl:param name="colspecs" select="../../../../tgroup/colspec"/>
>   <xsl:param name="count">1</xsl:param>
>   <xsl:choose>
>     <xsl:when test="$count>count($colspecs)"></xsl:when>
>     <xsl:otherwise>
>       <xsl:variable name="colspec" select="$colspecs[$count=position()]"/>
>       <xsl:choose>
>         <xsl:when test="$colspec/@colname=$colname">
>           <xsl:value-of select="$colspec/@colwidth"/>
>         </xsl:when>
>         <xsl:otherwise>
>           <xsl:call-template name="colspec.colwidth">
>             <xsl:with-param name="colname" select="$colname"/>
>             <xsl:with-param name="colspecs" select="$colspecs"/>
>             <xsl:with-param name="count" select="$count+1"/>
>           </xsl:call-template>
>         </xsl:otherwise>
>       </xsl:choose>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
> <xsl:template name="calculate.colspan">
>   <xsl:param name="entry" select="."/>
>   <xsl:variable name="namest" select="$entry/@namest"/>
>   <xsl:variable name="nameend" select="$entry/@nameend"/>
>   <xsl:variable name="scol">
>     <xsl:call-template name="colspec.colnum">
>       <xsl:with-param name="colspec" select="$entry/ancestor::tgroup/colspec
> [EMAIL PROTECTED]"/>
>     </xsl:call-template>
>   </xsl:variable>
>   <xsl:variable name="ecol">
>     <xsl:call-template name="colspec.colnum">
>       <xsl:with-param name="colspec" select="$entry/ancestor::tgroup/colspec
> [EMAIL PROTECTED]"/>
>     </xsl:call-template>
>   </xsl:variable>
>   <xsl:value-of select="$ecol - $scol + 1"/>
> </xsl:template>
> </xsl:stylesheet>
> ----------------------- table1.xml
> <?xml version="1.0"?>
> <!DOCTYPE erf[
> ]>
> <table
> frame="none"
> tabstyle="squeeze5"
> ><tgroup
> cols="19"
> rowsep="0"
> align="left"
> colsep="0"
> ><colspec
> colname="1"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="2"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="3"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="4"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="5"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="6"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="7"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="8"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="9"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="10"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="11"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="12"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="13"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="14"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="15"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="16"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="17"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="18"
> colwidth="50pt"
> align="left"
> ></colspec><colspec
> colname="19"
> colwidth="79pt"
> align="left"
> ></colspec><tbody
> valign="top"
> ><row
> ><entry
> align="right"
> ></entry><entry
> align="right"
> >1989</entry><entry
> align="right"
> >1990</entry><entry
> align="right"
> >1991</entry><entry
> align="right"
> >1992</entry><entry
> align="right"
> >1993</entry><entry
> align="right"
> >1994</entry><entry
> align="right"
> >1995</entry><entry
> align="right"
> >1996</entry><entry
> align="right"
> >1997</entry><entry
> align="right"
> >1998</entry><entry
> align="right"
> >1999</entry><entry
> align="right"
> >2000</entry><entry
> align="right"
> >2001</entry><entry
> align="right"
> >2002</entry><entry
> align="right"
> >2003</entry><entry
> align="right"
> >2004</entry><entry
> align="right"
> >2005</entry><entry
> align="right"
> >Total</entry></row><row
> ><entry
> align="justify"
> >January</entry><entry
> align="right"
> >532</entry><entry
> align="right"
> >35345</entry><entry
> align="right"
> >3454</entry><entry
> align="right"
> >6436</entry><entry
> align="right"
> >153</entry><entry
> align="right"
> >63474</entry><entry
> align="right"
> >23423</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >3573</entry><entry
> align="right"
> >534</entry><entry
> align="right"
> >886</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >899567</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >1139055</entry></row><row
> ><entry
> align="justify"
> >February</entry><entry
> align="right"
> >54245</entry><entry
> align="right"
> >3453</entry><entry
> align="right"
> >345</entry><entry
> align="right"
> >670</entry><entry
> align="right"
> >14452</entry><entry
> align="right"
> >57</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >625</entry><entry
> align="right"
> >864</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >557775</entry></row><row
> ><entry
> align="justify"
> >March</entry><entry
> align="right"
> >45224</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >34543</entry><entry
> align="right"
> >470</entry><entry
> align="right"
> >15232</entry><entry
> align="right"
> >575</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >3534</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >121330</entry></row><row
> ><entry
> align="justify"
> >April</entry><entry
> align="right"
> >245</entry><entry
> align="right"
> >770</entry><entry
> align="right"
> >7652</entry><entry
> align="right"
> >886</entry><entry
> align="right"
> >1400</entry><entry
> align="right"
> >7565</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >435</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >34202</entry></row><row
> ><entry
> align="justify"
> >May</entry><entry
> align="right"
> >534</entry><entry
> align="right"
> >64564</entry><entry
> align="right"
> >175</entry><entry
> align="right"
> >864</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >5645</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >99567</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >276673</entry></row><row
> ><entry
> align="justify"
> >June</entry><entry
> align="right"
> >5498</entry><entry
> align="right"
> >987</entry><entry
> align="right"
> >1457</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >576</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >34635</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >301565</entry></row><row
> ><entry
> align="justify"
> >July</entry><entry
> align="right"
> >885</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >6473</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >232</entry><entry
> align="right"
> >3456</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >3535</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >278289</entry></row><row
> ><entry
> align="justify"
> >August</entry><entry
> align="right"
> >4543</entry><entry
> align="right"
> >6546</entry><entry
> align="right"
> >273</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >3535</entry><entry
> align="right"
> >5399</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >34635</entry><entry
> align="right"
> >475277</entry></row><row
> ><entry
> align="justify"
> >September</entry><entry
> align="right"
> >7454</entry><entry
> align="right"
> >6346</entry><entry
> align="right"
> >27438</entry><entry
> align="right"
> >34563</entry><entry
> align="right"
> >3532</entry><entry
> align="right"
> >3534</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >232</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >34635</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >34635</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >181956</entry></row><row
> ><entry
> align="justify"
> >October</entry><entry
> align="right"
> >858</entry><entry
> align="right"
> >3453</entry><entry
> align="right"
> >366</entry><entry
> align="right"
> >345</entry><entry
> align="right"
> >23411</entry><entry
> align="right"
> >3454</entry><entry
> align="right"
> >435</entry><entry
> align="right"
> >3543</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >23446</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >2465</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >533573</entry></row><row
> ><entry
> align="justify"
> >November</entry><entry
> align="right"
> >9058</entry><entry
> align="right"
> >432</entry><entry
> align="right"
> >46452</entry><entry
> align="right"
> >367</entry><entry
> align="right"
> >1352</entry><entry
> align="right"
> >2432</entry><entry
> align="right"
> >6442</entry><entry
> align="right"
> >357</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >776453</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >243</entry><entry
> align="right"
> >234</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >1234</entry><entry
> align="right"
> >1020435</entry></row><row
> ><entry
> align="justify"
> >December</entry><entry
> align="right"
> >9585</entry><entry
> align="right"
> >543</entry><entry
> align="right"
> >235</entry><entry
> align="right"
> >867</entry><entry
> align="right"
> >32444</entry><entry
> align="right"
> >23423</entry><entry
> align="right"
> >234634</entry><entry
> align="right"
> >453</entry><entry
> align="right"
> >3452</entry><entry
> align="right"
> >54646</entry><entry
> align="right"
> >353</entry><entry
> align="right"
> >84564</entry><entry
> align="right"
> >4564</entry><entry
> align="right"
> >99576</entry><entry
> align="right"
> >34635</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >1452</entry><entry
> align="right"
> >586878</entry></row><row
> ><entry
> align="justify"
> >Total</entry><entry
> align="right"
> >140650</entry><entry
> align="right"
> >125335</entry><entry
> align="right"
> >130854</entry><entry
> align="right"
> >51813</entry><entry
> align="right"
> >100422</entry><entry
> align="right"
> >121584</entry><entry
> align="right"
> >366295</entry><entry
> align="right"
> >340140</entry><entry
> align="right"
> >189210</entry><entry
> align="right"
> >988808</entry><entry
> align="right"
> >23850</entry><entry
> align="right"
> >201274</entry><entry
> align="right"
> >375353</entry><entry
> align="right"
> >1135533</entry><entry
> align="right"
> >375355</entry><entry
> align="right"
> >499124</entry><entry
> align="right"
> >375357</entry><entry
> align="right"
> >5507008</entry></row></tbody></tgroup></table>

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to