Merge branch 'development' into prerelease-14.2.0

This commit is contained in:
Theo Arends 2024-08-14 14:09:06 +02:00
commit 325c722ee1
481 changed files with 107330 additions and 62251 deletions

View File

@ -6,8 +6,8 @@
- [ ] The pull request is done against the latest development branch
- [ ] Only relevant files were touched
- [ ] Only one feature/fix was added per PR and the code change compiles without warnings
- [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.6
- [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.0
- [ ] The code change is tested and works with Tasmota core ESP8266 V.2.7.7
- [ ] The code change is tested and works with Tasmota core ESP32 V.3.0.4
- [ ] I accept the [CLA](https://github.com/arendst/Tasmota/blob/development/CONTRIBUTING.md#contributor-license-agreement-cla).
_NOTE: The code change must pass CI tests. **Your PR cannot be merged unless tests pass**_

View File

@ -8,7 +8,7 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| ------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | --------------------------- |
| MY_LANGUAGE en_GB | x | x / x | x | x | x | x |
| USE_IMPROV | x | x / x | x | x | x | x |
| USE_UFILESYS | - | - / x | - | - | - | - |
| USE_UFILESYS | - | - / x | - | - | - | - | Every ESP8266 > 1MB |
| USE_ARDUINO_OTA | - | - / - | - | - | - | - |
| USE_DOMOTICZ | - | x / x | x | x | x | - |
| USE_HOME_ASSISTANT | - | - / - | - | - | - | - |
@ -30,11 +30,14 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_SUNRISE | x | x / x | x | x | x | x |
| USE_RULES | x | x / x | x | x | x | x |
| USE_SCRIPT | - | - / - | - | - | - | - |
| USE_EXPRESSION | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB |
| SUPPORT_IF_STATEMENT | - | - / x | - | - | - | - | Every ESP32 + ESP8266 > 1MB |
| USE_EXPRESSION | - | x / x | - | - | - | - |
| SUPPORT_IF_STATEMENT | - | x / x | - | - | - | - |
| USE_HOTPLUG | - | - / - | - | - | - | - |
| USE_PROMETHEUS | - | - / - | - | - | - | - |
| USE_PING | - | - / - | - | - | - | - |
| USE_HDMI_CEC | - | - / - | - | - | - | - |
| USE_MAGIC_SWITCH | - | - / x | - | - | - | - |
| USE_GPIO_VIEWER | - | - / x | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| ROTARY_V1 | - | x / x | - | x | - | - |
@ -105,6 +108,9 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_HTU | - | - / x | - | x | - | - |
| USE_BMP | - | - / x | - | x | - | - |
| USE_BME68X | - | - / x | - | x | - | - |
| USE_AMSX915 | - | - / - | - | - | - | - |
| USE_SPL06_007 | - | - / - | - | - | - | - |
| USE_QMP6988 | - | - / - | - | - | - | - |
| USE_BH1750 | - | - / x | - | x | - | - |
| USE_VEML6070 | - | - / x | - | x | - | - |
| USE_ADS1115 | - | - / x | - | x | - | - |
@ -192,11 +198,13 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_LUXV30B | - | - / - | - | - | - | - |
| USE_HMC5883L | - | - / - | - | - | - | - |
| USE_QMC5883L | - | - / - | - | - | - | - |
| USE_MAX17043 | - | - / - | - | - | - | - |
| | | | | | | |
| **Feature or Sensor** | **l** | **t** | **k** | **s** | **i** | **d** | **Remarks** |
| USE_SPI | - | - / - | - | - | - | x |
| USE_SPI | - | - / x | - | - | - | x |
| USE_RC522 | - | - / - | - | - | - | - |
| USE_CANSNIFFER | - | - / - | - | - | - | - |
| USE_SPI_LORA | - | - / x | - | - | - | - |
| USE_MHZ19 | - | - / x | - | x | - | - |
| USE_SENSEAIR | - | - / x | - | x | - | - |
| USE_PMS5003 | - | - / x | - | x | - | - |
@ -220,6 +228,9 @@ Note: the `minimal` variant is not listed as it shouldn't be used outside of the
| USE_LD2410 | - | - / - | - | - | - | - |
| USE_GM861 | - | - / - | - | - | - | - |
| USE_TCP_BRIDGE | - | - / - | - | - | - | - | zbbridge / zbbrdgpro |
| USE_HC8 | - | - / - | - | - | - | - |
| USE_PIPSOLAR | - | - / - | - | - | - | - |
| USE_WOOLIIS | - | - / - | - | - | - | - |
| | | | | | | |
| USE_NRF24 | - | - / - | - | - | - | - |
| USE_MIBLE | - | - / - | - | - | - | - |

View File

@ -3,6 +3,134 @@ All notable changes to this project will be documented in this file.
## [Released]
## [14.2.0] 20240814
- Release Rita
## [14.1.0.4] 20240814
### Added
- Support for Sonoff iFan04-H using template (#16402)
- Matter improve internal `inspect`for superclasses (#21824)
- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) (#21834)
- Berry `webserver_async` (#21836)
- NeoPool command `NPSetOption<x>` to enabled/disable data validation/connection statistics (#21850)
- Analog GPIO ``ADC Input`` with ``AdcGpio<pin> <start_range>,<end_range>,<margin>,1`` provide direct light control
- Analog GPIO ``ADC Voltage`` with ``AdcGpio<pin> <start_range>,<end_range>,<lowest_voltage>,<highest_voltage>`` provide energy monitoring with dc voltage
- Analog GPIO ``ADC Current`` with ``AdcGpio<pin> <start_range>,<end_range>,<lowest_current>,<highest_current>`` provide energy monitoring with dc voltage
- Berry new type "addr" to ctypes mapping (#21883)
- Berry `file.savecode()` (#21884)
- Berry `solidify.nocompact()` and reduce size of Matter UI (#21885)
- Berry `zigbee.find()` (#21889)
- Berry `zigbee.started()` (#21895)
- Command ``AdcGpio<gpio> <parameters>`` to better support ADC configuration
- Rule and Scripter xdrv sensor polling
### Breaking Changed
- Berry `energy` module support for 8 phases and move to pseudo-arrays (#21887)
### Changed
- Berry consolidated constants for solidified classes reduces Flash size (#2185)
- Berry updated precompiled Windows binary (#21858)
- Matter improve encoding of attributes to reduce flash size (#21864)
- ESP32 platform update from 2024.07.11 to 2024.08.10 (#21893)
- ESP32 Framework (Arduino Core) from v3.0.2 to v3.0.4 (#21893)
- Refactored Analog driver to better support multiple channels
- Zigbee loads device data early before MCU startup (#21917)
- Rule and Scripter sensor polling
- GUI name of Analog<x> to ADC<x>
### Fixed
- Berry `light.get` for separate RGB/CT (#21818)
- Berry `bytes` setters and getters with negative offsets (#21835)
- Berry `file.write()` raises an exception on failure (ex: disk full) (#21849)
- Filesystem SD MMC free space display (#21869)
### Removed
- Berry internal: remove class from closure to simplify code (#21839)
## [14.1.0.3] 20240722
### Added
- ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase (#21695)
- Berry `tasmota.rtc("config_time")` (#21698)
- Berry `math.min()` and `math.max()` (#21705)
- Berry `FUNC_ANY_KEY` event calling `any_key()` (#21708)
- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second (#21711)
- Support for Sonoff POWCT Ring (#21131)
- NeoPool data validation and communication statistics default enabled for ESP32 only (#21721)
- `FUNC_BUTTON_PRESSED` now contains `press_counter` encoded in `XdrvMailbox.command_code` (#21724)
- Berry `int64` added `low32()` and `high32()` methods, used in Matter (#21728)
- Matter support for 'Generic Switch' based on Tasmota Buttons (#21731)
- Berry cam module and img class (#21743)
- Skip MQTT response if command is prefixed with underscore (#21740)
- Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` (#21740)
- Support for Wooliis Hall Effect Coulometer or Battery capacity monitor (#21732)
### Changed
- ESP32 support for energy margin checks, like ``MaxPower2`` per phase (#21695)
- ESP32 TM1621 number overflow from "9999" to "12E3" (#21131)
- ESP32 platform update from 2024.06.11 to 2024.07.10 (#21745)
- ESP32 platform update from 2024.07.10 to 2024.07.11 (#21765)
- Berry simplified `module persist` (#21812)
### Fixed
- Berry `bytes.resize()` for large sizes (#21716)
- On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 (#21726)
- ESP32 I2S fixes (#21770)
- ESP32 Resistive Touch xpt for 2 spi busses (#21814)
## [14.1.0.2] 20240627
### Added
- Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3``
- Berry `classof` extended to class methods (#21615)
- Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages (#21574)
- Matter support for Rain sensor (#21633)
- Matter internal debug option (#21634)
- Matter Fan support (virtual only) (#21637)
- Matter show event name in logs (#21649)
- Matter full support of events (#21698)
### Changed
- SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode``
- SML replace vars in descriptor and line (#21622)
- NeoPool using temperature as only frequently changing value for NPTeleperiod (#21628)
- NeoPool make compiler setting available by `user_config_override.h` (#21645)
- ESP32 MI32 improve parser (#21648)
- ESP8266 platform update from 2024.01.01 to 2024.06.00 (#21668)
- ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 (#21668)
- Matter refactor reading of multiple attributes to reduce memory pressure (#21675)
- ESP32 platform update from 2024.06.10 to 2024.06.11 (#21694)
- ESP32 Framework (Arduino Core) from v3.0.1 to v3.0.2 (#21694)
### Fixed
- Matter interverted attributes 0xFFF9 and 0xFFFB (#21636)
- Matter CASE Sigma1 resumption mode for faster reconnection (#21644)
- Shutter MQTT on inverted shutter (#21663)
- Scripter TCP server (#21660)
- Matter TLV.U8 unsigned encoding (#21672)
- Matter resumption final ack (#21673)
- ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE (#21496)
## [14.1.0.1] 20240611
### Added
- Berry solidification of `bytes` instances (#21558)
- Matter support for Air Quality sensors (#21559)
- Matter support for bridged Air Quality (#21597)
- HASPmota rounds to nearest int values passed as 'real' (#21599)
- Berry automatic rounding of float to int when calling C mapped functions (#21601)
- Berry add `math.round` (#21602)
- Support for QMP6988 temperature and pressure sensor
### Changed
- Matter refactoring of bridged devices (#21575)
- ESP32 Core3 platform update from 2024.05.13 to 2024.06.10 (#21569)
- Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain``
- Matter filter suffix automatically added for sensors (#21589)
- Display timing splash screen with display modes 1 to 5
- ESP32 MI32 refactoring, bugfixes, generic device scanning (#21603)
- Allow receive or send using SerialBridge
### Fixed
- Berry `input()` returns empty string and does not crash (#21565)
## [14.1.0] 20240603
- Release Rachel

View File

@ -139,7 +139,7 @@ In addition to @arendst the following code is mainly owned by:
| xsns_25_spl06-007_sensor | @rai68
| xsns_26_lm75ad | Andre Thomas
| xsns_27_apds9960 | Shawn Hymel
| xsns_28 |
| xsns_28_qmp6988 | @arendst
| xsns_29_mcp230xx | Andre Thomas
| xsns_30_mpr121 | Rene 'Renne' Bartsch
| xsns_31_ccs811 | Gerhard Mutz
@ -229,6 +229,7 @@ In addition to @arendst the following code is mainly owned by:
| xsns_112_ens210 | Christoph Friese
| xsns_113_hc8 | Daniel Maier
| xsns_114_amsx915 | Bastian Urschel
| xsns_115_wooliis | Luca Melette
| |
| xsns_127_esp32_sensors | @arendst
| |

View File

@ -32,7 +32,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
13 | USE_ADS1115 | xsns_12 | ADS1115 | 0x48 - 0x4B | Yes | 4-channel 16-bit A/D converter
14 | USE_INA219 | xsns_13 | INA219 | 0x40 - 0x41, 0x44 - 0x45 | | Low voltage current sensor
15 | USE_SHT3X | xsns_14 | SHT3X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x45 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHT4X | 0x44 - 0x46 | Yes | Temperature and Humidity sensor
15 | USE_SHT3X | xsns_14 | SHTCX | 0x70 | Yes | Temperature and Humidity sensor
16 | USE_TSL2561 | xsns_16 | TSL2561 | 0x29, 0x39, 0x49 | | Light intensity sensor
17 | USE_MGS | xsns_19 | Grove | 0x04 | | Multichannel gas sensor
@ -123,7 +123,7 @@ Index | Define | Driver | Device | Address(es) | Bus2 | Descrip
83 | USE_MAX17043 | xsns_110 | MAX17043 | 0x36 | | Fuel-gauge for 3.7 Volt Lipo battery
84 | USE_ENS16x | xsns_111 | ENS16x | 0x52 - 0x53 | | Gas (TVOC, eCO2) and air quality sensor
85 | USE_ENS210 | xsns_112 | ENS210 | 0x43 - 0x44 | | Temperature and humidity sensor
86 | USE_AMSX915 | xsns_114 | AMS5915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
86 | USE_AMSX915 | xsns_114 | AMS6915 | 0x28 | | Pressure (absolute/differential) and temperature sensor
87 | USE_SPL06_007 | xsns_25 | SPL06-007 | 0x76 | | Pressure and temperature sensor
88 | USE_QMP6988 | xsns_28 | QMP6988 | 0x56, 0x70 | Yes | Pressure and temperature sensor
NOTE: Bus2 supported on ESP32 only.

View File

@ -34,13 +34,13 @@ While fallback or downgrading is common practice it was never supported due to S
## Supported Core versions
This release will be supported from ESP8266/Arduino library Core version **2.7.6** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP8266/Arduino library Core version **2.7.7** due to reported security and stability issues on previous Core version. This will also support gzipped binaries.
This release will be supported from ESP32/Arduino library Core version **3.0.0**.
This release will be supported from ESP32/Arduino library Core version **3.0.4**.
Support of ESP8266 Core versions before 2.7.6 and ESP32 Core versions before 3.0.0 have been removed.
Support of ESP8266 Core versions before 2.7.7 and ESP32 Core versions before 3.0.4 have been removed.
### Known issues with v14.1.0
### Known issues with v14.2.0
Due to the change from ESP32 Arduino Core2/IDF4 to Arduino Core3/IDF5 not all functionality has been restored. The following features are known not to work on ESP32:
- Wifi Range Extender [#21200](https://github.com/arendst/Tasmota/issues/21200)
@ -60,7 +60,7 @@ Easy initial installation of Tasmota can be performed using the [Tasmota WebInst
## Provided Binary Downloads
### ESP8266 or ESP8285 based
The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.6**.
The following binary downloads have been compiled with ESP8266/Arduino library core version **2.7.7**.
- **tasmota.bin** = The Tasmota version with most drivers for 1M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota-4M.bin** = The Tasmota version with most drivers and filesystem for 4M+ flash.
@ -80,12 +80,12 @@ Latest released binaries can be downloaded from
- http://ota.tasmota.com/tasmota/release
Historical binaries can be downloaded from
- http://ota.tasmota.com/tasmota/release-14.1.0
- http://ota.tasmota.com/tasmota/release-14.2.0
The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmota.com/tasmota/release/tasmota.bin.gz``
### ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-S2 and ESP32-S3 based
The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.0**.
The following binary downloads have been compiled with ESP32/Arduino library core version **3.0.4**.
- **tasmota32.bin** = The Tasmota version with most drivers including additional sensors and KNX for 4M+ flash. **RECOMMENDED RELEASE BINARY**
- **tasmota32solo1.bin** = The Tasmota version with most drivers including additional sensors and KNX for single core ESP32 and 4M+ flash.
@ -109,7 +109,7 @@ Latest released binaries can be downloaded from
- https://ota.tasmota.com/tasmota32/release
Historical binaries can be downloaded from
- https://ota.tasmota.com/tasmota32/release-14.1.0
- https://ota.tasmota.com/tasmota32/release-14.2.0
The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasmota.com/tasmota32/release/tasmota32.bin``
@ -119,47 +119,100 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
[Complete list](BUILDS.md) of available feature and sensors.
## Changelog v14.1.0 Rachel
## Changelog v14.2.0 Rita
### Added
- Optional command ``WebRun`` (as WebQuery extension) [#21364](https://github.com/arendst/Tasmota/issues/21364)
- Support for Knx dimmer and color [#21434](https://github.com/arendst/Tasmota/issues/21434)
- SML FastExit for binary SML parsing [#21497](https://github.com/arendst/Tasmota/issues/21497)
- Berry add reuse of methods for interface-like code reuse [#21500](https://github.com/arendst/Tasmota/issues/21500)
- Support for Matter 1.3 Water leak detectors [#21456](https://github.com/arendst/Tasmota/issues/21456)
- Command ``AdcGpio<gpio> <parameters>`` to better support ADC configuration
- Support for QMP6988 temperature and pressure sensor
- Support for Sonoff WTS01 temperature sensor using SerialBridge in ``SSerialMode 3``
- Support for Sonoff iFan04-H using template [#16402](https://github.com/arendst/Tasmota/issues/16402)
- Support for Sonoff POWCT Ring [#21131](https://github.com/arendst/Tasmota/issues/21131)
- Support for Wooliis Hall Effect Coulometer or Battery capacity monitor [#21732](https://github.com/arendst/Tasmota/issues/21732)
- Analog GPIO ``ADC Input`` with ``AdcGpio<pin> <start_range>,<end_range>,<margin>,1`` provide direct light control
- Analog GPIO ``ADC Voltage`` with ``AdcGpio<pin> <start_range>,<end_range>,<lowest_voltage>,<highest_voltage>`` provide energy monitoring with dc voltage
- Analog GPIO ``ADC Current`` with ``AdcGpio<pin> <start_range>,<end_range>,<lowest_current>,<highest_current>`` provide energy monitoring with dc voltage
- Rule and Scripter xdrv sensor polling
- Skip MQTT response if command is prefixed with underscore [#21740](https://github.com/arendst/Tasmota/issues/21740)
- Skip MQTT response if commands are executed prefixed with ``Backlog2`` (no delay) or ``Backlog3`` [#21740](https://github.com/arendst/Tasmota/issues/21740)
- Extend command ``SetOption147 1`` to disable publish of IRReceived MQTT messages [#21574](https://github.com/arendst/Tasmota/issues/21574)
- NeoPool command `NPSetOption<x>` to enabled/disable data validation/connection statistics [#21850](https://github.com/arendst/Tasmota/issues/21850)
- NeoPool data validation and communication statistics default enabled for ESP32 only [#21721](https://github.com/arendst/Tasmota/issues/21721)
- ESP32 support for power and energy limit checks, like ``MaxEnergy2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695)
- Berry solidification of `bytes` instances [#21558](https://github.com/arendst/Tasmota/issues/21558)
- Berry automatic rounding of float to int when calling C mapped functions [#21601](https://github.com/arendst/Tasmota/issues/21601)
- Berry `math.round` [#21602](https://github.com/arendst/Tasmota/issues/21602)
- Berry `classof` extended to class methods [#21615](https://github.com/arendst/Tasmota/issues/21615)
- Berry `tasmota.rtc("config_time")` [#21698](https://github.com/arendst/Tasmota/issues/21698)
- Berry `math.min()` and `math.max()` [#21705](https://github.com/arendst/Tasmota/issues/21705)
- Berry `FUNC_ANY_KEY` event calling `any_key()` [#21708](https://github.com/arendst/Tasmota/issues/21708)
- Berry `FUNC_BUTTON_MULTI_PRESSED` event and make `FUNC_BUTTON_PRESSED` called only on state changes and once per second [#21711](https://github.com/arendst/Tasmota/issues/21711)
- Berry `int64` added `low32()` and `high32()` methods, used in Matter [#21728](https://github.com/arendst/Tasmota/issues/21728)
- Berry `webserver_async` [#21836](https://github.com/arendst/Tasmota/issues/21836)
- Berry cam module and img class [#21743](https://github.com/arendst/Tasmota/issues/21743)
- Berry new type "addr" to ctypes mapping [#21883](https://github.com/arendst/Tasmota/issues/21883)
- Berry `file.savecode()` [#21884](https://github.com/arendst/Tasmota/issues/21884)
- Berry `solidify.nocompact()` and reduce size of Matter UI [#21885](https://github.com/arendst/Tasmota/issues/21885)
- Berry `zigbee.find()` [#21889](https://github.com/arendst/Tasmota/issues/21889)
- Berry `zigbee.started()` [#21895](https://github.com/arendst/Tasmota/issues/21895)
- HASPmota rounds to nearest int values passed as 'real' [#21599](https://github.com/arendst/Tasmota/issues/21599)
- Matter support for Air Quality sensors [#21559](https://github.com/arendst/Tasmota/issues/21559)
- Matter support for bridged Air Quality [#21597](https://github.com/arendst/Tasmota/issues/21597)
- Matter internal debug option [#21634](https://github.com/arendst/Tasmota/issues/21634)
- Matter Fan support (virtual only) [#21637](https://github.com/arendst/Tasmota/issues/21637)
- Matter show event name in logs [#21649](https://github.com/arendst/Tasmota/issues/21649)
- Matter full support of events [#21698](https://github.com/arendst/Tasmota/issues/21698)
- Matter support for 'Generic Switch' based on Tasmota Buttons [#21731](https://github.com/arendst/Tasmota/issues/21731)
- Matter improve internal `inspect`for superclasses [#21824](https://github.com/arendst/Tasmota/issues/21824)
- Matter support for split lights (`SetOption68 1` and `SetOption37 128`) [#21834](https://github.com/arendst/Tasmota/issues/21834)
### Breaking Changed
- Berry `energy` module support for 8 phases and move to pseudo-arrays [#21887](https://github.com/arendst/Tasmota/issues/21887)
### Changed
- ESP32 Core3 platform update from 2024.05.11 to 2024.05.13 [#21524](https://github.com/arendst/Tasmota/issues/21524)
- GPIOViewer from v1.5.2 to v1.5.4
- On universal display remove default backlight power if a PWM channel is used for backlight
- TCP bridge increased baudrate selection [#21528](https://github.com/arendst/Tasmota/issues/21528)
- Support W5500 SPI ethernet using four SPI GPIOs only without IRQ and RESET
- ESP32 compiler option from `target-align` to `no-target-align` [#21407](https://github.com/arendst/Tasmota/issues/21407)
- ESP32 I2S audio improvements [#21433](https://github.com/arendst/Tasmota/issues/21433)
- Berry binary compiled with gcc [#21426](https://github.com/arendst/Tasmota/issues/21426)
- Berry allow easy solidification of external Berry [#21430](https://github.com/arendst/Tasmota/issues/21430)
- Berry change internal storage of parent class for methods [#21490](https://github.com/arendst/Tasmota/issues/21490)
- Berry coc parser keeps order of variables [#21542](https://github.com/arendst/Tasmota/issues/21542)
- ESP8266 platform update from 2024.01.01 to 2024.06.00 [#21668](https://github.com/arendst/Tasmota/issues/21668)
- ESP8266 Framework (Arduino Core) from v2.7.6 to v2.7.7 [#21668](https://github.com/arendst/Tasmota/issues/21668)
- ESP32 platform update from 2024.05.13 to 2024.08.10 [#21893](https://github.com/arendst/Tasmota/issues/21893)
- ESP32 Framework (Arduino Core) from v3.0.0 to v3.0.4 [#21893](https://github.com/arendst/Tasmota/issues/21893)
- Rule and Scripter sensor polling
- Refactored Analog driver to better support multiple channels
- GUI name of Analog<x> to ADC<x>
- Optional MQTT_TELE_RETAIN to Energy Margins message replaced by ``SensorRetain``
- Display timing splash screen with display modes 1 to 5
- Allow receive or send using SerialBridge
- SerialBridge command ``SSerialSend9`` replaced by ``SSerialMode``
- SML replace vars in descriptor and line [#21622](https://github.com/arendst/Tasmota/issues/21622)
- NeoPool using temperature as only frequently changing value for NPTeleperiod [#21628](https://github.com/arendst/Tasmota/issues/21628)
- NeoPool make compiler setting available by `user_config_override.h` [#21645](https://github.com/arendst/Tasmota/issues/21645)
- ESP32 support for energy margin checks, like ``MaxPower2`` per phase [#21695](https://github.com/arendst/Tasmota/issues/21695)
- ESP32 MI32 refactoring, bugfixes, generic device scanning [#21603](https://github.com/arendst/Tasmota/issues/21603)
- ESP32 MI32 improve parser [#21648](https://github.com/arendst/Tasmota/issues/21648)
- ESP32 TM1621 number overflow from "9999" to "12E3" [#21131](https://github.com/arendst/Tasmota/issues/21131)
- Zigbee loads device data early before MCU startup [#21917](https://github.com/arendst/Tasmota/issues/21917)
- Berry updated precompiled Windows binary [#21858](https://github.com/arendst/Tasmota/issues/21858)
- Berry simplified `module persist` [#21812](https://github.com/arendst/Tasmota/issues/21812)
- Berry consolidated constants for solidified classes reduces Flash size [#2185](https://github.com/arendst/Tasmota/issues/2185)
- Matter refactoring of bridged devices [#21575](https://github.com/arendst/Tasmota/issues/21575)
- Matter filter suffix automatically added for sensors [#21589](https://github.com/arendst/Tasmota/issues/21589)
- Matter support for Rain sensor [#21633](https://github.com/arendst/Tasmota/issues/21633)
- Matter refactor reading of multiple attributes to reduce memory pressure [#21675](https://github.com/arendst/Tasmota/issues/21675)
- Matter improve encoding of attributes to reduce flash size [#21864](https://github.com/arendst/Tasmota/issues/21864)
### Fixed
- Domoticz re-subscribe on MQTT reconnect. Regression from v13.4.0.3 [#21281](https://github.com/arendst/Tasmota/issues/21281)
- Watchdog restart or freeze if ``displaytext`` is more than 128 characters [#21401](https://github.com/arendst/Tasmota/issues/21401)
- Wrong timeout in `WebQuery` and `webclient` since Core3 [#21442](https://github.com/arendst/Tasmota/issues/21442)
- uDisplay Parallel display on Core3 [#21529](https://github.com/arendst/Tasmota/issues/21529)
- UfsServe watchdog on large folder [#21486](https://github.com/arendst/Tasmota/issues/21486)
- SML compile error when median-filter is disabled [#21495](https://github.com/arendst/Tasmota/issues/21495)
- Hydreon RG15 malformed JSON string [#21508](https://github.com/arendst/Tasmota/issues/21508)
- Telegram TLS fingerprint, remove CA validation [#21514](https://github.com/arendst/Tasmota/issues/21514)
- Zigbee crash when removing `ZbName` [#21449](https://github.com/arendst/Tasmota/issues/21449)
- Avoid connection errors when switching to safeboot to upload OTA firmware [#21428](https://github.com/arendst/Tasmota/issues/21428)
- ESP32 slow response when using UDP as in emulation [#21470](https://github.com/arendst/Tasmota/issues/21470)
- ESP32 BLE fix scanning [#21451](https://github.com/arendst/Tasmota/issues/21451)
- ESP32 I2S multiple fixes [#21511](https://github.com/arendst/Tasmota/issues/21511)
- I2S APLL not supported on all SOCs [#21483](https://github.com/arendst/Tasmota/issues/21483)
- Webradio crash with invalid url [#21446](https://github.com/arendst/Tasmota/issues/21446)
- Berry Leds matrix alternate more and error about 'bri' attribute [#21431](https://github.com/arendst/Tasmota/issues/21431)
- LVGL exception when using tjpegd [#21544](https://github.com/arendst/Tasmota/issues/21544)
- Matter auto-fix IPv6 link-local zone id when network reconnects [#21494](https://github.com/arendst/Tasmota/issues/21494)
- On universal display remove default backlight power if a single PWM channel is used for backlight. Regression from 14.0.0.1 [#21726](https://github.com/arendst/Tasmota/issues/21726)
- Shutter MQTT on inverted shutter [#21663](https://github.com/arendst/Tasmota/issues/21663)
- Scripter TCP server [#21660](https://github.com/arendst/Tasmota/issues/21660)
- Filesystem SD MMC free space display [#21869](https://github.com/arendst/Tasmota/issues/21869)
- ESP32 allow use of UART0 with enabled USB_CDC_CONSOLE [#21496](https://github.com/arendst/Tasmota/issues/21496)
- ESP32 I2S fixes [#21770](https://github.com/arendst/Tasmota/issues/21770)
- ESP32 Resistive Touch xpt for 2 spi busses [#21814](https://github.com/arendst/Tasmota/issues/21814)
- Berry `input()` returns empty string and does not crash [#21565](https://github.com/arendst/Tasmota/issues/21565)
- Berry `bytes.resize()` for large sizes [#21716](https://github.com/arendst/Tasmota/issues/21716)
- Berry `light.get` for separate RGB/CT [#21818](https://github.com/arendst/Tasmota/issues/21818)
- Berry `bytes` setters and getters with negative offsets [#21835](https://github.com/arendst/Tasmota/issues/21835)
- Berry `file.write()` raises an exception on failure (ex: disk full) [#21849](https://github.com/arendst/Tasmota/issues/21849)
- Matter interverted attributes 0xFFF9 and 0xFFFB [#21636](https://github.com/arendst/Tasmota/issues/21636)
- Matter CASE Sigma1 resumption mode for faster reconnection [#21644](https://github.com/arendst/Tasmota/issues/21644)
- Matter TLV.U8 unsigned encoding [#21672](https://github.com/arendst/Tasmota/issues/21672)
- Matter resumption final ack [#21673](https://github.com/arendst/Tasmota/issues/21673)
### Removed
- Support of old insecure fingerprint algorithm. Deprecated since v8.4.0 [#21417](https://github.com/arendst/Tasmota/issues/21417)
- Deprecated code from drivers, `USE_TTGO_WATCH` and `USE_M5STACK_CORE2` [#21533](https://github.com/arendst/Tasmota/issues/21533)
- Berry internal: remove class from closure to simplify code [#21839](https://github.com/arendst/Tasmota/issues/21839)

View File

@ -14,10 +14,6 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c3.cfg"
},
"frameworks": [

View File

@ -14,10 +14,6 @@
"bluetooth"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32c6.cfg"
},
"frameworks": [

View File

@ -8,12 +8,6 @@
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "dout",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -24,10 +18,6 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [

View File

@ -20,10 +20,6 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [

View File

@ -8,12 +8,6 @@
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -24,10 +18,6 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [

View File

@ -20,10 +20,6 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [

View File

@ -8,12 +8,6 @@
"f_cpu": "240000000L",
"f_flash": "80000000L",
"flash_mode": "qio",
"hwids": [
[
"0x303A",
"0x1001"
]
],
"mcu": "esp32s3",
"variant": "esp32s3",
"partitions": "partitions/esp32_partition_app2880k_fs320k.csv"
@ -24,10 +18,6 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [

View File

@ -20,10 +20,6 @@
"ethernet"
],
"debug": {
"default_tool": "esp-builtin",
"onboard_tools": [
"esp-builtin"
],
"openocd_target": "esp32s3.cfg"
},
"frameworks": [

View File

@ -150,9 +150,9 @@ void TasmotaSerial::setTransmitEnablePin(int tx_enable_pin) {
#ifdef ESP32
bool TasmotaSerial::freeUart(void) {
for (uint32_t i = SOC_UART_NUM -1; i >= 0; i--) {
for (uint32_t i = SOC_UART_HP_NUM -1; i >= 0; i--) {
if (0 == bitRead(tasmota_serial_uart_bitmap, i)) {
m_uart = i;
m_uart = uart_port_t(i);
bitSet(tasmota_serial_uart_bitmap, m_uart);
return true;
}

View File

@ -33,6 +33,12 @@
#ifdef ESP32
#include <HardwareSerial.h>
// IDF 5.2 has changed counting UART channels, SOC_UART_NUM includes now LP UARTS too for ESP32-C6 and -P4
#ifndef SOC_UART_HP_NUM
#define SOC_UART_HP_NUM SOC_UART_NUM // Set new define SOC_UART_HP_NUM in pre IDF 5.2 to SOC_UART_NUM
#endif
#endif
class TasmotaSerial : public Stream {
@ -109,7 +115,7 @@ class TasmotaSerial : public Stream {
uint32_t m_speed;
uint32_t m_config;
HardwareSerial *TSerial;
int m_uart = 0;
uart_port_t m_uart = uart_port_t(0);
#endif
};

View File

@ -1,4 +1,3 @@
#if defined(CAMERA_MODEL_WROVER_KIT)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
@ -14,6 +13,7 @@
#define Y4_GPIO_NUM 18
#define Y3_GPIO_NUM 5
#define Y2_GPIO_NUM 4
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
@ -33,12 +33,12 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
#elif defined(CAMERA_MODEL_ESP32S3_EYE)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 15
@ -73,6 +73,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -92,6 +93,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -111,6 +113,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -130,6 +133,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 17
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -149,6 +153,7 @@
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
@ -168,6 +173,7 @@
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
@ -187,6 +193,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@ -206,6 +213,7 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@ -225,6 +233,7 @@
#define Y4_GPIO_NUM 14
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@ -244,6 +253,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@ -263,6 +273,7 @@
#define Y4_GPIO_NUM 4
#define Y3_GPIO_NUM 14
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 27
#define HREF_GPIO_NUM 25
#define PCLK_GPIO_NUM 19
@ -282,6 +293,7 @@
#define Y4_GPIO_NUM 26
#define Y3_GPIO_NUM 13
#define Y2_GPIO_NUM 34
#define VSYNC_GPIO_NUM 5
#define HREF_GPIO_NUM 27
#define PCLK_GPIO_NUM 25
@ -302,12 +314,12 @@
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13
#elif defined(CAMERA_MODEL_TTGO_T_CAM_SIM)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM 18
#define XCLK_GPIO_NUM 14
@ -322,6 +334,7 @@
#define Y4_GPIO_NUM 8
#define Y3_GPIO_NUM 9
#define Y2_GPIO_NUM 11
#define VSYNC_GPIO_NUM 6
#define HREF_GPIO_NUM 7
#define PCLK_GPIO_NUM 13
@ -332,6 +345,27 @@
#define PCIE_TX_PIN 45
#define PCIE_RX_PIN 46
#define PCIE_LED_PIN 21
#elif defined(CAMERA_MODEL_XIAO_ESP32S3_SENSE)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 10
#define SIOD_GPIO_NUM 40
#define SIOC_GPIO_NUM 39
#define Y9_GPIO_NUM 48
#define Y8_GPIO_NUM 11
#define Y7_GPIO_NUM 12
#define Y6_GPIO_NUM 14
#define Y5_GPIO_NUM 16
#define Y4_GPIO_NUM 18
#define Y3_GPIO_NUM 17
#define Y2_GPIO_NUM 15
#define VSYNC_GPIO_NUM 38
#define HREF_GPIO_NUM 47
#define PCLK_GPIO_NUM 13
#else
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM -1
@ -347,6 +381,7 @@
#define Y4_GPIO_NUM -1
#define Y3_GPIO_NUM -1
#define Y2_GPIO_NUM -1
#define VSYNC_GPIO_NUM -1
#define HREF_GPIO_NUM -1
#define PCLK_GPIO_NUM -1

View File

@ -36,7 +36,7 @@ typedef struct LVGL_PARAMS {
uint8_t swap_color : 1;
uint8_t async_dma : 1; // force DMA completion before returning, avoid conflict with other devices on same bus. If set you should make sure the display is the only device on the bus
uint8_t busy_invert : 1;
uint8_t resvd_2 : 1;
uint8_t invert_bw : 1;
uint8_t resvd_3 : 1;
uint8_t resvd_4 : 1;
uint8_t resvd_5 : 1;

View File

@ -30,6 +30,7 @@
#include "tasmota_options.h"
extern int Cache_WriteBack_Addr(uint32_t addr, uint32_t size);
@ -290,6 +291,10 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
col_type = uCOLOR_BW;
} else {
col_type = uCOLOR_COLOR;
if (bpp == 16) {
fg_col = GetColorFromIndex(fg_col);
bg_col = GetColorFromIndex(bg_col);
}
}
str2c(&lp1, ibuff, sizeof(ibuff));
if (!strncmp(ibuff, "I2C", 3)) {
@ -368,11 +373,9 @@ uDisplay::uDisplay(char *lp) : Renderer(800, 600) {
splash_font = next_val(&lp1);
splash_size = next_val(&lp1);
fg_col = next_val(&lp1);
if (bpp == 16) {
fg_col = GetColorFromIndex(fg_col);
}
bg_col = next_val(&lp1);
if (bpp == 16) {
fg_col = GetColorFromIndex(fg_col);
bg_col = GetColorFromIndex(bg_col);
}
splash_xp = next_val(&lp1);
@ -705,6 +708,11 @@ void UfsCheckSDCardInit(void);
}
#endif
if ((epcoffs_full || epcoffs_part) && !(lutfsize || lutpsize)) {
// no lutfsize or lutpsize, but epcoffs_full or epcoffs_part
ep_mode = 3;
}
#ifdef UDSP_DEBUG
Serial.printf("Device : %s\n", dname);
Serial.printf("xs : %d\n", gxs);
@ -905,7 +913,7 @@ uint16_t index = 0;
SPI_CS_LOW
iob = dsp_cmds[cmd_offset++];
index++;
if (ep_mode == 1 && iob >= EP_RESET) {
if ((ep_mode == 1 || ep_mode == 3) && iob >= EP_RESET) {
// epaper pseudo opcodes
uint8_t args = dsp_cmds[cmd_offset++];
index++;
@ -1067,8 +1075,11 @@ Renderer *uDisplay::Init(void) {
wire = &Wire1;
}
#endif // ESP32
/*
if (i2c_sda != i2c_scl) {
wire->begin(i2c_sda, i2c_scl); // TODO: aren't I2C buses already initialized? Shouldn't this be moved to display driver?
}
*/
#ifdef UDSP_DEBUG
Serial.printf("I2C cmds: %d\n", dsp_ncmds);
#endif
@ -2010,11 +2021,15 @@ bool uDisplay::utouch_Init(char **name) {
attachInterrupt(ut_irq, ut_touch_irq, FALLING);
}
extern SPIClass *SpiBegin(uint32 bus);
if (ut_spi_nr == spi_nr) {
// same as display
ut_spi = uspi;
} else {
// not yet
ut_spi = nullptr;
#ifdef ESP32
ut_spi = SpiBegin(ut_spi_nr);
#endif
}
return ut_execute(ut_init_code);
}
@ -2181,6 +2196,16 @@ void uDisplay::pushColorsMono(uint16_t *data, uint16_t len, bool rgb16_swap) {
uint16_t rgb16_to_mono_mask = rgb16_swap ? RGB16_SWAP_TO_MONO : RGB16_TO_MONO;
for (uint32_t y = seta_yp1; y < seta_yp2; y++) {
seta_yp1++;
if (lvgl_param.invert_bw) {
for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
uint16_t color = *data++;
if (bpp == 1) color = (color & rgb16_to_mono_mask) ? 0 : 1;
drawPixel(x, y, color); // todo - inline the method to save speed
len--;
if (!len) return; // failsafe - exist if len (pixel number) is exhausted
}
} else {
for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
uint16_t color = *data++;
if (bpp == 1) color = (color & rgb16_to_mono_mask) ? 1 : 0;
@ -2190,6 +2215,7 @@ void uDisplay::pushColorsMono(uint16_t *data, uint16_t len, bool rgb16_swap) {
}
}
}
}
// swap high low byte
static inline void lvgl_color_swap(uint16_t *data, uint16_t len) { for (uint32_t i = 0; i < len; i++) (data[i] = data[i] << 8 | data[i] >> 8); }
@ -2203,7 +2229,7 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
//Serial.printf("push %x - %d - %d - %d\n", (uint32_t)data, len, not_swapped, lvgl_param.data);
// Isolating _UDPS_RGB to increase code sharing
// Isolating _UDSP_RGB to increase code sharing
//
// LVGL documentation suggest to call the following:
// lv_draw_sw_rgb565_swap() to invert bytes
@ -2219,6 +2245,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
// check that bytes count matches the size of area, and remove from inner loop
if ((seta_yp2 - seta_yp1) * (seta_xp2 - seta_xp2) > len) { return; }
uint16_t lenc = len;
if (cur_rot > 0) {
for (uint32_t y = seta_yp1; y < seta_yp2; y++) {
seta_yp1++;
@ -2226,8 +2254,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
uint16_t color = *data++;
if (!not_swapped) { color = color << 8 | color >> 8; }
drawPixel_RGB(x, y, color);
len--;
if (!len) return; // failsafe - exist if len (pixel number) is exhausted
lenc--;
if (!lenc) return; // failsafe - exist if len (pixel number) is exhausted
}
}
} else {
@ -2240,6 +2268,8 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
uint16_t color = *data++;
*fb_xy = color;
fb_xy++;
lenc--;
if (!lenc) break; // failsafe - exist if len (pixel number) is exhausted
}
} else {
for (uint32_t x = seta_xp1; x < seta_xp2; x++) {
@ -2247,14 +2277,19 @@ void uDisplay::pushColors(uint16_t *data, uint16_t len, boolean not_swapped) {
color = color << 8 | color >> 8;
*fb_xy = color;
fb_xy++;
lenc--;
if (!lenc) break; // failsafe - exist if len (pixel number) is exhausted
}
}
uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width + seta_xp1;
esp_cache_msync(flush_ptr, (seta_xp2 - seta_xp1) * 2, 0);
fb_y += _width;
seta_yp1++;
if (!lenc) break;
}
// using esp_cache_msync() to flush the PSRAM cache and ensure that all data is actually written to PSRAM
// from https://github.com/espressif/esp-idf/blob/636ff35b52f10e1a804a3760a5bd94e68f4b1b71/components/esp_lcd/rgb/esp_lcd_panel_rgb.c#L159
uint16_t * flush_ptr = rgb_fb + (int32_t)seta_yp1 * _width;
esp_cache_msync(flush_ptr, (seta_yp2 - seta_yp1) * _width * 2, 0);
}
#endif
return;
@ -3427,6 +3462,9 @@ void uDisplay::Init_EPD(int8_t p) {
if (ep_mode == 1) {
ClearFrameMemory(0xFF);
Updateframe_EPD();
} else if (ep_mode == 3) {
ClearFrameMemory(0xFF);
Updateframe_EPD();
} else {
ClearFrame_42();
}
@ -3516,7 +3554,7 @@ void uDisplay::SetLut(const unsigned char* lut) {
}
void uDisplay::Updateframe_EPD(void) {
if (ep_mode == 1) {
if (ep_mode == 1 || ep_mode == 3) {
switch (ep_update_mode) {
case DISPLAY_INIT_PARTIAL:
if (epc_part_cnt) {
@ -3545,15 +3583,33 @@ void uDisplay::DisplayFrame_29(void) {
}
void uDisplay::SetMemoryArea(int x_start, int y_start, int x_end, int y_end) {
spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION);
int x_start1 = (x_start >> 3) & 0xFF;
int x_end1 = (x_end >> 3) & 0xFF;
int y_start1 = y_start & 0xFF;
int y_start2 = (y_start >> 8) & 0xFF;
int y_end1 = y_end & 0xFF;
int y_end2 = (y_end >> 8) & 0xFF;
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
spi_data8_EPD((x_start >> 3) & 0xFF);
spi_data8_EPD((x_end >> 3) & 0xFF);
if (ep_mode == 3) {
spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION);
spi_data8_EPD(x_start1);
spi_data8_EPD(x_end1);
spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION);
spi_data8_EPD(y_start & 0xFF);
spi_data8_EPD((y_start >> 8) & 0xFF);
spi_data8_EPD(y_end & 0xFF);
spi_data8_EPD((y_end >> 8) & 0xFF);
spi_data8_EPD(y_end1);
spi_data8_EPD(y_end2);
spi_data8_EPD(y_start1);
spi_data8_EPD(y_start2);
} else {
spi_command_EPD(SET_RAM_X_ADDRESS_START_END_POSITION);
spi_data8_EPD(x_start1);
spi_data8_EPD(x_end1);
spi_command_EPD(SET_RAM_Y_ADDRESS_START_END_POSITION);
spi_data8_EPD(y_start1);
spi_data8_EPD(y_start2);
spi_data8_EPD(y_end1);
spi_data8_EPD(y_end2);
}
}
void uDisplay::SetFrameMemory(const unsigned char* image_buffer) {
@ -3567,12 +3623,27 @@ void uDisplay::SetFrameMemory(const unsigned char* image_buffer) {
}
void uDisplay::SetMemoryPointer(int x, int y) {
int x1;
int y1;
int y2;
if (ep_mode == 3) {
x1 = (x >> 3) & 0xFF;
y--;
y1 = y & 0xFF;
y2 = (y >> 8) & 0xFF;
} else {
x1 = (x >> 3) & 0xFF;
y1 = y & 0xFF;
y2 = (y >> 8) & 0xFF;
}
spi_command_EPD(SET_RAM_X_ADDRESS_COUNTER);
/* x point must be the multiple of 8 or the last 3 bits will be ignored */
spi_data8_EPD((x >> 3) & 0xFF);
spi_data8_EPD(x1);
spi_command_EPD(SET_RAM_Y_ADDRESS_COUNTER);
spi_data8_EPD(y & 0xFF);
spi_data8_EPD((y >> 8) & 0xFF);
spi_data8_EPD(y1);
spi_data8_EPD(y2);
}
#if 0

View File

@ -75,8 +75,9 @@ bool NtpServer::processOneRequest(uint32_t utc, uint32_t millisecs)
packet.receiveTimestampFraction = recvFract;
// ...and the transmit time.
// the latency has been between 135 and 175 microseconds in internal testing, so we harcode 150
uint32_t transFract = recvFract+(150*(10^3)/(2^32)); // microsec/((10^3)/(2^32))
// the latency has been between 135 and 175 microseconds in internal testing, so we hardcode 150
constexpr uint32_t latency = (150*1000) / (1LL << 32);
uint32_t transFract = recvFract + latency;
if (recvFract>transFract){
recvSecs++; //overflow
}

View File

@ -96,6 +96,10 @@ public:
int connect(const char *host, uint16_t port) override;
int connect(IPAddress ip, uint16_t port, int32_t timeout) { return connect(ip, port, 0);}
int connect(const char *host, uint16_t port, int32_t timeout) { return connect(host, port, 0);}
uint8_t connected() override;
void validate(const char *host, uint16_t port);

View File

@ -75,7 +75,7 @@
#if !defined(ESP_MAIL_DISABLE_NATIVE_ETHERNET)
#if defined(ESP32) && __has_include(<ETH.h>)
#if defined(ESP32) && __has_include(<esp_eth_driver.h>)
#include <ETH.h>
#define ESP_MAIL_ETH_IS_AVAILABLE
#elif defined(ESP8266) && defined(ESP8266_CORE_SDK_V3_X_X)

View File

@ -183,5 +183,13 @@ typedef int SerConfu8;
#define STATION_IF 0
// ESP32 needed define to support IDF 5.2 based Arduino builds
// Name has changed
#ifdef LCD_CAM_LCD_UPDATE_M
#define LCD_CAM_LCD_UPDATE_REG LCD_CAM_LCD_UPDATE_M
#endif // LCD_CAM_LCD_UPDATE_M
#endif // ESP32
#endif // __ESP8266TOESP32_H__

View File

@ -0,0 +1,30 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Before you create this issue**
This library takes compressed JPEG data and outputs pixels to your callback functions. If your problem is related to LCD displays, SD cards, or any other issue that has nothing to do with this library, please stop here. If you need help with your private or commercial project, please email me (bitbank@pobox.com) to ask about paid consulting. Github issues are for submitting actual bugs.
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Image file you're having trouble with**
If applicable, add images to help explain your problem.
**Additional context**
Add any other context about the problem here.

View File

@ -0,0 +1,8 @@
set(srcs
"src/JPEGDEC.cpp"
"src/jpeg.inl"
)
idf_component_register(SRCS ${srcs}
REQUIRES "jpegdec"
INCLUDE_DIRS "src"
)

View File

@ -0,0 +1,204 @@
Copyright 2020 BitBank Software, Inc. All rights reserved.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2020 BitBank Software, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

17
lib/libesp32/JPEGDEC/Makefile Executable file
View File

@ -0,0 +1,17 @@
CFLAGS=-D__LINUX__ -c -Wall -O2
LIBS =
CXX = g++
all: demo
demo: main.o JPEGDEC.o
$(CXX) main.o JPEGDEC.o $(LIBS) -o demo
main.o: main.cpp
$(CXX) $(CFLAGS) main.cpp
JPEGDEC.o: JPEGDEC.cpp
$(CXX) $(CFLAGS) JPEGDEC.cpp
clean:
rm -rf *.o demo

View File

@ -0,0 +1,63 @@
JPEGDEC<br>
-----------------------------------
Copyright (c) 2020 BitBank Software, Inc.<br>
Written by Larry Bank<br>
larry@bitbanksoftware.com<br>
<br>
**I optimize other people's code for a living. This library is a good example of the kind of work I do for my commercial clients; it contains many unique and clever optimizations that allows it to perform better than anything else available. I'm happy to contribute optimized libraries to the open source community in addition to working on commercial projects. Whatever platform you're using, I can make significant improvements to your native code. Please contact me so that I can show you how.**<br>
<br>
![JPEGDEC](/demo.jpg?raw=true "JPEGDEC")
<br>
I started working with image and video files around 1989 and soon turned my interest into a Document Imaging product based on my own imaging library. Over the years I added support for more and more formats until I had supported all of the standard ones, including DICOM. I sold my Document Imaging business in 1997. I started over with a new library design in 2000 and added even more formats. Over the years, I found uses for my imaging code in projects such as retro gaming. I recently went looking to see if there was a good JPEG viewer for Arduino and only found ones which sacrificed speed to work on MCUs with almost no RAM. I thought it would be possible to create an optimized JPEG decoder that could run on any MCU with at least 20K of RAM, so I started modifying my old JPEG code for this purpose. There are a lot of clever optimizations contained in the code that I kept as trade secrets for many years. I decided that it's time to share the code with the community. This code doesn't look like other JPEG libraries because I wrote it from a "blank sheet". It took many hundreds of hours of work to get it working correctly and find all of the optimizations. If you appreciate my work, please consider sponsoring me.
<br>
Features:<br>
---------<br>
- Supports any MCU with at least 20K of RAM (Cortex-M0+ is the simplest I've tested)
- Optimized for speed; the main limitation will be how fast you can copy the pixels to the display. You can use DMA assisted SPI to help.
- JPEG image data can come from memory (FLASH/RAM), SDCard or any media you provide.
- Simple class and callback design allows you to easily add JPEG support to any application.
- The C code doing the heavy lifting is completely portable and has no external dependencies.
- Includes fast downscaling options (1/2, 1/4, 1/8).
- Includes option to detect and decode the embedded Exif thumbnail
- Supports Baseline Huffman images (grayscale or YCbCr)<br>
- Includes optional Floyd-Steinberg dithering to 1, 2 or 4-bpp grayscale output; useful for e-paper displays<br>
<br>
<p align="center">
<img width="600" height="250" src="https://github.com/bitbank2/JPEGDEC/blob/master/perf.jpg?raw=true">
</p>
<br>
**A note about performance**<br>
The chart above gives you an idea of how the code performs on various MCUs with the different scaling options. The test image used is both large in dimension and large in terms of the compressed data size. The two factors that have the most influence on performance are the compressed data size and the output scaling options. This is because the time to decode JPEG data scales mostly linearly with the amount of data to decode. To get the fastest decode speed, choose the lowest acceptable quality for your image; this will produce the smallest compressed data size. When you must use an image that is too large, the scaling options allow you to display it at a lower resolution than the original.<br>
<br>
<p align="center">
<img width="720" height="568" src="https://github.com/bitbank2/JPEGDEC/blob/master/squirrel_dither.jpg?raw=true">
</p>
<br>
**Floyd-Steinberg dithering**<br>
I added the option to dither the output to 1, 2 or 4-bit per pixel grayscale using the FS error diffusion algorithm. It creates a pleasant output without visible blocking nor repeating patterns. This seemed useful for generating output suitable for high resolution e-paper displays. The image above was decoded from a 800x600 color JPEG and rendered as 2-bits per pixels (4 gray levels) on a 400x300 4.2" e-paper display. See the Wiki for info on how to use this option.
Acquiring JPEG files to play:
----------------------------
You'll notice that the images provided in the test_images folder have been turned into C code. Each byte is now in the form 0xAB so that it can be compiled into your program and stored in FLASH memory alongside your other code. You can use a command line tool I wrote called image_to_c (https://github.com/bitbank2/image_to_c) or an older Linux tool called xxd to convert a binary file into this type of text. Make sure to add a const/PROGMEM modifier in front of the JPEG data array to ensure that it gets written to FLASH and not RAM by your build environment.
The Callback functions:
-----------------------
One of the ways to allow this code to run on any embedded platform was to define a set of callback functions. These isolate the JPEG decoding logic from the display and file I/O. This allows the core code to run on any system, but you need to help it a little. At a minimum, your code must provide a function to draw (or store) each block of image pixels emitted by the library. If you're displaying a JPEG file from memory (RAM or FLASH), this is the only function you need to provide. In the examples folder there are multiple sketches to show how this is done on various display libraries. For reading from SD cards, 4 other functions must be provided: open, close, read, seek. There is an example for implementing these in the examples folder as well.
Note:
If you're using the ESP32 or ESP8266 (or another MCU which uses the Harvard Architecture) and decoding JPEG images stored in RAM or FLASH, you'll need to use the correct open function (openRAM or openFLASH). For MCUs based on the ARM Cortex-M, they are interchangeable.
The API:
--------
Please consult the Wiki for detailed info about each method exposed by the JPEGDEC class.
If you find this code useful, please consider becoming a sponsor or sending a donation.
[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=SR4F44J2UR8S4)

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 KiB

View File

@ -0,0 +1,104 @@
// A simple image slideshow which reads all the .JPG files from the root
// directory of a SD card and shows each for 1 second on an ILI9341 display.
#include <JPEGDEC.h>
#include <ILI9341_t3.h>
#include <Bounce.h>
#include <SD.h>
#define TFT_DC 9
#define TFT_CS 10
ILI9341_t3 tft = ILI9341_t3(TFT_CS, TFT_DC);
JPEGDEC jpeg;
// Setup - initialize ILI9341 display, wait for serial monitor, open SD card
void setup() {
pinMode(34, INPUT_PULLDOWN);
pinMode(33, OUTPUT);
digitalWrite(33, HIGH); // pushbuttons short pins 33 & 34 together
Serial.begin(115200);
tft.begin();
tft.setRotation(3);
tft.fillScreen(ILI9341_BLACK);
tft.setTextColor(ILI9341_YELLOW);
tft.setTextSize(2);
tft.println("Waiting for Arduino Serial Monitor...");
while (!Serial && millis() < 3000); // wait up to 3 seconds for Arduino Serial Monitor
Serial.println("ILI9341 Slideshow");
tft.fillScreen(ILI9341_BLACK);
tft.setCursor(0, 0);
while (!SD.begin(BUILTIN_SDCARD)) {
Serial.println("Unable to access SD Card");
tft.println("Unable to access SD Card");
delay(1000);
}
}
// Functions to access a file on the SD card
File myfile;
void * myOpen(const char *filename, int32_t *size) {
myfile = SD.open(filename);
*size = myfile.size();
return &myfile;
}
void myClose(void *handle) {
if (myfile) myfile.close();
}
int32_t myRead(JPEGFILE *handle, uint8_t *buffer, int32_t length) {
if (!myfile) return 0;
return myfile.read(buffer, length);
}
int32_t mySeek(JPEGFILE *handle, int32_t position) {
if (!myfile) return 0;
return myfile.seek(position);
}
// Function to draw pixels to the display
int JPEGDraw(JPEGDRAW *pDraw) {
//Serial.printf("jpeg draw: x,y=%d,%d, cx,cy = %d,%d\n",
//pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
// for (int i=0; i<pDraw->iWidth*pDraw->iHeight; i++) {
// pDraw->pPixels[i] = __builtin_bswap16(pDraw->pPixels[i]);
// }
tft.writeRect(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight, pDraw->pPixels);
return 1;
}
// Main loop, scan for all .JPG files on the card and display them
void loop() {
int filecount = 0;
tft.setCursor(0, 0);
File dir = SD.open("/");
while (true) {
File entry = dir.openNextFile();
if (!entry) break;
if (entry.isDirectory() == false) {
const char *name = entry.name();
const int len = strlen(name);
if (len > 3 && strcasecmp(name + len - 3, "JPG") == 0) {
Serial.print("File: ");
Serial.println(name);
tft.print("File: ");
tft.println(name);
jpeg.open((const char *)name, myOpen, myClose, myRead, mySeek, JPEGDraw);
jpeg.decode(0,0,0);
jpeg.close();
filecount = filecount + 1;
if (digitalRead(34) == LOW) {
// skip delay between images when pushbutton is pressed
delay(1000);
}
}
}
entry.close();
}
if (filecount == 0) {
Serial.println("No .JPG files found");
tft.println("No .JPG files found");
delay(2000);
}
}

View File

@ -0,0 +1,61 @@
// JPEGDEC example for Adafruit GFX displays
#include "JPEGDEC.h"
// Sample image (truncated) containing a 320x240 Exif thumbnail
// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
#include "thumb_test.h"
//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
#include <M5Core2.h>
#define DISPLAY_WIDTH 320
#define DISPLAY_HEIGHT 240
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
M5.begin(true, true, true, true);
M5.Lcd.fillScreen(TFT_BLACK);
} /* setup() */
void loop() {
int i;
long lTime;
int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
int iCenterX[4] = {0,80,120,140};
int iCenterY[4] = {0,60,90,105};
for (i=0; i<4; i++)
{
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
{
lTime = micros();
if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
}
jpeg.close();
}
delay(2000); // pause between images
} // for i
} /* loop() */

View File

@ -0,0 +1,845 @@
//
// batman-5
// Data size = 13342 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t batman[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};

View File

@ -0,0 +1,318 @@
//
// ncc1701
// Data size = 4912 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t ncc1701[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,61 @@
// JPEGDEC example for Adafruit GFX displays
#include "JPEGDEC.h"
// Sample image (truncated) containing a 320x240 Exif thumbnail
// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
#include "thumb_test.h"
//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
#include <M5Stack.h>
#define DISPLAY_WIDTH 320
#define DISPLAY_HEIGHT 240
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
M5.Lcd.begin();
M5.Lcd.fillScreen(TFT_BLACK);
} /* setup() */
void loop() {
int i;
long lTime;
int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
int iCenterX[4] = {0,80,120,140};
int iCenterY[4] = {0,60,90,105};
for (i=0; i<4; i++)
{
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
{
lTime = micros();
if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
}
jpeg.close();
}
delay(2000); // pause between images
} // for i
} /* loop() */

View File

@ -0,0 +1,845 @@
//
// batman-5
// Data size = 13342 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t batman[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};

View File

@ -0,0 +1,318 @@
//
// ncc1701
// Data size = 4912 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t ncc1701[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,61 @@
// JPEGDEC example for Adafruit GFX displays
#include "JPEGDEC.h"
// Sample image (truncated) containing a 320x240 Exif thumbnail
// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
#include "thumb_test.h"
//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
#include <M5Stack.h>
#define DISPLAY_WIDTH 320
#define DISPLAY_HEIGHT 240
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
M5.begin();
M5.Lcd.fillScreen(TFT_BLACK);
} /* setup() */
void loop() {
int i;
long lTime;
int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
int iCenterX[4] = {0,80,120,140};
int iCenterY[4] = {0,60,90,105};
for (i=0; i<4; i++)
{
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
{
lTime = micros();
if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
}
jpeg.close();
}
delay(2000); // pause between images
} // for i
} /* loop() */

View File

@ -0,0 +1,845 @@
//
// batman-5
// Data size = 13342 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t batman[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};

View File

@ -0,0 +1,318 @@
//
// ncc1701
// Data size = 4912 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t ncc1701[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,61 @@
// JPEGDEC example for Adafruit GFX displays
#include "JPEGDEC.h"
// Sample image (truncated) containing a 320x240 Exif thumbnail
// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
#include "thumb_test.h"
//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
#include <M5StickC.h>
#define DISPLAY_WIDTH 80
#define DISPLAY_HEIGHT 160
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
M5.begin();
M5.Lcd.fillScreen(TFT_BLACK);
} /* setup() */
void loop() {
int i;
long lTime;
int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
int iCenterX[4] = {0,0,0,0};
int iCenterY[4] = {0,0,0,0};
for (i=0; i<4; i++)
{
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
{
lTime = micros();
if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
}
jpeg.close();
}
delay(2000); // pause between images
} // for i
} /* loop() */

View File

@ -0,0 +1,845 @@
//
// batman-5
// Data size = 13342 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t batman[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};

View File

@ -0,0 +1,318 @@
//
// ncc1701
// Data size = 4912 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t ncc1701[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,61 @@
// JPEGDEC example for Adafruit GFX displays
#include "JPEGDEC.h"
// Sample image (truncated) containing a 320x240 Exif thumbnail
// if an image doesn't display, it may have been created using progressive, open gimp, export as a jpg, remove progressive.
#include "thumb_test.h"
//#include "ncc1701.h" //http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
//#include "batman.h" //http://clipart-library.com/clipart/batman-clip-art_19.htm
#include <M5StickCPlus.h>
#define DISPLAY_WIDTH 135
#define DISPLAY_HEIGHT 240
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
Serial.println("Starting...");
M5.begin();
M5.Lcd.fillScreen(TFT_BLACK);
} /* setup() */
void loop() {
int i;
long lTime;
int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
int iCenterX[4] = {0,0,0,0};
int iCenterY[4] = {0,0,0,0};
for (i=0; i<4; i++)
{
M5.Lcd.fillScreen(TFT_BLACK);
M5.Lcd.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
{
lTime = micros();
if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
}
jpeg.close();
}
delay(2000); // pause between images
} // for i
} /* loop() */

View File

@ -0,0 +1,845 @@
//
// batman-5
// Data size = 13342 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 240, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t batman[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x47,
0x00,0x47,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0xf0,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1e,0x00,0x01,0x00,0x02,0x02,0x03,0x01,0x01,0x01,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x09,0x06,0x07,0x04,0x05,0x0a,0x03,0x01,
0x02,0xff,0xc4,0x00,0x49,0x10,0x00,0x01,0x03,0x03,0x03,0x02,0x04,0x03,0x05,0x04,
0x05,0x0a,0x04,0x07,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x06,0x07,0x08,0x11,
0x12,0x21,0x09,0x13,0x31,0x41,0x14,0x22,0x51,0x15,0x23,0x61,0x71,0x81,0x32,0x42,
0x52,0x62,0x24,0x33,0x82,0x91,0x92,0x16,0x17,0x18,0x53,0x63,0x72,0xa1,0xb1,0xb2,
0xc1,0x73,0x93,0xa2,0xc2,0x19,0x34,0x43,0x44,0x83,0x84,0xc3,0xff,0xc4,0x00,0x1c,
0x01,0x01,0x00,0x01,0x05,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x01,0x04,0x05,0x06,0x07,0x02,0x08,0xff,0xc4,0x00,0x38,0x11,0x00,
0x01,0x03,0x02,0x05,0x01,0x06,0x03,0x06,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x01,
0x00,0x02,0x03,0x04,0x11,0x05,0x06,0x12,0x21,0x31,0x51,0x13,0x22,0x41,0x61,0x71,
0x81,0x07,0x32,0x91,0x15,0x42,0x62,0x92,0xa1,0xb1,0x14,0x23,0x52,0x72,0x82,0xa2,
0x33,0xb2,0xc1,0xf0,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,
0x3f,0x00,0xb5,0x3a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,
0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,
0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,
0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,
0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,
0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,
0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,
0x44,0xa5,0x29,0x44,0x4a,0x52,0x94,0x44,0xa5,0x29,0x44,0x4a,0x52,0xa2,0xae,0xf8,
0x37,0xe7,0x8d,0x6d,0x27,0x1e,0x36,0xd8,0x69,0x66,0xff,0x00,0xa8,0xd3,0xd8,0x2b,
0xb7,0xd9,0x4a,0x8f,0x97,0x1d,0x27,0x90,0x24,0x49,0x20,0x82,0x96,0xc1,0x1d,0x92,
0x08,0x52,0xc8,0xe0,0x70,0x3a,0x94,0x92,0x29,0x55,0x4a,0xf3,0xf3,0xa5,0x5e,0x23,
0xba,0xd3,0xa6,0xda,0xbb,0x71,0xce,0x66,0xe4,0x6f,0xe5,0x48,0xbb,0xbc,0x17,0x75,
0xb2,0x5d,0x1c,0x26,0x1c,0x84,0x03,0xd9,0x2d,0x20,0x76,0x8e,0x52,0x3b,0x25,0x4d,
0x81,0xc7,0x60,0x42,0x87,0x29,0x37,0x13,0xb5,0xfd,0xec,0xe9,0xa6,0xea,0xad,0x4d,
0x8c,0x6e,0xe8,0x2d,0xb9,0x3a,0x1a,0x2e,0x4b,0xc6,0x6e,0x4a,0x4a,0x26,0xb3,0xc1,
0xe1,0x4a,0x48,0xe7,0x87,0x5b,0xf4,0x3d,0x68,0x27,0x80,0xa1,0xd4,0x12,0x4f,0x48,
0x22,0xdf,0xb4,0xa5,0x28,0x89,0x4a,0x56,0xa2,0xdc,0xd6,0xe0,0xa0,0xed,0xab,0x0a,
0xb2,0xe5,0xd7,0x68,0xe1,0xfb,0x23,0xb7,0xc8,0x96,0xdb,0x82,0x81,0x3d,0x4c,0xb0,
0xf7,0x52,0x54,0xf2,0x78,0xe7,0x92,0x8e,0x02,0xf8,0xe3,0xe6,0x09,0x29,0xec,0x48,
0x20,0x8b,0x6e,0xd2,0xb5,0xde,0x79,0xb8,0x9d,0x2f,0xd3,0x06,0x63,0x39,0x95,0xea,
0x06,0x39,0x62,0x32,0x99,0x4c,0x88,0xed,0x4b,0xb9,0x34,0x97,0x5f,0x69,0x43,0x94,
0xb8,0xdb,0x7d,0x5d,0x4b,0x49,0x1f,0xbc,0x90,0x47,0x7a,0xc5,0xac,0x7b,0xdb,0xd0,
0x4c,0x86,0x40,0x62,0x26,0xad,0xe2,0x69,0x70,0x9e,0x00,0x97,0x72,0x6e,0x30,0x27,
0xe8,0x0b,0xa5,0x22,0x88,0xb7,0x6d,0x2b,0x52,0xe8,0xc6,0xe2,0xf1,0xfd,0x72,0xcd,
0x75,0x22,0xcb,0x8e,0x2d,0xb9,0x50,0xf0,0xdb,0x83,0x36,0xc5,0xcf,0x69,0xd0,0xe2,
0x25,0x3a,0xa6,0xca,0x96,0xb4,0x11,0xdb,0xa5,0x2b,0x0a,0x6c,0x7a,0xf2,0x5b,0x51,
0xe7,0x82,0x2b,0x6d,0x51,0x12,0x94,0xa5,0x11,0x29,0x51,0xd3,0x74,0xdb,0xec,0xd3,
0x3d,0xab,0x5b,0xdf,0x8f,0x79,0xb8,0x0b,0xee,0x5f,0xd0,0x15,0x1f,0x17,0xb6,0x38,
0x15,0x29,0x44,0x8e,0x52,0x5e,0x3d,0xc3,0x08,0x3c,0x83,0xd4,0xbe,0xe4,0x77,0x4a,
0x55,0xe9,0x55,0x05,0x9d,0x78,0x8f,0xeb,0x7e,0x67,0xac,0xb0,0x35,0x05,0x8c,0x9d,
0xcb,0x12,0xed,0xab,0xe2,0x05,0x86,0xde,0xa5,0x26,0xda,0xd3,0x24,0x82,0xa6,0x9c,
0x68,0x9f,0xbe,0xeb,0xe3,0xe6,0x52,0xf9,0x51,0xed,0xc1,0x48,0x4a,0x42,0x48,0xbd,
0x04,0x52,0xa3,0x3e,0xca,0xf7,0xc7,0x8a,0x6e,0xef,0x15,0x2d,0x37,0xe5,0x58,0xf3,
0xdb,0x73,0x21,0x77,0x5c,0x79,0x4b,0xe4,0xf4,0x8e,0x01,0x91,0x1c,0x9f,0xdb,0x64,
0xa9,0x40,0x7f,0x12,0x09,0x01,0x5e,0xa9,0x52,0xe4,0xc5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xad,
0x05,0xbc,0xed,0xd9,0xd9,0x36,0x91,0xa5,0x0e,0xdf,0xa5,0xa5,0xa9,0xf9,0x35,0xc7,
0xae,0x35,0x8a,0xd0,0xb5,0x11,0xf1,0x52,0x00,0x1c,0xad,0x5c,0x77,0x0d,0x36,0x14,
0x95,0x2c,0xf6,0xf5,0x4a,0x41,0x05,0x69,0xa2,0x2c,0x1b,0x7f,0x1b,0xec,0xb4,0xed,
0x3f,0x11,0xfb,0x22,0xcc,0xa6,0x2e,0x9a,0x95,0x76,0x60,0x9b,0x7d,0xbd,0x47,0xa9,
0x10,0x9b,0x3c,0x8f,0x8a,0x7c,0x7f,0x08,0x23,0xe5,0x41,0xee,0xb2,0x0f,0xb0,0x51,
0x14,0xdb,0x61,0xd1,0xad,0x69,0xdc,0xee,0x55,0x3b,0x22,0x83,0x8c,0x5f,0xf2,0xeb,
0x9d,0xdd,0xe5,0x4a,0x93,0x7b,0x90,0xc9,0x6d,0x87,0x5c,0x57,0x72,0x4c,0x87,0x3a,
0x5a,0x1f,0x82,0x7a,0x87,0x00,0x70,0x07,0x02,0xb9,0x38,0x46,0xb8,0x67,0x39,0x56,
0xb3,0x4f,0xc8,0x95,0x61,0xb3,0xea,0x26,0xa4,0x65,0x33,0x1b,0x6e,0x34,0xbc,0x82,
0x07,0xc6,0xb8,0xd4,0x85,0x2b,0x84,0x79,0x0c,0xa9,0x41,0x94,0x9f,0xd8,0x4a,0x7a,
0x90,0x42,0x12,0x84,0x84,0xf4,0x00,0x79,0xbc,0x7d,0x2d,0xb4,0xe5,0x36,0x4d,0x3f,
0xb2,0x43,0xcd,0xaf,0x8d,0xe4,0x59,0x5a,0x18,0xea,0xb8,0xdc,0x19,0x61,0xb6,0x1a,
0x5b,0xca,0x25,0x45,0x28,0x42,0x12,0x91,0xd0,0x8e,0x7a,0x01,0xe9,0x04,0x84,0x82,
0x7b,0x93,0x5c,0xb7,0x39,0xe6,0xfa,0x8c,0xb2,0xd6,0x36,0x18,0x9a,0xe7,0x3f,0x8d,
0x4e,0x37,0xf3,0x3a,0x40,0xe0,0x71,0x72,0xe0,0x6f,0xc0,0x22,0xe4,0x5c,0x45,0x10,
0x93,0x92,0xa9,0xd1,0xdf,0x0c,0xcd,0xc1,0x37,0x13,0xce,0x18,0x8c,0x47,0x17,0xc7,
0x3e,0x42,0x6f,0x11,0x3a,0xff,0x00,0xe2,0xe0,0x1f,0xf1,0xad,0x0b,0x95,0xe1,0x99,
0x9e,0x8b,0x65,0xe9,0x83,0x7d,0xb6,0x5d,0x71,0x1c,0x8a,0x12,0xc3,0xad,0x79,0xc9,
0x5c,0x77,0x90,0x41,0xec,0xe3,0x4b,0x1c,0x72,0x39,0x1d,0x96,0x82,0x41,0xf6,0x35,
0xe8,0xbe,0xa3,0xbe,0xfd,0x34,0x72,0xc9,0xab,0x5b,0x6d,0xcb,0x9e,0xb8,0x45,0x42,
0xae,0xb8,0xe4,0x07,0xef,0x56,0xc9,0xc1,0x3f,0x7b,0x1d,0xc6,0x51,0xe6,0x38,0x90,
0x7f,0x85,0xc4,0x20,0xa5,0x43,0xd0,0xf6,0x3c,0x72,0x94,0x91,0xcf,0xb0,0x3f,0x8a,
0x35,0xb3,0xd7,0x47,0x4f,0x89,0x44,0xcd,0x0f,0x20,0x5d,0xa0,0x82,0xdb,0x9b,0x5f,
0x72,0x6e,0x3a,0xf0,0x7f,0x65,0x33,0xe9,0xc0,0x17,0x69,0x50,0x8f,0x6f,0x3e,0x2f,
0x7a,0x9d,0xa6,0x2c,0x47,0xb5,0x67,0xf0,0xda,0xd4,0x9b,0x2b,0x69,0x4b,0x68,0x94,
0xfb,0xa2,0x35,0xc9,0xa4,0x8e,0x07,0x77,0x82,0x48,0x77,0xb0,0x3f,0xd6,0x24,0xa9,
0x47,0xd5,0x75,0x62,0xda,0x35,0xe2,0x3d,0xa0,0xda,0xd2,0xa6,0x63,0x43,0xcc,0x5a,
0xc6,0x2e,0xce,0x27,0xab,0xec,0xcc,0xa1,0x22,0x03,0x80,0xf3,0xc7,0x48,0x71,0x44,
0xb2,0xa5,0x7f,0x2a,0x1c,0x51,0x3f,0x4a,0xa0,0xf9,0x98,0x65,0xd2,0x0e,0x15,0x6a,
0xca,0x9e,0x64,0x26,0xd1,0x72,0x9d,0x2a,0xdf,0x1d,0xce,0x7b,0x97,0x63,0xa1,0x85,
0xb9,0xc8,0xfa,0x71,0x25,0xbe,0x0f,0xb9,0x0a,0xfa,0x57,0x47,0x5f,0x48,0x31,0xed,
0x90,0x5d,0x86,0xfc,0x8f,0x70,0x6c,0x7e,0x85,0x58,0xaf,0x54,0x51,0x25,0xb1,0x3e,
0x33,0x72,0x23,0x3c,0xdc,0x98,0xee,0x0e,0xa4,0x3a,0xd2,0xc2,0x90,0xa1,0xf5,0x04,
0x76,0x22,0xa0,0xc7,0x8c,0xac,0xaf,0x87,0xda,0x4c,0x06,0xf9,0xe3,0xcf,0xca,0x21,
0xb7,0xf9,0xfd,0xcc,0x95,0x7f,0xed,0xaa,0x78,0xd3,0xdd,0x6b,0xcf,0xf4,0x99,0x6e,
0x1c,0x33,0x34,0xbf,0x62,0xe9,0x75,0x41,0x6e,0xb5,0x6a,0xb8,0x3a,0xc3,0x6e,0x91,
0xe8,0x56,0x84,0xa8,0x25,0x5f,0xa8,0x35,0x98,0xea,0xc6,0xf0,0xb5,0x77,0x5c,0xf0,
0x48,0x98,0x7e,0x77,0x98,0x3b,0x91,0xd8,0xa2,0x4d,0x6e,0xe0,0xc3,0x52,0x22,0x47,
0x43,0x89,0x79,0x08,0x71,0x01,0x45,0xd4,0x36,0x95,0xab,0xe5,0x75,0x7d,0x94,0x48,
0xf4,0xfa,0x57,0xb4,0x5a,0x6d,0x4b,0x52,0xcf,0x2a,0x25,0x47,0x80,0x39,0x27,0xd8,
0x76,0x15,0xf9,0x5d,0xd5,0xa3,0x09,0xc8,0x2f,0xf6,0x1b,0xb5,0xee,0xd9,0x64,0xb8,
0x5c,0x6d,0x16,0x8f,0x2f,0xed,0x19,0xd1,0x23,0x2d,0xd6,0x61,0xf9,0x9d,0x5e,0x59,
0x79,0x49,0x04,0x36,0x15,0xd0,0xbe,0x0a,0xb8,0x07,0xa4,0xfd,0x2b,0x8f,0x8e,0xe3,
0x37,0x8c,0xc2,0xf1,0x1e,0xd3,0x61,0xb5,0x4d,0xbd,0xdd,0x24,0x1e,0x96,0x60,0xdb,
0xa3,0xae,0x43,0xee,0x1f,0xa2,0x50,0x80,0x54,0x7f,0x41,0x44,0x56,0x51,0xe0,0x7b,
0x95,0xb7,0x17,0x33,0xd5,0x5c,0x65,0x47,0x97,0x67,0x5b,0xe0,0xdc,0x5b,0x04,0xfa,
0x06,0x1c,0x75,0xb5,0xf0,0x3f,0xfd,0x94,0x73,0xf9,0x0a,0xb6,0x79,0xd3,0xa3,0x5b,
0x22,0x3b,0x2a,0x64,0x86,0xa2,0x45,0x69,0x3d,0x4e,0x3e,0xfa,0xc2,0x10,0x81,0xf5,
0x2a,0x3d,0x80,0xaf,0x35,0x18,0x7e,0xa1,0x6a,0x66,0xd6,0x33,0xab,0xdb,0x76,0x1b,
0x8c,0xfc,0x1b,0x2b,0xf8,0x75,0x5a,0xee,0x28,0x0d,0x20,0x48,0x6d,0xb5,0x29,0x0e,
0x29,0xa5,0x05,0xa4,0xf4,0x2b,0xa9,0x08,0x27,0x8e,0x14,0x08,0xe3,0xb7,0x71,0x5d,
0x26,0xa0,0x6b,0x0e,0x75,0xaa,0xef,0xb4,0xee,0x67,0x98,0xdf,0x32,0x95,0x34,0x4a,
0x9a,0x17,0x6b,0x83,0xb2,0x12,0xd1,0xfe,0x44,0xad,0x44,0x23,0xfb,0x20,0x51,0x15,
0xea,0x6b,0x3f,0x89,0x5e,0x83,0x68,0xd2,0xa4,0xc5,0x73,0x2c,0x4e,0x5d,0x78,0x65,
0x3c,0xfd,0x9d,0x8b,0x24,0x4d,0x24,0xff,0x00,0x09,0x78,0x10,0xca,0x48,0x3e,0xa0,
0xb9,0xc8,0xfa,0x7b,0x55,0x72,0xee,0x1f,0xc5,0xc3,0x55,0x35,0x61,0x99,0x16,0xac,
0x25,0x96,0xf4,0xce,0xc2,0xea,0x14,0xda,0xdc,0x80,0xf1,0x7a,0xe4,0xe0,0x3d,0x89,
0xf8,0x92,0x13,0xe5,0xf6,0xe3,0x8f,0x29,0x29,0x50,0x3c,0xfc,0xe7,0xb7,0x10,0x5a,
0x94,0x45,0xf5,0x99,0x31,0xfb,0x84,0xa7,0xa5,0x4a,0x7d,0xc9,0x32,0x5e,0x59,0x71,
0xc7,0x9e,0x59,0x5a,0xd6,0xa2,0x79,0x25,0x44,0xf7,0x24,0xfd,0x4d,0x7c,0xab,0xed,
0x0a,0x2a,0xe7,0x4c,0x62,0x32,0x3b,0xad,0xe7,0x12,0xda,0x7f,0x32,0x78,0x1f,0xf3,
0xac,0x9b,0x57,0x30,0xe4,0xe9,0xe6,0xaa,0xe6,0x38,0xba,0x09,0x2d,0x59,0x6f,0x12,
0xed,0xe8,0x51,0x24,0xf5,0x21,0xa7,0x96,0x84,0x9e,0xff,0x00,0x50,0x90,0x6a,0x13,
0x2b,0x04,0xa2,0x1b,0xf7,0x88,0x27,0xd8,0x58,0x1f,0xdc,0x2a,0xdb,0xc5,0x7f,0x78,
0x2d,0xdf,0x35,0xd3,0x19,0xd6,0x9d,0x47,0xc5,0xcd,0xd2,0xca,0xab,0x6d,0xc3,0xc9,
0x87,0x90,0x46,0x65,0x61,0x84,0x4a,0x4a,0x42,0xd4,0xcf,0x99,0xc7,0x42,0x89,0x42,
0x87,0x53,0x67,0x9e,0xa4,0x2f,0x85,0x02,0x95,0x77,0xbd,0x7d,0x8b,0x6f,0x7e,0xc7,
0xbb,0xac,0x1d,0x4c,0xcb,0x11,0xec,0xfa,0x87,0x69,0x69,0x3f,0x6b,0xd9,0x90,0xae,
0x10,0xe8,0xf4,0xf8,0xa8,0xc0,0x92,0xa5,0x34,0xa3,0xc7,0x23,0xb9,0x6d,0x44,0x25,
0x44,0x82,0x85,0x2f,0x45,0x6c,0x47,0x43,0xf4,0xda,0xfd,0xb4,0xb9,0x96,0x98,0xd7,
0x57,0x73,0xac,0x67,0x2d,0x77,0xcf,0xbb,0x5b,0xee,0x4d,0x25,0xb1,0x0e,0x58,0x69,
0xb4,0x3a,0xc8,0x42,0x4f,0x28,0x5a,0x14,0x84,0x90,0xbe,0x79,0x3c,0x36,0xb4,0x9e,
0x3a,0x49,0x83,0x3a,0xe5,0xa3,0x99,0xdf,0x87,0x9e,0xbe,0xd9,0xf2,0x7c,0x4a,0xe7,
0x24,0x5b,0x04,0x85,0x4a,0xb0,0x5e,0xf8,0xe4,0x38,0x80,0x7e,0x78,0xb2,0x40,0xe0,
0x15,0x74,0x9e,0x95,0xa7,0xd1,0x69,0x57,0x23,0x8e,0x4a,0x53,0xa3,0x61,0x19,0xc2,
0x8f,0x13,0xc4,0xe7,0xc2,0x5c,0x34,0x48,0xc2,0x43,0x6f,0x71,0xa8,0x0e,0x76,0x36,
0x21,0xc3,0x7b,0x8e,0x9b,0x8f,0x1b,0x4a,0xe8,0x8b,0x5a,0x1c,0xaf,0xf6,0x95,0xa4,
0x76,0x8d,0xba,0x6c,0x7b,0x76,0x1a,0x51,0x13,0x27,0xb4,0x94,0x43,0xbc,0xc7,0xe9,
0x8f,0x7a,0xb3,0x95,0x82,0xe4,0x19,0x3c,0x77,0x1c,0x73,0xc9,0x6d,0x7c,0x15,0x21,
0x7e,0xe3,0xb1,0xe1,0x49,0x50,0x1b,0xba,0xb7,0xf5,0x0a,0x52,0x94,0xa2,0x25,0x29,
0x4a,0x22,0x52,0x94,0xa2,0x25,0x29,0x4a,0x22,0xc6,0x35,0x37,0x52,0x2c,0x3a,0x43,
0x80,0xdf,0x33,0x2c,0x9e,0x62,0x60,0x58,0xac,0xd1,0x95,0x26,0x4b,0xc7,0x8e,0x48,
0x1d,0x92,0x84,0x82,0x47,0x52,0xd4,0xa2,0x94,0x25,0x3e,0xea,0x52,0x47,0xbd,0x79,
0xd8,0xdd,0x0e,0xe3,0xb2,0x2d,0xd1,0x6a,0xe5,0xd3,0x34,0xbf,0x28,0xb2,0xca,0xc9,
0x8f,0x6c,0xb6,0xa5,0x5c,0xb7,0x02,0x22,0x54,0x4b,0x6d,0x27,0xea,0x7b,0x95,0x29,
0x5f,0xbc,0xa5,0x28,0xf0,0x01,0x00,0x4a,0xaf,0x16,0x6d,0xdd,0xab,0x55,0x35,0x14,
0x69,0x46,0x35,0x31,0x47,0x14,0xc5,0x24,0xab,0xed,0x37,0x1b,0xe3,0xa6,0x6d,0xcd,
0x3c,0xa5,0x43,0x9f,0x52,0x86,0x41,0x52,0x07,0xa7,0xce,0x5c,0xe4,0x10,0x94,0x1a,
0xd5,0xbe,0x1e,0x9b,0x50,0xff,0x00,0x48,0x4d,0x4c,0x37,0xec,0x82,0x19,0x73,0x04,
0xc7,0x1c,0x43,0xb3,0x12,0xe2,0x0f,0x97,0x3e,0x47,0xab,0x71,0x41,0xf4,0x23,0xd1,
0x6b,0xf5,0xf9,0x78,0x07,0x8f,0x30,0x1a,0xc5,0x62,0x98,0x95,0x3e,0x11,0x47,0x25,
0x75,0x51,0xb3,0x18,0x2f,0xeb,0xd0,0x0f,0x32,0x76,0x0b,0xd3,0x5a,0x5c,0x6c,0x14,
0xae,0xf0,0xc8,0xda,0x18,0xc0,0xb1,0xd6,0x35,0x67,0x2b,0x87,0xd3,0x91,0xdd,0xd8,
0x3f,0x62,0xc5,0x75,0x24,0x2a,0x14,0x35,0x8e,0x0b,0xc4,0x1f,0x47,0x1d,0x07,0xb7,
0xd1,0xb2,0x3b,0xfc,0xea,0x02,0x46,0xee,0xdf,0x73,0x56,0xad,0xaf,0x69,0x6b,0xf7,
0xe7,0xd0,0xd4,0xdc,0x86,0x69,0x54,0x5b,0x2d,0xb1,0xc2,0x78,0x91,0x23,0x8e,0x7a,
0x97,0xc7,0x07,0xcb,0x40,0x21,0x4a,0x20,0x8f,0x64,0x82,0x0a,0x85,0x6e,0x69,0x93,
0x22,0xda,0x60,0x3f,0x2e,0x53,0xcd,0x43,0x85,0x19,0xa5,0x3a,0xeb,0xce,0xa8,0x21,
0xb6,0x9b,0x48,0xe5,0x4a,0x24,0xf6,0x00,0x00,0x4f,0x3e,0xc0,0x55,0x13,0x6e,0xa7,
0x5c,0x2f,0x5b,0xb6,0xd7,0xe9,0x13,0x6d,0x31,0xa5,0xcf,0x81,0xe7,0x0b,0x56,0x39,
0x6b,0x8e,0xd2,0x96,0xe2,0x98,0x0a,0x21,0x1c,0x36,0x07,0x25,0xc7,0x14,0x4a,0xc8,
0xe3,0x9e,0x54,0x13,0xe8,0x91,0x5f,0x2f,0xe0,0x74,0x53,0xe7,0xec,0x7a,0x4c,0x43,
0x11,0xff,0x00,0x85,0x9b,0xbb,0xa0,0x1f,0x75,0x80,0xf8,0x0e,0x6e,0x7a,0x02,0x79,
0x2b,0x20,0xf2,0x21,0x65,0x9b,0xca,0xb2,0xff,0x00,0x0f,0x5d,0xd3,0x65,0x9b,0x9a,
0xc2,0xb2,0x97,0x33,0x08,0x91,0x05,0xca,0xc9,0x35,0xa6,0xd1,0x3e,0x0b,0x45,0x96,
0xe4,0x36,0xea,0x14,0xa0,0x92,0x8e,0x48,0xeb,0x41,0x41,0xe4,0x8e,0x01,0x0b,0x47,
0x6e,0x41,0x2a,0xd8,0x5b,0xd9,0xcd,0xe1,0xe0,0x3b,0x57,0xd4,0x79,0xd2,0xdd,0x4b,
0x66,0x5d,0xa5,0xdb,0x5b,0x08,0x24,0x75,0x38,0xec,0x91,0xe4,0x25,0x29,0x1e,0xff,
0x00,0xd6,0x15,0x1e,0x3d,0x92,0xa3,0xed,0x5f,0xce,0xcc,0xf6,0xfd,0xfe,0x8d,0xfa,
0x15,0x68,0xc6,0xa5,0x86,0xd5,0x7f,0x94,0xb5,0x5c,0xaf,0x0e,0x34,0x79,0x06,0x53,
0x81,0x3c,0xa0,0x1e,0x4f,0x21,0x08,0x4a,0x1b,0xe4,0x76,0x3d,0x05,0x5f,0xbd,0x51,
0x5f,0x76,0xfa,0x84,0xce,0xea,0xf7,0x5b,0x80,0x6d,0xfa,0xc6,0xe1,0x9d,0x8d,0x5a,
0xae,0xe1,0xfc,0x89,0x6c,0x2b,0x80,0xeb,0xcd,0xa5,0x4a,0x7d,0x01,0x7e,0xde,0x4b,
0x29,0x75,0x3c,0x8f,0xdf,0x5a,0x87,0x72,0x91,0x58,0xc8,0x28,0xe8,0xb1,0x4c,0xd1,
0x2c,0xd4,0x2d,0xd3,0x49,0x13,0x8c,0x84,0x8e,0x03,0x23,0xdc,0x91,0xd3,0x51,0x1b,
0x7a,0xf9,0x2f,0x44,0x96,0xc7,0x63,0xc9,0x59,0x4d,0x83,0x62,0x09,0xd5,0x1d,0x8a,
0xe9,0xb6,0x10,0xed,0xd1,0x8b,0x16,0x44,0x87,0x91,0x92,0x2a,0xe2,0xe4,0x62,0xef,
0x42,0xa4,0xa5,0x6b,0x5b,0x2a,0x4f,0x20,0xf6,0x6d,0xd6,0xd2,0x7b,0xfe,0xd3,0x20,
0xfa,0x56,0x9f,0xb3,0x78,0x45,0x65,0x96,0xcd,0x4c,0xc7,0x5b,0xba,0x64,0xd6,0x9b,
0xd6,0x0e,0xa9,0x49,0x55,0xce,0x44,0x5f,0x31,0x89,0x69,0x65,0x20,0xa9,0x48,0x0d,
0x91,0xc7,0xcf,0xc0,0x40,0x52,0x56,0x48,0x2a,0xe4,0x8e,0x05,0x5a,0x24,0xfb,0x95,
0xbb,0x1e,0x80,0x1f,0x9b,0x2a,0x2d,0xb2,0x0b,0x65,0x0d,0x07,0x1f,0x71,0x2c,0xb4,
0x92,0x48,0x4a,0x13,0xc9,0x20,0x0e,0x49,0x00,0x0f,0xa9,0x00,0x57,0x34,0x0e,0x48,
0x15,0x69,0x06,0x7b,0xc7,0x69,0x3b,0x6e,0xc2,0x4b,0x32,0x47,0x3d,0xd6,0x20,0x1b,
0x17,0x6e,0x6c,0x6d,0x7d,0xaf,0x71,0xbd,0x87,0x45,0x53,0x13,0x0d,0xae,0x17,0x9e,
0x6d,0xc4,0xc5,0x89,0x07,0x5f,0x35,0x1e,0x2c,0x08,0xcd,0x43,0x82,0xc6,0x45,0x3d,
0x96,0x23,0xb0,0x90,0x96,0xda,0x6d,0x32,0x16,0x94,0xa1,0x20,0x7a,0x00,0x00,0x00,
0x7e,0x15,0xaf,0x6b,0x2f,0xd6,0x2b,0xa2,0x6f,0x7a,0xb9,0x9b,0xdc,0x50,0x79,0x44,
0xbb,0xe4,0xe9,0x09,0x20,0xf3,0xd9,0x52,0x16,0xa1,0xff,0x00,0x3a,0xc4,0x2b,0xec,
0x6a,0x16,0x96,0xd2,0xc4,0xd7,0x72,0x1a,0xdf,0xd8,0x2c,0x59,0xe4,0xab,0x65,0xdb,
0xfe,0xcf,0x6f,0x98,0xbd,0x82,0xdf,0xa8,0x7a,0x0b,0xaa,0xb7,0x6d,0x32,0xba,0x5f,
0x6d,0x4d,0x33,0x75,0xb2,0xde,0x60,0x31,0x74,0x6d,0x2e,0x29,0x29,0x5f,0x48,0x2a,
0x00,0x74,0x82,0x42,0x9b,0x59,0x42,0x89,0x42,0xd2,0xb4,0xab,0xa5,0x7d,0xf5,0x46,
0x8e,0x78,0x78,0x6e,0x1f,0x01,0xd6,0xab,0x85,0xdd,0x8c,0xea,0x3e,0x0d,0xe4,0xa1,
0x7d,0x59,0x9d,0xbe,0x59,0x92,0xa9,0xc1,0xd3,0xf3,0x25,0x2d,0x12,0x95,0xa8,0x93,
0xc1,0x50,0x77,0xa0,0x72,0x01,0x04,0x90,0x2b,0xbb,0xf0,0xfc,0xde,0xae,0x35,0x3b,
0x0d,0x46,0x8e,0x6a,0xe4,0xc8,0x4c,0xc3,0x65,0x01,0xab,0x35,0xd2,0xee,0x52,0x22,
0xba,0xc2,0x7b,0x88,0x8f,0xad,0x5d,0x90,0x51,0xd2,0x0b,0x6b,0x51,0xe0,0x8e,0x13,
0xc8,0x29,0x40,0x54,0x97,0xb9,0xce,0xd1,0x7d,0x14,0x7e,0xf9,0x9a,0xe4,0x19,0x46,
0x19,0x77,0x89,0x6e,0x6d,0x57,0x0b,0x4d,0xbc,0x79,0x6f,0xcf,0x61,0x69,0x3d,0x6d,
0x86,0x54,0xb7,0xdc,0x2b,0x73,0x90,0x12,0x85,0x36,0x86,0xcf,0x7e,0x49,0x3e,0xa2,
0xd9,0xd2,0xcd,0x1b,0x8b,0x09,0xf4,0xd9,0x65,0x1b,0x14,0x32,0x34,0x3c,0x7b,0xee,
0xaa,0x7b,0x75,0xfa,0x5e,0xbd,0x21,0xd7,0x0b,0xfe,0x3e,0xed,0xd6,0xe1,0x7c,0x90,
0x92,0x99,0x0f,0x5d,0x2e,0xce,0xa5,0x52,0xe6,0x3a,0xb1,0xcb,0x92,0x1c,0x00,0x92,
0x9f,0x31,0x7d,0x4e,0x24,0x29,0x4a,0x51,0x42,0xd0,0xa2,0xa3,0xd5,0xcd,0x6a,0x0a,
0xcb,0xb5,0x5b,0x51,0x2e,0xfa,0xc7,0xa8,0xd9,0x36,0x6d,0x77,0x47,0xf4,0xeb,0xbc,
0xc5,0xcb,0x79,0x0d,0xf2,0x50,0xc2,0x54,0x78,0x43,0x69,0x27,0xbf,0x4a,0x12,0x12,
0x81,0xcf,0x7e,0x12,0x2b,0x11,0xac,0x9b,0x2f,0xa4,0x03,0xca,0xc6,0x3a,0xc5,0xc6,
0xdc,0x2c,0x92,0xdb,0x87,0xb9,0x71,0xd3,0xbb,0xfe,0x4c,0x8e,0xb2,0x8b,0x55,0xc6,
0x04,0x15,0x81,0xfb,0x3c,0x48,0x6e,0x52,0x81,0x3f,0x8f,0x31,0x87,0x1f,0x99,0xae,
0x8a,0x4d,0xbe,0x4c,0x36,0x22,0x3c,0xfb,0x0e,0x32,0xd4,0xb6,0xcb,0xd1,0xd6,0xb4,
0x90,0x1d,0x40,0x5a,0x90,0x54,0x93,0xee,0x3a,0x90,0xb4,0xf3,0xf5,0x49,0x1e,0xd5,
0x28,0x74,0xff,0x00,0x4d,0x5e,0xff,0x00,0xe1,0xe1,0xaa,0xd9,0x83,0x8c,0xa9,0x28,
0x7b,0x27,0xb6,0x21,0xa5,0x29,0x3c,0x75,0x25,0x82,0x1b,0xea,0x1f,0x51,0xd5,0x39,
0x49,0xe7,0xea,0x08,0xf6,0xa9,0x39,0xb0,0xcd,0xbe,0x60,0x3b,0x8b,0xdb,0x36,0x2e,
0xf6,0x6f,0x66,0x17,0x55,0xe2,0x99,0x24,0xff,0x00,0x85,0x48,0x70,0xa0,0x3a,0x85,
0xa1,0x0b,0x2c,0xba,0x47,0x75,0x35,0xd6,0xe2,0x57,0xd2,0x08,0xf9,0x90,0x3d,0x8a,
0x92,0xad,0x13,0x11,0xcd,0x50,0xe1,0x50,0xcf,0x57,0x33,0x4b,0xa3,0x8e,0x5e,0xcc,
0xdb,0x91,0xfc,0xb0,0x76,0xff,0x00,0x23,0x6e,0x47,0x2a,0x46,0xc6,0x5c,0x40,0xf2,
0x55,0xcd,0xa4,0x96,0xcf,0xb6,0xf5,0x57,0x0c,0xb7,0x71,0xd5,0xf1,0x77,0xa8,0x51,
0xf8,0xfa,0xf5,0xbe,0x84,0xff,0x00,0xde,0xb7,0x27,0x88,0x76,0x1a,0xbc,0x33,0x77,
0x59,0xdb,0x7e,0x52,0x9b,0x8d,0x72,0x75,0x8b,0xa3,0x0b,0x50,0xfe,0xb0,0x3c,0xca,
0x14,0xb2,0x3f,0x0f,0x37,0xcd,0x4f,0xf6,0x4d,0x5d,0x76,0x3b,0x81,0x63,0x18,0x7c,
0x66,0xe3,0xd8,0x71,0xcb,0x4d,0x92,0x3b,0x60,0x04,0x35,0x6e,0x82,0xd4,0x74,0xa4,
0x0f,0x4e,0x02,0x12,0x38,0xaa,0xca,0xf1,0x87,0xc2,0xdc,0x85,0xa8,0xd8,0x06,0x58,
0x13,0xcb,0x17,0x1b,0x5b,0xd6,0xd5,0x28,0x0f,0x45,0xc7,0x77,0xcc,0xee,0x7f,0x11,
0x27,0xb7,0xfb,0xa7,0xe9,0x5a,0x36,0x03,0x9e,0x1b,0x98,0x73,0x24,0x31,0xb6,0x2e,
0xcd,0xa5,0x8f,0x68,0xb9,0xbd,0xce,0xcf,0xbf,0x02,0xdb,0x33,0xcd,0x4c,0xf8,0xb4,
0x46,0x56,0x82,0xd9,0x26,0xeb,0x67,0x6d,0x8f,0x53,0x9b,0x5c,0xc7,0x5c,0x7f,0x08,
0xbc,0x2d,0x0c,0x5e,0xa1,0x24,0x75,0x74,0x27,0xd1,0x32,0x5b,0x1f,0xc6,0xdf,0x24,
0xf1,0xfb,0xc9,0x2a,0x4f,0xaf,0x49,0x17,0x17,0xac,0x3a,0x51,0x8a,0xee,0x4f,0x49,
0x66,0xe3,0x57,0x75,0x33,0x3a,0xcd,0x76,0x61,0x12,0x21,0x5c,0x63,0x10,0xe1,0x61,
0xce,0x9e,0xa6,0x64,0xb2,0xa0,0x78,0x24,0x72,0x08,0x20,0xf0,0xa4,0x92,0x93,0xca,
0x54,0x41,0xf3,0xfd,0x03,0x15,0xbc,0x5d,0x6c,0x17,0x5b,0xe4,0x3b,0x74,0x89,0x56,
0x9b,0x52,0xd9,0x44,0xe9,0x6d,0x20,0xa9,0x11,0x8b,0xa5,0x41,0xa2,0xbe,0x3f,0x64,
0x28,0xa0,0x80,0x4f,0x6e,0x78,0x1c,0xf2,0x40,0x36,0x77,0xe1,0x55,0xb9,0xb3,0x93,
0x63,0x92,0x34,0x86,0xff,0x00,0x28,0xae,0xe7,0x68,0x6d,0x52,0xec,0x6e,0x39,0xea,
0xec,0x4e,0x79,0x71,0x8e,0x7d,0xcb,0x6a,0x57,0x52,0x47,0xaf,0x42,0x88,0xf4,0x6e,
0xa9,0xf1,0x13,0x01,0x3b,0x66,0x0c,0x34,0xda,0x68,0x48,0xd7,0xa7,0x9d,0xac,0x43,
0xbd,0x5b,0xb5,0xff,0x00,0x09,0x07,0x80,0x90,0x3f,0xee,0x3b,0x82,0xa2,0x8e,0x96,
0xea,0x16,0x7b,0xe1,0xbb,0xba,0x59,0x4c,0x5c,0x18,0x71,0xf6,0x22,0xb8,0x22,0x5d,
0xed,0xe8,0x3c,0x33,0x77,0xb7,0xa8,0x85,0x25,0xc6,0xc9,0xed,0xcf,0x1c,0x2d,0x0a,
0xf5,0x4a,0x81,0x4a,0xbf,0x7d,0x26,0xfa,0x30,0x3c,0xe6,0xc9,0xa9,0x98,0x6d,0x9f,
0x2a,0xc6,0xe7,0xb5,0x74,0xb1,0x5d,0xa3,0x22,0x5c,0x49,0x4d,0x1e,0xcb,0x42,0x87,
0xa1,0x1e,0xa9,0x50,0x3c,0x85,0x24,0xf7,0x49,0x04,0x10,0x08,0x22,0xa0,0xcf,0x88,
0x86,0xd4,0xd1,0xaf,0xba,0x60,0xbc,0x8e,0xc3,0x0b,0xcc,0xce,0xf1,0xa6,0x56,0xf4,
0x50,0xcb,0x7c,0xbb,0x3e,0x28,0xf9,0x9c,0x8a,0x78,0xee,0xa2,0x3b,0xad,0xb1,0xdf,
0xe6,0xe5,0x20,0x7d,0xe1,0x35,0x1e,0xbc,0x23,0xb7,0x7a,0xbc,0x1b,0x32,0xff,0x00,
0x33,0x19,0x54,0xf2,0x9c,0x7e,0xfa,0xf1,0x72,0xc2,0xf4,0x97,0x78,0x4c,0x39,0xe7,
0xd6,0x38,0xea,0xf4,0x4b,0xfe,0xc0,0x1f,0xeb,0x40,0x00,0x12,0xe9,0x35,0xd0,0x72,
0x8e,0x63,0x8f,0x32,0x61,0xc2,0x73,0xb4,0xad,0xd9,0xe3,0xa1,0xea,0x3c,0x9d,0xc8,
0xf7,0x1e,0x0a,0x09,0x63,0xec,0xdd,0x6f,0x05,0x71,0x34,0xa5,0x2b,0x77,0x51,0x25,
0x29,0x4a,0x22,0x52,0x94,0xa2,0x25,0x46,0x0f,0x10,0xbd,0xd2,0x0d,0xb0,0x68,0x24,
0xe9,0x56,0xa9,0x48,0x67,0x35,0xbf,0xf5,0x5b,0x6c,0x68,0x3d,0xd4,0xda,0xc8,0xfb,
0xd9,0x20,0x7f,0xb2,0x41,0xe4,0x1e,0xe3,0xad,0x4d,0x82,0x08,0x35,0x27,0xeb,0xcf,
0x9f,0x88,0x76,0xe5,0x17,0xb9,0x1d,0xc5,0xde,0x26,0x40,0x96,0xe3,0xd8,0x95,0x80,
0xaa,0xd1,0x65,0x6c,0xab,0xee,0xd4,0xda,0x14,0x43,0xb2,0x12,0x07,0x6f,0xbd,0x70,
0x29,0x41,0x5e,0xa5,0x01,0xb0,0x7f,0x64,0x00,0x45,0xa1,0x30,0x1c,0x1e,0xf3,0xaa,
0x39,0xc5,0x9b,0x16,0xb1,0xb0,0x65,0xde,0xaf,0x12,0xd1,0x16,0x3a,0x54,0x4f,0x1d,
0x4a,0x3d,0xd4,0xb2,0x01,0xe1,0x29,0x1c,0xa9,0x4a,0xf6,0x00,0x9f,0x6a,0xbf,0x9d,
0x06,0xd1,0x9b,0x2e,0x81,0x69,0x5d,0x8f,0x0a,0xb2,0x24,0x29,0x88,0x0d,0x73,0x22,
0x57,0x4f,0x0b,0x97,0x21,0x5d,0xdd,0x79,0x5d,0xcf,0x75,0x2b,0x9e,0x07,0x3f,0x28,
0xe9,0x48,0xec,0x91,0x50,0x97,0xc2,0x6f,0x6e,0x7f,0x66,0xda,0x2e,0x5a,0xc1,0x7a,
0x8a,0xa1,0x26,0x77,0x5d,0xba,0xc2,0x97,0x12,0x38,0x4b,0x00,0xf0,0xfc,0x81,0xf8,
0xa9,0x43,0xcb,0x07,0xb7,0x01,0x0e,0x7a,0x85,0x0a,0xb1,0x95,0xad,0x2d,0x21,0x4b,
0x5a,0x82,0x10,0x90,0x4a,0x94,0xa3,0xc0,0x03,0xdc,0x9a,0xf9,0x4b,0xe2,0x5e,0x63,
0x38,0x85,0x77,0xd9,0x54,0xee,0xfe,0x5c,0x27,0xbd,0xe6,0xff,0x00,0x1f,0xcb,0xc7,
0xad,0xd6,0x46,0x06,0x69,0x1a,0x8f,0x8a,0xe8,0xb3,0xec,0x2e,0x06,0xa3,0xe1,0x77,
0xac,0x5e,0xea,0xe4,0x96,0xad,0x97,0x78,0xab,0x87,0x28,0xc3,0x74,0xb4,0xe9,0x69,
0x63,0x85,0x80,0xa1,0xe9,0xc8,0xe4,0x1f,0xc0,0x9a,0xd6,0xfa,0x57,0xb5,0xed,0x24,
0xdb,0x5c,0x29,0x77,0x9c,0x67,0x16,0x62,0x14,0xc8,0xcc,0x38,0xf3,0xf7,0x89,0x01,
0xc9,0xb3,0x42,0x02,0x0f,0x5f,0x42,0x95,0xd4,0xa4,0xf2,0x9e,0x41,0x43,0x40,0x75,
0x7d,0x09,0xae,0xbf,0x6e,0xdb,0xc1,0xc3,0xb7,0x29,0x96,0x66,0xd6,0x2c,0x71,0x0e,
0xb2,0xe6,0x3b,0x20,0x06,0x1e,0x7d,0x63,0x8b,0x94,0x52,0x7a,0x7e,0x25,0xb4,0xf6,
0x29,0x4f,0x58,0x23,0x83,0xdc,0x05,0x36,0x4f,0x05,0x65,0x29,0xde,0xd5,0xcc,0x67,
0x38,0x9e,0x11,0xaf,0x0d,0xa8,0x2f,0x8c,0x1b,0x17,0x32,0xe4,0x5e,0xe0,0x11,0x71,
0xc1,0xdb,0xad,0xed,0xd2,0xea,0x71,0xa5,0xdd,0xe0,0xab,0x73,0x77,0x1e,0x28,0x96,
0xd7,0x6c,0x93,0x71,0x4d,0x1a,0x7d,0xf9,0x13,0x24,0xa0,0xb5,0x23,0x2c,0x5b,0x6a,
0x65,0x2c,0x20,0x8f,0x98,0x45,0x42,0xc0,0x59,0x5f,0x7e,0x3c,0xc5,0x04,0xf4,0xf0,
0x4a,0x42,0x89,0x0a,0x4f,0x55,0xe1,0x05,0xa5,0x0b,0x99,0x78,0xcd,0x75,0x36,0x68,
0x2a,0x4b,0x08,0x4d,0x8e,0x12,0x95,0xdf,0xa9,0xc5,0xf4,0xbd,0x21,0x47,0xe8,0x40,
0x0c,0x80,0x7d,0xfc,0xc5,0x7d,0x2a,0x18,0xee,0x87,0x00,0x6b,0x4e,0x77,0x1b,0xa8,
0x38,0xc4,0x06,0xba,0x62,0x45,0xbd,0x3f,0xf0,0x6c,0x36,0x3f,0x61,0x97,0x15,0xe6,
0x34,0x80,0x3d,0xf8,0x42,0xd2,0x3f,0x4a,0xba,0x5d,0xa2,0xe8,0xea,0xb4,0x2b,0x6f,
0x78,0x86,0x2b,0x26,0x32,0x63,0x5d,0xd1,0x1b,0xe3,0x2e,0x89,0x1c,0x15,0x7c,0x5b,
0xc7,0xcc,0x74,0x28,0x8e,0xca,0x28,0xe4,0x37,0xcf,0xd1,0xb1,0x5d,0xc7,0x33,0x33,
0x0d,0xcb,0x39,0x59,0x94,0xb8,0x58,0xb1,0xaa,0xd3,0xb9,0xdd,0xce,0x6d,0x83,0x89,
0x27,0xd2,0xc2,0xc0,0x00,0x35,0x6c,0x37,0x56,0xb1,0xea,0x92,0x4b,0xbb,0xc1,0x44,
0x6f,0x18,0x0d,0x57,0x10,0xec,0x18,0x5e,0x9c,0x44,0x96,0x03,0xd3,0x1e,0x5d,0xee,
0xe0,0xc2,0x09,0x0a,0x0d,0x23,0xa9,0xa8,0xfd,0x5f,0x54,0xa9,0x4a,0x7c,0xf1,0xf5,
0x68,0x1f,0x61,0x53,0xd7,0x18,0x74,0xe2,0xba,0x6d,0x68,0x72,0xe0,0xb5,0x28,0xdb,
0x6d,0x0c,0xaa,0x42,0xdc,0x3f,0x31,0xf2,0xd9,0x1d,0x64,0x93,0xef,0xf2,0x9a,0xa4,
0x0d,0xcf,0x6a,0x7a,0xf7,0x23,0xba,0x7b,0xdd,0xd6,0x17,0xf4,0x8b,0x7c,0xcb,0x9b,
0x56,0x9b,0x4a,0x1b,0x57,0x50,0x5c,0x66,0xd4,0x19,0x69,0x49,0xff,0x00,0xc4,0xe0,
0xb9,0xc7,0xd5,0xc3,0x57,0x3f,0xb8,0x5b,0x81,0xc7,0xf6,0xf7,0xa8,0xf2,0xd2,0xae,
0x83,0x17,0x1a,0xb8,0x29,0x2a,0x1e,0xc4,0x46,0x5f,0x15,0xab,0xe6,0x6c,0x23,0xec,
0xdc,0x2f,0x06,0xc2,0xdc,0x2c,0xf7,0x6a,0x73,0xba,0xea,0x79,0x67,0xed,0x7b,0x7b,
0x29,0x23,0x7d,0xdc,0xe7,0x2a,0xaa,0xc6,0xb6,0x5f,0x97,0xeb,0xbe,0xd7,0x74,0xff,
0x00,0x2f,0xc1,0xac,0xad,0xdd,0xb2,0x49,0x17,0x7b,0x9b,0x77,0x15,0x39,0x29,0x98,
0xe5,0xc8,0xc5,0xc0,0x1b,0x59,0x53,0xab,0x48,0x21,0x0e,0x34,0xe8,0xe0,0x72,0x7e,
0xf7,0xd3,0x81,0xdb,0xfb,0xb7,0xf8,0x54,0x6b,0xa4,0xc4,0xa4,0xbc,0xce,0x3b,0x00,
0x9f,0x51,0x22,0xe9,0xc9,0x1f,0xe0,0x42,0xaa,0xca,0xb6,0x4f,0x88,0x7f,0x90,0xbb,
0x50,0xd3,0x4b,0x62,0xb9,0x05,0x56,0x94,0xdc,0x17,0xd5,0xfb,0xa6,0x4a,0xd7,0x24,
0x83,0xf9,0x17,0x88,0xfd,0x2b,0x76,0x25,0x41,0x69,0x0a,0x49,0x0a,0x49,0x1c,0x82,
0x3d,0x08,0xa9,0xab,0xbe,0x23,0xe2,0xf4,0x35,0x75,0x14,0xd4,0x9a,0x0c,0x6d,0x91,
0xfa,0x49,0x04,0x9b,0x6a,0x36,0xf1,0xb7,0xa6,0xdc,0x2a,0x08,0x1a,0x40,0x25,0x53,
0x3d,0xdb,0xc2,0xaf,0x5d,0x6d,0xcc,0xa9,0x71,0xe2,0xe3,0xf7,0x55,0x01,0xc8,0x6e,
0x25,0xd4,0x25,0x47,0xf0,0x1e,0x6a,0x50,0x3f,0xbc,0xd6,0x00,0xf6,0xc1,0x35,0xee,
0x26,0x43,0x6d,0xb4,0x49,0xd3,0xbb,0x83,0x2e,0xce,0x7d,0x2c,0x26,0x52,0x1d,0x69,
0xf8,0xac,0xf3,0xfb,0xee,0xba,0xd2,0xd6,0x96,0xd0,0x07,0x72,0xa5,0x1f,0xcb,0x93,
0xc0,0xab,0xcc,0xba,0x5e,0x6d,0xf6,0x38,0xe9,0x7e,0xe5,0x3a,0x35,0xbd,0x85,0x28,
0x20,0x3b,0x29,0xe4,0xb4,0x92,0xa3,0xe8,0x39,0x51,0x03,0x9e,0xc7,0xb5,0x75,0x12,
0xf5,0x23,0x13,0x83,0x02,0x54,0xd7,0xf2,0x6b,0x4b,0x71,0x22,0xb4,0xa7,0x9e,0x77,
0xe3,0x5b,0x21,0xb4,0x24,0x12,0xa5,0x1e,0x15,0xe8,0x00,0x27,0xf4,0xa5,0x3f,0xc5,
0x0c,0x7e,0xdb,0xc2,0xc7,0xdf,0xf0,0xbb,0x9f,0x67,0x5b,0xf4,0x43,0x4e,0xc5,0x50,
0x5b,0xc4,0xd2,0xcb,0x56,0x82,0xc1,0xc0,0x34,0x27,0x11,0x22,0xef,0x7e,0x7c,0x22,
0xf3,0x90,0x4d,0x69,0x20,0xbd,0x72,0xb8,0xba,0x4b,0x31,0x9b,0xe3,0xb9,0x42,0x5b,
0x4f,0x9b,0xd0,0xdf,0x3e,0x8f,0xf5,0x1e,0x4a,0x8a,0x8c,0x59,0xc9,0xb1,0xd9,0x58,
0xb6,0x51,0x75,0xb0,0xca,0xe9,0x5c,0xdb,0x74,0xc7,0x60,0xbb,0xe5,0x72,0x52,0x5c,
0x6d,0x65,0x0a,0xe9,0xfa,0x8e,0x41,0xe2,0xa6,0x16,0xda,0x10,0xf6,0xef,0xbc,0x42,
0xe4,0x66,0xf3,0x1a,0x71,0x16,0xc8,0xb3,0xdd,0xc9,0x14,0xd3,0x87,0x95,0xb5,0x1e,
0x39,0x4a,0x21,0xb6,0x4f,0xa1,0x29,0x57,0xc3,0x24,0xfd,0x42,0x55,0xc5,0x70,0xb4,
0xc3,0x45,0x86,0xa4,0xf8,0x95,0xdf,0xec,0x12,0xa1,0x99,0x16,0x9b,0x56,0x5b,0x72,
0xbb,0xce,0x41,0x48,0x28,0xf8,0x76,0x24,0x2d,0xc4,0x75,0x8f,0xe0,0x5a,0xfc,0x94,
0x11,0xef,0xe6,0x71,0xef,0x5d,0x92,0x87,0x16,0xfb,0x22,0x37,0xd2,0xd6,0xbb,0x54,
0x91,0x43,0xdb,0x4a,0x7c,0x4b,0x9c,0x49,0x23,0xdb,0x80,0x3a,0x69,0x03,0x6b,0x05,
0x6c,0xe6,0xea,0xdc,0x78,0x9b,0x29,0x93,0xa8,0x3a,0x10,0xbd,0x3e,0xf0,0xc9,0xbc,
0x60,0x6f,0xa0,0x19,0xd6,0xdc,0x6c,0x5c,0xa6,0xa5,0x3d,0xc0,0x92,0x87,0x93,0x35,
0xe0,0x08,0xf5,0x09,0x5a,0x54,0x01,0xf7,0x09,0x15,0xd4,0xf8,0x46,0x3f,0xe6,0xed,
0xb2,0xfa,0xdf,0xfa,0xbc,0x9a,0x40,0xfe,0xf8,0xd1,0x8f,0xfd,0xea,0x4f,0xee,0x12,
0x0f,0xda,0x9a,0x09,0xa9,0x30,0xf8,0xea,0xf3,0xf1,0xbb,0x93,0x7c,0x7d,0x79,0x8a,
0xe0,0xa8,0x9b,0xe0,0xfd,0x2c,0x2f,0x42,0x73,0x18,0xbf,0xbc,0xd6,0x48,0xa7,0x0f,
0xe4,0xa8,0xac,0x0f,0xfd,0x86,0xb8,0x24,0x75,0x92,0xd7,0xe5,0x4c,0x42,0x49,0x4d,
0xdc,0x67,0x6b,0xcf,0xab,0xf9,0xfd,0x95,0xd9,0x16,0x91,0xa0,0x74,0x53,0xc6,0xa1,
0xcf,0x8a,0xa6,0x04,0xee,0x59,0xb6,0x05,0x5e,0x23,0xb6,0x16,0xee,0x37,0x76,0x8d,
0x3d,0xc3,0xc7,0x2a,0xf2,0x57,0xd5,0x1d,0x5c,0x7f,0x69,0xe6,0xc9,0xfc,0x12,0x4f,
0xb5,0x6b,0x1f,0x10,0xfd,0x6e,0xcc,0xb4,0x2b,0x73,0x9a,0x57,0x7d,0xb3,0x64,0x97,
0x78,0x36,0x06,0xe0,0xb4,0xfc,0xcb,0x3c,0x79,0xae,0x26,0x1c,0xb0,0xdc,0xb7,0x3c,
0xe0,0xe3,0x21,0x5d,0x0a,0x2b,0x6d,0x41,0x24,0x91,0xcf,0x01,0x3d,0xfe,0x51,0xc4,
0xe1,0xd5,0x6c,0x32,0x36,0xb0,0x69,0x0e,0x51,0x8c,0xb3,0x21,0x95,0x33,0x90,0x5a,
0x1f,0x8b,0x1e,0x57,0x3d,0x6d,0x85,0x3a,0xd1,0xf2,0x9c,0xe4,0x7a,0x80,0xa2,0x95,
0x76,0xfa,0x56,0x22,0x8a,0x92,0x5c,0xb9,0x3e,0x19,0x8d,0x3d,0xc0,0xc7,0x21,0xd5,
0xe8,0x1a,0xeb,0x38,0x1f,0x62,0xbd,0x92,0x1e,0x1c,0xc5,0x1b,0xfc,0x38,0xf4,0x47,
0x05,0xb4,0xed,0x75,0xab,0xa4,0x50,0xde,0x4a,0xe6,0x6e,0xd2,0x95,0x7c,0x33,0xe3,
0x8f,0x2d,0x5d,0x05,0x6d,0x18,0x65,0xa2,0x48,0x2d,0xb6,0x7c,0xd1,0xc9,0xee,0xbe,
0xb2,0xae,0xc0,0xa5,0x29,0x8a,0x9b,0xa1,0xda,0x56,0x4f,0xb2,0xcd,0x49,0xb6,0x6a,
0xfe,0x96,0x17,0xe4,0xe2,0x10,0x27,0x22,0x5a,0x01,0x2a,0x5b,0x96,0x85,0xf5,0x01,
0xe4,0x3e,0x41,0xea,0x5c,0x77,0x3a,0x8a,0x02,0xc9,0xf4,0x51,0x42,0xcf,0x24,0x29,
0x7b,0x93,0xc2,0x33,0x52,0x25,0x2b,0x1a,0xce,0xb4,0xce,0xe6,0x3c,0xa9,0x56,0x49,
0x89,0xb9,0x46,0x69,0xc3,0xf7,0x89,0x4b,0x9f,0x76,0xfa,0x38,0xf6,0x08,0x5b,0x68,
0x3f,0x9b,0xa7,0xf0,0xab,0x03,0xb8,0x5b,0xe2,0xdd,0xa0,0x49,0x83,0x3a,0x33,0x33,
0x61,0x49,0x6d,0x4c,0xbf,0x1a,0x43,0x61,0xc6,0xdd,0x6d,0x43,0x85,0x21,0x49,0x3c,
0x85,0x24,0x82,0x41,0x07,0xb1,0x06,0xb6,0x3c,0x47,0x1c,0xc4,0x32,0xc6,0x66,0xac,
0xed,0x5d,0xda,0xc7,0x23,0xbb,0xcd,0x77,0x0f,0x63,0x87,0x77,0xc8,0x10,0xd2,0x00,
0x20,0x6d,0xc5,0xad,0x70,0xa3,0x6b,0x1b,0x24,0x63,0xc1,0x62,0x9a,0x3b,0xaa,0x76,
0x8d,0x6a,0xd3,0x3c,0x7f,0x35,0xb1,0xac,0x7c,0x05,0xda,0x32,0x5e,0xf2,0xba,0xfa,
0x94,0xc3,0x83,0xe5,0x71,0x95,0x1e,0x07,0xcc,0x85,0x85,0x24,0xf6,0xef,0xd3,0xcf,
0xa1,0xaa,0xa2,0xf1,0x1f,0xdb,0x83,0xba,0x0d,0xac,0x71,0xf3,0x8c,0x61,0xa5,0xdb,
0xf1,0xac,0x95,0xf5,0x4c,0x8e,0xa8,0x61,0x4d,0x8b,0x7d,0xc1,0x24,0x29,0xc4,0x25,
0x43,0xf6,0x3a,0x8f,0xde,0xa3,0x82,0x38,0xe5,0x61,0x20,0x06,0xea,0xc4,0xb4,0x53,
0x43,0xe5,0x6d,0xa7,0x3d,0xbc,0xd9,0x71,0xa2,0xf4,0xbd,0x2c,0xc9,0x1d,0x54,0xe8,
0xb0,0x55,0xf3,0xb9,0x61,0xb8,0x00,0x3a,0xd0,0x0f,0xaa,0xa3,0xba,0x80,0x38,0x51,
0x27,0xa1,0x4d,0xa5,0x27,0xf6,0xfa,0x8e,0x59,0xb9,0x8d,0x11,0x83,0xb8,0x4d,0x18,
0xc8,0xb0,0xc9,0x41,0x28,0x97,0x25,0x9f,0x3e,0xdd,0x25,0x5d,0xbe,0x1e,0x62,0x39,
0x53,0x2b,0xe7,0xe9,0xd5,0xf2,0xab,0xea,0x95,0x28,0x76,0xe6,0xb1,0x78,0x0e,0x35,
0x06,0x59,0xc7,0x84,0xf4,0xaf,0xbd,0x2c,0x9b,0x1e,0xba,0x0f,0x51,0xfd,0x4c,0x3c,
0xf5,0xb1,0xb6,0xce,0xb9,0xf4,0xf6,0x19,0x19,0x63,0xca,0xee,0x36,0x27,0xb9,0xb6,
0xf7,0x49,0xa0,0x56,0xac,0x82,0x5b,0xa9,0x39,0x4d,0xb4,0x8b,0x65,0xf5,0xa4,0xa4,
0x27,0x99,0x48,0x48,0x3e,0x68,0x48,0xe0,0x04,0xba,0x92,0x95,0x8e,0x00,0x00,0xa9,
0x49,0x1f,0xb3,0x52,0x1e,0xa8,0x67,0xc3,0x97,0x5e,0xe7,0x6d,0x77,0x74,0x88,0xc7,
0xb2,0x4e,0xbb,0x5d,0x93,0x21,0x7c,0x63,0xb7,0xc8,0xd2,0xd5,0xe5,0x88,0x92,0x43,
0x85,0x2c,0xba,0xb0,0x48,0x00,0xb6,0xe9,0x28,0x25,0x5d,0x92,0x87,0x1c,0x35,0x7c,
0xd5,0xf6,0x50,0x21,0xc0,0x39,0xa6,0xe0,0xac,0x5a,0x52,0x94,0xaa,0xa2,0x52,0x94,
0xa2,0x28,0xb1,0xe2,0x4b,0xb8,0x03,0xa0,0x7b,0x5f,0xbf,0x39,0x01,0xf7,0x18,0xc8,
0xb2,0x52,0x6c,0x36,0xc5,0xb2,0xae,0x95,0xb4,0xa7,0x50,0xaf,0x35,0xd0,0x79,0x05,
0x3d,0x0d,0x07,0x38,0x50,0xee,0x16,0x51,0xf5,0xe4,0x51,0x6e,0x90,0x69,0x9d,0xcf,
0x58,0xf5,0x37,0x1b,0xc2,0xec,0xe8,0x26,0x75,0xe2,0x62,0x23,0x05,0xf1,0xc8,0x65,
0xbf,0x57,0x1d,0x57,0xf2,0xa1,0x01,0x4b,0x3f,0x82,0x4d,0x4b,0x9f,0x17,0xad,0x6f,
0x1a,0x91,0xb9,0x16,0x70,0xf8,0x32,0x54,0xed,0xa3,0x0a,0x88,0x21,0xa9,0x00,0x82,
0x83,0x35,0xde,0x1c,0x90,0xa1,0xf9,0x27,0xc9,0x6c,0xf3,0xe8,0x5a,0x57,0xeb,0x9b,
0x78,0x44,0x68,0x98,0x9b,0x76,0xca,0x35,0x4a,0xe3,0x13,0xa9,0xb8,0x43,0xec,0x6b,
0x4b,0xab,0xe3,0x8f,0x35,0x40,0x2e,0x4a,0xd2,0x3d,0x79,0x4a,0x0b,0x68,0x07,0xd3,
0x87,0x56,0x3e,0xbc,0x6b,0x19,0x97,0x17,0x6e,0x07,0x85,0x4f,0x5d,0xf7,0x9a,0x2c,
0xdf,0x37,0x1d,0x9b,0xfa,0xee,0x7c,0x81,0x52,0x46,0xdd,0x6e,0x01,0x59,0x1e,0x15,
0x87,0xda,0xf4,0xff,0x00,0x11,0xb3,0x63,0x36,0x48,0xe2,0x2d,0xa2,0xd3,0x11,0xa8,
0x51,0x5a,0xe7,0x92,0x96,0xd0,0x90,0x91,0xc9,0xf7,0x27,0x8e,0x49,0x3d,0xc9,0x24,
0x9f,0x5a,0x88,0x9e,0x27,0xfb,0x8e,0x3a,0x57,0xa4,0xad,0xe0,0xb6,0x69,0x41,0xbc,
0x93,0x2f,0x6d,0x6d,0x3c,0x5b,0x73,0x87,0x23,0xdb,0xc7,0x67,0x54,0x40,0xee,0x3c,
0xc3,0xf7,0x43,0x9e,0xc4,0x79,0xbc,0x77,0x4d,0x4d,0x37,0x1c,0x43,0x4d,0xa9,0x6e,
0x29,0x28,0x42,0x41,0x52,0x94,0xa3,0xc0,0x48,0x1e,0xa4,0x9f,0x61,0x54,0x07,0xba,
0xfd,0x6c,0x7f,0x5f,0xf5,0xdf,0x27,0xcb,0x0b,0xbd,0x76,0xc5,0x3e,0x62,0x5a,0xd0,
0x39,0x01,0x10,0x9a,0x25,0x2d,0x70,0x0f,0x70,0x54,0x39,0x59,0xfe,0x65,0xab,0xd3,
0xd2,0xbe,0x65,0xf8,0x7b,0x82,0x1c,0x73,0x19,0x35,0x55,0x3d,0xe6,0x43,0xdf,0x75,
0xfc,0x5c,0x4f,0x74,0x1f,0x7b,0xb8,0xf5,0xb7,0x9a,0xbf,0x99,0xfa,0x1b,0x61,0xe2,
0xb7,0x1f,0x85,0x65,0xd5,0xeb,0x76,0xec,0x22,0x47,0x6c,0x90,0x89,0xf6,0x69,0xb1,
0x9d,0x03,0xdd,0x20,0x25,0xde,0xff,0x00,0xda,0x69,0x35,0x73,0x55,0x53,0x5e,0x11,
0x9a,0x5d,0x3a,0xf5,0xab,0xd9,0x0e,0x76,0xe3,0x5d,0x36,0x8b,0x1d,0xb9,0x50,0x50,
0xe9,0xf5,0x5c,0xa7,0xd4,0x9e,0x12,0x9f,0xaf,0x4b,0x68,0x70,0x9f,0xa7,0x52,0x3e,
0xb5,0x63,0xfb,0x8a,0xd5,0x96,0x74,0x3f,0x45,0x72,0xcc,0xcd,0x7d,0x0a,0x93,0x6e,
0x86,0xaf,0x82,0x69,0xcf,0x47,0x65,0x2f,0x84,0x30,0x8e,0x3d,0x48,0x2e,0x29,0x1c,
0xf1,0xdf,0x8e,0x4f,0xb5,0x5d,0xfc,0x46,0x68,0xaf,0xcc,0xcd,0xa5,0xa6,0xdd,0xe5,
0xac,0x65,0xbf,0x11,0x26,0xc3,0xe8,0x42,0xa4,0x1b,0x47,0x72,0xab,0xd7,0x46,0xb4,
0xb1,0xbd,0xcf,0xf8,0x8c,0xea,0x06,0x59,0x2e,0x3a,0x65,0xe2,0x38,0xad,0xf1,0xd9,
0xaf,0x38,0x4f,0xdd,0xbe,0xe3,0x0e,0x79,0x30,0xd1,0xf8,0x85,0x29,0xa0,0xe7,0x07,
0xb1,0x4b,0x6a,0x07,0xd4,0x03,0x64,0x7a,0xb7,0x85,0xdc,0x75,0x1b,0x4d,0x32,0x4c,
0x5e,0xd5,0x7d,0xff,0x00,0x26,0xa6,0xde,0x21,0x2e,0x12,0x6e,0xa2,0x31,0x90,0x63,
0xa1,0x7f,0x2b,0x84,0x36,0x16,0x8e,0x54,0x50,0x54,0x01,0xea,0x1c,0x12,0x0f,0x7e,
0x38,0x3a,0xc7,0x65,0x1a,0x06,0xad,0x01,0xd0,0xeb,0x65,0xbe,0xe4,0xd2,0x46,0x57,
0x78,0x57,0xda,0xd7,0xc7,0x88,0xe5,0xc3,0x25,0xc0,0x08,0x69,0x47,0xfd,0x9a,0x7a,
0x51,0xc0,0xed,0xd4,0x16,0x47,0xed,0x12,0x79,0x5a,0xa3,0xbd,0x7d,0x1c,0xd1,0xbc,
0xc5,0xfc,0x5b,0x29,0xcb,0x93,0x0e,0xf9,0x1d,0x28,0x54,0x88,0xac,0x43,0x7e,0x47,
0x91,0xd4,0x02,0x92,0x16,0xa6,0xd0,0xa0,0x0f,0x04,0x1e,0x9e,0x79,0xe0,0x8e,0xdd,
0xc5,0x61,0x71,0xca,0xda,0xbc,0x6f,0x16,0x64,0x58,0x4b,0x1d,0x23,0x69,0x83,0x5b,
0x18,0x6b,0x75,0x6c,0xcb,0x0d,0x56,0xb1,0x04,0x13,0xd4,0x5a,0xd6,0x05,0x7b,0x60,
0x0c,0x6d,0xdd,0xe2,0xb4,0x66,0x8b,0x78,0x54,0x62,0x5a,0x5d,0x9c,0x58,0x32,0x9b,
0xbe,0x6b,0x73,0xc9,0xa7,0x59,0x66,0xb5,0x70,0x8f,0x1d,0xb8,0x4d,0xc3,0x8e,0xb7,
0x5a,0x58,0x5a,0x3a,0xd3,0xd4,0xe2,0x8a,0x42,0x80,0x3c,0x05,0x0e,0x78,0xef,0xdb,
0xb5,0x6d,0x2f,0x11,0x4c,0xac,0xe2,0x9b,0x41,0xce,0xd4,0xdb,0xbe,0x5c,0x9b,0x82,
0x23,0x5b,0x9a,0xe7,0xf7,0xbc,0xd9,0x0d,0x87,0x07,0xfe,0x50,0x72,0xb7,0x9e,0x07,
0x9f,0xe3,0xba,0x9f,0x8b,0x42,0xc8,0xf1,0x5b,0xbc,0x6b,0xe5,0x92,0x62,0x4a,0x99,
0x99,0x15,0x5c,0xa4,0xf0,0x78,0x29,0x20,0xf0,0x52,0xa0,0x7b,0x14,0xa8,0x02,0x0f,
0x62,0x05,0x42,0x2f,0x18,0x0c,0xe9,0x8b,0x66,0x92,0x61,0x78,0x92,0x54,0x7e,0x32,
0xef,0x77,0x5c,0xf3,0xc1,0xec,0x19,0x8c,0xd1,0x4a,0x81,0xfc,0xd5,0x21,0xbe,0x3f,
0xdd,0x35,0x2e,0x15,0x57,0x8a,0x66,0x2c,0xcd,0x46,0xcc,0x51,0xe5,0xef,0x63,0xc6,
0xc4,0x01,0x60,0xd3,0xa8,0x8b,0x00,0x00,0xe3,0x7d,0x95,0x1c,0x1a,0xc8,0xce,0x95,
0x5a,0x79,0x46,0xb3,0xe7,0xb9,0xb5,0x92,0x35,0x9a,0xfd,0x99,0x5f,0x2e,0xd6,0x78,
0xc8,0x43,0x6c,0xdb,0xa5,0xcf,0x75,0x71,0xd0,0x94,0x00,0x10,0x03,0x65,0x5d,0x3d,
0x80,0x1c,0x76,0xab,0xda,0xdb,0x06,0x28,0xee,0x13,0xb7,0x5d,0x37,0xb2,0xbe,0x16,
0x99,0x31,0xac,0x10,0xcb,0xe8,0x73,0xd5,0x0e,0xad,0xa4,0xad,0x69,0xfd,0x14,0xa5,
0x0f,0xd2,0xa8,0x63,0x4c,0x70,0xc7,0xf5,0x17,0x51,0xf1,0x6c,0x56,0x31,0xe8,0x7e,
0xf5,0x74,0x8d,0x6f,0x4a,0xf8,0xe4,0x23,0xcd,0x75,0x28,0xea,0x3f,0x80,0xea,0xe4,
0xfe,0x02,0xbd,0x19,0x32,0xc2,0x23,0x32,0xdb,0x2d,0x27,0xa5,0xb6,0xd2,0x10,0x94,
0x8f,0x60,0x3b,0x01,0x5b,0xf7,0xc5,0x79,0x62,0xa7,0x86,0x92,0x86,0x16,0x86,0x82,
0x5c,0xf2,0x00,0xb7,0x40,0x0e,0xdd,0x6e,0x7e,0x8a,0x1a,0x70,0x4d,0xc9,0x55,0x27,
0xe2,0xe7,0x9f,0x39,0x7b,0xd7,0x2c,0x7b,0x15,0x6a,0x61,0x76,0x15,0x8a,0xce,0x97,
0x9c,0x8c,0x15,0xf2,0xb5,0x25,0xf5,0xa9,0x4a,0x24,0x7f,0x11,0x6d,0x0c,0x1f,0xcb,
0x8f,0xad,0x41,0x4a,0xdc,0x5b,0xc3,0xcb,0xd7,0x9c,0xee,0x87,0x53,0x2e,0xcb,0x74,
0x3e,0x3e,0xda,0x7e,0x1b,0x6e,0x03,0xc8,0x2d,0xc7,0x3f,0x0e,0xdf,0x07,0xdc,0x74,
0x34,0x9a,0xfb,0xed,0x13,0x6f,0x12,0xf7,0x29,0xad,0x16,0xac,0x67,0x87,0x5a,0xb1,
0x47,0xfe,0x9b,0x79,0x96,0xd8,0xfe,0xa6,0x22,0x08,0xea,0x48,0x3e,0xca,0x59,0x21,
0xb4,0x9f,0x62,0xbe,0x78,0x21,0x26,0xba,0xd6,0x0a,0xd8,0x32,0xfe,0x5d,0x80,0xd4,
0x1d,0x2d,0x8e,0x30,0xe7,0x7a,0x91,0xa9,0xdf,0xa9,0x36,0xf1,0x2a,0xd9,0xf7,0x7c,
0x86,0xca,0xc6,0x3c,0x2b,0x74,0x31,0xcd,0x3c,0xd1,0x49,0x99,0xb5,0xca,0x3a,0x5b,
0xbb,0x66,0x0e,0xa5,0xe6,0x39,0x07,0xad,0x10,0x5a,0xea,0x4b,0x5c,0xf2,0x3b,0x75,
0xa8,0xb8,0xbe,0xdd,0x8a,0x4b,0x67,0xf0,0x19,0xd6,0xdf,0x74,0x87,0xec,0x0d,0xdc,
0x6e,0x23,0x35,0x5b,0x48,0xf2,0x64,0x4d,0x81,0x6d,0x88,0xe8,0xf5,0xea,0x72,0x1b,
0x12,0xe4,0x8f,0xcb,0x97,0x63,0xfe,0xa0,0xfd,0x2a,0x4b,0xdb,0xad,0xd1,0x6c,0xf6,
0xf8,0xb0,0x20,0xc6,0x6a,0x1c,0x18,0xad,0x21,0x86,0x23,0x30,0x80,0x86,0xda,0x6d,
0x20,0x25,0x28,0x4a,0x47,0x60,0x90,0x00,0x00,0x0f,0x40,0x2b,0xe5,0x06,0xd3,0x16,
0xd9,0x2a,0xe7,0x29,0x94,0x04,0x39,0x3d,0xf1,0x2a,0x42,0xbf,0x89,0x61,0xa6,0xda,
0x07,0xfc,0x0d,0x20,0x7e,0x95,0xf2,0x4d,0x76,0x62,0xa8,0xae,0xaa,0xae,0xa9,0x76,
0xdf,0xc4,0x0d,0x36,0xe8,0x03,0xda,0x40,0xf6,0x6b,0x6c,0xb2,0x41,0x80,0x00,0x3a,
0x2f,0x8e,0x51,0x69,0x17,0xec,0x66,0xef,0x6c,0x23,0xa8,0x4d,0x86,0xf4,0x62,0x0f,
0xbf,0x5a,0x0a,0x7f,0xef,0x50,0x0b,0xc1,0xc2,0x6f,0x99,0x83,0xea,0x5c,0x3e,0x7f,
0xaa,0xb8,0xc3,0x77,0x8f,0xf7,0xda,0x70,0x7f,0xfc,0xea,0xc4,0x90,0x78,0x5a,0x7f,
0x3a,0xae,0x9f,0x09,0x3b,0x7f,0xd8,0x59,0x26,0xbc,0x59,0xf8,0x29,0x4c,0x19,0xf6,
0xe6,0x52,0x93,0xed,0xd2,0xb9,0xc8,0x3f,0xf4,0x8a,0xc9,0xe0,0xce,0xd5,0x96,0x71,
0x68,0xcf,0x87,0x60,0x47,0xe7,0x20,0xfe,0xe1,0x51,0xdf,0x3b,0x4f,0xaf,0xec,0xb1,
0x9f,0x19,0x38,0x41,0x37,0xad,0x2c,0x96,0x13,0xf3,0x2e,0x3d,0xc5,0xa2,0xaf,0xa8,
0x0a,0x8e,0x40,0xff,0x00,0xd4,0x7f,0xbe,0xa6,0x16,0xc5,0xb3,0x71,0x9f,0x6d,0x3f,
0x4e,0x67,0x97,0x3a,0xde,0x89,0x6e,0x16,0xb7,0x41,0x57,0x2a,0x4a,0xa3,0x2d,0x4c,
0x00,0x7f,0x12,0x96,0xd2,0xaf,0xc9,0x42,0xb9,0xbb,0x92,0xda,0x46,0x1b,0xba,0x6f,
0xf2,0x6c,0x65,0xd3,0x6f,0x31,0x13,0x62,0x5b,0xea,0x8e,0x9b,0x43,0xed,0x35,0xe6,
0xf9,0xbe,0x5f,0x50,0x70,0xad,0xa5,0x92,0x3e,0xe9,0x3c,0x74,0xf1,0xea,0x7f,0x0e,
0x32,0x7d,0x09,0xd0,0x6c,0x63,0x6e,0x98,0x4b,0x98,0xae,0x25,0xf1,0xdf,0x65,0xae,
0x5a,0xe6,0xab,0xed,0x09,0x1e,0x73,0x9e,0x62,0xd2,0x84,0xab,0x83,0xc0,0x00,0x70,
0x84,0xf6,0x03,0xd7,0x93,0xef,0x52,0xd7,0xe3,0x74,0x15,0x79,0x56,0x93,0x0b,0xdf,
0xb7,0x89,0xc4,0xf1,0xb5,0x89,0x7e,0xd7,0xbf,0x42,0x0f,0xb2,0xa0,0x61,0x12,0x17,
0x78,0x15,0x5f,0x71,0x10,0x9d,0xac,0x78,0xa8,0x2d,0xa4,0xbc,0xe4,0x3c,0x7b,0x30,
0x94,0x47,0x71,0xc2,0x56,0xdd,0xc3,0xe6,0x09,0x3f,0x44,0x26,0x60,0x00,0x7d,0x03,
0x60,0x9f,0x43,0x56,0x91,0x55,0xf1,0xe2,0xdf,0xa6,0x12,0x1e,0xc5,0xb0,0xad,0x4f,
0xb5,0xb3,0xd1,0x36,0xc5,0x2f,0xec,0xe9,0x92,0x5a,0x4f,0xde,0x25,0xa7,0x0f,0x5b,
0x0b,0x51,0xf6,0x4a,0x1d,0x4a,0x80,0xfe,0x67,0xc7,0xd6,0xa6,0xb6,0x8e,0x6a,0x24,
0x6d,0x5a,0xd2,0xac,0x4f,0x31,0x8a,0x12,0x86,0xef,0x56,0xd6,0x65,0xad,0xa4,0x9e,
0x43,0x4e,0x29,0x03,0xcc,0x6f,0x9f,0x7e,0x95,0xf5,0x27,0xfb,0x35,0x26,0x66,0x77,
0xda,0x78,0x56,0x1d,0x8c,0x0d,0xdd,0xa4,0xc4,0xff,0x00,0xee,0x8f,0x82,0x7c,0xdc,
0x0d,0xfd,0x15,0x19,0xdd,0x73,0x9b,0xee,0xb3,0x1a,0x54,0x54,0xcb,0x77,0x90,0x8d,
0x00,0xdc,0x4c,0x9d,0x39,0xd5,0x3e,0x96,0xb1,0xbb,0xba,0x53,0x70,0xb0,0x65,0x6d,
0x36,0x10,0x96,0x59,0x75,0x44,0x79,0x12,0xd0,0x3b,0x00,0x87,0x12,0xe2,0x03,0xa9,
0xfd,0xd0,0xd9,0x5a,0x7b,0xa9,0x62,0x54,0x30,0xfb,0x52,0x98,0x6d,0xf6,0x1c,0x43,
0xcc,0xba,0x90,0xb6,0xdc,0x6d,0x41,0x49,0x5a,0x48,0xe4,0x10,0x47,0x62,0x08,0xef,
0xcd,0x69,0x15,0xb8,0x65,0x55,0x03,0x63,0x92,0x66,0xf7,0x24,0x1a,0x9a,0xe1,0xc3,
0x87,0x91,0xea,0x3c,0x41,0xdc,0x78,0x85,0x28,0x70,0x3c,0x2a,0x85,0xf1,0x52,0xd0,
0x71,0xa7,0xda,0xc9,0x13,0x3b,0xb6,0x44,0x2d,0x59,0x72,0xe6,0xca,0xa4,0x29,0xb1,
0xf2,0x37,0x70,0x6c,0x00,0xef,0xa0,0xf9,0x7c,0xc4,0x14,0x2f,0xbf,0x75,0x2b,0xcd,
0x3e,0xc7,0x8b,0x3f,0xd8,0x0e,0xbf,0x2f,0x71,0x3b,0x63,0xc6,0x6f,0xb3,0x9e,0x4b,
0xd9,0x0d,0xb0,0x1b,0x35,0xdc,0x85,0x12,0xa5,0x49,0x60,0x24,0x07,0x15,0xcf,0xef,
0x38,0xd9,0x69,0xc3,0xed,0xcb,0x84,0x0f,0x4a,0xc2,0x37,0xaf,0xa2,0x23,0x5e,0x76,
0xef,0x93,0x58,0xe3,0xc4,0x32,0xef,0xb0,0x9b,0xfb,0x56,0xd0,0x94,0x0e,0x57,0xf1,
0x4c,0x82,0x42,0x12,0x3d,0xcb,0x88,0x2e,0x37,0xc1,0xed,0xf7,0x9c,0xfa,0x80,0x6a,
0x0f,0x78,0x36,0xeb,0x59,0xc2,0xf5,0xe2,0xf1,0xa7,0xd2,0xd6,0x7e,0xcf,0xcc,0x61,
0x15,0xc7,0x1c,0xfe,0xcc,0xc8,0xc9,0x5b,0x89,0xf7,0xec,0x14,0xd1,0x7f,0x9f,0x7e,
0x52,0x8a,0xfa,0xcb,0xe1,0xd6,0x35,0xf6,0xb6,0x0c,0xd8,0x64,0x37,0x92,0x1e,0xe1,
0xf4,0xfb,0xa7,0xe9,0xb7,0xab,0x4a,0xc7,0x4e,0xdd,0x2e,0xbf,0x55,0x74,0x94,0xa5,
0x2b,0xa9,0x2b,0x74,0xae,0x8f,0x3a,0xcb,0xa1,0xe0,0x18,0x46,0x43,0x94,0x5c,0x39,
0xf8,0x0b,0x25,0xba,0x45,0xca,0x47,0x07,0x8f,0xbb,0x65,0xb5,0x38,0xae,0xff,0x00,
0x92,0x4d,0x77,0x95,0x0e,0x3c,0x58,0xf5,0x15,0x78,0x1e,0xce,0xaf,0x90,0x98,0x7d,
0x51,0xe5,0x64,0xb7,0x08,0xb6,0x54,0x29,0xb3,0xc2,0xba,0x4a,0x8b,0xee,0x8f,0xc9,
0x4d,0xb0,0xb4,0x9f,0xc1,0x44,0x7b,0xd1,0x15,0x1c,0x66,0x99,0x6d,0xcf,0x50,0xb3,
0x2b,0xe6,0x4d,0x77,0x70,0x3f,0x77,0xbd,0x4e,0x7a,0xe1,0x29,0x68,0x4f,0x01,0x4e,
0xba,0xb2,0xb5,0x70,0x3d,0x87,0x2a,0x3c,0x0f,0x61,0x57,0xdb,0xb5,0xed,0x23,0x6f,
0x43,0x74,0x1b,0x0f,0xc4,0x02,0x14,0x99,0x91,0x21,0x25,0xe9,0xe5,0x5e,0xa6,0x5b,
0xa4,0xb8,0xff,0x00,0xe8,0x16,0xb5,0x24,0x7f,0x2a,0x52,0x2a,0x9f,0x76,0x11,0xa4,
0xeb,0xd5,0xcd,0xd0,0xe2,0x10,0xdc,0x60,0x3d,0x6c,0xb3,0xbd,0xf6,0xe4,0xfe,0xa0,
0x0a,0x43,0x51,0xc8,0x52,0x02,0x81,0xf5,0x0a,0x77,0xca,0x41,0x1f,0xcf,0xf4,0xab,
0xb1,0xc2,0xb5,0x23,0x17,0xd4,0x76,0xee,0xae,0x63,0x37,0xc8,0x77,0xb4,0xda,0xe6,
0xb9,0x6e,0x9a,0x62,0x39,0xd7,0xe4,0x48,0x6c,0xf0,0xa4,0x2b,0xfe,0xc7,0xd0,0x8e,
0xe0,0x91,0x5f,0x38,0xfc,0x57,0xc4,0x64,0x90,0xc3,0x87,0x44,0x09,0x6b,0x3b,0xef,
0xb7,0x00,0x9b,0xb5,0x97,0xe9,0xf7,0xb9,0xe6,0xea,0xfa,0x9d,0xbc,0xb9,0x6b,0xad,
0xe8,0xe5,0x4f,0xe1,0x9b,0x56,0xd4,0xcb,0x9c,0x64,0xa8,0xbf,0xf6,0x42,0xe2,0x24,
0xa3,0xd5,0x3e,0x7a,0x92,0xc1,0x57,0xe8,0x1d,0x27,0xf4,0xaa,0x3a,0xd2,0xcd,0x2d,
0xc8,0xf5,0x97,0x39,0xb6,0x62,0x78,0xad,0xbd,0x77,0x0b,0xbc,0xf7,0x3a,0x52,0x91,
0xd9,0x0d,0x23,0xf7,0x9d,0x71,0x5f,0xba,0x84,0x8e,0xe5,0x47,0xfe,0x7c,0x0a,0xf4,
0x3d,0x91,0x63,0xd6,0xdc,0xb6,0xc3,0x70,0xb2,0xde,0x61,0x33,0x72,0xb5,0x4f,0x61,
0x71,0xa5,0x44,0x90,0x9e,0xa4,0x3a,0xda,0x87,0x0a,0x49,0x1f,0x88,0x35,0x87,0x69,
0x1e,0xdf,0xf4,0xf3,0x42,0x20,0x48,0x89,0x82,0x62,0xd0,0xf1,0xf4,0xc9,0x3c,0xbe,
0xf3,0x65,0x6f,0x48,0x77,0xbf,0x20,0x2d,0xe7,0x54,0xa7,0x14,0x90,0x7d,0x12,0x55,
0xc0,0xf6,0x02,0xb4,0xcc,0xab,0x9d,0x21,0xcb,0x18,0x65,0x45,0x3b,0x21,0x2e,0x9d,
0xee,0xbb,0x4e,0xda,0x78,0x03,0xbd,0xbd,0xf6,0x3b,0xd8,0x0d,0xef,0xc8,0x52,0xc9,
0x17,0x68,0xe0,0x6f,0xb2,0xe3,0xed,0xdf,0x43,0x6c,0xdb,0x76,0xd2,0x7b,0x3e,0x17,
0x67,0x21,0xff,0x00,0x86,0x05,0xe9,0xb3,0xbc,0xb0,0x85,0xcd,0x94,0xbe,0x3c,0xd7,
0x94,0x07,0xd7,0x80,0x90,0x09,0x24,0x21,0x28,0x4f,0x27,0xa7,0x9a,0xd3,0xd9,0x1c,
0xe6,0xb7,0x3d,0xba,0xcb,0x76,0x2b,0x19,0x49,0x93,0x80,0xe9,0x43,0xe8,0xbb,0xdd,
0x9d,0x4a,0x7a,0x9b,0x99,0x7c,0x21,0x49,0x8f,0x1f,0x9f,0x4e,0x19,0x1d,0x6a,0x3c,
0x73,0xf3,0x05,0xa4,0x8f,0x43,0x5c,0x5d,0xf8,0x6f,0x46,0x06,0xdd,0xf0,0xf9,0x38,
0xde,0x39,0x31,0x99,0x3a,0x91,0x74,0x67,0xa2,0x3b,0x48,0x3d,0x5f,0x66,0x34,0xa1,
0xc1,0x92,0xe0,0xf6,0x57,0x1f,0xd5,0xa4,0xfa,0x9e,0x14,0x41,0x48,0xe0,0xff,0x00,
0x7e,0x18,0x62,0xd0,0xf6,0xd4,0xad,0x93,0x60,0xbc,0x64,0x5e,0x66,0xdd,0x67,0xbf,
0x7c,0x79,0x6b,0x2b,0x71,0x73,0x0b,0xc4,0x02,0xb2,0x7b,0xf2,0x58,0x11,0xcf,0xeb,
0xcf,0xa9,0x35,0x8e,0x8e,0x92,0xba,0x9b,0x0d,0x9b,0x33,0x56,0x02,0x5f,0x2b,0xb4,
0x30,0x9e,0x6e,0xf0,0x75,0x49,0xe9,0x60,0x5a,0xdf,0xc4,0x6e,0x38,0x0b,0xd5,0xc1,
0x70,0x60,0xf0,0x5b,0x97,0x71,0xfa,0xdd,0x6e,0xdb,0xd6,0x8f,0x5f,0xf3,0x59,0xe9,
0x4b,0xef,0x44,0x6b,0xca,0x83,0x11,0x47,0xff,0x00,0x9a,0x96,0xbf,0x95,0x96,0xfd,
0x47,0x6e,0xae,0xea,0x23,0xb8,0x4a,0x54,0x78,0x3c,0x71,0x54,0x07,0x93,0x64,0x97,
0x3c,0xc7,0x21,0xb9,0x5f,0x6f,0x53,0x1c,0xb8,0x5d,0xae,0x52,0x1c,0x97,0x2e,0x53,
0xbc,0x75,0x3a,0xea,0xd4,0x54,0xa5,0x1e,0x3b,0x0e,0x49,0x3d,0x80,0x00,0x7b,0x54,
0xbe,0xf1,0x39,0xdc,0x90,0xd5,0xad,0x59,0x46,0x11,0x64,0x96,0x1d,0xc5,0xf1,0x15,
0xad,0x97,0x14,0xd2,0xc9,0x44,0xab,0x81,0xec,0xf2,0xfe,0x84,0x37,0xc7,0x96,0x9e,
0xdd,0x88,0x70,0x82,0x42,0xea,0x31,0xe8,0xb6,0x9b,0x48,0xd6,0x0d,0x58,0xc5,0x30,
0xc8,0xca,0x71,0xb5,0x5e,0x6e,0x0d,0x45,0x71,0xd6,0x93,0xd4,0xa6,0x9a,0x2a,0xe5,
0xd7,0x00,0xfe,0x44,0x05,0xab,0xfb,0x35,0xdd,0x72,0x0e,0x06,0xcc,0xbf,0x83,0xbb,
0x10,0xab,0x1a,0x64,0x90,0x6b,0x71,0x3f,0x75,0x80,0x5c,0x0f,0xa7,0x78,0xfa,0xd8,
0xf0,0xac,0xe6,0x7e,0xb7,0x69,0x0a,0xe6,0xfc,0x3e,0x30,0x09,0x5a,0x7b,0xb4,0xcc,
0x22,0x34,0xe6,0xc3,0x53,0x6e,0x6d,0x3b,0x77,0x71,0x00,0xf3,0xc2,0x24,0x38,0xa7,
0x1a,0xfd,0x4b,0x45,0xa2,0x47,0xb1,0x24,0x7b,0x55,0x7c,0x78,0xa9,0xea,0x40,0xcc,
0xb7,0x30,0x6c,0x0c,0x15,0x7c,0x2e,0x2d,0x6d,0x62,0x09,0xef,0xca,0x54,0xfb,0x83,
0xcf,0x71,0x43,0xf4,0x75,0xb4,0x1f,0xc5,0xb3,0x57,0x11,0x02,0x0c,0x3b,0x15,0xae,
0x3c,0x38,0xad,0x22,0x24,0x08,0x6c,0xa5,0x96,0x9b,0x4f,0x64,0xb4,0xda,0x13,0xc2,
0x40,0xfc,0x00,0x03,0xfb,0xab,0xcf,0x1e,0xb5,0x67,0xcb,0xd5,0x2d,0x5d,0xcc,0xb2,
0xd5,0x85,0xa5,0x37,0x9b,0xb4,0x99,0x8d,0x21,0x67,0x92,0xdb,0x4a,0x70,0x96,0xd1,
0xfd,0x94,0x74,0xa7,0xf4,0xad,0x13,0xe1,0xd3,0x1d,0x8c,0x66,0x1a,0xcc,0x62,0x41,
0xc5,0xcf,0xa1,0x91,0xdb,0x7f,0xa8,0x70,0x53,0x4f,0xdd,0x60,0x6a,0xde,0x1e,0x1a,
0x98,0x2b,0xd9,0xa6,0xed,0xb1,0x99,0x01,0xb0,0xe4,0x4b,0x0c,0x79,0x37,0x79,0x3c,
0xfe,0xea,0x52,0xd9,0x6d,0xb2,0x3f,0xfc,0xaf,0x35,0x57,0x3f,0x98,0xe4,0x28,0xc4,
0x71,0x1b,0xe5,0xf5,0xc0,0x0b,0x76,0xb8,0x2f,0xcd,0x50,0x3e,0x9c,0x36,0xda,0x96,
0x7f,0xe9,0xaa,0xe1,0xf0,0x73,0xc2,0x1c,0x5d,0xc3,0x51,0xf3,0x07,0x59,0x29,0x69,
0xb6,0xa2,0xda,0x63,0x3c,0x47,0x65,0x15,0x15,0x3a,0xf2,0x47,0xe5,0xd2,0xc1,0xfe,
0xd0,0xa9,0xa1,0xbc,0xbc,0x88,0xe2,0xdb,0x56,0xd5,0x19,0xc9,0x07,0xa9,0x76,0x37,
0xe1,0x82,0x3d,0x8b,0xe3,0xc8,0xe7,0xf4,0xf3,0x79,0xac,0x2e,0x7d,0x97,0xed,0x5c,
0xd6,0xca,0x21,0xb8,0x6f,0x67,0x1f,0xe6,0x37,0x3f,0xf6,0xb2,0xf7,0x08,0xd3,0x1d,
0xd5,0x07,0x49,0x92,0xec,0xc9,0x2e,0xc8,0x7d,0xc5,0x3a,0xfb,0xab,0x2e,0x38,0xe2,
0xcf,0x2a,0x52,0x89,0xe4,0x92,0x7e,0xa4,0xd5,0xde,0xec,0x0b,0x6d,0x23,0x6f,0x3a,
0x2b,0x19,0x77,0x48,0xa1,0xac,0xcb,0x23,0x08,0xb8,0x5d,0x89,0xfd,0xb6,0x07,0x1f,
0x73,0x1b,0xd0,0x71,0xe5,0xa5,0x47,0xa8,0x7f,0x1a,0xdc,0xee,0x40,0x15,0x5f,0x5e,
0x1a,0xdb,0x72,0xff,0x00,0x3c,0xda,0xd4,0x8c,0x96,0xed,0x18,0xb9,0x8b,0x62,0x0a,
0x6e,0x6b,0xc1,0x68,0xe5,0x12,0x26,0x12,0x4c,0x76,0x7b,0xfa,0x80,0x52,0x5c,0x57,
0xaf,0x66,0xc0,0x3f,0xb6,0x0d,0x59,0x4e,0xf6,0xb5,0xb0,0xe8,0x46,0xdd,0x32,0x6b,
0xf4,0x57,0x92,0xcd,0xee,0x6a,0x05,0xaa,0xd4,0x54,0xae,0x0f,0xc4,0xbc,0x08,0x0b,
0x4f,0xe2,0x84,0x07,0x1c,0x03,0xfd,0x9d,0x6d,0xff,0x00,0x11,0x31,0x59,0x71,0x1a,
0xb8,0x32,0xc5,0x01,0xef,0x38,0xb7,0x5f,0xa9,0xf9,0x5a,0x7c,0x87,0xcc,0x7d,0xba,
0x28,0xa0,0x68,0x68,0x32,0x39,0x64,0x5a,0x0d,0xaf,0x96,0x8d,0x79,0x19,0xbb,0xb6,
0x72,0xd2,0xa2,0xe3,0xb9,0x0b,0xf6,0x56,0xde,0x69,0xc0,0xb4,0xc9,0x6d,0xb4,0x36,
0x52,0xfa,0x48,0xed,0xd2,0xb2,0xa5,0xf0,0x47,0xa8,0x4f,0x35,0xa3,0xfc,0x4d,0xb5,
0xd2,0x4e,0x95,0xe8,0xd5,0xb3,0x1a,0xb5,0x3c,0xa8,0xf7,0x8c,0xbe,0x6f,0xc2,0x97,
0x50,0xa2,0x95,0x37,0x0d,0xa2,0x85,0xc8,0x29,0x23,0xdd,0x45,0x4d,0x36,0x47,0xa1,
0x4b,0x8b,0xfc,0x2a,0x2c,0x78,0x47,0x6a,0x91,0xc7,0x35,0x93,0x21,0xc1,0xe4,0xc8,
0x42,0x22,0x64,0xb6,0xff,0x00,0x88,0x8e,0xda,0xcf,0x75,0x4a,0x8d,0xca,0x80,0x4f,
0xe6,0xd2,0xdf,0x27,0xeb,0xe5,0x8f,0xa5,0x61,0xbe,0x25,0x5a,0x94,0x9d,0x42,0xdd,
0xa4,0x8b,0x4c,0x69,0x3f,0x11,0x6f,0xc6,0x58,0x8d,0x67,0x40,0x42,0xf9,0x6c,0x3d,
0xcf,0x9a,0xff,0x00,0x03,0xd9,0x41,0x6e,0x96,0xd5,0xef,0xcb,0x5c,0x7b,0x0a,0xc2,
0xe1,0xf9,0x3a,0x3a,0x4c,0xe4,0x28,0xf4,0xde,0x18,0x9a,0x24,0x17,0xf1,0x00,0x00,
0x3f,0xdf,0xeb,0x62,0xbd,0xba,0x4b,0xc5,0x7f,0x15,0x73,0x2c,0x38,0x5d,0x65,0xb5,
0x9f,0x55,0x24,0x2b,0xfe,0x15,0x01,0x7c,0x3a,0xd2,0x9b,0x7e,0xe5,0x37,0x3b,0x01,
0x09,0xe9,0x42,0x6f,0x9f,0x28,0xe3,0xd0,0x26,0x64,0xd0,0x3f,0xea,0xa9,0xf4,0xca,
0x3c,0xb6,0x50,0x8f,0xe1,0x48,0x15,0x5f,0xdb,0x0d,0x7d,0x2c,0x6f,0x3f,0x72,0xb0,
0xca,0x90,0x16,0xe5,0xca,0x4b,0xa1,0x1c,0xfc,0xc4,0x26,0x7b,0xc0,0x90,0x3e,0x83,
0xac,0x73,0xf9,0x8a,0xd0,0x70,0x21,0xab,0x07,0xc5,0x9a,0x3f,0xa2,0x33,0xf4,0x90,
0x29,0x5f,0xf3,0x35,0x6d,0x0f,0x13,0xe9,0xb7,0xcb,0x66,0xd6,0x65,0xcd,0xb1,0xdd,
0x66,0xda,0x94,0xc5,0xda,0x21,0x96,0xb8,0x4f,0xa9,0x95,0x3a,0xc2,0xba,0xd0,0x5b,
0x51,0x49,0x04,0xa4,0xad,0x6d,0x92,0x3d,0x39,0x48,0xa8,0xdb,0xe1,0x3d,0xaf,0x17,
0xf9,0x7a,0x8d,0x7e,0xd3,0xcb,0xe5,0xf2,0x5d,0xca,0xd7,0x32,0xda,0x67,0x5b,0x99,
0x9f,0x25,0x6e,0xf9,0x0f,0x32,0xb1,0xd6,0x86,0x42,0x89,0xe9,0x0a,0x43,0x8a,0x52,
0x80,0xff,0x00,0x54,0x0f,0xb1,0xa9,0x99,0xbe,0xfc,0x49,0xcc,0xcf,0x69,0x1a,0x93,
0x09,0xa1,0xcb,0xb1,0xad,0xc2,0xe4,0x0f,0x1e,0x82,0x33,0xa8,0x90,0xbf,0xfd,0x0d,
0x2b,0xfb,0xea,0x9f,0xf6,0x81,0x9b,0x2b,0x4f,0x77,0x39,0xa6,0xd7,0xa0,0xf2,0x63,
0xb6,0x9b,0xcb,0x31,0x1e,0x75,0x67,0x84,0xa5,0x99,0x1c,0xb0,0xe1,0x27,0xd8,0x74,
0x3a,0xaa,0xe8,0xf9,0x4a,0x8a,0x1c,0x63,0x26,0xd7,0x51,0x96,0x82,0xf6,0x97,0x11,
0xb6,0xf7,0x0d,0x6b,0x9b,0xfa,0x82,0x3d,0x14,0x32,0x12,0xd9,0x5a,0x55,0xdf,0xeb,
0xae,0x96,0xc4,0xd6,0xad,0x21,0xca,0xf0,0xa9,0x9c,0x25,0x37,0x78,0x2b,0x65,0x97,
0x4f,0xff,0x00,0x49,0xf1,0xf3,0x32,0xe7,0xf6,0x5c,0x4a,0x15,0xc7,0xbf,0x1c,0x7b,
0xd4,0x65,0xf0,0xad,0xce,0xe7,0xdc,0x74,0x5b,0x21,0xc0,0x6f,0x08,0x53,0x17,0x6c,
0x26,0xf0,0xe4,0x53,0x15,0xd4,0xf4,0xb8,0xc3,0x2f,0x15,0x2c,0x21,0x60,0xf7,0xe4,
0x3c,0x99,0x23,0xbf,0xd0,0x0f,0x6a,0x9a,0xde,0x95,0x0b,0xe0,0xd8,0x9b,0xd0,0x1f,
0x11,0xdf,0x31,0x89,0x21,0x8c,0x7b,0x56,0xec,0xef,0xb9,0xf0,0xfc,0x84,0x36,0x8b,
0x93,0x1c,0x2d,0x7c,0x8f,0x72,0xae,0x85,0x28,0x13,0xea,0xa9,0x2a,0x15,0xcc,0xf0,
0x79,0xbf,0x8c,0xc2,0xab,0x70,0x97,0xf3,0x6e,0xd9,0x9f,0xdd,0x1f,0xcf,0x6f,0x33,
0x1d,0xff,0x00,0x2a,0x9d,0xc2,0xce,0x0e,0xf6,0x5d,0x5f,0x8b,0x46,0x95,0x2b,0x2c,
0xd0,0xcb,0x46,0x67,0x15,0x94,0xae,0x5e,0x29,0x70,0x01,0xf5,0x7a,0x11,0x12,0x4f,
0x4b,0x6b,0x23,0xeb,0xc3,0xa2,0x3f,0x6f,0xa1,0x51,0xa8,0xff,0x00,0xe1,0xd7,0xbe,
0x37,0x34,0xea,0xeb,0x03,0x4b,0xf3,0xcb,0x81,0x38,0x94,0xc7,0x03,0x36,0x8b,0x9c,
0x85,0x73,0xf6,0x63,0xca,0x3d,0x9a,0x59,0xff,0x00,0x52,0xb5,0x1e,0x01,0x3d,0x9b,
0x51,0xe4,0xf0,0x92,0x4a,0x6c,0x2f,0x75,0x91,0xf1,0xcb,0x86,0xdd,0xf3,0xeb,0x76,
0x51,0x78,0x81,0x62,0xb6,0xce,0xb4,0xc8,0x8e,0xdc,0xdb,0x8b,0xa1,0xb6,0x91,0x20,
0xa0,0x96,0x0f,0x7f,0xda,0x3e,0x60,0x41,0x09,0x1d,0xc9,0x1c,0x0e,0xf5,0xe7,0xf6,
0xba,0xe6,0x45,0xa4,0x83,0x32,0xe5,0xa9,0xb0,0x9a,0xe6,0xdd,0xac,0x71,0xd2,0x6d,
0xf2,0xdc,0x5c,0x16,0x9e,0xa1,0xd7,0xf6,0x36,0x3b,0x1d,0xed,0xa6,0x26,0x37,0x87,
0x05,0xe9,0x6f,0xd2,0xa9,0x23,0x73,0x38,0xbc,0xcd,0xa0,0x6f,0x71,0x77,0x9b,0x0a,
0x5c,0x8d,0x16,0x2d,0xd6,0x3e,0x53,0x68,0x00,0x74,0x82,0xca,0xdd,0xf3,0x14,0xd0,
0xe3,0xd5,0xb0,0xe2,0x5e,0x67,0x8f,0x74,0xa3,0x83,0xea,0x6a,0x6c,0x78,0x67,0xee,
0xc5,0xdd,0x5d,0xc2,0x1d,0xd3,0xdc,0x9e,0x61,0x7b,0x2d,0xc6,0xe3,0xa5,0x51,0x24,
0xbb,0xfb,0x53,0xad,0xe3,0x84,0x82,0xa3,0xcf,0x75,0xb4,0x4a,0x50,0xa2,0x78,0xe5,
0x2a,0x6c,0xfc,0xc7,0xac,0xd6,0x15,0xe2,0xb1,0x89,0x59,0x75,0x23,0x4c,0x2c,0x3a,
0x85,0x8c,0xdd,0x2d,0xb7,0xa7,0xb1,0x5b,0x8a,0xad,0x37,0x45,0xdb,0x64,0x36,0xf9,
0x65,0xa7,0xf8,0xe9,0x0e,0x29,0x0a,0x3d,0x25,0x0e,0xa1,0x29,0xe9,0x3d,0xf9,0x78,
0xfa,0x77,0xad,0x77,0x27,0x36,0xaf,0x2a,0x66,0x87,0xe1,0x75,0x63,0xba,0xfe,0xe1,
0x3e,0x06,0xfb,0xb1,0xde,0xfc,0x0f,0xee,0x23,0x90,0xbd,0xcb,0x69,0x23,0xd4,0x15,
0xa8,0x63,0x99,0x04,0x0c,0xb3,0x1e,0xb5,0xdf,0x2d,0x52,0x51,0x32,0xd7,0x73,0x8a,
0xd4,0xd8,0x92,0x5b,0x3c,0xa5,0xd6,0x5c,0x40,0x5a,0x16,0x3f,0x02,0x95,0x03,0xfa,
0xd7,0x63,0x51,0x47,0xc3,0x03,0x53,0x9b,0xd4,0xad,0x9c,0x61,0xc8,0x2f,0x17,0xa7,
0xe3,0xaa,0x7a,0xc1,0x2c,0x1f,0xdc,0x2c,0xab,0xa9,0x94,0x8f,0xc3,0xc8,0x71,0x8f,
0xf8,0xfd,0x2a,0x57,0x57,0xd4,0xcb,0x1e,0x95,0x53,0xde,0x38,0x39,0x8a,0x9c,0xbc,
0xe9,0x5e,0x28,0xdb,0xe4,0x25,0x98,0xf3,0x6e,0x8f,0xb0,0x0f,0x62,0x56,0xa6,0x9b,
0x69,0x44,0x7e,0x1e,0x5b,0xa0,0x7e,0x66,0xad,0x86,0xb4,0x06,0x7f,0xb3,0x2c,0x1b,
0x58,0x37,0x00,0xce,0xa8,0x67,0xf1,0x1b,0xca,0x15,0x6d,0xb5,0xb1,0x6a,0xb4,0xd8,
0xa5,0x36,0x0c,0x26,0x52,0x85,0xba,0xe2,0x9d,0x79,0x07,0xb3,0xcb,0x2a,0x79,0x40,
0x25,0x43,0xa4,0x00,0x09,0x0a,0x3c,0x74,0x91,0x52,0x06,0xdf,0x62,0xeb,0x85,0xaa,
0x36,0x41,0x2f,0x49,0x71,0x9c,0x96,0x70,0xbe,0x40,0x5d,0xa2,0x5d,0xca,0xc7,0x67,
0x7a,0x4a,0x92,0xca,0x96,0x92,0xb4,0xb6,0xf2,0x50,0x7c,0xb5,0x72,0x90,0x3a,0x81,
0x04,0x7b,0x10,0x78,0x23,0xbc,0xc2,0xf4,0xfb,0x72,0xdb,0x5f,0xbe,0xaf,0x28,0xb1,
0x61,0x59,0xc6,0x26,0xf3,0x6d,0x7f,0x48,0x93,0xf6,0x2b,0xeb,0x8a,0xe3,0x5e,0xa5,
0x2f,0x02,0x82,0xda,0xd2,0x3d,0x78,0x57,0x3c,0x11,0xcf,0x62,0x39,0xaf,0x43,0x90,
0xe1,0xc7,0xb7,0x44,0x62,0x24,0x46,0x1b,0x8b,0x15,0x84,0x25,0xa6,0x98,0x65,0x01,
0x08,0x6d,0x09,0x1c,0x25,0x29,0x48,0xec,0x00,0x00,0x00,0x07,0xa5,0x7d,0xaa,0xce,
0x4a,0x2a,0x69,0x44,0x82,0x48,0xda,0x7b,0x4f,0x9a,0xe0,0x1d,0x56,0xd8,0x5f,0xad,
0xbc,0xd5,0x6e,0x47,0x8a,0xa5,0xcb,0x1f,0x8c,0x46,0x69,0x1a,0xdc,0x86,0xee,0xf8,
0x05,0x8e,0xe1,0x38,0x0e,0x0c,0x88,0x92,0xde,0x8c,0x85,0x1f,0xaf,0x42,0xba,0xff,
0x00,0xea,0xac,0x1f,0x51,0xfc,0x56,0x35,0x8b,0x32,0x80,0xe4,0x2b,0x1b,0x16,0x5c,
0x2d,0x95,0xff,0x00,0xf7,0x36,0xd8,0xea,0x7a,0x57,0x1e,0xe3,0xad,0xe5,0x29,0x23,
0xf3,0x4a,0x01,0x1f,0x5a,0xb0,0xfd,0xf0,0x78,0x75,0x62,0x3b,0x8d,0xc7,0x6e,0x99,
0x1e,0x29,0x6d,0x8b,0x8e,0xea,0x7b,0x48,0x5c,0x86,0x65,0xc5,0x4a,0x59,0x66,0xea,
0xe7,0xed,0x16,0xa5,0x0e,0xc0,0xa9,0x5d,0xc0,0x77,0xb2,0x81,0x20,0xa8,0xa9,0x23,
0x8a,0xa2,0xdb,0xad,0xa6,0x6d,0x8e,0xeb,0x32,0xd9,0x70,0x8a,0xec,0x3b,0x84,0x37,
0x97,0x1e,0x44,0x57,0x90,0x52,0xe3,0x4e,0xa1,0x45,0x2a,0x42,0x81,0xee,0x08,0x20,
0x82,0x3f,0x0a,0xd5,0x62,0xc9,0x59,0x7a,0x09,0x7b,0x56,0x51,0xb6,0xfe,0x77,0x23,
0xe8,0x49,0x1f,0xa2,0x93,0xb5,0x79,0xf1,0x4b,0xb5,0xda,0x75,0xfa,0xe7,0x2a,0xe3,
0x73,0x9b,0x22,0xe3,0x70,0x94,0xe2,0x9e,0x91,0x2e,0x5b,0xaa,0x75,0xd7,0x96,0xa3,
0xca,0x94,0xb5,0xa8,0x92,0xa5,0x13,0xdc,0x92,0x79,0xac,0xff,0x00,0x49,0xb7,0x1d,
0xa8,0xfa,0x1b,0x6f,0xbc,0xc1,0xc1,0xf2,0x99,0x56,0x18,0x97,0x74,0x74,0x4b,0x65,
0xa4,0x36,0xe2,0x49,0xe0,0xa4,0x2d,0x1d,0x69,0x57,0x96,0xe0,0x07,0x8e,0xb4,0x70,
0xaf,0x4e,0xfd,0x85,0x62,0xb2,0xf4,0xfb,0x29,0xb7,0xda,0x45,0xd6,0x56,0x35,0x78,
0x8d,0x6c,0x23,0x91,0x35,0xe8,0x0e,0xa1,0x92,0x3e,0xbd,0x65,0x3d,0x3e,0xe3,0xde,
0xba,0x0a,0xdb,0x27,0xa5,0xa7,0xa9,0x8b,0xb0,0x9e,0x30,0xe6,0x6d,0xb1,0x00,0x8d,
0xb8,0xd8,0xed,0xb7,0x82,0x8c,0x12,0x0d,0xc2,0xfd,0x5a,0xd4,0xe2,0xd4,0xa5,0x28,
0xa9,0x4a,0x3c,0x95,0x13,0xc9,0x26,0xac,0x0b,0xc2,0x23,0x48,0xd5,0x7b,0xd4,0x5c,
0x9f,0x51,0x25,0xb0,0x95,0x44,0xb1,0x45,0x16,0xd8,0x2b,0x5a,0x79,0x3f,0x14,0xff,
0x00,0x75,0xa9,0x07,0xd8,0xa5,0xa4,0x94,0x9f,0xc1,0xf1,0xf8,0xd5,0x7e,0x54,0xd4,
0xda,0xc7,0x88,0x55,0x9b,0x6b,0xda,0x57,0x03,0x0e,0x85,0xa7,0x0f,0x5f,0x1f,0x72,
0x5b,0xb3,0xae,0x97,0x45,0x5e,0x44,0x72,0xf3,0xcb,0x57,0x48,0xe8,0x6b,0xc8,0x5f,
0x01,0x2d,0x21,0xa4,0xf7,0x57,0x72,0x92,0x7b,0x73,0x5a,0x96,0x72,0xa7,0xc4,0x6b,
0x30,0x69,0x69,0x30,0xc8,0xf5,0xc9,0x25,0x9b,0xc8,0x16,0x6f,0x2e,0xdd,0xc4,0x0d,
0xc0,0xb7,0x5d,0xd4,0xb1,0x16,0x87,0x5d,0xc5,0x59,0xb6,0xe8,0x73,0xbf,0xf3,0x69,
0xb7,0x7d,0x43,0xc8,0x92,0xe9,0x66,0x44,0x5b,0x34,0x84,0x46,0x70,0x7e,0xec,0x87,
0x13,0xe5,0x32,0x7f,0xf3,0x16,0x8a,0xf3,0xeb,0x56,0x8b,0xbc,0x9d,0xe1,0xe1,0xba,
0xe7,0xb2,0x09,0x53,0x71,0x39,0x0b,0x44,0x9b,0xbd,0xea,0x1d,0xa6,0x7d,0xaa,0x59,
0x4a,0x65,0xc0,0x50,0x2b,0x93,0xca,0xd2,0x09,0xe5,0x2a,0xf8,0x6f,0x95,0x60,0x90,
0x41,0xf6,0x21,0x40,0x55,0xd5,0x6a,0x9f,0x0c,0xb0,0xa9,0xb0,0xdc,0x3e,0xa0,0xd5,
0x30,0xb2,0x43,0x21,0x04,0x1e,0x6c,0xd0,0x2d,0xfa,0x93,0xff,0x00,0x8a,0x49,0xdc,
0x1c,0x45,0x95,0x9a,0xed,0x97,0x5d,0xec,0x1b,0x32,0xd8,0x8d,0xa7,0x26,0xbb,0x32,
0x2e,0x19,0x06,0x5b,0x74,0x9d,0x36,0xd3,0x65,0x4a,0xfa,0x1c,0x94,0xb4,0x28,0x47,
0xeb,0x51,0xe0,0xf4,0xb6,0x90,0xc2,0x49,0x57,0x1e,0x8a,0x48,0x1c,0x95,0x0a,0x84,
0xda,0xcf,0xba,0xdd,0x50,0xd7,0x99,0xd3,0x17,0x94,0xe5,0x73,0x55,0x6c,0x90,0xa2,
0x45,0x8e,0x0b,0xaa,0x8f,0x6f,0x6d,0x3d,0x5c,0xa5,0x21,0x94,0x9e,0x15,0xd3,0xdb,
0x85,0x2f,0xa9,0x5d,0x87,0x2a,0x27,0xbd,0x61,0x19,0xd6,0x7f,0x72,0xcf,0xa4,0x59,
0xd5,0x3d,0x49,0x44,0x6b,0x3d,0xae,0x35,0x9e,0x04,0x66,0xc7,0x08,0x62,0x3b,0x28,
0xe0,0x01,0xf8,0xa9,0x45,0x6e,0x28,0xfb,0xad,0xc5,0x1e,0xdc,0xf0,0x31,0xaa,0xdb,
0xf0,0xac,0xb5,0x4b,0x47,0x53,0x36,0x25,0x3b,0x03,0xaa,0x25,0x71,0x71,0x27,0x7d,
0x20,0x9d,0x9a,0xde,0x96,0x16,0x04,0x8d,0xc9,0xf2,0xb0,0x11,0x3a,0x42,0x40,0x68,
0xe1,0x5d,0xd7,0x86,0xbe,0x27,0x69,0xc6,0xf6,0x8b,0x89,0x4c,0xb6,0xa5,0x2a,0x7e,
0xf2,0xec,0xbb,0x84,0xe7,0x81,0xfe,0xb1,0xff,0x00,0x88,0x5b,0x3f,0xa7,0x4a,0x19,
0x42,0x38,0xfe,0x42,0x7d,0xcd,0x42,0x9f,0x15,0xed,0x6b,0xff,0x00,0x2d,0x75,0x96,
0xdd,0x81,0x41,0x70,0x2a,0xd9,0x89,0x31,0xcc,0x82,0x85,0x73,0xd7,0x35,0xf4,0xa5,
0x6b,0xe7,0xbf,0x1f,0x23,0x61,0xb4,0x8f,0x70,0xa2,0xe0,0xae,0x9b,0x65,0x9e,0x20,
0x49,0xdb,0x36,0x09,0x7d,0xc4,0xb2,0x1b,0x1c,0xbc,0x86,0xd4,0x56,0xb9,0xd6,0x8f,
0x83,0x75,0x29,0x5b,0x12,0x14,0x9e,0x14,0xd2,0xfa,0x8f,0x01,0xa5,0x10,0x95,0x72,
0x9e,0xe9,0x3d,0x67,0xa5,0x7d,0x5d,0xa2,0x36,0x4b,0x90,0xce,0xcb,0xb2,0x3b,0xad,
0xf6,0xe8,0xf1,0x93,0x73,0xba,0x4b,0x76,0x6c,0xa7,0x8f,0xab,0x8e,0xb8,0xb2,0xb5,
0xab,0xf5,0x52,0x89,0xad,0x2f,0x01,0xca,0x75,0x54,0xf9,0xa6,0xb3,0x16,0xae,0x17,
0x68,0x2e,0x31,0x9e,0xba,0xef,0xbf,0xf8,0xb7,0xbb,0xbf,0x5d,0xb8,0x52,0xbe,0x40,
0x63,0x0d,0x0b,0x97,0x81,0xe6,0xf7,0x7d,0x36,0xcc,0xac,0xd9,0x4d,0x86,0x4f,0xc2,
0x5e,0x2d,0x32,0x91,0x2e,0x33,0xbc,0x72,0x02,0xd2,0x79,0xe1,0x43,0xdd,0x27,0xb8,
0x23,0xdc,0x12,0x3d,0xeb,0x97,0x02,0xed,0x37,0x39,0xd4,0xf8,0xd7,0x3b,0xb4,0x83,
0x2a,0xe3,0x78,0xbc,0x26,0x44,0xb7,0xd4,0x38,0xf3,0x1d,0x75,0xe0,0xa5,0xa8,0x81,
0xc7,0xa9,0x51,0x3d,0xab,0x17,0xae,0xdf,0x0e,0x94,0x98,0x39,0x7d,0x8e,0x4a,0xfb,
0xa1,0x99,0xcc,0x38,0x7f,0x20,0xe2,0x4f,0xfd,0xab,0xae,0x4b,0x13,0x3b,0xf3,0x35,
0xa3,0x5e,0x9b,0x5f,0xc6,0xdb,0x9b,0x5f,0xa5,0xd5,0xb0,0xe8,0xbd,0x22,0x1f,0x53,
0x5e,0x7e,0x77,0x01,0x7f,0xb8,0x59,0x77,0x35,0xa9,0x77,0x1b,0x54,0xf9,0x36,0xe9,
0xad,0xe4,0xf7,0x22,0xdc,0xa8,0x6f,0x29,0xa7,0x10,0x7e,0x25,0xc1,0xd9,0x49,0x20,
0x8a,0x9f,0xbb,0x85,0xf1,0x58,0x6b,0x4e,0xf5,0x42,0x6e,0x33,0x83,0x63,0x30,0x32,
0x6b,0x65,0xa6,0x42,0xa3,0xce,0xba,0xcc,0x94,0xb4,0xa6,0x4b,0x89,0x3c,0x2d,0x11,
0xfa,0x07,0x01,0x29,0x20,0x8f,0x30,0xf5,0x05,0x1e,0x78,0x4f,0x1c,0x15,0x56,0x46,
0x73,0x94,0x39,0x9c,0x66,0xd9,0x06,0x46,0xf3,0x3f,0x0e,0xf5,0xe2,0xe1,0x22,0xe0,
0xb6,0x82,0xba,0xba,0x14,0xeb,0x8a,0x70,0xa7,0x9e,0x07,0x3c,0x15,0x71,0xcf,0x02,
0xb8,0x87,0xc3,0x6c,0xb9,0x88,0x61,0x6e,0x96,0xaa,0xba,0x2d,0x2c,0x95,0x82,0xd7,
0x22,0xfc,0xdf,0x71,0xc8,0xdb,0xaa,0xbb,0x9d,0xed,0x76,0xc0,0xa9,0x3b,0xa4,0xfe,
0x21,0xf9,0x95,0x93,0x00,0xcb,0x70,0x5d,0x45,0x91,0x3b,0x39,0xc7,0xef,0x56,0x69,
0x96,0xf6,0x26,0xc9,0x74,0x39,0x3e,0x1b,0x8e,0xb0,0xe2,0x12,0x4b,0x8b,0x3c,0xba,
0x82,0xa5,0x00,0xa0,0xb2,0x54,0x07,0x74,0x9e,0xdd,0x2a,0x89,0x08,0x5a,0x9a,0x5a,
0x56,0x85,0x14,0x2d,0x27,0x90,0xa4,0x9e,0x08,0x3f,0x51,0x5f,0x94,0xae,0xcb,0x47,
0x85,0x51,0xe1,0xf2,0x4b,0x25,0x24,0x61,0x86,0x42,0x0b,0x80,0xd8,0x12,0x3c,0x6d,
0xc0,0x3d,0x6d,0xcf,0xaa,0xb5,0x2e,0x2e,0xe5,0x5e,0x86,0xb0,0x6e,0xc6,0x36,0x93,
0xed,0x32,0xcd,0xaa,0xc5,0x96,0x27,0xdd,0x6f,0x76,0xd8,0x2a,0xb6,0x43,0x75,0x45,
0x2d,0xbf,0x32,0x4b,0x21,0xc0,0x15,0xc7,0x7e,0x94,0x0f,0x31,0x6a,0x03,0x82,0x43,
0x64,0x72,0x09,0xe6,0xaa,0x06,0xe1,0xb9,0x1c,0xe7,0x28,0xd6,0x7c,0x7f,0x52,0xb2,
0x9b,0xd4,0x9c,0x86,0xf9,0x67,0x9f,0x1e,0x6b,0x01,0xf5,0xf4,0x36,0xda,0x5a,0x74,
0x38,0x1a,0x6d,0x09,0x01,0x2d,0xa0,0x90,0x7b,0x24,0x01,0xca,0x89,0xf5,0x24,0xd6,
0x57,0xaa,0x1a,0xd2,0xc6,0x67,0xb4,0xcd,0x1c,0xc2,0x13,0x70,0x2f,0xdc,0xb1,0xcb,
0x85,0xd9,0x13,0x22,0xa9,0x44,0xa9,0x2d,0x95,0xb6,0xb8,0xcb,0x23,0xe9,0xd2,0xf3,
0x88,0x4f,0xfe,0x1a,0x87,0xb5,0x6a,0x16,0x74,0xf7,0x29,0x91,0x66,0x37,0x76,0xb1,
0xab,0xc3,0xb6,0x90,0x9e,0xa3,0x3d,0x10,0x1d,0x2c,0x01,0xf5,0xf3,0x3a,0x7a,0x78,
0xfd,0x6b,0x46,0xca,0x39,0x52,0x97,0x08,0x82,0x77,0x4b,0x18,0x32,0x3d,0xf2,0x36,
0xe4,0x6f,0xa0,0x38,0xb4,0x01,0xd0,0x10,0x2f,0xb7,0x37,0xf2,0x0a,0x69,0x64,0x2e,
0x22,0xcb,0x67,0xee,0xff,0x00,0x70,0xf7,0x3d,0xc5,0x6b,0x3d,0xf2,0xf2,0xbb,0x8b,
0xb2,0x31,0x98,0x92,0x1c,0x8b,0x62,0x89,0xf3,0x25,0xa6,0x62,0x25,0x5d,0x29,0x58,
0x41,0xf4,0x5b,0x80,0x05,0xa8,0x9e,0xfc,0xab,0x8e,0xc1,0x29,0x03,0x48,0x80,0x49,
0x00,0x0e,0x49,0xf6,0x15,0xd8,0x63,0xd8,0xf5,0xcb,0x2c,0xc8,0x2d,0xb6,0x3b,0x3c,
0x27,0x6e,0x17,0x6b,0x8c,0x96,0xe2,0x44,0x86,0xc2,0x79,0x71,0xe7,0x96,0xa0,0x94,
0x21,0x23,0xea,0x49,0x03,0xf5,0xab,0xe1,0xd9,0x67,0x87,0xb6,0x17,0xb6,0x3c,0x72,
0xdf,0x77,0xbd,0x41,0x87,0x93,0x6a,0x5b,0x88,0x4b,0xd2,0xaf,0x32,0x1a,0x0e,0x22,
0x0b,0x9c,0x7f,0x57,0x10,0x28,0x7c,0x81,0x3c,0xf1,0xe6,0x76,0x5a,0xcf,0x27,0xb0,
0x21,0x29,0xe8,0x34,0x54,0x70,0xe1,0xf4,0xd1,0xd2,0xd3,0xb6,0xcc,0x60,0x00,0x0f,
0x4f,0xfd,0xeb,0xd4,0xa8,0x09,0x2e,0x37,0x2a,0x9b,0x70,0xdd,0xb4,0xeb,0xac,0xde,
0x2e,0x58,0xd6,0x9b,0x67,0x29,0x0e,0xb0,0xeb,0x62,0x6c,0x3b,0x44,0xa6,0x92,0xb6,
0x9c,0x6d,0x48,0x71,0x21,0xce,0x90,0x0a,0x56,0x85,0x29,0x24,0x73,0xf3,0x05,0x11,
0xdc,0x1a,0xc7,0x32,0xbd,0x30,0xd4,0xdd,0x24,0xb7,0xcb,0x6f,0x23,0xc5,0x72,0xac,
0x3e,0x05,0xc1,0x29,0x8f,0x24,0x5c,0x60,0x49,0x86,0xcc,0x94,0x85,0x85,0xa5,0x0b,
0xea,0x4a,0x52,0xb1,0xd4,0x84,0xa8,0x03,0xcf,0x74,0x83,0xec,0x2b,0xd3,0x65,0x71,
0xae,0x76,0xc8,0x77,0xab,0x7c,0x98,0x17,0x08,0x8c,0x4f,0x83,0x25,0xb2,0xd3,0xf1,
0x64,0xb6,0x1c,0x69,0xd4,0x11,0xc1,0x4a,0x92,0xa0,0x42,0x81,0x1e,0xa0,0xd5,0xd1,
0x63,0x49,0xb9,0x1f,0xfc,0x38,0xfa,0x2a,0x2a,0xc4,0xf0,0x3f,0xcd,0xc3,0xd8,0xf6,
0xa9,0x61,0xee,0xba,0x94,0x98,0xd2,0xa1,0xdd,0xa3,0xb6,0x4f,0x75,0x79,0x88,0x71,
0xa7,0x48,0x1f,0x87,0x94,0xcf,0xf8,0x85,0x5a,0x25,0x68,0x0d,0x2e,0xd9,0x86,0x0b,
0xa2,0x1a,0xf1,0x74,0xd4,0x8c,0x09,0x93,0x8e,0x33,0x78,0xb5,0x3d,0x6d,0xb8,0xe3,
0xac,0x27,0xfa,0x12,0x96,0xa7,0x59,0x75,0x0f,0x32,0x39,0xfb,0xa2,0x0b,0x4a,0x05,
0x03,0x94,0x9e,0xb1,0xd2,0x11,0xc1,0x0a,0xdf,0xf5,0xed,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0xb5,0xde,0x33,0xb7,0xad,0x38,0xc3,0xf5,0x03,0x21,0xce,0x2d,0x38,
0x7d,0xae,0x36,0x5b,0x7e,0x91,0xf1,0x53,0xae,0xc5,0x80,0xb7,0xd4,0xe7,0x48,0x04,
0xa1,0x4a,0xe7,0xcb,0x0a,0x23,0xa9,0x41,0x1d,0x3d,0x4a,0x25,0x4a,0xe4,0xf7,0xad,
0x89,0x4a,0x22,0xfc,0x23,0x91,0x51,0xc3,0x72,0x9b,0x06,0xd2,0x6d,0xca,0x5a,0xa5,
0xae,0xe3,0x62,0x8f,0x8e,0xe5,0x4a,0x6d,0x42,0x3e,0x49,0x66,0x65,0x2c,0xc8,0x43,
0x9d,0xb8,0x2e,0xa5,0x3c,0x25,0xf4,0xf6,0x00,0x85,0x82,0x78,0xe4,0x25,0x48,0x27,
0x9a,0x92,0x14,0xa2,0x2f,0x34,0xfb,0x8d,0xdb,0xbe,0x57,0xb6,0x3d,0x4d,0x9d,0x86,
0x65,0x6c,0x0f,0x39,0xb1,0xe7,0x43,0x9e,0xc8,0x3e,0x44,0xf8,0xe4,0x90,0x87,0x9b,
0x27,0xd8,0xf0,0x41,0x1e,0xa9,0x50,0x20,0xfa,0x56,0x35,0xa7,0x1a,0x53,0x98,0xea,
0xfe,0x40,0xdd,0x93,0x0b,0xc6,0xae,0x59,0x35,0xcd,0x45,0x20,0xb1,0x6e,0x8e,0xa7,
0x3c,0xb0,0x4f,0x01,0x4e,0x28,0x7c,0xad,0xa7,0xf9,0x94,0x42,0x47,0xb9,0xaf,0x40,
0xbb,0xad,0xd9,0xe6,0x1d,0xbb,0x9b,0x5e,0x2f,0x0f,0x29,0x7e,0x55,0xbd,0x56,0x2b,
0x87,0xc5,0x22,0x65,0xbf,0xa4,0x48,0x71,0x85,0x20,0x87,0x63,0x05,0x28,0x10,0x94,
0xac,0x86,0xd4,0x55,0xc1,0x20,0xb6,0x38,0xf5,0x35,0xb3,0x74,0xcf,0x4a,0xb1,0x1d,
0x1a,0xc5,0x23,0xe3,0x78,0x4e,0x3f,0x0b,0x1c,0xb2,0xb0,0x7a,0x84,0x58,0x4d,0xf1,
0xd6,0xae,0x00,0x2b,0x71,0x47,0x95,0x38,0xb2,0x00,0xe5,0x6b,0x25,0x47,0x81,0xc9,
0x34,0x45,0x4e,0x58,0x17,0x83,0x9e,0xb9,0xe4,0xb1,0x52,0xe5,0xf6,0x7e,0x37,0x87,
0x30,0xa5,0x02,0xe4,0x69,0x93,0xd7,0x25,0xfe,0x40,0x3c,0x1e,0x96,0x10,0xb6,0xcf,
0x1c,0x91,0xdd,0xc1,0xeb,0x59,0xbd,0xdb,0xc1,0x0f,0x3a,0x66,0x12,0x95,0x6c,0xd4,
0x9c,0x7a,0x64,0xbe,0x3e,0x56,0xa5,0xc3,0x7d,0x86,0xc9,0xfc,0x56,0x9e,0xb2,0x3f,
0xc3,0x57,0x03,0x4a,0x22,0xf3,0xf1,0xac,0x3e,0x1a,0xda,0xf7,0xa3,0x50,0x64,0xdc,
0x65,0xe2,0x43,0x26,0xb4,0x47,0x3f,0x79,0x3f,0x18,0x7b,0xe3,0x40,0x1f,0xc5,0xe4,
0x80,0x1e,0x09,0x1d,0xc9,0x51,0x6f,0x80,0x07,0x72,0x2a,0x2f,0xad,0x0a,0x6d,0x6a,
0x42,0xd2,0x52,0xb4,0x9e,0x0a,0x54,0x38,0x20,0xfd,0x2b,0xd5,0x3d,0x44,0x3d,0xe5,
0x78,0x73,0xe0,0xfb,0x9e,0xb7,0xce,0xbe,0x59,0x9a,0x8d,0x88,0x6a,0x3f,0x4a,0x9c,
0x6a,0xf3,0x1d,0xae,0x19,0x9e,0xe7,0x1d,0x91,0x31,0x09,0x1f,0x30,0x3c,0x71,0xe6,
0x8f,0x9d,0x3d,0x8f,0xce,0x07,0x41,0x22,0xa1,0x3a,0x56,0x4b,0xa9,0x1a,0x71,0x91,
0xe9,0x1e,0x6f,0x76,0xc4,0x72,0xdb,0x5b,0xd6,0x6c,0x82,0xd6,0xf7,0x93,0x26,0x23,
0xdc,0x12,0x93,0xc0,0x29,0x52,0x48,0xec,0xa4,0xa9,0x24,0x29,0x2a,0x04,0x85,0x24,
0x82,0x09,0x06,0xb9,0x3a,0x51,0xa5,0x39,0x3e,0xb6,0x67,0xb6,0xac,0x3b,0x10,0xb6,
0xae,0xe9,0x7c,0xb9,0x39,0xd0,0xd3,0x49,0xec,0x94,0x24,0x77,0x53,0x8e,0x2b,0xd1,
0x28,0x48,0xe4,0x95,0x1f,0x40,0x28,0x8b,0x14,0x65,0x97,0x24,0xbc,0x86,0x9a,0x42,
0x9d,0x75,0xc5,0x04,0xa1,0x08,0x1c,0xa9,0x44,0xf6,0x00,0x01,0xea,0x6a,0x53,0xe9,
0x07,0x86,0x56,0xbf,0x6a,0xec,0x18,0xb7,0x16,0x71,0x66,0xf1,0x3b,0x5c,0x8e,0xed,
0xcc,0xca,0x1f,0xf8,0x23,0xc7,0xf1,0x16,0x42,0x54,0xf8,0x1e,0xe0,0xf9,0x7c,0x11,
0xdc,0x72,0x2a,0xd4,0xf6,0x75,0xe1,0xf1,0x81,0xed,0x6a,0xd5,0x0e,0xeb,0x2a,0x34,
0x7c,0xa7,0x51,0x14,0x80,0xa9,0x19,0x04,0xa6,0x82,0x84,0x55,0x94,0xf0,0xa4,0x44,
0x4a,0x87,0xdd,0x24,0x72,0xa1,0xd7,0xfb,0x6a,0x04,0xf2,0x40,0x21,0x29,0x95,0x74,
0x45,0x50,0x16,0xef,0x04,0x3c,0xe1,0xd8,0x69,0x5c,0xfd,0x4b,0xc7,0xe3,0x4c,0x23,
0x95,0x35,0x1e,0x13,0xef,0x36,0x0f,0xfb,0xe7,0xa0,0x9f,0xf0,0xd6,0xbe,0xcf,0x7c,
0x1d,0x75,0xd7,0x16,0x69,0x6f,0x58,0xde,0xc6,0xf3,0x26,0xc1,0x3d,0x2c,0xdb,0xee,
0x06,0x3b,0xe4,0x7d,0x4a,0x64,0x21,0xb4,0x0f,0xd1,0x66,0xaf,0x02,0x94,0x45,0xe5,
0xf3,0x3f,0xd3,0x4c,0xb3,0x4a,0xef,0xee,0xd9,0x33,0x0c,0x72,0xe7,0x8d,0x5d,0x5b,
0x27,0x98,0xd7,0x38,0xcb,0x65,0x4a,0x00,0xf1,0xd4,0x9e,0xa1,0xc2,0xd2,0x7d,0x94,
0x9e,0x41,0xf5,0x04,0x8a,0xce,0x76,0xbd,0xb6,0x4c,0xaf,0x75,0x5a,0x9b,0x1b,0x12,
0xc6,0x52,0x98,0xcc,0x36,0x91,0x22,0xe7,0x76,0x7d,0x3c,0xb3,0x6f,0x8d,0xd4,0x02,
0x9c,0x50,0xe4,0x75,0x28,0xf3,0xc2,0x50,0x0f,0x2a,0x3f,0x40,0x14,0xa4,0xfa,0x18,
0xd5,0x6d,0x1d,0xc3,0x35,0xc3,0x13,0x7f,0x1b,0xce,0x71,0xe8,0x59,0x15,0xa5,0xce,
0x4a,0x5a,0x94,0x8f,0x9d,0x95,0xf0,0x47,0x98,0xd3,0x83,0x85,0x36,0xb0,0x09,0x01,
0x68,0x20,0xf7,0x3d,0xfb,0xd6,0xbf,0xda,0x6e,0xd2,0x31,0x6d,0xa2,0xe2,0x17,0xbb,
0x16,0x37,0x2e,0x4d,0xd1,0x57,0x5b,0x92,0xe7,0x3d,0x70,0x9e,0x84,0x09,0x05,0xbe,
0x3a,0x59,0x65,0x4a,0x48,0x01,0x41,0xb4,0xf3,0xdf,0x81,0xca,0x96,0xb5,0x00,0x9e,
0xae,0x01,0x17,0x5d,0xb7,0x2d,0x8b,0xe9,0x36,0xda,0xed,0x71,0xfe,0xc3,0xc7,0x63,
0xdd,0xf2,0x30,0x84,0x89,0x19,0x1d,0xe1,0xa4,0xbf,0x31,0xc5,0x8e,0x79,0x28,0x2a,
0x1c,0x32,0x93,0xcf,0xec,0xb6,0x13,0xc8,0x03,0xa8,0xa8,0x8e,0x6a,0x41,0xd2,0x94,
0x45,0xae,0xef,0x1b,0x7b,0xd3,0xab,0xee,0xa5,0xd8,0x75,0x0a,0x56,0x23,0x6d,0x19,
0x9d,0x91,0xc7,0x1c,0x89,0x78,0x65,0x90,0xd3,0xc4,0xad,0xb5,0x36,0x7c,0xc2,0x9e,
0x03,0xbc,0x05,0x12,0x9e,0xbe,0xae,0x93,0xdd,0x3c,0x1a,0xd8,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x14,0x2e,
0xf1,0x31,0xd9,0xbb,0x3b,0x8c,0xd2,0xc7,0x72,0xcc,0x76,0x08,0x5e,0xa2,0x62,0xf1,
0xd6,0xf4,0x5f,0x21,0xa2,0xa7,0x6e,0x51,0x07,0x2a,0x72,0x21,0xe3,0xba,0x95,0xea,
0xb6,0xfb,0x13,0xd5,0xca,0x40,0x1e,0x61,0x23,0xb8,0xf0,0xe7,0xd9,0xd4,0x5d,0xb0,
0xe9,0x2b,0x17,0x6b,0xd4,0x44,0x1d,0x45,0xc9,0x18,0x6e,0x45,0xd5,0xe5,0x77,0x54,
0x36,0x8f,0xcc,0xdc,0x34,0x9e,0x3b,0x74,0x72,0x0a,0xf8,0xf5,0x73,0x9e,0xea,0x4a,
0x51,0xc4,0xb9,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,
0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,
0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,
0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,
0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,
0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,
0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,
0x12,0x94,0xa5,0x11,0x29,0x4a,0x51,0x12,0x94,0xa5,0x11,0x7f,0xff,0xd9};

View File

@ -0,0 +1,318 @@
//
// ncc1701
// Data size = 4912 bytes
//
// JFIF, Compression=JPEG, Size: 240 x 77, 24-Bpp
//
// for non-Arduino builds...
#ifndef PROGMEM
#define PROGMEM
#endif
const uint8_t ncc1701[] PROGMEM = {
0xff,0xd8,0xff,0xe0,0x00,0x10,0x4a,0x46,0x49,0x46,0x00,0x01,0x01,0x01,0x00,0x48,
0x00,0x48,0x00,0x00,0xff,0xdb,0x00,0x43,0x00,0x03,0x02,0x02,0x03,0x02,0x02,0x03,
0x03,0x03,0x03,0x04,0x03,0x03,0x04,0x05,0x08,0x05,0x05,0x04,0x04,0x05,0x0a,0x07,
0x07,0x06,0x08,0x0c,0x0a,0x0c,0x0c,0x0b,0x0a,0x0b,0x0b,0x0d,0x0e,0x12,0x10,0x0d,
0x0e,0x11,0x0e,0x0b,0x0b,0x10,0x16,0x10,0x11,0x13,0x14,0x15,0x15,0x15,0x0c,0x0f,
0x17,0x18,0x16,0x14,0x18,0x12,0x14,0x15,0x14,0xff,0xdb,0x00,0x43,0x01,0x03,0x04,
0x04,0x05,0x04,0x05,0x09,0x05,0x05,0x09,0x14,0x0d,0x0b,0x0d,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,0xff,0xc0,
0x00,0x11,0x08,0x00,0x4d,0x00,0xf0,0x03,0x01,0x22,0x00,0x02,0x11,0x01,0x03,0x11,
0x01,0xff,0xc4,0x00,0x1d,0x00,0x00,0x01,0x05,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x07,0x08,0x09,0x04,0x03,0x02,0x0a,
0xff,0xc4,0x00,0x40,0x10,0x00,0x01,0x03,0x03,0x02,0x03,0x06,0x03,0x05,0x04,0x09,
0x05,0x01,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x00,0x05,0x11,0x06,0x07,0x12,0x21,
0x31,0x08,0x13,0x41,0x51,0x61,0x71,0x09,0x22,0x81,0x14,0x32,0x91,0xa1,0xb1,0x15,
0x42,0x52,0x62,0x16,0x23,0x24,0x53,0x63,0x72,0x73,0x82,0xb2,0x17,0x33,0x92,0xa2,
0xd1,0xf0,0xff,0xc4,0x00,0x1a,0x01,0x00,0x03,0x01,0x01,0x01,0x01,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0xff,0xc4,
0x00,0x23,0x11,0x00,0x02,0x02,0x01,0x05,0x01,0x00,0x02,0x03,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x02,0x11,0x12,0x03,0x21,0x31,0x41,0x51,0x04,0x05,0x13,
0x22,0x32,0x61,0xff,0xda,0x00,0x0c,0x03,0x01,0x00,0x02,0x11,0x03,0x11,0x00,0x3f,
0x00,0xd5,0x3a,0x2b,0x2c,0xb5,0xcf,0x6f,0x7d,0xd3,0xb4,0x6f,0x56,0xa3,0x65,0x1a,
0xa2,0xd5,0x67,0xb0,0x5b,0xae,0x92,0x21,0x26,0xcf,0x22,0x02,0x56,0xa8,0xe1,0xb5,
0x94,0x29,0x0e,0x2f,0xf7,0xd4,0x38,0x4e,0x4e,0x71,0x9e,0x94,0xa9,0x74,0xed,0xfb,
0x3e,0xee,0xdb,0xc1,0x1a,0xd1,0x49,0xe2,0xf9,0x55,0xf6,0x76,0x92,0xd8,0x48,0xf4,
0xc5,0x5a,0x8d,0x91,0x97,0xf8,0x69,0xc1,0x21,0x23,0x24,0xe0,0x79,0x9a,0x4e,0xb8,
0x6a,0x5b,0x4d,0xa5,0x95,0x3b,0x36,0xe7,0x12,0x2b,0x69,0xea,0xa7,0x9f,0x4a,0x40,
0xe7,0x8f,0x13,0x59,0x3d,0x74,0xed,0x71,0x2a,0xf8,0x15,0x19,0x7a,0xaa,0xe1,0x29,
0xb0,0x4a,0x80,0x0f,0x9c,0x67,0xd8,0x54,0x69,0x72,0xdc,0xa9,0xbb,0x85,0xaa,0x58,
0xb6,0x37,0x71,0x90,0xa8,0xe9,0x52,0x78,0xbb,0xd7,0x4f,0xcd,0x9c,0xa9,0xc5,0x7b,
0xf0,0x80,0x91,0xea,0xb2,0x7c,0x05,0x0e,0x2a,0x2a,0xdb,0x1c,0x5c,0xa5,0x25,0x14,
0xb7,0x66,0xd0,0x23,0x5d,0x58,0x1e,0x68,0xba,0xcd,0xd2,0x3c,0x96,0x87,0x55,0xb0,
0xae,0xf0,0x0f,0x72,0x33,0x4a,0xb0,0x6e,0x71,0x2e,0x6d,0x97,0x22,0x49,0x6a,0x4a,
0x07,0x52,0xd2,0xc2,0xb1,0xef,0xe5,0x59,0x85,0x62,0xd7,0x57,0x6d,0x31,0x6f,0x61,
0x88,0xb3,0x1c,0x8c,0xd0,0x48,0x09,0x6a,0x2b,0x9c,0x28,0x23,0xa6,0x08,0x14,0xbb,
0xa1,0xb7,0x73,0x50,0x6d,0xfe,0xa9,0x62,0xfb,0x0e,0x5a,0xd6,0x90,0xa1,0xf6,0xa8,
0xae,0x2f,0xfa,0xb9,0x0d,0xe7,0xe6,0x0a,0xf5,0xc7,0x43,0xd4,0x57,0x04,0x3e,0x87,
0x39,0xe3,0x8e,0xde,0x9e,0xcc,0xff,0x00,0x1e,0xe3,0x06,0xf2,0xdd,0x75,0x46,0x94,
0xd4,0x4d,0xbe,0x1d,0xa7,0x74,0x46,0xc1,0x47,0x57,0xf4,0x8e,0x54,0x97,0xe7,0xf7,
0x1f,0x69,0x16,0xeb,0x7b,0x05,0xe7,0xcb,0x5c,0x5c,0x3c,0x64,0x0e,0x41,0x39,0xe5,
0x92,0x6a,0x4e,0xb4,0x5c,0x9b,0xbc,0xda,0xa1,0x4f,0x64,0x29,0x2c,0xca,0x61,0x0f,
0xa0,0x2f,0xa8,0x4a,0x92,0x14,0x33,0xeb,0x83,0x55,0xb3,0xb6,0x8f,0x64,0x16,0xfb,
0x43,0x69,0xe5,0x5d,0x74,0xf3,0xa9,0xb6,0xeb,0x78,0xcd,0xa1,0x94,0x48,0x2e,0x14,
0x22,0x5c,0x74,0x92,0xae,0xe1,0x67,0xa0,0xe6,0x72,0x0e,0x3a,0xfa,0x1a,0xed,0x47,
0x8e,0xef,0xa2,0x3c,0x87,0xf1,0x5d,0xd0,0x37,0x1b,0xdc,0x78,0x4c,0x69,0x2d,0x42,
0x86,0x1d,0x59,0x4f,0xda,0x5f,0x4b,0x48,0x03,0xc8,0xf0,0xf1,0x13,0x52,0x2a,0x7b,
0x76,0xe8,0x76,0x16,0x15,0x36,0xf1,0x62,0x8a,0xc9,0x03,0x90,0xb8,0x95,0x2c,0x79,
0xe4,0x70,0x01,0xf9,0xd6,0x7c,0x5c,0x3e,0x17,0xbb,0xbd,0x76,0x9a,0xa9,0x32,0x74,
0xeb,0xfc,0x44,0xf3,0x4a,0x2e,0xd1,0x42,0x4f,0xfe,0xf5,0xf2,0x9f,0x85,0x8e,0xe7,
0x05,0x64,0xe8,0xf5,0xaf,0x3f,0xc5,0x79,0x8c,0x3f,0x45,0xd5,0xac,0x48,0xdc,0xbe,
0x37,0x0f,0x88,0xee,0xd5,0x5b,0xd4,0xb4,0x1d,0x49,0x09,0xf5,0x85,0x72,0xee,0x3e,
0x6e,0x5e,0x5f,0x7b,0xf3,0xa6,0xfb,0x7f,0x12,0x8d,0x03,0x32,0x52,0x1a,0x8d,0x70,
0x95,0x21,0xd5,0xa4,0x84,0xa1,0xa6,0x40,0x41,0xc7,0x89,0x51,0x49,0xc7,0xe3,0x55,
0x1d,0x9f,0x87,0x06,0xf3,0x45,0x42,0x5a,0x6b,0x4b,0x0e,0xe9,0x09,0x09,0x40,0xfd,
0xb1,0x1c,0x60,0x0f,0xf7,0xd3,0x23,0x78,0x3b,0x2d,0xee,0x3e,0xc8,0x59,0x61,0xcf,
0xd4,0x56,0x25,0x43,0x8f,0x31,0xd3,0x1d,0x90,0xdd,0xd1,0x32,0x14,0x55,0x8e,0x25,
0x7c,0x89,0x59,0xe5,0x81,0xcc,0xe3,0x1d,0x3c,0xc5,0x52,0x51,0x25,0xe4,0x5e,0xb9,
0x5d,0xbe,0x6c,0xf7,0x04,0xb4,0x44,0x47,0xca,0x51,0xf3,0x25,0x62,0x62,0x9b,0xe2,
0xf7,0xe0,0xc6,0x7e,0xb5,0x0e,0xeb,0x8e,0xda,0x2b,0xd7,0x9b,0x8b,0x21,0xa4,0x5b,
0xdb,0x72,0xdf,0x67,0x8a,0xca,0x61,0x43,0x7d,0xe5,0x29,0x0f,0x4e,0x7d,0x44,0x77,
0xce,0xf5,0xe2,0x4b,0x68,0x4f,0xca,0x8e,0x9c,0x4a,0xc9,0x04,0xa4,0x62,0xb3,0xed,
0xa7,0x67,0xdd,0xd2,0xde,0x0d,0x38,0xab,0xc6,0x8d,0xd2,0x53,0x6f,0x36,0xa6,0x9e,
0x54,0x55,0x4b,0x44,0x86,0x5b,0x47,0x7a,0x8f,0xbc,0x91,0xc6,0xe2,0x49,0xc6,0x7c,
0x05,0x3a,0xae,0x7d,0x8d,0x77,0x77,0x44,0xc0,0x73,0x53,0x5c,0xf4,0xa3,0x36,0x70,
0x90,0x95,0x2c,0x4a,0xbc,0xc6,0xef,0x57,0xc1,0x92,0x02,0x51,0xde,0x7c,0xca,0xeb,
0x80,0x32,0x4d,0x14,0xba,0x1a,0x6d,0x34,0xe4,0x4d,0x32,0x37,0x09,0xf9,0x17,0x98,
0xd3,0xad,0x89,0x5d,0xa2,0x60,0x56,0x59,0x76,0x1b,0x84,0x38,0x95,0x79,0xf1,0x0e,
0x64,0x9f,0x1f,0x3a,0xb8,0x9b,0x5f,0xda,0x21,0x2e,0x6d,0x4a,0xae,0x5a,0xb0,0x3d,
0xfb,0x7e,0x0a,0x9c,0x60,0xb2,0xdc,0x65,0x87,0x26,0xf0,0xa4,0x14,0x2d,0x29,0xc7,
0xef,0x03,0x83,0xe1,0x90,0x6b,0x3d,0xf4,0x9e,0xe0,0xea,0x7d,0x1f,0x2a,0x35,0xd2,
0x26,0x9c,0x96,0xd4,0xb0,0x8e,0x5c,0x6c,0xa5,0x4a,0x46,0x7a,0x8c,0x78,0x7e,0x19,
0xa5,0xbd,0x6b,0xda,0xf3,0x77,0xae,0x31,0x5e,0x8f,0x06,0xcf,0x2d,0xb0,0xe8,0x21,
0x45,0x0c,0x84,0xf5,0xf5,0x3e,0xc2,0xb0,0xd3,0xd0,0x92,0x79,0x49,0xf3,0xd1,0xea,
0x7d,0x9f,0x6e,0x9e,0xb2,0x5a,0x70,0x82,0x55,0xd9,0xe1,0xda,0xb3,0xb5,0xe6,0xe5,
0x6b,0x2b,0xf1,0x6f,0x4d,0xdb,0xee,0x96,0x48,0x2c,0x8e,0x14,0xa2,0x52,0xd2,0x86,
0xc1,0x1e,0x21,0x23,0x1f,0x89,0xc9,0xa8,0x0b,0x47,0x76,0xbb,0xdf,0xad,0xb3,0xd4,
0x0c,0x5c,0xe2,0x6b,0x34,0x84,0x21,0xde,0xf1,0xdb,0x6c,0xb7,0x9b,0x5c,0x47,0xc7,
0x8a,0x56,0xdf,0xaf,0x98,0xc1,0xf5,0xa6,0xce,0xb0,0xb5,0xee,0x7e,0xb8,0x94,0xeb,
0xb3,0xad,0xf2,0xd6,0x56,0x4a,0x88,0x53,0xcd,0xa0,0x7f,0xca,0x9a,0xe7,0x63,0xf5,
0x8c,0x97,0x56,0xa7,0x2d,0xcc,0x45,0x49,0x51,0x20,0x3d,0x2d,0x2a,0xe1,0x19,0xe4,
0x39,0x12,0x6b,0xa1,0xa5,0xc2,0x3c,0xa4,0xfd,0x35,0xbb,0x63,0xbe,0x27,0xdb,0x69,
0xb8,0x8c,0xd9,0xad,0x9a,0xad,0xd3,0xa4,0xb5,0x34,0xc2,0x86,0x1c,0x4a,0xb2,0xe4,
0x12,0xe9,0x38,0xf9,0x5e,0xc0,0xc2,0x49,0xfe,0x20,0x31,0x9a,0xb9,0x48,0x5a,0x5d,
0x42,0x56,0x85,0x05,0xa1,0x43,0x21,0x49,0x39,0x04,0x79,0x8a,0xfc,0xe9,0x7f,0xd0,
0x8b,0xe1,0x6b,0x8a,0x7d,0xce,0x04,0x56,0x5b,0x19,0x21,0x2b,0x5b,0x9c,0x3f,0x4e,
0x11,0xe7,0x56,0xf7,0x6a,0x7b,0x6d,0xee,0x26,0xd6,0xe8,0x4b,0x46,0x91,0x6f,0x53,
0x37,0xa8,0x51,0x6d,0x68,0x47,0x8d,0x21,0x56,0xd0,0xe3,0x81,0xb1,0xf7,0x52,0xa5,
0xa8,0x92,0xae,0x11,0xcb,0x9f,0x30,0x00,0x15,0x38,0x37,0xc1,0x59,0xa3,0x5c,0xa8,
0xac,0xd7,0x8b,0xf1,0x26,0xdc,0x88,0x6e,0x23,0xbc,0xd3,0x16,0x8b,0x82,0x70,0x12,
0x43,0xa5,0x4d,0x0c,0xff,0x00,0x17,0x25,0x79,0x53,0xd2,0xd5,0xf1,0x34,0xb8,0x96,
0x12,0x2e,0x1b,0x7f,0x1c,0xba,0x4f,0x35,0x47,0xba,0x10,0x91,0xf4,0x2d,0x9f,0xd6,
0xa7,0x09,0x0f,0x34,0x5f,0x4a,0x2a,0x87,0x5c,0xbe,0x23,0xd7,0x79,0x89,0x79,0x36,
0xcd,0x2f,0x02,0x0a,0xd4,0x9c,0x36,0x66,0x3a,0xb7,0x78,0x4f,0x99,0xe1,0x23,0x3f,
0x80,0xaf,0x58,0x3f,0x11,0xab,0x83,0xa9,0xee,0x9c,0xb3,0x59,0x97,0x25,0xbc,0x25,
0xd0,0x97,0xdc,0x4f,0xcd,0xec,0x7a,0x51,0x84,0xbc,0x1e,0x51,0xf4,0xbd,0x94,0x55,
0x2a,0x8f,0xdb,0xf6,0xed,0x24,0x9e,0x0d,0x39,0x6b,0x5e,0x3a,0xf0,0xc9,0x59,0xae,
0x94,0xf6,0xf0,0xbc,0xf1,0x27,0x3a,0x6a,0xdf,0x8f,0x1c,0x3c,0xba,0x7f,0xae,0x5e,
0x13,0x9c,0x4b,0x99,0x45,0x54,0xf8,0xbd,0xb9,0xdc,0x9a,0xf2,0x1a,0x6b,0x48,0x27,
0x8d,0x47,0x1f,0x3d,0xc5,0x28,0x1f,0x8a,0x92,0x00,0xfa,0xd2,0xa0,0xed,0xc7,0x69,
0x8f,0x29,0x6c,0xcc,0xd2,0xd2,0xd8,0xe1,0x1f,0x79,0x99,0x8d,0xbb,0xcf,0xcb,0x90,
0x03,0x1e,0xa0,0xd2,0xc2,0x5e,0x0f,0x38,0x96,0x72,0x8a,0x80,0xed,0xbd,0xb4,0xf6,
0xfe,0x67,0x00,0x92,0xdd,0xd6,0x02,0x8e,0x02,0x8b,0xb1,0x92,0xa4,0x8c,0xf5,0xe6,
0x95,0x13,0x81,0xed,0x52,0x86,0x90,0xdd,0x7d,0x21,0xaf,0x55,0xc1,0x61,0xbf,0xc3,
0xb8,0x3d,0x8c,0xf7,0x09,0x5f,0x03,0xb8,0xff,0x00,0x22,0xb0,0xaf,0xca,0x93,0x8b,
0x5c,0xa2,0x93,0x4f,0x82,0xa9,0xf6,0x87,0xf8,0x68,0xe9,0xfd,0xd4,0xd6,0x37,0x3d,
0x53,0xa5,0xee,0x31,0xec,0x57,0x0b,0xa3,0xcb,0x95,0x36,0x14,0xd6,0x4b,0xac,0x38,
0xfa,0xce,0x56,0xea,0x54,0x0e,0x50,0x54,0x79,0x90,0x01,0x19,0xe7,0xca,0xab,0xad,
0xfb,0xe1,0x55,0xb8,0x36,0xe0,0xe7,0xd9,0x53,0x62,0xbd,0x80,0x0f,0x09,0x62,0x62,
0x9b,0x51,0xc7,0x41,0xfd,0x60,0x4e,0x0f,0xd6,0xb5,0x8a,0x8a,0x2f,0xa1,0xa6,0xd3,
0x4e,0x2d,0xa6,0x8c,0x4d,0xba,0x76,0x16,0xdd,0x1d,0x21,0x24,0xba,0x8d,0xbd,0xba,
0x2d,0x64,0x60,0x2e,0x08,0xfb,0x42,0x79,0xf2,0xe7,0xc2,0xa3,0x8a,0x61,0xc4,0xd2,
0x3a,0xa3,0x6e,0x35,0x93,0x73,0x2f,0x7a,0x76,0xe1,0x6b,0x0c,0xab,0x81,0xc6,0xe6,
0xc6,0x5b,0x7c,0xf0,0x46,0x32,0x46,0x39,0xa4,0x9f,0xc0,0x56,0xf7,0x57,0x2d,0xc2,
0xd7,0x0e,0xec,0xc8,0x66,0x74,0x46,0x26,0x34,0x0e,0x7b,0xb9,0x0d,0xa5,0x69,0xcf,
0xb1,0x14,0x95,0x25,0x55,0xb0,0xdc,0xa7,0x29,0x29,0xb9,0x36,0xd7,0xbb,0x99,0x3f,
0x66,0xb8,0xc2,0xd4,0x76,0xc6,0x54,0xc3,0x8c,0x92,0x47,0xca,0x19,0x1c,0xc7,0xf9,
0xbc,0xa9,0xd5,0xa4,0x34,0x74,0x9d,0x6f,0xa9,0xed,0xda,0x66,0xd6,0xeb,0x6e,0xdc,
0xa7,0x28,0xf0,0x24,0x91,0xf2,0xb6,0x92,0x38,0xdc,0x50,0xeb,0xc2,0x07,0x3a,0x92,
0x3b,0x54,0xfc,0x3b,0xd7,0x74,0x5c,0xfd,0x55,0xb4,0x6f,0xae,0xcf,0x70,0x73,0x89,
0xe9,0x56,0x16,0x5d,0x2d,0xb6,0xe9,0xea,0x54,0xc1,0xe8,0x95,0x1f,0xe0,0x3c,0x8f,
0x86,0x2a,0x95,0xec,0x47,0x66,0x6d,0xe6,0xbc,0xeb,0xbf,0xdb,0xf6,0x19,0x57,0x2d,
0x33,0x78,0xb5,0xc8,0x52,0x11,0x7e,0xbb,0x3c,0xb6,0x92,0xca,0x81,0xc2,0x90,0x94,
0x9f,0x9d,0x44,0x10,0x41,0x00,0x11,0xe0,0x48,0xae,0x58,0xfc,0xdf,0xca,0xd3,0xb5,
0xe1,0xef,0x4b,0xf3,0x2f,0xf5,0xe2,0xe0,0x94,0xaa,0xac,0xdc,0x0b,0x3d,0xb5,0x16,
0x6b,0x44,0x1b,0x7b,0x6a,0x2b,0x6e,0x2b,0x08,0x61,0x2a,0x57,0x52,0x12,0x90,0x90,
0x7f,0x2a,0xeb,0x52,0x82,0x41,0x24,0x80,0x07,0x52,0x6a,0x09,0xb5,0x6a,0x5d,0x64,
0x34,0x75,0xae,0xd9,0x7a,0xd4,0x31,0x9d,0xbb,0x30,0xc2,0x1b,0x99,0x73,0xb7,0xb1,
0xdd,0x2a,0x4a,0xc0,0xe6,0xac,0x12,0x78,0x73,0xe9,0x49,0x93,0xe3,0x5c,0xae,0x4b,
0xef,0x24,0xce,0x97,0x2d,0x58,0xe1,0x0b,0x5b,0xe5,0x39,0x1e,0xc2,0xbb,0xd6,0x93,
0x7c,0x9f,0x36,0xf5,0x11,0x36,0xdd,0x75,0xd6,0x9e,0xb2,0x8c,0xcd,0xbc,0x43,0x63,
0xd0,0xba,0x09,0xfc,0x05,0x34,0x6e,0x5d,0xa1,0x34,0x8c,0x0e,0x30,0xd3,0xf2,0xa6,
0xad,0x3d,0x03,0x11,0xd5,0x85,0x7b,0x28,0xe0,0x54,0x50,0xe5,0x85,0xb6,0x1c,0x19,
0x86,0xda,0x41,0xf1,0x48,0xfd,0x4d,0x76,0x31,0xa7,0xe1,0x05,0x25,0x6f,0xa5,0xa0,
0x8f,0xe1,0x51,0xe5,0x8f,0xa5,0x68,0xb4,0x57,0x6c,0x87,0xa8,0xfa,0x16,0xa7,0x76,
0xa5,0xef,0x90,0xeb,0x76,0xbd,0x33,0x29,0xd9,0x05,0x24,0x37,0xdf,0x38,0x30,0x15,
0xfb,0xa4,0x84,0xe7,0x97,0xa6,0x6a,0xad,0xee,0x26,0xc5,0x6b,0x0d,0xfa,0xd4,0xcd,
0xdd,0xf5,0x6d,0xd5,0x57,0x15,0xb4,0xf2,0xdd,0x8a,0xc4,0xf6,0xdd,0xee,0xa2,0x71,
0x63,0x21,0x96,0x92,0xe8,0x08,0x18,0x03,0xdf,0x1c,0xce,0x6a,0xd1,0x31,0x36,0xc7,
0x68,0xc0,0x8e,0xdb,0x09,0x23,0xc7,0x19,0x35,0xe8,0xf6,0xb6,0xb4,0x32,0x14,0xa2,
0xf2,0x42,0xfc,0xea,0xd4,0x12,0xe1,0x12,0xe6,0xd9,0x18,0xed,0x46,0xd6,0xcd,0xd9,
0x2d,0x22,0x2c,0x76,0x1b,0xc4,0xcb,0x45,0xb5,0x4a,0x5b,0xce,0xc5,0x8e,0xea,0x92,
0xd2,0x9d,0x51,0xca,0xd6,0x02,0x8a,0x94,0x92,0x7d,0x15,0x49,0x1a,0xa6,0xd9,0x1d,
0xc7,0x9c,0x71,0xf5,0xb9,0x31,0xf5,0x73,0x5b,0xaf,0x2c,0xa8,0x9f,0x52,0x4d,0x3c,
0xf5,0x16,0xbb,0x87,0x27,0x88,0x21,0xf4,0x91,0x51,0xd5,0xe6,0xf4,0xdc,0xc2,0xae,
0xed,0xc0,0xa1,0xe7,0x4d,0x40,0x97,0x21,0x87,0x7c,0x8e,0xc3,0x3c,0x5c,0x08,0x09,
0x1e,0x43,0xa5,0x31,0xee,0x6f,0x36,0xd8,0x21,0x29,0x19,0xf1,0xe5,0x4f,0x6b,0xcb,
0x0e,0x49,0x51,0x3c,0x49,0x03,0xde,0x9a,0x33,0xac,0xea,0x71,0x44,0x95,0xa7,0x1e,
0xf4,0xe8,0x56,0x32,0x2e,0xb3,0x9c,0x42,0x95,0xc0,0x9e,0x25,0x63,0x09,0x40,0x20,
0x64,0xf9,0x53,0x26,0xe1,0x71,0xbb,0xcd,0x9c,0x88,0xd8,0x10,0xf8,0x82,0xb0,0x09,
0x07,0x8b,0xeb,0xed,0xfc,0x39,0xa7,0x3e,0xbe,0xdb,0x39,0xba,0x9e,0xf5,0x64,0x53,
0x72,0x12,0xd5,0xba,0x3a,0xdc,0x54,0xa2,0x97,0x8b,0x6b,0xc1,0x03,0x87,0x87,0x1d,
0x4e,0x45,0x23,0xbb,0xb5,0x37,0x5f,0xe9,0x55,0x9e,0x7b,0x97,0xa6,0xa7,0x43,0xb7,
0x95,0xe0,0xba,0xde,0x1f,0x29,0x50,0xfb,0xa4,0x8e,0x4a,0xe9,0xd7,0x95,0x4d,0x31,
0xec,0x21,0xbd,0x6e,0x6a,0xc7,0x0d,0x72,0xa6,0x4a,0x71,0xb6,0x9a,0x1c,0x4e,0x2b,
0xbd,0x52,0x5b,0x03,0xa6,0x4f,0x32,0x6b,0x88,0xdf,0x2d,0xe5,0x02,0x42,0x1c,0x52,
0x9a,0x73,0x07,0xbf,0x43,0x2a,0x29,0x20,0xf4,0xca,0xb1,0x52,0xc4,0xab,0x03,0x0e,
0xa1,0x6d,0x38,0xd2,0x56,0xda,0xc7,0x09,0x0b,0x19,0x04,0x79,0x1a,0x6e,0x5b,0x74,
0x13,0x36,0x10,0xf3,0x10,0x6e,0x12,0x23,0xc5,0x5a,0xb8,0x93,0x14,0x84,0xb8,0x86,
0xfd,0x11,0xc4,0x09,0x03,0xd2,0x96,0x3b,0x8d,0x31,0xb5,0x3d,0x52,0xe1,0xc2,0x5b,
0xcc,0xc4,0x5c,0xe5,0x80,0x08,0x65,0xb2,0x02,0x95,0xed,0x9e,0x54,0x8d,0x6d,0xd4,
0x12,0x6e,0x0f,0x04,0x2a,0x13,0x71,0x95,0x9c,0x29,0xb7,0x1f,0xe1,0x75,0x1e,0xe9,
0x20,0x7e,0x44,0xd4,0x93,0x6f,0xb0,0x45,0xb5,0xf7,0xc3,0xbe,0x93,0x20,0xba,0xae,
0x35,0x17,0xd6,0x55,0x83,0xfc,0xa3,0xc0,0x7a,0x57,0xa4,0x88,0xf6,0xd7,0x14,0x92,
0xf4,0x56,0xde,0x52,0x7a,0x17,0x10,0x0e,0x3d,0xa8,0x61,0x63,0x37,0xbc,0x4d,0xd1,
0x2e,0xc5,0x85,0x21,0x0e,0x4c,0x68,0x82,0xb4,0x21,0xdc,0x60,0x7a,0x9c,0x1f,0xd2,
0x95,0x2d,0x5a,0x14,0x45,0x8e,0x1a,0x69,0xa8,0xe9,0x6c,0xfc,0xca,0x41,0x6b,0x04,
0xa8,0xf5,0xf9,0x93,0x8f,0xd2,0x9c,0x91,0xdc,0x84,0xc8,0xc3,0x30,0xd9,0x68,0xff,
0x00,0x2a,0x42,0x6b,0xb1,0x2f,0x36,0xae,0x7c,0x21,0x20,0x78,0xf1,0x60,0x53,0xb1,
0x1c,0x10,0x34,0xb3,0x4d,0xa9,0xb5,0xc8,0xc3,0x65,0xa5,0x85,0xa5,0x0d,0xa8,0x29,
0x3c,0xbd,0x70,0x0d,0x3a,0x59,0x9e,0xdb,0x43,0x09,0xe2,0x5f,0xb8,0xe5,0x4d,0xb9,
0x7a,0xae,0xcb,0x6e,0x04,0x49,0xba,0xc3,0x60,0x8e,0xa8,0x5b,0xe9,0xe2,0xfc,0x33,
0x9a,0x48,0x97,0xbc,0xda,0x62,0x08,0xf9,0x25,0x3b,0x2d,0x63,0xf7,0x63,0xc7,0x51,
0xfc,0xd5,0x81,0xf9,0xd5,0x58,0x89,0x05,0x13,0x14,0x47,0xdd,0x56,0x3d,0xab,0xec,
0xc8,0x56,0x32,0x52,0xa3,0xee,0x2a,0x1a,0xb9,0xf6,0x89,0x4b,0x43,0x86,0x05,0x99,
0xd5,0xf9,0x2e,0x4b,0xa1,0x03,0xff,0x00,0x14,0xe7,0xf5,0xa6,0x8d,0xd3,0x7d,0x35,
0x75,0xcd,0xc0,0xdc,0x47,0x58,0x82,0x5c,0x3c,0x09,0x6e,0x33,0x3c,0x4a,0x24,0xf4,
0x00,0xab,0x27,0x3e,0xd4,0xc2,0x8b,0x11,0x32,0xe0,0xcc,0x46,0x94,0xe4,0x82,0x19,
0x6c,0x75,0x5b,0x98,0x4a,0x7f,0x13,0x5c,0x7b,0x75,0xaa,0xae,0x3a,0xff,0x00,0x72,
0x6d,0x5a,0x6f,0x6e,0xa3,0x3d,0x7b,0xd4,0xaa,0x79,0x2b,0x0f,0xc6,0x25,0x2c,0x42,
0x4a,0x48,0x2a,0x79,0xd7,0x47,0x24,0xa5,0x3e,0x9c,0xc9,0xe4,0x3a,0xd4,0x17,0xa2,
0xf6,0x77,0x72,0xb7,0xff,0x00,0x51,0xa2,0xd1,0x69,0x6a,0x5d,0xf6,0xe4,0xb5,0x61,
0xc4,0x38,0xe9,0x53,0x71,0xd3,0xc7,0xc2,0x56,0xea,0x87,0xca,0xda,0x41,0x0a,0xeb,
0xcc,0xf0,0xf2,0x07,0x23,0x3a,0xf5,0xd8,0xfb,0xb2,0x9d,0xab,0xb2,0xde,0xdf,0x2a,
0xdc,0x97,0x5b,0xb9,0x6a,0x5b,0x82,0x83,0xd7,0x4b,0x9a,0x51,0x8e,0xf1,0x5e,0x0d,
0xa3,0xc4,0x36,0x9f,0x0f,0x3e,0xa6,0xb3,0x9c,0xf1,0x5b,0x1a,0x46,0x17,0xc9,0x3e,
0x51,0x45,0x15,0xc6,0x74,0x85,0x14,0x51,0x40,0x05,0x55,0xfe,0xd0,0xba,0xf9,0xce,
0xcf,0x97,0x01,0x7c,0xbc,0x69,0x89,0xd7,0xbd,0x1d,0x35,0xc2,0x57,0x76,0xb5,0x94,
0x95,0xc2,0x75,0x47,0xee,0x3c,0xd9,0xc7,0xca,0x7c,0x16,0x0f,0x3e,0x98,0xcf,0x5b,
0x41,0x5c,0x37,0xcb,0x24,0x0d,0x4b,0x68,0x97,0x6b,0xba,0x44,0x6a,0x7d,0xba,0x5b,
0x6a,0x65,0xf8,0xcf,0xa4,0x29,0x0e,0x20,0x8c,0x10,0x41,0xaa,0x8c,0xb1,0x76,0x4c,
0x96,0x48,0xa5,0x56,0xee,0xd9,0x3b,0x59,0xa9,0xec,0xb2,0x58,0x6f,0x50,0x0d,0x2d,
0x74,0x79,0xa5,0xa1,0xa7,0x2e,0x30,0x96,0x52,0xc2,0x88,0x21,0x0b,0x3c,0x40,0x05,
0x63,0x92,0xb1,0x9c,0x78,0x52,0x96,0xda,0x6e,0x76,0x90,0xb6,0xda,0xdd,0x8d,0x2b,
0x77,0xad,0x5a,0xad,0xe7,0x5c,0xef,0x10,0xfc,0x97,0x1b,0x65,0x4d,0x8e,0x10,0x0a,
0x40,0x07,0x98,0xc8,0x27,0x9f,0x4c,0xe3,0xa5,0x32,0x77,0xa7,0xe1,0x76,0x65,0x4b,
0x95,0x73,0xdb,0x6b,0xf2,0x18,0x4a,0xfe,0x64,0xd9,0x6f,0x0a,0x51,0x4a,0x7f,0x95,
0x0f,0x0c,0x90,0x3c,0x82,0x81,0xf7,0xaa,0x21,0xaa,0xf6,0xf2,0xf9,0xa4,0x2e,0x37,
0x08,0x17,0x6b,0x7f,0x03,0xb0,0x5e,0x5c,0x77,0xd4,0x82,0x1c,0x42,0x56,0x95,0x70,
0xab,0x98,0xf0,0xc8,0xeb,0x5d,0x29,0xa9,0x3b,0x39,0x9c,0x69,0xee,0x6a,0x45,0xcf,
0x77,0xf4,0x4c,0x56,0xcf,0x1e,0xad,0xb4,0xab,0x87,0xf8,0x25,0x20,0x9f,0xc8,0xd3,
0x06,0xe7,0xda,0x0f,0x44,0x7d,0xa1,0x48,0x4d,0xcd,0x0e,0x0c,0xff,0x00,0xdc,0x4f,
0x43,0xf5,0xac,0xcc,0x30,0x1b,0xea,0x1b,0x4e,0x09,0xea,0x12,0x2b,0xe5,0x71,0x50,
0x79,0x84,0x0e,0x5e,0x95,0xa5,0x3e,0x84,0x69,0x2a,0xf7,0xcf,0x44,0xbc,0x33,0xfb,
0x4e,0x3a,0x4f,0xf3,0xba,0x69,0x12,0xe5,0xbc,0xfa,0x31,0xc2,0x4a,0x6e,0x70,0xb0,
0x7a,0x9e,0xfb,0x15,0x9f,0x08,0x8e,0x85,0x27,0x9a,0x46,0x7d,0x2b,0xe7,0xec,0x8d,
0x92,0x07,0x00,0x3f,0x4a,0x6a,0xc5,0x45,0xf3,0x7f,0x72,0xf4,0xb4,0xb1,0xf2,0x5d,
0xe0,0xe0,0xf9,0xc8,0x02,0x93,0xe4,0xeb,0xab,0x09,0x4f,0xcb,0x78,0x82,0x07,0xa4,
0x94,0xff,0x00,0xf6,0xa8,0xda,0xa1,0x35,0xfd,0xd2,0x4f,0xfb,0x6b,0xc9,0x70,0x9a,
0x07,0x3d,0xca,0x39,0x7f,0x28,0xa7,0xb8,0x51,0x73,0x26,0xee,0x16,0x9b,0x64,0x10,
0xe5,0xee,0x02,0x47,0x8f,0xf6,0x81,0xff,0x00,0xda,0x6d,0xcf,0xdc,0xed,0x1a,0xa5,
0x80,0xe6,0xa0,0x82,0x02,0x7f,0x75,0x2e,0xe6,0xaa,0xc3,0x30,0x92,0xe8,0x77,0x87,
0xba,0x6f,0xbb,0x47,0x1f,0xce,0x40,0xe2,0xe6,0x06,0x07,0x99,0xe7,0xf9,0x1a,0xf7,
0xb4,0xbf,0x1a,0x04,0xf4,0xbd,0x32,0x02,0x2e,0x4c,0x00,0x41,0x8e,0xb5,0xa9,0x00,
0x9f,0x03,0x94,0xf3,0xe5,0x49,0x95,0x45,0x96,0x67,0x7b,0xf4,0x55,0xac,0xb9,0xc3,
0x32,0x24,0xd2,0xac,0x60,0xa9,0x95,0xb9,0xc3,0xec,0x07,0x2f,0xc7,0x35,0xc7,0x73,
0xed,0x1f,0xa6,0x9f,0x8e,0xa6,0x12,0x94,0x94,0x1f,0x06,0x2d,0x49,0x42,0xbe,0x8b,
0xe0,0x07,0xf3,0xa8,0x16,0x05,0xfe,0x1d,0xbe,0xe1,0x36,0x48,0xd3,0xd6,0xf9,0x2c,
0xbe,0x41,0x6e,0x3c,0x9e,0x35,0xa1,0x8c,0x67,0x92,0x79,0xe4,0xf5,0xf1,0xf2,0xae,
0x58,0x17,0x75,0x5b,0x98,0x98,0xd2,0x21,0xc3,0x73,0xed,0x23,0x05,0x6f,0x34,0x16,
0xa6,0xc7,0xf2,0x13,0xf7,0x69,0x6f,0xe0,0x52,0x25,0xd9,0x9b,0xfb,0x64,0x57,0x10,
0x6a,0xdd,0x39,0xe3,0xfe,0x54,0x27,0xf5,0x55,0x23,0x48,0xde,0xe5,0x38,0x4f,0xd9,
0xac,0xc4,0x8f,0xf1,0xdf,0x03,0xf4,0x06,0x9b,0x36,0xd6,0xf5,0x36,0xa2,0xb3,0x47,
0xb5,0xb3,0x66,0x99,0x3a,0xd4,0xd2,0xd2,0x95,0x18,0x16,0xe2,0xb7,0x3a,0xe7,0x1c,
0x69,0x49,0x39,0xf7,0xa7,0x23,0x1d,0x9c,0x37,0x2e,0xf2,0xf8,0xfd,0x8d,0xb6,0xba,
0xc1,0x4c,0x72,0x41,0xfb,0x5d,0xb1,0xd4,0x9e,0x23,0xea,0x50,0x90,0x07,0xff,0x00,
0xb3,0x45,0xfa,0x15,0xe0,0x9d,0x3b,0x77,0x6f,0x0a,0x51,0x42,0x2d,0xd0,0xe3,0x2b,
0xc7,0x8c,0xad,0x64,0x7f,0xc6,0x92,0x9f,0xdc,0x4d,0x41,0x27,0xac,0xa8,0xec,0x7f,
0xa1,0x1c,0x0f,0xf9,0x15,0x54,0xb3,0x66,0xec,0x25,0xbe,0xd7,0xe7,0x12,0xb5,0x68,
0x59,0x11,0x92,0xb5,0xf0,0x97,0x27,0x4d,0x8e,0xde,0x3d,0x48,0x2e,0x71,0x63,0xe8,
0x6a,0x43,0xb1,0x7c,0x2f,0xf7,0x6e,0xe8,0xd2,0x1c,0x9f,0x37,0x4e,0xd9,0xc1,0x23,
0x2d,0xbb,0x2d,0xc7,0x56,0x91,0xe3,0xf7,0x5b,0xc6,0x7d,0x33,0xf5,0xa9,0xb8,0x2e,
0x58,0xd4,0x59,0x53,0x65,0x6a,0x1b,0xc4,0xac,0xf7,0xb7,0x69,0x58,0xff,0x00,0x0d,
0x61,0xbf,0xf8,0x01,0x49,0x52,0x0a,0xe5,0x1c,0x3e,0xf3,0xd2,0x3f,0xd6,0x75,0x4b,
0xfd,0x49,0xad,0x12,0xd3,0xff,0x00,0x09,0x77,0x16,0x84,0x1b,0xf6,0xe1,0xe0,0x92,
0x0a,0xdb,0xb6,0xdb,0xf1,0x81,0xe2,0x02,0x96,0xa3,0x9f,0x7c,0x54,0xa7,0xa5,0xfe,
0x17,0x7b,0x49,0x66,0x09,0x55,0xd2,0x4d,0xf2,0xfe,0xe0,0xe6,0x7b,0xf9,0x9d,0xca,
0x49,0xf6,0x6c,0x0e,0x55,0x2f,0x52,0x0b,0x82,0xb0,0x66,0x4a,0x70,0x36,0xdf,0x2c,
0x25,0x23,0xa7,0x95,0x38,0x74,0xbe,0xdb,0xea,0xbd,0x6f,0x25,0x2c,0x69,0xfd,0x35,
0x74,0xbc,0x3a,0xa3,0x84,0x88,0x71,0x16,0xbc,0x9f,0x70,0x31,0x5b,0x61,0xa4,0xbb,
0x26,0x6d,0x0e,0x89,0x71,0xa7,0x6d,0x5a,0x06,0xcc,0x87,0xdb,0xe6,0x97,0xdf,0x60,
0x3c,0xbc,0xf9,0x92,0xbc,0xd4,0xa7,0x06,0xdb,0x12,0xd6,0xc7,0x73,0x0a,0x2b,0x31,
0x19,0xfe,0xed,0x86,0xc2,0x13,0xf8,0x01,0x52,0xf5,0xbc,0x45,0x2d,0x3f,0x59,0x8f,
0x9b,0x73,0xf0,0xda,0xde,0x2d,0x7e,0x94,0x48,0xb8,0xc1,0x87,0xa3,0xe1,0xab,0x18,
0x37,0x97,0x48,0x77,0x1f,0xe9,0xa0,0x29,0x40,0xfb,0x81,0x56,0xa7,0x68,0xfe,0x15,
0x3a,0x13,0x4b,0x38,0xd4,0xdd,0x71,0x78,0x99,0xab,0xe6,0xa0,0x85,0x08,0x91,0xc9,
0x87,0x10,0x7a,0x1e,0x13,0xde,0x2b,0xdf,0x89,0x3e,0xd5,0x78,0xe8,0xac,0x9e,0xa4,
0x99,0x6a,0x09,0x08,0x9a,0x47,0x44,0xe9,0xfd,0x03,0x67,0x6a,0xd5,0xa6,0xec,0xb0,
0x6c,0x76,0xe6,0xc7,0xcb,0x1a,0x03,0x09,0x69,0x1e,0xe4,0x24,0x73,0x3e,0xa7,0x9d,
0x2d,0xd1,0x45,0x66,0x58,0x51,0x45,0x14,0x00,0x51,0x45,0x14,0x00,0x51,0x45,0x14,
0x00,0x56,0x4f,0xf6,0xd5,0xec,0xeb,0xaf,0xb6,0xd3,0x57,0xea,0x7d,0x4c,0xd2,0x15,
0x77,0xd0,0xf7,0x99,0x8f,0xc9,0x12,0x98,0x1c,0x46,0x27,0x7c,0xa2,0xa2,0xdb,0xc3,
0x19,0x00,0x15,0x10,0x15,0xd0,0xfe,0x55,0xac,0x15,0xcd,0x71,0xb7,0x45,0xbb,0xc1,
0x7e,0x14,0xd8,0xed,0x4b,0x88,0xfa,0x0b,0x6e,0xb0,0xf2,0x02,0x90,0xb4,0x9e,0xa0,
0x83,0xc8,0x8a,0x69,0xd1,0x2d,0x59,0x83,0xfb,0x7b,0x7f,0x46,0x95,0xb7,0x2e,0x23,
0xe8,0x6f,0x84,0xba,0xa3,0xc0,0xac,0x12,0x72,0x07,0x3c,0x53,0xe0,0xdd,0x2c,0xb2,
0x59,0x43,0xaf,0x42,0x85,0x21,0x2a,0xe6,0x4f,0x74,0x9c,0x8e,0x59,0xc1,0xe5,0xd7,
0xad,0x5c,0x9e,0xd1,0x7f,0x0d,0x6b,0x56,0xa6,0x6a,0x75,0xe3,0x6c,0xe4,0x22,0xcd,
0x71,0x70,0x97,0x15,0x63,0x94,0xaf,0xec,0x6e,0x9f,0x10,0xda,0xba,0xb6,0x7f,0x11,
0xed,0x59,0xe7,0xb8,0x3a,0x23,0x59,0xed,0x05,0xe9,0xcb,0x15,0xde,0xcf,0x2e,0xd3,
0x73,0x8e,0x38,0x97,0x12,0x6a,0x72,0x1c,0x18,0xe6,0xa6,0xd6,0x39,0x29,0x27,0x00,
0xe4,0x12,0x3a,0xd6,0xb9,0x78,0x65,0x85,0xbd,0xc7,0x55,0xcd,0x16,0x37,0x50,0x54,
0xdd,0xba,0x33,0x5c,0xce,0x0a,0x46,0x29,0x8b,0xaa,0xef,0x56,0xbb,0x0c,0x17,0x1c,
0x10,0xdb,0x53,0xbd,0x10,0x90,0x4f,0x33,0xf8,0xd3,0x73,0xfa,0x7c,0xb4,0xa9,0x09,
0x9c,0xc2,0xd8,0x56,0x70,0x49,0x1c,0x89,0xf4,0x22,0x91,0xf5,0x5b,0x12,0x75,0x0b,
0x46,0x6b,0x2e,0xb0,0x22,0x36,0x33,0xfd,0x63,0xc1,0x27,0x1e,0x60,0x78,0xd2,0x53,
0xbe,0x19,0x52,0xd2,0x94,0x3f,0xb2,0x17,0x74,0x74,0x88,0x97,0x16,0x1c,0x76,0xf5,
0x71,0x54,0x75,0xac,0x15,0x21,0x09,0x01,0x28,0x6c,0x7b,0xe3,0x34,0xc0,0xd5,0x5a,
0xd5,0xe8,0x17,0x75,0x33,0x6d,0x9a,0xf4,0x98,0xe9,0x56,0x12,0xa5,0x21,0x23,0x8c,
0x67,0xc0,0x63,0x3c,0xeb,0xc3,0x58,0x4e,0x0c,0xd9,0x22,0x77,0x04,0x84,0xb8,0x03,
0x79,0x1d,0x30,0x2b,0xc7,0x4c,0x14,0xaa,0x0f,0xda,0xcb,0x48,0x32,0x16,0x4b,0x69,
0x59,0x4f,0x34,0x24,0x63,0x24,0x7a,0x9c,0xe3,0x3e,0x94,0xa5,0x27,0xc2,0x2a,0x31,
0x4f,0x73,0x58,0xfb,0x1c,0x5d,0xbb,0x29,0xf6,0x83,0xb5,0xc4,0xb3,0x44,0xd0,0xb0,
0xed,0x3a,0xd9,0x2c,0x20,0xc9,0xb4,0xdf,0x54,0xea,0xdd,0x7d,0x69,0x4f,0xce,0xb6,
0x14,0xb5,0x90,0xb1,0xc8,0x9c,0x27,0x04,0x78,0x8a,0xb6,0x96,0xee,0xca,0x3b,0x3b,
0x6a,0x5a,0xd4,0xc6,0xdb,0x69,0xc5,0x95,0x8c,0x11,0x22,0x02,0x1e,0x1f,0x40,0xb0,
0x40,0xfa,0x56,0x1e,0x6d,0x3e,0xb3,0xb9,0xed,0x3e,0xe0,0xe9,0x9d,0x55,0x09,0xb7,
0x13,0x3a,0xd7,0x31,0xb9,0x8d,0x26,0x40,0xe4,0xb0,0x0f,0x3e,0xbe,0x0a,0x49,0x52,
0x7e,0xb5,0xfa,0x18,0x42,0xb8,0xd0,0x95,0x74,0xc8,0xcd,0x4d,0xbf,0x4a,0xa4,0x30,
0xad,0xfd,0x9f,0x76,0xc2,0xd4,0xea,0x9d,0x87,0xb7,0x7a,0x56,0x3b,0x8a,0x1c,0x25,
0x4d,0xd9,0xa3,0x82,0x47,0x97,0xdc,0xa7,0x0c,0x0d,0x05,0xa6,0x2d,0x51,0xc4,0x78,
0x5a,0x72,0xd3,0x0d,0x80,0x4a,0x83,0x4c,0x41,0x69,0x09,0x04,0xf5,0x38,0x09,0xc5,
0x2f,0x51,0x4a,0xc6,0x7c,0xa1,0xb4,0x34,0x90,0x94,0x24,0x21,0x20,0x60,0x04,0x8c,
0x01,0x5f,0x54,0x51,0x48,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,
0xa0,0x02,0x8a,0x28,0xa0,0x02,0x8a,0x28,0xa0,0x02,0x9a,0xbb,0x8d,0xb5,0xba,0x57,
0x76,0xb4,0xfb,0x96,0x6d,0x59,0x64,0x8b,0x79,0x82,0xa0,0x78,0x43,0xe8,0xf9,0xda,
0x51,0x18,0xe2,0x6d,0x63,0xe6,0x42,0xbd,0x52,0x45,0x3a,0xa8,0xa0,0x0c,0xbf,0xed,
0x0d,0xf0,0xca,0xbd,0xe9,0x61,0x2a,0xef,0xb7,0x4f,0x2f,0x52,0xd9,0xf9,0xad,0x56,
0x99,0x18,0x13,0x19,0x1e,0x49,0x3d,0x1d,0xfc,0x8f,0xa1,0xaa,0x3d,0xaa,0xb4,0xd4,
0xbb,0x0b,0x13,0x2d,0xb3,0x60,0x3b,0x0a,0x4b,0x20,0xb6,0xb8,0xef,0x34,0x5b,0x71,
0x18,0xe5,0x8c,0x1f,0x2a,0xfd,0x10,0xd4,0x7d,0xb9,0x7b,0x05,0xa0,0x37,0x79,0xa2,
0x35,0x56,0x98,0x83,0x73,0x7b,0x84,0xa5,0x32,0x8b,0x7c,0x0f,0xa7,0x3e,0x4b,0x4e,
0x0d,0x5a,0x95,0x72,0x43,0x8f,0x87,0xe7,0x93,0x54,0x58,0xbe,0xd3,0xa3,0xa3,0xbb,
0x1c,0x97,0x97,0x19,0x5c,0x4b,0x09,0x1d,0x12,0x7a,0xfe,0x1c,0xa9,0x17,0x4a,0x4b,
0x47,0xd8,0x8b,0x7c,0x40,0x38,0xda,0x8e,0x53,0x9e,0x7c,0x27,0x9e,0x47,0xd6,0xb6,
0x3f,0x5b,0x7c,0x27,0x36,0xce,0x7f,0xda,0xa5,0xd8,0xb5,0x1e,0xa2,0xd3,0x8a,0x21,
0x4a,0x0c,0xb4,0xea,0x1f,0x6f,0xd8,0x85,0xa7,0x24,0x7d,0x6a,0x06,0xec,0xd9,0xf0,
0xea,0xd2,0xba,0x87,0x7b,0xae,0x0a,0xbf,0xde,0xd5,0x73,0xb6,0x69,0xa9,0x8d,0xa9,
0x56,0xf4,0x40,0x0d,0x26,0x69,0x1f,0x36,0x16,0x7b,0xc5,0x61,0x27,0x1c,0xc0,0x1c,
0xfc,0xe8,0x74,0xf7,0x43,0x8d,0xad,0x99,0x07,0xf6,0x3c,0xec,0xfd,0xa9,0x7b,0x47,
0xee,0x15,0x9e,0xdc,0x96,0x26,0x23,0x46,0xc0,0x90,0x89,0x57,0x49,0xef,0xa5,0x45,
0x80,0xda,0x54,0x09,0x6d,0x24,0xf2,0x2b,0x5e,0x38,0x40,0x1e,0x79,0x3d,0x2b,0x73,
0xc0,0x09,0x00,0x0e,0x40,0x57,0x15,0x96,0xc5,0x6d,0xd3,0x76,0xe6,0xa0,0x5a,0x60,
0x46,0xb6,0x41,0x6b,0x92,0x23,0x44,0x65,0x2d,0x36,0x9f,0x64,0xa4,0x01,0x5d,0xd5,
0x05,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,
0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x05,0x14,0x51,0x40,0x1f,0xff,0xd9};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
These are slightly modified versions of the adafruit_gfx_demo.
Extra Images were included:
The Star Ship ENTERPRISE "NCC-1701" from http://clipart-library.com/clip-art/uss-enterprise-silhouette-11.htm
And an image of "Batman" from https://all-free-download.com/free-vector/download/batman-5_132955.html
The JPEGDraw function was changed for use with the M5Stack devices.
M5.Lcd.drawBitmap((int16_t)pDraw->x, (int16_t)pDraw->y, (int16_t)pDraw->iWidth, (int16_t)pDraw->iHeight, pDraw->pPixels);
Another small change was to add a check if the image had a thumbnail or not, and call the correct jpg decode routine.
if (jpeg.hasThumb()) {jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]); } else { jpeg.decode(iCenterX[i],iCenterY[i], iOption[i]); }
To display the other images, uncomment the image you want to display, comment the others.
Also uncomment the line with the name of the image you want to display, and comment the others.
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)ncc1701, sizeof(ncc1701), JPEGDraw))
//if (jpeg.openFLASH((uint8_t *)batman, sizeof(batman), JPEGDraw))
M5Stack, M5Core2 and M5Fire sketches are almost the same, the difference is how you start the screen on the Fire, and M5Core2.
M5StickC and M5StickCPlus are the same with the difference being which library is used (either M5StickC.h or M5StickkCPlus.h) and display size between the two devices.
Tested on:
M5Stack Gray
M5Stack Fire
M5StickC
M5StickC Plus
M5Core2
Untested: (should work with M5Stack, but unable to test)
M5Stack Basic (should work)
M5Go Lite
M5Go
Feb 22, 2021 - LeRoy Miller, KD8BXP

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -0,0 +1,72 @@
// JPEGDEC example for Adafruit GFX displays
#include <JPEGDEC.h>
// Sample image (truncated) containing a 320x240 Exif thumbnail
#include "thumb_test.h"
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define DISPLAY_WIDTH 320
#define DISPLAY_HEIGHT 240
// PyPortal-specific pins
#define SD_CS 32 // SD card select
#define TFT_D0 34 // Data bit 0 pin (MUST be on PORT byte boundary)
#define TFT_WR 26 // Write-strobe pin (CCL-inverted timer output)
#define TFT_DC 10 // Data/command pin
#define TFT_CS 11 // Chip-select pin
#define TFT_RST 24 // Reset pin
#define TFT_RD 9 // Read-strobe pin
#define TFT_BACKLIGHT 25 // Backlight enable (active high)
Adafruit_ILI9341 tft(tft8bitbus, TFT_D0, TFT_WR, TFT_DC, TFT_CS, TFT_RST, TFT_RD);
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
// Serial.printf("jpeg draw: x,y=%d,%d, cx,cy = %d,%d\n", pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
// Serial.printf("Pixel 0 = 0x%04x\n", pDraw->pPixels[0]);
tft.dmaWait(); // Wait for prior writePixels() to finish
tft.setAddrWindow(pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
tft.writePixels(pDraw->pPixels, pDraw->iWidth * pDraw->iHeight, true, false); // Use DMA, big-endian
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
//while (!Serial);
Serial.println("Starting...");
pinMode(TFT_BACKLIGHT, OUTPUT);
digitalWrite(TFT_BACKLIGHT, HIGH); // Backlight on
// put your setup code here, to run once:
tft.begin();
tft.setRotation(3); // PyPortal native orientation
} /* setup() */
void loop() {
int i;
long lTime;
int iOption[4] = {0, JPEG_SCALE_HALF, JPEG_SCALE_QUARTER, JPEG_SCALE_EIGHTH};
int iCenterX[4] = {0,80,120,140};
int iCenterY[4] = {0,60,90,105};
for (i=0; i<4; i++)
{
tft.fillScreen(ILI9341_BLACK);
tft.startWrite(); // Not sharing TFT bus on PyPortal, just CS once and leave it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), JPEGDraw))
{
lTime = micros();
if (jpeg.decode(iCenterX[i],iCenterY[i],JPEG_EXIF_THUMBNAIL | iOption[i]))
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth() >> i, jpeg.getHeight() >> i, (int)lTime);
}
jpeg.close();
}
delay(2000); // pause between images
} // for i
} /* loop() */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,369 @@
// slimmed down version of the Open Book IL0398 driver.
// https://github.com/joeycastillo/The-Open-Book/blob/master/src/Grayscale_IL0398.cpp
#include "Grayscale_IL0398.h"
#define BUSY_WAIT 500
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#ifndef _swap_int16_t
#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; }
#endif
/**************************************************************************/
/*!
@brief constructor if using external SRAM chip and software SPI
@param width the width of the display in pixels
@param height the height of the display in pixels
@param SID the SID pin to use
@param SCLK the SCLK pin to use
@param DC the data/command pin to use
@param RST the reset pin to use
@param CS the chip select pin to use
@param SRCS the SRAM chip select pin to use
@param MISO the MISO pin to use
@param BUSY the busy pin to use
*/
/**************************************************************************/
Grayscale_IL0398::Grayscale_IL0398(int width, int height,
int8_t SID, int8_t SCLK, int8_t DC, int8_t RST,
int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY) :
Adafruit_EPD(width, height, SID, SCLK, DC, RST, CS, SRCS, MISO, BUSY) {
buffer1_size = ((uint32_t)width * (uint32_t)height) / 8;
buffer2_size = buffer1_size;
if (SRCS >= 0) {
use_sram = true;
buffer1_addr = 0;
buffer2_addr = buffer1_size;
buffer1 = buffer2 = NULL;
} else {
buffer1 = (uint8_t *)malloc(buffer1_size);
buffer2 = (uint8_t *)malloc(buffer2_size);
}
}
// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset
/**************************************************************************/
/*!
@brief constructor if using on-chip RAM and hardware SPI
@param width the width of the display in pixels
@param height the height of the display in pixels
@param DC the data/command pin to use
@param RST the reset pin to use
@param CS the chip select pin to use
@param SRCS the SRAM chip select pin to use
@param BUSY the busy pin to use
*/
/**************************************************************************/
Grayscale_IL0398::Grayscale_IL0398(int width, int height,
int8_t DC, int8_t RST,
int8_t CS, int8_t SRCS, int8_t BUSY, SPIClass *spi) :
Adafruit_EPD(width, height, DC, RST, CS, SRCS, BUSY, spi) {
buffer1_size = ((uint32_t)width * (uint32_t)height) / 8;
buffer2_size = buffer1_size;
if (SRCS >= 0) {
use_sram = true;
buffer1_addr = 0;
buffer2_addr = 0;
buffer1 = buffer2 = NULL;
} else {
buffer1 = (uint8_t *)malloc(buffer1_size);
buffer2 = (uint8_t *)malloc(buffer1_size);
}
}
/**************************************************************************/
/*!
@brief wait for busy signal to end
*/
/**************************************************************************/
void Grayscale_IL0398::busy_wait(void)
{
if (_busy_pin > -1) {
do {
EPD_command(IL0398_GETSTATUS);
delay(10);
} while (!digitalRead(_busy_pin)); //wait for busy high
delay(200);
} else {
delay(BUSY_WAIT);
}
}
/**************************************************************************/
/*!
@brief begin communication with and set up the display.
@param reset if true the reset pin will be toggled.
*/
/**************************************************************************/
void Grayscale_IL0398::begin(bool reset)
{
Adafruit_EPD::begin(reset);
setBlackBuffer(0, true);
powerDown();
}
/**************************************************************************/
/*!
@brief signal the display to update
*/
/**************************************************************************/
void Grayscale_IL0398::update()
{
EPD_command(IL0398_DISPLAY_REFRESH);
delay(100);
busy_wait();
if (_busy_pin <= -1) {
delay(5000);
}
}
const unsigned char Grayscale_IL0398::LUT_VCOM_GRAYSCALE[] PROGMEM =
{
0x00, 0x0A, 0x00, 0x00, 0x00, 0x01,
0x60, 0x14, 0x14, 0x00, 0x00, 0x01,
0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
0x00, 0x13, 0x0A, 0x01, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00,
0x00
};
const unsigned char Grayscale_IL0398::LUT_WW_GRAYSCALE[] PROGMEM =
{
0x40, 0x0A, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x10, 0x14, 0x0A, 0x00, 0x00, 0x01,
0xA0, 0x13, 0x01, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const unsigned char Grayscale_IL0398::LUT_WB_GRAYSCALE[] PROGMEM =
{
0x40, 0x0A, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x00, 0x14, 0x0A, 0x00, 0x00, 0x01,
0x99, 0x0B, 0x04, 0x04, 0x01, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const unsigned char Grayscale_IL0398::LUT_BW_GRAYSCALE[] PROGMEM =
{
0x40, 0x0A, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x00, 0x14, 0x0A, 0x00, 0x00, 0x01,
0x99, 0x0C, 0x01, 0x03, 0x04, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
const unsigned char Grayscale_IL0398::LUT_BB_GRAYSCALE[] PROGMEM =
{
0x80, 0x0A, 0x00, 0x00, 0x00, 0x01,
0x90, 0x14, 0x14, 0x00, 0x00, 0x01,
0x20, 0x14, 0x0A, 0x00, 0x00, 0x01,
0x50, 0x13, 0x01, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/**************************************************************************/
/*!
@brief start up the display. Same as init, but here for compatibility with
Adafruit_EPD; you can call Grayscale_IL0398::init with more options.
*/
/**************************************************************************/
void Grayscale_IL0398::powerUp() {
uint8_t buf[5];
hardwareReset();
buf[0] = 0x03; // Panel will generate VDH and VDL (1<<0) and VGH and VGL (1<<1)
buf[1] = 0x00; // VCOMH=VDH+VCOMDC and VCOML=VDL+VCOMDC; VGH and VGL are 16v and -16v respectively
buf[2] = 0x2b; // VDH= 11V
buf[3] = 0x2b; // VDL=-11V
buf[4] = 0x13; // VDHR=6.2V
EPD_command(IL0398_POWER_SETTING, buf, 5);
buf[0] = 0x17; // phase A: soft start 10ms, driving strength 3, off time 6.58us
buf[1] = 0x17; // phase B: soft start 10ms, driving strength 3, off time 6.58us
buf[2] = 0x17; // phase C: driving strength 3, off time 6.58us
EPD_command(IL0398_BOOSTER_SOFT_START, buf, 3);
buf[0] = 0x3F; // (1<<4) sets display to monochrome and (1<<5) enables custom LUTs
EPD_command(IL0398_PANEL_SETTING, buf, 1);
buf[0] = 0x3C; // 50 Hz
EPD_command(IL0398_PLL, buf, 1);
buf[0] = (HEIGHT >> 8) & 0xFF;
buf[1] = HEIGHT & 0xFF;
buf[2] = (WIDTH >> 8) & 0xFF;
buf[3] = WIDTH & 0xFF;
EPD_command(IL0398_RESOLUTION, buf, 4);
buf[0] = 0x12; // VCOM_DC = -1.5v
EPD_command(IL0398_VCM_DC_SETTING, buf, 1);
buf[0] = 0xD7; // 0x57 for black border. 0x97 for white border. 0xD7 for floating border.
EPD_command(IL0398_VCOM, buf, 1);
EPD_command(IL0398_LUT1, LUT_VCOM_GRAYSCALE, sizeof(LUT_VCOM_GRAYSCALE));
EPD_command(IL0398_LUTWW, LUT_WW_GRAYSCALE, sizeof(LUT_WW_GRAYSCALE));
EPD_command(IL0398_LUTBW, LUT_BW_GRAYSCALE, sizeof(LUT_BW_GRAYSCALE));
EPD_command(IL0398_LUTWB, LUT_WB_GRAYSCALE, sizeof(LUT_WB_GRAYSCALE));
EPD_command(IL0398_LUTBB, LUT_BB_GRAYSCALE, sizeof(LUT_BB_GRAYSCALE));
EPD_command(IL0398_POWER_ON);
busy_wait();
delay(20);
}
/**************************************************************************/
/*!
@brief wind down the display
*/
/**************************************************************************/
void Grayscale_IL0398::powerDown()
{
uint8_t buf[4];
// power off
buf[0] = 0xF7; // border floating
EPD_command(IL0398_VCOM, buf, 1);
EPD_command(IL0398_POWER_OFF);
busy_wait();
buf[0] = 0xA5; // deep sleep
EPD_command(IL0398_DEEP_SLEEP, buf, 1);
delay(100);
}
/**************************************************************************/
/*!
@brief draw a single pixel on the screen
@param x the x axis position
@param y the y axis position
@param color the color of the pixel
*/
/**************************************************************************/
void Grayscale_IL0398::drawPixel(int16_t x, int16_t y, uint16_t color) {
if ((x < 0) || (x >= width()) || (y < 0) || (y >= height()))
return;
uint8_t *pByte1;
uint8_t *pByte2;
// check rotation, move pixel around if necessary
switch (getRotation()) {
case 1:
EPD_swap(x, y);
x = WIDTH - x - 1;
break;
case 2:
x = WIDTH - x - 1;
y = HEIGHT - y - 1;
break;
case 3:
EPD_swap(x, y);
y = HEIGHT - y - 1;
break;
}
uint16_t addr = ( (uint32_t)(WIDTH - 1 - x) * (uint32_t)HEIGHT + y)/8;
if (use_sram) {
uint8_t byte1 = sram.read8(blackbuffer_addr + addr);
uint8_t byte2 = sram.read8(colorbuffer_addr + addr);
pByte1 = &byte1;
pByte2 = &byte2;
} else {
pByte1 = black_buffer + addr;
pByte2 = color_buffer + addr;
}
switch (color) {
case EPD_BLACK:
*pByte1 &= ~(1 << (7 - (y%8)));
*pByte2 &= ~(1 << (7 - (y%8)));
break;
case EPD_DARK:
*pByte1 |= (1 << (7 - (y%8)));
*pByte2 &= ~(1 << (7 - (y%8)));
break;
case EPD_LIGHT:
*pByte1 &= ~(1 << (7 - (y%8)));
*pByte2 |= (1 << (7 - (y%8)));
break;
case EPD_WHITE:
*pByte1 |= (1 << (7 - (y%8)));
*pByte2 |= (1 << (7 - (y%8)));
break;
}
if (use_sram) {
sram.write8(addr, *pByte1);
sram.write8(addr + buffer1_size, *pByte2);
}
}
/**************************************************************************/
/*!
@brief Send the specific command to start writing to EPD display RAM
@param index The index for which buffer to write (0 or 1 or tri-color displays)
Ignored for monochrome displays.
@returns The byte that is read from SPI at the same time as sending the command
*/
/**************************************************************************/
uint8_t Grayscale_IL0398::writeRAMCommand(uint8_t index) {
if (index == 0) {
return EPD_command(IL0398_DTM2, false);
}
if (index == 1) {
return EPD_command(IL0398_DTM1, false);
}
return 0;
}
/**************************************************************************/
/*!
@brief Some displays require setting the RAM address pointer
@param x X address counter value
@param y Y address counter value
*/
/**************************************************************************/
void Grayscale_IL0398::setRAMAddress(uint16_t x, uint16_t y) {
// on this chip we do nothing
}
/*!
* @file Adafruit_IL0398.cpp
*
* Forked from Adafruit_IL0398.cpp; copyright notce below.
*
* Adafruit invests time and resources providing this open source code,
* please support Adafruit and open-source hardware by purchasing
* products from Adafruit!
*
* Written by Dean Miller for Adafruit Industries.
* Open Book additions by Joey Castillo.
*
* BSD license, all text here must be included in any redistribution.
*
*/

View File

@ -0,0 +1,49 @@
// slimmed down version of the Open Book IL0398 driver.
// https://github.com/joeycastillo/The-Open-Book/blob/master/src/Grayscale_IL0398.h
/**************************************************************************/
/*!
@brief Class for interfacing with IL0398 EPD drivers
*/
/**************************************************************************/
#include "Adafruit_EPD.h"
class Grayscale_IL0398 : public Adafruit_EPD {
public:
Grayscale_IL0398(int width, int height, int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS, int8_t SRCS, int8_t MISO, int8_t BUSY = -1);
Grayscale_IL0398(int width, int height, int8_t DC, int8_t RST, int8_t CS, int8_t SRCS, int8_t BUSY = -1, SPIClass *spi = &SPI);
void begin(bool reset=true);
void powerUp();
void update();
void powerDown();
void drawPixel(int16_t x, int16_t y, uint16_t color);
protected:
uint8_t writeRAMCommand(uint8_t index);
void setRAMAddress(uint16_t x, uint16_t y);
void busy_wait();
private:
static const unsigned char LUT_VCOM_GRAYSCALE[];
static const unsigned char LUT_WW_GRAYSCALE[];
static const unsigned char LUT_WB_GRAYSCALE[];
static const unsigned char LUT_BW_GRAYSCALE[];
static const unsigned char LUT_BB_GRAYSCALE[];
};
/*!
* @file Grayscale_IL0398.h
*
* Forked from Adafruit_IL0398.h; copyright notce below.
*
* Adafruit invests time and resources providing this open source code,
* please support Adafruit and open-source hardware by purchasing
* products from Adafruit!
*
* Written by Dean Miller for Adafruit Industries.
* Open Book additions by Joey Castillo.
*
* BSD license, all text here must be included in any redistribution.
*
*/

View File

@ -0,0 +1,112 @@
// JPEGDEC example for 4.2" monochrome E-Paper displays
// Does not work with tri-color 4.2" displays!
#include <JPEGDEC.h>
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Grayscale_IL0398.h"
#include "lange.h" // Demo photographs, grayscale, sized 300x400
#define DISPLAY_WIDTH 300
#define DISPLAY_HEIGHT 400
// set these values to match the pins and the SPI bus for your display
#define EPD_CS 44
#define EPD_DC 45
#define EPD_RST 46
#define EPD_BSY 47
#define EPD_DISPLAY_BUS &SPI1
// adds a basic Floyd-Steinberg dither to each block of pixels rendered.
bool dither = true;
JPEGDEC jpeg;
Grayscale_IL0398 display(DISPLAY_WIDTH, DISPLAY_HEIGHT, EPD_DC, EPD_RST, EPD_CS, -1, EPD_BSY, EPD_DISPLAY_BUS);
int JPEGDraw(JPEGDRAW *pDraw)
{
int x = pDraw->x;
int y = pDraw->y;
int w = pDraw->iWidth;
int h = pDraw->iHeight;
for(int i = 0; i < w * h; i++)
{
pDraw->pPixels[i] = (pDraw->pPixels[i] & 0x7e0) >> 5; // extract just the six green channel bits.
}
if (dither)
{
for(int16_t j = 0; j < h; j++)
{
for(int16_t i = 0; i < w; i++)
{
int8_t oldPixel = constrain(pDraw->pPixels[i + j * w], 0, 0x3F);
int8_t newPixel = oldPixel & 0x38; // or 0x30 to dither to 2-bit directly. much improved tonal range, but more horizontal banding between blocks.
pDraw->pPixels[i + j * w] = newPixel;
int quantError = oldPixel - newPixel;
if(i + 1 < w) pDraw->pPixels[i + 1 + j * w] += quantError * 7 / 16;
if((i - 1 >= 0) && (j + 1 < h)) pDraw->pPixels[i - 1 + (j + 1) * w] += quantError * 3 / 16;
if(j + 1 < h) pDraw->pPixels[i + (j + 1) * w] += quantError * 5 / 16;
if((i + 1 < w) && (j + 1 < h)) pDraw->pPixels[i + 1 + (j + 1) * w] += quantError * 1 / 16;
} // for i
} // for j
} // if dither
for(int16_t i = 0; i < w; i++)
{
for(int16_t j = 0; j < h; j++)
{
switch (constrain(pDraw->pPixels[i + j * w] >> 4, 0, 3))
{
case 0:
display.writePixel(x+i, y+j, EPD_BLACK);
break;
case 1:
display.writePixel(x+i, y+j, EPD_DARK);
break;
case 2:
display.writePixel(x+i, y+j, EPD_LIGHT);
break;
case 3:
display.writePixel(x+i, y+j, EPD_WHITE);
break;
} // switch
} // for j
} // for i
return 1;
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
//while (!Serial) delay(1000);
Serial.println("Starting...");
display.begin();
display.fillRect(0, 0, 300, 400, EPD_BLACK);
display.display();
} /* setup() */
const uint8_t * images[] = {demo_001_jpg, demo_002_jpg, demo_003_jpg, demo_004_jpg, demo_005_jpg, demo_006_jpg, demo_007_jpg, demo_008_jpg};
size_t imageLengths[] = {demo_001_jpg_len, demo_002_jpg_len, demo_003_jpg_len, demo_004_jpg_len, demo_005_jpg_len, demo_006_jpg_len, demo_007_jpg_len, demo_008_jpg_len};
void loop() {
int i;
long lTime;
for (i=0; i<8; i++)
{
if (jpeg.openFLASH((uint8_t *)images[i], imageLengths[i], JPEGDraw))
{
lTime = micros();
if (jpeg.decode((300 - jpeg.getWidth()) / 2, (400 - jpeg.getHeight()) / 2, 0))
{
lTime = micros() - lTime;
Serial.printf("%d x %d image, decode time = %d us\n", jpeg.getWidth(), jpeg.getHeight(), (int)lTime);
}
jpeg.close();
}
display.display();
delay(4000); // pause between images
} // for i
} /* loop() */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,92 @@
//
// JPEG thumbnail decode test
//
// This example sketch decodes an EXIF thumbnail image
// embedded in a 12 megapixel photo taken on a mobile phone
//
// It's written to run on an ESP32 connected to a ILI9341 LCD
// although it can certainly be compiled on other target MCUs and displays
//
#include <bb_spi_lcd.h>
#include "JPEGDEC.h"
#include "../test_images/thumb_test.h"
// These pin definitions are for a custom ESP32
// board. Please change them to match the display
// and board you're using
#define CS_PIN 4
#define DC_PIN 12
#define LED_PIN 16
#define RESET_PIN -1
#define MISO_PIN 19
#define MOSI_PIN 23
#define SCK_PIN 18
// Static instance of the JPEGDEC structure. It requires about
// 17.5K of RAM. You can allocate it dynamically too. Internally it
// does not allocate or free any memory; all memory management decisions
// are left to you
JPEGDEC jpeg;
// The LCD display library instance
SPILCD lcd;
//
// Pixel drawing callback
// called once for each set of MCUs (minimum coded units).
// JPEGDEC will try to send as many pixels as it can per call.
// In this case, it's as many as can fit in
// the internal 4K pixel buffer. This allows it to run more
// efficiently than calling this for every MCU. For this demo, the
// MCUs are only 4x4 pixels each since we ask to decode the image
// at 1/4 size
//
int drawMCUs(JPEGDRAW *pDraw)
{
int iCount;
iCount = pDraw->iWidth * pDraw->iHeight; // number of pixels to draw in this call
// Serial.printf("Draw pos = %d,%d. size = %d x %d\n", pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight);
spilcdSetPosition(&lcd, pDraw->x, pDraw->y, pDraw->iWidth, pDraw->iHeight, DRAW_TO_LCD);
spilcdWriteDataBlock(&lcd, (uint8_t *)pDraw->pPixels, iCount*2, DRAW_TO_LCD | DRAW_WITH_DMA);
return 1; // returning true (1) tells JPEGDEC to continue decoding. Returning false (0) would quit decoding immediately.
} /* drawMCUs() */
void setup()
{
Serial.begin(115200);
while (!Serial) {};
spilcdInit(&lcd, LCD_ILI9341, FLAGS_NONE, 40000000, CS_PIN, DC_PIN, RESET_PIN, LED_PIN, MISO_PIN, MOSI_PIN, SCK_PIN);
spilcdSetOrientation(&lcd, LCD_ORIENTATION_90);
spilcdFill(&lcd, 0, DRAW_TO_LCD); // erase display to black
spilcdWriteString(&lcd, 46,0,(char *)"JPEG Thumbnail test", 0x7e0,0,FONT_12x16, DRAW_TO_LCD);
delay(4000);
} /* setup() */
void loop() {
long lTime;
char szTemp[64];
// Open a large JPEG image stored in FLASH memory (included as thumb_test.h)
// This image is 12 megapixels, but has a 320x240 embedded thumbnail in it
if (jpeg.openFLASH((uint8_t *)thumb_test, sizeof(thumb_test), drawMCUs))
{
Serial.println("Successfully opened JPEG image");
Serial.printf("Image size: %d x %d, orientation: %d, bpp: %d\n", jpeg.getWidth(),
jpeg.getHeight(), jpeg.getOrientation(), jpeg.getBpp());
if (jpeg.hasThumb())
Serial.printf("Thumbnail present: %d x %d\n", jpeg.getThumbWidth(), jpeg.getThumbHeight());
jpeg.setPixelType(RGB565_BIG_ENDIAN); // The SPI LCD wants the 16-bit pixels in big-endian order
lTime = micros();
// Draw the thumbnail image in the middle of the display (upper left corner = 120,100) at 1/4 scale
if (jpeg.decode(120,100,JPEG_SCALE_QUARTER | JPEG_EXIF_THUMBNAIL))
{
lTime = micros() - lTime;
sprintf(szTemp, "Successfully decoded image in %d us", (int)lTime);
Serial.println(szTemp);
spilcdWriteString(&lcd, 0, 200, szTemp, 0xffe0, 0, FONT_8x8, DRAW_TO_LCD);
}
jpeg.close();
}
delay(10000); // repeat every 10 seconds
}

View File

@ -0,0 +1,55 @@
//
// Perf Test
//
#include <JPEGDEC.h>
#include "../test_images/tulips.h" // 640x480 56k byte test image
JPEGDEC jpeg;
int JPEGDraw(JPEGDRAW *pDraw)
{
// do nothing
return 1; // continue decode
} /* JPEGDraw() */
void setup() {
Serial.begin(115200);
delay(100); // allow time for Serial to start
} /* setup() */
void loop() {
long lTime;
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,0)) { // full sized decode
lTime = micros() - lTime;
// Serial.printf("full sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,JPEG_SCALE_HALF)) { // 1/2 sized decode
lTime = micros() - lTime;
// Serial.printf("half sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,JPEG_SCALE_QUARTER)) { // 1/4 sized decode
lTime = micros() - lTime;
// Serial.printf("quarter sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
if (jpeg.openFLASH((uint8_t *)tulips, sizeof(tulips), JPEGDraw)) {
lTime = micros();
if (jpeg.decode(0,0,JPEG_SCALE_EIGHTH)) { // 1/8 sized decode
lTime = micros() - lTime;
// Serial.printf("eighth sized decode in %d us\n", (int)lTime);
}
jpeg.close();
}
delay(5000);
} /* loop() */

View File

@ -0,0 +1,20 @@
{
"name": "JPEGDEC",
"version": "1.2.7",
"description": "A fast JPEG library with a unique set of functions to make viewing image on microcontrollers easy. Includes fast downscaling options and the ability to view Exif embedded thumbnails. Supports baseline grayscale and color images with Huffman encoding.",
"repository":
{
"type": "git",
"url": "https://github.com/bitbank2/JPEGDEC"
},
"authors":
[
{
"name": "Larry Bank"
}
],
"license": "Apache License 2.0",
"homepage": "https://github.com/bitbank2/JPEGDEC",
"frameworks": "*",
"platforms": "*"
}

View File

@ -0,0 +1,10 @@
name=JPEGDEC
version=1.5.0
author=Larry Bank
maintainer=Larry Bank
sentence=Optimized JPEG decoder for MCUs with 32K+ RAM.
paragraph=A fast JPEG library with a unique set of functions to make viewing image on microcontrollers easy. Includes fast downscaling options and the ability to view Exif embedded thumbnails. Supports baseline grayscale and color images with Huffman encoding.
category=Display
url=https://github.com/bitbank2/JPEGDEC
architectures=*
includes=JPEGDEC.h

View File

@ -0,0 +1,301 @@
// JPEG perf test
// Written by Larry Bank
//
// Will open an arbitrary JPEG file if passed on the command line
// or will use the sample image (tulips)
//
#include <stdint.h>
#include <string.h>
#include <time.h>
#include "JPEGDEC.h"
#include "jpeg.inl"
#include "../test_images/tulips.h"
// Human readable error messages
const char *szErrors[] = {"Success", "Invalid parameter", "Decode error", "Unsupported feature", "Invalid file"};
/* Windows BMP header for RGB565 images */
uint8_t winbmphdr_rgb565[138] =
{0x42,0x4d,0,0,0,0,0,0,0,0,0x8a,0,0,0,0x7c,0,
0,0,0,0,0,0,0,0,0,0,1,0,8,0,3,0,
0,0,0,0,0,0,0x13,0x0b,0,0,0x13,0x0b,0,0,0,0,
0,0,0,0,0,0,0,0xf8,0,0,0xe0,0x07,0,0,0x1f,0,
0,0,0,0,0,0,0x42,0x47,0x52,0x73,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0};
/* Windows BMP header for 8/24/32-bit images (54 bytes) */
uint8_t winbmphdr[54] =
{0x42,0x4d,
0,0,0,0, /* File size */
0,0,0,0,0x36,4,0,0,0x28,0,0,0,
0,0,0,0, /* Xsize */
0,0,0,0, /* Ysize */
1,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* number of planes, bits per pel */
0,0,0,0};
JPEGIMAGE jpg;
uint8_t *pFrame;
int iDestPitch;
//uint8_t ucDitherBuffer[1024 * 16];
int ucPixelType = RGB565_BIG_ENDIAN; // default output used for SPI LCDs
//
// Minimal code to save frames as Windows BMP files
//
void WriteBMP(char *fname, uint8_t *pBitmap, uint8_t *pPalette, int cx, int cy, int bpp, int iDestPitch)
{
FILE * oHandle;
int i, bsize, lsize;
uint32_t *l;
uint8_t *s;
uint8_t *ucTemp;
uint8_t *pHdr;
int iHeaderSize;
ucTemp = (uint8_t *)malloc(cx * 4);
if (bpp == 16) {
pHdr = winbmphdr_rgb565;
iHeaderSize = sizeof(winbmphdr_rgb565);
} else {
pHdr = winbmphdr;
iHeaderSize = sizeof(winbmphdr);
}
oHandle = fopen(fname, "w+b");
bsize = (cx * bpp) >> 3;
lsize = (bsize + 3) & 0xfffc; /* Width of each line */
pHdr[26] = 1; // number of planes
pHdr[28] = (uint8_t)bpp;
/* Write the BMP header */
l = (uint32_t *)&pHdr[2];
i =(cy * lsize) + iHeaderSize;
if (bpp <= 8)
i += 1024;
*l = (uint32_t)i; /* Store the file size */
l = (uint32_t *)&pHdr[34]; // data size
i = (cy * lsize);
*l = (uint32_t)i; // store data size
l = (uint32_t *)&pHdr[18];
*l = (uint32_t)cx; /* width */
*(l+1) = (uint32_t)cy; /* height */
l = (uint32_t *)&pHdr[10]; // OFFBITS
if (bpp <= 8) {
*l = iHeaderSize + 1024;
} else { // no palette
*l = iHeaderSize;
}
fwrite(pHdr, 1, iHeaderSize, oHandle);
if (bpp <= 8) {
if (pPalette == NULL) {// create a grayscale palette
int iDelta, iCount = 1<<bpp;
int iGray = 0;
iDelta = 255/(iCount-1);
for (i=0; i<iCount; i++) {
ucTemp[i*4+0] = (uint8_t)iGray;
ucTemp[i*4+1] = (uint8_t)iGray;
ucTemp[i*4+2] = (uint8_t)iGray;
ucTemp[i*4+3] = 0;
iGray += iDelta;
}
} else {
for (i=0; i<256; i++) // change palette to WinBMP format
{
ucTemp[i*4 + 0] = pPalette[(i*3)+2];
ucTemp[i*4 + 1] = pPalette[(i*3)+1];
ucTemp[i*4 + 2] = pPalette[(i*3)+0];
ucTemp[i*4 + 3] = 0;
}
}
fwrite(ucTemp, 1, 1024, oHandle);
} // palette write
/* Write the image data */
for (i=cy-1; i>=0; i--)
{
s = &pBitmap[i*iDestPitch];
if (bpp == 24) { // swap R/B for Windows BMP byte order
int j, iBpp = bpp/8;
uint8_t *d = ucTemp;
for (j=0; j<cx; j++) {
d[0] = s[2]; d[1] = s[1]; d[2] = s[0];
d += iBpp; s += iBpp;
}
fwrite(ucTemp, 1, (size_t)lsize, oHandle);
} else {
fwrite(s, 1, (size_t)lsize, oHandle);
}
}
free(ucTemp);
fclose(oHandle);
} /* WriteBMP() */
long micros(void)
{
long iTime;
struct timespec res;
clock_gettime(CLOCK_MONOTONIC, &res);
iTime = 1000000*res.tv_sec + res.tv_nsec/1000;
return iTime;
} /* micros() */
int ConvertFileTest(char *argv[], int iFraction)
{
int i, rc;
int cx, cy, bpp;
int iOption;
long lTime;
if (iFraction == 2) {
iOption = JPEG_SCALE_HALF;
} else if (iFraction == 4) {
iOption = JPEG_SCALE_QUARTER;
} else if (iFraction == 8) {
iOption = JPEG_SCALE_EIGHTH;
} else {
iOption = 0; // full size
}
ucPixelType = RGB565_LITTLE_ENDIAN; //RGB8888; // generate 32-bit pixels for a Windows BMP file
rc = JPEG_openFile(&jpg, argv[1], NULL);
if (!rc) {
printf("Error opening file %s\n", argv[1]);
return -1;
}
cx = jpg.iWidth / iFraction;
cy = jpg.iHeight / iFraction;
cx = (cx + 7) & 0xfff8; // align on at least 16-byte boundary
if (ucPixelType == RGB8888) {
iDestPitch = (cx * 4); // 32-bits per pixel
bpp = 32;
} else {
iDestPitch = cx * 2; // 16-bpp
bpp = 16;
}
i = iDestPitch * (cy+15);
pFrame = (uint8_t *)malloc(i);
if (pFrame == NULL) {
printf("Error allocating %d bytes\n", i);
return -1;
}
JPEG_setFramebuffer(&jpg, pFrame);
jpg.ucPixelType = ucPixelType;
lTime = micros();
printf("Converting %d x %d image, fraction = %d\n", cx, cy, iFraction);
if (JPEG_decode(&jpg, 0, 0, iOption)) {
lTime = micros() - lTime;
printf("JPEG decoded in %d us\n", (int)lTime);
WriteBMP(argv[2], pFrame, NULL, cx, cy, bpp, iDestPitch);
} else {
printf("Decode failed, last error = %s\n", szErrors[JPEG_getLastError(&jpg)]);
return -1;
}
JPEG_close(&jpg);
return 0;
} /* ConvertFileTest() */
int JPEGDraw(JPEGDRAW *pDraw)
{
(void)pDraw;
return 1;
}
int PerfTest(int argc, char *argv[])
{
int rc;
long lTime;
// first test full size decoding
if (argc == 1) {
rc = JPEG_openRAM(&jpg, (uint8_t *)tulips, sizeof(tulips), JPEGDraw);
} else {
rc = JPEG_openFile(&jpg, argv[1], JPEGDraw);
}
if (rc)
{
lTime = micros();
// jpg.pDitherBuffer = ucDitherBuffer; // not used in this test
jpg.ucPixelType = ucPixelType;
if (JPEG_decode(&jpg, 0, 0, 0)) { // full size
lTime = micros() - lTime;
printf("full sized decode in %d us\n", (int)lTime);
} else {
printf("Decode failed, last error = %d\n", JPEG_getLastError(&jpg));
return 0;
}
JPEG_close(&jpg);
} else {
printf("open() failed, last error = %d\n", JPEG_getLastError(&jpg));
return -1;
}
// Half size scaled test
if (argc == 2)
rc = JPEG_openFile(&jpg, argv[1], JPEGDraw);
else
rc = JPEG_openRAM(&jpg, (uint8_t *)tulips, sizeof(tulips), JPEGDraw);
if (rc)
{
lTime = micros();
if (JPEG_decode(&jpg, 0, 0, JPEG_SCALE_HALF)) { // 1/2 size
lTime = micros() - lTime;
printf("half sized decode in %d us\n", (int)lTime);
}
JPEG_close(&jpg);
}
// Quarter size scaled test
if (argc == 2)
rc = JPEG_openFile(&jpg, argv[1], JPEGDraw);
else
rc = JPEG_openRAM(&jpg, (uint8_t *)tulips, sizeof(tulips), JPEGDraw);
if (rc)
{
lTime = micros();
if (JPEG_decode(&jpg, 0, 0, JPEG_SCALE_QUARTER)) { // 1/4 size
lTime = micros() - lTime;
printf("quarter sized decode in %d us\n", (int)lTime);
}
JPEG_close(&jpg);
}
// Eighth size scaled test
if (argc == 2)
rc = JPEG_openFile(&jpg, argv[1], JPEGDraw);
else
rc = JPEG_openRAM(&jpg, (uint8_t *)tulips, sizeof(tulips), JPEGDraw);
if (rc)
{
lTime = micros();
if (JPEG_decode(&jpg, 0, 0, JPEG_SCALE_EIGHTH)) { // 1/8 size
lTime = micros() - lTime;
printf("eighth sized decode in %d us\n", (int)lTime);
}
JPEG_close(&jpg);
}
return 0; // done
} /* PerfTest() */
int main(int argc, char *argv[])
{
int rc = -1;
printf("JPEG decoder demo\n");
printf("options:\n");
printf("Run without parameters to test in-memory decoding\n");
printf("Pass a single filename to test decoding performance\n");
printf("Pass 2 filenames to convert a JPEG file to a BMP file\n");
printf("e.g. ./jpegdec <infile.jpg> <outfile.bmp>\n\n");
if (argc == 1 || argc == 2) {
rc = PerfTest(argc, argv);
} else if (argc == 3) {
rc = ConvertFileTest(argv, 1); // change the 1 to 2/4/8 for fractional decode
} else {
printf("Invalid number of parameters (re-read the above)\n");
return rc;
}
return rc;
} /* main() */

View File

@ -0,0 +1,13 @@
CFLAGS=-c -Wall -O2 -I../src -D__LINUX__
LIBS = -lm -lpthread
all: jpegdec
jpegdec: main.o
$(CC) main.o $(LIBS) -o jpegdec
main.o: main.c ../src/JPEGDEC.h makefile
$(CC) $(CFLAGS) main.c
clean:
rm *.o jpegdec

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

View File

@ -0,0 +1,250 @@
//
// JPEG Decoder
//
// written by Larry Bank
// bitbank@pobox.com
// Arduino port started 8/2/2020
// Original JPEG code written 26+ years ago :)
// The goal of this code is to decode baseline JPEG images
// using no more than 18K of RAM (if sent directly to an LCD display)
//
// Copyright 2020 BitBank Software, Inc. All Rights Reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===========================================================================
//
#include "JPEGDEC.h"
// forward references
JPEG_STATIC int JPEGInit(JPEGIMAGE *pJPEG);
JPEG_STATIC int JPEGParseInfo(JPEGIMAGE *pPage, int bExtractThumb);
JPEG_STATIC void JPEGGetMoreData(JPEGIMAGE *pPage);
JPEG_STATIC int DecodeJPEG(JPEGIMAGE *pImage);
JPEG_STATIC void JPEG_setFramebuffer(JPEGIMAGE *pPage, void *pFramebuffer);
void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h);
void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h);
void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer);
// Include the C code which does the actual work
#include "jpeg.inl"
void JPEGDEC::setFramebuffer(void *pFramebuffer)
{
JPEG_setFramebuffer(&_jpeg, pFramebuffer);
} /* setFramebuffer() */
void JPEGDEC::setPixelType(int iType)
{
if (iType >= 0 && iType < INVALID_PIXEL_TYPE)
_jpeg.ucPixelType = (uint8_t)iType;
else
_jpeg.iError = JPEG_INVALID_PARAMETER;
} /* setPixelType() */
void JPEGDEC::setMaxOutputSize(int iMaxMCUs)
{
if (iMaxMCUs < 1)
iMaxMCUs = 1; // don't allow invalid value
_jpeg.iMaxMCUs = iMaxMCUs;
} /* setMaxOutputSize() */
//
// Memory initialization
//
int JPEGDEC::openRAM(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw)
{
memset(&_jpeg, 0, sizeof(JPEGIMAGE));
_jpeg.ucMemType = JPEG_MEM_RAM;
_jpeg.pfnRead = readRAM;
_jpeg.pfnSeek = seekMem;
_jpeg.pfnDraw = pfnDraw;
_jpeg.pfnOpen = NULL;
_jpeg.pfnClose = NULL;
_jpeg.JPEGFile.iSize = iDataSize;
_jpeg.JPEGFile.pData = pData;
_jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
return JPEGInit(&_jpeg);
} /* openRAM() */
int JPEGDEC::openFLASH(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw)
{
memset(&_jpeg, 0, sizeof(JPEGIMAGE));
_jpeg.ucMemType = JPEG_MEM_FLASH;
_jpeg.pfnRead = readFLASH;
_jpeg.pfnSeek = seekMem;
_jpeg.pfnDraw = pfnDraw;
_jpeg.pfnOpen = NULL;
_jpeg.pfnClose = NULL;
_jpeg.JPEGFile.iSize = iDataSize;
_jpeg.JPEGFile.pData = pData;
_jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
return JPEGInit(&_jpeg);
} /* openRAM() */
int JPEGDEC::getOrientation()
{
return (int)_jpeg.ucOrientation;
} /* getOrientation() */
int JPEGDEC::getLastError()
{
return _jpeg.iError;
} /* getLastError() */
int JPEGDEC::getWidth()
{
return _jpeg.iWidth;
} /* getWidth() */
int JPEGDEC::getHeight()
{
return _jpeg.iHeight;
} /* getHeight() */
int JPEGDEC::hasThumb()
{
return (int)_jpeg.ucHasThumb;
} /* hasThumb() */
int JPEGDEC::getThumbWidth()
{
return _jpeg.iThumbWidth;
} /* getThumbWidth() */
int JPEGDEC::getThumbHeight()
{
return _jpeg.iThumbHeight;
} /* getThumbHeight() */
int JPEGDEC::getBpp()
{
return (int)_jpeg.ucBpp;
} /* getBpp() */
int JPEGDEC::getSubSample()
{
return (int)_jpeg.ucSubSample;
} /* getSubSample() */
void JPEGDEC::setCropArea(int x, int y, int w, int h)
{
JPEG_setCropArea(&_jpeg, x, y, w, h);
} /* setCropArea() */
void JPEGDEC::getCropArea(int *x, int *y, int *w, int *h)
{
JPEG_getCropArea(&_jpeg, x, y, w, h);
} /* getCropArea() */
//
// File (SD/MMC) based initialization
//
int JPEGDEC::open(const char *szFilename, JPEG_OPEN_CALLBACK *pfnOpen, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw)
{
memset(&_jpeg, 0, sizeof(JPEGIMAGE));
_jpeg.pfnRead = pfnRead;
_jpeg.pfnSeek = pfnSeek;
_jpeg.pfnDraw = pfnDraw;
_jpeg.pfnOpen = pfnOpen;
_jpeg.pfnClose = pfnClose;
_jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
_jpeg.JPEGFile.fHandle = (*pfnOpen)(szFilename, &_jpeg.JPEGFile.iSize);
if (_jpeg.JPEGFile.fHandle == NULL)
return 0;
return JPEGInit(&_jpeg);
} /* open() */
//
// data stream initialization
//
int JPEGDEC::open(void *fHandle, int iDataSize, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw)
{
memset(&_jpeg, 0, sizeof(JPEGIMAGE));
_jpeg.pfnRead = pfnRead;
_jpeg.pfnSeek = pfnSeek;
_jpeg.pfnDraw = pfnDraw;
_jpeg.pfnClose = pfnClose;
_jpeg.iMaxMCUs = 1000; // set to an unnaturally high value to start
_jpeg.JPEGFile.iSize = iDataSize;
_jpeg.JPEGFile.fHandle = fHandle;
return JPEGInit(&_jpeg);
} /* open() */
#ifdef FS_H
static int32_t FileRead(JPEGFILE *handle, uint8_t *buffer, int32_t length)
{
return ((File *)(handle->fHandle))->read(buffer, length);
}
static int32_t FileSeek(JPEGFILE *handle, int32_t position)
{
return ((File *)(handle->fHandle))->seek(position);
}
static void FileClose(void *handle)
{
((File *)handle)->close();
}
int JPEGDEC::open(File &file, JPEG_DRAW_CALLBACK *pfnDraw)
{
if (!file) return 0;
memset(&_jpeg, 0, sizeof(JPEGIMAGE));
_jpeg.pfnRead = FileRead;
_jpeg.pfnSeek = FileSeek;
_jpeg.pfnClose = FileClose;
_jpeg.pfnDraw = pfnDraw;
_jpeg.iMaxMCUs = 1000;
_jpeg.JPEGFile.fHandle = &file;
_jpeg.JPEGFile.iSize = file.size();
return JPEGInit(&_jpeg);
}
#endif // FS_H
void JPEGDEC::close()
{
if (_jpeg.pfnClose)
(*_jpeg.pfnClose)(_jpeg.JPEGFile.fHandle);
} /* close() */
//
// Decode the image
// returns:
// 1 = good result
// 0 = error
//
int JPEGDEC::decode(int x, int y, int iOptions)
{
_jpeg.iXOffset = x;
_jpeg.iYOffset = y;
_jpeg.iOptions = iOptions;
return DecodeJPEG(&_jpeg);
} /* decode() */
//
// set draw callback user pointer variable
//
void JPEGDEC::setUserPointer(void *p)
{
_jpeg.pUser = p;
}
int JPEGDEC::decodeDither(int x, int y, uint8_t *pDither, int iOptions)
{
_jpeg.iXOffset = x;
_jpeg.iYOffset = y;
_jpeg.iOptions = iOptions;
_jpeg.pDitherBuffer = pDither;
return DecodeJPEG(&_jpeg);
}
int JPEGDEC::decodeDither(uint8_t *pDither, int iOptions)
{
_jpeg.iOptions = iOptions;
_jpeg.pDitherBuffer = pDither;
return DecodeJPEG(&_jpeg);
}

View File

@ -0,0 +1,309 @@
//
// Copyright 2020 BitBank Software, Inc. All Rights Reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// http://www.apache.org/licenses/LICENSE-2.0
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//===========================================================================
//
#ifndef __JPEGDEC__
#define __JPEGDEC__
#if defined( __MACH__ ) || defined( __LINUX__ ) || defined( __MCUXPRESSO ) || defined( ESP_PLATFORM )
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <stdio.h>
#else
#include <Arduino.h>
#if !defined(HAL_ESP32_HAL_H_) && defined(__has_include) && __has_include(<FS.h>)
#include <FS.h>
#endif
#endif
#ifndef PROGMEM
#define memcpy_P memcpy
#define PROGMEM
#endif
// Cortex-M4/M7 allow unaligned access to SRAM
#if defined(HAL_ESP32_HAL_H_) || defined(TEENSYDUINO) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM7) || defined (__x86_64__) || defined(TEENSYDUINO)
#define ALLOWS_UNALIGNED
#endif
#if defined (__aarch64__) || defined (__arm64__)
#define HAS_NEON
#define ALLOWS_UNALIGNED
#endif // __aarch64
//
// JPEG Decoder
// Written by Larry Bank
// Copyright (c) 2020 BitBank Software, Inc.
//
// Designed to decode baseline JPEG images (8 or 24-bpp)
// using less than 22K of RAM
//
/* Defines and variables */
#define FILE_HIGHWATER 1536
#define JPEG_FILE_BUF_SIZE 2048
#define HUFF_TABLEN 273
#define HUFF11SIZE (1<<11)
#define DC_TABLE_SIZE 1024
#define DCTSIZE 64
#define MAX_MCU_COUNT 6
#define MAX_COMPS_IN_SCAN 4
#define MAX_BUFFERED_PIXELS 2048
#define MCU_SKIP -8
// Decoder options
#define JPEG_AUTO_ROTATE 1
#define JPEG_SCALE_HALF 2
#define JPEG_SCALE_QUARTER 4
#define JPEG_SCALE_EIGHTH 8
#define JPEG_LE_PIXELS 16
#define JPEG_EXIF_THUMBNAIL 32
#define JPEG_LUMA_ONLY 64
#define MCU0 (DCTSIZE * 0)
#define MCU1 (DCTSIZE * 1)
#define MCU2 (DCTSIZE * 2)
#define MCU3 (DCTSIZE * 3)
#define MCU4 (DCTSIZE * 4)
#define MCU5 (DCTSIZE * 5)
#if defined(__arm64__) || defined(__aarch64__) || defined (__x86_64__)
#define REGISTER_WIDTH 64
typedef uint64_t my_ulong;
typedef int64_t my_long;
#else
#define REGISTER_WIDTH 32
typedef uint32_t my_ulong;
typedef int32_t my_long;
#endif
// Pixel types (defaults to little endian RGB565)
enum {
RGB565_LITTLE_ENDIAN = 0,
RGB565_BIG_ENDIAN,
RGB8888,
EIGHT_BIT_GRAYSCALE,
FOUR_BIT_DITHERED,
TWO_BIT_DITHERED,
ONE_BIT_DITHERED,
INVALID_PIXEL_TYPE
};
enum {
JPEG_MEM_RAM=0,
JPEG_MEM_FLASH
};
// Error codes returned by getLastError()
enum {
JPEG_SUCCESS = 0,
JPEG_INVALID_PARAMETER,
JPEG_DECODE_ERROR,
JPEG_UNSUPPORTED_FEATURE,
JPEG_INVALID_FILE
};
typedef struct buffered_bits
{
unsigned char *pBuf; // buffer pointer
my_ulong ulBits; // buffered bits
uint32_t ulBitOff; // current bit offset
} BUFFERED_BITS;
typedef struct jpeg_file_tag
{
int32_t iPos; // current file position
int32_t iSize; // file size
uint8_t *pData; // memory file pointer
void * fHandle; // class pointer to File/SdFat or whatever you want
} JPEGFILE;
typedef struct jpeg_draw_tag
{
int x, y; // upper left corner of current MCU
int iWidth, iHeight; // size of this pixel block
int iWidthUsed; // clipped size for odd/edges
int iBpp; // bit depth of the pixels (8 or 16)
uint16_t *pPixels; // 16-bit pixels
void *pUser;
} JPEGDRAW;
// Callback function prototypes
typedef int32_t (JPEG_READ_CALLBACK)(JPEGFILE *pFile, uint8_t *pBuf, int32_t iLen);
typedef int32_t (JPEG_SEEK_CALLBACK)(JPEGFILE *pFile, int32_t iPosition);
typedef int (JPEG_DRAW_CALLBACK)(JPEGDRAW *pDraw);
typedef void * (JPEG_OPEN_CALLBACK)(const char *szFilename, int32_t *pFileSize);
typedef void (JPEG_CLOSE_CALLBACK)(void *pHandle);
/* JPEG color component info */
typedef struct _jpegcompinfo
{
// These values are fixed over the whole image
// For compression, they must be supplied by the user interface
// for decompression, they are read from the SOF marker.
unsigned char component_needed; /* do we need the value of this component? */
unsigned char component_id; /* identifier for this component (0..255) */
unsigned char component_index; /* its index in SOF or cinfo->comp_info[] */
//unsigned char h_samp_factor; /* horizontal sampling factor (1..4) */
//unsigned char v_samp_factor; /* vertical sampling factor (1..4) */
unsigned char quant_tbl_no; /* quantization table selector (0..3) */
// These values may vary between scans
// For compression, they must be supplied by the user interface
// for decompression, they are read from the SOS marker.
unsigned char dc_tbl_no; /* DC entropy table selector (0..3) */
unsigned char ac_tbl_no; /* AC entropy table selector (0..3) */
// These values are computed during compression or decompression startup
//int true_comp_width; /* component's image width in samples */
//int true_comp_height; /* component's image height in samples */
// the above are the logical dimensions of the downsampled image
// These values are computed before starting a scan of the component
//int MCU_width; /* number of blocks per MCU, horizontally */
//int MCU_height; /* number of blocks per MCU, vertically */
//int MCU_blocks; /* MCU_width * MCU_height */
//int downsampled_width; /* image width in samples, after expansion */
//int downsampled_height; /* image height in samples, after expansion */
// the above are the true_comp_xxx values rounded up to multiples of
// the MCU dimensions; these are the working dimensions of the array
// as it is passed through the DCT or IDCT step. NOTE: these values
// differ depending on whether the component is interleaved or not!!
// This flag is used only for decompression. In cases where some of the
// components will be ignored (eg grayscale output from YCbCr image),
// we can skip IDCT etc. computations for the unused components.
} JPEGCOMPINFO;
//
// our private structure to hold a JPEG image decode state
//
typedef struct jpeg_image_tag
{
int iWidth, iHeight; // image size
int iThumbWidth, iThumbHeight; // thumbnail size (if present)
int iThumbData; // offset to image data
int iXOffset, iYOffset; // placement on the display
int iCropX, iCropY, iCropCX, iCropCY; // crop area
uint8_t ucBpp, ucSubSample, ucHuffTableUsed;
uint8_t ucMode, ucOrientation, ucHasThumb, b11Bit;
uint8_t ucComponentsInScan, cApproxBitsLow, cApproxBitsHigh;
uint8_t iScanStart, iScanEnd, ucFF, ucNumComponents;
uint8_t ucACTable, ucDCTable;
uint8_t ucMemType, ucPixelType;
uint16_t u16MCUFlags;
int iEXIF; // Offset to EXIF 'TIFF' file
int iError;
int iOptions;
int iVLCOff; // current VLC data offset
int iVLCSize; // current quantity of data in the VLC buffer
int iResInterval, iResCount; // restart interval
int iMaxMCUs; // max MCUs of pixels per JPEGDraw call
JPEG_READ_CALLBACK *pfnRead;
JPEG_SEEK_CALLBACK *pfnSeek;
JPEG_DRAW_CALLBACK *pfnDraw;
JPEG_OPEN_CALLBACK *pfnOpen;
JPEG_CLOSE_CALLBACK *pfnClose;
JPEGCOMPINFO JPCI[MAX_COMPS_IN_SCAN]; /* Max color components */
JPEGFILE JPEGFile;
BUFFERED_BITS bb;
void *pUser;
uint8_t *pDitherBuffer; // provided externally to do Floyd-Steinberg dithering
uint16_t *usPixels; // needs to be 16-byte aligned for S3 SIMD
uint16_t usUnalignedPixels[MAX_BUFFERED_PIXELS+8];
int16_t *sMCUs; // needs to be 16-byte aligned for S3 SIMD
int16_t sUnalignedMCUs[8+(DCTSIZE * MAX_MCU_COUNT)]; // 4:2:0 needs 6 DCT blocks per MCU
void *pFramebuffer;
int16_t sQuantTable[DCTSIZE*4]; // quantization tables
uint8_t ucFileBuf[JPEG_FILE_BUF_SIZE]; // holds temp data and pixel stack
uint8_t ucHuffDC[DC_TABLE_SIZE * 2]; // up to 2 'short' tables
uint16_t usHuffAC[HUFF11SIZE * 2];
} JPEGIMAGE;
#ifdef __cplusplus
#if defined(__has_include) && __has_include(<FS.h>)
#include "FS.h"
#endif
#define JPEG_STATIC static
//
// The JPEGDEC class wraps portable C code which does the actual work
//
class JPEGDEC
{
public:
int openRAM(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw);
int openFLASH(uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw);
int open(const char *szFilename, JPEG_OPEN_CALLBACK *pfnOpen, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw);
int open(void *fHandle, int iDataSize, JPEG_CLOSE_CALLBACK *pfnClose, JPEG_READ_CALLBACK *pfnRead, JPEG_SEEK_CALLBACK *pfnSeek, JPEG_DRAW_CALLBACK *pfnDraw);
void setFramebuffer(void *pFramebuffer);
void setCropArea(int x, int y, int w, int h);
void getCropArea(int *x, int *y, int *w, int *h);
#ifdef FS_H
int open(File &file, JPEG_DRAW_CALLBACK *pfnDraw);
#endif
void close();
int decode(int x, int y, int iOptions);
int decodeDither(uint8_t *pDither, int iOptions);
int decodeDither(int x, int y, uint8_t *pDither, int iOptions);
int getOrientation();
int getWidth();
int getHeight();
int getBpp();
void setUserPointer(void *p);
int getSubSample();
int hasThumb();
int getThumbWidth();
int getThumbHeight();
int getLastError();
void setPixelType(int iType); // defaults to little endian
void setMaxOutputSize(int iMaxMCUs);
private:
JPEGIMAGE _jpeg;
};
#else
#define JPEG_STATIC
int JPEG_openRAM(JPEGIMAGE *pJPEG, uint8_t *pData, int iDataSize, JPEG_DRAW_CALLBACK *pfnDraw);
void JPEG_setFramebuffer(JPEGIMAGE *pJPEG, void *pFramebuffer);
void JPEG_setCropArea(JPEGIMAGE *pJPEG, int x, int y, int w, int h);
void JPEG_getCropArea(JPEGIMAGE *pJPEG, int *x, int *y, int *w, int *h);
int JPEG_openFile(JPEGIMAGE *pJPEG, const char *szFilename, JPEG_DRAW_CALLBACK *pfnDraw);
int JPEG_getWidth(JPEGIMAGE *pJPEG);
int JPEG_getHeight(JPEGIMAGE *pJPEG);
int JPEG_decode(JPEGIMAGE *pJPEG, int x, int y, int iOptions);
int JPEG_decodeDither(JPEGIMAGE *pJPEG, uint8_t *pDither, int iOptions);
void JPEG_close(JPEGIMAGE *pJPEG);
int JPEG_getLastError(JPEGIMAGE *pJPEG);
int JPEG_getOrientation(JPEGIMAGE *pJPEG);
int JPEG_getBpp(JPEGIMAGE *pJPEG);
int JPEG_getSubSample(JPEGIMAGE *pJPEG);
int JPEG_hasThumb(JPEGIMAGE *pJPEG);
int JPEG_getThumbWidth(JPEGIMAGE *pJPEG);
int JPEG_getThumbHeight(JPEGIMAGE *pJPEG);
int JPEG_getLastError(JPEGIMAGE *pJPEG);
void JPEG_setPixelType(JPEGIMAGE *pJPEG, int iType); // defaults to little endian
void JPEG_setMaxOutputSize(JPEGIMAGE *pJPEG, int iMaxMCUs);
#endif // __cplusplus
#ifdef ALLOWS_UNALIGNED
#define INTELSHORT(p) (*(uint16_t *)p)
#define INTELLONG(p) (*(uint32_t *)p)
#define MOTOSHORT(p) __builtin_bswap16(*(uint16_t *)p)
#if REGISTER_WIDTH == 64
#define MOTOLONG(p) __builtin_bswap64(*(uint64_t *)p)
#else
#define MOTOLONG(p) __builtin_bswap32(*(uint32_t *)p)
#endif
#else
// Due to unaligned memory causing an exception, we have to do these macros the slow way
#define INTELSHORT(p) ((*p) + (*(p+1)<<8))
#define INTELLONG(p) ((*p) + (*(p+1)<<8) + (*(p+2)<<16) + (*(p+3)<<24))
#define MOTOSHORT(p) (((*(p))<<8) + (*(p+1)))
#define MOTOLONG(p) (((*p)<<24) + ((*(p+1))<<16) + ((*(p+2))<<8) + (*(p+3)))
#endif // ALLOWS_UNALIGNED
#endif // __JPEGDEC__

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,57 @@
//
// Adds Cortex-M4/M7 SIMD instruction intrinsics for M4/M7 targets missing
// this support in their board support packages (e.g. Teensyduino)
//
#ifndef __CM4_SIMD__
#define __CM4_SIMD__
#define __SSAT16(ARG1, ARG2) \
__extension__ \
({ \
int32_t __RES, __ARG1 = (ARG1); \
__asm volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
__RES; \
})
#define __USAT16(ARG1, ARG2) \
__extension__ \
({ \
uint32_t __RES, __ARG1 = (ARG1); \
__asm volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
__RES; \
})
__attribute__((always_inline)) static inline uint32_t __SADD16(uint32_t op1, uint32_t op2)
{
uint32_t result;
__asm volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
return(result);
}
__attribute__((always_inline)) static inline uint32_t __SSUB16(uint32_t op1, uint32_t op2)
{
uint32_t result;
__asm volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
return(result);
}
__attribute__((always_inline)) static inline uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
{
uint32_t result;
__asm volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
return(result);
}
__attribute__((always_inline)) static inline uint32_t __QADD16(uint32_t op1, uint32_t op2)
{
uint32_t result;
__asm ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
return(result);
}
#endif

View File

@ -0,0 +1,128 @@
//
// ESP32-S3 SIMD optimized code
// Written by Larry Bank
// Copyright (c) 2024 BitBank Software, Inc.
// Project started Jan 21, 2024
//
#ifdef ARDUINO_ARCH_ESP32
#include "dsps_fft2r_platform.h"
#if (dsps_fft2r_sc16_aes3_enabled == 1)
.text
.align 4
.global s3_ycbcr_convert_420
.type s3_ycbcr_convert_420,@function
// Convert 16 pixels of YCbCr 4:2:0 to RGB565
// A2 A3 A4 A5 A6 A7
// Call as void s3_ycbcr_convert_420(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType);
s3_ycbcr_convert_420:
// supported pixel types: 0 = RGB656_LE, 1 = RGB565_BE, 2 = RGBA8888
# no idea what this frequency keyword does
# .frequency 1.000 0.000
.align 4
entry a1,64
movi.n a8,2 # iteration count
ee.vld.l.64.ip q0,a2,128 # load left 8 Y values into Q0 and point to right DCT block for next load
ee.vld.l.64.ip q1,a3,0 # load 8 Cb values into Q1
ee.vld.l.64.ip q2,a4,0 # load 8 Cr values into Q2
ee.movi.32.a q1,a3,1 # save upper 4 values of Cb for later
ee.movi.32.a q2,a4,1 # save upper 4 values of Cr for later
.convert_420_loop:
ee.vldbc.16.ip q3,a6,2 # get constant 0x80 as 16-bits in all 128 bits of q3
ee.xorq q4,q4,q4 # load Q4 with 0's
ee.vzip.8 q0,q4 # expand 8-bit Y data to 16-bits
ee.xorq q4,q4,q4 # need to reset to 0's
ee.vzip.8 q1,q4 # expand 8-bit Cb data to 16-bits
ee.xorq q4,q4,q4
ee.vzip.8 q2,q4 # expand 8-bit Cr data to 16-bits
mv.qr q5,q1
ee.vzip.16 q1,q5 # duplicate Cb values since it's subsampled
mv.qr q5,q2
ee.vzip.16 q2,q5 # duplicate Cr values
ee.vsubs.s16 q1,q1,q3 # subtract 0x0080 from Cb's
ee.vsubs.s16 q2,q2,q3 # subtract 0x0080 from Cr's
ee.vldbc.16.ip q3,a6,2 # get constant 1.77200 as 16-bits in all 128 bits of q3
movi.n a9,6 # load the shift register with 6
wsr.sar a9 # put it in the SAR (shift amount register)
ee.vmul.s16 q6,q1,q3 # (Cb *= 1.77200) >> 6
ee.vldbc.16.ip q3,a6,2 # get constant 1.402 as 16-bits in all 128 bits of q3
ee.vadds.s16 q6,q6,q0 # Cb += y (8 blue pixels in q6)
ee.vmul.s16 q7,q2,q3 # (Cr *= 1.402) >> 6
ee.vadds.s16 q7,q7,q0 # Cr += y (8 red pixels in q7)
ee.vldbc.16.ip q3,a6,2 # get constant 0.34414 as 16-bits in all 128 bits of q3
movi.n a9,0 # load the shift register with 0
wsr.sar a9 # put it in the SAR (shift amount register)
ee.vmul.s16 q4,q1,q3 # (Cb * 0.34414) >> 0
ee.vldbc.16.ip q3,a6,2 # get constant 0.71414 as 16-bits in all 128 bits of q3
ee.vmul.s16 q3,q2,q3 # (Cr * 0.71414) >> 0
ee.vadds.s16 q3,q3,q4 # (Cb * 0.34414) + (Cr * 0.71414)
ee.vldbc.16.ip q4,a6,2 # get constant 1 (so we can do a 16-bit shift)
movi.n a9,6 # load the shift register with 6
wsr.sar a9 # put it in the SAR (shift amount register)
ee.vmul.s16 q3,q3,q4 # shift right by 6
ee.vsubs.s16 q3,q0,q3 # Y - ((Cb * 0.34414) + (Cr * 0.71414)) = green in Q3
// saturate to 8 bits
ee.xorq q0,q0,q0
ee.vmax.s16 q3,q3,q0
ee.vmax.s16 q6,q6,q0
ee.vmax.s16 q7,q7,q0
ee.vcmp.eq.s16 q1,q1,q1 # create 255
ee.vzip.8 q1,q0
ee.vmin.s16 q3,q3,q1 # clamp to 255
ee.vmin.s16 q6,q6,q1
ee.vmin.s16 q7,q7,q1
beqi a7,2,.rgba8888_output # 32-bit RGBA pixels
movi.n a9,3 # load the shift register with 3 (for blue and red)
wsr.sar a9 # put it in the SAR (shift amount register)
ee.vmul.s16 q6,q4,q6 # shift blue right by 3
ee.vmul.s16 q7,q4,q7 # shift red right by 3
movi.n a9,2 # load the shift register with 2 (for green)
wsr.sar a9 # put it in the SAR (shift amount register)
ee.vmul.s16 q3,q4,q3 # shift green right by 2
// now combine to form RGB565 pixels
movi.n a9,0
wsr.sar a9 # no shift after multiply
ee.vldbc.16.ip q4,a6,2 # get constant value 32 (to shift green left by 5 bits)
ee.vldbc.16.ip q5,a6,2 # get constant value 2048 (to shift red left by 11 bits)
ee.vmul.s16 q3,q4,q3 # shift green left by 5
ee.vmul.s16 q7,q5,q7 # shift red left by 11
ee.orq q6,q6,q3 # combine blue + green
ee.orq q6,q6,q7 # combine blue + green + red
mv.qr q5,q6 # in case we're generating little endian output
beqi a7,0,.rgb565_le # RGB565 little endian?
ee.vunzip.8 q6,q5 # swap the byte order to be big-endian
ee.vzip.8 q5,q6
.rgb565_le:
ee.vst.128.ip q5,a5,16 # store 8 RGB565 pixels
addi.n a6,a6,-16 # restore pointer to start of 16-bit constants
ee.vld.l.64.ip q0,a2,0 # load right 8 Y values into Q0
ee.movi.32.q q1,a3,0 # restore second 4 values of Cb
ee.movi.32.q q2,a4,0 # restore second 4 values of Cr
addi.n a8,a8,-1
bnez.n a8,.convert_420_loop
# return value of 0
retw.n
.rgba8888_output: # generate RGBA 32-bit pixels
movi.n a9,8 # shift 8 bits
wsr.sar a9
ee.vsl.32 q3,q3 # shift green over 8 bits
ee.orq q7,q7,q3 # combine red and green
ee.vcmp.eq.s16 q1,q1,q1 # create FFs
ee.xorq q2,q2,q2 # create 00s
ee.vzip.8 q2,q1 # create FF00 for Alpha
ee.orq q2,q2,q6 # combine blue + alpha
ee.vzip.16 q7,q2 # create RGB8888 pixels
ee.vst.128.ip q7,a5,16 # store 8 x RGB8888 pixels = 32 bytes
ee.vst.128.ip q2,a5,16
addi.n a6,a6,-16 # restore pointer to start of 16-bit constants
ee.vld.l.64.ip q0,a2,0 # load right 8 Y values into Q0
ee.movi.32.q q1,a3,0 # restore second 4 values of Cb
ee.movi.32.q q2,a4,0 # restore second 4 values of Cr
addi.n a8,a8,-1
bnez.n a8,.convert_420_loop
retw.n
#endif // dsps_fft2r_sc16_aes3_enabled
#endif // ESP32

View File

@ -0,0 +1,109 @@
//
// ESP32-S3 SIMD optimized code
// Written by Larry Bank
// Copyright (c) 2024 BitBank Software, Inc.
// Project started Jan 21, 2024
//
#ifdef ARDUINO_ARCH_ESP32
#include "dsps_fft2r_platform.h"
#if (dsps_fft2r_sc16_aes3_enabled == 1)
.text
.align 4
// Convert 8 pixels of YCbCr 4:4:4 to RGB565
// A2 A3 A4 A5 A6 A7
// Call as void s3_ycbcr_convert_444(uint8_t *pY, uint8_t *pCB, uint8_t *pCR, uint16_t *pOut, int16_t *pConsts, uint8_t ucPixelType);
// supported pixel types: 0 = RGB656_LE, 1 = RGB565_BE, 2 = RGBA8888
.global s3_ycbcr_convert_444
.type s3_ycbcr_convert_444,@function
s3_ycbcr_convert_444:
# no idea what this frequency keyword does
# .frequency 1.000 0.000
entry a1,16
ee.xorq q4,q4,q4 # load Q4 with 0's
ee.vldbc.16.ip q3,a6,2 # get constant 0x80 as 16-bits in all 128 bits of q3
ee.vld.l.64.ip q0,a2,0 # load 8 Y values into Q0
ee.vld.l.64.ip q1,a3,0 # load 8 Cb values into Q1
ee.vld.l.64.ip q2,a4,0 # load 8 Cr values into Q2
ee.vzip.8 q0,q4 # expand 8-bit Y data to 16-bits
ee.xorq q4,q4,q4 # need to reset to 0's
ee.vzip.8 q1,q4 # expand 8-bit Cb data to 16-bits
ee.xorq q4,q4,q4
ee.vzip.8 q2,q4 # expand 8-bit Cr data to 16-bits
ee.vsubs.s16 q1,q1,q3 # subtract 0x0080 from Cb's
ee.vsubs.s16 q2,q2,q3 # subtract 0x0080 from Cr's
ee.vldbc.16.ip q3,a6,2 # get constant 1.77200 as 16-bits in all 128 bits of q3
movi.n a2,6 # load the shift register with 6
wsr.sar a2 # put it in the SAR (shift amount register)
ee.vmul.s16 q6,q1,q3 # (Cb *= 1.77200) >> 6
ee.vadds.s16 q6,q6,q0 # Cb += y (8 blue pixels in q6)
ee.vldbc.16.ip q3,a6,2 # get constant 1.402 as 16-bits in all 128 bits of q3
ee.vmul.s16 q7,q2,q3 # (Cr *= 1.402) >> 6
ee.vadds.s16 q7,q7,q0 # Cr += y (8 red pixels in q7)
ee.vldbc.16.ip q3,a6,2 # get constant 0.34414 as 16-bits in all 128 bits of q3
movi.n a2,0 # load the shift register with 0
wsr.sar a2 # put it in the SAR (shift amount register)
ee.vmul.s16 q4,q1,q3 # (Cb * 0.34414) >> 0
ee.vldbc.16.ip q3,a6,2 # get constant 0.71414 as 16-bits in all 128 bits of q3
ee.vmul.s16 q3,q2,q3 # (Cr * 0.71414) >> 0
ee.vadds.s16 q3,q3,q4 # (Cb * 0.34414) + (Cr * 0.71414)
ee.vldbc.16.ip q4,a6,2 # get constant 1 (so we can do a 16-bit shift)
movi.n a2,6 # load the shift register with 6
wsr.sar a2 # put it in the SAR (shift amount register)
ee.vmul.s16 q3,q3,q4 # shift right by 6
ee.vsubs.s16 q3,q0,q3 # Y - ((Cb * 0.34414) + (Cr * 0.71414)) = green in Q3
// saturate to 8 bits
ee.xorq q0,q0,q0
ee.vmax.s16 q3,q3,q0
ee.vmax.s16 q6,q6,q0
ee.vmax.s16 q7,q7,q0
ee.vcmp.eq.s16 q1,q1,q1 # create 255
ee.vzip.8 q1,q0
ee.vmin.s16 q3,q3,q1 # clamp to 255
ee.vmin.s16 q6,q6,q1
ee.vmin.s16 q7,q7,q1
// Now we have RGB888, is that the output pixel type?
beqi a7,2,.rgb8888_output
// either RGB565 LE or BE from here
movi.n a2,3 # load the shift register with 3 (for blue and red)
wsr.sar a2 # put it in the SAR (shift amount register)
ee.vmul.s16 q6,q4,q6 # shift blue right by 3
ee.vmul.s16 q7,q4,q7 # shift red right by 3
movi.n a2,2 # load the shift register with 2 (for green)
wsr.sar a2 # put it in the SAR (shift amount register)
ee.vmul.s16 q3,q4,q3 # shift green right by 2
// now combine to form RGB565 pixels
movi.n a2,0
wsr.sar a2 # no shift after multiply
ee.vldbc.16.ip q4,a6,2 # get constant value 32 (to shift green left by 5 bits)
ee.vldbc.16.ip q5,a6,2 # get constant value 2048 (to shift red left by 11 bits)
ee.vmul.s16 q3,q4,q3 # shift green left by 5
ee.vmul.s16 q7,q5,q7 # shift red left by 11
ee.orq q6,q6,q3 # combine blue + green
ee.orq q6,q6,q7 # combine blue + green + red
mv.qr q5,q6 # in case we're generating little endian output
beqi a7,0,.rgb565_exit # RGB565 little endian?
ee.vunzip.8 q6,q5 # swap the byte order to be big-endian
ee.vzip.8 q5,q6
.rgb565_exit:
ee.vst.128.ip q5,a5,0 # store the 8 RGB565 pixels
retw.n
// Create RGBA (32-bit) pixels
.rgb8888_output:
movi.n a2,8 # shift 8 bits
wsr.sar a2
ee.vsl.32 q3,q3 # shift green over 8 bits
ee.orq q7,q7,q3 # combine red and green
ee.vcmp.eq.s16 q1,q1,q1 # create FFs
ee.xorq q2,q2,q2 # create 00s
ee.vzip.8 q2,q1 # create FF00 for Alpha
ee.orq q2,q2,q6 # combine blue + alpha
ee.vzip.16 q7,q2 # create RGB8888 pixels
ee.vst.128.ip q7,a5,16 # store 8 x RGB8888 pixels = 32 bytes
ee.vst.128.ip q2,a5,0
retw.n # done
#endif // dsps_fft2r_sc16_aes3_enabled
#endif // ESP32

View File

@ -0,0 +1,64 @@
//
// ESP32-S3 SIMD optimized code
// Written by Larry Bank
// Copyright (c) 2024 BitBank Software, Inc.
// Project started Jan 21, 2024
//
#ifdef ARDUINO_ARCH_ESP32
#include "dsps_fft2r_platform.h"
#if (dsps_fft2r_sc16_aes3_enabled == 1)
.text
.align 4
//
// Inverse DCT dequantization for JPEG decompression
// A2 A3
// Call as void s3_dequant(int16_t *pMCU, int16_t *pQuant);
.global s3_dequant
.type s3_dequant,@function
s3_dequant:
# no idea what this frequency keyword does
# .frequency 1.000 0.000
entry a1,16
ee.vld.128.ip q0,a2,16 # load MCU rows 0-3 into Q0,Q1,Q2,Q3
ee.vld.128.ip q4,a3,16 # load quantization values into Q4,Q5,Q6,Q7
ee.vld.128.ip q1,a2,16
ee.vld.128.ip q5,a3,16
ee.vld.128.ip q2,a2,16
ee.vld.128.ip q6,a3,16
ee.vld.128.ip q3,a2,16
ee.vld.128.ip q7,a3,16
movi.n a4,0 # load the shift register with 0
wsr.sar a2 # put it in the SAR (shift amount register)
ee.vmul.s16 q0,q0,q4 # de-quantize each row
ee.vmul.s16 q1,q1,q5
ee.vmul.s16 q2,q2,q6
ee.vmul.s16 q3,q3,q7
addi.n a2,a2,64 # point to first row of MCUs to store dequantized values
ee.vst.128.ip q0,a2,16 # write back dequantized rows 0-3
ee.vst.128.ip q1,a2,16
ee.vst.128.ip q2,a2,16
ee.vst.128.ip q3,a2,16
// repeat for rows 4-7
ee.vld.128.ip q0,a2,16 # load MCU rows 4-7 into Q0,Q1,Q2,Q3
ee.vld.128.ip q4,a3,16 # load quantization values into Q4,Q5,Q6,Q7
ee.vld.128.ip q1,a2,16
ee.vld.128.ip q5,a3,16
ee.vld.128.ip q2,a2,16
ee.vld.128.ip q6,a3,16
ee.vld.128.ip q3,a2,16
ee.vld.128.ip q7,a3,16
ee.vmul.s16 q0,q0,q4 # de-quantize rows 4-7
ee.vmul.s16 q1,q1,q5
ee.vmul.s16 q2,q2,q6
ee.vmul.s16 q3,q3,q7
addi.n a2,a2,64 # point to 4th row of MCUs
ee.vst.128.ip q0,a2,16 # write back dequantized rows 4-7
ee.vst.128.ip q1,a2,16
ee.vst.128.ip q2,a2,16
ee.vst.128.ip q3,a2,16
retw.n # done
#endif // dsps_fft2r_sc16_aes3_enabled
#endif // ESP32

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -56,6 +56,9 @@ be_extern_native_module(mdns);
#ifdef USE_ZIGBEE
be_extern_native_module(zigbee);
#endif // USE_ZIGBEE
#ifdef USE_BERRY_CAM
be_extern_native_module(cam);
#endif // USE_BERRY_CAM
// BLE
be_extern_native_module(MI32);
be_extern_native_module(BLE);
@ -183,6 +186,9 @@ BERRY_LOCAL const bntvmodule_t* const be_module_table[] = {
&be_native_module(MI32),
&be_native_module(BLE),
#endif //USE_MI_ESP32
#ifdef USE_BERRY_CAM
&be_native_module(cam),
#endif
#ifdef USE_DISCOVERY
&be_native_module(mdns),
#endif // USE_DISCOVERY
@ -225,6 +231,7 @@ be_extern_native_class(udp);
be_extern_native_class(webclient);
be_extern_native_class(tcpclient);
be_extern_native_class(tcpclientasync);
be_extern_native_class(webserver_async);
be_extern_native_class(tcpserver);
be_extern_native_class(energy_struct);
// LVGL core classes
@ -243,6 +250,10 @@ be_extern_native_class(lv_clock_icon);
be_extern_native_class(int64);
#ifdef USE_BERRY_IMAGE
be_extern_native_class(img);
#endif // USE_BERRY_IMAGE
BERRY_LOCAL bclass_array be_class_table = {
#ifdef TASMOTA
/* first list are direct classes */
@ -273,6 +284,9 @@ BERRY_LOCAL bclass_array be_class_table = {
&be_native_class(webclient),
&be_native_class(tcpclient),
&be_native_class(tcpclientasync),
#ifdef USE_BERRY_DEBUG
&be_native_class(webserver_async), // include only when USE_BERRY_DEBUG is enabled
#endif // USE_BERRY_DEBUG
#endif // USE_WEBCLIENT
#ifdef USE_BERRY_TCPSERVER
&be_native_class(tcpserver),
@ -298,6 +312,10 @@ BERRY_LOCAL bclass_array be_class_table = {
&be_native_class(lv_clock_icon),
#endif // USE_LVGL
#ifdef USE_BERRY_IMAGE
&be_native_class(img),
#endif // USE_BERRY_IMAGE
#if defined(USE_I2S_AUDIO_BERRY) && (ESP_IDF_VERSION_MAJOR >= 5)
&be_native_class(AudioGenerator),
&be_native_class(AudioFileSource),

View File

@ -297,6 +297,13 @@ static void save_global_info(bvm *vm, void *fp)
}
}
void be_bytecode_save_to_fs(bvm *vm, void *fp, bproto *proto)
{
save_header(fp);
save_global_info(vm, fp);
save_proto(vm, fp, proto);
}
void be_bytecode_save(bvm *vm, const char *filename, bproto *proto)
{
void *fp = be_fopen(filename, "wb");
@ -304,9 +311,7 @@ void be_bytecode_save(bvm *vm, const char *filename, bproto *proto)
bytecode_error(vm, be_pushfstring(vm,
"can not open file '%s'.", filename));
} else {
save_header(fp);
save_global_info(vm, fp);
save_proto(vm, fp, proto);
be_bytecode_save_to_fs(vm, fp, proto);
be_fclose(fp);
}
}

View File

@ -11,6 +11,7 @@
#include "be_object.h"
void be_bytecode_save(bvm *vm, const char *filename, bproto *proto);
void be_bytecode_save_to_fs(bvm *vm, void *fp, bproto *proto);
bclosure* be_bytecode_load(bvm *vm, const char *filename);
bclosure* be_bytecode_load_from_fs(bvm *vm, void *fp);
bbool be_bytecode_check(const char *path);

View File

@ -16,28 +16,7 @@
#include "be_constobj.h"
#include <string.h>
#include <ctype.h>
#define BYTES_DEFAULT_SIZE 28 // default pre-reserved size for buffer (keep 4 bytes for len/size)
#define BYTES_OVERHEAD 4 // bytes overhead to be added when allocating (used to store len and size)
#define BYTES_HEADROOM 8 // keep a natural headroom of 8 bytes when resizing
#define BYTES_SIZE_FIXED -1 // if size is -1, then the bytes object cannot be reized
#define BYTES_SIZE_MAPPED -2 // if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized
#define BYTES_RESIZE_ERROR "attribute_error"
#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized"
/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */
typedef struct buf_impl {
int32_t size; // size in bytes of the buffer
int32_t len; // current size of the data in buffer. Invariant: len <= size
uint8_t *bufptr; // the actual data
int32_t prev_size; // previous value read from the instance
int32_t prev_len; // previous value read from the instance
uint8_t *prev_bufptr;
bbool fixed; // is size fixed? (actually encoded as negative size)
bbool mapped;
} buf_impl;
#include "be_byteslib.h"
/********************************************************************
** Base64 lib from https://github.com/Densaugeo/base64_arduino
@ -244,7 +223,7 @@ static unsigned int decode_base64(unsigned char input[], unsigned char output[])
// shrink or increase. If increase, fill with zeores. Cannot go beyond `size`
static void buf_set_len(buf_impl* attr, const size_t len)
{
uint16_t old_len = attr->len;
int32_t old_len = attr->len;
attr->len = ((int32_t)len <= attr->size) ? (int32_t)len : attr->size;
if (old_len < attr->len) {
memset((void*) &attr->bufptr[old_len], 0, attr->len - old_len);
@ -481,7 +460,16 @@ static void buf_add_hex(buf_impl* attr, const char *hex, size_t len)
********************************************************************/
/* if the bufptr is null, don't try to dereference and raise an exception instead */
static void check_ptr(bvm *vm, buf_impl* attr) {
static void check_ptr(bvm *vm, const buf_impl* attr) {
if (!attr->bufptr) {
be_raise(vm, "value_error", "operation not allowed on <null> pointer");
}
}
static void check_ptr_modifiable(bvm *vm, const buf_impl* attr) {
if (attr->solidified) {
be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE);
}
if (!attr->bufptr) {
be_raise(vm, "value_error", "operation not allowed on <null> pointer");
}
@ -504,10 +492,14 @@ buf_impl m_read_attributes(bvm *vm, int idx)
int32_t signed_size = be_toint(vm, -1);
attr.fixed = bfalse;
attr.mapped = bfalse;
attr.solidified = bfalse;
if (signed_size < 0) {
if (signed_size == BYTES_SIZE_MAPPED) {
attr.mapped = btrue;
}
if (signed_size == BYTES_SIZE_SOLIDIFIED) {
attr.solidified = btrue;
}
signed_size = attr.len;
attr.fixed = btrue;
}
@ -516,10 +508,18 @@ buf_impl m_read_attributes(bvm *vm, int idx)
return attr;
}
static void m_assert_not_readlonly(bvm *vm, const buf_impl* attr)
{
if (attr->solidified) {
be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE);
}
}
/* Write back attributes to the bytes instance, only if values changed after loading */
/* stack item 1 must contain the instance */
void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr)
{
m_assert_not_readlonly(vm, attr);
int idx = be_absindex(vm, rel_idx);
if (attr->bufptr != attr->prev_bufptr) {
be_pushcomptr(vm, attr->bufptr);
@ -549,6 +549,7 @@ void m_write_attributes(bvm *vm, int rel_idx, const buf_impl * attr)
// buf_impl * bytes_realloc(bvm *vm, buf_impl *oldbuf, int32_t size)
void bytes_realloc(bvm *vm, buf_impl * attr, int32_t size)
{
m_assert_not_readlonly(vm, attr);
if (!attr->fixed && size < 4) { size = 4; }
if (size > vm->bytesmaxsize) { size = vm->bytesmaxsize; }
size_t oldsize = attr->bufptr ? attr->size : 0;
@ -590,7 +591,7 @@ static void bytes_new_object(bvm *vm, size_t size)
static int m_init(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */
buf_impl attr = { 0, 0, NULL, 0, -1, NULL, bfalse, bfalse, bfalse }; /* initialize prev_values to invalid to force a write at the end */
/* size cannot be 0, len cannot be negative */
const char * hex_in = NULL;
@ -713,7 +714,7 @@ buf_impl bytes_check_data(bvm *vm, size_t add_size) {
return attr;
}
static size_t tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) {
size_t be_bytes_tohex(char * out, size_t outsz, const uint8_t * in, size_t insz) {
static const char * hex = "0123456789ABCDEF";
const uint8_t * pin = in;
char * pout = out;
@ -745,7 +746,7 @@ static int m_tostring(bvm *vm)
char * hex_out = be_pushbuffer(vm, hex_len);
size_t l = be_strlcpy(hex_out, "bytes('", hex_len);
l += tohex(&hex_out[l], hex_len - l, attr.bufptr, len);
l += be_bytes_tohex(&hex_out[l], hex_len - l, attr.bufptr, len);
if (truncated) {
l += be_strlcpy(&hex_out[l], "...", hex_len - l);
}
@ -767,7 +768,7 @@ static int m_tohex(bvm *vm)
size_t hex_len = len * 2 + 1;
char * hex_out = be_pushbuffer(vm, hex_len);
size_t l = tohex(hex_out, hex_len, attr.bufptr, len);
size_t l = be_bytes_tohex(hex_out, hex_len, attr.bufptr, len);
be_pushnstring(vm, hex_out, l); /* make escape string from buffer */
be_remove(vm, -2); /* remove buffer */
@ -795,7 +796,7 @@ static int m_fromstring(bvm *vm)
const char *s = be_tostring(vm, 2);
int32_t len = be_strlen(vm, 2); /* calling be_strlen to support null chars in string */
buf_impl attr = bytes_check_data(vm, 0);
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (attr.fixed && attr.len != len) {
be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE);
}
@ -823,7 +824,7 @@ static int m_add(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
if (argc >= 2 && be_isint(vm, 2)) {
int32_t v = be_toint(vm, 2);
@ -867,6 +868,12 @@ static int m_get(bvm *vm, bbool sign)
if (argc >= 3 && be_isint(vm, 3)) {
vsize = be_toint(vm, 3);
}
if (idx < 0) {
idx = attr.len + idx; /* if index is negative, count from end */
}
if (idx < 0) {
vsize = 0; /* if still negative, then invalid, return 0 */
}
int ret = 0;
switch (vsize) {
case 0: break;
@ -891,11 +898,7 @@ static int m_get(bvm *vm, bbool sign)
default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4.");
}
be_pop(vm, argc - 1);
if (vsize != 0) {
be_pushint(vm, ret);
} else {
be_pushnil(vm);
}
be_return(vm);
}
be_return_nil(vm);
@ -912,14 +915,20 @@ static int m_getfloat(bvm *vm)
check_ptr(vm, &attr);
if (argc >=2 && be_isint(vm, 2)) {
int32_t idx = be_toint(vm, 2);
float ret_f = 0;
if (idx < 0) {
idx = attr.len + idx; /* if index is negative, count from end */
}
if (idx >= 0) {
bbool be = bfalse; /* little endian? */
if (argc >= 3) {
be = be_tobool(vm, 3);
}
int32_t ret_i = be ? buf_get4_be(&attr, idx) : buf_get4_le(&attr, idx);
float* ret_f = (float*) &ret_i;
ret_f = *(float*) &ret_i;
}
be_pop(vm, argc - 1);
be_pushreal(vm, *ret_f);
be_pushreal(vm, ret_f);
be_return(vm);
}
be_return_nil(vm);
@ -949,7 +958,7 @@ static int m_set(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) {
int32_t idx = be_toint(vm, 2);
int32_t value = be_toint(vm, 3);
@ -957,6 +966,12 @@ static int m_set(bvm *vm)
if (argc >= 4 && be_isint(vm, 4)) {
vsize = be_toint(vm, 4);
}
if (idx < 0) {
idx = attr.len + idx; /* if index is negative, count from end */
}
if (idx < 0) {
vsize = 0; /* if still negative, then invalid, do nothing */
}
switch (vsize) {
case 0: break;
case -1: /* fallback below */
@ -970,7 +985,7 @@ static int m_set(bvm *vm)
default: be_raise(vm, "type_error", "size must be -4, -3, -2, -1, 0, 1, 2, 3 or 4.");
}
be_pop(vm, argc - 1);
m_write_attributes(vm, 1, &attr); /* update attributes */
// m_write_attributes(vm, 1, &attr); /* update attributes */
be_return_nil(vm);
}
be_return_nil(vm);
@ -985,9 +1000,13 @@ static int m_setfloat(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && (be_isint(vm, 3) || be_isreal(vm, 3))) {
int32_t idx = be_toint(vm, 2);
if (idx < 0) {
idx = attr.len + idx; /* if index is negative, count from end */
}
if (idx >= 0) {
float val_f = (float) be_toreal(vm, 3);
int32_t* val_i = (int32_t*) &val_f;
bbool be = bfalse;
@ -996,7 +1015,8 @@ static int m_setfloat(bvm *vm)
}
if (be) { buf_set4_be(&attr, idx, *val_i); } else { buf_set4_le(&attr, idx, *val_i); }
be_pop(vm, argc - 1);
m_write_attributes(vm, 1, &attr); /* update attributes */
// m_write_attributes(vm, 1, &attr); /* update attributes */
}
be_return_nil(vm);
}
be_return_nil(vm);
@ -1011,7 +1031,7 @@ static int m_addfloat(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 4); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
if (argc >=2 && (be_isint(vm, 2) || be_isreal(vm, 2))) {
float val_f = (float) be_toreal(vm, 2);
@ -1040,12 +1060,15 @@ static int m_setbytes(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && (be_isbytes(vm, 3))) {
int32_t idx = be_toint(vm, 2);
size_t from_len_total;
const uint8_t* buf_ptr = (const uint8_t*) be_tobytes(vm, 3, &from_len_total);
if (idx < 0) { idx = 0; }
if (idx < 0) {
idx = attr.len + idx; /* if index is negative, count from end */
}
if (idx < 0) { idx = 0; } /* if still negative, start from offset 0 */
if (idx >= attr.len) { idx = attr.len; }
int32_t from_byte = 0;
@ -1084,7 +1107,7 @@ static int m_reverse(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
int32_t idx = 0; /* start from index 0 */
int32_t len = attr.len; /* entire len */
@ -1092,6 +1115,7 @@ static int m_reverse(bvm *vm)
if (argc >= 2 && be_isint(vm, 2)) {
idx = be_toint(vm, 2);
if (idx < 0) { idx = attr.len + idx; } /* if negative, count from end */
if (idx < 0) { idx = 0; } /* railguards */
if (idx > attr.len) { idx = attr.len; }
}
@ -1135,13 +1159,16 @@ static int m_setitem(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (argc >=3 && be_isint(vm, 2) && be_isint(vm, 3)) {
int index = be_toint(vm, 2);
int val = be_toint(vm, 3);
if (index < 0) {
index += attr.len; /* if index is negative, count from end */
}
if (index >= 0 && index < attr.len) {
buf_set1(&attr, index, val);
m_write_attributes(vm, 1, &attr); /* update attributes */
// m_write_attributes(vm, 1, &attr); /* update attributes */
be_return_nil(vm);
}
}
@ -1153,7 +1180,7 @@ static int m_item(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = bytes_check_data(vm, 0); /* we reserve 4 bytes anyways */
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (argc >=2 && be_isint(vm, 2)) { /* single byte */
int index = be_toint(vm,2);
if (index < 0) {
@ -1215,6 +1242,7 @@ static int m_resize(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = m_read_attributes(vm, 1);
check_ptr_modifiable(vm, &attr);
if (argc <= 1 || !be_isint(vm, 2)) {
be_raise(vm, "type_error", "size must be of type 'int'");
@ -1237,6 +1265,7 @@ static int m_resize(bvm *vm)
static int m_clear(bvm *vm)
{
buf_impl attr = m_read_attributes(vm, 1);
check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
attr.len = 0;
m_write_attributes(vm, 1, &attr); /* update instance */
@ -1293,7 +1322,7 @@ static int m_connect(bvm *vm)
{
int argc = be_top(vm);
buf_impl attr = m_read_attributes(vm, 1);
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (attr.fixed) { be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); }
if (argc >= 2 && (be_isbytes(vm, 2) || be_isint(vm, 2) || be_isstring(vm, 2))) {
if (be_isint(vm, 2)) {
@ -1390,7 +1419,7 @@ static int m_fromb64(bvm *vm)
int32_t bin_len = decode_base64_length((unsigned char*)s); /* do a first pass to calculate the buffer size */
buf_impl attr = m_read_attributes(vm, 1);
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (attr.fixed && attr.len != bin_len) {
be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE);
}
@ -1429,7 +1458,7 @@ static int m_fromhex(bvm *vm)
int32_t bin_len = (s_len - from) / 2;
buf_impl attr = m_read_attributes(vm, 1);
check_ptr(vm, &attr);
check_ptr_modifiable(vm, &attr);
if (attr.fixed && attr.len != bin_len) {
be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE);
}
@ -1483,6 +1512,18 @@ static int m_is_mapped(bvm *vm)
be_return(vm);
}
/*
* Returns `btrue` if the buffer is solidified and read only
*
* `isreadonly() -> bool`
*/
static int m_is_readonly(bvm *vm)
{
buf_impl attr = m_read_attributes(vm, 1);
be_pushbool(vm, attr.solidified);
be_return(vm);
}
/*
* Change the pointer to a mapped buffer.
*
@ -1497,6 +1538,9 @@ static int m_change_buffer(bvm *vm)
int argc = be_top(vm);
if (argc >= 2 && be_iscomptr(vm, 2)) {
buf_impl attr = m_read_attributes(vm, 1);
if (attr.solidified) {
be_raise(vm, "value_error", BYTES_READ_ONLY_MESSAGE);
}
if (!attr.mapped) {
be_raise(vm, "type_error", "bytes() object must be mapped");
}
@ -1764,11 +1808,12 @@ void be_load_byteslib(bvm *vm)
{
static const bnfuncinfo members[] = {
{ ".p", NULL },
{ ".size", NULL },
{ ".len", NULL },
{ ".size", NULL },
{ "_buffer", m_buffer },
{ "_change_buffer", m_change_buffer },
{ "ismapped", m_is_mapped },
{ "isreadonly", m_is_readonly },
{ "init", m_init },
{ "deinit", m_deinit },
{ "tostring", m_tostring },
@ -1810,14 +1855,18 @@ void be_load_byteslib(bvm *vm)
be_regclass(vm, "bytes", members);
}
#else
#include "../generate/be_const_bytes_def.h"
/* @const_object_info_begin
class be_class_bytes (scope: global, name: bytes) {
.p, var
.size, var
.len, var
.size, var
_buffer, func(m_buffer)
_change_buffer, func(m_change_buffer)
ismapped, func(m_is_mapped)
isreadonly, func(m_is_readonly)
init, func(m_init)
deinit, func(m_deinit)
tostring, func(m_tostring)

View File

@ -0,0 +1,44 @@
/********************************************************************
** Copyright (c) 2018-2020 Guan Wenliang - Stephan Hadinger
** This file is part of the Berry default interpreter.
** skiars@qq.com, https://github.com/Skiars/berry
** See Copyright Notice in the LICENSE file or at
** https://github.com/Skiars/berry/blob/master/LICENSE
********************************************************************/
#ifndef __BE_BYTESLIB_H
#define __BE_BYTESLIB_H
#include "be_object.h"
#define BYTES_DEFAULT_SIZE 28 /* default pre-reserved size for buffer (keep 4 bytes for len/size) */
#define BYTES_OVERHEAD 4 /* bytes overhead to be added when allocating (used to store len and size) */
#define BYTES_HEADROOM 8 /* keep a natural headroom of 8 bytes when resizing */
#define BYTES_SIZE_FIXED -1 /* if size is -1, then the bytes object cannot be reized */
#define BYTES_SIZE_MAPPED -2 /* if size is -2, then the bytes object is mapped to a fixed memory region, i.e. cannot be resized */
#define BYTES_SIZE_SOLIDIFIED -3 /* is size is -3, then the bytes object is solidified and cannot be resized nor modified */
#define BYTES_RESIZE_ERROR "attribute_error"
#define BYTES_RESIZE_MESSAGE "bytes object size if fixed and cannot be resized"
#define BYTES_READ_ONLY_MESSAGE "bytes object is read only"
/* be_raise(vm, BYTES_RESIZE_ERROR, BYTES_RESIZE_MESSAGE); */
typedef struct buf_impl {
int32_t size; // size in bytes of the buffer
int32_t len; // current size of the data in buffer. Invariant: len <= size
uint8_t *bufptr; // the actual data
int32_t prev_size; // previous value read from the instance
int32_t prev_len; // previous value read from the instance
uint8_t *prev_bufptr;
bbool fixed; // is size fixed? (actually encoded as negative size)
bbool mapped;
bbool solidified;
} buf_impl;
size_t be_bytes_tohex(char * out, size_t outsz, const uint8_t * in, size_t insz);
#if BE_USE_PRECOMPILED_OBJECT
#include "../generate/be_const_bytes.h"
#endif
#endif

View File

@ -49,6 +49,16 @@ struct binstance {
bvalue members[1]; /* members variable data field */
};
/* special structure accepting 3 instance variables used only for bytes() solidification */
struct binstance_arg3 {
bcommon_header;
struct binstance *super;
struct binstance *sub;
bclass *_class;
bgcobject *gray; /* for gc gray list */
bvalue members[3]; /* members variable data field */
};
bclass* be_newclass(bvm *vm, bstring *name, bclass *super);
void be_class_compress(bvm *vm, bclass *c);
int be_class_attribute(bvm *vm, bclass *c, bstring *attr);

View File

@ -307,7 +307,7 @@ static int exp2const(bfuncinfo *finfo, bexpdesc *e)
{
int idx = findconst(finfo, e); /* does the constant already exist? */
if (idx == -1) { /* if not add it */
bvalue k;
bvalue k = {};
switch (e->type) {
case ETINT:
k.type = BE_INT;
@ -882,7 +882,7 @@ void be_code_index(bfuncinfo *finfo, bexpdesc *c, bexpdesc *k)
void be_code_class(bfuncinfo *finfo, bexpdesc *dst, bclass *c)
{
int src;
bvalue var;
bvalue var = {};
var_setclass(&var, c); /* new var of CLASS type */
src = newconst(finfo, &var); /* allocate a new constant and return kreg */
if (dst->type == ETLOCAL) { /* if target is a local variable, just assign */
@ -965,7 +965,7 @@ void be_code_raise(bfuncinfo *finfo, bexpdesc *e1, bexpdesc *e2)
void be_code_implicit_class(bfuncinfo *finfo, bexpdesc *e, bclass *c)
{
bvalue k;
bvalue k = {};
k.type = BE_CLASS;
k.v.p = c;
int idx = newconst(finfo, &k); /* create new constant */

View File

@ -19,6 +19,7 @@ extern "C" {
#include "be_class.h"
#include "be_string.h"
#include "be_module.h"
#include "be_byteslib.h"
#ifndef __cplusplus
@ -27,6 +28,40 @@ extern "C" {
.type = (_t), \
.marked = GC_CONST
#define be_define_const_bytes(_name, ...) \
const binstance_arg3 be_const_instance_##_name = { \
be_const_header(BE_INSTANCE), \
.super = NULL, \
.sub = NULL, \
._class = (bclass*) &be_class_bytes, \
.members = { \
{.v.c = (const void*) & (const uint8_t[]) { __VA_ARGS__ }, \
.type = BE_COMPTR }, \
be_const_int(sizeof(#_name) / 2), \
be_const_int(BYTES_SIZE_SOLIDIFIED) \
} \
}
/* special version to define a default empty bytes */
#define be_define_const_bytes_empty() \
const binstance_arg3 be_const_instance_ = { \
be_const_header(BE_INSTANCE), \
.super = NULL, \
.sub = NULL, \
._class = (bclass*) &be_class_bytes, \
.members = { \
{.v.c = (const void*) & (const uint8_t[]) { 0x00 }, \
.type = BE_COMPTR }, \
be_const_int(0), \
be_const_int(BYTES_SIZE_SOLIDIFIED) \
} \
}
#define be_const_bytes_instance(_bytes) { \
.v.c = &be_const_instance_##_bytes, \
.type = BE_INSTANCE \
}
#define be_define_const_str_weak(_name, _s, _len) \
const bcstring be_const_str_##_name = { \
.next = NULL, \
@ -232,6 +267,27 @@ const bntvmodule_t be_native_module(_module) = { \
.members = _members \
}
#define be_nested_simple_instance_1_arg(_class_ptr, arg0) \
& (const binstance) { \
be_const_header(BE_INSTANCE), \
.super = NULL, \
.sub = NULL, \
._class = (bclass*) _class_ptr, \
.members = { arg0 } \
}
/* only instances with no super and no sub instance are supported */
/* primarily for `list` and `map`*/
#define be_nested_simple_instance_3_args(_class_ptr, arg0, arg1, arg2) \
& (const binstance_arg3) { \
be_const_header(BE_INSTANCE), \
.super = NULL, \
.sub = NULL, \
._class = (bclass*) _class_ptr, \
.members = { arg0, arg1, arg2 } \
}
#define be_nested_map(_size, _slots) \
& (const bmap) { \
be_const_header(BE_MAP), \
@ -298,6 +354,9 @@ const bntvmodule_t be_native_module(_module) = { \
#else
// #define be_define_const_bytes(_name, ...) \
// const uint8_t be_const_bin_##_name[] = { __VA_ARGS__ }
#define be_define_const_str_weak(_name, _s, _len) \
const bcstring be_const_str_##_name = { \
NULL, \
@ -440,6 +499,7 @@ const bntvmodule_t be_native_module_##_module = { \
/* provide pointers to map and list classes for solidified code */
extern const bclass be_class_list;
extern const bclass be_class_map;
extern const bclass be_class_bytes;
#ifdef __cplusplus
}

View File

@ -9,6 +9,7 @@
#include "be_mem.h"
#include "be_sys.h"
#include "be_gc.h"
#include "be_bytecode.h"
#include <string.h>
#define READLINE_STEP 100
@ -26,7 +27,10 @@ static int i_write(bvm *vm)
} else {
data = be_tobytes(vm, 2, &size);
}
be_fwrite(fh, data, size);
size_t bw = be_fwrite(fh, data, size);
if (bw != size) {
be_raise(vm, "io_error", "write failed");
}
}
be_return_nil(vm);
}
@ -79,15 +83,17 @@ static int i_readbytes(bvm *vm)
be_call(vm, 2); /* call b.resize(size) */
be_pop(vm, 3); /* bytes() instance is at top */
char *buffer = (char*) be_tobytes(vm, -1, NULL); /* we get the address of the internam buffer of size 'size' */
size = be_fread(fh, buffer, size);
char *buffer = (char*) be_tobytes(vm, -1, NULL); /* we get the address of the internal buffer of size 'size' */
size_t read_size = be_fread(fh, buffer, size);
if (size != read_size) {
/* resize if something went wrong */
be_getmember(vm, -1, "resize");
be_pushvalue(vm, -2);
be_pushint(vm, size);
be_pushint(vm, read_size);
be_call(vm, 2); /* call b.resize(size) */
be_pop(vm, 3); /* bytes() instance is at top */
}
} else {
be_pushbytes(vm, NULL, 0);
}
@ -176,6 +182,26 @@ static int i_close(bvm *vm)
be_return_nil(vm);
}
static int i_savecode(bvm *vm)
{
int argc = be_top(vm);
if (argc >= 2 && be_isclosure(vm, 2)) {
be_getmember(vm, 1, ".p");
if (be_iscomptr(vm, -1)) {
void *fh = be_tocomptr(vm, -1);
bvalue *v = be_indexof(vm, 2);
if (var_isclosure(v)) {
bclosure *cl = var_toobj(v);
bproto *pr = cl->proto;
be_bytecode_save_to_fs(vm, fh, pr);
}
}
} else {
be_raise(vm, "type_error", "closure expected");
}
be_return_nil(vm);
}
#if !BE_USE_PRECOMPILED_OBJECT
static int m_open(bvm *vm)
#else
@ -196,6 +222,7 @@ int be_nfunc_open(bvm *vm)
{ "flush", i_flush },
{ "close", i_close },
{ "deinit", i_close },
{ "savecode", i_savecode },
{ NULL, NULL }
};
fname = argc >= 1 && be_isstring(vm, 1) ? be_tostring(vm, 1) : NULL;

View File

@ -320,7 +320,11 @@ static void free_proto(bvm *vm, bgcobject *obj)
bproto *proto = cast_proto(obj);
gc_try (proto != NULL) {
be_free(vm, proto->upvals, proto->nupvals * sizeof(bupvaldesc));
if (!(proto->varg & BE_VA_SHARED_KTAB)) { /* do not free shared ktab */
/*caveat: the shared ktab is never GCed, in practice this is not a problem */
/* since shared ktab are primarily meant for solidification hence not gc-able */
be_free(vm, proto->ktab, proto->nconst * sizeof(bvalue));
}
be_free(vm, proto->ptab, proto->nproto * sizeof(bproto*));
be_free(vm, proto->code, proto->codesize * sizeof(binstruction));
#if BE_DEBUG_RUNTIME_INFO

View File

@ -89,6 +89,17 @@ static int m_floor(bvm *vm)
be_return(vm);
}
static int m_round(bvm *vm)
{
if (be_top(vm) >= 1 && be_isnumber(vm, 1)) {
breal x = be_toreal(vm, 1);
be_pushreal(vm, mathfunc(round)(x));
} else {
be_pushreal(vm, (breal)0.0);
}
be_return(vm);
}
static int m_sin(bvm *vm)
{
if (be_top(vm) >= 1 && be_isnumber(vm, 1)) {
@ -292,6 +303,61 @@ static int m_rand(bvm *vm)
be_return(vm);
}
/* check that all arguments are either int or real, and return true if at least one is real */
static int m_check_int_or_has_real(bvm *vm)
{
int argc = be_top(vm);
int has_real = 0;
for (int i = 1; i <= argc; ++i) {
if (be_isreal(vm, i)) {
has_real = 1;
} else if (!be_isint(vm, i)) {
be_raise(vm, "type_error", "arguments must be numbers");
}
}
return has_real;
}
static int m_min_max(bvm *vm, int is_min) {
int argc = be_top(vm);
if (argc > 0) {
/* see if at least one argument is float, else they are all ints */
int has_real = m_check_int_or_has_real(vm);
if (has_real) {
breal bound = be_toreal(vm, 1);
for (int i = 2; i <= argc; ++i) {
breal x = be_toreal(vm, i);
if (is_min ? (x < bound) : (x > bound)) {
bound = x;
}
}
be_pushreal(vm, bound);
} else {
bint bound = be_toint(vm, 1);
for (int i = 2; i <= argc; ++i) {
bint x = be_toint(vm, i);
if (is_min ? (x < bound) : (x > bound)) {
bound = x;
}
}
be_pushint(vm, bound);
}
be_return(vm);
}
be_return_nil(vm);
}
int m_min(bvm *vm)
{
return m_min_max(vm, 1);
}
int m_max(bvm *vm)
{
return m_min_max(vm, 0);
}
#if !BE_USE_PRECOMPILED_OBJECT
be_native_module_attr_table(math) {
be_native_module_function("isnan", m_isnan),
@ -299,6 +365,7 @@ be_native_module_attr_table(math) {
be_native_module_function("abs", m_abs),
be_native_module_function("ceil", m_ceil),
be_native_module_function("floor", m_floor),
be_native_module_function("round", m_round),
be_native_module_function("sin", m_sin),
be_native_module_function("cos", m_cos),
be_native_module_function("tan", m_tan),
@ -318,6 +385,8 @@ be_native_module_attr_table(math) {
be_native_module_function("pow", m_pow),
be_native_module_function("srand", m_srand),
be_native_module_function("rand", m_rand),
be_native_module_function("min", m_min),
be_native_module_function("max", m_max),
be_native_module_real("pi", M_PI),
be_native_module_real("nan", NAN),
be_native_module_real("inf", INFINITY),
@ -334,6 +403,7 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) {
abs, func(m_abs)
ceil, func(m_ceil)
floor, func(m_floor)
round, func(m_round)
sin, func(m_sin)
cos, func(m_cos)
tan, func(m_tan)
@ -353,6 +423,8 @@ module math (scope: global, depend: BE_USE_MATH_MODULE) {
pow, func(m_pow)
srand, func(m_srand)
rand, func(m_rand)
min, func(m_min)
max, func(m_max)
pi, real(M_PI)
nan, real(NAN)
inf, real(INFINITY)

View File

@ -42,6 +42,8 @@
#define BE_VA_VARARG (1 << 0) /* function has variable number of arguments */
#define BE_VA_METHOD (1 << 1) /* function is a method (this is only a hint) */
#define BE_VA_STATICMETHOD (1 << 2) /* the function is a static method and has the class as implicit '_class' variable */
#define BE_VA_SHARED_KTAB (1 << 3) /* the funciton has a shared consolidated ktab */
#define BE_VA_NOCOMPACT (1 << 4) /* the funciton has a shared consolidated ktab */
#define array_count(a) (sizeof(a) / sizeof((a)[0]))
#define bcommon_header \
@ -62,6 +64,7 @@ typedef struct bclosure bclosure;
typedef struct bntvclos bntvclos;
typedef struct bclass bclass;
typedef struct binstance binstance;
typedef struct binstance_arg3 binstance_arg3;
typedef struct blist blist;
typedef struct bmap bmap;
typedef struct bupval bupval;

View File

@ -311,7 +311,7 @@ static void setupvals(bfuncinfo *finfo)
}
/* Function is complete, finalize bproto */
static void end_func(bparser *parser, bclass *c)
static void end_func(bparser *parser)
{
bvm *vm = parser->vm;
bfuncinfo *finfo = parser->finfo;
@ -324,14 +324,8 @@ static void end_func(bparser *parser, bclass *c)
proto->codesize = finfo->pc;
proto->ktab = be_vector_release(vm, &finfo->kvec);
proto->nconst = be_vector_count(&finfo->kvec);
/* special case here */
proto->nproto = be_vector_count(&finfo->pvec);
if (proto->nproto == 0) {
proto->ptab = (void*) c;
} else {
be_vector_push_c(vm, &finfo->pvec, (void*) &c);
proto->ptab = be_vector_release(vm, &finfo->pvec);
}
#if BE_USE_MEM_ALIGNED
proto->code = be_move_to_aligned(vm, proto->code, proto->codesize * sizeof(binstruction)); /* move `code` to 4-bytes aligned memory region */
proto->ktab = be_move_to_aligned(vm, proto->ktab, proto->nconst * sizeof(bvalue)); /* move `ktab` to 4-bytes aligned memory region */
@ -644,7 +638,7 @@ static bproto* funcbody(bparser *parser, bstring *name, bclass *c, int type)
finfo.proto->varg |= BE_VA_STATICMETHOD;
}
stmtlist(parser); /* parse statement without final `end` */
end_func(parser, c); /* close function context */
end_func(parser); /* close function context */
match_token(parser, KeyEnd); /* skip 'end' */
return finfo.proto; /* return fully constructed `bproto` */
}
@ -700,7 +694,7 @@ static void lambda_expr(bparser *parser, bexpdesc *e)
expr(parser, &e1);
check_var(parser, &e1);
be_code_ret(parser->finfo, &e1);
end_func(parser, NULL);
end_func(parser);
init_exp(e, ETPROTO, be_code_proto(parser->finfo, finfo.proto));
be_stackpop(parser->vm, 1);
}
@ -1827,7 +1821,7 @@ static void mainfunc(bparser *parser, bclosure *cl)
cl->proto = finfo.proto;
be_remove(parser->vm, -3); /* pop proto from stack */
stmtlist(parser);
end_func(parser, NULL);
end_func(parser);
match_token(parser, TokenEOS); /* skip EOS */
}

View File

@ -17,6 +17,8 @@
#include "be_decoder.h"
#include "be_sys.h"
#include "be_mem.h"
#include "be_byteslib.h"
#include "be_gc.h"
#include <string.h>
#include <stdio.h>
#include <ctype.h>
@ -24,6 +26,7 @@
extern const bclass be_class_list;
extern const bclass be_class_map;
extern const bclass be_class_bytes;
#if BE_USE_SOLIDIFY_MODULE
#include <inttypes.h>
@ -112,25 +115,9 @@ static void toidentifier(char *to, const char *p)
*to = 0; // final NULL
}
/* return the parent class of a function, encoded in ptab, or NULL if none */
static const bclass *m_solidify_get_parentclass(const bproto *pr)
{
const bclass *cla;
if (pr->nproto > 0) {
cla = (const bclass*) pr->ptab[pr->nproto];
} else {
cla = (const bclass*) pr->ptab;
}
if (cla && var_basetype(cla) == BE_CLASS) {
return cla;
} else {
return NULL;
}
}
static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefix_name, const char *key, void* fout);
static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout);
static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const char *prefixname, void* fout)
static void m_solidify_map(bvm *vm, bbool str_literal, bmap * map, const char *prefix_name, void* fout)
{
// compact first
be_map_compact(vm, map);
@ -158,14 +145,14 @@ static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const c
} else {
logfmt(" { be_const_key_weak(%s, %i), ", id_buf, key_next);
}
m_solidify_bvalue(vm, str_literal, &node->value, prefixname, str(node->key.v.s), fout);
m_solidify_bvalue(vm, str_literal, &node->value, prefix_name, str(node->key.v.s), fout);
} else if (node->key.type == BE_INT) {
#if BE_INTGER_TYPE == 2
logfmt(" { be_const_key_int(%lli, %i), ", node->key.v.i, key_next);
#else
logfmt(" { be_const_key_int(%i, %i), ", node->key.v.i, key_next);
#endif
m_solidify_bvalue(vm, str_literal, &node->value, prefixname, NULL, fout);
m_solidify_bvalue(vm, str_literal, &node->value, prefix_name, NULL, fout);
} else {
char error[64];
snprintf(error, sizeof(error), "Unsupported type in key: %i", node->key.type);
@ -178,21 +165,21 @@ static void m_solidify_map(bvm *vm, bbool str_literal, const bmap * map, const c
}
static void m_solidify_list(bvm *vm, bbool str_literal, const blist * list, const char *prefixname, void* fout)
static void m_solidify_list(bvm *vm, bbool str_literal, const blist * list, const char *prefix_name, void* fout)
{
logfmt(" be_nested_list(%i,\n", list->count);
logfmt(" ( (struct bvalue*) &(const bvalue[]) {\n");
for (int i = 0; i < list->count; i++) {
logfmt(" ");
m_solidify_bvalue(vm, str_literal, &list->data[i], prefixname, "", fout);
m_solidify_bvalue(vm, str_literal, &list->data[i], prefix_name, "", fout);
logfmt(",\n");
}
logfmt(" }))"); // TODO need terminal comma?
}
// pass key name in case of class, or NULL if none
static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefixname, const char *key, void* fout)
static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value, const char *prefix_name, const char *key, void* fout)
{
int type = var_primetype(value);
switch (type) {
@ -259,15 +246,9 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value,
size_t id_len = toidentifier_length(func_name);
char func_name_id[id_len];
toidentifier(func_name_id, func_name);
/* get parent class name if any */
const bclass *parentclass = m_solidify_get_parentclass(clo->proto);
const char *parentclass_name = parentclass ? str(parentclass->name) : NULL;
const char *actualprefix = parentclass_name ? parentclass_name : prefixname;
logfmt("be_const_%sclosure(%s%s%s%s_closure)",
logfmt("be_const_%sclosure(%s%s%s_closure)",
var_isstatic(value) ? "static_" : "",
parentclass_name ? "class_" : "",
actualprefix ? actualprefix : "", actualprefix ? "_" : "",
prefix_name ? prefix_name : "", prefix_name ? "_" : "",
func_name_id);
}
break;
@ -275,41 +256,51 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value,
logfmt("be_const_class(be_class_%s)", str(((bclass*) var_toobj(value))->name));
break;
case BE_COMPTR:
logfmt("be_const_comptr(&be_ntv_%s_%s)", prefixname ? prefixname : "unknown", key ? key : "unknown");
logfmt("be_const_comptr(&be_ntv_%s_%s)", prefix_name ? prefix_name : "unknown", key ? key : "unknown");
break;
case BE_NTVFUNC:
logfmt("be_const_%sfunc(be_ntv_%s_%s)",
var_isstatic(value) ? "static_" : "",
prefixname ? prefixname : "unknown", key ? key : "unknown");
prefix_name ? prefix_name : "unknown", key ? key : "unknown");
break;
case BE_INSTANCE:
{
binstance * ins = (binstance *) var_toobj(value);
bclass * cl = ins->_class;
if (ins->super || ins->sub) {
if (cl == &be_class_bytes) {
const void * bufptr = var_toobj(&ins->members[0]);
int32_t len = var_toint(&ins->members[1]);
size_t hex_len = len * 2 + 1;
char * hex_out = be_pushbuffer(vm, hex_len);
be_bytes_tohex(hex_out, hex_len, bufptr, len);
logfmt("be_const_bytes_instance(%s)", hex_out);
be_pop(vm, 1);
} else if (ins->super || ins->sub) {
be_raise(vm, "internal_error", "instance must not have a super/sub class");
} else if (cl->nvar != 1) {
be_raise(vm, "internal_error", "instance must have only one instance variable");
} else if ((cl != &be_class_map && cl != &be_class_list) || 1) { // TODO
} else {
const char * cl_ptr = "";
if (cl == &be_class_map) { cl_ptr = "map"; }
if (cl == &be_class_list) { cl_ptr = "list"; }
else if (cl == &be_class_list) { cl_ptr = "list"; }
else { be_raise(vm, "internal_error", "unsupported class"); }
logfmt("be_const_simple_instance(be_nested_simple_instance(&be_class_%s, {\n", cl_ptr);
if (cl == &be_class_map) {
logfmt(" be_const_map( * ");
} else {
logfmt(" be_const_list( * ");
}
m_solidify_bvalue(vm, str_literal, &ins->members[0], prefixname, key, fout);
m_solidify_bvalue(vm, str_literal, &ins->members[0], prefix_name, key, fout);
logfmt(" ) } ))");
}
}
break;
case BE_MAP:
m_solidify_map(vm, str_literal, (bmap *) var_toobj(value), prefixname, fout);
m_solidify_map(vm, str_literal, (bmap *) var_toobj(value), prefix_name, fout);
break;
case BE_LIST:
m_solidify_list(vm, str_literal, (blist *) var_toobj(value), prefixname, fout);
m_solidify_list(vm, str_literal, (blist *) var_toobj(value), prefix_name, fout);
break;
default:
{
@ -323,10 +314,11 @@ static void m_solidify_bvalue(bvm *vm, bbool str_literal, const bvalue * value,
static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cl, void* fout);
/* solidify any inner class */
static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bproto *pr, void* fout)
static void m_solidify_closure_inner_class(bvm *vm, bbool str_literal, const bclosure *clo, void* fout)
{
// parse any class in constants to output it first
if (pr->nconst > 0) {
bproto *pr = clo->proto;
if ((!gc_isconst(clo)) && (pr->nconst > 0) && (!(pr->varg & BE_VA_SHARED_KTAB)) && (!(pr->varg & BE_VA_NOCOMPACT))) { /* if shared ktab or nocompact, skip */
for (int k = 0; k < pr->nconst; k++) {
if (var_type(&pr->ktab[k]) == BE_CLASS) {
if ((k == 0) && (pr->varg & BE_VA_STATICMETHOD)) {
@ -340,12 +332,8 @@ static void m_solidify_proto_inner_class(bvm *vm, bbool str_literal, const bprot
}
}
static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, const char *prefixname, int indent, void* fout)
static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const char * func_name, int indent, const char * prefix_name, void* fout)
{
/* get parent class name if any */
const bclass *parentclass = m_solidify_get_parentclass(pr);
const char *parentclass_name = parentclass ? str(parentclass->name) : NULL;
logfmt("%*sbe_nested_proto(\n", indent, "");
indent += 2;
@ -366,31 +354,25 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const
logfmt("%*s%d, /* has sup protos */\n", indent, "", (pr->nproto > 0) ? 1 : 0);
if (pr->nproto > 0) {
// if pr->nproto is not zero, we add a last value that is either NULL or the parent class
logfmt("%*s( &(const struct bproto*[%2d]) {\n", indent, "", pr->nproto + 1); /* one more slot */
logfmt("%*s( &(const struct bproto*[%2d]) {\n", indent, "", pr->nproto);
for (int32_t i = 0; i < pr->nproto; i++) {
size_t sub_len = strlen(func_name) + 10;
char sub_name[sub_len];
snprintf(sub_name, sizeof(sub_name), "%s_%"PRId32, func_name, i);
m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, NULL, indent+2, fout);
m_solidify_proto(vm, str_literal, pr->ptab[i], sub_name, indent+2, prefix_name, fout);
logfmt(",\n");
}
if (parentclass_name) {
logfmt("%*s&be_class_%s, \n", indent, "", parentclass_name);
} else {
logfmt("%*sNULL, \n", indent, "");
}
logfmt("%*s}),\n", indent, "");
} else {
if (parentclass_name) {
logfmt("%*s&be_class_%s, \n", indent, "", parentclass_name);
} else {
logfmt("%*sNULL, \n", indent, "");
}
logfmt("%*sNULL, /* no sub protos */\n", indent, "");
}
logfmt("%*s%d, /* has constants */\n", indent, "", (pr->nconst > 0) ? 1 : 0);
if (pr->nconst > 0) {
// we output the full table unless it's a shared ktab
if (pr->varg & BE_VA_SHARED_KTAB) {
logfmt("%*s&be_ktab_%s, /* shared constants */\n", indent, "", prefix_name);
} else {
logfmt("%*s( &(const bvalue[%2d]) { /* constants */\n", indent, "", pr->nconst);
for (int k = 0; k < pr->nconst; k++) {
logfmt("%*s/* K%-3d */ ", indent, "", k);
@ -398,6 +380,7 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const
logfmt(",\n");
}
logfmt("%*s}),\n", indent, "");
}
} else {
logfmt("%*sNULL, /* no const */\n", indent, "");
}
@ -437,27 +420,11 @@ static void m_solidify_proto(bvm *vm, bbool str_literal, const bproto *pr, const
}
static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, const char * prefixname, void* fout)
static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo, const char * prefix_name, void* fout)
{
bproto *pr = clo->proto;
const char * func_name = str(pr->name);
/* get parent class name if any */
const bclass *parentclass = m_solidify_get_parentclass(pr);
const char *parentclass_name = parentclass ? str(parentclass->name) : NULL;
if (parentclass_name) {
/* check that the class name is the same as the prefix */
/* meaning that we are solidifying a method from its own class */
/* if they don't match, then the method is borrowed to another class and we don't export it */
char parentclass_prefix[strlen(parentclass_name) + 10];
snprintf(parentclass_prefix, sizeof(parentclass_prefix), "class_%s", parentclass_name);
if (strcmp(parentclass_prefix, prefixname) != 0) {
logfmt("// Borrowed method '%s' from class '%s'\n", func_name, parentclass_prefix);
logfmt("extern bclosure *%s_%s;\n", parentclass_prefix, func_name);
return;
}
}
if (clo->nupvals > 0) {
logfmt("--> Unsupported upvals in closure <---");
// be_raise(vm, "internal_error", "Unsupported upvals in closure");
@ -465,28 +432,23 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo,
int indent = 2;
m_solidify_proto_inner_class(vm, str_literal, pr, fout);
m_solidify_closure_inner_class(vm, str_literal, clo, fout);
logfmt("\n");
logfmt("/********************************************************************\n");
logfmt("** Solidified function: %s\n", func_name);
logfmt("********************************************************************/\n");
if (parentclass_name) {
/* declare exten so we can have a pointer */
logfmt("extern const bclass be_class_%s;\n", parentclass_name);
}
{
size_t id_len = toidentifier_length(func_name);
char func_name_id[id_len];
toidentifier(func_name_id, func_name);
logfmt("be_local_closure(%s%s%s, /* name */\n",
prefixname ? prefixname : "", prefixname ? "_" : "",
prefix_name ? prefix_name : "", prefix_name ? "_" : "",
func_name_id);
}
m_solidify_proto(vm, str_literal, pr, func_name, prefixname, indent, fout);
m_solidify_proto(vm, str_literal, pr, func_name, indent, prefix_name, fout);
logfmt("\n");
// closure
@ -494,11 +456,17 @@ static void m_solidify_closure(bvm *vm, bbool str_literal, const bclosure *clo,
logfmt("/*******************************************************************/\n\n");
}
static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* fout);
static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, void* fout)
{
const char * classname = str(cla->name);
char prefixname[strlen(classname) + 10];
snprintf(prefixname, sizeof(prefixname), "class_%s", classname);
/* TODO try compacting for now */
m_compact_class(vm, str_literal, cla, fout);
char prefix_name[strlen(classname) + 10];
snprintf(prefix_name, sizeof(prefix_name), "class_%s", classname);
/* pre-declare class to support '_class' implicit variable */
logfmt("\nextern const bclass be_class_%s;\n", classname);
@ -509,7 +477,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v
while ((node = be_map_next(cla->members, &iter)) != NULL) {
if (var_isstr(&node->key) && var_isclosure(&node->value)) {
bclosure *f = var_toobj(&node->value);
m_solidify_closure(vm, str_literal, f, prefixname, fout);
m_solidify_closure(vm, str_literal, f, prefix_name, fout);
}
}
}
@ -533,7 +501,7 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v
}
if (cla->members) {
m_solidify_map(vm, str_literal, cla->members, prefixname, fout);
m_solidify_map(vm, str_literal, cla->members, prefix_name, fout);
logfmt(",\n");
} else {
logfmt(" NULL,\n");
@ -550,17 +518,17 @@ static void m_solidify_subclass(bvm *vm, bbool str_literal, const bclass *cla, v
logfmt(");\n");
}
static void m_solidify_class(bvm *vm, bbool str_literal, const bclass *cl, void* fout)
static void m_solidify_class(bvm *vm, bbool str_literal, bclass *cl, void* fout)
{
m_solidify_subclass(vm, str_literal, cl, fout);
}
static void m_solidify_module(bvm *vm, bbool str_literal, const bmodule *ml, void* fout)
static void m_solidify_module(bvm *vm, bbool str_literal, bmodule *ml, void* fout)
{
const char * modulename = be_module_name(ml);
if (!modulename) { modulename = ""; }
// char prefixname[strlen(modulename) + 10];
// snprintf(prefixname, sizeof(prefixname), "module_%s", modulename);
// char prefix_name[strlen(modulename) + 10];
// snprintf(prefix_name, sizeof(prefix_name), "module_%s", modulename);
/* iterate on members to dump closures and classes */
if (ml->table) {
@ -616,12 +584,12 @@ static int m_dump(bvm *vm)
}
be_pop(vm, 1);
}
const char *prefixname = NULL; /* allow to specify an explicit prefix */
const char *prefix_name = NULL; /* allow to specify an explicit prefix */
if (top >= 4 && be_isstring(vm, 4)) {
prefixname = be_tostring(vm, 4);
prefix_name = be_tostring(vm, 4);
}
if (var_isclosure(v)) {
m_solidify_closure(vm, str_literal, var_toobj(v), prefixname, fout);
m_solidify_closure(vm, str_literal, var_toobj(v), prefix_name, fout);
} else if (var_isclass(v)) {
m_solidify_class(vm, str_literal, var_toobj(v), fout);
} else if (var_ismodule(v)) {
@ -633,9 +601,274 @@ static int m_dump(bvm *vm)
be_return_nil(vm);
}
static void m_compact_class(bvm *vm, bbool str_literal, const bclass *cla, void* fout)
{
const char * classname = str(cla->name);
/* reserve an array big enough for max size ktab (256) */
const int MAX_KTAB_SIZE = 256;
bvalue ktab[MAX_KTAB_SIZE]; /* size is 2048 byte for 32 bits, so fitting in ESP32, may need to be changed on smaller architectures */
int ktab_size = 0;
/* for statistics, keep the aggregate number of bvalues */
int ktab_total = 0;
/* iterate on members to dump closures */
if (cla->members) {
bmapnode *node;
bmapiter iter = be_map_iter();
/* first iteration to build the global ktab */
while ((node = be_map_next(cla->members, &iter)) != NULL) {
if (var_isstr(&node->key) && var_isclosure(&node->value)) {
bclosure *cl = var_toobj(&node->value);
bproto *pr = cl->proto;
if ((gc_isconst(cl)) || (pr->varg & BE_VA_SHARED_KTAB) || (pr->varg & BE_VA_NOCOMPACT)) { continue; }
// iterate on each bvalue in ktab
for (int i = 0; i < pr->nconst; i++) {
// look if the bvalue pair is already in ktab
int found = 0;
for (int j = 0; j < ktab_size; j++) {
// to avoid any size issue, we compare all bytes
// berry_log_C("// p1=%p p2=%p sz=%i", &pr->ktab[i], &ktab[j], sizeof(bvalue));
if ((pr->ktab[i].type == ktab[j].type) && (pr->ktab[i].v.i == ktab[j].v.i) && (pr->ktab[i].v.c == ktab[j].v.c)) {
// if (memcmp(&pr->ktab[i], &ktab[j], sizeof(bvalue)) == 0) {
found = 1;
break;
}
}
// if not already there, add it
if (!found) {
ktab[ktab_size++] = pr->ktab[i];
}
if (ktab_size >= MAX_KTAB_SIZE) {
logfmt("// ktab too big for class '%s' - skipping\n", classname);
return;
}
}
ktab_total += pr->nconst;
}
}
if (ktab_size == ktab_total) {
return; /* nothing to optimize, can happen for classes with zero or 1 method */
}
/* allocate a proper ktab */
bvalue *new_ktab = be_malloc(vm, sizeof(bvalue) * ktab_size);
memmove(new_ktab, ktab, sizeof(bvalue) * ktab_size);
/* second iteration to replace ktab and patch code */
iter = be_map_iter();
while ((node = be_map_next(cla->members, &iter)) != NULL) {
if (var_isstr(&node->key) && var_isclosure(&node->value)) {
bclosure *cl = var_toobj(&node->value);
bproto *pr = cl->proto;
if ((gc_isconst(cl)) || (pr->varg & BE_VA_SHARED_KTAB) || (pr->varg & BE_VA_NOCOMPACT)) { continue; }
uint8_t mapping_array[MAX_KTAB_SIZE];
// iterate in proto ktab to get the index in the global ktab
for (int i = 0; i < pr->nconst; i++) {
for (int j = 0; j < ktab_size; j++) {
// compare all bytes
if ((pr->ktab[i].type == ktab[j].type) && (pr->ktab[i].v.i == ktab[j].v.i) && (pr->ktab[i].v.c == ktab[j].v.c)) {
// if (memcmp(&pr->ktab[i], &ktab[j], sizeof(bvalue)) == 0) {
mapping_array[i] = j;
break;
}
}
}
// replace ktab
pr->ktab = new_ktab;
pr->nconst = ktab_size;
// flag as shared ktab
pr->varg |= BE_VA_SHARED_KTAB;
// parse code to replace any K<x> reference
for (int pc = 0; pc < pr->codesize; pc++) {
uint32_t ins = pr->code[pc];
bopcode op = IGET_OP(ins);
/* handle all impacted opcodes */
/* Possibilities: */
/* "B" | "B and C" | "Bx" contain a constant code */
/* special case for OP_RET where "B" may not contain anything */
switch (op) {
case OP_ADD: case OP_SUB: case OP_MUL: case OP_DIV:
case OP_MOD: case OP_LT: case OP_LE: case OP_EQ:
case OP_NE: case OP_GT: case OP_GE: case OP_CONNECT:
case OP_GETMBR: case OP_SETMBR: case OP_GETMET: case OP_SETMET:
case OP_GETIDX: case OP_SETIDX: case OP_AND:
case OP_OR: case OP_XOR: case OP_SHL: case OP_SHR:
case OP_RAISE:
// B and C might contain 'K' constant
if (isKB(ins)) {
int kidx = IGET_RKB(ins) & KR_MASK;
if (kidx >= ktab_size) {
be_raise(vm, "value_error", "invalid ktab index");
}
ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx]));
}
if (isKC(ins)) {
int kidx = IGET_RKC(ins) & KR_MASK;
if (kidx >= ktab_size) {
be_raise(vm, "value_error", "invalid ktab index");
}
ins = (ins & ~IRKC_MASK) | ISET_RKC(setK(mapping_array[kidx]));
}
pr->code[pc] = ins;
break;
case OP_MOVE: case OP_SETSUPER: case OP_NEG: case OP_FLIP: case OP_IMPORT:
case OP_GETNGBL: case OP_SETNGBL:
// Only B might contain 'K' constant
if (isKB(ins)) {
int kidx = IGET_RKB(ins) & KR_MASK;
if (kidx >= ktab_size) {
be_raise(vm, "value_error", "invalid ktab index");
}
ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx]));
}
pr->code[pc] = ins;
break;
case OP_CLASS:
case OP_LDCONST:
// Bx contains the K
{
int kidx = IGET_Bx(ins);
if (kidx >= ktab_size) {
be_raise(vm, "value_error", "invalid ktab index");
}
ins = (ins & ~IBx_MASK) | ISET_Bx(mapping_array[kidx]);
pr->code[pc] = ins;
}
break;
case OP_RET:
if (IGET_RA(ins)) {
// Only B might contain 'K' constant
if (isKB(ins)) {
int kidx = IGET_RKB(ins) & KR_MASK;
if (kidx >= ktab_size) {
be_raise(vm, "value_error", "invalid ktab index");
}
ins = (ins & ~IRKB_MASK) | ISET_RKB(setK(mapping_array[kidx]));
}
}
pr->code[pc] = ins;
break;
/* The following opcodes are not impacted by shared constant table
case OP_GETUPV: case OP_SETUPV:
case OP_LDCONST:
case OP_CALL:
case OP_CLOSURE:
case OP_CLOSE: case OP_LDNIL:
case OP_EXBLK:
case OP_CATCH:
case OP_GETGBL: case OP_SETGBL:
case OP_JMP:
case OP_JMPT: case OP_JMPF:
case OP_LDINT:
case OP_LDBOOL: */
default:
break;
}
}
}
}
}
// logfmt("extern const bclass be_class_%s;\n", classname);
// scan classes and generate extern statements for classes
for (int k = 0; k < ktab_size; k++) {
// if it's a class, print an extern statement
if (var_isclass(&ktab[k])) {
bclass *cl = var_toobj(&ktab[k]);
logfmt("extern const bclass be_class_%s;\n", str(cl->name));
}
}
// scan again to export all sub-classes
for (int k = 0; k < ktab_size; k++) {
// if it's a class, print an extern statement
if (var_isclass(&ktab[k])) {
bclass *cl = var_toobj(&ktab[k]);
if (cl != cla) {
m_solidify_subclass(vm, str_literal, cl, fout);
}
}
}
// output shared ktab
int indent = 0;
logfmt("// compact class '%s' ktab size: %d, total: %d (saved %i bytes)\n", classname, ktab_size, ktab_total, (ktab_total - ktab_size) * 8);
logfmt("static const bvalue be_ktab_class_%s[%i] = {\n", classname, ktab_size);
for (int k = 0; k < ktab_size; k++) {
logfmt("%*s/* K%-3d */ ", indent + 2, "", k);
m_solidify_bvalue(vm, str_literal, &ktab[k], NULL, NULL, fout);
logfmt(",\n");
}
logfmt("%*s};\n", indent, "");
logfmt("\n");
}
// takes a class or a module
// scans all first level bproto
// build a consolidated 'ktab' array
// check that the array is not bigger than 256 (which is the max acceptable constants)
// (for now) print the potential saving
static int m_compact(bvm *vm)
{
int top = be_top(vm);
if (top >= 1) {
bvalue *v = be_indexof(vm, 1);
bbool str_literal = bfalse;
if (top >= 2) {
str_literal = be_tobool(vm, 2);
}
void* fout = NULL; /* output file */
if (top >= 3 && be_isinstance(vm, 3)) {
be_getmember(vm, 3, ".p");
if (be_iscomptr(vm, -1)) {
fout = be_tocomptr(vm, -1);
}
be_pop(vm, 1);
}
// const char *prefix_name = NULL; /* allow to specify an explicit prefix */
// if (top >= 4 && be_isstring(vm, 4)) {
// prefix_name = be_tostring(vm, 4);
// }
if (var_isclass(v)) {
m_compact_class(vm, str_literal, var_toobj(v), fout);
} else if (var_ismodule(v)) {
// TODO
} else {
be_raise(vm, "value_error", "unsupported type");
}
}
be_return_nil(vm);
}
static int m_nocompact(bvm *vm)
{
int top = be_top(vm);
if (top >= 1) {
bvalue *v = be_indexof(vm, 1);
if (var_isclosure(v)) {
bclosure *cl = var_toobj(v);
bproto *pr = cl->proto;
pr->varg |= BE_VA_NOCOMPACT;
} else {
be_raise(vm, "value_error", "unsupported type");
}
}
be_return_nil(vm);
}
#if !BE_USE_PRECOMPILED_OBJECT
be_native_module_attr_table(solidify) {
be_native_module_function("dump", m_dump),
be_native_module_function("compact", m_compact),
};
be_define_native_module(solidify, NULL);
@ -643,6 +876,8 @@ be_define_native_module(solidify, NULL);
/* @const_object_info_begin
module solidify (scope: global, depend: BE_USE_SOLIDIFY_MODULE) {
dump, func(m_dump)
compact, func(m_compact)
nocompact, func(m_nocompact)
}
@const_object_info_end */
#include "../generate/be_fixed_solidify.h"

View File

@ -1,3 +1,12 @@
def assert_error(f, error_type)
try
f()
assert(false, 'unexpected execution flow')
except .. as e, m
assert(e == error_type)
end
end
#- basic initialization -#
b=bytes()
assert(str(b) == "bytes('')")
@ -48,18 +57,22 @@ assert(str(b) == "bytes('227878567856341278567812345678')")
#- get -#
b=bytes("000102030405")
assert(b.get(0) == 0)
assert(b.get(-1) == 0) #- could consider nil as well -#
assert(b.get(6) == 0) #- could consider nil as well -#
assert(b.get(-1) == 0x05) #- last byte -#
assert(b.get(6) == 0)
assert(b.get(1) == 1)
assert(b.get(5) == 5)
assert(b.get(-1000) == 0) # out of range, default to zero
assert(b.get(1000) == 0) # out of range, default to zero
assert(b.get(1,0) == nil)
assert(b.get(1,1) == 0x01)
assert(b.get(1,2) == 0x0201)
assert(b.get(1,4) == 0x04030201)
assert(b.get(1,-1) == 0x01)
assert(b.get(1,-2) == 0x0102) #- big endian -#
assert(b.get(1,-4) == 0x01020304)
assert(b.get(1,0) == 0) # size zero is invalid, returns zero
assert(b.get(-1000,1) == 0) # out of range, default to zero
assert(b.get(1000,1) == 0) # out of range, default to zero
#- resize -#
assert(bytes().size() == 0)
@ -76,6 +89,10 @@ assert(b.size() == 20)
b.resize(0)
assert(str(b) == "bytes('')")
assert(b.size() == 0)
b=bytes("112233")
b.resize(-5) # resize negative is equivalent to resize(0)
assert(str(b) == "bytes('')")
assert(b.size() == 0)
#- clear -#
b=bytes("aabb")
@ -110,7 +127,7 @@ assert(str(b) == "bytes('AA')")
b = b1 + '01'
assert(str(b) == "bytes('AA3031')")
#- .. and append as synonym-#
#- .. and append as synonyms -#
b1 = bytes("1122")
b2 = bytes("334455")
b = b1..b2
@ -143,6 +160,12 @@ b = bytes("334455")
assert(b[0] == 0x33)
assert(b[1] == 0x44)
assert(b[2] == 0x55)
assert(b[-1] == 0x55)
assert(b[-2] == 0x44)
assert(b[-3] == 0x33)
# out of range raises "index_error" exceptions
assert_error(def () return b[-4] end, 'index_error')
assert_error(def () return b[4] end, 'index_error')
#- item range -#
b = bytes("00112233445566778899AABBCCDDEEFF")
@ -169,6 +192,14 @@ b[0]=0xBB
assert(str(b) =="bytes('BBAA33')")
b[2]=-1
assert(str(b) =="bytes('BBAAFF')")
# negative indices, counting from end
b[-1]=0xFE
assert(str(b) =="bytes('BBAAFE')")
b[-3]=0xBC
assert(str(b) =="bytes('BCAAFE')")
# out of range raises "index_error" exceptions
assert_error(def () b[-4]=0x11 end, 'index_error')
assert_error(def () b[4]=0x11 end, 'index_error')
#- resize -#
b=bytes()
@ -191,9 +222,7 @@ b.fromstring("Aa0")
assert(str(b) =="bytes('416130')")
b=bytes()
b.fromstring("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.")
assert(str(b) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73...')")
assert(b.tostring(0) =="bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')")
assert(size(bytes('4C6F72656D20697073756D20646F6C6F722073697420616D65742C20636F6E73656374657475722061646970697363696E6720656C69742C2073656420646F20656975736D6F642074656D706F7220696E6369646964756E74207574206C61626F726520657420646F6C6F7265206D61676E6120616C697175612E')) == 123)
#- negative index -#
@ -217,6 +246,13 @@ b.setfloat(0, 0.33)
assert(b == bytes('C3F5A83E'))
b = bytes("0000C03F")
assert(b.getfloat(0) == 1.5)
b.addfloat(0.33)
assert(b == bytes("0000C03FC3F5A83E"))
b.addfloat(0.33, true) #- Big Endian -#
assert(b == bytes("0000C03FC3F5A83E3EA8F5C3"))
b = bytes("")
b.addfloat(42) #- add integer -#
assert(b == bytes("00002842"))
#- fromhex -#
b = bytes("112233")
@ -264,7 +300,7 @@ assert(bytes("0011223344").reverse(3) == bytes("0011224433"))
assert(bytes("0011223344").reverse(4) == bytes("0011223344"))
assert(bytes("0011223344").reverse(5) == bytes("0011223344"))
assert(bytes("0011223344").reverse(15) == bytes("0011223344"))
assert(bytes("0011223344").reverse(-2) == bytes("4433221100"))
assert(bytes("0011223344").reverse(-2) == bytes("0011224433")) # reverse starting 2 from end
assert(bytes("0011223344").reverse(1,3) == bytes("0033221144"))
assert(bytes("0011223344").reverse(1,0) == bytes("0011223344"))

View File

@ -44,3 +44,42 @@ m_inf2 = {"v": -math.inf}
assert(json.dump(m_inf2) == '{"v":null}')
m_v = {"v": 3.5}
assert(json.dump(m_v) == '{"v":3.5}')
# math.round
assert(math.round(3) == 3)
assert(math.round(3.2) == 3)
assert(math.round(3.5) == 4)
assert(math.round(3.6) == 4)
assert(math.round(-3) == -3)
assert(math.round(-3.2) == -3)
assert(math.round(-3.5) == -4)
assert(math.round(-3.6) == -4)
assert(math.round() == 0)
#- min and max -#
def assert_error(f, error_type)
try
f()
assert(false, 'unexpected execution flow')
except .. as e, m
assert(e == error_type)
end
end
assert(math.min() == nil)
assert(math.min(0) == 0)
assert(math.min(0,2,10,56) == 0)
assert(math.min(4, 2, -10, 3) == -10)
assert(math.min(4, 2) == 2)
# result is int unless one of the parameters is real
assert(type(math.min(4, 2, -10, 3)) == 'int')
assert(type(math.min(4, 2, -10.0, 3)) == 'real')
assert(math.min(-3.4, 5) == -3.4)
# test invalid parameters
assert_error(def () return math.min(4, nil) end, 'type_error')
assert_error(def () return math.min(4, "", 4.5) end, 'type_error')

View File

@ -0,0 +1,41 @@
import json
class bytes_build:
def __init__(self, map):
self.map = map.copy()
def build(self, path):
prefix = path + "/be_const_bytes"
self.writefile(prefix + "_def.h", self.build_bytes_def())
self.writefile(prefix + ".h", self.build_bytes_ext())
def writefile(self, filename, text):
buf = ""
try:
with open(filename) as f:
buf = f.read()
except FileNotFoundError:
pass
if buf != text:
with open(filename, "w") as f:
f.write(text)
def build_bytes_def(self):
ostr = ""
ostr += "/* binary arrays */\n"
ostr += "be_define_const_bytes_empty();\n"
for k in self.map:
ostr += "be_define_const_bytes("
ostr += k + ", " + ", ".join( [ "0x" + k[i:i+2] for i in range(0, len(k), 2)] )
ostr += ");\n"
return ostr
def build_bytes_ext(self):
ostr = ""
ostr += "/* extern binary arrays */\n"
ostr += "extern const binstance_arg3 be_const_instance_;\n"
for k in self.map:
ostr += "extern const binstance_arg3 be_const_instance_" + k + ";\n"
return ostr

View File

@ -4,6 +4,7 @@ import re
import os
from coc_parser import *
from str_build import *
from bytes_build import *
from block_builder import *
from macro_table import *
@ -20,6 +21,7 @@ class builder:
self.strmap = {}
self.strmap_weak = {}
self.strmap_long = {}
self.bytesmap = {}
self.macro = macro_table()
for path in self.config:
@ -31,6 +33,9 @@ class builder:
sb = str_build(self.strmap, self.strmap_weak, self.strmap_long)
sb.build(self.output)
sbytes = bytes_build(self.bytesmap)
sbytes.build(self.output)
def parse_file(self, filename):
if re.search(r"\.(h|c|cc|cpp)$", filename):
# print(f"> parse {filename}")
@ -45,6 +50,8 @@ class builder:
self.strmap_weak[s] = 0
for s in parser.strtab_long:
self.strmap_long[s] = 0
for s in parser.bintab:
self.bytesmap[s] = 0
for obj in parser.objects:
builder = block_builder(obj, self.macro)
for s in builder.strtab:

View File

@ -23,10 +23,12 @@ class coc_parser:
self.strtab = set()
self.strtab_weak = set()
self.strtab_long = set()
self.bintab = set()
self.text = text
self.parsers = {
"@const_object_info_begin": self.parse_object,
"be_const_str_": self.parse_string,
"be_const_bytes_instance(": self.parse_bin,
"be_const_key(": self.parse_string,
"be_nested_str(": self.parse_string,
"be_const_key_weak(": self.parse_string_weak,
@ -77,6 +79,7 @@ class coc_parser:
def parse_word(self):
self.skip_space()
r = re.match(r"\w+", self.text)
if not r: return None
self.text = self.text[r.end(0):]
return r[0]
@ -120,6 +123,7 @@ class coc_parser:
def parse_string(self):
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
ident = self.parse_word()
if not ident: return
literal = unescape_operator(ident)
if not literal in self.strtab:
self.strtab.add(literal)
@ -128,6 +132,7 @@ class coc_parser:
def parse_string_weak(self):
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
ident = self.parse_word()
if not ident: return
literal = unescape_operator(ident)
if not literal in self.strtab:
self.strtab_weak.add(literal)
@ -136,10 +141,19 @@ class coc_parser:
def parse_string_long(self):
if not self.text[0].isalnum() and self.text[0] != '_': return # do not proceed, maybe false positive in solidify
ident = self.parse_word()
if not ident: return
literal = unescape_operator(ident)
if not literal in self.strtab:
self.strtab_long.add(literal)
def parse_bin(self):
ident = self.parse_word()
if not ident: return
if not re.fullmatch(r"[0-9A-Za-z]*", ident): return
if not ident in self.bintab:
self.bintab.add(ident)
# print(f"str '{ident}' -> {literal}")
#################################################################################
# Parse a block of definition like module, class...
#################################################################################

View File

@ -3,28 +3,75 @@
* Generated code, don't edit *
\********************************************************************/
#include "be_constobj.h"
// compact class 'Animate_core' ktab size: 48, total: 98 (saved 400 bytes)
static const bvalue be_ktab_class_Animate_core[48] = {
/* K0 */ be_nested_str_weak(stop),
/* K1 */ be_nested_str_weak(strip),
/* K2 */ be_nested_str_weak(clear),
/* K3 */ be_nested_str_weak(set_bri),
/* K4 */ be_nested_str_weak(tasmota),
/* K5 */ be_nested_str_weak(scale_uint),
/* K6 */ be_nested_str_weak(bri),
/* K7 */ be_const_int(0),
/* K8 */ be_nested_str_weak(painters),
/* K9 */ be_nested_str_weak(remove),
/* K10 */ be_nested_str_weak(find),
/* K11 */ be_nested_str_weak(running),
/* K12 */ be_nested_str_weak(animators),
/* K13 */ be_const_int(1),
/* K14 */ be_nested_str_weak(remove_fast_loop),
/* K15 */ be_nested_str_weak(fast_loop_cb),
/* K16 */ be_nested_str_weak(set_strip_bri),
/* K17 */ be_nested_str_weak(push),
/* K18 */ be_nested_str_weak(time_reached),
/* K19 */ be_nested_str_weak(fast_loop_next),
/* K20 */ be_nested_str_weak(can_show),
/* K21 */ be_nested_str_weak(frame),
/* K22 */ be_nested_str_weak(fill_pixels),
/* K23 */ be_nested_str_weak(back_color),
/* K24 */ be_nested_str_weak(millis),
/* K25 */ be_nested_str_weak(FAST_LOOP_MIN),
/* K26 */ be_nested_str_weak(animate),
/* K27 */ be_nested_str_weak(layer),
/* K28 */ be_const_int(-16777216),
/* K29 */ be_nested_str_weak(paint),
/* K30 */ be_nested_str_weak(blend_pixels),
/* K31 */ be_nested_str_weak(obj),
/* K32 */ be_nested_str_weak(mth),
/* K33 */ be_nested_str_weak(paste_pixels),
/* K34 */ be_nested_str_weak(pixels_buffer),
/* K35 */ be_nested_str_weak(get_bri),
/* K36 */ be_nested_str_weak(get_gamma),
/* K37 */ be_nested_str_weak(dirty),
/* K38 */ be_nested_str_weak(show),
/* K39 */ be_nested_str_weak(global),
/* K40 */ be_nested_str_weak(_cur_anim),
/* K41 */ be_nested_str_weak(pixel_count),
/* K42 */ be_nested_str_weak(set_current),
/* K43 */ be_nested_str_weak(set_cb),
/* K44 */ be_nested_str_weak(set_back_color),
/* K45 */ be_nested_str_weak(add_animator),
/* K46 */ be_nested_str_weak(start),
/* K47 */ be_nested_str_weak(add_fast_loop),
};
extern const bclass be_class_Animate_core;
/********************************************************************
** Solidified function: clear
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_clear, /* name */
be_nested_proto(
3, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(stop),
/* K1 */ be_nested_str_weak(strip),
/* K2 */ be_nested_str_weak(clear),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(clear),
&be_const_str_solidified,
( &(const binstruction[ 6]) { /* code */
@ -43,36 +90,28 @@ be_local_closure(class_Animate_core_clear, /* name */
/********************************************************************
** Solidified function: set_strip_bri
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_strip_bri, /* name */
be_nested_proto(
10, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 6]) { /* constants */
/* K0 */ be_nested_str_weak(strip),
/* K1 */ be_nested_str_weak(set_bri),
/* K2 */ be_nested_str_weak(tasmota),
/* K3 */ be_nested_str_weak(scale_uint),
/* K4 */ be_nested_str_weak(bri),
/* K5 */ be_const_int(0),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_strip_bri),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x8C040301, // 0001 GETMET R1 R1 K1
0xB80E0400, // 0002 GETNGBL R3 K2
0x8C0C0703, // 0003 GETMET R3 R3 K3
0x88140104, // 0004 GETMBR R5 R0 K4
0x58180005, // 0005 LDCONST R6 K5
0x88040101, // 0000 GETMBR R1 R0 K1
0x8C040303, // 0001 GETMET R1 R1 K3
0xB80E0800, // 0002 GETNGBL R3 K4
0x8C0C0705, // 0003 GETMET R3 R3 K5
0x88140106, // 0004 GETMBR R5 R0 K6
0x58180007, // 0005 LDCONST R6 K7
0x541E0063, // 0006 LDINT R7 100
0x58200005, // 0007 LDCONST R8 K5
0x58200007, // 0007 LDCONST R8 K7
0x542600FE, // 0008 LDINT R9 255
0x7C0C0C00, // 0009 CALL R3 6
0x7C040400, // 000A CALL R1 2
@ -86,37 +125,31 @@ be_local_closure(class_Animate_core_set_strip_bri, /* name */
/********************************************************************
** Solidified function: remove_painter
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_remove_painter, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(painters),
/* K1 */ be_nested_str_weak(remove),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(clear),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(remove_painter),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x88080108, // 0000 GETMBR R2 R0 K8
0x4C0C0000, // 0001 LDNIL R3
0x200C0203, // 0002 NE R3 R1 R3
0x780E0005, // 0003 JMPF R3 #000A
0x8C0C0501, // 0004 GETMET R3 R2 K1
0x8C140502, // 0005 GETMET R5 R2 K2
0x8C0C0509, // 0004 GETMET R3 R2 K9
0x8C14050A, // 0005 GETMET R5 R2 K10
0x5C1C0200, // 0006 MOVE R7 R1
0x7C140400, // 0007 CALL R5 2
0x7C0C0400, // 0008 CALL R3 2
0x70020001, // 0009 JMP #000C
0x8C0C0503, // 000A GETMET R3 R2 K3
0x8C0C0502, // 000A GETMET R3 R2 K2
0x7C0C0200, // 000B CALL R3 1
0x80000000, // 000C RET 0
})
@ -128,47 +161,37 @@ be_local_closure(class_Animate_core_remove_painter, /* name */
/********************************************************************
** Solidified function: stop
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_stop, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 8]) { /* constants */
/* K0 */ be_nested_str_weak(running),
/* K1 */ be_nested_str_weak(animators),
/* K2 */ be_const_int(0),
/* K3 */ be_nested_str_weak(stop),
/* K4 */ be_const_int(1),
/* K5 */ be_nested_str_weak(tasmota),
/* K6 */ be_nested_str_weak(remove_fast_loop),
/* K7 */ be_nested_str_weak(fast_loop_cb),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(stop),
&be_const_str_solidified,
( &(const binstruction[19]) { /* code */
0x50040000, // 0000 LDBOOL R1 0 0
0x90020001, // 0001 SETMBR R0 K0 R1
0x88040101, // 0002 GETMBR R1 R0 K1
0x58080002, // 0003 LDCONST R2 K2
0x90021601, // 0001 SETMBR R0 K11 R1
0x8804010C, // 0002 GETMBR R1 R0 K12
0x58080007, // 0003 LDCONST R2 K7
0x600C000C, // 0004 GETGBL R3 G12
0x5C100200, // 0005 MOVE R4 R1
0x7C0C0200, // 0006 CALL R3 1
0x140C0403, // 0007 LT R3 R2 R3
0x780E0004, // 0008 JMPF R3 #000E
0x940C0202, // 0009 GETIDX R3 R1 R2
0x8C0C0703, // 000A GETMET R3 R3 K3
0x8C0C0700, // 000A GETMET R3 R3 K0
0x7C0C0200, // 000B CALL R3 1
0x00080504, // 000C ADD R2 R2 K4
0x0008050D, // 000C ADD R2 R2 K13
0x7001FFF5, // 000D JMP #0004
0xB80E0A00, // 000E GETNGBL R3 K5
0x8C0C0706, // 000F GETMET R3 R3 K6
0x88140107, // 0010 GETMBR R5 R0 K7
0xB80E0800, // 000E GETNGBL R3 K4
0x8C0C070E, // 000F GETMET R3 R3 K14
0x8814010F, // 0010 GETMBR R5 R0 K15
0x7C0C0400, // 0011 CALL R3 2
0x80000000, // 0012 RET 0
})
@ -180,24 +203,21 @@ be_local_closure(class_Animate_core_stop, /* name */
/********************************************************************
** Solidified function: get_bri
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_get_bri, /* name */
be_nested_proto(
3, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(bri),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(get_bri),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x88080106, // 0000 GETMBR R2 R0 K6
0x80040400, // 0001 RET 1 R2
})
)
@ -208,26 +228,22 @@ be_local_closure(class_Animate_core_get_bri, /* name */
/********************************************************************
** Solidified function: set_bri
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_bri, /* name */
be_nested_proto(
4, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(bri),
/* K1 */ be_nested_str_weak(set_strip_bri),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_bri),
&be_const_str_solidified,
( &(const binstruction[ 4]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x8C080101, // 0001 GETMET R2 R0 K1
0x90020C01, // 0000 SETMBR R0 K6 R1
0x8C080110, // 0001 GETMET R2 R0 K16
0x7C080200, // 0002 CALL R2 1
0x80000000, // 0003 RET 0
})
@ -239,34 +255,29 @@ be_local_closure(class_Animate_core_set_bri, /* name */
/********************************************************************
** Solidified function: add_painter
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_add_painter, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(painters),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(push),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(add_painter),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
0x88080108, // 0000 GETMBR R2 R0 K8
0x8C08050A, // 0001 GETMET R2 R2 K10
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0003, // 0006 JMPF R2 #000B
0x88080100, // 0007 GETMBR R2 R0 K0
0x8C080502, // 0008 GETMET R2 R2 K2
0x88080108, // 0007 GETMBR R2 R0 K8
0x8C080511, // 0008 GETMET R2 R2 K17
0x5C100200, // 0009 MOVE R4 R1
0x7C080400, // 000A CALL R2 2
0x80000000, // 000B RET 0
@ -279,72 +290,42 @@ be_local_closure(class_Animate_core_add_painter, /* name */
/********************************************************************
** Solidified function: fast_loop
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_fast_loop, /* name */
be_nested_proto(
13, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[28]) { /* constants */
/* K0 */ be_nested_str_weak(running),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(time_reached),
/* K3 */ be_nested_str_weak(fast_loop_next),
/* K4 */ be_nested_str_weak(strip),
/* K5 */ be_nested_str_weak(can_show),
/* K6 */ be_nested_str_weak(frame),
/* K7 */ be_nested_str_weak(fill_pixels),
/* K8 */ be_nested_str_weak(back_color),
/* K9 */ be_const_int(0),
/* K10 */ be_nested_str_weak(millis),
/* K11 */ be_nested_str_weak(FAST_LOOP_MIN),
/* K12 */ be_nested_str_weak(animators),
/* K13 */ be_nested_str_weak(animate),
/* K14 */ be_const_int(1),
/* K15 */ be_nested_str_weak(layer),
/* K16 */ be_nested_str_weak(painters),
/* K17 */ be_const_int(-16777216),
/* K18 */ be_nested_str_weak(paint),
/* K19 */ be_nested_str_weak(blend_pixels),
/* K20 */ be_nested_str_weak(obj),
/* K21 */ be_nested_str_weak(mth),
/* K22 */ be_nested_str_weak(paste_pixels),
/* K23 */ be_nested_str_weak(pixels_buffer),
/* K24 */ be_nested_str_weak(get_bri),
/* K25 */ be_nested_str_weak(get_gamma),
/* K26 */ be_nested_str_weak(dirty),
/* K27 */ be_nested_str_weak(show),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(fast_loop),
&be_const_str_solidified,
( &(const binstruction[84]) { /* code */
0x88040100, // 0000 GETMBR R1 R0 K0
0x8804010B, // 0000 GETMBR R1 R0 K11
0x78060050, // 0001 JMPF R1 #0053
0xB8060200, // 0002 GETNGBL R1 K1
0x8C040302, // 0003 GETMET R1 R1 K2
0x880C0103, // 0004 GETMBR R3 R0 K3
0xB8060800, // 0002 GETNGBL R1 K4
0x8C040312, // 0003 GETMET R1 R1 K18
0x880C0113, // 0004 GETMBR R3 R0 K19
0x7C040400, // 0005 CALL R1 2
0x7806004B, // 0006 JMPF R1 #0053
0x88040104, // 0007 GETMBR R1 R0 K4
0x8C040305, // 0008 GETMET R1 R1 K5
0x88040101, // 0007 GETMBR R1 R0 K1
0x8C040314, // 0008 GETMET R1 R1 K20
0x7C040200, // 0009 CALL R1 1
0x78060047, // 000A JMPF R1 #0053
0x88040106, // 000B GETMBR R1 R0 K6
0x8C040307, // 000C GETMET R1 R1 K7
0x880C0108, // 000D GETMBR R3 R0 K8
0x88040115, // 000B GETMBR R1 R0 K21
0x8C040316, // 000C GETMET R1 R1 K22
0x880C0117, // 000D GETMBR R3 R0 K23
0x7C040400, // 000E CALL R1 2
0x58040009, // 000F LDCONST R1 K9
0xB80A0200, // 0010 GETNGBL R2 K1
0x8C08050A, // 0011 GETMET R2 R2 K10
0x58040007, // 000F LDCONST R1 K7
0xB80A0800, // 0010 GETNGBL R2 K4
0x8C080518, // 0011 GETMET R2 R2 K24
0x7C080200, // 0012 CALL R2 1
0x880C010B, // 0013 GETMBR R3 R0 K11
0x880C0119, // 0013 GETMBR R3 R0 K25
0x000C0403, // 0014 ADD R3 R2 R3
0x90020603, // 0015 SETMBR R0 K3 R3
0x90022603, // 0015 SETMBR R0 K19 R3
0x600C000C, // 0016 GETGBL R3 G12
0x8810010C, // 0017 GETMBR R4 R0 K12
0x7C0C0200, // 0018 CALL R3 1
@ -352,59 +333,59 @@ be_local_closure(class_Animate_core_fast_loop, /* name */
0x780E0006, // 001A JMPF R3 #0022
0x880C010C, // 001B GETMBR R3 R0 K12
0x940C0601, // 001C GETIDX R3 R3 R1
0x8C0C070D, // 001D GETMET R3 R3 K13
0x8C0C071A, // 001D GETMET R3 R3 K26
0x5C140400, // 001E MOVE R5 R2
0x7C0C0400, // 001F CALL R3 2
0x0004030E, // 0020 ADD R1 R1 K14
0x0004030D, // 0020 ADD R1 R1 K13
0x7001FFF3, // 0021 JMP #0016
0x58040009, // 0022 LDCONST R1 K9
0x880C0106, // 0023 GETMBR R3 R0 K6
0x8810010F, // 0024 GETMBR R4 R0 K15
0x58040007, // 0022 LDCONST R1 K7
0x880C0115, // 0023 GETMBR R3 R0 K21
0x8810011B, // 0024 GETMBR R4 R0 K27
0x6014000C, // 0025 GETGBL R5 G12
0x88180110, // 0026 GETMBR R6 R0 K16
0x88180108, // 0026 GETMBR R6 R0 K8
0x7C140200, // 0027 CALL R5 1
0x14140205, // 0028 LT R5 R1 R5
0x7816000D, // 0029 JMPF R5 #0038
0x8C140907, // 002A GETMET R5 R4 K7
0x581C0011, // 002B LDCONST R7 K17
0x8C140916, // 002A GETMET R5 R4 K22
0x581C001C, // 002B LDCONST R7 K28
0x7C140400, // 002C CALL R5 2
0x88140110, // 002D GETMBR R5 R0 K16
0x88140108, // 002D GETMBR R5 R0 K8
0x94140A01, // 002E GETIDX R5 R5 R1
0x8C140B12, // 002F GETMET R5 R5 K18
0x8C140B1D, // 002F GETMET R5 R5 K29
0x5C1C0800, // 0030 MOVE R7 R4
0x7C140400, // 0031 CALL R5 2
0x78160002, // 0032 JMPF R5 #0036
0x8C140713, // 0033 GETMET R5 R3 K19
0x8C14071E, // 0033 GETMET R5 R3 K30
0x5C1C0800, // 0034 MOVE R7 R4
0x7C140400, // 0035 CALL R5 2
0x0004030E, // 0036 ADD R1 R1 K14
0x0004030D, // 0036 ADD R1 R1 K13
0x7001FFEC, // 0037 JMP #0025
0x88140114, // 0038 GETMBR R5 R0 K20
0x88180115, // 0039 GETMBR R6 R0 K21
0x8814011F, // 0038 GETMBR R5 R0 K31
0x88180120, // 0039 GETMBR R6 R0 K32
0x78160003, // 003A JMPF R5 #003F
0x781A0002, // 003B JMPF R6 #003F
0x5C1C0C00, // 003C MOVE R7 R6
0x5C200A00, // 003D MOVE R8 R5
0x7C1C0200, // 003E CALL R7 1
0x8C1C010D, // 003F GETMET R7 R0 K13
0x8C1C011A, // 003F GETMET R7 R0 K26
0x7C1C0200, // 0040 CALL R7 1
0x881C0106, // 0041 GETMBR R7 R0 K6
0x8C1C0F16, // 0042 GETMET R7 R7 K22
0x88240104, // 0043 GETMBR R9 R0 K4
0x8C241317, // 0044 GETMET R9 R9 K23
0x881C0115, // 0041 GETMBR R7 R0 K21
0x8C1C0F21, // 0042 GETMET R7 R7 K33
0x88240101, // 0043 GETMBR R9 R0 K1
0x8C241322, // 0044 GETMET R9 R9 K34
0x7C240200, // 0045 CALL R9 1
0x88280104, // 0046 GETMBR R10 R0 K4
0x8C281518, // 0047 GETMET R10 R10 K24
0x88280101, // 0046 GETMBR R10 R0 K1
0x8C281523, // 0047 GETMET R10 R10 K35
0x7C280200, // 0048 CALL R10 1
0x882C0104, // 0049 GETMBR R11 R0 K4
0x8C2C1719, // 004A GETMET R11 R11 K25
0x882C0101, // 0049 GETMBR R11 R0 K1
0x8C2C1724, // 004A GETMET R11 R11 K36
0x7C2C0200, // 004B CALL R11 1
0x7C1C0800, // 004C CALL R7 4
0x881C0104, // 004D GETMBR R7 R0 K4
0x8C1C0F1A, // 004E GETMET R7 R7 K26
0x881C0101, // 004D GETMBR R7 R0 K1
0x8C1C0F25, // 004E GETMET R7 R7 K37
0x7C1C0200, // 004F CALL R7 1
0x881C0104, // 0050 GETMBR R7 R0 K4
0x8C1C0F1B, // 0051 GETMET R7 R7 K27
0x881C0101, // 0050 GETMBR R7 R0 K1
0x8C1C0F26, // 0051 GETMET R7 R7 K38
0x7C1C0200, // 0052 CALL R7 1
0x80000000, // 0053 RET 0
})
@ -416,37 +397,31 @@ be_local_closure(class_Animate_core_fast_loop, /* name */
/********************************************************************
** Solidified function: remove_animator
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_remove_animator, /* name */
be_nested_proto(
8, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(animators),
/* K1 */ be_nested_str_weak(remove),
/* K2 */ be_nested_str_weak(find),
/* K3 */ be_nested_str_weak(clear),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(remove_animator),
&be_const_str_solidified,
( &(const binstruction[13]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8808010C, // 0000 GETMBR R2 R0 K12
0x4C0C0000, // 0001 LDNIL R3
0x200C0203, // 0002 NE R3 R1 R3
0x780E0005, // 0003 JMPF R3 #000A
0x8C0C0501, // 0004 GETMET R3 R2 K1
0x8C140502, // 0005 GETMET R5 R2 K2
0x8C0C0509, // 0004 GETMET R3 R2 K9
0x8C14050A, // 0005 GETMET R5 R2 K10
0x5C1C0200, // 0006 MOVE R7 R1
0x7C140400, // 0007 CALL R5 2
0x7C0C0400, // 0008 CALL R3 2
0x70020001, // 0009 JMP #000C
0x8C0C0503, // 000A GETMET R3 R2 K3
0x8C0C0502, // 000A GETMET R3 R2 K2
0x7C0C0200, // 000B CALL R3 1
0x80000000, // 000C RET 0
})
@ -458,18 +433,17 @@ be_local_closure(class_Animate_core_remove_animator, /* name */
/********************************************************************
** Solidified function: animate
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_animate, /* name */
be_nested_proto(
1, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
0, /* has constants */
NULL, /* no const */
NULL, /* no sub protos */
1, /* has constants */
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(animate),
&be_const_str_solidified,
( &(const binstruction[ 1]) { /* code */
@ -483,26 +457,22 @@ be_local_closure(class_Animate_core_animate, /* name */
/********************************************************************
** Solidified function: set_current
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_current, /* name */
be_nested_proto(
2, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(global),
/* K1 */ be_nested_str_weak(_cur_anim),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_current),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
0xB8060000, // 0000 GETNGBL R1 K0
0x90060200, // 0001 SETMBR R1 K1 R0
0xB8064E00, // 0000 GETNGBL R1 K39
0x90065000, // 0001 SETMBR R1 K40 R0
0x80000000, // 0002 RET 0
})
)
@ -513,16 +483,15 @@ be_local_closure(class_Animate_core_set_current, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_init, /* name */
be_nested_proto(
7, /* nstack */
3, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
1, /* has sup protos */
( &(const struct bproto*[ 2]) {
( &(const struct bproto*[ 1]) {
be_nested_proto(
2, /* nstack */
0, /* argc */
@ -532,7 +501,7 @@ be_local_closure(class_Animate_core_init, /* name */
be_local_const_upval(1, 0),
}),
0, /* has sup protos */
NULL,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(fast_loop),
@ -546,63 +515,46 @@ be_local_closure(class_Animate_core_init, /* name */
0x80000000, // 0003 RET 0
})
),
&be_class_Animate_core,
}),
1, /* has constants */
( &(const bvalue[15]) { /* constants */
/* K0 */ be_nested_str_weak(animate),
/* K1 */ be_nested_str_weak(strip),
/* K2 */ be_nested_str_weak(bri),
/* K3 */ be_nested_str_weak(set_strip_bri),
/* K4 */ be_nested_str_weak(running),
/* K5 */ be_nested_str_weak(pixel_count),
/* K6 */ be_nested_str_weak(animators),
/* K7 */ be_nested_str_weak(painters),
/* K8 */ be_nested_str_weak(clear),
/* K9 */ be_nested_str_weak(frame),
/* K10 */ be_nested_str_weak(layer),
/* K11 */ be_nested_str_weak(fast_loop_cb),
/* K12 */ be_nested_str_weak(back_color),
/* K13 */ be_const_int(0),
/* K14 */ be_nested_str_weak(set_current),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[37]) { /* code */
0xA40E0000, // 0000 IMPORT R3 K0
0xA40E3400, // 0000 IMPORT R3 K26
0x90020201, // 0001 SETMBR R0 K1 R1
0x4C100000, // 0002 LDNIL R4
0x1C100404, // 0003 EQ R4 R2 R4
0x78120000, // 0004 JMPF R4 #0006
0x540A0031, // 0005 LDINT R2 50
0x90020402, // 0006 SETMBR R0 K2 R2
0x8C100103, // 0007 GETMET R4 R0 K3
0x90020C02, // 0006 SETMBR R0 K6 R2
0x8C100110, // 0007 GETMET R4 R0 K16
0x7C100200, // 0008 CALL R4 1
0x50100000, // 0009 LDBOOL R4 0 0
0x90020804, // 000A SETMBR R0 K4 R4
0x8C100305, // 000B GETMET R4 R1 K5
0x90021604, // 000A SETMBR R0 K11 R4
0x8C100329, // 000B GETMET R4 R1 K41
0x7C100200, // 000C CALL R4 1
0x90020A04, // 000D SETMBR R0 K5 R4
0x90025204, // 000D SETMBR R0 K41 R4
0x60100012, // 000E GETGBL R4 G18
0x7C100000, // 000F CALL R4 0
0x90020C04, // 0010 SETMBR R0 K6 R4
0x90021804, // 0010 SETMBR R0 K12 R4
0x60100012, // 0011 GETGBL R4 G18
0x7C100000, // 0012 CALL R4 0
0x90020E04, // 0013 SETMBR R0 K7 R4
0x8C100108, // 0014 GETMET R4 R0 K8
0x90021004, // 0013 SETMBR R0 K8 R4
0x8C100102, // 0014 GETMET R4 R0 K2
0x7C100200, // 0015 CALL R4 1
0x8C100709, // 0016 GETMET R4 R3 K9
0x88180105, // 0017 GETMBR R6 R0 K5
0x8C100715, // 0016 GETMET R4 R3 K21
0x88180129, // 0017 GETMBR R6 R0 K41
0x7C100400, // 0018 CALL R4 2
0x90021204, // 0019 SETMBR R0 K9 R4
0x8C100709, // 001A GETMET R4 R3 K9
0x88180105, // 001B GETMBR R6 R0 K5
0x90022A04, // 0019 SETMBR R0 K21 R4
0x8C100715, // 001A GETMET R4 R3 K21
0x88180129, // 001B GETMBR R6 R0 K41
0x7C100400, // 001C CALL R4 2
0x90021404, // 001D SETMBR R0 K10 R4
0x90023604, // 001D SETMBR R0 K27 R4
0x84100000, // 001E CLOSURE R4 P0
0x90021604, // 001F SETMBR R0 K11 R4
0x9002190D, // 0020 SETMBR R0 K12 K13
0x8C10010E, // 0021 GETMET R4 R0 K14
0x90021E04, // 001F SETMBR R0 K15 R4
0x90022F07, // 0020 SETMBR R0 K23 K7
0x8C10012A, // 0021 GETMET R4 R0 K42
0x7C100200, // 0022 CALL R4 1
0xA0000000, // 0023 CLOSE R0
0x80000000, // 0024 RET 0
@ -615,26 +567,22 @@ be_local_closure(class_Animate_core_init, /* name */
/********************************************************************
** Solidified function: set_cb
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_cb, /* name */
be_nested_proto(
3, /* nstack */
3, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 2]) { /* constants */
/* K0 */ be_nested_str_weak(obj),
/* K1 */ be_nested_str_weak(mth),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_cb),
&be_const_str_solidified,
( &(const binstruction[ 3]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020202, // 0001 SETMBR R0 K1 R2
0x90023E01, // 0000 SETMBR R0 K31 R1
0x90024002, // 0001 SETMBR R0 K32 R2
0x80000000, // 0002 RET 0
})
)
@ -645,24 +593,21 @@ be_local_closure(class_Animate_core_set_cb, /* name */
/********************************************************************
** Solidified function: set_back_color
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_set_back_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(back_color),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(set_back_color),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90022E01, // 0000 SETMBR R0 K23 R1
0x80000000, // 0001 RET 0
})
)
@ -673,30 +618,25 @@ be_local_closure(class_Animate_core_set_back_color, /* name */
/********************************************************************
** Solidified function: add_background_animator
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_add_background_animator, /* name */
be_nested_proto(
6, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(set_cb),
/* K1 */ be_nested_str_weak(set_back_color),
/* K2 */ be_nested_str_weak(add_animator),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(add_background_animator),
&be_const_str_solidified,
( &(const binstruction[ 8]) { /* code */
0x8C080300, // 0000 GETMET R2 R1 K0
0x8C08032B, // 0000 GETMET R2 R1 K43
0x5C100000, // 0001 MOVE R4 R0
0x88140101, // 0002 GETMBR R5 R0 K1
0x8814012C, // 0002 GETMBR R5 R0 K44
0x7C080600, // 0003 CALL R2 3
0x8C080102, // 0004 GETMET R2 R0 K2
0x8C08012D, // 0004 GETMET R2 R0 K45
0x5C100200, // 0005 MOVE R4 R1
0x7C080400, // 0006 CALL R2 2
0x80000000, // 0007 RET 0
@ -709,34 +649,29 @@ be_local_closure(class_Animate_core_add_background_animator, /* name */
/********************************************************************
** Solidified function: add_animator
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_add_animator, /* name */
be_nested_proto(
5, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(animators),
/* K1 */ be_nested_str_weak(find),
/* K2 */ be_nested_str_weak(push),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(add_animator),
&be_const_str_solidified,
( &(const binstruction[12]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x8C080501, // 0001 GETMET R2 R2 K1
0x8808010C, // 0000 GETMBR R2 R0 K12
0x8C08050A, // 0001 GETMET R2 R2 K10
0x5C100200, // 0002 MOVE R4 R1
0x7C080400, // 0003 CALL R2 2
0x4C0C0000, // 0004 LDNIL R3
0x1C080403, // 0005 EQ R2 R2 R3
0x780A0003, // 0006 JMPF R2 #000B
0x88080100, // 0007 GETMBR R2 R0 K0
0x8C080502, // 0008 GETMET R2 R2 K2
0x8808010C, // 0007 GETMBR R2 R0 K12
0x8C080511, // 0008 GETMET R2 R2 K17
0x5C100200, // 0009 MOVE R4 R1
0x7C080400, // 000A CALL R2 2
0x80000000, // 000B RET 0
@ -749,31 +684,25 @@ be_local_closure(class_Animate_core_add_animator, /* name */
/********************************************************************
** Solidified function: remove
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_remove, /* name */
be_nested_proto(
4, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 4]) { /* constants */
/* K0 */ be_nested_str_weak(clear),
/* K1 */ be_nested_str_weak(tasmota),
/* K2 */ be_nested_str_weak(remove_fast_loop),
/* K3 */ be_nested_str_weak(fast_loop_cb),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(remove),
&be_const_str_solidified,
( &(const binstruction[ 7]) { /* code */
0x8C040100, // 0000 GETMET R1 R0 K0
0x8C040102, // 0000 GETMET R1 R0 K2
0x7C040200, // 0001 CALL R1 1
0xB8060200, // 0002 GETNGBL R1 K1
0x8C040302, // 0003 GETMET R1 R1 K2
0x880C0103, // 0004 GETMBR R3 R0 K3
0xB8060800, // 0002 GETNGBL R1 K4
0x8C04030E, // 0003 GETMET R1 R1 K14
0x880C010F, // 0004 GETMBR R3 R0 K15
0x7C040400, // 0005 CALL R1 2
0x80000000, // 0006 RET 0
})
@ -785,49 +714,38 @@ be_local_closure(class_Animate_core_remove, /* name */
/********************************************************************
** Solidified function: start
********************************************************************/
extern const bclass be_class_Animate_core;
be_local_closure(class_Animate_core_start, /* name */
be_nested_proto(
6, /* nstack */
1, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_core,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 9]) { /* constants */
/* K0 */ be_nested_str_weak(running),
/* K1 */ be_nested_str_weak(animators),
/* K2 */ be_const_int(0),
/* K3 */ be_nested_str_weak(start),
/* K4 */ be_const_int(1),
/* K5 */ be_nested_str_weak(fast_loop_next),
/* K6 */ be_nested_str_weak(tasmota),
/* K7 */ be_nested_str_weak(add_fast_loop),
/* K8 */ be_nested_str_weak(fast_loop_cb),
}),
&be_ktab_class_Animate_core, /* shared constants */
be_str_weak(start),
&be_const_str_solidified,
( &(const binstruction[20]) { /* code */
0x50040200, // 0000 LDBOOL R1 1 0
0x90020001, // 0001 SETMBR R0 K0 R1
0x88040101, // 0002 GETMBR R1 R0 K1
0x58080002, // 0003 LDCONST R2 K2
0x90021601, // 0001 SETMBR R0 K11 R1
0x8804010C, // 0002 GETMBR R1 R0 K12
0x58080007, // 0003 LDCONST R2 K7
0x600C000C, // 0004 GETGBL R3 G12
0x5C100200, // 0005 MOVE R4 R1
0x7C0C0200, // 0006 CALL R3 1
0x140C0403, // 0007 LT R3 R2 R3
0x780E0004, // 0008 JMPF R3 #000E
0x940C0202, // 0009 GETIDX R3 R1 R2
0x8C0C0703, // 000A GETMET R3 R3 K3
0x8C0C072E, // 000A GETMET R3 R3 K46
0x7C0C0200, // 000B CALL R3 1
0x00080504, // 000C ADD R2 R2 K4
0x0008050D, // 000C ADD R2 R2 K13
0x7001FFF5, // 000D JMP #0004
0x90020B02, // 000E SETMBR R0 K5 K2
0xB80E0C00, // 000F GETNGBL R3 K6
0x8C0C0707, // 0010 GETMET R3 R3 K7
0x88140108, // 0011 GETMBR R5 R0 K8
0x90022707, // 000E SETMBR R0 K19 K7
0xB80E0800, // 000F GETNGBL R3 K4
0x8C0C072F, // 0010 GETMET R3 R3 K47
0x8814010F, // 0011 GETMBR R5 R0 K15
0x7C0C0400, // 0012 CALL R3 2
0x80000000, // 0013 RET 0
})

View File

@ -9,7 +9,6 @@ extern const bclass be_class_Animate_painter;
/********************************************************************
** Solidified function: init
********************************************************************/
extern const bclass be_class_Animate_painter;
be_local_closure(class_Animate_painter_init, /* name */
be_nested_proto(
5, /* nstack */
@ -18,7 +17,7 @@ be_local_closure(class_Animate_painter_init, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_painter,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 3]) { /* constants */
/* K0 */ be_nested_str_weak(global),
@ -46,7 +45,6 @@ be_local_closure(class_Animate_painter_init, /* name */
/********************************************************************
** Solidified function: paint
********************************************************************/
extern const bclass be_class_Animate_painter;
be_local_closure(class_Animate_painter_paint, /* name */
be_nested_proto(
2, /* nstack */
@ -55,7 +53,7 @@ be_local_closure(class_Animate_painter_paint, /* name */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_painter,
NULL, /* no sub protos */
0, /* has constants */
NULL, /* no const */
be_str_weak(paint),
@ -81,26 +79,42 @@ be_local_class(Animate_painter,
})),
be_str_weak(Animate_painter)
);
// compact class 'Animate_pulse' ktab size: 15, total: 28 (saved 104 bytes)
static const bvalue be_ktab_class_Animate_pulse[15] = {
/* K0 */ be_nested_str_weak(pulse_size),
/* K1 */ be_nested_str_weak(slew_size),
/* K2 */ be_nested_str_weak(back_color),
/* K3 */ be_nested_str_weak(pos),
/* K4 */ be_nested_str_weak(color),
/* K5 */ be_nested_str_weak(init),
/* K6 */ be_const_int(16777215),
/* K7 */ be_const_int(1),
/* K8 */ be_const_int(0),
/* K9 */ be_const_int(-16777216),
/* K10 */ be_nested_str_weak(fill_pixels),
/* K11 */ be_nested_str_weak(pixel_size),
/* K12 */ be_nested_str_weak(blend),
/* K13 */ be_nested_str_weak(tasmota),
/* K14 */ be_nested_str_weak(scale_int),
};
extern const bclass be_class_Animate_pulse;
/********************************************************************
** Solidified function: set_pulse_size
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_pulse_size, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(pulse_size),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_pulse_size),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
@ -115,24 +129,21 @@ be_local_closure(class_Animate_pulse_set_pulse_size, /* name */
/********************************************************************
** Solidified function: set_slew_size
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_slew_size, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(slew_size),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_slew_size),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020201, // 0000 SETMBR R0 K1 R1
0x80000000, // 0001 RET 0
})
)
@ -143,24 +154,21 @@ be_local_closure(class_Animate_pulse_set_slew_size, /* name */
/********************************************************************
** Solidified function: set_back_color
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_back_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(back_color),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_back_color),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020401, // 0000 SETMBR R0 K2 R1
0x80000000, // 0001 RET 0
})
)
@ -171,24 +179,21 @@ be_local_closure(class_Animate_pulse_set_back_color, /* name */
/********************************************************************
** Solidified function: set_pos
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_pos, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(pos),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_pos),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020601, // 0000 SETMBR R0 K3 R1
0x80000000, // 0001 RET 0
})
)
@ -199,24 +204,21 @@ be_local_closure(class_Animate_pulse_set_pos, /* name */
/********************************************************************
** Solidified function: set_color
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_set_color, /* name */
be_nested_proto(
2, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[ 1]) { /* constants */
/* K0 */ be_nested_str_weak(color),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(set_color),
&be_const_str_solidified,
( &(const binstruction[ 2]) { /* code */
0x90020001, // 0000 SETMBR R0 K0 R1
0x90020801, // 0000 SETMBR R0 K4 R1
0x80000000, // 0001 RET 0
})
)
@ -227,60 +229,48 @@ be_local_closure(class_Animate_pulse_set_color, /* name */
/********************************************************************
** Solidified function: init
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_init, /* name */
be_nested_proto(
6, /* nstack */
4, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[10]) { /* constants */
/* K0 */ be_nested_str_weak(init),
/* K1 */ be_const_int(16777215),
/* K2 */ be_const_int(1),
/* K3 */ be_const_int(0),
/* K4 */ be_nested_str_weak(color),
/* K5 */ be_nested_str_weak(back_color),
/* K6 */ be_const_int(-16777216),
/* K7 */ be_nested_str_weak(pulse_size),
/* K8 */ be_nested_str_weak(slew_size),
/* K9 */ be_nested_str_weak(pos),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(init),
&be_const_str_solidified,
( &(const binstruction[29]) { /* code */
0x60100003, // 0000 GETGBL R4 G3
0x5C140000, // 0001 MOVE R5 R0
0x7C100200, // 0002 CALL R4 1
0x8C100900, // 0003 GETMET R4 R4 K0
0x8C100905, // 0003 GETMET R4 R4 K5
0x7C100200, // 0004 CALL R4 1
0x4C100000, // 0005 LDNIL R4
0x1C100204, // 0006 EQ R4 R1 R4
0x78120000, // 0007 JMPF R4 #0009
0x58040001, // 0008 LDCONST R1 K1
0x58040006, // 0008 LDCONST R1 K6
0x4C100000, // 0009 LDNIL R4
0x1C100404, // 000A EQ R4 R2 R4
0x78120000, // 000B JMPF R4 #000D
0x58080002, // 000C LDCONST R2 K2
0x58080007, // 000C LDCONST R2 K7
0x4C100000, // 000D LDNIL R4
0x1C100604, // 000E EQ R4 R3 R4
0x78120000, // 000F JMPF R4 #0011
0x580C0003, // 0010 LDCONST R3 K3
0x580C0008, // 0010 LDCONST R3 K8
0x90020801, // 0011 SETMBR R0 K4 R1
0x90020B06, // 0012 SETMBR R0 K5 K6
0x14100503, // 0013 LT R4 R2 K3
0x90020509, // 0012 SETMBR R0 K2 K9
0x14100508, // 0013 LT R4 R2 K8
0x78120000, // 0014 JMPF R4 #0016
0x58080003, // 0015 LDCONST R2 K3
0x90020E02, // 0016 SETMBR R0 K7 R2
0x14100703, // 0017 LT R4 R3 K3
0x58080008, // 0015 LDCONST R2 K8
0x90020002, // 0016 SETMBR R0 K0 R2
0x14100708, // 0017 LT R4 R3 K8
0x78120000, // 0018 JMPF R4 #001A
0x580C0003, // 0019 LDCONST R3 K3
0x90021003, // 001A SETMBR R0 K8 R3
0x90021303, // 001B SETMBR R0 K9 K3
0x580C0008, // 0019 LDCONST R3 K8
0x90020203, // 001A SETMBR R0 K1 R3
0x90020708, // 001B SETMBR R0 K3 K8
0x80000000, // 001C RET 0
})
)
@ -291,46 +281,31 @@ be_local_closure(class_Animate_pulse_init, /* name */
/********************************************************************
** Solidified function: paint
********************************************************************/
extern const bclass be_class_Animate_pulse;
be_local_closure(class_Animate_pulse_paint, /* name */
be_nested_proto(
22, /* nstack */
2, /* argc */
2, /* varg */
10, /* varg */
0, /* has upvals */
NULL, /* no upvals */
0, /* has sup protos */
&be_class_Animate_pulse,
NULL, /* no sub protos */
1, /* has constants */
( &(const bvalue[13]) { /* constants */
/* K0 */ be_nested_str_weak(back_color),
/* K1 */ be_const_int(-16777216),
/* K2 */ be_nested_str_weak(fill_pixels),
/* K3 */ be_nested_str_weak(pos),
/* K4 */ be_nested_str_weak(slew_size),
/* K5 */ be_nested_str_weak(pulse_size),
/* K6 */ be_nested_str_weak(color),
/* K7 */ be_nested_str_weak(pixel_size),
/* K8 */ be_const_int(0),
/* K9 */ be_const_int(1),
/* K10 */ be_nested_str_weak(blend),
/* K11 */ be_nested_str_weak(tasmota),
/* K12 */ be_nested_str_weak(scale_int),
}),
&be_ktab_class_Animate_pulse, /* shared constants */
be_str_weak(paint),
&be_const_str_solidified,
( &(const binstruction[91]) { /* code */
0x88080100, // 0000 GETMBR R2 R0 K0
0x200C0501, // 0001 NE R3 R2 K1
0x88080102, // 0000 GETMBR R2 R0 K2
0x200C0509, // 0001 NE R3 R2 K9
0x780E0002, // 0002 JMPF R3 #0006
0x8C0C0302, // 0003 GETMET R3 R1 K2
0x8C0C030A, // 0003 GETMET R3 R1 K10
0x5C140400, // 0004 MOVE R5 R2
0x7C0C0400, // 0005 CALL R3 2
0x880C0103, // 0006 GETMBR R3 R0 K3
0x88100104, // 0007 GETMBR R4 R0 K4
0x88140105, // 0008 GETMBR R5 R0 K5
0x88180106, // 0009 GETMBR R6 R0 K6
0x881C0307, // 000A GETMBR R7 R1 K7
0x88100101, // 0007 GETMBR R4 R0 K1
0x88140100, // 0008 GETMBR R5 R0 K0
0x88180104, // 0009 GETMBR R6 R0 K4
0x881C030B, // 000A GETMBR R7 R1 K11
0x4C200000, // 000B LDNIL R8
0x4C240000, // 000C LDNIL R9
0x5C200600, // 000D MOVE R8 R3
@ -346,7 +321,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x142C1409, // 0017 LT R11 R10 R9
0x782E0002, // 0018 JMPF R11 #001C
0x98041406, // 0019 SETIDX R1 R10 R6
0x00281509, // 001A ADD R10 R10 K9
0x00281507, // 001A ADD R10 R10 K7
0x7001FFFA, // 001B JMP #0017
0x242C0908, // 001C GT R11 R4 K8
0x782E003A, // 001D JMPF R11 #0059
@ -362,21 +337,21 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x5C281000, // 0027 MOVE R10 R8
0x142C1409, // 0028 LT R11 R10 R9
0x782E000F, // 0029 JMPF R11 #003A
0x8C2C030A, // 002A GETMET R11 R1 K10
0x8C2C030C, // 002A GETMET R11 R1 K12
0x5C340400, // 002B MOVE R13 R2
0x5C380C00, // 002C MOVE R14 R6
0xB83E1600, // 002D GETNGBL R15 K11
0x8C3C1F0C, // 002E GETMET R15 R15 K12
0xB83E1A00, // 002D GETNGBL R15 K13
0x8C3C1F0E, // 002E GETMET R15 R15 K14
0x5C441400, // 002F MOVE R17 R10
0x04480604, // 0030 SUB R18 R3 R4
0x04482509, // 0031 SUB R18 R18 K9
0x04482507, // 0031 SUB R18 R18 K7
0x5C4C0600, // 0032 MOVE R19 R3
0x545200FE, // 0033 LDINT R20 255
0x58540008, // 0034 LDCONST R21 K8
0x7C3C0C00, // 0035 CALL R15 6
0x7C2C0800, // 0036 CALL R11 4
0x9804140B, // 0037 SETIDX R1 R10 R11
0x00281509, // 0038 ADD R10 R10 K9
0x00281507, // 0038 ADD R10 R10 K7
0x7001FFED, // 0039 JMP #0028
0x002C0605, // 003A ADD R11 R3 R5
0x5C201600, // 003B MOVE R8 R11
@ -392,14 +367,14 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x5C281000, // 0045 MOVE R10 R8
0x142C1409, // 0046 LT R11 R10 R9
0x782E0010, // 0047 JMPF R11 #0059
0x8C2C030A, // 0048 GETMET R11 R1 K10
0x8C2C030C, // 0048 GETMET R11 R1 K12
0x5C340400, // 0049 MOVE R13 R2
0x5C380C00, // 004A MOVE R14 R6
0xB83E1600, // 004B GETNGBL R15 K11
0x8C3C1F0C, // 004C GETMET R15 R15 K12
0xB83E1A00, // 004B GETNGBL R15 K13
0x8C3C1F0E, // 004C GETMET R15 R15 K14
0x5C441400, // 004D MOVE R17 R10
0x00480605, // 004E ADD R18 R3 R5
0x04482509, // 004F SUB R18 R18 K9
0x04482507, // 004F SUB R18 R18 K7
0x004C0605, // 0050 ADD R19 R3 R5
0x004C2604, // 0051 ADD R19 R19 R4
0x58500008, // 0052 LDCONST R20 K8
@ -407,7 +382,7 @@ be_local_closure(class_Animate_pulse_paint, /* name */
0x7C3C0C00, // 0054 CALL R15 6
0x7C2C0800, // 0055 CALL R11 4
0x9804140B, // 0056 SETIDX R1 R10 R11
0x00281509, // 0057 ADD R10 R10 K9
0x00281507, // 0057 ADD R10 R10 K7
0x7001FFEC, // 0058 JMP #0046
0x502C0200, // 0059 LDBOOL R11 1 0
0x80041600, // 005A RET 1 R11

Some files were not shown because too many files have changed in this diff Show More