Merge "platform/target: msm8996: Add support for new memory map"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 0b9fd12..6f72f15 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -63,6 +63,10 @@
#include <rpmb.h>
#endif
+#if ENABLE_WBC
+#include <pm_app_smbchg.h>
+#endif
+
#if DEVICE_TREE
#include <libfdt.h>
#include <dev_tree.h>
@@ -3187,7 +3191,14 @@
if (!check_alarm_boot()) {
#endif
dprintf(SPEW, "Display Init: Start\n");
+#if ENABLE_WBC
+ if (!pm_appsbl_display_init_done())
+ target_display_init(device.display_panel);
+ else
+ display_image_on_screen();
+#else
target_display_init(device.display_panel);
+#endif
dprintf(SPEW, "Display Init: Done\n");
#if NO_ALARM_DISPLAY
}
diff --git a/dev/fbcon/fbcon.c b/dev/fbcon/fbcon.c
index 4010f1b..885ce87 100644
--- a/dev/fbcon/fbcon.c
+++ b/dev/fbcon/fbcon.c
@@ -36,6 +36,9 @@
#include <platform.h>
#include <string.h>
#include <arch/ops.h>
+#if ENABLE_WBC
+#include <pm_app_smbchg.h>
+#endif
#include "font5x12.h"
@@ -339,6 +342,9 @@
unsigned total_y;
unsigned bytes_per_bpp;
unsigned image_base;
+#if DISPLAY_TYPE_MIPI
+ char *image = NULL;
+#endif
if (!config) {
dprintf(CRITICAL,"NULL configuration, image cannot be displayed\n");
@@ -354,10 +360,16 @@
(config->width)) + (total_x/2 - (SPLASH_IMAGE_WIDTH / 2)));
#if DISPLAY_TYPE_MIPI
+#if ENABLE_WBC
+ image = (pm_appsbl_charging_in_progress() ? image_batt888 : imageBuffer_rgb888);
+#else
+ image = imageBuffer_rgb888;
+#endif
+
if (bytes_per_bpp == 3) {
for (i = 0; i < SPLASH_IMAGE_HEIGHT; i++) {
memcpy (config->base + ((image_base + (i * (config->width))) * bytes_per_bpp),
- imageBuffer_rgb888 + (i * SPLASH_IMAGE_WIDTH * bytes_per_bpp),
+ image + (i * SPLASH_IMAGE_WIDTH * bytes_per_bpp),
SPLASH_IMAGE_WIDTH * bytes_per_bpp);
}
}
diff --git a/dev/pmic/pm8x41/include/pm8x41.h b/dev/pmic/pm8x41/include/pm8x41.h
index 9278470..59d0fca 100644
--- a/dev/pmic/pm8x41/include/pm8x41.h
+++ b/dev/pmic/pm8x41/include/pm8x41.h
@@ -239,4 +239,6 @@
void pmi8994_config_mpp_slave_id(uint8_t slave_id);
void pm_pwm_enable(bool enable);
int pm_pwm_config(unsigned int duty_us, unsigned int period_us);
+uint32_t spmi_reg_read(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority);
+uint32_t spmi_reg_write(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority);
#endif
diff --git a/dev/pmic/pm8x41/include/pm8x41_hw.h b/dev/pmic/pm8x41/include/pm8x41_hw.h
index 2bae818..03e30eb 100644
--- a/dev/pmic/pm8x41/include/pm8x41_hw.h
+++ b/dev/pmic/pm8x41/include/pm8x41_hw.h
@@ -29,6 +29,10 @@
#ifndef _PM8x41_HW_H_
#define _PM8x41_HW_H_
+#include <stdint.h>
+#include <sys/types.h>
+
+
/* SMBB Registers */
#define SMBB_MISC_BOOT_DONE 0x1642
diff --git a/dev/pmic/pm8x41/pm8x41.c b/dev/pmic/pm8x41/pm8x41.c
index 0a43bff..4ce9869 100644
--- a/dev/pmic/pm8x41/pm8x41.c
+++ b/dev/pmic/pm8x41/pm8x41.c
@@ -77,6 +77,40 @@
return val;
}
+uint32_t spmi_reg_read(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority)
+{
+ struct pmic_arb_cmd cmd;
+ struct pmic_arb_param param;
+
+ cmd.address = PERIPH_ID(addr);
+ cmd.offset = REG_OFFSET(addr);
+ cmd.slave_id = slave_id;
+
+ cmd.priority = priority;
+
+ param.buffer = data;
+ param.size = 1;
+
+ return pmic_arb_read_cmd(&cmd, ¶m);
+}
+
+uint32_t spmi_reg_write(uint32_t slave_id, uint16_t addr, uint8_t *data, uint8_t priority)
+{
+ struct pmic_arb_cmd cmd;
+ struct pmic_arb_param param;
+
+ cmd.address = PERIPH_ID(addr);
+ cmd.offset = REG_OFFSET(addr);
+ cmd.slave_id = slave_id;
+
+ cmd.priority = priority;
+
+ param.buffer = data;
+ param.size = 1;
+
+ return pmic_arb_write_cmd(&cmd, ¶m);
+}
+
/* SPMI helper function which takes slave id as the i/p */
void pm8xxx_reg_write(uint8_t slave_id, uint32_t addr, uint8_t val)
{
diff --git a/dev/pmic/pmi8994/include/pm_app_smbchg.h b/dev/pmic/pmi8994/include/pm_app_smbchg.h
new file mode 100644
index 0000000..bfc12ca
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_app_smbchg.h
@@ -0,0 +1,205 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_APP_SMBCHG__H
+#define PM_APP_SMBCHG__H
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+
+#include "pm_err_flags.h"
+#include "pm_smbchg_bat_if.h"
+#include "pm_smbchg_misc.h"
+#include "pm_smbchg_usb_chgpth.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+ GLOBAL DEFINES
+
+===========================================================================*/
+
+
+
+/*===========================================================================
+
+ GLOBAL TYPE DEFINITIONS
+
+===========================================================================*/
+typedef struct
+{
+ pm_smbchg_bat_if_low_bat_thresh_type vlowbatt_threshold;
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_vlowbatt_threshold_data_type;
+
+typedef struct
+{
+ pm_smbchg_chgpth_input_priority_type chgpth_input_priority; //0=DCIN; 1=USBIN
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_chgpth_input_priority_data_type;
+
+
+typedef struct
+{
+ pm_smbchg_bat_miss_detect_src_type bat_missing_detection_src;
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_bat_miss_detect_src_data_type ;
+
+
+typedef struct
+{
+ pm_smbchg_wdog_timeout_type wdog_timeout;
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_wdog_timeout_data_type;
+
+
+typedef struct
+{
+ boolean enable_wdog;
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_enable_wdog_data_type;
+
+
+typedef struct
+{
+ uint32 fast_chg_i_ma; //Valid values are 300 to 3000 mAmp
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_fast_chg_current_data_type;
+
+
+typedef struct
+{
+ uint32 pre_chg_i_ma; //Valid values are 100 to 550 mAmp
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_pre_chg_current_data_type;
+
+
+typedef struct
+{
+ uint32 pre_to_fast_chg_theshold_mv; //Valid range is 2400mV to 3000mV
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_pre_to_fast_chg_threshold_data_type;
+
+
+typedef struct
+{
+ uint32 float_volt_theshold_mv; //Valid range is 3600mV to 4500 mv
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_float_voltage_threshold_data_type;
+
+typedef struct
+{
+ uint32 usbin_input_current_limit; //Valid value is 300 to 3000mAmp
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_usbin_input_current_limit_data_type;
+
+
+typedef struct
+{
+ uint32 dcin_input_current_limit; //valid range is 300 to 2000 mAmp
+ pm_smbchg_param_config_enable_type enable_config;
+} pm_smbchg_dcin_input_current_limit_data_type;
+
+
+
+
+typedef struct
+{
+ pm_smbchg_vlowbatt_threshold_data_type dbc_bootup_volt_threshold;
+ pm_smbchg_chgpth_input_priority_data_type chgpth_input_priority;
+ pm_smbchg_bat_miss_detect_src_data_type bat_miss_detect_src;
+ pm_smbchg_wdog_timeout_data_type wdog_timeout;
+ pm_smbchg_enable_wdog_data_type enable_wdog;
+ pm_smbchg_fast_chg_current_data_type fast_chg_i;
+ pm_smbchg_pre_chg_current_data_type pre_chg_i;
+ pm_smbchg_pre_to_fast_chg_threshold_data_type pre_to_fast_chg_theshold_mv;
+ pm_smbchg_float_voltage_threshold_data_type float_volt_theshold_mv;
+ pm_smbchg_usbin_input_current_limit_data_type usbin_input_current_limit;
+ pm_smbchg_dcin_input_current_limit_data_type dcin_input_current_limit;
+ uint32 bootup_battery_theshold_mv;
+ uint32 wipwr_bootup_battery_theshold_mv;
+ boolean enable_jeita_hard_limit_check;
+} pm_smbchg_specific_data_type;
+
+
+
+/*===========================================================================
+
+ PROTOTYPES
+
+===========================================================================*/
+/**
+ * @name
+ * pm_sbl_chg_config_vbat_low_threshold
+ *
+ * @description
+ * This function configures battery charge status
+ *
+ * @param
+ * None
+ *
+ * @return
+ * pm_err_flag_type
+ *
+ * @dependency
+ * The following function must have been called:
+ * pm_target_information_init()
+ */
+pm_err_flag_type pm_appsbl_chg_config_vbat_low_threshold(uint32 device_index, pm_smbchg_specific_data_type *chg_param_ptr);
+
+
+
+/**
+ * @name
+ * pm_sbl_chg_check_weak_battery_status
+ *
+ * @description
+ * This function checks the battery charge status
+ *
+ * @param
+ * None
+ *
+ * @return
+ * pm_err_flag_type
+ *
+ * @dependency
+ * The following function must have been called:
+ * pm_driver_init()
+ */
+pm_err_flag_type pm_appsbl_chg_check_weak_battery_status(uint32 device_index);
+
+void *pm_target_information_get_specific_info();
+void *pm_target_chg_range_data();
+bool pm_appsbl_display_init_done();
+bool pm_appsbl_charging_in_progress();
+pm_err_flag_type pm_appsbl_set_dcin_suspend();
+#endif //PM_APP_SMBCHG__H
+
diff --git a/dev/pmic/pmi8994/include/pm_comm.h b/dev/pmic/pmi8994/include/pm_comm.h
new file mode 100644
index 0000000..6c7738d
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_comm.h
@@ -0,0 +1,131 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_COMM_H
+#define PM_COMM_H
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+
+#include "pm_resources_and_types.h"
+#include "pm_err_flags.h"
+
+/*===========================================================================
+
+ FUNCTION PROTOTYPES
+
+===========================================================================*/
+ typedef enum CommType
+{
+ FIRST_INVALID_COMM_INTERFACE = -1,
+ SPMI_1_0Type,
+ Transcomm_Type,
+ SSBI_2_0TypeLite = 0 ,
+ SSBI_2_0Type,
+ INVALID_COMM_INTERFACE
+}CommType;
+
+ /**
+ @struct pm_comm_info_type
+ @brief This struct is used to store the PMIC Comm
+ information.
+ */
+typedef struct
+{
+ uint32 slave_id;
+ uint32 pmic_index;
+ CommType mCommType;
+}pm_comm_info_type;
+
+
+
+/*! \brief This function initializes the comm info structure
+ * \param[in] None
+ *
+ * \return None.
+ *
+ * <b>Dependencies</b>
+ * \li DAL framework.
+ */
+void pm_comm_info_init(void);
+
+
+/*! \brief This function returns the comminfo struct(periph slave id, commtype)
+ * \param[in] pmic_chip_index - pmic index from the total num of pmics
+ *
+ *\param[in] slave_id_index - primary / secondary slave
+ *
+ * \return pm_comm_info_type.
+ *
+ */
+
+pm_comm_info_type* pm_comm_get_comm_info(uint32 pmic_chip_index, uint32 slave_id_index);
+
+
+pm_err_flag_type pm_comm_read_byte(uint32 slave_id ,
+ uint32 addr,
+ uint8* data,
+ uint8 priority);
+
+pm_err_flag_type pm_comm_read_byte_mask(uint32 slave_id ,
+ uint32 addr,
+ uint8 mask,
+ uint8* data,
+ uint8 priority);
+
+pm_err_flag_type pm_comm_write_byte(uint32 slave_id ,
+ uint32 addr,
+ uint8 data,
+ uint8 priority);
+
+pm_err_flag_type pm_comm_write_byte_mask(uint32 slave_id ,
+ uint32 addr,
+ uint8 mask,
+ uint8 value,
+ uint8 priority);
+
+#ifndef LK
+pm_err_flag_type pm_comm_write_byte_array(uint32 slave_id,
+ uint16 addr ,
+ uint32 num_bytes,
+ uint8* data,
+ uint8 priority) ;
+
+pm_err_flag_type pm_comm_read_byte_array ( uint32 slave_id ,
+ uint16 addr ,
+ uint32 num_bytes,
+ uint8* data,
+ uint8 priority) ;
+pm_err_flag_type pm_comm_channel_init_internal(void);
+#endif
+
+#endif /* PM_COMM_H */
+
diff --git a/dev/pmic/pmi8994/include/pm_err_flags.h b/dev/pmic/pmi8994/include/pm_err_flags.h
new file mode 100644
index 0000000..1dbb88c
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_err_flags.h
@@ -0,0 +1,370 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef _PM_ERR_FLAGS_H
+#define _PM_ERR_FLAGS_H
+
+/**
+ * These are all the error codes returned by PMIC APIs
+ *
+ * PMIC APIs most commonly return errors if the caller has tried
+ * to use parameters that are out of range or if the feature is
+ * not supported by the PMIC model detected at run-time.
+ */
+typedef enum
+{
+ /**
+ * The API completed successfully
+ */
+ PM_ERR_FLAG__SUCCESS,
+ /**
+ * The SBI operation Failed
+ * extra lines are to support += error codes
+ */
+ PM_ERR_FLAG__SBI_OPT_ERR,
+ PM_ERR_FLAG__SBI_OPT2_ERR,
+ PM_ERR_FLAG__SBI_OPT3_ERR,
+ PM_ERR_FLAG__SBI_OPT4_ERR,
+
+ PM_ERR_FLAG__I2C_OPT_ERR,
+ PM_ERR_FLAG__I2C_OPT2_ERR,
+ PM_ERR_FLAG__I2C_OPT3_ERR,
+ PM_ERR_FLAG__I2C_OPT4_ERR,
+
+ PM_ERR_FLAG__SPMI_OPT_ERR,
+ PM_ERR_FLAG__SPMI_OPT2_ERR,
+ PM_ERR_FLAG__SPMI_OPT3_ERR,
+ PM_ERR_FLAG__SPMI_OPT4_ERR,
+
+ PM_ERR_FLAG__SPMI_TRANSCOMM_ERR,
+
+
+ /**
+ * Input Parameter one is out of range
+ */
+ PM_ERR_FLAG__PAR1_OUT_OF_RANGE,
+ /**
+ * Input Parameter two is out of range
+ */
+ PM_ERR_FLAG__PAR2_OUT_OF_RANGE,
+ /**
+ * Input Parameter three is out of range
+ */
+ PM_ERR_FLAG__PAR3_OUT_OF_RANGE,
+ /**
+ * Input Parameter four is out of range
+ */
+ PM_ERR_FLAG__PAR4_OUT_OF_RANGE,
+ /**
+ * Input Parameter five is out of range
+ */
+ PM_ERR_FLAG__PAR5_OUT_OF_RANGE,
+ /**
+ * Input Parameter six is out of range
+ */
+ PM_ERR_FLAG__PAR6_OUT_OF_RANGE,
+ PM_ERR_FLAG__INVALID_PARAMETER,
+ PM_ERR_FLAG__VLEVEL_OUT_OF_RANGE,
+ PM_ERR_FLAG__VREG_ID_OUT_OF_RANGE,
+ /**
+ * This feature is not supported by this PMIC
+ */
+ PM_ERR_FLAG__FEATURE_NOT_SUPPORTED,
+ PM_ERR_FLAG__INVALID_PMIC_MODEL,
+ PM_ERR_FLAG__SECURITY_ERR,
+ PM_ERR_FLAG__IRQ_LIST_ERR,
+ PM_ERR_FLAG__DEV_MISMATCH,
+ PM_ERR_FLAG__ADC_INVALID_RES,
+ PM_ERR_FLAG__ADC_NOT_READY,
+ PM_ERR_FLAG__ADC_SIG_NOT_SUPPORTED,
+ PM_ERR_FLAG__ADC_VBATT_READ_ERR,
+ /**
+ * The RTC displayed mode read from the PMIC is invalid
+ */
+ PM_ERR_FLAG__RTC_BAD_DIS_MODE,
+ /**
+ * Failed to read the time from the PMIC RTC
+ */
+ PM_ERR_FLAG__RTC_READ_FAILED,
+ /**
+ * Failed to write the time to the PMIC RTC
+ */
+ PM_ERR_FLAG__RTC_WRITE_FAILED,
+ /**
+ * RTC not running
+ */
+ PM_ERR_FLAG__RTC_HALTED,
+ /**
+ * The DBUS is already in use by another MPP.
+ */
+ PM_ERR_FLAG__DBUS_IS_BUSY_MODE,
+ /**
+ * The ABUS is already in use by another MPP.
+ */
+ PM_ERR_FLAG__ABUS_IS_BUSY_MODE,
+ /**
+ * The error occurs illegal value that isn't in the
+ * macro_type enum is used
+ */
+ PM_ERR_FLAG__MACRO_NOT_RECOGNIZED,
+ /**
+ * This error occurs if the data read from a register does
+ * not match the setting data
+ */
+ PM_ERR_FLAG__DATA_VERIFY_FAILURE,
+ /**
+ * The error occurs illegal value that isn't in the
+ * pm_register_type enum is used
+ */
+ PM_ERR_FLAG__SETTING_TYPE_NOT_RECOGNIZED,
+ /**
+ * The error occurs illegal value that isn't in the
+ * pm_mode_group enum is used
+ */
+ PM_ERR_FLAG__MODE_NOT_DEFINED_FOR_MODE_GROUP,
+ /**
+ * The error occurs illegal value that isn't in the pm_mode
+ * enum is used
+ */
+ PM_ERR_FLAG__MODE_GROUP_NOT_DEFINED,
+ /**
+ * This error occurs if the PRESTUB function returns a false
+ */
+ PM_ERR_FLAG__PRESTUB_FAILURE,
+ /**
+ * This error occurs if the POSTSTUB function returns a
+ * false
+ */
+ PM_ERR_FLAG__POSTSTUB_FAILURE,
+ /**
+ * When modes are set for a modegroup, they are recorded and
+ * checked for success
+ */
+ PM_ERR_FLAG__MODE_NOT_RECORDED_CORRECTLY,
+ /**
+ * Unable to find the mode group in the mode group recording
+ * structure. Fatal memory problem
+ */
+ PM_ERR_FLAG__MODE_GROUP_STATE_NOT_FOUND,
+ /**
+ * This error occurs if the SUPERSTUB function return a
+ * false
+ */
+ PM_ERR_FLAG__SUPERSTUB_FAILURE,
+ /* Processor does not have access to this resource */
+ PM_ERR_FLAG__TARGET_PROCESSOR_CAN_NOT_ACCESS_RESOURCE,
+ /* Resource is invalid. Resource index was pass
+ * into router that is not defined in the build
+ */
+ PM_ERR_FLAG__INVALID_RESOURCE_ACCESS_ATTEMPTED,
+
+ /*! Non-Zero means unsuccessful call. Here it means registration failed
+ because driver has ran out of memory.MAX_CLIENTS_ALLOWED needs to be
+ increased and the code needs to be recompiled */
+ PM_ERR_FLAG__VBATT_CLIENT_TABLE_FULL,
+ /*! One of the parameters to the function call was invalid. */
+ PM_ERR_FLAG__VBATT_REG_PARAMS_WRONG,
+ /*! Client could not be deregistered because perhaps it does not exist */
+ PM_ERR_FLAG__VBATT_DEREGISTRATION_FAILED,
+ /*! Client could not be modified because perhaps it does not exist */
+ PM_ERR_FLAG__VBATT_MODIFICATION_FAILED,
+ /*!< Client could not be queried because perhaps it does not exist */
+ PM_ERR_FLAG__VBATT_INTERROGATION_FAILED,
+ /*!< Client's filetr could not be set because perhaps it does not exist */
+ PM_ERR_FLAG__VBATT_SET_FILTER_FAILED,
+ /*! Keeps the count of all errors. Any error code equal to or greater
+ than this one means an unknown error. VBATT_LAST_ERROR should be
+ the last error code always with the highest value */
+ PM_ERR_FLAG__VBATT_LAST_ERROR,
+ PM_ERR_FLAG__PMIC_NOT_SUPPORTED,
+
+ /* Non Vibrator Module is being indexed */
+ PM_ERR_FLAG__INVALID_VIBRATOR_INDEXED ,
+
+ /* Non PWM generator is being indexed */
+ PM_ERR_FLAG__INVALID_PWM_GENERATOR_INDEXED ,
+
+ /* Non Chg Module is being indexed */
+ PM_ERR_FLAG__INVALID_CHG_INDEXED ,
+
+ PM_ERR_FLAG__INVALID_CHG_PATH,
+
+ PM_ERR_FLAG__INVALID_CLK_INDEXED,
+
+ PM_ERR_FLAG__INVALID_XO_INDEXED,
+
+ PM_ERR_FLAG__INVALID_XOADC_INDEXED,
+
+ PM_ERR_FLAG__INVALID_TCXO_INDEXED,
+
+ PM_ERR_FLAG__INVALID_RTC_INDEXED,
+
+ PM_ERR_FLAG__INVALID_SMBC_INDEXED,
+
+ PM_ERR_FLAG__INVALID_BMS_INDEXED,
+
+ PM_ERR_FLAG__API_NOT_IMPLEMENTED,
+
+ PM_ERR_FLAG__INVALID_PAONCNTRL_INDEXED,
+
+ /* Non Coincell Module is being indexed */
+ PM_ERR_FLAG__INVALID_COINCELL_INDEXED ,
+
+ /* Non Flash Module is being indexed */
+ PM_ERR_FLAG__INVALID_FLASH_INDEXED ,
+
+ /* Non OVP Module is being indexed */
+ PM_ERR_FLAG__INVALID_OVP_INDEXED ,
+
+ /* Non KEYPAD Module is being indexed */
+ PM_ERR_FLAG__INVALID_KEYPAD_INDEXED ,
+
+ /* Non LVS Module is being indexed */
+ PM_ERR_FLAG__INVALID_LVS_INDEXED ,
+
+ /* Non HSED Module is being indexed */
+ PM_ERR_FLAG__INVALID_HSED_INDEXED ,
+
+ /* Non TALM Module is being indexed */
+ PM_ERR_FLAG__INVALID_TALM_INDEXED ,
+
+ /* Non NCP Module is being indexed */
+ PM_ERR_FLAG__INVALID_NCP_INDEXED ,
+
+ /* Non NFC Module is being indexed */
+ PM_ERR_FLAG__INVALID_NFC_INDEXED ,
+
+ /* Non MVS Module is being indexed */
+ PM_ERR_FLAG__INVALID_MVS_INDEXED,
+
+ /* Non HDMI Module is being indexed */
+ PM_ERR_FLAG__INVALID_HDMI_INDEXED,
+
+ /* Non VS Module is being indexed */
+ PM_ERR_FLAG__INVALID_VS_INDEXED,
+
+ /* Non UVLO Module is being indexed */
+ PM_ERR_FLAG__INVALID_UVLO_INDEXED,
+
+ /* Non AMUX Module is being indexed */
+ PM_ERR_FLAG__INVALID_AMUX_INDEXED,
+
+ PM_ERR_FLAG__INVALID_KEYPAD_EVENT_COUNTER,
+
+ /* Non MPP Module is being indexed */
+ PM_ERR_FLAG__INVALID_MPP_INDEXED,
+
+ PM_ERR_FLAG__INVALID_BATTERY_CELL_NUMBER,
+
+ PM_ERR_FLAG__INVALID_PWRON_INDEXED,
+
+ PM_ERR_FLAG__INVALID_VBATT_INDEXED,
+
+ PM_ERR_FLAG__INVALID_HSDKYPD_APP_INDEXED,
+
+ PM_ERR_FLAG__INVALID_PWRKEY_APP_INDEXED,
+
+ PM_ERR_FLAG__INVALID_EVENT_CALLBACK,
+
+ PM_ERR_FLAG__SHADOW_REGISTER_INIT_FAILED ,
+
+ /* PSDTE Error Functionality */
+ PM_ERR_FLAG__PSDTE_ENV_FAILURE,
+
+ PM_ERR_FLAG__PSDTE_PMIC_POWERUP_FAILED,
+
+ PM_ERR_FLAG__PSDTE_PMIC_POWERDOWN_FAILED,
+
+ PM_ERR_FLAG__FTS_CALCULATION_ERROR ,
+
+ PM_ERR_FLAG__API_DEPRICATED_ERROR,
+
+ PM_ERR_FLAG__RPC_PROCESSOR_NOT_RECOGNIZED_ERROR,
+
+ /* VREG Errors */
+ PM_ERR_FLAG__VREG_VOTE_DEREGISTER_ERROR,
+
+ PM_ERR_FLAG__VREG_VOTE_REGISTER_ERROR,
+
+ /* VS Errors */
+ PM_ERR_FLAG__INVALID_VS_STATUS,
+
+ PM_ERR_FLAG__DAL_SERVICE_REGISTRATION_FAILED,
+
+ PM_ERR_FLAG__DAL_SERVICE_FAILED,
+
+ PM_ERR__MUTEX_CREATION_FAILED ,
+
+ PM_ERR__MUTEX_RELEASE_FAILED ,
+
+ PM_ERR__MUTEX_DELETION_FAILED ,
+
+ PM_ERR__MUTEX_UNAVAILBLE ,
+ // Returned if the Create Comm Channel fails to find the correct commType
+ PM_ERR_FLAG__COMM_TYPE_NOT_RECOGNIZED,
+
+ PM_ERR_FLAG__IRQ_GPIO_SET_FAILED,
+ /*! Event information table has run out of client entries */
+ PM_ERR_FLAG__PMAPP_EVENT_CLIENT_TABLE_FULL,
+ /*! Client could not be deregistered because perhaps it does not exist */
+ PM_ERR_FLAG__PMAPP_EVENT_DEREGISTRATION_FAILED,
+ /*! Client is attempting to use a client index that is incorrect or has been previously deregisterd */
+ PM_ERR_FLAG__PMAPP_EVENT_CLIENT_INDEX_FAILURE,
+
+ PM_ERR_FLAG__INVALID_MISC_INDEXED,
+
+ PM_ERR_FLAG__INVALID_MISC_TBD,
+
+ PM_ERR_FLAG__INVALID_VREG_INDEXED,
+
+ PM_ERR_FLAG__INVALID_POINTER,
+
+ PM_ERR_FLAG__FUNCTION_NOT_SUPPORTED_AT_THIS_LEVEL,
+
+ PM_ERR_FLAG__INVALID_LPG_INDEXED,
+
+ PM_ERR_FLAG__INVALID_DISPBACKLIGHT_APP_INDEXED,
+ PM_ERR_FLAG__INVALID_RGB_INDEXED,
+ PM_ERR_FLAG__INVALID_SMBB_INDEXED,
+ PM_ERR_FLAG__FG_SRAM_DEVICE_ACCESS,
+
+ PM_ERR_FLAG__SBL_CONFIG_REG_OPERATION_NOT_SUPPORTED,
+
+ PM_ERR_FLAG__INVALID
+
+} pm_err_flag_type;
+
+/**
+ * This macro is used to return the greater of PM_ERR_FLAG__SUCCESS
+ * or whatever error an API may have found.
+ */
+#define PM_ERR_MAX(a,b) ((a > b) ? (a) : (b))
+
+
+#endif
+
diff --git a/dev/pmic/pmi8994/include/pm_fg_adc_usr.h b/dev/pmic/pmi8994/include/pm_fg_adc_usr.h
new file mode 100644
index 0000000..ebe249c
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_fg_adc_usr.h
@@ -0,0 +1,549 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __PM_FG_ADC_USR_H__
+#define __PM_FG_ADC_USR_H__
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+ TYPE DEFINITIONS
+===========================================================================*/
+
+typedef enum{
+ /*IRQ indicating that IBAT is greater than threshold defined in IBAT_INT__THR register
+ 0x0 : INT_RT_STATUS_LOW
+ 0x1 : INT_RT_STATUS_HIGH */
+ PM_FG_ADC_USR_IBAT_GT_THR_RT_STS =0,
+ /*IRQ indicating that VBAT is less than threshold defined in VBAT_INT__THR register
+ 0x0 : INT_RT_STATUS_LOW
+ 0x1 : INT_RT_STATUS_HIGH */
+ PM_FG_ADC_USR_VBAT_LT_THR_INT_RT_STS,
+ PM_FG_ADC_USR_IRQ_INVALID
+} pm_fg_adc_usr_irq_type;
+
+
+typedef enum{
+ /*STS
+ 00 = lpm - low power mode
+ 01 = hpm - high power mode
+ 10 = mpm - medium (normal) power mode
+ 11 = not used
+ 0x0 : BCL_IS_LPM
+ 0x1 : BCL_IS_HPM
+ 0x2 : BCL_IS_MPM
+ 0x3 : BCL_IS_INVALID_MODE */
+ PM_FG_ADC_USR_BCL_MODE_STS_LPM =0,
+ PM_FG_ADC_USR_BCL_MODE_STS_HPM,
+ PM_FG_ADC_USR_BCL_MODE_STS_MPM,
+ PM_FG_ADC_USR_BCL_MODE_STS_INVAID
+} pm_fg_adc_usr_bcl_mode_sts;
+
+
+/*===========================================================================
+ EXTERNAL FUNCTION DEFINITIONS
+===========================================================================*/
+ /**
+ * @brief This function enables irq
+ *
+ * @details
+ * This function enables irq
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] pm_fg_adc_usr_irq_type irq type
+ * @param[in] boolean enable/disable value
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+ pm_err_flag_type pm_fg_adc_usr_irq_enable(uint32 device_index, pm_fg_adc_usr_irq_type irq, boolean enable);
+
+
+ /**
+ * @brief This function clears irq
+ *
+ * @details
+ * This function clears irq
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] pm_fg_adc_usr_irq_type irq type
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+ pm_err_flag_type pm_fg_adc_usr_irq_clear(uint32 device_index, pm_fg_adc_usr_irq_type irq);
+
+ /**
+ * @brief This function sets interrupt triggers
+ *
+ * @details
+ * This function sets interrupt triggers
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] pm_fg_adc_usr_irq_type irq type
+ * @param[in] pm_irq_trigger_type trigger
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+ pm_err_flag_type pm_fg_adc_usr_irq_set_trigger(uint32 device_index, pm_fg_adc_usr_irq_type irq, pm_irq_trigger_type trigger);
+
+
+ /**
+ * @brief This function returns irq status
+ *
+ * @details
+ * This function returns irq status
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] pm_fg_adc_usr_irq_type irq type
+ * @param[in] pm_irq_status_type irq status type
+ * @param[in] boolean irq TRUE/FALSE status
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+ pm_err_flag_type pm_fg_adc_usr_irq_status(uint32 device_index, pm_fg_adc_usr_irq_type irq, pm_irq_status_type type, boolean *status);
+
+/**
+* @brief This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use) *
+* @details
+* This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_enable_bcl_monitoring(uint32 device_index, boolean enable);
+
+/**
+* @brief This function returns BMS Fule Gauge BCL (battery current limiting s/w use) *
+* @details
+* This function returns BMS Fule Gauge BCL (battery current limiting s/w use)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_monitoring_sts(uint32 device_index, boolean *enable);
+
+
+/**
+* @brief This function returns of status of battery parameter update request *
+* @details
+* This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_req_sts(uint32 device_index, boolean *enable);
+
+
+/**
+* @brief This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP *
+* @details
+* This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_set_access_bat_req(uint32 device_index, boolean enable);
+
+
+/**
+* @brief This function returns the grant status of battery parameter update request *
+* @details
+* This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_grnt_sts(uint32 device_index, boolean *enable);
+
+
+
+/**
+* @brief This function returns status RDY bit after battery parameter update request is serviced *
+* @details
+* After the first readings from ADC are obtained, this bit is set to 1; At reset and shutdown, this bit gets automatically cleared
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_values(uint32 device_index, boolean *enable);
+
+
+/**
+* @brief This function returns battery ADC Voltage *
+* @details
+* 8 bit signed partial ADC value, MSB = 0 is positive voltage (positive number), only positive voltages are captured, 1 LSB = 39 mV
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_adc Battery Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat(uint32 device_index, uint32 *vbat_adc);
+
+
+/**
+* @brief This function returns battery ADC Current *
+* @details
+* 8 bit signed partial ADC value, MSB = 0 is discharging current (positive number), only discharging currents are captured, 1 LSB = 39 mA
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_adc Battery Current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat(uint32 device_index, int32 *ibat_adc);
+
+
+/**
+* @brief This function returns minimum battery Voltage *
+* @details
+* Running Vbat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min Battery Minimum Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min(uint32 device_index, uint8 *vbat_min);
+
+/**
+* @brief This function returns max battery current *
+* @details
+* Running Ibat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max Battery Maximum Current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max(uint32 device_index, uint8 *ibat_max);
+
+
+/**
+* @brief This function returns copy of minimum battery Voltage *
+* @details
+* Running Vbat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min Battery Minimum Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min_cp(uint32 device_index, uint8 *vbat_min_cp);
+
+/**
+* @brief This function returns copy of max battery current *
+* @details
+* Running Ibat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max Battery Maximum Current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max_cp(uint32 device_index, uint8 *ibat_max_cp);
+
+
+/**
+* @brief This function returns Battery Resitance in HALF encoding *
+* @details
+* HALF-FLOATING point encoding, 15:11 exp, bit 10 sign, 9:0 mantissa, 1=1 ohm, refer to MDOS for encoding info
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]batt_resistance Battery Resistance
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_half_point_encoding(uint32 device_index, uint16 *batt_resistance);
+
+
+/**
+* @brief This function returns BCL mode status *
+* @details
+* This function returns BCL mode status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] bcl_mode BCL mode
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_mode(uint32 device_index, pm_fg_adc_usr_bcl_mode_sts *bcl_mode);
+
+
+/**
+* @brief This function returns votlage gain correction value for battery voltage *
+* @details
+* This function returns gain correction value for battery
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection for battery volatge
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_v_gain_batt(uint32 device_index, int32 *v_gain_correction);
+
+/**
+* @brief This function returns current Rsense gain correction value for Battery Current *
+* @details
+* This function returns current Rsense gain correction value for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection for battery volatge
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_rsense(uint32 device_index, int32 *i_gain_rsense);
+
+
+/**
+* @brief This function returns current Rsense offset value for Battery Current *
+* @details
+* This function returns current Rsense offset value for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_rsense Offset Gain Correction battery current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_rsense(uint32 device_index, int32 *i_offset_rsense);
+
+
+/**
+* @brief This function returns current gain in BATFET for Battery Current *
+* @details
+* This function returns current gain in BATFET for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] igain_offset_correction Gain Correction for battery current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_batfet(uint32 device_index, int32 *i_gain_batfet);
+
+
+/**
+* @brief This function returns current offset in BATFET for Battery Current *
+* @details
+* This function returns current gain in BATFET for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_batfet_correction offset Gain Correction for BATFET
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_batfet(uint32 device_index, int32 *i_offset_batfet);
+
+
+/**
+* @brief This function returns source used for current sense *
+* @details
+* This function returns source used for current sense
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] isense_source source used for current sense
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_sense_source(uint32 device_index, boolean *i_sense_source);
+
+
+/**
+* @brief This function cleras stored VBAT minimum *
+* @details
+* This function cleras stored VBAT minimum
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable for clearing stored vbat minimum
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_vbat_min(uint32 device_index, boolean enable);
+
+/**
+* @brief This function clears stored IBAT Max *
+* @details
+* This function cleras stored IBAT Max
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable for clearing stored vbat minimum
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_ibat_max(uint32 device_index, boolean enable);
+
+/**
+* @brief This function returns battery charge current after gain and offset calibration*
+* @details
+* calibrated_value = ((raw_data + offset) * (1 + gain))
+*
+* @param[in] pmic_device_index Primary: 0 Secondary: 1
+* @param[out]calibrated_vbat Calibrated Battery Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_ibat(uint32 pmic_device, int32 *calibrated_ibat);
+
+/**
+* @brief This function returns battery ADC Voltage after gain calibration*
+* @details
+* calibrated_value = raw_data * (1 + gain)
+*
+* @param[in] pmic_device_index Primary: 0 Secondary: 1
+* @param[out]calibrated_vbat Calibrated Battery Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_vbat(uint32 pmic_device, uint32 *calibrated_vbat);
+
+
+#endif /* __PM_FG_ADC_USR_H__ */
diff --git a/dev/pmic/pmi8994/include/pm_fg_driver.h b/dev/pmic/pmi8994/include/pm_fg_driver.h
new file mode 100644
index 0000000..85685e6
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_fg_driver.h
@@ -0,0 +1,292 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef __PM_FG_DRIVER_H__
+#define __PM_FG_DRIVER_H__
+
+/*===========================================================================
+ INCLUDE FILES
+===========================================================================*/
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+#include "pm_comm.h"
+
+/*===========================================================================
+ TYPE DEFINES AND ENUMS
+===========================================================================*/
+
+/* FG SOC register */
+typedef struct fg_soc_register_ds
+{
+ pm_register_address_type base_address;
+ pm_register_address_type peripheral_offset;
+
+ pm_register_address_type fg_soc_alg_sts; //0x006
+ pm_register_address_type fg_soc_alg_aux_sts0; //0x007
+ pm_register_address_type fg_soc_sleep_shutdown_sts;//0x008
+ pm_register_address_type fg_soc_monotonic_soc; //0x009
+ pm_register_address_type fg_soc_monotonic_soc_cp; //0x00A
+
+ pm_register_address_type int_rt_sts; //0x010
+ pm_register_address_type int_set_type; //0x011
+ pm_register_address_type int_polarity_high; //0x012
+ pm_register_address_type int_polarity_low; //0x013
+ pm_register_address_type int_latched_clr; //0x014
+ pm_register_address_type int_en_set; //0x015
+ pm_register_address_type int_en_clr; //0x016
+ pm_register_address_type int_latched_sts; //0x018
+ pm_register_address_type int_pending_sts; //0x019
+ pm_register_address_type int_mid_sel; //0x01A
+ pm_register_address_type int_priority; //0x01B
+
+ pm_register_address_type fg_soc_boot_mode; //0x050
+ pm_register_address_type fg_soc_restart; //0x051
+ pm_register_address_type fg_soc_wdog_exp; //0x052
+ pm_register_address_type fg_soc_sts_clr; //0x053
+
+ pm_register_address_type fg_soc_sec_access; //0x0D0
+
+ pm_register_address_type fg_soc_vadc_data0; //0x0E8
+ pm_register_address_type fg_soc_bcl_tst0; //0x0E9
+
+ pm_register_address_type fg_soc_alg_sts_cmp; //0x0EB
+
+ pm_register_address_type fg_soc_trim_num; //0x0F0
+
+ pm_register_address_type fg_soc_fg_pbs_trig; //0x0F1
+ pm_register_address_type fg_soc_fg_pbs_trig_mux; //0x0F2
+ pm_register_address_type fg_soc_fg_reset; //0x0F3
+ pm_register_address_type fg_soc_fg_cya_cfg; //0x0F4
+ pm_register_address_type fg_soc_low_power_cfg; //0x0F5
+ pm_register_address_type fg_soc_bcl_v_gain_batt_trim;//0x0F6
+ pm_register_address_type fg_soc_bcl_i_gain_rsense_trim;//0x0F7
+ pm_register_address_type fg_soc_bcl_i_offset_rsense_trim;//0x0F8
+ pm_register_address_type fg_soc_bcl_i_gain_batfet_trim;//0x0F9
+ pm_register_address_type fg_soc_bcl_i_offset_batfet_trim;//0x0FA
+
+}fg_soc_register_ds;
+
+/* FG Battery register */
+typedef struct fg_batt_register_ds
+{
+ pm_register_address_type base_address;
+ pm_register_address_type peripheral_offset;
+
+ //Read Battery ID currently in use by the alogorithm
+ pm_register_address_type fg_batt_battery; //0x006
+ //FG System Battery Status
+ pm_register_address_type fg_batt_sys_batt; //0x007
+ //Battery detection
+ pm_register_address_type fg_batt_det; //0x008
+ //Battery status information on JEITA
+ pm_register_address_type fg_batt_info_sts; //0x009
+
+ pm_register_address_type fg_batt_recovery_sts; //0x00A
+
+ pm_register_address_type int_rt_sts; //0x010
+ pm_register_address_type int_set_type; //0x011
+ pm_register_address_type int_polarity_high; //0x012
+ pm_register_address_type int_polarity_low; //0x013
+ pm_register_address_type int_latched_clr; //0x014
+ pm_register_address_type int_en_set; //0x015
+ pm_register_address_type int_en_clr; //0x016
+ pm_register_address_type int_latched_sts; //0x018
+ pm_register_address_type int_pending_sts; //0x019
+ pm_register_address_type int_mid_sel; //0x01A
+ pm_register_address_type int_priority; //0x01B
+
+ //Force Battery ID during first SOC re detection
+ pm_register_address_type fg_batt_sw_batt_id; //0x050
+ //Battery Profile ID
+ pm_register_address_type fg_batt_profile_id; //0x051
+ pm_register_address_type fg_batt_removed_latched; //0x052
+ //Set by sw after FG provides recovery information
+ pm_register_address_type fg_batt_batt_recovery; //0x053
+ // Battery secured access
+ pm_register_address_type fg_batt_sec_access; //0x0D0
+
+ pm_register_address_type fg_batt_esr_change_bound; //0x0E2
+
+ pm_register_address_type fg_batt_peek_mux1; //0x0EB
+ pm_register_address_type fg_batt_peek_mux2; //0x0EC
+ pm_register_address_type fg_batt_peek_mux3; //0x0ED
+ pm_register_address_type fg_batt_peek_mux4; //0x0EE
+
+ //Number of Trim register in pheripheral
+ pm_register_address_type fg_batt_trim_num; //0x0F0
+ //Battery Misc configuration ..recovery and thermistor cfg
+ pm_register_address_type fg_batt_misc_cfg; //0x0F1
+
+ //Battery ID trum values
+ pm_register_address_type fg_batt_batt_id_curr0; //0x0F2
+ pm_register_address_type fg_batt_batt_id_curr1; //0x0F3
+ pm_register_address_type fg_batt_esr_cur; //0x0F4
+ //Enable/Disbale ESR mesurement
+ pm_register_address_type fg_batt_esr_meas_en; //0x0F5
+ pm_register_address_type fg_batt_rbias_div_sel; //0x0F6
+
+}fg_batt_register_ds;
+
+
+/* FG Memory Intergace register */
+typedef struct fg_memif_register_ds
+{
+ pm_register_address_type base_address;
+ pm_register_address_type peripheral_offset;
+
+ pm_register_address_type fg_memif_revision1; //0x000
+ pm_register_address_type fg_memif_revision2; //0x001
+ pm_register_address_type fg_memif_revision3; //0x002
+ pm_register_address_type fg_memif_revision4; //0x003
+
+ pm_register_address_type int_rt_sts; //0x010
+ pm_register_address_type int_set_type; //0x011
+ pm_register_address_type int_polarity_high; //0x012
+ pm_register_address_type int_polarity_low; //0x013
+ pm_register_address_type int_latched_clr; //0x014
+ pm_register_address_type int_en_set; //0x015
+ pm_register_address_type int_en_clr; //0x016
+ pm_register_address_type int_latched_sts; //0x018
+ pm_register_address_type int_pending_sts; //0x019
+ pm_register_address_type int_mid_sel; //0x01A
+ pm_register_address_type int_priority; //0x01B
+
+ //Memory Interface configuration
+ pm_register_address_type fg_memif_mem_intf_cfg; //0x040
+ //Memory Interface Control
+ pm_register_address_type fg_memif_mem_intf_ctl; //0x041
+ pm_register_address_type fg_memif_mem_intf_addr_lsb;//0x042
+ pm_register_address_type fg_memif_mem_intf_addr_msb;//0x043
+
+ pm_register_address_type fg_memif_mem_intf_wr_data0;//0x048
+ pm_register_address_type fg_memif_mem_intf_wr_data1;//0x049
+ pm_register_address_type fg_memif_mem_intf_wr_data2;//0x04A
+ pm_register_address_type fg_memif_mem_intf_wr_data3;//0x04B
+
+ pm_register_address_type fg_memif_mem_intf_rd_data0;//0x04C
+ pm_register_address_type fg_memif_mem_intf_rd_data1;//0x04D
+ pm_register_address_type fg_memif_mem_intf_rd_data2;//0x04E
+ pm_register_address_type fg_memif_mem_intf_rd_data3;//0x04F
+
+ //PMIC Secured Access
+ pm_register_address_type fg_memif_sec_access; //0x0D0
+ //OTP Configuration
+ pm_register_address_type fg_memif_otp_cfg1; //0x0E2
+ pm_register_address_type fg_memif_otp_cfg2; //0x0E3
+
+}fg_memif_register_ds;
+
+
+/* FG ADC User register */
+typedef struct fg_adc_usr_register_ds
+{
+ pm_register_address_type base_address;
+ pm_register_address_type peripheral_offset;
+
+ pm_register_address_type int_rt_sts; //0x010
+ pm_register_address_type int_set_type; //0x011
+ pm_register_address_type int_polarity_high; //0x012
+ pm_register_address_type int_polarity_low; //0x013
+ pm_register_address_type int_latched_clr; //0x014
+ pm_register_address_type int_en_set; //0x015
+ pm_register_address_type int_en_clr; //0x016
+ pm_register_address_type int_latched_sts; //0x018
+ pm_register_address_type int_pending_sts; //0x019
+ pm_register_address_type int_mid_sel; //0x01A
+ pm_register_address_type int_priority; //0x01B
+
+ //Enable FG ADC Modgule for BCL
+ pm_register_address_type fg_adc_usr_en_ctl; //0x046
+ //Pause the updates ofr battery registers
+ pm_register_address_type fg_adc_usr_access_bat_req;//0x050
+ pm_register_address_type fg_adc_usr_access_bat_grnt;//0x051
+ // bcl values after first reading from ADC are obtained
+ pm_register_address_type fg_adc_usr_bcl_values; //0x053
+ // ADC user secured access
+ pm_register_address_type fg_adc_usr_sec_access; //0x0D0
+ // VBAT, IBAT
+ pm_register_address_type fg_adc_usr_vbat; //0x054
+ pm_register_address_type fg_adc_usr_ibat; //0x055
+ pm_register_address_type fg_adc_usr_vbat_cp; //0x056
+ pm_register_address_type fg_adc_usr_ibat_cp; //0x057
+ //Min max values
+ pm_register_address_type fg_adc_usr_vbat_min; //0x058
+ pm_register_address_type fg_adc_usr_ibat_max; //0x059
+ pm_register_address_type fg_adc_usr_vbat_min_cp; //0x05A
+ pm_register_address_type fg_adc_usr_ibat_max_cp; //0x05B
+ //HALF battery resistance value
+ pm_register_address_type fg_adc_usr_bat_res_7_0; //0x05C
+ pm_register_address_type fg_adc_usr_bat_res_15_8; //0x05D
+ //BCL Modes
+ pm_register_address_type fg_adc_usr_bcl_mode; //0x05E
+ //Gain Correction
+ pm_register_address_type fg_adc_usr_bcl_v_gain_batt;//0x060
+ pm_register_address_type fg_adc_usr_bcl_i_gain_rsense;//0x061
+ pm_register_address_type fg_adc_usr_bcl_i_offset_rsense;//0x062
+ pm_register_address_type fg_adc_usr_bcl_i_gain_batfet;//0x063
+ pm_register_address_type fg_adc_usr_bcl_i_offset_batfet;//0x064
+ pm_register_address_type fg_adc_usr_bcl_i_sense_source;//0x065
+ //vbat ibatmax clear
+ pm_register_address_type fg_adc_usr_vbat_min_clr; //0x066
+ pm_register_address_type fg_adc_usr_ibat_max_clr; //0x067
+ //threshold interrrupt
+ pm_register_address_type fg_adc_usr_vbat_int; //0x068
+ pm_register_address_type fg_adc_usr_ibat_int; //0x069
+
+}fg_adc_usr_register_ds;
+
+typedef struct fg_register_ds
+{
+ fg_soc_register_ds *soc_register;
+ fg_batt_register_ds *batt_register;
+ fg_memif_register_ds *memif_register;
+ fg_adc_usr_register_ds *adc_usr_register;
+
+}fg_register_ds;
+
+typedef struct
+{
+ pm_comm_info_type *comm_ptr;
+ fg_register_ds *fg_register;
+ uint8 num_of_peripherals;
+}pm_fg_data_type;
+
+
+/*===========================================================================
+
+ FUNCTION DECLARATION
+
+===========================================================================*/
+
+/* driver init */
+void pm_fg_driver_init(uint32 pmic_index);
+
+pm_fg_data_type* pm_fg_get_data(uint32 pmic_index);
+
+#endif // __PM_FG_DRIVER_H__
diff --git a/dev/pmic/pmi8994/include/pm_resources_and_types.h b/dev/pmic/pmi8994/include/pm_resources_and_types.h
new file mode 100644
index 0000000..339d5f4
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_resources_and_types.h
@@ -0,0 +1,262 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_RESOURCES_AND_TYPES__H
+#define PM_RESOURCES_AND_TYPES__H
+
+/*===========================================================================
+
+ HEADER FILES
+
+===========================================================================*/
+#include <stdint.h>
+#include <sys/types.h>
+#include <smem.h>
+
+/*===========================================================================
+
+ TYPE DEFINITIONS
+
+===========================================================================*/
+typedef uint8_t pm_register_data_type;
+typedef uint16_t pm_register_address_type;
+
+
+#define PM_MAX_NUM_PMICS SMEM_MAX_PMIC_DEVICES
+
+/*! \enum chargers
+ * \brief This enum contains definitions of all chargers in the target
+ */
+
+enum
+{
+ PM_CHG_1,
+ PM_CHG_INVALID
+};
+
+/*!
+ * PMIC power module voltage level
+ */
+typedef uint32 pm_volt_level_type;
+
+typedef enum
+{
+ PM_OFF,
+ PM_ON,
+ PM_INVALID
+}pm_on_off_type;
+
+
+typedef enum
+{
+ PM_DISABLE_CONFIG = 0,
+ PM_ENABLE_CONFIG = 1,
+ PM_CONFIG_INVALID
+} pm_smbchg_param_config_enable_type;
+
+
+typedef enum
+{
+ PM_SW_MODE_LPM = 0, // Low power mode
+ PM_SW_MODE_BYPASS = 1, // Bypass mode bit 5
+ PM_SW_MODE_AUTO = 2, // Auto mode bit 6
+ PM_SW_MODE_NPM = 4, // Normal power mode bit 7
+ PM_SW_MODE_INVALID
+}pm_sw_mode_type;
+
+/*!
+ * The number of phases that the autonomous phase controller(APC) can use.
+ */
+typedef enum
+{
+ PM_PHASE_CNT__1,
+ PM_PHASE_CNT__2,
+ PM_PHASE_CNT__3,
+ PM_PHASE_CNT__4,
+ PM_PHASE_CNT__INVALID
+}pm_phase_cnt_type;
+
+/**
+ @struct peripheral_info_type
+ @brief Contains Peripheral Information such as Type, Subtype,
+ Analog and Digital Major Versions.
+ */
+typedef struct
+{
+ uint16 base_address;
+ uint8 peripheral_type;
+ uint8 peripheral_subtype;
+ uint8 analog_major_version;
+ uint8 analog_minor_version;
+ uint8 digital_major_version;
+ uint8 digital_minor_version;
+}peripheral_info_type;
+
+// /*!
+// * Generic enable,
+// */
+//typedef enum
+//{
+// PM_NPA_GENERIC_DISABLE, // default
+// PM_NPA_GENERIC_ENABLE,
+// PM_NPA_GENERIC_INVALID
+//}pm_npa_generic_enable_type;
+//
+///*!
+// * Bypass Allowed
+// */
+//typedef enum
+//{
+// PM_NPA_BYPASS_ALLOWED, // default
+// PM_NPA_BYPASS_DISALLOWED,
+// PM_NPA_BYPASS_INVALID
+//}pm_npa_bypass_allowed_type;
+//
+///*!
+// * LDO Software Mode
+// */
+//typedef enum
+//{
+// PM_NPA_SW_MODE_LDO__IPEAK, // default
+// PM_NPA_SW_MODE_LDO__NPM,
+// PM_NPA_SW_MODE_LDO__INVALID
+//}pm_npa_sw_mode_ldo_type;
+///*!
+// * SMPS Software Mode
+// */
+//typedef enum
+//{
+// PM_NPA_SW_MODE_SMPS__AUTO, // default
+// PM_NPA_SW_MODE_SMPS__IPEAK,
+// PM_NPA_SW_MODE_SMPS__NPM,
+// PM_NPA_SW_MODE_SMPS__INVALID
+//}pm_npa_sw_mode_smps_type;
+//
+///*!
+// * Pin Control Enable
+// */
+//typedef enum
+//{
+// PM_NPA_PIN_CONTROL_ENABLE__NONE = 0, // default
+// PM_NPA_PIN_CONTROL_ENABLE__EN1 = 1,
+// PM_NPA_PIN_CONTROL_ENABLE__EN2 = 2,
+// PM_NPA_PIN_CONTROL_ENABLE__EN3 = 4,
+// PM_NPA_PIN_CONTROL_ENABLE__EN4 = 8,
+// PM_NPA_PIN_CONTROL_ENABLE__INVALID
+//}pm_npa_pin_control_enable_type;
+//
+///*!
+// * Pin Control Power Mode
+// */
+//typedef enum
+//{
+// PM_NPA_PIN_CONTROL_POWER_MODE__NONE = 0, // default
+// PM_NPA_PIN_CONTROL_POWER_MODE__EN1 = 1,
+// PM_NPA_PIN_CONTROL_POWER_MODE__EN2 = 2,
+// PM_NPA_PIN_CONTROL_POWER_MODE__EN3 = 4,
+// PM_NPA_PIN_CONTROL_POWER_MODE__EN4 = 8,
+// PM_NPA_PIN_CONTROL_POWER_MODE__SLEEPB = 16,
+// PM_NPA_PIN_CONTROL_POWER_MODE__INVALID
+//}pm_npa_pin_control_power_mode_type;
+//
+//
+///*!
+// * Pin Control Power Mode
+// */
+//typedef enum
+//{
+// PM_NPA_CORNER_MODE__NONE = 0, // default
+// PM_NPA_CORNER_MODE__1 = 1,
+// PM_NPA_CORNER_MODE__2 = 2,
+// PM_NPA_CORNER_MODE__3 = 3,
+// PM_NPA_CORNER_MODE__4 = 4,
+// PM_NPA_CORNER_MODE__5 = 5,
+// PM_NPA_CORNER_MODE__6 = 6,
+// PM_NPA_CORNER_MODE__INVALID
+//}pm_npa_corner_mode_type;
+//
+///*!
+// * Pin Control Enable
+// */
+//typedef enum
+//{
+// PM_NPA_CLK_BUFFER_PIN_CONTROL_ENABLE__NONE = 0, // default
+// PM_NPA_CLK_BUFFER_PIN_CONTROL_ENABLE__EN1 = 1,
+// PM_NPA_CLK_BUFFER_PIN_CONTROL_ENABLE__INVALID
+//}pm_npa_clk_buff_pin_control_enable_type;
+//
+typedef enum
+{
+ PM_CLK_BUFF_OUT_DRV__1X,
+ PM_CLK_BUFF_OUT_DRV__2X,
+ PM_CLK_BUFF_OUT_DRV__3X,
+ PM_CLK_BUFF_OUT_DRV__4X,
+} pm_clk_buff_output_drive_strength_type;
+
+/*! \enum pm_irq_trigger_type
+ * \brief Type definition for different IRQ triggers
+ */
+typedef enum
+{
+ PM_IRQ_TRIGGER_ACTIVE_LOW,
+ PM_IRQ_TRIGGER_ACTIVE_HIGH,
+ PM_IRQ_TRIGGER_RISING_EDGE,
+ PM_IRQ_TRIGGER_FALLING_EDGE,
+ PM_IRQ_TRIGGER_DUAL_EDGE,
+ PM_IRQ_TRIGGER_INVALID
+} pm_irq_trigger_type;
+
+/*! \enum pm_irq_status_type
+ * \brief Type definition for different IRQ STATUS
+ */
+typedef enum
+{
+ PM_IRQ_STATUS_RT,
+ PM_IRQ_STATUS_LATCHED,
+ PM_IRQ_STATUS_PENDING,
+ PM_IRQ_STATUS_ENABLE,
+ PM_IRQ_STATUS_INVALID
+} pm_irq_status_type;
+
+///*! \enum pm_npa_mode_id_core_rail_type
+// * \brief To do CPR voltage settling in the SBL.
+// */
+//typedef enum
+//{
+// PMIC_NPA_MODE_ID_CORE_RAIL_OFF = 0,
+// PMIC_NPA_MODE_ID_CORE_RAIL_RETENTION = 1,
+// PMIC_NPA_MODE_ID_CORE_RAIL_LOW_MINUS = 2,
+// PMIC_NPA_MODE_ID_CORE_RAIL_LOW = 3,
+// PMIC_NPA_MODE_ID_CORE_RAIL_NOMINAL = 4,
+// PMIC_NPA_MODE_ID_CORE_RAIL_NOMINAL_PLUS = 5,
+// PMIC_NPA_MODE_ID_CORE_RAIL_TURBO = 6,
+// PMIC_NPA_MODE_ID_CORE_RAIL_MAX = 7,
+//}pm_npa_mode_id_core_rail_type;
+//
+#endif /* PM_RESOURCES_AND_TYPES__H */
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_bat_if.h b/dev/pmic/pmi8994/include/pm_smbchg_bat_if.h
new file mode 100644
index 0000000..7d3a8f6
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_bat_if.h
@@ -0,0 +1,540 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_BAT_IF_H
+#define PM_SMBCHG_BAT_IF_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+ TYPE DEFINITIONS
+
+===========================================================================*/
+
+
+/*! \struct pm_smbchg_bat_if_cmd_chg_type
+ \brief Struct for writing to battery interface command control
+ */
+typedef enum pm_smbchg_bat_if_cmd_chg_type
+{
+ PM_SMBCHG_BAT_IF_CMD__OTG_EN, /** <OTG Enable, 0 = Disable, 1 = Enable >*/
+ PM_SMBCHG_BAT_IF_CMD__EN_BAT_CHG, /** <Enable Battery Charging >*/
+ PM_SMBCHG_BAT_IF_CMD__FC_COM, /** <Fast Charge Command, FALSE = Force pre-charge current, TRUE = Allow Fast Charge >*/
+ PM_SMBCHG_BAT_IF_CMD__STAT_OUTPUT, /** <0 = STAT output enabled (still allow IRQs) 1 = Turn off STAT pin (still allow IRQs) >*/
+ PM_SMBCHG_BAT_IF_CMD__THERM_NTC_I_OVERRIDE, /** <0 = Thermistor Monitor per config setting 1 = Force thermistor monitor disable (override config)>*/
+ PM_SMBCHG_BAT_IF_CMD__WIRELESS_CHG_DIS, /** <Wireless charging 0 = enabled, 1 = disabled >*/
+ PM_SMBCHG_BAT_IF_CMD__INVALID /** <INVALID >*/
+}pm_smbchg_bat_if_cmd_chg_type;
+
+
+/*! \enum pm_smbchg_bat_if_low_bat_thresh_type
+ \brief enum for different level of low battery threshold
+ */
+typedef enum pm_smbchg_bat_if_low_bat_thresh_type
+{
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_DISABLED,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P5,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P6,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P7,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P8,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P9,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P0,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P1,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P7,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_2P88,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P00,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P10,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P25,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P35,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P46,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P58,
+ PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_INVALID
+}pm_smbchg_bat_if_low_bat_thresh_type;
+
+
+/*! \struct pm_smbchg_bat_if_cmd_chg_type
+ \brief Struct for configuring battery missing configuration
+ */
+typedef struct pm_smbchg_bat_if_batt_missing_cfg_type
+{
+ uint32 batt_removal_det_time_usec; /** <Battery removal detection time: 80,160,320,640 usec > */
+ boolean batt_bat_get_override_en; /** <Battery FET Configuration 0 = Normal operation 1 = override (turn off FET) 0x0 : BATT_FET_NORMAL 0x1 : BATT_FET_OVERRIDE > */
+ boolean batt_missing_input_plugin_en; /** <Battery Missing on Input Plug-In 0 = Disabled 1 = Enabled 0x0 : BMA_PLUG_IN_DIS 0x1 : BMA_PLUG_IN_EN > */
+ boolean batt_missing_2p6s_poller_en; /** <Battery Missing 2.6s Poller 0 = Disabled 1 = Enabled 0x0 : BMA_POLLER_DIS 0x1 : BMA_POLLER_EN > */
+ boolean batt_missing_algo_en; /** <Battery Missing Algorithm 0 = Disabled 1 = Enabled 0x0 : BMA_DIS 0x1 : BMA_EN > */
+ boolean use_bmd_pin_for_batt_missing_src;
+ boolean use_therm_pin_for_batt_missing_src;
+}pm_smbchg_bat_if_batt_missing_cfg_type;
+
+/*! \enum pm_smbchg_bat_miss_detect_src_type
+ \brief enum for battery missing detection sources
+ */
+typedef enum pm_smbchg_bat_miss_detect_src_type
+{
+ PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_PIN,
+ PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_BMD_PIN,
+ PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_BMD_PIN,
+ PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_NONE,
+ PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_INVALID,
+}pm_smbchg_bat_miss_detect_src_type;
+
+
+/*! \enum pm_smbchg_bat_if_dcin_icl_type
+ \brief enum for configuring dcin input current limit mode
+ */
+typedef enum pm_smbchg_bat_if_dcin_icl_type
+{
+ PM_SMBCHG_BAT_IF_DCIN_PASS_THROUGH_MODE, /** < pass through mode and ~9.8v >*/
+ PM_SMBCHG_BAT_IF_DCIN_LOW_VOLT_MODE, /** <low volt mode, DCIN less than 6.5v, DIV2_EN =1 >*/
+ PM_SMBCHG_BAT_IF_DCIN_HIGH_VOLT_MODE, /** <high volt mode DCIN >= 6.5v and max 9v, , DIV2_EN =1 >*/
+ PM_SMBCHG_BAT_IF_DCIN_INVALID_MODE, /** <INVALID mode >*/
+}pm_smbchg_bat_if_dcin_icl_type;
+
+
+/*! \enum pm_smbchg_irq_bit_field_type
+ \brief different types of irq bit fields of by smbch_bat_if irq module
+ */
+typedef enum {
+ PM_SMBCHG_BAT_IF_HOT_BAT_HARD_LIM,
+ PM_SMBCHG_BAT_IF_HOT_BAT_SOFT_LIM,
+ PM_SMBCHG_BAT_IF_COLD_BAT_HARD_LIM,
+ PM_SMBCHG_BAT_IF_COLD_BAT_SOFT_LIM,
+ PM_SMBCHG_BAT_IF_BAT_OV,
+ PM_SMBCHG_BAT_IF_BAT_LOW,
+ PM_SMBCHG_BAT_IF_BAT_MISSING,
+ PM_SMBCHG_BAT_IF_BAT_TERM_MISSING,
+ PM_SMBCHG_BAT_IF_IRQ_INVALID
+}pm_smbchg_bat_if_irq_type;
+
+/*===========================================================================
+
+ SMBCHG BAT_IF DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+
+/*Returns battery presence status*/
+/**
+ * @brief This function returns battery presence status.
+ *
+ * @details
+ * This function returns battery presence status..
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out]bat_present. TRUE: Present, FALSE: not present
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_bat_pres_status(uint32 device_index, boolean *bat_present);
+
+
+/*This API clears the dead battery timer*/
+/**
+ * @brief This function clears the dead battery timer
+ *
+ * @details
+ * This function clears the dead battery timer.
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_clear_dead_bat_timer(uint32 device_index);
+
+
+
+/**
+ * @brief This function writes to battery interface command control to enable/disable wireless charging,
+ * thermal current override, stat output, fast charge, battery charging, OTG .
+ *
+ * @details
+ * This function writes to battery interface command control to enable/disable wireless charging,
+ * thermal current override, stat output, fast charge, battery charging, OTG .
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in]cmd_chg_cfg. Refer pm_smbchg_bat_if_cmd_chg_type
+ * for more info
+ * @param[in]boolean TRUE: enable, FALSE: disable
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_config_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean enable);
+
+
+
+ /**
+ * @brief This function reads to battery interface command control to enable/disable wireless charging,
+ * thermal current override, stat output, fast charge, battery charging, OTG .
+ *
+ * @details
+ * This function reads to battery interface command control to
+ * enable/disable wireless charging, thermal current override,
+ * stat output, fast charge, battery charging, OTG .
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in]cmd_chg_cfg. Refer pm_smbchg_bat_if_cmd_chg_type
+ * for more info
+ * @param[out]boolean TRUE: enable, FALSE: disable
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean *enable);
+
+/*Sets low battery voltag threshold*/
+/**
+ * @brief This function sets low battery voltag threshold.
+ *
+ * @details
+ * Sets low battery voltag threshold .
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in]low_bat_threshold. Refer pm_smbchg_bat_if_low_bat_thresh_type
+ * for more info
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_low_batt_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type low_bat_threshold);
+
+
+/**
+ * @brief This function reads low battery voltag threshold.
+ *
+ * @details
+ * Gets low battery voltag threshold .
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out]low_bat_threshold. Refer pm_smbchg_bat_if_low_bat_thresh_type
+ * for more info
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_low_bat_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type *low_bat_threshold);
+
+
+
+/**
+ * @brief This function configures battery missing parameters
+ *
+ * @details
+ * This API sets battery missing detection configuration like select if the
+ * battery missing monitoring should only happen at the beginning of a charge cycle
+ * or every 3 seconds
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] batt_missing_cfg. Refer pm_smbchg_bat_if_batt_missing_cfg_type
+ * for more info
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg);
+
+
+/**
+ * @brief This function reads battery missing config
+ *
+ * @details
+ * This API reads battery missing detection configuration like
+ * select if the battery missing monitoring should only happen
+ * at the beginning of a charge cycle or every 3 seconds
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] batt_missing_cfg. Refer
+ * pm_smbchg_bat_if_batt_missing_cfg_type
+ * for more info
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg);
+
+
+/**
+ * @brief This function sets battery missing detection source
+ *
+ * @details
+ * This API sets battery missing detection source
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] batt_missing_cfg. Refer
+ * pm_smbchg_bat_miss_detect_src_type
+ * for more info
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_detection_src(uint32 device_index, pm_smbchg_bat_miss_detect_src_type batt_missing_det_src);
+
+/**
+ * @brief This function sets the minimum system voltage
+ *
+ * @details
+ * This API sets the minimum system voltage. And below this
+ * voltage system and battery are not connected
+ * together.Valid values are 3150, 3450 and 3600 milli volt
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] min_sys_millivolt Valid value is 3150 mv to
+ * 3600mV
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_min_sys_volt(uint32 device_index, uint32 min_sys_millivolt);
+
+
+/**
+ * @brief This function reads the minimum system voltage
+ *
+ * @details
+ * This API reads the minimum system voltage. And below this
+ * voltage system and battery are not connected together.Valid
+ * values are 3150, 3450 and 3600 milli volt
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] min_sys_millivolt Valid value is 3150 mv to
+ * 3600mV
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_min_sys_volt(uint32 device_index, uint32 *min_sys_millivolt);
+
+
+
+/**
+ * @brief This function configures the current limit for pass
+ * through mode, low volt mode and high volt mode
+ *
+ * @details
+ * This API configures the DCIN input current limit for pass
+ * through mode, low volt mode and high volt mode in milliamp
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] dcin_icl_type refer enum pm_smbchg_bat_if_dcin_icl_type
+ * for more info
+ *
+ * @param[in] current_ma valid value 300 to 2000 mAmp
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_set_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 current_ma);
+
+/*This API reads the configured current limit for pass through mode, low volt mode and high volt mode in milliamp*/
+/**
+ * @brief This function returns the current limit for pass
+ * through mode, low volt mode and high volt mode
+ *
+ * @details
+ * This API returns the DCIN input current limit for pass
+ * through mode, low volt mode and high volt mode in milliamp
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] dcin_icl_type refer enum pm_smbchg_bat_if_dcin_icl_type
+ * for more info
+ *
+ * @param[out]current_ma valid value 300 to 2000 mAmp
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_bat_if_get_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 *current_ma);
+
+
+
+/**
+* @brief This function configures WI PWR timer.
+*
+* @details
+* This API configures WI PWR timer. div2 falling edge values:
+* 0, 150, 250, 500 usec. wipwr_irq_tmr_us values 1000,
+* 1500,2000,2500,3000,4000,4500 usec*
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] div2_falling_edge_time_us valid values are 0, 150, 250, 500usec
+* @param[in] wipwr_irq_tmr_us values 1000, 1500,2000,2500,3000,4000,4500 usec
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_set_wi_pwr_tmr(uint32 device_index, uint32 div2_falling_edge_time_us, uint32 wipwr_irq_tmr_us);
+
+/**
+* @brief This function configures WI PWR timer.
+*
+* @details
+* This API configures WI PWR timer. div2 falling edge values:
+* 0, 150, 250, 500 usec. wipwr_irq_tmr_us values 1000,
+* 1500,2000,2500,3000,4000,4500 usec*
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] div2_falling_edge_time_us valid values are 0, 150, 250, 500usec
+* @param[in] wipwr_irq_tmr_us values 1000, 1500,2000,2500,3000,4000,4500 usec
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_get_wi_pwr_tmr(uint32 device_index, uint32 *div2_falling_edge_time_us, uint32 *wipwr_irq_tmr_us);
+
+
+/**
+* @brief This function enables IRQ
+*
+* @details
+* This function enables IRQ
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_bat_if_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_enable(uint32 device_index, pm_smbchg_bat_if_irq_type irq, boolean enable);
+
+
+/**
+* @brief This function clears the SMBCHG irq
+*
+* @details
+* This function clears the SMBCHG irq
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_bat_if_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_clear(uint32 device_index, pm_smbchg_bat_if_irq_type irq);
+
+/**
+* @brief This function configures the SMBCHG irq trigger
+*
+* @details
+* This function configures the SMBCHG irq trigger
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_bat_if_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_set_trigger(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+* @brief This function configures the SMBCHG for irq
+*
+* @details
+* This function configures the SMBCHG for irq
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_bat_if_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_bat_if_irq_status(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+
+#endif /* PM_SMBCHG_BAT_IF_H*/
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_chgr.h b/dev/pmic/pmi8994/include/pm_smbchg_chgr.h
new file mode 100644
index 0000000..d063e32
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_chgr.h
@@ -0,0 +1,734 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_CHGR_H
+#define PM_SMBCHG_CHGR_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+ TYPE DEFINITIONS
+
+===========================================================================*/
+
+/*! \enum pm_smbchg_chgr_irq_bit_field_type
+ \brief different types of irq bit fields of by smbb irq module
+ */
+typedef enum {
+ PM_SMBCHG_CHGR_CHGR_ERROR,
+ PM_SMBCHG_CHGR_GR_INHIBIT,
+ PM_SMBCHG_CHGR_CHGR_PRECHG_SFT,
+ PM_SMBCHG_CHGR_CHGR_COMPLETE_CHG_SFT,
+ PM_SMBCHG_CHGR_BAT_FT_P2F_CHG_THRESHOLD,
+ PM_SMBCHG_CHGR_BAT_LT_RECHG_THRESHOLD,
+ PM_SMBCHG_CHGR_BAT_TAPER_MODE_CHARGING,
+ PM_SMBCHG_CHGR_BAT_TCC_REACHED,
+ PM_SMBCHG_CHGR_IRQ_INVALID
+}pm_smbchg_chgr_irq_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_CHGR_NO_CHARGING,
+ PM_SMBCHG_CHGR_PRE_CHARGING,
+ PM_SMBCHG_CHGR_FAST_CHARGING,
+ PM_SMBCHG_CHGR_TAPER_CHARGING,
+ PM_SMBCHG_CHGR_CHARGING_INVALID
+}pm_smbchg_chgr_charging_type;
+
+typedef struct
+{
+ boolean is_net_i_discharg;
+ /* is_net_discharg_i: FALSE = Net charging current, TRUE = Net dis-charging current*/
+ boolean is_auto_fv_comp_active;
+ /*automatic float voltage compensation status. FALSE=Inactive, TRUE=Active*/
+ boolean is_chgr_done_once;
+ /*Done Status, FALSE = No charging cycles have terminated since Charging first enabled,
+ TRUE = At least 1 charging cycle has terminated since Charging first enabled */
+ boolean is_batt_lt_2v;
+ /*battery voltage less than 2v*/
+ boolean is_chgr_in_hold_off;
+ /*charging hold off status. FALSE: charger not in hold off; TRUE: charger in hold off*/
+ pm_smbchg_chgr_charging_type charging_type;
+ /*type of charging happening*/
+ boolean charger_enable;
+ /*FALSE= charging command/pin is not asserted. TRUE = charging command/pin asserted*/
+}pm_smbchg_chgr_chgr_status_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_CHGR_CCMPN__COLD_SL_CHG_I_COMP, /** <Cold SL Charge Current Compensation >*/
+ PM_SMBCHG_CHGR_CCMPN__HOT_SL_CHG_I_COMP, /** <Hot SL Charge Current Compensation >*/
+ PM_SMBCHG_CHGR_CCMPN__COLD_SL_FV_COMP, /** <Cold SL Float Voltage Compensation >*/
+ PM_SMBCHG_CHGR_CCMPN__HOT_SL_FV_COMP, /** <Hot SL Float Voltage Compensation >*/
+ PM_SMBCHG_CHGR_CCMPN__LOAD_BAT, /** <Load Battery during Float Voltage Compensation >*/
+ PM_SMBCHG_CHGR_CCMPN__JEITA_TEMP_HARD_LIMIT, /** <Jeita Temperature Hard Limit disable >*/
+ PM_SMBCHG_CHGR_CCMPN__TEMP_MONITOR_ENABLE, /** <Temperature Monitor Enabled when input is present>*/
+ PM_SMBCHG_CHGR_CCMPN__INVALID /** < Invalid >*/
+}pm_smbchg_chgr_ccmpn_type;
+
+
+//output that can be used as an input or a systerm O.k. indicator
+typedef enum
+{ //INOK output is asserted to indicate valid input adapter presence
+ PM_SMBCHG_CHGR_SYSOK_OPT__INOK_OPT_1, //The INOK is asserted only per the input voltage level and as soon as the glitch filter timer has expired
+ PM_SMBCHG_CHGR_SYSOK_OPT__INOK_OPT_2, //The INOK is asserted only when the input FET is on and the charger buck soft-start has completed and only after the APSD algorithm has completed (if enabled)
+ PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_A_1, //the SYSOK goes active LOW when no valid input power is present and the battery voltage is lower than the programmable low-battery/SYSOK voltage threshold (VLOWBATT) or the battery is missing
+ PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_A_2, //the SYSOK goes active LOW when the battery voltage is lower than the programmable low-battery / SYSOK voltage threshold (VLOWBATT) or the battery is missing, regardless of the input being present
+ PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_BC_1,
+ PM_SMBCHG_CHGR_SYSOK_OPT__SYSOK_OPT_BC_2,
+ PM_SMBCHG_CHGR_SYSOK_OPT__CHG_DET_OPT_1,
+ PM_SMBCHG_CHGR_SYSOK_OPT__CHG_DET_OPT_2,
+ PM_SMBCHG_CHGR_SYSOK_OPT__INVALID
+} pm_smbchg_chgr_sysok_opt_type;
+
+typedef struct
+{
+ boolean cont_without_fg_ready; //do not holdoff charging and continue without FG Ready
+ boolean is_rchg_threshold_src_fg; //Recharge Threshold Source: TRUE:Fuel GaugeADC; FALSE:Analog sensor
+ boolean is_term_current_src_fg; //TRUE: Early current termination source fuel gauge ADC; FALSE: Analog sensor
+ boolean en_early_current_termination; //Early Current Termination
+ pm_smbchg_chgr_sysok_opt_type sysok_opt;
+ boolean en_sysok_pol_table_n; //TRUE: Inverse of Table in DOS; FALSE:Table in DOS
+ boolean en_charger_inhibit;
+ boolean is_holdoff_tmr_350ms; // TRUE: 350ms and FALSE: 700us
+ boolean auto_rchg_dis; //TRUE: disable automatic recharge; FALSE: enable automatic discharge
+ boolean current_termination_dis; //TRUE: current termination disabled, FALSE: current termination enabled
+ boolean batt_ov_ends_cycle_en; //battery over voltage ends charge cycle
+ boolean p2f_chg_tran_require_cmd; //TRUE: pre to fast charge transition requires command; FALSE: automatic transation
+}pm_chgr_chgr_cfg_type;
+
+
+typedef enum pm_smbchg_chgr_sfty_timer_type
+{
+ PM_SMBCHG_CHGR_SFTY_TIMER__PC_EN_TC_EN, //Pre-Charge and Total Charge Safety Timers Enabled
+ PM_SMBCHG_CHGR_SFTY_TIMER__PC_DIS_TC_EN, // Pre-Charge Safety Timer Disabled, Total Charge Safety Timer Enabled
+ PM_SMBCHG_CHGR_SFTY_TIMER__PC_DIS_TC_DIS, //Pre-Charge and Total Charge Safety Timers Disabled
+ PM_SMBCHG_CHGR_SFTY_TIMER__INVAID_TYPE
+} pm_smbchg_chgr_sfty_timer_type;
+
+/*===========================================================================
+
+ SMBCHG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+/**
+* @brief This function returns if battery is above VBAt_WEAK or
+* not
+*
+* @details
+* This API returns if battery is above VBAT_WEAK threshold or
+* not
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] is_above_vbat_weak if above then TRUE else FLASE
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_vbat_sts(uint32 device_index, boolean *is_above_vbat_weak);
+
+
+/**
+* @brief This function returns the float vlotage status
+*
+* @details
+* This API returns the float vlotage status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] aicl_in_hard_limit TRUE if AICL is hard limit else FALSE
+* @param[out] fv_mv Float voltage value; 3600mv to 4500mv
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_sts(uint32 device_index, boolean *aicl_in_hard_limit, uint32 *fv_mv);
+
+
+/**
+* @brief This function returns the pre charger and fast charger current status in milliam
+*
+* @details
+* This API returns the pre charger and fast charger current status in milliamp
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] pre_charge_current_ma Pre-charge current value in milli amp.
+* @param[in] fast_charge_current_ma Fast charge current value in milli amp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chg_i_sts(uint32 device_index, uint32 *pre_charge_current_ma, uint32 *fast_charge_current_ma);
+
+
+/**
+* @brief This function returns charger status
+*
+* @details
+* This function returns status for charging/discharging, active/inactive AFV compensation, charging
+* done at least once, battery voltage less than 2v, charge hold off, current charging state, charging
+* enable/disable status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] pm_smbchg_chgr_chgr_status_type Refer enum pm_smbchg_chgr_chgr_status_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_sts(uint32 device_index, pm_smbchg_chgr_chgr_status_type *chgr_sts);
+
+
+/**
+* @brief This function configures the pre-charger current value in milliamp. Valid values are 100 to 550 mAmp
+*
+* @details
+* This API configures the pre-charger current value in milliamp. Valid values are 100 to 550 mAmp
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] pre_chg_i_ma Pre charge current in milliamp. Values are 100 to 550mAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_pre_chg_i(uint32 device_index, uint32 pre_chg_i_ma);
+
+
+/**
+* @brief This function configures the fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp
+*
+* @details
+* This API configures the fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] fast_chg_i_ma fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i(uint32 device_index, uint32 fast_chg_i_ma);
+
+
+/**
+* @brief This function configures the fast-charger current compensation value in milliamp
+*
+* @details
+* This API configures the fast-charger current compensation value in milliamp.
+* Valid values are 300 to 1200 mAmp
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] fast_chg_i_cmp_ma fast-charger current compensation value in milliamp.
+* Valid values are 300 to 1200 mAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i_cmpn(uint32 device_index, uint32 fast_chg_i_cmp_ma);
+
+
+/**
+* @brief This function This API configures the floating voltage
+*
+* @details
+* This API configures the floating voltage. Valid range is 3600mV to 4500 mv
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] float_volt_mv Valid range is 3600mV to 4500 mv
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt(uint32 device_index, uint32 float_volt_mv);
+
+/**
+* @brief This function returns configured floating voltage
+*
+* @details
+* This function returns set floating voltage
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] float_volt_mv set float voltage
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cfg(uint32 device_index, uint32 *float_volt_mv);
+
+
+/**
+* @brief This function sets floating voltage conpmensation code
+*
+* @details
+* This api sets floating voltage conpmensation code. Valid
+* value is from 0 to 63
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] float_volt_cmpn Valid value is from 0 to 63
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt_cmpn(uint32 device_index, uint32 float_volt_cmpn);
+
+
+/**
+* @brief This function reads floating voltage conpmensation code
+*
+* @details
+* This api reads floating voltage conpmensation code. Valid
+* value is from 0 to 6300mV
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] float_volt_cmpn Valid value is from 0 to 6300 mV
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cmpn(uint32 device_index, uint32 *float_volt_cmpn);
+
+
+/**
+* @brief This function enables/disables Charger Auto Float
+* Voltage Compensation
+*
+* @details
+* This api enables/disables Charger Auto Float Voltage Compensation
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] enable TRUE enables and FALSE disables
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_en_afvc(uint32 device_index, boolean enable);
+
+
+/**
+* @brief This function sets charge inhibit level
+*
+* @details
+* This API sets charge inhibit level
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] inhibit_lvl_mv valid range is 50 to 300mv
+*
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_inhibi_threshold(uint32 device_index, uint32 inhibit_lvl_mv);
+
+
+/**
+* @brief This function returns charge inhibit level
+*
+* @details
+* This API returns charge inhibit level
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] inhibit_lvl_mv valid range is 50 to 300mv
+*
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_inhibi_threshold(uint32 device_index, uint32 *inhibit_lvl_mv);
+
+
+/**
+* @brief This function sets the pre-charge to full charger
+* threshold
+*
+* @details
+* This API sets the pre-charge to full charger threshold. Valid range is 2400mV to 3000mV
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] milli_volt Valid range is 2400mV to 3000mV
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_p2f_threshold(uint32 device_index, uint32 milli_volt);
+
+
+/**
+ * @brief This function returns the pre-charge to full charger
+ * threshold
+ *
+ * @details
+ * This API returns the pre-charge to full charger threshold.
+ * Valid range is 2400mV to 3000mV
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] milli_volt Valid range is 2400mV to
+ * 3000mV
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_chgr_get_p2f_threshold(uint32 device_index, uint32 *milli_volt);
+
+
+/**
+* @brief This function sets the charge termination current
+*
+* @details
+* This API sets the charge termination current in milliamp
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] current_ma Termination current. Value range is 50 to 600 milliAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_set_charge_termination_current(uint32 device_index, uint32 current_ma);
+
+
+/**
+* @brief This function returns the charge termination current
+*
+* @details
+* This API returns the charge termination current in milliamp
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] current_ma Termination current. Value range is 50 to 600 milliAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_charge_termination_current(uint32 device_index, uint32 *current_ma);
+
+
+/**
+* @brief This function configures charger temperature compensation
+*
+* @details
+* This function configures charger temperature compensation
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] ccmpn_type Refer pm_smbchg_ccmpn_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_config_chgr_temp_cmpn(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean enable);
+
+
+/**
+* @brief This function returns configured charge temperature compensation
+*
+* @details
+* This function returns configured charge temperature compensation
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ccmpn_type Refer pm_smbchg_ccmpn_type for more info
+* @param[in] enable TRUE : set, FALSE: clear
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_temp_cmpn_config(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean *enable);
+
+
+/**
+* @brief This function configures charger related paramters.
+*
+* @details
+* This function configures charger related paramters.
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] chgr_cfg_type Refer struct pm_chgr_chgr_cfg_type for more info
+* @param[out] enable TRUE : set, FALSE: clear
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_config_chgr(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type);
+
+
+/**
+* @brief This function returns configured charger related
+* paramters.
+*
+* @details
+* This function returns configured charger related paramters.
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] chgr_cfg_type Refer struct pm_chgr_chgr_cfg_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_config(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type);
+
+/**
+* @brief This function configures safety timer
+*
+* @details
+* This function configures safety timer
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] pre_chg_sfty_min Total pre-charge safety timer timeout. Valid values is 24 to 192 minutes
+* @param[in] total_chg_sfty_min Total charge safety timer timeout. Valid values is 192 to 1536 minutes
+* @param[in] sfty_timer_type refer pm_smbchg_chgr_sfty_timer_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_config_sfty_timer(uint32 device_index, uint32 pre_chg_sfty_min, uint32 total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type sfty_timer_type);
+
+
+/**
+* @brief This function returns configured safety timer
+*
+* @details
+* This function returns configured safety timer
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] pre_chg_sfty_min Total pre-charge safety timer timeout. Valid values is 24 to 192 minutes
+* @param[out] total_chg_sfty_min Total charge safety timer timeout. Valid values is 192 to 1536 minutes
+* @param[out] sfty_timer_type refer pm_smbchg_chgr_sfty_timer_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_get_sfty_timer_config(uint32 device_index, uint32 *pre_chg_sfty_min, uint32 *total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type *sfty_timer_type);
+
+
+/**
+* @brief This function enables irq
+*
+* @details
+* This function enables irq
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_chgr_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_enable(uint32 device_index, pm_smbchg_chgr_irq_type irq, boolean enable);
+
+
+/**
+* @brief This function clears the SMBCHG irq
+*
+* @details
+* This function clears the SMBCHG irq
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_chgr_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_clear(uint32 device_index, pm_smbchg_chgr_irq_type irq);
+
+
+/**
+* @brief This function configures the SMBCHG irq trigger
+*
+* @details
+* This function configures the SMBCHG irq trigger
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_chgr_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_set_trigger(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+* @brief This function configures the SMBCHG for irq
+*
+* @details
+* This function configures the SMBCHG for irq
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_chgr_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgr_irq_status(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_status_type type, boolean *status);
+
+/**
+ * @brief This function enables source as command or pin
+ * controlled.
+ *
+ * @details
+ * This function enables source as command or pin controlled.
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] chg_en_src TRUE: Enables Pin
+ * FALSE: Command Register
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_chgr_enable_src(uint32 device_index, boolean chg_en_src);
+
+/**
+ * @brief This function sets the command/pin polarity
+ *
+ * @details
+ * This function sets the command/pin polarity .
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] chg_pol_low TRUE: sets polarity low
+ * FASLE: sets polarity high
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_chgr_set_chg_polarity_low(uint32 device_index, boolean chg_pol_low);
+
+#endif /* PM_SMBCHG_CHGR_H */
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_dc_chgpth.h b/dev/pmic/pmi8994/include/pm_smbchg_dc_chgpth.h
new file mode 100644
index 0000000..96cec14
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_dc_chgpth.h
@@ -0,0 +1,329 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_DC_CHGPTH_H
+#define PM_SMBCHG_DC_CHGPTH_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+ TYPE DEFINITIONS
+
+===========================================================================*/
+typedef enum pm_smbchg_dcin_adptr_allowance
+{
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_OR_9V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_TO_9V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_9V,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_UNREG,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_5V_9V_UNREG,
+ PM_SMBCHG_DCIN_ADPTR_ALLOWANCE_INVALID
+}pm_smbchg_dcin_adptr_allowance;
+
+
+typedef enum pm_smbchg_dc_aicl_cfg_type
+{
+ /*AICL_CFG1*/
+ PM_SMBCHG_AICL__DEB_LV_ADAPTER = 0, /*DCIN Input Collapse Option for LV adapter*/
+ PM_SMBCHG_AICL__DEB_HV_ADAPTER = 1, /*DCIN Input Collapse Option for HV adapter*/
+ PM_SMBCHG_AICL__AICL_EN = 2, /*AICL enable/disable for DC CHGPTH*/
+ PM_SMBCHG_AICL__DEB_5V_ADAPTER_SEL = 3, /*DCIN Input Collapse Glitch Filter for 5V Select, Unregulated or 5V - 9V Adapter*/
+ PM_SMBCHG_AICL__DEB_9V_ADAPTER_SEL = 4, /*DCIN Input Collapse Glitch Filter for 9V Adapter Select*/
+ PM_SMBCHG_AICL__DEB_9V_ADAPTER_EN = 5, /*DCIN Input Collapse Glitch Filter for 9V Adapter Enable*/
+ PM_SMBCHG_AICL__OV_OPTION = 6, /*FALSE = OV on USBIN will block DCIN current path; TRUE = OV on USBIN will not block DCIN current path*/
+ /*AICL_CFG2*/
+ PM_SMBCHG_AICL__AICL_THRESHOLD_5V = 8, /*DCIN 5V AICL Threshold*/
+ PM_SMBCHG_AICL__AICL_THRESHOLD_5V_TO_9V = 9, /*AICL 5v to 9v threshold. FLASE : DC_AICL_6P25_OR_4P25, TRUE : DC_AICL_6P75_OR_4P40*/
+ PM_SMBCHG_AICL__DEB_UV = 10, /* FALSE = 20ms DCIN falling, 20ms DCIN rising, TRUE= 10us DCIN falling, 10ms DCIN rising */
+ PM_SMBCHG_AICL__INVALID_CFG /*INVALID*/
+}pm_smbchg_dc_aicl_cfg_type;
+
+/*AICL restart timer*/
+typedef enum pm_smbchg_dc_chgpth_aicl_rstrt_tmr
+{
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_45s,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_1p5m,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_3m,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_6m,
+ PM_SMBCHG_AICL_WL_RSTRT_TMR_INVALID
+}pm_smbchg_dc_chgpth_aicl_rstrt_tmr;
+
+/*! \enum pm_smbchg_usb_chgpth_irq_bit_field_type
+ \brief different types of irq bit fields of by smbb irq module
+ */
+typedef enum {
+ PM_SMBCHG_DC_CHGPTH_DCBIN_UV,
+ PM_SMBCHG_DC_CHGPTH_DCBIN_OV,
+ PM_SMBCHG_DC_CHGPTH_IRQ_INVALID
+}pm_smbchg_dc_chgpth_irq_type;
+
+
+
+
+/*===========================================================================
+
+ SMBCHG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+
+ /**
+ * @brief This function configures ADCIN adapter allowance
+ *
+ * @details
+ * This API configures ADCIN adapter allowance
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] adptr_allowance Refer pm_smbchg_dcin_adptr_allowance for more information
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance adptr_allowance);
+
+
+ /**
+ * @brief This function returns configured ADCIN adapter allowance
+ *
+ * @details
+ * This API returns configured ADCIN adapter allowance
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] adptr_allowance Refer pm_smbchg_dcin_adptr_allowance for more information
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance *adptr_allowance);
+
+
+ /**
+ * @brief This function sets the DCIN numput current limit
+ *
+ * @details
+ * This function sets the DCIN numput current limit
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] current_ma valid range is 300 to 2000 milliAmp
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_current_limit(uint32 device_index, uint32 current_ma);
+
+
+ /**
+ * @brief This function reads the DCIN numput current limit
+ *
+ * @details
+ * This function reads the DCIN numput current limit
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] current_ma valid range is 300 to 2000 milliAmp
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_current_limit(uint32 device_index, uint32 *current_milli_amp);
+
+
+ /**
+ * @brief This function configures various AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ *
+ * @details
+ * This function configures various AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] dc_aicl_cfg Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * @param[in] enable TRUE sets, FALSE clears
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_config_aicl(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean enable);
+
+
+ /**
+ * @brief This function returns configured AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ *
+ * @details
+ * This function returns configured AICL parameters. Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] dc_aicl_cfg Refer struct pm_smbchg_dc_aicl_cfg for more info.
+ * @param[out]enable TRUE sets, FALSE clears
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean *enable);
+
+
+ /**
+ * @brief This function sets the AICL restart timer
+ *
+ * @details
+ * This function sets the AICL restart timer
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] timer_type Refer enum pm_smbchg_dc_chgpth_aicl_rstrt_tmr
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr timer_type);
+
+
+ /**
+ * @brief This function returns the AICL restart timer value
+ *
+ * @details
+ * brief This function returns the AICL restart timer value
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] timer_type Refer enum pm_smbchg_dc_chgpth_aicl_rstrt_tmr
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr *timer_type);
+
+
+/**
+ * @brief This function enables irq
+ *
+ * @details
+ * This function enables irq
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] irq pm_smbchg_dc_chgpth_irq_type
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_enable(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, boolean enable);
+
+
+/**
+ * @brief This function clears the SMBCHG irq
+ *
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:
+ * SMBCHG irq type. Refer enum pm_smbchg_dc_chgpth_irq_type.
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_clear(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq);
+
+
+/**
+ * @brief This function configures the SMBCHG irq trigger
+ *
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:
+ * SMBCHG irq type. Refer enum pm_smbchg_dc_chgpth_irq_type.
+ * @param[in] trigger:
+ * One of different irq triggers. Refer enum pm_irq_trigger_type
+ * from pm_uefi_irq.h for more details
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+ * @brief This function configures the SMBCHG for irq
+ *
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:
+ * SMBCHG irq type. Refer enum pm_Smbb_irq_type.
+ * @param[in] type:
+ * Type of IRQ status to read. Refer enum pm_irq_status_type
+ * from pm_uefi_irq.h for more details
+ * @param[out] status:
+ * IRQ status.
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_status(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+#endif /* PM_SMBCHG_DC_CHGPTH_H */
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_driver.h b/dev/pmic/pmi8994/include/pm_smbchg_driver.h
new file mode 100644
index 0000000..0c0f0ab
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_driver.h
@@ -0,0 +1,355 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_DRIVER__H
+#define PM_SMBCHG_DRIVER__H
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+#include "pm_resources_and_types.h"
+#include "pm_comm.h"
+
+/*===========================================================================
+
+ STRUCTURE TYPE AND ENUM
+
+===========================================================================*/
+
+
+/************************************************************************/
+/* register definitions */
+/************************************************************************/
+typedef struct
+{
+ uint32 base_address; //0x1200
+
+ pm_register_address_type perph_subtype; // 0x1205
+ pm_register_address_type bat_pres_status; // 0x1208
+ pm_register_address_type int_rt_sts; // 0x1210
+ pm_register_address_type int_set_type; // 0x1211
+ pm_register_address_type int_polarity_high; // 0x1212
+ pm_register_address_type int_polarity_low; // 0x1213
+ pm_register_address_type int_latched_clr; // 0x1214
+ pm_register_address_type int_en_set; // 0x1215
+ pm_register_address_type int_en_clr; // 0x1216
+ pm_register_address_type int_latched_sts; // 0x1218
+ pm_register_address_type int_pending_sts; // 0x1219
+ pm_register_address_type int_mid_sel; // 0x121a
+ pm_register_address_type int_priority; // 0x121b
+ pm_register_address_type ship_mode; // 0x1240
+ pm_register_address_type clr_dead_bat_timer; // 0x1241
+ pm_register_address_type cmd_chg; // 0x1242
+ pm_register_address_type sec_access; // 0x12d0
+ pm_register_address_type spare; // 0x12df
+ pm_register_address_type int_test1; // 0x12e0
+ pm_register_address_type int_test_val; // 0x12e1
+ pm_register_address_type trim_num; // 0x12f0
+ pm_register_address_type vbl_cfg; // 0x12f1
+ pm_register_address_type vbl_sel_cfg; // 0x12f2
+ pm_register_address_type bm_cfg; // 0x12f3
+ pm_register_address_type cfg_sysmin; // 0x12f4
+ pm_register_address_type cfg_systh; // 0x12f5
+ pm_register_address_type ss_cfg; // 0x12f6
+ pm_register_address_type cfg_bb_clmp_sel; // 0x12f8
+ pm_register_address_type trim9; // 0x12f9
+ pm_register_address_type isense_cfg1; // 0x12fa
+ pm_register_address_type isense_cfg2; // 0x12fb
+ pm_register_address_type zin_icl_pt; // 0x12fc
+ pm_register_address_type zin_icl_lv; // 0x12fd
+ pm_register_address_type zin_icl_hv; // 0x12fe
+ pm_register_address_type wi_pwr_tmr; // 0x12ff
+}smbchg_bat_if_register_ds;
+
+typedef struct smbchg_otg_register_ds
+{
+ pm_register_address_type base_address; //0x1100
+
+ pm_register_address_type perph_subtype; // 0x1105
+ pm_register_address_type sec_access; // 0x11d0
+ pm_register_address_type spare; // 0x11df
+ pm_register_address_type otg_cfg; // 0x11f1
+ pm_register_address_type cfg_battuv; // 0x11f2
+ pm_register_address_type otg_icfg; // 0x11f3
+ pm_register_address_type tr_isotg; // 0x11f4
+ pm_register_address_type tr_otg_sns; // 0x11f5
+ pm_register_address_type trim6; // 0x11f6
+ pm_register_address_type tr_istr; // 0x11f7
+ pm_register_address_type cfg_tloop; // 0x11f8
+ pm_register_address_type chg_pbs_trig_control; // 0x11f9
+ pm_register_address_type tr_pwr_tr; // 0x11fa
+ pm_register_address_type tr_pwr_trb_a; // 0x11fb
+ pm_register_address_type tr_pwr_trb_b; // 0x11fc
+ pm_register_address_type tr_pwr_trs; // 0x11fd
+ pm_register_address_type tr_pwr_tr_bgtr; // 0x11fe
+ pm_register_address_type low_pwr_options; // 0x11ff
+}smbchg_otg_register_ds;
+
+typedef struct
+{
+ uint32 base_address; //0x1000
+
+ pm_register_address_type perph_subtype; //0x1005
+ pm_register_address_type chg_option; //0x1008
+ pm_register_address_type vbat_status; //0x100B
+ pm_register_address_type fv_sts; //0x100C
+ pm_register_address_type ichg_sts; //0x100D
+ pm_register_address_type chgr_sts; //0x100E
+ pm_register_address_type int_rt_sts; //0x1010
+ pm_register_address_type int_set_type; //0x1011
+ pm_register_address_type int_polarity_high; //0x1012
+ pm_register_address_type int_polarity_low; //0x1013
+ pm_register_address_type int_latched_clr; //0x1014
+ pm_register_address_type int_en_set; //0x1015
+ pm_register_address_type int_en_clr; //0x1016
+ pm_register_address_type int_latched_sts; //0x1018
+ pm_register_address_type int_pending_sts; //0x1019
+ pm_register_address_type int_mid_sel; //0x101A
+ pm_register_address_type int_priority; //0x101B
+ pm_register_address_type sec_access; //0x10D0
+ pm_register_address_type spare; //0x10DF
+ pm_register_address_type pcc_cfg; //0x10F1
+ pm_register_address_type fcc_cfg; //0x10F2
+ pm_register_address_type fcc_cmp_cfg; //0x10F3
+ pm_register_address_type fv_cfg; //0x10F4
+ pm_register_address_type fv_cmp_cfg; //0x10F5
+ pm_register_address_type cfg_afvc; //0x10F6
+ pm_register_address_type cfg_chg_inhib; //0x10F7
+ pm_register_address_type cfg_p2f; //0x10F8
+ pm_register_address_type cfg_tcc; //0x10F9
+ pm_register_address_type ccmp_cfg; //0x10FA
+ pm_register_address_type chgr_cfg1; //0x10FB
+ pm_register_address_type chgr_cfg2; //0x10FC
+ pm_register_address_type sft_cfg; //0x10FD
+ pm_register_address_type stat_cfg; //0x10FE
+ pm_register_address_type cfg; //0x10FF
+}smbchg_chgr_register_ds;
+
+typedef struct
+{
+ uint32 base_address; //0x1400
+
+ pm_register_address_type perph_subtype; //0x1405
+ pm_register_address_type int_rt_sts; //0x1410
+ pm_register_address_type int_set_type; //0x1411
+ pm_register_address_type int_polarity_high; //0x1412
+ pm_register_address_type int_polarity_low; //0x1413
+ pm_register_address_type int_latched_clr; //0x1414
+ pm_register_address_type int_en_set; //0x1415
+ pm_register_address_type int_en_clr; //0x1416
+ pm_register_address_type int_latched_sts; //0x1418
+ pm_register_address_type int_pending_sts; //0x1419
+ pm_register_address_type int_mid_sel; //0x141a
+ pm_register_address_type int_priority; //0x141b
+ pm_register_address_type sec_access; //0x14d0
+ pm_register_address_type spare; //0x14df
+ pm_register_address_type int_test1; //0x14e0
+ pm_register_address_type int_test_val; //0x14e1
+ pm_register_address_type tm_en_atest_dcin; //0x14e2
+ pm_register_address_type trim_num; //0x14f0
+ pm_register_address_type dcin_chgr_cfg; //0x14f1
+ pm_register_address_type dcin_il_cfg; //0x14f2
+ pm_register_address_type dc_aicl_cfg1; //0x14f3
+ pm_register_address_type dc_aicl_cfg2; //0x14f4
+ pm_register_address_type aicl_wl_sel_cfg; //0x14f5
+ pm_register_address_type temp_comp_cfg; //0x14f6
+ pm_register_address_type tr_temp; //0x14fa
+}smbchg_dc_chgpth_register_ds;
+
+
+typedef struct
+{
+ uint32 base_address; // 0x1600
+
+ pm_register_address_type revision1; // 0x1600
+ pm_register_address_type revision2; // 0x1601
+ pm_register_address_type revision3; // 0x1602
+ pm_register_address_type revision4; // 0x1603
+ pm_register_address_type perph_type; // 0x1604
+ pm_register_address_type perph_subtype; // 0x1605
+ pm_register_address_type idev_sts; // 0x1608
+ pm_register_address_type int_rt_sts; // 0x1610
+ pm_register_address_type int_set_type; // 0x1611
+ pm_register_address_type int_polarity_high; // 0x1612
+ pm_register_address_type int_polarity_low; // 0x1613
+ pm_register_address_type int_latched_clr; // 0x1614
+ pm_register_address_type int_en_set; // 0x1615
+ pm_register_address_type int_en_clr; // 0x1616
+ pm_register_address_type int_latched_sts; // 0x1618
+ pm_register_address_type int_pending_sts; // 0x1619
+ pm_register_address_type int_mid_sel; // 0x161a
+ pm_register_address_type int_priority; // 0x161b
+ pm_register_address_type wdog_rst; // 0x1640
+ pm_register_address_type afp_mode; // 0x1641
+ pm_register_address_type gsm_pa_on_adj_en; // 0x1642
+ pm_register_address_type sec_access; // 0x16d0
+ pm_register_address_type spare; // 0x16df
+ pm_register_address_type wd_cfg; // 0x16f1
+ pm_register_address_type misc_cfg; // 0x16f2
+ pm_register_address_type cfg_ntc_vout; // 0x16f3
+ pm_register_address_type chgr_trim_options_16; // 0x16f4
+ pm_register_address_type chgr_trim_options_15_8;// 0x16f5
+ pm_register_address_type chgr_trim_options_7_0; // 0x16f6
+ pm_register_address_type tr_ipwr1; // 0x16f7
+ pm_register_address_type tr_ipwr2; // 0x16f8
+ pm_register_address_type cfg_temp_sel; // 0x16ff
+}smbchg_misc_register_ds;
+
+
+typedef struct
+{
+ uint32 base_address; //0x1300
+
+ pm_register_address_type perph_subtype; //0x1305
+ pm_register_address_type icl_sts_1; //0x1307
+ pm_register_address_type pwr_pth_sts; //0x1308
+ pm_register_address_type icl_sts_2; //0x1309
+ pm_register_address_type apsd_dg_sts; //0x130A
+ pm_register_address_type rid_sts; //0x130B
+ pm_register_address_type hvdcp_sts; //0x130C
+ pm_register_address_type input_sts; //0x130D
+ pm_register_address_type usbid_valid_id_11_8; //0x130E
+ pm_register_address_type usbid_valid_id_7_0; //0x130F
+ pm_register_address_type int_rt_sts; //0x1310
+ pm_register_address_type int_set_type; //0x1311
+ pm_register_address_type int_polarity_high; //0x1312
+ pm_register_address_type int_polarity_low; //0x1313
+ pm_register_address_type int_latched_clr; //0x1314
+ pm_register_address_type int_en_set; //0x1315
+ pm_register_address_type int_en_clr; //0x1316
+ pm_register_address_type int_latched_sts; //0x1318
+ pm_register_address_type int_pending_sts; //0x1319
+ pm_register_address_type int_mid_sel; //0x131A
+ pm_register_address_type int_priority; //0x131B
+ pm_register_address_type cmd_il; //0x1340
+ pm_register_address_type iusb_max; //0x1344
+ pm_register_address_type enum_timer_stop; //0x134E
+ pm_register_address_type sec_access; //0x13D0
+ pm_register_address_type usbin_chgr_cfg; //0x13F1
+ pm_register_address_type usbin_il_cfg; //0x13F2
+ pm_register_address_type usb_aicl_cfg; //0x13F3
+ pm_register_address_type cfg; //0x13F4
+ pm_register_address_type apsd_cfg; //0x13F5
+ pm_register_address_type wi_pwr_options; //0x13FF
+}smbchg_usb_chgpth_register_ds;
+
+typedef struct
+{
+ uint32 base_address; //0x1b00
+
+ pm_register_address_type perph_subtype; //0x1b05
+ pm_register_address_type bsi_sts; //0x1b08
+ pm_register_address_type mipi_bif_fsm_sts; //0x1b09
+ pm_register_address_type rx_fifo_sts; //0x1b0a
+ pm_register_address_type bsi_bat_sts; //0x1b0d
+ pm_register_address_type int_rt_sts; //0x1b10
+ pm_register_address_type int_set_type; //0x1b11
+ pm_register_address_type int_polarity_high; //0x1b12
+ pm_register_address_type int_polarity_low; //0x1b13
+ pm_register_address_type int_latched_clr; //0x1b14
+ pm_register_address_type int_en_set; //0x1b15
+ pm_register_address_type int_en_clr; //0x1b16
+ pm_register_address_type int_latched_sts; //0x1b18
+ pm_register_address_type int_pending_sts; //0x1b19
+ pm_register_address_type int_mid_sel; //0x1b1a
+ pm_register_address_type int_priority; //0x1b1b
+ pm_register_address_type bsi_en; //0x1b46
+ pm_register_address_type mipi_bif_err_clear; //0x1b4f
+ pm_register_address_type mipi_bif_fsm_reset; //0x1b50
+ pm_register_address_type mipi_bif_force_bcl_low; //0x1b51
+ pm_register_address_type mipi_bif_tau_cfg; //0x1b52
+ pm_register_address_type mipi_bif_mode; //0x1b53
+ pm_register_address_type mipi_bif_en; //0x1b54
+ pm_register_address_type mipi_bif_cfg; //0x1b55
+ pm_register_address_type mipi_bif_rx_cfg; //0x1b56
+ pm_register_address_type mipi_bif_tx_dly; //0x1b59
+ pm_register_address_type mipi_bif_data_tx_0; //0x1b5a
+ pm_register_address_type mipi_bif_data_tx_1; //0x1b5b
+ pm_register_address_type mipi_bif_data_tx_2; //0x1b5c
+ pm_register_address_type mipi_bif_tx_ctl; //0x1b5d
+ pm_register_address_type mipi_bif_data_rx_0; //0x1b60
+ pm_register_address_type mipi_bif_data_rx_1; //0x1b61
+ pm_register_address_type mipi_bif_data_rx_2; //0x1b62
+ pm_register_address_type rx_fifo_word1_0; //0x1b63
+ pm_register_address_type rx_fifo_word1_1; //0x1b64
+ pm_register_address_type rx_fifo_word2_0; //0x1b65
+ pm_register_address_type rx_fifo_word2_1; //0x1b66
+ pm_register_address_type rx_fifo_word3_0; //0x1b67
+ pm_register_address_type rx_fifo_word3_1; //0x1b68
+ pm_register_address_type rx_fifo_word4_0; //0x1b69
+ pm_register_address_type rx_fifo_word4_1; //0x1b6a
+ pm_register_address_type mipi_bif_bcl_raw; //0x1b6d
+ pm_register_address_type mipi_bif_error; //0x1b70
+ pm_register_address_type bat_gone_cfg; //0x1ba7
+ pm_register_address_type bat_rmv_deb_timer; //0x1ba8
+ pm_register_address_type bat_pres_deb_timer; //0x1ba9
+}smbchg_bsi_register_ds;
+
+typedef struct
+{
+ smbchg_bsi_register_ds *bsi_register;
+ smbchg_chgr_register_ds *chgr_register;
+ smbchg_otg_register_ds *otg_register;
+ smbchg_bat_if_register_ds *bat_if_register;
+ smbchg_usb_chgpth_register_ds *usb_chgpth_register;
+ smbchg_dc_chgpth_register_ds *dc_chgpth_register;
+ smbchg_misc_register_ds *misc_register;
+}smbchg_register_ds;
+
+#define BATT_MISSING_SIZE 4
+#define DCIN_SIZE 26
+#define USBIN_SIZE 32
+
+typedef struct
+{
+ uint32 batt_missing_detect_time[BATT_MISSING_SIZE];
+ uint32 dcin_current_limits[DCIN_SIZE];
+ uint32 usbin_current_limits[USBIN_SIZE];
+}chg_range_data_type;
+
+typedef struct
+{
+ pm_comm_info_type *comm_ptr;
+ smbchg_register_ds *smbchg_register;
+ uint8 num_of_peripherals;
+ chg_range_data_type *chg_range_data;
+}pm_smbchg_data_type;
+
+
+/*===========================================================================
+
+ FUNCTION DECLARATION
+
+===========================================================================*/
+void pm_smbchg_driver_init(uint32 pmic_index);
+
+pm_smbchg_data_type* pm_smbchg_get_data(uint32 pmic_index);
+
+#endif // PM_SMBCHG_DRIVER__H
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_misc.h b/dev/pmic/pmi8994/include/pm_smbchg_misc.h
new file mode 100644
index 0000000..c429d81
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_misc.h
@@ -0,0 +1,363 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_MISC_H
+#define PM_SMBCHG_MISC_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+ TYPE DEFINITIONS
+
+===========================================================================*/
+
+typedef enum pm_smbchg_misc_src_detect_type
+{
+ PM_SMBCHG_MISC_SRC_DETECT_CDP,
+ PM_SMBCHG_MISC_SRC_DETECT_DCP,
+ PM_SMBCHG_MISC_SRC_DETECT_OTHER_CHARGING_PORT,
+ PM_SMBCHG_MISC_SRC_DETECT_SDP,
+ PM_SMBCHG_MISC_SRC_DETECT_FMB_UART_ON,
+ PM_SMBCHG_MISC_SRC_DETECT_FMB_UART_OFF,
+ PM_SMBCHG_MISC_SRC_DETECT_FMB_USB_ON,
+ PM_SMBCHG_MISC_SRC_DETECT_FMB_USB_OFF,
+ PM_SMBCHG_MISC_SRC_DETECT_INVALID
+}pm_smbchg_misc_src_detect_type;
+
+
+typedef enum {
+ PM_SMBCHG_MISC_POWER_OK,
+ PM_SMBCHG_MISC_TEMP_SHUTDOWN,
+ PM_SMBCHG_MISC_WDOG_TIMER,
+ PM_SMBCHG_MISC_FLASH_FAIL,
+ PM_SMBCHG_MISC_OTS2,
+ PM_SMBCHG_MISC_OTS3,
+ PM_SMBCHG_MISC_IRQ_INVALID
+}pm_smbchg_misc_irq_type;
+
+
+typedef enum pm_smbchg_misc_sfty_after_wdog_irq_type
+{
+ PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_12MIN,
+ PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_24MIN,
+ PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_48MIN,
+ PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_96MIN,
+ PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_INVALID
+}pm_smbchg_misc_sfty_after_wdog_irq_type;
+
+typedef enum pm_smbchg_wdog_timeout_type
+{
+ PM_SMBCHG_MISC_WD_TMOUT_18S,
+ PM_SMBCHG_MISC_WD_TMOUT_36S,
+ PM_SMBCHG_MISC_WD_TMOUT_72S,
+ PM_SMBCHG_MISC_WD_TMOUT_INVALID
+}pm_smbchg_wdog_timeout_type;
+
+typedef struct pm_smbchg_misc_wdog_cfg_type
+{
+ boolean wdog_timer_en;
+ boolean wdog_option_run_always;
+ boolean wdog_irq_sfty_en;
+ pm_smbchg_misc_sfty_after_wdog_irq_type sfty_timer;
+ pm_smbchg_wdog_timeout_type wdog_timeout;
+ boolean afp_wdog_en;
+}pm_smbchg_misc_wdog_cfg_type;
+
+
+typedef enum pm_smbchg_misc_misc_fn_cfg_type
+{
+ PM_SMBCHG_MISC_FN__VCHG_PA_ON_SEL, /**< VCHG Function>*/
+ PM_SMBCHG_MISC_FN__GSM_PA_ON_ADJ_SEL, /**< PA_ON Function>*/
+ PM_SMBCHG_MISC_FN__STANDBY_VCHG, /**< Standby VCHG Function>*/
+ PM_SMBCHG_MISC_FN__CHG_OK, /**< Charge OK Function>*/
+ PM_SMBCHG_MISC_FN__PHY_ON, /**< PHY_ON Function>*/
+ PM_SMBCHG_MISC_FN__CFG_NTCVOUT, /**< Reserved>*/
+ PM_SMBCHG_MISC_FN__FETDRV, /**< Reserved>*/
+ PM_SMBCHG_MISC_FN__SYSOK_LDO, /**< SYSOK LDO Function>*/
+ PM_SMBCHG_MISC_FN__INVALID /**< INVALID>*/
+}pm_smbchg_misc_misc_fn_cfg_type;
+
+
+
+/*===========================================================================
+
+ SMBCHG OTG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+
+ /**
+ * @brief This function detects the type of chgarging port device is connected to
+ *
+ * @details
+ * This API detects the type of chgarging port device is connected to
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] src_detected Refer pm_smbchg_misc_src_detect_type for more info
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_chgr_port_detected(uint32 pmic_device, pm_smbchg_misc_src_detect_type *src_detected);
+
+
+ /**
+ * @brief This function restarts the charger watchdog
+ *
+ * @details
+ * This API restarts charger watchdog
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_wdog_rst(uint32 pmic_device);
+
+
+ /**
+ * @brief This function enables automatic fault protection
+ *
+ * @details
+ * This API enables automatic fault protection
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_en_afp(uint32 pmic_device);
+
+
+ /**
+ * @brief This function configures the charger watchdog
+ *
+ * @details
+ * This API configures the charger watchdog
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] wd_cfg Refer struct pm_smbchg_misc_wdog_cfg_type for more info
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_config_wdog(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg);
+
+
+ /**
+ * @brief This function reads the charger watchdog configuration
+ *
+ * @details
+ * This API reads the charger watchdog configuration
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[out] wd_cfg Refer struct pm_smbchg_misc_wdog_cfg_type for more info
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_get_wdog_config(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg);
+
+
+ /**
+ * @brief This function enable/disable charger watchdog
+ *
+ * @details
+ * This API enable/disable charger watchdog
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] enable_smbchg_wdog: TRUE=Enable; FALSE=Disable charger watchdog
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_enable_wdog(uint32 pmic_device, boolean enable_smbchg_wdog);
+
+
+ /**
+ * @brief This function sets charger watchdog timeout
+ *
+ * @details
+ * This API sets charger watchdog timeout
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] wdog_timeout : Refer struct pm_smbchg_wdog_timeout_type for more info
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_set_wdog_timeout(uint32 pmic_device, pm_smbchg_wdog_timeout_type wdog_timeout);
+
+
+ /**
+ * @brief This function clear/sets MISC funtions like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ *
+ * @details
+ * This function clear/sets MISC funtions like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ * VCHG output proportional to the charger/discharge current.
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] misc_cfg Refer pm_smbchg_misc_misc_fn_cfg_type for more info
+ * @param[in]enable TRUE sets and FALSE clears
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_config_misc_fn(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean enable);
+
+
+ /**
+ * @brief This function reads MISC funtions status like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ *
+ * @details
+ * This function reads MISC funtions status like VCHG, PA_ON, standby VCHG, CHGR_OK, PHY_ON, SYSOK_LDO
+ * VCHG output proportional to the charger/discharge current.
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] misc_cfg Refer pm_smbchg_misc_misc_fn_cfg_type for more info
+ * @param[out]enable TRUE sets and FALSE clears
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_get_misc_fn_config(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean* enable);
+
+ /**
+ * @brief This function enables the SMBCHG irq
+ *
+ * @details
+ * This function enables the SMBCHG irq
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] irq refer pm_smbchg_misc_irq_type
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_enable(uint32 pmic_device, pm_smbchg_misc_irq_type irq, boolean enable);
+
+ /**
+ * @brief This function clears the SMBCHG irq
+ *
+ * @details
+ * This function clears the SMBCHG irq
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] irq refer pm_smbchg_misc_irq_type
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_clear(uint32 pmic_device, pm_smbchg_misc_irq_type irq);
+
+ /**
+ * @brief This function configures the SMBCHG irq trigger
+ *
+ * @details
+ * This function configures the SMBCHG irq trigger
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] irq refer pm_smbchg_misc_irq_type
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_set_trigger(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_trigger_type trigger);
+
+ /**
+ * @brief This function configures the SMBCHG for irq
+ *
+ * @details
+ * This function configures the SMBCHG for irq
+ *
+ * @param[in] pmic_device_index. Primary: 0 Secondary: 1
+ * @param[in] irq refer pm_smbchg_misc_irq_type
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_misc_irq_status(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+
+
+
+#endif /* PM_SMBCHG_MISC_H*/
+
diff --git a/dev/pmic/pmi8994/include/pm_smbchg_usb_chgpth.h b/dev/pmic/pmi8994/include/pm_smbchg_usb_chgpth.h
new file mode 100644
index 0000000..20d39ac
--- /dev/null
+++ b/dev/pmic/pmi8994/include/pm_smbchg_usb_chgpth.h
@@ -0,0 +1,726 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef PM_SMBCHG_USB_CHGPTH_H
+#define PM_SMBCHG_USB_CHGPTH_H
+
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+
+/*===========================================================================
+
+ TYPE DEFINITIONS
+
+===========================================================================*/
+
+
+typedef enum input_current_limit_mode
+{
+ PM_SMBCHG_USB_CHGPTH_ICL_MODE_HIGH_CURRENT,
+ PM_SMBCHG_USB_CHGPTH_ICL_MODE_100mA,
+ PM_SMBCHG_USB_CHGPTH_ICL_MODE_500mA,
+ PM_SMBCHG_USB_CHGPTH_ICL_MODE_INVALID
+}input_current_limit_mode;
+
+typedef struct input_current_limit_sts
+{
+ boolean is_aicl_complete;
+ uint32 input_current_limit;
+ input_current_limit_mode icl_mode;
+ boolean is_usbin_suspended;
+ boolean is_dcin_suspended;
+ boolean is_usbin_active_pwr_src;
+ boolean is_dcin_active_pwr_src;
+}input_current_limit_sts;
+
+typedef enum pm_smbchg_usb_chgpth_pwr_pth_type
+{
+ PM_SMBCHG_USB_CHGPTH_PWR_PATH__NONE,
+ PM_SMBCHG_USB_CHGPTH_PWR_PATH__BATTERY,
+ PM_SMBCHG_USB_CHGPTH_PWR_PATH__USB_CHARGER,
+ PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER,
+ PM_SMBCHG_USB_CHGPTH_PWR_PATH__INVALID
+}pm_smbchg_usb_chgpth_pwr_pth_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH_DG_STS__RID_ABC_DG, /**< RID-A/B/C Data Connect Detect Deglitch status >*/
+ PM_SMBCHG_USB_CHGPTH_DG_STS__OCD_GOOD_DG, /**< Other Charger Device Data Connect Deglitch status >*/
+ PM_SMBCHG_USB_CHGPTH_DG_STS__DCD_GOOD_DG, /**< Data Connect Device Deglitch status >*/
+ PM_SMBCHG_USB_CHGPTH_DG_STS__DCD_TIMEOUT, /**< DCD Timeout status >*/
+ PM_SMBCHG_USB_CHGPTH_DG_STS__INVALID /**< INVALID>*/
+}pm_apsd_dg_sts_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH_RID__GND,
+ PM_SMBCHG_USB_CHGPTH_RID__FLOAT,
+ PM_SMBCHG_USB_CHGPTH_RID__A,
+ PM_SMBCHG_USB_CHGPTH_RID__B,
+ PM_SMBCHG_USB_CHGPTH_RID__C,
+ PM_SMBCHG_USB_CHGPTH_RID__INVALID
+}pm_smbchg_usb_chgpth_rid_sts_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_5V, /**< 5V High Voltage DCP Enabled >*/
+ PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_9V, /**< 9V High Voltage DCP Enabled >*/
+ PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_12V, /**< 12V High Voltage DCP Enabled>*/
+ PM_SMBCHG_USB_CHGPTH__HVDCP_SEL_20V, /**< 20V High Voltage DCP Enabled>*/
+ PM_SMBCHG_USB_CHGPTH__IDEV_HVDCP_SEL_A, /**< High Voltage DCP detected >*/
+ PM_SMBCHG_USB_CHGPTH__HVDCP_STS_INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_hvdcp_sts_type;
+
+typedef enum
+{
+ PM_SMBCHG_CHAR_TYPE_USB,
+ PM_SMBCHG_CHAR_TYPE_DC,
+ PM_SMBCHG_CHAR_TYPE_INVALID
+}pm_smbchg_usb_chgpth_chgr_type;
+
+typedef enum
+{
+ PM_SMBCHG_NO_CHGR_DETECTED,
+ PM_SMBCHG_5V_9V_CHGR_DETECTED,
+ PM_SMBCHG_UNREGULATED_CHGR_DETECTED,
+ PM_SMBCHG_9V_CHGR_DETECTED,
+ PM_SMBCHG_INVALID_DETECTED
+}pm_smbchg_usb_chgpth_input_sts_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USBCHGPTH_CMD_IL__USBIN_MODE_CHG, /**< USBIN Mode Charge >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__USB51_MODE, /**< USB5/1 Mode >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__ICL_OVERRIDE, /**< ICL Override >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__DCIN_SUSPEND, /**< DCIN Suspend >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__USBIN_SUSPEND, /**< USBIN Suspend >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__BAT_2_SYS_FET_DIS, /**< Battery-to-System FET Disable >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__SHDN_N_CLEAR_CMD, /**< shdn_n_clear command >*/
+ PM_SMBCHG_USBCHGPTH_CMD_IL__INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_cmd_il_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_LV_ADAPTER, /**< USBIN Input Collapse Option for LV adapter>*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_HV_ADAPTER, /**< USBIN Input Collapse Option for HV adapter>*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__AICL_EN, /**< TRUE:enabled, FALSE: disabled>*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_5V_ADAPTER_SEL, /**< USBIN Input Collapse Glitch Filter for 5V Select, Unregulated or 5V - 9V Adapter >*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_9V_ADAPTER_SEL, /**< USBIN Input Collapse Glitch Filter for 9V Adapter Select. >*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__DEB_9V_ADAPTER_EN, /**< USBIN Input Collapse Glitch Filter for 9V Adapter Enable >*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__OV_OPTION, /**< FALSE = OV on USBIN will block DCIN current path; TRUE = OV on USBIN will not block DCIN current path>*/
+ PM_SMBCHG_USB_CHGPTH_AICL_CFG__INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_aicl_cfg_type;
+
+typedef enum pm_smbchg_usbin_adptr_allowance
+{
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_OR_9V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_TO_9V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_9V,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_UNREG,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_5V_9V_UNREG,
+ PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID
+}pm_smbchg_usbin_adptr_allowance;
+
+/*! \enum pm_smbchg_usb_chgpth_irq_bit_field_type
+ \brief different types of irq bit fields of by smbb irq module
+ */
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH_USBIN_UV,
+ PM_SMBCHG_USB_CHGPTH_USBIN_OV,
+ PM_SMBCHG_USB_CHGPTH_USBIN_SRC_DET,
+ PM_SMBCHG_USB_CHGPTH_OTG_FAIL,
+ PM_SMBCHG_USB_CHGPTH_OTG_OVERCURRENT,
+ PM_SMBCHG_USB_CHGPTH_AICL_DONE,
+ PM_SMBCHG_USB_CHGPTH_USBID_CHANGE_INTR,
+ PM_SMBCHG_USB_CHGPTH_IRQ_INVALID
+}pm_smbchg_usb_chgpth_irq_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__CMD, /**< USB51AC Command Register Controlled. >*/
+ PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__PIN, /**< USB51AC Pin Controlled. >*/
+ PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_usb51ac_ctrl_type;
+
+typedef enum
+{
+ PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_500, /**< USB51AC Tri-state input. >*/
+ PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_100, /**< USB51AC Dual-state input. >*/
+ PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__INVALID /**< INVALID >*/
+}pm_smbchg_usb_chgpth_usb51_cmd_pol_type;
+
+typedef struct
+{
+ pm_smbchg_usb_chgpth_usb51ac_ctrl_type usb51ac_ctrl_type; /**< See pm_smbchg_usb_chgpth_usb51ac_ctrl_type for details */
+ pm_smbchg_usb_chgpth_usb51_cmd_pol_type usb51_cmd_pol_type; /**< See pm_smbchg_usb_chgpth_usb51ac_ctrl_type for details */
+}pm_usb_chgpth_usb_cfg_type;
+
+
+typedef struct pm_smbchg_usb_chgpth_apsd_cfg_type
+{
+ boolean en_auto_src_detect; /*autopower source detect enable/disable*/
+ boolean en_dcd_tmout_only; /*0 = DCD Option - Deglitchers and Timeout 1 = DCD Option - Timeout only*/
+ boolean set_rid_clk_2khz; /*0 = 1kHz; 1 = 2kHz*/
+ boolean force_icl_500ma_vbat_low_sdp; /*0X = VBATT_LOW during SDP has no effect; 1X = VBATT_LOW during SDP forces 500ma ICL*/
+ boolean sdp_suspend; /*0 = Normal SDP operation 1 = SDP enters suspend*/
+ boolean is_ocd_isel_hc; /*0 = ICL 500mA, 1 = ICL HC*/
+ boolean usb_fail_pok_hv; /*0 = Normal 1 = Use Power-OK thresholds for HV adapter*/
+ boolean is_input_prority_usbin; /*0 = DCIN has priority, 1 = USBIN has priority*/
+}pm_smbchg_usb_chgpth_apsd_cfg_type;
+
+
+typedef enum
+{
+ PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_DCIN,
+ PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_USBIN,
+ PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_INVALID
+}pm_smbchg_chgpth_input_priority_type;
+
+/*===========================================================================
+
+ SMBCHG DRIVER FUNCTION PROTOTYPES
+
+===========================================================================*/
+
+/**
+* @brief This API returns input current limit status for usb chgpth
+*
+* @details
+* This API returns input current limit status for usb chgpth
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] icl_sts Refer input_current_limit_sts for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_icl_sts(uint32 device_index, input_current_limit_sts* icl_sts);
+
+/**
+* @brief This function returns power path for device
+*
+* @details
+* This function returns power path for device
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] pwr_path Refer enum pm_pwr_pth_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_pwr_pth(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type *pwr_path);
+
+
+/**
+* @brief This function returns auto power source detection degitched status
+*
+* @details
+* his function returns auto power source detection degitched status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] apsd_dg_sts Refer enum pm_apsd_dg_sts_type for more info
+* @param[in] status Returns set or clear
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_apsd_dg_sts(uint32 device_index, pm_apsd_dg_sts_type apsd_dg_sts_type, boolean *status);
+
+/**
+* @brief This function returns RID state machine detected status
+*
+* @details
+* This function returns RID state machine detected status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] rid_sts For more info please refer pm_rid_sts_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_rid_sts(uint32 device_index, pm_smbchg_usb_chgpth_rid_sts_type *rid_sts);
+
+
+/**
+* @brief This function returns high voltage DCP detection and enable status
+*
+* @details
+* This function returns high voltage DCP detection and enable status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] hvdcp_sts Refer pm_hvdcp_sts for more info
+* @param[out]status TRUE set, FALSE clear
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_hvdcp_sts(uint32 device_index, pm_smbchg_usb_chgpth_hvdcp_sts_type hvdcp_sts, boolean *status);
+
+
+/**
+* @brief This function returns USBIN and DCIN input status
+*
+* @details
+* This function returns USBIN and DCIN input status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] chgr Refer pm_smbchg_usb_chgpth_chgr_type for more info
+* @param[in] input_sts_type Refer pm_smbchg_usb_chgpth_input_sts_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_input_sts(uint32 device_index, pm_smbchg_usb_chgpth_chgr_type chgr, pm_smbchg_usb_chgpth_input_sts_type *input_sts_type);
+
+
+/**
+* @brief This function returns the valid usbid
+*
+* @details
+* This function returns the valid usbid
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] valid_id Valid USBID read
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_valid_usbid(uint32 device_index, uint16 *valid_id);
+
+/**
+* @brief This function sets the command for current limit
+*
+* @details
+* This function sets the command for current limit
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] chgpth_cmd_il Please refer pm_chgpth_cmd_il for more info
+* @param[in] enable TRUE to set and FALSE to clear
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean enable);
+
+/**
+* @brief This function reads the command for current limit
+*
+* @details
+* This function reads the command for current limit
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] chgpth_cmd_il Please refer pm_chgpth_cmd_il for more info
+* @param[out] enable TRUE to set and FALSE to clear
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean *enable);
+
+/**
+* @brief This function sets the maximum USB current
+*
+* @details
+* This function sets the maximum USB current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] i_milli_amp Current from 100 mA to 2500 mA
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_iusb_max(uint32 device_index, uint32 i_milli_amp);
+
+/**
+* @brief This function reads the set maximum USB current
+*
+* @details
+* This function reads the set maximum USB current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] i_milli_amp Current from 100 mA to 2500 mA
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_iusb_max(uint32 device_index, uint32 *i_milli_amp);
+
+/**
+* @brief This function sets the STOP bit of enum timer
+*
+* @details
+* This function sets the STOP bit of enum timer stop. To stop the ENUM_TIMER,
+* SW has to set this STOP bit and increase IUSB_MAX above 100mA
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_enum_timer_stop(uint32 device_index);
+
+/**
+* @brief This function sets the USBIN adapter allowance
+*
+* @details
+* This function sets the USBIN adapter allowance
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] adptr_allowance Refer pm_smbchg_usbin_adptr_allowance for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance adptr_allowance);
+
+/**
+* @brief This function reads the USBIN adapter allowance
+*
+* @details
+* This function reads the USBIN adapter allowance
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] adptr_allowance Refer pm_smbchg_usbin_adptr_allowance for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance *adptr_allowance);
+
+/**
+* @brief This function sets the USBIN input current limit
+*
+* @details
+* This function sets the USBIN input current limit
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] current_ma Valid value is 300 to 3000mAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_current_limit(uint32 device_index, uint32 current_ma);
+
+/**
+* @brief This function reads the USBIN input current limit
+*
+* @details
+* This function reads the USBIN input current limit
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]current_ma Valid value is 300 to 3000mAmp
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_current_limit(uint32 device_index, uint32 *current_ma);
+
+
+/**
+* @brief This function configures the AICL for USB CHGPTH
+*
+* @details
+* This function configures the AICL for USB CHGPTH
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] usb_aicl_cfg Refer pm_smbchg_usb_aicl_cfg for more info
+* @param[in] enable TRUE: enabled, FALSE: disabled
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_config_aicl(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean enable);
+
+
+/**
+* @brief This function reads the configured the AICL for USB CHGPTH
+*
+* @details
+* This function reads the configured the AICL for USB CHGPTH
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] usb_aicl_cfg Refer pm_smbchg_usb_aicl_cfg for more info
+* @param[in] enable TRUE: enabled, FALSE: disabled
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean *enable);
+
+
+/**
+* @brief This function configures the USB charge path
+*
+* @details
+* This function configures the USB charge path
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] usb_cfg_type Refer usb_cfg_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_config_usb_chgpth(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type);
+
+
+/**
+* @brief This function gets configuration for the USB charge path
+*
+* @details
+* This function gets configuration for the USB charge path
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] usb_cfg_type Refer usb_cfg_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usb_chgpth_config(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type);
+
+
+/**
+* @brief This function configures USB charge path for auto power source detection
+*
+* @details
+* This function configures USB charge path for auto power source detection
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] apsd_cfg Refer pm_smbchg_usb_chgpth_apsd_cfg_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_config_apsd(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg);
+
+
+/**
+* @brief This function reads configuration for USB charge path auto power source detection
+*
+* @details
+* This function reads configuration for USB charge path auto power source detection
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] apsd_cfg Refer pm_smbchg_usb_chgpth_apsd_cfg_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_get_apsd_config(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg);
+
+
+/**
+* @brief This function sets chgpath input priority
+*
+* @details
+* This function sets chgpath input priority
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] chgpth_priority: Refer pm_smbchg_chgpth_input_priority_type for more info
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_chgpth_set_input_priority(uint32 device_index, pm_smbchg_chgpth_input_priority_type chgpth_priority);
+
+/**
+* @brief This function enables irq
+*
+* @details
+* This function enables irq
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] irq pm_smbchg_usb_chgpth_irq_type
+*
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_enable(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, boolean enable);
+
+
+/**
+ * @brief This function clears the SMBCHG irq
+ *
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:
+ * SMBCHG irq type. Refer enum pm_smbchg_usb_chgpth_irq_type.
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_clear(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq);
+
+
+
+/**
+ * @brief This function configures the SMBCHG irq trigger
+ *
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:
+ * SMBCHG irq type. Refer enum pm_smbchg_usb_chgpth_irq_type.
+ * @param[in] trigger:
+ * One of different irq triggers. Refer enum pm_irq_trigger_type
+ * from pm_uefi_irq.h for more details
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_trigger_type trigger);
+
+
+/**
+ * @brief This function configures the SMBCHG for irq
+ *
+ * @param[in] device_index. Primary: 0. Secondary: 1
+ * @param[in] irq:
+ * SMBCHG irq type. Refer enum pm_Smbb_irq_type.
+ * @param[in] type:
+ * Type of IRQ status to read. Refer enum pm_irq_status_type
+ * from pm_uefi_irq.h for more details
+ * @param[out] status:
+ * IRQ status.
+ *
+ *
+ * @return pm_err_flag_type
+ * PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+ * version of the PMIC.
+ * PM_ERR_FLAG__SUCCESS = SUCCESS.
+ *
+ */
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_status(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_status_type type, boolean *status);
+
+
+#endif /* PM_SMBCHG_USB_CHGPTH_H */
+
diff --git a/dev/pmic/pmi8994/pm_app_smbchg.c b/dev/pmic/pmi8994/pm_app_smbchg.c
new file mode 100644
index 0000000..4d8a2db
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_app_smbchg.c
@@ -0,0 +1,586 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+#include "pm_app_smbchg.h"
+#include "pm_smbchg_chgr.h"
+#include "pm_smbchg_bat_if.h"
+#include "pm_app_smbchg.h"
+#include "pm_fg_adc_usr.h"
+#include "pm_fg_driver.h"
+#include "pm_smbchg_driver.h"
+#include "pm_comm.h"
+#include "pm_smbchg_dc_chgpth.h"
+#include <debug.h>
+#include <platform/timer.h>
+#include <sys/types.h>
+#include <target.h>
+
+
+/*===========================================================================
+
+ PROTOTYPES
+
+===========================================================================*/
+
+
+/*===========================================================================
+
+ GLOBAL TYPE DEFINITIONS
+
+===========================================================================*/
+#define PM_REG_CONFIG_SETTLE_DELAY 175 * 1000 //175ms ; Delay required for battery voltage de-glitch time
+#define PM_WEAK_BATTERY_CHARGING_DELAY 500 * 1000 //500ms
+#define PM_WIPOWER_START_CHARGING_DELAY 3500 * 1000 //3.5sec
+#define PM_MIN_ADC_READY_DELAY 1 * 1000 //1ms
+#define PM_MAX_ADC_READY_DELAY 2000 //2s
+#define SBL_PACKED_SRAM_CONFIG_SIZE 3
+
+#define boot_log_message(...) dprintf(CRITICAL, __VA_ARGS__)
+
+static pm_smbchg_bat_if_low_bat_thresh_type pm_dbc_bootup_volt_threshold;
+static bool display_initialized;
+static bool charge_in_progress;
+char panel_name[256];
+
+pm_err_flag_type pm_smbchg_get_charger_path(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type* charger_path);
+pm_err_flag_type pm_appsbl_chg_config_vbat_low_threshold(uint32 device_index, pm_smbchg_specific_data_type *chg_param_ptr);
+
+/*===========================================================================
+
+ FUNCTION IMPLEMENTATION
+
+===========================================================================*/
+pm_err_flag_type pm_appsbl_chg_check_weak_battery_status(uint32 device_index)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_specific_data_type *chg_param_ptr = NULL;
+ pm_smbchg_chgr_chgr_status_type vbatt_chging_status;
+ boolean hot_bat_hard_lim_rt_sts = FALSE;
+ boolean cold_bat_hard_lim_rt_sts = FALSE;
+ boolean vbatt_weak_status = TRUE;
+ boolean adc_reading_ready = FALSE;
+ boolean bat_present = TRUE;
+ uint32 vbat_adc = 0;
+ uint16 wait_index = 0;
+ boolean vbatt_status = FALSE;
+ pm_smbchg_misc_src_detect_type chgr_src_detected;
+ boolean configure_icl_flag = FALSE;
+ boolean chg_prog_message_flag = FALSE;
+ pm_smbchg_usb_chgpth_pwr_pth_type charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__INVALID;; uint32 bootup_threshold;
+
+ pm_smbchg_driver_init(device_index);
+ pm_fg_driver_init(device_index);
+
+ chg_param_ptr = (pm_smbchg_specific_data_type*)pm_target_information_get_specific_info();
+ ASSERT(chg_param_ptr);
+ bootup_threshold = chg_param_ptr->bootup_battery_theshold_mv;
+
+ if(chg_param_ptr->dbc_bootup_volt_threshold.enable_config == PM_ENABLE_CONFIG)
+ {
+ //Configure Vlowbatt threshold: Used by PMI on next bootup
+ err_flag |= pm_appsbl_chg_config_vbat_low_threshold(device_index, chg_param_ptr);
+ }
+
+ //Check Battery presence
+ err_flag |= pm_smbchg_bat_if_get_bat_pres_status(device_index, &bat_present);
+ if( bat_present == FALSE )
+ {
+ dprintf(CRITICAL, "Booting up to HLOS: Charger is Connected and NO battery\n");
+ return err_flag;
+ }
+
+
+ //Detect the typpe of charger used
+ //err_flag |= pm_smbchg_usb_chgpth_get_pwr_pth(device_index, &
+ err_flag |= pm_smbchg_get_charger_path(device_index, &charger_path);
+ if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER)
+ {
+
+ bootup_threshold = chg_param_ptr->wipwr_bootup_battery_theshold_mv;
+ }
+ else if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__USB_CHARGER)
+ {
+ bootup_threshold = chg_param_ptr->bootup_battery_theshold_mv;
+ }
+
+ //Enable BMS FG Algorithm BCL
+ err_flag |= pm_fg_adc_usr_enable_bcl_monitoring(device_index, TRUE);
+ if ( err_flag != PM_ERR_FLAG__SUCCESS )
+ {
+ return err_flag;
+ }
+
+
+ while( vbatt_weak_status == TRUE ) //While battery is in weak state
+ {
+ //Check Vbatt ADC level
+ err_flag |= pm_fg_adc_usr_get_bcl_values(device_index, &adc_reading_ready); //Check if Vbatt ADC is ready
+
+ //Check if Vbatt ADC is Ready
+ for (wait_index = 0; wait_index < PM_MAX_ADC_READY_DELAY; wait_index++)
+ {
+ if(adc_reading_ready == FALSE)
+ {
+ udelay(PM_MIN_ADC_READY_DELAY);
+ err_flag |= pm_fg_adc_usr_get_bcl_values(device_index,&adc_reading_ready);
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if ( err_flag != PM_ERR_FLAG__SUCCESS ) { break;}
+
+ if ( adc_reading_ready)
+ {
+ err_flag |= pm_fg_adc_usr_get_calibrated_vbat(device_index, &vbat_adc); //Read calibrated vbatt ADC
+ if ( err_flag != PM_ERR_FLAG__SUCCESS ) { break;}
+
+ //Check if ADC reading is within limit
+ if ( vbat_adc >= bootup_threshold) //Compaire it with SW bootup threshold
+ {
+ vbatt_weak_status = FALSE;
+ break; //bootup
+ }
+ }
+ else
+ {
+ boot_log_message("ERROR: ADC Reading is NOT Ready\n");
+ err_flag |= PM_ERR_FLAG__ADC_NOT_READY;
+ break;
+ }
+
+ //Check if USB charger is SDP
+ err_flag |= pm_smbchg_misc_chgr_port_detected(device_index, &chgr_src_detected);
+ if (chgr_src_detected == PM_SMBCHG_MISC_SRC_DETECT_SDP)
+ {
+ if (configure_icl_flag == FALSE)
+ {
+ //Check Vlow_batt status
+ err_flag |= pm_smbchg_chgr_vbat_sts(device_index, &vbatt_status);
+ if (vbatt_status)
+ {
+ //set ICL to 500mA
+ err_flag |= pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__USB51_MODE, TRUE);
+ err_flag |= pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__USBIN_MODE_CHG, FALSE);
+ configure_icl_flag = TRUE;
+ }
+ }
+ }
+
+ if (chg_prog_message_flag == FALSE)
+ {
+ //Ensure that Charging is enabled
+ err_flag |= pm_smbchg_chgr_enable_src(device_index, FALSE);
+ err_flag |= pm_smbchg_chgr_set_chg_polarity_low(device_index, FALSE);
+ err_flag |= pm_smbchg_bat_if_config_chg_cmd(device_index, PM_SMBCHG_BAT_IF_CMD__EN_BAT_CHG, TRUE);
+ udelay(PM_WEAK_BATTERY_CHARGING_DELAY);
+ }
+
+ //Check if JEITA check is enabled
+ if (chg_param_ptr->enable_jeita_hard_limit_check == TRUE)
+ {
+ //Read JEITA condition
+ err_flag |= pm_smbchg_bat_if_irq_status(device_index, PM_SMBCHG_BAT_IF_HOT_BAT_HARD_LIM, PM_IRQ_STATUS_RT, &hot_bat_hard_lim_rt_sts );
+ err_flag |= pm_smbchg_bat_if_irq_status(device_index, PM_SMBCHG_BAT_IF_COLD_BAT_HARD_LIM, PM_IRQ_STATUS_RT, &cold_bat_hard_lim_rt_sts);
+ if ( err_flag != PM_ERR_FLAG__SUCCESS ) { break;}
+
+ if ( ( hot_bat_hard_lim_rt_sts == TRUE ) || (cold_bat_hard_lim_rt_sts == TRUE) )
+ {
+ continue; // Stay in this loop as long as JEITA Hard Hot/Cold limit is exceeded
+ }
+ }
+
+ if (!charge_in_progress)
+ dprintf(INFO,"APPSBL Weak Battery charging: Start\n");
+
+ charge_in_progress = true;
+#if DISPLAY_SPLASH_SCREEN
+ if (!display_initialized)
+ target_display_init(panel_name);
+ display_initialized = true;
+#endif
+ /* Wait for 500 msecs before looking for vbat */
+ udelay(PM_WEAK_BATTERY_CHARGING_DELAY); //500ms
+
+
+ //Check if Charging in progress
+ err_flag |= pm_smbchg_chgr_get_chgr_sts(device_index, &vbatt_chging_status);
+ if ( err_flag != PM_ERR_FLAG__SUCCESS ) { break;}
+
+ if ( vbatt_chging_status.charging_type == PM_SMBCHG_CHGR_NO_CHARGING )
+ {
+ if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER)
+ {
+ //Delay for 3.5sec for charging to begin, and check charging status again prior to shutting down.
+ udelay(PM_WIPOWER_START_CHARGING_DELAY); //3500ms
+
+ err_flag |= pm_smbchg_chgr_get_chgr_sts(device_index, &vbatt_chging_status);
+ if ( err_flag != PM_ERR_FLAG__SUCCESS ) { break;}
+
+ if ( vbatt_chging_status.charging_type == PM_SMBCHG_CHGR_NO_CHARGING )
+ {
+ boot_log_message("ERROR: Charging is NOT in progress: Shutting Down\n");
+ shutdown_device();
+ }
+ }
+ else
+ {
+ boot_log_message("ERROR: Charging is NOT in progress: Shutting Down\n");
+ shutdown_device();
+ }
+ }
+ else
+ {
+#ifdef DEBUG_CHARGER
+ dprintf(INFO, "APPSBL Charging in Progress....\n");
+#endif
+ chg_prog_message_flag = TRUE;
+ }
+ }//while
+
+
+ if (charger_path == PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER)
+ {
+ //If battery is good, Toggle SHDN_N_CLEAR_CMD Reg: Set 0x1340[6] to 1 and then 0
+ err_flag = pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__SHDN_N_CLEAR_CMD, TRUE);
+ err_flag = pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__SHDN_N_CLEAR_CMD, FALSE);
+ }
+
+ if (charge_in_progress)
+ dprintf(INFO, "APPSBL Weak Battery Charging: Done \n");
+
+ charge_in_progress = false;
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_get_charger_path(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type* charger_path)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ boolean usbin_uv_status = TRUE;
+ boolean usbin_ov_status = TRUE;
+ boolean dcbin_uv_status = TRUE;
+ boolean dcbin_ov_status = TRUE;
+
+ //DC charger present, if DCIN_UV_RT_STS and DCIN_UV_RT_STS status is 0 (INT_RT_STS : 0x1410[1] and [0] == 0)
+ err_flag |= pm_smbchg_dc_chgpth_irq_status(device_index, PM_SMBCHG_DC_CHGPTH_DCBIN_UV, PM_IRQ_STATUS_RT, &dcbin_uv_status);
+ err_flag |= pm_smbchg_dc_chgpth_irq_status(device_index, PM_SMBCHG_DC_CHGPTH_DCBIN_OV, PM_IRQ_STATUS_RT, &dcbin_ov_status);
+ //USB charger present, if USBIN_UV_RT_STS and USBIN_OV_RT_STS status is 0 ( INT_RT_STS : 0x1310[1] and [0] == 0)
+ err_flag |= pm_smbchg_usb_chgpth_irq_status(device_index, PM_SMBCHG_USB_CHGPTH_USBIN_UV, PM_IRQ_STATUS_RT, &usbin_uv_status);
+ err_flag |= pm_smbchg_usb_chgpth_irq_status(device_index, PM_SMBCHG_USB_CHGPTH_USBIN_OV, PM_IRQ_STATUS_RT, &usbin_ov_status);
+
+ if((dcbin_uv_status == FALSE) && (dcbin_ov_status == FALSE))
+ {
+ *charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__DC_CHARGER;
+ }
+ else if((usbin_uv_status == FALSE) && (usbin_ov_status == FALSE))
+ {
+ *charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__USB_CHARGER;
+ }
+ else
+ {
+ *charger_path = PM_SMBCHG_USB_CHGPTH_PWR_PATH__INVALID;
+ }
+
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_appsbl_chg_config_vbat_low_threshold(uint32 device_index, pm_smbchg_specific_data_type *chg_param_ptr)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ pm_dbc_bootup_volt_threshold = chg_param_ptr->dbc_bootup_volt_threshold.vlowbatt_threshold;
+
+ if (chg_param_ptr->dbc_bootup_volt_threshold.enable_config == PM_ENABLE_CONFIG)
+ {
+ if (pm_dbc_bootup_volt_threshold >= PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__INVALID_VBATT_INDEXED;
+ return err_flag;
+ }
+
+ err_flag = pm_smbchg_bat_if_set_low_batt_volt_threshold(device_index, pm_dbc_bootup_volt_threshold);
+#ifdef DEBUG_CHARGER
+ dprintf(INFO,"Configure Vlowbatt threshold");
+#endif
+ }
+
+ return err_flag;
+}
+
+#ifndef LK
+pm_err_flag_type pm_sbl_config_fg_sram(uint32 device_index)
+ {
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ FgSramAddrDataEx_type *sram_data_ptr = NULL;
+ FgSramAddrDataEx_type pm_sbl_sram_data[SBL_PACKED_SRAM_CONFIG_SIZE];
+ pm_model_type pmic_model = PMIC_IS_INVALID;
+ boolean sram_enable_config_flag = FALSE;
+
+ //Check if any SRAM configuration is needed
+ sram_data_ptr = (FgSramAddrDataEx_type*)pm_target_information_get_specific_info(PM_PROP_FG_SPECIFIC_DATA);
+ CORE_VERIFY_PTR(sram_data_ptr);
+ for (int i=0; i< SBL_SRAM_CONFIG_SIZE; i++)
+ {
+ sram_enable_config_flag |= sram_data_ptr[i].EnableConfig;
+ }
+
+
+ if (sram_enable_config_flag == TRUE )
+ {
+ pmic_model = pm_get_pmic_model(device_index); //Check if PMIC exists
+ if ( (pmic_model != PMIC_IS_INVALID) || (pmic_model != PMIC_IS_UNKNOWN) )
+ {
+ //boot_log_message("BEGIN: Configure FG SRAM");
+
+ //Pre-process JEITA data
+ pm_sbl_sram_data[0].SramAddr = sram_data_ptr[0].SramAddr;
+ pm_sbl_sram_data[0].SramData = (sram_data_ptr[3].SramData << 24)|
+ (sram_data_ptr[2].SramData << 16)|
+ (sram_data_ptr[1].SramData << 8)|
+ sram_data_ptr[0].SramData;
+ pm_sbl_sram_data[0].DataOffset = sram_data_ptr[0].DataOffset;
+ pm_sbl_sram_data[0].DataSize = 4;
+ //Set JEITA threshould configuration flag
+ pm_sbl_sram_data[0].EnableConfig = sram_data_ptr[0].EnableConfig | sram_data_ptr[1].EnableConfig |
+ sram_data_ptr[2].EnableConfig | sram_data_ptr[3].EnableConfig;
+
+ //Pre-process Thermistor Beta Data
+ //thremistor_c1_coeff
+ pm_sbl_sram_data[1] = sram_data_ptr[4];
+
+ //thremistor_c2_coeff and thremistor_c3_coeff
+ pm_sbl_sram_data[2].SramAddr = sram_data_ptr[5].SramAddr;
+ pm_sbl_sram_data[2].SramData = (sram_data_ptr[6].SramData << 16) | sram_data_ptr[5].SramData;
+ pm_sbl_sram_data[2].DataOffset = sram_data_ptr[5].DataOffset;
+ pm_sbl_sram_data[2].DataSize = 4;
+ pm_sbl_sram_data[2].EnableConfig = sram_data_ptr[5].EnableConfig;
+
+ //Configure SRAM Data
+ err_flag |= PmicFgSram_ProgBurstAccessEx(device_index, pm_sbl_sram_data, SBL_PACKED_SRAM_CONFIG_SIZE);
+
+ //Test: Read Back
+ //err_flag |= PmicFgSram_Dump(device_index, 0x0454, 0x0454);
+ //err_flag |= PmicFgSram_Dump(device_index, 0x0444, 0x0448);
+ //err_flag |= PmicFgSram_Dump(device_index, 0x0448, 0x0452);
+
+ //boot_log_message("END: Configure FG SRAM");
+ }
+ }
+
+ return err_flag;
+}
+
+
+
+
+pm_err_flag_type pm_sbl_config_chg_parameters(uint32 device_index)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ static pm_smbchg_specific_data_type *chg_param_ptr;
+
+ if(chg_param_ptr == NULL)
+ {
+ chg_param_ptr = (pm_smbchg_specific_data_type*)pm_target_information_get_specific_info(PM_PROP_SMBCHG_SPECIFIC_DATA);
+ CORE_VERIFY_PTR(chg_param_ptr);
+ }
+
+ //Vlowbatt Threshold
+ // - Done on: pm_sbl_chg_config_vbat_low_threshold()
+
+ //Charger Path Input Priority
+ if (chg_param_ptr->chgpth_input_priority.enable_config == PM_ENABLE_CONFIG)
+ {
+ pm_smbchg_chgpth_input_priority_type chgpth_priority = chg_param_ptr->chgpth_input_priority.chgpth_input_priority;
+ if (chgpth_priority < PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_INVALID)
+ {
+ err_flag |= pm_smbchg_chgpth_set_input_priority(device_index, chgpth_priority);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+
+ //Battery Missing Detection Source
+ if (chg_param_ptr->bat_miss_detect_src.enable_config == PM_ENABLE_CONFIG)
+ {
+ pm_smbchg_bat_miss_detect_src_type batt_missing_det_src = chg_param_ptr->bat_miss_detect_src.bat_missing_detection_src;
+ if (batt_missing_det_src < PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_INVALID)
+ {
+ err_flag |= pm_smbchg_bat_if_set_bat_missing_detection_src(device_index, batt_missing_det_src);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+ //WDOG Timeout
+ if (chg_param_ptr->wdog_timeout.enable_config == PM_ENABLE_CONFIG)
+ {
+ pm_smbchg_wdog_timeout_type wdog_timeout = chg_param_ptr->wdog_timeout.wdog_timeout;
+ if (wdog_timeout < PM_SMBCHG_MISC_WD_TMOUT_INVALID)
+ {
+ err_flag |= pm_smbchg_misc_set_wdog_timeout(device_index, wdog_timeout);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+
+ //Enable WDOG
+ if (chg_param_ptr->enable_wdog.enable_config == PM_ENABLE_CONFIG)
+ {
+ pm_smbchg_wdog_timeout_type enable_smbchg_wdog = chg_param_ptr->enable_wdog.enable_wdog;
+ err_flag |= pm_smbchg_misc_enable_wdog(device_index, enable_smbchg_wdog);
+ }
+
+
+ //FAST Charging Current
+ if (chg_param_ptr->fast_chg_i.enable_config == PM_ENABLE_CONFIG)
+ {
+ uint32 fast_chg_i_ma = chg_param_ptr->fast_chg_i.fast_chg_i_ma;
+ if ((fast_chg_i_ma >= 300) && (fast_chg_i_ma <= 3000) )
+ {
+ err_flag |= pm_smbchg_chgr_set_fast_chg_i(device_index, fast_chg_i_ma);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+ //Pre Charge Current
+ if (chg_param_ptr->pre_chg_i.enable_config == PM_ENABLE_CONFIG)
+ {
+ uint32 pre_chg_i_ma = chg_param_ptr->pre_chg_i.pre_chg_i_ma;
+ if ((pre_chg_i_ma >= 100) && (pre_chg_i_ma <= 550) )
+ {
+ err_flag |= pm_smbchg_chgr_set_pre_chg_i(device_index, pre_chg_i_ma);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+ //Pre to Fast Charge Current
+ if (chg_param_ptr->pre_to_fast_chg_theshold_mv.enable_config == PM_ENABLE_CONFIG)
+ {
+ uint32 p2f_chg_mv = chg_param_ptr->pre_to_fast_chg_theshold_mv.pre_to_fast_chg_theshold_mv;
+ if ((p2f_chg_mv >= 2400) && (p2f_chg_mv <= 3000) )
+ {
+ err_flag |= pm_smbchg_chgr_set_p2f_threshold(device_index, p2f_chg_mv);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+ //Float Voltage : 3600mV to 4500 mv
+ if (chg_param_ptr->float_volt_theshold_mv.enable_config == PM_ENABLE_CONFIG)
+ {
+ uint32 float_volt_mv = chg_param_ptr->float_volt_theshold_mv.float_volt_theshold_mv;
+ if ((float_volt_mv >= 3600) && (float_volt_mv <= 4500))
+ {
+ err_flag |= pm_smbchg_chgr_set_float_volt(device_index, float_volt_mv);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+
+ //USBIN Input Current Limit :Valid value is 300 to 3000mAmp
+ if (chg_param_ptr->usbin_input_current_limit.enable_config == PM_ENABLE_CONFIG)
+ {
+ uint32 usbin_i_limit_ma = chg_param_ptr->usbin_input_current_limit.usbin_input_current_limit;
+ if ((usbin_i_limit_ma >= 300) && (usbin_i_limit_ma <= 3000))
+ {
+ err_flag |= pm_smbchg_usb_chgpth_set_usbin_current_limit(device_index, usbin_i_limit_ma);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+
+ //DCIN Input Current Limit : valid range is 300 to 2000 mAmp
+ if (chg_param_ptr->dcin_input_current_limit.enable_config == PM_ENABLE_CONFIG)
+ {
+ uint32 dcin_i_limit_ma = chg_param_ptr->dcin_input_current_limit.dcin_input_current_limit;
+ if ((dcin_i_limit_ma >= 300) && (dcin_i_limit_ma <= 3200))
+ {
+ err_flag |= pm_smbchg_dc_chgpth_set_dcin_current_limit(device_index, dcin_i_limit_ma);
+ }
+ else
+ {
+ err_flag |= PM_ERR_FLAG__INVALID_PARAMETER;
+ }
+ }
+
+
+ return err_flag;
+}
+#endif
+
+bool pm_appsbl_charging_in_progress()
+{
+ return charge_in_progress;
+}
+
+bool pm_appsbl_display_init_done()
+{
+ return display_initialized;
+}
+
+pm_err_flag_type pm_appsbl_set_dcin_suspend(uint32_t device_index)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ err_flag = pm_smbchg_usb_chgpth_set_cmd_il(device_index, PM_SMBCHG_USBCHGPTH_CMD_IL__DCIN_SUSPEND, TRUE);
+
+ return err_flag;
+}
diff --git a/dev/pmic/pmi8994/pm_comm_spmi_lite.c b/dev/pmic/pmi8994/pm_comm_spmi_lite.c
new file mode 100644
index 0000000..5a41e4b
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_comm_spmi_lite.c
@@ -0,0 +1,221 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+INCLUDE FILES FOR MODULE
+
+===========================================================================*/
+
+#include <pm8x41.h>
+#include <debug.h>
+#include <sys/types.h>
+#include "pm_err_flags.h"
+#include "pm_resources_and_types.h"
+#include "pm_comm.h"
+#include <spmi.h>
+
+#define PM_MAX_REGS 0xFFFF
+
+typedef uint32_t SpmiBus_ResultType;
+
+enum spmi_result
+{
+ SPMI_BUS_SUCCESS,
+};
+
+pm_err_flag_type pm_comm_read_byte(uint32 slave_id, uint32 addr, uint8* data, uint8 priority)
+{
+ pm_err_flag_type err = PM_ERR_FLAG__SUCCESS ;
+ SpmiBus_ResultType spmi_result = SPMI_BUS_SUCCESS;
+
+ if(TRUE == spmi_initialized())
+ {
+ /* check for out-of-bounds index */
+ if ( addr > PM_MAX_REGS)
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+ else
+ {
+ spmi_result = spmi_reg_read(slave_id, addr, data, priority);
+
+ if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+ }
+ }
+ else
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+
+ return err ;
+}
+
+pm_err_flag_type pm_comm_read_byte_mask(uint32 slave_id, uint32 addr, uint8 mask, uint8* data, uint8 priority)
+{
+ pm_err_flag_type err = PM_ERR_FLAG__SUCCESS ;
+
+ err = spmi_reg_read(slave_id, addr, data, priority);
+ if ( err != PM_ERR_FLAG__SUCCESS )
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+ else
+ {
+ *data = *data & mask;
+ }
+
+
+ return err ;
+}
+
+
+
+pm_err_flag_type pm_comm_write_byte(uint32 slave_id, uint32 addr, uint8 data, uint8 priority)
+{
+ pm_err_flag_type err = PM_ERR_FLAG__SUCCESS ;
+ SpmiBus_ResultType spmi_result = SPMI_BUS_SUCCESS;
+
+ if(TRUE == spmi_initialized())
+ {
+ /* check for out-of-bounds index */
+ if ( addr > PM_MAX_REGS)
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+ else
+ {
+ spmi_result = spmi_reg_write(slave_id, addr, &data, priority);
+
+ if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+ }
+ }
+ else
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+
+ return err ;
+}
+
+pm_err_flag_type pm_comm_write_byte_mask(uint32 slave_id, uint32 addr, uint8 mask, uint8 value, uint8 priority)
+{
+ pm_err_flag_type err = PM_ERR_FLAG__SUCCESS ;
+ SpmiBus_ResultType spmi_result = SPMI_BUS_SUCCESS;
+ uint8 data = 0 ;
+
+ if(TRUE == spmi_initialized())
+ {
+ /* check for out-of-bounds index */
+ if ( addr > PM_MAX_REGS)
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+ else
+ {
+ /* Read the data from the SPMI and leave all the bits other than the mask to the previous state */
+ spmi_result = spmi_reg_read(slave_id, addr, &data, priority);
+
+ if ( spmi_result == SPMI_BUS_SUCCESS )
+ {
+ data &= (~mask) ;
+ data |= (value & mask) ;
+
+ spmi_result = spmi_reg_write(slave_id, addr, &data, priority);
+
+ if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+ }
+ }
+ }
+ else
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+
+
+ return err ;
+}
+
+#ifndef LK
+pm_err_flag_type pm_comm_write_byte_array(uint32 slave_id, uint16 addr, uint32 num_bytes, uint8* data, uint8 priority)
+{
+ pm_err_flag_type err = PM_ERR_FLAG__SUCCESS ;
+ SpmiBus_ResultType spmi_result = SPMI_BUS_SUCCESS;
+
+ if(TRUE == spmi_initialized)
+ {
+ /* check for out-of-bounds index */
+ if ( addr > PM_MAX_REGS)
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+ else
+ {
+ spmi_result = SpmiBus_WriteLong(slave_id, (SpmiBus_AccessPriorityType)priority, addr, data, num_bytes);
+
+ if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+ }
+ }
+ else
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+
+ return err ;
+}
+
+pm_err_flag_type pm_comm_read_byte_array (uint32 slave_id, uint16 addr, uint32 num_bytes, uint8* data, uint8 priority)
+{
+ pm_err_flag_type err = PM_ERR_FLAG__SUCCESS ;
+ SpmiBus_ResultType spmi_result = SPMI_BUS_SUCCESS;
+ /* Read the data from the SPMI */
+ uint32 dataReadLength = 0;
+
+
+ if(TRUE == spmi_initialized)
+ {
+ /* check for out-of-bounds index */
+ if ( addr > PM_MAX_REGS)
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+ else
+ {
+ spmi_result = SpmiBus_ReadLong(slave_id, (SpmiBus_AccessPriorityType)priority, addr, data, num_bytes, &dataReadLength);
+
+ if ( spmi_result != SPMI_BUS_SUCCESS ) { err = PM_ERR_FLAG__SPMI_OPT_ERR ; }
+ }
+ }
+ else
+ {
+ err = PM_ERR_FLAG__SPMI_OPT_ERR ;
+ }
+
+ return err ;
+}
+#endif
diff --git a/dev/pmic/pmi8994/pm_config_target.c b/dev/pmic/pmi8994/pm_config_target.c
new file mode 100644
index 0000000..6e25a79
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_config_target.c
@@ -0,0 +1,252 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+#include "pm_smbchg_driver.h"
+#include "pm_app_smbchg.h"
+#include "pm_smbchg_bat_if.h"
+#include <sys/types.h>
+
+/* 2 slave IDs per PMIC device. */
+#define PM_MAX_SLAVE_ID 2
+
+ /************************************************ DRIVER DATA *********************************/
+ #ifndef LK
+//PM8994,PMi8994,PM8004
+uint32 num_of_ldo[] = {32, 1, 1};
+uint32 num_of_smps[] = {12, 3, 5};
+uint32 num_of_gpio[] = {22,10, 0};
+uint32 num_of_mpp[] = {8, 4, 4};
+uint32 num_of_rtc[] = {1, 0, 0};
+uint32 num_of_megaxo[] = {1, 0, 0};
+uint32 num_of_boost[] = {0, 1, 0};
+uint32 num_of_vs[] = {2, 0, 0};
+uint32 num_of_lpg_chan[] = {12, 4,0};
+uint32 num_of_pwron[] = {1, 1, 1};
+uint32 num_of_misc[] = {1, 0, 0};
+uint32 num_of_clk_buffer[] = {13,13,0};
+uint32 num_of_rgb[] = {0,1,0};
+uint32 num_of_wled[] = {0,1,0};
+uint32 num_of_smbchg[] = {0,1,0};
+uint32 num_of_fg[] = {0,1,0};
+uint32 num_of_ibb[] = {0,1,0};
+uint32 num_of_lab[] = {0,1,0};
+uint32 num_of_vib[] = {0,1,0};
+uint32 num_of_pbs_client[] = {16,12,8};
+pm_mpp_specific_info_type
+mpp_specific[1] =
+{
+ {0x9E0, 4}
+};
+
+pm_lpg_specific_info_type lpg_specific[1] =
+{
+ {24}
+};
+
+pm_vib_specific_data_type
+vib_specific[1] =
+{
+ {1200, 2000}
+};
+#endif
+pm_smbchg_specific_data_type
+smbchg_specific_data[1] = {
+{
+ //Configuration Value, Enable config
+ {PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_3P25, PM_DISABLE_CONFIG }, //Vlowbatt Threshold
+ {PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_USBIN, PM_DISABLE_CONFIG }, //Charger Path Input Priority
+ {PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_BMD_PIN, PM_DISABLE_CONFIG }, //Battery Missing Detection Source
+ {PM_SMBCHG_MISC_WD_TMOUT_18S, PM_DISABLE_CONFIG }, //WDOG Timeout
+ {FALSE, PM_DISABLE_CONFIG }, //Enable WDOG
+ {1000, PM_DISABLE_CONFIG }, //FAST Charging Current
+ {250, PM_DISABLE_CONFIG }, //PRE Charge Current
+ {3000, PM_DISABLE_CONFIG }, //PRE to Fast Charge Current
+ {4200, PM_DISABLE_CONFIG }, //Float Voltage
+ {2100, PM_DISABLE_CONFIG }, //USBIN Input Current Limit
+ {1000, PM_DISABLE_CONFIG }, //DCIN Input Current Limit
+ 3600, //bootup_battery_theshold_mv
+ 3800, //wipowr bootup battery thesholdmv
+ FALSE, //Enable/Disable JEITA Hard Temp Limit Check in SBL
+ }
+};
+
+
+chg_range_data_type chg_range_data[1] = {
+ {
+ //batt_missing_detect_time_range
+ { 80, 160, 320, 640 },
+ //DCIN_range
+ { 300, 400, 450, 475, 500, 550, 600, 650, 700, 900, 950, 1000, 1100, 1200, 1400, 1450, 1500, 1600, 1800, 1850, 1880, 1910, 1930, 1950, 1970, 2000 },
+ //USBIN_range
+ { 300, 400, 450, 475, 500, 550, 600, 650, 700, 900, 950, 1000, 1100, 1200, 1400, 1450, 1500, 1600, 1800, 1850, 1880, 1910, 1930, 1950, 1970, 2000, 2050, 2100, 2300, 2400, 2500, 3000 }
+ }
+};
+
+#ifndef LK
+//By default, configuration of the FG params is NOT enabled. since the last parameter(EnableConfig) = 0
+//To enable configuration, set EnableConfig = 1
+FgSramAddrDataEx_type
+fg_sram_data[SBL_SRAM_CONFIG_SIZE] =
+{
+ //JEITA Thresholds:
+ //SramAddr, SramData, DataOffset, DataSize, EnableConfig
+ { 0x0454, 0x23, 0, 1, PM_DISABLE_CONFIG }, //JEITA Soft Cold Threshold: default = 0x23
+ { 0x0454, 0x46, 1, 1, PM_DISABLE_CONFIG }, //JEITA Soft Hot Threshold: default = 0x46
+ { 0x0454, 0x1E, 2, 1, PM_DISABLE_CONFIG }, //JEITA Hard Cold Threshold: default = 0x1E
+ { 0x0454, 0x48, 3, 1, PM_DISABLE_CONFIG }, //JEITA hard Hot Threshold: default = 0x48
+
+ //Thermistor Beta Coefficents:
+ { 0x0444, 0x86D8, 2, 2, PM_DISABLE_CONFIG }, //thremistor_c1_coeff: default = 0x86D8;
+ { 0x0448, 0x50F1, 0, 2, PM_DISABLE_CONFIG }, //thremistor_c2_coeff: default = 0x50F1;
+ { 0x0448, 0x3C11, 2, 2, PM_DISABLE_CONFIG } //thremistor_c3_coeff: default = 0x3C11;
+};
+
+pm_pbs_info_data_type pm_pbs_info_data_a =
+{
+ 256, /* PBS MEMORY Size */
+ PM_PBS_INFO_IN_OTP, /* Place where PBS Info stored */
+};
+
+pm_pbs_info_data_type pm_pbs_info_data_b =
+{
+ 128, /* PBS MEMORY Size */
+ PM_PBS_INFO_IN_OTP, /* Place where PBS Info stored */
+};
+
+pm_pbs_info_data_type pm_pbs_info_data_c =
+{
+ 256, /* PBS MEMORY Size */
+ PM_PBS_INFO_IN_OTP, /* Place where PBS Info stored */
+};
+
+pm_pbs_info_data_type *pm_pbs_info_data[] = {&pm_pbs_info_data_a, &pm_pbs_info_data_b, &pm_pbs_info_data_c};
+
+/* max_num_seqs, ram_start_addr, poff_trig_id, poff_otp_addr, warmreset_trig_id, warmreset_otp_addr */
+pm_pbs_custom_seq_data_type pbs_custom_seq_data_a = {2, 0x07DC, 3, 0x000C, 2, 0x0008};
+
+/* max_num_seqs, ram_start_addr, poff_trig_id, poff_otp_addr, warmreset_trig_id, warmreset_otp_addr */
+pm_pbs_custom_seq_data_type pbs_custom_seq_data_b = {33, 0x0554, 2, 0x0008, 7, 0x001C};
+
+pm_pbs_custom_seq_data_type* pbs_custom_seq_data[] =
+{
+ &pbs_custom_seq_data_a,
+ &pbs_custom_seq_data_b,
+ NULL,
+};
+
+/* PPID, channel mapping and ownership. */
+
+const uint8 pm_periph_bitmap[][PM_MAX_SLAVE_ID][PM_MAX_BITMAP_ENTRIES] =
+{
+ /* PM8994*/
+ {
+ {
+ 0x72, 0x07, 0x00, 0x10,
+ 0x10, 0x11, 0x16, 0x00,
+ 0x00, 0x00, 0x37, 0x3f,
+ 0x07, 0x00, 0xff, 0xff,
+ 0x01, 0x00, 0x00, 0x00,
+ 0xff, 0x00, 0x00, 0x00,
+ 0xff, 0xff, 0x3f, 0x00,
+ 0x00, 0x00, 0x00, 0x40,
+ },
+ {
+ 0x00, 0x00, 0xf1, 0xff,
+ 0xff, 0xff, 0xff, 0x00,
+ 0xff, 0xff, 0xff, 0xff,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x7f, 0x10,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ },
+ },
+ /* PMI8994*/
+ {
+ {
+ 0x72, 0x03, 0x5f, 0x18,
+ 0x00, 0x10, 0x02, 0x00,
+ 0x1f, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0xff, 0x1f,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x0f, 0x00, 0x00, 0x00,
+ 0xff, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40,
+ },
+ {
+ 0x00, 0x00, 0xf1, 0x1f,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x07, 0x00, 0x1f, 0x00,
+ 0x01, 0x00, 0x09, 0x53,
+ 0x00, 0x00, 0x00, 0x00,
+ }
+ },
+ /* PM8004 */
+ {
+ {
+ 0x00, 0x03, 0x00, 0x00,
+ 0x10, 0x10, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0xff, 0x01,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x0f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x40,
+ },
+ {
+ 0x00, 0x00, 0xf1, 0xe3,
+ 0x07, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+
+ }
+ }
+};
+#endif
+
+void *pm_target_information_get_specific_info()
+{
+ return (void *) smbchg_specific_data;
+};
+
+void *pm_target_chg_range_data()
+{
+ return (void *) chg_range_data;
+}
diff --git a/dev/pmic/pmi8994/pm_fg_adc_usr.c b/dev/pmic/pmi8994/pm_fg_adc_usr.c
new file mode 100644
index 0000000..e7e01fc
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_fg_adc_usr.c
@@ -0,0 +1,1268 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "pm_fg_adc_usr.h"
+#include "pm_fg_driver.h"
+#include "pm_smbchg_driver.h"
+#include "pm_err_flags.h"
+#include "pm_comm.h"
+#include <sys/types.h>
+
+/*===========================================================================
+ TYPE DEFINITIONS
+===========================================================================*/
+#define RAW_IBAT_LSB 39
+#define RAW_VBAT_LSB 39
+#define OFFSET_LSB_NUM 12 //Offset LSB Numerator
+#define OFFSET_LSB_DENOM 10 //Offset LSB Denominator
+#define GAIN_LSB_DENOM 400 // Gain LSB is 0.32/128 = 1/400
+
+/*===========================================================================
+ FUNCTION DEFINITIONS
+===========================================================================*/
+/**
+* @brief This function grant access to FG ADC User access *
+* @details
+* This function grant access to FG ADC User access
+*
+* @param[in] pm_fg_data_type Self
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_grant_sec_access(pm_fg_data_type *fg_adc_usr_ptr)
+{
+
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ if(NULL == fg_adc_usr_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type sec_access = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_sec_access;
+ err_flag = pm_comm_write_byte(fg_adc_usr_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+ }
+
+ return err_flag;
+}
+
+/* Interrupt */
+pm_err_flag_type pm_fg_adc_usr_irq_enable(uint32 pmic_device, pm_fg_adc_usr_irq_type irq, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type irq_reg;
+ pm_register_data_type data = 1 << irq;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ if (enable)
+ {
+ irq_reg = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_en_set;
+ }
+ else
+ {
+ irq_reg = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_en_clr;
+ }
+
+ err_flag = pm_comm_write_byte(fg_adc_usr_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+ }
+ return err_flag;
+}
+
+pm_err_flag_type pm_fg_adc_usr_irq_clear(uint32 pmic_device, pm_fg_adc_usr_irq_type irq)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 1 << irq;
+ pm_register_address_type int_latched_clr;
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ int_latched_clr = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_latched_clr;
+ err_flag = pm_comm_write_byte(fg_adc_usr_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_fg_adc_usr_irq_set_trigger(uint32 pmic_device, pm_fg_adc_usr_irq_type irq, pm_irq_trigger_type trigger)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ uint8 mask = 1 << irq;
+ pm_register_data_type set_type, polarity_high, polarity_low;
+ pm_register_address_type int_set_type, int_polarity_high, int_polarity_low;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ int_set_type = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_set_type;
+ int_polarity_high = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_polarity_high;
+ int_polarity_low = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_polarity_low;
+
+ switch (trigger)
+ {
+ case PM_IRQ_TRIGGER_ACTIVE_LOW:
+ set_type = 0x00;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+ set_type = 0x00;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_RISING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_FALLING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_DUAL_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0xFF;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+ err_flag |= pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+ err_flag |= pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_fg_adc_usr_irq_status(uint32 pmic_device, pm_fg_adc_usr_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 1 << irq;
+ pm_register_address_type int_sts;
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_FG_ADC_USR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ switch (type)
+ {
+ case PM_IRQ_STATUS_RT:
+ int_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_rt_sts;
+ break;
+ case PM_IRQ_STATUS_LATCHED:
+ int_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_latched_sts;
+ break;
+ case PM_IRQ_STATUS_PENDING:
+ int_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->int_pending_sts;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+ *status = data ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+
+
+/**
+* @brief This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use) *
+* @details
+* This function enable/disables BMS Fule Gauge Algorithm BCL (battery current limiting s/w use)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_enable_bcl_monitoring(uint32 pmic_device, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bcl_monitoring = 0x00;
+ uint8 mask = 0x80;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bcl_monitoring = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_en_ctl;
+ err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_monitoring, mask, (pm_register_data_type)(enable << 7), 0);
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns BMS Fule Gauge BCL (battery current limiting s/w use) *
+* @details
+* This function returns BMS Fule Gauge BCL (battery current limiting s/w use)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]enable BCL monitoring sts
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_monitoring_sts(uint32 pmic_device, boolean *enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bcl_monitoring = 0x00;
+ pm_register_data_type data = 0x00;
+ uint8 mask = 0x80;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bcl_monitoring = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_en_ctl;
+ err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_monitoring, mask, &data, 0);
+ *enable = (boolean )data;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns of status of adc_usrery parameter update request *
+* @details
+* This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_req_sts(uint32 pmic_device, boolean *enable)
+{
+
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bat_req_sts = 0x00;
+ pm_register_data_type data = 0x00;
+ uint8 mask = 0x80;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bat_req_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_access_bat_req;
+ err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bat_req_sts, mask, &data, 0);
+ *enable = (boolean )data;
+ }
+
+ return err_flag;
+
+}
+
+
+
+/**
+* @brief This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP *
+* @details
+* This function enable/disables the updates of VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_set_access_bat_req(uint32 pmic_device, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bat_req_sts = 0x00;
+ uint8 mask = 0x80;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bat_req_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_access_bat_req;
+ err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bat_req_sts, mask, (pm_register_data_type)enable, 0);
+ }
+
+ return err_flag;
+}
+
+
+/**
+* @brief This function returns the grant status of battery parameter update request *
+* @details
+* This function returns of status of battery parameter update request (VBAT, IBAT, VBAT_CP, IBAT_CP, IBAT_MAX, IBAT_MAX_CP, VBAT_MIN, VBAT_MIN_CP)
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_access_bat_grnt_sts(uint32 pmic_device, boolean *enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bat_grnt_sts = 0x00;
+ pm_register_data_type data = 0x00;
+ uint8 mask = 0x80;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bat_grnt_sts = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_access_bat_grnt;
+ err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bat_grnt_sts, mask, &data, 0);
+ *enable = (boolean )data;
+ }
+
+ return err_flag;
+
+}
+
+
+
+/**
+* @brief This function returns status RDY bit after battery parameter update request is serviced *
+* @details
+* After the first readings from ADC are obtained, this bit is set to 1; At reset and shutdown, this bit gets automatically cleared
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable BCL monitoring
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_values(uint32 pmic_device, boolean *enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bcl_values = 0x00;
+ pm_register_data_type data = 0x00;
+ uint8 mask = 0x80;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bcl_values = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_values;
+ err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_values, mask, &data, 0);
+ *enable = (boolean )data;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns battery ADC Voltage *
+* @details
+* 8 bit signed partial ADC value, MSB = 0 is positive voltage (positive number), only positive voltages are captured, 1 LSB = 39 mV
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_adc Battery Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat(uint32 pmic_device, uint32 *vbat_adc)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_vbat = 0x00;
+ pm_register_address_type fg_adc_usr_vbat_cp = 0x00;
+ pm_register_data_type data = 0x00;
+ pm_register_data_type data1 = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ //Compare data thrice in copy register and original register to make sure we have right data
+ uint32 total_count = 3;
+ uint32 count = 0;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ *vbat_adc = 0;
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_vbat = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat;
+ fg_adc_usr_vbat_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_cp;
+
+ do {
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat, &data1, 0);
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat_cp, &data, 0);
+
+ if(data == data1)
+ {
+ break;
+ }
+
+ if((total_count - 1) == count)
+ {
+ data = 0;
+ err_flag = PM_ERR_FLAG__INVALID;
+ }
+
+ count++;
+
+ }while ( count < total_count);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *vbat_adc = temp_data1 * RAW_VBAT_LSB;
+ }
+
+ return err_flag;
+}
+
+
+/**
+* @brief This function returns battery ADC Current *
+* @details
+* 8 bit signed partial ADC value, MSB = 0 is discharging current (positive number), only discharging currents are captured, 1 LSB = 39 mA
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_adc Battery Current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat(uint32 pmic_device, int32 *ibat_adc)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_ibat = 0x00;
+ pm_register_address_type fg_adc_usr_ibat_cp = 0x00;
+ pm_register_data_type data = 0x00;
+ pm_register_data_type data1 = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ uint32 count = 0;
+ //Compare data thrice in copy register and original register to make sure we have right data
+ uint32 total_count = 3;
+
+ pm_fg_data_type *fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == ibat_adc)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ fg_adc_usr_ibat = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat;
+ fg_adc_usr_ibat_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_cp;
+
+ do
+ {
+ /*Read original register and copy register to make sure available data is reliable*/
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat, &data1, 0);
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat_cp, &data, 0);
+
+ if (data1 == data)
+ {
+ break;
+ }
+ if ((total_count - 1) == count)
+ {
+ err_flag = PM_ERR_FLAG__INVALID;
+ }
+ count++;
+
+ }
+ while (count < total_count);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *ibat_adc = temp_data1 * RAW_IBAT_LSB;
+ }
+
+ return err_flag;
+}
+
+
+/**
+* @brief This function returns minimum battery Voltage *
+* @details
+* Running Vbat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min Battery Minimum Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min(uint32 pmic_device, uint8 *vbat_min)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_vbat_min = 0x00;
+ pm_register_data_type data = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_vbat_min = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_min;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat_min, &data, 0);
+ *vbat_min = data;
+ }
+
+ return err_flag;
+
+}
+
+/**
+* @brief This function returns max battery current *
+* @details
+* Running Ibat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max Battery Maximum Current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max(uint32 pmic_device, uint8 *ibat_max)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_ibat_max = 0x00;
+ pm_register_data_type data = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_ibat_max = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_max;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat_max, &data, 0);
+ *ibat_max = (uint8)data;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns copy of minimum battery Voltage *
+* @details
+* Running Vbat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]vbat_min Battery Minimum Voltage
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_vbat_min_cp(uint32 pmic_device, uint8 *vbat_min_cp)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_vbat_min_cp = 0x00;
+ pm_register_data_type data = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_vbat_min_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_min_cp;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_vbat_min_cp, &data, 0);
+ *vbat_min_cp = (uint8)data;
+ }
+
+ return err_flag;
+
+}
+
+/**
+* @brief This function returns copy of max battery current *
+* @details
+* Running Ibat Min stored and then cleared by SW
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]ibat_max Battery Maximum Current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_ibat_max_cp(uint32 pmic_device, uint8 *ibat_max_cp)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_ibat_max_cp = 0x00;
+ pm_register_data_type data = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_ibat_max_cp = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_max_cp;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_ibat_max_cp, &data, 0);
+ *ibat_max_cp = (uint8)data;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns Battery Resitance in HALF encoding *
+* @details
+* HALF-FLOATING point encoding, 15:11 exp, bit 10 sign, 9:0 mantissa, 1=1 ohm, refer to MDOS for encoding info
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out]battResistance Battery Resistance
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_half_point_encoding(uint32 pmic_device, uint16 *battResistance)
+{
+
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type addr_msb;
+ pm_register_address_type addr_lsb;
+ pm_register_data_type data_0 = 0x00;
+ pm_register_data_type data_1 = 0x00;
+ uint16 battR = 0x0000;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ addr_lsb = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bat_res_7_0;
+ addr_msb = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bat_res_15_8;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, addr_lsb, &data_0, 0);
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, addr_msb, &data_1, 0);
+
+ battR = ((data_1 | battR) << 8) | (data_0 | battR);
+
+ *battResistance = battR;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns BCL mode status *
+* @details
+* This function returns BCL mode status
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[out] bcl_mode BCL mode
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_mode(uint32 pmic_device, pm_fg_adc_usr_bcl_mode_sts *bcl_mode)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bcl_values = 0x00;
+ pm_register_data_type data = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bcl_values = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_values;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_values, &data, 0);
+ data = data >> 0x06;
+ *bcl_mode = (pm_fg_adc_usr_bcl_mode_sts)data;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns votlage gain correction value for battery voltage *
+* @details
+* This function returns gain correction value for battery
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection for battery volatge
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_v_gain_batt(uint32 pmic_device, int32 *v_gain_correction)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_v_gain_batt = 0x00;
+ pm_register_data_type data = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_v_gain_batt = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_v_gain_batt;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_v_gain_batt, &data, 0);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *v_gain_correction = temp_data1;
+ }
+
+ return err_flag;
+
+}
+
+/**
+* @brief This function returns current Rsense gain correction value for Battery Current *
+* @details
+* This function returns current Rsense gain correction value for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] gainCorrection for battery volatge
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_rsense(uint32 pmic_device, int32 *i_gain_rsense)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_i_gain_rsense = 0x00;
+ pm_register_data_type data = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);;
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_i_gain_rsense = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_gain_rsense;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_gain_rsense, &data, 0);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *i_gain_rsense = temp_data1;
+ }
+
+ return err_flag;
+}
+
+
+
+/**
+* @brief This function returns current Rsense offset value for Battery Current *
+* @details
+* This function returns current Rsense offset value for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_rsense Offset Gain Correction battery current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_rsense(uint32 pmic_device, int32 *i_offset_rsense)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_i_offset_rsense = 0x00;
+ pm_register_data_type data = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_i_offset_rsense = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_offset_rsense;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_offset_rsense, &data, 0);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *i_offset_rsense = (temp_data1 * OFFSET_LSB_NUM) / OFFSET_LSB_DENOM;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns current gain in BATFET for Battery Current *
+* @details
+* This function returns current gain in BATFET for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] igain_offset_correction Gain Correction for battery current
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_gain_batfet(uint32 pmic_device, int32 *i_gain_batfet)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_i_gain_batfet = 0x00;
+ pm_register_data_type data = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_i_gain_batfet = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_gain_batfet;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_gain_batfet, &data, 0);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *i_gain_batfet = temp_data1;
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+* @brief This function returns current offset in BATFET for Battery Current *
+* @details
+* This function returns current gain in BATFET for Battery Current
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] ioffset_batfet_correction offset Gain Correction for BATFET
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_offset_batfet(uint32 pmic_device, int32 *i_offset_batfet)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_i_offset_batfet = 0x00;
+ pm_register_data_type data = 0x00;
+
+ int8 temp_data = 0;
+ int32 temp_data1 = 0;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);;
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_i_offset_batfet = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_offset_batfet;
+ err_flag = pm_comm_read_byte(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_i_offset_batfet, &data, 0);
+
+ //Convert uint8 to int8
+ temp_data = data;
+
+ //Convert int8 to int32
+ temp_data1 = temp_data;
+
+ *i_offset_batfet = ((temp_data1 * OFFSET_LSB_NUM) / OFFSET_LSB_DENOM);
+ }
+
+ return err_flag;
+}
+
+
+
+/**
+* @brief This function returns source used for current sense *
+* @details
+* This function returns source used for current sense
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in] isense_source source used for current sense
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_get_bcl_i_sense_source(uint32 pmic_device, boolean *i_sense_source)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_bcl_isense_source = 0x00;
+ pm_register_data_type data = 0x00;
+ uint8 mask = 0x01;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_bcl_isense_source = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_bcl_i_sense_source;
+ err_flag = pm_comm_read_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_bcl_isense_source, mask, &data, 0);
+ *i_sense_source = (boolean )data;
+ }
+
+ return err_flag;
+}
+
+
+/**
+* @brief This function cleras stored VBAT minimum *
+* @details
+* This function cleras stored VBAT minimum
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable for clearing stored vbat minimum
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_vbat_min(uint32 pmic_device, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_clr_vbat_min = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_clr_vbat_min = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_vbat_min_clr;
+ err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_clr_vbat_min, 0x80, (pm_register_data_type)enable, 0);
+ }
+
+ return err_flag;
+
+}
+
+/**
+* @brief This function clears stored IBAT Max *
+* @details
+* This function cleras stored IBAT Max
+*
+* @param[in] pmic_device_index. Primary: 0 Secondary: 1
+* @param[in]enable enable/disable for clearing stored vbat minimum
+*
+* @return pm_err_flag_type
+* PM_ERR_FLAG__FEATURE_NOT_SUPPORTED = Feature not available on this
+* version of the PMIC.
+* PM_ERR_FLAG__SUCCESS = SUCCESS.
+*
+*/
+pm_err_flag_type pm_fg_adc_usr_clear_ibat_max(uint32 pmic_device, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type fg_adc_usr_clr_ibat_min = 0x00;
+
+ pm_fg_data_type* fg_adc_usr_ptr = pm_fg_get_data(pmic_device);
+
+ if (NULL == fg_adc_usr_ptr)
+ {
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ fg_adc_usr_clr_ibat_min = fg_adc_usr_ptr->fg_register->adc_usr_register->base_address + fg_adc_usr_ptr->fg_register->adc_usr_register->fg_adc_usr_ibat_max_clr;
+ err_flag = pm_comm_write_byte_mask(fg_adc_usr_ptr->comm_ptr->slave_id, fg_adc_usr_clr_ibat_min, 0x80, (pm_register_data_type)enable, 0);
+ }
+
+ return err_flag;
+
+}
+
+
+/**
+PmicFgCalibrateIbat()
+
+@brief
+
+*/
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_ibat(uint32 pmic_device, int32 *calibrated_ibat)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+ int32 raw_ibat = 0;
+ static int32 gain = 0;
+ static int32 offset = 0;
+
+ boolean sense_source = FALSE;
+
+ *calibrated_ibat = 0;
+
+ errFlag |= pm_fg_adc_usr_get_ibat(pmic_device, &raw_ibat);
+
+ if((!gain) || (!offset))
+ {//gain and offset are constant per part, so we should read them only once
+ errFlag |= pm_fg_adc_usr_get_bcl_i_sense_source( pmic_device, &sense_source);
+
+ if(sense_source)
+ {// 1 -> pick rsense correction
+ errFlag |= pm_fg_adc_usr_get_bcl_i_gain_rsense( pmic_device, &gain );
+ errFlag |= pm_fg_adc_usr_get_bcl_i_offset_rsense( pmic_device, &offset );
+ }
+ else
+ {// 0 -> pick batfet correction
+ errFlag |= pm_fg_adc_usr_get_bcl_i_gain_batfet( pmic_device, &gain );
+ errFlag |= pm_fg_adc_usr_get_bcl_i_offset_batfet( pmic_device, &offset );
+ }
+ }
+
+ *calibrated_ibat = (((raw_ibat + offset) * (GAIN_LSB_DENOM + gain ))/ GAIN_LSB_DENOM);
+
+ return errFlag;
+}
+
+pm_err_flag_type pm_fg_adc_usr_get_calibrated_vbat(uint32 pmic_device, uint32 *calibrated_vbat)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+ uint32 raw_vbat = 0;
+ static int32 gain = 0;
+
+ errFlag = pm_fg_adc_usr_get_vbat(pmic_device, &raw_vbat);
+
+ if(!gain)
+ {//Gain is constant w.r.t to every part, so we should read it only once.
+ errFlag |= pm_fg_adc_usr_get_bcl_v_gain_batt( pmic_device, &gain );
+ }
+
+ /* Applying gain calibration to the raw value*/
+ // Twos_complement(VBAT_registerval) *39 * (1+ Twos_Complement(V_GAIN_registerval) * (.32/128))
+ *calibrated_vbat = (uint32)(((raw_vbat * (GAIN_LSB_DENOM + gain)))/GAIN_LSB_DENOM);
+
+ return errFlag;
+}
+
diff --git a/dev/pmic/pmi8994/pm_fg_driver.c b/dev/pmic/pmi8994/pm_fg_driver.c
new file mode 100644
index 0000000..436e19d
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_fg_driver.c
@@ -0,0 +1,74 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#include "pm_fg_driver.h"
+
+/*===========================================================================
+
+ STATIC VARIABLES
+
+===========================================================================*/
+
+/* Static global variable to store the FG driver data */
+
+pm_fg_data_type fg_data[PM_MAX_NUM_PMICS];
+fg_adc_usr_register_ds fg_adc_usr_reg[1] =
+ { /* FG base address and offsets */
+ {0x4200, 0x0 ,0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,\
+ 0x18, 0x19, 0x1A, 0x1B, 0x46, 0x50, 0x51, 0x53, \
+ 0xD0, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x5B, \
+ 0x5C, 0x5D, 0x5E, 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, \
+ 0x66, 0x67, 0x68, 0x69},
+ };
+/* Fill in slave id, pmic index and comm type (comm type is unused) */
+pm_comm_info_type comm[1] = {{2, 1, 0},};
+/* We use only adc user register others are not needed */
+fg_register_ds fg_reg[1] = { {NULL, NULL, NULL, &fg_adc_usr_reg[0]}, };
+
+/*===========================================================================
+
+ FUNCTION DEFINITIONS
+
+===========================================================================*/
+/* Initialize FG driver and data structure */
+void pm_fg_driver_init(uint32_t device_index)
+{
+ fg_data[device_index].comm_ptr = &comm[0];
+ fg_data[device_index].fg_register = &fg_reg[0];
+ fg_data[device_index].num_of_peripherals = 0x0;
+}
+
+pm_fg_data_type* pm_fg_get_data(uint32 pmic_index)
+{
+ if(pmic_index <PM_MAX_NUM_PMICS)
+ {
+ return &fg_data[pmic_index];
+ }
+
+ return NULL;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_bat_if.c b/dev/pmic/pmi8994/pm_smbchg_bat_if.c
new file mode 100644
index 0000000..5e8253a
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_bat_if.c
@@ -0,0 +1,763 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+
+#include "pm_smbchg_bat_if.h"
+#include "pm_smbchg_driver.h"
+#include <debug.h>
+#include <sys/types.h>
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_bat_if_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value);
+
+/*writes to secured acess register to unlock pmic write operation*/
+static inline pm_err_flag_type pm_smbchg_bat_if_unlock_perph_write(pm_smbchg_data_type *smbchg);
+
+/*Returns battery presence status*/
+pm_err_flag_type pm_smbchg_bat_if_get_bat_pres_status(uint32 device_index, boolean *bat_present)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == bat_present)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type bat_pres_status = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->bat_pres_status;
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, bat_pres_status, 0x80, &data, 0);
+ *bat_present = (data) ? TRUE : FALSE;
+ }
+
+ return errFlag;
+}
+
+/*This API clears the dead battery timer*/
+pm_err_flag_type pm_smbchg_bat_if_clear_dead_bat_timer(uint32 device_index)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type clr_dead_bat_timer = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->clr_dead_bat_timer;
+
+ errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, clr_dead_bat_timer, 0x1, 0x1, 0);
+ }
+
+ return errFlag;
+}
+
+/*writes to battery interface command control to enable/disable wireless charging, thermal current override, stat output, fast charge, battery charging, OTG */
+pm_err_flag_type pm_smbchg_bat_if_config_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean enable)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_BAT_IF_CMD__INVALID == cmd_chg_cfg)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cmd_chg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cmd_chg;
+
+ errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cmd_chg, (0x1<<cmd_chg_cfg), (pm_register_data_type)(enable<<cmd_chg_cfg), 0);
+ }
+
+ return errFlag;
+}
+
+
+/*reads battery interface command control settings for enable/disable wireless charging, thermal current override, stat output, fast charge, battery charging, OTG */
+pm_err_flag_type pm_smbchg_bat_if_get_chg_cmd(uint32 device_index, pm_smbchg_bat_if_cmd_chg_type cmd_chg_cfg, boolean *enable)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_register_address_type cmd_chg;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_BAT_IF_CMD__INVALID == cmd_chg_cfg)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == enable)
+ {
+ errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ cmd_chg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cmd_chg;
+ errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cmd_chg, &data, 0);
+
+ *enable = (data & (0x1<<cmd_chg_cfg)) ? TRUE : FALSE;
+ }
+
+ return errFlag;
+}
+
+/*Sets low battery voltag threshold*/
+pm_err_flag_type pm_smbchg_bat_if_set_low_batt_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type low_bat_threshold)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type vbl_cfg;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (low_bat_threshold >= PM_SMBCHG_BAT_IF_LOW_BATTERY_THRESH_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ vbl_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->vbl_cfg;
+ errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, vbl_cfg, 0xF, (pm_register_data_type)low_bat_threshold, 0);
+ }
+ return errFlag;
+}
+
+/*Gets low battery voltag threshold*/
+pm_err_flag_type pm_smbchg_bat_if_get_low_bat_volt_threshold(uint32 device_index, pm_smbchg_bat_if_low_bat_thresh_type *low_bat_threshold)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_register_address_type vbl_cfg;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == low_bat_threshold)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ vbl_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->vbl_cfg;
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, vbl_cfg, 0xF, &data, 0);
+ *low_bat_threshold = (pm_smbchg_bat_if_low_bat_thresh_type)data;
+ }
+
+ return errFlag;
+}
+
+/* This API sets battery missing detection configuration like select if the battery missing monitoring should only happen at the beginning of a charge cycle or every 3 seconds */
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_register_address_type bm_cfg;
+ uint32 time_pos = 0;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == batt_missing_cfg)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *batt_missing_detect_time = smbchg_ptr->chg_range_data->batt_missing_detect_time;
+ bm_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->bm_cfg;
+
+ /*Find the nearest register value corresponding to time*/
+ while (time_pos < BATT_MISSING_SIZE)
+ {
+ if (batt_missing_cfg->batt_removal_det_time_usec < batt_missing_detect_time[time_pos])
+ {
+ break;
+ }
+ else
+ {
+ time_pos++;
+ }
+ }
+ batt_missing_cfg->batt_removal_det_time_usec = (time_pos) ? (time_pos - 1) : 0;
+
+ data = (batt_missing_cfg->batt_removal_det_time_usec << 6) | (batt_missing_cfg->batt_bat_get_override_en << 5) | (batt_missing_cfg->batt_missing_input_plugin_en << 4)
+ | (batt_missing_cfg->batt_missing_2p6s_poller_en << 3) | (batt_missing_cfg->batt_missing_algo_en << 2) | (batt_missing_cfg->use_therm_pin_for_batt_missing_src << 1)
+ | batt_missing_cfg->use_bmd_pin_for_batt_missing_src;
+
+ errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, bm_cfg, data, 0);
+ }
+
+ return errFlag;
+}
+
+
+/*This API reads the battery missing configuration settings*/
+pm_err_flag_type pm_smbchg_bat_if_get_bat_missing_cfg(uint32 device_index, pm_smbchg_bat_if_batt_missing_cfg_type *batt_missing_cfg)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_register_address_type bm_cfg;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == batt_missing_cfg)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *batt_missing_detect_time = smbchg_ptr->chg_range_data->batt_missing_detect_time;
+ bm_cfg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->bm_cfg;
+
+ errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, bm_cfg, &data, 0);
+
+ batt_missing_cfg->batt_removal_det_time_usec = batt_missing_detect_time[(data >> 6)];
+ batt_missing_cfg->batt_bat_get_override_en = (data & 0x20) ? TRUE : FALSE;
+ batt_missing_cfg->batt_missing_input_plugin_en = (data & 0x10) ? TRUE : FALSE;
+ batt_missing_cfg->batt_missing_2p6s_poller_en = (data & 0x8) ? TRUE : FALSE;
+ batt_missing_cfg->batt_missing_algo_en = (data & 0x4) ? TRUE : FALSE;
+ batt_missing_cfg->use_therm_pin_for_batt_missing_src = (data & 0x2) ? TRUE : FALSE;
+ batt_missing_cfg->use_bmd_pin_for_batt_missing_src = (data & 0x1) ? TRUE : FALSE;
+ }
+ return errFlag;
+}
+
+
+
+
+pm_err_flag_type pm_smbchg_bat_if_set_bat_missing_detection_src(uint32 device_index, pm_smbchg_bat_miss_detect_src_type batt_missing_det_src)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_bat_if_batt_missing_cfg_type batt_missing_cfg;
+
+ if (batt_missing_det_src >= PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ //Get the current configuration
+ err_flag = pm_smbchg_bat_if_get_bat_missing_cfg(device_index, &batt_missing_cfg);
+
+ if (err_flag == PM_ERR_FLAG__SUCCESS)
+ {
+ //Change needed bits and write it back
+ switch (batt_missing_det_src)
+ {
+ case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_PIN:
+ batt_missing_cfg.use_bmd_pin_for_batt_missing_src = 0;
+ batt_missing_cfg.use_therm_pin_for_batt_missing_src = 1;
+ break;
+ case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_BMD_PIN:
+ batt_missing_cfg.use_bmd_pin_for_batt_missing_src = 1;
+ batt_missing_cfg.use_therm_pin_for_batt_missing_src = 0;
+ break;
+ case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_THERM_BMD_PIN:
+ batt_missing_cfg.use_bmd_pin_for_batt_missing_src = 1;
+ batt_missing_cfg.use_therm_pin_for_batt_missing_src = 1;
+ break;
+ case PM_SMBCHG_BAT_IF_BAT_MISS_DETECT_SRC_NONE:
+ batt_missing_cfg.use_bmd_pin_for_batt_missing_src = 0;
+ batt_missing_cfg.use_therm_pin_for_batt_missing_src = 0;
+ break;
+ default:
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ break;
+ }
+ err_flag |= pm_smbchg_bat_if_set_bat_missing_cfg(device_index, &batt_missing_cfg);
+ }
+ }
+ return err_flag;
+}
+
+
+/*This API sets the minimum system voltage. And below this voltage system and battery are not connected together.Valid values are 315, 345 and 360 milli volt*/
+pm_err_flag_type pm_smbchg_bat_if_set_min_sys_volt(uint32 device_index, uint32 min_sys_millivolt)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ if (min_sys_millivolt < 345)
+ {
+ data = 0;
+ }
+ else if (min_sys_millivolt < 360)
+ {
+ data = 1;
+ }
+ else
+ {
+ data = 0x2;
+ }
+ pm_register_address_type cfg_sysmin = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cfg_sysmin;
+
+ errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_sysmin, 0x3, data, 0);
+ }
+
+ return errFlag;
+}
+
+/*This API reads the configured minimum system voltage */
+pm_err_flag_type pm_smbchg_bat_if_get_min_sys_volt(uint32 device_index, uint32 *min_sys_millivolt)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == min_sys_millivolt)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cfg_sysmin = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->cfg_sysmin;
+ errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cfg_sysmin, &data, 0);
+ switch (data & 0x03)
+ {
+ case 0x00:
+ *min_sys_millivolt = 315;
+ break;
+ case 0x01:
+ *min_sys_millivolt = 354;
+ default:
+ *min_sys_millivolt = 360;
+ }
+ }
+
+ return errFlag;
+}
+
+/*This API configures the current limit for pass through mode, low volt mode and high volt mode in milliamp*/
+pm_err_flag_type pm_smbchg_bat_if_set_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 current_ma)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_register_address_type reg;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (dcin_icl_type >= PM_SMBCHG_BAT_IF_DCIN_INVALID_MODE)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+ switch (dcin_icl_type)
+ {
+ case PM_SMBCHG_BAT_IF_DCIN_PASS_THROUGH_MODE:
+ reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_pt;
+ break;
+ case PM_SMBCHG_BAT_IF_DCIN_LOW_VOLT_MODE:
+ reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_lv;
+ break;
+ case PM_SMBCHG_BAT_IF_DCIN_HIGH_VOLT_MODE:
+ reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_hv;
+ break;
+ default:
+ return PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+
+ pm_smbchg_bat_if_return_reg_value(current_ma, current_limits, DCIN_SIZE, &data);
+ errFlag |= pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+ errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, reg, 0x1F, data, 0);
+ }
+
+ return errFlag;
+}
+
+/*This API reads the configured current limit for pass through mode, low volt mode and high volt mode in milliamp*/
+pm_err_flag_type pm_smbchg_bat_if_get_dcin_input_current_limit(uint32 device_index, pm_smbchg_bat_if_dcin_icl_type dcin_icl_type, uint32 *current_ma)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_register_address_type reg;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (dcin_icl_type >= PM_SMBCHG_BAT_IF_DCIN_INVALID_MODE)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == current_ma)
+ {
+ errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+ switch (dcin_icl_type)
+ {
+ case PM_SMBCHG_BAT_IF_DCIN_PASS_THROUGH_MODE:
+ reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_pt;
+ break;
+ case PM_SMBCHG_BAT_IF_DCIN_LOW_VOLT_MODE:
+ reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_lv;
+ break;
+ case PM_SMBCHG_BAT_IF_DCIN_HIGH_VOLT_MODE:
+ reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->zin_icl_hv;
+ break;
+ default:
+ return PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, reg, 0x1F, &data, 0);
+ if (DCIN_SIZE <= data)
+ {
+ errFlag |= PM_ERR_FLAG__INVALID;
+ }
+ else
+ {
+ *current_ma = current_limits[data];
+ }
+ }
+
+ return errFlag;
+}
+
+///////////////////////////////
+/*This API configures WI PWR timer. div2 falling edge values: 0, 150, 250, 500 usec. wipwr_irq_tmr_us values 1000, 1500,2000,2500,3000,4000,4500 usec*/
+///////////////////////////////
+pm_err_flag_type pm_smbchg_bat_if_set_wi_pwr_tmr(uint32 device_index, uint32 div2_falling_edge_time_us, uint32 wipwr_irq_tmr_us)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_data_type wi_pwr_tmr = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->wi_pwr_tmr;
+
+ /*div2_falling_edge_time_us: 0 - 0, 1 - 150, 2 - 250, 3 - 500 us*/
+ div2_falling_edge_time_us = (div2_falling_edge_time_us > 250) ? 0x3 : ((div2_falling_edge_time_us - 50) / 100);
+
+ /*wipwr_irq_tmr_us: 0 - 1000, 1 - 1500, 2 - 2000, 3 - 2500, 4 - 3000, 5 - 3500, 6 -4000, 7 - 4500 us*/
+ wipwr_irq_tmr_us = (wipwr_irq_tmr_us > 4500) ? 5 : (wipwr_irq_tmr_us - 1000) / 500;
+
+ data = (div2_falling_edge_time_us << 4) | wipwr_irq_tmr_us;
+ errFlag = pm_smbchg_bat_if_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, wi_pwr_tmr, 0x3F, data, 0);
+ }
+
+ return errFlag;
+}
+
+/*This API reads the WIPWR timer settings*/
+pm_err_flag_type pm_smbchg_bat_if_get_wi_pwr_tmr(uint32 device_index, uint32 *div2_falling_edge_time_us, uint32 *wipwr_irq_tmr_us)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == div2_falling_edge_time_us)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == wipwr_irq_tmr_us)
+ {
+ errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_data_type wi_pwr_tmr = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->wi_pwr_tmr;
+
+ errFlag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, wi_pwr_tmr, &data, 0);
+ /*div2_falling_edge_time_us: 0 - 0, 1 - 150, 2 - 250, 3 - 500 us*/
+ *div2_falling_edge_time_us = ((data & 0x30) == 0x30) ? 500 : (((data & 0x30) >> 4) * 100 + 2);
+
+ /*wipwr_irq_tmr_us: 0 - 1000, 1 - 1500, 2 - 2000, 3 - 2500, 4 - 3000, 5 - 3500, 6 -4000, 7 - 4500 us*/
+ *wipwr_irq_tmr_us = (data & 0x7) * 500 + 1000;
+ }
+
+ return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_bat_if_irq_enable(uint32 device_index, pm_smbchg_bat_if_irq_type irq, boolean enable)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type irq_reg;
+ pm_register_data_type data = 1 << irq;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ if (enable)
+ {
+ irq_reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_en_set;
+ }
+ else
+ {
+ irq_reg = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_en_clr;
+ }
+
+ errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+ }
+ return errFlag;
+}
+
+pm_err_flag_type pm_smbchg_bat_if_irq_clear(uint32 device_index, pm_smbchg_bat_if_irq_type irq)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 1 << irq;
+ pm_register_address_type int_latched_clr;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ int_latched_clr = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_latched_clr;
+ errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+ }
+
+ return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_bat_if_irq_set_trigger(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_trigger_type trigger)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ uint8 mask = 1 << irq;
+ pm_register_data_type set_type, polarity_high, polarity_low;
+ pm_register_address_type int_set_type, int_polarity_high, int_polarity_low;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ int_set_type = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_set_type;
+ int_polarity_high = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_polarity_high;
+ int_polarity_low = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_polarity_low;
+
+ switch (trigger)
+ {
+ case PM_IRQ_TRIGGER_ACTIVE_LOW:
+ set_type = 0x00;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+ set_type = 0x00;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_RISING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_FALLING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_DUAL_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0xFF;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+ }
+
+ return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_bat_if_irq_status(uint32 device_index, pm_smbchg_bat_if_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 1 << irq;
+ pm_register_address_type int_sts;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_BAT_IF_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ switch (type)
+ {
+ case PM_IRQ_STATUS_RT:
+ int_sts = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_rt_sts;
+ break;
+ case PM_IRQ_STATUS_LATCHED:
+ int_sts = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_latched_sts;
+ break;
+ case PM_IRQ_STATUS_PENDING:
+ int_sts = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->int_pending_sts;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+ *status = data ? TRUE : FALSE;
+ }
+
+ return errFlag;
+}
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_bat_if_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+{
+ uint32 loc = 0;
+
+ while (loc < array_size)
+ {
+ if (input_data < array[loc])
+ {
+ break;
+ }
+ else
+ {
+ loc++;
+ }
+ }
+
+ *reg_value = (loc) ? (loc - 1) : 0;
+
+ return;
+}
+
+
+static inline pm_err_flag_type pm_smbchg_bat_if_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type sec_access = smbchg_ptr->smbchg_register->bat_if_register->base_address + smbchg_ptr->smbchg_register->bat_if_register->sec_access;
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+ }
+
+ return err_flag;
+}
+
diff --git a/dev/pmic/pmi8994/pm_smbchg_chgr.c b/dev/pmic/pmi8994/pm_smbchg_chgr.c
new file mode 100644
index 0000000..2179772
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_chgr.c
@@ -0,0 +1,1091 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+#include "pm_smbchg_chgr.h"
+#include "pm_smbchg_driver.h"
+#include <sys/types.h>
+
+static inline pm_err_flag_type pm_smbchg_chgr_unlock_perph_write(pm_smbchg_data_type *smbchg);
+
+
+/*Find the nearest register value corresponding to input_data*/
+//static void pm_smbchg_chgr_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+//{
+// uint32 position = 0;
+//
+// while (position < array_size)
+// {
+// if (input_data < array[position])
+// {
+// break;
+// }
+// else
+// {
+// position++;
+// }
+// }
+//
+// *reg_value = (position) ? (position - 1) : 0;
+//
+// return;
+//}
+
+//@todo: implement pm_smbchg_chgr_chg_option
+
+/*This API returns if battery is above VBAT_WEAK threshold or not*/
+pm_err_flag_type pm_smbchg_chgr_vbat_sts(uint32 device_index, boolean *is_above_vbat_weak)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == is_above_vbat_weak)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type vbat_status = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->vbat_status;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, vbat_status, &data, 0);
+
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ *is_above_vbat_weak = (data & 0x2) ? TRUE : FALSE;
+ }
+ }
+
+ return err_flag;
+}
+
+//This API returns the float vlotage status
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_sts(uint32 device_index, boolean *aicl_in_hard_limit, uint32 *fv_mv)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint32 temp_data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == fv_mv)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type fv_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, fv_sts, &data, 0);
+
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ *aicl_in_hard_limit = (data & 0x40) ? TRUE : FALSE;
+ temp_data = data & 0x3F;
+ if (temp_data < 0x5)
+ {
+ temp_data = 3600;
+ }
+ if (temp_data >= 0x22)
+ {
+ temp_data = 4500;
+ }
+ else
+ {
+ temp_data = (temp_data > 0x2D) ? (3620 + ((temp_data - 0x5) * 20)) : (3600 + ((temp_data - 0x5) * 20));
+ }
+
+ *fv_mv = temp_data;
+ }
+ }
+
+ return err_flag;
+}
+
+/*This API returns the pre charger and fast charger current status in milliamp*/
+pm_err_flag_type pm_smbchg_chgr_get_chg_i_sts(uint32 device_index, uint32 *pre_charge_current_ma, uint32 *fast_charge_current_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == fast_charge_current_ma)
+ {
+ err_flag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *charge_current = smbchg_ptr->chg_range_data->usbin_current_limits;
+ if ( NULL == charge_current)
+ {
+ err_flag |= PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ pm_register_address_type ichg_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->ichg_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, ichg_sts, &data, 0);
+
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ *pre_charge_current_ma = ((data >> 5) & 0x04) ? 550 : (100 + ((data >> 5) * 50));
+
+ *fast_charge_current_ma = charge_current[data & 0x1F];
+ }
+ }
+
+ return err_flag;
+}
+
+/*This API reads the various charging status*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_sts(uint32 device_index, pm_smbchg_chgr_chgr_status_type *chgr_sts)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_register_address_type chgr_sts_reg;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == chgr_sts)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ chgr_sts_reg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, chgr_sts_reg, &data, 0);
+
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ chgr_sts->is_net_i_discharg = (data & 0x80) ? TRUE : FALSE;
+ chgr_sts->is_auto_fv_comp_active = (data & 0x40) ? TRUE : FALSE;
+ chgr_sts->is_chgr_done_once = (data & 0x20) ? TRUE : FALSE;
+ chgr_sts->is_batt_lt_2v = (data & 0x10) ? TRUE : FALSE;
+ chgr_sts->is_chgr_in_hold_off = (data & 0x8) ? TRUE : FALSE;
+ chgr_sts->charging_type = (pm_smbchg_chgr_charging_type)((data & 0x6) >> 1);
+ chgr_sts->charger_enable = (data & 0x1) ? TRUE : FALSE;
+ }
+ }
+
+ return err_flag;
+}
+
+/*This API configures the pre-charger current value in milliamp. Valid values are 100 to 550 mAmp*/
+pm_err_flag_type pm_smbchg_chgr_set_pre_chg_i(uint32 device_index, uint32 pre_chg_i_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_register_address_type pcc_cfg;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pcc_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->pcc_cfg;
+
+ pre_chg_i_ma = (pre_chg_i_ma<100)? 100 : pre_chg_i_ma;
+
+ data = (pre_chg_i_ma > 250) ? 0x4 : ((pre_chg_i_ma - 100) / 50);
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, pcc_cfg, 0x7, data, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API configures the fast-charger current value in milliamp. Valid values are 300 to 3000 mAmp*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i(uint32 device_index, uint32 fast_chag_i_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ uint32 *charge_current = smbchg_ptr->chg_range_data->usbin_current_limits;
+ pm_register_address_type fcc_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fcc_cfg;
+
+ while (data < USBIN_SIZE)
+ {
+ if (charge_current[data] > fast_chag_i_ma)
+ {
+ break;
+ }
+ else
+ {
+ data++;
+ }
+ }
+
+ data = (data < USBIN_SIZE) ? (data - 1) : 0;
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fcc_cfg, 0x1F, data, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API configures the fast-charger current compensation value in milliamp. Valid values are 300 to 1200 mAmp*/
+pm_err_flag_type pm_smbchg_chgr_set_fast_chg_i_cmpn(uint32 device_index, uint32 fast_chg_i_cmp_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type fcc_cmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fcc_cmp_cfg;
+
+ if (fast_chg_i_cmp_ma < 700)
+ {
+ data = 0x00;
+ }
+ else if (fast_chg_i_cmp_ma < 900)
+ {
+ data = 0x01;
+ }
+ else if (fast_chg_i_cmp_ma < 1200)
+ {
+ data = 0x02;
+ }
+ else
+ {
+ data = 0x03;
+ }
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fcc_cmp_cfg, 0x3, data, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API configures the floating voltage. Valid range is 3600mV to 4500 mv*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt(uint32 device_index, uint32 float_volt_mv)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type fv_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cfg;
+
+ if (float_volt_mv < 3600)
+ {
+ data = 0x5;
+ }
+ else if (float_volt_mv > 4500)
+ {
+ data = 0x33;
+ }
+ else
+ {
+ data = ((float_volt_mv - 3600) / 20) + 5;
+ }
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cfg, 0x3F, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cfg(uint32 device_index, uint32 *float_volt_mv)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == float_volt_mv)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type fv_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cfg;
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cfg, 0x3F, &data, 0);
+ *float_volt_mv = (data > 0x5) ? 0x00 : (3600 + ((data - 0x5) * 20));
+ }
+
+ return err_flag;
+}
+
+/*This api sets floating voltage conpmensation code. Valid value is from 0 to 6300 mV*/
+pm_err_flag_type pm_smbchg_chgr_set_float_volt_cmpn(uint32 device_index, uint32 float_volt_cmpn)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type fv_cmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cmp_cfg;
+
+ data = (float_volt_cmpn > 6300) ? 63 : float_volt_cmpn/100;
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cmp_cfg, 0x3F, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This api reads floating voltage conpmensation code settings. Valid value is from 0 to 63*/
+pm_err_flag_type pm_smbchg_chgr_get_float_volt_cmpn(uint32 device_index, uint32 *float_volt_cmpn)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == float_volt_cmpn)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type fv_cmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->fv_cmp_cfg;
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, fv_cmp_cfg, 0x3F, &data, 0);
+ *float_volt_cmpn = data * 10;
+ }
+
+ return err_flag;
+}
+
+/*This api enables/disables Charger Auto Float Voltage Compensation*/
+pm_err_flag_type pm_smbchg_chgr_en_afvc(uint32 device_index, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type cfg_afvc = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_afvc;
+ data = (enable) ? TRUE : FALSE;
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_afvc, 0x7, data, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API sets charge inhibit level*/
+pm_err_flag_type pm_smbchg_chgr_set_inhibi_threshold(uint32 device_index, uint32 inhibit_lvl_mv)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ if (inhibit_lvl_mv < 100)
+ {
+ data = 0x00;
+ }
+ else if (inhibit_lvl_mv < 200)
+ {
+ data = 0x1;
+ }
+ else if (inhibit_lvl_mv < 300)
+ {
+ data = 0x2;
+ }
+ else
+ {
+ data = 0x3;
+ }
+
+ pm_register_address_type cfg_chg_inhib = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_chg_inhib;
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_chg_inhib, 0x3, data, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API reads charge inhibit level configured*/
+pm_err_flag_type pm_smbchg_chgr_get_inhibi_threshold(uint32 device_index, uint32 *inhibit_lvl_mv)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == inhibit_lvl_mv)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cfg_chg_inhib = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_chg_inhib;
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_chg_inhib, 0x3, &data, 0);
+ *inhibit_lvl_mv = (data == 0x00) ? 50 : (data * 100);
+ }
+
+ return err_flag;
+}
+
+/*This API sets the pre-charge to full charger threshold. Valid range is 2400mV to 3000mV*/
+pm_err_flag_type pm_smbchg_chgr_set_p2f_threshold(uint32 device_index, uint32 milli_volt)
+
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ if (milli_volt < 2600)
+ {
+ data = 0x00;
+ }
+ else if (milli_volt < 2800)
+ {
+ data = 0x1;
+ }
+ else if (milli_volt < 3000)
+ {
+ data = 0x2;
+ }
+ else
+ {
+ data = 0x3;
+ }
+
+ pm_register_address_type cfg_p2f = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_p2f;
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_p2f, 0x3, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This API reads the pre-charge to full charger threshold. Valid range is 2400mV to 3000mV*/
+pm_err_flag_type pm_smbchg_chgr_get_p2f_threshold(uint32 device_index, uint32 *milli_volt)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == milli_volt)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cfg_p2f = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_p2f;
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_p2f, 0x3, &data, 0);
+ *milli_volt = 2400 + (200 * data);
+ }
+
+ return err_flag;
+}
+
+
+/*This API sets the charge termination current in milliamp */
+pm_err_flag_type pm_smbchg_chgr_set_charge_termination_current(uint32 device_index, uint32 current_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ /* 000 = 300mA, 001 = 50mA, 010 = 100mA, 011 = 150mA, 100 = 200mA, 101 = 250mA, 110 =500mA, 111 = 600mA */
+ if (current_ma < 300)
+ {
+ data = (current_ma / 50) ? (current_ma / 50) : 0x1;
+ }
+ else if (current_ma < 500)
+ {
+ data = 0x00;
+ }
+ else
+ {
+ data = (current_ma < 600) ? 0x6 : 0x7;
+ }
+
+ pm_register_address_type cfg_tcc = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_tcc;
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_tcc, 0x7, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This API reads the charge termination current_ma*/
+pm_err_flag_type pm_smbchg_chgr_get_charge_termination_current(uint32 device_index, uint32 *current_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == current_ma)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cfg_tcc = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->cfg_tcc;
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg_tcc, 0x7, &data, 0);
+ if (data == 0)
+ {
+ *current_ma = 300;
+ }
+ else if (data < 5)
+ {
+ *current_ma = 50 * data;
+ }
+ else
+ {
+ *current_ma = 100 * (data - 1);
+ }
+ }
+
+ return err_flag;
+}
+
+
+/*This API configures charge temperature compensation type*/
+pm_err_flag_type pm_smbchg_chgr_config_chgr_temp_cmpn(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_CHGR_CCMPN__INVALID == ccmpn_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type ccmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->ccmp_cfg;
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, ccmp_cfg, (0x1 << ccmpn_type), (pm_register_data_type)(enable << ccmpn_type), 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This API reads configured charge temperature compensation type*/
+pm_err_flag_type pm_smbchg_chgr_get_chgr_temp_cmpn_config(uint32 device_index, pm_smbchg_chgr_ccmpn_type ccmpn_type, boolean *enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_CHGR_CCMPN__INVALID == ccmpn_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type ccmp_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->ccmp_cfg;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, ccmp_cfg, &data, 0);
+ *enable = (data & (0x1 << ccmpn_type)) ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+
+/*This API sets charger configuration */
+pm_err_flag_type pm_smbchg_chgr_config_chgr(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data1, data2;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == chgr_cfg_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (chgr_cfg_type->sysok_opt >= PM_SMBCHG_CHGR_SYSOK_OPT__INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ data1 = (chgr_cfg_type->cont_without_fg_ready) | (chgr_cfg_type->is_rchg_threshold_src_fg << 1) | (chgr_cfg_type->is_term_current_src_fg << 2)
+ | (chgr_cfg_type->en_early_current_termination << 3) | (chgr_cfg_type->sysok_opt << 4) | (chgr_cfg_type->en_sysok_pol_table_n << 7);
+
+ data2 = (chgr_cfg_type->en_charger_inhibit) | (chgr_cfg_type->is_holdoff_tmr_350ms << 1) | (chgr_cfg_type->auto_rchg_dis << 2) | (chgr_cfg_type->current_termination_dis << 3)
+ | (chgr_cfg_type->batt_ov_ends_cycle_en << 4) | (chgr_cfg_type->p2f_chg_tran_require_cmd << 5);
+
+ pm_register_address_type chgr_cfg1 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg1;
+ pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg1, data1, 0);
+
+ err_flag |= pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, data2, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API reads charger configuration */
+pm_err_flag_type pm_smbchg_chgr_get_chgr_config(uint32 device_index, pm_chgr_chgr_cfg_type *chgr_cfg_type)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data1, data2;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == chgr_cfg_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type chgr_cfg1 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg1;
+ pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg1, &data1, 0);
+ err_flag |= pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, &data2, 0);
+
+ chgr_cfg_type->cont_without_fg_ready = (data1 & 0x1) ? TRUE : FALSE;
+ chgr_cfg_type->is_rchg_threshold_src_fg = (data1 & 0x2) ? TRUE : FALSE;
+ chgr_cfg_type->is_term_current_src_fg = (data1 & 0x4) ? TRUE : FALSE;
+ chgr_cfg_type->en_early_current_termination = (data1 & 0x8) ? TRUE : FALSE;
+ chgr_cfg_type->sysok_opt = (pm_smbchg_chgr_sysok_opt_type)((data1 & 0x70) >> 4);
+ chgr_cfg_type->en_sysok_pol_table_n = (data1 & 0x80) ? TRUE : FALSE;;
+
+ chgr_cfg_type->en_charger_inhibit = (data2 & 0x1) ? TRUE : FALSE;
+ chgr_cfg_type->is_holdoff_tmr_350ms = (data2 & 0x2) ? TRUE : FALSE;
+ chgr_cfg_type->auto_rchg_dis = (data2 & 0x4) ? TRUE : FALSE;
+ chgr_cfg_type->current_termination_dis = (data2 & 0x8) ? TRUE : FALSE;
+ chgr_cfg_type->batt_ov_ends_cycle_en = (data2 & 0x10) ? TRUE : FALSE;
+ chgr_cfg_type->p2f_chg_tran_require_cmd = (data2 & 0x20) ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_chgr_config_sfty_timer(uint32 device_index, uint32 pre_chg_sfty_min, uint32 total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type sfty_timer_type)
+
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data1, data2, data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (sfty_timer_type >= PM_SMBCHG_CHGR_SFTY_TIMER__INVAID_TYPE)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ if (pre_chg_sfty_min < 96)
+ {
+ data1 = (pre_chg_sfty_min < 48) ? 0x0 : 0x1;
+ }
+ else
+ {
+ data1 = (pre_chg_sfty_min < 192) ? 0x2 : 0x3;
+ }
+
+ if (total_chg_sfty_min < 768)
+ {
+ data2 = (total_chg_sfty_min < 384) ? 0x0 : 0x1;
+ }
+ else
+ {
+ data2 = (total_chg_sfty_min < 1536) ? 0x2 : 0x3;
+ }
+
+ data = (sfty_timer_type << 4) | (data2 << 2) | data1;
+
+ pm_register_address_type sft_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->sft_cfg;
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, sft_cfg, 0x3F, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_get_sfty_timer_config(uint32 device_index, uint32 *pre_chg_sfty_min, uint32 *total_chg_sfty_min, pm_smbchg_chgr_sfty_timer_type *sfty_timer_type)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == pre_chg_sfty_min || NULL == total_chg_sfty_min || NULL == sfty_timer_type)
+ {
+ err_flag = PM_ERR_FLAG__INVALID_POINTER;
+ }
+ else
+ {
+ pm_register_address_type sft_cfg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->sft_cfg;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, sft_cfg, &data, 0);
+
+ *sfty_timer_type = (pm_smbchg_chgr_sfty_timer_type)((data & 0x30) >> 0x4);
+
+ switch (data & 0x3)
+ {
+ case 0:
+ *pre_chg_sfty_min = 24; break;
+ case 1:
+ *pre_chg_sfty_min = 48; break;
+ case 2:
+ *pre_chg_sfty_min = 96; break;
+ default:
+ *pre_chg_sfty_min = 192;
+ }
+
+ switch ((data & 0x6) >> 2)
+ {
+ case 0:
+ *total_chg_sfty_min = 192; break;
+ case 1:
+ *total_chg_sfty_min = 384; break;
+ case 2:
+ *total_chg_sfty_min = 768; break;
+ default:
+ *total_chg_sfty_min = 1536;
+ }
+
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_irq_enable(uint32 device_index, pm_smbchg_chgr_irq_type irq, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type irq_reg;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ if (enable)
+ {
+ irq_reg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_en_set;
+ }
+ else
+ {
+ irq_reg = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_en_clr;
+ }
+
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+ }
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_chgr_irq_clear(uint32 device_index, pm_smbchg_chgr_irq_type irq)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 1 << irq;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_latched_clr;
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_chgr_irq_set_trigger(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_trigger_type trigger)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ uint8 mask = 1 << irq;
+ pm_register_data_type set_type, polarity_high, polarity_low;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ switch (trigger)
+ {
+ case PM_IRQ_TRIGGER_ACTIVE_LOW:
+ set_type = 0x00;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+ set_type = 0x00;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_RISING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_FALLING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_DUAL_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0xFF;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_set_type;
+ pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_polarity_high;
+ pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_polarity_low;
+
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_chgr_irq_status(uint32 device_index, pm_smbchg_chgr_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 1 << irq;
+ pm_register_address_type int_sts;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_CHGR_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == status)
+ {
+ err_flag = PM_ERR_FLAG__PAR4_OUT_OF_RANGE;
+ }
+ else
+ {
+ switch (type)
+ {
+ case PM_IRQ_STATUS_RT:
+ int_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_rt_sts;
+ break;
+ case PM_IRQ_STATUS_LATCHED:
+ int_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_latched_sts;
+ break;
+ case PM_IRQ_STATUS_PENDING:
+ int_sts = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->int_pending_sts;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+ *status = data ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+static inline pm_err_flag_type pm_smbchg_chgr_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type sec_access = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->sec_access;
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This API sets charger source */
+pm_err_flag_type pm_smbchg_chgr_enable_src(uint32 device_index, boolean chg_en_src)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, 0x80, chg_en_src, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API sets charger polarity */
+pm_err_flag_type pm_smbchg_chgr_set_chg_polarity_low (uint32 device_index, boolean chg_pol_low)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type chgr_cfg2 = smbchg_ptr->smbchg_register->chgr_register->base_address + smbchg_ptr->smbchg_register->chgr_register->chgr_cfg2;
+
+ err_flag = pm_smbchg_chgr_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, chgr_cfg2, 0x40, chg_pol_low, 0);
+ }
+
+ return err_flag;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_dc_chgpth.c b/dev/pmic/pmi8994/pm_smbchg_dc_chgpth.c
new file mode 100644
index 0000000..f485217
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_dc_chgpth.c
@@ -0,0 +1,484 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+
+#include "pm_smbchg_dc_chgpth.h"
+#include "pm_smbchg_driver.h"
+#include <sys/types.h>
+
+/*Unlock peripheral for secured write access*/
+static inline pm_err_flag_type pm_smbchg_dc_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr);
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_dc_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value);
+
+/*This API configures ADCIN adapter allowance*/
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance adptr_allowance)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type dcin_chgr_cfg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_chgr_cfg;
+
+ errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_chgr_cfg, 0x7, (pm_register_data_type)adptr_allowance, 0);
+ }
+ return errFlag;
+}
+
+/*This API reads the adapter allowance configuration*/
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_adptr_allowance(uint32 device_index, pm_smbchg_dcin_adptr_allowance *adptr_allowance)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == adptr_allowance)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type dcin_chgr_cfg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_chgr_cfg;
+
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_chgr_cfg, 0x7, &data, 0);
+
+ if (PM_ERR_FLAG__SUCCESS == errFlag)
+ {
+ *adptr_allowance = (pm_smbchg_dcin_adptr_allowance)data;
+ }
+ }
+
+ return errFlag;
+}
+
+/*This API configures the DCIN input current limit*/
+pm_err_flag_type pm_smbchg_dc_chgpth_set_dcin_current_limit(uint32 device_index, uint32 current_ma)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+ pm_register_address_type dcin_il_cfg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_il_cfg;
+
+ pm_smbchg_dc_chgpth_return_reg_value(current_ma, current_limits, DCIN_SIZE, &data);
+
+ errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+ errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_il_cfg, 0x1F, data, 0);
+ }
+
+ return errFlag;
+}
+
+/*This API reads the DCIN input current limit*/
+pm_err_flag_type pm_smbchg_dc_chgpth_get_dcin_current_limit(uint32 device_index, uint32 *current_milli_amp)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr )
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == current_milli_amp)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *current_limits = smbchg_ptr->chg_range_data->dcin_current_limits;
+
+ pm_register_address_type dcin_il_cfg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dcin_il_cfg;
+
+ errFlag |= pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, dcin_il_cfg, 0x1F, &data, 0);
+ if ((data & 0x1F) >= DCIN_SIZE)
+ {
+ errFlag |= PM_ERR_FLAG__INVALID;
+ }
+ else
+ {
+ *current_milli_amp = current_limits[data & 0x1F];
+ }
+ }
+
+ return errFlag;
+}
+
+/*This API configures various AICL parameters*/
+pm_err_flag_type pm_smbchg_dc_chgpth_config_aicl(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean enable)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type dc_aicl_cfg_reg;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_AICL__INVALID_CFG == dc_aicl_cfg)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_data_type mask = (0x1 << (dc_aicl_cfg & 0x7));
+
+ if (dc_aicl_cfg > PM_SMBCHG_AICL__OV_OPTION)
+ {
+ dc_aicl_cfg_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg2;
+ }
+ else
+ {
+ dc_aicl_cfg_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg1;
+ }
+
+ pm_register_data_type data = (enable)? 0xFF : 0x00;
+ errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, dc_aicl_cfg_reg, mask, data, 0);
+ }
+
+ return errFlag;
+}
+
+/*This API reads the various AICL configurations*/
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_dc_aicl_cfg_type dc_aicl_cfg, boolean *enable)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type dc_aicl_cfg_reg;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_AICL__INVALID_CFG == dc_aicl_cfg)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == enable)
+ {
+ errFlag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_data_type mask = (0x1 << (dc_aicl_cfg & 0x7));
+
+ if (dc_aicl_cfg > PM_SMBCHG_AICL__OV_OPTION)
+ {
+ dc_aicl_cfg_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg2;
+ }
+ else
+ {
+ dc_aicl_cfg_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->dc_aicl_cfg1;
+ }
+
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, dc_aicl_cfg_reg, mask, &data, 0);
+ *enable = (data) ? TRUE : FALSE;
+ }
+
+ return errFlag;
+}
+
+/* This API configures AICL restart timer */
+pm_err_flag_type pm_smbchg_dc_chgpth_set_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr timer_type)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (timer_type >= PM_SMBCHG_AICL_WL_RSTRT_TMR_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type aicl_wl_sel_cfg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->aicl_wl_sel_cfg;
+
+ errFlag = pm_smbchg_dc_chgpth_unlock_perph_write(smbchg_ptr);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, aicl_wl_sel_cfg, 0x3, (pm_smbchg_dc_chgpth_aicl_rstrt_tmr)timer_type, 0);
+ }
+
+ return errFlag;
+}
+
+
+/* This API reads configured AICL restart timer */
+pm_err_flag_type pm_smbchg_dc_chgpth_get_aicl_restart_tmr(uint32 device_index, pm_smbchg_dc_chgpth_aicl_rstrt_tmr *timer_type)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == timer_type)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type aicl_wl_sel_cfg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->aicl_wl_sel_cfg;
+
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, aicl_wl_sel_cfg, 0x3, &data, 0);
+
+ *timer_type = (pm_smbchg_dc_chgpth_aicl_rstrt_tmr)data;
+ }
+
+ return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_enable(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, boolean enable)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type irq_reg;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ if (enable)
+ {
+ irq_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_en_set;
+ }
+ else
+ {
+ irq_reg = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_en_clr;
+ }
+
+ errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+ }
+ return errFlag;
+}
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_clear(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_latched_clr;
+
+ errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+ }
+ return errFlag;
+}
+
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_trigger_type trigger)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ uint8 mask = 1 << irq;
+ pm_register_data_type set_type, polarity_high, polarity_low;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_set_type;
+ pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_polarity_high;
+ pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_polarity_low;
+
+ switch (trigger)
+ {
+ case PM_IRQ_TRIGGER_ACTIVE_LOW:
+ set_type = 0x00;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+ set_type = 0x00;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_RISING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_FALLING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_DUAL_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0xFF;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ errFlag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+ errFlag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+ }
+
+ return errFlag;
+}
+
+pm_err_flag_type pm_smbchg_dc_chgpth_irq_status(uint32 device_index, pm_smbchg_dc_chgpth_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 1 << irq;
+ pm_register_address_type int_sts;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_DC_CHGPTH_IRQ_INVALID)
+ {
+ errFlag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ switch (type)
+ {
+ case PM_IRQ_STATUS_RT:
+ int_sts = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_rt_sts;
+ break;
+ case PM_IRQ_STATUS_LATCHED:
+ int_sts = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_latched_sts;
+ break;
+ case PM_IRQ_STATUS_PENDING:
+ int_sts = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->int_pending_sts;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ errFlag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+ *status = data ? TRUE : FALSE;
+ }
+
+ return errFlag;
+}
+
+/*@todo: following API may require implementation. Need more info */
+//pm_smbchg_dc_chgpth_temp_comp_cfg
+//pm_smbchg_dc_chgpth_tr_dcin_sns
+//pm_smbchg_dc_chgpth_tr_dcin_divider
+//pm_smbchg_dc_chgpth_tr_iinos_dc
+
+
+static inline pm_err_flag_type pm_smbchg_dc_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+ pm_err_flag_type errFlag = PM_ERR_FLAG__SUCCESS;
+
+ if (NULL == smbchg_ptr)
+ {
+ errFlag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type sec_access = smbchg_ptr->smbchg_register->dc_chgpth_register->base_address + smbchg_ptr->smbchg_register->dc_chgpth_register->sec_access;
+ errFlag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+ }
+
+ return errFlag;
+}
+
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_dc_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+{
+ uint32 loc = 0;
+
+
+ while (loc < array_size)
+ {
+ if (input_data < array[loc])
+ {
+ break;
+ }
+ else
+ {
+ loc++;
+ }
+ }
+
+ *reg_value = (loc) ? (loc - 1) : 0;
+
+ return;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_driver.c b/dev/pmic/pmi8994/pm_smbchg_driver.c
new file mode 100644
index 0000000..e0925ab
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_driver.c
@@ -0,0 +1,146 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+#include "pm_app_smbchg.h"
+#include "pm_smbchg_driver.h"
+#include "pm_comm.h"
+
+/*===========================================================================
+
+ STATIC VARIABLES
+
+===========================================================================*/
+
+/* Static global variable to store the SMBCHG driver data */
+pm_smbchg_data_type smb_data[PM_MAX_NUM_PMICS];
+
+/* Initialize bat i/f registers */
+smbchg_bat_if_register_ds bat_if_reg[1] =
+ { /* Battery interface register base and offsets */
+ {
+ 0x1200, 0x5, 0x8, 0x10, 0x11, 0x12, 0x13,
+ 0x14, 0x15, 0x16, 0x18, 0x19, 0x1a, 0x1b,
+ 0x40, 0x41, 0x42, 0xD0, 0xDF, 0xE0, 0xE1, 0xF0,
+ 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9,
+ 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF
+ },
+ };
+
+/* Initialize usb charger path registers */
+smbchg_usb_chgpth_register_ds usb_chgpath_reg[1] =
+ { /* Charger path register base & offset */
+ {
+ 0x1300, 0x5, 0x7, 0x8, 0x9, 0xA, 0xB,
+ 0xC, 0xD, 0xE, 0xF, 0x10, 0x11, 0x12,
+ 0x13, 0x14, 0x15, 0x16, 0x18, 0x19,
+ 0x1A, 0x1B, 0x40, 0x44, 0x4E, 0xD0, 0xF1,
+ 0xF2, 0xF3, 0xF4, 0xF5, 0xFF
+ },
+ };
+
+/* Initialize dc charger path registers */
+smbchg_dc_chgpth_register_ds dc_chgpath_reg[1] =
+ { /* DC charge path base & offset */
+ {
+ 0x1400, 0x5, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+ 0x18, 0x19, 0x1A, 0x1B, 0xD0, 0xDF, 0xE0, 0xE1, 0xE2,
+ 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xFA
+ },
+ };
+
+/* Initialize misc charger registers */
+smbchg_misc_register_ds misc_reg[1] =
+ { /* Misc charge register base & offsets */
+ {
+ 0x1600, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x8,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
+ 0x18, 0x19, 0x1A, 0x1B, 0x40, 0x41, 0x42,
+ 0xD0, 0xDF, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
+ 0xF6, 0xF7, 0xF8, 0xFF
+ },
+ };
+
+smbchg_chgr_register_ds smb_chgr_reg[1] =
+ {
+ {
+ 0x1000, 0x5, 0x8, 0xB, 0xC, 0xD, 0xE, 0x10, 0x11,
+ 0x12, 0x13, 0x14, 0x15, 0x16, 0x18, 0x19, 0x1A,
+ 0x1B, 0xD0, 0xDF, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
+ 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD,
+ 0xFE, 0xFF,
+ },
+ };
+
+pm_comm_info_type comm_ptr[1] =
+ { /* slave_id , pmic index, and comm type (comm type is unused) */
+ {0x2, 0x1, 0x0},
+ };
+
+/* Initialize the SMB charger data structure */
+smbchg_register_ds smb_charge[1] =
+ {
+ {
+ NULL,
+ &smb_chgr_reg[0],
+ NULL,
+ &bat_if_reg[0],
+ &usb_chgpath_reg[0],
+ &dc_chgpath_reg[0],
+ &misc_reg[0],
+ },
+ };
+
+/* Initialize the SMB data */
+void pm_smbchg_driver_init(uint32_t device_index)
+{
+
+ smb_data[device_index].smbchg_register = &smb_charge[0];
+ smb_data[device_index].comm_ptr = &comm_ptr[0];
+ smb_data[device_index].chg_range_data = (chg_range_data_type *) pm_target_chg_range_data();
+}
+
+/*===========================================================================
+
+ FUNCTION DEFINITIONS
+
+===========================================================================*/
+
+pm_smbchg_data_type* pm_smbchg_get_data(uint32 pmic_index)
+{
+ if(pmic_index < PM_MAX_NUM_PMICS)
+ {
+ return &smb_data[pmic_index];
+ }
+
+ return NULL;
+}
diff --git a/dev/pmic/pmi8994/pm_smbchg_misc.c b/dev/pmic/pmi8994/pm_smbchg_misc.c
new file mode 100644
index 0000000..f92a89a
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_misc.c
@@ -0,0 +1,451 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*===========================================================================
+
+ INCLUDE FILES
+
+===========================================================================*/
+#include "pm_smbchg_misc.h"
+#include "pm_smbchg_driver.h"
+#include "pm_resources_and_types.h"
+
+/*This API detects the type of chgarging port device is connected to*/
+pm_err_flag_type pm_smbchg_misc_chgr_port_detected(uint32 pmic_device, pm_smbchg_misc_src_detect_type *src_detected)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+ uint8 src_loc = 0x0;
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == src_detected)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type idev_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->idev_sts;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, idev_sts, &data, 0);
+ if (err_flag == PM_ERR_FLAG__SUCCESS)
+ {
+ while (src_loc < 0x08) //loop thru each bit
+ {
+ if (data & (0x80 >> src_loc))
+ {
+ break;
+ }
+ src_loc++;
+ }
+
+ *src_detected = (src_loc > 7) ? PM_SMBCHG_MISC_SRC_DETECT_INVALID : (pm_smbchg_misc_src_detect_type)src_loc;
+
+ }
+ }
+ return err_flag;
+}
+
+#ifndef LK
+/*This API restarts watchdog*/
+pm_err_flag_type pm_smbchg_misc_wdog_rst(uint32 pmic_device)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type wdog_rst = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->wdog_rst;
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, wdog_rst, 0x80, 0x80, 0);
+ }
+
+ return err_flag;
+}
+
+/*This API enables automatic fault protection */
+pm_err_flag_type pm_smbchg_misc_en_afp(uint32 pmic_device)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type afp_mode = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->afp_mode;
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, afp_mode, 0x80, 0x80, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This API configures the charger watchgod */
+pm_err_flag_type pm_smbchg_misc_config_wdog(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == wd_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (wd_cfg->sfty_timer >= PM_SMBCHG_MISC_SFTY_TIMER_AFTER_WDOG_INVALID || wd_cfg->wdog_timeout >= PM_SMBCHG_MISC_WD_TMOUT_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type wd_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->wd_cfg;
+ data = (wd_cfg->afp_wdog_en << 0x7) | (wd_cfg->wdog_timeout << 0x5) | (wd_cfg->sfty_timer << 3) | (wd_cfg->wdog_irq_sfty_en << 2) | (wd_cfg->wdog_option_run_always << 1) | (wd_cfg->wdog_timer_en);
+ err_flag = pm_smbchg_misc_unlock_perph_write(smbchg_ptr);
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, wd_cfg_reg, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*This API reads the configurations for charger watchgod */
+pm_err_flag_type pm_smbchg_misc_get_wdog_config(uint32 pmic_device, pm_smbchg_misc_wdog_cfg_type *wd_cfg)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == wd_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type wd_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->wd_cfg;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, wd_cfg_reg, &data, 0);
+ }
+
+ if (err_flag == PM_ERR_FLAG__SUCCESS)
+ {
+ wd_cfg->wdog_timer_en = (data & 0x1) ? TRUE : FALSE;
+ wd_cfg->wdog_option_run_always = (data & 0x2) ? TRUE : FALSE;
+ wd_cfg->wdog_irq_sfty_en = (data & 0x4) ? TRUE : FALSE;
+ wd_cfg->sfty_timer = (pm_smbchg_misc_sfty_after_wdog_irq_type)((data & 0x18) >> 3);
+ wd_cfg->wdog_timeout = (pm_smbchg_wdog_timeout_type)((data & 0x60) >> 5);
+ wd_cfg->afp_wdog_en = (data & 0x80) ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_misc_enable_wdog(uint32 pmic_device, boolean enable_smbchg_wdog)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_misc_wdog_cfg_type wd_cfg;
+
+ err_flag = pm_smbchg_misc_get_wdog_config(pmic_device, &wd_cfg);
+
+ //Change needed bits and write it back
+ if (err_flag == PM_ERR_FLAG__SUCCESS)
+ {
+ wd_cfg.afp_wdog_en = enable_smbchg_wdog;
+
+ err_flag |= pm_smbchg_misc_config_wdog(pmic_device, &wd_cfg);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_misc_set_wdog_timeout(uint32 pmic_device, pm_smbchg_wdog_timeout_type wdog_timeout)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_misc_wdog_cfg_type wd_cfg;
+
+
+ err_flag = pm_smbchg_misc_get_wdog_config(pmic_device, &wd_cfg);
+
+ //change needed bits and write it back
+ if (err_flag == PM_ERR_FLAG__SUCCESS)
+ {
+ wd_cfg.wdog_timeout = wdog_timeout;
+ err_flag |= pm_smbchg_misc_config_wdog(pmic_device, &wd_cfg);
+ }
+
+ return err_flag;
+}
+
+
+/*This API configures VCHG output which is proportional to the input current or the charger/discharge current. This also configures SYSOK LDO function and PHY_ON */
+pm_err_flag_type pm_smbchg_misc_config_misc_fn(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_MISC_FN__INVALID == misc_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type misc_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->misc_cfg;
+
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, misc_cfg_reg, (0x1 << misc_cfg), (pm_register_data_type)(enable<<misc_cfg), 0);
+ }
+
+ return err_flag;
+}
+
+/*This API reads VCHG output configuration, SYSOK LDO function and PHY_ON */
+pm_err_flag_type pm_smbchg_misc_get_misc_fn_config(uint32 pmic_device, pm_smbchg_misc_misc_fn_cfg_type misc_cfg, boolean *enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_MISC_FN__INVALID == misc_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == enable)
+ {
+ err_flag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type misc_cfg_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->misc_cfg;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, misc_cfg_reg, &data, 0);
+
+ *enable = (data & (0x1 << misc_cfg)) ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_misc_irq_enable(uint32 pmic_device, pm_smbchg_misc_irq_type irq, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type irq_reg;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ if (enable)
+ {
+ irq_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_en_set;
+ }
+ else
+ {
+ irq_reg = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_en_clr;
+ }
+
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+ }
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_misc_irq_clear(uint32 pmic_device, pm_smbchg_misc_irq_type irq)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_latched_clr;
+
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+ }
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_misc_irq_set_trigger(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_trigger_type trigger)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ uint8 mask = 1 << irq;
+ pm_register_data_type set_type, polarity_high, polarity_low;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_set_type;
+ pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_polarity_high;
+ pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_polarity_low;
+
+ switch (trigger)
+ {
+ case PM_IRQ_TRIGGER_ACTIVE_LOW:
+ set_type = 0x00;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+ set_type = 0x00;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_RISING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_FALLING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_DUAL_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0xFF;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_misc_irq_status(uint32 pmic_device, pm_smbchg_misc_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 1 << irq;
+ pm_register_address_type int_sts;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(pmic_device);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == status)
+ {
+ err_flag = PM_ERR_FLAG__PAR4_OUT_OF_RANGE;
+ }
+ else if (irq >= PM_SMBCHG_MISC_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ switch (type)
+ {
+ case PM_IRQ_STATUS_RT:
+ int_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_rt_sts;
+ break;
+ case PM_IRQ_STATUS_LATCHED:
+ int_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_latched_sts;
+ break;
+ case PM_IRQ_STATUS_PENDING:
+ int_sts = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->int_pending_sts;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+ *status = data ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+
+static inline pm_err_flag_type pm_smbchg_misc_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type sec_access = smbchg_ptr->smbchg_register->misc_register->base_address + smbchg_ptr->smbchg_register->misc_register->sec_access;
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+ }
+
+ return err_flag;
+}
+#endif
\ No newline at end of file
diff --git a/dev/pmic/pmi8994/pm_smbchg_usb_chgpth.c b/dev/pmic/pmi8994/pm_smbchg_usb_chgpth.c
new file mode 100644
index 0000000..b508850
--- /dev/null
+++ b/dev/pmic/pmi8994/pm_smbchg_usb_chgpth.c
@@ -0,0 +1,928 @@
+/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.
+ * Neither the name of The Linux Foundation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+/*=============================================================================
+
+ INCLUDE FILES
+
+===============================================================================*/
+
+#include "pm_smbchg_driver.h"
+#include "pm_smbchg_usb_chgpth.h"
+
+/*unlock peripheral for secured access write*/
+static inline pm_err_flag_type pm_smbchg_usb_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr);
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_usb_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value);
+
+pm_err_flag_type pm_smbchg_usb_chgpth_icl_sts(uint32 device_index, input_current_limit_sts *icl_sts)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data1, data2;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ uint32 *icl_current = smbchg_ptr->chg_range_data->usbin_current_limits;
+
+ pm_register_address_type icl_sts1 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->icl_sts_1;
+ pm_register_address_type icl_sts2 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->icl_sts_2;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, icl_sts1, &data1, 0);
+ err_flag |= pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, icl_sts2, &data2, 0);
+
+ icl_sts->is_aicl_complete = (data1 & 0x20) ? TRUE : FALSE;
+ icl_sts->input_current_limit = icl_current[data1 & 0x1F];
+ icl_sts->icl_mode = (input_current_limit_mode)((data2 & 0x30) >> 4);
+ icl_sts->is_usbin_suspended = (data2 & 0x8) ? TRUE : FALSE;
+ icl_sts->is_dcin_suspended = (data2 & 0x4) ? TRUE : FALSE;
+ icl_sts->is_usbin_active_pwr_src = (data2 & 0x2) ? TRUE : FALSE;
+ icl_sts->is_dcin_active_pwr_src = (data2 & 0x1) ? TRUE : FALSE;
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_pwr_pth(uint32 device_index, pm_smbchg_usb_chgpth_pwr_pth_type *pwr_path)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type pwr_pth_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->pwr_pth_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, pwr_pth_sts, &data, 0);
+
+ *pwr_path = (pm_smbchg_usb_chgpth_pwr_pth_type)(data & 0x03);
+ }
+
+ return err_flag;
+}
+
+
+/*auto power source detection degitched status*/
+pm_err_flag_type pm_smbchg_usb_chgpth_apsd_dg_sts(uint32 device_index, pm_apsd_dg_sts_type apsd_dg_sts_type, boolean* status)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if ( NULL == status || PM_SMBCHG_USB_CHGPTH_DG_STS__INVALID == apsd_dg_sts_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type apsd_dg_sts_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->apsd_dg_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, apsd_dg_sts_reg, &data, 0);
+
+ *status = (data & (0x1 << apsd_dg_sts_type))? TRUE : FALSE;
+ }
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_rid_sts(uint32 device_index, pm_smbchg_usb_chgpth_rid_sts_type *rid_sts)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type rid_sts_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->rid_sts;
+
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, rid_sts_reg, 0xF, &data, 0);
+
+ switch (data)
+ {
+ case 0x8: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__FLOAT; break;
+ case 0x4: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__A; break;
+ case 0x2: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__B; break;
+ case 0x1: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__C; break;
+ case 0x0: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__GND; break;
+ default: *rid_sts = PM_SMBCHG_USB_CHGPTH_RID__INVALID;
+ }
+ }
+
+ return err_flag;
+};
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_hvdcp_sts(uint32 device_index, pm_smbchg_usb_chgpth_hvdcp_sts_type hvdcp_sts, boolean *status)
+{
+
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == status || PM_SMBCHG_USB_CHGPTH__HVDCP_STS_INVALID == hvdcp_sts)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type hvdcp_sts_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->hvdcp_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, hvdcp_sts_reg, &data, 0);
+
+ *status = (data & (0x1 << hvdcp_sts))? TRUE : FALSE;
+
+ }
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_input_sts(uint32 device_index, pm_smbchg_usb_chgpth_chgr_type chgr, pm_smbchg_usb_chgpth_input_sts_type *input_sts_type)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type input_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->input_sts;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, input_sts, &data, 0);
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ switch (chgr)
+ {
+ case PM_SMBCHG_CHAR_TYPE_USB:
+ data = (data & 0x38) >> 3; break;
+ case PM_SMBCHG_CHAR_TYPE_DC:
+ data = (data & 0x7); break;
+ default:
+ return PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+
+ switch (data)
+ {
+ case 0x00:
+ *input_sts_type = PM_SMBCHG_NO_CHGR_DETECTED; break;
+ case 0x01:
+ *input_sts_type = PM_SMBCHG_5V_9V_CHGR_DETECTED; break;
+ case 0x02:
+ *input_sts_type = PM_SMBCHG_UNREGULATED_CHGR_DETECTED; break;
+ case 0x04:
+ *input_sts_type = PM_SMBCHG_9V_CHGR_DETECTED; break;
+ default:
+ *input_sts_type = PM_SMBCHG_INVALID_DETECTED; break;
+ }
+ }
+
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_valid_usbid(uint32 device_index, uint16 *valid_id)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data1, data2;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type usbid_valid_id_7_0 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbid_valid_id_7_0;
+ pm_register_address_type usbid_valid_id_11_8 = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbid_valid_id_11_8;
+
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, usbid_valid_id_7_0, &data1, 0);
+ err_flag |= pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbid_valid_id_11_8, 0x0F, &data2, 0);
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ *valid_id = (uint16)((data2 << 8) | data1);
+ }
+
+ }
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ pm_register_data_type data;
+
+ if(NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if(PM_SMBCHG_USBCHGPTH_CMD_IL__INVALID == chgpth_cmd_il)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cmd_il = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cmd_il;
+
+ data = (enable) ? 0xFF : 0x00;
+
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cmd_il, (0x1 << chgpth_cmd_il), data, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_cmd_il(uint32 device_index, pm_smbchg_usb_chgpth_cmd_il_type chgpth_cmd_il, boolean *enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ pm_register_data_type data;
+ pm_register_address_type cmd_il;
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_USBCHGPTH_CMD_IL__INVALID == chgpth_cmd_il || NULL == enable)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ cmd_il = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cmd_il;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cmd_il, &data, 0);
+ *enable = (data & (0x1 << chgpth_cmd_il))? TRUE : FALSE;
+ }
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_iusb_max(uint32 device_index, uint32 i_milli_amp)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type iusb_max = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->iusb_max;
+
+ if (i_milli_amp > 2500)
+ {
+ data = 0x19;
+ }
+ else if (i_milli_amp < 100)
+ {
+ data = 0x0;
+ }
+ else if (i_milli_amp > 100 && i_milli_amp <= 150)
+ {
+ data = 0x1;
+ }
+ else
+ {
+ /*IUSB_MAX = data * 100*/
+ data = (i_milli_amp + 50) / 100; //rounding
+ }
+
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, iusb_max, 0x1F, data, 0);
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_iusb_max(uint32 device_index, uint32 *i_milli_amp)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == i_milli_amp)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type iusb_max = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->iusb_max;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, iusb_max, &data, 0);
+
+ if (PM_ERR_FLAG__SUCCESS == err_flag)
+ {
+ data &= 0x1F;
+ switch (data)
+ {
+ case 0:
+ *i_milli_amp = 100; break;
+ case 1:
+ *i_milli_amp = 150; break;
+ default:
+ *i_milli_amp = data * 100;
+ }
+ }
+ }
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_enum_timer_stop(uint32 device_index)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type enum_timer_stop = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->enum_timer_stop;
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, enum_timer_stop, 0x1, 0x1, 0);
+ }
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance adptr_allowance)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (adptr_allowance >= PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type usbin_chgr_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_chgr_cfg;
+ err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_chgr_cfg, 0x7, (pm_register_data_type)adptr_allowance, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_adptr_allowance(uint32 device_index, pm_smbchg_usbin_adptr_allowance *adptr_allowance)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 0;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == adptr_allowance)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type usbin_chgr_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_chgr_cfg;
+
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_chgr_cfg, 0x7, &data, 0);
+ /*valid adptr_allowance is only 0 to 5 but data read is 3 bits*/
+ *adptr_allowance = (data >=PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID)? PM_SMBCHG_USBIN_ADPTR_ALLOWANCE_INVALID :(pm_smbchg_usbin_adptr_allowance)data;
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_set_usbin_current_limit(uint32 device_index, uint32 current_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data =0;
+
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ uint32 *usbin_icl = smbchg_ptr->chg_range_data->usbin_current_limits;
+ pm_register_address_type usbin_il_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_il_cfg;
+
+ pm_smbchg_usb_chgpth_return_reg_value(current_ma, usbin_icl, USBIN_SIZE, &data);
+
+ err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_il_cfg, 0x1F, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usbin_current_limit(uint32 device_index, uint32 *current_ma)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == current_ma)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ uint32 *usbin_icl = smbchg_ptr->chg_range_data->usbin_current_limits;
+ pm_register_address_type usbin_il_cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usbin_il_cfg;
+ err_flag |= pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usbin_il_cfg, 0x1F, &data, 0);
+ *current_ma = usbin_icl[data & 0x1F];
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_config_aicl(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_USB_CHGPTH_AICL_CFG__INVALID == usb_aicl_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type usb_aicl_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usb_aicl_cfg;
+ err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, usb_aicl_cfg_reg, (0x1 << usb_aicl_cfg), (pm_register_data_type)(enable<<usb_aicl_cfg), 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_aicl_config(uint32 device_index, pm_smbchg_usb_chgpth_aicl_cfg_type usb_aicl_cfg, boolean* enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (PM_SMBCHG_USB_CHGPTH_AICL_CFG__INVALID == usb_aicl_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else if (NULL == enable)
+ {
+ err_flag = PM_ERR_FLAG__PAR3_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type usb_aicl_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->usb_aicl_cfg;
+
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, usb_aicl_cfg_reg, (0x1<<usb_aicl_cfg), &data, 0);
+
+ *enable = (data)? TRUE: FALSE;
+ }
+
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_config_usb_chgpth(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 0x06;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == usb_cfg_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ data = ((usb_cfg_type->usb51ac_ctrl_type << 1) |(usb_cfg_type->usb51_cmd_pol_type << 2));
+
+ pm_register_address_type cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cfg;
+ err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, cfg, mask, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_usb_chgpth_config(uint32 device_index, pm_usb_chgpth_usb_cfg_type *usb_cfg_type)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == usb_cfg_type)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type cfg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->cfg;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, cfg, &data, 0);
+
+ usb_cfg_type->usb51ac_ctrl_type = (data & 0x1)? PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__PIN: PM_SMBCHG_USB_CHGPTH_USB51AC_CTRL__CMD;
+ usb_cfg_type->usb51_cmd_pol_type = (data & 0x2)? PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_100: PM_SMBCHG_USB_CHGPTH_USB51_CMD_POL__CMD1_500;
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_config_apsd(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == apsd_cfg)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ data = (apsd_cfg->en_auto_src_detect) |(apsd_cfg->en_dcd_tmout_only << 1)|(apsd_cfg->set_rid_clk_2khz << 2)|(apsd_cfg->force_icl_500ma_vbat_low_sdp << 3)
+ |(apsd_cfg->sdp_suspend << 4)|(apsd_cfg->is_ocd_isel_hc << 5)|(apsd_cfg->usb_fail_pok_hv << 6)|(apsd_cfg->is_input_prority_usbin << 7 );
+
+ pm_register_address_type apsd_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->apsd_cfg;
+ err_flag = pm_smbchg_usb_chgpth_unlock_perph_write(smbchg_ptr);
+ err_flag |= pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, apsd_cfg_reg, data, 0);
+ }
+
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_get_apsd_config(uint32 device_index, pm_smbchg_usb_chgpth_apsd_cfg_type *apsd_cfg)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (NULL == apsd_cfg )
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ pm_register_address_type apsd_cfg_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->apsd_cfg;
+ err_flag = pm_comm_read_byte(smbchg_ptr->comm_ptr->slave_id, apsd_cfg_reg, &data, 0);
+
+ apsd_cfg->en_auto_src_detect = (data & 0x1) ? TRUE : FALSE;
+ apsd_cfg->en_dcd_tmout_only = (data & 0x2) ? TRUE : FALSE;
+ apsd_cfg->set_rid_clk_2khz = (data & 0x4) ? TRUE : FALSE;
+ apsd_cfg->force_icl_500ma_vbat_low_sdp = (data & 0x8) ? TRUE : FALSE;
+ apsd_cfg->sdp_suspend = (data & 0x10) ? TRUE : FALSE;
+ apsd_cfg->is_ocd_isel_hc = (data & 0x20) ? TRUE : FALSE;
+ apsd_cfg->usb_fail_pok_hv = (data & 0x40) ? TRUE : FALSE;
+ apsd_cfg->is_input_prority_usbin = (data & 0x80) ? TRUE : FALSE;
+ }
+ return err_flag;
+}
+
+
+
+pm_err_flag_type pm_smbchg_chgpth_set_input_priority(uint32 device_index, pm_smbchg_chgpth_input_priority_type chgpth_priority)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_smbchg_usb_chgpth_apsd_cfg_type apsd_cfg;
+
+ if (chgpth_priority >= PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ }
+ else
+ {
+ //Get the current configuration
+ err_flag = pm_smbchg_usb_chgpth_get_apsd_config(device_index, &apsd_cfg);
+
+ if (err_flag == PM_ERR_FLAG__SUCCESS)
+ {
+ switch (chgpth_priority)
+ {
+ case PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_DCIN:
+ {
+ apsd_cfg.is_input_prority_usbin = 0;
+ }
+ break;
+ case PM_SMBCHG_USBCHGPTH_INPUT_PRIORITY_USBIN:
+ {
+ apsd_cfg.is_input_prority_usbin = 1;
+ }
+ break;
+ default:
+ err_flag = PM_ERR_FLAG__PAR2_OUT_OF_RANGE;
+ break;
+ }
+
+ err_flag |= pm_smbchg_usb_chgpth_config_apsd(device_index, &apsd_cfg);
+ }
+ }
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_enable(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, boolean enable)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_address_type irq_reg;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ if (enable)
+ {
+ irq_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_en_set;
+ }
+ else
+ {
+ irq_reg = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_en_clr;
+ }
+
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, irq_reg, data, 0);
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_clear(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data = 1 << irq;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type int_latched_clr = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_latched_clr;
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, int_latched_clr, data, 0);
+ }
+ return err_flag;
+}
+
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_set_trigger(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_trigger_type trigger)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ uint8 mask = 1 << irq;
+ pm_register_data_type set_type, polarity_high, polarity_low;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type int_set_type = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_set_type;
+ pm_register_address_type int_polarity_high = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_polarity_high;
+ pm_register_address_type int_polarity_low = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_polarity_low;
+
+ switch (trigger)
+ {
+ case PM_IRQ_TRIGGER_ACTIVE_LOW:
+ set_type = 0x00;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_ACTIVE_HIGH:
+ set_type = 0x00;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_RISING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0x00;
+ break;
+ case PM_IRQ_TRIGGER_FALLING_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0x00;
+ polarity_low = 0xFF;
+ break;
+ case PM_IRQ_TRIGGER_DUAL_EDGE:
+ set_type = 0xFF;
+ polarity_high = 0xFF;
+ polarity_low = 0xFF;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ err_flag = pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_set_type, mask, set_type, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_high, mask, polarity_high, 0);
+ err_flag |= pm_comm_write_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_polarity_low, mask, polarity_low, 0);
+ }
+
+ return err_flag;
+}
+
+pm_err_flag_type pm_smbchg_usb_chgpth_irq_status(uint32 device_index, pm_smbchg_usb_chgpth_irq_type irq, pm_irq_status_type type, boolean *status)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+ pm_register_data_type data;
+ uint8 mask = 1 << irq;
+ pm_register_address_type int_sts;
+ pm_smbchg_data_type *smbchg_ptr = pm_smbchg_get_data(device_index);
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else if (irq >= PM_SMBCHG_USB_CHGPTH_IRQ_INVALID)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ switch (type)
+ {
+ case PM_IRQ_STATUS_RT:
+ int_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_rt_sts;
+ break;
+ case PM_IRQ_STATUS_LATCHED:
+ int_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_latched_sts;
+ break;
+ case PM_IRQ_STATUS_PENDING:
+ int_sts = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->int_pending_sts;
+ break;
+ default:
+ return PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+
+ err_flag = pm_comm_read_byte_mask(smbchg_ptr->comm_ptr->slave_id, int_sts, mask, &data, 0);
+ *status = data ? TRUE : FALSE;
+ }
+ return err_flag;
+}
+
+
+static inline pm_err_flag_type pm_smbchg_usb_chgpth_unlock_perph_write(pm_smbchg_data_type *smbchg_ptr)
+{
+ pm_err_flag_type err_flag = PM_ERR_FLAG__SUCCESS;
+
+ if (NULL == smbchg_ptr)
+ {
+ err_flag = PM_ERR_FLAG__FEATURE_NOT_SUPPORTED;
+ }
+ else
+ {
+ pm_register_address_type sec_access = smbchg_ptr->smbchg_register->usb_chgpth_register->base_address + smbchg_ptr->smbchg_register->usb_chgpth_register->sec_access;
+ err_flag = pm_comm_write_byte(smbchg_ptr->comm_ptr->slave_id, sec_access, 0xA5, 0);
+ }
+
+ return err_flag;
+}
+
+
+/*Find the nearest register value corresponding to input_data*/
+static void pm_smbchg_usb_chgpth_return_reg_value(uint32 input_data, uint32 *array, uint32 array_size, pm_register_data_type *reg_value)
+{
+ uint32 loc = 0;
+
+ /*checking lower bound*/
+ input_data = (array[0]>input_data)? array[0]: input_data;
+
+ while (loc < array_size)
+ {
+ if (input_data < array[loc])
+ {
+ break;
+ }
+ else
+ {
+ loc++;
+ }
+ }
+
+ *reg_value = (loc) ? (loc - 1) : 0;
+
+ return;
+}
+
+
+
+/*@todo: need more info to implement below
+pm_smbchg_usb_chgpth_set_wi_pwr_options(uint32 device_index)
+pm_smbchg_usb_chgpth_get_wi_pwr_options(uint32 device_index)
+*/
diff --git a/dev/pmic/pmi8994/rules.mk b/dev/pmic/pmi8994/rules.mk
new file mode 100644
index 0000000..bbf41d0
--- /dev/null
+++ b/dev/pmic/pmi8994/rules.mk
@@ -0,0 +1,16 @@
+LOCAL_DIR := $(GET_LOCAL_DIR)
+
+INCLUDES += -I$(LOCAL_DIR)/include
+
+OBJS += \
+ $(LOCAL_DIR)/pm_app_smbchg.o \
+ $(LOCAL_DIR)/pm_config_target.o \
+ $(LOCAL_DIR)/pm_smbchg_bat_if.o \
+ $(LOCAL_DIR)/pm_smbchg_dc_chgpth.o\
+ $(LOCAL_DIR)/pm_smbchg_misc.o \
+ $(LOCAL_DIR)/pm_comm_spmi_lite.o \
+ $(LOCAL_DIR)/pm_fg_adc_usr.o \
+ $(LOCAL_DIR)/pm_fg_driver.o \
+ $(LOCAL_DIR)/pm_smbchg_chgr.o \
+ $(LOCAL_DIR)/pm_smbchg_driver.o \
+ $(LOCAL_DIR)/pm_smbchg_usb_chgpth.o
diff --git a/include/sys/types.h b/include/sys/types.h
index 9b26eeb..3ef3508 100644
--- a/include/sys/types.h
+++ b/include/sys/types.h
@@ -58,6 +58,23 @@
typedef unsigned long time_t;
typedef unsigned long long bigtime_t;
+typedef uint8_t uint8;
+typedef uint16_t uint16;
+typedef uint32_t uint32;
+typedef uint64_t uint64;
+typedef int boolean;
+typedef int8_t int8;
+typedef int16_t int16;
+typedef int32_t int32;
+typedef bool boolean;
+
+#ifndef TRUE
+#define TRUE true
+#endif
+#ifndef FALSE
+#define FALSE false
+#endif
+
#define INFINITE_TIME ULONG_MAX
#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
diff --git a/platform/msm_shared/include/crypto_hash.h b/platform/msm_shared/include/crypto_hash.h
index 44e227a..4faca91 100644
--- a/platform/msm_shared/include/crypto_hash.h
+++ b/platform/msm_shared/include/crypto_hash.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2010-2015, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -29,13 +29,12 @@
#ifndef __CRYPTO_HASH_H__
#define __CRYPYO_HASH_H__
+#include <sys/types.h>
+
#ifndef NULL
#define NULL 0
#endif
-#define TRUE 1
-#define FALSE 0
-
#define SHA256_INIT_VECTOR_SIZE 8
#define SHA1_INIT_VECTOR_SIZE 5
diff --git a/platform/msm_shared/include/glink_os_type.h b/platform/msm_shared/include/glink_os_type.h
index 091ad05..a129372 100644
--- a/platform/msm_shared/include/glink_os_type.h
+++ b/platform/msm_shared/include/glink_os_type.h
@@ -40,6 +40,7 @@
INCLUDE FILES
===========================================================================*/
+#include <sys/types.h>
#include <string.h>
#include <assert.h>
@@ -55,13 +56,6 @@
#define DALSYS_SYNC_OBJ_SIZE_BYTES 40
#define DALSYS_EVENT_OBJ_SIZE_BYTES 80
-typedef bool boolean;
-typedef uint64_t uint64;
-typedef uint32_t uint32;
-typedef long int32;
-#define TRUE 1
-#define FALSE 0
-
typedef struct DALSYSEventObj DALSYSEventObj;
struct DALSYSEventObj
diff --git a/platform/msm_shared/include/msm_panel.h b/platform/msm_shared/include/msm_panel.h
index 7a3b014..03c8ae9 100755
--- a/platform/msm_shared/include/msm_panel.h
+++ b/platform/msm_shared/include/msm_panel.h
@@ -30,12 +30,10 @@
#ifndef _PLATFORM_MSM_SHARED_MSM_PANEL_H_
#define _PLATFORM_MSM_SHARED_MSM_PANEL_H_
+#include <sys/types.h>
#include <stdint.h>
#include <dev/fbcon.h>
-#define TRUE 1
-#define FALSE 0
-
#define DFPS_MAX_FRAME_RATE 10
#define DFPS_PLL_CODES_SIZE 0x1000 /* One page */
diff --git a/platform/msm_shared/include/splash.h b/platform/msm_shared/include/splash.h
index 76e867d..badb8d0 100644
--- a/platform/msm_shared/include/splash.h
+++ b/platform/msm_shared/include/splash.h
@@ -8806,6 +8806,6452 @@
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
+
+#if ENABLE_WBC
+static char image_batt888[] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x05, 0x05, 0x05, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08,
+ 0x07, 0x07, 0x07, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07,
+ 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+ 0x07, 0x08, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04,
+ 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x02, 0x03, 0x04, 0x03,
+ 0x04, 0x04, 0x03, 0x07, 0x07, 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x0a, 0x09, 0x0a,
+ 0x09, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+ 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x08, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x09,
+ 0x07, 0x07, 0x07, 0x07, 0x08, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05,
+ 0x06, 0x05, 0x05, 0x03, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x02, 0x03,
+ 0x01, 0x01, 0x02, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02,
+ 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08,
+ 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+ 0x0a, 0x09, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x0a, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+ 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x01,
+ 0x02, 0x01, 0x01, 0x03, 0x02, 0x02, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02,
+ 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06,
+ 0x08, 0x09, 0x09, 0x07, 0x08, 0x08, 0x07, 0x08, 0x08, 0x08, 0x09, 0x09,
+ 0x08, 0x07, 0x08, 0x09, 0x07, 0x09, 0x08, 0x08, 0x09, 0x05, 0x07, 0x07,
+ 0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x04, 0x04, 0x06, 0x04, 0x03, 0x03,
+ 0x06, 0x04, 0x05, 0x05, 0x03, 0x02, 0x05, 0x04, 0x01, 0x02, 0x02, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01, 0x00, 0x02,
+ 0x04, 0x01, 0x00, 0x04, 0x01, 0x00, 0x03, 0x02, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x01, 0x03, 0x00, 0x03,
+ 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
+ 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x01, 0x03, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01,
+ 0x01, 0x00, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+ 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x04, 0x05, 0x05, 0x06, 0x05, 0x05, 0x06, 0x06, 0x07, 0x08,
+ 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x09, 0x0a, 0x0a,
+ 0x0a, 0x0b, 0x0b, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x09, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x03, 0x02, 0x02, 0x03, 0x01, 0x01, 0x05, 0x02, 0x02, 0x05, 0x02, 0x02,
+ 0x04, 0x03, 0x03, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x07, 0x07, 0x07,
+ 0x05, 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x06, 0x08, 0x08, 0x07, 0x08, 0x08,
+ 0x0a, 0x0a, 0x0b, 0x07, 0x07, 0x08, 0x09, 0x08, 0x0a, 0x09, 0x08, 0x0a,
+ 0x05, 0x08, 0x07, 0x03, 0x07, 0x07, 0x07, 0x08, 0x09, 0x05, 0x05, 0x07,
+ 0x05, 0x03, 0x04, 0x09, 0x06, 0x07, 0x08, 0x05, 0x02, 0x07, 0x05, 0x01,
+ 0x03, 0x04, 0x00, 0x01, 0x02, 0x02, 0x00, 0x01, 0x03, 0x00, 0x01, 0x04,
+ 0x02, 0x01, 0x03, 0x06, 0x01, 0x00, 0x07, 0x02, 0x00, 0x04, 0x03, 0x00,
+ 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+ 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+ 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x05, 0x00, 0x02,
+ 0x05, 0x00, 0x04, 0x03, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x00,
+ 0x02, 0x05, 0x00, 0x01, 0x01, 0x03, 0x01, 0x00, 0x05, 0x01, 0x01, 0x01,
+ 0x02, 0x03, 0x02, 0x02, 0x01, 0x05, 0x02, 0x00, 0x05, 0x01, 0x00, 0x02,
+ 0x02, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x02, 0x01, 0x03,
+ 0x02, 0x01, 0x03, 0x03, 0x02, 0x05, 0x06, 0x05, 0x07, 0x06, 0x06, 0x07,
+ 0x06, 0x08, 0x08, 0x05, 0x07, 0x08, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0c,
+ 0x09, 0x0a, 0x0a, 0x0b, 0x0c, 0x0c, 0x09, 0x0a, 0x0a, 0x0b, 0x0d, 0x0c,
+ 0x0a, 0x0b, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x03, 0x00, 0x02, 0x04, 0x02, 0x02, 0x04, 0x02, 0x02, 0x06, 0x03, 0x03,
+ 0x06, 0x02, 0x02, 0x04, 0x03, 0x03, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06,
+ 0x08, 0x08, 0x08, 0x04, 0x05, 0x05, 0x0a, 0x0c, 0x0c, 0x06, 0x09, 0x09,
+ 0x07, 0x09, 0x09, 0x0a, 0x0c, 0x0c, 0x07, 0x06, 0x08, 0x0a, 0x07, 0x0b,
+ 0x0a, 0x08, 0x0b, 0x04, 0x09, 0x08, 0x03, 0x09, 0x08, 0x08, 0x0a, 0x0b,
+ 0x06, 0x07, 0x09, 0x06, 0x03, 0x04, 0x0b, 0x08, 0x08, 0x0b, 0x07, 0x02,
+ 0x0a, 0x07, 0x00, 0x04, 0x06, 0x00, 0x01, 0x03, 0x02, 0x00, 0x02, 0x04,
+ 0x00, 0x02, 0x07, 0x04, 0x01, 0x04, 0x09, 0x02, 0x01, 0x09, 0x03, 0x00,
+ 0x06, 0x05, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00,
+ 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00,
+ 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x00,
+ 0x02, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00,
+ 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
+ 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
+ 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
+ 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x01, 0x03, 0x02, 0x03, 0x02, 0x03,
+ 0x07, 0x01, 0x03, 0x07, 0x01, 0x06, 0x04, 0x01, 0x05, 0x02, 0x02, 0x02,
+ 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00,
+ 0x01, 0x08, 0x00, 0x04, 0x07, 0x01, 0x02, 0x02, 0x04, 0x02, 0x01, 0x06,
+ 0x01, 0x02, 0x02, 0x03, 0x05, 0x03, 0x03, 0x01, 0x07, 0x03, 0x01, 0x08,
+ 0x02, 0x00, 0x04, 0x03, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04,
+ 0x03, 0x02, 0x04, 0x02, 0x01, 0x04, 0x03, 0x02, 0x06, 0x07, 0x06, 0x09,
+ 0x08, 0x07, 0x0a, 0x06, 0x08, 0x0a, 0x04, 0x07, 0x08, 0x09, 0x0a, 0x0b,
+ 0x0a, 0x0b, 0x0d, 0x08, 0x0b, 0x0b, 0x0c, 0x0e, 0x0e, 0x09, 0x0b, 0x0b,
+ 0x0d, 0x0f, 0x0e, 0x0a, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
+ 0x08, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x01, 0x02, 0x00, 0x02, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02,
+ 0x05, 0x03, 0x03, 0x05, 0x03, 0x03, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06,
+ 0x07, 0x07, 0x07, 0x08, 0x08, 0x09, 0x07, 0x07, 0x07, 0x0a, 0x0b, 0x0a,
+ 0x08, 0x0a, 0x09, 0x0a, 0x0c, 0x0b, 0x0b, 0x0c, 0x0c, 0x0a, 0x0a, 0x0b,
+ 0x0c, 0x0b, 0x0c, 0x0b, 0x0b, 0x0c, 0x06, 0x0e, 0x0a, 0x03, 0x0c, 0x09,
+ 0x06, 0x0c, 0x0a, 0x05, 0x0a, 0x09, 0x06, 0x07, 0x06, 0x0a, 0x0a, 0x07,
+ 0x0a, 0x09, 0x01, 0x08, 0x0a, 0x00, 0x03, 0x08, 0x00, 0x01, 0x06, 0x02,
+ 0x00, 0x05, 0x04, 0x00, 0x04, 0x07, 0x02, 0x04, 0x05, 0x06, 0x05, 0x01,
+ 0x07, 0x06, 0x00, 0x04, 0x07, 0x00, 0x02, 0x06, 0x00, 0x02, 0x06, 0x00,
+ 0x02, 0x06, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00,
+ 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00,
+ 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00,
+ 0x01, 0x05, 0x00, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01,
+ 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01,
+ 0x00, 0x05, 0x01, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x01,
+ 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x00, 0x05, 0x01, 0x01, 0x06, 0x01,
+ 0x02, 0x05, 0x02, 0x05, 0x04, 0x02, 0x05, 0x03, 0x05, 0x03, 0x03, 0x04,
+ 0x02, 0x04, 0x01, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x01, 0x08, 0x00,
+ 0x00, 0x08, 0x00, 0x01, 0x09, 0x00, 0x04, 0x09, 0x00, 0x03, 0x04, 0x03,
+ 0x02, 0x03, 0x05, 0x01, 0x05, 0x01, 0x02, 0x08, 0x02, 0x02, 0x04, 0x05,
+ 0x02, 0x04, 0x05, 0x01, 0x01, 0x03, 0x02, 0x00, 0x02, 0x02, 0x01, 0x03,
+ 0x03, 0x02, 0x03, 0x03, 0x02, 0x04, 0x03, 0x02, 0x05, 0x04, 0x03, 0x06,
+ 0x07, 0x06, 0x09, 0x08, 0x07, 0x0a, 0x07, 0x08, 0x0a, 0x07, 0x08, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x0b, 0x0c, 0x0c, 0x0b, 0x0d, 0x0c, 0x0f, 0x10, 0x0f,
+ 0x09, 0x0c, 0x0b, 0x0d, 0x0f, 0x0e, 0x0c, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+ 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x01, 0x01, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05,
+ 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x09,
+ 0x09, 0x0a, 0x09, 0x0b, 0x0c, 0x0b, 0x0d, 0x0d, 0x0d, 0x0b, 0x0b, 0x0c,
+ 0x0f, 0x10, 0x0f, 0x0d, 0x0e, 0x0e, 0x0b, 0x0e, 0x0c, 0x09, 0x13, 0x0b,
+ 0x05, 0x10, 0x09, 0x04, 0x0f, 0x09, 0x05, 0x0e, 0x09, 0x06, 0x0b, 0x08,
+ 0x06, 0x0c, 0x04, 0x08, 0x0b, 0x01, 0x05, 0x0c, 0x00, 0x01, 0x0b, 0x00,
+ 0x00, 0x0a, 0x02, 0x00, 0x09, 0x04, 0x00, 0x08, 0x07, 0x01, 0x07, 0x05,
+ 0x03, 0x08, 0x01, 0x04, 0x08, 0x00, 0x02, 0x09, 0x00, 0x01, 0x08, 0x00,
+ 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00,
+ 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00,
+ 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x00, 0x09, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x09, 0x00, 0x00, 0x09, 0x00,
+ 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00,
+ 0x00, 0x09, 0x01, 0x01, 0x08, 0x01, 0x03, 0x08, 0x02, 0x03, 0x07, 0x03,
+ 0x03, 0x07, 0x03, 0x02, 0x08, 0x02, 0x02, 0x0a, 0x00, 0x02, 0x0a, 0x00,
+ 0x02, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x0a, 0x00, 0x04, 0x0a, 0x00,
+ 0x05, 0x06, 0x03, 0x03, 0x07, 0x03, 0x01, 0x09, 0x01, 0x01, 0x0b, 0x01,
+ 0x01, 0x07, 0x02, 0x01, 0x07, 0x03, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x03, 0x06,
+ 0x05, 0x04, 0x07, 0x08, 0x07, 0x0a, 0x09, 0x08, 0x0a, 0x09, 0x09, 0x0a,
+ 0x0b, 0x0b, 0x0d, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0c, 0x0f, 0x10, 0x0f,
+ 0x11, 0x12, 0x11, 0x0a, 0x0c, 0x0a, 0x0e, 0x10, 0x0e, 0x0d, 0x0e, 0x0e,
+ 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02,
+ 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x0c, 0x0c, 0x0a, 0x09, 0x09, 0x07, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0d,
+ 0x09, 0x09, 0x0a, 0x0f, 0x10, 0x0e, 0x0f, 0x0f, 0x0f, 0x0c, 0x0d, 0x0b,
+ 0x0c, 0x15, 0x0c, 0x07, 0x11, 0x09, 0x03, 0x0e, 0x08, 0x06, 0x0f, 0x08,
+ 0x08, 0x0d, 0x09, 0x05, 0x0b, 0x03, 0x07, 0x0b, 0x00, 0x04, 0x0b, 0x01,
+ 0x01, 0x0b, 0x01, 0x00, 0x0a, 0x02, 0x00, 0x0a, 0x04, 0x00, 0x09, 0x07,
+ 0x00, 0x08, 0x06, 0x01, 0x08, 0x03, 0x03, 0x09, 0x02, 0x02, 0x08, 0x00,
+ 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01,
+ 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x01, 0x08, 0x00,
+ 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00, 0x01, 0x08, 0x00,
+ 0x02, 0x09, 0x01, 0x02, 0x09, 0x01, 0x02, 0x09, 0x01, 0x02, 0x08, 0x01,
+ 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01,
+ 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x08, 0x01, 0x02, 0x09, 0x01,
+ 0x02, 0x09, 0x01, 0x02, 0x08, 0x01, 0x01, 0x08, 0x01, 0x01, 0x08, 0x01,
+ 0x01, 0x08, 0x01, 0x01, 0x08, 0x01, 0x00, 0x08, 0x00, 0x01, 0x09, 0x01,
+ 0x01, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x07, 0x02, 0x02, 0x09, 0x01,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x03, 0x02, 0x08, 0x03, 0x01, 0x08, 0x01,
+ 0x03, 0x08, 0x00, 0x04, 0x07, 0x02, 0x02, 0x07, 0x01, 0x00, 0x09, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03,
+ 0x03, 0x02, 0x05, 0x05, 0x03, 0x05, 0x07, 0x05, 0x07, 0x08, 0x07, 0x08,
+ 0x08, 0x07, 0x08, 0x0d, 0x0b, 0x0c, 0x0a, 0x09, 0x09, 0x0c, 0x0b, 0x0b,
+ 0x11, 0x11, 0x0f, 0x12, 0x13, 0x11, 0x0c, 0x0d, 0x0a, 0x0e, 0x0f, 0x0d,
+ 0x10, 0x10, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07,
+ 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02,
+ 0x04, 0x03, 0x03, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x0a,
+ 0x08, 0x08, 0x09, 0x0b, 0x0c, 0x0b, 0x08, 0x09, 0x07, 0x0e, 0x0f, 0x0d,
+ 0x0d, 0x0e, 0x0d, 0x07, 0x07, 0x06, 0x0b, 0x09, 0x09, 0x10, 0x0c, 0x0e,
+ 0x0c, 0x09, 0x09, 0x0e, 0x11, 0x0b, 0x09, 0x0e, 0x09, 0x05, 0x0c, 0x07,
+ 0x07, 0x0d, 0x09, 0x0a, 0x0c, 0x0a, 0x07, 0x08, 0x05, 0x08, 0x09, 0x01,
+ 0x06, 0x09, 0x01, 0x02, 0x08, 0x02, 0x00, 0x07, 0x04, 0x00, 0x07, 0x06,
+ 0x00, 0x06, 0x08, 0x00, 0x06, 0x07, 0x03, 0x06, 0x05, 0x04, 0x06, 0x04,
+ 0x03, 0x04, 0x02, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03,
+ 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x05, 0x06, 0x03, 0x05, 0x06, 0x03,
+ 0x03, 0x04, 0x01, 0x03, 0x04, 0x01, 0x03, 0x04, 0x01, 0x03, 0x04, 0x01,
+ 0x03, 0x04, 0x01, 0x04, 0x05, 0x03, 0x04, 0x05, 0x03, 0x04, 0x05, 0x02,
+ 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03,
+ 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03,
+ 0x04, 0x05, 0x03, 0x04, 0x05, 0x03, 0x04, 0x04, 0x03, 0x03, 0x04, 0x02,
+ 0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x03, 0x04, 0x03, 0x00, 0x05, 0x01,
+ 0x00, 0x07, 0x00, 0x00, 0x07, 0x01, 0x01, 0x06, 0x03, 0x01, 0x05, 0x04,
+ 0x01, 0x06, 0x01, 0x01, 0x05, 0x04, 0x01, 0x04, 0x05, 0x02, 0x04, 0x05,
+ 0x01, 0x05, 0x03, 0x02, 0x05, 0x01, 0x03, 0x04, 0x01, 0x01, 0x04, 0x00,
+ 0x00, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x03, 0x00, 0x00, 0x04, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x02, 0x02, 0x03, 0x05, 0x03, 0x03,
+ 0x07, 0x05, 0x05, 0x07, 0x05, 0x06, 0x0b, 0x09, 0x0a, 0x09, 0x08, 0x08,
+ 0x0b, 0x0a, 0x0a, 0x0f, 0x0e, 0x0d, 0x10, 0x0f, 0x0d, 0x0c, 0x0b, 0x09,
+ 0x0e, 0x0d, 0x0c, 0x11, 0x10, 0x10, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f,
+ 0x0d, 0x0d, 0x0d, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+ 0x07, 0x07, 0x07, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x03, 0x02, 0x02, 0x04, 0x03, 0x03, 0x06, 0x06, 0x06, 0x08, 0x08, 0x08,
+ 0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x0b, 0x0c, 0x0b, 0x09, 0x0a, 0x08,
+ 0x0e, 0x0f, 0x0d, 0x0e, 0x0e, 0x0d, 0x0a, 0x09, 0x08, 0x0d, 0x09, 0x0a,
+ 0x14, 0x0d, 0x10, 0x0e, 0x09, 0x0a, 0x10, 0x11, 0x0c, 0x0b, 0x10, 0x09,
+ 0x08, 0x0d, 0x08, 0x0a, 0x0e, 0x0a, 0x0c, 0x0f, 0x0c, 0x09, 0x0a, 0x07,
+ 0x0a, 0x0b, 0x03, 0x08, 0x0b, 0x03, 0x04, 0x0b, 0x03, 0x02, 0x0a, 0x07,
+ 0x01, 0x0a, 0x08, 0x01, 0x08, 0x09, 0x02, 0x08, 0x09, 0x05, 0x08, 0x07,
+ 0x06, 0x08, 0x06, 0x06, 0x06, 0x03, 0x07, 0x06, 0x05, 0x07, 0x06, 0x05,
+ 0x07, 0x06, 0x05, 0x07, 0x06, 0x05, 0x07, 0x06, 0x05, 0x08, 0x08, 0x06,
+ 0x08, 0x08, 0x06, 0x06, 0x06, 0x03, 0x06, 0x06, 0x03, 0x06, 0x06, 0x03,
+ 0x06, 0x06, 0x03, 0x06, 0x06, 0x03, 0x07, 0x06, 0x05, 0x07, 0x06, 0x05,
+ 0x07, 0x06, 0x04, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+ 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+ 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+ 0x06, 0x06, 0x04, 0x06, 0x06, 0x05, 0x06, 0x06, 0x05, 0x05, 0x06, 0x05,
+ 0x03, 0x07, 0x03, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x09, 0x04,
+ 0x02, 0x07, 0x06, 0x02, 0x08, 0x04, 0x02, 0x07, 0x07, 0x02, 0x05, 0x09,
+ 0x04, 0x05, 0x08, 0x02, 0x06, 0x05, 0x02, 0x05, 0x02, 0x02, 0x05, 0x02,
+ 0x02, 0x04, 0x01, 0x03, 0x05, 0x02, 0x03, 0x04, 0x02, 0x03, 0x03, 0x02,
+ 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x03, 0x03,
+ 0x06, 0x03, 0x03, 0x07, 0x05, 0x05, 0x08, 0x06, 0x06, 0x0c, 0x0a, 0x0a,
+ 0x0b, 0x09, 0x09, 0x0e, 0x0c, 0x0b, 0x0f, 0x0e, 0x0c, 0x11, 0x10, 0x0d,
+ 0x11, 0x10, 0x0d, 0x11, 0x0f, 0x0e, 0x12, 0x13, 0x11, 0x0f, 0x0f, 0x0f,
+ 0x10, 0x10, 0x10, 0x0e, 0x0e, 0x0e, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b,
+ 0x0a, 0x0a, 0x0a, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x02, 0x02,
+ 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x07, 0x07, 0x07,
+ 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x0a, 0x09, 0x08, 0x09, 0x0e, 0x0d, 0x0c,
+ 0x0c, 0x0c, 0x0a, 0x0f, 0x0f, 0x0d, 0x14, 0x13, 0x12, 0x21, 0x20, 0x1e,
+ 0x24, 0x23, 0x22, 0x20, 0x20, 0x1c, 0x16, 0x1a, 0x12, 0x17, 0x25, 0x14,
+ 0x11, 0x24, 0x10, 0x0d, 0x22, 0x0e, 0x0e, 0x22, 0x0f, 0x10, 0x22, 0x11,
+ 0x0e, 0x1e, 0x0c, 0x0f, 0x1e, 0x09, 0x0d, 0x1f, 0x09, 0x09, 0x1f, 0x09,
+ 0x07, 0x1e, 0x0b, 0x06, 0x1e, 0x0c, 0x05, 0x1c, 0x0d, 0x06, 0x1c, 0x0d,
+ 0x09, 0x1b, 0x0c, 0x0a, 0x1c, 0x0c, 0x0b, 0x1b, 0x0a, 0x0c, 0x1b, 0x0b,
+ 0x0c, 0x1b, 0x0c, 0x0c, 0x1b, 0x0b, 0x0c, 0x1b, 0x0b, 0x0c, 0x1b, 0x0c,
+ 0x0d, 0x1d, 0x0c, 0x0d, 0x1d, 0x0c, 0x0c, 0x1c, 0x0a, 0x0b, 0x1c, 0x0a,
+ 0x0b, 0x1c, 0x0a, 0x0b, 0x1c, 0x0a, 0x0c, 0x1d, 0x0b, 0x0c, 0x1c, 0x0d,
+ 0x0c, 0x1c, 0x0d, 0x0d, 0x1d, 0x0c, 0x0e, 0x1c, 0x0d, 0x0d, 0x1c, 0x0d,
+ 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e,
+ 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0e, 0x1d, 0x0e, 0x0d, 0x1c, 0x0d,
+ 0x0e, 0x1c, 0x0d, 0x0d, 0x1c, 0x0c, 0x0d, 0x1c, 0x0d, 0x0d, 0x1c, 0x0d,
+ 0x0c, 0x1c, 0x0d, 0x0a, 0x1d, 0x0a, 0x0a, 0x1f, 0x09, 0x0b, 0x1f, 0x09,
+ 0x0b, 0x1e, 0x0c, 0x0b, 0x1c, 0x0d, 0x0b, 0x1d, 0x0a, 0x0c, 0x1b, 0x0d,
+ 0x0c, 0x19, 0x0f, 0x0d, 0x19, 0x0f, 0x0c, 0x1b, 0x0d, 0x0b, 0x19, 0x09,
+ 0x0b, 0x18, 0x0a, 0x0a, 0x13, 0x08, 0x0f, 0x11, 0x0b, 0x12, 0x0f, 0x0d,
+ 0x12, 0x0e, 0x0c, 0x11, 0x0f, 0x0d, 0x0e, 0x0d, 0x0c, 0x0d, 0x0e, 0x0c,
+ 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0e, 0x0d, 0x0c,
+ 0x0e, 0x0e, 0x0d, 0x10, 0x0e, 0x0e, 0x12, 0x10, 0x10, 0x13, 0x11, 0x10,
+ 0x15, 0x13, 0x13, 0x17, 0x14, 0x14, 0x1a, 0x18, 0x17, 0x19, 0x18, 0x15,
+ 0x1f, 0x1e, 0x1a, 0x28, 0x26, 0x22, 0x25, 0x23, 0x21, 0x18, 0x18, 0x17,
+ 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x0b,
+ 0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06,
+ 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x02, 0x02, 0x01, 0x03, 0x03, 0x02, 0x04, 0x04, 0x03, 0x05, 0x05,
+ 0x07, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x09, 0x09,
+ 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0d, 0x0f, 0x0e, 0x0b, 0x1b, 0x1b, 0x18,
+ 0x3c, 0x3b, 0x38, 0x41, 0x44, 0x3d, 0x2f, 0x38, 0x2a, 0x20, 0x31, 0x1c,
+ 0x1f, 0x3d, 0x1c, 0x18, 0x3c, 0x17, 0x13, 0x3c, 0x15, 0x12, 0x3a, 0x15,
+ 0x15, 0x3a, 0x17, 0x13, 0x36, 0x13, 0x13, 0x37, 0x11, 0x12, 0x38, 0x10,
+ 0x0f, 0x38, 0x10, 0x0d, 0x37, 0x12, 0x0d, 0x36, 0x12, 0x0b, 0x35, 0x13,
+ 0x0b, 0x35, 0x13, 0x0d, 0x34, 0x12, 0x0e, 0x36, 0x11, 0x11, 0x35, 0x12,
+ 0x11, 0x35, 0x12, 0x11, 0x36, 0x13, 0x11, 0x36, 0x12, 0x11, 0x36, 0x12,
+ 0x12, 0x36, 0x14, 0x12, 0x36, 0x13, 0x12, 0x36, 0x13, 0x13, 0x38, 0x14,
+ 0x12, 0x37, 0x14, 0x12, 0x37, 0x14, 0x12, 0x37, 0x14, 0x13, 0x39, 0x15,
+ 0x13, 0x38, 0x15, 0x13, 0x38, 0x15, 0x14, 0x39, 0x15, 0x15, 0x38, 0x15,
+ 0x14, 0x38, 0x15, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16,
+ 0x16, 0x39, 0x16, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16, 0x16, 0x39, 0x16,
+ 0x14, 0x38, 0x15, 0x15, 0x38, 0x15, 0x15, 0x38, 0x15, 0x15, 0x38, 0x15,
+ 0x15, 0x38, 0x15, 0x13, 0x37, 0x15, 0x13, 0x38, 0x14, 0x14, 0x3a, 0x12,
+ 0x16, 0x39, 0x12, 0x16, 0x38, 0x14, 0x17, 0x36, 0x15, 0x17, 0x36, 0x13,
+ 0x17, 0x34, 0x14, 0x19, 0x32, 0x16, 0x1a, 0x33, 0x18, 0x18, 0x34, 0x15,
+ 0x15, 0x31, 0x12, 0x16, 0x2f, 0x13, 0x14, 0x25, 0x11, 0x1e, 0x21, 0x16,
+ 0x23, 0x1f, 0x19, 0x23, 0x1d, 0x19, 0x22, 0x1e, 0x19, 0x1b, 0x1b, 0x18,
+ 0x1a, 0x1b, 0x19, 0x1a, 0x1b, 0x1a, 0x1a, 0x1b, 0x1a, 0x1b, 0x1b, 0x1a,
+ 0x1c, 0x1a, 0x19, 0x1b, 0x1b, 0x1a, 0x1d, 0x1b, 0x1c, 0x1f, 0x1d, 0x1d,
+ 0x21, 0x1f, 0x1e, 0x21, 0x1f, 0x1e, 0x25, 0x23, 0x22, 0x29, 0x27, 0x26,
+ 0x25, 0x23, 0x21, 0x30, 0x2d, 0x2b, 0x42, 0x40, 0x3c, 0x3c, 0x3a, 0x37,
+ 0x1f, 0x1f, 0x1e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0f, 0x0f, 0x0f,
+ 0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c, 0x09, 0x09, 0x09,
+ 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x03, 0x03, 0x01, 0x04, 0x04,
+ 0x03, 0x06, 0x06, 0x07, 0x08, 0x08, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08,
+ 0x0b, 0x0a, 0x0a, 0x10, 0x0f, 0x0f, 0x11, 0x10, 0x0f, 0x0f, 0x0f, 0x0c,
+ 0x26, 0x25, 0x21, 0x56, 0x56, 0x51, 0x5b, 0x62, 0x57, 0x3c, 0x52, 0x39,
+ 0x2f, 0x53, 0x2d, 0x2f, 0x65, 0x2d, 0x26, 0x65, 0x26, 0x20, 0x67, 0x24,
+ 0x1e, 0x64, 0x23, 0x20, 0x63, 0x23, 0x20, 0x62, 0x22, 0x1f, 0x62, 0x1f,
+ 0x1e, 0x63, 0x1e, 0x1b, 0x63, 0x1d, 0x1a, 0x63, 0x1e, 0x19, 0x62, 0x1e,
+ 0x18, 0x60, 0x1f, 0x18, 0x60, 0x1f, 0x18, 0x60, 0x1e, 0x1a, 0x61, 0x1e,
+ 0x1c, 0x62, 0x20, 0x1c, 0x61, 0x1f, 0x1c, 0x62, 0x20, 0x1c, 0x63, 0x20,
+ 0x1c, 0x63, 0x20, 0x1d, 0x63, 0x21, 0x1d, 0x63, 0x21, 0x1d, 0x63, 0x21,
+ 0x1f, 0x65, 0x23, 0x1f, 0x65, 0x23, 0x1f, 0x65, 0x23, 0x1f, 0x65, 0x23,
+ 0x20, 0x66, 0x24, 0x20, 0x66, 0x24, 0x20, 0x66, 0x24, 0x21, 0x67, 0x24,
+ 0x23, 0x66, 0x23, 0x22, 0x66, 0x23, 0x23, 0x68, 0x25, 0x23, 0x67, 0x25,
+ 0x24, 0x68, 0x25, 0x24, 0x68, 0x25, 0x24, 0x68, 0x25, 0x24, 0x68, 0x25,
+ 0x23, 0x68, 0x25, 0x22, 0x66, 0x23, 0x23, 0x66, 0x23, 0x23, 0x66, 0x24,
+ 0x22, 0x66, 0x24, 0x22, 0x66, 0x24, 0x21, 0x65, 0x24, 0x22, 0x66, 0x23,
+ 0x23, 0x67, 0x22, 0x25, 0x66, 0x22, 0x24, 0x65, 0x23, 0x24, 0x64, 0x22,
+ 0x23, 0x65, 0x21, 0x24, 0x62, 0x22, 0x26, 0x60, 0x24, 0x26, 0x5f, 0x26,
+ 0x24, 0x61, 0x23, 0x21, 0x5c, 0x21, 0x22, 0x57, 0x22, 0x1c, 0x3d, 0x1a,
+ 0x27, 0x2d, 0x1f, 0x2f, 0x27, 0x25, 0x2f, 0x25, 0x25, 0x2d, 0x26, 0x25,
+ 0x26, 0x24, 0x22, 0x25, 0x26, 0x22, 0x25, 0x26, 0x24, 0x24, 0x26, 0x24,
+ 0x25, 0x26, 0x24, 0x26, 0x25, 0x23, 0x26, 0x26, 0x24, 0x28, 0x27, 0x27,
+ 0x2a, 0x28, 0x28, 0x2c, 0x2b, 0x2a, 0x2b, 0x29, 0x28, 0x31, 0x2e, 0x2d,
+ 0x37, 0x34, 0x33, 0x33, 0x31, 0x2e, 0x43, 0x3f, 0x3c, 0x5d, 0x5a, 0x56,
+ 0x55, 0x53, 0x4f, 0x29, 0x29, 0x28, 0x15, 0x15, 0x15, 0x12, 0x12, 0x12,
+ 0x11, 0x11, 0x11, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c,
+ 0x0a, 0x0a, 0x0a, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02,
+ 0x01, 0x03, 0x03, 0x04, 0x07, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x0c, 0x0c, 0x0c, 0x10, 0x0e, 0x0e, 0x11, 0x10, 0x0f,
+ 0x11, 0x11, 0x0d, 0x2f, 0x2e, 0x2a, 0x62, 0x62, 0x5c, 0x65, 0x70, 0x61,
+ 0x42, 0x62, 0x41, 0x3d, 0x71, 0x3c, 0x3f, 0x87, 0x3d, 0x34, 0x89, 0x34,
+ 0x2f, 0x8e, 0x32, 0x2c, 0x8b, 0x31, 0x2c, 0x89, 0x32, 0x2e, 0x8a, 0x32,
+ 0x2d, 0x89, 0x2e, 0x2c, 0x8b, 0x2c, 0x29, 0x8c, 0x2a, 0x28, 0x8c, 0x2a,
+ 0x26, 0x8c, 0x2a, 0x24, 0x8b, 0x2b, 0x26, 0x8a, 0x2c, 0x26, 0x8b, 0x2a,
+ 0x28, 0x8a, 0x2b, 0x29, 0x8b, 0x2c, 0x29, 0x8a, 0x2c, 0x29, 0x8a, 0x2d,
+ 0x29, 0x8c, 0x2d, 0x29, 0x8c, 0x2d, 0x29, 0x8c, 0x2e, 0x2a, 0x8c, 0x2e,
+ 0x2a, 0x8c, 0x2e, 0x2c, 0x8e, 0x30, 0x2b, 0x8e, 0x2f, 0x2c, 0x8e, 0x31,
+ 0x2c, 0x8e, 0x31, 0x2d, 0x8f, 0x30, 0x2d, 0x8f, 0x32, 0x2d, 0x8f, 0x32,
+ 0x2e, 0x90, 0x32, 0x2f, 0x91, 0x31, 0x2f, 0x91, 0x31, 0x30, 0x91, 0x32,
+ 0x30, 0x90, 0x31, 0x30, 0x92, 0x33, 0x30, 0x92, 0x33, 0x30, 0x92, 0x33,
+ 0x30, 0x92, 0x33, 0x30, 0x91, 0x31, 0x2f, 0x91, 0x31, 0x2f, 0x91, 0x31,
+ 0x2f, 0x91, 0x32, 0x2f, 0x8f, 0x32, 0x2f, 0x8f, 0x32, 0x2e, 0x8f, 0x32,
+ 0x2e, 0x8f, 0x31, 0x2e, 0x90, 0x30, 0x2e, 0x90, 0x30, 0x2d, 0x8f, 0x2f,
+ 0x2d, 0x8f, 0x2f, 0x29, 0x91, 0x2d, 0x2a, 0x8e, 0x2e, 0x2e, 0x8c, 0x31,
+ 0x2e, 0x8a, 0x33, 0x2a, 0x8b, 0x2f, 0x28, 0x85, 0x2e, 0x29, 0x7a, 0x2f,
+ 0x1e, 0x50, 0x21, 0x24, 0x31, 0x22, 0x2d, 0x26, 0x29, 0x30, 0x23, 0x2a,
+ 0x2d, 0x23, 0x29, 0x29, 0x25, 0x26, 0x27, 0x28, 0x24, 0x27, 0x28, 0x26,
+ 0x27, 0x28, 0x26, 0x28, 0x28, 0x26, 0x29, 0x27, 0x27, 0x2a, 0x28, 0x27,
+ 0x2c, 0x2a, 0x2a, 0x2d, 0x2b, 0x2b, 0x30, 0x2e, 0x2e, 0x2f, 0x2d, 0x2c,
+ 0x35, 0x32, 0x30, 0x3d, 0x39, 0x37, 0x3c, 0x39, 0x35, 0x4d, 0x4a, 0x46,
+ 0x6b, 0x68, 0x63, 0x63, 0x60, 0x5c, 0x32, 0x32, 0x31, 0x19, 0x19, 0x19,
+ 0x14, 0x14, 0x14, 0x13, 0x13, 0x13, 0x10, 0x10, 0x10, 0x0e, 0x0e, 0x0e,
+ 0x0b, 0x0b, 0x0b, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x06, 0x06, 0x06,
+ 0x05, 0x05, 0x05, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x01,
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x04, 0x07, 0x07, 0x08, 0x09, 0x09,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d, 0x0f, 0x0f, 0x0e,
+ 0x11, 0x11, 0x0f, 0x13, 0x13, 0x0f, 0x35, 0x35, 0x30, 0x68, 0x68, 0x61,
+ 0x68, 0x77, 0x63, 0x43, 0x70, 0x44, 0x47, 0x8e, 0x48, 0x4b, 0xa9, 0x4b,
+ 0x3e, 0xac, 0x40, 0x39, 0xb3, 0x3e, 0x35, 0xb0, 0x3c, 0x34, 0xad, 0x3d,
+ 0x39, 0xb0, 0x3f, 0x37, 0xb0, 0x39, 0x36, 0xb1, 0x36, 0x32, 0xb3, 0x34,
+ 0x31, 0xb3, 0x34, 0x2f, 0xb3, 0x34, 0x2e, 0xb3, 0x35, 0x2f, 0xb1, 0x36,
+ 0x30, 0xb2, 0x34, 0x32, 0xb1, 0x35, 0x31, 0xb2, 0x36, 0x31, 0xb0, 0x36,
+ 0x31, 0xb0, 0x36, 0x31, 0xb3, 0x37, 0x31, 0xb3, 0x37, 0x31, 0xb3, 0x37,
+ 0x32, 0xb4, 0x38, 0x32, 0xb4, 0x38, 0x34, 0xb5, 0x3a, 0x34, 0xb5, 0x39,
+ 0x35, 0xb6, 0x3b, 0x35, 0xb6, 0x3b, 0x35, 0xb6, 0x3a, 0x36, 0xb6, 0x3c,
+ 0x36, 0xb6, 0x3c, 0x36, 0xb7, 0x3c, 0x38, 0xb8, 0x3c, 0x38, 0xb8, 0x3c,
+ 0x38, 0xb7, 0x3c, 0x38, 0xb7, 0x3b, 0x39, 0xba, 0x3d, 0x39, 0xba, 0x3d,
+ 0x39, 0xba, 0x3d, 0x39, 0xba, 0x3d, 0x38, 0xb8, 0x3b, 0x38, 0xb8, 0x3c,
+ 0x38, 0xb8, 0x3c, 0x38, 0xb8, 0x3c, 0x37, 0xb6, 0x3c, 0x37, 0xb6, 0x3c,
+ 0x37, 0xb6, 0x3c, 0x37, 0xb6, 0x3c, 0x36, 0xb7, 0x3c, 0x35, 0xb7, 0x3c,
+ 0x34, 0xb6, 0x3a, 0x33, 0xb7, 0x39, 0x2e, 0xba, 0x36, 0x2f, 0xb7, 0x38,
+ 0x33, 0xb5, 0x3b, 0x32, 0xb2, 0x3d, 0x2d, 0xb3, 0x39, 0x2d, 0xac, 0x39,
+ 0x2f, 0x9d, 0x3a, 0x1f, 0x62, 0x25, 0x21, 0x34, 0x22, 0x2a, 0x23, 0x29,
+ 0x2d, 0x1f, 0x2b, 0x2c, 0x20, 0x29, 0x28, 0x24, 0x25, 0x26, 0x27, 0x24,
+ 0x26, 0x27, 0x25, 0x27, 0x27, 0x26, 0x28, 0x27, 0x26, 0x29, 0x27, 0x27,
+ 0x2a, 0x28, 0x27, 0x2c, 0x2b, 0x2a, 0x2e, 0x2c, 0x2c, 0x31, 0x2f, 0x2e,
+ 0x30, 0x2e, 0x2c, 0x35, 0x33, 0x30, 0x3f, 0x3c, 0x39, 0x42, 0x3f, 0x3a,
+ 0x54, 0x51, 0x4c, 0x72, 0x6f, 0x6a, 0x6b, 0x68, 0x64, 0x39, 0x3a, 0x38,
+ 0x1c, 0x1d, 0x1d, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x11, 0x11, 0x11,
+ 0x0e, 0x0e, 0x0e, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01,
+ 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x03, 0x04, 0x05, 0x05, 0x07, 0x08,
+ 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0e, 0x0e, 0x0d,
+ 0x0f, 0x0e, 0x0d, 0x11, 0x11, 0x0e, 0x16, 0x17, 0x12, 0x36, 0x37, 0x31,
+ 0x54, 0x56, 0x4e, 0x4d, 0x63, 0x4a, 0x35, 0x76, 0x39, 0x43, 0xac, 0x49,
+ 0x47, 0xc9, 0x4b, 0x39, 0xcb, 0x3f, 0x34, 0xd1, 0x3d, 0x2f, 0xcf, 0x3b,
+ 0x2f, 0xcd, 0x3c, 0x33, 0xcf, 0x3e, 0x32, 0xcf, 0x38, 0x30, 0xd0, 0x36,
+ 0x2d, 0xd1, 0x34, 0x2c, 0xd1, 0x33, 0x2a, 0xd1, 0x33, 0x29, 0xd1, 0x34,
+ 0x2a, 0xd0, 0x35, 0x2b, 0xd0, 0x33, 0x2c, 0xd0, 0x34, 0x2b, 0xd0, 0x35,
+ 0x2b, 0xcf, 0x35, 0x2b, 0xcf, 0x35, 0x2b, 0xd1, 0x36, 0x2b, 0xd1, 0x36,
+ 0x2c, 0xd1, 0x36, 0x2c, 0xd1, 0x37, 0x2c, 0xd1, 0x37, 0x2c, 0xd2, 0x37,
+ 0x2c, 0xd2, 0x37, 0x2d, 0xd3, 0x38, 0x2d, 0xd3, 0x38, 0x2d, 0xd3, 0x37,
+ 0x2e, 0xd3, 0x38, 0x2e, 0xd3, 0x38, 0x2e, 0xd3, 0x38, 0x30, 0xd5, 0x39,
+ 0x30, 0xd5, 0x39, 0x30, 0xd4, 0x39, 0x30, 0xd4, 0x38, 0x31, 0xd6, 0x3a,
+ 0x31, 0xd6, 0x3a, 0x31, 0xd6, 0x3a, 0x31, 0xd6, 0x3a, 0x30, 0xd4, 0x38,
+ 0x30, 0xd5, 0x39, 0x30, 0xd5, 0x39, 0x30, 0xd5, 0x39, 0x2f, 0xd3, 0x38,
+ 0x2f, 0xd3, 0x38, 0x2f, 0xd3, 0x38, 0x31, 0xd3, 0x39, 0x31, 0xd3, 0x39,
+ 0x32, 0xd4, 0x39, 0x30, 0xd3, 0x37, 0x2e, 0xd3, 0x36, 0x29, 0xd5, 0x34,
+ 0x2a, 0xd4, 0x35, 0x2e, 0xd3, 0x37, 0x2d, 0xd1, 0x38, 0x28, 0xd1, 0x37,
+ 0x29, 0xcc, 0x38, 0x2c, 0xbb, 0x39, 0x19, 0x72, 0x21, 0x16, 0x31, 0x17,
+ 0x1c, 0x1b, 0x1c, 0x1f, 0x17, 0x1d, 0x1f, 0x17, 0x1c, 0x1c, 0x1a, 0x19,
+ 0x1a, 0x1b, 0x18, 0x1b, 0x1c, 0x1a, 0x1d, 0x1d, 0x1c, 0x1d, 0x1d, 0x1c,
+ 0x1e, 0x1d, 0x1d, 0x1f, 0x1e, 0x1d, 0x22, 0x21, 0x20, 0x23, 0x22, 0x21,
+ 0x26, 0x24, 0x23, 0x27, 0x25, 0x24, 0x2c, 0x2a, 0x27, 0x36, 0x33, 0x30,
+ 0x3e, 0x3c, 0x38, 0x4b, 0x49, 0x45, 0x5e, 0x5c, 0x57, 0x5a, 0x58, 0x54,
+ 0x3b, 0x3c, 0x3b, 0x1f, 0x20, 0x20, 0x15, 0x15, 0x15, 0x14, 0x14, 0x14,
+ 0x12, 0x12, 0x12, 0x0e, 0x0e, 0x0e, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a,
+ 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x01, 0x03, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x06,
+ 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d,
+ 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0f, 0x10, 0x0e, 0x18, 0x1a, 0x15,
+ 0x35, 0x36, 0x31, 0x41, 0x46, 0x3d, 0x35, 0x51, 0x34, 0x29, 0x79, 0x30,
+ 0x3d, 0xc0, 0x46, 0x41, 0xdd, 0x48, 0x34, 0xe0, 0x3c, 0x2e, 0xe3, 0x3a,
+ 0x29, 0xe2, 0x39, 0x29, 0xe1, 0x39, 0x2d, 0xe2, 0x3b, 0x2b, 0xe2, 0x37,
+ 0x2b, 0xe3, 0x35, 0x28, 0xe3, 0x32, 0x27, 0xe3, 0x31, 0x25, 0xe3, 0x31,
+ 0x24, 0xe3, 0x32, 0x25, 0xe2, 0x32, 0x25, 0xe3, 0x31, 0x26, 0xe2, 0x32,
+ 0x24, 0xe3, 0x32, 0x25, 0xe2, 0x32, 0x25, 0xe2, 0x32, 0x25, 0xe3, 0x33,
+ 0x25, 0xe3, 0x33, 0x25, 0xe3, 0x33, 0x26, 0xe4, 0x34, 0x26, 0xe4, 0x34,
+ 0x25, 0xe4, 0x34, 0x25, 0xe4, 0x33, 0x25, 0xe4, 0x34, 0x25, 0xe4, 0x34,
+ 0x26, 0xe4, 0x34, 0x26, 0xe5, 0x34, 0x26, 0xe5, 0x34, 0x26, 0xe5, 0x34,
+ 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe5, 0x35, 0x28, 0xe5, 0x35,
+ 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35,
+ 0x28, 0xe5, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35, 0x28, 0xe6, 0x35,
+ 0x27, 0xe5, 0x34, 0x27, 0xe5, 0x34, 0x27, 0xe5, 0x34, 0x2a, 0xe5, 0x35,
+ 0x2b, 0xe5, 0x34, 0x2c, 0xe5, 0x35, 0x2b, 0xe5, 0x33, 0x29, 0xe5, 0x32,
+ 0x24, 0xe6, 0x30, 0x25, 0xe5, 0x31, 0x29, 0xe4, 0x33, 0x28, 0xe3, 0x34,
+ 0x23, 0xe3, 0x33, 0x25, 0xe0, 0x35, 0x29, 0xcf, 0x36, 0x14, 0x7d, 0x1c,
+ 0x0d, 0x30, 0x0f, 0x11, 0x16, 0x11, 0x14, 0x12, 0x12, 0x15, 0x11, 0x11,
+ 0x12, 0x11, 0x0f, 0x11, 0x12, 0x0f, 0x11, 0x12, 0x11, 0x13, 0x14, 0x13,
+ 0x14, 0x14, 0x13, 0x14, 0x14, 0x14, 0x16, 0x15, 0x14, 0x19, 0x18, 0x17,
+ 0x1a, 0x19, 0x18, 0x1b, 0x1a, 0x19, 0x1f, 0x1d, 0x1c, 0x23, 0x22, 0x1e,
+ 0x2c, 0x2b, 0x28, 0x3a, 0x38, 0x35, 0x43, 0x41, 0x3e, 0x4d, 0x4b, 0x47,
+ 0x4a, 0x49, 0x46, 0x3c, 0x3d, 0x3c, 0x21, 0x21, 0x22, 0x16, 0x16, 0x16,
+ 0x15, 0x15, 0x15, 0x12, 0x12, 0x12, 0x0e, 0x0e, 0x0e, 0x0b, 0x0b, 0x0b,
+ 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x02, 0x00, 0x02, 0x03, 0x00, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x06, 0x04, 0x07, 0x08, 0x07, 0x09, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x0b,
+ 0x0d, 0x0d, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0c, 0x0f, 0x10, 0x0d,
+ 0x1c, 0x1e, 0x19, 0x34, 0x36, 0x30, 0x2d, 0x32, 0x28, 0x1a, 0x3c, 0x19,
+ 0x1b, 0x7e, 0x24, 0x38, 0xda, 0x45, 0x3a, 0xf7, 0x46, 0x2c, 0xfa, 0x38,
+ 0x25, 0xfa, 0x36, 0x20, 0xf9, 0x34, 0x20, 0xf9, 0x35, 0x23, 0xf9, 0x37,
+ 0x23, 0xf9, 0x34, 0x22, 0xf9, 0x32, 0x1f, 0xfa, 0x2e, 0x1e, 0xf9, 0x2d,
+ 0x1e, 0xf9, 0x2d, 0x1c, 0xfa, 0x2e, 0x1d, 0xf9, 0x2e, 0x1d, 0xf9, 0x2e,
+ 0x1d, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e,
+ 0x1c, 0xf9, 0x2e, 0x1c, 0xf9, 0x2e, 0x1d, 0xf9, 0x2f, 0x1d, 0xf9, 0x2f,
+ 0x1d, 0xf9, 0x2f, 0x1a, 0xf9, 0x2e, 0x1a, 0xf9, 0x2e, 0x1a, 0xf9, 0x2e,
+ 0x1a, 0xf9, 0x2e, 0x1b, 0xf9, 0x2e, 0x1b, 0xfa, 0x2d, 0x1b, 0xfa, 0x2d,
+ 0x1b, 0xfa, 0x2d, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f,
+ 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f,
+ 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f, 0x1d, 0xfa, 0x2f,
+ 0x1d, 0xfa, 0x2f, 0x1c, 0xfa, 0x2d, 0x1c, 0xfa, 0x2d, 0x1d, 0xfa, 0x2d,
+ 0x20, 0xf9, 0x2f, 0x23, 0xfa, 0x2e, 0x25, 0xfa, 0x2f, 0x24, 0xfa, 0x2e,
+ 0x21, 0xfa, 0x2c, 0x1d, 0xfa, 0x2b, 0x1e, 0xfa, 0x2b, 0x21, 0xfa, 0x2c,
+ 0x21, 0xf9, 0x2d, 0x1c, 0xfa, 0x2e, 0x20, 0xf9, 0x31, 0x25, 0xe8, 0x32,
+ 0x0e, 0x89, 0x16, 0x03, 0x2c, 0x05, 0x03, 0x0f, 0x03, 0x06, 0x0a, 0x03,
+ 0x08, 0x09, 0x03, 0x05, 0x06, 0x03, 0x04, 0x05, 0x03, 0x05, 0x06, 0x05,
+ 0x07, 0x08, 0x07, 0x08, 0x09, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0b, 0x09,
+ 0x0d, 0x0d, 0x0b, 0x0e, 0x0e, 0x0c, 0x10, 0x0e, 0x0e, 0x15, 0x14, 0x13,
+ 0x19, 0x18, 0x15, 0x22, 0x22, 0x1f, 0x37, 0x36, 0x33, 0x3a, 0x39, 0x36,
+ 0x37, 0x36, 0x32, 0x38, 0x37, 0x34, 0x3d, 0x3e, 0x3d, 0x24, 0x24, 0x24,
+ 0x17, 0x17, 0x17, 0x14, 0x14, 0x14, 0x12, 0x12, 0x12, 0x0e, 0x0e, 0x0e,
+ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x08, 0x08, 0x08,
+ 0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x02, 0x03, 0x00, 0x03, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x06, 0x04, 0x07, 0x08, 0x07, 0x09, 0x0a, 0x09, 0x0a,
+ 0x0a, 0x0a, 0x0b, 0x0d, 0x0d, 0x0d, 0x0f, 0x0f, 0x0f, 0x10, 0x11, 0x0e,
+ 0x12, 0x13, 0x10, 0x20, 0x22, 0x1d, 0x35, 0x37, 0x30, 0x2b, 0x30, 0x25,
+ 0x1a, 0x3c, 0x19, 0x1d, 0x82, 0x24, 0x3b, 0xe2, 0x46, 0x38, 0xfc, 0x42,
+ 0x29, 0xfe, 0x35, 0x20, 0xfd, 0x31, 0x1a, 0xf9, 0x2f, 0x1a, 0xf8, 0x2f,
+ 0x1b, 0xf6, 0x30, 0x1c, 0xf7, 0x2d, 0x1c, 0xf8, 0x2c, 0x19, 0xfa, 0x29,
+ 0x18, 0xf9, 0x29, 0x18, 0xf9, 0x29, 0x16, 0xfa, 0x29, 0x17, 0xf8, 0x29,
+ 0x17, 0xf8, 0x29, 0x17, 0xf8, 0x2a, 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29,
+ 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29, 0x16, 0xf8, 0x2a,
+ 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29,
+ 0x15, 0xf8, 0x29, 0x15, 0xf8, 0x29, 0x16, 0xf8, 0x29, 0x16, 0xf8, 0x29,
+ 0x16, 0xf8, 0x29, 0x16, 0xf8, 0x29, 0x17, 0xf8, 0x2a, 0x16, 0xf8, 0x2a,
+ 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a,
+ 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x17, 0xf8, 0x2a, 0x17, 0xf8, 0x2a,
+ 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x2a, 0x16, 0xf8, 0x29, 0x16, 0xf8, 0x29,
+ 0x16, 0xf8, 0x29, 0x19, 0xf8, 0x2a, 0x1a, 0xf8, 0x2a, 0x1c, 0xf8, 0x2b,
+ 0x1b, 0xf8, 0x29, 0x19, 0xf9, 0x28, 0x16, 0xfa, 0x27, 0x17, 0xf9, 0x27,
+ 0x1a, 0xf9, 0x28, 0x1a, 0xf9, 0x28, 0x16, 0xfb, 0x2a, 0x1a, 0xfc, 0x2e,
+ 0x21, 0xed, 0x31, 0x0c, 0x8e, 0x17, 0x01, 0x2a, 0x03, 0x00, 0x0c, 0x00,
+ 0x02, 0x08, 0x00, 0x04, 0x05, 0x00, 0x02, 0x02, 0x00, 0x01, 0x02, 0x00,
+ 0x02, 0x03, 0x02, 0x04, 0x05, 0x03, 0x05, 0x05, 0x04, 0x06, 0x06, 0x06,
+ 0x08, 0x09, 0x07, 0x0b, 0x0b, 0x09, 0x0c, 0x0c, 0x0a, 0x0d, 0x0d, 0x0c,
+ 0x13, 0x13, 0x12, 0x18, 0x17, 0x15, 0x23, 0x22, 0x20, 0x3c, 0x3c, 0x39,
+ 0x3c, 0x3c, 0x39, 0x31, 0x32, 0x2e, 0x33, 0x33, 0x30, 0x3e, 0x3f, 0x3e,
+ 0x28, 0x28, 0x28, 0x19, 0x19, 0x19, 0x14, 0x14, 0x14, 0x13, 0x13, 0x13,
+ 0x0f, 0x0f, 0x0f, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a,
+ 0x08, 0x08, 0x08, 0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x03, 0x00,
+ 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05, 0x04, 0x07, 0x09, 0x08, 0x09,
+ 0x0a, 0x0a, 0x0a, 0x0b, 0x09, 0x0b, 0x0c, 0x0b, 0x0c, 0x10, 0x10, 0x10,
+ 0x13, 0x14, 0x11, 0x15, 0x16, 0x13, 0x24, 0x27, 0x20, 0x36, 0x38, 0x31,
+ 0x2d, 0x32, 0x28, 0x20, 0x42, 0x1e, 0x22, 0x86, 0x28, 0x40, 0xe7, 0x48,
+ 0x37, 0xfb, 0x3f, 0x27, 0xfd, 0x32, 0x1b, 0xfa, 0x2c, 0x14, 0xf5, 0x28,
+ 0x13, 0xf2, 0x29, 0x13, 0xee, 0x29, 0x16, 0xef, 0x28, 0x16, 0xf1, 0x27,
+ 0x14, 0xf4, 0x24, 0x13, 0xf4, 0x24, 0x13, 0xf4, 0x24, 0x11, 0xf4, 0x24,
+ 0x12, 0xf2, 0x24, 0x12, 0xf2, 0x24, 0x12, 0xf1, 0x25, 0x10, 0xf0, 0x24,
+ 0x10, 0xf0, 0x24, 0x10, 0xf0, 0x24, 0x10, 0xf0, 0x24, 0x10, 0xf0, 0x24,
+ 0x10, 0xf0, 0x25, 0x10, 0xf0, 0x25, 0x10, 0xf0, 0x25, 0x11, 0xf2, 0x24,
+ 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24,
+ 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x12, 0xf2, 0x25,
+ 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25,
+ 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x12, 0xf2, 0x25,
+ 0x12, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x25, 0x11, 0xf2, 0x24,
+ 0x11, 0xf2, 0x24, 0x11, 0xf2, 0x24, 0x12, 0xf1, 0x25, 0x11, 0xf2, 0x27,
+ 0x13, 0xf2, 0x27, 0x12, 0xf2, 0x24, 0x12, 0xf3, 0x24, 0x10, 0xf6, 0x24,
+ 0x10, 0xf4, 0x24, 0x13, 0xf2, 0x24, 0x13, 0xf3, 0x24, 0x10, 0xf6, 0x25,
+ 0x14, 0xf8, 0x2a, 0x1c, 0xed, 0x2f, 0x0b, 0x90, 0x18, 0x01, 0x28, 0x03,
+ 0x00, 0x0b, 0x00, 0x01, 0x07, 0x00, 0x02, 0x03, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x03, 0x01, 0x03, 0x04, 0x02,
+ 0x05, 0x05, 0x06, 0x08, 0x08, 0x08, 0x0b, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b,
+ 0x0d, 0x0d, 0x0d, 0x14, 0x14, 0x13, 0x19, 0x18, 0x17, 0x25, 0x26, 0x23,
+ 0x43, 0x44, 0x40, 0x41, 0x42, 0x3e, 0x31, 0x32, 0x2d, 0x33, 0x33, 0x2f,
+ 0x40, 0x40, 0x3f, 0x2b, 0x2b, 0x2b, 0x1b, 0x1b, 0x1b, 0x15, 0x15, 0x15,
+ 0x14, 0x14, 0x14, 0x10, 0x10, 0x10, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
+ 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x02, 0x03, 0x00, 0x03, 0x02, 0x03, 0x04, 0x04, 0x04, 0x06, 0x04, 0x07,
+ 0x09, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x09, 0x0c, 0x0c, 0x0b, 0x0c,
+ 0x0f, 0x0f, 0x0f, 0x14, 0x15, 0x13, 0x19, 0x1a, 0x17, 0x28, 0x2b, 0x24,
+ 0x35, 0x37, 0x31, 0x33, 0x38, 0x2e, 0x27, 0x4a, 0x24, 0x2b, 0x8e, 0x2e,
+ 0x45, 0xe9, 0x4a, 0x34, 0xf5, 0x38, 0x25, 0xfa, 0x2e, 0x17, 0xf8, 0x26,
+ 0x0f, 0xf0, 0x22, 0x0e, 0xec, 0x23, 0x0e, 0xe8, 0x23, 0x11, 0xe8, 0x23,
+ 0x11, 0xea, 0x22, 0x0f, 0xed, 0x20, 0x0f, 0xed, 0x20, 0x0f, 0xed, 0x20,
+ 0x0d, 0xec, 0x20, 0x0d, 0xea, 0x21, 0x0e, 0xe9, 0x20, 0x0e, 0xe8, 0x22,
+ 0x0c, 0xe9, 0x21, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20,
+ 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20, 0x0c, 0xe9, 0x20,
+ 0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20,
+ 0x0e, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+ 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+ 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+ 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20, 0x0d, 0xea, 0x20,
+ 0x0e, 0xea, 0x20, 0x0e, 0xea, 0x20, 0x0e, 0xeb, 0x20, 0x0d, 0xe9, 0x21,
+ 0x0b, 0xea, 0x23, 0x0b, 0xea, 0x23, 0x0b, 0xea, 0x20, 0x0b, 0xec, 0x20,
+ 0x0a, 0xef, 0x20, 0x0c, 0xed, 0x20, 0x10, 0xea, 0x20, 0x10, 0xea, 0x20,
+ 0x0b, 0xee, 0x21, 0x0f, 0xf0, 0x26, 0x19, 0xeb, 0x2c, 0x0c, 0x93, 0x18,
+ 0x02, 0x27, 0x04, 0x02, 0x0a, 0x02, 0x01, 0x06, 0x01, 0x00, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x01,
+ 0x03, 0x03, 0x02, 0x05, 0x04, 0x05, 0x07, 0x07, 0x07, 0x09, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x0d, 0x0d, 0x0d, 0x12, 0x13, 0x13, 0x18, 0x19, 0x18,
+ 0x27, 0x28, 0x26, 0x48, 0x4a, 0x46, 0x49, 0x4b, 0x47, 0x37, 0x3a, 0x36,
+ 0x3a, 0x3c, 0x39, 0x42, 0x43, 0x41, 0x30, 0x30, 0x30, 0x1f, 0x1f, 0x1f,
+ 0x17, 0x17, 0x17, 0x15, 0x15, 0x15, 0x11, 0x11, 0x11, 0x0c, 0x0c, 0x0c,
+ 0x0c, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x03, 0x02, 0x01, 0x03, 0x02, 0x01, 0x05, 0x03, 0x03, 0x06, 0x04, 0x04,
+ 0x07, 0x04, 0x07, 0x09, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0c, 0x0a, 0x0b,
+ 0x0d, 0x0d, 0x0d, 0x0e, 0x0f, 0x0e, 0x13, 0x15, 0x11, 0x1c, 0x1e, 0x1a,
+ 0x2a, 0x2f, 0x26, 0x33, 0x37, 0x2e, 0x39, 0x40, 0x33, 0x2c, 0x50, 0x29,
+ 0x33, 0x98, 0x36, 0x47, 0xe8, 0x4a, 0x2e, 0xec, 0x31, 0x23, 0xf7, 0x2a,
+ 0x15, 0xf6, 0x24, 0x0d, 0xed, 0x20, 0x0e, 0xec, 0x22, 0x0e, 0xe7, 0x23,
+ 0x10, 0xe4, 0x21, 0x10, 0xe5, 0x21, 0x0e, 0xe8, 0x1f, 0x0e, 0xe8, 0x1f,
+ 0x0e, 0xe8, 0x1f, 0x0c, 0xe7, 0x1f, 0x0c, 0xe4, 0x20, 0x0d, 0xe3, 0x1f,
+ 0x0d, 0xe3, 0x20, 0x0c, 0xe6, 0x20, 0x0c, 0xe7, 0x1f, 0x0c, 0xe6, 0x1f,
+ 0x0c, 0xe7, 0x1f, 0x0c, 0xe5, 0x1f, 0x0c, 0xe5, 0x1f, 0x0c, 0xe5, 0x1f,
+ 0x0c, 0xe5, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f,
+ 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1e,
+ 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f,
+ 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1f,
+ 0x0c, 0xe6, 0x1f, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1e, 0x0c, 0xe6, 0x1f,
+ 0x0c, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe6, 0x1f, 0x0d, 0xe7, 0x1f,
+ 0x0b, 0xe5, 0x20, 0x08, 0xe6, 0x21, 0x08, 0xe6, 0x21, 0x0a, 0xe6, 0x1f,
+ 0x0a, 0xe7, 0x1f, 0x09, 0xe8, 0x1f, 0x0c, 0xe7, 0x1f, 0x13, 0xe3, 0x1e,
+ 0x12, 0xe3, 0x1f, 0x0b, 0xe7, 0x1e, 0x0c, 0xe8, 0x21, 0x19, 0xe8, 0x29,
+ 0x0e, 0x94, 0x17, 0x03, 0x27, 0x04, 0x03, 0x09, 0x03, 0x03, 0x05, 0x01,
+ 0x01, 0x01, 0x00, 0x03, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x02,
+ 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06,
+ 0x08, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0d, 0x0e, 0x0e, 0x0f, 0x10, 0x10,
+ 0x16, 0x17, 0x17, 0x25, 0x27, 0x26, 0x47, 0x4a, 0x46, 0x4f, 0x53, 0x4e,
+ 0x42, 0x47, 0x42, 0x47, 0x49, 0x47, 0x43, 0x46, 0x43, 0x34, 0x35, 0x34,
+ 0x22, 0x22, 0x22, 0x18, 0x18, 0x18, 0x15, 0x15, 0x15, 0x12, 0x11, 0x11,
+ 0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09,
+ 0x06, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x01, 0x04, 0x02, 0x01, 0x04, 0x01, 0x01, 0x06, 0x03, 0x03,
+ 0x07, 0x04, 0x04, 0x08, 0x04, 0x07, 0x0a, 0x08, 0x0a, 0x0a, 0x0a, 0x0b,
+ 0x0c, 0x0b, 0x0c, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0e, 0x13, 0x15, 0x11,
+ 0x1e, 0x21, 0x1d, 0x2c, 0x31, 0x29, 0x38, 0x3c, 0x34, 0x48, 0x50, 0x43,
+ 0x38, 0x5d, 0x35, 0x3c, 0xa0, 0x3f, 0x4b, 0xe8, 0x4e, 0x2e, 0xe5, 0x30,
+ 0x26, 0xf3, 0x2a, 0x18, 0xf3, 0x25, 0x10, 0xea, 0x22, 0x12, 0xec, 0x25,
+ 0x12, 0xe6, 0x25, 0x12, 0xe2, 0x23, 0x13, 0xe2, 0x22, 0x11, 0xe4, 0x20,
+ 0x11, 0xe4, 0x20, 0x11, 0xe4, 0x20, 0x0f, 0xe3, 0x20, 0x0f, 0xdf, 0x22,
+ 0x10, 0xde, 0x22, 0x10, 0xdf, 0x22, 0x10, 0xe3, 0x22, 0x10, 0xe4, 0x20,
+ 0x10, 0xe4, 0x20, 0x10, 0xe4, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+ 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+ 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x21, 0x0f, 0xe2, 0x1f,
+ 0x0f, 0xe2, 0x1f, 0x0f, 0xe2, 0x1f, 0x0f, 0xe2, 0x20, 0x10, 0xe3, 0x20,
+ 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+ 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x0f, 0xe2, 0x1f, 0x0f, 0xe2, 0x1f,
+ 0x10, 0xe3, 0x21, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20, 0x10, 0xe3, 0x20,
+ 0x10, 0xe4, 0x20, 0x0e, 0xe3, 0x22, 0x0b, 0xe2, 0x22, 0x0b, 0xe2, 0x22,
+ 0x0d, 0xe2, 0x21, 0x0e, 0xe3, 0x21, 0x0c, 0xe4, 0x20, 0x11, 0xe2, 0x21,
+ 0x18, 0xdf, 0x20, 0x18, 0xde, 0x20, 0x0e, 0xe1, 0x1f, 0x0f, 0xe1, 0x21,
+ 0x1d, 0xe6, 0x2a, 0x14, 0x97, 0x1a, 0x07, 0x2b, 0x08, 0x08, 0x0d, 0x07,
+ 0x07, 0x08, 0x05, 0x05, 0x05, 0x04, 0x07, 0x05, 0x04, 0x08, 0x06, 0x05,
+ 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08,
+ 0x08, 0x09, 0x09, 0x0b, 0x0b, 0x0c, 0x0d, 0x0d, 0x0d, 0x10, 0x12, 0x12,
+ 0x11, 0x12, 0x13, 0x19, 0x1b, 0x1a, 0x29, 0x2b, 0x2a, 0x4b, 0x4f, 0x4a,
+ 0x57, 0x5c, 0x57, 0x53, 0x59, 0x55, 0x5a, 0x5d, 0x5b, 0x4a, 0x4d, 0x4a,
+ 0x39, 0x39, 0x38, 0x26, 0x26, 0x26, 0x19, 0x19, 0x19, 0x16, 0x16, 0x16,
+ 0x13, 0x12, 0x12, 0x0d, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a,
+ 0x09, 0x09, 0x09, 0x06, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x01, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x01, 0x03, 0x01, 0x00,
+ 0x06, 0x03, 0x02, 0x07, 0x04, 0x03, 0x07, 0x05, 0x06, 0x09, 0x09, 0x0a,
+ 0x09, 0x0a, 0x0b, 0x0b, 0x0b, 0x0c, 0x0e, 0x0f, 0x0f, 0x11, 0x11, 0x11,
+ 0x13, 0x16, 0x14, 0x1f, 0x22, 0x1f, 0x30, 0x33, 0x2e, 0x57, 0x5a, 0x54,
+ 0x7c, 0x83, 0x77, 0x60, 0x83, 0x5d, 0x4a, 0xa6, 0x4c, 0x59, 0xe7, 0x5c,
+ 0x42, 0xe4, 0x43, 0x3b, 0xee, 0x3d, 0x30, 0xef, 0x39, 0x27, 0xe8, 0x34,
+ 0x28, 0xea, 0x37, 0x26, 0xe3, 0x36, 0x26, 0xe0, 0x33, 0x27, 0xe1, 0x33,
+ 0x26, 0xe3, 0x30, 0x26, 0xe3, 0x2f, 0x26, 0xe3, 0x2f, 0x24, 0xe3, 0x2f,
+ 0x24, 0xe0, 0x31, 0x24, 0xde, 0x32, 0x24, 0xdf, 0x32, 0x24, 0xe2, 0x31,
+ 0x24, 0xe4, 0x30, 0x24, 0xe3, 0x30, 0x24, 0xe4, 0x30, 0x24, 0xe2, 0x30,
+ 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x25, 0xe2, 0x30, 0x24, 0xe1, 0x2f,
+ 0x24, 0xe1, 0x2f, 0x24, 0xe1, 0x2f, 0x24, 0xe1, 0x2f, 0x24, 0xe1, 0x30,
+ 0x23, 0xe1, 0x2f, 0x23, 0xe1, 0x2f, 0x23, 0xe1, 0x2f, 0x24, 0xe2, 0x30,
+ 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30,
+ 0x24, 0xe2, 0x30, 0x24, 0xe2, 0x30, 0x25, 0xe2, 0x30, 0x23, 0xe1, 0x2f,
+ 0x23, 0xe1, 0x2f, 0x24, 0xe1, 0x30, 0x24, 0xe1, 0x2f, 0x25, 0xe2, 0x30,
+ 0x24, 0xe2, 0x30, 0x24, 0xe3, 0x30, 0x24, 0xe2, 0x31, 0x22, 0xe2, 0x30,
+ 0x22, 0xe2, 0x30, 0x23, 0xe0, 0x31, 0x24, 0xe1, 0x31, 0x24, 0xe2, 0x30,
+ 0x26, 0xe1, 0x30, 0x2a, 0xdf, 0x2f, 0x29, 0xde, 0x30, 0x23, 0xdf, 0x2f,
+ 0x25, 0xe2, 0x32, 0x30, 0xe5, 0x38, 0x27, 0xa2, 0x2a, 0x18, 0x3f, 0x17,
+ 0x1c, 0x22, 0x19, 0x1b, 0x1b, 0x17, 0x1a, 0x18, 0x17, 0x19, 0x18, 0x16,
+ 0x1a, 0x18, 0x17, 0x1a, 0x19, 0x18, 0x1b, 0x1a, 0x19, 0x1c, 0x1a, 0x19,
+ 0x1d, 0x1b, 0x19, 0x1e, 0x1c, 0x1a, 0x21, 0x1f, 0x1d, 0x22, 0x21, 0x1f,
+ 0x25, 0x26, 0x24, 0x26, 0x27, 0x26, 0x2e, 0x31, 0x2d, 0x3e, 0x41, 0x3e,
+ 0x5f, 0x62, 0x5d, 0x68, 0x6b, 0x65, 0x7c, 0x7f, 0x7b, 0x8c, 0x8e, 0x8c,
+ 0x69, 0x69, 0x67, 0x3d, 0x3c, 0x3b, 0x28, 0x27, 0x27, 0x1b, 0x1b, 0x1b,
+ 0x15, 0x17, 0x16, 0x11, 0x13, 0x12, 0x0c, 0x0d, 0x0c, 0x0b, 0x0b, 0x0b,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x04, 0x03, 0x03,
+ 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x00,
+ 0x03, 0x01, 0x00, 0x06, 0x03, 0x02, 0x07, 0x03, 0x03, 0x07, 0x06, 0x06,
+ 0x09, 0x09, 0x09, 0x09, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0d, 0x0e, 0x0f,
+ 0x12, 0x13, 0x14, 0x14, 0x16, 0x16, 0x1f, 0x22, 0x20, 0x33, 0x36, 0x32,
+ 0x71, 0x73, 0x6d, 0xa5, 0xac, 0xa0, 0x7f, 0xa2, 0x7d, 0x53, 0xab, 0x56,
+ 0x63, 0xe7, 0x67, 0x52, 0xe5, 0x54, 0x4b, 0xea, 0x4d, 0x42, 0xec, 0x48,
+ 0x3a, 0xe6, 0x42, 0x3a, 0xe9, 0x44, 0x36, 0xe2, 0x42, 0x36, 0xe0, 0x40,
+ 0x36, 0xe1, 0x40, 0x37, 0xe3, 0x3d, 0x36, 0xe4, 0x3c, 0x36, 0xe4, 0x3c,
+ 0x36, 0xe3, 0x3c, 0x36, 0xe1, 0x3d, 0x35, 0xdf, 0x3f, 0x35, 0xe0, 0x3f,
+ 0x35, 0xe2, 0x3e, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+ 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+ 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c,
+ 0x34, 0xe1, 0x3c, 0x34, 0xe0, 0x3b, 0x34, 0xe0, 0x3b, 0x34, 0xe0, 0x3b,
+ 0x35, 0xe2, 0x3d, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+ 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c,
+ 0x34, 0xe0, 0x3b, 0x34, 0xe0, 0x3b, 0x34, 0xe1, 0x3c, 0x34, 0xe1, 0x3c,
+ 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x35, 0xe3, 0x3c, 0x34, 0xe3, 0x3d,
+ 0x34, 0xe2, 0x3b, 0x34, 0xe2, 0x3c, 0x34, 0xe0, 0x3e, 0x37, 0xe0, 0x3e,
+ 0x37, 0xe1, 0x3c, 0x39, 0xe0, 0x3c, 0x39, 0xe0, 0x3b, 0x37, 0xdf, 0x3c,
+ 0x33, 0xe0, 0x3c, 0x38, 0xe5, 0x3f, 0x3f, 0xe5, 0x43, 0x37, 0xab, 0x37,
+ 0x26, 0x51, 0x23, 0x2a, 0x33, 0x26, 0x29, 0x2b, 0x25, 0x2a, 0x28, 0x25,
+ 0x28, 0x28, 0x24, 0x29, 0x27, 0x26, 0x29, 0x28, 0x26, 0x2b, 0x29, 0x27,
+ 0x2c, 0x2a, 0x27, 0x2e, 0x2b, 0x28, 0x2f, 0x2c, 0x29, 0x32, 0x2f, 0x2c,
+ 0x33, 0x31, 0x2e, 0x35, 0x35, 0x31, 0x37, 0x39, 0x35, 0x40, 0x43, 0x3e,
+ 0x50, 0x53, 0x4e, 0x6f, 0x71, 0x6c, 0x74, 0x76, 0x70, 0x9c, 0x9d, 0x97,
+ 0xb2, 0xb3, 0xb1, 0x82, 0x80, 0x7e, 0x40, 0x3e, 0x3d, 0x29, 0x28, 0x28,
+ 0x1c, 0x1c, 0x1c, 0x15, 0x17, 0x17, 0x11, 0x13, 0x13, 0x0c, 0x0d, 0x0d,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x08, 0x07, 0x07,
+ 0x05, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x06, 0x03, 0x01, 0x07, 0x04, 0x02,
+ 0x07, 0x08, 0x05, 0x09, 0x0a, 0x09, 0x09, 0x0b, 0x0b, 0x0a, 0x0c, 0x0b,
+ 0x0d, 0x0e, 0x0e, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x20, 0x22, 0x22,
+ 0x39, 0x39, 0x38, 0x94, 0x94, 0x90, 0xda, 0xdf, 0xd4, 0xa8, 0xc9, 0xa6,
+ 0x60, 0xb1, 0x62, 0x72, 0xe8, 0x75, 0x68, 0xe7, 0x69, 0x61, 0xe7, 0x61,
+ 0x5b, 0xe9, 0x5d, 0x53, 0xe6, 0x56, 0x52, 0xe9, 0x58, 0x4c, 0xe1, 0x54,
+ 0x4c, 0xe1, 0x53, 0x4c, 0xe2, 0x52, 0x4d, 0xe5, 0x4e, 0x4d, 0xe6, 0x4d,
+ 0x4c, 0xe6, 0x4c, 0x4d, 0xe6, 0x4c, 0x4d, 0xe4, 0x4d, 0x4a, 0xe2, 0x50,
+ 0x4a, 0xe2, 0x51, 0x4a, 0xe5, 0x4e, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+ 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+ 0x4b, 0xe5, 0x4d, 0x4a, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c,
+ 0x4a, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c, 0x49, 0xe2, 0x4c, 0x49, 0xe2, 0x4c,
+ 0x49, 0xe2, 0x4c, 0x4b, 0xe5, 0x4e, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+ 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+ 0x4b, 0xe5, 0x4d, 0x49, 0xe2, 0x4c, 0x49, 0xe2, 0x4c, 0x4a, 0xe2, 0x4c,
+ 0x4a, 0xe2, 0x4c, 0x4b, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d, 0x4a, 0xe5, 0x4d,
+ 0x4a, 0xe5, 0x4d, 0x4c, 0xe5, 0x4b, 0x4d, 0xe4, 0x4c, 0x4c, 0xe1, 0x4f,
+ 0x4e, 0xe0, 0x50, 0x50, 0xe1, 0x4d, 0x50, 0xe1, 0x4c, 0x4c, 0xe3, 0x4c,
+ 0x49, 0xe2, 0x4c, 0x49, 0xe2, 0x4c, 0x50, 0xe9, 0x51, 0x52, 0xe6, 0x53,
+ 0x4b, 0xb7, 0x49, 0x37, 0x66, 0x33, 0x3d, 0x48, 0x37, 0x3d, 0x3f, 0x36,
+ 0x3e, 0x3b, 0x37, 0x3b, 0x3b, 0x36, 0x3c, 0x3a, 0x38, 0x3c, 0x3b, 0x38,
+ 0x3e, 0x3d, 0x39, 0x40, 0x3d, 0x39, 0x42, 0x3e, 0x3a, 0x44, 0x40, 0x3b,
+ 0x47, 0x43, 0x3f, 0x49, 0x45, 0x40, 0x4a, 0x49, 0x43, 0x4e, 0x4e, 0x48,
+ 0x56, 0x59, 0x52, 0x67, 0x68, 0x62, 0x84, 0x84, 0x7e, 0x84, 0x84, 0x7e,
+ 0xc4, 0xc2, 0xbc, 0xe3, 0xe1, 0xe0, 0xa3, 0x9f, 0x9c, 0x46, 0x42, 0x41,
+ 0x2b, 0x29, 0x29, 0x1d, 0x1d, 0x1d, 0x14, 0x18, 0x17, 0x0f, 0x13, 0x13,
+ 0x0b, 0x0f, 0x0d, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+ 0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01, 0x02, 0x03, 0x01,
+ 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x03, 0x01, 0x01, 0x06, 0x03, 0x01,
+ 0x07, 0x04, 0x02, 0x07, 0x08, 0x05, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x0b,
+ 0x0b, 0x0c, 0x0b, 0x0c, 0x0e, 0x0e, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+ 0x22, 0x23, 0x23, 0x41, 0x41, 0x40, 0xaa, 0xaa, 0xa6, 0xe9, 0xed, 0xe4,
+ 0xb5, 0xd6, 0xb2, 0x69, 0xb9, 0x6a, 0x7a, 0xeb, 0x7d, 0x71, 0xee, 0x72,
+ 0x6b, 0xee, 0x69, 0x65, 0xf0, 0x65, 0x5e, 0xee, 0x5f, 0x5d, 0xf0, 0x61,
+ 0x57, 0xeb, 0x5d, 0x58, 0xeb, 0x5d, 0x58, 0xec, 0x5c, 0x59, 0xee, 0x58,
+ 0x58, 0xee, 0x57, 0x58, 0xee, 0x56, 0x59, 0xee, 0x56, 0x59, 0xee, 0x57,
+ 0x56, 0xec, 0x5a, 0x56, 0xec, 0x5a, 0x56, 0xee, 0x58, 0x56, 0xee, 0x57,
+ 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+ 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56,
+ 0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56,
+ 0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+ 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+ 0x56, 0xee, 0x57, 0x56, 0xee, 0x57, 0x55, 0xec, 0x56, 0x55, 0xec, 0x56,
+ 0x55, 0xec, 0x56, 0x55, 0xec, 0x56, 0x56, 0xee, 0x57, 0x56, 0xee, 0x57,
+ 0x56, 0xee, 0x57, 0x56, 0xee, 0x56, 0x56, 0xee, 0x54, 0x57, 0xee, 0x55,
+ 0x56, 0xeb, 0x58, 0x58, 0xea, 0x59, 0x5b, 0xeb, 0x57, 0x5b, 0xeb, 0x56,
+ 0x57, 0xec, 0x56, 0x54, 0xec, 0x56, 0x52, 0xeb, 0x55, 0x59, 0xf1, 0x5a,
+ 0x5a, 0xec, 0x5a, 0x52, 0xbe, 0x50, 0x3d, 0x6c, 0x39, 0x41, 0x4e, 0x3c,
+ 0x41, 0x44, 0x3b, 0x42, 0x40, 0x3c, 0x3f, 0x40, 0x3b, 0x41, 0x3f, 0x3d,
+ 0x42, 0x41, 0x3d, 0x44, 0x42, 0x3f, 0x46, 0x42, 0x3f, 0x48, 0x43, 0x40,
+ 0x49, 0x45, 0x41, 0x4c, 0x48, 0x44, 0x4f, 0x4a, 0x45, 0x50, 0x4f, 0x49,
+ 0x54, 0x54, 0x4d, 0x5b, 0x5e, 0x57, 0x6b, 0x6d, 0x66, 0x88, 0x88, 0x82,
+ 0x8a, 0x89, 0x83, 0xcd, 0xca, 0xc5, 0xef, 0xed, 0xec, 0xb7, 0xb1, 0xae,
+ 0x4e, 0x4a, 0x49, 0x2c, 0x2a, 0x29, 0x1c, 0x1c, 0x1c, 0x14, 0x16, 0x16,
+ 0x0f, 0x12, 0x12, 0x0d, 0x0f, 0x0e, 0x0b, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01,
+ 0x02, 0x03, 0x01, 0x00, 0x02, 0x00, 0x03, 0x01, 0x01, 0x04, 0x02, 0x02,
+ 0x06, 0x02, 0x01, 0x07, 0x04, 0x02, 0x07, 0x08, 0x06, 0x0a, 0x0a, 0x09,
+ 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0b, 0x0d, 0x0d, 0x0e, 0x12, 0x11, 0x12,
+ 0x17, 0x16, 0x17, 0x24, 0x24, 0x24, 0x4b, 0x4a, 0x49, 0xbc, 0xbc, 0xb7,
+ 0xee, 0xf2, 0xea, 0xbc, 0xdc, 0xb6, 0x70, 0xc0, 0x70, 0x81, 0xef, 0x82,
+ 0x78, 0xf7, 0x76, 0x72, 0xf8, 0x6f, 0x6c, 0xf9, 0x6a, 0x65, 0xf7, 0x64,
+ 0x66, 0xf8, 0x67, 0x61, 0xf5, 0x63, 0x62, 0xf7, 0x64, 0x62, 0xf7, 0x63,
+ 0x62, 0xf8, 0x5f, 0x61, 0xf8, 0x5e, 0x61, 0xf8, 0x5d, 0x61, 0xf8, 0x5d,
+ 0x61, 0xf8, 0x5f, 0x5f, 0xf7, 0x61, 0x5f, 0xf7, 0x61, 0x5e, 0xf8, 0x5f,
+ 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e,
+ 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5f, 0xf8, 0x5e, 0x5e, 0xf7, 0x5e,
+ 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e,
+ 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5f, 0xf8, 0x5e,
+ 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e,
+ 0x5e, 0xf8, 0x5e, 0x5e, 0xf8, 0x5e, 0x5f, 0xf8, 0x5e, 0x5e, 0xf7, 0x5e,
+ 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5e, 0xf7, 0x5e, 0x5f, 0xf8, 0x5e,
+ 0x5f, 0xf8, 0x5f, 0x5f, 0xf8, 0x5f, 0x5f, 0xf8, 0x5f, 0x5d, 0xf8, 0x5b,
+ 0x5e, 0xf8, 0x5c, 0x5d, 0xf7, 0x5f, 0x5f, 0xf7, 0x60, 0x62, 0xf7, 0x5f,
+ 0x62, 0xf7, 0x5e, 0x5f, 0xf8, 0x5e, 0x5c, 0xf7, 0x5e, 0x59, 0xf6, 0x5b,
+ 0x5f, 0xf9, 0x5f, 0x60, 0xf3, 0x5f, 0x56, 0xc4, 0x54, 0x40, 0x6f, 0x3c,
+ 0x42, 0x4f, 0x3e, 0x42, 0x45, 0x3c, 0x42, 0x42, 0x3d, 0x41, 0x41, 0x3d,
+ 0x42, 0x41, 0x3e, 0x44, 0x42, 0x3f, 0x47, 0x44, 0x41, 0x48, 0x45, 0x41,
+ 0x49, 0x44, 0x42, 0x4b, 0x46, 0x43, 0x4d, 0x4a, 0x45, 0x50, 0x4c, 0x47,
+ 0x51, 0x50, 0x4b, 0x55, 0x55, 0x4e, 0x5c, 0x5f, 0x58, 0x6b, 0x6d, 0x67,
+ 0x89, 0x89, 0x82, 0x8d, 0x8b, 0x86, 0xce, 0xcb, 0xc6, 0xf2, 0xf1, 0xef,
+ 0xc6, 0xc1, 0xbe, 0x58, 0x53, 0x52, 0x2d, 0x2b, 0x2a, 0x1c, 0x1a, 0x1a,
+ 0x13, 0x14, 0x15, 0x0f, 0x11, 0x11, 0x0e, 0x10, 0x0f, 0x0d, 0x0f, 0x0f,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x06, 0x03, 0x04,
+ 0x02, 0x02, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x03, 0x01, 0x01,
+ 0x04, 0x02, 0x02, 0x05, 0x03, 0x01, 0x07, 0x04, 0x03, 0x07, 0x08, 0x06,
+ 0x0a, 0x0a, 0x09, 0x0b, 0x0b, 0x0b, 0x0c, 0x0c, 0x0b, 0x0e, 0x0d, 0x0e,
+ 0x11, 0x10, 0x11, 0x17, 0x16, 0x17, 0x24, 0x23, 0x23, 0x52, 0x50, 0x4f,
+ 0xce, 0xce, 0xc7, 0xf1, 0xf5, 0xee, 0xbc, 0xdb, 0xb5, 0x75, 0xc4, 0x72,
+ 0x85, 0xf2, 0x85, 0x7d, 0xfc, 0x79, 0x78, 0xfe, 0x72, 0x72, 0xff, 0x6d,
+ 0x6c, 0xfe, 0x68, 0x6c, 0xff, 0x6b, 0x69, 0xfe, 0x68, 0x6a, 0xff, 0x68,
+ 0x6a, 0xff, 0x68, 0x69, 0xff, 0x64, 0x69, 0xff, 0x63, 0x69, 0xff, 0x62,
+ 0x68, 0xff, 0x62, 0x68, 0xff, 0x63, 0x66, 0xff, 0x66, 0x66, 0xff, 0x66,
+ 0x66, 0xff, 0x64, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+ 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+ 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63,
+ 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63,
+ 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+ 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63, 0x66, 0xff, 0x63,
+ 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x65, 0xff, 0x63, 0x66, 0xff, 0x63,
+ 0x66, 0xff, 0x63, 0x67, 0xff, 0x64, 0x67, 0xff, 0x64, 0x66, 0xff, 0x64,
+ 0x63, 0xff, 0x60, 0x63, 0xff, 0x61, 0x63, 0xff, 0x64, 0x65, 0xff, 0x65,
+ 0x68, 0xff, 0x64, 0x67, 0xff, 0x62, 0x64, 0xff, 0x63, 0x62, 0xff, 0x63,
+ 0x5e, 0xfe, 0x60, 0x62, 0xff, 0x63, 0x63, 0xf8, 0x63, 0x58, 0xc7, 0x56,
+ 0x3f, 0x6f, 0x3c, 0x41, 0x4d, 0x3d, 0x41, 0x45, 0x3b, 0x41, 0x41, 0x3c,
+ 0x40, 0x40, 0x3c, 0x42, 0x41, 0x3e, 0x43, 0x42, 0x3f, 0x46, 0x44, 0x41,
+ 0x47, 0x44, 0x41, 0x48, 0x43, 0x42, 0x4a, 0x45, 0x43, 0x4c, 0x49, 0x45,
+ 0x4f, 0x4b, 0x47, 0x4f, 0x4f, 0x4b, 0x53, 0x54, 0x4d, 0x5a, 0x5c, 0x56,
+ 0x68, 0x6a, 0x64, 0x85, 0x86, 0x7f, 0x8c, 0x89, 0x84, 0xcc, 0xc9, 0xc4,
+ 0xf4, 0xf3, 0xf1, 0xd3, 0xcd, 0xca, 0x5f, 0x5a, 0x59, 0x2d, 0x2b, 0x2a,
+ 0x1c, 0x1b, 0x1a, 0x14, 0x15, 0x15, 0x10, 0x11, 0x11, 0x0e, 0x0f, 0x0f,
+ 0x0e, 0x0f, 0x0f, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07,
+ 0x06, 0x03, 0x04, 0x02, 0x02, 0x01, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00,
+ 0x03, 0x00, 0x00, 0x04, 0x01, 0x02, 0x04, 0x03, 0x01, 0x06, 0x06, 0x03,
+ 0x07, 0x07, 0x05, 0x09, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x0b, 0x0c, 0x0b,
+ 0x0f, 0x0d, 0x0e, 0x11, 0x10, 0x11, 0x18, 0x15, 0x16, 0x22, 0x20, 0x1f,
+ 0x53, 0x50, 0x4d, 0xd6, 0xd5, 0xce, 0xf2, 0xf5, 0xed, 0xb5, 0xd3, 0xad,
+ 0x75, 0xc3, 0x70, 0x85, 0xf2, 0x82, 0x7e, 0xfc, 0x77, 0x78, 0xfe, 0x71,
+ 0x73, 0xff, 0x6d, 0x6e, 0xfe, 0x68, 0x6e, 0xff, 0x6c, 0x6a, 0xfe, 0x68,
+ 0x6b, 0xff, 0x68, 0x6a, 0xff, 0x67, 0x6b, 0xff, 0x65, 0x6b, 0xff, 0x62,
+ 0x6b, 0xff, 0x61, 0x69, 0xff, 0x61, 0x69, 0xff, 0x62, 0x67, 0xff, 0x65,
+ 0x67, 0xff, 0x66, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+ 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+ 0x68, 0xff, 0x64, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63,
+ 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63,
+ 0x67, 0xff, 0x63, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+ 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x68, 0xff, 0x64,
+ 0x68, 0xff, 0x64, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63, 0x67, 0xff, 0x63,
+ 0x68, 0xff, 0x64, 0x68, 0xff, 0x64, 0x69, 0xff, 0x64, 0x69, 0xff, 0x64,
+ 0x68, 0xff, 0x63, 0x65, 0xff, 0x60, 0x65, 0xff, 0x61, 0x64, 0xff, 0x64,
+ 0x65, 0xff, 0x65, 0x67, 0xff, 0x63, 0x66, 0xff, 0x62, 0x63, 0xff, 0x63,
+ 0x61, 0xff, 0x62, 0x5d, 0xfe, 0x60, 0x62, 0xff, 0x63, 0x62, 0xf8, 0x63,
+ 0x57, 0xc6, 0x55, 0x3c, 0x6c, 0x39, 0x3e, 0x4a, 0x3a, 0x3d, 0x42, 0x38,
+ 0x3e, 0x3f, 0x3a, 0x3d, 0x3d, 0x3a, 0x3f, 0x3e, 0x3b, 0x40, 0x3f, 0x3c,
+ 0x43, 0x41, 0x3d, 0x44, 0x41, 0x3d, 0x45, 0x40, 0x3e, 0x47, 0x42, 0x40,
+ 0x48, 0x46, 0x42, 0x4b, 0x48, 0x44, 0x4b, 0x4d, 0x47, 0x4f, 0x51, 0x4b,
+ 0x56, 0x58, 0x52, 0x63, 0x65, 0x5e, 0x80, 0x80, 0x79, 0x88, 0x85, 0x7f,
+ 0xc9, 0xc6, 0xbf, 0xf4, 0xf3, 0xf1, 0xd5, 0xcf, 0xcd, 0x5f, 0x5b, 0x59,
+ 0x2d, 0x2b, 0x2a, 0x1e, 0x1d, 0x1c, 0x16, 0x17, 0x17, 0x10, 0x12, 0x12,
+ 0x0d, 0x0e, 0x0e, 0x0c, 0x0d, 0x0d, 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x09,
+ 0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01, 0x01, 0x02, 0x00,
+ 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x04, 0x01, 0x02, 0x03, 0x04, 0x02,
+ 0x05, 0x07, 0x04, 0x07, 0x07, 0x05, 0x09, 0x09, 0x08, 0x09, 0x0a, 0x09,
+ 0x0b, 0x0c, 0x0b, 0x0f, 0x0e, 0x0e, 0x12, 0x0f, 0x10, 0x19, 0x15, 0x16,
+ 0x20, 0x1d, 0x1c, 0x55, 0x50, 0x4c, 0xdd, 0xda, 0xd2, 0xf2, 0xf4, 0xeb,
+ 0xaf, 0xcb, 0xa5, 0x74, 0xc2, 0x6e, 0x84, 0xf2, 0x80, 0x7e, 0xfb, 0x76,
+ 0x78, 0xfe, 0x71, 0x74, 0xff, 0x6c, 0x6f, 0xfe, 0x68, 0x6f, 0xff, 0x6b,
+ 0x6b, 0xfe, 0x68, 0x6b, 0xfe, 0x68, 0x6b, 0xfe, 0x66, 0x6c, 0xff, 0x64,
+ 0x6c, 0xff, 0x62, 0x6b, 0xff, 0x61, 0x69, 0xff, 0x60, 0x69, 0xff, 0x61,
+ 0x67, 0xfe, 0x64, 0x67, 0xfe, 0x65, 0x6a, 0xfe, 0x63, 0x6a, 0xff, 0x63,
+ 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+ 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62,
+ 0x68, 0xff, 0x62, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62,
+ 0x68, 0xff, 0x62, 0x68, 0xff, 0x62, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+ 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+ 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x68, 0xff, 0x62, 0x68, 0xff, 0x62,
+ 0x68, 0xff, 0x62, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63, 0x6a, 0xff, 0x63,
+ 0x6a, 0xff, 0x63, 0x69, 0xff, 0x62, 0x66, 0xff, 0x60, 0x65, 0xff, 0x60,
+ 0x64, 0xfe, 0x63, 0x65, 0xfe, 0x64, 0x67, 0xff, 0x62, 0x66, 0xff, 0x61,
+ 0x63, 0xff, 0x62, 0x61, 0xff, 0x62, 0x5e, 0xff, 0x60, 0x62, 0xff, 0x63,
+ 0x61, 0xf8, 0x63, 0x55, 0xc6, 0x54, 0x39, 0x6a, 0x36, 0x3b, 0x46, 0x37,
+ 0x3a, 0x3f, 0x36, 0x3c, 0x3c, 0x37, 0x3a, 0x3b, 0x37, 0x3c, 0x3c, 0x39,
+ 0x3e, 0x3d, 0x3a, 0x40, 0x3e, 0x39, 0x41, 0x3e, 0x39, 0x42, 0x3d, 0x3a,
+ 0x44, 0x3f, 0x3e, 0x45, 0x43, 0x40, 0x47, 0x45, 0x42, 0x48, 0x4a, 0x43,
+ 0x4b, 0x4e, 0x47, 0x52, 0x54, 0x4e, 0x5f, 0x60, 0x59, 0x7a, 0x7a, 0x74,
+ 0x83, 0x7f, 0x7a, 0xc5, 0xc2, 0xba, 0xf4, 0xf2, 0xf0, 0xd7, 0xd0, 0xcf,
+ 0x60, 0x5b, 0x5a, 0x2c, 0x2a, 0x2a, 0x1f, 0x1d, 0x1d, 0x18, 0x19, 0x19,
+ 0x10, 0x12, 0x12, 0x0c, 0x0d, 0x0d, 0x0b, 0x0c, 0x0c, 0x09, 0x0a, 0x0a,
+ 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x06, 0x04, 0x04, 0x02, 0x03, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x01, 0x01, 0x03, 0x01, 0x02,
+ 0x03, 0x04, 0x01, 0x05, 0x07, 0x03, 0x06, 0x07, 0x05, 0x09, 0x09, 0x08,
+ 0x09, 0x0a, 0x09, 0x0b, 0x0c, 0x0b, 0x0f, 0x0d, 0x0e, 0x11, 0x0f, 0x10,
+ 0x18, 0x15, 0x16, 0x1e, 0x1b, 0x1b, 0x54, 0x4e, 0x4b, 0xdd, 0xd9, 0xd0,
+ 0xf0, 0xef, 0xe5, 0xaa, 0xc5, 0x9e, 0x72, 0xc3, 0x6c, 0x81, 0xf2, 0x7c,
+ 0x7b, 0xf9, 0x73, 0x76, 0xfd, 0x6e, 0x72, 0xfe, 0x69, 0x6c, 0xfd, 0x65,
+ 0x6c, 0xfe, 0x69, 0x68, 0xfc, 0x66, 0x69, 0xfb, 0x65, 0x68, 0xfc, 0x63,
+ 0x69, 0xfc, 0x60, 0x69, 0xfd, 0x5f, 0x69, 0xfd, 0x5e, 0x67, 0xfe, 0x5d,
+ 0x67, 0xfd, 0x5f, 0x65, 0xfc, 0x62, 0x65, 0xfc, 0x63, 0x66, 0xfc, 0x60,
+ 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60,
+ 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x65, 0xfc, 0x5f,
+ 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f,
+ 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x67, 0xfc, 0x60,
+ 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60,
+ 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x65, 0xfc, 0x5f,
+ 0x65, 0xfc, 0x5f, 0x65, 0xfc, 0x5f, 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60,
+ 0x67, 0xfc, 0x60, 0x67, 0xfc, 0x60, 0x66, 0xfc, 0x5f, 0x64, 0xfd, 0x5d,
+ 0x63, 0xfd, 0x5e, 0x62, 0xfc, 0x61, 0x63, 0xfb, 0x62, 0x64, 0xfc, 0x5f,
+ 0x63, 0xfc, 0x5e, 0x60, 0xfc, 0x5f, 0x5f, 0xfd, 0x5f, 0x5c, 0xfe, 0x5f,
+ 0x60, 0xfd, 0x61, 0x60, 0xf8, 0x62, 0x55, 0xc6, 0x54, 0x38, 0x69, 0x35,
+ 0x38, 0x44, 0x35, 0x38, 0x3e, 0x35, 0x3a, 0x3b, 0x36, 0x38, 0x39, 0x35,
+ 0x3a, 0x3a, 0x36, 0x3b, 0x3b, 0x37, 0x3d, 0x3c, 0x37, 0x3e, 0x3c, 0x37,
+ 0x3f, 0x3b, 0x38, 0x42, 0x3d, 0x3b, 0x43, 0x40, 0x3d, 0x45, 0x42, 0x3f,
+ 0x45, 0x47, 0x42, 0x48, 0x4b, 0x46, 0x4f, 0x51, 0x4c, 0x5b, 0x5c, 0x56,
+ 0x77, 0x76, 0x6f, 0x7f, 0x7c, 0x75, 0xbf, 0xbc, 0xb4, 0xf3, 0xef, 0xec,
+ 0xd5, 0xce, 0xcc, 0x5e, 0x59, 0x57, 0x2a, 0x28, 0x27, 0x1e, 0x1d, 0x1c,
+ 0x18, 0x18, 0x19, 0x10, 0x12, 0x12, 0x0c, 0x0e, 0x0e, 0x0b, 0x0c, 0x0d,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x09, 0x0a, 0x09, 0x07, 0x07, 0x06, 0x03, 0x03,
+ 0x02, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x03, 0x04, 0x01, 0x04, 0x06, 0x03, 0x07, 0x08, 0x06,
+ 0x09, 0x0a, 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0c, 0x0c, 0x0e, 0x0c, 0x0d,
+ 0x11, 0x0e, 0x0f, 0x18, 0x14, 0x15, 0x1d, 0x1a, 0x19, 0x52, 0x4c, 0x49,
+ 0xdc, 0xd6, 0xcd, 0xee, 0xe9, 0xdd, 0xa5, 0xbf, 0x97, 0x70, 0xc2, 0x6a,
+ 0x7d, 0xf2, 0x78, 0x77, 0xf8, 0x6f, 0x73, 0xfc, 0x6b, 0x6e, 0xfc, 0x66,
+ 0x68, 0xfa, 0x63, 0x68, 0xfd, 0x65, 0x65, 0xfa, 0x63, 0x65, 0xf7, 0x62,
+ 0x65, 0xf8, 0x60, 0x64, 0xf9, 0x5c, 0x65, 0xfb, 0x5a, 0x65, 0xfb, 0x5a,
+ 0x64, 0xfc, 0x5b, 0x64, 0xfb, 0x5b, 0x62, 0xf8, 0x5e, 0x62, 0xf8, 0x5f,
+ 0x61, 0xf8, 0x5c, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b, 0x62, 0xf9, 0x5b,
+ 0x60, 0xfb, 0x59, 0x60, 0xfb, 0x5a, 0x5f, 0xf8, 0x5d, 0x61, 0xf8, 0x5e,
+ 0x60, 0xfa, 0x5b, 0x60, 0xf9, 0x5a, 0x5d, 0xfa, 0x5b, 0x5b, 0xfb, 0x5b,
+ 0x5b, 0xfc, 0x5c, 0x5e, 0xfc, 0x5f, 0x5f, 0xf7, 0x60, 0x54, 0xc6, 0x54,
+ 0x37, 0x67, 0x35, 0x36, 0x42, 0x33, 0x35, 0x3c, 0x33, 0x38, 0x39, 0x34,
+ 0x36, 0x37, 0x33, 0x38, 0x38, 0x34, 0x39, 0x39, 0x35, 0x3b, 0x3a, 0x35,
+ 0x3c, 0x3a, 0x35, 0x3d, 0x39, 0x36, 0x40, 0x3b, 0x39, 0x41, 0x3e, 0x3b,
+ 0x42, 0x40, 0x3c, 0x43, 0x43, 0x40, 0x46, 0x48, 0x44, 0x4d, 0x4f, 0x4a,
+ 0x59, 0x59, 0x53, 0x73, 0x72, 0x6a, 0x7b, 0x78, 0x70, 0xba, 0xb7, 0xaf,
+ 0xf1, 0xec, 0xe7, 0xd4, 0xcc, 0xc7, 0x5d, 0x56, 0x54, 0x29, 0x25, 0x24,
+ 0x1c, 0x1b, 0x1b, 0x17, 0x17, 0x17, 0x10, 0x11, 0x12, 0x0d, 0x0f, 0x0e,
+ 0x0c, 0x0e, 0x0e, 0x0a, 0x0a, 0x0b, 0x09, 0x09, 0x0a, 0x09, 0x07, 0x07,
+ 0x06, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00,
+ 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x03, 0x04, 0x02, 0x04, 0x05, 0x03,
+ 0x07, 0x08, 0x06, 0x09, 0x09, 0x07, 0x09, 0x09, 0x0a, 0x0c, 0x0b, 0x0c,
+ 0x0d, 0x0b, 0x0c, 0x11, 0x0e, 0x0f, 0x17, 0x13, 0x14, 0x1c, 0x19, 0x17,
+ 0x51, 0x4b, 0x46, 0xd7, 0xcf, 0xc5, 0xe7, 0xe1, 0xd2, 0x9d, 0xb8, 0x8e,
+ 0x6c, 0xc2, 0x66, 0x76, 0xf1, 0x73, 0x71, 0xf5, 0x6a, 0x6e, 0xfa, 0x67,
+ 0x69, 0xfa, 0x61, 0x64, 0xf8, 0x5e, 0x62, 0xfb, 0x61, 0x60, 0xf7, 0x5f,
+ 0x61, 0xf4, 0x5e, 0x61, 0xf5, 0x5c, 0x5f, 0xf7, 0x58, 0x60, 0xf8, 0x57,
+ 0x60, 0xf9, 0x57, 0x5f, 0xfa, 0x57, 0x5f, 0xf9, 0x58, 0x5d, 0xf6, 0x5a,
+ 0x5d, 0xf5, 0x5b, 0x5c, 0xf5, 0x59, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x57,
+ 0x5c, 0xf6, 0x57, 0x5c, 0xf6, 0x57, 0x5c, 0xf6, 0x57, 0x5c, 0xf6, 0x57,
+ 0x5c, 0xf6, 0x57, 0x5c, 0xf9, 0x56, 0x5c, 0xf8, 0x57, 0x5c, 0xf5, 0x5a,
+ 0x5e, 0xf5, 0x5a, 0x5d, 0xf6, 0x57, 0x5d, 0xf6, 0x56, 0x5a, 0xf7, 0x57,
+ 0x58, 0xf9, 0x57, 0x58, 0xfa, 0x58, 0x5a, 0xfa, 0x5b, 0x5d, 0xf7, 0x5e,
+ 0x53, 0xc7, 0x54, 0x36, 0x67, 0x34, 0x33, 0x41, 0x32, 0x33, 0x3b, 0x32,
+ 0x35, 0x38, 0x32, 0x35, 0x36, 0x32, 0x37, 0x36, 0x32, 0x38, 0x37, 0x33,
+ 0x39, 0x38, 0x34, 0x3a, 0x38, 0x34, 0x3b, 0x37, 0x35, 0x3d, 0x39, 0x37,
+ 0x3e, 0x3b, 0x39, 0x3f, 0x3d, 0x3a, 0x40, 0x40, 0x3e, 0x44, 0x45, 0x42,
+ 0x4b, 0x4c, 0x47, 0x57, 0x56, 0x51, 0x6f, 0x6e, 0x67, 0x76, 0x73, 0x6b,
+ 0xb1, 0xad, 0xa5, 0xeb, 0xe4, 0xdd, 0xcf, 0xc7, 0xc0, 0x5a, 0x54, 0x51,
+ 0x26, 0x23, 0x22, 0x1b, 0x1a, 0x19, 0x17, 0x16, 0x16, 0x12, 0x12, 0x12,
+ 0x0f, 0x10, 0x0f, 0x0e, 0x0f, 0x0f, 0x0b, 0x0a, 0x0c, 0x09, 0x09, 0x0a,
+ 0x09, 0x07, 0x07, 0x06, 0x03, 0x03, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01,
+ 0x00, 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x03, 0x03, 0x02,
+ 0x04, 0x04, 0x03, 0x06, 0x07, 0x06, 0x08, 0x08, 0x08, 0x0a, 0x0a, 0x0a,
+ 0x0b, 0x0a, 0x0c, 0x0c, 0x0a, 0x0c, 0x12, 0x0e, 0x10, 0x16, 0x12, 0x12,
+ 0x1c, 0x18, 0x16, 0x50, 0x4a, 0x45, 0xcf, 0xc8, 0xbd, 0xe0, 0xdb, 0xcb,
+ 0x98, 0xb5, 0x88, 0x69, 0xc2, 0x63, 0x70, 0xf1, 0x6e, 0x6c, 0xf4, 0x67,
+ 0x69, 0xf9, 0x63, 0x65, 0xf9, 0x5f, 0x60, 0xf7, 0x5c, 0x5e, 0xf8, 0x5d,
+ 0x5c, 0xf5, 0x5c, 0x5e, 0xf4, 0x5b, 0x5d, 0xf4, 0x5a, 0x5d, 0xf5, 0x56,
+ 0x5c, 0xf5, 0x55, 0x5c, 0xf6, 0x55, 0x5b, 0xf7, 0x55, 0x5b, 0xf7, 0x55,
+ 0x59, 0xf4, 0x58, 0x59, 0xf4, 0x58, 0x58, 0xf4, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56, 0x59, 0xf5, 0x56,
+ 0x59, 0xf5, 0x56, 0x58, 0xf3, 0x55, 0x58, 0xf4, 0x55, 0x58, 0xf4, 0x55,
+ 0x58, 0xf4, 0x55, 0x58, 0xf4, 0x55, 0x5a, 0xf7, 0x54, 0x5a, 0xf7, 0x55,
+ 0x5a, 0xf4, 0x58, 0x5c, 0xf3, 0x58, 0x5b, 0xf5, 0x56, 0x5b, 0xf5, 0x55,
+ 0x57, 0xf6, 0x55, 0x55, 0xf7, 0x55, 0x54, 0xf7, 0x55, 0x57, 0xf8, 0x57,
+ 0x5b, 0xf7, 0x5b, 0x53, 0xc9, 0x53, 0x36, 0x67, 0x34, 0x33, 0x41, 0x31,
+ 0x33, 0x3b, 0x31, 0x34, 0x37, 0x31, 0x33, 0x35, 0x31, 0x34, 0x35, 0x31,
+ 0x37, 0x36, 0x32, 0x38, 0x37, 0x33, 0x39, 0x37, 0x34, 0x3a, 0x36, 0x35,
+ 0x3c, 0x38, 0x37, 0x3c, 0x3a, 0x39, 0x3e, 0x3c, 0x3a, 0x3f, 0x3f, 0x3c,
+ 0x43, 0x44, 0x41, 0x4a, 0x4b, 0x46, 0x56, 0x55, 0x50, 0x6d, 0x6c, 0x65,
+ 0x73, 0x70, 0x68, 0xaa, 0xa5, 0x9c, 0xe4, 0xdc, 0xd4, 0xca, 0xc0, 0xbb,
+ 0x59, 0x52, 0x4f, 0x25, 0x22, 0x21, 0x1b, 0x19, 0x18, 0x16, 0x16, 0x15,
+ 0x13, 0x14, 0x14, 0x11, 0x11, 0x11, 0x0d, 0x0f, 0x0e, 0x0c, 0x0b, 0x0b,
+ 0x0a, 0x0a, 0x09, 0x09, 0x07, 0x07, 0x06, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01,
+ 0x03, 0x02, 0x03, 0x04, 0x03, 0x04, 0x06, 0x06, 0x06, 0x08, 0x07, 0x08,
+ 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0c, 0x0c, 0x09, 0x0c, 0x13, 0x0e, 0x11,
+ 0x14, 0x12, 0x10, 0x1b, 0x17, 0x15, 0x4f, 0x49, 0x43, 0xc7, 0xc0, 0xb4,
+ 0xd8, 0xd4, 0xc2, 0x92, 0xb0, 0x81, 0x66, 0xc3, 0x61, 0x6a, 0xf0, 0x69,
+ 0x67, 0xf4, 0x63, 0x64, 0xf9, 0x60, 0x60, 0xf8, 0x5c, 0x5c, 0xf5, 0x59,
+ 0x5b, 0xf6, 0x5a, 0x59, 0xf3, 0x59, 0x5a, 0xf3, 0x59, 0x5a, 0xf2, 0x57,
+ 0x5a, 0xf4, 0x54, 0x59, 0xf3, 0x53, 0x58, 0xf3, 0x53, 0x57, 0xf5, 0x52,
+ 0x56, 0xf5, 0x53, 0x55, 0xf3, 0x55, 0x55, 0xf2, 0x56, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54,
+ 0x55, 0xf3, 0x54, 0x55, 0xf3, 0x54, 0x53, 0xf1, 0x53, 0x54, 0xf2, 0x53,
+ 0x54, 0xf2, 0x53, 0x54, 0xf2, 0x53, 0x54, 0xf2, 0x53, 0x56, 0xf5, 0x52,
+ 0x57, 0xf5, 0x53, 0x57, 0xf2, 0x56, 0x59, 0xf1, 0x56, 0x59, 0xf3, 0x54,
+ 0x59, 0xf3, 0x53, 0x55, 0xf5, 0x53, 0x53, 0xf5, 0x53, 0x51, 0xf5, 0x52,
+ 0x53, 0xf6, 0x54, 0x59, 0xf7, 0x59, 0x52, 0xc9, 0x52, 0x36, 0x67, 0x35,
+ 0x32, 0x41, 0x31, 0x32, 0x3b, 0x30, 0x33, 0x36, 0x31, 0x33, 0x34, 0x31,
+ 0x33, 0x34, 0x31, 0x36, 0x35, 0x32, 0x37, 0x36, 0x33, 0x38, 0x36, 0x34,
+ 0x39, 0x36, 0x35, 0x3b, 0x38, 0x37, 0x3b, 0x39, 0x39, 0x3d, 0x3b, 0x3a,
+ 0x3e, 0x3e, 0x3a, 0x42, 0x43, 0x40, 0x49, 0x4a, 0x45, 0x54, 0x54, 0x4f,
+ 0x6b, 0x6b, 0x63, 0x70, 0x6d, 0x64, 0xa2, 0x9d, 0x93, 0xdc, 0xd2, 0xca,
+ 0xc4, 0xb9, 0xb5, 0x57, 0x4f, 0x4d, 0x24, 0x20, 0x1f, 0x1b, 0x19, 0x18,
+ 0x16, 0x16, 0x15, 0x15, 0x16, 0x15, 0x13, 0x13, 0x12, 0x0e, 0x0e, 0x0e,
+ 0x0d, 0x0b, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x07, 0x07, 0x06, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x05, 0x05,
+ 0x06, 0x07, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x09, 0x0b, 0x0d, 0x0b, 0x0d,
+ 0x12, 0x0e, 0x10, 0x12, 0x0f, 0x0f, 0x1a, 0x17, 0x14, 0x4d, 0x49, 0x41,
+ 0xbc, 0xb8, 0xaa, 0xce, 0xcb, 0xb7, 0x89, 0xa9, 0x78, 0x61, 0xc1, 0x5c,
+ 0x64, 0xed, 0x64, 0x61, 0xf1, 0x5f, 0x60, 0xf7, 0x5c, 0x5b, 0xf6, 0x58,
+ 0x57, 0xf2, 0x55, 0x56, 0xf3, 0x56, 0x55, 0xf0, 0x55, 0x56, 0xef, 0x56,
+ 0x55, 0xef, 0x54, 0x55, 0xf1, 0x51, 0x55, 0xf1, 0x50, 0x54, 0xf1, 0x50,
+ 0x53, 0xf2, 0x4f, 0x52, 0xf2, 0x50, 0x51, 0xf0, 0x52, 0x51, 0xef, 0x52,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x4f, 0xef, 0x50,
+ 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50, 0x50, 0xf0, 0x50,
+ 0x52, 0xf2, 0x4e, 0x52, 0xf1, 0x4f, 0x52, 0xee, 0x52, 0x55, 0xee, 0x52,
+ 0x55, 0xf0, 0x50, 0x55, 0xf0, 0x4f, 0x51, 0xf1, 0x4f, 0x4f, 0xf1, 0x4f,
+ 0x4d, 0xf1, 0x4e, 0x4f, 0xf2, 0x50, 0x55, 0xf5, 0x56, 0x50, 0xc8, 0x50,
+ 0x33, 0x65, 0x33, 0x2f, 0x3f, 0x2f, 0x2f, 0x39, 0x2e, 0x30, 0x34, 0x2e,
+ 0x30, 0x32, 0x2e, 0x31, 0x32, 0x30, 0x34, 0x33, 0x30, 0x35, 0x34, 0x31,
+ 0x36, 0x34, 0x32, 0x37, 0x34, 0x33, 0x39, 0x35, 0x35, 0x39, 0x37, 0x36,
+ 0x3a, 0x39, 0x37, 0x3a, 0x3b, 0x37, 0x3e, 0x40, 0x3d, 0x46, 0x47, 0x42,
+ 0x51, 0x51, 0x4c, 0x68, 0x67, 0x5f, 0x6b, 0x67, 0x5f, 0x98, 0x93, 0x88,
+ 0xd1, 0xc7, 0xbe, 0xbb, 0xb1, 0xac, 0x53, 0x4c, 0x49, 0x23, 0x1f, 0x1d,
+ 0x1b, 0x19, 0x17, 0x16, 0x16, 0x15, 0x16, 0x16, 0x15, 0x13, 0x13, 0x12,
+ 0x0d, 0x0d, 0x0c, 0x0c, 0x0b, 0x0c, 0x0b, 0x0a, 0x0a, 0x0a, 0x07, 0x07,
+ 0x06, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03,
+ 0x03, 0x04, 0x04, 0x06, 0x07, 0x07, 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0a,
+ 0x0d, 0x0b, 0x0c, 0x11, 0x0e, 0x0f, 0x11, 0x0e, 0x0d, 0x19, 0x16, 0x13,
+ 0x4b, 0x48, 0x41, 0xb6, 0xb2, 0xa4, 0xc6, 0xc4, 0xb0, 0x83, 0xa4, 0x74,
+ 0x5e, 0xc0, 0x59, 0x5f, 0xec, 0x60, 0x5d, 0xf0, 0x5c, 0x5c, 0xf6, 0x59,
+ 0x57, 0xf4, 0x55, 0x53, 0xf0, 0x53, 0x52, 0xf2, 0x53, 0x51, 0xef, 0x53,
+ 0x52, 0xed, 0x53, 0x51, 0xed, 0x51, 0x52, 0xef, 0x4e, 0x52, 0xef, 0x4d,
+ 0x51, 0xf0, 0x4d, 0x50, 0xf1, 0x4c, 0x4f, 0xef, 0x4d, 0x4e, 0xee, 0x4f,
+ 0x4e, 0xed, 0x4f, 0x4d, 0xef, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xef, 0x4d,
+ 0x4c, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d, 0x4d, 0xee, 0x4d,
+ 0x4d, 0xee, 0x4d, 0x4f, 0xef, 0x4c, 0x4f, 0xee, 0x4c, 0x4f, 0xec, 0x4f,
+ 0x51, 0xec, 0x4f, 0x53, 0xed, 0x4d, 0x52, 0xed, 0x4c, 0x4e, 0xef, 0x4c,
+ 0x4c, 0xef, 0x4c, 0x4a, 0xee, 0x4d, 0x4b, 0xee, 0x4e, 0x53, 0xf4, 0x54,
+ 0x4f, 0xc7, 0x4f, 0x32, 0x64, 0x31, 0x2d, 0x3e, 0x2e, 0x2e, 0x37, 0x2d,
+ 0x2f, 0x32, 0x2d, 0x2f, 0x31, 0x2d, 0x30, 0x31, 0x2f, 0x32, 0x31, 0x2e,
+ 0x33, 0x33, 0x2f, 0x34, 0x33, 0x30, 0x36, 0x32, 0x31, 0x38, 0x34, 0x34,
+ 0x38, 0x35, 0x35, 0x39, 0x37, 0x36, 0x38, 0x3a, 0x36, 0x3c, 0x3e, 0x3b,
+ 0x43, 0x45, 0x3f, 0x4f, 0x4f, 0x49, 0x66, 0x65, 0x5c, 0x68, 0x64, 0x5a,
+ 0x92, 0x8c, 0x81, 0xc8, 0xbe, 0xb6, 0xb5, 0xaa, 0xa6, 0x52, 0x4a, 0x48,
+ 0x22, 0x1e, 0x1c, 0x1c, 0x19, 0x17, 0x17, 0x16, 0x14, 0x16, 0x16, 0x15,
+ 0x12, 0x12, 0x12, 0x0c, 0x0c, 0x0c, 0x0d, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a,
+ 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03,
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x04, 0x07, 0x07, 0x09, 0x09, 0x09,
+ 0x0a, 0x09, 0x0a, 0x0e, 0x0c, 0x0d, 0x0f, 0x0d, 0x0f, 0x0e, 0x0c, 0x0b,
+ 0x17, 0x15, 0x12, 0x49, 0x47, 0x3f, 0xac, 0xaa, 0x9b, 0xbb, 0xbb, 0xa5,
+ 0x7a, 0x9e, 0x6c, 0x59, 0xbe, 0x55, 0x59, 0xe9, 0x5b, 0x57, 0xee, 0x57,
+ 0x57, 0xf4, 0x55, 0x52, 0xf2, 0x51, 0x4e, 0xee, 0x4e, 0x4e, 0xef, 0x4f,
+ 0x4c, 0xed, 0x4f, 0x4d, 0xe9, 0x50, 0x4c, 0xeb, 0x4e, 0x4e, 0xeb, 0x4a,
+ 0x4d, 0xed, 0x4a, 0x4d, 0xee, 0x49, 0x4b, 0xee, 0x48, 0x4b, 0xec, 0x4a,
+ 0x49, 0xeb, 0x4c, 0x49, 0xea, 0x4c, 0x49, 0xec, 0x4a, 0x49, 0xeb, 0x49,
+ 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+ 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+ 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+ 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+ 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+ 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49, 0x49, 0xeb, 0x49,
+ 0x48, 0xec, 0x49, 0x48, 0xec, 0x4a, 0x48, 0xec, 0x4a, 0x48, 0xec, 0x4a,
+ 0x48, 0xec, 0x4a, 0x48, 0xec, 0x4a, 0x4a, 0xec, 0x48, 0x4a, 0xea, 0x48,
+ 0x4a, 0xe8, 0x4b, 0x4c, 0xe8, 0x4b, 0x4f, 0xea, 0x48, 0x4e, 0xea, 0x48,
+ 0x4a, 0xeb, 0x48, 0x48, 0xeb, 0x48, 0x47, 0xeb, 0x49, 0x47, 0xea, 0x49,
+ 0x50, 0xf1, 0x51, 0x4d, 0xc5, 0x4d, 0x2f, 0x62, 0x2f, 0x2a, 0x3c, 0x2c,
+ 0x2b, 0x35, 0x2a, 0x2c, 0x2f, 0x2a, 0x2c, 0x2f, 0x2a, 0x2e, 0x2f, 0x2c,
+ 0x30, 0x2f, 0x2c, 0x31, 0x31, 0x2d, 0x32, 0x31, 0x2e, 0x34, 0x30, 0x2f,
+ 0x36, 0x31, 0x32, 0x36, 0x33, 0x32, 0x37, 0x35, 0x34, 0x35, 0x37, 0x33,
+ 0x38, 0x3c, 0x38, 0x40, 0x42, 0x3c, 0x4c, 0x4c, 0x46, 0x63, 0x61, 0x58,
+ 0x63, 0x5e, 0x55, 0x88, 0x82, 0x77, 0xbd, 0xb2, 0xaa, 0xac, 0xa1, 0x9d,
+ 0x4f, 0x47, 0x45, 0x22, 0x1e, 0x1c, 0x1d, 0x19, 0x18, 0x17, 0x16, 0x15,
+ 0x17, 0x17, 0x16, 0x12, 0x12, 0x12, 0x0b, 0x0b, 0x0b, 0x0d, 0x0b, 0x0c,
+ 0x0c, 0x0a, 0x0b, 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x02, 0x02, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x02, 0x02, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x04, 0x07, 0x06,
+ 0x08, 0x08, 0x09, 0x09, 0x09, 0x0a, 0x0c, 0x0b, 0x0c, 0x0d, 0x0c, 0x0c,
+ 0x0d, 0x0c, 0x0a, 0x16, 0x15, 0x10, 0x48, 0x47, 0x3e, 0xa5, 0xa5, 0x95,
+ 0xb4, 0xb5, 0x9f, 0x76, 0x9a, 0x67, 0x57, 0xbe, 0x54, 0x55, 0xe7, 0x58,
+ 0x54, 0xed, 0x54, 0x55, 0xf3, 0x52, 0x4e, 0xf0, 0x4e, 0x4b, 0xed, 0x4c,
+ 0x4b, 0xee, 0x4d, 0x4a, 0xeb, 0x4d, 0x4a, 0xe7, 0x4d, 0x49, 0xe8, 0x4b,
+ 0x4b, 0xe9, 0x47, 0x4b, 0xea, 0x46, 0x4a, 0xeb, 0x46, 0x49, 0xeb, 0x45,
+ 0x48, 0xea, 0x46, 0x46, 0xe9, 0x49, 0x46, 0xe8, 0x49, 0x46, 0xea, 0x46,
+ 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+ 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+ 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+ 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+ 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+ 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46, 0x46, 0xe9, 0x46,
+ 0x46, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46,
+ 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x45, 0xe9, 0x46, 0x47, 0xea, 0x45,
+ 0x47, 0xe9, 0x46, 0x47, 0xe6, 0x48, 0x49, 0xe6, 0x48, 0x4b, 0xe9, 0x46,
+ 0x4a, 0xe9, 0x45, 0x47, 0xea, 0x45, 0x45, 0xea, 0x45, 0x45, 0xe9, 0x46,
+ 0x45, 0xe8, 0x47, 0x4e, 0xf0, 0x4f, 0x4c, 0xc5, 0x4c, 0x2e, 0x63, 0x2e,
+ 0x2a, 0x3d, 0x2a, 0x2b, 0x35, 0x29, 0x2b, 0x2f, 0x28, 0x2b, 0x2e, 0x29,
+ 0x2d, 0x2e, 0x2c, 0x2f, 0x2e, 0x2c, 0x30, 0x30, 0x2d, 0x31, 0x30, 0x2d,
+ 0x32, 0x2f, 0x2e, 0x33, 0x30, 0x30, 0x34, 0x32, 0x32, 0x35, 0x34, 0x33,
+ 0x33, 0x36, 0x33, 0x36, 0x3a, 0x37, 0x3d, 0x3f, 0x3a, 0x49, 0x4a, 0x43,
+ 0x61, 0x5f, 0x55, 0x60, 0x5b, 0x51, 0x81, 0x7b, 0x6e, 0xb4, 0xa9, 0xa0,
+ 0xa7, 0x9c, 0x97, 0x50, 0x48, 0x45, 0x27, 0x22, 0x20, 0x21, 0x1e, 0x1c,
+ 0x18, 0x17, 0x16, 0x15, 0x15, 0x15, 0x12, 0x12, 0x12, 0x0d, 0x0c, 0x0d,
+ 0x0d, 0x0c, 0x0c, 0x0c, 0x0a, 0x0b, 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04,
+ 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01,
+ 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x00, 0x03, 0x03,
+ 0x02, 0x06, 0x06, 0x06, 0x08, 0x09, 0x08, 0x0a, 0x0a, 0x0b, 0x0a, 0x0b,
+ 0x0b, 0x0a, 0x0b, 0x0d, 0x0a, 0x0b, 0x15, 0x13, 0x0f, 0x47, 0x48, 0x3d,
+ 0xa0, 0xa1, 0x8f, 0xad, 0xaf, 0x98, 0x72, 0x97, 0x63, 0x55, 0xbe, 0x52,
+ 0x53, 0xe6, 0x55, 0x50, 0xec, 0x50, 0x52, 0xf2, 0x50, 0x4c, 0xef, 0x4c,
+ 0x49, 0xec, 0x4a, 0x49, 0xec, 0x4b, 0x48, 0xe9, 0x4b, 0x48, 0xe6, 0x49,
+ 0x47, 0xe5, 0x48, 0x49, 0xe7, 0x45, 0x49, 0xe8, 0x43, 0x48, 0xe8, 0x43,
+ 0x47, 0xe9, 0x43, 0x46, 0xe8, 0x43, 0x44, 0xe7, 0x46, 0x44, 0xe6, 0x46,
+ 0x44, 0xe8, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+ 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+ 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+ 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+ 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+ 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x43,
+ 0x44, 0xe7, 0x43, 0x44, 0xe7, 0x44, 0x43, 0xe7, 0x42, 0x43, 0xe7, 0x43,
+ 0x43, 0xe7, 0x43, 0x43, 0xe7, 0x43, 0x43, 0xe7, 0x43, 0x43, 0xe7, 0x43,
+ 0x45, 0xe8, 0x42, 0x45, 0xe7, 0x43, 0x45, 0xe4, 0x46, 0x45, 0xe4, 0x46,
+ 0x47, 0xe7, 0x43, 0x47, 0xe7, 0x42, 0x45, 0xe8, 0x42, 0x43, 0xe8, 0x42,
+ 0x43, 0xe8, 0x44, 0x43, 0xe7, 0x45, 0x4c, 0xee, 0x4e, 0x4b, 0xc5, 0x4b,
+ 0x2d, 0x64, 0x2c, 0x29, 0x3d, 0x28, 0x2a, 0x34, 0x29, 0x2b, 0x2e, 0x27,
+ 0x2b, 0x2e, 0x29, 0x2d, 0x2e, 0x2b, 0x2f, 0x2d, 0x2b, 0x2f, 0x2e, 0x2c,
+ 0x2f, 0x2e, 0x2d, 0x30, 0x2f, 0x2e, 0x31, 0x2f, 0x2e, 0x32, 0x32, 0x31,
+ 0x33, 0x33, 0x33, 0x33, 0x34, 0x33, 0x35, 0x38, 0x36, 0x3a, 0x3c, 0x37,
+ 0x47, 0x47, 0x41, 0x5e, 0x5d, 0x53, 0x5b, 0x57, 0x4e, 0x7a, 0x73, 0x67,
+ 0xab, 0xa1, 0x96, 0xa3, 0x98, 0x91, 0x53, 0x4b, 0x47, 0x2d, 0x28, 0x25,
+ 0x26, 0x22, 0x20, 0x19, 0x18, 0x17, 0x14, 0x14, 0x13, 0x12, 0x12, 0x12,
+ 0x0f, 0x0e, 0x0e, 0x0e, 0x0b, 0x0c, 0x0c, 0x0a, 0x0a, 0x0a, 0x07, 0x08,
+ 0x06, 0x02, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03,
+ 0x00, 0x03, 0x03, 0x02, 0x06, 0x05, 0x05, 0x07, 0x09, 0x07, 0x0a, 0x0a,
+ 0x09, 0x0a, 0x0b, 0x09, 0x0a, 0x0a, 0x0c, 0x0b, 0x0b, 0x12, 0x12, 0x0e,
+ 0x44, 0x45, 0x3a, 0x96, 0x98, 0x87, 0xa1, 0xa5, 0x8d, 0x6b, 0x92, 0x5c,
+ 0x52, 0xbc, 0x4f, 0x50, 0xe3, 0x51, 0x4d, 0xe9, 0x4c, 0x50, 0xf0, 0x4c,
+ 0x49, 0xeb, 0x48, 0x45, 0xe8, 0x45, 0x46, 0xe8, 0x46, 0x45, 0xe5, 0x47,
+ 0x45, 0xe2, 0x46, 0x45, 0xe1, 0x44, 0x46, 0xe3, 0x41, 0x46, 0xe4, 0x3f,
+ 0x45, 0xe4, 0x3f, 0x44, 0xe5, 0x3f, 0x43, 0xe4, 0x3f, 0x41, 0xe4, 0x42,
+ 0x41, 0xe3, 0x42, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+ 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+ 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f,
+ 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x3f,
+ 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+ 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x40,
+ 0x42, 0xe4, 0x40, 0x42, 0xe4, 0x3f, 0x42, 0xe4, 0x40, 0x40, 0xe3, 0x3f,
+ 0x40, 0xe3, 0x3f, 0x40, 0xe3, 0x3f, 0x40, 0xe3, 0x3f, 0x40, 0xe3, 0x3e,
+ 0x40, 0xe3, 0x3e, 0x41, 0xe5, 0x3e, 0x41, 0xe4, 0x40, 0x41, 0xe1, 0x43,
+ 0x41, 0xe1, 0x43, 0x42, 0xe4, 0x40, 0x43, 0xe4, 0x3e, 0x41, 0xe5, 0x3e,
+ 0x3f, 0xe5, 0x3f, 0x3f, 0xe6, 0x41, 0x40, 0xe4, 0x41, 0x49, 0xeb, 0x4a,
+ 0x49, 0xc3, 0x48, 0x2b, 0x62, 0x2a, 0x28, 0x3b, 0x26, 0x29, 0x34, 0x27,
+ 0x29, 0x2e, 0x25, 0x29, 0x2c, 0x27, 0x2a, 0x2b, 0x28, 0x2d, 0x2a, 0x2a,
+ 0x2d, 0x2b, 0x2a, 0x2d, 0x2b, 0x2b, 0x2e, 0x2c, 0x2c, 0x2e, 0x2c, 0x2c,
+ 0x2f, 0x2f, 0x2f, 0x31, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x35, 0x34,
+ 0x37, 0x39, 0x35, 0x44, 0x45, 0x3f, 0x5b, 0x5a, 0x51, 0x58, 0x53, 0x4a,
+ 0x72, 0x6c, 0x5f, 0xa2, 0x98, 0x8d, 0x9e, 0x93, 0x8b, 0x58, 0x50, 0x4c,
+ 0x3c, 0x36, 0x33, 0x37, 0x32, 0x30, 0x20, 0x20, 0x1e, 0x15, 0x15, 0x14,
+ 0x12, 0x13, 0x12, 0x10, 0x10, 0x10, 0x0e, 0x0c, 0x0d, 0x0c, 0x0a, 0x0b,
+ 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x01, 0x00, 0x01, 0x01, 0x00, 0x02,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x02,
+ 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x08, 0x09,
+ 0x07, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0a, 0x0a, 0x0d, 0x0e, 0x0d,
+ 0x10, 0x11, 0x0d, 0x3f, 0x41, 0x36, 0x8d, 0x90, 0x80, 0x97, 0x9c, 0x84,
+ 0x64, 0x8c, 0x56, 0x50, 0xb9, 0x4d, 0x4e, 0xdf, 0x4e, 0x4a, 0xe5, 0x49,
+ 0x4d, 0xec, 0x49, 0x45, 0xe7, 0x44, 0x42, 0xe4, 0x41, 0x42, 0xe2, 0x42,
+ 0x41, 0xe1, 0x43, 0x43, 0xde, 0x43, 0x43, 0xde, 0x42, 0x44, 0xe0, 0x3e,
+ 0x44, 0xe0, 0x3d, 0x43, 0xe1, 0x3c, 0x41, 0xe2, 0x3c, 0x41, 0xe0, 0x3c,
+ 0x3f, 0xe0, 0x3e, 0x3f, 0xdf, 0x3f, 0x3f, 0xe1, 0x3e, 0x3f, 0xe0, 0x3e,
+ 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e,
+ 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d,
+ 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d,
+ 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e,
+ 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e,
+ 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3e, 0x3f, 0xe0, 0x3d, 0x3f, 0xe0, 0x3d,
+ 0x3f, 0xdf, 0x3d, 0x3f, 0xdf, 0x3d, 0x3f, 0xdf, 0x3d, 0x3f, 0xdf, 0x3d,
+ 0x3e, 0xdf, 0x3c, 0x3e, 0xdf, 0x3c, 0x3d, 0xe1, 0x3c, 0x3d, 0xe0, 0x3d,
+ 0x3d, 0xdd, 0x40, 0x3f, 0xdd, 0x40, 0x40, 0xe0, 0x3d, 0x40, 0xe0, 0x3c,
+ 0x3d, 0xe2, 0x3c, 0x3b, 0xe2, 0x3d, 0x3d, 0xe3, 0x3e, 0x3c, 0xe0, 0x3d,
+ 0x47, 0xe7, 0x47, 0x47, 0xbf, 0x46, 0x29, 0x5f, 0x29, 0x27, 0x3a, 0x25,
+ 0x27, 0x33, 0x25, 0x27, 0x2d, 0x23, 0x26, 0x29, 0x24, 0x28, 0x29, 0x26,
+ 0x2a, 0x28, 0x28, 0x2a, 0x29, 0x28, 0x2b, 0x29, 0x28, 0x2c, 0x2a, 0x29,
+ 0x2d, 0x2b, 0x2b, 0x2d, 0x2d, 0x2d, 0x2f, 0x2e, 0x2f, 0x30, 0x31, 0x30,
+ 0x31, 0x34, 0x31, 0x35, 0x37, 0x32, 0x41, 0x42, 0x3c, 0x59, 0x57, 0x4f,
+ 0x55, 0x50, 0x47, 0x6e, 0x67, 0x5b, 0x9d, 0x93, 0x88, 0x9a, 0x8f, 0x87,
+ 0x5e, 0x56, 0x51, 0x4d, 0x46, 0x43, 0x4a, 0x46, 0x43, 0x2c, 0x29, 0x28,
+ 0x18, 0x17, 0x16, 0x11, 0x12, 0x12, 0x0f, 0x10, 0x10, 0x0e, 0x0c, 0x0d,
+ 0x0c, 0x0a, 0x0b, 0x0a, 0x07, 0x08, 0x06, 0x02, 0x04, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x02, 0x02, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x06, 0x06,
+ 0x06, 0x08, 0x09, 0x07, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x09, 0x0b, 0x0b,
+ 0x0e, 0x0f, 0x0d, 0x0e, 0x10, 0x0c, 0x3c, 0x3d, 0x33, 0x85, 0x89, 0x78,
+ 0x8d, 0x93, 0x7a, 0x5e, 0x86, 0x50, 0x4f, 0xb7, 0x4b, 0x4b, 0xdc, 0x4b,
+ 0x48, 0xe2, 0x47, 0x4a, 0xe9, 0x47, 0x42, 0xe3, 0x40, 0x3f, 0xe0, 0x3e,
+ 0x3e, 0xde, 0x3e, 0x3e, 0xdd, 0x3f, 0x40, 0xdb, 0x40, 0x40, 0xdb, 0x3f,
+ 0x42, 0xdd, 0x3b, 0x41, 0xdd, 0x3a, 0x41, 0xde, 0x3a, 0x3f, 0xdf, 0x39,
+ 0x3f, 0xdd, 0x3a, 0x3d, 0xdc, 0x3b, 0x3d, 0xdc, 0x3d, 0x3d, 0xdd, 0x3c,
+ 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c,
+ 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdc, 0x3a,
+ 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a,
+ 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3a, 0x3d, 0xdd, 0x3c,
+ 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c,
+ 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdd, 0x3c, 0x3d, 0xdc, 0x3a,
+ 0x3d, 0xdc, 0x3a, 0x3d, 0xdc, 0x3b, 0x3d, 0xdc, 0x3b, 0x3d, 0xdc, 0x3b,
+ 0x3d, 0xdc, 0x3b, 0x3c, 0xdb, 0x39, 0x3c, 0xdc, 0x39, 0x39, 0xde, 0x39,
+ 0x39, 0xdc, 0x3a, 0x39, 0xda, 0x3d, 0x3c, 0xda, 0x3d, 0x3d, 0xdc, 0x3a,
+ 0x3d, 0xdc, 0x39, 0x3a, 0xde, 0x39, 0x38, 0xdf, 0x3a, 0x3a, 0xe1, 0x3c,
+ 0x39, 0xdd, 0x3a, 0x45, 0xe5, 0x44, 0x45, 0xbd, 0x43, 0x27, 0x5c, 0x27,
+ 0x25, 0x38, 0x24, 0x26, 0x31, 0x23, 0x25, 0x2b, 0x22, 0x24, 0x27, 0x22,
+ 0x25, 0x26, 0x23, 0x28, 0x26, 0x25, 0x28, 0x26, 0x25, 0x29, 0x26, 0x26,
+ 0x2a, 0x27, 0x27, 0x2b, 0x2a, 0x2a, 0x2b, 0x2a, 0x2a, 0x2d, 0x2c, 0x2d,
+ 0x2e, 0x30, 0x2e, 0x2e, 0x32, 0x2f, 0x32, 0x35, 0x30, 0x3f, 0x3f, 0x3a,
+ 0x56, 0x55, 0x4c, 0x52, 0x4d, 0x45, 0x69, 0x62, 0x57, 0x98, 0x8e, 0x83,
+ 0x97, 0x8b, 0x84, 0x63, 0x59, 0x55, 0x58, 0x51, 0x4d, 0x57, 0x52, 0x4f,
+ 0x34, 0x32, 0x30, 0x1a, 0x18, 0x18, 0x11, 0x11, 0x11, 0x0f, 0x0f, 0x10,
+ 0x0e, 0x0c, 0x0e, 0x0c, 0x0a, 0x0c, 0x0a, 0x07, 0x09, 0x06, 0x02, 0x04,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x01, 0x01,
+ 0x02, 0x01, 0x00, 0x00, 0x02, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x02,
+ 0x02, 0x06, 0x05, 0x05, 0x07, 0x08, 0x06, 0x08, 0x09, 0x08, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x0e, 0x0e, 0x0c, 0x0f, 0x0f, 0x0c, 0x3a, 0x3c, 0x32,
+ 0x81, 0x84, 0x73, 0x87, 0x8f, 0x74, 0x58, 0x82, 0x4a, 0x4a, 0xb8, 0x47,
+ 0x45, 0xd9, 0x46, 0x43, 0xdf, 0x43, 0x46, 0xe5, 0x43, 0x40, 0xe2, 0x3f,
+ 0x3e, 0xdf, 0x3d, 0x3b, 0xdc, 0x3c, 0x3b, 0xdc, 0x3c, 0x3c, 0xda, 0x3d,
+ 0x3c, 0xda, 0x3c, 0x3e, 0xdb, 0x3a, 0x3d, 0xda, 0x39, 0x3d, 0xdb, 0x39,
+ 0x3b, 0xdb, 0x38, 0x3b, 0xda, 0x39, 0x39, 0xdb, 0x39, 0x3a, 0xda, 0x3a,
+ 0x3a, 0xdc, 0x39, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+ 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+ 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39,
+ 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39, 0x3a, 0xdb, 0x39,
+ 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+ 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a, 0x3a, 0xdb, 0x3a,
+ 0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38,
+ 0x3a, 0xda, 0x38, 0x3a, 0xda, 0x38, 0x39, 0xda, 0x38, 0x39, 0xda, 0x37,
+ 0x38, 0xdb, 0x38, 0x38, 0xda, 0x39, 0x38, 0xd8, 0x3b, 0x38, 0xd9, 0x3b,
+ 0x38, 0xdb, 0x39, 0x38, 0xdb, 0x38, 0x39, 0xdc, 0x38, 0x38, 0xdc, 0x38,
+ 0x38, 0xdd, 0x39, 0x37, 0xdd, 0x38, 0x3f, 0xe6, 0x40, 0x40, 0xc1, 0x40,
+ 0x25, 0x5d, 0x24, 0x24, 0x36, 0x21, 0x26, 0x2e, 0x23, 0x25, 0x27, 0x22,
+ 0x24, 0x26, 0x22, 0x25, 0x25, 0x23, 0x26, 0x25, 0x24, 0x26, 0x26, 0x24,
+ 0x27, 0x26, 0x25, 0x28, 0x27, 0x26, 0x29, 0x28, 0x28, 0x28, 0x29, 0x29,
+ 0x2a, 0x2a, 0x2a, 0x2d, 0x2d, 0x2b, 0x2e, 0x2e, 0x2c, 0x32, 0x32, 0x2d,
+ 0x3d, 0x3c, 0x38, 0x51, 0x4f, 0x48, 0x4f, 0x4b, 0x44, 0x65, 0x5f, 0x54,
+ 0x90, 0x88, 0x7e, 0x90, 0x86, 0x7e, 0x5b, 0x53, 0x4e, 0x49, 0x42, 0x3f,
+ 0x48, 0x43, 0x40, 0x35, 0x32, 0x30, 0x1e, 0x1b, 0x19, 0x12, 0x13, 0x12,
+ 0x10, 0x10, 0x10, 0x0d, 0x0c, 0x0d, 0x0b, 0x0a, 0x0b, 0x09, 0x07, 0x08,
+ 0x05, 0x03, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00,
+ 0x03, 0x00, 0x01, 0x03, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x03, 0x01,
+ 0x00, 0x04, 0x01, 0x01, 0x06, 0x04, 0x03, 0x06, 0x06, 0x07, 0x06, 0x08,
+ 0x08, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0d, 0x0b, 0x0b, 0x11, 0x0f, 0x0c,
+ 0x3b, 0x3b, 0x30, 0x7f, 0x81, 0x6e, 0x82, 0x8b, 0x6e, 0x53, 0x7f, 0x44,
+ 0x47, 0xb9, 0x43, 0x3e, 0xd6, 0x3f, 0x3f, 0xdc, 0x3f, 0x41, 0xe0, 0x41,
+ 0x3f, 0xe1, 0x3e, 0x3d, 0xde, 0x3c, 0x39, 0xdc, 0x3a, 0x38, 0xdb, 0x39,
+ 0x38, 0xd9, 0x3a, 0x38, 0xd9, 0x39, 0x39, 0xd8, 0x39, 0x38, 0xd8, 0x39,
+ 0x38, 0xd8, 0x39, 0x38, 0xd9, 0x38, 0x38, 0xd8, 0x38, 0x37, 0xd9, 0x37,
+ 0x37, 0xd9, 0x37, 0x38, 0xda, 0x37, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+ 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+ 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37,
+ 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x37,
+ 0x38, 0xd9, 0x37, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+ 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38, 0x38, 0xd9, 0x38,
+ 0x38, 0xd9, 0x38, 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36,
+ 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36, 0x36, 0xd8, 0x36, 0x37, 0xd8, 0x36,
+ 0x36, 0xd8, 0x35, 0x37, 0xd9, 0x37, 0x37, 0xd8, 0x38, 0x36, 0xd7, 0x37,
+ 0x35, 0xd8, 0x37, 0x33, 0xd9, 0x37, 0x34, 0xd9, 0x37, 0x37, 0xd8, 0x38,
+ 0x38, 0xd8, 0x38, 0x37, 0xd9, 0x37, 0x35, 0xdd, 0x36, 0x3a, 0xe7, 0x3c,
+ 0x3b, 0xc4, 0x3d, 0x23, 0x5d, 0x21, 0x23, 0x34, 0x1f, 0x26, 0x2a, 0x22,
+ 0x26, 0x23, 0x21, 0x25, 0x23, 0x22, 0x25, 0x23, 0x22, 0x24, 0x25, 0x22,
+ 0x24, 0x25, 0x24, 0x25, 0x25, 0x24, 0x26, 0x26, 0x25, 0x27, 0x26, 0x26,
+ 0x26, 0x28, 0x27, 0x28, 0x29, 0x27, 0x2b, 0x2b, 0x27, 0x2c, 0x2c, 0x29,
+ 0x31, 0x30, 0x2b, 0x3b, 0x39, 0x35, 0x4b, 0x49, 0x42, 0x4e, 0x4a, 0x43,
+ 0x61, 0x5c, 0x52, 0x88, 0x82, 0x78, 0x89, 0x80, 0x79, 0x51, 0x4a, 0x44,
+ 0x33, 0x2e, 0x2a, 0x32, 0x2d, 0x29, 0x32, 0x30, 0x2d, 0x21, 0x1f, 0x1c,
+ 0x14, 0x14, 0x12, 0x10, 0x10, 0x0f, 0x0c, 0x0c, 0x0d, 0x0a, 0x0b, 0x0b,
+ 0x07, 0x08, 0x08, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x02, 0x01, 0x01,
+ 0x02, 0x01, 0x01, 0x04, 0x00, 0x01, 0x03, 0x00, 0x01, 0x01, 0x02, 0x00,
+ 0x01, 0x03, 0x01, 0x00, 0x04, 0x01, 0x01, 0x05, 0x03, 0x03, 0x05, 0x05,
+ 0x06, 0x05, 0x07, 0x08, 0x07, 0x09, 0x0b, 0x09, 0x0a, 0x0c, 0x09, 0x0a,
+ 0x11, 0x0e, 0x0c, 0x38, 0x38, 0x2e, 0x77, 0x79, 0x65, 0x78, 0x83, 0x66,
+ 0x4d, 0x7b, 0x3f, 0x43, 0xb9, 0x3f, 0x38, 0xd3, 0x3a, 0x3a, 0xd9, 0x3a,
+ 0x3d, 0xdc, 0x3c, 0x3c, 0xdf, 0x3b, 0x3a, 0xdc, 0x39, 0x36, 0xda, 0x37,
+ 0x34, 0xd9, 0x35, 0x34, 0xd6, 0x36, 0x33, 0xd6, 0x36, 0x33, 0xd5, 0x36,
+ 0x33, 0xd5, 0x37, 0x33, 0xd5, 0x37, 0x33, 0xd5, 0x35, 0x33, 0xd5, 0x35,
+ 0x34, 0xd7, 0x34, 0x34, 0xd7, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+ 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+ 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x35, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+ 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+ 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x35, 0x34, 0xd6, 0x34,
+ 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34,
+ 0x34, 0xd6, 0x34, 0x34, 0xd6, 0x34, 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33,
+ 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33, 0x32, 0xd5, 0x33,
+ 0x33, 0xd5, 0x34, 0x32, 0xd5, 0x33, 0x34, 0xd6, 0x34, 0x34, 0xd5, 0x35,
+ 0x34, 0xd4, 0x34, 0x31, 0xd5, 0x34, 0x2e, 0xd7, 0x34, 0x2f, 0xd6, 0x34,
+ 0x35, 0xd4, 0x35, 0x36, 0xd5, 0x35, 0x33, 0xd5, 0x33, 0x32, 0xdb, 0x34,
+ 0x35, 0xe7, 0x39, 0x37, 0xc6, 0x3b, 0x21, 0x5d, 0x1e, 0x22, 0x32, 0x1d,
+ 0x26, 0x28, 0x22, 0x25, 0x21, 0x22, 0x24, 0x21, 0x21, 0x24, 0x21, 0x21,
+ 0x22, 0x23, 0x21, 0x22, 0x24, 0x22, 0x22, 0x24, 0x22, 0x23, 0x25, 0x23,
+ 0x25, 0x24, 0x23, 0x24, 0x26, 0x25, 0x25, 0x26, 0x24, 0x28, 0x28, 0x24,
+ 0x2a, 0x29, 0x25, 0x30, 0x2d, 0x29, 0x38, 0x35, 0x31, 0x45, 0x42, 0x3c,
+ 0x49, 0x47, 0x40, 0x5b, 0x56, 0x4e, 0x81, 0x7a, 0x72, 0x81, 0x79, 0x72,
+ 0x58, 0x51, 0x4b, 0x4c, 0x46, 0x41, 0x49, 0x44, 0x40, 0x3f, 0x3c, 0x38,
+ 0x23, 0x21, 0x1d, 0x15, 0x15, 0x14, 0x11, 0x11, 0x0f, 0x0c, 0x0d, 0x0c,
+ 0x09, 0x0b, 0x0a, 0x07, 0x08, 0x08, 0x03, 0x04, 0x04, 0x01, 0x02, 0x01,
+ 0x02, 0x01, 0x00, 0x03, 0x01, 0x01, 0x04, 0x00, 0x01, 0x03, 0x00, 0x01,
+ 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x01, 0x01, 0x04, 0x04,
+ 0x02, 0x05, 0x06, 0x06, 0x05, 0x07, 0x08, 0x07, 0x09, 0x0a, 0x08, 0x09,
+ 0x0c, 0x09, 0x0a, 0x11, 0x0f, 0x0c, 0x35, 0x36, 0x2b, 0x6d, 0x71, 0x5d,
+ 0x70, 0x7a, 0x5e, 0x48, 0x77, 0x3c, 0x41, 0xb7, 0x3d, 0x35, 0xd1, 0x38,
+ 0x37, 0xd6, 0x38, 0x3a, 0xdb, 0x3a, 0x38, 0xdd, 0x38, 0x37, 0xd9, 0x35,
+ 0x33, 0xd7, 0x34, 0x32, 0xd5, 0x33, 0x32, 0xd4, 0x34, 0x31, 0xd3, 0x33,
+ 0x31, 0xd2, 0x34, 0x31, 0xd2, 0x34, 0x31, 0xd2, 0x34, 0x30, 0xd2, 0x32,
+ 0x31, 0xd3, 0x32, 0x33, 0xd4, 0x31, 0x33, 0xd5, 0x31, 0x30, 0xd3, 0x32,
+ 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32,
+ 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd2, 0x31,
+ 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31,
+ 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd2, 0x31, 0x30, 0xd3, 0x32,
+ 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32,
+ 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd3, 0x32, 0x30, 0xd2, 0x31,
+ 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31,
+ 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x30, 0xd3, 0x31, 0x31, 0xd4, 0x32,
+ 0x31, 0xd3, 0x32, 0x31, 0xd1, 0x33, 0x30, 0xd2, 0x33, 0x2d, 0xd5, 0x31,
+ 0x2e, 0xd4, 0x32, 0x32, 0xd2, 0x33, 0x34, 0xd2, 0x33, 0x30, 0xd3, 0x32,
+ 0x2f, 0xd9, 0x33, 0x33, 0xe5, 0x38, 0x36, 0xc3, 0x3a, 0x20, 0x5c, 0x1d,
+ 0x21, 0x33, 0x1c, 0x25, 0x28, 0x21, 0x24, 0x22, 0x22, 0x22, 0x20, 0x20,
+ 0x23, 0x20, 0x20, 0x21, 0x22, 0x20, 0x21, 0x22, 0x20, 0x21, 0x23, 0x20,
+ 0x22, 0x24, 0x21, 0x24, 0x23, 0x22, 0x23, 0x25, 0x24, 0x24, 0x25, 0x23,
+ 0x27, 0x27, 0x23, 0x29, 0x28, 0x24, 0x2d, 0x2b, 0x27, 0x35, 0x32, 0x2e,
+ 0x40, 0x3d, 0x36, 0x44, 0x41, 0x3b, 0x56, 0x51, 0x4a, 0x7c, 0x75, 0x6d,
+ 0x7d, 0x75, 0x6d, 0x6d, 0x65, 0x5e, 0x85, 0x7f, 0x78, 0x81, 0x7c, 0x77,
+ 0x54, 0x50, 0x4c, 0x24, 0x21, 0x1e, 0x17, 0x18, 0x16, 0x11, 0x12, 0x11,
+ 0x0c, 0x0d, 0x0c, 0x09, 0x0b, 0x0b, 0x07, 0x08, 0x08, 0x03, 0x04, 0x04,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x01, 0x04, 0x00, 0x01,
+ 0x03, 0x00, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x01,
+ 0x02, 0x03, 0x04, 0x03, 0x05, 0x06, 0x06, 0x04, 0x07, 0x09, 0x07, 0x09,
+ 0x0a, 0x07, 0x09, 0x0b, 0x09, 0x09, 0x10, 0x0e, 0x0b, 0x32, 0x33, 0x2a,
+ 0x66, 0x6a, 0x57, 0x69, 0x73, 0x57, 0x46, 0x75, 0x3a, 0x40, 0xb5, 0x3b,
+ 0x34, 0xcf, 0x35, 0x35, 0xd3, 0x35, 0x38, 0xd9, 0x37, 0x35, 0xda, 0x35,
+ 0x34, 0xd7, 0x32, 0x30, 0xd5, 0x31, 0x2f, 0xd2, 0x30, 0x30, 0xd1, 0x32,
+ 0x2e, 0xd1, 0x31, 0x2e, 0xd0, 0x31, 0x2e, 0xd0, 0x32, 0x2e, 0xd0, 0x31,
+ 0x2d, 0xd0, 0x2f, 0x2e, 0xd1, 0x2f, 0x31, 0xd2, 0x2f, 0x30, 0xd2, 0x2f,
+ 0x2e, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+ 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x30,
+ 0x2d, 0xcf, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e,
+ 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xd0, 0x2e, 0x2d, 0xcf, 0x2e,
+ 0x2d, 0xd0, 0x30, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+ 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+ 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+ 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x2f,
+ 0x2e, 0xd1, 0x2f, 0x2e, 0xd0, 0x2f, 0x2f, 0xcf, 0x31, 0x2e, 0xd0, 0x31,
+ 0x2b, 0xd3, 0x2f, 0x2c, 0xd1, 0x2f, 0x2f, 0xcf, 0x30, 0x31, 0xd0, 0x31,
+ 0x2e, 0xd1, 0x30, 0x2d, 0xd7, 0x31, 0x31, 0xe2, 0x37, 0x34, 0xc2, 0x38,
+ 0x1f, 0x5b, 0x1c, 0x20, 0x33, 0x1c, 0x24, 0x27, 0x20, 0x23, 0x21, 0x21,
+ 0x21, 0x1e, 0x1f, 0x21, 0x1e, 0x1f, 0x20, 0x20, 0x1f, 0x1f, 0x20, 0x1e,
+ 0x1f, 0x21, 0x1e, 0x20, 0x22, 0x1f, 0x22, 0x21, 0x20, 0x21, 0x23, 0x22,
+ 0x22, 0x23, 0x21, 0x26, 0x26, 0x21, 0x27, 0x27, 0x23, 0x2b, 0x29, 0x25,
+ 0x32, 0x2f, 0x2b, 0x3b, 0x38, 0x32, 0x40, 0x3d, 0x36, 0x52, 0x4c, 0x46,
+ 0x79, 0x71, 0x69, 0x79, 0x72, 0x68, 0x80, 0x77, 0x6f, 0xb7, 0xb1, 0xa9,
+ 0xb4, 0xae, 0xa8, 0x68, 0x64, 0x5f, 0x26, 0x23, 0x20, 0x19, 0x19, 0x18,
+ 0x11, 0x13, 0x11, 0x0c, 0x0d, 0x0c, 0x09, 0x0b, 0x0b, 0x08, 0x08, 0x08,
+ 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x01,
+ 0x03, 0x00, 0x01, 0x03, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00,
+ 0x00, 0x02, 0x01, 0x01, 0x03, 0x04, 0x02, 0x04, 0x05, 0x05, 0x04, 0x06,
+ 0x08, 0x05, 0x08, 0x08, 0x05, 0x08, 0x0a, 0x08, 0x08, 0x10, 0x0e, 0x0b,
+ 0x31, 0x33, 0x29, 0x64, 0x68, 0x55, 0x66, 0x72, 0x56, 0x45, 0x76, 0x3a,
+ 0x3e, 0xb5, 0x3a, 0x31, 0xcc, 0x33, 0x33, 0xd2, 0x33, 0x35, 0xd9, 0x35,
+ 0x33, 0xd9, 0x34, 0x31, 0xd6, 0x31, 0x2f, 0xd4, 0x30, 0x2e, 0xd3, 0x2f,
+ 0x2d, 0xd1, 0x30, 0x2d, 0xd0, 0x2f, 0x2d, 0xd0, 0x30, 0x2d, 0xd0, 0x30,
+ 0x2d, 0xd0, 0x30, 0x2c, 0xd0, 0x2e, 0x2c, 0xd1, 0x2e, 0x2f, 0xd1, 0x2d,
+ 0x2e, 0xd2, 0x2d, 0x2c, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2e, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d,
+ 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d, 0x2b, 0xcf, 0x2d,
+ 0x2b, 0xcf, 0x2d, 0x2b, 0xd0, 0x2e, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e,
+ 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e, 0x2c, 0xd0, 0x2e,
+ 0x2c, 0xd0, 0x2e, 0x2d, 0xd1, 0x2e, 0x2c, 0xd0, 0x2e, 0x2d, 0xcf, 0x2f,
+ 0x2c, 0xd0, 0x2f, 0x2a, 0xd2, 0x2e, 0x2b, 0xd1, 0x2e, 0x2e, 0xcf, 0x2f,
+ 0x2f, 0xcf, 0x30, 0x2b, 0xcf, 0x2e, 0x2a, 0xd5, 0x2e, 0x2f, 0xe0, 0x35,
+ 0x32, 0xc0, 0x37, 0x1d, 0x59, 0x1b, 0x1e, 0x31, 0x1a, 0x21, 0x26, 0x1e,
+ 0x20, 0x21, 0x1f, 0x1f, 0x1e, 0x1d, 0x20, 0x1e, 0x1d, 0x1e, 0x1f, 0x1e,
+ 0x1e, 0x1f, 0x1d, 0x1e, 0x20, 0x1d, 0x1f, 0x21, 0x1e, 0x21, 0x20, 0x1f,
+ 0x20, 0x21, 0x20, 0x21, 0x22, 0x20, 0x25, 0x23, 0x20, 0x26, 0x25, 0x23,
+ 0x2a, 0x28, 0x24, 0x2f, 0x2c, 0x28, 0x37, 0x34, 0x2e, 0x3c, 0x39, 0x33,
+ 0x4e, 0x4a, 0x44, 0x75, 0x6d, 0x66, 0x76, 0x6f, 0x65, 0x8b, 0x81, 0x77,
+ 0xcf, 0xc9, 0xc0, 0xce, 0xca, 0xc4, 0x7a, 0x77, 0x72, 0x2b, 0x28, 0x25,
+ 0x19, 0x19, 0x18, 0x11, 0x13, 0x11, 0x0c, 0x0d, 0x0c, 0x0a, 0x0b, 0x0b,
+ 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x03, 0x01, 0x01, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x01, 0x01, 0x00,
+ 0x01, 0x02, 0x00, 0x00, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x04, 0x03, 0x06, 0x07, 0x04, 0x08, 0x08, 0x04, 0x07, 0x0a, 0x07, 0x08,
+ 0x10, 0x0e, 0x0c, 0x32, 0x34, 0x2a, 0x63, 0x69, 0x56, 0x64, 0x72, 0x56,
+ 0x45, 0x76, 0x3a, 0x3d, 0xb4, 0x3a, 0x30, 0xcb, 0x31, 0x30, 0xd2, 0x32,
+ 0x34, 0xd8, 0x34, 0x32, 0xd9, 0x33, 0x2f, 0xd6, 0x30, 0x2e, 0xd5, 0x2f,
+ 0x2d, 0xd4, 0x2e, 0x2c, 0xd1, 0x2f, 0x2c, 0xd1, 0x2e, 0x2c, 0xd0, 0x2f,
+ 0x2c, 0xcf, 0x2f, 0x2c, 0xcf, 0x2f, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2e, 0xd1, 0x2c, 0x2d, 0xd1, 0x2c, 0x2b, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+ 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+ 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2b, 0xcf, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2b, 0xcf, 0x2d, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+ 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c,
+ 0x2a, 0xcf, 0x2c, 0x2a, 0xcf, 0x2c, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2b, 0xd0, 0x2d, 0x2b, 0xd0, 0x2d, 0x2c, 0xd1, 0x2d, 0x2b, 0xd0, 0x2d,
+ 0x2c, 0xd0, 0x2d, 0x2b, 0xd0, 0x2e, 0x29, 0xd1, 0x2d, 0x2a, 0xd1, 0x2d,
+ 0x2d, 0xcf, 0x2e, 0x2e, 0xce, 0x2f, 0x2a, 0xce, 0x2d, 0x29, 0xd3, 0x2d,
+ 0x2d, 0xde, 0x33, 0x31, 0xbf, 0x36, 0x1b, 0x58, 0x1a, 0x1d, 0x30, 0x19,
+ 0x20, 0x25, 0x1d, 0x1f, 0x20, 0x1e, 0x1f, 0x1d, 0x1c, 0x1f, 0x1d, 0x1b,
+ 0x1d, 0x1e, 0x1d, 0x1e, 0x1f, 0x1c, 0x1e, 0x1f, 0x1d, 0x1f, 0x20, 0x1e,
+ 0x20, 0x20, 0x1f, 0x20, 0x20, 0x1f, 0x21, 0x21, 0x20, 0x24, 0x22, 0x20,
+ 0x25, 0x23, 0x22, 0x29, 0x27, 0x23, 0x2d, 0x2b, 0x27, 0x35, 0x31, 0x2c,
+ 0x3a, 0x36, 0x31, 0x4d, 0x48, 0x42, 0x72, 0x6b, 0x63, 0x75, 0x6d, 0x63,
+ 0x90, 0x86, 0x7c, 0xdb, 0xd6, 0xcc, 0xdc, 0xd8, 0xd2, 0x86, 0x84, 0x7d,
+ 0x2f, 0x2c, 0x29, 0x1a, 0x1a, 0x18, 0x12, 0x13, 0x11, 0x0d, 0x0d, 0x0c,
+ 0x0a, 0x0a, 0x0b, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x03,
+ 0x03, 0x02, 0x03, 0x04, 0x03, 0x06, 0x06, 0x02, 0x07, 0x07, 0x03, 0x06,
+ 0x09, 0x06, 0x07, 0x0f, 0x0e, 0x0c, 0x31, 0x34, 0x2b, 0x62, 0x68, 0x55,
+ 0x61, 0x71, 0x54, 0x44, 0x77, 0x39, 0x3a, 0xb4, 0x38, 0x2d, 0xc8, 0x2f,
+ 0x2d, 0xd1, 0x30, 0x31, 0xd8, 0x32, 0x30, 0xd8, 0x31, 0x2d, 0xd6, 0x2e,
+ 0x2d, 0xd5, 0x2e, 0x2c, 0xd4, 0x2d, 0x2a, 0xd1, 0x2d, 0x2a, 0xd1, 0x2c,
+ 0x2b, 0xd0, 0x2e, 0x2a, 0xcf, 0x2d, 0x2a, 0xcf, 0x2d, 0x2a, 0xd0, 0x2b,
+ 0x2a, 0xd0, 0x2c, 0x2c, 0xd0, 0x2a, 0x2b, 0xd0, 0x2a, 0x29, 0xcf, 0x2a,
+ 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a,
+ 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x2a, 0xd0, 0x2c,
+ 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c,
+ 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x28, 0xcf, 0x2a,
+ 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a,
+ 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x28, 0xcf, 0x2a, 0x2a, 0xd0, 0x2c,
+ 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c,
+ 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2c, 0x2a, 0xd1, 0x2c,
+ 0x2a, 0xd0, 0x2c, 0x2a, 0xd0, 0x2b, 0x29, 0xcf, 0x2d, 0x28, 0xd1, 0x2c,
+ 0x28, 0xd1, 0x2c, 0x2b, 0xcf, 0x2d, 0x2c, 0xcd, 0x2d, 0x28, 0xcc, 0x2a,
+ 0x27, 0xd1, 0x2a, 0x2b, 0xdc, 0x31, 0x2f, 0xbe, 0x34, 0x19, 0x56, 0x19,
+ 0x1b, 0x2e, 0x17, 0x1d, 0x23, 0x1b, 0x1d, 0x1e, 0x1c, 0x1e, 0x1d, 0x19,
+ 0x1e, 0x1d, 0x19, 0x1c, 0x1c, 0x1b, 0x1d, 0x1e, 0x1b, 0x1d, 0x1e, 0x1c,
+ 0x1e, 0x1f, 0x1d, 0x1f, 0x1f, 0x1e, 0x1f, 0x1e, 0x1d, 0x1f, 0x20, 0x1f,
+ 0x22, 0x1f, 0x1f, 0x24, 0x21, 0x21, 0x27, 0x25, 0x22, 0x2a, 0x28, 0x24,
+ 0x30, 0x2d, 0x29, 0x37, 0x33, 0x2e, 0x4a, 0x47, 0x3f, 0x6e, 0x68, 0x60,
+ 0x73, 0x6a, 0x61, 0x94, 0x89, 0x7f, 0xe5, 0xdf, 0xd5, 0xe8, 0xe6, 0xe0,
+ 0x95, 0x93, 0x8b, 0x34, 0x32, 0x2e, 0x1b, 0x1a, 0x17, 0x12, 0x12, 0x11,
+ 0x0d, 0x0e, 0x0c, 0x0b, 0x0a, 0x0b, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01,
+ 0x00, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x03, 0x05, 0x06, 0x02, 0x07,
+ 0x07, 0x04, 0x07, 0x08, 0x06, 0x07, 0x0d, 0x0c, 0x0a, 0x2e, 0x33, 0x29,
+ 0x5d, 0x65, 0x53, 0x5a, 0x6b, 0x4f, 0x3d, 0x70, 0x34, 0x37, 0xb2, 0x36,
+ 0x29, 0xc6, 0x2c, 0x2a, 0xce, 0x2c, 0x2e, 0xd6, 0x30, 0x2d, 0xd5, 0x2e,
+ 0x2b, 0xd3, 0x2c, 0x2a, 0xd3, 0x2c, 0x29, 0xd1, 0x2b, 0x27, 0xcf, 0x2b,
+ 0x27, 0xce, 0x2a, 0x28, 0xcd, 0x2b, 0x27, 0xcd, 0x2b, 0x27, 0xcd, 0x2b,
+ 0x28, 0xcd, 0x2a, 0x27, 0xcd, 0x2a, 0x29, 0xce, 0x29, 0x29, 0xce, 0x29,
+ 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+ 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+ 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a,
+ 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x2a,
+ 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+ 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29, 0x27, 0xcd, 0x29,
+ 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a,
+ 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2a, 0x28, 0xcd, 0x2b,
+ 0x28, 0xce, 0x29, 0x28, 0xce, 0x2a, 0x28, 0xce, 0x29, 0x26, 0xcd, 0x2a,
+ 0x25, 0xce, 0x29, 0x26, 0xce, 0x2a, 0x29, 0xcc, 0x2b, 0x29, 0xcb, 0x2c,
+ 0x26, 0xcc, 0x2a, 0x25, 0xd0, 0x2a, 0x29, 0xdb, 0x30, 0x2d, 0xbc, 0x33,
+ 0x17, 0x55, 0x18, 0x18, 0x2d, 0x15, 0x1b, 0x22, 0x19, 0x1a, 0x1d, 0x19,
+ 0x1c, 0x1c, 0x18, 0x1d, 0x1c, 0x18, 0x1b, 0x1b, 0x1a, 0x1c, 0x1d, 0x1a,
+ 0x1c, 0x1d, 0x1a, 0x1d, 0x1d, 0x1b, 0x1d, 0x1e, 0x1d, 0x1e, 0x1d, 0x1c,
+ 0x1d, 0x1f, 0x1d, 0x1f, 0x1e, 0x1d, 0x21, 0x20, 0x1f, 0x24, 0x23, 0x20,
+ 0x28, 0x26, 0x23, 0x2e, 0x2b, 0x27, 0x35, 0x33, 0x2e, 0x48, 0x46, 0x3f,
+ 0x6c, 0x66, 0x5e, 0x73, 0x6a, 0x61, 0x8a, 0x7f, 0x75, 0xce, 0xc7, 0xbd,
+ 0xd9, 0xd4, 0xcd, 0x96, 0x93, 0x8b, 0x39, 0x35, 0x31, 0x1b, 0x19, 0x17,
+ 0x12, 0x12, 0x0f, 0x0d, 0x0d, 0x0b, 0x0b, 0x0a, 0x0a, 0x08, 0x08, 0x08,
+ 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x01, 0x03, 0x02, 0x04,
+ 0x07, 0x02, 0x08, 0x09, 0x06, 0x09, 0x08, 0x05, 0x07, 0x09, 0x0b, 0x08,
+ 0x2b, 0x30, 0x26, 0x58, 0x61, 0x4f, 0x52, 0x64, 0x48, 0x35, 0x69, 0x2d,
+ 0x33, 0xaf, 0x32, 0x25, 0xc3, 0x29, 0x26, 0xcb, 0x29, 0x2b, 0xd4, 0x2d,
+ 0x2a, 0xd3, 0x2b, 0x29, 0xd2, 0x2a, 0x28, 0xd2, 0x2a, 0x26, 0xcf, 0x29,
+ 0x25, 0xcd, 0x29, 0x25, 0xcc, 0x28, 0x24, 0xcb, 0x29, 0x24, 0xcb, 0x29,
+ 0x25, 0xcb, 0x29, 0x26, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x26, 0xcc, 0x27,
+ 0x26, 0xcc, 0x27, 0x25, 0xcb, 0x27, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+ 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+ 0x25, 0xcb, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28,
+ 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x28,
+ 0x26, 0xcc, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+ 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28, 0x25, 0xcb, 0x28,
+ 0x25, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28,
+ 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28, 0x26, 0xcb, 0x28,
+ 0x26, 0xcb, 0x28, 0x26, 0xcc, 0x27, 0x26, 0xcc, 0x28, 0x26, 0xcc, 0x27,
+ 0x23, 0xca, 0x28, 0x22, 0xcc, 0x27, 0x23, 0xcc, 0x28, 0x26, 0xca, 0x29,
+ 0x28, 0xc8, 0x2a, 0x27, 0xcc, 0x2a, 0x24, 0xcf, 0x29, 0x27, 0xd9, 0x2e,
+ 0x2b, 0xbb, 0x31, 0x15, 0x55, 0x16, 0x15, 0x2b, 0x13, 0x18, 0x21, 0x17,
+ 0x18, 0x1b, 0x17, 0x1a, 0x1b, 0x18, 0x1b, 0x1b, 0x18, 0x1a, 0x1b, 0x1a,
+ 0x1b, 0x1b, 0x1a, 0x1b, 0x1b, 0x1a, 0x1b, 0x1b, 0x19, 0x1b, 0x1c, 0x1b,
+ 0x1c, 0x1d, 0x1b, 0x1b, 0x1d, 0x1b, 0x1d, 0x1d, 0x1b, 0x1f, 0x20, 0x1d,
+ 0x22, 0x21, 0x1e, 0x26, 0x25, 0x21, 0x2c, 0x2a, 0x26, 0x35, 0x33, 0x2e,
+ 0x48, 0x44, 0x3f, 0x6a, 0x63, 0x5c, 0x73, 0x69, 0x61, 0x7c, 0x72, 0x68,
+ 0xaf, 0xa5, 0x9d, 0xc2, 0xb8, 0xb1, 0x94, 0x8e, 0x87, 0x3c, 0x37, 0x34,
+ 0x1c, 0x1a, 0x16, 0x12, 0x11, 0x0e, 0x0e, 0x0d, 0x0c, 0x0c, 0x0b, 0x0a,
+ 0x09, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x02, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x01,
+ 0x03, 0x02, 0x03, 0x06, 0x02, 0x06, 0x09, 0x06, 0x09, 0x06, 0x04, 0x05,
+ 0x08, 0x0a, 0x06, 0x29, 0x2f, 0x25, 0x52, 0x5d, 0x4b, 0x4b, 0x5f, 0x42,
+ 0x30, 0x66, 0x2a, 0x31, 0xb0, 0x32, 0x22, 0xc2, 0x27, 0x24, 0xc9, 0x27,
+ 0x29, 0xd3, 0x2c, 0x28, 0xd2, 0x2a, 0x27, 0xd0, 0x28, 0x26, 0xd1, 0x29,
+ 0x24, 0xcd, 0x27, 0x23, 0xcc, 0x27, 0x23, 0xcb, 0x27, 0x22, 0xca, 0x27,
+ 0x22, 0xca, 0x27, 0x23, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+ 0x24, 0xcb, 0x26, 0x24, 0xcb, 0x26, 0x24, 0xcb, 0x26, 0x24, 0xca, 0x27,
+ 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+ 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xcb, 0x27,
+ 0x24, 0xcb, 0x27, 0x24, 0xcb, 0x27, 0x24, 0xcb, 0x27, 0x24, 0xcb, 0x27,
+ 0x24, 0xcb, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+ 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+ 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27,
+ 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27,
+ 0x24, 0xc9, 0x27, 0x24, 0xc9, 0x27, 0x24, 0xcb, 0x26, 0x24, 0xcb, 0x26,
+ 0x24, 0xcb, 0x26, 0x21, 0xca, 0x26, 0x20, 0xcb, 0x25, 0x21, 0xcb, 0x26,
+ 0x24, 0xc9, 0x27, 0x26, 0xc8, 0x28, 0x26, 0xcc, 0x29, 0x22, 0xcf, 0x29,
+ 0x25, 0xd9, 0x2d, 0x2a, 0xbb, 0x2f, 0x14, 0x55, 0x15, 0x13, 0x2a, 0x12,
+ 0x16, 0x20, 0x16, 0x16, 0x1a, 0x15, 0x18, 0x19, 0x16, 0x1a, 0x19, 0x16,
+ 0x1a, 0x19, 0x18, 0x1a, 0x19, 0x18, 0x1a, 0x19, 0x18, 0x19, 0x19, 0x18,
+ 0x19, 0x1b, 0x19, 0x1a, 0x1b, 0x19, 0x1a, 0x1b, 0x19, 0x1a, 0x1b, 0x1a,
+ 0x1d, 0x1e, 0x1c, 0x1f, 0x1f, 0x1d, 0x24, 0x23, 0x20, 0x2a, 0x28, 0x24,
+ 0x34, 0x32, 0x2f, 0x44, 0x41, 0x3c, 0x63, 0x5e, 0x56, 0x6e, 0x64, 0x5c,
+ 0x6b, 0x61, 0x58, 0x8f, 0x84, 0x7c, 0xa6, 0x9a, 0x93, 0x88, 0x82, 0x7a,
+ 0x3c, 0x36, 0x32, 0x1c, 0x1a, 0x16, 0x12, 0x10, 0x0e, 0x0e, 0x0c, 0x0c,
+ 0x0c, 0x0b, 0x09, 0x09, 0x08, 0x08, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x03, 0x01, 0x03, 0x05, 0x01, 0x04, 0x08, 0x04, 0x07,
+ 0x04, 0x04, 0x04, 0x07, 0x0b, 0x06, 0x28, 0x30, 0x26, 0x4e, 0x5b, 0x48,
+ 0x48, 0x5d, 0x40, 0x32, 0x6a, 0x2b, 0x32, 0xb3, 0x32, 0x22, 0xc3, 0x27,
+ 0x24, 0xca, 0x27, 0x29, 0xd3, 0x2c, 0x27, 0xd2, 0x2a, 0x25, 0xd1, 0x28,
+ 0x25, 0xd2, 0x29, 0x23, 0xce, 0x27, 0x23, 0xcc, 0x27, 0x23, 0xcc, 0x27,
+ 0x23, 0xcc, 0x28, 0x22, 0xcc, 0x27, 0x22, 0xcc, 0x27, 0x23, 0xcc, 0x27,
+ 0x23, 0xcc, 0x27, 0x25, 0xcb, 0x26, 0x25, 0xcb, 0x27, 0x24, 0xcc, 0x27,
+ 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28,
+ 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x23, 0xca, 0x27,
+ 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+ 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x24, 0xcb, 0x28,
+ 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28,
+ 0x24, 0xcb, 0x28, 0x24, 0xcb, 0x28, 0x24, 0xcc, 0x28, 0x24, 0xca, 0x27,
+ 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27,
+ 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x24, 0xca, 0x27, 0x23, 0xcc, 0x26,
+ 0x24, 0xcb, 0x27, 0x24, 0xcc, 0x27, 0x21, 0xcb, 0x27, 0x20, 0xcd, 0x26,
+ 0x21, 0xcc, 0x27, 0x25, 0xc9, 0x27, 0x27, 0xc9, 0x28, 0x25, 0xce, 0x29,
+ 0x21, 0xd0, 0x29, 0x25, 0xd9, 0x2c, 0x29, 0xbb, 0x2f, 0x13, 0x55, 0x15,
+ 0x14, 0x2b, 0x12, 0x15, 0x1f, 0x15, 0x16, 0x19, 0x14, 0x17, 0x18, 0x15,
+ 0x19, 0x18, 0x15, 0x19, 0x18, 0x17, 0x19, 0x18, 0x17, 0x19, 0x18, 0x17,
+ 0x18, 0x18, 0x17, 0x18, 0x1a, 0x18, 0x19, 0x19, 0x18, 0x19, 0x1a, 0x19,
+ 0x19, 0x1a, 0x19, 0x1c, 0x1c, 0x1b, 0x1e, 0x1d, 0x1c, 0x23, 0x22, 0x20,
+ 0x28, 0x27, 0x24, 0x33, 0x31, 0x2e, 0x40, 0x3e, 0x39, 0x5a, 0x56, 0x4f,
+ 0x64, 0x5c, 0x55, 0x5f, 0x56, 0x4d, 0x7d, 0x73, 0x6b, 0x92, 0x88, 0x80,
+ 0x7a, 0x73, 0x6c, 0x36, 0x31, 0x2d, 0x1c, 0x19, 0x16, 0x12, 0x0f, 0x0e,
+ 0x0d, 0x0c, 0x0b, 0x0b, 0x0a, 0x0a, 0x08, 0x08, 0x08, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x03, 0x01, 0x02, 0x04, 0x01, 0x03,
+ 0x08, 0x02, 0x05, 0x03, 0x02, 0x02, 0x07, 0x0c, 0x06, 0x27, 0x30, 0x25,
+ 0x48, 0x56, 0x43, 0x43, 0x58, 0x3b, 0x30, 0x6a, 0x2c, 0x31, 0xb4, 0x32,
+ 0x20, 0xc2, 0x26, 0x23, 0xc9, 0x27, 0x28, 0xd2, 0x2c, 0x25, 0xd1, 0x29,
+ 0x23, 0xce, 0x27, 0x23, 0xd0, 0x28, 0x22, 0xcc, 0x26, 0x22, 0xcb, 0x26,
+ 0x22, 0xcb, 0x26, 0x22, 0xcb, 0x27, 0x21, 0xca, 0x26, 0x21, 0xca, 0x26,
+ 0x22, 0xca, 0x26, 0x22, 0xca, 0x26, 0x23, 0xca, 0x25, 0x23, 0xca, 0x26,
+ 0x23, 0xcb, 0x26, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+ 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xc9, 0x27,
+ 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26,
+ 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26, 0x21, 0xc7, 0x26,
+ 0x23, 0xc9, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+ 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27, 0x23, 0xca, 0x27,
+ 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26,
+ 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26, 0x23, 0xc8, 0x26,
+ 0x22, 0xcb, 0x26, 0x23, 0xca, 0x26, 0x23, 0xca, 0x26, 0x20, 0xca, 0x26,
+ 0x1f, 0xcb, 0x25, 0x20, 0xcb, 0x26, 0x23, 0xc8, 0x26, 0x25, 0xc8, 0x27,
+ 0x24, 0xcc, 0x28, 0x20, 0xcd, 0x28, 0x24, 0xd7, 0x2b, 0x28, 0xb9, 0x2d,
+ 0x12, 0x53, 0x14, 0x12, 0x2a, 0x11, 0x13, 0x1e, 0x13, 0x15, 0x17, 0x13,
+ 0x15, 0x16, 0x13, 0x17, 0x16, 0x13, 0x17, 0x15, 0x15, 0x18, 0x15, 0x15,
+ 0x17, 0x15, 0x15, 0x16, 0x16, 0x15, 0x17, 0x17, 0x15, 0x16, 0x16, 0x16,
+ 0x17, 0x17, 0x18, 0x17, 0x18, 0x17, 0x1a, 0x1a, 0x19, 0x1c, 0x1a, 0x1a,
+ 0x21, 0x1f, 0x1f, 0x26, 0x25, 0x22, 0x31, 0x30, 0x2c, 0x3b, 0x39, 0x34,
+ 0x51, 0x4d, 0x46, 0x5a, 0x54, 0x4c, 0x54, 0x4c, 0x44, 0x6c, 0x64, 0x5b,
+ 0x7f, 0x76, 0x6f, 0x6a, 0x64, 0x5d, 0x30, 0x2c, 0x28, 0x1b, 0x18, 0x16,
+ 0x12, 0x0f, 0x0f, 0x0d, 0x0c, 0x0b, 0x0b, 0x09, 0x0a, 0x08, 0x07, 0x08,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x01, 0x02,
+ 0x05, 0x01, 0x04, 0x08, 0x02, 0x06, 0x02, 0x02, 0x02, 0x06, 0x0b, 0x05,
+ 0x1f, 0x28, 0x1e, 0x36, 0x44, 0x32, 0x31, 0x45, 0x2b, 0x26, 0x5d, 0x22,
+ 0x2a, 0xaa, 0x2c, 0x19, 0xb7, 0x21, 0x1b, 0xbe, 0x21, 0x20, 0xc7, 0x26,
+ 0x1d, 0xc5, 0x23, 0x1b, 0xc2, 0x22, 0x1c, 0xc3, 0x22, 0x1a, 0xc0, 0x21,
+ 0x1a, 0xc0, 0x21, 0x1a, 0xbf, 0x21, 0x1b, 0xbf, 0x22, 0x1a, 0xbe, 0x21,
+ 0x1a, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1c, 0xbe, 0x20,
+ 0x1c, 0xbe, 0x21, 0x1b, 0xbf, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+ 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+ 0x1b, 0xbe, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21,
+ 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21, 0x1a, 0xbc, 0x21,
+ 0x1a, 0xbc, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+ 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+ 0x1b, 0xbf, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21,
+ 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21, 0x1b, 0xbd, 0x21,
+ 0x1b, 0xbd, 0x21, 0x1c, 0xbf, 0x21, 0x1b, 0xbe, 0x21, 0x1b, 0xbe, 0x21,
+ 0x1a, 0xbe, 0x21, 0x19, 0xc0, 0x20, 0x19, 0xbf, 0x21, 0x1c, 0xbc, 0x21,
+ 0x1e, 0xbd, 0x22, 0x1c, 0xc0, 0x22, 0x19, 0xc0, 0x22, 0x1c, 0xca, 0x25,
+ 0x21, 0xad, 0x28, 0x0e, 0x4b, 0x10, 0x0c, 0x22, 0x0b, 0x0d, 0x17, 0x0d,
+ 0x0e, 0x12, 0x0d, 0x0e, 0x0f, 0x0d, 0x11, 0x0f, 0x0d, 0x11, 0x0e, 0x0e,
+ 0x11, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x0f, 0x0f, 0x0e, 0x0f, 0x10, 0x0e,
+ 0x0f, 0x0f, 0x0f, 0x10, 0x0f, 0x10, 0x11, 0x12, 0x12, 0x13, 0x13, 0x13,
+ 0x14, 0x13, 0x13, 0x19, 0x18, 0x18, 0x1e, 0x1e, 0x1b, 0x28, 0x27, 0x25,
+ 0x2f, 0x2d, 0x2a, 0x3f, 0x3d, 0x37, 0x49, 0x44, 0x3d, 0x4c, 0x45, 0x3d,
+ 0x5f, 0x58, 0x50, 0x6b, 0x65, 0x5e, 0x5d, 0x58, 0x52, 0x2d, 0x29, 0x25,
+ 0x19, 0x17, 0x14, 0x11, 0x0e, 0x0e, 0x0d, 0x0b, 0x0b, 0x0b, 0x09, 0x0a,
+ 0x08, 0x07, 0x08, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01,
+ 0x03, 0x00, 0x03, 0x07, 0x01, 0x06, 0x09, 0x02, 0x06, 0x02, 0x02, 0x02,
+ 0x05, 0x09, 0x04, 0x19, 0x23, 0x18, 0x28, 0x37, 0x25, 0x23, 0x36, 0x1e,
+ 0x1c, 0x53, 0x1a, 0x24, 0xa2, 0x28, 0x14, 0xae, 0x1e, 0x15, 0xb5, 0x1d,
+ 0x1a, 0xbe, 0x21, 0x17, 0xbc, 0x1f, 0x15, 0xb8, 0x1d, 0x15, 0xb9, 0x1e,
+ 0x14, 0xb6, 0x1c, 0x14, 0xb7, 0x1c, 0x14, 0xb6, 0x1e, 0x15, 0xb6, 0x1e,
+ 0x15, 0xb4, 0x1d, 0x15, 0xb3, 0x1c, 0x16, 0xb3, 0x1c, 0x15, 0xb3, 0x1c,
+ 0x16, 0xb5, 0x1c, 0x16, 0xb5, 0x1c, 0x15, 0xb6, 0x1c, 0x15, 0xb5, 0x1d,
+ 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d,
+ 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x14, 0xb3, 0x1c, 0x14, 0xb4, 0x1c,
+ 0x14, 0xb4, 0x1c, 0x14, 0xb4, 0x1c, 0x14, 0xb4, 0x1c, 0x14, 0xb4, 0x1c,
+ 0x14, 0xb4, 0x1c, 0x14, 0xb3, 0x1c, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d,
+ 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d,
+ 0x15, 0xb5, 0x1d, 0x15, 0xb5, 0x1d, 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c,
+ 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c,
+ 0x15, 0xb4, 0x1c, 0x15, 0xb4, 0x1c, 0x17, 0xb6, 0x1c, 0x16, 0xb4, 0x1c,
+ 0x16, 0xb3, 0x1c, 0x15, 0xb3, 0x1c, 0x14, 0xb6, 0x1c, 0x14, 0xb5, 0x1c,
+ 0x16, 0xb3, 0x1c, 0x18, 0xb3, 0x1e, 0x17, 0xb5, 0x1e, 0x14, 0xb6, 0x1e,
+ 0x17, 0xc0, 0x21, 0x1b, 0xa4, 0x23, 0x0a, 0x44, 0x0c, 0x08, 0x1d, 0x07,
+ 0x08, 0x12, 0x08, 0x08, 0x0c, 0x08, 0x09, 0x0a, 0x08, 0x0b, 0x0a, 0x08,
+ 0x0c, 0x09, 0x09, 0x0c, 0x09, 0x08, 0x0b, 0x09, 0x08, 0x09, 0x0a, 0x08,
+ 0x09, 0x0b, 0x08, 0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0a, 0x0d, 0x0e, 0x0d,
+ 0x0e, 0x0f, 0x0e, 0x0f, 0x0e, 0x0d, 0x14, 0x13, 0x12, 0x19, 0x17, 0x15,
+ 0x22, 0x21, 0x1e, 0x26, 0x25, 0x21, 0x33, 0x31, 0x2c, 0x3c, 0x39, 0x32,
+ 0x47, 0x41, 0x3a, 0x56, 0x50, 0x4b, 0x5f, 0x59, 0x54, 0x55, 0x50, 0x4c,
+ 0x2a, 0x26, 0x23, 0x17, 0x15, 0x14, 0x11, 0x0e, 0x0e, 0x0c, 0x0b, 0x0a,
+ 0x0a, 0x0a, 0x09, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x01, 0x03, 0x00, 0x02, 0x08, 0x02, 0x08, 0x09, 0x03, 0x07,
+ 0x02, 0x02, 0x02, 0x03, 0x08, 0x03, 0x11, 0x1b, 0x11, 0x16, 0x24, 0x15,
+ 0x10, 0x23, 0x0d, 0x10, 0x45, 0x10, 0x1c, 0x97, 0x21, 0x0d, 0xa2, 0x18,
+ 0x0d, 0xa8, 0x18, 0x12, 0xb2, 0x1b, 0x0f, 0xaf, 0x19, 0x0d, 0xab, 0x17,
+ 0x0d, 0xab, 0x18, 0x0c, 0xa8, 0x17, 0x0c, 0xa9, 0x17, 0x0c, 0xa9, 0x19,
+ 0x0e, 0xa8, 0x19, 0x0e, 0xa7, 0x18, 0x0d, 0xa6, 0x17, 0x0e, 0xa6, 0x17,
+ 0x0e, 0xa6, 0x17, 0x0e, 0xa8, 0x17, 0x0e, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0d, 0xa8, 0x17, 0x0f, 0xa8, 0x17,
+ 0x0e, 0xa6, 0x17, 0x0e, 0xa6, 0x17, 0x0e, 0xa6, 0x17, 0x0d, 0xa8, 0x17,
+ 0x0c, 0xa8, 0x17, 0x0e, 0xa6, 0x17, 0x10, 0xa6, 0x19, 0x0f, 0xa7, 0x18,
+ 0x0d, 0xa7, 0x18, 0x0f, 0xb2, 0x1b, 0x13, 0x98, 0x1d, 0x05, 0x3b, 0x08,
+ 0x01, 0x15, 0x01, 0x01, 0x0b, 0x01, 0x01, 0x07, 0x01, 0x02, 0x03, 0x01,
+ 0x04, 0x03, 0x01, 0x05, 0x02, 0x01, 0x05, 0x02, 0x01, 0x04, 0x02, 0x01,
+ 0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x07, 0x07, 0x06, 0x0d, 0x0c, 0x0b,
+ 0x11, 0x0f, 0x0e, 0x19, 0x18, 0x16, 0x1a, 0x19, 0x16, 0x21, 0x20, 0x1d,
+ 0x2b, 0x29, 0x23, 0x3f, 0x3a, 0x34, 0x49, 0x45, 0x41, 0x4c, 0x48, 0x44,
+ 0x49, 0x45, 0x42, 0x26, 0x23, 0x21, 0x15, 0x12, 0x11, 0x10, 0x0e, 0x0e,
+ 0x0c, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x03, 0x00, 0x02, 0x07, 0x01, 0x06,
+ 0x07, 0x02, 0x05, 0x01, 0x02, 0x02, 0x03, 0x08, 0x03, 0x0e, 0x19, 0x0f,
+ 0x10, 0x1d, 0x0f, 0x0a, 0x1b, 0x08, 0x0d, 0x41, 0x0e, 0x19, 0x92, 0x1f,
+ 0x09, 0x9b, 0x16, 0x09, 0xa0, 0x16, 0x0f, 0xab, 0x19, 0x0b, 0xa7, 0x17,
+ 0x08, 0xa3, 0x15, 0x09, 0xa4, 0x16, 0x07, 0xa1, 0x15, 0x07, 0xa2, 0x15,
+ 0x07, 0xa2, 0x16, 0x09, 0xa0, 0x16, 0x09, 0x9f, 0x15, 0x09, 0x9e, 0x15,
+ 0x0a, 0x9e, 0x15, 0x0a, 0x9e, 0x15, 0x0b, 0xa0, 0x15, 0x0b, 0xa0, 0x15,
+ 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+ 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+ 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15,
+ 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15, 0x0a, 0xa1, 0x15,
+ 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+ 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+ 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+ 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15, 0x09, 0xa0, 0x15,
+ 0x0b, 0xa1, 0x15, 0x0a, 0x9f, 0x15, 0x0a, 0x9e, 0x15, 0x09, 0x9f, 0x15,
+ 0x08, 0xa1, 0x15, 0x08, 0xa1, 0x15, 0x0b, 0x9e, 0x15, 0x0c, 0x9f, 0x15,
+ 0x0c, 0xa1, 0x16, 0x09, 0xa2, 0x16, 0x0c, 0xad, 0x19, 0x12, 0x94, 0x1a,
+ 0x04, 0x38, 0x06, 0x00, 0x13, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x05, 0x00,
+ 0x01, 0x02, 0x00, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x03, 0x01, 0x00,
+ 0x02, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x02, 0x02, 0x04, 0x05, 0x05, 0x05, 0x05, 0x06, 0x05, 0x05, 0x04,
+ 0x0b, 0x0a, 0x0a, 0x0f, 0x0d, 0x0c, 0x17, 0x16, 0x14, 0x15, 0x14, 0x12,
+ 0x1a, 0x18, 0x15, 0x21, 0x1f, 0x1a, 0x37, 0x33, 0x2e, 0x3a, 0x37, 0x34,
+ 0x3b, 0x38, 0x36, 0x3e, 0x3b, 0x39, 0x23, 0x21, 0x1f, 0x13, 0x10, 0x10,
+ 0x0f, 0x0d, 0x0d, 0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x07, 0x06, 0x07,
+ 0x03, 0x02, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x05, 0x01, 0x03, 0x06, 0x02, 0x04, 0x02, 0x02, 0x02, 0x03, 0x08, 0x03,
+ 0x0d, 0x17, 0x0d, 0x0b, 0x18, 0x0b, 0x05, 0x17, 0x05, 0x0b, 0x3f, 0x0e,
+ 0x16, 0x8d, 0x1d, 0x07, 0x94, 0x14, 0x05, 0x99, 0x14, 0x0c, 0xa4, 0x18,
+ 0x08, 0xa1, 0x15, 0x04, 0x9d, 0x14, 0x06, 0x9f, 0x15, 0x04, 0x9a, 0x14,
+ 0x04, 0x9b, 0x14, 0x04, 0x9c, 0x14, 0x05, 0x99, 0x14, 0x05, 0x99, 0x14,
+ 0x05, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x09, 0x99, 0x14,
+ 0x09, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x06, 0x99, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14,
+ 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9b, 0x14,
+ 0x08, 0x9b, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x06, 0x99, 0x14, 0x07, 0x9a, 0x14, 0x06, 0x99, 0x14, 0x06, 0x99, 0x14,
+ 0x05, 0x99, 0x14, 0x03, 0x9b, 0x14, 0x04, 0x9b, 0x14, 0x09, 0x99, 0x14,
+ 0x0a, 0x98, 0x13, 0x0b, 0x9e, 0x15, 0x07, 0xa0, 0x15, 0x0b, 0xaa, 0x18,
+ 0x11, 0x92, 0x19, 0x04, 0x37, 0x06, 0x00, 0x13, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04,
+ 0x03, 0x04, 0x04, 0x0b, 0x0b, 0x0b, 0x0d, 0x0e, 0x0c, 0x15, 0x15, 0x13,
+ 0x13, 0x12, 0x10, 0x14, 0x13, 0x10, 0x17, 0x17, 0x13, 0x2e, 0x2b, 0x27,
+ 0x2a, 0x28, 0x26, 0x29, 0x27, 0x26, 0x33, 0x30, 0x30, 0x20, 0x1e, 0x1e,
+ 0x0f, 0x0f, 0x0f, 0x0e, 0x0c, 0x0c, 0x0b, 0x09, 0x0a, 0x09, 0x07, 0x09,
+ 0x06, 0x04, 0x07, 0x02, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x03, 0x00, 0x02, 0x05, 0x02, 0x03, 0x02, 0x02, 0x02,
+ 0x03, 0x08, 0x03, 0x0c, 0x16, 0x0c, 0x09, 0x15, 0x09, 0x03, 0x14, 0x03,
+ 0x0a, 0x3d, 0x0d, 0x15, 0x8a, 0x1c, 0x04, 0x90, 0x13, 0x02, 0x94, 0x13,
+ 0x0b, 0xa1, 0x17, 0x06, 0x9d, 0x15, 0x03, 0x9a, 0x14, 0x06, 0x9c, 0x15,
+ 0x02, 0x97, 0x13, 0x02, 0x98, 0x13, 0x01, 0x98, 0x13, 0x03, 0x96, 0x13,
+ 0x03, 0x96, 0x13, 0x04, 0x96, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+ 0x08, 0x95, 0x13, 0x08, 0x95, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x07, 0x98, 0x13, 0x07, 0x98, 0x13,
+ 0x07, 0x98, 0x13, 0x07, 0x98, 0x13, 0x07, 0x98, 0x13, 0x07, 0x98, 0x13,
+ 0x07, 0x98, 0x13, 0x07, 0x98, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x95, 0x13,
+ 0x05, 0x95, 0x13, 0x03, 0x95, 0x13, 0x01, 0x98, 0x13, 0x02, 0x98, 0x13,
+ 0x08, 0x96, 0x13, 0x09, 0x94, 0x12, 0x09, 0x9b, 0x14, 0x05, 0x9d, 0x14,
+ 0x09, 0xa7, 0x17, 0x10, 0x90, 0x18, 0x03, 0x36, 0x06, 0x00, 0x12, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x00, 0x02, 0x02, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x0b, 0x0b, 0x0a, 0x0d, 0x0d, 0x0c,
+ 0x14, 0x14, 0x13, 0x11, 0x0f, 0x0e, 0x10, 0x0e, 0x0c, 0x12, 0x11, 0x0f,
+ 0x24, 0x23, 0x21, 0x1c, 0x1b, 0x1a, 0x1b, 0x1a, 0x1a, 0x26, 0x24, 0x25,
+ 0x1b, 0x1a, 0x1a, 0x0f, 0x0e, 0x0e, 0x0c, 0x0b, 0x0b, 0x0a, 0x08, 0x09,
+ 0x08, 0x06, 0x09, 0x05, 0x03, 0x07, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x03, 0x05, 0x02, 0x05,
+ 0x02, 0x01, 0x02, 0x02, 0x06, 0x02, 0x0b, 0x15, 0x0b, 0x09, 0x16, 0x08,
+ 0x03, 0x14, 0x03, 0x09, 0x3d, 0x0c, 0x14, 0x8b, 0x1c, 0x04, 0x8f, 0x14,
+ 0x02, 0x95, 0x13, 0x0b, 0xa2, 0x17, 0x08, 0x9e, 0x15, 0x04, 0x9b, 0x14,
+ 0x07, 0x9e, 0x15, 0x03, 0x99, 0x13, 0x02, 0x99, 0x14, 0x02, 0x99, 0x14,
+ 0x04, 0x96, 0x14, 0x03, 0x96, 0x14, 0x04, 0x96, 0x14, 0x06, 0x95, 0x14,
+ 0x07, 0x95, 0x14, 0x09, 0x95, 0x14, 0x09, 0x95, 0x14, 0x07, 0x98, 0x14,
+ 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+ 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+ 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14,
+ 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x97, 0x14,
+ 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14,
+ 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x98, 0x14, 0x07, 0x96, 0x14,
+ 0x07, 0x95, 0x14, 0x06, 0x95, 0x14, 0x03, 0x96, 0x14, 0x01, 0x98, 0x14,
+ 0x02, 0x98, 0x14, 0x08, 0x96, 0x14, 0x09, 0x96, 0x13, 0x09, 0x9a, 0x13,
+ 0x04, 0x9b, 0x13, 0x0a, 0xa6, 0x17, 0x10, 0x8f, 0x18, 0x03, 0x36, 0x06,
+ 0x00, 0x13, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x02, 0x0b, 0x0b, 0x0a,
+ 0x0d, 0x0d, 0x0b, 0x14, 0x14, 0x13, 0x10, 0x0e, 0x0d, 0x0f, 0x0d, 0x0c,
+ 0x11, 0x11, 0x10, 0x1d, 0x1d, 0x1c, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16,
+ 0x1d, 0x1c, 0x1d, 0x17, 0x15, 0x17, 0x0f, 0x0e, 0x10, 0x0a, 0x0a, 0x0b,
+ 0x09, 0x08, 0x0a, 0x08, 0x06, 0x08, 0x04, 0x02, 0x06, 0x02, 0x00, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x04, 0x00, 0x01, 0x04, 0x00, 0x03,
+ 0x06, 0x02, 0x05, 0x02, 0x01, 0x02, 0x02, 0x05, 0x02, 0x0b, 0x15, 0x0b,
+ 0x0a, 0x16, 0x08, 0x03, 0x14, 0x03, 0x08, 0x3b, 0x0b, 0x14, 0x8a, 0x1c,
+ 0x04, 0x8f, 0x14, 0x02, 0x95, 0x13, 0x0b, 0xa2, 0x18, 0x09, 0x9f, 0x15,
+ 0x05, 0x9c, 0x15, 0x08, 0x9f, 0x15, 0x03, 0x9b, 0x14, 0x03, 0x9a, 0x14,
+ 0x03, 0x99, 0x14, 0x04, 0x97, 0x14, 0x04, 0x97, 0x14, 0x05, 0x97, 0x14,
+ 0x07, 0x95, 0x14, 0x08, 0x95, 0x14, 0x09, 0x96, 0x14, 0x09, 0x97, 0x14,
+ 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+ 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+ 0x07, 0x99, 0x14, 0x08, 0x99, 0x14, 0x08, 0x99, 0x14, 0x08, 0x99, 0x14,
+ 0x08, 0x99, 0x14, 0x08, 0x99, 0x14, 0x08, 0x99, 0x14, 0x07, 0x99, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+ 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x9a, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x96, 0x14, 0x08, 0x95, 0x14, 0x07, 0x95, 0x14, 0x04, 0x97, 0x14,
+ 0x02, 0x99, 0x14, 0x03, 0x99, 0x14, 0x08, 0x97, 0x14, 0x0a, 0x96, 0x14,
+ 0x08, 0x99, 0x13, 0x03, 0x9a, 0x13, 0x09, 0xa5, 0x17, 0x10, 0x8e, 0x18,
+ 0x03, 0x35, 0x06, 0x00, 0x12, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x03, 0x01,
+ 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x0b, 0x0b, 0x0a, 0x0d, 0x0d, 0x0b, 0x13, 0x14, 0x13, 0x0f, 0x0d, 0x0c,
+ 0x0d, 0x0b, 0x0c, 0x11, 0x10, 0x11, 0x18, 0x18, 0x19, 0x12, 0x12, 0x12,
+ 0x12, 0x12, 0x12, 0x15, 0x15, 0x15, 0x13, 0x11, 0x13, 0x0f, 0x0e, 0x10,
+ 0x0a, 0x09, 0x0a, 0x09, 0x08, 0x09, 0x07, 0x06, 0x08, 0x03, 0x02, 0x06,
+ 0x02, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01,
+ 0x03, 0x00, 0x02, 0x05, 0x02, 0x05, 0x02, 0x01, 0x02, 0x02, 0x04, 0x03,
+ 0x0b, 0x13, 0x0c, 0x09, 0x15, 0x09, 0x02, 0x14, 0x03, 0x08, 0x3b, 0x0a,
+ 0x14, 0x88, 0x1b, 0x05, 0x8e, 0x14, 0x04, 0x94, 0x14, 0x0c, 0xa1, 0x17,
+ 0x0a, 0x9f, 0x15, 0x06, 0x9c, 0x15, 0x08, 0x9d, 0x15, 0x05, 0x9a, 0x13,
+ 0x05, 0x9a, 0x14, 0x05, 0x98, 0x14, 0x06, 0x96, 0x14, 0x06, 0x96, 0x14,
+ 0x07, 0x96, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14, 0x09, 0x97, 0x14,
+ 0x09, 0x97, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+ 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14, 0x09, 0x99, 0x14,
+ 0x09, 0x99, 0x14, 0x07, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x07, 0x98, 0x14, 0x09, 0x99, 0x14, 0x09, 0x98, 0x14, 0x09, 0x98, 0x14,
+ 0x09, 0x98, 0x14, 0x09, 0x98, 0x14, 0x09, 0x98, 0x14, 0x09, 0x98, 0x14,
+ 0x09, 0x99, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14,
+ 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14, 0x07, 0x97, 0x14,
+ 0x07, 0x97, 0x14, 0x07, 0x98, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14,
+ 0x06, 0x96, 0x14, 0x03, 0x99, 0x14, 0x04, 0x99, 0x14, 0x08, 0x96, 0x14,
+ 0x0a, 0x97, 0x14, 0x08, 0x99, 0x14, 0x03, 0x9a, 0x14, 0x08, 0xa5, 0x17,
+ 0x0f, 0x8f, 0x19, 0x03, 0x36, 0x06, 0x00, 0x13, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01,
+ 0x02, 0x02, 0x02, 0x09, 0x0a, 0x09, 0x0a, 0x0b, 0x0a, 0x11, 0x12, 0x12,
+ 0x0d, 0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x10, 0x10, 0x10, 0x16, 0x17, 0x17,
+ 0x0f, 0x10, 0x10, 0x0f, 0x10, 0x10, 0x11, 0x12, 0x12, 0x11, 0x11, 0x11,
+ 0x0d, 0x0d, 0x0e, 0x0a, 0x0a, 0x0a, 0x08, 0x07, 0x08, 0x06, 0x05, 0x06,
+ 0x03, 0x02, 0x05, 0x01, 0x00, 0x02, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x04, 0x01, 0x03, 0x01, 0x00, 0x01,
+ 0x02, 0x04, 0x03, 0x0a, 0x12, 0x0c, 0x08, 0x15, 0x09, 0x02, 0x15, 0x02,
+ 0x08, 0x3b, 0x09, 0x13, 0x87, 0x1a, 0x05, 0x8f, 0x14, 0x06, 0x95, 0x14,
+ 0x0c, 0x9f, 0x17, 0x0b, 0x9e, 0x15, 0x08, 0x9c, 0x15, 0x06, 0x9a, 0x14,
+ 0x07, 0x99, 0x14, 0x07, 0x99, 0x14, 0x07, 0x97, 0x14, 0x07, 0x95, 0x14,
+ 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14,
+ 0x08, 0x97, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14, 0x08, 0x97, 0x14,
+ 0x08, 0x97, 0x14, 0x08, 0x97, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x97, 0x14, 0x08, 0x96, 0x14,
+ 0x08, 0x96, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14, 0x08, 0x96, 0x14,
+ 0x08, 0x96, 0x14, 0x08, 0x97, 0x14, 0x06, 0x95, 0x14, 0x06, 0x95, 0x14,
+ 0x06, 0x95, 0x14, 0x06, 0x95, 0x14, 0x06, 0x95, 0x14, 0x06, 0x95, 0x14,
+ 0x06, 0x95, 0x14, 0x06, 0x96, 0x14, 0x06, 0x98, 0x14, 0x08, 0x97, 0x14,
+ 0x08, 0x97, 0x14, 0x07, 0x97, 0x14, 0x05, 0x99, 0x14, 0x05, 0x99, 0x14,
+ 0x08, 0x97, 0x13, 0x09, 0x97, 0x15, 0x07, 0x9a, 0x15, 0x02, 0x9c, 0x14,
+ 0x06, 0xa7, 0x18, 0x0d, 0x90, 0x19, 0x03, 0x36, 0x06, 0x00, 0x13, 0x00,
+ 0x00, 0x0b, 0x00, 0x01, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x02, 0x03,
+ 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x09, 0x0a, 0x0a, 0x08, 0x0a, 0x0a,
+ 0x0e, 0x10, 0x10, 0x0a, 0x0c, 0x0b, 0x0a, 0x0b, 0x0a, 0x0e, 0x0f, 0x0e,
+ 0x15, 0x17, 0x16, 0x0e, 0x10, 0x0f, 0x0c, 0x0e, 0x0e, 0x0f, 0x11, 0x10,
+ 0x0f, 0x11, 0x0f, 0x0b, 0x0c, 0x0a, 0x0a, 0x0b, 0x09, 0x06, 0x07, 0x06,
+ 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x01, 0x02,
+ 0x01, 0x00, 0x01, 0x02, 0x04, 0x03, 0x0a, 0x11, 0x0c, 0x07, 0x14, 0x09,
+ 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x13, 0x86, 0x19, 0x05, 0x8e, 0x14,
+ 0x05, 0x94, 0x14, 0x0b, 0x9d, 0x16, 0x0b, 0x9e, 0x15, 0x09, 0x9c, 0x15,
+ 0x05, 0x98, 0x13, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x08, 0x96, 0x14,
+ 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x96, 0x14,
+ 0x07, 0x96, 0x14, 0x07, 0x98, 0x14, 0x07, 0x98, 0x14, 0x07, 0x96, 0x14,
+ 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14,
+ 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x96, 0x14,
+ 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14,
+ 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x95, 0x14,
+ 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14,
+ 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x07, 0x95, 0x14, 0x05, 0x94, 0x14,
+ 0x05, 0x94, 0x14, 0x05, 0x94, 0x14, 0x05, 0x94, 0x14, 0x05, 0x94, 0x14,
+ 0x05, 0x94, 0x14, 0x05, 0x94, 0x14, 0x05, 0x95, 0x14, 0x04, 0x98, 0x14,
+ 0x06, 0x96, 0x14, 0x07, 0x96, 0x14, 0x07, 0x96, 0x14, 0x05, 0x98, 0x14,
+ 0x04, 0x98, 0x14, 0x07, 0x96, 0x13, 0x08, 0x97, 0x15, 0x07, 0x9a, 0x15,
+ 0x02, 0x9c, 0x14, 0x05, 0xa7, 0x18, 0x0c, 0x90, 0x19, 0x03, 0x36, 0x06,
+ 0x00, 0x13, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x03, 0x02, 0x01, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02,
+ 0x01, 0x02, 0x03, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x07, 0x09, 0x09,
+ 0x06, 0x09, 0x09, 0x0d, 0x0f, 0x0f, 0x09, 0x0c, 0x0a, 0x08, 0x0a, 0x08,
+ 0x0d, 0x0e, 0x0c, 0x14, 0x16, 0x14, 0x0c, 0x0e, 0x0d, 0x0b, 0x0d, 0x0c,
+ 0x0e, 0x11, 0x0f, 0x0e, 0x10, 0x0d, 0x09, 0x0a, 0x07, 0x09, 0x0a, 0x08,
+ 0x05, 0x06, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x04, 0x03, 0x09, 0x12, 0x0c,
+ 0x08, 0x14, 0x09, 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x14, 0x86, 0x19,
+ 0x05, 0x8e, 0x14, 0x05, 0x93, 0x13, 0x0a, 0x9c, 0x15, 0x0a, 0x9d, 0x14,
+ 0x08, 0x9b, 0x14, 0x06, 0x98, 0x13, 0x06, 0x98, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x97, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+ 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+ 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+ 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13, 0x05, 0x94, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13,
+ 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x94, 0x13,
+ 0x03, 0x96, 0x13, 0x05, 0x95, 0x13, 0x05, 0x95, 0x13, 0x05, 0x94, 0x13,
+ 0x03, 0x96, 0x13, 0x03, 0x96, 0x13, 0x06, 0x94, 0x13, 0x06, 0x95, 0x14,
+ 0x06, 0x99, 0x15, 0x02, 0x9b, 0x14, 0x04, 0xa6, 0x17, 0x0c, 0x8f, 0x18,
+ 0x03, 0x35, 0x06, 0x00, 0x12, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x02, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x07, 0x08, 0x08, 0x07, 0x09, 0x08, 0x0e, 0x10, 0x0e, 0x0a, 0x0c, 0x09,
+ 0x07, 0x0a, 0x06, 0x0c, 0x0d, 0x0c, 0x13, 0x13, 0x12, 0x0d, 0x0d, 0x0b,
+ 0x0d, 0x0e, 0x0c, 0x0e, 0x10, 0x0f, 0x0e, 0x0f, 0x0e, 0x08, 0x09, 0x07,
+ 0x06, 0x07, 0x05, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x02, 0x04, 0x03,
+ 0x09, 0x12, 0x0c, 0x08, 0x14, 0x09, 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08,
+ 0x14, 0x87, 0x19, 0x05, 0x8f, 0x14, 0x04, 0x93, 0x12, 0x09, 0x9b, 0x15,
+ 0x09, 0x9d, 0x14, 0x08, 0x9c, 0x14, 0x06, 0x99, 0x13, 0x06, 0x98, 0x13,
+ 0x04, 0x96, 0x13, 0x04, 0x95, 0x13, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x96, 0x13,
+ 0x04, 0x95, 0x13, 0x04, 0x95, 0x13, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13, 0x05, 0x96, 0x13,
+ 0x05, 0x95, 0x13, 0x03, 0x95, 0x13, 0x04, 0x94, 0x12, 0x04, 0x94, 0x12,
+ 0x04, 0x94, 0x12, 0x03, 0x95, 0x13, 0x03, 0x96, 0x13, 0x05, 0x95, 0x13,
+ 0x06, 0x95, 0x13, 0x06, 0x99, 0x14, 0x02, 0x9c, 0x14, 0x05, 0xa6, 0x17,
+ 0x0c, 0x8e, 0x18, 0x03, 0x35, 0x06, 0x00, 0x12, 0x00, 0x00, 0x09, 0x00,
+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x02, 0x05, 0x07, 0x08, 0x07, 0x09, 0x08, 0x0f, 0x11, 0x0e,
+ 0x0a, 0x0c, 0x09, 0x06, 0x0a, 0x04, 0x0c, 0x0c, 0x0b, 0x12, 0x11, 0x10,
+ 0x0c, 0x0d, 0x0a, 0x0d, 0x0e, 0x0c, 0x0d, 0x0f, 0x0e, 0x0d, 0x0f, 0x0d,
+ 0x08, 0x09, 0x07, 0x04, 0x05, 0x03, 0x04, 0x03, 0x04, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02,
+ 0x02, 0x04, 0x03, 0x09, 0x11, 0x0c, 0x07, 0x14, 0x09, 0x02, 0x14, 0x02,
+ 0x08, 0x3b, 0x08, 0x15, 0x89, 0x1b, 0x05, 0x90, 0x14, 0x03, 0x94, 0x12,
+ 0x09, 0x9c, 0x15, 0x0a, 0x9e, 0x15, 0x0a, 0x9e, 0x15, 0x07, 0x9c, 0x14,
+ 0x07, 0x9b, 0x14, 0x06, 0x98, 0x14, 0x06, 0x98, 0x14, 0x06, 0x97, 0x14,
+ 0x06, 0x97, 0x14, 0x06, 0x97, 0x14, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+ 0x06, 0x99, 0x14, 0x06, 0x98, 0x14, 0x06, 0x98, 0x14, 0x06, 0x97, 0x13,
+ 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+ 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+ 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+ 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+ 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x06, 0x97, 0x13,
+ 0x06, 0x97, 0x13, 0x06, 0x97, 0x13, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x08, 0x98, 0x14,
+ 0x08, 0x98, 0x14, 0x08, 0x98, 0x14, 0x06, 0x98, 0x15, 0x06, 0x98, 0x14,
+ 0x07, 0x97, 0x14, 0x07, 0x97, 0x13, 0x05, 0x99, 0x14, 0x05, 0x9a, 0x14,
+ 0x07, 0x98, 0x15, 0x08, 0x98, 0x14, 0x08, 0x9d, 0x15, 0x04, 0x9f, 0x15,
+ 0x07, 0xa9, 0x18, 0x0e, 0x90, 0x19, 0x03, 0x36, 0x06, 0x00, 0x14, 0x00,
+ 0x01, 0x0a, 0x01, 0x01, 0x04, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02,
+ 0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x02, 0x03,
+ 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x06, 0x07, 0x08, 0x09, 0x0b, 0x09,
+ 0x11, 0x13, 0x10, 0x0a, 0x0c, 0x09, 0x05, 0x08, 0x04, 0x0c, 0x0c, 0x0a,
+ 0x10, 0x10, 0x0f, 0x0a, 0x0b, 0x09, 0x0b, 0x0b, 0x09, 0x0b, 0x0c, 0x0b,
+ 0x0b, 0x0c, 0x0b, 0x07, 0x08, 0x06, 0x03, 0x04, 0x02, 0x04, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x02,
+ 0x00, 0x01, 0x02, 0x02, 0x03, 0x03, 0x08, 0x10, 0x0b, 0x06, 0x13, 0x08,
+ 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x16, 0x8b, 0x1b, 0x05, 0x92, 0x14,
+ 0x03, 0x95, 0x13, 0x09, 0x9d, 0x16, 0x0a, 0xa0, 0x16, 0x0a, 0xa0, 0x15,
+ 0x08, 0x9e, 0x14, 0x08, 0x9e, 0x14, 0x08, 0x9b, 0x14, 0x08, 0x9a, 0x14,
+ 0x08, 0x9a, 0x15, 0x08, 0x9a, 0x15, 0x08, 0x9a, 0x15, 0x08, 0x9a, 0x14,
+ 0x08, 0x9a, 0x14, 0x08, 0x9c, 0x14, 0x07, 0x9b, 0x14, 0x09, 0x9a, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14,
+ 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9a, 0x14, 0x09, 0x9b, 0x14,
+ 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14,
+ 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x09, 0x9b, 0x14, 0x07, 0x9b, 0x16,
+ 0x08, 0x9b, 0x15, 0x09, 0x9a, 0x15, 0x09, 0x9a, 0x14, 0x07, 0x9d, 0x14,
+ 0x08, 0x9d, 0x14, 0x0a, 0x9b, 0x16, 0x0a, 0x9b, 0x15, 0x0a, 0x9f, 0x16,
+ 0x06, 0xa1, 0x15, 0x08, 0xab, 0x19, 0x0f, 0x93, 0x1a, 0x03, 0x38, 0x07,
+ 0x00, 0x15, 0x01, 0x01, 0x0b, 0x01, 0x02, 0x05, 0x04, 0x04, 0x05, 0x04,
+ 0x04, 0x05, 0x04, 0x03, 0x04, 0x02, 0x04, 0x04, 0x02, 0x04, 0x04, 0x03,
+ 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x03, 0x03,
+ 0x02, 0x03, 0x04, 0x02, 0x03, 0x04, 0x02, 0x02, 0x03, 0x07, 0x08, 0x09,
+ 0x0a, 0x0c, 0x09, 0x12, 0x14, 0x11, 0x0a, 0x0c, 0x09, 0x05, 0x08, 0x04,
+ 0x0b, 0x0c, 0x0a, 0x0f, 0x0e, 0x0d, 0x09, 0x0a, 0x08, 0x08, 0x0a, 0x08,
+ 0x08, 0x0a, 0x08, 0x0a, 0x0b, 0x09, 0x07, 0x08, 0x06, 0x03, 0x04, 0x02,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x02, 0x00, 0x01, 0x02, 0x02, 0x03, 0x02, 0x08, 0x10, 0x0a,
+ 0x06, 0x13, 0x08, 0x02, 0x14, 0x02, 0x08, 0x3b, 0x08, 0x17, 0x8d, 0x1c,
+ 0x05, 0x93, 0x14, 0x02, 0x96, 0x13, 0x09, 0x9f, 0x16, 0x0b, 0xa2, 0x17,
+ 0x0c, 0xa4, 0x16, 0x0a, 0xa2, 0x15, 0x0a, 0xa1, 0x15, 0x0b, 0x9f, 0x15,
+ 0x0b, 0x9e, 0x15, 0x0b, 0x9e, 0x17, 0x0b, 0x9e, 0x17, 0x0b, 0x9e, 0x17,
+ 0x0b, 0x9e, 0x15, 0x0b, 0x9e, 0x15, 0x0b, 0x9f, 0x15, 0x0a, 0x9f, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15, 0x0c, 0x9e, 0x15,
+ 0x0b, 0x9f, 0x17, 0x0b, 0x9f, 0x17, 0x0c, 0x9e, 0x17, 0x0c, 0x9f, 0x15,
+ 0x0a, 0xa1, 0x15, 0x0b, 0xa2, 0x15, 0x0d, 0x9f, 0x17, 0x0d, 0xa0, 0x16,
+ 0x0c, 0xa3, 0x16, 0x09, 0xa5, 0x16, 0x0b, 0xaf, 0x1a, 0x11, 0x96, 0x1b,
+ 0x04, 0x3a, 0x07, 0x01, 0x16, 0x02, 0x02, 0x0c, 0x03, 0x03, 0x08, 0x06,
+ 0x06, 0x08, 0x06, 0x07, 0x08, 0x06, 0x05, 0x07, 0x03, 0x06, 0x07, 0x03,
+ 0x06, 0x07, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x03, 0x05, 0x05, 0x03, 0x06, 0x06, 0x02, 0x03, 0x03,
+ 0x08, 0x09, 0x09, 0x0b, 0x0d, 0x0a, 0x13, 0x16, 0x13, 0x0a, 0x0c, 0x09,
+ 0x03, 0x06, 0x03, 0x0a, 0x0b, 0x09, 0x0d, 0x0c, 0x0b, 0x07, 0x08, 0x06,
+ 0x06, 0x08, 0x06, 0x06, 0x08, 0x06, 0x08, 0x09, 0x07, 0x07, 0x08, 0x06,
+ 0x03, 0x04, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x03, 0x02,
+ 0x07, 0x10, 0x0a, 0x05, 0x13, 0x07, 0x01, 0x14, 0x02, 0x07, 0x3b, 0x08,
+ 0x18, 0x8f, 0x1d, 0x06, 0x95, 0x15, 0x03, 0x97, 0x13, 0x0b, 0xa1, 0x17,
+ 0x0d, 0xa5, 0x18, 0x0e, 0xa9, 0x18, 0x0d, 0xa7, 0x17, 0x0d, 0xa6, 0x17,
+ 0x0d, 0xa5, 0x17, 0x0d, 0xa4, 0x17, 0x0d, 0xa4, 0x19, 0x0d, 0xa4, 0x19,
+ 0x0d, 0xa4, 0x19, 0x0d, 0xa4, 0x17, 0x0d, 0xa4, 0x17, 0x0d, 0xa5, 0x17,
+ 0x0d, 0xa5, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+ 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+ 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+ 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+ 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+ 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17, 0x0e, 0xa4, 0x17,
+ 0x0e, 0xa4, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17,
+ 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17, 0x0e, 0xa3, 0x17,
+ 0x0e, 0xa3, 0x17, 0x0d, 0xa5, 0x18, 0x0d, 0xa5, 0x18, 0x0f, 0xa4, 0x19,
+ 0x0e, 0xa4, 0x17, 0x0c, 0xa7, 0x17, 0x0d, 0xa7, 0x17, 0x10, 0xa5, 0x19,
+ 0x10, 0xa5, 0x18, 0x0e, 0xa8, 0x18, 0x0b, 0xa9, 0x18, 0x0d, 0xb3, 0x1c,
+ 0x13, 0x9b, 0x1d, 0x05, 0x3d, 0x08, 0x04, 0x18, 0x03, 0x05, 0x0f, 0x06,
+ 0x06, 0x0b, 0x08, 0x09, 0x0a, 0x08, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x07,
+ 0x08, 0x09, 0x06, 0x08, 0x09, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x06, 0x08, 0x08, 0x06, 0x09, 0x09,
+ 0x04, 0x06, 0x03, 0x09, 0x0a, 0x09, 0x0c, 0x0e, 0x0b, 0x15, 0x18, 0x14,
+ 0x0a, 0x0d, 0x0a, 0x03, 0x06, 0x02, 0x08, 0x0a, 0x07, 0x0c, 0x0c, 0x0b,
+ 0x08, 0x08, 0x07, 0x07, 0x08, 0x07, 0x08, 0x09, 0x07, 0x08, 0x09, 0x07,
+ 0x05, 0x06, 0x04, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x02,
+ 0x01, 0x03, 0x02, 0x07, 0x0f, 0x09, 0x05, 0x12, 0x07, 0x01, 0x15, 0x02,
+ 0x07, 0x3c, 0x08, 0x19, 0x92, 0x1e, 0x06, 0x97, 0x14, 0x04, 0x98, 0x13,
+ 0x0c, 0xa3, 0x17, 0x0e, 0xa9, 0x19, 0x11, 0xad, 0x1a, 0x0f, 0xac, 0x19,
+ 0x0f, 0xac, 0x19, 0x10, 0xaa, 0x19, 0x10, 0xaa, 0x19, 0x10, 0xa9, 0x1a,
+ 0x10, 0xa9, 0x1a, 0x10, 0xa9, 0x1a, 0x10, 0xaa, 0x19, 0x10, 0xaa, 0x19,
+ 0x10, 0xab, 0x19, 0x10, 0xab, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+ 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+ 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+ 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+ 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+ 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19,
+ 0x0f, 0xa9, 0x19, 0x0f, 0xa9, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19,
+ 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19,
+ 0x0f, 0xa8, 0x19, 0x0f, 0xa8, 0x19, 0x0f, 0xaa, 0x19, 0x10, 0xaa, 0x19,
+ 0x10, 0xa9, 0x1a, 0x10, 0xaa, 0x19, 0x0e, 0xac, 0x19, 0x0f, 0xac, 0x19,
+ 0x12, 0xab, 0x1a, 0x12, 0xab, 0x1a, 0x0f, 0xad, 0x1a, 0x0c, 0xae, 0x19,
+ 0x0f, 0xb9, 0x1d, 0x16, 0xa0, 0x1f, 0x06, 0x41, 0x0a, 0x08, 0x1b, 0x06,
+ 0x09, 0x11, 0x0a, 0x0a, 0x0d, 0x0b, 0x0b, 0x0c, 0x0b, 0x0b, 0x0c, 0x0b,
+ 0x0a, 0x0c, 0x0b, 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x09, 0x0b, 0x0a, 0x0a,
+ 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x0a, 0x09, 0x0b, 0x0a,
+ 0x0a, 0x0b, 0x0b, 0x05, 0x08, 0x04, 0x0a, 0x0c, 0x08, 0x0d, 0x0f, 0x0c,
+ 0x16, 0x19, 0x16, 0x0b, 0x0e, 0x0a, 0x02, 0x05, 0x02, 0x06, 0x07, 0x04,
+ 0x0d, 0x0b, 0x0a, 0x0a, 0x09, 0x07, 0x0a, 0x09, 0x08, 0x0b, 0x0b, 0x0a,
+ 0x09, 0x09, 0x08, 0x04, 0x05, 0x03, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x01, 0x01, 0x01, 0x03, 0x02, 0x05, 0x0e, 0x09, 0x04, 0x12, 0x07,
+ 0x01, 0x15, 0x02, 0x06, 0x3b, 0x08, 0x1a, 0x93, 0x1f, 0x06, 0x98, 0x14,
+ 0x04, 0x99, 0x13, 0x0c, 0xa4, 0x17, 0x0f, 0xac, 0x19, 0x12, 0xb1, 0x1b,
+ 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xae, 0x1a, 0x11, 0xaf, 0x1a,
+ 0x11, 0xad, 0x1b, 0x11, 0xad, 0x1b, 0x11, 0xae, 0x1b, 0x11, 0xaf, 0x1a,
+ 0x11, 0xaf, 0x1a, 0x11, 0xb0, 0x1a, 0x11, 0xb0, 0x1a, 0x10, 0xae, 0x1a,
+ 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+ 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+ 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+ 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+ 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a,
+ 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xae, 0x1a, 0x10, 0xac, 0x1a,
+ 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a,
+ 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xac, 0x1a, 0x10, 0xae, 0x1a,
+ 0x11, 0xae, 0x1a, 0x11, 0xad, 0x1b, 0x11, 0xae, 0x1a, 0x10, 0xb0, 0x1a,
+ 0x10, 0xb0, 0x1a, 0x13, 0xb0, 0x1b, 0x13, 0xaf, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x0e, 0xb1, 0x1a, 0x11, 0xbd, 0x1e, 0x18, 0xa3, 0x20, 0x07, 0x44, 0x0a,
+ 0x0a, 0x1e, 0x09, 0x0c, 0x13, 0x0c, 0x0d, 0x0f, 0x0d, 0x0d, 0x0e, 0x0d,
+ 0x0d, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c,
+ 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c,
+ 0x0b, 0x0d, 0x0b, 0x0c, 0x0e, 0x0c, 0x05, 0x0a, 0x05, 0x0a, 0x0e, 0x08,
+ 0x0e, 0x10, 0x0c, 0x18, 0x1b, 0x16, 0x0b, 0x0e, 0x09, 0x02, 0x03, 0x01,
+ 0x04, 0x05, 0x02, 0x0c, 0x0b, 0x0a, 0x09, 0x07, 0x07, 0x09, 0x08, 0x07,
+ 0x0c, 0x0c, 0x0b, 0x09, 0x09, 0x08, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01,
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x03, 0x02, 0x04, 0x0d, 0x08,
+ 0x03, 0x12, 0x06, 0x00, 0x15, 0x01, 0x06, 0x3b, 0x08, 0x19, 0x93, 0x1e,
+ 0x06, 0x98, 0x14, 0x03, 0x99, 0x13, 0x0b, 0xa4, 0x17, 0x0f, 0xad, 0x1a,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1b, 0x12, 0xb1, 0x1b, 0x10, 0xaf, 0x1b,
+ 0x10, 0xaf, 0x1b, 0x10, 0xad, 0x1b, 0x10, 0xad, 0x1b, 0x10, 0xae, 0x1b,
+ 0x10, 0xaf, 0x1b, 0x10, 0xaf, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xb0, 0x1b,
+ 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b,
+ 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xaf, 0x1b,
+ 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+ 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+ 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+ 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b, 0x11, 0xb0, 0x1b,
+ 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b,
+ 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b, 0x0f, 0xae, 0x1b,
+ 0x10, 0xaf, 0x1b, 0x10, 0xad, 0x1b, 0x12, 0xae, 0x1a, 0x12, 0xae, 0x1b,
+ 0x10, 0xb0, 0x1b, 0x11, 0xb1, 0x1b, 0x12, 0xb0, 0x1b, 0x12, 0xb0, 0x1a,
+ 0x11, 0xb2, 0x1b, 0x0e, 0xb3, 0x1b, 0x11, 0xbe, 0x1f, 0x18, 0xa4, 0x21,
+ 0x07, 0x45, 0x0b, 0x09, 0x1e, 0x09, 0x0c, 0x13, 0x0c, 0x0d, 0x0f, 0x0d,
+ 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0d, 0x0c,
+ 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0e, 0x0d,
+ 0x0d, 0x0e, 0x0c, 0x0b, 0x0e, 0x0b, 0x0c, 0x0f, 0x0c, 0x05, 0x0a, 0x04,
+ 0x09, 0x0d, 0x09, 0x0d, 0x11, 0x0c, 0x18, 0x1c, 0x16, 0x0a, 0x0e, 0x07,
+ 0x01, 0x02, 0x01, 0x03, 0x04, 0x02, 0x0c, 0x0b, 0x0a, 0x06, 0x05, 0x05,
+ 0x06, 0x05, 0x04, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x03, 0x02, 0x01,
+ 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x03, 0x02,
+ 0x03, 0x0d, 0x08, 0x03, 0x12, 0x05, 0x00, 0x15, 0x01, 0x05, 0x3b, 0x08,
+ 0x18, 0x93, 0x1e, 0x05, 0x98, 0x14, 0x02, 0x99, 0x13, 0x0a, 0xa3, 0x16,
+ 0x0f, 0xad, 0x1a, 0x12, 0xb4, 0x1c, 0x12, 0xb3, 0x1c, 0x12, 0xb3, 0x1c,
+ 0x0f, 0xb0, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xad, 0x1b, 0x0f, 0xad, 0x1b,
+ 0x0f, 0xae, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb1, 0x1b,
+ 0x0f, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xae, 0x1b, 0x12, 0xae, 0x1a,
+ 0x12, 0xae, 0x1b, 0x10, 0xb1, 0x1b, 0x11, 0xb2, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1a, 0x11, 0xb3, 0x1b, 0x0f, 0xb4, 0x1b, 0x12, 0xbf, 0x20,
+ 0x18, 0xa5, 0x21, 0x07, 0x45, 0x0b, 0x0a, 0x1f, 0x0a, 0x0d, 0x14, 0x0d,
+ 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0c, 0x0b, 0x0f, 0x0a, 0x0c, 0x10, 0x0c,
+ 0x05, 0x0a, 0x04, 0x09, 0x0d, 0x09, 0x0e, 0x12, 0x0c, 0x19, 0x1d, 0x15,
+ 0x0a, 0x0d, 0x05, 0x01, 0x02, 0x00, 0x03, 0x04, 0x02, 0x0b, 0x0a, 0x0a,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0b, 0x0a, 0x09, 0x08, 0x06, 0x05,
+ 0x03, 0x02, 0x01, 0x05, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x02,
+ 0x00, 0x03, 0x02, 0x02, 0x0c, 0x07, 0x02, 0x11, 0x04, 0x00, 0x14, 0x01,
+ 0x05, 0x3a, 0x08, 0x18, 0x93, 0x1e, 0x05, 0x98, 0x15, 0x02, 0x99, 0x13,
+ 0x0a, 0xa4, 0x16, 0x0f, 0xae, 0x19, 0x12, 0xb4, 0x1b, 0x12, 0xb3, 0x1b,
+ 0x11, 0xb3, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xae, 0x1b,
+ 0x0f, 0xae, 0x1b, 0x0f, 0xaf, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb1, 0x1b, 0x0f, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b,
+ 0x11, 0xb1, 0x1b, 0x11, 0xb1, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b, 0x0f, 0xb0, 0x1b,
+ 0x0f, 0xb0, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xb0, 0x1b, 0x10, 0xae, 0x1b,
+ 0x11, 0xae, 0x1b, 0x11, 0xae, 0x1b, 0x0f, 0xb1, 0x1b, 0x10, 0xb2, 0x1b,
+ 0x12, 0xb1, 0x1b, 0x12, 0xb2, 0x1a, 0x11, 0xb4, 0x1b, 0x0f, 0xb5, 0x1b,
+ 0x12, 0xbf, 0x1f, 0x18, 0xa6, 0x21, 0x07, 0x46, 0x0b, 0x0a, 0x1f, 0x0a,
+ 0x0d, 0x14, 0x0d, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0c, 0x0b, 0x0e, 0x0b,
+ 0x0d, 0x0f, 0x0c, 0x05, 0x09, 0x04, 0x09, 0x0d, 0x09, 0x0e, 0x11, 0x0c,
+ 0x19, 0x1c, 0x15, 0x09, 0x0c, 0x05, 0x01, 0x02, 0x00, 0x05, 0x05, 0x02,
+ 0x0d, 0x0b, 0x0b, 0x06, 0x05, 0x05, 0x05, 0x04, 0x04, 0x0d, 0x0c, 0x0b,
+ 0x09, 0x06, 0x06, 0x03, 0x01, 0x01, 0x05, 0x02, 0x01, 0x02, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x02, 0x0c, 0x07, 0x01, 0x10, 0x03,
+ 0x00, 0x14, 0x01, 0x05, 0x3a, 0x08, 0x18, 0x94, 0x1e, 0x05, 0x98, 0x15,
+ 0x02, 0x99, 0x13, 0x0a, 0xa4, 0x16, 0x0e, 0xad, 0x19, 0x11, 0xb3, 0x1b,
+ 0x12, 0xb2, 0x1b, 0x11, 0xb2, 0x1b, 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a,
+ 0x10, 0xaf, 0x1a, 0x10, 0xaf, 0x1a, 0x10, 0xaf, 0x1a, 0x10, 0xb0, 0x1a,
+ 0x10, 0xb0, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x0f, 0xb0, 0x1a,
+ 0x10, 0xaf, 0x1a, 0x11, 0xaf, 0x1b, 0x11, 0xaf, 0x1a, 0x0f, 0xb2, 0x1a,
+ 0x10, 0xb2, 0x1a, 0x12, 0xb2, 0x1a, 0x12, 0xb1, 0x1a, 0x11, 0xb4, 0x1b,
+ 0x0f, 0xb5, 0x1a, 0x12, 0xbf, 0x1f, 0x19, 0xa6, 0x22, 0x07, 0x46, 0x0c,
+ 0x0a, 0x1e, 0x09, 0x0c, 0x15, 0x0d, 0x0e, 0x0f, 0x0e, 0x0d, 0x0f, 0x0e,
+ 0x0d, 0x0e, 0x0d, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0c, 0x0e, 0x0e, 0x0c,
+ 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c,
+ 0x0b, 0x0d, 0x0b, 0x0d, 0x0f, 0x0d, 0x05, 0x08, 0x04, 0x09, 0x0c, 0x09,
+ 0x0d, 0x11, 0x0c, 0x18, 0x1c, 0x15, 0x08, 0x0c, 0x04, 0x02, 0x03, 0x00,
+ 0x06, 0x06, 0x02, 0x0e, 0x0c, 0x0b, 0x08, 0x07, 0x06, 0x07, 0x06, 0x05,
+ 0x0e, 0x0d, 0x0c, 0x09, 0x07, 0x06, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01,
+ 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x02, 0x02, 0x01, 0x0b, 0x06,
+ 0x00, 0x10, 0x03, 0x00, 0x14, 0x01, 0x05, 0x39, 0x08, 0x18, 0x94, 0x1e,
+ 0x05, 0x99, 0x15, 0x02, 0x9a, 0x13, 0x0a, 0xa5, 0x16, 0x0e, 0xad, 0x18,
+ 0x11, 0xb3, 0x1a, 0x12, 0xb2, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a,
+ 0x10, 0xb0, 0x1a, 0x10, 0xb0, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c, 0x12, 0xb2, 0x1c,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a,
+ 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x10, 0xb1, 0x1a, 0x11, 0xb1, 0x1a,
+ 0x10, 0xb0, 0x1a, 0x11, 0xb0, 0x1a, 0x10, 0xaf, 0x1b, 0x10, 0xb0, 0x1a,
+ 0x0f, 0xb2, 0x1a, 0x10, 0xb2, 0x1a, 0x12, 0xb2, 0x1a, 0x13, 0xb2, 0x1a,
+ 0x12, 0xb4, 0x1a, 0x0f, 0xb5, 0x1a, 0x12, 0xbf, 0x1e, 0x19, 0xa6, 0x22,
+ 0x08, 0x47, 0x0c, 0x0a, 0x1e, 0x09, 0x0c, 0x15, 0x0d, 0x0e, 0x0f, 0x0e,
+ 0x0d, 0x0f, 0x0e, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0c,
+ 0x0e, 0x0e, 0x0c, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0c,
+ 0x0d, 0x0d, 0x0c, 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0d, 0x04, 0x07, 0x04,
+ 0x08, 0x0b, 0x09, 0x0d, 0x10, 0x0c, 0x18, 0x1b, 0x15, 0x08, 0x0b, 0x04,
+ 0x02, 0x03, 0x00, 0x07, 0x06, 0x03, 0x10, 0x0e, 0x0d, 0x0d, 0x0c, 0x0a,
+ 0x0c, 0x0a, 0x09, 0x11, 0x0f, 0x0e, 0x09, 0x08, 0x07, 0x02, 0x01, 0x01,
+ 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x03, 0x02,
+ 0x01, 0x0c, 0x06, 0x00, 0x10, 0x03, 0x00, 0x14, 0x01, 0x05, 0x38, 0x07,
+ 0x18, 0x94, 0x1e, 0x06, 0x9a, 0x15, 0x03, 0x9b, 0x13, 0x0b, 0xa7, 0x17,
+ 0x0e, 0xaf, 0x19, 0x11, 0xb5, 0x1b, 0x12, 0xb4, 0x1b, 0x10, 0xb3, 0x1a,
+ 0x11, 0xb4, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb2, 0x1b, 0x11, 0xb2, 0x1b,
+ 0x11, 0xb2, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb4, 0x1a,
+ 0x11, 0xb4, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+ 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+ 0x11, 0xb3, 0x1b, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+ 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+ 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+ 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb4, 0x1c,
+ 0x12, 0xb4, 0x1c, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+ 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b, 0x11, 0xb3, 0x1b,
+ 0x12, 0xb3, 0x1a, 0x11, 0xb3, 0x1b, 0x12, 0xb3, 0x1b, 0x11, 0xb2, 0x1c,
+ 0x11, 0xb2, 0x1a, 0x10, 0xb4, 0x1b, 0x11, 0xb4, 0x1b, 0x14, 0xb4, 0x1a,
+ 0x14, 0xb4, 0x1b, 0x13, 0xb6, 0x1b, 0x10, 0xb7, 0x1a, 0x12, 0xc1, 0x1f,
+ 0x19, 0xa7, 0x22, 0x09, 0x47, 0x0c, 0x0a, 0x1e, 0x09, 0x0d, 0x15, 0x0d,
+ 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0c, 0x0e, 0x0e, 0x0c, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0b, 0x0d, 0x0c, 0x0d, 0x0f, 0x0e,
+ 0x04, 0x07, 0x05, 0x09, 0x0b, 0x09, 0x0d, 0x10, 0x0b, 0x17, 0x1b, 0x14,
+ 0x07, 0x0b, 0x04, 0x02, 0x03, 0x00, 0x06, 0x06, 0x03, 0x14, 0x12, 0x11,
+ 0x1c, 0x19, 0x18, 0x1c, 0x19, 0x18, 0x19, 0x17, 0x17, 0x0c, 0x0a, 0x09,
+ 0x03, 0x01, 0x01, 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x03,
+ 0x00, 0x04, 0x02, 0x00, 0x0b, 0x05, 0x01, 0x10, 0x03, 0x00, 0x14, 0x01,
+ 0x06, 0x39, 0x08, 0x19, 0x95, 0x1f, 0x06, 0x9b, 0x16, 0x04, 0x9c, 0x14,
+ 0x0c, 0xa8, 0x18, 0x0f, 0xb2, 0x1a, 0x12, 0xb7, 0x1c, 0x11, 0xb6, 0x1c,
+ 0x11, 0xb5, 0x1b, 0x12, 0xb6, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c,
+ 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c,
+ 0x12, 0xb6, 0x1b, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c,
+ 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c,
+ 0x12, 0xb6, 0x1c, 0x12, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+ 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+ 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+ 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c,
+ 0x13, 0xb6, 0x1c, 0x13, 0xb6, 0x1c, 0x12, 0xb4, 0x1c, 0x12, 0xb5, 0x1c,
+ 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c, 0x12, 0xb5, 0x1c,
+ 0x12, 0xb5, 0x1c, 0x13, 0xb4, 0x1b, 0x12, 0xb5, 0x1c, 0x13, 0xb5, 0x1c,
+ 0x12, 0xb4, 0x1d, 0x12, 0xb5, 0x1b, 0x11, 0xb7, 0x1c, 0x12, 0xb7, 0x1c,
+ 0x15, 0xb7, 0x1b, 0x15, 0xb7, 0x1c, 0x14, 0xb8, 0x1c, 0x11, 0xb9, 0x1b,
+ 0x13, 0xc4, 0x20, 0x1a, 0xa9, 0x23, 0x0a, 0x48, 0x0b, 0x0b, 0x1f, 0x09,
+ 0x0e, 0x15, 0x0d, 0x0f, 0x10, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e,
+ 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0d,
+ 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0c, 0x0e, 0x0c,
+ 0x0e, 0x10, 0x0f, 0x05, 0x08, 0x05, 0x0a, 0x0c, 0x09, 0x0d, 0x10, 0x0b,
+ 0x16, 0x1a, 0x14, 0x06, 0x0b, 0x04, 0x02, 0x03, 0x00, 0x06, 0x05, 0x03,
+ 0x19, 0x17, 0x15, 0x2b, 0x28, 0x28, 0x2e, 0x2b, 0x2a, 0x24, 0x21, 0x1f,
+ 0x0f, 0x0c, 0x0b, 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x01, 0x02, 0x03, 0x00, 0x04, 0x02, 0x00, 0x0b, 0x05, 0x01, 0x10, 0x03,
+ 0x00, 0x14, 0x01, 0x06, 0x38, 0x07, 0x19, 0x96, 0x1e, 0x06, 0x9c, 0x16,
+ 0x06, 0x9e, 0x15, 0x0d, 0xaa, 0x19, 0x10, 0xb3, 0x1b, 0x12, 0xb8, 0x1c,
+ 0x12, 0xb7, 0x1c, 0x12, 0xb7, 0x1b, 0x13, 0xb8, 0x1c, 0x13, 0xb7, 0x1d,
+ 0x13, 0xb6, 0x1d, 0x13, 0xb6, 0x1d, 0x13, 0xb6, 0x1d, 0x13, 0xb7, 0x1d,
+ 0x13, 0xb7, 0x1d, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb7, 0x1c,
+ 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c,
+ 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb8, 0x1c, 0x13, 0xb7, 0x1c,
+ 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+ 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+ 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+ 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb6, 0x1c,
+ 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c,
+ 0x13, 0xb7, 0x1c, 0x13, 0xb7, 0x1c, 0x13, 0xb6, 0x1c, 0x12, 0xb7, 0x1d,
+ 0x13, 0xb7, 0x1d, 0x13, 0xb6, 0x1d, 0x13, 0xb7, 0x1b, 0x12, 0xb9, 0x1c,
+ 0x13, 0xb8, 0x1c, 0x15, 0xb8, 0x1c, 0x15, 0xb8, 0x1d, 0x14, 0xba, 0x1c,
+ 0x11, 0xbb, 0x1c, 0x13, 0xc6, 0x21, 0x1a, 0xab, 0x23, 0x0a, 0x49, 0x0b,
+ 0x0b, 0x20, 0x09, 0x0f, 0x15, 0x0d, 0x0f, 0x10, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x10, 0x0f, 0x0f, 0x0f, 0x0e, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e,
+ 0x0e, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0e,
+ 0x0e, 0x0e, 0x0d, 0x0f, 0x10, 0x0f, 0x05, 0x08, 0x05, 0x0a, 0x0d, 0x0a,
+ 0x0c, 0x0f, 0x0b, 0x16, 0x1a, 0x14, 0x05, 0x0a, 0x04, 0x02, 0x04, 0x00,
+ 0x07, 0x05, 0x04, 0x20, 0x1d, 0x1b, 0x3f, 0x3b, 0x3a, 0x41, 0x3d, 0x3c,
+ 0x29, 0x26, 0x25, 0x0e, 0x0c, 0x0b, 0x04, 0x02, 0x01, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x03, 0x02, 0x00, 0x0b, 0x04,
+ 0x00, 0x10, 0x02, 0x00, 0x14, 0x01, 0x05, 0x38, 0x07, 0x18, 0x95, 0x1e,
+ 0x06, 0x9d, 0x16, 0x06, 0x9f, 0x15, 0x0d, 0xac, 0x19, 0x11, 0xb4, 0x1a,
+ 0x13, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb7, 0x1c, 0x14, 0xb9, 0x1c,
+ 0x14, 0xb8, 0x1e, 0x14, 0xb7, 0x1e, 0x14, 0xb7, 0x1e, 0x14, 0xb7, 0x1e,
+ 0x14, 0xb8, 0x1e, 0x14, 0xb8, 0x1e, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1d,
+ 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d,
+ 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb8, 0x1d,
+ 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+ 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+ 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b,
+ 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+ 0x14, 0xb8, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d,
+ 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x14, 0xb8, 0x1c,
+ 0x12, 0xb7, 0x1d, 0x13, 0xb7, 0x1c, 0x12, 0xb6, 0x1d, 0x12, 0xb7, 0x1c,
+ 0x11, 0xb9, 0x1d, 0x12, 0xb8, 0x1d, 0x14, 0xb8, 0x1c, 0x16, 0xb9, 0x1d,
+ 0x15, 0xbc, 0x1c, 0x12, 0xbd, 0x1c, 0x14, 0xc6, 0x20, 0x1b, 0xab, 0x23,
+ 0x0b, 0x4a, 0x0c, 0x0c, 0x21, 0x0a, 0x10, 0x16, 0x0e, 0x10, 0x0f, 0x10,
+ 0x10, 0x0f, 0x10, 0x10, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x0f,
+ 0x0e, 0x0e, 0x0f, 0x0e, 0x0f, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0e,
+ 0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0e, 0x0f, 0x11, 0x10, 0x05, 0x08, 0x05,
+ 0x0a, 0x0d, 0x0a, 0x0d, 0x10, 0x0b, 0x15, 0x19, 0x14, 0x05, 0x0a, 0x04,
+ 0x03, 0x05, 0x00, 0x09, 0x06, 0x05, 0x25, 0x21, 0x20, 0x4c, 0x47, 0x47,
+ 0x4b, 0x47, 0x46, 0x27, 0x24, 0x23, 0x0a, 0x08, 0x07, 0x04, 0x02, 0x01,
+ 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x02, 0x04, 0x00, 0x03, 0x02,
+ 0x01, 0x0b, 0x03, 0x00, 0x10, 0x01, 0x00, 0x14, 0x00, 0x05, 0x37, 0x07,
+ 0x17, 0x95, 0x1e, 0x06, 0x9e, 0x16, 0x06, 0xa0, 0x15, 0x0d, 0xac, 0x1a,
+ 0x12, 0xb5, 0x1b, 0x14, 0xb9, 0x1d, 0x13, 0xb8, 0x1d, 0x13, 0xb8, 0x1d,
+ 0x14, 0xb9, 0x1c, 0x14, 0xb8, 0x1e, 0x14, 0xb7, 0x1e, 0x14, 0xb7, 0x1e,
+ 0x14, 0xb7, 0x1e, 0x14, 0xb8, 0x1e, 0x14, 0xb8, 0x1e, 0x14, 0xb9, 0x1d,
+ 0x14, 0xb9, 0x1d, 0x12, 0xb8, 0x1d, 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d,
+ 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d, 0x12, 0xb9, 0x1d,
+ 0x12, 0xb9, 0x1d, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+ 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b, 0x12, 0xb7, 0x1b,
+ 0x12, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b,
+ 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b, 0x13, 0xb7, 0x1b,
+ 0x12, 0xb7, 0x1b, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d,
+ 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d, 0x14, 0xba, 0x1d,
+ 0x14, 0xba, 0x1d, 0x12, 0xb8, 0x1d, 0x13, 0xb7, 0x1c, 0x12, 0xb6, 0x1d,
+ 0x12, 0xb7, 0x1c, 0x11, 0xb9, 0x1d, 0x12, 0xb8, 0x1d, 0x14, 0xb8, 0x1d,
+ 0x16, 0xb9, 0x1d, 0x15, 0xbd, 0x1c, 0x12, 0xbe, 0x1c, 0x15, 0xc7, 0x20,
+ 0x1b, 0xac, 0x23, 0x0b, 0x4a, 0x0c, 0x0c, 0x22, 0x0a, 0x10, 0x16, 0x0e,
+ 0x10, 0x10, 0x10, 0x10, 0x0f, 0x10, 0x10, 0x0e, 0x11, 0x0e, 0x0e, 0x10,
+ 0x0e, 0x0f, 0x10, 0x0e, 0x0f, 0x10, 0x0e, 0x0f, 0x10, 0x0e, 0x0f, 0x10,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0e, 0x0f, 0x0f, 0x10, 0x12, 0x11,
+ 0x05, 0x09, 0x06, 0x0a, 0x0e, 0x0b, 0x0d, 0x10, 0x0c, 0x16, 0x19, 0x15,
+ 0x06, 0x09, 0x05, 0x03, 0x05, 0x00, 0x0a, 0x06, 0x05, 0x28, 0x24, 0x23,
+ 0x52, 0x4e, 0x4e, 0x4f, 0x4b, 0x4b, 0x24, 0x21, 0x21, 0x06, 0x06, 0x05,
+ 0x03, 0x02, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x03, 0x01, 0x01, 0x02, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x01, 0x03, 0x02, 0x02, 0x0c, 0x04, 0x00, 0x0e, 0x02, 0x00, 0x13, 0x00,
+ 0x05, 0x36, 0x07, 0x17, 0x94, 0x1e, 0x06, 0x9e, 0x16, 0x07, 0xa2, 0x15,
+ 0x0c, 0xac, 0x19, 0x11, 0xb8, 0x1b, 0x13, 0xbd, 0x1d, 0x12, 0xbb, 0x1d,
+ 0x12, 0xba, 0x1d, 0x13, 0xbb, 0x1d, 0x13, 0xba, 0x1e, 0x13, 0xba, 0x1e,
+ 0x13, 0xba, 0x1e, 0x13, 0xba, 0x1e, 0x14, 0xbb, 0x1d, 0x14, 0xbb, 0x1d,
+ 0x14, 0xbb, 0x1d, 0x14, 0xbb, 0x1d, 0x13, 0xba, 0x1d, 0x13, 0xb9, 0x1d,
+ 0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d,
+ 0x13, 0xb9, 0x1d, 0x13, 0xb9, 0x1d, 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b,
+ 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b,
+ 0x13, 0xb8, 0x1b, 0x13, 0xb8, 0x1b, 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c,
+ 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c, 0x13, 0xba, 0x1c,
+ 0x13, 0xba, 0x1c, 0x12, 0xba, 0x1c, 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d,
+ 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d,
+ 0x13, 0xbb, 0x1d, 0x13, 0xbb, 0x1d, 0x11, 0xba, 0x1d, 0x12, 0xba, 0x1c,
+ 0x13, 0xb7, 0x1d, 0x13, 0xb8, 0x1c, 0x12, 0xba, 0x1d, 0x13, 0xba, 0x1d,
+ 0x15, 0xba, 0x1d, 0x16, 0xbb, 0x1d, 0x15, 0xbe, 0x1d, 0x12, 0xc0, 0x1e,
+ 0x15, 0xc9, 0x23, 0x1a, 0xaa, 0x25, 0x0b, 0x4a, 0x0e, 0x0c, 0x21, 0x0b,
+ 0x0f, 0x16, 0x0d, 0x10, 0x11, 0x0f, 0x10, 0x10, 0x0f, 0x10, 0x0e, 0x10,
+ 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
+ 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x0f, 0x0f, 0x0f, 0x0e,
+ 0x11, 0x13, 0x11, 0x07, 0x09, 0x06, 0x0b, 0x0d, 0x0a, 0x0c, 0x0e, 0x0b,
+ 0x16, 0x18, 0x15, 0x08, 0x09, 0x06, 0x03, 0x04, 0x00, 0x08, 0x06, 0x04,
+ 0x21, 0x1e, 0x1d, 0x3f, 0x3c, 0x3b, 0x3c, 0x3a, 0x39, 0x1c, 0x1a, 0x1a,
+ 0x05, 0x04, 0x04, 0x02, 0x02, 0x01, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x04, 0x01, 0x03, 0x02, 0x01, 0x01,
+ 0x00, 0x02, 0x01, 0x01, 0x04, 0x01, 0x04, 0x0e, 0x06, 0x01, 0x0d, 0x01,
+ 0x00, 0x12, 0x00, 0x05, 0x33, 0x07, 0x17, 0x94, 0x1f, 0x06, 0x9e, 0x16,
+ 0x07, 0xa4, 0x15, 0x0b, 0xac, 0x18, 0x11, 0xbb, 0x1c, 0x14, 0xc0, 0x1e,
+ 0x12, 0xbd, 0x1c, 0x12, 0xbd, 0x1c, 0x13, 0xbd, 0x1e, 0x13, 0xbd, 0x1d,
+ 0x13, 0xbc, 0x1d, 0x13, 0xbc, 0x1e, 0x13, 0xbc, 0x1e, 0x13, 0xbd, 0x1d,
+ 0x13, 0xbd, 0x1d, 0x13, 0xbe, 0x1c, 0x13, 0xbe, 0x1c, 0x14, 0xbb, 0x1c,
+ 0x14, 0xb9, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c,
+ 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xba, 0x1c, 0x14, 0xb9, 0x1c,
+ 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c,
+ 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x14, 0xb9, 0x1c, 0x12, 0xbc, 0x1d,
+ 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d,
+ 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1d, 0x12, 0xbc, 0x1e,
+ 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e,
+ 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x12, 0xbc, 0x1e, 0x10, 0xbd, 0x1c,
+ 0x11, 0xbc, 0x1c, 0x14, 0xb9, 0x1d, 0x14, 0xb9, 0x1d, 0x13, 0xbb, 0x1d,
+ 0x14, 0xbb, 0x1c, 0x16, 0xbb, 0x1c, 0x17, 0xbc, 0x1c, 0x15, 0xbf, 0x1e,
+ 0x12, 0xc1, 0x1f, 0x16, 0xcb, 0x26, 0x19, 0xa9, 0x26, 0x0b, 0x4a, 0x10,
+ 0x0c, 0x21, 0x0c, 0x0f, 0x17, 0x0c, 0x10, 0x12, 0x0e, 0x10, 0x10, 0x0e,
+ 0x10, 0x0f, 0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0f, 0x0f,
+ 0x10, 0x10, 0x0f, 0x10, 0x0e, 0x0f, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e,
+ 0x0e, 0x0f, 0x0d, 0x12, 0x13, 0x11, 0x09, 0x0a, 0x07, 0x0a, 0x0c, 0x09,
+ 0x0c, 0x0d, 0x0a, 0x16, 0x18, 0x14, 0x0a, 0x0b, 0x08, 0x02, 0x03, 0x01,
+ 0x05, 0x06, 0x03, 0x17, 0x17, 0x15, 0x24, 0x24, 0x22, 0x24, 0x24, 0x22,
+ 0x13, 0x13, 0x11, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x04, 0x01, 0x03,
+ 0x02, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x04, 0x02, 0x06, 0x0e, 0x07,
+ 0x01, 0x0e, 0x02, 0x01, 0x12, 0x01, 0x05, 0x33, 0x07, 0x17, 0x93, 0x1f,
+ 0x07, 0x9e, 0x16, 0x08, 0xa6, 0x16, 0x0b, 0xac, 0x17, 0x12, 0xbd, 0x1d,
+ 0x15, 0xc3, 0x1e, 0x13, 0xbf, 0x1d, 0x12, 0xbf, 0x1d, 0x13, 0xbe, 0x1e,
+ 0x13, 0xbe, 0x1d, 0x13, 0xbe, 0x1d, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+ 0x14, 0xbf, 0x1d, 0x14, 0xbf, 0x1d, 0x14, 0xbf, 0x1c, 0x14, 0xbf, 0x1d,
+ 0x15, 0xbe, 0x1d, 0x14, 0xbc, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d,
+ 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d,
+ 0x15, 0xbd, 0x1d, 0x15, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d,
+ 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbd, 0x1d, 0x14, 0xbc, 0x1d,
+ 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+ 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+ 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e,
+ 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e, 0x12, 0xbd, 0x1e,
+ 0x12, 0xc0, 0x1d, 0x13, 0xbf, 0x1d, 0x15, 0xbc, 0x1e, 0x16, 0xbb, 0x1e,
+ 0x14, 0xbe, 0x1e, 0x15, 0xbe, 0x1d, 0x18, 0xbe, 0x1d, 0x18, 0xbf, 0x1d,
+ 0x15, 0xc0, 0x1f, 0x11, 0xc2, 0x20, 0x16, 0xcc, 0x28, 0x18, 0xa7, 0x27,
+ 0x0b, 0x49, 0x11, 0x0c, 0x21, 0x0d, 0x0f, 0x17, 0x0c, 0x11, 0x13, 0x0e,
+ 0x11, 0x11, 0x0e, 0x11, 0x10, 0x0f, 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f,
+ 0x12, 0x10, 0x0f, 0x12, 0x11, 0x0f, 0x12, 0x0f, 0x0f, 0x0f, 0x10, 0x0f,
+ 0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0d, 0x13, 0x14, 0x10, 0x09, 0x0a, 0x06,
+ 0x0a, 0x0b, 0x08, 0x0b, 0x0c, 0x0a, 0x16, 0x16, 0x14, 0x0b, 0x0a, 0x08,
+ 0x02, 0x02, 0x01, 0x04, 0x05, 0x03, 0x10, 0x11, 0x0f, 0x10, 0x11, 0x0f,
+ 0x11, 0x12, 0x10, 0x0c, 0x0c, 0x0b, 0x03, 0x03, 0x02, 0x02, 0x03, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x03, 0x01, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x04, 0x02,
+ 0x06, 0x0e, 0x08, 0x02, 0x0f, 0x03, 0x01, 0x13, 0x02, 0x06, 0x34, 0x07,
+ 0x17, 0x93, 0x1e, 0x07, 0x9f, 0x16, 0x09, 0xa8, 0x17, 0x0d, 0xad, 0x18,
+ 0x14, 0xbd, 0x1d, 0x15, 0xc2, 0x1f, 0x14, 0xc0, 0x1e, 0x14, 0xc1, 0x1e,
+ 0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e, 0x14, 0xbe, 0x1e, 0x14, 0xbe, 0x1e,
+ 0x15, 0xbe, 0x1e, 0x16, 0xbe, 0x1d, 0x15, 0xbe, 0x1d, 0x16, 0xbf, 0x1d,
+ 0x14, 0xc0, 0x1d, 0x14, 0xc2, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f,
+ 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f,
+ 0x13, 0xc1, 0x1f, 0x14, 0xc2, 0x1f, 0x14, 0xc2, 0x1f, 0x13, 0xc0, 0x1f,
+ 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f, 0x13, 0xc1, 0x1f,
+ 0x14, 0xc1, 0x1f, 0x13, 0xbf, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e,
+ 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbf, 0x1e,
+ 0x15, 0xbf, 0x1e, 0x13, 0xbd, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+ 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e, 0x13, 0xbe, 0x1e,
+ 0x13, 0xbe, 0x1e, 0x14, 0xc3, 0x1f, 0x16, 0xc2, 0x1f, 0x17, 0xbe, 0x20,
+ 0x17, 0xbe, 0x20, 0x15, 0xc1, 0x20, 0x17, 0xc2, 0x1f, 0x18, 0xc2, 0x1f,
+ 0x18, 0xc2, 0x1f, 0x15, 0xc0, 0x1e, 0x12, 0xc1, 0x1f, 0x16, 0xcc, 0x27,
+ 0x19, 0xa7, 0x26, 0x0b, 0x49, 0x11, 0x0d, 0x21, 0x0d, 0x10, 0x17, 0x0c,
+ 0x13, 0x13, 0x0d, 0x12, 0x12, 0x0f, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10,
+ 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10,
+ 0x11, 0x12, 0x10, 0x11, 0x12, 0x0f, 0x10, 0x11, 0x0d, 0x12, 0x12, 0x10,
+ 0x08, 0x09, 0x05, 0x0a, 0x0b, 0x08, 0x0b, 0x0c, 0x09, 0x13, 0x14, 0x11,
+ 0x09, 0x09, 0x06, 0x01, 0x01, 0x00, 0x03, 0x04, 0x03, 0x0e, 0x0f, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0f, 0x0d, 0x09, 0x0a, 0x08, 0x02, 0x02, 0x02,
+ 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x01,
+ 0x01, 0x04, 0x02, 0x06, 0x0e, 0x08, 0x02, 0x10, 0x04, 0x02, 0x14, 0x03,
+ 0x06, 0x35, 0x07, 0x17, 0x93, 0x1e, 0x07, 0xa0, 0x17, 0x0a, 0xa9, 0x17,
+ 0x0e, 0xaf, 0x19, 0x15, 0xbe, 0x1e, 0x17, 0xc3, 0x1f, 0x15, 0xc0, 0x1e,
+ 0x16, 0xc2, 0x1f, 0x15, 0xc0, 0x1e, 0x15, 0xbf, 0x1e, 0x15, 0xbe, 0x1e,
+ 0x15, 0xbe, 0x1e, 0x16, 0xbe, 0x1e, 0x17, 0xbf, 0x1e, 0x16, 0xbf, 0x1e,
+ 0x17, 0xbf, 0x1d, 0x15, 0xc0, 0x1e, 0x13, 0xc3, 0x20, 0x12, 0xc4, 0x20,
+ 0x13, 0xc4, 0x20, 0x13, 0xc4, 0x20, 0x13, 0xc4, 0x20, 0x13, 0xc4, 0x20,
+ 0x13, 0xc4, 0x20, 0x12, 0xc4, 0x20, 0x14, 0xc5, 0x21, 0x14, 0xc5, 0x21,
+ 0x12, 0xc3, 0x20, 0x12, 0xc4, 0x20, 0x12, 0xc4, 0x20, 0x12, 0xc4, 0x20,
+ 0x12, 0xc4, 0x20, 0x14, 0xc3, 0x20, 0x14, 0xc0, 0x1e, 0x16, 0xbf, 0x1e,
+ 0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e,
+ 0x16, 0xbf, 0x1e, 0x16, 0xbf, 0x1e, 0x14, 0xbe, 0x1e, 0x14, 0xbf, 0x1e,
+ 0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e, 0x14, 0xbf, 0x1e,
+ 0x14, 0xbf, 0x1e, 0x14, 0xc0, 0x1e, 0x16, 0xc5, 0x20, 0x18, 0xc5, 0x20,
+ 0x18, 0xc1, 0x22, 0x19, 0xc1, 0x22, 0x16, 0xc4, 0x21, 0x18, 0xc5, 0x20,
+ 0x19, 0xc5, 0x20, 0x18, 0xc4, 0x20, 0x14, 0xc0, 0x1d, 0x11, 0xc2, 0x1f,
+ 0x16, 0xcd, 0x27, 0x19, 0xa7, 0x26, 0x0b, 0x48, 0x10, 0x0e, 0x20, 0x0d,
+ 0x11, 0x17, 0x0c, 0x15, 0x13, 0x0d, 0x13, 0x13, 0x10, 0x13, 0x12, 0x11,
+ 0x13, 0x12, 0x11, 0x13, 0x12, 0x11, 0x13, 0x12, 0x11, 0x13, 0x12, 0x11,
+ 0x13, 0x12, 0x11, 0x12, 0x13, 0x11, 0x12, 0x13, 0x10, 0x10, 0x11, 0x0e,
+ 0x11, 0x11, 0x0f, 0x07, 0x08, 0x05, 0x0a, 0x0b, 0x08, 0x0a, 0x0c, 0x0a,
+ 0x12, 0x13, 0x10, 0x08, 0x08, 0x04, 0x01, 0x01, 0x00, 0x02, 0x03, 0x02,
+ 0x0c, 0x0c, 0x0b, 0x0b, 0x0c, 0x0a, 0x0b, 0x0b, 0x0a, 0x07, 0x08, 0x07,
+ 0x02, 0x02, 0x01, 0x03, 0x04, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x02, 0x01, 0x01,
+ 0x00, 0x02, 0x01, 0x01, 0x04, 0x02, 0x06, 0x0e, 0x06, 0x02, 0x0f, 0x03,
+ 0x01, 0x12, 0x02, 0x05, 0x33, 0x07, 0x15, 0x91, 0x1d, 0x07, 0xa1, 0x17,
+ 0x0a, 0xa9, 0x17, 0x0e, 0xb0, 0x19, 0x16, 0xc0, 0x1e, 0x17, 0xc3, 0x20,
+ 0x15, 0xc1, 0x1e, 0x16, 0xc3, 0x1f, 0x17, 0xc2, 0x20, 0x17, 0xc2, 0x20,
+ 0x17, 0xc1, 0x20, 0x17, 0xc1, 0x20, 0x18, 0xc1, 0x20, 0x19, 0xc1, 0x20,
+ 0x18, 0xc1, 0x20, 0x19, 0xc2, 0x1f, 0x17, 0xc2, 0x20, 0x15, 0xc4, 0x20,
+ 0x14, 0xc4, 0x20, 0x15, 0xc4, 0x20, 0x15, 0xc4, 0x20, 0x15, 0xc4, 0x20,
+ 0x15, 0xc4, 0x20, 0x15, 0xc4, 0x20, 0x14, 0xc4, 0x20, 0x16, 0xc5, 0x21,
+ 0x16, 0xc5, 0x21, 0x14, 0xc4, 0x20, 0x14, 0xc5, 0x20, 0x14, 0xc5, 0x20,
+ 0x14, 0xc5, 0x20, 0x14, 0xc5, 0x20, 0x16, 0xc4, 0x20, 0x15, 0xc2, 0x1f,
+ 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f,
+ 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x17, 0xc2, 0x1f, 0x16, 0xc2, 0x20,
+ 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20,
+ 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc3, 0x20, 0x16, 0xc6, 0x20,
+ 0x18, 0xc6, 0x20, 0x18, 0xc3, 0x22, 0x18, 0xc2, 0x22, 0x16, 0xc5, 0x21,
+ 0x17, 0xc7, 0x20, 0x18, 0xc7, 0x20, 0x18, 0xc6, 0x20, 0x14, 0xc3, 0x1f,
+ 0x13, 0xc5, 0x20, 0x17, 0xcf, 0x29, 0x1a, 0xa9, 0x27, 0x0d, 0x4a, 0x11,
+ 0x0f, 0x22, 0x0d, 0x12, 0x18, 0x0d, 0x15, 0x14, 0x0e, 0x13, 0x12, 0x0f,
+ 0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11,
+ 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x11, 0x12, 0x10, 0x11, 0x12, 0x10,
+ 0x12, 0x12, 0x10, 0x11, 0x12, 0x10, 0x08, 0x09, 0x06, 0x0b, 0x0c, 0x09,
+ 0x0c, 0x0e, 0x0b, 0x12, 0x13, 0x10, 0x08, 0x09, 0x05, 0x01, 0x02, 0x00,
+ 0x03, 0x04, 0x03, 0x0b, 0x0c, 0x0b, 0x08, 0x08, 0x07, 0x07, 0x08, 0x06,
+ 0x05, 0x05, 0x04, 0x01, 0x02, 0x01, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x03, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01, 0x04, 0x02, 0x05, 0x0d, 0x06,
+ 0x01, 0x0e, 0x02, 0x01, 0x11, 0x02, 0x05, 0x32, 0x06, 0x14, 0x8f, 0x1c,
+ 0x07, 0xa2, 0x17, 0x09, 0xaa, 0x17, 0x0d, 0xb1, 0x1a, 0x16, 0xc1, 0x1f,
+ 0x18, 0xc4, 0x20, 0x16, 0xc2, 0x1f, 0x17, 0xc3, 0x20, 0x18, 0xc4, 0x21,
+ 0x18, 0xc3, 0x21, 0x19, 0xc2, 0x22, 0x19, 0xc2, 0x22, 0x19, 0xc2, 0x22,
+ 0x1a, 0xc3, 0x21, 0x19, 0xc3, 0x21, 0x1a, 0xc3, 0x20, 0x19, 0xc4, 0x21,
+ 0x16, 0xc3, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f,
+ 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc4, 0x1f, 0x16, 0xc3, 0x1f,
+ 0x17, 0xc5, 0x20, 0x17, 0xc5, 0x20, 0x17, 0xc4, 0x20, 0x17, 0xc4, 0x21,
+ 0x17, 0xc4, 0x21, 0x17, 0xc4, 0x21, 0x17, 0xc4, 0x21, 0x17, 0xc4, 0x21,
+ 0x17, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20,
+ 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x20, 0x18, 0xc4, 0x1f,
+ 0x18, 0xc5, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21,
+ 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21, 0x18, 0xc6, 0x21,
+ 0x17, 0xc8, 0x1f, 0x18, 0xc7, 0x20, 0x19, 0xc4, 0x21, 0x18, 0xc3, 0x21,
+ 0x16, 0xc5, 0x20, 0x16, 0xc8, 0x20, 0x18, 0xc8, 0x20, 0x18, 0xc6, 0x20,
+ 0x15, 0xc5, 0x20, 0x14, 0xc7, 0x20, 0x18, 0xd1, 0x29, 0x1a, 0xab, 0x28,
+ 0x0e, 0x4b, 0x12, 0x0f, 0x23, 0x0e, 0x13, 0x18, 0x0d, 0x15, 0x14, 0x0e,
+ 0x13, 0x12, 0x0f, 0x12, 0x11, 0x11, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10,
+ 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x12, 0x11, 0x10, 0x11, 0x11, 0x10,
+ 0x11, 0x11, 0x10, 0x13, 0x14, 0x11, 0x11, 0x13, 0x10, 0x09, 0x0a, 0x07,
+ 0x0c, 0x0d, 0x0a, 0x0d, 0x0e, 0x0c, 0x12, 0x13, 0x10, 0x09, 0x0a, 0x05,
+ 0x02, 0x02, 0x01, 0x04, 0x05, 0x03, 0x0b, 0x0c, 0x0a, 0x06, 0x06, 0x05,
+ 0x05, 0x05, 0x04, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x04, 0x02, 0x02, 0x01, 0x03, 0x02, 0x01, 0x04, 0x01,
+ 0x05, 0x0d, 0x05, 0x02, 0x0e, 0x02, 0x00, 0x0f, 0x00, 0x04, 0x30, 0x05,
+ 0x12, 0x8d, 0x1b, 0x06, 0xa3, 0x17, 0x09, 0xaa, 0x17, 0x0d, 0xb3, 0x1a,
+ 0x17, 0xc3, 0x1f, 0x18, 0xc6, 0x21, 0x16, 0xc4, 0x1f, 0x17, 0xc4, 0x20,
+ 0x1a, 0xc6, 0x22, 0x1a, 0xc6, 0x23, 0x1b, 0xc5, 0x24, 0x1b, 0xc5, 0x24,
+ 0x1b, 0xc5, 0x24, 0x1b, 0xc6, 0x23, 0x1b, 0xc6, 0x23, 0x1b, 0xc6, 0x22,
+ 0x1b, 0xc6, 0x22, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f,
+ 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f, 0x19, 0xc4, 0x1f,
+ 0x19, 0xc3, 0x1f, 0x1a, 0xc5, 0x20, 0x1a, 0xc5, 0x20, 0x1a, 0xc4, 0x20,
+ 0x1a, 0xc4, 0x21, 0x1a, 0xc4, 0x21, 0x1a, 0xc4, 0x21, 0x1a, 0xc4, 0x21,
+ 0x1a, 0xc4, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21,
+ 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21, 0x19, 0xc7, 0x21,
+ 0x19, 0xc7, 0x20, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22,
+ 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22,
+ 0x1a, 0xc8, 0x22, 0x17, 0xc8, 0x20, 0x17, 0xc8, 0x20, 0x18, 0xc5, 0x21,
+ 0x17, 0xc4, 0x21, 0x15, 0xc6, 0x20, 0x15, 0xc9, 0x20, 0x17, 0xc9, 0x20,
+ 0x18, 0xc7, 0x20, 0x15, 0xc8, 0x21, 0x15, 0xcb, 0x21, 0x1a, 0xd4, 0x2a,
+ 0x1c, 0xad, 0x29, 0x0f, 0x4d, 0x12, 0x10, 0x24, 0x0e, 0x14, 0x19, 0x0d,
+ 0x15, 0x14, 0x0f, 0x13, 0x11, 0x0f, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10,
+ 0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0x11, 0x10, 0x0f, 0x11, 0x10, 0x0f,
+ 0x10, 0x10, 0x0f, 0x11, 0x11, 0x10, 0x14, 0x15, 0x12, 0x12, 0x13, 0x10,
+ 0x0b, 0x0b, 0x08, 0x0d, 0x0e, 0x0b, 0x0f, 0x0f, 0x0d, 0x13, 0x13, 0x10,
+ 0x0a, 0x0a, 0x07, 0x02, 0x03, 0x01, 0x04, 0x06, 0x04, 0x0a, 0x0b, 0x0a,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02, 0x01, 0x03, 0x02,
+ 0x02, 0x04, 0x02, 0x07, 0x0e, 0x06, 0x03, 0x0f, 0x03, 0x00, 0x10, 0x01,
+ 0x04, 0x31, 0x06, 0x12, 0x8e, 0x1a, 0x08, 0xa7, 0x18, 0x09, 0xae, 0x17,
+ 0x0d, 0xb7, 0x1b, 0x17, 0xc7, 0x21, 0x18, 0xc9, 0x22, 0x17, 0xc7, 0x21,
+ 0x19, 0xc8, 0x22, 0x1a, 0xc9, 0x22, 0x1a, 0xc8, 0x23, 0x1a, 0xc7, 0x24,
+ 0x1a, 0xc7, 0x24, 0x1a, 0xc7, 0x24, 0x1a, 0xc7, 0x23, 0x1a, 0xc7, 0x23,
+ 0x1a, 0xc8, 0x22, 0x1b, 0xc8, 0x22, 0x1a, 0xc6, 0x20, 0x1b, 0xc6, 0x20,
+ 0x1b, 0xc6, 0x20, 0x1b, 0xc6, 0x20, 0x1b, 0xc6, 0x20, 0x1b, 0xc6, 0x20,
+ 0x1b, 0xc6, 0x20, 0x1b, 0xc5, 0x20, 0x1c, 0xc7, 0x21, 0x1c, 0xc7, 0x21,
+ 0x1c, 0xc7, 0x21, 0x1b, 0xc6, 0x21, 0x1b, 0xc6, 0x21, 0x1b, 0xc6, 0x21,
+ 0x1b, 0xc6, 0x21, 0x1b, 0xc6, 0x21, 0x19, 0xc8, 0x22, 0x19, 0xc8, 0x21,
+ 0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21,
+ 0x19, 0xc8, 0x21, 0x19, 0xc8, 0x21, 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22,
+ 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22,
+ 0x1a, 0xca, 0x22, 0x1a, 0xca, 0x22, 0x19, 0xca, 0x21, 0x19, 0xca, 0x21,
+ 0x1a, 0xc7, 0x22, 0x18, 0xc7, 0x23, 0x15, 0xc9, 0x22, 0x15, 0xcb, 0x21,
+ 0x17, 0xcb, 0x21, 0x18, 0xc9, 0x21, 0x16, 0xca, 0x21, 0x16, 0xcc, 0x23,
+ 0x1c, 0xd5, 0x2b, 0x1d, 0xad, 0x29, 0x0f, 0x4c, 0x12, 0x10, 0x24, 0x0e,
+ 0x14, 0x19, 0x0e, 0x15, 0x14, 0x10, 0x13, 0x12, 0x10, 0x13, 0x11, 0x11,
+ 0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11, 0x13, 0x11, 0x11,
+ 0x13, 0x11, 0x11, 0x11, 0x12, 0x11, 0x12, 0x12, 0x11, 0x14, 0x15, 0x12,
+ 0x12, 0x12, 0x10, 0x0b, 0x0b, 0x09, 0x0c, 0x0c, 0x0a, 0x0e, 0x0e, 0x0c,
+ 0x11, 0x11, 0x0f, 0x09, 0x0a, 0x06, 0x02, 0x03, 0x01, 0x06, 0x07, 0x05,
+ 0x0a, 0x0c, 0x0a, 0x02, 0x03, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02,
+ 0x02, 0x03, 0x01, 0x02, 0x05, 0x02, 0x09, 0x10, 0x09, 0x07, 0x11, 0x07,
+ 0x02, 0x11, 0x03, 0x04, 0x32, 0x07, 0x11, 0x8e, 0x1a, 0x09, 0xab, 0x19,
+ 0x0a, 0xb1, 0x18, 0x0e, 0xbb, 0x1c, 0x18, 0xcc, 0x22, 0x19, 0xcd, 0x23,
+ 0x19, 0xca, 0x22, 0x1a, 0xcc, 0x23, 0x19, 0xca, 0x22, 0x19, 0xc9, 0x22,
+ 0x1a, 0xc8, 0x23, 0x1a, 0xc8, 0x23, 0x1a, 0xc8, 0x23, 0x1a, 0xc8, 0x23,
+ 0x1a, 0xc8, 0x24, 0x1a, 0xc9, 0x22, 0x1a, 0xc9, 0x22, 0x1c, 0xc9, 0x21,
+ 0x1e, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21,
+ 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x21, 0x1d, 0xc9, 0x22,
+ 0x1d, 0xc9, 0x22, 0x1d, 0xc9, 0x22, 0x1c, 0xc9, 0x21, 0x1c, 0xc9, 0x21,
+ 0x1c, 0xc9, 0x21, 0x1c, 0xc9, 0x21, 0x1c, 0xc9, 0x21, 0x1a, 0xc9, 0x23,
+ 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22,
+ 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xc9, 0x22, 0x19, 0xca, 0x22,
+ 0x19, 0xca, 0x22, 0x19, 0xca, 0x22, 0x19, 0xca, 0x22, 0x19, 0xca, 0x22,
+ 0x19, 0xca, 0x22, 0x19, 0xca, 0x22, 0x19, 0xcb, 0x22, 0x1b, 0xcc, 0x22,
+ 0x1a, 0xcb, 0x22, 0x1b, 0xc9, 0x23, 0x19, 0xc9, 0x24, 0x16, 0xcc, 0x23,
+ 0x16, 0xce, 0x22, 0x18, 0xce, 0x22, 0x19, 0xcc, 0x22, 0x17, 0xcb, 0x22,
+ 0x17, 0xcf, 0x24, 0x1d, 0xd7, 0x2c, 0x1e, 0xae, 0x2a, 0x0f, 0x4d, 0x13,
+ 0x11, 0x25, 0x0f, 0x14, 0x1a, 0x0f, 0x15, 0x15, 0x11, 0x14, 0x13, 0x11,
+ 0x14, 0x12, 0x12, 0x14, 0x12, 0x12, 0x14, 0x12, 0x12, 0x14, 0x12, 0x12,
+ 0x14, 0x12, 0x12, 0x14, 0x12, 0x12, 0x12, 0x13, 0x12, 0x12, 0x13, 0x11,
+ 0x14, 0x14, 0x12, 0x12, 0x12, 0x10, 0x0a, 0x0b, 0x09, 0x0b, 0x0b, 0x09,
+ 0x0d, 0x0e, 0x0b, 0x0f, 0x10, 0x0d, 0x08, 0x09, 0x05, 0x02, 0x03, 0x01,
+ 0x06, 0x08, 0x06, 0x0b, 0x0c, 0x0a, 0x03, 0x04, 0x02, 0x00, 0x01, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x03, 0x00, 0x02, 0x02, 0x02, 0x01, 0x02, 0x05, 0x02, 0x0b, 0x10, 0x0a,
+ 0x09, 0x11, 0x08, 0x02, 0x11, 0x03, 0x03, 0x33, 0x06, 0x0f, 0x8e, 0x19,
+ 0x0a, 0xb0, 0x1a, 0x09, 0xb5, 0x19, 0x0e, 0xbe, 0x1c, 0x19, 0xd0, 0x23,
+ 0x1a, 0xd2, 0x24, 0x1a, 0xcf, 0x23, 0x1b, 0xd0, 0x23, 0x1a, 0xcd, 0x22,
+ 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23,
+ 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x24, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23,
+ 0x1c, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23,
+ 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23, 0x1d, 0xce, 0x23,
+ 0x1d, 0xcd, 0x23, 0x1d, 0xcd, 0x23, 0x1d, 0xcd, 0x23, 0x1c, 0xcd, 0x22,
+ 0x1c, 0xcd, 0x22, 0x1c, 0xcd, 0x22, 0x1c, 0xcd, 0x22, 0x1c, 0xcd, 0x22,
+ 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23,
+ 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23, 0x1a, 0xcc, 0x23,
+ 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23,
+ 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcb, 0x23, 0x1a, 0xcc, 0x22,
+ 0x1d, 0xce, 0x24, 0x1d, 0xcc, 0x23, 0x1c, 0xcc, 0x24, 0x1b, 0xcc, 0x25,
+ 0x18, 0xcf, 0x24, 0x17, 0xd0, 0x23, 0x1a, 0xd0, 0x23, 0x1a, 0xcf, 0x23,
+ 0x18, 0xcc, 0x22, 0x19, 0xd0, 0x25, 0x1f, 0xd7, 0x2d, 0x1e, 0xad, 0x2a,
+ 0x0e, 0x4b, 0x12, 0x10, 0x25, 0x10, 0x14, 0x1a, 0x10, 0x15, 0x16, 0x11,
+ 0x15, 0x14, 0x11, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13,
+ 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x13, 0x14, 0x13,
+ 0x13, 0x13, 0x12, 0x14, 0x14, 0x12, 0x12, 0x13, 0x11, 0x0b, 0x0c, 0x0a,
+ 0x09, 0x0a, 0x07, 0x0d, 0x0e, 0x0b, 0x0e, 0x0f, 0x0c, 0x08, 0x09, 0x04,
+ 0x02, 0x03, 0x01, 0x06, 0x07, 0x05, 0x0a, 0x0b, 0x0a, 0x03, 0x04, 0x02,
+ 0x01, 0x01, 0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x03, 0x01, 0x02, 0x01, 0x02, 0x00, 0x03, 0x06, 0x02,
+ 0x0a, 0x10, 0x09, 0x09, 0x10, 0x09, 0x02, 0x10, 0x02, 0x03, 0x31, 0x05,
+ 0x0e, 0x8c, 0x17, 0x0b, 0xb5, 0x1a, 0x0a, 0xb6, 0x18, 0x0f, 0xc0, 0x1c,
+ 0x19, 0xd2, 0x23, 0x1a, 0xd5, 0x24, 0x1b, 0xd2, 0x23, 0x1c, 0xd3, 0x24,
+ 0x1b, 0xd0, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x24, 0x1b, 0xcd, 0x24,
+ 0x1b, 0xcd, 0x24, 0x1b, 0xcd, 0x24, 0x1b, 0xcd, 0x24, 0x1a, 0xcf, 0x23,
+ 0x1b, 0xcf, 0x23, 0x1a, 0xd1, 0x25, 0x1b, 0xd1, 0x25, 0x1a, 0xd1, 0x25,
+ 0x1a, 0xd1, 0x25, 0x1a, 0xd1, 0x25, 0x1a, 0xd1, 0x25, 0x1a, 0xd1, 0x25,
+ 0x1a, 0xd1, 0x25, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x25,
+ 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24, 0x1a, 0xd0, 0x24,
+ 0x1b, 0xd0, 0x24, 0x1b, 0xce, 0x24, 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23,
+ 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23, 0x1b, 0xce, 0x23,
+ 0x1b, 0xce, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23,
+ 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23, 0x1b, 0xcd, 0x23,
+ 0x1c, 0xce, 0x23, 0x1e, 0xd0, 0x24, 0x1f, 0xce, 0x24, 0x1e, 0xce, 0x26,
+ 0x1d, 0xce, 0x26, 0x1a, 0xd1, 0x25, 0x1a, 0xd2, 0x25, 0x1c, 0xd1, 0x23,
+ 0x1d, 0xd0, 0x24, 0x1a, 0xcc, 0x23, 0x1b, 0xcf, 0x26, 0x1f, 0xd6, 0x2d,
+ 0x1d, 0xac, 0x29, 0x0d, 0x4a, 0x11, 0x0f, 0x25, 0x0f, 0x13, 0x1b, 0x10,
+ 0x14, 0x16, 0x11, 0x14, 0x14, 0x11, 0x14, 0x13, 0x12, 0x14, 0x14, 0x12,
+ 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x13, 0x12,
+ 0x13, 0x14, 0x12, 0x12, 0x14, 0x13, 0x14, 0x15, 0x12, 0x13, 0x13, 0x11,
+ 0x0d, 0x0d, 0x0b, 0x09, 0x0a, 0x06, 0x0d, 0x0e, 0x0b, 0x0d, 0x0e, 0x0b,
+ 0x08, 0x09, 0x04, 0x03, 0x03, 0x01, 0x05, 0x06, 0x04, 0x09, 0x0a, 0x08,
+ 0x02, 0x03, 0x02, 0x01, 0x01, 0x00, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x01, 0x02, 0x01, 0x01, 0x00,
+ 0x03, 0x07, 0x02, 0x0a, 0x0f, 0x09, 0x0a, 0x11, 0x09, 0x02, 0x10, 0x02,
+ 0x03, 0x2f, 0x05, 0x0d, 0x8c, 0x16, 0x0c, 0xba, 0x1b, 0x0c, 0xba, 0x19,
+ 0x10, 0xc3, 0x1d, 0x1b, 0xd5, 0x24, 0x1d, 0xd8, 0x26, 0x1d, 0xd6, 0x25,
+ 0x1e, 0xd6, 0x25, 0x1e, 0xd4, 0x24, 0x1e, 0xd1, 0x25, 0x1d, 0xd1, 0x25,
+ 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25,
+ 0x1d, 0xd3, 0x25, 0x1d, 0xd3, 0x25, 0x1a, 0xd5, 0x26, 0x1a, 0xd5, 0x27,
+ 0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27,
+ 0x1a, 0xd5, 0x27, 0x1a, 0xd5, 0x27, 0x1a, 0xd4, 0x26, 0x1a, 0xd4, 0x26,
+ 0x1a, 0xd4, 0x27, 0x1a, 0xd5, 0x26, 0x1a, 0xd5, 0x26, 0x1a, 0xd5, 0x26,
+ 0x1a, 0xd5, 0x26, 0x1c, 0xd4, 0x26, 0x1d, 0xd2, 0x25, 0x1d, 0xd1, 0x25,
+ 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25,
+ 0x1d, 0xd1, 0x25, 0x1d, 0xd1, 0x25, 0x1d, 0xcf, 0x25, 0x1d, 0xd0, 0x25,
+ 0x1d, 0xd0, 0x25, 0x1d, 0xd0, 0x25, 0x1d, 0xd0, 0x25, 0x1d, 0xd0, 0x25,
+ 0x1d, 0xd0, 0x25, 0x1e, 0xd0, 0x24, 0x20, 0xd3, 0x26, 0x22, 0xd1, 0x26,
+ 0x21, 0xd0, 0x27, 0x20, 0xd0, 0x27, 0x1c, 0xd3, 0x26, 0x1c, 0xd4, 0x27,
+ 0x20, 0xd3, 0x25, 0x20, 0xd3, 0x26, 0x1e, 0xce, 0x24, 0x1e, 0xd1, 0x27,
+ 0x21, 0xd7, 0x2e, 0x1e, 0xab, 0x29, 0x0d, 0x49, 0x11, 0x0f, 0x25, 0x0e,
+ 0x12, 0x1b, 0x10, 0x12, 0x16, 0x11, 0x13, 0x14, 0x11, 0x14, 0x13, 0x12,
+ 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12, 0x14, 0x14, 0x12,
+ 0x14, 0x13, 0x12, 0x14, 0x14, 0x12, 0x13, 0x14, 0x13, 0x14, 0x15, 0x12,
+ 0x14, 0x14, 0x12, 0x0e, 0x0f, 0x0c, 0x09, 0x0a, 0x05, 0x0d, 0x0e, 0x0c,
+ 0x0d, 0x0e, 0x0b, 0x08, 0x09, 0x04, 0x03, 0x04, 0x01, 0x05, 0x06, 0x03,
+ 0x07, 0x08, 0x06, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x03, 0x03, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x03, 0x01, 0x02,
+ 0x01, 0x01, 0x00, 0x02, 0x06, 0x02, 0x0a, 0x0e, 0x09, 0x0c, 0x12, 0x0b,
+ 0x06, 0x12, 0x06, 0x04, 0x30, 0x06, 0x10, 0x8e, 0x17, 0x13, 0xc2, 0x1f,
+ 0x13, 0xc2, 0x1d, 0x17, 0xca, 0x21, 0x21, 0xdb, 0x27, 0x25, 0xde, 0x29,
+ 0x25, 0xdd, 0x28, 0x25, 0xdd, 0x29, 0x27, 0xdc, 0x29, 0x27, 0xda, 0x29,
+ 0x26, 0xda, 0x2a, 0x26, 0xda, 0x2a, 0x26, 0xda, 0x2a, 0x26, 0xda, 0x2a,
+ 0x26, 0xd9, 0x2a, 0x25, 0xdb, 0x29, 0x25, 0xdb, 0x2a, 0x22, 0xdc, 0x2a,
+ 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b,
+ 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x23, 0xdb, 0x2a,
+ 0x23, 0xdb, 0x2a, 0x22, 0xda, 0x2b, 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b,
+ 0x22, 0xdb, 0x2b, 0x22, 0xdb, 0x2b, 0x23, 0xdb, 0x2b, 0x24, 0xd8, 0x29,
+ 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29,
+ 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd7, 0x29,
+ 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29,
+ 0x25, 0xd8, 0x29, 0x25, 0xd8, 0x29, 0x27, 0xd8, 0x29, 0x28, 0xd9, 0x2a,
+ 0x2a, 0xd8, 0x2a, 0x28, 0xd7, 0x2b, 0x27, 0xd7, 0x2b, 0x24, 0xd9, 0x2a,
+ 0x24, 0xda, 0x2b, 0x28, 0xda, 0x29, 0x29, 0xd9, 0x2a, 0x27, 0xd6, 0x29,
+ 0x27, 0xd8, 0x2b, 0x29, 0xdd, 0x32, 0x23, 0xae, 0x2c, 0x10, 0x4b, 0x13,
+ 0x11, 0x25, 0x10, 0x13, 0x1d, 0x12, 0x13, 0x17, 0x12, 0x14, 0x15, 0x11,
+ 0x15, 0x13, 0x13, 0x15, 0x14, 0x13, 0x15, 0x14, 0x13, 0x15, 0x14, 0x13,
+ 0x15, 0x14, 0x13, 0x15, 0x13, 0x13, 0x14, 0x15, 0x13, 0x13, 0x14, 0x13,
+ 0x13, 0x13, 0x11, 0x14, 0x14, 0x11, 0x0e, 0x0f, 0x0b, 0x08, 0x09, 0x05,
+ 0x0f, 0x10, 0x0e, 0x0d, 0x0d, 0x0b, 0x07, 0x07, 0x03, 0x04, 0x05, 0x01,
+ 0x07, 0x08, 0x06, 0x08, 0x09, 0x07, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00,
+ 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x03, 0x01, 0x02, 0x01, 0x01, 0x00, 0x03, 0x05, 0x01, 0x0a, 0x0e, 0x08,
+ 0x0e, 0x15, 0x0c, 0x09, 0x14, 0x08, 0x05, 0x31, 0x05, 0x13, 0x90, 0x19,
+ 0x19, 0xc8, 0x23, 0x18, 0xc8, 0x21, 0x1c, 0xcf, 0x23, 0x26, 0xe0, 0x2a,
+ 0x2a, 0xe3, 0x2c, 0x2a, 0xe2, 0x2b, 0x2b, 0xe2, 0x2b, 0x2e, 0xe2, 0x2c,
+ 0x2e, 0xe1, 0x2d, 0x2c, 0xe0, 0x2d, 0x2c, 0xe0, 0x2d, 0x2c, 0xe0, 0x2d,
+ 0x2c, 0xe0, 0x2d, 0x2c, 0xe0, 0x2d, 0x2b, 0xe2, 0x2d, 0x2b, 0xe2, 0x2e,
+ 0x29, 0xe1, 0x2d, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e,
+ 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e, 0x29, 0xe0, 0x2e,
+ 0x2a, 0xe1, 0x2e, 0x2a, 0xe1, 0x2e, 0x29, 0xdf, 0x2e, 0x29, 0xdf, 0x2e,
+ 0x29, 0xdf, 0x2e, 0x29, 0xdf, 0x2e, 0x29, 0xdf, 0x2e, 0x2a, 0xdf, 0x2e,
+ 0x2b, 0xdd, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d,
+ 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xde, 0x2d, 0x2b, 0xdd, 0x2d,
+ 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d,
+ 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2c, 0xde, 0x2d, 0x2d, 0xdd, 0x2c,
+ 0x2f, 0xde, 0x2d, 0x31, 0xdd, 0x2d, 0x2f, 0xdc, 0x2f, 0x2e, 0xdc, 0x2f,
+ 0x2b, 0xde, 0x2e, 0x2b, 0xdf, 0x2e, 0x2e, 0xdf, 0x2c, 0x30, 0xde, 0x2d,
+ 0x2f, 0xdc, 0x2c, 0x2d, 0xde, 0x2f, 0x2f, 0xe2, 0x36, 0x27, 0xb1, 0x2f,
+ 0x11, 0x4c, 0x14, 0x12, 0x26, 0x12, 0x14, 0x1e, 0x14, 0x13, 0x17, 0x13,
+ 0x14, 0x15, 0x12, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13,
+ 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x15, 0x13, 0x13, 0x13, 0x15, 0x13,
+ 0x13, 0x14, 0x13, 0x13, 0x13, 0x10, 0x13, 0x14, 0x11, 0x0e, 0x0f, 0x0b,
+ 0x09, 0x0a, 0x05, 0x10, 0x11, 0x0e, 0x0c, 0x0d, 0x0a, 0x06, 0x07, 0x02,
+ 0x05, 0x06, 0x02, 0x09, 0x0a, 0x08, 0x08, 0x09, 0x07, 0x02, 0x02, 0x01,
+ 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x00, 0x02, 0x03, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x03, 0x01,
+ 0x0a, 0x0d, 0x08, 0x13, 0x18, 0x11, 0x0f, 0x1a, 0x0e, 0x08, 0x34, 0x08,
+ 0x17, 0x93, 0x1b, 0x23, 0xd1, 0x29, 0x22, 0xd3, 0x26, 0x26, 0xd8, 0x28,
+ 0x30, 0xe8, 0x2f, 0x35, 0xe9, 0x31, 0x34, 0xe9, 0x30, 0x36, 0xe9, 0x30,
+ 0x39, 0xeb, 0x32, 0x3a, 0xeb, 0x32, 0x37, 0xea, 0x33, 0x37, 0xea, 0x33,
+ 0x37, 0xea, 0x33, 0x37, 0xea, 0x33, 0x37, 0xea, 0x33, 0x36, 0xeb, 0x32,
+ 0x36, 0xeb, 0x33, 0x34, 0xe8, 0x32, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33,
+ 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33,
+ 0x35, 0xe6, 0x33, 0x36, 0xe9, 0x33, 0x36, 0xe9, 0x33, 0x35, 0xe6, 0x33,
+ 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33, 0x35, 0xe6, 0x33,
+ 0x35, 0xe6, 0x33, 0x35, 0xe5, 0x32, 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32,
+ 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32, 0x35, 0xe6, 0x32,
+ 0x35, 0xe5, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32,
+ 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32, 0x36, 0xe7, 0x32,
+ 0x38, 0xe6, 0x32, 0x39, 0xe6, 0x32, 0x3b, 0xe5, 0x32, 0x39, 0xe3, 0x34,
+ 0x37, 0xe4, 0x35, 0x35, 0xe5, 0x33, 0x35, 0xe6, 0x33, 0x39, 0xe6, 0x32,
+ 0x3b, 0xe6, 0x32, 0x3c, 0xe6, 0x32, 0x38, 0xe7, 0x34, 0x38, 0xe8, 0x3b,
+ 0x2d, 0xb5, 0x32, 0x15, 0x4d, 0x16, 0x15, 0x26, 0x13, 0x15, 0x1e, 0x15,
+ 0x14, 0x18, 0x14, 0x16, 0x17, 0x13, 0x17, 0x14, 0x15, 0x17, 0x14, 0x15,
+ 0x17, 0x14, 0x15, 0x17, 0x14, 0x15, 0x17, 0x14, 0x15, 0x17, 0x14, 0x15,
+ 0x15, 0x16, 0x15, 0x14, 0x15, 0x14, 0x12, 0x13, 0x11, 0x13, 0x14, 0x11,
+ 0x0e, 0x0f, 0x0c, 0x0a, 0x0b, 0x06, 0x14, 0x15, 0x12, 0x0d, 0x0e, 0x0b,
+ 0x06, 0x07, 0x03, 0x07, 0x08, 0x04, 0x0c, 0x0d, 0x0c, 0x08, 0x09, 0x08,
+ 0x02, 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x03, 0x01, 0x02, 0x02, 0x00, 0x00,
+ 0x04, 0x04, 0x01, 0x0d, 0x10, 0x0b, 0x1c, 0x22, 0x1a, 0x1c, 0x27, 0x1a,
+ 0x13, 0x3f, 0x11, 0x21, 0x99, 0x20, 0x33, 0xdc, 0x33, 0x32, 0xe0, 0x30,
+ 0x36, 0xe3, 0x32, 0x3f, 0xf0, 0x37, 0x43, 0xf1, 0x38, 0x44, 0xf1, 0x38,
+ 0x45, 0xf1, 0x38, 0x47, 0xf2, 0x3a, 0x47, 0xf3, 0x3a, 0x45, 0xf1, 0x3b,
+ 0x45, 0xf1, 0x3b, 0x45, 0xf1, 0x3b, 0x44, 0xf2, 0x3a, 0x44, 0xf2, 0x3a,
+ 0x44, 0xf3, 0x39, 0x45, 0xf3, 0x3a, 0x46, 0xf1, 0x39, 0x47, 0xef, 0x3a,
+ 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a,
+ 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x48, 0xf1, 0x3b, 0x48, 0xf1, 0x3b,
+ 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a, 0x47, 0xef, 0x3a,
+ 0x47, 0xef, 0x3a, 0x46, 0xef, 0x3a, 0x44, 0xed, 0x38, 0x43, 0xee, 0x39,
+ 0x43, 0xee, 0x39, 0x43, 0xee, 0x39, 0x43, 0xee, 0x39, 0x43, 0xee, 0x39,
+ 0x43, 0xee, 0x39, 0x43, 0xee, 0x39, 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a,
+ 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a, 0x45, 0xf0, 0x3a,
+ 0x45, 0xf0, 0x3a, 0x46, 0xef, 0x39, 0x48, 0xef, 0x39, 0x49, 0xef, 0x39,
+ 0x47, 0xed, 0x3b, 0x45, 0xee, 0x3c, 0x43, 0xef, 0x3b, 0x44, 0xef, 0x3a,
+ 0x48, 0xef, 0x39, 0x4b, 0xef, 0x39, 0x4b, 0xef, 0x3a, 0x47, 0xef, 0x3c,
+ 0x44, 0xee, 0x41, 0x36, 0xb8, 0x37, 0x1a, 0x50, 0x19, 0x19, 0x29, 0x16,
+ 0x18, 0x21, 0x18, 0x17, 0x1b, 0x17, 0x19, 0x1a, 0x17, 0x1b, 0x18, 0x18,
+ 0x1a, 0x18, 0x18, 0x1a, 0x18, 0x18, 0x1a, 0x18, 0x18, 0x1a, 0x18, 0x18,
+ 0x1a, 0x18, 0x18, 0x18, 0x19, 0x18, 0x18, 0x19, 0x17, 0x17, 0x18, 0x15,
+ 0x19, 0x1a, 0x17, 0x14, 0x15, 0x12, 0x12, 0x13, 0x0e, 0x21, 0x22, 0x1e,
+ 0x15, 0x17, 0x13, 0x0c, 0x0d, 0x09, 0x0f, 0x10, 0x0c, 0x12, 0x13, 0x11,
+ 0x09, 0x0a, 0x09, 0x02, 0x03, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x00, 0x05, 0x05, 0x02, 0x10, 0x13, 0x0d, 0x27, 0x2d, 0x24,
+ 0x2b, 0x36, 0x28, 0x1f, 0x4b, 0x1b, 0x2b, 0x9f, 0x26, 0x45, 0xe8, 0x3d,
+ 0x45, 0xef, 0x3a, 0x48, 0xf0, 0x3b, 0x50, 0xf8, 0x40, 0x53, 0xfa, 0x40,
+ 0x55, 0xfa, 0x42, 0x56, 0xfa, 0x41, 0x55, 0xf9, 0x41, 0x55, 0xfa, 0x41,
+ 0x55, 0xf8, 0x42, 0x55, 0xf8, 0x42, 0x55, 0xf9, 0x42, 0x53, 0xfa, 0x41,
+ 0x53, 0xfa, 0x41, 0x53, 0xfa, 0x40, 0x55, 0xfa, 0x41, 0x59, 0xf9, 0x41,
+ 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43,
+ 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5b, 0xf9, 0x43,
+ 0x5b, 0xf9, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43,
+ 0x5a, 0xf8, 0x43, 0x5a, 0xf8, 0x43, 0x58, 0xf8, 0x42, 0x54, 0xf6, 0x40,
+ 0x52, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40,
+ 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x53, 0xf6, 0x40, 0x55, 0xf8, 0x42,
+ 0x55, 0xf8, 0x41, 0x55, 0xf8, 0x41, 0x55, 0xf8, 0x41, 0x55, 0xf8, 0x41,
+ 0x55, 0xf8, 0x41, 0x55, 0xf8, 0x42, 0x55, 0xf9, 0x40, 0x58, 0xf9, 0x40,
+ 0x58, 0xf9, 0x41, 0x56, 0xf7, 0x44, 0x54, 0xf8, 0x44, 0x52, 0xf9, 0x42,
+ 0x54, 0xf9, 0x41, 0x58, 0xf9, 0x42, 0x5b, 0xf9, 0x41, 0x5b, 0xf8, 0x43,
+ 0x57, 0xf7, 0x44, 0x50, 0xf3, 0x48, 0x3e, 0xbc, 0x3b, 0x20, 0x53, 0x1c,
+ 0x1d, 0x2b, 0x19, 0x1c, 0x24, 0x1b, 0x1a, 0x1e, 0x1a, 0x1d, 0x1e, 0x1c,
+ 0x1f, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c,
+ 0x1e, 0x1c, 0x1c, 0x1e, 0x1c, 0x1c, 0x1c, 0x1d, 0x1c, 0x1c, 0x1d, 0x1c,
+ 0x1d, 0x1e, 0x1c, 0x1f, 0x20, 0x1d, 0x1b, 0x1c, 0x19, 0x1b, 0x1c, 0x18,
+ 0x2f, 0x30, 0x2d, 0x20, 0x21, 0x1d, 0x14, 0x15, 0x11, 0x18, 0x19, 0x16,
+ 0x17, 0x18, 0x18, 0x0a, 0x0b, 0x0a, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x01, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x02, 0x01, 0x02, 0x03, 0x00, 0x00, 0x06, 0x04, 0x02, 0x12, 0x15, 0x0f,
+ 0x31, 0x37, 0x2d, 0x39, 0x44, 0x34, 0x2a, 0x54, 0x23, 0x34, 0xa1, 0x2a,
+ 0x55, 0xef, 0x46, 0x57, 0xf8, 0x44, 0x5a, 0xf8, 0x44, 0x5f, 0xfd, 0x47,
+ 0x61, 0xfe, 0x47, 0x63, 0xff, 0x48, 0x64, 0xfe, 0x47, 0x63, 0xfc, 0x47,
+ 0x63, 0xfd, 0x47, 0x64, 0xfc, 0x48, 0x64, 0xfc, 0x48, 0x63, 0xfd, 0x48,
+ 0x61, 0xfe, 0x47, 0x61, 0xfe, 0x47, 0x61, 0xff, 0x45, 0x62, 0xff, 0x46,
+ 0x66, 0xff, 0x47, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48,
+ 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48,
+ 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48,
+ 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x68, 0xfe, 0x48, 0x67, 0xfe, 0x47,
+ 0x63, 0xfc, 0x45, 0x61, 0xfc, 0x46, 0x62, 0xfc, 0x46, 0x62, 0xfc, 0x46,
+ 0x62, 0xfc, 0x46, 0x62, 0xfc, 0x46, 0x62, 0xfc, 0x46, 0x61, 0xfc, 0x46,
+ 0x63, 0xfe, 0x47, 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x46,
+ 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x46, 0x63, 0xfe, 0x47, 0x63, 0xff, 0x46,
+ 0x65, 0xff, 0x45, 0x65, 0xff, 0x47, 0x63, 0xfd, 0x49, 0x61, 0xfd, 0x49,
+ 0x5f, 0xff, 0x47, 0x61, 0xff, 0x46, 0x66, 0xff, 0x47, 0x69, 0xfe, 0x46,
+ 0x69, 0xfe, 0x48, 0x64, 0xfc, 0x49, 0x5a, 0xf7, 0x4c, 0x46, 0xbf, 0x3f,
+ 0x25, 0x55, 0x1f, 0x22, 0x2e, 0x1c, 0x20, 0x27, 0x1f, 0x1f, 0x22, 0x1f,
+ 0x21, 0x21, 0x20, 0x23, 0x20, 0x20, 0x22, 0x20, 0x1f, 0x21, 0x20, 0x1f,
+ 0x21, 0x20, 0x1f, 0x21, 0x20, 0x1f, 0x22, 0x20, 0x1f, 0x20, 0x21, 0x1f,
+ 0x20, 0x20, 0x1f, 0x21, 0x22, 0x1f, 0x22, 0x24, 0x21, 0x20, 0x21, 0x1e,
+ 0x23, 0x24, 0x21, 0x3e, 0x3f, 0x3c, 0x29, 0x2a, 0x27, 0x1b, 0x1c, 0x19,
+ 0x21, 0x22, 0x1f, 0x1d, 0x1f, 0x1d, 0x0b, 0x0c, 0x0b, 0x02, 0x02, 0x01,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x01, 0x04, 0x02, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x01,
+ 0x11, 0x14, 0x0e, 0x35, 0x3a, 0x30, 0x3e, 0x48, 0x38, 0x2c, 0x55, 0x24,
+ 0x36, 0x9e, 0x2a, 0x5c, 0xee, 0x48, 0x60, 0xf8, 0x48, 0x62, 0xf8, 0x47,
+ 0x65, 0xfd, 0x49, 0x66, 0xfb, 0x47, 0x67, 0xfd, 0x47, 0x69, 0xfd, 0x47,
+ 0x6a, 0xfb, 0x48, 0x6a, 0xfc, 0x48, 0x6b, 0xfb, 0x4a, 0x6b, 0xfb, 0x49,
+ 0x6a, 0xfc, 0x49, 0x68, 0xfd, 0x49, 0x68, 0xfd, 0x48, 0x66, 0xff, 0x46,
+ 0x67, 0xff, 0x46, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47,
+ 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x69, 0xff, 0x47, 0x69, 0xff, 0x47,
+ 0x69, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47,
+ 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47, 0x68, 0xff, 0x47,
+ 0x69, 0xff, 0x47, 0x68, 0xfe, 0x46, 0x69, 0xfe, 0x47, 0x68, 0xfe, 0x47,
+ 0x68, 0xfe, 0x47, 0x68, 0xfe, 0x47, 0x68, 0xfe, 0x47, 0x68, 0xfe, 0x47,
+ 0x69, 0xfe, 0x47, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46,
+ 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x46, 0x68, 0xfe, 0x47,
+ 0x68, 0xfe, 0x46, 0x69, 0xff, 0x45, 0x69, 0xff, 0x46, 0x67, 0xfc, 0x49,
+ 0x66, 0xfc, 0x4a, 0x63, 0xff, 0x48, 0x66, 0xff, 0x47, 0x6b, 0xfe, 0x46,
+ 0x6e, 0xfd, 0x46, 0x6e, 0xfd, 0x47, 0x68, 0xfb, 0x49, 0x5f, 0xf7, 0x4c,
+ 0x4b, 0xc0, 0x3f, 0x28, 0x55, 0x1f, 0x25, 0x2f, 0x1e, 0x24, 0x29, 0x21,
+ 0x22, 0x24, 0x22, 0x23, 0x22, 0x21, 0x24, 0x22, 0x22, 0x24, 0x22, 0x21,
+ 0x23, 0x22, 0x21, 0x23, 0x22, 0x21, 0x23, 0x22, 0x21, 0x24, 0x22, 0x21,
+ 0x22, 0x23, 0x21, 0x21, 0x22, 0x21, 0x20, 0x22, 0x20, 0x22, 0x24, 0x21,
+ 0x21, 0x23, 0x20, 0x27, 0x28, 0x25, 0x46, 0x48, 0x43, 0x2e, 0x30, 0x2c,
+ 0x1d, 0x1e, 0x1b, 0x24, 0x25, 0x22, 0x20, 0x21, 0x1f, 0x0b, 0x0c, 0x0c,
+ 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x06, 0x03, 0x05, 0x03, 0x01, 0x01,
+ 0x02, 0x02, 0x01, 0x11, 0x13, 0x0d, 0x38, 0x3d, 0x32, 0x43, 0x4d, 0x3d,
+ 0x30, 0x56, 0x26, 0x38, 0x9a, 0x2a, 0x64, 0xed, 0x4c, 0x68, 0xf8, 0x4d,
+ 0x69, 0xf8, 0x4b, 0x6b, 0xfd, 0x4b, 0x6b, 0xfa, 0x49, 0x6d, 0xfd, 0x48,
+ 0x6e, 0xfb, 0x48, 0x71, 0xfb, 0x49, 0x71, 0xfb, 0x49, 0x72, 0xfb, 0x4b,
+ 0x72, 0xfa, 0x4a, 0x71, 0xfa, 0x4a, 0x6f, 0xfb, 0x4a, 0x6f, 0xfc, 0x4a,
+ 0x6d, 0xfe, 0x48, 0x6d, 0xff, 0x48, 0x6c, 0xff, 0x48, 0x6b, 0xff, 0x47,
+ 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6c, 0xff, 0x48,
+ 0x6c, 0xff, 0x48, 0x6c, 0xff, 0x48, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47,
+ 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47, 0x6b, 0xff, 0x47,
+ 0x6b, 0xff, 0x47, 0x6d, 0xff, 0x47, 0x6e, 0xff, 0x48, 0x70, 0xff, 0x49,
+ 0x70, 0xff, 0x49, 0x70, 0xff, 0x49, 0x70, 0xff, 0x49, 0x70, 0xff, 0x49,
+ 0x70, 0xff, 0x49, 0x71, 0xff, 0x49, 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47,
+ 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47, 0x6f, 0xfe, 0x47,
+ 0x6f, 0xfe, 0x48, 0x6f, 0xfd, 0x48, 0x6d, 0xff, 0x46, 0x6d, 0xfe, 0x47,
+ 0x6c, 0xfc, 0x4a, 0x6b, 0xfc, 0x4b, 0x68, 0xfe, 0x48, 0x6c, 0xff, 0x48,
+ 0x71, 0xfd, 0x47, 0x74, 0xfc, 0x47, 0x73, 0xfc, 0x48, 0x6c, 0xfb, 0x4a,
+ 0x64, 0xf6, 0x4d, 0x50, 0xbf, 0x3f, 0x2b, 0x56, 0x20, 0x29, 0x31, 0x20,
+ 0x27, 0x2a, 0x24, 0x26, 0x25, 0x24, 0x26, 0x23, 0x23, 0x25, 0x23, 0x23,
+ 0x26, 0x23, 0x23, 0x25, 0x23, 0x23, 0x25, 0x23, 0x23, 0x25, 0x23, 0x23,
+ 0x25, 0x23, 0x23, 0x23, 0x24, 0x23, 0x23, 0x23, 0x22, 0x21, 0x22, 0x20,
+ 0x22, 0x23, 0x21, 0x22, 0x23, 0x20, 0x2b, 0x2c, 0x28, 0x4d, 0x4d, 0x4a,
+ 0x33, 0x33, 0x30, 0x20, 0x21, 0x1e, 0x28, 0x29, 0x26, 0x23, 0x24, 0x22,
+ 0x0c, 0x0c, 0x0b, 0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x01, 0x02, 0x00, 0x03, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x05, 0x02, 0x04,
+ 0x02, 0x01, 0x01, 0x02, 0x02, 0x01, 0x0f, 0x12, 0x0c, 0x3a, 0x3e, 0x33,
+ 0x4b, 0x54, 0x45, 0x35, 0x57, 0x2b, 0x3d, 0x92, 0x2d, 0x6f, 0xec, 0x55,
+ 0x6e, 0xfa, 0x51, 0x6c, 0xfa, 0x4c, 0x6e, 0xfd, 0x4b, 0x71, 0xfb, 0x4b,
+ 0x77, 0xfd, 0x4d, 0x78, 0xfb, 0x4b, 0x79, 0xfc, 0x4c, 0x79, 0xfc, 0x4c,
+ 0x77, 0xfc, 0x4d, 0x78, 0xfc, 0x4d, 0x78, 0xfc, 0x4d, 0x78, 0xfc, 0x4e,
+ 0x78, 0xfc, 0x4e, 0x76, 0xfe, 0x4c, 0x76, 0xff, 0x4c, 0x76, 0xfe, 0x4c,
+ 0x77, 0xfe, 0x4b, 0x77, 0xfe, 0x4b, 0x77, 0xfe, 0x4b, 0x77, 0xfe, 0x4b,
+ 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4b, 0x78, 0xff, 0x4c,
+ 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c,
+ 0x77, 0xfe, 0x4c, 0x77, 0xfe, 0x4c, 0x79, 0xff, 0x4c, 0x79, 0xfe, 0x4d,
+ 0x7b, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d,
+ 0x7a, 0xfe, 0x4d, 0x7a, 0xfe, 0x4d, 0x7b, 0xfe, 0x4d, 0x7a, 0xfe, 0x4c,
+ 0x7a, 0xfe, 0x4c, 0x7a, 0xfe, 0x4c, 0x7a, 0xfe, 0x4c, 0x7a, 0xfe, 0x4c,
+ 0x7a, 0xfe, 0x4c, 0x7a, 0xfd, 0x4c, 0x78, 0xfd, 0x4b, 0x75, 0xff, 0x49,
+ 0x74, 0xfe, 0x4b, 0x74, 0xfb, 0x4f, 0x75, 0xfb, 0x4f, 0x73, 0xfe, 0x4c,
+ 0x76, 0xfe, 0x4c, 0x7a, 0xfb, 0x4e, 0x7b, 0xfa, 0x4f, 0x77, 0xfb, 0x4f,
+ 0x72, 0xfa, 0x50, 0x6e, 0xf5, 0x56, 0x53, 0xb9, 0x42, 0x2d, 0x54, 0x23,
+ 0x2b, 0x33, 0x24, 0x28, 0x2c, 0x25, 0x28, 0x28, 0x25, 0x27, 0x25, 0x24,
+ 0x28, 0x25, 0x24, 0x28, 0x25, 0x24, 0x28, 0x25, 0x24, 0x28, 0x25, 0x24,
+ 0x28, 0x25, 0x24, 0x28, 0x25, 0x24, 0x27, 0x26, 0x24, 0x26, 0x25, 0x24,
+ 0x25, 0x24, 0x22, 0x26, 0x25, 0x22, 0x26, 0x25, 0x22, 0x2e, 0x2d, 0x2a,
+ 0x50, 0x4e, 0x4a, 0x36, 0x35, 0x31, 0x29, 0x28, 0x25, 0x31, 0x30, 0x2e,
+ 0x27, 0x27, 0x26, 0x0a, 0x0a, 0x0b, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x0e, 0x10, 0x0a,
+ 0x3b, 0x3e, 0x36, 0x55, 0x5b, 0x4d, 0x3b, 0x58, 0x30, 0x43, 0x8a, 0x2f,
+ 0x7b, 0xea, 0x5e, 0x74, 0xfd, 0x55, 0x6f, 0xfd, 0x4e, 0x71, 0xfe, 0x4b,
+ 0x78, 0xfe, 0x4d, 0x83, 0xfe, 0x52, 0x83, 0xfb, 0x4f, 0x82, 0xfd, 0x4f,
+ 0x81, 0xfe, 0x4e, 0x7e, 0xfe, 0x4f, 0x7f, 0xfe, 0x4f, 0x7f, 0xfe, 0x50,
+ 0x80, 0xfd, 0x52, 0x80, 0xfc, 0x53, 0x7e, 0xfe, 0x51, 0x80, 0xfe, 0x51,
+ 0x83, 0xfd, 0x51, 0x85, 0xfd, 0x51, 0x84, 0xfd, 0x51, 0x84, 0xfd, 0x51,
+ 0x85, 0xfd, 0x51, 0x84, 0xfc, 0x50, 0x84, 0xfc, 0x50, 0x84, 0xfc, 0x50,
+ 0x86, 0xfe, 0x52, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51,
+ 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51,
+ 0x85, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51,
+ 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51, 0x86, 0xfd, 0x51,
+ 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x51,
+ 0x86, 0xfe, 0x51, 0x86, 0xfe, 0x52, 0x85, 0xfd, 0x51, 0x83, 0xfe, 0x4f,
+ 0x7d, 0xff, 0x4d, 0x7c, 0xfe, 0x4f, 0x7e, 0xfb, 0x54, 0x7f, 0xfb, 0x54,
+ 0x7d, 0xfe, 0x4f, 0x81, 0xfe, 0x51, 0x84, 0xfa, 0x55, 0x83, 0xf9, 0x57,
+ 0x7b, 0xfb, 0x57, 0x78, 0xfa, 0x58, 0x7a, 0xf3, 0x60, 0x58, 0xb1, 0x46,
+ 0x2e, 0x51, 0x25, 0x2c, 0x36, 0x28, 0x29, 0x2f, 0x27, 0x29, 0x2b, 0x26,
+ 0x28, 0x28, 0x25, 0x2a, 0x28, 0x25, 0x2a, 0x28, 0x25, 0x2b, 0x28, 0x25,
+ 0x2b, 0x28, 0x25, 0x2a, 0x28, 0x25, 0x2b, 0x28, 0x25, 0x2b, 0x28, 0x25,
+ 0x2a, 0x28, 0x25, 0x2a, 0x27, 0x24, 0x2b, 0x27, 0x25, 0x2a, 0x27, 0x24,
+ 0x30, 0x2e, 0x2b, 0x51, 0x4d, 0x4b, 0x38, 0x35, 0x33, 0x32, 0x2e, 0x2c,
+ 0x3b, 0x37, 0x37, 0x2c, 0x2b, 0x2a, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00,
+ 0x0d, 0x0f, 0x09, 0x3a, 0x3d, 0x36, 0x5c, 0x61, 0x55, 0x44, 0x5d, 0x39,
+ 0x43, 0x84, 0x31, 0x7e, 0xe8, 0x63, 0x72, 0xfa, 0x57, 0x6d, 0xfe, 0x50,
+ 0x70, 0xff, 0x4d, 0x76, 0xff, 0x4f, 0x84, 0xfd, 0x55, 0x84, 0xfb, 0x53,
+ 0x80, 0xfd, 0x52, 0x7e, 0xff, 0x50, 0x7b, 0xff, 0x50, 0x7c, 0xff, 0x51,
+ 0x7d, 0xfe, 0x52, 0x80, 0xfc, 0x55, 0x80, 0xfb, 0x56, 0x7e, 0xfd, 0x54,
+ 0x7e, 0xfd, 0x54, 0x81, 0xfd, 0x54, 0x83, 0xfd, 0x54, 0x82, 0xfd, 0x54,
+ 0x82, 0xfd, 0x54, 0x83, 0xfd, 0x54, 0x81, 0xfc, 0x53, 0x81, 0xfc, 0x53,
+ 0x81, 0xfc, 0x53, 0x83, 0xfe, 0x55, 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55,
+ 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55, 0x83, 0xfd, 0x55,
+ 0x83, 0xfe, 0x55, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54,
+ 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54, 0x82, 0xfc, 0x54,
+ 0x82, 0xfc, 0x54, 0x83, 0xfe, 0x55, 0x83, 0xfe, 0x55, 0x83, 0xfe, 0x55,
+ 0x83, 0xfe, 0x55, 0x83, 0xfe, 0x55, 0x83, 0xfd, 0x55, 0x82, 0xfc, 0x54,
+ 0x80, 0xfd, 0x52, 0x7b, 0xfe, 0x51, 0x7a, 0xfd, 0x53, 0x7d, 0xf9, 0x58,
+ 0x7e, 0xfa, 0x57, 0x7e, 0xfe, 0x51, 0x7f, 0xfe, 0x52, 0x82, 0xfa, 0x58,
+ 0x80, 0xf9, 0x5a, 0x78, 0xfb, 0x59, 0x75, 0xf9, 0x59, 0x7d, 0xf2, 0x61,
+ 0x59, 0xad, 0x47, 0x32, 0x53, 0x28, 0x31, 0x3a, 0x2b, 0x2e, 0x31, 0x29,
+ 0x2d, 0x2f, 0x29, 0x2d, 0x2c, 0x28, 0x2e, 0x2c, 0x28, 0x2e, 0x2c, 0x28,
+ 0x2f, 0x2c, 0x29, 0x2f, 0x2c, 0x29, 0x2f, 0x2c, 0x29, 0x2f, 0x2c, 0x29,
+ 0x30, 0x2c, 0x29, 0x30, 0x2c, 0x29, 0x30, 0x2b, 0x28, 0x30, 0x2b, 0x29,
+ 0x30, 0x2c, 0x2a, 0x34, 0x30, 0x2e, 0x53, 0x4d, 0x4b, 0x3d, 0x38, 0x36,
+ 0x41, 0x3b, 0x3a, 0x4e, 0x49, 0x49, 0x31, 0x2f, 0x2e, 0x09, 0x09, 0x09,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00,
+ 0x02, 0x03, 0x00, 0x0d, 0x0f, 0x08, 0x39, 0x3b, 0x34, 0x5e, 0x63, 0x57,
+ 0x4b, 0x65, 0x41, 0x3e, 0x83, 0x30, 0x75, 0xe6, 0x61, 0x69, 0xf5, 0x55,
+ 0x67, 0xfd, 0x51, 0x6a, 0xff, 0x51, 0x6f, 0xfe, 0x50, 0x79, 0xfd, 0x55,
+ 0x7a, 0xfa, 0x54, 0x77, 0xfd, 0x51, 0x74, 0xfe, 0x51, 0x71, 0xff, 0x51,
+ 0x72, 0xfe, 0x51, 0x73, 0xfd, 0x52, 0x76, 0xfb, 0x54, 0x77, 0xfa, 0x55,
+ 0x74, 0xfc, 0x53, 0x73, 0xfc, 0x53, 0x72, 0xfd, 0x53, 0x71, 0xfd, 0x53,
+ 0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53,
+ 0x71, 0xfd, 0x53, 0x71, 0xfd, 0x53, 0x72, 0xfe, 0x55, 0x72, 0xfd, 0x54,
+ 0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54,
+ 0x72, 0xfd, 0x54, 0x72, 0xfd, 0x54, 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53,
+ 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53,
+ 0x72, 0xfb, 0x53, 0x72, 0xfb, 0x53, 0x73, 0xfd, 0x54, 0x73, 0xfd, 0x54,
+ 0x73, 0xfd, 0x54, 0x73, 0xfd, 0x54, 0x73, 0xfe, 0x54, 0x72, 0xfc, 0x54,
+ 0x72, 0xfb, 0x53, 0x72, 0xfc, 0x52, 0x70, 0xfd, 0x53, 0x70, 0xfb, 0x54,
+ 0x72, 0xf7, 0x58, 0x72, 0xf9, 0x57, 0x71, 0xfe, 0x50, 0x72, 0xff, 0x50,
+ 0x75, 0xfc, 0x54, 0x74, 0xfb, 0x56, 0x6e, 0xfc, 0x55, 0x6c, 0xf8, 0x54,
+ 0x74, 0xf1, 0x5b, 0x58, 0xaf, 0x44, 0x36, 0x59, 0x2a, 0x36, 0x3d, 0x2d,
+ 0x34, 0x34, 0x2b, 0x34, 0x32, 0x2d, 0x32, 0x31, 0x2d, 0x32, 0x31, 0x2d,
+ 0x31, 0x31, 0x2d, 0x32, 0x31, 0x2e, 0x33, 0x31, 0x2e, 0x34, 0x31, 0x2e,
+ 0x34, 0x31, 0x2e, 0x34, 0x31, 0x2e, 0x34, 0x31, 0x2e, 0x33, 0x30, 0x2d,
+ 0x33, 0x30, 0x2d, 0x35, 0x32, 0x2f, 0x37, 0x34, 0x31, 0x54, 0x4f, 0x4c,
+ 0x41, 0x3c, 0x3a, 0x4e, 0x49, 0x47, 0x60, 0x5c, 0x5b, 0x33, 0x32, 0x31,
+ 0x0a, 0x0a, 0x0a, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x03, 0x03, 0x00, 0x0d, 0x0e, 0x08, 0x35, 0x38, 0x31,
+ 0x5c, 0x61, 0x55, 0x4c, 0x68, 0x44, 0x37, 0x81, 0x2e, 0x6b, 0xe5, 0x5e,
+ 0x60, 0xf3, 0x53, 0x61, 0xfc, 0x52, 0x63, 0xff, 0x52, 0x65, 0xfd, 0x50,
+ 0x6d, 0xfc, 0x53, 0x70, 0xfb, 0x53, 0x6c, 0xfc, 0x51, 0x69, 0xfd, 0x50,
+ 0x66, 0xff, 0x50, 0x66, 0xfe, 0x50, 0x67, 0xfd, 0x51, 0x6b, 0xfb, 0x53,
+ 0x6d, 0xfa, 0x53, 0x69, 0xfb, 0x52, 0x67, 0xfb, 0x52, 0x63, 0xfe, 0x52,
+ 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52,
+ 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfe, 0x52, 0x61, 0xfd, 0x52,
+ 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52,
+ 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x61, 0xfd, 0x52, 0x62, 0xfb, 0x51,
+ 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51,
+ 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x62, 0xfb, 0x51, 0x63, 0xfd, 0x52,
+ 0x63, 0xfd, 0x52, 0x63, 0xfd, 0x52, 0x63, 0xfd, 0x52, 0x63, 0xfd, 0x52,
+ 0x62, 0xfb, 0x52, 0x62, 0xfb, 0x51, 0x64, 0xfb, 0x51, 0x66, 0xfc, 0x53,
+ 0x66, 0xfa, 0x54, 0x68, 0xf7, 0x57, 0x66, 0xf9, 0x55, 0x66, 0xfe, 0x4e,
+ 0x66, 0xff, 0x4d, 0x68, 0xfe, 0x50, 0x68, 0xfc, 0x52, 0x64, 0xfd, 0x50,
+ 0x62, 0xf7, 0x4e, 0x6b, 0xf0, 0x55, 0x54, 0xaf, 0x41, 0x38, 0x5d, 0x2a,
+ 0x39, 0x3f, 0x2d, 0x37, 0x34, 0x2c, 0x38, 0x33, 0x2f, 0x36, 0x34, 0x30,
+ 0x33, 0x34, 0x30, 0x33, 0x34, 0x30, 0x33, 0x34, 0x30, 0x34, 0x34, 0x30,
+ 0x36, 0x34, 0x30, 0x36, 0x34, 0x30, 0x36, 0x34, 0x30, 0x36, 0x34, 0x30,
+ 0x35, 0x33, 0x30, 0x35, 0x32, 0x2f, 0x38, 0x35, 0x32, 0x39, 0x37, 0x34,
+ 0x53, 0x4f, 0x4c, 0x43, 0x3e, 0x3c, 0x56, 0x51, 0x4f, 0x6b, 0x67, 0x66,
+ 0x33, 0x32, 0x31, 0x0a, 0x0b, 0x0b, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x00, 0x02, 0x02, 0x00, 0x0a, 0x0b, 0x06,
+ 0x2a, 0x2c, 0x27, 0x49, 0x4e, 0x42, 0x39, 0x56, 0x33, 0x29, 0x7a, 0x25,
+ 0x5c, 0xe5, 0x57, 0x54, 0xf6, 0x50, 0x54, 0xfd, 0x4e, 0x55, 0xff, 0x4f,
+ 0x57, 0xfe, 0x4d, 0x5e, 0xfd, 0x50, 0x5f, 0xfc, 0x4f, 0x5b, 0xfd, 0x4d,
+ 0x59, 0xfe, 0x4c, 0x56, 0xff, 0x4c, 0x56, 0xfe, 0x4c, 0x58, 0xfe, 0x4d,
+ 0x5c, 0xfc, 0x4f, 0x5e, 0xfb, 0x50, 0x5b, 0xfd, 0x4e, 0x59, 0xfd, 0x4e,
+ 0x55, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e,
+ 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e, 0x54, 0xfe, 0x4e,
+ 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4d,
+ 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e, 0x53, 0xfe, 0x4e,
+ 0x55, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e,
+ 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e,
+ 0x55, 0xfe, 0x4e, 0x55, 0xfe, 0x4e, 0x55, 0xfe, 0x4e, 0x55, 0xfe, 0x4e,
+ 0x55, 0xfe, 0x4e, 0x54, 0xfd, 0x4e, 0x54, 0xfd, 0x4e, 0x57, 0xfd, 0x4e,
+ 0x5a, 0xfd, 0x50, 0x5b, 0xfc, 0x50, 0x5c, 0xf9, 0x52, 0x5a, 0xfb, 0x50,
+ 0x58, 0xfe, 0x49, 0x58, 0xff, 0x49, 0x5b, 0xfe, 0x4c, 0x5c, 0xfd, 0x4d,
+ 0x59, 0xfe, 0x4c, 0x5a, 0xfa, 0x4e, 0x62, 0xf0, 0x53, 0x48, 0xa9, 0x3b,
+ 0x2f, 0x57, 0x25, 0x30, 0x3a, 0x28, 0x30, 0x31, 0x29, 0x31, 0x2f, 0x2c,
+ 0x30, 0x2f, 0x2b, 0x2e, 0x2f, 0x2b, 0x2f, 0x2f, 0x2b, 0x2f, 0x2f, 0x2b,
+ 0x30, 0x2f, 0x2b, 0x31, 0x2f, 0x2b, 0x30, 0x2f, 0x2b, 0x30, 0x2f, 0x2b,
+ 0x30, 0x2f, 0x2b, 0x2f, 0x2d, 0x2a, 0x2e, 0x2d, 0x2a, 0x34, 0x32, 0x2f,
+ 0x37, 0x35, 0x31, 0x4e, 0x4a, 0x47, 0x3b, 0x37, 0x34, 0x49, 0x45, 0x42,
+ 0x59, 0x55, 0x54, 0x2c, 0x2b, 0x2a, 0x09, 0x09, 0x09, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00,
+ 0x07, 0x08, 0x05, 0x21, 0x23, 0x1e, 0x39, 0x3e, 0x33, 0x28, 0x47, 0x24,
+ 0x1e, 0x76, 0x1e, 0x52, 0xe5, 0x53, 0x4b, 0xfa, 0x4e, 0x4a, 0xfe, 0x4b,
+ 0x4a, 0xff, 0x4a, 0x4c, 0xfe, 0x4a, 0x53, 0xfe, 0x4d, 0x53, 0xfd, 0x4c,
+ 0x4f, 0xfe, 0x4a, 0x4d, 0xfe, 0x49, 0x4a, 0xff, 0x48, 0x4a, 0xff, 0x49,
+ 0x4c, 0xff, 0x4a, 0x50, 0xfd, 0x4c, 0x53, 0xfc, 0x4d, 0x50, 0xfe, 0x4b,
+ 0x4f, 0xfe, 0x4b, 0x4c, 0xff, 0x4a, 0x4b, 0xff, 0x4a, 0x4b, 0xff, 0x4a,
+ 0x4b, 0xff, 0x4a, 0x4b, 0xff, 0x4a, 0x4b, 0xff, 0x4b, 0x4b, 0xff, 0x4b,
+ 0x4b, 0xff, 0x4b, 0x4b, 0xfe, 0x4a, 0x4b, 0xfe, 0x4a, 0x4b, 0xfe, 0x4a,
+ 0x4b, 0xfe, 0x4a, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+ 0x4b, 0xff, 0x4b, 0x4c, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+ 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+ 0x4b, 0xfe, 0x4b, 0x4c, 0xff, 0x4b, 0x4c, 0xfe, 0x4b, 0x4c, 0xfe, 0x4b,
+ 0x4c, 0xfe, 0x4b, 0x4c, 0xff, 0x4b, 0x4b, 0xfe, 0x4b, 0x4b, 0xfe, 0x4b,
+ 0x4e, 0xfe, 0x4b, 0x52, 0xfe, 0x4c, 0x53, 0xfd, 0x4e, 0x53, 0xfc, 0x4e,
+ 0x51, 0xfd, 0x4b, 0x4f, 0xff, 0x46, 0x4f, 0xff, 0x46, 0x52, 0xff, 0x49,
+ 0x53, 0xfe, 0x4a, 0x51, 0xfe, 0x4a, 0x56, 0xfc, 0x4e, 0x5d, 0xef, 0x53,
+ 0x3f, 0xa3, 0x37, 0x26, 0x52, 0x21, 0x28, 0x36, 0x23, 0x2a, 0x2d, 0x26,
+ 0x2c, 0x2a, 0x29, 0x2b, 0x2a, 0x27, 0x2a, 0x2a, 0x27, 0x2a, 0x2a, 0x27,
+ 0x2a, 0x2a, 0x27, 0x2b, 0x2a, 0x27, 0x2c, 0x2a, 0x27, 0x2b, 0x2a, 0x27,
+ 0x2b, 0x2a, 0x27, 0x2b, 0x2a, 0x27, 0x29, 0x28, 0x25, 0x29, 0x29, 0x26,
+ 0x30, 0x2f, 0x2c, 0x35, 0x33, 0x2f, 0x48, 0x45, 0x42, 0x34, 0x30, 0x2d,
+ 0x3c, 0x39, 0x36, 0x48, 0x45, 0x43, 0x25, 0x25, 0x24, 0x07, 0x08, 0x07,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x03, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x03, 0x04, 0x03, 0x16, 0x17, 0x13, 0x25, 0x28, 0x1f,
+ 0x14, 0x32, 0x11, 0x11, 0x6c, 0x15, 0x42, 0xe0, 0x4a, 0x3f, 0xf9, 0x48,
+ 0x3b, 0xf9, 0x44, 0x3a, 0xf9, 0x42, 0x3c, 0xf9, 0x43, 0x43, 0xf9, 0x47,
+ 0x40, 0xf9, 0x45, 0x3e, 0xfa, 0x43, 0x3c, 0xfa, 0x42, 0x39, 0xfa, 0x42,
+ 0x39, 0xfa, 0x42, 0x3b, 0xfa, 0x43, 0x40, 0xfa, 0x44, 0x42, 0xf9, 0x46,
+ 0x41, 0xfa, 0x44, 0x40, 0xfa, 0x44, 0x3f, 0xfa, 0x43, 0x3f, 0xfa, 0x43,
+ 0x3f, 0xfa, 0x43, 0x3f, 0xfa, 0x44, 0x3f, 0xfa, 0x44, 0x3f, 0xfa, 0x44,
+ 0x3f, 0xfa, 0x44, 0x3f, 0xfa, 0x44, 0x3e, 0xfa, 0x44, 0x3e, 0xfa, 0x44,
+ 0x3e, 0xfa, 0x44, 0x3e, 0xfa, 0x43, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+ 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+ 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+ 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45,
+ 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x45, 0x3e, 0xfa, 0x44,
+ 0x3e, 0xfa, 0x44, 0x40, 0xfa, 0x44, 0x45, 0xfa, 0x45, 0x47, 0xfa, 0x47,
+ 0x46, 0xf9, 0x47, 0x44, 0xfa, 0x44, 0x41, 0xfa, 0x40, 0x41, 0xfa, 0x40,
+ 0x44, 0xfa, 0x43, 0x45, 0xf9, 0x44, 0x45, 0xf9, 0x45, 0x4c, 0xf9, 0x4c,
+ 0x52, 0xea, 0x50, 0x30, 0x97, 0x2f, 0x1b, 0x47, 0x1a, 0x1d, 0x2d, 0x1d,
+ 0x20, 0x26, 0x20, 0x22, 0x23, 0x22, 0x22, 0x22, 0x1f, 0x22, 0x22, 0x1f,
+ 0x23, 0x22, 0x1f, 0x23, 0x22, 0x1f, 0x23, 0x22, 0x1f, 0x23, 0x22, 0x1f,
+ 0x22, 0x22, 0x1f, 0x22, 0x22, 0x1f, 0x22, 0x22, 0x1f, 0x21, 0x20, 0x1d,
+ 0x21, 0x20, 0x1e, 0x29, 0x27, 0x24, 0x2f, 0x2d, 0x29, 0x3f, 0x3d, 0x39,
+ 0x2a, 0x27, 0x23, 0x2b, 0x29, 0x25, 0x30, 0x2d, 0x2c, 0x1b, 0x1c, 0x1b,
+ 0x04, 0x05, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x03, 0x04, 0x02, 0x11, 0x11, 0x0e,
+ 0x1a, 0x1e, 0x16, 0x0c, 0x27, 0x0a, 0x0b, 0x5a, 0x0f, 0x33, 0xc3, 0x3b,
+ 0x32, 0xde, 0x3b, 0x2c, 0xde, 0x36, 0x29, 0xdd, 0x34, 0x2c, 0xde, 0x36,
+ 0x32, 0xde, 0x39, 0x30, 0xdd, 0x37, 0x2c, 0xdf, 0x36, 0x2b, 0xe0, 0x35,
+ 0x29, 0xe1, 0x35, 0x2a, 0xe0, 0x35, 0x2b, 0xe0, 0x36, 0x2f, 0xe0, 0x37,
+ 0x32, 0xdf, 0x38, 0x31, 0xe1, 0x36, 0x31, 0xe0, 0x36, 0x30, 0xe0, 0x36,
+ 0x30, 0xe0, 0x36, 0x30, 0xe0, 0x36, 0x30, 0xe0, 0x37, 0x30, 0xe0, 0x37,
+ 0x30, 0xe0, 0x37, 0x31, 0xe1, 0x38, 0x31, 0xe1, 0x38, 0x31, 0xe1, 0x37,
+ 0x31, 0xe1, 0x37, 0x31, 0xe1, 0x37, 0x31, 0xe1, 0x37, 0x31, 0xe1, 0x38,
+ 0x31, 0xe1, 0x38, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x32, 0xe2, 0x39,
+ 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39,
+ 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39,
+ 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x31, 0xe2, 0x39, 0x32, 0xe2, 0x39,
+ 0x31, 0xe1, 0x38, 0x31, 0xe1, 0x38, 0x32, 0xe1, 0x38, 0x35, 0xe3, 0x38,
+ 0x36, 0xe3, 0x3a, 0x36, 0xe1, 0x3a, 0x33, 0xe1, 0x38, 0x31, 0xe2, 0x34,
+ 0x31, 0xe1, 0x34, 0x35, 0xe0, 0x37, 0x36, 0xdf, 0x38, 0x34, 0xdd, 0x38,
+ 0x3c, 0xdd, 0x3f, 0x3f, 0xcc, 0x41, 0x21, 0x7c, 0x22, 0x10, 0x36, 0x11,
+ 0x12, 0x20, 0x13, 0x14, 0x1b, 0x17, 0x16, 0x18, 0x19, 0x16, 0x17, 0x16,
+ 0x17, 0x17, 0x14, 0x17, 0x17, 0x14, 0x17, 0x17, 0x14, 0x17, 0x17, 0x14,
+ 0x17, 0x16, 0x14, 0x16, 0x17, 0x14, 0x16, 0x17, 0x14, 0x16, 0x16, 0x14,
+ 0x16, 0x16, 0x14, 0x15, 0x15, 0x14, 0x1b, 0x1a, 0x18, 0x21, 0x20, 0x1c,
+ 0x2e, 0x2c, 0x2a, 0x1d, 0x1b, 0x18, 0x1c, 0x1b, 0x18, 0x1f, 0x1c, 0x1b,
+ 0x15, 0x15, 0x14, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02, 0x01, 0x03, 0x04, 0x02,
+ 0x0c, 0x0d, 0x0b, 0x13, 0x17, 0x10, 0x08, 0x1e, 0x06, 0x08, 0x46, 0x0a,
+ 0x23, 0xa0, 0x29, 0x24, 0xbe, 0x2d, 0x1c, 0xbd, 0x27, 0x18, 0xbc, 0x24,
+ 0x1c, 0xbd, 0x26, 0x21, 0xbe, 0x29, 0x1f, 0xbb, 0x28, 0x1b, 0xc1, 0x27,
+ 0x1a, 0xc2, 0x26, 0x19, 0xc3, 0x27, 0x1a, 0xc3, 0x27, 0x1c, 0xc2, 0x27,
+ 0x1e, 0xc1, 0x28, 0x22, 0xc0, 0x29, 0x20, 0xc2, 0x27, 0x20, 0xc2, 0x27,
+ 0x22, 0xc1, 0x28, 0x22, 0xc1, 0x28, 0x22, 0xc1, 0x27, 0x22, 0xc2, 0x29,
+ 0x22, 0xc2, 0x29, 0x22, 0xc2, 0x28, 0x23, 0xc2, 0x2a, 0x23, 0xc2, 0x2a,
+ 0x23, 0xc3, 0x29, 0x23, 0xc3, 0x29, 0x23, 0xc3, 0x29, 0x23, 0xc4, 0x2a,
+ 0x23, 0xc4, 0x2a, 0x23, 0xc4, 0x2a, 0x24, 0xc5, 0x2b, 0x24, 0xc5, 0x2b,
+ 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b,
+ 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b,
+ 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b, 0x25, 0xc5, 0x2b,
+ 0x25, 0xc5, 0x2b, 0x24, 0xc4, 0x2a, 0x24, 0xc4, 0x2a, 0x24, 0xc4, 0x2a,
+ 0x24, 0xc6, 0x2a, 0x24, 0xc6, 0x2b, 0x24, 0xc4, 0x2c, 0x22, 0xc5, 0x2a,
+ 0x20, 0xc7, 0x27, 0x21, 0xc4, 0x27, 0x24, 0xc2, 0x29, 0x25, 0xbf, 0x2a,
+ 0x22, 0xba, 0x2a, 0x28, 0xbb, 0x31, 0x2b, 0xa8, 0x30, 0x10, 0x5c, 0x14,
+ 0x06, 0x23, 0x07, 0x08, 0x11, 0x09, 0x08, 0x0e, 0x0d, 0x09, 0x0c, 0x0e,
+ 0x09, 0x0b, 0x0a, 0x0a, 0x0b, 0x08, 0x0a, 0x0b, 0x09, 0x0b, 0x0b, 0x09,
+ 0x0b, 0x0b, 0x09, 0x09, 0x0a, 0x08, 0x09, 0x0a, 0x08, 0x0a, 0x0a, 0x08,
+ 0x0a, 0x0a, 0x09, 0x0c, 0x0c, 0x0b, 0x09, 0x09, 0x08, 0x0b, 0x0b, 0x0a,
+ 0x10, 0x10, 0x0f, 0x1b, 0x1a, 0x19, 0x10, 0x0e, 0x0e, 0x0e, 0x0d, 0x0c,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0e, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x03, 0x01,
+ 0x02, 0x04, 0x01, 0x09, 0x0b, 0x08, 0x11, 0x15, 0x0f, 0x0e, 0x1c, 0x0b,
+ 0x0c, 0x32, 0x0b, 0x1a, 0x6f, 0x1c, 0x1b, 0x8a, 0x20, 0x13, 0x8a, 0x1a,
+ 0x10, 0x8b, 0x18, 0x13, 0x8b, 0x1a, 0x17, 0x8b, 0x1d, 0x15, 0x89, 0x1c,
+ 0x11, 0x8f, 0x1b, 0x10, 0x90, 0x1a, 0x10, 0x92, 0x1b, 0x11, 0x91, 0x1b,
+ 0x13, 0x90, 0x1b, 0x14, 0x8f, 0x1c, 0x17, 0x8e, 0x1c, 0x16, 0x90, 0x1a,
+ 0x16, 0x90, 0x1a, 0x18, 0x90, 0x1c, 0x18, 0x90, 0x1c, 0x18, 0x90, 0x1c,
+ 0x18, 0x91, 0x1d, 0x18, 0x91, 0x1d, 0x18, 0x91, 0x1d, 0x19, 0x92, 0x1e,
+ 0x19, 0x92, 0x1e, 0x1a, 0x93, 0x1f, 0x1a, 0x93, 0x1f, 0x1a, 0x93, 0x1f,
+ 0x1a, 0x94, 0x1f, 0x1a, 0x94, 0x1f, 0x1a, 0x94, 0x1f, 0x1b, 0x95, 0x20,
+ 0x1b, 0x95, 0x20, 0x1d, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21,
+ 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21,
+ 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21, 0x1c, 0x95, 0x21,
+ 0x1c, 0x95, 0x21, 0x1d, 0x95, 0x21, 0x1b, 0x95, 0x1f, 0x1b, 0x94, 0x20,
+ 0x1a, 0x94, 0x20, 0x18, 0x96, 0x1f, 0x17, 0x96, 0x1f, 0x18, 0x94, 0x20,
+ 0x16, 0x95, 0x1f, 0x14, 0x97, 0x1d, 0x15, 0x94, 0x1d, 0x19, 0x91, 0x1f,
+ 0x1a, 0x8e, 0x1f, 0x16, 0x8a, 0x1d, 0x19, 0x89, 0x20, 0x1a, 0x7a, 0x1f,
+ 0x09, 0x40, 0x0c, 0x08, 0x19, 0x07, 0x09, 0x0c, 0x09, 0x07, 0x0a, 0x0b,
+ 0x07, 0x09, 0x0b, 0x06, 0x08, 0x08, 0x07, 0x08, 0x06, 0x07, 0x08, 0x07,
+ 0x07, 0x08, 0x06, 0x07, 0x08, 0x06, 0x06, 0x07, 0x06, 0x05, 0x07, 0x06,
+ 0x06, 0x07, 0x06, 0x06, 0x07, 0x07, 0x09, 0x09, 0x09, 0x07, 0x06, 0x06,
+ 0x06, 0x05, 0x05, 0x09, 0x09, 0x08, 0x10, 0x0f, 0x0e, 0x0c, 0x0b, 0x0b,
+ 0x0c, 0x0c, 0x0b, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x02, 0x03, 0x01, 0x03, 0x03, 0x01, 0x0b, 0x0b, 0x08, 0x17, 0x19, 0x15,
+ 0x1b, 0x21, 0x18, 0x16, 0x29, 0x13, 0x1b, 0x49, 0x19, 0x1a, 0x5d, 0x1b,
+ 0x14, 0x60, 0x16, 0x14, 0x63, 0x16, 0x15, 0x61, 0x16, 0x18, 0x61, 0x19,
+ 0x19, 0x60, 0x1a, 0x13, 0x63, 0x17, 0x12, 0x64, 0x16, 0x11, 0x66, 0x18,
+ 0x13, 0x65, 0x18, 0x14, 0x64, 0x18, 0x16, 0x62, 0x19, 0x18, 0x62, 0x19,
+ 0x18, 0x64, 0x17, 0x17, 0x65, 0x17, 0x18, 0x66, 0x1a, 0x17, 0x66, 0x1a,
+ 0x17, 0x66, 0x19, 0x18, 0x67, 0x1a, 0x18, 0x67, 0x1a, 0x18, 0x68, 0x1a,
+ 0x18, 0x68, 0x1b, 0x18, 0x68, 0x1b, 0x1a, 0x6a, 0x1d, 0x1a, 0x6a, 0x1c,
+ 0x1a, 0x6a, 0x1c, 0x1b, 0x6b, 0x1d, 0x1b, 0x6b, 0x1d, 0x1b, 0x6b, 0x1d,
+ 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1c, 0x6c, 0x1f, 0x1b, 0x6c, 0x1e,
+ 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e,
+ 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e,
+ 0x1b, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e, 0x1c, 0x6c, 0x1e, 0x1b, 0x6c, 0x1e,
+ 0x1b, 0x6b, 0x1d, 0x19, 0x6b, 0x1d, 0x17, 0x6c, 0x1e, 0x16, 0x6b, 0x1d,
+ 0x16, 0x6b, 0x1e, 0x15, 0x6b, 0x1c, 0x14, 0x6c, 0x1b, 0x16, 0x69, 0x1b,
+ 0x19, 0x67, 0x1c, 0x1a, 0x66, 0x1c, 0x16, 0x64, 0x18, 0x14, 0x5f, 0x17,
+ 0x16, 0x57, 0x17, 0x0d, 0x34, 0x0d, 0x13, 0x1c, 0x0e, 0x14, 0x13, 0x11,
+ 0x11, 0x10, 0x11, 0x10, 0x11, 0x11, 0x0f, 0x10, 0x0f, 0x0e, 0x10, 0x0e,
+ 0x0f, 0x10, 0x0f, 0x0f, 0x10, 0x0e, 0x0f, 0x10, 0x0e, 0x0e, 0x0f, 0x0e,
+ 0x0d, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x0e, 0x0f, 0x0e, 0x10, 0x11, 0x0f,
+ 0x0e, 0x0f, 0x0e, 0x0c, 0x0c, 0x0b, 0x0f, 0x0f, 0x0e, 0x12, 0x11, 0x11,
+ 0x13, 0x12, 0x12, 0x19, 0x17, 0x17, 0x19, 0x18, 0x18, 0x0c, 0x0b, 0x0c,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x02, 0x00, 0x02, 0x03, 0x01, 0x02, 0x03, 0x01, 0x0b, 0x0b, 0x08,
+ 0x1a, 0x1b, 0x18, 0x24, 0x25, 0x21, 0x1d, 0x20, 0x19, 0x1a, 0x27, 0x16,
+ 0x19, 0x36, 0x16, 0x14, 0x39, 0x13, 0x16, 0x3f, 0x14, 0x15, 0x3b, 0x13,
+ 0x18, 0x3a, 0x16, 0x19, 0x3b, 0x17, 0x13, 0x3c, 0x14, 0x12, 0x3d, 0x13,
+ 0x12, 0x3f, 0x15, 0x13, 0x3e, 0x15, 0x14, 0x3d, 0x15, 0x17, 0x3c, 0x16,
+ 0x18, 0x3d, 0x16, 0x18, 0x3d, 0x14, 0x17, 0x3e, 0x14, 0x17, 0x41, 0x16,
+ 0x15, 0x41, 0x16, 0x15, 0x41, 0x16, 0x17, 0x42, 0x17, 0x17, 0x42, 0x17,
+ 0x17, 0x42, 0x17, 0x17, 0x42, 0x18, 0x17, 0x42, 0x18, 0x19, 0x44, 0x1a,
+ 0x19, 0x44, 0x19, 0x19, 0x44, 0x19, 0x1a, 0x45, 0x19, 0x1a, 0x45, 0x19,
+ 0x1a, 0x45, 0x19, 0x1a, 0x46, 0x1a, 0x1a, 0x46, 0x1a, 0x1a, 0x46, 0x1c,
+ 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b,
+ 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b,
+ 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b, 0x1a, 0x46, 0x1b,
+ 0x1a, 0x47, 0x1c, 0x1a, 0x45, 0x1a, 0x17, 0x45, 0x1a, 0x15, 0x45, 0x1b,
+ 0x14, 0x44, 0x1a, 0x15, 0x45, 0x1b, 0x14, 0x44, 0x19, 0x13, 0x45, 0x18,
+ 0x15, 0x42, 0x19, 0x19, 0x41, 0x19, 0x19, 0x42, 0x19, 0x16, 0x43, 0x14,
+ 0x10, 0x3b, 0x0f, 0x11, 0x38, 0x10, 0x11, 0x28, 0x0e, 0x1c, 0x1f, 0x14,
+ 0x1e, 0x17, 0x18, 0x19, 0x14, 0x15, 0x17, 0x15, 0x16, 0x16, 0x15, 0x15,
+ 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x14, 0x14, 0x15, 0x13,
+ 0x15, 0x16, 0x14, 0x13, 0x14, 0x14, 0x13, 0x14, 0x14, 0x13, 0x14, 0x14,
+ 0x15, 0x15, 0x14, 0x14, 0x15, 0x14, 0x11, 0x11, 0x11, 0x13, 0x13, 0x12,
+ 0x13, 0x12, 0x11, 0x19, 0x17, 0x17, 0x21, 0x20, 0x1f, 0x22, 0x20, 0x20,
+ 0x0c, 0x0c, 0x0c, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x02, 0x00, 0x01, 0x02, 0x01, 0x02, 0x02, 0x01,
+ 0x08, 0x08, 0x06, 0x16, 0x17, 0x15, 0x1e, 0x1e, 0x1d, 0x19, 0x17, 0x16,
+ 0x13, 0x17, 0x10, 0x12, 0x24, 0x11, 0x0e, 0x28, 0x0d, 0x10, 0x2d, 0x0f,
+ 0x0f, 0x2a, 0x0e, 0x12, 0x28, 0x11, 0x13, 0x29, 0x11, 0x0e, 0x2a, 0x0f,
+ 0x0c, 0x2b, 0x0e, 0x0d, 0x2d, 0x0f, 0x0d, 0x2c, 0x0f, 0x0e, 0x2b, 0x0f,
+ 0x11, 0x2a, 0x10, 0x12, 0x2a, 0x11, 0x12, 0x2b, 0x0f, 0x11, 0x2c, 0x10,
+ 0x11, 0x2d, 0x11, 0x10, 0x2d, 0x11, 0x10, 0x2d, 0x11, 0x11, 0x2e, 0x12,
+ 0x11, 0x2e, 0x12, 0x11, 0x2f, 0x12, 0x11, 0x2f, 0x12, 0x11, 0x2f, 0x12,
+ 0x13, 0x30, 0x14, 0x13, 0x30, 0x13, 0x13, 0x30, 0x13, 0x14, 0x31, 0x13,
+ 0x14, 0x31, 0x13, 0x14, 0x31, 0x14, 0x14, 0x31, 0x14, 0x14, 0x31, 0x14,
+ 0x14, 0x32, 0x16, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15,
+ 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15,
+ 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15, 0x14, 0x32, 0x15,
+ 0x14, 0x32, 0x15, 0x14, 0x32, 0x16, 0x14, 0x31, 0x14, 0x12, 0x31, 0x14,
+ 0x12, 0x31, 0x16, 0x10, 0x30, 0x15, 0x11, 0x31, 0x14, 0x11, 0x30, 0x13,
+ 0x0f, 0x30, 0x13, 0x12, 0x2e, 0x14, 0x15, 0x2d, 0x14, 0x16, 0x2e, 0x13,
+ 0x13, 0x30, 0x0f, 0x0c, 0x2a, 0x0a, 0x0e, 0x28, 0x0b, 0x0e, 0x1f, 0x0b,
+ 0x19, 0x19, 0x12, 0x1b, 0x13, 0x16, 0x16, 0x11, 0x13, 0x14, 0x12, 0x13,
+ 0x13, 0x13, 0x12, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x12, 0x11,
+ 0x11, 0x12, 0x11, 0x12, 0x13, 0x12, 0x11, 0x12, 0x12, 0x11, 0x11, 0x12,
+ 0x11, 0x11, 0x11, 0x11, 0x10, 0x0f, 0x12, 0x12, 0x11, 0x10, 0x10, 0x0f,
+ 0x12, 0x11, 0x10, 0x10, 0x0f, 0x0e, 0x14, 0x13, 0x12, 0x1b, 0x1a, 0x19,
+ 0x1b, 0x1a, 0x1a, 0x09, 0x09, 0x09, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00,
+ 0x01, 0x01, 0x00, 0x05, 0x04, 0x04, 0x10, 0x10, 0x0f, 0x15, 0x14, 0x15,
+ 0x12, 0x10, 0x11, 0x0b, 0x0d, 0x0b, 0x0a, 0x19, 0x0c, 0x07, 0x1b, 0x07,
+ 0x07, 0x20, 0x0a, 0x07, 0x1d, 0x0a, 0x0b, 0x1b, 0x0b, 0x0c, 0x1b, 0x0c,
+ 0x06, 0x1c, 0x0a, 0x05, 0x1d, 0x09, 0x05, 0x1f, 0x09, 0x05, 0x1e, 0x0a,
+ 0x06, 0x1e, 0x0a, 0x09, 0x1c, 0x0b, 0x0a, 0x1c, 0x0b, 0x0a, 0x1d, 0x0a,
+ 0x0a, 0x1e, 0x0b, 0x0a, 0x1f, 0x0b, 0x09, 0x1e, 0x0b, 0x09, 0x1e, 0x0b,
+ 0x0b, 0x1f, 0x0d, 0x0b, 0x1f, 0x0d, 0x0b, 0x1f, 0x0c, 0x0b, 0x1f, 0x0c,
+ 0x0a, 0x1f, 0x0c, 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d,
+ 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d, 0x0c, 0x21, 0x0d, 0x0c, 0x20, 0x0e,
+ 0x0c, 0x20, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+ 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+ 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+ 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e, 0x0c, 0x21, 0x0e,
+ 0x0b, 0x21, 0x0e, 0x0d, 0x21, 0x0e, 0x0c, 0x20, 0x0e, 0x0c, 0x20, 0x0c,
+ 0x0c, 0x21, 0x0d, 0x0b, 0x1f, 0x0d, 0x0d, 0x1e, 0x0e, 0x10, 0x1d, 0x0f,
+ 0x11, 0x1d, 0x0e, 0x0e, 0x20, 0x0c, 0x09, 0x1d, 0x06, 0x09, 0x1d, 0x08,
+ 0x0a, 0x15, 0x07, 0x13, 0x11, 0x0e, 0x15, 0x0e, 0x11, 0x10, 0x0c, 0x0f,
+ 0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0d, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d,
+ 0x0c, 0x0d, 0x0d, 0x0c, 0x0d, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d,
+ 0x0c, 0x0c, 0x0d, 0x0c, 0x0c, 0x0d, 0x0b, 0x09, 0x09, 0x0d, 0x0d, 0x0c,
+ 0x0d, 0x0d, 0x0c, 0x10, 0x0f, 0x0e, 0x0b, 0x0a, 0x09, 0x0f, 0x0d, 0x0d,
+ 0x12, 0x11, 0x10, 0x11, 0x10, 0x0f, 0x06, 0x06, 0x05, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x0b, 0x0b, 0x0a,
+ 0x0b, 0x0c, 0x0c, 0x0b, 0x0d, 0x0b, 0x07, 0x10, 0x09, 0x06, 0x1e, 0x0b,
+ 0x02, 0x1f, 0x05, 0x02, 0x21, 0x07, 0x03, 0x20, 0x09, 0x08, 0x1e, 0x09,
+ 0x07, 0x1c, 0x09, 0x04, 0x1e, 0x09, 0x02, 0x1f, 0x09, 0x02, 0x21, 0x08,
+ 0x02, 0x20, 0x09, 0x03, 0x20, 0x09, 0x06, 0x1e, 0x09, 0x07, 0x1e, 0x09,
+ 0x05, 0x1f, 0x09, 0x06, 0x20, 0x0a, 0x07, 0x1f, 0x09, 0x07, 0x1f, 0x09,
+ 0x07, 0x1f, 0x09, 0x08, 0x1f, 0x0a, 0x08, 0x1f, 0x0a, 0x08, 0x1f, 0x0a,
+ 0x08, 0x1f, 0x0a, 0x08, 0x1f, 0x0a, 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0a,
+ 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0a, 0x09, 0x20, 0x0b,
+ 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+ 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+ 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+ 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b,
+ 0x09, 0x20, 0x0b, 0x09, 0x20, 0x0b, 0x0c, 0x20, 0x0b, 0x0d, 0x20, 0x0b,
+ 0x0b, 0x20, 0x09, 0x0b, 0x20, 0x09, 0x0a, 0x1e, 0x0b, 0x0b, 0x1d, 0x0c,
+ 0x0e, 0x1c, 0x0c, 0x0e, 0x1c, 0x0b, 0x0c, 0x1e, 0x0a, 0x09, 0x1e, 0x08,
+ 0x08, 0x1c, 0x09, 0x06, 0x11, 0x05, 0x0c, 0x0b, 0x09, 0x0e, 0x0a, 0x0b,
+ 0x09, 0x08, 0x09, 0x07, 0x07, 0x08, 0x08, 0x09, 0x07, 0x07, 0x08, 0x08,
+ 0x07, 0x08, 0x08, 0x07, 0x08, 0x08, 0x07, 0x08, 0x08, 0x07, 0x08, 0x08,
+ 0x08, 0x08, 0x08, 0x07, 0x07, 0x08, 0x07, 0x07, 0x07, 0x05, 0x03, 0x03,
+ 0x08, 0x07, 0x06, 0x09, 0x09, 0x07, 0x0c, 0x0b, 0x0a, 0x08, 0x06, 0x05,
+ 0x09, 0x07, 0x07, 0x0a, 0x09, 0x08, 0x08, 0x07, 0x06, 0x03, 0x03, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x02, 0x04, 0x02, 0x02, 0x03, 0x02,
+ 0x09, 0x09, 0x09, 0x07, 0x08, 0x07, 0x06, 0x11, 0x07, 0x08, 0x21, 0x0c,
+ 0x08, 0x31, 0x0e, 0x03, 0x31, 0x09, 0x02, 0x31, 0x08, 0x06, 0x31, 0x0b,
+ 0x0a, 0x2f, 0x0c, 0x08, 0x2c, 0x0b, 0x07, 0x2f, 0x0c, 0x05, 0x30, 0x0c,
+ 0x04, 0x32, 0x0b, 0x04, 0x31, 0x0c, 0x05, 0x31, 0x0c, 0x08, 0x2f, 0x0c,
+ 0x09, 0x2f, 0x0c, 0x07, 0x30, 0x0c, 0x08, 0x30, 0x0c, 0x09, 0x2e, 0x0b,
+ 0x0a, 0x2e, 0x0b, 0x0a, 0x2e, 0x0b, 0x0a, 0x2f, 0x0c, 0x0a, 0x2f, 0x0c,
+ 0x0a, 0x2f, 0x0c, 0x0a, 0x2f, 0x0c, 0x0a, 0x2f, 0x0c, 0x0b, 0x2e, 0x0c,
+ 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+ 0x0b, 0x30, 0x0d, 0x0b, 0x2f, 0x0d, 0x0b, 0x2f, 0x0d, 0x0b, 0x2e, 0x0d,
+ 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d,
+ 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d,
+ 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d,
+ 0x0b, 0x2e, 0x0d, 0x0b, 0x2e, 0x0d, 0x0c, 0x2f, 0x0d, 0x0f, 0x2e, 0x0d,
+ 0x10, 0x2e, 0x0d, 0x0e, 0x30, 0x0b, 0x0e, 0x30, 0x0b, 0x0c, 0x2d, 0x0d,
+ 0x0d, 0x2b, 0x0f, 0x10, 0x2a, 0x0e, 0x0f, 0x2a, 0x0e, 0x0d, 0x2b, 0x0c,
+ 0x0e, 0x2d, 0x0e, 0x0b, 0x28, 0x0e, 0x04, 0x16, 0x08, 0x06, 0x09, 0x06,
+ 0x07, 0x08, 0x07, 0x04, 0x07, 0x05, 0x03, 0x04, 0x04, 0x04, 0x05, 0x03,
+ 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
+ 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, 0x04, 0x04, 0x03, 0x03,
+ 0x03, 0x01, 0x01, 0x04, 0x04, 0x03, 0x04, 0x05, 0x04, 0x08, 0x08, 0x07,
+ 0x07, 0x05, 0x04, 0x07, 0x05, 0x04, 0x09, 0x07, 0x06, 0x06, 0x04, 0x03,
+ 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x03, 0x05, 0x03,
+ 0x02, 0x03, 0x02, 0x08, 0x07, 0x08, 0x03, 0x06, 0x03, 0x04, 0x15, 0x04,
+ 0x0b, 0x31, 0x10, 0x0b, 0x41, 0x11, 0x05, 0x42, 0x0c, 0x03, 0x3f, 0x0a,
+ 0x09, 0x40, 0x0e, 0x0d, 0x3e, 0x0f, 0x0c, 0x3a, 0x0f, 0x0b, 0x3d, 0x10,
+ 0x09, 0x3e, 0x10, 0x08, 0x40, 0x0f, 0x08, 0x40, 0x10, 0x09, 0x3f, 0x10,
+ 0x0a, 0x3d, 0x0f, 0x0b, 0x3d, 0x0f, 0x0a, 0x3e, 0x10, 0x0a, 0x3f, 0x0e,
+ 0x0c, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e,
+ 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e,
+ 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e, 0x0d, 0x3c, 0x0e,
+ 0x0d, 0x3c, 0x0e, 0x0d, 0x3d, 0x0f, 0x0d, 0x3d, 0x0f, 0x0d, 0x3d, 0x0f,
+ 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f,
+ 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f,
+ 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f,
+ 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0d, 0x3c, 0x0f, 0x0f, 0x3c, 0x0f,
+ 0x12, 0x3a, 0x10, 0x14, 0x3b, 0x0f, 0x12, 0x3e, 0x0c, 0x11, 0x3e, 0x0d,
+ 0x0e, 0x3c, 0x0f, 0x0f, 0x38, 0x11, 0x11, 0x37, 0x10, 0x11, 0x37, 0x10,
+ 0x0e, 0x37, 0x0e, 0x11, 0x3b, 0x13, 0x0e, 0x33, 0x13, 0x04, 0x1b, 0x0a,
+ 0x02, 0x08, 0x03, 0x03, 0x07, 0x05, 0x02, 0x07, 0x03, 0x02, 0x03, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x08, 0x05, 0x05, 0x08, 0x05, 0x05, 0x06, 0x04, 0x03, 0x08, 0x06, 0x05,
+ 0x05, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x03, 0x04, 0x03, 0x05, 0x05, 0x05, 0x0c, 0x0c, 0x0c, 0x07, 0x0b, 0x07,
+ 0x07, 0x19, 0x07, 0x12, 0x39, 0x16, 0x0e, 0x45, 0x13, 0x0b, 0x48, 0x10,
+ 0x0a, 0x46, 0x0d, 0x0f, 0x45, 0x10, 0x13, 0x43, 0x12, 0x14, 0x41, 0x13,
+ 0x12, 0x43, 0x13, 0x10, 0x43, 0x13, 0x0e, 0x45, 0x12, 0x0f, 0x45, 0x13,
+ 0x0f, 0x44, 0x13, 0x0f, 0x42, 0x12, 0x10, 0x42, 0x12, 0x0f, 0x44, 0x12,
+ 0x0f, 0x45, 0x11, 0x10, 0x43, 0x11, 0x10, 0x43, 0x12, 0x10, 0x43, 0x12,
+ 0x10, 0x43, 0x12, 0x10, 0x43, 0x12, 0x10, 0x42, 0x11, 0x10, 0x43, 0x11,
+ 0x10, 0x42, 0x11, 0x10, 0x43, 0x12, 0x10, 0x43, 0x12, 0x10, 0x43, 0x12,
+ 0x10, 0x43, 0x12, 0x10, 0x43, 0x12, 0x10, 0x44, 0x12, 0x10, 0x44, 0x12,
+ 0x10, 0x44, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12,
+ 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12,
+ 0x11, 0x43, 0x12, 0x11, 0x43, 0x13, 0x11, 0x43, 0x13, 0x11, 0x43, 0x12,
+ 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12, 0x11, 0x43, 0x12,
+ 0x12, 0x43, 0x13, 0x16, 0x41, 0x14, 0x16, 0x42, 0x13, 0x14, 0x45, 0x10,
+ 0x11, 0x46, 0x10, 0x0e, 0x45, 0x12, 0x0e, 0x42, 0x14, 0x11, 0x41, 0x13,
+ 0x11, 0x41, 0x12, 0x0e, 0x41, 0x10, 0x12, 0x44, 0x15, 0x10, 0x3b, 0x16,
+ 0x09, 0x25, 0x0e, 0x07, 0x0f, 0x06, 0x08, 0x0c, 0x07, 0x06, 0x0b, 0x06,
+ 0x06, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+ 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x08, 0x07, 0x07, 0x07, 0x05, 0x06,
+ 0x08, 0x06, 0x07, 0x0d, 0x0a, 0x0a, 0x0e, 0x0b, 0x0b, 0x0b, 0x08, 0x07,
+ 0x0d, 0x0b, 0x0a, 0x0b, 0x08, 0x09, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x01, 0x01, 0x02, 0x03, 0x02, 0x06, 0x07, 0x06, 0x10, 0x10, 0x10,
+ 0x0a, 0x10, 0x0b, 0x0a, 0x1c, 0x09, 0x18, 0x3f, 0x1a, 0x11, 0x47, 0x14,
+ 0x0f, 0x4b, 0x11, 0x0f, 0x4a, 0x10, 0x13, 0x48, 0x12, 0x18, 0x45, 0x14,
+ 0x1a, 0x44, 0x16, 0x17, 0x46, 0x14, 0x15, 0x46, 0x14, 0x13, 0x48, 0x13,
+ 0x14, 0x48, 0x14, 0x14, 0x47, 0x14, 0x14, 0x45, 0x14, 0x15, 0x45, 0x14,
+ 0x13, 0x46, 0x14, 0x12, 0x46, 0x13, 0x12, 0x46, 0x14, 0x12, 0x46, 0x15,
+ 0x12, 0x46, 0x14, 0x12, 0x46, 0x14, 0x12, 0x46, 0x15, 0x12, 0x45, 0x14,
+ 0x12, 0x46, 0x14, 0x12, 0x45, 0x14, 0x13, 0x46, 0x15, 0x13, 0x46, 0x14,
+ 0x13, 0x46, 0x14, 0x13, 0x46, 0x14, 0x13, 0x46, 0x14, 0x13, 0x47, 0x15,
+ 0x13, 0x47, 0x15, 0x13, 0x47, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15,
+ 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15,
+ 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x47, 0x16, 0x14, 0x47, 0x16,
+ 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15, 0x14, 0x46, 0x15,
+ 0x13, 0x46, 0x15, 0x15, 0x46, 0x15, 0x18, 0x44, 0x17, 0x18, 0x45, 0x16,
+ 0x15, 0x49, 0x12, 0x12, 0x4b, 0x12, 0x0f, 0x4a, 0x14, 0x0e, 0x47, 0x15,
+ 0x11, 0x47, 0x14, 0x12, 0x47, 0x13, 0x0e, 0x47, 0x12, 0x12, 0x49, 0x15,
+ 0x12, 0x40, 0x17, 0x0e, 0x2c, 0x11, 0x0b, 0x14, 0x09, 0x0d, 0x0f, 0x0a,
+ 0x0b, 0x0e, 0x09, 0x0a, 0x0b, 0x09, 0x0a, 0x0a, 0x09, 0x0b, 0x0a, 0x0b,
+ 0x0b, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a, 0x0c, 0x0a, 0x0a,
+ 0x0c, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x0c, 0x0b, 0x0c,
+ 0x0a, 0x0a, 0x0a, 0x0d, 0x0a, 0x0b, 0x10, 0x0d, 0x0d, 0x13, 0x10, 0x10,
+ 0x0f, 0x0b, 0x0c, 0x12, 0x0e, 0x0f, 0x10, 0x0d, 0x0e, 0x08, 0x08, 0x08,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x02, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x0a, 0x0a, 0x09,
+ 0x15, 0x16, 0x15, 0x10, 0x16, 0x0f, 0x0e, 0x20, 0x0d, 0x1f, 0x45, 0x1f,
+ 0x15, 0x48, 0x15, 0x15, 0x4e, 0x14, 0x16, 0x4d, 0x13, 0x19, 0x4b, 0x14,
+ 0x1e, 0x48, 0x16, 0x22, 0x49, 0x1a, 0x1e, 0x48, 0x18, 0x1c, 0x48, 0x17,
+ 0x1a, 0x4a, 0x16, 0x1b, 0x4a, 0x17, 0x1b, 0x49, 0x17, 0x1a, 0x47, 0x17,
+ 0x1b, 0x47, 0x17, 0x19, 0x49, 0x16, 0x18, 0x49, 0x16, 0x16, 0x4a, 0x17,
+ 0x15, 0x4a, 0x18, 0x15, 0x4a, 0x18, 0x15, 0x4a, 0x18, 0x15, 0x4a, 0x18,
+ 0x15, 0x48, 0x17, 0x15, 0x49, 0x17, 0x15, 0x49, 0x17, 0x16, 0x4b, 0x18,
+ 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18,
+ 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x16, 0x4b, 0x18, 0x18, 0x4b, 0x18,
+ 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18,
+ 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x19,
+ 0x18, 0x4b, 0x19, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18, 0x18, 0x4b, 0x18,
+ 0x18, 0x4b, 0x18, 0x17, 0x4b, 0x18, 0x19, 0x4a, 0x19, 0x1b, 0x49, 0x1b,
+ 0x1a, 0x4a, 0x1a, 0x17, 0x4d, 0x16, 0x13, 0x4f, 0x15, 0x10, 0x4f, 0x17,
+ 0x10, 0x4e, 0x17, 0x12, 0x4e, 0x17, 0x13, 0x4e, 0x16, 0x10, 0x4e, 0x13,
+ 0x14, 0x4f, 0x16, 0x14, 0x46, 0x19, 0x14, 0x34, 0x15, 0x10, 0x1a, 0x0c,
+ 0x13, 0x14, 0x0d, 0x11, 0x12, 0x0d, 0x0f, 0x10, 0x0e, 0x0f, 0x0f, 0x0e,
+ 0x10, 0x0f, 0x10, 0x10, 0x0f, 0x0f, 0x12, 0x0f, 0x0f, 0x12, 0x0f, 0x0f,
+ 0x12, 0x0f, 0x0f, 0x12, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f,
+ 0x12, 0x11, 0x11, 0x10, 0x0e, 0x0f, 0x13, 0x0f, 0x10, 0x15, 0x12, 0x13,
+ 0x19, 0x16, 0x16, 0x13, 0x0f, 0x10, 0x17, 0x14, 0x15, 0x16, 0x14, 0x14,
+ 0x0c, 0x0c, 0x0c, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x03, 0x03, 0x03,
+ 0x0e, 0x0d, 0x0d, 0x19, 0x19, 0x18, 0x12, 0x1a, 0x12, 0x0f, 0x23, 0x0d,
+ 0x21, 0x45, 0x1e, 0x1a, 0x47, 0x17, 0x1a, 0x49, 0x16, 0x1c, 0x4a, 0x16,
+ 0x1c, 0x48, 0x16, 0x21, 0x47, 0x18, 0x23, 0x47, 0x19, 0x20, 0x48, 0x18,
+ 0x1f, 0x48, 0x18, 0x1e, 0x49, 0x18, 0x1f, 0x48, 0x18, 0x1f, 0x48, 0x18,
+ 0x1e, 0x47, 0x18, 0x1e, 0x47, 0x18, 0x1d, 0x47, 0x18, 0x1c, 0x47, 0x18,
+ 0x1b, 0x48, 0x18, 0x1a, 0x48, 0x19, 0x1a, 0x48, 0x19, 0x1a, 0x48, 0x19,
+ 0x1a, 0x48, 0x19, 0x1a, 0x47, 0x18, 0x1a, 0x48, 0x18, 0x1a, 0x47, 0x18,
+ 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19,
+ 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19, 0x1b, 0x49, 0x19,
+ 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19,
+ 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19,
+ 0x1c, 0x49, 0x1a, 0x1c, 0x49, 0x1a, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19,
+ 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1c, 0x49, 0x19, 0x1d, 0x48, 0x19,
+ 0x1e, 0x48, 0x1b, 0x1e, 0x48, 0x1b, 0x1c, 0x4a, 0x19, 0x18, 0x4b, 0x17,
+ 0x17, 0x4c, 0x18, 0x17, 0x4c, 0x17, 0x18, 0x4c, 0x18, 0x18, 0x4b, 0x18,
+ 0x17, 0x4b, 0x16, 0x1a, 0x4b, 0x18, 0x1a, 0x45, 0x1a, 0x17, 0x35, 0x15,
+ 0x10, 0x1b, 0x0c, 0x12, 0x15, 0x0e, 0x11, 0x12, 0x0e, 0x11, 0x11, 0x0f,
+ 0x10, 0x10, 0x0f, 0x11, 0x10, 0x10, 0x11, 0x10, 0x10, 0x12, 0x10, 0x10,
+ 0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10, 0x12, 0x10, 0x10,
+ 0x12, 0x10, 0x10, 0x12, 0x11, 0x11, 0x11, 0x10, 0x10, 0x14, 0x10, 0x11,
+ 0x14, 0x11, 0x12, 0x1a, 0x18, 0x17, 0x14, 0x11, 0x11, 0x18, 0x16, 0x16,
+ 0x1a, 0x18, 0x18, 0x0f, 0x0e, 0x0e, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00,
+ 0x07, 0x04, 0x04, 0x13, 0x12, 0x11, 0x1c, 0x1d, 0x1a, 0x16, 0x1d, 0x13,
+ 0x10, 0x27, 0x0d, 0x21, 0x45, 0x1c, 0x20, 0x45, 0x19, 0x1e, 0x43, 0x17,
+ 0x20, 0x47, 0x19, 0x1f, 0x44, 0x18, 0x21, 0x46, 0x19, 0x22, 0x45, 0x18,
+ 0x22, 0x46, 0x19, 0x22, 0x46, 0x19, 0x21, 0x45, 0x1a, 0x21, 0x45, 0x19,
+ 0x21, 0x45, 0x19, 0x21, 0x45, 0x19, 0x21, 0x45, 0x19, 0x21, 0x44, 0x1b,
+ 0x20, 0x44, 0x1b, 0x20, 0x45, 0x19, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+ 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x19, 0x20, 0x46, 0x19,
+ 0x20, 0x45, 0x19, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+ 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+ 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+ 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+ 0x20, 0x45, 0x1a, 0x20, 0x46, 0x1a, 0x20, 0x46, 0x1a, 0x20, 0x45, 0x1a,
+ 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a, 0x20, 0x45, 0x1a,
+ 0x21, 0x45, 0x1a, 0x21, 0x46, 0x19, 0x21, 0x46, 0x1a, 0x20, 0x45, 0x1b,
+ 0x1f, 0x45, 0x1b, 0x21, 0x47, 0x19, 0x21, 0x47, 0x18, 0x1f, 0x47, 0x19,
+ 0x1f, 0x46, 0x1a, 0x1f, 0x46, 0x19, 0x21, 0x46, 0x1a, 0x21, 0x44, 0x1b,
+ 0x1b, 0x33, 0x16, 0x0f, 0x1a, 0x0d, 0x0f, 0x14, 0x0f, 0x0f, 0x12, 0x0f,
+ 0x11, 0x11, 0x10, 0x10, 0x11, 0x0f, 0x11, 0x10, 0x10, 0x11, 0x10, 0x0f,
+ 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f, 0x12, 0x10, 0x0f,
+ 0x11, 0x10, 0x0f, 0x11, 0x10, 0x0f, 0x12, 0x11, 0x10, 0x12, 0x10, 0x10,
+ 0x13, 0x11, 0x11, 0x12, 0x10, 0x10, 0x1a, 0x18, 0x18, 0x14, 0x13, 0x12,
+ 0x18, 0x17, 0x16, 0x1d, 0x1c, 0x1b, 0x10, 0x10, 0x10, 0x04, 0x04, 0x04,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x08, 0x05, 0x04, 0x15, 0x14, 0x12, 0x1d, 0x1e, 0x1a,
+ 0x16, 0x1e, 0x12, 0x11, 0x29, 0x0c, 0x21, 0x43, 0x1a, 0x23, 0x43, 0x1a,
+ 0x20, 0x3f, 0x18, 0x22, 0x43, 0x1a, 0x20, 0x41, 0x18, 0x22, 0x44, 0x19,
+ 0x21, 0x43, 0x18, 0x22, 0x44, 0x18, 0x22, 0x44, 0x18, 0x22, 0x42, 0x1a,
+ 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x23, 0x43, 0x19, 0x23, 0x43, 0x19,
+ 0x23, 0x41, 0x1b, 0x23, 0x41, 0x1b, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19,
+ 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x43, 0x19,
+ 0x22, 0x43, 0x19, 0x22, 0x43, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19,
+ 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x22, 0x42, 0x19,
+ 0x22, 0x42, 0x19, 0x22, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+ 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+ 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+ 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x23, 0x42, 0x19,
+ 0x23, 0x42, 0x19, 0x23, 0x42, 0x19, 0x22, 0x44, 0x18, 0x22, 0x43, 0x19,
+ 0x23, 0x40, 0x1c, 0x23, 0x40, 0x1b, 0x25, 0x42, 0x18, 0x25, 0x43, 0x17,
+ 0x23, 0x43, 0x18, 0x23, 0x42, 0x1a, 0x24, 0x43, 0x1a, 0x25, 0x42, 0x1b,
+ 0x24, 0x41, 0x1a, 0x1c, 0x32, 0x15, 0x0e, 0x1a, 0x0d, 0x0d, 0x14, 0x0f,
+ 0x0e, 0x11, 0x0f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x11, 0x0f, 0x0f,
+ 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f,
+ 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0f, 0x11, 0x0f, 0x0e,
+ 0x11, 0x0f, 0x0e, 0x11, 0x10, 0x10, 0x10, 0x0f, 0x0f, 0x1a, 0x19, 0x18,
+ 0x14, 0x14, 0x12, 0x16, 0x15, 0x14, 0x1c, 0x1b, 0x1a, 0x10, 0x10, 0x10,
+ 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x07, 0x04, 0x03, 0x14, 0x12, 0x11,
+ 0x1b, 0x1c, 0x18, 0x13, 0x1b, 0x10, 0x11, 0x27, 0x0d, 0x20, 0x42, 0x1a,
+ 0x21, 0x42, 0x19, 0x1e, 0x3f, 0x17, 0x21, 0x42, 0x19, 0x1f, 0x3f, 0x17,
+ 0x21, 0x43, 0x18, 0x20, 0x42, 0x17, 0x20, 0x42, 0x17, 0x20, 0x43, 0x17,
+ 0x20, 0x41, 0x19, 0x20, 0x41, 0x18, 0x21, 0x41, 0x18, 0x22, 0x41, 0x18,
+ 0x22, 0x41, 0x18, 0x22, 0x40, 0x1a, 0x22, 0x40, 0x1a, 0x20, 0x41, 0x18,
+ 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18,
+ 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18,
+ 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18,
+ 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x20, 0x41, 0x18, 0x22, 0x41, 0x18,
+ 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18,
+ 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18,
+ 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18,
+ 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x22, 0x41, 0x18, 0x20, 0x43, 0x17,
+ 0x20, 0x42, 0x18, 0x22, 0x3f, 0x1b, 0x22, 0x3e, 0x1a, 0x23, 0x41, 0x17,
+ 0x23, 0x42, 0x16, 0x22, 0x41, 0x17, 0x22, 0x41, 0x18, 0x23, 0x42, 0x19,
+ 0x24, 0x41, 0x1a, 0x23, 0x3f, 0x19, 0x1b, 0x31, 0x14, 0x0e, 0x19, 0x0c,
+ 0x0e, 0x13, 0x0e, 0x0e, 0x10, 0x0e, 0x10, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e,
+ 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e,
+ 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e,
+ 0x10, 0x0e, 0x0e, 0x10, 0x0e, 0x0e, 0x11, 0x10, 0x0f, 0x11, 0x0f, 0x0f,
+ 0x1a, 0x18, 0x18, 0x14, 0x12, 0x12, 0x14, 0x13, 0x12, 0x17, 0x16, 0x16,
+ 0x0f, 0x0f, 0x0e, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x06, 0x03, 0x03,
+ 0x12, 0x10, 0x10, 0x18, 0x19, 0x15, 0x11, 0x19, 0x0d, 0x11, 0x27, 0x0c,
+ 0x20, 0x41, 0x19, 0x1f, 0x41, 0x18, 0x1c, 0x3e, 0x16, 0x20, 0x40, 0x18,
+ 0x1e, 0x3e, 0x16, 0x20, 0x42, 0x17, 0x1e, 0x41, 0x16, 0x1e, 0x40, 0x15,
+ 0x1e, 0x41, 0x15, 0x1e, 0x3f, 0x17, 0x1e, 0x3f, 0x16, 0x1f, 0x3f, 0x16,
+ 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3e, 0x18, 0x21, 0x3e, 0x18,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16,
+ 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16,
+ 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16,
+ 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x16, 0x21, 0x3f, 0x17,
+ 0x1e, 0x41, 0x15, 0x1e, 0x40, 0x16, 0x21, 0x3d, 0x19, 0x21, 0x3d, 0x19,
+ 0x20, 0x3f, 0x15, 0x20, 0x40, 0x14, 0x21, 0x3f, 0x15, 0x21, 0x3f, 0x16,
+ 0x22, 0x40, 0x18, 0x23, 0x3f, 0x18, 0x22, 0x3e, 0x17, 0x1a, 0x30, 0x13,
+ 0x0e, 0x18, 0x0b, 0x0e, 0x12, 0x0d, 0x0e, 0x0e, 0x0e, 0x0f, 0x0d, 0x0d,
+ 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e,
+ 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e,
+ 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0e, 0x0f, 0x0d, 0x0d, 0x10, 0x0f, 0x0e,
+ 0x10, 0x0f, 0x0f, 0x1a, 0x18, 0x18, 0x13, 0x12, 0x11, 0x11, 0x10, 0x0f,
+ 0x12, 0x12, 0x11, 0x0d, 0x0d, 0x0d, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
+ 0x06, 0x05, 0x03, 0x11, 0x10, 0x0f, 0x17, 0x17, 0x14, 0x11, 0x19, 0x0d,
+ 0x11, 0x26, 0x0c, 0x1f, 0x40, 0x18, 0x1e, 0x40, 0x17, 0x1c, 0x3d, 0x15,
+ 0x1f, 0x3f, 0x17, 0x1d, 0x3e, 0x15, 0x1f, 0x41, 0x16, 0x1e, 0x3f, 0x15,
+ 0x1e, 0x3f, 0x15, 0x1e, 0x40, 0x15, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1f, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3e, 0x17,
+ 0x20, 0x3e, 0x17, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16, 0x1e, 0x3f, 0x16,
+ 0x1e, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+ 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+ 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+ 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16, 0x20, 0x3f, 0x16,
+ 0x20, 0x3f, 0x16, 0x1e, 0x40, 0x15, 0x1e, 0x3f, 0x16, 0x20, 0x3c, 0x18,
+ 0x20, 0x3c, 0x18, 0x20, 0x3f, 0x15, 0x20, 0x40, 0x14, 0x20, 0x3f, 0x15,
+ 0x20, 0x3f, 0x16, 0x21, 0x40, 0x17, 0x22, 0x3f, 0x17, 0x22, 0x3d, 0x17,
+ 0x1a, 0x2f, 0x13, 0x0e, 0x18, 0x0b, 0x0d, 0x12, 0x0c, 0x0d, 0x0e, 0x0c,
+ 0x0f, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d,
+ 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d,
+ 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0d, 0x0e, 0x0d, 0x0c,
+ 0x0f, 0x0e, 0x0d, 0x10, 0x0f, 0x0e, 0x18, 0x17, 0x17, 0x12, 0x11, 0x10,
+ 0x0f, 0x0e, 0x0d, 0x0f, 0x0f, 0x0f, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x00, 0x06, 0x06, 0x04, 0x11, 0x11, 0x0f, 0x17, 0x17, 0x14,
+ 0x10, 0x18, 0x0c, 0x12, 0x27, 0x0c, 0x1f, 0x3e, 0x17, 0x1d, 0x3f, 0x16,
+ 0x1b, 0x3d, 0x14, 0x1f, 0x3f, 0x17, 0x1d, 0x3d, 0x15, 0x1f, 0x40, 0x15,
+ 0x1d, 0x3f, 0x14, 0x1d, 0x3f, 0x14, 0x1d, 0x3f, 0x14, 0x1d, 0x3e, 0x16,
+ 0x1d, 0x3e, 0x15, 0x1e, 0x3e, 0x15, 0x20, 0x3e, 0x15, 0x20, 0x3e, 0x15,
+ 0x20, 0x3d, 0x17, 0x20, 0x3d, 0x17, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+ 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+ 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+ 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+ 0x1f, 0x3e, 0x15, 0x1f, 0x3e, 0x16, 0x1d, 0x3f, 0x14, 0x1d, 0x3e, 0x15,
+ 0x20, 0x3c, 0x18, 0x20, 0x3b, 0x17, 0x1f, 0x3e, 0x15, 0x1f, 0x3f, 0x14,
+ 0x1f, 0x3e, 0x14, 0x1f, 0x3e, 0x15, 0x20, 0x3f, 0x17, 0x21, 0x3e, 0x16,
+ 0x22, 0x3d, 0x17, 0x1b, 0x30, 0x12, 0x0d, 0x19, 0x0a, 0x0c, 0x12, 0x0c,
+ 0x0c, 0x0e, 0x0b, 0x0e, 0x0c, 0x0c, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+ 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d, 0x0e, 0x0e, 0x0d,
+ 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0d, 0x0f, 0x10, 0x0e, 0x17, 0x17, 0x16,
+ 0x11, 0x11, 0x10, 0x0d, 0x0d, 0x0c, 0x0e, 0x0e, 0x0c, 0x0b, 0x0b, 0x0b,
+ 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x08, 0x05, 0x10, 0x11, 0x0f,
+ 0x16, 0x15, 0x12, 0x10, 0x18, 0x0c, 0x12, 0x26, 0x0d, 0x1e, 0x3d, 0x17,
+ 0x1c, 0x3e, 0x15, 0x1b, 0x3c, 0x13, 0x1e, 0x3e, 0x15, 0x1c, 0x3c, 0x14,
+ 0x1e, 0x3e, 0x14, 0x1d, 0x3e, 0x13, 0x1d, 0x3e, 0x14, 0x1d, 0x3e, 0x14,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1e, 0x3e, 0x15, 0x1f, 0x3e, 0x15,
+ 0x1f, 0x3e, 0x15, 0x1f, 0x3d, 0x16, 0x1f, 0x3d, 0x16, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15,
+ 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x15, 0x1d, 0x3e, 0x14,
+ 0x1d, 0x3e, 0x15, 0x1f, 0x3b, 0x17, 0x1f, 0x3b, 0x16, 0x1f, 0x3d, 0x14,
+ 0x1f, 0x3e, 0x14, 0x1d, 0x3e, 0x14, 0x1d, 0x3e, 0x15, 0x1e, 0x3e, 0x16,
+ 0x1f, 0x3e, 0x15, 0x21, 0x3c, 0x17, 0x1b, 0x30, 0x12, 0x0d, 0x19, 0x0a,
+ 0x0c, 0x11, 0x0b, 0x0c, 0x0d, 0x0a, 0x0d, 0x0c, 0x0c, 0x0d, 0x0e, 0x0c,
+ 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c,
+ 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c, 0x0d, 0x0e, 0x0c,
+ 0x0d, 0x0e, 0x0c, 0x0c, 0x0c, 0x0b, 0x0d, 0x0d, 0x0c, 0x0e, 0x0f, 0x0d,
+ 0x15, 0x17, 0x15, 0x0f, 0x10, 0x0f, 0x0b, 0x0b, 0x0a, 0x0b, 0x0b, 0x0a,
+ 0x0b, 0x0b, 0x0a, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x06, 0x07, 0x05,
+ 0x0f, 0x10, 0x0e, 0x14, 0x13, 0x10, 0x0f, 0x16, 0x0b, 0x11, 0x26, 0x0c,
+ 0x1b, 0x3a, 0x15, 0x1a, 0x3b, 0x14, 0x19, 0x3a, 0x12, 0x1c, 0x3d, 0x14,
+ 0x1a, 0x3b, 0x13, 0x1b, 0x3c, 0x13, 0x1a, 0x3b, 0x12, 0x1b, 0x3c, 0x13,
+ 0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x13,
+ 0x1c, 0x3b, 0x14, 0x1c, 0x3b, 0x14, 0x1c, 0x3b, 0x15, 0x1c, 0x3b, 0x15,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x14, 0x1c, 0x39, 0x16, 0x1c, 0x39, 0x15,
+ 0x1c, 0x3c, 0x13, 0x1c, 0x3c, 0x12, 0x1b, 0x3c, 0x13, 0x1b, 0x3c, 0x14,
+ 0x1b, 0x3c, 0x15, 0x1c, 0x3b, 0x14, 0x1f, 0x3a, 0x16, 0x19, 0x2f, 0x12,
+ 0x0d, 0x18, 0x0a, 0x0c, 0x11, 0x0a, 0x0c, 0x0d, 0x0a, 0x0d, 0x0c, 0x0b,
+ 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b,
+ 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b, 0x0c, 0x0d, 0x0b,
+ 0x0c, 0x0d, 0x0b, 0x0d, 0x0d, 0x0c, 0x0c, 0x0c, 0x0b, 0x0c, 0x0c, 0x0b,
+ 0x0c, 0x0d, 0x0b, 0x13, 0x14, 0x12, 0x0e, 0x0e, 0x0d, 0x0b, 0x0b, 0x0a,
+ 0x0a, 0x0a, 0x09, 0x0a, 0x0a, 0x0a, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x07, 0x08, 0x05, 0x0e, 0x0e, 0x0c, 0x11, 0x11, 0x0e, 0x0d, 0x14, 0x0a,
+ 0x0f, 0x26, 0x0c, 0x17, 0x38, 0x13, 0x17, 0x38, 0x12, 0x17, 0x38, 0x11,
+ 0x18, 0x3b, 0x12, 0x18, 0x3a, 0x12, 0x19, 0x3a, 0x12, 0x18, 0x39, 0x11,
+ 0x19, 0x3a, 0x12, 0x19, 0x3a, 0x12, 0x19, 0x3a, 0x12, 0x19, 0x3a, 0x11,
+ 0x19, 0x3a, 0x12, 0x1a, 0x38, 0x13, 0x1a, 0x38, 0x13, 0x1a, 0x39, 0x13,
+ 0x1a, 0x39, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x11, 0x19, 0x3a, 0x13, 0x1a, 0x37, 0x15,
+ 0x1a, 0x37, 0x14, 0x1a, 0x3a, 0x11, 0x1a, 0x3a, 0x10, 0x19, 0x3a, 0x12,
+ 0x19, 0x3a, 0x13, 0x19, 0x3a, 0x13, 0x1a, 0x39, 0x13, 0x1c, 0x38, 0x14,
+ 0x17, 0x2e, 0x11, 0x0c, 0x17, 0x09, 0x0b, 0x10, 0x0a, 0x0b, 0x0c, 0x0a,
+ 0x0c, 0x0c, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b,
+ 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b, 0x0a, 0x0c, 0x0b,
+ 0x0a, 0x0c, 0x0b, 0x0a, 0x0b, 0x0a, 0x0b, 0x0c, 0x0b, 0x0a, 0x0b, 0x0a,
+ 0x0a, 0x0b, 0x09, 0x0a, 0x0b, 0x09, 0x10, 0x11, 0x10, 0x0c, 0x0e, 0x0b,
+ 0x0a, 0x0a, 0x09, 0x09, 0x0a, 0x08, 0x09, 0x09, 0x09, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x06, 0x07, 0x05, 0x0c, 0x0c, 0x0a, 0x0d, 0x0e, 0x0b,
+ 0x0a, 0x12, 0x08, 0x0c, 0x24, 0x0a, 0x12, 0x34, 0x10, 0x12, 0x34, 0x0f,
+ 0x12, 0x35, 0x0f, 0x14, 0x38, 0x10, 0x14, 0x37, 0x10, 0x14, 0x37, 0x10,
+ 0x14, 0x36, 0x10, 0x15, 0x37, 0x10, 0x15, 0x37, 0x10, 0x15, 0x36, 0x10,
+ 0x15, 0x36, 0x0f, 0x15, 0x36, 0x10, 0x15, 0x35, 0x11, 0x15, 0x35, 0x11,
+ 0x15, 0x35, 0x11, 0x15, 0x35, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+ 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+ 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+ 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x15, 0x36, 0x11,
+ 0x15, 0x36, 0x11, 0x15, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+ 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+ 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+ 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11,
+ 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x15, 0x37, 0x0f, 0x15, 0x36, 0x11,
+ 0x15, 0x34, 0x13, 0x15, 0x34, 0x12, 0x15, 0x36, 0x0f, 0x15, 0x37, 0x0e,
+ 0x14, 0x37, 0x10, 0x14, 0x36, 0x11, 0x14, 0x36, 0x11, 0x15, 0x35, 0x11,
+ 0x17, 0x35, 0x12, 0x14, 0x2c, 0x0f, 0x0a, 0x16, 0x08, 0x09, 0x10, 0x08,
+ 0x09, 0x0c, 0x08, 0x0a, 0x0c, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x0a,
+ 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09,
+ 0x09, 0x0a, 0x09, 0x09, 0x0a, 0x09, 0x09, 0x09, 0x09, 0x0a, 0x0a, 0x0a,
+ 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, 0x08, 0x06, 0x0c, 0x0e, 0x0c,
+ 0x09, 0x0b, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x06, 0x07, 0x07, 0x07,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x04, 0x05, 0x03, 0x09, 0x09, 0x07,
+ 0x0a, 0x0b, 0x07, 0x06, 0x0f, 0x05, 0x0a, 0x22, 0x09, 0x0e, 0x2f, 0x0e,
+ 0x0e, 0x30, 0x0d, 0x0e, 0x31, 0x0d, 0x10, 0x34, 0x0e, 0x10, 0x33, 0x0e,
+ 0x10, 0x33, 0x0e, 0x10, 0x33, 0x0e, 0x11, 0x33, 0x0e, 0x11, 0x33, 0x0e,
+ 0x11, 0x33, 0x0e, 0x11, 0x33, 0x0e, 0x11, 0x33, 0x0f, 0x11, 0x33, 0x10,
+ 0x11, 0x33, 0x0f, 0x11, 0x32, 0x0f, 0x11, 0x32, 0x0f, 0x11, 0x34, 0x10,
+ 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10,
+ 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10,
+ 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10,
+ 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x11, 0x33, 0x10, 0x10, 0x33, 0x10,
+ 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10,
+ 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10,
+ 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10,
+ 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x10, 0x33, 0x10, 0x11, 0x33, 0x0e,
+ 0x11, 0x33, 0x10, 0x11, 0x31, 0x10, 0x11, 0x31, 0x10, 0x11, 0x33, 0x0e,
+ 0x11, 0x33, 0x0d, 0x10, 0x33, 0x0f, 0x10, 0x32, 0x10, 0x0f, 0x32, 0x0e,
+ 0x11, 0x32, 0x0e, 0x13, 0x33, 0x10, 0x11, 0x29, 0x0d, 0x06, 0x15, 0x06,
+ 0x05, 0x0f, 0x07, 0x05, 0x0b, 0x05, 0x08, 0x0b, 0x08, 0x07, 0x09, 0x08,
+ 0x08, 0x09, 0x09, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08,
+ 0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x08, 0x09, 0x08, 0x08, 0x08, 0x08,
+ 0x09, 0x09, 0x09, 0x07, 0x07, 0x07, 0x06, 0x06, 0x05, 0x05, 0x05, 0x04,
+ 0x0a, 0x0a, 0x09, 0x07, 0x07, 0x06, 0x06, 0x06, 0x05, 0x05, 0x04, 0x04,
+ 0x05, 0x05, 0x05, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x04, 0x02,
+ 0x07, 0x07, 0x05, 0x07, 0x08, 0x04, 0x04, 0x0c, 0x03, 0x08, 0x1e, 0x08,
+ 0x09, 0x2b, 0x0b, 0x09, 0x2c, 0x0a, 0x09, 0x2d, 0x0a, 0x0c, 0x30, 0x0c,
+ 0x0c, 0x30, 0x0c, 0x0c, 0x30, 0x0c, 0x0c, 0x30, 0x0c, 0x0d, 0x30, 0x0c,
+ 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0d,
+ 0x0d, 0x31, 0x0e, 0x0d, 0x31, 0x0d, 0x0d, 0x2f, 0x0d, 0x0d, 0x2f, 0x0d,
+ 0x0d, 0x31, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+ 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+ 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+ 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e, 0x0d, 0x30, 0x0e,
+ 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+ 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+ 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+ 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e, 0x0c, 0x30, 0x0e,
+ 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0e, 0x0d, 0x2e, 0x0e, 0x0d, 0x2e, 0x0e,
+ 0x0d, 0x30, 0x0c, 0x0d, 0x30, 0x0c, 0x0c, 0x30, 0x0e, 0x0c, 0x2f, 0x0e,
+ 0x0b, 0x2f, 0x0c, 0x0d, 0x2f, 0x0c, 0x10, 0x30, 0x0e, 0x0e, 0x27, 0x0b,
+ 0x04, 0x14, 0x03, 0x02, 0x0d, 0x05, 0x02, 0x0a, 0x04, 0x06, 0x0a, 0x07,
+ 0x06, 0x09, 0x07, 0x07, 0x07, 0x08, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03,
+ 0x03, 0x03, 0x02, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x03, 0x04, 0x02, 0x06, 0x06, 0x04, 0x05, 0x07, 0x02, 0x02, 0x0c, 0x01,
+ 0x06, 0x1e, 0x06, 0x06, 0x28, 0x09, 0x06, 0x29, 0x08, 0x07, 0x2b, 0x09,
+ 0x0a, 0x2e, 0x0b, 0x0b, 0x2e, 0x0b, 0x0a, 0x2e, 0x0b, 0x0b, 0x2e, 0x0b,
+ 0x0c, 0x2e, 0x0b, 0x0c, 0x2e, 0x0b, 0x0c, 0x2e, 0x0b, 0x0c, 0x2e, 0x0b,
+ 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0d, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+ 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+ 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+ 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+ 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c, 0x0c, 0x2e, 0x0c,
+ 0x0c, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+ 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+ 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+ 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c, 0x0b, 0x2e, 0x0c,
+ 0x0b, 0x2e, 0x0c, 0x0c, 0x2f, 0x0b, 0x0c, 0x2e, 0x0c, 0x0c, 0x2c, 0x0d,
+ 0x0c, 0x2c, 0x0d, 0x0b, 0x2e, 0x0b, 0x0c, 0x2e, 0x0a, 0x0a, 0x2e, 0x0c,
+ 0x0a, 0x2e, 0x0d, 0x09, 0x2d, 0x0b, 0x0b, 0x2d, 0x0b, 0x0e, 0x2d, 0x0d,
+ 0x0d, 0x25, 0x0b, 0x03, 0x13, 0x03, 0x01, 0x0d, 0x06, 0x01, 0x0a, 0x03,
+ 0x05, 0x0a, 0x07, 0x05, 0x08, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
+ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x04, 0x04, 0x04,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x03, 0x02, 0x03,
+ 0x02, 0x02, 0x03, 0x01, 0x01, 0x02, 0x03, 0x02, 0x03, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x00, 0x04, 0x04, 0x03, 0x04, 0x06, 0x03, 0x02, 0x06, 0x01,
+ 0x01, 0x0d, 0x01, 0x04, 0x1e, 0x06, 0x03, 0x26, 0x06, 0x03, 0x27, 0x06,
+ 0x04, 0x29, 0x07, 0x08, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x08, 0x2c, 0x0a,
+ 0x09, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+ 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0b, 0x0a, 0x2c, 0x0b,
+ 0x0a, 0x2c, 0x0b, 0x0a, 0x2c, 0x0b, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+ 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+ 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+ 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+ 0x0a, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+ 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+ 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+ 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a,
+ 0x09, 0x2c, 0x0a, 0x09, 0x2c, 0x0a, 0x0a, 0x2d, 0x09, 0x0a, 0x2c, 0x0a,
+ 0x0a, 0x2a, 0x0d, 0x0a, 0x2a, 0x0d, 0x09, 0x2c, 0x0a, 0x0a, 0x2c, 0x0a,
+ 0x08, 0x2c, 0x0a, 0x08, 0x2c, 0x0b, 0x08, 0x2b, 0x0a, 0x09, 0x2b, 0x0a,
+ 0x0c, 0x2b, 0x0c, 0x0b, 0x24, 0x0c, 0x02, 0x12, 0x04, 0x01, 0x0d, 0x06,
+ 0x01, 0x09, 0x03, 0x05, 0x09, 0x06, 0x05, 0x07, 0x07, 0x07, 0x06, 0x07,
+ 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x06, 0x06,
+ 0x07, 0x06, 0x06, 0x07, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x06,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x03, 0x03, 0x06, 0x03,
+ 0x01, 0x05, 0x01, 0x01, 0x0d, 0x02, 0x04, 0x1d, 0x06, 0x01, 0x23, 0x05,
+ 0x01, 0x24, 0x05, 0x02, 0x26, 0x06, 0x06, 0x29, 0x09, 0x08, 0x2a, 0x09,
+ 0x07, 0x29, 0x09, 0x08, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+ 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x0a,
+ 0x09, 0x29, 0x0a, 0x09, 0x2a, 0x0a, 0x09, 0x2a, 0x0a, 0x09, 0x29, 0x09,
+ 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+ 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+ 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09,
+ 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x09, 0x29, 0x09, 0x07, 0x29, 0x09,
+ 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09,
+ 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09,
+ 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09,
+ 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x07, 0x29, 0x09, 0x09, 0x2a, 0x08,
+ 0x09, 0x29, 0x09, 0x09, 0x28, 0x0b, 0x09, 0x28, 0x0c, 0x07, 0x29, 0x0a,
+ 0x07, 0x29, 0x09, 0x05, 0x29, 0x09, 0x05, 0x2a, 0x0a, 0x07, 0x29, 0x09,
+ 0x07, 0x28, 0x09, 0x0b, 0x29, 0x0b, 0x0b, 0x22, 0x0b, 0x02, 0x11, 0x04,
+ 0x01, 0x0c, 0x07, 0x02, 0x09, 0x04, 0x05, 0x08, 0x07, 0x04, 0x06, 0x07,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07,
+ 0x06, 0x06, 0x06, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x02, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x05,
+ 0x03, 0x06, 0x03, 0x01, 0x06, 0x01, 0x02, 0x0e, 0x03, 0x04, 0x1c, 0x08,
+ 0x01, 0x21, 0x04, 0x00, 0x23, 0x04, 0x01, 0x25, 0x06, 0x05, 0x28, 0x08,
+ 0x07, 0x29, 0x0a, 0x08, 0x28, 0x09, 0x09, 0x28, 0x09, 0x08, 0x28, 0x09,
+ 0x08, 0x28, 0x09, 0x08, 0x28, 0x09, 0x08, 0x28, 0x09, 0x08, 0x28, 0x09,
+ 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x0a, 0x27, 0x0a, 0x0a, 0x27, 0x0a,
+ 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+ 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+ 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+ 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a, 0x08, 0x28, 0x0a,
+ 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a,
+ 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a,
+ 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a,
+ 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x0a, 0x06, 0x28, 0x09,
+ 0x08, 0x28, 0x08, 0x08, 0x28, 0x09, 0x08, 0x27, 0x0a, 0x08, 0x27, 0x0b,
+ 0x06, 0x28, 0x09, 0x06, 0x28, 0x09, 0x04, 0x28, 0x0a, 0x04, 0x29, 0x0a,
+ 0x06, 0x28, 0x0a, 0x07, 0x27, 0x09, 0x0c, 0x28, 0x0b, 0x0c, 0x22, 0x0b,
+ 0x03, 0x11, 0x03, 0x02, 0x0b, 0x07, 0x03, 0x08, 0x06, 0x07, 0x08, 0x08,
+ 0x04, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07,
+ 0x05, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07, 0x05, 0x07, 0x07,
+ 0x05, 0x07, 0x07, 0x05, 0x06, 0x06, 0x03, 0x05, 0x05, 0x03, 0x05, 0x05,
+ 0x02, 0x04, 0x04, 0x00, 0x02, 0x02, 0x01, 0x03, 0x03, 0x00, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x03, 0x07, 0x05, 0x03, 0x07, 0x04, 0x01, 0x07, 0x01, 0x03, 0x0f, 0x04,
+ 0x05, 0x1c, 0x09, 0x01, 0x1f, 0x04, 0x00, 0x22, 0x03, 0x01, 0x23, 0x06,
+ 0x04, 0x26, 0x07, 0x06, 0x28, 0x09, 0x08, 0x26, 0x09, 0x09, 0x27, 0x09,
+ 0x07, 0x27, 0x09, 0x07, 0x27, 0x09, 0x07, 0x27, 0x09, 0x07, 0x27, 0x09,
+ 0x07, 0x27, 0x09, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x0a, 0x25, 0x0a,
+ 0x0a, 0x25, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+ 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+ 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+ 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a, 0x07, 0x27, 0x0a,
+ 0x07, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+ 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+ 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+ 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a, 0x05, 0x27, 0x0a,
+ 0x05, 0x27, 0x09, 0x07, 0x26, 0x08, 0x07, 0x27, 0x09, 0x07, 0x25, 0x09,
+ 0x07, 0x25, 0x0a, 0x05, 0x27, 0x09, 0x05, 0x27, 0x09, 0x03, 0x27, 0x0a,
+ 0x04, 0x27, 0x09, 0x06, 0x27, 0x0a, 0x07, 0x26, 0x09, 0x0c, 0x27, 0x0b,
+ 0x0d, 0x22, 0x0b, 0x03, 0x10, 0x03, 0x03, 0x0b, 0x07, 0x04, 0x08, 0x06,
+ 0x08, 0x08, 0x09, 0x04, 0x07, 0x07, 0x03, 0x07, 0x07, 0x03, 0x07, 0x07,
+ 0x03, 0x07, 0x07, 0x03, 0x07, 0x07, 0x03, 0x07, 0x07, 0x03, 0x07, 0x07,
+ 0x03, 0x07, 0x07, 0x03, 0x07, 0x07, 0x04, 0x07, 0x07, 0x02, 0x06, 0x06,
+ 0x03, 0x06, 0x06, 0x03, 0x05, 0x05, 0x01, 0x02, 0x02, 0x01, 0x03, 0x03,
+ 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x03, 0x07, 0x05, 0x02, 0x05, 0x03, 0x01, 0x05, 0x01,
+ 0x03, 0x0e, 0x03, 0x07, 0x1c, 0x09, 0x01, 0x1f, 0x04, 0x00, 0x21, 0x02,
+ 0x01, 0x22, 0x05, 0x04, 0x25, 0x06, 0x07, 0x27, 0x09, 0x08, 0x25, 0x08,
+ 0x09, 0x26, 0x08, 0x08, 0x26, 0x08, 0x08, 0x26, 0x08, 0x08, 0x26, 0x08,
+ 0x08, 0x26, 0x08, 0x08, 0x26, 0x09, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a,
+ 0x0a, 0x24, 0x0a, 0x0a, 0x24, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a,
+ 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a,
+ 0x08, 0x26, 0x0a, 0x08, 0x26, 0x0a, 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a,
+ 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a,
+ 0x08, 0x25, 0x0a, 0x08, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+ 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+ 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+ 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a, 0x06, 0x25, 0x0a,
+ 0x06, 0x25, 0x0a, 0x06, 0x25, 0x08, 0x08, 0x25, 0x07, 0x08, 0x25, 0x08,
+ 0x08, 0x24, 0x09, 0x08, 0x24, 0x0a, 0x06, 0x25, 0x08, 0x05, 0x25, 0x08,
+ 0x03, 0x25, 0x0a, 0x04, 0x25, 0x09, 0x06, 0x26, 0x09, 0x07, 0x25, 0x08,
+ 0x0c, 0x26, 0x0b, 0x0d, 0x20, 0x0b, 0x03, 0x0f, 0x03, 0x03, 0x0a, 0x07,
+ 0x05, 0x06, 0x06, 0x08, 0x07, 0x08, 0x04, 0x06, 0x06, 0x02, 0x06, 0x06,
+ 0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x02, 0x06, 0x06,
+ 0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x02, 0x06, 0x06, 0x03, 0x07, 0x07,
+ 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x01, 0x02, 0x02,
+ 0x02, 0x04, 0x04, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x04, 0x01, 0x04, 0x02,
+ 0x00, 0x04, 0x00, 0x02, 0x0e, 0x03, 0x07, 0x1c, 0x09, 0x02, 0x1e, 0x03,
+ 0x00, 0x20, 0x02, 0x01, 0x21, 0x04, 0x05, 0x24, 0x06, 0x07, 0x26, 0x09,
+ 0x08, 0x24, 0x07, 0x09, 0x25, 0x07, 0x08, 0x25, 0x07, 0x08, 0x25, 0x07,
+ 0x08, 0x25, 0x07, 0x08, 0x25, 0x07, 0x08, 0x25, 0x08, 0x08, 0x25, 0x09,
+ 0x08, 0x25, 0x09, 0x09, 0x24, 0x09, 0x09, 0x24, 0x09, 0x08, 0x25, 0x09,
+ 0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x25, 0x09,
+ 0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x25, 0x09, 0x08, 0x24, 0x09,
+ 0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x08, 0x24, 0x09,
+ 0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x08, 0x24, 0x09, 0x06, 0x24, 0x09,
+ 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09,
+ 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09,
+ 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x09,
+ 0x06, 0x24, 0x09, 0x06, 0x24, 0x09, 0x06, 0x24, 0x07, 0x08, 0x25, 0x06,
+ 0x08, 0x24, 0x07, 0x08, 0x24, 0x0a, 0x08, 0x23, 0x0a, 0x06, 0x24, 0x07,
+ 0x06, 0x24, 0x07, 0x03, 0x24, 0x09, 0x04, 0x24, 0x0a, 0x07, 0x25, 0x09,
+ 0x08, 0x24, 0x08, 0x0c, 0x26, 0x0a, 0x0d, 0x1f, 0x0a, 0x03, 0x0f, 0x03,
+ 0x04, 0x0a, 0x07, 0x06, 0x06, 0x05, 0x08, 0x07, 0x07, 0x04, 0x05, 0x05,
+ 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05,
+ 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05, 0x02, 0x05, 0x05,
+ 0x03, 0x06, 0x06, 0x01, 0x04, 0x04, 0x01, 0x04, 0x04, 0x01, 0x04, 0x04,
+ 0x01, 0x02, 0x02, 0x02, 0x05, 0x05, 0x01, 0x04, 0x04, 0x00, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x06, 0x03,
+ 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x02, 0x0d, 0x02, 0x08, 0x1c, 0x08,
+ 0x02, 0x1d, 0x02, 0x00, 0x1f, 0x01, 0x02, 0x20, 0x03, 0x06, 0x23, 0x05,
+ 0x08, 0x24, 0x08, 0x08, 0x23, 0x06, 0x09, 0x23, 0x06, 0x09, 0x23, 0x06,
+ 0x09, 0x23, 0x06, 0x09, 0x23, 0x06, 0x09, 0x23, 0x06, 0x09, 0x23, 0x07,
+ 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09,
+ 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09,
+ 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09, 0x09, 0x23, 0x09,
+ 0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09,
+ 0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09, 0x09, 0x22, 0x09,
+ 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09,
+ 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09,
+ 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09,
+ 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x09, 0x07, 0x22, 0x06,
+ 0x09, 0x23, 0x05, 0x09, 0x22, 0x06, 0x09, 0x23, 0x09, 0x09, 0x22, 0x09,
+ 0x07, 0x23, 0x07, 0x06, 0x22, 0x06, 0x04, 0x22, 0x09, 0x04, 0x22, 0x0a,
+ 0x07, 0x23, 0x09, 0x08, 0x22, 0x07, 0x0c, 0x24, 0x0a, 0x0d, 0x1e, 0x0a,
+ 0x03, 0x0e, 0x03, 0x04, 0x09, 0x07, 0x07, 0x05, 0x04, 0x08, 0x06, 0x06,
+ 0x04, 0x04, 0x04, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
+ 0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
+ 0x01, 0x03, 0x03, 0x02, 0x05, 0x05, 0x01, 0x03, 0x03, 0x00, 0x02, 0x02,
+ 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05, 0x02, 0x04, 0x04,
+ 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x02, 0x04, 0x02, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x02, 0x0d, 0x02,
+ 0x07, 0x1b, 0x08, 0x02, 0x1c, 0x02, 0x01, 0x1d, 0x01, 0x02, 0x1e, 0x03,
+ 0x06, 0x21, 0x05, 0x08, 0x21, 0x07, 0x07, 0x21, 0x06, 0x09, 0x21, 0x07,
+ 0x09, 0x21, 0x07, 0x09, 0x21, 0x07, 0x09, 0x21, 0x07, 0x09, 0x21, 0x07,
+ 0x09, 0x21, 0x08, 0x09, 0x21, 0x09, 0x09, 0x21, 0x09, 0x09, 0x21, 0x09,
+ 0x09, 0x21, 0x09, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+ 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+ 0x07, 0x21, 0x08, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09,
+ 0x08, 0x21, 0x09, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09, 0x08, 0x21, 0x09,
+ 0x08, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+ 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+ 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+ 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09, 0x07, 0x21, 0x09,
+ 0x07, 0x21, 0x07, 0x09, 0x22, 0x06, 0x09, 0x21, 0x07, 0x09, 0x21, 0x09,
+ 0x09, 0x20, 0x09, 0x07, 0x22, 0x06, 0x07, 0x21, 0x06, 0x04, 0x21, 0x08,
+ 0x04, 0x21, 0x08, 0x07, 0x22, 0x08, 0x08, 0x21, 0x07, 0x0b, 0x22, 0x0a,
+ 0x0c, 0x1c, 0x09, 0x03, 0x0f, 0x03, 0x03, 0x09, 0x05, 0x06, 0x05, 0x03,
+ 0x08, 0x06, 0x06, 0x04, 0x04, 0x04, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03,
+ 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x03,
+ 0x02, 0x03, 0x03, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x02, 0x03, 0x03,
+ 0x00, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x04, 0x06, 0x06,
+ 0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00,
+ 0x02, 0x0c, 0x02, 0x07, 0x1a, 0x08, 0x03, 0x1b, 0x03, 0x02, 0x1b, 0x01,
+ 0x03, 0x1c, 0x04, 0x06, 0x1f, 0x06, 0x07, 0x1f, 0x06, 0x07, 0x1f, 0x06,
+ 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08,
+ 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08,
+ 0x08, 0x1f, 0x08, 0x08, 0x1f, 0x08, 0x05, 0x1f, 0x06, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x06, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+ 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x07, 0x21, 0x08,
+ 0x07, 0x21, 0x08, 0x07, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+ 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+ 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+ 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x06, 0x21, 0x08,
+ 0x06, 0x21, 0x08, 0x06, 0x21, 0x08, 0x08, 0x20, 0x07, 0x08, 0x1f, 0x08,
+ 0x08, 0x1f, 0x09, 0x08, 0x1f, 0x08, 0x08, 0x21, 0x06, 0x08, 0x21, 0x06,
+ 0x05, 0x20, 0x07, 0x05, 0x20, 0x06, 0x07, 0x20, 0x06, 0x07, 0x1f, 0x06,
+ 0x0a, 0x20, 0x0b, 0x0a, 0x1b, 0x0a, 0x03, 0x10, 0x04, 0x02, 0x09, 0x03,
+ 0x04, 0x07, 0x04, 0x07, 0x06, 0x06, 0x04, 0x04, 0x04, 0x03, 0x04, 0x04,
+ 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04,
+ 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x03, 0x04, 0x04, 0x01, 0x02, 0x02, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x0b, 0x02, 0x06, 0x19, 0x07, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x01, 0x04, 0x1b, 0x04, 0x07, 0x1d, 0x06, 0x07, 0x1d, 0x05,
+ 0x06, 0x1d, 0x05, 0x08, 0x1e, 0x07, 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07,
+ 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07,
+ 0x07, 0x1d, 0x07, 0x07, 0x1d, 0x07, 0x06, 0x1d, 0x07, 0x03, 0x1d, 0x05,
+ 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05,
+ 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x02, 0x1d, 0x05, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07,
+ 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x05, 0x1f, 0x07, 0x07, 0x1d, 0x07,
+ 0x07, 0x1d, 0x07, 0x08, 0x1d, 0x07, 0x08, 0x1d, 0x07, 0x07, 0x1f, 0x05,
+ 0x07, 0x1f, 0x06, 0x05, 0x1f, 0x05, 0x05, 0x1f, 0x04, 0x05, 0x1f, 0x05,
+ 0x06, 0x1e, 0x06, 0x09, 0x1e, 0x0b, 0x09, 0x19, 0x09, 0x04, 0x10, 0x03,
+ 0x01, 0x0a, 0x01, 0x02, 0x07, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x03, 0x03, 0x04, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x04, 0x04, 0x04, 0x06, 0x05, 0x05, 0x03, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0c, 0x01, 0x06, 0x19, 0x06,
+ 0x01, 0x1a, 0x02, 0x01, 0x1a, 0x02, 0x03, 0x1c, 0x03, 0x06, 0x1d, 0x05,
+ 0x06, 0x1d, 0x05, 0x06, 0x1d, 0x05, 0x07, 0x1d, 0x06, 0x05, 0x1c, 0x05,
+ 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05,
+ 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05,
+ 0x02, 0x1c, 0x03, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04,
+ 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x04, 0x01, 0x1c, 0x03,
+ 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+ 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+ 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+ 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+ 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+ 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05, 0x03, 0x1e, 0x05,
+ 0x05, 0x1c, 0x06, 0x05, 0x1c, 0x06, 0x07, 0x1c, 0x06, 0x07, 0x1c, 0x06,
+ 0x05, 0x1d, 0x04, 0x05, 0x1d, 0x05, 0x03, 0x1e, 0x04, 0x03, 0x1e, 0x03,
+ 0x04, 0x1f, 0x05, 0x06, 0x1d, 0x06, 0x09, 0x1d, 0x0a, 0x09, 0x18, 0x09,
+ 0x03, 0x0f, 0x02, 0x00, 0x09, 0x01, 0x02, 0x06, 0x03, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x07, 0x07, 0x07,
+ 0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0c, 0x01,
+ 0x05, 0x19, 0x04, 0x01, 0x1a, 0x02, 0x00, 0x1a, 0x02, 0x03, 0x1c, 0x02,
+ 0x06, 0x1d, 0x05, 0x06, 0x1d, 0x05, 0x06, 0x1d, 0x05, 0x06, 0x1d, 0x04,
+ 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03,
+ 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x03,
+ 0x03, 0x1b, 0x03, 0x01, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+ 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+ 0x00, 0x1b, 0x02, 0x01, 0x1d, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1d, 0x03, 0x03, 0x1b, 0x04, 0x03, 0x1b, 0x04, 0x06, 0x1b, 0x04,
+ 0x06, 0x1b, 0x04, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x04, 0x01, 0x1e, 0x02,
+ 0x01, 0x1e, 0x02, 0x02, 0x1e, 0x05, 0x06, 0x1d, 0x06, 0x09, 0x1c, 0x09,
+ 0x09, 0x18, 0x09, 0x02, 0x0f, 0x02, 0x00, 0x08, 0x01, 0x02, 0x06, 0x03,
+ 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x07, 0x07, 0x07,
+ 0x0a, 0x0a, 0x0a, 0x09, 0x09, 0x09, 0x04, 0x04, 0x04, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+ 0x01, 0x0b, 0x01, 0x05, 0x18, 0x05, 0x01, 0x19, 0x02, 0x00, 0x19, 0x01,
+ 0x02, 0x1b, 0x02, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x05, 0x05, 0x1c, 0x04,
+ 0x05, 0x1c, 0x04, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03,
+ 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03,
+ 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+ 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02,
+ 0x00, 0x1b, 0x02, 0x00, 0x1b, 0x02, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03,
+ 0x01, 0x1c, 0x03, 0x01, 0x1c, 0x03, 0x03, 0x1a, 0x04, 0x03, 0x1b, 0x04,
+ 0x05, 0x1b, 0x04, 0x05, 0x1b, 0x04, 0x03, 0x1b, 0x03, 0x03, 0x1b, 0x04,
+ 0x01, 0x1d, 0x02, 0x01, 0x1d, 0x02, 0x02, 0x1d, 0x05, 0x04, 0x1c, 0x06,
+ 0x09, 0x1c, 0x09, 0x09, 0x17, 0x09, 0x02, 0x0f, 0x02, 0x00, 0x08, 0x00,
+ 0x02, 0x05, 0x02, 0x05, 0x04, 0x04, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x08, 0x08, 0x08, 0x0b, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x0b, 0x01, 0x06, 0x17, 0x05, 0x01, 0x19, 0x02,
+ 0x00, 0x19, 0x01, 0x02, 0x1b, 0x01, 0x05, 0x1c, 0x04, 0x05, 0x1c, 0x04,
+ 0x04, 0x1b, 0x03, 0x04, 0x1c, 0x04, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x03, 0x1a, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1c, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1c, 0x02, 0x03, 0x1a, 0x05,
+ 0x02, 0x1a, 0x05, 0x04, 0x1a, 0x05, 0x04, 0x1a, 0x05, 0x02, 0x1a, 0x03,
+ 0x03, 0x1a, 0x03, 0x02, 0x1c, 0x01, 0x02, 0x1c, 0x01, 0x03, 0x1d, 0x04,
+ 0x04, 0x1c, 0x05, 0x09, 0x1c, 0x08, 0x09, 0x17, 0x08, 0x02, 0x0e, 0x02,
+ 0x00, 0x07, 0x00, 0x01, 0x05, 0x02, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x09, 0x09, 0x09, 0x0c, 0x0c, 0x0c, 0x0b, 0x0b, 0x0b,
+ 0x07, 0x07, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0b, 0x01, 0x06, 0x17, 0x06,
+ 0x01, 0x18, 0x02, 0x00, 0x17, 0x00, 0x01, 0x1a, 0x01, 0x04, 0x1b, 0x04,
+ 0x04, 0x1b, 0x04, 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x02, 0x19, 0x02,
+ 0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02,
+ 0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02, 0x02, 0x19, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02, 0x01, 0x1b, 0x02,
+ 0x03, 0x19, 0x05, 0x02, 0x1a, 0x05, 0x02, 0x1a, 0x05, 0x02, 0x1a, 0x05,
+ 0x02, 0x1a, 0x03, 0x03, 0x19, 0x03, 0x02, 0x1b, 0x01, 0x02, 0x1a, 0x01,
+ 0x03, 0x1b, 0x04, 0x03, 0x1a, 0x05, 0x09, 0x1b, 0x08, 0x09, 0x16, 0x08,
+ 0x02, 0x0e, 0x02, 0x00, 0x07, 0x00, 0x01, 0x04, 0x01, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x06, 0x06, 0x06, 0x03, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x09, 0x09, 0x09, 0x0d, 0x0d, 0x0d,
+ 0x0c, 0x0c, 0x0c, 0x08, 0x08, 0x08, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0b, 0x01,
+ 0x06, 0x16, 0x05, 0x01, 0x17, 0x02, 0x00, 0x16, 0x00, 0x01, 0x19, 0x01,
+ 0x03, 0x1a, 0x03, 0x03, 0x1a, 0x03, 0x02, 0x19, 0x02, 0x03, 0x1a, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03,
+ 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x03,
+ 0x02, 0x1a, 0x03, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02, 0x02, 0x1a, 0x02,
+ 0x02, 0x1a, 0x02, 0x03, 0x19, 0x04, 0x02, 0x19, 0x04, 0x02, 0x19, 0x04,
+ 0x02, 0x19, 0x04, 0x02, 0x19, 0x02, 0x03, 0x19, 0x03, 0x01, 0x1a, 0x02,
+ 0x01, 0x1a, 0x02, 0x02, 0x1a, 0x04, 0x03, 0x19, 0x04, 0x07, 0x1b, 0x08,
+ 0x08, 0x16, 0x08, 0x02, 0x0e, 0x01, 0x00, 0x07, 0x00, 0x01, 0x04, 0x01,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05, 0x05,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x08, 0x08, 0x08,
+ 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x07, 0x07, 0x07, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+ 0x01, 0x0a, 0x01, 0x06, 0x16, 0x04, 0x01, 0x17, 0x01, 0x00, 0x16, 0x00,
+ 0x02, 0x18, 0x01, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x18, 0x02,
+ 0x03, 0x18, 0x03, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04,
+ 0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x04, 0x19, 0x04,
+ 0x04, 0x19, 0x04, 0x04, 0x19, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04,
+ 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04,
+ 0x03, 0x1a, 0x04, 0x03, 0x1a, 0x04, 0x03, 0x18, 0x02, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x18, 0x03, 0x03, 0x19, 0x03,
+ 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x19, 0x03, 0x03, 0x18, 0x03,
+ 0x01, 0x1a, 0x03, 0x01, 0x19, 0x03, 0x01, 0x1a, 0x03, 0x03, 0x19, 0x04,
+ 0x06, 0x19, 0x07, 0x07, 0x15, 0x07, 0x02, 0x0d, 0x01, 0x00, 0x08, 0x00,
+ 0x00, 0x04, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x07, 0x07, 0x07, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x07, 0x07, 0x07,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x0a, 0x01, 0x06, 0x14, 0x04, 0x01, 0x15, 0x01,
+ 0x00, 0x15, 0x00, 0x02, 0x17, 0x02, 0x03, 0x17, 0x03, 0x02, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x02, 0x16, 0x03, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+ 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+ 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+ 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05,
+ 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x04, 0x18, 0x05, 0x03, 0x16, 0x03,
+ 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x03, 0x17, 0x03, 0x02, 0x17, 0x02,
+ 0x02, 0x17, 0x02, 0x03, 0x17, 0x02, 0x03, 0x17, 0x02, 0x03, 0x17, 0x03,
+ 0x03, 0x17, 0x03, 0x01, 0x18, 0x03, 0x01, 0x18, 0x03, 0x01, 0x18, 0x02,
+ 0x03, 0x17, 0x03, 0x05, 0x18, 0x07, 0x06, 0x15, 0x07, 0x02, 0x0d, 0x01,
+ 0x00, 0x08, 0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x03, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x05, 0x05, 0x05, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09,
+ 0x06, 0x06, 0x06, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x01, 0x04, 0x13, 0x05,
+ 0x01, 0x14, 0x01, 0x00, 0x14, 0x00, 0x02, 0x16, 0x02, 0x03, 0x16, 0x03,
+ 0x03, 0x16, 0x03, 0x03, 0x16, 0x03, 0x03, 0x15, 0x03, 0x03, 0x16, 0x04,
+ 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+ 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+ 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+ 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04, 0x03, 0x16, 0x04,
+ 0x02, 0x15, 0x02, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x01, 0x16, 0x01, 0x01, 0x16, 0x01, 0x02, 0x16, 0x03, 0x02, 0x16, 0x03,
+ 0x02, 0x16, 0x03, 0x02, 0x16, 0x03, 0x01, 0x16, 0x02, 0x01, 0x16, 0x02,
+ 0x00, 0x17, 0x01, 0x02, 0x16, 0x02, 0x06, 0x17, 0x06, 0x06, 0x14, 0x07,
+ 0x01, 0x0c, 0x01, 0x00, 0x07, 0x00, 0x00, 0x04, 0x02, 0x02, 0x03, 0x03,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x01,
+ 0x03, 0x11, 0x06, 0x01, 0x12, 0x01, 0x00, 0x12, 0x00, 0x02, 0x14, 0x03,
+ 0x03, 0x14, 0x04, 0x03, 0x14, 0x04, 0x03, 0x14, 0x04, 0x03, 0x14, 0x04,
+ 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+ 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+ 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+ 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04, 0x02, 0x14, 0x04,
+ 0x03, 0x14, 0x04, 0x01, 0x14, 0x02, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+ 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+ 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+ 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+ 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+ 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x00, 0x14, 0x01, 0x00, 0x14, 0x01, 0x02, 0x14, 0x03,
+ 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x01, 0x14, 0x03, 0x02, 0x14, 0x01,
+ 0x02, 0x14, 0x02, 0x00, 0x16, 0x00, 0x02, 0x15, 0x02, 0x05, 0x16, 0x06,
+ 0x06, 0x13, 0x07, 0x01, 0x0c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x03, 0x02,
+ 0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+ 0x01, 0x09, 0x01, 0x03, 0x11, 0x06, 0x01, 0x11, 0x01, 0x00, 0x11, 0x00,
+ 0x02, 0x14, 0x02, 0x03, 0x14, 0x04, 0x03, 0x14, 0x04, 0x02, 0x14, 0x03,
+ 0x03, 0x14, 0x04, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x03, 0x14, 0x03, 0x02, 0x14, 0x02, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x00, 0x14, 0x02, 0x00, 0x14, 0x02,
+ 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03, 0x02, 0x14, 0x03,
+ 0x02, 0x14, 0x01, 0x02, 0x14, 0x02, 0x00, 0x15, 0x01, 0x01, 0x14, 0x02,
+ 0x05, 0x15, 0x06, 0x06, 0x12, 0x07, 0x01, 0x0b, 0x01, 0x00, 0x06, 0x00,
+ 0x00, 0x03, 0x02, 0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x09, 0x01, 0x03, 0x11, 0x06, 0x01, 0x11, 0x01,
+ 0x00, 0x11, 0x00, 0x02, 0x13, 0x02, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x02, 0x13, 0x02, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x00, 0x13, 0x03,
+ 0x00, 0x13, 0x03, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+ 0x03, 0x13, 0x03, 0x03, 0x14, 0x02, 0x03, 0x14, 0x02, 0x01, 0x15, 0x02,
+ 0x02, 0x14, 0x02, 0x04, 0x14, 0x04, 0x06, 0x12, 0x06, 0x01, 0x0c, 0x01,
+ 0x00, 0x06, 0x00, 0x01, 0x04, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+ 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x02, 0x03, 0x10, 0x06,
+ 0x01, 0x10, 0x01, 0x00, 0x10, 0x00, 0x02, 0x12, 0x01, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x01, 0x12, 0x02, 0x02, 0x12, 0x03, 0x03, 0x13, 0x02,
+ 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+ 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+ 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+ 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03, 0x03, 0x13, 0x03,
+ 0x00, 0x13, 0x03, 0x00, 0x13, 0x03, 0x03, 0x12, 0x03, 0x03, 0x12, 0x03,
+ 0x04, 0x12, 0x03, 0x04, 0x12, 0x03, 0x03, 0x13, 0x02, 0x03, 0x13, 0x02,
+ 0x01, 0x13, 0x02, 0x02, 0x12, 0x01, 0x03, 0x13, 0x03, 0x05, 0x11, 0x05,
+ 0x01, 0x0c, 0x01, 0x00, 0x05, 0x00, 0x01, 0x04, 0x02, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x02,
+ 0x03, 0x10, 0x04, 0x01, 0x0f, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x11, 0x02,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x00, 0x11, 0x02, 0x01, 0x11, 0x02,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03, 0x02, 0x12, 0x03,
+ 0x02, 0x12, 0x03, 0x01, 0x12, 0x03, 0x01, 0x12, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x03, 0x11, 0x03, 0x03, 0x11, 0x03, 0x02, 0x12, 0x01,
+ 0x02, 0x12, 0x01, 0x00, 0x12, 0x01, 0x01, 0x11, 0x01, 0x03, 0x12, 0x04,
+ 0x04, 0x10, 0x05, 0x01, 0x0b, 0x01, 0x00, 0x04, 0x00, 0x00, 0x03, 0x01,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
+ 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00,
+ 0x01, 0x0a, 0x02, 0x03, 0x0f, 0x03, 0x01, 0x0e, 0x01, 0x00, 0x0e, 0x00,
+ 0x01, 0x0f, 0x02, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x00, 0x0f, 0x02,
+ 0x00, 0x0f, 0x01, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x02, 0x11, 0x03,
+ 0x02, 0x11, 0x03, 0x02, 0x11, 0x03, 0x01, 0x11, 0x03, 0x01, 0x11, 0x03,
+ 0x02, 0x0f, 0x04, 0x02, 0x0f, 0x04, 0x02, 0x0f, 0x04, 0x02, 0x0f, 0x03,
+ 0x02, 0x11, 0x01, 0x02, 0x11, 0x00, 0x00, 0x10, 0x00, 0x00, 0x11, 0x01,
+ 0x03, 0x12, 0x03, 0x03, 0x10, 0x03, 0x01, 0x0a, 0x01, 0x00, 0x03, 0x00,
+ 0x00, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x03, 0x00, 0x01, 0x0a, 0x02, 0x03, 0x0e, 0x03, 0x01, 0x0e, 0x01,
+ 0x00, 0x0d, 0x00, 0x01, 0x0e, 0x01, 0x02, 0x10, 0x03, 0x01, 0x10, 0x02,
+ 0x00, 0x0e, 0x01, 0x00, 0x0f, 0x01, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02, 0x01, 0x10, 0x02,
+ 0x01, 0x10, 0x02, 0x01, 0x0f, 0x03, 0x01, 0x0f, 0x03, 0x01, 0x0e, 0x03,
+ 0x01, 0x0e, 0x03, 0x01, 0x10, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x00,
+ 0x00, 0x10, 0x00, 0x03, 0x11, 0x03, 0x04, 0x0f, 0x04, 0x01, 0x0a, 0x01,
+ 0x00, 0x03, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01,
+ 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x01, 0x0a, 0x02, 0x02, 0x0e, 0x03,
+ 0x00, 0x0e, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x0e, 0x01, 0x01, 0x10, 0x03,
+ 0x01, 0x10, 0x02, 0x00, 0x0e, 0x01, 0x00, 0x0f, 0x02, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x00, 0x0f, 0x01, 0x00, 0x0f, 0x01, 0x01, 0x0e, 0x02, 0x01, 0x0e, 0x02,
+ 0x01, 0x0e, 0x02, 0x01, 0x0e, 0x02, 0x01, 0x0f, 0x01, 0x01, 0x0f, 0x01,
+ 0x00, 0x10, 0x01, 0x00, 0x0f, 0x00, 0x02, 0x11, 0x02, 0x04, 0x0f, 0x04,
+ 0x01, 0x0a, 0x01, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x01, 0x02, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x02, 0x01, 0x00, 0x02, 0x00, 0x00, 0x03, 0x00, 0x01, 0x09, 0x02,
+ 0x02, 0x0d, 0x03, 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0d, 0x00,
+ 0x01, 0x0f, 0x02, 0x00, 0x0f, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0e, 0x01,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0e, 0x00,
+ 0x00, 0x0e, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x01,
+ 0x00, 0x0d, 0x01, 0x00, 0x0f, 0x01, 0x00, 0x0e, 0x00, 0x02, 0x10, 0x02,
+ 0x04, 0x0f, 0x04, 0x01, 0x0a, 0x01, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00,
+ 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00,
+ 0x01, 0x08, 0x02, 0x01, 0x0c, 0x03, 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0d, 0x01, 0x01, 0x0f, 0x02, 0x00, 0x0e, 0x01, 0x00, 0x0d, 0x01,
+ 0x00, 0x0e, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x01, 0x00, 0x0d, 0x01, 0x00, 0x0e, 0x01, 0x01, 0x0d, 0x01,
+ 0x04, 0x0e, 0x02, 0x04, 0x0d, 0x04, 0x01, 0x08, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x02, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x05, 0x02, 0x01, 0x0c, 0x02, 0x00, 0x0d, 0x02,
+ 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02,
+ 0x00, 0x0d, 0x02, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01,
+ 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x02,
+ 0x00, 0x0c, 0x02, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x01, 0x00, 0x0d, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0d, 0x00, 0x01, 0x0c, 0x01,
+ 0x02, 0x0c, 0x02, 0x05, 0x0d, 0x03, 0x03, 0x0b, 0x04, 0x00, 0x06, 0x01,
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x03, 0x02, 0x01, 0x0b, 0x01,
+ 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0c, 0x02,
+ 0x00, 0x0c, 0x02, 0x00, 0x0d, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01, 0x00, 0x0b, 0x01,
+ 0x00, 0x0b, 0x02, 0x00, 0x0b, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x01,
+ 0x00, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0d, 0x00,
+ 0x01, 0x0b, 0x01, 0x02, 0x0b, 0x03, 0x05, 0x0c, 0x04, 0x02, 0x09, 0x03,
+ 0x00, 0x05, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x04, 0x02,
+ 0x01, 0x0a, 0x01, 0x00, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x01, 0x00, 0x0c, 0x00,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02, 0x01, 0x0c, 0x02, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02, 0x04, 0x0c, 0x03,
+ 0x02, 0x0a, 0x03, 0x00, 0x06, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01,
+ 0x00, 0x04, 0x02, 0x01, 0x0a, 0x01, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02, 0x01, 0x0c, 0x02,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00,
+ 0x00, 0x0d, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x02,
+ 0x03, 0x0c, 0x02, 0x02, 0x0a, 0x03, 0x00, 0x06, 0x01, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x00, 0x01, 0x00, 0x04, 0x02, 0x01, 0x0a, 0x01, 0x00, 0x0c, 0x00,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01,
+ 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x01, 0x0c, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x01, 0x0b, 0x01,
+ 0x01, 0x0b, 0x01, 0x01, 0x0b, 0x01, 0x01, 0x0b, 0x01, 0x00, 0x0c, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0c, 0x01, 0x02, 0x0b, 0x02, 0x01, 0x09, 0x02, 0x00, 0x05, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01, 0x01, 0x09, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0c, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0c, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0b, 0x01, 0x02, 0x0a, 0x03, 0x01, 0x08, 0x02,
+ 0x00, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x01,
+ 0x01, 0x09, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00, 0x00, 0x09, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x09, 0x02,
+ 0x00, 0x07, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x04, 0x02, 0x01, 0x09, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00,
+ 0x00, 0x0b, 0x00, 0x00, 0x0b, 0x00, 0x01, 0x09, 0x00, 0x01, 0x09, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0a, 0x01,
+ 0x01, 0x09, 0x02, 0x00, 0x07, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x02, 0x00, 0x04, 0x02, 0x01, 0x08, 0x01, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x08, 0x01,
+ 0x00, 0x08, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x09, 0x00, 0x00, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x01, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x07, 0x02, 0x00, 0x03, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x01, 0x04, 0x02, 0x01, 0x08, 0x01,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x09, 0x00, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00, 0x01, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0a, 0x00,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x0a, 0x00, 0x01, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x07, 0x02,
+ 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02, 0x02, 0x03, 0x01,
+ 0x00, 0x07, 0x00, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x00, 0x08, 0x00,
+ 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+ 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+ 0x01, 0x0a, 0x01, 0x00, 0x09, 0x00, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x00, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x0a, 0x01,
+ 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01, 0x01, 0x0a, 0x01,
+ 0x01, 0x0a, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x01, 0x09, 0x02,
+ 0x00, 0x07, 0x01, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x01, 0x01, 0x06, 0x00, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x00, 0x08, 0x00, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02,
+ 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02,
+ 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x00, 0x08, 0x00, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x00, 0x09, 0x01, 0x00, 0x08, 0x00, 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02,
+ 0x02, 0x0a, 0x02, 0x02, 0x0a, 0x02, 0x01, 0x0a, 0x02, 0x01, 0x0a, 0x02,
+ 0x01, 0x0a, 0x02, 0x01, 0x0a, 0x02, 0x00, 0x09, 0x01, 0x00, 0x09, 0x01,
+ 0x01, 0x09, 0x02, 0x00, 0x07, 0x01, 0x00, 0x03, 0x01, 0x00, 0x02, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x01, 0x06, 0x00, 0x01, 0x08, 0x01,
+ 0x01, 0x08, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x08, 0x01,
+ 0x01, 0x08, 0x01, 0x01, 0x07, 0x00, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02,
+ 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02,
+ 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x01, 0x08, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x09, 0x01,
+ 0x01, 0x09, 0x01, 0x01, 0x09, 0x01, 0x01, 0x08, 0x01, 0x02, 0x09, 0x02,
+ 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x02, 0x09, 0x02, 0x01, 0x09, 0x02,
+ 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x00, 0x08, 0x01,
+ 0x00, 0x09, 0x01, 0x01, 0x08, 0x02, 0x00, 0x07, 0x01, 0x00, 0x03, 0x01,
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x02, 0x06, 0x01,
+ 0x02, 0x07, 0x01, 0x02, 0x07, 0x00, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x07, 0x00, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x03, 0x09, 0x02,
+ 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02,
+ 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02, 0x02, 0x08, 0x02,
+ 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02, 0x03, 0x09, 0x02,
+ 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02, 0x01, 0x09, 0x02,
+ 0x00, 0x07, 0x01, 0x01, 0x08, 0x02, 0x01, 0x08, 0x03, 0x00, 0x06, 0x02,
+ 0x01, 0x04, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x02, 0x06, 0x01, 0x02, 0x06, 0x01, 0x02, 0x06, 0x00, 0x03, 0x08, 0x02,
+ 0x03, 0x08, 0x02, 0x02, 0x06, 0x00, 0x02, 0x06, 0x01, 0x02, 0x06, 0x01,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02, 0x02, 0x07, 0x02,
+ 0x02, 0x07, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02,
+ 0x03, 0x08, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02, 0x03, 0x08, 0x02,
+ 0x03, 0x08, 0x02, 0x03, 0x07, 0x02, 0x03, 0x07, 0x02, 0x02, 0x08, 0x02,
+ 0x02, 0x07, 0x02, 0x00, 0x07, 0x02, 0x01, 0x08, 0x02, 0x01, 0x07, 0x02,
+ 0x01, 0x07, 0x02, 0x00, 0x06, 0x01, 0x01, 0x07, 0x02, 0x01, 0x06, 0x03,
+ 0x00, 0x05, 0x03, 0x01, 0x04, 0x02, 0x00, 0x02, 0x00, 0x00, 0x02, 0x00,
+ 0x00, 0x02, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x04, 0x03, 0x04,
+ 0x03, 0x03, 0x03, 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x02, 0x07, 0x01,
+ 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x01, 0x05, 0x00,
+ 0x01, 0x05, 0x00, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01,
+ 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01,
+ 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x02, 0x07, 0x01,
+ 0x02, 0x07, 0x01, 0x02, 0x07, 0x01, 0x03, 0x05, 0x01, 0x03, 0x05, 0x01,
+ 0x01, 0x07, 0x01, 0x01, 0x06, 0x01, 0x01, 0x06, 0x01, 0x01, 0x07, 0x01,
+ 0x00, 0x05, 0x02, 0x00, 0x05, 0x02, 0x00, 0x04, 0x01, 0x00, 0x05, 0x02,
+ 0x01, 0x05, 0x02, 0x01, 0x04, 0x02, 0x00, 0x03, 0x01, 0x00, 0x01, 0x00,
+ 0x01, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03,
+ 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x02, 0x07, 0x01, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x02, 0x07, 0x01,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x02, 0x07, 0x01,
+ 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00,
+ 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x01, 0x03, 0x04, 0x00,
+ 0x03, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x01, 0x05, 0x00,
+ 0x01, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x02, 0x00, 0x03, 0x02,
+ 0x00, 0x03, 0x02, 0x01, 0x03, 0x01, 0x01, 0x03, 0x02, 0x00, 0x02, 0x00,
+ 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
+ 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x03, 0x03, 0x03, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x02, 0x07, 0x01, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00,
+ 0x02, 0x07, 0x01, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x02, 0x07, 0x01, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00,
+ 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x00, 0x01, 0x06, 0x01,
+ 0x03, 0x04, 0x00, 0x03, 0x03, 0x00, 0x00, 0x05, 0x00, 0x00, 0x05, 0x00,
+ 0x01, 0x05, 0x00, 0x01, 0x05, 0x00, 0x00, 0x03, 0x02, 0x00, 0x03, 0x02,
+ 0x00, 0x03, 0x02, 0x00, 0x03, 0x02, 0x01, 0x03, 0x01, 0x01, 0x03, 0x02,
+ 0x00, 0x02, 0x00, 0x00, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02,
+ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04,
+ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+#endif
#endif
#endif
diff --git a/platform/msm_shared/include/spmi.h b/platform/msm_shared/include/spmi.h
index b594da5..e19cccd 100644
--- a/platform/msm_shared/include/spmi.h
+++ b/platform/msm_shared/include/spmi.h
@@ -152,5 +152,5 @@
uint8_t pmic_spmi_reg_read(uint32_t addr);
void pmic_spmi_reg_write(uint32_t addr, uint8_t val);
void pmic_spmi_reg_mask_write(uint32_t addr, uint8_t mask, uint8_t val);
-
+bool spmi_initialized();
#endif
diff --git a/platform/msm_shared/spmi.c b/platform/msm_shared/spmi.c
index 5af8eb7..72ec7cb 100644
--- a/platform/msm_shared/spmi.c
+++ b/platform/msm_shared/spmi.c
@@ -46,6 +46,7 @@
static uint32_t pmic_arb_ver;
static uint8_t *chnl_tbl;
static uint32_t max_peripherals;
+static bool spmi_init_done;
static void spmi_lookup_chnl_number()
{
@@ -90,6 +91,8 @@
{
spmi_lookup_chnl_number();
}
+
+ spmi_init_done = true;
}
static void write_wdata_from_array(uint8_t *array,
@@ -440,3 +443,8 @@
{
mask_interrupt(EE0_KRAIT_HLOS_SPMI_PERIPH_IRQ);
}
+
+bool spmi_initialized()
+{
+ return spmi_init_done;
+}
diff --git a/project/msm8996.mk b/project/msm8996.mk
index f61933e..2669b56 100644
--- a/project/msm8996.mk
+++ b/project/msm8996.mk
@@ -39,6 +39,7 @@
DEFINES += USB_RESET_FROM_CLK=1
DEFINES += USE_BOOTDEV_CMDLINE=1
DEFINES += USE_RPMB_FOR_DEVINFO=1
+DEFINES += ENABLE_WBC=1
#Disable thumb mode
ENABLE_THUMB := false
diff --git a/target/msm8909/init.c b/target/msm8909/init.c
index ec1a568..72506f3 100644
--- a/target/msm8909/init.c
+++ b/target/msm8909/init.c
@@ -61,6 +61,7 @@
#define PMIC_ARB_CHANNEL_NUM 0
#define PMIC_ARB_OWNER_ID 0
#define TLMM_VOL_UP_BTN_GPIO 90
+#define TLMM_VOL_DOWN_BTN_GPIO 91
#if PON_VIB_SUPPORT
#define VIBRATE_TIME 250
@@ -74,6 +75,7 @@
#define CE_READ_PIPE_LOCK_GRP 0
#define CE_WRITE_PIPE_LOCK_GRP 0
#define CE_ARRAY_SIZE 20
+#define SUB_TYPE_SKUT 0x0A
extern void smem_ptable_init(void);
extern void smem_add_modem_partitions(struct ptable *flash_ptable);
@@ -222,8 +224,24 @@
/* Return 1 if vol_down pressed */
uint32_t target_volume_down()
{
- /* Volume down button tied in with PMIC RESIN. */
- return pm8x41_resin_status();
+ if ((board_hardware_id() == HW_PLATFORM_QRD) &&
+ (board_hardware_subtype() == SUB_TYPE_SKUT)) {
+ uint32_t status = 0;
+
+ gpio_tlmm_config(TLMM_VOL_DOWN_BTN_GPIO, 0, GPIO_INPUT, GPIO_PULL_UP, GPIO_2MA, GPIO_ENABLE);
+
+ /* Wait for the gpio config to take effect - debounce time */
+ thread_sleep(10);
+
+ /* Get status of GPIO */
+ status = gpio_status(TLMM_VOL_DOWN_BTN_GPIO);
+
+ /* Active low signal. */
+ return !status;
+ } else {
+ /* Volume down button tied in with PMIC RESIN. */
+ return pm8x41_resin_status();
+ }
}
static void target_keystatus()
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index e1a61c4..41ff356 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -486,6 +486,7 @@
switch (board_hardware_id()) {
case HW_PLATFORM_MTP:
case HW_PLATFORM_SURF:
+ case HW_PLATFORM_RCM:
case HW_PLATFORM_QRD:
splash_screen = 1;
break;
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index 603f990..d2e05f8 100644
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -375,6 +375,7 @@
panel_id = TRULY_1080P_VIDEO_PANEL;
break;
case HW_PLATFORM_SURF:
+ case HW_PLATFORM_RCM:
if (platform_is_msm8956())
panel_id = NT35597_WQXGA_DUALDSI_VIDEO_PANEL;
else
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index adc5815..8773514 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -51,6 +51,11 @@
#include "include/display_resource.h"
#include "gcdb_display.h"
+#define DSC_CMD_PANEL "dsc_cmd_panel"
+#define DSC_VID_PANEL "dsc_vid_panel"
+#define DSC_CMD_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_cmd"
+#define DSC_VID_PANEL_STRING "1:dsi:0:none:1:qcom,mdss_dsi_nt35597_dsc_wqxga_video"
+
/*---------------------------------------------------------------------------*/
/* GPIO configuration */
/*---------------------------------------------------------------------------*/
@@ -508,7 +513,11 @@
qpnp_ibb_enable(true); /*5V boost*/
mdelay(50);
} else {
- regulator_disable(ldo_num);
+ /*
+ * LDO1, LDO2 and LDO6 are shared with other subsystems.
+ * Do not disable them.
+ */
+ regulator_disable(REG_LDO17);
}
return NO_ERROR;
@@ -516,7 +525,35 @@
bool target_display_panel_node(char *pbuf, uint16_t buf_size)
{
- return gcdb_display_cmdline_arg(pbuf, buf_size);
+ int prefix_string_len = strlen(DISPLAY_CMDLINE_PREFIX);
+ bool ret = true;
+ struct oem_panel_data oem = mdss_dsi_get_oem_data();
+
+ if (!strcmp(oem.panel, DSC_CMD_PANEL)) {
+ if (buf_size < (prefix_string_len +
+ strlen(DSC_CMD_PANEL_STRING))) {
+ dprintf(CRITICAL, "DSC command line argument is greater than buffer size\n");
+ return false;
+ }
+ strlcpy(pbuf, DISPLAY_CMDLINE_PREFIX, buf_size);
+ buf_size -= prefix_string_len;
+ pbuf += prefix_string_len;
+ strlcpy(pbuf, DSC_CMD_PANEL_STRING, buf_size);
+ } else if (!strcmp(oem.panel, DSC_VID_PANEL)) {
+ if (buf_size < (prefix_string_len +
+ strlen(DSC_VID_PANEL_STRING))) {
+ dprintf(CRITICAL, "DSC command line argument is greater than buffer size\n");
+ return false;
+ }
+ strlcpy(pbuf, DISPLAY_CMDLINE_PREFIX, buf_size);
+ buf_size -= prefix_string_len;
+ pbuf += prefix_string_len;
+ strlcpy(pbuf, DSC_VID_PANEL_STRING, buf_size);
+ } else {
+ ret = gcdb_display_cmdline_arg(pbuf, buf_size);
+ }
+
+ return ret;
}
void target_display_init(const char *panel_name)
@@ -531,6 +568,8 @@
if (!strcmp(oem.panel, NO_PANEL_CONFIG)
|| !strcmp(oem.panel, SIM_VIDEO_PANEL)
|| !strcmp(oem.panel, SIM_CMD_PANEL)
+ || !strcmp(oem.panel, DSC_CMD_PANEL)
+ || !strcmp(oem.panel, DSC_VID_PANEL)
|| oem.skip) {
dprintf(INFO, "Selected panel: %s\nSkip panel configuration\n",
oem.panel);
diff --git a/target/msm8996/init.c b/target/msm8996/init.c
index f407eea..488ed47 100644
--- a/target/msm8996/init.c
+++ b/target/msm8996/init.c
@@ -58,6 +58,9 @@
#include <qusb2_phy.h>
#include <rpmb.h>
#include <rpm-glink.h>
+#if ENABLE_WBC
+#include <pm_app_smbchg.h>
+#endif
#define CE_INSTANCE 1
#define CE_EE 1
@@ -147,6 +150,10 @@
}
}
+#if ENABLE_WBC
+ pm_appsbl_set_dcin_suspend(1);
+#endif
+
/* Tear down glink channels */
rpm_glink_uninit();
@@ -237,6 +244,18 @@
spmi_init(PMIC_ARB_CHANNEL_NUM, PMIC_ARB_OWNER_ID);
+ /* Initialize Glink */
+ rpm_glink_init();
+
+#if ENABLE_WBC
+ /* Look for battery voltage and make sure we have enough to bootup
+ * Otherwise initiate battery charging
+ * Charging should happen as early as possible, any other driver
+ * initialization before this should consider the power impact
+ */
+ pm_appsbl_chg_check_weak_battery_status(1);
+#endif
+
target_keystatus();
if (target_use_signed_kernel())
@@ -266,9 +285,6 @@
dprintf(CRITICAL, "RPMB init failed\n");
ASSERT(0);
}
- /* Initialize Glink */
- rpm_glink_init();
-
}
unsigned board_machtype(void)
diff --git a/target/msm8996/rules.mk b/target/msm8996/rules.mk
index 82c6979..d9349f7 100644
--- a/target/msm8996/rules.mk
+++ b/target/msm8996/rules.mk
@@ -27,6 +27,7 @@
dev/qpnp_wled \
dev/qpnp_led \
dev/gcdb/display \
+ dev/pmic/pmi8994 \
lib/ptable \
lib/libfdt