Audacity  2.2.2
ProgressDialog.cpp
Go to the documentation of this file.
1 /**********************************************************************
2 
3  Audacity: A Digital Audio Editor
4 
5  ProgressDialog.cpp
6 
7  Copyright
8  Leland Lucius
9  Vaughan Johnson
10 
11  This program is free software; you can redistribute it and/or modify
12  it under the terms of the GNU General Public License as published by
13  the Free Software Foundation; either version 2 of the License, or
14  (at your option) any later version.
15 
16 *******************************************************************//*******************************************************************//**********************************************************************/
28 
29 #include "../Audacity.h"
30 
31 #include "../MemoryX.h"
32 #include <algorithm>
33 
34 #include <wx/defs.h>
35 #include <wx/app.h>
36 #include <wx/button.h>
37 #include <wx/dcclient.h>
38 #include <wx/datetime.h>
39 #include <wx/dialog.h>
40 #include <wx/event.h>
41 #include <wx/evtloop.h>
42 #include <wx/frame.h>
43 #include <wx/intl.h>
44 #include <wx/msgdlg.h>
45 #include <wx/settings.h>
46 #include <wx/sizer.h>
47 #include <wx/sound.h>
48 #include <wx/stopwatch.h>
49 #include <wx/window.h>
50 
51 #include "ProgressDialog.h"
52 #include "ErrorDialog.h"
53 #include "../Prefs.h"
54 #include "../Internat.h"
55 
56 // This really should be a Preferences setting
57 static const unsigned char beep[] =
58 {
59  0x52, 0x49, 0x46, 0x46, 0x36, 0x2B, 0x00, 0x00, 0x57, 0x41, 0x56, 0x45,
60  0x66, 0x6D, 0x74, 0x20, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
61  0x44, 0xAC, 0x00, 0x00, 0x88, 0x58, 0x01, 0x00, 0x02, 0x00, 0x10, 0x00,
62  0x64, 0x61, 0x74, 0x61, 0x12, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0B,
63  0xF9, 0x15, 0xC5, 0x20, 0xF0, 0x2A, 0xC0, 0x34, 0xBD, 0x3D, 0x23, 0x46,
64  0x89, 0x4D, 0x0A, 0x54, 0xB7, 0x59, 0x45, 0x5E, 0xE8, 0x61, 0x63, 0x64,
65  0xF5, 0x65, 0x66, 0x66, 0xE1, 0x65, 0x8C, 0x64, 0x42, 0x62, 0x44, 0x5F,
66  0x86, 0x5B, 0x38, 0x57, 0x61, 0x52, 0x23, 0x4D, 0xA0, 0x47, 0xE7, 0x41,
67  0x1A, 0x3C, 0x4F, 0x36, 0x9D, 0x30, 0x1E, 0x2B, 0xDE, 0x25, 0xFD, 0x20,
68  0x85, 0x1C, 0x67, 0x18, 0xD6, 0x14, 0xA8, 0x11, 0x17, 0x0F, 0xDD, 0x0C,
69  0x42, 0x0B, 0x14, 0x0A, 0x26, 0x09, 0xBF, 0x08, 0x70, 0x08, 0x8E, 0x08,
70  0xA5, 0x08, 0x01, 0x09, 0x5D, 0x09, 0x85, 0x09, 0xB3, 0x09, 0x83, 0x09,
71  0x43, 0x09, 0x7B, 0x08, 0x92, 0x07, 0x36, 0x06, 0x4A, 0x04, 0x12, 0x02,
72  0x3E, 0xFF, 0x22, 0xFC, 0x6E, 0xF8, 0x7C, 0xF4, 0x06, 0xF0, 0x60, 0xEB,
73  0x7B, 0xE6, 0x3A, 0xE1, 0x01, 0xDC, 0x93, 0xD6, 0x50, 0xD1, 0x07, 0xCC,
74  0x0E, 0xC7, 0x4F, 0xC2, 0xE0, 0xBD, 0xE6, 0xB9, 0x64, 0xB6, 0x73, 0xB3,
75  0x1C, 0xB1, 0x6C, 0xAF, 0x67, 0xAE, 0x1E, 0xAE, 0x7F, 0xAE, 0xA9, 0xAF,
76  0x75, 0xB1, 0x00, 0xB4, 0x21, 0xB7, 0xDA, 0xBA, 0x33, 0xBF, 0xFA, 0xC3,
77  0x3C, 0xC9, 0xC5, 0xCE, 0xAF, 0xD4, 0xA6, 0xDA, 0xE1, 0xE0, 0xFA, 0xE6,
78  0x06, 0xED, 0x18, 0xF3, 0xC9, 0xF8, 0x65, 0xFE, 0x7C, 0x03, 0x60, 0x08,
79  0xAD, 0x0C, 0x82, 0x10, 0x0F, 0x14, 0xED, 0x16, 0x7D, 0x19, 0x67, 0x1B,
80  0x02, 0x1D, 0x08, 0x1E, 0xA3, 0x1E, 0x0F, 0x1F, 0x04, 0x1F, 0xDD, 0x1E,
81  0x62, 0x1E, 0xE7, 0x1D, 0x37, 0x1D, 0x89, 0x1C, 0x02, 0x1C, 0x7F, 0x1B,
82  0x3B, 0x1B, 0x18, 0x1B, 0x46, 0x1B, 0xAD, 0x1B, 0x69, 0x1C, 0x71, 0x1D,
83  0xC5, 0x1E, 0x78, 0x20, 0x70, 0x22, 0xAC, 0x24, 0x31, 0x27, 0xD9, 0x29,
84  0xBA, 0x2C, 0xA9, 0x2F, 0xA0, 0x32, 0x96, 0x35, 0x63, 0x38, 0x19, 0x3B,
85  0x72, 0x3D, 0x9D, 0x3F, 0x5E, 0x41, 0x98, 0x42, 0x69, 0x43, 0x8F, 0x43,
86  0x38, 0x43, 0x20, 0x42, 0x7D, 0x40, 0x31, 0x3E, 0x0E, 0x3B, 0x65, 0x37,
87  0xEB, 0x32, 0xF7, 0x2D, 0x42, 0x28, 0x29, 0x22, 0x6B, 0x1B, 0x67, 0x14,
88  0x0D, 0x0D, 0x43, 0x05, 0x6F, 0xFD, 0x5F, 0xF5, 0x6E, 0xED, 0x71, 0xE5,
89  0xC3, 0xDD, 0x57, 0xD6, 0x1E, 0xCF, 0x78, 0xC8, 0x28, 0xC2, 0x93, 0xBC,
90  0x75, 0xB7, 0x23, 0xB3, 0x84, 0xAF, 0x86, 0xAC, 0x64, 0xAA, 0xEB, 0xA8,
91  0x49, 0xA8, 0x54, 0xA8, 0x24, 0xA9, 0x99, 0xAA, 0xBB, 0xAC, 0x6F, 0xAF,
92  0xB0, 0xB2, 0x67, 0xB6, 0x8A, 0xBA, 0x02, 0xBF, 0xC3, 0xC3, 0xB2, 0xC8,
93  0xBB, 0xCD, 0xE7, 0xD2, 0xFD, 0xD7, 0x1C, 0xDD, 0xFD, 0xE1, 0xD5, 0xE6,
94  0x51, 0xEB, 0x93, 0xEF, 0xA7, 0xF3, 0x4F, 0xF7, 0xCB, 0xFA, 0xCC, 0xFD,
95  0xA7, 0x00, 0x07, 0x03, 0x22, 0x05, 0x17, 0x07, 0xAD, 0x08, 0x2D, 0x0A,
96  0x5D, 0x0B, 0x8D, 0x0C, 0x7B, 0x0D, 0x7F, 0x0E, 0x56, 0x0F, 0x2E, 0x10,
97  0x39, 0x11, 0x2C, 0x12, 0x64, 0x13, 0x92, 0x14, 0x09, 0x16, 0x86, 0x17,
98  0x28, 0x19, 0x13, 0x1B, 0x07, 0x1D, 0x34, 0x1F, 0x6B, 0x21, 0xCB, 0x23,
99  0x29, 0x26, 0x92, 0x28, 0x05, 0x2B, 0x62, 0x2D, 0xB2, 0x2F, 0xD9, 0x31,
100  0xDA, 0x33, 0xA1, 0x35, 0x29, 0x37, 0x64, 0x38, 0x55, 0x39, 0xDC, 0x39,
101  0x15, 0x3A, 0xD2, 0x39, 0x3A, 0x39, 0x22, 0x38, 0xAD, 0x36, 0xD4, 0x34,
102  0x74, 0x32, 0xD2, 0x2F, 0xAC, 0x2C, 0x52, 0x29, 0x89, 0x25, 0x97, 0x21,
103  0x71, 0x1D, 0xF4, 0x18, 0x7D, 0x14, 0xC5, 0x0F, 0x2C, 0x0B, 0x6E, 0x06,
104  0xE3, 0x01, 0x74, 0xFD, 0x04, 0xF9, 0xE8, 0xF4, 0xE3, 0xF0, 0x3D, 0xED,
105  0xC0, 0xE9, 0xB3, 0xE6, 0xF5, 0xE3, 0x6A, 0xE1, 0x50, 0xDF, 0x70, 0xDD,
106  0xFC, 0xDB, 0xBB, 0xDA, 0xE3, 0xD9, 0x32, 0xD9, 0xDC, 0xD8, 0xBD, 0xD8,
107  0xB4, 0xD8, 0xEE, 0xD8, 0x30, 0xD9, 0xA0, 0xD9, 0x0B, 0xDA, 0x92, 0xDA,
108  0x11, 0xDB, 0x86, 0xDB, 0xF7, 0xDB, 0x4F, 0xDC, 0x9C, 0xDC, 0xCF, 0xDC,
109  0xE6, 0xDC, 0xE7, 0xDC, 0xD8, 0xDC, 0xA9, 0xDC, 0x79, 0xDC, 0x2B, 0xDC,
110  0xE8, 0xDB, 0x94, 0xDB, 0x42, 0xDB, 0x14, 0xDB, 0xE8, 0xDA, 0xEE, 0xDA,
111  0x02, 0xDB, 0x5F, 0xDB, 0xD4, 0xDB, 0xA6, 0xDC, 0x97, 0xDD, 0xD2, 0xDE,
112  0x78, 0xE0, 0x50, 0xE2, 0x9B, 0xE4, 0x12, 0xE7, 0x05, 0xEA, 0x20, 0xED,
113  0x8B, 0xF0, 0x61, 0xF4, 0x57, 0xF8, 0xAB, 0xFC, 0x10, 0x01, 0xC0, 0x05,
114  0x6D, 0x0A, 0x35, 0x0F, 0x1D, 0x14, 0xEC, 0x18, 0xC1, 0x1D, 0x65, 0x22,
115  0xF6, 0x26, 0x41, 0x2B, 0x5B, 0x2F, 0x21, 0x33, 0x8A, 0x36, 0xB2, 0x39,
116  0x5F, 0x3C, 0xB2, 0x3E, 0x89, 0x40, 0xF4, 0x41, 0xDF, 0x42, 0x59, 0x43,
117  0x54, 0x43, 0xE3, 0x42, 0xF2, 0x41, 0x9B, 0x40, 0xD1, 0x3E, 0xAA, 0x3C,
118  0x2B, 0x3A, 0x49, 0x37, 0x25, 0x34, 0xB6, 0x30, 0x14, 0x2D, 0x3A, 0x29,
119  0x49, 0x25, 0x3E, 0x21, 0x0E, 0x1D, 0xE5, 0x18, 0xAC, 0x14, 0x8E, 0x10,
120  0x69, 0x0C, 0x77, 0x08, 0x82, 0x04, 0xD4, 0x00, 0x48, 0xFD, 0xCB, 0xF9,
121  0x98, 0xF6, 0x75, 0xF3, 0xA6, 0xF0, 0xE2, 0xED, 0x73, 0xEB, 0x33, 0xE9,
122  0xFE, 0xE6, 0x1B, 0xE5, 0x3A, 0xE3, 0xA9, 0xE1, 0x17, 0xE0, 0xC9, 0xDE,
123  0x98, 0xDD, 0x69, 0xDC, 0x6F, 0xDB, 0x75, 0xDA, 0xA9, 0xD9, 0xDF, 0xD8,
124  0x39, 0xD8, 0xA6, 0xD7, 0x1B, 0xD7, 0xA7, 0xD6, 0x4C, 0xD6, 0xFC, 0xD5,
125  0xCC, 0xD5, 0xAF, 0xD5, 0xAC, 0xD5, 0xC9, 0xD5, 0xF8, 0xD5, 0x56, 0xD6,
126  0xC7, 0xD6, 0x6D, 0xD7, 0x27, 0xD8, 0x1B, 0xD9, 0x25, 0xDA, 0x5C, 0xDB,
127  0xCB, 0xDC, 0x58, 0xDE, 0x1E, 0xE0, 0xFF, 0xE1, 0x17, 0xE4, 0x4A, 0xE6,
128  0x93, 0xE8, 0x26, 0xEB, 0xB3, 0xED, 0x7F, 0xF0, 0x3E, 0xF3, 0x3A, 0xF6,
129  0x14, 0xF9, 0x0D, 0xFC, 0x17, 0xFF, 0x10, 0x02, 0x1A, 0x05, 0x01, 0x08,
130  0xF5, 0x0A, 0xB8, 0x0D, 0x81, 0x10, 0x12, 0x13, 0x81, 0x15, 0xEC, 0x17,
131  0x13, 0x1A, 0x31, 0x1C, 0x05, 0x1E, 0xCB, 0x1F, 0x48, 0x21, 0x9A, 0x22,
132  0xD6, 0x23, 0xCB, 0x24, 0xAB, 0x25, 0x4B, 0x26, 0xCF, 0x26, 0x21, 0x27,
133  0x4A, 0x27, 0x58, 0x27, 0x3F, 0x27, 0x03, 0x27, 0xB0, 0x26, 0x35, 0x26,
134  0xB0, 0x25, 0x07, 0x25, 0x4C, 0x24, 0x7F, 0x23, 0x98, 0x22, 0xAB, 0x21,
135  0xA0, 0x20, 0x92, 0x1F, 0x6A, 0x1E, 0x3E, 0x1D, 0x0F, 0x1C, 0xB2, 0x1A,
136  0x66, 0x19, 0xEC, 0x17, 0x81, 0x16, 0xEB, 0x14, 0x5C, 0x13, 0xC3, 0x11,
137  0xF3, 0x0F, 0x3A, 0x0E, 0x45, 0x0C, 0x66, 0x0A, 0x4C, 0x08, 0x4A, 0x06,
138  0x29, 0x04, 0xE7, 0x01, 0xA6, 0xFF, 0x43, 0xFD, 0xE9, 0xFA, 0x6C, 0xF8,
139  0xFF, 0xF5, 0x74, 0xF3, 0xFD, 0xF0, 0x87, 0xEE, 0xF9, 0xEB, 0x8A, 0xE9,
140  0x0F, 0xE7, 0xB5, 0xE4, 0x5C, 0xE2, 0x29, 0xE0, 0x0B, 0xDE, 0x03, 0xDC,
141  0x1F, 0xDA, 0x62, 0xD8, 0xC8, 0xD6, 0x5E, 0xD5, 0x23, 0xD4, 0x19, 0xD3,
142  0x42, 0xD2, 0xA2, 0xD1, 0x3A, 0xD1, 0x0E, 0xD1, 0x1A, 0xD1, 0x64, 0xD1,
143  0xDF, 0xD1, 0xAB, 0xD2, 0x9D, 0xD3, 0xE0, 0xD4, 0x48, 0xD6, 0xFA, 0xD7,
144  0xD4, 0xD9, 0xED, 0xDB, 0x2B, 0xDE, 0x8F, 0xE0, 0x39, 0xE3, 0xEC, 0xE5,
145  0xE4, 0xE8, 0xD6, 0xEB, 0x08, 0xEF, 0x2D, 0xF2, 0x65, 0xF5, 0xC9, 0xF8,
146  0x14, 0xFC, 0x82, 0xFF, 0xD1, 0x02, 0x37, 0x06, 0x73, 0x09, 0xA5, 0x0C,
147  0xD5, 0x0F, 0xDF, 0x12, 0xD8, 0x15, 0xA3, 0x18, 0x58, 0x1B, 0xD7, 0x1D,
148  0x20, 0x20, 0x5D, 0x22, 0x49, 0x24, 0x1F, 0x26, 0xA5, 0x27, 0x0D, 0x29,
149  0x26, 0x2A, 0x1B, 0x2B, 0xC4, 0x2B, 0x3B, 0x2C, 0x7D, 0x2C, 0x83, 0x2C,
150  0x56, 0x2C, 0xEC, 0x2B, 0x57, 0x2B, 0x85, 0x2A, 0x8F, 0x29, 0x60, 0x28,
151  0x12, 0x27, 0x8F, 0x25, 0xF7, 0x23, 0x2E, 0x22, 0x57, 0x20, 0x65, 0x1E,
152  0x50, 0x1C, 0x35, 0x1A, 0xFF, 0x17, 0xCA, 0x15, 0x7B, 0x13, 0x3E, 0x11,
153  0xFA, 0x0E, 0xA6, 0x0C, 0x68, 0x0A, 0x1B, 0x08, 0xEE, 0x05, 0xAF, 0x03,
154  0x98, 0x01, 0x73, 0xFF, 0x76, 0xFD, 0x8C, 0xFB, 0x90, 0xF9, 0xC6, 0xF7,
155  0xEF, 0xF5, 0x41, 0xF4, 0x90, 0xF2, 0x00, 0xF1, 0x89, 0xEF, 0x04, 0xEE,
156  0xA8, 0xEC, 0x44, 0xEB, 0x06, 0xEA, 0xBF, 0xE8, 0xA3, 0xE7, 0x87, 0xE6,
157  0x78, 0xE5, 0x7B, 0xE4, 0x87, 0xE3, 0xAF, 0xE2, 0xD9, 0xE1, 0x21, 0xE1,
158  0x80, 0xE0, 0xDE, 0xDF, 0x6A, 0xDF, 0xF4, 0xDE, 0xAC, 0xDE, 0x6E, 0xDE,
159  0x54, 0xDE, 0x57, 0xDE, 0x6F, 0xDE, 0xB0, 0xDE, 0x0C, 0xDF, 0x8E, 0xDF,
160  0x34, 0xE0, 0xF7, 0xE0, 0xEA, 0xE1, 0xF2, 0xE2, 0x1C, 0xE4, 0x7E, 0xE5,
161  0xEB, 0xE6, 0x94, 0xE8, 0x42, 0xEA, 0x25, 0xEC, 0x14, 0xEE, 0x0D, 0xF0,
162  0x49, 0xF2, 0x69, 0xF4, 0xC9, 0xF6, 0x09, 0xF9, 0x7B, 0xFB, 0xCF, 0xFD,
163  0x44, 0x00, 0x9A, 0x02, 0xEE, 0x04, 0x4C, 0x07, 0x91, 0x09, 0xCB, 0x0B,
164  0xF1, 0x0D, 0x01, 0x10, 0xF6, 0x11, 0xC2, 0x13, 0x90, 0x15, 0x25, 0x17,
165  0xB0, 0x18, 0x09, 0x1A, 0x50, 0x1B, 0x67, 0x1C, 0x5B, 0x1D, 0x3E, 0x1E,
166  0xF3, 0x1E, 0x92, 0x1F, 0x0A, 0x20, 0x6B, 0x20, 0xAB, 0x20, 0xD0, 0x20,
167  0xDE, 0x20, 0xD4, 0x20, 0xAF, 0x20, 0x7B, 0x20, 0x26, 0x20, 0xD0, 0x1F,
168  0x4E, 0x1F, 0xD6, 0x1E, 0x39, 0x1E, 0x8F, 0x1D, 0xD4, 0x1C, 0xFF, 0x1B,
169  0x24, 0x1B, 0x25, 0x1A, 0x23, 0x19, 0x0F, 0x18, 0xCD, 0x16, 0x8E, 0x15,
170  0x1D, 0x14, 0xAC, 0x12, 0x09, 0x11, 0x65, 0x0F, 0xA4, 0x0D, 0xB2, 0x0B,
171  0xC0, 0x09, 0x96, 0x07, 0x72, 0x05, 0x1A, 0x03, 0xC5, 0x00, 0x5D, 0xFE,
172  0xCC, 0xFB, 0x45, 0xF9, 0x9B, 0xF6, 0x03, 0xF4, 0x51, 0xF1, 0xB6, 0xEE,
173  0x13, 0xEC, 0x85, 0xE9, 0x15, 0xE7, 0x9E, 0xE4, 0x5B, 0xE2, 0x29, 0xE0,
174  0x26, 0xDE, 0x4E, 0xDC, 0xA2, 0xDA, 0x39, 0xD9, 0xF5, 0xD7, 0xF8, 0xD6,
175  0x39, 0xD6, 0xB6, 0xD5, 0x7E, 0xD5, 0x82, 0xD5, 0xCF, 0xD5, 0x60, 0xD6,
176  0x30, 0xD7, 0x47, 0xD8, 0x94, 0xD9, 0x27, 0xDB, 0xE7, 0xDC, 0xD7, 0xDE,
177  0x08, 0xE1, 0x4C, 0xE3, 0xCA, 0xE5, 0x52, 0xE8, 0x03, 0xEB, 0xB4, 0xED,
178  0x83, 0xF0, 0x40, 0xF3, 0x03, 0xF6, 0xC9, 0xF8, 0x75, 0xFB, 0x23, 0xFE,
179  0xA2, 0x00, 0x21, 0x03, 0x68, 0x05, 0x8B, 0x07, 0xAB, 0x09, 0x83, 0x0B,
180  0x54, 0x0D, 0xDF, 0x0E, 0x63, 0x10, 0x9F, 0x11, 0xBF, 0x12, 0xCA, 0x13,
181  0xA2, 0x14, 0x6B, 0x15, 0x09, 0x16, 0x95, 0x16, 0x07, 0x17, 0x55, 0x17,
182  0xB1, 0x17, 0xE4, 0x17, 0x21, 0x18, 0x45, 0x18, 0x6E, 0x18, 0x8A, 0x18,
183  0xAB, 0x18, 0xC1, 0x18, 0xDA, 0x18, 0xF4, 0x18, 0x0C, 0x19, 0x21, 0x19,
184  0x36, 0x19, 0x42, 0x19, 0x4E, 0x19, 0x51, 0x19, 0x41, 0x19, 0x33, 0x19,
185  0xFF, 0x18, 0xD0, 0x18, 0x76, 0x18, 0x11, 0x18, 0x99, 0x17, 0xE9, 0x16,
186  0x33, 0x16, 0x46, 0x15, 0x48, 0x14, 0x14, 0x13, 0xD0, 0x11, 0x52, 0x10,
187  0xC8, 0x0E, 0x1A, 0x0D, 0x37, 0x0B, 0x4D, 0x09, 0x2E, 0x07, 0x13, 0x05,
188  0xC9, 0x02, 0x88, 0x00, 0x3E, 0xFE, 0xD0, 0xFB, 0x7F, 0xF9, 0x16, 0xF7,
189  0xCF, 0xF4, 0x7F, 0xF2, 0x58, 0xF0, 0x45, 0xEE, 0x41, 0xEC, 0x69, 0xEA,
190  0xAA, 0xE8, 0x1E, 0xE7, 0xB5, 0xE5, 0x7B, 0xE4, 0x7D, 0xE3, 0x93, 0xE2,
191  0xF4, 0xE1, 0x6E, 0xE1, 0x29, 0xE1, 0x05, 0xE1, 0x16, 0xE1, 0x50, 0xE1,
192  0xAB, 0xE1, 0x37, 0xE2, 0xD5, 0xE2, 0x9C, 0xE3, 0x7A, 0xE4, 0x69, 0xE5,
193  0x75, 0xE6, 0x85, 0xE7, 0x9E, 0xE8, 0xD1, 0xE9, 0xF0, 0xEA, 0x2F, 0xEC,
194  0x4D, 0xED, 0x8A, 0xEE, 0xA5, 0xEF, 0xC8, 0xF0, 0xEA, 0xF1, 0x01, 0xF3,
195  0x1A, 0xF4, 0x26, 0xF5, 0x39, 0xF6, 0x3F, 0xF7, 0x3C, 0xF8, 0x57, 0xF9,
196  0x5B, 0xFA, 0x7C, 0xFB, 0x90, 0xFC, 0xC2, 0xFD, 0xEC, 0xFE, 0x38, 0x00,
197  0x7E, 0x01, 0xD3, 0x02, 0x50, 0x04, 0xC7, 0x05, 0x66, 0x07, 0xFF, 0x08,
198  0xBB, 0x0A, 0x70, 0x0C, 0x35, 0x0E, 0x0E, 0x10, 0xDC, 0x11, 0xBF, 0x13,
199  0x89, 0x15, 0x5F, 0x17, 0x18, 0x19, 0xC5, 0x1A, 0x60, 0x1C, 0xDE, 0x1D,
200  0x3A, 0x1F, 0x70, 0x20, 0x80, 0x21, 0x5B, 0x22, 0x0A, 0x23, 0x7E, 0x23,
201  0xBC, 0x23, 0xBB, 0x23, 0x82, 0x23, 0x02, 0x23, 0x4E, 0x22, 0x51, 0x21,
202  0x22, 0x20, 0xB9, 0x1E, 0x09, 0x1D, 0x39, 0x1B, 0x1D, 0x19, 0xF4, 0x16,
203  0x86, 0x14, 0x0E, 0x12, 0x7E, 0x0F, 0xBD, 0x0C, 0x0C, 0x0A, 0x35, 0x07,
204  0x78, 0x04, 0xA8, 0x01, 0xF8, 0xFE, 0x5B, 0xFC, 0xBF, 0xF9, 0x54, 0xF7,
205  0xF9, 0xF4, 0xD1, 0xF2, 0xC6, 0xF0, 0xF2, 0xEE, 0x54, 0xED, 0xCC, 0xEB,
206  0x8A, 0xEA, 0x65, 0xE9, 0x80, 0xE8, 0xBE, 0xE7, 0x31, 0xE7, 0xC9, 0xE6,
207  0x8E, 0xE6, 0x7E, 0xE6, 0x80, 0xE6, 0xA9, 0xE6, 0xE9, 0xE6, 0x40, 0xE7,
208  0xA7, 0xE7, 0x21, 0xE8, 0xA3, 0xE8, 0x2C, 0xE9, 0xBA, 0xE9, 0x48, 0xEA,
209  0xD8, 0xEA, 0x63, 0xEB, 0xEB, 0xEB, 0x6B, 0xEC, 0xEB, 0xEC, 0x64, 0xED,
210  0xDA, 0xED, 0x4A, 0xEE, 0xBD, 0xEE, 0x28, 0xEF, 0xA1, 0xEF, 0x11, 0xF0,
211  0x86, 0xF0, 0x17, 0xF1, 0x9E, 0xF1, 0x4E, 0xF2, 0xF0, 0xF2, 0xC7, 0xF3,
212  0x96, 0xF4, 0x80, 0xF5, 0x98, 0xF6, 0xAD, 0xF7, 0xFD, 0xF8, 0x47, 0xFA,
213  0xC6, 0xFB, 0x44, 0xFD, 0xDD, 0xFE, 0x99, 0x00, 0x5A, 0x02, 0x35, 0x04,
214  0x10, 0x06, 0xFE, 0x07, 0xE2, 0x09, 0xC2, 0x0B, 0xB0, 0x0D, 0x7F, 0x0F,
215  0x54, 0x11, 0x00, 0x13, 0xA8, 0x14, 0x22, 0x16, 0x88, 0x17, 0xC2, 0x18,
216  0xD1, 0x19, 0xC5, 0x1A, 0x7F, 0x1B, 0x14, 0x1C, 0x77, 0x1C, 0xAA, 0x1C,
217  0xB0, 0x1C, 0x81, 0x1C, 0x2F, 0x1C, 0xA6, 0x1B, 0x00, 0x1B, 0x26, 0x1A,
218  0x34, 0x19, 0x1A, 0x18, 0xF1, 0x16, 0x9C, 0x15, 0x46, 0x14, 0xCE, 0x12,
219  0x5B, 0x11, 0xD0, 0x0F, 0x52, 0x0E, 0xCF, 0x0C, 0x46, 0x0B, 0xD2, 0x09,
220  0x50, 0x08, 0xF7, 0x06, 0x8B, 0x05, 0x4B, 0x04, 0x03, 0x03, 0xDD, 0x01,
221  0xCA, 0x00, 0xAF, 0xFF, 0xBC, 0xFE, 0xBD, 0xFD, 0xE1, 0xFC, 0xFC, 0xFB,
222  0x30, 0xFB, 0x6B, 0xFA, 0x9A, 0xF9, 0xD8, 0xF8, 0x0C, 0xF8, 0x47, 0xF7,
223  0x75, 0xF6, 0xA8, 0xF5, 0xD6, 0xF4, 0xF1, 0xF3, 0x0F, 0xF3, 0x1B, 0xF2,
224  0x2A, 0xF1, 0x27, 0xF0, 0x2D, 0xEF, 0x28, 0xEE, 0x23, 0xED, 0x1D, 0xEC,
225  0x1E, 0xEB, 0x24, 0xEA, 0x38, 0xE9, 0x58, 0xE8, 0x8E, 0xE7, 0xD5, 0xE6,
226  0x39, 0xE6, 0xBA, 0xE5, 0x5B, 0xE5, 0x23, 0xE5, 0x0D, 0xE5, 0x29, 0xE5,
227  0x69, 0xE5, 0xD2, 0xE5, 0x77, 0xE6, 0x41, 0xE7, 0x42, 0xE8, 0x6C, 0xE9,
228  0xC7, 0xEA, 0x48, 0xEC, 0xED, 0xED, 0xCA, 0xEF, 0xB4, 0xF1, 0xD7, 0xF3,
229  0xF5, 0xF5, 0x48, 0xF8, 0x8E, 0xFA, 0xE6, 0xFC, 0x51, 0xFF, 0xAB, 0x01,
230  0x12, 0x04, 0x5D, 0x06, 0xA5, 0x08, 0xCD, 0x0A, 0xE4, 0x0C, 0xD4, 0x0E,
231  0x9F, 0x10, 0x52, 0x12, 0xD3, 0x13, 0x32, 0x15, 0x5B, 0x16, 0x63, 0x17,
232  0x2E, 0x18, 0xD2, 0x18, 0x4C, 0x19, 0x96, 0x19, 0xBB, 0x19, 0xB0, 0x19,
233  0x8C, 0x19, 0x34, 0x19, 0xCD, 0x18, 0x39, 0x18, 0x9E, 0x17, 0xDD, 0x16,
234  0x18, 0x16, 0x39, 0x15, 0x57, 0x14, 0x67, 0x13, 0x78, 0x12, 0x83, 0x11,
235  0x8F, 0x10, 0x9C, 0x0F, 0xAC, 0x0E, 0xC5, 0x0D, 0xDA, 0x0C, 0x01, 0x0C,
236  0x30, 0x0B, 0x55, 0x0A, 0x91, 0x09, 0xC0, 0x08, 0x02, 0x08, 0x36, 0x07,
237  0x7B, 0x06, 0xBD, 0x05, 0xED, 0x04, 0x2D, 0x04, 0x4B, 0x03, 0x81, 0x02,
238  0x8F, 0x01, 0xAD, 0x00, 0xBE, 0xFF, 0xAF, 0xFE, 0xAB, 0xFD, 0x85, 0xFC,
239  0x6A, 0xFB, 0x2E, 0xFA, 0x01, 0xF9, 0xB4, 0xF7, 0x78, 0xF6, 0x33, 0xF5,
240  0xE1, 0xF3, 0xA0, 0xF2, 0x54, 0xF1, 0x1E, 0xF0, 0xE8, 0xEE, 0xC8, 0xED,
241  0xBC, 0xEC, 0xBA, 0xEB, 0xDA, 0xEA, 0x0A, 0xEA, 0x61, 0xE9, 0xD0, 0xE8,
242  0x64, 0xE8, 0x1E, 0xE8, 0xF4, 0xE7, 0xF8, 0xE7, 0x1B, 0xE8, 0x67, 0xE8,
243  0xD7, 0xE8, 0x6A, 0xE9, 0x1F, 0xEA, 0xF8, 0xEA, 0xED, 0xEB, 0x05, 0xED,
244  0x2B, 0xEE, 0x7A, 0xEF, 0xC6, 0xF0, 0x38, 0xF2, 0xA7, 0xF3, 0x1B, 0xF5,
245  0xAC, 0xF6, 0x24, 0xF8, 0xB8, 0xF9, 0x2D, 0xFB, 0xB5, 0xFC, 0x1C, 0xFE,
246  0x7C, 0xFF, 0xDD, 0x00, 0x1D, 0x02, 0x61, 0x03, 0x7E, 0x04, 0x9C, 0x05,
247  0x98, 0x06, 0x7E, 0x07, 0x68, 0x08, 0x2B, 0x09, 0xEF, 0x09, 0x96, 0x0A,
248  0x3B, 0x0B, 0xC8, 0x0B, 0x49, 0x0C, 0xCD, 0x0C, 0x3D, 0x0D, 0xB1, 0x0D,
249  0x18, 0x0E, 0x7E, 0x0E, 0xE0, 0x0E, 0x42, 0x0F, 0x9C, 0x0F, 0xFA, 0x0F,
250  0x52, 0x10, 0xB1, 0x10, 0x05, 0x11, 0x5B, 0x11, 0xAB, 0x11, 0xF6, 0x11,
251  0x3D, 0x12, 0x77, 0x12, 0xA9, 0x12, 0xCE, 0x12, 0xE3, 0x12, 0xEC, 0x12,
252  0xD9, 0x12, 0xC5, 0x12, 0x7F, 0x12, 0x39, 0x12, 0xC6, 0x11, 0x45, 0x11,
253  0x9F, 0x10, 0xE4, 0x0F, 0x0E, 0x0F, 0x10, 0x0E, 0xFE, 0x0C, 0xC6, 0x0B,
254  0x81, 0x0A, 0x12, 0x09, 0x9F, 0x07, 0x03, 0x06, 0x67, 0x04, 0xBC, 0x02,
255  0xF3, 0x00, 0x36, 0xFF, 0x5D, 0xFD, 0x9A, 0xFB, 0xC5, 0xF9, 0x08, 0xF8,
256  0x53, 0xF6, 0x9F, 0xF4, 0x0A, 0xF3, 0x7E, 0xF1, 0x12, 0xF0, 0xBD, 0xEE,
257  0x86, 0xED, 0x7A, 0xEC, 0x7B, 0xEB, 0xAF, 0xEA, 0xFD, 0xE9, 0x77, 0xE9,
258  0x0F, 0xE9, 0xD4, 0xE8, 0xB9, 0xE8, 0xC2, 0xE8, 0xEC, 0xE8, 0x3A, 0xE9,
259  0xA0, 0xE9, 0x30, 0xEA, 0xC9, 0xEA, 0x8D, 0xEB, 0x54, 0xEC, 0x3A, 0xED,
260  0x2C, 0xEE, 0x2D, 0xEF, 0x39, 0xF0, 0x4B, 0xF1, 0x69, 0xF2, 0x83, 0xF3,
261  0x9E, 0xF4, 0xC4, 0xF5, 0xD9, 0xF6, 0x00, 0xF8, 0x0A, 0xF9, 0x29, 0xFA,
262  0x2B, 0xFB, 0x2B, 0xFC, 0x33, 0xFD, 0x23, 0xFE, 0x20, 0xFF, 0x03, 0x00,
263  0xF4, 0x00, 0xCE, 0x01, 0xB2, 0x02, 0x8A, 0x03, 0x52, 0x04, 0x34, 0x05,
264  0xF9, 0x05, 0xD4, 0x06, 0x99, 0x07, 0x6E, 0x08, 0x2F, 0x09, 0xF9, 0x09,
265  0xBE, 0x0A, 0x87, 0x0B, 0x45, 0x0C, 0x05, 0x0D, 0xBE, 0x0D, 0x6B, 0x0E,
266  0x17, 0x0F, 0xB7, 0x0F, 0x4F, 0x10, 0xDB, 0x10, 0x57, 0x11, 0xC6, 0x11,
267  0x24, 0x12, 0x6A, 0x12, 0xA9, 0x12, 0xC5, 0x12, 0xD5, 0x12, 0xC9, 0x12,
268  0xA3, 0x12, 0x6E, 0x12, 0x13, 0x12, 0xAD, 0x11, 0x27, 0x11, 0x8A, 0x10,
269  0xD5, 0x0F, 0x09, 0x0F, 0x2B, 0x0E, 0x34, 0x0D, 0x2E, 0x0C, 0x22, 0x0B,
270  0xF1, 0x09, 0xCA, 0x08, 0x87, 0x07, 0x46, 0x06, 0xFA, 0x04, 0xB1, 0x03,
271  0x6C, 0x02, 0x1A, 0x01, 0xD6, 0xFF, 0x8E, 0xFE, 0x5B, 0xFD, 0x20, 0xFC,
272  0x04, 0xFB, 0xEE, 0xF9, 0xDE, 0xF8, 0xE6, 0xF7, 0xF2, 0xF6, 0x1E, 0xF6,
273  0x48, 0xF5, 0x97, 0xF4, 0xE3, 0xF3, 0x52, 0xF3, 0xCC, 0xF2, 0x50, 0xF2,
274  0xE9, 0xF1, 0x8E, 0xF1, 0x40, 0xF1, 0x02, 0xF1, 0xD0, 0xF0, 0xAC, 0xF0,
275  0x8D, 0xF0, 0x7D, 0xF0, 0x71, 0xF0, 0x77, 0xF0, 0x78, 0xF0, 0x92, 0xF0,
276  0x9E, 0xF0, 0xCA, 0xF0, 0xE7, 0xF0, 0x1D, 0xF1, 0x50, 0xF1, 0x90, 0xF1,
277  0xD6, 0xF1, 0x22, 0xF2, 0x80, 0xF2, 0xDE, 0xF2, 0x52, 0xF3, 0xC6, 0xF3,
278  0x51, 0xF4, 0xDF, 0xF4, 0x7F, 0xF5, 0x2B, 0xF6, 0xDA, 0xF6, 0xA9, 0xF7,
279  0x78, 0xF8, 0x5E, 0xF9, 0x4B, 0xFA, 0x4A, 0xFB, 0x4E, 0xFC, 0x59, 0xFD,
280  0x7D, 0xFE, 0x9F, 0xFF, 0xCF, 0x00, 0x00, 0x02, 0x3C, 0x03, 0x6F, 0x04,
281  0xA7, 0x05, 0xE1, 0x06, 0x16, 0x08, 0x45, 0x09, 0x6C, 0x0A, 0x89, 0x0B,
282  0x9A, 0x0C, 0x95, 0x0D, 0x8D, 0x0E, 0x68, 0x0F, 0x39, 0x10, 0xEB, 0x10,
283  0x90, 0x11, 0x16, 0x12, 0x85, 0x12, 0xDD, 0x12, 0x14, 0x13, 0x3A, 0x13,
284  0x3F, 0x13, 0x2D, 0x13, 0xFF, 0x12, 0xBA, 0x12, 0x59, 0x12, 0xE9, 0x11,
285  0x56, 0x11, 0xBA, 0x10, 0xFF, 0x0F, 0x3D, 0x0F, 0x60, 0x0E, 0x7C, 0x0D,
286  0x8E, 0x0C, 0x87, 0x0B, 0x88, 0x0A, 0x6D, 0x09, 0x61, 0x08, 0x3A, 0x07,
287  0x29, 0x06, 0xFC, 0x04, 0xEB, 0x03, 0xCC, 0x02, 0xB3, 0x01, 0x9C, 0x00,
288  0x88, 0xFF, 0x81, 0xFE, 0x75, 0xFD, 0x80, 0xFC, 0x8F, 0xFB, 0x9A, 0xFA,
289  0xC0, 0xF9, 0xDA, 0xF8, 0x15, 0xF8, 0x42, 0xF7, 0x8E, 0xF6, 0xDE, 0xF5,
290  0x33, 0xF5, 0x96, 0xF4, 0x02, 0xF4, 0x78, 0xF3, 0xFE, 0xF2, 0x87, 0xF2,
291  0x2A, 0xF2, 0xC4, 0xF1, 0x7C, 0xF1, 0x30, 0xF1, 0xFF, 0xF0, 0xCD, 0xF0,
292  0xB2, 0xF0, 0x9D, 0xF0, 0x99, 0xF0, 0xA2, 0xF0, 0xB7, 0xF0, 0xDB, 0xF0,
293  0x0E, 0xF1, 0x4B, 0xF1, 0x9F, 0xF1, 0xF4, 0xF1, 0x62, 0xF2, 0xD8, 0xF2,
294  0x60, 0xF3, 0xF6, 0xF3, 0x92, 0xF4, 0x47, 0xF5, 0xF9, 0xF5, 0xBC, 0xF6,
295  0x92, 0xF7, 0x62, 0xF8, 0x4F, 0xF9, 0x2D, 0xFA, 0x28, 0xFB, 0x18, 0xFC,
296  0x0B, 0xFD, 0x11, 0xFE, 0x07, 0xFF, 0x11, 0x00, 0x06, 0x01, 0x0E, 0x02,
297  0x00, 0x03, 0xFB, 0x03, 0xE9, 0x04, 0xC8, 0x05, 0xB4, 0x06, 0x87, 0x07,
298  0x58, 0x08, 0x1E, 0x09, 0xD6, 0x09, 0x84, 0x0A, 0x1E, 0x0B, 0xB8, 0x0B,
299  0x38, 0x0C, 0xB7, 0x0C, 0x1B, 0x0D, 0x7E, 0x0D, 0xC8, 0x0D, 0x04, 0x0E,
300  0x3A, 0x0E, 0x59, 0x0E, 0x71, 0x0E, 0x7A, 0x0E, 0x70, 0x0E, 0x61, 0x0E,
301  0x3E, 0x0E, 0x15, 0x0E, 0xD9, 0x0D, 0x97, 0x0D, 0x48, 0x0D, 0xE9, 0x0C,
302  0x8B, 0x0C, 0x13, 0x0C, 0xA2, 0x0B, 0x21, 0x0B, 0x90, 0x0A, 0x05, 0x0A,
303  0x5D, 0x09, 0xC7, 0x08, 0x0F, 0x08, 0x69, 0x07, 0xAE, 0x06, 0xF0, 0x05,
304  0x2E, 0x05, 0x61, 0x04, 0x99, 0x03, 0xBE, 0x02, 0xF3, 0x01, 0x1C, 0x01,
305  0x40, 0x00, 0x64, 0xFF, 0x87, 0xFE, 0xA9, 0xFD, 0xCE, 0xFC, 0xF1, 0xFB,
306  0x21, 0xFB, 0x45, 0xFA, 0x76, 0xF9, 0xA5, 0xF8, 0xE1, 0xF7, 0x1B, 0xF7,
307  0x65, 0xF6, 0xB1, 0xF5, 0x0A, 0xF5, 0x70, 0xF4, 0xD9, 0xF3, 0x52, 0xF3,
308  0xD8, 0xF2, 0x67, 0xF2, 0x0A, 0xF2, 0xB4, 0xF1, 0x74, 0xF1, 0x40, 0xF1,
309  0x1A, 0xF1, 0x0A, 0xF1, 0x01, 0xF1, 0x13, 0xF1, 0x2B, 0xF1, 0x5B, 0xF1,
310  0x9A, 0xF1, 0xE5, 0xF1, 0x48, 0xF2, 0xB2, 0xF2, 0x32, 0xF3, 0xBD, 0xF3,
311  0x58, 0xF4, 0xFC, 0xF4, 0xAF, 0xF5, 0x6E, 0xF6, 0x38, 0xF7, 0x0F, 0xF8,
312  0xE9, 0xF8, 0xD3, 0xF9, 0xBA, 0xFA, 0xA7, 0xFB, 0xA4, 0xFC, 0x96, 0xFD,
313  0x9C, 0xFE, 0x8F, 0xFF, 0x98, 0x00, 0x89, 0x01, 0x81, 0x02, 0x7B, 0x03,
314  0x68, 0x04, 0x59, 0x05, 0x38, 0x06, 0x19, 0x07, 0xEB, 0x07, 0xAD, 0x08,
315  0x74, 0x09, 0x21, 0x0A, 0xCE, 0x0A, 0x64, 0x0B, 0xF5, 0x0B, 0x6F, 0x0C,
316  0xE3, 0x0C, 0x3F, 0x0D, 0x93, 0x0D, 0xD1, 0x0D, 0x07, 0x0E, 0x28, 0x0E,
317  0x39, 0x0E, 0x40, 0x0E, 0x2E, 0x0E, 0x18, 0x0E, 0xE7, 0x0D, 0xB5, 0x0D,
318  0x67, 0x0D, 0x17, 0x0D, 0xB2, 0x0C, 0x47, 0x0C, 0xCD, 0x0B, 0x49, 0x0B,
319  0xBA, 0x0A, 0x22, 0x0A, 0x81, 0x09, 0xD8, 0x08, 0x27, 0x08, 0x7C, 0x07,
320  0xB7, 0x06, 0xFF, 0x05, 0x36, 0x05, 0x75, 0x04, 0xA8, 0x03, 0xE4, 0x02,
321  0x12, 0x02, 0x51, 0x01, 0x8B, 0x00, 0xBE, 0xFF, 0xFF, 0xFE, 0x34, 0xFE,
322  0x7C, 0xFD, 0xBA, 0xFC, 0x07, 0xFC, 0x5A, 0xFB, 0xA6, 0xFA, 0x03, 0xFA,
323  0x5C, 0xF9, 0xC4, 0xF8, 0x2D, 0xF8, 0xA0, 0xF7, 0x21, 0xF7, 0x9A, 0xF6,
324  0x2D, 0xF6, 0xB7, 0xF5, 0x59, 0xF5, 0xF9, 0xF4, 0xA9, 0xF4, 0x64, 0xF4,
325  0x22, 0xF4, 0xF3, 0xF3, 0xC6, 0xF3, 0xAC, 0xF3, 0x95, 0xF3, 0x92, 0xF3,
326  0x92, 0xF3, 0xA8, 0xF3, 0xBD, 0xF3, 0xEA, 0xF3, 0x1B, 0xF4, 0x5B, 0xF4,
327  0xA9, 0xF4, 0xFF, 0xF4, 0x61, 0xF5, 0xCE, 0xF5, 0x47, 0xF6, 0xCC, 0xF6,
328  0x59, 0xF7, 0xF1, 0xF7, 0x93, 0xF8, 0x3B, 0xF9, 0xE4, 0xF9, 0xA3, 0xFA,
329  0x5A, 0xFB, 0x24, 0xFC, 0xE5, 0xFC, 0xB5, 0xFD, 0x7E, 0xFE, 0x47, 0xFF,
330  0x1C, 0x00, 0xE4, 0x00, 0xB8, 0x01, 0x7C, 0x02, 0x4B, 0x03, 0x04, 0x04,
331  0xCD, 0x04, 0x77, 0x05, 0x2E, 0x06, 0xD3, 0x06, 0x73, 0x07, 0x10, 0x08,
332  0x96, 0x08, 0x25, 0x09, 0x95, 0x09, 0x08, 0x0A, 0x68, 0x0A, 0xC7, 0x0A,
333  0x10, 0x0B, 0x57, 0x0B, 0x8B, 0x0B, 0xB9, 0x0B, 0xD6, 0x0B, 0xED, 0x0B,
334  0xF6, 0x0B, 0xF7, 0x0B, 0xEA, 0x0B, 0xD4, 0x0B, 0xB3, 0x0B, 0x87, 0x0B,
335  0x56, 0x0B, 0x17, 0x0B, 0xCF, 0x0A, 0x80, 0x0A, 0x24, 0x0A, 0xC4, 0x09,
336  0x59, 0x09, 0xE5, 0x08, 0x72, 0x08, 0xE9, 0x07, 0x64, 0x07, 0xD1, 0x06,
337  0x3A, 0x06, 0x9B, 0x05, 0xF6, 0x04, 0x54, 0x04, 0x9C, 0x03, 0xEF, 0x02,
338  0x2E, 0x02, 0x75, 0x01, 0xB0, 0x00, 0xF0, 0xFF, 0x2F, 0xFF, 0x60, 0xFE,
339  0xA0, 0xFD, 0xD0, 0xFC, 0x10, 0xFC, 0x45, 0xFB, 0x86, 0xFA, 0xC7, 0xF9,
340  0x0F, 0xF9, 0x60, 0xF8, 0xB2, 0xF7, 0x0E, 0xF7, 0x73, 0xF6, 0xE5, 0xF5,
341  0x5A, 0xF5, 0xE8, 0xF4, 0x78, 0xF4, 0x1A, 0xF4, 0xCA, 0xF3, 0x87, 0xF3,
342  0x54, 0xF3, 0x36, 0xF3, 0x1D, 0xF3, 0x21, 0xF3, 0x2B, 0xF3, 0x4C, 0xF3,
343  0x7C, 0xF3, 0xB5, 0xF3, 0x0B, 0xF4, 0x5F, 0xF4, 0xCE, 0xF4, 0x46, 0xF5,
344  0xC8, 0xF5, 0x5C, 0xF6, 0xF4, 0xF6, 0x9B, 0xF7, 0x47, 0xF8, 0xFD, 0xF8,
345  0xB4, 0xF9, 0x70, 0xFA, 0x35, 0xFB, 0xFA, 0xFB, 0xBF, 0xFC, 0x88, 0xFD,
346  0x4C, 0xFE, 0x10, 0xFF, 0xCB, 0xFF, 0x8B, 0x00, 0x44, 0x01, 0xF6, 0x01,
347  0xA5, 0x02, 0x4D, 0x03, 0xEA, 0x03, 0x7F, 0x04, 0x16, 0x05, 0x99, 0x05,
348  0x25, 0x06, 0x93, 0x06, 0x11, 0x07, 0x70, 0x07, 0xD6, 0x07, 0x30, 0x08,
349  0x81, 0x08, 0xD0, 0x08, 0x0F, 0x09, 0x52, 0x09, 0x80, 0x09, 0xB6, 0x09,
350  0xD6, 0x09, 0xFA, 0x09, 0x13, 0x0A, 0x23, 0x0A, 0x32, 0x0A, 0x33, 0x0A,
351  0x32, 0x0A, 0x27, 0x0A, 0x16, 0x0A, 0xFB, 0x09, 0xDE, 0x09, 0xAD, 0x09,
352  0x82, 0x09, 0x41, 0x09, 0x03, 0x09, 0xB8, 0x08, 0x60, 0x08, 0x05, 0x08,
353  0x9A, 0x07, 0x2F, 0x07, 0xB1, 0x06, 0x34, 0x06, 0xAE, 0x05, 0x19, 0x05,
354  0x83, 0x04, 0xE0, 0x03, 0x3D, 0x03, 0x8E, 0x02, 0xE1, 0x01, 0x2B, 0x01,
355  0x73, 0x00, 0xC2, 0xFF, 0x02, 0xFF, 0x49, 0xFE, 0x90, 0xFD, 0xDA, 0xFC,
356  0x22, 0xFC, 0x7A, 0xFB, 0xCD, 0xFA, 0x2D, 0xFA, 0x8D, 0xF9, 0xFC, 0xF8,
357  0x6E, 0xF8, 0xF0, 0xF7, 0x76, 0xF7, 0x14, 0xF7, 0xAB, 0xF6, 0x5F, 0xF6,
358  0x12, 0xF6, 0xDA, 0xF5, 0xAB, 0xF5, 0x88, 0xF5, 0x76, 0xF5, 0x69, 0xF5,
359  0x70, 0xF5, 0x7C, 0xF5, 0x95, 0xF5, 0xBD, 0xF5, 0xE5, 0xF5, 0x23, 0xF6,
360  0x60, 0xF6, 0xA6, 0xF6, 0xFD, 0xF6, 0x4C, 0xF7, 0xB3, 0xF7, 0x0D, 0xF8,
361  0x82, 0xF8, 0xE1, 0xF8, 0x5D, 0xF9, 0xCA, 0xF9, 0x48, 0xFA, 0xC3, 0xFA,
362  0x40, 0xFB, 0xC2, 0xFB, 0x45, 0xFC, 0xC3, 0xFC, 0x4F, 0xFD, 0xD3, 0xFD,
363  0x60, 0xFE, 0xE8, 0xFE, 0x78, 0xFF, 0x00, 0x00, 0x94, 0x00, 0x1F, 0x01,
364  0xA8, 0x01, 0x41, 0x02, 0xC8, 0x02, 0x60, 0x03, 0xEA, 0x03, 0x79, 0x04,
365  0x09, 0x05, 0x8A, 0x05, 0x1A, 0x06, 0x99, 0x06, 0x1F, 0x07, 0x97, 0x07,
366  0x11, 0x08, 0x7F, 0x08, 0xE6, 0x08, 0x4C, 0x09, 0xA0, 0x09, 0xF3, 0x09,
367  0x36, 0x0A, 0x72, 0x0A, 0x9F, 0x0A, 0xC1, 0x0A, 0xD6, 0x0A, 0xDE, 0x0A,
368  0xDA, 0x0A, 0xC3, 0x0A, 0xA3, 0x0A, 0x73, 0x0A, 0x33, 0x0A, 0xEA, 0x09,
369  0x8F, 0x09, 0x2A, 0x09, 0xB7, 0x08, 0x35, 0x08, 0xB0, 0x07, 0x13, 0x07,
370  0x80, 0x06, 0xD7, 0x05, 0x2A, 0x05, 0x7A, 0x04, 0xBD, 0x03, 0x08, 0x03,
371  0x45, 0x02, 0x8D, 0x01, 0xD0, 0x00, 0x12, 0x00, 0x5A, 0xFF, 0xA1, 0xFE,
372  0xF4, 0xFD, 0x43, 0xFD, 0xA2, 0xFC, 0x0A, 0xFC, 0x6C, 0xFB, 0xE7, 0xFA,
373  0x5C, 0xFA, 0xE7, 0xF9, 0x72, 0xF9, 0x0D, 0xF9, 0xAF, 0xF8, 0x5C, 0xF8,
374  0x19, 0xF8, 0xD5, 0xF7, 0xA0, 0xF7, 0x75, 0xF7, 0x4F, 0xF7, 0x35, 0xF7,
375  0x22, 0xF7, 0x19, 0xF7, 0x11, 0xF7, 0x1A, 0xF7, 0x1D, 0xF7, 0x32, 0xF7,
376  0x46, 0xF7, 0x61, 0xF7, 0x81, 0xF7, 0xAA, 0xF7, 0xD0, 0xF7, 0x07, 0xF8,
377  0x35, 0xF8, 0x74, 0xF8, 0xAF, 0xF8, 0xF1, 0xF8, 0x3D, 0xF9, 0x85, 0xF9,
378  0xDE, 0xF9, 0x2D, 0xFA, 0x93, 0xFA, 0xEE, 0xFA, 0x59, 0xFB, 0xC6, 0xFB,
379  0x2D, 0xFC, 0xB1, 0xFC, 0x21, 0xFD, 0xAB, 0xFD, 0x2A, 0xFE, 0xB6, 0xFE,
380  0x43, 0xFF, 0xCB, 0xFF, 0x66, 0x00, 0xF4, 0x00, 0x90, 0x01, 0x21, 0x02,
381  0xBD, 0x02, 0x4F, 0x03, 0xDD, 0x03, 0x76, 0x04, 0xF9, 0x04, 0x8C, 0x05,
382  0x06, 0x06, 0x88, 0x06, 0xFA, 0x06, 0x69, 0x07, 0xCB, 0x07, 0x24, 0x08,
383  0x77, 0x08, 0xBA, 0x08, 0xF7, 0x08, 0x24, 0x09, 0x49, 0x09, 0x61, 0x09,
384  0x6B, 0x09, 0x6B, 0x09, 0x5E, 0x09, 0x48, 0x09, 0x26, 0x09, 0xF4, 0x08,
385  0xC3, 0x08, 0x7A, 0x08, 0x39, 0x08, 0xDB, 0x07, 0x8A, 0x07, 0x20, 0x07,
386  0xBC, 0x06, 0x4E, 0x06, 0xDF, 0x05, 0x66, 0x05, 0xEF, 0x04, 0x6F, 0x04,
387  0xF5, 0x03, 0x73, 0x03, 0xF7, 0x02, 0x72, 0x02, 0xF7, 0x01, 0x7A, 0x01,
388  0xFB, 0x00, 0x80, 0x00, 0x03, 0x00, 0x8E, 0xFF, 0x13, 0xFF, 0xA2, 0xFE,
389  0x33, 0xFE, 0xBF, 0xFD, 0x56, 0xFD, 0xE6, 0xFC, 0x81, 0xFC, 0x16, 0xFC,
390  0xB8, 0xFB, 0x54, 0xFB, 0xF9, 0xFA, 0x9A, 0xFA, 0x42, 0xFA, 0xEE, 0xF9,
391  0x97, 0xF9, 0x4D, 0xF9, 0x04, 0xF9, 0xBA, 0xF8, 0x7D, 0xF8, 0x3C, 0xF8,
392  0x08, 0xF8, 0xD9, 0xF7, 0xAD, 0xF7, 0x8C, 0xF7, 0x72, 0xF7, 0x5C, 0xF7,
393  0x57, 0xF7, 0x51, 0xF7, 0x5F, 0xF7, 0x6C, 0xF7, 0x8E, 0xF7, 0xAF, 0xF7,
394  0xE3, 0xF7, 0x1E, 0xF8, 0x65, 0xF8, 0xB4, 0xF8, 0x11, 0xF9, 0x75, 0xF9,
395  0xE2, 0xF9, 0x58, 0xFA, 0xD8, 0xFA, 0x60, 0xFB, 0xED, 0xFB, 0x83, 0xFC,
396  0x1C, 0xFD, 0xBB, 0xFD, 0x56, 0xFE, 0xFF, 0xFE, 0xA0, 0xFF, 0x49, 0x00,
397  0xEB, 0x00, 0x8F, 0x01, 0x2C, 0x02, 0xCC, 0x02, 0x5E, 0x03, 0xEE, 0x03,
398  0x79, 0x04, 0xFB, 0x04, 0x77, 0x05, 0xEA, 0x05, 0x51, 0x06, 0xB1, 0x06,
399  0x05, 0x07, 0x51, 0x07, 0x94, 0x07, 0xC7, 0x07, 0xF9, 0x07, 0x19, 0x08,
400  0x33, 0x08, 0x41, 0x08, 0x47, 0x08, 0x45, 0x08, 0x39, 0x08, 0x26, 0x08,
401  0x09, 0x08, 0xEA, 0x07, 0xBE, 0x07, 0x91, 0x07, 0x5A, 0x07, 0x22, 0x07,
402  0xE1, 0x06, 0x9F, 0x06, 0x57, 0x06, 0x0B, 0x06, 0xBC, 0x05, 0x71, 0x05,
403  0x13, 0x05, 0xC7, 0x04, 0x61, 0x04, 0x11, 0x04, 0xA6, 0x03, 0x51, 0x03,
404  0xEA, 0x02, 0x88, 0x02, 0x20, 0x02, 0xB6, 0x01, 0x50, 0x01, 0xDE, 0x00,
405  0x78, 0x00, 0x07, 0x00, 0x97, 0xFF, 0x2A, 0xFF, 0xB1, 0xFE, 0x49, 0xFE,
406  0xCA, 0xFD, 0x67, 0xFD, 0xE8, 0xFC, 0x84, 0xFC, 0x13, 0xFC, 0xA8, 0xFB,
407  0x40, 0xFB, 0xDA, 0xFA, 0x79, 0xFA, 0x1E, 0xFA, 0xC6, 0xF9, 0x77, 0xF9,
408  0x2B, 0xF9, 0xE8, 0xF8, 0xAC, 0xF8, 0x78, 0xF8, 0x4D, 0xF8, 0x29, 0xF8,
409  0x11, 0xF8, 0x01, 0xF8, 0xFB, 0xF7, 0xFF, 0xF7, 0x0B, 0xF8, 0x23, 0xF8,
410  0x43, 0xF8, 0x6E, 0xF8, 0xA0, 0xF8, 0xDF, 0xF8, 0x20, 0xF9, 0x71, 0xF9,
411  0xC3, 0xF9, 0x1E, 0xFA, 0x83, 0xFA, 0xE5, 0xFA, 0x53, 0xFB, 0xC3, 0xFB,
412  0x35, 0xFC, 0xB0, 0xFC, 0x24, 0xFD, 0xA3, 0xFD, 0x1B, 0xFE, 0x93, 0xFE,
413  0x11, 0xFF, 0x88, 0xFF, 0x02, 0x00, 0x77, 0x00, 0xEC, 0x00, 0x5A, 0x01,
414  0xC4, 0x01, 0x32, 0x02, 0x94, 0x02, 0xF9, 0x02, 0x54, 0x03, 0xB1, 0x03,
415  0x03, 0x04, 0x52, 0x04, 0x9E, 0x04, 0xE9, 0x04, 0x28, 0x05, 0x6B, 0x05,
416  0xA2, 0x05, 0xDA, 0x05, 0x0A, 0x06, 0x39, 0x06, 0x5A, 0x06, 0x88, 0x06,
417  0x9C, 0x06, 0xC1, 0x06, 0xCD, 0x06, 0xE5, 0x06, 0xEB, 0x06, 0xF6, 0x06,
418  0xF2, 0x06, 0xF1, 0x06, 0xE3, 0x06, 0xD3, 0x06, 0xBF, 0x06, 0x9C, 0x06,
419  0x81, 0x06, 0x50, 0x06, 0x20, 0x06, 0xEB, 0x05, 0xA9, 0x05, 0x65, 0x05,
420  0x1A, 0x05, 0xC7, 0x04, 0x6F, 0x04, 0x0F, 0x04, 0xAA, 0x03, 0x3E, 0x03,
421  0xCE, 0x02, 0x5C, 0x02, 0xDE, 0x01, 0x69, 0x01, 0xE6, 0x00, 0x68, 0x00,
422  0xE3, 0xFF, 0x5F, 0xFF, 0xDD, 0xFE, 0x57, 0xFE, 0xD8, 0xFD, 0x5A, 0xFD,
423  0xDC, 0xFC, 0x65, 0xFC, 0xEF, 0xFB, 0x83, 0xFB, 0x14, 0xFB, 0xB8, 0xFA,
424  0x5A, 0xFA, 0x07, 0xFA, 0xBB, 0xF9, 0x74, 0xF9, 0x3D, 0xF9, 0x06, 0xF9,
425  0xE2, 0xF8, 0xBD, 0xF8, 0xAA, 0xF8, 0x98, 0xF8, 0x95, 0xF8, 0x98, 0xF8,
426  0xA6, 0xF8, 0xB6, 0xF8, 0xD9, 0xF8, 0xF7, 0xF8, 0x25, 0xF9, 0x58, 0xF9,
427  0x8E, 0xF9, 0xD0, 0xF9, 0x11, 0xFA, 0x5C, 0xFA, 0xA7, 0xFA, 0xFA, 0xFA,
428  0x4D, 0xFB, 0xA7, 0xFB, 0x00, 0xFC, 0x5F, 0xFC, 0xBB, 0xFC, 0x22, 0xFD,
429  0x77, 0xFD, 0xE7, 0xFD, 0x3E, 0xFE, 0xAC, 0xFE, 0x08, 0xFF, 0x72, 0xFF,
430  0xD1, 0xFF, 0x35, 0x00, 0x99, 0x00, 0xF2, 0x00, 0x5A, 0x01, 0xB1, 0x01,
431  0x14, 0x02, 0x6B, 0x02, 0xCA, 0x02, 0x1B, 0x03, 0x72, 0x03, 0xC2, 0x03,
432  0x14, 0x04, 0x60, 0x04, 0xA7, 0x04, 0xF1, 0x04, 0x2D, 0x05, 0x6C, 0x05,
433  0xA4, 0x05, 0xD7, 0x05, 0x08, 0x06, 0x2D, 0x06, 0x55, 0x06, 0x6D, 0x06,
434  0x88, 0x06, 0x95, 0x06, 0xA0, 0x06, 0xA3, 0x06, 0x9C, 0x06, 0x94, 0x06,
435  0x7E, 0x06, 0x65, 0x06, 0x44, 0x06, 0x1B, 0x06, 0xEE, 0x05, 0xB5, 0x05,
436  0x7A, 0x05, 0x34, 0x05, 0xEF, 0x04, 0x9A, 0x04, 0x52, 0x04, 0xEC, 0x03,
437  0x9A, 0x03, 0x31, 0x03, 0xD0, 0x02, 0x68, 0x02, 0xFF, 0x01, 0x98, 0x01,
438  0x27, 0x01, 0xBF, 0x00, 0x4C, 0x00, 0xE8, 0xFF, 0x74, 0xFF, 0x12, 0xFF,
439  0xA8, 0xFE, 0x44, 0xFE, 0xE2, 0xFD, 0x82, 0xFD, 0x27, 0xFD, 0xD0, 0xFC,
440  0x7D, 0xFC, 0x2C, 0xFC, 0xE7, 0xFB, 0x9F, 0xFB, 0x62, 0xFB, 0x26, 0xFB,
441  0xEE, 0xFA, 0xC3, 0xFA, 0x92, 0xFA, 0x71, 0xFA, 0x51, 0xFA, 0x34, 0xFA,
442  0x1F, 0xFA, 0x10, 0xFA, 0x02, 0xFA, 0x01, 0xFA, 0xFB, 0xF9, 0x01, 0xFA,
443  0x0B, 0xFA, 0x18, 0xFA, 0x2B, 0xFA, 0x43, 0xFA, 0x61, 0xFA, 0x7E, 0xFA,
444  0xA9, 0xFA, 0xCC, 0xFA, 0x03, 0xFB, 0x30, 0xFB, 0x6D, 0xFB, 0xA6, 0xFB,
445  0xE7, 0xFB, 0x2C, 0xFC, 0x74, 0xFC, 0xBD, 0xFC, 0x10, 0xFD, 0x5F, 0xFD,
446  0xBB, 0xFD, 0x0E, 0xFE, 0x71, 0xFE, 0xC8, 0xFE, 0x2A, 0xFF, 0x8D, 0xFF,
447  0xEF, 0xFF, 0x55, 0x00, 0xB8, 0x00, 0x1E, 0x01, 0x83, 0x01, 0xE2, 0x01,
448  0x49, 0x02, 0xA5, 0x02, 0x07, 0x03, 0x5F, 0x03, 0xBB, 0x03, 0x0B, 0x04,
449  0x5D, 0x04, 0xA6, 0x04, 0xEF, 0x04, 0x2D, 0x05, 0x6A, 0x05, 0x9F, 0x05,
450  0xCD, 0x05, 0xF5, 0x05, 0x16, 0x06, 0x2D, 0x06, 0x44, 0x06, 0x4A, 0x06,
451  0x53, 0x06, 0x4D, 0x06, 0x43, 0x06, 0x32, 0x06, 0x18, 0x06, 0xFA, 0x05,
452  0xD4, 0x05, 0xA7, 0x05, 0x74, 0x05, 0x3D, 0x05, 0xFE, 0x04, 0xC0, 0x04,
453  0x73, 0x04, 0x2E, 0x04, 0xD7, 0x03, 0x8C, 0x03, 0x30, 0x03, 0xDA, 0x02,
454  0x84, 0x02, 0x21, 0x02, 0xC9, 0x01, 0x67, 0x01, 0x08, 0x01, 0xAB, 0x00,
455  0x47, 0x00, 0xEC, 0xFF, 0x8D, 0xFF, 0x33, 0xFF, 0xD9, 0xFE, 0x7C, 0xFE,
456  0x29, 0xFE, 0xD1, 0xFD, 0x80, 0xFD, 0x33, 0xFD, 0xE6, 0xFC, 0x9F, 0xFC,
457  0x5A, 0xFC, 0x14, 0xFC, 0xDF, 0xFB, 0x9B, 0xFB, 0x71, 0xFB, 0x39, 0xFB,
458  0x13, 0xFB, 0xE5, 0xFA, 0xC9, 0xFA, 0xA6, 0xFA, 0x91, 0xFA, 0x7D, 0xFA,
459  0x6D, 0xFA, 0x66, 0xFA, 0x61, 0xFA, 0x65, 0xFA, 0x6A, 0xFA, 0x79, 0xFA,
460  0x87, 0xFA, 0xA3, 0xFA, 0xBD, 0xFA, 0xDE, 0xFA, 0x07, 0xFB, 0x30, 0xFB,
461  0x64, 0xFB, 0x98, 0xFB, 0xD2, 0xFB, 0x10, 0xFC, 0x51, 0xFC, 0x97, 0xFC,
462  0xE2, 0xFC, 0x2D, 0xFD, 0x7F, 0xFD, 0xCF, 0xFD, 0x25, 0xFE, 0x77, 0xFE,
463  0xD3, 0xFE, 0x28, 0xFF, 0x86, 0xFF, 0xDC, 0xFF, 0x39, 0x00, 0x91, 0x00,
464  0xEB, 0x00, 0x41, 0x01, 0x95, 0x01, 0xEA, 0x01, 0x3C, 0x02, 0x8B, 0x02,
465  0xD6, 0x02, 0x21, 0x03, 0x64, 0x03, 0xA5, 0x03, 0xE4, 0x03, 0x1B, 0x04,
466  0x54, 0x04, 0x7E, 0x04, 0xB0, 0x04, 0xD2, 0x04, 0xF4, 0x04, 0x13, 0x05,
467  0x26, 0x05, 0x3C, 0x05, 0x46, 0x05, 0x50, 0x05, 0x50, 0x05, 0x4F, 0x05,
468  0x46, 0x05, 0x39, 0x05, 0x29, 0x05, 0x0F, 0x05, 0xF6, 0x04, 0xD2, 0x04,
469  0xB2, 0x04, 0x85, 0x04, 0x5C, 0x04, 0x28, 0x04, 0xF3, 0x03, 0xBC, 0x03,
470  0x7D, 0x03, 0x41, 0x03, 0xFB, 0x02, 0xBC, 0x02, 0x70, 0x02, 0x29, 0x02,
471  0xDB, 0x01, 0x8F, 0x01, 0x3D, 0x01, 0xF0, 0x00, 0xA1, 0x00, 0x4B, 0x00,
472  0xFE, 0xFF, 0xA5, 0xFF, 0x59, 0xFF, 0x04, 0xFF, 0xB6, 0xFE, 0x66, 0xFE,
473  0x1A, 0xFE, 0xCB, 0xFD, 0x84, 0xFD, 0x39, 0xFD, 0xF6, 0xFC, 0xB1, 0xFC,
474  0x76, 0xFC, 0x37, 0xFC, 0x03, 0xFC, 0xCD, 0xFB, 0x9D, 0xFB, 0x74, 0xFB,
475  0x49, 0xFB, 0x2D, 0xFB, 0x09, 0xFB, 0xF8, 0xFA, 0xDF, 0xFA, 0xD7, 0xFA,
476  0xC9, 0xFA, 0xCD, 0xFA, 0xC7, 0xFA, 0xD7, 0xFA, 0xDD, 0xFA, 0xF7, 0xFA,
477  0x07, 0xFB, 0x2C, 0xFB, 0x46, 0xFB, 0x75, 0xFB, 0x9B, 0xFB, 0xCE, 0xFB,
478  0x00, 0xFC, 0x3D, 0xFC, 0x76, 0xFC, 0xBA, 0xFC, 0xFB, 0xFC, 0x45, 0xFD,
479  0x8E, 0xFD, 0xDA, 0xFD, 0x27, 0xFE, 0x78, 0xFE, 0xCA, 0xFE, 0x1D, 0xFF,
480  0x71, 0xFF, 0xC6, 0xFF, 0x19, 0x00, 0x6B, 0x00, 0xC0, 0x00, 0x13, 0x01,
481  0x62, 0x01, 0xB3, 0x01, 0x01, 0x02, 0x49, 0x02, 0x95, 0x02, 0xD4, 0x02,
482  0x1D, 0x03, 0x58, 0x03, 0x95, 0x03, 0xCB, 0x03, 0xFE, 0x03, 0x2E, 0x04,
483  0x57, 0x04, 0x7B, 0x04, 0x9D, 0x04, 0xB6, 0x04, 0xD1, 0x04, 0xDF, 0x04,
484  0xEB, 0x04, 0xF5, 0x04, 0xF5, 0x04, 0xF1, 0x04, 0xED, 0x04, 0xD8, 0x04,
485  0xCF, 0x04, 0xB0, 0x04, 0x9B, 0x04, 0x76, 0x04, 0x55, 0x04, 0x2A, 0x04,
486  0xFE, 0x03, 0xCD, 0x03, 0x9A, 0x03, 0x60, 0x03, 0x2B, 0x03, 0xE8, 0x02,
487  0xAD, 0x02, 0x68, 0x02, 0x24, 0x02, 0xDE, 0x01, 0x96, 0x01, 0x4E, 0x01,
488  0x04, 0x01, 0xBE, 0x00, 0x6D, 0x00, 0x2A, 0x00, 0xD8, 0xFF, 0x94, 0xFF,
489  0x46, 0xFF, 0x01, 0xFF, 0xBB, 0xFE, 0x73, 0xFE, 0x33, 0xFE, 0xEC, 0xFD,
490  0xB1, 0xFD, 0x71, 0xFD, 0x35, 0xFD, 0x03, 0xFD, 0xC8, 0xFC, 0x9C, 0xFC,
491  0x6A, 0xFC, 0x3D, 0xFC, 0x1C, 0xFC, 0xF0, 0xFB, 0xDB, 0xFB, 0xB6, 0xFB,
492  0xA5, 0xFB, 0x8E, 0xFB, 0x81, 0xFB, 0x74, 0xFB, 0x71, 0xFB, 0x6C, 0xFB,
493  0x73, 0xFB, 0x75, 0xFB, 0x85, 0xFB, 0x92, 0xFB, 0xA9, 0xFB, 0xC0, 0xFB,
494  0xDF, 0xFB, 0xFE, 0xFB, 0x25, 0xFC, 0x4B, 0xFC, 0x7D, 0xFC, 0xA8, 0xFC,
495  0xE1, 0xFC, 0x15, 0xFD, 0x51, 0xFD, 0x8B, 0xFD, 0xCD, 0xFD, 0x0B, 0xFE,
496  0x54, 0xFE, 0x93, 0xFE, 0xE0, 0xFE, 0x24, 0xFF, 0x6C, 0xFF, 0xB5, 0xFF,
497  0xFF, 0xFF, 0x47, 0x00, 0x92, 0x00, 0xD9, 0x00, 0x1F, 0x01, 0x66, 0x01,
498  0xA9, 0x01, 0xE8, 0x01, 0x2C, 0x02, 0x66, 0x02, 0xA2, 0x02, 0xDA, 0x02,
499  0x0D, 0x03, 0x41, 0x03, 0x6B, 0x03, 0x98, 0x03, 0xBB, 0x03, 0xE3, 0x03,
500  0xFB, 0x03, 0x1B, 0x04, 0x2E, 0x04, 0x3F, 0x04, 0x50, 0x04, 0x57, 0x04,
501  0x5D, 0x04, 0x5E, 0x04, 0x5A, 0x04, 0x52, 0x04, 0x4A, 0x04, 0x35, 0x04,
502  0x27, 0x04, 0x0B, 0x04, 0xF1, 0x03, 0xD2, 0x03, 0xB0, 0x03, 0x87, 0x03,
503  0x63, 0x03, 0x31, 0x03, 0x07, 0x03, 0xCF, 0x02, 0xA0, 0x02, 0x62, 0x02,
504  0x2C, 0x02, 0xEF, 0x01, 0xB1, 0x01, 0x74, 0x01, 0x2F, 0x01, 0xEF, 0x00,
505  0xA9, 0x00, 0x67, 0x00, 0x1F, 0x00, 0xDF, 0xFF, 0x96, 0xFF, 0x51, 0xFF,
506  0x0D, 0xFF, 0xC9, 0xFE, 0x84, 0xFE, 0x46, 0xFE, 0x01, 0xFE, 0xC6, 0xFD,
507  0x8B, 0xFD, 0x4F, 0xFD, 0x1A, 0xFD, 0xE5, 0xFC, 0xB3, 0xFC, 0x87, 0xFC,
508  0x5C, 0xFC, 0x38, 0xFC, 0x15, 0xFC, 0xF8, 0xFB, 0xDE, 0xFB, 0xC9, 0xFB,
509  0xB9, 0xFB, 0xAE, 0xFB, 0xA8, 0xFB, 0xA6, 0xFB, 0xA7, 0xFB, 0xB2, 0xFB,
510  0xBB, 0xFB, 0xD2, 0xFB, 0xE1, 0xFB, 0x01, 0xFC, 0x1A, 0xFC, 0x43, 0xFC,
511  0x66, 0xFC, 0x92, 0xFC, 0xC2, 0xFC, 0xEF, 0xFC, 0x29, 0xFD, 0x5D, 0xFD,
512  0x95, 0xFD, 0xD6, 0xFD, 0x0D, 0xFE, 0x53, 0xFE, 0x8E, 0xFE, 0xD5, 0xFE,
513  0x14, 0xFF, 0x55, 0xFF, 0x9C, 0xFF, 0xD7, 0xFF, 0x23, 0x00, 0x5B, 0x00,
514  0xA4, 0x00, 0xDC, 0x00, 0x1C, 0x01, 0x59, 0x01, 0x90, 0x01, 0xCC, 0x01,
515  0x00, 0x02, 0x34, 0x02, 0x66, 0x02, 0x92, 0x02, 0xBF, 0x02, 0xE8, 0x02,
516  0x0F, 0x03, 0x31, 0x03, 0x51, 0x03, 0x70, 0x03, 0x85, 0x03, 0xA3, 0x03,
517  0xAE, 0x03, 0xC3, 0x03, 0xCC, 0x03, 0xD6, 0x03, 0xDD, 0x03, 0xDE, 0x03,
518  0xDB, 0x03, 0xD9, 0x03, 0xCD, 0x03, 0xC5, 0x03, 0xB2, 0x03, 0xA1, 0x03,
519  0x89, 0x03, 0x73, 0x03, 0x53, 0x03, 0x34, 0x03, 0x10, 0x03, 0xE8, 0x02,
520  0xBE, 0x02, 0x92, 0x02, 0x5E, 0x02, 0x31, 0x02, 0xF6, 0x01, 0xC1, 0x01,
521  0x87, 0x01, 0x4B, 0x01, 0x0E, 0x01, 0xD0, 0x00, 0x92, 0x00, 0x51, 0x00,
522  0x16, 0x00, 0xCF, 0xFF, 0x99, 0xFF, 0x57, 0xFF, 0x1D, 0xFF, 0xE2, 0xFE,
523  0xA7, 0xFE, 0x71, 0xFE, 0x38, 0xFE, 0x06, 0xFE, 0xD1, 0xFD, 0xA0, 0xFD,
524  0x75, 0xFD, 0x44, 0xFD, 0x25, 0xFD, 0xF7, 0xFC, 0xD8, 0xFC, 0xBB, 0xFC,
525  0x99, 0xFC, 0x88, 0xFC, 0x6E, 0xFC, 0x60, 0xFC, 0x50, 0xFC, 0x4A, 0xFC,
526  0x3E, 0xFC, 0x44, 0xFC, 0x3E, 0xFC, 0x48, 0xFC, 0x50, 0xFC, 0x5A, 0xFC,
527  0x70, 0xFC, 0x7D, 0xFC, 0x9C, 0xFC, 0xB0, 0xFC, 0xD3, 0xFC, 0xF1, 0xFC,
528  0x19, 0xFD, 0x3A, 0xFD, 0x6A, 0xFD, 0x91, 0xFD, 0xC5, 0xFD, 0xF1, 0xFD,
529  0x28, 0xFE, 0x5A, 0xFE, 0x8F, 0xFE, 0xC9, 0xFE, 0xFF, 0xFE, 0x3B, 0xFF,
530  0x74, 0xFF, 0xAE, 0xFF, 0xEB, 0xFF, 0x23, 0x00, 0x61, 0x00, 0x95, 0x00,
531  0xD4, 0x00, 0x08, 0x01, 0x42, 0x01, 0x76, 0x01, 0xAC, 0x01, 0xDE, 0x01,
532  0x0D, 0x02, 0x3B, 0x02, 0x69, 0x02, 0x90, 0x02, 0xBA, 0x02, 0xDB, 0x02,
533  0xFD, 0x02, 0x1C, 0x03, 0x33, 0x03, 0x51, 0x03, 0x5D, 0x03, 0x76, 0x03,
534  0x7C, 0x03, 0x8B, 0x03, 0x8D, 0x03, 0x93, 0x03, 0x8F, 0x03, 0x8D, 0x03,
535  0x81, 0x03, 0x79, 0x03, 0x68, 0x03, 0x55, 0x03, 0x40, 0x03, 0x26, 0x03,
536  0x0B, 0x03, 0xEB, 0x02, 0xC8, 0x02, 0xA5, 0x02, 0x7B, 0x02, 0x53, 0x02,
537  0x27, 0x02, 0xF9, 0x01, 0xC8, 0x01, 0x97, 0x01, 0x63, 0x01, 0x2D, 0x01,
538  0xFB, 0x00, 0xC2, 0x00, 0x8D, 0x00, 0x52, 0x00, 0x1E, 0x00, 0xE2, 0xFF,
539  0xAF, 0xFF, 0x72, 0xFF, 0x43, 0xFF, 0x06, 0xFF, 0xD8, 0xFE, 0xA0, 0xFE,
540  0x71, 0xFE, 0x3E, 0xFE, 0x11, 0xFE, 0xE5, 0xFD, 0xBA, 0xFD, 0x95, 0xFD,
541  0x6D, 0xFD, 0x4D, 0xFD, 0x2B, 0xFD, 0x10, 0xFD, 0xF3, 0xFC, 0xE0, 0xFC,
542  0xCC, 0xFC, 0xBA, 0xFC, 0xAF, 0xFC, 0xA4, 0xFC, 0x9F, 0xFC, 0x9B, 0xFC,
543  0x9C, 0xFC, 0xA1, 0xFC, 0xA8, 0xFC, 0xB2, 0xFC, 0xC2, 0xFC, 0xD0, 0xFC,
544  0xE9, 0xFC, 0xFD, 0xFC, 0x18, 0xFD, 0x37, 0xFD, 0x55, 0xFD, 0x7A, 0xFD,
545  0x9E, 0xFD, 0xC5, 0xFD, 0xF2, 0xFD, 0x19, 0xFE, 0x4D, 0xFE, 0x73, 0xFE,
546  0xAC, 0xFE, 0xD8, 0xFE, 0x0E, 0xFF, 0x42, 0xFF, 0x75, 0xFF, 0xAC, 0xFF,
547  0xDD, 0xFF, 0x15, 0x00, 0x49, 0x00, 0x7E, 0x00, 0xB1, 0x00, 0xE7, 0x00,
548  0x15, 0x01, 0x49, 0x01, 0x75, 0x01, 0xA7, 0x01, 0xD0, 0x01, 0xFE, 0x01,
549  0x22, 0x02, 0x4C, 0x02, 0x6B, 0x02, 0x90, 0x02, 0xAD, 0x02, 0xC8, 0x02,
550  0xE3, 0x02, 0xF7, 0x02, 0x0B, 0x03, 0x1A, 0x03, 0x27, 0x03, 0x31, 0x03,
551  0x36, 0x03, 0x3A, 0x03, 0x39, 0x03, 0x36, 0x03, 0x2F, 0x03, 0x25, 0x03,
552  0x18, 0x03, 0x09, 0x03, 0xF3, 0x02, 0xE1, 0x02, 0xC4, 0x02, 0xAB, 0x02,
553  0x8B, 0x02, 0x6C, 0x02, 0x48, 0x02, 0x23, 0x02, 0xFB, 0x01, 0xD2, 0x01,
554  0xA6, 0x01, 0x7A, 0x01, 0x4B, 0x01, 0x1C, 0x01, 0xEE, 0x00, 0xBA, 0x00,
555  0x8B, 0x00, 0x55, 0x00, 0x26, 0x00, 0xF1, 0xFF, 0xC0, 0xFF, 0x8F, 0xFF,
556  0x5B, 0xFF, 0x2E, 0xFF, 0xFB, 0xFE, 0xCE, 0xFE, 0x9F, 0xFE, 0x74, 0xFE,
557  0x4B, 0xFE, 0x21, 0xFE, 0xFC, 0xFD, 0xD7, 0xFD, 0xB4, 0xFD, 0x96, 0xFD,
558  0x75, 0xFD, 0x5F, 0xFD, 0x45, 0xFD, 0x2F, 0xFD, 0x20, 0xFD, 0x0C, 0xFD,
559  0x03, 0xFD, 0xF7, 0xFC, 0xF5, 0xFC, 0xEB, 0xFC, 0xF3, 0xFC, 0xEF, 0xFC,
560  0xFA, 0xFC, 0x01, 0xFD, 0x0C, 0xFD, 0x1E, 0xFD, 0x2D, 0xFD, 0x43, 0xFD,
561  0x5A, 0xFD, 0x74, 0xFD, 0x92, 0xFD, 0xAE, 0xFD, 0xD3, 0xFD, 0xF2, 0xFD,
562  0x1B, 0xFE, 0x3F, 0xFE, 0x6B, 0xFE, 0x92, 0xFE, 0xC0, 0xFE, 0xED, 0xFE,
563  0x19, 0xFF, 0x49, 0xFF, 0x77, 0xFF, 0xA8, 0xFF, 0xD7, 0xFF, 0x08, 0x00,
564  0x37, 0x00, 0x68, 0x00, 0x96, 0x00, 0xC7, 0x00, 0xEE, 0x00, 0x23, 0x01,
565  0x45, 0x01, 0x77, 0x01, 0x9B, 0x01, 0xC3, 0x01, 0xE9, 0x01, 0x08, 0x02,
566  0x2C, 0x02, 0x49, 0x02, 0x65, 0x02, 0x80, 0x02, 0x96, 0x02, 0xAB, 0x02,
567  0xBC, 0x02, 0xCB, 0x02, 0xD6, 0x02, 0xE3, 0x02, 0xE4, 0x02, 0xED, 0x02,
568  0xE9, 0x02, 0xE7, 0x02, 0xE6, 0x02, 0xD7, 0x02, 0xD2, 0x02, 0xBF, 0x02,
569  0xB1, 0x02, 0x9E, 0x02, 0x85, 0x02, 0x70, 0x02, 0x53, 0x02, 0x37, 0x02,
570  0x19, 0x02, 0xF3, 0x01, 0xD5, 0x01, 0xAC, 0x01, 0x87, 0x01, 0x61, 0x01,
571  0x34, 0x01, 0x0E, 0x01, 0xDD, 0x00, 0xB6, 0x00, 0x83, 0x00, 0x5B, 0x00,
572  0x2D, 0x00, 0xFC, 0xFF, 0xD4, 0xFF, 0xA0, 0xFF, 0x78, 0xFF, 0x49, 0xFF,
573  0x1E, 0xFF, 0xF8, 0xFE, 0xC7, 0xFE, 0xA7, 0xFE, 0x7A, 0xFE, 0x59, 0xFE,
574  0x34, 0xFE, 0x12, 0xFE, 0xF4, 0xFD, 0xD6, 0xFD, 0xBC, 0xFD, 0xA3, 0xFD,
575  0x8D, 0xFD, 0x78, 0xFD, 0x69, 0xFD, 0x58, 0xFD, 0x4F, 0xFD, 0x43, 0xFD,
576  0x40, 0xFD, 0x39, 0xFD, 0x3C, 0xFD, 0x3A, 0xFD, 0x43, 0xFD, 0x47, 0xFD,
577  0x54, 0xFD, 0x5E, 0xFD, 0x72, 0xFD, 0x7E, 0xFD, 0x9A, 0xFD, 0xAA, 0xFD,
578  0xC8, 0xFD, 0xE3, 0xFD, 0xFE, 0xFD, 0x20, 0xFE, 0x3F, 0xFE, 0x64, 0xFE,
579  0x88, 0xFE, 0xAD, 0xFE, 0xD7, 0xFE, 0xFC, 0xFE, 0x27, 0xFF, 0x51, 0xFF,
580  0x7A, 0xFF, 0xA7, 0xFF, 0xD1, 0xFF, 0xFE, 0xFF, 0x29, 0x00, 0x53, 0x00,
581  0x7C, 0x00, 0xAA, 0x00, 0xD0, 0x00, 0xFB, 0x00, 0x23, 0x01, 0x45, 0x01,
582  0x6F, 0x01, 0x8C, 0x01, 0xB4, 0x01, 0xCF, 0x01, 0xF1, 0x01, 0x0B, 0x02,
583  0x25, 0x02, 0x3E, 0x02, 0x52, 0x02, 0x64, 0x02, 0x78, 0x02, 0x82, 0x02,
584  0x91, 0x02, 0x97, 0x02, 0xA0, 0x02, 0xA0, 0x02, 0xA7, 0x02, 0x9E, 0x02,
585  0x9F, 0x02, 0x96, 0x02, 0x8C, 0x02, 0x82, 0x02, 0x71, 0x02, 0x62, 0x02,
586  0x4D, 0x02, 0x3A, 0x02, 0x1F, 0x02, 0x07, 0x02, 0xEB, 0x01, 0xCB, 0x01,
587  0xB2, 0x01, 0x88, 0x01, 0x6D, 0x01, 0x45, 0x01, 0x20, 0x01, 0xFC, 0x00,
588  0xD1, 0x00, 0xAC, 0x00, 0x82, 0x00, 0x5B, 0x00, 0x31, 0x00, 0x08, 0x00,
589  0xDD, 0xFF, 0xB6, 0xFF, 0x8B, 0xFF, 0x65, 0xFF, 0x40, 0xFF, 0x13, 0xFF,
590  0xF4, 0xFE, 0xCA, 0xFE, 0xAC, 0xFE, 0x85, 0xFE, 0x69, 0xFE, 0x48, 0xFE,
591  0x2E, 0xFE, 0x11, 0xFE, 0xF8, 0xFD, 0xE1, 0xFD, 0xCF, 0xFD, 0xB8, 0xFD,
592  0xAF, 0xFD, 0x99, 0xFD, 0x95, 0xFD, 0x88, 0xFD, 0x83, 0xFD, 0x7F, 0xFD,
593  0x7E, 0xFD, 0x80, 0xFD, 0x82, 0xFD, 0x8A, 0xFD, 0x92, 0xFD, 0x9C, 0xFD,
594  0xAE, 0xFD, 0xB7, 0xFD, 0xD0, 0xFD, 0xE0, 0xFD, 0xF7, 0xFD, 0x11, 0xFE,
595  0x29, 0xFE, 0x47, 0xFE, 0x65, 0xFE, 0x82, 0xFE, 0xA6, 0xFE, 0xC4, 0xFE,
596  0xEB, 0xFE, 0x0D, 0xFF, 0x33, 0xFF, 0x58, 0xFF, 0x80, 0xFF, 0xA6, 0xFF,
597  0xCC, 0xFF, 0xF5, 0xFF, 0x1B, 0x00, 0x41, 0x00, 0x6C, 0x00, 0x8D, 0x00,
598  0xB7, 0x00, 0xDA, 0x00, 0xFD, 0x00, 0x20, 0x01, 0x43, 0x01, 0x61, 0x01,
599  0x82, 0x01, 0x9D, 0x01, 0xBB, 0x01, 0xD4, 0x01, 0xEA, 0x01, 0x02, 0x02,
600  0x13, 0x02, 0x2B, 0x02, 0x31, 0x02, 0x49, 0x02, 0x49, 0x02, 0x5C, 0x02,
601  0x59, 0x02, 0x65, 0x02, 0x60, 0x02, 0x63, 0x02, 0x5D, 0x02, 0x59, 0x02,
602  0x51, 0x02, 0x45, 0x02, 0x3B, 0x02, 0x28, 0x02, 0x1C, 0x02, 0x05, 0x02,
603  0xF2, 0x01, 0xD9, 0x01, 0xC2, 0x01, 0xA8, 0x01, 0x89, 0x01, 0x71, 0x01,
604  0x4B, 0x01, 0x30, 0x01, 0x0B, 0x01, 0xEB, 0x00, 0xC7, 0x00, 0xA5, 0x00,
605  0x7D, 0x00, 0x5B, 0x00, 0x35, 0x00, 0x0E, 0x00, 0xEB, 0xFF, 0xC4, 0xFF,
606  0xA2, 0xFF, 0x7A, 0xFF, 0x5A, 0xFF, 0x33, 0xFF, 0x14, 0xFF, 0xEF, 0xFE,
607  0xD3, 0xFE, 0xB0, 0xFE, 0x98, 0xFE, 0x77, 0xFE, 0x60, 0xFE, 0x46, 0xFE,
608  0x2E, 0xFE, 0x1B, 0xFE, 0x06, 0xFE, 0xF7, 0xFD, 0xE7, 0xFD, 0xDB, 0xFD,
609  0xCE, 0xFD, 0xC9, 0xFD, 0xBF, 0xFD, 0xBF, 0xFD, 0xBB, 0xFD, 0xBC, 0xFD,
610  0xBF, 0xFD, 0xC4, 0xFD, 0xCC, 0xFD, 0xD5, 0xFD, 0xE2, 0xFD, 0xEE, 0xFD,
611  0xFE, 0xFD, 0x12, 0xFE, 0x23, 0xFE, 0x3D, 0xFE, 0x4F, 0xFE, 0x6D, 0xFE,
612  0x84, 0xFE, 0xA3, 0xFE, 0xBE, 0xFE, 0xDC, 0xFE, 0xFE, 0xFE, 0x1D, 0xFF,
613  0x40, 0xFF, 0x60, 0xFF, 0x85, 0xFF, 0xA4, 0xFF, 0xCC, 0xFF, 0xEC, 0xFF,
614  0x12, 0x00, 0x33, 0x00, 0x59, 0x00, 0x79, 0x00, 0x9C, 0x00, 0xBE, 0x00,
615  0xDC, 0x00, 0x00, 0x01, 0x1B, 0x01, 0x3B, 0x01, 0x55, 0x01, 0x72, 0x01,
616  0x87, 0x01, 0xA5, 0x01, 0xB4, 0x01, 0xCF, 0x01, 0xDC, 0x01, 0xF0, 0x01,
617  0xFD, 0x01, 0x08, 0x02, 0x17, 0x02, 0x17, 0x02, 0x28, 0x02, 0x22, 0x02,
618  0x2A, 0x02, 0x27, 0x02, 0x24, 0x02, 0x22, 0x02, 0x19, 0x02, 0x10, 0x02,
619  0x06, 0x02, 0xF9, 0x01, 0xE8, 0x01, 0xDB, 0x01, 0xC4, 0x01, 0xB4, 0x01,
620  0x9A, 0x01, 0x85, 0x01, 0x6B, 0x01, 0x4F, 0x01, 0x38, 0x01, 0x14, 0x01,
621  0xFE, 0x00, 0xD8, 0x00, 0xBE, 0x00, 0x99, 0x00, 0x7C, 0x00, 0x57, 0x00,
622  0x37, 0x00, 0x16, 0x00, 0xF4, 0xFF, 0xD2, 0xFF, 0xB2, 0xFF, 0x8E, 0xFF,
623  0x71, 0xFF, 0x4E, 0xFF, 0x30, 0xFF, 0x14, 0xFF, 0xF3, 0xFE, 0xDC, 0xFE,
624  0xBA, 0xFE, 0xA8, 0xFE, 0x88, 0xFE, 0x78, 0xFE, 0x5F, 0xFE, 0x4E, 0xFE,
625  0x3B, 0xFE, 0x2B, 0xFE, 0x1E, 0xFE, 0x10, 0xFE, 0x09, 0xFE, 0xFD, 0xFD,
626  0xFC, 0xFD, 0xF3, 0xFD, 0xF3, 0xFD, 0xF6, 0xFD, 0xF2, 0xFD, 0xFE, 0xFD,
627  0xFC, 0xFD, 0x0B, 0xFE, 0x11, 0xFE, 0x1F, 0xFE, 0x2E, 0xFE, 0x3A, 0xFE,
628  0x51, 0xFE, 0x5E, 0xFE, 0x79, 0xFE, 0x8A, 0xFE, 0xA6, 0xFE, 0xBC, 0xFE,
629  0xD7, 0xFE, 0xF3, 0xFE, 0x10, 0xFF, 0x2C, 0xFF, 0x4A, 0xFF, 0x69, 0xFF,
630  0x87, 0xFF, 0xA9, 0xFF, 0xC8, 0xFF, 0xE8, 0xFF, 0x08, 0x00, 0x27, 0x00,
631  0x4A, 0x00, 0x65, 0x00, 0x88, 0x00, 0xA3, 0x00, 0xC3, 0x00, 0xDF, 0x00,
632  0xFB, 0x00, 0x17, 0x01, 0x2D, 0x01, 0x4B, 0x01, 0x5C, 0x01, 0x78, 0x01,
633  0x87, 0x01, 0x9C, 0x01, 0xAE, 0x01, 0xBB, 0x01, 0xCA, 0x01, 0xD5, 0x01,
634  0xDE, 0x01, 0xE8, 0x01, 0xED, 0x01, 0xF0, 0x01, 0xF4, 0x01, 0xF2, 0x01,
635  0xF2, 0x01, 0xEC, 0x01, 0xEA, 0x01, 0xDE, 0x01, 0xD8, 0x01, 0xCA, 0x01,
636  0xBE, 0x01, 0xAF, 0x01, 0xA0, 0x01, 0x8C, 0x01, 0x79, 0x01, 0x64, 0x01,
637  0x4D, 0x01, 0x36, 0x01, 0x1C, 0x01, 0x06, 0x01, 0xE5, 0x00, 0xD0, 0x00,
638  0xAD, 0x00, 0x94, 0x00, 0x74, 0x00, 0x59, 0x00, 0x39, 0x00, 0x19, 0x00,
639  0xFF, 0xFF, 0xD9, 0xFF, 0xC4, 0xFF, 0x9C, 0xFF, 0x89, 0xFF, 0x64, 0xFF,
640  0x4B, 0xFF, 0x31, 0xFF, 0x12, 0xFF, 0xFC, 0xFE, 0xE2, 0xFE, 0xC9, 0xFE,
641  0xB5, 0xFE, 0xA1, 0xFE, 0x8B, 0xFE, 0x7C, 0xFE, 0x68, 0xFE, 0x5D, 0xFE,
642  0x4C, 0xFE, 0x47, 0xFE, 0x35, 0xFE, 0x36, 0xFE, 0x29, 0xFE, 0x29, 0xFE,
643  0x26, 0xFE, 0x25, 0xFE, 0x27, 0xFE, 0x2A, 0xFE, 0x31, 0xFE, 0x34, 0xFE,
644  0x42, 0xFE, 0x49, 0xFE, 0x56, 0xFE, 0x66, 0xFE, 0x72, 0xFE, 0x85, 0xFE,
645  0x97, 0xFE, 0xAC, 0xFE, 0xC0, 0xFE, 0xD7, 0xFE, 0xEE, 0xFE, 0x07, 0xFF,
646  0x21, 0xFF, 0x3A, 0xFF, 0x56, 0xFF, 0x6F, 0xFF, 0x90, 0xFF, 0xA7, 0xFF,
647  0xCB, 0xFF, 0xE0, 0xFF, 0x03, 0x00, 0x1B, 0x00, 0x3B, 0x00, 0x59, 0x00,
648  0x70, 0x00, 0x92, 0x00, 0xA7, 0x00, 0xC4, 0x00, 0xDF, 0x00, 0xF3, 0x00,
649  0x0F, 0x01, 0x23, 0x01, 0x38, 0x01, 0x4F, 0x01, 0x5D, 0x01, 0x73, 0x01,
650  0x7E, 0x01, 0x90, 0x01, 0x9A, 0x01, 0xA5, 0x01, 0xB2, 0x01, 0xB4, 0x01,
651  0xBF, 0x01, 0xC0, 0x01, 0xC2, 0x01, 0xC4, 0x01, 0xC1, 0x01, 0xC0, 0x01,
652  0xBA, 0x01, 0xB4, 0x01, 0xAC, 0x01, 0xA0, 0x01, 0x99, 0x01, 0x86, 0x01,
653  0x7D, 0x01, 0x69, 0x01, 0x58, 0x01, 0x4A, 0x01, 0x2E, 0x01, 0x21, 0x01,
654  0x04, 0x01, 0xF2, 0x00, 0xD6, 0x00, 0xBE, 0x00, 0xA5, 0x00, 0x8B, 0x00,
655  0x70, 0x00, 0x57, 0x00, 0x37, 0x00, 0x20, 0x00, 0x01, 0x00, 0xE8, 0xFF,
656  0xCA, 0xFF, 0xB3, 0xFF, 0x94, 0xFF, 0x7D, 0xFF, 0x60, 0xFF, 0x4A, 0xFF,
657  0x2F, 0xFF, 0x19, 0xFF, 0x04, 0xFF, 0xEB, 0xFE, 0xDC, 0xFE, 0xC3, 0xFE,
658  0xB4, 0xFE, 0xA4, 0xFE, 0x93, 0xFE, 0x89, 0xFE, 0x78, 0xFE, 0x71, 0xFE,
659  0x67, 0xFE, 0x5F, 0xFE, 0x5B, 0xFE, 0x55, 0xFE, 0x53, 0xFE, 0x54, 0xFE,
660  0x52, 0xFE, 0x58, 0xFE, 0x5B, 0xFE, 0x60, 0xFE, 0x69, 0xFE, 0x72, 0xFE,
661  0x7B, 0xFE, 0x8B, 0xFE, 0x94, 0xFE, 0xA8, 0xFE, 0xB4, 0xFE, 0xC9, 0xFE,
662  0xD9, 0xFE, 0xF1, 0xFE, 0x01, 0xFF, 0x1C, 0xFF, 0x2D, 0xFF, 0x4B, 0xFF,
663  0x5E, 0xFF, 0x7C, 0xFF, 0x90, 0xFF, 0xAC, 0xFF, 0xC8, 0xFF, 0xDD, 0xFF,
664  0xFF, 0xFF, 0x10, 0x00, 0x32, 0x00, 0x48, 0x00, 0x63, 0x00, 0x7B, 0x00,
665  0x94, 0x00, 0xAA, 0x00, 0xC6, 0x00, 0xD6, 0x00, 0xF1, 0x00, 0x02, 0x01,
666  0x18, 0x01, 0x28, 0x01, 0x3A, 0x01, 0x4B, 0x01, 0x56, 0x01, 0x68, 0x01,
667  0x6F, 0x01, 0x7D, 0x01, 0x84, 0x01, 0x8B, 0x01, 0x90, 0x01, 0x96, 0x01,
668  0x96, 0x01, 0x9A, 0x01, 0x96, 0x01, 0x95, 0x01, 0x91, 0x01, 0x8B, 0x01,
669  0x86, 0x01, 0x7B, 0x01, 0x71, 0x01, 0x67, 0x01, 0x59, 0x01, 0x4B, 0x01,
670  0x3C, 0x01, 0x2A, 0x01, 0x1A, 0x01, 0x07, 0x01, 0xF2, 0x00, 0xDB, 0x00,
671  0xCB, 0x00, 0xAF, 0x00, 0x9D, 0x00, 0x82, 0x00, 0x6A, 0x00, 0x55, 0x00,
672  0x36, 0x00, 0x24, 0x00, 0x07, 0x00, 0xEF, 0xFF, 0xD7, 0xFF, 0xBE, 0xFF,
673  0xA3, 0xFF, 0x90, 0xFF, 0x75, 0xFF, 0x5F, 0xFF, 0x4B, 0xFF, 0x32, 0xFF,
674  0x20, 0xFF, 0x0D, 0xFF, 0xF7, 0xFE, 0xE9, 0xFE, 0xD5, 0xFE, 0xC9, 0xFE,
675  0xBB, 0xFE, 0xAB, 0xFE, 0xA6, 0xFE, 0x93, 0xFE, 0x95, 0xFE, 0x85, 0xFE,
676  0x85, 0xFE, 0x7F, 0xFE, 0x7D, 0xFE, 0x7B, 0xFE, 0x7E, 0xFE, 0x7D, 0xFE,
677  0x83, 0xFE, 0x88, 0xFE, 0x8C, 0xFE, 0x97, 0xFE, 0x9F, 0xFE, 0xA9, 0xFE,
678  0xB8, 0xFE, 0xC2, 0xFE, 0xD3, 0xFE, 0xE2, 0xFE, 0xF2, 0xFE, 0x06, 0xFF,
679  0x15, 0xFF, 0x2E, 0xFF, 0x3C, 0xFF, 0x59, 0xFF, 0x66, 0xFF, 0x86, 0xFF,
680  0x93, 0xFF, 0xB2, 0xFF, 0xC4, 0xFF, 0xE0, 0xFF, 0xF4, 0xFF, 0x10, 0x00,
681  0x22, 0x00, 0x3F, 0x00, 0x52, 0x00, 0x6B, 0x00, 0x81, 0x00, 0x95, 0x00,
682  0xAD, 0x00, 0xC0, 0x00, 0xD2, 0x00, 0xE8, 0x00, 0xF6, 0x00, 0x09, 0x01,
683  0x1A, 0x01, 0x25, 0x01, 0x36, 0x01, 0x41, 0x01, 0x4B, 0x01, 0x55, 0x01,
684  0x5D, 0x01, 0x64, 0x01, 0x6A, 0x01, 0x6E, 0x01, 0x6F, 0x01, 0x71, 0x01,
685  0x71, 0x01, 0x6E, 0x01, 0x6C, 0x01, 0x68, 0x01, 0x5F, 0x01, 0x5A, 0x01,
686  0x50, 0x01, 0x47, 0x01, 0x3B, 0x01, 0x2F, 0x01, 0x20, 0x01, 0x12, 0x01,
687  0x02, 0x01, 0xF1, 0x00, 0xDF, 0x00, 0xCE, 0x00, 0xB9, 0x00, 0xA5, 0x00,
688  0x91, 0x00, 0x7A, 0x00, 0x67, 0x00, 0x4F, 0x00, 0x39, 0x00, 0x23, 0x00,
689  0x0D, 0x00, 0xF4, 0xFF, 0xE3, 0xFF, 0xC4, 0xFF, 0xB7, 0xFF, 0x9A, 0xFF,
690  0x8A, 0xFF, 0x73, 0xFF, 0x5F, 0xFF, 0x4C, 0xFF, 0x38, 0xFF, 0x28, 0xFF,
691  0x15, 0xFF, 0x06, 0xFF, 0xF8, 0xFE, 0xE7, 0xFE, 0xDE, 0xFE, 0xCF, 0xFE,
692  0xC6, 0xFE, 0xBD, 0xFE, 0xB4, 0xFE, 0xAF, 0xFE, 0xA8, 0xFE, 0xA6, 0xFE,
693  0xA1, 0xFE, 0xA3, 0xFE, 0x9F, 0xFE, 0xA6, 0xFE, 0xA2, 0xFE, 0xAE, 0xFE,
694  0xAE, 0xFE, 0xB7, 0xFE, 0xC0, 0xFE, 0xC7, 0xFE, 0xD4, 0xFE, 0xE0, 0xFE,
695  0xEA, 0xFE, 0xFB, 0xFE, 0x08, 0xFF, 0x1B, 0xFF, 0x28, 0xFF, 0x3C, 0xFF,
696  0x4D, 0xFF, 0x61, 0xFF, 0x74, 0xFF, 0x89, 0xFF, 0x9C, 0xFF, 0xB2, 0xFF,
697  0xC8, 0xFF, 0xDB, 0xFF, 0xF2, 0xFF, 0x08, 0x00, 0x1C, 0x00, 0x32, 0x00,
698  0x46, 0x00, 0x5C, 0x00, 0x70, 0x00, 0x85, 0x00, 0x96, 0x00, 0xA9, 0x00,
699  0xBC, 0x00, 0xCA, 0x00, 0xE1, 0x00, 0xE8, 0x00, 0xFE, 0x00, 0x06, 0x01,
700  0x15, 0x01, 0x1F, 0x01, 0x2A, 0x01, 0x33, 0x01, 0x3A, 0x01, 0x41, 0x01,
701  0x44, 0x01, 0x4D, 0x01, 0x49, 0x01, 0x51, 0x01, 0x4A, 0x01, 0x4E, 0x01,
702  0x49, 0x01, 0x46, 0x01, 0x41, 0x01, 0x38, 0x01, 0x34, 0x01, 0x27, 0x01,
703  0x22, 0x01, 0x12, 0x01, 0x0A, 0x01, 0xF8, 0x00, 0xEF, 0x00, 0xDC, 0x00,
704  0xCE, 0x00, 0xBF, 0x00, 0xA8, 0x00, 0x9D, 0x00, 0x84, 0x00, 0x75, 0x00,
705  0x61, 0x00, 0x4D, 0x00, 0x37, 0x00, 0x26, 0x00, 0x0E, 0x00, 0xFC, 0xFF,
706  0xE7, 0xFF, 0xD3, 0xFF, 0xBF, 0xFF, 0xAC, 0xFF, 0x97, 0xFF, 0x85, 0xFF,
707  0x73, 0xFF, 0x61, 0xFF, 0x4E, 0xFF, 0x43, 0xFF, 0x2B, 0xFF, 0x26, 0xFF,
708  0x0F, 0xFF, 0x0A, 0xFF, 0xF8, 0xFE, 0xF1, 0xFE, 0xE5, 0xFE, 0xDD, 0xFE,
709  0xD7, 0xFE, 0xCF, 0xFE, 0xCC, 0xFE, 0xC5, 0xFE, 0xC5, 0xFE, 0xC3, 0xFE,
710  0xC2, 0xFE, 0xC5, 0xFE, 0xC6, 0xFE, 0xC9, 0xFE, 0xD1, 0xFE, 0xD3, 0xFE,
711  0xDC, 0xFE, 0xE5, 0xFE, 0xEC, 0xFE, 0xFB, 0xFE, 0x01, 0xFF, 0x12, 0xFF,
712  0x1B, 0xFF, 0x2E, 0xFF, 0x3A, 0xFF, 0x4C, 0xFF, 0x58, 0xFF, 0x6E, 0xFF,
713  0x7C, 0xFF, 0x92, 0xFF, 0xA0, 0xFF, 0xB8, 0xFF, 0xC5, 0xFF, 0xDE, 0xFF,
714  0xED, 0xFF, 0x02, 0x00, 0x17, 0x00, 0x28, 0x00, 0x3D, 0x00, 0x4E, 0x00,
715  0x5F, 0x00, 0x76, 0x00, 0x80, 0x00, 0x9C, 0x00, 0x9E, 0x00, 0xBD, 0x00,
716  0xBE, 0x00, 0xD6, 0x00, 0xDF, 0x00, 0xEB, 0x00, 0xF9, 0x00, 0x00, 0x01,
717  0x0C, 0x01, 0x14, 0x01, 0x1A, 0x01, 0x22, 0x01, 0x25, 0x01, 0x29, 0x01,
718  0x2D, 0x01, 0x2C, 0x01, 0x30, 0x01, 0x2A, 0x01, 0x2D, 0x01, 0x25, 0x01,
719  0x25, 0x01, 0x1C, 0x01, 0x17, 0x01, 0x0F, 0x01, 0x04, 0x01, 0xFF, 0x00,
720  0xEE, 0x00, 0xE9, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xBC, 0x00, 0xAE, 0x00,
721  0xA0, 0x00, 0x8E, 0x00, 0x7F, 0x00, 0x6C, 0x00, 0x5B, 0x00, 0x4A, 0x00,
722  0x37, 0x00, 0x25, 0x00, 0x12, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xDD, 0xFF,
723  0xC8, 0xFF, 0xB9, 0xFF, 0xA3, 0xFF, 0x97, 0xFF, 0x81, 0xFF, 0x77, 0xFF,
724  0x62, 0xFF, 0x57, 0xFF, 0x45, 0xFF, 0x3B, 0xFF, 0x2B, 0xFF, 0x22, 0xFF,
725  0x17, 0xFF, 0x0A, 0xFF, 0x05, 0xFF, 0xF8, 0xFE, 0xF8, 0xFE, 0xEB, 0xFE,
726  0xEB, 0xFE, 0xE4, 0xFE, 0xE3, 0xFE, 0xE3, 0xFE, 0xDF, 0xFE, 0xE5, 0xFE,
727  0xE0, 0xFE, 0xEA, 0xFE, 0xE8, 0xFE, 0xF3, 0xFE, 0xF4, 0xFE, 0x00, 0xFF,
728  0x03, 0xFF, 0x11, 0xFF, 0x1A, 0xFF, 0x22, 0xFF, 0x34, 0xFF, 0x38, 0xFF,
729  0x4F, 0xFF, 0x56, 0xFF, 0x68, 0xFF, 0x77, 0xFF, 0x85, 0xFF, 0x99, 0xFF,
730  0xA5, 0xFF, 0xBA, 0xFF, 0xC9, 0xFF, 0xDA, 0xFF, 0xED, 0xFF, 0xFE, 0xFF,
731  0x0F, 0x00, 0x22, 0x00, 0x33, 0x00, 0x40, 0x00, 0x58, 0x00, 0x60, 0x00,
732  0x77, 0x00, 0x83, 0x00, 0x92, 0x00, 0xA2, 0x00, 0xAD, 0x00, 0xBD, 0x00,
733  0xC6, 0x00, 0xD4, 0x00, 0xDD, 0x00, 0xE7, 0x00, 0xF0, 0x00, 0xF7, 0x00,
734  0xFF, 0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 0x01, 0x11, 0x01, 0x0F, 0x01,
735  0x12, 0x01, 0x10, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x06, 0x01, 0x05, 0x01,
736  0xFC, 0x00, 0xF7, 0x00, 0xEF, 0x00, 0xE5, 0x00, 0xDD, 0x00, 0xD3, 0x00,
737  0xC5, 0x00, 0xBD, 0x00, 0xAC, 0x00, 0xA1, 0x00, 0x94, 0x00, 0x83, 0x00,
738  0x77, 0x00, 0x65, 0x00, 0x56, 0x00, 0x46, 0x00, 0x35, 0x00, 0x27, 0x00,
739  0x13, 0x00, 0x05, 0x00, 0xF2, 0xFF, 0xE3, 0xFF, 0xD3, 0xFF, 0xC0, 0xFF,
740  0xB4, 0xFF, 0xA1, 0xFF, 0x94, 0xFF, 0x85, 0xFF, 0x75, 0xFF, 0x6A, 0xFF,
741  0x5A, 0xFF, 0x50, 0xFF, 0x43, 0xFF, 0x39, 0xFF, 0x2E, 0xFF, 0x27, 0xFF,
742  0x1B, 0xFF, 0x17, 0xFF, 0x0D, 0xFF, 0x0B, 0xFF, 0x04, 0xFF, 0x02, 0xFF,
743  0xFE, 0xFE, 0xFD, 0xFE, 0xFD, 0xFE, 0xFD, 0xFE, 0xFD, 0xFE, 0x03, 0xFF,
744  0x03, 0xFF, 0x0A, 0xFF, 0x0E, 0xFF, 0x14, 0xFF, 0x1D, 0xFF, 0x24, 0xFF,
745  0x2D, 0xFF, 0x38, 0xFF, 0x40, 0xFF, 0x4F, 0xFF, 0x57, 0xFF, 0x67, 0xFF,
746  0x73, 0xFF, 0x7F, 0xFF, 0x92, 0xFF, 0x99, 0xFF, 0xB1, 0xFF, 0xB8, 0xFF,
747  0xCE, 0xFF, 0xD9, 0xFF, 0xEC, 0xFF, 0xFA, 0xFF, 0x0B, 0x00, 0x1A, 0x00,
748  0x29, 0x00, 0x3B, 0x00, 0x46, 0x00, 0x5A, 0x00, 0x64, 0x00, 0x74, 0x00,
749  0x83, 0x00, 0x8C, 0x00, 0x9D, 0x00, 0xA6, 0x00, 0xB2, 0x00, 0xBD, 0x00,
750  0xC6, 0x00, 0xD0, 0x00, 0xD5, 0x00, 0xE1, 0x00, 0xE2, 0x00, 0xEB, 0x00,
751  0xEF, 0x00, 0xF1, 0x00, 0xF4, 0x00, 0xF9, 0x00, 0xF2, 0x00, 0xFB, 0x00,
752  0xF1, 0x00, 0xF6, 0x00, 0xEC, 0x00, 0xEF, 0x00, 0xE3, 0x00, 0xE3, 0x00,
753  0xD8, 0x00, 0xD2, 0x00, 0xCB, 0x00, 0xBE, 0x00, 0xB7, 0x00, 0xAB, 0x00,
754  0xA1, 0x00, 0x95, 0x00, 0x86, 0x00, 0x7B, 0x00, 0x6E, 0x00, 0x5E, 0x00,
755  0x54, 0x00, 0x3D, 0x00, 0x39, 0x00, 0x21, 0x00, 0x1A, 0x00, 0x04, 0x00,
756  0xF9, 0xFF, 0xE8, 0xFF, 0xD9, 0xFF, 0xCD, 0xFF, 0xBC, 0xFF, 0xAF, 0xFF,
757  0xA0, 0xFF, 0x94, 0xFF, 0x85, 0xFF, 0x7B, 0xFF, 0x6E, 0xFF, 0x61, 0xFF,
758  0x5A, 0xFF, 0x4D, 0xFF, 0x44, 0xFF, 0x3E, 0xFF, 0x32, 0xFF, 0x2F, 0xFF,
759  0x27, 0xFF, 0x22, 0xFF, 0x1E, 0xFF, 0x1B, 0xFF, 0x16, 0xFF, 0x18, 0xFF,
760  0x13, 0xFF, 0x18, 0xFF, 0x15, 0xFF, 0x1A, 0xFF, 0x1C, 0xFF, 0x1D, 0xFF,
761  0x29, 0xFF, 0x25, 0xFF, 0x35, 0xFF, 0x35, 0xFF, 0x40, 0xFF, 0x49, 0xFF,
762  0x50, 0xFF, 0x5E, 0xFF, 0x65, 0xFF, 0x73, 0xFF, 0x7D, 0xFF, 0x89, 0xFF,
763  0x98, 0xFF, 0xA2, 0xFF, 0xB4, 0xFF, 0xBC, 0xFF, 0xD0, 0xFF, 0xD9, 0xFF,
764  0xEA, 0xFF, 0xF8, 0xFF, 0x05, 0x00, 0x16, 0x00, 0x22, 0x00, 0x31, 0x00,
765  0x3E, 0x00, 0x4D, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x81, 0x00,
766  0x89, 0x00, 0x93, 0x00, 0xA2, 0x00, 0xA5, 0x00, 0xB3, 0x00, 0xB9, 0x00,
767  0xC1, 0x00, 0xC7, 0x00, 0xD0, 0x00, 0xCF, 0x00, 0xDA, 0x00, 0xD8, 0x00,
768  0xDC, 0x00, 0xE1, 0x00, 0xDC, 0x00, 0xE2, 0x00, 0xDC, 0x00, 0xDC, 0x00,
769  0xDA, 0x00, 0xD5, 0x00, 0xD3, 0x00, 0xCB, 0x00, 0xC6, 0x00, 0xC1, 0x00,
770  0xB4, 0x00, 0xB5, 0x00, 0xA1, 0x00, 0xA3, 0x00, 0x8E, 0x00, 0x8D, 0x00,
771  0x7A, 0x00, 0x73, 0x00, 0x66, 0x00, 0x57, 0x00, 0x4F, 0x00, 0x3E, 0x00,
772  0x33, 0x00, 0x23, 0x00, 0x18, 0x00, 0x08, 0x00, 0xFD, 0xFF, 0xEF, 0xFF,
773  0xDE, 0xFF, 0xD6, 0xFF, 0xC4, 0xFF, 0xBB, 0xFF, 0xAA, 0xFF, 0xA3, 0xFF,
774  0x92, 0xFF, 0x8C, 0xFF, 0x7D, 0xFF, 0x74, 0xFF, 0x69, 0xFF, 0x63, 0xFF,
775  0x56, 0xFF, 0x53, 0xFF, 0x48, 0xFF, 0x44, 0xFF, 0x3B, 0xFF, 0x3C, 0xFF,
776  0x2F, 0xFF, 0x37, 0xFF, 0x2A, 0xFF, 0x2F, 0xFF, 0x2B, 0xFF, 0x2C, 0xFF,
777  0x2E, 0xFF, 0x2C, 0xFF, 0x34, 0xFF, 0x32, 0xFF, 0x3A, 0xFF, 0x3D, 0xFF,
778  0x41, 0xFF, 0x4C, 0xFF, 0x4D, 0xFF, 0x5C, 0xFF, 0x5D, 0xFF, 0x6C, 0xFF,
779  0x72, 0xFF, 0x7D, 0xFF, 0x87, 0xFF, 0x94, 0xFF, 0x9D, 0xFF, 0xAA, 0xFF,
780  0xB7, 0xFF, 0xC2, 0xFF, 0xCF, 0xFF, 0xDD, 0xFF, 0xE6, 0xFF, 0xF8, 0xFF,
781  0x01, 0x00, 0x11, 0x00, 0x1C, 0x00, 0x29, 0x00, 0x36, 0x00, 0x41, 0x00,
782  0x4F, 0x00, 0x58, 0x00, 0x67, 0x00, 0x6E, 0x00, 0x7C, 0x00, 0x82, 0x00,
783  0x8F, 0x00, 0x96, 0x00, 0x9D, 0x00, 0xA9, 0x00, 0xAA, 0x00, 0xB5, 0x00,
784  0xB8, 0x00, 0xBD, 0x00, 0xC3, 0x00, 0xC2, 0x00, 0xCA, 0x00, 0xC6, 0x00,
785  0xCB, 0x00, 0xCA, 0x00, 0xC7, 0x00, 0xCB, 0x00, 0xC1, 0x00, 0xC5, 0x00,
786  0xBD, 0x00, 0xBA, 0x00, 0xB5, 0x00, 0xAD, 0x00, 0xAA, 0x00, 0x9F, 0x00,
787  0x9A, 0x00, 0x8F, 0x00, 0x88, 0x00, 0x7D, 0x00, 0x74, 0x00, 0x69, 0x00,
788  0x5F, 0x00, 0x53, 0x00, 0x47, 0x00, 0x3D, 0x00, 0x2E, 0x00, 0x26, 0x00,
789  0x15, 0x00, 0x0E, 0x00, 0xFC, 0xFF, 0xF6, 0xFF, 0xE3, 0xFF, 0xDD, 0xFF,
790  0xCD, 0xFF, 0xC2, 0xFF, 0xB9, 0xFF, 0xA9, 0xFF, 0xA5, 0xFF, 0x95, 0xFF,
791  0x8D, 0xFF, 0x84, 0xFF, 0x79, 0xFF, 0x73, 0xFF, 0x6B, 0xFF, 0x62, 0xFF,
792  0x5C, 0xFF, 0x58, 0xFF, 0x4E, 0xFF, 0x4F, 0xFF, 0x47, 0xFF, 0x46, 0xFF,
793  0x44, 0xFF, 0x3F, 0xFF, 0x43, 0xFF, 0x3D, 0xFF, 0x44, 0xFF, 0x40, 0xFF,
794  0x46, 0xFF, 0x46, 0xFF, 0x4B, 0xFF, 0x4E, 0xFF, 0x55, 0xFF, 0x59, 0xFF,
795  0x5F, 0xFF, 0x68, 0xFF, 0x6C, 0xFF, 0x78, 0xFF, 0x7C, 0xFF, 0x89, 0xFF,
796  0x90, 0xFF, 0x9D, 0xFF, 0xA3, 0xFF, 0xB1, 0xFF, 0xB9, 0xFF, 0xC6, 0xFF,
797  0xD3, 0xFF, 0xDA, 0xFF, 0xEB, 0xFF, 0xF2, 0xFF, 0x00, 0x00, 0x0D, 0x00,
798  0x15, 0x00, 0x24, 0x00, 0x2D, 0x00, 0x3A, 0x00, 0x43, 0x00, 0x51, 0x00,
799  0x56, 0x00, 0x65, 0x00, 0x6B, 0x00, 0x76, 0x00, 0x7E, 0x00, 0x86, 0x00,
800  0x8E, 0x00, 0x95, 0x00, 0x9A, 0x00, 0xA1, 0x00, 0xA6, 0x00, 0xAA, 0x00,
801  0xAF, 0x00, 0xB0, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0xB7, 0x00, 0xB5, 0x00,
802  0xB8, 0x00, 0xB2, 0x00, 0xB5, 0x00, 0xAF, 0x00, 0xAE, 0x00, 0xA8, 0x00,
803  0xA6, 0x00, 0x9D, 0x00, 0x9A, 0x00, 0x94, 0x00, 0x89, 0x00, 0x88, 0x00,
804  0x78, 0x00, 0x77, 0x00, 0x69, 0x00, 0x62, 0x00, 0x57, 0x00, 0x4D, 0x00,
805  0x45, 0x00, 0x36, 0x00, 0x32, 0x00, 0x1E, 0x00, 0x1D, 0x00, 0x08, 0x00,
806  0x05, 0x00, 0xF4, 0xFF, 0xED, 0xFF, 0xE0, 0xFF, 0xD6, 0xFF, 0xC9, 0xFF,
807  0xC3, 0xFF, 0xB4, 0xFF, 0xB0, 0xFF, 0x9E, 0xFF, 0x9E, 0xFF, 0x8D, 0xFF,
808  0x8E, 0xFF, 0x7D, 0xFF, 0x7E, 0xFF, 0x6F, 0xFF, 0x71, 0xFF, 0x65, 0xFF,
809  0x65, 0xFF, 0x5D, 0xFF, 0x5C, 0xFF, 0x57, 0xFF, 0x56, 0xFF, 0x53, 0xFF,
810  0x55, 0xFF, 0x50, 0xFF, 0x55, 0xFF, 0x52, 0xFF, 0x58, 0xFF, 0x57, 0xFF,
811  0x5B, 0xFF, 0x60, 0xFF, 0x61, 0xFF, 0x6B, 0xFF, 0x6C, 0xFF, 0x74, 0xFF,
812  0x7B, 0xFF, 0x80, 0xFF, 0x8A, 0xFF, 0x92, 0xFF, 0x98, 0xFF, 0xA4, 0xFF,
813  0xAA, 0xFF, 0xB7, 0xFF, 0xBE, 0xFF, 0xCA, 0xFF, 0xD2, 0xFF, 0xDE, 0xFF,
814  0xEA, 0xFF, 0xF1, 0xFF, 0xFE, 0xFF, 0x07, 0x00, 0x13, 0x00, 0x1D, 0x00,
815  0x28, 0x00, 0x30, 0x00, 0x3C, 0x00, 0x45, 0x00, 0x4D, 0x00, 0x5A, 0x00,
816  0x5C, 0x00, 0x6E, 0x00, 0x6B, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x85, 0x00,
817  0x8C, 0x00, 0x8F, 0x00, 0x96, 0x00, 0x98, 0x00, 0x9F, 0x00, 0x9D, 0x00,
818  0xA4, 0x00, 0xA2, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA5, 0x00, 0xA4, 0x00,
819  0xA1, 0x00, 0xA1, 0x00, 0x9C, 0x00, 0x9A, 0x00, 0x96, 0x00, 0x90, 0x00,
820  0x8C, 0x00, 0x87, 0x00, 0x7F, 0x00, 0x7A, 0x00, 0x70, 0x00, 0x6C, 0x00,
821  0x61, 0x00, 0x5C, 0x00, 0x4F, 0x00, 0x4A, 0x00, 0x3C, 0x00, 0x39, 0x00,
822  0x28, 0x00, 0x25, 0x00, 0x15, 0x00, 0x10, 0x00, 0x02, 0x00, 0xFB, 0xFF,
823  0xEE, 0xFF, 0xE7, 0xFF, 0xDB, 0xFF, 0xD3, 0xFF, 0xC8, 0xFF, 0xC0, 0xFF,
824  0xB5, 0xFF, 0xB0, 0xFF, 0xA4, 0xFF, 0x9F, 0xFF, 0x95, 0xFF, 0x8F, 0xFF,
825  0x89, 0xFF, 0x82, 0xFF, 0x7D, 0xFF, 0x77, 0xFF, 0x72, 0xFF, 0x71, 0xFF,
826  0x69, 0xFF, 0x6A, 0xFF, 0x66, 0xFF, 0x64, 0xFF, 0x65, 0xFF, 0x62, 0xFF,
827  0x64, 0xFF, 0x63, 0xFF, 0x67, 0xFF, 0x67, 0xFF, 0x6B, 0xFF, 0x6D, 0xFF,
828  0x71, 0xFF, 0x76, 0xFF, 0x7A, 0xFF, 0x81, 0xFF, 0x84, 0xFF, 0x8E, 0xFF,
829  0x91, 0xFF, 0x9B, 0xFF, 0xA1, 0xFF, 0xAB, 0xFF, 0xB0, 0xFF, 0xBC, 0xFF,
830  0xC2, 0xFF, 0xCD, 0xFF, 0xD5, 0xFF, 0xE0, 0xFF, 0xE5, 0xFF, 0xF6, 0xFF,
831  0xF7, 0xFF, 0x0A, 0x00, 0x09, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x2E, 0x00,
832  0x32, 0x00, 0x3C, 0x00, 0x46, 0x00, 0x4C, 0x00, 0x57, 0x00, 0x5B, 0x00,
833  0x65, 0x00, 0x6A, 0x00, 0x72, 0x00, 0x76, 0x00, 0x7E, 0x00, 0x7F, 0x00,
834  0x88, 0x00, 0x88, 0x00, 0x8E, 0x00, 0x90, 0x00, 0x91, 0x00, 0x94, 0x00,
835  0x94, 0x00, 0x96, 0x00, 0x94, 0x00, 0x96, 0x00, 0x91, 0x00, 0x93, 0x00,
836  0x8C, 0x00, 0x8E, 0x00, 0x87, 0x00, 0x84, 0x00, 0x81, 0x00, 0x78, 0x00,
837  0x77, 0x00, 0x6E, 0x00, 0x69, 0x00, 0x61, 0x00, 0x5C, 0x00, 0x51, 0x00,
838  0x4D, 0x00, 0x43, 0x00, 0x3A, 0x00, 0x33, 0x00, 0x2A, 0x00, 0x1F, 0x00,
839  0x19, 0x00, 0x0D, 0x00, 0x07, 0x00, 0xFC, 0xFF, 0xF3, 0xFF, 0xEA, 0xFF,
840  0xE1, 0xFF, 0xD8, 0xFF, 0xD2, 0xFF, 0xC5, 0xFF, 0xC1, 0xFF, 0xB7, 0xFF,
841  0xAF, 0xFF, 0xAB, 0xFF, 0x9E, 0xFF, 0x9F, 0xFF, 0x92, 0xFF, 0x91, 0xFF,
842  0x8A, 0xFF, 0x86, 0xFF, 0x80, 0xFF, 0x7F, 0xFF, 0x78, 0xFF, 0x7A, 0xFF,
843  0x73, 0xFF, 0x76, 0xFF, 0x70, 0xFF, 0x76, 0xFF, 0x6E, 0xFF, 0x77, 0xFF,
844  0x70, 0xFF, 0x7A, 0xFF, 0x74, 0xFF, 0x7E, 0xFF, 0x7C, 0xFF, 0x84, 0xFF,
845  0x84, 0xFF, 0x8C, 0xFF, 0x90, 0xFF, 0x96, 0xFF, 0x9D, 0xFF, 0xA0, 0xFF,
846  0xAB, 0xFF, 0xAE, 0xFF, 0xBB, 0xFF, 0xBC, 0xFF, 0xCA, 0xFF, 0xCE, 0xFF,
847  0xD8, 0xFF, 0xDF, 0xFF, 0xE9, 0xFF, 0xF2, 0xFF, 0xF8, 0xFF, 0x07, 0x00,
848  0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x26, 0x00, 0x2D, 0x00, 0x34, 0x00,
849  0x3D, 0x00, 0x44, 0x00, 0x4B, 0x00, 0x54, 0x00, 0x56, 0x00, 0x62, 0x00,
850  0x62, 0x00, 0x6D, 0x00, 0x6D, 0x00, 0x77, 0x00, 0x75, 0x00, 0x7F, 0x00,
851  0x7B, 0x00, 0x85, 0x00, 0x81, 0x00, 0x87, 0x00, 0x86, 0x00, 0x86, 0x00,
852  0x88, 0x00, 0x85, 0x00, 0x86, 0x00, 0x84, 0x00, 0x81, 0x00, 0x7F, 0x00,
853  0x7C, 0x00, 0x78, 0x00, 0x75, 0x00, 0x6F, 0x00, 0x6C, 0x00, 0x64, 0x00,
854  0x61, 0x00, 0x5A, 0x00, 0x53, 0x00, 0x4D, 0x00, 0x45, 0x00, 0x3F, 0x00,
855  0x37, 0x00, 0x2F, 0x00, 0x27, 0x00, 0x1F, 0x00, 0x18, 0x00, 0x0E, 0x00,
856  0x08, 0x00, 0xFD, 0xFF, 0xF7, 0xFF, 0xEE, 0xFF, 0xE6, 0xFF, 0xDE, 0xFF,
857  0xD6, 0xFF, 0xD0, 0xFF, 0xC4, 0xFF, 0xC5, 0xFF, 0xB4, 0xFF, 0xB5, 0xFF,
858  0xAD, 0xFF, 0xA4, 0xFF, 0xA3, 0xFF, 0x9A, 0xFF, 0x96, 0xFF, 0x93, 0xFF,
859  0x8F, 0xFF, 0x89, 0xFF, 0x8A, 0xFF, 0x83, 0xFF, 0x84, 0xFF, 0x82, 0xFF,
860  0x7F, 0xFF, 0x81, 0xFF, 0x80, 0xFF, 0x80, 0xFF, 0x81, 0xFF, 0x83, 0xFF,
861  0x83, 0xFF, 0x89, 0xFF, 0x89, 0xFF, 0x8E, 0xFF, 0x90, 0xFF, 0x96, 0xFF,
862  0x99, 0xFF, 0x9F, 0xFF, 0xA4, 0xFF, 0xAB, 0xFF, 0xAF, 0xFF, 0xB8, 0xFF,
863  0xBA, 0xFF, 0xC7, 0xFF, 0xC8, 0xFF, 0xD6, 0xFF, 0xD6, 0xFF, 0xE4, 0xFF,
864  0xE7, 0xFF, 0xF3, 0xFF, 0xF7, 0xFF, 0x01, 0x00, 0x08, 0x00, 0x10, 0x00,
865  0x18, 0x00, 0x20, 0x00, 0x26, 0x00, 0x2F, 0x00, 0x35, 0x00, 0x3B, 0x00,
866  0x44, 0x00, 0x47, 0x00, 0x53, 0x00, 0x50, 0x00, 0x5F, 0x00, 0x5A, 0x00,
867  0x69, 0x00, 0x64, 0x00, 0x6E, 0x00, 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00,
868  0x77, 0x00, 0x77, 0x00, 0x7B, 0x00, 0x78, 0x00, 0x7B, 0x00, 0x79, 0x00,
869  0x78, 0x00, 0x79, 0x00, 0x74, 0x00, 0x75, 0x00, 0x6F, 0x00, 0x6E, 0x00,
870  0x6B, 0x00, 0x65, 0x00, 0x63, 0x00, 0x5B, 0x00, 0x59, 0x00, 0x53, 0x00,
871  0x4C, 0x00, 0x47, 0x00, 0x41, 0x00, 0x39, 0x00, 0x34, 0x00, 0x2C, 0x00,
872  0x25, 0x00, 0x1F, 0x00, 0x15, 0x00, 0x11, 0x00, 0x06, 0x00, 0x03, 0x00,
873  0xF6, 0xFF, 0xF4, 0xFF, 0xE9, 0xFF, 0xE2, 0xFF, 0xDF, 0xFF, 0xD2, 0xFF,
874  0xCF, 0xFF, 0xC9, 0xFF, 0xBE, 0xFF, 0xBF, 0xFF, 0xB3, 0xFF, 0xB0, 0xFF,
875  0xAD, 0xFF, 0xA3, 0xFF, 0xA4, 0xFF, 0x9C, 0xFF, 0x9B, 0xFF, 0x96, 0xFF,
876  0x94, 0xFF, 0x92, 0xFF, 0x8E, 0xFF, 0x8F, 0xFF, 0x8C, 0xFF, 0x8D, 0xFF,
877  0x8B, 0xFF, 0x8E, 0xFF, 0x8B, 0xFF, 0x90, 0xFF, 0x8F, 0xFF, 0x92, 0xFF,
878  0x94, 0xFF, 0x9A, 0xFF, 0x98, 0xFF, 0xA1, 0xFF, 0xA0, 0xFF, 0xA9, 0xFF,
879  0xAB, 0xFF, 0xB2, 0xFF, 0xB5, 0xFF, 0xBE, 0xFF, 0xBF, 0xFF, 0xCC, 0xFF,
880  0xCB, 0xFF, 0xD7, 0xFF, 0xDB, 0xFF, 0xE3, 0xFF, 0xEB, 0xFF, 0xEF, 0xFF,
881  0xF9, 0xFF, 0xFD, 0xFF, 0x07, 0x00, 0x0E, 0x00, 0x13, 0x00, 0x1B, 0x00,
882  0x22, 0x00, 0x26, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3D, 0x00, 0x40, 0x00,
883  0x45, 0x00, 0x4E, 0x00, 0x4E, 0x00, 0x56, 0x00, 0x5A, 0x00, 0x5B, 0x00,
884  0x64, 0x00, 0x61, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00, 0x6D, 0x00,
885  0x6D, 0x00, 0x6F, 0x00, 0x6D, 0x00, 0x70, 0x00, 0x6B, 0x00, 0x6E, 0x00,
886  0x6A, 0x00, 0x69, 0x00, 0x67, 0x00, 0x63, 0x00, 0x61, 0x00, 0x5D, 0x00,
887  0x59, 0x00, 0x56, 0x00, 0x4F, 0x00, 0x4D, 0x00, 0x46, 0x00, 0x41, 0x00,
888  0x3C, 0x00, 0x36, 0x00, 0x2E, 0x00, 0x2D, 0x00, 0x1F, 0x00, 0x20, 0x00,
889  0x13, 0x00, 0x11, 0x00, 0x09, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xF1, 0xFF,
890  0xF1, 0xFF, 0xE5, 0xFF, 0xE2, 0xFF, 0xDA, 0xFF, 0xD4, 0xFF, 0xCF, 0xFF,
891  0xC8, 0xFF, 0xC3, 0xFF, 0xBE, 0xFF, 0xB9, 0xFF, 0xB3, 0xFF, 0xB1, 0xFF,
892  0xAA, 0xFF, 0xA8, 0xFF, 0xA6, 0xFF, 0x9F, 0xFF, 0xA2, 0xFF, 0x99, 0xFF,
893  0x9D, 0xFF, 0x97, 0xFF, 0x9A, 0xFF, 0x96, 0xFF, 0x99, 0xFF, 0x95, 0xFF,
894  0x9A, 0xFF, 0x96, 0xFF, 0x9E, 0xFF, 0x99, 0xFF, 0xA1, 0xFF, 0x9F, 0xFF,
895  0xA4, 0xFF, 0xA8, 0xFF, 0xAA, 0xFF, 0xB0, 0xFF, 0xB1, 0xFF, 0xB9, 0xFF,
896  0xBB, 0xFF, 0xC3, 0xFF, 0xC5, 0xFF, 0xCD, 0xFF, 0xD2, 0xFF, 0xD8, 0xFF,
897  0xDD, 0xFF, 0xE5, 0xFF, 0xEA, 0xFF, 0xF0, 0xFF, 0xF9, 0xFF, 0xFB, 0xFF,
898  0x07, 0x00, 0x07, 0x00, 0x15, 0x00, 0x12, 0x00, 0x21, 0x00, 0x20, 0x00,
899  0x2A, 0x00, 0x2F, 0x00, 0x34, 0x00, 0x39, 0x00, 0x3F, 0x00, 0x42, 0x00,
900  0x49, 0x00, 0x4B, 0x00, 0x51, 0x00, 0x52, 0x00, 0x59, 0x00, 0x57, 0x00,
901  0x5F, 0x00, 0x5C, 0x00, 0x62, 0x00, 0x60, 0x00, 0x65, 0x00, 0x61, 0x00,
902  0x66, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x5E, 0x00, 0x63, 0x00,
903  0x59, 0x00, 0x5E, 0x00, 0x56, 0x00, 0x57, 0x00, 0x4F, 0x00, 0x51, 0x00,
904  0x46, 0x00, 0x4A, 0x00, 0x3C, 0x00, 0x40, 0x00, 0x34, 0x00, 0x34, 0x00,
905  0x2C, 0x00, 0x26, 0x00, 0x21, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x10, 0x00,
906  0x0A, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xF5, 0xFF, 0xF2, 0xFF, 0xEA, 0xFF,
907  0xE7, 0xFF, 0xDD, 0xFF, 0xDB, 0xFF, 0xD4, 0xFF, 0xCE, 0xFF, 0xCC, 0xFF,
908  0xC3, 0xFF, 0xC2, 0xFF, 0xBB, 0xFF, 0xB9, 0xFF, 0xB5, 0xFF, 0xAF, 0xFF,
909  0xB0, 0xFF, 0xA9, 0xFF, 0xAA, 0xFF, 0xA5, 0xFF, 0xA6, 0xFF, 0xA2, 0xFF,
910  0xA3, 0xFF, 0xA2, 0xFF, 0xA0, 0xFF, 0xA2, 0xFF, 0xA2, 0xFF, 0xA1, 0xFF,
911  0xA6, 0xFF, 0xA3, 0xFF, 0xAA, 0xFF, 0xA6, 0xFF, 0xAF, 0xFF, 0xAC, 0xFF,
912  0xB4, 0xFF, 0xB5, 0xFF, 0xB9, 0xFF, 0xBE, 0xFF, 0xC2, 0xFF, 0xC5, 0xFF,
913  0xCD, 0xFF, 0xCF, 0xFF, 0xD5, 0xFF, 0xDC, 0xFF, 0xDE, 0xFF, 0xE7, 0xFF,
914  0xEB, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xFB, 0xFF, 0x03, 0x00, 0x08, 0x00,
915  0x0E, 0x00, 0x13, 0x00, 0x18, 0x00, 0x21, 0x00, 0x21, 0x00, 0x2C, 0x00,
916  0x2B, 0x00, 0x35, 0x00, 0x35, 0x00, 0x3F, 0x00, 0x3D, 0x00, 0x46, 0x00,
917  0x46, 0x00, 0x4B, 0x00, 0x4D, 0x00, 0x52, 0x00, 0x52, 0x00, 0x55, 0x00,
918  0x57, 0x00, 0x56, 0x00, 0x5C, 0x00, 0x59, 0x00, 0x59, 0x00, 0x5C, 0x00,
919  0x56, 0x00, 0x5D, 0x00, 0x55, 0x00, 0x59, 0x00, 0x52, 0x00, 0x55, 0x00,
920  0x4F, 0x00, 0x4D, 0x00, 0x4C, 0x00, 0x46, 0x00, 0x43, 0x00, 0x43, 0x00,
921  0x37, 0x00, 0x3B, 0x00, 0x31, 0x00, 0x2E, 0x00, 0x2A, 0x00, 0x24, 0x00,
922  0x1E, 0x00, 0x1C, 0x00, 0x11, 0x00, 0x12, 0x00, 0x08, 0x00, 0x04, 0x00,
923  0xFF, 0xFF, 0xF9, 0xFF, 0xF2, 0xFF, 0xF2, 0xFF, 0xE4, 0xFF, 0xE7, 0xFF,
924  0xDD, 0xFF, 0xDA, 0xFF, 0xD5, 0xFF, 0xD1, 0xFF, 0xC9, 0xFF, 0xCC, 0xFF,
925  0xBF, 0xFF, 0xC4, 0xFF, 0xB9, 0xFF, 0xBC, 0xFF, 0xB4, 0xFF, 0xB6, 0xFF,
926  0xB0, 0xFF, 0xB0, 0xFF, 0xAE, 0xFF, 0xAB, 0xFF, 0xAD, 0xFF, 0xAA, 0xFF,
927  0xAB, 0xFF, 0xAA, 0xFF, 0xAA, 0xFF, 0xAC, 0xFF, 0xAC, 0xFF, 0xAE, 0xFF,
928  0xAF, 0xFF, 0xB1, 0xFF, 0xB4, 0xFF, 0xB5, 0xFF, 0xBA, 0xFF, 0xBB, 0xFF,
929  0xC0, 0xFF, 0xC2, 0xFF, 0xC9, 0xFF, 0xC7, 0xFF, 0xD3, 0xFF, 0xD1, 0xFF,
930  0xDA, 0xFF, 0xDC, 0xFF, 0xE2, 0xFF, 0xE7, 0xFF, 0xEC, 0xFF, 0xF2, 0xFF,
931  0xF5, 0xFF, 0xFC, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x0D, 0x00, 0x10, 0x00,
932  0x15, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x25, 0x00, 0x2A, 0x00, 0x2B, 0x00,
933  0x33, 0x00, 0x33, 0x00, 0x3C, 0x00, 0x3A, 0x00, 0x41, 0x00, 0x43, 0x00,
934  0x46, 0x00, 0x48, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x50, 0x00, 0x4E, 0x00,
935  0x51, 0x00, 0x50, 0x00, 0x53, 0x00, 0x51, 0x00, 0x50, 0x00, 0x52, 0x00,
936  0x4F, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x48, 0x00, 0x4C, 0x00, 0x45, 0x00,
937  0x44, 0x00, 0x42, 0x00, 0x3D, 0x00, 0x3B, 0x00, 0x36, 0x00, 0x34, 0x00,
938  0x2D, 0x00, 0x2D, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1B, 0x00, 0x1A, 0x00,
939  0x13, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x06, 0x00, 0xFE, 0xFF, 0xFD, 0xFF,
940  0xF4, 0xFF, 0xF2, 0xFF, 0xEC, 0xFF, 0xE6, 0xFF, 0xE5, 0xFF, 0xDC, 0xFF,
941  0xDC, 0xFF, 0xD4, 0xFF, 0xD3, 0xFF, 0xCD, 0xFF, 0xCB, 0xFF, 0xC6, 0xFF,
942  0xC4, 0xFF, 0xC1, 0xFF, 0xBD, 0xFF, 0xBD, 0xFF, 0xB8, 0xFF, 0xB8, 0xFF,
943  0xB7, 0xFF, 0xB2, 0xFF, 0xB6, 0xFF, 0xB2, 0xFF, 0xB3, 0xFF, 0xB2, 0xFF,
944  0xB3, 0xFF, 0xB2, 0xFF, 0xB7, 0xFF, 0xB2, 0xFF, 0xB9, 0xFF, 0xB7, 0xFF,
945  0xBA, 0xFF, 0xBE, 0xFF, 0xBD, 0xFF, 0xC4, 0xFF, 0xC4, 0xFF, 0xC8, 0xFF,
946  0xCB, 0xFF, 0xD1, 0xFF, 0xD0, 0xFF, 0xDB, 0xFF, 0xD7, 0xFF, 0xE2, 0xFF,
947  0xE2, 0xFF, 0xEB, 0xFF, 0xEA, 0xFF, 0xF3, 0xFF, 0xF5, 0xFF, 0xFC, 0xFF,
948  0x00, 0x00, 0x03, 0x00, 0x0A, 0x00, 0x0C, 0x00, 0x15, 0x00, 0x16, 0x00,
949  0x19, 0x00, 0x23, 0x00, 0x20, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2D, 0x00,
950  0x35, 0x00, 0x35, 0x00, 0x39, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x40, 0x00,
951  0x45, 0x00, 0x42, 0x00, 0x49, 0x00, 0x45, 0x00, 0x4B, 0x00, 0x47, 0x00,
952  0x4C, 0x00, 0x47, 0x00, 0x4C, 0x00, 0x46, 0x00, 0x4C, 0x00, 0x45, 0x00,
953  0x46, 0x00, 0x46, 0x00, 0x3F, 0x00, 0x45, 0x00, 0x3A, 0x00, 0x3F, 0x00,
954  0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x2E, 0x00, 0x2D, 0x00, 0x25, 0x00,
955  0x26, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x16, 0x00, 0x14, 0x00, 0x0D, 0x00,
956  0x0C, 0x00, 0x03, 0x00, 0x02, 0x00, 0xFC, 0xFF, 0xF7, 0xFF, 0xF5, 0xFF,
957  0xED, 0xFF, 0xEE, 0xFF, 0xE2, 0xFF, 0xE6, 0xFF, 0xDC, 0xFF, 0xDC, 0xFF,
958  0xD8, 0xFF, 0xD1, 0xFF, 0xD2, 0xFF, 0xCC, 0xFF, 0xCA, 0xFF, 0xC9, 0xFF,
959  0xC2, 0xFF, 0xC6, 0xFF, 0xBC, 0xFF, 0xC4, 0xFF, 0xB8, 0xFF, 0xC2, 0xFF,
960  0xB6, 0xFF, 0xBE, 0xFF, 0xB7, 0xFF, 0xBC, 0xFF, 0xB9, 0xFF, 0xBC, 0xFF,
961  0xB9, 0xFF, 0xBE, 0xFF, 0xBC, 0xFF, 0xC0, 0xFF, 0xC0, 0xFF, 0xC2, 0xFF,
962  0xC6, 0xFF, 0xC5, 0xFF, 0xCD, 0xFF, 0xC9, 0xFF, 0xD4, 0xFF, 0xCF, 0xFF,
963  0xDA, 0xFF, 0xD6, 0xFF, 0xE2, 0xFF, 0xDE, 0xFF, 0xE8, 0xFF, 0xE8, 0xFF,
964  0xEF, 0xFF, 0xF1, 0xFF, 0xF7, 0xFF, 0xF9, 0xFF, 0x00, 0x00, 0x02, 0x00,
965  0x08, 0x00, 0x0B, 0x00, 0x10, 0x00, 0x13, 0x00, 0x19, 0x00, 0x1B, 0x00,
966  0x1F, 0x00, 0x25, 0x00, 0x25, 0x00, 0x2B, 0x00, 0x2D, 0x00, 0x30, 0x00,
967  0x34, 0x00, 0x34, 0x00, 0x3A, 0x00, 0x37, 0x00, 0x40, 0x00, 0x3B, 0x00,
968  0x40, 0x00, 0x41, 0x00, 0x40, 0x00, 0x43, 0x00, 0x42, 0x00, 0x43, 0x00,
969  0x42, 0x00, 0x44, 0x00, 0x3E, 0x00, 0x44, 0x00, 0x3D, 0x00, 0x41, 0x00,
970  0x3A, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x37, 0x00, 0x33, 0x00, 0x32, 0x00,
971  0x2E, 0x00, 0x2B, 0x00, 0x28, 0x00, 0x24, 0x00, 0x22, 0x00, 0x1D, 0x00,
972  0x19, 0x00, 0x16, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x09, 0x00, 0x06, 0x00,
973  0x02, 0x00, 0xFD, 0xFF, 0xFA, 0xFF, 0xF6, 0xFF, 0xF0, 0xFF, 0xF0, 0xFF,
974  0xE7, 0xFF, 0xE9, 0xFF, 0xDF, 0xFF, 0xE3, 0xFF, 0xD8, 0xFF, 0xDB, 0xFF,
975  0xD4, 0xFF, 0xD3, 0xFF, 0xD0, 0xFF, 0xCC, 0xFF, 0xCD, 0xFF, 0xC6, 0xFF,
976  0xCB, 0xFF, 0xC2, 0xFF, 0xC6, 0xFF, 0xC2, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF,
977  0xBF, 0xFF, 0xC3, 0xFF, 0xBE, 0xFF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC4, 0xFF,
978  0xC2, 0xFF, 0xC6, 0xFF, 0xC6, 0xFF, 0xC6, 0xFF, 0xCD, 0xFF, 0xC9, 0xFF,
979  0xD2, 0xFF, 0xCE, 0xFF, 0xD5, 0xFF, 0xD9, 0xFF, 0xDD, 0xFF, 0xE2, 0xFF,
980  0xE7, 0xFF, 0xE9, 0xFF, 0xF1, 0xFF, 0xF1, 0xFF, 0xF5, 0xFF, 0xFA, 0xFF,
981  0xF9, 0xFF, 0x00, 0x00, 0xFD, 0xFF
982 };
983 
987 
988 BEGIN_EVENT_TABLE(ProgressDialog, wxDialogWrapper)
989  EVT_BUTTON(wxID_CANCEL, ProgressDialog::OnCancel)
990  EVT_BUTTON(wxID_OK, ProgressDialog::OnStop)
991  EVT_CLOSE(ProgressDialog::OnCloseWindow)
993 
994 //
995 // Constructor
996 //
998 : wxDialogWrapper()
999 {
1000 }
1001 
1002 ProgressDialog::ProgressDialog(const wxString & title,
1003  const wxString & message /* = wxEmptyString*/,
1004  int flags /* = pdlgDefaultFlags */,
1005  const wxString & sRemainingLabelText /* = wxEmptyString */)
1006 : wxDialogWrapper()
1007 {
1008  Create(title, message, flags, sRemainingLabelText);
1009 }
1010 
1011 ProgressDialog::ProgressDialog(const wxString & title,
1012  const MessageTable &columns,
1013  int flags /* = pdlgDefaultFlags */,
1014  const wxString & sRemainingLabelText /* = wxEmptyString */)
1015 : wxDialogWrapper()
1016 {
1017  Create(title, columns, flags, sRemainingLabelText);
1018 }
1019 
1020 //
1021 // Destructor
1022 //
1024 {
1025  // Delete the window disabler before hiding the dialog to allow
1026  // focus to return to the original window.
1027  mDisable.reset();
1028 
1029  if (IsShown())
1030  {
1031  Show(false);
1032 
1033  Beep();
1034  }
1035 
1036 #if defined(__WXGTK__)
1037  // Under GTK, when applying any effect that prompts the user, it's more than
1038  // like that FindFocus() will return NULL. So, make sure something has focus.
1039  if (GetParent()) {
1040  GetParent()->SetFocus();
1041  }
1042 #endif
1043 
1044  // Restore saved focus, but only if the window still exists.
1045  //
1046  // It is possible that it was a deferred deletion and it was deleted since
1047  // we captured the focused window. So, we need to verify that the window
1048  // still exists by searching all of the wxWidgets windows. It's the only
1049  // sure way.
1050  if (mHadFocus && SearchForWindow(wxTopLevelWindows, mHadFocus)) {
1051  mHadFocus->SetFocus();
1052  }
1053 }
1054 
1056 {
1057  // There's a problem where the focus is not returned to the window that had
1058  // it before creating this object. The reason is because the focus events
1059  // that are sent to the parent window after the wxWindowDisabler are created
1060  // are tossed and focus will not get restored to the parent once the disabler
1061  // is deleted. (See bug #1173 for more info)
1062  //
1063  // So, we capture and restore the focus ourselves.
1064  mHadFocus = wxWindow::FindFocus();
1065 
1066 #if defined(__WXGTK__)
1067  // Under GTK, when applying any effect that prompts the user, it's more than
1068  // likely that FindFocus() will return NULL. So, make sure something has focus.
1069  if (GetParent())
1070  {
1071  GetParent()->SetFocus();
1072  }
1073 #endif
1074 }
1075 
1077 {
1078  mLastValue = 0;
1079 
1080  mStartTime = wxGetLocalTimeMillis().GetValue();
1083  mCancel = false;
1084  mStop = false;
1085 
1086  // Because wxGTK is very sensitive about maintaining focus when
1087  // this window is not shown, we always show it. But, since we
1088  // want a 500ms delay before it's actually visible for those
1089  // quick tasks, we show it as transparent. If the initial
1090  // delay is exceeded, then we reset the dialog to full opacity.
1091  SetTransparent(0);
1092  mIsTransparent = true;
1093 
1094  auto button = FindWindowById(wxID_CANCEL, this);
1095  if (button)
1096  button->Enable();
1097  button = FindWindowById(wxID_OK, this);
1098  if (button)
1099  button->Enable();
1100 
1101  wxDialogWrapper::Show(true);
1102 }
1103 
1104 // Add a NEW text column each time this is called.
1105 void ProgressDialog::AddMessageAsColumn(wxBoxSizer * pSizer,
1106  const MessageColumn & column,
1107  bool bFirstColumn) {
1108 
1109  // Assuming that we don't want empty columns, bail out if there is no text.
1110  if (column.empty())
1111  return;
1112 
1113  // Join strings
1114  auto sText = column[0];
1115  std::for_each( column.begin() + 1, column.end(),
1116  [&](const wxString &text) { sText += wxT("\n") + text; });
1117 
1118  // Create a statictext object and add to the sizer
1119  wxStaticText* oText = safenew wxStaticText(this,
1120  wxID_ANY,
1121  sText,
1122  wxDefaultPosition,
1123  wxDefaultSize,
1124  wxALIGN_LEFT);
1125  oText->SetName(sText); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1126 
1127  // If this is the first column then set the mMessage pointer so non-TimerRecord usages
1128  // will still work correctly in SetMessage()
1129  if (bFirstColumn) {
1130  mMessage = oText;
1131  }
1132 
1133  pSizer->Add(oText, 1, wxEXPAND | wxALL, 5);
1134 }
1135 
1136 bool ProgressDialog::Create(const wxString & title,
1137  const wxString & message /* = wxEmptyString */,
1138  int flags /* = pdlgDefaultFlags */,
1139  const wxString & sRemainingLabelText /* = wxEmptyString */)
1140 {
1141  MessageTable columns(1);
1142  columns.back().push_back(message);
1143  auto result = Create(title, columns, flags, sRemainingLabelText);
1144 
1145  if (result) {
1146  // Record some values used in case of change of message
1147  // TODO: make the following work in case of message tables
1148  wxClientDC dc(this);
1149  dc.GetMultiLineTextExtent(message, &mLastW, &mLastH);
1150  }
1151 
1152  return result;
1153 }
1154 
1155 bool ProgressDialog::Create(const wxString & title,
1156  const MessageTable & columns,
1157  int flags /* = pdlgDefaultFlags */,
1158  const wxString & sRemainingLabelText /* = wxEmptyString */)
1159 {
1160  Init();
1161 
1162  wxWindow *parent = GetParentForModalDialog(NULL, 0);
1163 
1164  // Set this boolean to indicate if we are using the "Elapsed" labels
1166  // Set this boolean to indicate if we confirm the Cancel/Stop actions
1167  m_bConfirmAction = (flags & pdlgConfirmStopCancel)!=0;
1168 
1169  bool success = wxDialogWrapper::Create(parent,
1170  wxID_ANY,
1171  title,
1172  wxDefaultPosition,
1173  wxDefaultSize,
1174  wxDEFAULT_DIALOG_STYLE |
1175  wxFRAME_FLOAT_ON_PARENT);
1176  if (!success)
1177  {
1178  return false;
1179  }
1180 
1181  SetName(GetTitle()); // This was added for NVDA screen reader and may now be redundant.
1182  SetExtraStyle(GetExtraStyle() | wxWS_EX_TRANSIENT); // Ancient code. Is it still required?
1183 
1184  {
1185  wxWindow *window;
1186 
1187  // There may be more than one column, so create a BoxSizer container
1188  auto uColSizer = std::make_unique<wxBoxSizer>(wxHORIZONTAL);
1189  auto colSizer = uColSizer.get();
1190 
1191  // TODO: this setting-up of a grid of text in a sizer might be worth
1192  // extracting as a utility for building other dialogs.
1193  {
1194  bool bFirstCol = true;
1195  for (const auto &column : columns) {
1196  AddMessageAsColumn(colSizer, column, bFirstCol);
1197  bFirstCol = false;
1198  }
1199  }
1200 
1201  // and put message column(s) into a main vertical sizer.
1202  auto vertSizer = std::make_unique<wxBoxSizer>(wxVERTICAL);
1203  vertSizer->Add(uColSizer.release(), 1, wxEXPAND | wxALL, 10);
1204 
1205  mGauge = safenew wxGauge(this,
1206  wxID_ANY,
1207  1000,
1208  wxDefaultPosition,
1209  wxDefaultSize,
1210  wxGA_HORIZONTAL);
1211  vertSizer->Add(mGauge, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, 10);
1212 
1213  {
1214  auto uGridSizer = std::make_unique<wxFlexGridSizer>(2, 2, 10, 10);
1215  // Only one row if we are not going to show the elapsed time
1216  if (m_bShowElapsedTime == false) {
1217  uGridSizer = std::make_unique<wxFlexGridSizer>(1, 2, 10, 10);
1218  }
1219  auto gridSizer = uGridSizer.get();
1220 
1221  if (m_bShowElapsedTime) {
1222  window = safenew wxStaticText(this,
1223  wxID_ANY,
1224  _("Elapsed Time:"),
1225  wxDefaultPosition,
1226  wxDefaultSize,
1227  wxALIGN_RIGHT);
1228 
1229  window->SetName(window->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1230  gridSizer->Add(window, 0, wxALIGN_RIGHT);
1231 
1232  mElapsed = safenew wxStaticText(this,
1233  wxID_ANY,
1234  wxT("00:00:00"),
1235  wxDefaultPosition,
1236  wxDefaultSize,
1237  wxALIGN_LEFT);
1238 
1239  mElapsed->SetName(mElapsed->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1240  gridSizer->Add(mElapsed, 0, wxALIGN_LEFT);
1241  }
1242 
1243  // Customised "Remaining" label text
1244  wxString sRemainingText = sRemainingLabelText;
1245  if (sRemainingText == wxEmptyString) {
1246  sRemainingText = _("Remaining Time:");
1247  }
1248 
1249  window = safenew wxStaticText(this,
1250  wxID_ANY,
1251  sRemainingText,
1252  wxDefaultPosition,
1253  wxDefaultSize,
1254  wxALIGN_RIGHT);
1255  window->SetName(window->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1256  gridSizer->Add(window, 0, wxALIGN_RIGHT);
1257 
1258  mRemaining = safenew wxStaticText(this,
1259  wxID_ANY,
1260  wxT("00:00:00"),
1261  wxDefaultPosition,
1262  wxDefaultSize,
1263  wxALIGN_LEFT);
1264  mRemaining->SetName(mRemaining->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1265  gridSizer->Add(mRemaining, 0, wxALIGN_LEFT);
1266 
1267  vertSizer->Add(uGridSizer.release(), 0, wxALIGN_CENTER | wxLEFT | wxRIGHT | wxBOTTOM, 10);
1268  }
1269 
1270  {
1271  auto uButtonBar = std::make_unique<wxBoxSizer>(wxHORIZONTAL);
1272  auto buttonBarSizer = uButtonBar.get();
1273 
1274  if (!(flags & pdlgHideStopButton)) {
1275  window = safenew wxButton(this, wxID_OK, _("Stop"));
1276  buttonBarSizer->Add(window, 0, wxRIGHT, 10);
1277  }
1278  if (!(flags & pdlgHideCancelButton)) {
1279  window = safenew wxButton(this, wxID_CANCEL, _("Cancel"));
1280  buttonBarSizer->Add(window, 0, wxRIGHT, 10);
1281  }
1282  vertSizer->Add(uButtonBar.release(), 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, 10);
1283  }
1284 
1285  SetSizerAndFit(vertSizer.release());
1286  }
1287  Layout();
1288 
1289  Centre(wxCENTER_FRAME | wxBOTH);
1290 
1291  Reinit();
1292 
1293  // Even though we won't necessarily show the dialog due to the 500ms
1294  // delay, we MUST disable other windows/menus anyway since we run the risk
1295  // of allowing other tasks to run before this one is complete.
1296  //
1297  // Reviewed this code per Proposed Features #1, at
1298  // http://wiki.audacityteam.org/wiki/Proposal_Timer_Record_Improvements.
1299  // Note that this causes a problem for Timer Record wait dialog
1300  // (see TimerRecordDialog::RunWaitDialog()), because it makes it
1301  // impossible to do any editing, even in other open projects,
1302  // while waiting for Timer Record to start -- and then also
1303  // while it's recording, it has a ProgressDialog, so really,
1304  // no editing in any project until Timer Record finishes.
1305  mDisable = std::make_unique<wxWindowDisabler>(this);
1306 
1307  return true;
1308 }
1309 
1310 //
1311 // Update the time and, optionally, the message
1312 //
1313 ProgressResult ProgressDialog::Update(int value, const wxString & message)
1314 {
1315  if (mCancel)
1316  {
1317  // for compatibility with old Update, that returned false on cancel
1319  }
1320  else if (mStop)
1321  {
1322  return ProgressResult::Stopped;
1323  }
1324 
1325  wxLongLong_t now = wxGetLocalTimeMillis().GetValue();
1326  wxLongLong_t elapsed = now - mStartTime;
1327 
1328  if (elapsed < 500)
1329  {
1330  return ProgressResult::Success;
1331  }
1332 
1333  if (mIsTransparent)
1334  {
1335  SetTransparent(255);
1336  mIsTransparent = false;
1337  }
1338 
1339  if (value <= 0)
1340  {
1341  value = 1;
1342  }
1343 
1344  if (value > 1000)
1345  {
1346  value = 1000;
1347  }
1348 
1349  wxLongLong_t estimate = elapsed * 1000ll / value;
1350  wxLongLong_t remains = (estimate + mStartTime) - now;
1351 
1352  SetMessage(message);
1353 
1354  if (value != mLastValue)
1355  {
1356  mGauge->SetValue(value);
1357  mGauge->Update();
1358  mLastValue = value;
1359  }
1360 
1361  // Only update if a full second has passed or track progress is complete
1362  if ((now - mLastUpdate > 1000) || (value == 1000))
1363  {
1364  if (m_bShowElapsedTime) {
1365  wxTimeSpan tsElapsed(0, 0, 0, elapsed);
1366  mElapsed->SetLabel(tsElapsed.Format(wxT("%H:%M:%S")));
1367  mElapsed->SetName(mElapsed->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1368  mElapsed->Update();
1369  }
1370 
1371  wxTimeSpan tsRemains(0, 0, 0, remains);
1372  mRemaining->SetLabel(tsRemains.Format(wxT("%H:%M:%S")));
1373  mRemaining->SetName(mRemaining->GetLabel()); // fix for bug 577 (NVDA/Narrator screen readers do not read static text in dialogs)
1374  mRemaining->Update();
1375 
1376  mLastUpdate = now;
1377  }
1378 
1379  wxDialogWrapper::Update();
1380 
1381  // Copied from wx 3.0.2 generic progress dialog
1382  //
1383  // we have to yield because not only we want to update the display but
1384  // also to process the clicks on the cancel and skip buttons
1385  // NOTE: using YieldFor() this call shouldn't give re-entrancy problems
1386  // for event handlers not interested to UI/user-input events.
1387  //
1388  // LL: Added timer category to prevent extreme delays when processing effects
1389  // (and probably other things). I do not yet know why this happens and
1390  // I'm not too keen on having timer events processed here, but you do
1391  // what you have to do.
1392 
1393  // Nyquist effects call Update on every callback, but YieldFor is
1394  // quite slow on Linux / Mac, so don't call too frequently. (bug 1575)
1395  if ((now - mYieldTimer > 50) || (value == 1000)) {
1396  wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI | wxEVT_CATEGORY_USER_INPUT | wxEVT_CATEGORY_TIMER);
1397  mYieldTimer = now;
1398  }
1399 
1400  return ProgressResult::Success;
1401 }
1402 
1403 //
1404 // Update the time and, optionally, the message
1405 //
1406 ProgressResult ProgressDialog::Update(double current, const wxString & message)
1407 {
1408  return Update((int)(current * 1000), message);
1409 }
1410 
1411 //
1412 // Update the time and, optionally, the message
1413 //
1414 ProgressResult ProgressDialog::Update(wxULongLong_t current, wxULongLong_t total, const wxString & message)
1415 {
1416  if (total != 0)
1417  {
1418  return Update((int)(current * 1000 / total), message);
1419  }
1420  else
1421  {
1422  return Update(1000, message);
1423  }
1424 }
1425 
1426 //
1427 // Update the time and, optionally, the message
1428 //
1429 ProgressResult ProgressDialog::Update(wxLongLong current, wxLongLong total, const wxString & message)
1430 {
1431  if (total.GetValue() != 0)
1432  {
1433  return Update((int)(current.GetValue() * 1000ll / total.GetValue()), message);
1434  }
1435  else
1436  {
1437  return Update(1000, message);
1438  }
1439 }
1440 
1441 //
1442 // Update the time and, optionally, the message
1443 //
1444 ProgressResult ProgressDialog::Update(wxLongLong_t current, wxLongLong_t total, const wxString & message)
1445 {
1446  if (total != 0)
1447  {
1448  return Update((int)(current * 1000ll / total), message);
1449  }
1450  else
1451  {
1452  return Update(1000, message);
1453  }
1454 }
1455 
1456 //
1457 // Update the time and, optionally, the message
1458 //
1459 ProgressResult ProgressDialog::Update(int current, int total, const wxString & message)
1460 {
1461  if (total != 0)
1462  {
1463  return Update((int)(current * ((double)(1000.0 / total))), message);
1464  }
1465  else
1466  {
1467  return Update(1000, message);
1468  }
1469 }
1470 
1471 //
1472 // Update the time and, optionally, the message
1473 //
1474 ProgressResult ProgressDialog::Update(double current, double total, const wxString & message)
1475 {
1476  if (total != 0)
1477  {
1478  return Update((int)(current * 1000.0 / total), message);
1479  }
1480  else
1481  {
1482  return Update(1000, message);
1483  }
1484 }
1485 
1486 //
1487 // Update the message text
1488 //
1489 void ProgressDialog::SetMessage(const wxString & message)
1490 {
1491  if (!message.IsEmpty())
1492  {
1493  mMessage->SetLabel(message);
1494 
1495  int w, h;
1496  wxClientDC dc(mMessage);
1497  dc.GetMultiLineTextExtent(message, &w, &h);
1498 
1499  bool sizeUpdated = false;
1500  wxSize ds = GetClientSize();
1501 
1502  // TODO: make the following work in case of message tables
1503  if (w > mLastW)
1504  {
1505  ds.x += (w - mLastW);
1506  sizeUpdated = true;
1507  mLastW = w;
1508  }
1509 
1510  if (h > mLastH)
1511  {
1512  ds.y += (h - mLastH);
1513  sizeUpdated = true;
1514  mLastH = h;
1515  }
1516 
1517  if (sizeUpdated)
1518  {
1519 #if defined(__WXMAC__)
1520  wxSize sz = mMessage->GetSize();
1521  mMessage->SetMinSize(wxSize(wxMax(sz.x, mLastW), wxMax(sz.y, mLastH)));
1522 #endif
1523  // No need to adjust for the margin here since we only add
1524  // to the existing dimensions.
1525  ds.x = wxMax(wxMax(ds.x, mLastW), wxMax(ds.y, mLastH));
1526  SetClientSize(ds);
1527  wxDialogWrapper::Update();
1528  }
1529  }
1530 }
1531 
1532 //
1533 // Recursivaly search the window list for the given window.
1534 //
1535 bool ProgressDialog::SearchForWindow(const wxWindowList & list, const wxWindow *searchfor) const
1536 {
1537  for (auto win : list)
1538  {
1539  if (win == searchfor || SearchForWindow(win->GetChildren(), searchfor))
1540  {
1541  return true;
1542  }
1543  }
1544 
1545  return false;
1546 }
1547 
1548 void ProgressDialog::OnCancel(wxCommandEvent & WXUNUSED(event))
1549 {
1550  if (!ConfirmAction(_("Are you sure you wish to cancel?"), _("Confirm Cancel"), wxID_CANCEL)) {
1551  return;
1552  }
1553  FindWindowById(wxID_CANCEL, this)->Disable();
1554  mCancel = true;
1555 }
1556 
1557 void ProgressDialog::OnStop(wxCommandEvent & WXUNUSED(event))
1558 {
1559  if (!ConfirmAction(_("Are you sure you wish to stop?"), _("Confirm Stop"), wxID_OK)) {
1560  return;
1561  }
1562  FindWindowById(wxID_OK, this)->Disable();
1563  mCancel = false;
1564  mStop = true;
1565 }
1566 
1567 void ProgressDialog::OnCloseWindow(wxCloseEvent & WXUNUSED(event))
1568 {
1569  if (!ConfirmAction(_("Are you sure you wish to close?"), _("Confirm Close"))) {
1570  return;
1571  }
1572  mCancel = true;
1573 }
1574 
1576 {
1577  int after;
1578  bool should;
1579  wxString name;
1580 
1581  gPrefs->Read(wxT("/GUI/BeepOnCompletion"), &should, false);
1582  gPrefs->Read(wxT("/GUI/BeepAfterDuration"), &after, 60);
1583  gPrefs->Read(wxT("/GUI/BeepFileName"), &name, wxEmptyString);
1584 
1585  if (should && wxGetLocalTimeMillis().GetValue() - mStartTime > after * 1000)
1586  {
1587  wxBusyCursor busy;
1588  wxSound s;
1589 
1590  if (name.IsEmpty())
1591  {
1592  s.Create(sizeof(beep), beep);
1593  }
1594  else
1595  {
1596  s.Create(name);
1597  }
1598 
1599  if (s.IsOk())
1600  {
1601  s.Play(wxSOUND_SYNC);
1602  }
1603  }
1604 }
1605 
1606 // Confirm action taken by user.
1607 // Returns TRUE if the user confirms Yes
1608 bool ProgressDialog::ConfirmAction(const wxString & sPrompt,
1609  const wxString & sTitle,
1610  int iButtonID /* = -1 */) {
1611 
1612  // Check if confirmations are enabled?
1613  // If not then return TRUE
1614  if (m_bConfirmAction == false) {
1615  return true;
1616  }
1617 
1618  AudacityMessageDialog dlgMessage(this,
1619  sPrompt,
1620  sTitle,
1621  wxYES_NO | wxICON_QUESTION | wxNO_DEFAULT | wxSTAY_ON_TOP);
1622  int iAction = dlgMessage.ShowModal();
1623 
1624  bool bReturn = (iAction == wxID_YES);
1625  if ((bReturn == false) && (iButtonID > -1)) {
1626  // Set the focus back to the relevant button
1627  FindWindowById(iButtonID, this)->SetFocus();
1628  }
1629 
1630  return bReturn;
1631 }
1632 
1633 TimerProgressDialog::TimerProgressDialog(const wxLongLong_t duration,
1634  const wxString & title,
1635  const MessageTable & columns,
1636  int flags /* = pdlgDefaultFlags */,
1637  const wxString & sRemainingLabelText /* = wxEmptyString */)
1638 : ProgressDialog(title, columns, flags, sRemainingLabelText)
1639 {
1640  mDuration = duration;
1641 }
1642 
1644 {
1645  if (mCancel)
1646  {
1647  // for compatibility with old Update, that returned false on cancel
1649  }
1650  else if (mStop)
1651  {
1652  return ProgressResult::Stopped;
1653  }
1654 
1655  wxLongLong_t now = wxGetLocalTimeMillis().GetValue();
1656  wxLongLong_t elapsed = now - mStartTime;
1657 
1658  if (elapsed < 500)
1659  {
1660  return ProgressResult::Success;
1661  }
1662 
1663  if (mIsTransparent)
1664  {
1665  SetTransparent(255);
1666  mIsTransparent = false;
1667  }
1668 
1669  wxLongLong_t remains = mStartTime + mDuration - now;
1670 
1671  int nGaugeValue = (1000 * elapsed) / mDuration; // range = [0,1000]
1672  // Running in TimerRecordDialog::RunWaitDialog(), for some unknown reason,
1673  // nGaugeValue here is often a little over 1000.
1674  // From testing, it's never shown bigger than 1009, but
1675  // give it a little extra, to 1010.
1676  // wxASSERT((nGaugeValue >= 0) && (nGaugeValue <= 1000)); // This ought to work.
1677  // wxASSERT((nGaugeValue >= 0) && (nGaugeValue <= 1010));
1678  //
1679  // stf. Update was being called after wxMilliSleep(<ms>), which could be up to <ms>
1680  // beyond the completion time. My gusess is that the microsleep in RunWaitDialog was originally 10 ms
1681  // (same as other uses of Update) but was updated to kTimerInterval = 50 ms, thus triggering
1682  // the Assert (Bug 1367). By calling Update() before sleeping then I think nGaugeValue <= 1000 should work.
1683  wxASSERT((nGaugeValue >= 0) && (nGaugeValue <= 1000));
1684 
1685  if (nGaugeValue != mLastValue)
1686  {
1687  mGauge->SetValue(nGaugeValue);
1688  mGauge->Update();
1689  mLastValue = nGaugeValue;
1690  }
1691 
1692  // Only update if a full second has passed.
1693  if (now - mLastUpdate > 1000)
1694  {
1695  if (m_bShowElapsedTime) {
1696  wxTimeSpan tsElapsed(0, 0, 0, elapsed);
1697  mElapsed->SetLabel(tsElapsed.Format(wxT("%H:%M:%S")));
1698  mElapsed->Update();
1699  }
1700 
1701  wxTimeSpan tsRemains(0, 0, 0, remains);
1702  mRemaining->SetLabel(tsRemains.Format(wxT("%H:%M:%S")));
1703  mRemaining->Update();
1704 
1705  mLastUpdate = now;
1706  }
1707 
1708  // Copied from wx 3.0.2 generic progress dialog
1709  //
1710  // we have to yield because not only we want to update the display but
1711  // also to process the clicks on the cancel and skip buttons
1712  // NOTE: using YieldFor() this call shouldn't give re-entrancy problems
1713  // for event handlers not interested to UI/user-input events.
1714  //
1715  // LL: Added timer category to prevent extreme delays when processing effects
1716  // (and probably other things). I do not yet know why this happens and
1717  // I'm not too keen on having timer events processed here, but you do
1718  // what you have to do.
1719  wxEventLoopBase::GetActive()->YieldFor(wxEVT_CATEGORY_UI | wxEVT_CATEGORY_USER_INPUT | wxEVT_CATEGORY_TIMER);
1720 
1721  // MY: Added this after the YieldFor to check we haven't changed the outcome based on buttons pressed...
1722  auto iReturn = ProgressResult::Success;
1723  if (mCancel)
1724  {
1725  iReturn = ProgressResult::Cancelled;
1726  }
1727  else if (mStop)
1728  {
1729  iReturn = ProgressResult::Stopped;
1730  }
1731  return iReturn;
1732 }
ProgressResult
wxGauge * mGauge
bool ConfirmAction(const wxString &sPrompt, const wxString &sTitle, int iButtonID=-1)
ProgressDialog Class.
void Beep() const
bool Create(const wxString &title, const wxString &message=wxEmptyString, int flags=pdlgDefaultFlags, const wxString &sRemainingLabelText=wxEmptyString)
void OnStop(const CommandContext &context)
ProgressResult UpdateProgress()
wxWeakRef< wxWindow > mHadFocus
wxLongLong_t mYieldTimer
std::vector< MessageColumn > MessageTable
wxLongLong_t mDuration
std::unique_ptr< wxWindowDisabler > mDisable
#define safenew
Definition: Audacity.h:223
void OnStop(wxCommandEvent &e)
wxFileConfig * gPrefs
Definition: Prefs.cpp:72
wxLongLong_t mStartTime
bool SearchForWindow(const wxWindowList &list, const wxWindow *searchfor) const
wxStaticText * mRemaining
virtual ~ProgressDialog()
ProgressResult Update(int value, const wxString &message=wxEmptyString)
EVT_BUTTON(wxID_NO, DependencyDialog::OnNo) EVT_BUTTON(wxID_YES
void OnCloseWindow(wxCloseEvent &e)
_("Move Track &Down")+wxT("\t")+(GetActiveProject() -> GetCommandManager() ->GetKeyFromName(wxT("TrackMoveDown"))), OnMoveTrack) POPUP_MENU_ITEM(OnMoveTopID, _("Move Track to &Top")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveTop"))), OnMoveTrack) POPUP_MENU_ITEM(OnMoveBottomID, _("Move Track to &Bottom")+wxT("\t")+(GetActiveProject() ->GetCommandManager() ->GetKeyFromName(wxT("TrackMoveBottom"))), OnMoveTrack) void TrackMenuTable::OnSetName(wxCommandEvent &)
void OnCancel(wxCommandEvent &e)
void AddMessageAsColumn(wxBoxSizer *pSizer, const MessageColumn &column, bool bFirstColumn)
const wxChar * name
Definition: Distortion.cpp:94
wxStaticText * mMessage
bool Create(wxWindow *parent, wxWindowID id, const wxString &title, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxDEFAULT_DIALOG_STYLE, const wxString &name=_("Dialog"))
TimerProgressDialog(const wxLongLong_t duration, const wxString &title, const MessageTable &columns, int flags=pdlgDefaultFlags, const wxString &sRemainingLabelText=wxEmptyString)
END_EVENT_TABLE()
wxStaticText * mElapsed
ProgressDialog()
Methods for ProgressDialog.
void SetMessage(const wxString &message)
static const unsigned char beep[]
wxLongLong_t mLastUpdate
std::vector< wxString > MessageColumn