diff options
author | Thomas Citharel <tcit@tcit.fr> | 2015-02-18 19:17:31 +0100 |
---|---|---|
committer | Thomas Citharel <tcit@tcit.fr> | 2015-02-18 19:17:31 +0100 |
commit | 4b1fa4c2febc7abbc6da3d65e4e760949a55843c (patch) | |
tree | a93ec906dbb03ec70e9cdc5dc876392c6d758e97 /inc/3rdparty/libraries/tcpdf/include | |
parent | 364953ede585b75fb29dc94b1c5f853053eaed0b (diff) | |
parent | df89c6f71adebfdb754ec3eb2fd775d8efbdb280 (diff) | |
download | wallabag-4b1fa4c2febc7abbc6da3d65e4e760949a55843c.tar.gz wallabag-4b1fa4c2febc7abbc6da3d65e4e760949a55843c.tar.zst wallabag-4b1fa4c2febc7abbc6da3d65e4e760949a55843c.zip |
Merge pull request #1081 from wallabag/dev1.9
Version 1.9.0
Diffstat (limited to 'inc/3rdparty/libraries/tcpdf/include')
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php | 1176 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php | 996 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php | 2866 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/sRGB.icc | bin | 0 -> 6922 bytes | |||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php | 462 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php | 481 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php | 18447 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php | 2583 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php | 355 | ||||
-rw-r--r-- | inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php | 2851 |
10 files changed, 30217 insertions, 0 deletions
diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php new file mode 100644 index 00000000..c1067299 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/barcodes/datamatrix.php | |||
@@ -0,0 +1,1176 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : datamatrix.php | ||
4 | // Version : 1.0.008 | ||
5 | // Begin : 2010-06-07 | ||
6 | // Last Update : 2014-05-06 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2010-2014 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the GNU Lesser General Public License | ||
25 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | ||
26 | // | ||
27 | // See LICENSE.TXT file for more information. | ||
28 | // ------------------------------------------------------------------- | ||
29 | // | ||
30 | // DESCRIPTION : | ||
31 | // | ||
32 | // Class to create DataMatrix ECC 200 barcode arrays for TCPDF class. | ||
33 | // DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code. | ||
34 | //============================================================+ | ||
35 | |||
36 | /** | ||
37 | * @file | ||
38 | * Class to create DataMatrix ECC 200 barcode arrays for TCPDF class. | ||
39 | * DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code. | ||
40 | * | ||
41 | * @package com.tecnick.tcpdf | ||
42 | * @author Nicola Asuni | ||
43 | * @version 1.0.008 | ||
44 | */ | ||
45 | |||
46 | // custom definitions | ||
47 | if (!defined('DATAMATRIXDEFS')) { | ||
48 | |||
49 | /** | ||
50 | * Indicate that definitions for this class are set | ||
51 | */ | ||
52 | define('DATAMATRIXDEFS', true); | ||
53 | |||
54 | // ----------------------------------------------------- | ||
55 | |||
56 | } // end of custom definitions | ||
57 | |||
58 | // #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# | ||
59 | |||
60 | |||
61 | /** | ||
62 | * ASCII encoding: ASCII character 0 to 127 (1 byte per CW) | ||
63 | */ | ||
64 | define('ENC_ASCII', 0); | ||
65 | |||
66 | /** | ||
67 | * C40 encoding: Upper-case alphanumeric (3/2 bytes per CW) | ||
68 | */ | ||
69 | define('ENC_C40', 1); | ||
70 | |||
71 | /** | ||
72 | * TEXT encoding: Lower-case alphanumeric (3/2 bytes per CW) | ||
73 | */ | ||
74 | define('ENC_TXT', 2); | ||
75 | |||
76 | /** | ||
77 | * X12 encoding: ANSI X12 (3/2 byte per CW) | ||
78 | */ | ||
79 | define('ENC_X12', 3); | ||
80 | |||
81 | /** | ||
82 | * EDIFACT encoding: ASCII character 32 to 94 (4/3 bytes per CW) | ||
83 | */ | ||
84 | define('ENC_EDF', 4); | ||
85 | |||
86 | /** | ||
87 | * BASE 256 encoding: ASCII character 0 to 255 (1 byte per CW) | ||
88 | */ | ||
89 | define('ENC_BASE256', 5); | ||
90 | |||
91 | /** | ||
92 | * ASCII extended encoding: ASCII character 128 to 255 (1/2 byte per CW) | ||
93 | */ | ||
94 | define('ENC_ASCII_EXT', 6); | ||
95 | |||
96 | /** | ||
97 | * ASCII number encoding: ASCII digits (2 bytes per CW) | ||
98 | */ | ||
99 | define('ENC_ASCII_NUM', 7); | ||
100 | |||
101 | /** | ||
102 | * @class Datamatrix | ||
103 | * Class to create DataMatrix ECC 200 barcode arrays for TCPDF class. | ||
104 | * DataMatrix (ISO/IEC 16022:2006) is a 2-dimensional bar code. | ||
105 | * | ||
106 | * @package com.tecnick.tcpdf | ||
107 | * @author Nicola Asuni | ||
108 | * @version 1.0.004 | ||
109 | */ | ||
110 | class Datamatrix { | ||
111 | |||
112 | /** | ||
113 | * Barcode array to be returned which is readable by TCPDF. | ||
114 | * @protected | ||
115 | */ | ||
116 | protected $barcode_array = array(); | ||
117 | |||
118 | /** | ||
119 | * Store last used encoding for data codewords. | ||
120 | * @protected | ||
121 | */ | ||
122 | protected $last_enc = ENC_ASCII; | ||
123 | |||
124 | /** | ||
125 | * Table of Data Matrix ECC 200 Symbol Attributes:<ul> | ||
126 | * <li>total matrix rows (including finder pattern)</li> | ||
127 | * <li>total matrix cols (including finder pattern)</li> | ||
128 | * <li>total matrix rows (without finder pattern)</li> | ||
129 | * <li>total matrix cols (without finder pattern)</li> | ||
130 | * <li>region data rows (with finder pattern)</li> | ||
131 | * <li>region data col (with finder pattern)</li> | ||
132 | * <li>region data rows (without finder pattern)</li> | ||
133 | * <li>region data col (without finder pattern)</li> | ||
134 | * <li>horizontal regions</li> | ||
135 | * <li>vertical regions</li> | ||
136 | * <li>regions</li> | ||
137 | * <li>data codewords</li> | ||
138 | * <li>error codewords</li> | ||
139 | * <li>blocks</li> | ||
140 | * <li>data codewords per block</li> | ||
141 | * <li>error codewords per block</li> | ||
142 | * </ul> | ||
143 | * @protected | ||
144 | */ | ||
145 | protected $symbattr = array( | ||
146 | // square form --------------------------------------------------------------------------------------- | ||
147 | array(0x00a,0x00a,0x008,0x008,0x00a,0x00a,0x008,0x008,0x001,0x001,0x001,0x003,0x005,0x001,0x003,0x005), // 10x10 | ||
148 | array(0x00c,0x00c,0x00a,0x00a,0x00c,0x00c,0x00a,0x00a,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 12x12 | ||
149 | array(0x00e,0x00e,0x00c,0x00c,0x00e,0x00e,0x00c,0x00c,0x001,0x001,0x001,0x008,0x00a,0x001,0x008,0x00a), // 14x14 | ||
150 | array(0x010,0x010,0x00e,0x00e,0x010,0x010,0x00e,0x00e,0x001,0x001,0x001,0x00c,0x00c,0x001,0x00c,0x00c), // 16x16 | ||
151 | array(0x012,0x012,0x010,0x010,0x012,0x012,0x010,0x010,0x001,0x001,0x001,0x012,0x00e,0x001,0x012,0x00e), // 18x18 | ||
152 | array(0x014,0x014,0x012,0x012,0x014,0x014,0x012,0x012,0x001,0x001,0x001,0x016,0x012,0x001,0x016,0x012), // 20x20 | ||
153 | array(0x016,0x016,0x014,0x014,0x016,0x016,0x014,0x014,0x001,0x001,0x001,0x01e,0x014,0x001,0x01e,0x014), // 22x22 | ||
154 | array(0x018,0x018,0x016,0x016,0x018,0x018,0x016,0x016,0x001,0x001,0x001,0x024,0x018,0x001,0x024,0x018), // 24x24 | ||
155 | array(0x01a,0x01a,0x018,0x018,0x01a,0x01a,0x018,0x018,0x001,0x001,0x001,0x02c,0x01c,0x001,0x02c,0x01c), // 26x26 | ||
156 | array(0x020,0x020,0x01c,0x01c,0x010,0x010,0x00e,0x00e,0x002,0x002,0x004,0x03e,0x024,0x001,0x03e,0x024), // 32x32 | ||
157 | array(0x024,0x024,0x020,0x020,0x012,0x012,0x010,0x010,0x002,0x002,0x004,0x056,0x02a,0x001,0x056,0x02a), // 36x36 | ||
158 | array(0x028,0x028,0x024,0x024,0x014,0x014,0x012,0x012,0x002,0x002,0x004,0x072,0x030,0x001,0x072,0x030), // 40x40 | ||
159 | array(0x02c,0x02c,0x028,0x028,0x016,0x016,0x014,0x014,0x002,0x002,0x004,0x090,0x038,0x001,0x090,0x038), // 44x44 | ||
160 | array(0x030,0x030,0x02c,0x02c,0x018,0x018,0x016,0x016,0x002,0x002,0x004,0x0ae,0x044,0x001,0x0ae,0x044), // 48x48 | ||
161 | array(0x034,0x034,0x030,0x030,0x01a,0x01a,0x018,0x018,0x002,0x002,0x004,0x0cc,0x054,0x002,0x066,0x02a), // 52x52 | ||
162 | array(0x040,0x040,0x038,0x038,0x010,0x010,0x00e,0x00e,0x004,0x004,0x010,0x118,0x070,0x002,0x08c,0x038), // 64x64 | ||
163 | array(0x048,0x048,0x040,0x040,0x012,0x012,0x010,0x010,0x004,0x004,0x010,0x170,0x090,0x004,0x05c,0x024), // 72x72 | ||
164 | array(0x050,0x050,0x048,0x048,0x014,0x014,0x012,0x012,0x004,0x004,0x010,0x1c8,0x0c0,0x004,0x072,0x030), // 80x80 | ||
165 | array(0x058,0x058,0x050,0x050,0x016,0x016,0x014,0x014,0x004,0x004,0x010,0x240,0x0e0,0x004,0x090,0x038), // 88x88 | ||
166 | array(0x060,0x060,0x058,0x058,0x018,0x018,0x016,0x016,0x004,0x004,0x010,0x2b8,0x110,0x004,0x0ae,0x044), // 96x96 | ||
167 | array(0x068,0x068,0x060,0x060,0x01a,0x01a,0x018,0x018,0x004,0x004,0x010,0x330,0x150,0x006,0x088,0x038), // 104x104 | ||
168 | array(0x078,0x078,0x06c,0x06c,0x014,0x014,0x012,0x012,0x006,0x006,0x024,0x41a,0x198,0x006,0x0af,0x044), // 120x120 | ||
169 | array(0x084,0x084,0x078,0x078,0x016,0x016,0x014,0x014,0x006,0x006,0x024,0x518,0x1f0,0x008,0x0a3,0x03e), // 132x132 | ||
170 | array(0x090,0x090,0x084,0x084,0x018,0x018,0x016,0x016,0x006,0x006,0x024,0x616,0x26c,0x00a,0x09c,0x03e), // 144x144 | ||
171 | // rectangular form (currently unused) --------------------------------------------------------------------------- | ||
172 | array(0x008,0x012,0x006,0x010,0x008,0x012,0x006,0x010,0x001,0x001,0x001,0x005,0x007,0x001,0x005,0x007), // 8x18 | ||
173 | array(0x008,0x020,0x006,0x01c,0x008,0x010,0x006,0x00e,0x001,0x002,0x002,0x00a,0x00b,0x001,0x00a,0x00b), // 8x32 | ||
174 | array(0x00c,0x01a,0x00a,0x018,0x00c,0x01a,0x00a,0x018,0x001,0x001,0x001,0x010,0x00e,0x001,0x010,0x00e), // 12x26 | ||
175 | array(0x00c,0x024,0x00a,0x020,0x00c,0x012,0x00a,0x010,0x001,0x002,0x002,0x00c,0x012,0x001,0x00c,0x012), // 12x36 | ||
176 | array(0x010,0x024,0x00e,0x020,0x010,0x012,0x00e,0x010,0x001,0x002,0x002,0x020,0x018,0x001,0x020,0x018), // 16x36 | ||
177 | array(0x010,0x030,0x00e,0x02c,0x010,0x018,0x00e,0x016,0x001,0x002,0x002,0x031,0x01c,0x001,0x031,0x01c) // 16x48 | ||
178 | ); | ||
179 | |||
180 | /** | ||
181 | * Map encodation modes whit character sets. | ||
182 | * @protected | ||
183 | */ | ||
184 | protected $chset_id = array(ENC_C40 => 'C40', ENC_TXT => 'TXT', ENC_X12 =>'X12'); | ||
185 | |||
186 | /** | ||
187 | * Basic set of characters for each encodation mode. | ||
188 | * @protected | ||
189 | */ | ||
190 | protected $chset = array( | ||
191 | 'C40' => array( // Basic set for C40 ---------------------------------------------------------------------------- | ||
192 | 'S1'=>0x00,'S2'=>0x01,'S3'=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, // | ||
193 | 0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x41=>0x0e,0x42=>0x0f,0x43=>0x10,0x44=>0x11,0x45=>0x12,0x46=>0x13, // | ||
194 | 0x47=>0x14,0x48=>0x15,0x49=>0x16,0x4a=>0x17,0x4b=>0x18,0x4c=>0x19,0x4d=>0x1a,0x4e=>0x1b,0x4f=>0x1c,0x50=>0x1d, // | ||
195 | 0x51=>0x1e,0x52=>0x1f,0x53=>0x20,0x54=>0x21,0x55=>0x22,0x56=>0x23,0x57=>0x24,0x58=>0x25,0x59=>0x26,0x5a=>0x27),// | ||
196 | 'TXT' => array( // Basic set for TEXT --------------------------------------------------------------------------- | ||
197 | 'S1'=>0x00,'S2'=>0x01,'S3'=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, // | ||
198 | 0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x61=>0x0e,0x62=>0x0f,0x63=>0x10,0x64=>0x11,0x65=>0x12,0x66=>0x13, // | ||
199 | 0x67=>0x14,0x68=>0x15,0x69=>0x16,0x6a=>0x17,0x6b=>0x18,0x6c=>0x19,0x6d=>0x1a,0x6e=>0x1b,0x6f=>0x1c,0x70=>0x1d, // | ||
200 | 0x71=>0x1e,0x72=>0x1f,0x73=>0x20,0x74=>0x21,0x75=>0x22,0x76=>0x23,0x77=>0x24,0x78=>0x25,0x79=>0x26,0x7a=>0x27),// | ||
201 | 'SH1' => array( // Shift 1 set ---------------------------------------------------------------------------------- | ||
202 | 0x00=>0x00,0x01=>0x01,0x02=>0x02,0x03=>0x03,0x04=>0x04,0x05=>0x05,0x06=>0x06,0x07=>0x07,0x08=>0x08,0x09=>0x09, // | ||
203 | 0x0a=>0x0a,0x0b=>0x0b,0x0c=>0x0c,0x0d=>0x0d,0x0e=>0x0e,0x0f=>0x0f,0x10=>0x10,0x11=>0x11,0x12=>0x12,0x13=>0x13, // | ||
204 | 0x14=>0x14,0x15=>0x15,0x16=>0x16,0x17=>0x17,0x18=>0x18,0x19=>0x19,0x1a=>0x1a,0x1b=>0x1b,0x1c=>0x1c,0x1d=>0x1d, // | ||
205 | 0x1e=>0x1e,0x1f=>0x1f), // | ||
206 | 'SH2' => array( // Shift 2 set ---------------------------------------------------------------------------------- | ||
207 | 0x21=>0x00,0x22=>0x01,0x23=>0x02,0x24=>0x03,0x25=>0x04,0x26=>0x05,0x27=>0x06,0x28=>0x07,0x29=>0x08,0x2a=>0x09, // | ||
208 | 0x2b=>0x0a,0x2c=>0x0b,0x2d=>0x0c,0x2e=>0x0d,0x2f=>0x0e,0x3a=>0x0f,0x3b=>0x10,0x3c=>0x11,0x3d=>0x12,0x3e=>0x13, // | ||
209 | 0x3f=>0x14,0x40=>0x15,0x5b=>0x16,0x5c=>0x17,0x5d=>0x18,0x5e=>0x19,0x5f=>0x1a,'F1'=>0x1b,'US'=>0x1e), // | ||
210 | 'S3C' => array( // Shift 3 set for C40 -------------------------------------------------------------------------- | ||
211 | 0x60=>0x00,0x61=>0x01,0x62=>0x02,0x63=>0x03,0x64=>0x04,0x65=>0x05,0x66=>0x06,0x67=>0x07,0x68=>0x08,0x69=>0x09, // | ||
212 | 0x6a=>0x0a,0x6b=>0x0b,0x6c=>0x0c,0x6d=>0x0d,0x6e=>0x0e,0x6f=>0x0f,0x70=>0x10,0x71=>0x11,0x72=>0x12,0x73=>0x13, // | ||
213 | 0x74=>0x14,0x75=>0x15,0x76=>0x16,0x77=>0x17,0x78=>0x18,0x79=>0x19,0x7a=>0x1a,0x7b=>0x1b,0x7c=>0x1c,0x7d=>0x1d, // | ||
214 | 0x7e=>0x1e,0x7f=>0x1f), | ||
215 | 'S3T' => array( // Shift 3 set for TEXT ------------------------------------------------------------------------- | ||
216 | 0x60=>0x00,0x41=>0x01,0x42=>0x02,0x43=>0x03,0x44=>0x04,0x45=>0x05,0x46=>0x06,0x47=>0x07,0x48=>0x08,0x49=>0x09, // | ||
217 | 0x4a=>0x0a,0x4b=>0x0b,0x4c=>0x0c,0x4d=>0x0d,0x4e=>0x0e,0x4f=>0x0f,0x50=>0x10,0x51=>0x11,0x52=>0x12,0x53=>0x13, // | ||
218 | 0x54=>0x14,0x55=>0x15,0x56=>0x16,0x57=>0x17,0x58=>0x18,0x59=>0x19,0x5a=>0x1a,0x7b=>0x1b,0x7c=>0x1c,0x7d=>0x1d, // | ||
219 | 0x7e=>0x1e,0x7f=>0x1f), // | ||
220 | 'X12' => array( // Set for X12 ---------------------------------------------------------------------------------- | ||
221 | 0x0d=>0x00,0x2a=>0x01,0x3e=>0x02,0x20=>0x03,0x30=>0x04,0x31=>0x05,0x32=>0x06,0x33=>0x07,0x34=>0x08,0x35=>0x09, // | ||
222 | 0x36=>0x0a,0x37=>0x0b,0x38=>0x0c,0x39=>0x0d,0x41=>0x0e,0x42=>0x0f,0x43=>0x10,0x44=>0x11,0x45=>0x12,0x46=>0x13, // | ||
223 | 0x47=>0x14,0x48=>0x15,0x49=>0x16,0x4a=>0x17,0x4b=>0x18,0x4c=>0x19,0x4d=>0x1a,0x4e=>0x1b,0x4f=>0x1c,0x50=>0x1d, // | ||
224 | 0x51=>0x1e,0x52=>0x1f,0x53=>0x20,0x54=>0x21,0x55=>0x22,0x56=>0x23,0x57=>0x24,0x58=>0x25,0x59=>0x26,0x5a=>0x27) // | ||
225 | ); | ||
226 | |||
227 | // ----------------------------------------------------------------------------- | ||
228 | |||
229 | /** | ||
230 | * This is the class constructor. | ||
231 | * Creates a datamatrix object | ||
232 | * @param $code (string) Code to represent using Datamatrix. | ||
233 | * @public | ||
234 | */ | ||
235 | public function __construct($code) { | ||
236 | $barcode_array = array(); | ||
237 | if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { | ||
238 | return false; | ||
239 | } | ||
240 | // get data codewords | ||
241 | $cw = $this->getHighLevelEncoding($code); | ||
242 | // number of data codewords | ||
243 | $nd = count($cw); | ||
244 | // check size | ||
245 | if ($nd > 1558) { | ||
246 | return false; | ||
247 | } | ||
248 | // get minimum required matrix size. | ||
249 | foreach ($this->symbattr as $params) { | ||
250 | if ($params[11] >= $nd) { | ||
251 | break; | ||
252 | } | ||
253 | } | ||
254 | if ($params[11] < $nd) { | ||
255 | // too much data | ||
256 | return false; | ||
257 | } elseif ($params[11] > $nd) { | ||
258 | // add padding | ||
259 | if ((($params[11] - $nd) > 1) AND ($cw[($nd - 1)] != 254)) { | ||
260 | if ($this->last_enc == ENC_EDF) { | ||
261 | // switch to ASCII encoding | ||
262 | $cw[] = 124; | ||
263 | ++$nd; | ||
264 | } elseif (($this->last_enc != ENC_ASCII) AND ($this->last_enc != ENC_BASE256)) { | ||
265 | // switch to ASCII encoding | ||
266 | $cw[] = 254; | ||
267 | ++$nd; | ||
268 | } | ||
269 | } | ||
270 | if ($params[11] > $nd) { | ||
271 | // add first pad | ||
272 | $cw[] = 129; | ||
273 | ++$nd; | ||
274 | // add remaining pads | ||
275 | for ($i = $nd; $i < $params[11]; ++$i) { | ||
276 | $cw[] = $this->get253StateCodeword(129, $i); | ||
277 | } | ||
278 | } | ||
279 | } | ||
280 | // add error correction codewords | ||
281 | $cw = $this->getErrorCorrection($cw, $params[13], $params[14], $params[15]); | ||
282 | // initialize empty arrays | ||
283 | $grid = array_fill(0, ($params[2] * $params[3]), 0); | ||
284 | // get placement map | ||
285 | $places = $this->getPlacementMap($params[2], $params[3]); | ||
286 | // fill the grid with data | ||
287 | $grid = array(); | ||
288 | $i = 0; | ||
289 | // region data row max index | ||
290 | $rdri = ($params[4] - 1); | ||
291 | // region data column max index | ||
292 | $rdci = ($params[5] - 1); | ||
293 | // for each vertical region | ||
294 | for ($vr = 0; $vr < $params[9]; ++$vr) { | ||
295 | // for each row on region | ||
296 | for ($r = 0; $r < $params[4]; ++$r) { | ||
297 | // get row | ||
298 | $row = (($vr * $params[4]) + $r); | ||
299 | // for each horizontal region | ||
300 | for ($hr = 0; $hr < $params[8]; ++$hr) { | ||
301 | // for each column on region | ||
302 | for ($c = 0; $c < $params[5]; ++$c) { | ||
303 | // get column | ||
304 | $col = (($hr * $params[5]) + $c); | ||
305 | // braw bits by case | ||
306 | if ($r == 0) { | ||
307 | // top finder pattern | ||
308 | if ($c % 2) { | ||
309 | $grid[$row][$col] = 0; | ||
310 | } else { | ||
311 | $grid[$row][$col] = 1; | ||
312 | } | ||
313 | } elseif ($r == $rdri) { | ||
314 | // bottom finder pattern | ||
315 | $grid[$row][$col] = 1; | ||
316 | } elseif ($c == 0) { | ||
317 | // left finder pattern | ||
318 | $grid[$row][$col] = 1; | ||
319 | } elseif ($c == $rdci) { | ||
320 | // right finder pattern | ||
321 | if ($r % 2) { | ||
322 | $grid[$row][$col] = 1; | ||
323 | } else { | ||
324 | $grid[$row][$col] = 0; | ||
325 | } | ||
326 | } else { // data bit | ||
327 | if ($places[$i] < 2) { | ||
328 | $grid[$row][$col] = $places[$i]; | ||
329 | } else { | ||
330 | // codeword ID | ||
331 | $cw_id = (floor($places[$i] / 10) - 1); | ||
332 | // codeword BIT mask | ||
333 | $cw_bit = pow(2, (8 - ($places[$i] % 10))); | ||
334 | $grid[$row][$col] = (($cw[$cw_id] & $cw_bit) == 0) ? 0 : 1; | ||
335 | } | ||
336 | ++$i; | ||
337 | } | ||
338 | } | ||
339 | } | ||
340 | } | ||
341 | } | ||
342 | $this->barcode_array['num_rows'] = $params[0]; | ||
343 | $this->barcode_array['num_cols'] = $params[1]; | ||
344 | $this->barcode_array['bcode'] = $grid; | ||
345 | } | ||
346 | |||
347 | /** | ||
348 | * Returns a barcode array which is readable by TCPDF | ||
349 | * @return array barcode array readable by TCPDF; | ||
350 | * @public | ||
351 | */ | ||
352 | public function getBarcodeArray() { | ||
353 | return $this->barcode_array; | ||
354 | } | ||
355 | |||
356 | /** | ||
357 | * Product of two numbers in a Power-of-Two Galois Field | ||
358 | * @param $a (int) first number to multiply. | ||
359 | * @param $b (int) second number to multiply. | ||
360 | * @param $log (array) Log table. | ||
361 | * @param $alog (array) Anti-Log table. | ||
362 | * @param $gf (array) Number of Factors of the Reed-Solomon polynomial. | ||
363 | * @return int product | ||
364 | * @protected | ||
365 | */ | ||
366 | protected function getGFProduct($a, $b, $log, $alog, $gf) { | ||
367 | if (($a == 0) OR ($b == 0)) { | ||
368 | return 0; | ||
369 | } | ||
370 | return ($alog[($log[$a] + $log[$b]) % ($gf - 1)]); | ||
371 | } | ||
372 | |||
373 | /** | ||
374 | * Add error correction codewords to data codewords array (ANNEX E). | ||
375 | * @param $wd (array) Array of datacodewords. | ||
376 | * @param $nb (int) Number of blocks. | ||
377 | * @param $nd (int) Number of data codewords per block. | ||
378 | * @param $nc (int) Number of correction codewords per block. | ||
379 | * @param $gf (int) numner of fields on log/antilog table (power of 2). | ||
380 | * @param $pp (int) The value of its prime modulus polynomial (301 for ECC200). | ||
381 | * @return array data codewords + error codewords | ||
382 | * @protected | ||
383 | */ | ||
384 | protected function getErrorCorrection($wd, $nb, $nd, $nc, $gf=256, $pp=301) { | ||
385 | // generate the log ($log) and antilog ($alog) tables | ||
386 | $log[0] = 0; | ||
387 | $alog[0] = 1; | ||
388 | for ($i = 1; $i < $gf; ++$i) { | ||
389 | $alog[$i] = ($alog[($i - 1)] * 2); | ||
390 | if ($alog[$i] >= $gf) { | ||
391 | $alog[$i] ^= $pp; | ||
392 | } | ||
393 | $log[$alog[$i]] = $i; | ||
394 | } | ||
395 | ksort($log); | ||
396 | // generate the polynomial coefficients (c) | ||
397 | $c = array_fill(0, ($nc + 1), 0); | ||
398 | $c[0] = 1; | ||
399 | for ($i = 1; $i <= $nc; ++$i) { | ||
400 | $c[$i] = $c[($i-1)]; | ||
401 | for ($j = ($i - 1); $j >= 1; --$j) { | ||
402 | $c[$j] = $c[($j - 1)] ^ $this->getGFProduct($c[$j], $alog[$i], $log, $alog, $gf); | ||
403 | } | ||
404 | $c[0] = $this->getGFProduct($c[0], $alog[$i], $log, $alog, $gf); | ||
405 | } | ||
406 | ksort($c); | ||
407 | // total number of data codewords | ||
408 | $num_wd = ($nb * $nd); | ||
409 | // total number of error codewords | ||
410 | $num_we = ($nb * $nc); | ||
411 | // for each block | ||
412 | for ($b = 0; $b < $nb; ++$b) { | ||
413 | // create interleaved data block | ||
414 | $block = array(); | ||
415 | for ($n = $b; $n < $num_wd; $n += $nb) { | ||
416 | $block[] = $wd[$n]; | ||
417 | } | ||
418 | // initialize error codewords | ||
419 | $we = array_fill(0, ($nc + 1), 0); | ||
420 | // calculate error correction codewords for this block | ||
421 | for ($i = 0; $i < $nd; ++$i) { | ||
422 | $k = ($we[0] ^ $block[$i]); | ||
423 | for ($j = 0; $j < $nc; ++$j) { | ||
424 | $we[$j] = ($we[($j + 1)] ^ $this->getGFProduct($k, $c[($nc - $j - 1)], $log, $alog, $gf)); | ||
425 | } | ||
426 | } | ||
427 | // add error codewords at the end of data codewords | ||
428 | $j = 0; | ||
429 | for ($i = $b; $i < $num_we; $i += $nb) { | ||
430 | $wd[($num_wd + $i)] = $we[$j]; | ||
431 | ++$j; | ||
432 | } | ||
433 | } | ||
434 | // reorder codewords | ||
435 | ksort($wd); | ||
436 | return $wd; | ||
437 | } | ||
438 | |||
439 | /** | ||
440 | * Return the 253-state codeword | ||
441 | * @param $cwpad (int) Pad codeword. | ||
442 | * @param $cwpos (int) Number of data codewords from the beginning of encoded data. | ||
443 | * @return pad codeword | ||
444 | * @protected | ||
445 | */ | ||
446 | protected function get253StateCodeword($cwpad, $cwpos) { | ||
447 | $pad = ($cwpad + (((149 * $cwpos) % 253) + 1)); | ||
448 | if ($pad > 254) { | ||
449 | $pad -= 254; | ||
450 | } | ||
451 | return $pad; | ||
452 | } | ||
453 | |||
454 | /** | ||
455 | * Return the 255-state codeword | ||
456 | * @param $cwpad (int) Pad codeword. | ||
457 | * @param $cwpos (int) Number of data codewords from the beginning of encoded data. | ||
458 | * @return pad codeword | ||
459 | * @protected | ||
460 | */ | ||
461 | protected function get255StateCodeword($cwpad, $cwpos) { | ||
462 | $pad = ($cwpad + (((149 * $cwpos) % 255) + 1)); | ||
463 | if ($pad > 255) { | ||
464 | $pad -= 256; | ||
465 | } | ||
466 | return $pad; | ||
467 | } | ||
468 | |||
469 | /** | ||
470 | * Returns true if the char belongs to the selected mode | ||
471 | * @param $chr (int) Character (byte) to check. | ||
472 | * @param $mode (int) Current encoding mode. | ||
473 | * @return boolean true if the char is of the selected mode. | ||
474 | * @protected | ||
475 | */ | ||
476 | protected function isCharMode($chr, $mode) { | ||
477 | $status = false; | ||
478 | switch ($mode) { | ||
479 | case ENC_ASCII: { // ASCII character 0 to 127 | ||
480 | $status = (($chr >= 0) AND ($chr <= 127)); | ||
481 | break; | ||
482 | } | ||
483 | case ENC_C40: { // Upper-case alphanumeric | ||
484 | $status = (($chr == 32) OR (($chr >= 48) AND ($chr <= 57)) OR (($chr >= 65) AND ($chr <= 90))); | ||
485 | break; | ||
486 | } | ||
487 | case ENC_TXT: { // Lower-case alphanumeric | ||
488 | $status = (($chr == 32) OR (($chr >= 48) AND ($chr <= 57)) OR (($chr >= 97) AND ($chr <= 122))); | ||
489 | break; | ||
490 | } | ||
491 | case ENC_X12: { // ANSI X12 | ||
492 | $status = (($chr == 13) OR ($chr == 42) OR ($chr == 62)); | ||
493 | break; | ||
494 | } | ||
495 | case ENC_EDF: { // ASCII character 32 to 94 | ||
496 | $status = (($chr >= 32) AND ($chr <= 94)); | ||
497 | break; | ||
498 | } | ||
499 | case ENC_BASE256: { // Function character (FNC1, Structured Append, Reader Program, or Code Page) | ||
500 | $status = (($chr == 232) OR ($chr == 233) OR ($chr == 234) OR ($chr == 241)); | ||
501 | break; | ||
502 | } | ||
503 | case ENC_ASCII_EXT: { // ASCII character 128 to 255 | ||
504 | $status = (($chr >= 128) AND ($chr <= 255)); | ||
505 | break; | ||
506 | } | ||
507 | case ENC_ASCII_NUM: { // ASCII digits | ||
508 | $status = (($chr >= 48) AND ($chr <= 57)); | ||
509 | break; | ||
510 | } | ||
511 | } | ||
512 | return $status; | ||
513 | } | ||
514 | |||
515 | /** | ||
516 | * The look-ahead test scans the data to be encoded to find the best mode (Annex P - steps from J to S). | ||
517 | * @param $data (string) data to encode | ||
518 | * @param $pos (int) current position | ||
519 | * @param $mode (int) current encoding mode | ||
520 | * @return int encoding mode | ||
521 | * @protected | ||
522 | */ | ||
523 | protected function lookAheadTest($data, $pos, $mode) { | ||
524 | $data_length = strlen($data); | ||
525 | if ($pos >= $data_length) { | ||
526 | return $mode; | ||
527 | } | ||
528 | $charscount = 0; // count processed chars | ||
529 | // STEP J | ||
530 | if ($mode == ENC_ASCII) { | ||
531 | $numch = array(0, 1, 1, 1, 1, 1.25); | ||
532 | } else { | ||
533 | $numch = array(1, 2, 2, 2, 2, 2.25); | ||
534 | $numch[$mode] = 0; | ||
535 | } | ||
536 | while (true) { | ||
537 | // STEP K | ||
538 | if (($pos + $charscount) == $data_length) { | ||
539 | if ($numch[ENC_ASCII] <= ceil(min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256]))) { | ||
540 | return ENC_ASCII; | ||
541 | } | ||
542 | if ($numch[ENC_BASE256] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF]))) { | ||
543 | return ENC_BASE256; | ||
544 | } | ||
545 | if ($numch[ENC_EDF] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_BASE256]))) { | ||
546 | return ENC_EDF; | ||
547 | } | ||
548 | if ($numch[ENC_TXT] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256]))) { | ||
549 | return ENC_TXT; | ||
550 | } | ||
551 | if ($numch[ENC_X12] < ceil(min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256]))) { | ||
552 | return ENC_X12; | ||
553 | } | ||
554 | return ENC_C40; | ||
555 | } | ||
556 | // get char | ||
557 | $chr = ord($data[$pos + $charscount]); | ||
558 | $charscount++; | ||
559 | // STEP L | ||
560 | if ($this->isCharMode($chr, ENC_ASCII_NUM)) { | ||
561 | $numch[ENC_ASCII] += (1 / 2); | ||
562 | } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { | ||
563 | $numch[ENC_ASCII] = ceil($numch[ENC_ASCII]); | ||
564 | $numch[ENC_ASCII] += 2; | ||
565 | } else { | ||
566 | $numch[ENC_ASCII] = ceil($numch[ENC_ASCII]); | ||
567 | $numch[ENC_ASCII] += 1; | ||
568 | } | ||
569 | // STEP M | ||
570 | if ($this->isCharMode($chr, ENC_C40)) { | ||
571 | $numch[ENC_C40] += (2 / 3); | ||
572 | } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { | ||
573 | $numch[ENC_C40] += (8 / 3); | ||
574 | } else { | ||
575 | $numch[ENC_C40] += (4 / 3); | ||
576 | } | ||
577 | // STEP N | ||
578 | if ($this->isCharMode($chr, ENC_TXT)) { | ||
579 | $numch[ENC_TXT] += (2 / 3); | ||
580 | } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { | ||
581 | $numch[ENC_TXT] += (8 / 3); | ||
582 | } else { | ||
583 | $numch[ENC_TXT] += (4 / 3); | ||
584 | } | ||
585 | // STEP O | ||
586 | if ($this->isCharMode($chr, ENC_X12) OR $this->isCharMode($chr, ENC_C40)) { | ||
587 | $numch[ENC_X12] += (2 / 3); | ||
588 | } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { | ||
589 | $numch[ENC_X12] += (13 / 3); | ||
590 | } else { | ||
591 | $numch[ENC_X12] += (10 / 3); | ||
592 | } | ||
593 | // STEP P | ||
594 | if ($this->isCharMode($chr, ENC_EDF)) { | ||
595 | $numch[ENC_EDF] += (3 / 4); | ||
596 | } elseif ($this->isCharMode($chr, ENC_ASCII_EXT)) { | ||
597 | $numch[ENC_EDF] += (17 / 4); | ||
598 | } else { | ||
599 | $numch[ENC_EDF] += (13 / 4); | ||
600 | } | ||
601 | // STEP Q | ||
602 | if ($this->isCharMode($chr, ENC_BASE256)) { | ||
603 | $numch[ENC_BASE256] += 4; | ||
604 | } else { | ||
605 | $numch[ENC_BASE256] += 1; | ||
606 | } | ||
607 | // STEP R | ||
608 | if ($charscount >= 4) { | ||
609 | if (($numch[ENC_ASCII] + 1) <= min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256])) { | ||
610 | return ENC_ASCII; | ||
611 | } | ||
612 | if ((($numch[ENC_BASE256] + 1) <= $numch[ENC_ASCII]) | ||
613 | OR (($numch[ENC_BASE256] + 1) < min($numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_EDF]))) { | ||
614 | return ENC_BASE256; | ||
615 | } | ||
616 | if (($numch[ENC_EDF] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_X12], $numch[ENC_BASE256])) { | ||
617 | return ENC_EDF; | ||
618 | } | ||
619 | if (($numch[ENC_TXT] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_X12], $numch[ENC_EDF], $numch[ENC_BASE256])) { | ||
620 | return ENC_TXT; | ||
621 | } | ||
622 | if (($numch[ENC_X12] + 1) < min($numch[ENC_ASCII], $numch[ENC_C40], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256])) { | ||
623 | return ENC_X12; | ||
624 | } | ||
625 | if (($numch[ENC_C40] + 1) < min($numch[ENC_ASCII], $numch[ENC_TXT], $numch[ENC_EDF], $numch[ENC_BASE256])) { | ||
626 | if ($numch[ENC_C40] < $numch[ENC_X12]) { | ||
627 | return ENC_C40; | ||
628 | } | ||
629 | if ($numch[ENC_C40] == $numch[ENC_X12]) { | ||
630 | $k = ($pos + $charscount + 1); | ||
631 | while ($k < $data_length) { | ||
632 | $tmpchr = ord($data{$k}); | ||
633 | if ($this->isCharMode($tmpchr, ENC_X12)) { | ||
634 | return ENC_X12; | ||
635 | } elseif (!($this->isCharMode($tmpchr, ENC_X12) OR $this->isCharMode($tmpchr, ENC_C40))) { | ||
636 | break; | ||
637 | } | ||
638 | ++$k; | ||
639 | } | ||
640 | return ENC_C40; | ||
641 | } | ||
642 | } | ||
643 | } | ||
644 | } // end of while | ||
645 | } | ||
646 | |||
647 | /** | ||
648 | * Get the switching codeword to a new encoding mode (latch codeword) | ||
649 | * @param $mode (int) New encoding mode. | ||
650 | * @return (int) Switch codeword. | ||
651 | * @protected | ||
652 | */ | ||
653 | protected function getSwitchEncodingCodeword($mode) { | ||
654 | switch ($mode) { | ||
655 | case ENC_ASCII: { // ASCII character 0 to 127 | ||
656 | $cw = 254; | ||
657 | if ($this->last_enc == ENC_EDF) { | ||
658 | $cw = 124; | ||
659 | } | ||
660 | break; | ||
661 | } | ||
662 | case ENC_C40: { // Upper-case alphanumeric | ||
663 | $cw = 230; | ||
664 | break; | ||
665 | } | ||
666 | case ENC_TXT: { // Lower-case alphanumeric | ||
667 | $cw = 239; | ||
668 | break; | ||
669 | } | ||
670 | case ENC_X12: { // ANSI X12 | ||
671 | $cw = 238; | ||
672 | break; | ||
673 | } | ||
674 | case ENC_EDF: { // ASCII character 32 to 94 | ||
675 | $cw = 240; | ||
676 | break; | ||
677 | } | ||
678 | case ENC_BASE256: { // Function character (FNC1, Structured Append, Reader Program, or Code Page) | ||
679 | $cw = 231; | ||
680 | break; | ||
681 | } | ||
682 | } | ||
683 | return $cw; | ||
684 | } | ||
685 | |||
686 | /** | ||
687 | * Choose the minimum matrix size and return the max number of data codewords. | ||
688 | * @param $numcw (int) Number of current codewords. | ||
689 | * @return number of data codewords in matrix | ||
690 | * @protected | ||
691 | */ | ||
692 | protected function getMaxDataCodewords($numcw) { | ||
693 | foreach ($this->symbattr as $key => $matrix) { | ||
694 | if ($matrix[11] >= $numcw) { | ||
695 | return $matrix[11]; | ||
696 | } | ||
697 | } | ||
698 | return 0; | ||
699 | } | ||
700 | |||
701 | /** | ||
702 | * Get high level encoding using the minimum symbol data characters for ECC 200 | ||
703 | * @param $data (string) data to encode | ||
704 | * @return array of codewords | ||
705 | * @protected | ||
706 | */ | ||
707 | protected function getHighLevelEncoding($data) { | ||
708 | // STEP A. Start in ASCII encodation. | ||
709 | $enc = ENC_ASCII; // current encoding mode | ||
710 | $pos = 0; // current position | ||
711 | $cw = array(); // array of codewords to be returned | ||
712 | $cw_num = 0; // number of data codewords | ||
713 | $data_lenght = strlen($data); // number of chars | ||
714 | while ($pos < $data_lenght) { | ||
715 | // set last used encoding | ||
716 | $this->last_enc = $enc; | ||
717 | switch ($enc) { | ||
718 | case ENC_ASCII: { // STEP B. While in ASCII encodation | ||
719 | if (($data_lenght > 1) AND ($pos < ($data_lenght - 1)) AND ($this->isCharMode(ord($data[$pos]), ENC_ASCII_NUM) AND $this->isCharMode(ord($data[$pos + 1]), ENC_ASCII_NUM))) { | ||
720 | // 1. If the next data sequence is at least 2 consecutive digits, encode the next two digits as a double digit in ASCII mode. | ||
721 | $cw[] = (intval(substr($data, $pos, 2)) + 130); | ||
722 | ++$cw_num; | ||
723 | $pos += 2; | ||
724 | } else { | ||
725 | // 2. If the look-ahead test (starting at step J) indicates another mode, switch to that mode. | ||
726 | $newenc = $this->lookAheadTest($data, $pos, $enc); | ||
727 | if ($newenc != $enc) { | ||
728 | // switch to new encoding | ||
729 | $enc = $newenc; | ||
730 | $cw[] = $this->getSwitchEncodingCodeword($enc); | ||
731 | ++$cw_num; | ||
732 | } else { | ||
733 | // get new byte | ||
734 | $chr = ord($data[$pos]); | ||
735 | ++$pos; | ||
736 | if ($this->isCharMode($chr, ENC_ASCII_EXT)) { | ||
737 | // 3. If the next data character is extended ASCII (greater than 127) encode it in ASCII mode first using the Upper Shift (value 235) character. | ||
738 | $cw[] = 235; | ||
739 | $cw[] = ($chr - 127); | ||
740 | $cw_num += 2; | ||
741 | } else { | ||
742 | // 4. Otherwise process the next data character in ASCII encodation. | ||
743 | $cw[] = ($chr + 1); | ||
744 | ++$cw_num; | ||
745 | } | ||
746 | } | ||
747 | } | ||
748 | break; | ||
749 | } | ||
750 | case ENC_C40 : // Upper-case alphanumeric | ||
751 | case ENC_TXT : // Lower-case alphanumeric | ||
752 | case ENC_X12 : { // ANSI X12 | ||
753 | $temp_cw = array(); | ||
754 | $p = 0; | ||
755 | $epos = $pos; | ||
756 | // get charset ID | ||
757 | $set_id = $this->chset_id[$enc]; | ||
758 | // get basic charset for current encoding | ||
759 | $charset = $this->chset[$set_id]; | ||
760 | do { | ||
761 | // 2. process the next character in C40 encodation. | ||
762 | $chr = ord($data[$epos]); | ||
763 | ++$epos; | ||
764 | // check for extended character | ||
765 | if ($chr & 0x80) { | ||
766 | if ($enc == ENC_X12) { | ||
767 | return false; | ||
768 | } | ||
769 | $chr = ($chr & 0x7f); | ||
770 | $temp_cw[] = 1; // shift 2 | ||
771 | $temp_cw[] = 30; // upper shift | ||
772 | $p += 2; | ||
773 | } | ||
774 | if (isset($charset[$chr])) { | ||
775 | $temp_cw[] = $charset[$chr]; | ||
776 | ++$p; | ||
777 | } else { | ||
778 | if (isset($this->chset['SH1'][$chr])) { | ||
779 | $temp_cw[] = 0; // shift 1 | ||
780 | $shiftset = $this->chset['SH1']; | ||
781 | } elseif (isset($chr, $this->chset['SH2'][$chr])) { | ||
782 | $temp_cw[] = 1; // shift 2 | ||
783 | $shiftset = $this->chset['SH2']; | ||
784 | } elseif (($enc == ENC_C40) AND isset($this->chset['S3C'][$chr])) { | ||
785 | $temp_cw[] = 2; // shift 3 | ||
786 | $shiftset = $this->chset['S3C']; | ||
787 | } elseif (($enc == ENC_TXT) AND isset($this->chset['S3T'][$chr])) { | ||
788 | $temp_cw[] = 2; // shift 3 | ||
789 | $shiftset = $this->chset['S3T']; | ||
790 | } else { | ||
791 | return false; | ||
792 | } | ||
793 | $temp_cw[] = $shiftset[$chr]; | ||
794 | $p += 2; | ||
795 | } | ||
796 | if ($p >= 3) { | ||
797 | $c1 = array_shift($temp_cw); | ||
798 | $c2 = array_shift($temp_cw); | ||
799 | $c3 = array_shift($temp_cw); | ||
800 | $p -= 3; | ||
801 | $tmp = ((1600 * $c1) + (40 * $c2) + $c3 + 1); | ||
802 | $cw[] = ($tmp >> 8); | ||
803 | $cw[] = ($tmp % 256); | ||
804 | $cw_num += 2; | ||
805 | $pos = $epos; | ||
806 | // 1. If the C40 encoding is at the point of starting a new double symbol character and if the look-ahead test (starting at step J) indicates another mode, switch to that mode. | ||
807 | $newenc = $this->lookAheadTest($data, $pos, $enc); | ||
808 | if ($newenc != $enc) { | ||
809 | // switch to new encoding | ||
810 | $enc = $newenc; | ||
811 | if ($enc != ENC_ASCII) { | ||
812 | // set unlatch character | ||
813 | $cw[] = $this->getSwitchEncodingCodeword(ENC_ASCII); | ||
814 | ++$cw_num; | ||
815 | } | ||
816 | $cw[] = $this->getSwitchEncodingCodeword($enc); | ||
817 | ++$cw_num; | ||
818 | $pos -= $p; | ||
819 | $p = 0; | ||
820 | break; | ||
821 | } | ||
822 | } | ||
823 | } while (($p > 0) AND ($epos < $data_lenght)); | ||
824 | // process last data (if any) | ||
825 | if ($p > 0) { | ||
826 | // get remaining number of data symbols | ||
827 | $cwr = ($this->getMaxDataCodewords($cw_num) - $cw_num); | ||
828 | if (($cwr == 1) AND ($p == 1)) { | ||
829 | // d. If one symbol character remains and one C40 value (data character) remains to be encoded | ||
830 | $c1 = array_shift($temp_cw); | ||
831 | --$p; | ||
832 | $cw[] = ($chr + 1); | ||
833 | ++$cw_num; | ||
834 | $pos = $epos; | ||
835 | $enc = ENC_ASCII; | ||
836 | $this->last_enc = $enc; | ||
837 | } elseif (($cwr == 2) AND ($p == 1)) { | ||
838 | // c. If two symbol characters remain and only one C40 value (data character) remains to be encoded | ||
839 | $c1 = array_shift($temp_cw); | ||
840 | --$p; | ||
841 | $cw[] = 254; | ||
842 | $cw[] = ($chr + 1); | ||
843 | $cw_num += 2; | ||
844 | $pos = $epos; | ||
845 | $enc = ENC_ASCII; | ||
846 | $this->last_enc = $enc; | ||
847 | } elseif (($cwr == 2) AND ($p == 2)) { | ||
848 | // b. If two symbol characters remain and two C40 values remain to be encoded | ||
849 | $c1 = array_shift($temp_cw); | ||
850 | $c2 = array_shift($temp_cw); | ||
851 | $p -= 2; | ||
852 | $tmp = ((1600 * $c1) + (40 * $c2) + 1); | ||
853 | $cw[] = ($tmp >> 8); | ||
854 | $cw[] = ($tmp % 256); | ||
855 | $cw_num += 2; | ||
856 | $pos = $epos; | ||
857 | $enc = ENC_ASCII; | ||
858 | $this->last_enc = $enc; | ||
859 | } else { | ||
860 | // switch to ASCII encoding | ||
861 | if ($enc != ENC_ASCII) { | ||
862 | $enc = ENC_ASCII; | ||
863 | $this->last_enc = $enc; | ||
864 | $cw[] = $this->getSwitchEncodingCodeword($enc); | ||
865 | ++$cw_num; | ||
866 | $pos = ($epos - $p); | ||
867 | } | ||
868 | } | ||
869 | } | ||
870 | break; | ||
871 | } | ||
872 | case ENC_EDF: { // F. While in EDIFACT (EDF) encodation | ||
873 | // initialize temporary array with 0 lenght | ||
874 | $temp_cw = array(); | ||
875 | $epos = $pos; | ||
876 | $field_lenght = 0; | ||
877 | $newenc = $enc; | ||
878 | do { | ||
879 | // 2. process the next character in EDIFACT encodation. | ||
880 | $chr = ord($data[$epos]); | ||
881 | if ($this->isCharMode($chr, ENC_EDF)) { | ||
882 | ++$epos; | ||
883 | $temp_cw[] = $chr; | ||
884 | ++$field_lenght; | ||
885 | } | ||
886 | if (($field_lenght == 4) OR ($epos == $data_lenght) OR !$this->isCharMode($chr, ENC_EDF)) { | ||
887 | if (($epos == $data_lenght) AND ($field_lenght < 3)) { | ||
888 | $enc = ENC_ASCII; | ||
889 | $cw[] = $this->getSwitchEncodingCodeword($enc); | ||
890 | ++$cw_num; | ||
891 | break; | ||
892 | } | ||
893 | if ($field_lenght < 4) { | ||
894 | // set unlatch character | ||
895 | $temp_cw[] = 0x1f; | ||
896 | ++$field_lenght; | ||
897 | // fill empty characters | ||
898 | for ($i = $field_lenght; $i < 4; ++$i) { | ||
899 | $temp_cw[] = 0; | ||
900 | } | ||
901 | $enc = ENC_ASCII; | ||
902 | $this->last_enc = $enc; | ||
903 | } | ||
904 | // encodes four data characters in three codewords | ||
905 | $tcw = (($temp_cw[0] & 0x3F) << 2) + (($temp_cw[1] & 0x30) >> 4); | ||
906 | if ($tcw > 0) { | ||
907 | $cw[] = $tcw; | ||
908 | $cw_num++; | ||
909 | } | ||
910 | $tcw= (($temp_cw[1] & 0x0F) << 4) + (($temp_cw[2] & 0x3C) >> 2); | ||
911 | if ($tcw > 0) { | ||
912 | $cw[] = $tcw; | ||
913 | $cw_num++; | ||
914 | } | ||
915 | $tcw = (($temp_cw[2] & 0x03) << 6) + ($temp_cw[3] & 0x3F); | ||
916 | if ($tcw > 0) { | ||
917 | $cw[] = $tcw; | ||
918 | $cw_num++; | ||
919 | } | ||
920 | $temp_cw = array(); | ||
921 | $pos = $epos; | ||
922 | $field_lenght = 0; | ||
923 | if ($enc == ENC_ASCII) { | ||
924 | break; // exit from EDIFACT mode | ||
925 | } | ||
926 | } | ||
927 | } while ($epos < $data_lenght); | ||
928 | break; | ||
929 | } | ||
930 | case ENC_BASE256: { // G. While in Base 256 (B256) encodation | ||
931 | // initialize temporary array with 0 lenght | ||
932 | $temp_cw = array(); | ||
933 | $field_lenght = 0; | ||
934 | while (($pos < $data_lenght) AND ($field_lenght <= 1555)) { | ||
935 | $newenc = $this->lookAheadTest($data, $pos, $enc); | ||
936 | if ($newenc != $enc) { | ||
937 | // 1. If the look-ahead test (starting at step J) indicates another mode, switch to that mode. | ||
938 | $enc = $newenc; | ||
939 | break; // exit from B256 mode | ||
940 | } else { | ||
941 | // 2. Otherwise, process the next character in Base 256 encodation. | ||
942 | $chr = ord($data[$pos]); | ||
943 | ++$pos; | ||
944 | $temp_cw[] = $chr; | ||
945 | ++$field_lenght; | ||
946 | } | ||
947 | } | ||
948 | // set field lenght | ||
949 | if ($field_lenght <= 249) { | ||
950 | $cw[] = $this->get255StateCodeword($field_lenght, ($cw_num + 1)); | ||
951 | ++$cw_num; | ||
952 | } else { | ||
953 | $cw[] = $this->get255StateCodeword((floor($field_lenght / 250) + 249), ($cw_num + 1)); | ||
954 | $cw[] = $this->get255StateCodeword(($field_lenght % 250), ($cw_num + 2)); | ||
955 | $cw_num += 2; | ||
956 | } | ||
957 | if (!empty($temp_cw)) { | ||
958 | // add B256 field | ||
959 | foreach ($temp_cw as $p => $cht) { | ||
960 | $cw[] = $this->get255StateCodeword($cht, ($cw_num + $p + 1)); | ||
961 | } | ||
962 | } | ||
963 | break; | ||
964 | } | ||
965 | } // end of switch enc | ||
966 | } // end of while | ||
967 | return $cw; | ||
968 | } | ||
969 | |||
970 | /** | ||
971 | * Places "chr+bit" with appropriate wrapping within array[]. | ||
972 | * (Annex F - ECC 200 symbol character placement) | ||
973 | * @param $marr (array) Array of symbols. | ||
974 | * @param $nrow (int) Number of rows. | ||
975 | * @param $ncol (int) Number of columns. | ||
976 | * @param $row (int) Row number. | ||
977 | * @param $col (int) Column number. | ||
978 | * @param $chr (int) Char byte. | ||
979 | * @param $bit (int) Bit. | ||
980 | * @return array | ||
981 | * @protected | ||
982 | */ | ||
983 | protected function placeModule($marr, $nrow, $ncol, $row, $col, $chr, $bit) { | ||
984 | if ($row < 0) { | ||
985 | $row += $nrow; | ||
986 | $col += (4 - (($nrow + 4) % 8)); | ||
987 | } | ||
988 | if ($col < 0) { | ||
989 | $col += $ncol; | ||
990 | $row += (4 - (($ncol + 4) % 8)); | ||
991 | } | ||
992 | $marr[(($row * $ncol) + $col)] = ((10 * $chr) + $bit); | ||
993 | return $marr; | ||
994 | } | ||
995 | |||
996 | /** | ||
997 | * Places the 8 bits of a utah-shaped symbol character. | ||
998 | * (Annex F - ECC 200 symbol character placement) | ||
999 | * @param $marr (array) Array of symbols. | ||
1000 | * @param $nrow (int) Number of rows. | ||
1001 | * @param $ncol (int) Number of columns. | ||
1002 | * @param $row (int) Row number. | ||
1003 | * @param $col (int) Column number. | ||
1004 | * @param $chr (int) Char byte. | ||
1005 | * @return array | ||
1006 | * @protected | ||
1007 | */ | ||
1008 | protected function placeUtah($marr, $nrow, $ncol, $row, $col, $chr) { | ||
1009 | $marr = $this->placeModule($marr, $nrow, $ncol, $row-2, $col-2, $chr, 1); | ||
1010 | $marr = $this->placeModule($marr, $nrow, $ncol, $row-2, $col-1, $chr, 2); | ||
1011 | $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col-2, $chr, 3); | ||
1012 | $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col-1, $chr, 4); | ||
1013 | $marr = $this->placeModule($marr, $nrow, $ncol, $row-1, $col, $chr, 5); | ||
1014 | $marr = $this->placeModule($marr, $nrow, $ncol, $row, $col-2, $chr, 6); | ||
1015 | $marr = $this->placeModule($marr, $nrow, $ncol, $row, $col-1, $chr, 7); | ||
1016 | $marr = $this->placeModule($marr, $nrow, $ncol, $row, $col, $chr, 8); | ||
1017 | return $marr; | ||
1018 | } | ||
1019 | |||
1020 | /** | ||
1021 | * Places the 8 bits of the first special corner case. | ||
1022 | * (Annex F - ECC 200 symbol character placement) | ||
1023 | * @param $marr (array) Array of symbols. | ||
1024 | * @param $nrow (int) Number of rows. | ||
1025 | * @param $ncol (int) Number of columns. | ||
1026 | * @param $chr (int) Char byte. | ||
1027 | * @return array | ||
1028 | * @protected | ||
1029 | */ | ||
1030 | protected function placeCornerA($marr, $nrow, $ncol, $chr) { | ||
1031 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 1); | ||
1032 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 1, $chr, 2); | ||
1033 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 2, $chr, 3); | ||
1034 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 4); | ||
1035 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 5); | ||
1036 | $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 6); | ||
1037 | $marr = $this->placeModule($marr, $nrow, $ncol, 2, $ncol-1, $chr, 7); | ||
1038 | $marr = $this->placeModule($marr, $nrow, $ncol, 3, $ncol-1, $chr, 8); | ||
1039 | return $marr; | ||
1040 | } | ||
1041 | |||
1042 | /** | ||
1043 | * Places the 8 bits of the second special corner case. | ||
1044 | * (Annex F - ECC 200 symbol character placement) | ||
1045 | * @param $marr (array) Array of symbols. | ||
1046 | * @param $nrow (int) Number of rows. | ||
1047 | * @param $ncol (int) Number of columns. | ||
1048 | * @param $chr (int) Char byte. | ||
1049 | * @return array | ||
1050 | * @protected | ||
1051 | */ | ||
1052 | protected function placeCornerB($marr, $nrow, $ncol, $chr) { | ||
1053 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-3, 0, $chr, 1); | ||
1054 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-2, 0, $chr, 2); | ||
1055 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 3); | ||
1056 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-4, $chr, 4); | ||
1057 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-3, $chr, 5); | ||
1058 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 6); | ||
1059 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 7); | ||
1060 | $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 8); | ||
1061 | return $marr; | ||
1062 | } | ||
1063 | |||
1064 | /** | ||
1065 | * Places the 8 bits of the third special corner case. | ||
1066 | * (Annex F - ECC 200 symbol character placement) | ||
1067 | * @param $marr (array) Array of symbols. | ||
1068 | * @param $nrow (int) Number of rows. | ||
1069 | * @param $ncol (int) Number of columns. | ||
1070 | * @param $chr (int) Char byte. | ||
1071 | * @return array | ||
1072 | * @protected | ||
1073 | */ | ||
1074 | protected function placeCornerC($marr, $nrow, $ncol, $chr) { | ||
1075 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-3, 0, $chr, 1); | ||
1076 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-2, 0, $chr, 2); | ||
1077 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 3); | ||
1078 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 4); | ||
1079 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 5); | ||
1080 | $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 6); | ||
1081 | $marr = $this->placeModule($marr, $nrow, $ncol, 2, $ncol-1, $chr, 7); | ||
1082 | $marr = $this->placeModule($marr, $nrow, $ncol, 3, $ncol-1, $chr, 8); | ||
1083 | return $marr; | ||
1084 | } | ||
1085 | |||
1086 | /** | ||
1087 | * Places the 8 bits of the fourth special corner case. | ||
1088 | * (Annex F - ECC 200 symbol character placement) | ||
1089 | * @param $marr (array) Array of symbols. | ||
1090 | * @param $nrow (int) Number of rows. | ||
1091 | * @param $ncol (int) Number of columns. | ||
1092 | * @param $chr (int) Char byte. | ||
1093 | * @return array | ||
1094 | * @protected | ||
1095 | */ | ||
1096 | protected function placeCornerD($marr, $nrow, $ncol, $chr) { | ||
1097 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, 0, $chr, 1); | ||
1098 | $marr = $this->placeModule($marr, $nrow, $ncol, $nrow-1, $ncol-1, $chr, 2); | ||
1099 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-3, $chr, 3); | ||
1100 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-2, $chr, 4); | ||
1101 | $marr = $this->placeModule($marr, $nrow, $ncol, 0, $ncol-1, $chr, 5); | ||
1102 | $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-3, $chr, 6); | ||
1103 | $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-2, $chr, 7); | ||
1104 | $marr = $this->placeModule($marr, $nrow, $ncol, 1, $ncol-1, $chr, 8); | ||
1105 | return $marr; | ||
1106 | } | ||
1107 | |||
1108 | /** | ||
1109 | * Build a placement map. | ||
1110 | * (Annex F - ECC 200 symbol character placement) | ||
1111 | * @param $nrow (int) Number of rows. | ||
1112 | * @param $ncol (int) Number of columns. | ||
1113 | * @return array | ||
1114 | * @protected | ||
1115 | */ | ||
1116 | protected function getPlacementMap($nrow, $ncol) { | ||
1117 | // initialize array with zeros | ||
1118 | $marr = array_fill(0, ($nrow * $ncol), 0); | ||
1119 | // set starting values | ||
1120 | $chr = 1; | ||
1121 | $row = 4; | ||
1122 | $col = 0; | ||
1123 | do { | ||
1124 | // repeatedly first check for one of the special corner cases, then | ||
1125 | if (($row == $nrow) AND ($col == 0)) { | ||
1126 | $marr = $this->placeCornerA($marr, $nrow, $ncol, $chr); | ||
1127 | ++$chr; | ||
1128 | } | ||
1129 | if (($row == ($nrow - 2)) AND ($col == 0) AND ($ncol % 4)) { | ||
1130 | $marr = $this->placeCornerB($marr, $nrow, $ncol, $chr); | ||
1131 | ++$chr; | ||
1132 | } | ||
1133 | if (($row == ($nrow - 2)) AND ($col == 0) AND (($ncol % 8) == 4)) { | ||
1134 | $marr = $this->placeCornerC($marr, $nrow, $ncol, $chr); | ||
1135 | ++$chr; | ||
1136 | } | ||
1137 | if (($row == ($nrow + 4)) AND ($col == 2) AND (!($ncol % 8))) { | ||
1138 | $marr = $this->placeCornerD($marr, $nrow, $ncol, $chr); | ||
1139 | ++$chr; | ||
1140 | } | ||
1141 | // sweep upward diagonally, inserting successive characters, | ||
1142 | do { | ||
1143 | if (($row < $nrow) AND ($col >= 0) AND (!$marr[(($row * $ncol) + $col)])) { | ||
1144 | $marr = $this->placeUtah($marr, $nrow, $ncol, $row, $col, $chr); | ||
1145 | ++$chr; | ||
1146 | } | ||
1147 | $row -= 2; | ||
1148 | $col += 2; | ||
1149 | } while (($row >= 0) AND ($col < $ncol)); | ||
1150 | ++$row; | ||
1151 | $col += 3; | ||
1152 | // & then sweep downward diagonally, inserting successive characters,... | ||
1153 | do { | ||
1154 | if (($row >= 0) AND ($col < $ncol) AND (!$marr[(($row * $ncol) + $col)])) { | ||
1155 | $marr = $this->placeUtah($marr, $nrow, $ncol, $row, $col, $chr); | ||
1156 | ++$chr; | ||
1157 | } | ||
1158 | $row += 2; | ||
1159 | $col -= 2; | ||
1160 | } while (($row < $nrow) AND ($col >= 0)); | ||
1161 | $row += 3; | ||
1162 | ++$col; | ||
1163 | // ... until the entire array is scanned | ||
1164 | } while (($row < $nrow) OR ($col < $ncol)); | ||
1165 | // lastly, if the lower righthand corner is untouched, fill in fixed pattern | ||
1166 | if (!$marr[(($nrow * $ncol) - 1)]) { | ||
1167 | $marr[(($nrow * $ncol) - 1)] = 1; | ||
1168 | $marr[(($nrow * $ncol) - $ncol - 2)] = 1; | ||
1169 | } | ||
1170 | return $marr; | ||
1171 | } | ||
1172 | |||
1173 | } // end DataMatrix class | ||
1174 | //============================================================+ | ||
1175 | // END OF FILE | ||
1176 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php new file mode 100644 index 00000000..07b36b90 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/barcodes/pdf417.php | |||
@@ -0,0 +1,996 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : pdf417.php | ||
4 | // Version : 1.0.005 | ||
5 | // Begin : 2010-06-03 | ||
6 | // Last Update : 2014-04-25 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2010-2013 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the GNU Lesser General Public License | ||
25 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | ||
26 | // | ||
27 | // See LICENSE.TXT file for more information. | ||
28 | // ------------------------------------------------------------------- | ||
29 | // | ||
30 | // DESCRIPTION : | ||
31 | // | ||
32 | // Class to create PDF417 barcode arrays for TCPDF class. | ||
33 | // PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. | ||
34 | // It is one of the most popular 2D codes because of its ability to be read with slightly modified handheld laser or linear CCD scanners. | ||
35 | // TECHNICAL DATA / FEATURES OF PDF417: | ||
36 | // Encodable Character Set: All 128 ASCII Characters (including extended) | ||
37 | // Code Type: Continuous, Multi-Row | ||
38 | // Symbol Height: 3 - 90 Rows | ||
39 | // Symbol Width: 90X - 583X | ||
40 | // Bidirectional Decoding: Yes | ||
41 | // Error Correction Characters: 2 - 512 | ||
42 | // Maximum Data Characters: 1850 text, 2710 digits, 1108 bytes | ||
43 | // | ||
44 | //============================================================+ | ||
45 | |||
46 | /** | ||
47 | * @file | ||
48 | * Class to create PDF417 barcode arrays for TCPDF class. | ||
49 | * PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. | ||
50 | * (requires PHP bcmath extension) | ||
51 | * @package com.tecnick.tcpdf | ||
52 | * @author Nicola Asuni | ||
53 | * @version 1.0.005 | ||
54 | */ | ||
55 | |||
56 | // definitions | ||
57 | if (!defined('PDF417DEFS')) { | ||
58 | |||
59 | /** | ||
60 | * Indicate that definitions for this class are set | ||
61 | */ | ||
62 | define('PDF417DEFS', true); | ||
63 | |||
64 | // ----------------------------------------------------- | ||
65 | |||
66 | /** | ||
67 | * Row height respect X dimension of single module | ||
68 | */ | ||
69 | define('ROWHEIGHT', 4); | ||
70 | |||
71 | /** | ||
72 | * Horizontal quiet zone in modules | ||
73 | */ | ||
74 | define('QUIETH', 2); | ||
75 | |||
76 | /** | ||
77 | * Vertical quiet zone in modules | ||
78 | */ | ||
79 | define('QUIETV', 2); | ||
80 | |||
81 | } // end of definitions | ||
82 | |||
83 | // #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# | ||
84 | |||
85 | /** | ||
86 | * @class PDF417 | ||
87 | * Class to create PDF417 barcode arrays for TCPDF class. | ||
88 | * PDF417 (ISO/IEC 15438:2006) is a 2-dimensional stacked bar code created by Symbol Technologies in 1991. | ||
89 | * @package com.tecnick.tcpdf | ||
90 | * @author Nicola Asuni | ||
91 | * @version 1.0.003 | ||
92 | */ | ||
93 | class PDF417 { | ||
94 | |||
95 | /** | ||
96 | * Barcode array to be returned which is readable by TCPDF. | ||
97 | * @protected | ||
98 | */ | ||
99 | protected $barcode_array = array(); | ||
100 | |||
101 | /** | ||
102 | * Start pattern. | ||
103 | * @protected | ||
104 | */ | ||
105 | protected $start_pattern = '11111111010101000'; | ||
106 | |||
107 | /** | ||
108 | * Stop pattern. | ||
109 | * @protected | ||
110 | */ | ||
111 | protected $stop_pattern = '111111101000101001'; | ||
112 | |||
113 | /** | ||
114 | * Array of text Compaction Sub-Modes (values 0xFB - 0xFF are used for submode changers). | ||
115 | * @protected | ||
116 | */ | ||
117 | protected $textsubmodes = array( | ||
118 | array(0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x20,0xFD,0xFE,0xFF), // Alpha | ||
119 | array(0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x20,0xFD,0xFE,0xFF), // Lower | ||
120 | array(0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x26,0x0d,0x09,0x2c,0x3a,0x23,0x2d,0x2e,0x24,0x2f,0x2b,0x25,0x2a,0x3d,0x5e,0xFB,0x20,0xFD,0xFE,0xFF), // Mixed | ||
121 | array(0x3b,0x3c,0x3e,0x40,0x5b,0x5c,0x5d,0x5f,0x60,0x7e,0x21,0x0d,0x09,0x2c,0x3a,0x0a,0x2d,0x2e,0x24,0x2f,0x22,0x7c,0x2a,0x28,0x29,0x3f,0x7b,0x7d,0x27,0xFF) // Puntuaction | ||
122 | ); | ||
123 | |||
124 | /** | ||
125 | * Array of switching codes for Text Compaction Sub-Modes. | ||
126 | * @protected | ||
127 | */ | ||
128 | protected $textlatch = array( | ||
129 | '01' => array(27), '02' => array(28), '03' => array(28,25), // | ||
130 | '10' => array(28,28), '12' => array(28), '13' => array(28,25), // | ||
131 | '20' => array(28), '21' => array(27), '23' => array(25), // | ||
132 | '30' => array(29), '31' => array(29,27), '32' => array(29,28) // | ||
133 | ); | ||
134 | |||
135 | /** | ||
136 | * Clusters of codewords (0, 3, 6)<br/> | ||
137 | * Values are hex equivalents of binary representation of bars (1 = bar, 0 = space).<br/> | ||
138 | * The codewords numbered from 900 to 928 have special meaning, some enable to switch between modes in order to optimise the code:<ul> | ||
139 | * <li>900 : Switch to "Text" mode</li> | ||
140 | * <li>901 : Switch to "Byte" mode</li> | ||
141 | * <li>902 : Switch to "Numeric" mode</li> | ||
142 | * <li>903 - 912 : Reserved</li> | ||
143 | * <li>913 : Switch to "Octet" only for the next codeword</li> | ||
144 | * <li>914 - 920 : Reserved</li> | ||
145 | * <li>921 : Initialization</li> | ||
146 | * <li>922 : Terminator codeword for Macro PDF control block</li> | ||
147 | * <li>923 : Sequence tag to identify the beginning of optional fields in the Macro PDF control block</li> | ||
148 | * <li>924 : Switch to "Byte" mode (If the total number of byte is multiple of 6)</li> | ||
149 | * <li>925 : Identifier for a user defined Extended Channel Interpretation (ECI)</li> | ||
150 | * <li>926 : Identifier for a general purpose ECI format</li> | ||
151 | * <li>927 : Identifier for an ECI of a character set or code page</li> | ||
152 | * <li>928 : Macro marker codeword to indicate the beginning of a Macro PDF Control Block</li> | ||
153 | * </ul> | ||
154 | * @protected | ||
155 | */ | ||
156 | protected $clusters = array( | ||
157 | array( // cluster 0 ----------------------------------------------------------------------- | ||
158 | 0x1d5c0,0x1eaf0,0x1f57c,0x1d4e0,0x1ea78,0x1f53e,0x1a8c0,0x1d470,0x1a860,0x15040, // 10 | ||
159 | 0x1a830,0x15020,0x1adc0,0x1d6f0,0x1eb7c,0x1ace0,0x1d678,0x1eb3e,0x158c0,0x1ac70, // 20 | ||
160 | 0x15860,0x15dc0,0x1aef0,0x1d77c,0x15ce0,0x1ae78,0x1d73e,0x15c70,0x1ae3c,0x15ef0, // 30 | ||
161 | 0x1af7c,0x15e78,0x1af3e,0x15f7c,0x1f5fa,0x1d2e0,0x1e978,0x1f4be,0x1a4c0,0x1d270, // 40 | ||
162 | 0x1e93c,0x1a460,0x1d238,0x14840,0x1a430,0x1d21c,0x14820,0x1a418,0x14810,0x1a6e0, // 50 | ||
163 | 0x1d378,0x1e9be,0x14cc0,0x1a670,0x1d33c,0x14c60,0x1a638,0x1d31e,0x14c30,0x1a61c, // 60 | ||
164 | 0x14ee0,0x1a778,0x1d3be,0x14e70,0x1a73c,0x14e38,0x1a71e,0x14f78,0x1a7be,0x14f3c, // 70 | ||
165 | 0x14f1e,0x1a2c0,0x1d170,0x1e8bc,0x1a260,0x1d138,0x1e89e,0x14440,0x1a230,0x1d11c, // 80 | ||
166 | 0x14420,0x1a218,0x14410,0x14408,0x146c0,0x1a370,0x1d1bc,0x14660,0x1a338,0x1d19e, // 90 | ||
167 | 0x14630,0x1a31c,0x14618,0x1460c,0x14770,0x1a3bc,0x14738,0x1a39e,0x1471c,0x147bc, // 100 | ||
168 | 0x1a160,0x1d0b8,0x1e85e,0x14240,0x1a130,0x1d09c,0x14220,0x1a118,0x1d08e,0x14210, // 110 | ||
169 | 0x1a10c,0x14208,0x1a106,0x14360,0x1a1b8,0x1d0de,0x14330,0x1a19c,0x14318,0x1a18e, // 120 | ||
170 | 0x1430c,0x14306,0x1a1de,0x1438e,0x14140,0x1a0b0,0x1d05c,0x14120,0x1a098,0x1d04e, // 130 | ||
171 | 0x14110,0x1a08c,0x14108,0x1a086,0x14104,0x141b0,0x14198,0x1418c,0x140a0,0x1d02e, // 140 | ||
172 | 0x1a04c,0x1a046,0x14082,0x1cae0,0x1e578,0x1f2be,0x194c0,0x1ca70,0x1e53c,0x19460, // 150 | ||
173 | 0x1ca38,0x1e51e,0x12840,0x19430,0x12820,0x196e0,0x1cb78,0x1e5be,0x12cc0,0x19670, // 160 | ||
174 | 0x1cb3c,0x12c60,0x19638,0x12c30,0x12c18,0x12ee0,0x19778,0x1cbbe,0x12e70,0x1973c, // 170 | ||
175 | 0x12e38,0x12e1c,0x12f78,0x197be,0x12f3c,0x12fbe,0x1dac0,0x1ed70,0x1f6bc,0x1da60, // 180 | ||
176 | 0x1ed38,0x1f69e,0x1b440,0x1da30,0x1ed1c,0x1b420,0x1da18,0x1ed0e,0x1b410,0x1da0c, // 190 | ||
177 | 0x192c0,0x1c970,0x1e4bc,0x1b6c0,0x19260,0x1c938,0x1e49e,0x1b660,0x1db38,0x1ed9e, // 200 | ||
178 | 0x16c40,0x12420,0x19218,0x1c90e,0x16c20,0x1b618,0x16c10,0x126c0,0x19370,0x1c9bc, // 210 | ||
179 | 0x16ec0,0x12660,0x19338,0x1c99e,0x16e60,0x1b738,0x1db9e,0x16e30,0x12618,0x16e18, // 220 | ||
180 | 0x12770,0x193bc,0x16f70,0x12738,0x1939e,0x16f38,0x1b79e,0x16f1c,0x127bc,0x16fbc, // 230 | ||
181 | 0x1279e,0x16f9e,0x1d960,0x1ecb8,0x1f65e,0x1b240,0x1d930,0x1ec9c,0x1b220,0x1d918, // 240 | ||
182 | 0x1ec8e,0x1b210,0x1d90c,0x1b208,0x1b204,0x19160,0x1c8b8,0x1e45e,0x1b360,0x19130, // 250 | ||
183 | 0x1c89c,0x16640,0x12220,0x1d99c,0x1c88e,0x16620,0x12210,0x1910c,0x16610,0x1b30c, // 260 | ||
184 | 0x19106,0x12204,0x12360,0x191b8,0x1c8de,0x16760,0x12330,0x1919c,0x16730,0x1b39c, // 270 | ||
185 | 0x1918e,0x16718,0x1230c,0x12306,0x123b8,0x191de,0x167b8,0x1239c,0x1679c,0x1238e, // 280 | ||
186 | 0x1678e,0x167de,0x1b140,0x1d8b0,0x1ec5c,0x1b120,0x1d898,0x1ec4e,0x1b110,0x1d88c, // 290 | ||
187 | 0x1b108,0x1d886,0x1b104,0x1b102,0x12140,0x190b0,0x1c85c,0x16340,0x12120,0x19098, // 300 | ||
188 | 0x1c84e,0x16320,0x1b198,0x1d8ce,0x16310,0x12108,0x19086,0x16308,0x1b186,0x16304, // 310 | ||
189 | 0x121b0,0x190dc,0x163b0,0x12198,0x190ce,0x16398,0x1b1ce,0x1638c,0x12186,0x16386, // 320 | ||
190 | 0x163dc,0x163ce,0x1b0a0,0x1d858,0x1ec2e,0x1b090,0x1d84c,0x1b088,0x1d846,0x1b084, // 330 | ||
191 | 0x1b082,0x120a0,0x19058,0x1c82e,0x161a0,0x12090,0x1904c,0x16190,0x1b0cc,0x19046, // 340 | ||
192 | 0x16188,0x12084,0x16184,0x12082,0x120d8,0x161d8,0x161cc,0x161c6,0x1d82c,0x1d826, // 350 | ||
193 | 0x1b042,0x1902c,0x12048,0x160c8,0x160c4,0x160c2,0x18ac0,0x1c570,0x1e2bc,0x18a60, // 360 | ||
194 | 0x1c538,0x11440,0x18a30,0x1c51c,0x11420,0x18a18,0x11410,0x11408,0x116c0,0x18b70, // 370 | ||
195 | 0x1c5bc,0x11660,0x18b38,0x1c59e,0x11630,0x18b1c,0x11618,0x1160c,0x11770,0x18bbc, // 380 | ||
196 | 0x11738,0x18b9e,0x1171c,0x117bc,0x1179e,0x1cd60,0x1e6b8,0x1f35e,0x19a40,0x1cd30, // 390 | ||
197 | 0x1e69c,0x19a20,0x1cd18,0x1e68e,0x19a10,0x1cd0c,0x19a08,0x1cd06,0x18960,0x1c4b8, // 400 | ||
198 | 0x1e25e,0x19b60,0x18930,0x1c49c,0x13640,0x11220,0x1cd9c,0x1c48e,0x13620,0x19b18, // 410 | ||
199 | 0x1890c,0x13610,0x11208,0x13608,0x11360,0x189b8,0x1c4de,0x13760,0x11330,0x1cdde, // 420 | ||
200 | 0x13730,0x19b9c,0x1898e,0x13718,0x1130c,0x1370c,0x113b8,0x189de,0x137b8,0x1139c, // 430 | ||
201 | 0x1379c,0x1138e,0x113de,0x137de,0x1dd40,0x1eeb0,0x1f75c,0x1dd20,0x1ee98,0x1f74e, // 440 | ||
202 | 0x1dd10,0x1ee8c,0x1dd08,0x1ee86,0x1dd04,0x19940,0x1ccb0,0x1e65c,0x1bb40,0x19920, // 450 | ||
203 | 0x1eedc,0x1e64e,0x1bb20,0x1dd98,0x1eece,0x1bb10,0x19908,0x1cc86,0x1bb08,0x1dd86, // 460 | ||
204 | 0x19902,0x11140,0x188b0,0x1c45c,0x13340,0x11120,0x18898,0x1c44e,0x17740,0x13320, // 470 | ||
205 | 0x19998,0x1ccce,0x17720,0x1bb98,0x1ddce,0x18886,0x17710,0x13308,0x19986,0x17708, // 480 | ||
206 | 0x11102,0x111b0,0x188dc,0x133b0,0x11198,0x188ce,0x177b0,0x13398,0x199ce,0x17798, // 490 | ||
207 | 0x1bbce,0x11186,0x13386,0x111dc,0x133dc,0x111ce,0x177dc,0x133ce,0x1dca0,0x1ee58, // 500 | ||
208 | 0x1f72e,0x1dc90,0x1ee4c,0x1dc88,0x1ee46,0x1dc84,0x1dc82,0x198a0,0x1cc58,0x1e62e, // 510 | ||
209 | 0x1b9a0,0x19890,0x1ee6e,0x1b990,0x1dccc,0x1cc46,0x1b988,0x19884,0x1b984,0x19882, // 520 | ||
210 | 0x1b982,0x110a0,0x18858,0x1c42e,0x131a0,0x11090,0x1884c,0x173a0,0x13190,0x198cc, // 530 | ||
211 | 0x18846,0x17390,0x1b9cc,0x11084,0x17388,0x13184,0x11082,0x13182,0x110d8,0x1886e, // 540 | ||
212 | 0x131d8,0x110cc,0x173d8,0x131cc,0x110c6,0x173cc,0x131c6,0x110ee,0x173ee,0x1dc50, // 550 | ||
213 | 0x1ee2c,0x1dc48,0x1ee26,0x1dc44,0x1dc42,0x19850,0x1cc2c,0x1b8d0,0x19848,0x1cc26, // 560 | ||
214 | 0x1b8c8,0x1dc66,0x1b8c4,0x19842,0x1b8c2,0x11050,0x1882c,0x130d0,0x11048,0x18826, // 570 | ||
215 | 0x171d0,0x130c8,0x19866,0x171c8,0x1b8e6,0x11042,0x171c4,0x130c2,0x171c2,0x130ec, // 580 | ||
216 | 0x171ec,0x171e6,0x1ee16,0x1dc22,0x1cc16,0x19824,0x19822,0x11028,0x13068,0x170e8, // 590 | ||
217 | 0x11022,0x13062,0x18560,0x10a40,0x18530,0x10a20,0x18518,0x1c28e,0x10a10,0x1850c, // 600 | ||
218 | 0x10a08,0x18506,0x10b60,0x185b8,0x1c2de,0x10b30,0x1859c,0x10b18,0x1858e,0x10b0c, // 610 | ||
219 | 0x10b06,0x10bb8,0x185de,0x10b9c,0x10b8e,0x10bde,0x18d40,0x1c6b0,0x1e35c,0x18d20, // 620 | ||
220 | 0x1c698,0x18d10,0x1c68c,0x18d08,0x1c686,0x18d04,0x10940,0x184b0,0x1c25c,0x11b40, // 630 | ||
221 | 0x10920,0x1c6dc,0x1c24e,0x11b20,0x18d98,0x1c6ce,0x11b10,0x10908,0x18486,0x11b08, // 640 | ||
222 | 0x18d86,0x10902,0x109b0,0x184dc,0x11bb0,0x10998,0x184ce,0x11b98,0x18dce,0x11b8c, // 650 | ||
223 | 0x10986,0x109dc,0x11bdc,0x109ce,0x11bce,0x1cea0,0x1e758,0x1f3ae,0x1ce90,0x1e74c, // 660 | ||
224 | 0x1ce88,0x1e746,0x1ce84,0x1ce82,0x18ca0,0x1c658,0x19da0,0x18c90,0x1c64c,0x19d90, // 670 | ||
225 | 0x1cecc,0x1c646,0x19d88,0x18c84,0x19d84,0x18c82,0x19d82,0x108a0,0x18458,0x119a0, // 680 | ||
226 | 0x10890,0x1c66e,0x13ba0,0x11990,0x18ccc,0x18446,0x13b90,0x19dcc,0x10884,0x13b88, // 690 | ||
227 | 0x11984,0x10882,0x11982,0x108d8,0x1846e,0x119d8,0x108cc,0x13bd8,0x119cc,0x108c6, // 700 | ||
228 | 0x13bcc,0x119c6,0x108ee,0x119ee,0x13bee,0x1ef50,0x1f7ac,0x1ef48,0x1f7a6,0x1ef44, // 710 | ||
229 | 0x1ef42,0x1ce50,0x1e72c,0x1ded0,0x1ef6c,0x1e726,0x1dec8,0x1ef66,0x1dec4,0x1ce42, // 720 | ||
230 | 0x1dec2,0x18c50,0x1c62c,0x19cd0,0x18c48,0x1c626,0x1bdd0,0x19cc8,0x1ce66,0x1bdc8, // 730 | ||
231 | 0x1dee6,0x18c42,0x1bdc4,0x19cc2,0x1bdc2,0x10850,0x1842c,0x118d0,0x10848,0x18426, // 740 | ||
232 | 0x139d0,0x118c8,0x18c66,0x17bd0,0x139c8,0x19ce6,0x10842,0x17bc8,0x1bde6,0x118c2, // 750 | ||
233 | 0x17bc4,0x1086c,0x118ec,0x10866,0x139ec,0x118e6,0x17bec,0x139e6,0x17be6,0x1ef28, // 760 | ||
234 | 0x1f796,0x1ef24,0x1ef22,0x1ce28,0x1e716,0x1de68,0x1ef36,0x1de64,0x1ce22,0x1de62, // 770 | ||
235 | 0x18c28,0x1c616,0x19c68,0x18c24,0x1bce8,0x19c64,0x18c22,0x1bce4,0x19c62,0x1bce2, // 780 | ||
236 | 0x10828,0x18416,0x11868,0x18c36,0x138e8,0x11864,0x10822,0x179e8,0x138e4,0x11862, // 790 | ||
237 | 0x179e4,0x138e2,0x179e2,0x11876,0x179f6,0x1ef12,0x1de34,0x1de32,0x19c34,0x1bc74, // 800 | ||
238 | 0x1bc72,0x11834,0x13874,0x178f4,0x178f2,0x10540,0x10520,0x18298,0x10510,0x10508, // 810 | ||
239 | 0x10504,0x105b0,0x10598,0x1058c,0x10586,0x105dc,0x105ce,0x186a0,0x18690,0x1c34c, // 820 | ||
240 | 0x18688,0x1c346,0x18684,0x18682,0x104a0,0x18258,0x10da0,0x186d8,0x1824c,0x10d90, // 830 | ||
241 | 0x186cc,0x10d88,0x186c6,0x10d84,0x10482,0x10d82,0x104d8,0x1826e,0x10dd8,0x186ee, // 840 | ||
242 | 0x10dcc,0x104c6,0x10dc6,0x104ee,0x10dee,0x1c750,0x1c748,0x1c744,0x1c742,0x18650, // 850 | ||
243 | 0x18ed0,0x1c76c,0x1c326,0x18ec8,0x1c766,0x18ec4,0x18642,0x18ec2,0x10450,0x10cd0, // 860 | ||
244 | 0x10448,0x18226,0x11dd0,0x10cc8,0x10444,0x11dc8,0x10cc4,0x10442,0x11dc4,0x10cc2, // 870 | ||
245 | 0x1046c,0x10cec,0x10466,0x11dec,0x10ce6,0x11de6,0x1e7a8,0x1e7a4,0x1e7a2,0x1c728, // 880 | ||
246 | 0x1cf68,0x1e7b6,0x1cf64,0x1c722,0x1cf62,0x18628,0x1c316,0x18e68,0x1c736,0x19ee8, // 890 | ||
247 | 0x18e64,0x18622,0x19ee4,0x18e62,0x19ee2,0x10428,0x18216,0x10c68,0x18636,0x11ce8, // 900 | ||
248 | 0x10c64,0x10422,0x13de8,0x11ce4,0x10c62,0x13de4,0x11ce2,0x10436,0x10c76,0x11cf6, // 910 | ||
249 | 0x13df6,0x1f7d4,0x1f7d2,0x1e794,0x1efb4,0x1e792,0x1efb2,0x1c714,0x1cf34,0x1c712, // 920 | ||
250 | 0x1df74,0x1cf32,0x1df72,0x18614,0x18e34,0x18612,0x19e74,0x18e32,0x1bef4), // 929 | ||
251 | array( // cluster 3 ----------------------------------------------------------------------- | ||
252 | 0x1f560,0x1fab8,0x1ea40,0x1f530,0x1fa9c,0x1ea20,0x1f518,0x1fa8e,0x1ea10,0x1f50c, // 10 | ||
253 | 0x1ea08,0x1f506,0x1ea04,0x1eb60,0x1f5b8,0x1fade,0x1d640,0x1eb30,0x1f59c,0x1d620, // 20 | ||
254 | 0x1eb18,0x1f58e,0x1d610,0x1eb0c,0x1d608,0x1eb06,0x1d604,0x1d760,0x1ebb8,0x1f5de, // 30 | ||
255 | 0x1ae40,0x1d730,0x1eb9c,0x1ae20,0x1d718,0x1eb8e,0x1ae10,0x1d70c,0x1ae08,0x1d706, // 40 | ||
256 | 0x1ae04,0x1af60,0x1d7b8,0x1ebde,0x15e40,0x1af30,0x1d79c,0x15e20,0x1af18,0x1d78e, // 50 | ||
257 | 0x15e10,0x1af0c,0x15e08,0x1af06,0x15f60,0x1afb8,0x1d7de,0x15f30,0x1af9c,0x15f18, // 60 | ||
258 | 0x1af8e,0x15f0c,0x15fb8,0x1afde,0x15f9c,0x15f8e,0x1e940,0x1f4b0,0x1fa5c,0x1e920, // 70 | ||
259 | 0x1f498,0x1fa4e,0x1e910,0x1f48c,0x1e908,0x1f486,0x1e904,0x1e902,0x1d340,0x1e9b0, // 80 | ||
260 | 0x1f4dc,0x1d320,0x1e998,0x1f4ce,0x1d310,0x1e98c,0x1d308,0x1e986,0x1d304,0x1d302, // 90 | ||
261 | 0x1a740,0x1d3b0,0x1e9dc,0x1a720,0x1d398,0x1e9ce,0x1a710,0x1d38c,0x1a708,0x1d386, // 100 | ||
262 | 0x1a704,0x1a702,0x14f40,0x1a7b0,0x1d3dc,0x14f20,0x1a798,0x1d3ce,0x14f10,0x1a78c, // 110 | ||
263 | 0x14f08,0x1a786,0x14f04,0x14fb0,0x1a7dc,0x14f98,0x1a7ce,0x14f8c,0x14f86,0x14fdc, // 120 | ||
264 | 0x14fce,0x1e8a0,0x1f458,0x1fa2e,0x1e890,0x1f44c,0x1e888,0x1f446,0x1e884,0x1e882, // 130 | ||
265 | 0x1d1a0,0x1e8d8,0x1f46e,0x1d190,0x1e8cc,0x1d188,0x1e8c6,0x1d184,0x1d182,0x1a3a0, // 140 | ||
266 | 0x1d1d8,0x1e8ee,0x1a390,0x1d1cc,0x1a388,0x1d1c6,0x1a384,0x1a382,0x147a0,0x1a3d8, // 150 | ||
267 | 0x1d1ee,0x14790,0x1a3cc,0x14788,0x1a3c6,0x14784,0x14782,0x147d8,0x1a3ee,0x147cc, // 160 | ||
268 | 0x147c6,0x147ee,0x1e850,0x1f42c,0x1e848,0x1f426,0x1e844,0x1e842,0x1d0d0,0x1e86c, // 170 | ||
269 | 0x1d0c8,0x1e866,0x1d0c4,0x1d0c2,0x1a1d0,0x1d0ec,0x1a1c8,0x1d0e6,0x1a1c4,0x1a1c2, // 180 | ||
270 | 0x143d0,0x1a1ec,0x143c8,0x1a1e6,0x143c4,0x143c2,0x143ec,0x143e6,0x1e828,0x1f416, // 190 | ||
271 | 0x1e824,0x1e822,0x1d068,0x1e836,0x1d064,0x1d062,0x1a0e8,0x1d076,0x1a0e4,0x1a0e2, // 200 | ||
272 | 0x141e8,0x1a0f6,0x141e4,0x141e2,0x1e814,0x1e812,0x1d034,0x1d032,0x1a074,0x1a072, // 210 | ||
273 | 0x1e540,0x1f2b0,0x1f95c,0x1e520,0x1f298,0x1f94e,0x1e510,0x1f28c,0x1e508,0x1f286, // 220 | ||
274 | 0x1e504,0x1e502,0x1cb40,0x1e5b0,0x1f2dc,0x1cb20,0x1e598,0x1f2ce,0x1cb10,0x1e58c, // 230 | ||
275 | 0x1cb08,0x1e586,0x1cb04,0x1cb02,0x19740,0x1cbb0,0x1e5dc,0x19720,0x1cb98,0x1e5ce, // 240 | ||
276 | 0x19710,0x1cb8c,0x19708,0x1cb86,0x19704,0x19702,0x12f40,0x197b0,0x1cbdc,0x12f20, // 250 | ||
277 | 0x19798,0x1cbce,0x12f10,0x1978c,0x12f08,0x19786,0x12f04,0x12fb0,0x197dc,0x12f98, // 260 | ||
278 | 0x197ce,0x12f8c,0x12f86,0x12fdc,0x12fce,0x1f6a0,0x1fb58,0x16bf0,0x1f690,0x1fb4c, // 270 | ||
279 | 0x169f8,0x1f688,0x1fb46,0x168fc,0x1f684,0x1f682,0x1e4a0,0x1f258,0x1f92e,0x1eda0, // 280 | ||
280 | 0x1e490,0x1fb6e,0x1ed90,0x1f6cc,0x1f246,0x1ed88,0x1e484,0x1ed84,0x1e482,0x1ed82, // 290 | ||
281 | 0x1c9a0,0x1e4d8,0x1f26e,0x1dba0,0x1c990,0x1e4cc,0x1db90,0x1edcc,0x1e4c6,0x1db88, // 300 | ||
282 | 0x1c984,0x1db84,0x1c982,0x1db82,0x193a0,0x1c9d8,0x1e4ee,0x1b7a0,0x19390,0x1c9cc, // 310 | ||
283 | 0x1b790,0x1dbcc,0x1c9c6,0x1b788,0x19384,0x1b784,0x19382,0x1b782,0x127a0,0x193d8, // 320 | ||
284 | 0x1c9ee,0x16fa0,0x12790,0x193cc,0x16f90,0x1b7cc,0x193c6,0x16f88,0x12784,0x16f84, // 330 | ||
285 | 0x12782,0x127d8,0x193ee,0x16fd8,0x127cc,0x16fcc,0x127c6,0x16fc6,0x127ee,0x1f650, // 340 | ||
286 | 0x1fb2c,0x165f8,0x1f648,0x1fb26,0x164fc,0x1f644,0x1647e,0x1f642,0x1e450,0x1f22c, // 350 | ||
287 | 0x1ecd0,0x1e448,0x1f226,0x1ecc8,0x1f666,0x1ecc4,0x1e442,0x1ecc2,0x1c8d0,0x1e46c, // 360 | ||
288 | 0x1d9d0,0x1c8c8,0x1e466,0x1d9c8,0x1ece6,0x1d9c4,0x1c8c2,0x1d9c2,0x191d0,0x1c8ec, // 370 | ||
289 | 0x1b3d0,0x191c8,0x1c8e6,0x1b3c8,0x1d9e6,0x1b3c4,0x191c2,0x1b3c2,0x123d0,0x191ec, // 380 | ||
290 | 0x167d0,0x123c8,0x191e6,0x167c8,0x1b3e6,0x167c4,0x123c2,0x167c2,0x123ec,0x167ec, // 390 | ||
291 | 0x123e6,0x167e6,0x1f628,0x1fb16,0x162fc,0x1f624,0x1627e,0x1f622,0x1e428,0x1f216, // 400 | ||
292 | 0x1ec68,0x1f636,0x1ec64,0x1e422,0x1ec62,0x1c868,0x1e436,0x1d8e8,0x1c864,0x1d8e4, // 410 | ||
293 | 0x1c862,0x1d8e2,0x190e8,0x1c876,0x1b1e8,0x1d8f6,0x1b1e4,0x190e2,0x1b1e2,0x121e8, // 420 | ||
294 | 0x190f6,0x163e8,0x121e4,0x163e4,0x121e2,0x163e2,0x121f6,0x163f6,0x1f614,0x1617e, // 430 | ||
295 | 0x1f612,0x1e414,0x1ec34,0x1e412,0x1ec32,0x1c834,0x1d874,0x1c832,0x1d872,0x19074, // 440 | ||
296 | 0x1b0f4,0x19072,0x1b0f2,0x120f4,0x161f4,0x120f2,0x161f2,0x1f60a,0x1e40a,0x1ec1a, // 450 | ||
297 | 0x1c81a,0x1d83a,0x1903a,0x1b07a,0x1e2a0,0x1f158,0x1f8ae,0x1e290,0x1f14c,0x1e288, // 460 | ||
298 | 0x1f146,0x1e284,0x1e282,0x1c5a0,0x1e2d8,0x1f16e,0x1c590,0x1e2cc,0x1c588,0x1e2c6, // 470 | ||
299 | 0x1c584,0x1c582,0x18ba0,0x1c5d8,0x1e2ee,0x18b90,0x1c5cc,0x18b88,0x1c5c6,0x18b84, // 480 | ||
300 | 0x18b82,0x117a0,0x18bd8,0x1c5ee,0x11790,0x18bcc,0x11788,0x18bc6,0x11784,0x11782, // 490 | ||
301 | 0x117d8,0x18bee,0x117cc,0x117c6,0x117ee,0x1f350,0x1f9ac,0x135f8,0x1f348,0x1f9a6, // 500 | ||
302 | 0x134fc,0x1f344,0x1347e,0x1f342,0x1e250,0x1f12c,0x1e6d0,0x1e248,0x1f126,0x1e6c8, // 510 | ||
303 | 0x1f366,0x1e6c4,0x1e242,0x1e6c2,0x1c4d0,0x1e26c,0x1cdd0,0x1c4c8,0x1e266,0x1cdc8, // 520 | ||
304 | 0x1e6e6,0x1cdc4,0x1c4c2,0x1cdc2,0x189d0,0x1c4ec,0x19bd0,0x189c8,0x1c4e6,0x19bc8, // 530 | ||
305 | 0x1cde6,0x19bc4,0x189c2,0x19bc2,0x113d0,0x189ec,0x137d0,0x113c8,0x189e6,0x137c8, // 540 | ||
306 | 0x19be6,0x137c4,0x113c2,0x137c2,0x113ec,0x137ec,0x113e6,0x137e6,0x1fba8,0x175f0, // 550 | ||
307 | 0x1bafc,0x1fba4,0x174f8,0x1ba7e,0x1fba2,0x1747c,0x1743e,0x1f328,0x1f996,0x132fc, // 560 | ||
308 | 0x1f768,0x1fbb6,0x176fc,0x1327e,0x1f764,0x1f322,0x1767e,0x1f762,0x1e228,0x1f116, // 570 | ||
309 | 0x1e668,0x1e224,0x1eee8,0x1f776,0x1e222,0x1eee4,0x1e662,0x1eee2,0x1c468,0x1e236, // 580 | ||
310 | 0x1cce8,0x1c464,0x1dde8,0x1cce4,0x1c462,0x1dde4,0x1cce2,0x1dde2,0x188e8,0x1c476, // 590 | ||
311 | 0x199e8,0x188e4,0x1bbe8,0x199e4,0x188e2,0x1bbe4,0x199e2,0x1bbe2,0x111e8,0x188f6, // 600 | ||
312 | 0x133e8,0x111e4,0x177e8,0x133e4,0x111e2,0x177e4,0x133e2,0x177e2,0x111f6,0x133f6, // 610 | ||
313 | 0x1fb94,0x172f8,0x1b97e,0x1fb92,0x1727c,0x1723e,0x1f314,0x1317e,0x1f734,0x1f312, // 620 | ||
314 | 0x1737e,0x1f732,0x1e214,0x1e634,0x1e212,0x1ee74,0x1e632,0x1ee72,0x1c434,0x1cc74, // 630 | ||
315 | 0x1c432,0x1dcf4,0x1cc72,0x1dcf2,0x18874,0x198f4,0x18872,0x1b9f4,0x198f2,0x1b9f2, // 640 | ||
316 | 0x110f4,0x131f4,0x110f2,0x173f4,0x131f2,0x173f2,0x1fb8a,0x1717c,0x1713e,0x1f30a, // 650 | ||
317 | 0x1f71a,0x1e20a,0x1e61a,0x1ee3a,0x1c41a,0x1cc3a,0x1dc7a,0x1883a,0x1987a,0x1b8fa, // 660 | ||
318 | 0x1107a,0x130fa,0x171fa,0x170be,0x1e150,0x1f0ac,0x1e148,0x1f0a6,0x1e144,0x1e142, // 670 | ||
319 | 0x1c2d0,0x1e16c,0x1c2c8,0x1e166,0x1c2c4,0x1c2c2,0x185d0,0x1c2ec,0x185c8,0x1c2e6, // 680 | ||
320 | 0x185c4,0x185c2,0x10bd0,0x185ec,0x10bc8,0x185e6,0x10bc4,0x10bc2,0x10bec,0x10be6, // 690 | ||
321 | 0x1f1a8,0x1f8d6,0x11afc,0x1f1a4,0x11a7e,0x1f1a2,0x1e128,0x1f096,0x1e368,0x1e124, // 700 | ||
322 | 0x1e364,0x1e122,0x1e362,0x1c268,0x1e136,0x1c6e8,0x1c264,0x1c6e4,0x1c262,0x1c6e2, // 710 | ||
323 | 0x184e8,0x1c276,0x18de8,0x184e4,0x18de4,0x184e2,0x18de2,0x109e8,0x184f6,0x11be8, // 720 | ||
324 | 0x109e4,0x11be4,0x109e2,0x11be2,0x109f6,0x11bf6,0x1f9d4,0x13af8,0x19d7e,0x1f9d2, // 730 | ||
325 | 0x13a7c,0x13a3e,0x1f194,0x1197e,0x1f3b4,0x1f192,0x13b7e,0x1f3b2,0x1e114,0x1e334, // 740 | ||
326 | 0x1e112,0x1e774,0x1e332,0x1e772,0x1c234,0x1c674,0x1c232,0x1cef4,0x1c672,0x1cef2, // 750 | ||
327 | 0x18474,0x18cf4,0x18472,0x19df4,0x18cf2,0x19df2,0x108f4,0x119f4,0x108f2,0x13bf4, // 760 | ||
328 | 0x119f2,0x13bf2,0x17af0,0x1bd7c,0x17a78,0x1bd3e,0x17a3c,0x17a1e,0x1f9ca,0x1397c, // 770 | ||
329 | 0x1fbda,0x17b7c,0x1393e,0x17b3e,0x1f18a,0x1f39a,0x1f7ba,0x1e10a,0x1e31a,0x1e73a, // 780 | ||
330 | 0x1ef7a,0x1c21a,0x1c63a,0x1ce7a,0x1defa,0x1843a,0x18c7a,0x19cfa,0x1bdfa,0x1087a, // 790 | ||
331 | 0x118fa,0x139fa,0x17978,0x1bcbe,0x1793c,0x1791e,0x138be,0x179be,0x178bc,0x1789e, // 800 | ||
332 | 0x1785e,0x1e0a8,0x1e0a4,0x1e0a2,0x1c168,0x1e0b6,0x1c164,0x1c162,0x182e8,0x1c176, // 810 | ||
333 | 0x182e4,0x182e2,0x105e8,0x182f6,0x105e4,0x105e2,0x105f6,0x1f0d4,0x10d7e,0x1f0d2, // 820 | ||
334 | 0x1e094,0x1e1b4,0x1e092,0x1e1b2,0x1c134,0x1c374,0x1c132,0x1c372,0x18274,0x186f4, // 830 | ||
335 | 0x18272,0x186f2,0x104f4,0x10df4,0x104f2,0x10df2,0x1f8ea,0x11d7c,0x11d3e,0x1f0ca, // 840 | ||
336 | 0x1f1da,0x1e08a,0x1e19a,0x1e3ba,0x1c11a,0x1c33a,0x1c77a,0x1823a,0x1867a,0x18efa, // 850 | ||
337 | 0x1047a,0x10cfa,0x11dfa,0x13d78,0x19ebe,0x13d3c,0x13d1e,0x11cbe,0x13dbe,0x17d70, // 860 | ||
338 | 0x1bebc,0x17d38,0x1be9e,0x17d1c,0x17d0e,0x13cbc,0x17dbc,0x13c9e,0x17d9e,0x17cb8, // 870 | ||
339 | 0x1be5e,0x17c9c,0x17c8e,0x13c5e,0x17cde,0x17c5c,0x17c4e,0x17c2e,0x1c0b4,0x1c0b2, // 880 | ||
340 | 0x18174,0x18172,0x102f4,0x102f2,0x1e0da,0x1c09a,0x1c1ba,0x1813a,0x1837a,0x1027a, // 890 | ||
341 | 0x106fa,0x10ebe,0x11ebc,0x11e9e,0x13eb8,0x19f5e,0x13e9c,0x13e8e,0x11e5e,0x13ede, // 900 | ||
342 | 0x17eb0,0x1bf5c,0x17e98,0x1bf4e,0x17e8c,0x17e86,0x13e5c,0x17edc,0x13e4e,0x17ece, // 910 | ||
343 | 0x17e58,0x1bf2e,0x17e4c,0x17e46,0x13e2e,0x17e6e,0x17e2c,0x17e26,0x10f5e,0x11f5c, // 920 | ||
344 | 0x11f4e,0x13f58,0x19fae,0x13f4c,0x13f46,0x11f2e,0x13f6e,0x13f2c,0x13f26), // 929 | ||
345 | array( // cluster 6 ----------------------------------------------------------------------- | ||
346 | 0x1abe0,0x1d5f8,0x153c0,0x1a9f0,0x1d4fc,0x151e0,0x1a8f8,0x1d47e,0x150f0,0x1a87c, // 10 | ||
347 | 0x15078,0x1fad0,0x15be0,0x1adf8,0x1fac8,0x159f0,0x1acfc,0x1fac4,0x158f8,0x1ac7e, // 20 | ||
348 | 0x1fac2,0x1587c,0x1f5d0,0x1faec,0x15df8,0x1f5c8,0x1fae6,0x15cfc,0x1f5c4,0x15c7e, // 30 | ||
349 | 0x1f5c2,0x1ebd0,0x1f5ec,0x1ebc8,0x1f5e6,0x1ebc4,0x1ebc2,0x1d7d0,0x1ebec,0x1d7c8, // 40 | ||
350 | 0x1ebe6,0x1d7c4,0x1d7c2,0x1afd0,0x1d7ec,0x1afc8,0x1d7e6,0x1afc4,0x14bc0,0x1a5f0, // 50 | ||
351 | 0x1d2fc,0x149e0,0x1a4f8,0x1d27e,0x148f0,0x1a47c,0x14878,0x1a43e,0x1483c,0x1fa68, // 60 | ||
352 | 0x14df0,0x1a6fc,0x1fa64,0x14cf8,0x1a67e,0x1fa62,0x14c7c,0x14c3e,0x1f4e8,0x1fa76, // 70 | ||
353 | 0x14efc,0x1f4e4,0x14e7e,0x1f4e2,0x1e9e8,0x1f4f6,0x1e9e4,0x1e9e2,0x1d3e8,0x1e9f6, // 80 | ||
354 | 0x1d3e4,0x1d3e2,0x1a7e8,0x1d3f6,0x1a7e4,0x1a7e2,0x145e0,0x1a2f8,0x1d17e,0x144f0, // 90 | ||
355 | 0x1a27c,0x14478,0x1a23e,0x1443c,0x1441e,0x1fa34,0x146f8,0x1a37e,0x1fa32,0x1467c, // 100 | ||
356 | 0x1463e,0x1f474,0x1477e,0x1f472,0x1e8f4,0x1e8f2,0x1d1f4,0x1d1f2,0x1a3f4,0x1a3f2, // 110 | ||
357 | 0x142f0,0x1a17c,0x14278,0x1a13e,0x1423c,0x1421e,0x1fa1a,0x1437c,0x1433e,0x1f43a, // 120 | ||
358 | 0x1e87a,0x1d0fa,0x14178,0x1a0be,0x1413c,0x1411e,0x141be,0x140bc,0x1409e,0x12bc0, // 130 | ||
359 | 0x195f0,0x1cafc,0x129e0,0x194f8,0x1ca7e,0x128f0,0x1947c,0x12878,0x1943e,0x1283c, // 140 | ||
360 | 0x1f968,0x12df0,0x196fc,0x1f964,0x12cf8,0x1967e,0x1f962,0x12c7c,0x12c3e,0x1f2e8, // 150 | ||
361 | 0x1f976,0x12efc,0x1f2e4,0x12e7e,0x1f2e2,0x1e5e8,0x1f2f6,0x1e5e4,0x1e5e2,0x1cbe8, // 160 | ||
362 | 0x1e5f6,0x1cbe4,0x1cbe2,0x197e8,0x1cbf6,0x197e4,0x197e2,0x1b5e0,0x1daf8,0x1ed7e, // 170 | ||
363 | 0x169c0,0x1b4f0,0x1da7c,0x168e0,0x1b478,0x1da3e,0x16870,0x1b43c,0x16838,0x1b41e, // 180 | ||
364 | 0x1681c,0x125e0,0x192f8,0x1c97e,0x16de0,0x124f0,0x1927c,0x16cf0,0x1b67c,0x1923e, // 190 | ||
365 | 0x16c78,0x1243c,0x16c3c,0x1241e,0x16c1e,0x1f934,0x126f8,0x1937e,0x1fb74,0x1f932, // 200 | ||
366 | 0x16ef8,0x1267c,0x1fb72,0x16e7c,0x1263e,0x16e3e,0x1f274,0x1277e,0x1f6f4,0x1f272, // 210 | ||
367 | 0x16f7e,0x1f6f2,0x1e4f4,0x1edf4,0x1e4f2,0x1edf2,0x1c9f4,0x1dbf4,0x1c9f2,0x1dbf2, // 220 | ||
368 | 0x193f4,0x193f2,0x165c0,0x1b2f0,0x1d97c,0x164e0,0x1b278,0x1d93e,0x16470,0x1b23c, // 230 | ||
369 | 0x16438,0x1b21e,0x1641c,0x1640e,0x122f0,0x1917c,0x166f0,0x12278,0x1913e,0x16678, // 240 | ||
370 | 0x1b33e,0x1663c,0x1221e,0x1661e,0x1f91a,0x1237c,0x1fb3a,0x1677c,0x1233e,0x1673e, // 250 | ||
371 | 0x1f23a,0x1f67a,0x1e47a,0x1ecfa,0x1c8fa,0x1d9fa,0x191fa,0x162e0,0x1b178,0x1d8be, // 260 | ||
372 | 0x16270,0x1b13c,0x16238,0x1b11e,0x1621c,0x1620e,0x12178,0x190be,0x16378,0x1213c, // 270 | ||
373 | 0x1633c,0x1211e,0x1631e,0x121be,0x163be,0x16170,0x1b0bc,0x16138,0x1b09e,0x1611c, // 280 | ||
374 | 0x1610e,0x120bc,0x161bc,0x1209e,0x1619e,0x160b8,0x1b05e,0x1609c,0x1608e,0x1205e, // 290 | ||
375 | 0x160de,0x1605c,0x1604e,0x115e0,0x18af8,0x1c57e,0x114f0,0x18a7c,0x11478,0x18a3e, // 300 | ||
376 | 0x1143c,0x1141e,0x1f8b4,0x116f8,0x18b7e,0x1f8b2,0x1167c,0x1163e,0x1f174,0x1177e, // 310 | ||
377 | 0x1f172,0x1e2f4,0x1e2f2,0x1c5f4,0x1c5f2,0x18bf4,0x18bf2,0x135c0,0x19af0,0x1cd7c, // 320 | ||
378 | 0x134e0,0x19a78,0x1cd3e,0x13470,0x19a3c,0x13438,0x19a1e,0x1341c,0x1340e,0x112f0, // 330 | ||
379 | 0x1897c,0x136f0,0x11278,0x1893e,0x13678,0x19b3e,0x1363c,0x1121e,0x1361e,0x1f89a, // 340 | ||
380 | 0x1137c,0x1f9ba,0x1377c,0x1133e,0x1373e,0x1f13a,0x1f37a,0x1e27a,0x1e6fa,0x1c4fa, // 350 | ||
381 | 0x1cdfa,0x189fa,0x1bae0,0x1dd78,0x1eebe,0x174c0,0x1ba70,0x1dd3c,0x17460,0x1ba38, // 360 | ||
382 | 0x1dd1e,0x17430,0x1ba1c,0x17418,0x1ba0e,0x1740c,0x132e0,0x19978,0x1ccbe,0x176e0, // 370 | ||
383 | 0x13270,0x1993c,0x17670,0x1bb3c,0x1991e,0x17638,0x1321c,0x1761c,0x1320e,0x1760e, // 380 | ||
384 | 0x11178,0x188be,0x13378,0x1113c,0x17778,0x1333c,0x1111e,0x1773c,0x1331e,0x1771e, // 390 | ||
385 | 0x111be,0x133be,0x177be,0x172c0,0x1b970,0x1dcbc,0x17260,0x1b938,0x1dc9e,0x17230, // 400 | ||
386 | 0x1b91c,0x17218,0x1b90e,0x1720c,0x17206,0x13170,0x198bc,0x17370,0x13138,0x1989e, // 410 | ||
387 | 0x17338,0x1b99e,0x1731c,0x1310e,0x1730e,0x110bc,0x131bc,0x1109e,0x173bc,0x1319e, // 420 | ||
388 | 0x1739e,0x17160,0x1b8b8,0x1dc5e,0x17130,0x1b89c,0x17118,0x1b88e,0x1710c,0x17106, // 430 | ||
389 | 0x130b8,0x1985e,0x171b8,0x1309c,0x1719c,0x1308e,0x1718e,0x1105e,0x130de,0x171de, // 440 | ||
390 | 0x170b0,0x1b85c,0x17098,0x1b84e,0x1708c,0x17086,0x1305c,0x170dc,0x1304e,0x170ce, // 450 | ||
391 | 0x17058,0x1b82e,0x1704c,0x17046,0x1302e,0x1706e,0x1702c,0x17026,0x10af0,0x1857c, // 460 | ||
392 | 0x10a78,0x1853e,0x10a3c,0x10a1e,0x10b7c,0x10b3e,0x1f0ba,0x1e17a,0x1c2fa,0x185fa, // 470 | ||
393 | 0x11ae0,0x18d78,0x1c6be,0x11a70,0x18d3c,0x11a38,0x18d1e,0x11a1c,0x11a0e,0x10978, // 480 | ||
394 | 0x184be,0x11b78,0x1093c,0x11b3c,0x1091e,0x11b1e,0x109be,0x11bbe,0x13ac0,0x19d70, // 490 | ||
395 | 0x1cebc,0x13a60,0x19d38,0x1ce9e,0x13a30,0x19d1c,0x13a18,0x19d0e,0x13a0c,0x13a06, // 500 | ||
396 | 0x11970,0x18cbc,0x13b70,0x11938,0x18c9e,0x13b38,0x1191c,0x13b1c,0x1190e,0x13b0e, // 510 | ||
397 | 0x108bc,0x119bc,0x1089e,0x13bbc,0x1199e,0x13b9e,0x1bd60,0x1deb8,0x1ef5e,0x17a40, // 520 | ||
398 | 0x1bd30,0x1de9c,0x17a20,0x1bd18,0x1de8e,0x17a10,0x1bd0c,0x17a08,0x1bd06,0x17a04, // 530 | ||
399 | 0x13960,0x19cb8,0x1ce5e,0x17b60,0x13930,0x19c9c,0x17b30,0x1bd9c,0x19c8e,0x17b18, // 540 | ||
400 | 0x1390c,0x17b0c,0x13906,0x17b06,0x118b8,0x18c5e,0x139b8,0x1189c,0x17bb8,0x1399c, // 550 | ||
401 | 0x1188e,0x17b9c,0x1398e,0x17b8e,0x1085e,0x118de,0x139de,0x17bde,0x17940,0x1bcb0, // 560 | ||
402 | 0x1de5c,0x17920,0x1bc98,0x1de4e,0x17910,0x1bc8c,0x17908,0x1bc86,0x17904,0x17902, // 570 | ||
403 | 0x138b0,0x19c5c,0x179b0,0x13898,0x19c4e,0x17998,0x1bcce,0x1798c,0x13886,0x17986, // 580 | ||
404 | 0x1185c,0x138dc,0x1184e,0x179dc,0x138ce,0x179ce,0x178a0,0x1bc58,0x1de2e,0x17890, // 590 | ||
405 | 0x1bc4c,0x17888,0x1bc46,0x17884,0x17882,0x13858,0x19c2e,0x178d8,0x1384c,0x178cc, // 600 | ||
406 | 0x13846,0x178c6,0x1182e,0x1386e,0x178ee,0x17850,0x1bc2c,0x17848,0x1bc26,0x17844, // 610 | ||
407 | 0x17842,0x1382c,0x1786c,0x13826,0x17866,0x17828,0x1bc16,0x17824,0x17822,0x13816, // 620 | ||
408 | 0x17836,0x10578,0x182be,0x1053c,0x1051e,0x105be,0x10d70,0x186bc,0x10d38,0x1869e, // 630 | ||
409 | 0x10d1c,0x10d0e,0x104bc,0x10dbc,0x1049e,0x10d9e,0x11d60,0x18eb8,0x1c75e,0x11d30, // 640 | ||
410 | 0x18e9c,0x11d18,0x18e8e,0x11d0c,0x11d06,0x10cb8,0x1865e,0x11db8,0x10c9c,0x11d9c, // 650 | ||
411 | 0x10c8e,0x11d8e,0x1045e,0x10cde,0x11dde,0x13d40,0x19eb0,0x1cf5c,0x13d20,0x19e98, // 660 | ||
412 | 0x1cf4e,0x13d10,0x19e8c,0x13d08,0x19e86,0x13d04,0x13d02,0x11cb0,0x18e5c,0x13db0, // 670 | ||
413 | 0x11c98,0x18e4e,0x13d98,0x19ece,0x13d8c,0x11c86,0x13d86,0x10c5c,0x11cdc,0x10c4e, // 680 | ||
414 | 0x13ddc,0x11cce,0x13dce,0x1bea0,0x1df58,0x1efae,0x1be90,0x1df4c,0x1be88,0x1df46, // 690 | ||
415 | 0x1be84,0x1be82,0x13ca0,0x19e58,0x1cf2e,0x17da0,0x13c90,0x19e4c,0x17d90,0x1becc, // 700 | ||
416 | 0x19e46,0x17d88,0x13c84,0x17d84,0x13c82,0x17d82,0x11c58,0x18e2e,0x13cd8,0x11c4c, // 710 | ||
417 | 0x17dd8,0x13ccc,0x11c46,0x17dcc,0x13cc6,0x17dc6,0x10c2e,0x11c6e,0x13cee,0x17dee, // 720 | ||
418 | 0x1be50,0x1df2c,0x1be48,0x1df26,0x1be44,0x1be42,0x13c50,0x19e2c,0x17cd0,0x13c48, // 730 | ||
419 | 0x19e26,0x17cc8,0x1be66,0x17cc4,0x13c42,0x17cc2,0x11c2c,0x13c6c,0x11c26,0x17cec, // 740 | ||
420 | 0x13c66,0x17ce6,0x1be28,0x1df16,0x1be24,0x1be22,0x13c28,0x19e16,0x17c68,0x13c24, // 750 | ||
421 | 0x17c64,0x13c22,0x17c62,0x11c16,0x13c36,0x17c76,0x1be14,0x1be12,0x13c14,0x17c34, // 760 | ||
422 | 0x13c12,0x17c32,0x102bc,0x1029e,0x106b8,0x1835e,0x1069c,0x1068e,0x1025e,0x106de, // 770 | ||
423 | 0x10eb0,0x1875c,0x10e98,0x1874e,0x10e8c,0x10e86,0x1065c,0x10edc,0x1064e,0x10ece, // 780 | ||
424 | 0x11ea0,0x18f58,0x1c7ae,0x11e90,0x18f4c,0x11e88,0x18f46,0x11e84,0x11e82,0x10e58, // 790 | ||
425 | 0x1872e,0x11ed8,0x18f6e,0x11ecc,0x10e46,0x11ec6,0x1062e,0x10e6e,0x11eee,0x19f50, // 800 | ||
426 | 0x1cfac,0x19f48,0x1cfa6,0x19f44,0x19f42,0x11e50,0x18f2c,0x13ed0,0x19f6c,0x18f26, // 810 | ||
427 | 0x13ec8,0x11e44,0x13ec4,0x11e42,0x13ec2,0x10e2c,0x11e6c,0x10e26,0x13eec,0x11e66, // 820 | ||
428 | 0x13ee6,0x1dfa8,0x1efd6,0x1dfa4,0x1dfa2,0x19f28,0x1cf96,0x1bf68,0x19f24,0x1bf64, // 830 | ||
429 | 0x19f22,0x1bf62,0x11e28,0x18f16,0x13e68,0x11e24,0x17ee8,0x13e64,0x11e22,0x17ee4, // 840 | ||
430 | 0x13e62,0x17ee2,0x10e16,0x11e36,0x13e76,0x17ef6,0x1df94,0x1df92,0x19f14,0x1bf34, // 850 | ||
431 | 0x19f12,0x1bf32,0x11e14,0x13e34,0x11e12,0x17e74,0x13e32,0x17e72,0x1df8a,0x19f0a, // 860 | ||
432 | 0x1bf1a,0x11e0a,0x13e1a,0x17e3a,0x1035c,0x1034e,0x10758,0x183ae,0x1074c,0x10746, // 870 | ||
433 | 0x1032e,0x1076e,0x10f50,0x187ac,0x10f48,0x187a6,0x10f44,0x10f42,0x1072c,0x10f6c, // 880 | ||
434 | 0x10726,0x10f66,0x18fa8,0x1c7d6,0x18fa4,0x18fa2,0x10f28,0x18796,0x11f68,0x18fb6, // 890 | ||
435 | 0x11f64,0x10f22,0x11f62,0x10716,0x10f36,0x11f76,0x1cfd4,0x1cfd2,0x18f94,0x19fb4, // 900 | ||
436 | 0x18f92,0x19fb2,0x10f14,0x11f34,0x10f12,0x13f74,0x11f32,0x13f72,0x1cfca,0x18f8a, // 910 | ||
437 | 0x19f9a,0x10f0a,0x11f1a,0x13f3a,0x103ac,0x103a6,0x107a8,0x183d6,0x107a4,0x107a2, // 920 | ||
438 | 0x10396,0x107b6,0x187d4,0x187d2,0x10794,0x10fb4,0x10792,0x10fb2,0x1c7ea) // 929 | ||
439 | ); // end of $clusters array | ||
440 | |||
441 | /** | ||
442 | * Array of factors of the Reed-Solomon polynomial equations used for error correction; one sub array for each correction level (0-8). | ||
443 | * @protected | ||
444 | */ | ||
445 | protected $rsfactors = array( | ||
446 | array( // ECL 0 (2 factors) ------------------------------------------------------------------------------- | ||
447 | 0x01b,0x395), // 2 | ||
448 | array( // ECL 1 (4 factors) ------------------------------------------------------------------------------- | ||
449 | 0x20a,0x238,0x2d3,0x329), // 4 | ||
450 | array( // ECL 2 (8 factors) ------------------------------------------------------------------------------- | ||
451 | 0x0ed,0x134,0x1b4,0x11c,0x286,0x28d,0x1ac,0x17b), // 8 | ||
452 | array( // ECL 3 (16 factors) ------------------------------------------------------------------------------ | ||
453 | 0x112,0x232,0x0e8,0x2f3,0x257,0x20c,0x321,0x084,0x127,0x074,0x1ba,0x1ac,0x127,0x02a,0x0b0,0x041),// 16 | ||
454 | array( // ECL 4 (32 factors) ------------------------------------------------------------------------------ | ||
455 | 0x169,0x23f,0x39a,0x20d,0x0b0,0x24a,0x280,0x141,0x218,0x2e6,0x2a5,0x2e6,0x2af,0x11c,0x0c1,0x205, // 16 | ||
456 | 0x111,0x1ee,0x107,0x093,0x251,0x320,0x23b,0x140,0x323,0x085,0x0e7,0x186,0x2ad,0x14a,0x03f,0x19a),// 32 | ||
457 | array( // ECL 5 (64 factors) ------------------------------------------------------------------------------ | ||
458 | 0x21b,0x1a6,0x006,0x05d,0x35e,0x303,0x1c5,0x06a,0x262,0x11f,0x06b,0x1f9,0x2dd,0x36d,0x17d,0x264, // 16 | ||
459 | 0x2d3,0x1dc,0x1ce,0x0ac,0x1ae,0x261,0x35a,0x336,0x21f,0x178,0x1ff,0x190,0x2a0,0x2fa,0x11b,0x0b8, // 32 | ||
460 | 0x1b8,0x023,0x207,0x01f,0x1cc,0x252,0x0e1,0x217,0x205,0x160,0x25d,0x09e,0x28b,0x0c9,0x1e8,0x1f6, // 48 | ||
461 | 0x288,0x2dd,0x2cd,0x053,0x194,0x061,0x118,0x303,0x348,0x275,0x004,0x17d,0x34b,0x26f,0x108,0x21f),// 64 | ||
462 | array( // ECL 6 (128 factors) ----------------------------------------------------------------------------- | ||
463 | 0x209,0x136,0x360,0x223,0x35a,0x244,0x128,0x17b,0x035,0x30b,0x381,0x1bc,0x190,0x39d,0x2ed,0x19f, // 16 | ||
464 | 0x336,0x05d,0x0d9,0x0d0,0x3a0,0x0f4,0x247,0x26c,0x0f6,0x094,0x1bf,0x277,0x124,0x38c,0x1ea,0x2c0, // 32 | ||
465 | 0x204,0x102,0x1c9,0x38b,0x252,0x2d3,0x2a2,0x124,0x110,0x060,0x2ac,0x1b0,0x2ae,0x25e,0x35c,0x239, // 48 | ||
466 | 0x0c1,0x0db,0x081,0x0ba,0x0ec,0x11f,0x0c0,0x307,0x116,0x0ad,0x028,0x17b,0x2c8,0x1cf,0x286,0x308, // 64 | ||
467 | 0x0ab,0x1eb,0x129,0x2fb,0x09c,0x2dc,0x05f,0x10e,0x1bf,0x05a,0x1fb,0x030,0x0e4,0x335,0x328,0x382, // 80 | ||
468 | 0x310,0x297,0x273,0x17a,0x17e,0x106,0x17c,0x25a,0x2f2,0x150,0x059,0x266,0x057,0x1b0,0x29e,0x268, // 96 | ||
469 | 0x09d,0x176,0x0f2,0x2d6,0x258,0x10d,0x177,0x382,0x34d,0x1c6,0x162,0x082,0x32e,0x24b,0x324,0x022, // 112 | ||
470 | 0x0d3,0x14a,0x21b,0x129,0x33b,0x361,0x025,0x205,0x342,0x13b,0x226,0x056,0x321,0x004,0x06c,0x21b),// 128 | ||
471 | array( // ECL 7 (256 factors) ----------------------------------------------------------------------------- | ||
472 | 0x20c,0x37e,0x04b,0x2fe,0x372,0x359,0x04a,0x0cc,0x052,0x24a,0x2c4,0x0fa,0x389,0x312,0x08a,0x2d0, // 16 | ||
473 | 0x35a,0x0c2,0x137,0x391,0x113,0x0be,0x177,0x352,0x1b6,0x2dd,0x0c2,0x118,0x0c9,0x118,0x33c,0x2f5, // 32 | ||
474 | 0x2c6,0x32e,0x397,0x059,0x044,0x239,0x00b,0x0cc,0x31c,0x25d,0x21c,0x391,0x321,0x2bc,0x31f,0x089, // 48 | ||
475 | 0x1b7,0x1a2,0x250,0x29c,0x161,0x35b,0x172,0x2b6,0x145,0x0f0,0x0d8,0x101,0x11c,0x225,0x0d1,0x374, // 64 | ||
476 | 0x13b,0x046,0x149,0x319,0x1ea,0x112,0x36d,0x0a2,0x2ed,0x32c,0x2ac,0x1cd,0x14e,0x178,0x351,0x209, // 80 | ||
477 | 0x133,0x123,0x323,0x2c8,0x013,0x166,0x18f,0x38c,0x067,0x1ff,0x033,0x008,0x205,0x0e1,0x121,0x1d6, // 96 | ||
478 | 0x27d,0x2db,0x042,0x0ff,0x395,0x10d,0x1cf,0x33e,0x2da,0x1b1,0x350,0x249,0x088,0x21a,0x38a,0x05a, // 112 | ||
479 | 0x002,0x122,0x2e7,0x0c7,0x28f,0x387,0x149,0x031,0x322,0x244,0x163,0x24c,0x0bc,0x1ce,0x00a,0x086, // 128 | ||
480 | 0x274,0x140,0x1df,0x082,0x2e3,0x047,0x107,0x13e,0x176,0x259,0x0c0,0x25d,0x08e,0x2a1,0x2af,0x0ea, // 144 | ||
481 | 0x2d2,0x180,0x0b1,0x2f0,0x25f,0x280,0x1c7,0x0c1,0x2b1,0x2c3,0x325,0x281,0x030,0x03c,0x2dc,0x26d, // 160 | ||
482 | 0x37f,0x220,0x105,0x354,0x28f,0x135,0x2b9,0x2f3,0x2f4,0x03c,0x0e7,0x305,0x1b2,0x1a5,0x2d6,0x210, // 176 | ||
483 | 0x1f7,0x076,0x031,0x31b,0x020,0x090,0x1f4,0x0ee,0x344,0x18a,0x118,0x236,0x13f,0x009,0x287,0x226, // 192 | ||
484 | 0x049,0x392,0x156,0x07e,0x020,0x2a9,0x14b,0x318,0x26c,0x03c,0x261,0x1b9,0x0b4,0x317,0x37d,0x2f2, // 208 | ||
485 | 0x25d,0x17f,0x0e4,0x2ed,0x2f8,0x0d5,0x036,0x129,0x086,0x036,0x342,0x12b,0x39a,0x0bf,0x38e,0x214, // 224 | ||
486 | 0x261,0x33d,0x0bd,0x014,0x0a7,0x01d,0x368,0x1c1,0x053,0x192,0x029,0x290,0x1f9,0x243,0x1e1,0x0ad, // 240 | ||
487 | 0x194,0x0fb,0x2b0,0x05f,0x1f1,0x22b,0x282,0x21f,0x133,0x09f,0x39c,0x22e,0x288,0x037,0x1f1,0x00a),// 256 | ||
488 | array( // ECL 8 (512 factors) ----------------------------------------------------------------------------- | ||
489 | 0x160,0x04d,0x175,0x1f8,0x023,0x257,0x1ac,0x0cf,0x199,0x23e,0x076,0x1f2,0x11d,0x17c,0x15e,0x1ec, // 16 | ||
490 | 0x0c5,0x109,0x398,0x09b,0x392,0x12b,0x0e5,0x283,0x126,0x367,0x132,0x058,0x057,0x0c1,0x160,0x30d, // 32 | ||
491 | 0x34e,0x04b,0x147,0x208,0x1b3,0x21f,0x0cb,0x29a,0x0f9,0x15a,0x30d,0x26d,0x280,0x10c,0x31a,0x216, // 48 | ||
492 | 0x21b,0x30d,0x198,0x186,0x284,0x066,0x1dc,0x1f3,0x122,0x278,0x221,0x025,0x35a,0x394,0x228,0x029, // 64 | ||
493 | 0x21e,0x121,0x07a,0x110,0x17f,0x320,0x1e5,0x062,0x2f0,0x1d8,0x2f9,0x06b,0x310,0x35c,0x292,0x2e5, // 80 | ||
494 | 0x122,0x0cc,0x2a9,0x197,0x357,0x055,0x063,0x03e,0x1e2,0x0b4,0x014,0x129,0x1c3,0x251,0x391,0x08e, // 96 | ||
495 | 0x328,0x2ac,0x11f,0x218,0x231,0x04c,0x28d,0x383,0x2d9,0x237,0x2e8,0x186,0x201,0x0c0,0x204,0x102, // 112 | ||
496 | 0x0f0,0x206,0x31a,0x18b,0x300,0x350,0x033,0x262,0x180,0x0a8,0x0be,0x33a,0x148,0x254,0x312,0x12f, // 128 | ||
497 | 0x23a,0x17d,0x19f,0x281,0x09c,0x0ed,0x097,0x1ad,0x213,0x0cf,0x2a4,0x2c6,0x059,0x0a8,0x130,0x192, // 144 | ||
498 | 0x028,0x2c4,0x23f,0x0a2,0x360,0x0e5,0x041,0x35d,0x349,0x200,0x0a4,0x1dd,0x0dd,0x05c,0x166,0x311, // 160 | ||
499 | 0x120,0x165,0x352,0x344,0x33b,0x2e0,0x2c3,0x05e,0x008,0x1ee,0x072,0x209,0x002,0x1f3,0x353,0x21f, // 176 | ||
500 | 0x098,0x2d9,0x303,0x05f,0x0f8,0x169,0x242,0x143,0x358,0x31d,0x121,0x033,0x2ac,0x1d2,0x215,0x334, // 192 | ||
501 | 0x29d,0x02d,0x386,0x1c4,0x0a7,0x156,0x0f4,0x0ad,0x023,0x1cf,0x28b,0x033,0x2bb,0x24f,0x1c4,0x242, // 208 | ||
502 | 0x025,0x07c,0x12a,0x14c,0x228,0x02b,0x1ab,0x077,0x296,0x309,0x1db,0x352,0x2fc,0x16c,0x242,0x38f, // 224 | ||
503 | 0x11b,0x2c7,0x1d8,0x1a4,0x0f5,0x120,0x252,0x18a,0x1ff,0x147,0x24d,0x309,0x2bb,0x2b0,0x02b,0x198, // 240 | ||
504 | 0x34a,0x17f,0x2d1,0x209,0x230,0x284,0x2ca,0x22f,0x03e,0x091,0x369,0x297,0x2c9,0x09f,0x2a0,0x2d9, // 256 | ||
505 | 0x270,0x03b,0x0c1,0x1a1,0x09e,0x0d1,0x233,0x234,0x157,0x2b5,0x06d,0x260,0x233,0x16d,0x0b5,0x304, // 272 | ||
506 | 0x2a5,0x136,0x0f8,0x161,0x2c4,0x19a,0x243,0x366,0x269,0x349,0x278,0x35c,0x121,0x218,0x023,0x309, // 288 | ||
507 | 0x26a,0x24a,0x1a8,0x341,0x04d,0x255,0x15a,0x10d,0x2f5,0x278,0x2b7,0x2ef,0x14b,0x0f7,0x0b8,0x02d, // 304 | ||
508 | 0x313,0x2a8,0x012,0x042,0x197,0x171,0x036,0x1ec,0x0e4,0x265,0x33e,0x39a,0x1b5,0x207,0x284,0x389, // 320 | ||
509 | 0x315,0x1a4,0x131,0x1b9,0x0cf,0x12c,0x37c,0x33b,0x08d,0x219,0x17d,0x296,0x201,0x038,0x0fc,0x155, // 336 | ||
510 | 0x0f2,0x31d,0x346,0x345,0x2d0,0x0e0,0x133,0x277,0x03d,0x057,0x230,0x136,0x2f4,0x299,0x18d,0x328, // 352 | ||
511 | 0x353,0x135,0x1d9,0x31b,0x17a,0x01f,0x287,0x393,0x1cb,0x326,0x24e,0x2db,0x1a9,0x0d8,0x224,0x0f9, // 368 | ||
512 | 0x141,0x371,0x2bb,0x217,0x2a1,0x30e,0x0d2,0x32f,0x389,0x12f,0x34b,0x39a,0x119,0x049,0x1d5,0x317, // 384 | ||
513 | 0x294,0x0a2,0x1f2,0x134,0x09b,0x1a6,0x38b,0x331,0x0bb,0x03e,0x010,0x1a9,0x217,0x150,0x11e,0x1b5, // 400 | ||
514 | 0x177,0x111,0x262,0x128,0x0b7,0x39b,0x074,0x29b,0x2ef,0x161,0x03e,0x16e,0x2b3,0x17b,0x2af,0x34a, // 416 | ||
515 | 0x025,0x165,0x2d0,0x2e6,0x14a,0x005,0x027,0x39b,0x137,0x1a8,0x0f2,0x2ed,0x141,0x036,0x29d,0x13c, // 432 | ||
516 | 0x156,0x12b,0x216,0x069,0x29b,0x1e8,0x280,0x2a0,0x240,0x21c,0x13c,0x1e6,0x2d1,0x262,0x02e,0x290, // 448 | ||
517 | 0x1bf,0x0ab,0x268,0x1d0,0x0be,0x213,0x129,0x141,0x2fa,0x2f0,0x215,0x0af,0x086,0x00e,0x17d,0x1b1, // 464 | ||
518 | 0x2cd,0x02d,0x06f,0x014,0x254,0x11c,0x2e0,0x08a,0x286,0x19b,0x36d,0x29d,0x08d,0x397,0x02d,0x30c, // 480 | ||
519 | 0x197,0x0a4,0x14c,0x383,0x0a5,0x2d6,0x258,0x145,0x1f2,0x28f,0x165,0x2f0,0x300,0x0df,0x351,0x287, // 496 | ||
520 | 0x03f,0x136,0x35f,0x0fb,0x16e,0x130,0x11a,0x2e2,0x2a3,0x19a,0x185,0x0f4,0x01f,0x079,0x12f,0x107) // 512 | ||
521 | ); | ||
522 | |||
523 | /** | ||
524 | * This is the class constructor. | ||
525 | * Creates a PDF417 object | ||
526 | * @param $code (string) code to represent using PDF417 | ||
527 | * @param $ecl (int) error correction level (0-8); default -1 = automatic correction level | ||
528 | * @param $aspectratio (float) the width to height of the symbol (excluding quiet zones) | ||
529 | * @param $macro (array) information for macro block | ||
530 | * @public | ||
531 | */ | ||
532 | public function __construct($code, $ecl=-1, $aspectratio=2, $macro=array()) { | ||
533 | $barcode_array = array(); | ||
534 | if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { | ||
535 | return false; | ||
536 | } | ||
537 | // get the input sequence array | ||
538 | $sequence = $this->getInputSequences($code); | ||
539 | $codewords = array(); // array of code-words | ||
540 | foreach($sequence as $seq) { | ||
541 | $cw = $this->getCompaction($seq[0], $seq[1], true); | ||
542 | $codewords = array_merge($codewords, $cw); | ||
543 | } | ||
544 | if ($codewords[0] == 900) { | ||
545 | // Text Alpha is the default mode, so remove the first code | ||
546 | array_shift($codewords); | ||
547 | } | ||
548 | // count number of codewords | ||
549 | $numcw = count($codewords); | ||
550 | if ($numcw > 925) { | ||
551 | // reached maximum data codeword capacity | ||
552 | return false; | ||
553 | } | ||
554 | // build macro control block codewords | ||
555 | if (!empty($macro)) { | ||
556 | $macrocw = array(); | ||
557 | // beginning of macro control block | ||
558 | $macrocw[] = 928; | ||
559 | // segment index | ||
560 | $cw = $this->getCompaction(902, sprintf('%05d', $macro['segment_index']), false); | ||
561 | $macrocw = array_merge($macrocw, $cw); | ||
562 | // file ID | ||
563 | $cw = $this->getCompaction(900, $macro['file_id'], false); | ||
564 | $macrocw = array_merge($macrocw, $cw); | ||
565 | // optional fields | ||
566 | $optmodes = array(900,902,902,900,900,902,902); | ||
567 | $optsize = array(-1,2,4,-1,-1,-1,2); | ||
568 | foreach ($optmodes as $k => $omode) { | ||
569 | if (isset($macro['option_'.$k])) { | ||
570 | $macrocw[] = 923; | ||
571 | $macrocw[] = $k; | ||
572 | if ($optsize[$k] == 2) { | ||
573 | $macro['option_'.$k] = sprintf('%05d', $macro['option_'.$k]); | ||
574 | } elseif ($optsize[$k] == 4) { | ||
575 | $macro['option_'.$k] = sprintf('%010d', $macro['option_'.$k]); | ||
576 | } | ||
577 | $cw = $this->getCompaction($omode, $macro['option_'.$k], false); | ||
578 | $macrocw = array_merge($macrocw, $cw); | ||
579 | } | ||
580 | } | ||
581 | if ($macro['segment_index'] == ($macro['segment_total'] - 1)) { | ||
582 | // end of control block | ||
583 | $macrocw[] = 922; | ||
584 | } | ||
585 | // update total codewords | ||
586 | $numcw += count($macrocw); | ||
587 | } | ||
588 | // set error correction level | ||
589 | $ecl = $this->getErrorCorrectionLevel($ecl, $numcw); | ||
590 | // number of codewords for error correction | ||
591 | $errsize = (2 << $ecl); | ||
592 | // calculate number of columns (number of codewords per row) and rows | ||
593 | $nce = ($numcw + $errsize + 1); | ||
594 | $cols = round((sqrt(4761 + (68 * $aspectratio * ROWHEIGHT * $nce)) - 69) / 34); | ||
595 | // adjust cols | ||
596 | if ($cols < 1) { | ||
597 | $cols = 1; | ||
598 | } elseif ($cols > 30) { | ||
599 | $cols = 30; | ||
600 | } | ||
601 | $rows = ceil($nce / $cols); | ||
602 | $size = ($cols * $rows); | ||
603 | // adjust rows | ||
604 | if (($rows < 3) OR ($rows > 90)) { | ||
605 | if ($rows < 3) { | ||
606 | $rows = 3; | ||
607 | } elseif ($rows > 90) { | ||
608 | $rows = 90; | ||
609 | } | ||
610 | $cols = ceil($size / $rows); | ||
611 | $size = ($cols * $rows); | ||
612 | } | ||
613 | if ($size > 928) { | ||
614 | // set dimensions to get maximum capacity | ||
615 | if (abs($aspectratio - (17 * 29 / 32)) < abs($aspectratio - (17 * 16 / 58))) { | ||
616 | $cols = 29; | ||
617 | $rows = 32; | ||
618 | } else { | ||
619 | $cols = 16; | ||
620 | $rows = 58; | ||
621 | } | ||
622 | $size = 928; | ||
623 | } | ||
624 | // calculate padding | ||
625 | $pad = ($size - $nce); | ||
626 | if ($pad > 0) { | ||
627 | if (($size - $rows) == $nce) { | ||
628 | --$rows; | ||
629 | $size -= $rows; | ||
630 | } else { | ||
631 | // add pading | ||
632 | $codewords = array_merge($codewords, array_fill(0, $pad, 900)); | ||
633 | } | ||
634 | } | ||
635 | if (!empty($macro)) { | ||
636 | // add macro section | ||
637 | $codewords = array_merge($codewords, $macrocw); | ||
638 | } | ||
639 | // Symbol Lenght Descriptor (number of data codewords including Symbol Lenght Descriptor and pad codewords) | ||
640 | $sld = $size - $errsize; | ||
641 | // add symbol length description | ||
642 | array_unshift($codewords, $sld); | ||
643 | // calculate error correction | ||
644 | $ecw = $this->getErrorCorrection($codewords, $ecl); | ||
645 | // add error correction codewords | ||
646 | $codewords = array_merge($codewords, $ecw); | ||
647 | // add horizontal quiet zones to start and stop patterns | ||
648 | $pstart = str_repeat('0', QUIETH).$this->start_pattern; | ||
649 | $pstop = $this->stop_pattern.str_repeat('0', QUIETH); | ||
650 | $barcode_array['num_rows'] = ($rows * ROWHEIGHT) + (2 * QUIETV); | ||
651 | $barcode_array['num_cols'] = (($cols + 2) * 17) + 35 + (2 * QUIETH); | ||
652 | $barcode_array['bcode'] = array(); | ||
653 | // build rows for vertical quiet zone | ||
654 | if (QUIETV > 0) { | ||
655 | $empty_row = array_fill(0, $barcode_array['num_cols'], 0); | ||
656 | for ($i = 0; $i < QUIETV; ++$i) { | ||
657 | // add vertical quiet rows | ||
658 | $barcode_array['bcode'][] = $empty_row; | ||
659 | } | ||
660 | } | ||
661 | $k = 0; // codeword index | ||
662 | $cid = 0; // initial cluster | ||
663 | // for each row | ||
664 | for ($r = 0; $r < $rows; ++$r) { | ||
665 | // row start code | ||
666 | $row = $pstart; | ||
667 | switch ($cid) { | ||
668 | case 0: { | ||
669 | $L = ((30 * intval($r / 3)) + intval(($rows - 1) / 3)); | ||
670 | break; | ||
671 | } | ||
672 | case 1: { | ||
673 | $L = ((30 * intval($r / 3)) + ($ecl * 3) + (($rows - 1) % 3)); | ||
674 | break; | ||
675 | } | ||
676 | case 2: { | ||
677 | $L = ((30 * intval($r / 3)) + ($cols - 1)); | ||
678 | break; | ||
679 | } | ||
680 | } | ||
681 | // left row indicator | ||
682 | $row .= sprintf('%17b', $this->clusters[$cid][$L]); | ||
683 | // for each column | ||
684 | for ($c = 0; $c < $cols; ++$c) { | ||
685 | $row .= sprintf('%17b', $this->clusters[$cid][$codewords[$k]]); | ||
686 | ++$k; | ||
687 | } | ||
688 | switch ($cid) { | ||
689 | case 0: { | ||
690 | $L = ((30 * intval($r / 3)) + ($cols - 1)); | ||
691 | break; | ||
692 | } | ||
693 | case 1: { | ||
694 | $L = ((30 * intval($r / 3)) + intval(($rows - 1) / 3)); | ||
695 | break; | ||
696 | } | ||
697 | case 2: { | ||
698 | $L = ((30 * intval($r / 3)) + ($ecl * 3) + (($rows - 1) % 3)); | ||
699 | break; | ||
700 | } | ||
701 | } | ||
702 | // right row indicator | ||
703 | $row .= sprintf('%17b', $this->clusters[$cid][$L]); | ||
704 | // row stop code | ||
705 | $row .= $pstop; | ||
706 | // convert the string to array | ||
707 | $arow = preg_split('//', $row, -1, PREG_SPLIT_NO_EMPTY); | ||
708 | // duplicate row to get the desired height | ||
709 | for ($h = 0; $h < ROWHEIGHT; ++$h) { | ||
710 | $barcode_array['bcode'][] = $arow; | ||
711 | } | ||
712 | ++$cid; | ||
713 | if ($cid > 2) { | ||
714 | $cid = 0; | ||
715 | } | ||
716 | } | ||
717 | if (QUIETV > 0) { | ||
718 | for ($i = 0; $i < QUIETV; ++$i) { | ||
719 | // add vertical quiet rows | ||
720 | $barcode_array['bcode'][] = $empty_row; | ||
721 | } | ||
722 | } | ||
723 | $this->barcode_array = $barcode_array; | ||
724 | } | ||
725 | |||
726 | /** | ||
727 | * Returns a barcode array which is readable by TCPDF | ||
728 | * @return array barcode array readable by TCPDF; | ||
729 | * @public | ||
730 | */ | ||
731 | public function getBarcodeArray() { | ||
732 | return $this->barcode_array; | ||
733 | } | ||
734 | |||
735 | /** | ||
736 | * Returns the error correction level (0-8) to be used | ||
737 | * @param $ecl (int) error correction level | ||
738 | * @param $numcw (int) number of data codewords | ||
739 | * @return int error correction level | ||
740 | * @protected | ||
741 | */ | ||
742 | protected function getErrorCorrectionLevel($ecl, $numcw) { | ||
743 | // get maximum correction level | ||
744 | $maxecl = 8; // starting error level | ||
745 | $maxerrsize = (928 - $numcw); // available codewords for error | ||
746 | while ($maxecl > 0) { | ||
747 | $errsize = (2 << $ecl); | ||
748 | if ($maxerrsize >= $errsize) { | ||
749 | break; | ||
750 | } | ||
751 | --$maxecl; | ||
752 | } | ||
753 | // check for automatic levels | ||
754 | if (($ecl < 0) OR ($ecl > 8)) { | ||
755 | if ($numcw < 41) { | ||
756 | $ecl = 2; | ||
757 | } elseif ($numcw < 161) { | ||
758 | $ecl = 3; | ||
759 | } elseif ($numcw < 321) { | ||
760 | $ecl = 4; | ||
761 | } elseif ($numcw < 864) { | ||
762 | $ecl = 5; | ||
763 | } else { | ||
764 | $ecl = $maxecl; | ||
765 | } | ||
766 | } | ||
767 | if ($ecl > $maxecl) { | ||
768 | $ecl = $maxecl; | ||
769 | } | ||
770 | return $ecl; | ||
771 | } | ||
772 | |||
773 | /** | ||
774 | * Returns the error correction codewords | ||
775 | * @param $cw (array) array of codewords including Symbol Lenght Descriptor and pad | ||
776 | * @param $ecl (int) error correction level 0-8 | ||
777 | * @return array of error correction codewords | ||
778 | * @protected | ||
779 | */ | ||
780 | protected function getErrorCorrection($cw, $ecl) { | ||
781 | // get error correction coefficients | ||
782 | $ecc = $this->rsfactors[$ecl]; | ||
783 | // number of error correction factors | ||
784 | $eclsize = (2 << $ecl); | ||
785 | // maximum index for $rsfactors[$ecl] | ||
786 | $eclmaxid = ($eclsize - 1); | ||
787 | // initialize array of error correction codewords | ||
788 | $ecw = array_fill(0, $eclsize, 0); | ||
789 | // for each data codeword | ||
790 | foreach($cw as $k => $d) { | ||
791 | $t1 = ($d + $ecw[$eclmaxid]) % 929; | ||
792 | for ($j = $eclmaxid; $j > 0; --$j) { | ||
793 | $t2 = ($t1 * $ecc[$j]) % 929; | ||
794 | $t3 = 929 - $t2; | ||
795 | $ecw[$j] = ($ecw[($j - 1)] + $t3) % 929; | ||
796 | } | ||
797 | $t2 = ($t1 * $ecc[0]) % 929; | ||
798 | $t3 = 929 - $t2; | ||
799 | $ecw[0] = $t3 % 929; | ||
800 | } | ||
801 | foreach($ecw as $j => $e) { | ||
802 | if ($e != 0) { | ||
803 | $ecw[$j] = 929 - $e; | ||
804 | } | ||
805 | } | ||
806 | $ecw = array_reverse($ecw); | ||
807 | return $ecw; | ||
808 | } | ||
809 | |||
810 | /** | ||
811 | * Create array of sequences from input | ||
812 | * @param $code (string) code | ||
813 | * @return bidimensional array containing characters and classification | ||
814 | * @protected | ||
815 | */ | ||
816 | protected function getInputSequences($code) { | ||
817 | $sequence_array = array(); // array to be returned | ||
818 | $numseq = array(); | ||
819 | // get numeric sequences | ||
820 | preg_match_all('/([0-9]{13,44})/', $code, $numseq, PREG_OFFSET_CAPTURE); | ||
821 | $numseq[1][] = array('', strlen($code)); | ||
822 | $offset = 0; | ||
823 | foreach($numseq[1] as $seq) { | ||
824 | $seqlen = strlen($seq[0]); | ||
825 | if ($seq[1] > 0) { | ||
826 | // extract text sequence before the number sequence | ||
827 | $prevseq = substr($code, $offset, ($seq[1] - $offset)); | ||
828 | $textseq = array(); | ||
829 | // get text sequences | ||
830 | preg_match_all('/([\x09\x0a\x0d\x20-\x7e]{5,})/', $prevseq, $textseq, PREG_OFFSET_CAPTURE); | ||
831 | $textseq[1][] = array('', strlen($prevseq)); | ||
832 | $txtoffset = 0; | ||
833 | foreach($textseq[1] as $txtseq) { | ||
834 | $txtseqlen = strlen($txtseq[0]); | ||
835 | if ($txtseq[1] > 0) { | ||
836 | // extract byte sequence before the text sequence | ||
837 | $prevtxtseq = substr($prevseq, $txtoffset, ($txtseq[1] - $txtoffset)); | ||
838 | if (strlen($prevtxtseq) > 0) { | ||
839 | // add BYTE sequence | ||
840 | if ((strlen($prevtxtseq) == 1) AND ((count($sequence_array) > 0) AND ($sequence_array[(count($sequence_array) - 1)][0] == 900))) { | ||
841 | $sequence_array[] = array(913, $prevtxtseq); | ||
842 | } elseif ((strlen($prevtxtseq) % 6) == 0) { | ||
843 | $sequence_array[] = array(924, $prevtxtseq); | ||
844 | } else { | ||
845 | $sequence_array[] = array(901, $prevtxtseq); | ||
846 | } | ||
847 | } | ||
848 | } | ||
849 | if ($txtseqlen > 0) { | ||
850 | // add numeric sequence | ||
851 | $sequence_array[] = array(900, $txtseq[0]); | ||
852 | } | ||
853 | $txtoffset = $txtseq[1] + $txtseqlen; | ||
854 | } | ||
855 | } | ||
856 | if ($seqlen > 0) { | ||
857 | // add numeric sequence | ||
858 | $sequence_array[] = array(902, $seq[0]); | ||
859 | } | ||
860 | $offset = $seq[1] + $seqlen; | ||
861 | } | ||
862 | return $sequence_array; | ||
863 | } | ||
864 | |||
865 | /** | ||
866 | * Compact data by mode. | ||
867 | * @param $mode (int) compaction mode number | ||
868 | * @param $code (string) data to compact | ||
869 | * @param $addmode (boolean) if true add the mode codeword at first position | ||
870 | * @return array of codewords | ||
871 | * @protected | ||
872 | */ | ||
873 | protected function getCompaction($mode, $code, $addmode=true) { | ||
874 | $cw = array(); // array of codewords to return | ||
875 | switch($mode) { | ||
876 | case 900: { // Text Compaction mode latch | ||
877 | $submode = 0; // default Alpha sub-mode | ||
878 | $txtarr = array(); // array of characters and sub-mode switching characters | ||
879 | $codelen = strlen($code); | ||
880 | for ($i = 0; $i < $codelen; ++$i) { | ||
881 | $chval = ord($code{$i}); | ||
882 | if (($k = array_search($chval, $this->textsubmodes[$submode])) !== false) { | ||
883 | // we are on the same sub-mode | ||
884 | $txtarr[] = $k; | ||
885 | } else { | ||
886 | // the sub-mode is changed | ||
887 | for ($s = 0; $s < 4; ++$s) { | ||
888 | // search new sub-mode | ||
889 | if (($s != $submode) AND (($k = array_search($chval, $this->textsubmodes[$s])) !== false)) { | ||
890 | // $s is the new submode | ||
891 | if (((($i + 1) == $codelen) OR ((($i + 1) < $codelen) AND (array_search(ord($code{($i + 1)}), $this->textsubmodes[$submode]) !== false))) AND (($s == 3) OR (($s == 0) AND ($submode == 1)))) { | ||
892 | // shift (temporary change only for this char) | ||
893 | if ($s == 3) { | ||
894 | // shift to puntuaction | ||
895 | $txtarr[] = 29; | ||
896 | } else { | ||
897 | // shift from lower to alpha | ||
898 | $txtarr[] = 27; | ||
899 | } | ||
900 | } else { | ||
901 | // latch | ||
902 | $txtarr = array_merge($txtarr, $this->textlatch[''.$submode.$s]); | ||
903 | // set new submode | ||
904 | $submode = $s; | ||
905 | } | ||
906 | // add characted code to array | ||
907 | $txtarr[] = $k; | ||
908 | break; | ||
909 | } | ||
910 | } | ||
911 | } | ||
912 | } | ||
913 | $txtarrlen = count($txtarr); | ||
914 | if (($txtarrlen % 2) != 0) { | ||
915 | // add padding | ||
916 | $txtarr[] = 29; | ||
917 | ++$txtarrlen; | ||
918 | } | ||
919 | // calculate codewords | ||
920 | for ($i = 0; $i < $txtarrlen; $i += 2) { | ||
921 | $cw[] = (30 * $txtarr[$i]) + $txtarr[($i + 1)]; | ||
922 | } | ||
923 | break; | ||
924 | } | ||
925 | case 901: | ||
926 | case 924: { // Byte Compaction mode latch | ||
927 | while (($codelen = strlen($code)) > 0) { | ||
928 | if ($codelen > 6) { | ||
929 | $rest = substr($code, 6); | ||
930 | $code = substr($code, 0, 6); | ||
931 | $sublen = 6; | ||
932 | } else { | ||
933 | $rest = ''; | ||
934 | $sublen = strlen($code); | ||
935 | } | ||
936 | if ($sublen == 6) { | ||
937 | $t = bcmul(''.ord($code[0]), '1099511627776'); | ||
938 | $t = bcadd($t, bcmul(''.ord($code[1]), '4294967296')); | ||
939 | $t = bcadd($t, bcmul(''.ord($code[2]), '16777216')); | ||
940 | $t = bcadd($t, bcmul(''.ord($code[3]), '65536')); | ||
941 | $t = bcadd($t, bcmul(''.ord($code[4]), '256')); | ||
942 | $t = bcadd($t, ''.ord($code[5])); | ||
943 | // tmp array for the 6 bytes block | ||
944 | $cw6 = array(); | ||
945 | do { | ||
946 | $d = bcmod($t, '900'); | ||
947 | $t = bcdiv($t, '900'); | ||
948 | // prepend the value to the beginning of the array | ||
949 | array_unshift($cw6, $d); | ||
950 | } while ($t != '0'); | ||
951 | // append the result array at the end | ||
952 | $cw = array_merge($cw, $cw6); | ||
953 | } else { | ||
954 | for ($i = 0; $i < $sublen; ++$i) { | ||
955 | $cw[] = ord($code{$i}); | ||
956 | } | ||
957 | } | ||
958 | $code = $rest; | ||
959 | } | ||
960 | break; | ||
961 | } | ||
962 | case 902: { // Numeric Compaction mode latch | ||
963 | while (($codelen = strlen($code)) > 0) { | ||
964 | if ($codelen > 44) { | ||
965 | $rest = substr($code, 44); | ||
966 | $code = substr($code, 0, 44); | ||
967 | } else { | ||
968 | $rest = ''; | ||
969 | } | ||
970 | $t = '1'.$code; | ||
971 | do { | ||
972 | $d = bcmod($t, '900'); | ||
973 | $t = bcdiv($t, '900'); | ||
974 | array_unshift($cw, $d); | ||
975 | } while ($t != '0'); | ||
976 | $code = $rest; | ||
977 | } | ||
978 | break; | ||
979 | } | ||
980 | case 913: { // Byte Compaction mode shift | ||
981 | $cw[] = ord($code); | ||
982 | break; | ||
983 | } | ||
984 | } | ||
985 | if ($addmode) { | ||
986 | // add the compaction mode codeword at the beginning | ||
987 | array_unshift($cw, $mode); | ||
988 | } | ||
989 | return $cw; | ||
990 | } | ||
991 | |||
992 | } // end PDF417 class | ||
993 | |||
994 | //============================================================+ | ||
995 | // END OF FILE | ||
996 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php b/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php new file mode 100644 index 00000000..3127fe68 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/barcodes/qrcode.php | |||
@@ -0,0 +1,2866 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : qrcode.php | ||
4 | // Version : 1.0.010 | ||
5 | // Begin : 2010-03-22 | ||
6 | // Last Update : 2012-07-25 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2010-2012 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the GNU Lesser General Public License | ||
25 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | ||
26 | // | ||
27 | // See LICENSE.TXT file for more information. | ||
28 | // ------------------------------------------------------------------- | ||
29 | // | ||
30 | // DESCRIPTION : | ||
31 | // | ||
32 | // Class to create QR-code arrays for TCPDF class. | ||
33 | // QR Code symbol is a 2D barcode that can be scanned by | ||
34 | // handy terminals such as a mobile phone with CCD. | ||
35 | // The capacity of QR Code is up to 7000 digits or 4000 | ||
36 | // characters, and has high robustness. | ||
37 | // This class supports QR Code model 2, described in | ||
38 | // JIS (Japanese Industrial Standards) X0510:2004 | ||
39 | // or ISO/IEC 18004. | ||
40 | // Currently the following features are not supported: | ||
41 | // ECI and FNC1 mode, Micro QR Code, QR Code model 1, | ||
42 | // Structured mode. | ||
43 | // | ||
44 | // This class is derived from the following projects: | ||
45 | // --------------------------------------------------------- | ||
46 | // "PHP QR Code encoder" | ||
47 | // License: GNU-LGPLv3 | ||
48 | // Copyright (C) 2010 by Dominik Dzienia <deltalab at poczta dot fm> | ||
49 | // http://phpqrcode.sourceforge.net/ | ||
50 | // https://sourceforge.net/projects/phpqrcode/ | ||
51 | // | ||
52 | // The "PHP QR Code encoder" is based on | ||
53 | // "C libqrencode library" (ver. 3.1.1) | ||
54 | // License: GNU-LGPL 2.1 | ||
55 | // Copyright (C) 2006-2010 by Kentaro Fukuchi | ||
56 | // http://megaui.net/fukuchi/works/qrencode/index.en.html | ||
57 | // | ||
58 | // Reed-Solomon code encoder is written by Phil Karn, KA9Q. | ||
59 | // Copyright (C) 2002-2006 Phil Karn, KA9Q | ||
60 | // | ||
61 | // QR Code is registered trademark of DENSO WAVE INCORPORATED | ||
62 | // http://www.denso-wave.com/qrcode/index-e.html | ||
63 | // --------------------------------------------------------- | ||
64 | //============================================================+ | ||
65 | |||
66 | /** | ||
67 | * @file | ||
68 | * Class to create QR-code arrays for TCPDF class. | ||
69 | * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. | ||
70 | * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. | ||
71 | * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. | ||
72 | * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode. | ||
73 | * | ||
74 | * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). | ||
75 | * Please read comments on this class source file for full copyright and license information. | ||
76 | * | ||
77 | * @package com.tecnick.tcpdf | ||
78 | * @author Nicola Asuni | ||
79 | * @version 1.0.010 | ||
80 | */ | ||
81 | |||
82 | // definitions | ||
83 | if (!defined('QRCODEDEFS')) { | ||
84 | |||
85 | /** | ||
86 | * Indicate that definitions for this class are set | ||
87 | */ | ||
88 | define('QRCODEDEFS', true); | ||
89 | |||
90 | // ----------------------------------------------------- | ||
91 | |||
92 | // Encoding modes (characters which can be encoded in QRcode) | ||
93 | |||
94 | /** | ||
95 | * Encoding mode | ||
96 | */ | ||
97 | define('QR_MODE_NL', -1); | ||
98 | |||
99 | /** | ||
100 | * Encoding mode numeric (0-9). 3 characters are encoded to 10bit length. In theory, 7089 characters or less can be stored in a QRcode. | ||
101 | */ | ||
102 | define('QR_MODE_NM', 0); | ||
103 | |||
104 | /** | ||
105 | * Encoding mode alphanumeric (0-9A-Z $%*+-./:) 45characters. 2 characters are encoded to 11bit length. In theory, 4296 characters or less can be stored in a QRcode. | ||
106 | */ | ||
107 | define('QR_MODE_AN', 1); | ||
108 | |||
109 | /** | ||
110 | * Encoding mode 8bit byte data. In theory, 2953 characters or less can be stored in a QRcode. | ||
111 | */ | ||
112 | define('QR_MODE_8B', 2); | ||
113 | |||
114 | /** | ||
115 | * Encoding mode KANJI. A KANJI character (multibyte character) is encoded to 13bit length. In theory, 1817 characters or less can be stored in a QRcode. | ||
116 | */ | ||
117 | define('QR_MODE_KJ', 3); | ||
118 | |||
119 | /** | ||
120 | * Encoding mode STRUCTURED (currently unsupported) | ||
121 | */ | ||
122 | define('QR_MODE_ST', 4); | ||
123 | |||
124 | // ----------------------------------------------------- | ||
125 | |||
126 | // Levels of error correction. | ||
127 | // QRcode has a function of an error correcting for miss reading that white is black. | ||
128 | // Error correcting is defined in 4 level as below. | ||
129 | |||
130 | /** | ||
131 | * Error correction level L : About 7% or less errors can be corrected. | ||
132 | */ | ||
133 | define('QR_ECLEVEL_L', 0); | ||
134 | |||
135 | /** | ||
136 | * Error correction level M : About 15% or less errors can be corrected. | ||
137 | */ | ||
138 | define('QR_ECLEVEL_M', 1); | ||
139 | |||
140 | /** | ||
141 | * Error correction level Q : About 25% or less errors can be corrected. | ||
142 | */ | ||
143 | define('QR_ECLEVEL_Q', 2); | ||
144 | |||
145 | /** | ||
146 | * Error correction level H : About 30% or less errors can be corrected. | ||
147 | */ | ||
148 | define('QR_ECLEVEL_H', 3); | ||
149 | |||
150 | // ----------------------------------------------------- | ||
151 | |||
152 | // Version. Size of QRcode is defined as version. | ||
153 | // Version is from 1 to 40. | ||
154 | // Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. | ||
155 | // So version 40 is 177*177 matrix. | ||
156 | |||
157 | /** | ||
158 | * Maximum QR Code version. | ||
159 | */ | ||
160 | define('QRSPEC_VERSION_MAX', 40); | ||
161 | |||
162 | /** | ||
163 | * Maximum matrix size for maximum version (version 40 is 177*177 matrix). | ||
164 | */ | ||
165 | define('QRSPEC_WIDTH_MAX', 177); | ||
166 | |||
167 | // ----------------------------------------------------- | ||
168 | |||
169 | /** | ||
170 | * Matrix index to get width from $capacity array. | ||
171 | */ | ||
172 | define('QRCAP_WIDTH', 0); | ||
173 | |||
174 | /** | ||
175 | * Matrix index to get number of words from $capacity array. | ||
176 | */ | ||
177 | define('QRCAP_WORDS', 1); | ||
178 | |||
179 | /** | ||
180 | * Matrix index to get remainder from $capacity array. | ||
181 | */ | ||
182 | define('QRCAP_REMINDER', 2); | ||
183 | |||
184 | /** | ||
185 | * Matrix index to get error correction level from $capacity array. | ||
186 | */ | ||
187 | define('QRCAP_EC', 3); | ||
188 | |||
189 | // ----------------------------------------------------- | ||
190 | |||
191 | // Structure (currently usupported) | ||
192 | |||
193 | /** | ||
194 | * Number of header bits for structured mode | ||
195 | */ | ||
196 | define('STRUCTURE_HEADER_BITS', 20); | ||
197 | |||
198 | /** | ||
199 | * Max number of symbols for structured mode | ||
200 | */ | ||
201 | define('MAX_STRUCTURED_SYMBOLS', 16); | ||
202 | |||
203 | // ----------------------------------------------------- | ||
204 | |||
205 | // Masks | ||
206 | |||
207 | /** | ||
208 | * Down point base value for case 1 mask pattern (concatenation of same color in a line or a column) | ||
209 | */ | ||
210 | define('N1', 3); | ||
211 | |||
212 | /** | ||
213 | * Down point base value for case 2 mask pattern (module block of same color) | ||
214 | */ | ||
215 | define('N2', 3); | ||
216 | |||
217 | /** | ||
218 | * Down point base value for case 3 mask pattern (1:1:3:1:1(dark:bright:dark:bright:dark)pattern in a line or a column) | ||
219 | */ | ||
220 | define('N3', 40); | ||
221 | |||
222 | /** | ||
223 | * Down point base value for case 4 mask pattern (ration of dark modules in whole) | ||
224 | */ | ||
225 | define('N4', 10); | ||
226 | |||
227 | // ----------------------------------------------------- | ||
228 | |||
229 | // Optimization settings | ||
230 | |||
231 | /** | ||
232 | * if true, estimates best mask (spec. default, but extremally slow; set to false to significant performance boost but (propably) worst quality code | ||
233 | */ | ||
234 | define('QR_FIND_BEST_MASK', true); | ||
235 | |||
236 | /** | ||
237 | * if false, checks all masks available, otherwise value tells count of masks need to be checked, mask id are got randomly | ||
238 | */ | ||
239 | define('QR_FIND_FROM_RANDOM', 2); | ||
240 | |||
241 | /** | ||
242 | * when QR_FIND_BEST_MASK === false | ||
243 | */ | ||
244 | define('QR_DEFAULT_MASK', 2); | ||
245 | |||
246 | // ----------------------------------------------------- | ||
247 | |||
248 | } // end of definitions | ||
249 | |||
250 | // #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# | ||
251 | |||
252 | // for compatibility with PHP4 | ||
253 | if (!function_exists('str_split')) { | ||
254 | /** | ||
255 | * Convert a string to an array (needed for PHP4 compatibility) | ||
256 | * @param $string (string) The input string. | ||
257 | * @param $split_length (int) Maximum length of the chunk. | ||
258 | * @return If the optional split_length parameter is specified, the returned array will be broken down into chunks with each being split_length in length, otherwise each chunk will be one character in length. FALSE is returned if split_length is less than 1. If the split_length length exceeds the length of string , the entire string is returned as the first (and only) array element. | ||
259 | */ | ||
260 | function str_split($string, $split_length=1) { | ||
261 | if ((strlen($string) > $split_length) OR (!$split_length)) { | ||
262 | do { | ||
263 | $c = strlen($string); | ||
264 | $parts[] = substr($string, 0, $split_length); | ||
265 | $string = substr($string, $split_length); | ||
266 | } while ($string !== false); | ||
267 | } else { | ||
268 | $parts = array($string); | ||
269 | } | ||
270 | return $parts; | ||
271 | } | ||
272 | } | ||
273 | |||
274 | // ##################################################### | ||
275 | |||
276 | /** | ||
277 | * @class QRcode | ||
278 | * Class to create QR-code arrays for TCPDF class. | ||
279 | * QR Code symbol is a 2D barcode that can be scanned by handy terminals such as a mobile phone with CCD. | ||
280 | * The capacity of QR Code is up to 7000 digits or 4000 characters, and has high robustness. | ||
281 | * This class supports QR Code model 2, described in JIS (Japanese Industrial Standards) X0510:2004 or ISO/IEC 18004. | ||
282 | * Currently the following features are not supported: ECI and FNC1 mode, Micro QR Code, QR Code model 1, Structured mode. | ||
283 | * | ||
284 | * This class is derived from "PHP QR Code encoder" by Dominik Dzienia (http://phpqrcode.sourceforge.net/) based on "libqrencode C library 3.1.1." by Kentaro Fukuchi (http://megaui.net/fukuchi/works/qrencode/index.en.html), contains Reed-Solomon code written by Phil Karn, KA9Q. QR Code is registered trademark of DENSO WAVE INCORPORATED (http://www.denso-wave.com/qrcode/index-e.html). | ||
285 | * Please read comments on this class source file for full copyright and license information. | ||
286 | * | ||
287 | * @package com.tecnick.tcpdf | ||
288 | * @author Nicola Asuni | ||
289 | * @version 1.0.010 | ||
290 | */ | ||
291 | class QRcode { | ||
292 | |||
293 | /** | ||
294 | * Barcode array to be returned which is readable by TCPDF. | ||
295 | * @protected | ||
296 | */ | ||
297 | protected $barcode_array = array(); | ||
298 | |||
299 | /** | ||
300 | * QR code version. Size of QRcode is defined as version. Version is from 1 to 40. Version 1 is 21*21 matrix. And 4 modules increases whenever 1 version increases. So version 40 is 177*177 matrix. | ||
301 | * @protected | ||
302 | */ | ||
303 | protected $version = 0; | ||
304 | |||
305 | /** | ||
306 | * Levels of error correction. See definitions for possible values. | ||
307 | * @protected | ||
308 | */ | ||
309 | protected $level = QR_ECLEVEL_L; | ||
310 | |||
311 | /** | ||
312 | * Encoding mode. | ||
313 | * @protected | ||
314 | */ | ||
315 | protected $hint = QR_MODE_8B; | ||
316 | |||
317 | /** | ||
318 | * Boolean flag, if true the input string will be converted to uppercase. | ||
319 | * @protected | ||
320 | */ | ||
321 | protected $casesensitive = true; | ||
322 | |||
323 | /** | ||
324 | * Structured QR code (not supported yet). | ||
325 | * @protected | ||
326 | */ | ||
327 | protected $structured = 0; | ||
328 | |||
329 | /** | ||
330 | * Mask data. | ||
331 | * @protected | ||
332 | */ | ||
333 | protected $data; | ||
334 | |||
335 | // FrameFiller | ||
336 | |||
337 | /** | ||
338 | * Width. | ||
339 | * @protected | ||
340 | */ | ||
341 | protected $width; | ||
342 | |||
343 | /** | ||
344 | * Frame. | ||
345 | * @protected | ||
346 | */ | ||
347 | protected $frame; | ||
348 | |||
349 | /** | ||
350 | * X position of bit. | ||
351 | * @protected | ||
352 | */ | ||
353 | protected $x; | ||
354 | |||
355 | /** | ||
356 | * Y position of bit. | ||
357 | * @protected | ||
358 | */ | ||
359 | protected $y; | ||
360 | |||
361 | /** | ||
362 | * Direction. | ||
363 | * @protected | ||
364 | */ | ||
365 | protected $dir; | ||
366 | |||
367 | /** | ||
368 | * Single bit value. | ||
369 | * @protected | ||
370 | */ | ||
371 | protected $bit; | ||
372 | |||
373 | // ---- QRrawcode ---- | ||
374 | |||
375 | /** | ||
376 | * Data code. | ||
377 | * @protected | ||
378 | */ | ||
379 | protected $datacode = array(); | ||
380 | |||
381 | /** | ||
382 | * Error correction code. | ||
383 | * @protected | ||
384 | */ | ||
385 | protected $ecccode = array(); | ||
386 | |||
387 | /** | ||
388 | * Blocks. | ||
389 | * @protected | ||
390 | */ | ||
391 | protected $blocks; | ||
392 | |||
393 | /** | ||
394 | * Reed-Solomon blocks. | ||
395 | * @protected | ||
396 | */ | ||
397 | protected $rsblocks = array(); //of RSblock | ||
398 | |||
399 | /** | ||
400 | * Counter. | ||
401 | * @protected | ||
402 | */ | ||
403 | protected $count; | ||
404 | |||
405 | /** | ||
406 | * Data length. | ||
407 | * @protected | ||
408 | */ | ||
409 | protected $dataLength; | ||
410 | |||
411 | /** | ||
412 | * Error correction length. | ||
413 | * @protected | ||
414 | */ | ||
415 | protected $eccLength; | ||
416 | |||
417 | /** | ||
418 | * Value b1. | ||
419 | * @protected | ||
420 | */ | ||
421 | protected $b1; | ||
422 | |||
423 | // ---- QRmask ---- | ||
424 | |||
425 | /** | ||
426 | * Run length. | ||
427 | * @protected | ||
428 | */ | ||
429 | protected $runLength = array(); | ||
430 | |||
431 | // ---- QRsplit ---- | ||
432 | |||
433 | /** | ||
434 | * Input data string. | ||
435 | * @protected | ||
436 | */ | ||
437 | protected $dataStr = ''; | ||
438 | |||
439 | /** | ||
440 | * Input items. | ||
441 | * @protected | ||
442 | */ | ||
443 | protected $items; | ||
444 | |||
445 | // Reed-Solomon items | ||
446 | |||
447 | /** | ||
448 | * Reed-Solomon items. | ||
449 | * @protected | ||
450 | */ | ||
451 | protected $rsitems = array(); | ||
452 | |||
453 | /** | ||
454 | * Array of frames. | ||
455 | * @protected | ||
456 | */ | ||
457 | protected $frames = array(); | ||
458 | |||
459 | /** | ||
460 | * Alphabet-numeric convesion table. | ||
461 | * @protected | ||
462 | */ | ||
463 | protected $anTable = array( | ||
464 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // | ||
465 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // | ||
466 | 36, -1, -1, -1, 37, 38, -1, -1, -1, -1, 39, 40, -1, 41, 42, 43, // | ||
467 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 44, -1, -1, -1, -1, -1, // | ||
468 | -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, // | ||
469 | 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, // | ||
470 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // | ||
471 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 // | ||
472 | ); | ||
473 | |||
474 | /** | ||
475 | * Array Table of the capacity of symbols. | ||
476 | * See Table 1 (pp.13) and Table 12-16 (pp.30-36), JIS X0510:2004. | ||
477 | * @protected | ||
478 | */ | ||
479 | protected $capacity = array( | ||
480 | array( 0, 0, 0, array( 0, 0, 0, 0)), // | ||
481 | array( 21, 26, 0, array( 7, 10, 13, 17)), // 1 | ||
482 | array( 25, 44, 7, array( 10, 16, 22, 28)), // | ||
483 | array( 29, 70, 7, array( 15, 26, 36, 44)), // | ||
484 | array( 33, 100, 7, array( 20, 36, 52, 64)), // | ||
485 | array( 37, 134, 7, array( 26, 48, 72, 88)), // 5 | ||
486 | array( 41, 172, 7, array( 36, 64, 96, 112)), // | ||
487 | array( 45, 196, 0, array( 40, 72, 108, 130)), // | ||
488 | array( 49, 242, 0, array( 48, 88, 132, 156)), // | ||
489 | array( 53, 292, 0, array( 60, 110, 160, 192)), // | ||
490 | array( 57, 346, 0, array( 72, 130, 192, 224)), // 10 | ||
491 | array( 61, 404, 0, array( 80, 150, 224, 264)), // | ||
492 | array( 65, 466, 0, array( 96, 176, 260, 308)), // | ||
493 | array( 69, 532, 0, array( 104, 198, 288, 352)), // | ||
494 | array( 73, 581, 3, array( 120, 216, 320, 384)), // | ||
495 | array( 77, 655, 3, array( 132, 240, 360, 432)), // 15 | ||
496 | array( 81, 733, 3, array( 144, 280, 408, 480)), // | ||
497 | array( 85, 815, 3, array( 168, 308, 448, 532)), // | ||
498 | array( 89, 901, 3, array( 180, 338, 504, 588)), // | ||
499 | array( 93, 991, 3, array( 196, 364, 546, 650)), // | ||
500 | array( 97, 1085, 3, array( 224, 416, 600, 700)), // 20 | ||
501 | array(101, 1156, 4, array( 224, 442, 644, 750)), // | ||
502 | array(105, 1258, 4, array( 252, 476, 690, 816)), // | ||
503 | array(109, 1364, 4, array( 270, 504, 750, 900)), // | ||
504 | array(113, 1474, 4, array( 300, 560, 810, 960)), // | ||
505 | array(117, 1588, 4, array( 312, 588, 870, 1050)), // 25 | ||
506 | array(121, 1706, 4, array( 336, 644, 952, 1110)), // | ||
507 | array(125, 1828, 4, array( 360, 700, 1020, 1200)), // | ||
508 | array(129, 1921, 3, array( 390, 728, 1050, 1260)), // | ||
509 | array(133, 2051, 3, array( 420, 784, 1140, 1350)), // | ||
510 | array(137, 2185, 3, array( 450, 812, 1200, 1440)), // 30 | ||
511 | array(141, 2323, 3, array( 480, 868, 1290, 1530)), // | ||
512 | array(145, 2465, 3, array( 510, 924, 1350, 1620)), // | ||
513 | array(149, 2611, 3, array( 540, 980, 1440, 1710)), // | ||
514 | array(153, 2761, 3, array( 570, 1036, 1530, 1800)), // | ||
515 | array(157, 2876, 0, array( 570, 1064, 1590, 1890)), // 35 | ||
516 | array(161, 3034, 0, array( 600, 1120, 1680, 1980)), // | ||
517 | array(165, 3196, 0, array( 630, 1204, 1770, 2100)), // | ||
518 | array(169, 3362, 0, array( 660, 1260, 1860, 2220)), // | ||
519 | array(173, 3532, 0, array( 720, 1316, 1950, 2310)), // | ||
520 | array(177, 3706, 0, array( 750, 1372, 2040, 2430)) // 40 | ||
521 | ); | ||
522 | |||
523 | /** | ||
524 | * Array Length indicator. | ||
525 | * @protected | ||
526 | */ | ||
527 | protected $lengthTableBits = array( | ||
528 | array(10, 12, 14), | ||
529 | array( 9, 11, 13), | ||
530 | array( 8, 16, 16), | ||
531 | array( 8, 10, 12) | ||
532 | ); | ||
533 | |||
534 | /** | ||
535 | * Array Table of the error correction code (Reed-Solomon block). | ||
536 | * See Table 12-16 (pp.30-36), JIS X0510:2004. | ||
537 | * @protected | ||
538 | */ | ||
539 | protected $eccTable = array( | ||
540 | array(array( 0, 0), array( 0, 0), array( 0, 0), array( 0, 0)), // | ||
541 | array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // 1 | ||
542 | array(array( 1, 0), array( 1, 0), array( 1, 0), array( 1, 0)), // | ||
543 | array(array( 1, 0), array( 1, 0), array( 2, 0), array( 2, 0)), // | ||
544 | array(array( 1, 0), array( 2, 0), array( 2, 0), array( 4, 0)), // | ||
545 | array(array( 1, 0), array( 2, 0), array( 2, 2), array( 2, 2)), // 5 | ||
546 | array(array( 2, 0), array( 4, 0), array( 4, 0), array( 4, 0)), // | ||
547 | array(array( 2, 0), array( 4, 0), array( 2, 4), array( 4, 1)), // | ||
548 | array(array( 2, 0), array( 2, 2), array( 4, 2), array( 4, 2)), // | ||
549 | array(array( 2, 0), array( 3, 2), array( 4, 4), array( 4, 4)), // | ||
550 | array(array( 2, 2), array( 4, 1), array( 6, 2), array( 6, 2)), // 10 | ||
551 | array(array( 4, 0), array( 1, 4), array( 4, 4), array( 3, 8)), // | ||
552 | array(array( 2, 2), array( 6, 2), array( 4, 6), array( 7, 4)), // | ||
553 | array(array( 4, 0), array( 8, 1), array( 8, 4), array(12, 4)), // | ||
554 | array(array( 3, 1), array( 4, 5), array(11, 5), array(11, 5)), // | ||
555 | array(array( 5, 1), array( 5, 5), array( 5, 7), array(11, 7)), // 15 | ||
556 | array(array( 5, 1), array( 7, 3), array(15, 2), array( 3, 13)), // | ||
557 | array(array( 1, 5), array(10, 1), array( 1, 15), array( 2, 17)), // | ||
558 | array(array( 5, 1), array( 9, 4), array(17, 1), array( 2, 19)), // | ||
559 | array(array( 3, 4), array( 3, 11), array(17, 4), array( 9, 16)), // | ||
560 | array(array( 3, 5), array( 3, 13), array(15, 5), array(15, 10)), // 20 | ||
561 | array(array( 4, 4), array(17, 0), array(17, 6), array(19, 6)), // | ||
562 | array(array( 2, 7), array(17, 0), array( 7, 16), array(34, 0)), // | ||
563 | array(array( 4, 5), array( 4, 14), array(11, 14), array(16, 14)), // | ||
564 | array(array( 6, 4), array( 6, 14), array(11, 16), array(30, 2)), // | ||
565 | array(array( 8, 4), array( 8, 13), array( 7, 22), array(22, 13)), // 25 | ||
566 | array(array(10, 2), array(19, 4), array(28, 6), array(33, 4)), // | ||
567 | array(array( 8, 4), array(22, 3), array( 8, 26), array(12, 28)), // | ||
568 | array(array( 3, 10), array( 3, 23), array( 4, 31), array(11, 31)), // | ||
569 | array(array( 7, 7), array(21, 7), array( 1, 37), array(19, 26)), // | ||
570 | array(array( 5, 10), array(19, 10), array(15, 25), array(23, 25)), // 30 | ||
571 | array(array(13, 3), array( 2, 29), array(42, 1), array(23, 28)), // | ||
572 | array(array(17, 0), array(10, 23), array(10, 35), array(19, 35)), // | ||
573 | array(array(17, 1), array(14, 21), array(29, 19), array(11, 46)), // | ||
574 | array(array(13, 6), array(14, 23), array(44, 7), array(59, 1)), // | ||
575 | array(array(12, 7), array(12, 26), array(39, 14), array(22, 41)), // 35 | ||
576 | array(array( 6, 14), array( 6, 34), array(46, 10), array( 2, 64)), // | ||
577 | array(array(17, 4), array(29, 14), array(49, 10), array(24, 46)), // | ||
578 | array(array( 4, 18), array(13, 32), array(48, 14), array(42, 32)), // | ||
579 | array(array(20, 4), array(40, 7), array(43, 22), array(10, 67)), // | ||
580 | array(array(19, 6), array(18, 31), array(34, 34), array(20, 61)) // 40 | ||
581 | ); | ||
582 | |||
583 | /** | ||
584 | * Array Positions of alignment patterns. | ||
585 | * This array includes only the second and the third position of the alignment patterns. Rest of them can be calculated from the distance between them. | ||
586 | * See Table 1 in Appendix E (pp.71) of JIS X0510:2004. | ||
587 | * @protected | ||
588 | */ | ||
589 | protected $alignmentPattern = array( | ||
590 | array( 0, 0), | ||
591 | array( 0, 0), array(18, 0), array(22, 0), array(26, 0), array(30, 0), // 1- 5 | ||
592 | array(34, 0), array(22, 38), array(24, 42), array(26, 46), array(28, 50), // 6-10 | ||
593 | array(30, 54), array(32, 58), array(34, 62), array(26, 46), array(26, 48), // 11-15 | ||
594 | array(26, 50), array(30, 54), array(30, 56), array(30, 58), array(34, 62), // 16-20 | ||
595 | array(28, 50), array(26, 50), array(30, 54), array(28, 54), array(32, 58), // 21-25 | ||
596 | array(30, 58), array(34, 62), array(26, 50), array(30, 54), array(26, 52), // 26-30 | ||
597 | array(30, 56), array(34, 60), array(30, 58), array(34, 62), array(30, 54), // 31-35 | ||
598 | array(24, 50), array(28, 54), array(32, 58), array(26, 54), array(30, 58) // 35-40 | ||
599 | ); | ||
600 | |||
601 | /** | ||
602 | * Array Version information pattern (BCH coded). | ||
603 | * See Table 1 in Appendix D (pp.68) of JIS X0510:2004. | ||
604 | * size: [QRSPEC_VERSION_MAX - 6] | ||
605 | * @protected | ||
606 | */ | ||
607 | protected $versionPattern = array( | ||
608 | 0x07c94, 0x085bc, 0x09a99, 0x0a4d3, 0x0bbf6, 0x0c762, 0x0d847, 0x0e60d, // | ||
609 | 0x0f928, 0x10b78, 0x1145d, 0x12a17, 0x13532, 0x149a6, 0x15683, 0x168c9, // | ||
610 | 0x177ec, 0x18ec4, 0x191e1, 0x1afab, 0x1b08e, 0x1cc1a, 0x1d33f, 0x1ed75, // | ||
611 | 0x1f250, 0x209d5, 0x216f0, 0x228ba, 0x2379f, 0x24b0b, 0x2542e, 0x26a64, // | ||
612 | 0x27541, 0x28c69 | ||
613 | ); | ||
614 | |||
615 | /** | ||
616 | * Array Format information | ||
617 | * @protected | ||
618 | */ | ||
619 | protected $formatInfo = array( | ||
620 | array(0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976), // | ||
621 | array(0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0), // | ||
622 | array(0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed), // | ||
623 | array(0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b) // | ||
624 | ); | ||
625 | |||
626 | |||
627 | // ------------------------------------------------- | ||
628 | // ------------------------------------------------- | ||
629 | |||
630 | |||
631 | /** | ||
632 | * This is the class constructor. | ||
633 | * Creates a QRcode object | ||
634 | * @param $code (string) code to represent using QRcode | ||
635 | * @param $eclevel (string) error level: <ul><li>L : About 7% or less errors can be corrected.</li><li>M : About 15% or less errors can be corrected.</li><li>Q : About 25% or less errors can be corrected.</li><li>H : About 30% or less errors can be corrected.</li></ul> | ||
636 | * @public | ||
637 | * @since 1.0.000 | ||
638 | */ | ||
639 | public function __construct($code, $eclevel = 'L') { | ||
640 | $barcode_array = array(); | ||
641 | if ((is_null($code)) OR ($code == '\0') OR ($code == '')) { | ||
642 | return false; | ||
643 | } | ||
644 | // set error correction level | ||
645 | $this->level = array_search($eclevel, array('L', 'M', 'Q', 'H')); | ||
646 | if ($this->level === false) { | ||
647 | $this->level = QR_ECLEVEL_L; | ||
648 | } | ||
649 | if (($this->hint != QR_MODE_8B) AND ($this->hint != QR_MODE_KJ)) { | ||
650 | return false; | ||
651 | } | ||
652 | if (($this->version < 0) OR ($this->version > QRSPEC_VERSION_MAX)) { | ||
653 | return false; | ||
654 | } | ||
655 | $this->items = array(); | ||
656 | $this->encodeString($code); | ||
657 | if (is_null($this->data)) { | ||
658 | return false; | ||
659 | } | ||
660 | $qrTab = $this->binarize($this->data); | ||
661 | $size = count($qrTab); | ||
662 | $barcode_array['num_rows'] = $size; | ||
663 | $barcode_array['num_cols'] = $size; | ||
664 | $barcode_array['bcode'] = array(); | ||
665 | foreach ($qrTab as $line) { | ||
666 | $arrAdd = array(); | ||
667 | foreach (str_split($line) as $char) { | ||
668 | $arrAdd[] = ($char=='1')?1:0; | ||
669 | } | ||
670 | $barcode_array['bcode'][] = $arrAdd; | ||
671 | } | ||
672 | $this->barcode_array = $barcode_array; | ||
673 | } | ||
674 | |||
675 | /** | ||
676 | * Returns a barcode array which is readable by TCPDF | ||
677 | * @return array barcode array readable by TCPDF; | ||
678 | * @public | ||
679 | */ | ||
680 | public function getBarcodeArray() { | ||
681 | return $this->barcode_array; | ||
682 | } | ||
683 | |||
684 | /** | ||
685 | * Convert the frame in binary form | ||
686 | * @param $frame (array) array to binarize | ||
687 | * @return array frame in binary form | ||
688 | */ | ||
689 | protected function binarize($frame) { | ||
690 | $len = count($frame); | ||
691 | // the frame is square (width = height) | ||
692 | foreach ($frame as &$frameLine) { | ||
693 | for ($i=0; $i<$len; $i++) { | ||
694 | $frameLine[$i] = (ord($frameLine[$i])&1)?'1':'0'; | ||
695 | } | ||
696 | } | ||
697 | return $frame; | ||
698 | } | ||
699 | |||
700 | /** | ||
701 | * Encode the input string to QR code | ||
702 | * @param $string (string) input string to encode | ||
703 | */ | ||
704 | protected function encodeString($string) { | ||
705 | $this->dataStr = $string; | ||
706 | if (!$this->casesensitive) { | ||
707 | $this->toUpper(); | ||
708 | } | ||
709 | $ret = $this->splitString(); | ||
710 | if ($ret < 0) { | ||
711 | return NULL; | ||
712 | } | ||
713 | $this->encodeMask(-1); | ||
714 | } | ||
715 | |||
716 | /** | ||
717 | * Encode mask | ||
718 | * @param $mask (int) masking mode | ||
719 | */ | ||
720 | protected function encodeMask($mask) { | ||
721 | $spec = array(0, 0, 0, 0, 0); | ||
722 | $this->datacode = $this->getByteStream($this->items); | ||
723 | if (is_null($this->datacode)) { | ||
724 | return NULL; | ||
725 | } | ||
726 | $spec = $this->getEccSpec($this->version, $this->level, $spec); | ||
727 | $this->b1 = $this->rsBlockNum1($spec); | ||
728 | $this->dataLength = $this->rsDataLength($spec); | ||
729 | $this->eccLength = $this->rsEccLength($spec); | ||
730 | $this->ecccode = array_fill(0, $this->eccLength, 0); | ||
731 | $this->blocks = $this->rsBlockNum($spec); | ||
732 | $ret = $this->init($spec); | ||
733 | if ($ret < 0) { | ||
734 | return NULL; | ||
735 | } | ||
736 | $this->count = 0; | ||
737 | $this->width = $this->getWidth($this->version); | ||
738 | $this->frame = $this->newFrame($this->version); | ||
739 | $this->x = $this->width - 1; | ||
740 | $this->y = $this->width - 1; | ||
741 | $this->dir = -1; | ||
742 | $this->bit = -1; | ||
743 | // inteleaved data and ecc codes | ||
744 | for ($i=0; $i < ($this->dataLength + $this->eccLength); $i++) { | ||
745 | $code = $this->getCode(); | ||
746 | $bit = 0x80; | ||
747 | for ($j=0; $j<8; $j++) { | ||
748 | $addr = $this->getNextPosition(); | ||
749 | $this->setFrameAt($addr, 0x02 | (($bit & $code) != 0)); | ||
750 | $bit = $bit >> 1; | ||
751 | } | ||
752 | } | ||
753 | // remainder bits | ||
754 | $j = $this->getRemainder($this->version); | ||
755 | for ($i=0; $i<$j; $i++) { | ||
756 | $addr = $this->getNextPosition(); | ||
757 | $this->setFrameAt($addr, 0x02); | ||
758 | } | ||
759 | // masking | ||
760 | $this->runLength = array_fill(0, QRSPEC_WIDTH_MAX + 1, 0); | ||
761 | if ($mask < 0) { | ||
762 | if (QR_FIND_BEST_MASK) { | ||
763 | $masked = $this->mask($this->width, $this->frame, $this->level); | ||
764 | } else { | ||
765 | $masked = $this->makeMask($this->width, $this->frame, (intval(QR_DEFAULT_MASK) % 8), $this->level); | ||
766 | } | ||
767 | } else { | ||
768 | $masked = $this->makeMask($this->width, $this->frame, $mask, $this->level); | ||
769 | } | ||
770 | if ($masked == NULL) { | ||
771 | return NULL; | ||
772 | } | ||
773 | $this->data = $masked; | ||
774 | } | ||
775 | |||
776 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
777 | |||
778 | // FrameFiller | ||
779 | |||
780 | /** | ||
781 | * Set frame value at specified position | ||
782 | * @param $at (array) x,y position | ||
783 | * @param $val (int) value of the character to set | ||
784 | */ | ||
785 | protected function setFrameAt($at, $val) { | ||
786 | $this->frame[$at['y']][$at['x']] = chr($val); | ||
787 | } | ||
788 | |||
789 | /** | ||
790 | * Get frame value at specified position | ||
791 | * @param $at (array) x,y position | ||
792 | * @return value at specified position | ||
793 | */ | ||
794 | protected function getFrameAt($at) { | ||
795 | return ord($this->frame[$at['y']][$at['x']]); | ||
796 | } | ||
797 | |||
798 | /** | ||
799 | * Return the next frame position | ||
800 | * @return array of x,y coordinates | ||
801 | */ | ||
802 | protected function getNextPosition() { | ||
803 | do { | ||
804 | if ($this->bit == -1) { | ||
805 | $this->bit = 0; | ||
806 | return array('x'=>$this->x, 'y'=>$this->y); | ||
807 | } | ||
808 | $x = $this->x; | ||
809 | $y = $this->y; | ||
810 | $w = $this->width; | ||
811 | if ($this->bit == 0) { | ||
812 | $x--; | ||
813 | $this->bit++; | ||
814 | } else { | ||
815 | $x++; | ||
816 | $y += $this->dir; | ||
817 | $this->bit--; | ||
818 | } | ||
819 | if ($this->dir < 0) { | ||
820 | if ($y < 0) { | ||
821 | $y = 0; | ||
822 | $x -= 2; | ||
823 | $this->dir = 1; | ||
824 | if ($x == 6) { | ||
825 | $x--; | ||
826 | $y = 9; | ||
827 | } | ||
828 | } | ||
829 | } else { | ||
830 | if ($y == $w) { | ||
831 | $y = $w - 1; | ||
832 | $x -= 2; | ||
833 | $this->dir = -1; | ||
834 | if ($x == 6) { | ||
835 | $x--; | ||
836 | $y -= 8; | ||
837 | } | ||
838 | } | ||
839 | } | ||
840 | if (($x < 0) OR ($y < 0)) { | ||
841 | return NULL; | ||
842 | } | ||
843 | $this->x = $x; | ||
844 | $this->y = $y; | ||
845 | } while(ord($this->frame[$y][$x]) & 0x80); | ||
846 | return array('x'=>$x, 'y'=>$y); | ||
847 | } | ||
848 | |||
849 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
850 | |||
851 | // QRrawcode | ||
852 | |||
853 | /** | ||
854 | * Initialize code. | ||
855 | * @param $spec (array) array of ECC specification | ||
856 | * @return 0 in case of success, -1 in case of error | ||
857 | */ | ||
858 | protected function init($spec) { | ||
859 | $dl = $this->rsDataCodes1($spec); | ||
860 | $el = $this->rsEccCodes1($spec); | ||
861 | $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); | ||
862 | $blockNo = 0; | ||
863 | $dataPos = 0; | ||
864 | $eccPos = 0; | ||
865 | $endfor = $this->rsBlockNum1($spec); | ||
866 | for ($i=0; $i < $endfor; ++$i) { | ||
867 | $ecc = array_slice($this->ecccode, $eccPos); | ||
868 | $this->rsblocks[$blockNo] = array(); | ||
869 | $this->rsblocks[$blockNo]['dataLength'] = $dl; | ||
870 | $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos); | ||
871 | $this->rsblocks[$blockNo]['eccLength'] = $el; | ||
872 | $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc); | ||
873 | $this->rsblocks[$blockNo]['ecc'] = $ecc; | ||
874 | $this->ecccode = array_merge(array_slice($this->ecccode,0, $eccPos), $ecc); | ||
875 | $dataPos += $dl; | ||
876 | $eccPos += $el; | ||
877 | $blockNo++; | ||
878 | } | ||
879 | if ($this->rsBlockNum2($spec) == 0) { | ||
880 | return 0; | ||
881 | } | ||
882 | $dl = $this->rsDataCodes2($spec); | ||
883 | $el = $this->rsEccCodes2($spec); | ||
884 | $rs = $this->init_rs(8, 0x11d, 0, 1, $el, 255 - $dl - $el); | ||
885 | if ($rs == NULL) { | ||
886 | return -1; | ||
887 | } | ||
888 | $endfor = $this->rsBlockNum2($spec); | ||
889 | for ($i=0; $i < $endfor; ++$i) { | ||
890 | $ecc = array_slice($this->ecccode, $eccPos); | ||
891 | $this->rsblocks[$blockNo] = array(); | ||
892 | $this->rsblocks[$blockNo]['dataLength'] = $dl; | ||
893 | $this->rsblocks[$blockNo]['data'] = array_slice($this->datacode, $dataPos); | ||
894 | $this->rsblocks[$blockNo]['eccLength'] = $el; | ||
895 | $ecc = $this->encode_rs_char($rs, $this->rsblocks[$blockNo]['data'], $ecc); | ||
896 | $this->rsblocks[$blockNo]['ecc'] = $ecc; | ||
897 | $this->ecccode = array_merge(array_slice($this->ecccode, 0, $eccPos), $ecc); | ||
898 | $dataPos += $dl; | ||
899 | $eccPos += $el; | ||
900 | $blockNo++; | ||
901 | } | ||
902 | return 0; | ||
903 | } | ||
904 | |||
905 | /** | ||
906 | * Return Reed-Solomon block code. | ||
907 | * @return array rsblocks | ||
908 | */ | ||
909 | protected function getCode() { | ||
910 | if ($this->count < $this->dataLength) { | ||
911 | $row = $this->count % $this->blocks; | ||
912 | $col = $this->count / $this->blocks; | ||
913 | if ($col >= $this->rsblocks[0]['dataLength']) { | ||
914 | $row += $this->b1; | ||
915 | } | ||
916 | $ret = $this->rsblocks[$row]['data'][$col]; | ||
917 | } elseif ($this->count < $this->dataLength + $this->eccLength) { | ||
918 | $row = ($this->count - $this->dataLength) % $this->blocks; | ||
919 | $col = ($this->count - $this->dataLength) / $this->blocks; | ||
920 | $ret = $this->rsblocks[$row]['ecc'][$col]; | ||
921 | } else { | ||
922 | return 0; | ||
923 | } | ||
924 | $this->count++; | ||
925 | return $ret; | ||
926 | } | ||
927 | |||
928 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
929 | |||
930 | // QRmask | ||
931 | |||
932 | /** | ||
933 | * Write Format Information on frame and returns the number of black bits | ||
934 | * @param $width (int) frame width | ||
935 | * @param $frame (array) frame | ||
936 | * @param $mask (array) masking mode | ||
937 | * @param $level (int) error correction level | ||
938 | * @return int blacks | ||
939 | */ | ||
940 | protected function writeFormatInformation($width, &$frame, $mask, $level) { | ||
941 | $blacks = 0; | ||
942 | $format = $this->getFormatInfo($mask, $level); | ||
943 | for ($i=0; $i<8; ++$i) { | ||
944 | if ($format & 1) { | ||
945 | $blacks += 2; | ||
946 | $v = 0x85; | ||
947 | } else { | ||
948 | $v = 0x84; | ||
949 | } | ||
950 | $frame[8][$width - 1 - $i] = chr($v); | ||
951 | if ($i < 6) { | ||
952 | $frame[$i][8] = chr($v); | ||
953 | } else { | ||
954 | $frame[$i + 1][8] = chr($v); | ||
955 | } | ||
956 | $format = $format >> 1; | ||
957 | } | ||
958 | for ($i=0; $i<7; ++$i) { | ||
959 | if ($format & 1) { | ||
960 | $blacks += 2; | ||
961 | $v = 0x85; | ||
962 | } else { | ||
963 | $v = 0x84; | ||
964 | } | ||
965 | $frame[$width - 7 + $i][8] = chr($v); | ||
966 | if ($i == 0) { | ||
967 | $frame[8][7] = chr($v); | ||
968 | } else { | ||
969 | $frame[8][6 - $i] = chr($v); | ||
970 | } | ||
971 | $format = $format >> 1; | ||
972 | } | ||
973 | return $blacks; | ||
974 | } | ||
975 | |||
976 | /** | ||
977 | * mask0 | ||
978 | * @param $x (int) X position | ||
979 | * @param $y (int) Y position | ||
980 | * @return int mask | ||
981 | */ | ||
982 | protected function mask0($x, $y) { | ||
983 | return ($x + $y) & 1; | ||
984 | } | ||
985 | |||
986 | /** | ||
987 | * mask1 | ||
988 | * @param $x (int) X position | ||
989 | * @param $y (int) Y position | ||
990 | * @return int mask | ||
991 | */ | ||
992 | protected function mask1($x, $y) { | ||
993 | return ($y & 1); | ||
994 | } | ||
995 | |||
996 | /** | ||
997 | * mask2 | ||
998 | * @param $x (int) X position | ||
999 | * @param $y (int) Y position | ||
1000 | * @return int mask | ||
1001 | */ | ||
1002 | protected function mask2($x, $y) { | ||
1003 | return ($x % 3); | ||
1004 | } | ||
1005 | |||
1006 | /** | ||
1007 | * mask3 | ||
1008 | * @param $x (int) X position | ||
1009 | * @param $y (int) Y position | ||
1010 | * @return int mask | ||
1011 | */ | ||
1012 | protected function mask3($x, $y) { | ||
1013 | return ($x + $y) % 3; | ||
1014 | } | ||
1015 | |||
1016 | /** | ||
1017 | * mask4 | ||
1018 | * @param $x (int) X position | ||
1019 | * @param $y (int) Y position | ||
1020 | * @return int mask | ||
1021 | */ | ||
1022 | protected function mask4($x, $y) { | ||
1023 | return (((int)($y / 2)) + ((int)($x / 3))) & 1; | ||
1024 | } | ||
1025 | |||
1026 | /** | ||
1027 | * mask5 | ||
1028 | * @param $x (int) X position | ||
1029 | * @param $y (int) Y position | ||
1030 | * @return int mask | ||
1031 | */ | ||
1032 | protected function mask5($x, $y) { | ||
1033 | return (($x * $y) & 1) + ($x * $y) % 3; | ||
1034 | } | ||
1035 | |||
1036 | /** | ||
1037 | * mask6 | ||
1038 | * @param $x (int) X position | ||
1039 | * @param $y (int) Y position | ||
1040 | * @return int mask | ||
1041 | */ | ||
1042 | protected function mask6($x, $y) { | ||
1043 | return ((($x * $y) & 1) + ($x * $y) % 3) & 1; | ||
1044 | } | ||
1045 | |||
1046 | /** | ||
1047 | * mask7 | ||
1048 | * @param $x (int) X position | ||
1049 | * @param $y (int) Y position | ||
1050 | * @return int mask | ||
1051 | */ | ||
1052 | protected function mask7($x, $y) { | ||
1053 | return ((($x * $y) % 3) + (($x + $y) & 1)) & 1; | ||
1054 | } | ||
1055 | |||
1056 | /** | ||
1057 | * Return bitmask | ||
1058 | * @param $maskNo (int) mask number | ||
1059 | * @param $width (int) width | ||
1060 | * @param $frame (array) frame | ||
1061 | * @return array bitmask | ||
1062 | */ | ||
1063 | protected function generateMaskNo($maskNo, $width, $frame) { | ||
1064 | $bitMask = array_fill(0, $width, array_fill(0, $width, 0)); | ||
1065 | for ($y=0; $y<$width; ++$y) { | ||
1066 | for ($x=0; $x<$width; ++$x) { | ||
1067 | if (ord($frame[$y][$x]) & 0x80) { | ||
1068 | $bitMask[$y][$x] = 0; | ||
1069 | } else { | ||
1070 | $maskFunc = call_user_func(array($this, 'mask'.$maskNo), $x, $y); | ||
1071 | $bitMask[$y][$x] = ($maskFunc == 0)?1:0; | ||
1072 | } | ||
1073 | } | ||
1074 | } | ||
1075 | return $bitMask; | ||
1076 | } | ||
1077 | |||
1078 | /** | ||
1079 | * makeMaskNo | ||
1080 | * @param $maskNo (int) | ||
1081 | * @param $width (int) | ||
1082 | * @param $s (int) | ||
1083 | * @param $d (int) | ||
1084 | * @param $maskGenOnly (boolean) | ||
1085 | * @return int b | ||
1086 | */ | ||
1087 | protected function makeMaskNo($maskNo, $width, $s, &$d, $maskGenOnly=false) { | ||
1088 | $b = 0; | ||
1089 | $bitMask = array(); | ||
1090 | $bitMask = $this->generateMaskNo($maskNo, $width, $s, $d); | ||
1091 | if ($maskGenOnly) { | ||
1092 | return; | ||
1093 | } | ||
1094 | $d = $s; | ||
1095 | for ($y=0; $y<$width; ++$y) { | ||
1096 | for ($x=0; $x<$width; ++$x) { | ||
1097 | if ($bitMask[$y][$x] == 1) { | ||
1098 | $d[$y][$x] = chr(ord($s[$y][$x]) ^ ((int)($bitMask[$y][$x]))); | ||
1099 | } | ||
1100 | $b += (int)(ord($d[$y][$x]) & 1); | ||
1101 | } | ||
1102 | } | ||
1103 | return $b; | ||
1104 | } | ||
1105 | |||
1106 | /** | ||
1107 | * makeMask | ||
1108 | * @param $width (int) | ||
1109 | * @param $frame (array) | ||
1110 | * @param $maskNo (int) | ||
1111 | * @param $level (int) | ||
1112 | * @return array mask | ||
1113 | */ | ||
1114 | protected function makeMask($width, $frame, $maskNo, $level) { | ||
1115 | $masked = array_fill(0, $width, str_repeat("\0", $width)); | ||
1116 | $this->makeMaskNo($maskNo, $width, $frame, $masked); | ||
1117 | $this->writeFormatInformation($width, $masked, $maskNo, $level); | ||
1118 | return $masked; | ||
1119 | } | ||
1120 | |||
1121 | /** | ||
1122 | * calcN1N3 | ||
1123 | * @param $length (int) | ||
1124 | * @return int demerit | ||
1125 | */ | ||
1126 | protected function calcN1N3($length) { | ||
1127 | $demerit = 0; | ||
1128 | for ($i=0; $i<$length; ++$i) { | ||
1129 | if ($this->runLength[$i] >= 5) { | ||
1130 | $demerit += (N1 + ($this->runLength[$i] - 5)); | ||
1131 | } | ||
1132 | if ($i & 1) { | ||
1133 | if (($i >= 3) AND ($i < ($length-2)) AND ($this->runLength[$i] % 3 == 0)) { | ||
1134 | $fact = (int)($this->runLength[$i] / 3); | ||
1135 | if (($this->runLength[$i-2] == $fact) | ||
1136 | AND ($this->runLength[$i-1] == $fact) | ||
1137 | AND ($this->runLength[$i+1] == $fact) | ||
1138 | AND ($this->runLength[$i+2] == $fact)) { | ||
1139 | if (($this->runLength[$i-3] < 0) OR ($this->runLength[$i-3] >= (4 * $fact))) { | ||
1140 | $demerit += N3; | ||
1141 | } elseif ((($i+3) >= $length) OR ($this->runLength[$i+3] >= (4 * $fact))) { | ||
1142 | $demerit += N3; | ||
1143 | } | ||
1144 | } | ||
1145 | } | ||
1146 | } | ||
1147 | } | ||
1148 | return $demerit; | ||
1149 | } | ||
1150 | |||
1151 | /** | ||
1152 | * evaluateSymbol | ||
1153 | * @param $width (int) | ||
1154 | * @param $frame (array) | ||
1155 | * @return int demerit | ||
1156 | */ | ||
1157 | protected function evaluateSymbol($width, $frame) { | ||
1158 | $head = 0; | ||
1159 | $demerit = 0; | ||
1160 | for ($y=0; $y<$width; ++$y) { | ||
1161 | $head = 0; | ||
1162 | $this->runLength[0] = 1; | ||
1163 | $frameY = $frame[$y]; | ||
1164 | if ($y > 0) { | ||
1165 | $frameYM = $frame[$y-1]; | ||
1166 | } | ||
1167 | for ($x=0; $x<$width; ++$x) { | ||
1168 | if (($x > 0) AND ($y > 0)) { | ||
1169 | $b22 = ord($frameY[$x]) & ord($frameY[$x-1]) & ord($frameYM[$x]) & ord($frameYM[$x-1]); | ||
1170 | $w22 = ord($frameY[$x]) | ord($frameY[$x-1]) | ord($frameYM[$x]) | ord($frameYM[$x-1]); | ||
1171 | if (($b22 | ($w22 ^ 1)) & 1) { | ||
1172 | $demerit += N2; | ||
1173 | } | ||
1174 | } | ||
1175 | if (($x == 0) AND (ord($frameY[$x]) & 1)) { | ||
1176 | $this->runLength[0] = -1; | ||
1177 | $head = 1; | ||
1178 | $this->runLength[$head] = 1; | ||
1179 | } elseif ($x > 0) { | ||
1180 | if ((ord($frameY[$x]) ^ ord($frameY[$x-1])) & 1) { | ||
1181 | $head++; | ||
1182 | $this->runLength[$head] = 1; | ||
1183 | } else { | ||
1184 | $this->runLength[$head]++; | ||
1185 | } | ||
1186 | } | ||
1187 | } | ||
1188 | $demerit += $this->calcN1N3($head+1); | ||
1189 | } | ||
1190 | for ($x=0; $x<$width; ++$x) { | ||
1191 | $head = 0; | ||
1192 | $this->runLength[0] = 1; | ||
1193 | for ($y=0; $y<$width; ++$y) { | ||
1194 | if (($y == 0) AND (ord($frame[$y][$x]) & 1)) { | ||
1195 | $this->runLength[0] = -1; | ||
1196 | $head = 1; | ||
1197 | $this->runLength[$head] = 1; | ||
1198 | } elseif ($y > 0) { | ||
1199 | if ((ord($frame[$y][$x]) ^ ord($frame[$y-1][$x])) & 1) { | ||
1200 | $head++; | ||
1201 | $this->runLength[$head] = 1; | ||
1202 | } else { | ||
1203 | $this->runLength[$head]++; | ||
1204 | } | ||
1205 | } | ||
1206 | } | ||
1207 | $demerit += $this->calcN1N3($head+1); | ||
1208 | } | ||
1209 | return $demerit; | ||
1210 | } | ||
1211 | |||
1212 | /** | ||
1213 | * mask | ||
1214 | * @param $width (int) | ||
1215 | * @param $frame (array) | ||
1216 | * @param $level (int) | ||
1217 | * @return array best mask | ||
1218 | */ | ||
1219 | protected function mask($width, $frame, $level) { | ||
1220 | $minDemerit = PHP_INT_MAX; | ||
1221 | $bestMaskNum = 0; | ||
1222 | $bestMask = array(); | ||
1223 | $checked_masks = array(0, 1, 2, 3, 4, 5, 6, 7); | ||
1224 | if (QR_FIND_FROM_RANDOM !== false) { | ||
1225 | $howManuOut = 8 - (QR_FIND_FROM_RANDOM % 9); | ||
1226 | for ($i = 0; $i < $howManuOut; ++$i) { | ||
1227 | $remPos = rand (0, count($checked_masks)-1); | ||
1228 | unset($checked_masks[$remPos]); | ||
1229 | $checked_masks = array_values($checked_masks); | ||
1230 | } | ||
1231 | } | ||
1232 | $bestMask = $frame; | ||
1233 | foreach ($checked_masks as $i) { | ||
1234 | $mask = array_fill(0, $width, str_repeat("\0", $width)); | ||
1235 | $demerit = 0; | ||
1236 | $blacks = 0; | ||
1237 | $blacks = $this->makeMaskNo($i, $width, $frame, $mask); | ||
1238 | $blacks += $this->writeFormatInformation($width, $mask, $i, $level); | ||
1239 | $blacks = (int)(100 * $blacks / ($width * $width)); | ||
1240 | $demerit = (int)((int)(abs($blacks - 50) / 5) * N4); | ||
1241 | $demerit += $this->evaluateSymbol($width, $mask); | ||
1242 | if ($demerit < $minDemerit) { | ||
1243 | $minDemerit = $demerit; | ||
1244 | $bestMask = $mask; | ||
1245 | $bestMaskNum = $i; | ||
1246 | } | ||
1247 | } | ||
1248 | return $bestMask; | ||
1249 | } | ||
1250 | |||
1251 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
1252 | |||
1253 | // QRsplit | ||
1254 | |||
1255 | /** | ||
1256 | * Return true if the character at specified position is a number | ||
1257 | * @param $str (string) string | ||
1258 | * @param $pos (int) characted position | ||
1259 | * @return boolean true of false | ||
1260 | */ | ||
1261 | protected function isdigitat($str, $pos) { | ||
1262 | if ($pos >= strlen($str)) { | ||
1263 | return false; | ||
1264 | } | ||
1265 | return ((ord($str[$pos]) >= ord('0'))&&(ord($str[$pos]) <= ord('9'))); | ||
1266 | } | ||
1267 | |||
1268 | /** | ||
1269 | * Return true if the character at specified position is an alphanumeric character | ||
1270 | * @param $str (string) string | ||
1271 | * @param $pos (int) characted position | ||
1272 | * @return boolean true of false | ||
1273 | */ | ||
1274 | protected function isalnumat($str, $pos) { | ||
1275 | if ($pos >= strlen($str)) { | ||
1276 | return false; | ||
1277 | } | ||
1278 | return ($this->lookAnTable(ord($str[$pos])) >= 0); | ||
1279 | } | ||
1280 | |||
1281 | /** | ||
1282 | * identifyMode | ||
1283 | * @param $pos (int) | ||
1284 | * @return int mode | ||
1285 | */ | ||
1286 | protected function identifyMode($pos) { | ||
1287 | if ($pos >= strlen($this->dataStr)) { | ||
1288 | return QR_MODE_NL; | ||
1289 | } | ||
1290 | $c = $this->dataStr[$pos]; | ||
1291 | if ($this->isdigitat($this->dataStr, $pos)) { | ||
1292 | return QR_MODE_NM; | ||
1293 | } elseif ($this->isalnumat($this->dataStr, $pos)) { | ||
1294 | return QR_MODE_AN; | ||
1295 | } elseif ($this->hint == QR_MODE_KJ) { | ||
1296 | if ($pos+1 < strlen($this->dataStr)) { | ||
1297 | $d = $this->dataStr[$pos+1]; | ||
1298 | $word = (ord($c) << 8) | ord($d); | ||
1299 | if (($word >= 0x8140 && $word <= 0x9ffc) OR ($word >= 0xe040 && $word <= 0xebbf)) { | ||
1300 | return QR_MODE_KJ; | ||
1301 | } | ||
1302 | } | ||
1303 | } | ||
1304 | return QR_MODE_8B; | ||
1305 | } | ||
1306 | |||
1307 | /** | ||
1308 | * eatNum | ||
1309 | * @return int run | ||
1310 | */ | ||
1311 | protected function eatNum() { | ||
1312 | $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); | ||
1313 | $p = 0; | ||
1314 | while($this->isdigitat($this->dataStr, $p)) { | ||
1315 | $p++; | ||
1316 | } | ||
1317 | $run = $p; | ||
1318 | $mode = $this->identifyMode($p); | ||
1319 | if ($mode == QR_MODE_8B) { | ||
1320 | $dif = $this->estimateBitsModeNum($run) + 4 + $ln | ||
1321 | + $this->estimateBitsMode8(1) // + 4 + l8 | ||
1322 | - $this->estimateBitsMode8($run + 1); // - 4 - l8 | ||
1323 | if ($dif > 0) { | ||
1324 | return $this->eat8(); | ||
1325 | } | ||
1326 | } | ||
1327 | if ($mode == QR_MODE_AN) { | ||
1328 | $dif = $this->estimateBitsModeNum($run) + 4 + $ln | ||
1329 | + $this->estimateBitsModeAn(1) // + 4 + la | ||
1330 | - $this->estimateBitsModeAn($run + 1);// - 4 - la | ||
1331 | if ($dif > 0) { | ||
1332 | return $this->eatAn(); | ||
1333 | } | ||
1334 | } | ||
1335 | $this->items = $this->appendNewInputItem($this->items, QR_MODE_NM, $run, str_split($this->dataStr)); | ||
1336 | return $run; | ||
1337 | } | ||
1338 | |||
1339 | /** | ||
1340 | * eatAn | ||
1341 | * @return int run | ||
1342 | */ | ||
1343 | protected function eatAn() { | ||
1344 | $la = $this->lengthIndicator(QR_MODE_AN, $this->version); | ||
1345 | $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); | ||
1346 | $p =1 ; | ||
1347 | while($this->isalnumat($this->dataStr, $p)) { | ||
1348 | if ($this->isdigitat($this->dataStr, $p)) { | ||
1349 | $q = $p; | ||
1350 | while($this->isdigitat($this->dataStr, $q)) { | ||
1351 | $q++; | ||
1352 | } | ||
1353 | $dif = $this->estimateBitsModeAn($p) // + 4 + la | ||
1354 | + $this->estimateBitsModeNum($q - $p) + 4 + $ln | ||
1355 | - $this->estimateBitsModeAn($q); // - 4 - la | ||
1356 | if ($dif < 0) { | ||
1357 | break; | ||
1358 | } else { | ||
1359 | $p = $q; | ||
1360 | } | ||
1361 | } else { | ||
1362 | $p++; | ||
1363 | } | ||
1364 | } | ||
1365 | $run = $p; | ||
1366 | if (!$this->isalnumat($this->dataStr, $p)) { | ||
1367 | $dif = $this->estimateBitsModeAn($run) + 4 + $la | ||
1368 | + $this->estimateBitsMode8(1) // + 4 + l8 | ||
1369 | - $this->estimateBitsMode8($run + 1); // - 4 - l8 | ||
1370 | if ($dif > 0) { | ||
1371 | return $this->eat8(); | ||
1372 | } | ||
1373 | } | ||
1374 | $this->items = $this->appendNewInputItem($this->items, QR_MODE_AN, $run, str_split($this->dataStr)); | ||
1375 | return $run; | ||
1376 | } | ||
1377 | |||
1378 | /** | ||
1379 | * eatKanji | ||
1380 | * @return int run | ||
1381 | */ | ||
1382 | protected function eatKanji() { | ||
1383 | $p = 0; | ||
1384 | while($this->identifyMode($p) == QR_MODE_KJ) { | ||
1385 | $p += 2; | ||
1386 | } | ||
1387 | $this->items = $this->appendNewInputItem($this->items, QR_MODE_KJ, $p, str_split($this->dataStr)); | ||
1388 | return $run; | ||
1389 | } | ||
1390 | |||
1391 | /** | ||
1392 | * eat8 | ||
1393 | * @return int run | ||
1394 | */ | ||
1395 | protected function eat8() { | ||
1396 | $la = $this->lengthIndicator(QR_MODE_AN, $this->version); | ||
1397 | $ln = $this->lengthIndicator(QR_MODE_NM, $this->version); | ||
1398 | $p = 1; | ||
1399 | $dataStrLen = strlen($this->dataStr); | ||
1400 | while($p < $dataStrLen) { | ||
1401 | $mode = $this->identifyMode($p); | ||
1402 | if ($mode == QR_MODE_KJ) { | ||
1403 | break; | ||
1404 | } | ||
1405 | if ($mode == QR_MODE_NM) { | ||
1406 | $q = $p; | ||
1407 | while($this->isdigitat($this->dataStr, $q)) { | ||
1408 | $q++; | ||
1409 | } | ||
1410 | $dif = $this->estimateBitsMode8($p) // + 4 + l8 | ||
1411 | + $this->estimateBitsModeNum($q - $p) + 4 + $ln | ||
1412 | - $this->estimateBitsMode8($q); // - 4 - l8 | ||
1413 | if ($dif < 0) { | ||
1414 | break; | ||
1415 | } else { | ||
1416 | $p = $q; | ||
1417 | } | ||
1418 | } elseif ($mode == QR_MODE_AN) { | ||
1419 | $q = $p; | ||
1420 | while($this->isalnumat($this->dataStr, $q)) { | ||
1421 | $q++; | ||
1422 | } | ||
1423 | $dif = $this->estimateBitsMode8($p) // + 4 + l8 | ||
1424 | + $this->estimateBitsModeAn($q - $p) + 4 + $la | ||
1425 | - $this->estimateBitsMode8($q); // - 4 - l8 | ||
1426 | if ($dif < 0) { | ||
1427 | break; | ||
1428 | } else { | ||
1429 | $p = $q; | ||
1430 | } | ||
1431 | } else { | ||
1432 | $p++; | ||
1433 | } | ||
1434 | } | ||
1435 | $run = $p; | ||
1436 | $this->items = $this->appendNewInputItem($this->items, QR_MODE_8B, $run, str_split($this->dataStr)); | ||
1437 | return $run; | ||
1438 | } | ||
1439 | |||
1440 | /** | ||
1441 | * splitString | ||
1442 | * @return (int) | ||
1443 | */ | ||
1444 | protected function splitString() { | ||
1445 | while (strlen($this->dataStr) > 0) { | ||
1446 | $mode = $this->identifyMode(0); | ||
1447 | switch ($mode) { | ||
1448 | case QR_MODE_NM: { | ||
1449 | $length = $this->eatNum(); | ||
1450 | break; | ||
1451 | } | ||
1452 | case QR_MODE_AN: { | ||
1453 | $length = $this->eatAn(); | ||
1454 | break; | ||
1455 | } | ||
1456 | case QR_MODE_KJ: { | ||
1457 | if ($hint == QR_MODE_KJ) { | ||
1458 | $length = $this->eatKanji(); | ||
1459 | } else { | ||
1460 | $length = $this->eat8(); | ||
1461 | } | ||
1462 | break; | ||
1463 | } | ||
1464 | default: { | ||
1465 | $length = $this->eat8(); | ||
1466 | break; | ||
1467 | } | ||
1468 | } | ||
1469 | if ($length == 0) { | ||
1470 | return 0; | ||
1471 | } | ||
1472 | if ($length < 0) { | ||
1473 | return -1; | ||
1474 | } | ||
1475 | $this->dataStr = substr($this->dataStr, $length); | ||
1476 | } | ||
1477 | return 0; | ||
1478 | } | ||
1479 | |||
1480 | /** | ||
1481 | * toUpper | ||
1482 | */ | ||
1483 | protected function toUpper() { | ||
1484 | $stringLen = strlen($this->dataStr); | ||
1485 | $p = 0; | ||
1486 | while ($p < $stringLen) { | ||
1487 | $mode = $this->identifyMode(substr($this->dataStr, $p), $this->hint); | ||
1488 | if ($mode == QR_MODE_KJ) { | ||
1489 | $p += 2; | ||
1490 | } else { | ||
1491 | if ((ord($this->dataStr[$p]) >= ord('a')) AND (ord($this->dataStr[$p]) <= ord('z'))) { | ||
1492 | $this->dataStr[$p] = chr(ord($this->dataStr[$p]) - 32); | ||
1493 | } | ||
1494 | $p++; | ||
1495 | } | ||
1496 | } | ||
1497 | return $this->dataStr; | ||
1498 | } | ||
1499 | |||
1500 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
1501 | |||
1502 | // QRinputItem | ||
1503 | |||
1504 | /** | ||
1505 | * newInputItem | ||
1506 | * @param $mode (int) | ||
1507 | * @param $size (int) | ||
1508 | * @param $data (array) | ||
1509 | * @param $bstream (array) | ||
1510 | * @return array input item | ||
1511 | */ | ||
1512 | protected function newInputItem($mode, $size, $data, $bstream=null) { | ||
1513 | $setData = array_slice($data, 0, $size); | ||
1514 | if (count($setData) < $size) { | ||
1515 | $setData = array_merge($setData, array_fill(0, ($size - count($setData)), 0)); | ||
1516 | } | ||
1517 | if (!$this->check($mode, $size, $setData)) { | ||
1518 | return NULL; | ||
1519 | } | ||
1520 | $inputitem = array(); | ||
1521 | $inputitem['mode'] = $mode; | ||
1522 | $inputitem['size'] = $size; | ||
1523 | $inputitem['data'] = $setData; | ||
1524 | $inputitem['bstream'] = $bstream; | ||
1525 | return $inputitem; | ||
1526 | } | ||
1527 | |||
1528 | /** | ||
1529 | * encodeModeNum | ||
1530 | * @param $inputitem (array) | ||
1531 | * @param $version (int) | ||
1532 | * @return array input item | ||
1533 | */ | ||
1534 | protected function encodeModeNum($inputitem, $version) { | ||
1535 | $words = (int)($inputitem['size'] / 3); | ||
1536 | $inputitem['bstream'] = array(); | ||
1537 | $val = 0x1; | ||
1538 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val); | ||
1539 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_NM, $version), $inputitem['size']); | ||
1540 | for ($i=0; $i < $words; ++$i) { | ||
1541 | $val = (ord($inputitem['data'][$i*3 ]) - ord('0')) * 100; | ||
1542 | $val += (ord($inputitem['data'][$i*3+1]) - ord('0')) * 10; | ||
1543 | $val += (ord($inputitem['data'][$i*3+2]) - ord('0')); | ||
1544 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 10, $val); | ||
1545 | } | ||
1546 | if ($inputitem['size'] - $words * 3 == 1) { | ||
1547 | $val = ord($inputitem['data'][$words*3]) - ord('0'); | ||
1548 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, $val); | ||
1549 | } elseif (($inputitem['size'] - ($words * 3)) == 2) { | ||
1550 | $val = (ord($inputitem['data'][$words*3 ]) - ord('0')) * 10; | ||
1551 | $val += (ord($inputitem['data'][$words*3+1]) - ord('0')); | ||
1552 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 7, $val); | ||
1553 | } | ||
1554 | return $inputitem; | ||
1555 | } | ||
1556 | |||
1557 | /** | ||
1558 | * encodeModeAn | ||
1559 | * @param $inputitem (array) | ||
1560 | * @param $version (int) | ||
1561 | * @return array input item | ||
1562 | */ | ||
1563 | protected function encodeModeAn($inputitem, $version) { | ||
1564 | $words = (int)($inputitem['size'] / 2); | ||
1565 | $inputitem['bstream'] = array(); | ||
1566 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x02); | ||
1567 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_AN, $version), $inputitem['size']); | ||
1568 | for ($i=0; $i < $words; ++$i) { | ||
1569 | $val = (int)($this->lookAnTable(ord($inputitem['data'][$i*2])) * 45); | ||
1570 | $val += (int)($this->lookAnTable(ord($inputitem['data'][($i*2)+1]))); | ||
1571 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 11, $val); | ||
1572 | } | ||
1573 | if ($inputitem['size'] & 1) { | ||
1574 | $val = $this->lookAnTable(ord($inputitem['data'][($words * 2)])); | ||
1575 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 6, $val); | ||
1576 | } | ||
1577 | return $inputitem; | ||
1578 | } | ||
1579 | |||
1580 | /** | ||
1581 | * encodeMode8 | ||
1582 | * @param $inputitem (array) | ||
1583 | * @param $version (int) | ||
1584 | * @return array input item | ||
1585 | */ | ||
1586 | protected function encodeMode8($inputitem, $version) { | ||
1587 | $inputitem['bstream'] = array(); | ||
1588 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x4); | ||
1589 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_8B, $version), $inputitem['size']); | ||
1590 | for ($i=0; $i < $inputitem['size']; ++$i) { | ||
1591 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][$i])); | ||
1592 | } | ||
1593 | return $inputitem; | ||
1594 | } | ||
1595 | |||
1596 | /** | ||
1597 | * encodeModeKanji | ||
1598 | * @param $inputitem (array) | ||
1599 | * @param $version (int) | ||
1600 | * @return array input item | ||
1601 | */ | ||
1602 | protected function encodeModeKanji($inputitem, $version) { | ||
1603 | $inputitem['bstream'] = array(); | ||
1604 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x8); | ||
1605 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], $this->lengthIndicator(QR_MODE_KJ, $version), (int)($inputitem['size'] / 2)); | ||
1606 | for ($i=0; $i<$inputitem['size']; $i+=2) { | ||
1607 | $val = (ord($inputitem['data'][$i]) << 8) | ord($inputitem['data'][$i+1]); | ||
1608 | if ($val <= 0x9ffc) { | ||
1609 | $val -= 0x8140; | ||
1610 | } else { | ||
1611 | $val -= 0xc140; | ||
1612 | } | ||
1613 | $h = ($val >> 8) * 0xc0; | ||
1614 | $val = ($val & 0xff) + $h; | ||
1615 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 13, $val); | ||
1616 | } | ||
1617 | return $inputitem; | ||
1618 | } | ||
1619 | |||
1620 | /** | ||
1621 | * encodeModeStructure | ||
1622 | * @param $inputitem (array) | ||
1623 | * @return array input item | ||
1624 | */ | ||
1625 | protected function encodeModeStructure($inputitem) { | ||
1626 | $inputitem['bstream'] = array(); | ||
1627 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, 0x03); | ||
1628 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][1]) - 1); | ||
1629 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 4, ord($inputitem['data'][0]) - 1); | ||
1630 | $inputitem['bstream'] = $this->appendNum($inputitem['bstream'], 8, ord($inputitem['data'][2])); | ||
1631 | return $inputitem; | ||
1632 | } | ||
1633 | |||
1634 | /** | ||
1635 | * encodeBitStream | ||
1636 | * @param $inputitem (array) | ||
1637 | * @param $version (int) | ||
1638 | * @return array input item | ||
1639 | */ | ||
1640 | protected function encodeBitStream($inputitem, $version) { | ||
1641 | $inputitem['bstream'] = array(); | ||
1642 | $words = $this->maximumWords($inputitem['mode'], $version); | ||
1643 | if ($inputitem['size'] > $words) { | ||
1644 | $st1 = $this->newInputItem($inputitem['mode'], $words, $inputitem['data']); | ||
1645 | $st2 = $this->newInputItem($inputitem['mode'], $inputitem['size'] - $words, array_slice($inputitem['data'], $words)); | ||
1646 | $st1 = $this->encodeBitStream($st1, $version); | ||
1647 | $st2 = $this->encodeBitStream($st2, $version); | ||
1648 | $inputitem['bstream'] = array(); | ||
1649 | $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st1['bstream']); | ||
1650 | $inputitem['bstream'] = $this->appendBitstream($inputitem['bstream'], $st2['bstream']); | ||
1651 | } else { | ||
1652 | switch($inputitem['mode']) { | ||
1653 | case QR_MODE_NM: { | ||
1654 | $inputitem = $this->encodeModeNum($inputitem, $version); | ||
1655 | break; | ||
1656 | } | ||
1657 | case QR_MODE_AN: { | ||
1658 | $inputitem = $this->encodeModeAn($inputitem, $version); | ||
1659 | break; | ||
1660 | } | ||
1661 | case QR_MODE_8B: { | ||
1662 | $inputitem = $this->encodeMode8($inputitem, $version); | ||
1663 | break; | ||
1664 | } | ||
1665 | case QR_MODE_KJ: { | ||
1666 | $inputitem = $this->encodeModeKanji($inputitem, $version); | ||
1667 | break; | ||
1668 | } | ||
1669 | case QR_MODE_ST: { | ||
1670 | $inputitem = $this->encodeModeStructure($inputitem); | ||
1671 | break; | ||
1672 | } | ||
1673 | default: { | ||
1674 | break; | ||
1675 | } | ||
1676 | } | ||
1677 | } | ||
1678 | return $inputitem; | ||
1679 | } | ||
1680 | |||
1681 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
1682 | |||
1683 | // QRinput | ||
1684 | |||
1685 | /** | ||
1686 | * Append data to an input object. | ||
1687 | * The data is copied and appended to the input object. | ||
1688 | * @param $items (arrray) input items | ||
1689 | * @param $mode (int) encoding mode. | ||
1690 | * @param $size (int) size of data (byte). | ||
1691 | * @param $data (array) array of input data. | ||
1692 | * @return items | ||
1693 | * | ||
1694 | */ | ||
1695 | protected function appendNewInputItem($items, $mode, $size, $data) { | ||
1696 | $newitem = $this->newInputItem($mode, $size, $data); | ||
1697 | if (!empty($newitem)) { | ||
1698 | $items[] = $newitem; | ||
1699 | } | ||
1700 | return $items; | ||
1701 | } | ||
1702 | |||
1703 | /** | ||
1704 | * insertStructuredAppendHeader | ||
1705 | * @param $items (array) | ||
1706 | * @param $size (int) | ||
1707 | * @param $index (int) | ||
1708 | * @param $parity (int) | ||
1709 | * @return array items | ||
1710 | */ | ||
1711 | protected function insertStructuredAppendHeader($items, $size, $index, $parity) { | ||
1712 | if ($size > MAX_STRUCTURED_SYMBOLS) { | ||
1713 | return -1; | ||
1714 | } | ||
1715 | if (($index <= 0) OR ($index > MAX_STRUCTURED_SYMBOLS)) { | ||
1716 | return -1; | ||
1717 | } | ||
1718 | $buf = array($size, $index, $parity); | ||
1719 | $entry = $this->newInputItem(QR_MODE_ST, 3, buf); | ||
1720 | array_unshift($items, $entry); | ||
1721 | return $items; | ||
1722 | } | ||
1723 | |||
1724 | /** | ||
1725 | * calcParity | ||
1726 | * @param $items (array) | ||
1727 | * @return int parity | ||
1728 | */ | ||
1729 | protected function calcParity($items) { | ||
1730 | $parity = 0; | ||
1731 | foreach ($items as $item) { | ||
1732 | if ($item['mode'] != QR_MODE_ST) { | ||
1733 | for ($i=$item['size']-1; $i>=0; --$i) { | ||
1734 | $parity ^= $item['data'][$i]; | ||
1735 | } | ||
1736 | } | ||
1737 | } | ||
1738 | return $parity; | ||
1739 | } | ||
1740 | |||
1741 | /** | ||
1742 | * checkModeNum | ||
1743 | * @param $size (int) | ||
1744 | * @param $data (array) | ||
1745 | * @return boolean true or false | ||
1746 | */ | ||
1747 | protected function checkModeNum($size, $data) { | ||
1748 | for ($i=0; $i<$size; ++$i) { | ||
1749 | if ((ord($data[$i]) < ord('0')) OR (ord($data[$i]) > ord('9'))){ | ||
1750 | return false; | ||
1751 | } | ||
1752 | } | ||
1753 | return true; | ||
1754 | } | ||
1755 | |||
1756 | /** | ||
1757 | * Look up the alphabet-numeric convesion table (see JIS X0510:2004, pp.19). | ||
1758 | * @param $c (int) character value | ||
1759 | * @return value | ||
1760 | */ | ||
1761 | protected function lookAnTable($c) { | ||
1762 | return (($c > 127)?-1:$this->anTable[$c]); | ||
1763 | } | ||
1764 | |||
1765 | /** | ||
1766 | * checkModeAn | ||
1767 | * @param $size (int) | ||
1768 | * @param $data (array) | ||
1769 | * @return boolean true or false | ||
1770 | */ | ||
1771 | protected function checkModeAn($size, $data) { | ||
1772 | for ($i=0; $i<$size; ++$i) { | ||
1773 | if ($this->lookAnTable(ord($data[$i])) == -1) { | ||
1774 | return false; | ||
1775 | } | ||
1776 | } | ||
1777 | return true; | ||
1778 | } | ||
1779 | |||
1780 | /** | ||
1781 | * estimateBitsModeNum | ||
1782 | * @param $size (int) | ||
1783 | * @return int number of bits | ||
1784 | */ | ||
1785 | protected function estimateBitsModeNum($size) { | ||
1786 | $w = (int)($size / 3); | ||
1787 | $bits = ($w * 10); | ||
1788 | switch($size - ($w * 3)) { | ||
1789 | case 1: { | ||
1790 | $bits += 4; | ||
1791 | break; | ||
1792 | } | ||
1793 | case 2: { | ||
1794 | $bits += 7; | ||
1795 | break; | ||
1796 | } | ||
1797 | } | ||
1798 | return $bits; | ||
1799 | } | ||
1800 | |||
1801 | /** | ||
1802 | * estimateBitsModeAn | ||
1803 | * @param $size (int) | ||
1804 | * @return int number of bits | ||
1805 | */ | ||
1806 | protected function estimateBitsModeAn($size) { | ||
1807 | $bits = (int)($size * 5.5); // (size / 2 ) * 11 | ||
1808 | if ($size & 1) { | ||
1809 | $bits += 6; | ||
1810 | } | ||
1811 | return $bits; | ||
1812 | } | ||
1813 | |||
1814 | /** | ||
1815 | * estimateBitsMode8 | ||
1816 | * @param $size (int) | ||
1817 | * @return int number of bits | ||
1818 | */ | ||
1819 | protected function estimateBitsMode8($size) { | ||
1820 | return (int)($size * 8); | ||
1821 | } | ||
1822 | |||
1823 | /** | ||
1824 | * estimateBitsModeKanji | ||
1825 | * @param $size (int) | ||
1826 | * @return int number of bits | ||
1827 | */ | ||
1828 | protected function estimateBitsModeKanji($size) { | ||
1829 | return (int)($size * 6.5); // (size / 2 ) * 13 | ||
1830 | } | ||
1831 | |||
1832 | /** | ||
1833 | * checkModeKanji | ||
1834 | * @param $size (int) | ||
1835 | * @param $data (array) | ||
1836 | * @return boolean true or false | ||
1837 | */ | ||
1838 | protected function checkModeKanji($size, $data) { | ||
1839 | if ($size & 1) { | ||
1840 | return false; | ||
1841 | } | ||
1842 | for ($i=0; $i<$size; $i+=2) { | ||
1843 | $val = (ord($data[$i]) << 8) | ord($data[$i+1]); | ||
1844 | if (($val < 0x8140) OR (($val > 0x9ffc) AND ($val < 0xe040)) OR ($val > 0xebbf)) { | ||
1845 | return false; | ||
1846 | } | ||
1847 | } | ||
1848 | return true; | ||
1849 | } | ||
1850 | |||
1851 | /** | ||
1852 | * Validate the input data. | ||
1853 | * @param $mode (int) encoding mode. | ||
1854 | * @param $size (int) size of data (byte). | ||
1855 | * @param $data (array) data to validate | ||
1856 | * @return boolean true in case of valid data, false otherwise | ||
1857 | */ | ||
1858 | protected function check($mode, $size, $data) { | ||
1859 | if ($size <= 0) { | ||
1860 | return false; | ||
1861 | } | ||
1862 | switch($mode) { | ||
1863 | case QR_MODE_NM: { | ||
1864 | return $this->checkModeNum($size, $data); | ||
1865 | } | ||
1866 | case QR_MODE_AN: { | ||
1867 | return $this->checkModeAn($size, $data); | ||
1868 | } | ||
1869 | case QR_MODE_KJ: { | ||
1870 | return $this->checkModeKanji($size, $data); | ||
1871 | } | ||
1872 | case QR_MODE_8B: { | ||
1873 | return true; | ||
1874 | } | ||
1875 | case QR_MODE_ST: { | ||
1876 | return true; | ||
1877 | } | ||
1878 | default: { | ||
1879 | break; | ||
1880 | } | ||
1881 | } | ||
1882 | return false; | ||
1883 | } | ||
1884 | |||
1885 | /** | ||
1886 | * estimateBitStreamSize | ||
1887 | * @param $items (array) | ||
1888 | * @param $version (int) | ||
1889 | * @return int bits | ||
1890 | */ | ||
1891 | protected function estimateBitStreamSize($items, $version) { | ||
1892 | $bits = 0; | ||
1893 | if ($version == 0) { | ||
1894 | $version = 1; | ||
1895 | } | ||
1896 | foreach ($items as $item) { | ||
1897 | switch($item['mode']) { | ||
1898 | case QR_MODE_NM: { | ||
1899 | $bits = $this->estimateBitsModeNum($item['size']); | ||
1900 | break; | ||
1901 | } | ||
1902 | case QR_MODE_AN: { | ||
1903 | $bits = $this->estimateBitsModeAn($item['size']); | ||
1904 | break; | ||
1905 | } | ||
1906 | case QR_MODE_8B: { | ||
1907 | $bits = $this->estimateBitsMode8($item['size']); | ||
1908 | break; | ||
1909 | } | ||
1910 | case QR_MODE_KJ: { | ||
1911 | $bits = $this->estimateBitsModeKanji($item['size']); | ||
1912 | break; | ||
1913 | } | ||
1914 | case QR_MODE_ST: { | ||
1915 | return STRUCTURE_HEADER_BITS; | ||
1916 | } | ||
1917 | default: { | ||
1918 | return 0; | ||
1919 | } | ||
1920 | } | ||
1921 | $l = $this->lengthIndicator($item['mode'], $version); | ||
1922 | $m = 1 << $l; | ||
1923 | $num = (int)(($item['size'] + $m - 1) / $m); | ||
1924 | $bits += $num * (4 + $l); | ||
1925 | } | ||
1926 | return $bits; | ||
1927 | } | ||
1928 | |||
1929 | /** | ||
1930 | * estimateVersion | ||
1931 | * @param $items (array) | ||
1932 | * @return int version | ||
1933 | */ | ||
1934 | protected function estimateVersion($items) { | ||
1935 | $version = 0; | ||
1936 | $prev = 0; | ||
1937 | do { | ||
1938 | $prev = $version; | ||
1939 | $bits = $this->estimateBitStreamSize($items, $prev); | ||
1940 | $version = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level); | ||
1941 | if ($version < 0) { | ||
1942 | return -1; | ||
1943 | } | ||
1944 | } while ($version > $prev); | ||
1945 | return $version; | ||
1946 | } | ||
1947 | |||
1948 | /** | ||
1949 | * lengthOfCode | ||
1950 | * @param $mode (int) | ||
1951 | * @param $version (int) | ||
1952 | * @param $bits (int) | ||
1953 | * @return int size | ||
1954 | */ | ||
1955 | protected function lengthOfCode($mode, $version, $bits) { | ||
1956 | $payload = $bits - 4 - $this->lengthIndicator($mode, $version); | ||
1957 | switch($mode) { | ||
1958 | case QR_MODE_NM: { | ||
1959 | $chunks = (int)($payload / 10); | ||
1960 | $remain = $payload - $chunks * 10; | ||
1961 | $size = $chunks * 3; | ||
1962 | if ($remain >= 7) { | ||
1963 | $size += 2; | ||
1964 | } elseif ($remain >= 4) { | ||
1965 | $size += 1; | ||
1966 | } | ||
1967 | break; | ||
1968 | } | ||
1969 | case QR_MODE_AN: { | ||
1970 | $chunks = (int)($payload / 11); | ||
1971 | $remain = $payload - $chunks * 11; | ||
1972 | $size = $chunks * 2; | ||
1973 | if ($remain >= 6) { | ||
1974 | ++$size; | ||
1975 | } | ||
1976 | break; | ||
1977 | } | ||
1978 | case QR_MODE_8B: { | ||
1979 | $size = (int)($payload / 8); | ||
1980 | break; | ||
1981 | } | ||
1982 | case QR_MODE_KJ: { | ||
1983 | $size = (int)(($payload / 13) * 2); | ||
1984 | break; | ||
1985 | } | ||
1986 | case QR_MODE_ST: { | ||
1987 | $size = (int)($payload / 8); | ||
1988 | break; | ||
1989 | } | ||
1990 | default: { | ||
1991 | $size = 0; | ||
1992 | break; | ||
1993 | } | ||
1994 | } | ||
1995 | $maxsize = $this->maximumWords($mode, $version); | ||
1996 | if ($size < 0) { | ||
1997 | $size = 0; | ||
1998 | } | ||
1999 | if ($size > $maxsize) { | ||
2000 | $size = $maxsize; | ||
2001 | } | ||
2002 | return $size; | ||
2003 | } | ||
2004 | |||
2005 | /** | ||
2006 | * createBitStream | ||
2007 | * @param $items (array) | ||
2008 | * @return array of items and total bits | ||
2009 | */ | ||
2010 | protected function createBitStream($items) { | ||
2011 | $total = 0; | ||
2012 | foreach ($items as $key => $item) { | ||
2013 | $items[$key] = $this->encodeBitStream($item, $this->version); | ||
2014 | $bits = count($items[$key]['bstream']); | ||
2015 | $total += $bits; | ||
2016 | } | ||
2017 | return array($items, $total); | ||
2018 | } | ||
2019 | |||
2020 | /** | ||
2021 | * convertData | ||
2022 | * @param $items (array) | ||
2023 | * @return array items | ||
2024 | */ | ||
2025 | protected function convertData($items) { | ||
2026 | $ver = $this->estimateVersion($items); | ||
2027 | if ($ver > $this->version) { | ||
2028 | $this->version = $ver; | ||
2029 | } | ||
2030 | while (true) { | ||
2031 | $cbs = $this->createBitStream($items); | ||
2032 | $items = $cbs[0]; | ||
2033 | $bits = $cbs[1]; | ||
2034 | if ($bits < 0) { | ||
2035 | return -1; | ||
2036 | } | ||
2037 | $ver = $this->getMinimumVersion((int)(($bits + 7) / 8), $this->level); | ||
2038 | if ($ver < 0) { | ||
2039 | return -1; | ||
2040 | } elseif ($ver > $this->version) { | ||
2041 | $this->version = $ver; | ||
2042 | } else { | ||
2043 | break; | ||
2044 | } | ||
2045 | } | ||
2046 | return $items; | ||
2047 | } | ||
2048 | |||
2049 | /** | ||
2050 | * Append Padding Bit to bitstream | ||
2051 | * @param $bstream (array) | ||
2052 | * @return array bitstream | ||
2053 | */ | ||
2054 | protected function appendPaddingBit($bstream) { | ||
2055 | if (is_null($bstream)) { | ||
2056 | return null; | ||
2057 | } | ||
2058 | $bits = count($bstream); | ||
2059 | $maxwords = $this->getDataLength($this->version, $this->level); | ||
2060 | $maxbits = $maxwords * 8; | ||
2061 | if ($maxbits == $bits) { | ||
2062 | return $bstream; | ||
2063 | } | ||
2064 | if ($maxbits - $bits < 5) { | ||
2065 | return $this->appendNum($bstream, $maxbits - $bits, 0); | ||
2066 | } | ||
2067 | $bits += 4; | ||
2068 | $words = (int)(($bits + 7) / 8); | ||
2069 | $padding = array(); | ||
2070 | $padding = $this->appendNum($padding, $words * 8 - $bits + 4, 0); | ||
2071 | $padlen = $maxwords - $words; | ||
2072 | if ($padlen > 0) { | ||
2073 | $padbuf = array(); | ||
2074 | for ($i=0; $i<$padlen; ++$i) { | ||
2075 | $padbuf[$i] = ($i&1)?0x11:0xec; | ||
2076 | } | ||
2077 | $padding = $this->appendBytes($padding, $padlen, $padbuf); | ||
2078 | } | ||
2079 | return $this->appendBitstream($bstream, $padding); | ||
2080 | } | ||
2081 | |||
2082 | /** | ||
2083 | * mergeBitStream | ||
2084 | * @param $items (array) items | ||
2085 | * @return array bitstream | ||
2086 | */ | ||
2087 | protected function mergeBitStream($items) { | ||
2088 | $items = $this->convertData($items); | ||
2089 | if (!is_array($items)) { | ||
2090 | return null; | ||
2091 | } | ||
2092 | $bstream = array(); | ||
2093 | foreach ($items as $item) { | ||
2094 | $bstream = $this->appendBitstream($bstream, $item['bstream']); | ||
2095 | } | ||
2096 | return $bstream; | ||
2097 | } | ||
2098 | |||
2099 | /** | ||
2100 | * Returns a stream of bits. | ||
2101 | * @param $items (int) | ||
2102 | * @return array padded merged byte stream | ||
2103 | */ | ||
2104 | protected function getBitStream($items) { | ||
2105 | $bstream = $this->mergeBitStream($items); | ||
2106 | return $this->appendPaddingBit($bstream); | ||
2107 | } | ||
2108 | |||
2109 | /** | ||
2110 | * Pack all bit streams padding bits into a byte array. | ||
2111 | * @param $items (int) | ||
2112 | * @return array padded merged byte stream | ||
2113 | */ | ||
2114 | protected function getByteStream($items) { | ||
2115 | $bstream = $this->getBitStream($items); | ||
2116 | return $this->bitstreamToByte($bstream); | ||
2117 | } | ||
2118 | |||
2119 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
2120 | |||
2121 | // QRbitstream | ||
2122 | |||
2123 | /** | ||
2124 | * Return an array with zeros | ||
2125 | * @param $setLength (int) array size | ||
2126 | * @return array | ||
2127 | */ | ||
2128 | protected function allocate($setLength) { | ||
2129 | return array_fill(0, $setLength, 0); | ||
2130 | } | ||
2131 | |||
2132 | /** | ||
2133 | * Return new bitstream from number | ||
2134 | * @param $bits (int) number of bits | ||
2135 | * @param $num (int) number | ||
2136 | * @return array bitstream | ||
2137 | */ | ||
2138 | protected function newFromNum($bits, $num) { | ||
2139 | $bstream = $this->allocate($bits); | ||
2140 | $mask = 1 << ($bits - 1); | ||
2141 | for ($i=0; $i<$bits; ++$i) { | ||
2142 | if ($num & $mask) { | ||
2143 | $bstream[$i] = 1; | ||
2144 | } else { | ||
2145 | $bstream[$i] = 0; | ||
2146 | } | ||
2147 | $mask = $mask >> 1; | ||
2148 | } | ||
2149 | return $bstream; | ||
2150 | } | ||
2151 | |||
2152 | /** | ||
2153 | * Return new bitstream from bytes | ||
2154 | * @param $size (int) size | ||
2155 | * @param $data (array) bytes | ||
2156 | * @return array bitstream | ||
2157 | */ | ||
2158 | protected function newFromBytes($size, $data) { | ||
2159 | $bstream = $this->allocate($size * 8); | ||
2160 | $p=0; | ||
2161 | for ($i=0; $i<$size; ++$i) { | ||
2162 | $mask = 0x80; | ||
2163 | for ($j=0; $j<8; ++$j) { | ||
2164 | if ($data[$i] & $mask) { | ||
2165 | $bstream[$p] = 1; | ||
2166 | } else { | ||
2167 | $bstream[$p] = 0; | ||
2168 | } | ||
2169 | $p++; | ||
2170 | $mask = $mask >> 1; | ||
2171 | } | ||
2172 | } | ||
2173 | return $bstream; | ||
2174 | } | ||
2175 | |||
2176 | /** | ||
2177 | * Append one bitstream to another | ||
2178 | * @param $bitstream (array) original bitstream | ||
2179 | * @param $append (array) bitstream to append | ||
2180 | * @return array bitstream | ||
2181 | */ | ||
2182 | protected function appendBitstream($bitstream, $append) { | ||
2183 | if ((!is_array($append)) OR (count($append) == 0)) { | ||
2184 | return $bitstream; | ||
2185 | } | ||
2186 | if (count($bitstream) == 0) { | ||
2187 | return $append; | ||
2188 | } | ||
2189 | return array_values(array_merge($bitstream, $append)); | ||
2190 | } | ||
2191 | |||
2192 | /** | ||
2193 | * Append one bitstream created from number to another | ||
2194 | * @param $bitstream (array) original bitstream | ||
2195 | * @param $bits (int) number of bits | ||
2196 | * @param $num (int) number | ||
2197 | * @return array bitstream | ||
2198 | */ | ||
2199 | protected function appendNum($bitstream, $bits, $num) { | ||
2200 | if ($bits == 0) { | ||
2201 | return 0; | ||
2202 | } | ||
2203 | $b = $this->newFromNum($bits, $num); | ||
2204 | return $this->appendBitstream($bitstream, $b); | ||
2205 | } | ||
2206 | |||
2207 | /** | ||
2208 | * Append one bitstream created from bytes to another | ||
2209 | * @param $bitstream (array) original bitstream | ||
2210 | * @param $size (int) size | ||
2211 | * @param $data (array) bytes | ||
2212 | * @return array bitstream | ||
2213 | */ | ||
2214 | protected function appendBytes($bitstream, $size, $data) { | ||
2215 | if ($size == 0) { | ||
2216 | return 0; | ||
2217 | } | ||
2218 | $b = $this->newFromBytes($size, $data); | ||
2219 | return $this->appendBitstream($bitstream, $b); | ||
2220 | } | ||
2221 | |||
2222 | /** | ||
2223 | * Convert bitstream to bytes | ||
2224 | * @param $bstream (array) original bitstream | ||
2225 | * @return array of bytes | ||
2226 | */ | ||
2227 | protected function bitstreamToByte($bstream) { | ||
2228 | if (is_null($bstream)) { | ||
2229 | return null; | ||
2230 | } | ||
2231 | $size = count($bstream); | ||
2232 | if ($size == 0) { | ||
2233 | return array(); | ||
2234 | } | ||
2235 | $data = array_fill(0, (int)(($size + 7) / 8), 0); | ||
2236 | $bytes = (int)($size / 8); | ||
2237 | $p = 0; | ||
2238 | for ($i=0; $i<$bytes; $i++) { | ||
2239 | $v = 0; | ||
2240 | for ($j=0; $j<8; $j++) { | ||
2241 | $v = $v << 1; | ||
2242 | $v |= $bstream[$p]; | ||
2243 | $p++; | ||
2244 | } | ||
2245 | $data[$i] = $v; | ||
2246 | } | ||
2247 | if ($size & 7) { | ||
2248 | $v = 0; | ||
2249 | for ($j=0; $j<($size & 7); $j++) { | ||
2250 | $v = $v << 1; | ||
2251 | $v |= $bstream[$p]; | ||
2252 | $p++; | ||
2253 | } | ||
2254 | $data[$bytes] = $v; | ||
2255 | } | ||
2256 | return $data; | ||
2257 | } | ||
2258 | |||
2259 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
2260 | |||
2261 | // QRspec | ||
2262 | |||
2263 | /** | ||
2264 | * Replace a value on the array at the specified position | ||
2265 | * @param $srctab (array) | ||
2266 | * @param $x (int) X position | ||
2267 | * @param $y (int) Y position | ||
2268 | * @param $repl (string) value to replace | ||
2269 | * @param $replLen (int) length of the repl string | ||
2270 | * @return array srctab | ||
2271 | */ | ||
2272 | protected function qrstrset($srctab, $x, $y, $repl, $replLen=false) { | ||
2273 | $srctab[$y] = substr_replace($srctab[$y], ($replLen !== false)?substr($repl,0,$replLen):$repl, $x, ($replLen !== false)?$replLen:strlen($repl)); | ||
2274 | return $srctab; | ||
2275 | } | ||
2276 | |||
2277 | /** | ||
2278 | * Return maximum data code length (bytes) for the version. | ||
2279 | * @param $version (int) version | ||
2280 | * @param $level (int) error correction level | ||
2281 | * @return int maximum size (bytes) | ||
2282 | */ | ||
2283 | protected function getDataLength($version, $level) { | ||
2284 | return $this->capacity[$version][QRCAP_WORDS] - $this->capacity[$version][QRCAP_EC][$level]; | ||
2285 | } | ||
2286 | |||
2287 | /** | ||
2288 | * Return maximum error correction code length (bytes) for the version. | ||
2289 | * @param $version (int) version | ||
2290 | * @param $level (int) error correction level | ||
2291 | * @return int ECC size (bytes) | ||
2292 | */ | ||
2293 | protected function getECCLength($version, $level){ | ||
2294 | return $this->capacity[$version][QRCAP_EC][$level]; | ||
2295 | } | ||
2296 | |||
2297 | /** | ||
2298 | * Return the width of the symbol for the version. | ||
2299 | * @param $version (int) version | ||
2300 | * @return int width | ||
2301 | */ | ||
2302 | protected function getWidth($version) { | ||
2303 | return $this->capacity[$version][QRCAP_WIDTH]; | ||
2304 | } | ||
2305 | |||
2306 | /** | ||
2307 | * Return the numer of remainder bits. | ||
2308 | * @param $version (int) version | ||
2309 | * @return int number of remainder bits | ||
2310 | */ | ||
2311 | protected function getRemainder($version) { | ||
2312 | return $this->capacity[$version][QRCAP_REMINDER]; | ||
2313 | } | ||
2314 | |||
2315 | /** | ||
2316 | * Return a version number that satisfies the input code length. | ||
2317 | * @param $size (int) input code length (bytes) | ||
2318 | * @param $level (int) error correction level | ||
2319 | * @return int version number | ||
2320 | */ | ||
2321 | protected function getMinimumVersion($size, $level) { | ||
2322 | for ($i = 1; $i <= QRSPEC_VERSION_MAX; ++$i) { | ||
2323 | $words = ($this->capacity[$i][QRCAP_WORDS] - $this->capacity[$i][QRCAP_EC][$level]); | ||
2324 | if ($words >= $size) { | ||
2325 | return $i; | ||
2326 | } | ||
2327 | } | ||
2328 | // the size of input data is greater than QR capacity, try to lover the error correction mode | ||
2329 | return -1; | ||
2330 | } | ||
2331 | |||
2332 | /** | ||
2333 | * Return the size of length indicator for the mode and version. | ||
2334 | * @param $mode (int) encoding mode | ||
2335 | * @param $version (int) version | ||
2336 | * @return int the size of the appropriate length indicator (bits). | ||
2337 | */ | ||
2338 | protected function lengthIndicator($mode, $version) { | ||
2339 | if ($mode == QR_MODE_ST) { | ||
2340 | return 0; | ||
2341 | } | ||
2342 | if ($version <= 9) { | ||
2343 | $l = 0; | ||
2344 | } elseif ($version <= 26) { | ||
2345 | $l = 1; | ||
2346 | } else { | ||
2347 | $l = 2; | ||
2348 | } | ||
2349 | return $this->lengthTableBits[$mode][$l]; | ||
2350 | } | ||
2351 | |||
2352 | /** | ||
2353 | * Return the maximum length for the mode and version. | ||
2354 | * @param $mode (int) encoding mode | ||
2355 | * @param $version (int) version | ||
2356 | * @return int the maximum length (bytes) | ||
2357 | */ | ||
2358 | protected function maximumWords($mode, $version) { | ||
2359 | if ($mode == QR_MODE_ST) { | ||
2360 | return 3; | ||
2361 | } | ||
2362 | if ($version <= 9) { | ||
2363 | $l = 0; | ||
2364 | } else if ($version <= 26) { | ||
2365 | $l = 1; | ||
2366 | } else { | ||
2367 | $l = 2; | ||
2368 | } | ||
2369 | $bits = $this->lengthTableBits[$mode][$l]; | ||
2370 | $words = (1 << $bits) - 1; | ||
2371 | if ($mode == QR_MODE_KJ) { | ||
2372 | $words *= 2; // the number of bytes is required | ||
2373 | } | ||
2374 | return $words; | ||
2375 | } | ||
2376 | |||
2377 | /** | ||
2378 | * Return an array of ECC specification. | ||
2379 | * @param $version (int) version | ||
2380 | * @param $level (int) error correction level | ||
2381 | * @param $spec (array) an array of ECC specification contains as following: {# of type1 blocks, # of data code, # of ecc code, # of type2 blocks, # of data code} | ||
2382 | * @return array spec | ||
2383 | */ | ||
2384 | protected function getEccSpec($version, $level, $spec) { | ||
2385 | if (count($spec) < 5) { | ||
2386 | $spec = array(0, 0, 0, 0, 0); | ||
2387 | } | ||
2388 | $b1 = $this->eccTable[$version][$level][0]; | ||
2389 | $b2 = $this->eccTable[$version][$level][1]; | ||
2390 | $data = $this->getDataLength($version, $level); | ||
2391 | $ecc = $this->getECCLength($version, $level); | ||
2392 | if ($b2 == 0) { | ||
2393 | $spec[0] = $b1; | ||
2394 | $spec[1] = (int)($data / $b1); | ||
2395 | $spec[2] = (int)($ecc / $b1); | ||
2396 | $spec[3] = 0; | ||
2397 | $spec[4] = 0; | ||
2398 | } else { | ||
2399 | $spec[0] = $b1; | ||
2400 | $spec[1] = (int)($data / ($b1 + $b2)); | ||
2401 | $spec[2] = (int)($ecc / ($b1 + $b2)); | ||
2402 | $spec[3] = $b2; | ||
2403 | $spec[4] = $spec[1] + 1; | ||
2404 | } | ||
2405 | return $spec; | ||
2406 | } | ||
2407 | |||
2408 | /** | ||
2409 | * Put an alignment marker. | ||
2410 | * @param $frame (array) frame | ||
2411 | * @param $ox (int) X center coordinate of the pattern | ||
2412 | * @param $oy (int) Y center coordinate of the pattern | ||
2413 | * @return array frame | ||
2414 | */ | ||
2415 | protected function putAlignmentMarker($frame, $ox, $oy) { | ||
2416 | $finder = array( | ||
2417 | "\xa1\xa1\xa1\xa1\xa1", | ||
2418 | "\xa1\xa0\xa0\xa0\xa1", | ||
2419 | "\xa1\xa0\xa1\xa0\xa1", | ||
2420 | "\xa1\xa0\xa0\xa0\xa1", | ||
2421 | "\xa1\xa1\xa1\xa1\xa1" | ||
2422 | ); | ||
2423 | $yStart = $oy - 2; | ||
2424 | $xStart = $ox - 2; | ||
2425 | for ($y=0; $y < 5; $y++) { | ||
2426 | $frame = $this->qrstrset($frame, $xStart, $yStart+$y, $finder[$y]); | ||
2427 | } | ||
2428 | return $frame; | ||
2429 | } | ||
2430 | |||
2431 | /** | ||
2432 | * Put an alignment pattern. | ||
2433 | * @param $version (int) version | ||
2434 | * @param $frame (array) frame | ||
2435 | * @param $width (int) width | ||
2436 | * @return array frame | ||
2437 | */ | ||
2438 | protected function putAlignmentPattern($version, $frame, $width) { | ||
2439 | if ($version < 2) { | ||
2440 | return $frame; | ||
2441 | } | ||
2442 | $d = $this->alignmentPattern[$version][1] - $this->alignmentPattern[$version][0]; | ||
2443 | if ($d < 0) { | ||
2444 | $w = 2; | ||
2445 | } else { | ||
2446 | $w = (int)(($width - $this->alignmentPattern[$version][0]) / $d + 2); | ||
2447 | } | ||
2448 | if ($w * $w - 3 == 1) { | ||
2449 | $x = $this->alignmentPattern[$version][0]; | ||
2450 | $y = $this->alignmentPattern[$version][0]; | ||
2451 | $frame = $this->putAlignmentMarker($frame, $x, $y); | ||
2452 | return $frame; | ||
2453 | } | ||
2454 | $cx = $this->alignmentPattern[$version][0]; | ||
2455 | $wo = $w - 1; | ||
2456 | for ($x=1; $x < $wo; ++$x) { | ||
2457 | $frame = $this->putAlignmentMarker($frame, 6, $cx); | ||
2458 | $frame = $this->putAlignmentMarker($frame, $cx, 6); | ||
2459 | $cx += $d; | ||
2460 | } | ||
2461 | $cy = $this->alignmentPattern[$version][0]; | ||
2462 | for ($y=0; $y < $wo; ++$y) { | ||
2463 | $cx = $this->alignmentPattern[$version][0]; | ||
2464 | for ($x=0; $x < $wo; ++$x) { | ||
2465 | $frame = $this->putAlignmentMarker($frame, $cx, $cy); | ||
2466 | $cx += $d; | ||
2467 | } | ||
2468 | $cy += $d; | ||
2469 | } | ||
2470 | return $frame; | ||
2471 | } | ||
2472 | |||
2473 | /** | ||
2474 | * Return BCH encoded version information pattern that is used for the symbol of version 7 or greater. Use lower 18 bits. | ||
2475 | * @param $version (int) version | ||
2476 | * @return BCH encoded version information pattern | ||
2477 | */ | ||
2478 | protected function getVersionPattern($version) { | ||
2479 | if (($version < 7) OR ($version > QRSPEC_VERSION_MAX)) { | ||
2480 | return 0; | ||
2481 | } | ||
2482 | return $this->versionPattern[($version - 7)]; | ||
2483 | } | ||
2484 | |||
2485 | /** | ||
2486 | * Return BCH encoded format information pattern. | ||
2487 | * @param $mask (array) | ||
2488 | * @param $level (int) error correction level | ||
2489 | * @return BCH encoded format information pattern | ||
2490 | */ | ||
2491 | protected function getFormatInfo($mask, $level) { | ||
2492 | if (($mask < 0) OR ($mask > 7)) { | ||
2493 | return 0; | ||
2494 | } | ||
2495 | if (($level < 0) OR ($level > 3)) { | ||
2496 | return 0; | ||
2497 | } | ||
2498 | return $this->formatInfo[$level][$mask]; | ||
2499 | } | ||
2500 | |||
2501 | /** | ||
2502 | * Put a finder pattern. | ||
2503 | * @param $frame (array) frame | ||
2504 | * @param $ox (int) X center coordinate of the pattern | ||
2505 | * @param $oy (int) Y center coordinate of the pattern | ||
2506 | * @return array frame | ||
2507 | */ | ||
2508 | protected function putFinderPattern($frame, $ox, $oy) { | ||
2509 | $finder = array( | ||
2510 | "\xc1\xc1\xc1\xc1\xc1\xc1\xc1", | ||
2511 | "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", | ||
2512 | "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", | ||
2513 | "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", | ||
2514 | "\xc1\xc0\xc1\xc1\xc1\xc0\xc1", | ||
2515 | "\xc1\xc0\xc0\xc0\xc0\xc0\xc1", | ||
2516 | "\xc1\xc1\xc1\xc1\xc1\xc1\xc1" | ||
2517 | ); | ||
2518 | for ($y=0; $y < 7; $y++) { | ||
2519 | $frame = $this->qrstrset($frame, $ox, ($oy + $y), $finder[$y]); | ||
2520 | } | ||
2521 | return $frame; | ||
2522 | } | ||
2523 | |||
2524 | /** | ||
2525 | * Return a copy of initialized frame. | ||
2526 | * @param $version (int) version | ||
2527 | * @return Array of unsigned char. | ||
2528 | */ | ||
2529 | protected function createFrame($version) { | ||
2530 | $width = $this->capacity[$version][QRCAP_WIDTH]; | ||
2531 | $frameLine = str_repeat ("\0", $width); | ||
2532 | $frame = array_fill(0, $width, $frameLine); | ||
2533 | // Finder pattern | ||
2534 | $frame = $this->putFinderPattern($frame, 0, 0); | ||
2535 | $frame = $this->putFinderPattern($frame, $width - 7, 0); | ||
2536 | $frame = $this->putFinderPattern($frame, 0, $width - 7); | ||
2537 | // Separator | ||
2538 | $yOffset = $width - 7; | ||
2539 | for ($y=0; $y < 7; ++$y) { | ||
2540 | $frame[$y][7] = "\xc0"; | ||
2541 | $frame[$y][$width - 8] = "\xc0"; | ||
2542 | $frame[$yOffset][7] = "\xc0"; | ||
2543 | ++$yOffset; | ||
2544 | } | ||
2545 | $setPattern = str_repeat("\xc0", 8); | ||
2546 | $frame = $this->qrstrset($frame, 0, 7, $setPattern); | ||
2547 | $frame = $this->qrstrset($frame, $width-8, 7, $setPattern); | ||
2548 | $frame = $this->qrstrset($frame, 0, $width - 8, $setPattern); | ||
2549 | // Format info | ||
2550 | $setPattern = str_repeat("\x84", 9); | ||
2551 | $frame = $this->qrstrset($frame, 0, 8, $setPattern); | ||
2552 | $frame = $this->qrstrset($frame, $width - 8, 8, $setPattern, 8); | ||
2553 | $yOffset = $width - 8; | ||
2554 | for ($y=0; $y < 8; ++$y,++$yOffset) { | ||
2555 | $frame[$y][8] = "\x84"; | ||
2556 | $frame[$yOffset][8] = "\x84"; | ||
2557 | } | ||
2558 | // Timing pattern | ||
2559 | $wo = $width - 15; | ||
2560 | for ($i=1; $i < $wo; ++$i) { | ||
2561 | $frame[6][7+$i] = chr(0x90 | ($i & 1)); | ||
2562 | $frame[7+$i][6] = chr(0x90 | ($i & 1)); | ||
2563 | } | ||
2564 | // Alignment pattern | ||
2565 | $frame = $this->putAlignmentPattern($version, $frame, $width); | ||
2566 | // Version information | ||
2567 | if ($version >= 7) { | ||
2568 | $vinf = $this->getVersionPattern($version); | ||
2569 | $v = $vinf; | ||
2570 | for ($x=0; $x<6; ++$x) { | ||
2571 | for ($y=0; $y<3; ++$y) { | ||
2572 | $frame[($width - 11)+$y][$x] = chr(0x88 | ($v & 1)); | ||
2573 | $v = $v >> 1; | ||
2574 | } | ||
2575 | } | ||
2576 | $v = $vinf; | ||
2577 | for ($y=0; $y<6; ++$y) { | ||
2578 | for ($x=0; $x<3; ++$x) { | ||
2579 | $frame[$y][$x+($width - 11)] = chr(0x88 | ($v & 1)); | ||
2580 | $v = $v >> 1; | ||
2581 | } | ||
2582 | } | ||
2583 | } | ||
2584 | // and a little bit... | ||
2585 | $frame[$width - 8][8] = "\x81"; | ||
2586 | return $frame; | ||
2587 | } | ||
2588 | |||
2589 | /** | ||
2590 | * Set new frame for the specified version. | ||
2591 | * @param $version (int) version | ||
2592 | * @return Array of unsigned char. | ||
2593 | */ | ||
2594 | protected function newFrame($version) { | ||
2595 | if (($version < 1) OR ($version > QRSPEC_VERSION_MAX)) { | ||
2596 | return NULL; | ||
2597 | } | ||
2598 | if (!isset($this->frames[$version])) { | ||
2599 | $this->frames[$version] = $this->createFrame($version); | ||
2600 | } | ||
2601 | if (is_null($this->frames[$version])) { | ||
2602 | return NULL; | ||
2603 | } | ||
2604 | return $this->frames[$version]; | ||
2605 | } | ||
2606 | |||
2607 | /** | ||
2608 | * Return block number 0 | ||
2609 | * @param $spec (array) | ||
2610 | * @return int value | ||
2611 | */ | ||
2612 | protected function rsBlockNum($spec) { | ||
2613 | return ($spec[0] + $spec[3]); | ||
2614 | } | ||
2615 | |||
2616 | /** | ||
2617 | * Return block number 1 | ||
2618 | * @param $spec (array) | ||
2619 | * @return int value | ||
2620 | */ | ||
2621 | protected function rsBlockNum1($spec) { | ||
2622 | return $spec[0]; | ||
2623 | } | ||
2624 | |||
2625 | /** | ||
2626 | * Return data codes 1 | ||
2627 | * @param $spec (array) | ||
2628 | * @return int value | ||
2629 | */ | ||
2630 | protected function rsDataCodes1($spec) { | ||
2631 | return $spec[1]; | ||
2632 | } | ||
2633 | |||
2634 | /** | ||
2635 | * Return ecc codes 1 | ||
2636 | * @param $spec (array) | ||
2637 | * @return int value | ||
2638 | */ | ||
2639 | protected function rsEccCodes1($spec) { | ||
2640 | return $spec[2]; | ||
2641 | } | ||
2642 | |||
2643 | /** | ||
2644 | * Return block number 2 | ||
2645 | * @param $spec (array) | ||
2646 | * @return int value | ||
2647 | */ | ||
2648 | protected function rsBlockNum2($spec) { | ||
2649 | return $spec[3]; | ||
2650 | } | ||
2651 | |||
2652 | /** | ||
2653 | * Return data codes 2 | ||
2654 | * @param $spec (array) | ||
2655 | * @return int value | ||
2656 | */ | ||
2657 | protected function rsDataCodes2($spec) { | ||
2658 | return $spec[4]; | ||
2659 | } | ||
2660 | |||
2661 | /** | ||
2662 | * Return ecc codes 2 | ||
2663 | * @param $spec (array) | ||
2664 | * @return int value | ||
2665 | */ | ||
2666 | protected function rsEccCodes2($spec) { | ||
2667 | return $spec[2]; | ||
2668 | } | ||
2669 | |||
2670 | /** | ||
2671 | * Return data length | ||
2672 | * @param $spec (array) | ||
2673 | * @return int value | ||
2674 | */ | ||
2675 | protected function rsDataLength($spec) { | ||
2676 | return ($spec[0] * $spec[1]) + ($spec[3] * $spec[4]); | ||
2677 | } | ||
2678 | |||
2679 | /** | ||
2680 | * Return ecc length | ||
2681 | * @param $spec (array) | ||
2682 | * @return int value | ||
2683 | */ | ||
2684 | protected function rsEccLength($spec) { | ||
2685 | return ($spec[0] + $spec[3]) * $spec[2]; | ||
2686 | } | ||
2687 | |||
2688 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
2689 | |||
2690 | // QRrs | ||
2691 | |||
2692 | /** | ||
2693 | * Initialize a Reed-Solomon codec and add it to existing rsitems | ||
2694 | * @param $symsize (int) symbol size, bits | ||
2695 | * @param $gfpoly (int) Field generator polynomial coefficients | ||
2696 | * @param $fcr (int) first root of RS code generator polynomial, index form | ||
2697 | * @param $prim (int) primitive element to generate polynomial roots | ||
2698 | * @param $nroots (int) RS code generator polynomial degree (number of roots) | ||
2699 | * @param $pad (int) padding bytes at front of shortened block | ||
2700 | * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>. | ||
2701 | */ | ||
2702 | protected function init_rs($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) { | ||
2703 | foreach ($this->rsitems as $rs) { | ||
2704 | if (($rs['pad'] != $pad) OR ($rs['nroots'] != $nroots) OR ($rs['mm'] != $symsize) | ||
2705 | OR ($rs['gfpoly'] != $gfpoly) OR ($rs['fcr'] != $fcr) OR ($rs['prim'] != $prim)) { | ||
2706 | continue; | ||
2707 | } | ||
2708 | return $rs; | ||
2709 | } | ||
2710 | $rs = $this->init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad); | ||
2711 | array_unshift($this->rsitems, $rs); | ||
2712 | return $rs; | ||
2713 | } | ||
2714 | |||
2715 | // - - - - - - - - - - - - - - - - - - - - - - - - - | ||
2716 | |||
2717 | // QRrsItem | ||
2718 | |||
2719 | /** | ||
2720 | * modnn | ||
2721 | * @param $rs (array) RS values | ||
2722 | * @param $x (int) X position | ||
2723 | * @return int X osition | ||
2724 | */ | ||
2725 | protected function modnn($rs, $x) { | ||
2726 | while ($x >= $rs['nn']) { | ||
2727 | $x -= $rs['nn']; | ||
2728 | $x = ($x >> $rs['mm']) + ($x & $rs['nn']); | ||
2729 | } | ||
2730 | return $x; | ||
2731 | } | ||
2732 | |||
2733 | /** | ||
2734 | * Initialize a Reed-Solomon codec and returns an array of values. | ||
2735 | * @param $symsize (int) symbol size, bits | ||
2736 | * @param $gfpoly (int) Field generator polynomial coefficients | ||
2737 | * @param $fcr (int) first root of RS code generator polynomial, index form | ||
2738 | * @param $prim (int) primitive element to generate polynomial roots | ||
2739 | * @param $nroots (int) RS code generator polynomial degree (number of roots) | ||
2740 | * @param $pad (int) padding bytes at front of shortened block | ||
2741 | * @return array Array of RS values:<ul><li>mm = Bits per symbol;</li><li>nn = Symbols per block;</li><li>alpha_to = log lookup table array;</li><li>index_of = Antilog lookup table array;</li><li>genpoly = Generator polynomial array;</li><li>nroots = Number of generator;</li><li>roots = number of parity symbols;</li><li>fcr = First consecutive root, index form;</li><li>prim = Primitive element, index form;</li><li>iprim = prim-th root of 1, index form;</li><li>pad = Padding bytes in shortened block;</li><li>gfpoly</ul>. | ||
2742 | */ | ||
2743 | protected function init_rs_char($symsize, $gfpoly, $fcr, $prim, $nroots, $pad) { | ||
2744 | // Based on Reed solomon encoder by Phil Karn, KA9Q (GNU-LGPLv2) | ||
2745 | $rs = null; | ||
2746 | // Check parameter ranges | ||
2747 | if (($symsize < 0) OR ($symsize > 8)) { | ||
2748 | return $rs; | ||
2749 | } | ||
2750 | if (($fcr < 0) OR ($fcr >= (1<<$symsize))) { | ||
2751 | return $rs; | ||
2752 | } | ||
2753 | if (($prim <= 0) OR ($prim >= (1<<$symsize))) { | ||
2754 | return $rs; | ||
2755 | } | ||
2756 | if (($nroots < 0) OR ($nroots >= (1<<$symsize))) { | ||
2757 | return $rs; | ||
2758 | } | ||
2759 | if (($pad < 0) OR ($pad >= ((1<<$symsize) -1 - $nroots))) { | ||
2760 | return $rs; | ||
2761 | } | ||
2762 | $rs = array(); | ||
2763 | $rs['mm'] = $symsize; | ||
2764 | $rs['nn'] = (1 << $symsize) - 1; | ||
2765 | $rs['pad'] = $pad; | ||
2766 | $rs['alpha_to'] = array_fill(0, ($rs['nn'] + 1), 0); | ||
2767 | $rs['index_of'] = array_fill(0, ($rs['nn'] + 1), 0); | ||
2768 | // PHP style macro replacement ;) | ||
2769 | $NN =& $rs['nn']; | ||
2770 | $A0 =& $NN; | ||
2771 | // Generate Galois field lookup tables | ||
2772 | $rs['index_of'][0] = $A0; // log(zero) = -inf | ||
2773 | $rs['alpha_to'][$A0] = 0; // alpha**-inf = 0 | ||
2774 | $sr = 1; | ||
2775 | for ($i=0; $i<$rs['nn']; ++$i) { | ||
2776 | $rs['index_of'][$sr] = $i; | ||
2777 | $rs['alpha_to'][$i] = $sr; | ||
2778 | $sr <<= 1; | ||
2779 | if ($sr & (1 << $symsize)) { | ||
2780 | $sr ^= $gfpoly; | ||
2781 | } | ||
2782 | $sr &= $rs['nn']; | ||
2783 | } | ||
2784 | if ($sr != 1) { | ||
2785 | // field generator polynomial is not primitive! | ||
2786 | return NULL; | ||
2787 | } | ||
2788 | // Form RS code generator polynomial from its roots | ||
2789 | $rs['genpoly'] = array_fill(0, ($nroots + 1), 0); | ||
2790 | $rs['fcr'] = $fcr; | ||
2791 | $rs['prim'] = $prim; | ||
2792 | $rs['nroots'] = $nroots; | ||
2793 | $rs['gfpoly'] = $gfpoly; | ||
2794 | // Find prim-th root of 1, used in decoding | ||
2795 | for ($iprim=1; ($iprim % $prim) != 0; $iprim += $rs['nn']) { | ||
2796 | ; // intentional empty-body loop! | ||
2797 | } | ||
2798 | $rs['iprim'] = (int)($iprim / $prim); | ||
2799 | $rs['genpoly'][0] = 1; | ||
2800 | for ($i = 0,$root=$fcr*$prim; $i < $nroots; $i++, $root += $prim) { | ||
2801 | $rs['genpoly'][$i+1] = 1; | ||
2802 | // Multiply rs->genpoly[] by @**(root + x) | ||
2803 | for ($j = $i; $j > 0; --$j) { | ||
2804 | if ($rs['genpoly'][$j] != 0) { | ||
2805 | $rs['genpoly'][$j] = $rs['genpoly'][$j-1] ^ $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][$j]] + $root)]; | ||
2806 | } else { | ||
2807 | $rs['genpoly'][$j] = $rs['genpoly'][$j-1]; | ||
2808 | } | ||
2809 | } | ||
2810 | // rs->genpoly[0] can never be zero | ||
2811 | $rs['genpoly'][0] = $rs['alpha_to'][$this->modnn($rs, $rs['index_of'][$rs['genpoly'][0]] + $root)]; | ||
2812 | } | ||
2813 | // convert rs->genpoly[] to index form for quicker encoding | ||
2814 | for ($i = 0; $i <= $nroots; ++$i) { | ||
2815 | $rs['genpoly'][$i] = $rs['index_of'][$rs['genpoly'][$i]]; | ||
2816 | } | ||
2817 | return $rs; | ||
2818 | } | ||
2819 | |||
2820 | /** | ||
2821 | * Encode a Reed-Solomon codec and returns the parity array | ||
2822 | * @param $rs (array) RS values | ||
2823 | * @param $data (array) data | ||
2824 | * @param $parity (array) parity | ||
2825 | * @return parity array | ||
2826 | */ | ||
2827 | protected function encode_rs_char($rs, $data, $parity) { | ||
2828 | $MM =& $rs['mm']; // bits per symbol | ||
2829 | $NN =& $rs['nn']; // the total number of symbols in a RS block | ||
2830 | $ALPHA_TO =& $rs['alpha_to']; // the address of an array of NN elements to convert Galois field elements in index (log) form to polynomial form | ||
2831 | $INDEX_OF =& $rs['index_of']; // the address of an array of NN elements to convert Galois field elements in polynomial form to index (log) form | ||
2832 | $GENPOLY =& $rs['genpoly']; // an array of NROOTS+1 elements containing the generator polynomial in index form | ||
2833 | $NROOTS =& $rs['nroots']; // the number of roots in the RS code generator polynomial, which is the same as the number of parity symbols in a block | ||
2834 | $FCR =& $rs['fcr']; // first consecutive root, index form | ||
2835 | $PRIM =& $rs['prim']; // primitive element, index form | ||
2836 | $IPRIM =& $rs['iprim']; // prim-th root of 1, index form | ||
2837 | $PAD =& $rs['pad']; // the number of pad symbols in a block | ||
2838 | $A0 =& $NN; | ||
2839 | $parity = array_fill(0, $NROOTS, 0); | ||
2840 | for ($i=0; $i < ($NN - $NROOTS - $PAD); $i++) { | ||
2841 | $feedback = $INDEX_OF[$data[$i] ^ $parity[0]]; | ||
2842 | if ($feedback != $A0) { | ||
2843 | // feedback term is non-zero | ||
2844 | // This line is unnecessary when GENPOLY[NROOTS] is unity, as it must | ||
2845 | // always be for the polynomials constructed by init_rs() | ||
2846 | $feedback = $this->modnn($rs, $NN - $GENPOLY[$NROOTS] + $feedback); | ||
2847 | for ($j=1; $j < $NROOTS; ++$j) { | ||
2848 | $parity[$j] ^= $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[($NROOTS - $j)])]; | ||
2849 | } | ||
2850 | } | ||
2851 | // Shift | ||
2852 | array_shift($parity); | ||
2853 | if ($feedback != $A0) { | ||
2854 | array_push($parity, $ALPHA_TO[$this->modnn($rs, $feedback + $GENPOLY[0])]); | ||
2855 | } else { | ||
2856 | array_push($parity, 0); | ||
2857 | } | ||
2858 | } | ||
2859 | return $parity; | ||
2860 | } | ||
2861 | |||
2862 | } // end QRcode class | ||
2863 | |||
2864 | //============================================================+ | ||
2865 | // END OF FILE | ||
2866 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/sRGB.icc b/inc/3rdparty/libraries/tcpdf/include/sRGB.icc new file mode 100644 index 00000000..1d8f7419 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/sRGB.icc | |||
Binary files differ | |||
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php new file mode 100644 index 00000000..77f1c4cc --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_colors.php | |||
@@ -0,0 +1,462 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : tcpdf_colors.php | ||
4 | // Version : 1.0.004 | ||
5 | // Begin : 2002-04-09 | ||
6 | // Last Update : 2014-04-25 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2002-2013 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the GNU Lesser General Public License | ||
25 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | ||
26 | // | ||
27 | // See LICENSE.TXT file for more information. | ||
28 | // ------------------------------------------------------------------- | ||
29 | // | ||
30 | // Description : Array of WEB safe colors | ||
31 | // | ||
32 | //============================================================+ | ||
33 | |||
34 | /** | ||
35 | * @file | ||
36 | * PHP color class for TCPDF | ||
37 | * @author Nicola Asuni | ||
38 | * @package com.tecnick.tcpdf | ||
39 | */ | ||
40 | |||
41 | /** | ||
42 | * @class TCPDF_COLORS | ||
43 | * PHP color class for TCPDF | ||
44 | * @package com.tecnick.tcpdf | ||
45 | * @version 1.0.004 | ||
46 | * @author Nicola Asuni - info@tecnick.com | ||
47 | */ | ||
48 | class TCPDF_COLORS { | ||
49 | |||
50 | /** | ||
51 | * Array of WEB safe colors | ||
52 | * @public static | ||
53 | */ | ||
54 | public static $webcolor = array ( | ||
55 | 'aliceblue' => 'f0f8ff', | ||
56 | 'antiquewhite' => 'faebd7', | ||
57 | 'aqua' => '00ffff', | ||
58 | 'aquamarine' => '7fffd4', | ||
59 | 'azure' => 'f0ffff', | ||
60 | 'beige' => 'f5f5dc', | ||
61 | 'bisque' => 'ffe4c4', | ||
62 | 'black' => '000000', | ||
63 | 'blanchedalmond' => 'ffebcd', | ||
64 | 'blue' => '0000ff', | ||
65 | 'blueviolet' => '8a2be2', | ||
66 | 'brown' => 'a52a2a', | ||
67 | 'burlywood' => 'deb887', | ||
68 | 'cadetblue' => '5f9ea0', | ||
69 | 'chartreuse' => '7fff00', | ||
70 | 'chocolate' => 'd2691e', | ||
71 | 'coral' => 'ff7f50', | ||
72 | 'cornflowerblue' => '6495ed', | ||
73 | 'cornsilk' => 'fff8dc', | ||
74 | 'crimson' => 'dc143c', | ||
75 | 'cyan' => '00ffff', | ||
76 | 'darkblue' => '00008b', | ||
77 | 'darkcyan' => '008b8b', | ||
78 | 'darkgoldenrod' => 'b8860b', | ||
79 | 'dkgray' => 'a9a9a9', | ||
80 | 'darkgray' => 'a9a9a9', | ||
81 | 'darkgrey' => 'a9a9a9', | ||
82 | 'darkgreen' => '006400', | ||
83 | 'darkkhaki' => 'bdb76b', | ||
84 | 'darkmagenta' => '8b008b', | ||
85 | 'darkolivegreen' => '556b2f', | ||
86 | 'darkorange' => 'ff8c00', | ||
87 | 'darkorchid' => '9932cc', | ||
88 | 'darkred' => '8b0000', | ||
89 | 'darksalmon' => 'e9967a', | ||
90 | 'darkseagreen' => '8fbc8f', | ||
91 | 'darkslateblue' => '483d8b', | ||
92 | 'darkslategray' => '2f4f4f', | ||
93 | 'darkslategrey' => '2f4f4f', | ||
94 | 'darkturquoise' => '00ced1', | ||
95 | 'darkviolet' => '9400d3', | ||
96 | 'deeppink' => 'ff1493', | ||
97 | 'deepskyblue' => '00bfff', | ||
98 | 'dimgray' => '696969', | ||
99 | 'dimgrey' => '696969', | ||
100 | 'dodgerblue' => '1e90ff', | ||
101 | 'firebrick' => 'b22222', | ||
102 | 'floralwhite' => 'fffaf0', | ||
103 | 'forestgreen' => '228b22', | ||
104 | 'fuchsia' => 'ff00ff', | ||
105 | 'gainsboro' => 'dcdcdc', | ||
106 | 'ghostwhite' => 'f8f8ff', | ||
107 | 'gold' => 'ffd700', | ||
108 | 'goldenrod' => 'daa520', | ||
109 | 'gray' => '808080', | ||
110 | 'grey' => '808080', | ||
111 | 'green' => '008000', | ||
112 | 'greenyellow' => 'adff2f', | ||
113 | 'honeydew' => 'f0fff0', | ||
114 | 'hotpink' => 'ff69b4', | ||
115 | 'indianred' => 'cd5c5c', | ||
116 | 'indigo' => '4b0082', | ||
117 | 'ivory' => 'fffff0', | ||
118 | 'khaki' => 'f0e68c', | ||
119 | 'lavender' => 'e6e6fa', | ||
120 | 'lavenderblush' => 'fff0f5', | ||
121 | 'lawngreen' => '7cfc00', | ||
122 | 'lemonchiffon' => 'fffacd', | ||
123 | 'lightblue' => 'add8e6', | ||
124 | 'lightcoral' => 'f08080', | ||
125 | 'lightcyan' => 'e0ffff', | ||
126 | 'lightgoldenrodyellow' => 'fafad2', | ||
127 | 'ltgray' => 'd3d3d3', | ||
128 | 'lightgray' => 'd3d3d3', | ||
129 | 'lightgrey' => 'd3d3d3', | ||
130 | 'lightgreen' => '90ee90', | ||
131 | 'lightpink' => 'ffb6c1', | ||
132 | 'lightsalmon' => 'ffa07a', | ||
133 | 'lightseagreen' => '20b2aa', | ||
134 | 'lightskyblue' => '87cefa', | ||
135 | 'lightslategray' => '778899', | ||
136 | 'lightslategrey' => '778899', | ||
137 | 'lightsteelblue' => 'b0c4de', | ||
138 | 'lightyellow' => 'ffffe0', | ||
139 | 'lime' => '00ff00', | ||
140 | 'limegreen' => '32cd32', | ||
141 | 'linen' => 'faf0e6', | ||
142 | 'magenta' => 'ff00ff', | ||
143 | 'maroon' => '800000', | ||
144 | 'mediumaquamarine' => '66cdaa', | ||
145 | 'mediumblue' => '0000cd', | ||
146 | 'mediumorchid' => 'ba55d3', | ||
147 | 'mediumpurple' => '9370d8', | ||
148 | 'mediumseagreen' => '3cb371', | ||
149 | 'mediumslateblue' => '7b68ee', | ||
150 | 'mediumspringgreen' => '00fa9a', | ||
151 | 'mediumturquoise' => '48d1cc', | ||
152 | 'mediumvioletred' => 'c71585', | ||
153 | 'midnightblue' => '191970', | ||
154 | 'mintcream' => 'f5fffa', | ||
155 | 'mistyrose' => 'ffe4e1', | ||
156 | 'moccasin' => 'ffe4b5', | ||
157 | 'navajowhite' => 'ffdead', | ||
158 | 'navy' => '000080', | ||
159 | 'oldlace' => 'fdf5e6', | ||
160 | 'olive' => '808000', | ||
161 | 'olivedrab' => '6b8e23', | ||
162 | 'orange' => 'ffa500', | ||
163 | 'orangered' => 'ff4500', | ||
164 | 'orchid' => 'da70d6', | ||
165 | 'palegoldenrod' => 'eee8aa', | ||
166 | 'palegreen' => '98fb98', | ||
167 | 'paleturquoise' => 'afeeee', | ||
168 | 'palevioletred' => 'd87093', | ||
169 | 'papayawhip' => 'ffefd5', | ||
170 | 'peachpuff' => 'ffdab9', | ||
171 | 'peru' => 'cd853f', | ||
172 | 'pink' => 'ffc0cb', | ||
173 | 'plum' => 'dda0dd', | ||
174 | 'powderblue' => 'b0e0e6', | ||
175 | 'purple' => '800080', | ||
176 | 'red' => 'ff0000', | ||
177 | 'rosybrown' => 'bc8f8f', | ||
178 | 'royalblue' => '4169e1', | ||
179 | 'saddlebrown' => '8b4513', | ||
180 | 'salmon' => 'fa8072', | ||
181 | 'sandybrown' => 'f4a460', | ||
182 | 'seagreen' => '2e8b57', | ||
183 | 'seashell' => 'fff5ee', | ||
184 | 'sienna' => 'a0522d', | ||
185 | 'silver' => 'c0c0c0', | ||
186 | 'skyblue' => '87ceeb', | ||
187 | 'slateblue' => '6a5acd', | ||
188 | 'slategray' => '708090', | ||
189 | 'slategrey' => '708090', | ||
190 | 'snow' => 'fffafa', | ||
191 | 'springgreen' => '00ff7f', | ||
192 | 'steelblue' => '4682b4', | ||
193 | 'tan' => 'd2b48c', | ||
194 | 'teal' => '008080', | ||
195 | 'thistle' => 'd8bfd8', | ||
196 | 'tomato' => 'ff6347', | ||
197 | 'turquoise' => '40e0d0', | ||
198 | 'violet' => 'ee82ee', | ||
199 | 'wheat' => 'f5deb3', | ||
200 | 'white' => 'ffffff', | ||
201 | 'whitesmoke' => 'f5f5f5', | ||
202 | 'yellow' => 'ffff00', | ||
203 | 'yellowgreen' => '9acd32' | ||
204 | ); // end of web colors | ||
205 | |||
206 | /** | ||
207 | * Array of valid JavaScript color names | ||
208 | * @public static | ||
209 | */ | ||
210 | public static $jscolor = array ('transparent', 'black', 'white', 'red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'dkGray', 'gray', 'ltGray'); | ||
211 | |||
212 | /** | ||
213 | * Array of Spot colors (C,M,Y,K,name) | ||
214 | * Color keys must be in lowercase and without spaces. | ||
215 | * As long as no open standard for spot colours exists, you have to buy a colour book by one of the colour manufacturers and insert the values and names of spot colours directly. | ||
216 | * Common industry standard spot colors are: ANPA-COLOR, DIC, FOCOLTONE, GCMI, HKS, PANTONE, TOYO, TRUMATCH. | ||
217 | * @public static | ||
218 | */ | ||
219 | public static $spotcolor = array ( | ||
220 | // special registration colors | ||
221 | 'none' => array( 0, 0, 0, 0, 'None'), | ||
222 | 'all' => array(100, 100, 100, 100, 'All'), | ||
223 | // standard CMYK colors | ||
224 | 'cyan' => array(100, 0, 0, 0, 'Cyan'), | ||
225 | 'magenta' => array( 0, 100, 0, 0, 'Magenta'), | ||
226 | 'yellow' => array( 0, 0, 100, 0, 'Yellow'), | ||
227 | 'key' => array( 0, 0, 0, 100, 'Key'), | ||
228 | // alias | ||
229 | 'white' => array( 0, 0, 0, 0, 'White'), | ||
230 | 'black' => array( 0, 0, 0, 100, 'Black'), | ||
231 | // standard RGB colors | ||
232 | 'red' => array( 0, 100, 100, 0, 'Red'), | ||
233 | 'green' => array(100, 0, 100, 0, 'Green'), | ||
234 | 'blue' => array(100, 100, 0, 0, 'Blue'), | ||
235 | // Add here standard spot colors or dynamically define them with AddSpotColor() | ||
236 | // ... | ||
237 | ); // end of spot colors | ||
238 | |||
239 | // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
240 | |||
241 | /** | ||
242 | * Return the Spot color array. | ||
243 | * @param $name (string) Name of the spot color. | ||
244 | * @param $spotc (array) Reference to an array of spot colors. | ||
245 | * @return (array) Spot color array or false if not defined. | ||
246 | * @since 5.9.125 (2011-10-03) | ||
247 | * @public static | ||
248 | */ | ||
249 | public static function getSpotColor($name, &$spotc) { | ||
250 | if (isset($spotc[$name])) { | ||
251 | return $spotc[$name]; | ||
252 | } | ||
253 | $color = preg_replace('/[\s]*/', '', $name); // remove extra spaces | ||
254 | $color = strtolower($color); | ||
255 | if (isset(self::$spotcolor[$color])) { | ||
256 | if (!isset($spotc[$name])) { | ||
257 | $i = (1 + count($spotc)); | ||
258 | $spotc[$name] = array('C' => self::$spotcolor[$color][0], 'M' => self::$spotcolor[$color][1], 'Y' => self::$spotcolor[$color][2], 'K' => self::$spotcolor[$color][3], 'name' => self::$spotcolor[$color][4], 'i' => $i); | ||
259 | } | ||
260 | return $spotc[self::$spotcolor[$color][4]]; | ||
261 | } | ||
262 | return false; | ||
263 | } | ||
264 | |||
265 | /** | ||
266 | * Returns an array (RGB or CMYK) from an html color name, or a six-digit (i.e. #3FE5AA), or three-digit (i.e. #7FF) hexadecimal color, or a javascript color array, or javascript color name. | ||
267 | * @param $hcolor (string) HTML color. | ||
268 | * @param $spotc (array) Reference to an array of spot colors. | ||
269 | * @param $defcol (array) Color to return in case of error. | ||
270 | * @return array RGB or CMYK color, or false in case of error. | ||
271 | * @public static | ||
272 | */ | ||
273 | public static function convertHTMLColorToDec($hcolor, &$spotc, $defcol=array('R'=>128,'G'=>128,'B'=>128)) { | ||
274 | $color = preg_replace('/[\s]*/', '', $hcolor); // remove extra spaces | ||
275 | $color = strtolower($color); | ||
276 | // check for javascript color array syntax | ||
277 | if (strpos($color, '[') !== false) { | ||
278 | if (preg_match('/[\[][\"\'](t|g|rgb|cmyk)[\"\'][\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\,]?([0-9\.]*)[\]]/', $color, $m) > 0) { | ||
279 | $returncolor = array(); | ||
280 | switch ($m[1]) { | ||
281 | case 'cmyk': { | ||
282 | // RGB | ||
283 | $returncolor['C'] = max(0, min(100, (floatval($m[2]) * 100))); | ||
284 | $returncolor['M'] = max(0, min(100, (floatval($m[3]) * 100))); | ||
285 | $returncolor['Y'] = max(0, min(100, (floatval($m[4]) * 100))); | ||
286 | $returncolor['K'] = max(0, min(100, (floatval($m[5]) * 100))); | ||
287 | break; | ||
288 | } | ||
289 | case 'rgb': { | ||
290 | // RGB | ||
291 | $returncolor['R'] = max(0, min(255, (floatval($m[2]) * 255))); | ||
292 | $returncolor['G'] = max(0, min(255, (floatval($m[3]) * 255))); | ||
293 | $returncolor['B'] = max(0, min(255, (floatval($m[4]) * 255))); | ||
294 | break; | ||
295 | } | ||
296 | case 'g': { | ||
297 | // grayscale | ||
298 | $returncolor['G'] = max(0, min(255, (floatval($m[2]) * 255))); | ||
299 | break; | ||
300 | } | ||
301 | case 't': | ||
302 | default: { | ||
303 | // transparent (empty array) | ||
304 | break; | ||
305 | } | ||
306 | } | ||
307 | return $returncolor; | ||
308 | } | ||
309 | } elseif ((substr($color, 0, 4) != 'cmyk') AND (substr($color, 0, 3) != 'rgb') AND (($dotpos = strpos($color, '.')) !== false)) { | ||
310 | // remove class parent (i.e.: color.red) | ||
311 | $color = substr($color, ($dotpos + 1)); | ||
312 | if ($color == 'transparent') { | ||
313 | // transparent (empty array) | ||
314 | return array(); | ||
315 | } | ||
316 | } | ||
317 | if (strlen($color) == 0) { | ||
318 | return $defcol; | ||
319 | } | ||
320 | // RGB ARRAY | ||
321 | if (substr($color, 0, 3) == 'rgb') { | ||
322 | $codes = substr($color, 4); | ||
323 | $codes = str_replace(')', '', $codes); | ||
324 | $returncolor = explode(',', $codes); | ||
325 | foreach ($returncolor as $key => $val) { | ||
326 | if (strpos($val, '%') > 0) { | ||
327 | // percentage | ||
328 | $returncolor[$key] = (255 * intval($val) / 100); | ||
329 | } else { | ||
330 | $returncolor[$key] = intval($val); | ||
331 | } | ||
332 | // normalize value | ||
333 | $returncolor[$key] = max(0, min(255, $returncolor[$key])); | ||
334 | } | ||
335 | return $returncolor; | ||
336 | } | ||
337 | // CMYK ARRAY | ||
338 | if (substr($color, 0, 4) == 'cmyk') { | ||
339 | $codes = substr($color, 5); | ||
340 | $codes = str_replace(')', '', $codes); | ||
341 | $returncolor = explode(',', $codes); | ||
342 | foreach ($returncolor as $key => $val) { | ||
343 | if (strpos($val, '%') !== false) { | ||
344 | // percentage | ||
345 | $returncolor[$key] = (100 * intval($val) / 100); | ||
346 | } else { | ||
347 | $returncolor[$key] = intval($val); | ||
348 | } | ||
349 | // normalize value | ||
350 | $returncolor[$key] = max(0, min(100, $returncolor[$key])); | ||
351 | } | ||
352 | return $returncolor; | ||
353 | } | ||
354 | if ($color[0] != '#') { | ||
355 | // COLOR NAME | ||
356 | if (isset(self::$webcolor[$color])) { | ||
357 | // web color | ||
358 | $color_code = self::$webcolor[$color]; | ||
359 | } else { | ||
360 | // spot color | ||
361 | $returncolor = self::getSpotColor($color, $spotc); | ||
362 | if ($returncolor === false) { | ||
363 | $returncolor = $defcol; | ||
364 | } | ||
365 | return $returncolor; | ||
366 | } | ||
367 | } else { | ||
368 | $color_code = substr($color, 1); | ||
369 | } | ||
370 | // HEXADECIMAL REPRESENTATION | ||
371 | switch (strlen($color_code)) { | ||
372 | case 3: { | ||
373 | // 3-digit RGB hexadecimal representation | ||
374 | $r = substr($color_code, 0, 1); | ||
375 | $g = substr($color_code, 1, 1); | ||
376 | $b = substr($color_code, 2, 1); | ||
377 | $returncolor = array(); | ||
378 | $returncolor['R'] = max(0, min(255, hexdec($r.$r))); | ||
379 | $returncolor['G'] = max(0, min(255, hexdec($g.$g))); | ||
380 | $returncolor['B'] = max(0, min(255, hexdec($b.$b))); | ||
381 | break; | ||
382 | } | ||
383 | case 6: { | ||
384 | // 6-digit RGB hexadecimal representation | ||
385 | $returncolor = array(); | ||
386 | $returncolor['R'] = max(0, min(255, hexdec(substr($color_code, 0, 2)))); | ||
387 | $returncolor['G'] = max(0, min(255, hexdec(substr($color_code, 2, 2)))); | ||
388 | $returncolor['B'] = max(0, min(255, hexdec(substr($color_code, 4, 2)))); | ||
389 | break; | ||
390 | } | ||
391 | case 8: { | ||
392 | // 8-digit CMYK hexadecimal representation | ||
393 | $returncolor = array(); | ||
394 | $returncolor['C'] = max(0, min(100, round(hexdec(substr($color_code, 0, 2)) / 2.55))); | ||
395 | $returncolor['M'] = max(0, min(100, round(hexdec(substr($color_code, 2, 2)) / 2.55))); | ||
396 | $returncolor['Y'] = max(0, min(100, round(hexdec(substr($color_code, 4, 2)) / 2.55))); | ||
397 | $returncolor['K'] = max(0, min(100, round(hexdec(substr($color_code, 6, 2)) / 2.55))); | ||
398 | break; | ||
399 | } | ||
400 | default: { | ||
401 | $returncolor = $defcol; | ||
402 | break; | ||
403 | } | ||
404 | } | ||
405 | return $returncolor; | ||
406 | } | ||
407 | |||
408 | /** | ||
409 | * Convert a color array into a string representation. | ||
410 | * @param $c (array) Array of colors. | ||
411 | * @return (string) The color array representation. | ||
412 | * @since 5.9.137 (2011-12-01) | ||
413 | * @public static | ||
414 | */ | ||
415 | public static function getColorStringFromArray($c) { | ||
416 | $c = array_values($c); | ||
417 | $color = '['; | ||
418 | switch (count($c)) { | ||
419 | case 4: { | ||
420 | // CMYK | ||
421 | $color .= sprintf('%F %F %F %F', (max(0, min(100, floatval($c[0]))) / 100), (max(0, min(100, floatval($c[1]))) / 100), (max(0, min(100, floatval($c[2]))) / 100), (max(0, min(100, floatval($c[3]))) / 100)); | ||
422 | break; | ||
423 | } | ||
424 | case 3: { | ||
425 | // RGB | ||
426 | $color .= sprintf('%F %F %F', (max(0, min(255, floatval($c[0]))) / 255), (max(0, min(255, floatval($c[1]))) / 255), (max(0, min(255, floatval($c[2]))) / 255)); | ||
427 | break; | ||
428 | } | ||
429 | case 1: { | ||
430 | // grayscale | ||
431 | $color .= sprintf('%F', (max(0, min(255, floatval($c[0]))) / 255)); | ||
432 | break; | ||
433 | } | ||
434 | } | ||
435 | $color .= ']'; | ||
436 | return $color; | ||
437 | } | ||
438 | |||
439 | /** | ||
440 | * Convert color to javascript color. | ||
441 | * @param $color (string) color name or "#RRGGBB" | ||
442 | * @protected | ||
443 | * @since 2.1.002 (2008-02-12) | ||
444 | * @public static | ||
445 | */ | ||
446 | public static function _JScolor($color) { | ||
447 | if (substr($color, 0, 1) == '#') { | ||
448 | return sprintf("['RGB',%F,%F,%F]", (hexdec(substr($color, 1, 2)) / 255), (hexdec(substr($color, 3, 2)) / 255), (hexdec(substr($color, 5, 2)) / 255)); | ||
449 | } | ||
450 | if (!in_array($color, self::$jscolor)) { | ||
451 | // default transparent color | ||
452 | $color = $jscolor[0]; | ||
453 | } | ||
454 | return 'color.'.$color; | ||
455 | } | ||
456 | |||
457 | |||
458 | } // END OF TCPDF_COLORS CLASS | ||
459 | |||
460 | //============================================================+ | ||
461 | // END OF FILE | ||
462 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php new file mode 100644 index 00000000..96584db5 --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_filters.php | |||
@@ -0,0 +1,481 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : tcpdf_filters.php | ||
4 | // Version : 1.0.001 | ||
5 | // Begin : 2011-05-23 | ||
6 | // Last Update : 2014-04-25 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2011-2013 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the License | ||
25 | // along with TCPDF. If not, see | ||
26 | // <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>. | ||
27 | // | ||
28 | // See LICENSE.TXT file for more information. | ||
29 | // ------------------------------------------------------------------- | ||
30 | // | ||
31 | // Description : This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters). | ||
32 | // | ||
33 | //============================================================+ | ||
34 | |||
35 | /** | ||
36 | * @file | ||
37 | * This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).<br> | ||
38 | * @package com.tecnick.tcpdf | ||
39 | * @author Nicola Asuni | ||
40 | * @version 1.0.001 | ||
41 | */ | ||
42 | |||
43 | /** | ||
44 | * @class TCPDF_FILTERS | ||
45 | * This is a PHP class for decoding common PDF filters (PDF 32000-2008 - 7.4 Filters).<br> | ||
46 | * @package com.tecnick.tcpdf | ||
47 | * @brief This is a PHP class for decoding common PDF filters. | ||
48 | * @version 1.0.001 | ||
49 | * @author Nicola Asuni - info@tecnick.com | ||
50 | */ | ||
51 | class TCPDF_FILTERS { | ||
52 | |||
53 | /** | ||
54 | * Define a list of available filter decoders. | ||
55 | * @private static | ||
56 | */ | ||
57 | private static $available_filters = array('ASCIIHexDecode', 'ASCII85Decode', 'LZWDecode', 'FlateDecode', 'RunLengthDecode'); | ||
58 | |||
59 | // ----------------------------------------------------------------------------- | ||
60 | |||
61 | /** | ||
62 | * Get a list of available decoding filters. | ||
63 | * @return (array) Array of available filter decoders. | ||
64 | * @since 1.0.000 (2011-05-23) | ||
65 | * @public static | ||
66 | */ | ||
67 | public static function getAvailableFilters() { | ||
68 | return self::$available_filters; | ||
69 | } | ||
70 | |||
71 | /** | ||
72 | * Decode data using the specified filter type. | ||
73 | * @param $filter (string) Filter name. | ||
74 | * @param $data (string) Data to decode. | ||
75 | * @return Decoded data string. | ||
76 | * @since 1.0.000 (2011-05-23) | ||
77 | * @public static | ||
78 | */ | ||
79 | public static function decodeFilter($filter, $data) { | ||
80 | switch ($filter) { | ||
81 | case 'ASCIIHexDecode': { | ||
82 | return self::decodeFilterASCIIHexDecode($data); | ||
83 | break; | ||
84 | } | ||
85 | case 'ASCII85Decode': { | ||
86 | return self::decodeFilterASCII85Decode($data); | ||
87 | break; | ||
88 | } | ||
89 | case 'LZWDecode': { | ||
90 | return self::decodeFilterLZWDecode($data); | ||
91 | break; | ||
92 | } | ||
93 | case 'FlateDecode': { | ||
94 | return self::decodeFilterFlateDecode($data); | ||
95 | break; | ||
96 | } | ||
97 | case 'RunLengthDecode': { | ||
98 | return self::decodeFilterRunLengthDecode($data); | ||
99 | break; | ||
100 | } | ||
101 | case 'CCITTFaxDecode': { | ||
102 | return self::decodeFilterCCITTFaxDecode($data); | ||
103 | break; | ||
104 | } | ||
105 | case 'JBIG2Decode': { | ||
106 | return self::decodeFilterJBIG2Decode($data); | ||
107 | break; | ||
108 | } | ||
109 | case 'DCTDecode': { | ||
110 | return self::decodeFilterDCTDecode($data); | ||
111 | break; | ||
112 | } | ||
113 | case 'JPXDecode': { | ||
114 | return self::decodeFilterJPXDecode($data); | ||
115 | break; | ||
116 | } | ||
117 | case 'Crypt': { | ||
118 | return self::decodeFilterCrypt($data); | ||
119 | break; | ||
120 | } | ||
121 | default: { | ||
122 | return self::decodeFilterStandard($data); | ||
123 | break; | ||
124 | } | ||
125 | } | ||
126 | } | ||
127 | |||
128 | // --- FILTERS (PDF 32000-2008 - 7.4 Filters) ------------------------------ | ||
129 | |||
130 | /** | ||
131 | * Standard | ||
132 | * Default decoding filter (leaves data unchanged). | ||
133 | * @param $data (string) Data to decode. | ||
134 | * @return Decoded data string. | ||
135 | * @since 1.0.000 (2011-05-23) | ||
136 | * @public static | ||
137 | */ | ||
138 | public static function decodeFilterStandard($data) { | ||
139 | return $data; | ||
140 | } | ||
141 | |||
142 | /** | ||
143 | * ASCIIHexDecode | ||
144 | * Decodes data encoded in an ASCII hexadecimal representation, reproducing the original binary data. | ||
145 | * @param $data (string) Data to decode. | ||
146 | * @return Decoded data string. | ||
147 | * @since 1.0.000 (2011-05-23) | ||
148 | * @public static | ||
149 | */ | ||
150 | public static function decodeFilterASCIIHexDecode($data) { | ||
151 | // intialize string to return | ||
152 | $decoded = ''; | ||
153 | // all white-space characters shall be ignored | ||
154 | $data = preg_replace('/[\s]/', '', $data); | ||
155 | // check for EOD character: GREATER-THAN SIGN (3Eh) | ||
156 | $eod = strpos($data, '>'); | ||
157 | if ($eod !== false) { | ||
158 | // remove EOD and extra data (if any) | ||
159 | $data = substr($data, 0, $eod); | ||
160 | $eod = true; | ||
161 | } | ||
162 | // get data length | ||
163 | $data_length = strlen($data); | ||
164 | if (($data_length % 2) != 0) { | ||
165 | // odd number of hexadecimal digits | ||
166 | if ($eod) { | ||
167 | // EOD shall behave as if a 0 (zero) followed the last digit | ||
168 | $data = substr($data, 0, -1).'0'.substr($data, -1); | ||
169 | } else { | ||
170 | self::Error('decodeFilterASCIIHexDecode: invalid code'); | ||
171 | } | ||
172 | } | ||
173 | // check for invalid characters | ||
174 | if (preg_match('/[^a-fA-F\d]/', $data) > 0) { | ||
175 | self::Error('decodeFilterASCIIHexDecode: invalid code'); | ||
176 | } | ||
177 | // get one byte of binary data for each pair of ASCII hexadecimal digits | ||
178 | $decoded = pack('H*', $data); | ||
179 | return $decoded; | ||
180 | } | ||
181 | |||
182 | /** | ||
183 | * ASCII85Decode | ||
184 | * Decodes data encoded in an ASCII base-85 representation, reproducing the original binary data. | ||
185 | * @param $data (string) Data to decode. | ||
186 | * @return Decoded data string. | ||
187 | * @since 1.0.000 (2011-05-23) | ||
188 | * @public static | ||
189 | */ | ||
190 | public static function decodeFilterASCII85Decode($data) { | ||
191 | // intialize string to return | ||
192 | $decoded = ''; | ||
193 | // all white-space characters shall be ignored | ||
194 | $data = preg_replace('/[\s]/', '', $data); | ||
195 | // remove start sequence 2-character sequence <~ (3Ch)(7Eh) | ||
196 | if (strpos($data, '<~') !== false) { | ||
197 | // remove EOD and extra data (if any) | ||
198 | $data = substr($data, 2); | ||
199 | } | ||
200 | // check for EOD: 2-character sequence ~> (7Eh)(3Eh) | ||
201 | $eod = strpos($data, '~>'); | ||
202 | if ($eod !== false) { | ||
203 | // remove EOD and extra data (if any) | ||
204 | $data = substr($data, 0, $eod); | ||
205 | } | ||
206 | // data length | ||
207 | $data_length = strlen($data); | ||
208 | // check for invalid characters | ||
209 | if (preg_match('/[^\x21-\x75,\x74]/', $data) > 0) { | ||
210 | self::Error('decodeFilterASCII85Decode: invalid code'); | ||
211 | } | ||
212 | // z sequence | ||
213 | $zseq = chr(0).chr(0).chr(0).chr(0); | ||
214 | // position inside a group of 4 bytes (0-3) | ||
215 | $group_pos = 0; | ||
216 | $tuple = 0; | ||
217 | $pow85 = array((85*85*85*85), (85*85*85), (85*85), 85, 1); | ||
218 | $last_pos = ($data_length - 1); | ||
219 | // for each byte | ||
220 | for ($i = 0; $i < $data_length; ++$i) { | ||
221 | // get char value | ||
222 | $char = ord($data[$i]); | ||
223 | if ($char == 122) { // 'z' | ||
224 | if ($group_pos == 0) { | ||
225 | $decoded .= $zseq; | ||
226 | } else { | ||
227 | self::Error('decodeFilterASCII85Decode: invalid code'); | ||
228 | } | ||
229 | } else { | ||
230 | // the value represented by a group of 5 characters should never be greater than 2^32 - 1 | ||
231 | $tuple += (($char - 33) * $pow85[$group_pos]); | ||
232 | if ($group_pos == 4) { | ||
233 | $decoded .= chr($tuple >> 24).chr($tuple >> 16).chr($tuple >> 8).chr($tuple); | ||
234 | $tuple = 0; | ||
235 | $group_pos = 0; | ||
236 | } else { | ||
237 | ++$group_pos; | ||
238 | } | ||
239 | } | ||
240 | } | ||
241 | if ($group_pos > 1) { | ||
242 | $tuple += $pow85[($group_pos - 1)]; | ||
243 | } | ||
244 | // last tuple (if any) | ||
245 | switch ($group_pos) { | ||
246 | case 4: { | ||
247 | $decoded .= chr($tuple >> 24).chr($tuple >> 16).chr($tuple >> 8); | ||
248 | break; | ||
249 | } | ||
250 | case 3: { | ||
251 | $decoded .= chr($tuple >> 24).chr($tuple >> 16); | ||
252 | break; | ||
253 | } | ||
254 | case 2: { | ||
255 | $decoded .= chr($tuple >> 24); | ||
256 | break; | ||
257 | } | ||
258 | case 1: { | ||
259 | self::Error('decodeFilterASCII85Decode: invalid code'); | ||
260 | break; | ||
261 | } | ||
262 | } | ||
263 | return $decoded; | ||
264 | } | ||
265 | |||
266 | /** | ||
267 | * LZWDecode | ||
268 | * Decompresses data encoded using the LZW (Lempel-Ziv-Welch) adaptive compression method, reproducing the original text or binary data. | ||
269 | * @param $data (string) Data to decode. | ||
270 | * @return Decoded data string. | ||
271 | * @since 1.0.000 (2011-05-23) | ||
272 | * @public static | ||
273 | */ | ||
274 | public static function decodeFilterLZWDecode($data) { | ||
275 | // intialize string to return | ||
276 | $decoded = ''; | ||
277 | // data length | ||
278 | $data_length = strlen($data); | ||
279 | // convert string to binary string | ||
280 | $bitstring = ''; | ||
281 | for ($i = 0; $i < $data_length; ++$i) { | ||
282 | $bitstring .= sprintf('%08b', ord($data{$i})); | ||
283 | } | ||
284 | // get the number of bits | ||
285 | $data_length = strlen($bitstring); | ||
286 | // initialize code length in bits | ||
287 | $bitlen = 9; | ||
288 | // initialize dictionary index | ||
289 | $dix = 258; | ||
290 | // initialize the dictionary (with the first 256 entries). | ||
291 | $dictionary = array(); | ||
292 | for ($i = 0; $i < 256; ++$i) { | ||
293 | $dictionary[$i] = chr($i); | ||
294 | } | ||
295 | // previous val | ||
296 | $prev_index = 0; | ||
297 | // while we encounter EOD marker (257), read code_length bits | ||
298 | while (($data_length > 0) AND (($index = bindec(substr($bitstring, 0, $bitlen))) != 257)) { | ||
299 | // remove read bits from string | ||
300 | $bitstring = substr($bitstring, $bitlen); | ||
301 | // update number of bits | ||
302 | $data_length -= $bitlen; | ||
303 | if ($index == 256) { // clear-table marker | ||
304 | // reset code length in bits | ||
305 | $bitlen = 9; | ||
306 | // reset dictionary index | ||
307 | $dix = 258; | ||
308 | $prev_index = 256; | ||
309 | // reset the dictionary (with the first 256 entries). | ||
310 | $dictionary = array(); | ||
311 | for ($i = 0; $i < 256; ++$i) { | ||
312 | $dictionary[$i] = chr($i); | ||
313 | } | ||
314 | } elseif ($prev_index == 256) { | ||
315 | // first entry | ||
316 | $decoded .= $dictionary[$index]; | ||
317 | $prev_index = $index; | ||
318 | } else { | ||
319 | // check if index exist in the dictionary | ||
320 | if ($index < $dix) { | ||
321 | // index exist on dictionary | ||
322 | $decoded .= $dictionary[$index]; | ||
323 | $dic_val = $dictionary[$prev_index].$dictionary[$index][0]; | ||
324 | // store current index | ||
325 | $prev_index = $index; | ||
326 | } else { | ||
327 | // index do not exist on dictionary | ||
328 | $dic_val = $dictionary[$prev_index].$dictionary[$prev_index][0]; | ||
329 | $decoded .= $dic_val; | ||
330 | } | ||
331 | // update dictionary | ||
332 | $dictionary[$dix] = $dic_val; | ||
333 | ++$dix; | ||
334 | // change bit length by case | ||
335 | if ($dix == 2047) { | ||
336 | $bitlen = 12; | ||
337 | } elseif ($dix == 1023) { | ||
338 | $bitlen = 11; | ||
339 | } elseif ($dix == 511) { | ||
340 | $bitlen = 10; | ||
341 | } | ||
342 | } | ||
343 | } | ||
344 | return $decoded; | ||
345 | } | ||
346 | |||
347 | /** | ||
348 | * FlateDecode | ||
349 | * Decompresses data encoded using the zlib/deflate compression method, reproducing the original text or binary data. | ||
350 | * @param $data (string) Data to decode. | ||
351 | * @return Decoded data string. | ||
352 | * @since 1.0.000 (2011-05-23) | ||
353 | * @public static | ||
354 | */ | ||
355 | public static function decodeFilterFlateDecode($data) { | ||
356 | // intialize string to return | ||
357 | $decoded = @gzuncompress($data); | ||
358 | if ($decoded === false) { | ||
359 | self::Error('decodeFilterFlateDecode: invalid code'); | ||
360 | } | ||
361 | return $decoded; | ||
362 | } | ||
363 | |||
364 | /** | ||
365 | * RunLengthDecode | ||
366 | * Decompresses data encoded using a byte-oriented run-length encoding algorithm. | ||
367 | * @param $data (string) Data to decode. | ||
368 | * @since 1.0.000 (2011-05-23) | ||
369 | * @public static | ||
370 | */ | ||
371 | public static function decodeFilterRunLengthDecode($data) { | ||
372 | // intialize string to return | ||
373 | $decoded = ''; | ||
374 | // data length | ||
375 | $data_length = strlen($data); | ||
376 | $i = 0; | ||
377 | while($i < $data_length) { | ||
378 | // get current byte value | ||
379 | $byte = ord($data{$i}); | ||
380 | if ($byte == 128) { | ||
381 | // a length value of 128 denote EOD | ||
382 | break; | ||
383 | } elseif ($byte < 128) { | ||
384 | // if the length byte is in the range 0 to 127 | ||
385 | // the following length + 1 (1 to 128) bytes shall be copied literally during decompression | ||
386 | $decoded .= substr($data, ($i + 1), ($byte + 1)); | ||
387 | // move to next block | ||
388 | $i += ($byte + 2); | ||
389 | } else { | ||
390 | // if length is in the range 129 to 255, | ||
391 | // the following single byte shall be copied 257 - length (2 to 128) times during decompression | ||
392 | $decoded .= str_repeat($data{($i + 1)}, (257 - $byte)); | ||
393 | // move to next block | ||
394 | $i += 2; | ||
395 | } | ||
396 | } | ||
397 | return $decoded; | ||
398 | } | ||
399 | |||
400 | /** | ||
401 | * CCITTFaxDecode (NOT IMPLEMETED - RETURN AN EXCEPTION) | ||
402 | * Decompresses data encoded using the CCITT facsimile standard, reproducing the original data (typically monochrome image data at 1 bit per pixel). | ||
403 | * @param $data (string) Data to decode. | ||
404 | * @return Decoded data string. | ||
405 | * @since 1.0.000 (2011-05-23) | ||
406 | * @public static | ||
407 | */ | ||
408 | public static function decodeFilterCCITTFaxDecode($data) { | ||
409 | self::Error('~decodeFilterCCITTFaxDecode: this method has not been yet implemented'); | ||
410 | //return $data; | ||
411 | } | ||
412 | |||
413 | /** | ||
414 | * JBIG2Decode (NOT IMPLEMETED - RETURN AN EXCEPTION) | ||
415 | * Decompresses data encoded using the JBIG2 standard, reproducing the original monochrome (1 bit per pixel) image data (or an approximation of that data). | ||
416 | * @param $data (string) Data to decode. | ||
417 | * @return Decoded data string. | ||
418 | * @since 1.0.000 (2011-05-23) | ||
419 | * @public static | ||
420 | */ | ||
421 | public static function decodeFilterJBIG2Decode($data) { | ||
422 | self::Error('~decodeFilterJBIG2Decode: this method has not been yet implemented'); | ||
423 | //return $data; | ||
424 | } | ||
425 | |||
426 | /** | ||
427 | * DCTDecode (NOT IMPLEMETED - RETURN AN EXCEPTION) | ||
428 | * Decompresses data encoded using a DCT (discrete cosine transform) technique based on the JPEG standard, reproducing image sample data that approximates the original data. | ||
429 | * @param $data (string) Data to decode. | ||
430 | * @return Decoded data string. | ||
431 | * @since 1.0.000 (2011-05-23) | ||
432 | * @public static | ||
433 | */ | ||
434 | public static function decodeFilterDCTDecode($data) { | ||
435 | self::Error('~decodeFilterDCTDecode: this method has not been yet implemented'); | ||
436 | //return $data; | ||
437 | } | ||
438 | |||
439 | /** | ||
440 | * JPXDecode (NOT IMPLEMETED - RETURN AN EXCEPTION) | ||
441 | * Decompresses data encoded using the wavelet-based JPEG2000 standard, reproducing the original image data. | ||
442 | * @param $data (string) Data to decode. | ||
443 | * @return Decoded data string. | ||
444 | * @since 1.0.000 (2011-05-23) | ||
445 | * @public static | ||
446 | */ | ||
447 | public static function decodeFilterJPXDecode($data) { | ||
448 | self::Error('~decodeFilterJPXDecode: this method has not been yet implemented'); | ||
449 | //return $data; | ||
450 | } | ||
451 | |||
452 | /** | ||
453 | * Crypt (NOT IMPLEMETED - RETURN AN EXCEPTION) | ||
454 | * Decrypts data encrypted by a security handler, reproducing the data as it was before encryption. | ||
455 | * @param $data (string) Data to decode. | ||
456 | * @return Decoded data string. | ||
457 | * @since 1.0.000 (2011-05-23) | ||
458 | * @public static | ||
459 | */ | ||
460 | public static function decodeFilterCrypt($data) { | ||
461 | self::Error('~decodeFilterCrypt: this method has not been yet implemented'); | ||
462 | //return $data; | ||
463 | } | ||
464 | |||
465 | // --- END FILTERS SECTION ------------------------------------------------- | ||
466 | |||
467 | /** | ||
468 | * Throw an exception. | ||
469 | * @param $msg (string) The error message | ||
470 | * @since 1.0.000 (2011-05-23) | ||
471 | * @public static | ||
472 | */ | ||
473 | public static function Error($msg) { | ||
474 | throw new Exception('TCPDF_PARSER ERROR: '.$msg); | ||
475 | } | ||
476 | |||
477 | } // END OF TCPDF_FILTERS CLASS | ||
478 | |||
479 | //============================================================+ | ||
480 | // END OF FILE | ||
481 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php new file mode 100644 index 00000000..974e72ec --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_font_data.php | |||
@@ -0,0 +1,18447 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : tcpdf_font_data.php | ||
4 | // Version : 1.0.001 | ||
5 | // Begin : 2008-01-01 | ||
6 | // Last Update : 2013-04-01 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2008-2013 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the GNU Lesser General Public License | ||
25 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | ||
26 | // | ||
27 | // See LICENSE.TXT file for more information. | ||
28 | // ------------------------------------------------------------------- | ||
29 | // | ||
30 | // Description : Unicode data and encoding maps for TCPDF. | ||
31 | // | ||
32 | //============================================================+ | ||
33 | |||
34 | /** | ||
35 | * @file | ||
36 | * Unicode data and encoding maps for TCPDF. | ||
37 | * @author Nicola Asuni | ||
38 | * @package com.tecnick.tcpdf | ||
39 | */ | ||
40 | |||
41 | /** | ||
42 | * @class TCPDF_FONT_DATA | ||
43 | * Unicode data and encoding maps for TCPDF. | ||
44 | * @package com.tecnick.tcpdf | ||
45 | * @version 1.0.001 | ||
46 | * @author Nicola Asuni - info@tecnick.com | ||
47 | */ | ||
48 | class TCPDF_FONT_DATA { | ||
49 | |||
50 | /** | ||
51 | * Unicode code for Left-to-Right Mark. | ||
52 | * @public | ||
53 | */ | ||
54 | public static $uni_LRM = 8206; | ||
55 | |||
56 | /** | ||
57 | * Unicode code for Right-to-Left Mark. | ||
58 | * @public | ||
59 | */ | ||
60 | public static $uni_RLM = 8207; | ||
61 | |||
62 | /** | ||
63 | * Unicode code for Left-to-Right Embedding. | ||
64 | * @public | ||
65 | */ | ||
66 | public static $uni_LRE = 8234; | ||
67 | |||
68 | /** | ||
69 | * Unicode code for Right-to-Left Embedding. | ||
70 | * @public | ||
71 | */ | ||
72 | public static $uni_RLE = 8235; | ||
73 | |||
74 | /** | ||
75 | * Unicode code for Pop Directional Format. | ||
76 | * @public | ||
77 | */ | ||
78 | public static $uni_PDF = 8236; | ||
79 | |||
80 | /** | ||
81 | * Unicode code for Left-to-Right Override. | ||
82 | * @public | ||
83 | */ | ||
84 | public static $uni_LRO = 8237; | ||
85 | |||
86 | /** | ||
87 | * Unicode code for Right-to-Left Override. | ||
88 | * @public | ||
89 | */ | ||
90 | public static $uni_RLO = 8238; | ||
91 | |||
92 | /** | ||
93 | * Pattern to test RTL (Righ-To-Left) strings using regular expressions. | ||
94 | * @public | ||
95 | */ | ||
96 | public static $uni_RE_PATTERN_RTL = "/( | ||
97 | \xD6\xBE # R | ||
98 | | \xD7[\x80\x83\x86\x90-\xAA\xB0-\xB4] # R | ||
99 | | \xDF[\x80-\xAA\xB4\xB5\xBA] # R | ||
100 | | \xE2\x80\x8F # R | ||
101 | | \xEF\xAC[\x9D\x9F\xA0-\xA8\xAA-\xB6\xB8-\xBC\xBE] # R | ||
102 | | \xEF\xAD[\x80\x81\x83\x84\x86-\x8F] # R | ||
103 | | \xF0\x90\xA0[\x80-\x85\x88\x8A-\xB5\xB7\xB8\xBC\xBF] # R | ||
104 | | \xF0\x90\xA4[\x80-\x99] # R | ||
105 | | \xF0\x90\xA8[\x80\x90-\x93\x95-\x97\x99-\xB3] # R | ||
106 | | \xF0\x90\xA9[\x80-\x87\x90-\x98] # R | ||
107 | | \xE2\x80[\xAB\xAE] # RLE & RLO | ||
108 | )/x"; | ||
109 | |||
110 | /** | ||
111 | * Pattern to test Arabic strings using regular expressions. Source: http://www.w3.org/International/questions/qa-forms-utf-8 | ||
112 | * @public | ||
113 | */ | ||
114 | public static $uni_RE_PATTERN_ARABIC = "/( | ||
115 | \xD8[\x80-\x83\x8B\x8D\x9B\x9E\x9F\xA1-\xBA] # AL | ||
116 | | \xD9[\x80-\x8A\xAD-\xAF\xB1-\xBF] # AL | ||
117 | | \xDA[\x80-\xBF] # AL | ||
118 | | \xDB[\x80-\x95\x9D\xA5\xA6\xAE\xAF\xBA-\xBF] # AL | ||
119 | | \xDC[\x80-\x8D\x90\x92-\xAF] # AL | ||
120 | | \xDD[\x8D-\xAD] # AL | ||
121 | | \xDE[\x80-\xA5\xB1] # AL | ||
122 | | \xEF\xAD[\x90-\xBF] # AL | ||
123 | | \xEF\xAE[\x80-\xB1] # AL | ||
124 | | \xEF\xAF[\x93-\xBF] # AL | ||
125 | | \xEF[\xB0-\xB3][\x80-\xBF] # AL | ||
126 | | \xEF\xB4[\x80-\xBD] # AL | ||
127 | | \xEF\xB5[\x90-\xBF] # AL | ||
128 | | \xEF\xB6[\x80-\x8F\x92-\xBF] # AL | ||
129 | | \xEF\xB7[\x80-\x87\xB0-\xBC] # AL | ||
130 | | \xEF\xB9[\xB0-\xB4\xB6-\xBF] # AL | ||
131 | | \xEF\xBA[\x80-\xBF] # AL | ||
132 | | \xEF\xBB[\x80-\xBC] # AL | ||
133 | | \xD9[\xA0-\xA9\xAB\xAC] # AN | ||
134 | )/x"; | ||
135 | |||
136 | /** | ||
137 | * Array of Unicode types. | ||
138 | * @public | ||
139 | */ | ||
140 | public static $uni_type = array( | ||
141 | 0=>'BN', | ||
142 | 1=>'BN', | ||
143 | 2=>'BN', | ||
144 | 3=>'BN', | ||
145 | 4=>'BN', | ||
146 | 5=>'BN', | ||
147 | 6=>'BN', | ||
148 | 7=>'BN', | ||
149 | 8=>'BN', | ||
150 | 9=>'S', | ||
151 | 10=>'B', | ||
152 | 11=>'S', | ||
153 | 12=>'WS', | ||
154 | 13=>'B', | ||
155 | 14=>'BN', | ||
156 | 15=>'BN', | ||
157 | 16=>'BN', | ||
158 | 17=>'BN', | ||
159 | 18=>'BN', | ||
160 | 19=>'BN', | ||
161 | 20=>'BN', | ||
162 | 21=>'BN', | ||
163 | 22=>'BN', | ||
164 | 23=>'BN', | ||
165 | 24=>'BN', | ||
166 | 25=>'BN', | ||
167 | 26=>'BN', | ||
168 | 27=>'BN', | ||
169 | 28=>'B', | ||
170 | 29=>'B', | ||
171 | 30=>'B', | ||
172 | 31=>'S', | ||
173 | 32=>'WS', | ||
174 | 33=>'ON', | ||
175 | 34=>'ON', | ||
176 | 35=>'ET', | ||
177 | 36=>'ET', | ||
178 | 37=>'ET', | ||
179 | 38=>'ON', | ||
180 | 39=>'ON', | ||
181 | 40=>'ON', | ||
182 | 41=>'ON', | ||
183 | 42=>'ON', | ||
184 | 43=>'ES', | ||
185 | 44=>'CS', | ||
186 | 45=>'ES', | ||
187 | 46=>'CS', | ||
188 | 47=>'CS', | ||
189 | 48=>'EN', | ||
190 | 49=>'EN', | ||
191 | 50=>'EN', | ||
192 | 51=>'EN', | ||
193 | 52=>'EN', | ||
194 | 53=>'EN', | ||
195 | 54=>'EN', | ||
196 | 55=>'EN', | ||
197 | 56=>'EN', | ||
198 | 57=>'EN', | ||
199 | 58=>'CS', | ||
200 | 59=>'ON', | ||
201 | 60=>'ON', | ||
202 | 61=>'ON', | ||
203 | 62=>'ON', | ||
204 | 63=>'ON', | ||
205 | 64=>'ON', | ||
206 | 65=>'L', | ||
207 | 66=>'L', | ||
208 | 67=>'L', | ||
209 | 68=>'L', | ||
210 | 69=>'L', | ||
211 | 70=>'L', | ||
212 | 71=>'L', | ||
213 | 72=>'L', | ||
214 | 73=>'L', | ||
215 | 74=>'L', | ||
216 | 75=>'L', | ||
217 | 76=>'L', | ||
218 | 77=>'L', | ||
219 | 78=>'L', | ||
220 | 79=>'L', | ||
221 | 80=>'L', | ||
222 | 81=>'L', | ||
223 | 82=>'L', | ||
224 | 83=>'L', | ||
225 | 84=>'L', | ||
226 | 85=>'L', | ||
227 | 86=>'L', | ||
228 | 87=>'L', | ||
229 | 88=>'L', | ||
230 | 89=>'L', | ||
231 | 90=>'L', | ||
232 | 91=>'ON', | ||
233 | 92=>'ON', | ||
234 | 93=>'ON', | ||
235 | 94=>'ON', | ||
236 | 95=>'ON', | ||
237 | 96=>'ON', | ||
238 | 97=>'L', | ||
239 | 98=>'L', | ||
240 | 99=>'L', | ||
241 | 100=>'L', | ||
242 | 101=>'L', | ||
243 | 102=>'L', | ||
244 | 103=>'L', | ||
245 | 104=>'L', | ||
246 | 105=>'L', | ||
247 | 106=>'L', | ||
248 | 107=>'L', | ||
249 | 108=>'L', | ||
250 | 109=>'L', | ||
251 | 110=>'L', | ||
252 | 111=>'L', | ||
253 | 112=>'L', | ||
254 | 113=>'L', | ||
255 | 114=>'L', | ||
256 | 115=>'L', | ||
257 | 116=>'L', | ||
258 | 117=>'L', | ||
259 | 118=>'L', | ||
260 | 119=>'L', | ||
261 | 120=>'L', | ||
262 | 121=>'L', | ||
263 | 122=>'L', | ||
264 | 123=>'ON', | ||
265 | 124=>'ON', | ||
266 | 125=>'ON', | ||
267 | 126=>'ON', | ||
268 | 127=>'BN', | ||
269 | 128=>'BN', | ||
270 | 129=>'BN', | ||
271 | 130=>'BN', | ||
272 | 131=>'BN', | ||
273 | 132=>'BN', | ||
274 | 133=>'B', | ||
275 | 134=>'BN', | ||
276 | 135=>'BN', | ||
277 | 136=>'BN', | ||
278 | 137=>'BN', | ||
279 | 138=>'BN', | ||
280 | 139=>'BN', | ||
281 | 140=>'BN', | ||
282 | 141=>'BN', | ||
283 | 142=>'BN', | ||
284 | 143=>'BN', | ||
285 | 144=>'BN', | ||
286 | 145=>'BN', | ||
287 | 146=>'BN', | ||
288 | 147=>'BN', | ||
289 | 148=>'BN', | ||
290 | 149=>'BN', | ||
291 | 150=>'BN', | ||
292 | 151=>'BN', | ||
293 | 152=>'BN', | ||
294 | 153=>'BN', | ||
295 | 154=>'BN', | ||
296 | 155=>'BN', | ||
297 | 156=>'BN', | ||
298 | 157=>'BN', | ||
299 | 158=>'BN', | ||
300 | 159=>'BN', | ||
301 | 160=>'CS', | ||
302 | 161=>'ON', | ||
303 | 162=>'ET', | ||
304 | 163=>'ET', | ||
305 | 164=>'ET', | ||
306 | 165=>'ET', | ||
307 | 166=>'ON', | ||
308 | 167=>'ON', | ||
309 | 168=>'ON', | ||
310 | 169=>'ON', | ||
311 | 170=>'L', | ||
312 | 171=>'ON', | ||
313 | 172=>'ON', | ||
314 | 173=>'BN', | ||
315 | 174=>'ON', | ||
316 | 175=>'ON', | ||
317 | 176=>'ET', | ||
318 | 177=>'ET', | ||
319 | 178=>'EN', | ||
320 | 179=>'EN', | ||
321 | 180=>'ON', | ||
322 | 181=>'L', | ||
323 | 182=>'ON', | ||
324 | 183=>'ON', | ||
325 | 184=>'ON', | ||
326 | 185=>'EN', | ||
327 | 186=>'L', | ||
328 | 187=>'ON', | ||
329 | 188=>'ON', | ||
330 | 189=>'ON', | ||
331 | 190=>'ON', | ||
332 | 191=>'ON', | ||
333 | 192=>'L', | ||
334 | 193=>'L', | ||
335 | 194=>'L', | ||
336 | 195=>'L', | ||
337 | 196=>'L', | ||
338 | 197=>'L', | ||
339 | 198=>'L', | ||
340 | 199=>'L', | ||
341 | 200=>'L', | ||
342 | 201=>'L', | ||
343 | 202=>'L', | ||
344 | 203=>'L', | ||
345 | 204=>'L', | ||
346 | 205=>'L', | ||
347 | 206=>'L', | ||
348 | 207=>'L', | ||
349 | 208=>'L', | ||
350 | 209=>'L', | ||
351 | 210=>'L', | ||
352 | 211=>'L', | ||
353 | 212=>'L', | ||
354 | 213=>'L', | ||
355 | 214=>'L', | ||
356 | 215=>'ON', | ||
357 | 216=>'L', | ||
358 | 217=>'L', | ||
359 | 218=>'L', | ||
360 | 219=>'L', | ||
361 | 220=>'L', | ||
362 | 221=>'L', | ||
363 | 222=>'L', | ||
364 | 223=>'L', | ||
365 | 224=>'L', | ||
366 | 225=>'L', | ||
367 | 226=>'L', | ||
368 | 227=>'L', | ||
369 | 228=>'L', | ||
370 | 229=>'L', | ||
371 | 230=>'L', | ||
372 | 231=>'L', | ||
373 | 232=>'L', | ||
374 | 233=>'L', | ||
375 | 234=>'L', | ||
376 | 235=>'L', | ||
377 | 236=>'L', | ||
378 | 237=>'L', | ||
379 | 238=>'L', | ||
380 | 239=>'L', | ||
381 | 240=>'L', | ||
382 | 241=>'L', | ||
383 | 242=>'L', | ||
384 | 243=>'L', | ||
385 | 244=>'L', | ||
386 | 245=>'L', | ||
387 | 246=>'L', | ||
388 | 247=>'ON', | ||
389 | 248=>'L', | ||
390 | 249=>'L', | ||
391 | 250=>'L', | ||
392 | 251=>'L', | ||
393 | 252=>'L', | ||
394 | 253=>'L', | ||
395 | 254=>'L', | ||
396 | 255=>'L', | ||
397 | 256=>'L', | ||
398 | 257=>'L', | ||
399 | 258=>'L', | ||
400 | 259=>'L', | ||
401 | 260=>'L', | ||
402 | 261=>'L', | ||
403 | 262=>'L', | ||
404 | 263=>'L', | ||
405 | 264=>'L', | ||
406 | 265=>'L', | ||
407 | 266=>'L', | ||
408 | 267=>'L', | ||
409 | 268=>'L', | ||
410 | 269=>'L', | ||
411 | 270=>'L', | ||
412 | 271=>'L', | ||
413 | 272=>'L', | ||
414 | 273=>'L', | ||
415 | 274=>'L', | ||
416 | 275=>'L', | ||
417 | 276=>'L', | ||
418 | 277=>'L', | ||
419 | 278=>'L', | ||
420 | 279=>'L', | ||
421 | 280=>'L', | ||
422 | 281=>'L', | ||
423 | 282=>'L', | ||
424 | 283=>'L', | ||
425 | 284=>'L', | ||
426 | 285=>'L', | ||
427 | 286=>'L', | ||
428 | 287=>'L', | ||
429 | 288=>'L', | ||
430 | 289=>'L', | ||
431 | 290=>'L', | ||
432 | 291=>'L', | ||
433 | 292=>'L', | ||
434 | 293=>'L', | ||
435 | 294=>'L', | ||
436 | 295=>'L', | ||
437 | 296=>'L', | ||
438 | 297=>'L', | ||
439 | 298=>'L', | ||
440 | 299=>'L', | ||
441 | 300=>'L', | ||
442 | 301=>'L', | ||
443 | 302=>'L', | ||
444 | 303=>'L', | ||
445 | 304=>'L', | ||
446 | 305=>'L', | ||
447 | 306=>'L', | ||
448 | 307=>'L', | ||
449 | 308=>'L', | ||
450 | 309=>'L', | ||
451 | 310=>'L', | ||
452 | 311=>'L', | ||
453 | 312=>'L', | ||
454 | 313=>'L', | ||
455 | 314=>'L', | ||
456 | 315=>'L', | ||
457 | 316=>'L', | ||
458 | 317=>'L', | ||
459 | 318=>'L', | ||
460 | 319=>'L', | ||
461 | 320=>'L', | ||
462 | 321=>'L', | ||
463 | 322=>'L', | ||
464 | 323=>'L', | ||
465 | 324=>'L', | ||
466 | 325=>'L', | ||
467 | 326=>'L', | ||
468 | 327=>'L', | ||
469 | 328=>'L', | ||
470 | 329=>'L', | ||
471 | 330=>'L', | ||
472 | 331=>'L', | ||
473 | 332=>'L', | ||
474 | 333=>'L', | ||
475 | 334=>'L', | ||
476 | 335=>'L', | ||
477 | 336=>'L', | ||
478 | 337=>'L', | ||
479 | 338=>'L', | ||
480 | 339=>'L', | ||
481 | 340=>'L', | ||
482 | 341=>'L', | ||
483 | 342=>'L', | ||
484 | 343=>'L', | ||
485 | 344=>'L', | ||
486 | 345=>'L', | ||
487 | 346=>'L', | ||
488 | 347=>'L', | ||
489 | 348=>'L', | ||
490 | 349=>'L', | ||
491 | 350=>'L', | ||
492 | 351=>'L', | ||
493 | 352=>'L', | ||
494 | 353=>'L', | ||
495 | 354=>'L', | ||
496 | 355=>'L', | ||
497 | 356=>'L', | ||
498 | 357=>'L', | ||
499 | 358=>'L', | ||
500 | 359=>'L', | ||
501 | 360=>'L', | ||
502 | 361=>'L', | ||
503 | 362=>'L', | ||
504 | 363=>'L', | ||
505 | 364=>'L', | ||
506 | 365=>'L', | ||
507 | 366=>'L', | ||
508 | 367=>'L', | ||
509 | 368=>'L', | ||
510 | 369=>'L', | ||
511 | 370=>'L', | ||
512 | 371=>'L', | ||
513 | 372=>'L', | ||
514 | 373=>'L', | ||
515 | 374=>'L', | ||
516 | 375=>'L', | ||
517 | 376=>'L', | ||
518 | 377=>'L', | ||
519 | 378=>'L', | ||
520 | 379=>'L', | ||
521 | 380=>'L', | ||
522 | 381=>'L', | ||
523 | 382=>'L', | ||
524 | 383=>'L', | ||
525 | 384=>'L', | ||
526 | 385=>'L', | ||
527 | 386=>'L', | ||
528 | 387=>'L', | ||
529 | 388=>'L', | ||
530 | 389=>'L', | ||
531 | 390=>'L', | ||
532 | 391=>'L', | ||
533 | 392=>'L', | ||
534 | 393=>'L', | ||
535 | 394=>'L', | ||
536 | 395=>'L', | ||
537 | 396=>'L', | ||
538 | 397=>'L', | ||
539 | 398=>'L', | ||
540 | 399=>'L', | ||
541 | 400=>'L', | ||
542 | 401=>'L', | ||
543 | 402=>'L', | ||
544 | 403=>'L', | ||
545 | 404=>'L', | ||
546 | 405=>'L', | ||
547 | 406=>'L', | ||
548 | 407=>'L', | ||
549 | 408=>'L', | ||
550 | 409=>'L', | ||
551 | 410=>'L', | ||
552 | 411=>'L', | ||
553 | 412=>'L', | ||
554 | 413=>'L', | ||
555 | 414=>'L', | ||
556 | 415=>'L', | ||
557 | 416=>'L', | ||
558 | 417=>'L', | ||
559 | 418=>'L', | ||
560 | 419=>'L', | ||
561 | 420=>'L', | ||
562 | 421=>'L', | ||
563 | 422=>'L', | ||
564 | 423=>'L', | ||
565 | 424=>'L', | ||
566 | 425=>'L', | ||
567 | 426=>'L', | ||
568 | 427=>'L', | ||
569 | 428=>'L', | ||
570 | 429=>'L', | ||
571 | 430=>'L', | ||
572 | 431=>'L', | ||
573 | 432=>'L', | ||
574 | 433=>'L', | ||
575 | 434=>'L', | ||
576 | 435=>'L', | ||
577 | 436=>'L', | ||
578 | 437=>'L', | ||
579 | 438=>'L', | ||
580 | 439=>'L', | ||
581 | 440=>'L', | ||
582 | 441=>'L', | ||
583 | 442=>'L', | ||
584 | 443=>'L', | ||
585 | 444=>'L', | ||
586 | 445=>'L', | ||
587 | 446=>'L', | ||
588 | 447=>'L', | ||
589 | 448=>'L', | ||
590 | 449=>'L', | ||
591 | 450=>'L', | ||
592 | 451=>'L', | ||
593 | 452=>'L', | ||
594 | 453=>'L', | ||
595 | 454=>'L', | ||
596 | 455=>'L', | ||
597 | 456=>'L', | ||
598 | 457=>'L', | ||
599 | 458=>'L', | ||
600 | 459=>'L', | ||
601 | 460=>'L', | ||
602 | 461=>'L', | ||
603 | 462=>'L', | ||
604 | 463=>'L', | ||
605 | 464=>'L', | ||
606 | 465=>'L', | ||
607 | 466=>'L', | ||
608 | 467=>'L', | ||
609 | 468=>'L', | ||
610 | 469=>'L', | ||
611 | 470=>'L', | ||
612 | 471=>'L', | ||
613 | 472=>'L', | ||
614 | 473=>'L', | ||
615 | 474=>'L', | ||
616 | 475=>'L', | ||
617 | 476=>'L', | ||
618 | 477=>'L', | ||
619 | 478=>'L', | ||
620 | 479=>'L', | ||
621 | 480=>'L', | ||
622 | 481=>'L', | ||
623 | 482=>'L', | ||
624 | 483=>'L', | ||
625 | 484=>'L', | ||
626 | 485=>'L', | ||
627 | 486=>'L', | ||
628 | 487=>'L', | ||
629 | 488=>'L', | ||
630 | 489=>'L', | ||
631 | 490=>'L', | ||
632 | 491=>'L', | ||
633 | 492=>'L', | ||
634 | 493=>'L', | ||
635 | 494=>'L', | ||
636 | 495=>'L', | ||
637 | 496=>'L', | ||
638 | 497=>'L', | ||
639 | 498=>'L', | ||
640 | 499=>'L', | ||
641 | 500=>'L', | ||
642 | 501=>'L', | ||
643 | 502=>'L', | ||
644 | 503=>'L', | ||
645 | 504=>'L', | ||
646 | 505=>'L', | ||
647 | 506=>'L', | ||
648 | 507=>'L', | ||
649 | 508=>'L', | ||
650 | 509=>'L', | ||
651 | 510=>'L', | ||
652 | 511=>'L', | ||
653 | 512=>'L', | ||
654 | 513=>'L', | ||
655 | 514=>'L', | ||
656 | 515=>'L', | ||
657 | 516=>'L', | ||
658 | 517=>'L', | ||
659 | 518=>'L', | ||
660 | 519=>'L', | ||
661 | 520=>'L', | ||
662 | 521=>'L', | ||
663 | 522=>'L', | ||
664 | 523=>'L', | ||
665 | 524=>'L', | ||
666 | 525=>'L', | ||
667 | 526=>'L', | ||
668 | 527=>'L', | ||
669 | 528=>'L', | ||
670 | 529=>'L', | ||
671 | 530=>'L', | ||
672 | 531=>'L', | ||
673 | 532=>'L', | ||
674 | 533=>'L', | ||
675 | 534=>'L', | ||
676 | 535=>'L', | ||
677 | 536=>'L', | ||
678 | 537=>'L', | ||
679 | 538=>'L', | ||
680 | 539=>'L', | ||
681 | 540=>'L', | ||
682 | 541=>'L', | ||
683 | 542=>'L', | ||
684 | 543=>'L', | ||
685 | 544=>'L', | ||
686 | 545=>'L', | ||
687 | 546=>'L', | ||
688 | 547=>'L', | ||
689 | 548=>'L', | ||
690 | 549=>'L', | ||
691 | 550=>'L', | ||
692 | 551=>'L', | ||
693 | 552=>'L', | ||
694 | 553=>'L', | ||
695 | 554=>'L', | ||
696 | 555=>'L', | ||
697 | 556=>'L', | ||
698 | 557=>'L', | ||
699 | 558=>'L', | ||
700 | 559=>'L', | ||
701 | 560=>'L', | ||
702 | 561=>'L', | ||
703 | 562=>'L', | ||
704 | 563=>'L', | ||
705 | 564=>'L', | ||
706 | 565=>'L', | ||
707 | 566=>'L', | ||
708 | 567=>'L', | ||
709 | 568=>'L', | ||
710 | 569=>'L', | ||
711 | 570=>'L', | ||
712 | 571=>'L', | ||
713 | 572=>'L', | ||
714 | 573=>'L', | ||
715 | 574=>'L', | ||
716 | 575=>'L', | ||
717 | 576=>'L', | ||
718 | 577=>'L', | ||
719 | 578=>'L', | ||
720 | 579=>'L', | ||
721 | 580=>'L', | ||
722 | 581=>'L', | ||
723 | 582=>'L', | ||
724 | 583=>'L', | ||
725 | 584=>'L', | ||
726 | 585=>'L', | ||
727 | 586=>'L', | ||
728 | 587=>'L', | ||
729 | 588=>'L', | ||
730 | 589=>'L', | ||
731 | 590=>'L', | ||
732 | 591=>'L', | ||
733 | 592=>'L', | ||
734 | 593=>'L', | ||
735 | 594=>'L', | ||
736 | 595=>'L', | ||
737 | 596=>'L', | ||
738 | 597=>'L', | ||
739 | 598=>'L', | ||
740 | 599=>'L', | ||
741 | 600=>'L', | ||
742 | 601=>'L', | ||
743 | 602=>'L', | ||
744 | 603=>'L', | ||
745 | 604=>'L', | ||
746 | 605=>'L', | ||
747 | 606=>'L', | ||
748 | 607=>'L', | ||
749 | 608=>'L', | ||
750 | 609=>'L', | ||
751 | 610=>'L', | ||
752 | 611=>'L', | ||
753 | 612=>'L', | ||
754 | 613=>'L', | ||
755 | 614=>'L', | ||
756 | 615=>'L', | ||
757 | 616=>'L', | ||
758 | 617=>'L', | ||
759 | 618=>'L', | ||
760 | 619=>'L', | ||
761 | 620=>'L', | ||
762 | 621=>'L', | ||
763 | 622=>'L', | ||
764 | 623=>'L', | ||
765 | 624=>'L', | ||
766 | 625=>'L', | ||
767 | 626=>'L', | ||
768 | 627=>'L', | ||
769 | 628=>'L', | ||
770 | 629=>'L', | ||
771 | 630=>'L', | ||
772 | 631=>'L', | ||
773 | 632=>'L', | ||
774 | 633=>'L', | ||
775 | 634=>'L', | ||
776 | 635=>'L', | ||
777 | 636=>'L', | ||
778 | 637=>'L', | ||
779 | 638=>'L', | ||
780 | 639=>'L', | ||
781 | 640=>'L', | ||
782 | 641=>'L', | ||
783 | 642=>'L', | ||
784 | 643=>'L', | ||
785 | 644=>'L', | ||
786 | 645=>'L', | ||
787 | 646=>'L', | ||
788 | 647=>'L', | ||
789 | 648=>'L', | ||
790 | 649=>'L', | ||
791 | 650=>'L', | ||
792 | 651=>'L', | ||
793 | 652=>'L', | ||
794 | 653=>'L', | ||
795 | 654=>'L', | ||
796 | 655=>'L', | ||
797 | 656=>'L', | ||
798 | 657=>'L', | ||
799 | 658=>'L', | ||
800 | 659=>'L', | ||
801 | 660=>'L', | ||
802 | 661=>'L', | ||
803 | 662=>'L', | ||
804 | 663=>'L', | ||
805 | 664=>'L', | ||
806 | 665=>'L', | ||
807 | 666=>'L', | ||
808 | 667=>'L', | ||
809 | 668=>'L', | ||
810 | 669=>'L', | ||
811 | 670=>'L', | ||
812 | 671=>'L', | ||
813 | 672=>'L', | ||
814 | 673=>'L', | ||
815 | 674=>'L', | ||
816 | 675=>'L', | ||
817 | 676=>'L', | ||
818 | 677=>'L', | ||
819 | 678=>'L', | ||
820 | 679=>'L', | ||
821 | 680=>'L', | ||
822 | 681=>'L', | ||
823 | 682=>'L', | ||
824 | 683=>'L', | ||
825 | 684=>'L', | ||
826 | 685=>'L', | ||
827 | 686=>'L', | ||
828 | 687=>'L', | ||
829 | 688=>'L', | ||
830 | 689=>'L', | ||
831 | 690=>'L', | ||
832 | 691=>'L', | ||
833 | 692=>'L', | ||
834 | 693=>'L', | ||
835 | 694=>'L', | ||
836 | 695=>'L', | ||
837 | 696=>'L', | ||
838 | 697=>'ON', | ||
839 | 698=>'ON', | ||
840 | 699=>'L', | ||
841 | 700=>'L', | ||
842 | 701=>'L', | ||
843 | 702=>'L', | ||
844 | 703=>'L', | ||
845 | 704=>'L', | ||
846 | 705=>'L', | ||
847 | 706=>'ON', | ||
848 | 707=>'ON', | ||
849 | 708=>'ON', | ||
850 | 709=>'ON', | ||
851 | 710=>'ON', | ||
852 | 711=>'ON', | ||
853 | 712=>'ON', | ||
854 | 713=>'ON', | ||
855 | 714=>'ON', | ||
856 | 715=>'ON', | ||
857 | 716=>'ON', | ||
858 | 717=>'ON', | ||
859 | 718=>'ON', | ||
860 | 719=>'ON', | ||
861 | 720=>'L', | ||
862 | 721=>'L', | ||
863 | 722=>'ON', | ||
864 | 723=>'ON', | ||
865 | 724=>'ON', | ||
866 | 725=>'ON', | ||
867 | 726=>'ON', | ||
868 | 727=>'ON', | ||
869 | 728=>'ON', | ||
870 | 729=>'ON', | ||
871 | 730=>'ON', | ||
872 | 731=>'ON', | ||
873 | 732=>'ON', | ||
874 | 733=>'ON', | ||
875 | 734=>'ON', | ||
876 | 735=>'ON', | ||
877 | 736=>'L', | ||
878 | 737=>'L', | ||
879 | 738=>'L', | ||
880 | 739=>'L', | ||
881 | 740=>'L', | ||
882 | 741=>'ON', | ||
883 | 742=>'ON', | ||
884 | 743=>'ON', | ||
885 | 744=>'ON', | ||
886 | 745=>'ON', | ||
887 | 746=>'ON', | ||
888 | 747=>'ON', | ||
889 | 748=>'ON', | ||
890 | 749=>'ON', | ||
891 | 750=>'L', | ||
892 | 751=>'ON', | ||
893 | 752=>'ON', | ||
894 | 753=>'ON', | ||
895 | 754=>'ON', | ||
896 | 755=>'ON', | ||
897 | 756=>'ON', | ||
898 | 757=>'ON', | ||
899 | 758=>'ON', | ||
900 | 759=>'ON', | ||
901 | 760=>'ON', | ||
902 | 761=>'ON', | ||
903 | 762=>'ON', | ||
904 | 763=>'ON', | ||
905 | 764=>'ON', | ||
906 | 765=>'ON', | ||
907 | 766=>'ON', | ||
908 | 767=>'ON', | ||
909 | 768=>'NSM', | ||
910 | 769=>'NSM', | ||
911 | 770=>'NSM', | ||
912 | 771=>'NSM', | ||
913 | 772=>'NSM', | ||
914 | 773=>'NSM', | ||
915 | 774=>'NSM', | ||
916 | 775=>'NSM', | ||
917 | 776=>'NSM', | ||
918 | 777=>'NSM', | ||
919 | 778=>'NSM', | ||
920 | 779=>'NSM', | ||
921 | 780=>'NSM', | ||
922 | 781=>'NSM', | ||
923 | 782=>'NSM', | ||
924 | 783=>'NSM', | ||
925 | 784=>'NSM', | ||
926 | 785=>'NSM', | ||
927 | 786=>'NSM', | ||
928 | 787=>'NSM', | ||
929 | 788=>'NSM', | ||
930 | 789=>'NSM', | ||
931 | 790=>'NSM', | ||
932 | 791=>'NSM', | ||
933 | 792=>'NSM', | ||
934 | 793=>'NSM', | ||
935 | 794=>'NSM', | ||
936 | 795=>'NSM', | ||
937 | 796=>'NSM', | ||
938 | 797=>'NSM', | ||
939 | 798=>'NSM', | ||
940 | 799=>'NSM', | ||
941 | 800=>'NSM', | ||
942 | 801=>'NSM', | ||
943 | 802=>'NSM', | ||
944 | 803=>'NSM', | ||
945 | 804=>'NSM', | ||
946 | 805=>'NSM', | ||
947 | 806=>'NSM', | ||
948 | 807=>'NSM', | ||
949 | 808=>'NSM', | ||
950 | 809=>'NSM', | ||
951 | 810=>'NSM', | ||
952 | 811=>'NSM', | ||
953 | 812=>'NSM', | ||
954 | 813=>'NSM', | ||
955 | 814=>'NSM', | ||
956 | 815=>'NSM', | ||
957 | 816=>'NSM', | ||
958 | 817=>'NSM', | ||
959 | 818=>'NSM', | ||
960 | 819=>'NSM', | ||
961 | 820=>'NSM', | ||
962 | 821=>'NSM', | ||
963 | 822=>'NSM', | ||
964 | 823=>'NSM', | ||
965 | 824=>'NSM', | ||
966 | 825=>'NSM', | ||
967 | 826=>'NSM', | ||
968 | 827=>'NSM', | ||
969 | 828=>'NSM', | ||
970 | 829=>'NSM', | ||
971 | 830=>'NSM', | ||
972 | 831=>'NSM', | ||
973 | 832=>'NSM', | ||
974 | 833=>'NSM', | ||
975 | 834=>'NSM', | ||
976 | 835=>'NSM', | ||
977 | 836=>'NSM', | ||
978 | 837=>'NSM', | ||
979 | 838=>'NSM', | ||
980 | 839=>'NSM', | ||
981 | 840=>'NSM', | ||
982 | 841=>'NSM', | ||
983 | 842=>'NSM', | ||
984 | 843=>'NSM', | ||
985 | 844=>'NSM', | ||
986 | 845=>'NSM', | ||
987 | 846=>'NSM', | ||
988 | 847=>'NSM', | ||
989 | 848=>'NSM', | ||
990 | 849=>'NSM', | ||
991 | 850=>'NSM', | ||
992 | 851=>'NSM', | ||
993 | 852=>'NSM', | ||
994 | 853=>'NSM', | ||
995 | 854=>'NSM', | ||
996 | 855=>'NSM', | ||
997 | 856=>'NSM', | ||
998 | 857=>'NSM', | ||
999 | 858=>'NSM', | ||
1000 | 859=>'NSM', | ||
1001 | 860=>'NSM', | ||
1002 | 861=>'NSM', | ||
1003 | 862=>'NSM', | ||
1004 | 863=>'NSM', | ||
1005 | 864=>'NSM', | ||
1006 | 865=>'NSM', | ||
1007 | 866=>'NSM', | ||
1008 | 867=>'NSM', | ||
1009 | 868=>'NSM', | ||
1010 | 869=>'NSM', | ||
1011 | 870=>'NSM', | ||
1012 | 871=>'NSM', | ||
1013 | 872=>'NSM', | ||
1014 | 873=>'NSM', | ||
1015 | 874=>'NSM', | ||
1016 | 875=>'NSM', | ||
1017 | 876=>'NSM', | ||
1018 | 877=>'NSM', | ||
1019 | 878=>'NSM', | ||
1020 | 879=>'NSM', | ||
1021 | 884=>'ON', | ||
1022 | 885=>'ON', | ||
1023 | 890=>'L', | ||
1024 | 891=>'L', | ||
1025 | 892=>'L', | ||
1026 | 893=>'L', | ||
1027 | 894=>'ON', | ||
1028 | 900=>'ON', | ||
1029 | 901=>'ON', | ||
1030 | 902=>'L', | ||
1031 | 903=>'ON', | ||
1032 | 904=>'L', | ||
1033 | 905=>'L', | ||
1034 | 906=>'L', | ||
1035 | 908=>'L', | ||
1036 | 910=>'L', | ||
1037 | 911=>'L', | ||
1038 | 912=>'L', | ||
1039 | 913=>'L', | ||
1040 | 914=>'L', | ||
1041 | 915=>'L', | ||
1042 | 916=>'L', | ||
1043 | 917=>'L', | ||
1044 | 918=>'L', | ||
1045 | 919=>'L', | ||
1046 | 920=>'L', | ||
1047 | 921=>'L', | ||
1048 | 922=>'L', | ||
1049 | 923=>'L', | ||
1050 | 924=>'L', | ||
1051 | 925=>'L', | ||
1052 | 926=>'L', | ||
1053 | 927=>'L', | ||
1054 | 928=>'L', | ||
1055 | 929=>'L', | ||
1056 | 931=>'L', | ||
1057 | 932=>'L', | ||
1058 | 933=>'L', | ||
1059 | 934=>'L', | ||
1060 | 935=>'L', | ||
1061 | 936=>'L', | ||
1062 | 937=>'L', | ||
1063 | 938=>'L', | ||
1064 | 939=>'L', | ||
1065 | 940=>'L', | ||
1066 | 941=>'L', | ||
1067 | 942=>'L', | ||
1068 | 943=>'L', | ||
1069 | 944=>'L', | ||
1070 | 945=>'L', | ||
1071 | 946=>'L', | ||
1072 | 947=>'L', | ||
1073 | 948=>'L', | ||
1074 | 949=>'L', | ||
1075 | 950=>'L', | ||
1076 | 951=>'L', | ||
1077 | 952=>'L', | ||
1078 | 953=>'L', | ||
1079 | 954=>'L', | ||
1080 | 955=>'L', | ||
1081 | 956=>'L', | ||
1082 | 957=>'L', | ||
1083 | 958=>'L', | ||
1084 | 959=>'L', | ||
1085 | 960=>'L', | ||
1086 | 961=>'L', | ||
1087 | 962=>'L', | ||
1088 | 963=>'L', | ||
1089 | 964=>'L', | ||
1090 | 965=>'L', | ||
1091 | 966=>'L', | ||
1092 | 967=>'L', | ||
1093 | 968=>'L', | ||
1094 | 969=>'L', | ||
1095 | 970=>'L', | ||
1096 | 971=>'L', | ||
1097 | 972=>'L', | ||
1098 | 973=>'L', | ||
1099 | 974=>'L', | ||
1100 | 976=>'L', | ||
1101 | 977=>'L', | ||
1102 | 978=>'L', | ||
1103 | 979=>'L', | ||
1104 | 980=>'L', | ||
1105 | 981=>'L', | ||
1106 | 982=>'L', | ||
1107 | 983=>'L', | ||
1108 | 984=>'L', | ||
1109 | 985=>'L', | ||
1110 | 986=>'L', | ||
1111 | 987=>'L', | ||
1112 | 988=>'L', | ||
1113 | 989=>'L', | ||
1114 | 990=>'L', | ||
1115 | 991=>'L', | ||
1116 | 992=>'L', | ||
1117 | 993=>'L', | ||
1118 | 994=>'L', | ||
1119 | 995=>'L', | ||
1120 | 996=>'L', | ||
1121 | 997=>'L', | ||
1122 | 998=>'L', | ||
1123 | 999=>'L', | ||
1124 | 1000=>'L', | ||
1125 | 1001=>'L', | ||
1126 | 1002=>'L', | ||
1127 | 1003=>'L', | ||
1128 | 1004=>'L', | ||
1129 | 1005=>'L', | ||
1130 | 1006=>'L', | ||
1131 | 1007=>'L', | ||
1132 | 1008=>'L', | ||
1133 | 1009=>'L', | ||
1134 | 1010=>'L', | ||
1135 | 1011=>'L', | ||
1136 | 1012=>'L', | ||
1137 | 1013=>'L', | ||
1138 | 1014=>'ON', | ||
1139 | 1015=>'L', | ||
1140 | 1016=>'L', | ||
1141 | 1017=>'L', | ||
1142 | 1018=>'L', | ||
1143 | 1019=>'L', | ||
1144 | 1020=>'L', | ||
1145 | 1021=>'L', | ||
1146 | 1022=>'L', | ||
1147 | 1023=>'L', | ||
1148 | 1024=>'L', | ||
1149 | 1025=>'L', | ||
1150 | 1026=>'L', | ||
1151 | 1027=>'L', | ||
1152 | 1028=>'L', | ||
1153 | 1029=>'L', | ||
1154 | 1030=>'L', | ||
1155 | 1031=>'L', | ||
1156 | 1032=>'L', | ||
1157 | 1033=>'L', | ||
1158 | 1034=>'L', | ||
1159 | 1035=>'L', | ||
1160 | 1036=>'L', | ||
1161 | 1037=>'L', | ||
1162 | 1038=>'L', | ||
1163 | 1039=>'L', | ||
1164 | 1040=>'L', | ||
1165 | 1041=>'L', | ||
1166 | 1042=>'L', | ||
1167 | 1043=>'L', | ||
1168 | 1044=>'L', | ||
1169 | 1045=>'L', | ||
1170 | 1046=>'L', | ||
1171 | 1047=>'L', | ||
1172 | 1048=>'L', | ||
1173 | 1049=>'L', | ||
1174 | 1050=>'L', | ||
1175 | 1051=>'L', | ||
1176 | 1052=>'L', | ||
1177 | 1053=>'L', | ||
1178 | 1054=>'L', | ||
1179 | 1055=>'L', | ||
1180 | 1056=>'L', | ||
1181 | 1057=>'L', | ||
1182 | 1058=>'L', | ||
1183 | 1059=>'L', | ||
1184 | 1060=>'L', | ||
1185 | 1061=>'L', | ||
1186 | 1062=>'L', | ||
1187 | 1063=>'L', | ||
1188 | 1064=>'L', | ||
1189 | 1065=>'L', | ||
1190 | 1066=>'L', | ||
1191 | 1067=>'L', | ||
1192 | 1068=>'L', | ||
1193 | 1069=>'L', | ||
1194 | 1070=>'L', | ||
1195 | 1071=>'L', | ||
1196 | 1072=>'L', | ||
1197 | 1073=>'L', | ||
1198 | 1074=>'L', | ||
1199 | 1075=>'L', | ||
1200 | 1076=>'L', | ||
1201 | 1077=>'L', | ||
1202 | 1078=>'L', | ||
1203 | 1079=>'L', | ||
1204 | 1080=>'L', | ||
1205 | 1081=>'L', | ||
1206 | 1082=>'L', | ||
1207 | 1083=>'L', | ||
1208 | 1084=>'L', | ||
1209 | 1085=>'L', | ||
1210 | 1086=>'L', | ||
1211 | 1087=>'L', | ||
1212 | 1088=>'L', | ||
1213 | 1089=>'L', | ||
1214 | 1090=>'L', | ||
1215 | 1091=>'L', | ||
1216 | 1092=>'L', | ||
1217 | 1093=>'L', | ||
1218 | 1094=>'L', | ||
1219 | 1095=>'L', | ||
1220 | 1096=>'L', | ||
1221 | 1097=>'L', | ||
1222 | 1098=>'L', | ||
1223 | 1099=>'L', | ||
1224 | 1100=>'L', | ||
1225 | 1101=>'L', | ||
1226 | 1102=>'L', | ||
1227 | 1103=>'L', | ||
1228 | 1104=>'L', | ||
1229 | 1105=>'L', | ||
1230 | 1106=>'L', | ||
1231 | 1107=>'L', | ||
1232 | 1108=>'L', | ||
1233 | 1109=>'L', | ||
1234 | 1110=>'L', | ||
1235 | 1111=>'L', | ||
1236 | 1112=>'L', | ||
1237 | 1113=>'L', | ||
1238 | 1114=>'L', | ||
1239 | 1115=>'L', | ||
1240 | 1116=>'L', | ||
1241 | 1117=>'L', | ||
1242 | 1118=>'L', | ||
1243 | 1119=>'L', | ||
1244 | 1120=>'L', | ||
1245 | 1121=>'L', | ||
1246 | 1122=>'L', | ||
1247 | 1123=>'L', | ||
1248 | 1124=>'L', | ||
1249 | 1125=>'L', | ||
1250 | 1126=>'L', | ||
1251 | 1127=>'L', | ||
1252 | 1128=>'L', | ||
1253 | 1129=>'L', | ||
1254 | 1130=>'L', | ||
1255 | 1131=>'L', | ||
1256 | 1132=>'L', | ||
1257 | 1133=>'L', | ||
1258 | 1134=>'L', | ||
1259 | 1135=>'L', | ||
1260 | 1136=>'L', | ||
1261 | 1137=>'L', | ||
1262 | 1138=>'L', | ||
1263 | 1139=>'L', | ||
1264 | 1140=>'L', | ||
1265 | 1141=>'L', | ||
1266 | 1142=>'L', | ||
1267 | 1143=>'L', | ||
1268 | 1144=>'L', | ||
1269 | 1145=>'L', | ||
1270 | 1146=>'L', | ||
1271 | 1147=>'L', | ||
1272 | 1148=>'L', | ||
1273 | 1149=>'L', | ||
1274 | 1150=>'L', | ||
1275 | 1151=>'L', | ||
1276 | 1152=>'L', | ||
1277 | 1153=>'L', | ||
1278 | 1154=>'L', | ||
1279 | 1155=>'NSM', | ||
1280 | 1156=>'NSM', | ||
1281 | 1157=>'NSM', | ||
1282 | 1158=>'NSM', | ||
1283 | 1160=>'NSM', | ||
1284 | 1161=>'NSM', | ||
1285 | 1162=>'L', | ||
1286 | 1163=>'L', | ||
1287 | 1164=>'L', | ||
1288 | 1165=>'L', | ||
1289 | 1166=>'L', | ||
1290 | 1167=>'L', | ||
1291 | 1168=>'L', | ||
1292 | 1169=>'L', | ||
1293 | 1170=>'L', | ||
1294 | 1171=>'L', | ||
1295 | 1172=>'L', | ||
1296 | 1173=>'L', | ||
1297 | 1174=>'L', | ||
1298 | 1175=>'L', | ||
1299 | 1176=>'L', | ||
1300 | 1177=>'L', | ||
1301 | 1178=>'L', | ||
1302 | 1179=>'L', | ||
1303 | 1180=>'L', | ||
1304 | 1181=>'L', | ||
1305 | 1182=>'L', | ||
1306 | 1183=>'L', | ||
1307 | 1184=>'L', | ||
1308 | 1185=>'L', | ||
1309 | 1186=>'L', | ||
1310 | 1187=>'L', | ||
1311 | 1188=>'L', | ||
1312 | 1189=>'L', | ||
1313 | 1190=>'L', | ||
1314 | 1191=>'L', | ||
1315 | 1192=>'L', | ||
1316 | 1193=>'L', | ||
1317 | 1194=>'L', | ||
1318 | 1195=>'L', | ||
1319 | 1196=>'L', | ||
1320 | 1197=>'L', | ||
1321 | 1198=>'L', | ||
1322 | 1199=>'L', | ||
1323 | 1200=>'L', | ||
1324 | 1201=>'L', | ||
1325 | 1202=>'L', | ||
1326 | 1203=>'L', | ||
1327 | 1204=>'L', | ||
1328 | 1205=>'L', | ||
1329 | 1206=>'L', | ||
1330 | 1207=>'L', | ||
1331 | 1208=>'L', | ||
1332 | 1209=>'L', | ||
1333 | 1210=>'L', | ||
1334 | 1211=>'L', | ||
1335 | 1212=>'L', | ||
1336 | 1213=>'L', | ||
1337 | 1214=>'L', | ||
1338 | 1215=>'L', | ||
1339 | 1216=>'L', | ||
1340 | 1217=>'L', | ||
1341 | 1218=>'L', | ||
1342 | 1219=>'L', | ||
1343 | 1220=>'L', | ||
1344 | 1221=>'L', | ||
1345 | 1222=>'L', | ||
1346 | 1223=>'L', | ||
1347 | 1224=>'L', | ||
1348 | 1225=>'L', | ||
1349 | 1226=>'L', | ||
1350 | 1227=>'L', | ||
1351 | 1228=>'L', | ||
1352 | 1229=>'L', | ||
1353 | 1230=>'L', | ||
1354 | 1231=>'L', | ||
1355 | 1232=>'L', | ||
1356 | 1233=>'L', | ||
1357 | 1234=>'L', | ||
1358 | 1235=>'L', | ||
1359 | 1236=>'L', | ||
1360 | 1237=>'L', | ||
1361 | 1238=>'L', | ||
1362 | 1239=>'L', | ||
1363 | 1240=>'L', | ||
1364 | 1241=>'L', | ||
1365 | 1242=>'L', | ||
1366 | 1243=>'L', | ||
1367 | 1244=>'L', | ||
1368 | 1245=>'L', | ||
1369 | 1246=>'L', | ||
1370 | 1247=>'L', | ||
1371 | 1248=>'L', | ||
1372 | 1249=>'L', | ||
1373 | 1250=>'L', | ||
1374 | 1251=>'L', | ||
1375 | 1252=>'L', | ||
1376 | 1253=>'L', | ||
1377 | 1254=>'L', | ||
1378 | 1255=>'L', | ||
1379 | 1256=>'L', | ||
1380 | 1257=>'L', | ||
1381 | 1258=>'L', | ||
1382 | 1259=>'L', | ||
1383 | 1260=>'L', | ||
1384 | 1261=>'L', | ||
1385 | 1262=>'L', | ||
1386 | 1263=>'L', | ||
1387 | 1264=>'L', | ||
1388 | 1265=>'L', | ||
1389 | 1266=>'L', | ||
1390 | 1267=>'L', | ||
1391 | 1268=>'L', | ||
1392 | 1269=>'L', | ||
1393 | 1270=>'L', | ||
1394 | 1271=>'L', | ||
1395 | 1272=>'L', | ||
1396 | 1273=>'L', | ||
1397 | 1274=>'L', | ||
1398 | 1275=>'L', | ||
1399 | 1276=>'L', | ||
1400 | 1277=>'L', | ||
1401 | 1278=>'L', | ||
1402 | 1279=>'L', | ||
1403 | 1280=>'L', | ||
1404 | 1281=>'L', | ||
1405 | 1282=>'L', | ||
1406 | 1283=>'L', | ||
1407 | 1284=>'L', | ||
1408 | 1285=>'L', | ||
1409 | 1286=>'L', | ||
1410 | 1287=>'L', | ||
1411 | 1288=>'L', | ||
1412 | 1289=>'L', | ||
1413 | 1290=>'L', | ||
1414 | 1291=>'L', | ||
1415 | 1292=>'L', | ||
1416 | 1293=>'L', | ||
1417 | 1294=>'L', | ||
1418 | 1295=>'L', | ||
1419 | 1296=>'L', | ||
1420 | 1297=>'L', | ||
1421 | 1298=>'L', | ||
1422 | 1299=>'L', | ||
1423 | 1329=>'L', | ||
1424 | 1330=>'L', | ||
1425 | 1331=>'L', | ||
1426 | 1332=>'L', | ||
1427 | 1333=>'L', | ||
1428 | 1334=>'L', | ||
1429 | 1335=>'L', | ||
1430 | 1336=>'L', | ||
1431 | 1337=>'L', | ||
1432 | 1338=>'L', | ||
1433 | 1339=>'L', | ||
1434 | 1340=>'L', | ||
1435 | 1341=>'L', | ||
1436 | 1342=>'L', | ||
1437 | 1343=>'L', | ||
1438 | 1344=>'L', | ||
1439 | 1345=>'L', | ||
1440 | 1346=>'L', | ||
1441 | 1347=>'L', | ||
1442 | 1348=>'L', | ||
1443 | 1349=>'L', | ||
1444 | 1350=>'L', | ||
1445 | 1351=>'L', | ||
1446 | 1352=>'L', | ||
1447 | 1353=>'L', | ||
1448 | 1354=>'L', | ||
1449 | 1355=>'L', | ||
1450 | 1356=>'L', | ||
1451 | 1357=>'L', | ||
1452 | 1358=>'L', | ||
1453 | 1359=>'L', | ||
1454 | 1360=>'L', | ||
1455 | 1361=>'L', | ||
1456 | 1362=>'L', | ||
1457 | 1363=>'L', | ||
1458 | 1364=>'L', | ||
1459 | 1365=>'L', | ||
1460 | 1366=>'L', | ||
1461 | 1369=>'L', | ||
1462 | 1370=>'L', | ||
1463 | 1371=>'L', | ||
1464 | 1372=>'L', | ||
1465 | 1373=>'L', | ||
1466 | 1374=>'L', | ||
1467 | 1375=>'L', | ||
1468 | 1377=>'L', | ||
1469 | 1378=>'L', | ||
1470 | 1379=>'L', | ||
1471 | 1380=>'L', | ||
1472 | 1381=>'L', | ||
1473 | 1382=>'L', | ||
1474 | 1383=>'L', | ||
1475 | 1384=>'L', | ||
1476 | 1385=>'L', | ||
1477 | 1386=>'L', | ||
1478 | 1387=>'L', | ||
1479 | 1388=>'L', | ||
1480 | 1389=>'L', | ||
1481 | 1390=>'L', | ||
1482 | 1391=>'L', | ||
1483 | 1392=>'L', | ||
1484 | 1393=>'L', | ||
1485 | 1394=>'L', | ||
1486 | 1395=>'L', | ||
1487 | 1396=>'L', | ||
1488 | 1397=>'L', | ||
1489 | 1398=>'L', | ||
1490 | 1399=>'L', | ||
1491 | 1400=>'L', | ||
1492 | 1401=>'L', | ||
1493 | 1402=>'L', | ||
1494 | 1403=>'L', | ||
1495 | 1404=>'L', | ||
1496 | 1405=>'L', | ||
1497 | 1406=>'L', | ||
1498 | 1407=>'L', | ||
1499 | 1408=>'L', | ||
1500 | 1409=>'L', | ||
1501 | 1410=>'L', | ||
1502 | 1411=>'L', | ||
1503 | 1412=>'L', | ||
1504 | 1413=>'L', | ||
1505 | 1414=>'L', | ||
1506 | 1415=>'L', | ||
1507 | 1417=>'L', | ||
1508 | 1418=>'ON', | ||
1509 | 1425=>'NSM', | ||
1510 | 1426=>'NSM', | ||
1511 | 1427=>'NSM', | ||
1512 | 1428=>'NSM', | ||
1513 | 1429=>'NSM', | ||
1514 | 1430=>'NSM', | ||
1515 | 1431=>'NSM', | ||
1516 | 1432=>'NSM', | ||
1517 | 1433=>'NSM', | ||
1518 | 1434=>'NSM', | ||
1519 | 1435=>'NSM', | ||
1520 | 1436=>'NSM', | ||
1521 | 1437=>'NSM', | ||
1522 | 1438=>'NSM', | ||
1523 | 1439=>'NSM', | ||
1524 | 1440=>'NSM', | ||
1525 | 1441=>'NSM', | ||
1526 | 1442=>'NSM', | ||
1527 | 1443=>'NSM', | ||
1528 | 1444=>'NSM', | ||
1529 | 1445=>'NSM', | ||
1530 | 1446=>'NSM', | ||
1531 | 1447=>'NSM', | ||
1532 | 1448=>'NSM', | ||
1533 | 1449=>'NSM', | ||
1534 | 1450=>'NSM', | ||
1535 | 1451=>'NSM', | ||
1536 | 1452=>'NSM', | ||
1537 | 1453=>'NSM', | ||
1538 | 1454=>'NSM', | ||
1539 | 1455=>'NSM', | ||
1540 | 1456=>'NSM', | ||
1541 | 1457=>'NSM', | ||
1542 | 1458=>'NSM', | ||
1543 | 1459=>'NSM', | ||
1544 | 1460=>'NSM', | ||
1545 | 1461=>'NSM', | ||
1546 | 1462=>'NSM', | ||
1547 | 1463=>'NSM', | ||
1548 | 1464=>'NSM', | ||
1549 | 1465=>'NSM', | ||
1550 | 1466=>'NSM', | ||
1551 | 1467=>'NSM', | ||
1552 | 1468=>'NSM', | ||
1553 | 1469=>'NSM', | ||
1554 | 1470=>'R', | ||
1555 | 1471=>'NSM', | ||
1556 | 1472=>'R', | ||
1557 | 1473=>'NSM', | ||
1558 | 1474=>'NSM', | ||
1559 | 1475=>'R', | ||
1560 | 1476=>'NSM', | ||
1561 | 1477=>'NSM', | ||
1562 | 1478=>'R', | ||
1563 | 1479=>'NSM', | ||
1564 | 1488=>'R', | ||
1565 | 1489=>'R', | ||
1566 | 1490=>'R', | ||
1567 | 1491=>'R', | ||
1568 | 1492=>'R', | ||
1569 | 1493=>'R', | ||
1570 | 1494=>'R', | ||
1571 | 1495=>'R', | ||
1572 | 1496=>'R', | ||
1573 | 1497=>'R', | ||
1574 | 1498=>'R', | ||
1575 | 1499=>'R', | ||
1576 | 1500=>'R', | ||
1577 | 1501=>'R', | ||
1578 | 1502=>'R', | ||
1579 | 1503=>'R', | ||
1580 | 1504=>'R', | ||
1581 | 1505=>'R', | ||
1582 | 1506=>'R', | ||
1583 | 1507=>'R', | ||
1584 | 1508=>'R', | ||
1585 | 1509=>'R', | ||
1586 | 1510=>'R', | ||
1587 | 1511=>'R', | ||
1588 | 1512=>'R', | ||
1589 | 1513=>'R', | ||
1590 | 1514=>'R', | ||
1591 | 1520=>'R', | ||
1592 | 1521=>'R', | ||
1593 | 1522=>'R', | ||
1594 | 1523=>'R', | ||
1595 | 1524=>'R', | ||
1596 | 1536=>'AL', | ||
1597 | 1537=>'AL', | ||
1598 | 1538=>'AL', | ||
1599 | 1539=>'AL', | ||
1600 | 1547=>'AL', | ||
1601 | 1548=>'CS', | ||
1602 | 1549=>'AL', | ||
1603 | 1550=>'ON', | ||
1604 | 1551=>'ON', | ||
1605 | 1552=>'NSM', | ||
1606 | 1553=>'NSM', | ||
1607 | 1554=>'NSM', | ||
1608 | 1555=>'NSM', | ||
1609 | 1556=>'NSM', | ||
1610 | 1557=>'NSM', | ||
1611 | 1563=>'AL', | ||
1612 | 1566=>'AL', | ||
1613 | 1567=>'AL', | ||
1614 | 1569=>'AL', | ||
1615 | 1570=>'AL', | ||
1616 | 1571=>'AL', | ||
1617 | 1572=>'AL', | ||
1618 | 1573=>'AL', | ||
1619 | 1574=>'AL', | ||
1620 | 1575=>'AL', | ||
1621 | 1576=>'AL', | ||
1622 | 1577=>'AL', | ||
1623 | 1578=>'AL', | ||
1624 | 1579=>'AL', | ||
1625 | 1580=>'AL', | ||
1626 | 1581=>'AL', | ||
1627 | 1582=>'AL', | ||
1628 | 1583=>'AL', | ||
1629 | 1584=>'AL', | ||
1630 | 1585=>'AL', | ||
1631 | 1586=>'AL', | ||
1632 | 1587=>'AL', | ||
1633 | 1588=>'AL', | ||
1634 | 1589=>'AL', | ||
1635 | 1590=>'AL', | ||
1636 | 1591=>'AL', | ||
1637 | 1592=>'AL', | ||
1638 | 1593=>'AL', | ||
1639 | 1594=>'AL', | ||
1640 | 1600=>'AL', | ||
1641 | 1601=>'AL', | ||
1642 | 1602=>'AL', | ||
1643 | 1603=>'AL', | ||
1644 | 1604=>'AL', | ||
1645 | 1605=>'AL', | ||
1646 | 1606=>'AL', | ||
1647 | 1607=>'AL', | ||
1648 | 1608=>'AL', | ||
1649 | 1609=>'AL', | ||
1650 | 1610=>'AL', | ||
1651 | 1611=>'NSM', | ||
1652 | 1612=>'NSM', | ||
1653 | 1613=>'NSM', | ||
1654 | 1614=>'NSM', | ||
1655 | 1615=>'NSM', | ||
1656 | 1616=>'NSM', | ||
1657 | 1617=>'NSM', | ||
1658 | 1618=>'NSM', | ||
1659 | 1619=>'NSM', | ||
1660 | 1620=>'NSM', | ||
1661 | 1621=>'NSM', | ||
1662 | 1622=>'NSM', | ||
1663 | 1623=>'NSM', | ||
1664 | 1624=>'NSM', | ||
1665 | 1625=>'NSM', | ||
1666 | 1626=>'NSM', | ||
1667 | 1627=>'NSM', | ||
1668 | 1628=>'NSM', | ||
1669 | 1629=>'NSM', | ||
1670 | 1630=>'NSM', | ||
1671 | 1632=>'AN', | ||
1672 | 1633=>'AN', | ||
1673 | 1634=>'AN', | ||
1674 | 1635=>'AN', | ||
1675 | 1636=>'AN', | ||
1676 | 1637=>'AN', | ||
1677 | 1638=>'AN', | ||
1678 | 1639=>'AN', | ||
1679 | 1640=>'AN', | ||
1680 | 1641=>'AN', | ||
1681 | 1642=>'ET', | ||
1682 | 1643=>'AN', | ||
1683 | 1644=>'AN', | ||
1684 | 1645=>'AL', | ||
1685 | 1646=>'AL', | ||
1686 | 1647=>'AL', | ||
1687 | 1648=>'NSM', | ||
1688 | 1649=>'AL', | ||
1689 | 1650=>'AL', | ||
1690 | 1651=>'AL', | ||
1691 | 1652=>'AL', | ||
1692 | 1653=>'AL', | ||
1693 | 1654=>'AL', | ||
1694 | 1655=>'AL', | ||
1695 | 1656=>'AL', | ||
1696 | 1657=>'AL', | ||
1697 | 1658=>'AL', | ||
1698 | 1659=>'AL', | ||
1699 | 1660=>'AL', | ||
1700 | 1661=>'AL', | ||
1701 | 1662=>'AL', | ||
1702 | 1663=>'AL', | ||
1703 | 1664=>'AL', | ||
1704 | 1665=>'AL', | ||
1705 | 1666=>'AL', | ||
1706 | 1667=>'AL', | ||
1707 | 1668=>'AL', | ||
1708 | 1669=>'AL', | ||
1709 | 1670=>'AL', | ||
1710 | 1671=>'AL', | ||
1711 | 1672=>'AL', | ||
1712 | 1673=>'AL', | ||
1713 | 1674=>'AL', | ||
1714 | 1675=>'AL', | ||
1715 | 1676=>'AL', | ||
1716 | 1677=>'AL', | ||
1717 | 1678=>'AL', | ||
1718 | 1679=>'AL', | ||
1719 | 1680=>'AL', | ||
1720 | 1681=>'AL', | ||
1721 | 1682=>'AL', | ||
1722 | 1683=>'AL', | ||
1723 | 1684=>'AL', | ||
1724 | 1685=>'AL', | ||
1725 | 1686=>'AL', | ||
1726 | 1687=>'AL', | ||
1727 | 1688=>'AL', | ||
1728 | 1689=>'AL', | ||
1729 | 1690=>'AL', | ||
1730 | 1691=>'AL', | ||
1731 | 1692=>'AL', | ||
1732 | 1693=>'AL', | ||
1733 | 1694=>'AL', | ||
1734 | 1695=>'AL', | ||
1735 | 1696=>'AL', | ||
1736 | 1697=>'AL', | ||
1737 | 1698=>'AL', | ||
1738 | 1699=>'AL', | ||
1739 | 1700=>'AL', | ||
1740 | 1701=>'AL', | ||
1741 | 1702=>'AL', | ||
1742 | 1703=>'AL', | ||
1743 | 1704=>'AL', | ||
1744 | 1705=>'AL', | ||
1745 | 1706=>'AL', | ||
1746 | 1707=>'AL', | ||
1747 | 1708=>'AL', | ||
1748 | 1709=>'AL', | ||
1749 | 1710=>'AL', | ||
1750 | 1711=>'AL', | ||
1751 | 1712=>'AL', | ||
1752 | 1713=>'AL', | ||
1753 | 1714=>'AL', | ||
1754 | 1715=>'AL', | ||
1755 | 1716=>'AL', | ||
1756 | 1717=>'AL', | ||
1757 | 1718=>'AL', | ||
1758 | 1719=>'AL', | ||
1759 | 1720=>'AL', | ||
1760 | 1721=>'AL', | ||
1761 | 1722=>'AL', | ||
1762 | 1723=>'AL', | ||
1763 | 1724=>'AL', | ||
1764 | 1725=>'AL', | ||
1765 | 1726=>'AL', | ||
1766 | 1727=>'AL', | ||
1767 | 1728=>'AL', | ||
1768 | 1729=>'AL', | ||
1769 | 1730=>'AL', | ||
1770 | 1731=>'AL', | ||
1771 | 1732=>'AL', | ||
1772 | 1733=>'AL', | ||
1773 | 1734=>'AL', | ||
1774 | 1735=>'AL', | ||
1775 | 1736=>'AL', | ||
1776 | 1737=>'AL', | ||
1777 | 1738=>'AL', | ||
1778 | 1739=>'AL', | ||
1779 | 1740=>'AL', | ||
1780 | 1741=>'AL', | ||
1781 | 1742=>'AL', | ||
1782 | 1743=>'AL', | ||
1783 | 1744=>'AL', | ||
1784 | 1745=>'AL', | ||
1785 | 1746=>'AL', | ||
1786 | 1747=>'AL', | ||
1787 | 1748=>'AL', | ||
1788 | 1749=>'AL', | ||
1789 | 1750=>'NSM', | ||
1790 | 1751=>'NSM', | ||
1791 | 1752=>'NSM', | ||
1792 | 1753=>'NSM', | ||
1793 | 1754=>'NSM', | ||
1794 | 1755=>'NSM', | ||
1795 | 1756=>'NSM', | ||
1796 | 1757=>'AL', | ||
1797 | 1758=>'NSM', | ||
1798 | 1759=>'NSM', | ||
1799 | 1760=>'NSM', | ||
1800 | 1761=>'NSM', | ||
1801 | 1762=>'NSM', | ||
1802 | 1763=>'NSM', | ||
1803 | 1764=>'NSM', | ||
1804 | 1765=>'AL', | ||
1805 | 1766=>'AL', | ||
1806 | 1767=>'NSM', | ||
1807 | 1768=>'NSM', | ||
1808 | 1769=>'ON', | ||
1809 | 1770=>'NSM', | ||
1810 | 1771=>'NSM', | ||
1811 | 1772=>'NSM', | ||
1812 | 1773=>'NSM', | ||
1813 | 1774=>'AL', | ||
1814 | 1775=>'AL', | ||
1815 | 1776=>'EN', | ||
1816 | 1777=>'EN', | ||
1817 | 1778=>'EN', | ||
1818 | 1779=>'EN', | ||
1819 | 1780=>'EN', | ||
1820 | 1781=>'EN', | ||
1821 | 1782=>'EN', | ||
1822 | 1783=>'EN', | ||
1823 | 1784=>'EN', | ||
1824 | 1785=>'EN', | ||
1825 | 1786=>'AL', | ||
1826 | 1787=>'AL', | ||
1827 | 1788=>'AL', | ||
1828 | 1789=>'AL', | ||
1829 | 1790=>'AL', | ||
1830 | 1791=>'AL', | ||
1831 | 1792=>'AL', | ||
1832 | 1793=>'AL', | ||
1833 | 1794=>'AL', | ||
1834 | 1795=>'AL', | ||
1835 | 1796=>'AL', | ||
1836 | 1797=>'AL', | ||
1837 | 1798=>'AL', | ||
1838 | 1799=>'AL', | ||
1839 | 1800=>'AL', | ||
1840 | 1801=>'AL', | ||
1841 | 1802=>'AL', | ||
1842 | 1803=>'AL', | ||
1843 | 1804=>'AL', | ||
1844 | 1805=>'AL', | ||
1845 | 1807=>'BN', | ||
1846 | 1808=>'AL', | ||
1847 | 1809=>'NSM', | ||
1848 | 1810=>'AL', | ||
1849 | 1811=>'AL', | ||
1850 | 1812=>'AL', | ||
1851 | 1813=>'AL', | ||
1852 | 1814=>'AL', | ||
1853 | 1815=>'AL', | ||
1854 | 1816=>'AL', | ||
1855 | 1817=>'AL', | ||
1856 | 1818=>'AL', | ||
1857 | 1819=>'AL', | ||
1858 | 1820=>'AL', | ||
1859 | 1821=>'AL', | ||
1860 | 1822=>'AL', | ||
1861 | 1823=>'AL', | ||
1862 | 1824=>'AL', | ||
1863 | 1825=>'AL', | ||
1864 | 1826=>'AL', | ||
1865 | 1827=>'AL', | ||
1866 | 1828=>'AL', | ||
1867 | 1829=>'AL', | ||
1868 | 1830=>'AL', | ||
1869 | 1831=>'AL', | ||
1870 | 1832=>'AL', | ||
1871 | 1833=>'AL', | ||
1872 | 1834=>'AL', | ||
1873 | 1835=>'AL', | ||
1874 | 1836=>'AL', | ||
1875 | 1837=>'AL', | ||
1876 | 1838=>'AL', | ||
1877 | 1839=>'AL', | ||
1878 | 1840=>'NSM', | ||
1879 | 1841=>'NSM', | ||
1880 | 1842=>'NSM', | ||
1881 | 1843=>'NSM', | ||
1882 | 1844=>'NSM', | ||
1883 | 1845=>'NSM', | ||
1884 | 1846=>'NSM', | ||
1885 | 1847=>'NSM', | ||
1886 | 1848=>'NSM', | ||
1887 | 1849=>'NSM', | ||
1888 | 1850=>'NSM', | ||
1889 | 1851=>'NSM', | ||
1890 | 1852=>'NSM', | ||
1891 | 1853=>'NSM', | ||
1892 | 1854=>'NSM', | ||
1893 | 1855=>'NSM', | ||
1894 | 1856=>'NSM', | ||
1895 | 1857=>'NSM', | ||
1896 | 1858=>'NSM', | ||
1897 | 1859=>'NSM', | ||
1898 | 1860=>'NSM', | ||
1899 | 1861=>'NSM', | ||
1900 | 1862=>'NSM', | ||
1901 | 1863=>'NSM', | ||
1902 | 1864=>'NSM', | ||
1903 | 1865=>'NSM', | ||
1904 | 1866=>'NSM', | ||
1905 | 1869=>'AL', | ||
1906 | 1870=>'AL', | ||
1907 | 1871=>'AL', | ||
1908 | 1872=>'AL', | ||
1909 | 1873=>'AL', | ||
1910 | 1874=>'AL', | ||
1911 | 1875=>'AL', | ||
1912 | 1876=>'AL', | ||
1913 | 1877=>'AL', | ||
1914 | 1878=>'AL', | ||
1915 | 1879=>'AL', | ||
1916 | 1880=>'AL', | ||
1917 | 1881=>'AL', | ||
1918 | 1882=>'AL', | ||
1919 | 1883=>'AL', | ||
1920 | 1884=>'AL', | ||
1921 | 1885=>'AL', | ||
1922 | 1886=>'AL', | ||
1923 | 1887=>'AL', | ||
1924 | 1888=>'AL', | ||
1925 | 1889=>'AL', | ||
1926 | 1890=>'AL', | ||
1927 | 1891=>'AL', | ||
1928 | 1892=>'AL', | ||
1929 | 1893=>'AL', | ||
1930 | 1894=>'AL', | ||
1931 | 1895=>'AL', | ||
1932 | 1896=>'AL', | ||
1933 | 1897=>'AL', | ||
1934 | 1898=>'AL', | ||
1935 | 1899=>'AL', | ||
1936 | 1900=>'AL', | ||
1937 | 1901=>'AL', | ||
1938 | 1920=>'AL', | ||
1939 | 1921=>'AL', | ||
1940 | 1922=>'AL', | ||
1941 | 1923=>'AL', | ||
1942 | 1924=>'AL', | ||
1943 | 1925=>'AL', | ||
1944 | 1926=>'AL', | ||
1945 | 1927=>'AL', | ||
1946 | 1928=>'AL', | ||
1947 | 1929=>'AL', | ||
1948 | 1930=>'AL', | ||
1949 | 1931=>'AL', | ||
1950 | 1932=>'AL', | ||
1951 | 1933=>'AL', | ||
1952 | 1934=>'AL', | ||
1953 | 1935=>'AL', | ||
1954 | 1936=>'AL', | ||
1955 | 1937=>'AL', | ||
1956 | 1938=>'AL', | ||
1957 | 1939=>'AL', | ||
1958 | 1940=>'AL', | ||
1959 | 1941=>'AL', | ||
1960 | 1942=>'AL', | ||
1961 | 1943=>'AL', | ||
1962 | 1944=>'AL', | ||
1963 | 1945=>'AL', | ||
1964 | 1946=>'AL', | ||
1965 | 1947=>'AL', | ||
1966 | 1948=>'AL', | ||
1967 | 1949=>'AL', | ||
1968 | 1950=>'AL', | ||
1969 | 1951=>'AL', | ||
1970 | 1952=>'AL', | ||
1971 | 1953=>'AL', | ||
1972 | 1954=>'AL', | ||
1973 | 1955=>'AL', | ||
1974 | 1956=>'AL', | ||
1975 | 1957=>'AL', | ||
1976 | 1958=>'NSM', | ||
1977 | 1959=>'NSM', | ||
1978 | 1960=>'NSM', | ||
1979 | 1961=>'NSM', | ||
1980 | 1962=>'NSM', | ||
1981 | 1963=>'NSM', | ||
1982 | 1964=>'NSM', | ||
1983 | 1965=>'NSM', | ||
1984 | 1966=>'NSM', | ||
1985 | 1967=>'NSM', | ||
1986 | 1968=>'NSM', | ||
1987 | 1969=>'AL', | ||
1988 | 1984=>'R', | ||
1989 | 1985=>'R', | ||
1990 | 1986=>'R', | ||
1991 | 1987=>'R', | ||
1992 | 1988=>'R', | ||
1993 | 1989=>'R', | ||
1994 | 1990=>'R', | ||
1995 | 1991=>'R', | ||
1996 | 1992=>'R', | ||
1997 | 1993=>'R', | ||
1998 | 1994=>'R', | ||
1999 | 1995=>'R', | ||
2000 | 1996=>'R', | ||
2001 | 1997=>'R', | ||
2002 | 1998=>'R', | ||
2003 | 1999=>'R', | ||
2004 | 2000=>'R', | ||
2005 | 2001=>'R', | ||
2006 | 2002=>'R', | ||
2007 | 2003=>'R', | ||
2008 | 2004=>'R', | ||
2009 | 2005=>'R', | ||
2010 | 2006=>'R', | ||
2011 | 2007=>'R', | ||
2012 | 2008=>'R', | ||
2013 | 2009=>'R', | ||
2014 | 2010=>'R', | ||
2015 | 2011=>'R', | ||
2016 | 2012=>'R', | ||
2017 | 2013=>'R', | ||
2018 | 2014=>'R', | ||
2019 | 2015=>'R', | ||
2020 | 2016=>'R', | ||
2021 | 2017=>'R', | ||
2022 | 2018=>'R', | ||
2023 | 2019=>'R', | ||
2024 | 2020=>'R', | ||
2025 | 2021=>'R', | ||
2026 | 2022=>'R', | ||
2027 | 2023=>'R', | ||
2028 | 2024=>'R', | ||
2029 | 2025=>'R', | ||
2030 | 2026=>'R', | ||
2031 | 2027=>'NSM', | ||
2032 | 2028=>'NSM', | ||
2033 | 2029=>'NSM', | ||
2034 | 2030=>'NSM', | ||
2035 | 2031=>'NSM', | ||
2036 | 2032=>'NSM', | ||
2037 | 2033=>'NSM', | ||
2038 | 2034=>'NSM', | ||
2039 | 2035=>'NSM', | ||
2040 | 2036=>'R', | ||
2041 | 2037=>'R', | ||
2042 | 2038=>'ON', | ||
2043 | 2039=>'ON', | ||
2044 | 2040=>'ON', | ||
2045 | 2041=>'ON', | ||
2046 | 2042=>'R', | ||
2047 | 2305=>'NSM', | ||
2048 | 2306=>'NSM', | ||
2049 | 2307=>'L', | ||
2050 | 2308=>'L', | ||
2051 | 2309=>'L', | ||
2052 | 2310=>'L', | ||
2053 | 2311=>'L', | ||
2054 | 2312=>'L', | ||
2055 | 2313=>'L', | ||
2056 | 2314=>'L', | ||
2057 | 2315=>'L', | ||
2058 | 2316=>'L', | ||
2059 | 2317=>'L', | ||
2060 | 2318=>'L', | ||
2061 | 2319=>'L', | ||
2062 | 2320=>'L', | ||
2063 | 2321=>'L', | ||
2064 | 2322=>'L', | ||
2065 | 2323=>'L', | ||
2066 | 2324=>'L', | ||
2067 | 2325=>'L', | ||
2068 | 2326=>'L', | ||
2069 | 2327=>'L', | ||
2070 | 2328=>'L', | ||
2071 | 2329=>'L', | ||
2072 | 2330=>'L', | ||
2073 | 2331=>'L', | ||
2074 | 2332=>'L', | ||
2075 | 2333=>'L', | ||
2076 | 2334=>'L', | ||
2077 | 2335=>'L', | ||
2078 | 2336=>'L', | ||
2079 | 2337=>'L', | ||
2080 | 2338=>'L', | ||
2081 | 2339=>'L', | ||
2082 | 2340=>'L', | ||
2083 | 2341=>'L', | ||
2084 | 2342=>'L', | ||
2085 | 2343=>'L', | ||
2086 | 2344=>'L', | ||
2087 | 2345=>'L', | ||
2088 | 2346=>'L', | ||
2089 | 2347=>'L', | ||
2090 | 2348=>'L', | ||
2091 | 2349=>'L', | ||
2092 | 2350=>'L', | ||
2093 | 2351=>'L', | ||
2094 | 2352=>'L', | ||
2095 | 2353=>'L', | ||
2096 | 2354=>'L', | ||
2097 | 2355=>'L', | ||
2098 | 2356=>'L', | ||
2099 | 2357=>'L', | ||
2100 | 2358=>'L', | ||
2101 | 2359=>'L', | ||
2102 | 2360=>'L', | ||
2103 | 2361=>'L', | ||
2104 | 2364=>'NSM', | ||
2105 | 2365=>'L', | ||
2106 | 2366=>'L', | ||
2107 | 2367=>'L', | ||
2108 | 2368=>'L', | ||
2109 | 2369=>'NSM', | ||
2110 | 2370=>'NSM', | ||
2111 | 2371=>'NSM', | ||
2112 | 2372=>'NSM', | ||
2113 | 2373=>'NSM', | ||
2114 | 2374=>'NSM', | ||
2115 | 2375=>'NSM', | ||
2116 | 2376=>'NSM', | ||
2117 | 2377=>'L', | ||
2118 | 2378=>'L', | ||
2119 | 2379=>'L', | ||
2120 | 2380=>'L', | ||
2121 | 2381=>'NSM', | ||
2122 | 2384=>'L', | ||
2123 | 2385=>'NSM', | ||
2124 | 2386=>'NSM', | ||
2125 | 2387=>'NSM', | ||
2126 | 2388=>'NSM', | ||
2127 | 2392=>'L', | ||
2128 | 2393=>'L', | ||
2129 | 2394=>'L', | ||
2130 | 2395=>'L', | ||
2131 | 2396=>'L', | ||
2132 | 2397=>'L', | ||
2133 | 2398=>'L', | ||
2134 | 2399=>'L', | ||
2135 | 2400=>'L', | ||
2136 | 2401=>'L', | ||
2137 | 2402=>'NSM', | ||
2138 | 2403=>'NSM', | ||
2139 | 2404=>'L', | ||
2140 | 2405=>'L', | ||
2141 | 2406=>'L', | ||
2142 | 2407=>'L', | ||
2143 | 2408=>'L', | ||
2144 | 2409=>'L', | ||
2145 | 2410=>'L', | ||
2146 | 2411=>'L', | ||
2147 | 2412=>'L', | ||
2148 | 2413=>'L', | ||
2149 | 2414=>'L', | ||
2150 | 2415=>'L', | ||
2151 | 2416=>'L', | ||
2152 | 2427=>'L', | ||
2153 | 2428=>'L', | ||
2154 | 2429=>'L', | ||
2155 | 2430=>'L', | ||
2156 | 2431=>'L', | ||
2157 | 2433=>'NSM', | ||
2158 | 2434=>'L', | ||
2159 | 2435=>'L', | ||
2160 | 2437=>'L', | ||
2161 | 2438=>'L', | ||
2162 | 2439=>'L', | ||
2163 | 2440=>'L', | ||
2164 | 2441=>'L', | ||
2165 | 2442=>'L', | ||
2166 | 2443=>'L', | ||
2167 | 2444=>'L', | ||
2168 | 2447=>'L', | ||
2169 | 2448=>'L', | ||
2170 | 2451=>'L', | ||
2171 | 2452=>'L', | ||
2172 | 2453=>'L', | ||
2173 | 2454=>'L', | ||
2174 | 2455=>'L', | ||
2175 | 2456=>'L', | ||
2176 | 2457=>'L', | ||
2177 | 2458=>'L', | ||
2178 | 2459=>'L', | ||
2179 | 2460=>'L', | ||
2180 | 2461=>'L', | ||
2181 | 2462=>'L', | ||
2182 | 2463=>'L', | ||
2183 | 2464=>'L', | ||
2184 | 2465=>'L', | ||
2185 | 2466=>'L', | ||
2186 | 2467=>'L', | ||
2187 | 2468=>'L', | ||
2188 | 2469=>'L', | ||
2189 | 2470=>'L', | ||
2190 | 2471=>'L', | ||
2191 | 2472=>'L', | ||
2192 | 2474=>'L', | ||
2193 | 2475=>'L', | ||
2194 | 2476=>'L', | ||
2195 | 2477=>'L', | ||
2196 | 2478=>'L', | ||
2197 | 2479=>'L', | ||
2198 | 2480=>'L', | ||
2199 | 2482=>'L', | ||
2200 | 2486=>'L', | ||
2201 | 2487=>'L', | ||
2202 | 2488=>'L', | ||
2203 | 2489=>'L', | ||
2204 | 2492=>'NSM', | ||
2205 | 2493=>'L', | ||
2206 | 2494=>'L', | ||
2207 | 2495=>'L', | ||
2208 | 2496=>'L', | ||
2209 | 2497=>'NSM', | ||
2210 | 2498=>'NSM', | ||
2211 | 2499=>'NSM', | ||
2212 | 2500=>'NSM', | ||
2213 | 2503=>'L', | ||
2214 | 2504=>'L', | ||
2215 | 2507=>'L', | ||
2216 | 2508=>'L', | ||
2217 | 2509=>'NSM', | ||
2218 | 2510=>'L', | ||
2219 | 2519=>'L', | ||
2220 | 2524=>'L', | ||
2221 | 2525=>'L', | ||
2222 | 2527=>'L', | ||
2223 | 2528=>'L', | ||
2224 | 2529=>'L', | ||
2225 | 2530=>'NSM', | ||
2226 | 2531=>'NSM', | ||
2227 | 2534=>'L', | ||
2228 | 2535=>'L', | ||
2229 | 2536=>'L', | ||
2230 | 2537=>'L', | ||
2231 | 2538=>'L', | ||
2232 | 2539=>'L', | ||
2233 | 2540=>'L', | ||
2234 | 2541=>'L', | ||
2235 | 2542=>'L', | ||
2236 | 2543=>'L', | ||
2237 | 2544=>'L', | ||
2238 | 2545=>'L', | ||
2239 | 2546=>'ET', | ||
2240 | 2547=>'ET', | ||
2241 | 2548=>'L', | ||
2242 | 2549=>'L', | ||
2243 | 2550=>'L', | ||
2244 | 2551=>'L', | ||
2245 | 2552=>'L', | ||
2246 | 2553=>'L', | ||
2247 | 2554=>'L', | ||
2248 | 2561=>'NSM', | ||
2249 | 2562=>'NSM', | ||
2250 | 2563=>'L', | ||
2251 | 2565=>'L', | ||
2252 | 2566=>'L', | ||
2253 | 2567=>'L', | ||
2254 | 2568=>'L', | ||
2255 | 2569=>'L', | ||
2256 | 2570=>'L', | ||
2257 | 2575=>'L', | ||
2258 | 2576=>'L', | ||
2259 | 2579=>'L', | ||
2260 | 2580=>'L', | ||
2261 | 2581=>'L', | ||
2262 | 2582=>'L', | ||
2263 | 2583=>'L', | ||
2264 | 2584=>'L', | ||
2265 | 2585=>'L', | ||
2266 | 2586=>'L', | ||
2267 | 2587=>'L', | ||
2268 | 2588=>'L', | ||
2269 | 2589=>'L', | ||
2270 | 2590=>'L', | ||
2271 | 2591=>'L', | ||
2272 | 2592=>'L', | ||
2273 | 2593=>'L', | ||
2274 | 2594=>'L', | ||
2275 | 2595=>'L', | ||
2276 | 2596=>'L', | ||
2277 | 2597=>'L', | ||
2278 | 2598=>'L', | ||
2279 | 2599=>'L', | ||
2280 | 2600=>'L', | ||
2281 | 2602=>'L', | ||
2282 | 2603=>'L', | ||
2283 | 2604=>'L', | ||
2284 | 2605=>'L', | ||
2285 | 2606=>'L', | ||
2286 | 2607=>'L', | ||
2287 | 2608=>'L', | ||
2288 | 2610=>'L', | ||
2289 | 2611=>'L', | ||
2290 | 2613=>'L', | ||
2291 | 2614=>'L', | ||
2292 | 2616=>'L', | ||
2293 | 2617=>'L', | ||
2294 | 2620=>'NSM', | ||
2295 | 2622=>'L', | ||
2296 | 2623=>'L', | ||
2297 | 2624=>'L', | ||
2298 | 2625=>'NSM', | ||
2299 | 2626=>'NSM', | ||
2300 | 2631=>'NSM', | ||
2301 | 2632=>'NSM', | ||
2302 | 2635=>'NSM', | ||
2303 | 2636=>'NSM', | ||
2304 | 2637=>'NSM', | ||
2305 | 2649=>'L', | ||
2306 | 2650=>'L', | ||
2307 | 2651=>'L', | ||
2308 | 2652=>'L', | ||
2309 | 2654=>'L', | ||
2310 | 2662=>'L', | ||
2311 | 2663=>'L', | ||
2312 | 2664=>'L', | ||
2313 | 2665=>'L', | ||
2314 | 2666=>'L', | ||
2315 | 2667=>'L', | ||
2316 | 2668=>'L', | ||
2317 | 2669=>'L', | ||
2318 | 2670=>'L', | ||
2319 | 2671=>'L', | ||
2320 | 2672=>'NSM', | ||
2321 | 2673=>'NSM', | ||
2322 | 2674=>'L', | ||
2323 | 2675=>'L', | ||
2324 | 2676=>'L', | ||
2325 | 2689=>'NSM', | ||
2326 | 2690=>'NSM', | ||
2327 | 2691=>'L', | ||
2328 | 2693=>'L', | ||
2329 | 2694=>'L', | ||
2330 | 2695=>'L', | ||
2331 | 2696=>'L', | ||
2332 | 2697=>'L', | ||
2333 | 2698=>'L', | ||
2334 | 2699=>'L', | ||
2335 | 2700=>'L', | ||
2336 | 2701=>'L', | ||
2337 | 2703=>'L', | ||
2338 | 2704=>'L', | ||
2339 | 2705=>'L', | ||
2340 | 2707=>'L', | ||
2341 | 2708=>'L', | ||
2342 | 2709=>'L', | ||
2343 | 2710=>'L', | ||
2344 | 2711=>'L', | ||
2345 | 2712=>'L', | ||
2346 | 2713=>'L', | ||
2347 | 2714=>'L', | ||
2348 | 2715=>'L', | ||
2349 | 2716=>'L', | ||
2350 | 2717=>'L', | ||
2351 | 2718=>'L', | ||
2352 | 2719=>'L', | ||
2353 | 2720=>'L', | ||
2354 | 2721=>'L', | ||
2355 | 2722=>'L', | ||
2356 | 2723=>'L', | ||
2357 | 2724=>'L', | ||
2358 | 2725=>'L', | ||
2359 | 2726=>'L', | ||
2360 | 2727=>'L', | ||
2361 | 2728=>'L', | ||
2362 | 2730=>'L', | ||
2363 | 2731=>'L', | ||
2364 | 2732=>'L', | ||
2365 | 2733=>'L', | ||
2366 | 2734=>'L', | ||
2367 | 2735=>'L', | ||
2368 | 2736=>'L', | ||
2369 | 2738=>'L', | ||
2370 | 2739=>'L', | ||
2371 | 2741=>'L', | ||
2372 | 2742=>'L', | ||
2373 | 2743=>'L', | ||
2374 | 2744=>'L', | ||
2375 | 2745=>'L', | ||
2376 | 2748=>'NSM', | ||
2377 | 2749=>'L', | ||
2378 | 2750=>'L', | ||
2379 | 2751=>'L', | ||
2380 | 2752=>'L', | ||
2381 | 2753=>'NSM', | ||
2382 | 2754=>'NSM', | ||
2383 | 2755=>'NSM', | ||
2384 | 2756=>'NSM', | ||
2385 | 2757=>'NSM', | ||
2386 | 2759=>'NSM', | ||
2387 | 2760=>'NSM', | ||
2388 | 2761=>'L', | ||
2389 | 2763=>'L', | ||
2390 | 2764=>'L', | ||
2391 | 2765=>'NSM', | ||
2392 | 2768=>'L', | ||
2393 | 2784=>'L', | ||
2394 | 2785=>'L', | ||
2395 | 2786=>'NSM', | ||
2396 | 2787=>'NSM', | ||
2397 | 2790=>'L', | ||
2398 | 2791=>'L', | ||
2399 | 2792=>'L', | ||
2400 | 2793=>'L', | ||
2401 | 2794=>'L', | ||
2402 | 2795=>'L', | ||
2403 | 2796=>'L', | ||
2404 | 2797=>'L', | ||
2405 | 2798=>'L', | ||
2406 | 2799=>'L', | ||
2407 | 2801=>'ET', | ||
2408 | 2817=>'NSM', | ||
2409 | 2818=>'L', | ||
2410 | 2819=>'L', | ||
2411 | 2821=>'L', | ||
2412 | 2822=>'L', | ||
2413 | 2823=>'L', | ||
2414 | 2824=>'L', | ||
2415 | 2825=>'L', | ||
2416 | 2826=>'L', | ||
2417 | 2827=>'L', | ||
2418 | 2828=>'L', | ||
2419 | 2831=>'L', | ||
2420 | 2832=>'L', | ||
2421 | 2835=>'L', | ||
2422 | 2836=>'L', | ||
2423 | 2837=>'L', | ||
2424 | 2838=>'L', | ||
2425 | 2839=>'L', | ||
2426 | 2840=>'L', | ||
2427 | 2841=>'L', | ||
2428 | 2842=>'L', | ||
2429 | 2843=>'L', | ||
2430 | 2844=>'L', | ||
2431 | 2845=>'L', | ||
2432 | 2846=>'L', | ||
2433 | 2847=>'L', | ||
2434 | 2848=>'L', | ||
2435 | 2849=>'L', | ||
2436 | 2850=>'L', | ||
2437 | 2851=>'L', | ||
2438 | 2852=>'L', | ||
2439 | 2853=>'L', | ||
2440 | 2854=>'L', | ||
2441 | 2855=>'L', | ||
2442 | 2856=>'L', | ||
2443 | 2858=>'L', | ||
2444 | 2859=>'L', | ||
2445 | 2860=>'L', | ||
2446 | 2861=>'L', | ||
2447 | 2862=>'L', | ||
2448 | 2863=>'L', | ||
2449 | 2864=>'L', | ||
2450 | 2866=>'L', | ||
2451 | 2867=>'L', | ||
2452 | 2869=>'L', | ||
2453 | 2870=>'L', | ||
2454 | 2871=>'L', | ||
2455 | 2872=>'L', | ||
2456 | 2873=>'L', | ||
2457 | 2876=>'NSM', | ||
2458 | 2877=>'L', | ||
2459 | 2878=>'L', | ||
2460 | 2879=>'NSM', | ||
2461 | 2880=>'L', | ||
2462 | 2881=>'NSM', | ||
2463 | 2882=>'NSM', | ||
2464 | 2883=>'NSM', | ||
2465 | 2887=>'L', | ||
2466 | 2888=>'L', | ||
2467 | 2891=>'L', | ||
2468 | 2892=>'L', | ||
2469 | 2893=>'NSM', | ||
2470 | 2902=>'NSM', | ||
2471 | 2903=>'L', | ||
2472 | 2908=>'L', | ||
2473 | 2909=>'L', | ||
2474 | 2911=>'L', | ||
2475 | 2912=>'L', | ||
2476 | 2913=>'L', | ||
2477 | 2918=>'L', | ||
2478 | 2919=>'L', | ||
2479 | 2920=>'L', | ||
2480 | 2921=>'L', | ||
2481 | 2922=>'L', | ||
2482 | 2923=>'L', | ||
2483 | 2924=>'L', | ||
2484 | 2925=>'L', | ||
2485 | 2926=>'L', | ||
2486 | 2927=>'L', | ||
2487 | 2928=>'L', | ||
2488 | 2929=>'L', | ||
2489 | 2946=>'NSM', | ||
2490 | 2947=>'L', | ||
2491 | 2949=>'L', | ||
2492 | 2950=>'L', | ||
2493 | 2951=>'L', | ||
2494 | 2952=>'L', | ||
2495 | 2953=>'L', | ||
2496 | 2954=>'L', | ||
2497 | 2958=>'L', | ||
2498 | 2959=>'L', | ||
2499 | 2960=>'L', | ||
2500 | 2962=>'L', | ||
2501 | 2963=>'L', | ||
2502 | 2964=>'L', | ||
2503 | 2965=>'L', | ||
2504 | 2969=>'L', | ||
2505 | 2970=>'L', | ||
2506 | 2972=>'L', | ||
2507 | 2974=>'L', | ||
2508 | 2975=>'L', | ||
2509 | 2979=>'L', | ||
2510 | 2980=>'L', | ||
2511 | 2984=>'L', | ||
2512 | 2985=>'L', | ||
2513 | 2986=>'L', | ||
2514 | 2990=>'L', | ||
2515 | 2991=>'L', | ||
2516 | 2992=>'L', | ||
2517 | 2993=>'L', | ||
2518 | 2994=>'L', | ||
2519 | 2995=>'L', | ||
2520 | 2996=>'L', | ||
2521 | 2997=>'L', | ||
2522 | 2998=>'L', | ||
2523 | 2999=>'L', | ||
2524 | 3000=>'L', | ||
2525 | 3001=>'L', | ||
2526 | 3006=>'L', | ||
2527 | 3007=>'L', | ||
2528 | 3008=>'NSM', | ||
2529 | 3009=>'L', | ||
2530 | 3010=>'L', | ||
2531 | 3014=>'L', | ||
2532 | 3015=>'L', | ||
2533 | 3016=>'L', | ||
2534 | 3018=>'L', | ||
2535 | 3019=>'L', | ||
2536 | 3020=>'L', | ||
2537 | 3021=>'NSM', | ||
2538 | 3031=>'L', | ||
2539 | 3046=>'L', | ||
2540 | 3047=>'L', | ||
2541 | 3048=>'L', | ||
2542 | 3049=>'L', | ||
2543 | 3050=>'L', | ||
2544 | 3051=>'L', | ||
2545 | 3052=>'L', | ||
2546 | 3053=>'L', | ||
2547 | 3054=>'L', | ||
2548 | 3055=>'L', | ||
2549 | 3056=>'L', | ||
2550 | 3057=>'L', | ||
2551 | 3058=>'L', | ||
2552 | 3059=>'ON', | ||
2553 | 3060=>'ON', | ||
2554 | 3061=>'ON', | ||
2555 | 3062=>'ON', | ||
2556 | 3063=>'ON', | ||
2557 | 3064=>'ON', | ||
2558 | 3065=>'ET', | ||
2559 | 3066=>'ON', | ||
2560 | 3073=>'L', | ||
2561 | 3074=>'L', | ||
2562 | 3075=>'L', | ||
2563 | 3077=>'L', | ||
2564 | 3078=>'L', | ||
2565 | 3079=>'L', | ||
2566 | 3080=>'L', | ||
2567 | 3081=>'L', | ||
2568 | 3082=>'L', | ||
2569 | 3083=>'L', | ||
2570 | 3084=>'L', | ||
2571 | 3086=>'L', | ||
2572 | 3087=>'L', | ||
2573 | 3088=>'L', | ||
2574 | 3090=>'L', | ||
2575 | 3091=>'L', | ||
2576 | 3092=>'L', | ||
2577 | 3093=>'L', | ||
2578 | 3094=>'L', | ||
2579 | 3095=>'L', | ||
2580 | 3096=>'L', | ||
2581 | 3097=>'L', | ||
2582 | 3098=>'L', | ||
2583 | 3099=>'L', | ||
2584 | 3100=>'L', | ||
2585 | 3101=>'L', | ||
2586 | 3102=>'L', | ||
2587 | 3103=>'L', | ||
2588 | 3104=>'L', | ||
2589 | 3105=>'L', | ||
2590 | 3106=>'L', | ||
2591 | 3107=>'L', | ||
2592 | 3108=>'L', | ||
2593 | 3109=>'L', | ||
2594 | 3110=>'L', | ||
2595 | 3111=>'L', | ||
2596 | 3112=>'L', | ||
2597 | 3114=>'L', | ||
2598 | 3115=>'L', | ||
2599 | 3116=>'L', | ||
2600 | 3117=>'L', | ||
2601 | 3118=>'L', | ||
2602 | 3119=>'L', | ||
2603 | 3120=>'L', | ||
2604 | 3121=>'L', | ||
2605 | 3122=>'L', | ||
2606 | 3123=>'L', | ||
2607 | 3125=>'L', | ||
2608 | 3126=>'L', | ||
2609 | 3127=>'L', | ||
2610 | 3128=>'L', | ||
2611 | 3129=>'L', | ||
2612 | 3134=>'NSM', | ||
2613 | 3135=>'NSM', | ||
2614 | 3136=>'NSM', | ||
2615 | 3137=>'L', | ||
2616 | 3138=>'L', | ||
2617 | 3139=>'L', | ||
2618 | 3140=>'L', | ||
2619 | 3142=>'NSM', | ||
2620 | 3143=>'NSM', | ||
2621 | 3144=>'NSM', | ||
2622 | 3146=>'NSM', | ||
2623 | 3147=>'NSM', | ||
2624 | 3148=>'NSM', | ||
2625 | 3149=>'NSM', | ||
2626 | 3157=>'NSM', | ||
2627 | 3158=>'NSM', | ||
2628 | 3168=>'L', | ||
2629 | 3169=>'L', | ||
2630 | 3174=>'L', | ||
2631 | 3175=>'L', | ||
2632 | 3176=>'L', | ||
2633 | 3177=>'L', | ||
2634 | 3178=>'L', | ||
2635 | 3179=>'L', | ||
2636 | 3180=>'L', | ||
2637 | 3181=>'L', | ||
2638 | 3182=>'L', | ||
2639 | 3183=>'L', | ||
2640 | 3202=>'L', | ||
2641 | 3203=>'L', | ||
2642 | 3205=>'L', | ||
2643 | 3206=>'L', | ||
2644 | 3207=>'L', | ||
2645 | 3208=>'L', | ||
2646 | 3209=>'L', | ||
2647 | 3210=>'L', | ||
2648 | 3211=>'L', | ||
2649 | 3212=>'L', | ||
2650 | 3214=>'L', | ||
2651 | 3215=>'L', | ||
2652 | 3216=>'L', | ||
2653 | 3218=>'L', | ||
2654 | 3219=>'L', | ||
2655 | 3220=>'L', | ||
2656 | 3221=>'L', | ||
2657 | 3222=>'L', | ||
2658 | 3223=>'L', | ||
2659 | 3224=>'L', | ||
2660 | 3225=>'L', | ||
2661 | 3226=>'L', | ||
2662 | 3227=>'L', | ||
2663 | 3228=>'L', | ||
2664 | 3229=>'L', | ||
2665 | 3230=>'L', | ||
2666 | 3231=>'L', | ||
2667 | 3232=>'L', | ||
2668 | 3233=>'L', | ||
2669 | 3234=>'L', | ||
2670 | 3235=>'L', | ||
2671 | 3236=>'L', | ||
2672 | 3237=>'L', | ||
2673 | 3238=>'L', | ||
2674 | 3239=>'L', | ||
2675 | 3240=>'L', | ||
2676 | 3242=>'L', | ||
2677 | 3243=>'L', | ||
2678 | 3244=>'L', | ||
2679 | 3245=>'L', | ||
2680 | 3246=>'L', | ||
2681 | 3247=>'L', | ||
2682 | 3248=>'L', | ||
2683 | 3249=>'L', | ||
2684 | 3250=>'L', | ||
2685 | 3251=>'L', | ||
2686 | 3253=>'L', | ||
2687 | 3254=>'L', | ||
2688 | 3255=>'L', | ||
2689 | 3256=>'L', | ||
2690 | 3257=>'L', | ||
2691 | 3260=>'NSM', | ||
2692 | 3261=>'L', | ||
2693 | 3262=>'L', | ||
2694 | 3263=>'L', | ||
2695 | 3264=>'L', | ||
2696 | 3265=>'L', | ||
2697 | 3266=>'L', | ||
2698 | 3267=>'L', | ||
2699 | 3268=>'L', | ||
2700 | 3270=>'L', | ||
2701 | 3271=>'L', | ||
2702 | 3272=>'L', | ||
2703 | 3274=>'L', | ||
2704 | 3275=>'L', | ||
2705 | 3276=>'NSM', | ||
2706 | 3277=>'NSM', | ||
2707 | 3285=>'L', | ||
2708 | 3286=>'L', | ||
2709 | 3294=>'L', | ||
2710 | 3296=>'L', | ||
2711 | 3297=>'L', | ||
2712 | 3298=>'NSM', | ||
2713 | 3299=>'NSM', | ||
2714 | 3302=>'L', | ||
2715 | 3303=>'L', | ||
2716 | 3304=>'L', | ||
2717 | 3305=>'L', | ||
2718 | 3306=>'L', | ||
2719 | 3307=>'L', | ||
2720 | 3308=>'L', | ||
2721 | 3309=>'L', | ||
2722 | 3310=>'L', | ||
2723 | 3311=>'L', | ||
2724 | 3313=>'ON', | ||
2725 | 3314=>'ON', | ||
2726 | 3330=>'L', | ||
2727 | 3331=>'L', | ||
2728 | 3333=>'L', | ||
2729 | 3334=>'L', | ||
2730 | 3335=>'L', | ||
2731 | 3336=>'L', | ||
2732 | 3337=>'L', | ||
2733 | 3338=>'L', | ||
2734 | 3339=>'L', | ||
2735 | 3340=>'L', | ||
2736 | 3342=>'L', | ||
2737 | 3343=>'L', | ||
2738 | 3344=>'L', | ||
2739 | 3346=>'L', | ||
2740 | 3347=>'L', | ||
2741 | 3348=>'L', | ||
2742 | 3349=>'L', | ||
2743 | 3350=>'L', | ||
2744 | 3351=>'L', | ||
2745 | 3352=>'L', | ||
2746 | 3353=>'L', | ||
2747 | 3354=>'L', | ||
2748 | 3355=>'L', | ||
2749 | 3356=>'L', | ||
2750 | 3357=>'L', | ||
2751 | 3358=>'L', | ||
2752 | 3359=>'L', | ||
2753 | 3360=>'L', | ||
2754 | 3361=>'L', | ||
2755 | 3362=>'L', | ||
2756 | 3363=>'L', | ||
2757 | 3364=>'L', | ||
2758 | 3365=>'L', | ||
2759 | 3366=>'L', | ||
2760 | 3367=>'L', | ||
2761 | 3368=>'L', | ||
2762 | 3370=>'L', | ||
2763 | 3371=>'L', | ||
2764 | 3372=>'L', | ||
2765 | 3373=>'L', | ||
2766 | 3374=>'L', | ||
2767 | 3375=>'L', | ||
2768 | 3376=>'L', | ||
2769 | 3377=>'L', | ||
2770 | 3378=>'L', | ||
2771 | 3379=>'L', | ||
2772 | 3380=>'L', | ||
2773 | 3381=>'L', | ||
2774 | 3382=>'L', | ||
2775 | 3383=>'L', | ||
2776 | 3384=>'L', | ||
2777 | 3385=>'L', | ||
2778 | 3390=>'L', | ||
2779 | 3391=>'L', | ||
2780 | 3392=>'L', | ||
2781 | 3393=>'NSM', | ||
2782 | 3394=>'NSM', | ||
2783 | 3395=>'NSM', | ||
2784 | 3398=>'L', | ||
2785 | 3399=>'L', | ||
2786 | 3400=>'L', | ||
2787 | 3402=>'L', | ||
2788 | 3403=>'L', | ||
2789 | 3404=>'L', | ||
2790 | 3405=>'NSM', | ||
2791 | 3415=>'L', | ||
2792 | 3424=>'L', | ||
2793 | 3425=>'L', | ||
2794 | 3430=>'L', | ||
2795 | 3431=>'L', | ||
2796 | 3432=>'L', | ||
2797 | 3433=>'L', | ||
2798 | 3434=>'L', | ||
2799 | 3435=>'L', | ||
2800 | 3436=>'L', | ||
2801 | 3437=>'L', | ||
2802 | 3438=>'L', | ||
2803 | 3439=>'L', | ||
2804 | 3458=>'L', | ||
2805 | 3459=>'L', | ||
2806 | 3461=>'L', | ||
2807 | 3462=>'L', | ||
2808 | 3463=>'L', | ||
2809 | 3464=>'L', | ||
2810 | 3465=>'L', | ||
2811 | 3466=>'L', | ||
2812 | 3467=>'L', | ||
2813 | 3468=>'L', | ||
2814 | 3469=>'L', | ||
2815 | 3470=>'L', | ||
2816 | 3471=>'L', | ||
2817 | 3472=>'L', | ||
2818 | 3473=>'L', | ||
2819 | 3474=>'L', | ||
2820 | 3475=>'L', | ||
2821 | 3476=>'L', | ||
2822 | 3477=>'L', | ||
2823 | 3478=>'L', | ||
2824 | 3482=>'L', | ||
2825 | 3483=>'L', | ||
2826 | 3484=>'L', | ||
2827 | 3485=>'L', | ||
2828 | 3486=>'L', | ||
2829 | 3487=>'L', | ||
2830 | 3488=>'L', | ||
2831 | 3489=>'L', | ||
2832 | 3490=>'L', | ||
2833 | 3491=>'L', | ||
2834 | 3492=>'L', | ||
2835 | 3493=>'L', | ||
2836 | 3494=>'L', | ||
2837 | 3495=>'L', | ||
2838 | 3496=>'L', | ||
2839 | 3497=>'L', | ||
2840 | 3498=>'L', | ||
2841 | 3499=>'L', | ||
2842 | 3500=>'L', | ||
2843 | 3501=>'L', | ||
2844 | 3502=>'L', | ||
2845 | 3503=>'L', | ||
2846 | 3504=>'L', | ||
2847 | 3505=>'L', | ||
2848 | 3507=>'L', | ||
2849 | 3508=>'L', | ||
2850 | 3509=>'L', | ||
2851 | 3510=>'L', | ||
2852 | 3511=>'L', | ||
2853 | 3512=>'L', | ||
2854 | 3513=>'L', | ||
2855 | 3514=>'L', | ||
2856 | 3515=>'L', | ||
2857 | 3517=>'L', | ||
2858 | 3520=>'L', | ||
2859 | 3521=>'L', | ||
2860 | 3522=>'L', | ||
2861 | 3523=>'L', | ||
2862 | 3524=>'L', | ||
2863 | 3525=>'L', | ||
2864 | 3526=>'L', | ||
2865 | 3530=>'NSM', | ||
2866 | 3535=>'L', | ||
2867 | 3536=>'L', | ||
2868 | 3537=>'L', | ||
2869 | 3538=>'NSM', | ||
2870 | 3539=>'NSM', | ||
2871 | 3540=>'NSM', | ||
2872 | 3542=>'NSM', | ||
2873 | 3544=>'L', | ||
2874 | 3545=>'L', | ||
2875 | 3546=>'L', | ||
2876 | 3547=>'L', | ||
2877 | 3548=>'L', | ||
2878 | 3549=>'L', | ||
2879 | 3550=>'L', | ||
2880 | 3551=>'L', | ||
2881 | 3570=>'L', | ||
2882 | 3571=>'L', | ||
2883 | 3572=>'L', | ||
2884 | 3585=>'L', | ||
2885 | 3586=>'L', | ||
2886 | 3587=>'L', | ||
2887 | 3588=>'L', | ||
2888 | 3589=>'L', | ||
2889 | 3590=>'L', | ||
2890 | 3591=>'L', | ||
2891 | 3592=>'L', | ||
2892 | 3593=>'L', | ||
2893 | 3594=>'L', | ||
2894 | 3595=>'L', | ||
2895 | 3596=>'L', | ||
2896 | 3597=>'L', | ||
2897 | 3598=>'L', | ||
2898 | 3599=>'L', | ||
2899 | 3600=>'L', | ||
2900 | 3601=>'L', | ||
2901 | 3602=>'L', | ||
2902 | 3603=>'L', | ||
2903 | 3604=>'L', | ||
2904 | 3605=>'L', | ||
2905 | 3606=>'L', | ||
2906 | 3607=>'L', | ||
2907 | 3608=>'L', | ||
2908 | 3609=>'L', | ||
2909 | 3610=>'L', | ||
2910 | 3611=>'L', | ||
2911 | 3612=>'L', | ||
2912 | 3613=>'L', | ||
2913 | 3614=>'L', | ||
2914 | 3615=>'L', | ||
2915 | 3616=>'L', | ||
2916 | 3617=>'L', | ||
2917 | 3618=>'L', | ||
2918 | 3619=>'L', | ||
2919 | 3620=>'L', | ||
2920 | 3621=>'L', | ||
2921 | 3622=>'L', | ||
2922 | 3623=>'L', | ||
2923 | 3624=>'L', | ||
2924 | 3625=>'L', | ||
2925 | 3626=>'L', | ||
2926 | 3627=>'L', | ||
2927 | 3628=>'L', | ||
2928 | 3629=>'L', | ||
2929 | 3630=>'L', | ||
2930 | 3631=>'L', | ||
2931 | 3632=>'L', | ||
2932 | 3633=>'NSM', | ||
2933 | 3634=>'L', | ||
2934 | 3635=>'L', | ||
2935 | 3636=>'NSM', | ||
2936 | 3637=>'NSM', | ||
2937 | 3638=>'NSM', | ||
2938 | 3639=>'NSM', | ||
2939 | 3640=>'NSM', | ||
2940 | 3641=>'NSM', | ||
2941 | 3642=>'NSM', | ||
2942 | 3647=>'ET', | ||
2943 | 3648=>'L', | ||
2944 | 3649=>'L', | ||
2945 | 3650=>'L', | ||
2946 | 3651=>'L', | ||
2947 | 3652=>'L', | ||
2948 | 3653=>'L', | ||
2949 | 3654=>'L', | ||
2950 | 3655=>'NSM', | ||
2951 | 3656=>'NSM', | ||
2952 | 3657=>'NSM', | ||
2953 | 3658=>'NSM', | ||
2954 | 3659=>'NSM', | ||
2955 | 3660=>'NSM', | ||
2956 | 3661=>'NSM', | ||
2957 | 3662=>'NSM', | ||
2958 | 3663=>'L', | ||
2959 | 3664=>'L', | ||
2960 | 3665=>'L', | ||
2961 | 3666=>'L', | ||
2962 | 3667=>'L', | ||
2963 | 3668=>'L', | ||
2964 | 3669=>'L', | ||
2965 | 3670=>'L', | ||
2966 | 3671=>'L', | ||
2967 | 3672=>'L', | ||
2968 | 3673=>'L', | ||
2969 | 3674=>'L', | ||
2970 | 3675=>'L', | ||
2971 | 3713=>'L', | ||
2972 | 3714=>'L', | ||
2973 | 3716=>'L', | ||
2974 | 3719=>'L', | ||
2975 | 3720=>'L', | ||
2976 | 3722=>'L', | ||
2977 | 3725=>'L', | ||
2978 | 3732=>'L', | ||
2979 | 3733=>'L', | ||
2980 | 3734=>'L', | ||
2981 | 3735=>'L', | ||
2982 | 3737=>'L', | ||
2983 | 3738=>'L', | ||
2984 | 3739=>'L', | ||
2985 | 3740=>'L', | ||
2986 | 3741=>'L', | ||
2987 | 3742=>'L', | ||
2988 | 3743=>'L', | ||
2989 | 3745=>'L', | ||
2990 | 3746=>'L', | ||
2991 | 3747=>'L', | ||
2992 | 3749=>'L', | ||
2993 | 3751=>'L', | ||
2994 | 3754=>'L', | ||
2995 | 3755=>'L', | ||
2996 | 3757=>'L', | ||
2997 | 3758=>'L', | ||
2998 | 3759=>'L', | ||
2999 | 3760=>'L', | ||
3000 | 3761=>'NSM', | ||
3001 | 3762=>'L', | ||
3002 | 3763=>'L', | ||
3003 | 3764=>'NSM', | ||
3004 | 3765=>'NSM', | ||
3005 | 3766=>'NSM', | ||
3006 | 3767=>'NSM', | ||
3007 | 3768=>'NSM', | ||
3008 | 3769=>'NSM', | ||
3009 | 3771=>'NSM', | ||
3010 | 3772=>'NSM', | ||
3011 | 3773=>'L', | ||
3012 | 3776=>'L', | ||
3013 | 3777=>'L', | ||
3014 | 3778=>'L', | ||
3015 | 3779=>'L', | ||
3016 | 3780=>'L', | ||
3017 | 3782=>'L', | ||
3018 | 3784=>'NSM', | ||
3019 | 3785=>'NSM', | ||
3020 | 3786=>'NSM', | ||
3021 | 3787=>'NSM', | ||
3022 | 3788=>'NSM', | ||
3023 | 3789=>'NSM', | ||
3024 | 3792=>'L', | ||
3025 | 3793=>'L', | ||
3026 | 3794=>'L', | ||
3027 | 3795=>'L', | ||
3028 | 3796=>'L', | ||
3029 | 3797=>'L', | ||
3030 | 3798=>'L', | ||
3031 | 3799=>'L', | ||
3032 | 3800=>'L', | ||
3033 | 3801=>'L', | ||
3034 | 3804=>'L', | ||
3035 | 3805=>'L', | ||
3036 | 3840=>'L', | ||
3037 | 3841=>'L', | ||
3038 | 3842=>'L', | ||
3039 | 3843=>'L', | ||
3040 | 3844=>'L', | ||
3041 | 3845=>'L', | ||
3042 | 3846=>'L', | ||
3043 | 3847=>'L', | ||
3044 | 3848=>'L', | ||
3045 | 3849=>'L', | ||
3046 | 3850=>'L', | ||
3047 | 3851=>'L', | ||
3048 | 3852=>'L', | ||
3049 | 3853=>'L', | ||
3050 | 3854=>'L', | ||
3051 | 3855=>'L', | ||
3052 | 3856=>'L', | ||
3053 | 3857=>'L', | ||
3054 | 3858=>'L', | ||
3055 | 3859=>'L', | ||
3056 | 3860=>'L', | ||
3057 | 3861=>'L', | ||
3058 | 3862=>'L', | ||
3059 | 3863=>'L', | ||
3060 | 3864=>'NSM', | ||
3061 | 3865=>'NSM', | ||
3062 | 3866=>'L', | ||
3063 | 3867=>'L', | ||
3064 | 3868=>'L', | ||
3065 | 3869=>'L', | ||
3066 | 3870=>'L', | ||
3067 | 3871=>'L', | ||
3068 | 3872=>'L', | ||
3069 | 3873=>'L', | ||
3070 | 3874=>'L', | ||
3071 | 3875=>'L', | ||
3072 | 3876=>'L', | ||
3073 | 3877=>'L', | ||
3074 | 3878=>'L', | ||
3075 | 3879=>'L', | ||
3076 | 3880=>'L', | ||
3077 | 3881=>'L', | ||
3078 | 3882=>'L', | ||
3079 | 3883=>'L', | ||
3080 | 3884=>'L', | ||
3081 | 3885=>'L', | ||
3082 | 3886=>'L', | ||
3083 | 3887=>'L', | ||
3084 | 3888=>'L', | ||
3085 | 3889=>'L', | ||
3086 | 3890=>'L', | ||
3087 | 3891=>'L', | ||
3088 | 3892=>'L', | ||
3089 | 3893=>'NSM', | ||
3090 | 3894=>'L', | ||
3091 | 3895=>'NSM', | ||
3092 | 3896=>'L', | ||
3093 | 3897=>'NSM', | ||
3094 | 3898=>'ON', | ||
3095 | 3899=>'ON', | ||
3096 | 3900=>'ON', | ||
3097 | 3901=>'ON', | ||
3098 | 3902=>'L', | ||
3099 | 3903=>'L', | ||
3100 | 3904=>'L', | ||
3101 | 3905=>'L', | ||
3102 | 3906=>'L', | ||
3103 | 3907=>'L', | ||
3104 | 3908=>'L', | ||
3105 | 3909=>'L', | ||
3106 | 3910=>'L', | ||
3107 | 3911=>'L', | ||
3108 | 3913=>'L', | ||
3109 | 3914=>'L', | ||
3110 | 3915=>'L', | ||
3111 | 3916=>'L', | ||
3112 | 3917=>'L', | ||
3113 | 3918=>'L', | ||
3114 | 3919=>'L', | ||
3115 | 3920=>'L', | ||
3116 | 3921=>'L', | ||
3117 | 3922=>'L', | ||
3118 | 3923=>'L', | ||
3119 | 3924=>'L', | ||
3120 | 3925=>'L', | ||
3121 | 3926=>'L', | ||
3122 | 3927=>'L', | ||
3123 | 3928=>'L', | ||
3124 | 3929=>'L', | ||
3125 | 3930=>'L', | ||
3126 | 3931=>'L', | ||
3127 | 3932=>'L', | ||
3128 | 3933=>'L', | ||
3129 | 3934=>'L', | ||
3130 | 3935=>'L', | ||
3131 | 3936=>'L', | ||
3132 | 3937=>'L', | ||
3133 | 3938=>'L', | ||
3134 | 3939=>'L', | ||
3135 | 3940=>'L', | ||
3136 | 3941=>'L', | ||
3137 | 3942=>'L', | ||
3138 | 3943=>'L', | ||
3139 | 3944=>'L', | ||
3140 | 3945=>'L', | ||
3141 | 3946=>'L', | ||
3142 | 3953=>'NSM', | ||
3143 | 3954=>'NSM', | ||
3144 | 3955=>'NSM', | ||
3145 | 3956=>'NSM', | ||
3146 | 3957=>'NSM', | ||
3147 | 3958=>'NSM', | ||
3148 | 3959=>'NSM', | ||
3149 | 3960=>'NSM', | ||
3150 | 3961=>'NSM', | ||
3151 | 3962=>'NSM', | ||
3152 | 3963=>'NSM', | ||
3153 | 3964=>'NSM', | ||
3154 | 3965=>'NSM', | ||
3155 | 3966=>'NSM', | ||
3156 | 3967=>'L', | ||
3157 | 3968=>'NSM', | ||
3158 | 3969=>'NSM', | ||
3159 | 3970=>'NSM', | ||
3160 | 3971=>'NSM', | ||
3161 | 3972=>'NSM', | ||
3162 | 3973=>'L', | ||
3163 | 3974=>'NSM', | ||
3164 | 3975=>'NSM', | ||
3165 | 3976=>'L', | ||
3166 | 3977=>'L', | ||
3167 | 3978=>'L', | ||
3168 | 3979=>'L', | ||
3169 | 3984=>'NSM', | ||
3170 | 3985=>'NSM', | ||
3171 | 3986=>'NSM', | ||
3172 | 3987=>'NSM', | ||
3173 | 3988=>'NSM', | ||
3174 | 3989=>'NSM', | ||
3175 | 3990=>'NSM', | ||
3176 | 3991=>'NSM', | ||
3177 | 3993=>'NSM', | ||
3178 | 3994=>'NSM', | ||
3179 | 3995=>'NSM', | ||
3180 | 3996=>'NSM', | ||
3181 | 3997=>'NSM', | ||
3182 | 3998=>'NSM', | ||
3183 | 3999=>'NSM', | ||
3184 | 4000=>'NSM', | ||
3185 | 4001=>'NSM', | ||
3186 | 4002=>'NSM', | ||
3187 | 4003=>'NSM', | ||
3188 | 4004=>'NSM', | ||
3189 | 4005=>'NSM', | ||
3190 | 4006=>'NSM', | ||
3191 | 4007=>'NSM', | ||
3192 | 4008=>'NSM', | ||
3193 | 4009=>'NSM', | ||
3194 | 4010=>'NSM', | ||
3195 | 4011=>'NSM', | ||
3196 | 4012=>'NSM', | ||
3197 | 4013=>'NSM', | ||
3198 | 4014=>'NSM', | ||
3199 | 4015=>'NSM', | ||
3200 | 4016=>'NSM', | ||
3201 | 4017=>'NSM', | ||
3202 | 4018=>'NSM', | ||
3203 | 4019=>'NSM', | ||
3204 | 4020=>'NSM', | ||
3205 | 4021=>'NSM', | ||
3206 | 4022=>'NSM', | ||
3207 | 4023=>'NSM', | ||
3208 | 4024=>'NSM', | ||
3209 | 4025=>'NSM', | ||
3210 | 4026=>'NSM', | ||
3211 | 4027=>'NSM', | ||
3212 | 4028=>'NSM', | ||
3213 | 4030=>'L', | ||
3214 | 4031=>'L', | ||
3215 | 4032=>'L', | ||
3216 | 4033=>'L', | ||
3217 | 4034=>'L', | ||
3218 | 4035=>'L', | ||
3219 | 4036=>'L', | ||
3220 | 4037=>'L', | ||
3221 | 4038=>'NSM', | ||
3222 | 4039=>'L', | ||
3223 | 4040=>'L', | ||
3224 | 4041=>'L', | ||
3225 | 4042=>'L', | ||
3226 | 4043=>'L', | ||
3227 | 4044=>'L', | ||
3228 | 4047=>'L', | ||
3229 | 4048=>'L', | ||
3230 | 4049=>'L', | ||
3231 | 4096=>'L', | ||
3232 | 4097=>'L', | ||
3233 | 4098=>'L', | ||
3234 | 4099=>'L', | ||
3235 | 4100=>'L', | ||
3236 | 4101=>'L', | ||
3237 | 4102=>'L', | ||
3238 | 4103=>'L', | ||
3239 | 4104=>'L', | ||
3240 | 4105=>'L', | ||
3241 | 4106=>'L', | ||
3242 | 4107=>'L', | ||
3243 | 4108=>'L', | ||
3244 | 4109=>'L', | ||
3245 | 4110=>'L', | ||
3246 | 4111=>'L', | ||
3247 | 4112=>'L', | ||
3248 | 4113=>'L', | ||
3249 | 4114=>'L', | ||
3250 | 4115=>'L', | ||
3251 | 4116=>'L', | ||
3252 | 4117=>'L', | ||
3253 | 4118=>'L', | ||
3254 | 4119=>'L', | ||
3255 | 4120=>'L', | ||
3256 | 4121=>'L', | ||
3257 | 4122=>'L', | ||
3258 | 4123=>'L', | ||
3259 | 4124=>'L', | ||
3260 | 4125=>'L', | ||
3261 | 4126=>'L', | ||
3262 | 4127=>'L', | ||
3263 | 4128=>'L', | ||
3264 | 4129=>'L', | ||
3265 | 4131=>'L', | ||
3266 | 4132=>'L', | ||
3267 | 4133=>'L', | ||
3268 | 4134=>'L', | ||
3269 | 4135=>'L', | ||
3270 | 4137=>'L', | ||
3271 | 4138=>'L', | ||
3272 | 4140=>'L', | ||
3273 | 4141=>'NSM', | ||
3274 | 4142=>'NSM', | ||
3275 | 4143=>'NSM', | ||
3276 | 4144=>'NSM', | ||
3277 | 4145=>'L', | ||
3278 | 4146=>'NSM', | ||
3279 | 4150=>'NSM', | ||
3280 | 4151=>'NSM', | ||
3281 | 4152=>'L', | ||
3282 | 4153=>'NSM', | ||
3283 | 4160=>'L', | ||
3284 | 4161=>'L', | ||
3285 | 4162=>'L', | ||
3286 | 4163=>'L', | ||
3287 | 4164=>'L', | ||
3288 | 4165=>'L', | ||
3289 | 4166=>'L', | ||
3290 | 4167=>'L', | ||
3291 | 4168=>'L', | ||
3292 | 4169=>'L', | ||
3293 | 4170=>'L', | ||
3294 | 4171=>'L', | ||
3295 | 4172=>'L', | ||
3296 | 4173=>'L', | ||
3297 | 4174=>'L', | ||
3298 | 4175=>'L', | ||
3299 | 4176=>'L', | ||
3300 | 4177=>'L', | ||
3301 | 4178=>'L', | ||
3302 | 4179=>'L', | ||
3303 | 4180=>'L', | ||
3304 | 4181=>'L', | ||
3305 | 4182=>'L', | ||
3306 | 4183=>'L', | ||
3307 | 4184=>'NSM', | ||
3308 | 4185=>'NSM', | ||
3309 | 4256=>'L', | ||
3310 | 4257=>'L', | ||
3311 | 4258=>'L', | ||
3312 | 4259=>'L', | ||
3313 | 4260=>'L', | ||
3314 | 4261=>'L', | ||
3315 | 4262=>'L', | ||
3316 | 4263=>'L', | ||
3317 | 4264=>'L', | ||
3318 | 4265=>'L', | ||
3319 | 4266=>'L', | ||
3320 | 4267=>'L', | ||
3321 | 4268=>'L', | ||
3322 | 4269=>'L', | ||
3323 | 4270=>'L', | ||
3324 | 4271=>'L', | ||
3325 | 4272=>'L', | ||
3326 | 4273=>'L', | ||
3327 | 4274=>'L', | ||
3328 | 4275=>'L', | ||
3329 | 4276=>'L', | ||
3330 | 4277=>'L', | ||
3331 | 4278=>'L', | ||
3332 | 4279=>'L', | ||
3333 | 4280=>'L', | ||
3334 | 4281=>'L', | ||
3335 | 4282=>'L', | ||
3336 | 4283=>'L', | ||
3337 | 4284=>'L', | ||
3338 | 4285=>'L', | ||
3339 | 4286=>'L', | ||
3340 | 4287=>'L', | ||
3341 | 4288=>'L', | ||
3342 | 4289=>'L', | ||
3343 | 4290=>'L', | ||
3344 | 4291=>'L', | ||
3345 | 4292=>'L', | ||
3346 | 4293=>'L', | ||
3347 | 4304=>'L', | ||
3348 | 4305=>'L', | ||
3349 | 4306=>'L', | ||
3350 | 4307=>'L', | ||
3351 | 4308=>'L', | ||
3352 | 4309=>'L', | ||
3353 | 4310=>'L', | ||
3354 | 4311=>'L', | ||
3355 | 4312=>'L', | ||
3356 | 4313=>'L', | ||
3357 | 4314=>'L', | ||
3358 | 4315=>'L', | ||
3359 | 4316=>'L', | ||
3360 | 4317=>'L', | ||
3361 | 4318=>'L', | ||
3362 | 4319=>'L', | ||
3363 | 4320=>'L', | ||
3364 | 4321=>'L', | ||
3365 | 4322=>'L', | ||
3366 | 4323=>'L', | ||
3367 | 4324=>'L', | ||
3368 | 4325=>'L', | ||
3369 | 4326=>'L', | ||
3370 | 4327=>'L', | ||
3371 | 4328=>'L', | ||
3372 | 4329=>'L', | ||
3373 | 4330=>'L', | ||
3374 | 4331=>'L', | ||
3375 | 4332=>'L', | ||
3376 | 4333=>'L', | ||
3377 | 4334=>'L', | ||
3378 | 4335=>'L', | ||
3379 | 4336=>'L', | ||
3380 | 4337=>'L', | ||
3381 | 4338=>'L', | ||
3382 | 4339=>'L', | ||
3383 | 4340=>'L', | ||
3384 | 4341=>'L', | ||
3385 | 4342=>'L', | ||
3386 | 4343=>'L', | ||
3387 | 4344=>'L', | ||
3388 | 4345=>'L', | ||
3389 | 4346=>'L', | ||
3390 | 4347=>'L', | ||
3391 | 4348=>'L', | ||
3392 | 4352=>'L', | ||
3393 | 4353=>'L', | ||
3394 | 4354=>'L', | ||
3395 | 4355=>'L', | ||
3396 | 4356=>'L', | ||
3397 | 4357=>'L', | ||
3398 | 4358=>'L', | ||
3399 | 4359=>'L', | ||
3400 | 4360=>'L', | ||
3401 | 4361=>'L', | ||
3402 | 4362=>'L', | ||
3403 | 4363=>'L', | ||
3404 | 4364=>'L', | ||
3405 | 4365=>'L', | ||
3406 | 4366=>'L', | ||
3407 | 4367=>'L', | ||
3408 | 4368=>'L', | ||
3409 | 4369=>'L', | ||
3410 | 4370=>'L', | ||
3411 | 4371=>'L', | ||
3412 | 4372=>'L', | ||
3413 | 4373=>'L', | ||
3414 | 4374=>'L', | ||
3415 | 4375=>'L', | ||
3416 | 4376=>'L', | ||
3417 | 4377=>'L', | ||
3418 | 4378=>'L', | ||
3419 | 4379=>'L', | ||
3420 | 4380=>'L', | ||
3421 | 4381=>'L', | ||
3422 | 4382=>'L', | ||
3423 | 4383=>'L', | ||
3424 | 4384=>'L', | ||
3425 | 4385=>'L', | ||
3426 | 4386=>'L', | ||
3427 | 4387=>'L', | ||
3428 | 4388=>'L', | ||
3429 | 4389=>'L', | ||
3430 | 4390=>'L', | ||
3431 | 4391=>'L', | ||
3432 | 4392=>'L', | ||
3433 | 4393=>'L', | ||
3434 | 4394=>'L', | ||
3435 | 4395=>'L', | ||
3436 | 4396=>'L', | ||
3437 | 4397=>'L', | ||
3438 | 4398=>'L', | ||
3439 | 4399=>'L', | ||
3440 | 4400=>'L', | ||
3441 | 4401=>'L', | ||
3442 | 4402=>'L', | ||
3443 | 4403=>'L', | ||
3444 | 4404=>'L', | ||
3445 | 4405=>'L', | ||
3446 | 4406=>'L', | ||
3447 | 4407=>'L', | ||
3448 | 4408=>'L', | ||
3449 | 4409=>'L', | ||
3450 | 4410=>'L', | ||
3451 | 4411=>'L', | ||
3452 | 4412=>'L', | ||
3453 | 4413=>'L', | ||
3454 | 4414=>'L', | ||
3455 | 4415=>'L', | ||
3456 | 4416=>'L', | ||
3457 | 4417=>'L', | ||
3458 | 4418=>'L', | ||
3459 | 4419=>'L', | ||
3460 | 4420=>'L', | ||
3461 | 4421=>'L', | ||
3462 | 4422=>'L', | ||
3463 | 4423=>'L', | ||
3464 | 4424=>'L', | ||
3465 | 4425=>'L', | ||
3466 | 4426=>'L', | ||
3467 | 4427=>'L', | ||
3468 | 4428=>'L', | ||
3469 | 4429=>'L', | ||
3470 | 4430=>'L', | ||
3471 | 4431=>'L', | ||
3472 | 4432=>'L', | ||
3473 | 4433=>'L', | ||
3474 | 4434=>'L', | ||
3475 | 4435=>'L', | ||
3476 | 4436=>'L', | ||
3477 | 4437=>'L', | ||
3478 | 4438=>'L', | ||
3479 | 4439=>'L', | ||
3480 | 4440=>'L', | ||
3481 | 4441=>'L', | ||
3482 | 4447=>'L', | ||
3483 | 4448=>'L', | ||
3484 | 4449=>'L', | ||
3485 | 4450=>'L', | ||
3486 | 4451=>'L', | ||
3487 | 4452=>'L', | ||
3488 | 4453=>'L', | ||
3489 | 4454=>'L', | ||
3490 | 4455=>'L', | ||
3491 | 4456=>'L', | ||
3492 | 4457=>'L', | ||
3493 | 4458=>'L', | ||
3494 | 4459=>'L', | ||
3495 | 4460=>'L', | ||
3496 | 4461=>'L', | ||
3497 | 4462=>'L', | ||
3498 | 4463=>'L', | ||
3499 | 4464=>'L', | ||
3500 | 4465=>'L', | ||
3501 | 4466=>'L', | ||
3502 | 4467=>'L', | ||
3503 | 4468=>'L', | ||
3504 | 4469=>'L', | ||
3505 | 4470=>'L', | ||
3506 | 4471=>'L', | ||
3507 | 4472=>'L', | ||
3508 | 4473=>'L', | ||
3509 | 4474=>'L', | ||
3510 | 4475=>'L', | ||
3511 | 4476=>'L', | ||
3512 | 4477=>'L', | ||
3513 | 4478=>'L', | ||
3514 | 4479=>'L', | ||
3515 | 4480=>'L', | ||
3516 | 4481=>'L', | ||
3517 | 4482=>'L', | ||
3518 | 4483=>'L', | ||
3519 | 4484=>'L', | ||
3520 | 4485=>'L', | ||
3521 | 4486=>'L', | ||
3522 | 4487=>'L', | ||
3523 | 4488=>'L', | ||
3524 | 4489=>'L', | ||
3525 | 4490=>'L', | ||
3526 | 4491=>'L', | ||
3527 | 4492=>'L', | ||
3528 | 4493=>'L', | ||
3529 | 4494=>'L', | ||
3530 | 4495=>'L', | ||
3531 | 4496=>'L', | ||
3532 | 4497=>'L', | ||
3533 | 4498=>'L', | ||
3534 | 4499=>'L', | ||
3535 | 4500=>'L', | ||
3536 | 4501=>'L', | ||
3537 | 4502=>'L', | ||
3538 | 4503=>'L', | ||
3539 | 4504=>'L', | ||
3540 | 4505=>'L', | ||
3541 | 4506=>'L', | ||
3542 | 4507=>'L', | ||
3543 | 4508=>'L', | ||
3544 | 4509=>'L', | ||
3545 | 4510=>'L', | ||
3546 | 4511=>'L', | ||
3547 | 4512=>'L', | ||
3548 | 4513=>'L', | ||
3549 | 4514=>'L', | ||
3550 | 4520=>'L', | ||
3551 | 4521=>'L', | ||
3552 | 4522=>'L', | ||
3553 | 4523=>'L', | ||
3554 | 4524=>'L', | ||
3555 | 4525=>'L', | ||
3556 | 4526=>'L', | ||
3557 | 4527=>'L', | ||
3558 | 4528=>'L', | ||
3559 | 4529=>'L', | ||
3560 | 4530=>'L', | ||
3561 | 4531=>'L', | ||
3562 | 4532=>'L', | ||
3563 | 4533=>'L', | ||
3564 | 4534=>'L', | ||
3565 | 4535=>'L', | ||
3566 | 4536=>'L', | ||
3567 | 4537=>'L', | ||
3568 | 4538=>'L', | ||
3569 | 4539=>'L', | ||
3570 | 4540=>'L', | ||
3571 | 4541=>'L', | ||
3572 | 4542=>'L', | ||
3573 | 4543=>'L', | ||
3574 | 4544=>'L', | ||
3575 | 4545=>'L', | ||
3576 | 4546=>'L', | ||
3577 | 4547=>'L', | ||
3578 | 4548=>'L', | ||
3579 | 4549=>'L', | ||
3580 | 4550=>'L', | ||
3581 | 4551=>'L', | ||
3582 | 4552=>'L', | ||
3583 | 4553=>'L', | ||
3584 | 4554=>'L', | ||
3585 | 4555=>'L', | ||
3586 | 4556=>'L', | ||
3587 | 4557=>'L', | ||
3588 | 4558=>'L', | ||
3589 | 4559=>'L', | ||
3590 | 4560=>'L', | ||
3591 | 4561=>'L', | ||
3592 | 4562=>'L', | ||
3593 | 4563=>'L', | ||
3594 | 4564=>'L', | ||
3595 | 4565=>'L', | ||
3596 | 4566=>'L', | ||
3597 | 4567=>'L', | ||
3598 | 4568=>'L', | ||
3599 | 4569=>'L', | ||
3600 | 4570=>'L', | ||
3601 | 4571=>'L', | ||
3602 | 4572=>'L', | ||
3603 | 4573=>'L', | ||
3604 | 4574=>'L', | ||
3605 | 4575=>'L', | ||
3606 | 4576=>'L', | ||
3607 | 4577=>'L', | ||
3608 | 4578=>'L', | ||
3609 | 4579=>'L', | ||
3610 | 4580=>'L', | ||
3611 | 4581=>'L', | ||
3612 | 4582=>'L', | ||
3613 | 4583=>'L', | ||
3614 | 4584=>'L', | ||
3615 | 4585=>'L', | ||
3616 | 4586=>'L', | ||
3617 | 4587=>'L', | ||
3618 | 4588=>'L', | ||
3619 | 4589=>'L', | ||
3620 | 4590=>'L', | ||
3621 | 4591=>'L', | ||
3622 | 4592=>'L', | ||
3623 | 4593=>'L', | ||
3624 | 4594=>'L', | ||
3625 | 4595=>'L', | ||
3626 | 4596=>'L', | ||
3627 | 4597=>'L', | ||
3628 | 4598=>'L', | ||
3629 | 4599=>'L', | ||
3630 | 4600=>'L', | ||
3631 | 4601=>'L', | ||
3632 | 4608=>'L', | ||
3633 | 4609=>'L', | ||
3634 | 4610=>'L', | ||
3635 | 4611=>'L', | ||
3636 | 4612=>'L', | ||
3637 | 4613=>'L', | ||
3638 | 4614=>'L', | ||
3639 | 4615=>'L', | ||
3640 | 4616=>'L', | ||
3641 | 4617=>'L', | ||
3642 | 4618=>'L', | ||
3643 | 4619=>'L', | ||
3644 | 4620=>'L', | ||
3645 | 4621=>'L', | ||
3646 | 4622=>'L', | ||
3647 | 4623=>'L', | ||
3648 | 4624=>'L', | ||
3649 | 4625=>'L', | ||
3650 | 4626=>'L', | ||
3651 | 4627=>'L', | ||
3652 | 4628=>'L', | ||
3653 | 4629=>'L', | ||
3654 | 4630=>'L', | ||
3655 | 4631=>'L', | ||
3656 | 4632=>'L', | ||
3657 | 4633=>'L', | ||
3658 | 4634=>'L', | ||
3659 | 4635=>'L', | ||
3660 | 4636=>'L', | ||
3661 | 4637=>'L', | ||
3662 | 4638=>'L', | ||
3663 | 4639=>'L', | ||
3664 | 4640=>'L', | ||
3665 | 4641=>'L', | ||
3666 | 4642=>'L', | ||
3667 | 4643=>'L', | ||
3668 | 4644=>'L', | ||
3669 | 4645=>'L', | ||
3670 | 4646=>'L', | ||
3671 | 4647=>'L', | ||
3672 | 4648=>'L', | ||
3673 | 4649=>'L', | ||
3674 | 4650=>'L', | ||
3675 | 4651=>'L', | ||
3676 | 4652=>'L', | ||
3677 | 4653=>'L', | ||
3678 | 4654=>'L', | ||
3679 | 4655=>'L', | ||
3680 | 4656=>'L', | ||
3681 | 4657=>'L', | ||
3682 | 4658=>'L', | ||
3683 | 4659=>'L', | ||
3684 | 4660=>'L', | ||
3685 | 4661=>'L', | ||
3686 | 4662=>'L', | ||
3687 | 4663=>'L', | ||
3688 | 4664=>'L', | ||
3689 | 4665=>'L', | ||
3690 | 4666=>'L', | ||
3691 | 4667=>'L', | ||
3692 | 4668=>'L', | ||
3693 | 4669=>'L', | ||
3694 | 4670=>'L', | ||
3695 | 4671=>'L', | ||
3696 | 4672=>'L', | ||
3697 | 4673=>'L', | ||
3698 | 4674=>'L', | ||
3699 | 4675=>'L', | ||
3700 | 4676=>'L', | ||
3701 | 4677=>'L', | ||
3702 | 4678=>'L', | ||
3703 | 4679=>'L', | ||
3704 | 4680=>'L', | ||
3705 | 4682=>'L', | ||
3706 | 4683=>'L', | ||
3707 | 4684=>'L', | ||
3708 | 4685=>'L', | ||
3709 | 4688=>'L', | ||
3710 | 4689=>'L', | ||
3711 | 4690=>'L', | ||
3712 | 4691=>'L', | ||
3713 | 4692=>'L', | ||
3714 | 4693=>'L', | ||
3715 | 4694=>'L', | ||
3716 | 4696=>'L', | ||
3717 | 4698=>'L', | ||
3718 | 4699=>'L', | ||
3719 | 4700=>'L', | ||
3720 | 4701=>'L', | ||
3721 | 4704=>'L', | ||
3722 | 4705=>'L', | ||
3723 | 4706=>'L', | ||
3724 | 4707=>'L', | ||
3725 | 4708=>'L', | ||
3726 | 4709=>'L', | ||
3727 | 4710=>'L', | ||
3728 | 4711=>'L', | ||
3729 | 4712=>'L', | ||
3730 | 4713=>'L', | ||
3731 | 4714=>'L', | ||
3732 | 4715=>'L', | ||
3733 | 4716=>'L', | ||
3734 | 4717=>'L', | ||
3735 | 4718=>'L', | ||
3736 | 4719=>'L', | ||
3737 | 4720=>'L', | ||
3738 | 4721=>'L', | ||
3739 | 4722=>'L', | ||
3740 | 4723=>'L', | ||
3741 | 4724=>'L', | ||
3742 | 4725=>'L', | ||
3743 | 4726=>'L', | ||
3744 | 4727=>'L', | ||
3745 | 4728=>'L', | ||
3746 | 4729=>'L', | ||
3747 | 4730=>'L', | ||
3748 | 4731=>'L', | ||
3749 | 4732=>'L', | ||
3750 | 4733=>'L', | ||
3751 | 4734=>'L', | ||
3752 | 4735=>'L', | ||
3753 | 4736=>'L', | ||
3754 | 4737=>'L', | ||
3755 | 4738=>'L', | ||
3756 | 4739=>'L', | ||
3757 | 4740=>'L', | ||
3758 | 4741=>'L', | ||
3759 | 4742=>'L', | ||
3760 | 4743=>'L', | ||
3761 | 4744=>'L', | ||
3762 | 4746=>'L', | ||
3763 | 4747=>'L', | ||
3764 | 4748=>'L', | ||
3765 | 4749=>'L', | ||
3766 | 4752=>'L', | ||
3767 | 4753=>'L', | ||
3768 | 4754=>'L', | ||
3769 | 4755=>'L', | ||
3770 | 4756=>'L', | ||
3771 | 4757=>'L', | ||
3772 | 4758=>'L', | ||
3773 | 4759=>'L', | ||
3774 | 4760=>'L', | ||
3775 | 4761=>'L', | ||
3776 | 4762=>'L', | ||
3777 | 4763=>'L', | ||
3778 | 4764=>'L', | ||
3779 | 4765=>'L', | ||
3780 | 4766=>'L', | ||
3781 | 4767=>'L', | ||
3782 | 4768=>'L', | ||
3783 | 4769=>'L', | ||
3784 | 4770=>'L', | ||
3785 | 4771=>'L', | ||
3786 | 4772=>'L', | ||
3787 | 4773=>'L', | ||
3788 | 4774=>'L', | ||
3789 | 4775=>'L', | ||
3790 | 4776=>'L', | ||
3791 | 4777=>'L', | ||
3792 | 4778=>'L', | ||
3793 | 4779=>'L', | ||
3794 | 4780=>'L', | ||
3795 | 4781=>'L', | ||
3796 | 4782=>'L', | ||
3797 | 4783=>'L', | ||
3798 | 4784=>'L', | ||
3799 | 4786=>'L', | ||
3800 | 4787=>'L', | ||
3801 | 4788=>'L', | ||
3802 | 4789=>'L', | ||
3803 | 4792=>'L', | ||
3804 | 4793=>'L', | ||
3805 | 4794=>'L', | ||
3806 | 4795=>'L', | ||
3807 | 4796=>'L', | ||
3808 | 4797=>'L', | ||
3809 | 4798=>'L', | ||
3810 | 4800=>'L', | ||
3811 | 4802=>'L', | ||
3812 | 4803=>'L', | ||
3813 | 4804=>'L', | ||
3814 | 4805=>'L', | ||
3815 | 4808=>'L', | ||
3816 | 4809=>'L', | ||
3817 | 4810=>'L', | ||
3818 | 4811=>'L', | ||
3819 | 4812=>'L', | ||
3820 | 4813=>'L', | ||
3821 | 4814=>'L', | ||
3822 | 4815=>'L', | ||
3823 | 4816=>'L', | ||
3824 | 4817=>'L', | ||
3825 | 4818=>'L', | ||
3826 | 4819=>'L', | ||
3827 | 4820=>'L', | ||
3828 | 4821=>'L', | ||
3829 | 4822=>'L', | ||
3830 | 4824=>'L', | ||
3831 | 4825=>'L', | ||
3832 | 4826=>'L', | ||
3833 | 4827=>'L', | ||
3834 | 4828=>'L', | ||
3835 | 4829=>'L', | ||
3836 | 4830=>'L', | ||
3837 | 4831=>'L', | ||
3838 | 4832=>'L', | ||
3839 | 4833=>'L', | ||
3840 | 4834=>'L', | ||
3841 | 4835=>'L', | ||
3842 | 4836=>'L', | ||
3843 | 4837=>'L', | ||
3844 | 4838=>'L', | ||
3845 | 4839=>'L', | ||
3846 | 4840=>'L', | ||
3847 | 4841=>'L', | ||
3848 | 4842=>'L', | ||
3849 | 4843=>'L', | ||
3850 | 4844=>'L', | ||
3851 | 4845=>'L', | ||
3852 | 4846=>'L', | ||
3853 | 4847=>'L', | ||
3854 | 4848=>'L', | ||
3855 | 4849=>'L', | ||
3856 | 4850=>'L', | ||
3857 | 4851=>'L', | ||
3858 | 4852=>'L', | ||
3859 | 4853=>'L', | ||
3860 | 4854=>'L', | ||
3861 | 4855=>'L', | ||
3862 | 4856=>'L', | ||
3863 | 4857=>'L', | ||
3864 | 4858=>'L', | ||
3865 | 4859=>'L', | ||
3866 | 4860=>'L', | ||
3867 | 4861=>'L', | ||
3868 | 4862=>'L', | ||
3869 | 4863=>'L', | ||
3870 | 4864=>'L', | ||
3871 | 4865=>'L', | ||
3872 | 4866=>'L', | ||
3873 | 4867=>'L', | ||
3874 | 4868=>'L', | ||
3875 | 4869=>'L', | ||
3876 | 4870=>'L', | ||
3877 | 4871=>'L', | ||
3878 | 4872=>'L', | ||
3879 | 4873=>'L', | ||
3880 | 4874=>'L', | ||
3881 | 4875=>'L', | ||
3882 | 4876=>'L', | ||
3883 | 4877=>'L', | ||
3884 | 4878=>'L', | ||
3885 | 4879=>'L', | ||
3886 | 4880=>'L', | ||
3887 | 4882=>'L', | ||
3888 | 4883=>'L', | ||
3889 | 4884=>'L', | ||
3890 | 4885=>'L', | ||
3891 | 4888=>'L', | ||
3892 | 4889=>'L', | ||
3893 | 4890=>'L', | ||
3894 | 4891=>'L', | ||
3895 | 4892=>'L', | ||
3896 | 4893=>'L', | ||
3897 | 4894=>'L', | ||
3898 | 4895=>'L', | ||
3899 | 4896=>'L', | ||
3900 | 4897=>'L', | ||
3901 | 4898=>'L', | ||
3902 | 4899=>'L', | ||
3903 | 4900=>'L', | ||
3904 | 4901=>'L', | ||
3905 | 4902=>'L', | ||
3906 | 4903=>'L', | ||
3907 | 4904=>'L', | ||
3908 | 4905=>'L', | ||
3909 | 4906=>'L', | ||
3910 | 4907=>'L', | ||
3911 | 4908=>'L', | ||
3912 | 4909=>'L', | ||
3913 | 4910=>'L', | ||
3914 | 4911=>'L', | ||
3915 | 4912=>'L', | ||
3916 | 4913=>'L', | ||
3917 | 4914=>'L', | ||
3918 | 4915=>'L', | ||
3919 | 4916=>'L', | ||
3920 | 4917=>'L', | ||
3921 | 4918=>'L', | ||
3922 | 4919=>'L', | ||
3923 | 4920=>'L', | ||
3924 | 4921=>'L', | ||
3925 | 4922=>'L', | ||
3926 | 4923=>'L', | ||
3927 | 4924=>'L', | ||
3928 | 4925=>'L', | ||
3929 | 4926=>'L', | ||
3930 | 4927=>'L', | ||
3931 | 4928=>'L', | ||
3932 | 4929=>'L', | ||
3933 | 4930=>'L', | ||
3934 | 4931=>'L', | ||
3935 | 4932=>'L', | ||
3936 | 4933=>'L', | ||
3937 | 4934=>'L', | ||
3938 | 4935=>'L', | ||
3939 | 4936=>'L', | ||
3940 | 4937=>'L', | ||
3941 | 4938=>'L', | ||
3942 | 4939=>'L', | ||
3943 | 4940=>'L', | ||
3944 | 4941=>'L', | ||
3945 | 4942=>'L', | ||
3946 | 4943=>'L', | ||
3947 | 4944=>'L', | ||
3948 | 4945=>'L', | ||
3949 | 4946=>'L', | ||
3950 | 4947=>'L', | ||
3951 | 4948=>'L', | ||
3952 | 4949=>'L', | ||
3953 | 4950=>'L', | ||
3954 | 4951=>'L', | ||
3955 | 4952=>'L', | ||
3956 | 4953=>'L', | ||
3957 | 4954=>'L', | ||
3958 | 4959=>'NSM', | ||
3959 | 4960=>'L', | ||
3960 | 4961=>'L', | ||
3961 | 4962=>'L', | ||
3962 | 4963=>'L', | ||
3963 | 4964=>'L', | ||
3964 | 4965=>'L', | ||
3965 | 4966=>'L', | ||
3966 | 4967=>'L', | ||
3967 | 4968=>'L', | ||
3968 | 4969=>'L', | ||
3969 | 4970=>'L', | ||
3970 | 4971=>'L', | ||
3971 | 4972=>'L', | ||
3972 | 4973=>'L', | ||
3973 | 4974=>'L', | ||
3974 | 4975=>'L', | ||
3975 | 4976=>'L', | ||
3976 | 4977=>'L', | ||
3977 | 4978=>'L', | ||
3978 | 4979=>'L', | ||
3979 | 4980=>'L', | ||
3980 | 4981=>'L', | ||
3981 | 4982=>'L', | ||
3982 | 4983=>'L', | ||
3983 | 4984=>'L', | ||
3984 | 4985=>'L', | ||
3985 | 4986=>'L', | ||
3986 | 4987=>'L', | ||
3987 | 4988=>'L', | ||
3988 | 4992=>'L', | ||
3989 | 4993=>'L', | ||
3990 | 4994=>'L', | ||
3991 | 4995=>'L', | ||
3992 | 4996=>'L', | ||
3993 | 4997=>'L', | ||
3994 | 4998=>'L', | ||
3995 | 4999=>'L', | ||
3996 | 5000=>'L', | ||
3997 | 5001=>'L', | ||
3998 | 5002=>'L', | ||
3999 | 5003=>'L', | ||
4000 | 5004=>'L', | ||
4001 | 5005=>'L', | ||
4002 | 5006=>'L', | ||
4003 | 5007=>'L', | ||
4004 | 5008=>'ON', | ||
4005 | 5009=>'ON', | ||
4006 | 5010=>'ON', | ||
4007 | 5011=>'ON', | ||
4008 | 5012=>'ON', | ||
4009 | 5013=>'ON', | ||
4010 | 5014=>'ON', | ||
4011 | 5015=>'ON', | ||
4012 | 5016=>'ON', | ||
4013 | 5017=>'ON', | ||
4014 | 5024=>'L', | ||
4015 | 5025=>'L', | ||
4016 | 5026=>'L', | ||
4017 | 5027=>'L', | ||
4018 | 5028=>'L', | ||
4019 | 5029=>'L', | ||
4020 | 5030=>'L', | ||
4021 | 5031=>'L', | ||
4022 | 5032=>'L', | ||
4023 | 5033=>'L', | ||
4024 | 5034=>'L', | ||
4025 | 5035=>'L', | ||
4026 | 5036=>'L', | ||
4027 | 5037=>'L', | ||
4028 | 5038=>'L', | ||
4029 | 5039=>'L', | ||
4030 | 5040=>'L', | ||
4031 | 5041=>'L', | ||
4032 | 5042=>'L', | ||
4033 | 5043=>'L', | ||
4034 | 5044=>'L', | ||
4035 | 5045=>'L', | ||
4036 | 5046=>'L', | ||
4037 | 5047=>'L', | ||
4038 | 5048=>'L', | ||
4039 | 5049=>'L', | ||
4040 | 5050=>'L', | ||
4041 | 5051=>'L', | ||
4042 | 5052=>'L', | ||
4043 | 5053=>'L', | ||
4044 | 5054=>'L', | ||
4045 | 5055=>'L', | ||
4046 | 5056=>'L', | ||
4047 | 5057=>'L', | ||
4048 | 5058=>'L', | ||
4049 | 5059=>'L', | ||
4050 | 5060=>'L', | ||
4051 | 5061=>'L', | ||
4052 | 5062=>'L', | ||
4053 | 5063=>'L', | ||
4054 | 5064=>'L', | ||
4055 | 5065=>'L', | ||
4056 | 5066=>'L', | ||
4057 | 5067=>'L', | ||
4058 | 5068=>'L', | ||
4059 | 5069=>'L', | ||
4060 | 5070=>'L', | ||
4061 | 5071=>'L', | ||
4062 | 5072=>'L', | ||
4063 | 5073=>'L', | ||
4064 | 5074=>'L', | ||
4065 | 5075=>'L', | ||
4066 | 5076=>'L', | ||
4067 | 5077=>'L', | ||
4068 | 5078=>'L', | ||
4069 | 5079=>'L', | ||
4070 | 5080=>'L', | ||
4071 | 5081=>'L', | ||
4072 | 5082=>'L', | ||
4073 | 5083=>'L', | ||
4074 | 5084=>'L', | ||
4075 | 5085=>'L', | ||
4076 | 5086=>'L', | ||
4077 | 5087=>'L', | ||
4078 | 5088=>'L', | ||
4079 | 5089=>'L', | ||
4080 | 5090=>'L', | ||
4081 | 5091=>'L', | ||
4082 | 5092=>'L', | ||
4083 | 5093=>'L', | ||
4084 | 5094=>'L', | ||
4085 | 5095=>'L', | ||
4086 | 5096=>'L', | ||
4087 | 5097=>'L', | ||
4088 | 5098=>'L', | ||
4089 | 5099=>'L', | ||
4090 | 5100=>'L', | ||
4091 | 5101=>'L', | ||
4092 | 5102=>'L', | ||
4093 | 5103=>'L', | ||
4094 | 5104=>'L', | ||
4095 | 5105=>'L', | ||
4096 | 5106=>'L', | ||
4097 | 5107=>'L', | ||
4098 | 5108=>'L', | ||
4099 | 5121=>'L', | ||
4100 | 5122=>'L', | ||
4101 | 5123=>'L', | ||
4102 | 5124=>'L', | ||
4103 | 5125=>'L', | ||
4104 | 5126=>'L', | ||
4105 | 5127=>'L', | ||
4106 | 5128=>'L', | ||
4107 | 5129=>'L', | ||
4108 | 5130=>'L', | ||
4109 | 5131=>'L', | ||
4110 | 5132=>'L', | ||
4111 | 5133=>'L', | ||
4112 | 5134=>'L', | ||
4113 | 5135=>'L', | ||
4114 | 5136=>'L', | ||
4115 | 5137=>'L', | ||
4116 | 5138=>'L', | ||
4117 | 5139=>'L', | ||
4118 | 5140=>'L', | ||
4119 | 5141=>'L', | ||
4120 | 5142=>'L', | ||
4121 | 5143=>'L', | ||
4122 | 5144=>'L', | ||
4123 | 5145=>'L', | ||
4124 | 5146=>'L', | ||
4125 | 5147=>'L', | ||
4126 | 5148=>'L', | ||
4127 | 5149=>'L', | ||
4128 | 5150=>'L', | ||
4129 | 5151=>'L', | ||
4130 | 5152=>'L', | ||
4131 | 5153=>'L', | ||
4132 | 5154=>'L', | ||
4133 | 5155=>'L', | ||
4134 | 5156=>'L', | ||
4135 | 5157=>'L', | ||
4136 | 5158=>'L', | ||
4137 | 5159=>'L', | ||
4138 | 5160=>'L', | ||
4139 | 5161=>'L', | ||
4140 | 5162=>'L', | ||
4141 | 5163=>'L', | ||
4142 | 5164=>'L', | ||
4143 | 5165=>'L', | ||
4144 | 5166=>'L', | ||
4145 | 5167=>'L', | ||
4146 | 5168=>'L', | ||
4147 | 5169=>'L', | ||
4148 | 5170=>'L', | ||
4149 | 5171=>'L', | ||
4150 | 5172=>'L', | ||
4151 | 5173=>'L', | ||
4152 | 5174=>'L', | ||
4153 | 5175=>'L', | ||
4154 | 5176=>'L', | ||
4155 | 5177=>'L', | ||
4156 | 5178=>'L', | ||
4157 | 5179=>'L', | ||
4158 | 5180=>'L', | ||
4159 | 5181=>'L', | ||
4160 | 5182=>'L', | ||
4161 | 5183=>'L', | ||
4162 | 5184=>'L', | ||
4163 | 5185=>'L', | ||
4164 | 5186=>'L', | ||
4165 | 5187=>'L', | ||
4166 | 5188=>'L', | ||
4167 | 5189=>'L', | ||
4168 | 5190=>'L', | ||
4169 | 5191=>'L', | ||
4170 | 5192=>'L', | ||
4171 | 5193=>'L', | ||
4172 | 5194=>'L', | ||
4173 | 5195=>'L', | ||
4174 | 5196=>'L', | ||
4175 | 5197=>'L', | ||
4176 | 5198=>'L', | ||
4177 | 5199=>'L', | ||
4178 | 5200=>'L', | ||
4179 | 5201=>'L', | ||
4180 | 5202=>'L', | ||
4181 | 5203=>'L', | ||
4182 | 5204=>'L', | ||
4183 | 5205=>'L', | ||
4184 | 5206=>'L', | ||
4185 | 5207=>'L', | ||
4186 | 5208=>'L', | ||
4187 | 5209=>'L', | ||
4188 | 5210=>'L', | ||
4189 | 5211=>'L', | ||
4190 | 5212=>'L', | ||
4191 | 5213=>'L', | ||
4192 | 5214=>'L', | ||
4193 | 5215=>'L', | ||
4194 | 5216=>'L', | ||
4195 | 5217=>'L', | ||
4196 | 5218=>'L', | ||
4197 | 5219=>'L', | ||
4198 | 5220=>'L', | ||
4199 | 5221=>'L', | ||
4200 | 5222=>'L', | ||
4201 | 5223=>'L', | ||
4202 | 5224=>'L', | ||
4203 | 5225=>'L', | ||
4204 | 5226=>'L', | ||
4205 | 5227=>'L', | ||
4206 | 5228=>'L', | ||
4207 | 5229=>'L', | ||
4208 | 5230=>'L', | ||
4209 | 5231=>'L', | ||
4210 | 5232=>'L', | ||
4211 | 5233=>'L', | ||
4212 | 5234=>'L', | ||
4213 | 5235=>'L', | ||
4214 | 5236=>'L', | ||
4215 | 5237=>'L', | ||
4216 | 5238=>'L', | ||
4217 | 5239=>'L', | ||
4218 | 5240=>'L', | ||
4219 | 5241=>'L', | ||
4220 | 5242=>'L', | ||
4221 | 5243=>'L', | ||
4222 | 5244=>'L', | ||
4223 | 5245=>'L', | ||
4224 | 5246=>'L', | ||
4225 | 5247=>'L', | ||
4226 | 5248=>'L', | ||
4227 | 5249=>'L', | ||
4228 | 5250=>'L', | ||
4229 | 5251=>'L', | ||
4230 | 5252=>'L', | ||
4231 | 5253=>'L', | ||
4232 | 5254=>'L', | ||
4233 | 5255=>'L', | ||
4234 | 5256=>'L', | ||
4235 | 5257=>'L', | ||
4236 | 5258=>'L', | ||
4237 | 5259=>'L', | ||
4238 | 5260=>'L', | ||
4239 | 5261=>'L', | ||
4240 | 5262=>'L', | ||
4241 | 5263=>'L', | ||
4242 | 5264=>'L', | ||
4243 | 5265=>'L', | ||
4244 | 5266=>'L', | ||
4245 | 5267=>'L', | ||
4246 | 5268=>'L', | ||
4247 | 5269=>'L', | ||
4248 | 5270=>'L', | ||
4249 | 5271=>'L', | ||
4250 | 5272=>'L', | ||
4251 | 5273=>'L', | ||
4252 | 5274=>'L', | ||
4253 | 5275=>'L', | ||
4254 | 5276=>'L', | ||
4255 | 5277=>'L', | ||
4256 | 5278=>'L', | ||
4257 | 5279=>'L', | ||
4258 | 5280=>'L', | ||
4259 | 5281=>'L', | ||
4260 | 5282=>'L', | ||
4261 | 5283=>'L', | ||
4262 | 5284=>'L', | ||
4263 | 5285=>'L', | ||
4264 | 5286=>'L', | ||
4265 | 5287=>'L', | ||
4266 | 5288=>'L', | ||
4267 | 5289=>'L', | ||
4268 | 5290=>'L', | ||
4269 | 5291=>'L', | ||
4270 | 5292=>'L', | ||
4271 | 5293=>'L', | ||
4272 | 5294=>'L', | ||
4273 | 5295=>'L', | ||
4274 | 5296=>'L', | ||
4275 | 5297=>'L', | ||
4276 | 5298=>'L', | ||
4277 | 5299=>'L', | ||
4278 | 5300=>'L', | ||
4279 | 5301=>'L', | ||
4280 | 5302=>'L', | ||
4281 | 5303=>'L', | ||
4282 | 5304=>'L', | ||
4283 | 5305=>'L', | ||
4284 | 5306=>'L', | ||
4285 | 5307=>'L', | ||
4286 | 5308=>'L', | ||
4287 | 5309=>'L', | ||
4288 | 5310=>'L', | ||
4289 | 5311=>'L', | ||
4290 | 5312=>'L', | ||
4291 | 5313=>'L', | ||
4292 | 5314=>'L', | ||
4293 | 5315=>'L', | ||
4294 | 5316=>'L', | ||
4295 | 5317=>'L', | ||
4296 | 5318=>'L', | ||
4297 | 5319=>'L', | ||
4298 | 5320=>'L', | ||
4299 | 5321=>'L', | ||
4300 | 5322=>'L', | ||
4301 | 5323=>'L', | ||
4302 | 5324=>'L', | ||
4303 | 5325=>'L', | ||
4304 | 5326=>'L', | ||
4305 | 5327=>'L', | ||
4306 | 5328=>'L', | ||
4307 | 5329=>'L', | ||
4308 | 5330=>'L', | ||
4309 | 5331=>'L', | ||
4310 | 5332=>'L', | ||
4311 | 5333=>'L', | ||
4312 | 5334=>'L', | ||
4313 | 5335=>'L', | ||
4314 | 5336=>'L', | ||
4315 | 5337=>'L', | ||
4316 | 5338=>'L', | ||
4317 | 5339=>'L', | ||
4318 | 5340=>'L', | ||
4319 | 5341=>'L', | ||
4320 | 5342=>'L', | ||
4321 | 5343=>'L', | ||
4322 | 5344=>'L', | ||
4323 | 5345=>'L', | ||
4324 | 5346=>'L', | ||
4325 | 5347=>'L', | ||
4326 | 5348=>'L', | ||
4327 | 5349=>'L', | ||
4328 | 5350=>'L', | ||
4329 | 5351=>'L', | ||
4330 | 5352=>'L', | ||
4331 | 5353=>'L', | ||
4332 | 5354=>'L', | ||
4333 | 5355=>'L', | ||
4334 | 5356=>'L', | ||
4335 | 5357=>'L', | ||
4336 | 5358=>'L', | ||
4337 | 5359=>'L', | ||
4338 | 5360=>'L', | ||
4339 | 5361=>'L', | ||
4340 | 5362=>'L', | ||
4341 | 5363=>'L', | ||
4342 | 5364=>'L', | ||
4343 | 5365=>'L', | ||
4344 | 5366=>'L', | ||
4345 | 5367=>'L', | ||
4346 | 5368=>'L', | ||
4347 | 5369=>'L', | ||
4348 | 5370=>'L', | ||
4349 | 5371=>'L', | ||
4350 | 5372=>'L', | ||
4351 | 5373=>'L', | ||
4352 | 5374=>'L', | ||
4353 | 5375=>'L', | ||
4354 | 5376=>'L', | ||
4355 | 5377=>'L', | ||
4356 | 5378=>'L', | ||
4357 | 5379=>'L', | ||
4358 | 5380=>'L', | ||
4359 | 5381=>'L', | ||
4360 | 5382=>'L', | ||
4361 | 5383=>'L', | ||
4362 | 5384=>'L', | ||
4363 | 5385=>'L', | ||
4364 | 5386=>'L', | ||
4365 | 5387=>'L', | ||
4366 | 5388=>'L', | ||
4367 | 5389=>'L', | ||
4368 | 5390=>'L', | ||
4369 | 5391=>'L', | ||
4370 | 5392=>'L', | ||
4371 | 5393=>'L', | ||
4372 | 5394=>'L', | ||
4373 | 5395=>'L', | ||
4374 | 5396=>'L', | ||
4375 | 5397=>'L', | ||
4376 | 5398=>'L', | ||
4377 | 5399=>'L', | ||
4378 | 5400=>'L', | ||
4379 | 5401=>'L', | ||
4380 | 5402=>'L', | ||
4381 | 5403=>'L', | ||
4382 | 5404=>'L', | ||
4383 | 5405=>'L', | ||
4384 | 5406=>'L', | ||
4385 | 5407=>'L', | ||
4386 | 5408=>'L', | ||
4387 | 5409=>'L', | ||
4388 | 5410=>'L', | ||
4389 | 5411=>'L', | ||
4390 | 5412=>'L', | ||
4391 | 5413=>'L', | ||
4392 | 5414=>'L', | ||
4393 | 5415=>'L', | ||
4394 | 5416=>'L', | ||
4395 | 5417=>'L', | ||
4396 | 5418=>'L', | ||
4397 | 5419=>'L', | ||
4398 | 5420=>'L', | ||
4399 | 5421=>'L', | ||
4400 | 5422=>'L', | ||
4401 | 5423=>'L', | ||
4402 | 5424=>'L', | ||
4403 | 5425=>'L', | ||
4404 | 5426=>'L', | ||
4405 | 5427=>'L', | ||
4406 | 5428=>'L', | ||
4407 | 5429=>'L', | ||
4408 | 5430=>'L', | ||
4409 | 5431=>'L', | ||
4410 | 5432=>'L', | ||
4411 | 5433=>'L', | ||
4412 | 5434=>'L', | ||
4413 | 5435=>'L', | ||
4414 | 5436=>'L', | ||
4415 | 5437=>'L', | ||
4416 | 5438=>'L', | ||
4417 | 5439=>'L', | ||
4418 | 5440=>'L', | ||
4419 | 5441=>'L', | ||
4420 | 5442=>'L', | ||
4421 | 5443=>'L', | ||
4422 | 5444=>'L', | ||
4423 | 5445=>'L', | ||
4424 | 5446=>'L', | ||
4425 | 5447=>'L', | ||
4426 | 5448=>'L', | ||
4427 | 5449=>'L', | ||
4428 | 5450=>'L', | ||
4429 | 5451=>'L', | ||
4430 | 5452=>'L', | ||
4431 | 5453=>'L', | ||
4432 | 5454=>'L', | ||
4433 | 5455=>'L', | ||
4434 | 5456=>'L', | ||
4435 | 5457=>'L', | ||
4436 | 5458=>'L', | ||
4437 | 5459=>'L', | ||
4438 | 5460=>'L', | ||
4439 | 5461=>'L', | ||
4440 | 5462=>'L', | ||
4441 | 5463=>'L', | ||
4442 | 5464=>'L', | ||
4443 | 5465=>'L', | ||
4444 | 5466=>'L', | ||
4445 | 5467=>'L', | ||
4446 | 5468=>'L', | ||
4447 | 5469=>'L', | ||
4448 | 5470=>'L', | ||
4449 | 5471=>'L', | ||
4450 | 5472=>'L', | ||
4451 | 5473=>'L', | ||
4452 | 5474=>'L', | ||
4453 | 5475=>'L', | ||
4454 | 5476=>'L', | ||
4455 | 5477=>'L', | ||
4456 | 5478=>'L', | ||
4457 | 5479=>'L', | ||
4458 | 5480=>'L', | ||
4459 | 5481=>'L', | ||
4460 | 5482=>'L', | ||
4461 | 5483=>'L', | ||
4462 | 5484=>'L', | ||
4463 | 5485=>'L', | ||
4464 | 5486=>'L', | ||
4465 | 5487=>'L', | ||
4466 | 5488=>'L', | ||
4467 | 5489=>'L', | ||
4468 | 5490=>'L', | ||
4469 | 5491=>'L', | ||
4470 | 5492=>'L', | ||
4471 | 5493=>'L', | ||
4472 | 5494=>'L', | ||
4473 | 5495=>'L', | ||
4474 | 5496=>'L', | ||
4475 | 5497=>'L', | ||
4476 | 5498=>'L', | ||
4477 | 5499=>'L', | ||
4478 | 5500=>'L', | ||
4479 | 5501=>'L', | ||
4480 | 5502=>'L', | ||
4481 | 5503=>'L', | ||
4482 | 5504=>'L', | ||
4483 | 5505=>'L', | ||
4484 | 5506=>'L', | ||
4485 | 5507=>'L', | ||
4486 | 5508=>'L', | ||
4487 | 5509=>'L', | ||
4488 | 5510=>'L', | ||
4489 | 5511=>'L', | ||
4490 | 5512=>'L', | ||
4491 | 5513=>'L', | ||
4492 | 5514=>'L', | ||
4493 | 5515=>'L', | ||
4494 | 5516=>'L', | ||
4495 | 5517=>'L', | ||
4496 | 5518=>'L', | ||
4497 | 5519=>'L', | ||
4498 | 5520=>'L', | ||
4499 | 5521=>'L', | ||
4500 | 5522=>'L', | ||
4501 | 5523=>'L', | ||
4502 | 5524=>'L', | ||
4503 | 5525=>'L', | ||
4504 | 5526=>'L', | ||
4505 | 5527=>'L', | ||
4506 | 5528=>'L', | ||
4507 | 5529=>'L', | ||
4508 | 5530=>'L', | ||
4509 | 5531=>'L', | ||
4510 | 5532=>'L', | ||
4511 | 5533=>'L', | ||
4512 | 5534=>'L', | ||
4513 | 5535=>'L', | ||
4514 | 5536=>'L', | ||
4515 | 5537=>'L', | ||
4516 | 5538=>'L', | ||
4517 | 5539=>'L', | ||
4518 | 5540=>'L', | ||
4519 | 5541=>'L', | ||
4520 | 5542=>'L', | ||
4521 | 5543=>'L', | ||
4522 | 5544=>'L', | ||
4523 | 5545=>'L', | ||
4524 | 5546=>'L', | ||
4525 | 5547=>'L', | ||
4526 | 5548=>'L', | ||
4527 | 5549=>'L', | ||
4528 | 5550=>'L', | ||
4529 | 5551=>'L', | ||
4530 | 5552=>'L', | ||
4531 | 5553=>'L', | ||
4532 | 5554=>'L', | ||
4533 | 5555=>'L', | ||
4534 | 5556=>'L', | ||
4535 | 5557=>'L', | ||
4536 | 5558=>'L', | ||
4537 | 5559=>'L', | ||
4538 | 5560=>'L', | ||
4539 | 5561=>'L', | ||
4540 | 5562=>'L', | ||
4541 | 5563=>'L', | ||
4542 | 5564=>'L', | ||
4543 | 5565=>'L', | ||
4544 | 5566=>'L', | ||
4545 | 5567=>'L', | ||
4546 | 5568=>'L', | ||
4547 | 5569=>'L', | ||
4548 | 5570=>'L', | ||
4549 | 5571=>'L', | ||
4550 | 5572=>'L', | ||
4551 | 5573=>'L', | ||
4552 | 5574=>'L', | ||
4553 | 5575=>'L', | ||
4554 | 5576=>'L', | ||
4555 | 5577=>'L', | ||
4556 | 5578=>'L', | ||
4557 | 5579=>'L', | ||
4558 | 5580=>'L', | ||
4559 | 5581=>'L', | ||
4560 | 5582=>'L', | ||
4561 | 5583=>'L', | ||
4562 | 5584=>'L', | ||
4563 | 5585=>'L', | ||
4564 | 5586=>'L', | ||
4565 | 5587=>'L', | ||
4566 | 5588=>'L', | ||
4567 | 5589=>'L', | ||
4568 | 5590=>'L', | ||
4569 | 5591=>'L', | ||
4570 | 5592=>'L', | ||
4571 | 5593=>'L', | ||
4572 | 5594=>'L', | ||
4573 | 5595=>'L', | ||
4574 | 5596=>'L', | ||
4575 | 5597=>'L', | ||
4576 | 5598=>'L', | ||
4577 | 5599=>'L', | ||
4578 | 5600=>'L', | ||
4579 | 5601=>'L', | ||
4580 | 5602=>'L', | ||
4581 | 5603=>'L', | ||
4582 | 5604=>'L', | ||
4583 | 5605=>'L', | ||
4584 | 5606=>'L', | ||
4585 | 5607=>'L', | ||
4586 | 5608=>'L', | ||
4587 | 5609=>'L', | ||
4588 | 5610=>'L', | ||
4589 | 5611=>'L', | ||
4590 | 5612=>'L', | ||
4591 | 5613=>'L', | ||
4592 | 5614=>'L', | ||
4593 | 5615=>'L', | ||
4594 | 5616=>'L', | ||
4595 | 5617=>'L', | ||
4596 | 5618=>'L', | ||
4597 | 5619=>'L', | ||
4598 | 5620=>'L', | ||
4599 | 5621=>'L', | ||
4600 | 5622=>'L', | ||
4601 | 5623=>'L', | ||
4602 | 5624=>'L', | ||
4603 | 5625=>'L', | ||
4604 | 5626=>'L', | ||
4605 | 5627=>'L', | ||
4606 | 5628=>'L', | ||
4607 | 5629=>'L', | ||
4608 | 5630=>'L', | ||
4609 | 5631=>'L', | ||
4610 | 5632=>'L', | ||
4611 | 5633=>'L', | ||
4612 | 5634=>'L', | ||
4613 | 5635=>'L', | ||
4614 | 5636=>'L', | ||
4615 | 5637=>'L', | ||
4616 | 5638=>'L', | ||
4617 | 5639=>'L', | ||
4618 | 5640=>'L', | ||
4619 | 5641=>'L', | ||
4620 | 5642=>'L', | ||
4621 | 5643=>'L', | ||
4622 | 5644=>'L', | ||
4623 | 5645=>'L', | ||
4624 | 5646=>'L', | ||
4625 | 5647=>'L', | ||
4626 | 5648=>'L', | ||
4627 | 5649=>'L', | ||
4628 | 5650=>'L', | ||
4629 | 5651=>'L', | ||
4630 | 5652=>'L', | ||
4631 | 5653=>'L', | ||
4632 | 5654=>'L', | ||
4633 | 5655=>'L', | ||
4634 | 5656=>'L', | ||
4635 | 5657=>'L', | ||
4636 | 5658=>'L', | ||
4637 | 5659=>'L', | ||
4638 | 5660=>'L', | ||
4639 | 5661=>'L', | ||
4640 | 5662=>'L', | ||
4641 | 5663=>'L', | ||
4642 | 5664=>'L', | ||
4643 | 5665=>'L', | ||
4644 | 5666=>'L', | ||
4645 | 5667=>'L', | ||
4646 | 5668=>'L', | ||
4647 | 5669=>'L', | ||
4648 | 5670=>'L', | ||
4649 | 5671=>'L', | ||
4650 | 5672=>'L', | ||
4651 | 5673=>'L', | ||
4652 | 5674=>'L', | ||
4653 | 5675=>'L', | ||
4654 | 5676=>'L', | ||
4655 | 5677=>'L', | ||
4656 | 5678=>'L', | ||
4657 | 5679=>'L', | ||
4658 | 5680=>'L', | ||
4659 | 5681=>'L', | ||
4660 | 5682=>'L', | ||
4661 | 5683=>'L', | ||
4662 | 5684=>'L', | ||
4663 | 5685=>'L', | ||
4664 | 5686=>'L', | ||
4665 | 5687=>'L', | ||
4666 | 5688=>'L', | ||
4667 | 5689=>'L', | ||
4668 | 5690=>'L', | ||
4669 | 5691=>'L', | ||
4670 | 5692=>'L', | ||
4671 | 5693=>'L', | ||
4672 | 5694=>'L', | ||
4673 | 5695=>'L', | ||
4674 | 5696=>'L', | ||
4675 | 5697=>'L', | ||
4676 | 5698=>'L', | ||
4677 | 5699=>'L', | ||
4678 | 5700=>'L', | ||
4679 | 5701=>'L', | ||
4680 | 5702=>'L', | ||
4681 | 5703=>'L', | ||
4682 | 5704=>'L', | ||
4683 | 5705=>'L', | ||
4684 | 5706=>'L', | ||
4685 | 5707=>'L', | ||
4686 | 5708=>'L', | ||
4687 | 5709=>'L', | ||
4688 | 5710=>'L', | ||
4689 | 5711=>'L', | ||
4690 | 5712=>'L', | ||
4691 | 5713=>'L', | ||
4692 | 5714=>'L', | ||
4693 | 5715=>'L', | ||
4694 | 5716=>'L', | ||
4695 | 5717=>'L', | ||
4696 | 5718=>'L', | ||
4697 | 5719=>'L', | ||
4698 | 5720=>'L', | ||
4699 | 5721=>'L', | ||
4700 | 5722=>'L', | ||
4701 | 5723=>'L', | ||
4702 | 5724=>'L', | ||
4703 | 5725=>'L', | ||
4704 | 5726=>'L', | ||
4705 | 5727=>'L', | ||
4706 | 5728=>'L', | ||
4707 | 5729=>'L', | ||
4708 | 5730=>'L', | ||
4709 | 5731=>'L', | ||
4710 | 5732=>'L', | ||
4711 | 5733=>'L', | ||
4712 | 5734=>'L', | ||
4713 | 5735=>'L', | ||
4714 | 5736=>'L', | ||
4715 | 5737=>'L', | ||
4716 | 5738=>'L', | ||
4717 | 5739=>'L', | ||
4718 | 5740=>'L', | ||
4719 | 5741=>'L', | ||
4720 | 5742=>'L', | ||
4721 | 5743=>'L', | ||
4722 | 5744=>'L', | ||
4723 | 5745=>'L', | ||
4724 | 5746=>'L', | ||
4725 | 5747=>'L', | ||
4726 | 5748=>'L', | ||
4727 | 5749=>'L', | ||
4728 | 5750=>'L', | ||
4729 | 5760=>'WS', | ||
4730 | 5761=>'L', | ||
4731 | 5762=>'L', | ||
4732 | 5763=>'L', | ||
4733 | 5764=>'L', | ||
4734 | 5765=>'L', | ||
4735 | 5766=>'L', | ||
4736 | 5767=>'L', | ||
4737 | 5768=>'L', | ||
4738 | 5769=>'L', | ||
4739 | 5770=>'L', | ||
4740 | 5771=>'L', | ||
4741 | 5772=>'L', | ||
4742 | 5773=>'L', | ||
4743 | 5774=>'L', | ||
4744 | 5775=>'L', | ||
4745 | 5776=>'L', | ||
4746 | 5777=>'L', | ||
4747 | 5778=>'L', | ||
4748 | 5779=>'L', | ||
4749 | 5780=>'L', | ||
4750 | 5781=>'L', | ||
4751 | 5782=>'L', | ||
4752 | 5783=>'L', | ||
4753 | 5784=>'L', | ||
4754 | 5785=>'L', | ||
4755 | 5786=>'L', | ||
4756 | 5787=>'ON', | ||
4757 | 5788=>'ON', | ||
4758 | 5792=>'L', | ||
4759 | 5793=>'L', | ||
4760 | 5794=>'L', | ||
4761 | 5795=>'L', | ||
4762 | 5796=>'L', | ||
4763 | 5797=>'L', | ||
4764 | 5798=>'L', | ||
4765 | 5799=>'L', | ||
4766 | 5800=>'L', | ||
4767 | 5801=>'L', | ||
4768 | 5802=>'L', | ||
4769 | 5803=>'L', | ||
4770 | 5804=>'L', | ||
4771 | 5805=>'L', | ||
4772 | 5806=>'L', | ||
4773 | 5807=>'L', | ||
4774 | 5808=>'L', | ||
4775 | 5809=>'L', | ||
4776 | 5810=>'L', | ||
4777 | 5811=>'L', | ||
4778 | 5812=>'L', | ||
4779 | 5813=>'L', | ||
4780 | 5814=>'L', | ||
4781 | 5815=>'L', | ||
4782 | 5816=>'L', | ||
4783 | 5817=>'L', | ||
4784 | 5818=>'L', | ||
4785 | 5819=>'L', | ||
4786 | 5820=>'L', | ||
4787 | 5821=>'L', | ||
4788 | 5822=>'L', | ||
4789 | 5823=>'L', | ||
4790 | 5824=>'L', | ||
4791 | 5825=>'L', | ||
4792 | 5826=>'L', | ||
4793 | 5827=>'L', | ||
4794 | 5828=>'L', | ||
4795 | 5829=>'L', | ||
4796 | 5830=>'L', | ||
4797 | 5831=>'L', | ||
4798 | 5832=>'L', | ||
4799 | 5833=>'L', | ||
4800 | 5834=>'L', | ||
4801 | 5835=>'L', | ||
4802 | 5836=>'L', | ||
4803 | 5837=>'L', | ||
4804 | 5838=>'L', | ||
4805 | 5839=>'L', | ||
4806 | 5840=>'L', | ||
4807 | 5841=>'L', | ||
4808 | 5842=>'L', | ||
4809 | 5843=>'L', | ||
4810 | 5844=>'L', | ||
4811 | 5845=>'L', | ||
4812 | 5846=>'L', | ||
4813 | 5847=>'L', | ||
4814 | 5848=>'L', | ||
4815 | 5849=>'L', | ||
4816 | 5850=>'L', | ||
4817 | 5851=>'L', | ||
4818 | 5852=>'L', | ||
4819 | 5853=>'L', | ||
4820 | 5854=>'L', | ||
4821 | 5855=>'L', | ||
4822 | 5856=>'L', | ||
4823 | 5857=>'L', | ||
4824 | 5858=>'L', | ||
4825 | 5859=>'L', | ||
4826 | 5860=>'L', | ||
4827 | 5861=>'L', | ||
4828 | 5862=>'L', | ||
4829 | 5863=>'L', | ||
4830 | 5864=>'L', | ||
4831 | 5865=>'L', | ||
4832 | 5866=>'L', | ||
4833 | 5867=>'L', | ||
4834 | 5868=>'L', | ||
4835 | 5869=>'L', | ||
4836 | 5870=>'L', | ||
4837 | 5871=>'L', | ||
4838 | 5872=>'L', | ||
4839 | 5888=>'L', | ||
4840 | 5889=>'L', | ||
4841 | 5890=>'L', | ||
4842 | 5891=>'L', | ||
4843 | 5892=>'L', | ||
4844 | 5893=>'L', | ||
4845 | 5894=>'L', | ||
4846 | 5895=>'L', | ||
4847 | 5896=>'L', | ||
4848 | 5897=>'L', | ||
4849 | 5898=>'L', | ||
4850 | 5899=>'L', | ||
4851 | 5900=>'L', | ||
4852 | 5902=>'L', | ||
4853 | 5903=>'L', | ||
4854 | 5904=>'L', | ||
4855 | 5905=>'L', | ||
4856 | 5906=>'NSM', | ||
4857 | 5907=>'NSM', | ||
4858 | 5908=>'NSM', | ||
4859 | 5920=>'L', | ||
4860 | 5921=>'L', | ||
4861 | 5922=>'L', | ||
4862 | 5923=>'L', | ||
4863 | 5924=>'L', | ||
4864 | 5925=>'L', | ||
4865 | 5926=>'L', | ||
4866 | 5927=>'L', | ||
4867 | 5928=>'L', | ||
4868 | 5929=>'L', | ||
4869 | 5930=>'L', | ||
4870 | 5931=>'L', | ||
4871 | 5932=>'L', | ||
4872 | 5933=>'L', | ||
4873 | 5934=>'L', | ||
4874 | 5935=>'L', | ||
4875 | 5936=>'L', | ||
4876 | 5937=>'L', | ||
4877 | 5938=>'NSM', | ||
4878 | 5939=>'NSM', | ||
4879 | 5940=>'NSM', | ||
4880 | 5941=>'L', | ||
4881 | 5942=>'L', | ||
4882 | 5952=>'L', | ||
4883 | 5953=>'L', | ||
4884 | 5954=>'L', | ||
4885 | 5955=>'L', | ||
4886 | 5956=>'L', | ||
4887 | 5957=>'L', | ||
4888 | 5958=>'L', | ||
4889 | 5959=>'L', | ||
4890 | 5960=>'L', | ||
4891 | 5961=>'L', | ||
4892 | 5962=>'L', | ||
4893 | 5963=>'L', | ||
4894 | 5964=>'L', | ||
4895 | 5965=>'L', | ||
4896 | 5966=>'L', | ||
4897 | 5967=>'L', | ||
4898 | 5968=>'L', | ||
4899 | 5969=>'L', | ||
4900 | 5970=>'NSM', | ||
4901 | 5971=>'NSM', | ||
4902 | 5984=>'L', | ||
4903 | 5985=>'L', | ||
4904 | 5986=>'L', | ||
4905 | 5987=>'L', | ||
4906 | 5988=>'L', | ||
4907 | 5989=>'L', | ||
4908 | 5990=>'L', | ||
4909 | 5991=>'L', | ||
4910 | 5992=>'L', | ||
4911 | 5993=>'L', | ||
4912 | 5994=>'L', | ||
4913 | 5995=>'L', | ||
4914 | 5996=>'L', | ||
4915 | 5998=>'L', | ||
4916 | 5999=>'L', | ||
4917 | 6000=>'L', | ||
4918 | 6002=>'NSM', | ||
4919 | 6003=>'NSM', | ||
4920 | 6016=>'L', | ||
4921 | 6017=>'L', | ||
4922 | 6018=>'L', | ||
4923 | 6019=>'L', | ||
4924 | 6020=>'L', | ||
4925 | 6021=>'L', | ||
4926 | 6022=>'L', | ||
4927 | 6023=>'L', | ||
4928 | 6024=>'L', | ||
4929 | 6025=>'L', | ||
4930 | 6026=>'L', | ||
4931 | 6027=>'L', | ||
4932 | 6028=>'L', | ||
4933 | 6029=>'L', | ||
4934 | 6030=>'L', | ||
4935 | 6031=>'L', | ||
4936 | 6032=>'L', | ||
4937 | 6033=>'L', | ||
4938 | 6034=>'L', | ||
4939 | 6035=>'L', | ||
4940 | 6036=>'L', | ||
4941 | 6037=>'L', | ||
4942 | 6038=>'L', | ||
4943 | 6039=>'L', | ||
4944 | 6040=>'L', | ||
4945 | 6041=>'L', | ||
4946 | 6042=>'L', | ||
4947 | 6043=>'L', | ||
4948 | 6044=>'L', | ||
4949 | 6045=>'L', | ||
4950 | 6046=>'L', | ||
4951 | 6047=>'L', | ||
4952 | 6048=>'L', | ||
4953 | 6049=>'L', | ||
4954 | 6050=>'L', | ||
4955 | 6051=>'L', | ||
4956 | 6052=>'L', | ||
4957 | 6053=>'L', | ||
4958 | 6054=>'L', | ||
4959 | 6055=>'L', | ||
4960 | 6056=>'L', | ||
4961 | 6057=>'L', | ||
4962 | 6058=>'L', | ||
4963 | 6059=>'L', | ||
4964 | 6060=>'L', | ||
4965 | 6061=>'L', | ||
4966 | 6062=>'L', | ||
4967 | 6063=>'L', | ||
4968 | 6064=>'L', | ||
4969 | 6065=>'L', | ||
4970 | 6066=>'L', | ||
4971 | 6067=>'L', | ||
4972 | 6068=>'L', | ||
4973 | 6069=>'L', | ||
4974 | 6070=>'L', | ||
4975 | 6071=>'NSM', | ||
4976 | 6072=>'NSM', | ||
4977 | 6073=>'NSM', | ||
4978 | 6074=>'NSM', | ||
4979 | 6075=>'NSM', | ||
4980 | 6076=>'NSM', | ||
4981 | 6077=>'NSM', | ||
4982 | 6078=>'L', | ||
4983 | 6079=>'L', | ||
4984 | 6080=>'L', | ||
4985 | 6081=>'L', | ||
4986 | 6082=>'L', | ||
4987 | 6083=>'L', | ||
4988 | 6084=>'L', | ||
4989 | 6085=>'L', | ||
4990 | 6086=>'NSM', | ||
4991 | 6087=>'L', | ||
4992 | 6088=>'L', | ||
4993 | 6089=>'NSM', | ||
4994 | 6090=>'NSM', | ||
4995 | 6091=>'NSM', | ||
4996 | 6092=>'NSM', | ||
4997 | 6093=>'NSM', | ||
4998 | 6094=>'NSM', | ||
4999 | 6095=>'NSM', | ||
5000 | 6096=>'NSM', | ||
5001 | 6097=>'NSM', | ||
5002 | 6098=>'NSM', | ||
5003 | 6099=>'NSM', | ||
5004 | 6100=>'L', | ||
5005 | 6101=>'L', | ||
5006 | 6102=>'L', | ||
5007 | 6103=>'L', | ||
5008 | 6104=>'L', | ||
5009 | 6105=>'L', | ||
5010 | 6106=>'L', | ||
5011 | 6107=>'ET', | ||
5012 | 6108=>'L', | ||
5013 | 6109=>'NSM', | ||
5014 | 6112=>'L', | ||
5015 | 6113=>'L', | ||
5016 | 6114=>'L', | ||
5017 | 6115=>'L', | ||
5018 | 6116=>'L', | ||
5019 | 6117=>'L', | ||
5020 | 6118=>'L', | ||
5021 | 6119=>'L', | ||
5022 | 6120=>'L', | ||
5023 | 6121=>'L', | ||
5024 | 6128=>'ON', | ||
5025 | 6129=>'ON', | ||
5026 | 6130=>'ON', | ||
5027 | 6131=>'ON', | ||
5028 | 6132=>'ON', | ||
5029 | 6133=>'ON', | ||
5030 | 6134=>'ON', | ||
5031 | 6135=>'ON', | ||
5032 | 6136=>'ON', | ||
5033 | 6137=>'ON', | ||
5034 | 6144=>'ON', | ||
5035 | 6145=>'ON', | ||
5036 | 6146=>'ON', | ||
5037 | 6147=>'ON', | ||
5038 | 6148=>'ON', | ||
5039 | 6149=>'ON', | ||
5040 | 6150=>'ON', | ||
5041 | 6151=>'ON', | ||
5042 | 6152=>'ON', | ||
5043 | 6153=>'ON', | ||
5044 | 6154=>'ON', | ||
5045 | 6155=>'NSM', | ||
5046 | 6156=>'NSM', | ||
5047 | 6157=>'NSM', | ||
5048 | 6158=>'WS', | ||
5049 | 6160=>'L', | ||
5050 | 6161=>'L', | ||
5051 | 6162=>'L', | ||
5052 | 6163=>'L', | ||
5053 | 6164=>'L', | ||
5054 | 6165=>'L', | ||
5055 | 6166=>'L', | ||
5056 | 6167=>'L', | ||
5057 | 6168=>'L', | ||
5058 | 6169=>'L', | ||
5059 | 6176=>'L', | ||
5060 | 6177=>'L', | ||
5061 | 6178=>'L', | ||
5062 | 6179=>'L', | ||
5063 | 6180=>'L', | ||
5064 | 6181=>'L', | ||
5065 | 6182=>'L', | ||
5066 | 6183=>'L', | ||
5067 | 6184=>'L', | ||
5068 | 6185=>'L', | ||
5069 | 6186=>'L', | ||
5070 | 6187=>'L', | ||
5071 | 6188=>'L', | ||
5072 | 6189=>'L', | ||
5073 | 6190=>'L', | ||
5074 | 6191=>'L', | ||
5075 | 6192=>'L', | ||
5076 | 6193=>'L', | ||
5077 | 6194=>'L', | ||
5078 | 6195=>'L', | ||
5079 | 6196=>'L', | ||
5080 | 6197=>'L', | ||
5081 | 6198=>'L', | ||
5082 | 6199=>'L', | ||
5083 | 6200=>'L', | ||
5084 | 6201=>'L', | ||
5085 | 6202=>'L', | ||
5086 | 6203=>'L', | ||
5087 | 6204=>'L', | ||
5088 | 6205=>'L', | ||
5089 | 6206=>'L', | ||
5090 | 6207=>'L', | ||
5091 | 6208=>'L', | ||
5092 | 6209=>'L', | ||
5093 | 6210=>'L', | ||
5094 | 6211=>'L', | ||
5095 | 6212=>'L', | ||
5096 | 6213=>'L', | ||
5097 | 6214=>'L', | ||
5098 | 6215=>'L', | ||
5099 | 6216=>'L', | ||
5100 | 6217=>'L', | ||
5101 | 6218=>'L', | ||
5102 | 6219=>'L', | ||
5103 | 6220=>'L', | ||
5104 | 6221=>'L', | ||
5105 | 6222=>'L', | ||
5106 | 6223=>'L', | ||
5107 | 6224=>'L', | ||
5108 | 6225=>'L', | ||
5109 | 6226=>'L', | ||
5110 | 6227=>'L', | ||
5111 | 6228=>'L', | ||
5112 | 6229=>'L', | ||
5113 | 6230=>'L', | ||
5114 | 6231=>'L', | ||
5115 | 6232=>'L', | ||
5116 | 6233=>'L', | ||
5117 | 6234=>'L', | ||
5118 | 6235=>'L', | ||
5119 | 6236=>'L', | ||
5120 | 6237=>'L', | ||
5121 | 6238=>'L', | ||
5122 | 6239=>'L', | ||
5123 | 6240=>'L', | ||
5124 | 6241=>'L', | ||
5125 | 6242=>'L', | ||
5126 | 6243=>'L', | ||
5127 | 6244=>'L', | ||
5128 | 6245=>'L', | ||
5129 | 6246=>'L', | ||
5130 | 6247=>'L', | ||
5131 | 6248=>'L', | ||
5132 | 6249=>'L', | ||
5133 | 6250=>'L', | ||
5134 | 6251=>'L', | ||
5135 | 6252=>'L', | ||
5136 | 6253=>'L', | ||
5137 | 6254=>'L', | ||
5138 | 6255=>'L', | ||
5139 | 6256=>'L', | ||
5140 | 6257=>'L', | ||
5141 | 6258=>'L', | ||
5142 | 6259=>'L', | ||
5143 | 6260=>'L', | ||
5144 | 6261=>'L', | ||
5145 | 6262=>'L', | ||
5146 | 6263=>'L', | ||
5147 | 6272=>'L', | ||
5148 | 6273=>'L', | ||
5149 | 6274=>'L', | ||
5150 | 6275=>'L', | ||
5151 | 6276=>'L', | ||
5152 | 6277=>'L', | ||
5153 | 6278=>'L', | ||
5154 | 6279=>'L', | ||
5155 | 6280=>'L', | ||
5156 | 6281=>'L', | ||
5157 | 6282=>'L', | ||
5158 | 6283=>'L', | ||
5159 | 6284=>'L', | ||
5160 | 6285=>'L', | ||
5161 | 6286=>'L', | ||
5162 | 6287=>'L', | ||
5163 | 6288=>'L', | ||
5164 | 6289=>'L', | ||
5165 | 6290=>'L', | ||
5166 | 6291=>'L', | ||
5167 | 6292=>'L', | ||
5168 | 6293=>'L', | ||
5169 | 6294=>'L', | ||
5170 | 6295=>'L', | ||
5171 | 6296=>'L', | ||
5172 | 6297=>'L', | ||
5173 | 6298=>'L', | ||
5174 | 6299=>'L', | ||
5175 | 6300=>'L', | ||
5176 | 6301=>'L', | ||
5177 | 6302=>'L', | ||
5178 | 6303=>'L', | ||
5179 | 6304=>'L', | ||
5180 | 6305=>'L', | ||
5181 | 6306=>'L', | ||
5182 | 6307=>'L', | ||
5183 | 6308=>'L', | ||
5184 | 6309=>'L', | ||
5185 | 6310=>'L', | ||
5186 | 6311=>'L', | ||
5187 | 6312=>'L', | ||
5188 | 6313=>'NSM', | ||
5189 | 6400=>'L', | ||
5190 | 6401=>'L', | ||
5191 | 6402=>'L', | ||
5192 | 6403=>'L', | ||
5193 | 6404=>'L', | ||
5194 | 6405=>'L', | ||
5195 | 6406=>'L', | ||
5196 | 6407=>'L', | ||
5197 | 6408=>'L', | ||
5198 | 6409=>'L', | ||
5199 | 6410=>'L', | ||
5200 | 6411=>'L', | ||
5201 | 6412=>'L', | ||
5202 | 6413=>'L', | ||
5203 | 6414=>'L', | ||
5204 | 6415=>'L', | ||
5205 | 6416=>'L', | ||
5206 | 6417=>'L', | ||
5207 | 6418=>'L', | ||
5208 | 6419=>'L', | ||
5209 | 6420=>'L', | ||
5210 | 6421=>'L', | ||
5211 | 6422=>'L', | ||
5212 | 6423=>'L', | ||
5213 | 6424=>'L', | ||
5214 | 6425=>'L', | ||
5215 | 6426=>'L', | ||
5216 | 6427=>'L', | ||
5217 | 6428=>'L', | ||
5218 | 6432=>'NSM', | ||
5219 | 6433=>'NSM', | ||
5220 | 6434=>'NSM', | ||
5221 | 6435=>'L', | ||
5222 | 6436=>'L', | ||
5223 | 6437=>'L', | ||
5224 | 6438=>'L', | ||
5225 | 6439=>'NSM', | ||
5226 | 6440=>'NSM', | ||
5227 | 6441=>'NSM', | ||
5228 | 6442=>'NSM', | ||
5229 | 6443=>'NSM', | ||
5230 | 6448=>'L', | ||
5231 | 6449=>'L', | ||
5232 | 6450=>'NSM', | ||
5233 | 6451=>'L', | ||
5234 | 6452=>'L', | ||
5235 | 6453=>'L', | ||
5236 | 6454=>'L', | ||
5237 | 6455=>'L', | ||
5238 | 6456=>'L', | ||
5239 | 6457=>'NSM', | ||
5240 | 6458=>'NSM', | ||
5241 | 6459=>'NSM', | ||
5242 | 6464=>'ON', | ||
5243 | 6468=>'ON', | ||
5244 | 6469=>'ON', | ||
5245 | 6470=>'L', | ||
5246 | 6471=>'L', | ||
5247 | 6472=>'L', | ||
5248 | 6473=>'L', | ||
5249 | 6474=>'L', | ||
5250 | 6475=>'L', | ||
5251 | 6476=>'L', | ||
5252 | 6477=>'L', | ||
5253 | 6478=>'L', | ||
5254 | 6479=>'L', | ||
5255 | 6480=>'L', | ||
5256 | 6481=>'L', | ||
5257 | 6482=>'L', | ||
5258 | 6483=>'L', | ||
5259 | 6484=>'L', | ||
5260 | 6485=>'L', | ||
5261 | 6486=>'L', | ||
5262 | 6487=>'L', | ||
5263 | 6488=>'L', | ||
5264 | 6489=>'L', | ||
5265 | 6490=>'L', | ||
5266 | 6491=>'L', | ||
5267 | 6492=>'L', | ||
5268 | 6493=>'L', | ||
5269 | 6494=>'L', | ||
5270 | 6495=>'L', | ||
5271 | 6496=>'L', | ||
5272 | 6497=>'L', | ||
5273 | 6498=>'L', | ||
5274 | 6499=>'L', | ||
5275 | 6500=>'L', | ||
5276 | 6501=>'L', | ||
5277 | 6502=>'L', | ||
5278 | 6503=>'L', | ||
5279 | 6504=>'L', | ||
5280 | 6505=>'L', | ||
5281 | 6506=>'L', | ||
5282 | 6507=>'L', | ||
5283 | 6508=>'L', | ||
5284 | 6509=>'L', | ||
5285 | 6512=>'L', | ||
5286 | 6513=>'L', | ||
5287 | 6514=>'L', | ||
5288 | 6515=>'L', | ||
5289 | 6516=>'L', | ||
5290 | 6528=>'L', | ||
5291 | 6529=>'L', | ||
5292 | 6530=>'L', | ||
5293 | 6531=>'L', | ||
5294 | 6532=>'L', | ||
5295 | 6533=>'L', | ||
5296 | 6534=>'L', | ||
5297 | 6535=>'L', | ||
5298 | 6536=>'L', | ||
5299 | 6537=>'L', | ||
5300 | 6538=>'L', | ||
5301 | 6539=>'L', | ||
5302 | 6540=>'L', | ||
5303 | 6541=>'L', | ||
5304 | 6542=>'L', | ||
5305 | 6543=>'L', | ||
5306 | 6544=>'L', | ||
5307 | 6545=>'L', | ||
5308 | 6546=>'L', | ||
5309 | 6547=>'L', | ||
5310 | 6548=>'L', | ||
5311 | 6549=>'L', | ||
5312 | 6550=>'L', | ||
5313 | 6551=>'L', | ||
5314 | 6552=>'L', | ||
5315 | 6553=>'L', | ||
5316 | 6554=>'L', | ||
5317 | 6555=>'L', | ||
5318 | 6556=>'L', | ||
5319 | 6557=>'L', | ||
5320 | 6558=>'L', | ||
5321 | 6559=>'L', | ||
5322 | 6560=>'L', | ||
5323 | 6561=>'L', | ||
5324 | 6562=>'L', | ||
5325 | 6563=>'L', | ||
5326 | 6564=>'L', | ||
5327 | 6565=>'L', | ||
5328 | 6566=>'L', | ||
5329 | 6567=>'L', | ||
5330 | 6568=>'L', | ||
5331 | 6569=>'L', | ||
5332 | 6576=>'L', | ||
5333 | 6577=>'L', | ||
5334 | 6578=>'L', | ||
5335 | 6579=>'L', | ||
5336 | 6580=>'L', | ||
5337 | 6581=>'L', | ||
5338 | 6582=>'L', | ||
5339 | 6583=>'L', | ||
5340 | 6584=>'L', | ||
5341 | 6585=>'L', | ||
5342 | 6586=>'L', | ||
5343 | 6587=>'L', | ||
5344 | 6588=>'L', | ||
5345 | 6589=>'L', | ||
5346 | 6590=>'L', | ||
5347 | 6591=>'L', | ||
5348 | 6592=>'L', | ||
5349 | 6593=>'L', | ||
5350 | 6594=>'L', | ||
5351 | 6595=>'L', | ||
5352 | 6596=>'L', | ||
5353 | 6597=>'L', | ||
5354 | 6598=>'L', | ||
5355 | 6599=>'L', | ||
5356 | 6600=>'L', | ||
5357 | 6601=>'L', | ||
5358 | 6608=>'L', | ||
5359 | 6609=>'L', | ||
5360 | 6610=>'L', | ||
5361 | 6611=>'L', | ||
5362 | 6612=>'L', | ||
5363 | 6613=>'L', | ||
5364 | 6614=>'L', | ||
5365 | 6615=>'L', | ||
5366 | 6616=>'L', | ||
5367 | 6617=>'L', | ||
5368 | 6622=>'ON', | ||
5369 | 6623=>'ON', | ||
5370 | 6624=>'ON', | ||
5371 | 6625=>'ON', | ||
5372 | 6626=>'ON', | ||
5373 | 6627=>'ON', | ||
5374 | 6628=>'ON', | ||
5375 | 6629=>'ON', | ||
5376 | 6630=>'ON', | ||
5377 | 6631=>'ON', | ||
5378 | 6632=>'ON', | ||
5379 | 6633=>'ON', | ||
5380 | 6634=>'ON', | ||
5381 | 6635=>'ON', | ||
5382 | 6636=>'ON', | ||
5383 | 6637=>'ON', | ||
5384 | 6638=>'ON', | ||
5385 | 6639=>'ON', | ||
5386 | 6640=>'ON', | ||
5387 | 6641=>'ON', | ||
5388 | 6642=>'ON', | ||
5389 | 6643=>'ON', | ||
5390 | 6644=>'ON', | ||
5391 | 6645=>'ON', | ||
5392 | 6646=>'ON', | ||
5393 | 6647=>'ON', | ||
5394 | 6648=>'ON', | ||
5395 | 6649=>'ON', | ||
5396 | 6650=>'ON', | ||
5397 | 6651=>'ON', | ||
5398 | 6652=>'ON', | ||
5399 | 6653=>'ON', | ||
5400 | 6654=>'ON', | ||
5401 | 6655=>'ON', | ||
5402 | 6656=>'L', | ||
5403 | 6657=>'L', | ||
5404 | 6658=>'L', | ||
5405 | 6659=>'L', | ||
5406 | 6660=>'L', | ||
5407 | 6661=>'L', | ||
5408 | 6662=>'L', | ||
5409 | 6663=>'L', | ||
5410 | 6664=>'L', | ||
5411 | 6665=>'L', | ||
5412 | 6666=>'L', | ||
5413 | 6667=>'L', | ||
5414 | 6668=>'L', | ||
5415 | 6669=>'L', | ||
5416 | 6670=>'L', | ||
5417 | 6671=>'L', | ||
5418 | 6672=>'L', | ||
5419 | 6673=>'L', | ||
5420 | 6674=>'L', | ||
5421 | 6675=>'L', | ||
5422 | 6676=>'L', | ||
5423 | 6677=>'L', | ||
5424 | 6678=>'L', | ||
5425 | 6679=>'NSM', | ||
5426 | 6680=>'NSM', | ||
5427 | 6681=>'L', | ||
5428 | 6682=>'L', | ||
5429 | 6683=>'L', | ||
5430 | 6686=>'L', | ||
5431 | 6687=>'L', | ||
5432 | 6912=>'NSM', | ||
5433 | 6913=>'NSM', | ||
5434 | 6914=>'NSM', | ||
5435 | 6915=>'NSM', | ||
5436 | 6916=>'L', | ||
5437 | 6917=>'L', | ||
5438 | 6918=>'L', | ||
5439 | 6919=>'L', | ||
5440 | 6920=>'L', | ||
5441 | 6921=>'L', | ||
5442 | 6922=>'L', | ||
5443 | 6923=>'L', | ||
5444 | 6924=>'L', | ||
5445 | 6925=>'L', | ||
5446 | 6926=>'L', | ||
5447 | 6927=>'L', | ||
5448 | 6928=>'L', | ||
5449 | 6929=>'L', | ||
5450 | 6930=>'L', | ||
5451 | 6931=>'L', | ||
5452 | 6932=>'L', | ||
5453 | 6933=>'L', | ||
5454 | 6934=>'L', | ||
5455 | 6935=>'L', | ||
5456 | 6936=>'L', | ||
5457 | 6937=>'L', | ||
5458 | 6938=>'L', | ||
5459 | 6939=>'L', | ||
5460 | 6940=>'L', | ||
5461 | 6941=>'L', | ||
5462 | 6942=>'L', | ||
5463 | 6943=>'L', | ||
5464 | 6944=>'L', | ||
5465 | 6945=>'L', | ||
5466 | 6946=>'L', | ||
5467 | 6947=>'L', | ||
5468 | 6948=>'L', | ||
5469 | 6949=>'L', | ||
5470 | 6950=>'L', | ||
5471 | 6951=>'L', | ||
5472 | 6952=>'L', | ||
5473 | 6953=>'L', | ||
5474 | 6954=>'L', | ||
5475 | 6955=>'L', | ||
5476 | 6956=>'L', | ||
5477 | 6957=>'L', | ||
5478 | 6958=>'L', | ||
5479 | 6959=>'L', | ||
5480 | 6960=>'L', | ||
5481 | 6961=>'L', | ||
5482 | 6962=>'L', | ||
5483 | 6963=>'L', | ||
5484 | 6964=>'NSM', | ||
5485 | 6965=>'L', | ||
5486 | 6966=>'NSM', | ||
5487 | 6967=>'NSM', | ||
5488 | 6968=>'NSM', | ||
5489 | 6969=>'NSM', | ||
5490 | 6970=>'NSM', | ||
5491 | 6971=>'L', | ||
5492 | 6972=>'NSM', | ||
5493 | 6973=>'L', | ||
5494 | 6974=>'L', | ||
5495 | 6975=>'L', | ||
5496 | 6976=>'L', | ||
5497 | 6977=>'L', | ||
5498 | 6978=>'NSM', | ||
5499 | 6979=>'L', | ||
5500 | 6980=>'L', | ||
5501 | 6981=>'L', | ||
5502 | 6982=>'L', | ||
5503 | 6983=>'L', | ||
5504 | 6984=>'L', | ||
5505 | 6985=>'L', | ||
5506 | 6986=>'L', | ||
5507 | 6987=>'L', | ||
5508 | 6992=>'L', | ||
5509 | 6993=>'L', | ||
5510 | 6994=>'L', | ||
5511 | 6995=>'L', | ||
5512 | 6996=>'L', | ||
5513 | 6997=>'L', | ||
5514 | 6998=>'L', | ||
5515 | 6999=>'L', | ||
5516 | 7000=>'L', | ||
5517 | 7001=>'L', | ||
5518 | 7002=>'L', | ||
5519 | 7003=>'L', | ||
5520 | 7004=>'L', | ||
5521 | 7005=>'L', | ||
5522 | 7006=>'L', | ||
5523 | 7007=>'L', | ||
5524 | 7008=>'L', | ||
5525 | 7009=>'L', | ||
5526 | 7010=>'L', | ||
5527 | 7011=>'L', | ||
5528 | 7012=>'L', | ||
5529 | 7013=>'L', | ||
5530 | 7014=>'L', | ||
5531 | 7015=>'L', | ||
5532 | 7016=>'L', | ||
5533 | 7017=>'L', | ||
5534 | 7018=>'L', | ||
5535 | 7019=>'NSM', | ||
5536 | 7020=>'NSM', | ||
5537 | 7021=>'NSM', | ||
5538 | 7022=>'NSM', | ||
5539 | 7023=>'NSM', | ||
5540 | 7024=>'NSM', | ||
5541 | 7025=>'NSM', | ||
5542 | 7026=>'NSM', | ||
5543 | 7027=>'NSM', | ||
5544 | 7028=>'L', | ||
5545 | 7029=>'L', | ||
5546 | 7030=>'L', | ||
5547 | 7031=>'L', | ||
5548 | 7032=>'L', | ||
5549 | 7033=>'L', | ||
5550 | 7034=>'L', | ||
5551 | 7035=>'L', | ||
5552 | 7036=>'L', | ||
5553 | 7424=>'L', | ||
5554 | 7425=>'L', | ||
5555 | 7426=>'L', | ||
5556 | 7427=>'L', | ||
5557 | 7428=>'L', | ||
5558 | 7429=>'L', | ||
5559 | 7430=>'L', | ||
5560 | 7431=>'L', | ||
5561 | 7432=>'L', | ||
5562 | 7433=>'L', | ||
5563 | 7434=>'L', | ||
5564 | 7435=>'L', | ||
5565 | 7436=>'L', | ||
5566 | 7437=>'L', | ||
5567 | 7438=>'L', | ||
5568 | 7439=>'L', | ||
5569 | 7440=>'L', | ||
5570 | 7441=>'L', | ||
5571 | 7442=>'L', | ||
5572 | 7443=>'L', | ||
5573 | 7444=>'L', | ||
5574 | 7445=>'L', | ||
5575 | 7446=>'L', | ||
5576 | 7447=>'L', | ||
5577 | 7448=>'L', | ||
5578 | 7449=>'L', | ||
5579 | 7450=>'L', | ||
5580 | 7451=>'L', | ||
5581 | 7452=>'L', | ||
5582 | 7453=>'L', | ||
5583 | 7454=>'L', | ||
5584 | 7455=>'L', | ||
5585 | 7456=>'L', | ||
5586 | 7457=>'L', | ||
5587 | 7458=>'L', | ||
5588 | 7459=>'L', | ||
5589 | 7460=>'L', | ||
5590 | 7461=>'L', | ||
5591 | 7462=>'L', | ||
5592 | 7463=>'L', | ||
5593 | 7464=>'L', | ||
5594 | 7465=>'L', | ||
5595 | 7466=>'L', | ||
5596 | 7467=>'L', | ||
5597 | 7468=>'L', | ||
5598 | 7469=>'L', | ||
5599 | 7470=>'L', | ||
5600 | 7471=>'L', | ||
5601 | 7472=>'L', | ||
5602 | 7473=>'L', | ||
5603 | 7474=>'L', | ||
5604 | 7475=>'L', | ||
5605 | 7476=>'L', | ||
5606 | 7477=>'L', | ||
5607 | 7478=>'L', | ||
5608 | 7479=>'L', | ||
5609 | 7480=>'L', | ||
5610 | 7481=>'L', | ||
5611 | 7482=>'L', | ||
5612 | 7483=>'L', | ||
5613 | 7484=>'L', | ||
5614 | 7485=>'L', | ||
5615 | 7486=>'L', | ||
5616 | 7487=>'L', | ||
5617 | 7488=>'L', | ||
5618 | 7489=>'L', | ||
5619 | 7490=>'L', | ||
5620 | 7491=>'L', | ||
5621 | 7492=>'L', | ||
5622 | 7493=>'L', | ||
5623 | 7494=>'L', | ||
5624 | 7495=>'L', | ||
5625 | 7496=>'L', | ||
5626 | 7497=>'L', | ||
5627 | 7498=>'L', | ||
5628 | 7499=>'L', | ||
5629 | 7500=>'L', | ||
5630 | 7501=>'L', | ||
5631 | 7502=>'L', | ||
5632 | 7503=>'L', | ||
5633 | 7504=>'L', | ||
5634 | 7505=>'L', | ||
5635 | 7506=>'L', | ||
5636 | 7507=>'L', | ||
5637 | 7508=>'L', | ||
5638 | 7509=>'L', | ||
5639 | 7510=>'L', | ||
5640 | 7511=>'L', | ||
5641 | 7512=>'L', | ||
5642 | 7513=>'L', | ||
5643 | 7514=>'L', | ||
5644 | 7515=>'L', | ||
5645 | 7516=>'L', | ||
5646 | 7517=>'L', | ||
5647 | 7518=>'L', | ||
5648 | 7519=>'L', | ||
5649 | 7520=>'L', | ||
5650 | 7521=>'L', | ||
5651 | 7522=>'L', | ||
5652 | 7523=>'L', | ||
5653 | 7524=>'L', | ||
5654 | 7525=>'L', | ||
5655 | 7526=>'L', | ||
5656 | 7527=>'L', | ||
5657 | 7528=>'L', | ||
5658 | 7529=>'L', | ||
5659 | 7530=>'L', | ||
5660 | 7531=>'L', | ||
5661 | 7532=>'L', | ||
5662 | 7533=>'L', | ||
5663 | 7534=>'L', | ||
5664 | 7535=>'L', | ||
5665 | 7536=>'L', | ||
5666 | 7537=>'L', | ||
5667 | 7538=>'L', | ||
5668 | 7539=>'L', | ||
5669 | 7540=>'L', | ||
5670 | 7541=>'L', | ||
5671 | 7542=>'L', | ||
5672 | 7543=>'L', | ||
5673 | 7544=>'L', | ||
5674 | 7545=>'L', | ||
5675 | 7546=>'L', | ||
5676 | 7547=>'L', | ||
5677 | 7548=>'L', | ||
5678 | 7549=>'L', | ||
5679 | 7550=>'L', | ||
5680 | 7551=>'L', | ||
5681 | 7552=>'L', | ||
5682 | 7553=>'L', | ||
5683 | 7554=>'L', | ||
5684 | 7555=>'L', | ||
5685 | 7556=>'L', | ||
5686 | 7557=>'L', | ||
5687 | 7558=>'L', | ||
5688 | 7559=>'L', | ||
5689 | 7560=>'L', | ||
5690 | 7561=>'L', | ||
5691 | 7562=>'L', | ||
5692 | 7563=>'L', | ||
5693 | 7564=>'L', | ||
5694 | 7565=>'L', | ||
5695 | 7566=>'L', | ||
5696 | 7567=>'L', | ||
5697 | 7568=>'L', | ||
5698 | 7569=>'L', | ||
5699 | 7570=>'L', | ||
5700 | 7571=>'L', | ||
5701 | 7572=>'L', | ||
5702 | 7573=>'L', | ||
5703 | 7574=>'L', | ||
5704 | 7575=>'L', | ||
5705 | 7576=>'L', | ||
5706 | 7577=>'L', | ||
5707 | 7578=>'L', | ||
5708 | 7579=>'L', | ||
5709 | 7580=>'L', | ||
5710 | 7581=>'L', | ||
5711 | 7582=>'L', | ||
5712 | 7583=>'L', | ||
5713 | 7584=>'L', | ||
5714 | 7585=>'L', | ||
5715 | 7586=>'L', | ||
5716 | 7587=>'L', | ||
5717 | 7588=>'L', | ||
5718 | 7589=>'L', | ||
5719 | 7590=>'L', | ||
5720 | 7591=>'L', | ||
5721 | 7592=>'L', | ||
5722 | 7593=>'L', | ||
5723 | 7594=>'L', | ||
5724 | 7595=>'L', | ||
5725 | 7596=>'L', | ||
5726 | 7597=>'L', | ||
5727 | 7598=>'L', | ||
5728 | 7599=>'L', | ||
5729 | 7600=>'L', | ||
5730 | 7601=>'L', | ||
5731 | 7602=>'L', | ||
5732 | 7603=>'L', | ||
5733 | 7604=>'L', | ||
5734 | 7605=>'L', | ||
5735 | 7606=>'L', | ||
5736 | 7607=>'L', | ||
5737 | 7608=>'L', | ||
5738 | 7609=>'L', | ||
5739 | 7610=>'L', | ||
5740 | 7611=>'L', | ||
5741 | 7612=>'L', | ||
5742 | 7613=>'L', | ||
5743 | 7614=>'L', | ||
5744 | 7615=>'L', | ||
5745 | 7616=>'NSM', | ||
5746 | 7617=>'NSM', | ||
5747 | 7618=>'NSM', | ||
5748 | 7619=>'NSM', | ||
5749 | 7620=>'NSM', | ||
5750 | 7621=>'NSM', | ||
5751 | 7622=>'NSM', | ||
5752 | 7623=>'NSM', | ||
5753 | 7624=>'NSM', | ||
5754 | 7625=>'NSM', | ||
5755 | 7626=>'NSM', | ||
5756 | 7678=>'NSM', | ||
5757 | 7679=>'NSM', | ||
5758 | 7680=>'L', | ||
5759 | 7681=>'L', | ||
5760 | 7682=>'L', | ||
5761 | 7683=>'L', | ||
5762 | 7684=>'L', | ||
5763 | 7685=>'L', | ||
5764 | 7686=>'L', | ||
5765 | 7687=>'L', | ||
5766 | 7688=>'L', | ||
5767 | 7689=>'L', | ||
5768 | 7690=>'L', | ||
5769 | 7691=>'L', | ||
5770 | 7692=>'L', | ||
5771 | 7693=>'L', | ||
5772 | 7694=>'L', | ||
5773 | 7695=>'L', | ||
5774 | 7696=>'L', | ||
5775 | 7697=>'L', | ||
5776 | 7698=>'L', | ||
5777 | 7699=>'L', | ||
5778 | 7700=>'L', | ||
5779 | 7701=>'L', | ||
5780 | 7702=>'L', | ||
5781 | 7703=>'L', | ||
5782 | 7704=>'L', | ||
5783 | 7705=>'L', | ||
5784 | 7706=>'L', | ||
5785 | 7707=>'L', | ||
5786 | 7708=>'L', | ||
5787 | 7709=>'L', | ||
5788 | 7710=>'L', | ||
5789 | 7711=>'L', | ||
5790 | 7712=>'L', | ||
5791 | 7713=>'L', | ||
5792 | 7714=>'L', | ||
5793 | 7715=>'L', | ||
5794 | 7716=>'L', | ||
5795 | 7717=>'L', | ||
5796 | 7718=>'L', | ||
5797 | 7719=>'L', | ||
5798 | 7720=>'L', | ||
5799 | 7721=>'L', | ||
5800 | 7722=>'L', | ||
5801 | 7723=>'L', | ||
5802 | 7724=>'L', | ||
5803 | 7725=>'L', | ||
5804 | 7726=>'L', | ||
5805 | 7727=>'L', | ||
5806 | 7728=>'L', | ||
5807 | 7729=>'L', | ||
5808 | 7730=>'L', | ||
5809 | 7731=>'L', | ||
5810 | 7732=>'L', | ||
5811 | 7733=>'L', | ||
5812 | 7734=>'L', | ||
5813 | 7735=>'L', | ||
5814 | 7736=>'L', | ||
5815 | 7737=>'L', | ||
5816 | 7738=>'L', | ||
5817 | 7739=>'L', | ||
5818 | 7740=>'L', | ||
5819 | 7741=>'L', | ||
5820 | 7742=>'L', | ||
5821 | 7743=>'L', | ||
5822 | 7744=>'L', | ||
5823 | 7745=>'L', | ||
5824 | 7746=>'L', | ||
5825 | 7747=>'L', | ||
5826 | 7748=>'L', | ||
5827 | 7749=>'L', | ||
5828 | 7750=>'L', | ||
5829 | 7751=>'L', | ||
5830 | 7752=>'L', | ||
5831 | 7753=>'L', | ||
5832 | 7754=>'L', | ||
5833 | 7755=>'L', | ||
5834 | 7756=>'L', | ||
5835 | 7757=>'L', | ||
5836 | 7758=>'L', | ||
5837 | 7759=>'L', | ||
5838 | 7760=>'L', | ||
5839 | 7761=>'L', | ||
5840 | 7762=>'L', | ||
5841 | 7763=>'L', | ||
5842 | 7764=>'L', | ||
5843 | 7765=>'L', | ||
5844 | 7766=>'L', | ||
5845 | 7767=>'L', | ||
5846 | 7768=>'L', | ||
5847 | 7769=>'L', | ||
5848 | 7770=>'L', | ||
5849 | 7771=>'L', | ||
5850 | 7772=>'L', | ||
5851 | 7773=>'L', | ||
5852 | 7774=>'L', | ||
5853 | 7775=>'L', | ||
5854 | 7776=>'L', | ||
5855 | 7777=>'L', | ||
5856 | 7778=>'L', | ||
5857 | 7779=>'L', | ||
5858 | 7780=>'L', | ||
5859 | 7781=>'L', | ||
5860 | 7782=>'L', | ||
5861 | 7783=>'L', | ||
5862 | 7784=>'L', | ||
5863 | 7785=>'L', | ||
5864 | 7786=>'L', | ||
5865 | 7787=>'L', | ||
5866 | 7788=>'L', | ||
5867 | 7789=>'L', | ||
5868 | 7790=>'L', | ||
5869 | 7791=>'L', | ||
5870 | 7792=>'L', | ||
5871 | 7793=>'L', | ||
5872 | 7794=>'L', | ||
5873 | 7795=>'L', | ||
5874 | 7796=>'L', | ||
5875 | 7797=>'L', | ||
5876 | 7798=>'L', | ||
5877 | 7799=>'L', | ||
5878 | 7800=>'L', | ||
5879 | 7801=>'L', | ||
5880 | 7802=>'L', | ||
5881 | 7803=>'L', | ||
5882 | 7804=>'L', | ||
5883 | 7805=>'L', | ||
5884 | 7806=>'L', | ||
5885 | 7807=>'L', | ||
5886 | 7808=>'L', | ||
5887 | 7809=>'L', | ||
5888 | 7810=>'L', | ||
5889 | 7811=>'L', | ||
5890 | 7812=>'L', | ||
5891 | 7813=>'L', | ||
5892 | 7814=>'L', | ||
5893 | 7815=>'L', | ||
5894 | 7816=>'L', | ||
5895 | 7817=>'L', | ||
5896 | 7818=>'L', | ||
5897 | 7819=>'L', | ||
5898 | 7820=>'L', | ||
5899 | 7821=>'L', | ||
5900 | 7822=>'L', | ||
5901 | 7823=>'L', | ||
5902 | 7824=>'L', | ||
5903 | 7825=>'L', | ||
5904 | 7826=>'L', | ||
5905 | 7827=>'L', | ||
5906 | 7828=>'L', | ||
5907 | 7829=>'L', | ||
5908 | 7830=>'L', | ||
5909 | 7831=>'L', | ||
5910 | 7832=>'L', | ||
5911 | 7833=>'L', | ||
5912 | 7834=>'L', | ||
5913 | 7835=>'L', | ||
5914 | 7840=>'L', | ||
5915 | 7841=>'L', | ||
5916 | 7842=>'L', | ||
5917 | 7843=>'L', | ||
5918 | 7844=>'L', | ||
5919 | 7845=>'L', | ||
5920 | 7846=>'L', | ||
5921 | 7847=>'L', | ||
5922 | 7848=>'L', | ||
5923 | 7849=>'L', | ||
5924 | 7850=>'L', | ||
5925 | 7851=>'L', | ||
5926 | 7852=>'L', | ||
5927 | 7853=>'L', | ||
5928 | 7854=>'L', | ||
5929 | 7855=>'L', | ||
5930 | 7856=>'L', | ||
5931 | 7857=>'L', | ||
5932 | 7858=>'L', | ||
5933 | 7859=>'L', | ||
5934 | 7860=>'L', | ||
5935 | 7861=>'L', | ||
5936 | 7862=>'L', | ||
5937 | 7863=>'L', | ||
5938 | 7864=>'L', | ||
5939 | 7865=>'L', | ||
5940 | 7866=>'L', | ||
5941 | 7867=>'L', | ||
5942 | 7868=>'L', | ||
5943 | 7869=>'L', | ||
5944 | 7870=>'L', | ||
5945 | 7871=>'L', | ||
5946 | 7872=>'L', | ||
5947 | 7873=>'L', | ||
5948 | 7874=>'L', | ||
5949 | 7875=>'L', | ||
5950 | 7876=>'L', | ||
5951 | 7877=>'L', | ||
5952 | 7878=>'L', | ||
5953 | 7879=>'L', | ||
5954 | 7880=>'L', | ||
5955 | 7881=>'L', | ||
5956 | 7882=>'L', | ||
5957 | 7883=>'L', | ||
5958 | 7884=>'L', | ||
5959 | 7885=>'L', | ||
5960 | 7886=>'L', | ||
5961 | 7887=>'L', | ||
5962 | 7888=>'L', | ||
5963 | 7889=>'L', | ||
5964 | 7890=>'L', | ||
5965 | 7891=>'L', | ||
5966 | 7892=>'L', | ||
5967 | 7893=>'L', | ||
5968 | 7894=>'L', | ||
5969 | 7895=>'L', | ||
5970 | 7896=>'L', | ||
5971 | 7897=>'L', | ||
5972 | 7898=>'L', | ||
5973 | 7899=>'L', | ||
5974 | 7900=>'L', | ||
5975 | 7901=>'L', | ||
5976 | 7902=>'L', | ||
5977 | 7903=>'L', | ||
5978 | 7904=>'L', | ||
5979 | 7905=>'L', | ||
5980 | 7906=>'L', | ||
5981 | 7907=>'L', | ||
5982 | 7908=>'L', | ||
5983 | 7909=>'L', | ||
5984 | 7910=>'L', | ||
5985 | 7911=>'L', | ||
5986 | 7912=>'L', | ||
5987 | 7913=>'L', | ||
5988 | 7914=>'L', | ||
5989 | 7915=>'L', | ||
5990 | 7916=>'L', | ||
5991 | 7917=>'L', | ||
5992 | 7918=>'L', | ||
5993 | 7919=>'L', | ||
5994 | 7920=>'L', | ||
5995 | 7921=>'L', | ||
5996 | 7922=>'L', | ||
5997 | 7923=>'L', | ||
5998 | 7924=>'L', | ||
5999 | 7925=>'L', | ||
6000 | 7926=>'L', | ||
6001 | 7927=>'L', | ||
6002 | 7928=>'L', | ||
6003 | 7929=>'L', | ||
6004 | 7936=>'L', | ||
6005 | 7937=>'L', | ||
6006 | 7938=>'L', | ||
6007 | 7939=>'L', | ||
6008 | 7940=>'L', | ||
6009 | 7941=>'L', | ||
6010 | 7942=>'L', | ||
6011 | 7943=>'L', | ||
6012 | 7944=>'L', | ||
6013 | 7945=>'L', | ||
6014 | 7946=>'L', | ||
6015 | 7947=>'L', | ||
6016 | 7948=>'L', | ||
6017 | 7949=>'L', | ||
6018 | 7950=>'L', | ||
6019 | 7951=>'L', | ||
6020 | 7952=>'L', | ||
6021 | 7953=>'L', | ||
6022 | 7954=>'L', | ||
6023 | 7955=>'L', | ||
6024 | 7956=>'L', | ||
6025 | 7957=>'L', | ||
6026 | 7960=>'L', | ||
6027 | 7961=>'L', | ||
6028 | 7962=>'L', | ||
6029 | 7963=>'L', | ||
6030 | 7964=>'L', | ||
6031 | 7965=>'L', | ||
6032 | 7968=>'L', | ||
6033 | 7969=>'L', | ||
6034 | 7970=>'L', | ||
6035 | 7971=>'L', | ||
6036 | 7972=>'L', | ||
6037 | 7973=>'L', | ||
6038 | 7974=>'L', | ||
6039 | 7975=>'L', | ||
6040 | 7976=>'L', | ||
6041 | 7977=>'L', | ||
6042 | 7978=>'L', | ||
6043 | 7979=>'L', | ||
6044 | 7980=>'L', | ||
6045 | 7981=>'L', | ||
6046 | 7982=>'L', | ||
6047 | 7983=>'L', | ||
6048 | 7984=>'L', | ||
6049 | 7985=>'L', | ||
6050 | 7986=>'L', | ||
6051 | 7987=>'L', | ||
6052 | 7988=>'L', | ||
6053 | 7989=>'L', | ||
6054 | 7990=>'L', | ||
6055 | 7991=>'L', | ||
6056 | 7992=>'L', | ||
6057 | 7993=>'L', | ||
6058 | 7994=>'L', | ||
6059 | 7995=>'L', | ||
6060 | 7996=>'L', | ||
6061 | 7997=>'L', | ||
6062 | 7998=>'L', | ||
6063 | 7999=>'L', | ||
6064 | 8000=>'L', | ||
6065 | 8001=>'L', | ||
6066 | 8002=>'L', | ||
6067 | 8003=>'L', | ||
6068 | 8004=>'L', | ||
6069 | 8005=>'L', | ||
6070 | 8008=>'L', | ||
6071 | 8009=>'L', | ||
6072 | 8010=>'L', | ||
6073 | 8011=>'L', | ||
6074 | 8012=>'L', | ||
6075 | 8013=>'L', | ||
6076 | 8016=>'L', | ||
6077 | 8017=>'L', | ||
6078 | 8018=>'L', | ||
6079 | 8019=>'L', | ||
6080 | 8020=>'L', | ||
6081 | 8021=>'L', | ||
6082 | 8022=>'L', | ||
6083 | 8023=>'L', | ||
6084 | 8025=>'L', | ||
6085 | 8027=>'L', | ||
6086 | 8029=>'L', | ||
6087 | 8031=>'L', | ||
6088 | 8032=>'L', | ||
6089 | 8033=>'L', | ||
6090 | 8034=>'L', | ||
6091 | 8035=>'L', | ||
6092 | 8036=>'L', | ||
6093 | 8037=>'L', | ||
6094 | 8038=>'L', | ||
6095 | 8039=>'L', | ||
6096 | 8040=>'L', | ||
6097 | 8041=>'L', | ||
6098 | 8042=>'L', | ||
6099 | 8043=>'L', | ||
6100 | 8044=>'L', | ||
6101 | 8045=>'L', | ||
6102 | 8046=>'L', | ||
6103 | 8047=>'L', | ||
6104 | 8048=>'L', | ||
6105 | 8049=>'L', | ||
6106 | 8050=>'L', | ||
6107 | 8051=>'L', | ||
6108 | 8052=>'L', | ||
6109 | 8053=>'L', | ||
6110 | 8054=>'L', | ||
6111 | 8055=>'L', | ||
6112 | 8056=>'L', | ||
6113 | 8057=>'L', | ||
6114 | 8058=>'L', | ||
6115 | 8059=>'L', | ||
6116 | 8060=>'L', | ||
6117 | 8061=>'L', | ||
6118 | 8064=>'L', | ||
6119 | 8065=>'L', | ||
6120 | 8066=>'L', | ||
6121 | 8067=>'L', | ||
6122 | 8068=>'L', | ||
6123 | 8069=>'L', | ||
6124 | 8070=>'L', | ||
6125 | 8071=>'L', | ||
6126 | 8072=>'L', | ||
6127 | 8073=>'L', | ||
6128 | 8074=>'L', | ||
6129 | 8075=>'L', | ||
6130 | 8076=>'L', | ||
6131 | 8077=>'L', | ||
6132 | 8078=>'L', | ||
6133 | 8079=>'L', | ||
6134 | 8080=>'L', | ||
6135 | 8081=>'L', | ||
6136 | 8082=>'L', | ||
6137 | 8083=>'L', | ||
6138 | 8084=>'L', | ||
6139 | 8085=>'L', | ||
6140 | 8086=>'L', | ||
6141 | 8087=>'L', | ||
6142 | 8088=>'L', | ||
6143 | 8089=>'L', | ||
6144 | 8090=>'L', | ||
6145 | 8091=>'L', | ||
6146 | 8092=>'L', | ||
6147 | 8093=>'L', | ||
6148 | 8094=>'L', | ||
6149 | 8095=>'L', | ||
6150 | 8096=>'L', | ||
6151 | 8097=>'L', | ||
6152 | 8098=>'L', | ||
6153 | 8099=>'L', | ||
6154 | 8100=>'L', | ||
6155 | 8101=>'L', | ||
6156 | 8102=>'L', | ||
6157 | 8103=>'L', | ||
6158 | 8104=>'L', | ||
6159 | 8105=>'L', | ||
6160 | 8106=>'L', | ||
6161 | 8107=>'L', | ||
6162 | 8108=>'L', | ||
6163 | 8109=>'L', | ||
6164 | 8110=>'L', | ||
6165 | 8111=>'L', | ||
6166 | 8112=>'L', | ||
6167 | 8113=>'L', | ||
6168 | 8114=>'L', | ||
6169 | 8115=>'L', | ||
6170 | 8116=>'L', | ||
6171 | 8118=>'L', | ||
6172 | 8119=>'L', | ||
6173 | 8120=>'L', | ||
6174 | 8121=>'L', | ||
6175 | 8122=>'L', | ||
6176 | 8123=>'L', | ||
6177 | 8124=>'L', | ||
6178 | 8125=>'ON', | ||
6179 | 8126=>'L', | ||
6180 | 8127=>'ON', | ||
6181 | 8128=>'ON', | ||
6182 | 8129=>'ON', | ||
6183 | 8130=>'L', | ||
6184 | 8131=>'L', | ||
6185 | 8132=>'L', | ||
6186 | 8134=>'L', | ||
6187 | 8135=>'L', | ||
6188 | 8136=>'L', | ||
6189 | 8137=>'L', | ||
6190 | 8138=>'L', | ||
6191 | 8139=>'L', | ||
6192 | 8140=>'L', | ||
6193 | 8141=>'ON', | ||
6194 | 8142=>'ON', | ||
6195 | 8143=>'ON', | ||
6196 | 8144=>'L', | ||
6197 | 8145=>'L', | ||
6198 | 8146=>'L', | ||
6199 | 8147=>'L', | ||
6200 | 8150=>'L', | ||
6201 | 8151=>'L', | ||
6202 | 8152=>'L', | ||
6203 | 8153=>'L', | ||
6204 | 8154=>'L', | ||
6205 | 8155=>'L', | ||
6206 | 8157=>'ON', | ||
6207 | 8158=>'ON', | ||
6208 | 8159=>'ON', | ||
6209 | 8160=>'L', | ||
6210 | 8161=>'L', | ||
6211 | 8162=>'L', | ||
6212 | 8163=>'L', | ||
6213 | 8164=>'L', | ||
6214 | 8165=>'L', | ||
6215 | 8166=>'L', | ||
6216 | 8167=>'L', | ||
6217 | 8168=>'L', | ||
6218 | 8169=>'L', | ||
6219 | 8170=>'L', | ||
6220 | 8171=>'L', | ||
6221 | 8172=>'L', | ||
6222 | 8173=>'ON', | ||
6223 | 8174=>'ON', | ||
6224 | 8175=>'ON', | ||
6225 | 8178=>'L', | ||
6226 | 8179=>'L', | ||
6227 | 8180=>'L', | ||
6228 | 8182=>'L', | ||
6229 | 8183=>'L', | ||
6230 | 8184=>'L', | ||
6231 | 8185=>'L', | ||
6232 | 8186=>'L', | ||
6233 | 8187=>'L', | ||
6234 | 8188=>'L', | ||
6235 | 8189=>'ON', | ||
6236 | 8190=>'ON', | ||
6237 | 8192=>'WS', | ||
6238 | 8193=>'WS', | ||
6239 | 8194=>'WS', | ||
6240 | 8195=>'WS', | ||
6241 | 8196=>'WS', | ||
6242 | 8197=>'WS', | ||
6243 | 8198=>'WS', | ||
6244 | 8199=>'WS', | ||
6245 | 8200=>'WS', | ||
6246 | 8201=>'WS', | ||
6247 | 8202=>'WS', | ||
6248 | 8203=>'BN', | ||
6249 | 8204=>'BN', | ||
6250 | 8205=>'BN', | ||
6251 | 8206=>'L', | ||
6252 | 8207=>'R', | ||
6253 | 8208=>'ON', | ||
6254 | 8209=>'ON', | ||
6255 | 8210=>'ON', | ||
6256 | 8211=>'ON', | ||
6257 | 8212=>'ON', | ||
6258 | 8213=>'ON', | ||
6259 | 8214=>'ON', | ||
6260 | 8215=>'ON', | ||
6261 | 8216=>'ON', | ||
6262 | 8217=>'ON', | ||
6263 | 8218=>'ON', | ||
6264 | 8219=>'ON', | ||
6265 | 8220=>'ON', | ||
6266 | 8221=>'ON', | ||
6267 | 8222=>'ON', | ||
6268 | 8223=>'ON', | ||
6269 | 8224=>'ON', | ||
6270 | 8225=>'ON', | ||
6271 | 8226=>'ON', | ||
6272 | 8227=>'ON', | ||
6273 | 8228=>'ON', | ||
6274 | 8229=>'ON', | ||
6275 | 8230=>'ON', | ||
6276 | 8231=>'ON', | ||
6277 | 8232=>'WS', | ||
6278 | 8233=>'B', | ||
6279 | 8234=>'LRE', | ||
6280 | 8235=>'RLE', | ||
6281 | 8236=>'PDF', | ||
6282 | 8237=>'LRO', | ||
6283 | 8238=>'RLO', | ||
6284 | 8239=>'CS', | ||
6285 | 8240=>'ET', | ||
6286 | 8241=>'ET', | ||
6287 | 8242=>'ET', | ||
6288 | 8243=>'ET', | ||
6289 | 8244=>'ET', | ||
6290 | 8245=>'ON', | ||
6291 | 8246=>'ON', | ||
6292 | 8247=>'ON', | ||
6293 | 8248=>'ON', | ||
6294 | 8249=>'ON', | ||
6295 | 8250=>'ON', | ||
6296 | 8251=>'ON', | ||
6297 | 8252=>'ON', | ||
6298 | 8253=>'ON', | ||
6299 | 8254=>'ON', | ||
6300 | 8255=>'ON', | ||
6301 | 8256=>'ON', | ||
6302 | 8257=>'ON', | ||
6303 | 8258=>'ON', | ||
6304 | 8259=>'ON', | ||
6305 | 8260=>'CS', | ||
6306 | 8261=>'ON', | ||
6307 | 8262=>'ON', | ||
6308 | 8263=>'ON', | ||
6309 | 8264=>'ON', | ||
6310 | 8265=>'ON', | ||
6311 | 8266=>'ON', | ||
6312 | 8267=>'ON', | ||
6313 | 8268=>'ON', | ||
6314 | 8269=>'ON', | ||
6315 | 8270=>'ON', | ||
6316 | 8271=>'ON', | ||
6317 | 8272=>'ON', | ||
6318 | 8273=>'ON', | ||
6319 | 8274=>'ON', | ||
6320 | 8275=>'ON', | ||
6321 | 8276=>'ON', | ||
6322 | 8277=>'ON', | ||
6323 | 8278=>'ON', | ||
6324 | 8279=>'ON', | ||
6325 | 8280=>'ON', | ||
6326 | 8281=>'ON', | ||
6327 | 8282=>'ON', | ||
6328 | 8283=>'ON', | ||
6329 | 8284=>'ON', | ||
6330 | 8285=>'ON', | ||
6331 | 8286=>'ON', | ||
6332 | 8287=>'WS', | ||
6333 | 8288=>'BN', | ||
6334 | 8289=>'BN', | ||
6335 | 8290=>'BN', | ||
6336 | 8291=>'BN', | ||
6337 | 8298=>'BN', | ||
6338 | 8299=>'BN', | ||
6339 | 8300=>'BN', | ||
6340 | 8301=>'BN', | ||
6341 | 8302=>'BN', | ||
6342 | 8303=>'BN', | ||
6343 | 8304=>'EN', | ||
6344 | 8305=>'L', | ||
6345 | 8308=>'EN', | ||
6346 | 8309=>'EN', | ||
6347 | 8310=>'EN', | ||
6348 | 8311=>'EN', | ||
6349 | 8312=>'EN', | ||
6350 | 8313=>'EN', | ||
6351 | 8314=>'ES', | ||
6352 | 8315=>'ES', | ||
6353 | 8316=>'ON', | ||
6354 | 8317=>'ON', | ||
6355 | 8318=>'ON', | ||
6356 | 8319=>'L', | ||
6357 | 8320=>'EN', | ||
6358 | 8321=>'EN', | ||
6359 | 8322=>'EN', | ||
6360 | 8323=>'EN', | ||
6361 | 8324=>'EN', | ||
6362 | 8325=>'EN', | ||
6363 | 8326=>'EN', | ||
6364 | 8327=>'EN', | ||
6365 | 8328=>'EN', | ||
6366 | 8329=>'EN', | ||
6367 | 8330=>'ES', | ||
6368 | 8331=>'ES', | ||
6369 | 8332=>'ON', | ||
6370 | 8333=>'ON', | ||
6371 | 8334=>'ON', | ||
6372 | 8336=>'L', | ||
6373 | 8337=>'L', | ||
6374 | 8338=>'L', | ||
6375 | 8339=>'L', | ||
6376 | 8340=>'L', | ||
6377 | 8352=>'ET', | ||
6378 | 8353=>'ET', | ||
6379 | 8354=>'ET', | ||
6380 | 8355=>'ET', | ||
6381 | 8356=>'ET', | ||
6382 | 8357=>'ET', | ||
6383 | 8358=>'ET', | ||
6384 | 8359=>'ET', | ||
6385 | 8360=>'ET', | ||
6386 | 8361=>'ET', | ||
6387 | 8362=>'ET', | ||
6388 | 8363=>'ET', | ||
6389 | 8364=>'ET', | ||
6390 | 8365=>'ET', | ||
6391 | 8366=>'ET', | ||
6392 | 8367=>'ET', | ||
6393 | 8368=>'ET', | ||
6394 | 8369=>'ET', | ||
6395 | 8370=>'ET', | ||
6396 | 8371=>'ET', | ||
6397 | 8372=>'ET', | ||
6398 | 8373=>'ET', | ||
6399 | 8400=>'NSM', | ||
6400 | 8401=>'NSM', | ||
6401 | 8402=>'NSM', | ||
6402 | 8403=>'NSM', | ||
6403 | 8404=>'NSM', | ||
6404 | 8405=>'NSM', | ||
6405 | 8406=>'NSM', | ||
6406 | 8407=>'NSM', | ||
6407 | 8408=>'NSM', | ||
6408 | 8409=>'NSM', | ||
6409 | 8410=>'NSM', | ||
6410 | 8411=>'NSM', | ||
6411 | 8412=>'NSM', | ||
6412 | 8413=>'NSM', | ||
6413 | 8414=>'NSM', | ||
6414 | 8415=>'NSM', | ||
6415 | 8416=>'NSM', | ||
6416 | 8417=>'NSM', | ||
6417 | 8418=>'NSM', | ||
6418 | 8419=>'NSM', | ||
6419 | 8420=>'NSM', | ||
6420 | 8421=>'NSM', | ||
6421 | 8422=>'NSM', | ||
6422 | 8423=>'NSM', | ||
6423 | 8424=>'NSM', | ||
6424 | 8425=>'NSM', | ||
6425 | 8426=>'NSM', | ||
6426 | 8427=>'NSM', | ||
6427 | 8428=>'NSM', | ||
6428 | 8429=>'NSM', | ||
6429 | 8430=>'NSM', | ||
6430 | 8431=>'NSM', | ||
6431 | 8448=>'ON', | ||
6432 | 8449=>'ON', | ||
6433 | 8450=>'L', | ||
6434 | 8451=>'ON', | ||
6435 | 8452=>'ON', | ||
6436 | 8453=>'ON', | ||
6437 | 8454=>'ON', | ||
6438 | 8455=>'L', | ||
6439 | 8456=>'ON', | ||
6440 | 8457=>'ON', | ||
6441 | 8458=>'L', | ||
6442 | 8459=>'L', | ||
6443 | 8460=>'L', | ||
6444 | 8461=>'L', | ||
6445 | 8462=>'L', | ||
6446 | 8463=>'L', | ||
6447 | 8464=>'L', | ||
6448 | 8465=>'L', | ||
6449 | 8466=>'L', | ||
6450 | 8467=>'L', | ||
6451 | 8468=>'ON', | ||
6452 | 8469=>'L', | ||
6453 | 8470=>'ON', | ||
6454 | 8471=>'ON', | ||
6455 | 8472=>'ON', | ||
6456 | 8473=>'L', | ||
6457 | 8474=>'L', | ||
6458 | 8475=>'L', | ||
6459 | 8476=>'L', | ||
6460 | 8477=>'L', | ||
6461 | 8478=>'ON', | ||
6462 | 8479=>'ON', | ||
6463 | 8480=>'ON', | ||
6464 | 8481=>'ON', | ||
6465 | 8482=>'ON', | ||
6466 | 8483=>'ON', | ||
6467 | 8484=>'L', | ||
6468 | 8485=>'ON', | ||
6469 | 8486=>'L', | ||
6470 | 8487=>'ON', | ||
6471 | 8488=>'L', | ||
6472 | 8489=>'ON', | ||
6473 | 8490=>'L', | ||
6474 | 8491=>'L', | ||
6475 | 8492=>'L', | ||
6476 | 8493=>'L', | ||
6477 | 8494=>'ET', | ||
6478 | 8495=>'L', | ||
6479 | 8496=>'L', | ||
6480 | 8497=>'L', | ||
6481 | 8498=>'L', | ||
6482 | 8499=>'L', | ||
6483 | 8500=>'L', | ||
6484 | 8501=>'L', | ||
6485 | 8502=>'L', | ||
6486 | 8503=>'L', | ||
6487 | 8504=>'L', | ||
6488 | 8505=>'L', | ||
6489 | 8506=>'ON', | ||
6490 | 8507=>'ON', | ||
6491 | 8508=>'L', | ||
6492 | 8509=>'L', | ||
6493 | 8510=>'L', | ||
6494 | 8511=>'L', | ||
6495 | 8512=>'ON', | ||
6496 | 8513=>'ON', | ||
6497 | 8514=>'ON', | ||
6498 | 8515=>'ON', | ||
6499 | 8516=>'ON', | ||
6500 | 8517=>'L', | ||
6501 | 8518=>'L', | ||
6502 | 8519=>'L', | ||
6503 | 8520=>'L', | ||
6504 | 8521=>'L', | ||
6505 | 8522=>'ON', | ||
6506 | 8523=>'ON', | ||
6507 | 8524=>'ON', | ||
6508 | 8525=>'ON', | ||
6509 | 8526=>'L', | ||
6510 | 8531=>'ON', | ||
6511 | 8532=>'ON', | ||
6512 | 8533=>'ON', | ||
6513 | 8534=>'ON', | ||
6514 | 8535=>'ON', | ||
6515 | 8536=>'ON', | ||
6516 | 8537=>'ON', | ||
6517 | 8538=>'ON', | ||
6518 | 8539=>'ON', | ||
6519 | 8540=>'ON', | ||
6520 | 8541=>'ON', | ||
6521 | 8542=>'ON', | ||
6522 | 8543=>'ON', | ||
6523 | 8544=>'L', | ||
6524 | 8545=>'L', | ||
6525 | 8546=>'L', | ||
6526 | 8547=>'L', | ||
6527 | 8548=>'L', | ||
6528 | 8549=>'L', | ||
6529 | 8550=>'L', | ||
6530 | 8551=>'L', | ||
6531 | 8552=>'L', | ||
6532 | 8553=>'L', | ||
6533 | 8554=>'L', | ||
6534 | 8555=>'L', | ||
6535 | 8556=>'L', | ||
6536 | 8557=>'L', | ||
6537 | 8558=>'L', | ||
6538 | 8559=>'L', | ||
6539 | 8560=>'L', | ||
6540 | 8561=>'L', | ||
6541 | 8562=>'L', | ||
6542 | 8563=>'L', | ||
6543 | 8564=>'L', | ||
6544 | 8565=>'L', | ||
6545 | 8566=>'L', | ||
6546 | 8567=>'L', | ||
6547 | 8568=>'L', | ||
6548 | 8569=>'L', | ||
6549 | 8570=>'L', | ||
6550 | 8571=>'L', | ||
6551 | 8572=>'L', | ||
6552 | 8573=>'L', | ||
6553 | 8574=>'L', | ||
6554 | 8575=>'L', | ||
6555 | 8576=>'L', | ||
6556 | 8577=>'L', | ||
6557 | 8578=>'L', | ||
6558 | 8579=>'L', | ||
6559 | 8580=>'L', | ||
6560 | 8592=>'ON', | ||
6561 | 8593=>'ON', | ||
6562 | 8594=>'ON', | ||
6563 | 8595=>'ON', | ||
6564 | 8596=>'ON', | ||
6565 | 8597=>'ON', | ||
6566 | 8598=>'ON', | ||
6567 | 8599=>'ON', | ||
6568 | 8600=>'ON', | ||
6569 | 8601=>'ON', | ||
6570 | 8602=>'ON', | ||
6571 | 8603=>'ON', | ||
6572 | 8604=>'ON', | ||
6573 | 8605=>'ON', | ||
6574 | 8606=>'ON', | ||
6575 | 8607=>'ON', | ||
6576 | 8608=>'ON', | ||
6577 | 8609=>'ON', | ||
6578 | 8610=>'ON', | ||
6579 | 8611=>'ON', | ||
6580 | 8612=>'ON', | ||
6581 | 8613=>'ON', | ||
6582 | 8614=>'ON', | ||
6583 | 8615=>'ON', | ||
6584 | 8616=>'ON', | ||
6585 | 8617=>'ON', | ||
6586 | 8618=>'ON', | ||
6587 | 8619=>'ON', | ||
6588 | 8620=>'ON', | ||
6589 | 8621=>'ON', | ||
6590 | 8622=>'ON', | ||
6591 | 8623=>'ON', | ||
6592 | 8624=>'ON', | ||
6593 | 8625=>'ON', | ||
6594 | 8626=>'ON', | ||
6595 | 8627=>'ON', | ||
6596 | 8628=>'ON', | ||
6597 | 8629=>'ON', | ||
6598 | 8630=>'ON', | ||
6599 | 8631=>'ON', | ||
6600 | 8632=>'ON', | ||
6601 | 8633=>'ON', | ||
6602 | 8634=>'ON', | ||
6603 | 8635=>'ON', | ||
6604 | 8636=>'ON', | ||
6605 | 8637=>'ON', | ||
6606 | 8638=>'ON', | ||
6607 | 8639=>'ON', | ||
6608 | 8640=>'ON', | ||
6609 | 8641=>'ON', | ||
6610 | 8642=>'ON', | ||
6611 | 8643=>'ON', | ||
6612 | 8644=>'ON', | ||
6613 | 8645=>'ON', | ||
6614 | 8646=>'ON', | ||
6615 | 8647=>'ON', | ||
6616 | 8648=>'ON', | ||
6617 | 8649=>'ON', | ||
6618 | 8650=>'ON', | ||
6619 | 8651=>'ON', | ||
6620 | 8652=>'ON', | ||
6621 | 8653=>'ON', | ||
6622 | 8654=>'ON', | ||
6623 | 8655=>'ON', | ||
6624 | 8656=>'ON', | ||
6625 | 8657=>'ON', | ||
6626 | 8658=>'ON', | ||
6627 | 8659=>'ON', | ||
6628 | 8660=>'ON', | ||
6629 | 8661=>'ON', | ||
6630 | 8662=>'ON', | ||
6631 | 8663=>'ON', | ||
6632 | 8664=>'ON', | ||
6633 | 8665=>'ON', | ||
6634 | 8666=>'ON', | ||
6635 | 8667=>'ON', | ||
6636 | 8668=>'ON', | ||
6637 | 8669=>'ON', | ||
6638 | 8670=>'ON', | ||
6639 | 8671=>'ON', | ||
6640 | 8672=>'ON', | ||
6641 | 8673=>'ON', | ||
6642 | 8674=>'ON', | ||
6643 | 8675=>'ON', | ||
6644 | 8676=>'ON', | ||
6645 | 8677=>'ON', | ||
6646 | 8678=>'ON', | ||
6647 | 8679=>'ON', | ||
6648 | 8680=>'ON', | ||
6649 | 8681=>'ON', | ||
6650 | 8682=>'ON', | ||
6651 | 8683=>'ON', | ||
6652 | 8684=>'ON', | ||
6653 | 8685=>'ON', | ||
6654 | 8686=>'ON', | ||
6655 | 8687=>'ON', | ||
6656 | 8688=>'ON', | ||
6657 | 8689=>'ON', | ||
6658 | 8690=>'ON', | ||
6659 | 8691=>'ON', | ||
6660 | 8692=>'ON', | ||
6661 | 8693=>'ON', | ||
6662 | 8694=>'ON', | ||
6663 | 8695=>'ON', | ||
6664 | 8696=>'ON', | ||
6665 | 8697=>'ON', | ||
6666 | 8698=>'ON', | ||
6667 | 8699=>'ON', | ||
6668 | 8700=>'ON', | ||
6669 | 8701=>'ON', | ||
6670 | 8702=>'ON', | ||
6671 | 8703=>'ON', | ||
6672 | 8704=>'ON', | ||
6673 | 8705=>'ON', | ||
6674 | 8706=>'ON', | ||
6675 | 8707=>'ON', | ||
6676 | 8708=>'ON', | ||
6677 | 8709=>'ON', | ||
6678 | 8710=>'ON', | ||
6679 | 8711=>'ON', | ||
6680 | 8712=>'ON', | ||
6681 | 8713=>'ON', | ||
6682 | 8714=>'ON', | ||
6683 | 8715=>'ON', | ||
6684 | 8716=>'ON', | ||
6685 | 8717=>'ON', | ||
6686 | 8718=>'ON', | ||
6687 | 8719=>'ON', | ||
6688 | 8720=>'ON', | ||
6689 | 8721=>'ON', | ||
6690 | 8722=>'ES', | ||
6691 | 8723=>'ET', | ||
6692 | 8724=>'ON', | ||
6693 | 8725=>'ON', | ||
6694 | 8726=>'ON', | ||
6695 | 8727=>'ON', | ||
6696 | 8728=>'ON', | ||
6697 | 8729=>'ON', | ||
6698 | 8730=>'ON', | ||
6699 | 8731=>'ON', | ||
6700 | 8732=>'ON', | ||
6701 | 8733=>'ON', | ||
6702 | 8734=>'ON', | ||
6703 | 8735=>'ON', | ||
6704 | 8736=>'ON', | ||
6705 | 8737=>'ON', | ||
6706 | 8738=>'ON', | ||
6707 | 8739=>'ON', | ||
6708 | 8740=>'ON', | ||
6709 | 8741=>'ON', | ||
6710 | 8742=>'ON', | ||
6711 | 8743=>'ON', | ||
6712 | 8744=>'ON', | ||
6713 | 8745=>'ON', | ||
6714 | 8746=>'ON', | ||
6715 | 8747=>'ON', | ||
6716 | 8748=>'ON', | ||
6717 | 8749=>'ON', | ||
6718 | 8750=>'ON', | ||
6719 | 8751=>'ON', | ||
6720 | 8752=>'ON', | ||
6721 | 8753=>'ON', | ||
6722 | 8754=>'ON', | ||
6723 | 8755=>'ON', | ||
6724 | 8756=>'ON', | ||
6725 | 8757=>'ON', | ||
6726 | 8758=>'ON', | ||
6727 | 8759=>'ON', | ||
6728 | 8760=>'ON', | ||
6729 | 8761=>'ON', | ||
6730 | 8762=>'ON', | ||
6731 | 8763=>'ON', | ||
6732 | 8764=>'ON', | ||
6733 | 8765=>'ON', | ||
6734 | 8766=>'ON', | ||
6735 | 8767=>'ON', | ||
6736 | 8768=>'ON', | ||
6737 | 8769=>'ON', | ||
6738 | 8770=>'ON', | ||
6739 | 8771=>'ON', | ||
6740 | 8772=>'ON', | ||
6741 | 8773=>'ON', | ||
6742 | 8774=>'ON', | ||
6743 | 8775=>'ON', | ||
6744 | 8776=>'ON', | ||
6745 | 8777=>'ON', | ||
6746 | 8778=>'ON', | ||
6747 | 8779=>'ON', | ||
6748 | 8780=>'ON', | ||
6749 | 8781=>'ON', | ||
6750 | 8782=>'ON', | ||
6751 | 8783=>'ON', | ||
6752 | 8784=>'ON', | ||
6753 | 8785=>'ON', | ||
6754 | 8786=>'ON', | ||
6755 | 8787=>'ON', | ||
6756 | 8788=>'ON', | ||
6757 | 8789=>'ON', | ||
6758 | 8790=>'ON', | ||
6759 | 8791=>'ON', | ||
6760 | 8792=>'ON', | ||
6761 | 8793=>'ON', | ||
6762 | 8794=>'ON', | ||
6763 | 8795=>'ON', | ||
6764 | 8796=>'ON', | ||
6765 | 8797=>'ON', | ||
6766 | 8798=>'ON', | ||
6767 | 8799=>'ON', | ||
6768 | 8800=>'ON', | ||
6769 | 8801=>'ON', | ||
6770 | 8802=>'ON', | ||
6771 | 8803=>'ON', | ||
6772 | 8804=>'ON', | ||
6773 | 8805=>'ON', | ||
6774 | 8806=>'ON', | ||
6775 | 8807=>'ON', | ||
6776 | 8808=>'ON', | ||
6777 | 8809=>'ON', | ||
6778 | 8810=>'ON', | ||
6779 | 8811=>'ON', | ||
6780 | 8812=>'ON', | ||
6781 | 8813=>'ON', | ||
6782 | 8814=>'ON', | ||
6783 | 8815=>'ON', | ||
6784 | 8816=>'ON', | ||
6785 | 8817=>'ON', | ||
6786 | 8818=>'ON', | ||
6787 | 8819=>'ON', | ||
6788 | 8820=>'ON', | ||
6789 | 8821=>'ON', | ||
6790 | 8822=>'ON', | ||
6791 | 8823=>'ON', | ||
6792 | 8824=>'ON', | ||
6793 | 8825=>'ON', | ||
6794 | 8826=>'ON', | ||
6795 | 8827=>'ON', | ||
6796 | 8828=>'ON', | ||
6797 | 8829=>'ON', | ||
6798 | 8830=>'ON', | ||
6799 | 8831=>'ON', | ||
6800 | 8832=>'ON', | ||
6801 | 8833=>'ON', | ||
6802 | 8834=>'ON', | ||
6803 | 8835=>'ON', | ||
6804 | 8836=>'ON', | ||
6805 | 8837=>'ON', | ||
6806 | 8838=>'ON', | ||
6807 | 8839=>'ON', | ||
6808 | 8840=>'ON', | ||
6809 | 8841=>'ON', | ||
6810 | 8842=>'ON', | ||
6811 | 8843=>'ON', | ||
6812 | 8844=>'ON', | ||
6813 | 8845=>'ON', | ||
6814 | 8846=>'ON', | ||
6815 | 8847=>'ON', | ||
6816 | 8848=>'ON', | ||
6817 | 8849=>'ON', | ||
6818 | 8850=>'ON', | ||
6819 | 8851=>'ON', | ||
6820 | 8852=>'ON', | ||
6821 | 8853=>'ON', | ||
6822 | 8854=>'ON', | ||
6823 | 8855=>'ON', | ||
6824 | 8856=>'ON', | ||
6825 | 8857=>'ON', | ||
6826 | 8858=>'ON', | ||
6827 | 8859=>'ON', | ||
6828 | 8860=>'ON', | ||
6829 | 8861=>'ON', | ||
6830 | 8862=>'ON', | ||
6831 | 8863=>'ON', | ||
6832 | 8864=>'ON', | ||
6833 | 8865=>'ON', | ||
6834 | 8866=>'ON', | ||
6835 | 8867=>'ON', | ||
6836 | 8868=>'ON', | ||
6837 | 8869=>'ON', | ||
6838 | 8870=>'ON', | ||
6839 | 8871=>'ON', | ||
6840 | 8872=>'ON', | ||
6841 | 8873=>'ON', | ||
6842 | 8874=>'ON', | ||
6843 | 8875=>'ON', | ||
6844 | 8876=>'ON', | ||
6845 | 8877=>'ON', | ||
6846 | 8878=>'ON', | ||
6847 | 8879=>'ON', | ||
6848 | 8880=>'ON', | ||
6849 | 8881=>'ON', | ||
6850 | 8882=>'ON', | ||
6851 | 8883=>'ON', | ||
6852 | 8884=>'ON', | ||
6853 | 8885=>'ON', | ||
6854 | 8886=>'ON', | ||
6855 | 8887=>'ON', | ||
6856 | 8888=>'ON', | ||
6857 | 8889=>'ON', | ||
6858 | 8890=>'ON', | ||
6859 | 8891=>'ON', | ||
6860 | 8892=>'ON', | ||
6861 | 8893=>'ON', | ||
6862 | 8894=>'ON', | ||
6863 | 8895=>'ON', | ||
6864 | 8896=>'ON', | ||
6865 | 8897=>'ON', | ||
6866 | 8898=>'ON', | ||
6867 | 8899=>'ON', | ||
6868 | 8900=>'ON', | ||
6869 | 8901=>'ON', | ||
6870 | 8902=>'ON', | ||
6871 | 8903=>'ON', | ||
6872 | 8904=>'ON', | ||
6873 | 8905=>'ON', | ||
6874 | 8906=>'ON', | ||
6875 | 8907=>'ON', | ||
6876 | 8908=>'ON', | ||
6877 | 8909=>'ON', | ||
6878 | 8910=>'ON', | ||
6879 | 8911=>'ON', | ||
6880 | 8912=>'ON', | ||
6881 | 8913=>'ON', | ||
6882 | 8914=>'ON', | ||
6883 | 8915=>'ON', | ||
6884 | 8916=>'ON', | ||
6885 | 8917=>'ON', | ||
6886 | 8918=>'ON', | ||
6887 | 8919=>'ON', | ||
6888 | 8920=>'ON', | ||
6889 | 8921=>'ON', | ||
6890 | 8922=>'ON', | ||
6891 | 8923=>'ON', | ||
6892 | 8924=>'ON', | ||
6893 | 8925=>'ON', | ||
6894 | 8926=>'ON', | ||
6895 | 8927=>'ON', | ||
6896 | 8928=>'ON', | ||
6897 | 8929=>'ON', | ||
6898 | 8930=>'ON', | ||
6899 | 8931=>'ON', | ||
6900 | 8932=>'ON', | ||
6901 | 8933=>'ON', | ||
6902 | 8934=>'ON', | ||
6903 | 8935=>'ON', | ||
6904 | 8936=>'ON', | ||
6905 | 8937=>'ON', | ||
6906 | 8938=>'ON', | ||
6907 | 8939=>'ON', | ||
6908 | 8940=>'ON', | ||
6909 | 8941=>'ON', | ||
6910 | 8942=>'ON', | ||
6911 | 8943=>'ON', | ||
6912 | 8944=>'ON', | ||
6913 | 8945=>'ON', | ||
6914 | 8946=>'ON', | ||
6915 | 8947=>'ON', | ||
6916 | 8948=>'ON', | ||
6917 | 8949=>'ON', | ||
6918 | 8950=>'ON', | ||
6919 | 8951=>'ON', | ||
6920 | 8952=>'ON', | ||
6921 | 8953=>'ON', | ||
6922 | 8954=>'ON', | ||
6923 | 8955=>'ON', | ||
6924 | 8956=>'ON', | ||
6925 | 8957=>'ON', | ||
6926 | 8958=>'ON', | ||
6927 | 8959=>'ON', | ||
6928 | 8960=>'ON', | ||
6929 | 8961=>'ON', | ||
6930 | 8962=>'ON', | ||
6931 | 8963=>'ON', | ||
6932 | 8964=>'ON', | ||
6933 | 8965=>'ON', | ||
6934 | 8966=>'ON', | ||
6935 | 8967=>'ON', | ||
6936 | 8968=>'ON', | ||
6937 | 8969=>'ON', | ||
6938 | 8970=>'ON', | ||
6939 | 8971=>'ON', | ||
6940 | 8972=>'ON', | ||
6941 | 8973=>'ON', | ||
6942 | 8974=>'ON', | ||
6943 | 8975=>'ON', | ||
6944 | 8976=>'ON', | ||
6945 | 8977=>'ON', | ||
6946 | 8978=>'ON', | ||
6947 | 8979=>'ON', | ||
6948 | 8980=>'ON', | ||
6949 | 8981=>'ON', | ||
6950 | 8982=>'ON', | ||
6951 | 8983=>'ON', | ||
6952 | 8984=>'ON', | ||
6953 | 8985=>'ON', | ||
6954 | 8986=>'ON', | ||
6955 | 8987=>'ON', | ||
6956 | 8988=>'ON', | ||
6957 | 8989=>'ON', | ||
6958 | 8990=>'ON', | ||
6959 | 8991=>'ON', | ||
6960 | 8992=>'ON', | ||
6961 | 8993=>'ON', | ||
6962 | 8994=>'ON', | ||
6963 | 8995=>'ON', | ||
6964 | 8996=>'ON', | ||
6965 | 8997=>'ON', | ||
6966 | 8998=>'ON', | ||
6967 | 8999=>'ON', | ||
6968 | 9000=>'ON', | ||
6969 | 9001=>'ON', | ||
6970 | 9002=>'ON', | ||
6971 | 9003=>'ON', | ||
6972 | 9004=>'ON', | ||
6973 | 9005=>'ON', | ||
6974 | 9006=>'ON', | ||
6975 | 9007=>'ON', | ||
6976 | 9008=>'ON', | ||
6977 | 9009=>'ON', | ||
6978 | 9010=>'ON', | ||
6979 | 9011=>'ON', | ||
6980 | 9012=>'ON', | ||
6981 | 9013=>'ON', | ||
6982 | 9014=>'L', | ||
6983 | 9015=>'L', | ||
6984 | 9016=>'L', | ||
6985 | 9017=>'L', | ||
6986 | 9018=>'L', | ||
6987 | 9019=>'L', | ||
6988 | 9020=>'L', | ||
6989 | 9021=>'L', | ||
6990 | 9022=>'L', | ||
6991 | 9023=>'L', | ||
6992 | 9024=>'L', | ||
6993 | 9025=>'L', | ||
6994 | 9026=>'L', | ||
6995 | 9027=>'L', | ||
6996 | 9028=>'L', | ||
6997 | 9029=>'L', | ||
6998 | 9030=>'L', | ||
6999 | 9031=>'L', | ||
7000 | 9032=>'L', | ||
7001 | 9033=>'L', | ||
7002 | 9034=>'L', | ||
7003 | 9035=>'L', | ||
7004 | 9036=>'L', | ||
7005 | 9037=>'L', | ||
7006 | 9038=>'L', | ||
7007 | 9039=>'L', | ||
7008 | 9040=>'L', | ||
7009 | 9041=>'L', | ||
7010 | 9042=>'L', | ||
7011 | 9043=>'L', | ||
7012 | 9044=>'L', | ||
7013 | 9045=>'L', | ||
7014 | 9046=>'L', | ||
7015 | 9047=>'L', | ||
7016 | 9048=>'L', | ||
7017 | 9049=>'L', | ||
7018 | 9050=>'L', | ||
7019 | 9051=>'L', | ||
7020 | 9052=>'L', | ||
7021 | 9053=>'L', | ||
7022 | 9054=>'L', | ||
7023 | 9055=>'L', | ||
7024 | 9056=>'L', | ||
7025 | 9057=>'L', | ||
7026 | 9058=>'L', | ||
7027 | 9059=>'L', | ||
7028 | 9060=>'L', | ||
7029 | 9061=>'L', | ||
7030 | 9062=>'L', | ||
7031 | 9063=>'L', | ||
7032 | 9064=>'L', | ||
7033 | 9065=>'L', | ||
7034 | 9066=>'L', | ||
7035 | 9067=>'L', | ||
7036 | 9068=>'L', | ||
7037 | 9069=>'L', | ||
7038 | 9070=>'L', | ||
7039 | 9071=>'L', | ||
7040 | 9072=>'L', | ||
7041 | 9073=>'L', | ||
7042 | 9074=>'L', | ||
7043 | 9075=>'L', | ||
7044 | 9076=>'L', | ||
7045 | 9077=>'L', | ||
7046 | 9078=>'L', | ||
7047 | 9079=>'L', | ||
7048 | 9080=>'L', | ||
7049 | 9081=>'L', | ||
7050 | 9082=>'L', | ||
7051 | 9083=>'ON', | ||
7052 | 9084=>'ON', | ||
7053 | 9085=>'ON', | ||
7054 | 9086=>'ON', | ||
7055 | 9087=>'ON', | ||
7056 | 9088=>'ON', | ||
7057 | 9089=>'ON', | ||
7058 | 9090=>'ON', | ||
7059 | 9091=>'ON', | ||
7060 | 9092=>'ON', | ||
7061 | 9093=>'ON', | ||
7062 | 9094=>'ON', | ||
7063 | 9095=>'ON', | ||
7064 | 9096=>'ON', | ||
7065 | 9097=>'ON', | ||
7066 | 9098=>'ON', | ||
7067 | 9099=>'ON', | ||
7068 | 9100=>'ON', | ||
7069 | 9101=>'ON', | ||
7070 | 9102=>'ON', | ||
7071 | 9103=>'ON', | ||
7072 | 9104=>'ON', | ||
7073 | 9105=>'ON', | ||
7074 | 9106=>'ON', | ||
7075 | 9107=>'ON', | ||
7076 | 9108=>'ON', | ||
7077 | 9109=>'L', | ||
7078 | 9110=>'ON', | ||
7079 | 9111=>'ON', | ||
7080 | 9112=>'ON', | ||
7081 | 9113=>'ON', | ||
7082 | 9114=>'ON', | ||
7083 | 9115=>'ON', | ||
7084 | 9116=>'ON', | ||
7085 | 9117=>'ON', | ||
7086 | 9118=>'ON', | ||
7087 | 9119=>'ON', | ||
7088 | 9120=>'ON', | ||
7089 | 9121=>'ON', | ||
7090 | 9122=>'ON', | ||
7091 | 9123=>'ON', | ||
7092 | 9124=>'ON', | ||
7093 | 9125=>'ON', | ||
7094 | 9126=>'ON', | ||
7095 | 9127=>'ON', | ||
7096 | 9128=>'ON', | ||
7097 | 9129=>'ON', | ||
7098 | 9130=>'ON', | ||
7099 | 9131=>'ON', | ||
7100 | 9132=>'ON', | ||
7101 | 9133=>'ON', | ||
7102 | 9134=>'ON', | ||
7103 | 9135=>'ON', | ||
7104 | 9136=>'ON', | ||
7105 | 9137=>'ON', | ||
7106 | 9138=>'ON', | ||
7107 | 9139=>'ON', | ||
7108 | 9140=>'ON', | ||
7109 | 9141=>'ON', | ||
7110 | 9142=>'ON', | ||
7111 | 9143=>'ON', | ||
7112 | 9144=>'ON', | ||
7113 | 9145=>'ON', | ||
7114 | 9146=>'ON', | ||
7115 | 9147=>'ON', | ||
7116 | 9148=>'ON', | ||
7117 | 9149=>'ON', | ||
7118 | 9150=>'ON', | ||
7119 | 9151=>'ON', | ||
7120 | 9152=>'ON', | ||
7121 | 9153=>'ON', | ||
7122 | 9154=>'ON', | ||
7123 | 9155=>'ON', | ||
7124 | 9156=>'ON', | ||
7125 | 9157=>'ON', | ||
7126 | 9158=>'ON', | ||
7127 | 9159=>'ON', | ||
7128 | 9160=>'ON', | ||
7129 | 9161=>'ON', | ||
7130 | 9162=>'ON', | ||
7131 | 9163=>'ON', | ||
7132 | 9164=>'ON', | ||
7133 | 9165=>'ON', | ||
7134 | 9166=>'ON', | ||
7135 | 9167=>'ON', | ||
7136 | 9168=>'ON', | ||
7137 | 9169=>'ON', | ||
7138 | 9170=>'ON', | ||
7139 | 9171=>'ON', | ||
7140 | 9172=>'ON', | ||
7141 | 9173=>'ON', | ||
7142 | 9174=>'ON', | ||
7143 | 9175=>'ON', | ||
7144 | 9176=>'ON', | ||
7145 | 9177=>'ON', | ||
7146 | 9178=>'ON', | ||
7147 | 9179=>'ON', | ||
7148 | 9180=>'ON', | ||
7149 | 9181=>'ON', | ||
7150 | 9182=>'ON', | ||
7151 | 9183=>'ON', | ||
7152 | 9184=>'ON', | ||
7153 | 9185=>'ON', | ||
7154 | 9186=>'ON', | ||
7155 | 9187=>'ON', | ||
7156 | 9188=>'ON', | ||
7157 | 9189=>'ON', | ||
7158 | 9190=>'ON', | ||
7159 | 9191=>'ON', | ||
7160 | 9216=>'ON', | ||
7161 | 9217=>'ON', | ||
7162 | 9218=>'ON', | ||
7163 | 9219=>'ON', | ||
7164 | 9220=>'ON', | ||
7165 | 9221=>'ON', | ||
7166 | 9222=>'ON', | ||
7167 | 9223=>'ON', | ||
7168 | 9224=>'ON', | ||
7169 | 9225=>'ON', | ||
7170 | 9226=>'ON', | ||
7171 | 9227=>'ON', | ||
7172 | 9228=>'ON', | ||
7173 | 9229=>'ON', | ||
7174 | 9230=>'ON', | ||
7175 | 9231=>'ON', | ||
7176 | 9232=>'ON', | ||
7177 | 9233=>'ON', | ||
7178 | 9234=>'ON', | ||
7179 | 9235=>'ON', | ||
7180 | 9236=>'ON', | ||
7181 | 9237=>'ON', | ||
7182 | 9238=>'ON', | ||
7183 | 9239=>'ON', | ||
7184 | 9240=>'ON', | ||
7185 | 9241=>'ON', | ||
7186 | 9242=>'ON', | ||
7187 | 9243=>'ON', | ||
7188 | 9244=>'ON', | ||
7189 | 9245=>'ON', | ||
7190 | 9246=>'ON', | ||
7191 | 9247=>'ON', | ||
7192 | 9248=>'ON', | ||
7193 | 9249=>'ON', | ||
7194 | 9250=>'ON', | ||
7195 | 9251=>'ON', | ||
7196 | 9252=>'ON', | ||
7197 | 9253=>'ON', | ||
7198 | 9254=>'ON', | ||
7199 | 9280=>'ON', | ||
7200 | 9281=>'ON', | ||
7201 | 9282=>'ON', | ||
7202 | 9283=>'ON', | ||
7203 | 9284=>'ON', | ||
7204 | 9285=>'ON', | ||
7205 | 9286=>'ON', | ||
7206 | 9287=>'ON', | ||
7207 | 9288=>'ON', | ||
7208 | 9289=>'ON', | ||
7209 | 9290=>'ON', | ||
7210 | 9312=>'ON', | ||
7211 | 9313=>'ON', | ||
7212 | 9314=>'ON', | ||
7213 | 9315=>'ON', | ||
7214 | 9316=>'ON', | ||
7215 | 9317=>'ON', | ||
7216 | 9318=>'ON', | ||
7217 | 9319=>'ON', | ||
7218 | 9320=>'ON', | ||
7219 | 9321=>'ON', | ||
7220 | 9322=>'ON', | ||
7221 | 9323=>'ON', | ||
7222 | 9324=>'ON', | ||
7223 | 9325=>'ON', | ||
7224 | 9326=>'ON', | ||
7225 | 9327=>'ON', | ||
7226 | 9328=>'ON', | ||
7227 | 9329=>'ON', | ||
7228 | 9330=>'ON', | ||
7229 | 9331=>'ON', | ||
7230 | 9332=>'ON', | ||
7231 | 9333=>'ON', | ||
7232 | 9334=>'ON', | ||
7233 | 9335=>'ON', | ||
7234 | 9336=>'ON', | ||
7235 | 9337=>'ON', | ||
7236 | 9338=>'ON', | ||
7237 | 9339=>'ON', | ||
7238 | 9340=>'ON', | ||
7239 | 9341=>'ON', | ||
7240 | 9342=>'ON', | ||
7241 | 9343=>'ON', | ||
7242 | 9344=>'ON', | ||
7243 | 9345=>'ON', | ||
7244 | 9346=>'ON', | ||
7245 | 9347=>'ON', | ||
7246 | 9348=>'ON', | ||
7247 | 9349=>'ON', | ||
7248 | 9350=>'ON', | ||
7249 | 9351=>'ON', | ||
7250 | 9352=>'EN', | ||
7251 | 9353=>'EN', | ||
7252 | 9354=>'EN', | ||
7253 | 9355=>'EN', | ||
7254 | 9356=>'EN', | ||
7255 | 9357=>'EN', | ||
7256 | 9358=>'EN', | ||
7257 | 9359=>'EN', | ||
7258 | 9360=>'EN', | ||
7259 | 9361=>'EN', | ||
7260 | 9362=>'EN', | ||
7261 | 9363=>'EN', | ||
7262 | 9364=>'EN', | ||
7263 | 9365=>'EN', | ||
7264 | 9366=>'EN', | ||
7265 | 9367=>'EN', | ||
7266 | 9368=>'EN', | ||
7267 | 9369=>'EN', | ||
7268 | 9370=>'EN', | ||
7269 | 9371=>'EN', | ||
7270 | 9372=>'L', | ||
7271 | 9373=>'L', | ||
7272 | 9374=>'L', | ||
7273 | 9375=>'L', | ||
7274 | 9376=>'L', | ||
7275 | 9377=>'L', | ||
7276 | 9378=>'L', | ||
7277 | 9379=>'L', | ||
7278 | 9380=>'L', | ||
7279 | 9381=>'L', | ||
7280 | 9382=>'L', | ||
7281 | 9383=>'L', | ||
7282 | 9384=>'L', | ||
7283 | 9385=>'L', | ||
7284 | 9386=>'L', | ||
7285 | 9387=>'L', | ||
7286 | 9388=>'L', | ||
7287 | 9389=>'L', | ||
7288 | 9390=>'L', | ||
7289 | 9391=>'L', | ||
7290 | 9392=>'L', | ||
7291 | 9393=>'L', | ||
7292 | 9394=>'L', | ||
7293 | 9395=>'L', | ||
7294 | 9396=>'L', | ||
7295 | 9397=>'L', | ||
7296 | 9398=>'L', | ||
7297 | 9399=>'L', | ||
7298 | 9400=>'L', | ||
7299 | 9401=>'L', | ||
7300 | 9402=>'L', | ||
7301 | 9403=>'L', | ||
7302 | 9404=>'L', | ||
7303 | 9405=>'L', | ||
7304 | 9406=>'L', | ||
7305 | 9407=>'L', | ||
7306 | 9408=>'L', | ||
7307 | 9409=>'L', | ||
7308 | 9410=>'L', | ||
7309 | 9411=>'L', | ||
7310 | 9412=>'L', | ||
7311 | 9413=>'L', | ||
7312 | 9414=>'L', | ||
7313 | 9415=>'L', | ||
7314 | 9416=>'L', | ||
7315 | 9417=>'L', | ||
7316 | 9418=>'L', | ||
7317 | 9419=>'L', | ||
7318 | 9420=>'L', | ||
7319 | 9421=>'L', | ||
7320 | 9422=>'L', | ||
7321 | 9423=>'L', | ||
7322 | 9424=>'L', | ||
7323 | 9425=>'L', | ||
7324 | 9426=>'L', | ||
7325 | 9427=>'L', | ||
7326 | 9428=>'L', | ||
7327 | 9429=>'L', | ||
7328 | 9430=>'L', | ||
7329 | 9431=>'L', | ||
7330 | 9432=>'L', | ||
7331 | 9433=>'L', | ||
7332 | 9434=>'L', | ||
7333 | 9435=>'L', | ||
7334 | 9436=>'L', | ||
7335 | 9437=>'L', | ||
7336 | 9438=>'L', | ||
7337 | 9439=>'L', | ||
7338 | 9440=>'L', | ||
7339 | 9441=>'L', | ||
7340 | 9442=>'L', | ||
7341 | 9443=>'L', | ||
7342 | 9444=>'L', | ||
7343 | 9445=>'L', | ||
7344 | 9446=>'L', | ||
7345 | 9447=>'L', | ||
7346 | 9448=>'L', | ||
7347 | 9449=>'L', | ||
7348 | 9450=>'ON', | ||
7349 | 9451=>'ON', | ||
7350 | 9452=>'ON', | ||
7351 | 9453=>'ON', | ||
7352 | 9454=>'ON', | ||
7353 | 9455=>'ON', | ||
7354 | 9456=>'ON', | ||
7355 | 9457=>'ON', | ||
7356 | 9458=>'ON', | ||
7357 | 9459=>'ON', | ||
7358 | 9460=>'ON', | ||
7359 | 9461=>'ON', | ||
7360 | 9462=>'ON', | ||
7361 | 9463=>'ON', | ||
7362 | 9464=>'ON', | ||
7363 | 9465=>'ON', | ||
7364 | 9466=>'ON', | ||
7365 | 9467=>'ON', | ||
7366 | 9468=>'ON', | ||
7367 | 9469=>'ON', | ||
7368 | 9470=>'ON', | ||
7369 | 9471=>'ON', | ||
7370 | 9472=>'ON', | ||
7371 | 9473=>'ON', | ||
7372 | 9474=>'ON', | ||
7373 | 9475=>'ON', | ||
7374 | 9476=>'ON', | ||
7375 | 9477=>'ON', | ||
7376 | 9478=>'ON', | ||
7377 | 9479=>'ON', | ||
7378 | 9480=>'ON', | ||
7379 | 9481=>'ON', | ||
7380 | 9482=>'ON', | ||
7381 | 9483=>'ON', | ||
7382 | 9484=>'ON', | ||
7383 | 9485=>'ON', | ||
7384 | 9486=>'ON', | ||
7385 | 9487=>'ON', | ||
7386 | 9488=>'ON', | ||
7387 | 9489=>'ON', | ||
7388 | 9490=>'ON', | ||
7389 | 9491=>'ON', | ||
7390 | 9492=>'ON', | ||
7391 | 9493=>'ON', | ||
7392 | 9494=>'ON', | ||
7393 | 9495=>'ON', | ||
7394 | 9496=>'ON', | ||
7395 | 9497=>'ON', | ||
7396 | 9498=>'ON', | ||
7397 | 9499=>'ON', | ||
7398 | 9500=>'ON', | ||
7399 | 9501=>'ON', | ||
7400 | 9502=>'ON', | ||
7401 | 9503=>'ON', | ||
7402 | 9504=>'ON', | ||
7403 | 9505=>'ON', | ||
7404 | 9506=>'ON', | ||
7405 | 9507=>'ON', | ||
7406 | 9508=>'ON', | ||
7407 | 9509=>'ON', | ||
7408 | 9510=>'ON', | ||
7409 | 9511=>'ON', | ||
7410 | 9512=>'ON', | ||
7411 | 9513=>'ON', | ||
7412 | 9514=>'ON', | ||
7413 | 9515=>'ON', | ||
7414 | 9516=>'ON', | ||
7415 | 9517=>'ON', | ||
7416 | 9518=>'ON', | ||
7417 | 9519=>'ON', | ||
7418 | 9520=>'ON', | ||
7419 | 9521=>'ON', | ||
7420 | 9522=>'ON', | ||
7421 | 9523=>'ON', | ||
7422 | 9524=>'ON', | ||
7423 | 9525=>'ON', | ||
7424 | 9526=>'ON', | ||
7425 | 9527=>'ON', | ||
7426 | 9528=>'ON', | ||
7427 | 9529=>'ON', | ||
7428 | 9530=>'ON', | ||
7429 | 9531=>'ON', | ||
7430 | 9532=>'ON', | ||
7431 | 9533=>'ON', | ||
7432 | 9534=>'ON', | ||
7433 | 9535=>'ON', | ||
7434 | 9536=>'ON', | ||
7435 | 9537=>'ON', | ||
7436 | 9538=>'ON', | ||
7437 | 9539=>'ON', | ||
7438 | 9540=>'ON', | ||
7439 | 9541=>'ON', | ||
7440 | 9542=>'ON', | ||
7441 | 9543=>'ON', | ||
7442 | 9544=>'ON', | ||
7443 | 9545=>'ON', | ||
7444 | 9546=>'ON', | ||
7445 | 9547=>'ON', | ||
7446 | 9548=>'ON', | ||
7447 | 9549=>'ON', | ||
7448 | 9550=>'ON', | ||
7449 | 9551=>'ON', | ||
7450 | 9552=>'ON', | ||
7451 | 9553=>'ON', | ||
7452 | 9554=>'ON', | ||
7453 | 9555=>'ON', | ||
7454 | 9556=>'ON', | ||
7455 | 9557=>'ON', | ||
7456 | 9558=>'ON', | ||
7457 | 9559=>'ON', | ||
7458 | 9560=>'ON', | ||
7459 | 9561=>'ON', | ||
7460 | 9562=>'ON', | ||
7461 | 9563=>'ON', | ||
7462 | 9564=>'ON', | ||
7463 | 9565=>'ON', | ||
7464 | 9566=>'ON', | ||
7465 | 9567=>'ON', | ||
7466 | 9568=>'ON', | ||
7467 | 9569=>'ON', | ||
7468 | 9570=>'ON', | ||
7469 | 9571=>'ON', | ||
7470 | 9572=>'ON', | ||
7471 | 9573=>'ON', | ||
7472 | 9574=>'ON', | ||
7473 | 9575=>'ON', | ||
7474 | 9576=>'ON', | ||
7475 | 9577=>'ON', | ||
7476 | 9578=>'ON', | ||
7477 | 9579=>'ON', | ||
7478 | 9580=>'ON', | ||
7479 | 9581=>'ON', | ||
7480 | 9582=>'ON', | ||
7481 | 9583=>'ON', | ||
7482 | 9584=>'ON', | ||
7483 | 9585=>'ON', | ||
7484 | 9586=>'ON', | ||
7485 | 9587=>'ON', | ||
7486 | 9588=>'ON', | ||
7487 | 9589=>'ON', | ||
7488 | 9590=>'ON', | ||
7489 | 9591=>'ON', | ||
7490 | 9592=>'ON', | ||
7491 | 9593=>'ON', | ||
7492 | 9594=>'ON', | ||
7493 | 9595=>'ON', | ||
7494 | 9596=>'ON', | ||
7495 | 9597=>'ON', | ||
7496 | 9598=>'ON', | ||
7497 | 9599=>'ON', | ||
7498 | 9600=>'ON', | ||
7499 | 9601=>'ON', | ||
7500 | 9602=>'ON', | ||
7501 | 9603=>'ON', | ||
7502 | 9604=>'ON', | ||
7503 | 9605=>'ON', | ||
7504 | 9606=>'ON', | ||
7505 | 9607=>'ON', | ||
7506 | 9608=>'ON', | ||
7507 | 9609=>'ON', | ||
7508 | 9610=>'ON', | ||
7509 | 9611=>'ON', | ||
7510 | 9612=>'ON', | ||
7511 | 9613=>'ON', | ||
7512 | 9614=>'ON', | ||
7513 | 9615=>'ON', | ||
7514 | 9616=>'ON', | ||
7515 | 9617=>'ON', | ||
7516 | 9618=>'ON', | ||
7517 | 9619=>'ON', | ||
7518 | 9620=>'ON', | ||
7519 | 9621=>'ON', | ||
7520 | 9622=>'ON', | ||
7521 | 9623=>'ON', | ||
7522 | 9624=>'ON', | ||
7523 | 9625=>'ON', | ||
7524 | 9626=>'ON', | ||
7525 | 9627=>'ON', | ||
7526 | 9628=>'ON', | ||
7527 | 9629=>'ON', | ||
7528 | 9630=>'ON', | ||
7529 | 9631=>'ON', | ||
7530 | 9632=>'ON', | ||
7531 | 9633=>'ON', | ||
7532 | 9634=>'ON', | ||
7533 | 9635=>'ON', | ||
7534 | 9636=>'ON', | ||
7535 | 9637=>'ON', | ||
7536 | 9638=>'ON', | ||
7537 | 9639=>'ON', | ||
7538 | 9640=>'ON', | ||
7539 | 9641=>'ON', | ||
7540 | 9642=>'ON', | ||
7541 | 9643=>'ON', | ||
7542 | 9644=>'ON', | ||
7543 | 9645=>'ON', | ||
7544 | 9646=>'ON', | ||
7545 | 9647=>'ON', | ||
7546 | 9648=>'ON', | ||
7547 | 9649=>'ON', | ||
7548 | 9650=>'ON', | ||
7549 | 9651=>'ON', | ||
7550 | 9652=>'ON', | ||
7551 | 9653=>'ON', | ||
7552 | 9654=>'ON', | ||
7553 | 9655=>'ON', | ||
7554 | 9656=>'ON', | ||
7555 | 9657=>'ON', | ||
7556 | 9658=>'ON', | ||
7557 | 9659=>'ON', | ||
7558 | 9660=>'ON', | ||
7559 | 9661=>'ON', | ||
7560 | 9662=>'ON', | ||
7561 | 9663=>'ON', | ||
7562 | 9664=>'ON', | ||
7563 | 9665=>'ON', | ||
7564 | 9666=>'ON', | ||
7565 | 9667=>'ON', | ||
7566 | 9668=>'ON', | ||
7567 | 9669=>'ON', | ||
7568 | 9670=>'ON', | ||
7569 | 9671=>'ON', | ||
7570 | 9672=>'ON', | ||
7571 | 9673=>'ON', | ||
7572 | 9674=>'ON', | ||
7573 | 9675=>'ON', | ||
7574 | 9676=>'ON', | ||
7575 | 9677=>'ON', | ||
7576 | 9678=>'ON', | ||
7577 | 9679=>'ON', | ||
7578 | 9680=>'ON', | ||
7579 | 9681=>'ON', | ||
7580 | 9682=>'ON', | ||
7581 | 9683=>'ON', | ||
7582 | 9684=>'ON', | ||
7583 | 9685=>'ON', | ||
7584 | 9686=>'ON', | ||
7585 | 9687=>'ON', | ||
7586 | 9688=>'ON', | ||
7587 | 9689=>'ON', | ||
7588 | 9690=>'ON', | ||
7589 | 9691=>'ON', | ||
7590 | 9692=>'ON', | ||
7591 | 9693=>'ON', | ||
7592 | 9694=>'ON', | ||
7593 | 9695=>'ON', | ||
7594 | 9696=>'ON', | ||
7595 | 9697=>'ON', | ||
7596 | 9698=>'ON', | ||
7597 | 9699=>'ON', | ||
7598 | 9700=>'ON', | ||
7599 | 9701=>'ON', | ||
7600 | 9702=>'ON', | ||
7601 | 9703=>'ON', | ||
7602 | 9704=>'ON', | ||
7603 | 9705=>'ON', | ||
7604 | 9706=>'ON', | ||
7605 | 9707=>'ON', | ||
7606 | 9708=>'ON', | ||
7607 | 9709=>'ON', | ||
7608 | 9710=>'ON', | ||
7609 | 9711=>'ON', | ||
7610 | 9712=>'ON', | ||
7611 | 9713=>'ON', | ||
7612 | 9714=>'ON', | ||
7613 | 9715=>'ON', | ||
7614 | 9716=>'ON', | ||
7615 | 9717=>'ON', | ||
7616 | 9718=>'ON', | ||
7617 | 9719=>'ON', | ||
7618 | 9720=>'ON', | ||
7619 | 9721=>'ON', | ||
7620 | 9722=>'ON', | ||
7621 | 9723=>'ON', | ||
7622 | 9724=>'ON', | ||
7623 | 9725=>'ON', | ||
7624 | 9726=>'ON', | ||
7625 | 9727=>'ON', | ||
7626 | 9728=>'ON', | ||
7627 | 9729=>'ON', | ||
7628 | 9730=>'ON', | ||
7629 | 9731=>'ON', | ||
7630 | 9732=>'ON', | ||
7631 | 9733=>'ON', | ||
7632 | 9734=>'ON', | ||
7633 | 9735=>'ON', | ||
7634 | 9736=>'ON', | ||
7635 | 9737=>'ON', | ||
7636 | 9738=>'ON', | ||
7637 | 9739=>'ON', | ||
7638 | 9740=>'ON', | ||
7639 | 9741=>'ON', | ||
7640 | 9742=>'ON', | ||
7641 | 9743=>'ON', | ||
7642 | 9744=>'ON', | ||
7643 | 9745=>'ON', | ||
7644 | 9746=>'ON', | ||
7645 | 9747=>'ON', | ||
7646 | 9748=>'ON', | ||
7647 | 9749=>'ON', | ||
7648 | 9750=>'ON', | ||
7649 | 9751=>'ON', | ||
7650 | 9752=>'ON', | ||
7651 | 9753=>'ON', | ||
7652 | 9754=>'ON', | ||
7653 | 9755=>'ON', | ||
7654 | 9756=>'ON', | ||
7655 | 9757=>'ON', | ||
7656 | 9758=>'ON', | ||
7657 | 9759=>'ON', | ||
7658 | 9760=>'ON', | ||
7659 | 9761=>'ON', | ||
7660 | 9762=>'ON', | ||
7661 | 9763=>'ON', | ||
7662 | 9764=>'ON', | ||
7663 | 9765=>'ON', | ||
7664 | 9766=>'ON', | ||
7665 | 9767=>'ON', | ||
7666 | 9768=>'ON', | ||
7667 | 9769=>'ON', | ||
7668 | 9770=>'ON', | ||
7669 | 9771=>'ON', | ||
7670 | 9772=>'ON', | ||
7671 | 9773=>'ON', | ||
7672 | 9774=>'ON', | ||
7673 | 9775=>'ON', | ||
7674 | 9776=>'ON', | ||
7675 | 9777=>'ON', | ||
7676 | 9778=>'ON', | ||
7677 | 9779=>'ON', | ||
7678 | 9780=>'ON', | ||
7679 | 9781=>'ON', | ||
7680 | 9782=>'ON', | ||
7681 | 9783=>'ON', | ||
7682 | 9784=>'ON', | ||
7683 | 9785=>'ON', | ||
7684 | 9786=>'ON', | ||
7685 | 9787=>'ON', | ||
7686 | 9788=>'ON', | ||
7687 | 9789=>'ON', | ||
7688 | 9790=>'ON', | ||
7689 | 9791=>'ON', | ||
7690 | 9792=>'ON', | ||
7691 | 9793=>'ON', | ||
7692 | 9794=>'ON', | ||
7693 | 9795=>'ON', | ||
7694 | 9796=>'ON', | ||
7695 | 9797=>'ON', | ||
7696 | 9798=>'ON', | ||
7697 | 9799=>'ON', | ||
7698 | 9800=>'ON', | ||
7699 | 9801=>'ON', | ||
7700 | 9802=>'ON', | ||
7701 | 9803=>'ON', | ||
7702 | 9804=>'ON', | ||
7703 | 9805=>'ON', | ||
7704 | 9806=>'ON', | ||
7705 | 9807=>'ON', | ||
7706 | 9808=>'ON', | ||
7707 | 9809=>'ON', | ||
7708 | 9810=>'ON', | ||
7709 | 9811=>'ON', | ||
7710 | 9812=>'ON', | ||
7711 | 9813=>'ON', | ||
7712 | 9814=>'ON', | ||
7713 | 9815=>'ON', | ||
7714 | 9816=>'ON', | ||
7715 | 9817=>'ON', | ||
7716 | 9818=>'ON', | ||
7717 | 9819=>'ON', | ||
7718 | 9820=>'ON', | ||
7719 | 9821=>'ON', | ||
7720 | 9822=>'ON', | ||
7721 | 9823=>'ON', | ||
7722 | 9824=>'ON', | ||
7723 | 9825=>'ON', | ||
7724 | 9826=>'ON', | ||
7725 | 9827=>'ON', | ||
7726 | 9828=>'ON', | ||
7727 | 9829=>'ON', | ||
7728 | 9830=>'ON', | ||
7729 | 9831=>'ON', | ||
7730 | 9832=>'ON', | ||
7731 | 9833=>'ON', | ||
7732 | 9834=>'ON', | ||
7733 | 9835=>'ON', | ||
7734 | 9836=>'ON', | ||
7735 | 9837=>'ON', | ||
7736 | 9838=>'ON', | ||
7737 | 9839=>'ON', | ||
7738 | 9840=>'ON', | ||
7739 | 9841=>'ON', | ||
7740 | 9842=>'ON', | ||
7741 | 9843=>'ON', | ||
7742 | 9844=>'ON', | ||
7743 | 9845=>'ON', | ||
7744 | 9846=>'ON', | ||
7745 | 9847=>'ON', | ||
7746 | 9848=>'ON', | ||
7747 | 9849=>'ON', | ||
7748 | 9850=>'ON', | ||
7749 | 9851=>'ON', | ||
7750 | 9852=>'ON', | ||
7751 | 9853=>'ON', | ||
7752 | 9854=>'ON', | ||
7753 | 9855=>'ON', | ||
7754 | 9856=>'ON', | ||
7755 | 9857=>'ON', | ||
7756 | 9858=>'ON', | ||
7757 | 9859=>'ON', | ||
7758 | 9860=>'ON', | ||
7759 | 9861=>'ON', | ||
7760 | 9862=>'ON', | ||
7761 | 9863=>'ON', | ||
7762 | 9864=>'ON', | ||
7763 | 9865=>'ON', | ||
7764 | 9866=>'ON', | ||
7765 | 9867=>'ON', | ||
7766 | 9868=>'ON', | ||
7767 | 9869=>'ON', | ||
7768 | 9870=>'ON', | ||
7769 | 9871=>'ON', | ||
7770 | 9872=>'ON', | ||
7771 | 9873=>'ON', | ||
7772 | 9874=>'ON', | ||
7773 | 9875=>'ON', | ||
7774 | 9876=>'ON', | ||
7775 | 9877=>'ON', | ||
7776 | 9878=>'ON', | ||
7777 | 9879=>'ON', | ||
7778 | 9880=>'ON', | ||
7779 | 9881=>'ON', | ||
7780 | 9882=>'ON', | ||
7781 | 9883=>'ON', | ||
7782 | 9884=>'ON', | ||
7783 | 9888=>'ON', | ||
7784 | 9889=>'ON', | ||
7785 | 9890=>'ON', | ||
7786 | 9891=>'ON', | ||
7787 | 9892=>'ON', | ||
7788 | 9893=>'ON', | ||
7789 | 9894=>'ON', | ||
7790 | 9895=>'ON', | ||
7791 | 9896=>'ON', | ||
7792 | 9897=>'ON', | ||
7793 | 9898=>'ON', | ||
7794 | 9899=>'ON', | ||
7795 | 9900=>'L', | ||
7796 | 9901=>'ON', | ||
7797 | 9902=>'ON', | ||
7798 | 9903=>'ON', | ||
7799 | 9904=>'ON', | ||
7800 | 9905=>'ON', | ||
7801 | 9906=>'ON', | ||
7802 | 9985=>'ON', | ||
7803 | 9986=>'ON', | ||
7804 | 9987=>'ON', | ||
7805 | 9988=>'ON', | ||
7806 | 9990=>'ON', | ||
7807 | 9991=>'ON', | ||
7808 | 9992=>'ON', | ||
7809 | 9993=>'ON', | ||
7810 | 9996=>'ON', | ||
7811 | 9997=>'ON', | ||
7812 | 9998=>'ON', | ||
7813 | 9999=>'ON', | ||
7814 | 10000=>'ON', | ||
7815 | 10001=>'ON', | ||
7816 | 10002=>'ON', | ||
7817 | 10003=>'ON', | ||
7818 | 10004=>'ON', | ||
7819 | 10005=>'ON', | ||
7820 | 10006=>'ON', | ||
7821 | 10007=>'ON', | ||
7822 | 10008=>'ON', | ||
7823 | 10009=>'ON', | ||
7824 | 10010=>'ON', | ||
7825 | 10011=>'ON', | ||
7826 | 10012=>'ON', | ||
7827 | 10013=>'ON', | ||
7828 | 10014=>'ON', | ||
7829 | 10015=>'ON', | ||
7830 | 10016=>'ON', | ||
7831 | 10017=>'ON', | ||
7832 | 10018=>'ON', | ||
7833 | 10019=>'ON', | ||
7834 | 10020=>'ON', | ||
7835 | 10021=>'ON', | ||
7836 | 10022=>'ON', | ||
7837 | 10023=>'ON', | ||
7838 | 10025=>'ON', | ||
7839 | 10026=>'ON', | ||
7840 | 10027=>'ON', | ||
7841 | 10028=>'ON', | ||
7842 | 10029=>'ON', | ||
7843 | 10030=>'ON', | ||
7844 | 10031=>'ON', | ||
7845 | 10032=>'ON', | ||
7846 | 10033=>'ON', | ||
7847 | 10034=>'ON', | ||
7848 | 10035=>'ON', | ||
7849 | 10036=>'ON', | ||
7850 | 10037=>'ON', | ||
7851 | 10038=>'ON', | ||
7852 | 10039=>'ON', | ||
7853 | 10040=>'ON', | ||
7854 | 10041=>'ON', | ||
7855 | 10042=>'ON', | ||
7856 | 10043=>'ON', | ||
7857 | 10044=>'ON', | ||
7858 | 10045=>'ON', | ||
7859 | 10046=>'ON', | ||
7860 | 10047=>'ON', | ||
7861 | 10048=>'ON', | ||
7862 | 10049=>'ON', | ||
7863 | 10050=>'ON', | ||
7864 | 10051=>'ON', | ||
7865 | 10052=>'ON', | ||
7866 | 10053=>'ON', | ||
7867 | 10054=>'ON', | ||
7868 | 10055=>'ON', | ||
7869 | 10056=>'ON', | ||
7870 | 10057=>'ON', | ||
7871 | 10058=>'ON', | ||
7872 | 10059=>'ON', | ||
7873 | 10061=>'ON', | ||
7874 | 10063=>'ON', | ||
7875 | 10064=>'ON', | ||
7876 | 10065=>'ON', | ||
7877 | 10066=>'ON', | ||
7878 | 10070=>'ON', | ||
7879 | 10072=>'ON', | ||
7880 | 10073=>'ON', | ||
7881 | 10074=>'ON', | ||
7882 | 10075=>'ON', | ||
7883 | 10076=>'ON', | ||
7884 | 10077=>'ON', | ||
7885 | 10078=>'ON', | ||
7886 | 10081=>'ON', | ||
7887 | 10082=>'ON', | ||
7888 | 10083=>'ON', | ||
7889 | 10084=>'ON', | ||
7890 | 10085=>'ON', | ||
7891 | 10086=>'ON', | ||
7892 | 10087=>'ON', | ||
7893 | 10088=>'ON', | ||
7894 | 10089=>'ON', | ||
7895 | 10090=>'ON', | ||
7896 | 10091=>'ON', | ||
7897 | 10092=>'ON', | ||
7898 | 10093=>'ON', | ||
7899 | 10094=>'ON', | ||
7900 | 10095=>'ON', | ||
7901 | 10096=>'ON', | ||
7902 | 10097=>'ON', | ||
7903 | 10098=>'ON', | ||
7904 | 10099=>'ON', | ||
7905 | 10100=>'ON', | ||
7906 | 10101=>'ON', | ||
7907 | 10102=>'ON', | ||
7908 | 10103=>'ON', | ||
7909 | 10104=>'ON', | ||
7910 | 10105=>'ON', | ||
7911 | 10106=>'ON', | ||
7912 | 10107=>'ON', | ||
7913 | 10108=>'ON', | ||
7914 | 10109=>'ON', | ||
7915 | 10110=>'ON', | ||
7916 | 10111=>'ON', | ||
7917 | 10112=>'ON', | ||
7918 | 10113=>'ON', | ||
7919 | 10114=>'ON', | ||
7920 | 10115=>'ON', | ||
7921 | 10116=>'ON', | ||
7922 | 10117=>'ON', | ||
7923 | 10118=>'ON', | ||
7924 | 10119=>'ON', | ||
7925 | 10120=>'ON', | ||
7926 | 10121=>'ON', | ||
7927 | 10122=>'ON', | ||
7928 | 10123=>'ON', | ||
7929 | 10124=>'ON', | ||
7930 | 10125=>'ON', | ||
7931 | 10126=>'ON', | ||
7932 | 10127=>'ON', | ||
7933 | 10128=>'ON', | ||
7934 | 10129=>'ON', | ||
7935 | 10130=>'ON', | ||
7936 | 10131=>'ON', | ||
7937 | 10132=>'ON', | ||
7938 | 10136=>'ON', | ||
7939 | 10137=>'ON', | ||
7940 | 10138=>'ON', | ||
7941 | 10139=>'ON', | ||
7942 | 10140=>'ON', | ||
7943 | 10141=>'ON', | ||
7944 | 10142=>'ON', | ||
7945 | 10143=>'ON', | ||
7946 | 10144=>'ON', | ||
7947 | 10145=>'ON', | ||
7948 | 10146=>'ON', | ||
7949 | 10147=>'ON', | ||
7950 | 10148=>'ON', | ||
7951 | 10149=>'ON', | ||
7952 | 10150=>'ON', | ||
7953 | 10151=>'ON', | ||
7954 | 10152=>'ON', | ||
7955 | 10153=>'ON', | ||
7956 | 10154=>'ON', | ||
7957 | 10155=>'ON', | ||
7958 | 10156=>'ON', | ||
7959 | 10157=>'ON', | ||
7960 | 10158=>'ON', | ||
7961 | 10159=>'ON', | ||
7962 | 10161=>'ON', | ||
7963 | 10162=>'ON', | ||
7964 | 10163=>'ON', | ||
7965 | 10164=>'ON', | ||
7966 | 10165=>'ON', | ||
7967 | 10166=>'ON', | ||
7968 | 10167=>'ON', | ||
7969 | 10168=>'ON', | ||
7970 | 10169=>'ON', | ||
7971 | 10170=>'ON', | ||
7972 | 10171=>'ON', | ||
7973 | 10172=>'ON', | ||
7974 | 10173=>'ON', | ||
7975 | 10174=>'ON', | ||
7976 | 10176=>'ON', | ||
7977 | 10177=>'ON', | ||
7978 | 10178=>'ON', | ||
7979 | 10179=>'ON', | ||
7980 | 10180=>'ON', | ||
7981 | 10181=>'ON', | ||
7982 | 10182=>'ON', | ||
7983 | 10183=>'ON', | ||
7984 | 10184=>'ON', | ||
7985 | 10185=>'ON', | ||
7986 | 10186=>'ON', | ||
7987 | 10192=>'ON', | ||
7988 | 10193=>'ON', | ||
7989 | 10194=>'ON', | ||
7990 | 10195=>'ON', | ||
7991 | 10196=>'ON', | ||
7992 | 10197=>'ON', | ||
7993 | 10198=>'ON', | ||
7994 | 10199=>'ON', | ||
7995 | 10200=>'ON', | ||
7996 | 10201=>'ON', | ||
7997 | 10202=>'ON', | ||
7998 | 10203=>'ON', | ||
7999 | 10204=>'ON', | ||
8000 | 10205=>'ON', | ||
8001 | 10206=>'ON', | ||
8002 | 10207=>'ON', | ||
8003 | 10208=>'ON', | ||
8004 | 10209=>'ON', | ||
8005 | 10210=>'ON', | ||
8006 | 10211=>'ON', | ||
8007 | 10212=>'ON', | ||
8008 | 10213=>'ON', | ||
8009 | 10214=>'ON', | ||
8010 | 10215=>'ON', | ||
8011 | 10216=>'ON', | ||
8012 | 10217=>'ON', | ||
8013 | 10218=>'ON', | ||
8014 | 10219=>'ON', | ||
8015 | 10224=>'ON', | ||
8016 | 10225=>'ON', | ||
8017 | 10226=>'ON', | ||
8018 | 10227=>'ON', | ||
8019 | 10228=>'ON', | ||
8020 | 10229=>'ON', | ||
8021 | 10230=>'ON', | ||
8022 | 10231=>'ON', | ||
8023 | 10232=>'ON', | ||
8024 | 10233=>'ON', | ||
8025 | 10234=>'ON', | ||
8026 | 10235=>'ON', | ||
8027 | 10236=>'ON', | ||
8028 | 10237=>'ON', | ||
8029 | 10238=>'ON', | ||
8030 | 10239=>'ON', | ||
8031 | 10240=>'L', | ||
8032 | 10241=>'L', | ||
8033 | 10242=>'L', | ||
8034 | 10243=>'L', | ||
8035 | 10244=>'L', | ||
8036 | 10245=>'L', | ||
8037 | 10246=>'L', | ||
8038 | 10247=>'L', | ||
8039 | 10248=>'L', | ||
8040 | 10249=>'L', | ||
8041 | 10250=>'L', | ||
8042 | 10251=>'L', | ||
8043 | 10252=>'L', | ||
8044 | 10253=>'L', | ||
8045 | 10254=>'L', | ||
8046 | 10255=>'L', | ||
8047 | 10256=>'L', | ||
8048 | 10257=>'L', | ||
8049 | 10258=>'L', | ||
8050 | 10259=>'L', | ||
8051 | 10260=>'L', | ||
8052 | 10261=>'L', | ||
8053 | 10262=>'L', | ||
8054 | 10263=>'L', | ||
8055 | 10264=>'L', | ||
8056 | 10265=>'L', | ||
8057 | 10266=>'L', | ||
8058 | 10267=>'L', | ||
8059 | 10268=>'L', | ||
8060 | 10269=>'L', | ||
8061 | 10270=>'L', | ||
8062 | 10271=>'L', | ||
8063 | 10272=>'L', | ||
8064 | 10273=>'L', | ||
8065 | 10274=>'L', | ||
8066 | 10275=>'L', | ||
8067 | 10276=>'L', | ||
8068 | 10277=>'L', | ||
8069 | 10278=>'L', | ||
8070 | 10279=>'L', | ||
8071 | 10280=>'L', | ||
8072 | 10281=>'L', | ||
8073 | 10282=>'L', | ||
8074 | 10283=>'L', | ||
8075 | 10284=>'L', | ||
8076 | 10285=>'L', | ||
8077 | 10286=>'L', | ||
8078 | 10287=>'L', | ||
8079 | 10288=>'L', | ||
8080 | 10289=>'L', | ||
8081 | 10290=>'L', | ||
8082 | 10291=>'L', | ||
8083 | 10292=>'L', | ||
8084 | 10293=>'L', | ||
8085 | 10294=>'L', | ||
8086 | 10295=>'L', | ||
8087 | 10296=>'L', | ||
8088 | 10297=>'L', | ||
8089 | 10298=>'L', | ||
8090 | 10299=>'L', | ||
8091 | 10300=>'L', | ||
8092 | 10301=>'L', | ||
8093 | 10302=>'L', | ||
8094 | 10303=>'L', | ||
8095 | 10304=>'L', | ||
8096 | 10305=>'L', | ||
8097 | 10306=>'L', | ||
8098 | 10307=>'L', | ||
8099 | 10308=>'L', | ||
8100 | 10309=>'L', | ||
8101 | 10310=>'L', | ||
8102 | 10311=>'L', | ||
8103 | 10312=>'L', | ||
8104 | 10313=>'L', | ||
8105 | 10314=>'L', | ||
8106 | 10315=>'L', | ||
8107 | 10316=>'L', | ||
8108 | 10317=>'L', | ||
8109 | 10318=>'L', | ||
8110 | 10319=>'L', | ||
8111 | 10320=>'L', | ||
8112 | 10321=>'L', | ||
8113 | 10322=>'L', | ||
8114 | 10323=>'L', | ||
8115 | 10324=>'L', | ||
8116 | 10325=>'L', | ||
8117 | 10326=>'L', | ||
8118 | 10327=>'L', | ||
8119 | 10328=>'L', | ||
8120 | 10329=>'L', | ||
8121 | 10330=>'L', | ||
8122 | 10331=>'L', | ||
8123 | 10332=>'L', | ||
8124 | 10333=>'L', | ||
8125 | 10334=>'L', | ||
8126 | 10335=>'L', | ||
8127 | 10336=>'L', | ||
8128 | 10337=>'L', | ||
8129 | 10338=>'L', | ||
8130 | 10339=>'L', | ||
8131 | 10340=>'L', | ||
8132 | 10341=>'L', | ||
8133 | 10342=>'L', | ||
8134 | 10343=>'L', | ||
8135 | 10344=>'L', | ||
8136 | 10345=>'L', | ||
8137 | 10346=>'L', | ||
8138 | 10347=>'L', | ||
8139 | 10348=>'L', | ||
8140 | 10349=>'L', | ||
8141 | 10350=>'L', | ||
8142 | 10351=>'L', | ||
8143 | 10352=>'L', | ||
8144 | 10353=>'L', | ||
8145 | 10354=>'L', | ||
8146 | 10355=>'L', | ||
8147 | 10356=>'L', | ||
8148 | 10357=>'L', | ||
8149 | 10358=>'L', | ||
8150 | 10359=>'L', | ||
8151 | 10360=>'L', | ||
8152 | 10361=>'L', | ||
8153 | 10362=>'L', | ||
8154 | 10363=>'L', | ||
8155 | 10364=>'L', | ||
8156 | 10365=>'L', | ||
8157 | 10366=>'L', | ||
8158 | 10367=>'L', | ||
8159 | 10368=>'L', | ||
8160 | 10369=>'L', | ||
8161 | 10370=>'L', | ||
8162 | 10371=>'L', | ||
8163 | 10372=>'L', | ||
8164 | 10373=>'L', | ||
8165 | 10374=>'L', | ||
8166 | 10375=>'L', | ||
8167 | 10376=>'L', | ||
8168 | 10377=>'L', | ||
8169 | 10378=>'L', | ||
8170 | 10379=>'L', | ||
8171 | 10380=>'L', | ||
8172 | 10381=>'L', | ||
8173 | 10382=>'L', | ||
8174 | 10383=>'L', | ||
8175 | 10384=>'L', | ||
8176 | 10385=>'L', | ||
8177 | 10386=>'L', | ||
8178 | 10387=>'L', | ||
8179 | 10388=>'L', | ||
8180 | 10389=>'L', | ||
8181 | 10390=>'L', | ||
8182 | 10391=>'L', | ||
8183 | 10392=>'L', | ||
8184 | 10393=>'L', | ||
8185 | 10394=>'L', | ||
8186 | 10395=>'L', | ||
8187 | 10396=>'L', | ||
8188 | 10397=>'L', | ||
8189 | 10398=>'L', | ||
8190 | 10399=>'L', | ||
8191 | 10400=>'L', | ||
8192 | 10401=>'L', | ||
8193 | 10402=>'L', | ||
8194 | 10403=>'L', | ||
8195 | 10404=>'L', | ||
8196 | 10405=>'L', | ||
8197 | 10406=>'L', | ||
8198 | 10407=>'L', | ||
8199 | 10408=>'L', | ||
8200 | 10409=>'L', | ||
8201 | 10410=>'L', | ||
8202 | 10411=>'L', | ||
8203 | 10412=>'L', | ||
8204 | 10413=>'L', | ||
8205 | 10414=>'L', | ||
8206 | 10415=>'L', | ||
8207 | 10416=>'L', | ||
8208 | 10417=>'L', | ||
8209 | 10418=>'L', | ||
8210 | 10419=>'L', | ||
8211 | 10420=>'L', | ||
8212 | 10421=>'L', | ||
8213 | 10422=>'L', | ||
8214 | 10423=>'L', | ||
8215 | 10424=>'L', | ||
8216 | 10425=>'L', | ||
8217 | 10426=>'L', | ||
8218 | 10427=>'L', | ||
8219 | 10428=>'L', | ||
8220 | 10429=>'L', | ||
8221 | 10430=>'L', | ||
8222 | 10431=>'L', | ||
8223 | 10432=>'L', | ||
8224 | 10433=>'L', | ||
8225 | 10434=>'L', | ||
8226 | 10435=>'L', | ||
8227 | 10436=>'L', | ||
8228 | 10437=>'L', | ||
8229 | 10438=>'L', | ||
8230 | 10439=>'L', | ||
8231 | 10440=>'L', | ||
8232 | 10441=>'L', | ||
8233 | 10442=>'L', | ||
8234 | 10443=>'L', | ||
8235 | 10444=>'L', | ||
8236 | 10445=>'L', | ||
8237 | 10446=>'L', | ||
8238 | 10447=>'L', | ||
8239 | 10448=>'L', | ||
8240 | 10449=>'L', | ||
8241 | 10450=>'L', | ||
8242 | 10451=>'L', | ||
8243 | 10452=>'L', | ||
8244 | 10453=>'L', | ||
8245 | 10454=>'L', | ||
8246 | 10455=>'L', | ||
8247 | 10456=>'L', | ||
8248 | 10457=>'L', | ||
8249 | 10458=>'L', | ||
8250 | 10459=>'L', | ||
8251 | 10460=>'L', | ||
8252 | 10461=>'L', | ||
8253 | 10462=>'L', | ||
8254 | 10463=>'L', | ||
8255 | 10464=>'L', | ||
8256 | 10465=>'L', | ||
8257 | 10466=>'L', | ||
8258 | 10467=>'L', | ||
8259 | 10468=>'L', | ||
8260 | 10469=>'L', | ||
8261 | 10470=>'L', | ||
8262 | 10471=>'L', | ||
8263 | 10472=>'L', | ||
8264 | 10473=>'L', | ||
8265 | 10474=>'L', | ||
8266 | 10475=>'L', | ||
8267 | 10476=>'L', | ||
8268 | 10477=>'L', | ||
8269 | 10478=>'L', | ||
8270 | 10479=>'L', | ||
8271 | 10480=>'L', | ||
8272 | 10481=>'L', | ||
8273 | 10482=>'L', | ||
8274 | 10483=>'L', | ||
8275 | 10484=>'L', | ||
8276 | 10485=>'L', | ||
8277 | 10486=>'L', | ||
8278 | 10487=>'L', | ||
8279 | 10488=>'L', | ||
8280 | 10489=>'L', | ||
8281 | 10490=>'L', | ||
8282 | 10491=>'L', | ||
8283 | 10492=>'L', | ||
8284 | 10493=>'L', | ||
8285 | 10494=>'L', | ||
8286 | 10495=>'L', | ||
8287 | 10496=>'ON', | ||
8288 | 10497=>'ON', | ||
8289 | 10498=>'ON', | ||
8290 | 10499=>'ON', | ||
8291 | 10500=>'ON', | ||
8292 | 10501=>'ON', | ||
8293 | 10502=>'ON', | ||
8294 | 10503=>'ON', | ||
8295 | 10504=>'ON', | ||
8296 | 10505=>'ON', | ||
8297 | 10506=>'ON', | ||
8298 | 10507=>'ON', | ||
8299 | 10508=>'ON', | ||
8300 | 10509=>'ON', | ||
8301 | 10510=>'ON', | ||
8302 | 10511=>'ON', | ||
8303 | 10512=>'ON', | ||
8304 | 10513=>'ON', | ||
8305 | 10514=>'ON', | ||
8306 | 10515=>'ON', | ||
8307 | 10516=>'ON', | ||
8308 | 10517=>'ON', | ||
8309 | 10518=>'ON', | ||
8310 | 10519=>'ON', | ||
8311 | 10520=>'ON', | ||
8312 | 10521=>'ON', | ||
8313 | 10522=>'ON', | ||
8314 | 10523=>'ON', | ||
8315 | 10524=>'ON', | ||
8316 | 10525=>'ON', | ||
8317 | 10526=>'ON', | ||
8318 | 10527=>'ON', | ||
8319 | 10528=>'ON', | ||
8320 | 10529=>'ON', | ||
8321 | 10530=>'ON', | ||
8322 | 10531=>'ON', | ||
8323 | 10532=>'ON', | ||
8324 | 10533=>'ON', | ||
8325 | 10534=>'ON', | ||
8326 | 10535=>'ON', | ||
8327 | 10536=>'ON', | ||
8328 | 10537=>'ON', | ||
8329 | 10538=>'ON', | ||
8330 | 10539=>'ON', | ||
8331 | 10540=>'ON', | ||
8332 | 10541=>'ON', | ||
8333 | 10542=>'ON', | ||
8334 | 10543=>'ON', | ||
8335 | 10544=>'ON', | ||
8336 | 10545=>'ON', | ||
8337 | 10546=>'ON', | ||
8338 | 10547=>'ON', | ||
8339 | 10548=>'ON', | ||
8340 | 10549=>'ON', | ||
8341 | 10550=>'ON', | ||
8342 | 10551=>'ON', | ||
8343 | 10552=>'ON', | ||
8344 | 10553=>'ON', | ||
8345 | 10554=>'ON', | ||
8346 | 10555=>'ON', | ||
8347 | 10556=>'ON', | ||
8348 | 10557=>'ON', | ||
8349 | 10558=>'ON', | ||
8350 | 10559=>'ON', | ||
8351 | 10560=>'ON', | ||
8352 | 10561=>'ON', | ||
8353 | 10562=>'ON', | ||
8354 | 10563=>'ON', | ||
8355 | 10564=>'ON', | ||
8356 | 10565=>'ON', | ||
8357 | 10566=>'ON', | ||
8358 | 10567=>'ON', | ||
8359 | 10568=>'ON', | ||
8360 | 10569=>'ON', | ||
8361 | 10570=>'ON', | ||
8362 | 10571=>'ON', | ||
8363 | 10572=>'ON', | ||
8364 | 10573=>'ON', | ||
8365 | 10574=>'ON', | ||
8366 | 10575=>'ON', | ||
8367 | 10576=>'ON', | ||
8368 | 10577=>'ON', | ||
8369 | 10578=>'ON', | ||
8370 | 10579=>'ON', | ||
8371 | 10580=>'ON', | ||
8372 | 10581=>'ON', | ||
8373 | 10582=>'ON', | ||
8374 | 10583=>'ON', | ||
8375 | 10584=>'ON', | ||
8376 | 10585=>'ON', | ||
8377 | 10586=>'ON', | ||
8378 | 10587=>'ON', | ||
8379 | 10588=>'ON', | ||
8380 | 10589=>'ON', | ||
8381 | 10590=>'ON', | ||
8382 | 10591=>'ON', | ||
8383 | 10592=>'ON', | ||
8384 | 10593=>'ON', | ||
8385 | 10594=>'ON', | ||
8386 | 10595=>'ON', | ||
8387 | 10596=>'ON', | ||
8388 | 10597=>'ON', | ||
8389 | 10598=>'ON', | ||
8390 | 10599=>'ON', | ||
8391 | 10600=>'ON', | ||
8392 | 10601=>'ON', | ||
8393 | 10602=>'ON', | ||
8394 | 10603=>'ON', | ||
8395 | 10604=>'ON', | ||
8396 | 10605=>'ON', | ||
8397 | 10606=>'ON', | ||
8398 | 10607=>'ON', | ||
8399 | 10608=>'ON', | ||
8400 | 10609=>'ON', | ||
8401 | 10610=>'ON', | ||
8402 | 10611=>'ON', | ||
8403 | 10612=>'ON', | ||
8404 | 10613=>'ON', | ||
8405 | 10614=>'ON', | ||
8406 | 10615=>'ON', | ||
8407 | 10616=>'ON', | ||
8408 | 10617=>'ON', | ||
8409 | 10618=>'ON', | ||
8410 | 10619=>'ON', | ||
8411 | 10620=>'ON', | ||
8412 | 10621=>'ON', | ||
8413 | 10622=>'ON', | ||
8414 | 10623=>'ON', | ||
8415 | 10624=>'ON', | ||
8416 | 10625=>'ON', | ||
8417 | 10626=>'ON', | ||
8418 | 10627=>'ON', | ||
8419 | 10628=>'ON', | ||
8420 | 10629=>'ON', | ||
8421 | 10630=>'ON', | ||
8422 | 10631=>'ON', | ||
8423 | 10632=>'ON', | ||
8424 | 10633=>'ON', | ||
8425 | 10634=>'ON', | ||
8426 | 10635=>'ON', | ||
8427 | 10636=>'ON', | ||
8428 | 10637=>'ON', | ||
8429 | 10638=>'ON', | ||
8430 | 10639=>'ON', | ||
8431 | 10640=>'ON', | ||
8432 | 10641=>'ON', | ||
8433 | 10642=>'ON', | ||
8434 | 10643=>'ON', | ||
8435 | 10644=>'ON', | ||
8436 | 10645=>'ON', | ||
8437 | 10646=>'ON', | ||
8438 | 10647=>'ON', | ||
8439 | 10648=>'ON', | ||
8440 | 10649=>'ON', | ||
8441 | 10650=>'ON', | ||
8442 | 10651=>'ON', | ||
8443 | 10652=>'ON', | ||
8444 | 10653=>'ON', | ||
8445 | 10654=>'ON', | ||
8446 | 10655=>'ON', | ||
8447 | 10656=>'ON', | ||
8448 | 10657=>'ON', | ||
8449 | 10658=>'ON', | ||
8450 | 10659=>'ON', | ||
8451 | 10660=>'ON', | ||
8452 | 10661=>'ON', | ||
8453 | 10662=>'ON', | ||
8454 | 10663=>'ON', | ||
8455 | 10664=>'ON', | ||
8456 | 10665=>'ON', | ||
8457 | 10666=>'ON', | ||
8458 | 10667=>'ON', | ||
8459 | 10668=>'ON', | ||
8460 | 10669=>'ON', | ||
8461 | 10670=>'ON', | ||
8462 | 10671=>'ON', | ||
8463 | 10672=>'ON', | ||
8464 | 10673=>'ON', | ||
8465 | 10674=>'ON', | ||
8466 | 10675=>'ON', | ||
8467 | 10676=>'ON', | ||
8468 | 10677=>'ON', | ||
8469 | 10678=>'ON', | ||
8470 | 10679=>'ON', | ||
8471 | 10680=>'ON', | ||
8472 | 10681=>'ON', | ||
8473 | 10682=>'ON', | ||
8474 | 10683=>'ON', | ||
8475 | 10684=>'ON', | ||
8476 | 10685=>'ON', | ||
8477 | 10686=>'ON', | ||
8478 | 10687=>'ON', | ||
8479 | 10688=>'ON', | ||
8480 | 10689=>'ON', | ||
8481 | 10690=>'ON', | ||
8482 | 10691=>'ON', | ||
8483 | 10692=>'ON', | ||
8484 | 10693=>'ON', | ||
8485 | 10694=>'ON', | ||
8486 | 10695=>'ON', | ||
8487 | 10696=>'ON', | ||
8488 | 10697=>'ON', | ||
8489 | 10698=>'ON', | ||
8490 | 10699=>'ON', | ||
8491 | 10700=>'ON', | ||
8492 | 10701=>'ON', | ||
8493 | 10702=>'ON', | ||
8494 | 10703=>'ON', | ||
8495 | 10704=>'ON', | ||
8496 | 10705=>'ON', | ||
8497 | 10706=>'ON', | ||
8498 | 10707=>'ON', | ||
8499 | 10708=>'ON', | ||
8500 | 10709=>'ON', | ||
8501 | 10710=>'ON', | ||
8502 | 10711=>'ON', | ||
8503 | 10712=>'ON', | ||
8504 | 10713=>'ON', | ||
8505 | 10714=>'ON', | ||
8506 | 10715=>'ON', | ||
8507 | 10716=>'ON', | ||
8508 | 10717=>'ON', | ||
8509 | 10718=>'ON', | ||
8510 | 10719=>'ON', | ||
8511 | 10720=>'ON', | ||
8512 | 10721=>'ON', | ||
8513 | 10722=>'ON', | ||
8514 | 10723=>'ON', | ||
8515 | 10724=>'ON', | ||
8516 | 10725=>'ON', | ||
8517 | 10726=>'ON', | ||
8518 | 10727=>'ON', | ||
8519 | 10728=>'ON', | ||
8520 | 10729=>'ON', | ||
8521 | 10730=>'ON', | ||
8522 | 10731=>'ON', | ||
8523 | 10732=>'ON', | ||
8524 | 10733=>'ON', | ||
8525 | 10734=>'ON', | ||
8526 | 10735=>'ON', | ||
8527 | 10736=>'ON', | ||
8528 | 10737=>'ON', | ||
8529 | 10738=>'ON', | ||
8530 | 10739=>'ON', | ||
8531 | 10740=>'ON', | ||
8532 | 10741=>'ON', | ||
8533 | 10742=>'ON', | ||
8534 | 10743=>'ON', | ||
8535 | 10744=>'ON', | ||
8536 | 10745=>'ON', | ||
8537 | 10746=>'ON', | ||
8538 | 10747=>'ON', | ||
8539 | 10748=>'ON', | ||
8540 | 10749=>'ON', | ||
8541 | 10750=>'ON', | ||
8542 | 10751=>'ON', | ||
8543 | 10752=>'ON', | ||
8544 | 10753=>'ON', | ||
8545 | 10754=>'ON', | ||
8546 | 10755=>'ON', | ||
8547 | 10756=>'ON', | ||
8548 | 10757=>'ON', | ||
8549 | 10758=>'ON', | ||
8550 | 10759=>'ON', | ||
8551 | 10760=>'ON', | ||
8552 | 10761=>'ON', | ||
8553 | 10762=>'ON', | ||
8554 | 10763=>'ON', | ||
8555 | 10764=>'ON', | ||
8556 | 10765=>'ON', | ||
8557 | 10766=>'ON', | ||
8558 | 10767=>'ON', | ||
8559 | 10768=>'ON', | ||
8560 | 10769=>'ON', | ||
8561 | 10770=>'ON', | ||
8562 | 10771=>'ON', | ||
8563 | 10772=>'ON', | ||
8564 | 10773=>'ON', | ||
8565 | 10774=>'ON', | ||
8566 | 10775=>'ON', | ||
8567 | 10776=>'ON', | ||
8568 | 10777=>'ON', | ||
8569 | 10778=>'ON', | ||
8570 | 10779=>'ON', | ||
8571 | 10780=>'ON', | ||
8572 | 10781=>'ON', | ||
8573 | 10782=>'ON', | ||
8574 | 10783=>'ON', | ||
8575 | 10784=>'ON', | ||
8576 | 10785=>'ON', | ||
8577 | 10786=>'ON', | ||
8578 | 10787=>'ON', | ||
8579 | 10788=>'ON', | ||
8580 | 10789=>'ON', | ||
8581 | 10790=>'ON', | ||
8582 | 10791=>'ON', | ||
8583 | 10792=>'ON', | ||
8584 | 10793=>'ON', | ||
8585 | 10794=>'ON', | ||
8586 | 10795=>'ON', | ||
8587 | 10796=>'ON', | ||
8588 | 10797=>'ON', | ||
8589 | 10798=>'ON', | ||
8590 | 10799=>'ON', | ||
8591 | 10800=>'ON', | ||
8592 | 10801=>'ON', | ||
8593 | 10802=>'ON', | ||
8594 | 10803=>'ON', | ||
8595 | 10804=>'ON', | ||
8596 | 10805=>'ON', | ||
8597 | 10806=>'ON', | ||
8598 | 10807=>'ON', | ||
8599 | 10808=>'ON', | ||
8600 | 10809=>'ON', | ||
8601 | 10810=>'ON', | ||
8602 | 10811=>'ON', | ||
8603 | 10812=>'ON', | ||
8604 | 10813=>'ON', | ||
8605 | 10814=>'ON', | ||
8606 | 10815=>'ON', | ||
8607 | 10816=>'ON', | ||
8608 | 10817=>'ON', | ||
8609 | 10818=>'ON', | ||
8610 | 10819=>'ON', | ||
8611 | 10820=>'ON', | ||
8612 | 10821=>'ON', | ||
8613 | 10822=>'ON', | ||
8614 | 10823=>'ON', | ||
8615 | 10824=>'ON', | ||
8616 | 10825=>'ON', | ||
8617 | 10826=>'ON', | ||
8618 | 10827=>'ON', | ||
8619 | 10828=>'ON', | ||
8620 | 10829=>'ON', | ||
8621 | 10830=>'ON', | ||
8622 | 10831=>'ON', | ||
8623 | 10832=>'ON', | ||
8624 | 10833=>'ON', | ||
8625 | 10834=>'ON', | ||
8626 | 10835=>'ON', | ||
8627 | 10836=>'ON', | ||
8628 | 10837=>'ON', | ||
8629 | 10838=>'ON', | ||
8630 | 10839=>'ON', | ||
8631 | 10840=>'ON', | ||
8632 | 10841=>'ON', | ||
8633 | 10842=>'ON', | ||
8634 | 10843=>'ON', | ||
8635 | 10844=>'ON', | ||
8636 | 10845=>'ON', | ||
8637 | 10846=>'ON', | ||
8638 | 10847=>'ON', | ||
8639 | 10848=>'ON', | ||
8640 | 10849=>'ON', | ||
8641 | 10850=>'ON', | ||
8642 | 10851=>'ON', | ||
8643 | 10852=>'ON', | ||
8644 | 10853=>'ON', | ||
8645 | 10854=>'ON', | ||
8646 | 10855=>'ON', | ||
8647 | 10856=>'ON', | ||
8648 | 10857=>'ON', | ||
8649 | 10858=>'ON', | ||
8650 | 10859=>'ON', | ||
8651 | 10860=>'ON', | ||
8652 | 10861=>'ON', | ||
8653 | 10862=>'ON', | ||
8654 | 10863=>'ON', | ||
8655 | 10864=>'ON', | ||
8656 | 10865=>'ON', | ||
8657 | 10866=>'ON', | ||
8658 | 10867=>'ON', | ||
8659 | 10868=>'ON', | ||
8660 | 10869=>'ON', | ||
8661 | 10870=>'ON', | ||
8662 | 10871=>'ON', | ||
8663 | 10872=>'ON', | ||
8664 | 10873=>'ON', | ||
8665 | 10874=>'ON', | ||
8666 | 10875=>'ON', | ||
8667 | 10876=>'ON', | ||
8668 | 10877=>'ON', | ||
8669 | 10878=>'ON', | ||
8670 | 10879=>'ON', | ||
8671 | 10880=>'ON', | ||
8672 | 10881=>'ON', | ||
8673 | 10882=>'ON', | ||
8674 | 10883=>'ON', | ||
8675 | 10884=>'ON', | ||
8676 | 10885=>'ON', | ||
8677 | 10886=>'ON', | ||
8678 | 10887=>'ON', | ||
8679 | 10888=>'ON', | ||
8680 | 10889=>'ON', | ||
8681 | 10890=>'ON', | ||
8682 | 10891=>'ON', | ||
8683 | 10892=>'ON', | ||
8684 | 10893=>'ON', | ||
8685 | 10894=>'ON', | ||
8686 | 10895=>'ON', | ||
8687 | 10896=>'ON', | ||
8688 | 10897=>'ON', | ||
8689 | 10898=>'ON', | ||
8690 | 10899=>'ON', | ||
8691 | 10900=>'ON', | ||
8692 | 10901=>'ON', | ||
8693 | 10902=>'ON', | ||
8694 | 10903=>'ON', | ||
8695 | 10904=>'ON', | ||
8696 | 10905=>'ON', | ||
8697 | 10906=>'ON', | ||
8698 | 10907=>'ON', | ||
8699 | 10908=>'ON', | ||
8700 | 10909=>'ON', | ||
8701 | 10910=>'ON', | ||
8702 | 10911=>'ON', | ||
8703 | 10912=>'ON', | ||
8704 | 10913=>'ON', | ||
8705 | 10914=>'ON', | ||
8706 | 10915=>'ON', | ||
8707 | 10916=>'ON', | ||
8708 | 10917=>'ON', | ||
8709 | 10918=>'ON', | ||
8710 | 10919=>'ON', | ||
8711 | 10920=>'ON', | ||
8712 | 10921=>'ON', | ||
8713 | 10922=>'ON', | ||
8714 | 10923=>'ON', | ||
8715 | 10924=>'ON', | ||
8716 | 10925=>'ON', | ||
8717 | 10926=>'ON', | ||
8718 | 10927=>'ON', | ||
8719 | 10928=>'ON', | ||
8720 | 10929=>'ON', | ||
8721 | 10930=>'ON', | ||
8722 | 10931=>'ON', | ||
8723 | 10932=>'ON', | ||
8724 | 10933=>'ON', | ||
8725 | 10934=>'ON', | ||
8726 | 10935=>'ON', | ||
8727 | 10936=>'ON', | ||
8728 | 10937=>'ON', | ||
8729 | 10938=>'ON', | ||
8730 | 10939=>'ON', | ||
8731 | 10940=>'ON', | ||
8732 | 10941=>'ON', | ||
8733 | 10942=>'ON', | ||
8734 | 10943=>'ON', | ||
8735 | 10944=>'ON', | ||
8736 | 10945=>'ON', | ||
8737 | 10946=>'ON', | ||
8738 | 10947=>'ON', | ||
8739 | 10948=>'ON', | ||
8740 | 10949=>'ON', | ||
8741 | 10950=>'ON', | ||
8742 | 10951=>'ON', | ||
8743 | 10952=>'ON', | ||
8744 | 10953=>'ON', | ||
8745 | 10954=>'ON', | ||
8746 | 10955=>'ON', | ||
8747 | 10956=>'ON', | ||
8748 | 10957=>'ON', | ||
8749 | 10958=>'ON', | ||
8750 | 10959=>'ON', | ||
8751 | 10960=>'ON', | ||
8752 | 10961=>'ON', | ||
8753 | 10962=>'ON', | ||
8754 | 10963=>'ON', | ||
8755 | 10964=>'ON', | ||
8756 | 10965=>'ON', | ||
8757 | 10966=>'ON', | ||
8758 | 10967=>'ON', | ||
8759 | 10968=>'ON', | ||
8760 | 10969=>'ON', | ||
8761 | 10970=>'ON', | ||
8762 | 10971=>'ON', | ||
8763 | 10972=>'ON', | ||
8764 | 10973=>'ON', | ||
8765 | 10974=>'ON', | ||
8766 | 10975=>'ON', | ||
8767 | 10976=>'ON', | ||
8768 | 10977=>'ON', | ||
8769 | 10978=>'ON', | ||
8770 | 10979=>'ON', | ||
8771 | 10980=>'ON', | ||
8772 | 10981=>'ON', | ||
8773 | 10982=>'ON', | ||
8774 | 10983=>'ON', | ||
8775 | 10984=>'ON', | ||
8776 | 10985=>'ON', | ||
8777 | 10986=>'ON', | ||
8778 | 10987=>'ON', | ||
8779 | 10988=>'ON', | ||
8780 | 10989=>'ON', | ||
8781 | 10990=>'ON', | ||
8782 | 10991=>'ON', | ||
8783 | 10992=>'ON', | ||
8784 | 10993=>'ON', | ||
8785 | 10994=>'ON', | ||
8786 | 10995=>'ON', | ||
8787 | 10996=>'ON', | ||
8788 | 10997=>'ON', | ||
8789 | 10998=>'ON', | ||
8790 | 10999=>'ON', | ||
8791 | 11000=>'ON', | ||
8792 | 11001=>'ON', | ||
8793 | 11002=>'ON', | ||
8794 | 11003=>'ON', | ||
8795 | 11004=>'ON', | ||
8796 | 11005=>'ON', | ||
8797 | 11006=>'ON', | ||
8798 | 11007=>'ON', | ||
8799 | 11008=>'ON', | ||
8800 | 11009=>'ON', | ||
8801 | 11010=>'ON', | ||
8802 | 11011=>'ON', | ||
8803 | 11012=>'ON', | ||
8804 | 11013=>'ON', | ||
8805 | 11014=>'ON', | ||
8806 | 11015=>'ON', | ||
8807 | 11016=>'ON', | ||
8808 | 11017=>'ON', | ||
8809 | 11018=>'ON', | ||
8810 | 11019=>'ON', | ||
8811 | 11020=>'ON', | ||
8812 | 11021=>'ON', | ||
8813 | 11022=>'ON', | ||
8814 | 11023=>'ON', | ||
8815 | 11024=>'ON', | ||
8816 | 11025=>'ON', | ||
8817 | 11026=>'ON', | ||
8818 | 11027=>'ON', | ||
8819 | 11028=>'ON', | ||
8820 | 11029=>'ON', | ||
8821 | 11030=>'ON', | ||
8822 | 11031=>'ON', | ||
8823 | 11032=>'ON', | ||
8824 | 11033=>'ON', | ||
8825 | 11034=>'ON', | ||
8826 | 11040=>'ON', | ||
8827 | 11041=>'ON', | ||
8828 | 11042=>'ON', | ||
8829 | 11043=>'ON', | ||
8830 | 11264=>'L', | ||
8831 | 11265=>'L', | ||
8832 | 11266=>'L', | ||
8833 | 11267=>'L', | ||
8834 | 11268=>'L', | ||
8835 | 11269=>'L', | ||
8836 | 11270=>'L', | ||
8837 | 11271=>'L', | ||
8838 | 11272=>'L', | ||
8839 | 11273=>'L', | ||
8840 | 11274=>'L', | ||
8841 | 11275=>'L', | ||
8842 | 11276=>'L', | ||
8843 | 11277=>'L', | ||
8844 | 11278=>'L', | ||
8845 | 11279=>'L', | ||
8846 | 11280=>'L', | ||
8847 | 11281=>'L', | ||
8848 | 11282=>'L', | ||
8849 | 11283=>'L', | ||
8850 | 11284=>'L', | ||
8851 | 11285=>'L', | ||
8852 | 11286=>'L', | ||
8853 | 11287=>'L', | ||
8854 | 11288=>'L', | ||
8855 | 11289=>'L', | ||
8856 | 11290=>'L', | ||
8857 | 11291=>'L', | ||
8858 | 11292=>'L', | ||
8859 | 11293=>'L', | ||
8860 | 11294=>'L', | ||
8861 | 11295=>'L', | ||
8862 | 11296=>'L', | ||
8863 | 11297=>'L', | ||
8864 | 11298=>'L', | ||
8865 | 11299=>'L', | ||
8866 | 11300=>'L', | ||
8867 | 11301=>'L', | ||
8868 | 11302=>'L', | ||
8869 | 11303=>'L', | ||
8870 | 11304=>'L', | ||
8871 | 11305=>'L', | ||
8872 | 11306=>'L', | ||
8873 | 11307=>'L', | ||
8874 | 11308=>'L', | ||
8875 | 11309=>'L', | ||
8876 | 11310=>'L', | ||
8877 | 11312=>'L', | ||
8878 | 11313=>'L', | ||
8879 | 11314=>'L', | ||
8880 | 11315=>'L', | ||
8881 | 11316=>'L', | ||
8882 | 11317=>'L', | ||
8883 | 11318=>'L', | ||
8884 | 11319=>'L', | ||
8885 | 11320=>'L', | ||
8886 | 11321=>'L', | ||
8887 | 11322=>'L', | ||
8888 | 11323=>'L', | ||
8889 | 11324=>'L', | ||
8890 | 11325=>'L', | ||
8891 | 11326=>'L', | ||
8892 | 11327=>'L', | ||
8893 | 11328=>'L', | ||
8894 | 11329=>'L', | ||
8895 | 11330=>'L', | ||
8896 | 11331=>'L', | ||
8897 | 11332=>'L', | ||
8898 | 11333=>'L', | ||
8899 | 11334=>'L', | ||
8900 | 11335=>'L', | ||
8901 | 11336=>'L', | ||
8902 | 11337=>'L', | ||
8903 | 11338=>'L', | ||
8904 | 11339=>'L', | ||
8905 | 11340=>'L', | ||
8906 | 11341=>'L', | ||
8907 | 11342=>'L', | ||
8908 | 11343=>'L', | ||
8909 | 11344=>'L', | ||
8910 | 11345=>'L', | ||
8911 | 11346=>'L', | ||
8912 | 11347=>'L', | ||
8913 | 11348=>'L', | ||
8914 | 11349=>'L', | ||
8915 | 11350=>'L', | ||
8916 | 11351=>'L', | ||
8917 | 11352=>'L', | ||
8918 | 11353=>'L', | ||
8919 | 11354=>'L', | ||
8920 | 11355=>'L', | ||
8921 | 11356=>'L', | ||
8922 | 11357=>'L', | ||
8923 | 11358=>'L', | ||
8924 | 11360=>'L', | ||
8925 | 11361=>'L', | ||
8926 | 11362=>'L', | ||
8927 | 11363=>'L', | ||
8928 | 11364=>'L', | ||
8929 | 11365=>'L', | ||
8930 | 11366=>'L', | ||
8931 | 11367=>'L', | ||
8932 | 11368=>'L', | ||
8933 | 11369=>'L', | ||
8934 | 11370=>'L', | ||
8935 | 11371=>'L', | ||
8936 | 11372=>'L', | ||
8937 | 11380=>'L', | ||
8938 | 11381=>'L', | ||
8939 | 11382=>'L', | ||
8940 | 11383=>'L', | ||
8941 | 11392=>'L', | ||
8942 | 11393=>'L', | ||
8943 | 11394=>'L', | ||
8944 | 11395=>'L', | ||
8945 | 11396=>'L', | ||
8946 | 11397=>'L', | ||
8947 | 11398=>'L', | ||
8948 | 11399=>'L', | ||
8949 | 11400=>'L', | ||
8950 | 11401=>'L', | ||
8951 | 11402=>'L', | ||
8952 | 11403=>'L', | ||
8953 | 11404=>'L', | ||
8954 | 11405=>'L', | ||
8955 | 11406=>'L', | ||
8956 | 11407=>'L', | ||
8957 | 11408=>'L', | ||
8958 | 11409=>'L', | ||
8959 | 11410=>'L', | ||
8960 | 11411=>'L', | ||
8961 | 11412=>'L', | ||
8962 | 11413=>'L', | ||
8963 | 11414=>'L', | ||
8964 | 11415=>'L', | ||
8965 | 11416=>'L', | ||
8966 | 11417=>'L', | ||
8967 | 11418=>'L', | ||
8968 | 11419=>'L', | ||
8969 | 11420=>'L', | ||
8970 | 11421=>'L', | ||
8971 | 11422=>'L', | ||
8972 | 11423=>'L', | ||
8973 | 11424=>'L', | ||
8974 | 11425=>'L', | ||
8975 | 11426=>'L', | ||
8976 | 11427=>'L', | ||
8977 | 11428=>'L', | ||
8978 | 11429=>'L', | ||
8979 | 11430=>'L', | ||
8980 | 11431=>'L', | ||
8981 | 11432=>'L', | ||
8982 | 11433=>'L', | ||
8983 | 11434=>'L', | ||
8984 | 11435=>'L', | ||
8985 | 11436=>'L', | ||
8986 | 11437=>'L', | ||
8987 | 11438=>'L', | ||
8988 | 11439=>'L', | ||
8989 | 11440=>'L', | ||
8990 | 11441=>'L', | ||
8991 | 11442=>'L', | ||
8992 | 11443=>'L', | ||
8993 | 11444=>'L', | ||
8994 | 11445=>'L', | ||
8995 | 11446=>'L', | ||
8996 | 11447=>'L', | ||
8997 | 11448=>'L', | ||
8998 | 11449=>'L', | ||
8999 | 11450=>'L', | ||
9000 | 11451=>'L', | ||
9001 | 11452=>'L', | ||
9002 | 11453=>'L', | ||
9003 | 11454=>'L', | ||
9004 | 11455=>'L', | ||
9005 | 11456=>'L', | ||
9006 | 11457=>'L', | ||
9007 | 11458=>'L', | ||
9008 | 11459=>'L', | ||
9009 | 11460=>'L', | ||
9010 | 11461=>'L', | ||
9011 | 11462=>'L', | ||
9012 | 11463=>'L', | ||
9013 | 11464=>'L', | ||
9014 | 11465=>'L', | ||
9015 | 11466=>'L', | ||
9016 | 11467=>'L', | ||
9017 | 11468=>'L', | ||
9018 | 11469=>'L', | ||
9019 | 11470=>'L', | ||
9020 | 11471=>'L', | ||
9021 | 11472=>'L', | ||
9022 | 11473=>'L', | ||
9023 | 11474=>'L', | ||
9024 | 11475=>'L', | ||
9025 | 11476=>'L', | ||
9026 | 11477=>'L', | ||
9027 | 11478=>'L', | ||
9028 | 11479=>'L', | ||
9029 | 11480=>'L', | ||
9030 | 11481=>'L', | ||
9031 | 11482=>'L', | ||
9032 | 11483=>'L', | ||
9033 | 11484=>'L', | ||
9034 | 11485=>'L', | ||
9035 | 11486=>'L', | ||
9036 | 11487=>'L', | ||
9037 | 11488=>'L', | ||
9038 | 11489=>'L', | ||
9039 | 11490=>'L', | ||
9040 | 11491=>'L', | ||
9041 | 11492=>'L', | ||
9042 | 11493=>'ON', | ||
9043 | 11494=>'ON', | ||
9044 | 11495=>'ON', | ||
9045 | 11496=>'ON', | ||
9046 | 11497=>'ON', | ||
9047 | 11498=>'ON', | ||
9048 | 11513=>'ON', | ||
9049 | 11514=>'ON', | ||
9050 | 11515=>'ON', | ||
9051 | 11516=>'ON', | ||
9052 | 11517=>'ON', | ||
9053 | 11518=>'ON', | ||
9054 | 11519=>'ON', | ||
9055 | 11520=>'L', | ||
9056 | 11521=>'L', | ||
9057 | 11522=>'L', | ||
9058 | 11523=>'L', | ||
9059 | 11524=>'L', | ||
9060 | 11525=>'L', | ||
9061 | 11526=>'L', | ||
9062 | 11527=>'L', | ||
9063 | 11528=>'L', | ||
9064 | 11529=>'L', | ||
9065 | 11530=>'L', | ||
9066 | 11531=>'L', | ||
9067 | 11532=>'L', | ||
9068 | 11533=>'L', | ||
9069 | 11534=>'L', | ||
9070 | 11535=>'L', | ||
9071 | 11536=>'L', | ||
9072 | 11537=>'L', | ||
9073 | 11538=>'L', | ||
9074 | 11539=>'L', | ||
9075 | 11540=>'L', | ||
9076 | 11541=>'L', | ||
9077 | 11542=>'L', | ||
9078 | 11543=>'L', | ||
9079 | 11544=>'L', | ||
9080 | 11545=>'L', | ||
9081 | 11546=>'L', | ||
9082 | 11547=>'L', | ||
9083 | 11548=>'L', | ||
9084 | 11549=>'L', | ||
9085 | 11550=>'L', | ||
9086 | 11551=>'L', | ||
9087 | 11552=>'L', | ||
9088 | 11553=>'L', | ||
9089 | 11554=>'L', | ||
9090 | 11555=>'L', | ||
9091 | 11556=>'L', | ||
9092 | 11557=>'L', | ||
9093 | 11568=>'L', | ||
9094 | 11569=>'L', | ||
9095 | 11570=>'L', | ||
9096 | 11571=>'L', | ||
9097 | 11572=>'L', | ||
9098 | 11573=>'L', | ||
9099 | 11574=>'L', | ||
9100 | 11575=>'L', | ||
9101 | 11576=>'L', | ||
9102 | 11577=>'L', | ||
9103 | 11578=>'L', | ||
9104 | 11579=>'L', | ||
9105 | 11580=>'L', | ||
9106 | 11581=>'L', | ||
9107 | 11582=>'L', | ||
9108 | 11583=>'L', | ||
9109 | 11584=>'L', | ||
9110 | 11585=>'L', | ||
9111 | 11586=>'L', | ||
9112 | 11587=>'L', | ||
9113 | 11588=>'L', | ||
9114 | 11589=>'L', | ||
9115 | 11590=>'L', | ||
9116 | 11591=>'L', | ||
9117 | 11592=>'L', | ||
9118 | 11593=>'L', | ||
9119 | 11594=>'L', | ||
9120 | 11595=>'L', | ||
9121 | 11596=>'L', | ||
9122 | 11597=>'L', | ||
9123 | 11598=>'L', | ||
9124 | 11599=>'L', | ||
9125 | 11600=>'L', | ||
9126 | 11601=>'L', | ||
9127 | 11602=>'L', | ||
9128 | 11603=>'L', | ||
9129 | 11604=>'L', | ||
9130 | 11605=>'L', | ||
9131 | 11606=>'L', | ||
9132 | 11607=>'L', | ||
9133 | 11608=>'L', | ||
9134 | 11609=>'L', | ||
9135 | 11610=>'L', | ||
9136 | 11611=>'L', | ||
9137 | 11612=>'L', | ||
9138 | 11613=>'L', | ||
9139 | 11614=>'L', | ||
9140 | 11615=>'L', | ||
9141 | 11616=>'L', | ||
9142 | 11617=>'L', | ||
9143 | 11618=>'L', | ||
9144 | 11619=>'L', | ||
9145 | 11620=>'L', | ||
9146 | 11621=>'L', | ||
9147 | 11631=>'L', | ||
9148 | 11648=>'L', | ||
9149 | 11649=>'L', | ||
9150 | 11650=>'L', | ||
9151 | 11651=>'L', | ||
9152 | 11652=>'L', | ||
9153 | 11653=>'L', | ||
9154 | 11654=>'L', | ||
9155 | 11655=>'L', | ||
9156 | 11656=>'L', | ||
9157 | 11657=>'L', | ||
9158 | 11658=>'L', | ||
9159 | 11659=>'L', | ||
9160 | 11660=>'L', | ||
9161 | 11661=>'L', | ||
9162 | 11662=>'L', | ||
9163 | 11663=>'L', | ||
9164 | 11664=>'L', | ||
9165 | 11665=>'L', | ||
9166 | 11666=>'L', | ||
9167 | 11667=>'L', | ||
9168 | 11668=>'L', | ||
9169 | 11669=>'L', | ||
9170 | 11670=>'L', | ||
9171 | 11680=>'L', | ||
9172 | 11681=>'L', | ||
9173 | 11682=>'L', | ||
9174 | 11683=>'L', | ||
9175 | 11684=>'L', | ||
9176 | 11685=>'L', | ||
9177 | 11686=>'L', | ||
9178 | 11688=>'L', | ||
9179 | 11689=>'L', | ||
9180 | 11690=>'L', | ||
9181 | 11691=>'L', | ||
9182 | 11692=>'L', | ||
9183 | 11693=>'L', | ||
9184 | 11694=>'L', | ||
9185 | 11696=>'L', | ||
9186 | 11697=>'L', | ||
9187 | 11698=>'L', | ||
9188 | 11699=>'L', | ||
9189 | 11700=>'L', | ||
9190 | 11701=>'L', | ||
9191 | 11702=>'L', | ||
9192 | 11704=>'L', | ||
9193 | 11705=>'L', | ||
9194 | 11706=>'L', | ||
9195 | 11707=>'L', | ||
9196 | 11708=>'L', | ||
9197 | 11709=>'L', | ||
9198 | 11710=>'L', | ||
9199 | 11712=>'L', | ||
9200 | 11713=>'L', | ||
9201 | 11714=>'L', | ||
9202 | 11715=>'L', | ||
9203 | 11716=>'L', | ||
9204 | 11717=>'L', | ||
9205 | 11718=>'L', | ||
9206 | 11720=>'L', | ||
9207 | 11721=>'L', | ||
9208 | 11722=>'L', | ||
9209 | 11723=>'L', | ||
9210 | 11724=>'L', | ||
9211 | 11725=>'L', | ||
9212 | 11726=>'L', | ||
9213 | 11728=>'L', | ||
9214 | 11729=>'L', | ||
9215 | 11730=>'L', | ||
9216 | 11731=>'L', | ||
9217 | 11732=>'L', | ||
9218 | 11733=>'L', | ||
9219 | 11734=>'L', | ||
9220 | 11736=>'L', | ||
9221 | 11737=>'L', | ||
9222 | 11738=>'L', | ||
9223 | 11739=>'L', | ||
9224 | 11740=>'L', | ||
9225 | 11741=>'L', | ||
9226 | 11742=>'L', | ||
9227 | 11776=>'ON', | ||
9228 | 11777=>'ON', | ||
9229 | 11778=>'ON', | ||
9230 | 11779=>'ON', | ||
9231 | 11780=>'ON', | ||
9232 | 11781=>'ON', | ||
9233 | 11782=>'ON', | ||
9234 | 11783=>'ON', | ||
9235 | 11784=>'ON', | ||
9236 | 11785=>'ON', | ||
9237 | 11786=>'ON', | ||
9238 | 11787=>'ON', | ||
9239 | 11788=>'ON', | ||
9240 | 11789=>'ON', | ||
9241 | 11790=>'ON', | ||
9242 | 11791=>'ON', | ||
9243 | 11792=>'ON', | ||
9244 | 11793=>'ON', | ||
9245 | 11794=>'ON', | ||
9246 | 11795=>'ON', | ||
9247 | 11796=>'ON', | ||
9248 | 11797=>'ON', | ||
9249 | 11798=>'ON', | ||
9250 | 11799=>'ON', | ||
9251 | 11804=>'ON', | ||
9252 | 11805=>'ON', | ||
9253 | 11904=>'ON', | ||
9254 | 11905=>'ON', | ||
9255 | 11906=>'ON', | ||
9256 | 11907=>'ON', | ||
9257 | 11908=>'ON', | ||
9258 | 11909=>'ON', | ||
9259 | 11910=>'ON', | ||
9260 | 11911=>'ON', | ||
9261 | 11912=>'ON', | ||
9262 | 11913=>'ON', | ||
9263 | 11914=>'ON', | ||
9264 | 11915=>'ON', | ||
9265 | 11916=>'ON', | ||
9266 | 11917=>'ON', | ||
9267 | 11918=>'ON', | ||
9268 | 11919=>'ON', | ||
9269 | 11920=>'ON', | ||
9270 | 11921=>'ON', | ||
9271 | 11922=>'ON', | ||
9272 | 11923=>'ON', | ||
9273 | 11924=>'ON', | ||
9274 | 11925=>'ON', | ||
9275 | 11926=>'ON', | ||
9276 | 11927=>'ON', | ||
9277 | 11928=>'ON', | ||
9278 | 11929=>'ON', | ||
9279 | 11931=>'ON', | ||
9280 | 11932=>'ON', | ||
9281 | 11933=>'ON', | ||
9282 | 11934=>'ON', | ||
9283 | 11935=>'ON', | ||
9284 | 11936=>'ON', | ||
9285 | 11937=>'ON', | ||
9286 | 11938=>'ON', | ||
9287 | 11939=>'ON', | ||
9288 | 11940=>'ON', | ||
9289 | 11941=>'ON', | ||
9290 | 11942=>'ON', | ||
9291 | 11943=>'ON', | ||
9292 | 11944=>'ON', | ||
9293 | 11945=>'ON', | ||
9294 | 11946=>'ON', | ||
9295 | 11947=>'ON', | ||
9296 | 11948=>'ON', | ||
9297 | 11949=>'ON', | ||
9298 | 11950=>'ON', | ||
9299 | 11951=>'ON', | ||
9300 | 11952=>'ON', | ||
9301 | 11953=>'ON', | ||
9302 | 11954=>'ON', | ||
9303 | 11955=>'ON', | ||
9304 | 11956=>'ON', | ||
9305 | 11957=>'ON', | ||
9306 | 11958=>'ON', | ||
9307 | 11959=>'ON', | ||
9308 | 11960=>'ON', | ||
9309 | 11961=>'ON', | ||
9310 | 11962=>'ON', | ||
9311 | 11963=>'ON', | ||
9312 | 11964=>'ON', | ||
9313 | 11965=>'ON', | ||
9314 | 11966=>'ON', | ||
9315 | 11967=>'ON', | ||
9316 | 11968=>'ON', | ||
9317 | 11969=>'ON', | ||
9318 | 11970=>'ON', | ||
9319 | 11971=>'ON', | ||
9320 | 11972=>'ON', | ||
9321 | 11973=>'ON', | ||
9322 | 11974=>'ON', | ||
9323 | 11975=>'ON', | ||
9324 | 11976=>'ON', | ||
9325 | 11977=>'ON', | ||
9326 | 11978=>'ON', | ||
9327 | 11979=>'ON', | ||
9328 | 11980=>'ON', | ||
9329 | 11981=>'ON', | ||
9330 | 11982=>'ON', | ||
9331 | 11983=>'ON', | ||
9332 | 11984=>'ON', | ||
9333 | 11985=>'ON', | ||
9334 | 11986=>'ON', | ||
9335 | 11987=>'ON', | ||
9336 | 11988=>'ON', | ||
9337 | 11989=>'ON', | ||
9338 | 11990=>'ON', | ||
9339 | 11991=>'ON', | ||
9340 | 11992=>'ON', | ||
9341 | 11993=>'ON', | ||
9342 | 11994=>'ON', | ||
9343 | 11995=>'ON', | ||
9344 | 11996=>'ON', | ||
9345 | 11997=>'ON', | ||
9346 | 11998=>'ON', | ||
9347 | 11999=>'ON', | ||
9348 | 12000=>'ON', | ||
9349 | 12001=>'ON', | ||
9350 | 12002=>'ON', | ||
9351 | 12003=>'ON', | ||
9352 | 12004=>'ON', | ||
9353 | 12005=>'ON', | ||
9354 | 12006=>'ON', | ||
9355 | 12007=>'ON', | ||
9356 | 12008=>'ON', | ||
9357 | 12009=>'ON', | ||
9358 | 12010=>'ON', | ||
9359 | 12011=>'ON', | ||
9360 | 12012=>'ON', | ||
9361 | 12013=>'ON', | ||
9362 | 12014=>'ON', | ||
9363 | 12015=>'ON', | ||
9364 | 12016=>'ON', | ||
9365 | 12017=>'ON', | ||
9366 | 12018=>'ON', | ||
9367 | 12019=>'ON', | ||
9368 | 12032=>'ON', | ||
9369 | 12033=>'ON', | ||
9370 | 12034=>'ON', | ||
9371 | 12035=>'ON', | ||
9372 | 12036=>'ON', | ||
9373 | 12037=>'ON', | ||
9374 | 12038=>'ON', | ||
9375 | 12039=>'ON', | ||
9376 | 12040=>'ON', | ||
9377 | 12041=>'ON', | ||
9378 | 12042=>'ON', | ||
9379 | 12043=>'ON', | ||
9380 | 12044=>'ON', | ||
9381 | 12045=>'ON', | ||
9382 | 12046=>'ON', | ||
9383 | 12047=>'ON', | ||
9384 | 12048=>'ON', | ||
9385 | 12049=>'ON', | ||
9386 | 12050=>'ON', | ||
9387 | 12051=>'ON', | ||
9388 | 12052=>'ON', | ||
9389 | 12053=>'ON', | ||
9390 | 12054=>'ON', | ||
9391 | 12055=>'ON', | ||
9392 | 12056=>'ON', | ||
9393 | 12057=>'ON', | ||
9394 | 12058=>'ON', | ||
9395 | 12059=>'ON', | ||
9396 | 12060=>'ON', | ||
9397 | 12061=>'ON', | ||
9398 | 12062=>'ON', | ||
9399 | 12063=>'ON', | ||
9400 | 12064=>'ON', | ||
9401 | 12065=>'ON', | ||
9402 | 12066=>'ON', | ||
9403 | 12067=>'ON', | ||
9404 | 12068=>'ON', | ||
9405 | 12069=>'ON', | ||
9406 | 12070=>'ON', | ||
9407 | 12071=>'ON', | ||
9408 | 12072=>'ON', | ||
9409 | 12073=>'ON', | ||
9410 | 12074=>'ON', | ||
9411 | 12075=>'ON', | ||
9412 | 12076=>'ON', | ||
9413 | 12077=>'ON', | ||
9414 | 12078=>'ON', | ||
9415 | 12079=>'ON', | ||
9416 | 12080=>'ON', | ||
9417 | 12081=>'ON', | ||
9418 | 12082=>'ON', | ||
9419 | 12083=>'ON', | ||
9420 | 12084=>'ON', | ||
9421 | 12085=>'ON', | ||
9422 | 12086=>'ON', | ||
9423 | 12087=>'ON', | ||
9424 | 12088=>'ON', | ||
9425 | 12089=>'ON', | ||
9426 | 12090=>'ON', | ||
9427 | 12091=>'ON', | ||
9428 | 12092=>'ON', | ||
9429 | 12093=>'ON', | ||
9430 | 12094=>'ON', | ||
9431 | 12095=>'ON', | ||
9432 | 12096=>'ON', | ||
9433 | 12097=>'ON', | ||
9434 | 12098=>'ON', | ||
9435 | 12099=>'ON', | ||
9436 | 12100=>'ON', | ||
9437 | 12101=>'ON', | ||
9438 | 12102=>'ON', | ||
9439 | 12103=>'ON', | ||
9440 | 12104=>'ON', | ||
9441 | 12105=>'ON', | ||
9442 | 12106=>'ON', | ||
9443 | 12107=>'ON', | ||
9444 | 12108=>'ON', | ||
9445 | 12109=>'ON', | ||
9446 | 12110=>'ON', | ||
9447 | 12111=>'ON', | ||
9448 | 12112=>'ON', | ||
9449 | 12113=>'ON', | ||
9450 | 12114=>'ON', | ||
9451 | 12115=>'ON', | ||
9452 | 12116=>'ON', | ||
9453 | 12117=>'ON', | ||
9454 | 12118=>'ON', | ||
9455 | 12119=>'ON', | ||
9456 | 12120=>'ON', | ||
9457 | 12121=>'ON', | ||
9458 | 12122=>'ON', | ||
9459 | 12123=>'ON', | ||
9460 | 12124=>'ON', | ||
9461 | 12125=>'ON', | ||
9462 | 12126=>'ON', | ||
9463 | 12127=>'ON', | ||
9464 | 12128=>'ON', | ||
9465 | 12129=>'ON', | ||
9466 | 12130=>'ON', | ||
9467 | 12131=>'ON', | ||
9468 | 12132=>'ON', | ||
9469 | 12133=>'ON', | ||
9470 | 12134=>'ON', | ||
9471 | 12135=>'ON', | ||
9472 | 12136=>'ON', | ||
9473 | 12137=>'ON', | ||
9474 | 12138=>'ON', | ||
9475 | 12139=>'ON', | ||
9476 | 12140=>'ON', | ||
9477 | 12141=>'ON', | ||
9478 | 12142=>'ON', | ||
9479 | 12143=>'ON', | ||
9480 | 12144=>'ON', | ||
9481 | 12145=>'ON', | ||
9482 | 12146=>'ON', | ||
9483 | 12147=>'ON', | ||
9484 | 12148=>'ON', | ||
9485 | 12149=>'ON', | ||
9486 | 12150=>'ON', | ||
9487 | 12151=>'ON', | ||
9488 | 12152=>'ON', | ||
9489 | 12153=>'ON', | ||
9490 | 12154=>'ON', | ||
9491 | 12155=>'ON', | ||
9492 | 12156=>'ON', | ||
9493 | 12157=>'ON', | ||
9494 | 12158=>'ON', | ||
9495 | 12159=>'ON', | ||
9496 | 12160=>'ON', | ||
9497 | 12161=>'ON', | ||
9498 | 12162=>'ON', | ||
9499 | 12163=>'ON', | ||
9500 | 12164=>'ON', | ||
9501 | 12165=>'ON', | ||
9502 | 12166=>'ON', | ||
9503 | 12167=>'ON', | ||
9504 | 12168=>'ON', | ||
9505 | 12169=>'ON', | ||
9506 | 12170=>'ON', | ||
9507 | 12171=>'ON', | ||
9508 | 12172=>'ON', | ||
9509 | 12173=>'ON', | ||
9510 | 12174=>'ON', | ||
9511 | 12175=>'ON', | ||
9512 | 12176=>'ON', | ||
9513 | 12177=>'ON', | ||
9514 | 12178=>'ON', | ||
9515 | 12179=>'ON', | ||
9516 | 12180=>'ON', | ||
9517 | 12181=>'ON', | ||
9518 | 12182=>'ON', | ||
9519 | 12183=>'ON', | ||
9520 | 12184=>'ON', | ||
9521 | 12185=>'ON', | ||
9522 | 12186=>'ON', | ||
9523 | 12187=>'ON', | ||
9524 | 12188=>'ON', | ||
9525 | 12189=>'ON', | ||
9526 | 12190=>'ON', | ||
9527 | 12191=>'ON', | ||
9528 | 12192=>'ON', | ||
9529 | 12193=>'ON', | ||
9530 | 12194=>'ON', | ||
9531 | 12195=>'ON', | ||
9532 | 12196=>'ON', | ||
9533 | 12197=>'ON', | ||
9534 | 12198=>'ON', | ||
9535 | 12199=>'ON', | ||
9536 | 12200=>'ON', | ||
9537 | 12201=>'ON', | ||
9538 | 12202=>'ON', | ||
9539 | 12203=>'ON', | ||
9540 | 12204=>'ON', | ||
9541 | 12205=>'ON', | ||
9542 | 12206=>'ON', | ||
9543 | 12207=>'ON', | ||
9544 | 12208=>'ON', | ||
9545 | 12209=>'ON', | ||
9546 | 12210=>'ON', | ||
9547 | 12211=>'ON', | ||
9548 | 12212=>'ON', | ||
9549 | 12213=>'ON', | ||
9550 | 12214=>'ON', | ||
9551 | 12215=>'ON', | ||
9552 | 12216=>'ON', | ||
9553 | 12217=>'ON', | ||
9554 | 12218=>'ON', | ||
9555 | 12219=>'ON', | ||
9556 | 12220=>'ON', | ||
9557 | 12221=>'ON', | ||
9558 | 12222=>'ON', | ||
9559 | 12223=>'ON', | ||
9560 | 12224=>'ON', | ||
9561 | 12225=>'ON', | ||
9562 | 12226=>'ON', | ||
9563 | 12227=>'ON', | ||
9564 | 12228=>'ON', | ||
9565 | 12229=>'ON', | ||
9566 | 12230=>'ON', | ||
9567 | 12231=>'ON', | ||
9568 | 12232=>'ON', | ||
9569 | 12233=>'ON', | ||
9570 | 12234=>'ON', | ||
9571 | 12235=>'ON', | ||
9572 | 12236=>'ON', | ||
9573 | 12237=>'ON', | ||
9574 | 12238=>'ON', | ||
9575 | 12239=>'ON', | ||
9576 | 12240=>'ON', | ||
9577 | 12241=>'ON', | ||
9578 | 12242=>'ON', | ||
9579 | 12243=>'ON', | ||
9580 | 12244=>'ON', | ||
9581 | 12245=>'ON', | ||
9582 | 12272=>'ON', | ||
9583 | 12273=>'ON', | ||
9584 | 12274=>'ON', | ||
9585 | 12275=>'ON', | ||
9586 | 12276=>'ON', | ||
9587 | 12277=>'ON', | ||
9588 | 12278=>'ON', | ||
9589 | 12279=>'ON', | ||
9590 | 12280=>'ON', | ||
9591 | 12281=>'ON', | ||
9592 | 12282=>'ON', | ||
9593 | 12283=>'ON', | ||
9594 | 12288=>'WS', | ||
9595 | 12289=>'ON', | ||
9596 | 12290=>'ON', | ||
9597 | 12291=>'ON', | ||
9598 | 12292=>'ON', | ||
9599 | 12293=>'L', | ||
9600 | 12294=>'L', | ||
9601 | 12295=>'L', | ||
9602 | 12296=>'ON', | ||
9603 | 12297=>'ON', | ||
9604 | 12298=>'ON', | ||
9605 | 12299=>'ON', | ||
9606 | 12300=>'ON', | ||
9607 | 12301=>'ON', | ||
9608 | 12302=>'ON', | ||
9609 | 12303=>'ON', | ||
9610 | 12304=>'ON', | ||
9611 | 12305=>'ON', | ||
9612 | 12306=>'ON', | ||
9613 | 12307=>'ON', | ||
9614 | 12308=>'ON', | ||
9615 | 12309=>'ON', | ||
9616 | 12310=>'ON', | ||
9617 | 12311=>'ON', | ||
9618 | 12312=>'ON', | ||
9619 | 12313=>'ON', | ||
9620 | 12314=>'ON', | ||
9621 | 12315=>'ON', | ||
9622 | 12316=>'ON', | ||
9623 | 12317=>'ON', | ||
9624 | 12318=>'ON', | ||
9625 | 12319=>'ON', | ||
9626 | 12320=>'ON', | ||
9627 | 12321=>'L', | ||
9628 | 12322=>'L', | ||
9629 | 12323=>'L', | ||
9630 | 12324=>'L', | ||
9631 | 12325=>'L', | ||
9632 | 12326=>'L', | ||
9633 | 12327=>'L', | ||
9634 | 12328=>'L', | ||
9635 | 12329=>'L', | ||
9636 | 12330=>'NSM', | ||
9637 | 12331=>'NSM', | ||
9638 | 12332=>'NSM', | ||
9639 | 12333=>'NSM', | ||
9640 | 12334=>'NSM', | ||
9641 | 12335=>'NSM', | ||
9642 | 12336=>'ON', | ||
9643 | 12337=>'L', | ||
9644 | 12338=>'L', | ||
9645 | 12339=>'L', | ||
9646 | 12340=>'L', | ||
9647 | 12341=>'L', | ||
9648 | 12342=>'ON', | ||
9649 | 12343=>'ON', | ||
9650 | 12344=>'L', | ||
9651 | 12345=>'L', | ||
9652 | 12346=>'L', | ||
9653 | 12347=>'L', | ||
9654 | 12348=>'L', | ||
9655 | 12349=>'ON', | ||
9656 | 12350=>'ON', | ||
9657 | 12351=>'ON', | ||
9658 | 12353=>'L', | ||
9659 | 12354=>'L', | ||
9660 | 12355=>'L', | ||
9661 | 12356=>'L', | ||
9662 | 12357=>'L', | ||
9663 | 12358=>'L', | ||
9664 | 12359=>'L', | ||
9665 | 12360=>'L', | ||
9666 | 12361=>'L', | ||
9667 | 12362=>'L', | ||
9668 | 12363=>'L', | ||
9669 | 12364=>'L', | ||
9670 | 12365=>'L', | ||
9671 | 12366=>'L', | ||
9672 | 12367=>'L', | ||
9673 | 12368=>'L', | ||
9674 | 12369=>'L', | ||
9675 | 12370=>'L', | ||
9676 | 12371=>'L', | ||
9677 | 12372=>'L', | ||
9678 | 12373=>'L', | ||
9679 | 12374=>'L', | ||
9680 | 12375=>'L', | ||
9681 | 12376=>'L', | ||
9682 | 12377=>'L', | ||
9683 | 12378=>'L', | ||
9684 | 12379=>'L', | ||
9685 | 12380=>'L', | ||
9686 | 12381=>'L', | ||
9687 | 12382=>'L', | ||
9688 | 12383=>'L', | ||
9689 | 12384=>'L', | ||
9690 | 12385=>'L', | ||
9691 | 12386=>'L', | ||
9692 | 12387=>'L', | ||
9693 | 12388=>'L', | ||
9694 | 12389=>'L', | ||
9695 | 12390=>'L', | ||
9696 | 12391=>'L', | ||
9697 | 12392=>'L', | ||
9698 | 12393=>'L', | ||
9699 | 12394=>'L', | ||
9700 | 12395=>'L', | ||
9701 | 12396=>'L', | ||
9702 | 12397=>'L', | ||
9703 | 12398=>'L', | ||
9704 | 12399=>'L', | ||
9705 | 12400=>'L', | ||
9706 | 12401=>'L', | ||
9707 | 12402=>'L', | ||
9708 | 12403=>'L', | ||
9709 | 12404=>'L', | ||
9710 | 12405=>'L', | ||
9711 | 12406=>'L', | ||
9712 | 12407=>'L', | ||
9713 | 12408=>'L', | ||
9714 | 12409=>'L', | ||
9715 | 12410=>'L', | ||
9716 | 12411=>'L', | ||
9717 | 12412=>'L', | ||
9718 | 12413=>'L', | ||
9719 | 12414=>'L', | ||
9720 | 12415=>'L', | ||
9721 | 12416=>'L', | ||
9722 | 12417=>'L', | ||
9723 | 12418=>'L', | ||
9724 | 12419=>'L', | ||
9725 | 12420=>'L', | ||
9726 | 12421=>'L', | ||
9727 | 12422=>'L', | ||
9728 | 12423=>'L', | ||
9729 | 12424=>'L', | ||
9730 | 12425=>'L', | ||
9731 | 12426=>'L', | ||
9732 | 12427=>'L', | ||
9733 | 12428=>'L', | ||
9734 | 12429=>'L', | ||
9735 | 12430=>'L', | ||
9736 | 12431=>'L', | ||
9737 | 12432=>'L', | ||
9738 | 12433=>'L', | ||
9739 | 12434=>'L', | ||
9740 | 12435=>'L', | ||
9741 | 12436=>'L', | ||
9742 | 12437=>'L', | ||
9743 | 12438=>'L', | ||
9744 | 12441=>'NSM', | ||
9745 | 12442=>'NSM', | ||
9746 | 12443=>'ON', | ||
9747 | 12444=>'ON', | ||
9748 | 12445=>'L', | ||
9749 | 12446=>'L', | ||
9750 | 12447=>'L', | ||
9751 | 12448=>'ON', | ||
9752 | 12449=>'L', | ||
9753 | 12450=>'L', | ||
9754 | 12451=>'L', | ||
9755 | 12452=>'L', | ||
9756 | 12453=>'L', | ||
9757 | 12454=>'L', | ||
9758 | 12455=>'L', | ||
9759 | 12456=>'L', | ||
9760 | 12457=>'L', | ||
9761 | 12458=>'L', | ||
9762 | 12459=>'L', | ||
9763 | 12460=>'L', | ||
9764 | 12461=>'L', | ||
9765 | 12462=>'L', | ||
9766 | 12463=>'L', | ||
9767 | 12464=>'L', | ||
9768 | 12465=>'L', | ||
9769 | 12466=>'L', | ||
9770 | 12467=>'L', | ||
9771 | 12468=>'L', | ||
9772 | 12469=>'L', | ||
9773 | 12470=>'L', | ||
9774 | 12471=>'L', | ||
9775 | 12472=>'L', | ||
9776 | 12473=>'L', | ||
9777 | 12474=>'L', | ||
9778 | 12475=>'L', | ||
9779 | 12476=>'L', | ||
9780 | 12477=>'L', | ||
9781 | 12478=>'L', | ||
9782 | 12479=>'L', | ||
9783 | 12480=>'L', | ||
9784 | 12481=>'L', | ||
9785 | 12482=>'L', | ||
9786 | 12483=>'L', | ||
9787 | 12484=>'L', | ||
9788 | 12485=>'L', | ||
9789 | 12486=>'L', | ||
9790 | 12487=>'L', | ||
9791 | 12488=>'L', | ||
9792 | 12489=>'L', | ||
9793 | 12490=>'L', | ||
9794 | 12491=>'L', | ||
9795 | 12492=>'L', | ||
9796 | 12493=>'L', | ||
9797 | 12494=>'L', | ||
9798 | 12495=>'L', | ||
9799 | 12496=>'L', | ||
9800 | 12497=>'L', | ||
9801 | 12498=>'L', | ||
9802 | 12499=>'L', | ||
9803 | 12500=>'L', | ||
9804 | 12501=>'L', | ||
9805 | 12502=>'L', | ||
9806 | 12503=>'L', | ||
9807 | 12504=>'L', | ||
9808 | 12505=>'L', | ||
9809 | 12506=>'L', | ||
9810 | 12507=>'L', | ||
9811 | 12508=>'L', | ||
9812 | 12509=>'L', | ||
9813 | 12510=>'L', | ||
9814 | 12511=>'L', | ||
9815 | 12512=>'L', | ||
9816 | 12513=>'L', | ||
9817 | 12514=>'L', | ||
9818 | 12515=>'L', | ||
9819 | 12516=>'L', | ||
9820 | 12517=>'L', | ||
9821 | 12518=>'L', | ||
9822 | 12519=>'L', | ||
9823 | 12520=>'L', | ||
9824 | 12521=>'L', | ||
9825 | 12522=>'L', | ||
9826 | 12523=>'L', | ||
9827 | 12524=>'L', | ||
9828 | 12525=>'L', | ||
9829 | 12526=>'L', | ||
9830 | 12527=>'L', | ||
9831 | 12528=>'L', | ||
9832 | 12529=>'L', | ||
9833 | 12530=>'L', | ||
9834 | 12531=>'L', | ||
9835 | 12532=>'L', | ||
9836 | 12533=>'L', | ||
9837 | 12534=>'L', | ||
9838 | 12535=>'L', | ||
9839 | 12536=>'L', | ||
9840 | 12537=>'L', | ||
9841 | 12538=>'L', | ||
9842 | 12539=>'ON', | ||
9843 | 12540=>'L', | ||
9844 | 12541=>'L', | ||
9845 | 12542=>'L', | ||
9846 | 12543=>'L', | ||
9847 | 12549=>'L', | ||
9848 | 12550=>'L', | ||
9849 | 12551=>'L', | ||
9850 | 12552=>'L', | ||
9851 | 12553=>'L', | ||
9852 | 12554=>'L', | ||
9853 | 12555=>'L', | ||
9854 | 12556=>'L', | ||
9855 | 12557=>'L', | ||
9856 | 12558=>'L', | ||
9857 | 12559=>'L', | ||
9858 | 12560=>'L', | ||
9859 | 12561=>'L', | ||
9860 | 12562=>'L', | ||
9861 | 12563=>'L', | ||
9862 | 12564=>'L', | ||
9863 | 12565=>'L', | ||
9864 | 12566=>'L', | ||
9865 | 12567=>'L', | ||
9866 | 12568=>'L', | ||
9867 | 12569=>'L', | ||
9868 | 12570=>'L', | ||
9869 | 12571=>'L', | ||
9870 | 12572=>'L', | ||
9871 | 12573=>'L', | ||
9872 | 12574=>'L', | ||
9873 | 12575=>'L', | ||
9874 | 12576=>'L', | ||
9875 | 12577=>'L', | ||
9876 | 12578=>'L', | ||
9877 | 12579=>'L', | ||
9878 | 12580=>'L', | ||
9879 | 12581=>'L', | ||
9880 | 12582=>'L', | ||
9881 | 12583=>'L', | ||
9882 | 12584=>'L', | ||
9883 | 12585=>'L', | ||
9884 | 12586=>'L', | ||
9885 | 12587=>'L', | ||
9886 | 12588=>'L', | ||
9887 | 12593=>'L', | ||
9888 | 12594=>'L', | ||
9889 | 12595=>'L', | ||
9890 | 12596=>'L', | ||
9891 | 12597=>'L', | ||
9892 | 12598=>'L', | ||
9893 | 12599=>'L', | ||
9894 | 12600=>'L', | ||
9895 | 12601=>'L', | ||
9896 | 12602=>'L', | ||
9897 | 12603=>'L', | ||
9898 | 12604=>'L', | ||
9899 | 12605=>'L', | ||
9900 | 12606=>'L', | ||
9901 | 12607=>'L', | ||
9902 | 12608=>'L', | ||
9903 | 12609=>'L', | ||
9904 | 12610=>'L', | ||
9905 | 12611=>'L', | ||
9906 | 12612=>'L', | ||
9907 | 12613=>'L', | ||
9908 | 12614=>'L', | ||
9909 | 12615=>'L', | ||
9910 | 12616=>'L', | ||
9911 | 12617=>'L', | ||
9912 | 12618=>'L', | ||
9913 | 12619=>'L', | ||
9914 | 12620=>'L', | ||
9915 | 12621=>'L', | ||
9916 | 12622=>'L', | ||
9917 | 12623=>'L', | ||
9918 | 12624=>'L', | ||
9919 | 12625=>'L', | ||
9920 | 12626=>'L', | ||
9921 | 12627=>'L', | ||
9922 | 12628=>'L', | ||
9923 | 12629=>'L', | ||
9924 | 12630=>'L', | ||
9925 | 12631=>'L', | ||
9926 | 12632=>'L', | ||
9927 | 12633=>'L', | ||
9928 | 12634=>'L', | ||
9929 | 12635=>'L', | ||
9930 | 12636=>'L', | ||
9931 | 12637=>'L', | ||
9932 | 12638=>'L', | ||
9933 | 12639=>'L', | ||
9934 | 12640=>'L', | ||
9935 | 12641=>'L', | ||
9936 | 12642=>'L', | ||
9937 | 12643=>'L', | ||
9938 | 12644=>'L', | ||
9939 | 12645=>'L', | ||
9940 | 12646=>'L', | ||
9941 | 12647=>'L', | ||
9942 | 12648=>'L', | ||
9943 | 12649=>'L', | ||
9944 | 12650=>'L', | ||
9945 | 12651=>'L', | ||
9946 | 12652=>'L', | ||
9947 | 12653=>'L', | ||
9948 | 12654=>'L', | ||
9949 | 12655=>'L', | ||
9950 | 12656=>'L', | ||
9951 | 12657=>'L', | ||
9952 | 12658=>'L', | ||
9953 | 12659=>'L', | ||
9954 | 12660=>'L', | ||
9955 | 12661=>'L', | ||
9956 | 12662=>'L', | ||
9957 | 12663=>'L', | ||
9958 | 12664=>'L', | ||
9959 | 12665=>'L', | ||
9960 | 12666=>'L', | ||
9961 | 12667=>'L', | ||
9962 | 12668=>'L', | ||
9963 | 12669=>'L', | ||
9964 | 12670=>'L', | ||
9965 | 12671=>'L', | ||
9966 | 12672=>'L', | ||
9967 | 12673=>'L', | ||
9968 | 12674=>'L', | ||
9969 | 12675=>'L', | ||
9970 | 12676=>'L', | ||
9971 | 12677=>'L', | ||
9972 | 12678=>'L', | ||
9973 | 12679=>'L', | ||
9974 | 12680=>'L', | ||
9975 | 12681=>'L', | ||
9976 | 12682=>'L', | ||
9977 | 12683=>'L', | ||
9978 | 12684=>'L', | ||
9979 | 12685=>'L', | ||
9980 | 12686=>'L', | ||
9981 | 12688=>'L', | ||
9982 | 12689=>'L', | ||
9983 | 12690=>'L', | ||
9984 | 12691=>'L', | ||
9985 | 12692=>'L', | ||
9986 | 12693=>'L', | ||
9987 | 12694=>'L', | ||
9988 | 12695=>'L', | ||
9989 | 12696=>'L', | ||
9990 | 12697=>'L', | ||
9991 | 12698=>'L', | ||
9992 | 12699=>'L', | ||
9993 | 12700=>'L', | ||
9994 | 12701=>'L', | ||
9995 | 12702=>'L', | ||
9996 | 12703=>'L', | ||
9997 | 12704=>'L', | ||
9998 | 12705=>'L', | ||
9999 | 12706=>'L', | ||
10000 | 12707=>'L', | ||
10001 | 12708=>'L', | ||
10002 | 12709=>'L', | ||
10003 | 12710=>'L', | ||
10004 | 12711=>'L', | ||
10005 | 12712=>'L', | ||
10006 | 12713=>'L', | ||
10007 | 12714=>'L', | ||
10008 | 12715=>'L', | ||
10009 | 12716=>'L', | ||
10010 | 12717=>'L', | ||
10011 | 12718=>'L', | ||
10012 | 12719=>'L', | ||
10013 | 12720=>'L', | ||
10014 | 12721=>'L', | ||
10015 | 12722=>'L', | ||
10016 | 12723=>'L', | ||
10017 | 12724=>'L', | ||
10018 | 12725=>'L', | ||
10019 | 12726=>'L', | ||
10020 | 12727=>'L', | ||
10021 | 12736=>'ON', | ||
10022 | 12737=>'ON', | ||
10023 | 12738=>'ON', | ||
10024 | 12739=>'ON', | ||
10025 | 12740=>'ON', | ||
10026 | 12741=>'ON', | ||
10027 | 12742=>'ON', | ||
10028 | 12743=>'ON', | ||
10029 | 12744=>'ON', | ||
10030 | 12745=>'ON', | ||
10031 | 12746=>'ON', | ||
10032 | 12747=>'ON', | ||
10033 | 12748=>'ON', | ||
10034 | 12749=>'ON', | ||
10035 | 12750=>'ON', | ||
10036 | 12751=>'ON', | ||
10037 | 12784=>'L', | ||
10038 | 12785=>'L', | ||
10039 | 12786=>'L', | ||
10040 | 12787=>'L', | ||
10041 | 12788=>'L', | ||
10042 | 12789=>'L', | ||
10043 | 12790=>'L', | ||
10044 | 12791=>'L', | ||
10045 | 12792=>'L', | ||
10046 | 12793=>'L', | ||
10047 | 12794=>'L', | ||
10048 | 12795=>'L', | ||
10049 | 12796=>'L', | ||
10050 | 12797=>'L', | ||
10051 | 12798=>'L', | ||
10052 | 12799=>'L', | ||
10053 | 12800=>'L', | ||
10054 | 12801=>'L', | ||
10055 | 12802=>'L', | ||
10056 | 12803=>'L', | ||
10057 | 12804=>'L', | ||
10058 | 12805=>'L', | ||
10059 | 12806=>'L', | ||
10060 | 12807=>'L', | ||
10061 | 12808=>'L', | ||
10062 | 12809=>'L', | ||
10063 | 12810=>'L', | ||
10064 | 12811=>'L', | ||
10065 | 12812=>'L', | ||
10066 | 12813=>'L', | ||
10067 | 12814=>'L', | ||
10068 | 12815=>'L', | ||
10069 | 12816=>'L', | ||
10070 | 12817=>'L', | ||
10071 | 12818=>'L', | ||
10072 | 12819=>'L', | ||
10073 | 12820=>'L', | ||
10074 | 12821=>'L', | ||
10075 | 12822=>'L', | ||
10076 | 12823=>'L', | ||
10077 | 12824=>'L', | ||
10078 | 12825=>'L', | ||
10079 | 12826=>'L', | ||
10080 | 12827=>'L', | ||
10081 | 12828=>'L', | ||
10082 | 12829=>'ON', | ||
10083 | 12830=>'ON', | ||
10084 | 12832=>'L', | ||
10085 | 12833=>'L', | ||
10086 | 12834=>'L', | ||
10087 | 12835=>'L', | ||
10088 | 12836=>'L', | ||
10089 | 12837=>'L', | ||
10090 | 12838=>'L', | ||
10091 | 12839=>'L', | ||
10092 | 12840=>'L', | ||
10093 | 12841=>'L', | ||
10094 | 12842=>'L', | ||
10095 | 12843=>'L', | ||
10096 | 12844=>'L', | ||
10097 | 12845=>'L', | ||
10098 | 12846=>'L', | ||
10099 | 12847=>'L', | ||
10100 | 12848=>'L', | ||
10101 | 12849=>'L', | ||
10102 | 12850=>'L', | ||
10103 | 12851=>'L', | ||
10104 | 12852=>'L', | ||
10105 | 12853=>'L', | ||
10106 | 12854=>'L', | ||
10107 | 12855=>'L', | ||
10108 | 12856=>'L', | ||
10109 | 12857=>'L', | ||
10110 | 12858=>'L', | ||
10111 | 12859=>'L', | ||
10112 | 12860=>'L', | ||
10113 | 12861=>'L', | ||
10114 | 12862=>'L', | ||
10115 | 12863=>'L', | ||
10116 | 12864=>'L', | ||
10117 | 12865=>'L', | ||
10118 | 12866=>'L', | ||
10119 | 12867=>'L', | ||
10120 | 12880=>'ON', | ||
10121 | 12881=>'ON', | ||
10122 | 12882=>'ON', | ||
10123 | 12883=>'ON', | ||
10124 | 12884=>'ON', | ||
10125 | 12885=>'ON', | ||
10126 | 12886=>'ON', | ||
10127 | 12887=>'ON', | ||
10128 | 12888=>'ON', | ||
10129 | 12889=>'ON', | ||
10130 | 12890=>'ON', | ||
10131 | 12891=>'ON', | ||
10132 | 12892=>'ON', | ||
10133 | 12893=>'ON', | ||
10134 | 12894=>'ON', | ||
10135 | 12895=>'ON', | ||
10136 | 12896=>'L', | ||
10137 | 12897=>'L', | ||
10138 | 12898=>'L', | ||
10139 | 12899=>'L', | ||
10140 | 12900=>'L', | ||
10141 | 12901=>'L', | ||
10142 | 12902=>'L', | ||
10143 | 12903=>'L', | ||
10144 | 12904=>'L', | ||
10145 | 12905=>'L', | ||
10146 | 12906=>'L', | ||
10147 | 12907=>'L', | ||
10148 | 12908=>'L', | ||
10149 | 12909=>'L', | ||
10150 | 12910=>'L', | ||
10151 | 12911=>'L', | ||
10152 | 12912=>'L', | ||
10153 | 12913=>'L', | ||
10154 | 12914=>'L', | ||
10155 | 12915=>'L', | ||
10156 | 12916=>'L', | ||
10157 | 12917=>'L', | ||
10158 | 12918=>'L', | ||
10159 | 12919=>'L', | ||
10160 | 12920=>'L', | ||
10161 | 12921=>'L', | ||
10162 | 12922=>'L', | ||
10163 | 12923=>'L', | ||
10164 | 12924=>'ON', | ||
10165 | 12925=>'ON', | ||
10166 | 12926=>'ON', | ||
10167 | 12927=>'L', | ||
10168 | 12928=>'L', | ||
10169 | 12929=>'L', | ||
10170 | 12930=>'L', | ||
10171 | 12931=>'L', | ||
10172 | 12932=>'L', | ||
10173 | 12933=>'L', | ||
10174 | 12934=>'L', | ||
10175 | 12935=>'L', | ||
10176 | 12936=>'L', | ||
10177 | 12937=>'L', | ||
10178 | 12938=>'L', | ||
10179 | 12939=>'L', | ||
10180 | 12940=>'L', | ||
10181 | 12941=>'L', | ||
10182 | 12942=>'L', | ||
10183 | 12943=>'L', | ||
10184 | 12944=>'L', | ||
10185 | 12945=>'L', | ||
10186 | 12946=>'L', | ||
10187 | 12947=>'L', | ||
10188 | 12948=>'L', | ||
10189 | 12949=>'L', | ||
10190 | 12950=>'L', | ||
10191 | 12951=>'L', | ||
10192 | 12952=>'L', | ||
10193 | 12953=>'L', | ||
10194 | 12954=>'L', | ||
10195 | 12955=>'L', | ||
10196 | 12956=>'L', | ||
10197 | 12957=>'L', | ||
10198 | 12958=>'L', | ||
10199 | 12959=>'L', | ||
10200 | 12960=>'L', | ||
10201 | 12961=>'L', | ||
10202 | 12962=>'L', | ||
10203 | 12963=>'L', | ||
10204 | 12964=>'L', | ||
10205 | 12965=>'L', | ||
10206 | 12966=>'L', | ||
10207 | 12967=>'L', | ||
10208 | 12968=>'L', | ||
10209 | 12969=>'L', | ||
10210 | 12970=>'L', | ||
10211 | 12971=>'L', | ||
10212 | 12972=>'L', | ||
10213 | 12973=>'L', | ||
10214 | 12974=>'L', | ||
10215 | 12975=>'L', | ||
10216 | 12976=>'L', | ||
10217 | 12977=>'ON', | ||
10218 | 12978=>'ON', | ||
10219 | 12979=>'ON', | ||
10220 | 12980=>'ON', | ||
10221 | 12981=>'ON', | ||
10222 | 12982=>'ON', | ||
10223 | 12983=>'ON', | ||
10224 | 12984=>'ON', | ||
10225 | 12985=>'ON', | ||
10226 | 12986=>'ON', | ||
10227 | 12987=>'ON', | ||
10228 | 12988=>'ON', | ||
10229 | 12989=>'ON', | ||
10230 | 12990=>'ON', | ||
10231 | 12991=>'ON', | ||
10232 | 12992=>'L', | ||
10233 | 12993=>'L', | ||
10234 | 12994=>'L', | ||
10235 | 12995=>'L', | ||
10236 | 12996=>'L', | ||
10237 | 12997=>'L', | ||
10238 | 12998=>'L', | ||
10239 | 12999=>'L', | ||
10240 | 13000=>'L', | ||
10241 | 13001=>'L', | ||
10242 | 13002=>'L', | ||
10243 | 13003=>'L', | ||
10244 | 13004=>'ON', | ||
10245 | 13005=>'ON', | ||
10246 | 13006=>'ON', | ||
10247 | 13007=>'ON', | ||
10248 | 13008=>'L', | ||
10249 | 13009=>'L', | ||
10250 | 13010=>'L', | ||
10251 | 13011=>'L', | ||
10252 | 13012=>'L', | ||
10253 | 13013=>'L', | ||
10254 | 13014=>'L', | ||
10255 | 13015=>'L', | ||
10256 | 13016=>'L', | ||
10257 | 13017=>'L', | ||
10258 | 13018=>'L', | ||
10259 | 13019=>'L', | ||
10260 | 13020=>'L', | ||
10261 | 13021=>'L', | ||
10262 | 13022=>'L', | ||
10263 | 13023=>'L', | ||
10264 | 13024=>'L', | ||
10265 | 13025=>'L', | ||
10266 | 13026=>'L', | ||
10267 | 13027=>'L', | ||
10268 | 13028=>'L', | ||
10269 | 13029=>'L', | ||
10270 | 13030=>'L', | ||
10271 | 13031=>'L', | ||
10272 | 13032=>'L', | ||
10273 | 13033=>'L', | ||
10274 | 13034=>'L', | ||
10275 | 13035=>'L', | ||
10276 | 13036=>'L', | ||
10277 | 13037=>'L', | ||
10278 | 13038=>'L', | ||
10279 | 13039=>'L', | ||
10280 | 13040=>'L', | ||
10281 | 13041=>'L', | ||
10282 | 13042=>'L', | ||
10283 | 13043=>'L', | ||
10284 | 13044=>'L', | ||
10285 | 13045=>'L', | ||
10286 | 13046=>'L', | ||
10287 | 13047=>'L', | ||
10288 | 13048=>'L', | ||
10289 | 13049=>'L', | ||
10290 | 13050=>'L', | ||
10291 | 13051=>'L', | ||
10292 | 13052=>'L', | ||
10293 | 13053=>'L', | ||
10294 | 13054=>'L', | ||
10295 | 13056=>'L', | ||
10296 | 13057=>'L', | ||
10297 | 13058=>'L', | ||
10298 | 13059=>'L', | ||
10299 | 13060=>'L', | ||
10300 | 13061=>'L', | ||
10301 | 13062=>'L', | ||
10302 | 13063=>'L', | ||
10303 | 13064=>'L', | ||
10304 | 13065=>'L', | ||
10305 | 13066=>'L', | ||
10306 | 13067=>'L', | ||
10307 | 13068=>'L', | ||
10308 | 13069=>'L', | ||
10309 | 13070=>'L', | ||
10310 | 13071=>'L', | ||
10311 | 13072=>'L', | ||
10312 | 13073=>'L', | ||
10313 | 13074=>'L', | ||
10314 | 13075=>'L', | ||
10315 | 13076=>'L', | ||
10316 | 13077=>'L', | ||
10317 | 13078=>'L', | ||
10318 | 13079=>'L', | ||
10319 | 13080=>'L', | ||
10320 | 13081=>'L', | ||
10321 | 13082=>'L', | ||
10322 | 13083=>'L', | ||
10323 | 13084=>'L', | ||
10324 | 13085=>'L', | ||
10325 | 13086=>'L', | ||
10326 | 13087=>'L', | ||
10327 | 13088=>'L', | ||
10328 | 13089=>'L', | ||
10329 | 13090=>'L', | ||
10330 | 13091=>'L', | ||
10331 | 13092=>'L', | ||
10332 | 13093=>'L', | ||
10333 | 13094=>'L', | ||
10334 | 13095=>'L', | ||
10335 | 13096=>'L', | ||
10336 | 13097=>'L', | ||
10337 | 13098=>'L', | ||
10338 | 13099=>'L', | ||
10339 | 13100=>'L', | ||
10340 | 13101=>'L', | ||
10341 | 13102=>'L', | ||
10342 | 13103=>'L', | ||
10343 | 13104=>'L', | ||
10344 | 13105=>'L', | ||
10345 | 13106=>'L', | ||
10346 | 13107=>'L', | ||
10347 | 13108=>'L', | ||
10348 | 13109=>'L', | ||
10349 | 13110=>'L', | ||
10350 | 13111=>'L', | ||
10351 | 13112=>'L', | ||
10352 | 13113=>'L', | ||
10353 | 13114=>'L', | ||
10354 | 13115=>'L', | ||
10355 | 13116=>'L', | ||
10356 | 13117=>'L', | ||
10357 | 13118=>'L', | ||
10358 | 13119=>'L', | ||
10359 | 13120=>'L', | ||
10360 | 13121=>'L', | ||
10361 | 13122=>'L', | ||
10362 | 13123=>'L', | ||
10363 | 13124=>'L', | ||
10364 | 13125=>'L', | ||
10365 | 13126=>'L', | ||
10366 | 13127=>'L', | ||
10367 | 13128=>'L', | ||
10368 | 13129=>'L', | ||
10369 | 13130=>'L', | ||
10370 | 13131=>'L', | ||
10371 | 13132=>'L', | ||
10372 | 13133=>'L', | ||
10373 | 13134=>'L', | ||
10374 | 13135=>'L', | ||
10375 | 13136=>'L', | ||
10376 | 13137=>'L', | ||
10377 | 13138=>'L', | ||
10378 | 13139=>'L', | ||
10379 | 13140=>'L', | ||
10380 | 13141=>'L', | ||
10381 | 13142=>'L', | ||
10382 | 13143=>'L', | ||
10383 | 13144=>'L', | ||
10384 | 13145=>'L', | ||
10385 | 13146=>'L', | ||
10386 | 13147=>'L', | ||
10387 | 13148=>'L', | ||
10388 | 13149=>'L', | ||
10389 | 13150=>'L', | ||
10390 | 13151=>'L', | ||
10391 | 13152=>'L', | ||
10392 | 13153=>'L', | ||
10393 | 13154=>'L', | ||
10394 | 13155=>'L', | ||
10395 | 13156=>'L', | ||
10396 | 13157=>'L', | ||
10397 | 13158=>'L', | ||
10398 | 13159=>'L', | ||
10399 | 13160=>'L', | ||
10400 | 13161=>'L', | ||
10401 | 13162=>'L', | ||
10402 | 13163=>'L', | ||
10403 | 13164=>'L', | ||
10404 | 13165=>'L', | ||
10405 | 13166=>'L', | ||
10406 | 13167=>'L', | ||
10407 | 13168=>'L', | ||
10408 | 13169=>'L', | ||
10409 | 13170=>'L', | ||
10410 | 13171=>'L', | ||
10411 | 13172=>'L', | ||
10412 | 13173=>'L', | ||
10413 | 13174=>'L', | ||
10414 | 13175=>'ON', | ||
10415 | 13176=>'ON', | ||
10416 | 13177=>'ON', | ||
10417 | 13178=>'ON', | ||
10418 | 13179=>'L', | ||
10419 | 13180=>'L', | ||
10420 | 13181=>'L', | ||
10421 | 13182=>'L', | ||
10422 | 13183=>'L', | ||
10423 | 13184=>'L', | ||
10424 | 13185=>'L', | ||
10425 | 13186=>'L', | ||
10426 | 13187=>'L', | ||
10427 | 13188=>'L', | ||
10428 | 13189=>'L', | ||
10429 | 13190=>'L', | ||
10430 | 13191=>'L', | ||
10431 | 13192=>'L', | ||
10432 | 13193=>'L', | ||
10433 | 13194=>'L', | ||
10434 | 13195=>'L', | ||
10435 | 13196=>'L', | ||
10436 | 13197=>'L', | ||
10437 | 13198=>'L', | ||
10438 | 13199=>'L', | ||
10439 | 13200=>'L', | ||
10440 | 13201=>'L', | ||
10441 | 13202=>'L', | ||
10442 | 13203=>'L', | ||
10443 | 13204=>'L', | ||
10444 | 13205=>'L', | ||
10445 | 13206=>'L', | ||
10446 | 13207=>'L', | ||
10447 | 13208=>'L', | ||
10448 | 13209=>'L', | ||
10449 | 13210=>'L', | ||
10450 | 13211=>'L', | ||
10451 | 13212=>'L', | ||
10452 | 13213=>'L', | ||
10453 | 13214=>'L', | ||
10454 | 13215=>'L', | ||
10455 | 13216=>'L', | ||
10456 | 13217=>'L', | ||
10457 | 13218=>'L', | ||
10458 | 13219=>'L', | ||
10459 | 13220=>'L', | ||
10460 | 13221=>'L', | ||
10461 | 13222=>'L', | ||
10462 | 13223=>'L', | ||
10463 | 13224=>'L', | ||
10464 | 13225=>'L', | ||
10465 | 13226=>'L', | ||
10466 | 13227=>'L', | ||
10467 | 13228=>'L', | ||
10468 | 13229=>'L', | ||
10469 | 13230=>'L', | ||
10470 | 13231=>'L', | ||
10471 | 13232=>'L', | ||
10472 | 13233=>'L', | ||
10473 | 13234=>'L', | ||
10474 | 13235=>'L', | ||
10475 | 13236=>'L', | ||
10476 | 13237=>'L', | ||
10477 | 13238=>'L', | ||
10478 | 13239=>'L', | ||
10479 | 13240=>'L', | ||
10480 | 13241=>'L', | ||
10481 | 13242=>'L', | ||
10482 | 13243=>'L', | ||
10483 | 13244=>'L', | ||
10484 | 13245=>'L', | ||
10485 | 13246=>'L', | ||
10486 | 13247=>'L', | ||
10487 | 13248=>'L', | ||
10488 | 13249=>'L', | ||
10489 | 13250=>'L', | ||
10490 | 13251=>'L', | ||
10491 | 13252=>'L', | ||
10492 | 13253=>'L', | ||
10493 | 13254=>'L', | ||
10494 | 13255=>'L', | ||
10495 | 13256=>'L', | ||
10496 | 13257=>'L', | ||
10497 | 13258=>'L', | ||
10498 | 13259=>'L', | ||
10499 | 13260=>'L', | ||
10500 | 13261=>'L', | ||
10501 | 13262=>'L', | ||
10502 | 13263=>'L', | ||
10503 | 13264=>'L', | ||
10504 | 13265=>'L', | ||
10505 | 13266=>'L', | ||
10506 | 13267=>'L', | ||
10507 | 13268=>'L', | ||
10508 | 13269=>'L', | ||
10509 | 13270=>'L', | ||
10510 | 13271=>'L', | ||
10511 | 13272=>'L', | ||
10512 | 13273=>'L', | ||
10513 | 13274=>'L', | ||
10514 | 13275=>'L', | ||
10515 | 13276=>'L', | ||
10516 | 13277=>'L', | ||
10517 | 13278=>'ON', | ||
10518 | 13279=>'ON', | ||
10519 | 13280=>'L', | ||
10520 | 13281=>'L', | ||
10521 | 13282=>'L', | ||
10522 | 13283=>'L', | ||
10523 | 13284=>'L', | ||
10524 | 13285=>'L', | ||
10525 | 13286=>'L', | ||
10526 | 13287=>'L', | ||
10527 | 13288=>'L', | ||
10528 | 13289=>'L', | ||
10529 | 13290=>'L', | ||
10530 | 13291=>'L', | ||
10531 | 13292=>'L', | ||
10532 | 13293=>'L', | ||
10533 | 13294=>'L', | ||
10534 | 13295=>'L', | ||
10535 | 13296=>'L', | ||
10536 | 13297=>'L', | ||
10537 | 13298=>'L', | ||
10538 | 13299=>'L', | ||
10539 | 13300=>'L', | ||
10540 | 13301=>'L', | ||
10541 | 13302=>'L', | ||
10542 | 13303=>'L', | ||
10543 | 13304=>'L', | ||
10544 | 13305=>'L', | ||
10545 | 13306=>'L', | ||
10546 | 13307=>'L', | ||
10547 | 13308=>'L', | ||
10548 | 13309=>'L', | ||
10549 | 13310=>'L', | ||
10550 | 13311=>'ON', | ||
10551 | 13312=>'L', | ||
10552 | 19893=>'L', | ||
10553 | 19904=>'ON', | ||
10554 | 19905=>'ON', | ||
10555 | 19906=>'ON', | ||
10556 | 19907=>'ON', | ||
10557 | 19908=>'ON', | ||
10558 | 19909=>'ON', | ||
10559 | 19910=>'ON', | ||
10560 | 19911=>'ON', | ||
10561 | 19912=>'ON', | ||
10562 | 19913=>'ON', | ||
10563 | 19914=>'ON', | ||
10564 | 19915=>'ON', | ||
10565 | 19916=>'ON', | ||
10566 | 19917=>'ON', | ||
10567 | 19918=>'ON', | ||
10568 | 19919=>'ON', | ||
10569 | 19920=>'ON', | ||
10570 | 19921=>'ON', | ||
10571 | 19922=>'ON', | ||
10572 | 19923=>'ON', | ||
10573 | 19924=>'ON', | ||
10574 | 19925=>'ON', | ||
10575 | 19926=>'ON', | ||
10576 | 19927=>'ON', | ||
10577 | 19928=>'ON', | ||
10578 | 19929=>'ON', | ||
10579 | 19930=>'ON', | ||
10580 | 19931=>'ON', | ||
10581 | 19932=>'ON', | ||
10582 | 19933=>'ON', | ||
10583 | 19934=>'ON', | ||
10584 | 19935=>'ON', | ||
10585 | 19936=>'ON', | ||
10586 | 19937=>'ON', | ||
10587 | 19938=>'ON', | ||
10588 | 19939=>'ON', | ||
10589 | 19940=>'ON', | ||
10590 | 19941=>'ON', | ||
10591 | 19942=>'ON', | ||
10592 | 19943=>'ON', | ||
10593 | 19944=>'ON', | ||
10594 | 19945=>'ON', | ||
10595 | 19946=>'ON', | ||
10596 | 19947=>'ON', | ||
10597 | 19948=>'ON', | ||
10598 | 19949=>'ON', | ||
10599 | 19950=>'ON', | ||
10600 | 19951=>'ON', | ||
10601 | 19952=>'ON', | ||
10602 | 19953=>'ON', | ||
10603 | 19954=>'ON', | ||
10604 | 19955=>'ON', | ||
10605 | 19956=>'ON', | ||
10606 | 19957=>'ON', | ||
10607 | 19958=>'ON', | ||
10608 | 19959=>'ON', | ||
10609 | 19960=>'ON', | ||
10610 | 19961=>'ON', | ||
10611 | 19962=>'ON', | ||
10612 | 19963=>'ON', | ||
10613 | 19964=>'ON', | ||
10614 | 19965=>'ON', | ||
10615 | 19966=>'ON', | ||
10616 | 19967=>'ON', | ||
10617 | 19968=>'L', | ||
10618 | 40891=>'L', | ||
10619 | 40960=>'L', | ||
10620 | 40961=>'L', | ||
10621 | 40962=>'L', | ||
10622 | 40963=>'L', | ||
10623 | 40964=>'L', | ||
10624 | 40965=>'L', | ||
10625 | 40966=>'L', | ||
10626 | 40967=>'L', | ||
10627 | 40968=>'L', | ||
10628 | 40969=>'L', | ||
10629 | 40970=>'L', | ||
10630 | 40971=>'L', | ||
10631 | 40972=>'L', | ||
10632 | 40973=>'L', | ||
10633 | 40974=>'L', | ||
10634 | 40975=>'L', | ||
10635 | 40976=>'L', | ||
10636 | 40977=>'L', | ||
10637 | 40978=>'L', | ||
10638 | 40979=>'L', | ||
10639 | 40980=>'L', | ||
10640 | 40981=>'L', | ||
10641 | 40982=>'L', | ||
10642 | 40983=>'L', | ||
10643 | 40984=>'L', | ||
10644 | 40985=>'L', | ||
10645 | 40986=>'L', | ||
10646 | 40987=>'L', | ||
10647 | 40988=>'L', | ||
10648 | 40989=>'L', | ||
10649 | 40990=>'L', | ||
10650 | 40991=>'L', | ||
10651 | 40992=>'L', | ||
10652 | 40993=>'L', | ||
10653 | 40994=>'L', | ||
10654 | 40995=>'L', | ||
10655 | 40996=>'L', | ||
10656 | 40997=>'L', | ||
10657 | 40998=>'L', | ||
10658 | 40999=>'L', | ||
10659 | 41000=>'L', | ||
10660 | 41001=>'L', | ||
10661 | 41002=>'L', | ||
10662 | 41003=>'L', | ||
10663 | 41004=>'L', | ||
10664 | 41005=>'L', | ||
10665 | 41006=>'L', | ||
10666 | 41007=>'L', | ||
10667 | 41008=>'L', | ||
10668 | 41009=>'L', | ||
10669 | 41010=>'L', | ||
10670 | 41011=>'L', | ||
10671 | 41012=>'L', | ||
10672 | 41013=>'L', | ||
10673 | 41014=>'L', | ||
10674 | 41015=>'L', | ||
10675 | 41016=>'L', | ||
10676 | 41017=>'L', | ||
10677 | 41018=>'L', | ||
10678 | 41019=>'L', | ||
10679 | 41020=>'L', | ||
10680 | 41021=>'L', | ||
10681 | 41022=>'L', | ||
10682 | 41023=>'L', | ||
10683 | 41024=>'L', | ||
10684 | 41025=>'L', | ||
10685 | 41026=>'L', | ||
10686 | 41027=>'L', | ||
10687 | 41028=>'L', | ||
10688 | 41029=>'L', | ||
10689 | 41030=>'L', | ||
10690 | 41031=>'L', | ||
10691 | 41032=>'L', | ||
10692 | 41033=>'L', | ||
10693 | 41034=>'L', | ||
10694 | 41035=>'L', | ||
10695 | 41036=>'L', | ||
10696 | 41037=>'L', | ||
10697 | 41038=>'L', | ||
10698 | 41039=>'L', | ||
10699 | 41040=>'L', | ||
10700 | 41041=>'L', | ||
10701 | 41042=>'L', | ||
10702 | 41043=>'L', | ||
10703 | 41044=>'L', | ||
10704 | 41045=>'L', | ||
10705 | 41046=>'L', | ||
10706 | 41047=>'L', | ||
10707 | 41048=>'L', | ||
10708 | 41049=>'L', | ||
10709 | 41050=>'L', | ||
10710 | 41051=>'L', | ||
10711 | 41052=>'L', | ||
10712 | 41053=>'L', | ||
10713 | 41054=>'L', | ||
10714 | 41055=>'L', | ||
10715 | 41056=>'L', | ||
10716 | 41057=>'L', | ||
10717 | 41058=>'L', | ||
10718 | 41059=>'L', | ||
10719 | 41060=>'L', | ||
10720 | 41061=>'L', | ||
10721 | 41062=>'L', | ||
10722 | 41063=>'L', | ||
10723 | 41064=>'L', | ||
10724 | 41065=>'L', | ||
10725 | 41066=>'L', | ||
10726 | 41067=>'L', | ||
10727 | 41068=>'L', | ||
10728 | 41069=>'L', | ||
10729 | 41070=>'L', | ||
10730 | 41071=>'L', | ||
10731 | 41072=>'L', | ||
10732 | 41073=>'L', | ||
10733 | 41074=>'L', | ||
10734 | 41075=>'L', | ||
10735 | 41076=>'L', | ||
10736 | 41077=>'L', | ||
10737 | 41078=>'L', | ||
10738 | 41079=>'L', | ||
10739 | 41080=>'L', | ||
10740 | 41081=>'L', | ||
10741 | 41082=>'L', | ||
10742 | 41083=>'L', | ||
10743 | 41084=>'L', | ||
10744 | 41085=>'L', | ||
10745 | 41086=>'L', | ||
10746 | 41087=>'L', | ||
10747 | 41088=>'L', | ||
10748 | 41089=>'L', | ||
10749 | 41090=>'L', | ||
10750 | 41091=>'L', | ||
10751 | 41092=>'L', | ||
10752 | 41093=>'L', | ||
10753 | 41094=>'L', | ||
10754 | 41095=>'L', | ||
10755 | 41096=>'L', | ||
10756 | 41097=>'L', | ||
10757 | 41098=>'L', | ||
10758 | 41099=>'L', | ||
10759 | 41100=>'L', | ||
10760 | 41101=>'L', | ||
10761 | 41102=>'L', | ||
10762 | 41103=>'L', | ||
10763 | 41104=>'L', | ||
10764 | 41105=>'L', | ||
10765 | 41106=>'L', | ||
10766 | 41107=>'L', | ||
10767 | 41108=>'L', | ||
10768 | 41109=>'L', | ||
10769 | 41110=>'L', | ||
10770 | 41111=>'L', | ||
10771 | 41112=>'L', | ||
10772 | 41113=>'L', | ||
10773 | 41114=>'L', | ||
10774 | 41115=>'L', | ||
10775 | 41116=>'L', | ||
10776 | 41117=>'L', | ||
10777 | 41118=>'L', | ||
10778 | 41119=>'L', | ||
10779 | 41120=>'L', | ||
10780 | 41121=>'L', | ||
10781 | 41122=>'L', | ||
10782 | 41123=>'L', | ||
10783 | 41124=>'L', | ||
10784 | 41125=>'L', | ||
10785 | 41126=>'L', | ||
10786 | 41127=>'L', | ||
10787 | 41128=>'L', | ||
10788 | 41129=>'L', | ||
10789 | 41130=>'L', | ||
10790 | 41131=>'L', | ||
10791 | 41132=>'L', | ||
10792 | 41133=>'L', | ||
10793 | 41134=>'L', | ||
10794 | 41135=>'L', | ||
10795 | 41136=>'L', | ||
10796 | 41137=>'L', | ||
10797 | 41138=>'L', | ||
10798 | 41139=>'L', | ||
10799 | 41140=>'L', | ||
10800 | 41141=>'L', | ||
10801 | 41142=>'L', | ||
10802 | 41143=>'L', | ||
10803 | 41144=>'L', | ||
10804 | 41145=>'L', | ||
10805 | 41146=>'L', | ||
10806 | 41147=>'L', | ||
10807 | 41148=>'L', | ||
10808 | 41149=>'L', | ||
10809 | 41150=>'L', | ||
10810 | 41151=>'L', | ||
10811 | 41152=>'L', | ||
10812 | 41153=>'L', | ||
10813 | 41154=>'L', | ||
10814 | 41155=>'L', | ||
10815 | 41156=>'L', | ||
10816 | 41157=>'L', | ||
10817 | 41158=>'L', | ||
10818 | 41159=>'L', | ||
10819 | 41160=>'L', | ||
10820 | 41161=>'L', | ||
10821 | 41162=>'L', | ||
10822 | 41163=>'L', | ||
10823 | 41164=>'L', | ||
10824 | 41165=>'L', | ||
10825 | 41166=>'L', | ||
10826 | 41167=>'L', | ||
10827 | 41168=>'L', | ||
10828 | 41169=>'L', | ||
10829 | 41170=>'L', | ||
10830 | 41171=>'L', | ||
10831 | 41172=>'L', | ||
10832 | 41173=>'L', | ||
10833 | 41174=>'L', | ||
10834 | 41175=>'L', | ||
10835 | 41176=>'L', | ||
10836 | 41177=>'L', | ||
10837 | 41178=>'L', | ||
10838 | 41179=>'L', | ||
10839 | 41180=>'L', | ||
10840 | 41181=>'L', | ||
10841 | 41182=>'L', | ||
10842 | 41183=>'L', | ||
10843 | 41184=>'L', | ||
10844 | 41185=>'L', | ||
10845 | 41186=>'L', | ||
10846 | 41187=>'L', | ||
10847 | 41188=>'L', | ||
10848 | 41189=>'L', | ||
10849 | 41190=>'L', | ||
10850 | 41191=>'L', | ||
10851 | 41192=>'L', | ||
10852 | 41193=>'L', | ||
10853 | 41194=>'L', | ||
10854 | 41195=>'L', | ||
10855 | 41196=>'L', | ||
10856 | 41197=>'L', | ||
10857 | 41198=>'L', | ||
10858 | 41199=>'L', | ||
10859 | 41200=>'L', | ||
10860 | 41201=>'L', | ||
10861 | 41202=>'L', | ||
10862 | 41203=>'L', | ||
10863 | 41204=>'L', | ||
10864 | 41205=>'L', | ||
10865 | 41206=>'L', | ||
10866 | 41207=>'L', | ||
10867 | 41208=>'L', | ||
10868 | 41209=>'L', | ||
10869 | 41210=>'L', | ||
10870 | 41211=>'L', | ||
10871 | 41212=>'L', | ||
10872 | 41213=>'L', | ||
10873 | 41214=>'L', | ||
10874 | 41215=>'L', | ||
10875 | 41216=>'L', | ||
10876 | 41217=>'L', | ||
10877 | 41218=>'L', | ||
10878 | 41219=>'L', | ||
10879 | 41220=>'L', | ||
10880 | 41221=>'L', | ||
10881 | 41222=>'L', | ||
10882 | 41223=>'L', | ||
10883 | 41224=>'L', | ||
10884 | 41225=>'L', | ||
10885 | 41226=>'L', | ||
10886 | 41227=>'L', | ||
10887 | 41228=>'L', | ||
10888 | 41229=>'L', | ||
10889 | 41230=>'L', | ||
10890 | 41231=>'L', | ||
10891 | 41232=>'L', | ||
10892 | 41233=>'L', | ||
10893 | 41234=>'L', | ||
10894 | 41235=>'L', | ||
10895 | 41236=>'L', | ||
10896 | 41237=>'L', | ||
10897 | 41238=>'L', | ||
10898 | 41239=>'L', | ||
10899 | 41240=>'L', | ||
10900 | 41241=>'L', | ||
10901 | 41242=>'L', | ||
10902 | 41243=>'L', | ||
10903 | 41244=>'L', | ||
10904 | 41245=>'L', | ||
10905 | 41246=>'L', | ||
10906 | 41247=>'L', | ||
10907 | 41248=>'L', | ||
10908 | 41249=>'L', | ||
10909 | 41250=>'L', | ||
10910 | 41251=>'L', | ||
10911 | 41252=>'L', | ||
10912 | 41253=>'L', | ||
10913 | 41254=>'L', | ||
10914 | 41255=>'L', | ||
10915 | 41256=>'L', | ||
10916 | 41257=>'L', | ||
10917 | 41258=>'L', | ||
10918 | 41259=>'L', | ||
10919 | 41260=>'L', | ||
10920 | 41261=>'L', | ||
10921 | 41262=>'L', | ||
10922 | 41263=>'L', | ||
10923 | 41264=>'L', | ||
10924 | 41265=>'L', | ||
10925 | 41266=>'L', | ||
10926 | 41267=>'L', | ||
10927 | 41268=>'L', | ||
10928 | 41269=>'L', | ||
10929 | 41270=>'L', | ||
10930 | 41271=>'L', | ||
10931 | 41272=>'L', | ||
10932 | 41273=>'L', | ||
10933 | 41274=>'L', | ||
10934 | 41275=>'L', | ||
10935 | 41276=>'L', | ||
10936 | 41277=>'L', | ||
10937 | 41278=>'L', | ||
10938 | 41279=>'L', | ||
10939 | 41280=>'L', | ||
10940 | 41281=>'L', | ||
10941 | 41282=>'L', | ||
10942 | 41283=>'L', | ||
10943 | 41284=>'L', | ||
10944 | 41285=>'L', | ||
10945 | 41286=>'L', | ||
10946 | 41287=>'L', | ||
10947 | 41288=>'L', | ||
10948 | 41289=>'L', | ||
10949 | 41290=>'L', | ||
10950 | 41291=>'L', | ||
10951 | 41292=>'L', | ||
10952 | 41293=>'L', | ||
10953 | 41294=>'L', | ||
10954 | 41295=>'L', | ||
10955 | 41296=>'L', | ||
10956 | 41297=>'L', | ||
10957 | 41298=>'L', | ||
10958 | 41299=>'L', | ||
10959 | 41300=>'L', | ||
10960 | 41301=>'L', | ||
10961 | 41302=>'L', | ||
10962 | 41303=>'L', | ||
10963 | 41304=>'L', | ||
10964 | 41305=>'L', | ||
10965 | 41306=>'L', | ||
10966 | 41307=>'L', | ||
10967 | 41308=>'L', | ||
10968 | 41309=>'L', | ||
10969 | 41310=>'L', | ||
10970 | 41311=>'L', | ||
10971 | 41312=>'L', | ||
10972 | 41313=>'L', | ||
10973 | 41314=>'L', | ||
10974 | 41315=>'L', | ||
10975 | 41316=>'L', | ||
10976 | 41317=>'L', | ||
10977 | 41318=>'L', | ||
10978 | 41319=>'L', | ||
10979 | 41320=>'L', | ||
10980 | 41321=>'L', | ||
10981 | 41322=>'L', | ||
10982 | 41323=>'L', | ||
10983 | 41324=>'L', | ||
10984 | 41325=>'L', | ||
10985 | 41326=>'L', | ||
10986 | 41327=>'L', | ||
10987 | 41328=>'L', | ||
10988 | 41329=>'L', | ||
10989 | 41330=>'L', | ||
10990 | 41331=>'L', | ||
10991 | 41332=>'L', | ||
10992 | 41333=>'L', | ||
10993 | 41334=>'L', | ||
10994 | 41335=>'L', | ||
10995 | 41336=>'L', | ||
10996 | 41337=>'L', | ||
10997 | 41338=>'L', | ||
10998 | 41339=>'L', | ||
10999 | 41340=>'L', | ||
11000 | 41341=>'L', | ||
11001 | 41342=>'L', | ||
11002 | 41343=>'L', | ||
11003 | 41344=>'L', | ||
11004 | 41345=>'L', | ||
11005 | 41346=>'L', | ||
11006 | 41347=>'L', | ||
11007 | 41348=>'L', | ||
11008 | 41349=>'L', | ||
11009 | 41350=>'L', | ||
11010 | 41351=>'L', | ||
11011 | 41352=>'L', | ||
11012 | 41353=>'L', | ||
11013 | 41354=>'L', | ||
11014 | 41355=>'L', | ||
11015 | 41356=>'L', | ||
11016 | 41357=>'L', | ||
11017 | 41358=>'L', | ||
11018 | 41359=>'L', | ||
11019 | 41360=>'L', | ||
11020 | 41361=>'L', | ||
11021 | 41362=>'L', | ||
11022 | 41363=>'L', | ||
11023 | 41364=>'L', | ||
11024 | 41365=>'L', | ||
11025 | 41366=>'L', | ||
11026 | 41367=>'L', | ||
11027 | 41368=>'L', | ||
11028 | 41369=>'L', | ||
11029 | 41370=>'L', | ||
11030 | 41371=>'L', | ||
11031 | 41372=>'L', | ||
11032 | 41373=>'L', | ||
11033 | 41374=>'L', | ||
11034 | 41375=>'L', | ||
11035 | 41376=>'L', | ||
11036 | 41377=>'L', | ||
11037 | 41378=>'L', | ||
11038 | 41379=>'L', | ||
11039 | 41380=>'L', | ||
11040 | 41381=>'L', | ||
11041 | 41382=>'L', | ||
11042 | 41383=>'L', | ||
11043 | 41384=>'L', | ||
11044 | 41385=>'L', | ||
11045 | 41386=>'L', | ||
11046 | 41387=>'L', | ||
11047 | 41388=>'L', | ||
11048 | 41389=>'L', | ||
11049 | 41390=>'L', | ||
11050 | 41391=>'L', | ||
11051 | 41392=>'L', | ||
11052 | 41393=>'L', | ||
11053 | 41394=>'L', | ||
11054 | 41395=>'L', | ||
11055 | 41396=>'L', | ||
11056 | 41397=>'L', | ||
11057 | 41398=>'L', | ||
11058 | 41399=>'L', | ||
11059 | 41400=>'L', | ||
11060 | 41401=>'L', | ||
11061 | 41402=>'L', | ||
11062 | 41403=>'L', | ||
11063 | 41404=>'L', | ||
11064 | 41405=>'L', | ||
11065 | 41406=>'L', | ||
11066 | 41407=>'L', | ||
11067 | 41408=>'L', | ||
11068 | 41409=>'L', | ||
11069 | 41410=>'L', | ||
11070 | 41411=>'L', | ||
11071 | 41412=>'L', | ||
11072 | 41413=>'L', | ||
11073 | 41414=>'L', | ||
11074 | 41415=>'L', | ||
11075 | 41416=>'L', | ||
11076 | 41417=>'L', | ||
11077 | 41418=>'L', | ||
11078 | 41419=>'L', | ||
11079 | 41420=>'L', | ||
11080 | 41421=>'L', | ||
11081 | 41422=>'L', | ||
11082 | 41423=>'L', | ||
11083 | 41424=>'L', | ||
11084 | 41425=>'L', | ||
11085 | 41426=>'L', | ||
11086 | 41427=>'L', | ||
11087 | 41428=>'L', | ||
11088 | 41429=>'L', | ||
11089 | 41430=>'L', | ||
11090 | 41431=>'L', | ||
11091 | 41432=>'L', | ||
11092 | 41433=>'L', | ||
11093 | 41434=>'L', | ||
11094 | 41435=>'L', | ||
11095 | 41436=>'L', | ||
11096 | 41437=>'L', | ||
11097 | 41438=>'L', | ||
11098 | 41439=>'L', | ||
11099 | 41440=>'L', | ||
11100 | 41441=>'L', | ||
11101 | 41442=>'L', | ||
11102 | 41443=>'L', | ||
11103 | 41444=>'L', | ||
11104 | 41445=>'L', | ||
11105 | 41446=>'L', | ||
11106 | 41447=>'L', | ||
11107 | 41448=>'L', | ||
11108 | 41449=>'L', | ||
11109 | 41450=>'L', | ||
11110 | 41451=>'L', | ||
11111 | 41452=>'L', | ||
11112 | 41453=>'L', | ||
11113 | 41454=>'L', | ||
11114 | 41455=>'L', | ||
11115 | 41456=>'L', | ||
11116 | 41457=>'L', | ||
11117 | 41458=>'L', | ||
11118 | 41459=>'L', | ||
11119 | 41460=>'L', | ||
11120 | 41461=>'L', | ||
11121 | 41462=>'L', | ||
11122 | 41463=>'L', | ||
11123 | 41464=>'L', | ||
11124 | 41465=>'L', | ||
11125 | 41466=>'L', | ||
11126 | 41467=>'L', | ||
11127 | 41468=>'L', | ||
11128 | 41469=>'L', | ||
11129 | 41470=>'L', | ||
11130 | 41471=>'L', | ||
11131 | 41472=>'L', | ||
11132 | 41473=>'L', | ||
11133 | 41474=>'L', | ||
11134 | 41475=>'L', | ||
11135 | 41476=>'L', | ||
11136 | 41477=>'L', | ||
11137 | 41478=>'L', | ||
11138 | 41479=>'L', | ||
11139 | 41480=>'L', | ||
11140 | 41481=>'L', | ||
11141 | 41482=>'L', | ||
11142 | 41483=>'L', | ||
11143 | 41484=>'L', | ||
11144 | 41485=>'L', | ||
11145 | 41486=>'L', | ||
11146 | 41487=>'L', | ||
11147 | 41488=>'L', | ||
11148 | 41489=>'L', | ||
11149 | 41490=>'L', | ||
11150 | 41491=>'L', | ||
11151 | 41492=>'L', | ||
11152 | 41493=>'L', | ||
11153 | 41494=>'L', | ||
11154 | 41495=>'L', | ||
11155 | 41496=>'L', | ||
11156 | 41497=>'L', | ||
11157 | 41498=>'L', | ||
11158 | 41499=>'L', | ||
11159 | 41500=>'L', | ||
11160 | 41501=>'L', | ||
11161 | 41502=>'L', | ||
11162 | 41503=>'L', | ||
11163 | 41504=>'L', | ||
11164 | 41505=>'L', | ||
11165 | 41506=>'L', | ||
11166 | 41507=>'L', | ||
11167 | 41508=>'L', | ||
11168 | 41509=>'L', | ||
11169 | 41510=>'L', | ||
11170 | 41511=>'L', | ||
11171 | 41512=>'L', | ||
11172 | 41513=>'L', | ||
11173 | 41514=>'L', | ||
11174 | 41515=>'L', | ||
11175 | 41516=>'L', | ||
11176 | 41517=>'L', | ||
11177 | 41518=>'L', | ||
11178 | 41519=>'L', | ||
11179 | 41520=>'L', | ||
11180 | 41521=>'L', | ||
11181 | 41522=>'L', | ||
11182 | 41523=>'L', | ||
11183 | 41524=>'L', | ||
11184 | 41525=>'L', | ||
11185 | 41526=>'L', | ||
11186 | 41527=>'L', | ||
11187 | 41528=>'L', | ||
11188 | 41529=>'L', | ||
11189 | 41530=>'L', | ||
11190 | 41531=>'L', | ||
11191 | 41532=>'L', | ||
11192 | 41533=>'L', | ||
11193 | 41534=>'L', | ||
11194 | 41535=>'L', | ||
11195 | 41536=>'L', | ||
11196 | 41537=>'L', | ||
11197 | 41538=>'L', | ||
11198 | 41539=>'L', | ||
11199 | 41540=>'L', | ||
11200 | 41541=>'L', | ||
11201 | 41542=>'L', | ||
11202 | 41543=>'L', | ||
11203 | 41544=>'L', | ||
11204 | 41545=>'L', | ||
11205 | 41546=>'L', | ||
11206 | 41547=>'L', | ||
11207 | 41548=>'L', | ||
11208 | 41549=>'L', | ||
11209 | 41550=>'L', | ||
11210 | 41551=>'L', | ||
11211 | 41552=>'L', | ||
11212 | 41553=>'L', | ||
11213 | 41554=>'L', | ||
11214 | 41555=>'L', | ||
11215 | 41556=>'L', | ||
11216 | 41557=>'L', | ||
11217 | 41558=>'L', | ||
11218 | 41559=>'L', | ||
11219 | 41560=>'L', | ||
11220 | 41561=>'L', | ||
11221 | 41562=>'L', | ||
11222 | 41563=>'L', | ||
11223 | 41564=>'L', | ||
11224 | 41565=>'L', | ||
11225 | 41566=>'L', | ||
11226 | 41567=>'L', | ||
11227 | 41568=>'L', | ||
11228 | 41569=>'L', | ||
11229 | 41570=>'L', | ||
11230 | 41571=>'L', | ||
11231 | 41572=>'L', | ||
11232 | 41573=>'L', | ||
11233 | 41574=>'L', | ||
11234 | 41575=>'L', | ||
11235 | 41576=>'L', | ||
11236 | 41577=>'L', | ||
11237 | 41578=>'L', | ||
11238 | 41579=>'L', | ||
11239 | 41580=>'L', | ||
11240 | 41581=>'L', | ||
11241 | 41582=>'L', | ||
11242 | 41583=>'L', | ||
11243 | 41584=>'L', | ||
11244 | 41585=>'L', | ||
11245 | 41586=>'L', | ||
11246 | 41587=>'L', | ||
11247 | 41588=>'L', | ||
11248 | 41589=>'L', | ||
11249 | 41590=>'L', | ||
11250 | 41591=>'L', | ||
11251 | 41592=>'L', | ||
11252 | 41593=>'L', | ||
11253 | 41594=>'L', | ||
11254 | 41595=>'L', | ||
11255 | 41596=>'L', | ||
11256 | 41597=>'L', | ||
11257 | 41598=>'L', | ||
11258 | 41599=>'L', | ||
11259 | 41600=>'L', | ||
11260 | 41601=>'L', | ||
11261 | 41602=>'L', | ||
11262 | 41603=>'L', | ||
11263 | 41604=>'L', | ||
11264 | 41605=>'L', | ||
11265 | 41606=>'L', | ||
11266 | 41607=>'L', | ||
11267 | 41608=>'L', | ||
11268 | 41609=>'L', | ||
11269 | 41610=>'L', | ||
11270 | 41611=>'L', | ||
11271 | 41612=>'L', | ||
11272 | 41613=>'L', | ||
11273 | 41614=>'L', | ||
11274 | 41615=>'L', | ||
11275 | 41616=>'L', | ||
11276 | 41617=>'L', | ||
11277 | 41618=>'L', | ||
11278 | 41619=>'L', | ||
11279 | 41620=>'L', | ||
11280 | 41621=>'L', | ||
11281 | 41622=>'L', | ||
11282 | 41623=>'L', | ||
11283 | 41624=>'L', | ||
11284 | 41625=>'L', | ||
11285 | 41626=>'L', | ||
11286 | 41627=>'L', | ||
11287 | 41628=>'L', | ||
11288 | 41629=>'L', | ||
11289 | 41630=>'L', | ||
11290 | 41631=>'L', | ||
11291 | 41632=>'L', | ||
11292 | 41633=>'L', | ||
11293 | 41634=>'L', | ||
11294 | 41635=>'L', | ||
11295 | 41636=>'L', | ||
11296 | 41637=>'L', | ||
11297 | 41638=>'L', | ||
11298 | 41639=>'L', | ||
11299 | 41640=>'L', | ||
11300 | 41641=>'L', | ||
11301 | 41642=>'L', | ||
11302 | 41643=>'L', | ||
11303 | 41644=>'L', | ||
11304 | 41645=>'L', | ||
11305 | 41646=>'L', | ||
11306 | 41647=>'L', | ||
11307 | 41648=>'L', | ||
11308 | 41649=>'L', | ||
11309 | 41650=>'L', | ||
11310 | 41651=>'L', | ||
11311 | 41652=>'L', | ||
11312 | 41653=>'L', | ||
11313 | 41654=>'L', | ||
11314 | 41655=>'L', | ||
11315 | 41656=>'L', | ||
11316 | 41657=>'L', | ||
11317 | 41658=>'L', | ||
11318 | 41659=>'L', | ||
11319 | 41660=>'L', | ||
11320 | 41661=>'L', | ||
11321 | 41662=>'L', | ||
11322 | 41663=>'L', | ||
11323 | 41664=>'L', | ||
11324 | 41665=>'L', | ||
11325 | 41666=>'L', | ||
11326 | 41667=>'L', | ||
11327 | 41668=>'L', | ||
11328 | 41669=>'L', | ||
11329 | 41670=>'L', | ||
11330 | 41671=>'L', | ||
11331 | 41672=>'L', | ||
11332 | 41673=>'L', | ||
11333 | 41674=>'L', | ||
11334 | 41675=>'L', | ||
11335 | 41676=>'L', | ||
11336 | 41677=>'L', | ||
11337 | 41678=>'L', | ||
11338 | 41679=>'L', | ||
11339 | 41680=>'L', | ||
11340 | 41681=>'L', | ||
11341 | 41682=>'L', | ||
11342 | 41683=>'L', | ||
11343 | 41684=>'L', | ||
11344 | 41685=>'L', | ||
11345 | 41686=>'L', | ||
11346 | 41687=>'L', | ||
11347 | 41688=>'L', | ||
11348 | 41689=>'L', | ||
11349 | 41690=>'L', | ||
11350 | 41691=>'L', | ||
11351 | 41692=>'L', | ||
11352 | 41693=>'L', | ||
11353 | 41694=>'L', | ||
11354 | 41695=>'L', | ||
11355 | 41696=>'L', | ||
11356 | 41697=>'L', | ||
11357 | 41698=>'L', | ||
11358 | 41699=>'L', | ||
11359 | 41700=>'L', | ||
11360 | 41701=>'L', | ||
11361 | 41702=>'L', | ||
11362 | 41703=>'L', | ||
11363 | 41704=>'L', | ||
11364 | 41705=>'L', | ||
11365 | 41706=>'L', | ||
11366 | 41707=>'L', | ||
11367 | 41708=>'L', | ||
11368 | 41709=>'L', | ||
11369 | 41710=>'L', | ||
11370 | 41711=>'L', | ||
11371 | 41712=>'L', | ||
11372 | 41713=>'L', | ||
11373 | 41714=>'L', | ||
11374 | 41715=>'L', | ||
11375 | 41716=>'L', | ||
11376 | 41717=>'L', | ||
11377 | 41718=>'L', | ||
11378 | 41719=>'L', | ||
11379 | 41720=>'L', | ||
11380 | 41721=>'L', | ||
11381 | 41722=>'L', | ||
11382 | 41723=>'L', | ||
11383 | 41724=>'L', | ||
11384 | 41725=>'L', | ||
11385 | 41726=>'L', | ||
11386 | 41727=>'L', | ||
11387 | 41728=>'L', | ||
11388 | 41729=>'L', | ||
11389 | 41730=>'L', | ||
11390 | 41731=>'L', | ||
11391 | 41732=>'L', | ||
11392 | 41733=>'L', | ||
11393 | 41734=>'L', | ||
11394 | 41735=>'L', | ||
11395 | 41736=>'L', | ||
11396 | 41737=>'L', | ||
11397 | 41738=>'L', | ||
11398 | 41739=>'L', | ||
11399 | 41740=>'L', | ||
11400 | 41741=>'L', | ||
11401 | 41742=>'L', | ||
11402 | 41743=>'L', | ||
11403 | 41744=>'L', | ||
11404 | 41745=>'L', | ||
11405 | 41746=>'L', | ||
11406 | 41747=>'L', | ||
11407 | 41748=>'L', | ||
11408 | 41749=>'L', | ||
11409 | 41750=>'L', | ||
11410 | 41751=>'L', | ||
11411 | 41752=>'L', | ||
11412 | 41753=>'L', | ||
11413 | 41754=>'L', | ||
11414 | 41755=>'L', | ||
11415 | 41756=>'L', | ||
11416 | 41757=>'L', | ||
11417 | 41758=>'L', | ||
11418 | 41759=>'L', | ||
11419 | 41760=>'L', | ||
11420 | 41761=>'L', | ||
11421 | 41762=>'L', | ||
11422 | 41763=>'L', | ||
11423 | 41764=>'L', | ||
11424 | 41765=>'L', | ||
11425 | 41766=>'L', | ||
11426 | 41767=>'L', | ||
11427 | 41768=>'L', | ||
11428 | 41769=>'L', | ||
11429 | 41770=>'L', | ||
11430 | 41771=>'L', | ||
11431 | 41772=>'L', | ||
11432 | 41773=>'L', | ||
11433 | 41774=>'L', | ||
11434 | 41775=>'L', | ||
11435 | 41776=>'L', | ||
11436 | 41777=>'L', | ||
11437 | 41778=>'L', | ||
11438 | 41779=>'L', | ||
11439 | 41780=>'L', | ||
11440 | 41781=>'L', | ||
11441 | 41782=>'L', | ||
11442 | 41783=>'L', | ||
11443 | 41784=>'L', | ||
11444 | 41785=>'L', | ||
11445 | 41786=>'L', | ||
11446 | 41787=>'L', | ||
11447 | 41788=>'L', | ||
11448 | 41789=>'L', | ||
11449 | 41790=>'L', | ||
11450 | 41791=>'L', | ||
11451 | 41792=>'L', | ||
11452 | 41793=>'L', | ||
11453 | 41794=>'L', | ||
11454 | 41795=>'L', | ||
11455 | 41796=>'L', | ||
11456 | 41797=>'L', | ||
11457 | 41798=>'L', | ||
11458 | 41799=>'L', | ||
11459 | 41800=>'L', | ||
11460 | 41801=>'L', | ||
11461 | 41802=>'L', | ||
11462 | 41803=>'L', | ||
11463 | 41804=>'L', | ||
11464 | 41805=>'L', | ||
11465 | 41806=>'L', | ||
11466 | 41807=>'L', | ||
11467 | 41808=>'L', | ||
11468 | 41809=>'L', | ||
11469 | 41810=>'L', | ||
11470 | 41811=>'L', | ||
11471 | 41812=>'L', | ||
11472 | 41813=>'L', | ||
11473 | 41814=>'L', | ||
11474 | 41815=>'L', | ||
11475 | 41816=>'L', | ||
11476 | 41817=>'L', | ||
11477 | 41818=>'L', | ||
11478 | 41819=>'L', | ||
11479 | 41820=>'L', | ||
11480 | 41821=>'L', | ||
11481 | 41822=>'L', | ||
11482 | 41823=>'L', | ||
11483 | 41824=>'L', | ||
11484 | 41825=>'L', | ||
11485 | 41826=>'L', | ||
11486 | 41827=>'L', | ||
11487 | 41828=>'L', | ||
11488 | 41829=>'L', | ||
11489 | 41830=>'L', | ||
11490 | 41831=>'L', | ||
11491 | 41832=>'L', | ||
11492 | 41833=>'L', | ||
11493 | 41834=>'L', | ||
11494 | 41835=>'L', | ||
11495 | 41836=>'L', | ||
11496 | 41837=>'L', | ||
11497 | 41838=>'L', | ||
11498 | 41839=>'L', | ||
11499 | 41840=>'L', | ||
11500 | 41841=>'L', | ||
11501 | 41842=>'L', | ||
11502 | 41843=>'L', | ||
11503 | 41844=>'L', | ||
11504 | 41845=>'L', | ||
11505 | 41846=>'L', | ||
11506 | 41847=>'L', | ||
11507 | 41848=>'L', | ||
11508 | 41849=>'L', | ||
11509 | 41850=>'L', | ||
11510 | 41851=>'L', | ||
11511 | 41852=>'L', | ||
11512 | 41853=>'L', | ||
11513 | 41854=>'L', | ||
11514 | 41855=>'L', | ||
11515 | 41856=>'L', | ||
11516 | 41857=>'L', | ||
11517 | 41858=>'L', | ||
11518 | 41859=>'L', | ||
11519 | 41860=>'L', | ||
11520 | 41861=>'L', | ||
11521 | 41862=>'L', | ||
11522 | 41863=>'L', | ||
11523 | 41864=>'L', | ||
11524 | 41865=>'L', | ||
11525 | 41866=>'L', | ||
11526 | 41867=>'L', | ||
11527 | 41868=>'L', | ||
11528 | 41869=>'L', | ||
11529 | 41870=>'L', | ||
11530 | 41871=>'L', | ||
11531 | 41872=>'L', | ||
11532 | 41873=>'L', | ||
11533 | 41874=>'L', | ||
11534 | 41875=>'L', | ||
11535 | 41876=>'L', | ||
11536 | 41877=>'L', | ||
11537 | 41878=>'L', | ||
11538 | 41879=>'L', | ||
11539 | 41880=>'L', | ||
11540 | 41881=>'L', | ||
11541 | 41882=>'L', | ||
11542 | 41883=>'L', | ||
11543 | 41884=>'L', | ||
11544 | 41885=>'L', | ||
11545 | 41886=>'L', | ||
11546 | 41887=>'L', | ||
11547 | 41888=>'L', | ||
11548 | 41889=>'L', | ||
11549 | 41890=>'L', | ||
11550 | 41891=>'L', | ||
11551 | 41892=>'L', | ||
11552 | 41893=>'L', | ||
11553 | 41894=>'L', | ||
11554 | 41895=>'L', | ||
11555 | 41896=>'L', | ||
11556 | 41897=>'L', | ||
11557 | 41898=>'L', | ||
11558 | 41899=>'L', | ||
11559 | 41900=>'L', | ||
11560 | 41901=>'L', | ||
11561 | 41902=>'L', | ||
11562 | 41903=>'L', | ||
11563 | 41904=>'L', | ||
11564 | 41905=>'L', | ||
11565 | 41906=>'L', | ||
11566 | 41907=>'L', | ||
11567 | 41908=>'L', | ||
11568 | 41909=>'L', | ||
11569 | 41910=>'L', | ||
11570 | 41911=>'L', | ||
11571 | 41912=>'L', | ||
11572 | 41913=>'L', | ||
11573 | 41914=>'L', | ||
11574 | 41915=>'L', | ||
11575 | 41916=>'L', | ||
11576 | 41917=>'L', | ||
11577 | 41918=>'L', | ||
11578 | 41919=>'L', | ||
11579 | 41920=>'L', | ||
11580 | 41921=>'L', | ||
11581 | 41922=>'L', | ||
11582 | 41923=>'L', | ||
11583 | 41924=>'L', | ||
11584 | 41925=>'L', | ||
11585 | 41926=>'L', | ||
11586 | 41927=>'L', | ||
11587 | 41928=>'L', | ||
11588 | 41929=>'L', | ||
11589 | 41930=>'L', | ||
11590 | 41931=>'L', | ||
11591 | 41932=>'L', | ||
11592 | 41933=>'L', | ||
11593 | 41934=>'L', | ||
11594 | 41935=>'L', | ||
11595 | 41936=>'L', | ||
11596 | 41937=>'L', | ||
11597 | 41938=>'L', | ||
11598 | 41939=>'L', | ||
11599 | 41940=>'L', | ||
11600 | 41941=>'L', | ||
11601 | 41942=>'L', | ||
11602 | 41943=>'L', | ||
11603 | 41944=>'L', | ||
11604 | 41945=>'L', | ||
11605 | 41946=>'L', | ||
11606 | 41947=>'L', | ||
11607 | 41948=>'L', | ||
11608 | 41949=>'L', | ||
11609 | 41950=>'L', | ||
11610 | 41951=>'L', | ||
11611 | 41952=>'L', | ||
11612 | 41953=>'L', | ||
11613 | 41954=>'L', | ||
11614 | 41955=>'L', | ||
11615 | 41956=>'L', | ||
11616 | 41957=>'L', | ||
11617 | 41958=>'L', | ||
11618 | 41959=>'L', | ||
11619 | 41960=>'L', | ||
11620 | 41961=>'L', | ||
11621 | 41962=>'L', | ||
11622 | 41963=>'L', | ||
11623 | 41964=>'L', | ||
11624 | 41965=>'L', | ||
11625 | 41966=>'L', | ||
11626 | 41967=>'L', | ||
11627 | 41968=>'L', | ||
11628 | 41969=>'L', | ||
11629 | 41970=>'L', | ||
11630 | 41971=>'L', | ||
11631 | 41972=>'L', | ||
11632 | 41973=>'L', | ||
11633 | 41974=>'L', | ||
11634 | 41975=>'L', | ||
11635 | 41976=>'L', | ||
11636 | 41977=>'L', | ||
11637 | 41978=>'L', | ||
11638 | 41979=>'L', | ||
11639 | 41980=>'L', | ||
11640 | 41981=>'L', | ||
11641 | 41982=>'L', | ||
11642 | 41983=>'L', | ||
11643 | 41984=>'L', | ||
11644 | 41985=>'L', | ||
11645 | 41986=>'L', | ||
11646 | 41987=>'L', | ||
11647 | 41988=>'L', | ||
11648 | 41989=>'L', | ||
11649 | 41990=>'L', | ||
11650 | 41991=>'L', | ||
11651 | 41992=>'L', | ||
11652 | 41993=>'L', | ||
11653 | 41994=>'L', | ||
11654 | 41995=>'L', | ||
11655 | 41996=>'L', | ||
11656 | 41997=>'L', | ||
11657 | 41998=>'L', | ||
11658 | 41999=>'L', | ||
11659 | 42000=>'L', | ||
11660 | 42001=>'L', | ||
11661 | 42002=>'L', | ||
11662 | 42003=>'L', | ||
11663 | 42004=>'L', | ||
11664 | 42005=>'L', | ||
11665 | 42006=>'L', | ||
11666 | 42007=>'L', | ||
11667 | 42008=>'L', | ||
11668 | 42009=>'L', | ||
11669 | 42010=>'L', | ||
11670 | 42011=>'L', | ||
11671 | 42012=>'L', | ||
11672 | 42013=>'L', | ||
11673 | 42014=>'L', | ||
11674 | 42015=>'L', | ||
11675 | 42016=>'L', | ||
11676 | 42017=>'L', | ||
11677 | 42018=>'L', | ||
11678 | 42019=>'L', | ||
11679 | 42020=>'L', | ||
11680 | 42021=>'L', | ||
11681 | 42022=>'L', | ||
11682 | 42023=>'L', | ||
11683 | 42024=>'L', | ||
11684 | 42025=>'L', | ||
11685 | 42026=>'L', | ||
11686 | 42027=>'L', | ||
11687 | 42028=>'L', | ||
11688 | 42029=>'L', | ||
11689 | 42030=>'L', | ||
11690 | 42031=>'L', | ||
11691 | 42032=>'L', | ||
11692 | 42033=>'L', | ||
11693 | 42034=>'L', | ||
11694 | 42035=>'L', | ||
11695 | 42036=>'L', | ||
11696 | 42037=>'L', | ||
11697 | 42038=>'L', | ||
11698 | 42039=>'L', | ||
11699 | 42040=>'L', | ||
11700 | 42041=>'L', | ||
11701 | 42042=>'L', | ||
11702 | 42043=>'L', | ||
11703 | 42044=>'L', | ||
11704 | 42045=>'L', | ||
11705 | 42046=>'L', | ||
11706 | 42047=>'L', | ||
11707 | 42048=>'L', | ||
11708 | 42049=>'L', | ||
11709 | 42050=>'L', | ||
11710 | 42051=>'L', | ||
11711 | 42052=>'L', | ||
11712 | 42053=>'L', | ||
11713 | 42054=>'L', | ||
11714 | 42055=>'L', | ||
11715 | 42056=>'L', | ||
11716 | 42057=>'L', | ||
11717 | 42058=>'L', | ||
11718 | 42059=>'L', | ||
11719 | 42060=>'L', | ||
11720 | 42061=>'L', | ||
11721 | 42062=>'L', | ||
11722 | 42063=>'L', | ||
11723 | 42064=>'L', | ||
11724 | 42065=>'L', | ||
11725 | 42066=>'L', | ||
11726 | 42067=>'L', | ||
11727 | 42068=>'L', | ||
11728 | 42069=>'L', | ||
11729 | 42070=>'L', | ||
11730 | 42071=>'L', | ||
11731 | 42072=>'L', | ||
11732 | 42073=>'L', | ||
11733 | 42074=>'L', | ||
11734 | 42075=>'L', | ||
11735 | 42076=>'L', | ||
11736 | 42077=>'L', | ||
11737 | 42078=>'L', | ||
11738 | 42079=>'L', | ||
11739 | 42080=>'L', | ||
11740 | 42081=>'L', | ||
11741 | 42082=>'L', | ||
11742 | 42083=>'L', | ||
11743 | 42084=>'L', | ||
11744 | 42085=>'L', | ||
11745 | 42086=>'L', | ||
11746 | 42087=>'L', | ||
11747 | 42088=>'L', | ||
11748 | 42089=>'L', | ||
11749 | 42090=>'L', | ||
11750 | 42091=>'L', | ||
11751 | 42092=>'L', | ||
11752 | 42093=>'L', | ||
11753 | 42094=>'L', | ||
11754 | 42095=>'L', | ||
11755 | 42096=>'L', | ||
11756 | 42097=>'L', | ||
11757 | 42098=>'L', | ||
11758 | 42099=>'L', | ||
11759 | 42100=>'L', | ||
11760 | 42101=>'L', | ||
11761 | 42102=>'L', | ||
11762 | 42103=>'L', | ||
11763 | 42104=>'L', | ||
11764 | 42105=>'L', | ||
11765 | 42106=>'L', | ||
11766 | 42107=>'L', | ||
11767 | 42108=>'L', | ||
11768 | 42109=>'L', | ||
11769 | 42110=>'L', | ||
11770 | 42111=>'L', | ||
11771 | 42112=>'L', | ||
11772 | 42113=>'L', | ||
11773 | 42114=>'L', | ||
11774 | 42115=>'L', | ||
11775 | 42116=>'L', | ||
11776 | 42117=>'L', | ||
11777 | 42118=>'L', | ||
11778 | 42119=>'L', | ||
11779 | 42120=>'L', | ||
11780 | 42121=>'L', | ||
11781 | 42122=>'L', | ||
11782 | 42123=>'L', | ||
11783 | 42124=>'L', | ||
11784 | 42128=>'ON', | ||
11785 | 42129=>'ON', | ||
11786 | 42130=>'ON', | ||
11787 | 42131=>'ON', | ||
11788 | 42132=>'ON', | ||
11789 | 42133=>'ON', | ||
11790 | 42134=>'ON', | ||
11791 | 42135=>'ON', | ||
11792 | 42136=>'ON', | ||
11793 | 42137=>'ON', | ||
11794 | 42138=>'ON', | ||
11795 | 42139=>'ON', | ||
11796 | 42140=>'ON', | ||
11797 | 42141=>'ON', | ||
11798 | 42142=>'ON', | ||
11799 | 42143=>'ON', | ||
11800 | 42144=>'ON', | ||
11801 | 42145=>'ON', | ||
11802 | 42146=>'ON', | ||
11803 | 42147=>'ON', | ||
11804 | 42148=>'ON', | ||
11805 | 42149=>'ON', | ||
11806 | 42150=>'ON', | ||
11807 | 42151=>'ON', | ||
11808 | 42152=>'ON', | ||
11809 | 42153=>'ON', | ||
11810 | 42154=>'ON', | ||
11811 | 42155=>'ON', | ||
11812 | 42156=>'ON', | ||
11813 | 42157=>'ON', | ||
11814 | 42158=>'ON', | ||
11815 | 42159=>'ON', | ||
11816 | 42160=>'ON', | ||
11817 | 42161=>'ON', | ||
11818 | 42162=>'ON', | ||
11819 | 42163=>'ON', | ||
11820 | 42164=>'ON', | ||
11821 | 42165=>'ON', | ||
11822 | 42166=>'ON', | ||
11823 | 42167=>'ON', | ||
11824 | 42168=>'ON', | ||
11825 | 42169=>'ON', | ||
11826 | 42170=>'ON', | ||
11827 | 42171=>'ON', | ||
11828 | 42172=>'ON', | ||
11829 | 42173=>'ON', | ||
11830 | 42174=>'ON', | ||
11831 | 42175=>'ON', | ||
11832 | 42176=>'ON', | ||
11833 | 42177=>'ON', | ||
11834 | 42178=>'ON', | ||
11835 | 42179=>'ON', | ||
11836 | 42180=>'ON', | ||
11837 | 42181=>'ON', | ||
11838 | 42182=>'ON', | ||
11839 | 42752=>'ON', | ||
11840 | 42753=>'ON', | ||
11841 | 42754=>'ON', | ||
11842 | 42755=>'ON', | ||
11843 | 42756=>'ON', | ||
11844 | 42757=>'ON', | ||
11845 | 42758=>'ON', | ||
11846 | 42759=>'ON', | ||
11847 | 42760=>'ON', | ||
11848 | 42761=>'ON', | ||
11849 | 42762=>'ON', | ||
11850 | 42763=>'ON', | ||
11851 | 42764=>'ON', | ||
11852 | 42765=>'ON', | ||
11853 | 42766=>'ON', | ||
11854 | 42767=>'ON', | ||
11855 | 42768=>'ON', | ||
11856 | 42769=>'ON', | ||
11857 | 42770=>'ON', | ||
11858 | 42771=>'ON', | ||
11859 | 42772=>'ON', | ||
11860 | 42773=>'ON', | ||
11861 | 42774=>'ON', | ||
11862 | 42775=>'ON', | ||
11863 | 42776=>'ON', | ||
11864 | 42777=>'ON', | ||
11865 | 42778=>'ON', | ||
11866 | 42784=>'ON', | ||
11867 | 42785=>'ON', | ||
11868 | 43008=>'L', | ||
11869 | 43009=>'L', | ||
11870 | 43010=>'NSM', | ||
11871 | 43011=>'L', | ||
11872 | 43012=>'L', | ||
11873 | 43013=>'L', | ||
11874 | 43014=>'NSM', | ||
11875 | 43015=>'L', | ||
11876 | 43016=>'L', | ||
11877 | 43017=>'L', | ||
11878 | 43018=>'L', | ||
11879 | 43019=>'NSM', | ||
11880 | 43020=>'L', | ||
11881 | 43021=>'L', | ||
11882 | 43022=>'L', | ||
11883 | 43023=>'L', | ||
11884 | 43024=>'L', | ||
11885 | 43025=>'L', | ||
11886 | 43026=>'L', | ||
11887 | 43027=>'L', | ||
11888 | 43028=>'L', | ||
11889 | 43029=>'L', | ||
11890 | 43030=>'L', | ||
11891 | 43031=>'L', | ||
11892 | 43032=>'L', | ||
11893 | 43033=>'L', | ||
11894 | 43034=>'L', | ||
11895 | 43035=>'L', | ||
11896 | 43036=>'L', | ||
11897 | 43037=>'L', | ||
11898 | 43038=>'L', | ||
11899 | 43039=>'L', | ||
11900 | 43040=>'L', | ||
11901 | 43041=>'L', | ||
11902 | 43042=>'L', | ||
11903 | 43043=>'L', | ||
11904 | 43044=>'L', | ||
11905 | 43045=>'NSM', | ||
11906 | 43046=>'NSM', | ||
11907 | 43047=>'L', | ||
11908 | 43048=>'ON', | ||
11909 | 43049=>'ON', | ||
11910 | 43050=>'ON', | ||
11911 | 43051=>'ON', | ||
11912 | 43072=>'L', | ||
11913 | 43073=>'L', | ||
11914 | 43074=>'L', | ||
11915 | 43075=>'L', | ||
11916 | 43076=>'L', | ||
11917 | 43077=>'L', | ||
11918 | 43078=>'L', | ||
11919 | 43079=>'L', | ||
11920 | 43080=>'L', | ||
11921 | 43081=>'L', | ||
11922 | 43082=>'L', | ||
11923 | 43083=>'L', | ||
11924 | 43084=>'L', | ||
11925 | 43085=>'L', | ||
11926 | 43086=>'L', | ||
11927 | 43087=>'L', | ||
11928 | 43088=>'L', | ||
11929 | 43089=>'L', | ||
11930 | 43090=>'L', | ||
11931 | 43091=>'L', | ||
11932 | 43092=>'L', | ||
11933 | 43093=>'L', | ||
11934 | 43094=>'L', | ||
11935 | 43095=>'L', | ||
11936 | 43096=>'L', | ||
11937 | 43097=>'L', | ||
11938 | 43098=>'L', | ||
11939 | 43099=>'L', | ||
11940 | 43100=>'L', | ||
11941 | 43101=>'L', | ||
11942 | 43102=>'L', | ||
11943 | 43103=>'L', | ||
11944 | 43104=>'L', | ||
11945 | 43105=>'L', | ||
11946 | 43106=>'L', | ||
11947 | 43107=>'L', | ||
11948 | 43108=>'L', | ||
11949 | 43109=>'L', | ||
11950 | 43110=>'L', | ||
11951 | 43111=>'L', | ||
11952 | 43112=>'L', | ||
11953 | 43113=>'L', | ||
11954 | 43114=>'L', | ||
11955 | 43115=>'L', | ||
11956 | 43116=>'L', | ||
11957 | 43117=>'L', | ||
11958 | 43118=>'L', | ||
11959 | 43119=>'L', | ||
11960 | 43120=>'L', | ||
11961 | 43121=>'L', | ||
11962 | 43122=>'L', | ||
11963 | 43123=>'L', | ||
11964 | 43124=>'ON', | ||
11965 | 43125=>'ON', | ||
11966 | 43126=>'ON', | ||
11967 | 43127=>'ON', | ||
11968 | 44032=>'L', | ||
11969 | 55203=>'L', | ||
11970 | 55296=>'L', | ||
11971 | 56191=>'L', | ||
11972 | 56192=>'L', | ||
11973 | 56319=>'L', | ||
11974 | 56320=>'L', | ||
11975 | 57343=>'L', | ||
11976 | 57344=>'L', | ||
11977 | 63743=>'L', | ||
11978 | 63744=>'L', | ||
11979 | 63745=>'L', | ||
11980 | 63746=>'L', | ||
11981 | 63747=>'L', | ||
11982 | 63748=>'L', | ||
11983 | 63749=>'L', | ||
11984 | 63750=>'L', | ||
11985 | 63751=>'L', | ||
11986 | 63752=>'L', | ||
11987 | 63753=>'L', | ||
11988 | 63754=>'L', | ||
11989 | 63755=>'L', | ||
11990 | 63756=>'L', | ||
11991 | 63757=>'L', | ||
11992 | 63758=>'L', | ||
11993 | 63759=>'L', | ||
11994 | 63760=>'L', | ||
11995 | 63761=>'L', | ||
11996 | 63762=>'L', | ||
11997 | 63763=>'L', | ||
11998 | 63764=>'L', | ||
11999 | 63765=>'L', | ||
12000 | 63766=>'L', | ||
12001 | 63767=>'L', | ||
12002 | 63768=>'L', | ||
12003 | 63769=>'L', | ||
12004 | 63770=>'L', | ||
12005 | 63771=>'L', | ||
12006 | 63772=>'L', | ||
12007 | 63773=>'L', | ||
12008 | 63774=>'L', | ||
12009 | 63775=>'L', | ||
12010 | 63776=>'L', | ||
12011 | 63777=>'L', | ||
12012 | 63778=>'L', | ||
12013 | 63779=>'L', | ||
12014 | 63780=>'L', | ||
12015 | 63781=>'L', | ||
12016 | 63782=>'L', | ||
12017 | 63783=>'L', | ||
12018 | 63784=>'L', | ||
12019 | 63785=>'L', | ||
12020 | 63786=>'L', | ||
12021 | 63787=>'L', | ||
12022 | 63788=>'L', | ||
12023 | 63789=>'L', | ||
12024 | 63790=>'L', | ||
12025 | 63791=>'L', | ||
12026 | 63792=>'L', | ||
12027 | 63793=>'L', | ||
12028 | 63794=>'L', | ||
12029 | 63795=>'L', | ||
12030 | 63796=>'L', | ||
12031 | 63797=>'L', | ||
12032 | 63798=>'L', | ||
12033 | 63799=>'L', | ||
12034 | 63800=>'L', | ||
12035 | 63801=>'L', | ||
12036 | 63802=>'L', | ||
12037 | 63803=>'L', | ||
12038 | 63804=>'L', | ||
12039 | 63805=>'L', | ||
12040 | 63806=>'L', | ||
12041 | 63807=>'L', | ||
12042 | 63808=>'L', | ||
12043 | 63809=>'L', | ||
12044 | 63810=>'L', | ||
12045 | 63811=>'L', | ||
12046 | 63812=>'L', | ||
12047 | 63813=>'L', | ||
12048 | 63814=>'L', | ||
12049 | 63815=>'L', | ||
12050 | 63816=>'L', | ||
12051 | 63817=>'L', | ||
12052 | 63818=>'L', | ||
12053 | 63819=>'L', | ||
12054 | 63820=>'L', | ||
12055 | 63821=>'L', | ||
12056 | 63822=>'L', | ||
12057 | 63823=>'L', | ||
12058 | 63824=>'L', | ||
12059 | 63825=>'L', | ||
12060 | 63826=>'L', | ||
12061 | 63827=>'L', | ||
12062 | 63828=>'L', | ||
12063 | 63829=>'L', | ||
12064 | 63830=>'L', | ||
12065 | 63831=>'L', | ||
12066 | 63832=>'L', | ||
12067 | 63833=>'L', | ||
12068 | 63834=>'L', | ||
12069 | 63835=>'L', | ||
12070 | 63836=>'L', | ||
12071 | 63837=>'L', | ||
12072 | 63838=>'L', | ||
12073 | 63839=>'L', | ||
12074 | 63840=>'L', | ||
12075 | 63841=>'L', | ||
12076 | 63842=>'L', | ||
12077 | 63843=>'L', | ||
12078 | 63844=>'L', | ||
12079 | 63845=>'L', | ||
12080 | 63846=>'L', | ||
12081 | 63847=>'L', | ||
12082 | 63848=>'L', | ||
12083 | 63849=>'L', | ||
12084 | 63850=>'L', | ||
12085 | 63851=>'L', | ||
12086 | 63852=>'L', | ||
12087 | 63853=>'L', | ||
12088 | 63854=>'L', | ||
12089 | 63855=>'L', | ||
12090 | 63856=>'L', | ||
12091 | 63857=>'L', | ||
12092 | 63858=>'L', | ||
12093 | 63859=>'L', | ||
12094 | 63860=>'L', | ||
12095 | 63861=>'L', | ||
12096 | 63862=>'L', | ||
12097 | 63863=>'L', | ||
12098 | 63864=>'L', | ||
12099 | 63865=>'L', | ||
12100 | 63866=>'L', | ||
12101 | 63867=>'L', | ||
12102 | 63868=>'L', | ||
12103 | 63869=>'L', | ||
12104 | 63870=>'L', | ||
12105 | 63871=>'L', | ||
12106 | 63872=>'L', | ||
12107 | 63873=>'L', | ||
12108 | 63874=>'L', | ||
12109 | 63875=>'L', | ||
12110 | 63876=>'L', | ||
12111 | 63877=>'L', | ||
12112 | 63878=>'L', | ||
12113 | 63879=>'L', | ||
12114 | 63880=>'L', | ||
12115 | 63881=>'L', | ||
12116 | 63882=>'L', | ||
12117 | 63883=>'L', | ||
12118 | 63884=>'L', | ||
12119 | 63885=>'L', | ||
12120 | 63886=>'L', | ||
12121 | 63887=>'L', | ||
12122 | 63888=>'L', | ||
12123 | 63889=>'L', | ||
12124 | 63890=>'L', | ||
12125 | 63891=>'L', | ||
12126 | 63892=>'L', | ||
12127 | 63893=>'L', | ||
12128 | 63894=>'L', | ||
12129 | 63895=>'L', | ||
12130 | 63896=>'L', | ||
12131 | 63897=>'L', | ||
12132 | 63898=>'L', | ||
12133 | 63899=>'L', | ||
12134 | 63900=>'L', | ||
12135 | 63901=>'L', | ||
12136 | 63902=>'L', | ||
12137 | 63903=>'L', | ||
12138 | 63904=>'L', | ||
12139 | 63905=>'L', | ||
12140 | 63906=>'L', | ||
12141 | 63907=>'L', | ||
12142 | 63908=>'L', | ||
12143 | 63909=>'L', | ||
12144 | 63910=>'L', | ||
12145 | 63911=>'L', | ||
12146 | 63912=>'L', | ||
12147 | 63913=>'L', | ||
12148 | 63914=>'L', | ||
12149 | 63915=>'L', | ||
12150 | 63916=>'L', | ||
12151 | 63917=>'L', | ||
12152 | 63918=>'L', | ||
12153 | 63919=>'L', | ||
12154 | 63920=>'L', | ||
12155 | 63921=>'L', | ||
12156 | 63922=>'L', | ||
12157 | 63923=>'L', | ||
12158 | 63924=>'L', | ||
12159 | 63925=>'L', | ||
12160 | 63926=>'L', | ||
12161 | 63927=>'L', | ||
12162 | 63928=>'L', | ||
12163 | 63929=>'L', | ||
12164 | 63930=>'L', | ||
12165 | 63931=>'L', | ||
12166 | 63932=>'L', | ||
12167 | 63933=>'L', | ||
12168 | 63934=>'L', | ||
12169 | 63935=>'L', | ||
12170 | 63936=>'L', | ||
12171 | 63937=>'L', | ||
12172 | 63938=>'L', | ||
12173 | 63939=>'L', | ||
12174 | 63940=>'L', | ||
12175 | 63941=>'L', | ||
12176 | 63942=>'L', | ||
12177 | 63943=>'L', | ||
12178 | 63944=>'L', | ||
12179 | 63945=>'L', | ||
12180 | 63946=>'L', | ||
12181 | 63947=>'L', | ||
12182 | 63948=>'L', | ||
12183 | 63949=>'L', | ||
12184 | 63950=>'L', | ||
12185 | 63951=>'L', | ||
12186 | 63952=>'L', | ||
12187 | 63953=>'L', | ||
12188 | 63954=>'L', | ||
12189 | 63955=>'L', | ||
12190 | 63956=>'L', | ||
12191 | 63957=>'L', | ||
12192 | 63958=>'L', | ||
12193 | 63959=>'L', | ||
12194 | 63960=>'L', | ||
12195 | 63961=>'L', | ||
12196 | 63962=>'L', | ||
12197 | 63963=>'L', | ||
12198 | 63964=>'L', | ||
12199 | 63965=>'L', | ||
12200 | 63966=>'L', | ||
12201 | 63967=>'L', | ||
12202 | 63968=>'L', | ||
12203 | 63969=>'L', | ||
12204 | 63970=>'L', | ||
12205 | 63971=>'L', | ||
12206 | 63972=>'L', | ||
12207 | 63973=>'L', | ||
12208 | 63974=>'L', | ||
12209 | 63975=>'L', | ||
12210 | 63976=>'L', | ||
12211 | 63977=>'L', | ||
12212 | 63978=>'L', | ||
12213 | 63979=>'L', | ||
12214 | 63980=>'L', | ||
12215 | 63981=>'L', | ||
12216 | 63982=>'L', | ||
12217 | 63983=>'L', | ||
12218 | 63984=>'L', | ||
12219 | 63985=>'L', | ||
12220 | 63986=>'L', | ||
12221 | 63987=>'L', | ||
12222 | 63988=>'L', | ||
12223 | 63989=>'L', | ||
12224 | 63990=>'L', | ||
12225 | 63991=>'L', | ||
12226 | 63992=>'L', | ||
12227 | 63993=>'L', | ||
12228 | 63994=>'L', | ||
12229 | 63995=>'L', | ||
12230 | 63996=>'L', | ||
12231 | 63997=>'L', | ||
12232 | 63998=>'L', | ||
12233 | 63999=>'L', | ||
12234 | 64000=>'L', | ||
12235 | 64001=>'L', | ||
12236 | 64002=>'L', | ||
12237 | 64003=>'L', | ||
12238 | 64004=>'L', | ||
12239 | 64005=>'L', | ||
12240 | 64006=>'L', | ||
12241 | 64007=>'L', | ||
12242 | 64008=>'L', | ||
12243 | 64009=>'L', | ||
12244 | 64010=>'L', | ||
12245 | 64011=>'L', | ||
12246 | 64012=>'L', | ||
12247 | 64013=>'L', | ||
12248 | 64014=>'L', | ||
12249 | 64015=>'L', | ||
12250 | 64016=>'L', | ||
12251 | 64017=>'L', | ||
12252 | 64018=>'L', | ||
12253 | 64019=>'L', | ||
12254 | 64020=>'L', | ||
12255 | 64021=>'L', | ||
12256 | 64022=>'L', | ||
12257 | 64023=>'L', | ||
12258 | 64024=>'L', | ||
12259 | 64025=>'L', | ||
12260 | 64026=>'L', | ||
12261 | 64027=>'L', | ||
12262 | 64028=>'L', | ||
12263 | 64029=>'L', | ||
12264 | 64030=>'L', | ||
12265 | 64031=>'L', | ||
12266 | 64032=>'L', | ||
12267 | 64033=>'L', | ||
12268 | 64034=>'L', | ||
12269 | 64035=>'L', | ||
12270 | 64036=>'L', | ||
12271 | 64037=>'L', | ||
12272 | 64038=>'L', | ||
12273 | 64039=>'L', | ||
12274 | 64040=>'L', | ||
12275 | 64041=>'L', | ||
12276 | 64042=>'L', | ||
12277 | 64043=>'L', | ||
12278 | 64044=>'L', | ||
12279 | 64045=>'L', | ||
12280 | 64048=>'L', | ||
12281 | 64049=>'L', | ||
12282 | 64050=>'L', | ||
12283 | 64051=>'L', | ||
12284 | 64052=>'L', | ||
12285 | 64053=>'L', | ||
12286 | 64054=>'L', | ||
12287 | 64055=>'L', | ||
12288 | 64056=>'L', | ||
12289 | 64057=>'L', | ||
12290 | 64058=>'L', | ||
12291 | 64059=>'L', | ||
12292 | 64060=>'L', | ||
12293 | 64061=>'L', | ||
12294 | 64062=>'L', | ||
12295 | 64063=>'L', | ||
12296 | 64064=>'L', | ||
12297 | 64065=>'L', | ||
12298 | 64066=>'L', | ||
12299 | 64067=>'L', | ||
12300 | 64068=>'L', | ||
12301 | 64069=>'L', | ||
12302 | 64070=>'L', | ||
12303 | 64071=>'L', | ||
12304 | 64072=>'L', | ||
12305 | 64073=>'L', | ||
12306 | 64074=>'L', | ||
12307 | 64075=>'L', | ||
12308 | 64076=>'L', | ||
12309 | 64077=>'L', | ||
12310 | 64078=>'L', | ||
12311 | 64079=>'L', | ||
12312 | 64080=>'L', | ||
12313 | 64081=>'L', | ||
12314 | 64082=>'L', | ||
12315 | 64083=>'L', | ||
12316 | 64084=>'L', | ||
12317 | 64085=>'L', | ||
12318 | 64086=>'L', | ||
12319 | 64087=>'L', | ||
12320 | 64088=>'L', | ||
12321 | 64089=>'L', | ||
12322 | 64090=>'L', | ||
12323 | 64091=>'L', | ||
12324 | 64092=>'L', | ||
12325 | 64093=>'L', | ||
12326 | 64094=>'L', | ||
12327 | 64095=>'L', | ||
12328 | 64096=>'L', | ||
12329 | 64097=>'L', | ||
12330 | 64098=>'L', | ||
12331 | 64099=>'L', | ||
12332 | 64100=>'L', | ||
12333 | 64101=>'L', | ||
12334 | 64102=>'L', | ||
12335 | 64103=>'L', | ||
12336 | 64104=>'L', | ||
12337 | 64105=>'L', | ||
12338 | 64106=>'L', | ||
12339 | 64112=>'L', | ||
12340 | 64113=>'L', | ||
12341 | 64114=>'L', | ||
12342 | 64115=>'L', | ||
12343 | 64116=>'L', | ||
12344 | 64117=>'L', | ||
12345 | 64118=>'L', | ||
12346 | 64119=>'L', | ||
12347 | 64120=>'L', | ||
12348 | 64121=>'L', | ||
12349 | 64122=>'L', | ||
12350 | 64123=>'L', | ||
12351 | 64124=>'L', | ||
12352 | 64125=>'L', | ||
12353 | 64126=>'L', | ||
12354 | 64127=>'L', | ||
12355 | 64128=>'L', | ||
12356 | 64129=>'L', | ||
12357 | 64130=>'L', | ||
12358 | 64131=>'L', | ||
12359 | 64132=>'L', | ||
12360 | 64133=>'L', | ||
12361 | 64134=>'L', | ||
12362 | 64135=>'L', | ||
12363 | 64136=>'L', | ||
12364 | 64137=>'L', | ||
12365 | 64138=>'L', | ||
12366 | 64139=>'L', | ||
12367 | 64140=>'L', | ||
12368 | 64141=>'L', | ||
12369 | 64142=>'L', | ||
12370 | 64143=>'L', | ||
12371 | 64144=>'L', | ||
12372 | 64145=>'L', | ||
12373 | 64146=>'L', | ||
12374 | 64147=>'L', | ||
12375 | 64148=>'L', | ||
12376 | 64149=>'L', | ||
12377 | 64150=>'L', | ||
12378 | 64151=>'L', | ||
12379 | 64152=>'L', | ||
12380 | 64153=>'L', | ||
12381 | 64154=>'L', | ||
12382 | 64155=>'L', | ||
12383 | 64156=>'L', | ||
12384 | 64157=>'L', | ||
12385 | 64158=>'L', | ||
12386 | 64159=>'L', | ||
12387 | 64160=>'L', | ||
12388 | 64161=>'L', | ||
12389 | 64162=>'L', | ||
12390 | 64163=>'L', | ||
12391 | 64164=>'L', | ||
12392 | 64165=>'L', | ||
12393 | 64166=>'L', | ||
12394 | 64167=>'L', | ||
12395 | 64168=>'L', | ||
12396 | 64169=>'L', | ||
12397 | 64170=>'L', | ||
12398 | 64171=>'L', | ||
12399 | 64172=>'L', | ||
12400 | 64173=>'L', | ||
12401 | 64174=>'L', | ||
12402 | 64175=>'L', | ||
12403 | 64176=>'L', | ||
12404 | 64177=>'L', | ||
12405 | 64178=>'L', | ||
12406 | 64179=>'L', | ||
12407 | 64180=>'L', | ||
12408 | 64181=>'L', | ||
12409 | 64182=>'L', | ||
12410 | 64183=>'L', | ||
12411 | 64184=>'L', | ||
12412 | 64185=>'L', | ||
12413 | 64186=>'L', | ||
12414 | 64187=>'L', | ||
12415 | 64188=>'L', | ||
12416 | 64189=>'L', | ||
12417 | 64190=>'L', | ||
12418 | 64191=>'L', | ||
12419 | 64192=>'L', | ||
12420 | 64193=>'L', | ||
12421 | 64194=>'L', | ||
12422 | 64195=>'L', | ||
12423 | 64196=>'L', | ||
12424 | 64197=>'L', | ||
12425 | 64198=>'L', | ||
12426 | 64199=>'L', | ||
12427 | 64200=>'L', | ||
12428 | 64201=>'L', | ||
12429 | 64202=>'L', | ||
12430 | 64203=>'L', | ||
12431 | 64204=>'L', | ||
12432 | 64205=>'L', | ||
12433 | 64206=>'L', | ||
12434 | 64207=>'L', | ||
12435 | 64208=>'L', | ||
12436 | 64209=>'L', | ||
12437 | 64210=>'L', | ||
12438 | 64211=>'L', | ||
12439 | 64212=>'L', | ||
12440 | 64213=>'L', | ||
12441 | 64214=>'L', | ||
12442 | 64215=>'L', | ||
12443 | 64216=>'L', | ||
12444 | 64217=>'L', | ||
12445 | 64256=>'L', | ||
12446 | 64257=>'L', | ||
12447 | 64258=>'L', | ||
12448 | 64259=>'L', | ||
12449 | 64260=>'L', | ||
12450 | 64261=>'L', | ||
12451 | 64262=>'L', | ||
12452 | 64275=>'L', | ||
12453 | 64276=>'L', | ||
12454 | 64277=>'L', | ||
12455 | 64278=>'L', | ||
12456 | 64279=>'L', | ||
12457 | 64285=>'R', | ||
12458 | 64286=>'NSM', | ||
12459 | 64287=>'R', | ||
12460 | 64288=>'R', | ||
12461 | 64289=>'R', | ||
12462 | 64290=>'R', | ||
12463 | 64291=>'R', | ||
12464 | 64292=>'R', | ||
12465 | 64293=>'R', | ||
12466 | 64294=>'R', | ||
12467 | 64295=>'R', | ||
12468 | 64296=>'R', | ||
12469 | 64297=>'ES', | ||
12470 | 64298=>'R', | ||
12471 | 64299=>'R', | ||
12472 | 64300=>'R', | ||
12473 | 64301=>'R', | ||
12474 | 64302=>'R', | ||
12475 | 64303=>'R', | ||
12476 | 64304=>'R', | ||
12477 | 64305=>'R', | ||
12478 | 64306=>'R', | ||
12479 | 64307=>'R', | ||
12480 | 64308=>'R', | ||
12481 | 64309=>'R', | ||
12482 | 64310=>'R', | ||
12483 | 64312=>'R', | ||
12484 | 64313=>'R', | ||
12485 | 64314=>'R', | ||
12486 | 64315=>'R', | ||
12487 | 64316=>'R', | ||
12488 | 64318=>'R', | ||
12489 | 64320=>'R', | ||
12490 | 64321=>'R', | ||
12491 | 64323=>'R', | ||
12492 | 64324=>'R', | ||
12493 | 64326=>'R', | ||
12494 | 64327=>'R', | ||
12495 | 64328=>'R', | ||
12496 | 64329=>'R', | ||
12497 | 64330=>'R', | ||
12498 | 64331=>'R', | ||
12499 | 64332=>'R', | ||
12500 | 64333=>'R', | ||
12501 | 64334=>'R', | ||
12502 | 64335=>'R', | ||
12503 | 64336=>'AL', | ||
12504 | 64337=>'AL', | ||
12505 | 64338=>'AL', | ||
12506 | 64339=>'AL', | ||
12507 | 64340=>'AL', | ||
12508 | 64341=>'AL', | ||
12509 | 64342=>'AL', | ||
12510 | 64343=>'AL', | ||
12511 | 64344=>'AL', | ||
12512 | 64345=>'AL', | ||
12513 | 64346=>'AL', | ||
12514 | 64347=>'AL', | ||
12515 | 64348=>'AL', | ||
12516 | 64349=>'AL', | ||
12517 | 64350=>'AL', | ||
12518 | 64351=>'AL', | ||
12519 | 64352=>'AL', | ||
12520 | 64353=>'AL', | ||
12521 | 64354=>'AL', | ||
12522 | 64355=>'AL', | ||
12523 | 64356=>'AL', | ||
12524 | 64357=>'AL', | ||
12525 | 64358=>'AL', | ||
12526 | 64359=>'AL', | ||
12527 | 64360=>'AL', | ||
12528 | 64361=>'AL', | ||
12529 | 64362=>'AL', | ||
12530 | 64363=>'AL', | ||
12531 | 64364=>'AL', | ||
12532 | 64365=>'AL', | ||
12533 | 64366=>'AL', | ||
12534 | 64367=>'AL', | ||
12535 | 64368=>'AL', | ||
12536 | 64369=>'AL', | ||
12537 | 64370=>'AL', | ||
12538 | 64371=>'AL', | ||
12539 | 64372=>'AL', | ||
12540 | 64373=>'AL', | ||
12541 | 64374=>'AL', | ||
12542 | 64375=>'AL', | ||
12543 | 64376=>'AL', | ||
12544 | 64377=>'AL', | ||
12545 | 64378=>'AL', | ||
12546 | 64379=>'AL', | ||
12547 | 64380=>'AL', | ||
12548 | 64381=>'AL', | ||
12549 | 64382=>'AL', | ||
12550 | 64383=>'AL', | ||
12551 | 64384=>'AL', | ||
12552 | 64385=>'AL', | ||
12553 | 64386=>'AL', | ||
12554 | 64387=>'AL', | ||
12555 | 64388=>'AL', | ||
12556 | 64389=>'AL', | ||
12557 | 64390=>'AL', | ||
12558 | 64391=>'AL', | ||
12559 | 64392=>'AL', | ||
12560 | 64393=>'AL', | ||
12561 | 64394=>'AL', | ||
12562 | 64395=>'AL', | ||
12563 | 64396=>'AL', | ||
12564 | 64397=>'AL', | ||
12565 | 64398=>'AL', | ||
12566 | 64399=>'AL', | ||
12567 | 64400=>'AL', | ||
12568 | 64401=>'AL', | ||
12569 | 64402=>'AL', | ||
12570 | 64403=>'AL', | ||
12571 | 64404=>'AL', | ||
12572 | 64405=>'AL', | ||
12573 | 64406=>'AL', | ||
12574 | 64407=>'AL', | ||
12575 | 64408=>'AL', | ||
12576 | 64409=>'AL', | ||
12577 | 64410=>'AL', | ||
12578 | 64411=>'AL', | ||
12579 | 64412=>'AL', | ||
12580 | 64413=>'AL', | ||
12581 | 64414=>'AL', | ||
12582 | 64415=>'AL', | ||
12583 | 64416=>'AL', | ||
12584 | 64417=>'AL', | ||
12585 | 64418=>'AL', | ||
12586 | 64419=>'AL', | ||
12587 | 64420=>'AL', | ||
12588 | 64421=>'AL', | ||
12589 | 64422=>'AL', | ||
12590 | 64423=>'AL', | ||
12591 | 64424=>'AL', | ||
12592 | 64425=>'AL', | ||
12593 | 64426=>'AL', | ||
12594 | 64427=>'AL', | ||
12595 | 64428=>'AL', | ||
12596 | 64429=>'AL', | ||
12597 | 64430=>'AL', | ||
12598 | 64431=>'AL', | ||
12599 | 64432=>'AL', | ||
12600 | 64433=>'AL', | ||
12601 | 64467=>'AL', | ||
12602 | 64468=>'AL', | ||
12603 | 64469=>'AL', | ||
12604 | 64470=>'AL', | ||
12605 | 64471=>'AL', | ||
12606 | 64472=>'AL', | ||
12607 | 64473=>'AL', | ||
12608 | 64474=>'AL', | ||
12609 | 64475=>'AL', | ||
12610 | 64476=>'AL', | ||
12611 | 64477=>'AL', | ||
12612 | 64478=>'AL', | ||
12613 | 64479=>'AL', | ||
12614 | 64480=>'AL', | ||
12615 | 64481=>'AL', | ||
12616 | 64482=>'AL', | ||
12617 | 64483=>'AL', | ||
12618 | 64484=>'AL', | ||
12619 | 64485=>'AL', | ||
12620 | 64486=>'AL', | ||
12621 | 64487=>'AL', | ||
12622 | 64488=>'AL', | ||
12623 | 64489=>'AL', | ||
12624 | 64490=>'AL', | ||
12625 | 64491=>'AL', | ||
12626 | 64492=>'AL', | ||
12627 | 64493=>'AL', | ||
12628 | 64494=>'AL', | ||
12629 | 64495=>'AL', | ||
12630 | 64496=>'AL', | ||
12631 | 64497=>'AL', | ||
12632 | 64498=>'AL', | ||
12633 | 64499=>'AL', | ||
12634 | 64500=>'AL', | ||
12635 | 64501=>'AL', | ||
12636 | 64502=>'AL', | ||
12637 | 64503=>'AL', | ||
12638 | 64504=>'AL', | ||
12639 | 64505=>'AL', | ||
12640 | 64506=>'AL', | ||
12641 | 64507=>'AL', | ||
12642 | 64508=>'AL', | ||
12643 | 64509=>'AL', | ||
12644 | 64510=>'AL', | ||
12645 | 64511=>'AL', | ||
12646 | 64512=>'AL', | ||
12647 | 64513=>'AL', | ||
12648 | 64514=>'AL', | ||
12649 | 64515=>'AL', | ||
12650 | 64516=>'AL', | ||
12651 | 64517=>'AL', | ||
12652 | 64518=>'AL', | ||
12653 | 64519=>'AL', | ||
12654 | 64520=>'AL', | ||
12655 | 64521=>'AL', | ||
12656 | 64522=>'AL', | ||
12657 | 64523=>'AL', | ||
12658 | 64524=>'AL', | ||
12659 | 64525=>'AL', | ||
12660 | 64526=>'AL', | ||
12661 | 64527=>'AL', | ||
12662 | 64528=>'AL', | ||
12663 | 64529=>'AL', | ||
12664 | 64530=>'AL', | ||
12665 | 64531=>'AL', | ||
12666 | 64532=>'AL', | ||
12667 | 64533=>'AL', | ||
12668 | 64534=>'AL', | ||
12669 | 64535=>'AL', | ||
12670 | 64536=>'AL', | ||
12671 | 64537=>'AL', | ||
12672 | 64538=>'AL', | ||
12673 | 64539=>'AL', | ||
12674 | 64540=>'AL', | ||
12675 | 64541=>'AL', | ||
12676 | 64542=>'AL', | ||
12677 | 64543=>'AL', | ||
12678 | 64544=>'AL', | ||
12679 | 64545=>'AL', | ||
12680 | 64546=>'AL', | ||
12681 | 64547=>'AL', | ||
12682 | 64548=>'AL', | ||
12683 | 64549=>'AL', | ||
12684 | 64550=>'AL', | ||
12685 | 64551=>'AL', | ||
12686 | 64552=>'AL', | ||
12687 | 64553=>'AL', | ||
12688 | 64554=>'AL', | ||
12689 | 64555=>'AL', | ||
12690 | 64556=>'AL', | ||
12691 | 64557=>'AL', | ||
12692 | 64558=>'AL', | ||
12693 | 64559=>'AL', | ||
12694 | 64560=>'AL', | ||
12695 | 64561=>'AL', | ||
12696 | 64562=>'AL', | ||
12697 | 64563=>'AL', | ||
12698 | 64564=>'AL', | ||
12699 | 64565=>'AL', | ||
12700 | 64566=>'AL', | ||
12701 | 64567=>'AL', | ||
12702 | 64568=>'AL', | ||
12703 | 64569=>'AL', | ||
12704 | 64570=>'AL', | ||
12705 | 64571=>'AL', | ||
12706 | 64572=>'AL', | ||
12707 | 64573=>'AL', | ||
12708 | 64574=>'AL', | ||
12709 | 64575=>'AL', | ||
12710 | 64576=>'AL', | ||
12711 | 64577=>'AL', | ||
12712 | 64578=>'AL', | ||
12713 | 64579=>'AL', | ||
12714 | 64580=>'AL', | ||
12715 | 64581=>'AL', | ||
12716 | 64582=>'AL', | ||
12717 | 64583=>'AL', | ||
12718 | 64584=>'AL', | ||
12719 | 64585=>'AL', | ||
12720 | 64586=>'AL', | ||
12721 | 64587=>'AL', | ||
12722 | 64588=>'AL', | ||
12723 | 64589=>'AL', | ||
12724 | 64590=>'AL', | ||
12725 | 64591=>'AL', | ||
12726 | 64592=>'AL', | ||
12727 | 64593=>'AL', | ||
12728 | 64594=>'AL', | ||
12729 | 64595=>'AL', | ||
12730 | 64596=>'AL', | ||
12731 | 64597=>'AL', | ||
12732 | 64598=>'AL', | ||
12733 | 64599=>'AL', | ||
12734 | 64600=>'AL', | ||
12735 | 64601=>'AL', | ||
12736 | 64602=>'AL', | ||
12737 | 64603=>'AL', | ||
12738 | 64604=>'AL', | ||
12739 | 64605=>'AL', | ||
12740 | 64606=>'AL', | ||
12741 | 64607=>'AL', | ||
12742 | 64608=>'AL', | ||
12743 | 64609=>'AL', | ||
12744 | 64610=>'AL', | ||
12745 | 64611=>'AL', | ||
12746 | 64612=>'AL', | ||
12747 | 64613=>'AL', | ||
12748 | 64614=>'AL', | ||
12749 | 64615=>'AL', | ||
12750 | 64616=>'AL', | ||
12751 | 64617=>'AL', | ||
12752 | 64618=>'AL', | ||
12753 | 64619=>'AL', | ||
12754 | 64620=>'AL', | ||
12755 | 64621=>'AL', | ||
12756 | 64622=>'AL', | ||
12757 | 64623=>'AL', | ||
12758 | 64624=>'AL', | ||
12759 | 64625=>'AL', | ||
12760 | 64626=>'AL', | ||
12761 | 64627=>'AL', | ||
12762 | 64628=>'AL', | ||
12763 | 64629=>'AL', | ||
12764 | 64630=>'AL', | ||
12765 | 64631=>'AL', | ||
12766 | 64632=>'AL', | ||
12767 | 64633=>'AL', | ||
12768 | 64634=>'AL', | ||
12769 | 64635=>'AL', | ||
12770 | 64636=>'AL', | ||
12771 | 64637=>'AL', | ||
12772 | 64638=>'AL', | ||
12773 | 64639=>'AL', | ||
12774 | 64640=>'AL', | ||
12775 | 64641=>'AL', | ||
12776 | 64642=>'AL', | ||
12777 | 64643=>'AL', | ||
12778 | 64644=>'AL', | ||
12779 | 64645=>'AL', | ||
12780 | 64646=>'AL', | ||
12781 | 64647=>'AL', | ||
12782 | 64648=>'AL', | ||
12783 | 64649=>'AL', | ||
12784 | 64650=>'AL', | ||
12785 | 64651=>'AL', | ||
12786 | 64652=>'AL', | ||
12787 | 64653=>'AL', | ||
12788 | 64654=>'AL', | ||
12789 | 64655=>'AL', | ||
12790 | 64656=>'AL', | ||
12791 | 64657=>'AL', | ||
12792 | 64658=>'AL', | ||
12793 | 64659=>'AL', | ||
12794 | 64660=>'AL', | ||
12795 | 64661=>'AL', | ||
12796 | 64662=>'AL', | ||
12797 | 64663=>'AL', | ||
12798 | 64664=>'AL', | ||
12799 | 64665=>'AL', | ||
12800 | 64666=>'AL', | ||
12801 | 64667=>'AL', | ||
12802 | 64668=>'AL', | ||
12803 | 64669=>'AL', | ||
12804 | 64670=>'AL', | ||
12805 | 64671=>'AL', | ||
12806 | 64672=>'AL', | ||
12807 | 64673=>'AL', | ||
12808 | 64674=>'AL', | ||
12809 | 64675=>'AL', | ||
12810 | 64676=>'AL', | ||
12811 | 64677=>'AL', | ||
12812 | 64678=>'AL', | ||
12813 | 64679=>'AL', | ||
12814 | 64680=>'AL', | ||
12815 | 64681=>'AL', | ||
12816 | 64682=>'AL', | ||
12817 | 64683=>'AL', | ||
12818 | 64684=>'AL', | ||
12819 | 64685=>'AL', | ||
12820 | 64686=>'AL', | ||
12821 | 64687=>'AL', | ||
12822 | 64688=>'AL', | ||
12823 | 64689=>'AL', | ||
12824 | 64690=>'AL', | ||
12825 | 64691=>'AL', | ||
12826 | 64692=>'AL', | ||
12827 | 64693=>'AL', | ||
12828 | 64694=>'AL', | ||
12829 | 64695=>'AL', | ||
12830 | 64696=>'AL', | ||
12831 | 64697=>'AL', | ||
12832 | 64698=>'AL', | ||
12833 | 64699=>'AL', | ||
12834 | 64700=>'AL', | ||
12835 | 64701=>'AL', | ||
12836 | 64702=>'AL', | ||
12837 | 64703=>'AL', | ||
12838 | 64704=>'AL', | ||
12839 | 64705=>'AL', | ||
12840 | 64706=>'AL', | ||
12841 | 64707=>'AL', | ||
12842 | 64708=>'AL', | ||
12843 | 64709=>'AL', | ||
12844 | 64710=>'AL', | ||
12845 | 64711=>'AL', | ||
12846 | 64712=>'AL', | ||
12847 | 64713=>'AL', | ||
12848 | 64714=>'AL', | ||
12849 | 64715=>'AL', | ||
12850 | 64716=>'AL', | ||
12851 | 64717=>'AL', | ||
12852 | 64718=>'AL', | ||
12853 | 64719=>'AL', | ||
12854 | 64720=>'AL', | ||
12855 | 64721=>'AL', | ||
12856 | 64722=>'AL', | ||
12857 | 64723=>'AL', | ||
12858 | 64724=>'AL', | ||
12859 | 64725=>'AL', | ||
12860 | 64726=>'AL', | ||
12861 | 64727=>'AL', | ||
12862 | 64728=>'AL', | ||
12863 | 64729=>'AL', | ||
12864 | 64730=>'AL', | ||
12865 | 64731=>'AL', | ||
12866 | 64732=>'AL', | ||
12867 | 64733=>'AL', | ||
12868 | 64734=>'AL', | ||
12869 | 64735=>'AL', | ||
12870 | 64736=>'AL', | ||
12871 | 64737=>'AL', | ||
12872 | 64738=>'AL', | ||
12873 | 64739=>'AL', | ||
12874 | 64740=>'AL', | ||
12875 | 64741=>'AL', | ||
12876 | 64742=>'AL', | ||
12877 | 64743=>'AL', | ||
12878 | 64744=>'AL', | ||
12879 | 64745=>'AL', | ||
12880 | 64746=>'AL', | ||
12881 | 64747=>'AL', | ||
12882 | 64748=>'AL', | ||
12883 | 64749=>'AL', | ||
12884 | 64750=>'AL', | ||
12885 | 64751=>'AL', | ||
12886 | 64752=>'AL', | ||
12887 | 64753=>'AL', | ||
12888 | 64754=>'AL', | ||
12889 | 64755=>'AL', | ||
12890 | 64756=>'AL', | ||
12891 | 64757=>'AL', | ||
12892 | 64758=>'AL', | ||
12893 | 64759=>'AL', | ||
12894 | 64760=>'AL', | ||
12895 | 64761=>'AL', | ||
12896 | 64762=>'AL', | ||
12897 | 64763=>'AL', | ||
12898 | 64764=>'AL', | ||
12899 | 64765=>'AL', | ||
12900 | 64766=>'AL', | ||
12901 | 64767=>'AL', | ||
12902 | 64768=>'AL', | ||
12903 | 64769=>'AL', | ||
12904 | 64770=>'AL', | ||
12905 | 64771=>'AL', | ||
12906 | 64772=>'AL', | ||
12907 | 64773=>'AL', | ||
12908 | 64774=>'AL', | ||
12909 | 64775=>'AL', | ||
12910 | 64776=>'AL', | ||
12911 | 64777=>'AL', | ||
12912 | 64778=>'AL', | ||
12913 | 64779=>'AL', | ||
12914 | 64780=>'AL', | ||
12915 | 64781=>'AL', | ||
12916 | 64782=>'AL', | ||
12917 | 64783=>'AL', | ||
12918 | 64784=>'AL', | ||
12919 | 64785=>'AL', | ||
12920 | 64786=>'AL', | ||
12921 | 64787=>'AL', | ||
12922 | 64788=>'AL', | ||
12923 | 64789=>'AL', | ||
12924 | 64790=>'AL', | ||
12925 | 64791=>'AL', | ||
12926 | 64792=>'AL', | ||
12927 | 64793=>'AL', | ||
12928 | 64794=>'AL', | ||
12929 | 64795=>'AL', | ||
12930 | 64796=>'AL', | ||
12931 | 64797=>'AL', | ||
12932 | 64798=>'AL', | ||
12933 | 64799=>'AL', | ||
12934 | 64800=>'AL', | ||
12935 | 64801=>'AL', | ||
12936 | 64802=>'AL', | ||
12937 | 64803=>'AL', | ||
12938 | 64804=>'AL', | ||
12939 | 64805=>'AL', | ||
12940 | 64806=>'AL', | ||
12941 | 64807=>'AL', | ||
12942 | 64808=>'AL', | ||
12943 | 64809=>'AL', | ||
12944 | 64810=>'AL', | ||
12945 | 64811=>'AL', | ||
12946 | 64812=>'AL', | ||
12947 | 64813=>'AL', | ||
12948 | 64814=>'AL', | ||
12949 | 64815=>'AL', | ||
12950 | 64816=>'AL', | ||
12951 | 64817=>'AL', | ||
12952 | 64818=>'AL', | ||
12953 | 64819=>'AL', | ||
12954 | 64820=>'AL', | ||
12955 | 64821=>'AL', | ||
12956 | 64822=>'AL', | ||
12957 | 64823=>'AL', | ||
12958 | 64824=>'AL', | ||
12959 | 64825=>'AL', | ||
12960 | 64826=>'AL', | ||
12961 | 64827=>'AL', | ||
12962 | 64828=>'AL', | ||
12963 | 64829=>'AL', | ||
12964 | 64830=>'ON', | ||
12965 | 64831=>'ON', | ||
12966 | 64848=>'AL', | ||
12967 | 64849=>'AL', | ||
12968 | 64850=>'AL', | ||
12969 | 64851=>'AL', | ||
12970 | 64852=>'AL', | ||
12971 | 64853=>'AL', | ||
12972 | 64854=>'AL', | ||
12973 | 64855=>'AL', | ||
12974 | 64856=>'AL', | ||
12975 | 64857=>'AL', | ||
12976 | 64858=>'AL', | ||
12977 | 64859=>'AL', | ||
12978 | 64860=>'AL', | ||
12979 | 64861=>'AL', | ||
12980 | 64862=>'AL', | ||
12981 | 64863=>'AL', | ||
12982 | 64864=>'AL', | ||
12983 | 64865=>'AL', | ||
12984 | 64866=>'AL', | ||
12985 | 64867=>'AL', | ||
12986 | 64868=>'AL', | ||
12987 | 64869=>'AL', | ||
12988 | 64870=>'AL', | ||
12989 | 64871=>'AL', | ||
12990 | 64872=>'AL', | ||
12991 | 64873=>'AL', | ||
12992 | 64874=>'AL', | ||
12993 | 64875=>'AL', | ||
12994 | 64876=>'AL', | ||
12995 | 64877=>'AL', | ||
12996 | 64878=>'AL', | ||
12997 | 64879=>'AL', | ||
12998 | 64880=>'AL', | ||
12999 | 64881=>'AL', | ||
13000 | 64882=>'AL', | ||
13001 | 64883=>'AL', | ||
13002 | 64884=>'AL', | ||
13003 | 64885=>'AL', | ||
13004 | 64886=>'AL', | ||
13005 | 64887=>'AL', | ||
13006 | 64888=>'AL', | ||
13007 | 64889=>'AL', | ||
13008 | 64890=>'AL', | ||
13009 | 64891=>'AL', | ||
13010 | 64892=>'AL', | ||
13011 | 64893=>'AL', | ||
13012 | 64894=>'AL', | ||
13013 | 64895=>'AL', | ||
13014 | 64896=>'AL', | ||
13015 | 64897=>'AL', | ||
13016 | 64898=>'AL', | ||
13017 | 64899=>'AL', | ||
13018 | 64900=>'AL', | ||
13019 | 64901=>'AL', | ||
13020 | 64902=>'AL', | ||
13021 | 64903=>'AL', | ||
13022 | 64904=>'AL', | ||
13023 | 64905=>'AL', | ||
13024 | 64906=>'AL', | ||
13025 | 64907=>'AL', | ||
13026 | 64908=>'AL', | ||
13027 | 64909=>'AL', | ||
13028 | 64910=>'AL', | ||
13029 | 64911=>'AL', | ||
13030 | 64914=>'AL', | ||
13031 | 64915=>'AL', | ||
13032 | 64916=>'AL', | ||
13033 | 64917=>'AL', | ||
13034 | 64918=>'AL', | ||
13035 | 64919=>'AL', | ||
13036 | 64920=>'AL', | ||
13037 | 64921=>'AL', | ||
13038 | 64922=>'AL', | ||
13039 | 64923=>'AL', | ||
13040 | 64924=>'AL', | ||
13041 | 64925=>'AL', | ||
13042 | 64926=>'AL', | ||
13043 | 64927=>'AL', | ||
13044 | 64928=>'AL', | ||
13045 | 64929=>'AL', | ||
13046 | 64930=>'AL', | ||
13047 | 64931=>'AL', | ||
13048 | 64932=>'AL', | ||
13049 | 64933=>'AL', | ||
13050 | 64934=>'AL', | ||
13051 | 64935=>'AL', | ||
13052 | 64936=>'AL', | ||
13053 | 64937=>'AL', | ||
13054 | 64938=>'AL', | ||
13055 | 64939=>'AL', | ||
13056 | 64940=>'AL', | ||
13057 | 64941=>'AL', | ||
13058 | 64942=>'AL', | ||
13059 | 64943=>'AL', | ||
13060 | 64944=>'AL', | ||
13061 | 64945=>'AL', | ||
13062 | 64946=>'AL', | ||
13063 | 64947=>'AL', | ||
13064 | 64948=>'AL', | ||
13065 | 64949=>'AL', | ||
13066 | 64950=>'AL', | ||
13067 | 64951=>'AL', | ||
13068 | 64952=>'AL', | ||
13069 | 64953=>'AL', | ||
13070 | 64954=>'AL', | ||
13071 | 64955=>'AL', | ||
13072 | 64956=>'AL', | ||
13073 | 64957=>'AL', | ||
13074 | 64958=>'AL', | ||
13075 | 64959=>'AL', | ||
13076 | 64960=>'AL', | ||
13077 | 64961=>'AL', | ||
13078 | 64962=>'AL', | ||
13079 | 64963=>'AL', | ||
13080 | 64964=>'AL', | ||
13081 | 64965=>'AL', | ||
13082 | 64966=>'AL', | ||
13083 | 64967=>'AL', | ||
13084 | 65008=>'AL', | ||
13085 | 65009=>'AL', | ||
13086 | 65010=>'AL', | ||
13087 | 65011=>'AL', | ||
13088 | 65012=>'AL', | ||
13089 | 65013=>'AL', | ||
13090 | 65014=>'AL', | ||
13091 | 65015=>'AL', | ||
13092 | 65016=>'AL', | ||
13093 | 65017=>'AL', | ||
13094 | 65018=>'AL', | ||
13095 | 65019=>'AL', | ||
13096 | 65020=>'AL', | ||
13097 | 65021=>'ON', | ||
13098 | 65024=>'NSM', | ||
13099 | 65025=>'NSM', | ||
13100 | 65026=>'NSM', | ||
13101 | 65027=>'NSM', | ||
13102 | 65028=>'NSM', | ||
13103 | 65029=>'NSM', | ||
13104 | 65030=>'NSM', | ||
13105 | 65031=>'NSM', | ||
13106 | 65032=>'NSM', | ||
13107 | 65033=>'NSM', | ||
13108 | 65034=>'NSM', | ||
13109 | 65035=>'NSM', | ||
13110 | 65036=>'NSM', | ||
13111 | 65037=>'NSM', | ||
13112 | 65038=>'NSM', | ||
13113 | 65039=>'NSM', | ||
13114 | 65040=>'ON', | ||
13115 | 65041=>'ON', | ||
13116 | 65042=>'ON', | ||
13117 | 65043=>'ON', | ||
13118 | 65044=>'ON', | ||
13119 | 65045=>'ON', | ||
13120 | 65046=>'ON', | ||
13121 | 65047=>'ON', | ||
13122 | 65048=>'ON', | ||
13123 | 65049=>'ON', | ||
13124 | 65056=>'NSM', | ||
13125 | 65057=>'NSM', | ||
13126 | 65058=>'NSM', | ||
13127 | 65059=>'NSM', | ||
13128 | 65072=>'ON', | ||
13129 | 65073=>'ON', | ||
13130 | 65074=>'ON', | ||
13131 | 65075=>'ON', | ||
13132 | 65076=>'ON', | ||
13133 | 65077=>'ON', | ||
13134 | 65078=>'ON', | ||
13135 | 65079=>'ON', | ||
13136 | 65080=>'ON', | ||
13137 | 65081=>'ON', | ||
13138 | 65082=>'ON', | ||
13139 | 65083=>'ON', | ||
13140 | 65084=>'ON', | ||
13141 | 65085=>'ON', | ||
13142 | 65086=>'ON', | ||
13143 | 65087=>'ON', | ||
13144 | 65088=>'ON', | ||
13145 | 65089=>'ON', | ||
13146 | 65090=>'ON', | ||
13147 | 65091=>'ON', | ||
13148 | 65092=>'ON', | ||
13149 | 65093=>'ON', | ||
13150 | 65094=>'ON', | ||
13151 | 65095=>'ON', | ||
13152 | 65096=>'ON', | ||
13153 | 65097=>'ON', | ||
13154 | 65098=>'ON', | ||
13155 | 65099=>'ON', | ||
13156 | 65100=>'ON', | ||
13157 | 65101=>'ON', | ||
13158 | 65102=>'ON', | ||
13159 | 65103=>'ON', | ||
13160 | 65104=>'CS', | ||
13161 | 65105=>'ON', | ||
13162 | 65106=>'CS', | ||
13163 | 65108=>'ON', | ||
13164 | 65109=>'CS', | ||
13165 | 65110=>'ON', | ||
13166 | 65111=>'ON', | ||
13167 | 65112=>'ON', | ||
13168 | 65113=>'ON', | ||
13169 | 65114=>'ON', | ||
13170 | 65115=>'ON', | ||
13171 | 65116=>'ON', | ||
13172 | 65117=>'ON', | ||
13173 | 65118=>'ON', | ||
13174 | 65119=>'ET', | ||
13175 | 65120=>'ON', | ||
13176 | 65121=>'ON', | ||
13177 | 65122=>'ES', | ||
13178 | 65123=>'ES', | ||
13179 | 65124=>'ON', | ||
13180 | 65125=>'ON', | ||
13181 | 65126=>'ON', | ||
13182 | 65128=>'ON', | ||
13183 | 65129=>'ET', | ||
13184 | 65130=>'ET', | ||
13185 | 65131=>'ON', | ||
13186 | 65136=>'AL', | ||
13187 | 65137=>'AL', | ||
13188 | 65138=>'AL', | ||
13189 | 65139=>'AL', | ||
13190 | 65140=>'AL', | ||
13191 | 65142=>'AL', | ||
13192 | 65143=>'AL', | ||
13193 | 65144=>'AL', | ||
13194 | 65145=>'AL', | ||
13195 | 65146=>'AL', | ||
13196 | 65147=>'AL', | ||
13197 | 65148=>'AL', | ||
13198 | 65149=>'AL', | ||
13199 | 65150=>'AL', | ||
13200 | 65151=>'AL', | ||
13201 | 65152=>'AL', | ||
13202 | 65153=>'AL', | ||
13203 | 65154=>'AL', | ||
13204 | 65155=>'AL', | ||
13205 | 65156=>'AL', | ||
13206 | 65157=>'AL', | ||
13207 | 65158=>'AL', | ||
13208 | 65159=>'AL', | ||
13209 | 65160=>'AL', | ||
13210 | 65161=>'AL', | ||
13211 | 65162=>'AL', | ||
13212 | 65163=>'AL', | ||
13213 | 65164=>'AL', | ||
13214 | 65165=>'AL', | ||
13215 | 65166=>'AL', | ||
13216 | 65167=>'AL', | ||
13217 | 65168=>'AL', | ||
13218 | 65169=>'AL', | ||
13219 | 65170=>'AL', | ||
13220 | 65171=>'AL', | ||
13221 | 65172=>'AL', | ||
13222 | 65173=>'AL', | ||
13223 | 65174=>'AL', | ||
13224 | 65175=>'AL', | ||
13225 | 65176=>'AL', | ||
13226 | 65177=>'AL', | ||
13227 | 65178=>'AL', | ||
13228 | 65179=>'AL', | ||
13229 | 65180=>'AL', | ||
13230 | 65181=>'AL', | ||
13231 | 65182=>'AL', | ||
13232 | 65183=>'AL', | ||
13233 | 65184=>'AL', | ||
13234 | 65185=>'AL', | ||
13235 | 65186=>'AL', | ||
13236 | 65187=>'AL', | ||
13237 | 65188=>'AL', | ||
13238 | 65189=>'AL', | ||
13239 | 65190=>'AL', | ||
13240 | 65191=>'AL', | ||
13241 | 65192=>'AL', | ||
13242 | 65193=>'AL', | ||
13243 | 65194=>'AL', | ||
13244 | 65195=>'AL', | ||
13245 | 65196=>'AL', | ||
13246 | 65197=>'AL', | ||
13247 | 65198=>'AL', | ||
13248 | 65199=>'AL', | ||
13249 | 65200=>'AL', | ||
13250 | 65201=>'AL', | ||
13251 | 65202=>'AL', | ||
13252 | 65203=>'AL', | ||
13253 | 65204=>'AL', | ||
13254 | 65205=>'AL', | ||
13255 | 65206=>'AL', | ||
13256 | 65207=>'AL', | ||
13257 | 65208=>'AL', | ||
13258 | 65209=>'AL', | ||
13259 | 65210=>'AL', | ||
13260 | 65211=>'AL', | ||
13261 | 65212=>'AL', | ||
13262 | 65213=>'AL', | ||
13263 | 65214=>'AL', | ||
13264 | 65215=>'AL', | ||
13265 | 65216=>'AL', | ||
13266 | 65217=>'AL', | ||
13267 | 65218=>'AL', | ||
13268 | 65219=>'AL', | ||
13269 | 65220=>'AL', | ||
13270 | 65221=>'AL', | ||
13271 | 65222=>'AL', | ||
13272 | 65223=>'AL', | ||
13273 | 65224=>'AL', | ||
13274 | 65225=>'AL', | ||
13275 | 65226=>'AL', | ||
13276 | 65227=>'AL', | ||
13277 | 65228=>'AL', | ||
13278 | 65229=>'AL', | ||
13279 | 65230=>'AL', | ||
13280 | 65231=>'AL', | ||
13281 | 65232=>'AL', | ||
13282 | 65233=>'AL', | ||
13283 | 65234=>'AL', | ||
13284 | 65235=>'AL', | ||
13285 | 65236=>'AL', | ||
13286 | 65237=>'AL', | ||
13287 | 65238=>'AL', | ||
13288 | 65239=>'AL', | ||
13289 | 65240=>'AL', | ||
13290 | 65241=>'AL', | ||
13291 | 65242=>'AL', | ||
13292 | 65243=>'AL', | ||
13293 | 65244=>'AL', | ||
13294 | 65245=>'AL', | ||
13295 | 65246=>'AL', | ||
13296 | 65247=>'AL', | ||
13297 | 65248=>'AL', | ||
13298 | 65249=>'AL', | ||
13299 | 65250=>'AL', | ||
13300 | 65251=>'AL', | ||
13301 | 65252=>'AL', | ||
13302 | 65253=>'AL', | ||
13303 | 65254=>'AL', | ||
13304 | 65255=>'AL', | ||
13305 | 65256=>'AL', | ||
13306 | 65257=>'AL', | ||
13307 | 65258=>'AL', | ||
13308 | 65259=>'AL', | ||
13309 | 65260=>'AL', | ||
13310 | 65261=>'AL', | ||
13311 | 65262=>'AL', | ||
13312 | 65263=>'AL', | ||
13313 | 65264=>'AL', | ||
13314 | 65265=>'AL', | ||
13315 | 65266=>'AL', | ||
13316 | 65267=>'AL', | ||
13317 | 65268=>'AL', | ||
13318 | 65269=>'AL', | ||
13319 | 65270=>'AL', | ||
13320 | 65271=>'AL', | ||
13321 | 65272=>'AL', | ||
13322 | 65273=>'AL', | ||
13323 | 65274=>'AL', | ||
13324 | 65275=>'AL', | ||
13325 | 65276=>'AL', | ||
13326 | 65279=>'BN', | ||
13327 | 65281=>'ON', | ||
13328 | 65282=>'ON', | ||
13329 | 65283=>'ET', | ||
13330 | 65284=>'ET', | ||
13331 | 65285=>'ET', | ||
13332 | 65286=>'ON', | ||
13333 | 65287=>'ON', | ||
13334 | 65288=>'ON', | ||
13335 | 65289=>'ON', | ||
13336 | 65290=>'ON', | ||
13337 | 65291=>'ES', | ||
13338 | 65292=>'CS', | ||
13339 | 65293=>'ES', | ||
13340 | 65294=>'CS', | ||
13341 | 65295=>'CS', | ||
13342 | 65296=>'EN', | ||
13343 | 65297=>'EN', | ||
13344 | 65298=>'EN', | ||
13345 | 65299=>'EN', | ||
13346 | 65300=>'EN', | ||
13347 | 65301=>'EN', | ||
13348 | 65302=>'EN', | ||
13349 | 65303=>'EN', | ||
13350 | 65304=>'EN', | ||
13351 | 65305=>'EN', | ||
13352 | 65306=>'CS', | ||
13353 | 65307=>'ON', | ||
13354 | 65308=>'ON', | ||
13355 | 65309=>'ON', | ||
13356 | 65310=>'ON', | ||
13357 | 65311=>'ON', | ||
13358 | 65312=>'ON', | ||
13359 | 65313=>'L', | ||
13360 | 65314=>'L', | ||
13361 | 65315=>'L', | ||
13362 | 65316=>'L', | ||
13363 | 65317=>'L', | ||
13364 | 65318=>'L', | ||
13365 | 65319=>'L', | ||
13366 | 65320=>'L', | ||
13367 | 65321=>'L', | ||
13368 | 65322=>'L', | ||
13369 | 65323=>'L', | ||
13370 | 65324=>'L', | ||
13371 | 65325=>'L', | ||
13372 | 65326=>'L', | ||
13373 | 65327=>'L', | ||
13374 | 65328=>'L', | ||
13375 | 65329=>'L', | ||
13376 | 65330=>'L', | ||
13377 | 65331=>'L', | ||
13378 | 65332=>'L', | ||
13379 | 65333=>'L', | ||
13380 | 65334=>'L', | ||
13381 | 65335=>'L', | ||
13382 | 65336=>'L', | ||
13383 | 65337=>'L', | ||
13384 | 65338=>'L', | ||
13385 | 65339=>'ON', | ||
13386 | 65340=>'ON', | ||
13387 | 65341=>'ON', | ||
13388 | 65342=>'ON', | ||
13389 | 65343=>'ON', | ||
13390 | 65344=>'ON', | ||
13391 | 65345=>'L', | ||
13392 | 65346=>'L', | ||
13393 | 65347=>'L', | ||
13394 | 65348=>'L', | ||
13395 | 65349=>'L', | ||
13396 | 65350=>'L', | ||
13397 | 65351=>'L', | ||
13398 | 65352=>'L', | ||
13399 | 65353=>'L', | ||
13400 | 65354=>'L', | ||
13401 | 65355=>'L', | ||
13402 | 65356=>'L', | ||
13403 | 65357=>'L', | ||
13404 | 65358=>'L', | ||
13405 | 65359=>'L', | ||
13406 | 65360=>'L', | ||
13407 | 65361=>'L', | ||
13408 | 65362=>'L', | ||
13409 | 65363=>'L', | ||
13410 | 65364=>'L', | ||
13411 | 65365=>'L', | ||
13412 | 65366=>'L', | ||
13413 | 65367=>'L', | ||
13414 | 65368=>'L', | ||
13415 | 65369=>'L', | ||
13416 | 65370=>'L', | ||
13417 | 65371=>'ON', | ||
13418 | 65372=>'ON', | ||
13419 | 65373=>'ON', | ||
13420 | 65374=>'ON', | ||
13421 | 65375=>'ON', | ||
13422 | 65376=>'ON', | ||
13423 | 65377=>'ON', | ||
13424 | 65378=>'ON', | ||
13425 | 65379=>'ON', | ||
13426 | 65380=>'ON', | ||
13427 | 65381=>'ON', | ||
13428 | 65382=>'L', | ||
13429 | 65383=>'L', | ||
13430 | 65384=>'L', | ||
13431 | 65385=>'L', | ||
13432 | 65386=>'L', | ||
13433 | 65387=>'L', | ||
13434 | 65388=>'L', | ||
13435 | 65389=>'L', | ||
13436 | 65390=>'L', | ||
13437 | 65391=>'L', | ||
13438 | 65392=>'L', | ||
13439 | 65393=>'L', | ||
13440 | 65394=>'L', | ||
13441 | 65395=>'L', | ||
13442 | 65396=>'L', | ||
13443 | 65397=>'L', | ||
13444 | 65398=>'L', | ||
13445 | 65399=>'L', | ||
13446 | 65400=>'L', | ||
13447 | 65401=>'L', | ||
13448 | 65402=>'L', | ||
13449 | 65403=>'L', | ||
13450 | 65404=>'L', | ||
13451 | 65405=>'L', | ||
13452 | 65406=>'L', | ||
13453 | 65407=>'L', | ||
13454 | 65408=>'L', | ||
13455 | 65409=>'L', | ||
13456 | 65410=>'L', | ||
13457 | 65411=>'L', | ||
13458 | 65412=>'L', | ||
13459 | 65413=>'L', | ||
13460 | 65414=>'L', | ||
13461 | 65415=>'L', | ||
13462 | 65416=>'L', | ||
13463 | 65417=>'L', | ||
13464 | 65418=>'L', | ||
13465 | 65419=>'L', | ||
13466 | 65420=>'L', | ||
13467 | 65421=>'L', | ||
13468 | 65422=>'L', | ||
13469 | 65423=>'L', | ||
13470 | 65424=>'L', | ||
13471 | 65425=>'L', | ||
13472 | 65426=>'L', | ||
13473 | 65427=>'L', | ||
13474 | 65428=>'L', | ||
13475 | 65429=>'L', | ||
13476 | 65430=>'L', | ||
13477 | 65431=>'L', | ||
13478 | 65432=>'L', | ||
13479 | 65433=>'L', | ||
13480 | 65434=>'L', | ||
13481 | 65435=>'L', | ||
13482 | 65436=>'L', | ||
13483 | 65437=>'L', | ||
13484 | 65438=>'L', | ||
13485 | 65439=>'L', | ||
13486 | 65440=>'L', | ||
13487 | 65441=>'L', | ||
13488 | 65442=>'L', | ||
13489 | 65443=>'L', | ||
13490 | 65444=>'L', | ||
13491 | 65445=>'L', | ||
13492 | 65446=>'L', | ||
13493 | 65447=>'L', | ||
13494 | 65448=>'L', | ||
13495 | 65449=>'L', | ||
13496 | 65450=>'L', | ||
13497 | 65451=>'L', | ||
13498 | 65452=>'L', | ||
13499 | 65453=>'L', | ||
13500 | 65454=>'L', | ||
13501 | 65455=>'L', | ||
13502 | 65456=>'L', | ||
13503 | 65457=>'L', | ||
13504 | 65458=>'L', | ||
13505 | 65459=>'L', | ||
13506 | 65460=>'L', | ||
13507 | 65461=>'L', | ||
13508 | 65462=>'L', | ||
13509 | 65463=>'L', | ||
13510 | 65464=>'L', | ||
13511 | 65465=>'L', | ||
13512 | 65466=>'L', | ||
13513 | 65467=>'L', | ||
13514 | 65468=>'L', | ||
13515 | 65469=>'L', | ||
13516 | 65470=>'L', | ||
13517 | 65474=>'L', | ||
13518 | 65475=>'L', | ||
13519 | 65476=>'L', | ||
13520 | 65477=>'L', | ||
13521 | 65478=>'L', | ||
13522 | 65479=>'L', | ||
13523 | 65482=>'L', | ||
13524 | 65483=>'L', | ||
13525 | 65484=>'L', | ||
13526 | 65485=>'L', | ||
13527 | 65486=>'L', | ||
13528 | 65487=>'L', | ||
13529 | 65490=>'L', | ||
13530 | 65491=>'L', | ||
13531 | 65492=>'L', | ||
13532 | 65493=>'L', | ||
13533 | 65494=>'L', | ||
13534 | 65495=>'L', | ||
13535 | 65498=>'L', | ||
13536 | 65499=>'L', | ||
13537 | 65500=>'L', | ||
13538 | 65504=>'ET', | ||
13539 | 65505=>'ET', | ||
13540 | 65506=>'ON', | ||
13541 | 65507=>'ON', | ||
13542 | 65508=>'ON', | ||
13543 | 65509=>'ET', | ||
13544 | 65510=>'ET', | ||
13545 | 65512=>'ON', | ||
13546 | 65513=>'ON', | ||
13547 | 65514=>'ON', | ||
13548 | 65515=>'ON', | ||
13549 | 65516=>'ON', | ||
13550 | 65517=>'ON', | ||
13551 | 65518=>'ON', | ||
13552 | 65529=>'ON', | ||
13553 | 65530=>'ON', | ||
13554 | 65531=>'ON', | ||
13555 | 65532=>'ON', | ||
13556 | 65533=>'ON', | ||
13557 | 65536=>'L', | ||
13558 | 65537=>'L', | ||
13559 | 65538=>'L', | ||
13560 | 65539=>'L', | ||
13561 | 65540=>'L', | ||
13562 | 65541=>'L', | ||
13563 | 65542=>'L', | ||
13564 | 65543=>'L', | ||
13565 | 65544=>'L', | ||
13566 | 65545=>'L', | ||
13567 | 65546=>'L', | ||
13568 | 65547=>'L', | ||
13569 | 65549=>'L', | ||
13570 | 65550=>'L', | ||
13571 | 65551=>'L', | ||
13572 | 65552=>'L', | ||
13573 | 65553=>'L', | ||
13574 | 65554=>'L', | ||
13575 | 65555=>'L', | ||
13576 | 65556=>'L', | ||
13577 | 65557=>'L', | ||
13578 | 65558=>'L', | ||
13579 | 65559=>'L', | ||
13580 | 65560=>'L', | ||
13581 | 65561=>'L', | ||
13582 | 65562=>'L', | ||
13583 | 65563=>'L', | ||
13584 | 65564=>'L', | ||
13585 | 65565=>'L', | ||
13586 | 65566=>'L', | ||
13587 | 65567=>'L', | ||
13588 | 65568=>'L', | ||
13589 | 65569=>'L', | ||
13590 | 65570=>'L', | ||
13591 | 65571=>'L', | ||
13592 | 65572=>'L', | ||
13593 | 65573=>'L', | ||
13594 | 65574=>'L', | ||
13595 | 65576=>'L', | ||
13596 | 65577=>'L', | ||
13597 | 65578=>'L', | ||
13598 | 65579=>'L', | ||
13599 | 65580=>'L', | ||
13600 | 65581=>'L', | ||
13601 | 65582=>'L', | ||
13602 | 65583=>'L', | ||
13603 | 65584=>'L', | ||
13604 | 65585=>'L', | ||
13605 | 65586=>'L', | ||
13606 | 65587=>'L', | ||
13607 | 65588=>'L', | ||
13608 | 65589=>'L', | ||
13609 | 65590=>'L', | ||
13610 | 65591=>'L', | ||
13611 | 65592=>'L', | ||
13612 | 65593=>'L', | ||
13613 | 65594=>'L', | ||
13614 | 65596=>'L', | ||
13615 | 65597=>'L', | ||
13616 | 65599=>'L', | ||
13617 | 65600=>'L', | ||
13618 | 65601=>'L', | ||
13619 | 65602=>'L', | ||
13620 | 65603=>'L', | ||
13621 | 65604=>'L', | ||
13622 | 65605=>'L', | ||
13623 | 65606=>'L', | ||
13624 | 65607=>'L', | ||
13625 | 65608=>'L', | ||
13626 | 65609=>'L', | ||
13627 | 65610=>'L', | ||
13628 | 65611=>'L', | ||
13629 | 65612=>'L', | ||
13630 | 65613=>'L', | ||
13631 | 65616=>'L', | ||
13632 | 65617=>'L', | ||
13633 | 65618=>'L', | ||
13634 | 65619=>'L', | ||
13635 | 65620=>'L', | ||
13636 | 65621=>'L', | ||
13637 | 65622=>'L', | ||
13638 | 65623=>'L', | ||
13639 | 65624=>'L', | ||
13640 | 65625=>'L', | ||
13641 | 65626=>'L', | ||
13642 | 65627=>'L', | ||
13643 | 65628=>'L', | ||
13644 | 65629=>'L', | ||
13645 | 65664=>'L', | ||
13646 | 65665=>'L', | ||
13647 | 65666=>'L', | ||
13648 | 65667=>'L', | ||
13649 | 65668=>'L', | ||
13650 | 65669=>'L', | ||
13651 | 65670=>'L', | ||
13652 | 65671=>'L', | ||
13653 | 65672=>'L', | ||
13654 | 65673=>'L', | ||
13655 | 65674=>'L', | ||
13656 | 65675=>'L', | ||
13657 | 65676=>'L', | ||
13658 | 65677=>'L', | ||
13659 | 65678=>'L', | ||
13660 | 65679=>'L', | ||
13661 | 65680=>'L', | ||
13662 | 65681=>'L', | ||
13663 | 65682=>'L', | ||
13664 | 65683=>'L', | ||
13665 | 65684=>'L', | ||
13666 | 65685=>'L', | ||
13667 | 65686=>'L', | ||
13668 | 65687=>'L', | ||
13669 | 65688=>'L', | ||
13670 | 65689=>'L', | ||
13671 | 65690=>'L', | ||
13672 | 65691=>'L', | ||
13673 | 65692=>'L', | ||
13674 | 65693=>'L', | ||
13675 | 65694=>'L', | ||
13676 | 65695=>'L', | ||
13677 | 65696=>'L', | ||
13678 | 65697=>'L', | ||
13679 | 65698=>'L', | ||
13680 | 65699=>'L', | ||
13681 | 65700=>'L', | ||
13682 | 65701=>'L', | ||
13683 | 65702=>'L', | ||
13684 | 65703=>'L', | ||
13685 | 65704=>'L', | ||
13686 | 65705=>'L', | ||
13687 | 65706=>'L', | ||
13688 | 65707=>'L', | ||
13689 | 65708=>'L', | ||
13690 | 65709=>'L', | ||
13691 | 65710=>'L', | ||
13692 | 65711=>'L', | ||
13693 | 65712=>'L', | ||
13694 | 65713=>'L', | ||
13695 | 65714=>'L', | ||
13696 | 65715=>'L', | ||
13697 | 65716=>'L', | ||
13698 | 65717=>'L', | ||
13699 | 65718=>'L', | ||
13700 | 65719=>'L', | ||
13701 | 65720=>'L', | ||
13702 | 65721=>'L', | ||
13703 | 65722=>'L', | ||
13704 | 65723=>'L', | ||
13705 | 65724=>'L', | ||
13706 | 65725=>'L', | ||
13707 | 65726=>'L', | ||
13708 | 65727=>'L', | ||
13709 | 65728=>'L', | ||
13710 | 65729=>'L', | ||
13711 | 65730=>'L', | ||
13712 | 65731=>'L', | ||
13713 | 65732=>'L', | ||
13714 | 65733=>'L', | ||
13715 | 65734=>'L', | ||
13716 | 65735=>'L', | ||
13717 | 65736=>'L', | ||
13718 | 65737=>'L', | ||
13719 | 65738=>'L', | ||
13720 | 65739=>'L', | ||
13721 | 65740=>'L', | ||
13722 | 65741=>'L', | ||
13723 | 65742=>'L', | ||
13724 | 65743=>'L', | ||
13725 | 65744=>'L', | ||
13726 | 65745=>'L', | ||
13727 | 65746=>'L', | ||
13728 | 65747=>'L', | ||
13729 | 65748=>'L', | ||
13730 | 65749=>'L', | ||
13731 | 65750=>'L', | ||
13732 | 65751=>'L', | ||
13733 | 65752=>'L', | ||
13734 | 65753=>'L', | ||
13735 | 65754=>'L', | ||
13736 | 65755=>'L', | ||
13737 | 65756=>'L', | ||
13738 | 65757=>'L', | ||
13739 | 65758=>'L', | ||
13740 | 65759=>'L', | ||
13741 | 65760=>'L', | ||
13742 | 65761=>'L', | ||
13743 | 65762=>'L', | ||
13744 | 65763=>'L', | ||
13745 | 65764=>'L', | ||
13746 | 65765=>'L', | ||
13747 | 65766=>'L', | ||
13748 | 65767=>'L', | ||
13749 | 65768=>'L', | ||
13750 | 65769=>'L', | ||
13751 | 65770=>'L', | ||
13752 | 65771=>'L', | ||
13753 | 65772=>'L', | ||
13754 | 65773=>'L', | ||
13755 | 65774=>'L', | ||
13756 | 65775=>'L', | ||
13757 | 65776=>'L', | ||
13758 | 65777=>'L', | ||
13759 | 65778=>'L', | ||
13760 | 65779=>'L', | ||
13761 | 65780=>'L', | ||
13762 | 65781=>'L', | ||
13763 | 65782=>'L', | ||
13764 | 65783=>'L', | ||
13765 | 65784=>'L', | ||
13766 | 65785=>'L', | ||
13767 | 65786=>'L', | ||
13768 | 65792=>'L', | ||
13769 | 65793=>'ON', | ||
13770 | 65794=>'L', | ||
13771 | 65799=>'L', | ||
13772 | 65800=>'L', | ||
13773 | 65801=>'L', | ||
13774 | 65802=>'L', | ||
13775 | 65803=>'L', | ||
13776 | 65804=>'L', | ||
13777 | 65805=>'L', | ||
13778 | 65806=>'L', | ||
13779 | 65807=>'L', | ||
13780 | 65808=>'L', | ||
13781 | 65809=>'L', | ||
13782 | 65810=>'L', | ||
13783 | 65811=>'L', | ||
13784 | 65812=>'L', | ||
13785 | 65813=>'L', | ||
13786 | 65814=>'L', | ||
13787 | 65815=>'L', | ||
13788 | 65816=>'L', | ||
13789 | 65817=>'L', | ||
13790 | 65818=>'L', | ||
13791 | 65819=>'L', | ||
13792 | 65820=>'L', | ||
13793 | 65821=>'L', | ||
13794 | 65822=>'L', | ||
13795 | 65823=>'L', | ||
13796 | 65824=>'L', | ||
13797 | 65825=>'L', | ||
13798 | 65826=>'L', | ||
13799 | 65827=>'L', | ||
13800 | 65828=>'L', | ||
13801 | 65829=>'L', | ||
13802 | 65830=>'L', | ||
13803 | 65831=>'L', | ||
13804 | 65832=>'L', | ||
13805 | 65833=>'L', | ||
13806 | 65834=>'L', | ||
13807 | 65835=>'L', | ||
13808 | 65836=>'L', | ||
13809 | 65837=>'L', | ||
13810 | 65838=>'L', | ||
13811 | 65839=>'L', | ||
13812 | 65840=>'L', | ||
13813 | 65841=>'L', | ||
13814 | 65842=>'L', | ||
13815 | 65843=>'L', | ||
13816 | 65847=>'L', | ||
13817 | 65848=>'L', | ||
13818 | 65849=>'L', | ||
13819 | 65850=>'L', | ||
13820 | 65851=>'L', | ||
13821 | 65852=>'L', | ||
13822 | 65853=>'L', | ||
13823 | 65854=>'L', | ||
13824 | 65855=>'L', | ||
13825 | 65856=>'ON', | ||
13826 | 65857=>'ON', | ||
13827 | 65858=>'ON', | ||
13828 | 65859=>'ON', | ||
13829 | 65860=>'ON', | ||
13830 | 65861=>'ON', | ||
13831 | 65862=>'ON', | ||
13832 | 65863=>'ON', | ||
13833 | 65864=>'ON', | ||
13834 | 65865=>'ON', | ||
13835 | 65866=>'ON', | ||
13836 | 65867=>'ON', | ||
13837 | 65868=>'ON', | ||
13838 | 65869=>'ON', | ||
13839 | 65870=>'ON', | ||
13840 | 65871=>'ON', | ||
13841 | 65872=>'ON', | ||
13842 | 65873=>'ON', | ||
13843 | 65874=>'ON', | ||
13844 | 65875=>'ON', | ||
13845 | 65876=>'ON', | ||
13846 | 65877=>'ON', | ||
13847 | 65878=>'ON', | ||
13848 | 65879=>'ON', | ||
13849 | 65880=>'ON', | ||
13850 | 65881=>'ON', | ||
13851 | 65882=>'ON', | ||
13852 | 65883=>'ON', | ||
13853 | 65884=>'ON', | ||
13854 | 65885=>'ON', | ||
13855 | 65886=>'ON', | ||
13856 | 65887=>'ON', | ||
13857 | 65888=>'ON', | ||
13858 | 65889=>'ON', | ||
13859 | 65890=>'ON', | ||
13860 | 65891=>'ON', | ||
13861 | 65892=>'ON', | ||
13862 | 65893=>'ON', | ||
13863 | 65894=>'ON', | ||
13864 | 65895=>'ON', | ||
13865 | 65896=>'ON', | ||
13866 | 65897=>'ON', | ||
13867 | 65898=>'ON', | ||
13868 | 65899=>'ON', | ||
13869 | 65900=>'ON', | ||
13870 | 65901=>'ON', | ||
13871 | 65902=>'ON', | ||
13872 | 65903=>'ON', | ||
13873 | 65904=>'ON', | ||
13874 | 65905=>'ON', | ||
13875 | 65906=>'ON', | ||
13876 | 65907=>'ON', | ||
13877 | 65908=>'ON', | ||
13878 | 65909=>'ON', | ||
13879 | 65910=>'ON', | ||
13880 | 65911=>'ON', | ||
13881 | 65912=>'ON', | ||
13882 | 65913=>'ON', | ||
13883 | 65914=>'ON', | ||
13884 | 65915=>'ON', | ||
13885 | 65916=>'ON', | ||
13886 | 65917=>'ON', | ||
13887 | 65918=>'ON', | ||
13888 | 65919=>'ON', | ||
13889 | 65920=>'ON', | ||
13890 | 65921=>'ON', | ||
13891 | 65922=>'ON', | ||
13892 | 65923=>'ON', | ||
13893 | 65924=>'ON', | ||
13894 | 65925=>'ON', | ||
13895 | 65926=>'ON', | ||
13896 | 65927=>'ON', | ||
13897 | 65928=>'ON', | ||
13898 | 65929=>'ON', | ||
13899 | 65930=>'ON', | ||
13900 | 66304=>'L', | ||
13901 | 66305=>'L', | ||
13902 | 66306=>'L', | ||
13903 | 66307=>'L', | ||
13904 | 66308=>'L', | ||
13905 | 66309=>'L', | ||
13906 | 66310=>'L', | ||
13907 | 66311=>'L', | ||
13908 | 66312=>'L', | ||
13909 | 66313=>'L', | ||
13910 | 66314=>'L', | ||
13911 | 66315=>'L', | ||
13912 | 66316=>'L', | ||
13913 | 66317=>'L', | ||
13914 | 66318=>'L', | ||
13915 | 66319=>'L', | ||
13916 | 66320=>'L', | ||
13917 | 66321=>'L', | ||
13918 | 66322=>'L', | ||
13919 | 66323=>'L', | ||
13920 | 66324=>'L', | ||
13921 | 66325=>'L', | ||
13922 | 66326=>'L', | ||
13923 | 66327=>'L', | ||
13924 | 66328=>'L', | ||
13925 | 66329=>'L', | ||
13926 | 66330=>'L', | ||
13927 | 66331=>'L', | ||
13928 | 66332=>'L', | ||
13929 | 66333=>'L', | ||
13930 | 66334=>'L', | ||
13931 | 66336=>'L', | ||
13932 | 66337=>'L', | ||
13933 | 66338=>'L', | ||
13934 | 66339=>'L', | ||
13935 | 66352=>'L', | ||
13936 | 66353=>'L', | ||
13937 | 66354=>'L', | ||
13938 | 66355=>'L', | ||
13939 | 66356=>'L', | ||
13940 | 66357=>'L', | ||
13941 | 66358=>'L', | ||
13942 | 66359=>'L', | ||
13943 | 66360=>'L', | ||
13944 | 66361=>'L', | ||
13945 | 66362=>'L', | ||
13946 | 66363=>'L', | ||
13947 | 66364=>'L', | ||
13948 | 66365=>'L', | ||
13949 | 66366=>'L', | ||
13950 | 66367=>'L', | ||
13951 | 66368=>'L', | ||
13952 | 66369=>'L', | ||
13953 | 66370=>'L', | ||
13954 | 66371=>'L', | ||
13955 | 66372=>'L', | ||
13956 | 66373=>'L', | ||
13957 | 66374=>'L', | ||
13958 | 66375=>'L', | ||
13959 | 66376=>'L', | ||
13960 | 66377=>'L', | ||
13961 | 66378=>'L', | ||
13962 | 66432=>'L', | ||
13963 | 66433=>'L', | ||
13964 | 66434=>'L', | ||
13965 | 66435=>'L', | ||
13966 | 66436=>'L', | ||
13967 | 66437=>'L', | ||
13968 | 66438=>'L', | ||
13969 | 66439=>'L', | ||
13970 | 66440=>'L', | ||
13971 | 66441=>'L', | ||
13972 | 66442=>'L', | ||
13973 | 66443=>'L', | ||
13974 | 66444=>'L', | ||
13975 | 66445=>'L', | ||
13976 | 66446=>'L', | ||
13977 | 66447=>'L', | ||
13978 | 66448=>'L', | ||
13979 | 66449=>'L', | ||
13980 | 66450=>'L', | ||
13981 | 66451=>'L', | ||
13982 | 66452=>'L', | ||
13983 | 66453=>'L', | ||
13984 | 66454=>'L', | ||
13985 | 66455=>'L', | ||
13986 | 66456=>'L', | ||
13987 | 66457=>'L', | ||
13988 | 66458=>'L', | ||
13989 | 66459=>'L', | ||
13990 | 66460=>'L', | ||
13991 | 66461=>'L', | ||
13992 | 66463=>'L', | ||
13993 | 66464=>'L', | ||
13994 | 66465=>'L', | ||
13995 | 66466=>'L', | ||
13996 | 66467=>'L', | ||
13997 | 66468=>'L', | ||
13998 | 66469=>'L', | ||
13999 | 66470=>'L', | ||
14000 | 66471=>'L', | ||
14001 | 66472=>'L', | ||
14002 | 66473=>'L', | ||
14003 | 66474=>'L', | ||
14004 | 66475=>'L', | ||
14005 | 66476=>'L', | ||
14006 | 66477=>'L', | ||
14007 | 66478=>'L', | ||
14008 | 66479=>'L', | ||
14009 | 66480=>'L', | ||
14010 | 66481=>'L', | ||
14011 | 66482=>'L', | ||
14012 | 66483=>'L', | ||
14013 | 66484=>'L', | ||
14014 | 66485=>'L', | ||
14015 | 66486=>'L', | ||
14016 | 66487=>'L', | ||
14017 | 66488=>'L', | ||
14018 | 66489=>'L', | ||
14019 | 66490=>'L', | ||
14020 | 66491=>'L', | ||
14021 | 66492=>'L', | ||
14022 | 66493=>'L', | ||
14023 | 66494=>'L', | ||
14024 | 66495=>'L', | ||
14025 | 66496=>'L', | ||
14026 | 66497=>'L', | ||
14027 | 66498=>'L', | ||
14028 | 66499=>'L', | ||
14029 | 66504=>'L', | ||
14030 | 66505=>'L', | ||
14031 | 66506=>'L', | ||
14032 | 66507=>'L', | ||
14033 | 66508=>'L', | ||
14034 | 66509=>'L', | ||
14035 | 66510=>'L', | ||
14036 | 66511=>'L', | ||
14037 | 66512=>'L', | ||
14038 | 66513=>'L', | ||
14039 | 66514=>'L', | ||
14040 | 66515=>'L', | ||
14041 | 66516=>'L', | ||
14042 | 66517=>'L', | ||
14043 | 66560=>'L', | ||
14044 | 66561=>'L', | ||
14045 | 66562=>'L', | ||
14046 | 66563=>'L', | ||
14047 | 66564=>'L', | ||
14048 | 66565=>'L', | ||
14049 | 66566=>'L', | ||
14050 | 66567=>'L', | ||
14051 | 66568=>'L', | ||
14052 | 66569=>'L', | ||
14053 | 66570=>'L', | ||
14054 | 66571=>'L', | ||
14055 | 66572=>'L', | ||
14056 | 66573=>'L', | ||
14057 | 66574=>'L', | ||
14058 | 66575=>'L', | ||
14059 | 66576=>'L', | ||
14060 | 66577=>'L', | ||
14061 | 66578=>'L', | ||
14062 | 66579=>'L', | ||
14063 | 66580=>'L', | ||
14064 | 66581=>'L', | ||
14065 | 66582=>'L', | ||
14066 | 66583=>'L', | ||
14067 | 66584=>'L', | ||
14068 | 66585=>'L', | ||
14069 | 66586=>'L', | ||
14070 | 66587=>'L', | ||
14071 | 66588=>'L', | ||
14072 | 66589=>'L', | ||
14073 | 66590=>'L', | ||
14074 | 66591=>'L', | ||
14075 | 66592=>'L', | ||
14076 | 66593=>'L', | ||
14077 | 66594=>'L', | ||
14078 | 66595=>'L', | ||
14079 | 66596=>'L', | ||
14080 | 66597=>'L', | ||
14081 | 66598=>'L', | ||
14082 | 66599=>'L', | ||
14083 | 66600=>'L', | ||
14084 | 66601=>'L', | ||
14085 | 66602=>'L', | ||
14086 | 66603=>'L', | ||
14087 | 66604=>'L', | ||
14088 | 66605=>'L', | ||
14089 | 66606=>'L', | ||
14090 | 66607=>'L', | ||
14091 | 66608=>'L', | ||
14092 | 66609=>'L', | ||
14093 | 66610=>'L', | ||
14094 | 66611=>'L', | ||
14095 | 66612=>'L', | ||
14096 | 66613=>'L', | ||
14097 | 66614=>'L', | ||
14098 | 66615=>'L', | ||
14099 | 66616=>'L', | ||
14100 | 66617=>'L', | ||
14101 | 66618=>'L', | ||
14102 | 66619=>'L', | ||
14103 | 66620=>'L', | ||
14104 | 66621=>'L', | ||
14105 | 66622=>'L', | ||
14106 | 66623=>'L', | ||
14107 | 66624=>'L', | ||
14108 | 66625=>'L', | ||
14109 | 66626=>'L', | ||
14110 | 66627=>'L', | ||
14111 | 66628=>'L', | ||
14112 | 66629=>'L', | ||
14113 | 66630=>'L', | ||
14114 | 66631=>'L', | ||
14115 | 66632=>'L', | ||
14116 | 66633=>'L', | ||
14117 | 66634=>'L', | ||
14118 | 66635=>'L', | ||
14119 | 66636=>'L', | ||
14120 | 66637=>'L', | ||
14121 | 66638=>'L', | ||
14122 | 66639=>'L', | ||
14123 | 66640=>'L', | ||
14124 | 66641=>'L', | ||
14125 | 66642=>'L', | ||
14126 | 66643=>'L', | ||
14127 | 66644=>'L', | ||
14128 | 66645=>'L', | ||
14129 | 66646=>'L', | ||
14130 | 66647=>'L', | ||
14131 | 66648=>'L', | ||
14132 | 66649=>'L', | ||
14133 | 66650=>'L', | ||
14134 | 66651=>'L', | ||
14135 | 66652=>'L', | ||
14136 | 66653=>'L', | ||
14137 | 66654=>'L', | ||
14138 | 66655=>'L', | ||
14139 | 66656=>'L', | ||
14140 | 66657=>'L', | ||
14141 | 66658=>'L', | ||
14142 | 66659=>'L', | ||
14143 | 66660=>'L', | ||
14144 | 66661=>'L', | ||
14145 | 66662=>'L', | ||
14146 | 66663=>'L', | ||
14147 | 66664=>'L', | ||
14148 | 66665=>'L', | ||
14149 | 66666=>'L', | ||
14150 | 66667=>'L', | ||
14151 | 66668=>'L', | ||
14152 | 66669=>'L', | ||
14153 | 66670=>'L', | ||
14154 | 66671=>'L', | ||
14155 | 66672=>'L', | ||
14156 | 66673=>'L', | ||
14157 | 66674=>'L', | ||
14158 | 66675=>'L', | ||
14159 | 66676=>'L', | ||
14160 | 66677=>'L', | ||
14161 | 66678=>'L', | ||
14162 | 66679=>'L', | ||
14163 | 66680=>'L', | ||
14164 | 66681=>'L', | ||
14165 | 66682=>'L', | ||
14166 | 66683=>'L', | ||
14167 | 66684=>'L', | ||
14168 | 66685=>'L', | ||
14169 | 66686=>'L', | ||
14170 | 66687=>'L', | ||
14171 | 66688=>'L', | ||
14172 | 66689=>'L', | ||
14173 | 66690=>'L', | ||
14174 | 66691=>'L', | ||
14175 | 66692=>'L', | ||
14176 | 66693=>'L', | ||
14177 | 66694=>'L', | ||
14178 | 66695=>'L', | ||
14179 | 66696=>'L', | ||
14180 | 66697=>'L', | ||
14181 | 66698=>'L', | ||
14182 | 66699=>'L', | ||
14183 | 66700=>'L', | ||
14184 | 66701=>'L', | ||
14185 | 66702=>'L', | ||
14186 | 66703=>'L', | ||
14187 | 66704=>'L', | ||
14188 | 66705=>'L', | ||
14189 | 66706=>'L', | ||
14190 | 66707=>'L', | ||
14191 | 66708=>'L', | ||
14192 | 66709=>'L', | ||
14193 | 66710=>'L', | ||
14194 | 66711=>'L', | ||
14195 | 66712=>'L', | ||
14196 | 66713=>'L', | ||
14197 | 66714=>'L', | ||
14198 | 66715=>'L', | ||
14199 | 66716=>'L', | ||
14200 | 66717=>'L', | ||
14201 | 66720=>'L', | ||
14202 | 66721=>'L', | ||
14203 | 66722=>'L', | ||
14204 | 66723=>'L', | ||
14205 | 66724=>'L', | ||
14206 | 66725=>'L', | ||
14207 | 66726=>'L', | ||
14208 | 66727=>'L', | ||
14209 | 66728=>'L', | ||
14210 | 66729=>'L', | ||
14211 | 67584=>'R', | ||
14212 | 67585=>'R', | ||
14213 | 67586=>'R', | ||
14214 | 67587=>'R', | ||
14215 | 67588=>'R', | ||
14216 | 67589=>'R', | ||
14217 | 67592=>'R', | ||
14218 | 67594=>'R', | ||
14219 | 67595=>'R', | ||
14220 | 67596=>'R', | ||
14221 | 67597=>'R', | ||
14222 | 67598=>'R', | ||
14223 | 67599=>'R', | ||
14224 | 67600=>'R', | ||
14225 | 67601=>'R', | ||
14226 | 67602=>'R', | ||
14227 | 67603=>'R', | ||
14228 | 67604=>'R', | ||
14229 | 67605=>'R', | ||
14230 | 67606=>'R', | ||
14231 | 67607=>'R', | ||
14232 | 67608=>'R', | ||
14233 | 67609=>'R', | ||
14234 | 67610=>'R', | ||
14235 | 67611=>'R', | ||
14236 | 67612=>'R', | ||
14237 | 67613=>'R', | ||
14238 | 67614=>'R', | ||
14239 | 67615=>'R', | ||
14240 | 67616=>'R', | ||
14241 | 67617=>'R', | ||
14242 | 67618=>'R', | ||
14243 | 67619=>'R', | ||
14244 | 67620=>'R', | ||
14245 | 67621=>'R', | ||
14246 | 67622=>'R', | ||
14247 | 67623=>'R', | ||
14248 | 67624=>'R', | ||
14249 | 67625=>'R', | ||
14250 | 67626=>'R', | ||
14251 | 67627=>'R', | ||
14252 | 67628=>'R', | ||
14253 | 67629=>'R', | ||
14254 | 67630=>'R', | ||
14255 | 67631=>'R', | ||
14256 | 67632=>'R', | ||
14257 | 67633=>'R', | ||
14258 | 67634=>'R', | ||
14259 | 67635=>'R', | ||
14260 | 67636=>'R', | ||
14261 | 67637=>'R', | ||
14262 | 67639=>'R', | ||
14263 | 67640=>'R', | ||
14264 | 67644=>'R', | ||
14265 | 67647=>'R', | ||
14266 | 67840=>'R', | ||
14267 | 67841=>'R', | ||
14268 | 67842=>'R', | ||
14269 | 67843=>'R', | ||
14270 | 67844=>'R', | ||
14271 | 67845=>'R', | ||
14272 | 67846=>'R', | ||
14273 | 67847=>'R', | ||
14274 | 67848=>'R', | ||
14275 | 67849=>'R', | ||
14276 | 67850=>'R', | ||
14277 | 67851=>'R', | ||
14278 | 67852=>'R', | ||
14279 | 67853=>'R', | ||
14280 | 67854=>'R', | ||
14281 | 67855=>'R', | ||
14282 | 67856=>'R', | ||
14283 | 67857=>'R', | ||
14284 | 67858=>'R', | ||
14285 | 67859=>'R', | ||
14286 | 67860=>'R', | ||
14287 | 67861=>'R', | ||
14288 | 67862=>'R', | ||
14289 | 67863=>'R', | ||
14290 | 67864=>'R', | ||
14291 | 67865=>'R', | ||
14292 | 67871=>'ON', | ||
14293 | 68096=>'R', | ||
14294 | 68097=>'NSM', | ||
14295 | 68098=>'NSM', | ||
14296 | 68099=>'NSM', | ||
14297 | 68101=>'NSM', | ||
14298 | 68102=>'NSM', | ||
14299 | 68108=>'NSM', | ||
14300 | 68109=>'NSM', | ||
14301 | 68110=>'NSM', | ||
14302 | 68111=>'NSM', | ||
14303 | 68112=>'R', | ||
14304 | 68113=>'R', | ||
14305 | 68114=>'R', | ||
14306 | 68115=>'R', | ||
14307 | 68117=>'R', | ||
14308 | 68118=>'R', | ||
14309 | 68119=>'R', | ||
14310 | 68121=>'R', | ||
14311 | 68122=>'R', | ||
14312 | 68123=>'R', | ||
14313 | 68124=>'R', | ||
14314 | 68125=>'R', | ||
14315 | 68126=>'R', | ||
14316 | 68127=>'R', | ||
14317 | 68128=>'R', | ||
14318 | 68129=>'R', | ||
14319 | 68130=>'R', | ||
14320 | 68131=>'R', | ||
14321 | 68132=>'R', | ||
14322 | 68133=>'R', | ||
14323 | 68134=>'R', | ||
14324 | 68135=>'R', | ||
14325 | 68136=>'R', | ||
14326 | 68137=>'R', | ||
14327 | 68138=>'R', | ||
14328 | 68139=>'R', | ||
14329 | 68140=>'R', | ||
14330 | 68141=>'R', | ||
14331 | 68142=>'R', | ||
14332 | 68143=>'R', | ||
14333 | 68144=>'R', | ||
14334 | 68145=>'R', | ||
14335 | 68146=>'R', | ||
14336 | 68147=>'R', | ||
14337 | 68152=>'NSM', | ||
14338 | 68153=>'NSM', | ||
14339 | 68154=>'NSM', | ||
14340 | 68159=>'NSM', | ||
14341 | 68160=>'R', | ||
14342 | 68161=>'R', | ||
14343 | 68162=>'R', | ||
14344 | 68163=>'R', | ||
14345 | 68164=>'R', | ||
14346 | 68165=>'R', | ||
14347 | 68166=>'R', | ||
14348 | 68167=>'R', | ||
14349 | 68176=>'R', | ||
14350 | 68177=>'R', | ||
14351 | 68178=>'R', | ||
14352 | 68179=>'R', | ||
14353 | 68180=>'R', | ||
14354 | 68181=>'R', | ||
14355 | 68182=>'R', | ||
14356 | 68183=>'R', | ||
14357 | 68184=>'R', | ||
14358 | 73728=>'L', | ||
14359 | 73729=>'L', | ||
14360 | 73730=>'L', | ||
14361 | 73731=>'L', | ||
14362 | 73732=>'L', | ||
14363 | 73733=>'L', | ||
14364 | 73734=>'L', | ||
14365 | 73735=>'L', | ||
14366 | 73736=>'L', | ||
14367 | 73737=>'L', | ||
14368 | 73738=>'L', | ||
14369 | 73739=>'L', | ||
14370 | 73740=>'L', | ||
14371 | 73741=>'L', | ||
14372 | 73742=>'L', | ||
14373 | 73743=>'L', | ||
14374 | 73744=>'L', | ||
14375 | 73745=>'L', | ||
14376 | 73746=>'L', | ||
14377 | 73747=>'L', | ||
14378 | 73748=>'L', | ||
14379 | 73749=>'L', | ||
14380 | 73750=>'L', | ||
14381 | 73751=>'L', | ||
14382 | 73752=>'L', | ||
14383 | 73753=>'L', | ||
14384 | 73754=>'L', | ||
14385 | 73755=>'L', | ||
14386 | 73756=>'L', | ||
14387 | 73757=>'L', | ||
14388 | 73758=>'L', | ||
14389 | 73759=>'L', | ||
14390 | 73760=>'L', | ||
14391 | 73761=>'L', | ||
14392 | 73762=>'L', | ||
14393 | 73763=>'L', | ||
14394 | 73764=>'L', | ||
14395 | 73765=>'L', | ||
14396 | 73766=>'L', | ||
14397 | 73767=>'L', | ||
14398 | 73768=>'L', | ||
14399 | 73769=>'L', | ||
14400 | 73770=>'L', | ||
14401 | 73771=>'L', | ||
14402 | 73772=>'L', | ||
14403 | 73773=>'L', | ||
14404 | 73774=>'L', | ||
14405 | 73775=>'L', | ||
14406 | 73776=>'L', | ||
14407 | 73777=>'L', | ||
14408 | 73778=>'L', | ||
14409 | 73779=>'L', | ||
14410 | 73780=>'L', | ||
14411 | 73781=>'L', | ||
14412 | 73782=>'L', | ||
14413 | 73783=>'L', | ||
14414 | 73784=>'L', | ||
14415 | 73785=>'L', | ||
14416 | 73786=>'L', | ||
14417 | 73787=>'L', | ||
14418 | 73788=>'L', | ||
14419 | 73789=>'L', | ||
14420 | 73790=>'L', | ||
14421 | 73791=>'L', | ||
14422 | 73792=>'L', | ||
14423 | 73793=>'L', | ||
14424 | 73794=>'L', | ||
14425 | 73795=>'L', | ||
14426 | 73796=>'L', | ||
14427 | 73797=>'L', | ||
14428 | 73798=>'L', | ||
14429 | 73799=>'L', | ||
14430 | 73800=>'L', | ||
14431 | 73801=>'L', | ||
14432 | 73802=>'L', | ||
14433 | 73803=>'L', | ||
14434 | 73804=>'L', | ||
14435 | 73805=>'L', | ||
14436 | 73806=>'L', | ||
14437 | 73807=>'L', | ||
14438 | 73808=>'L', | ||
14439 | 73809=>'L', | ||
14440 | 73810=>'L', | ||
14441 | 73811=>'L', | ||
14442 | 73812=>'L', | ||
14443 | 73813=>'L', | ||
14444 | 73814=>'L', | ||
14445 | 73815=>'L', | ||
14446 | 73816=>'L', | ||
14447 | 73817=>'L', | ||
14448 | 73818=>'L', | ||
14449 | 73819=>'L', | ||
14450 | 73820=>'L', | ||
14451 | 73821=>'L', | ||
14452 | 73822=>'L', | ||
14453 | 73823=>'L', | ||
14454 | 73824=>'L', | ||
14455 | 73825=>'L', | ||
14456 | 73826=>'L', | ||
14457 | 73827=>'L', | ||
14458 | 73828=>'L', | ||
14459 | 73829=>'L', | ||
14460 | 73830=>'L', | ||
14461 | 73831=>'L', | ||
14462 | 73832=>'L', | ||
14463 | 73833=>'L', | ||
14464 | 73834=>'L', | ||
14465 | 73835=>'L', | ||
14466 | 73836=>'L', | ||
14467 | 73837=>'L', | ||
14468 | 73838=>'L', | ||
14469 | 73839=>'L', | ||
14470 | 73840=>'L', | ||
14471 | 73841=>'L', | ||
14472 | 73842=>'L', | ||
14473 | 73843=>'L', | ||
14474 | 73844=>'L', | ||
14475 | 73845=>'L', | ||
14476 | 73846=>'L', | ||
14477 | 73847=>'L', | ||
14478 | 73848=>'L', | ||
14479 | 73849=>'L', | ||
14480 | 73850=>'L', | ||
14481 | 73851=>'L', | ||
14482 | 73852=>'L', | ||
14483 | 73853=>'L', | ||
14484 | 73854=>'L', | ||
14485 | 73855=>'L', | ||
14486 | 73856=>'L', | ||
14487 | 73857=>'L', | ||
14488 | 73858=>'L', | ||
14489 | 73859=>'L', | ||
14490 | 73860=>'L', | ||
14491 | 73861=>'L', | ||
14492 | 73862=>'L', | ||
14493 | 73863=>'L', | ||
14494 | 73864=>'L', | ||
14495 | 73865=>'L', | ||
14496 | 73866=>'L', | ||
14497 | 73867=>'L', | ||
14498 | 73868=>'L', | ||
14499 | 73869=>'L', | ||
14500 | 73870=>'L', | ||
14501 | 73871=>'L', | ||
14502 | 73872=>'L', | ||
14503 | 73873=>'L', | ||
14504 | 73874=>'L', | ||
14505 | 73875=>'L', | ||
14506 | 73876=>'L', | ||
14507 | 73877=>'L', | ||
14508 | 73878=>'L', | ||
14509 | 73879=>'L', | ||
14510 | 73880=>'L', | ||
14511 | 73881=>'L', | ||
14512 | 73882=>'L', | ||
14513 | 73883=>'L', | ||
14514 | 73884=>'L', | ||
14515 | 73885=>'L', | ||
14516 | 73886=>'L', | ||
14517 | 73887=>'L', | ||
14518 | 73888=>'L', | ||
14519 | 73889=>'L', | ||
14520 | 73890=>'L', | ||
14521 | 73891=>'L', | ||
14522 | 73892=>'L', | ||
14523 | 73893=>'L', | ||
14524 | 73894=>'L', | ||
14525 | 73895=>'L', | ||
14526 | 73896=>'L', | ||
14527 | 73897=>'L', | ||
14528 | 73898=>'L', | ||
14529 | 73899=>'L', | ||
14530 | 73900=>'L', | ||
14531 | 73901=>'L', | ||
14532 | 73902=>'L', | ||
14533 | 73903=>'L', | ||
14534 | 73904=>'L', | ||
14535 | 73905=>'L', | ||
14536 | 73906=>'L', | ||
14537 | 73907=>'L', | ||
14538 | 73908=>'L', | ||
14539 | 73909=>'L', | ||
14540 | 73910=>'L', | ||
14541 | 73911=>'L', | ||
14542 | 73912=>'L', | ||
14543 | 73913=>'L', | ||
14544 | 73914=>'L', | ||
14545 | 73915=>'L', | ||
14546 | 73916=>'L', | ||
14547 | 73917=>'L', | ||
14548 | 73918=>'L', | ||
14549 | 73919=>'L', | ||
14550 | 73920=>'L', | ||
14551 | 73921=>'L', | ||
14552 | 73922=>'L', | ||
14553 | 73923=>'L', | ||
14554 | 73924=>'L', | ||
14555 | 73925=>'L', | ||
14556 | 73926=>'L', | ||
14557 | 73927=>'L', | ||
14558 | 73928=>'L', | ||
14559 | 73929=>'L', | ||
14560 | 73930=>'L', | ||
14561 | 73931=>'L', | ||
14562 | 73932=>'L', | ||
14563 | 73933=>'L', | ||
14564 | 73934=>'L', | ||
14565 | 73935=>'L', | ||
14566 | 73936=>'L', | ||
14567 | 73937=>'L', | ||
14568 | 73938=>'L', | ||
14569 | 73939=>'L', | ||
14570 | 73940=>'L', | ||
14571 | 73941=>'L', | ||
14572 | 73942=>'L', | ||
14573 | 73943=>'L', | ||
14574 | 73944=>'L', | ||
14575 | 73945=>'L', | ||
14576 | 73946=>'L', | ||
14577 | 73947=>'L', | ||
14578 | 73948=>'L', | ||
14579 | 73949=>'L', | ||
14580 | 73950=>'L', | ||
14581 | 73951=>'L', | ||
14582 | 73952=>'L', | ||
14583 | 73953=>'L', | ||
14584 | 73954=>'L', | ||
14585 | 73955=>'L', | ||
14586 | 73956=>'L', | ||
14587 | 73957=>'L', | ||
14588 | 73958=>'L', | ||
14589 | 73959=>'L', | ||
14590 | 73960=>'L', | ||
14591 | 73961=>'L', | ||
14592 | 73962=>'L', | ||
14593 | 73963=>'L', | ||
14594 | 73964=>'L', | ||
14595 | 73965=>'L', | ||
14596 | 73966=>'L', | ||
14597 | 73967=>'L', | ||
14598 | 73968=>'L', | ||
14599 | 73969=>'L', | ||
14600 | 73970=>'L', | ||
14601 | 73971=>'L', | ||
14602 | 73972=>'L', | ||
14603 | 73973=>'L', | ||
14604 | 73974=>'L', | ||
14605 | 73975=>'L', | ||
14606 | 73976=>'L', | ||
14607 | 73977=>'L', | ||
14608 | 73978=>'L', | ||
14609 | 73979=>'L', | ||
14610 | 73980=>'L', | ||
14611 | 73981=>'L', | ||
14612 | 73982=>'L', | ||
14613 | 73983=>'L', | ||
14614 | 73984=>'L', | ||
14615 | 73985=>'L', | ||
14616 | 73986=>'L', | ||
14617 | 73987=>'L', | ||
14618 | 73988=>'L', | ||
14619 | 73989=>'L', | ||
14620 | 73990=>'L', | ||
14621 | 73991=>'L', | ||
14622 | 73992=>'L', | ||
14623 | 73993=>'L', | ||
14624 | 73994=>'L', | ||
14625 | 73995=>'L', | ||
14626 | 73996=>'L', | ||
14627 | 73997=>'L', | ||
14628 | 73998=>'L', | ||
14629 | 73999=>'L', | ||
14630 | 74000=>'L', | ||
14631 | 74001=>'L', | ||
14632 | 74002=>'L', | ||
14633 | 74003=>'L', | ||
14634 | 74004=>'L', | ||
14635 | 74005=>'L', | ||
14636 | 74006=>'L', | ||
14637 | 74007=>'L', | ||
14638 | 74008=>'L', | ||
14639 | 74009=>'L', | ||
14640 | 74010=>'L', | ||
14641 | 74011=>'L', | ||
14642 | 74012=>'L', | ||
14643 | 74013=>'L', | ||
14644 | 74014=>'L', | ||
14645 | 74015=>'L', | ||
14646 | 74016=>'L', | ||
14647 | 74017=>'L', | ||
14648 | 74018=>'L', | ||
14649 | 74019=>'L', | ||
14650 | 74020=>'L', | ||
14651 | 74021=>'L', | ||
14652 | 74022=>'L', | ||
14653 | 74023=>'L', | ||
14654 | 74024=>'L', | ||
14655 | 74025=>'L', | ||
14656 | 74026=>'L', | ||
14657 | 74027=>'L', | ||
14658 | 74028=>'L', | ||
14659 | 74029=>'L', | ||
14660 | 74030=>'L', | ||
14661 | 74031=>'L', | ||
14662 | 74032=>'L', | ||
14663 | 74033=>'L', | ||
14664 | 74034=>'L', | ||
14665 | 74035=>'L', | ||
14666 | 74036=>'L', | ||
14667 | 74037=>'L', | ||
14668 | 74038=>'L', | ||
14669 | 74039=>'L', | ||
14670 | 74040=>'L', | ||
14671 | 74041=>'L', | ||
14672 | 74042=>'L', | ||
14673 | 74043=>'L', | ||
14674 | 74044=>'L', | ||
14675 | 74045=>'L', | ||
14676 | 74046=>'L', | ||
14677 | 74047=>'L', | ||
14678 | 74048=>'L', | ||
14679 | 74049=>'L', | ||
14680 | 74050=>'L', | ||
14681 | 74051=>'L', | ||
14682 | 74052=>'L', | ||
14683 | 74053=>'L', | ||
14684 | 74054=>'L', | ||
14685 | 74055=>'L', | ||
14686 | 74056=>'L', | ||
14687 | 74057=>'L', | ||
14688 | 74058=>'L', | ||
14689 | 74059=>'L', | ||
14690 | 74060=>'L', | ||
14691 | 74061=>'L', | ||
14692 | 74062=>'L', | ||
14693 | 74063=>'L', | ||
14694 | 74064=>'L', | ||
14695 | 74065=>'L', | ||
14696 | 74066=>'L', | ||
14697 | 74067=>'L', | ||
14698 | 74068=>'L', | ||
14699 | 74069=>'L', | ||
14700 | 74070=>'L', | ||
14701 | 74071=>'L', | ||
14702 | 74072=>'L', | ||
14703 | 74073=>'L', | ||
14704 | 74074=>'L', | ||
14705 | 74075=>'L', | ||
14706 | 74076=>'L', | ||
14707 | 74077=>'L', | ||
14708 | 74078=>'L', | ||
14709 | 74079=>'L', | ||
14710 | 74080=>'L', | ||
14711 | 74081=>'L', | ||
14712 | 74082=>'L', | ||
14713 | 74083=>'L', | ||
14714 | 74084=>'L', | ||
14715 | 74085=>'L', | ||
14716 | 74086=>'L', | ||
14717 | 74087=>'L', | ||
14718 | 74088=>'L', | ||
14719 | 74089=>'L', | ||
14720 | 74090=>'L', | ||
14721 | 74091=>'L', | ||
14722 | 74092=>'L', | ||
14723 | 74093=>'L', | ||
14724 | 74094=>'L', | ||
14725 | 74095=>'L', | ||
14726 | 74096=>'L', | ||
14727 | 74097=>'L', | ||
14728 | 74098=>'L', | ||
14729 | 74099=>'L', | ||
14730 | 74100=>'L', | ||
14731 | 74101=>'L', | ||
14732 | 74102=>'L', | ||
14733 | 74103=>'L', | ||
14734 | 74104=>'L', | ||
14735 | 74105=>'L', | ||
14736 | 74106=>'L', | ||
14737 | 74107=>'L', | ||
14738 | 74108=>'L', | ||
14739 | 74109=>'L', | ||
14740 | 74110=>'L', | ||
14741 | 74111=>'L', | ||
14742 | 74112=>'L', | ||
14743 | 74113=>'L', | ||
14744 | 74114=>'L', | ||
14745 | 74115=>'L', | ||
14746 | 74116=>'L', | ||
14747 | 74117=>'L', | ||
14748 | 74118=>'L', | ||
14749 | 74119=>'L', | ||
14750 | 74120=>'L', | ||
14751 | 74121=>'L', | ||
14752 | 74122=>'L', | ||
14753 | 74123=>'L', | ||
14754 | 74124=>'L', | ||
14755 | 74125=>'L', | ||
14756 | 74126=>'L', | ||
14757 | 74127=>'L', | ||
14758 | 74128=>'L', | ||
14759 | 74129=>'L', | ||
14760 | 74130=>'L', | ||
14761 | 74131=>'L', | ||
14762 | 74132=>'L', | ||
14763 | 74133=>'L', | ||
14764 | 74134=>'L', | ||
14765 | 74135=>'L', | ||
14766 | 74136=>'L', | ||
14767 | 74137=>'L', | ||
14768 | 74138=>'L', | ||
14769 | 74139=>'L', | ||
14770 | 74140=>'L', | ||
14771 | 74141=>'L', | ||
14772 | 74142=>'L', | ||
14773 | 74143=>'L', | ||
14774 | 74144=>'L', | ||
14775 | 74145=>'L', | ||
14776 | 74146=>'L', | ||
14777 | 74147=>'L', | ||
14778 | 74148=>'L', | ||
14779 | 74149=>'L', | ||
14780 | 74150=>'L', | ||
14781 | 74151=>'L', | ||
14782 | 74152=>'L', | ||
14783 | 74153=>'L', | ||
14784 | 74154=>'L', | ||
14785 | 74155=>'L', | ||
14786 | 74156=>'L', | ||
14787 | 74157=>'L', | ||
14788 | 74158=>'L', | ||
14789 | 74159=>'L', | ||
14790 | 74160=>'L', | ||
14791 | 74161=>'L', | ||
14792 | 74162=>'L', | ||
14793 | 74163=>'L', | ||
14794 | 74164=>'L', | ||
14795 | 74165=>'L', | ||
14796 | 74166=>'L', | ||
14797 | 74167=>'L', | ||
14798 | 74168=>'L', | ||
14799 | 74169=>'L', | ||
14800 | 74170=>'L', | ||
14801 | 74171=>'L', | ||
14802 | 74172=>'L', | ||
14803 | 74173=>'L', | ||
14804 | 74174=>'L', | ||
14805 | 74175=>'L', | ||
14806 | 74176=>'L', | ||
14807 | 74177=>'L', | ||
14808 | 74178=>'L', | ||
14809 | 74179=>'L', | ||
14810 | 74180=>'L', | ||
14811 | 74181=>'L', | ||
14812 | 74182=>'L', | ||
14813 | 74183=>'L', | ||
14814 | 74184=>'L', | ||
14815 | 74185=>'L', | ||
14816 | 74186=>'L', | ||
14817 | 74187=>'L', | ||
14818 | 74188=>'L', | ||
14819 | 74189=>'L', | ||
14820 | 74190=>'L', | ||
14821 | 74191=>'L', | ||
14822 | 74192=>'L', | ||
14823 | 74193=>'L', | ||
14824 | 74194=>'L', | ||
14825 | 74195=>'L', | ||
14826 | 74196=>'L', | ||
14827 | 74197=>'L', | ||
14828 | 74198=>'L', | ||
14829 | 74199=>'L', | ||
14830 | 74200=>'L', | ||
14831 | 74201=>'L', | ||
14832 | 74202=>'L', | ||
14833 | 74203=>'L', | ||
14834 | 74204=>'L', | ||
14835 | 74205=>'L', | ||
14836 | 74206=>'L', | ||
14837 | 74207=>'L', | ||
14838 | 74208=>'L', | ||
14839 | 74209=>'L', | ||
14840 | 74210=>'L', | ||
14841 | 74211=>'L', | ||
14842 | 74212=>'L', | ||
14843 | 74213=>'L', | ||
14844 | 74214=>'L', | ||
14845 | 74215=>'L', | ||
14846 | 74216=>'L', | ||
14847 | 74217=>'L', | ||
14848 | 74218=>'L', | ||
14849 | 74219=>'L', | ||
14850 | 74220=>'L', | ||
14851 | 74221=>'L', | ||
14852 | 74222=>'L', | ||
14853 | 74223=>'L', | ||
14854 | 74224=>'L', | ||
14855 | 74225=>'L', | ||
14856 | 74226=>'L', | ||
14857 | 74227=>'L', | ||
14858 | 74228=>'L', | ||
14859 | 74229=>'L', | ||
14860 | 74230=>'L', | ||
14861 | 74231=>'L', | ||
14862 | 74232=>'L', | ||
14863 | 74233=>'L', | ||
14864 | 74234=>'L', | ||
14865 | 74235=>'L', | ||
14866 | 74236=>'L', | ||
14867 | 74237=>'L', | ||
14868 | 74238=>'L', | ||
14869 | 74239=>'L', | ||
14870 | 74240=>'L', | ||
14871 | 74241=>'L', | ||
14872 | 74242=>'L', | ||
14873 | 74243=>'L', | ||
14874 | 74244=>'L', | ||
14875 | 74245=>'L', | ||
14876 | 74246=>'L', | ||
14877 | 74247=>'L', | ||
14878 | 74248=>'L', | ||
14879 | 74249=>'L', | ||
14880 | 74250=>'L', | ||
14881 | 74251=>'L', | ||
14882 | 74252=>'L', | ||
14883 | 74253=>'L', | ||
14884 | 74254=>'L', | ||
14885 | 74255=>'L', | ||
14886 | 74256=>'L', | ||
14887 | 74257=>'L', | ||
14888 | 74258=>'L', | ||
14889 | 74259=>'L', | ||
14890 | 74260=>'L', | ||
14891 | 74261=>'L', | ||
14892 | 74262=>'L', | ||
14893 | 74263=>'L', | ||
14894 | 74264=>'L', | ||
14895 | 74265=>'L', | ||
14896 | 74266=>'L', | ||
14897 | 74267=>'L', | ||
14898 | 74268=>'L', | ||
14899 | 74269=>'L', | ||
14900 | 74270=>'L', | ||
14901 | 74271=>'L', | ||
14902 | 74272=>'L', | ||
14903 | 74273=>'L', | ||
14904 | 74274=>'L', | ||
14905 | 74275=>'L', | ||
14906 | 74276=>'L', | ||
14907 | 74277=>'L', | ||
14908 | 74278=>'L', | ||
14909 | 74279=>'L', | ||
14910 | 74280=>'L', | ||
14911 | 74281=>'L', | ||
14912 | 74282=>'L', | ||
14913 | 74283=>'L', | ||
14914 | 74284=>'L', | ||
14915 | 74285=>'L', | ||
14916 | 74286=>'L', | ||
14917 | 74287=>'L', | ||
14918 | 74288=>'L', | ||
14919 | 74289=>'L', | ||
14920 | 74290=>'L', | ||
14921 | 74291=>'L', | ||
14922 | 74292=>'L', | ||
14923 | 74293=>'L', | ||
14924 | 74294=>'L', | ||
14925 | 74295=>'L', | ||
14926 | 74296=>'L', | ||
14927 | 74297=>'L', | ||
14928 | 74298=>'L', | ||
14929 | 74299=>'L', | ||
14930 | 74300=>'L', | ||
14931 | 74301=>'L', | ||
14932 | 74302=>'L', | ||
14933 | 74303=>'L', | ||
14934 | 74304=>'L', | ||
14935 | 74305=>'L', | ||
14936 | 74306=>'L', | ||
14937 | 74307=>'L', | ||
14938 | 74308=>'L', | ||
14939 | 74309=>'L', | ||
14940 | 74310=>'L', | ||
14941 | 74311=>'L', | ||
14942 | 74312=>'L', | ||
14943 | 74313=>'L', | ||
14944 | 74314=>'L', | ||
14945 | 74315=>'L', | ||
14946 | 74316=>'L', | ||
14947 | 74317=>'L', | ||
14948 | 74318=>'L', | ||
14949 | 74319=>'L', | ||
14950 | 74320=>'L', | ||
14951 | 74321=>'L', | ||
14952 | 74322=>'L', | ||
14953 | 74323=>'L', | ||
14954 | 74324=>'L', | ||
14955 | 74325=>'L', | ||
14956 | 74326=>'L', | ||
14957 | 74327=>'L', | ||
14958 | 74328=>'L', | ||
14959 | 74329=>'L', | ||
14960 | 74330=>'L', | ||
14961 | 74331=>'L', | ||
14962 | 74332=>'L', | ||
14963 | 74333=>'L', | ||
14964 | 74334=>'L', | ||
14965 | 74335=>'L', | ||
14966 | 74336=>'L', | ||
14967 | 74337=>'L', | ||
14968 | 74338=>'L', | ||
14969 | 74339=>'L', | ||
14970 | 74340=>'L', | ||
14971 | 74341=>'L', | ||
14972 | 74342=>'L', | ||
14973 | 74343=>'L', | ||
14974 | 74344=>'L', | ||
14975 | 74345=>'L', | ||
14976 | 74346=>'L', | ||
14977 | 74347=>'L', | ||
14978 | 74348=>'L', | ||
14979 | 74349=>'L', | ||
14980 | 74350=>'L', | ||
14981 | 74351=>'L', | ||
14982 | 74352=>'L', | ||
14983 | 74353=>'L', | ||
14984 | 74354=>'L', | ||
14985 | 74355=>'L', | ||
14986 | 74356=>'L', | ||
14987 | 74357=>'L', | ||
14988 | 74358=>'L', | ||
14989 | 74359=>'L', | ||
14990 | 74360=>'L', | ||
14991 | 74361=>'L', | ||
14992 | 74362=>'L', | ||
14993 | 74363=>'L', | ||
14994 | 74364=>'L', | ||
14995 | 74365=>'L', | ||
14996 | 74366=>'L', | ||
14997 | 74367=>'L', | ||
14998 | 74368=>'L', | ||
14999 | 74369=>'L', | ||
15000 | 74370=>'L', | ||
15001 | 74371=>'L', | ||
15002 | 74372=>'L', | ||
15003 | 74373=>'L', | ||
15004 | 74374=>'L', | ||
15005 | 74375=>'L', | ||
15006 | 74376=>'L', | ||
15007 | 74377=>'L', | ||
15008 | 74378=>'L', | ||
15009 | 74379=>'L', | ||
15010 | 74380=>'L', | ||
15011 | 74381=>'L', | ||
15012 | 74382=>'L', | ||
15013 | 74383=>'L', | ||
15014 | 74384=>'L', | ||
15015 | 74385=>'L', | ||
15016 | 74386=>'L', | ||
15017 | 74387=>'L', | ||
15018 | 74388=>'L', | ||
15019 | 74389=>'L', | ||
15020 | 74390=>'L', | ||
15021 | 74391=>'L', | ||
15022 | 74392=>'L', | ||
15023 | 74393=>'L', | ||
15024 | 74394=>'L', | ||
15025 | 74395=>'L', | ||
15026 | 74396=>'L', | ||
15027 | 74397=>'L', | ||
15028 | 74398=>'L', | ||
15029 | 74399=>'L', | ||
15030 | 74400=>'L', | ||
15031 | 74401=>'L', | ||
15032 | 74402=>'L', | ||
15033 | 74403=>'L', | ||
15034 | 74404=>'L', | ||
15035 | 74405=>'L', | ||
15036 | 74406=>'L', | ||
15037 | 74407=>'L', | ||
15038 | 74408=>'L', | ||
15039 | 74409=>'L', | ||
15040 | 74410=>'L', | ||
15041 | 74411=>'L', | ||
15042 | 74412=>'L', | ||
15043 | 74413=>'L', | ||
15044 | 74414=>'L', | ||
15045 | 74415=>'L', | ||
15046 | 74416=>'L', | ||
15047 | 74417=>'L', | ||
15048 | 74418=>'L', | ||
15049 | 74419=>'L', | ||
15050 | 74420=>'L', | ||
15051 | 74421=>'L', | ||
15052 | 74422=>'L', | ||
15053 | 74423=>'L', | ||
15054 | 74424=>'L', | ||
15055 | 74425=>'L', | ||
15056 | 74426=>'L', | ||
15057 | 74427=>'L', | ||
15058 | 74428=>'L', | ||
15059 | 74429=>'L', | ||
15060 | 74430=>'L', | ||
15061 | 74431=>'L', | ||
15062 | 74432=>'L', | ||
15063 | 74433=>'L', | ||
15064 | 74434=>'L', | ||
15065 | 74435=>'L', | ||
15066 | 74436=>'L', | ||
15067 | 74437=>'L', | ||
15068 | 74438=>'L', | ||
15069 | 74439=>'L', | ||
15070 | 74440=>'L', | ||
15071 | 74441=>'L', | ||
15072 | 74442=>'L', | ||
15073 | 74443=>'L', | ||
15074 | 74444=>'L', | ||
15075 | 74445=>'L', | ||
15076 | 74446=>'L', | ||
15077 | 74447=>'L', | ||
15078 | 74448=>'L', | ||
15079 | 74449=>'L', | ||
15080 | 74450=>'L', | ||
15081 | 74451=>'L', | ||
15082 | 74452=>'L', | ||
15083 | 74453=>'L', | ||
15084 | 74454=>'L', | ||
15085 | 74455=>'L', | ||
15086 | 74456=>'L', | ||
15087 | 74457=>'L', | ||
15088 | 74458=>'L', | ||
15089 | 74459=>'L', | ||
15090 | 74460=>'L', | ||
15091 | 74461=>'L', | ||
15092 | 74462=>'L', | ||
15093 | 74463=>'L', | ||
15094 | 74464=>'L', | ||
15095 | 74465=>'L', | ||
15096 | 74466=>'L', | ||
15097 | 74467=>'L', | ||
15098 | 74468=>'L', | ||
15099 | 74469=>'L', | ||
15100 | 74470=>'L', | ||
15101 | 74471=>'L', | ||
15102 | 74472=>'L', | ||
15103 | 74473=>'L', | ||
15104 | 74474=>'L', | ||
15105 | 74475=>'L', | ||
15106 | 74476=>'L', | ||
15107 | 74477=>'L', | ||
15108 | 74478=>'L', | ||
15109 | 74479=>'L', | ||
15110 | 74480=>'L', | ||
15111 | 74481=>'L', | ||
15112 | 74482=>'L', | ||
15113 | 74483=>'L', | ||
15114 | 74484=>'L', | ||
15115 | 74485=>'L', | ||
15116 | 74486=>'L', | ||
15117 | 74487=>'L', | ||
15118 | 74488=>'L', | ||
15119 | 74489=>'L', | ||
15120 | 74490=>'L', | ||
15121 | 74491=>'L', | ||
15122 | 74492=>'L', | ||
15123 | 74493=>'L', | ||
15124 | 74494=>'L', | ||
15125 | 74495=>'L', | ||
15126 | 74496=>'L', | ||
15127 | 74497=>'L', | ||
15128 | 74498=>'L', | ||
15129 | 74499=>'L', | ||
15130 | 74500=>'L', | ||
15131 | 74501=>'L', | ||
15132 | 74502=>'L', | ||
15133 | 74503=>'L', | ||
15134 | 74504=>'L', | ||
15135 | 74505=>'L', | ||
15136 | 74506=>'L', | ||
15137 | 74507=>'L', | ||
15138 | 74508=>'L', | ||
15139 | 74509=>'L', | ||
15140 | 74510=>'L', | ||
15141 | 74511=>'L', | ||
15142 | 74512=>'L', | ||
15143 | 74513=>'L', | ||
15144 | 74514=>'L', | ||
15145 | 74515=>'L', | ||
15146 | 74516=>'L', | ||
15147 | 74517=>'L', | ||
15148 | 74518=>'L', | ||
15149 | 74519=>'L', | ||
15150 | 74520=>'L', | ||
15151 | 74521=>'L', | ||
15152 | 74522=>'L', | ||
15153 | 74523=>'L', | ||
15154 | 74524=>'L', | ||
15155 | 74525=>'L', | ||
15156 | 74526=>'L', | ||
15157 | 74527=>'L', | ||
15158 | 74528=>'L', | ||
15159 | 74529=>'L', | ||
15160 | 74530=>'L', | ||
15161 | 74531=>'L', | ||
15162 | 74532=>'L', | ||
15163 | 74533=>'L', | ||
15164 | 74534=>'L', | ||
15165 | 74535=>'L', | ||
15166 | 74536=>'L', | ||
15167 | 74537=>'L', | ||
15168 | 74538=>'L', | ||
15169 | 74539=>'L', | ||
15170 | 74540=>'L', | ||
15171 | 74541=>'L', | ||
15172 | 74542=>'L', | ||
15173 | 74543=>'L', | ||
15174 | 74544=>'L', | ||
15175 | 74545=>'L', | ||
15176 | 74546=>'L', | ||
15177 | 74547=>'L', | ||
15178 | 74548=>'L', | ||
15179 | 74549=>'L', | ||
15180 | 74550=>'L', | ||
15181 | 74551=>'L', | ||
15182 | 74552=>'L', | ||
15183 | 74553=>'L', | ||
15184 | 74554=>'L', | ||
15185 | 74555=>'L', | ||
15186 | 74556=>'L', | ||
15187 | 74557=>'L', | ||
15188 | 74558=>'L', | ||
15189 | 74559=>'L', | ||
15190 | 74560=>'L', | ||
15191 | 74561=>'L', | ||
15192 | 74562=>'L', | ||
15193 | 74563=>'L', | ||
15194 | 74564=>'L', | ||
15195 | 74565=>'L', | ||
15196 | 74566=>'L', | ||
15197 | 74567=>'L', | ||
15198 | 74568=>'L', | ||
15199 | 74569=>'L', | ||
15200 | 74570=>'L', | ||
15201 | 74571=>'L', | ||
15202 | 74572=>'L', | ||
15203 | 74573=>'L', | ||
15204 | 74574=>'L', | ||
15205 | 74575=>'L', | ||
15206 | 74576=>'L', | ||
15207 | 74577=>'L', | ||
15208 | 74578=>'L', | ||
15209 | 74579=>'L', | ||
15210 | 74580=>'L', | ||
15211 | 74581=>'L', | ||
15212 | 74582=>'L', | ||
15213 | 74583=>'L', | ||
15214 | 74584=>'L', | ||
15215 | 74585=>'L', | ||
15216 | 74586=>'L', | ||
15217 | 74587=>'L', | ||
15218 | 74588=>'L', | ||
15219 | 74589=>'L', | ||
15220 | 74590=>'L', | ||
15221 | 74591=>'L', | ||
15222 | 74592=>'L', | ||
15223 | 74593=>'L', | ||
15224 | 74594=>'L', | ||
15225 | 74595=>'L', | ||
15226 | 74596=>'L', | ||
15227 | 74597=>'L', | ||
15228 | 74598=>'L', | ||
15229 | 74599=>'L', | ||
15230 | 74600=>'L', | ||
15231 | 74601=>'L', | ||
15232 | 74602=>'L', | ||
15233 | 74603=>'L', | ||
15234 | 74604=>'L', | ||
15235 | 74605=>'L', | ||
15236 | 74606=>'L', | ||
15237 | 74752=>'L', | ||
15238 | 74753=>'L', | ||
15239 | 74754=>'L', | ||
15240 | 74755=>'L', | ||
15241 | 74756=>'L', | ||
15242 | 74757=>'L', | ||
15243 | 74758=>'L', | ||
15244 | 74759=>'L', | ||
15245 | 74760=>'L', | ||
15246 | 74761=>'L', | ||
15247 | 74762=>'L', | ||
15248 | 74763=>'L', | ||
15249 | 74764=>'L', | ||
15250 | 74765=>'L', | ||
15251 | 74766=>'L', | ||
15252 | 74767=>'L', | ||
15253 | 74768=>'L', | ||
15254 | 74769=>'L', | ||
15255 | 74770=>'L', | ||
15256 | 74771=>'L', | ||
15257 | 74772=>'L', | ||
15258 | 74773=>'L', | ||
15259 | 74774=>'L', | ||
15260 | 74775=>'L', | ||
15261 | 74776=>'L', | ||
15262 | 74777=>'L', | ||
15263 | 74778=>'L', | ||
15264 | 74779=>'L', | ||
15265 | 74780=>'L', | ||
15266 | 74781=>'L', | ||
15267 | 74782=>'L', | ||
15268 | 74783=>'L', | ||
15269 | 74784=>'L', | ||
15270 | 74785=>'L', | ||
15271 | 74786=>'L', | ||
15272 | 74787=>'L', | ||
15273 | 74788=>'L', | ||
15274 | 74789=>'L', | ||
15275 | 74790=>'L', | ||
15276 | 74791=>'L', | ||
15277 | 74792=>'L', | ||
15278 | 74793=>'L', | ||
15279 | 74794=>'L', | ||
15280 | 74795=>'L', | ||
15281 | 74796=>'L', | ||
15282 | 74797=>'L', | ||
15283 | 74798=>'L', | ||
15284 | 74799=>'L', | ||
15285 | 74800=>'L', | ||
15286 | 74801=>'L', | ||
15287 | 74802=>'L', | ||
15288 | 74803=>'L', | ||
15289 | 74804=>'L', | ||
15290 | 74805=>'L', | ||
15291 | 74806=>'L', | ||
15292 | 74807=>'L', | ||
15293 | 74808=>'L', | ||
15294 | 74809=>'L', | ||
15295 | 74810=>'L', | ||
15296 | 74811=>'L', | ||
15297 | 74812=>'L', | ||
15298 | 74813=>'L', | ||
15299 | 74814=>'L', | ||
15300 | 74815=>'L', | ||
15301 | 74816=>'L', | ||
15302 | 74817=>'L', | ||
15303 | 74818=>'L', | ||
15304 | 74819=>'L', | ||
15305 | 74820=>'L', | ||
15306 | 74821=>'L', | ||
15307 | 74822=>'L', | ||
15308 | 74823=>'L', | ||
15309 | 74824=>'L', | ||
15310 | 74825=>'L', | ||
15311 | 74826=>'L', | ||
15312 | 74827=>'L', | ||
15313 | 74828=>'L', | ||
15314 | 74829=>'L', | ||
15315 | 74830=>'L', | ||
15316 | 74831=>'L', | ||
15317 | 74832=>'L', | ||
15318 | 74833=>'L', | ||
15319 | 74834=>'L', | ||
15320 | 74835=>'L', | ||
15321 | 74836=>'L', | ||
15322 | 74837=>'L', | ||
15323 | 74838=>'L', | ||
15324 | 74839=>'L', | ||
15325 | 74840=>'L', | ||
15326 | 74841=>'L', | ||
15327 | 74842=>'L', | ||
15328 | 74843=>'L', | ||
15329 | 74844=>'L', | ||
15330 | 74845=>'L', | ||
15331 | 74846=>'L', | ||
15332 | 74847=>'L', | ||
15333 | 74848=>'L', | ||
15334 | 74849=>'L', | ||
15335 | 74850=>'L', | ||
15336 | 74864=>'L', | ||
15337 | 74865=>'L', | ||
15338 | 74866=>'L', | ||
15339 | 74867=>'L', | ||
15340 | 118784=>'L', | ||
15341 | 118785=>'L', | ||
15342 | 118786=>'L', | ||
15343 | 118787=>'L', | ||
15344 | 118788=>'L', | ||
15345 | 118789=>'L', | ||
15346 | 118790=>'L', | ||
15347 | 118791=>'L', | ||
15348 | 118792=>'L', | ||
15349 | 118793=>'L', | ||
15350 | 118794=>'L', | ||
15351 | 118795=>'L', | ||
15352 | 118796=>'L', | ||
15353 | 118797=>'L', | ||
15354 | 118798=>'L', | ||
15355 | 118799=>'L', | ||
15356 | 118800=>'L', | ||
15357 | 118801=>'L', | ||
15358 | 118802=>'L', | ||
15359 | 118803=>'L', | ||
15360 | 118804=>'L', | ||
15361 | 118805=>'L', | ||
15362 | 118806=>'L', | ||
15363 | 118807=>'L', | ||
15364 | 118808=>'L', | ||
15365 | 118809=>'L', | ||
15366 | 118810=>'L', | ||
15367 | 118811=>'L', | ||
15368 | 118812=>'L', | ||
15369 | 118813=>'L', | ||
15370 | 118814=>'L', | ||
15371 | 118815=>'L', | ||
15372 | 118816=>'L', | ||
15373 | 118817=>'L', | ||
15374 | 118818=>'L', | ||
15375 | 118819=>'L', | ||
15376 | 118820=>'L', | ||
15377 | 118821=>'L', | ||
15378 | 118822=>'L', | ||
15379 | 118823=>'L', | ||
15380 | 118824=>'L', | ||
15381 | 118825=>'L', | ||
15382 | 118826=>'L', | ||
15383 | 118827=>'L', | ||
15384 | 118828=>'L', | ||
15385 | 118829=>'L', | ||
15386 | 118830=>'L', | ||
15387 | 118831=>'L', | ||
15388 | 118832=>'L', | ||
15389 | 118833=>'L', | ||
15390 | 118834=>'L', | ||
15391 | 118835=>'L', | ||
15392 | 118836=>'L', | ||
15393 | 118837=>'L', | ||
15394 | 118838=>'L', | ||
15395 | 118839=>'L', | ||
15396 | 118840=>'L', | ||
15397 | 118841=>'L', | ||
15398 | 118842=>'L', | ||
15399 | 118843=>'L', | ||
15400 | 118844=>'L', | ||
15401 | 118845=>'L', | ||
15402 | 118846=>'L', | ||
15403 | 118847=>'L', | ||
15404 | 118848=>'L', | ||
15405 | 118849=>'L', | ||
15406 | 118850=>'L', | ||
15407 | 118851=>'L', | ||
15408 | 118852=>'L', | ||
15409 | 118853=>'L', | ||
15410 | 118854=>'L', | ||
15411 | 118855=>'L', | ||
15412 | 118856=>'L', | ||
15413 | 118857=>'L', | ||
15414 | 118858=>'L', | ||
15415 | 118859=>'L', | ||
15416 | 118860=>'L', | ||
15417 | 118861=>'L', | ||
15418 | 118862=>'L', | ||
15419 | 118863=>'L', | ||
15420 | 118864=>'L', | ||
15421 | 118865=>'L', | ||
15422 | 118866=>'L', | ||
15423 | 118867=>'L', | ||
15424 | 118868=>'L', | ||
15425 | 118869=>'L', | ||
15426 | 118870=>'L', | ||
15427 | 118871=>'L', | ||
15428 | 118872=>'L', | ||
15429 | 118873=>'L', | ||
15430 | 118874=>'L', | ||
15431 | 118875=>'L', | ||
15432 | 118876=>'L', | ||
15433 | 118877=>'L', | ||
15434 | 118878=>'L', | ||
15435 | 118879=>'L', | ||
15436 | 118880=>'L', | ||
15437 | 118881=>'L', | ||
15438 | 118882=>'L', | ||
15439 | 118883=>'L', | ||
15440 | 118884=>'L', | ||
15441 | 118885=>'L', | ||
15442 | 118886=>'L', | ||
15443 | 118887=>'L', | ||
15444 | 118888=>'L', | ||
15445 | 118889=>'L', | ||
15446 | 118890=>'L', | ||
15447 | 118891=>'L', | ||
15448 | 118892=>'L', | ||
15449 | 118893=>'L', | ||
15450 | 118894=>'L', | ||
15451 | 118895=>'L', | ||
15452 | 118896=>'L', | ||
15453 | 118897=>'L', | ||
15454 | 118898=>'L', | ||
15455 | 118899=>'L', | ||
15456 | 118900=>'L', | ||
15457 | 118901=>'L', | ||
15458 | 118902=>'L', | ||
15459 | 118903=>'L', | ||
15460 | 118904=>'L', | ||
15461 | 118905=>'L', | ||
15462 | 118906=>'L', | ||
15463 | 118907=>'L', | ||
15464 | 118908=>'L', | ||
15465 | 118909=>'L', | ||
15466 | 118910=>'L', | ||
15467 | 118911=>'L', | ||
15468 | 118912=>'L', | ||
15469 | 118913=>'L', | ||
15470 | 118914=>'L', | ||
15471 | 118915=>'L', | ||
15472 | 118916=>'L', | ||
15473 | 118917=>'L', | ||
15474 | 118918=>'L', | ||
15475 | 118919=>'L', | ||
15476 | 118920=>'L', | ||
15477 | 118921=>'L', | ||
15478 | 118922=>'L', | ||
15479 | 118923=>'L', | ||
15480 | 118924=>'L', | ||
15481 | 118925=>'L', | ||
15482 | 118926=>'L', | ||
15483 | 118927=>'L', | ||
15484 | 118928=>'L', | ||
15485 | 118929=>'L', | ||
15486 | 118930=>'L', | ||
15487 | 118931=>'L', | ||
15488 | 118932=>'L', | ||
15489 | 118933=>'L', | ||
15490 | 118934=>'L', | ||
15491 | 118935=>'L', | ||
15492 | 118936=>'L', | ||
15493 | 118937=>'L', | ||
15494 | 118938=>'L', | ||
15495 | 118939=>'L', | ||
15496 | 118940=>'L', | ||
15497 | 118941=>'L', | ||
15498 | 118942=>'L', | ||
15499 | 118943=>'L', | ||
15500 | 118944=>'L', | ||
15501 | 118945=>'L', | ||
15502 | 118946=>'L', | ||
15503 | 118947=>'L', | ||
15504 | 118948=>'L', | ||
15505 | 118949=>'L', | ||
15506 | 118950=>'L', | ||
15507 | 118951=>'L', | ||
15508 | 118952=>'L', | ||
15509 | 118953=>'L', | ||
15510 | 118954=>'L', | ||
15511 | 118955=>'L', | ||
15512 | 118956=>'L', | ||
15513 | 118957=>'L', | ||
15514 | 118958=>'L', | ||
15515 | 118959=>'L', | ||
15516 | 118960=>'L', | ||
15517 | 118961=>'L', | ||
15518 | 118962=>'L', | ||
15519 | 118963=>'L', | ||
15520 | 118964=>'L', | ||
15521 | 118965=>'L', | ||
15522 | 118966=>'L', | ||
15523 | 118967=>'L', | ||
15524 | 118968=>'L', | ||
15525 | 118969=>'L', | ||
15526 | 118970=>'L', | ||
15527 | 118971=>'L', | ||
15528 | 118972=>'L', | ||
15529 | 118973=>'L', | ||
15530 | 118974=>'L', | ||
15531 | 118975=>'L', | ||
15532 | 118976=>'L', | ||
15533 | 118977=>'L', | ||
15534 | 118978=>'L', | ||
15535 | 118979=>'L', | ||
15536 | 118980=>'L', | ||
15537 | 118981=>'L', | ||
15538 | 118982=>'L', | ||
15539 | 118983=>'L', | ||
15540 | 118984=>'L', | ||
15541 | 118985=>'L', | ||
15542 | 118986=>'L', | ||
15543 | 118987=>'L', | ||
15544 | 118988=>'L', | ||
15545 | 118989=>'L', | ||
15546 | 118990=>'L', | ||
15547 | 118991=>'L', | ||
15548 | 118992=>'L', | ||
15549 | 118993=>'L', | ||
15550 | 118994=>'L', | ||
15551 | 118995=>'L', | ||
15552 | 118996=>'L', | ||
15553 | 118997=>'L', | ||
15554 | 118998=>'L', | ||
15555 | 118999=>'L', | ||
15556 | 119000=>'L', | ||
15557 | 119001=>'L', | ||
15558 | 119002=>'L', | ||
15559 | 119003=>'L', | ||
15560 | 119004=>'L', | ||
15561 | 119005=>'L', | ||
15562 | 119006=>'L', | ||
15563 | 119007=>'L', | ||
15564 | 119008=>'L', | ||
15565 | 119009=>'L', | ||
15566 | 119010=>'L', | ||
15567 | 119011=>'L', | ||
15568 | 119012=>'L', | ||
15569 | 119013=>'L', | ||
15570 | 119014=>'L', | ||
15571 | 119015=>'L', | ||
15572 | 119016=>'L', | ||
15573 | 119017=>'L', | ||
15574 | 119018=>'L', | ||
15575 | 119019=>'L', | ||
15576 | 119020=>'L', | ||
15577 | 119021=>'L', | ||
15578 | 119022=>'L', | ||
15579 | 119023=>'L', | ||
15580 | 119024=>'L', | ||
15581 | 119025=>'L', | ||
15582 | 119026=>'L', | ||
15583 | 119027=>'L', | ||
15584 | 119028=>'L', | ||
15585 | 119029=>'L', | ||
15586 | 119040=>'L', | ||
15587 | 119041=>'L', | ||
15588 | 119042=>'L', | ||
15589 | 119043=>'L', | ||
15590 | 119044=>'L', | ||
15591 | 119045=>'L', | ||
15592 | 119046=>'L', | ||
15593 | 119047=>'L', | ||
15594 | 119048=>'L', | ||
15595 | 119049=>'L', | ||
15596 | 119050=>'L', | ||
15597 | 119051=>'L', | ||
15598 | 119052=>'L', | ||
15599 | 119053=>'L', | ||
15600 | 119054=>'L', | ||
15601 | 119055=>'L', | ||
15602 | 119056=>'L', | ||
15603 | 119057=>'L', | ||
15604 | 119058=>'L', | ||
15605 | 119059=>'L', | ||
15606 | 119060=>'L', | ||
15607 | 119061=>'L', | ||
15608 | 119062=>'L', | ||
15609 | 119063=>'L', | ||
15610 | 119064=>'L', | ||
15611 | 119065=>'L', | ||
15612 | 119066=>'L', | ||
15613 | 119067=>'L', | ||
15614 | 119068=>'L', | ||
15615 | 119069=>'L', | ||
15616 | 119070=>'L', | ||
15617 | 119071=>'L', | ||
15618 | 119072=>'L', | ||
15619 | 119073=>'L', | ||
15620 | 119074=>'L', | ||
15621 | 119075=>'L', | ||
15622 | 119076=>'L', | ||
15623 | 119077=>'L', | ||
15624 | 119078=>'L', | ||
15625 | 119082=>'L', | ||
15626 | 119083=>'L', | ||
15627 | 119084=>'L', | ||
15628 | 119085=>'L', | ||
15629 | 119086=>'L', | ||
15630 | 119087=>'L', | ||
15631 | 119088=>'L', | ||
15632 | 119089=>'L', | ||
15633 | 119090=>'L', | ||
15634 | 119091=>'L', | ||
15635 | 119092=>'L', | ||
15636 | 119093=>'L', | ||
15637 | 119094=>'L', | ||
15638 | 119095=>'L', | ||
15639 | 119096=>'L', | ||
15640 | 119097=>'L', | ||
15641 | 119098=>'L', | ||
15642 | 119099=>'L', | ||
15643 | 119100=>'L', | ||
15644 | 119101=>'L', | ||
15645 | 119102=>'L', | ||
15646 | 119103=>'L', | ||
15647 | 119104=>'L', | ||
15648 | 119105=>'L', | ||
15649 | 119106=>'L', | ||
15650 | 119107=>'L', | ||
15651 | 119108=>'L', | ||
15652 | 119109=>'L', | ||
15653 | 119110=>'L', | ||
15654 | 119111=>'L', | ||
15655 | 119112=>'L', | ||
15656 | 119113=>'L', | ||
15657 | 119114=>'L', | ||
15658 | 119115=>'L', | ||
15659 | 119116=>'L', | ||
15660 | 119117=>'L', | ||
15661 | 119118=>'L', | ||
15662 | 119119=>'L', | ||
15663 | 119120=>'L', | ||
15664 | 119121=>'L', | ||
15665 | 119122=>'L', | ||
15666 | 119123=>'L', | ||
15667 | 119124=>'L', | ||
15668 | 119125=>'L', | ||
15669 | 119126=>'L', | ||
15670 | 119127=>'L', | ||
15671 | 119128=>'L', | ||
15672 | 119129=>'L', | ||
15673 | 119130=>'L', | ||
15674 | 119131=>'L', | ||
15675 | 119132=>'L', | ||
15676 | 119133=>'L', | ||
15677 | 119134=>'L', | ||
15678 | 119135=>'L', | ||
15679 | 119136=>'L', | ||
15680 | 119137=>'L', | ||
15681 | 119138=>'L', | ||
15682 | 119139=>'L', | ||
15683 | 119140=>'L', | ||
15684 | 119141=>'L', | ||
15685 | 119142=>'L', | ||
15686 | 119143=>'NSM', | ||
15687 | 119144=>'NSM', | ||
15688 | 119145=>'NSM', | ||
15689 | 119146=>'L', | ||
15690 | 119147=>'L', | ||
15691 | 119148=>'L', | ||
15692 | 119149=>'L', | ||
15693 | 119150=>'L', | ||
15694 | 119151=>'L', | ||
15695 | 119152=>'L', | ||
15696 | 119153=>'L', | ||
15697 | 119154=>'L', | ||
15698 | 119155=>'BN', | ||
15699 | 119156=>'BN', | ||
15700 | 119157=>'BN', | ||
15701 | 119158=>'BN', | ||
15702 | 119159=>'BN', | ||
15703 | 119160=>'BN', | ||
15704 | 119161=>'BN', | ||
15705 | 119162=>'BN', | ||
15706 | 119163=>'NSM', | ||
15707 | 119164=>'NSM', | ||
15708 | 119165=>'NSM', | ||
15709 | 119166=>'NSM', | ||
15710 | 119167=>'NSM', | ||
15711 | 119168=>'NSM', | ||
15712 | 119169=>'NSM', | ||
15713 | 119170=>'NSM', | ||
15714 | 119171=>'L', | ||
15715 | 119172=>'L', | ||
15716 | 119173=>'NSM', | ||
15717 | 119174=>'NSM', | ||
15718 | 119175=>'NSM', | ||
15719 | 119176=>'NSM', | ||
15720 | 119177=>'NSM', | ||
15721 | 119178=>'NSM', | ||
15722 | 119179=>'NSM', | ||
15723 | 119180=>'L', | ||
15724 | 119181=>'L', | ||
15725 | 119182=>'L', | ||
15726 | 119183=>'L', | ||
15727 | 119184=>'L', | ||
15728 | 119185=>'L', | ||
15729 | 119186=>'L', | ||
15730 | 119187=>'L', | ||
15731 | 119188=>'L', | ||
15732 | 119189=>'L', | ||
15733 | 119190=>'L', | ||
15734 | 119191=>'L', | ||
15735 | 119192=>'L', | ||
15736 | 119193=>'L', | ||
15737 | 119194=>'L', | ||
15738 | 119195=>'L', | ||
15739 | 119196=>'L', | ||
15740 | 119197=>'L', | ||
15741 | 119198=>'L', | ||
15742 | 119199=>'L', | ||
15743 | 119200=>'L', | ||
15744 | 119201=>'L', | ||
15745 | 119202=>'L', | ||
15746 | 119203=>'L', | ||
15747 | 119204=>'L', | ||
15748 | 119205=>'L', | ||
15749 | 119206=>'L', | ||
15750 | 119207=>'L', | ||
15751 | 119208=>'L', | ||
15752 | 119209=>'L', | ||
15753 | 119210=>'NSM', | ||
15754 | 119211=>'NSM', | ||
15755 | 119212=>'NSM', | ||
15756 | 119213=>'NSM', | ||
15757 | 119214=>'L', | ||
15758 | 119215=>'L', | ||
15759 | 119216=>'L', | ||
15760 | 119217=>'L', | ||
15761 | 119218=>'L', | ||
15762 | 119219=>'L', | ||
15763 | 119220=>'L', | ||
15764 | 119221=>'L', | ||
15765 | 119222=>'L', | ||
15766 | 119223=>'L', | ||
15767 | 119224=>'L', | ||
15768 | 119225=>'L', | ||
15769 | 119226=>'L', | ||
15770 | 119227=>'L', | ||
15771 | 119228=>'L', | ||
15772 | 119229=>'L', | ||
15773 | 119230=>'L', | ||
15774 | 119231=>'L', | ||
15775 | 119232=>'L', | ||
15776 | 119233=>'L', | ||
15777 | 119234=>'L', | ||
15778 | 119235=>'L', | ||
15779 | 119236=>'L', | ||
15780 | 119237=>'L', | ||
15781 | 119238=>'L', | ||
15782 | 119239=>'L', | ||
15783 | 119240=>'L', | ||
15784 | 119241=>'L', | ||
15785 | 119242=>'L', | ||
15786 | 119243=>'L', | ||
15787 | 119244=>'L', | ||
15788 | 119245=>'L', | ||
15789 | 119246=>'L', | ||
15790 | 119247=>'L', | ||
15791 | 119248=>'L', | ||
15792 | 119249=>'L', | ||
15793 | 119250=>'L', | ||
15794 | 119251=>'L', | ||
15795 | 119252=>'L', | ||
15796 | 119253=>'L', | ||
15797 | 119254=>'L', | ||
15798 | 119255=>'L', | ||
15799 | 119256=>'L', | ||
15800 | 119257=>'L', | ||
15801 | 119258=>'L', | ||
15802 | 119259=>'L', | ||
15803 | 119260=>'L', | ||
15804 | 119261=>'L', | ||
15805 | 119296=>'ON', | ||
15806 | 119297=>'ON', | ||
15807 | 119298=>'ON', | ||
15808 | 119299=>'ON', | ||
15809 | 119300=>'ON', | ||
15810 | 119301=>'ON', | ||
15811 | 119302=>'ON', | ||
15812 | 119303=>'ON', | ||
15813 | 119304=>'ON', | ||
15814 | 119305=>'ON', | ||
15815 | 119306=>'ON', | ||
15816 | 119307=>'ON', | ||
15817 | 119308=>'ON', | ||
15818 | 119309=>'ON', | ||
15819 | 119310=>'ON', | ||
15820 | 119311=>'ON', | ||
15821 | 119312=>'ON', | ||
15822 | 119313=>'ON', | ||
15823 | 119314=>'ON', | ||
15824 | 119315=>'ON', | ||
15825 | 119316=>'ON', | ||
15826 | 119317=>'ON', | ||
15827 | 119318=>'ON', | ||
15828 | 119319=>'ON', | ||
15829 | 119320=>'ON', | ||
15830 | 119321=>'ON', | ||
15831 | 119322=>'ON', | ||
15832 | 119323=>'ON', | ||
15833 | 119324=>'ON', | ||
15834 | 119325=>'ON', | ||
15835 | 119326=>'ON', | ||
15836 | 119327=>'ON', | ||
15837 | 119328=>'ON', | ||
15838 | 119329=>'ON', | ||
15839 | 119330=>'ON', | ||
15840 | 119331=>'ON', | ||
15841 | 119332=>'ON', | ||
15842 | 119333=>'ON', | ||
15843 | 119334=>'ON', | ||
15844 | 119335=>'ON', | ||
15845 | 119336=>'ON', | ||
15846 | 119337=>'ON', | ||
15847 | 119338=>'ON', | ||
15848 | 119339=>'ON', | ||
15849 | 119340=>'ON', | ||
15850 | 119341=>'ON', | ||
15851 | 119342=>'ON', | ||
15852 | 119343=>'ON', | ||
15853 | 119344=>'ON', | ||
15854 | 119345=>'ON', | ||
15855 | 119346=>'ON', | ||
15856 | 119347=>'ON', | ||
15857 | 119348=>'ON', | ||
15858 | 119349=>'ON', | ||
15859 | 119350=>'ON', | ||
15860 | 119351=>'ON', | ||
15861 | 119352=>'ON', | ||
15862 | 119353=>'ON', | ||
15863 | 119354=>'ON', | ||
15864 | 119355=>'ON', | ||
15865 | 119356=>'ON', | ||
15866 | 119357=>'ON', | ||
15867 | 119358=>'ON', | ||
15868 | 119359=>'ON', | ||
15869 | 119360=>'ON', | ||
15870 | 119361=>'ON', | ||
15871 | 119362=>'NSM', | ||
15872 | 119363=>'NSM', | ||
15873 | 119364=>'NSM', | ||
15874 | 119365=>'ON', | ||
15875 | 119552=>'ON', | ||
15876 | 119553=>'ON', | ||
15877 | 119554=>'ON', | ||
15878 | 119555=>'ON', | ||
15879 | 119556=>'ON', | ||
15880 | 119557=>'ON', | ||
15881 | 119558=>'ON', | ||
15882 | 119559=>'ON', | ||
15883 | 119560=>'ON', | ||
15884 | 119561=>'ON', | ||
15885 | 119562=>'ON', | ||
15886 | 119563=>'ON', | ||
15887 | 119564=>'ON', | ||
15888 | 119565=>'ON', | ||
15889 | 119566=>'ON', | ||
15890 | 119567=>'ON', | ||
15891 | 119568=>'ON', | ||
15892 | 119569=>'ON', | ||
15893 | 119570=>'ON', | ||
15894 | 119571=>'ON', | ||
15895 | 119572=>'ON', | ||
15896 | 119573=>'ON', | ||
15897 | 119574=>'ON', | ||
15898 | 119575=>'ON', | ||
15899 | 119576=>'ON', | ||
15900 | 119577=>'ON', | ||
15901 | 119578=>'ON', | ||
15902 | 119579=>'ON', | ||
15903 | 119580=>'ON', | ||
15904 | 119581=>'ON', | ||
15905 | 119582=>'ON', | ||
15906 | 119583=>'ON', | ||
15907 | 119584=>'ON', | ||
15908 | 119585=>'ON', | ||
15909 | 119586=>'ON', | ||
15910 | 119587=>'ON', | ||
15911 | 119588=>'ON', | ||
15912 | 119589=>'ON', | ||
15913 | 119590=>'ON', | ||
15914 | 119591=>'ON', | ||
15915 | 119592=>'ON', | ||
15916 | 119593=>'ON', | ||
15917 | 119594=>'ON', | ||
15918 | 119595=>'ON', | ||
15919 | 119596=>'ON', | ||
15920 | 119597=>'ON', | ||
15921 | 119598=>'ON', | ||
15922 | 119599=>'ON', | ||
15923 | 119600=>'ON', | ||
15924 | 119601=>'ON', | ||
15925 | 119602=>'ON', | ||
15926 | 119603=>'ON', | ||
15927 | 119604=>'ON', | ||
15928 | 119605=>'ON', | ||
15929 | 119606=>'ON', | ||
15930 | 119607=>'ON', | ||
15931 | 119608=>'ON', | ||
15932 | 119609=>'ON', | ||
15933 | 119610=>'ON', | ||
15934 | 119611=>'ON', | ||
15935 | 119612=>'ON', | ||
15936 | 119613=>'ON', | ||
15937 | 119614=>'ON', | ||
15938 | 119615=>'ON', | ||
15939 | 119616=>'ON', | ||
15940 | 119617=>'ON', | ||
15941 | 119618=>'ON', | ||
15942 | 119619=>'ON', | ||
15943 | 119620=>'ON', | ||
15944 | 119621=>'ON', | ||
15945 | 119622=>'ON', | ||
15946 | 119623=>'ON', | ||
15947 | 119624=>'ON', | ||
15948 | 119625=>'ON', | ||
15949 | 119626=>'ON', | ||
15950 | 119627=>'ON', | ||
15951 | 119628=>'ON', | ||
15952 | 119629=>'ON', | ||
15953 | 119630=>'ON', | ||
15954 | 119631=>'ON', | ||
15955 | 119632=>'ON', | ||
15956 | 119633=>'ON', | ||
15957 | 119634=>'ON', | ||
15958 | 119635=>'ON', | ||
15959 | 119636=>'ON', | ||
15960 | 119637=>'ON', | ||
15961 | 119638=>'ON', | ||
15962 | 119648=>'L', | ||
15963 | 119649=>'L', | ||
15964 | 119650=>'L', | ||
15965 | 119651=>'L', | ||
15966 | 119652=>'L', | ||
15967 | 119653=>'L', | ||
15968 | 119654=>'L', | ||
15969 | 119655=>'L', | ||
15970 | 119656=>'L', | ||
15971 | 119657=>'L', | ||
15972 | 119658=>'L', | ||
15973 | 119659=>'L', | ||
15974 | 119660=>'L', | ||
15975 | 119661=>'L', | ||
15976 | 119662=>'L', | ||
15977 | 119663=>'L', | ||
15978 | 119664=>'L', | ||
15979 | 119665=>'L', | ||
15980 | 119808=>'L', | ||
15981 | 119809=>'L', | ||
15982 | 119810=>'L', | ||
15983 | 119811=>'L', | ||
15984 | 119812=>'L', | ||
15985 | 119813=>'L', | ||
15986 | 119814=>'L', | ||
15987 | 119815=>'L', | ||
15988 | 119816=>'L', | ||
15989 | 119817=>'L', | ||
15990 | 119818=>'L', | ||
15991 | 119819=>'L', | ||
15992 | 119820=>'L', | ||
15993 | 119821=>'L', | ||
15994 | 119822=>'L', | ||
15995 | 119823=>'L', | ||
15996 | 119824=>'L', | ||
15997 | 119825=>'L', | ||
15998 | 119826=>'L', | ||
15999 | 119827=>'L', | ||
16000 | 119828=>'L', | ||
16001 | 119829=>'L', | ||
16002 | 119830=>'L', | ||
16003 | 119831=>'L', | ||
16004 | 119832=>'L', | ||
16005 | 119833=>'L', | ||
16006 | 119834=>'L', | ||
16007 | 119835=>'L', | ||
16008 | 119836=>'L', | ||
16009 | 119837=>'L', | ||
16010 | 119838=>'L', | ||
16011 | 119839=>'L', | ||
16012 | 119840=>'L', | ||
16013 | 119841=>'L', | ||
16014 | 119842=>'L', | ||
16015 | 119843=>'L', | ||
16016 | 119844=>'L', | ||
16017 | 119845=>'L', | ||
16018 | 119846=>'L', | ||
16019 | 119847=>'L', | ||
16020 | 119848=>'L', | ||
16021 | 119849=>'L', | ||
16022 | 119850=>'L', | ||
16023 | 119851=>'L', | ||
16024 | 119852=>'L', | ||
16025 | 119853=>'L', | ||
16026 | 119854=>'L', | ||
16027 | 119855=>'L', | ||
16028 | 119856=>'L', | ||
16029 | 119857=>'L', | ||
16030 | 119858=>'L', | ||
16031 | 119859=>'L', | ||
16032 | 119860=>'L', | ||
16033 | 119861=>'L', | ||
16034 | 119862=>'L', | ||
16035 | 119863=>'L', | ||
16036 | 119864=>'L', | ||
16037 | 119865=>'L', | ||
16038 | 119866=>'L', | ||
16039 | 119867=>'L', | ||
16040 | 119868=>'L', | ||
16041 | 119869=>'L', | ||
16042 | 119870=>'L', | ||
16043 | 119871=>'L', | ||
16044 | 119872=>'L', | ||
16045 | 119873=>'L', | ||
16046 | 119874=>'L', | ||
16047 | 119875=>'L', | ||
16048 | 119876=>'L', | ||
16049 | 119877=>'L', | ||
16050 | 119878=>'L', | ||
16051 | 119879=>'L', | ||
16052 | 119880=>'L', | ||
16053 | 119881=>'L', | ||
16054 | 119882=>'L', | ||
16055 | 119883=>'L', | ||
16056 | 119884=>'L', | ||
16057 | 119885=>'L', | ||
16058 | 119886=>'L', | ||
16059 | 119887=>'L', | ||
16060 | 119888=>'L', | ||
16061 | 119889=>'L', | ||
16062 | 119890=>'L', | ||
16063 | 119891=>'L', | ||
16064 | 119892=>'L', | ||
16065 | 119894=>'L', | ||
16066 | 119895=>'L', | ||
16067 | 119896=>'L', | ||
16068 | 119897=>'L', | ||
16069 | 119898=>'L', | ||
16070 | 119899=>'L', | ||
16071 | 119900=>'L', | ||
16072 | 119901=>'L', | ||
16073 | 119902=>'L', | ||
16074 | 119903=>'L', | ||
16075 | 119904=>'L', | ||
16076 | 119905=>'L', | ||
16077 | 119906=>'L', | ||
16078 | 119907=>'L', | ||
16079 | 119908=>'L', | ||
16080 | 119909=>'L', | ||
16081 | 119910=>'L', | ||
16082 | 119911=>'L', | ||
16083 | 119912=>'L', | ||
16084 | 119913=>'L', | ||
16085 | 119914=>'L', | ||
16086 | 119915=>'L', | ||
16087 | 119916=>'L', | ||
16088 | 119917=>'L', | ||
16089 | 119918=>'L', | ||
16090 | 119919=>'L', | ||
16091 | 119920=>'L', | ||
16092 | 119921=>'L', | ||
16093 | 119922=>'L', | ||
16094 | 119923=>'L', | ||
16095 | 119924=>'L', | ||
16096 | 119925=>'L', | ||
16097 | 119926=>'L', | ||
16098 | 119927=>'L', | ||
16099 | 119928=>'L', | ||
16100 | 119929=>'L', | ||
16101 | 119930=>'L', | ||
16102 | 119931=>'L', | ||
16103 | 119932=>'L', | ||
16104 | 119933=>'L', | ||
16105 | 119934=>'L', | ||
16106 | 119935=>'L', | ||
16107 | 119936=>'L', | ||
16108 | 119937=>'L', | ||
16109 | 119938=>'L', | ||
16110 | 119939=>'L', | ||
16111 | 119940=>'L', | ||
16112 | 119941=>'L', | ||
16113 | 119942=>'L', | ||
16114 | 119943=>'L', | ||
16115 | 119944=>'L', | ||
16116 | 119945=>'L', | ||
16117 | 119946=>'L', | ||
16118 | 119947=>'L', | ||
16119 | 119948=>'L', | ||
16120 | 119949=>'L', | ||
16121 | 119950=>'L', | ||
16122 | 119951=>'L', | ||
16123 | 119952=>'L', | ||
16124 | 119953=>'L', | ||
16125 | 119954=>'L', | ||
16126 | 119955=>'L', | ||
16127 | 119956=>'L', | ||
16128 | 119957=>'L', | ||
16129 | 119958=>'L', | ||
16130 | 119959=>'L', | ||
16131 | 119960=>'L', | ||
16132 | 119961=>'L', | ||
16133 | 119962=>'L', | ||
16134 | 119963=>'L', | ||
16135 | 119964=>'L', | ||
16136 | 119966=>'L', | ||
16137 | 119967=>'L', | ||
16138 | 119970=>'L', | ||
16139 | 119973=>'L', | ||
16140 | 119974=>'L', | ||
16141 | 119977=>'L', | ||
16142 | 119978=>'L', | ||
16143 | 119979=>'L', | ||
16144 | 119980=>'L', | ||
16145 | 119982=>'L', | ||
16146 | 119983=>'L', | ||
16147 | 119984=>'L', | ||
16148 | 119985=>'L', | ||
16149 | 119986=>'L', | ||
16150 | 119987=>'L', | ||
16151 | 119988=>'L', | ||
16152 | 119989=>'L', | ||
16153 | 119990=>'L', | ||
16154 | 119991=>'L', | ||
16155 | 119992=>'L', | ||
16156 | 119993=>'L', | ||
16157 | 119995=>'L', | ||
16158 | 119997=>'L', | ||
16159 | 119998=>'L', | ||
16160 | 119999=>'L', | ||
16161 | 120000=>'L', | ||
16162 | 120001=>'L', | ||
16163 | 120002=>'L', | ||
16164 | 120003=>'L', | ||
16165 | 120005=>'L', | ||
16166 | 120006=>'L', | ||
16167 | 120007=>'L', | ||
16168 | 120008=>'L', | ||
16169 | 120009=>'L', | ||
16170 | 120010=>'L', | ||
16171 | 120011=>'L', | ||
16172 | 120012=>'L', | ||
16173 | 120013=>'L', | ||
16174 | 120014=>'L', | ||
16175 | 120015=>'L', | ||
16176 | 120016=>'L', | ||
16177 | 120017=>'L', | ||
16178 | 120018=>'L', | ||
16179 | 120019=>'L', | ||
16180 | 120020=>'L', | ||
16181 | 120021=>'L', | ||
16182 | 120022=>'L', | ||
16183 | 120023=>'L', | ||
16184 | 120024=>'L', | ||
16185 | 120025=>'L', | ||
16186 | 120026=>'L', | ||
16187 | 120027=>'L', | ||
16188 | 120028=>'L', | ||
16189 | 120029=>'L', | ||
16190 | 120030=>'L', | ||
16191 | 120031=>'L', | ||
16192 | 120032=>'L', | ||
16193 | 120033=>'L', | ||
16194 | 120034=>'L', | ||
16195 | 120035=>'L', | ||
16196 | 120036=>'L', | ||
16197 | 120037=>'L', | ||
16198 | 120038=>'L', | ||
16199 | 120039=>'L', | ||
16200 | 120040=>'L', | ||
16201 | 120041=>'L', | ||
16202 | 120042=>'L', | ||
16203 | 120043=>'L', | ||
16204 | 120044=>'L', | ||
16205 | 120045=>'L', | ||
16206 | 120046=>'L', | ||
16207 | 120047=>'L', | ||
16208 | 120048=>'L', | ||
16209 | 120049=>'L', | ||
16210 | 120050=>'L', | ||
16211 | 120051=>'L', | ||
16212 | 120052=>'L', | ||
16213 | 120053=>'L', | ||
16214 | 120054=>'L', | ||
16215 | 120055=>'L', | ||
16216 | 120056=>'L', | ||
16217 | 120057=>'L', | ||
16218 | 120058=>'L', | ||
16219 | 120059=>'L', | ||
16220 | 120060=>'L', | ||
16221 | 120061=>'L', | ||
16222 | 120062=>'L', | ||
16223 | 120063=>'L', | ||
16224 | 120064=>'L', | ||
16225 | 120065=>'L', | ||
16226 | 120066=>'L', | ||
16227 | 120067=>'L', | ||
16228 | 120068=>'L', | ||
16229 | 120069=>'L', | ||
16230 | 120071=>'L', | ||
16231 | 120072=>'L', | ||
16232 | 120073=>'L', | ||
16233 | 120074=>'L', | ||
16234 | 120077=>'L', | ||
16235 | 120078=>'L', | ||
16236 | 120079=>'L', | ||
16237 | 120080=>'L', | ||
16238 | 120081=>'L', | ||
16239 | 120082=>'L', | ||
16240 | 120083=>'L', | ||
16241 | 120084=>'L', | ||
16242 | 120086=>'L', | ||
16243 | 120087=>'L', | ||
16244 | 120088=>'L', | ||
16245 | 120089=>'L', | ||
16246 | 120090=>'L', | ||
16247 | 120091=>'L', | ||
16248 | 120092=>'L', | ||
16249 | 120094=>'L', | ||
16250 | 120095=>'L', | ||
16251 | 120096=>'L', | ||
16252 | 120097=>'L', | ||
16253 | 120098=>'L', | ||
16254 | 120099=>'L', | ||
16255 | 120100=>'L', | ||
16256 | 120101=>'L', | ||
16257 | 120102=>'L', | ||
16258 | 120103=>'L', | ||
16259 | 120104=>'L', | ||
16260 | 120105=>'L', | ||
16261 | 120106=>'L', | ||
16262 | 120107=>'L', | ||
16263 | 120108=>'L', | ||
16264 | 120109=>'L', | ||
16265 | 120110=>'L', | ||
16266 | 120111=>'L', | ||
16267 | 120112=>'L', | ||
16268 | 120113=>'L', | ||
16269 | 120114=>'L', | ||
16270 | 120115=>'L', | ||
16271 | 120116=>'L', | ||
16272 | 120117=>'L', | ||
16273 | 120118=>'L', | ||
16274 | 120119=>'L', | ||
16275 | 120120=>'L', | ||
16276 | 120121=>'L', | ||
16277 | 120123=>'L', | ||
16278 | 120124=>'L', | ||
16279 | 120125=>'L', | ||
16280 | 120126=>'L', | ||
16281 | 120128=>'L', | ||
16282 | 120129=>'L', | ||
16283 | 120130=>'L', | ||
16284 | 120131=>'L', | ||
16285 | 120132=>'L', | ||
16286 | 120134=>'L', | ||
16287 | 120138=>'L', | ||
16288 | 120139=>'L', | ||
16289 | 120140=>'L', | ||
16290 | 120141=>'L', | ||
16291 | 120142=>'L', | ||
16292 | 120143=>'L', | ||
16293 | 120144=>'L', | ||
16294 | 120146=>'L', | ||
16295 | 120147=>'L', | ||
16296 | 120148=>'L', | ||
16297 | 120149=>'L', | ||
16298 | 120150=>'L', | ||
16299 | 120151=>'L', | ||
16300 | 120152=>'L', | ||
16301 | 120153=>'L', | ||
16302 | 120154=>'L', | ||
16303 | 120155=>'L', | ||
16304 | 120156=>'L', | ||
16305 | 120157=>'L', | ||
16306 | 120158=>'L', | ||
16307 | 120159=>'L', | ||
16308 | 120160=>'L', | ||
16309 | 120161=>'L', | ||
16310 | 120162=>'L', | ||
16311 | 120163=>'L', | ||
16312 | 120164=>'L', | ||
16313 | 120165=>'L', | ||
16314 | 120166=>'L', | ||
16315 | 120167=>'L', | ||
16316 | 120168=>'L', | ||
16317 | 120169=>'L', | ||
16318 | 120170=>'L', | ||
16319 | 120171=>'L', | ||
16320 | 120172=>'L', | ||
16321 | 120173=>'L', | ||
16322 | 120174=>'L', | ||
16323 | 120175=>'L', | ||
16324 | 120176=>'L', | ||
16325 | 120177=>'L', | ||
16326 | 120178=>'L', | ||
16327 | 120179=>'L', | ||
16328 | 120180=>'L', | ||
16329 | 120181=>'L', | ||
16330 | 120182=>'L', | ||
16331 | 120183=>'L', | ||
16332 | 120184=>'L', | ||
16333 | 120185=>'L', | ||
16334 | 120186=>'L', | ||
16335 | 120187=>'L', | ||
16336 | 120188=>'L', | ||
16337 | 120189=>'L', | ||
16338 | 120190=>'L', | ||
16339 | 120191=>'L', | ||
16340 | 120192=>'L', | ||
16341 | 120193=>'L', | ||
16342 | 120194=>'L', | ||
16343 | 120195=>'L', | ||
16344 | 120196=>'L', | ||
16345 | 120197=>'L', | ||
16346 | 120198=>'L', | ||
16347 | 120199=>'L', | ||
16348 | 120200=>'L', | ||
16349 | 120201=>'L', | ||
16350 | 120202=>'L', | ||
16351 | 120203=>'L', | ||
16352 | 120204=>'L', | ||
16353 | 120205=>'L', | ||
16354 | 120206=>'L', | ||
16355 | 120207=>'L', | ||
16356 | 120208=>'L', | ||
16357 | 120209=>'L', | ||
16358 | 120210=>'L', | ||
16359 | 120211=>'L', | ||
16360 | 120212=>'L', | ||
16361 | 120213=>'L', | ||
16362 | 120214=>'L', | ||
16363 | 120215=>'L', | ||
16364 | 120216=>'L', | ||
16365 | 120217=>'L', | ||
16366 | 120218=>'L', | ||
16367 | 120219=>'L', | ||
16368 | 120220=>'L', | ||
16369 | 120221=>'L', | ||
16370 | 120222=>'L', | ||
16371 | 120223=>'L', | ||
16372 | 120224=>'L', | ||
16373 | 120225=>'L', | ||
16374 | 120226=>'L', | ||
16375 | 120227=>'L', | ||
16376 | 120228=>'L', | ||
16377 | 120229=>'L', | ||
16378 | 120230=>'L', | ||
16379 | 120231=>'L', | ||
16380 | 120232=>'L', | ||
16381 | 120233=>'L', | ||
16382 | 120234=>'L', | ||
16383 | 120235=>'L', | ||
16384 | 120236=>'L', | ||
16385 | 120237=>'L', | ||
16386 | 120238=>'L', | ||
16387 | 120239=>'L', | ||
16388 | 120240=>'L', | ||
16389 | 120241=>'L', | ||
16390 | 120242=>'L', | ||
16391 | 120243=>'L', | ||
16392 | 120244=>'L', | ||
16393 | 120245=>'L', | ||
16394 | 120246=>'L', | ||
16395 | 120247=>'L', | ||
16396 | 120248=>'L', | ||
16397 | 120249=>'L', | ||
16398 | 120250=>'L', | ||
16399 | 120251=>'L', | ||
16400 | 120252=>'L', | ||
16401 | 120253=>'L', | ||
16402 | 120254=>'L', | ||
16403 | 120255=>'L', | ||
16404 | 120256=>'L', | ||
16405 | 120257=>'L', | ||
16406 | 120258=>'L', | ||
16407 | 120259=>'L', | ||
16408 | 120260=>'L', | ||
16409 | 120261=>'L', | ||
16410 | 120262=>'L', | ||
16411 | 120263=>'L', | ||
16412 | 120264=>'L', | ||
16413 | 120265=>'L', | ||
16414 | 120266=>'L', | ||
16415 | 120267=>'L', | ||
16416 | 120268=>'L', | ||
16417 | 120269=>'L', | ||
16418 | 120270=>'L', | ||
16419 | 120271=>'L', | ||
16420 | 120272=>'L', | ||
16421 | 120273=>'L', | ||
16422 | 120274=>'L', | ||
16423 | 120275=>'L', | ||
16424 | 120276=>'L', | ||
16425 | 120277=>'L', | ||
16426 | 120278=>'L', | ||
16427 | 120279=>'L', | ||
16428 | 120280=>'L', | ||
16429 | 120281=>'L', | ||
16430 | 120282=>'L', | ||
16431 | 120283=>'L', | ||
16432 | 120284=>'L', | ||
16433 | 120285=>'L', | ||
16434 | 120286=>'L', | ||
16435 | 120287=>'L', | ||
16436 | 120288=>'L', | ||
16437 | 120289=>'L', | ||
16438 | 120290=>'L', | ||
16439 | 120291=>'L', | ||
16440 | 120292=>'L', | ||
16441 | 120293=>'L', | ||
16442 | 120294=>'L', | ||
16443 | 120295=>'L', | ||
16444 | 120296=>'L', | ||
16445 | 120297=>'L', | ||
16446 | 120298=>'L', | ||
16447 | 120299=>'L', | ||
16448 | 120300=>'L', | ||
16449 | 120301=>'L', | ||
16450 | 120302=>'L', | ||
16451 | 120303=>'L', | ||
16452 | 120304=>'L', | ||
16453 | 120305=>'L', | ||
16454 | 120306=>'L', | ||
16455 | 120307=>'L', | ||
16456 | 120308=>'L', | ||
16457 | 120309=>'L', | ||
16458 | 120310=>'L', | ||
16459 | 120311=>'L', | ||
16460 | 120312=>'L', | ||
16461 | 120313=>'L', | ||
16462 | 120314=>'L', | ||
16463 | 120315=>'L', | ||
16464 | 120316=>'L', | ||
16465 | 120317=>'L', | ||
16466 | 120318=>'L', | ||
16467 | 120319=>'L', | ||
16468 | 120320=>'L', | ||
16469 | 120321=>'L', | ||
16470 | 120322=>'L', | ||
16471 | 120323=>'L', | ||
16472 | 120324=>'L', | ||
16473 | 120325=>'L', | ||
16474 | 120326=>'L', | ||
16475 | 120327=>'L', | ||
16476 | 120328=>'L', | ||
16477 | 120329=>'L', | ||
16478 | 120330=>'L', | ||
16479 | 120331=>'L', | ||
16480 | 120332=>'L', | ||
16481 | 120333=>'L', | ||
16482 | 120334=>'L', | ||
16483 | 120335=>'L', | ||
16484 | 120336=>'L', | ||
16485 | 120337=>'L', | ||
16486 | 120338=>'L', | ||
16487 | 120339=>'L', | ||
16488 | 120340=>'L', | ||
16489 | 120341=>'L', | ||
16490 | 120342=>'L', | ||
16491 | 120343=>'L', | ||
16492 | 120344=>'L', | ||
16493 | 120345=>'L', | ||
16494 | 120346=>'L', | ||
16495 | 120347=>'L', | ||
16496 | 120348=>'L', | ||
16497 | 120349=>'L', | ||
16498 | 120350=>'L', | ||
16499 | 120351=>'L', | ||
16500 | 120352=>'L', | ||
16501 | 120353=>'L', | ||
16502 | 120354=>'L', | ||
16503 | 120355=>'L', | ||
16504 | 120356=>'L', | ||
16505 | 120357=>'L', | ||
16506 | 120358=>'L', | ||
16507 | 120359=>'L', | ||
16508 | 120360=>'L', | ||
16509 | 120361=>'L', | ||
16510 | 120362=>'L', | ||
16511 | 120363=>'L', | ||
16512 | 120364=>'L', | ||
16513 | 120365=>'L', | ||
16514 | 120366=>'L', | ||
16515 | 120367=>'L', | ||
16516 | 120368=>'L', | ||
16517 | 120369=>'L', | ||
16518 | 120370=>'L', | ||
16519 | 120371=>'L', | ||
16520 | 120372=>'L', | ||
16521 | 120373=>'L', | ||
16522 | 120374=>'L', | ||
16523 | 120375=>'L', | ||
16524 | 120376=>'L', | ||
16525 | 120377=>'L', | ||
16526 | 120378=>'L', | ||
16527 | 120379=>'L', | ||
16528 | 120380=>'L', | ||
16529 | 120381=>'L', | ||
16530 | 120382=>'L', | ||
16531 | 120383=>'L', | ||
16532 | 120384=>'L', | ||
16533 | 120385=>'L', | ||
16534 | 120386=>'L', | ||
16535 | 120387=>'L', | ||
16536 | 120388=>'L', | ||
16537 | 120389=>'L', | ||
16538 | 120390=>'L', | ||
16539 | 120391=>'L', | ||
16540 | 120392=>'L', | ||
16541 | 120393=>'L', | ||
16542 | 120394=>'L', | ||
16543 | 120395=>'L', | ||
16544 | 120396=>'L', | ||
16545 | 120397=>'L', | ||
16546 | 120398=>'L', | ||
16547 | 120399=>'L', | ||
16548 | 120400=>'L', | ||
16549 | 120401=>'L', | ||
16550 | 120402=>'L', | ||
16551 | 120403=>'L', | ||
16552 | 120404=>'L', | ||
16553 | 120405=>'L', | ||
16554 | 120406=>'L', | ||
16555 | 120407=>'L', | ||
16556 | 120408=>'L', | ||
16557 | 120409=>'L', | ||
16558 | 120410=>'L', | ||
16559 | 120411=>'L', | ||
16560 | 120412=>'L', | ||
16561 | 120413=>'L', | ||
16562 | 120414=>'L', | ||
16563 | 120415=>'L', | ||
16564 | 120416=>'L', | ||
16565 | 120417=>'L', | ||
16566 | 120418=>'L', | ||
16567 | 120419=>'L', | ||
16568 | 120420=>'L', | ||
16569 | 120421=>'L', | ||
16570 | 120422=>'L', | ||
16571 | 120423=>'L', | ||
16572 | 120424=>'L', | ||
16573 | 120425=>'L', | ||
16574 | 120426=>'L', | ||
16575 | 120427=>'L', | ||
16576 | 120428=>'L', | ||
16577 | 120429=>'L', | ||
16578 | 120430=>'L', | ||
16579 | 120431=>'L', | ||
16580 | 120432=>'L', | ||
16581 | 120433=>'L', | ||
16582 | 120434=>'L', | ||
16583 | 120435=>'L', | ||
16584 | 120436=>'L', | ||
16585 | 120437=>'L', | ||
16586 | 120438=>'L', | ||
16587 | 120439=>'L', | ||
16588 | 120440=>'L', | ||
16589 | 120441=>'L', | ||
16590 | 120442=>'L', | ||
16591 | 120443=>'L', | ||
16592 | 120444=>'L', | ||
16593 | 120445=>'L', | ||
16594 | 120446=>'L', | ||
16595 | 120447=>'L', | ||
16596 | 120448=>'L', | ||
16597 | 120449=>'L', | ||
16598 | 120450=>'L', | ||
16599 | 120451=>'L', | ||
16600 | 120452=>'L', | ||
16601 | 120453=>'L', | ||
16602 | 120454=>'L', | ||
16603 | 120455=>'L', | ||
16604 | 120456=>'L', | ||
16605 | 120457=>'L', | ||
16606 | 120458=>'L', | ||
16607 | 120459=>'L', | ||
16608 | 120460=>'L', | ||
16609 | 120461=>'L', | ||
16610 | 120462=>'L', | ||
16611 | 120463=>'L', | ||
16612 | 120464=>'L', | ||
16613 | 120465=>'L', | ||
16614 | 120466=>'L', | ||
16615 | 120467=>'L', | ||
16616 | 120468=>'L', | ||
16617 | 120469=>'L', | ||
16618 | 120470=>'L', | ||
16619 | 120471=>'L', | ||
16620 | 120472=>'L', | ||
16621 | 120473=>'L', | ||
16622 | 120474=>'L', | ||
16623 | 120475=>'L', | ||
16624 | 120476=>'L', | ||
16625 | 120477=>'L', | ||
16626 | 120478=>'L', | ||
16627 | 120479=>'L', | ||
16628 | 120480=>'L', | ||
16629 | 120481=>'L', | ||
16630 | 120482=>'L', | ||
16631 | 120483=>'L', | ||
16632 | 120484=>'L', | ||
16633 | 120485=>'L', | ||
16634 | 120488=>'L', | ||
16635 | 120489=>'L', | ||
16636 | 120490=>'L', | ||
16637 | 120491=>'L', | ||
16638 | 120492=>'L', | ||
16639 | 120493=>'L', | ||
16640 | 120494=>'L', | ||
16641 | 120495=>'L', | ||
16642 | 120496=>'L', | ||
16643 | 120497=>'L', | ||
16644 | 120498=>'L', | ||
16645 | 120499=>'L', | ||
16646 | 120500=>'L', | ||
16647 | 120501=>'L', | ||
16648 | 120502=>'L', | ||
16649 | 120503=>'L', | ||
16650 | 120504=>'L', | ||
16651 | 120505=>'L', | ||
16652 | 120506=>'L', | ||
16653 | 120507=>'L', | ||
16654 | 120508=>'L', | ||
16655 | 120509=>'L', | ||
16656 | 120510=>'L', | ||
16657 | 120511=>'L', | ||
16658 | 120512=>'L', | ||
16659 | 120513=>'L', | ||
16660 | 120514=>'L', | ||
16661 | 120515=>'L', | ||
16662 | 120516=>'L', | ||
16663 | 120517=>'L', | ||
16664 | 120518=>'L', | ||
16665 | 120519=>'L', | ||
16666 | 120520=>'L', | ||
16667 | 120521=>'L', | ||
16668 | 120522=>'L', | ||
16669 | 120523=>'L', | ||
16670 | 120524=>'L', | ||
16671 | 120525=>'L', | ||
16672 | 120526=>'L', | ||
16673 | 120527=>'L', | ||
16674 | 120528=>'L', | ||
16675 | 120529=>'L', | ||
16676 | 120530=>'L', | ||
16677 | 120531=>'L', | ||
16678 | 120532=>'L', | ||
16679 | 120533=>'L', | ||
16680 | 120534=>'L', | ||
16681 | 120535=>'L', | ||
16682 | 120536=>'L', | ||
16683 | 120537=>'L', | ||
16684 | 120538=>'L', | ||
16685 | 120539=>'L', | ||
16686 | 120540=>'L', | ||
16687 | 120541=>'L', | ||
16688 | 120542=>'L', | ||
16689 | 120543=>'L', | ||
16690 | 120544=>'L', | ||
16691 | 120545=>'L', | ||
16692 | 120546=>'L', | ||
16693 | 120547=>'L', | ||
16694 | 120548=>'L', | ||
16695 | 120549=>'L', | ||
16696 | 120550=>'L', | ||
16697 | 120551=>'L', | ||
16698 | 120552=>'L', | ||
16699 | 120553=>'L', | ||
16700 | 120554=>'L', | ||
16701 | 120555=>'L', | ||
16702 | 120556=>'L', | ||
16703 | 120557=>'L', | ||
16704 | 120558=>'L', | ||
16705 | 120559=>'L', | ||
16706 | 120560=>'L', | ||
16707 | 120561=>'L', | ||
16708 | 120562=>'L', | ||
16709 | 120563=>'L', | ||
16710 | 120564=>'L', | ||
16711 | 120565=>'L', | ||
16712 | 120566=>'L', | ||
16713 | 120567=>'L', | ||
16714 | 120568=>'L', | ||
16715 | 120569=>'L', | ||
16716 | 120570=>'L', | ||
16717 | 120571=>'L', | ||
16718 | 120572=>'L', | ||
16719 | 120573=>'L', | ||
16720 | 120574=>'L', | ||
16721 | 120575=>'L', | ||
16722 | 120576=>'L', | ||
16723 | 120577=>'L', | ||
16724 | 120578=>'L', | ||
16725 | 120579=>'L', | ||
16726 | 120580=>'L', | ||
16727 | 120581=>'L', | ||
16728 | 120582=>'L', | ||
16729 | 120583=>'L', | ||
16730 | 120584=>'L', | ||
16731 | 120585=>'L', | ||
16732 | 120586=>'L', | ||
16733 | 120587=>'L', | ||
16734 | 120588=>'L', | ||
16735 | 120589=>'L', | ||
16736 | 120590=>'L', | ||
16737 | 120591=>'L', | ||
16738 | 120592=>'L', | ||
16739 | 120593=>'L', | ||
16740 | 120594=>'L', | ||
16741 | 120595=>'L', | ||
16742 | 120596=>'L', | ||
16743 | 120597=>'L', | ||
16744 | 120598=>'L', | ||
16745 | 120599=>'L', | ||
16746 | 120600=>'L', | ||
16747 | 120601=>'L', | ||
16748 | 120602=>'L', | ||
16749 | 120603=>'L', | ||
16750 | 120604=>'L', | ||
16751 | 120605=>'L', | ||
16752 | 120606=>'L', | ||
16753 | 120607=>'L', | ||
16754 | 120608=>'L', | ||
16755 | 120609=>'L', | ||
16756 | 120610=>'L', | ||
16757 | 120611=>'L', | ||
16758 | 120612=>'L', | ||
16759 | 120613=>'L', | ||
16760 | 120614=>'L', | ||
16761 | 120615=>'L', | ||
16762 | 120616=>'L', | ||
16763 | 120617=>'L', | ||
16764 | 120618=>'L', | ||
16765 | 120619=>'L', | ||
16766 | 120620=>'L', | ||
16767 | 120621=>'L', | ||
16768 | 120622=>'L', | ||
16769 | 120623=>'L', | ||
16770 | 120624=>'L', | ||
16771 | 120625=>'L', | ||
16772 | 120626=>'L', | ||
16773 | 120627=>'L', | ||
16774 | 120628=>'L', | ||
16775 | 120629=>'L', | ||
16776 | 120630=>'L', | ||
16777 | 120631=>'L', | ||
16778 | 120632=>'L', | ||
16779 | 120633=>'L', | ||
16780 | 120634=>'L', | ||
16781 | 120635=>'L', | ||
16782 | 120636=>'L', | ||
16783 | 120637=>'L', | ||
16784 | 120638=>'L', | ||
16785 | 120639=>'L', | ||
16786 | 120640=>'L', | ||
16787 | 120641=>'L', | ||
16788 | 120642=>'L', | ||
16789 | 120643=>'L', | ||
16790 | 120644=>'L', | ||
16791 | 120645=>'L', | ||
16792 | 120646=>'L', | ||
16793 | 120647=>'L', | ||
16794 | 120648=>'L', | ||
16795 | 120649=>'L', | ||
16796 | 120650=>'L', | ||
16797 | 120651=>'L', | ||
16798 | 120652=>'L', | ||
16799 | 120653=>'L', | ||
16800 | 120654=>'L', | ||
16801 | 120655=>'L', | ||
16802 | 120656=>'L', | ||
16803 | 120657=>'L', | ||
16804 | 120658=>'L', | ||
16805 | 120659=>'L', | ||
16806 | 120660=>'L', | ||
16807 | 120661=>'L', | ||
16808 | 120662=>'L', | ||
16809 | 120663=>'L', | ||
16810 | 120664=>'L', | ||
16811 | 120665=>'L', | ||
16812 | 120666=>'L', | ||
16813 | 120667=>'L', | ||
16814 | 120668=>'L', | ||
16815 | 120669=>'L', | ||
16816 | 120670=>'L', | ||
16817 | 120671=>'L', | ||
16818 | 120672=>'L', | ||
16819 | 120673=>'L', | ||
16820 | 120674=>'L', | ||
16821 | 120675=>'L', | ||
16822 | 120676=>'L', | ||
16823 | 120677=>'L', | ||
16824 | 120678=>'L', | ||
16825 | 120679=>'L', | ||
16826 | 120680=>'L', | ||
16827 | 120681=>'L', | ||
16828 | 120682=>'L', | ||
16829 | 120683=>'L', | ||
16830 | 120684=>'L', | ||
16831 | 120685=>'L', | ||
16832 | 120686=>'L', | ||
16833 | 120687=>'L', | ||
16834 | 120688=>'L', | ||
16835 | 120689=>'L', | ||
16836 | 120690=>'L', | ||
16837 | 120691=>'L', | ||
16838 | 120692=>'L', | ||
16839 | 120693=>'L', | ||
16840 | 120694=>'L', | ||
16841 | 120695=>'L', | ||
16842 | 120696=>'L', | ||
16843 | 120697=>'L', | ||
16844 | 120698=>'L', | ||
16845 | 120699=>'L', | ||
16846 | 120700=>'L', | ||
16847 | 120701=>'L', | ||
16848 | 120702=>'L', | ||
16849 | 120703=>'L', | ||
16850 | 120704=>'L', | ||
16851 | 120705=>'L', | ||
16852 | 120706=>'L', | ||
16853 | 120707=>'L', | ||
16854 | 120708=>'L', | ||
16855 | 120709=>'L', | ||
16856 | 120710=>'L', | ||
16857 | 120711=>'L', | ||
16858 | 120712=>'L', | ||
16859 | 120713=>'L', | ||
16860 | 120714=>'L', | ||
16861 | 120715=>'L', | ||
16862 | 120716=>'L', | ||
16863 | 120717=>'L', | ||
16864 | 120718=>'L', | ||
16865 | 120719=>'L', | ||
16866 | 120720=>'L', | ||
16867 | 120721=>'L', | ||
16868 | 120722=>'L', | ||
16869 | 120723=>'L', | ||
16870 | 120724=>'L', | ||
16871 | 120725=>'L', | ||
16872 | 120726=>'L', | ||
16873 | 120727=>'L', | ||
16874 | 120728=>'L', | ||
16875 | 120729=>'L', | ||
16876 | 120730=>'L', | ||
16877 | 120731=>'L', | ||
16878 | 120732=>'L', | ||
16879 | 120733=>'L', | ||
16880 | 120734=>'L', | ||
16881 | 120735=>'L', | ||
16882 | 120736=>'L', | ||
16883 | 120737=>'L', | ||
16884 | 120738=>'L', | ||
16885 | 120739=>'L', | ||
16886 | 120740=>'L', | ||
16887 | 120741=>'L', | ||
16888 | 120742=>'L', | ||
16889 | 120743=>'L', | ||
16890 | 120744=>'L', | ||
16891 | 120745=>'L', | ||
16892 | 120746=>'L', | ||
16893 | 120747=>'L', | ||
16894 | 120748=>'L', | ||
16895 | 120749=>'L', | ||
16896 | 120750=>'L', | ||
16897 | 120751=>'L', | ||
16898 | 120752=>'L', | ||
16899 | 120753=>'L', | ||
16900 | 120754=>'L', | ||
16901 | 120755=>'L', | ||
16902 | 120756=>'L', | ||
16903 | 120757=>'L', | ||
16904 | 120758=>'L', | ||
16905 | 120759=>'L', | ||
16906 | 120760=>'L', | ||
16907 | 120761=>'L', | ||
16908 | 120762=>'L', | ||
16909 | 120763=>'L', | ||
16910 | 120764=>'L', | ||
16911 | 120765=>'L', | ||
16912 | 120766=>'L', | ||
16913 | 120767=>'L', | ||
16914 | 120768=>'L', | ||
16915 | 120769=>'L', | ||
16916 | 120770=>'L', | ||
16917 | 120771=>'L', | ||
16918 | 120772=>'L', | ||
16919 | 120773=>'L', | ||
16920 | 120774=>'L', | ||
16921 | 120775=>'L', | ||
16922 | 120776=>'L', | ||
16923 | 120777=>'L', | ||
16924 | 120778=>'L', | ||
16925 | 120779=>'L', | ||
16926 | 120782=>'EN', | ||
16927 | 120783=>'EN', | ||
16928 | 120784=>'EN', | ||
16929 | 120785=>'EN', | ||
16930 | 120786=>'EN', | ||
16931 | 120787=>'EN', | ||
16932 | 120788=>'EN', | ||
16933 | 120789=>'EN', | ||
16934 | 120790=>'EN', | ||
16935 | 120791=>'EN', | ||
16936 | 120792=>'EN', | ||
16937 | 120793=>'EN', | ||
16938 | 120794=>'EN', | ||
16939 | 120795=>'EN', | ||
16940 | 120796=>'EN', | ||
16941 | 120797=>'EN', | ||
16942 | 120798=>'EN', | ||
16943 | 120799=>'EN', | ||
16944 | 120800=>'EN', | ||
16945 | 120801=>'EN', | ||
16946 | 120802=>'EN', | ||
16947 | 120803=>'EN', | ||
16948 | 120804=>'EN', | ||
16949 | 120805=>'EN', | ||
16950 | 120806=>'EN', | ||
16951 | 120807=>'EN', | ||
16952 | 120808=>'EN', | ||
16953 | 120809=>'EN', | ||
16954 | 120810=>'EN', | ||
16955 | 120811=>'EN', | ||
16956 | 120812=>'EN', | ||
16957 | 120813=>'EN', | ||
16958 | 120814=>'EN', | ||
16959 | 120815=>'EN', | ||
16960 | 120816=>'EN', | ||
16961 | 120817=>'EN', | ||
16962 | 120818=>'EN', | ||
16963 | 120819=>'EN', | ||
16964 | 120820=>'EN', | ||
16965 | 120821=>'EN', | ||
16966 | 120822=>'EN', | ||
16967 | 120823=>'EN', | ||
16968 | 120824=>'EN', | ||
16969 | 120825=>'EN', | ||
16970 | 120826=>'EN', | ||
16971 | 120827=>'EN', | ||
16972 | 120828=>'EN', | ||
16973 | 120829=>'EN', | ||
16974 | 120830=>'EN', | ||
16975 | 120831=>'EN', | ||
16976 | 131072=>'L', | ||
16977 | 173782=>'L', | ||
16978 | 194560=>'L', | ||
16979 | 194561=>'L', | ||
16980 | 194562=>'L', | ||
16981 | 194563=>'L', | ||
16982 | 194564=>'L', | ||
16983 | 194565=>'L', | ||
16984 | 194566=>'L', | ||
16985 | 194567=>'L', | ||
16986 | 194568=>'L', | ||
16987 | 194569=>'L', | ||
16988 | 194570=>'L', | ||
16989 | 194571=>'L', | ||
16990 | 194572=>'L', | ||
16991 | 194573=>'L', | ||
16992 | 194574=>'L', | ||
16993 | 194575=>'L', | ||
16994 | 194576=>'L', | ||
16995 | 194577=>'L', | ||
16996 | 194578=>'L', | ||
16997 | 194579=>'L', | ||
16998 | 194580=>'L', | ||
16999 | 194581=>'L', | ||
17000 | 194582=>'L', | ||
17001 | 194583=>'L', | ||
17002 | 194584=>'L', | ||
17003 | 194585=>'L', | ||
17004 | 194586=>'L', | ||
17005 | 194587=>'L', | ||
17006 | 194588=>'L', | ||
17007 | 194589=>'L', | ||
17008 | 194590=>'L', | ||
17009 | 194591=>'L', | ||
17010 | 194592=>'L', | ||
17011 | 194593=>'L', | ||
17012 | 194594=>'L', | ||
17013 | 194595=>'L', | ||
17014 | 194596=>'L', | ||
17015 | 194597=>'L', | ||
17016 | 194598=>'L', | ||
17017 | 194599=>'L', | ||
17018 | 194600=>'L', | ||
17019 | 194601=>'L', | ||
17020 | 194602=>'L', | ||
17021 | 194603=>'L', | ||
17022 | 194604=>'L', | ||
17023 | 194605=>'L', | ||
17024 | 194606=>'L', | ||
17025 | 194607=>'L', | ||
17026 | 194608=>'L', | ||
17027 | 194609=>'L', | ||
17028 | 194610=>'L', | ||
17029 | 194611=>'L', | ||
17030 | 194612=>'L', | ||
17031 | 194613=>'L', | ||
17032 | 194614=>'L', | ||
17033 | 194615=>'L', | ||
17034 | 194616=>'L', | ||
17035 | 194617=>'L', | ||
17036 | 194618=>'L', | ||
17037 | 194619=>'L', | ||
17038 | 194620=>'L', | ||
17039 | 194621=>'L', | ||
17040 | 194622=>'L', | ||
17041 | 194623=>'L', | ||
17042 | 194624=>'L', | ||
17043 | 194625=>'L', | ||
17044 | 194626=>'L', | ||
17045 | 194627=>'L', | ||
17046 | 194628=>'L', | ||
17047 | 194629=>'L', | ||
17048 | 194630=>'L', | ||
17049 | 194631=>'L', | ||
17050 | 194632=>'L', | ||
17051 | 194633=>'L', | ||
17052 | 194634=>'L', | ||
17053 | 194635=>'L', | ||
17054 | 194636=>'L', | ||
17055 | 194637=>'L', | ||
17056 | 194638=>'L', | ||
17057 | 194639=>'L', | ||
17058 | 194640=>'L', | ||
17059 | 194641=>'L', | ||
17060 | 194642=>'L', | ||
17061 | 194643=>'L', | ||
17062 | 194644=>'L', | ||
17063 | 194645=>'L', | ||
17064 | 194646=>'L', | ||
17065 | 194647=>'L', | ||
17066 | 194648=>'L', | ||
17067 | 194649=>'L', | ||
17068 | 194650=>'L', | ||
17069 | 194651=>'L', | ||
17070 | 194652=>'L', | ||
17071 | 194653=>'L', | ||
17072 | 194654=>'L', | ||
17073 | 194655=>'L', | ||
17074 | 194656=>'L', | ||
17075 | 194657=>'L', | ||
17076 | 194658=>'L', | ||
17077 | 194659=>'L', | ||
17078 | 194660=>'L', | ||
17079 | 194661=>'L', | ||
17080 | 194662=>'L', | ||
17081 | 194663=>'L', | ||
17082 | 194664=>'L', | ||
17083 | 194665=>'L', | ||
17084 | 194666=>'L', | ||
17085 | 194667=>'L', | ||
17086 | 194668=>'L', | ||
17087 | 194669=>'L', | ||
17088 | 194670=>'L', | ||
17089 | 194671=>'L', | ||
17090 | 194672=>'L', | ||
17091 | 194673=>'L', | ||
17092 | 194674=>'L', | ||
17093 | 194675=>'L', | ||
17094 | 194676=>'L', | ||
17095 | 194677=>'L', | ||
17096 | 194678=>'L', | ||
17097 | 194679=>'L', | ||
17098 | 194680=>'L', | ||
17099 | 194681=>'L', | ||
17100 | 194682=>'L', | ||
17101 | 194683=>'L', | ||
17102 | 194684=>'L', | ||
17103 | 194685=>'L', | ||
17104 | 194686=>'L', | ||
17105 | 194687=>'L', | ||
17106 | 194688=>'L', | ||
17107 | 194689=>'L', | ||
17108 | 194690=>'L', | ||
17109 | 194691=>'L', | ||
17110 | 194692=>'L', | ||
17111 | 194693=>'L', | ||
17112 | 194694=>'L', | ||
17113 | 194695=>'L', | ||
17114 | 194696=>'L', | ||
17115 | 194697=>'L', | ||
17116 | 194698=>'L', | ||
17117 | 194699=>'L', | ||
17118 | 194700=>'L', | ||
17119 | 194701=>'L', | ||
17120 | 194702=>'L', | ||
17121 | 194703=>'L', | ||
17122 | 194704=>'L', | ||
17123 | 194705=>'L', | ||
17124 | 194706=>'L', | ||
17125 | 194707=>'L', | ||
17126 | 194708=>'L', | ||
17127 | 194709=>'L', | ||
17128 | 194710=>'L', | ||
17129 | 194711=>'L', | ||
17130 | 194712=>'L', | ||
17131 | 194713=>'L', | ||
17132 | 194714=>'L', | ||
17133 | 194715=>'L', | ||
17134 | 194716=>'L', | ||
17135 | 194717=>'L', | ||
17136 | 194718=>'L', | ||
17137 | 194719=>'L', | ||
17138 | 194720=>'L', | ||
17139 | 194721=>'L', | ||
17140 | 194722=>'L', | ||
17141 | 194723=>'L', | ||
17142 | 194724=>'L', | ||
17143 | 194725=>'L', | ||
17144 | 194726=>'L', | ||
17145 | 194727=>'L', | ||
17146 | 194728=>'L', | ||
17147 | 194729=>'L', | ||
17148 | 194730=>'L', | ||
17149 | 194731=>'L', | ||
17150 | 194732=>'L', | ||
17151 | 194733=>'L', | ||
17152 | 194734=>'L', | ||
17153 | 194735=>'L', | ||
17154 | 194736=>'L', | ||
17155 | 194737=>'L', | ||
17156 | 194738=>'L', | ||
17157 | 194739=>'L', | ||
17158 | 194740=>'L', | ||
17159 | 194741=>'L', | ||
17160 | 194742=>'L', | ||
17161 | 194743=>'L', | ||
17162 | 194744=>'L', | ||
17163 | 194745=>'L', | ||
17164 | 194746=>'L', | ||
17165 | 194747=>'L', | ||
17166 | 194748=>'L', | ||
17167 | 194749=>'L', | ||
17168 | 194750=>'L', | ||
17169 | 194751=>'L', | ||
17170 | 194752=>'L', | ||
17171 | 194753=>'L', | ||
17172 | 194754=>'L', | ||
17173 | 194755=>'L', | ||
17174 | 194756=>'L', | ||
17175 | 194757=>'L', | ||
17176 | 194758=>'L', | ||
17177 | 194759=>'L', | ||
17178 | 194760=>'L', | ||
17179 | 194761=>'L', | ||
17180 | 194762=>'L', | ||
17181 | 194763=>'L', | ||
17182 | 194764=>'L', | ||
17183 | 194765=>'L', | ||
17184 | 194766=>'L', | ||
17185 | 194767=>'L', | ||
17186 | 194768=>'L', | ||
17187 | 194769=>'L', | ||
17188 | 194770=>'L', | ||
17189 | 194771=>'L', | ||
17190 | 194772=>'L', | ||
17191 | 194773=>'L', | ||
17192 | 194774=>'L', | ||
17193 | 194775=>'L', | ||
17194 | 194776=>'L', | ||
17195 | 194777=>'L', | ||
17196 | 194778=>'L', | ||
17197 | 194779=>'L', | ||
17198 | 194780=>'L', | ||
17199 | 194781=>'L', | ||
17200 | 194782=>'L', | ||
17201 | 194783=>'L', | ||
17202 | 194784=>'L', | ||
17203 | 194785=>'L', | ||
17204 | 194786=>'L', | ||
17205 | 194787=>'L', | ||
17206 | 194788=>'L', | ||
17207 | 194789=>'L', | ||
17208 | 194790=>'L', | ||
17209 | 194791=>'L', | ||
17210 | 194792=>'L', | ||
17211 | 194793=>'L', | ||
17212 | 194794=>'L', | ||
17213 | 194795=>'L', | ||
17214 | 194796=>'L', | ||
17215 | 194797=>'L', | ||
17216 | 194798=>'L', | ||
17217 | 194799=>'L', | ||
17218 | 194800=>'L', | ||
17219 | 194801=>'L', | ||
17220 | 194802=>'L', | ||
17221 | 194803=>'L', | ||
17222 | 194804=>'L', | ||
17223 | 194805=>'L', | ||
17224 | 194806=>'L', | ||
17225 | 194807=>'L', | ||
17226 | 194808=>'L', | ||
17227 | 194809=>'L', | ||
17228 | 194810=>'L', | ||
17229 | 194811=>'L', | ||
17230 | 194812=>'L', | ||
17231 | 194813=>'L', | ||
17232 | 194814=>'L', | ||
17233 | 194815=>'L', | ||
17234 | 194816=>'L', | ||
17235 | 194817=>'L', | ||
17236 | 194818=>'L', | ||
17237 | 194819=>'L', | ||
17238 | 194820=>'L', | ||
17239 | 194821=>'L', | ||
17240 | 194822=>'L', | ||
17241 | 194823=>'L', | ||
17242 | 194824=>'L', | ||
17243 | 194825=>'L', | ||
17244 | 194826=>'L', | ||
17245 | 194827=>'L', | ||
17246 | 194828=>'L', | ||
17247 | 194829=>'L', | ||
17248 | 194830=>'L', | ||
17249 | 194831=>'L', | ||
17250 | 194832=>'L', | ||
17251 | 194833=>'L', | ||
17252 | 194834=>'L', | ||
17253 | 194835=>'L', | ||
17254 | 194836=>'L', | ||
17255 | 194837=>'L', | ||
17256 | 194838=>'L', | ||
17257 | 194839=>'L', | ||
17258 | 194840=>'L', | ||
17259 | 194841=>'L', | ||
17260 | 194842=>'L', | ||
17261 | 194843=>'L', | ||
17262 | 194844=>'L', | ||
17263 | 194845=>'L', | ||
17264 | 194846=>'L', | ||
17265 | 194847=>'L', | ||
17266 | 194848=>'L', | ||
17267 | 194849=>'L', | ||
17268 | 194850=>'L', | ||
17269 | 194851=>'L', | ||
17270 | 194852=>'L', | ||
17271 | 194853=>'L', | ||
17272 | 194854=>'L', | ||
17273 | 194855=>'L', | ||
17274 | 194856=>'L', | ||
17275 | 194857=>'L', | ||
17276 | 194858=>'L', | ||
17277 | 194859=>'L', | ||
17278 | 194860=>'L', | ||
17279 | 194861=>'L', | ||
17280 | 194862=>'L', | ||
17281 | 194863=>'L', | ||
17282 | 194864=>'L', | ||
17283 | 194865=>'L', | ||
17284 | 194866=>'L', | ||
17285 | 194867=>'L', | ||
17286 | 194868=>'L', | ||
17287 | 194869=>'L', | ||
17288 | 194870=>'L', | ||
17289 | 194871=>'L', | ||
17290 | 194872=>'L', | ||
17291 | 194873=>'L', | ||
17292 | 194874=>'L', | ||
17293 | 194875=>'L', | ||
17294 | 194876=>'L', | ||
17295 | 194877=>'L', | ||
17296 | 194878=>'L', | ||
17297 | 194879=>'L', | ||
17298 | 194880=>'L', | ||
17299 | 194881=>'L', | ||
17300 | 194882=>'L', | ||
17301 | 194883=>'L', | ||
17302 | 194884=>'L', | ||
17303 | 194885=>'L', | ||
17304 | 194886=>'L', | ||
17305 | 194887=>'L', | ||
17306 | 194888=>'L', | ||
17307 | 194889=>'L', | ||
17308 | 194890=>'L', | ||
17309 | 194891=>'L', | ||
17310 | 194892=>'L', | ||
17311 | 194893=>'L', | ||
17312 | 194894=>'L', | ||
17313 | 194895=>'L', | ||
17314 | 194896=>'L', | ||
17315 | 194897=>'L', | ||
17316 | 194898=>'L', | ||
17317 | 194899=>'L', | ||
17318 | 194900=>'L', | ||
17319 | 194901=>'L', | ||
17320 | 194902=>'L', | ||
17321 | 194903=>'L', | ||
17322 | 194904=>'L', | ||
17323 | 194905=>'L', | ||
17324 | 194906=>'L', | ||
17325 | 194907=>'L', | ||
17326 | 194908=>'L', | ||
17327 | 194909=>'L', | ||
17328 | 194910=>'L', | ||
17329 | 194911=>'L', | ||
17330 | 194912=>'L', | ||
17331 | 194913=>'L', | ||
17332 | 194914=>'L', | ||
17333 | 194915=>'L', | ||
17334 | 194916=>'L', | ||
17335 | 194917=>'L', | ||
17336 | 194918=>'L', | ||
17337 | 194919=>'L', | ||
17338 | 194920=>'L', | ||
17339 | 194921=>'L', | ||
17340 | 194922=>'L', | ||
17341 | 194923=>'L', | ||
17342 | 194924=>'L', | ||
17343 | 194925=>'L', | ||
17344 | 194926=>'L', | ||
17345 | 194927=>'L', | ||
17346 | 194928=>'L', | ||
17347 | 194929=>'L', | ||
17348 | 194930=>'L', | ||
17349 | 194931=>'L', | ||
17350 | 194932=>'L', | ||
17351 | 194933=>'L', | ||
17352 | 194934=>'L', | ||
17353 | 194935=>'L', | ||
17354 | 194936=>'L', | ||
17355 | 194937=>'L', | ||
17356 | 194938=>'L', | ||
17357 | 194939=>'L', | ||
17358 | 194940=>'L', | ||
17359 | 194941=>'L', | ||
17360 | 194942=>'L', | ||
17361 | 194943=>'L', | ||
17362 | 194944=>'L', | ||
17363 | 194945=>'L', | ||
17364 | 194946=>'L', | ||
17365 | 194947=>'L', | ||
17366 | 194948=>'L', | ||
17367 | 194949=>'L', | ||
17368 | 194950=>'L', | ||
17369 | 194951=>'L', | ||
17370 | 194952=>'L', | ||
17371 | 194953=>'L', | ||
17372 | 194954=>'L', | ||
17373 | 194955=>'L', | ||
17374 | 194956=>'L', | ||
17375 | 194957=>'L', | ||
17376 | 194958=>'L', | ||
17377 | 194959=>'L', | ||
17378 | 194960=>'L', | ||
17379 | 194961=>'L', | ||
17380 | 194962=>'L', | ||
17381 | 194963=>'L', | ||
17382 | 194964=>'L', | ||
17383 | 194965=>'L', | ||
17384 | 194966=>'L', | ||
17385 | 194967=>'L', | ||
17386 | 194968=>'L', | ||
17387 | 194969=>'L', | ||
17388 | 194970=>'L', | ||
17389 | 194971=>'L', | ||
17390 | 194972=>'L', | ||
17391 | 194973=>'L', | ||
17392 | 194974=>'L', | ||
17393 | 194975=>'L', | ||
17394 | 194976=>'L', | ||
17395 | 194977=>'L', | ||
17396 | 194978=>'L', | ||
17397 | 194979=>'L', | ||
17398 | 194980=>'L', | ||
17399 | 194981=>'L', | ||
17400 | 194982=>'L', | ||
17401 | 194983=>'L', | ||
17402 | 194984=>'L', | ||
17403 | 194985=>'L', | ||
17404 | 194986=>'L', | ||
17405 | 194987=>'L', | ||
17406 | 194988=>'L', | ||
17407 | 194989=>'L', | ||
17408 | 194990=>'L', | ||
17409 | 194991=>'L', | ||
17410 | 194992=>'L', | ||
17411 | 194993=>'L', | ||
17412 | 194994=>'L', | ||
17413 | 194995=>'L', | ||
17414 | 194996=>'L', | ||
17415 | 194997=>'L', | ||
17416 | 194998=>'L', | ||
17417 | 194999=>'L', | ||
17418 | 195000=>'L', | ||
17419 | 195001=>'L', | ||
17420 | 195002=>'L', | ||
17421 | 195003=>'L', | ||
17422 | 195004=>'L', | ||
17423 | 195005=>'L', | ||
17424 | 195006=>'L', | ||
17425 | 195007=>'L', | ||
17426 | 195008=>'L', | ||
17427 | 195009=>'L', | ||
17428 | 195010=>'L', | ||
17429 | 195011=>'L', | ||
17430 | 195012=>'L', | ||
17431 | 195013=>'L', | ||
17432 | 195014=>'L', | ||
17433 | 195015=>'L', | ||
17434 | 195016=>'L', | ||
17435 | 195017=>'L', | ||
17436 | 195018=>'L', | ||
17437 | 195019=>'L', | ||
17438 | 195020=>'L', | ||
17439 | 195021=>'L', | ||
17440 | 195022=>'L', | ||
17441 | 195023=>'L', | ||
17442 | 195024=>'L', | ||
17443 | 195025=>'L', | ||
17444 | 195026=>'L', | ||
17445 | 195027=>'L', | ||
17446 | 195028=>'L', | ||
17447 | 195029=>'L', | ||
17448 | 195030=>'L', | ||
17449 | 195031=>'L', | ||
17450 | 195032=>'L', | ||
17451 | 195033=>'L', | ||
17452 | 195034=>'L', | ||
17453 | 195035=>'L', | ||
17454 | 195036=>'L', | ||
17455 | 195037=>'L', | ||
17456 | 195038=>'L', | ||
17457 | 195039=>'L', | ||
17458 | 195040=>'L', | ||
17459 | 195041=>'L', | ||
17460 | 195042=>'L', | ||
17461 | 195043=>'L', | ||
17462 | 195044=>'L', | ||
17463 | 195045=>'L', | ||
17464 | 195046=>'L', | ||
17465 | 195047=>'L', | ||
17466 | 195048=>'L', | ||
17467 | 195049=>'L', | ||
17468 | 195050=>'L', | ||
17469 | 195051=>'L', | ||
17470 | 195052=>'L', | ||
17471 | 195053=>'L', | ||
17472 | 195054=>'L', | ||
17473 | 195055=>'L', | ||
17474 | 195056=>'L', | ||
17475 | 195057=>'L', | ||
17476 | 195058=>'L', | ||
17477 | 195059=>'L', | ||
17478 | 195060=>'L', | ||
17479 | 195061=>'L', | ||
17480 | 195062=>'L', | ||
17481 | 195063=>'L', | ||
17482 | 195064=>'L', | ||
17483 | 195065=>'L', | ||
17484 | 195066=>'L', | ||
17485 | 195067=>'L', | ||
17486 | 195068=>'L', | ||
17487 | 195069=>'L', | ||
17488 | 195070=>'L', | ||
17489 | 195071=>'L', | ||
17490 | 195072=>'L', | ||
17491 | 195073=>'L', | ||
17492 | 195074=>'L', | ||
17493 | 195075=>'L', | ||
17494 | 195076=>'L', | ||
17495 | 195077=>'L', | ||
17496 | 195078=>'L', | ||
17497 | 195079=>'L', | ||
17498 | 195080=>'L', | ||
17499 | 195081=>'L', | ||
17500 | 195082=>'L', | ||
17501 | 195083=>'L', | ||
17502 | 195084=>'L', | ||
17503 | 195085=>'L', | ||
17504 | 195086=>'L', | ||
17505 | 195087=>'L', | ||
17506 | 195088=>'L', | ||
17507 | 195089=>'L', | ||
17508 | 195090=>'L', | ||
17509 | 195091=>'L', | ||
17510 | 195092=>'L', | ||
17511 | 195093=>'L', | ||
17512 | 195094=>'L', | ||
17513 | 195095=>'L', | ||
17514 | 195096=>'L', | ||
17515 | 195097=>'L', | ||
17516 | 195098=>'L', | ||
17517 | 195099=>'L', | ||
17518 | 195100=>'L', | ||
17519 | 195101=>'L', | ||
17520 | 917505=>'BN', | ||
17521 | 917536=>'BN', | ||
17522 | 917537=>'BN', | ||
17523 | 917538=>'BN', | ||
17524 | 917539=>'BN', | ||
17525 | 917540=>'BN', | ||
17526 | 917541=>'BN', | ||
17527 | 917542=>'BN', | ||
17528 | 917543=>'BN', | ||
17529 | 917544=>'BN', | ||
17530 | 917545=>'BN', | ||
17531 | 917546=>'BN', | ||
17532 | 917547=>'BN', | ||
17533 | 917548=>'BN', | ||
17534 | 917549=>'BN', | ||
17535 | 917550=>'BN', | ||
17536 | 917551=>'BN', | ||
17537 | 917552=>'BN', | ||
17538 | 917553=>'BN', | ||
17539 | 917554=>'BN', | ||
17540 | 917555=>'BN', | ||
17541 | 917556=>'BN', | ||
17542 | 917557=>'BN', | ||
17543 | 917558=>'BN', | ||
17544 | 917559=>'BN', | ||
17545 | 917560=>'BN', | ||
17546 | 917561=>'BN', | ||
17547 | 917562=>'BN', | ||
17548 | 917563=>'BN', | ||
17549 | 917564=>'BN', | ||
17550 | 917565=>'BN', | ||
17551 | 917566=>'BN', | ||
17552 | 917567=>'BN', | ||
17553 | 917568=>'BN', | ||
17554 | 917569=>'BN', | ||
17555 | 917570=>'BN', | ||
17556 | 917571=>'BN', | ||
17557 | 917572=>'BN', | ||
17558 | 917573=>'BN', | ||
17559 | 917574=>'BN', | ||
17560 | 917575=>'BN', | ||
17561 | 917576=>'BN', | ||
17562 | 917577=>'BN', | ||
17563 | 917578=>'BN', | ||
17564 | 917579=>'BN', | ||
17565 | 917580=>'BN', | ||
17566 | 917581=>'BN', | ||
17567 | 917582=>'BN', | ||
17568 | 917583=>'BN', | ||
17569 | 917584=>'BN', | ||
17570 | 917585=>'BN', | ||
17571 | 917586=>'BN', | ||
17572 | 917587=>'BN', | ||
17573 | 917588=>'BN', | ||
17574 | 917589=>'BN', | ||
17575 | 917590=>'BN', | ||
17576 | 917591=>'BN', | ||
17577 | 917592=>'BN', | ||
17578 | 917593=>'BN', | ||
17579 | 917594=>'BN', | ||
17580 | 917595=>'BN', | ||
17581 | 917596=>'BN', | ||
17582 | 917597=>'BN', | ||
17583 | 917598=>'BN', | ||
17584 | 917599=>'BN', | ||
17585 | 917600=>'BN', | ||
17586 | 917601=>'BN', | ||
17587 | 917602=>'BN', | ||
17588 | 917603=>'BN', | ||
17589 | 917604=>'BN', | ||
17590 | 917605=>'BN', | ||
17591 | 917606=>'BN', | ||
17592 | 917607=>'BN', | ||
17593 | 917608=>'BN', | ||
17594 | 917609=>'BN', | ||
17595 | 917610=>'BN', | ||
17596 | 917611=>'BN', | ||
17597 | 917612=>'BN', | ||
17598 | 917613=>'BN', | ||
17599 | 917614=>'BN', | ||
17600 | 917615=>'BN', | ||
17601 | 917616=>'BN', | ||
17602 | 917617=>'BN', | ||
17603 | 917618=>'BN', | ||
17604 | 917619=>'BN', | ||
17605 | 917620=>'BN', | ||
17606 | 917621=>'BN', | ||
17607 | 917622=>'BN', | ||
17608 | 917623=>'BN', | ||
17609 | 917624=>'BN', | ||
17610 | 917625=>'BN', | ||
17611 | 917626=>'BN', | ||
17612 | 917627=>'BN', | ||
17613 | 917628=>'BN', | ||
17614 | 917629=>'BN', | ||
17615 | 917630=>'BN', | ||
17616 | 917631=>'BN', | ||
17617 | 917760=>'NSM', | ||
17618 | 917761=>'NSM', | ||
17619 | 917762=>'NSM', | ||
17620 | 917763=>'NSM', | ||
17621 | 917764=>'NSM', | ||
17622 | 917765=>'NSM', | ||
17623 | 917766=>'NSM', | ||
17624 | 917767=>'NSM', | ||
17625 | 917768=>'NSM', | ||
17626 | 917769=>'NSM', | ||
17627 | 917770=>'NSM', | ||
17628 | 917771=>'NSM', | ||
17629 | 917772=>'NSM', | ||
17630 | 917773=>'NSM', | ||
17631 | 917774=>'NSM', | ||
17632 | 917775=>'NSM', | ||
17633 | 917776=>'NSM', | ||
17634 | 917777=>'NSM', | ||
17635 | 917778=>'NSM', | ||
17636 | 917779=>'NSM', | ||
17637 | 917780=>'NSM', | ||
17638 | 917781=>'NSM', | ||
17639 | 917782=>'NSM', | ||
17640 | 917783=>'NSM', | ||
17641 | 917784=>'NSM', | ||
17642 | 917785=>'NSM', | ||
17643 | 917786=>'NSM', | ||
17644 | 917787=>'NSM', | ||
17645 | 917788=>'NSM', | ||
17646 | 917789=>'NSM', | ||
17647 | 917790=>'NSM', | ||
17648 | 917791=>'NSM', | ||
17649 | 917792=>'NSM', | ||
17650 | 917793=>'NSM', | ||
17651 | 917794=>'NSM', | ||
17652 | 917795=>'NSM', | ||
17653 | 917796=>'NSM', | ||
17654 | 917797=>'NSM', | ||
17655 | 917798=>'NSM', | ||
17656 | 917799=>'NSM', | ||
17657 | 917800=>'NSM', | ||
17658 | 917801=>'NSM', | ||
17659 | 917802=>'NSM', | ||
17660 | 917803=>'NSM', | ||
17661 | 917804=>'NSM', | ||
17662 | 917805=>'NSM', | ||
17663 | 917806=>'NSM', | ||
17664 | 917807=>'NSM', | ||
17665 | 917808=>'NSM', | ||
17666 | 917809=>'NSM', | ||
17667 | 917810=>'NSM', | ||
17668 | 917811=>'NSM', | ||
17669 | 917812=>'NSM', | ||
17670 | 917813=>'NSM', | ||
17671 | 917814=>'NSM', | ||
17672 | 917815=>'NSM', | ||
17673 | 917816=>'NSM', | ||
17674 | 917817=>'NSM', | ||
17675 | 917818=>'NSM', | ||
17676 | 917819=>'NSM', | ||
17677 | 917820=>'NSM', | ||
17678 | 917821=>'NSM', | ||
17679 | 917822=>'NSM', | ||
17680 | 917823=>'NSM', | ||
17681 | 917824=>'NSM', | ||
17682 | 917825=>'NSM', | ||
17683 | 917826=>'NSM', | ||
17684 | 917827=>'NSM', | ||
17685 | 917828=>'NSM', | ||
17686 | 917829=>'NSM', | ||
17687 | 917830=>'NSM', | ||
17688 | 917831=>'NSM', | ||
17689 | 917832=>'NSM', | ||
17690 | 917833=>'NSM', | ||
17691 | 917834=>'NSM', | ||
17692 | 917835=>'NSM', | ||
17693 | 917836=>'NSM', | ||
17694 | 917837=>'NSM', | ||
17695 | 917838=>'NSM', | ||
17696 | 917839=>'NSM', | ||
17697 | 917840=>'NSM', | ||
17698 | 917841=>'NSM', | ||
17699 | 917842=>'NSM', | ||
17700 | 917843=>'NSM', | ||
17701 | 917844=>'NSM', | ||
17702 | 917845=>'NSM', | ||
17703 | 917846=>'NSM', | ||
17704 | 917847=>'NSM', | ||
17705 | 917848=>'NSM', | ||
17706 | 917849=>'NSM', | ||
17707 | 917850=>'NSM', | ||
17708 | 917851=>'NSM', | ||
17709 | 917852=>'NSM', | ||
17710 | 917853=>'NSM', | ||
17711 | 917854=>'NSM', | ||
17712 | 917855=>'NSM', | ||
17713 | 917856=>'NSM', | ||
17714 | 917857=>'NSM', | ||
17715 | 917858=>'NSM', | ||
17716 | 917859=>'NSM', | ||
17717 | 917860=>'NSM', | ||
17718 | 917861=>'NSM', | ||
17719 | 917862=>'NSM', | ||
17720 | 917863=>'NSM', | ||
17721 | 917864=>'NSM', | ||
17722 | 917865=>'NSM', | ||
17723 | 917866=>'NSM', | ||
17724 | 917867=>'NSM', | ||
17725 | 917868=>'NSM', | ||
17726 | 917869=>'NSM', | ||
17727 | 917870=>'NSM', | ||
17728 | 917871=>'NSM', | ||
17729 | 917872=>'NSM', | ||
17730 | 917873=>'NSM', | ||
17731 | 917874=>'NSM', | ||
17732 | 917875=>'NSM', | ||
17733 | 917876=>'NSM', | ||
17734 | 917877=>'NSM', | ||
17735 | 917878=>'NSM', | ||
17736 | 917879=>'NSM', | ||
17737 | 917880=>'NSM', | ||
17738 | 917881=>'NSM', | ||
17739 | 917882=>'NSM', | ||
17740 | 917883=>'NSM', | ||
17741 | 917884=>'NSM', | ||
17742 | 917885=>'NSM', | ||
17743 | 917886=>'NSM', | ||
17744 | 917887=>'NSM', | ||
17745 | 917888=>'NSM', | ||
17746 | 917889=>'NSM', | ||
17747 | 917890=>'NSM', | ||
17748 | 917891=>'NSM', | ||
17749 | 917892=>'NSM', | ||
17750 | 917893=>'NSM', | ||
17751 | 917894=>'NSM', | ||
17752 | 917895=>'NSM', | ||
17753 | 917896=>'NSM', | ||
17754 | 917897=>'NSM', | ||
17755 | 917898=>'NSM', | ||
17756 | 917899=>'NSM', | ||
17757 | 917900=>'NSM', | ||
17758 | 917901=>'NSM', | ||
17759 | 917902=>'NSM', | ||
17760 | 917903=>'NSM', | ||
17761 | 917904=>'NSM', | ||
17762 | 917905=>'NSM', | ||
17763 | 917906=>'NSM', | ||
17764 | 917907=>'NSM', | ||
17765 | 917908=>'NSM', | ||
17766 | 917909=>'NSM', | ||
17767 | 917910=>'NSM', | ||
17768 | 917911=>'NSM', | ||
17769 | 917912=>'NSM', | ||
17770 | 917913=>'NSM', | ||
17771 | 917914=>'NSM', | ||
17772 | 917915=>'NSM', | ||
17773 | 917916=>'NSM', | ||
17774 | 917917=>'NSM', | ||
17775 | 917918=>'NSM', | ||
17776 | 917919=>'NSM', | ||
17777 | 917920=>'NSM', | ||
17778 | 917921=>'NSM', | ||
17779 | 917922=>'NSM', | ||
17780 | 917923=>'NSM', | ||
17781 | 917924=>'NSM', | ||
17782 | 917925=>'NSM', | ||
17783 | 917926=>'NSM', | ||
17784 | 917927=>'NSM', | ||
17785 | 917928=>'NSM', | ||
17786 | 917929=>'NSM', | ||
17787 | 917930=>'NSM', | ||
17788 | 917931=>'NSM', | ||
17789 | 917932=>'NSM', | ||
17790 | 917933=>'NSM', | ||
17791 | 917934=>'NSM', | ||
17792 | 917935=>'NSM', | ||
17793 | 917936=>'NSM', | ||
17794 | 917937=>'NSM', | ||
17795 | 917938=>'NSM', | ||
17796 | 917939=>'NSM', | ||
17797 | 917940=>'NSM', | ||
17798 | 917941=>'NSM', | ||
17799 | 917942=>'NSM', | ||
17800 | 917943=>'NSM', | ||
17801 | 917944=>'NSM', | ||
17802 | 917945=>'NSM', | ||
17803 | 917946=>'NSM', | ||
17804 | 917947=>'NSM', | ||
17805 | 917948=>'NSM', | ||
17806 | 917949=>'NSM', | ||
17807 | 917950=>'NSM', | ||
17808 | 917951=>'NSM', | ||
17809 | 917952=>'NSM', | ||
17810 | 917953=>'NSM', | ||
17811 | 917954=>'NSM', | ||
17812 | 917955=>'NSM', | ||
17813 | 917956=>'NSM', | ||
17814 | 917957=>'NSM', | ||
17815 | 917958=>'NSM', | ||
17816 | 917959=>'NSM', | ||
17817 | 917960=>'NSM', | ||
17818 | 917961=>'NSM', | ||
17819 | 917962=>'NSM', | ||
17820 | 917963=>'NSM', | ||
17821 | 917964=>'NSM', | ||
17822 | 917965=>'NSM', | ||
17823 | 917966=>'NSM', | ||
17824 | 917967=>'NSM', | ||
17825 | 917968=>'NSM', | ||
17826 | 917969=>'NSM', | ||
17827 | 917970=>'NSM', | ||
17828 | 917971=>'NSM', | ||
17829 | 917972=>'NSM', | ||
17830 | 917973=>'NSM', | ||
17831 | 917974=>'NSM', | ||
17832 | 917975=>'NSM', | ||
17833 | 917976=>'NSM', | ||
17834 | 917977=>'NSM', | ||
17835 | 917978=>'NSM', | ||
17836 | 917979=>'NSM', | ||
17837 | 917980=>'NSM', | ||
17838 | 917981=>'NSM', | ||
17839 | 917982=>'NSM', | ||
17840 | 917983=>'NSM', | ||
17841 | 917984=>'NSM', | ||
17842 | 917985=>'NSM', | ||
17843 | 917986=>'NSM', | ||
17844 | 917987=>'NSM', | ||
17845 | 917988=>'NSM', | ||
17846 | 917989=>'NSM', | ||
17847 | 917990=>'NSM', | ||
17848 | 917991=>'NSM', | ||
17849 | 917992=>'NSM', | ||
17850 | 917993=>'NSM', | ||
17851 | 917994=>'NSM', | ||
17852 | 917995=>'NSM', | ||
17853 | 917996=>'NSM', | ||
17854 | 917997=>'NSM', | ||
17855 | 917998=>'NSM', | ||
17856 | 917999=>'NSM', | ||
17857 | 983040=>'L', | ||
17858 | 1048573=>'L', | ||
17859 | 1048576=>'L', | ||
17860 | 1114109=>'L' | ||
17861 | ); | ||
17862 | |||
17863 | /** | ||
17864 | * Mirror unicode characters. For information on bidi mirroring, see UAX #9: Bidirectional Algorithm, at http://www.unicode.org/unicode/reports/tr9/ | ||
17865 | * @public | ||
17866 | */ | ||
17867 | public static $uni_mirror = array ( | ||
17868 | 0x0028=>0x0029, | ||
17869 | 0x0029=>0x0028, | ||
17870 | 0x003C=>0x003E, | ||
17871 | 0x003E=>0x003C, | ||
17872 | 0x005B=>0x005D, | ||
17873 | 0x005D=>0x005B, | ||
17874 | 0x007B=>0x007D, | ||
17875 | 0x007D=>0x007B, | ||
17876 | 0x00AB=>0x00BB, | ||
17877 | 0x00BB=>0x00AB, | ||
17878 | 0x0F3A=>0x0F3B, | ||
17879 | 0x0F3B=>0x0F3A, | ||
17880 | 0x0F3C=>0x0F3D, | ||
17881 | 0x0F3D=>0x0F3C, | ||
17882 | 0x169B=>0x169C, | ||
17883 | 0x169C=>0x169B, | ||
17884 | 0x2018=>0x2019, | ||
17885 | 0x2019=>0x2018, | ||
17886 | 0x201C=>0x201D, | ||
17887 | 0x201D=>0x201C, | ||
17888 | 0x2039=>0x203A, | ||
17889 | 0x203A=>0x2039, | ||
17890 | 0x2045=>0x2046, | ||
17891 | 0x2046=>0x2045, | ||
17892 | 0x207D=>0x207E, | ||
17893 | 0x207E=>0x207D, | ||
17894 | 0x208D=>0x208E, | ||
17895 | 0x208E=>0x208D, | ||
17896 | 0x2208=>0x220B, | ||
17897 | 0x2209=>0x220C, | ||
17898 | 0x220A=>0x220D, | ||
17899 | 0x220B=>0x2208, | ||
17900 | 0x220C=>0x2209, | ||
17901 | 0x220D=>0x220A, | ||
17902 | 0x2215=>0x29F5, | ||
17903 | 0x223C=>0x223D, | ||
17904 | 0x223D=>0x223C, | ||
17905 | 0x2243=>0x22CD, | ||
17906 | 0x2252=>0x2253, | ||
17907 | 0x2253=>0x2252, | ||
17908 | 0x2254=>0x2255, | ||
17909 | 0x2255=>0x2254, | ||
17910 | 0x2264=>0x2265, | ||
17911 | 0x2265=>0x2264, | ||
17912 | 0x2266=>0x2267, | ||
17913 | 0x2267=>0x2266, | ||
17914 | 0x2268=>0x2269, | ||
17915 | 0x2269=>0x2268, | ||
17916 | 0x226A=>0x226B, | ||
17917 | 0x226B=>0x226A, | ||
17918 | 0x226E=>0x226F, | ||
17919 | 0x226F=>0x226E, | ||
17920 | 0x2270=>0x2271, | ||
17921 | 0x2271=>0x2270, | ||
17922 | 0x2272=>0x2273, | ||
17923 | 0x2273=>0x2272, | ||
17924 | 0x2274=>0x2275, | ||
17925 | 0x2275=>0x2274, | ||
17926 | 0x2276=>0x2277, | ||
17927 | 0x2277=>0x2276, | ||
17928 | 0x2278=>0x2279, | ||
17929 | 0x2279=>0x2278, | ||
17930 | 0x227A=>0x227B, | ||
17931 | 0x227B=>0x227A, | ||
17932 | 0x227C=>0x227D, | ||
17933 | 0x227D=>0x227C, | ||
17934 | 0x227E=>0x227F, | ||
17935 | 0x227F=>0x227E, | ||
17936 | 0x2280=>0x2281, | ||
17937 | 0x2281=>0x2280, | ||
17938 | 0x2282=>0x2283, | ||
17939 | 0x2283=>0x2282, | ||
17940 | 0x2284=>0x2285, | ||
17941 | 0x2285=>0x2284, | ||
17942 | 0x2286=>0x2287, | ||
17943 | 0x2287=>0x2286, | ||
17944 | 0x2288=>0x2289, | ||
17945 | 0x2289=>0x2288, | ||
17946 | 0x228A=>0x228B, | ||
17947 | 0x228B=>0x228A, | ||
17948 | 0x228F=>0x2290, | ||
17949 | 0x2290=>0x228F, | ||
17950 | 0x2291=>0x2292, | ||
17951 | 0x2292=>0x2291, | ||
17952 | 0x2298=>0x29B8, | ||
17953 | 0x22A2=>0x22A3, | ||
17954 | 0x22A3=>0x22A2, | ||
17955 | 0x22A6=>0x2ADE, | ||
17956 | 0x22A8=>0x2AE4, | ||
17957 | 0x22A9=>0x2AE3, | ||
17958 | 0x22AB=>0x2AE5, | ||
17959 | 0x22B0=>0x22B1, | ||
17960 | 0x22B1=>0x22B0, | ||
17961 | 0x22B2=>0x22B3, | ||
17962 | 0x22B3=>0x22B2, | ||
17963 | 0x22B4=>0x22B5, | ||
17964 | 0x22B5=>0x22B4, | ||
17965 | 0x22B6=>0x22B7, | ||
17966 | 0x22B7=>0x22B6, | ||
17967 | 0x22C9=>0x22CA, | ||
17968 | 0x22CA=>0x22C9, | ||
17969 | 0x22CB=>0x22CC, | ||
17970 | 0x22CC=>0x22CB, | ||
17971 | 0x22CD=>0x2243, | ||
17972 | 0x22D0=>0x22D1, | ||
17973 | 0x22D1=>0x22D0, | ||
17974 | 0x22D6=>0x22D7, | ||
17975 | 0x22D7=>0x22D6, | ||
17976 | 0x22D8=>0x22D9, | ||
17977 | 0x22D9=>0x22D8, | ||
17978 | 0x22DA=>0x22DB, | ||
17979 | 0x22DB=>0x22DA, | ||
17980 | 0x22DC=>0x22DD, | ||
17981 | 0x22DD=>0x22DC, | ||
17982 | 0x22DE=>0x22DF, | ||
17983 | 0x22DF=>0x22DE, | ||
17984 | 0x22E0=>0x22E1, | ||
17985 | 0x22E1=>0x22E0, | ||
17986 | 0x22E2=>0x22E3, | ||
17987 | 0x22E3=>0x22E2, | ||
17988 | 0x22E4=>0x22E5, | ||
17989 | 0x22E5=>0x22E4, | ||
17990 | 0x22E6=>0x22E7, | ||
17991 | 0x22E7=>0x22E6, | ||
17992 | 0x22E8=>0x22E9, | ||
17993 | 0x22E9=>0x22E8, | ||
17994 | 0x22EA=>0x22EB, | ||
17995 | 0x22EB=>0x22EA, | ||
17996 | 0x22EC=>0x22ED, | ||
17997 | 0x22ED=>0x22EC, | ||
17998 | 0x22F0=>0x22F1, | ||
17999 | 0x22F1=>0x22F0, | ||
18000 | 0x22F2=>0x22FA, | ||
18001 | 0x22F3=>0x22FB, | ||
18002 | 0x22F4=>0x22FC, | ||
18003 | 0x22F6=>0x22FD, | ||
18004 | 0x22F7=>0x22FE, | ||
18005 | 0x22FA=>0x22F2, | ||
18006 | 0x22FB=>0x22F3, | ||
18007 | 0x22FC=>0x22F4, | ||
18008 | 0x22FD=>0x22F6, | ||
18009 | 0x22FE=>0x22F7, | ||
18010 | 0x2308=>0x2309, | ||
18011 | 0x2309=>0x2308, | ||
18012 | 0x230A=>0x230B, | ||
18013 | 0x230B=>0x230A, | ||
18014 | 0x2329=>0x232A, | ||
18015 | 0x232A=>0x2329, | ||
18016 | 0x2768=>0x2769, | ||
18017 | 0x2769=>0x2768, | ||
18018 | 0x276A=>0x276B, | ||
18019 | 0x276B=>0x276A, | ||
18020 | 0x276C=>0x276D, | ||
18021 | 0x276D=>0x276C, | ||
18022 | 0x276E=>0x276F, | ||
18023 | 0x276F=>0x276E, | ||
18024 | 0x2770=>0x2771, | ||
18025 | 0x2771=>0x2770, | ||
18026 | 0x2772=>0x2773, | ||
18027 | 0x2773=>0x2772, | ||
18028 | 0x2774=>0x2775, | ||
18029 | 0x2775=>0x2774, | ||
18030 | 0x27C3=>0x27C4, | ||
18031 | 0x27C4=>0x27C3, | ||
18032 | 0x27C5=>0x27C6, | ||
18033 | 0x27C6=>0x27C5, | ||
18034 | 0x27D5=>0x27D6, | ||
18035 | 0x27D6=>0x27D5, | ||
18036 | 0x27DD=>0x27DE, | ||
18037 | 0x27DE=>0x27DD, | ||
18038 | 0x27E2=>0x27E3, | ||
18039 | 0x27E3=>0x27E2, | ||
18040 | 0x27E4=>0x27E5, | ||
18041 | 0x27E5=>0x27E4, | ||
18042 | 0x27E6=>0x27E7, | ||
18043 | 0x27E7=>0x27E6, | ||
18044 | 0x27E8=>0x27E9, | ||
18045 | 0x27E9=>0x27E8, | ||
18046 | 0x27EA=>0x27EB, | ||
18047 | 0x27EB=>0x27EA, | ||
18048 | 0x2983=>0x2984, | ||
18049 | 0x2984=>0x2983, | ||
18050 | 0x2985=>0x2986, | ||
18051 | 0x2986=>0x2985, | ||
18052 | 0x2987=>0x2988, | ||
18053 | 0x2988=>0x2987, | ||
18054 | 0x2989=>0x298A, | ||
18055 | 0x298A=>0x2989, | ||
18056 | 0x298B=>0x298C, | ||
18057 | 0x298C=>0x298B, | ||
18058 | 0x298D=>0x2990, | ||
18059 | 0x298E=>0x298F, | ||
18060 | 0x298F=>0x298E, | ||
18061 | 0x2990=>0x298D, | ||
18062 | 0x2991=>0x2992, | ||
18063 | 0x2992=>0x2991, | ||
18064 | 0x2993=>0x2994, | ||
18065 | 0x2994=>0x2993, | ||
18066 | 0x2995=>0x2996, | ||
18067 | 0x2996=>0x2995, | ||
18068 | 0x2997=>0x2998, | ||
18069 | 0x2998=>0x2997, | ||
18070 | 0x29B8=>0x2298, | ||
18071 | 0x29C0=>0x29C1, | ||
18072 | 0x29C1=>0x29C0, | ||
18073 | 0x29C4=>0x29C5, | ||
18074 | 0x29C5=>0x29C4, | ||
18075 | 0x29CF=>0x29D0, | ||
18076 | 0x29D0=>0x29CF, | ||
18077 | 0x29D1=>0x29D2, | ||
18078 | 0x29D2=>0x29D1, | ||
18079 | 0x29D4=>0x29D5, | ||
18080 | 0x29D5=>0x29D4, | ||
18081 | 0x29D8=>0x29D9, | ||
18082 | 0x29D9=>0x29D8, | ||
18083 | 0x29DA=>0x29DB, | ||
18084 | 0x29DB=>0x29DA, | ||
18085 | 0x29F5=>0x2215, | ||
18086 | 0x29F8=>0x29F9, | ||
18087 | 0x29F9=>0x29F8, | ||
18088 | 0x29FC=>0x29FD, | ||
18089 | 0x29FD=>0x29FC, | ||
18090 | 0x2A2B=>0x2A2C, | ||
18091 | 0x2A2C=>0x2A2B, | ||
18092 | 0x2A2D=>0x2A2E, | ||
18093 | 0x2A2E=>0x2A2D, | ||
18094 | 0x2A34=>0x2A35, | ||
18095 | 0x2A35=>0x2A34, | ||
18096 | 0x2A3C=>0x2A3D, | ||
18097 | 0x2A3D=>0x2A3C, | ||
18098 | 0x2A64=>0x2A65, | ||
18099 | 0x2A65=>0x2A64, | ||
18100 | 0x2A79=>0x2A7A, | ||
18101 | 0x2A7A=>0x2A79, | ||
18102 | 0x2A7D=>0x2A7E, | ||
18103 | 0x2A7E=>0x2A7D, | ||
18104 | 0x2A7F=>0x2A80, | ||
18105 | 0x2A80=>0x2A7F, | ||
18106 | 0x2A81=>0x2A82, | ||
18107 | 0x2A82=>0x2A81, | ||
18108 | 0x2A83=>0x2A84, | ||
18109 | 0x2A84=>0x2A83, | ||
18110 | 0x2A8B=>0x2A8C, | ||
18111 | 0x2A8C=>0x2A8B, | ||
18112 | 0x2A91=>0x2A92, | ||
18113 | 0x2A92=>0x2A91, | ||
18114 | 0x2A93=>0x2A94, | ||
18115 | 0x2A94=>0x2A93, | ||
18116 | 0x2A95=>0x2A96, | ||
18117 | 0x2A96=>0x2A95, | ||
18118 | 0x2A97=>0x2A98, | ||
18119 | 0x2A98=>0x2A97, | ||
18120 | 0x2A99=>0x2A9A, | ||
18121 | 0x2A9A=>0x2A99, | ||
18122 | 0x2A9B=>0x2A9C, | ||
18123 | 0x2A9C=>0x2A9B, | ||
18124 | 0x2AA1=>0x2AA2, | ||
18125 | 0x2AA2=>0x2AA1, | ||
18126 | 0x2AA6=>0x2AA7, | ||
18127 | 0x2AA7=>0x2AA6, | ||
18128 | 0x2AA8=>0x2AA9, | ||
18129 | 0x2AA9=>0x2AA8, | ||
18130 | 0x2AAA=>0x2AAB, | ||
18131 | 0x2AAB=>0x2AAA, | ||
18132 | 0x2AAC=>0x2AAD, | ||
18133 | 0x2AAD=>0x2AAC, | ||
18134 | 0x2AAF=>0x2AB0, | ||
18135 | 0x2AB0=>0x2AAF, | ||
18136 | 0x2AB3=>0x2AB4, | ||
18137 | 0x2AB4=>0x2AB3, | ||
18138 | 0x2ABB=>0x2ABC, | ||
18139 | 0x2ABC=>0x2ABB, | ||
18140 | 0x2ABD=>0x2ABE, | ||
18141 | 0x2ABE=>0x2ABD, | ||
18142 | 0x2ABF=>0x2AC0, | ||
18143 | 0x2AC0=>0x2ABF, | ||
18144 | 0x2AC1=>0x2AC2, | ||
18145 | 0x2AC2=>0x2AC1, | ||
18146 | 0x2AC3=>0x2AC4, | ||
18147 | 0x2AC4=>0x2AC3, | ||
18148 | 0x2AC5=>0x2AC6, | ||
18149 | 0x2AC6=>0x2AC5, | ||
18150 | 0x2ACD=>0x2ACE, | ||
18151 | 0x2ACE=>0x2ACD, | ||
18152 | 0x2ACF=>0x2AD0, | ||
18153 | 0x2AD0=>0x2ACF, | ||
18154 | 0x2AD1=>0x2AD2, | ||
18155 | 0x2AD2=>0x2AD1, | ||
18156 | 0x2AD3=>0x2AD4, | ||
18157 | 0x2AD4=>0x2AD3, | ||
18158 | 0x2AD5=>0x2AD6, | ||
18159 | 0x2AD6=>0x2AD5, | ||
18160 | 0x2ADE=>0x22A6, | ||
18161 | 0x2AE3=>0x22A9, | ||
18162 | 0x2AE4=>0x22A8, | ||
18163 | 0x2AE5=>0x22AB, | ||
18164 | 0x2AEC=>0x2AED, | ||
18165 | 0x2AED=>0x2AEC, | ||
18166 | 0x2AF7=>0x2AF8, | ||
18167 | 0x2AF8=>0x2AF7, | ||
18168 | 0x2AF9=>0x2AFA, | ||
18169 | 0x2AFA=>0x2AF9, | ||
18170 | 0x2E02=>0x2E03, | ||
18171 | 0x2E03=>0x2E02, | ||
18172 | 0x2E04=>0x2E05, | ||
18173 | 0x2E05=>0x2E04, | ||
18174 | 0x2E09=>0x2E0A, | ||
18175 | 0x2E0A=>0x2E09, | ||
18176 | 0x2E0C=>0x2E0D, | ||
18177 | 0x2E0D=>0x2E0C, | ||
18178 | 0x2E1C=>0x2E1D, | ||
18179 | 0x2E1D=>0x2E1C, | ||
18180 | 0x3008=>0x3009, | ||
18181 | 0x3009=>0x3008, | ||
18182 | 0x300A=>0x300B, | ||
18183 | 0x300B=>0x300A, | ||
18184 | 0x300C=>0x300D, | ||
18185 | 0x300D=>0x300C, | ||
18186 | 0x300E=>0x300F, | ||
18187 | 0x300F=>0x300E, | ||
18188 | 0x3010=>0x3011, | ||
18189 | 0x3011=>0x3010, | ||
18190 | 0x3014=>0x3015, | ||
18191 | 0x3015=>0x3014, | ||
18192 | 0x3016=>0x3017, | ||
18193 | 0x3017=>0x3016, | ||
18194 | 0x3018=>0x3019, | ||
18195 | 0x3019=>0x3018, | ||
18196 | 0x301A=>0x301B, | ||
18197 | 0x301B=>0x301A, | ||
18198 | 0x301D=>0x301E, | ||
18199 | 0x301E=>0x301D, | ||
18200 | 0xFE59=>0xFE5A, | ||
18201 | 0xFE5A=>0xFE59, | ||
18202 | 0xFE5B=>0xFE5C, | ||
18203 | 0xFE5C=>0xFE5B, | ||
18204 | 0xFE5D=>0xFE5E, | ||
18205 | 0xFE5E=>0xFE5D, | ||
18206 | 0xFE64=>0xFE65, | ||
18207 | 0xFE65=>0xFE64, | ||
18208 | 0xFF08=>0xFF09, | ||
18209 | 0xFF09=>0xFF08, | ||
18210 | 0xFF1C=>0xFF1E, | ||
18211 | 0xFF1E=>0xFF1C, | ||
18212 | 0xFF3B=>0xFF3D, | ||
18213 | 0xFF3D=>0xFF3B, | ||
18214 | 0xFF5B=>0xFF5D, | ||
18215 | 0xFF5D=>0xFF5B, | ||
18216 | 0xFF5F=>0xFF60, | ||
18217 | 0xFF60=>0xFF5F, | ||
18218 | 0xFF62=>0xFF63, | ||
18219 | 0xFF63=>0xFF62); | ||
18220 | |||
18221 | /** | ||
18222 | * Arabic shape substitutions: char code => (isolated, final, initial, medial). | ||
18223 | * @public | ||
18224 | */ | ||
18225 | public static $uni_arabicsubst = array( | ||
18226 | 1569=>array(65152), | ||
18227 | 1570=>array(65153, 65154, 65153, 65154), | ||
18228 | 1571=>array(65155, 65156, 65155, 65156), | ||
18229 | 1572=>array(65157, 65158), | ||
18230 | 1573=>array(65159, 65160, 65159, 65160), | ||
18231 | 1574=>array(65161, 65162, 65163, 65164), | ||
18232 | 1575=>array(65165, 65166, 65165, 65166), | ||
18233 | 1576=>array(65167, 65168, 65169, 65170), | ||
18234 | 1577=>array(65171, 65172), | ||
18235 | 1578=>array(65173, 65174, 65175, 65176), | ||
18236 | 1579=>array(65177, 65178, 65179, 65180), | ||
18237 | 1580=>array(65181, 65182, 65183, 65184), | ||
18238 | 1581=>array(65185, 65186, 65187, 65188), | ||
18239 | 1582=>array(65189, 65190, 65191, 65192), | ||
18240 | 1583=>array(65193, 65194, 65193, 65194), | ||
18241 | 1584=>array(65195, 65196, 65195, 65196), | ||
18242 | 1585=>array(65197, 65198, 65197, 65198), | ||
18243 | 1586=>array(65199, 65200, 65199, 65200), | ||
18244 | 1587=>array(65201, 65202, 65203, 65204), | ||
18245 | 1588=>array(65205, 65206, 65207, 65208), | ||
18246 | 1589=>array(65209, 65210, 65211, 65212), | ||
18247 | 1590=>array(65213, 65214, 65215, 65216), | ||
18248 | 1591=>array(65217, 65218, 65219, 65220), | ||
18249 | 1592=>array(65221, 65222, 65223, 65224), | ||
18250 | 1593=>array(65225, 65226, 65227, 65228), | ||
18251 | 1594=>array(65229, 65230, 65231, 65232), | ||
18252 | 1601=>array(65233, 65234, 65235, 65236), | ||
18253 | 1602=>array(65237, 65238, 65239, 65240), | ||
18254 | 1603=>array(65241, 65242, 65243, 65244), | ||
18255 | 1604=>array(65245, 65246, 65247, 65248), | ||
18256 | 1605=>array(65249, 65250, 65251, 65252), | ||
18257 | 1606=>array(65253, 65254, 65255, 65256), | ||
18258 | 1607=>array(65257, 65258, 65259, 65260), | ||
18259 | 1608=>array(65261, 65262, 65261, 65262), | ||
18260 | 1609=>array(65263, 65264, 64488, 64489), | ||
18261 | 1610=>array(65265, 65266, 65267, 65268), | ||
18262 | 1649=>array(64336, 64337), | ||
18263 | 1655=>array(64477), | ||
18264 | 1657=>array(64358, 64359, 64360, 64361), | ||
18265 | 1658=>array(64350, 64351, 64352, 64353), | ||
18266 | 1659=>array(64338, 64339, 64340, 64341), | ||
18267 | 1662=>array(64342, 64343, 64344, 64345), | ||
18268 | 1663=>array(64354, 64355, 64356, 64357), | ||
18269 | 1664=>array(64346, 64347, 64348, 64349), | ||
18270 | 1667=>array(64374, 64375, 64376, 64377), | ||
18271 | 1668=>array(64370, 64371, 64372, 64373), | ||
18272 | 1670=>array(64378, 64379, 64380, 64381), | ||
18273 | 1671=>array(64382, 64383, 64384, 64385), | ||
18274 | 1672=>array(64392, 64393), | ||
18275 | 1676=>array(64388, 64389), | ||
18276 | 1677=>array(64386, 64387), | ||
18277 | 1678=>array(64390, 64391), | ||
18278 | 1681=>array(64396, 64397), | ||
18279 | 1688=>array(64394, 64395, 64394, 64395), | ||
18280 | 1700=>array(64362, 64363, 64364, 64365), | ||
18281 | 1702=>array(64366, 64367, 64368, 64369), | ||
18282 | 1705=>array(64398, 64399, 64400, 64401), | ||
18283 | 1709=>array(64467, 64468, 64469, 64470), | ||
18284 | 1711=>array(64402, 64403, 64404, 64405), | ||
18285 | 1713=>array(64410, 64411, 64412, 64413), | ||
18286 | 1715=>array(64406, 64407, 64408, 64409), | ||
18287 | 1722=>array(64414, 64415), | ||
18288 | 1723=>array(64416, 64417, 64418, 64419), | ||
18289 | 1726=>array(64426, 64427, 64428, 64429), | ||
18290 | 1728=>array(64420, 64421), | ||
18291 | 1729=>array(64422, 64423, 64424, 64425), | ||
18292 | 1733=>array(64480, 64481), | ||
18293 | 1734=>array(64473, 64474), | ||
18294 | 1735=>array(64471, 64472), | ||
18295 | 1736=>array(64475, 64476), | ||
18296 | 1737=>array(64482, 64483), | ||
18297 | 1739=>array(64478, 64479), | ||
18298 | 1740=>array(64508, 64509, 64510, 64511), | ||
18299 | 1744=>array(64484, 64485, 64486, 64487), | ||
18300 | 1746=>array(64430, 64431), | ||
18301 | 1747=>array(64432, 64433) | ||
18302 | ); | ||
18303 | |||
18304 | /** | ||
18305 | * Arabic laa letter: (char code => isolated, final, initial, medial). | ||
18306 | * @public | ||
18307 | */ | ||
18308 | public static $uni_laa_array = array ( | ||
18309 | 1570 =>array(65269, 65270, 65269, 65270), | ||
18310 | 1571 =>array(65271, 65272, 65271, 65272), | ||
18311 | 1573 =>array(65273, 65274, 65273, 65274), | ||
18312 | 1575 =>array(65275, 65276, 65275, 65276) | ||
18313 | ); | ||
18314 | |||
18315 | /** | ||
18316 | * Array of character substitutions for sequences of two diacritics symbols. | ||
18317 | * Putting the combining mark and character in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner. | ||
18318 | * second NSM char code => substitution char | ||
18319 | * @public | ||
18320 | */ | ||
18321 | public static $uni_diacritics = array ( | ||
18322 | 1612=>64606, # Shadda + Dammatan | ||
18323 | 1613=>64607, # Shadda + Kasratan | ||
18324 | 1614=>64608, # Shadda + Fatha | ||
18325 | 1615=>64609, # Shadda + Damma | ||
18326 | 1616=>64610 # Shadda + Kasra | ||
18327 | ); | ||
18328 | |||
18329 | /** | ||
18330 | * Array of character substitutions from UTF-8 Unicode to Latin1. | ||
18331 | * @public | ||
18332 | */ | ||
18333 | public static $uni_utf8tolatin = array ( | ||
18334 | 8364=>128, # Euro1 | ||
18335 | 338=>140, # OE | ||
18336 | 352=>138, # Scaron | ||
18337 | 376=>159, # Ydieresis | ||
18338 | 381=>142, # Zcaron2 | ||
18339 | 8226=>149, # bullet3 | ||
18340 | 710=>136, # circumflex | ||
18341 | 8224=>134, # dagger | ||
18342 | 8225=>135, # daggerdbl | ||
18343 | 8230=>133, # ellipsis | ||
18344 | 8212=>151, # emdash | ||
18345 | 8211=>150, # endash | ||
18346 | 402=>131, # florin | ||
18347 | 8249=>139, # guilsinglleft | ||
18348 | 8250=>155, # guilsinglright | ||
18349 | 339=>156, # oe | ||
18350 | 8240=>137, # perthousand | ||
18351 | 8222=>132, # quotedblbase | ||
18352 | 8220=>147, # quotedblleft | ||
18353 | 8221=>148, # quotedblright | ||
18354 | 8216=>145, # quoteleft | ||
18355 | 8217=>146, # quoteright | ||
18356 | 8218=>130, # quotesinglbase | ||
18357 | 353=>154, # scaron | ||
18358 | 732=>152, # tilde | ||
18359 | 8482=>153, # trademark | ||
18360 | 382=>158 # zcaron2 | ||
18361 | ); | ||
18362 | |||
18363 | /** | ||
18364 | * Array of Encoding Maps. | ||
18365 | * @public static | ||
18366 | */ | ||
18367 | public static $encmap = array( | ||
18368 | |||
18369 | // encoding map for: cp874 | ||
18370 | 'cp874' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'ellipsis',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'), | ||
18371 | |||
18372 | // encoding map for: cp1250 | ||
18373 | 'cp1250' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'Sacute',141=>'Tcaron',142=>'Zcaron',143=>'Zacute',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'sacute',157=>'tcaron',158=>'zcaron',159=>'zacute',160=>'space',161=>'caron',162=>'breve',163=>'Lslash',164=>'currency',165=>'Aogonek',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'Scedilla',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'ogonek',179=>'lslash',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'aogonek',186=>'scedilla',187=>'guillemotright',188=>'Lcaron',189=>'hungarumlaut',190=>'lcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'), | ||
18374 | |||
18375 | // encoding map for: cp1251 | ||
18376 | 'cp1251' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'afii10051',129=>'afii10052',130=>'quotesinglbase',131=>'afii10100',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'Euro',137=>'perthousand',138=>'afii10058',139=>'guilsinglleft',140=>'afii10059',141=>'afii10061',142=>'afii10060',143=>'afii10145',144=>'afii10099',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii10106',155=>'guilsinglright',156=>'afii10107',157=>'afii10109',158=>'afii10108',159=>'afii10193',160=>'space',161=>'afii10062',162=>'afii10110',163=>'afii10057',164=>'currency',165=>'afii10050',166=>'brokenbar',167=>'section',168=>'afii10023',169=>'copyright',170=>'afii10053',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii10056',176=>'degree',177=>'plusminus',178=>'afii10055',179=>'afii10103',180=>'afii10098',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'afii10071',185=>'afii61352',186=>'afii10101',187=>'guillemotright',188=>'afii10105',189=>'afii10054',190=>'afii10102',191=>'afii10104',192=>'afii10017',193=>'afii10018',194=>'afii10019',195=>'afii10020',196=>'afii10021',197=>'afii10022',198=>'afii10024',199=>'afii10025',200=>'afii10026',201=>'afii10027',202=>'afii10028',203=>'afii10029',204=>'afii10030',205=>'afii10031',206=>'afii10032',207=>'afii10033',208=>'afii10034',209=>'afii10035',210=>'afii10036',211=>'afii10037',212=>'afii10038',213=>'afii10039',214=>'afii10040',215=>'afii10041',216=>'afii10042',217=>'afii10043',218=>'afii10044',219=>'afii10045',220=>'afii10046',221=>'afii10047',222=>'afii10048',223=>'afii10049',224=>'afii10065',225=>'afii10066',226=>'afii10067',227=>'afii10068',228=>'afii10069',229=>'afii10070',230=>'afii10072',231=>'afii10073',232=>'afii10074',233=>'afii10075',234=>'afii10076',235=>'afii10077',236=>'afii10078',237=>'afii10079',238=>'afii10080',239=>'afii10081',240=>'afii10082',241=>'afii10083',242=>'afii10084',243=>'afii10085',244=>'afii10086',245=>'afii10087',246=>'afii10088',247=>'afii10089',248=>'afii10090',249=>'afii10091',250=>'afii10092',251=>'afii10093',252=>'afii10094',253=>'afii10095',254=>'afii10096',255=>'afii10097'), | ||
18377 | |||
18378 | // encoding map for: cp1252 | ||
18379 | 'cp1252' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'Zcaron',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'zcaron',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), | ||
18380 | |||
18381 | // encoding map for: cp1253 | ||
18382 | 'cp1253' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'dieresistonos',162=>'Alphatonos',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'), | ||
18383 | |||
18384 | // encoding map for: cp1254 | ||
18385 | 'cp1254' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'Scaron',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'scaron',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'), | ||
18386 | |||
18387 | // encoding map for: cp1255 | ||
18388 | 'cp1255' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'afii57636',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'multiply',171=>'guillemotleft',172=>'logicalnot',173=>'sfthyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'middot',184=>'cedilla',185=>'onesuperior',186=>'divide',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'afii57799',193=>'afii57801',194=>'afii57800',195=>'afii57802',196=>'afii57793',197=>'afii57794',198=>'afii57795',199=>'afii57798',200=>'afii57797',201=>'afii57806',202=>'.notdef',203=>'afii57796',204=>'afii57807',205=>'afii57839',206=>'afii57645',207=>'afii57841',208=>'afii57842',209=>'afii57804',210=>'afii57803',211=>'afii57658',212=>'afii57716',213=>'afii57717',214=>'afii57718',215=>'gereshhebrew',216=>'gershayimhebrew',217=>'.notdef',218=>'.notdef',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'.notdef',224=>'afii57664',225=>'afii57665',226=>'afii57666',227=>'afii57667',228=>'afii57668',229=>'afii57669',230=>'afii57670',231=>'afii57671',232=>'afii57672',233=>'afii57673',234=>'afii57674',235=>'afii57675',236=>'afii57676',237=>'afii57677',238=>'afii57678',239=>'afii57679',240=>'afii57680',241=>'afii57681',242=>'afii57682',243=>'afii57683',244=>'afii57684',245=>'afii57685',246=>'afii57686',247=>'afii57687',248=>'afii57688',249=>'afii57689',250=>'afii57690',251=>'.notdef',252=>'.notdef',253=>'afii299',254=>'afii300',255=>'.notdef'), | ||
18389 | |||
18390 | // encoding map for: cp1256 | ||
18391 | 'cp1256' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'afii57506',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'afii57511',139=>'guilsinglleft',140=>'OE',141=>'afii57507',142=>'afii57508',143=>'afii57512',144=>'afii57509',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'afii57513',155=>'guilsinglright',156=>'oe',157=>'afii61664',158=>'afii301',159=>'afii57514',160=>'space',161=>'afii57388',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'afii57403',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'afii57407',192=>'.notdef',193=>'afii57409',194=>'afii57410',195=>'afii57411',196=>'afii57412',197=>'afii57413',198=>'afii57414',199=>'afii57415',200=>'afii57416',201=>'afii57417',202=>'afii57418',203=>'afii57419',204=>'afii57420',205=>'afii57421',206=>'afii57422',207=>'afii57423',208=>'afii57424',209=>'afii57425',210=>'afii57426',211=>'afii57427',212=>'afii57428',213=>'afii57429',214=>'afii57430',215=>'multiply',216=>'afii57431',217=>'afii57432',218=>'afii57433',219=>'afii57434',220=>'afii57440',221=>'afii57441',222=>'afii57442',223=>'afii57443',224=>'agrave',225=>'afii57444',226=>'acircumflex',227=>'afii57445',228=>'afii57446',229=>'afii57470',230=>'afii57448',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'afii57449',237=>'afii57450',238=>'icircumflex',239=>'idieresis',240=>'afii57451',241=>'afii57452',242=>'afii57453',243=>'afii57454',244=>'ocircumflex',245=>'afii57455',246=>'afii57456',247=>'divide',248=>'afii57457',249=>'ugrave',250=>'afii57458',251=>'ucircumflex',252=>'udieresis',253=>'afii299',254=>'afii300',255=>'afii57519'), | ||
18392 | |||
18393 | // encoding map for: cp1257 | ||
18394 | 'cp1257' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'.notdef',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'.notdef',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'.notdef',141=>'dieresis',142=>'caron',143=>'cedilla',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'.notdef',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'.notdef',157=>'macron',158=>'ogonek',159=>'.notdef',160=>'space',161=>'.notdef',162=>'cent',163=>'sterling',164=>'currency',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'Oslash',169=>'copyright',170=>'Rcommaaccent',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'AE',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'oslash',185=>'onesuperior',186=>'rcommaaccent',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'ae',192=>'Aogonek',193=>'Iogonek',194=>'Amacron',195=>'Cacute',196=>'Adieresis',197=>'Aring',198=>'Eogonek',199=>'Emacron',200=>'Ccaron',201=>'Eacute',202=>'Zacute',203=>'Edotaccent',204=>'Gcommaaccent',205=>'Kcommaaccent',206=>'Imacron',207=>'Lcommaaccent',208=>'Scaron',209=>'Nacute',210=>'Ncommaaccent',211=>'Oacute',212=>'Omacron',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Uogonek',217=>'Lslash',218=>'Sacute',219=>'Umacron',220=>'Udieresis',221=>'Zdotaccent',222=>'Zcaron',223=>'germandbls',224=>'aogonek',225=>'iogonek',226=>'amacron',227=>'cacute',228=>'adieresis',229=>'aring',230=>'eogonek',231=>'emacron',232=>'ccaron',233=>'eacute',234=>'zacute',235=>'edotaccent',236=>'gcommaaccent',237=>'kcommaaccent',238=>'imacron',239=>'lcommaaccent',240=>'scaron',241=>'nacute',242=>'ncommaaccent',243=>'oacute',244=>'omacron',245=>'otilde',246=>'odieresis',247=>'divide',248=>'uogonek',249=>'lslash',250=>'sacute',251=>'umacron',252=>'udieresis',253=>'zdotaccent',254=>'zcaron',255=>'dotaccent'), | ||
18395 | |||
18396 | // encoding map for: cp1258 | ||
18397 | 'cp1258' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'Euro',129=>'.notdef',130=>'quotesinglbase',131=>'florin',132=>'quotedblbase',133=>'ellipsis',134=>'dagger',135=>'daggerdbl',136=>'circumflex',137=>'perthousand',138=>'.notdef',139=>'guilsinglleft',140=>'OE',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'quoteleft',146=>'quoteright',147=>'quotedblleft',148=>'quotedblright',149=>'bullet',150=>'endash',151=>'emdash',152=>'tilde',153=>'trademark',154=>'.notdef',155=>'guilsinglright',156=>'oe',157=>'.notdef',158=>'.notdef',159=>'Ydieresis',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'gravecomb',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Ntilde',210=>'hookabovecomb',211=>'Oacute',212=>'Ocircumflex',213=>'Ohorn',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Uhorn',222=>'tildecomb',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'acutecomb',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'ntilde',242=>'dotbelowcomb',243=>'oacute',244=>'ocircumflex',245=>'ohorn',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'uhorn',254=>'dong',255=>'ydieresis'), | ||
18398 | |||
18399 | // encoding map for: iso-8859-1 | ||
18400 | 'iso-8859-1' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), | ||
18401 | |||
18402 | // encoding map for: iso-8859-2 | ||
18403 | 'iso-8859-2' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'breve',163=>'Lslash',164=>'currency',165=>'Lcaron',166=>'Sacute',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Scedilla',171=>'Tcaron',172=>'Zacute',173=>'hyphen',174=>'Zcaron',175=>'Zdotaccent',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'lslash',180=>'acute',181=>'lcaron',182=>'sacute',183=>'caron',184=>'cedilla',185=>'scaron',186=>'scedilla',187=>'tcaron',188=>'zacute',189=>'hungarumlaut',190=>'zcaron',191=>'zdotaccent',192=>'Racute',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Lacute',198=>'Cacute',199=>'Ccedilla',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Ecaron',205=>'Iacute',206=>'Icircumflex',207=>'Dcaron',208=>'Dcroat',209=>'Nacute',210=>'Ncaron',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'multiply',216=>'Rcaron',217=>'Uring',218=>'Uacute',219=>'Uhungarumlaut',220=>'Udieresis',221=>'Yacute',222=>'Tcommaaccent',223=>'germandbls',224=>'racute',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'lacute',230=>'cacute',231=>'ccedilla',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'ecaron',237=>'iacute',238=>'icircumflex',239=>'dcaron',240=>'dcroat',241=>'nacute',242=>'ncaron',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'divide',248=>'rcaron',249=>'uring',250=>'uacute',251=>'uhungarumlaut',252=>'udieresis',253=>'yacute',254=>'tcommaaccent',255=>'dotaccent'), | ||
18404 | |||
18405 | // encoding map for: iso-8859-4 | ||
18406 | 'iso-8859-4' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'kgreenlandic',163=>'Rcommaaccent',164=>'currency',165=>'Itilde',166=>'Lcommaaccent',167=>'section',168=>'dieresis',169=>'Scaron',170=>'Emacron',171=>'Gcommaaccent',172=>'Tbar',173=>'hyphen',174=>'Zcaron',175=>'macron',176=>'degree',177=>'aogonek',178=>'ogonek',179=>'rcommaaccent',180=>'acute',181=>'itilde',182=>'lcommaaccent',183=>'caron',184=>'cedilla',185=>'scaron',186=>'emacron',187=>'gcommaaccent',188=>'tbar',189=>'Eng',190=>'zcaron',191=>'eng',192=>'Amacron',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Iogonek',200=>'Ccaron',201=>'Eacute',202=>'Eogonek',203=>'Edieresis',204=>'Edotaccent',205=>'Iacute',206=>'Icircumflex',207=>'Imacron',208=>'Dcroat',209=>'Ncommaaccent',210=>'Omacron',211=>'Kcommaaccent',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Uogonek',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Utilde',222=>'Umacron',223=>'germandbls',224=>'amacron',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'iogonek',232=>'ccaron',233=>'eacute',234=>'eogonek',235=>'edieresis',236=>'edotaccent',237=>'iacute',238=>'icircumflex',239=>'imacron',240=>'dcroat',241=>'ncommaaccent',242=>'omacron',243=>'kcommaaccent',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'uogonek',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'utilde',254=>'umacron',255=>'dotaccent'), | ||
18407 | |||
18408 | // encoding map for: iso-8859-5 | ||
18409 | 'iso-8859-5' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'afii10023',162=>'afii10051',163=>'afii10052',164=>'afii10053',165=>'afii10054',166=>'afii10055',167=>'afii10056',168=>'afii10057',169=>'afii10058',170=>'afii10059',171=>'afii10060',172=>'afii10061',173=>'hyphen',174=>'afii10062',175=>'afii10145',176=>'afii10017',177=>'afii10018',178=>'afii10019',179=>'afii10020',180=>'afii10021',181=>'afii10022',182=>'afii10024',183=>'afii10025',184=>'afii10026',185=>'afii10027',186=>'afii10028',187=>'afii10029',188=>'afii10030',189=>'afii10031',190=>'afii10032',191=>'afii10033',192=>'afii10034',193=>'afii10035',194=>'afii10036',195=>'afii10037',196=>'afii10038',197=>'afii10039',198=>'afii10040',199=>'afii10041',200=>'afii10042',201=>'afii10043',202=>'afii10044',203=>'afii10045',204=>'afii10046',205=>'afii10047',206=>'afii10048',207=>'afii10049',208=>'afii10065',209=>'afii10066',210=>'afii10067',211=>'afii10068',212=>'afii10069',213=>'afii10070',214=>'afii10072',215=>'afii10073',216=>'afii10074',217=>'afii10075',218=>'afii10076',219=>'afii10077',220=>'afii10078',221=>'afii10079',222=>'afii10080',223=>'afii10081',224=>'afii10082',225=>'afii10083',226=>'afii10084',227=>'afii10085',228=>'afii10086',229=>'afii10087',230=>'afii10088',231=>'afii10089',232=>'afii10090',233=>'afii10091',234=>'afii10092',235=>'afii10093',236=>'afii10094',237=>'afii10095',238=>'afii10096',239=>'afii10097',240=>'afii61352',241=>'afii10071',242=>'afii10099',243=>'afii10100',244=>'afii10101',245=>'afii10102',246=>'afii10103',247=>'afii10104',248=>'afii10105',249=>'afii10106',250=>'afii10107',251=>'afii10108',252=>'afii10109',253=>'section',254=>'afii10110',255=>'afii10193'), | ||
18410 | |||
18411 | // encoding map for: iso-8859-7 | ||
18412 | 'iso-8859-7' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'quoteleft',162=>'quoteright',163=>'sterling',164=>'.notdef',165=>'.notdef',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'.notdef',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'.notdef',175=>'afii00208',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'tonos',181=>'dieresistonos',182=>'Alphatonos',183=>'periodcentered',184=>'Epsilontonos',185=>'Etatonos',186=>'Iotatonos',187=>'guillemotright',188=>'Omicrontonos',189=>'onehalf',190=>'Upsilontonos',191=>'Omegatonos',192=>'iotadieresistonos',193=>'Alpha',194=>'Beta',195=>'Gamma',196=>'Delta',197=>'Epsilon',198=>'Zeta',199=>'Eta',200=>'Theta',201=>'Iota',202=>'Kappa',203=>'Lambda',204=>'Mu',205=>'Nu',206=>'Xi',207=>'Omicron',208=>'Pi',209=>'Rho',210=>'.notdef',211=>'Sigma',212=>'Tau',213=>'Upsilon',214=>'Phi',215=>'Chi',216=>'Psi',217=>'Omega',218=>'Iotadieresis',219=>'Upsilondieresis',220=>'alphatonos',221=>'epsilontonos',222=>'etatonos',223=>'iotatonos',224=>'upsilondieresistonos',225=>'alpha',226=>'beta',227=>'gamma',228=>'delta',229=>'epsilon',230=>'zeta',231=>'eta',232=>'theta',233=>'iota',234=>'kappa',235=>'lambda',236=>'mu',237=>'nu',238=>'xi',239=>'omicron',240=>'pi',241=>'rho',242=>'sigma1',243=>'sigma',244=>'tau',245=>'upsilon',246=>'phi',247=>'chi',248=>'psi',249=>'omega',250=>'iotadieresis',251=>'upsilondieresis',252=>'omicrontonos',253=>'upsilontonos',254=>'omegatonos',255=>'.notdef'), | ||
18413 | |||
18414 | // encoding map for: iso-8859-9 | ||
18415 | 'iso-8859-9' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'currency',165=>'yen',166=>'brokenbar',167=>'section',168=>'dieresis',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'acute',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'cedilla',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'onequarter',189=>'onehalf',190=>'threequarters',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Gbreve',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Idotaccent',222=>'Scedilla',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'gbreve',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'dotlessi',254=>'scedilla',255=>'ydieresis'), | ||
18416 | |||
18417 | // encoding map for: iso-8859-11 | ||
18418 | 'iso-8859-11' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'kokaithai',162=>'khokhaithai',163=>'khokhuatthai',164=>'khokhwaithai',165=>'khokhonthai',166=>'khorakhangthai',167=>'ngonguthai',168=>'chochanthai',169=>'chochingthai',170=>'chochangthai',171=>'sosothai',172=>'chochoethai',173=>'yoyingthai',174=>'dochadathai',175=>'topatakthai',176=>'thothanthai',177=>'thonangmonthothai',178=>'thophuthaothai',179=>'nonenthai',180=>'dodekthai',181=>'totaothai',182=>'thothungthai',183=>'thothahanthai',184=>'thothongthai',185=>'nonuthai',186=>'bobaimaithai',187=>'poplathai',188=>'phophungthai',189=>'fofathai',190=>'phophanthai',191=>'fofanthai',192=>'phosamphaothai',193=>'momathai',194=>'yoyakthai',195=>'roruathai',196=>'ruthai',197=>'lolingthai',198=>'luthai',199=>'wowaenthai',200=>'sosalathai',201=>'sorusithai',202=>'sosuathai',203=>'hohipthai',204=>'lochulathai',205=>'oangthai',206=>'honokhukthai',207=>'paiyannoithai',208=>'saraathai',209=>'maihanakatthai',210=>'saraaathai',211=>'saraamthai',212=>'saraithai',213=>'saraiithai',214=>'sarauethai',215=>'saraueethai',216=>'sarauthai',217=>'sarauuthai',218=>'phinthuthai',219=>'.notdef',220=>'.notdef',221=>'.notdef',222=>'.notdef',223=>'bahtthai',224=>'saraethai',225=>'saraaethai',226=>'saraothai',227=>'saraaimaimuanthai',228=>'saraaimaimalaithai',229=>'lakkhangyaothai',230=>'maiyamokthai',231=>'maitaikhuthai',232=>'maiekthai',233=>'maithothai',234=>'maitrithai',235=>'maichattawathai',236=>'thanthakhatthai',237=>'nikhahitthai',238=>'yamakkanthai',239=>'fongmanthai',240=>'zerothai',241=>'onethai',242=>'twothai',243=>'threethai',244=>'fourthai',245=>'fivethai',246=>'sixthai',247=>'seventhai',248=>'eightthai',249=>'ninethai',250=>'angkhankhuthai',251=>'khomutthai',252=>'.notdef',253=>'.notdef',254=>'.notdef',255=>'.notdef'), | ||
18419 | |||
18420 | // encoding map for: iso-8859-15 | ||
18421 | 'iso-8859-15' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'exclamdown',162=>'cent',163=>'sterling',164=>'Euro',165=>'yen',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'ordfeminine',171=>'guillemotleft',172=>'logicalnot',173=>'hyphen',174=>'registered',175=>'macron',176=>'degree',177=>'plusminus',178=>'twosuperior',179=>'threesuperior',180=>'Zcaron',181=>'mu',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'onesuperior',186=>'ordmasculine',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'questiondown',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Atilde',196=>'Adieresis',197=>'Aring',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Eth',209=>'Ntilde',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Otilde',214=>'Odieresis',215=>'multiply',216=>'Oslash',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Yacute',222=>'Thorn',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'atilde',228=>'adieresis',229=>'aring',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'eth',241=>'ntilde',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'otilde',246=>'odieresis',247=>'divide',248=>'oslash',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'yacute',254=>'thorn',255=>'ydieresis'), | ||
18422 | |||
18423 | // encoding map for: iso-8859-16 | ||
18424 | 'iso-8859-16' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'space',161=>'Aogonek',162=>'aogonek',163=>'Lslash',164=>'Euro',165=>'quotedblbase',166=>'Scaron',167=>'section',168=>'scaron',169=>'copyright',170=>'Scommaaccent',171=>'guillemotleft',172=>'Zacute',173=>'hyphen',174=>'zacute',175=>'Zdotaccent',176=>'degree',177=>'plusminus',178=>'Ccaron',179=>'lslash',180=>'Zcaron',181=>'quotedblright',182=>'paragraph',183=>'periodcentered',184=>'zcaron',185=>'ccaron',186=>'scommaaccent',187=>'guillemotright',188=>'OE',189=>'oe',190=>'Ydieresis',191=>'zdotaccent',192=>'Agrave',193=>'Aacute',194=>'Acircumflex',195=>'Abreve',196=>'Adieresis',197=>'Cacute',198=>'AE',199=>'Ccedilla',200=>'Egrave',201=>'Eacute',202=>'Ecircumflex',203=>'Edieresis',204=>'Igrave',205=>'Iacute',206=>'Icircumflex',207=>'Idieresis',208=>'Dcroat',209=>'Nacute',210=>'Ograve',211=>'Oacute',212=>'Ocircumflex',213=>'Ohungarumlaut',214=>'Odieresis',215=>'Sacute',216=>'Uhungarumlaut',217=>'Ugrave',218=>'Uacute',219=>'Ucircumflex',220=>'Udieresis',221=>'Eogonek',222=>'Tcommaaccent',223=>'germandbls',224=>'agrave',225=>'aacute',226=>'acircumflex',227=>'abreve',228=>'adieresis',229=>'cacute',230=>'ae',231=>'ccedilla',232=>'egrave',233=>'eacute',234=>'ecircumflex',235=>'edieresis',236=>'igrave',237=>'iacute',238=>'icircumflex',239=>'idieresis',240=>'dcroat',241=>'nacute',242=>'ograve',243=>'oacute',244=>'ocircumflex',245=>'ohungarumlaut',246=>'odieresis',247=>'sacute',248=>'uhungarumlaut',249=>'ugrave',250=>'uacute',251=>'ucircumflex',252=>'udieresis',253=>'eogonek',254=>'tcommaaccent',255=>'ydieresis'), | ||
18425 | |||
18426 | // encoding map for: koi8-r | ||
18427 | 'koi8-r' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'periodcentered',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'SF520000',165=>'SF390000',166=>'SF220000',167=>'SF210000',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'SF270000',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'SF200000',181=>'SF230000',182=>'SF470000',183=>'SF480000',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'SF530000',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'), | ||
18428 | |||
18429 | // encoding map for: koi8-u | ||
18430 | 'koi8-u' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'quotedbl',35=>'numbersign',36=>'dollar',37=>'percent',38=>'ampersand',39=>'quotesingle',40=>'parenleft',41=>'parenright',42=>'asterisk',43=>'plus',44=>'comma',45=>'hyphen',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'at',65=>'A',66=>'B',67=>'C',68=>'D',69=>'E',70=>'F',71=>'G',72=>'H',73=>'I',74=>'J',75=>'K',76=>'L',77=>'M',78=>'N',79=>'O',80=>'P',81=>'Q',82=>'R',83=>'S',84=>'T',85=>'U',86=>'V',87=>'W',88=>'X',89=>'Y',90=>'Z',91=>'bracketleft',92=>'backslash',93=>'bracketright',94=>'asciicircum',95=>'underscore',96=>'grave',97=>'a',98=>'b',99=>'c',100=>'d',101=>'e',102=>'f',103=>'g',104=>'h',105=>'i',106=>'j',107=>'k',108=>'l',109=>'m',110=>'n',111=>'o',112=>'p',113=>'q',114=>'r',115=>'s',116=>'t',117=>'u',118=>'v',119=>'w',120=>'x',121=>'y',122=>'z',123=>'braceleft',124=>'bar',125=>'braceright',126=>'asciitilde',127=>'.notdef',128=>'SF100000',129=>'SF110000',130=>'SF010000',131=>'SF030000',132=>'SF020000',133=>'SF040000',134=>'SF080000',135=>'SF090000',136=>'SF060000',137=>'SF070000',138=>'SF050000',139=>'upblock',140=>'dnblock',141=>'block',142=>'lfblock',143=>'rtblock',144=>'ltshade',145=>'shade',146=>'dkshade',147=>'integraltp',148=>'filledbox',149=>'bullet',150=>'radical',151=>'approxequal',152=>'lessequal',153=>'greaterequal',154=>'space',155=>'integralbt',156=>'degree',157=>'twosuperior',158=>'periodcentered',159=>'divide',160=>'SF430000',161=>'SF240000',162=>'SF510000',163=>'afii10071',164=>'afii10101',165=>'SF390000',166=>'afii10103',167=>'afii10104',168=>'SF250000',169=>'SF500000',170=>'SF490000',171=>'SF380000',172=>'SF280000',173=>'afii10098',174=>'SF260000',175=>'SF360000',176=>'SF370000',177=>'SF420000',178=>'SF190000',179=>'afii10023',180=>'afii10053',181=>'SF230000',182=>'afii10055',183=>'afii10056',184=>'SF410000',185=>'SF450000',186=>'SF460000',187=>'SF400000',188=>'SF540000',189=>'afii10050',190=>'SF440000',191=>'copyright',192=>'afii10096',193=>'afii10065',194=>'afii10066',195=>'afii10088',196=>'afii10069',197=>'afii10070',198=>'afii10086',199=>'afii10068',200=>'afii10087',201=>'afii10074',202=>'afii10075',203=>'afii10076',204=>'afii10077',205=>'afii10078',206=>'afii10079',207=>'afii10080',208=>'afii10081',209=>'afii10097',210=>'afii10082',211=>'afii10083',212=>'afii10084',213=>'afii10085',214=>'afii10072',215=>'afii10067',216=>'afii10094',217=>'afii10093',218=>'afii10073',219=>'afii10090',220=>'afii10095',221=>'afii10091',222=>'afii10089',223=>'afii10092',224=>'afii10048',225=>'afii10017',226=>'afii10018',227=>'afii10040',228=>'afii10021',229=>'afii10022',230=>'afii10038',231=>'afii10020',232=>'afii10039',233=>'afii10026',234=>'afii10027',235=>'afii10028',236=>'afii10029',237=>'afii10030',238=>'afii10031',239=>'afii10032',240=>'afii10033',241=>'afii10049',242=>'afii10034',243=>'afii10035',244=>'afii10036',245=>'afii10037',246=>'afii10024',247=>'afii10019',248=>'afii10046',249=>'afii10045',250=>'afii10025',251=>'afii10042',252=>'afii10047',253=>'afii10043',254=>'afii10041',255=>'afii10044'), | ||
18431 | |||
18432 | // encoding map for: symbol | ||
18433 | 'symbol' => array(0=>'.notdef',1=>'.notdef',2=>'.notdef',3=>'.notdef',4=>'.notdef',5=>'.notdef',6=>'.notdef',7=>'.notdef',8=>'.notdef',9=>'.notdef',10=>'.notdef',11=>'.notdef',12=>'.notdef',13=>'.notdef',14=>'.notdef',15=>'.notdef',16=>'.notdef',17=>'.notdef',18=>'.notdef',19=>'.notdef',20=>'.notdef',21=>'.notdef',22=>'.notdef',23=>'.notdef',24=>'.notdef',25=>'.notdef',26=>'.notdef',27=>'.notdef',28=>'.notdef',29=>'.notdef',30=>'.notdef',31=>'.notdef',32=>'space',33=>'exclam',34=>'universal',35=>'numbersign',36=>'existential',37=>'percent',38=>'ampersand',39=>'suchthat',40=>'parenleft',41=>'parenright',42=>'asteriskmath',43=>'plus',44=>'comma',45=>'minus',46=>'period',47=>'slash',48=>'zero',49=>'one',50=>'two',51=>'three',52=>'four',53=>'five',54=>'six',55=>'seven',56=>'eight',57=>'nine',58=>'colon',59=>'semicolon',60=>'less',61=>'equal',62=>'greater',63=>'question',64=>'congruent',65=>'Alpha',66=>'Beta',67=>'Chi',68=>'Delta',69=>'Epsilon',70=>'Phi',71=>'Gamma',72=>'Eta',73=>'Iota',74=>'theta1',75=>'Kappa',76=>'Lambda',77=>'Mu',78=>'Nu',79=>'Omicron',80=>'Pi',81=>'Theta',82=>'Rho',83=>'Sigma',84=>'Tau',85=>'Upsilon',86=>'sigma1',87=>'Omega',88=>'Xi',89=>'Psi',90=>'Zeta',91=>'bracketleft',92=>'therefore',93=>'bracketright',94=>'perpendicular',95=>'underscore',96=>'radicalex',97=>'alpha',98=>'beta',99=>'chi',100=>'delta',101=>'epsilon',102=>'phi',103=>'gamma',104=>'eta',105=>'iota',106=>'phi1',107=>'kappa',108=>'lambda',109=>'mu',110=>'nu',111=>'omicron',112=>'pi',113=>'theta',114=>'rho',115=>'sigma',116=>'tau',117=>'upsilon',118=>'omega1',119=>'omega',120=>'xi',121=>'psi',122=>'zeta',123=>'braceleft',124=>'bar',125=>'braceright',126=>'similar',127=>'.notdef',128=>'.notdef',129=>'.notdef',130=>'.notdef',131=>'.notdef',132=>'.notdef',133=>'.notdef',134=>'.notdef',135=>'.notdef',136=>'.notdef',137=>'.notdef',138=>'.notdef',139=>'.notdef',140=>'.notdef',141=>'.notdef',142=>'.notdef',143=>'.notdef',144=>'.notdef',145=>'.notdef',146=>'.notdef',147=>'.notdef',148=>'.notdef',149=>'.notdef',150=>'.notdef',151=>'.notdef',152=>'.notdef',153=>'.notdef',154=>'.notdef',155=>'.notdef',156=>'.notdef',157=>'.notdef',158=>'.notdef',159=>'.notdef',160=>'Euro',161=>'Upsilon1',162=>'minute',163=>'lessequal',164=>'fraction',165=>'infinity',166=>'florin',167=>'club',168=>'diamond',169=>'heart',170=>'spade',171=>'arrowboth',172=>'arrowleft',173=>'arrowup',174=>'arrowright',175=>'arrowdown',176=>'degree',177=>'plusminus',178=>'second',179=>'greaterequal',180=>'multiply',181=>'proportional',182=>'partialdiff',183=>'bullet',184=>'divide',185=>'notequal',186=>'equivalence',187=>'approxequal',188=>'ellipsis',189=>'arrowvertex',190=>'arrowhorizex',191=>'carriagereturn',192=>'aleph',193=>'Ifraktur',194=>'Rfraktur',195=>'weierstrass',196=>'circlemultiply',197=>'circleplus',198=>'emptyset',199=>'intersection',200=>'union',201=>'propersuperset',202=>'reflexsuperset',203=>'notsubset',204=>'propersubset',205=>'reflexsubset',206=>'element',207=>'notelement',208=>'angle',209=>'gradient',210=>'registerserif',211=>'copyrightserif',212=>'trademarkserif',213=>'product',214=>'radical',215=>'dotmath',216=>'logicalnot',217=>'logicaland',218=>'logicalor',219=>'arrowdblboth',220=>'arrowdblleft',221=>'arrowdblup',222=>'arrowdblright',223=>'arrowdbldown',224=>'lozenge',225=>'angleleft',226=>'registersans',227=>'copyrightsans',228=>'trademarksans',229=>'summation',230=>'parenlefttp',231=>'parenleftex',232=>'parenleftbt',233=>'bracketlefttp',234=>'bracketleftex',235=>'bracketleftbt',236=>'bracelefttp',237=>'braceleftmid',238=>'braceleftbt',239=>'braceex',240=>'.notdef',241=>'angleright',242=>'integral',243=>'integraltp',244=>'integralex',245=>'integralbt',246=>'parenrighttp',247=>'parenrightex',248=>'parenrightbt',249=>'bracketrighttp',250=>'bracketrightex',251=>'bracketrightbt',252=>'bracerighttp',253=>'bracerightmid',254=>'bracerightbt',255=>'.notdef',1226=>'registered',1227=>'copyright',1228=>'trademark') | ||
18434 | |||
18435 | ); // end of encoding maps | ||
18436 | |||
18437 | /** | ||
18438 | * ToUnicode map for Identity-H stream | ||
18439 | * @public static | ||
18440 | */ | ||
18441 | public static $uni_identity_h = "/CIDInit /ProcSet findresource begin\n12 dict begin\nbegincmap\n/CIDSystemInfo << /Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def\n/CMapName /Adobe-Identity-UCS def\n/CMapType 2 def\n/WMode 0 def\n1 begincodespacerange\n<0000> <FFFF>\nendcodespacerange\n100 beginbfrange\n<0000> <00ff> <0000>\n<0100> <01ff> <0100>\n<0200> <02ff> <0200>\n<0300> <03ff> <0300>\n<0400> <04ff> <0400>\n<0500> <05ff> <0500>\n<0600> <06ff> <0600>\n<0700> <07ff> <0700>\n<0800> <08ff> <0800>\n<0900> <09ff> <0900>\n<0a00> <0aff> <0a00>\n<0b00> <0bff> <0b00>\n<0c00> <0cff> <0c00>\n<0d00> <0dff> <0d00>\n<0e00> <0eff> <0e00>\n<0f00> <0fff> <0f00>\n<1000> <10ff> <1000>\n<1100> <11ff> <1100>\n<1200> <12ff> <1200>\n<1300> <13ff> <1300>\n<1400> <14ff> <1400>\n<1500> <15ff> <1500>\n<1600> <16ff> <1600>\n<1700> <17ff> <1700>\n<1800> <18ff> <1800>\n<1900> <19ff> <1900>\n<1a00> <1aff> <1a00>\n<1b00> <1bff> <1b00>\n<1c00> <1cff> <1c00>\n<1d00> <1dff> <1d00>\n<1e00> <1eff> <1e00>\n<1f00> <1fff> <1f00>\n<2000> <20ff> <2000>\n<2100> <21ff> <2100>\n<2200> <22ff> <2200>\n<2300> <23ff> <2300>\n<2400> <24ff> <2400>\n<2500> <25ff> <2500>\n<2600> <26ff> <2600>\n<2700> <27ff> <2700>\n<2800> <28ff> <2800>\n<2900> <29ff> <2900>\n<2a00> <2aff> <2a00>\n<2b00> <2bff> <2b00>\n<2c00> <2cff> <2c00>\n<2d00> <2dff> <2d00>\n<2e00> <2eff> <2e00>\n<2f00> <2fff> <2f00>\n<3000> <30ff> <3000>\n<3100> <31ff> <3100>\n<3200> <32ff> <3200>\n<3300> <33ff> <3300>\n<3400> <34ff> <3400>\n<3500> <35ff> <3500>\n<3600> <36ff> <3600>\n<3700> <37ff> <3700>\n<3800> <38ff> <3800>\n<3900> <39ff> <3900>\n<3a00> <3aff> <3a00>\n<3b00> <3bff> <3b00>\n<3c00> <3cff> <3c00>\n<3d00> <3dff> <3d00>\n<3e00> <3eff> <3e00>\n<3f00> <3fff> <3f00>\n<4000> <40ff> <4000>\n<4100> <41ff> <4100>\n<4200> <42ff> <4200>\n<4300> <43ff> <4300>\n<4400> <44ff> <4400>\n<4500> <45ff> <4500>\n<4600> <46ff> <4600>\n<4700> <47ff> <4700>\n<4800> <48ff> <4800>\n<4900> <49ff> <4900>\n<4a00> <4aff> <4a00>\n<4b00> <4bff> <4b00>\n<4c00> <4cff> <4c00>\n<4d00> <4dff> <4d00>\n<4e00> <4eff> <4e00>\n<4f00> <4fff> <4f00>\n<5000> <50ff> <5000>\n<5100> <51ff> <5100>\n<5200> <52ff> <5200>\n<5300> <53ff> <5300>\n<5400> <54ff> <5400>\n<5500> <55ff> <5500>\n<5600> <56ff> <5600>\n<5700> <57ff> <5700>\n<5800> <58ff> <5800>\n<5900> <59ff> <5900>\n<5a00> <5aff> <5a00>\n<5b00> <5bff> <5b00>\n<5c00> <5cff> <5c00>\n<5d00> <5dff> <5d00>\n<5e00> <5eff> <5e00>\n<5f00> <5fff> <5f00>\n<6000> <60ff> <6000>\n<6100> <61ff> <6100>\n<6200> <62ff> <6200>\n<6300> <63ff> <6300>\nendbfrange\n100 beginbfrange\n<6400> <64ff> <6400>\n<6500> <65ff> <6500>\n<6600> <66ff> <6600>\n<6700> <67ff> <6700>\n<6800> <68ff> <6800>\n<6900> <69ff> <6900>\n<6a00> <6aff> <6a00>\n<6b00> <6bff> <6b00>\n<6c00> <6cff> <6c00>\n<6d00> <6dff> <6d00>\n<6e00> <6eff> <6e00>\n<6f00> <6fff> <6f00>\n<7000> <70ff> <7000>\n<7100> <71ff> <7100>\n<7200> <72ff> <7200>\n<7300> <73ff> <7300>\n<7400> <74ff> <7400>\n<7500> <75ff> <7500>\n<7600> <76ff> <7600>\n<7700> <77ff> <7700>\n<7800> <78ff> <7800>\n<7900> <79ff> <7900>\n<7a00> <7aff> <7a00>\n<7b00> <7bff> <7b00>\n<7c00> <7cff> <7c00>\n<7d00> <7dff> <7d00>\n<7e00> <7eff> <7e00>\n<7f00> <7fff> <7f00>\n<8000> <80ff> <8000>\n<8100> <81ff> <8100>\n<8200> <82ff> <8200>\n<8300> <83ff> <8300>\n<8400> <84ff> <8400>\n<8500> <85ff> <8500>\n<8600> <86ff> <8600>\n<8700> <87ff> <8700>\n<8800> <88ff> <8800>\n<8900> <89ff> <8900>\n<8a00> <8aff> <8a00>\n<8b00> <8bff> <8b00>\n<8c00> <8cff> <8c00>\n<8d00> <8dff> <8d00>\n<8e00> <8eff> <8e00>\n<8f00> <8fff> <8f00>\n<9000> <90ff> <9000>\n<9100> <91ff> <9100>\n<9200> <92ff> <9200>\n<9300> <93ff> <9300>\n<9400> <94ff> <9400>\n<9500> <95ff> <9500>\n<9600> <96ff> <9600>\n<9700> <97ff> <9700>\n<9800> <98ff> <9800>\n<9900> <99ff> <9900>\n<9a00> <9aff> <9a00>\n<9b00> <9bff> <9b00>\n<9c00> <9cff> <9c00>\n<9d00> <9dff> <9d00>\n<9e00> <9eff> <9e00>\n<9f00> <9fff> <9f00>\n<a000> <a0ff> <a000>\n<a100> <a1ff> <a100>\n<a200> <a2ff> <a200>\n<a300> <a3ff> <a300>\n<a400> <a4ff> <a400>\n<a500> <a5ff> <a500>\n<a600> <a6ff> <a600>\n<a700> <a7ff> <a700>\n<a800> <a8ff> <a800>\n<a900> <a9ff> <a900>\n<aa00> <aaff> <aa00>\n<ab00> <abff> <ab00>\n<ac00> <acff> <ac00>\n<ad00> <adff> <ad00>\n<ae00> <aeff> <ae00>\n<af00> <afff> <af00>\n<b000> <b0ff> <b000>\n<b100> <b1ff> <b100>\n<b200> <b2ff> <b200>\n<b300> <b3ff> <b300>\n<b400> <b4ff> <b400>\n<b500> <b5ff> <b500>\n<b600> <b6ff> <b600>\n<b700> <b7ff> <b700>\n<b800> <b8ff> <b800>\n<b900> <b9ff> <b900>\n<ba00> <baff> <ba00>\n<bb00> <bbff> <bb00>\n<bc00> <bcff> <bc00>\n<bd00> <bdff> <bd00>\n<be00> <beff> <be00>\n<bf00> <bfff> <bf00>\n<c000> <c0ff> <c000>\n<c100> <c1ff> <c100>\n<c200> <c2ff> <c200>\n<c300> <c3ff> <c300>\n<c400> <c4ff> <c400>\n<c500> <c5ff> <c500>\n<c600> <c6ff> <c600>\n<c700> <c7ff> <c700>\nendbfrange\n56 beginbfrange\n<c800> <c8ff> <c800>\n<c900> <c9ff> <c900>\n<ca00> <caff> <ca00>\n<cb00> <cbff> <cb00>\n<cc00> <ccff> <cc00>\n<cd00> <cdff> <cd00>\n<ce00> <ceff> <ce00>\n<cf00> <cfff> <cf00>\n<d000> <d0ff> <d000>\n<d100> <d1ff> <d100>\n<d200> <d2ff> <d200>\n<d300> <d3ff> <d300>\n<d400> <d4ff> <d400>\n<d500> <d5ff> <d500>\n<d600> <d6ff> <d600>\n<d700> <d7ff> <d700>\n<d800> <d8ff> <d800>\n<d900> <d9ff> <d900>\n<da00> <daff> <da00>\n<db00> <dbff> <db00>\n<dc00> <dcff> <dc00>\n<dd00> <ddff> <dd00>\n<de00> <deff> <de00>\n<df00> <dfff> <df00>\n<e000> <e0ff> <e000>\n<e100> <e1ff> <e100>\n<e200> <e2ff> <e200>\n<e300> <e3ff> <e300>\n<e400> <e4ff> <e400>\n<e500> <e5ff> <e500>\n<e600> <e6ff> <e600>\n<e700> <e7ff> <e700>\n<e800> <e8ff> <e800>\n<e900> <e9ff> <e900>\n<ea00> <eaff> <ea00>\n<eb00> <ebff> <eb00>\n<ec00> <ecff> <ec00>\n<ed00> <edff> <ed00>\n<ee00> <eeff> <ee00>\n<ef00> <efff> <ef00>\n<f000> <f0ff> <f000>\n<f100> <f1ff> <f100>\n<f200> <f2ff> <f200>\n<f300> <f3ff> <f300>\n<f400> <f4ff> <f400>\n<f500> <f5ff> <f500>\n<f600> <f6ff> <f600>\n<f700> <f7ff> <f700>\n<f800> <f8ff> <f800>\n<f900> <f9ff> <f900>\n<fa00> <faff> <fa00>\n<fb00> <fbff> <fb00>\n<fc00> <fcff> <fc00>\n<fd00> <fdff> <fd00>\n<fe00> <feff> <fe00>\n<ff00> <ffff> <ff00>\nendbfrange\nendcmap\nCMapName currentdict /CMap defineresource pop\nend\nend"; | ||
18442 | |||
18443 | } // END OF TCPDF_FONT_DATA CLASS | ||
18444 | |||
18445 | //============================================================+ | ||
18446 | // END OF FILE | ||
18447 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php new file mode 100644 index 00000000..a7f0486a --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_fonts.php | |||
@@ -0,0 +1,2583 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : tcpdf_fonts.php | ||
4 | // Version : 1.0.013 | ||
5 | // Begin : 2008-01-01 | ||
6 | // Last Update : 2014-05-23 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2008-2014 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the GNU Lesser General Public License | ||
25 | // along with TCPDF. If not, see <http://www.gnu.org/licenses/>. | ||
26 | // | ||
27 | // See LICENSE.TXT file for more information. | ||
28 | // ------------------------------------------------------------------- | ||
29 | // | ||
30 | // Description :Font methods for TCPDF library. | ||
31 | // | ||
32 | //============================================================+ | ||
33 | |||
34 | /** | ||
35 | * @file | ||
36 | * Unicode data and font methods for TCPDF library. | ||
37 | * @author Nicola Asuni | ||
38 | * @package com.tecnick.tcpdf | ||
39 | */ | ||
40 | |||
41 | /** | ||
42 | * @class TCPDF_FONTS | ||
43 | * Font methods for TCPDF library. | ||
44 | * @package com.tecnick.tcpdf | ||
45 | * @version 1.0.013 | ||
46 | * @author Nicola Asuni - info@tecnick.com | ||
47 | */ | ||
48 | class TCPDF_FONTS { | ||
49 | |||
50 | /** | ||
51 | * Static cache used for speed up uniord performances | ||
52 | * @protected | ||
53 | */ | ||
54 | protected static $cache_uniord = array(); | ||
55 | |||
56 | /** | ||
57 | * Convert and add the selected TrueType or Type1 font to the fonts folder (that must be writeable). | ||
58 | * @param $fontfile (string) Font file (full path). | ||
59 | * @param $fonttype (string) Font type. Leave empty for autodetect mode. Valid values are: TrueTypeUnicode, TrueType, Type1, CID0JP = CID-0 Japanese, CID0KR = CID-0 Korean, CID0CS = CID-0 Chinese Simplified, CID0CT = CID-0 Chinese Traditional. | ||
60 | * @param $enc (string) Name of the encoding table to use. Leave empty for default mode. Omit this parameter for TrueType Unicode and symbolic fonts like Symbol or ZapfDingBats. | ||
61 | * @param $flags (int) Unsigned 32-bit integer containing flags specifying various characteristics of the font (PDF32000:2008 - 9.8.2 Font Descriptor Flags): +1 for fixed font; +4 for symbol or +32 for non-symbol; +64 for italic. Fixed and Italic mode are generally autodetected so you have to set it to 32 = non-symbolic font (default) or 4 = symbolic font. | ||
62 | * @param $outpath (string) Output path for generated font files (must be writeable by the web server). Leave empty for default font folder. | ||
63 | * @param $platid (int) Platform ID for CMAP table to extract (when building a Unicode font for Windows this value should be 3, for Macintosh should be 1). | ||
64 | * @param $encid (int) Encoding ID for CMAP table to extract (when building a Unicode font for Windows this value should be 1, for Macintosh should be 0). When Platform ID is 3, legal values for Encoding ID are: 0=Symbol, 1=Unicode, 2=ShiftJIS, 3=PRC, 4=Big5, 5=Wansung, 6=Johab, 7=Reserved, 8=Reserved, 9=Reserved, 10=UCS-4. | ||
65 | * @param $addcbbox (boolean) If true includes the character bounding box information on the php font file. | ||
66 | * @param $link (boolean) If true link to system font instead of copying the font data (not transportable) - Note: do not work with Type1 fonts. | ||
67 | * @return (string) TCPDF font name or boolean false in case of error. | ||
68 | * @author Nicola Asuni | ||
69 | * @since 5.9.123 (2010-09-30) | ||
70 | * @public static | ||
71 | */ | ||
72 | public static function addTTFfont($fontfile, $fonttype='', $enc='', $flags=32, $outpath='', $platid=3, $encid=1, $addcbbox=false, $link=false) { | ||
73 | if (!file_exists($fontfile)) { | ||
74 | // Could not find file | ||
75 | return false; | ||
76 | } | ||
77 | // font metrics | ||
78 | $fmetric = array(); | ||
79 | // build new font name for TCPDF compatibility | ||
80 | $font_path_parts = pathinfo($fontfile); | ||
81 | if (!isset($font_path_parts['filename'])) { | ||
82 | $font_path_parts['filename'] = substr($font_path_parts['basename'], 0, -(strlen($font_path_parts['extension']) + 1)); | ||
83 | } | ||
84 | $font_name = strtolower($font_path_parts['filename']); | ||
85 | $font_name = preg_replace('/[^a-z0-9_]/', '', $font_name); | ||
86 | $search = array('bold', 'oblique', 'italic', 'regular'); | ||
87 | $replace = array('b', 'i', 'i', ''); | ||
88 | $font_name = str_replace($search, $replace, $font_name); | ||
89 | if (empty($font_name)) { | ||
90 | // set generic name | ||
91 | $font_name = 'tcpdffont'; | ||
92 | } | ||
93 | // set output path | ||
94 | if (empty($outpath)) { | ||
95 | $outpath = self::_getfontpath(); | ||
96 | } | ||
97 | // check if this font already exist | ||
98 | if (@file_exists($outpath.$font_name.'.php')) { | ||
99 | // this font already exist (delete it from fonts folder to rebuild it) | ||
100 | return $font_name; | ||
101 | } | ||
102 | $fmetric['file'] = $font_name; | ||
103 | $fmetric['ctg'] = $font_name.'.ctg.z'; | ||
104 | // get font data | ||
105 | $font = file_get_contents($fontfile); | ||
106 | $fmetric['originalsize'] = strlen($font); | ||
107 | // autodetect font type | ||
108 | if (empty($fonttype)) { | ||
109 | if (TCPDF_STATIC::_getULONG($font, 0) == 0x10000) { | ||
110 | // True Type (Unicode or not) | ||
111 | $fonttype = 'TrueTypeUnicode'; | ||
112 | } elseif (substr($font, 0, 4) == 'OTTO') { | ||
113 | // Open Type (Unicode or not) | ||
114 | //Unsupported font format: OpenType with CFF data | ||
115 | return false; | ||
116 | } else { | ||
117 | // Type 1 | ||
118 | $fonttype = 'Type1'; | ||
119 | } | ||
120 | } | ||
121 | // set font type | ||
122 | switch ($fonttype) { | ||
123 | case 'CID0CT': | ||
124 | case 'CID0CS': | ||
125 | case 'CID0KR': | ||
126 | case 'CID0JP': { | ||
127 | $fmetric['type'] = 'cidfont0'; | ||
128 | break; | ||
129 | } | ||
130 | case 'Type1': { | ||
131 | $fmetric['type'] = 'Type1'; | ||
132 | if (empty($enc) AND (($flags & 4) == 0)) { | ||
133 | $enc = 'cp1252'; | ||
134 | } | ||
135 | break; | ||
136 | } | ||
137 | case 'TrueType': { | ||
138 | $fmetric['type'] = 'TrueType'; | ||
139 | break; | ||
140 | } | ||
141 | case 'TrueTypeUnicode': | ||
142 | default: { | ||
143 | $fmetric['type'] = 'TrueTypeUnicode'; | ||
144 | break; | ||
145 | } | ||
146 | } | ||
147 | // set encoding maps (if any) | ||
148 | $fmetric['enc'] = preg_replace('/[^A-Za-z0-9_\-]/', '', $enc); | ||
149 | $fmetric['diff'] = ''; | ||
150 | if (($fmetric['type'] == 'TrueType') OR ($fmetric['type'] == 'Type1')) { | ||
151 | if (!empty($enc) AND ($enc != 'cp1252') AND isset(TCPDF_FONT_DATA::$encmap[$enc])) { | ||
152 | // build differences from reference encoding | ||
153 | $enc_ref = TCPDF_FONT_DATA::$encmap['cp1252']; | ||
154 | $enc_target = TCPDF_FONT_DATA::$encmap[$enc]; | ||
155 | $last = 0; | ||
156 | for ($i = 32; $i <= 255; ++$i) { | ||
157 | if ($enc_target != $enc_ref[$i]) { | ||
158 | if ($i != ($last + 1)) { | ||
159 | $fmetric['diff'] .= $i.' '; | ||
160 | } | ||
161 | $last = $i; | ||
162 | $fmetric['diff'] .= '/'.$enc_target[$i].' '; | ||
163 | } | ||
164 | } | ||
165 | } | ||
166 | } | ||
167 | // parse the font by type | ||
168 | if ($fmetric['type'] == 'Type1') { | ||
169 | // ---------- TYPE 1 ---------- | ||
170 | // read first segment | ||
171 | $a = unpack('Cmarker/Ctype/Vsize', substr($font, 0, 6)); | ||
172 | if ($a['marker'] != 128) { | ||
173 | // Font file is not a valid binary Type1 | ||
174 | return false; | ||
175 | } | ||
176 | $fmetric['size1'] = $a['size']; | ||
177 | $data = substr($font, 6, $fmetric['size1']); | ||
178 | // read second segment | ||
179 | $a = unpack('Cmarker/Ctype/Vsize', substr($font, (6 + $fmetric['size1']), 6)); | ||
180 | if ($a['marker'] != 128) { | ||
181 | // Font file is not a valid binary Type1 | ||
182 | return false; | ||
183 | } | ||
184 | $fmetric['size2'] = $a['size']; | ||
185 | $encrypted = substr($font, (12 + $fmetric['size1']), $fmetric['size2']); | ||
186 | $data .= $encrypted; | ||
187 | // store compressed font | ||
188 | $fmetric['file'] .= '.z'; | ||
189 | $fp = fopen($outpath.$fmetric['file'], 'wb'); | ||
190 | fwrite($fp, gzcompress($data)); | ||
191 | fclose($fp); | ||
192 | // get font info | ||
193 | $fmetric['Flags'] = $flags; | ||
194 | preg_match ('#/FullName[\s]*\(([^\)]*)#', $font, $matches); | ||
195 | $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $matches[1]); | ||
196 | preg_match('#/FontBBox[\s]*{([^}]*)#', $font, $matches); | ||
197 | $fmetric['bbox'] = trim($matches[1]); | ||
198 | $bv = explode(' ', $fmetric['bbox']); | ||
199 | $fmetric['Ascent'] = intval($bv[3]); | ||
200 | $fmetric['Descent'] = intval($bv[1]); | ||
201 | preg_match('#/ItalicAngle[\s]*([0-9\+\-]*)#', $font, $matches); | ||
202 | $fmetric['italicAngle'] = intval($matches[1]); | ||
203 | if ($fmetric['italicAngle'] != 0) { | ||
204 | $fmetric['Flags'] |= 64; | ||
205 | } | ||
206 | preg_match('#/UnderlinePosition[\s]*([0-9\+\-]*)#', $font, $matches); | ||
207 | $fmetric['underlinePosition'] = intval($matches[1]); | ||
208 | preg_match('#/UnderlineThickness[\s]*([0-9\+\-]*)#', $font, $matches); | ||
209 | $fmetric['underlineThickness'] = intval($matches[1]); | ||
210 | preg_match('#/isFixedPitch[\s]*([^\s]*)#', $font, $matches); | ||
211 | if ($matches[1] == 'true') { | ||
212 | $fmetric['Flags'] |= 1; | ||
213 | } | ||
214 | // get internal map | ||
215 | $imap = array(); | ||
216 | if (preg_match_all('#dup[\s]([0-9]+)[\s]*/([^\s]*)[\s]put#sU', $font, $fmap, PREG_SET_ORDER) > 0) { | ||
217 | foreach ($fmap as $v) { | ||
218 | $imap[$v[2]] = $v[1]; | ||
219 | } | ||
220 | } | ||
221 | // decrypt eexec encrypted part | ||
222 | $r = 55665; // eexec encryption constant | ||
223 | $c1 = 52845; | ||
224 | $c2 = 22719; | ||
225 | $elen = strlen($encrypted); | ||
226 | $eplain = ''; | ||
227 | for ($i = 0; $i < $elen; ++$i) { | ||
228 | $chr = ord($encrypted[$i]); | ||
229 | $eplain .= chr($chr ^ ($r >> 8)); | ||
230 | $r = ((($chr + $r) * $c1 + $c2) % 65536); | ||
231 | } | ||
232 | if (preg_match('#/ForceBold[\s]*([^\s]*)#', $eplain, $matches) > 0) { | ||
233 | if ($matches[1] == 'true') { | ||
234 | $fmetric['Flags'] |= 0x40000; | ||
235 | } | ||
236 | } | ||
237 | if (preg_match('#/StdVW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { | ||
238 | $fmetric['StemV'] = intval($matches[1]); | ||
239 | } else { | ||
240 | $fmetric['StemV'] = 70; | ||
241 | } | ||
242 | if (preg_match('#/StdHW[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { | ||
243 | $fmetric['StemH'] = intval($matches[1]); | ||
244 | } else { | ||
245 | $fmetric['StemH'] = 30; | ||
246 | } | ||
247 | if (preg_match('#/BlueValues[\s]*\[([^\]]*)#', $eplain, $matches) > 0) { | ||
248 | $bv = explode(' ', $matches[1]); | ||
249 | if (count($bv) >= 6) { | ||
250 | $v1 = intval($bv[2]); | ||
251 | $v2 = intval($bv[4]); | ||
252 | if ($v1 <= $v2) { | ||
253 | $fmetric['XHeight'] = $v1; | ||
254 | $fmetric['CapHeight'] = $v2; | ||
255 | } else { | ||
256 | $fmetric['XHeight'] = $v2; | ||
257 | $fmetric['CapHeight'] = $v1; | ||
258 | } | ||
259 | } else { | ||
260 | $fmetric['XHeight'] = 450; | ||
261 | $fmetric['CapHeight'] = 700; | ||
262 | } | ||
263 | } else { | ||
264 | $fmetric['XHeight'] = 450; | ||
265 | $fmetric['CapHeight'] = 700; | ||
266 | } | ||
267 | // get the number of random bytes at the beginning of charstrings | ||
268 | if (preg_match('#/lenIV[\s]*([0-9]*)#', $eplain, $matches) > 0) { | ||
269 | $lenIV = intval($matches[1]); | ||
270 | } else { | ||
271 | $lenIV = 4; | ||
272 | } | ||
273 | $fmetric['Leading'] = 0; | ||
274 | // get charstring data | ||
275 | $eplain = substr($eplain, (strpos($eplain, '/CharStrings') + 1)); | ||
276 | preg_match_all('#/([A-Za-z0-9\.]*)[\s][0-9]+[\s]RD[\s](.*)[\s]ND#sU', $eplain, $matches, PREG_SET_ORDER); | ||
277 | if (!empty($enc) AND isset(TCPDF_FONT_DATA::$encmap[$enc])) { | ||
278 | $enc_map = TCPDF_FONT_DATA::$encmap[$enc]; | ||
279 | } else { | ||
280 | $enc_map = false; | ||
281 | } | ||
282 | $fmetric['cw'] = ''; | ||
283 | $fmetric['MaxWidth'] = 0; | ||
284 | $cwidths = array(); | ||
285 | foreach ($matches as $k => $v) { | ||
286 | $cid = 0; | ||
287 | if (isset($imap[$v[1]])) { | ||
288 | $cid = $imap[$v[1]]; | ||
289 | } elseif ($enc_map !== false) { | ||
290 | $cid = array_search($v[1], $enc_map); | ||
291 | if ($cid === false) { | ||
292 | $cid = 0; | ||
293 | } elseif ($cid > 1000) { | ||
294 | $cid -= 1000; | ||
295 | } | ||
296 | } | ||
297 | // decrypt charstring encrypted part | ||
298 | $r = 4330; // charstring encryption constant | ||
299 | $c1 = 52845; | ||
300 | $c2 = 22719; | ||
301 | $cd = $v[2]; | ||
302 | $clen = strlen($cd); | ||
303 | $ccom = array(); | ||
304 | for ($i = 0; $i < $clen; ++$i) { | ||
305 | $chr = ord($cd[$i]); | ||
306 | $ccom[] = ($chr ^ ($r >> 8)); | ||
307 | $r = ((($chr + $r) * $c1 + $c2) % 65536); | ||
308 | } | ||
309 | // decode numbers | ||
310 | $cdec = array(); | ||
311 | $ck = 0; | ||
312 | $i = $lenIV; | ||
313 | while ($i < $clen) { | ||
314 | if ($ccom[$i] < 32) { | ||
315 | $cdec[$ck] = $ccom[$i]; | ||
316 | if (($ck > 0) AND ($cdec[$ck] == 13)) { | ||
317 | // hsbw command: update width | ||
318 | $cwidths[$cid] = $cdec[($ck - 1)]; | ||
319 | } | ||
320 | ++$i; | ||
321 | } elseif (($ccom[$i] >= 32) AND ($ccom[$i] <= 246)) { | ||
322 | $cdec[$ck] = ($ccom[$i] - 139); | ||
323 | ++$i; | ||
324 | } elseif (($ccom[$i] >= 247) AND ($ccom[$i] <= 250)) { | ||
325 | $cdec[$ck] = ((($ccom[$i] - 247) * 256) + $ccom[($i + 1)] + 108); | ||
326 | $i += 2; | ||
327 | } elseif (($ccom[$i] >= 251) AND ($ccom[$i] <= 254)) { | ||
328 | $cdec[$ck] = ((-($ccom[$i] - 251) * 256) - $ccom[($i + 1)] - 108); | ||
329 | $i += 2; | ||
330 | } elseif ($ccom[$i] == 255) { | ||
331 | $sval = chr($ccom[($i + 1)]).chr($ccom[($i + 2)]).chr($ccom[($i + 3)]).chr($ccom[($i + 4)]); | ||
332 | $vsval = unpack('li', $sval); | ||
333 | $cdec[$ck] = $vsval['i']; | ||
334 | $i += 5; | ||
335 | } | ||
336 | ++$ck; | ||
337 | } | ||
338 | } // end for each matches | ||
339 | $fmetric['MissingWidth'] = $cwidths[0]; | ||
340 | $fmetric['MaxWidth'] = $fmetric['MissingWidth']; | ||
341 | $fmetric['AvgWidth'] = 0; | ||
342 | // set chars widths | ||
343 | for ($cid = 0; $cid <= 255; ++$cid) { | ||
344 | if (isset($cwidths[$cid])) { | ||
345 | if ($cwidths[$cid] > $fmetric['MaxWidth']) { | ||
346 | $fmetric['MaxWidth'] = $cwidths[$cid]; | ||
347 | } | ||
348 | $fmetric['AvgWidth'] += $cwidths[$cid]; | ||
349 | $fmetric['cw'] .= ','.$cid.'=>'.$cwidths[$cid]; | ||
350 | } else { | ||
351 | $fmetric['cw'] .= ','.$cid.'=>'.$fmetric['MissingWidth']; | ||
352 | } | ||
353 | } | ||
354 | $fmetric['AvgWidth'] = round($fmetric['AvgWidth'] / count($cwidths)); | ||
355 | } else { | ||
356 | // ---------- TRUE TYPE ---------- | ||
357 | if ($fmetric['type'] != 'cidfont0') { | ||
358 | if ($link) { | ||
359 | // creates a symbolic link to the existing font | ||
360 | symlink($fontfile, $outpath.$fmetric['file']); | ||
361 | } else { | ||
362 | // store compressed font | ||
363 | $fmetric['file'] .= '.z'; | ||
364 | $fp = fopen($outpath.$fmetric['file'], 'wb'); | ||
365 | fwrite($fp, gzcompress($font)); | ||
366 | fclose($fp); | ||
367 | } | ||
368 | } | ||
369 | $offset = 0; // offset position of the font data | ||
370 | if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { | ||
371 | // sfnt version must be 0x00010000 for TrueType version 1.0. | ||
372 | return false; | ||
373 | } | ||
374 | $offset += 4; | ||
375 | // get number of tables | ||
376 | $numTables = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
377 | $offset += 2; | ||
378 | // skip searchRange, entrySelector and rangeShift | ||
379 | $offset += 6; | ||
380 | // tables array | ||
381 | $table = array(); | ||
382 | // ---------- get tables ---------- | ||
383 | for ($i = 0; $i < $numTables; ++$i) { | ||
384 | // get table info | ||
385 | $tag = substr($font, $offset, 4); | ||
386 | $offset += 4; | ||
387 | $table[$tag] = array(); | ||
388 | $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
389 | $offset += 4; | ||
390 | $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
391 | $offset += 4; | ||
392 | $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
393 | $offset += 4; | ||
394 | } | ||
395 | // check magicNumber | ||
396 | $offset = $table['head']['offset'] + 12; | ||
397 | if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) { | ||
398 | // magicNumber must be 0x5F0F3CF5 | ||
399 | return false; | ||
400 | } | ||
401 | $offset += 4; | ||
402 | $offset += 2; // skip flags | ||
403 | // get FUnits | ||
404 | $fmetric['unitsPerEm'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
405 | $offset += 2; | ||
406 | // units ratio constant | ||
407 | $urk = (1000 / $fmetric['unitsPerEm']); | ||
408 | $offset += 16; // skip created, modified | ||
409 | $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
410 | $offset += 2; | ||
411 | $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
412 | $offset += 2; | ||
413 | $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
414 | $offset += 2; | ||
415 | $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
416 | $offset += 2; | ||
417 | $fmetric['bbox'] = ''.$xMin.' '.$yMin.' '.$xMax.' '.$yMax.''; | ||
418 | $macStyle = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
419 | $offset += 2; | ||
420 | // PDF font flags | ||
421 | $fmetric['Flags'] = $flags; | ||
422 | if (($macStyle & 2) == 2) { | ||
423 | // italic flag | ||
424 | $fmetric['Flags'] |= 64; | ||
425 | } | ||
426 | // get offset mode (indexToLocFormat : 0 = short, 1 = long) | ||
427 | $offset = $table['head']['offset'] + 50; | ||
428 | $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0); | ||
429 | $offset += 2; | ||
430 | // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table | ||
431 | $indexToLoc = array(); | ||
432 | $offset = $table['loca']['offset']; | ||
433 | if ($short_offset) { | ||
434 | // short version | ||
435 | $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1 | ||
436 | for ($i = 0; $i < $tot_num_glyphs; ++$i) { | ||
437 | $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2; | ||
438 | $offset += 2; | ||
439 | } | ||
440 | } else { | ||
441 | // long version | ||
442 | $tot_num_glyphs = floor($table['loca']['length'] / 4); // numGlyphs + 1 | ||
443 | for ($i = 0; $i < $tot_num_glyphs; ++$i) { | ||
444 | $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset); | ||
445 | $offset += 4; | ||
446 | } | ||
447 | } | ||
448 | // get glyphs indexes of chars from cmap table | ||
449 | $offset = $table['cmap']['offset'] + 2; | ||
450 | $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
451 | $offset += 2; | ||
452 | $encodingTables = array(); | ||
453 | for ($i = 0; $i < $numEncodingTables; ++$i) { | ||
454 | $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
455 | $offset += 2; | ||
456 | $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
457 | $offset += 2; | ||
458 | $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
459 | $offset += 4; | ||
460 | } | ||
461 | // ---------- get os/2 metrics ---------- | ||
462 | $offset = $table['OS/2']['offset']; | ||
463 | $offset += 2; // skip version | ||
464 | // xAvgCharWidth | ||
465 | $fmetric['AvgWidth'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
466 | $offset += 2; | ||
467 | // usWeightClass | ||
468 | $usWeightClass = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); | ||
469 | // estimate StemV and StemH (400 = usWeightClass for Normal - Regular font) | ||
470 | $fmetric['StemV'] = round((70 * $usWeightClass) / 400); | ||
471 | $fmetric['StemH'] = round((30 * $usWeightClass) / 400); | ||
472 | $offset += 2; | ||
473 | $offset += 2; // usWidthClass | ||
474 | $fsType = TCPDF_STATIC::_getSHORT($font, $offset); | ||
475 | $offset += 2; | ||
476 | if ($fsType == 2) { | ||
477 | // This Font cannot be modified, embedded or exchanged in any manner without first obtaining permission of the legal owner. | ||
478 | return false; | ||
479 | } | ||
480 | // ---------- get font name ---------- | ||
481 | $fmetric['name'] = ''; | ||
482 | $offset = $table['name']['offset']; | ||
483 | $offset += 2; // skip Format selector (=0). | ||
484 | // Number of NameRecords that follow n. | ||
485 | $numNameRecords = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
486 | $offset += 2; | ||
487 | // Offset to start of string storage (from start of table). | ||
488 | $stringStorageOffset = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
489 | $offset += 2; | ||
490 | for ($i = 0; $i < $numNameRecords; ++$i) { | ||
491 | $offset += 6; // skip Platform ID, Platform-specific encoding ID, Language ID. | ||
492 | // Name ID. | ||
493 | $nameID = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
494 | $offset += 2; | ||
495 | if ($nameID == 6) { | ||
496 | // String length (in bytes). | ||
497 | $stringLength = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
498 | $offset += 2; | ||
499 | // String offset from start of storage area (in bytes). | ||
500 | $stringOffset = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
501 | $offset += 2; | ||
502 | $offset = ($table['name']['offset'] + $stringStorageOffset + $stringOffset); | ||
503 | $fmetric['name'] = substr($font, $offset, $stringLength); | ||
504 | $fmetric['name'] = preg_replace('/[^a-zA-Z0-9_\-]/', '', $fmetric['name']); | ||
505 | break; | ||
506 | } else { | ||
507 | $offset += 4; // skip String length, String offset | ||
508 | } | ||
509 | } | ||
510 | if (empty($fmetric['name'])) { | ||
511 | $fmetric['name'] = $font_name; | ||
512 | } | ||
513 | // ---------- get post data ---------- | ||
514 | $offset = $table['post']['offset']; | ||
515 | $offset += 4; // skip Format Type | ||
516 | $fmetric['italicAngle'] = TCPDF_STATIC::_getFIXED($font, $offset); | ||
517 | $offset += 4; | ||
518 | $fmetric['underlinePosition'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
519 | $offset += 2; | ||
520 | $fmetric['underlineThickness'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
521 | $offset += 2; | ||
522 | $isFixedPitch = (TCPDF_STATIC::_getULONG($font, $offset) == 0) ? false : true; | ||
523 | $offset += 2; | ||
524 | if ($isFixedPitch) { | ||
525 | $fmetric['Flags'] |= 1; | ||
526 | } | ||
527 | // ---------- get hhea data ---------- | ||
528 | $offset = $table['hhea']['offset']; | ||
529 | $offset += 4; // skip Table version number | ||
530 | // Ascender | ||
531 | $fmetric['Ascent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
532 | $offset += 2; | ||
533 | // Descender | ||
534 | $fmetric['Descent'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
535 | $offset += 2; | ||
536 | // LineGap | ||
537 | $fmetric['Leading'] = round(TCPDF_STATIC::_getFWORD($font, $offset) * $urk); | ||
538 | $offset += 2; | ||
539 | // advanceWidthMax | ||
540 | $fmetric['MaxWidth'] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); | ||
541 | $offset += 2; | ||
542 | $offset += 22; // skip some values | ||
543 | // get the number of hMetric entries in hmtx table | ||
544 | $numberOfHMetrics = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
545 | // ---------- get maxp data ---------- | ||
546 | $offset = $table['maxp']['offset']; | ||
547 | $offset += 4; // skip Table version number | ||
548 | // get the the number of glyphs in the font. | ||
549 | $numGlyphs = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
550 | // ---------- get CIDToGIDMap ---------- | ||
551 | $ctg = array(); | ||
552 | foreach ($encodingTables as $enctable) { | ||
553 | // get only specified Platform ID and Encoding ID | ||
554 | if (($enctable['platformID'] == $platid) AND ($enctable['encodingID'] == $encid)) { | ||
555 | $offset = $table['cmap']['offset'] + $enctable['offset']; | ||
556 | $format = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
557 | $offset += 2; | ||
558 | switch ($format) { | ||
559 | case 0: { // Format 0: Byte encoding table | ||
560 | $offset += 4; // skip length and version/language | ||
561 | for ($c = 0; $c < 256; ++$c) { | ||
562 | $g = TCPDF_STATIC::_getBYTE($font, $offset); | ||
563 | $ctg[$c] = $g; | ||
564 | ++$offset; | ||
565 | } | ||
566 | break; | ||
567 | } | ||
568 | case 2: { // Format 2: High-byte mapping through table | ||
569 | $offset += 4; // skip length and version/language | ||
570 | $numSubHeaders = 0; | ||
571 | for ($i = 0; $i < 256; ++$i) { | ||
572 | // Array that maps high bytes to subHeaders: value is subHeader index * 8. | ||
573 | $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8); | ||
574 | $offset += 2; | ||
575 | if ($numSubHeaders < $subHeaderKeys[$i]) { | ||
576 | $numSubHeaders = $subHeaderKeys[$i]; | ||
577 | } | ||
578 | } | ||
579 | // the number of subHeaders is equal to the max of subHeaderKeys + 1 | ||
580 | ++$numSubHeaders; | ||
581 | // read subHeader structures | ||
582 | $subHeaders = array(); | ||
583 | $numGlyphIndexArray = 0; | ||
584 | for ($k = 0; $k < $numSubHeaders; ++$k) { | ||
585 | $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
586 | $offset += 2; | ||
587 | $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
588 | $offset += 2; | ||
589 | $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
590 | $offset += 2; | ||
591 | $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
592 | $offset += 2; | ||
593 | $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8)); | ||
594 | $subHeaders[$k]['idRangeOffset'] /= 2; | ||
595 | $numGlyphIndexArray += $subHeaders[$k]['entryCount']; | ||
596 | } | ||
597 | for ($k = 0; $k < $numGlyphIndexArray; ++$k) { | ||
598 | $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
599 | $offset += 2; | ||
600 | } | ||
601 | for ($i = 0; $i < 256; ++$i) { | ||
602 | $k = $subHeaderKeys[$i]; | ||
603 | if ($k == 0) { | ||
604 | // one byte code | ||
605 | $c = $i; | ||
606 | $g = $glyphIndexArray[0]; | ||
607 | $ctg[$c] = $g; | ||
608 | } else { | ||
609 | // two bytes code | ||
610 | $start_byte = $subHeaders[$k]['firstCode']; | ||
611 | $end_byte = $start_byte + $subHeaders[$k]['entryCount']; | ||
612 | for ($j = $start_byte; $j < $end_byte; ++$j) { | ||
613 | // combine high and low bytes | ||
614 | $c = (($i << 8) + $j); | ||
615 | $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']); | ||
616 | $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536; | ||
617 | if ($g < 0) { | ||
618 | $g = 0; | ||
619 | } | ||
620 | $ctg[$c] = $g; | ||
621 | } | ||
622 | } | ||
623 | } | ||
624 | break; | ||
625 | } | ||
626 | case 4: { // Format 4: Segment mapping to delta values | ||
627 | $length = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
628 | $offset += 2; | ||
629 | $offset += 2; // skip version/language | ||
630 | $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2); | ||
631 | $offset += 2; | ||
632 | $offset += 6; // skip searchRange, entrySelector, rangeShift | ||
633 | $endCount = array(); // array of end character codes for each segment | ||
634 | for ($k = 0; $k < $segCount; ++$k) { | ||
635 | $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
636 | $offset += 2; | ||
637 | } | ||
638 | $offset += 2; // skip reservedPad | ||
639 | $startCount = array(); // array of start character codes for each segment | ||
640 | for ($k = 0; $k < $segCount; ++$k) { | ||
641 | $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
642 | $offset += 2; | ||
643 | } | ||
644 | $idDelta = array(); // delta for all character codes in segment | ||
645 | for ($k = 0; $k < $segCount; ++$k) { | ||
646 | $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
647 | $offset += 2; | ||
648 | } | ||
649 | $idRangeOffset = array(); // Offsets into glyphIdArray or 0 | ||
650 | for ($k = 0; $k < $segCount; ++$k) { | ||
651 | $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
652 | $offset += 2; | ||
653 | } | ||
654 | $gidlen = (floor($length / 2) - 8 - (4 * $segCount)); | ||
655 | $glyphIdArray = array(); // glyph index array | ||
656 | for ($k = 0; $k < $gidlen; ++$k) { | ||
657 | $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
658 | $offset += 2; | ||
659 | } | ||
660 | for ($k = 0; $k < $segCount; ++$k) { | ||
661 | for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) { | ||
662 | if ($idRangeOffset[$k] == 0) { | ||
663 | $g = ($idDelta[$k] + $c) % 65536; | ||
664 | } else { | ||
665 | $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k)); | ||
666 | $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536; | ||
667 | } | ||
668 | if ($g < 0) { | ||
669 | $g = 0; | ||
670 | } | ||
671 | $ctg[$c] = $g; | ||
672 | } | ||
673 | } | ||
674 | break; | ||
675 | } | ||
676 | case 6: { // Format 6: Trimmed table mapping | ||
677 | $offset += 4; // skip length and version/language | ||
678 | $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
679 | $offset += 2; | ||
680 | $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
681 | $offset += 2; | ||
682 | for ($k = 0; $k < $entryCount; ++$k) { | ||
683 | $c = ($k + $firstCode); | ||
684 | $g = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
685 | $offset += 2; | ||
686 | $ctg[$c] = $g; | ||
687 | } | ||
688 | break; | ||
689 | } | ||
690 | case 8: { // Format 8: Mixed 16-bit and 32-bit coverage | ||
691 | $offset += 10; // skip reserved, length and version/language | ||
692 | for ($k = 0; $k < 8192; ++$k) { | ||
693 | $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset); | ||
694 | ++$offset; | ||
695 | } | ||
696 | $nGroups = TCPDF_STATIC::_getULONG($font, $offset); | ||
697 | $offset += 4; | ||
698 | for ($i = 0; $i < $nGroups; ++$i) { | ||
699 | $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
700 | $offset += 4; | ||
701 | $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
702 | $offset += 4; | ||
703 | $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset); | ||
704 | $offset += 4; | ||
705 | for ($k = $startCharCode; $k <= $endCharCode; ++$k) { | ||
706 | $is32idx = floor($c / 8); | ||
707 | if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) { | ||
708 | $c = $k; | ||
709 | } else { | ||
710 | // 32 bit format | ||
711 | // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4) | ||
712 | //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232 | ||
713 | //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888 | ||
714 | $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888; | ||
715 | } | ||
716 | $ctg[$c] = 0; | ||
717 | ++$startGlyphID; | ||
718 | } | ||
719 | } | ||
720 | break; | ||
721 | } | ||
722 | case 10: { // Format 10: Trimmed array | ||
723 | $offset += 10; // skip reserved, length and version/language | ||
724 | $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
725 | $offset += 4; | ||
726 | $numChars = TCPDF_STATIC::_getULONG($font, $offset); | ||
727 | $offset += 4; | ||
728 | for ($k = 0; $k < $numChars; ++$k) { | ||
729 | $c = ($k + $startCharCode); | ||
730 | $g = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
731 | $ctg[$c] = $g; | ||
732 | $offset += 2; | ||
733 | } | ||
734 | break; | ||
735 | } | ||
736 | case 12: { // Format 12: Segmented coverage | ||
737 | $offset += 10; // skip length and version/language | ||
738 | $nGroups = TCPDF_STATIC::_getULONG($font, $offset); | ||
739 | $offset += 4; | ||
740 | for ($k = 0; $k < $nGroups; ++$k) { | ||
741 | $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
742 | $offset += 4; | ||
743 | $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
744 | $offset += 4; | ||
745 | $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
746 | $offset += 4; | ||
747 | for ($c = $startCharCode; $c <= $endCharCode; ++$c) { | ||
748 | $ctg[$c] = $startGlyphCode; | ||
749 | ++$startGlyphCode; | ||
750 | } | ||
751 | } | ||
752 | break; | ||
753 | } | ||
754 | case 13: { // Format 13: Many-to-one range mappings | ||
755 | // to be implemented ... | ||
756 | break; | ||
757 | } | ||
758 | case 14: { // Format 14: Unicode Variation Sequences | ||
759 | // to be implemented ... | ||
760 | break; | ||
761 | } | ||
762 | } | ||
763 | } | ||
764 | } | ||
765 | if (!isset($ctg[0])) { | ||
766 | $ctg[0] = 0; | ||
767 | } | ||
768 | // get xHeight (height of x) | ||
769 | $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[120]] + 4); | ||
770 | $yMin = TCPDF_STATIC::_getFWORD($font, $offset); | ||
771 | $offset += 4; | ||
772 | $yMax = TCPDF_STATIC::_getFWORD($font, $offset); | ||
773 | $offset += 2; | ||
774 | $fmetric['XHeight'] = round(($yMax - $yMin) * $urk); | ||
775 | // get CapHeight (height of H) | ||
776 | $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[72]] + 4); | ||
777 | $yMin = TCPDF_STATIC::_getFWORD($font, $offset); | ||
778 | $offset += 4; | ||
779 | $yMax = TCPDF_STATIC::_getFWORD($font, $offset); | ||
780 | $offset += 2; | ||
781 | $fmetric['CapHeight'] = round(($yMax - $yMin) * $urk); | ||
782 | // ceate widths array | ||
783 | $cw = array(); | ||
784 | $offset = $table['hmtx']['offset']; | ||
785 | for ($i = 0 ; $i < $numberOfHMetrics; ++$i) { | ||
786 | $cw[$i] = round(TCPDF_STATIC::_getUFWORD($font, $offset) * $urk); | ||
787 | $offset += 4; // skip lsb | ||
788 | } | ||
789 | if ($numberOfHMetrics < $numGlyphs) { | ||
790 | // fill missing widths with the last value | ||
791 | $cw = array_pad($cw, $numGlyphs, $cw[($numberOfHMetrics - 1)]); | ||
792 | } | ||
793 | $fmetric['MissingWidth'] = $cw[0]; | ||
794 | $fmetric['cw'] = ''; | ||
795 | $fmetric['cbbox'] = ''; | ||
796 | for ($cid = 0; $cid <= 65535; ++$cid) { | ||
797 | if (isset($ctg[$cid])) { | ||
798 | if (isset($cw[$ctg[$cid]])) { | ||
799 | $fmetric['cw'] .= ','.$cid.'=>'.$cw[$ctg[$cid]]; | ||
800 | } | ||
801 | if ($addcbbox AND isset($indexToLoc[$ctg[$cid]])) { | ||
802 | $offset = ($table['glyf']['offset'] + $indexToLoc[$ctg[$cid]]); | ||
803 | $xMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 2) * $urk); | ||
804 | $yMin = round(TCPDF_STATIC::_getFWORD($font, $offset + 4) * $urk); | ||
805 | $xMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 6) * $urk); | ||
806 | $yMax = round(TCPDF_STATIC::_getFWORD($font, $offset + 8) * $urk); | ||
807 | $fmetric['cbbox'] .= ','.$cid.'=>array('.$xMin.','.$yMin.','.$xMax.','.$yMax.')'; | ||
808 | } | ||
809 | } | ||
810 | } | ||
811 | } // end of true type | ||
812 | if (($fmetric['type'] == 'TrueTypeUnicode') AND (count($ctg) == 256)) { | ||
813 | $fmetric['type'] = 'TrueType'; | ||
814 | } | ||
815 | // ---------- create php font file ---------- | ||
816 | $pfile = '<'.'?'.'php'."\n"; | ||
817 | $pfile .= '// TCPDF FONT FILE DESCRIPTION'."\n"; | ||
818 | $pfile .= '$type=\''.$fmetric['type'].'\';'."\n"; | ||
819 | $pfile .= '$name=\''.$fmetric['name'].'\';'."\n"; | ||
820 | $pfile .= '$up='.$fmetric['underlinePosition'].';'."\n"; | ||
821 | $pfile .= '$ut='.$fmetric['underlineThickness'].';'."\n"; | ||
822 | if ($fmetric['MissingWidth'] > 0) { | ||
823 | $pfile .= '$dw='.$fmetric['MissingWidth'].';'."\n"; | ||
824 | } else { | ||
825 | $pfile .= '$dw='.$fmetric['AvgWidth'].';'."\n"; | ||
826 | } | ||
827 | $pfile .= '$diff=\''.$fmetric['diff'].'\';'."\n"; | ||
828 | if ($fmetric['type'] == 'Type1') { | ||
829 | // Type 1 | ||
830 | $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n"; | ||
831 | $pfile .= '$file=\''.$fmetric['file'].'\';'."\n"; | ||
832 | $pfile .= '$size1='.$fmetric['size1'].';'."\n"; | ||
833 | $pfile .= '$size2='.$fmetric['size2'].';'."\n"; | ||
834 | } else { | ||
835 | $pfile .= '$originalsize='.$fmetric['originalsize'].';'."\n"; | ||
836 | if ($fmetric['type'] == 'cidfont0') { | ||
837 | // CID-0 | ||
838 | switch ($fonttype) { | ||
839 | case 'CID0JP': { | ||
840 | $pfile .= '// Japanese'."\n"; | ||
841 | $pfile .= '$enc=\'UniJIS-UTF16-H\';'."\n"; | ||
842 | $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Japan1\',\'Supplement\'=>5);'."\n"; | ||
843 | $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n"; | ||
844 | break; | ||
845 | } | ||
846 | case 'CID0KR': { | ||
847 | $pfile .= '// Korean'."\n"; | ||
848 | $pfile .= '$enc=\'UniKS-UTF16-H\';'."\n"; | ||
849 | $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Korea1\',\'Supplement\'=>0);'."\n"; | ||
850 | $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ak12.php\');'."\n"; | ||
851 | break; | ||
852 | } | ||
853 | case 'CID0CS': { | ||
854 | $pfile .= '// Chinese Simplified'."\n"; | ||
855 | $pfile .= '$enc=\'UniGB-UTF16-H\';'."\n"; | ||
856 | $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'GB1\',\'Supplement\'=>2);'."\n"; | ||
857 | $pfile .= 'include(dirname(__FILE__).\'/uni2cid_ag15.php\');'."\n"; | ||
858 | break; | ||
859 | } | ||
860 | case 'CID0CT': | ||
861 | default: { | ||
862 | $pfile .= '// Chinese Traditional'."\n"; | ||
863 | $pfile .= '$enc=\'UniCNS-UTF16-H\';'."\n"; | ||
864 | $pfile .= '$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'CNS1\',\'Supplement\'=>0);'."\n"; | ||
865 | $pfile .= 'include(dirname(__FILE__).\'/uni2cid_aj16.php\');'."\n"; | ||
866 | break; | ||
867 | } | ||
868 | } | ||
869 | } else { | ||
870 | // TrueType | ||
871 | $pfile .= '$enc=\''.$fmetric['enc'].'\';'."\n"; | ||
872 | $pfile .= '$file=\''.$fmetric['file'].'\';'."\n"; | ||
873 | $pfile .= '$ctg=\''.$fmetric['ctg'].'\';'."\n"; | ||
874 | // create CIDToGIDMap | ||
875 | $cidtogidmap = str_pad('', 131072, "\x00"); // (256 * 256 * 2) = 131072 | ||
876 | foreach ($ctg as $cid => $gid) { | ||
877 | $cidtogidmap = self::updateCIDtoGIDmap($cidtogidmap, $cid, $ctg[$cid]); | ||
878 | } | ||
879 | // store compressed CIDToGIDMap | ||
880 | $fp = fopen($outpath.$fmetric['ctg'], 'wb'); | ||
881 | fwrite($fp, gzcompress($cidtogidmap)); | ||
882 | fclose($fp); | ||
883 | } | ||
884 | } | ||
885 | $pfile .= '$desc=array('; | ||
886 | $pfile .= '\'Flags\'=>'.$fmetric['Flags'].','; | ||
887 | $pfile .= '\'FontBBox\'=>\'['.$fmetric['bbox'].']\','; | ||
888 | $pfile .= '\'ItalicAngle\'=>'.$fmetric['italicAngle'].','; | ||
889 | $pfile .= '\'Ascent\'=>'.$fmetric['Ascent'].','; | ||
890 | $pfile .= '\'Descent\'=>'.$fmetric['Descent'].','; | ||
891 | $pfile .= '\'Leading\'=>'.$fmetric['Leading'].','; | ||
892 | $pfile .= '\'CapHeight\'=>'.$fmetric['CapHeight'].','; | ||
893 | $pfile .= '\'XHeight\'=>'.$fmetric['XHeight'].','; | ||
894 | $pfile .= '\'StemV\'=>'.$fmetric['StemV'].','; | ||
895 | $pfile .= '\'StemH\'=>'.$fmetric['StemH'].','; | ||
896 | $pfile .= '\'AvgWidth\'=>'.$fmetric['AvgWidth'].','; | ||
897 | $pfile .= '\'MaxWidth\'=>'.$fmetric['MaxWidth'].','; | ||
898 | $pfile .= '\'MissingWidth\'=>'.$fmetric['MissingWidth'].''; | ||
899 | $pfile .= ');'."\n"; | ||
900 | if (!empty($fmetric['cbbox'])) { | ||
901 | $pfile .= '$cbbox=array('.substr($fmetric['cbbox'], 1).');'."\n"; | ||
902 | } | ||
903 | $pfile .= '$cw=array('.substr($fmetric['cw'], 1).');'."\n"; | ||
904 | $pfile .= '// --- EOF ---'."\n"; | ||
905 | // store file | ||
906 | $fp = fopen($outpath.$font_name.'.php', 'w'); | ||
907 | fwrite($fp, $pfile); | ||
908 | fclose($fp); | ||
909 | // return TCPDF font name | ||
910 | return $font_name; | ||
911 | } | ||
912 | |||
913 | /** | ||
914 | * Returs the checksum of a TTF table. | ||
915 | * @param $table (string) table to check | ||
916 | * @param $length (int) length of table in bytes | ||
917 | * @return int checksum | ||
918 | * @author Nicola Asuni | ||
919 | * @since 5.2.000 (2010-06-02) | ||
920 | * @public static | ||
921 | */ | ||
922 | public static function _getTTFtableChecksum($table, $length) { | ||
923 | $sum = 0; | ||
924 | $tlen = ($length / 4); | ||
925 | $offset = 0; | ||
926 | for ($i = 0; $i < $tlen; ++$i) { | ||
927 | $v = unpack('Ni', substr($table, $offset, 4)); | ||
928 | $sum += $v['i']; | ||
929 | $offset += 4; | ||
930 | } | ||
931 | $sum = unpack('Ni', pack('N', $sum)); | ||
932 | return $sum['i']; | ||
933 | } | ||
934 | |||
935 | /** | ||
936 | * Returns a subset of the TrueType font data without the unused glyphs. | ||
937 | * @param $font (string) TrueType font data. | ||
938 | * @param $subsetchars (array) Array of used characters (the glyphs to keep). | ||
939 | * @return (string) A subset of TrueType font data without the unused glyphs. | ||
940 | * @author Nicola Asuni | ||
941 | * @since 5.2.000 (2010-06-02) | ||
942 | * @public static | ||
943 | */ | ||
944 | public static function _getTrueTypeFontSubset($font, $subsetchars) { | ||
945 | ksort($subsetchars); | ||
946 | $offset = 0; // offset position of the font data | ||
947 | if (TCPDF_STATIC::_getULONG($font, $offset) != 0x10000) { | ||
948 | // sfnt version must be 0x00010000 for TrueType version 1.0. | ||
949 | return $font; | ||
950 | } | ||
951 | $offset += 4; | ||
952 | // get number of tables | ||
953 | $numTables = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
954 | $offset += 2; | ||
955 | // skip searchRange, entrySelector and rangeShift | ||
956 | $offset += 6; | ||
957 | // tables array | ||
958 | $table = array(); | ||
959 | // for each table | ||
960 | for ($i = 0; $i < $numTables; ++$i) { | ||
961 | // get table info | ||
962 | $tag = substr($font, $offset, 4); | ||
963 | $offset += 4; | ||
964 | $table[$tag] = array(); | ||
965 | $table[$tag]['checkSum'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
966 | $offset += 4; | ||
967 | $table[$tag]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
968 | $offset += 4; | ||
969 | $table[$tag]['length'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
970 | $offset += 4; | ||
971 | } | ||
972 | // check magicNumber | ||
973 | $offset = $table['head']['offset'] + 12; | ||
974 | if (TCPDF_STATIC::_getULONG($font, $offset) != 0x5F0F3CF5) { | ||
975 | // magicNumber must be 0x5F0F3CF5 | ||
976 | return $font; | ||
977 | } | ||
978 | $offset += 4; | ||
979 | // get offset mode (indexToLocFormat : 0 = short, 1 = long) | ||
980 | $offset = $table['head']['offset'] + 50; | ||
981 | $short_offset = (TCPDF_STATIC::_getSHORT($font, $offset) == 0); | ||
982 | $offset += 2; | ||
983 | // get the offsets to the locations of the glyphs in the font, relative to the beginning of the glyphData table | ||
984 | $indexToLoc = array(); | ||
985 | $offset = $table['loca']['offset']; | ||
986 | if ($short_offset) { | ||
987 | // short version | ||
988 | $tot_num_glyphs = floor($table['loca']['length'] / 2); // numGlyphs + 1 | ||
989 | for ($i = 0; $i < $tot_num_glyphs; ++$i) { | ||
990 | $indexToLoc[$i] = TCPDF_STATIC::_getUSHORT($font, $offset) * 2; | ||
991 | $offset += 2; | ||
992 | } | ||
993 | } else { | ||
994 | // long version | ||
995 | $tot_num_glyphs = ($table['loca']['length'] / 4); // numGlyphs + 1 | ||
996 | for ($i = 0; $i < $tot_num_glyphs; ++$i) { | ||
997 | $indexToLoc[$i] = TCPDF_STATIC::_getULONG($font, $offset); | ||
998 | $offset += 4; | ||
999 | } | ||
1000 | } | ||
1001 | // get glyphs indexes of chars from cmap table | ||
1002 | $subsetglyphs = array(); // glyph IDs on key | ||
1003 | $subsetglyphs[0] = true; // character codes that do not correspond to any glyph in the font should be mapped to glyph index 0 | ||
1004 | $offset = $table['cmap']['offset'] + 2; | ||
1005 | $numEncodingTables = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1006 | $offset += 2; | ||
1007 | $encodingTables = array(); | ||
1008 | for ($i = 0; $i < $numEncodingTables; ++$i) { | ||
1009 | $encodingTables[$i]['platformID'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1010 | $offset += 2; | ||
1011 | $encodingTables[$i]['encodingID'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1012 | $offset += 2; | ||
1013 | $encodingTables[$i]['offset'] = TCPDF_STATIC::_getULONG($font, $offset); | ||
1014 | $offset += 4; | ||
1015 | } | ||
1016 | foreach ($encodingTables as $enctable) { | ||
1017 | // get all platforms and encodings | ||
1018 | $offset = $table['cmap']['offset'] + $enctable['offset']; | ||
1019 | $format = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1020 | $offset += 2; | ||
1021 | switch ($format) { | ||
1022 | case 0: { // Format 0: Byte encoding table | ||
1023 | $offset += 4; // skip length and version/language | ||
1024 | for ($c = 0; $c < 256; ++$c) { | ||
1025 | if (isset($subsetchars[$c])) { | ||
1026 | $g = TCPDF_STATIC::_getBYTE($font, $offset); | ||
1027 | $subsetglyphs[$g] = true; | ||
1028 | } | ||
1029 | ++$offset; | ||
1030 | } | ||
1031 | break; | ||
1032 | } | ||
1033 | case 2: { // Format 2: High-byte mapping through table | ||
1034 | $offset += 4; // skip length and version/language | ||
1035 | $numSubHeaders = 0; | ||
1036 | for ($i = 0; $i < 256; ++$i) { | ||
1037 | // Array that maps high bytes to subHeaders: value is subHeader index * 8. | ||
1038 | $subHeaderKeys[$i] = (TCPDF_STATIC::_getUSHORT($font, $offset) / 8); | ||
1039 | $offset += 2; | ||
1040 | if ($numSubHeaders < $subHeaderKeys[$i]) { | ||
1041 | $numSubHeaders = $subHeaderKeys[$i]; | ||
1042 | } | ||
1043 | } | ||
1044 | // the number of subHeaders is equal to the max of subHeaderKeys + 1 | ||
1045 | ++$numSubHeaders; | ||
1046 | // read subHeader structures | ||
1047 | $subHeaders = array(); | ||
1048 | $numGlyphIndexArray = 0; | ||
1049 | for ($k = 0; $k < $numSubHeaders; ++$k) { | ||
1050 | $subHeaders[$k]['firstCode'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1051 | $offset += 2; | ||
1052 | $subHeaders[$k]['entryCount'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1053 | $offset += 2; | ||
1054 | $subHeaders[$k]['idDelta'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1055 | $offset += 2; | ||
1056 | $subHeaders[$k]['idRangeOffset'] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1057 | $offset += 2; | ||
1058 | $subHeaders[$k]['idRangeOffset'] -= (2 + (($numSubHeaders - $k - 1) * 8)); | ||
1059 | $subHeaders[$k]['idRangeOffset'] /= 2; | ||
1060 | $numGlyphIndexArray += $subHeaders[$k]['entryCount']; | ||
1061 | } | ||
1062 | for ($k = 0; $k < $numGlyphIndexArray; ++$k) { | ||
1063 | $glyphIndexArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1064 | $offset += 2; | ||
1065 | } | ||
1066 | for ($i = 0; $i < 256; ++$i) { | ||
1067 | $k = $subHeaderKeys[$i]; | ||
1068 | if ($k == 0) { | ||
1069 | // one byte code | ||
1070 | $c = $i; | ||
1071 | if (isset($subsetchars[$c])) { | ||
1072 | $g = $glyphIndexArray[0]; | ||
1073 | $subsetglyphs[$g] = true; | ||
1074 | } | ||
1075 | } else { | ||
1076 | // two bytes code | ||
1077 | $start_byte = $subHeaders[$k]['firstCode']; | ||
1078 | $end_byte = $start_byte + $subHeaders[$k]['entryCount']; | ||
1079 | for ($j = $start_byte; $j < $end_byte; ++$j) { | ||
1080 | // combine high and low bytes | ||
1081 | $c = (($i << 8) + $j); | ||
1082 | if (isset($subsetchars[$c])) { | ||
1083 | $idRangeOffset = ($subHeaders[$k]['idRangeOffset'] + $j - $subHeaders[$k]['firstCode']); | ||
1084 | $g = ($glyphIndexArray[$idRangeOffset] + $subHeaders[$k]['idDelta']) % 65536; | ||
1085 | if ($g < 0) { | ||
1086 | $g = 0; | ||
1087 | } | ||
1088 | $subsetglyphs[$g] = true; | ||
1089 | } | ||
1090 | } | ||
1091 | } | ||
1092 | } | ||
1093 | break; | ||
1094 | } | ||
1095 | case 4: { // Format 4: Segment mapping to delta values | ||
1096 | $length = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1097 | $offset += 2; | ||
1098 | $offset += 2; // skip version/language | ||
1099 | $segCount = floor(TCPDF_STATIC::_getUSHORT($font, $offset) / 2); | ||
1100 | $offset += 2; | ||
1101 | $offset += 6; // skip searchRange, entrySelector, rangeShift | ||
1102 | $endCount = array(); // array of end character codes for each segment | ||
1103 | for ($k = 0; $k < $segCount; ++$k) { | ||
1104 | $endCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1105 | $offset += 2; | ||
1106 | } | ||
1107 | $offset += 2; // skip reservedPad | ||
1108 | $startCount = array(); // array of start character codes for each segment | ||
1109 | for ($k = 0; $k < $segCount; ++$k) { | ||
1110 | $startCount[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1111 | $offset += 2; | ||
1112 | } | ||
1113 | $idDelta = array(); // delta for all character codes in segment | ||
1114 | for ($k = 0; $k < $segCount; ++$k) { | ||
1115 | $idDelta[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1116 | $offset += 2; | ||
1117 | } | ||
1118 | $idRangeOffset = array(); // Offsets into glyphIdArray or 0 | ||
1119 | for ($k = 0; $k < $segCount; ++$k) { | ||
1120 | $idRangeOffset[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1121 | $offset += 2; | ||
1122 | } | ||
1123 | $gidlen = (floor($length / 2) - 8 - (4 * $segCount)); | ||
1124 | $glyphIdArray = array(); // glyph index array | ||
1125 | for ($k = 0; $k < $gidlen; ++$k) { | ||
1126 | $glyphIdArray[$k] = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1127 | $offset += 2; | ||
1128 | } | ||
1129 | for ($k = 0; $k < $segCount; ++$k) { | ||
1130 | for ($c = $startCount[$k]; $c <= $endCount[$k]; ++$c) { | ||
1131 | if (isset($subsetchars[$c])) { | ||
1132 | if ($idRangeOffset[$k] == 0) { | ||
1133 | $g = ($idDelta[$k] + $c) % 65536; | ||
1134 | } else { | ||
1135 | $gid = (floor($idRangeOffset[$k] / 2) + ($c - $startCount[$k]) - ($segCount - $k)); | ||
1136 | $g = ($glyphIdArray[$gid] + $idDelta[$k]) % 65536; | ||
1137 | } | ||
1138 | if ($g < 0) { | ||
1139 | $g = 0; | ||
1140 | } | ||
1141 | $subsetglyphs[$g] = true; | ||
1142 | } | ||
1143 | } | ||
1144 | } | ||
1145 | break; | ||
1146 | } | ||
1147 | case 6: { // Format 6: Trimmed table mapping | ||
1148 | $offset += 4; // skip length and version/language | ||
1149 | $firstCode = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1150 | $offset += 2; | ||
1151 | $entryCount = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1152 | $offset += 2; | ||
1153 | for ($k = 0; $k < $entryCount; ++$k) { | ||
1154 | $c = ($k + $firstCode); | ||
1155 | if (isset($subsetchars[$c])) { | ||
1156 | $g = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1157 | $subsetglyphs[$g] = true; | ||
1158 | } | ||
1159 | $offset += 2; | ||
1160 | } | ||
1161 | break; | ||
1162 | } | ||
1163 | case 8: { // Format 8: Mixed 16-bit and 32-bit coverage | ||
1164 | $offset += 10; // skip reserved, length and version/language | ||
1165 | for ($k = 0; $k < 8192; ++$k) { | ||
1166 | $is32[$k] = TCPDF_STATIC::_getBYTE($font, $offset); | ||
1167 | ++$offset; | ||
1168 | } | ||
1169 | $nGroups = TCPDF_STATIC::_getULONG($font, $offset); | ||
1170 | $offset += 4; | ||
1171 | for ($i = 0; $i < $nGroups; ++$i) { | ||
1172 | $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
1173 | $offset += 4; | ||
1174 | $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
1175 | $offset += 4; | ||
1176 | $startGlyphID = TCPDF_STATIC::_getULONG($font, $offset); | ||
1177 | $offset += 4; | ||
1178 | for ($k = $startCharCode; $k <= $endCharCode; ++$k) { | ||
1179 | $is32idx = floor($c / 8); | ||
1180 | if ((isset($is32[$is32idx])) AND (($is32[$is32idx] & (1 << (7 - ($c % 8)))) == 0)) { | ||
1181 | $c = $k; | ||
1182 | } else { | ||
1183 | // 32 bit format | ||
1184 | // convert to decimal (http://www.unicode.org/faq//utf_bom.html#utf16-4) | ||
1185 | //LEAD_OFFSET = (0xD800 - (0x10000 >> 10)) = 55232 | ||
1186 | //SURROGATE_OFFSET = (0x10000 - (0xD800 << 10) - 0xDC00) = -56613888 | ||
1187 | $c = ((55232 + ($k >> 10)) << 10) + (0xDC00 + ($k & 0x3FF)) -56613888; | ||
1188 | } | ||
1189 | if (isset($subsetchars[$c])) { | ||
1190 | $subsetglyphs[$startGlyphID] = true; | ||
1191 | } | ||
1192 | ++$startGlyphID; | ||
1193 | } | ||
1194 | } | ||
1195 | break; | ||
1196 | } | ||
1197 | case 10: { // Format 10: Trimmed array | ||
1198 | $offset += 10; // skip reserved, length and version/language | ||
1199 | $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
1200 | $offset += 4; | ||
1201 | $numChars = TCPDF_STATIC::_getULONG($font, $offset); | ||
1202 | $offset += 4; | ||
1203 | for ($k = 0; $k < $numChars; ++$k) { | ||
1204 | $c = ($k + $startCharCode); | ||
1205 | if (isset($subsetchars[$c])) { | ||
1206 | $g = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1207 | $subsetglyphs[$g] = true; | ||
1208 | } | ||
1209 | $offset += 2; | ||
1210 | } | ||
1211 | break; | ||
1212 | } | ||
1213 | case 12: { // Format 12: Segmented coverage | ||
1214 | $offset += 10; // skip length and version/language | ||
1215 | $nGroups = TCPDF_STATIC::_getULONG($font, $offset); | ||
1216 | $offset += 4; | ||
1217 | for ($k = 0; $k < $nGroups; ++$k) { | ||
1218 | $startCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
1219 | $offset += 4; | ||
1220 | $endCharCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
1221 | $offset += 4; | ||
1222 | $startGlyphCode = TCPDF_STATIC::_getULONG($font, $offset); | ||
1223 | $offset += 4; | ||
1224 | for ($c = $startCharCode; $c <= $endCharCode; ++$c) { | ||
1225 | if (isset($subsetchars[$c])) { | ||
1226 | $subsetglyphs[$startGlyphCode] = true; | ||
1227 | } | ||
1228 | ++$startGlyphCode; | ||
1229 | } | ||
1230 | } | ||
1231 | break; | ||
1232 | } | ||
1233 | case 13: { // Format 13: Many-to-one range mappings | ||
1234 | // to be implemented ... | ||
1235 | break; | ||
1236 | } | ||
1237 | case 14: { // Format 14: Unicode Variation Sequences | ||
1238 | // to be implemented ... | ||
1239 | break; | ||
1240 | } | ||
1241 | } | ||
1242 | } | ||
1243 | // include all parts of composite glyphs | ||
1244 | $new_sga = $subsetglyphs; | ||
1245 | while (!empty($new_sga)) { | ||
1246 | $sga = $new_sga; | ||
1247 | $new_sga = array(); | ||
1248 | foreach ($sga as $key => $val) { | ||
1249 | if (isset($indexToLoc[$key])) { | ||
1250 | $offset = ($table['glyf']['offset'] + $indexToLoc[$key]); | ||
1251 | $numberOfContours = TCPDF_STATIC::_getSHORT($font, $offset); | ||
1252 | $offset += 2; | ||
1253 | if ($numberOfContours < 0) { // composite glyph | ||
1254 | $offset += 8; // skip xMin, yMin, xMax, yMax | ||
1255 | do { | ||
1256 | $flags = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1257 | $offset += 2; | ||
1258 | $glyphIndex = TCPDF_STATIC::_getUSHORT($font, $offset); | ||
1259 | $offset += 2; | ||
1260 | if (!isset($subsetglyphs[$glyphIndex])) { | ||
1261 | // add missing glyphs | ||
1262 | $new_sga[$glyphIndex] = true; | ||
1263 | } | ||
1264 | // skip some bytes by case | ||
1265 | if ($flags & 1) { | ||
1266 | $offset += 4; | ||
1267 | } else { | ||
1268 | $offset += 2; | ||
1269 | } | ||
1270 | if ($flags & 8) { | ||
1271 | $offset += 2; | ||
1272 | } elseif ($flags & 64) { | ||
1273 | $offset += 4; | ||
1274 | } elseif ($flags & 128) { | ||
1275 | $offset += 8; | ||
1276 | } | ||
1277 | } while ($flags & 32); | ||
1278 | } | ||
1279 | } | ||
1280 | } | ||
1281 | $subsetglyphs += $new_sga; | ||
1282 | } | ||
1283 | // sort glyphs by key (and remove duplicates) | ||
1284 | ksort($subsetglyphs); | ||
1285 | // build new glyf and loca tables | ||
1286 | $glyf = ''; | ||
1287 | $loca = ''; | ||
1288 | $offset = 0; | ||
1289 | $glyf_offset = $table['glyf']['offset']; | ||
1290 | for ($i = 0; $i < $tot_num_glyphs; ++$i) { | ||
1291 | if (isset($subsetglyphs[$i])) { | ||
1292 | $length = ($indexToLoc[($i + 1)] - $indexToLoc[$i]); | ||
1293 | $glyf .= substr($font, ($glyf_offset + $indexToLoc[$i]), $length); | ||
1294 | } else { | ||
1295 | $length = 0; | ||
1296 | } | ||
1297 | if ($short_offset) { | ||
1298 | $loca .= pack('n', floor($offset / 2)); | ||
1299 | } else { | ||
1300 | $loca .= pack('N', $offset); | ||
1301 | } | ||
1302 | $offset += $length; | ||
1303 | } | ||
1304 | // array of table names to preserve (loca and glyf tables will be added later) | ||
1305 | // the cmap table is not needed and shall not be present, since the mapping from character codes to glyph descriptions is provided separately | ||
1306 | $table_names = array ('head', 'hhea', 'hmtx', 'maxp', 'cvt ', 'fpgm', 'prep'); // minimum required table names | ||
1307 | // get the tables to preserve | ||
1308 | $offset = 12; | ||
1309 | foreach ($table as $tag => $val) { | ||
1310 | if (in_array($tag, $table_names)) { | ||
1311 | $table[$tag]['data'] = substr($font, $table[$tag]['offset'], $table[$tag]['length']); | ||
1312 | if ($tag == 'head') { | ||
1313 | // set the checkSumAdjustment to 0 | ||
1314 | $table[$tag]['data'] = substr($table[$tag]['data'], 0, 8)."\x0\x0\x0\x0".substr($table[$tag]['data'], 12); | ||
1315 | } | ||
1316 | $pad = 4 - ($table[$tag]['length'] % 4); | ||
1317 | if ($pad != 4) { | ||
1318 | // the length of a table must be a multiple of four bytes | ||
1319 | $table[$tag]['length'] += $pad; | ||
1320 | $table[$tag]['data'] .= str_repeat("\x0", $pad); | ||
1321 | } | ||
1322 | $table[$tag]['offset'] = $offset; | ||
1323 | $offset += $table[$tag]['length']; | ||
1324 | // check sum is not changed (so keep the following line commented) | ||
1325 | //$table[$tag]['checkSum'] = self::_getTTFtableChecksum($table[$tag]['data'], $table[$tag]['length']); | ||
1326 | } else { | ||
1327 | unset($table[$tag]); | ||
1328 | } | ||
1329 | } | ||
1330 | // add loca | ||
1331 | $table['loca']['data'] = $loca; | ||
1332 | $table['loca']['length'] = strlen($loca); | ||
1333 | $pad = 4 - ($table['loca']['length'] % 4); | ||
1334 | if ($pad != 4) { | ||
1335 | // the length of a table must be a multiple of four bytes | ||
1336 | $table['loca']['length'] += $pad; | ||
1337 | $table['loca']['data'] .= str_repeat("\x0", $pad); | ||
1338 | } | ||
1339 | $table['loca']['offset'] = $offset; | ||
1340 | $table['loca']['checkSum'] = self::_getTTFtableChecksum($table['loca']['data'], $table['loca']['length']); | ||
1341 | $offset += $table['loca']['length']; | ||
1342 | // add glyf | ||
1343 | $table['glyf']['data'] = $glyf; | ||
1344 | $table['glyf']['length'] = strlen($glyf); | ||
1345 | $pad = 4 - ($table['glyf']['length'] % 4); | ||
1346 | if ($pad != 4) { | ||
1347 | // the length of a table must be a multiple of four bytes | ||
1348 | $table['glyf']['length'] += $pad; | ||
1349 | $table['glyf']['data'] .= str_repeat("\x0", $pad); | ||
1350 | } | ||
1351 | $table['glyf']['offset'] = $offset; | ||
1352 | $table['glyf']['checkSum'] = self::_getTTFtableChecksum($table['glyf']['data'], $table['glyf']['length']); | ||
1353 | // rebuild font | ||
1354 | $font = ''; | ||
1355 | $font .= pack('N', 0x10000); // sfnt version | ||
1356 | $numTables = count($table); | ||
1357 | $font .= pack('n', $numTables); // numTables | ||
1358 | $entrySelector = floor(log($numTables, 2)); | ||
1359 | $searchRange = pow(2, $entrySelector) * 16; | ||
1360 | $rangeShift = ($numTables * 16) - $searchRange; | ||
1361 | $font .= pack('n', $searchRange); // searchRange | ||
1362 | $font .= pack('n', $entrySelector); // entrySelector | ||
1363 | $font .= pack('n', $rangeShift); // rangeShift | ||
1364 | $offset = ($numTables * 16); | ||
1365 | foreach ($table as $tag => $data) { | ||
1366 | $font .= $tag; // tag | ||
1367 | $font .= pack('N', $data['checkSum']); // checkSum | ||
1368 | $font .= pack('N', ($data['offset'] + $offset)); // offset | ||
1369 | $font .= pack('N', $data['length']); // length | ||
1370 | } | ||
1371 | foreach ($table as $data) { | ||
1372 | $font .= $data['data']; | ||
1373 | } | ||
1374 | // set checkSumAdjustment on head table | ||
1375 | $checkSumAdjustment = 0xB1B0AFBA - self::_getTTFtableChecksum($font, strlen($font)); | ||
1376 | $font = substr($font, 0, $table['head']['offset'] + 8).pack('N', $checkSumAdjustment).substr($font, $table['head']['offset'] + 12); | ||
1377 | return $font; | ||
1378 | } | ||
1379 | |||
1380 | /** | ||
1381 | * Outputs font widths | ||
1382 | * @param $font (array) font data | ||
1383 | * @param $cidoffset (int) offset for CID values | ||
1384 | * @return PDF command string for font widths | ||
1385 | * @author Nicola Asuni | ||
1386 | * @since 4.4.000 (2008-12-07) | ||
1387 | * @public static | ||
1388 | */ | ||
1389 | public static function _putfontwidths($font, $cidoffset=0) { | ||
1390 | ksort($font['cw']); | ||
1391 | $rangeid = 0; | ||
1392 | $range = array(); | ||
1393 | $prevcid = -2; | ||
1394 | $prevwidth = -1; | ||
1395 | $interval = false; | ||
1396 | // for each character | ||
1397 | foreach ($font['cw'] as $cid => $width) { | ||
1398 | $cid -= $cidoffset; | ||
1399 | if ($font['subset'] AND (!isset($font['subsetchars'][$cid]))) { | ||
1400 | // ignore the unused characters (font subsetting) | ||
1401 | continue; | ||
1402 | } | ||
1403 | if ($width != $font['dw']) { | ||
1404 | if ($cid == ($prevcid + 1)) { | ||
1405 | // consecutive CID | ||
1406 | if ($width == $prevwidth) { | ||
1407 | if ($width == $range[$rangeid][0]) { | ||
1408 | $range[$rangeid][] = $width; | ||
1409 | } else { | ||
1410 | array_pop($range[$rangeid]); | ||
1411 | // new range | ||
1412 | $rangeid = $prevcid; | ||
1413 | $range[$rangeid] = array(); | ||
1414 | $range[$rangeid][] = $prevwidth; | ||
1415 | $range[$rangeid][] = $width; | ||
1416 | } | ||
1417 | $interval = true; | ||
1418 | $range[$rangeid]['interval'] = true; | ||
1419 | } else { | ||
1420 | if ($interval) { | ||
1421 | // new range | ||
1422 | $rangeid = $cid; | ||
1423 | $range[$rangeid] = array(); | ||
1424 | $range[$rangeid][] = $width; | ||
1425 | } else { | ||
1426 | $range[$rangeid][] = $width; | ||
1427 | } | ||
1428 | $interval = false; | ||
1429 | } | ||
1430 | } else { | ||
1431 | // new range | ||
1432 | $rangeid = $cid; | ||
1433 | $range[$rangeid] = array(); | ||
1434 | $range[$rangeid][] = $width; | ||
1435 | $interval = false; | ||
1436 | } | ||
1437 | $prevcid = $cid; | ||
1438 | $prevwidth = $width; | ||
1439 | } | ||
1440 | } | ||
1441 | // optimize ranges | ||
1442 | $prevk = -1; | ||
1443 | $nextk = -1; | ||
1444 | $prevint = false; | ||
1445 | foreach ($range as $k => $ws) { | ||
1446 | $cws = count($ws); | ||
1447 | if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) { | ||
1448 | if (isset($range[$k]['interval'])) { | ||
1449 | unset($range[$k]['interval']); | ||
1450 | } | ||
1451 | $range[$prevk] = array_merge($range[$prevk], $range[$k]); | ||
1452 | unset($range[$k]); | ||
1453 | } else { | ||
1454 | $prevk = $k; | ||
1455 | } | ||
1456 | $nextk = $k + $cws; | ||
1457 | if (isset($ws['interval'])) { | ||
1458 | if ($cws > 3) { | ||
1459 | $prevint = true; | ||
1460 | } else { | ||
1461 | $prevint = false; | ||
1462 | } | ||
1463 | if (isset($range[$k]['interval'])) { | ||
1464 | unset($range[$k]['interval']); | ||
1465 | } | ||
1466 | --$nextk; | ||
1467 | } else { | ||
1468 | $prevint = false; | ||
1469 | } | ||
1470 | } | ||
1471 | // output data | ||
1472 | $w = ''; | ||
1473 | foreach ($range as $k => $ws) { | ||
1474 | if (count(array_count_values($ws)) == 1) { | ||
1475 | // interval mode is more compact | ||
1476 | $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0]; | ||
1477 | } else { | ||
1478 | // range mode | ||
1479 | $w .= ' '.$k.' [ '.implode(' ', $ws).' ]'; | ||
1480 | } | ||
1481 | } | ||
1482 | return '/W ['.$w.' ]'; | ||
1483 | } | ||
1484 | |||
1485 | /** | ||
1486 | * Returns the unicode caracter specified by the value | ||
1487 | * @param $c (int) UTF-8 value | ||
1488 | * @param $unicode (boolean) True if we are in unicode mode, false otherwise. | ||
1489 | * @return Returns the specified character. | ||
1490 | * @since 2.3.000 (2008-03-05) | ||
1491 | * @public static | ||
1492 | */ | ||
1493 | public static function unichr($c, $unicode=true) { | ||
1494 | if (!$unicode) { | ||
1495 | return chr($c); | ||
1496 | } elseif ($c <= 0x7F) { | ||
1497 | // one byte | ||
1498 | return chr($c); | ||
1499 | } elseif ($c <= 0x7FF) { | ||
1500 | // two bytes | ||
1501 | return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F); | ||
1502 | } elseif ($c <= 0xFFFF) { | ||
1503 | // three bytes | ||
1504 | return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); | ||
1505 | } elseif ($c <= 0x10FFFF) { | ||
1506 | // four bytes | ||
1507 | return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); | ||
1508 | } else { | ||
1509 | return ''; | ||
1510 | } | ||
1511 | } | ||
1512 | |||
1513 | /** | ||
1514 | * Returns the unicode caracter specified by UTF-8 value | ||
1515 | * @param $c (int) UTF-8 value | ||
1516 | * @return Returns the specified character. | ||
1517 | * @public static | ||
1518 | */ | ||
1519 | public static function unichrUnicode($c) { | ||
1520 | return self::unichr($c, true); | ||
1521 | } | ||
1522 | |||
1523 | /** | ||
1524 | * Returns the unicode caracter specified by ASCII value | ||
1525 | * @param $c (int) UTF-8 value | ||
1526 | * @return Returns the specified character. | ||
1527 | * @public static | ||
1528 | */ | ||
1529 | public static function unichrASCII($c) { | ||
1530 | return self::unichr($c, false); | ||
1531 | } | ||
1532 | |||
1533 | /** | ||
1534 | * Converts array of UTF-8 characters to UTF16-BE string.<br> | ||
1535 | * Based on: http://www.faqs.org/rfcs/rfc2781.html | ||
1536 | * <pre> | ||
1537 | * Encoding UTF-16: | ||
1538 | * | ||
1539 | * Encoding of a single character from an ISO 10646 character value to | ||
1540 | * UTF-16 proceeds as follows. Let U be the character number, no greater | ||
1541 | * than 0x10FFFF. | ||
1542 | * | ||
1543 | * 1) If U < 0x10000, encode U as a 16-bit unsigned integer and | ||
1544 | * terminate. | ||
1545 | * | ||
1546 | * 2) Let U' = U - 0x10000. Because U is less than or equal to 0x10FFFF, | ||
1547 | * U' must be less than or equal to 0xFFFFF. That is, U' can be | ||
1548 | * represented in 20 bits. | ||
1549 | * | ||
1550 | * 3) Initialize two 16-bit unsigned integers, W1 and W2, to 0xD800 and | ||
1551 | * 0xDC00, respectively. These integers each have 10 bits free to | ||
1552 | * encode the character value, for a total of 20 bits. | ||
1553 | * | ||
1554 | * 4) Assign the 10 high-order bits of the 20-bit U' to the 10 low-order | ||
1555 | * bits of W1 and the 10 low-order bits of U' to the 10 low-order | ||
1556 | * bits of W2. Terminate. | ||
1557 | * | ||
1558 | * Graphically, steps 2 through 4 look like: | ||
1559 | * U' = yyyyyyyyyyxxxxxxxxxx | ||
1560 | * W1 = 110110yyyyyyyyyy | ||
1561 | * W2 = 110111xxxxxxxxxx | ||
1562 | * </pre> | ||
1563 | * @param $unicode (array) array containing UTF-8 unicode values | ||
1564 | * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF) | ||
1565 | * @return string | ||
1566 | * @protected | ||
1567 | * @author Nicola Asuni | ||
1568 | * @since 2.1.000 (2008-01-08) | ||
1569 | * @public static | ||
1570 | */ | ||
1571 | public static function arrUTF8ToUTF16BE($unicode, $setbom=false) { | ||
1572 | $outstr = ''; // string to be returned | ||
1573 | if ($setbom) { | ||
1574 | $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM) | ||
1575 | } | ||
1576 | foreach ($unicode as $char) { | ||
1577 | if ($char == 0x200b) { | ||
1578 | // skip Unicode Character 'ZERO WIDTH SPACE' (DEC:8203, U+200B) | ||
1579 | } elseif ($char == 0xFFFD) { | ||
1580 | $outstr .= "\xFF\xFD"; // replacement character | ||
1581 | } elseif ($char < 0x10000) { | ||
1582 | $outstr .= chr($char >> 0x08); | ||
1583 | $outstr .= chr($char & 0xFF); | ||
1584 | } else { | ||
1585 | $char -= 0x10000; | ||
1586 | $w1 = 0xD800 | ($char >> 0x0a); | ||
1587 | $w2 = 0xDC00 | ($char & 0x3FF); | ||
1588 | $outstr .= chr($w1 >> 0x08); | ||
1589 | $outstr .= chr($w1 & 0xFF); | ||
1590 | $outstr .= chr($w2 >> 0x08); | ||
1591 | $outstr .= chr($w2 & 0xFF); | ||
1592 | } | ||
1593 | } | ||
1594 | return $outstr; | ||
1595 | } | ||
1596 | |||
1597 | /** | ||
1598 | * Convert an array of UTF8 values to array of unicode characters | ||
1599 | * @param $ta (array) The input array of UTF8 values. | ||
1600 | * @param $isunicode (boolean) True for Unicode mode, false otherwise. | ||
1601 | * @return Return array of unicode characters | ||
1602 | * @since 4.5.037 (2009-04-07) | ||
1603 | * @public static | ||
1604 | */ | ||
1605 | public static function UTF8ArrayToUniArray($ta, $isunicode=true) { | ||
1606 | if ($isunicode) { | ||
1607 | return array_map(array('TCPDF_FONTS', 'unichrUnicode'), $ta); | ||
1608 | } | ||
1609 | return array_map(array('TCPDF_FONTS', 'unichrASCII'), $ta); | ||
1610 | } | ||
1611 | |||
1612 | /** | ||
1613 | * Extract a slice of the $strarr array and return it as string. | ||
1614 | * @param $strarr (string) The input array of characters. | ||
1615 | * @param $start (int) the starting element of $strarr. | ||
1616 | * @param $end (int) first element that will not be returned. | ||
1617 | * @param $unicode (boolean) True if we are in unicode mode, false otherwise. | ||
1618 | * @return Return part of a string | ||
1619 | * @public static | ||
1620 | */ | ||
1621 | public static function UTF8ArrSubString($strarr, $start='', $end='', $unicode=true) { | ||
1622 | if (strlen($start) == 0) { | ||
1623 | $start = 0; | ||
1624 | } | ||
1625 | if (strlen($end) == 0) { | ||
1626 | $end = count($strarr); | ||
1627 | } | ||
1628 | $string = ''; | ||
1629 | for ($i = $start; $i < $end; ++$i) { | ||
1630 | $string .= self::unichr($strarr[$i], $unicode); | ||
1631 | } | ||
1632 | return $string; | ||
1633 | } | ||
1634 | |||
1635 | /** | ||
1636 | * Extract a slice of the $uniarr array and return it as string. | ||
1637 | * @param $uniarr (string) The input array of characters. | ||
1638 | * @param $start (int) the starting element of $strarr. | ||
1639 | * @param $end (int) first element that will not be returned. | ||
1640 | * @return Return part of a string | ||
1641 | * @since 4.5.037 (2009-04-07) | ||
1642 | * @public static | ||
1643 | */ | ||
1644 | public static function UniArrSubString($uniarr, $start='', $end='') { | ||
1645 | if (strlen($start) == 0) { | ||
1646 | $start = 0; | ||
1647 | } | ||
1648 | if (strlen($end) == 0) { | ||
1649 | $end = count($uniarr); | ||
1650 | } | ||
1651 | $string = ''; | ||
1652 | for ($i=$start; $i < $end; ++$i) { | ||
1653 | $string .= $uniarr[$i]; | ||
1654 | } | ||
1655 | return $string; | ||
1656 | } | ||
1657 | |||
1658 | /** | ||
1659 | * Update the CIDToGIDMap string with a new value. | ||
1660 | * @param $map (string) CIDToGIDMap. | ||
1661 | * @param $cid (int) CID value. | ||
1662 | * @param $gid (int) GID value. | ||
1663 | * @return (string) CIDToGIDMap. | ||
1664 | * @author Nicola Asuni | ||
1665 | * @since 5.9.123 (2011-09-29) | ||
1666 | * @public static | ||
1667 | */ | ||
1668 | public static function updateCIDtoGIDmap($map, $cid, $gid) { | ||
1669 | if (($cid >= 0) AND ($cid <= 0xFFFF) AND ($gid >= 0)) { | ||
1670 | if ($gid > 0xFFFF) { | ||
1671 | $gid -= 0x10000; | ||
1672 | } | ||
1673 | $map[($cid * 2)] = chr($gid >> 8); | ||
1674 | $map[(($cid * 2) + 1)] = chr($gid & 0xFF); | ||
1675 | } | ||
1676 | return $map; | ||
1677 | } | ||
1678 | |||
1679 | /** | ||
1680 | * Return fonts path | ||
1681 | * @return string | ||
1682 | * @public static | ||
1683 | */ | ||
1684 | public static function _getfontpath() { | ||
1685 | if (!defined('K_PATH_FONTS') AND is_dir($fdir = realpath(dirname(__FILE__).'/../fonts'))) { | ||
1686 | if (substr($fdir, -1) != '/') { | ||
1687 | $fdir .= '/'; | ||
1688 | } | ||
1689 | define('K_PATH_FONTS', $fdir); | ||
1690 | } | ||
1691 | return defined('K_PATH_FONTS') ? K_PATH_FONTS : ''; | ||
1692 | } | ||
1693 | |||
1694 | /** | ||
1695 | * Return font full path | ||
1696 | * @param $file (string) Font file name. | ||
1697 | * @param $fontdir (string) Font directory (set to false fto search on default directories) | ||
1698 | * @return string Font full path or empty string | ||
1699 | * @author Nicola Asuni | ||
1700 | * @since 6.0.025 | ||
1701 | * @public static | ||
1702 | */ | ||
1703 | public static function getFontFullPath($file, $fontdir=false) { | ||
1704 | $fontfile = ''; | ||
1705 | // search files on various directories | ||
1706 | if (($fontdir !== false) AND @file_exists($fontdir.$file)) { | ||
1707 | $fontfile = $fontdir.$file; | ||
1708 | } elseif (@file_exists(self::_getfontpath().$file)) { | ||
1709 | $fontfile = self::_getfontpath().$file; | ||
1710 | } elseif (@file_exists($file)) { | ||
1711 | $fontfile = $file; | ||
1712 | } | ||
1713 | return $fontfile; | ||
1714 | } | ||
1715 | |||
1716 | /** | ||
1717 | * Converts UTF-8 characters array to array of Latin1 characters array<br> | ||
1718 | * @param $unicode (array) array containing UTF-8 unicode values | ||
1719 | * @return array | ||
1720 | * @author Nicola Asuni | ||
1721 | * @since 4.8.023 (2010-01-15) | ||
1722 | * @public static | ||
1723 | */ | ||
1724 | public static function UTF8ArrToLatin1Arr($unicode) { | ||
1725 | $outarr = array(); // array to be returned | ||
1726 | foreach ($unicode as $char) { | ||
1727 | if ($char < 256) { | ||
1728 | $outarr[] = $char; | ||
1729 | } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) { | ||
1730 | // map from UTF-8 | ||
1731 | $outarr[] = TCPDF_FONT_DATA::$uni_utf8tolatin[$char]; | ||
1732 | } elseif ($char == 0xFFFD) { | ||
1733 | // skip | ||
1734 | } else { | ||
1735 | $outarr[] = 63; // '?' character | ||
1736 | } | ||
1737 | } | ||
1738 | return $outarr; | ||
1739 | } | ||
1740 | |||
1741 | /** | ||
1742 | * Converts UTF-8 characters array to array of Latin1 string<br> | ||
1743 | * @param $unicode (array) array containing UTF-8 unicode values | ||
1744 | * @return array | ||
1745 | * @author Nicola Asuni | ||
1746 | * @since 4.8.023 (2010-01-15) | ||
1747 | * @public static | ||
1748 | */ | ||
1749 | public static function UTF8ArrToLatin1($unicode) { | ||
1750 | $outstr = ''; // string to be returned | ||
1751 | foreach ($unicode as $char) { | ||
1752 | if ($char < 256) { | ||
1753 | $outstr .= chr($char); | ||
1754 | } elseif (array_key_exists($char, TCPDF_FONT_DATA::$uni_utf8tolatin)) { | ||
1755 | // map from UTF-8 | ||
1756 | $outstr .= chr(TCPDF_FONT_DATA::$uni_utf8tolatin[$char]); | ||
1757 | } elseif ($char == 0xFFFD) { | ||
1758 | // skip | ||
1759 | } else { | ||
1760 | $outstr .= '?'; | ||
1761 | } | ||
1762 | } | ||
1763 | return $outstr; | ||
1764 | } | ||
1765 | |||
1766 | /** | ||
1767 | * Converts UTF-8 character to integer value.<br> | ||
1768 | * Uses the getUniord() method if the value is not cached. | ||
1769 | * @param $uch (string) character string to process. | ||
1770 | * @return integer Unicode value | ||
1771 | * @public static | ||
1772 | */ | ||
1773 | public static function uniord($uch) { | ||
1774 | if (!isset(self::$cache_uniord[$uch])) { | ||
1775 | self::$cache_uniord[$uch] = self::getUniord($uch); | ||
1776 | } | ||
1777 | return self::$cache_uniord[$uch]; | ||
1778 | } | ||
1779 | |||
1780 | /** | ||
1781 | * Converts UTF-8 character to integer value.<br> | ||
1782 | * Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br> | ||
1783 | * Based on: http://www.faqs.org/rfcs/rfc3629.html | ||
1784 | * <pre> | ||
1785 | * Char. number range | UTF-8 octet sequence | ||
1786 | * (hexadecimal) | (binary) | ||
1787 | * --------------------+----------------------------------------------- | ||
1788 | * 0000 0000-0000 007F | 0xxxxxxx | ||
1789 | * 0000 0080-0000 07FF | 110xxxxx 10xxxxxx | ||
1790 | * 0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx | ||
1791 | * 0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | ||
1792 | * --------------------------------------------------------------------- | ||
1793 | * | ||
1794 | * ABFN notation: | ||
1795 | * --------------------------------------------------------------------- | ||
1796 | * UTF8-octets = *( UTF8-char ) | ||
1797 | * UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 | ||
1798 | * UTF8-1 = %x00-7F | ||
1799 | * UTF8-2 = %xC2-DF UTF8-tail | ||
1800 | * | ||
1801 | * UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / | ||
1802 | * %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) | ||
1803 | * UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / | ||
1804 | * %xF4 %x80-8F 2( UTF8-tail ) | ||
1805 | * UTF8-tail = %x80-BF | ||
1806 | * --------------------------------------------------------------------- | ||
1807 | * </pre> | ||
1808 | * @param $uch (string) character string to process. | ||
1809 | * @return integer Unicode value | ||
1810 | * @author Nicola Asuni | ||
1811 | * @public static | ||
1812 | */ | ||
1813 | public static function getUniord($uch) { | ||
1814 | if (function_exists('mb_convert_encoding')) { | ||
1815 | list(, $char) = @unpack('N', mb_convert_encoding($uch, 'UCS-4BE', 'UTF-8')); | ||
1816 | if ($char >= 0) { | ||
1817 | return $char; | ||
1818 | } | ||
1819 | } | ||
1820 | $bytes = array(); // array containing single character byte sequences | ||
1821 | $countbytes = 0; | ||
1822 | $numbytes = 1; // number of octetc needed to represent the UTF-8 character | ||
1823 | $length = strlen($uch); | ||
1824 | for ($i = 0; $i < $length; ++$i) { | ||
1825 | $char = ord($uch[$i]); // get one string character at time | ||
1826 | if ($countbytes == 0) { // get starting octect | ||
1827 | if ($char <= 0x7F) { | ||
1828 | return $char; // use the character "as is" because is ASCII | ||
1829 | } elseif (($char >> 0x05) == 0x06) { // 2 bytes character (0x06 = 110 BIN) | ||
1830 | $bytes[] = ($char - 0xC0) << 0x06; | ||
1831 | ++$countbytes; | ||
1832 | $numbytes = 2; | ||
1833 | } elseif (($char >> 0x04) == 0x0E) { // 3 bytes character (0x0E = 1110 BIN) | ||
1834 | $bytes[] = ($char - 0xE0) << 0x0C; | ||
1835 | ++$countbytes; | ||
1836 | $numbytes = 3; | ||
1837 | } elseif (($char >> 0x03) == 0x1E) { // 4 bytes character (0x1E = 11110 BIN) | ||
1838 | $bytes[] = ($char - 0xF0) << 0x12; | ||
1839 | ++$countbytes; | ||
1840 | $numbytes = 4; | ||
1841 | } else { | ||
1842 | // use replacement character for other invalid sequences | ||
1843 | return 0xFFFD; | ||
1844 | } | ||
1845 | } elseif (($char >> 0x06) == 0x02) { // bytes 2, 3 and 4 must start with 0x02 = 10 BIN | ||
1846 | $bytes[] = $char - 0x80; | ||
1847 | ++$countbytes; | ||
1848 | if ($countbytes == $numbytes) { | ||
1849 | // compose UTF-8 bytes to a single unicode value | ||
1850 | $char = $bytes[0]; | ||
1851 | for ($j = 1; $j < $numbytes; ++$j) { | ||
1852 | $char += ($bytes[$j] << (($numbytes - $j - 1) * 0x06)); | ||
1853 | } | ||
1854 | if ((($char >= 0xD800) AND ($char <= 0xDFFF)) OR ($char >= 0x10FFFF)) { | ||
1855 | // The definition of UTF-8 prohibits encoding character numbers between | ||
1856 | // U+D800 and U+DFFF, which are reserved for use with the UTF-16 | ||
1857 | // encoding form (as surrogate pairs) and do not directly represent | ||
1858 | // characters. | ||
1859 | return 0xFFFD; // use replacement character | ||
1860 | } else { | ||
1861 | return $char; | ||
1862 | } | ||
1863 | } | ||
1864 | } else { | ||
1865 | // use replacement character for other invalid sequences | ||
1866 | return 0xFFFD; | ||
1867 | } | ||
1868 | } | ||
1869 | return 0xFFFD; | ||
1870 | } | ||
1871 | |||
1872 | /** | ||
1873 | * Converts UTF-8 strings to codepoints array.<br> | ||
1874 | * Invalid byte sequences will be replaced with 0xFFFD (replacement character)<br> | ||
1875 | * @param $str (string) string to process. | ||
1876 | * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. | ||
1877 | * @param $currentfont (array) Reference to current font array. | ||
1878 | * @return array containing codepoints (UTF-8 characters values) | ||
1879 | * @author Nicola Asuni | ||
1880 | * @public static | ||
1881 | */ | ||
1882 | public static function UTF8StringToArray($str, $isunicode=true, &$currentfont) { | ||
1883 | if ($isunicode) { | ||
1884 | // requires PCRE unicode support turned on | ||
1885 | $chars = TCPDF_STATIC::pregSplit('//','u', $str, -1, PREG_SPLIT_NO_EMPTY); | ||
1886 | $carr = array_map(array('TCPDF_FONTS', 'uniord'), $chars); | ||
1887 | } else { | ||
1888 | $chars = str_split($str); | ||
1889 | $carr = array_map('ord', $chars); | ||
1890 | } | ||
1891 | $currentfont['subsetchars'] += array_fill_keys($carr, true); | ||
1892 | return $carr; | ||
1893 | } | ||
1894 | |||
1895 | /** | ||
1896 | * Converts UTF-8 strings to Latin1 when using the standard 14 core fonts.<br> | ||
1897 | * @param $str (string) string to process. | ||
1898 | * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. | ||
1899 | * @param $currentfont (array) Reference to current font array. | ||
1900 | * @return string | ||
1901 | * @since 3.2.000 (2008-06-23) | ||
1902 | * @public static | ||
1903 | */ | ||
1904 | public static function UTF8ToLatin1($str, $isunicode=true, &$currentfont) { | ||
1905 | $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values | ||
1906 | return self::UTF8ArrToLatin1($unicode); | ||
1907 | } | ||
1908 | |||
1909 | /** | ||
1910 | * Converts UTF-8 strings to UTF16-BE.<br> | ||
1911 | * @param $str (string) string to process. | ||
1912 | * @param $setbom (boolean) if true set the Byte Order Mark (BOM = 0xFEFF) | ||
1913 | * @param $isunicode (boolean) True when the documetn is in Unicode mode, false otherwise. | ||
1914 | * @param $currentfont (array) Reference to current font array. | ||
1915 | * @return string | ||
1916 | * @author Nicola Asuni | ||
1917 | * @since 1.53.0.TC005 (2005-01-05) | ||
1918 | * @public static | ||
1919 | */ | ||
1920 | public static function UTF8ToUTF16BE($str, $setbom=false, $isunicode=true, &$currentfont) { | ||
1921 | if (!$isunicode) { | ||
1922 | return $str; // string is not in unicode | ||
1923 | } | ||
1924 | $unicode = self::UTF8StringToArray($str, $isunicode, $currentfont); // array containing UTF-8 unicode values | ||
1925 | return self::arrUTF8ToUTF16BE($unicode, $setbom); | ||
1926 | } | ||
1927 | |||
1928 | /** | ||
1929 | * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). | ||
1930 | * @param $str (string) string to manipulate. | ||
1931 | * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF) | ||
1932 | * @param $forcertl (bool) if true forces RTL text direction | ||
1933 | * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. | ||
1934 | * @param $currentfont (array) Reference to current font array. | ||
1935 | * @return string | ||
1936 | * @author Nicola Asuni | ||
1937 | * @since 2.1.000 (2008-01-08) | ||
1938 | * @public static | ||
1939 | */ | ||
1940 | public static function utf8StrRev($str, $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) { | ||
1941 | return self::utf8StrArrRev(self::UTF8StringToArray($str, $isunicode, $currentfont), $str, $setbom, $forcertl, $isunicode, $currentfont); | ||
1942 | } | ||
1943 | |||
1944 | /** | ||
1945 | * Reverse the RLT substrings array using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). | ||
1946 | * @param $arr (array) array of unicode values. | ||
1947 | * @param $str (string) string to manipulate (or empty value). | ||
1948 | * @param $setbom (bool) if true set the Byte Order Mark (BOM = 0xFEFF) | ||
1949 | * @param $forcertl (bool) if true forces RTL text direction | ||
1950 | * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. | ||
1951 | * @param $currentfont (array) Reference to current font array. | ||
1952 | * @return string | ||
1953 | * @author Nicola Asuni | ||
1954 | * @since 4.9.000 (2010-03-27) | ||
1955 | * @public static | ||
1956 | */ | ||
1957 | public static function utf8StrArrRev($arr, $str='', $setbom=false, $forcertl=false, $isunicode=true, &$currentfont) { | ||
1958 | return self::arrUTF8ToUTF16BE(self::utf8Bidi($arr, $str, $forcertl, $isunicode, $currentfont), $setbom); | ||
1959 | } | ||
1960 | |||
1961 | /** | ||
1962 | * Reverse the RLT substrings using the Bidirectional Algorithm (http://unicode.org/reports/tr9/). | ||
1963 | * @param $ta (array) array of characters composing the string. | ||
1964 | * @param $str (string) string to process | ||
1965 | * @param $forcertl (bool) if 'R' forces RTL, if 'L' forces LTR | ||
1966 | * @param $isunicode (boolean) True if the document is in Unicode mode, false otherwise. | ||
1967 | * @param $currentfont (array) Reference to current font array. | ||
1968 | * @return array of unicode chars | ||
1969 | * @author Nicola Asuni | ||
1970 | * @since 2.4.000 (2008-03-06) | ||
1971 | * @public static | ||
1972 | */ | ||
1973 | public static function utf8Bidi($ta, $str='', $forcertl=false, $isunicode=true, &$currentfont) { | ||
1974 | // paragraph embedding level | ||
1975 | $pel = 0; | ||
1976 | // max level | ||
1977 | $maxlevel = 0; | ||
1978 | if (TCPDF_STATIC::empty_string($str)) { | ||
1979 | // create string from array | ||
1980 | $str = self::UTF8ArrSubString($ta, '', '', $isunicode); | ||
1981 | } | ||
1982 | // check if string contains arabic text | ||
1983 | if (preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_ARABIC, $str)) { | ||
1984 | $arabic = true; | ||
1985 | } else { | ||
1986 | $arabic = false; | ||
1987 | } | ||
1988 | // check if string contains RTL text | ||
1989 | if (!($forcertl OR $arabic OR preg_match(TCPDF_FONT_DATA::$uni_RE_PATTERN_RTL, $str))) { | ||
1990 | return $ta; | ||
1991 | } | ||
1992 | |||
1993 | // get number of chars | ||
1994 | $numchars = count($ta); | ||
1995 | |||
1996 | if ($forcertl == 'R') { | ||
1997 | $pel = 1; | ||
1998 | } elseif ($forcertl == 'L') { | ||
1999 | $pel = 0; | ||
2000 | } else { | ||
2001 | // P2. In each paragraph, find the first character of type L, AL, or R. | ||
2002 | // P3. If a character is found in P2 and it is of type AL or R, then set the paragraph embedding level to one; otherwise, set it to zero. | ||
2003 | for ($i=0; $i < $numchars; ++$i) { | ||
2004 | $type = TCPDF_FONT_DATA::$uni_type[$ta[$i]]; | ||
2005 | if ($type == 'L') { | ||
2006 | $pel = 0; | ||
2007 | break; | ||
2008 | } elseif (($type == 'AL') OR ($type == 'R')) { | ||
2009 | $pel = 1; | ||
2010 | break; | ||
2011 | } | ||
2012 | } | ||
2013 | } | ||
2014 | |||
2015 | // Current Embedding Level | ||
2016 | $cel = $pel; | ||
2017 | // directional override status | ||
2018 | $dos = 'N'; | ||
2019 | $remember = array(); | ||
2020 | // start-of-level-run | ||
2021 | $sor = $pel % 2 ? 'R' : 'L'; | ||
2022 | $eor = $sor; | ||
2023 | |||
2024 | // Array of characters data | ||
2025 | $chardata = Array(); | ||
2026 | |||
2027 | // X1. Begin by setting the current embedding level to the paragraph embedding level. Set the directional override status to neutral. Process each character iteratively, applying rules X2 through X9. Only embedding levels from 0 to 61 are valid in this phase. | ||
2028 | // In the resolution of levels in rules I1 and I2, the maximum embedding level of 62 can be reached. | ||
2029 | for ($i=0; $i < $numchars; ++$i) { | ||
2030 | if ($ta[$i] == TCPDF_FONT_DATA::$uni_RLE) { | ||
2031 | // X2. With each RLE, compute the least greater odd embedding level. | ||
2032 | // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. | ||
2033 | // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. | ||
2034 | $next_level = $cel + ($cel % 2) + 1; | ||
2035 | if ($next_level < 62) { | ||
2036 | $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLE, 'cel' => $cel, 'dos' => $dos); | ||
2037 | $cel = $next_level; | ||
2038 | $dos = 'N'; | ||
2039 | $sor = $eor; | ||
2040 | $eor = $cel % 2 ? 'R' : 'L'; | ||
2041 | } | ||
2042 | } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRE) { | ||
2043 | // X3. With each LRE, compute the least greater even embedding level. | ||
2044 | // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to neutral. | ||
2045 | // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. | ||
2046 | $next_level = $cel + 2 - ($cel % 2); | ||
2047 | if ( $next_level < 62 ) { | ||
2048 | $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRE, 'cel' => $cel, 'dos' => $dos); | ||
2049 | $cel = $next_level; | ||
2050 | $dos = 'N'; | ||
2051 | $sor = $eor; | ||
2052 | $eor = $cel % 2 ? 'R' : 'L'; | ||
2053 | } | ||
2054 | } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_RLO) { | ||
2055 | // X4. With each RLO, compute the least greater odd embedding level. | ||
2056 | // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to right-to-left. | ||
2057 | // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. | ||
2058 | $next_level = $cel + ($cel % 2) + 1; | ||
2059 | if ($next_level < 62) { | ||
2060 | $remember[] = array('num' => TCPDF_FONT_DATA::$uni_RLO, 'cel' => $cel, 'dos' => $dos); | ||
2061 | $cel = $next_level; | ||
2062 | $dos = 'R'; | ||
2063 | $sor = $eor; | ||
2064 | $eor = $cel % 2 ? 'R' : 'L'; | ||
2065 | } | ||
2066 | } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_LRO) { | ||
2067 | // X5. With each LRO, compute the least greater even embedding level. | ||
2068 | // a. If this new level would be valid, then this embedding code is valid. Remember (push) the current embedding level and override status. Reset the current level to this new level, and reset the override status to left-to-right. | ||
2069 | // b. If the new level would not be valid, then this code is invalid. Do not change the current level or override status. | ||
2070 | $next_level = $cel + 2 - ($cel % 2); | ||
2071 | if ( $next_level < 62 ) { | ||
2072 | $remember[] = array('num' => TCPDF_FONT_DATA::$uni_LRO, 'cel' => $cel, 'dos' => $dos); | ||
2073 | $cel = $next_level; | ||
2074 | $dos = 'L'; | ||
2075 | $sor = $eor; | ||
2076 | $eor = $cel % 2 ? 'R' : 'L'; | ||
2077 | } | ||
2078 | } elseif ($ta[$i] == TCPDF_FONT_DATA::$uni_PDF) { | ||
2079 | // X7. With each PDF, determine the matching embedding or override code. If there was a valid matching code, restore (pop) the last remembered (pushed) embedding level and directional override. | ||
2080 | if (count($remember)) { | ||
2081 | $last = count($remember ) - 1; | ||
2082 | if (($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLE) OR | ||
2083 | ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRE) OR | ||
2084 | ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_RLO) OR | ||
2085 | ($remember[$last]['num'] == TCPDF_FONT_DATA::$uni_LRO)) { | ||
2086 | $match = array_pop($remember); | ||
2087 | $cel = $match['cel']; | ||
2088 | $dos = $match['dos']; | ||
2089 | $sor = $eor; | ||
2090 | $eor = ($cel > $match['cel'] ? $cel : $match['cel']) % 2 ? 'R' : 'L'; | ||
2091 | } | ||
2092 | } | ||
2093 | } elseif (($ta[$i] != TCPDF_FONT_DATA::$uni_RLE) AND | ||
2094 | ($ta[$i] != TCPDF_FONT_DATA::$uni_LRE) AND | ||
2095 | ($ta[$i] != TCPDF_FONT_DATA::$uni_RLO) AND | ||
2096 | ($ta[$i] != TCPDF_FONT_DATA::$uni_LRO) AND | ||
2097 | ($ta[$i] != TCPDF_FONT_DATA::$uni_PDF)) { | ||
2098 | // X6. For all types besides RLE, LRE, RLO, LRO, and PDF: | ||
2099 | // a. Set the level of the current character to the current embedding level. | ||
2100 | // b. Whenever the directional override status is not neutral, reset the current character type to the directional override status. | ||
2101 | if ($dos != 'N') { | ||
2102 | $chardir = $dos; | ||
2103 | } else { | ||
2104 | if (isset(TCPDF_FONT_DATA::$uni_type[$ta[$i]])) { | ||
2105 | $chardir = TCPDF_FONT_DATA::$uni_type[$ta[$i]]; | ||
2106 | } else { | ||
2107 | $chardir = 'L'; | ||
2108 | } | ||
2109 | } | ||
2110 | // stores string characters and other information | ||
2111 | $chardata[] = array('char' => $ta[$i], 'level' => $cel, 'type' => $chardir, 'sor' => $sor, 'eor' => $eor); | ||
2112 | } | ||
2113 | } // end for each char | ||
2114 | |||
2115 | // X8. All explicit directional embeddings and overrides are completely terminated at the end of each paragraph. Paragraph separators are not included in the embedding. | ||
2116 | // X9. Remove all RLE, LRE, RLO, LRO, PDF, and BN codes. | ||
2117 | // X10. The remaining rules are applied to each run of characters at the same level. For each run, determine the start-of-level-run (sor) and end-of-level-run (eor) type, either L or R. This depends on the higher of the two levels on either side of the boundary (at the start or end of the paragraph, the level of the 'other' run is the base embedding level). If the higher level is odd, the type is R; otherwise, it is L. | ||
2118 | |||
2119 | // 3.3.3 Resolving Weak Types | ||
2120 | // Weak types are now resolved one level run at a time. At level run boundaries where the type of the character on the other side of the boundary is required, the type assigned to sor or eor is used. | ||
2121 | // Nonspacing marks are now resolved based on the previous characters. | ||
2122 | $numchars = count($chardata); | ||
2123 | |||
2124 | // W1. Examine each nonspacing mark (NSM) in the level run, and change the type of the NSM to the type of the previous character. If the NSM is at the start of the level run, it will get the type of sor. | ||
2125 | $prevlevel = -1; // track level changes | ||
2126 | $levcount = 0; // counts consecutive chars at the same level | ||
2127 | for ($i=0; $i < $numchars; ++$i) { | ||
2128 | if ($chardata[$i]['type'] == 'NSM') { | ||
2129 | if ($levcount) { | ||
2130 | $chardata[$i]['type'] = $chardata[$i]['sor']; | ||
2131 | } elseif ($i > 0) { | ||
2132 | $chardata[$i]['type'] = $chardata[($i-1)]['type']; | ||
2133 | } | ||
2134 | } | ||
2135 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2136 | $levcount = 0; | ||
2137 | } else { | ||
2138 | ++$levcount; | ||
2139 | } | ||
2140 | $prevlevel = $chardata[$i]['level']; | ||
2141 | } | ||
2142 | |||
2143 | // W2. Search backward from each instance of a European number until the first strong type (R, L, AL, or sor) is found. If an AL is found, change the type of the European number to Arabic number. | ||
2144 | $prevlevel = -1; | ||
2145 | $levcount = 0; | ||
2146 | for ($i=0; $i < $numchars; ++$i) { | ||
2147 | if ($chardata[$i]['char'] == 'EN') { | ||
2148 | for ($j=$levcount; $j >= 0; $j--) { | ||
2149 | if ($chardata[$j]['type'] == 'AL') { | ||
2150 | $chardata[$i]['type'] = 'AN'; | ||
2151 | } elseif (($chardata[$j]['type'] == 'L') OR ($chardata[$j]['type'] == 'R')) { | ||
2152 | break; | ||
2153 | } | ||
2154 | } | ||
2155 | } | ||
2156 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2157 | $levcount = 0; | ||
2158 | } else { | ||
2159 | ++$levcount; | ||
2160 | } | ||
2161 | $prevlevel = $chardata[$i]['level']; | ||
2162 | } | ||
2163 | |||
2164 | // W3. Change all ALs to R. | ||
2165 | for ($i=0; $i < $numchars; ++$i) { | ||
2166 | if ($chardata[$i]['type'] == 'AL') { | ||
2167 | $chardata[$i]['type'] = 'R'; | ||
2168 | } | ||
2169 | } | ||
2170 | |||
2171 | // W4. A single European separator between two European numbers changes to a European number. A single common separator between two numbers of the same type changes to that type. | ||
2172 | $prevlevel = -1; | ||
2173 | $levcount = 0; | ||
2174 | for ($i=0; $i < $numchars; ++$i) { | ||
2175 | if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { | ||
2176 | if (($chardata[$i]['type'] == 'ES') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) { | ||
2177 | $chardata[$i]['type'] = 'EN'; | ||
2178 | } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'EN') AND ($chardata[($i+1)]['type'] == 'EN')) { | ||
2179 | $chardata[$i]['type'] = 'EN'; | ||
2180 | } elseif (($chardata[$i]['type'] == 'CS') AND ($chardata[($i-1)]['type'] == 'AN') AND ($chardata[($i+1)]['type'] == 'AN')) { | ||
2181 | $chardata[$i]['type'] = 'AN'; | ||
2182 | } | ||
2183 | } | ||
2184 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2185 | $levcount = 0; | ||
2186 | } else { | ||
2187 | ++$levcount; | ||
2188 | } | ||
2189 | $prevlevel = $chardata[$i]['level']; | ||
2190 | } | ||
2191 | |||
2192 | // W5. A sequence of European terminators adjacent to European numbers changes to all European numbers. | ||
2193 | $prevlevel = -1; | ||
2194 | $levcount = 0; | ||
2195 | for ($i=0; $i < $numchars; ++$i) { | ||
2196 | if ($chardata[$i]['type'] == 'ET') { | ||
2197 | if (($levcount > 0) AND ($chardata[($i-1)]['type'] == 'EN')) { | ||
2198 | $chardata[$i]['type'] = 'EN'; | ||
2199 | } else { | ||
2200 | $j = $i+1; | ||
2201 | while (($j < $numchars) AND ($chardata[$j]['level'] == $prevlevel)) { | ||
2202 | if ($chardata[$j]['type'] == 'EN') { | ||
2203 | $chardata[$i]['type'] = 'EN'; | ||
2204 | break; | ||
2205 | } elseif ($chardata[$j]['type'] != 'ET') { | ||
2206 | break; | ||
2207 | } | ||
2208 | ++$j; | ||
2209 | } | ||
2210 | } | ||
2211 | } | ||
2212 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2213 | $levcount = 0; | ||
2214 | } else { | ||
2215 | ++$levcount; | ||
2216 | } | ||
2217 | $prevlevel = $chardata[$i]['level']; | ||
2218 | } | ||
2219 | |||
2220 | // W6. Otherwise, separators and terminators change to Other Neutral. | ||
2221 | $prevlevel = -1; | ||
2222 | $levcount = 0; | ||
2223 | for ($i=0; $i < $numchars; ++$i) { | ||
2224 | if (($chardata[$i]['type'] == 'ET') OR ($chardata[$i]['type'] == 'ES') OR ($chardata[$i]['type'] == 'CS')) { | ||
2225 | $chardata[$i]['type'] = 'ON'; | ||
2226 | } | ||
2227 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2228 | $levcount = 0; | ||
2229 | } else { | ||
2230 | ++$levcount; | ||
2231 | } | ||
2232 | $prevlevel = $chardata[$i]['level']; | ||
2233 | } | ||
2234 | |||
2235 | //W7. Search backward from each instance of a European number until the first strong type (R, L, or sor) is found. If an L is found, then change the type of the European number to L. | ||
2236 | $prevlevel = -1; | ||
2237 | $levcount = 0; | ||
2238 | for ($i=0; $i < $numchars; ++$i) { | ||
2239 | if ($chardata[$i]['char'] == 'EN') { | ||
2240 | for ($j=$levcount; $j >= 0; $j--) { | ||
2241 | if ($chardata[$j]['type'] == 'L') { | ||
2242 | $chardata[$i]['type'] = 'L'; | ||
2243 | } elseif ($chardata[$j]['type'] == 'R') { | ||
2244 | break; | ||
2245 | } | ||
2246 | } | ||
2247 | } | ||
2248 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2249 | $levcount = 0; | ||
2250 | } else { | ||
2251 | ++$levcount; | ||
2252 | } | ||
2253 | $prevlevel = $chardata[$i]['level']; | ||
2254 | } | ||
2255 | |||
2256 | // N1. A sequence of neutrals takes the direction of the surrounding strong text if the text on both sides has the same direction. European and Arabic numbers act as if they were R in terms of their influence on neutrals. Start-of-level-run (sor) and end-of-level-run (eor) are used at level run boundaries. | ||
2257 | $prevlevel = -1; | ||
2258 | $levcount = 0; | ||
2259 | for ($i=0; $i < $numchars; ++$i) { | ||
2260 | if (($levcount > 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { | ||
2261 | if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) { | ||
2262 | $chardata[$i]['type'] = 'L'; | ||
2263 | } elseif (($chardata[$i]['type'] == 'N') AND | ||
2264 | (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND | ||
2265 | (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) { | ||
2266 | $chardata[$i]['type'] = 'R'; | ||
2267 | } elseif ($chardata[$i]['type'] == 'N') { | ||
2268 | // N2. Any remaining neutrals take the embedding direction | ||
2269 | $chardata[$i]['type'] = $chardata[$i]['sor']; | ||
2270 | } | ||
2271 | } elseif (($levcount == 0) AND (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] == $prevlevel)) { | ||
2272 | // first char | ||
2273 | if (($chardata[$i]['type'] == 'N') AND ($chardata[$i]['sor'] == 'L') AND ($chardata[($i+1)]['type'] == 'L')) { | ||
2274 | $chardata[$i]['type'] = 'L'; | ||
2275 | } elseif (($chardata[$i]['type'] == 'N') AND | ||
2276 | (($chardata[$i]['sor'] == 'R') OR ($chardata[$i]['sor'] == 'EN') OR ($chardata[$i]['sor'] == 'AN')) AND | ||
2277 | (($chardata[($i+1)]['type'] == 'R') OR ($chardata[($i+1)]['type'] == 'EN') OR ($chardata[($i+1)]['type'] == 'AN'))) { | ||
2278 | $chardata[$i]['type'] = 'R'; | ||
2279 | } elseif ($chardata[$i]['type'] == 'N') { | ||
2280 | // N2. Any remaining neutrals take the embedding direction | ||
2281 | $chardata[$i]['type'] = $chardata[$i]['sor']; | ||
2282 | } | ||
2283 | } elseif (($levcount > 0) AND ((($i+1) == $numchars) OR (($i+1) < $numchars) AND ($chardata[($i+1)]['level'] != $prevlevel))) { | ||
2284 | //last char | ||
2285 | if (($chardata[$i]['type'] == 'N') AND ($chardata[($i-1)]['type'] == 'L') AND ($chardata[$i]['eor'] == 'L')) { | ||
2286 | $chardata[$i]['type'] = 'L'; | ||
2287 | } elseif (($chardata[$i]['type'] == 'N') AND | ||
2288 | (($chardata[($i-1)]['type'] == 'R') OR ($chardata[($i-1)]['type'] == 'EN') OR ($chardata[($i-1)]['type'] == 'AN')) AND | ||
2289 | (($chardata[$i]['eor'] == 'R') OR ($chardata[$i]['eor'] == 'EN') OR ($chardata[$i]['eor'] == 'AN'))) { | ||
2290 | $chardata[$i]['type'] = 'R'; | ||
2291 | } elseif ($chardata[$i]['type'] == 'N') { | ||
2292 | // N2. Any remaining neutrals take the embedding direction | ||
2293 | $chardata[$i]['type'] = $chardata[$i]['sor']; | ||
2294 | } | ||
2295 | } elseif ($chardata[$i]['type'] == 'N') { | ||
2296 | // N2. Any remaining neutrals take the embedding direction | ||
2297 | $chardata[$i]['type'] = $chardata[$i]['sor']; | ||
2298 | } | ||
2299 | if ($chardata[$i]['level'] != $prevlevel) { | ||
2300 | $levcount = 0; | ||
2301 | } else { | ||
2302 | ++$levcount; | ||
2303 | } | ||
2304 | $prevlevel = $chardata[$i]['level']; | ||
2305 | } | ||
2306 | |||
2307 | // I1. For all characters with an even (left-to-right) embedding direction, those of type R go up one level and those of type AN or EN go up two levels. | ||
2308 | // I2. For all characters with an odd (right-to-left) embedding direction, those of type L, EN or AN go up one level. | ||
2309 | for ($i=0; $i < $numchars; ++$i) { | ||
2310 | $odd = $chardata[$i]['level'] % 2; | ||
2311 | if ($odd) { | ||
2312 | if (($chardata[$i]['type'] == 'L') OR ($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) { | ||
2313 | $chardata[$i]['level'] += 1; | ||
2314 | } | ||
2315 | } else { | ||
2316 | if ($chardata[$i]['type'] == 'R') { | ||
2317 | $chardata[$i]['level'] += 1; | ||
2318 | } elseif (($chardata[$i]['type'] == 'AN') OR ($chardata[$i]['type'] == 'EN')) { | ||
2319 | $chardata[$i]['level'] += 2; | ||
2320 | } | ||
2321 | } | ||
2322 | $maxlevel = max($chardata[$i]['level'],$maxlevel); | ||
2323 | } | ||
2324 | |||
2325 | // L1. On each line, reset the embedding level of the following characters to the paragraph embedding level: | ||
2326 | // 1. Segment separators, | ||
2327 | // 2. Paragraph separators, | ||
2328 | // 3. Any sequence of whitespace characters preceding a segment separator or paragraph separator, and | ||
2329 | // 4. Any sequence of white space characters at the end of the line. | ||
2330 | for ($i=0; $i < $numchars; ++$i) { | ||
2331 | if (($chardata[$i]['type'] == 'B') OR ($chardata[$i]['type'] == 'S')) { | ||
2332 | $chardata[$i]['level'] = $pel; | ||
2333 | } elseif ($chardata[$i]['type'] == 'WS') { | ||
2334 | $j = $i+1; | ||
2335 | while ($j < $numchars) { | ||
2336 | if ((($chardata[$j]['type'] == 'B') OR ($chardata[$j]['type'] == 'S')) OR | ||
2337 | (($j == ($numchars-1)) AND ($chardata[$j]['type'] == 'WS'))) { | ||
2338 | $chardata[$i]['level'] = $pel; | ||
2339 | break; | ||
2340 | } elseif ($chardata[$j]['type'] != 'WS') { | ||
2341 | break; | ||
2342 | } | ||
2343 | ++$j; | ||
2344 | } | ||
2345 | } | ||
2346 | } | ||
2347 | |||
2348 | // Arabic Shaping | ||
2349 | // Cursively connected scripts, such as Arabic or Syriac, require the selection of positional character shapes that depend on adjacent characters. Shaping is logically applied after the Bidirectional Algorithm is used and is limited to characters within the same directional run. | ||
2350 | if ($arabic) { | ||
2351 | $endedletter = array(1569,1570,1571,1572,1573,1575,1577,1583,1584,1585,1586,1608,1688); | ||
2352 | $alfletter = array(1570,1571,1573,1575); | ||
2353 | $chardata2 = $chardata; | ||
2354 | $laaletter = false; | ||
2355 | $charAL = array(); | ||
2356 | $x = 0; | ||
2357 | for ($i=0; $i < $numchars; ++$i) { | ||
2358 | if ((TCPDF_FONT_DATA::$uni_type[$chardata[$i]['char']] == 'AL') OR ($chardata[$i]['char'] == 32) OR ($chardata[$i]['char'] == 8204)) { | ||
2359 | $charAL[$x] = $chardata[$i]; | ||
2360 | $charAL[$x]['i'] = $i; | ||
2361 | $chardata[$i]['x'] = $x; | ||
2362 | ++$x; | ||
2363 | } | ||
2364 | } | ||
2365 | $numAL = $x; | ||
2366 | for ($i=0; $i < $numchars; ++$i) { | ||
2367 | $thischar = $chardata[$i]; | ||
2368 | if ($i > 0) { | ||
2369 | $prevchar = $chardata[($i-1)]; | ||
2370 | } else { | ||
2371 | $prevchar = false; | ||
2372 | } | ||
2373 | if (($i+1) < $numchars) { | ||
2374 | $nextchar = $chardata[($i+1)]; | ||
2375 | } else { | ||
2376 | $nextchar = false; | ||
2377 | } | ||
2378 | if (TCPDF_FONT_DATA::$uni_type[$thischar['char']] == 'AL') { | ||
2379 | $x = $thischar['x']; | ||
2380 | if ($x > 0) { | ||
2381 | $prevchar = $charAL[($x-1)]; | ||
2382 | } else { | ||
2383 | $prevchar = false; | ||
2384 | } | ||
2385 | if (($x+1) < $numAL) { | ||
2386 | $nextchar = $charAL[($x+1)]; | ||
2387 | } else { | ||
2388 | $nextchar = false; | ||
2389 | } | ||
2390 | // if laa letter | ||
2391 | if (($prevchar !== false) AND ($prevchar['char'] == 1604) AND (in_array($thischar['char'], $alfletter))) { | ||
2392 | $arabicarr = TCPDF_FONT_DATA::$uni_laa_array; | ||
2393 | $laaletter = true; | ||
2394 | if ($x > 1) { | ||
2395 | $prevchar = $charAL[($x-2)]; | ||
2396 | } else { | ||
2397 | $prevchar = false; | ||
2398 | } | ||
2399 | } else { | ||
2400 | $arabicarr = TCPDF_FONT_DATA::$uni_arabicsubst; | ||
2401 | $laaletter = false; | ||
2402 | } | ||
2403 | if (($prevchar !== false) AND ($nextchar !== false) AND | ||
2404 | ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND | ||
2405 | ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND | ||
2406 | ($prevchar['type'] == $thischar['type']) AND | ||
2407 | ($nextchar['type'] == $thischar['type']) AND | ||
2408 | ($nextchar['char'] != 1567)) { | ||
2409 | if (in_array($prevchar['char'], $endedletter)) { | ||
2410 | if (isset($arabicarr[$thischar['char']][2])) { | ||
2411 | // initial | ||
2412 | $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2]; | ||
2413 | } | ||
2414 | } else { | ||
2415 | if (isset($arabicarr[$thischar['char']][3])) { | ||
2416 | // medial | ||
2417 | $chardata2[$i]['char'] = $arabicarr[$thischar['char']][3]; | ||
2418 | } | ||
2419 | } | ||
2420 | } elseif (($nextchar !== false) AND | ||
2421 | ((TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$nextchar['char']] == 'NSM')) AND | ||
2422 | ($nextchar['type'] == $thischar['type']) AND | ||
2423 | ($nextchar['char'] != 1567)) { | ||
2424 | if (isset($arabicarr[$chardata[$i]['char']][2])) { | ||
2425 | // initial | ||
2426 | $chardata2[$i]['char'] = $arabicarr[$thischar['char']][2]; | ||
2427 | } | ||
2428 | } elseif ((($prevchar !== false) AND | ||
2429 | ((TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'AL') OR (TCPDF_FONT_DATA::$uni_type[$prevchar['char']] == 'NSM')) AND | ||
2430 | ($prevchar['type'] == $thischar['type'])) OR | ||
2431 | (($nextchar !== false) AND ($nextchar['char'] == 1567))) { | ||
2432 | // final | ||
2433 | if (($i > 1) AND ($thischar['char'] == 1607) AND | ||
2434 | ($chardata[$i-1]['char'] == 1604) AND | ||
2435 | ($chardata[$i-2]['char'] == 1604)) { | ||
2436 | //Allah Word | ||
2437 | // mark characters to delete with false | ||
2438 | $chardata2[$i-2]['char'] = false; | ||
2439 | $chardata2[$i-1]['char'] = false; | ||
2440 | $chardata2[$i]['char'] = 65010; | ||
2441 | } else { | ||
2442 | if (($prevchar !== false) AND in_array($prevchar['char'], $endedletter)) { | ||
2443 | if (isset($arabicarr[$thischar['char']][0])) { | ||
2444 | // isolated | ||
2445 | $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0]; | ||
2446 | } | ||
2447 | } else { | ||
2448 | if (isset($arabicarr[$thischar['char']][1])) { | ||
2449 | // final | ||
2450 | $chardata2[$i]['char'] = $arabicarr[$thischar['char']][1]; | ||
2451 | } | ||
2452 | } | ||
2453 | } | ||
2454 | } elseif (isset($arabicarr[$thischar['char']][0])) { | ||
2455 | // isolated | ||
2456 | $chardata2[$i]['char'] = $arabicarr[$thischar['char']][0]; | ||
2457 | } | ||
2458 | // if laa letter | ||
2459 | if ($laaletter) { | ||
2460 | // mark characters to delete with false | ||
2461 | $chardata2[($charAL[($x-1)]['i'])]['char'] = false; | ||
2462 | } | ||
2463 | } // end if AL (Arabic Letter) | ||
2464 | } // end for each char | ||
2465 | /* | ||
2466 | * Combining characters that can occur with Arabic Shadda (0651 HEX, 1617 DEC) are replaced. | ||
2467 | * Putting the combining mark and shadda in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner. | ||
2468 | */ | ||
2469 | for ($i = 0; $i < ($numchars-1); ++$i) { | ||
2470 | if (($chardata2[$i]['char'] == 1617) AND (isset(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]))) { | ||
2471 | // check if the subtitution font is defined on current font | ||
2472 | if (isset($currentfont['cw'][(TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])])])) { | ||
2473 | $chardata2[$i]['char'] = false; | ||
2474 | $chardata2[$i+1]['char'] = TCPDF_FONT_DATA::$uni_diacritics[($chardata2[$i+1]['char'])]; | ||
2475 | } | ||
2476 | } | ||
2477 | } | ||
2478 | // remove marked characters | ||
2479 | foreach ($chardata2 as $key => $value) { | ||
2480 | if ($value['char'] === false) { | ||
2481 | unset($chardata2[$key]); | ||
2482 | } | ||
2483 | } | ||
2484 | $chardata = array_values($chardata2); | ||
2485 | $numchars = count($chardata); | ||
2486 | unset($chardata2); | ||
2487 | unset($arabicarr); | ||
2488 | unset($laaletter); | ||
2489 | unset($charAL); | ||
2490 | } | ||
2491 | |||
2492 | // L2. From the highest level found in the text to the lowest odd level on each line, including intermediate levels not actually present in the text, reverse any contiguous sequence of characters that are at that level or higher. | ||
2493 | for ($j=$maxlevel; $j > 0; $j--) { | ||
2494 | $ordarray = Array(); | ||
2495 | $revarr = Array(); | ||
2496 | $onlevel = false; | ||
2497 | for ($i=0; $i < $numchars; ++$i) { | ||
2498 | if ($chardata[$i]['level'] >= $j) { | ||
2499 | $onlevel = true; | ||
2500 | if (isset(TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']])) { | ||
2501 | // L4. A character is depicted by a mirrored glyph if and only if (a) the resolved directionality of that character is R, and (b) the Bidi_Mirrored property value of that character is true. | ||
2502 | $chardata[$i]['char'] = TCPDF_FONT_DATA::$uni_mirror[$chardata[$i]['char']]; | ||
2503 | } | ||
2504 | $revarr[] = $chardata[$i]; | ||
2505 | } else { | ||
2506 | if ($onlevel) { | ||
2507 | $revarr = array_reverse($revarr); | ||
2508 | $ordarray = array_merge($ordarray, $revarr); | ||
2509 | $revarr = Array(); | ||
2510 | $onlevel = false; | ||
2511 | } | ||
2512 | $ordarray[] = $chardata[$i]; | ||
2513 | } | ||
2514 | } | ||
2515 | if ($onlevel) { | ||
2516 | $revarr = array_reverse($revarr); | ||
2517 | $ordarray = array_merge($ordarray, $revarr); | ||
2518 | } | ||
2519 | $chardata = $ordarray; | ||
2520 | } | ||
2521 | $ordarray = array(); | ||
2522 | foreach ($chardata as $cd) { | ||
2523 | $ordarray[] = $cd['char']; | ||
2524 | // store char values for subsetting | ||
2525 | $currentfont['subsetchars'][$cd['char']] = true; | ||
2526 | } | ||
2527 | return $ordarray; | ||
2528 | } | ||
2529 | |||
2530 | /** | ||
2531 | * Get a reference font size. | ||
2532 | * @param $size (string) String containing font size value. | ||
2533 | * @param $refsize (float) Reference font size in points. | ||
2534 | * @return float value in points | ||
2535 | * @public static | ||
2536 | */ | ||
2537 | public static function getFontRefSize($size, $refsize=12) { | ||
2538 | switch ($size) { | ||
2539 | case 'xx-small': { | ||
2540 | $size = ($refsize - 4); | ||
2541 | break; | ||
2542 | } | ||
2543 | case 'x-small': { | ||
2544 | $size = ($refsize - 3); | ||
2545 | break; | ||
2546 | } | ||
2547 | case 'small': { | ||
2548 | $size = ($refsize - 2); | ||
2549 | break; | ||
2550 | } | ||
2551 | case 'medium': { | ||
2552 | $size = $refsize; | ||
2553 | break; | ||
2554 | } | ||
2555 | case 'large': { | ||
2556 | $size = ($refsize + 2); | ||
2557 | break; | ||
2558 | } | ||
2559 | case 'x-large': { | ||
2560 | $size = ($refsize + 4); | ||
2561 | break; | ||
2562 | } | ||
2563 | case 'xx-large': { | ||
2564 | $size = ($refsize + 6); | ||
2565 | break; | ||
2566 | } | ||
2567 | case 'smaller': { | ||
2568 | $size = ($refsize - 3); | ||
2569 | break; | ||
2570 | } | ||
2571 | case 'larger': { | ||
2572 | $size = ($refsize + 3); | ||
2573 | break; | ||
2574 | } | ||
2575 | } | ||
2576 | return $size; | ||
2577 | } | ||
2578 | |||
2579 | } // END OF TCPDF_FONTS CLASS | ||
2580 | |||
2581 | //============================================================+ | ||
2582 | // END OF FILE | ||
2583 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php new file mode 100644 index 00000000..150832ef --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_images.php | |||
@@ -0,0 +1,355 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : tcpdf_images.php | ||
4 | // Version : 1.0.003 | ||
5 | // Begin : 2002-08-03 | ||
6 | // Last Update : 2014-04-03 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the License | ||
25 | // along with TCPDF. If not, see | ||
26 | // <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>. | ||
27 | // | ||
28 | // See LICENSE.TXT file for more information. | ||
29 | // ------------------------------------------------------------------- | ||
30 | // | ||
31 | // Description : | ||
32 | // Static image methods used by the TCPDF class. | ||
33 | // | ||
34 | //============================================================+ | ||
35 | |||
36 | /** | ||
37 | * @file | ||
38 | * This is a PHP class that contains static image methods for the TCPDF class.<br> | ||
39 | * @package com.tecnick.tcpdf | ||
40 | * @author Nicola Asuni | ||
41 | * @version 1.0.003 | ||
42 | */ | ||
43 | |||
44 | /** | ||
45 | * @class TCPDF_IMAGES | ||
46 | * Static image methods used by the TCPDF class. | ||
47 | * @package com.tecnick.tcpdf | ||
48 | * @brief PHP class for generating PDF documents without requiring external extensions. | ||
49 | * @version 1.0.003 | ||
50 | * @author Nicola Asuni - info@tecnick.com | ||
51 | */ | ||
52 | class TCPDF_IMAGES { | ||
53 | |||
54 | /** | ||
55 | * Array of hinheritable SVG properties. | ||
56 | * @since 5.0.000 (2010-05-02) | ||
57 | * @public static | ||
58 | */ | ||
59 | public static $svginheritprop = array('clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cursor', 'direction', 'fill', 'fill-opacity', 'fill-rule', 'font', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'image-rendering', 'kerning', 'letter-spacing', 'marker', 'marker-end', 'marker-mid', 'marker-start', 'pointer-events', 'shape-rendering', 'stroke', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-rendering', 'visibility', 'word-spacing', 'writing-mode'); | ||
60 | |||
61 | // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
62 | |||
63 | /** | ||
64 | * Return the image type given the file name or array returned by getimagesize() function. | ||
65 | * @param $imgfile (string) image file name | ||
66 | * @param $iminfo (array) array of image information returned by getimagesize() function. | ||
67 | * @return string image type | ||
68 | * @since 4.8.017 (2009-11-27) | ||
69 | * @public static | ||
70 | */ | ||
71 | public static function getImageFileType($imgfile, $iminfo=array()) { | ||
72 | $type = ''; | ||
73 | if (isset($iminfo['mime']) AND !empty($iminfo['mime'])) { | ||
74 | $mime = explode('/', $iminfo['mime']); | ||
75 | if ((count($mime) > 1) AND ($mime[0] == 'image') AND (!empty($mime[1]))) { | ||
76 | $type = strtolower(trim($mime[1])); | ||
77 | } | ||
78 | } | ||
79 | if (empty($type)) { | ||
80 | $fileinfo = pathinfo($imgfile); | ||
81 | if (isset($fileinfo['extension']) AND (!TCPDF_STATIC::empty_string($fileinfo['extension']))) { | ||
82 | $type = strtolower(trim($fileinfo['extension'])); | ||
83 | } | ||
84 | } | ||
85 | if ($type == 'jpg') { | ||
86 | $type = 'jpeg'; | ||
87 | } | ||
88 | return $type; | ||
89 | } | ||
90 | |||
91 | /** | ||
92 | * Set the transparency for the given GD image. | ||
93 | * @param $new_image (image) GD image object | ||
94 | * @param $image (image) GD image object. | ||
95 | * return GD image object. | ||
96 | * @since 4.9.016 (2010-04-20) | ||
97 | * @public static | ||
98 | */ | ||
99 | public static function setGDImageTransparency($new_image, $image) { | ||
100 | // transparency index | ||
101 | $tid = imagecolortransparent($image); | ||
102 | // default transparency color | ||
103 | $tcol = array('red' => 255, 'green' => 255, 'blue' => 255); | ||
104 | if ($tid >= 0) { | ||
105 | // get the colors for the transparency index | ||
106 | $tcol = imagecolorsforindex($image, $tid); | ||
107 | } | ||
108 | $tid = imagecolorallocate($new_image, $tcol['red'], $tcol['green'], $tcol['blue']); | ||
109 | imagefill($new_image, 0, 0, $tid); | ||
110 | imagecolortransparent($new_image, $tid); | ||
111 | return $new_image; | ||
112 | } | ||
113 | |||
114 | /** | ||
115 | * Convert the loaded image to a PNG and then return a structure for the PDF creator. | ||
116 | * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant. | ||
117 | * @param $image (image) Image object. | ||
118 | * return image PNG image object. | ||
119 | * @since 4.9.016 (2010-04-20) | ||
120 | * @public static | ||
121 | */ | ||
122 | public static function _toPNG($image) { | ||
123 | // set temporary image file name | ||
124 | $tempname = TCPDF_STATIC::getObjFilename('img'); | ||
125 | // turn off interlaced mode | ||
126 | imageinterlace($image, 0); | ||
127 | // create temporary PNG image | ||
128 | imagepng($image, $tempname); | ||
129 | // remove image from memory | ||
130 | imagedestroy($image); | ||
131 | // get PNG image data | ||
132 | $retvars = self::_parsepng($tempname); | ||
133 | // tidy up by removing temporary image | ||
134 | unlink($tempname); | ||
135 | return $retvars; | ||
136 | } | ||
137 | |||
138 | /** | ||
139 | * Convert the loaded image to a JPEG and then return a structure for the PDF creator. | ||
140 | * This function requires GD library and write access to the directory defined on K_PATH_CACHE constant. | ||
141 | * @param $image (image) Image object. | ||
142 | * @param $quality (int) JPEG quality. | ||
143 | * return image JPEG image object. | ||
144 | * @public static | ||
145 | */ | ||
146 | public static function _toJPEG($image, $quality) { | ||
147 | $tempname = TCPDF_STATIC::getObjFilename('img'); | ||
148 | imagejpeg($image, $tempname, $quality); | ||
149 | imagedestroy($image); | ||
150 | $retvars = self::_parsejpeg($tempname); | ||
151 | // tidy up by removing temporary image | ||
152 | unlink($tempname); | ||
153 | return $retvars; | ||
154 | } | ||
155 | |||
156 | /** | ||
157 | * Extract info from a JPEG file without using the GD library. | ||
158 | * @param $file (string) image file to parse | ||
159 | * @return array structure containing the image data | ||
160 | * @public static | ||
161 | */ | ||
162 | public static function _parsejpeg($file) { | ||
163 | $a = getimagesize($file); | ||
164 | if (empty($a)) { | ||
165 | //Missing or incorrect image file | ||
166 | return false; | ||
167 | } | ||
168 | if ($a[2] != 2) { | ||
169 | // Not a JPEG file | ||
170 | return false; | ||
171 | } | ||
172 | // bits per pixel | ||
173 | $bpc = isset($a['bits']) ? intval($a['bits']) : 8; | ||
174 | // number of image channels | ||
175 | if (!isset($a['channels'])) { | ||
176 | $channels = 3; | ||
177 | } else { | ||
178 | $channels = intval($a['channels']); | ||
179 | } | ||
180 | // default colour space | ||
181 | switch ($channels) { | ||
182 | case 1: { | ||
183 | $colspace = 'DeviceGray'; | ||
184 | break; | ||
185 | } | ||
186 | case 3: { | ||
187 | $colspace = 'DeviceRGB'; | ||
188 | break; | ||
189 | } | ||
190 | case 4: { | ||
191 | $colspace = 'DeviceCMYK'; | ||
192 | break; | ||
193 | } | ||
194 | default: { | ||
195 | $channels = 3; | ||
196 | $colspace = 'DeviceRGB'; | ||
197 | break; | ||
198 | } | ||
199 | } | ||
200 | // get file content | ||
201 | $data = file_get_contents($file); | ||
202 | // check for embedded ICC profile | ||
203 | $icc = array(); | ||
204 | $offset = 0; | ||
205 | while (($pos = strpos($data, "ICC_PROFILE\0", $offset)) !== false) { | ||
206 | // get ICC sequence length | ||
207 | $length = (TCPDF_STATIC::_getUSHORT($data, ($pos - 2)) - 16); | ||
208 | // marker sequence number | ||
209 | $msn = max(1, ord($data[($pos + 12)])); | ||
210 | // number of markers (total of APP2 used) | ||
211 | $nom = max(1, ord($data[($pos + 13)])); | ||
212 | // get sequence segment | ||
213 | $icc[($msn - 1)] = substr($data, ($pos + 14), $length); | ||
214 | // move forward to next sequence | ||
215 | $offset = ($pos + 14 + $length); | ||
216 | } | ||
217 | // order and compact ICC segments | ||
218 | if (count($icc) > 0) { | ||
219 | ksort($icc); | ||
220 | $icc = implode('', $icc); | ||
221 | if ((ord($icc[36]) != 0x61) OR (ord($icc[37]) != 0x63) OR (ord($icc[38]) != 0x73) OR (ord($icc[39]) != 0x70)) { | ||
222 | // invalid ICC profile | ||
223 | $icc = false; | ||
224 | } | ||
225 | } else { | ||
226 | $icc = false; | ||
227 | } | ||
228 | return array('w' => $a[0], 'h' => $a[1], 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'DCTDecode', 'data' => $data); | ||
229 | } | ||
230 | |||
231 | /** | ||
232 | * Extract info from a PNG file without using the GD library. | ||
233 | * @param $file (string) image file to parse | ||
234 | * @return array structure containing the image data | ||
235 | * @public static | ||
236 | */ | ||
237 | public static function _parsepng($file) { | ||
238 | $f = @fopen($file, 'rb'); | ||
239 | if ($f === false) { | ||
240 | // Can't open image file | ||
241 | return false; | ||
242 | } | ||
243 | //Check signature | ||
244 | if (fread($f, 8) != chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { | ||
245 | // Not a PNG file | ||
246 | return false; | ||
247 | } | ||
248 | //Read header chunk | ||
249 | fread($f, 4); | ||
250 | if (fread($f, 4) != 'IHDR') { | ||
251 | //Incorrect PNG file | ||
252 | return false; | ||
253 | } | ||
254 | $w = TCPDF_STATIC::_freadint($f); | ||
255 | $h = TCPDF_STATIC::_freadint($f); | ||
256 | $bpc = ord(fread($f, 1)); | ||
257 | $ct = ord(fread($f, 1)); | ||
258 | if ($ct == 0) { | ||
259 | $colspace = 'DeviceGray'; | ||
260 | } elseif ($ct == 2) { | ||
261 | $colspace = 'DeviceRGB'; | ||
262 | } elseif ($ct == 3) { | ||
263 | $colspace = 'Indexed'; | ||
264 | } else { | ||
265 | // alpha channel | ||
266 | fclose($f); | ||
267 | return 'pngalpha'; | ||
268 | } | ||
269 | if (ord(fread($f, 1)) != 0) { | ||
270 | // Unknown compression method | ||
271 | fclose($f); | ||
272 | return false; | ||
273 | } | ||
274 | if (ord(fread($f, 1)) != 0) { | ||
275 | // Unknown filter method | ||
276 | fclose($f); | ||
277 | return false; | ||
278 | } | ||
279 | if (ord(fread($f, 1)) != 0) { | ||
280 | // Interlacing not supported | ||
281 | fclose($f); | ||
282 | return false; | ||
283 | } | ||
284 | fread($f, 4); | ||
285 | $channels = ($ct == 2 ? 3 : 1); | ||
286 | $parms = '/DecodeParms << /Predictor 15 /Colors '.$channels.' /BitsPerComponent '.$bpc.' /Columns '.$w.' >>'; | ||
287 | //Scan chunks looking for palette, transparency and image data | ||
288 | $pal = ''; | ||
289 | $trns = ''; | ||
290 | $data = ''; | ||
291 | $icc = false; | ||
292 | do { | ||
293 | $n = TCPDF_STATIC::_freadint($f); | ||
294 | $type = fread($f, 4); | ||
295 | if ($type == 'PLTE') { | ||
296 | // read palette | ||
297 | $pal = TCPDF_STATIC::rfread($f, $n); | ||
298 | fread($f, 4); | ||
299 | } elseif ($type == 'tRNS') { | ||
300 | // read transparency info | ||
301 | $t = TCPDF_STATIC::rfread($f, $n); | ||
302 | if ($ct == 0) { // DeviceGray | ||
303 | $trns = array(ord($t[1])); | ||
304 | } elseif ($ct == 2) { // DeviceRGB | ||
305 | $trns = array(ord($t[1]), ord($t[3]), ord($t[5])); | ||
306 | } else { // Indexed | ||
307 | if ($n > 0) { | ||
308 | $trns = array(); | ||
309 | for ($i = 0; $i < $n; ++ $i) { | ||
310 | $trns[] = ord($t{$i}); | ||
311 | } | ||
312 | } | ||
313 | } | ||
314 | fread($f, 4); | ||
315 | } elseif ($type == 'IDAT') { | ||
316 | // read image data block | ||
317 | $data .= TCPDF_STATIC::rfread($f, $n); | ||
318 | fread($f, 4); | ||
319 | } elseif ($type == 'iCCP') { | ||
320 | // skip profile name | ||
321 | $len = 0; | ||
322 | while ((ord(fread($f, 1)) != 0) AND ($len < 80)) { | ||
323 | ++$len; | ||
324 | } | ||
325 | // get compression method | ||
326 | if (ord(fread($f, 1)) != 0) { | ||
327 | // Unknown filter method | ||
328 | fclose($f); | ||
329 | return false; | ||
330 | } | ||
331 | // read ICC Color Profile | ||
332 | $icc = TCPDF_STATIC::rfread($f, ($n - $len - 2)); | ||
333 | // decompress profile | ||
334 | $icc = gzuncompress($icc); | ||
335 | fread($f, 4); | ||
336 | } elseif ($type == 'IEND') { | ||
337 | break; | ||
338 | } else { | ||
339 | TCPDF_STATIC::rfread($f, $n + 4); | ||
340 | } | ||
341 | } while ($n); | ||
342 | if (($colspace == 'Indexed') AND (empty($pal))) { | ||
343 | // Missing palette | ||
344 | fclose($f); | ||
345 | return false; | ||
346 | } | ||
347 | fclose($f); | ||
348 | return array('w' => $w, 'h' => $h, 'ch' => $channels, 'icc' => $icc, 'cs' => $colspace, 'bpc' => $bpc, 'f' => 'FlateDecode', 'parms' => $parms, 'pal' => $pal, 'trns' => $trns, 'data' => $data); | ||
349 | } | ||
350 | |||
351 | } // END OF TCPDF_IMAGES CLASS | ||
352 | |||
353 | //============================================================+ | ||
354 | // END OF FILE | ||
355 | //============================================================+ | ||
diff --git a/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php b/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php new file mode 100644 index 00000000..e657446a --- /dev/null +++ b/inc/3rdparty/libraries/tcpdf/include/tcpdf_static.php | |||
@@ -0,0 +1,2851 @@ | |||
1 | <?php | ||
2 | //============================================================+ | ||
3 | // File name : tcpdf_static.php | ||
4 | // Version : 1.0.004 | ||
5 | // Begin : 2002-08-03 | ||
6 | // Last Update : 2014-09-02 | ||
7 | // Author : Nicola Asuni - Tecnick.com LTD - www.tecnick.com - info@tecnick.com | ||
8 | // License : GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html) | ||
9 | // ------------------------------------------------------------------- | ||
10 | // Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD | ||
11 | // | ||
12 | // This file is part of TCPDF software library. | ||
13 | // | ||
14 | // TCPDF is free software: you can redistribute it and/or modify it | ||
15 | // under the terms of the GNU Lesser General Public License as | ||
16 | // published by the Free Software Foundation, either version 3 of the | ||
17 | // License, or (at your option) any later version. | ||
18 | // | ||
19 | // TCPDF is distributed in the hope that it will be useful, but | ||
20 | // WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
22 | // See the GNU Lesser General Public License for more details. | ||
23 | // | ||
24 | // You should have received a copy of the License | ||
25 | // along with TCPDF. If not, see | ||
26 | // <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>. | ||
27 | // | ||
28 | // See LICENSE.TXT file for more information. | ||
29 | // ------------------------------------------------------------------- | ||
30 | // | ||
31 | // Description : | ||
32 | // Static methods used by the TCPDF class. | ||
33 | // | ||
34 | //============================================================+ | ||
35 | |||
36 | /** | ||
37 | * @file | ||
38 | * This is a PHP class that contains static methods for the TCPDF class.<br> | ||
39 | * @package com.tecnick.tcpdf | ||
40 | * @author Nicola Asuni | ||
41 | * @version 1.0.004 | ||
42 | */ | ||
43 | |||
44 | /** | ||
45 | * @class TCPDF_STATIC | ||
46 | * Static methods used by the TCPDF class. | ||
47 | * @package com.tecnick.tcpdf | ||
48 | * @brief PHP class for generating PDF documents without requiring external extensions. | ||
49 | * @version 1.0.004 | ||
50 | * @author Nicola Asuni - info@tecnick.com | ||
51 | */ | ||
52 | class TCPDF_STATIC { | ||
53 | |||
54 | /** | ||
55 | * Current TCPDF version. | ||
56 | * @private static | ||
57 | */ | ||
58 | private static $tcpdf_version = '6.0.093'; | ||
59 | |||
60 | /** | ||
61 | * String alias for total number of pages. | ||
62 | * @public static | ||
63 | */ | ||
64 | public static $alias_tot_pages = '{:ptp:}'; | ||
65 | |||
66 | /** | ||
67 | * String alias for page number. | ||
68 | * @public static | ||
69 | */ | ||
70 | public static $alias_num_page = '{:pnp:}'; | ||
71 | |||
72 | /** | ||
73 | * String alias for total number of pages in a single group. | ||
74 | * @public static | ||
75 | */ | ||
76 | public static $alias_group_tot_pages = '{:ptg:}'; | ||
77 | |||
78 | /** | ||
79 | * String alias for group page number. | ||
80 | * @public static | ||
81 | */ | ||
82 | public static $alias_group_num_page = '{:png:}'; | ||
83 | |||
84 | /** | ||
85 | * String alias for right shift compensation used to correctly align page numbers on the right. | ||
86 | * @public static | ||
87 | */ | ||
88 | public static $alias_right_shift = '{rsc:'; | ||
89 | |||
90 | /** | ||
91 | * Encryption padding string. | ||
92 | * @public static | ||
93 | */ | ||
94 | public static $enc_padding = "\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A"; | ||
95 | |||
96 | /** | ||
97 | * ByteRange placemark used during digital signature process. | ||
98 | * @since 4.6.028 (2009-08-25) | ||
99 | * @public static | ||
100 | */ | ||
101 | public static $byterange_string = '/ByteRange[0 ********** ********** **********]'; | ||
102 | |||
103 | /** | ||
104 | * Array page boxes names | ||
105 | * @public static | ||
106 | */ | ||
107 | public static $pageboxes = array('MediaBox', 'CropBox', 'BleedBox', 'TrimBox', 'ArtBox'); | ||
108 | |||
109 | // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
110 | |||
111 | /** | ||
112 | * Return the current TCPDF version. | ||
113 | * @return TCPDF version string | ||
114 | * @since 5.9.012 (2010-11-10) | ||
115 | * @public static | ||
116 | */ | ||
117 | public static function getTCPDFVersion() { | ||
118 | return self::$tcpdf_version; | ||
119 | } | ||
120 | |||
121 | /** | ||
122 | * Return the current TCPDF producer. | ||
123 | * @return TCPDF producer string | ||
124 | * @since 6.0.000 (2013-03-16) | ||
125 | * @public static | ||
126 | */ | ||
127 | public static function getTCPDFProducer() { | ||
128 | return "\x54\x43\x50\x44\x46\x20".self::getTCPDFVersion()."\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x74\x63\x70\x64\x66\x2e\x6f\x72\x67\x29"; | ||
129 | } | ||
130 | |||
131 | /** | ||
132 | * Sets the current active configuration setting of magic_quotes_runtime (if the set_magic_quotes_runtime function exist) | ||
133 | * @param $mqr (boolean) FALSE for off, TRUE for on. | ||
134 | * @since 4.6.025 (2009-08-17) | ||
135 | * @public static | ||
136 | */ | ||
137 | public static function set_mqr($mqr) { | ||
138 | if (!defined('PHP_VERSION_ID')) { | ||
139 | $version = PHP_VERSION; | ||
140 | define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4])); | ||
141 | } | ||
142 | if (PHP_VERSION_ID < 50300) { | ||
143 | @set_magic_quotes_runtime($mqr); | ||
144 | } | ||
145 | } | ||
146 | |||
147 | /** | ||
148 | * Gets the current active configuration setting of magic_quotes_runtime (if the get_magic_quotes_runtime function exist) | ||
149 | * @return Returns 0 if magic quotes runtime is off or get_magic_quotes_runtime doesn't exist, 1 otherwise. | ||
150 | * @since 4.6.025 (2009-08-17) | ||
151 | * @public static | ||
152 | */ | ||
153 | public static function get_mqr() { | ||
154 | if (!defined('PHP_VERSION_ID')) { | ||
155 | $version = PHP_VERSION; | ||
156 | define('PHP_VERSION_ID', (($version[0] * 10000) + ($version[2] * 100) + $version[4])); | ||
157 | } | ||
158 | if (PHP_VERSION_ID < 50300) { | ||
159 | return @get_magic_quotes_runtime(); | ||
160 | } | ||
161 | return 0; | ||
162 | } | ||
163 | |||
164 | /** | ||
165 | * Get page dimensions from format name. | ||
166 | * @param $format (mixed) The format name. It can be: <ul> | ||
167 | * <li><b>ISO 216 A Series + 2 SIS 014711 extensions</b></li> | ||
168 | * <li>A0 (841x1189 mm ; 33.11x46.81 in)</li> | ||
169 | * <li>A1 (594x841 mm ; 23.39x33.11 in)</li> | ||
170 | * <li>A2 (420x594 mm ; 16.54x23.39 in)</li> | ||
171 | * <li>A3 (297x420 mm ; 11.69x16.54 in)</li> | ||
172 | * <li>A4 (210x297 mm ; 8.27x11.69 in)</li> | ||
173 | * <li>A5 (148x210 mm ; 5.83x8.27 in)</li> | ||
174 | * <li>A6 (105x148 mm ; 4.13x5.83 in)</li> | ||
175 | * <li>A7 (74x105 mm ; 2.91x4.13 in)</li> | ||
176 | * <li>A8 (52x74 mm ; 2.05x2.91 in)</li> | ||
177 | * <li>A9 (37x52 mm ; 1.46x2.05 in)</li> | ||
178 | * <li>A10 (26x37 mm ; 1.02x1.46 in)</li> | ||
179 | * <li>A11 (18x26 mm ; 0.71x1.02 in)</li> | ||
180 | * <li>A12 (13x18 mm ; 0.51x0.71 in)</li> | ||
181 | * <li><b>ISO 216 B Series + 2 SIS 014711 extensions</b></li> | ||
182 | * <li>B0 (1000x1414 mm ; 39.37x55.67 in)</li> | ||
183 | * <li>B1 (707x1000 mm ; 27.83x39.37 in)</li> | ||
184 | * <li>B2 (500x707 mm ; 19.69x27.83 in)</li> | ||
185 | * <li>B3 (353x500 mm ; 13.90x19.69 in)</li> | ||
186 | * <li>B4 (250x353 mm ; 9.84x13.90 in)</li> | ||
187 | * <li>B5 (176x250 mm ; 6.93x9.84 in)</li> | ||
188 | * <li>B6 (125x176 mm ; 4.92x6.93 in)</li> | ||
189 | * <li>B7 (88x125 mm ; 3.46x4.92 in)</li> | ||
190 | * <li>B8 (62x88 mm ; 2.44x3.46 in)</li> | ||
191 | * <li>B9 (44x62 mm ; 1.73x2.44 in)</li> | ||
192 | * <li>B10 (31x44 mm ; 1.22x1.73 in)</li> | ||
193 | * <li>B11 (22x31 mm ; 0.87x1.22 in)</li> | ||
194 | * <li>B12 (15x22 mm ; 0.59x0.87 in)</li> | ||
195 | * <li><b>ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION</b></li> | ||
196 | * <li>C0 (917x1297 mm ; 36.10x51.06 in)</li> | ||
197 | * <li>C1 (648x917 mm ; 25.51x36.10 in)</li> | ||
198 | * <li>C2 (458x648 mm ; 18.03x25.51 in)</li> | ||
199 | * <li>C3 (324x458 mm ; 12.76x18.03 in)</li> | ||
200 | * <li>C4 (229x324 mm ; 9.02x12.76 in)</li> | ||
201 | * <li>C5 (162x229 mm ; 6.38x9.02 in)</li> | ||
202 | * <li>C6 (114x162 mm ; 4.49x6.38 in)</li> | ||
203 | * <li>C7 (81x114 mm ; 3.19x4.49 in)</li> | ||
204 | * <li>C8 (57x81 mm ; 2.24x3.19 in)</li> | ||
205 | * <li>C9 (40x57 mm ; 1.57x2.24 in)</li> | ||
206 | * <li>C10 (28x40 mm ; 1.10x1.57 in)</li> | ||
207 | * <li>C11 (20x28 mm ; 0.79x1.10 in)</li> | ||
208 | * <li>C12 (14x20 mm ; 0.55x0.79 in)</li> | ||
209 | * <li>C76 (81x162 mm ; 3.19x6.38 in)</li> | ||
210 | * <li>DL (110x220 mm ; 4.33x8.66 in)</li> | ||
211 | * <li><b>SIS 014711 E Series</b></li> | ||
212 | * <li>E0 (879x1241 mm ; 34.61x48.86 in)</li> | ||
213 | * <li>E1 (620x879 mm ; 24.41x34.61 in)</li> | ||
214 | * <li>E2 (440x620 mm ; 17.32x24.41 in)</li> | ||
215 | * <li>E3 (310x440 mm ; 12.20x17.32 in)</li> | ||
216 | * <li>E4 (220x310 mm ; 8.66x12.20 in)</li> | ||
217 | * <li>E5 (155x220 mm ; 6.10x8.66 in)</li> | ||
218 | * <li>E6 (110x155 mm ; 4.33x6.10 in)</li> | ||
219 | * <li>E7 (78x110 mm ; 3.07x4.33 in)</li> | ||
220 | * <li>E8 (55x78 mm ; 2.17x3.07 in)</li> | ||
221 | * <li>E9 (39x55 mm ; 1.54x2.17 in)</li> | ||
222 | * <li>E10 (27x39 mm ; 1.06x1.54 in)</li> | ||
223 | * <li>E11 (19x27 mm ; 0.75x1.06 in)</li> | ||
224 | * <li>E12 (13x19 mm ; 0.51x0.75 in)</li> | ||
225 | * <li><b>SIS 014711 G Series</b></li> | ||
226 | * <li>G0 (958x1354 mm ; 37.72x53.31 in)</li> | ||
227 | * <li>G1 (677x958 mm ; 26.65x37.72 in)</li> | ||
228 | * <li>G2 (479x677 mm ; 18.86x26.65 in)</li> | ||
229 | * <li>G3 (338x479 mm ; 13.31x18.86 in)</li> | ||
230 | * <li>G4 (239x338 mm ; 9.41x13.31 in)</li> | ||
231 | * <li>G5 (169x239 mm ; 6.65x9.41 in)</li> | ||
232 | * <li>G6 (119x169 mm ; 4.69x6.65 in)</li> | ||
233 | * <li>G7 (84x119 mm ; 3.31x4.69 in)</li> | ||
234 | * <li>G8 (59x84 mm ; 2.32x3.31 in)</li> | ||
235 | * <li>G9 (42x59 mm ; 1.65x2.32 in)</li> | ||
236 | * <li>G10 (29x42 mm ; 1.14x1.65 in)</li> | ||
237 | * <li>G11 (21x29 mm ; 0.83x1.14 in)</li> | ||
238 | * <li>G12 (14x21 mm ; 0.55x0.83 in)</li> | ||
239 | * <li><b>ISO Press</b></li> | ||
240 | * <li>RA0 (860x1220 mm ; 33.86x48.03 in)</li> | ||
241 | * <li>RA1 (610x860 mm ; 24.02x33.86 in)</li> | ||
242 | * <li>RA2 (430x610 mm ; 16.93x24.02 in)</li> | ||
243 | * <li>RA3 (305x430 mm ; 12.01x16.93 in)</li> | ||
244 | * <li>RA4 (215x305 mm ; 8.46x12.01 in)</li> | ||
245 | * <li>SRA0 (900x1280 mm ; 35.43x50.39 in)</li> | ||
246 | * <li>SRA1 (640x900 mm ; 25.20x35.43 in)</li> | ||
247 | * <li>SRA2 (450x640 mm ; 17.72x25.20 in)</li> | ||
248 | * <li>SRA3 (320x450 mm ; 12.60x17.72 in)</li> | ||
249 | * <li>SRA4 (225x320 mm ; 8.86x12.60 in)</li> | ||
250 | * <li><b>German DIN 476</b></li> | ||
251 | * <li>4A0 (1682x2378 mm ; 66.22x93.62 in)</li> | ||
252 | * <li>2A0 (1189x1682 mm ; 46.81x66.22 in)</li> | ||
253 | * <li><b>Variations on the ISO Standard</b></li> | ||
254 | * <li>A2_EXTRA (445x619 mm ; 17.52x24.37 in)</li> | ||
255 | * <li>A3+ (329x483 mm ; 12.95x19.02 in)</li> | ||
256 | * <li>A3_EXTRA (322x445 mm ; 12.68x17.52 in)</li> | ||
257 | * <li>A3_SUPER (305x508 mm ; 12.01x20.00 in)</li> | ||
258 | * <li>SUPER_A3 (305x487 mm ; 12.01x19.17 in)</li> | ||
259 | * <li>A4_EXTRA (235x322 mm ; 9.25x12.68 in)</li> | ||
260 | * <li>A4_SUPER (229x322 mm ; 9.02x12.68 in)</li> | ||
261 | * <li>SUPER_A4 (227x356 mm ; 8.94x14.02 in)</li> | ||
262 | * <li>A4_LONG (210x348 mm ; 8.27x13.70 in)</li> | ||
263 | * <li>F4 (210x330 mm ; 8.27x12.99 in)</li> | ||
264 | * <li>SO_B5_EXTRA (202x276 mm ; 7.95x10.87 in)</li> | ||
265 | * <li>A5_EXTRA (173x235 mm ; 6.81x9.25 in)</li> | ||
266 | * <li><b>ANSI Series</b></li> | ||
267 | * <li>ANSI_E (864x1118 mm ; 34.00x44.00 in)</li> | ||
268 | * <li>ANSI_D (559x864 mm ; 22.00x34.00 in)</li> | ||
269 | * <li>ANSI_C (432x559 mm ; 17.00x22.00 in)</li> | ||
270 | * <li>ANSI_B (279x432 mm ; 11.00x17.00 in)</li> | ||
271 | * <li>ANSI_A (216x279 mm ; 8.50x11.00 in)</li> | ||
272 | * <li><b>Traditional 'Loose' North American Paper Sizes</b></li> | ||
273 | * <li>LEDGER, USLEDGER (432x279 mm ; 17.00x11.00 in)</li> | ||
274 | * <li>TABLOID, USTABLOID, BIBLE, ORGANIZERK (279x432 mm ; 11.00x17.00 in)</li> | ||
275 | * <li>LETTER, USLETTER, ORGANIZERM (216x279 mm ; 8.50x11.00 in)</li> | ||
276 | * <li>LEGAL, USLEGAL (216x356 mm ; 8.50x14.00 in)</li> | ||
277 | * <li>GLETTER, GOVERNMENTLETTER (203x267 mm ; 8.00x10.50 in)</li> | ||
278 | * <li>JLEGAL, JUNIORLEGAL (203x127 mm ; 8.00x5.00 in)</li> | ||
279 | * <li><b>Other North American Paper Sizes</b></li> | ||
280 | * <li>QUADDEMY (889x1143 mm ; 35.00x45.00 in)</li> | ||
281 | * <li>SUPER_B (330x483 mm ; 13.00x19.00 in)</li> | ||
282 | * <li>QUARTO (229x279 mm ; 9.00x11.00 in)</li> | ||
283 | * <li>FOLIO, GOVERNMENTLEGAL (216x330 mm ; 8.50x13.00 in)</li> | ||
284 | * <li>EXECUTIVE, MONARCH (184x267 mm ; 7.25x10.50 in)</li> | ||
285 | * <li>MEMO, STATEMENT, ORGANIZERL (140x216 mm ; 5.50x8.50 in)</li> | ||
286 | * <li>FOOLSCAP (210x330 mm ; 8.27x13.00 in)</li> | ||
287 | * <li>COMPACT (108x171 mm ; 4.25x6.75 in)</li> | ||
288 | * <li>ORGANIZERJ (70x127 mm ; 2.75x5.00 in)</li> | ||
289 | * <li><b>Canadian standard CAN 2-9.60M</b></li> | ||
290 | * <li>P1 (560x860 mm ; 22.05x33.86 in)</li> | ||
291 | * <li>P2 (430x560 mm ; 16.93x22.05 in)</li> | ||
292 | * <li>P3 (280x430 mm ; 11.02x16.93 in)</li> | ||
293 | * <li>P4 (215x280 mm ; 8.46x11.02 in)</li> | ||
294 | * <li>P5 (140x215 mm ; 5.51x8.46 in)</li> | ||
295 | * <li>P6 (107x140 mm ; 4.21x5.51 in)</li> | ||
296 | * <li><b>North American Architectural Sizes</b></li> | ||
297 | * <li>ARCH_E (914x1219 mm ; 36.00x48.00 in)</li> | ||
298 | * <li>ARCH_E1 (762x1067 mm ; 30.00x42.00 in)</li> | ||
299 | * <li>ARCH_D (610x914 mm ; 24.00x36.00 in)</li> | ||
300 | * <li>ARCH_C, BROADSHEET (457x610 mm ; 18.00x24.00 in)</li> | ||
301 | * <li>ARCH_B (305x457 mm ; 12.00x18.00 in)</li> | ||
302 | * <li>ARCH_A (229x305 mm ; 9.00x12.00 in)</li> | ||
303 | * <li><b>Announcement Envelopes</b></li> | ||
304 | * <li>ANNENV_A2 (111x146 mm ; 4.37x5.75 in)</li> | ||
305 | * <li>ANNENV_A6 (121x165 mm ; 4.75x6.50 in)</li> | ||
306 | * <li>ANNENV_A7 (133x184 mm ; 5.25x7.25 in)</li> | ||
307 | * <li>ANNENV_A8 (140x206 mm ; 5.50x8.12 in)</li> | ||
308 | * <li>ANNENV_A10 (159x244 mm ; 6.25x9.62 in)</li> | ||
309 | * <li>ANNENV_SLIM (98x225 mm ; 3.87x8.87 in)</li> | ||
310 | * <li><b>Commercial Envelopes</b></li> | ||
311 | * <li>COMMENV_N6_1/4 (89x152 mm ; 3.50x6.00 in)</li> | ||
312 | * <li>COMMENV_N6_3/4 (92x165 mm ; 3.62x6.50 in)</li> | ||
313 | * <li>COMMENV_N8 (98x191 mm ; 3.87x7.50 in)</li> | ||
314 | * <li>COMMENV_N9 (98x225 mm ; 3.87x8.87 in)</li> | ||
315 | * <li>COMMENV_N10 (105x241 mm ; 4.12x9.50 in)</li> | ||
316 | * <li>COMMENV_N11 (114x263 mm ; 4.50x10.37 in)</li> | ||
317 | * <li>COMMENV_N12 (121x279 mm ; 4.75x11.00 in)</li> | ||
318 | * <li>COMMENV_N14 (127x292 mm ; 5.00x11.50 in)</li> | ||
319 | * <li><b>Catalogue Envelopes</b></li> | ||
320 | * <li>CATENV_N1 (152x229 mm ; 6.00x9.00 in)</li> | ||
321 | * <li>CATENV_N1_3/4 (165x241 mm ; 6.50x9.50 in)</li> | ||
322 | * <li>CATENV_N2 (165x254 mm ; 6.50x10.00 in)</li> | ||
323 | * <li>CATENV_N3 (178x254 mm ; 7.00x10.00 in)</li> | ||
324 | * <li>CATENV_N6 (191x267 mm ; 7.50x10.50 in)</li> | ||
325 | * <li>CATENV_N7 (203x279 mm ; 8.00x11.00 in)</li> | ||
326 | * <li>CATENV_N8 (210x286 mm ; 8.25x11.25 in)</li> | ||
327 | * <li>CATENV_N9_1/2 (216x267 mm ; 8.50x10.50 in)</li> | ||
328 | * <li>CATENV_N9_3/4 (222x286 mm ; 8.75x11.25 in)</li> | ||
329 | * <li>CATENV_N10_1/2 (229x305 mm ; 9.00x12.00 in)</li> | ||
330 | * <li>CATENV_N12_1/2 (241x318 mm ; 9.50x12.50 in)</li> | ||
331 | * <li>CATENV_N13_1/2 (254x330 mm ; 10.00x13.00 in)</li> | ||
332 | * <li>CATENV_N14_1/4 (286x311 mm ; 11.25x12.25 in)</li> | ||
333 | * <li>CATENV_N14_1/2 (292x368 mm ; 11.50x14.50 in)</li> | ||
334 | * <li><b>Japanese (JIS P 0138-61) Standard B-Series</b></li> | ||
335 | * <li>JIS_B0 (1030x1456 mm ; 40.55x57.32 in)</li> | ||
336 | * <li>JIS_B1 (728x1030 mm ; 28.66x40.55 in)</li> | ||
337 | * <li>JIS_B2 (515x728 mm ; 20.28x28.66 in)</li> | ||
338 | * <li>JIS_B3 (364x515 mm ; 14.33x20.28 in)</li> | ||
339 | * <li>JIS_B4 (257x364 mm ; 10.12x14.33 in)</li> | ||
340 | * <li>JIS_B5 (182x257 mm ; 7.17x10.12 in)</li> | ||
341 | * <li>JIS_B6 (128x182 mm ; 5.04x7.17 in)</li> | ||
342 | * <li>JIS_B7 (91x128 mm ; 3.58x5.04 in)</li> | ||
343 | * <li>JIS_B8 (64x91 mm ; 2.52x3.58 in)</li> | ||
344 | * <li>JIS_B9 (45x64 mm ; 1.77x2.52 in)</li> | ||
345 | * <li>JIS_B10 (32x45 mm ; 1.26x1.77 in)</li> | ||
346 | * <li>JIS_B11 (22x32 mm ; 0.87x1.26 in)</li> | ||
347 | * <li>JIS_B12 (16x22 mm ; 0.63x0.87 in)</li> | ||
348 | * <li><b>PA Series</b></li> | ||
349 | * <li>PA0 (840x1120 mm ; 33.07x44.09 in)</li> | ||
350 | * <li>PA1 (560x840 mm ; 22.05x33.07 in)</li> | ||
351 | * <li>PA2 (420x560 mm ; 16.54x22.05 in)</li> | ||
352 | * <li>PA3 (280x420 mm ; 11.02x16.54 in)</li> | ||
353 | * <li>PA4 (210x280 mm ; 8.27x11.02 in)</li> | ||
354 | * <li>PA5 (140x210 mm ; 5.51x8.27 in)</li> | ||
355 | * <li>PA6 (105x140 mm ; 4.13x5.51 in)</li> | ||
356 | * <li>PA7 (70x105 mm ; 2.76x4.13 in)</li> | ||
357 | * <li>PA8 (52x70 mm ; 2.05x2.76 in)</li> | ||
358 | * <li>PA9 (35x52 mm ; 1.38x2.05 in)</li> | ||
359 | * <li>PA10 (26x35 mm ; 1.02x1.38 in)</li> | ||
360 | * <li><b>Standard Photographic Print Sizes</b></li> | ||
361 | * <li>PASSPORT_PHOTO (35x45 mm ; 1.38x1.77 in)</li> | ||
362 | * <li>E (82x120 mm ; 3.25x4.72 in)</li> | ||
363 | * <li>3R, L (89x127 mm ; 3.50x5.00 in)</li> | ||
364 | * <li>4R, KG (102x152 mm ; 4.02x5.98 in)</li> | ||
365 | * <li>4D (120x152 mm ; 4.72x5.98 in)</li> | ||
366 | * <li>5R, 2L (127x178 mm ; 5.00x7.01 in)</li> | ||
367 | * <li>6R, 8P (152x203 mm ; 5.98x7.99 in)</li> | ||
368 | * <li>8R, 6P (203x254 mm ; 7.99x10.00 in)</li> | ||
369 | * <li>S8R, 6PW (203x305 mm ; 7.99x12.01 in)</li> | ||
370 | * <li>10R, 4P (254x305 mm ; 10.00x12.01 in)</li> | ||
371 | * <li>S10R, 4PW (254x381 mm ; 10.00x15.00 in)</li> | ||
372 | * <li>11R (279x356 mm ; 10.98x14.02 in)</li> | ||
373 | * <li>S11R (279x432 mm ; 10.98x17.01 in)</li> | ||
374 | * <li>12R (305x381 mm ; 12.01x15.00 in)</li> | ||
375 | * <li>S12R (305x456 mm ; 12.01x17.95 in)</li> | ||
376 | * <li><b>Common Newspaper Sizes</b></li> | ||
377 | * <li>NEWSPAPER_BROADSHEET (750x600 mm ; 29.53x23.62 in)</li> | ||
378 | * <li>NEWSPAPER_BERLINER (470x315 mm ; 18.50x12.40 in)</li> | ||
379 | * <li>NEWSPAPER_COMPACT, NEWSPAPER_TABLOID (430x280 mm ; 16.93x11.02 in)</li> | ||
380 | * <li><b>Business Cards</b></li> | ||
381 | * <li>CREDIT_CARD, BUSINESS_CARD, BUSINESS_CARD_ISO7810 (54x86 mm ; 2.13x3.37 in)</li> | ||
382 | * <li>BUSINESS_CARD_ISO216 (52x74 mm ; 2.05x2.91 in)</li> | ||
383 | * <li>BUSINESS_CARD_IT, BUSINESS_CARD_UK, BUSINESS_CARD_FR, BUSINESS_CARD_DE, BUSINESS_CARD_ES (55x85 mm ; 2.17x3.35 in)</li> | ||
384 | * <li>BUSINESS_CARD_US, BUSINESS_CARD_CA (51x89 mm ; 2.01x3.50 in)</li> | ||
385 | * <li>BUSINESS_CARD_JP (55x91 mm ; 2.17x3.58 in)</li> | ||
386 | * <li>BUSINESS_CARD_HK (54x90 mm ; 2.13x3.54 in)</li> | ||
387 | * <li>BUSINESS_CARD_AU, BUSINESS_CARD_DK, BUSINESS_CARD_SE (55x90 mm ; 2.17x3.54 in)</li> | ||
388 | * <li>BUSINESS_CARD_RU, BUSINESS_CARD_CZ, BUSINESS_CARD_FI, BUSINESS_CARD_HU, BUSINESS_CARD_IL (50x90 mm ; 1.97x3.54 in)</li> | ||
389 | * <li><b>Billboards</b></li> | ||
390 | * <li>4SHEET (1016x1524 mm ; 40.00x60.00 in)</li> | ||
391 | * <li>6SHEET (1200x1800 mm ; 47.24x70.87 in)</li> | ||
392 | * <li>12SHEET (3048x1524 mm ; 120.00x60.00 in)</li> | ||
393 | * <li>16SHEET (2032x3048 mm ; 80.00x120.00 in)</li> | ||
394 | * <li>32SHEET (4064x3048 mm ; 160.00x120.00 in)</li> | ||
395 | * <li>48SHEET (6096x3048 mm ; 240.00x120.00 in)</li> | ||
396 | * <li>64SHEET (8128x3048 mm ; 320.00x120.00 in)</li> | ||
397 | * <li>96SHEET (12192x3048 mm ; 480.00x120.00 in)</li> | ||
398 | * <li><b>Old Imperial English (some are still used in USA)</b></li> | ||
399 | * <li>EN_EMPEROR (1219x1829 mm ; 48.00x72.00 in)</li> | ||
400 | * <li>EN_ANTIQUARIAN (787x1346 mm ; 31.00x53.00 in)</li> | ||
401 | * <li>EN_GRAND_EAGLE (730x1067 mm ; 28.75x42.00 in)</li> | ||
402 | * <li>EN_DOUBLE_ELEPHANT (679x1016 mm ; 26.75x40.00 in)</li> | ||
403 | * <li>EN_ATLAS (660x864 mm ; 26.00x34.00 in)</li> | ||
404 | * <li>EN_COLOMBIER (597x876 mm ; 23.50x34.50 in)</li> | ||
405 | * <li>EN_ELEPHANT (584x711 mm ; 23.00x28.00 in)</li> | ||
406 | * <li>EN_DOUBLE_DEMY (572x902 mm ; 22.50x35.50 in)</li> | ||
407 | * <li>EN_IMPERIAL (559x762 mm ; 22.00x30.00 in)</li> | ||
408 | * <li>EN_PRINCESS (546x711 mm ; 21.50x28.00 in)</li> | ||
409 | * <li>EN_CARTRIDGE (533x660 mm ; 21.00x26.00 in)</li> | ||
410 | * <li>EN_DOUBLE_LARGE_POST (533x838 mm ; 21.00x33.00 in)</li> | ||
411 | * <li>EN_ROYAL (508x635 mm ; 20.00x25.00 in)</li> | ||
412 | * <li>EN_SHEET, EN_HALF_POST (495x597 mm ; 19.50x23.50 in)</li> | ||
413 | * <li>EN_SUPER_ROYAL (483x686 mm ; 19.00x27.00 in)</li> | ||
414 | * <li>EN_DOUBLE_POST (483x775 mm ; 19.00x30.50 in)</li> | ||
415 | * <li>EN_MEDIUM (445x584 mm ; 17.50x23.00 in)</li> | ||
416 | * <li>EN_DEMY (445x572 mm ; 17.50x22.50 in)</li> | ||
417 | * <li>EN_LARGE_POST (419x533 mm ; 16.50x21.00 in)</li> | ||
418 | * <li>EN_COPY_DRAUGHT (406x508 mm ; 16.00x20.00 in)</li> | ||
419 | * <li>EN_POST (394x489 mm ; 15.50x19.25 in)</li> | ||
420 | * <li>EN_CROWN (381x508 mm ; 15.00x20.00 in)</li> | ||
421 | * <li>EN_PINCHED_POST (375x470 mm ; 14.75x18.50 in)</li> | ||
422 | * <li>EN_BRIEF (343x406 mm ; 13.50x16.00 in)</li> | ||
423 | * <li>EN_FOOLSCAP (343x432 mm ; 13.50x17.00 in)</li> | ||
424 | * <li>EN_SMALL_FOOLSCAP (337x419 mm ; 13.25x16.50 in)</li> | ||
425 | * <li>EN_POTT (318x381 mm ; 12.50x15.00 in)</li> | ||
426 | * <li><b>Old Imperial Belgian</b></li> | ||
427 | * <li>BE_GRAND_AIGLE (700x1040 mm ; 27.56x40.94 in)</li> | ||
428 | * <li>BE_COLOMBIER (620x850 mm ; 24.41x33.46 in)</li> | ||
429 | * <li>BE_DOUBLE_CARRE (620x920 mm ; 24.41x36.22 in)</li> | ||
430 | * <li>BE_ELEPHANT (616x770 mm ; 24.25x30.31 in)</li> | ||
431 | * <li>BE_PETIT_AIGLE (600x840 mm ; 23.62x33.07 in)</li> | ||
432 | * <li>BE_GRAND_JESUS (550x730 mm ; 21.65x28.74 in)</li> | ||
433 | * <li>BE_JESUS (540x730 mm ; 21.26x28.74 in)</li> | ||
434 | * <li>BE_RAISIN (500x650 mm ; 19.69x25.59 in)</li> | ||
435 | * <li>BE_GRAND_MEDIAN (460x605 mm ; 18.11x23.82 in)</li> | ||
436 | * <li>BE_DOUBLE_POSTE (435x565 mm ; 17.13x22.24 in)</li> | ||
437 | * <li>BE_COQUILLE (430x560 mm ; 16.93x22.05 in)</li> | ||
438 | * <li>BE_PETIT_MEDIAN (415x530 mm ; 16.34x20.87 in)</li> | ||
439 | * <li>BE_RUCHE (360x460 mm ; 14.17x18.11 in)</li> | ||
440 | * <li>BE_PROPATRIA (345x430 mm ; 13.58x16.93 in)</li> | ||
441 | * <li>BE_LYS (317x397 mm ; 12.48x15.63 in)</li> | ||
442 | * <li>BE_POT (307x384 mm ; 12.09x15.12 in)</li> | ||
443 | * <li>BE_ROSETTE (270x347 mm ; 10.63x13.66 in)</li> | ||
444 | * <li><b>Old Imperial French</b></li> | ||
445 | * <li>FR_UNIVERS (1000x1300 mm ; 39.37x51.18 in)</li> | ||
446 | * <li>FR_DOUBLE_COLOMBIER (900x1260 mm ; 35.43x49.61 in)</li> | ||
447 | * <li>FR_GRANDE_MONDE (900x1260 mm ; 35.43x49.61 in)</li> | ||
448 | * <li>FR_DOUBLE_SOLEIL (800x1200 mm ; 31.50x47.24 in)</li> | ||
449 | * <li>FR_DOUBLE_JESUS (760x1120 mm ; 29.92x44.09 in)</li> | ||
450 | * <li>FR_GRAND_AIGLE (750x1060 mm ; 29.53x41.73 in)</li> | ||
451 | * <li>FR_PETIT_AIGLE (700x940 mm ; 27.56x37.01 in)</li> | ||
452 | * <li>FR_DOUBLE_RAISIN (650x1000 mm ; 25.59x39.37 in)</li> | ||
453 | * <li>FR_JOURNAL (650x940 mm ; 25.59x37.01 in)</li> | ||
454 | * <li>FR_COLOMBIER_AFFICHE (630x900 mm ; 24.80x35.43 in)</li> | ||
455 | * <li>FR_DOUBLE_CAVALIER (620x920 mm ; 24.41x36.22 in)</li> | ||
456 | * <li>FR_CLOCHE (600x800 mm ; 23.62x31.50 in)</li> | ||
457 | * <li>FR_SOLEIL (600x800 mm ; 23.62x31.50 in)</li> | ||
458 | * <li>FR_DOUBLE_CARRE (560x900 mm ; 22.05x35.43 in)</li> | ||
459 | * <li>FR_DOUBLE_COQUILLE (560x880 mm ; 22.05x34.65 in)</li> | ||
460 | * <li>FR_JESUS (560x760 mm ; 22.05x29.92 in)</li> | ||
461 | * <li>FR_RAISIN (500x650 mm ; 19.69x25.59 in)</li> | ||
462 | * <li>FR_CAVALIER (460x620 mm ; 18.11x24.41 in)</li> | ||
463 | * <li>FR_DOUBLE_COURONNE (460x720 mm ; 18.11x28.35 in)</li> | ||
464 | * <li>FR_CARRE (450x560 mm ; 17.72x22.05 in)</li> | ||
465 | * <li>FR_COQUILLE (440x560 mm ; 17.32x22.05 in)</li> | ||
466 | * <li>FR_DOUBLE_TELLIERE (440x680 mm ; 17.32x26.77 in)</li> | ||
467 | * <li>FR_DOUBLE_CLOCHE (400x600 mm ; 15.75x23.62 in)</li> | ||
468 | * <li>FR_DOUBLE_POT (400x620 mm ; 15.75x24.41 in)</li> | ||
469 | * <li>FR_ECU (400x520 mm ; 15.75x20.47 in)</li> | ||
470 | * <li>FR_COURONNE (360x460 mm ; 14.17x18.11 in)</li> | ||
471 | * <li>FR_TELLIERE (340x440 mm ; 13.39x17.32 in)</li> | ||
472 | * <li>FR_POT (310x400 mm ; 12.20x15.75 in)</li> | ||
473 | * </ul> | ||
474 | * @return array containing page width and height in points | ||
475 | * @since 5.0.010 (2010-05-17) | ||
476 | * @public static | ||
477 | */ | ||
478 | public static function getPageSizeFromFormat($format) { | ||
479 | // Paper cordinates are calculated in this way: (inches * 72) where (1 inch = 25.4 mm) | ||
480 | switch (strtoupper($format)) { | ||
481 | // ISO 216 A Series + 2 SIS 014711 extensions | ||
482 | case 'A0' : {$pf = array( 2383.937, 3370.394); break;} | ||
483 | case 'A1' : {$pf = array( 1683.780, 2383.937); break;} | ||
484 | case 'A2' : {$pf = array( 1190.551, 1683.780); break;} | ||
485 | case 'A3' : {$pf = array( 841.890, 1190.551); break;} | ||
486 | case 'A4' : {$pf = array( 595.276, 841.890); break;} | ||
487 | case 'A5' : {$pf = array( 419.528, 595.276); break;} | ||
488 | case 'A6' : {$pf = array( 297.638, 419.528); break;} | ||
489 | case 'A7' : {$pf = array( 209.764, 297.638); break;} | ||
490 | case 'A8' : {$pf = array( 147.402, 209.764); break;} | ||
491 | case 'A9' : {$pf = array( 104.882, 147.402); break;} | ||
492 | case 'A10': {$pf = array( 73.701, 104.882); break;} | ||
493 | case 'A11': {$pf = array( 51.024, 73.701); break;} | ||
494 | case 'A12': {$pf = array( 36.850, 51.024); break;} | ||
495 | // ISO 216 B Series + 2 SIS 014711 extensions | ||
496 | case 'B0' : {$pf = array( 2834.646, 4008.189); break;} | ||
497 | case 'B1' : {$pf = array( 2004.094, 2834.646); break;} | ||
498 | case 'B2' : {$pf = array( 1417.323, 2004.094); break;} | ||
499 | case 'B3' : {$pf = array( 1000.630, 1417.323); break;} | ||
500 | case 'B4' : {$pf = array( 708.661, 1000.630); break;} | ||
501 | case 'B5' : {$pf = array( 498.898, 708.661); break;} | ||
502 | case 'B6' : {$pf = array( 354.331, 498.898); break;} | ||
503 | case 'B7' : {$pf = array( 249.449, 354.331); break;} | ||
504 | case 'B8' : {$pf = array( 175.748, 249.449); break;} | ||
505 | case 'B9' : {$pf = array( 124.724, 175.748); break;} | ||
506 | case 'B10': {$pf = array( 87.874, 124.724); break;} | ||
507 | case 'B11': {$pf = array( 62.362, 87.874); break;} | ||
508 | case 'B12': {$pf = array( 42.520, 62.362); break;} | ||
509 | // ISO 216 C Series + 2 SIS 014711 extensions + 2 EXTENSION | ||
510 | case 'C0' : {$pf = array( 2599.370, 3676.535); break;} | ||
511 | case 'C1' : {$pf = array( 1836.850, 2599.370); break;} | ||
512 | case 'C2' : {$pf = array( 1298.268, 1836.850); break;} | ||
513 | case 'C3' : {$pf = array( 918.425, 1298.268); break;} | ||
514 | case 'C4' : {$pf = array( 649.134, 918.425); break;} | ||
515 | case 'C5' : {$pf = array( 459.213, 649.134); break;} | ||
516 | case 'C6' : {$pf = array( 323.150, 459.213); break;} | ||
517 | case 'C7' : {$pf = array( 229.606, 323.150); break;} | ||
518 | case 'C8' : {$pf = array( 161.575, 229.606); break;} | ||
519 | case 'C9' : {$pf = array( 113.386, 161.575); break;} | ||
520 | case 'C10': {$pf = array( 79.370, 113.386); break;} | ||
521 | case 'C11': {$pf = array( 56.693, 79.370); break;} | ||
522 | case 'C12': {$pf = array( 39.685, 56.693); break;} | ||
523 | case 'C76': {$pf = array( 229.606, 459.213); break;} | ||
524 | case 'DL' : {$pf = array( 311.811, 623.622); break;} | ||
525 | // SIS 014711 E Series | ||
526 | case 'E0' : {$pf = array( 2491.654, 3517.795); break;} | ||
527 | case 'E1' : {$pf = array( 1757.480, 2491.654); break;} | ||
528 | case 'E2' : {$pf = array( 1247.244, 1757.480); break;} | ||
529 | case 'E3' : {$pf = array( 878.740, 1247.244); break;} | ||
530 | case 'E4' : {$pf = array( 623.622, 878.740); break;} | ||
531 | case 'E5' : {$pf = array( 439.370, 623.622); break;} | ||
532 | case 'E6' : {$pf = array( 311.811, 439.370); break;} | ||
533 | case 'E7' : {$pf = array( 221.102, 311.811); break;} | ||
534 | case 'E8' : {$pf = array( 155.906, 221.102); break;} | ||
535 | case 'E9' : {$pf = array( 110.551, 155.906); break;} | ||
536 | case 'E10': {$pf = array( 76.535, 110.551); break;} | ||
537 | case 'E11': {$pf = array( 53.858, 76.535); break;} | ||
538 | case 'E12': {$pf = array( 36.850, 53.858); break;} | ||
539 | // SIS 014711 G Series | ||
540 | case 'G0' : {$pf = array( 2715.591, 3838.110); break;} | ||
541 | case 'G1' : {$pf = array( 1919.055, 2715.591); break;} | ||
542 | case 'G2' : {$pf = array( 1357.795, 1919.055); break;} | ||
543 | case 'G3' : {$pf = array( 958.110, 1357.795); break;} | ||
544 | case 'G4' : {$pf = array( 677.480, 958.110); break;} | ||
545 | case 'G5' : {$pf = array( 479.055, 677.480); break;} | ||
546 | case 'G6' : {$pf = array( 337.323, 479.055); break;} | ||
547 | case 'G7' : {$pf = array( 238.110, 337.323); break;} | ||
548 | case 'G8' : {$pf = array( 167.244, 238.110); break;} | ||
549 | case 'G9' : {$pf = array( 119.055, 167.244); break;} | ||
550 | case 'G10': {$pf = array( 82.205, 119.055); break;} | ||
551 | case 'G11': {$pf = array( 59.528, 82.205); break;} | ||
552 | case 'G12': {$pf = array( 39.685, 59.528); break;} | ||
553 | // ISO Press | ||
554 | case 'RA0': {$pf = array( 2437.795, 3458.268); break;} | ||
555 | case 'RA1': {$pf = array( 1729.134, 2437.795); break;} | ||
556 | case 'RA2': {$pf = array( 1218.898, 1729.134); break;} | ||
557 | case 'RA3': {$pf = array( 864.567, 1218.898); break;} | ||
558 | case 'RA4': {$pf = array( 609.449, 864.567); break;} | ||
559 | case 'SRA0': {$pf = array( 2551.181, 3628.346); break;} | ||
560 | case 'SRA1': {$pf = array( 1814.173, 2551.181); break;} | ||
561 | case 'SRA2': {$pf = array( 1275.591, 1814.173); break;} | ||
562 | case 'SRA3': {$pf = array( 907.087, 1275.591); break;} | ||
563 | case 'SRA4': {$pf = array( 637.795, 907.087); break;} | ||
564 | // German DIN 476 | ||
565 | case '4A0': {$pf = array( 4767.874, 6740.787); break;} | ||
566 | case '2A0': {$pf = array( 3370.394, 4767.874); break;} | ||
567 | // Variations on the ISO Standard | ||
568 | case 'A2_EXTRA' : {$pf = array( 1261.417, 1754.646); break;} | ||
569 | case 'A3+' : {$pf = array( 932.598, 1369.134); break;} | ||
570 | case 'A3_EXTRA' : {$pf = array( 912.756, 1261.417); break;} | ||
571 | case 'A3_SUPER' : {$pf = array( 864.567, 1440.000); break;} | ||
572 | case 'SUPER_A3' : {$pf = array( 864.567, 1380.472); break;} | ||
573 | case 'A4_EXTRA' : {$pf = array( 666.142, 912.756); break;} | ||
574 | case 'A4_SUPER' : {$pf = array( 649.134, 912.756); break;} | ||
575 | case 'SUPER_A4' : {$pf = array( 643.465, 1009.134); break;} | ||
576 | case 'A4_LONG' : {$pf = array( 595.276, 986.457); break;} | ||
577 | case 'F4' : {$pf = array( 595.276, 935.433); break;} | ||
578 | case 'SO_B5_EXTRA': {$pf = array( 572.598, 782.362); break;} | ||
579 | case 'A5_EXTRA' : {$pf = array( 490.394, 666.142); break;} | ||
580 | // ANSI Series | ||
581 | case 'ANSI_E': {$pf = array( 2448.000, 3168.000); break;} | ||
582 | case 'ANSI_D': {$pf = array( 1584.000, 2448.000); break;} | ||
583 | case 'ANSI_C': {$pf = array( 1224.000, 1584.000); break;} | ||
584 | case 'ANSI_B': {$pf = array( 792.000, 1224.000); break;} | ||
585 | case 'ANSI_A': {$pf = array( 612.000, 792.000); break;} | ||
586 | // Traditional 'Loose' North American Paper Sizes | ||
587 | case 'USLEDGER': | ||
588 | case 'LEDGER' : {$pf = array( 1224.000, 792.000); break;} | ||
589 | case 'ORGANIZERK': | ||
590 | case 'BIBLE': | ||
591 | case 'USTABLOID': | ||
592 | case 'TABLOID': {$pf = array( 792.000, 1224.000); break;} | ||
593 | case 'ORGANIZERM': | ||
594 | case 'USLETTER': | ||
595 | case 'LETTER' : {$pf = array( 612.000, 792.000); break;} | ||
596 | case 'USLEGAL': | ||
597 | case 'LEGAL' : {$pf = array( 612.000, 1008.000); break;} | ||
598 | case 'GOVERNMENTLETTER': | ||
599 | case 'GLETTER': {$pf = array( 576.000, 756.000); break;} | ||
600 | case 'JUNIORLEGAL': | ||
601 | case 'JLEGAL' : {$pf = array( 576.000, 360.000); break;} | ||
602 | // Other North American Paper Sizes | ||
603 | case 'QUADDEMY': {$pf = array( 2520.000, 3240.000); break;} | ||
604 | case 'SUPER_B': {$pf = array( 936.000, 1368.000); break;} | ||
605 | case 'QUARTO': {$pf = array( 648.000, 792.000); break;} | ||
606 | case 'GOVERNMENTLEGAL': | ||
607 | case 'FOLIO': {$pf = array( 612.000, 936.000); break;} | ||
608 | case 'MONARCH': | ||
609 | case 'EXECUTIVE': {$pf = array( 522.000, 756.000); break;} | ||
610 | case 'ORGANIZERL': | ||
611 | case 'STATEMENT': | ||
612 | case 'MEMO': {$pf = array( 396.000, 612.000); break;} | ||
613 | case 'FOOLSCAP': {$pf = array( 595.440, 936.000); break;} | ||
614 | case 'COMPACT': {$pf = array( 306.000, 486.000); break;} | ||
615 | case 'ORGANIZERJ': {$pf = array( 198.000, 360.000); break;} | ||
616 | // Canadian standard CAN 2-9.60M | ||
617 | case 'P1': {$pf = array( 1587.402, 2437.795); break;} | ||
618 | case 'P2': {$pf = array( 1218.898, 1587.402); break;} | ||
619 | case 'P3': {$pf = array( 793.701, 1218.898); break;} | ||
620 | case 'P4': {$pf = array( 609.449, 793.701); break;} | ||
621 | case 'P5': {$pf = array( 396.850, 609.449); break;} | ||
622 | case 'P6': {$pf = array( 303.307, 396.850); break;} | ||
623 | // North American Architectural Sizes | ||
624 | case 'ARCH_E' : {$pf = array( 2592.000, 3456.000); break;} | ||
625 | case 'ARCH_E1': {$pf = array( 2160.000, 3024.000); break;} | ||
626 | case 'ARCH_D' : {$pf = array( 1728.000, 2592.000); break;} | ||
627 | case 'BROADSHEET': | ||
628 | case 'ARCH_C' : {$pf = array( 1296.000, 1728.000); break;} | ||
629 | case 'ARCH_B' : {$pf = array( 864.000, 1296.000); break;} | ||
630 | case 'ARCH_A' : {$pf = array( 648.000, 864.000); break;} | ||
631 | // --- North American Envelope Sizes --- | ||
632 | // - Announcement Envelopes | ||
633 | case 'ANNENV_A2' : {$pf = array( 314.640, 414.000); break;} | ||
634 | case 'ANNENV_A6' : {$pf = array( 342.000, 468.000); break;} | ||
635 | case 'ANNENV_A7' : {$pf = array( 378.000, 522.000); break;} | ||
636 | case 'ANNENV_A8' : {$pf = array( 396.000, 584.640); break;} | ||
637 | case 'ANNENV_A10' : {$pf = array( 450.000, 692.640); break;} | ||
638 | case 'ANNENV_SLIM': {$pf = array( 278.640, 638.640); break;} | ||
639 | // - Commercial Envelopes | ||
640 | case 'COMMENV_N6_1/4': {$pf = array( 252.000, 432.000); break;} | ||
641 | case 'COMMENV_N6_3/4': {$pf = array( 260.640, 468.000); break;} | ||
642 | case 'COMMENV_N8' : {$pf = array( 278.640, 540.000); break;} | ||
643 | case 'COMMENV_N9' : {$pf = array( 278.640, 638.640); break;} | ||
644 | case 'COMMENV_N10' : {$pf = array( 296.640, 684.000); break;} | ||
645 | case 'COMMENV_N11' : {$pf = array( 324.000, 746.640); break;} | ||
646 | case 'COMMENV_N12' : {$pf = array( 342.000, 792.000); break;} | ||
647 | case 'COMMENV_N14' : {$pf = array( 360.000, 828.000); break;} | ||
648 | // - Catalogue Envelopes | ||
649 | case 'CATENV_N1' : {$pf = array( 432.000, 648.000); break;} | ||
650 | case 'CATENV_N1_3/4' : {$pf = array( 468.000, 684.000); break;} | ||
651 | case 'CATENV_N2' : {$pf = array( 468.000, 720.000); break;} | ||
652 | case 'CATENV_N3' : {$pf = array( 504.000, 720.000); break;} | ||
653 | case 'CATENV_N6' : {$pf = array( 540.000, 756.000); break;} | ||
654 | case 'CATENV_N7' : {$pf = array( 576.000, 792.000); break;} | ||
655 | case 'CATENV_N8' : {$pf = array( 594.000, 810.000); break;} | ||
656 | case 'CATENV_N9_1/2' : {$pf = array( 612.000, 756.000); break;} | ||
657 | case 'CATENV_N9_3/4' : {$pf = array( 630.000, 810.000); break;} | ||
658 | case 'CATENV_N10_1/2': {$pf = array( 648.000, 864.000); break;} | ||
659 | case 'CATENV_N12_1/2': {$pf = array( 684.000, 900.000); break;} | ||
660 | case 'CATENV_N13_1/2': {$pf = array( 720.000, 936.000); break;} | ||
661 | case 'CATENV_N14_1/4': {$pf = array( 810.000, 882.000); break;} | ||
662 | case 'CATENV_N14_1/2': {$pf = array( 828.000, 1044.000); break;} | ||
663 | // Japanese (JIS P 0138-61) Standard B-Series | ||
664 | case 'JIS_B0' : {$pf = array( 2919.685, 4127.244); break;} | ||
665 | case 'JIS_B1' : {$pf = array( 2063.622, 2919.685); break;} | ||
666 | case 'JIS_B2' : {$pf = array( 1459.843, 2063.622); break;} | ||
667 | case 'JIS_B3' : {$pf = array( 1031.811, 1459.843); break;} | ||
668 | case 'JIS_B4' : {$pf = array( 728.504, 1031.811); break;} | ||
669 | case 'JIS_B5' : {$pf = array( 515.906, 728.504); break;} | ||
670 | case 'JIS_B6' : {$pf = array( 362.835, 515.906); break;} | ||
671 | case 'JIS_B7' : {$pf = array( 257.953, 362.835); break;} | ||
672 | case 'JIS_B8' : {$pf = array( 181.417, 257.953); break;} | ||
673 | case 'JIS_B9' : {$pf = array( 127.559, 181.417); break;} | ||
674 | case 'JIS_B10': {$pf = array( 90.709, 127.559); break;} | ||
675 | case 'JIS_B11': {$pf = array( 62.362, 90.709); break;} | ||
676 | case 'JIS_B12': {$pf = array( 45.354, 62.362); break;} | ||
677 | // PA Series | ||
678 | case 'PA0' : {$pf = array( 2381.102, 3174.803,); break;} | ||
679 | case 'PA1' : {$pf = array( 1587.402, 2381.102); break;} | ||
680 | case 'PA2' : {$pf = array( 1190.551, 1587.402); break;} | ||
681 | case 'PA3' : {$pf = array( 793.701, 1190.551); break;} | ||
682 | case 'PA4' : {$pf = array( 595.276, 793.701); break;} | ||
683 | case 'PA5' : {$pf = array( 396.850, 595.276); break;} | ||
684 | case 'PA6' : {$pf = array( 297.638, 396.850); break;} | ||
685 | case 'PA7' : {$pf = array( 198.425, 297.638); break;} | ||
686 | case 'PA8' : {$pf = array( 147.402, 198.425); break;} | ||
687 | case 'PA9' : {$pf = array( 99.213, 147.402); break;} | ||
688 | case 'PA10': {$pf = array( 73.701, 99.213); break;} | ||
689 | // Standard Photographic Print Sizes | ||
690 | case 'PASSPORT_PHOTO': {$pf = array( 99.213, 127.559); break;} | ||
691 | case 'E' : {$pf = array( 233.858, 340.157); break;} | ||
692 | case 'L': | ||
693 | case '3R' : {$pf = array( 252.283, 360.000); break;} | ||
694 | case 'KG': | ||
695 | case '4R' : {$pf = array( 289.134, 430.866); break;} | ||
696 | case '4D' : {$pf = array( 340.157, 430.866); break;} | ||
697 | case '2L': | ||
698 | case '5R' : {$pf = array( 360.000, 504.567); break;} | ||
699 | case '8P': | ||
700 | case '6R' : {$pf = array( 430.866, 575.433); break;} | ||
701 | case '6P': | ||
702 | case '8R' : {$pf = array( 575.433, 720.000); break;} | ||
703 | case '6PW': | ||
704 | case 'S8R' : {$pf = array( 575.433, 864.567); break;} | ||
705 | case '4P': | ||
706 | case '10R' : {$pf = array( 720.000, 864.567); break;} | ||
707 | case '4PW': | ||
708 | case 'S10R': {$pf = array( 720.000, 1080.000); break;} | ||
709 | case '11R' : {$pf = array( 790.866, 1009.134); break;} | ||
710 | case 'S11R': {$pf = array( 790.866, 1224.567); break;} | ||
711 | case '12R' : {$pf = array( 864.567, 1080.000); break;} | ||
712 | case 'S12R': {$pf = array( 864.567, 1292.598); break;} | ||
713 | // Common Newspaper Sizes | ||
714 | case 'NEWSPAPER_BROADSHEET': {$pf = array( 2125.984, 1700.787); break;} | ||
715 | case 'NEWSPAPER_BERLINER' : {$pf = array( 1332.283, 892.913); break;} | ||
716 | case 'NEWSPAPER_TABLOID': | ||
717 | case 'NEWSPAPER_COMPACT' : {$pf = array( 1218.898, 793.701); break;} | ||
718 | // Business Cards | ||
719 | case 'CREDIT_CARD': | ||
720 | case 'BUSINESS_CARD': | ||
721 | case 'BUSINESS_CARD_ISO7810': {$pf = array( 153.014, 242.646); break;} | ||
722 | case 'BUSINESS_CARD_ISO216' : {$pf = array( 147.402, 209.764); break;} | ||
723 | case 'BUSINESS_CARD_IT': | ||
724 | case 'BUSINESS_CARD_UK': | ||
725 | case 'BUSINESS_CARD_FR': | ||
726 | case 'BUSINESS_CARD_DE': | ||
727 | case 'BUSINESS_CARD_ES' : {$pf = array( 155.906, 240.945); break;} | ||
728 | case 'BUSINESS_CARD_CA': | ||
729 | case 'BUSINESS_CARD_US' : {$pf = array( 144.567, 252.283); break;} | ||
730 | case 'BUSINESS_CARD_JP' : {$pf = array( 155.906, 257.953); break;} | ||
731 | case 'BUSINESS_CARD_HK' : {$pf = array( 153.071, 255.118); break;} | ||
732 | case 'BUSINESS_CARD_AU': | ||
733 | case 'BUSINESS_CARD_DK': | ||
734 | case 'BUSINESS_CARD_SE' : {$pf = array( 155.906, 255.118); break;} | ||
735 | case 'BUSINESS_CARD_RU': | ||
736 | case 'BUSINESS_CARD_CZ': | ||
737 | case 'BUSINESS_CARD_FI': | ||
738 | case 'BUSINESS_CARD_HU': | ||
739 | case 'BUSINESS_CARD_IL' : {$pf = array( 141.732, 255.118); break;} | ||
740 | // Billboards | ||
741 | case '4SHEET' : {$pf = array( 2880.000, 4320.000); break;} | ||
742 | case '6SHEET' : {$pf = array( 3401.575, 5102.362); break;} | ||
743 | case '12SHEET': {$pf = array( 8640.000, 4320.000); break;} | ||
744 | case '16SHEET': {$pf = array( 5760.000, 8640.000); break;} | ||
745 | case '32SHEET': {$pf = array(11520.000, 8640.000); break;} | ||
746 | case '48SHEET': {$pf = array(17280.000, 8640.000); break;} | ||
747 | case '64SHEET': {$pf = array(23040.000, 8640.000); break;} | ||
748 | case '96SHEET': {$pf = array(34560.000, 8640.000); break;} | ||
749 | // Old European Sizes | ||
750 | // - Old Imperial English Sizes | ||
751 | case 'EN_EMPEROR' : {$pf = array( 3456.000, 5184.000); break;} | ||
752 | case 'EN_ANTIQUARIAN' : {$pf = array( 2232.000, 3816.000); break;} | ||
753 | case 'EN_GRAND_EAGLE' : {$pf = array( 2070.000, 3024.000); break;} | ||
754 | case 'EN_DOUBLE_ELEPHANT' : {$pf = array( 1926.000, 2880.000); break;} | ||
755 | case 'EN_ATLAS' : {$pf = array( 1872.000, 2448.000); break;} | ||
756 | case 'EN_COLOMBIER' : {$pf = array( 1692.000, 2484.000); break;} | ||
757 | case 'EN_ELEPHANT' : {$pf = array( 1656.000, 2016.000); break;} | ||
758 | case 'EN_DOUBLE_DEMY' : {$pf = array( 1620.000, 2556.000); break;} | ||
759 | case 'EN_IMPERIAL' : {$pf = array( 1584.000, 2160.000); break;} | ||
760 | case 'EN_PRINCESS' : {$pf = array( 1548.000, 2016.000); break;} | ||
761 | case 'EN_CARTRIDGE' : {$pf = array( 1512.000, 1872.000); break;} | ||
762 | case 'EN_DOUBLE_LARGE_POST': {$pf = array( 1512.000, 2376.000); break;} | ||
763 | case 'EN_ROYAL' : {$pf = array( 1440.000, 1800.000); break;} | ||
764 | case 'EN_SHEET': | ||
765 | case 'EN_HALF_POST' : {$pf = array( 1404.000, 1692.000); break;} | ||
766 | case 'EN_SUPER_ROYAL' : {$pf = array( 1368.000, 1944.000); break;} | ||
767 | case 'EN_DOUBLE_POST' : {$pf = array( 1368.000, 2196.000); break;} | ||
768 | case 'EN_MEDIUM' : {$pf = array( 1260.000, 1656.000); break;} | ||
769 | case 'EN_DEMY' : {$pf = array( 1260.000, 1620.000); break;} | ||
770 | case 'EN_LARGE_POST' : {$pf = array( 1188.000, 1512.000); break;} | ||
771 | case 'EN_COPY_DRAUGHT' : {$pf = array( 1152.000, 1440.000); break;} | ||
772 | case 'EN_POST' : {$pf = array( 1116.000, 1386.000); break;} | ||
773 | case 'EN_CROWN' : {$pf = array( 1080.000, 1440.000); break;} | ||
774 | case 'EN_PINCHED_POST' : {$pf = array( 1062.000, 1332.000); break;} | ||
775 | case 'EN_BRIEF' : {$pf = array( 972.000, 1152.000); break;} | ||
776 | case 'EN_FOOLSCAP' : {$pf = array( 972.000, 1224.000); break;} | ||
777 | case 'EN_SMALL_FOOLSCAP' : {$pf = array( 954.000, 1188.000); break;} | ||
778 | case 'EN_POTT' : {$pf = array( 900.000, 1080.000); break;} | ||
779 | // - Old Imperial Belgian Sizes | ||
780 | case 'BE_GRAND_AIGLE' : {$pf = array( 1984.252, 2948.031); break;} | ||
781 | case 'BE_COLOMBIER' : {$pf = array( 1757.480, 2409.449); break;} | ||
782 | case 'BE_DOUBLE_CARRE': {$pf = array( 1757.480, 2607.874); break;} | ||
783 | case 'BE_ELEPHANT' : {$pf = array( 1746.142, 2182.677); break;} | ||
784 | case 'BE_PETIT_AIGLE' : {$pf = array( 1700.787, 2381.102); break;} | ||
785 | case 'BE_GRAND_JESUS' : {$pf = array( 1559.055, 2069.291); break;} | ||
786 | case 'BE_JESUS' : {$pf = array( 1530.709, 2069.291); break;} | ||
787 | case 'BE_RAISIN' : {$pf = array( 1417.323, 1842.520); break;} | ||
788 | case 'BE_GRAND_MEDIAN': {$pf = array( 1303.937, 1714.961); break;} | ||
789 | case 'BE_DOUBLE_POSTE': {$pf = array( 1233.071, 1601.575); break;} | ||
790 | case 'BE_COQUILLE' : {$pf = array( 1218.898, 1587.402); break;} | ||
791 | case 'BE_PETIT_MEDIAN': {$pf = array( 1176.378, 1502.362); break;} | ||
792 | case 'BE_RUCHE' : {$pf = array( 1020.472, 1303.937); break;} | ||
793 | case 'BE_PROPATRIA' : {$pf = array( 977.953, 1218.898); break;} | ||
794 | case 'BE_LYS' : {$pf = array( 898.583, 1125.354); break;} | ||
795 | case 'BE_POT' : {$pf = array( 870.236, 1088.504); break;} | ||
796 | case 'BE_ROSETTE' : {$pf = array( 765.354, 983.622); break;} | ||
797 | // - Old Imperial French Sizes | ||
798 | case 'FR_UNIVERS' : {$pf = array( 2834.646, 3685.039); break;} | ||
799 | case 'FR_DOUBLE_COLOMBIER' : {$pf = array( 2551.181, 3571.654); break;} | ||
800 | case 'FR_GRANDE_MONDE' : {$pf = array( 2551.181, 3571.654); break;} | ||
801 | case 'FR_DOUBLE_SOLEIL' : {$pf = array( 2267.717, 3401.575); break;} | ||
802 | case 'FR_DOUBLE_JESUS' : {$pf = array( 2154.331, 3174.803); break;} | ||
803 | case 'FR_GRAND_AIGLE' : {$pf = array( 2125.984, 3004.724); break;} | ||
804 | case 'FR_PETIT_AIGLE' : {$pf = array( 1984.252, 2664.567); break;} | ||
805 | case 'FR_DOUBLE_RAISIN' : {$pf = array( 1842.520, 2834.646); break;} | ||
806 | case 'FR_JOURNAL' : {$pf = array( 1842.520, 2664.567); break;} | ||
807 | case 'FR_COLOMBIER_AFFICHE': {$pf = array( 1785.827, 2551.181); break;} | ||
808 | case 'FR_DOUBLE_CAVALIER' : {$pf = array( 1757.480, 2607.874); break;} | ||
809 | case 'FR_CLOCHE' : {$pf = array( 1700.787, 2267.717); break;} | ||
810 | case 'FR_SOLEIL' : {$pf = array( 1700.787, 2267.717); break;} | ||
811 | case 'FR_DOUBLE_CARRE' : {$pf = array( 1587.402, 2551.181); break;} | ||
812 | case 'FR_DOUBLE_COQUILLE' : {$pf = array( 1587.402, 2494.488); break;} | ||
813 | case 'FR_JESUS' : {$pf = array( 1587.402, 2154.331); break;} | ||
814 | case 'FR_RAISIN' : {$pf = array( 1417.323, 1842.520); break;} | ||
815 | case 'FR_CAVALIER' : {$pf = array( 1303.937, 1757.480); break;} | ||
816 | case 'FR_DOUBLE_COURONNE' : {$pf = array( 1303.937, 2040.945); break;} | ||
817 | case 'FR_CARRE' : {$pf = array( 1275.591, 1587.402); break;} | ||
818 | case 'FR_COQUILLE' : {$pf = array( 1247.244, 1587.402); break;} | ||
819 | case 'FR_DOUBLE_TELLIERE' : {$pf = array( 1247.244, 1927.559); break;} | ||
820 | case 'FR_DOUBLE_CLOCHE' : {$pf = array( 1133.858, 1700.787); break;} | ||
821 | case 'FR_DOUBLE_POT' : {$pf = array( 1133.858, 1757.480); break;} | ||
822 | case 'FR_ECU' : {$pf = array( 1133.858, 1474.016); break;} | ||
823 | case 'FR_COURONNE' : {$pf = array( 1020.472, 1303.937); break;} | ||
824 | case 'FR_TELLIERE' : {$pf = array( 963.780, 1247.244); break;} | ||
825 | case 'FR_POT' : {$pf = array( 878.740, 1133.858); break;} | ||
826 | // DEFAULT ISO A4 | ||
827 | default: {$pf = array( 595.276, 841.890); break;} | ||
828 | } | ||
829 | return $pf; | ||
830 | } | ||
831 | |||
832 | /** | ||
833 | * Set page boundaries. | ||
834 | * @param $page (int) page number | ||
835 | * @param $type (string) valid values are: <ul><li>'MediaBox' : the boundaries of the physical medium on which the page shall be displayed or printed;</li><li>'CropBox' : the visible region of default user space;</li><li>'BleedBox' : the region to which the contents of the page shall be clipped when output in a production environment;</li><li>'TrimBox' : the intended dimensions of the finished page after trimming;</li><li>'ArtBox' : the page's meaningful content (including potential white space).</li></ul> | ||
836 | * @param $llx (float) lower-left x coordinate in user units. | ||
837 | * @param $lly (float) lower-left y coordinate in user units. | ||
838 | * @param $urx (float) upper-right x coordinate in user units. | ||
839 | * @param $ury (float) upper-right y coordinate in user units. | ||
840 | * @param $points (boolean) If true uses user units as unit of measure, otherwise uses PDF points. | ||
841 | * @param $k (float) Scale factor (number of points in user unit). | ||
842 | * @param $pagedim (array) Array of page dimensions. | ||
843 | * @return pagedim array of page dimensions. | ||
844 | * @since 5.0.010 (2010-05-17) | ||
845 | * @public static | ||
846 | */ | ||
847 | public static function setPageBoxes($page, $type, $llx, $lly, $urx, $ury, $points=false, $k, $pagedim=array()) { | ||
848 | if (!isset($pagedim[$page])) { | ||
849 | // initialize array | ||
850 | $pagedim[$page] = array(); | ||
851 | } | ||
852 | if (!in_array($type, self::$pageboxes)) { | ||
853 | return; | ||
854 | } | ||
855 | if ($points) { | ||
856 | $k = 1; | ||
857 | } | ||
858 | $pagedim[$page][$type]['llx'] = ($llx * $k); | ||
859 | $pagedim[$page][$type]['lly'] = ($lly * $k); | ||
860 | $pagedim[$page][$type]['urx'] = ($urx * $k); | ||
861 | $pagedim[$page][$type]['ury'] = ($ury * $k); | ||
862 | return $pagedim; | ||
863 | } | ||
864 | |||
865 | /** | ||
866 | * Swap X and Y coordinates of page boxes (change page boxes orientation). | ||
867 | * @param $page (int) page number | ||
868 | * @param $pagedim (array) Array of page dimensions. | ||
869 | * @return pagedim array of page dimensions. | ||
870 | * @since 5.0.010 (2010-05-17) | ||
871 | * @public static | ||
872 | */ | ||
873 | public static function swapPageBoxCoordinates($page, $pagedim) { | ||
874 | foreach (self::$pageboxes as $type) { | ||
875 | // swap X and Y coordinates | ||
876 | if (isset($pagedim[$page][$type])) { | ||
877 | $tmp = $pagedim[$page][$type]['llx']; | ||
878 | $pagedim[$page][$type]['llx'] = $pagedim[$page][$type]['lly']; | ||
879 | $pagedim[$page][$type]['lly'] = $tmp; | ||
880 | $tmp = $pagedim[$page][$type]['urx']; | ||
881 | $pagedim[$page][$type]['urx'] = $pagedim[$page][$type]['ury']; | ||
882 | $pagedim[$page][$type]['ury'] = $tmp; | ||
883 | } | ||
884 | } | ||
885 | return $pagedim; | ||
886 | } | ||
887 | |||
888 | /** | ||
889 | * Get the canonical page layout mode. | ||
890 | * @param $layout (string) The page layout. Possible values are:<ul><li>SinglePage Display one page at a time</li><li>OneColumn Display the pages in one column</li><li>TwoColumnLeft Display the pages in two columns, with odd-numbered pages on the left</li><li>TwoColumnRight Display the pages in two columns, with odd-numbered pages on the right</li><li>TwoPageLeft (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the left</li><li>TwoPageRight (PDF 1.5) Display the pages two at a time, with odd-numbered pages on the right</li></ul> | ||
891 | * @return (string) Canonical page layout name. | ||
892 | * @public static | ||
893 | */ | ||
894 | public static function getPageLayoutMode($layout='SinglePage') { | ||
895 | switch ($layout) { | ||
896 | case 'default': | ||
897 | case 'single': | ||
898 | case 'SinglePage': { | ||
899 | $layout_mode = 'SinglePage'; | ||
900 | break; | ||
901 | } | ||
902 | case 'continuous': | ||
903 | case 'OneColumn': { | ||
904 | $layout_mode = 'OneColumn'; | ||
905 | break; | ||
906 | } | ||
907 | case 'two': | ||
908 | case 'TwoColumnLeft': { | ||
909 | $layout_mode = 'TwoColumnLeft'; | ||
910 | break; | ||
911 | } | ||
912 | case 'TwoColumnRight': { | ||
913 | $layout_mode = 'TwoColumnRight'; | ||
914 | break; | ||
915 | } | ||
916 | case 'TwoPageLeft': { | ||
917 | $layout_mode = 'TwoPageLeft'; | ||
918 | break; | ||
919 | } | ||
920 | case 'TwoPageRight': { | ||
921 | $layout_mode = 'TwoPageRight'; | ||
922 | break; | ||
923 | } | ||
924 | default: { | ||
925 | $layout_mode = 'SinglePage'; | ||
926 | } | ||
927 | } | ||
928 | return $layout_mode; | ||
929 | } | ||
930 | |||
931 | /** | ||
932 | * Get the canonical page layout mode. | ||
933 | * @param $mode (string) A name object specifying how the document should be displayed when opened:<ul><li>UseNone Neither document outline nor thumbnail images visible</li><li>UseOutlines Document outline visible</li><li>UseThumbs Thumbnail images visible</li><li>FullScreen Full-screen mode, with no menu bar, window controls, or any other window visible</li><li>UseOC (PDF 1.5) Optional content group panel visible</li><li>UseAttachments (PDF 1.6) Attachments panel visible</li></ul> | ||
934 | * @return (string) Canonical page mode name. | ||
935 | * @public static | ||
936 | */ | ||
937 | public static function getPageMode($mode='UseNone') { | ||
938 | switch ($mode) { | ||
939 | case 'UseNone': { | ||
940 | $page_mode = 'UseNone'; | ||
941 | break; | ||
942 | } | ||
943 | case 'UseOutlines': { | ||
944 | $page_mode = 'UseOutlines'; | ||
945 | break; | ||
946 | } | ||
947 | case 'UseThumbs': { | ||
948 | $page_mode = 'UseThumbs'; | ||
949 | break; | ||
950 | } | ||
951 | case 'FullScreen': { | ||
952 | $page_mode = 'FullScreen'; | ||
953 | break; | ||
954 | } | ||
955 | case 'UseOC': { | ||
956 | $page_mode = 'UseOC'; | ||
957 | break; | ||
958 | } | ||
959 | case '': { | ||
960 | $page_mode = 'UseAttachments'; | ||
961 | break; | ||
962 | } | ||
963 | default: { | ||
964 | $page_mode = 'UseNone'; | ||
965 | } | ||
966 | } | ||
967 | return $page_mode; | ||
968 | } | ||
969 | |||
970 | /** | ||
971 | * Check if the URL exist. | ||
972 | * @param $url (string) URL to check. | ||
973 | * @return Boolean true if the URl exist, false otherwise. | ||
974 | * @since 5.9.204 (2013-01-28) | ||
975 | * @public static | ||
976 | */ | ||
977 | public static function isValidURL($url) { | ||
978 | $headers = @get_headers($url); | ||
979 | return (strpos($headers[0], '200') !== false); | ||
980 | } | ||
981 | |||
982 | /** | ||
983 | * Removes SHY characters from text. | ||
984 | * Unicode Data:<ul> | ||
985 | * <li>Name : SOFT HYPHEN, commonly abbreviated as SHY</li> | ||
986 | * <li>HTML Entity (decimal): "&#173;"</li> | ||
987 | * <li>HTML Entity (hex): "&#xad;"</li> | ||
988 | * <li>HTML Entity (named): "&shy;"</li> | ||
989 | * <li>How to type in Microsoft Windows: [Alt +00AD] or [Alt 0173]</li> | ||
990 | * <li>UTF-8 (hex): 0xC2 0xAD (c2ad)</li> | ||
991 | * <li>UTF-8 character: chr(194).chr(173)</li> | ||
992 | * </ul> | ||
993 | * @param $txt (string) input string | ||
994 | * @param $unicode (boolean) True if we are in unicode mode, false otherwise. | ||
995 | * @return string without SHY characters. | ||
996 | * @since (4.5.019) 2009-02-28 | ||
997 | * @public static | ||
998 | */ | ||
999 | public static function removeSHY($txt='', $unicode=true) { | ||
1000 | $txt = preg_replace('/([\\xc2]{1}[\\xad]{1})/', '', $txt); | ||
1001 | if (!$unicode) { | ||
1002 | $txt = preg_replace('/([\\xad]{1})/', '', $txt); | ||
1003 | } | ||
1004 | return $txt; | ||
1005 | } | ||
1006 | |||
1007 | |||
1008 | /** | ||
1009 | * Get the border mode accounting for multicell position (opens bottom side of multicell crossing pages) | ||
1010 | * @param $brd (mixed) Indicates if borders must be drawn around the cell block. The value can be a number:<ul><li>0: no border (default)</li><li>1: frame</li></ul>or a string containing some or all of the following characters (in any order):<ul><li>L: left</li><li>T: top</li><li>R: right</li><li>B: bottom</li></ul> or an array of line styles for each border group: array('LTRB' => array('width' => 2, 'cap' => 'butt', 'join' => 'miter', 'dash' => 0, 'color' => array(0, 0, 0))) | ||
1011 | * @param $position (string) multicell position: 'start', 'middle', 'end' | ||
1012 | * @param $opencell (boolean) True when the cell is left open at the page bottom, false otherwise. | ||
1013 | * @return border mode array | ||
1014 | * @since 4.4.002 (2008-12-09) | ||
1015 | * @public static | ||
1016 | */ | ||
1017 | public static function getBorderMode($brd, $position='start', $opencell=true) { | ||
1018 | if ((!$opencell) OR empty($brd)) { | ||
1019 | return $brd; | ||
1020 | } | ||
1021 | if ($brd == 1) { | ||
1022 | $brd = 'LTRB'; | ||
1023 | } | ||
1024 | if (is_string($brd)) { | ||
1025 | // convert string to array | ||
1026 | $slen = strlen($brd); | ||
1027 | $newbrd = array(); | ||
1028 | for ($i = 0; $i < $slen; ++$i) { | ||
1029 | $newbrd[$brd[$i]] = array('cap' => 'square', 'join' => 'miter'); | ||
1030 | } | ||
1031 | $brd = $newbrd; | ||
1032 | } | ||
1033 | foreach ($brd as $border => $style) { | ||
1034 | switch ($position) { | ||
1035 | case 'start': { | ||
1036 | if (strpos($border, 'B') !== false) { | ||
1037 | // remove bottom line | ||
1038 | $newkey = str_replace('B', '', $border); | ||
1039 | if (strlen($newkey) > 0) { | ||
1040 | $brd[$newkey] = $style; | ||
1041 | } | ||
1042 | unset($brd[$border]); | ||
1043 | } | ||
1044 | break; | ||
1045 | } | ||
1046 | case 'middle': { | ||
1047 | if (strpos($border, 'B') !== false) { | ||
1048 | // remove bottom line | ||
1049 | $newkey = str_replace('B', '', $border); | ||
1050 | if (strlen($newkey) > 0) { | ||
1051 | $brd[$newkey] = $style; | ||
1052 | } | ||
1053 | unset($brd[$border]); | ||
1054 | $border = $newkey; | ||
1055 | } | ||
1056 | if (strpos($border, 'T') !== false) { | ||
1057 | // remove bottom line | ||
1058 | $newkey = str_replace('T', '', $border); | ||
1059 | if (strlen($newkey) > 0) { | ||
1060 | $brd[$newkey] = $style; | ||
1061 | } | ||
1062 | unset($brd[$border]); | ||
1063 | } | ||
1064 | break; | ||
1065 | } | ||
1066 | case 'end': { | ||
1067 | if (strpos($border, 'T') !== false) { | ||
1068 | // remove bottom line | ||
1069 | $newkey = str_replace('T', '', $border); | ||
1070 | if (strlen($newkey) > 0) { | ||
1071 | $brd[$newkey] = $style; | ||
1072 | } | ||
1073 | unset($brd[$border]); | ||
1074 | } | ||
1075 | break; | ||
1076 | } | ||
1077 | } | ||
1078 | } | ||
1079 | return $brd; | ||
1080 | } | ||
1081 | |||
1082 | /** | ||
1083 | * Determine whether a string is empty. | ||
1084 | * @param $str (string) string to be checked | ||
1085 | * @return boolean true if string is empty | ||
1086 | * @since 4.5.044 (2009-04-16) | ||
1087 | * @public static | ||
1088 | */ | ||
1089 | public static function empty_string($str) { | ||
1090 | return (is_null($str) OR (is_string($str) AND (strlen($str) == 0))); | ||
1091 | } | ||
1092 | |||
1093 | /** | ||
1094 | * Returns a temporary filename for caching object on filesystem. | ||
1095 | * @param $type (string) Type of file (name of the subdir on the tcpdf cache folder). | ||
1096 | * @return string filename. | ||
1097 | * @since 4.5.000 (2008-12-31) | ||
1098 | * @public static | ||
1099 | */ | ||
1100 | public static function getObjFilename($type='tmp') { | ||
1101 | return tempnam(K_PATH_CACHE, '__tcpdf_'.$type.'_'.md5(uniqid('', true).rand().microtime(true)).'_'); | ||
1102 | } | ||
1103 | |||
1104 | /** | ||
1105 | * Add "\" before "\", "(" and ")" | ||
1106 | * @param $s (string) string to escape. | ||
1107 | * @return string escaped string. | ||
1108 | * @public static | ||
1109 | */ | ||
1110 | public static function _escape($s) { | ||
1111 | // the chr(13) substitution fixes the Bugs item #1421290. | ||
1112 | return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r')); | ||
1113 | } | ||
1114 | |||
1115 | /** | ||
1116 | * Escape some special characters (< > &) for XML output. | ||
1117 | * @param $str (string) Input string to convert. | ||
1118 | * @return converted string | ||
1119 | * @since 5.9.121 (2011-09-28) | ||
1120 | * @public static | ||
1121 | */ | ||
1122 | public static function _escapeXML($str) { | ||
1123 | $replaceTable = array("\0" => '', '&' => '&', '<' => '<', '>' => '>'); | ||
1124 | $str = strtr($str, $replaceTable); | ||
1125 | return $str; | ||
1126 | } | ||
1127 | |||
1128 | /** | ||
1129 | * Creates a copy of a class object | ||
1130 | * @param $object (object) class object to be cloned | ||
1131 | * @return cloned object | ||
1132 | * @since 4.5.029 (2009-03-19) | ||
1133 | * @public static | ||
1134 | */ | ||
1135 | public static function objclone($object) { | ||
1136 | if (($object instanceof Imagick) AND (version_compare(phpversion('imagick'), '3.0.1') !== 1)) { | ||
1137 | // on the versions after 3.0.1 the clone() method was deprecated in favour of clone keyword | ||
1138 | return @$object->clone(); | ||
1139 | } | ||
1140 | return @clone($object); | ||
1141 | } | ||
1142 | |||
1143 | /** | ||
1144 | * Ouput input data and compress it if possible. | ||
1145 | * @param $data (string) Data to output. | ||
1146 | * @param $length (int) Data length in bytes. | ||
1147 | * @since 5.9.086 | ||
1148 | * @public static | ||
1149 | */ | ||
1150 | public static function sendOutputData($data, $length) { | ||
1151 | if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) { | ||
1152 | // the content length may vary if the server is using compression | ||
1153 | header('Content-Length: '.$length); | ||
1154 | } | ||
1155 | echo $data; | ||
1156 | } | ||
1157 | |||
1158 | /** | ||
1159 | * Replace page number aliases with number. | ||
1160 | * @param $page (string) Page content. | ||
1161 | * @param $replace (array) Array of replacements (array keys are replacement strings, values are alias arrays). | ||
1162 | * @param $diff (int) If passed, this will be set to the total char number difference between alias and replacements. | ||
1163 | * @return replaced page content and updated $diff parameter as array. | ||
1164 | * @public static | ||
1165 | */ | ||
1166 | public static function replacePageNumAliases($page, $replace, $diff=0) { | ||
1167 | foreach ($replace as $rep) { | ||
1168 | foreach ($rep[3] as $a) { | ||
1169 | if (strpos($page, $a) !== false) { | ||
1170 | $page = str_replace($a, $rep[0], $page); | ||
1171 | $diff += ($rep[2] - $rep[1]); | ||
1172 | } | ||
1173 | } | ||
1174 | } | ||
1175 | return array($page, $diff); | ||
1176 | } | ||
1177 | |||
1178 | /** | ||
1179 | * Returns timestamp in seconds from formatted date-time. | ||
1180 | * @param $date (string) Formatted date-time. | ||
1181 | * @return int seconds. | ||
1182 | * @since 5.9.152 (2012-03-23) | ||
1183 | * @public static | ||
1184 | */ | ||
1185 | public static function getTimestamp($date) { | ||
1186 | if (($date[0] == 'D') AND ($date[1] == ':')) { | ||
1187 | // remove date prefix if present | ||
1188 | $date = substr($date, 2); | ||
1189 | } | ||
1190 | return strtotime($date); | ||
1191 | } | ||
1192 | |||
1193 | /** | ||
1194 | * Returns a formatted date-time. | ||
1195 | * @param $time (int) Time in seconds. | ||
1196 | * @return string escaped date string. | ||
1197 | * @since 5.9.152 (2012-03-23) | ||
1198 | * @public static | ||
1199 | */ | ||
1200 | public static function getFormattedDate($time) { | ||
1201 | return substr_replace(date('YmdHisO', intval($time)), '\'', (0 - 2), 0).'\''; | ||
1202 | } | ||
1203 | |||
1204 | /** | ||
1205 | * Get ULONG from string (Big Endian 32-bit unsigned integer). | ||
1206 | * @param $str (string) string from where to extract value | ||
1207 | * @param $offset (int) point from where to read the data | ||
1208 | * @return int 32 bit value | ||
1209 | * @author Nicola Asuni | ||
1210 | * @since 5.2.000 (2010-06-02) | ||
1211 | * @public static | ||
1212 | */ | ||
1213 | public static function _getULONG($str, $offset) { | ||
1214 | $v = unpack('Ni', substr($str, $offset, 4)); | ||
1215 | return $v['i']; | ||
1216 | } | ||
1217 | |||
1218 | /** | ||
1219 | * Get USHORT from string (Big Endian 16-bit unsigned integer). | ||
1220 | * @param $str (string) string from where to extract value | ||
1221 | * @param $offset (int) point from where to read the data | ||
1222 | * @return int 16 bit value | ||
1223 | * @author Nicola Asuni | ||
1224 | * @since 5.2.000 (2010-06-02) | ||
1225 | * @public static | ||
1226 | */ | ||
1227 | public static function _getUSHORT($str, $offset) { | ||
1228 | $v = unpack('ni', substr($str, $offset, 2)); | ||
1229 | return $v['i']; | ||
1230 | } | ||
1231 | |||
1232 | /** | ||
1233 | * Get SHORT from string (Big Endian 16-bit signed integer). | ||
1234 | * @param $str (string) String from where to extract value. | ||
1235 | * @param $offset (int) Point from where to read the data. | ||
1236 | * @return int 16 bit value | ||
1237 | * @author Nicola Asuni | ||
1238 | * @since 5.2.000 (2010-06-02) | ||
1239 | * @public static | ||
1240 | */ | ||
1241 | public static function _getSHORT($str, $offset) { | ||
1242 | $v = unpack('si', substr($str, $offset, 2)); | ||
1243 | return $v['i']; | ||
1244 | } | ||
1245 | |||
1246 | /** | ||
1247 | * Get FWORD from string (Big Endian 16-bit signed integer). | ||
1248 | * @param $str (string) String from where to extract value. | ||
1249 | * @param $offset (int) Point from where to read the data. | ||
1250 | * @return int 16 bit value | ||
1251 | * @author Nicola Asuni | ||
1252 | * @since 5.9.123 (2011-09-30) | ||
1253 | * @public static | ||
1254 | */ | ||
1255 | public static function _getFWORD($str, $offset) { | ||
1256 | $v = self::_getUSHORT($str, $offset); | ||
1257 | if ($v > 0x7fff) { | ||
1258 | $v -= 0x10000; | ||
1259 | } | ||
1260 | return $v; | ||
1261 | } | ||
1262 | |||
1263 | /** | ||
1264 | * Get UFWORD from string (Big Endian 16-bit unsigned integer). | ||
1265 | * @param $str (string) string from where to extract value | ||
1266 | * @param $offset (int) point from where to read the data | ||
1267 | * @return int 16 bit value | ||
1268 | * @author Nicola Asuni | ||
1269 | * @since 5.9.123 (2011-09-30) | ||
1270 | * @public static | ||
1271 | */ | ||
1272 | public static function _getUFWORD($str, $offset) { | ||
1273 | $v = self::_getUSHORT($str, $offset); | ||
1274 | return $v; | ||
1275 | } | ||
1276 | |||
1277 | /** | ||
1278 | * Get FIXED from string (32-bit signed fixed-point number (16.16). | ||
1279 | * @param $str (string) string from where to extract value | ||
1280 | * @param $offset (int) point from where to read the data | ||
1281 | * @return int 16 bit value | ||
1282 | * @author Nicola Asuni | ||
1283 | * @since 5.9.123 (2011-09-30) | ||
1284 | * @public static | ||
1285 | */ | ||
1286 | public static function _getFIXED($str, $offset) { | ||
1287 | // mantissa | ||
1288 | $m = self::_getFWORD($str, $offset); | ||
1289 | // fraction | ||
1290 | $f = self::_getUSHORT($str, ($offset + 2)); | ||
1291 | $v = floatval(''.$m.'.'.$f.''); | ||
1292 | return $v; | ||
1293 | } | ||
1294 | |||
1295 | /** | ||
1296 | * Get BYTE from string (8-bit unsigned integer). | ||
1297 | * @param $str (string) String from where to extract value. | ||
1298 | * @param $offset (int) Point from where to read the data. | ||
1299 | * @return int 8 bit value | ||
1300 | * @author Nicola Asuni | ||
1301 | * @since 5.2.000 (2010-06-02) | ||
1302 | * @public static | ||
1303 | */ | ||
1304 | public static function _getBYTE($str, $offset) { | ||
1305 | $v = unpack('Ci', substr($str, $offset, 1)); | ||
1306 | return $v['i']; | ||
1307 | } | ||
1308 | /** | ||
1309 | * Binary-safe and URL-safe file read. | ||
1310 | * Reads up to length bytes from the file pointer referenced by handle. Reading stops as soon as one of the following conditions is met: length bytes have been read; EOF (end of file) is reached. | ||
1311 | * @param $handle (resource) | ||
1312 | * @param $length (int) | ||
1313 | * @return Returns the read string or FALSE in case of error. | ||
1314 | * @author Nicola Asuni | ||
1315 | * @since 4.5.027 (2009-03-16) | ||
1316 | * @public static | ||
1317 | */ | ||
1318 | public static function rfread($handle, $length) { | ||
1319 | $data = fread($handle, $length); | ||
1320 | if ($data === false) { | ||
1321 | return false; | ||
1322 | } | ||
1323 | $rest = ($length - strlen($data)); | ||
1324 | if ($rest > 0) { | ||
1325 | $data .= self::rfread($handle, $rest); | ||
1326 | } | ||
1327 | return $data; | ||
1328 | } | ||
1329 | |||
1330 | /** | ||
1331 | * Read a 4-byte (32 bit) integer from file. | ||
1332 | * @param $f (string) file name. | ||
1333 | * @return 4-byte integer | ||
1334 | * @public static | ||
1335 | */ | ||
1336 | public static function _freadint($f) { | ||
1337 | $a = unpack('Ni', fread($f, 4)); | ||
1338 | return $a['i']; | ||
1339 | } | ||
1340 | |||
1341 | /** | ||
1342 | * Returns a string containing random data to be used as a seed for encryption methods. | ||
1343 | * @param $seed (string) starting seed value | ||
1344 | * @return string containing random data | ||
1345 | * @author Nicola Asuni | ||
1346 | * @since 5.9.006 (2010-10-19) | ||
1347 | * @public static | ||
1348 | */ | ||
1349 | public static function getRandomSeed($seed='') { | ||
1350 | $seed .= microtime(); | ||
1351 | if (function_exists('openssl_random_pseudo_bytes') AND (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) { | ||
1352 | // this is not used on windows systems because it is very slow for a know bug | ||
1353 | $seed .= openssl_random_pseudo_bytes(512); | ||
1354 | } else { | ||
1355 | for ($i = 0; $i < 23; ++$i) { | ||
1356 | $seed .= uniqid('', true); | ||
1357 | } | ||
1358 | } | ||
1359 | $seed .= uniqid('', true); | ||
1360 | $seed .= rand(); | ||
1361 | $seed .= __FILE__; | ||
1362 | if (isset($_SERVER['REMOTE_ADDR'])) { | ||
1363 | $seed .= $_SERVER['REMOTE_ADDR']; | ||
1364 | } | ||
1365 | if (isset($_SERVER['HTTP_USER_AGENT'])) { | ||
1366 | $seed .= $_SERVER['HTTP_USER_AGENT']; | ||
1367 | } | ||
1368 | if (isset($_SERVER['HTTP_ACCEPT'])) { | ||
1369 | $seed .= $_SERVER['HTTP_ACCEPT']; | ||
1370 | } | ||
1371 | if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])) { | ||
1372 | $seed .= $_SERVER['HTTP_ACCEPT_ENCODING']; | ||
1373 | } | ||
1374 | if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { | ||
1375 | $seed .= $_SERVER['HTTP_ACCEPT_LANGUAGE']; | ||
1376 | } | ||
1377 | if (isset($_SERVER['HTTP_ACCEPT_CHARSET'])) { | ||
1378 | $seed .= $_SERVER['HTTP_ACCEPT_CHARSET']; | ||
1379 | } | ||
1380 | $seed .= rand(); | ||
1381 | $seed .= uniqid('', true); | ||
1382 | $seed .= microtime(); | ||
1383 | return $seed; | ||
1384 | } | ||
1385 | |||
1386 | /** | ||
1387 | * Encrypts a string using MD5 and returns it's value as a binary string. | ||
1388 | * @param $str (string) input string | ||
1389 | * @return String MD5 encrypted binary string | ||
1390 | * @since 2.0.000 (2008-01-02) | ||
1391 | * @public static | ||
1392 | */ | ||
1393 | public static function _md5_16($str) { | ||
1394 | return pack('H*', md5($str)); | ||
1395 | } | ||
1396 | |||
1397 | /** | ||
1398 | * Returns the input text exrypted using AES algorithm and the specified key. | ||
1399 | * This method requires mcrypt. | ||
1400 | * @param $key (string) encryption key | ||
1401 | * @param $text (String) input text to be encrypted | ||
1402 | * @return String encrypted text | ||
1403 | * @author Nicola Asuni | ||
1404 | * @since 5.0.005 (2010-05-11) | ||
1405 | * @public static | ||
1406 | */ | ||
1407 | public static function _AES($key, $text) { | ||
1408 | // padding (RFC 2898, PKCS #5: Password-Based Cryptography Specification Version 2.0) | ||
1409 | $padding = 16 - (strlen($text) % 16); | ||
1410 | $text .= str_repeat(chr($padding), $padding); | ||
1411 | $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND); | ||
1412 | $text = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv); | ||
1413 | $text = $iv.$text; | ||
1414 | return $text; | ||
1415 | } | ||
1416 | |||
1417 | /** | ||
1418 | * Returns the input text encrypted using RC4 algorithm and the specified key. | ||
1419 | * RC4 is the standard encryption algorithm used in PDF format | ||
1420 | * @param $key (string) Encryption key. | ||
1421 | * @param $text (String) Input text to be encrypted. | ||
1422 | * @param $last_enc_key (String) Reference to last RC4 key encrypted. | ||
1423 | * @param $last_enc_key_c (String) Reference to last RC4 computed key. | ||
1424 | * @return String encrypted text | ||
1425 | * @since 2.0.000 (2008-01-02) | ||
1426 | * @author Klemen Vodopivec, Nicola Asuni | ||
1427 | * @public static | ||
1428 | */ | ||
1429 | public static function _RC4($key, $text, &$last_enc_key, &$last_enc_key_c) { | ||
1430 | if (function_exists('mcrypt_encrypt') AND ($out = @mcrypt_encrypt(MCRYPT_ARCFOUR, $key, $text, MCRYPT_MODE_STREAM, ''))) { | ||
1431 | // try to use mcrypt function if exist | ||
1432 | return $out; | ||
1433 | } | ||
1434 | if ($last_enc_key != $key) { | ||
1435 | $k = str_repeat($key, ((256 / strlen($key)) + 1)); | ||
1436 | $rc4 = range(0, 255); | ||
1437 | $j = 0; | ||
1438 | for ($i = 0; $i < 256; ++$i) { | ||
1439 | $t = $rc4[$i]; | ||
1440 | $j = ($j + $t + ord($k[$i])) % 256; | ||
1441 | $rc4[$i] = $rc4[$j]; | ||
1442 | $rc4[$j] = $t; | ||
1443 | } | ||
1444 | $last_enc_key = $key; | ||
1445 | $last_enc_key_c = $rc4; | ||
1446 | } else { | ||
1447 | $rc4 = $last_enc_key_c; | ||
1448 | } | ||
1449 | $len = strlen($text); | ||
1450 | $a = 0; | ||
1451 | $b = 0; | ||
1452 | $out = ''; | ||
1453 | for ($i = 0; $i < $len; ++$i) { | ||
1454 | $a = ($a + 1) % 256; | ||
1455 | $t = $rc4[$a]; | ||
1456 | $b = ($b + $t) % 256; | ||
1457 | $rc4[$a] = $rc4[$b]; | ||
1458 | $rc4[$b] = $t; | ||
1459 | $k = $rc4[($rc4[$a] + $rc4[$b]) % 256]; | ||
1460 | $out .= chr(ord($text[$i]) ^ $k); | ||
1461 | } | ||
1462 | return $out; | ||
1463 | } | ||
1464 | |||
1465 | /** | ||
1466 | * Return the premission code used on encryption (P value). | ||
1467 | * @param $permissions (Array) the set of permissions (specify the ones you want to block). | ||
1468 | * @param $mode (int) encryption strength: 0 = RC4 40 bit; 1 = RC4 128 bit; 2 = AES 128 bit; 3 = AES 256 bit. | ||
1469 | * @since 5.0.005 (2010-05-12) | ||
1470 | * @author Nicola Asuni | ||
1471 | * @public static | ||
1472 | */ | ||
1473 | public static function getUserPermissionCode($permissions, $mode=0) { | ||
1474 | $options = array( | ||
1475 | 'owner' => 2, // bit 2 -- inverted logic: cleared by default | ||
1476 | 'print' => 4, // bit 3 | ||
1477 | 'modify' => 8, // bit 4 | ||
1478 | 'copy' => 16, // bit 5 | ||
1479 | 'annot-forms' => 32, // bit 6 | ||
1480 | 'fill-forms' => 256, // bit 9 | ||
1481 | 'extract' => 512, // bit 10 | ||
1482 | 'assemble' => 1024,// bit 11 | ||
1483 | 'print-high' => 2048 // bit 12 | ||
1484 | ); | ||
1485 | $protection = 2147422012; // 32 bit: (01111111 11111111 00001111 00111100) | ||
1486 | foreach ($permissions as $permission) { | ||
1487 | if (isset($options[$permission])) { | ||
1488 | if (($mode > 0) OR ($options[$permission] <= 32)) { | ||
1489 | // set only valid permissions | ||
1490 | if ($options[$permission] == 2) { | ||
1491 | // the logic for bit 2 is inverted (cleared by default) | ||
1492 | $protection += $options[$permission]; | ||
1493 | } else { | ||
1494 | $protection -= $options[$permission]; | ||
1495 | } | ||
1496 | } | ||
1497 | } | ||
1498 | } | ||
1499 | return $protection; | ||
1500 | } | ||
1501 | |||
1502 | /** | ||
1503 | * Convert hexadecimal string to string | ||
1504 | * @param $bs (string) byte-string to convert | ||
1505 | * @return String | ||
1506 | * @since 5.0.005 (2010-05-12) | ||
1507 | * @author Nicola Asuni | ||
1508 | * @public static | ||
1509 | */ | ||
1510 | public static function convertHexStringToString($bs) { | ||
1511 | $string = ''; // string to be returned | ||
1512 | $bslength = strlen($bs); | ||
1513 | if (($bslength % 2) != 0) { | ||
1514 | // padding | ||
1515 | $bs .= '0'; | ||
1516 | ++$bslength; | ||
1517 | } | ||
1518 | for ($i = 0; $i < $bslength; $i += 2) { | ||
1519 | $string .= chr(hexdec($bs[$i].$bs[($i + 1)])); | ||
1520 | } | ||
1521 | return $string; | ||
1522 | } | ||
1523 | |||
1524 | /** | ||
1525 | * Convert string to hexadecimal string (byte string) | ||
1526 | * @param $s (string) string to convert | ||
1527 | * @return byte string | ||
1528 | * @since 5.0.010 (2010-05-17) | ||
1529 | * @author Nicola Asuni | ||
1530 | * @public static | ||
1531 | */ | ||
1532 | public static function convertStringToHexString($s) { | ||
1533 | $bs = ''; | ||
1534 | $chars = preg_split('//', $s, -1, PREG_SPLIT_NO_EMPTY); | ||
1535 | foreach ($chars as $c) { | ||
1536 | $bs .= sprintf('%02s', dechex(ord($c))); | ||
1537 | } | ||
1538 | return $bs; | ||
1539 | } | ||
1540 | |||
1541 | /** | ||
1542 | * Convert encryption P value to a string of bytes, low-order byte first. | ||
1543 | * @param $protection (string) 32bit encryption permission value (P value) | ||
1544 | * @return String | ||
1545 | * @since 5.0.005 (2010-05-12) | ||
1546 | * @author Nicola Asuni | ||
1547 | * @public static | ||
1548 | */ | ||
1549 | public static function getEncPermissionsString($protection) { | ||
1550 | $binprot = sprintf('%032b', $protection); | ||
1551 | $str = chr(bindec(substr($binprot, 24, 8))); | ||
1552 | $str .= chr(bindec(substr($binprot, 16, 8))); | ||
1553 | $str .= chr(bindec(substr($binprot, 8, 8))); | ||
1554 | $str .= chr(bindec(substr($binprot, 0, 8))); | ||
1555 | return $str; | ||
1556 | } | ||
1557 | |||
1558 | /** | ||
1559 | * Encode a name object. | ||
1560 | * @param $name (string) Name object to encode. | ||
1561 | * @return (string) Encoded name object. | ||
1562 | * @author Nicola Asuni | ||
1563 | * @since 5.9.097 (2011-06-23) | ||
1564 | * @public static | ||
1565 | */ | ||
1566 | public static function encodeNameObject($name) { | ||
1567 | $escname = ''; | ||
1568 | $length = strlen($name); | ||
1569 | for ($i = 0; $i < $length; ++$i) { | ||
1570 | $chr = $name[$i]; | ||
1571 | if (preg_match('/[0-9a-zA-Z#_=-]/', $chr) == 1) { | ||
1572 | $escname .= $chr; | ||
1573 | } else { | ||
1574 | $escname .= sprintf('#%02X', ord($chr)); | ||
1575 | } | ||
1576 | } | ||
1577 | return $escname; | ||
1578 | } | ||
1579 | |||
1580 | /** | ||
1581 | * Convert JavaScript form fields properties array to Annotation Properties array. | ||
1582 | * @param $prop (array) javascript field properties. Possible values are described on official Javascript for Acrobat API reference. | ||
1583 | * @param $spot_colors (array) Reference to spot colors array. | ||
1584 | * @param $rtl (boolean) True if in Right-To-Left text direction mode, false otherwise. | ||
1585 | * @return array of annotation properties | ||
1586 | * @author Nicola Asuni | ||
1587 | * @since 4.8.000 (2009-09-06) | ||
1588 | * @public static | ||
1589 | */ | ||
1590 | public static function getAnnotOptFromJSProp($prop, &$spot_colors, $rtl=false) { | ||
1591 | if (isset($prop['aopt']) AND is_array($prop['aopt'])) { | ||
1592 | // the annotation options area lready defined | ||
1593 | return $prop['aopt']; | ||
1594 | } | ||
1595 | $opt = array(); // value to be returned | ||
1596 | // alignment: Controls how the text is laid out within the text field. | ||
1597 | if (isset($prop['alignment'])) { | ||
1598 | switch ($prop['alignment']) { | ||
1599 | case 'left': { | ||
1600 | $opt['q'] = 0; | ||
1601 | break; | ||
1602 | } | ||
1603 | case 'center': { | ||
1604 | $opt['q'] = 1; | ||
1605 | break; | ||
1606 | } | ||
1607 | case 'right': { | ||
1608 | $opt['q'] = 2; | ||
1609 | break; | ||
1610 | } | ||
1611 | default: { | ||
1612 | $opt['q'] = ($rtl)?2:0; | ||
1613 | break; | ||
1614 | } | ||
1615 | } | ||
1616 | } | ||
1617 | // lineWidth: Specifies the thickness of the border when stroking the perimeter of a field's rectangle. | ||
1618 | if (isset($prop['lineWidth'])) { | ||
1619 | $linewidth = intval($prop['lineWidth']); | ||
1620 | } else { | ||
1621 | $linewidth = 1; | ||
1622 | } | ||
1623 | // borderStyle: The border style for a field. | ||
1624 | if (isset($prop['borderStyle'])) { | ||
1625 | switch ($prop['borderStyle']) { | ||
1626 | case 'border.d': | ||
1627 | case 'dashed': { | ||
1628 | $opt['border'] = array(0, 0, $linewidth, array(3, 2)); | ||
1629 | $opt['bs'] = array('w'=>$linewidth, 's'=>'D', 'd'=>array(3, 2)); | ||
1630 | break; | ||
1631 | } | ||
1632 | case 'border.b': | ||
1633 | case 'beveled': { | ||
1634 | $opt['border'] = array(0, 0, $linewidth); | ||
1635 | $opt['bs'] = array('w'=>$linewidth, 's'=>'B'); | ||
1636 | break; | ||
1637 | } | ||
1638 | case 'border.i': | ||
1639 | case 'inset': { | ||
1640 | $opt['border'] = array(0, 0, $linewidth); | ||
1641 | $opt['bs'] = array('w'=>$linewidth, 's'=>'I'); | ||
1642 | break; | ||
1643 | } | ||
1644 | case 'border.u': | ||
1645 | case 'underline': { | ||
1646 | $opt['border'] = array(0, 0, $linewidth); | ||
1647 | $opt['bs'] = array('w'=>$linewidth, 's'=>'U'); | ||
1648 | break; | ||
1649 | } | ||
1650 | case 'border.s': | ||
1651 | case 'solid': { | ||
1652 | $opt['border'] = array(0, 0, $linewidth); | ||
1653 | $opt['bs'] = array('w'=>$linewidth, 's'=>'S'); | ||
1654 | break; | ||
1655 | } | ||
1656 | default: { | ||
1657 | break; | ||
1658 | } | ||
1659 | } | ||
1660 | } | ||
1661 | if (isset($prop['border']) AND is_array($prop['border'])) { | ||
1662 | $opt['border'] = $prop['border']; | ||
1663 | } | ||
1664 | if (!isset($opt['mk'])) { | ||
1665 | $opt['mk'] = array(); | ||
1666 | } | ||
1667 | if (!isset($opt['mk']['if'])) { | ||
1668 | $opt['mk']['if'] = array(); | ||
1669 | } | ||
1670 | $opt['mk']['if']['a'] = array(0.5, 0.5); | ||
1671 | // buttonAlignX: Controls how space is distributed from the left of the button face with respect to the icon. | ||
1672 | if (isset($prop['buttonAlignX'])) { | ||
1673 | $opt['mk']['if']['a'][0] = $prop['buttonAlignX']; | ||
1674 | } | ||
1675 | // buttonAlignY: Controls how unused space is distributed from the bottom of the button face with respect to the icon. | ||
1676 | if (isset($prop['buttonAlignY'])) { | ||
1677 | $opt['mk']['if']['a'][1] = $prop['buttonAlignY']; | ||
1678 | } | ||
1679 | // buttonFitBounds: If true, the extent to which the icon may be scaled is set to the bounds of the button field. | ||
1680 | if (isset($prop['buttonFitBounds']) AND ($prop['buttonFitBounds'] == 'true')) { | ||
1681 | $opt['mk']['if']['fb'] = true; | ||
1682 | } | ||
1683 | // buttonScaleHow: Controls how the icon is scaled (if necessary) to fit inside the button face. | ||
1684 | if (isset($prop['buttonScaleHow'])) { | ||
1685 | switch ($prop['buttonScaleHow']) { | ||
1686 | case 'scaleHow.proportional': { | ||
1687 | $opt['mk']['if']['s'] = 'P'; | ||
1688 | break; | ||
1689 | } | ||
1690 | case 'scaleHow.anamorphic': { | ||
1691 | $opt['mk']['if']['s'] = 'A'; | ||
1692 | break; | ||
1693 | } | ||
1694 | } | ||
1695 | } | ||
1696 | // buttonScaleWhen: Controls when an icon is scaled to fit inside the button face. | ||
1697 | if (isset($prop['buttonScaleWhen'])) { | ||
1698 | switch ($prop['buttonScaleWhen']) { | ||
1699 | case 'scaleWhen.always': { | ||
1700 | $opt['mk']['if']['sw'] = 'A'; | ||
1701 | break; | ||
1702 | } | ||
1703 | case 'scaleWhen.never': { | ||
1704 | $opt['mk']['if']['sw'] = 'N'; | ||
1705 | break; | ||
1706 | } | ||
1707 | case 'scaleWhen.tooBig': { | ||
1708 | $opt['mk']['if']['sw'] = 'B'; | ||
1709 | break; | ||
1710 | } | ||
1711 | case 'scaleWhen.tooSmall': { | ||
1712 | $opt['mk']['if']['sw'] = 'S'; | ||
1713 | break; | ||
1714 | } | ||
1715 | } | ||
1716 | } | ||
1717 | // buttonPosition: Controls how the text and the icon of the button are positioned with respect to each other within the button face. | ||
1718 | if (isset($prop['buttonPosition'])) { | ||
1719 | switch ($prop['buttonPosition']) { | ||
1720 | case 0: | ||
1721 | case 'position.textOnly': { | ||
1722 | $opt['mk']['tp'] = 0; | ||
1723 | break; | ||
1724 | } | ||
1725 | case 1: | ||
1726 | case 'position.iconOnly': { | ||
1727 | $opt['mk']['tp'] = 1; | ||
1728 | break; | ||
1729 | } | ||
1730 | case 2: | ||
1731 | case 'position.iconTextV': { | ||
1732 | $opt['mk']['tp'] = 2; | ||
1733 | break; | ||
1734 | } | ||
1735 | case 3: | ||
1736 | case 'position.textIconV': { | ||
1737 | $opt['mk']['tp'] = 3; | ||
1738 | break; | ||
1739 | } | ||
1740 | case 4: | ||
1741 | case 'position.iconTextH': { | ||
1742 | $opt['mk']['tp'] = 4; | ||
1743 | break; | ||
1744 | } | ||
1745 | case 5: | ||
1746 | case 'position.textIconH': { | ||
1747 | $opt['mk']['tp'] = 5; | ||
1748 | break; | ||
1749 | } | ||
1750 | case 6: | ||
1751 | case 'position.overlay': { | ||
1752 | $opt['mk']['tp'] = 6; | ||
1753 | break; | ||
1754 | } | ||
1755 | } | ||
1756 | } | ||
1757 | // fillColor: Specifies the background color for a field. | ||
1758 | if (isset($prop['fillColor'])) { | ||
1759 | if (is_array($prop['fillColor'])) { | ||
1760 | $opt['mk']['bg'] = $prop['fillColor']; | ||
1761 | } else { | ||
1762 | $opt['mk']['bg'] = TCPDF_COLORS::convertHTMLColorToDec($prop['fillColor'], $spot_colors); | ||
1763 | } | ||
1764 | } | ||
1765 | // strokeColor: Specifies the stroke color for a field that is used to stroke the rectangle of the field with a line as large as the line width. | ||
1766 | if (isset($prop['strokeColor'])) { | ||
1767 | if (is_array($prop['strokeColor'])) { | ||
1768 | $opt['mk']['bc'] = $prop['strokeColor']; | ||
1769 | } else { | ||
1770 | $opt['mk']['bc'] = TCPDF_COLORS::convertHTMLColorToDec($prop['strokeColor'], $spot_colors); | ||
1771 | } | ||
1772 | } | ||
1773 | // rotation: The rotation of a widget in counterclockwise increments. | ||
1774 | if (isset($prop['rotation'])) { | ||
1775 | $opt['mk']['r'] = $prop['rotation']; | ||
1776 | } | ||
1777 | // charLimit: Limits the number of characters that a user can type into a text field. | ||
1778 | if (isset($prop['charLimit'])) { | ||
1779 | $opt['maxlen'] = intval($prop['charLimit']); | ||
1780 | } | ||
1781 | if (!isset($ff)) { | ||
1782 | $ff = 0; // default value | ||
1783 | } | ||
1784 | // readonly: The read-only characteristic of a field. If a field is read-only, the user can see the field but cannot change it. | ||
1785 | if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) { | ||
1786 | $ff += 1 << 0; | ||
1787 | } | ||
1788 | // required: Specifies whether a field requires a value. | ||
1789 | if (isset($prop['required']) AND ($prop['required'] == 'true')) { | ||
1790 | $ff += 1 << 1; | ||
1791 | } | ||
1792 | // multiline: Controls how text is wrapped within the field. | ||
1793 | if (isset($prop['multiline']) AND ($prop['multiline'] == 'true')) { | ||
1794 | $ff += 1 << 12; | ||
1795 | } | ||
1796 | // password: Specifies whether the field should display asterisks when data is entered in the field. | ||
1797 | if (isset($prop['password']) AND ($prop['password'] == 'true')) { | ||
1798 | $ff += 1 << 13; | ||
1799 | } | ||
1800 | // NoToggleToOff: If set, exactly one radio button shall be selected at all times; selecting the currently selected button has no effect. | ||
1801 | if (isset($prop['NoToggleToOff']) AND ($prop['NoToggleToOff'] == 'true')) { | ||
1802 | $ff += 1 << 14; | ||
1803 | } | ||
1804 | // Radio: If set, the field is a set of radio buttons. | ||
1805 | if (isset($prop['Radio']) AND ($prop['Radio'] == 'true')) { | ||
1806 | $ff += 1 << 15; | ||
1807 | } | ||
1808 | // Pushbutton: If set, the field is a pushbutton that does not retain a permanent value. | ||
1809 | if (isset($prop['Pushbutton']) AND ($prop['Pushbutton'] == 'true')) { | ||
1810 | $ff += 1 << 16; | ||
1811 | } | ||
1812 | // Combo: If set, the field is a combo box; if clear, the field is a list box. | ||
1813 | if (isset($prop['Combo']) AND ($prop['Combo'] == 'true')) { | ||
1814 | $ff += 1 << 17; | ||
1815 | } | ||
1816 | // editable: Controls whether a combo box is editable. | ||
1817 | if (isset($prop['editable']) AND ($prop['editable'] == 'true')) { | ||
1818 | $ff += 1 << 18; | ||
1819 | } | ||
1820 | // Sort: If set, the field's option items shall be sorted alphabetically. | ||
1821 | if (isset($prop['Sort']) AND ($prop['Sort'] == 'true')) { | ||
1822 | $ff += 1 << 19; | ||
1823 | } | ||
1824 | // fileSelect: If true, sets the file-select flag in the Options tab of the text field (Field is Used for File Selection). | ||
1825 | if (isset($prop['fileSelect']) AND ($prop['fileSelect'] == 'true')) { | ||
1826 | $ff += 1 << 20; | ||
1827 | } | ||
1828 | // multipleSelection: If true, indicates that a list box allows a multiple selection of items. | ||
1829 | if (isset($prop['multipleSelection']) AND ($prop['multipleSelection'] == 'true')) { | ||
1830 | $ff += 1 << 21; | ||
1831 | } | ||
1832 | // doNotSpellCheck: If true, spell checking is not performed on this editable text field. | ||
1833 | if (isset($prop['doNotSpellCheck']) AND ($prop['doNotSpellCheck'] == 'true')) { | ||
1834 | $ff += 1 << 22; | ||
1835 | } | ||
1836 | // doNotScroll: If true, the text field does not scroll and the user, therefore, is limited by the rectangular region designed for the field. | ||
1837 | if (isset($prop['doNotScroll']) AND ($prop['doNotScroll'] == 'true')) { | ||
1838 | $ff += 1 << 23; | ||
1839 | } | ||
1840 | // comb: If set to true, the field background is drawn as series of boxes (one for each character in the value of the field) and each character of the content is drawn within those boxes. The number of boxes drawn is determined from the charLimit property. It applies only to text fields. The setter will also raise if any of the following field properties are also set multiline, password, and fileSelect. A side-effect of setting this property is that the doNotScroll property is also set. | ||
1841 | if (isset($prop['comb']) AND ($prop['comb'] == 'true')) { | ||
1842 | $ff += 1 << 24; | ||
1843 | } | ||
1844 | // radiosInUnison: If false, even if a group of radio buttons have the same name and export value, they behave in a mutually exclusive fashion, like HTML radio buttons. | ||
1845 | if (isset($prop['radiosInUnison']) AND ($prop['radiosInUnison'] == 'true')) { | ||
1846 | $ff += 1 << 25; | ||
1847 | } | ||
1848 | // richText: If true, the field allows rich text formatting. | ||
1849 | if (isset($prop['richText']) AND ($prop['richText'] == 'true')) { | ||
1850 | $ff += 1 << 25; | ||
1851 | } | ||
1852 | // commitOnSelChange: Controls whether a field value is committed after a selection change. | ||
1853 | if (isset($prop['commitOnSelChange']) AND ($prop['commitOnSelChange'] == 'true')) { | ||
1854 | $ff += 1 << 26; | ||
1855 | } | ||
1856 | $opt['ff'] = $ff; | ||
1857 | // defaultValue: The default value of a field - that is, the value that the field is set to when the form is reset. | ||
1858 | if (isset($prop['defaultValue'])) { | ||
1859 | $opt['dv'] = $prop['defaultValue']; | ||
1860 | } | ||
1861 | $f = 4; // default value for annotation flags | ||
1862 | // readonly: The read-only characteristic of a field. If a field is read-only, the user can see the field but cannot change it. | ||
1863 | if (isset($prop['readonly']) AND ($prop['readonly'] == 'true')) { | ||
1864 | $f += 1 << 6; | ||
1865 | } | ||
1866 | // display: Controls whether the field is hidden or visible on screen and in print. | ||
1867 | if (isset($prop['display'])) { | ||
1868 | if ($prop['display'] == 'display.visible') { | ||
1869 | // | ||
1870 | } elseif ($prop['display'] == 'display.hidden') { | ||
1871 | $f += 1 << 1; | ||
1872 | } elseif ($prop['display'] == 'display.noPrint') { | ||
1873 | $f -= 1 << 2; | ||
1874 | } elseif ($prop['display'] == 'display.noView') { | ||
1875 | $f += 1 << 5; | ||
1876 | } | ||
1877 | } | ||
1878 | $opt['f'] = $f; | ||
1879 | // currentValueIndices: Reads and writes single or multiple values of a list box or combo box. | ||
1880 | if (isset($prop['currentValueIndices']) AND is_array($prop['currentValueIndices'])) { | ||
1881 | $opt['i'] = $prop['currentValueIndices']; | ||
1882 | } | ||
1883 | // value: The value of the field data that the user has entered. | ||
1884 | if (isset($prop['value'])) { | ||
1885 | if (is_array($prop['value'])) { | ||
1886 | $opt['opt'] = array(); | ||
1887 | foreach ($prop['value'] AS $key => $optval) { | ||
1888 | // exportValues: An array of strings representing the export values for the field. | ||
1889 | if (isset($prop['exportValues'][$key])) { | ||
1890 | $opt['opt'][$key] = array($prop['exportValues'][$key], $prop['value'][$key]); | ||
1891 | } else { | ||
1892 | $opt['opt'][$key] = $prop['value'][$key]; | ||
1893 | } | ||
1894 | } | ||
1895 | } else { | ||
1896 | $opt['v'] = $prop['value']; | ||
1897 | } | ||
1898 | } | ||
1899 | // richValue: This property specifies the text contents and formatting of a rich text field. | ||
1900 | if (isset($prop['richValue'])) { | ||
1901 | $opt['rv'] = $prop['richValue']; | ||
1902 | } | ||
1903 | // submitName: If nonempty, used during form submission instead of name. Only applicable if submitting in HTML format (that is, URL-encoded). | ||
1904 | if (isset($prop['submitName'])) { | ||
1905 | $opt['tm'] = $prop['submitName']; | ||
1906 | } | ||
1907 | // name: Fully qualified field name. | ||
1908 | if (isset($prop['name'])) { | ||
1909 | $opt['t'] = $prop['name']; | ||
1910 | } | ||
1911 | // userName: The user name (short description string) of the field. | ||
1912 | if (isset($prop['userName'])) { | ||
1913 | $opt['tu'] = $prop['userName']; | ||
1914 | } | ||
1915 | // highlight: Defines how a button reacts when a user clicks it. | ||
1916 | if (isset($prop['highlight'])) { | ||
1917 | switch ($prop['highlight']) { | ||
1918 | case 'none': | ||
1919 | case 'highlight.n': { | ||
1920 | $opt['h'] = 'N'; | ||
1921 | break; | ||
1922 | } | ||
1923 | case 'invert': | ||
1924 | case 'highlight.i': { | ||
1925 | $opt['h'] = 'i'; | ||
1926 | break; | ||
1927 | } | ||
1928 | case 'push': | ||
1929 | case 'highlight.p': { | ||
1930 | $opt['h'] = 'P'; | ||
1931 | break; | ||
1932 | } | ||
1933 | case 'outline': | ||
1934 | case 'highlight.o': { | ||
1935 | $opt['h'] = 'O'; | ||
1936 | break; | ||
1937 | } | ||
1938 | } | ||
1939 | } | ||
1940 | // Unsupported options: | ||
1941 | // - calcOrderIndex: Changes the calculation order of fields in the document. | ||
1942 | // - delay: Delays the redrawing of a field's appearance. | ||
1943 | // - defaultStyle: This property defines the default style attributes for the form field. | ||
1944 | // - style: Allows the user to set the glyph style of a check box or radio button. | ||
1945 | // - textColor, textFont, textSize | ||
1946 | return $opt; | ||
1947 | } | ||
1948 | |||
1949 | /** | ||
1950 | * Format the page numbers. | ||
1951 | * This method can be overriden for custom formats. | ||
1952 | * @param $num (int) page number | ||
1953 | * @since 4.2.005 (2008-11-06) | ||
1954 | * @public static | ||
1955 | */ | ||
1956 | public static function formatPageNumber($num) { | ||
1957 | return number_format((float)$num, 0, '', '.'); | ||
1958 | } | ||
1959 | |||
1960 | /** | ||
1961 | * Format the page numbers on the Table Of Content. | ||
1962 | * This method can be overriden for custom formats. | ||
1963 | * @param $num (int) page number | ||
1964 | * @since 4.5.001 (2009-01-04) | ||
1965 | * @see addTOC(), addHTMLTOC() | ||
1966 | * @public static | ||
1967 | */ | ||
1968 | public static function formatTOCPageNumber($num) { | ||
1969 | return number_format((float)$num, 0, '', '.'); | ||
1970 | } | ||
1971 | |||
1972 | /** | ||
1973 | * Extracts the CSS properties from a CSS string. | ||
1974 | * @param $cssdata (string) string containing CSS definitions. | ||
1975 | * @return An array where the keys are the CSS selectors and the values are the CSS properties. | ||
1976 | * @author Nicola Asuni | ||
1977 | * @since 5.1.000 (2010-05-25) | ||
1978 | * @public static | ||
1979 | */ | ||
1980 | public static function extractCSSproperties($cssdata) { | ||
1981 | if (empty($cssdata)) { | ||
1982 | return array(); | ||
1983 | } | ||
1984 | // remove comments | ||
1985 | $cssdata = preg_replace('/\/\*[^\*]*\*\//', '', $cssdata); | ||
1986 | // remove newlines and multiple spaces | ||
1987 | $cssdata = preg_replace('/[\s]+/', ' ', $cssdata); | ||
1988 | // remove some spaces | ||
1989 | $cssdata = preg_replace('/[\s]*([;:\{\}]{1})[\s]*/', '\\1', $cssdata); | ||
1990 | // remove empty blocks | ||
1991 | $cssdata = preg_replace('/([^\}\{]+)\{\}/', '', $cssdata); | ||
1992 | // replace media type parenthesis | ||
1993 | $cssdata = preg_replace('/@media[\s]+([^\{]*)\{/i', '@media \\1§', $cssdata); | ||
1994 | $cssdata = preg_replace('/\}\}/si', '}§', $cssdata); | ||
1995 | // trim string | ||
1996 | $cssdata = trim($cssdata); | ||
1997 | // find media blocks (all, braille, embossed, handheld, print, projection, screen, speech, tty, tv) | ||
1998 | $cssblocks = array(); | ||
1999 | $matches = array(); | ||
2000 | if (preg_match_all('/@media[\s]+([^\§]*)§([^§]*)§/i', $cssdata, $matches) > 0) { | ||
2001 | foreach ($matches[1] as $key => $type) { | ||
2002 | $cssblocks[$type] = $matches[2][$key]; | ||
2003 | } | ||
2004 | // remove media blocks | ||
2005 | $cssdata = preg_replace('/@media[\s]+([^\§]*)§([^§]*)§/i', '', $cssdata); | ||
2006 | } | ||
2007 | // keep 'all' and 'print' media, other media types are discarded | ||
2008 | if (isset($cssblocks['all']) AND !empty($cssblocks['all'])) { | ||
2009 | $cssdata .= $cssblocks['all']; | ||
2010 | } | ||
2011 | if (isset($cssblocks['print']) AND !empty($cssblocks['print'])) { | ||
2012 | $cssdata .= $cssblocks['print']; | ||
2013 | } | ||
2014 | // reset css blocks array | ||
2015 | $cssblocks = array(); | ||
2016 | $matches = array(); | ||
2017 | // explode css data string into array | ||
2018 | if (substr($cssdata, -1) == '}') { | ||
2019 | // remove last parethesis | ||
2020 | $cssdata = substr($cssdata, 0, -1); | ||
2021 | } | ||
2022 | $matches = explode('}', $cssdata); | ||
2023 | foreach ($matches as $key => $block) { | ||
2024 | // index 0 contains the CSS selector, index 1 contains CSS properties | ||
2025 | $cssblocks[$key] = explode('{', $block); | ||
2026 | if (!isset($cssblocks[$key][1])) { | ||
2027 | // remove empty definitions | ||
2028 | unset($cssblocks[$key]); | ||
2029 | } | ||
2030 | } | ||
2031 | // split groups of selectors (comma-separated list of selectors) | ||
2032 | foreach ($cssblocks as $key => $block) { | ||
2033 | if (strpos($block[0], ',') > 0) { | ||
2034 | $selectors = explode(',', $block[0]); | ||
2035 | foreach ($selectors as $sel) { | ||
2036 | $cssblocks[] = array(0 => trim($sel), 1 => $block[1]); | ||
2037 | } | ||
2038 | unset($cssblocks[$key]); | ||
2039 | } | ||
2040 | } | ||
2041 | // covert array to selector => properties | ||
2042 | $cssdata = array(); | ||
2043 | foreach ($cssblocks as $block) { | ||
2044 | $selector = $block[0]; | ||
2045 | // calculate selector's specificity | ||
2046 | $matches = array(); | ||
2047 | $a = 0; // the declaration is not from is a 'style' attribute | ||
2048 | $b = intval(preg_match_all('/[\#]/', $selector, $matches)); // number of ID attributes | ||
2049 | $c = intval(preg_match_all('/[\[\.]/', $selector, $matches)); // number of other attributes | ||
2050 | $c += intval(preg_match_all('/[\:]link|visited|hover|active|focus|target|lang|enabled|disabled|checked|indeterminate|root|nth|first|last|only|empty|contains|not/i', $selector, $matches)); // number of pseudo-classes | ||
2051 | $d = intval(preg_match_all('/[\>\+\~\s]{1}[a-zA-Z0-9]+/', ' '.$selector, $matches)); // number of element names | ||
2052 | $d += intval(preg_match_all('/[\:][\:]/', $selector, $matches)); // number of pseudo-elements | ||
2053 | $specificity = $a.$b.$c.$d; | ||
2054 | // add specificity to the beginning of the selector | ||
2055 | $cssdata[$specificity.' '.$selector] = $block[1]; | ||
2056 | } | ||
2057 | // sort selectors alphabetically to account for specificity | ||
2058 | ksort($cssdata, SORT_STRING); | ||
2059 | // return array | ||
2060 | return $cssdata; | ||
2061 | } | ||
2062 | |||
2063 | /** | ||
2064 | * Cleanup HTML code (requires HTML Tidy library). | ||
2065 | * @param $html (string) htmlcode to fix | ||
2066 | * @param $default_css (string) CSS commands to add | ||
2067 | * @param $tagvs (array) parameters for setHtmlVSpace method | ||
2068 | * @param $tidy_options (array) options for tidy_parse_string function | ||
2069 | * @param $tagvspaces (array) Array of vertical spaces for tags. | ||
2070 | * @return string XHTML code cleaned up | ||
2071 | * @author Nicola Asuni | ||
2072 | * @since 5.9.017 (2010-11-16) | ||
2073 | * @see setHtmlVSpace() | ||
2074 | * @public static | ||
2075 | */ | ||
2076 | public static function fixHTMLCode($html, $default_css='', $tagvs='', $tidy_options='', &$tagvspaces) { | ||
2077 | // configure parameters for HTML Tidy | ||
2078 | if ($tidy_options === '') { | ||
2079 | $tidy_options = array ( | ||
2080 | 'clean' => 1, | ||
2081 | 'drop-empty-paras' => 0, | ||
2082 | 'drop-proprietary-attributes' => 1, | ||
2083 | 'fix-backslash' => 1, | ||
2084 | 'hide-comments' => 1, | ||
2085 | 'join-styles' => 1, | ||
2086 | 'lower-literals' => 1, | ||
2087 | 'merge-divs' => 1, | ||
2088 | 'merge-spans' => 1, | ||
2089 | 'output-xhtml' => 1, | ||
2090 | 'word-2000' => 1, | ||
2091 | 'wrap' => 0, | ||
2092 | 'output-bom' => 0, | ||
2093 | //'char-encoding' => 'utf8', | ||
2094 | //'input-encoding' => 'utf8', | ||
2095 | //'output-encoding' => 'utf8' | ||
2096 | ); | ||
2097 | } | ||
2098 | // clean up the HTML code | ||
2099 | $tidy = tidy_parse_string($html, $tidy_options); | ||
2100 | // fix the HTML | ||
2101 | $tidy->cleanRepair(); | ||
2102 | // get the CSS part | ||
2103 | $tidy_head = tidy_get_head($tidy); | ||
2104 | $css = $tidy_head->value; | ||
2105 | $css = preg_replace('/<style([^>]+)>/ims', '<style>', $css); | ||
2106 | $css = preg_replace('/<\/style>(.*)<style>/ims', "\n", $css); | ||
2107 | $css = str_replace('/*<![CDATA[*/', '', $css); | ||
2108 | $css = str_replace('/*]]>*/', '', $css); | ||
2109 | preg_match('/<style>(.*)<\/style>/ims', $css, $matches); | ||
2110 | if (isset($matches[1])) { | ||
2111 | $css = strtolower($matches[1]); | ||
2112 | } else { | ||
2113 | $css = ''; | ||
2114 | } | ||
2115 | // include default css | ||
2116 | $css = '<style>'.$default_css.$css.'</style>'; | ||
2117 | // get the body part | ||
2118 | $tidy_body = tidy_get_body($tidy); | ||
2119 | $html = $tidy_body->value; | ||
2120 | // fix some self-closing tags | ||
2121 | $html = str_replace('<br>', '<br />', $html); | ||
2122 | // remove some empty tag blocks | ||
2123 | $html = preg_replace('/<div([^\>]*)><\/div>/', '', $html); | ||
2124 | $html = preg_replace('/<p([^\>]*)><\/p>/', '', $html); | ||
2125 | if ($tagvs !== '') { | ||
2126 | // set vertical space for some XHTML tags | ||
2127 | $tagvspaces = $tagvs; | ||
2128 | } | ||
2129 | // return the cleaned XHTML code + CSS | ||
2130 | return $css.$html; | ||
2131 | } | ||
2132 | |||
2133 | /** | ||
2134 | * Returns true if the CSS selector is valid for the selected HTML tag | ||
2135 | * @param $dom (array) array of HTML tags and properties | ||
2136 | * @param $key (int) key of the current HTML tag | ||
2137 | * @param $selector (string) CSS selector string | ||
2138 | * @return true if the selector is valid, false otherwise | ||
2139 | * @since 5.1.000 (2010-05-25) | ||
2140 | * @public static | ||
2141 | */ | ||
2142 | public static function isValidCSSSelectorForTag($dom, $key, $selector) { | ||
2143 | $valid = false; // value to be returned | ||
2144 | $tag = $dom[$key]['value']; | ||
2145 | $class = array(); | ||
2146 | if (isset($dom[$key]['attribute']['class']) AND !empty($dom[$key]['attribute']['class'])) { | ||
2147 | $class = explode(' ', strtolower($dom[$key]['attribute']['class'])); | ||
2148 | } | ||
2149 | $id = ''; | ||
2150 | if (isset($dom[$key]['attribute']['id']) AND !empty($dom[$key]['attribute']['id'])) { | ||
2151 | $id = strtolower($dom[$key]['attribute']['id']); | ||
2152 | } | ||
2153 | $selector = preg_replace('/([\>\+\~\s]{1})([\.]{1})([^\>\+\~\s]*)/si', '\\1*.\\3', $selector); | ||
2154 | $matches = array(); | ||
2155 | if (preg_match_all('/([\>\+\~\s]{1})([a-zA-Z0-9\*]+)([^\>\+\~\s]*)/si', $selector, $matches, PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE) > 0) { | ||
2156 | $parentop = array_pop($matches[1]); | ||
2157 | $operator = $parentop[0]; | ||
2158 | $offset = $parentop[1]; | ||
2159 | $lasttag = array_pop($matches[2]); | ||
2160 | $lasttag = strtolower(trim($lasttag[0])); | ||
2161 | if (($lasttag == '*') OR ($lasttag == $tag)) { | ||
2162 | // the last element on selector is our tag or 'any tag' | ||
2163 | $attrib = array_pop($matches[3]); | ||
2164 | $attrib = strtolower(trim($attrib[0])); | ||
2165 | if (!empty($attrib)) { | ||
2166 | // check if matches class, id, attribute, pseudo-class or pseudo-element | ||
2167 | switch ($attrib[0]) { | ||
2168 | case '.': { // class | ||
2169 | if (in_array(substr($attrib, 1), $class)) { | ||
2170 | $valid = true; | ||
2171 | } | ||
2172 | break; | ||
2173 | } | ||
2174 | case '#': { // ID | ||
2175 | if (substr($attrib, 1) == $id) { | ||
2176 | $valid = true; | ||
2177 | } | ||
2178 | break; | ||
2179 | } | ||
2180 | case '[': { // attribute | ||
2181 | $attrmatch = array(); | ||
2182 | if (preg_match('/\[([a-zA-Z0-9]*)[\s]*([\~\^\$\*\|\=]*)[\s]*["]?([^"\]]*)["]?\]/i', $attrib, $attrmatch) > 0) { | ||
2183 | $att = strtolower($attrmatch[1]); | ||
2184 | $val = $attrmatch[3]; | ||
2185 | if (isset($dom[$key]['attribute'][$att])) { | ||
2186 | switch ($attrmatch[2]) { | ||
2187 | case '=': { | ||
2188 | if ($dom[$key]['attribute'][$att] == $val) { | ||
2189 | $valid = true; | ||
2190 | } | ||
2191 | break; | ||
2192 | } | ||
2193 | case '~=': { | ||
2194 | if (in_array($val, explode(' ', $dom[$key]['attribute'][$att]))) { | ||
2195 | $valid = true; | ||
2196 | } | ||
2197 | break; | ||
2198 | } | ||
2199 | case '^=': { | ||
2200 | if ($val == substr($dom[$key]['attribute'][$att], 0, strlen($val))) { | ||
2201 | $valid = true; | ||
2202 | } | ||
2203 | break; | ||
2204 | } | ||
2205 | case '$=': { | ||
2206 | if ($val == substr($dom[$key]['attribute'][$att], -strlen($val))) { | ||
2207 | $valid = true; | ||
2208 | } | ||
2209 | break; | ||
2210 | } | ||
2211 | case '*=': { | ||
2212 | if (strpos($dom[$key]['attribute'][$att], $val) !== false) { | ||
2213 | $valid = true; | ||
2214 | } | ||
2215 | break; | ||
2216 | } | ||
2217 | case '|=': { | ||
2218 | if ($dom[$key]['attribute'][$att] == $val) { | ||
2219 | $valid = true; | ||
2220 | } elseif (preg_match('/'.$val.'[\-]{1}/i', $dom[$key]['attribute'][$att]) > 0) { | ||
2221 | $valid = true; | ||
2222 | } | ||
2223 | break; | ||
2224 | } | ||
2225 | default: { | ||
2226 | $valid = true; | ||
2227 | } | ||
2228 | } | ||
2229 | } | ||
2230 | } | ||
2231 | break; | ||
2232 | } | ||
2233 | case ':': { // pseudo-class or pseudo-element | ||
2234 | if ($attrib[1] == ':') { // pseudo-element | ||
2235 | // pseudo-elements are not supported! | ||
2236 | // (::first-line, ::first-letter, ::before, ::after) | ||
2237 | } else { // pseudo-class | ||
2238 | // pseudo-classes are not supported! | ||
2239 | // (:root, :nth-child(n), :nth-last-child(n), :nth-of-type(n), :nth-last-of-type(n), :first-child, :last-child, :first-of-type, :last-of-type, :only-child, :only-of-type, :empty, :link, :visited, :active, :hover, :focus, :target, :lang(fr), :enabled, :disabled, :checked) | ||
2240 | } | ||
2241 | break; | ||
2242 | } | ||
2243 | } // end of switch | ||
2244 | } else { | ||
2245 | $valid = true; | ||
2246 | } | ||
2247 | if ($valid AND ($offset > 0)) { | ||
2248 | $valid = false; | ||
2249 | // check remaining selector part | ||
2250 | $selector = substr($selector, 0, $offset); | ||
2251 | switch ($operator) { | ||
2252 | case ' ': { // descendant of an element | ||
2253 | while ($dom[$key]['parent'] > 0) { | ||
2254 | if (self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector)) { | ||
2255 | $valid = true; | ||
2256 | break; | ||
2257 | } else { | ||
2258 | $key = $dom[$key]['parent']; | ||
2259 | } | ||
2260 | } | ||
2261 | break; | ||
2262 | } | ||
2263 | case '>': { // child of an element | ||
2264 | $valid = self::isValidCSSSelectorForTag($dom, $dom[$key]['parent'], $selector); | ||
2265 | break; | ||
2266 | } | ||
2267 | case '+': { // immediately preceded by an element | ||
2268 | for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) { | ||
2269 | if ($dom[$i]['tag'] AND $dom[$i]['opening']) { | ||
2270 | $valid = self::isValidCSSSelectorForTag($dom, $i, $selector); | ||
2271 | break; | ||
2272 | } | ||
2273 | } | ||
2274 | break; | ||
2275 | } | ||
2276 | case '~': { // preceded by an element | ||
2277 | for ($i = ($key - 1); $i > $dom[$key]['parent']; --$i) { | ||
2278 | if ($dom[$i]['tag'] AND $dom[$i]['opening']) { | ||
2279 | if (self::isValidCSSSelectorForTag($dom, $i, $selector)) { | ||
2280 | break; | ||
2281 | } | ||
2282 | } | ||
2283 | } | ||
2284 | break; | ||
2285 | } | ||
2286 | } | ||
2287 | } | ||
2288 | } | ||
2289 | } | ||
2290 | return $valid; | ||
2291 | } | ||
2292 | |||
2293 | /** | ||
2294 | * Returns the styles array that apply for the selected HTML tag. | ||
2295 | * @param $dom (array) array of HTML tags and properties | ||
2296 | * @param $key (int) key of the current HTML tag | ||
2297 | * @param $css (array) array of CSS properties | ||
2298 | * @return array containing CSS properties | ||
2299 | * @since 5.1.000 (2010-05-25) | ||
2300 | * @public static | ||
2301 | */ | ||
2302 | public static function getCSSdataArray($dom, $key, $css) { | ||
2303 | $cssarray = array(); // style to be returned | ||
2304 | // get parent CSS selectors | ||
2305 | $selectors = array(); | ||
2306 | if (isset($dom[($dom[$key]['parent'])]['csssel'])) { | ||
2307 | $selectors = $dom[($dom[$key]['parent'])]['csssel']; | ||
2308 | } | ||
2309 | // get all styles that apply | ||
2310 | foreach($css as $selector => $style) { | ||
2311 | $pos = strpos($selector, ' '); | ||
2312 | // get specificity | ||
2313 | $specificity = substr($selector, 0, $pos); | ||
2314 | // remove specificity | ||
2315 | $selector = substr($selector, $pos); | ||
2316 | // check if this selector apply to current tag | ||
2317 | if (self::isValidCSSSelectorForTag($dom, $key, $selector)) { | ||
2318 | if (!in_array($selector, $selectors)) { | ||
2319 | // add style if not already added on parent selector | ||
2320 | $cssarray[] = array('k' => $selector, 's' => $specificity, 'c' => $style); | ||
2321 | $selectors[] = $selector; | ||
2322 | } | ||
2323 | } | ||
2324 | } | ||
2325 | if (isset($dom[$key]['attribute']['style'])) { | ||
2326 | // attach inline style (latest properties have high priority) | ||
2327 | $cssarray[] = array('k' => '', 's' => '1000', 'c' => $dom[$key]['attribute']['style']); | ||
2328 | } | ||
2329 | // order the css array to account for specificity | ||
2330 | $cssordered = array(); | ||
2331 | foreach ($cssarray as $key => $val) { | ||
2332 | $skey = sprintf('%04d', $key); | ||
2333 | $cssordered[$val['s'].'_'.$skey] = $val; | ||
2334 | } | ||
2335 | // sort selectors alphabetically to account for specificity | ||
2336 | ksort($cssordered, SORT_STRING); | ||
2337 | return array($selectors, $cssordered); | ||
2338 | } | ||
2339 | |||
2340 | /** | ||
2341 | * Compact CSS data array into single string. | ||
2342 | * @param $css (array) array of CSS properties | ||
2343 | * @return string containing merged CSS properties | ||
2344 | * @since 5.9.070 (2011-04-19) | ||
2345 | * @public static | ||
2346 | */ | ||
2347 | public static function getTagStyleFromCSSarray($css) { | ||
2348 | $tagstyle = ''; // value to be returned | ||
2349 | foreach ($css as $style) { | ||
2350 | // split single css commands | ||
2351 | $csscmds = explode(';', $style['c']); | ||
2352 | foreach ($csscmds as $cmd) { | ||
2353 | if (!empty($cmd)) { | ||
2354 | $pos = strpos($cmd, ':'); | ||
2355 | if ($pos !== false) { | ||
2356 | $cmd = substr($cmd, 0, ($pos + 1)); | ||
2357 | if (strpos($tagstyle, $cmd) !== false) { | ||
2358 | // remove duplicate commands (last commands have high priority) | ||
2359 | $tagstyle = preg_replace('/'.$cmd.'[^;]+/i', '', $tagstyle); | ||
2360 | } | ||
2361 | } | ||
2362 | } | ||
2363 | } | ||
2364 | $tagstyle .= ';'.$style['c']; | ||
2365 | } | ||
2366 | // remove multiple semicolons | ||
2367 | $tagstyle = preg_replace('/[;]+/', ';', $tagstyle); | ||
2368 | return $tagstyle; | ||
2369 | } | ||
2370 | |||
2371 | /** | ||
2372 | * Returns the Roman representation of an integer number | ||
2373 | * @param $number (int) number to convert | ||
2374 | * @return string roman representation of the specified number | ||
2375 | * @since 4.4.004 (2008-12-10) | ||
2376 | * @public static | ||
2377 | */ | ||
2378 | public static function intToRoman($number) { | ||
2379 | $roman = ''; | ||
2380 | while ($number >= 1000) { | ||
2381 | $roman .= 'M'; | ||
2382 | $number -= 1000; | ||
2383 | } | ||
2384 | while ($number >= 900) { | ||
2385 | $roman .= 'CM'; | ||
2386 | $number -= 900; | ||
2387 | } | ||
2388 | while ($number >= 500) { | ||
2389 | $roman .= 'D'; | ||
2390 | $number -= 500; | ||
2391 | } | ||
2392 | while ($number >= 400) { | ||
2393 | $roman .= 'CD'; | ||
2394 | $number -= 400; | ||
2395 | } | ||
2396 | while ($number >= 100) { | ||
2397 | $roman .= 'C'; | ||
2398 | $number -= 100; | ||
2399 | } | ||
2400 | while ($number >= 90) { | ||
2401 | $roman .= 'XC'; | ||
2402 | $number -= 90; | ||
2403 | } | ||
2404 | while ($number >= 50) { | ||
2405 | $roman .= 'L'; | ||
2406 | $number -= 50; | ||
2407 | } | ||
2408 | while ($number >= 40) { | ||
2409 | $roman .= 'XL'; | ||
2410 | $number -= 40; | ||
2411 | } | ||
2412 | while ($number >= 10) { | ||
2413 | $roman .= 'X'; | ||
2414 | $number -= 10; | ||
2415 | } | ||
2416 | while ($number >= 9) { | ||
2417 | $roman .= 'IX'; | ||
2418 | $number -= 9; | ||
2419 | } | ||
2420 | while ($number >= 5) { | ||
2421 | $roman .= 'V'; | ||
2422 | $number -= 5; | ||
2423 | } | ||
2424 | while ($number >= 4) { | ||
2425 | $roman .= 'IV'; | ||
2426 | $number -= 4; | ||
2427 | } | ||
2428 | while ($number >= 1) { | ||
2429 | $roman .= 'I'; | ||
2430 | --$number; | ||
2431 | } | ||
2432 | return $roman; | ||
2433 | } | ||
2434 | |||
2435 | /** | ||
2436 | * Find position of last occurrence of a substring in a string | ||
2437 | * @param $haystack (string) The string to search in. | ||
2438 | * @param $needle (string) substring to search. | ||
2439 | * @param $offset (int) May be specified to begin searching an arbitrary number of characters into the string. | ||
2440 | * @return Returns the position where the needle exists. Returns FALSE if the needle was not found. | ||
2441 | * @since 4.8.038 (2010-03-13) | ||
2442 | * @public static | ||
2443 | */ | ||
2444 | public static function revstrpos($haystack, $needle, $offset = 0) { | ||
2445 | $length = strlen($haystack); | ||
2446 | $offset = ($offset > 0)?($length - $offset):abs($offset); | ||
2447 | $pos = strpos(strrev($haystack), strrev($needle), $offset); | ||
2448 | return ($pos === false)?false:($length - $pos - strlen($needle)); | ||
2449 | } | ||
2450 | |||
2451 | /** | ||
2452 | * Serialize an array of parameters to be used with TCPDF tag in HTML code. | ||
2453 | * @param $data (array) parameters array | ||
2454 | * @return string containing serialized data | ||
2455 | * @since 4.9.006 (2010-04-02) | ||
2456 | * @public static | ||
2457 | */ | ||
2458 | public static function serializeTCPDFtagParameters($data) { | ||
2459 | return urlencode(json_encode($data)); | ||
2460 | } | ||
2461 | |||
2462 | /** | ||
2463 | * Unserialize parameters to be used with TCPDF tag in HTML code. | ||
2464 | * @param $data (string) serialized data | ||
2465 | * @return array containing unserialized data | ||
2466 | * @public static | ||
2467 | */ | ||
2468 | public static function unserializeTCPDFtagParameters($data) { | ||
2469 | return json_decode(urldecode($data), true); | ||
2470 | } | ||
2471 | |||
2472 | /** | ||
2473 | * Returns an array of hyphenation patterns. | ||
2474 | * @param $file (string) TEX file containing hypenation patterns. TEX pattrns can be downloaded from http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/ | ||
2475 | * @return array of hyphenation patterns | ||
2476 | * @author Nicola Asuni | ||
2477 | * @since 4.9.012 (2010-04-12) | ||
2478 | * @public static | ||
2479 | */ | ||
2480 | public static function getHyphenPatternsFromTEX($file) { | ||
2481 | // TEX patterns are available at: | ||
2482 | // http://www.ctan.org/tex-archive/language/hyph-utf8/tex/generic/hyph-utf8/patterns/ | ||
2483 | $data = file_get_contents($file); | ||
2484 | $patterns = array(); | ||
2485 | // remove comments | ||
2486 | $data = preg_replace('/\%[^\n]*/', '', $data); | ||
2487 | // extract the patterns part | ||
2488 | preg_match('/\\\\patterns\{([^\}]*)\}/i', $data, $matches); | ||
2489 | $data = trim(substr($matches[0], 10, -1)); | ||
2490 | // extract each pattern | ||
2491 | $patterns_array = preg_split('/[\s]+/', $data); | ||
2492 | // create new language array of patterns | ||
2493 | $patterns = array(); | ||
2494 | foreach($patterns_array as $val) { | ||
2495 | if (!TCPDF_STATIC::empty_string($val)) { | ||
2496 | $val = trim($val); | ||
2497 | $val = str_replace('\'', '\\\'', $val); | ||
2498 | $key = preg_replace('/[0-9]+/', '', $val); | ||
2499 | $patterns[$key] = $val; | ||
2500 | } | ||
2501 | } | ||
2502 | return $patterns; | ||
2503 | } | ||
2504 | |||
2505 | /** | ||
2506 | * Get the Path-Painting Operators. | ||
2507 | * @param $style (string) Style of rendering. Possible values are: | ||
2508 | * <ul> | ||
2509 | * <li>S or D: Stroke the path.</li> | ||
2510 | * <li>s or d: Close and stroke the path.</li> | ||
2511 | * <li>f or F: Fill the path, using the nonzero winding number rule to determine the region to fill.</li> | ||
2512 | * <li>f* or F*: Fill the path, using the even-odd rule to determine the region to fill.</li> | ||
2513 | * <li>B or FD or DF: Fill and then stroke the path, using the nonzero winding number rule to determine the region to fill.</li> | ||
2514 | * <li>B* or F*D or DF*: Fill and then stroke the path, using the even-odd rule to determine the region to fill.</li> | ||
2515 | * <li>b or fd or df: Close, fill, and then stroke the path, using the nonzero winding number rule to determine the region to fill.</li> | ||
2516 | * <li>b or f*d or df*: Close, fill, and then stroke the path, using the even-odd rule to determine the region to fill.</li> | ||
2517 | * <li>CNZ: Clipping mode using the even-odd rule to determine which regions lie inside the clipping path.</li> | ||
2518 | * <li>CEO: Clipping mode using the nonzero winding number rule to determine which regions lie inside the clipping path</li> | ||
2519 | * <li>n: End the path object without filling or stroking it.</li> | ||
2520 | * </ul> | ||
2521 | * @param $default (string) default style | ||
2522 | * @author Nicola Asuni | ||
2523 | * @since 5.0.000 (2010-04-30) | ||
2524 | * @public static | ||
2525 | */ | ||
2526 | public static function getPathPaintOperator($style, $default='S') { | ||
2527 | $op = ''; | ||
2528 | switch($style) { | ||
2529 | case 'S': | ||
2530 | case 'D': { | ||
2531 | $op = 'S'; | ||
2532 | break; | ||
2533 | } | ||
2534 | case 's': | ||
2535 | case 'd': { | ||
2536 | $op = 's'; | ||
2537 | break; | ||
2538 | } | ||
2539 | case 'f': | ||
2540 | case 'F': { | ||
2541 | $op = 'f'; | ||
2542 | break; | ||
2543 | } | ||
2544 | case 'f*': | ||
2545 | case 'F*': { | ||
2546 | $op = 'f*'; | ||
2547 | break; | ||
2548 | } | ||
2549 | case 'B': | ||
2550 | case 'FD': | ||
2551 | case 'DF': { | ||
2552 | $op = 'B'; | ||
2553 | break; | ||
2554 | } | ||
2555 | case 'B*': | ||
2556 | case 'F*D': | ||
2557 | case 'DF*': { | ||
2558 | $op = 'B*'; | ||
2559 | break; | ||
2560 | } | ||
2561 | case 'b': | ||
2562 | case 'fd': | ||
2563 | case 'df': { | ||
2564 | $op = 'b'; | ||
2565 | break; | ||
2566 | } | ||
2567 | case 'b*': | ||
2568 | case 'f*d': | ||
2569 | case 'df*': { | ||
2570 | $op = 'b*'; | ||
2571 | break; | ||
2572 | } | ||
2573 | case 'CNZ': { | ||
2574 | $op = 'W n'; | ||
2575 | break; | ||
2576 | } | ||
2577 | case 'CEO': { | ||
2578 | $op = 'W* n'; | ||
2579 | break; | ||
2580 | } | ||
2581 | case 'n': { | ||
2582 | $op = 'n'; | ||
2583 | break; | ||
2584 | } | ||
2585 | default: { | ||
2586 | if (!empty($default)) { | ||
2587 | $op = self::getPathPaintOperator($default, ''); | ||
2588 | } else { | ||
2589 | $op = ''; | ||
2590 | } | ||
2591 | } | ||
2592 | } | ||
2593 | return $op; | ||
2594 | } | ||
2595 | |||
2596 | /** | ||
2597 | * Get the product of two SVG tranformation matrices | ||
2598 | * @param $ta (array) first SVG tranformation matrix | ||
2599 | * @param $tb (array) second SVG tranformation matrix | ||
2600 | * @return transformation array | ||
2601 | * @author Nicola Asuni | ||
2602 | * @since 5.0.000 (2010-05-02) | ||
2603 | * @public static | ||
2604 | */ | ||
2605 | public static function getTransformationMatrixProduct($ta, $tb) { | ||
2606 | $tm = array(); | ||
2607 | $tm[0] = ($ta[0] * $tb[0]) + ($ta[2] * $tb[1]); | ||
2608 | $tm[1] = ($ta[1] * $tb[0]) + ($ta[3] * $tb[1]); | ||
2609 | $tm[2] = ($ta[0] * $tb[2]) + ($ta[2] * $tb[3]); | ||
2610 | $tm[3] = ($ta[1] * $tb[2]) + ($ta[3] * $tb[3]); | ||
2611 | $tm[4] = ($ta[0] * $tb[4]) + ($ta[2] * $tb[5]) + $ta[4]; | ||
2612 | $tm[5] = ($ta[1] * $tb[4]) + ($ta[3] * $tb[5]) + $ta[5]; | ||
2613 | return $tm; | ||
2614 | } | ||
2615 | |||
2616 | /** | ||
2617 | * Get the tranformation matrix from SVG transform attribute | ||
2618 | * @param $attribute (string) transformation | ||
2619 | * @return array of transformations | ||
2620 | * @author Nicola Asuni | ||
2621 | * @since 5.0.000 (2010-05-02) | ||
2622 | * @public static | ||
2623 | */ | ||
2624 | public static function getSVGTransformMatrix($attribute) { | ||
2625 | // identity matrix | ||
2626 | $tm = array(1, 0, 0, 1, 0, 0); | ||
2627 | $transform = array(); | ||
2628 | if (preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)[\s]*\(([^\)]+)\)/si', $attribute, $transform, PREG_SET_ORDER) > 0) { | ||
2629 | foreach ($transform as $key => $data) { | ||
2630 | if (!empty($data[2])) { | ||
2631 | $a = 1; | ||
2632 | $b = 0; | ||
2633 | $c = 0; | ||
2634 | $d = 1; | ||
2635 | $e = 0; | ||
2636 | $f = 0; | ||
2637 | $regs = array(); | ||
2638 | switch ($data[1]) { | ||
2639 | case 'matrix': { | ||
2640 | if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { | ||
2641 | $a = $regs[1]; | ||
2642 | $b = $regs[2]; | ||
2643 | $c = $regs[3]; | ||
2644 | $d = $regs[4]; | ||
2645 | $e = $regs[5]; | ||
2646 | $f = $regs[6]; | ||
2647 | } | ||
2648 | break; | ||
2649 | } | ||
2650 | case 'translate': { | ||
2651 | if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { | ||
2652 | $e = $regs[1]; | ||
2653 | $f = $regs[2]; | ||
2654 | } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) { | ||
2655 | $e = $regs[1]; | ||
2656 | } | ||
2657 | break; | ||
2658 | } | ||
2659 | case 'scale': { | ||
2660 | if (preg_match('/([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { | ||
2661 | $a = $regs[1]; | ||
2662 | $d = $regs[2]; | ||
2663 | } elseif (preg_match('/([a-z0-9\-\.]+)/si', $data[2], $regs)) { | ||
2664 | $a = $regs[1]; | ||
2665 | $d = $a; | ||
2666 | } | ||
2667 | break; | ||
2668 | } | ||
2669 | case 'rotate': { | ||
2670 | if (preg_match('/([0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)[\,\s]+([a-z0-9\-\.]+)/si', $data[2], $regs)) { | ||
2671 | $ang = deg2rad($regs[1]); | ||
2672 | $x = $regs[2]; | ||
2673 | $y = $regs[3]; | ||
2674 | $a = cos($ang); | ||
2675 | $b = sin($ang); | ||
2676 | $c = -$b; | ||
2677 | $d = $a; | ||
2678 | $e = ($x * (1 - $a)) - ($y * $c); | ||
2679 | $f = ($y * (1 - $d)) - ($x * $b); | ||
2680 | } elseif (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) { | ||
2681 | $ang = deg2rad($regs[1]); | ||
2682 | $a = cos($ang); | ||
2683 | $b = sin($ang); | ||
2684 | $c = -$b; | ||
2685 | $d = $a; | ||
2686 | $e = 0; | ||
2687 | $f = 0; | ||
2688 | } | ||
2689 | break; | ||
2690 | } | ||
2691 | case 'skewX': { | ||
2692 | if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) { | ||
2693 | $c = tan(deg2rad($regs[1])); | ||
2694 | } | ||
2695 | break; | ||
2696 | } | ||
2697 | case 'skewY': { | ||
2698 | if (preg_match('/([0-9\-\.]+)/si', $data[2], $regs)) { | ||
2699 | $b = tan(deg2rad($regs[1])); | ||
2700 | } | ||
2701 | break; | ||
2702 | } | ||
2703 | } | ||
2704 | $tm = self::getTransformationMatrixProduct($tm, array($a, $b, $c, $d, $e, $f)); | ||
2705 | } | ||
2706 | } | ||
2707 | } | ||
2708 | return $tm; | ||
2709 | } | ||
2710 | |||
2711 | /** | ||
2712 | * Returns the angle in radiants between two vectors | ||
2713 | * @param $x1 (int) X coordinate of first vector point | ||
2714 | * @param $y1 (int) Y coordinate of first vector point | ||
2715 | * @param $x2 (int) X coordinate of second vector point | ||
2716 | * @param $y2 (int) Y coordinate of second vector point | ||
2717 | * @author Nicola Asuni | ||
2718 | * @since 5.0.000 (2010-05-04) | ||
2719 | * @public static | ||
2720 | */ | ||
2721 | public static function getVectorsAngle($x1, $y1, $x2, $y2) { | ||
2722 | $dprod = ($x1 * $x2) + ($y1 * $y2); | ||
2723 | $dist1 = sqrt(($x1 * $x1) + ($y1 * $y1)); | ||
2724 | $dist2 = sqrt(($x2 * $x2) + ($y2 * $y2)); | ||
2725 | $angle = acos($dprod / ($dist1 * $dist2)); | ||
2726 | if (is_nan($angle)) { | ||
2727 | $angle = M_PI; | ||
2728 | } | ||
2729 | if ((($x1 * $y2) - ($x2 * $y1)) < 0) { | ||
2730 | $angle *= -1; | ||
2731 | } | ||
2732 | return $angle; | ||
2733 | } | ||
2734 | |||
2735 | /** | ||
2736 | * Split string by a regular expression. | ||
2737 | * This is a wrapper for the preg_split function to avoid the bug: https://bugs.php.net/bug.php?id=45850 | ||
2738 | * @param $pattern (string) The regular expression pattern to search for without the modifiers, as a string. | ||
2739 | * @param $modifiers (string) The modifiers part of the pattern, | ||
2740 | * @param $subject (string) The input string. | ||
2741 | * @param $limit (int) If specified, then only substrings up to limit are returned with the rest of the string being placed in the last substring. A limit of -1, 0 or NULL means "no limit" and, as is standard across PHP, you can use NULL to skip to the flags parameter. | ||
2742 | * @param $flags (int) The flags as specified on the preg_split PHP function. | ||
2743 | * @return Returns an array containing substrings of subject split along boundaries matched by pattern.modifier | ||
2744 | * @author Nicola Asuni | ||
2745 | * @since 6.0.023 | ||
2746 | * @public static | ||
2747 | */ | ||
2748 | public static function pregSplit($pattern, $modifiers, $subject, $limit=NULL, $flags=NULL) { | ||
2749 | // the bug only happens on PHP 5.2 when using the u modifier | ||
2750 | if ((strpos($modifiers, 'u') === FALSE) OR (count(preg_split('//u', "\n\t", -1, PREG_SPLIT_NO_EMPTY)) == 2)) { | ||
2751 | return preg_split($pattern.$modifiers, $subject, $limit, $flags); | ||
2752 | } | ||
2753 | // preg_split is bugged - try alternative solution | ||
2754 | $ret = array(); | ||
2755 | while (($nl = strpos($subject, "\n")) !== FALSE) { | ||
2756 | $ret = array_merge($ret, preg_split($pattern.$modifiers, substr($subject, 0, $nl), $limit, $flags)); | ||
2757 | $ret[] = "\n"; | ||
2758 | $subject = substr($subject, ($nl + 1)); | ||
2759 | } | ||
2760 | if (strlen($subject) > 0) { | ||
2761 | $ret = array_merge($ret, preg_split($pattern.$modifiers, $subject, $limit, $flags)); | ||
2762 | } | ||
2763 | return $ret; | ||
2764 | } | ||
2765 | |||
2766 | /** | ||
2767 | * Reads entire file into a string. | ||
2768 | * The file can be also an URL. | ||
2769 | * @param $file (string) Name of the file or URL to read. | ||
2770 | * @return The function returns the read data or FALSE on failure. | ||
2771 | * @author Nicola Asuni | ||
2772 | * @since 6.0.025 | ||
2773 | * @public static | ||
2774 | */ | ||
2775 | public static function fileGetContents($file) { | ||
2776 | //$file = html_entity_decode($file); | ||
2777 | // array of possible alternative paths/URLs | ||
2778 | $alt = array($file); | ||
2779 | // replace URL relative path with full real server path | ||
2780 | if ((strlen($file) > 1) | ||
2781 | AND ($file[0] == '/') | ||
2782 | AND ($file[1] != '/') | ||
2783 | AND !empty($_SERVER['DOCUMENT_ROOT']) | ||
2784 | AND ($_SERVER['DOCUMENT_ROOT'] != '/')) { | ||
2785 | $findroot = strpos($file, $_SERVER['DOCUMENT_ROOT']); | ||
2786 | if (($findroot === false) OR ($findroot > 1)) { | ||
2787 | if (substr($_SERVER['DOCUMENT_ROOT'], -1) == '/') { | ||
2788 | $tmp = substr($_SERVER['DOCUMENT_ROOT'], 0, -1).$file; | ||
2789 | } else { | ||
2790 | $tmp = $_SERVER['DOCUMENT_ROOT'].$file; | ||
2791 | } | ||
2792 | $alt[] = htmlspecialchars_decode(urldecode($tmp)); | ||
2793 | } | ||
2794 | } | ||
2795 | // URL mode | ||
2796 | $url = $file; | ||
2797 | // check for missing protocol | ||
2798 | if (preg_match('%^/{2}%', $url)) { | ||
2799 | if (preg_match('%^([^:]+:)//%i', K_PATH_URL, $match)) { | ||
2800 | $url = $match[1].str_replace(' ', '%20', $url); | ||
2801 | $alt[] = $url; | ||
2802 | } | ||
2803 | } | ||
2804 | $urldata = @parse_url($url); | ||
2805 | if (!isset($urldata['query']) OR (strlen($urldata['query']) <= 0)) { | ||
2806 | if (strpos($url, K_PATH_URL) === 0) { | ||
2807 | // convert URL to full server path | ||
2808 | $tmp = str_replace(K_PATH_URL, K_PATH_MAIN, $url); | ||
2809 | $tmp = htmlspecialchars_decode(urldecode($tmp)); | ||
2810 | $alt[] = $tmp; | ||
2811 | } | ||
2812 | } | ||
2813 | if (isset($_SERVER['SCRIPT_URI'])) { | ||
2814 | $urldata = @parse_url($_SERVER['SCRIPT_URI']); | ||
2815 | $alt[] = $urldata['scheme'].'://'.$urldata['host'].(($file[0] == '/') ? '' : '/').$file; | ||
2816 | } | ||
2817 | foreach ($alt as $f) { | ||
2818 | $ret = @file_get_contents($f); | ||
2819 | if (($ret === FALSE) | ||
2820 | AND !ini_get('allow_url_fopen') | ||
2821 | AND function_exists('curl_init') | ||
2822 | AND preg_match('%^(https?|ftp)://%', $f)) { | ||
2823 | // try to get remote file data using cURL | ||
2824 | $cs = curl_init(); // curl session | ||
2825 | curl_setopt($cs, CURLOPT_URL, $f); | ||
2826 | curl_setopt($cs, CURLOPT_BINARYTRANSFER, true); | ||
2827 | curl_setopt($cs, CURLOPT_FAILONERROR, true); | ||
2828 | curl_setopt($cs, CURLOPT_RETURNTRANSFER, true); | ||
2829 | if ((ini_get('open_basedir') == '') AND (!ini_get('safe_mode'))) { | ||
2830 | curl_setopt($cs, CURLOPT_FOLLOWLOCATION, true); | ||
2831 | } | ||
2832 | curl_setopt($cs, CURLOPT_CONNECTTIMEOUT, 5); | ||
2833 | curl_setopt($cs, CURLOPT_TIMEOUT, 30); | ||
2834 | curl_setopt($cs, CURLOPT_SSL_VERIFYPEER, false); | ||
2835 | curl_setopt($cs, CURLOPT_SSL_VERIFYHOST, false); | ||
2836 | curl_setopt($cs, CURLOPT_USERAGENT, 'TCPDF'); | ||
2837 | $ret = curl_exec($cs); | ||
2838 | curl_close($cs); | ||
2839 | } | ||
2840 | if ($ret !== FALSE) { | ||
2841 | break; | ||
2842 | } | ||
2843 | } | ||
2844 | return $ret; | ||
2845 | } | ||
2846 | |||
2847 | } // END OF TCPDF_STATIC CLASS | ||
2848 | |||
2849 | //============================================================+ | ||
2850 | // END OF FILE | ||
2851 | //============================================================+ | ||