blob: cd98ee0840bbb02611ef1df9d00d447d05427a83 [file] [log] [blame]
/* ====================================================================
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.
==================================================================== */
package org.apache.poi.hssf.record;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Iterator;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.record.common.UnicodeString;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.util.HexRead;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LocaleUtil;
import org.junit.Test;
import junit.framework.AssertionFailedError;
/**
* @author Marc Johnson (mjohnson at apache dot org)
* @author Glen Stampoultzis (glens at apache.org)
*/
public final class TestSSTRecord {
/**
* decodes hexdump files and concatenates the results
* @param hexDumpFileNames names of sample files in the hssf test data directory
* @throws IOException
*/
private static byte[] concatHexDumps(String... hexDumpFileNames) throws IOException {
int nFiles = hexDumpFileNames.length;
ByteArrayOutputStream baos = new ByteArrayOutputStream(nFiles * 8228);
for (int i = 0; i < nFiles; i++) {
String sampleFileName = hexDumpFileNames[i];
InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName);
BufferedReader br = new BufferedReader(new InputStreamReader(is, LocaleUtil.CHARSET_1252));
while (true) {
String line = br.readLine();
if (line == null) {
break;
}
baos.write(HexRead.readFromString(line));
}
is.close();
}
return baos.toByteArray();
}
/**
* @param rawData serialization of one {@link SSTRecord} and zero or more {@link ContinueRecord}s
*/
private static SSTRecord createSSTFromRawData(byte[] rawData) {
RecordInputStream in = new RecordInputStream(new ByteArrayInputStream(rawData));
in.nextRecord();
SSTRecord result = new SSTRecord(in);
assertEquals(0, in.remaining());
assertTrue(!in.hasNextRecord());
return result;
}
/**
* SST is often split over several {@link ContinueRecord}s
* @throws IOException
*/
@Test
public void testContinuedRecord() throws IOException {
byte[] origData;
SSTRecord record;
byte[] ser_output;
origData = concatHexDumps("BigSSTRecord", "BigSSTRecordCR");
record = createSSTFromRawData(origData);
assertEquals( 1464, record.getNumStrings() );
assertEquals( 688, record.getNumUniqueStrings() );
assertEquals( 688, record.countStrings() );
ser_output = record.serialize();
assertArrayEquals(origData, ser_output);
// testing based on new bug report
origData = concatHexDumps("BigSSTRecord2", "BigSSTRecord2CR1", "BigSSTRecord2CR2", "BigSSTRecord2CR3",
"BigSSTRecord2CR4", "BigSSTRecord2CR5", "BigSSTRecord2CR6", "BigSSTRecord2CR7");
record = createSSTFromRawData(origData);
assertEquals( 158642, record.getNumStrings() );
assertEquals( 5249, record.getNumUniqueStrings() );
assertEquals( 5249, record.countStrings() );
ser_output = record.serialize();
// if (false) { // set true to observe make sure areSameSSTs() is working
// ser_output[11000] = 'X';
// }
SSTRecord rec2 = createSSTFromRawData(ser_output);
if (!areSameSSTs(record, rec2)) {
throw new AssertionFailedError("large SST re-serialized incorrectly");
}
// if (false) {
// // TODO - trivial differences in ContinueRecord break locations
// // Sample data should be checked against what most recent Excel version produces.
// // maybe tweaks are required in ContinuableRecordOutput
// assertArrayEquals(origData, ser_output);
// }
}
private boolean areSameSSTs(SSTRecord a, SSTRecord b) {
if (a.getNumStrings() != b.getNumStrings()) {
return false;
}
int nElems = a.getNumUniqueStrings();
if (nElems != b.getNumUniqueStrings()) {
return false;
}
for(int i=0; i<nElems; i++) {
if (!a.getString(i).equals(b.getString(i))) {
return false;
}
}
return true;
}
/**
* Test capability of handling mondo big strings
*
* @exception IOException
*/
@Test
public void testHugeStrings() {
SSTRecord record = new SSTRecord();
byte[][] bstrings =
{
new byte[9000], new byte[7433], new byte[9002],
new byte[16998]
};
UnicodeString[] strings = new UnicodeString[bstrings.length];
int total_length = 0;
for ( int k = 0; k < bstrings.length; k++ )
{
Arrays.fill( bstrings[k], (byte) ( 'a' + k ) );
strings[k] = new UnicodeString( new String(bstrings[k], LocaleUtil.CHARSET_1252) );
record.addString( strings[k] );
total_length += 3 + bstrings[k].length;
}
// add overhead of SST record
total_length += 8;
// add overhead of broken strings
total_length += 4;
// add overhead of six records
total_length += ( 6 * 4 );
byte[] content = new byte[record.getRecordSize()];
record.serialize( 0, content );
assertEquals( total_length, content.length );
//Deserialize the record.
RecordInputStream recStream = new RecordInputStream(new ByteArrayInputStream(content));
recStream.nextRecord();
record = new SSTRecord(recStream);
assertEquals( strings.length, record.getNumStrings() );
assertEquals( strings.length, record.getNumUniqueStrings() );
assertEquals( strings.length, record.countStrings() );
for ( int k = 0; k < strings.length; k++ )
{
assertEquals( strings[k], record.getString( k ) );
}
record = new SSTRecord();
bstrings[1] = new byte[bstrings[1].length - 1];
for ( int k = 0; k < bstrings.length; k++ )
{
if ( ( bstrings[k].length % 2 ) == 1 )
{
Arrays.fill( bstrings[k], (byte) ( 'a' + k ) );
strings[k] = new UnicodeString( new String(bstrings[k], LocaleUtil.CHARSET_1252) );
}
else
{
char[] data = new char[bstrings[k].length / 2];
Arrays.fill( data, (char) ( '\u2122' + k ) );
strings[k] = new UnicodeString(new String( data ));
}
record.addString( strings[k] );
}
content = new byte[record.getRecordSize()];
record.serialize( 0, content );
total_length--;
assertEquals( total_length, content.length );
recStream = new RecordInputStream(new ByteArrayInputStream(content));
recStream.nextRecord();
record = new SSTRecord(recStream);
assertEquals( strings.length, record.getNumStrings() );
assertEquals( strings.length, record.getNumUniqueStrings() );
assertEquals( strings.length, record.countStrings() );
for ( int k = 0; k < strings.length; k++ )
{
assertEquals( strings[k], record.getString( k ) );
}
}
/**
* test SSTRecord boundary conditions
*/
@Test
public void testSSTRecordBug() {
// create an SSTRecord and write a certain pattern of strings
// to it ... then serialize it and verify the content
SSTRecord record = new SSTRecord();
// the record will start with two integers, then this string
// ... that will eat up 16 of the 8224 bytes that the record
// can hold
record.addString( new UnicodeString("Hello") );
// now we have an additional 8208 bytes, which is an exact
// multiple of 16 bytes
long testvalue = 1000000000000L;
for ( int k = 0; k < 2000; k++ )
{
record.addString( new UnicodeString(String.valueOf( testvalue++ )) );
}
byte[] content = new byte[record.getRecordSize()];
record.serialize( 0, content );
assertEquals(8224, LittleEndian.getShort(content, 2));
assertEquals(ContinueRecord.sid, LittleEndian.getShort(content, 8228));
assertEquals(8224, LittleEndian.getShort(content, 8228+2));
assertEquals( (byte) 13, content[4 + 8228] );
assertEquals(ContinueRecord.sid, LittleEndian.getShort(content, 2*8228));
assertEquals(8224, LittleEndian.getShort(content, 8228*2+2));
assertEquals( (byte) 13, content[4 + 8228 * 2] );
assertEquals(ContinueRecord.sid, LittleEndian.getShort(content, 3*8228));
assertEquals( (byte) 13, content[4 + 8228 * 3] );
}
/**
* test simple addString
*/
@Test
public void testSimpleAddString() {
SSTRecord record = new SSTRecord();
UnicodeString s1 = new UnicodeString("Hello world");
// \u2122 is the encoding of the trademark symbol ...
UnicodeString s2 = new UnicodeString("Hello world\u2122");
assertEquals( 0, record.addString( s1 ) );
assertEquals( s1, record.getString( 0 ) );
assertEquals( 1, record.countStrings() );
assertEquals( 1, record.getNumStrings() );
assertEquals( 1, record.getNumUniqueStrings() );
assertEquals( 0, record.addString( s1 ) );
assertEquals( s1, record.getString( 0 ) );
assertEquals( 1, record.countStrings() );
assertEquals( 2, record.getNumStrings() );
assertEquals( 1, record.getNumUniqueStrings() );
assertEquals( 1, record.addString( s2 ) );
assertEquals( s2, record.getString( 1 ) );
assertEquals( 2, record.countStrings() );
assertEquals( 3, record.getNumStrings() );
assertEquals( 2, record.getNumUniqueStrings() );
Iterator<UnicodeString> iter = record.getStrings();
while ( iter.hasNext() ) {
UnicodeString ucs = iter.next();
if ( ucs.equals( s1 ) )
{
assertEquals( (byte) 0, ucs.getOptionFlags() );
}
else if ( ucs.equals( s2 ) )
{
assertEquals( (byte) 1, ucs.getOptionFlags() );
}
else
{
fail( "cannot match string: " + ucs.getString() );
}
}
}
/**
* test simple constructor
*/
@Test
public void testSimpleConstructor() {
SSTRecord record = new SSTRecord();
assertEquals( 0, record.getNumStrings() );
assertEquals( 0, record.getNumUniqueStrings() );
assertEquals( 0, record.countStrings() );
byte[] output = record.serialize();
byte[] expected =
{
(byte) record.getSid(), (byte) ( record.getSid() >> 8 ),
(byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0,
(byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0
};
assertEquals( expected.length, output.length );
for ( int k = 0; k < expected.length; k++ )
{
assertEquals( String.valueOf( k ), expected[k], output[k] );
}
}
/**
* Tests that workbooks with rich text that duplicates a non rich text cell can be read and written.
*/
@Test
public void testReadWriteDuplicatedRichText1() throws Exception {
HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("duprich1.xls");
HSSFSheet sheet = wb.getSheetAt( 1 );
assertEquals( "01/05 (Wed)", sheet.getRow( 0 ).getCell(8 ).getStringCellValue() );
assertEquals( "01/05 (Wed)", sheet.getRow( 1 ).getCell(8 ).getStringCellValue() );
HSSFTestDataSamples.writeOutAndReadBack(wb).close();
wb.close();
// test the second file.
wb = HSSFTestDataSamples.openSampleWorkbook("duprich2.xls");
sheet = wb.getSheetAt( 0 );
int row = 0;
assertEquals( "Testing", sheet.getRow( row++ ).getCell(0 ).getStringCellValue() );
assertEquals( "rich", sheet.getRow( row++ ).getCell(0 ).getStringCellValue() );
assertEquals( "text", sheet.getRow( row++ ).getCell(0 ).getStringCellValue() );
assertEquals( "strings", sheet.getRow( row++ ).getCell(0 ).getStringCellValue() );
assertEquals( "Testing", sheet.getRow( row++ ).getCell(0 ).getStringCellValue() );
assertEquals( "Testing", sheet.getRow( row++ ).getCell(0 ).getStringCellValue() );
HSSFTestDataSamples.writeOutAndReadBack(wb).close();
wb.close();
}
/**
* hex dump from UnicodeStringFailCase1.xls atatched to Bugzilla 50779
*/
private static final String data_50779_1 =
//Offset=0x00000612(1554) recno=71 sid=0x00FC size=0x2020(8224)
" FC 00 20 20 51 00 00 00 51 00 00 00 32 00" +
"05 10 00 00 00 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 30 00 31 00 01 00 0C 00 05 00 35" +
"00 00 00 00 00 00 00 4B 30 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 30 00 32 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 30 00 33 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 30 00 34 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 30 00 35 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 30 00 36 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 30" +
"00 37 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 30 00 38 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 30 00 39" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 31 00 30 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 31 00 31 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 31 00 32 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 31 00 33 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"31 00 34 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 31 00 35 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 31 00" +
"36 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 31 00 37 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 31 00 38 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 31 00 39 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 32 00 30 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 32 00 31 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 32 00 32 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 32" +
"00 33 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 32 00 34 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 32 00 35" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 32 00 36 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 32 00 37 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 32 00 38 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 32 00 39 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"33 00 30 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 33 00 31 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 33 00" +
"32 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 33 00 33 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 33 00 34 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 33 00 35 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 33 00 36 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 33 00 37 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 33 00 38 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 33" +
"00 39 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 34 00 30 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 34 00 31" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 34 00 32 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 34 00 33 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 34 00 34 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 34 00 35 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"34 00 36 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 34 00 37 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 34 00" +
"38 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 34 00 39 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 35 00 30 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 35 00 31 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 35 00 32 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 35 00 33 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 35 00 34 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 35" +
"00 35 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 35 00 36 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 35 00 37" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 35 00 38 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 35 00 39 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 36 00 30 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 36 00 31 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"36 00 32 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 36 00 33 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 36 00" +
"34 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 36 00 35 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 36 00 36 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 36 00 37 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 36 00 38 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 36 00 39 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 37 00 30 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 37" +
"00 31 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 37 00 32 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 37 00 33" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 37 00 34 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 37 00 35 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 37 00 36 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 37 00 37 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"37 00 38 00 1F 00 05 B8 00 00 00 17 53 77 6D 53" +
"90 52 97 EE 68 0C 77 A9 5C 4B 62 0C 77 8F 79 F6" +
"5C 0C 77 03 68 28 67 0C 77 FC 57 89 73 0C 77 71" +
"67 AC 4E FD 90 43 53 49 84 0C 77 5E 79 48 59 DD" +
"5D 0C 77 77 95 CE 91 0C 77 01 00 B4 00 05 00 35" +
"00 0A 00 37 00 37 00 DB 30 C3 30 AB 30 A4 30 C9" +
"30 A6 30 A2 30 AA 30 E2 30 EA 30 B1 30 F3 30 A4" +
"30 EF 30 C6 30 B1 30 F3 30 D5 30 AF 30 B7 30 DE" +
"30 B1 30 F3 30 C8 30 C1 30 AE 30 B1 30 F3 30 B5" +
"30 A4 30 BF 30 DE 30 B1 30 F3 30 C8 30 A6 30 AD" +
"30 E7 30 A6 30 C8 " +
// Offset=0x00002636(9782) recno=72 sid=0x003C size=0x0151(337)
" 3C 00 51 01 30 C1 30 D0 30 B1" +
"30 F3 30 AB 30 CA 30 AC 30 EF 30 B1 30 F3 30 CA" +
"30 AC 30 CE 30 B1 30 F3 30 00 00 00 00 03 00 06" +
"00 03 00 03 00 0C 00 06 00 03 00 11 00 09 00 03" +
"00 17 00 0C 00 03 00 1C 00 0F 00 03 00 22 00 12" +
"00 03 00 28 00 15 00 03 00 2C 00 18 00 04 00 32" +
"00 1C 00 03 00 32 00 05 10 00 00 00 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 37 00 39 00" +
"01 00 0C 00 05 00 35 00 00 00 00 00 00 00 00 00" +
"32 00 05 10 00 00 00 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 38 00 30 00 01 00 0C 00 05" +
"00 35 00 00 00 00 00 00 00 4B 30 ";
/**
* hex dump from UnicodeStringFailCase2.xls atatched to Bugzilla 50779
*/
private static final String data_50779_2 =
//"Offset=0x00000612(1554) recno=71 sid=0x00FC size=0x2020(8224)\n" +
" FC 00 20 20 51 00 00 00 51 00 00 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 30 00 31 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 30 00 32 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 30" +
"00 33 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 30 00 34 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 30 00 35" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 30 00 36 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 30 00 37 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 30 00 38 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 30 00 39 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"31 00 30 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 31 00 31 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 31 00" +
"32 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 31 00 33 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 31 00 34 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 31 00 35 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 31 00 36 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 31 00 37 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 31 00 38 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 31" +
"00 39 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 32 00 30 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 32 00 31" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 32 00 32 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 32 00 33 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 32 00 34 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 32 00 35 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"32 00 36 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 32 00 37 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 32 00" +
"38 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 32 00 39 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 33 00 30 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 33 00 31 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 33 00 32 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 33 00 33 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 33 00 34 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 33" +
"00 35 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 33 00 36 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 33 00 37" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 33 00 38 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 33 00 39 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 34 00 30 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 34 00 31 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"34 00 32 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 34 00 33 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 34 00" +
"34 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 34 00 35 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 34 00 36 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 34 00 37 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 34 00 38 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 34 00 39 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 35 00 30 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 35" +
"00 31 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 35 00 32 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 35 00 33" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 35 00 34 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 35 00 35 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 35 00 36 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 35 00 37 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"35 00 38 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 35 00 39 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 36 00" +
"30 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 36 00 31 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 36 00 32 00" +
"32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 36 00 33 00 32 00 01 42 30 44 30 46 30" +
"48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30" +
"57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30" +
"68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30" +
"75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30" +
"84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30" +
"8F 30 92 30 93 30 30 00 30 00 36 00 34 00 32 00" +
"01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F" +
"30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F" +
"30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D" +
"30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F" +
"30 80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A" +
"30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30" +
"00 36 00 35 00 32 00 01 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 36 00 36 00 32 00 01 42" +
"30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51" +
"30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61" +
"30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E" +
"30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80" +
"30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B" +
"30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 36" +
"00 37 00 32 00 01 42 30 44 30 46 30 48 30 4A 30" +
"4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30" +
"5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30" +
"6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30" +
"7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30" +
"88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30" +
"93 30 30 00 30 00 36 00 38 00 32 00 01 42 30 44" +
"30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53" +
"30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64" +
"30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F" +
"30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81" +
"30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C" +
"30 8D 30 8F 30 92 30 93 30 30 00 30 00 36 00 39" +
"00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B 30" +
"4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30" +
"5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30" +
"6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30" +
"7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30" +
"89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30" +
"30 00 30 00 37 00 30 00 32 00 01 42 30 44 30 46" +
"30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55" +
"30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66" +
"30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72" +
"30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82" +
"30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D" +
"30 8F 30 92 30 93 30 30 00 30 00 37 00 31 00 32" +
"00 01 42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30" +
"4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D 30" +
"5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30" +
"6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30" +
"7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89 30" +
"8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00" +
"30 00 37 00 32 00 32 00 01 42 30 44 30 46 30 48" +
"30 4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57" +
"30 59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68" +
"30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75" +
"30 78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84" +
"30 86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F" +
"30 92 30 93 30 30 00 30 00 37 00 33 00 32 00 01" +
"42 30 44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30" +
"51 30 53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30" +
"61 30 64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30" +
"6E 30 6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30" +
"80 30 81 30 82 30 84 30 86 30 88 30 89 30 8A 30" +
"8B 30 8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00" +
"37 00 34 00 32 00 01 42 30 44 30 46 30 48 30 4A" +
"30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30 59" +
"30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A" +
"30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78" +
"30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30 86" +
"30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92" +
"30 93 30 30 00 30 00 37 00 35 00 32 00 01 42 30" +
"44 30 46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30" +
"53 30 55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30" +
"64 30 66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30" +
"6F 30 72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30" +
"81 30 82 30 84 30 86 30 88 30 89 30 8A 30 8B 30" +
"8C 30 8D 30 8F 30 92 30 93 30 30 00 30 00 37 00" +
"36 00 32 00 01 42 30 44 30 46 30 48 30 4A 30 4B" +
"30 4D 30 4F 30 51 30 53 30 55 30 57 30 59 30 5B" +
"30 5D 30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B" +
"30 6C 30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B" +
"30 7E 30 7F 30 80 30 81 30 82 30 84 30 86 30 88" +
"30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93" +
"30 30 00 30 00 37 00 37 00 32 00 01 42 30 44 30" +
"46 30 48 30 4A 30 4B 30 4D 30 4F 30 51 30 53 30" +
"55 30 57 30 59 30 5B 30 5D 30 5F 30 61 30 64 30" +
"66 30 68 30 6A 30 6B 30 6C 30 6D 30 6E 30 6F 30" +
"72 30 75 30 78 30 7B 30 7E 30 7F 30 80 30 81 30" +
"82 30 84 30 86 30 88 30 89 30 8A 30 8B 30 8C 30" +
"8D 30 8F 30 92 30 93 30 30 00 30 00 37 00 38 00" +
"18 00 05 96 00 00 00 17 53 77 6D 53 90 52 97 EE" +
"68 0C 77 A9 5C 4B 62 0C 77 8F 79 F6 5C 0C 77 03" +
"68 28 67 0C 77 FC 57 89 73 0C 77 71 67 AC 4E FD" +
"90 43 53 49 84 0C 77 01 00 92 00 05 00 35 00 08" +
"00 2C 00 2C 00 DB 30 C3 30 AB 30 A4 30 C9 30 A6" +
"30 A2 30 AA 30 E2 30 EA 30 B1 30 F3 30 A4 30 EF" +
"30 C6 30 B1 30 F3 30 D5 30 AF 30 B7 30 DE 30 B1" +
"30 F3 30 C8 30 C1 30 AE 30 B1 30 F3 30 B5 30 A4" +
"30 BF 30 DE 30 B1 30 F3 30 C8 30 A6 30 AD 30 E7" +
"30 A6 30 C8 30 C1 30 D0 30 B1 30 F3 30 00 00 00" +
"00 03 00 06 00 03 00 03 00 0C 00 06 00 03 00 11" +
"00 09 00 03 00 17 " +
//Offset=0x00002636(9782) recno=72 sid=0x003C size=0x010D(269)
" 3C 00 0D 01 00 0C 00 03 00 1C" +
"00 0F 00 03 00 22 00 12 00 03 00 28 00 15 00 03" +
"00 32 00 05 10 00 00 00 42 30 44 30 46 30 48 30" +
"4A 30 4B 30 4D 30 4F 30 51 30 53 30 55 30 57 30" +
"59 30 5B 30 5D 30 5F 30 61 30 64 30 66 30 68 30" +
"6A 30 6B 30 6C 30 6D 30 6E 30 6F 30 72 30 75 30" +
"78 30 7B 30 7E 30 7F 30 80 30 81 30 82 30 84 30" +
"86 30 88 30 89 30 8A 30 8B 30 8C 30 8D 30 8F 30" +
"92 30 93 30 30 00 30 00 37 00 39 00 01 00 0C 00" +
"05 00 35 00 00 00 00 00 00 00 00 00 32 00 05 10" +
"00 00 00 42 30 44 30 46 30 48 30 4A 30 4B 30 4D" +
"30 4F 30 51 30 53 30 55 30 57 30 59 30 5B 30 5D" +
"30 5F 30 61 30 64 30 66 30 68 30 6A 30 6B 30 6C" +
"30 6D 30 6E 30 6F 30 72 30 75 30 78 30 7B 30 7E" +
"30 7F 30 80 30 81 30 82 30 84 30 86 30 88 30 89" +
"30 8A 30 8B 30 8C 30 8D 30 8F 30 92 30 93 30 30" +
"00 30 00 38 00 30 00 01 00 0C 00 05 00 35 00 00" +
"00 00 00 00 00 4B 30 ";
/**
* deep comparison of two SST records
*/
private static void assertRecordEquals(SSTRecord expected, SSTRecord actual){
assertEquals("number of strings", expected.getNumStrings(), actual.getNumStrings());
assertEquals("number of unique strings", expected.getNumUniqueStrings(), actual.getNumUniqueStrings());
assertEquals("count of strings", expected.countStrings(), actual.countStrings());
for ( int k = 0; k < expected.countStrings(); k++ ) {
org.apache.poi.hssf.record.common.UnicodeString us1 = expected.getString(k);
org.apache.poi.hssf.record.common.UnicodeString us2 = actual.getString(k);
assertTrue("String at idx=" + k, us1.equals(us2));
}
}
@Test
public void test50779_1(){
byte[] bytes = HexRead.readFromString(data_50779_1);
RecordInputStream in = TestcaseRecordInputStream.create(bytes);
assertEquals(SSTRecord.sid, in.getSid());
SSTRecord src = new SSTRecord(in);
assertEquals(81, src.getNumStrings());
byte[] serialized = src.serialize();
in = TestcaseRecordInputStream.create(serialized);
assertEquals(SSTRecord.sid, in.getSid());
SSTRecord dst = new SSTRecord(in);
assertEquals(81, dst.getNumStrings());
assertRecordEquals(src, dst);
}
@Test
public void test50779_2() {
byte[] bytes = HexRead.readFromString(data_50779_2);
RecordInputStream in = TestcaseRecordInputStream.create(bytes);
assertEquals(SSTRecord.sid, in.getSid());
SSTRecord src = new SSTRecord(in);
assertEquals(81, src.getNumStrings());
byte[] serialized = src.serialize();
in = TestcaseRecordInputStream.create(serialized);
assertEquals(SSTRecord.sid, in.getSid());
SSTRecord dst = new SSTRecord(in);
assertEquals(81, dst.getNumStrings());
assertRecordEquals(src, dst);
}
@Test
public void test57456() {
byte[] bytes = HexRead.readFromString("FC, 00, 08, 00, 00, 00, 00, 00, E1, 06, 00, 00");
RecordInputStream in = TestcaseRecordInputStream.create(bytes);
assertEquals(SSTRecord.sid, in.getSid());
SSTRecord src = new SSTRecord(in);
assertEquals(0, src.getNumStrings());
assertEquals(0, src.getNumUniqueStrings());
}
}