From 31681260ed03b4314768b7ec6fcd264bf774c9b9 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Fri, 11 Mar 2011 09:33:22 +0000 Subject: [PATCH] fixed RecordFormatException when reading unicode strings with photenic data, see Bugzilla 50779 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1080496 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../poi/hssf/record/common/UnicodeString.java | 3 +- .../record/cont/ContinuableRecordInput.java | 118 ++ .../apache/poi/hssf/record/TestSSTRecord.java | 1141 +++++++++++++++++ .../apache/poi/hssf/usermodel/TestBugs.java | 9 + test-data/spreadsheet/50779_1.xls | Bin 0 -> 23552 bytes test-data/spreadsheet/50779_2.xls | Bin 0 -> 23552 bytes 7 files changed, 1271 insertions(+), 1 deletion(-) create mode 100644 src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java create mode 100644 test-data/spreadsheet/50779_1.xls create mode 100644 test-data/spreadsheet/50779_2.xls diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 8ef8414db..435cf8695 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 50779 - fixed RecordFormatException when reading unicode strings with photenic data 50718 - More helpful error message when you try to create a CellReference with #REF! 50784 - XSSFColors return by XSSFFont now have theme information applied to them 50846 - Improve how XSSFColor inherits from Themes diff --git a/src/java/org/apache/poi/hssf/record/common/UnicodeString.java b/src/java/org/apache/poi/hssf/record/common/UnicodeString.java index 3d0813c87..cd8147a62 100644 --- a/src/java/org/apache/poi/hssf/record/common/UnicodeString.java +++ b/src/java/org/apache/poi/hssf/record/common/UnicodeString.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import org.apache.poi.hssf.record.cont.ContinuableRecordInput; import org.apache.poi.hssf.record.RecordInputStream; import org.apache.poi.hssf.record.cont.ContinuableRecordOutput; import org.apache.poi.util.BitField; @@ -435,7 +436,7 @@ public class UnicodeString implements Comparable { // TODO - make } if (isExtendedText() && (extensionLength > 0)) { - field_5_ext_rst = new ExtRst(in, extensionLength); + field_5_ext_rst = new ExtRst(new ContinuableRecordInput(in), extensionLength); if(field_5_ext_rst.getDataSize()+4 != extensionLength) { System.err.println("ExtRst was supposed to be " + extensionLength + " bytes long, but seems to actually be " + (field_5_ext_rst.getDataSize()+4)); } diff --git a/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java b/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java new file mode 100644 index 000000000..9925ad3eb --- /dev/null +++ b/src/java/org/apache/poi/hssf/record/cont/ContinuableRecordInput.java @@ -0,0 +1,118 @@ +/* + * ==================================================================== + * 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.cont; + +import org.apache.poi.hssf.record.RecordInputStream; +import org.apache.poi.hssf.record.ContinueRecord; +import org.apache.poi.util.LittleEndianInput; + +/** + * A decorated {@link RecordInputStream} that can read primitive data types + * (short, int, long, etc.) spanned across a {@link ContinueRecord } boundary. + * + *

+ * Most records construct themselves from {@link RecordInputStream}. + * This class assumes that a {@link ContinueRecord} record break always occurs at the type boundary, + * however, it is not always so. + *

+ * Two attachments to Bugzilla 50779 + * demonstrate that a CONTINUE break can appear right in between two bytes of a unicode character + * or between two bytes of a short. The problematic portion of the data is + * in a Asian Phonetic Settings Block (ExtRst) of a UnicodeString. + *

+ * {@link RecordInputStream} greedily requests the bytes to be read and stumbles on such files with a + * "Not enough data (1) to read requested (2) bytes" exception. The ContinuableRecordInput + * class circumvents this "type boundary" rule and reads data byte-by-byte rolling over CONTINUE if necessary. + *

+ * + *

+ * YK: For now (March 2011) this class is only used to read + * @link org.apache.poi.hssf.record.common.UnicodeString.ExtRst} blocks of a UnicodeString. + * + *

