Support for continued NameRecords, see bugzilla 50244

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1049202 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Yegor Kozlov 2010-12-14 18:17:59 +00:00
parent 63bc348d04
commit 326cf56aa7
4 changed files with 641 additions and 10 deletions

View File

@ -34,6 +34,7 @@
<changes> <changes>
<release version="3.8-beta1" date="2010-??-??"> <release version="3.8-beta1" date="2010-??-??">
<action dev="poi-developers" type="add">50244 - Support for continued NameRecords</action>
<action dev="POI-DEVELOPERS" type="fix">50416 - Correct shifting of the first or last row in a sheet by multiple rows</action> <action dev="POI-DEVELOPERS" type="fix">50416 - Correct shifting of the first or last row in a sheet by multiple rows</action>
<action dev="POI-DEVELOPERS" type="fix">50440 - Support evaluating formulas with newlines in them, which XSSF may have (but HSSF may not)</action> <action dev="POI-DEVELOPERS" type="fix">50440 - Support evaluating formulas with newlines in them, which XSSF may have (but HSSF may not)</action>
<action dev="POI-DEVELOPERS" type="add">Added inline string support to XSSF EventModel</action> <action dev="POI-DEVELOPERS" type="add">Added inline string support to XSSF EventModel</action>

View File

@ -17,14 +17,13 @@
package org.apache.poi.hssf.record; package org.apache.poi.hssf.record;
import org.apache.poi.hssf.record.cont.ContinuableRecord;
import org.apache.poi.hssf.record.cont.ContinuableRecordOutput;
import org.apache.poi.ss.formula.ptg.Area3DPtg; import org.apache.poi.ss.formula.ptg.Area3DPtg;
import org.apache.poi.ss.formula.ptg.Ptg; import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.ss.formula.ptg.Ref3DPtg; import org.apache.poi.ss.formula.ptg.Ref3DPtg;
import org.apache.poi.ss.formula.Formula; import org.apache.poi.ss.formula.Formula;
import org.apache.poi.util.HexDump; import org.apache.poi.util.*;
import org.apache.poi.util.LittleEndianInput;
import org.apache.poi.util.LittleEndianOutput;
import org.apache.poi.util.StringUtil;
/** /**
* Title: DEFINEDNAME Record (0x0018) <p/> * Title: DEFINEDNAME Record (0x0018) <p/>
@ -35,7 +34,7 @@ import org.apache.poi.util.StringUtil;
* @author Glen Stampoultzis (glens at apache.org) * @author Glen Stampoultzis (glens at apache.org)
* @author Petr Udalau - added method setFunction(boolean) * @author Petr Udalau - added method setFunction(boolean)
*/ */
public final class NameRecord extends StandardRecord { public final class NameRecord extends ContinuableRecord {
public final static short sid = 0x0018; public final static short sid = 0x0018;
/**Included for completeness sake, not implemented */ /**Included for completeness sake, not implemented */
public final static byte BUILTIN_CONSOLIDATE_AREA = 1; public final static byte BUILTIN_CONSOLIDATE_AREA = 1;
@ -342,8 +341,12 @@ public final class NameRecord extends StandardRecord {
return field_17_status_bar_text; return field_17_status_bar_text;
} }
/**
public void serialize(LittleEndianOutput out) { * NameRecord can span into
*
* @param out a data output stream
*/
public void serialize(ContinuableRecordOutput out) {
int field_7_length_custom_menu = field_14_custom_menu_text.length(); int field_7_length_custom_menu = field_14_custom_menu_text.length();
int field_8_length_description_text = field_15_description_text.length(); int field_8_length_description_text = field_15_description_text.length();
@ -430,7 +433,13 @@ public final class NameRecord extends StandardRecord {
* @param ris the RecordInputstream to read the record from * @param ris the RecordInputstream to read the record from
*/ */
public NameRecord(RecordInputStream ris) { public NameRecord(RecordInputStream ris) {
LittleEndianInput in = ris; // YK: Formula data can span into continue records, for example,
// when containing a large array of strings. See Bugzilla 50244
// read all remaining bytes and wrap into a LittleEndianInput
byte[] remainder = ris.readAllContinuedRemainder();
LittleEndianInput in = new LittleEndianByteArrayInputStream(remainder);
field_1_option_flag = in.readShort(); field_1_option_flag = in.readShort();
field_2_keyboard_shortcut = in.readByte(); field_2_keyboard_shortcut = in.readByte();
int field_3_length_name_text = in.readUByte(); int field_3_length_name_text = in.readUByte();

View File

@ -204,10 +204,22 @@ public final class ContinuableRecordOutput implements LittleEndianOutput {
writeContinueIfRequired(b.length); writeContinueIfRequired(b.length);
_ulrOutput.write(b); _ulrOutput.write(b);
} }
public void write(byte[] b, int offset, int len) { public void write(byte[] b, int offset, int len) {
writeContinueIfRequired(len);
_ulrOutput.write(b, offset, len); int i=0;
while(true) {
int nWritableChars = Math.min(len - i, _ulrOutput.getAvailableSpace() / 1);
for ( ; nWritableChars > 0; nWritableChars--) {
_ulrOutput.writeByte(b[offset + i++]);
} }
if (i >= len) {
break;
}
writeContinue();
}
}
public void writeByte(int v) { public void writeByte(int v) {
writeContinueIfRequired(1); writeContinueIfRequired(1);
_ulrOutput.writeByte(v); _ulrOutput.writeByte(v);

View File

@ -19,6 +19,9 @@ package org.apache.poi.hssf.record;
import org.apache.poi.hssf.usermodel.HSSFName; import org.apache.poi.hssf.usermodel.HSSFName;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.formula.ptg.ArrayPtg;
import org.apache.poi.ss.formula.ptg.Ptg;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.HexRead; import org.apache.poi.util.HexRead;
import junit.framework.AssertionFailedError; import junit.framework.AssertionFailedError;
@ -81,4 +84,610 @@ public final class TestNameRecord extends TestCase {
name.setRefersToFormula("5*6"); name.setRefersToFormula("5*6");
assertEquals("5*6", name.getRefersToFormula()); assertEquals("5*6", name.getRefersToFormula());
} }
/**
* A NameRecord followed by a ContinueRecord. See Bugzilla 50244
*/
public void test50244(){
String record_0x0018 =
" 18 00 " +
"21 1E 00 00 00 11 08 00 00 00 03 00 00 00 00 00 " +
"00 77 44 61 74 61 47 72 75 70 70 65 53 65 72 69 " +
"65 2E 60 00 B7 02 0C 00 57 03 00 B7 02 02 09 00 " +
"00 31 2E 54 32 30 2E 30 30 31 02 09 00 00 31 2E " +
"54 32 30 2E 30 30 31 02 09 00 00 31 2E 54 32 30 " +
"2E 30 30 31 02 09 00 00 31 2E 54 32 30 2E 30 30 " +
"32 02 09 00 00 31 2E 54 32 30 2E 30 30 32 02 09 " +
"00 00 31 2E 54 32 30 2E 30 30 32 02 09 00 00 31 " +
"2E 54 32 30 2E 30 30 33 02 09 00 00 31 2E 54 32 " +
"30 2E 30 30 33 02 09 00 00 31 2E 54 32 30 2E 30 " +
"30 33 02 09 00 00 31 2E 54 32 30 2E 30 31 33 02 " +
"09 00 00 31 2E 54 32 30 2E 30 31 33 02 09 00 00 " +
"31 2E 54 32 30 2E 30 31 33 02 09 00 00 31 2E 54 " +
"32 30 2E 30 31 34 02 09 00 00 31 2E 54 32 30 2E " +
"30 31 34 02 09 00 00 31 2E 54 32 30 2E 30 31 34 " +
"02 09 00 00 31 2E 54 32 30 2E 30 31 35 02 09 00 " +
"00 31 2E 54 32 30 2E 30 31 35 02 09 00 00 31 2E " +
"54 32 30 2E 30 31 35 02 09 00 00 31 2E 54 32 30 " +
"2E 30 32 35 02 09 00 00 31 2E 54 32 30 2E 30 32 " +
"35 02 09 00 00 31 2E 54 32 30 2E 30 32 35 02 09 " +
"00 00 31 2E 54 32 30 2E 30 32 36 02 09 00 00 31 " +
"2E 54 32 30 2E 30 32 36 02 09 00 00 31 2E 54 32 " +
"30 2E 30 32 36 02 09 00 00 31 2E 54 32 30 2E 30 " +
"32 37 02 09 00 00 31 2E 54 32 30 2E 30 32 37 02 " +
"09 00 00 31 2E 54 32 30 2E 30 32 37 02 09 00 00 " +
"31 2E 54 32 30 2E 30 33 37 02 09 00 00 31 2E 54 " +
"32 30 2E 30 33 37 02 09 00 00 31 2E 54 32 30 2E " +
"30 33 37 02 09 00 00 31 2E 54 32 30 2E 30 33 38 " +
"02 09 00 00 31 2E 54 32 30 2E 30 33 38 02 09 00 " +
"00 31 2E 54 32 30 2E 30 33 38 02 09 00 00 31 2E " +
"54 32 30 2E 30 33 39 02 09 00 00 31 2E 54 32 30 " +
"2E 30 33 39 02 09 00 00 31 2E 54 32 30 2E 30 33 " +
"39 02 09 00 00 31 2E 54 32 30 2E 30 34 39 02 09 " +
"00 00 31 2E 54 32 30 2E 30 34 39 02 09 00 00 31 " +
"2E 54 32 30 2E 30 34 39 02 09 00 00 31 2E 54 32 " +
"30 2E 30 35 30 02 09 00 00 31 2E 54 32 30 2E 30 " +
"35 30 02 09 00 00 31 2E 54 32 30 2E 30 35 30 02 " +
"09 00 00 31 2E 54 32 30 2E 30 35 31 02 09 00 00 " +
"31 2E 54 32 30 2E 30 35 31 02 09 00 00 31 2E 54 " +
"32 30 2E 30 35 31 02 09 00 00 31 2E 54 32 30 2E " +
"30 36 31 02 09 00 00 31 2E 54 32 30 2E 30 36 31 " +
"02 09 00 00 31 2E 54 32 30 2E 30 36 31 02 09 00 " +
"00 31 2E 54 32 30 2E 30 36 32 02 09 00 00 31 2E " +
"54 32 30 2E 30 36 32 02 09 00 00 31 2E 54 32 30 " +
"2E 30 36 32 02 09 00 00 31 2E 54 32 30 2E 30 36 " +
"33 02 09 00 00 31 2E 54 32 30 2E 30 36 33 02 09 " +
"00 00 31 2E 54 32 30 2E 30 36 33 02 09 00 00 31 " +
"2E 54 32 30 2E 30 37 33 02 09 00 00 31 2E 54 32 " +
"30 2E 30 37 33 02 09 00 00 31 2E 54 32 30 2E 30 " +
"37 33 02 09 00 00 31 2E 54 32 30 2E 30 37 34 02 " +
"09 00 00 31 2E 54 32 30 2E 30 37 34 02 09 00 00 " +
"31 2E 54 32 30 2E 30 37 34 02 09 00 00 31 2E 54 " +
"32 30 2E 30 37 35 02 09 00 00 31 2E 54 32 30 2E " +
"30 37 35 02 09 00 00 31 2E 54 32 30 2E 30 37 35 " +
"02 09 00 00 31 2E 54 32 30 2E 30 38 35 02 09 00 " +
"00 31 2E 54 32 30 2E 30 38 35 02 09 00 00 31 2E " +
"54 32 30 2E 30 38 35 02 09 00 00 31 2E 54 32 30 " +
"2E 30 38 36 02 09 00 00 31 2E 54 32 30 2E 30 38 " +
"36 02 09 00 00 31 2E 54 32 30 2E 30 38 36 02 09 " +
"00 00 31 2E 54 32 30 2E 30 38 37 02 09 00 00 31 " +
"2E 54 32 30 2E 30 38 37 02 09 00 00 31 2E 54 32 " +
"30 2E 30 38 37 02 09 00 00 31 2E 54 32 30 2E 30 " +
"39 37 02 09 00 00 31 2E 54 32 30 2E 30 39 37 02 " +
"09 00 00 31 2E 54 32 30 2E 30 39 37 02 09 00 00 " +
"31 2E 54 32 30 2E 30 39 38 02 09 00 00 31 2E 54 " +
"32 30 2E 30 39 38 02 09 00 00 31 2E 54 32 30 2E " +
"30 39 38 02 09 00 00 31 2E 54 32 30 2E 30 39 39 " +
"02 09 00 00 31 2E 54 32 30 2E 30 39 39 02 09 00 " +
"00 31 2E 54 32 30 2E 30 39 39 02 09 00 00 31 2E " +
"54 32 30 2E 31 30 39 02 09 00 00 31 2E 54 32 30 " +
"2E 31 30 39 02 09 00 00 31 2E 54 32 30 2E 31 30 " +
"39 02 09 00 00 31 2E 54 32 30 2E 31 31 30 02 09 " +
"00 00 31 2E 54 32 30 2E 31 31 30 02 09 00 00 31 " +
"2E 54 32 30 2E 31 31 30 02 09 00 00 31 2E 54 32 " +
"30 2E 31 31 31 02 09 00 00 31 2E 54 32 30 2E 31 " +
"31 31 02 09 00 00 31 2E 54 32 30 2E 31 31 31 02 " +
"09 00 00 31 2E 54 32 30 2E 31 32 31 02 09 00 00 " +
"31 2E 54 32 30 2E 31 32 31 02 09 00 00 31 2E 54 " +
"32 30 2E 31 32 31 02 09 00 00 31 2E 54 32 30 2E " +
"31 32 32 02 09 00 00 31 2E 54 32 30 2E 31 32 32 " +
"02 09 00 00 31 2E 54 32 30 2E 31 32 32 02 09 00 " +
"00 31 2E 54 32 30 2E 31 32 33 02 09 00 00 31 2E " +
"54 32 30 2E 31 32 33 02 09 00 00 31 2E 54 32 30 " +
"2E 31 32 33 02 09 00 00 31 2E 54 32 30 2E 31 33 " +
"33 02 09 00 00 31 2E 54 32 30 2E 31 33 33 02 09 " +
"00 00 31 2E 54 32 30 2E 31 33 33 02 09 00 00 31 " +
"2E 54 32 30 2E 31 33 34 02 09 00 00 31 2E 54 32 " +
"30 2E 31 33 34 02 09 00 00 31 2E 54 32 30 2E 31 " +
"33 34 02 09 00 00 31 2E 54 32 30 2E 31 33 35 02 " +
"09 00 00 31 2E 54 32 30 2E 31 33 35 02 09 00 00 " +
"31 2E 54 32 30 2E 31 33 35 02 09 00 00 31 2E 54 " +
"32 30 2E 31 34 35 02 09 00 00 31 2E 54 32 30 2E " +
"31 34 35 02 09 00 00 31 2E 54 32 30 2E 31 34 35 " +
"02 09 00 00 31 2E 54 32 30 2E 31 34 36 02 09 00 " +
"00 31 2E 54 32 30 2E 31 34 36 02 09 00 00 31 2E " +
"54 32 30 2E 31 34 36 02 09 00 00 31 2E 54 32 30 " +
"2E 31 34 37 02 09 00 00 31 2E 54 32 30 2E 31 34 " +
"37 02 09 00 00 31 2E 54 32 30 2E 31 34 37 02 09 " +
"00 00 31 2E 54 32 30 2E 31 35 37 02 09 00 00 31 " +
"2E 54 32 30 2E 31 35 37 02 09 00 00 31 2E 54 32 " +
"30 2E 31 35 37 02 09 00 00 31 2E 54 32 30 2E 31 " +
"35 38 02 09 00 00 31 2E 54 32 30 2E 31 35 38 02 " +
"09 00 00 31 2E 54 32 30 2E 31 35 38 02 09 00 00 " +
"31 2E 54 32 30 2E 31 35 39 02 09 00 00 31 2E 54 " +
"32 30 2E 31 35 39 02 09 00 00 31 2E 54 32 30 2E " +
"31 35 39 02 09 00 00 31 2E 54 32 30 2E 31 36 39 " +
"02 09 00 00 31 2E 54 32 30 2E 31 36 39 02 09 00 " +
"00 31 2E 54 32 30 2E 31 36 39 02 09 00 00 31 2E " +
"54 32 30 2E 31 37 30 02 09 00 00 31 2E 54 32 30 " +
"2E 31 37 30 02 09 00 00 31 2E 54 32 30 2E 31 37 " +
"30 02 09 00 00 31 2E 54 32 30 2E 31 37 31 02 09 " +
"00 00 31 2E 54 32 30 2E 31 37 31 02 09 00 00 31 " +
"2E 54 32 30 2E 31 37 31 02 09 00 00 31 2E 54 36 " +
"30 2E 30 30 39 02 09 00 00 31 2E 54 36 30 2E 30 " +
"30 39 02 09 00 00 31 2E 54 36 30 2E 30 30 39 02 " +
"09 00 00 31 2E 54 36 30 2E 30 31 30 02 09 00 00 " +
"31 2E 54 36 30 2E 30 31 30 02 09 00 00 31 2E 54 " +
"36 30 2E 30 31 30 02 09 00 00 31 2E 54 36 30 2E " +
"30 31 31 02 09 00 00 31 2E 54 36 30 2E 30 31 31 " +
"02 09 00 00 31 2E 54 36 30 2E 30 31 31 02 09 00 " +
"00 31 2E 54 36 30 2E 30 32 31 02 09 00 00 31 2E " +
"54 36 30 2E 30 32 31 02 09 00 00 31 2E 54 36 30 " +
"2E 30 32 31 02 09 00 00 31 2E 54 36 30 2E 30 32 " +
"32 02 09 00 00 31 2E 54 36 30 2E 30 32 32 02 09 " +
"00 00 31 2E 54 36 30 2E 30 32 32 02 09 00 00 31 " +
"2E 54 36 30 2E 30 32 33 02 09 00 00 31 2E 54 36 " +
"30 2E 30 32 33 02 09 00 00 31 2E 54 36 30 2E 30 " +
"32 33 02 09 00 00 31 2E 54 36 30 2E 30 33 33 02 " +
"09 00 00 31 2E 54 36 30 2E 30 33 33 02 09 00 00 " +
"31 2E 54 36 30 2E 30 33 33 02 09 00 00 31 2E 54 " +
"36 30 2E 30 33 34 02 09 00 00 31 2E 54 36 30 2E " +
"30 33 34 02 09 00 00 31 2E 54 36 30 2E 30 33 34 " +
"02 09 00 00 31 2E 54 36 30 2E 30 33 35 02 09 00 " +
"00 31 2E 54 36 30 2E 30 33 35 02 09 00 00 31 2E " +
"54 36 30 2E 30 33 35 02 09 00 00 31 2E 54 36 30 " +
"2E 30 34 35 02 09 00 00 31 2E 54 36 30 2E 30 34 " +
"35 02 09 00 00 31 2E 54 36 30 2E 30 34 35 02 09 " +
"00 00 31 2E 54 36 30 2E 30 34 36 02 09 00 00 31 " +
"2E 54 36 30 2E 30 34 36 02 09 00 00 31 2E 54 36 " +
"30 2E 30 34 36 02 09 00 00 31 2E 54 36 30 2E 30 " +
"34 37 02 09 00 00 31 2E 54 36 30 2E 30 34 37 02 " +
"09 00 00 31 2E 54 36 30 2E 30 34 37 02 09 00 00 " +
"31 2E 54 36 30 2E 30 35 37 02 09 00 00 31 2E 54 " +
"36 30 2E 30 35 37 02 09 00 00 31 2E 54 36 30 2E " +
"30 35 37 02 09 00 00 31 2E 54 36 30 2E 30 35 38 " +
"02 09 00 00 31 2E 54 36 30 2E 30 35 38 02 09 00 " +
"00 31 2E 54 36 30 2E 30 35 38 02 09 00 00 31 2E " +
"54 36 30 2E 30 35 39 02 09 00 00 31 2E 54 36 30 " +
"2E 30 35 39 02 09 00 00 31 2E 54 36 30 2E 30 35 " +
"39 02 09 00 00 31 2E 54 36 30 2E 30 36 30 02 09 " +
"00 00 31 2E 54 36 30 2E 30 36 30 02 09 00 00 31 " +
"2E 54 36 30 2E 30 36 30 02 09 00 00 31 2E 54 36 " +
"30 2E 30 35 30 02 09 00 00 31 2E 54 36 30 2E 30 " +
"35 30 02 09 00 00 31 2E 54 36 30 2E 30 35 30 02 " +
"09 00 00 31 2E 54 36 30 2E 30 34 39 02 09 00 00 " +
"31 2E 54 36 30 2E 30 34 39 02 09 00 00 31 2E 54 " +
"36 30 2E 30 34 39 02 09 00 00 31 2E 54 36 30 2E " +
"30 34 38 02 09 00 00 31 2E 54 36 30 2E 30 34 38 " +
"02 09 00 00 31 2E 54 36 30 2E 30 34 38 02 09 00 " +
"00 31 2E 54 36 30 2E 30 33 38 02 09 00 00 31 2E " +
"54 36 30 2E 30 33 38 02 09 00 00 31 2E 54 36 30 " +
"2E 30 33 38 02 09 00 00 31 2E 54 36 30 2E 30 33 " +
"37 02 09 00 00 31 2E 54 36 30 2E 30 33 37 02 09 " +
"00 00 31 2E 54 36 30 2E 30 33 37 02 09 00 00 31 " +
"2E 54 36 30 2E 30 33 36 02 09 00 00 31 2E 54 36 " +
"30 2E 30 33 36 02 09 00 00 31 2E 54 36 30 2E 30 " +
"33 36 02 09 00 00 31 2E 54 36 30 2E 30 32 36 02 " +
"09 00 00 31 2E 54 36 30 2E 30 32 36 02 09 00 00 " +
"31 2E 54 36 30 2E 30 32 36 02 09 00 00 31 2E 54 " +
"36 30 2E 30 32 35 02 09 00 00 31 2E 54 36 30 2E " +
"30 32 35 02 09 00 00 31 2E 54 36 30 2E 30 32 35 " +
"02 09 00 00 31 2E 54 36 30 2E 30 32 34 02 09 00 " +
"00 31 2E 54 36 30 2E 30 32 34 02 09 00 00 31 2E " +
"54 36 30 2E 30 32 34 02 09 00 00 31 2E 54 36 30 " +
"2E 30 31 34 02 09 00 00 31 2E 54 36 30 2E 30 31 " +
"34 02 09 00 00 31 2E 54 36 30 2E 30 31 34 02 09 " +
"00 00 31 2E 54 36 30 2E 30 31 33 02 09 00 00 31 " +
"2E 54 36 30 2E 30 31 33 02 09 00 00 31 2E 54 36 " +
"30 2E 30 31 33 02 09 00 00 31 2E 54 36 30 2E 30 " +
"31 32 02 09 00 00 31 2E 54 36 30 2E 30 31 32 02 " +
"09 00 00 31 2E 54 36 30 2E 30 31 32 02 09 00 00 " +
"31 2E 54 36 30 2E 30 30 32 02 09 00 00 31 2E 54 " +
"36 30 2E 30 30 32 02 09 00 00 31 2E 54 36 30 2E " +
"30 30 32 02 09 00 00 31 2E 54 36 30 2E 30 30 31 " +
"02 09 00 00 31 2E 54 36 30 2E 30 30 31 02 09 00 " +
"00 31 2E 54 36 30 2E 30 30 31 02 09 00 00 31 2E " +
"54 32 30 2E 31 37 32 02 09 00 00 31 2E 54 32 30 " +
"2E 31 37 32 02 09 00 00 31 2E 54 32 30 2E 31 37 " +
"32 02 09 00 00 31 2E 54 32 30 2E 31 36 32 02 09 " +
"00 00 31 2E 54 32 30 2E 31 36 32 02 09 00 00 31 " +
"2E 54 32 30 2E 31 36 32 02 09 00 00 31 2E 54 32 " +
"30 2E 31 36 31 02 09 00 00 31 2E 54 32 30 2E 31 " +
"36 31 02 09 00 00 31 2E 54 32 30 2E 31 36 31 02 " +
"09 00 00 31 2E 54 32 30 2E 31 36 30 02 09 00 00 " +
"31 2E 54 32 30 2E 31 36 30 02 09 00 00 31 2E 54 " +
"32 30 2E 31 36 30 02 09 00 00 31 2E 54 32 30 2E " +
"31 35 30 02 09 00 00 31 2E 54 32 30 2E 31 35 30 " +
"02 09 00 00 31 2E 54 32 30 2E 31 35 30 02 09 00 " +
"00 31 2E 54 32 30 2E 31 34 39 02 09 00 00 31 2E " +
"54 32 30 2E 31 34 39 02 09 00 00 31 2E 54 32 30 " +
"2E 31 34 39 02 09 00 00 31 2E 54 32 30 2E 31 34 " +
"38 02 09 00 00 31 2E 54 32 30 2E 31 34 38 02 09 " +
"00 00 31 2E 54 32 30 2E 31 34 38 02 09 00 00 31 " +
"2E 54 32 30 2E 31 33 38 02 09 00 00 31 2E 54 32 " +
"30 2E 31 33 38 02 09 00 00 31 2E 54 32 30 2E 31 " +
"33 38 02 09 00 00 31 2E 54 32 30 2E 31 33 37 02 " +
"09 00 00 31 2E 54 32 30 2E 31 33 37 02 09 00 00 " +
"31 2E 54 32 30 2E 31 33 37 02 09 00 00 31 2E 54 " +
"32 30 2E 31 33 36 02 09 00 00 31 2E 54 32 30 2E " +
"31 33 36 02 09 00 00 31 2E 54 32 30 2E 31 33 36 " +
"02 09 00 00 31 2E 54 32 30 2E 31 32 36 02 09 00 " +
"00 31 2E 54 32 30 2E 31 32 36 02 09 00 00 31 2E " +
"54 32 30 2E 31 32 36 02 09 00 00 31 2E 54 32 30 " +
"2E 31 32 35 02 09 00 00 31 2E 54 32 30 2E 31 32 " +
"35 02 09 00 00 31 2E 54 32 30 2E 31 32 35 02 09 " +
"00 00 31 2E 54 32 30 2E 31 32 34 02 09 00 00 31 " +
"2E 54 32 30 2E 31 32 34 02 09 00 00 31 2E 54 32 " +
"30 2E 31 32 34 02 09 00 00 31 2E 54 32 30 2E 31 " +
"31 34 02 09 00 00 31 2E 54 32 30 2E 31 31 34 02 " +
"09 00 00 31 2E 54 32 30 2E 31 31 34 02 09 00 00 " +
"31 2E 54 32 30 2E 31 31 33 02 09 00 00 31 2E 54 " +
"32 30 2E 31 31 33 02 09 00 00 31 2E 54 32 30 2E " +
"31 31 33 02 09 00 00 31 2E 54 32 30 2E 31 31 32 " +
"02 09 00 00 31 2E 54 32 30 2E 31 31 32 02 09 00 " +
"00 31 2E 54 32 30 2E 31 31 32 02 09 00 00 31 2E " +
"54 32 30 2E 31 30 32 02 09 00 00 31 2E 54 32 30 " +
"2E 31 30 32 02 09 00 00 31 2E 54 32 30 2E 31 30 " +
"32 02 09 00 00 31 2E 54 32 30 2E 31 30 31 02 09 " +
"00 00 31 2E 54 32 30 2E 31 30 31 02 09 00 00 31 " +
"2E 54 32 30 2E 31 30 31 02 09 00 00 31 2E 54 32 " +
"30 2E 31 30 30 02 09 00 00 31 2E 54 32 30 2E 31 " +
"30 30 02 09 00 00 31 2E 54 32 30 2E 31 30 30 02 " +
"09 00 00 31 2E 54 32 30 2E 30 39 30 02 09 00 00 " +
"31 2E 54 32 30 2E 30 39 30 02 09 00 00 31 2E 54 " +
"32 30 2E 30 39 30 02 09 00 00 31 2E 54 32 30 2E " +
"30 38 39 02 09 00 00 31 2E 54 32 30 2E 30 38 39 " +
"02 09 00 00 31 2E 54 32 30 2E 30 38 39 02 09 00 " +
"00 31 2E 54 32 30 2E 30 38 38 02 09 00 00 31 2E " +
"54 32 30 2E 30 38 38 02 09 00 00 31 2E 54 32 30 " +
"2E 30 38 38 02 09 00 00 31 2E 54 32 30 2E 30 37 " +
"38 02 09 00 00 31 2E 54 32 30 2E 30 37 38 02 09 " +
"00 00 31 2E 54 32 30 2E 30 37 38 02 09 00 00 31 " +
"2E 54 32 30 2E 30 37 37 02 09 00 00 31 2E 54 32 " +
"30 2E 30 37 37 02 09 00 00 31 2E 54 32 30 2E 30 " +
"37 37 02 09 00 00 31 2E 54 32 30 2E 30 37 36 02 " +
"09 00 00 31 2E 54 32 30 2E 30 37 36 02 09 00 00 " +
"31 2E 54 32 30 2E 30 37 36 02 09 00 00 31 2E 54 " +
"32 30 2E 30 36 36 02 09 00 00 31 2E 54 32 30 2E " +
"30 36 36 02 09 00 00 31 2E 54 32 30 2E 30 36 36 " +
"02 09 00 00 31 2E 54 32 30 2E 30 36 35 02 09 00 " +
"00 31 2E 54 32 30 2E 30 36 35 02 09 00 00 31 2E " +
"54 32 30 2E 30 36 35 02 09 00 00 31 2E 54 32 30 " +
"2E 30 36 34 02 09 00 00 31 2E 54 32 30 2E 30 36 " +
"34 02 09 00 00 31 2E 54 32 30 2E 30 36 34 02 09 " +
"00 00 31 2E 54 32 30 2E 30 35 34 02 09 00 00 31 " +
"2E 54 32 30 2E 30 35 34 02 09 00 00 31 2E 54 32 " +
"30 2E 30 35 34 02 09 00 00 31 2E 54 32 30 2E 30 " +
"35 33 02 09 00 00 31 2E 54 32 30 2E 30 35 33 02 " +
"09 00 00 31 2E 54 32 30 2E 30 35 33 02 09 00 00 " +
"31 2E 54 32 30 2E 30 35 32 02 09 00 00 31 2E 54 " +
"32 30 2E 30 35 32 02 09 00 00 31 2E 54 32 30 2E " +
"30 35 32 02 09 00 00 31 2E 54 32 30 2E 30 34 32 " +
"02 09 00 00 31 2E 54 32 30 2E 30 34 32 02 09 00 " +
"00 31 2E 54 32 30 2E 30 34 32 02 09 00 00 31 2E " +
"54 32 30 2E 30 34 31 02 09 00 00 31 2E 54 32 30 " +
"2E 30 34 31 02 09 00 00 31 2E 54 32 30 2E 30 34 " +
"31 02 09 00 00 31 2E 54 32 30 2E 30 34 30 02 09 " +
"00 00 31 2E 54 32 30 2E 30 34 30 02 09 00 00 31 " +
"2E 54 32 30 2E 30 34 30 02 09 00 00 31 2E 54 32 " +
"30 2E 30 33 30 02 09 00 00 31 2E 54 32 30 2E 30 " +
"33 30 02 09 00 00 31 2E 54 32 30 2E 30 33 30 02 " +
"09 00 00 31 2E 54 32 30 2E 30 32 39 02 09 00 00 " +
"31 2E 54 32 30 2E 30 32 39 02 09 00 00 31 2E 54 " +
"32 30 2E 30 32 39 02 09 00 00 31 2E 54 32 30 2E " +
"30 32 38 02 09 00 00 31 2E 54 32 30 2E 30 32 38 " +
"02 09 00 00 31 2E 54 32 30 2E 30 32 38 02 09 00 " +
"00 31 2E 54 32 30 2E 30 31 38 02 09 00 00 31 2E " +
"54 32 30 2E 30 31 38 02 09 00 00 31 2E 54 32 30 " +
"2E 30 31 38 02 09 00 00 31 2E 54 32 30 2E 30 31 " +
"37 02 09 00 00 31 2E 54 32 30 2E 30 31 37 02 09 " +
"00 00 31 2E 54 32 30 2E 30 31 37 02 09 00 00 31 " +
"2E 54 32 30 2E 30 31 36 02 09 00 00 31 2E 54 32 " +
"30 2E 30 31 36 02 09 00 00 31 2E 54 32 30 2E 30 " +
"31 36 02 09 00 00 31 2E 54 32 30 2E 30 30 36 02 " +
"09 00 00 31 2E 54 32 30 2E 30 30 36 02 09 00 00 " +
"31 2E 54 32 30 2E 30 30 36 02 09 00 00 31 2E 54 " +
"32 30 2E 30 30 35 02 09 00 00 31 2E 54 32 30 2E " +
"30 30 35 02 09 00 00 31 2E 54 32 30 2E 30 30 35 " +
"02 09 00 00 31 2E 54 32 30 2E 30 30 34 02 09 00 " +
"00 31 2E 54 32 30 2E 30 30 34 02 09 00 00 31 2E " +
"54 32 30 2E 30 30 34 02 09 00 00 31 2E 54 32 30 " +
"2E 30 30 37 02 09 00 00 31 2E 54 32 30 2E 30 30 " +
"37 02 09 00 00 31 2E 54 32 30 2E 30 30 37 02 09 " +
"00 00 31 2E 54 32 30 2E 30 30 38 02 09 00 00 31 " +
"2E 54 32 30 2E 30 30 38 02 09 00 00 31 2E 54 32 " +
"30 2E 30 30 38 02 09 00 00 31 2E 54 32 30 2E 30 " +
"30 39 02 09 00 00 31 2E 54 32 30 2E 30 30 39 02 " +
"09 00 00 31 2E 54 32 30 2E 30 30 39 02 09 00 00 " +
"31 2E 54 32 30 2E 30 31 39 02 09 00 00 31 2E 54 " +
"32 30 2E 30 31 39 02 09 00 00 31 2E 54 32 30 2E " +
"30 31 39 02 09 00 00 31 2E 54 32 30 2E 30 32 30 " +
"02 09 00 00 31 2E 54 32 30 2E 30 32 30 02 09 00 " +
"00 31 2E 54 32 30 2E 30 32 30 02 09 00 00 31 2E " +
"54 32 30 2E 30 32 31 02 09 00 00 31 2E 54 32 30 " +
"2E 30 32 31 02 09 00 00 31 2E 54 32 30 2E 30 32 " +
"31 02 09 00 00 31 2E 54 32 30 2E 30 33 31 02 09 " +
"00 00 31 2E 54 32 30 2E 30 33 31 02 09 00 00 31 " +
"2E 54 32 30 2E 30 33 31 02 09 00 00 31 2E 54 32 " +
"30 2E 30 33 32 02 09 00 00 31 2E 54 32 30 2E 30 " +
"33 32 02 09 00 00 31 2E 54 32 30 2E 30 33 32 02 " +
"09 00 00 31 2E 54 32 30 2E 30 33 33 02 09 00 00 " +
"31 2E 54 32 30 2E 30 33 33 02 09 00 00 31 2E 54 " +
"32 30 2E 30 33 33 02 09 00 00 31 2E 54 32 30 2E " +
"30 34 33 02 09 00 00 31 2E 54 32 30 2E 30 34 33 " +
"02 09 00 00 31 2E 54 32 30 2E 30 34 33 02 09 00 " +
"00 31 2E 54 32 30 2E 30 34 34 02 09 00 00 31 2E " +
"54 32 30 2E 30 34 34 02 09 00 00 31 2E 54 32 30 " +
"2E 30 34 34 02 09 00 00 31 2E 54 32 30 2E 30 34 " +
"35 02 09 00 00 31 2E 54 32 30 2E 30 34 35 02 09 " +
"00 00 31 2E 54 32 30 2E 30 34 35 02 09 00 00 31 " +
"2E 54 32 30 2E 30 35 35 02 09 00 00 31 2E 54 32 " +
"30 2E 30 35 35 02 09 00 00 31 2E 54 32 30 2E 30 " +
"35 35 02 09 00 00 31 2E 54 32 30 2E 30 35 36 02 " +
"09 00 00 31 2E 54 32 30 2E 30 35 36 02 09 00 00 " +
"31 2E 54 32 30 2E 30 35 36 02 09 00 00 31 2E 54 " +
"32 30 2E 30 35 37 02 09 00 00 31 2E 54 32 30 2E " +
"30 35 37 02 09 00 00 31 2E 54 32 30 2E 30 35 37 " +
"02 09 00 00 31 2E 54 32 30 2E 30 36 37 02 09 00 " +
"00 31 2E 54 32 30 2E 30 36 37 02 09 00 00 31 2E " +
"54 32 30 2E 30 36 37 02 09 00 00 31 2E 54 32 30 " +
"2E 30 36 38 02 09 00 00 31 2E 54 32 30 2E 30 36 " +
"38 02 09 00 00 31 2E 54 32 30 2E 30 36 38 02 09 " +
"00 00 31 2E 54 32 30 2E 30 36 39 02 09 00 00 31 " +
"2E 54 32 30 2E 30 36 39 02 09 00 00 31 2E 54 32 " +
"30 2E 30 36 39 02 09 00 00 31 2E 54 32 30 2E 30 " +
"37 39 02 09 00 00 31 2E 54 32 30 2E 30 37 39 02 " +
"09 00 00 31 2E 54 32 30 2E 30 37 39 02 09 00 00 " +
"31 2E 54 32 30 2E 30 38 30 02 09 00 00 31 2E 54 " +
"32 30 2E 30 38 30 02 09 00 00 31 2E 54 32 30 2E " +
"30 38 30 02 09 00 00 31 2E 54 32 30 2E 30 38 31 " +
"02 09 00 00 31 2E 54 32 30 2E 30 38 31 02 09 00 " +
"00 31 2E 54 32 30 2E 30 38 31 02 09 00 00 31 2E " +
"54 32 30 2E 30 39 31 02 09 00 00 31 2E 54 32 30 " +
"2E 30 39 31 02 09 00 00 31 2E 54 32 30 2E 30 39 " +
"31 02 09 00 00 31 2E 54 32 30 2E 30 39 32 02 09 " +
"00 00 31 2E 54 32 30 2E 30 39 32 02 09 00 00 31 " +
"2E 54 32 30 2E 30 39 32 02 09 00 00 31 2E 54 32 " +
"30 2E 30 39 33 02 09 00 00 31 2E 54 32 30 2E 30 " +
"39 33 02 09 00 00 31 2E 54 32 30 2E 30 39 33 02 " +
"09 00 00 31 2E 54 32 30 2E 31 30 33 02 09 00 00 " +
"31 2E 54 32 30 2E 31 30 33 02 09 00 00 31 2E 54 " +
"32 30 2E 31 30 33 02 09 00 00 31 2E 54 32 30 2E " +
"31 30 34 02 09 00 00 31 2E 54 32 30 2E 31 30 34 " +
"02 09 00 00 31 2E 54 32 30 2E 31 30 34 02 09 00 " +
"00 31 2E 54 32 30 2E 31 30 35 02 09 00 00 31 2E " +
"54 32 30 2E 31 30 35 02 09 00 00 31 2E 54 32 30 " +
"2E 31 30 35 02 09 00 00 31 2E 54 32 30 2E 31 31 " +
"35 02 09 00 00 31 2E 54 32 30 2E 31 31 35 02 09 " +
"00 00 31 2E 54 32 30 2E 31 31 35 02 09 00 00 31 " +
"2E 54 32 30 2E 31 31 36 02 09 00 00 31 2E 54 32 " +
"30 2E 31 31 36 02 09 00 00 31 2E 54 32 30 2E 31 " +
"31 36 02 09 00 00 31 2E 54 32 30 2E 31 31 37 02 " +
"09 00 00 31 2E 54 32 30 2E 31 31 37 02 09 00 00 " +
"31 2E 54 32 30 2E 31 31 37 02 09 00 00 31 2E 54 " +
"32 30 2E 31 32 37 02 09 00 00 31 2E 54 32 30 2E " +
"31 32 37 02 09 00 00 31 2E 54 32 30 2E 31 32 37 " +
"02 09 00 00 31 2E 54 32 30 2E 31 32 38 02 09 00 " +
"00 31 2E 54 32 30 2E 31 32 38 02 09 00 00 31 2E " +
"54 32 30 2E 31 32 38 02 09 00 00 31 2E 54 32 30 " +
"2E 31 32 39 02 09 00 00 31 2E 54 32 30 2E 31 32 " +
"39 02 09 00 00 31 2E 54 32 30 2E 31 32 39 02 09 " +
"00 00 31 2E 54 32 30 2E 31 33 39 02 09 00 00 31 " +
"2E 54 32 30 2E 31 33 39 02 09 00 00 31 2E 54 32 " +
"30 2E 31 33 39 02 09 00 00 31 2E 54 32 30 2E 31 " +
"34 30 02 09 00 00 31 2E 54 32 30 2E 31 34 30 02 " +
"09 00 00 31 2E 54 32 30 2E 31 34 30 02 09 00 00 " +
"31 2E 54 32 30 2E 31 34 31 02 09 00 00 31 2E 54 " +
"32 30 2E 31 34 31 02 09 00 00 31 2E 54 32 30 2E " +
"31 34 31 02 09 00 00 31 2E 54 32 30 2E 31 35 31 " +
"02 09 00 00 31 2E 54 32 30 2E 31 35 31 02 09 00 " +
"00 31 2E 54 32 30 2E 31 35 31 02 09 00 00 31 2E " +
"54 32 30 2E 31 35 32 02 09 00 00 31 2E 54 32 30 " +
"2E 31 35 32 02 09 00 00 31 2E 54 32 30 2E 31 35 " +
"32 02 09 00 00 31 2E 54 32 30 2E 31 35 33 02 09 " +
"00 00 31 2E 54 32 30 2E 31 35 33 02 09 00 00 31 " +
"2E 54 32 30 2E 31 35 33 02 09 00 00 31 2E 54 32 " +
"30 2E 31 36 33 02 09 00 00 31 2E 54 32 30 2E 31 " +
"36 33 02 09 00 00 31 2E 54 32 30 2E 31 36 33 02 " +
"09 00 00 31 2E 54 32 30 2E 31 36 34 02 09 00 00 " +
"31 2E 54 32 30 2E 31 36 34 02 09 00 00 31 2E 54 " +
"32 30 2E 31 36 34 02 09 00 00 31 2E 54 32 30 2E " +
"31 36 35 02 09 00 00 31 2E 54 32 30 2E 31 36 35 " +
"02 09 00 00 31 2E 54 32 30 2E 31 36 35 02 09 00 " +
"00 31 2E 54 36 30 2E 30 30 33 02 09 00 00 31 2E " +
"54 36 30 2E 30 30 33 02 09 00 00 31 2E 54 36 30 " +
"2E 30 30 33 02 09 00 00 31 2E 54 36 30 2E 30 30 " +
"34 02 09 00 00 31 2E 54 36 30 2E 30 30 34 02 09 " +
"00 00 31 2E 54 36 30 2E 30 30 34 02 09 00 00 31 " +
"2E 54 36 30 2E 30 30 35 02 09 00 00 31 2E 54 36 " +
"30 2E 30 30 35 02 09 00 00 31 2E 54 36 30 2E 30 " +
"30 35 02 09 00 00 31 2E 54 36 30 2E 30 31 35 02 " +
"09 00 00 31 2E 54 36 30 2E 30 31 35 02 09 00 00 " +
"31 2E 54 36 30 2E 30 31 35 02 09 00 00 31 2E 54 " +
"36 30 2E 30 31 36 02 09 00 00 31 2E 54 36 30 2E " +
"30 31 36 02 09 00 00 31 2E 54 36 30 2E 30 31 36 " +
"02 09 00 00 31 2E 54 36 30 2E 30 31 37 02 09 00 " +
"00 31 2E 54 36 30 2E 30 31 37 02 09 00 00 31 2E " +
"54 36 30 2E 30 31 37 02 09 00 00 31 2E 54 36 30 " +
"2E 30 32 37 02 09 00 00 31 2E 54 36 30 2E 30 32 " +
"37 02 09 00 00 31 2E 54 36 30 2E 30 32 37 02 09 " +
"00 00 31 2E 54 36 30 2E 30 32 38 02 09 00 00 31 " +
"2E 54 36 30 2E 30 32 38 02 09 00 00 31 2E 54 36 " +
"30 2E 30 32 38 02 09 00 00 31 2E 54 36 30 2E 30 " +
"32 39 02 09 00 00 31 2E 54 36 30 2E 30 32 39 02 " +
"09 00 00 31 2E 54 36 30 2E 30 32 39 02 09 00 00 " +
"31 2E 54 36 30 2E 30 33 39 02 09 00 00 31 2E 54 " +
"36 30 2E 30 33 39 02 09 00 00 31 2E 54 36 30 2E " +
"30 33 39 02 09 00 00 31 2E 54 36 30 2E 30 34 30 " +
"02 09 00 00 31 2E 54 36 30 2E 30 34 30 02 09 00 " +
"00 31 2E 54 36 30 2E 30 34 30 02 09 00 00 31 2E " +
"54 36 30 2E 30 34 31 02 09 00 00 31 2E 54 36 30 " +
"2E 30 34 31 02 09 00 00 31 2E 54 36 30 2E 30 34 " +
"31 02 09 00 00 31 2E 54 36 30 2E 30 35 31 02 09 " +
"00 00 31 2E 54 36 30 2E 30 35 31 02 09 00 00 31 " +
"2E 54 36 30 2E 30 35 31 02 09 00 00 31 2E 54 36 " +
"30 2E 30 35 32 02 09 00 00 31 2E 54 36 30 2E 30 " +
"35 32 02 09 00 00 31 2E 54 36 30 2E 30 35 32 02 " +
"09 00 00 31 2E 54 36 30 2E 30 35 33 02 09 00 00 " +
"31 2E 54 36 30 2E 30 35 33 02 09 00 00 31 2E 54 " +
"36 30 2E 30 35 33 02 09 00 00 31 2E 54 36 30 2E " +
"30 35 36 02 09 00 00 31 2E 54 36 30 2E 30 35 36 " +
"02 09 00 00 31 2E 54 36 30 2E 30 35 36 02 09 00 " +
"00 31 2E 54 36 30 2E 30 35 35 02 09 00 00 31 2E " +
"54 36 30 2E 30 35 35 02 09 00 00 31 2E 54 36 30 " +
"2E 30 35 35 02 09 00 00 31 2E 54 36 30 2E 30 35 " +
"34 02 09 00 00 31 2E 54 36 30 2E 30 35 34 02 09 " +
"00 00 31 2E 54 36 30 2E 30 35 34 02 09 00 00 31 " +
"2E 54 36 30 2E 30 34 34 02 09 00 00 31 2E 54 36 " +
"30 2E 30 34 34 02 09 00 00 31 2E 54 36 30 2E 30 " +
"34 34 02 09 00 00 31 2E 54 36 30 2E 30 34 33 02 " +
"09 00 00 31 2E 54 36 30 2E 30 34 33 02 09 00 00 " +
"31 2E 54 36 30 2E 30 34 33 02 09 00 00 31 2E 54 " +
"36 30 2E 30 34 32 02 09 00 00 31 2E 54 36 30 2E " +
"30 34 32 02 09 00 00 31 2E 54 36 30 2E 30 34 32 " +
"02 09 00 00 31 2E 54 36 30 2E 30 33 32 02 09 00 " +
"00 31 2E 54 36 30 2E 30 33 32 02 09 00 00 31 2E " +
"54 36 30 2E 30 33 32 02 09 00 00 31 2E 54 36 30 " +
"2E 30 33 31 02 09 00 00 31 2E 54 36 30 2E 30 33 " +
"31 02 09 00 00 31 2E 54 36 30 2E 30 33 31 02 09 " +
"00 00 31 2E 54 36 30 2E 30 33 30 02 09 00 00 31 " +
"2E 54 36 30 2E 30 33 30 02 09 00 00 31 2E 54 36 " +
"30 2E 30 33 30 02 09 00 00 31 2E 54 36 30 2E 30 " +
"32 30 02 09 00 00 31 2E 54 36 30 2E 30 32 30 02 " +
"09 00 00 31 2E 54 36 30 2E 30 32 30 02 09 00 00 " +
"31 2E 54 36 30 2E 30 31 39 02 09 00 00 31 2E 54 " +
"36 30 2E 30 31 39 02 09 00 00 31 2E 54 36 30 2E " +
"30 31 39 02 09 00 00 31 2E 54 36 30 2E 30 31 38 " +
"02 09 00 00 31 2E 54 36 30 2E 30 31 38 02 09 00 " +
"00 31 2E 54 36 30 2E 30 31 38 02 09 00 00 31 2E " +
"54 36 30 2E 30 30 38 02 09 00 00 31 2E 54 36 30 " +
"2E 30 30 38 02 09 00 00 31 2E 54 36 30 2E 30 30 " +
"38 02 09 00 00 31 2E 54 36 30 2E 30 30 37 02 09 " +
"00 00 31 2E 54 36 30 2E 30 30 37 02 09 00 00 31 " +
"2E 54 36 30 2E 30 30 37 02 09 00 00 31 2E 54 36 " +
"30 2E 30 30 36 02 09 00 00 31 2E 54 36 30 2E 30 " +
"30 36 02 09 00 00 31 2E 54 36 30 2E 30 30 36 02 " +
"09 00 00 31 2E 54 32 30 2E 31 36 38 02 09 00 00 " +
"31 2E 54 32 30 2E 31 36 38 02 09 00 00 31 2E 54 " +
"32 30 2E 31 36 38 02 09 00 00 31 2E 54 32 30 2E " +
"31 36 37 02 09 00 00 31 2E 54 32 30 2E 31 36 37 " +
"02 09 00 00 31 2E 54 32 30 2E 31 36 37 02 09 00 " +
"00 31 2E 54 32 30 2E 31 36 36 02 09 00 00 31 2E " +
"54 32 30 2E 31 36 36 02 09 00 00 31 2E 54 32 30 " +
"2E 31 36 36 02 09 00 00 31 2E 54 32 30 2E 31 35 " +
"36 02 09 00 00 31 2E 54 32 30 2E 31 35 36 02 09 " +
"00 00 31 2E 54 32 30 2E 31 35 36 02 09 00 00 31 " +
"2E 54 32 30 2E 31 35 35 02 09 00 00 31 2E 54 32 " +
"30 2E 31 35 35 02 09 00 00 31 2E 54 32 30 2E 31 " +
"35 35 02 09 00 00 31 2E 54 32 30 2E 31 35 34 02 " +
"09 00 00 31 2E 54 32 30 2E 31 35 34 02 09 00 00 " +
"31 2E 54 32 30 2E 31 35 34 02 09 00 00 31 2E 54 " +
"32 30 2E 31 34 34 02 09 00 00 31 2E 54 32 30 2E " +
"31 34 34 ";
String record_0x03C =
" 3C 00 62 05 02 09 00 00 31 2E 54 32 30 " +
"2E 31 34 34 02 09 00 00 31 2E 54 32 30 2E 31 34 " +
"33 02 09 00 00 31 2E 54 32 30 2E 31 34 33 02 09 " +
"00 00 31 2E 54 32 30 2E 31 34 33 02 09 00 00 31 " +
"2E 54 32 30 2E 31 34 32 02 09 00 00 31 2E 54 32 " +
"30 2E 31 34 32 02 09 00 00 31 2E 54 32 30 2E 31 " +
"34 32 02 09 00 00 31 2E 54 32 30 2E 31 33 32 02 " +
"09 00 00 31 2E 54 32 30 2E 31 33 32 02 09 00 00 " +
"31 2E 54 32 30 2E 31 33 32 02 09 00 00 31 2E 54 " +
"32 30 2E 31 33 31 02 09 00 00 31 2E 54 32 30 2E " +
"31 33 31 02 09 00 00 31 2E 54 32 30 2E 31 33 31 " +
"02 09 00 00 31 2E 54 32 30 2E 31 33 30 02 09 00 " +
"00 31 2E 54 32 30 2E 31 33 30 02 09 00 00 31 2E " +
"54 32 30 2E 31 33 30 02 09 00 00 31 2E 54 32 30 " +
"2E 31 32 30 02 09 00 00 31 2E 54 32 30 2E 31 32 " +
"30 02 09 00 00 31 2E 54 32 30 2E 31 32 30 02 09 " +
"00 00 31 2E 54 32 30 2E 31 31 39 02 09 00 00 31 " +
"2E 54 32 30 2E 31 31 39 02 09 00 00 31 2E 54 32 " +
"30 2E 31 31 39 02 09 00 00 31 2E 54 32 30 2E 31 " +
"31 38 02 09 00 00 31 2E 54 32 30 2E 31 31 38 02 " +
"09 00 00 31 2E 54 32 30 2E 31 31 38 02 09 00 00 " +
"31 2E 54 32 30 2E 31 30 38 02 09 00 00 31 2E 54 " +
"32 30 2E 31 30 38 02 09 00 00 31 2E 54 32 30 2E " +
"31 30 38 02 09 00 00 31 2E 54 32 30 2E 31 30 37 " +
"02 09 00 00 31 2E 54 32 30 2E 31 30 37 02 09 00 " +
"00 31 2E 54 32 30 2E 31 30 37 02 09 00 00 31 2E " +
"54 32 30 2E 31 30 36 02 09 00 00 31 2E 54 32 30 " +
"2E 31 30 36 02 09 00 00 31 2E 54 32 30 2E 31 30 " +
"36 02 09 00 00 31 2E 54 32 30 2E 30 39 36 02 09 " +
"00 00 31 2E 54 32 30 2E 30 39 36 02 09 00 00 31 " +
"2E 54 32 30 2E 30 39 36 02 09 00 00 31 2E 54 32 " +
"30 2E 30 39 35 02 09 00 00 31 2E 54 32 30 2E 30 " +
"39 35 02 09 00 00 31 2E 54 32 30 2E 30 39 35 02 " +
"09 00 00 31 2E 54 32 30 2E 30 39 34 02 09 00 00 " +
"31 2E 54 32 30 2E 30 39 34 02 09 00 00 31 2E 54 " +
"32 30 2E 30 39 34 02 09 00 00 31 2E 54 32 30 2E " +
"30 38 34 02 09 00 00 31 2E 54 32 30 2E 30 38 34 " +
"02 09 00 00 31 2E 54 32 30 2E 30 38 34 02 09 00 " +
"00 31 2E 54 32 30 2E 30 38 33 02 09 00 00 31 2E " +
"54 32 30 2E 30 38 33 02 09 00 00 31 2E 54 32 30 " +
"2E 30 38 33 02 09 00 00 31 2E 54 32 30 2E 30 38 " +
"32 02 09 00 00 31 2E 54 32 30 2E 30 38 32 02 09 " +
"00 00 31 2E 54 32 30 2E 30 38 32 02 09 00 00 31 " +
"2E 54 32 30 2E 30 37 32 02 09 00 00 31 2E 54 32 " +
"30 2E 30 37 32 02 09 00 00 31 2E 54 32 30 2E 30 " +
"37 32 02 09 00 00 31 2E 54 32 30 2E 30 37 31 02 " +
"09 00 00 31 2E 54 32 30 2E 30 37 31 02 09 00 00 " +
"31 2E 54 32 30 2E 30 37 31 02 09 00 00 31 2E 54 " +
"32 30 2E 30 37 30 02 09 00 00 31 2E 54 32 30 2E " +
"30 37 30 02 09 00 00 31 2E 54 32 30 2E 30 37 30 " +
"02 09 00 00 31 2E 54 32 30 2E 30 36 30 02 09 00 " +
"00 31 2E 54 32 30 2E 30 36 30 02 09 00 00 31 2E " +
"54 32 30 2E 30 36 30 02 09 00 00 31 2E 54 32 30 " +
"2E 30 35 39 02 09 00 00 31 2E 54 32 30 2E 30 35 " +
"39 02 09 00 00 31 2E 54 32 30 2E 30 35 39 02 09 " +
"00 00 31 2E 54 32 30 2E 30 35 38 02 09 00 00 31 " +
"2E 54 32 30 2E 30 35 38 02 09 00 00 31 2E 54 32 " +
"30 2E 30 35 38 02 09 00 00 31 2E 54 32 30 2E 30 " +
"34 38 02 09 00 00 31 2E 54 32 30 2E 30 34 38 02 " +
"09 00 00 31 2E 54 32 30 2E 30 34 38 02 09 00 00 " +
"31 2E 54 32 30 2E 30 34 37 02 09 00 00 31 2E 54 " +
"32 30 2E 30 34 37 02 09 00 00 31 2E 54 32 30 2E " +
"30 34 37 02 09 00 00 31 2E 54 32 30 2E 30 34 36 " +
"02 09 00 00 31 2E 54 32 30 2E 30 34 36 02 09 00 " +
"00 31 2E 54 32 30 2E 30 34 36 02 09 00 00 31 2E " +
"54 32 30 2E 30 33 36 02 09 00 00 31 2E 54 32 30 " +
"2E 30 33 36 02 09 00 00 31 2E 54 32 30 2E 30 33 " +
"36 02 09 00 00 31 2E 54 32 30 2E 30 33 35 02 09 " +
"00 00 31 2E 54 32 30 2E 30 33 35 02 09 00 00 31 " +
"2E 54 32 30 2E 30 33 35 02 09 00 00 31 2E 54 32 " +
"30 2E 30 33 34 02 09 00 00 31 2E 54 32 30 2E 30 " +
"33 34 02 09 00 00 31 2E 54 32 30 2E 30 33 34 02 " +
"09 00 00 31 2E 54 32 30 2E 30 32 34 02 09 00 00 " +
"31 2E 54 32 30 2E 30 32 34 02 09 00 00 31 2E 54 " +
"32 30 2E 30 32 34 02 09 00 00 31 2E 54 32 30 2E " +
"30 32 33 02 09 00 00 31 2E 54 32 30 2E 30 32 33 " +
"02 09 00 00 31 2E 54 32 30 2E 30 32 33 02 09 00 " +
"00 31 2E 54 32 30 2E 30 32 32 02 09 00 00 31 2E " +
"54 32 30 2E 30 32 32 02 09 00 00 31 2E 54 32 30 " +
"2E 30 32 32 02 09 00 00 31 2E 54 32 30 2E 30 31 " +
"32 02 09 00 00 31 2E 54 32 30 2E 30 31 32 02 09 " +
"00 00 31 2E 54 32 30 2E 30 31 32 02 09 00 00 31 " +
"2E 54 32 30 2E 30 31 31 02 09 00 00 31 2E 54 32 " +
"30 2E 30 31 31 02 09 00 00 31 2E 54 32 30 2E 30 " +
"31 31 02 09 00 00 31 2E 54 32 30 2E 30 31 30 02 " +
"09 00 00 31 2E 54 32 30 2E 30 31 30 02 09 00 00 " +
"31 2E 54 32 30 2E 30 31 30 ";
byte[] data1 = HexRead.readFromString(record_0x0018 + record_0x03C);
RecordInputStream in1 = TestcaseRecordInputStream.create(data1);
NameRecord nr1 = new NameRecord(in1);
System.out.println(nr1);
assert_bug50244(nr1);
byte[] data2 = nr1.serialize();
assertEquals(data1.length, data2.length);
RecordInputStream in2 = TestcaseRecordInputStream.create(data2);
NameRecord nr2 = new NameRecord(in2);
assert_bug50244(nr2);
}
private void assert_bug50244(NameRecord nr){
assertEquals("wDataGruppeSerie.", nr.getNameText());
Ptg[] ptg = nr.getNameDefinition();
assertEquals(1, ptg.length);
ArrayPtg arr = (ArrayPtg)ptg[0];
assertEquals(696, arr.getRowCount());
assertEquals(1, arr.getColumnCount());
Object[][] vals = arr.getTokenArrayValues();
assertEquals("1.T20.001", vals[0][0]);
assertEquals("1.T20.010", vals[vals.length - 1][0]);
}
} }