<?xml version="1.0"?>
<!--
   ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
   ====================================================================
-->
<record id="0x1003" name="Series" excel-record-id="SERIES" package="org.apache.poi.hssf.record">
    <suffix>Record</suffix>
    <extends>Record</extends>
    <description>The series record describes the overall data for a series.</description>
    <author>Glen Stampoultzis (glens at apache.org)</author>
    <fields>
        <field type="int" size="2" name="category data type">
            <const name="dates" value="0"/>
            <const name="numeric" value="1"/>
            <const name="sequence" value="2"/>
            <const name="text" value="3"/>
        </field>
        <field type="int" size="2" name="values data type">
            <const name="dates" value="0"/>
            <const name="numeric" value="1"/>
            <const name="sequence" value="2"/>
            <const name="text" value="3"/>
        </field>
        <field type="int" size="2" name="num categories"/>
        <field type="int" size="2" name="num values"/>
        <field type="int" size="2" name="bubble series type">
            <const name="dates" value="0"/>
            <const name="numeric" value="1"/>
            <const name="sequence" value="2"/>
            <const name="text" value="3"/>
        </field>
        <field type="int" size="2" name="num bubble values"/>
    </fields>
</record>