+ * + * @author Yegor Kozlov + */ +public class ContinuableRecordInput implements LittleEndianInput { + private final RecordInputStream _in; + + public ContinuableRecordInput(RecordInputStream in){ + _in = in; + } + public int available(){ + return _in.available(); + } + + public byte readByte(){ + return _in.readByte(); + } + + public int readUByte(){ + return _in.readUByte(); + } + + public short readShort(){ + return _in.readShort(); + } + + public int readUShort(){ + int ch1 = readUByte(); + int ch2 = readUByte(); + return (ch2 << 8) + (ch1 << 0); + } + + public int readInt(){ + int ch1 = _in.readUByte(); + int ch2 = _in.readUByte(); + int ch3 = _in.readUByte(); + int ch4 = _in.readUByte(); + return (ch4 << 24) + (ch3 << 16) + (ch2 << 8) + (ch1 << 0); + } + + public long readLong(){ + int b0 = _in.readUByte(); + int b1 = _in.readUByte(); + int b2 = _in.readUByte(); + int b3 = _in.readUByte(); + int b4 = _in.readUByte(); + int b5 = _in.readUByte(); + int b6 = _in.readUByte(); + int b7 = _in.readUByte(); + return (((long)b7 << 56) + + ((long)b6 << 48) + + ((long)b5 << 40) + + ((long)b4 << 32) + + ((long)b3 << 24) + + (b2 << 16) + + (b1 << 8) + + (b0 << 0)); + } + + public double readDouble(){ + return _in.readDouble(); + } + public void readFully(byte[] buf){ + _in.readFully(buf); + } + public void readFully(byte[] buf, int off, int len){ + _in.readFully(buf, off, len); + } + +} diff --git a/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java index 65d56cf31..c7d911b80 100644 --- a/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java +++ b/src/testcases/org/apache/poi/hssf/record/TestSSTRecord.java @@ -355,4 +355,1145 @@ public final class TestSSTRecord extends TestCase { HSSFTestDataSamples.writeOutAndReadBack(wb); } + + /** + * 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 + */ + public static void assertEquals(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)); + } + } + + + 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()); + + assertEquals(src, dst); + } + + 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()); + + assertEquals(src, dst); + } + } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java index 2725528e8..08566a2e9 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java @@ -2019,4 +2019,13 @@ if(1==2) { // TODO Identify what excel doesn't like, and check for that } + + public void test50779() throws Exception { + HSSFWorkbook wb1 = openSample("50779_1.xls"); + writeOutAndReadBack(wb1); + + HSSFWorkbook wb2 = openSample("50779_2.xls"); + writeOutAndReadBack(wb2); + } + } diff --git a/test-data/spreadsheet/50779_1.xls b/test-data/spreadsheet/50779_1.xls new file mode 100644 index 0000000000000000000000000000000000000000..17d32ece8fd24665988c02d062f16aee9d3e9e22 GIT binary patch literal 23552 zcmeHPYitzP6+Yu#8ygm1V+c?PX0dq~W9Z$rz3YU4T>>cv%*&;a;)JJx1c*~(WKbVj z9;uR+2q>!3ACV%WG-^tkG;JEHrcywyD$+J7szRft4>?h)O8wEO=|hbKalh}Z*Vwb; zgf{d_ZRf7eH*>zZuQ~V3*}c2RzWDPoy{Dg@^oID#LW#(GeI-&fi1%<_o72k#*ZcaY z=8ki44k|4FMHVP2#zGbq$^-G2N4#_nrxB4iq(HtEJr5Ll6VfjC3f4aEvMka$Z1FgU za~OO9&OCVpY^i)iXI8E_R`D6F_XEWRQZBt-g-o8dzq}Ex1?@HzG;6(w6e|@=fu5Yz zHm@s_khuH?_51ESL06AtUMTkF_SN;p#r8dC&)Of_XRPZw2R>jv714=OC}Tw`+bgST ztE%jLoV3r?(~9U6JiikMUE8>}WBVP0D^$n`m~)`8opk%T3Tu( zDY7Y!-fQAI{HFN)ezku-SBc8Gm8vvvidRJE$!xsPba1^*7l zRW;U-DsfnR@<0`iGpG-!>}Cc!iTmmd?MW;4$~gFk$lu_jSIfCLdAhLjf6ZNaf1XcT zQ2pU}_8L_Gf0_5VC<7&D&yuVi{*k+o<7W=TR}aG%4Z|1b@uv!+QkE&~<8e%;NRQ>2 zh#tpgM(A-|CaOotNZ)3Sp7$em7FBbWMbfsbqoX@+S7!qrJm!vRmwSyTk6XciY`|kKJqUv7NTd z?zac*XYA+geKunc*~9jz{epeKK4`yazhsZuhwO3tWqZn6;VS`mjUkXVU^JHHHYwhJ ze%K`L(7`ZuZicCMGfab0!cSffHA;xa0u64WK!ckozzwd0DA3?03N*Nh z0u64WK!cko(BLKtG`NWZ4Q`@9%1snVxrqYYc{+#!DK}9d+$3{{XKmo=AD*bBYEkJecZlepRkYFZ`e2OAMLaDFJRubKi0ELNNzf7 zf2Zdc?0NgNo_!ZJUL0Vbu-~+QKo1vgku@IbT+}*e>`&}d=!gCB>=ixZulNxp8bt7l z>2Zvd;CuqKh}+(L@-#+k{#*>W9gE3ax-ptXSB9Io{N$g1(YkeY(l%Jz`SeXp!u!xj; zhj8V5l=)1Y+7YdNRIydYBR6HKtVZ_D3fUt2q(i!78L%5ni@w_Au3U%19iv|KRcV$; zk3>DVVz%JStMxq0zE(24&Iu_ac%we3IjOi8T;#v2;k^9{(4+XKS%5MxlsWe zA2okHJY9JlZRM|rCo+$t1^xBL1aRd69G`4|TRsndj?agm!;_!KO$gwS4VqUE(ISsS z4r3mNq{TdrF~UC=M4dbiDWrKEBGnM?iu$x5ny^r#=NUz6^f^YF>@|8D-$b$+{mkGE zB&*TG4Bq~-8hwjCpVjD925GNZjs65L@7L%_Mq>lVqYoKHYV;nXNR57D6sgf;j3PDq ziczG-yD^H?=pROr8a=}(Qln28MQZd0qezW@U=*p*1B@ayuDwyD##J|p)VSV8ks4Rp zC{p7Z8%1hdU86{i>uMCKaYc8KjW&nqG(7gVt1Gw1%TulJSzmxFaTWtV0H-N(%a9-Pw25>fjO9XIu zGtcXp`~dEj0B%75w=jTf@^SR)I5?w7jh<%| zsnO?*A~kxOQKUvcGm6ycVMdV}eak3PqgNS4YV;?gNR6Ik6sggNj3PC9k5QyXzcGr` z=rKl-8hynmQlpm`MQZd9qezXOVHBy+CyXLBdV^78HbwDtN&U3SOB*ufV(w- zTO7bG3E*xE;65I}Ee+sW0=Q)X-0}c!MF7_tz^x46Rt0dYeH>S+8Jtn1Mr#^HYP6$K zq(%!GMQXI2QKUwz8AWQemrqY!?YIRW8FkK>m38G>zDa_8~>^D-P;@7mVYxvz6acYMi#Z5?}btW4k6 zDxbgdg4c}eneK15zxA`9di~Y`6PC~dp#?$8KIsxdyFAwECXIzBUP e_2I#x5cy1r+z`R@_Esl5^NO?FlMkY$y zm_VYWC548n>5oV$Rf?3RO&T=~KU%5KR#Bo7HL8lDJ`|BiRi&zG`c@+W+wVK;HTK=> zgtm05ws%(N%st$T&iP_L(k=m}> zy2iRXyATIm^YySMelynZlws#Kt?S-#*YE~4G6wD(x_E&dem$(3c%76>&BzvkyJ)kl zG)PKhvyZzs_}cwuf8n4xIG(FO?fhCb+BW+&@dYv$FI+nOx(0vvMGgLlD_TKA9~#*i z266TFgO`rLaD&#?tDRp zsl(5zvqm)W;qhrhP1w({d%)yvX5l7&pv}lTX~T;$5%D4N7sTk*a@Hr#5LW!pg){Gs zbESo~9}VYS!`lBZ;~pnvs1*EJk@v&j3MUHq>{0OgQSh=+@bV)3WJz4A21;|R#}AZg zT|E%fdcwdMttSq|wUzxKog zZdf4eh6S>2SRe})K=#fT@k9IM&i;L!C)PdjyWNTYXS!BwOY|SV_pe=v{@CvNU5Wln z8y`K8=>O!dudlj%;`Yw=qltb`9!J_wGjekp@%jZ)lb*Ft+gI&r`xW~&`?md!eZl?- z$UF9BJ-UF@r8D+TJ$}WWv(M?#x6$HzL+EMy4f|`{f#+Y>^B5S?0LvgTNoYM@DsVjc zRvG63iOEf3plgwG6_a|T#l*05N|8|}|L(MbEU1k`pc4wkQP(Y?yOCY5usQiS^Q4e1 znZRf^RER7=BHia;+z;$!Bl04!E7c;u1(um4G810fkJPI!!YeWWD@d9mdP4q&a9NJazMJJSC&Kf0cqD)r`%n*;b?W-i~m&GB-Sr+4L;hhAhJ?c+ zj2sah3s|QJL;7bC2BsQ;UDlWuun7w-MxIeki!n#0$)97i@r@&IG0qG!(ef4}%z)SP z7GsMspSKuQ1}Up~i}8dgAG8=rM!A9gF@}t4T8ti}nik{6sHVk;F{)`XR*Y&|d>W&g z7URRHrp3rGs%bGMjA~kp2BVr5sn2YFeCiqnZ}y+o-0+nKr6vagL2@ zTAW>@nil8PsHVjkHL7WGE{$qhoJFJh4Ot>>n1a1vmVf0%9`bS5U|h`z!D>S=yz>=Z zJ2M2E6@ua2vglf-I|j#6AA-#d!5Ts^{*6QMevKj6{16Opz(v=7Fa)z9STY2|n|aaw z(jiz=2!;;sq*sUShq7dx15Ue$TF{*uFMl~%)o>5JU zF=tfMVze36v>0bbH7!P%QB8}nWmMB*R2kK@7*9quEk=@2O^Y#PRMTSg7}c~GH%2ur zMvPHSi?L!<(_)ku)wCENMl~%)hEYw6F=15GVl)`lv=|3QH7!PfQB8|;Z&cIbtQ*y| zINwG!EzY!2O^b7ERMX<@8r8HouSPX3&ZtpMi*spI)8Z@|)z_1U+Hlw4TK#Ycwm1a4 zJp@}4f-Mcf?g+s?5`rxY!P-Nxftd1g+sph&{KbWclGY7XFp#q^X7c(XXKqPLB>FMz6}zGaE{6$ zABFI9&=yDnatJaGaumW(L?1nuypF?;pOX1ibJg!3BargG#o&!BQ`~0Pcws-H< zz6Nq%t$pe8cf2;7msjrD@T>Db@&-LjBr1^yA`e6!h&&K^Ao4)ufye`q2O8+KkIyVf{^rkp{zM3~8@bo#_W@HN z%vxlwBL7D)^Aeej$j$k5h!2?osfFQTNKd@bBC