summaryrefslogtreecommitdiff
Diffstat
-rwxr-xr-x.gitignore27
-rwxr-xr-xMakefile5
-rwxr-xr-xap/ap.c39
-rwxr-xr-xap/ap_apcli.c56
-rwxr-xr-xap/ap_assoc.c33
-rwxr-xr-xap/ap_auth.c2
-rwxr-xr-xap/ap_autoChSel.c29
-rwxr-xr-xap/ap_cfg.c1003
-rwxr-xr-xap/ap_connect.c4
-rwxr-xr-xap/ap_data.c79
-rwxr-xr-xap/ap_mbss.c20
-rwxr-xr-xap/ap_mlme.c5
-rwxr-xr-xap/ap_nps.c6
-rwxr-xr-xap/ap_repeater.c56
-rwxr-xr-xap/ap_sync.c15
-rwxr-xr-xap/ap_wpa.c8
-rwxr-xr-xap/apcli_assoc.c10
-rwxr-xr-xap/apcli_auth.c4
-rwxr-xr-xap/apcli_ctrl.c13
-rwxr-xr-xap/apcli_link_cover.c17
-rwxr-xr-xap/apcli_sync.c16
-rwxr-xr-xate/ate_agent.c37
-rwxr-xr-xate/inf/ate_usb.c6
-rwxr-xr-xate/mt_mac/mt_ate.c61
-rwxr-xr-xchips/mt7603.c451
-rwxr-xr-xchips/rtmp_chip.c1
-rwxr-xr-xcommon/ba_action.c41
-rwxr-xr-xcommon/cmm_cfg.c118
-rwxr-xr-xcommon/cmm_data.c114
-rwxr-xr-xcommon/cmm_data_usb.c23
-rwxr-xr-xcommon/cmm_info.c1067
-rwxr-xr-xcommon/cmm_mac_usb.c14
-rwxr-xr-xcommon/cmm_profile.c351
-rwxr-xr-xcommon/cmm_sanity.c8
-rwxr-xr-xcommon/cmm_sync.c8
-rwxr-xr-xcommon/cmm_tkip.c40
-rwxr-xr-xcommon/cmm_usb_io.c27
-rwxr-xr-xcommon/cmm_wpa.c118
-rwxr-xr-xcommon/cmm_wpa_adhoc.c115
-rwxr-xr-xcommon/ee_efuse.c26
-rwxr-xr-xcommon/eeprom.c92
-rwxr-xr-xcommon/mlme.c154
-rwxr-xr-xcommon/mt_ps.c5
-rwxr-xr-xcommon/mtusb_io.c12
-rwxr-xr-xcommon/rtmp_init.c23
-rwxr-xr-xcommon/rtmp_init_inf.c23
-rwxr-xr-xcommon/rtusb_bulk.c31
-rwxr-xr-xcommon/rtusb_dev_id.c2
-rwxr-xr-xcommon/scan.c33
-rwxr-xr-xcommon/spectrum.c16
-rwxr-xr-xcommon/sys_log.c2
-rwxr-xr-xcommon/txpower.c184
-rwxr-xr-xcommon/uapsd.c181
-rwxr-xr-xconf/MT7603USTA.dat2
-rwxr-xr-xconf/SingleSKU.dat17
-rwxr-xr-xhw_ctrl/cmm_asic.c279
-rwxr-xr-xhw_ctrl/cmm_asic_mt.c490
-rwxr-xr-xhw_ctrl/mt_gpio.c39
-rwxr-xr-xinclude/cfg80211.h52
-rwxr-xr-xinclude/cfg80211extr.h89
-rwxr-xr-xinclude/chip/mt7603.h6
-rwxr-xr-xinclude/dot11i_wpa.h2
-rwxr-xr-xinclude/mac/mac_mt/mt_mac.h4
-rwxr-xr-xinclude/mac/mac_mt/mt_mac_usb.h24
-rwxr-xr-xinclude/mac/mac_mt/wf_phy.h7
-rwxr-xr-xinclude/mcu/andes_mt.h7
-rwxr-xr-xinclude/mcu/mt7603_e2_firmware.h8698
-rwxr-xr-xinclude/mlme.h4
-rwxr-xr-xinclude/oid.h17
-rwxr-xr-xinclude/os/rt_drv.h8
-rwxr-xr-xinclude/os/rt_linux.h34
-rwxr-xr-xinclude/phy/phy.h2
-rwxr-xr-xinclude/rt_os_net.h17
-rwxr-xr-xinclude/rt_os_util.h5
-rwxr-xr-xinclude/rtmp.h81
-rwxr-xr-xinclude/rtmp_chip.h4
-rwxr-xr-xinclude/rtmp_cmd.h13
-rwxr-xr-xinclude/rtmp_comm.h6
-rwxr-xr-xinclude/rtmp_def.h23
-rwxr-xr-xinclude/sta_cfg.h6
-rwxr-xr-xinclude/wfa_p2p.h2
-rwxr-xr-xinclude/wpa.h26
-rwxr-xr-xmac/mt_mac.c137
-rwxr-xr-xmcu/andes_mt.c84
-rwxr-xr-xmcu/bin/WIFI_RAM_CODE_MT7603_e2.bin390
-rwxr-xr-xmcu/mcu.c2
-rwxr-xr-xmgmt/mgmt_entrytb.c26
-rwxr-xr-xmgmt/mgmt_ht.c40
-rwxr-xr-xmt7603.IAB4925
-rwxr-xr-xmt7603.IAD53
-rwxr-xr-xmt7603.IMB1097
-rwxr-xr-xmt7603.IMD21
-rwxr-xr-xmt7603.PFI4
-rwxr-xr-xmt7603.PO2
-rwxr-xr-xmt7603.PR49
-rwxr-xr-xmt7603.PRI2384
-rwxr-xr-xmt7603.PS6706
-rwxr-xr-xmt7603.SearchResults28
-rwxr-xr-xmt7603.WK339
-rwxr-xr-xos/linux/Makefile1747
-rwxr-xr-xos/linux/ap_ioctl.c2
-rwxr-xr-xos/linux/cfg80211/cfg80211.c445
-rwxr-xr-xos/linux/cfg80211/cfg80211_ap.c56
-rwxr-xr-xos/linux/cfg80211/cfg80211_inf.c160
-rwxr-xr-xos/linux/cfg80211/cfg80211_p2p.c40
-rwxr-xr-xos/linux/cfg80211/cfg80211_scan.c10
-rwxr-xr-xos/linux/cfg80211/cfg80211_tdls.c62
-rwxr-xr-xos/linux/cfg80211/cfg80211_tx.c18
-rwxr-xr-xos/linux/cfg80211/cfg80211_util.c138
-rwxr-xr-xos/linux/cfg80211/cfg80211drv.c168
-rwxr-xr-xos/linux/config.mk24
-rwxr-xr-xos/linux/prealloc.c26
-rwxr-xr-xos/linux/rt_linux.c140
-rwxr-xr-xos/linux/rt_main_dev.c125
-rwxr-xr-xos/linux/rt_profile.c6
-rwxr-xr-xos/linux/rt_txrx_hook.c2
-rwxr-xr-xos/linux/rt_usb.c78
-rwxr-xr-xos/linux/rt_usb_util.c36
-rwxr-xr-xos/linux/sta_ioctl.c64
-rwxr-xr-xos/linux/usb_main_dev.c7
-rwxr-xr-xos/threadX/rt_usb.c1
-rwxr-xr-xrate_ctrl/alg_grp.c78
-rwxr-xr-xrate_ctrl/alg_legacy.c10
-rwxr-xr-xrate_ctrl/ra_ctrl.c13
-rwxr-xr-xsta/adhoc.c4
-rwxr-xr-xsta/connect.c39
-rwxr-xr-xsta/rtmp_data.c47
-rwxr-xr-xsta/sanity.c5
-rwxr-xr-xsta/sta_cfg.c369
-rwxr-xr-xsta/sync.c32
-rwxr-xr-xtools/bin2h31
-rwxr-xr-xtools/bin2h.c81
-rwxr-xr-xtools/plug_in/calib_robust_test/calib_robust_file.c4
-rwxr-xr-xtools/plug_in/calib_robust_test/calib_robust_main.c14
-rwxr-xr-xtools/plug_in/calib_robust_test/calib_robust_proc.c42
-rwxr-xr-xtools/plug_in/softq_statistic/softq_stat_file.c4
-rwxr-xr-xtools/plug_in/softq_statistic/softq_stat_proc.c38
-rwxr-xr-xtools/plug_in/softq_statistic/softq_statistic.c36
-rwxr-xr-xtx_rx/txs.c19
-rwxr-xr-xtx_rx/wdev.c2
-rwxr-xr-xtx_rx/wdev_rx.c51
-rwxr-xr-xtx_rx/wdev_tx.c2
142 files changed, 11440 insertions, 23618 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100755
index 0000000..bf8b1f8
--- a/dev/null
+++ b/.gitignore
@@ -0,0 +1,27 @@
+*.o
+*.o.*
+*.a
+*.s
+*.ko
+*.so
+*.so.dbg
+*.mod.c
+*.i
+*.lst
+*.symtypes
+*.order
+modules.builtin
+*.elf
+*.bin
+*.gz
+*.bz2
+*.lzma
+*.xz
+*.lz4
+*.lzo
+*.patch
+*.gcno
+*.bak
+*.ko.cmd
+.tmp_versions/
+Module.symvers
diff --git a/Makefile b/Makefile
index 665c644..e85963d 100755
--- a/Makefile
+++ b/Makefile
@@ -54,7 +54,7 @@ RTMP_SRC_DIR = $(RT28xx_DIR)/RT$(MODULE)
#PLATFORM = MSTAR
#PLATFORM = HISILICON
#PLATFORM = HE_TV
-LINUX_SRC ?= /mnt/nfsroot/rongjun.chen/l-amlogic/out/target/product/p200/obj/KERNEL_OBJ/
+LINUX_SRC ?= /mnt/nfsroot/rongjun.chen/Alip200/out/target/product/p200/obj/KERNEL_OBJ/
CROSS_COMPILE ?=aarch64-linux-gnu-
ARCH ?=arm64
#APSOC
@@ -95,6 +95,7 @@ MODULE = $(shell pwd | sed "s/.*\///" ).o
export MODULE
endif
+
ifeq ($(PLATFORM),PC)
PREALLOC = NO
# Linux 2.6
@@ -234,7 +235,7 @@ endif
ifeq ($(PREALLOC), YES)
#build prealloc.ko
cp -f $(RT28xx_DIR)/os/linux/Makefile.6.prealloc $(RT28xx_DIR)/os/linux/Makefile
- $(MAKE) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
+ $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
endif
cp -f $(RT28xx_DIR)/os/linux/Makefile.6 $(RT28xx_DIR)/os/linux/Makefile
ifeq ($(PLATFORM),DM6446)
diff --git a/ap/ap.c b/ap/ap.c
index 183f2be..2aa0c36 100755
--- a/ap/ap.c
+++ b/ap/ap.c
@@ -55,7 +55,7 @@ UCHAR get_apidx_by_addr(RTMP_ADAPTER *pAd, UCHAR *addr)
// TODO: shiang-usw, need to revise this to asic specific functions!
INT set_wdev_if_addr(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, INT opmode)
{
- INT idx = wdev->func_idx;
+ CHAR idx = wdev->func_idx;
if (opmode == OPMODE_AP)
{
@@ -111,8 +111,8 @@ INT set_wdev_if_addr(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, INT opmode)
if (pAd->chipCap.hif_type == HIF_MT)
{
//TODO: Carter, Apcli interface and MESH interface shall use HWBSSID1 or HWBSSID2???
- UINT32 Value;
- UCHAR MacByte = 0, MacMask = 0;
+ UINT32 Value, MacByte = 0;
+ UCHAR MacMask = 0;
//TODO: shall we make choosing which byte to be selectable???
Value = 0x00000000;
@@ -386,7 +386,7 @@ static INT ap_security_init(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, INT idx)
wdev->WpaMixPairCipher = MIX_CIPHER_NOTUSE;
/* Generate the corresponding RSNIE */
- RTMPMakeRSNIE(pAd, wdev->AuthMode, wdev->WepStatus, idx);
+ RTMPMakeRSNIE(pAd, wdev->AuthMode, wdev->WepStatus, (UCHAR)idx);
return TRUE;
}
@@ -396,8 +396,8 @@ static INT ap_key_tb_init(RTMP_ADAPTER *pAd)
{
BSS_STRUCT *pMbss;
struct wifi_dev *wdev;
- USHORT Wcid;
- INT idx, i;
+ UCHAR Wcid, idx;
+ INT i;
/*
Initialize security variable per entry,
@@ -471,7 +471,7 @@ static INT ap_key_tb_init(RTMP_ADAPTER *pAd)
/* Install Shared key */
WPAInstallSharedKey(pAd,
- wdev->GroupKeyWepStatus,
+ (UINT8)wdev->GroupKeyWepStatus,
idx,
wdev->DefaultKeyId,
Wcid,
@@ -1370,6 +1370,9 @@ VOID MacTableMaintenance(RTMP_ADAPTER *pAd)
/* Skip the Infra Side */
startWcid = 2;
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE */
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ pAd->SCSCtrl.SCSMinRssi = 0; /* (Reset)The minimum RSSI of STA */
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
for (i = startWcid; i < MAX_LEN_OF_MAC_TABLE; i++)
{
@@ -1596,8 +1599,9 @@ VOID MacTableMaintenance(RTMP_ADAPTER *pAd)
if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE))
bQosNull = TRUE;
- RtmpEnqueueNullFrame(pAd, pEntry->Addr, pEntry->CurrTxRate,
- pEntry->Aid, pEntry->func_tb_idx, bQosNull, TRUE, 0);
+ RtmpEnqueueNullFrame(pAd, pEntry->Addr
+ , pEntry->CurrTxRate, (UCHAR)pEntry->Aid
+ , pEntry->func_tb_idx, bQosNull, TRUE, 0);
}
#ifdef P2P_SUPPORT
}
@@ -1654,6 +1658,15 @@ VOID MacTableMaintenance(RTMP_ADAPTER *pAd)
avgRssi));
}
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ if (pAd->SCSCtrl.SCSEnable == SCS_ENABLE) {
+ CHAR tmpRssi = RTMPMinRssi(pAd, pEntry->RssiSample.AvgRssi[0],
+ pEntry->RssiSample.AvgRssi[1], pEntry->RssiSample.AvgRssi[2]);
+
+ if (tmpRssi < pAd->SCSCtrl.SCSMinRssi)
+ pAd->SCSCtrl.SCSMinRssi = tmpRssi;
+ }
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
if (bDisconnectSta)
{
@@ -3029,9 +3042,11 @@ BOOLEAN DOT1X_EapTriggerAction(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
memcpy(&FrameBuf[offset+sizeof(eapol_start_1x_hdr)], HS2_Header, 4);
memcpy(&FrameBuf[offset+sizeof(eapol_start_1x_hdr)+4], &pEntry->hs_info, sizeof(struct _sta_hs_info));
frame_len += 4+sizeof(struct _sta_hs_info);
- printk("event eapol start, %x:%x:%x:%x\n",
- FrameBuf[offset+sizeof(eapol_start_1x_hdr)+4],FrameBuf[offset+sizeof(eapol_start_1x_hdr)+5],
- FrameBuf[offset+sizeof(eapol_start_1x_hdr)+6],FrameBuf[offset+sizeof(eapol_start_1x_hdr)+7]);
+ DBGPRINT(RT_DEBUG_OFF, ("event eapol start, %x:%x:%x:%x\n",
+ FrameBuf[offset+sizeof(eapol_start_1x_hdr)+4],
+ FrameBuf[offset+sizeof(eapol_start_1x_hdr)+5],
+ FrameBuf[offset+sizeof(eapol_start_1x_hdr)+6],
+ FrameBuf[offset+sizeof(eapol_start_1x_hdr)+7]));
}
}
#endif
diff --git a/ap/ap_apcli.c b/ap/ap_apcli.c
index 1882b91..8f84c24 100755
--- a/ap/ap_apcli.c
+++ b/ap/ap_apcli.c
@@ -53,7 +53,9 @@ BOOLEAN ApCliWaitProbRsp(PRTMP_ADAPTER pAd, USHORT ifIndex)
if (ifIndex >= MAX_APCLI_NUM)
return FALSE;
- printk("%s()[%d]: %lu\n", __FUNCTION__, ifIndex, pAd->ApCfg.ApCliTab[ifIndex].SyncCurrState);
+ DBGPRINT(RT_DEBUG_OFF, ("%s()[%d]: %lu\n", __func__, ifIndex,
+ pAd->ApCfg.ApCliTab[ifIndex].SyncCurrState));
+
return (pAd->ApCfg.ApCliTab[ifIndex].SyncCurrState == APCLI_JOIN_WAIT_PROBE_RSP) ?
TRUE : FALSE;
}
@@ -265,7 +267,7 @@ BOOLEAN ApCliCheckHt(
if (RTMP_CFG80211_VIF_P2P_CLI_ON(pAd))
{
- pApCliEntry->wdev.bw = aux_ht_cap->HtCapInfo.ChannelWidth;
+ pApCliEntry->wdev.bw = (UCHAR)aux_ht_cap->HtCapInfo.ChannelWidth;
if (pApCliEntry->wdev.bw == HT_BW_20)
{
pApCliEntry->wdev.channel = pAddHtInfo->ControlChan;
@@ -300,10 +302,13 @@ BOOLEAN ApCliCheckHt(
/* Send Assoc Req with my HT capability. */
aux_ht_cap->HtCapInfo.AMsduSize = rt_ht_cap->AmsduSize;
aux_ht_cap->HtCapInfo.MimoPs = pHtCapability->HtCapInfo.MimoPs;
- aux_ht_cap->HtCapInfo.ShortGIfor20 = (rt_ht_cap->ShortGIfor20) & (pHtCapability->HtCapInfo.ShortGIfor20);
- aux_ht_cap->HtCapInfo.ShortGIfor40 = (rt_ht_cap->ShortGIfor40) & (pHtCapability->HtCapInfo.ShortGIfor40);
- aux_ht_cap->HtCapInfo.TxSTBC = (rt_ht_cap->TxSTBC)&(pHtCapability->HtCapInfo.RxSTBC);
- aux_ht_cap->HtCapInfo.RxSTBC = (rt_ht_cap->RxSTBC)&(pHtCapability->HtCapInfo.TxSTBC);
+ /* The HT Capabilities element are used to advertise optional HT capabilities of an HT STA.
+ * We shouldn't care about the AP's Capabilities in here
+ */
+ aux_ht_cap->HtCapInfo.ShortGIfor20 = rt_ht_cap->ShortGIfor20;
+ aux_ht_cap->HtCapInfo.ShortGIfor40 = rt_ht_cap->ShortGIfor40;
+ aux_ht_cap->HtCapInfo.TxSTBC = rt_ht_cap->TxSTBC;
+ aux_ht_cap->HtCapInfo.RxSTBC = rt_ht_cap->RxSTBC;
aux_ht_cap->HtCapParm.MaxRAmpduFactor = rt_ht_cap->MaxRAmpduFactor;
aux_ht_cap->HtCapParm.MpduDensity = pHtCapability->HtCapParm.MpduDensity;
aux_ht_cap->ExtHtCapInfo.PlusHTC = pHtCapability->ExtHtCapInfo.PlusHTC;
@@ -568,11 +573,11 @@ BOOLEAN ApCliLinkUp(RTMP_ADAPTER *pAd, UCHAR ifIndex)
if ((pMacEntry->AuthMode >= Ndis802_11AuthModeWPA) && (pApCliEntry->MlmeAux.VarIELen != 0))
{
PUCHAR pVIE;
- UCHAR len;
+ USHORT len;
PEID_STRUCT pEid;
pVIE = pApCliEntry->MlmeAux.VarIEs;
- len = pApCliEntry->MlmeAux.VarIELen;
+ len = pApCliEntry->MlmeAux.VarIELen;
while (len > 0)
{
@@ -626,7 +631,7 @@ BOOLEAN ApCliLinkUp(RTMP_ADAPTER *pAd, UCHAR ifIndex)
)
{
CIPHER_KEY *pKey;
- INT idx, BssIdx;
+ UCHAR idx, BssIdx;
BssIdx = pAd->ApCfg.BssidNum + MAX_MESH_NUM + ifIndex;
#ifdef MAC_APCLI_SUPPORT
@@ -693,15 +698,19 @@ BOOLEAN ApCliLinkUp(RTMP_ADAPTER *pAd, UCHAR ifIndex)
ht_mode_adjust(pAd, pMacEntry, pHtCapability, &pAd->CommonCfg.DesiredHtPhy);
/* find max fixed rate */
- pMacEntry->MaxHTPhyMode.field.MCS = get_ht_max_mcs(pAd, &wdev->DesiredHtPhyInfo.MCSSet[0],
- &pHtCapability->MCSSet[0]);
+ pMacEntry->MaxHTPhyMode.field.MCS =
+ (USHORT)get_ht_max_mcs(pAd
+ , &wdev->DesiredHtPhyInfo.MCSSet[0]
+ , &pHtCapability->MCSSet[0]);
if (wdev->DesiredTransmitSetting.field.MCS != MCS_AUTO)
{
DBGPRINT(RT_DEBUG_TRACE, ("IF-apcli%d : Desired MCS = %d\n",
ifIndex, wdev->DesiredTransmitSetting.field.MCS));
- set_ht_fixed_mcs(pAd, pMacEntry, wdev->DesiredTransmitSetting.field.MCS, wdev->HTPhyMode.field.MCS);
+ set_ht_fixed_mcs(pAd, pMacEntry
+ , (UCHAR)wdev->DesiredTransmitSetting.field.MCS
+ , (UCHAR)wdev->HTPhyMode.field.MCS);
}
pMacEntry->MaxHTPhyMode.field.STBC = (pHtCapability->HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
@@ -905,6 +914,7 @@ BOOLEAN ApCliLinkUp(RTMP_ADAPTER *pAd, UCHAR ifIndex)
VOID ApCliLinkDown(RTMP_ADAPTER *pAd, UCHAR ifIndex)
{
APCLI_STRUCT *pApCliEntry = NULL;
+ UINT16 Reason = REASON_DEAUTH_STA_LEAVING;
#ifdef MAC_REPEATER_SUPPORT
UCHAR CliIdx = 0xFF;
#endif /* MAC_REPEATER_SUPPORT */
@@ -940,6 +950,7 @@ VOID ApCliLinkDown(RTMP_ADAPTER *pAd, UCHAR ifIndex)
#endif /* MAC_REPEATER_SUPPORT */
)
return;
+ Reason = pApCliEntry->LastDeauthReason;
#ifdef MAC_REPEATER_SUPPORT
if (CliIdx == 0xFF)
@@ -966,6 +977,7 @@ VOID ApCliLinkDown(RTMP_ADAPTER *pAd, UCHAR ifIndex)
else
#endif /* MAC_REPEATER_SUPPORT */
{
+ pApCliEntry->LastDeauthReason = REASON_DEAUTH_STA_LEAVING;
pApCliEntry->Valid = FALSE; /* This link doesn't associated with any remote-AP */
pApCliEntry->wdev.allow_data_tx = FALSE;
pApCliEntry->wdev.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
@@ -980,7 +992,7 @@ VOID ApCliLinkDown(RTMP_ADAPTER *pAd, UCHAR ifIndex)
#endif /* WPA_SUPPLICANT_SUPPORT */
#if defined(RT_CFG80211_P2P_CONCURRENT_DEVICE) || defined(CFG80211_MULTI_STA)
- RT_CFG80211_LOST_GO_INFORM(pAd);
+ RT_CFG80211_LOST_GO_INFORM(pAd, Reason);
//NoA Stop
CmdP2pNoaOffloadCtrl(pAd, P2P_NOA_DISABLED);
@@ -1734,7 +1746,7 @@ BOOLEAN ApCliValidateRSNIE(
IN USHORT idx)
{
PUCHAR pVIE, pTmp;
- UCHAR len;
+ USHORT len;
PEID_STRUCT pEid;
CIPHER_SUITE WPA; /* AP announced WPA cipher suite */
CIPHER_SUITE WPA2; /* AP announced WPA2 cipher suite */
@@ -1751,7 +1763,7 @@ BOOLEAN ApCliValidateRSNIE(
struct wifi_dev *wdev;
pVIE = (PUCHAR) pEid_ptr;
- len = eid_len;
+ len = eid_len;
/*if (len >= MAX_LEN_OF_RSNIE || len <= MIN_LEN_OF_RSNIE) */
/* return FALSE; */
@@ -2212,7 +2224,8 @@ BOOLEAN ApCliValidateRSNIE(
}
/* re-build RSNIE */
- RTMPMakeRSNIE(pAd, wdev->AuthMode, wdev->WepStatus, (idx + MIN_NET_DEVICE_FOR_APCLI));
+ RTMPMakeRSNIE(pAd, wdev->AuthMode
+ , wdev->WepStatus, (UCHAR)(idx + MIN_NET_DEVICE_FOR_APCLI));
return TRUE;
}
@@ -2560,6 +2573,13 @@ VOID APCli_Init(RTMP_ADAPTER *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevOps)
#endif /* HOSTAPD_SUPPORT */
dev_name = get_dev_name_prefix(pAd, INT_APCLI);
+ if (!dev_name) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s(): Get dev name prefix fail!\n",
+ __func__));
+ break;
+ }
+
new_dev_p = RtmpOSNetDevCreate(MC_RowID, &IoctlIF, INT_APCLI, idx,
sizeof(struct mt_dev_priv), dev_name);
if (!new_dev_p) {
@@ -2575,7 +2595,7 @@ VOID APCli_Init(RTMP_ADAPTER *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevOps)
wdev = &pApCliEntry->wdev;
wdev->wdev_type = WDEV_TYPE_STA;
wdev->func_dev = pApCliEntry;
- wdev->func_idx = idx;
+ wdev->func_idx = (CHAR)idx;
wdev->sys_handle = (void *)pAd;
wdev->if_dev = new_dev_p;
wdev->tx_pkt_allowed = ApCliAllowToSendPacket;
@@ -2657,7 +2677,7 @@ VOID APCli_Init(RTMP_ADAPTER *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevOps)
}
else {
UINT32 Value;
- UCHAR MacByte = 0;
+ UINT32 MacByte = 0;
//TODO: shall we make choosing which byte to be selectable???
Value = 0x00000000L;
diff --git a/ap/ap_assoc.c b/ap/ap_assoc.c
index c6ceac6..da39302 100755
--- a/ap/ap_assoc.c
+++ b/ap/ap_assoc.c
@@ -293,8 +293,9 @@ static USHORT update_associated_mac_entry(
#endif /* TXBF_SUPPORT */
/* find max fixed rate */
- pEntry->MaxHTPhyMode.field.MCS = get_ht_max_mcs(pAd, &wdev->DesiredHtPhyInfo.MCSSet[0],
- &ie_list->HTCapability.MCSSet[0]);
+ pEntry->MaxHTPhyMode.field.MCS = (USHORT)get_ht_max_mcs(pAd
+ , &wdev->DesiredHtPhyInfo.MCSSet[0]
+ , &ie_list->HTCapability.MCSSet[0]);
if (wdev->DesiredTransmitSetting.field.MCS != MCS_AUTO)
{
@@ -302,7 +303,8 @@ static USHORT update_associated_mac_entry(
pEntry->func_tb_idx,
wdev->DesiredTransmitSetting.field.MCS));
- set_ht_fixed_mcs(pAd, pEntry, wdev->DesiredTransmitSetting.field.MCS, wdev->HTPhyMode.field.MCS);
+ set_ht_fixed_mcs(pAd, pEntry, (UCHAR)wdev->DesiredTransmitSetting.field.MCS
+ , (UCHAR)wdev->HTPhyMode.field.MCS);
}
pEntry->MaxHTPhyMode.field.STBC = (ie_list->HTCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
@@ -599,7 +601,7 @@ static USHORT APBuildAssociation(
MaxSupportedRate = dot11_2_ra_rate(MaxSupportedRateIn500Kbps);
- if (pAd && (WMODE_EQUAL(pAd->CommonCfg.PhyMode, WMODE_G)
+ if ((WMODE_EQUAL(pAd->CommonCfg.PhyMode, WMODE_G)
#ifdef DOT11_N_SUPPORT
|| WMODE_EQUAL(pAd->CommonCfg.PhyMode, (WMODE_G | WMODE_GN))
#endif /* DOT11_N_SUPPORT */
@@ -651,7 +653,10 @@ static USHORT APBuildAssociation(
#endif /* WSC_AP_SUPPORT */
{
/* check the validity of the received RSNIE */
- if ((StatusCode = APValidateRSNIE(pAd, pEntry, &ie_list->RSN_IE[0], ie_list->RSNIE_Len)) != MLME_SUCCESS)
+ StatusCode = (USHORT)APValidateRSNIE(pAd
+ , pEntry, &ie_list->RSN_IE[0]
+ , ie_list->RSNIE_Len);
+ if (StatusCode != MLME_SUCCESS)
return StatusCode;
}
}
@@ -1536,7 +1541,10 @@ BOOLEAN PeerAssocReqCmmSanity(
NdisMoveMemory(&pEntry->hs_info.ppsmo_id, &eid_ptr->Octet[5], 2);
//NdisMoveMemory(tmp3, tmp, 2);
}
- printk("Assoc HS2 STA:version:%d,ppomo exist:%d, value:0x%x\n", pEntry->hs_info.version, pEntry->hs_info.ppsmo_exist, pEntry->hs_info.ppsmo_id);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Assoc HS2 STA:version:%d,ppomo exist:%d, value:0x%x\n",
+ pEntry->hs_info.version, pEntry->hs_info.ppsmo_exist,
+ pEntry->hs_info.ppsmo_id));
break;
}
#endif /* CONFIG_HOTSPOT_R2 */
@@ -1841,8 +1849,7 @@ VOID ap_cmm_peer_assoc_req_action(
/* disallow new association */
- if (pAd && (pAd->ApCfg.BANClass3Data == TRUE))
- {
+ if (pAd->ApCfg.BANClass3Data == TRUE) {
DBGPRINT(RT_DEBUG_TRACE, ("Disallow new Association\n"));
return;
}
@@ -2545,7 +2552,7 @@ SendAssocResponse:
#ifdef CONFIG_HOTSPOT_R2
/* qosmap IE */
- printk("entry=%d\n", pEntry->QosMapSupport);
+ DBGPRINT(RT_DEBUG_OFF, ("entry=%d\n", pEntry->QosMapSupport));
if (pEntry->QosMapSupport)
{
ULONG TmpLen;
@@ -2678,11 +2685,11 @@ SendAssocResponse:
}
#ifdef RT_CFG80211_SUPPORT
/* Append extra IEs provided by wpa_supplicant */
- if (pAd->ApCfg.MBSSID[pEntry->func_tb_idx].AssocRespExtraIeLen)
+ if (pAd->ApCfg.MBSSID[pEntry->apidx].AssocRespExtraIeLen)
{
ULONG TmpLen = 0;
- INT32 IesLen = pAd->ApCfg.MBSSID[pEntry->func_tb_idx].AssocRespExtraIeLen;
- UCHAR *Ies = pAd->ApCfg.MBSSID[pEntry->func_tb_idx].AssocRespExtraIe;
+ INT32 IesLen = pAd->ApCfg.MBSSID[pEntry->apidx].AssocRespExtraIeLen;
+ UCHAR *Ies = pAd->ApCfg.MBSSID[pEntry->apidx].AssocRespExtraIe;
//if (RTMPIsValidIEs(Ies, IesLen))
{
@@ -3398,7 +3405,7 @@ VOID APMlmeKickOutSta(RTMP_ADAPTER *pAd, UCHAR *pStaAddr, UCHAR Wcid, USHORT Rea
{
return;
}
- Aid = pEntry->Aid;
+ Aid = (UCHAR)pEntry->Aid;
ApIdx = pEntry->func_tb_idx;
ASSERT(Aid == Wcid);
diff --git a/ap/ap_auth.c b/ap/ap_auth.c
index 03a66f8..29d8555 100755
--- a/ap/ap_auth.c
+++ b/ap/ap_auth.c
@@ -419,7 +419,7 @@ static VOID APPeerAuthReqAtIdleAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
INT i;
USHORT RspReason;
AUTH_FRAME_INFO auth_info;
- UINT32 apidx;
+ UCHAR apidx;
PHEADER_802_11 pRcvHdr;
HEADER_802_11 AuthHdr;
PUCHAR pOutBuffer = NULL;
diff --git a/ap/ap_autoChSel.c b/ap/ap_autoChSel.c
index d20b72d..fc97971 100755
--- a/ap/ap_autoChSel.c
+++ b/ap/ap_autoChSel.c
@@ -330,7 +330,8 @@ static inline UCHAR SelectClearChannelCCA(
{
pBss = &(pBssInfoTab->BssEntry[BssTab_idx]);
channel_idx = GetChIdx(pAd, pBss->Channel);
- if (channel_idx < 0 )
+ if ((channel_idx < 0) ||
+ (channel_idx >= ARRAY_SIZE(pChannelInfo->dirtyness)))
continue;
@@ -378,7 +379,7 @@ static inline UCHAR SelectClearChannelCCA(
/* check neighbor channel */
for (loop = (channel_idx+1); loop <= (channel_idx+AboveBound); loop++)
{
- if (loop >= MAX_NUM_OF_CHANNELS)
+ if (loop >= ARRAY_SIZE(pAd->ChannelList))
break;
if (pAd->ChannelList[loop].Channel - pAd->ChannelList[loop-1].Channel > 4)
@@ -389,6 +390,9 @@ static inline UCHAR SelectClearChannelCCA(
/* check neighbor channel */
for (loop=(channel_idx-1); loop >= (channel_idx-BelowBound); loop--)
{
+ if ((loop + 1) >= ARRAY_SIZE(pAd->ChannelList))
+ continue;
+
if (loop < 0)
break;
@@ -585,12 +589,12 @@ static inline UCHAR SelectClearChannelCCA(
{
ch = pAd->ChannelList[(base + channel_idx) % pAd->ChannelListNum].Channel;
- if (AutoChannelSkipListCheck(pAd, ch))
+ if (AutoChannelSkipListCheck(pAd, (UCHAR)ch))
continue;
if ((pAd->ApCfg.bAvoidDfsChannel == TRUE)
&& (pChannelInfo->IsABand == TRUE)
- && RadarChannelCheck(pAd, ch))
+ && RadarChannelCheck(pAd, (UCHAR)ch))
continue;
break;
@@ -604,10 +608,10 @@ static inline UCHAR SelectClearChannelBusyTime(
)
{
PCHANNELINFO pChannelInfo = pAd->pChannelInfo;
- INT ch = 1, channel_idx;
+ INT channel_idx;
UINT32 min_busytime;
int candidate_ch;
- UCHAR base;
+ UCHAR base, ch = 1;
if(pChannelInfo == NULL)
@@ -843,7 +847,7 @@ static inline UCHAR SelectClearChannelApCnt(
for (dirty = 30; dirty <= 32; dirty++)
{
BOOLEAN candidate[MAX_NUM_OF_CHANNELS+1], candidate_num=0;
- UCHAR min_ApCnt = 255;
+ ULONG min_ApCnt = 255;
final_channel = 0;
NdisZeroMemory(candidate, MAX_NUM_OF_CHANNELS+1);
@@ -895,7 +899,9 @@ static inline UCHAR SelectClearChannelApCnt(
if (final_channel != 0)
{
DBGPRINT(RT_DEBUG_TRACE,("Rule 2 APCnt : minimum APCnt with minimum interference(dirtiness: 30~32) ==> Select Channel %d\n", final_channel));
- DBGPRINT(RT_DEBUG_TRACE,(" Dirtiness = %d , Min ApCnt = %d\n", dirty, min_ApCnt));
+ DBGPRINT(RT_DEBUG_TRACE
+ , (" Dirtiness = %d , Min ApCnt = %lu\n"
+ , dirty, min_ApCnt));
return final_channel;
}
}
@@ -975,6 +981,13 @@ ULONG AutoChBssInsertEntry(
}
else
{
+ if (Idx >= ARRAY_SIZE(pBssInfoTab->BssEntry)) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s: Idx %lu >= MAX_LEN_OF_BSS_TABLE\n",
+ __func__, Idx));
+ return BSS_NOT_FOUND;
+ }
+
AutoChBssEntrySet(&pBssInfoTab->BssEntry[Idx], pBssid, Ssid, SsidLen,
ChannelNo, ExtChOffset, Rssi);
}
diff --git a/ap/ap_cfg.c b/ap/ap_cfg.c
index 5589c76..9ad4c8a 100755
--- a/ap/ap_cfg.c
+++ b/ap/ap_cfg.c
@@ -1311,6 +1311,10 @@ static struct {
{"SKUEnable", SetSKUEnable_Proc},
#endif /* SINGLE_SKU_V2 */
{"ed_chk", Set_ed_chk_proc},
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ {"SCSEnable", SetSCSEnable_Proc},
+ {"SCSCfg", SetSCSCfg_Proc},
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
{NULL,}
};
@@ -1418,6 +1422,9 @@ static struct {
#endif /* WSC_AP_SUPPORT */
{"rfinfo", ShowRFInfo},
{"bbpinfo", ShowBBPInfo},
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ {"SCSInfo", ShowSCSInfo},
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
{NULL,}
};
@@ -1619,7 +1626,7 @@ INT RTMPAPSetInformation(
#ifdef APCLI_SUPPORT
#ifdef WPA_SUPPLICANT_SUPPORT
- UCHAR ifIndex;
+ INT ifIndex;
BOOLEAN apcliEn=FALSE;
PNDIS_APCLI_802_11_PMKID pPmkId = NULL;
BOOLEAN IEEE8021xState = FALSE;
@@ -1717,9 +1724,18 @@ INT RTMPAPSetInformation(
PBSSID_INFO pBssIdInfo;
UINT BssIdx;
UINT CachedIdx;
+ UINT tail;
+ tail = Offsetof(NDIS_APCLI_802_11_PMKID, BSSIDInfo);
for (BssIdx = 0; BssIdx < pPmkId->BSSIDInfoCount; BssIdx++)
{
+ tail += sizeof(BSSID_INFO);
+ if (tail > wrq->u.data.length) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("buf not enough, stop at BssIdx %u\n",
+ BssIdx));
+ break;
+ }
/* point to the indexed BSSID_INFO structure */
pBssIdInfo = (PBSSID_INFO) ((PUCHAR) pPmkId + 2 * sizeof(UINT) + BssIdx * sizeof(BSSID_INFO));
/* Find the entry in the saved data base. */
@@ -1790,7 +1806,7 @@ INT RTMPAPSetInformation(
if (!apcliEn)
return FALSE;
- os_alloc_mem(NULL, (UCHAR **)&pRemoveKey, wrq->u.data.length);
+ os_alloc_mem(NULL, (UCHAR **)&pRemoveKey, wrq->u.data.length);
if(pRemoveKey == NULL)
{
Status = -ENOMEM;
@@ -1834,7 +1850,9 @@ INT RTMPAPSetInformation(
{
pAd->ApCfg.ApCliTab[ifIndex].SharedKey[KeyIdx].KeyLen = 0;
pAd->ApCfg.ApCliTab[ifIndex].SharedKey[KeyIdx].CipherAlg = CIPHER_NONE;
- AsicRemoveSharedKeyEntry(pAd, BssIdx, (UCHAR)KeyIdx);
+ AsicRemoveSharedKeyEntry(pAd
+ , (UCHAR)BssIdx
+ , (UCHAR)KeyIdx);
DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_KEY (id=0x%x, Len=%d-byte)\n", pRemoveKey->KeyIndex, pRemoveKey->Length));
}
}
@@ -1870,14 +1888,19 @@ INT RTMPAPSetInformation(
{
Status = -EINVAL;
DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP, Failed (length mismatch)!!\n"));
+ } else if ((pWepKey->KeyLength != 5) ||
+ (pWepKey->KeyLength != 13)) {
+ Status = -EINVAL;
+ DBGPRINT(RT_DEBUG_WARN,
+ ("invalid pWepKey->KeyLength %u\n",
+ pWepKey->KeyLength));
}
else
{
UINT KeyIdx;
KeyIdx = pWepKey->KeyIndex & 0x0fffffff;
/* KeyIdx must be 0 ~ 3 */
- if (KeyIdx > 4)
- {
+ if (KeyIdx > 3) {
Status = -EINVAL;
DBGPRINT(RT_DEBUG_TRACE, ("Set ApCli::OID_802_11_ADD_WEP, Failed (KeyIdx must be smaller than 4)!!\n"));
}
@@ -1916,7 +1939,8 @@ INT RTMPAPSetInformation(
/* set key material and key length */
pApCliEntry->wpa_supplicant_info.DesireSharedKey[KeyIdx].KeyLen = (UCHAR) pWepKey->KeyLength;
NdisMoveMemory(pApCliEntry->wpa_supplicant_info.DesireSharedKey[KeyIdx].Key, &pWepKey->KeyMaterial, pWepKey->KeyLength);
- pApCliEntry->wpa_supplicant_info.DesireSharedKeyId = KeyIdx;
+ pApCliEntry->wpa_supplicant_info.DesireSharedKeyId =
+ (UCHAR)KeyIdx;
pApCliEntry->wpa_supplicant_info.DesireSharedKey[KeyIdx].CipherAlg = CipherAlg;
pApCliEntry->wdev.DefaultKeyId = (UCHAR) KeyIdx;
@@ -1928,10 +1952,15 @@ INT RTMPAPSetInformation(
Key = pWepKey->KeyMaterial;
/* Set Group key material to Asic */
- AsicAddSharedKeyEntry(pAd, BssIdx, KeyIdx, &pApCliEntry->SharedKey[KeyIdx]);
+ AsicAddSharedKeyEntry(pAd
+ , (UCHAR)BssIdx
+ , (UCHAR)KeyIdx
+ , &pApCliEntry->SharedKey[KeyIdx]);
if (pWepKey->KeyIndex & 0x80000000) {
- RTMPSetWcidSecurityInfo(pAd, BssIdx, KeyIdx, CipherAlg, pApCliEntry->MacTabWCID, SHAREDKEYTABLE);
+ RTMPSetWcidSecurityInfo(pAd, (UCHAR)BssIdx
+ , (UINT8)KeyIdx, CipherAlg
+ , pApCliEntry->MacTabWCID, SHAREDKEYTABLE);
}
NdisAcquireSpinLock(&pAd->MacTabLock);
// TODO: shiang-usw, need to replace upper setting with tr_entry
@@ -1944,17 +1973,18 @@ INT RTMPAPSetInformation(
Key = pApCliEntry->SharedKey[KeyIdx].Key;
/* Set key material and cipherAlg to Asic */
- AsicAddSharedKeyEntry(pAd, BssIdx, KeyIdx, &pApCliEntry->SharedKey[KeyIdx]);
+ AsicAddSharedKeyEntry(pAd, (UCHAR)BssIdx
+ , (UCHAR)KeyIdx, &pApCliEntry->SharedKey[KeyIdx]);
if (pWepKey->KeyIndex & 0x80000000)
{
/* Assign pairwise key info */
RTMPSetWcidSecurityInfo(pAd,
- BssIdx,
- KeyIdx,
- CipherAlg,
- pApCliEntry->MacTabWCID,
- SHAREDKEYTABLE);
+ (UCHAR)BssIdx,
+ (UINT8)KeyIdx,
+ CipherAlg,
+ pApCliEntry->MacTabWCID,
+ SHAREDKEYTABLE);
}
}
DBGPRINT(RT_DEBUG_TRACE, ("Set ApCli::OID_802_11_ADD_WEP (id=0x%x, Len=%d-byte), %s\n",
@@ -1989,10 +2019,10 @@ INT RTMPAPSetInformation(
break;
}
Status = copy_from_user(pApCliKey, wrq->u.data.pointer, wrq->u.data.length);
- if (pApCliKey->Length != wrq->u.data.length)
- {
- Status = -EINVAL;
- DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_KEY, Failed!!\n"));
+ if ((pApCliKey->Length != wrq->u.data.length) ||
+ ((pApCliKey->KeyIndex & 0xFF) >= SHARE_KEY_NUM)) {
+ Status = -EINVAL;
+ DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_KEY, Failed!!\n"));
}
else
{
@@ -2025,7 +2055,7 @@ INT RTMPAPSetInformation(
sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, ifIndex);
if (pApCliEntry->Valid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
/* set the apcli interface be invalid. */
pApCliEntry->Valid = FALSE;
@@ -2102,7 +2132,8 @@ INT RTMPAPSetInformation(
case OID_802_11_P2P_MODE:
DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_P2P_MODE \n"));
- printk("wrq->u.data.length =%d sizeof(UCHAR)=%d\n",wrq->u.data.length,sizeof(UCHAR));
+ DBGPRINT(RT_DEBUG_OFF, ("wrq->u.data.length =%d sizeof(UCHAR)=%d\n"
+ , wrq->u.data.length, sizeof(UCHAR)));
if (wrq->u.data.length != sizeof(UCHAR))
Status = -EINVAL;
else
@@ -2459,7 +2490,7 @@ INT RTMPAPSetInformation(
ifIndex);
if (pApCliEntry->Valid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
/* set the apcli interface be invalid.*/
pApCliEntry->Valid = FALSE;
@@ -3418,7 +3449,8 @@ INT RTMPAPSetInformation(
}
RTMPMakeRSNIE(pAd, pAd->ApCfg.ApCliTab[ifIndex].wdev.AuthMode,
- pAd->ApCfg.ApCliTab[ifIndex].wdev.WepStatus, (ifIndex + MIN_NET_DEVICE_FOR_APCLI));
+ pAd->ApCfg.ApCliTab[ifIndex].wdev.WepStatus
+ , (UCHAR)(ifIndex + MIN_NET_DEVICE_FOR_APCLI));
pAd->ApCfg.ApCliTab[ifIndex].wdev.DefaultKeyId = 0;
if(pAd->ApCfg.ApCliTab[ifIndex].wdev.AuthMode >= Ndis802_11AuthModeWPA)
@@ -3488,8 +3520,10 @@ INT RTMPAPSetInformation(
if (pApCliEntry->wdev.WepStatus >= Ndis802_11TKIPEnable)
pApCliEntry->wdev.DefaultKeyId = 1;
- RTMPMakeRSNIE(pAd, pAd->ApCfg.ApCliTab[ifIndex].wdev.AuthMode,
- pAd->ApCfg.ApCliTab[ifIndex].wdev.WepStatus, (ifIndex + MIN_NET_DEVICE_FOR_APCLI));
+ RTMPMakeRSNIE(pAd
+ , pAd->ApCfg.ApCliTab[ifIndex].wdev.AuthMode
+ , pAd->ApCfg.ApCliTab[ifIndex].wdev.WepStatus
+ , (UCHAR)(ifIndex + MIN_NET_DEVICE_FOR_APCLI));
}
}
@@ -3568,7 +3602,8 @@ INT RTMPAPSetInformation(
{
NdisZeroMemory((PCHAR)pAd->ApCfg.MBSSID[pObj->ioctl_if].Ssid,MAX_LEN_OF_SSID);
strcpy((PCHAR)pAd->ApCfg.MBSSID[pObj->ioctl_if].Ssid,pSsidString);
- pAd->ApCfg.MBSSID[pObj->ioctl_if].SsidLen=strlen(pSsidString);
+ pAd->ApCfg.MBSSID[pObj->ioctl_if].SsidLen =
+ (UCHAR)strlen(pSsidString);
}
os_free_mem(NULL, pSsidString);
}
@@ -3619,10 +3654,10 @@ INT RTMPAPSetInformation(
else/*group key */
{
pMbss = &pAd->ApCfg.MBSSID[apidx];
- printk("Key.ik_keyix=%x\n",Key.ik_keyix);
+ DBGPRINT(RT_DEBUG_OFF, ("Key.ik_keyix=%x\n", Key.ik_keyix));
KeyIdx = Key.ik_keyix& 0x0fff;
- printk("ra%d KeyIdx=%d\n",apidx,KeyIdx);
- printk("Key.ik_keyix=%x\n",Key.ik_keyix);
+ DBGPRINT(RT_DEBUG_OFF, ("ra%d KeyIdx=%d\n", apidx, KeyIdx));
+ DBGPRINT(RT_DEBUG_OFF, ("Key.ik_keyix=%x\n", Key.ik_keyix));
/* it is a shared key */
if (KeyIdx < 4)
{
@@ -3631,7 +3666,8 @@ INT RTMPAPSetInformation(
if (Key.ik_keyix & 0x8000)
{
/* Default key for tx (shared key) */
- printk("ra%d DefaultKeyId=%d\n",apidx,KeyIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("ra%d DefaultKeyId=%d\n"
+ , apidx, KeyIdx));
pMbss->DefaultKeyId = (UCHAR) KeyIdx;
}
/*pMbss->DefaultKeyId=1; */
@@ -3639,8 +3675,8 @@ INT RTMPAPSetInformation(
pAd->SharedKey[apidx][KeyIdx].CipherAlg = Key.ik_type;
AsicAddSharedKeyEntry(
pAd,
- apidx,
- KeyIdx,
+ (UCHAR)apidx,
+ (UCHAR)KeyIdx,
&pAd->SharedKey[apidx][KeyIdx]
);
@@ -3727,13 +3763,13 @@ INT RTMPAPSetInformation(
AsicAddSharedKeyEntry(
pAd,
- apidx,
- pMbss->DefaultKeyId,
+ (UCHAR)apidx,
+ (UCHAR)pMbss->DefaultKeyId,
&pAd->SharedKey[apidx][pMbss->DefaultKeyId]
);
GET_GroupKey_WCID(pAd, Wcid, apidx);
- RTMPSetWcidSecurityInfo(pAd, apidx,(UINT8)KeyIdx,
+ RTMPSetWcidSecurityInfo(pAd, (UINT8)apidx, (UINT8)KeyIdx,
pAd->SharedKey[apidx][pMbss->DefaultKeyId].CipherAlg, Wcid, SHAREDKEYTABLE);
/*RTMPAddWcidAttributeEntry(
@@ -3817,8 +3853,8 @@ INT RTMPAPSetInformation(
}
else{
/*Status = -EINVAL; */
- printk("Woody HOSTAPD_OID_STATIC_WEP_COPY IEEE8021X=%d WepStatus=%d\n",
- pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.IEEE8021X, pEntry->WepStatus);
+ DBGPRINT(RT_DEBUG_OFF, ("HOSTAPD_OID_STATIC_WEP_COPY IEEE8021X=%d WepStatus=%d\n"
+ , pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.IEEE8021X, pEntry->WepStatus));
if (pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.IEEE8021X != TRUE)
break;
if (pEntry->WepStatus != Ndis802_11WEPEnabled)
@@ -3828,7 +3864,7 @@ INT RTMPAPSetInformation(
pMbss = &pAd->ApCfg.MBSSID[apidx];
KeyIdx=pMbss->DefaultKeyId;
- printk("Woody HOSTAPD_OID_STATIC_WEP_COPY=%d\n",KeyIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("HOSTAPD_OID_STATIC_WEP_COPY=%d\n", KeyIdx));
pEntry->AuthMode=pAd->ApCfg.MBSSID[apidx].AuthMode;
pEntry->PairwiseKey.KeyLen = pAd->SharedKey[apidx][KeyIdx].KeyLen;
NdisMoveMemory(pEntry->PairwiseKey.Key, pAd->SharedKey[apidx][KeyIdx].Key, pAd->SharedKey[apidx][KeyIdx].KeyLen);
@@ -3904,14 +3940,14 @@ INT RTMPAPSetInformation(
int v, apidx;
apidx = pObj->ioctl_if;
Status = copy_from_user(&hostapd_enable, wrq->u.data.pointer, wrq->u.data.length);
- printk("OID_HOSTAPD_SUPPORT apidx=%d\n",apidx);
+ DBGPRINT(RT_DEBUG_OFF, ("OID_HOSTAPD_SUPPORT apidx=%d\n", apidx));
pAd->ApCfg.MBSSID[apidx].Hostapd = hostapd_enable;
BSS_STRUCT *pMBSSStruct;
for(v=0;v<MAX_MBSSID_NUM(pAd);v++)
{
- printk("ApCfg->MBSSID[%d].Hostapd == %s\n", v,
- (pAd->ApCfg.MBSSID[v].Hostapd == Hostapd_EXT ? "TRUE" : "FALSE"));
+ DBGPRINT(RT_DEBUG_OFF, ("ApCfg->MBSSID[%d].Hostapd == %s\n"
+ , v, (pAd->ApCfg.MBSSID[v].Hostapd == Hostapd_EXT ? "TRUE" : "FALSE")));
pMBSSStruct = &pAd->ApCfg.MBSSID[v];
pMBSSStruct->WPAREKEY.ReKeyInterval = 0;
pMBSSStruct->WPAREKEY.ReKeyMethod = DISABLE_REKEY;
@@ -4107,7 +4143,7 @@ INT RTMPAPSetInformation(
else if (((pHSCtrl->HotSpotEnable) && (pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.AuthMode == Ndis802_11AuthModeOpen)) ||
((pEntry->WpaState == AS_PTKINITDONE) && (pEntry->GTKState = REKEY_ESTABLISHED)))
{
- printk("btm1\n");
+ DBGPRINT(RT_DEBUG_OFF, ("btm1\n"));
Send_BTM_Req(pAd,
req_data->peer_mac_addr,
req_data->btm_req,
@@ -4115,7 +4151,7 @@ INT RTMPAPSetInformation(
}
else
{
- printk("btm2\n");
+ DBGPRINT(RT_DEBUG_OFF, ("btm2\n"));
pEntry->IsBTMReqValid = TRUE;
os_alloc_mem(pEntry->ReqbtmData, (UCHAR **)&pEntry->ReqbtmData, sizeof(struct btm_req_data)+req_data->btm_req_len);
memcpy(pEntry->ReqbtmData, Buf, sizeof(struct btm_req_data)+req_data->btm_req_len);
@@ -4145,7 +4181,7 @@ INT RTMPAPSetInformation(
else if (((pHSCtrl->HotSpotEnable) && (pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.AuthMode == Ndis802_11AuthModeOpen)) ||
((pEntry->WpaState == AS_PTKINITDONE) && (pEntry->GTKState = REKEY_ESTABLISHED)))
{
- printk("wnm1\n");
+ DBGPRINT(RT_DEBUG_OFF, ("wnm1\n"));
Send_WNM_Notify_Req(pAd,
req_data->peer_mac_addr,
req_data->wnm_req,
@@ -4154,7 +4190,7 @@ INT RTMPAPSetInformation(
}
else
{
- printk("wnm2\n");
+ DBGPRINT(RT_DEBUG_OFF, ("wnm2\n"));
pEntry->IsWNMReqValid = TRUE;
os_alloc_mem(pEntry->ReqData, (UCHAR **)&pEntry->ReqData, sizeof(struct wnm_req_data)+req_data->wnm_req_len);
memcpy(pEntry->ReqData, Buf, sizeof(struct wnm_req_data)+req_data->wnm_req_len);
@@ -4217,7 +4253,7 @@ INT RTMPAPSetInformation(
memcpy((UCHAR *)pEntry->DscpException,
req_data->qosmap, pEntry->DscpExceptionCount);
}
- printk ("send QoS map frame: apidx=%d\n", pEntry->apidx);
+ DBGPRINT(RT_DEBUG_OFF, ("send QoS map frame: apidx=%d\n", pEntry->apidx));
Send_QOSMAP_Configure(pAd,
pEntry->Addr,
req_data->qosmap,
@@ -4287,7 +4323,7 @@ INT RTMPAPQueryInformation(
#ifdef APCLI_SUPPORT
#ifdef WPA_SUPPLICANT_SUPPORT
- UCHAR ifIndex;
+ INT ifIndex;
ULONG BssBufSize;
BOOLEAN apcliEn=FALSE;
INT i,Padding = 0;
@@ -4668,7 +4704,7 @@ INT RTMPAPQueryInformation(
pUICli = &pUI_table->Client[i];
NdisMoveMemory(pUICli, pPAdCli, sizeof(RT_P2P_CLIENT_ENTRY));
}
- printk("Query::OID_802_11_P2P_SCAN_LIST\n");
+ DBGPRINT(RT_DEBUG_OFF, ("Query::OID_802_11_P2P_SCAN_LIST\n"));
Status = copy_to_user(wrq->u.data.pointer, pUI_table, sizeof(RT_P2P_UI_TABLE));
DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_P2P_SCAN_LIST (Len=%d, Rule=%s)\n", sizeof(char),pAd->P2pCfg.GroupOpChannel));
os_free_mem(NULL, pUI_table);
@@ -4688,7 +4724,7 @@ INT RTMPAPQueryInformation(
case RT_OID_VERSION_INFO:
DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_VERSION_INFO \n"));
- wrq->u.data.length = strlen(AP_DRIVER_VERSION);
+ wrq->u.data.length = (UINT16)strlen(AP_DRIVER_VERSION);
snprintf(&driverVersion[0], sizeof(driverVersion), "%s", AP_DRIVER_VERSION);
driverVersion[wrq->u.data.length] = '\0';
if (copy_to_user(wrq->u.data.pointer, &driverVersion, wrq->u.data.length))
@@ -5900,7 +5936,7 @@ INT RTMPAPQueryInformation(
PUCHAR pType;
struct security_type *SecurityType;
//DBGPRINT(RT_DEBUG_TRACE, ("Query:OID_802_11_SECURITY_TYPE\n"));
- printk("Query:OID_802_11_SECURITY_TYPE\n");
+ DBGPRINT(RT_DEBUG_OFF, ("Query:OID_802_11_SECURITY_TYPE\n"));
os_alloc_mem(NULL, &pType, sizeof(*SecurityType));
SecurityType = (struct security_type *)pType;
pMbss = &pAd->ApCfg.MBSSID[pObj->ioctl_if];
@@ -5954,16 +5990,16 @@ INT RTMPAPQueryInformation(
Status = copy_from_user(buf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct bbp32_info *)buf;
- printk("Info->bbp_start = %x\n", Info->bbp_start);
- printk("Info->bbp_end = %x\n", Info->bbp_end);
+ DBGPRINT(RT_DEBUG_OFF, ("Info->bbp_start = %x\n", Info->bbp_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->bbp_end = %x\n", Info->bbp_end));
for (Index = Info->bbp_start; Index <= Info->bbp_end; Index += 4)
{
UINT32 Value;
RTMP_BBP_IO_READ32(pAd, Index + pAd->chipCap.BBPMemMapOffset, &Value);
- printk("Offset = %x\n", Index + pAd->chipCap.BBPMemMapOffset);
- printk("Value = %x\n", Value);
+ DBGPRINT(RT_DEBUG_OFF, ("Offset = %x\n", Index + pAd->chipCap.BBPMemMapOffset));
+ DBGPRINT(RT_DEBUG_OFF, ("Value = %x\n", Value));
NdisMoveMemory(Info->bbp_value + j, &Value, 4);
j++;
}
@@ -5998,17 +6034,17 @@ INT RTMPAPQueryInformation(
Status = copy_from_user(buf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct rf_bank_info *)buf;
- printk("Info->rf_bank = %x\n", Info->rf_bank);
- printk("Info->rf_start = %x\n", Info->rf_start);
- printk("Info->rf_end = %x\n", Info->rf_end);
+ DBGPRINT(RT_DEBUG_OFF, ("Info->rf_bank = %x\n", Info->rf_bank));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->rf_start = %x\n", Info->rf_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->rf_end = %x\n", Info->rf_end));
for (Index = Info->rf_start; Index <= Info->rf_end; Index ++)
{
UINT8 Value;
rlt_rf_read(pAd, Info->rf_bank, Index, &Value);
- printk("Offset = %x\n", Index);
- printk("Value = %x\n", Value);
+ DBGPRINT(RT_DEBUG_OFF, ("Offset = %x\n", Index));
+ DBGPRINT(RT_DEBUG_OFF, ("Value = %x\n", Value));
NdisMoveMemory(Info->rf_value + j, &Value, 1);
j++;
}
@@ -6078,9 +6114,11 @@ INT RTMPAPQueryInformation(
Status = copy_from_user(buf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct mem_map_info *)buf;
- printk("Info->base = %x\n", Info->base);
- printk("Info->mem_map_start = %x\n", Info->mem_map_start);
- printk("Info->mem_map_end = %x\n", Info->mem_map_end);
+ DBGPRINT(RT_DEBUG_OFF, ("Info->base = %x\n", Info->base));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->mem_map_start = %x\n"
+ , Info->mem_map_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->mem_map_end = %x\n"
+ , Info->mem_map_end));
for (Index = Info->mem_map_start; Index <= Info->mem_map_end; Index += 4)
@@ -6115,8 +6153,8 @@ INT RTMPAPQueryInformation(
Status = copy_from_user(buf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct e2p_info *)buf;
- printk("Info->e2p_start = %x\n", Info->e2p_start);
- printk("Info->e2p_end = %x\n", Info->e2p_end);
+ DBGPRINT(RT_DEBUG_OFF, ("Info->e2p_start = %x\n", Info->e2p_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->e2p_end = %x\n", Info->e2p_end));
for (Index = Info->e2p_start; Index <= Info->e2p_end; Index += 2)
@@ -6151,16 +6189,17 @@ INT RTMPAPQueryInformation(
Status = copy_from_user(buf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct mac_info *)buf;
- printk("Info->mac_start = %x\n", Info->mac_start);
- printk("Info->mac_end = %x\n", Info->mac_end);
+ DBGPRINT(RT_DEBUG_OFF, ("Info->mac_start = %x\n", Info->mac_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->mac_end = %x\n", Info->mac_end));
for (Index = Info->mac_start; Index <= Info->mac_end; Index += 4)
{
UINT32 Value;
RTMP_IO_READ32(pAd, Index + pAd->chipCap.MacMemMapOffset, &Value);
- printk("Offset = %x\n", Index + pAd->chipCap.MacMemMapOffset);
- printk("Value = %x\n", Value);
+ DBGPRINT(RT_DEBUG_OFF, ("Offset = %x\n",
+ Index + pAd->chipCap.MacMemMapOffset));
+ DBGPRINT(RT_DEBUG_OFF, ("Value = %x\n", Value));
NdisMoveMemory(Info->mac_value + j, &Value, 4);
j++;
}
@@ -6203,7 +6242,7 @@ INT RTMPAPQueryInformation(
Info = (struct rf_bank_info *)buf;
Offset = pAd->chipCap.RFBankOffset;
- printk("pAd->chipCap.RFBankNum = %d\n", pAd->chipCap.RFBankNum);
+ DBGPRINT(RT_DEBUG_OFF, ("pAd->chipCap.RFBankNum = %d\n", pAd->chipCap.RFBankNum));
for (Index = 0; Index < pAd->chipCap.RFBankNum; Index++)
{
@@ -6578,7 +6617,7 @@ INT Set_TxRate_Proc(
NdisZeroMemory(pAd->ApCfg.MBSSID[pObj->ioctl_if].DesiredRates, MAX_LEN_OF_SUPPORTED_RATES);
- pAd->ApCfg.MBSSID[pObj->ioctl_if].DesiredRatesIndex = simple_strtol(arg, 0, 10);
+ pAd->ApCfg.MBSSID[pObj->ioctl_if].DesiredRatesIndex = (UCHAR)simple_strtol(arg, 0, 10);
/* todo RTMPBuildDesireRate(pAd, pObj->ioctl_if, pAd->ApCfg.MBSSID[pObj->ioctl_if].DesiredRatesIndex); */
/*todo MlmeUpdateTxRates(pAd); */
@@ -6662,10 +6701,10 @@ INT Set_DtimPeriod_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- USHORT DtimPeriod;
+ UCHAR DtimPeriod;
INT success = FALSE;
- DtimPeriod = (USHORT) simple_strtol(arg, 0, 10);
+ DtimPeriod = (UCHAR) simple_strtol(arg, 0, 10);
if((DtimPeriod >= 1) && (DtimPeriod <= 255))
{
pAd->ApCfg.DtimPeriod = DtimPeriod;
@@ -6690,9 +6729,9 @@ INT Set_RfRead_Proc(
for (i = 0; i < 32; i++)
{
RT30xxReadRFRegister(pAdapter, i, &Value);
- printk("%02x ", Value);
+ DBGPRINT(RT_DEBUG_OFF, ("%02x ", Value));
if (((i + 1) % 4) == 0)
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
return TRUE;
}
@@ -6775,7 +6814,7 @@ INT Set_AP_WmmCapable_Proc(
BOOLEAN bWmmCapable;
POS_COOKIE pObj= (POS_COOKIE)pAd->OS_Cookie;
- bWmmCapable = simple_strtol(arg, 0, 10);
+ bWmmCapable = (BOOLEAN)simple_strtol(arg, 0, 10);
if (bWmmCapable == 1)
pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.bWmmCapable = TRUE;
@@ -6906,7 +6945,7 @@ INT Set_HideSSID_Proc(
BOOLEAN bHideSsid;
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
- bHideSsid = simple_strtol(arg, 0, 10);
+ bHideSsid = (BOOLEAN)simple_strtol(arg, 0, 10);
if (bHideSsid == 1)
bHideSsid = TRUE;
@@ -6947,7 +6986,7 @@ INT Set_VLANID_Proc(
wdev = &pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev;
- wdev->VLAN_VID = simple_strtol(arg, 0, 10);
+ wdev->VLAN_VID = (USHORT)simple_strtol(arg, 0, 10);
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_VLANID_Proc::(VLAN_VID=%d)\n",
pObj->ioctl_if, wdev->VLAN_VID));
@@ -6969,7 +7008,7 @@ INT Set_VLANPriority_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
struct wifi_dev *wdev = &pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev;
- wdev->VLAN_Priority = simple_strtol(arg, 0, 10);
+ wdev->VLAN_Priority = (USHORT)simple_strtol(arg, 0, 10);
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_VLANPriority_Proc::(VLAN_Priority=%d)\n", pObj->ioctl_if, wdev->VLAN_Priority));
@@ -6992,7 +7031,7 @@ INT Set_VLAN_TAG_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
struct wifi_dev *wdev;
- bVLAN_Tag = simple_strtol(arg, 0, 10);
+ bVLAN_Tag = (BOOLEAN)simple_strtol(arg, 0, 10);
if (bVLAN_Tag == 1)
bVLAN_Tag = TRUE;
@@ -7286,7 +7325,7 @@ INT Set_AP_ASSOC_REQ_RSSI_THRESHOLD(
UCHAR apidx = pObj->ioctl_if;
UINT j;
CHAR rssi;
- rssi = simple_strtol(arg, 0, 10);
+ rssi = (CHAR)simple_strtol(arg, 0, 10);
if (rssi == 0)
{
@@ -7329,7 +7368,7 @@ INT Set_AP_KickStaRssiLow_Proc(
UCHAR apidx = pObj->ioctl_if;
UINT j;
CHAR rssi;
- rssi = simple_strtol(arg, 0, 10);
+ rssi = (CHAR)simple_strtol(arg, 0, 10);
if (rssi == 0)
{
@@ -7730,14 +7769,14 @@ INT Set_AP_Key1_Proc(
IN RTMP_STRING *arg)
{
POS_COOKIE pObj;
- UCHAR apidx;
+ UCHAR apidx, keyidx = 0;
CIPHER_KEY *pSharedKey;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
- apidx = pObj->ioctl_if;
- pSharedKey = &pAd->SharedKey[apidx][0];
- retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, 0);
+ apidx = (UCHAR)pObj->ioctl_if;
+ pSharedKey = &pAd->SharedKey[apidx][keyidx];
+ retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, keyidx);
if (retVal == TRUE)
{
/* Set keys (into ASIC) */
@@ -7745,7 +7784,7 @@ INT Set_AP_Key1_Proc(
; /* not support */
else /* Old WEP stuff */
{
- AsicAddSharedKeyEntry(pAd, apidx, 0, pSharedKey);
+ AsicAddSharedKeyEntry(pAd, apidx, keyidx, pSharedKey);
}
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_Key1_Proc::(Key1=%s) success!\n", apidx, arg));
}
@@ -7767,14 +7806,14 @@ INT Set_AP_Key2_Proc(
IN RTMP_STRING *arg)
{
POS_COOKIE pObj;
- UCHAR apidx;
+ UCHAR apidx, keyidx = 1;
CIPHER_KEY *pSharedKey;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
- apidx = pObj->ioctl_if;
- pSharedKey = &pAd->SharedKey[apidx][1];
- retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, 1);
+ apidx = (UCHAR)pObj->ioctl_if;
+ pSharedKey = &pAd->SharedKey[apidx][keyidx];
+ retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, keyidx);
if (retVal == TRUE)
{
/* Set keys (into ASIC) */
@@ -7782,7 +7821,7 @@ INT Set_AP_Key2_Proc(
; /* not support */
else /* Old WEP stuff */
{
- AsicAddSharedKeyEntry(pAd, apidx, 1, pSharedKey);
+ AsicAddSharedKeyEntry(pAd, apidx, keyidx, pSharedKey);
}
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_Key2_Proc::(Key2=%s) success!\n", apidx, arg));
}
@@ -7804,14 +7843,14 @@ INT Set_AP_Key3_Proc(
IN RTMP_STRING *arg)
{
POS_COOKIE pObj;
- UCHAR apidx;
+ UCHAR apidx, keyidx = 2;
CIPHER_KEY *pSharedKey;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
- apidx = pObj->ioctl_if;
- pSharedKey = &pAd->SharedKey[apidx][2];
- retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, 2);
+ apidx = (UCHAR)pObj->ioctl_if;
+ pSharedKey = &pAd->SharedKey[apidx][keyidx];
+ retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, keyidx);
if (retVal == TRUE)
{
/* Set keys (into ASIC) */
@@ -7819,7 +7858,7 @@ INT Set_AP_Key3_Proc(
; /* not support */
else /* Old WEP stuff */
{
- AsicAddSharedKeyEntry(pAd, apidx, 2, pSharedKey);
+ AsicAddSharedKeyEntry(pAd, apidx, keyidx, pSharedKey);
}
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_Key3_Proc::(Key3=%s) success!\n", apidx, arg));
}
@@ -7842,14 +7881,14 @@ INT Set_AP_Key4_Proc(
{
POS_COOKIE pObj;
- UCHAR apidx;
+ UCHAR apidx, keyidx = 3;
CIPHER_KEY *pSharedKey;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
- apidx = pObj->ioctl_if;
- pSharedKey = &pAd->SharedKey[apidx][3];
- retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, 3);
+ apidx = (UCHAR)pObj->ioctl_if;
+ pSharedKey = &pAd->SharedKey[apidx][keyidx];
+ retVal = RT_CfgSetWepKey(pAd, arg, pSharedKey, keyidx);
if (retVal == TRUE)
{
/* Set keys (into ASIC) */
@@ -7857,7 +7896,7 @@ INT Set_AP_Key4_Proc(
; /* not support */
else /* Old WEP stuff */
{
- AsicAddSharedKeyEntry(pAd, apidx, 3, pSharedKey);
+ AsicAddSharedKeyEntry(pAd, apidx, keyidx, pSharedKey);
}
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_Key4_Proc::(Key4=%s) success!\n", apidx, arg));
}
@@ -7898,7 +7937,7 @@ INT Set_AccessPolicy_Proc(
}
/* check if the change in ACL affects any existent association */
- ApUpdateAccessControlList(pAd, pObj->ioctl_if);
+ ApUpdateAccessControlList(pAd, (UCHAR)pObj->ioctl_if);
DBGPRINT(RT_DEBUG_TRACE, ("IF(ra%d) Set_AccessPolicy_Proc::(AccessPolicy=%ld)\n", pObj->ioctl_if, pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Policy));
return TRUE;
@@ -7995,7 +8034,7 @@ INT Set_AccessControlList_Proc(
#endif
/* Check if the change in ACL affects any existent association. */
- ApUpdateAccessControlList(pAd, pObj->ioctl_if);
+ ApUpdateAccessControlList(pAd, (UCHAR)pObj->ioctl_if);
DBGPRINT(RT_DEBUG_TRACE, ("Set::Set_AccessControlList_Proc(Policy=%ld, Entry#=%ld)\n",
pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Policy, pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num));
@@ -8003,10 +8042,11 @@ INT Set_AccessControlList_Proc(
DBGPRINT(RT_DEBUG_TRACE, ("=============== Entry ===============\n"));
for (i=0; i<pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num; i++)
{
- printk("Entry #%02d: ", i+1);
+ DBGPRINT(RT_DEBUG_OFF, ("Entry #%02d: ", i+1));
for (j=0; j<6; j++)
- printk("%02X ", pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Entry[i].Addr[j]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X ",
+ pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Entry[i].Addr[j]));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#endif
return TRUE;
@@ -8113,7 +8153,7 @@ INT Set_ACLAddEntry_Proc(
NdisMoveMemory(&pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList, pacl, sizeof(RT_802_11_ACL));
/* check if the change in ACL affects any existent association */
- ApUpdateAccessControlList(pAd, pObj->ioctl_if);
+ ApUpdateAccessControlList(pAd, (UCHAR)pObj->ioctl_if);
DBGPRINT(RT_DEBUG_TRACE, ("Set::%s(Policy=%ld, Entry#=%ld)\n",
__FUNCTION__ , pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Policy, pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num));
@@ -8121,10 +8161,11 @@ INT Set_ACLAddEntry_Proc(
DBGPRINT(RT_DEBUG_TRACE, ("=============== Entry ===============\n"));
for (i=0; i<pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num; i++)
{
- printk("Entry #%02d: ", i+1);
+ DBGPRINT(RT_DEBUG_OFF, ("Entry #%02d: ", i+1));
for (j=0; j<MAC_ADDR_LEN; j++)
- printk("%02X ", pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Entry[i].Addr[j]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X ",
+ pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Entry[i].Addr[j]));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#endif
@@ -8231,7 +8272,7 @@ INT Set_ACLDelEntry_Proc(
ASSERT(acl.Num >= pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num);
/* check if the change in ACL affects any existent association */
- ApUpdateAccessControlList(pAd, pObj->ioctl_if);
+ ApUpdateAccessControlList(pAd, (UCHAR)pObj->ioctl_if);
DBGPRINT(RT_DEBUG_TRACE, ("Set::%s(Policy=%ld, Entry#=%ld)\n",
__FUNCTION__ , pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Policy, pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num));
@@ -8239,10 +8280,11 @@ INT Set_ACLDelEntry_Proc(
DBGPRINT(RT_DEBUG_TRACE, ("=============== Entry ===============\n"));
for (i=0; i<pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Num; i++)
{
- printk("Entry #%02d: ", i+1);
+ DBGPRINT(RT_DEBUG_OFF, ("Entry #%02d: ", i+1));
for (j=0; j<MAC_ADDR_LEN; j++)
- printk("%02X ", pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Entry[i].Addr[j]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X ",
+ pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList.Entry[i].Addr[j]));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#endif
return TRUE;
@@ -8272,11 +8314,11 @@ INT Set_ACLShowAll_Proc(
IN RTMP_STRING *arg)
{
RT_802_11_ACL acl;
- BOOLEAN bDumpAll=FALSE;
+ BOOLEAN bDumpAll = FALSE;
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
INT i, j;
- bDumpAll = simple_strtol(arg, 0, 10);
+ bDumpAll = (BOOLEAN)simple_strtol(arg, 0, 10);
if (bDumpAll == 1)
{
@@ -8307,18 +8349,18 @@ INT Set_ACLShowAll_Proc(
ASSERT(((bDumpAll == 1) && (acl.Num > 0)));
/* Show the corresponding policy first. */
- printk("=============== Access Control Policy ===============\n");
- printk("Policy is %ld : ", acl.Policy);
- printk("%s\n", pACL_PolicyMessage[acl.Policy]);
+ DBGPRINT(RT_DEBUG_OFF, ("=============== Access Control Policy ===============\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("Policy is %ld : ", acl.Policy));
+ DBGPRINT(RT_DEBUG_OFF, ("%s\n", pACL_PolicyMessage[acl.Policy]));
/* Dump the entry in the list one by one */
- printk("=============== Access Control List ===============\n");
+ DBGPRINT(RT_DEBUG_OFF, ("=============== Access Control List ===============\n"));
for (i=0; i<acl.Num; i++)
{
- printk("Entry #%02d: ", i+1);
+ DBGPRINT(RT_DEBUG_OFF, ("Entry #%02d: ", i+1));
for (j=0; j<MAC_ADDR_LEN; j++)
- printk("%02X ", acl.Entry[i].Addr[j]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X ", acl.Entry[i].Addr[j]));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
return TRUE;
@@ -8340,10 +8382,10 @@ INT Set_ACLClearAll_Proc(
{
/* RT_802_11_ACL acl; */
RT_802_11_ACL *pacl = NULL;
- BOOLEAN bClearAll=FALSE;
+ BOOLEAN bClearAll = FALSE;
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
- bClearAll = simple_strtol(arg, 0, 10);
+ bClearAll = (BOOLEAN)simple_strtol(arg, 0, 10);
if (bClearAll == 1)
{
@@ -8400,7 +8442,7 @@ INT Set_ACLClearAll_Proc(
NdisMoveMemory(&(pAd->ApCfg.MBSSID[pObj->ioctl_if].AccessControlList), pacl, sizeof(RT_802_11_ACL));
/* check if the change in ACL affects any existent association */
- ApUpdateAccessControlList(pAd, pObj->ioctl_if);
+ ApUpdateAccessControlList(pAd, (UCHAR)pObj->ioctl_if);
if (pacl != NULL)
os_free_mem(NULL, pacl);
@@ -8418,14 +8460,14 @@ static void _rtmp_hexdump(int level, const char *title, const UINT8 *buf,
size_t i;
if (level < RTDebugLevel)
return;
- printk("%s - hexdump(len=%lu):", title, (unsigned long) len);
+ DBGPRINT(RT_DEBUG_OFF, ("%s - hexdump(len=%lu):", title, (unsigned long) len));
if (show) {
for (i = 0; i < len; i++)
- printk(" %02x", buf[i]);
+ DBGPRINT(RT_DEBUG_OFF, (" %02x", buf[i]));
} else {
- printk(" [REMOVED]");
+ DBGPRINT(RT_DEBUG_OFF, (" [REMOVED]"));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
void rtmp_hexdump(int level, const char *title, const UINT8 *buf, size_t len)
@@ -8546,7 +8588,7 @@ INT Set_RadioOn_Proc(
{
UCHAR radio;
- radio = simple_strtol(arg, 0, 10);
+ radio = (UCHAR)simple_strtol(arg, 0, 10);
pAd->iwpriv_command = FALSE;
#ifdef MT_MAC
@@ -8713,7 +8755,7 @@ INT Set_AutoChannelSelCheckTime_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT Show_DriverInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
-// DBGPRINT(RT_DEBUG_OFF, ("driver version: %s (%s %s) .\n", AP_DRIVER_VERSION, __DATE__, __TIME__));
+ DBGPRINT(RT_DEBUG_OFF, ("driver version: %s.\n", AP_DRIVER_VERSION));
#ifdef CONFIG_ANDES_SUPPORT
if (pAd->chipCap.MCUType == ANDES) {
@@ -8781,21 +8823,21 @@ INT Show_StaCount_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT i = 0, bss_idx=0;
BSS_STRUCT *pMbss = NULL;
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
for (bss_idx=0; bss_idx < pAd->ApCfg.BssidNum; bss_idx++)
{
pMbss = &pAd->ApCfg.MBSSID[bss_idx];
- printk("BSS[%02d]: %5d\n", bss_idx, pMbss->StaCount);
+ DBGPRINT(RT_DEBUG_OFF, ("BSS[%02d]: %5d\n", bss_idx, pMbss->StaCount));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#ifdef DOT11_N_SUPPORT
- printk("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#endif /* DOT11_N_SUPPORT */
- printk("\n%-19s%-4s%-12s%-12s%-12s%-12s\n",
- "MAC", "AID","TxPackets","RxPackets","TxBytes","RxBytes");
+ DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-4s%-12s%-12s%-12s%-12s\n"
+ , "MAC", "AID", "TxPackets", "RxPackets", "TxBytes", "RxBytes"));
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
@@ -8803,15 +8845,15 @@ INT Show_StaCount_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if ((IS_ENTRY_CLIENT(pEntry) || IS_ENTRY_APCLI(pEntry))
&& (pEntry->Sst == SST_ASSOC))
{
- printk("%02X:%02X:%02X:%02X:%02X:%02X ",
- pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
- pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
- printk("%-4d", (int)pEntry->Aid);
- printk("%-12ld",(ULONG)pEntry->TxPackets.QuadPart);
- printk("%-12ld", (ULONG)pEntry->RxPackets.QuadPart);
- printk("%-12ld", (ULONG)pEntry->TxBytes);
- printk("%-12ld", (ULONG)pEntry->RxBytes);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X "
+ , pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2]
+ , pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("%-12ld", (ULONG)pEntry->TxPackets.QuadPart));
+ DBGPRINT(RT_DEBUG_OFF, ("%-12ld", (ULONG)pEntry->RxPackets.QuadPart));
+ DBGPRINT(RT_DEBUG_OFF, ("%-12ld", (ULONG)pEntry->TxBytes));
+ DBGPRINT(RT_DEBUG_OFF, ("%-12ld", (ULONG)pEntry->RxBytes));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
@@ -8825,34 +8867,34 @@ INT Show_StaSecurityInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UCHAR apidx;
struct wifi_dev *wdev;
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++)
{
wdev = &pAd->ApCfg.MBSSID[apidx].wdev;
- printk(" BSS(%d) AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s, WPAMixPairCipher(0x%02X)\n",
- apidx,
- wdev->AuthMode, GetAuthMode(wdev->AuthMode),
- wdev->WepStatus, GetEncryptType(wdev->WepStatus),
- wdev->GroupKeyWepStatus, GetEncryptType(wdev->GroupKeyWepStatus),
- wdev->WpaMixPairCipher);
+ DBGPRINT(RT_DEBUG_OFF, (" BSS(%d) AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s, WPAMixPairCipher(0x%02X)\n"
+ , apidx, wdev->AuthMode, GetAuthMode((CHAR)wdev->AuthMode)
+ , wdev->WepStatus, GetEncryptType((CHAR)wdev->WepStatus)
+ , wdev->GroupKeyWepStatus
+ , GetEncryptType((CHAR)wdev->GroupKeyWepStatus)
+ , wdev->WpaMixPairCipher));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
- printk("\n%-19s%-4s%-4s%-15s%-12s\n",
- "MAC", "AID", "BSS", "Auth", "Encrypt");
+ DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-4s%-4s%-15s%-12s\n",
+ "MAC", "AID", "BSS", "Auth", "Encrypt"));
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
if (pEntry && IS_ENTRY_CLIENT(pEntry) && pEntry->Sst == SST_ASSOC)
{
- printk("%02X:%02X:%02X:%02X:%02X:%02X ",
- PRINT_MAC(pEntry->Addr));
- printk("%-4d", (int)pEntry->Aid);
- printk("%-4d", (int)pEntry->func_tb_idx);
- printk("%-15s", GetAuthMode(pEntry->AuthMode));
- printk("%-12s", GetEncryptType(pEntry->WepStatus));
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X ",
+ PRINT_MAC(pEntry->Addr)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->func_tb_idx));
+ DBGPRINT(RT_DEBUG_OFF, ("%-15s", GetAuthMode((CHAR)pEntry->AuthMode)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-12s", GetEncryptType((CHAR)pEntry->WepStatus)));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
@@ -8933,16 +8975,17 @@ INT Set_BDInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
RTMP_MGMT_RING *pMgmtRing = &pAd->MgmtRing;
RTMP_RX_RING *pRxRing = &pAd->RxRing[0];
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#ifdef DOT11_N_SUPPORT
- printk("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
+ DBGPRINT(RT_DEBUG_OFF, ("HT Operating Mode : %d\n",
+ pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode));
#endif /* DOT11_N_SUPPORT */
- printk("\n");
- printk("[Tx]: SwFreeIdx=%d, CpuIdx=%d, DmaIdx=%d\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("[Tx]: SwFreeIdx=%d, CpuIdx=%d, DmaIdx=%d\n",
pAd->TxRing[QueIdx].TxSwFreeIdx,
pAd->TxRing[QueIdx].TxCpuIdx,
- pAd->TxRing[QueIdx].TxDmaIdx);
+ pAd->TxRing[QueIdx].TxDmaIdx));
#ifdef RT_BIG_ENDIAN
pDestTxD = (TXD_STRUC *) pTxRing->Cell[pAd->TxRing[QueIdx].TxSwFreeIdx].AllocVa;
@@ -8953,7 +8996,7 @@ INT Set_BDInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pTxD = (TXD_STRUC *) pTxRing->Cell[pAd->TxRing[QueIdx].TxSwFreeIdx].AllocVa;
#endif /* RT_BIG_ENDIAN */
hex_dump("Tx SwFreeIdx Descriptor", (char *)pTxD, 16);
- printk("pTxD->DMADONE = %x\n", pTxD->DMADONE);
+ DBGPRINT(RT_DEBUG_OFF, ("pTxD->DMADONE = %x\n", pTxD->DMADONE));
#ifdef RT_BIG_ENDIAN
pDestTxD = (TXD_STRUC *) pTxRing->Cell[pAd->TxRing[QueIdx].TxCpuIdx].AllocVa;
@@ -8964,7 +9007,7 @@ INT Set_BDInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pTxD = (TXD_STRUC *) pTxRing->Cell[pAd->TxRing[QueIdx].TxCpuIdx].AllocVa;
#endif /* RT_BIG_ENDIAN */
hex_dump("Tx CpuIdx Descriptor", (char *)pTxD, 16);
- printk("pTxD->DMADONE = %x\n", pTxD->DMADONE);
+ DBGPRINT(RT_DEBUG_OFF, ("pTxD->DMADONE = %x\n", pTxD->DMADONE));
#ifdef RT_BIG_ENDIAN
pDestTxD = (TXD_STRUC *) pTxRing->Cell[pAd->TxRing[QueIdx].TxDmaIdx].AllocVa;
@@ -8975,12 +9018,12 @@ INT Set_BDInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pTxD = (TXD_STRUC *) pTxRing->Cell[pAd->TxRing[QueIdx].TxDmaIdx].AllocVa;
#endif /* RT_BIG_ENDIAN */
hex_dump("Tx DmaIdx Descriptor", (char *)pTxD, 16);
- printk("pTxD->DMADONE = %x\n", pTxD->DMADONE);
+ DBGPRINT(RT_DEBUG_OFF, ("pTxD->DMADONE = %x\n", pTxD->DMADONE));
- printk("[Mgmt]: SwFreeIdx=%d, CpuIdx=%d, DmaIdx=%d\n",
+ DBGPRINT(RT_DEBUG_OFF, ("[Mgmt]: SwFreeIdx=%d, CpuIdx=%d, DmaIdx=%d\n",
pAd->MgmtRing.TxSwFreeIdx,
pAd->MgmtRing.TxCpuIdx,
- pAd->MgmtRing.TxDmaIdx);
+ pAd->MgmtRing.TxDmaIdx));
#ifdef RT_BIG_ENDIAN
pDestTxD = (TXD_STRUC *) pMgmtRing->Cell[pAd->MgmtRing.TxSwFreeIdx].AllocVa;
@@ -9011,11 +9054,11 @@ INT Set_BDInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pTxD = (TXD_STRUC *) pMgmtRing->Cell[pAd->MgmtRing.TxDmaIdx].AllocVa;
#endif /* RT_BIG_ENDIAN */
hex_dump("Mgmt DmaIdx Descriptor", (char *)pTxD, 16);
- printk("\n");
- printk("[Rx]: SwRedIdx=%d, CpuIdx=%d, DmaIdx=%d\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("[Rx]: SwRedIdx=%d, CpuIdx=%d, DmaIdx=%d\n",
pAd->RxRing[0].RxSwReadIdx,
pAd->RxRing[0].RxCpuIdx,
- pAd->RxRing[0].RxDmaIdx);
+ pAd->RxRing[0].RxDmaIdx));
#ifdef RT_BIG_ENDIAN
pDestRxD = (RXD_STRUC *) pRxRing->Cell[pAd->RxRing[0].RxSwReadIdx].AllocVa;
@@ -9046,32 +9089,33 @@ INT Set_BDInfo_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pRxD = (RXD_STRUC *) pRxRing->Cell[pAd->RxRing[0].RxDmaIdx].AllocVa;
#endif /* RT_BIG_ENDIAN */
hex_dump("RX RxDmaIdx Descritpro", (char *)pRxD, 16);
- printk("\n%-19s%-4s%-4s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s\n",
- "MAC", "AID", "PSM", "RSSI0", "RSSI1", "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC");
+ DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-4s%-4s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s\n"
+ , "MAC", "AID", "PSM", "RSSI0", "RSSI1", "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC"));
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
if (IS_ENTRY_CLIENT(pEntry) && (pEntry->Sst == SST_ASSOC))
{
- printk("%02X:%02X:%02X:%02X:%02X:%02X ",
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X ",
pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
- pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
- printk("%-4d", (int)pEntry->Aid);
- printk("%-4d", (int)pEntry->PsMode);
- printk("%-7d", pEntry->RssiSample.AvgRssi[0]);
- printk("%-7d", pEntry->RssiSample.AvgRssi[1]);
- printk("%-7d", pEntry->RssiSample.AvgRssi[2]);
-
-
- printk("%-10s", get_phymode_str(pEntry->HTPhyMode.field.MODE));
- printk("%-6s", get_bw_str(pEntry->HTPhyMode.field.BW));
- printk("%-6d", pEntry->HTPhyMode.field.MCS);
- printk("%-6d", pEntry->HTPhyMode.field.ShortGI);
- printk("%-6d", pEntry->HTPhyMode.field.STBC);
- printk("%-10d, %d, %d\n", pEntry->FIFOCount, pEntry->DebugTxCount, pEntry->DebugTxCount-pEntry->FIFOCount);
-
- printk("\n");
+ pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->PsMode));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[0]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[1]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[2]));
+
+
+ DBGPRINT(RT_DEBUG_OFF, ("%-10s", get_phymode_str(pEntry->HTPhyMode.field.MODE)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6s", get_bw_str(pEntry->HTPhyMode.field.BW)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.MCS));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.ShortGI));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.STBC));
+ DBGPRINT(RT_DEBUG_OFF, ("%-10d, %d, %d\n", pEntry->FIFOCount, pEntry->DebugTxCount
+ , pEntry->DebugTxCount-pEntry->FIFOCount));
+
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
@@ -9120,127 +9164,128 @@ INT Show_Diag_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
start = pDiag->ArrayStartIdx;
stop = pDiag->ArrayCurIdx;
- printk("Start=%d, stop=%d!\n\n", start, stop);
- printk(" %-12s", "Time(Sec)");
+ DBGPRINT(RT_DEBUG_OFF, ("Start=%d, stop=%d!\n\n", start, stop));
+ DBGPRINT(RT_DEBUG_OFF, (" %-12s", "Time(Sec)"));
for(i=1; i< DIAGNOSE_TIME; i++)
{
- printk("%-7d", i);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", i));
}
- printk("\n -------------------------------------------------------------------------------\n");
- printk("Tx Info:\n");
- printk(" %-12s", "TxDataCnt\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n -------------------------------------------------------------------------------\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("Tx Info:\n"));
+ DBGPRINT(RT_DEBUG_OFF, (" %-12s", "TxDataCnt\n"));
for (que_idx = 0; que_idx < WMM_NUM_OF_AC; que_idx++) {
- printk("\tQueue[%d]:", que_idx);
+ DBGPRINT(RT_DEBUG_OFF, ("\tQueue[%d]:", que_idx));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].TxDataCnt[que_idx]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxDataCnt[que_idx]));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
- printk("\n %-12s", "TxFailCnt");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s", "TxFailCnt"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].TxFailCnt);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxFailCnt));
}
#ifdef DBG_TX_AGG_CNT
- printk("\n %-12s", "TxAggCnt");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s", "TxAggCnt"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].TxAggCnt);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxAggCnt));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#endif /* DBG_TX_AGG_CNT */
#ifdef DBG_TXQ_DEPTH
- printk("DeQueue Info:\n");
+ DBGPRINT(RT_DEBUG_OFF, ("DeQueue Info:\n"));
- printk("\n %-12s\n", "DeQueueFunc Called Distribution");
- printk("\t");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "DeQueueFunc Called Distribution"));
+ DBGPRINT(RT_DEBUG_OFF, ("\t"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-8d", pDiag->diag_info[i].deq_called);
+ DBGPRINT(RT_DEBUG_OFF, ("%-8d", pDiag->diag_info[i].deq_called));
- printk("\n %-12s\n", "DeQueueRound(Per-Call) Distribution");
- printk("\t");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "DeQueueRound(Per-Call) Distribution"));
+ DBGPRINT(RT_DEBUG_OFF, ("\t"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-8d", pDiag->diag_info[i].deq_round);
+ DBGPRINT(RT_DEBUG_OFF, ("%-8d", pDiag->diag_info[i].deq_round));
- printk("\n %-12s\n", "DeQueueCount(Per-Round) Distribution");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "DeQueueCount(Per-Round) Distribution"));
for (SwQNumLevel = 0 ; SwQNumLevel < 9; SwQNumLevel++)
{
if (SwQNumLevel == 8)
- printk("\t>%-5d", SwQNumLevel);
+ DBGPRINT(RT_DEBUG_OFF, ("\t>%-5d", SwQNumLevel));
else
- printk("\t%-6d", SwQNumLevel);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", SwQNumLevel));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-7d", pDiag->diag_info[i].deq_cnt[SwQNumLevel]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].deq_cnt[SwQNumLevel]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
- printk("\n %-12s%d", "Sw-Queued TxSwQCnt for WCID ", pDiag->wcid);
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s%d", "Sw-Queued TxSwQCnt for WCID ", pDiag->wcid));
for (que_idx = 0; que_idx < WMM_NUM_OF_AC; que_idx++) {
- printk("\n %s[%d]\n", "Queue", que_idx);
+ DBGPRINT(RT_DEBUG_OFF, ("\n %s[%d]\n", "Queue", que_idx));
for (SwQNumLevel = 0 ; SwQNumLevel < 9; SwQNumLevel++)
{
if (SwQNumLevel == 8)
- printk("\t>%-5d", SwQNumLevel);
+ DBGPRINT(RT_DEBUG_OFF, ("\t>%-5d", SwQNumLevel));
else
- printk("\t%-6d", SwQNumLevel);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", SwQNumLevel));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-7d", pDiag->diag_info[i].TxSWQueCnt[que_idx][SwQNumLevel]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxSWQueCnt[que_idx][SwQNumLevel]));
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
- printk(" %-12s\n", "TxEnQFailCnt");
+ DBGPRINT(RT_DEBUG_OFF, (" %-12s\n", "TxEnQFailCnt"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("\t%-7d", pDiag->diag_info[i].enq_fall_cnt[que_idx]);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-7d", pDiag->diag_info[i].enq_fall_cnt[que_idx]));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
- printk("\n %s\n", "DeQueFailedCnt:Reason NotTxResource");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %s\n", "DeQueFailedCnt:Reason NotTxResource"));
for (que_idx = 0; que_idx < WMM_NUM_OF_AC; que_idx++) {
- printk("\n %s[%d]:", "Queue", que_idx);
+ DBGPRINT(RT_DEBUG_OFF, ("\n %s[%d]:", "Queue", que_idx));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("\t%-7d", pDiag->diag_info[i].deq_fail_no_resource_cnt[que_idx]);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-7d", pDiag->diag_info[i].deq_fail_no_resource_cnt[que_idx]));
}
#endif /* DBG_TXQ_DEPTH */
#ifdef DBG_TX_RING_DEPTH
- printk("\n %-12s\n", "DMA-Queued TxDescCnt");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "DMA-Queued TxDescCnt"));
for (que_idx = 0; que_idx < WMM_NUM_OF_AC; que_idx++) {
- printk("\n Queue[%d]\n", que_idx);
+ DBGPRINT(RT_DEBUG_OFF, ("\n Queue[%d]\n", que_idx);
for(TxDescNumLevel = 0; TxDescNumLevel < 16; TxDescNumLevel++)
{
if (TxDescNumLevel == 15)
- printk("\t>%-5d", TxDescNumLevel);
+ DBGPRINT(RT_DEBUG_OFF, ("\t>%-5d", TxDescNumLevel));
else
- printk("\t%-6d", TxDescNumLevel);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", TxDescNumLevel));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-7d", pDiag->diag_info[i].TxDescCnt[que_idx][TxDescNumLevel]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxDescCnt[que_idx][TxDescNumLevel]));
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
#endif /* DBG_TX_RING_DEPTH */
#ifdef MT_MAC
#ifdef DBG_PSE_DEPTH
- printk("\n %-12s\n", "PSE-Queued TxPageCnt in unit of Packets (mod 13)");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n",
+ "PSE-Queued TxPageCnt in unit of Packets (mod 13)"));
{
UCHAR pg_level;
for(pg_level = 0; pg_level < 50; pg_level++)
{
if (pg_level == 49)
- printk("\t>%-5d", pg_level);
+ DBGPRINT(RT_DEBUG_OFF, ("\t>%-5d", pg_level));
else
- printk("\t%-6d", pg_level);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", pg_level));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-7d", pDiag->diag_info[i].pse_pg_cnt[pg_level]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].pse_pg_cnt[pg_level]));
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
#endif /* DBG_PSE_DEPTH */
@@ -9248,84 +9293,84 @@ INT Show_Diag_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
#ifdef DOT11_N_SUPPORT
#ifdef DBG_TX_AGG_CNT
- printk("\n %-12s\n", "Tx-Agged AMPDUCnt");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "Tx-Agged AMPDUCnt"));
for (McsIdx =0 ; McsIdx < 16; McsIdx++)
{
- printk("\t%-6d", (McsIdx+1));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", (McsIdx+1)));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%d(%d%%) ", pDiag->diag_info[i].TxAMPDUCnt[McsIdx],
- pDiag->diag_info[i].TxAMPDUCnt[McsIdx] ? (pDiag->diag_info[i].TxAMPDUCnt[McsIdx] * 100 / pDiag->diag_info[i].TxAggCnt) : 0);
+ DBGPRINT(RT_DEBUG_OFF, ("%d(%d%%) ", pDiag->diag_info[i].TxAMPDUCnt[McsIdx],
+ pDiag->diag_info[i].TxAMPDUCnt[McsIdx] ? (pDiag->diag_info[i].TxAMPDUCnt[McsIdx] * 100 / pDiag->diag_info[i].TxAggCnt) : 0));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#endif /* DBG_TX_AGG_CNT */
#endif /* DOT11_N_SUPPORT */
#ifdef DBG_TX_MCS
- printk("\n %-12s\n", "TxMcsCnt_HT");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "TxMcsCnt_HT"));
for (McsIdx =0 ; McsIdx < McsMaxIdx; McsIdx++)
{
- printk("\t%-6d", McsIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", McsIdx));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-7d", pDiag->diag_info[i].TxMcsCnt_HT[McsIdx]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxMcsCnt_HT[McsIdx]));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#ifdef DOT11_VHT_AC
- printk("\n %-12s\n", "TxMcsCnt_VHT");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "TxMcsCnt_VHT"));
for (McsIdx =0 ; McsIdx < vht_mcs_max_idx; McsIdx++)
{
- printk("\t%-6d", McsIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", McsIdx));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
- printk("%-7d", pDiag->diag_info[i].TxMcsCnt_VHT[McsIdx]);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].TxMcsCnt_VHT[McsIdx]));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#endif /* DOT11_VHT_AC */
#endif /* DBG_TX_MCS */
- printk("Rx Info\n");
- printk(" %-12s", "RxDataCnt");
+ DBGPRINT(RT_DEBUG_OFF, ("Rx Info\n"));
+ DBGPRINT(RT_DEBUG_OFF, (" %-12s", "RxDataCnt"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].RxDataCnt);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].RxDataCnt));
}
- printk("\n %-12s", "RxCrcErrCnt");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s", "RxCrcErrCnt"));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].RxCrcErrCnt);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].RxCrcErrCnt));
}
#ifdef DBG_RX_MCS
- printk("\n %-12s\n", "RxMcsCnt_HT");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "RxMcsCnt_HT"));
for (McsIdx =0 ; McsIdx < McsMaxIdx; McsIdx++)
{
- printk("\t%-6d", McsIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", McsIdx));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].RxMcsCnt_HT[McsIdx]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].RxMcsCnt_HT[McsIdx]));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#ifdef DOT11_VHT_AC
- printk("\n %-12s\n", "RxMcsCnt_VHT");
+ DBGPRINT(RT_DEBUG_OFF, ("\n %-12s\n", "RxMcsCnt_VHT"));
for (McsIdx =0 ; McsIdx < vht_mcs_max_idx; McsIdx++)
{
- printk("\t%-6d", McsIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", McsIdx));
for (i = start; i != stop; i = (i+1) % DIAGNOSE_TIME)
{
- printk("%-7d", pDiag->diag_info[i].RxMcsCnt_VHT[McsIdx]);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pDiag->diag_info[i].RxMcsCnt_VHT[McsIdx]));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#endif /* DOT11_VHT_AC */
#endif /* DBG_RX_MCS */
- printk("\n-------------\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n-------------\n"));
done:
os_free_mem(pAd, pDiag);
@@ -9338,39 +9383,43 @@ done:
INT Show_Sat_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
/* Sanity check for calculation of sucessful count */
- printk("TransmitCountFromOS = %d\n", pAd->WlanCounters.TransmitCountFrmOs.u.LowPart);
- printk("TransmittedFragmentCount = %lld\n", pAd->WlanCounters.TransmittedFragmentCount.u.LowPart + pAd->WlanCounters.MulticastTransmittedFrameCount.QuadPart);
- printk("MulticastTransmittedFrameCount = %d\n", pAd->WlanCounters.MulticastTransmittedFrameCount.u.LowPart);
- printk("FailedCount = %d\n", pAd->WlanCounters.FailedCount.u.LowPart);
- printk("RetryCount = %d\n", pAd->WlanCounters.RetryCount.u.LowPart);
- printk("MultipleRetryCount = %d\n", pAd->WlanCounters.MultipleRetryCount.u.LowPart);
- printk("RTSSuccessCount = %d\n", pAd->WlanCounters.RTSSuccessCount.u.LowPart);
- printk("RTSFailureCount = %d\n", pAd->WlanCounters.RTSFailureCount.u.LowPart);
- printk("ACKFailureCount = %d\n", pAd->WlanCounters.ACKFailureCount.u.LowPart);
- printk("FrameDuplicateCount = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart);
- printk("ReceivedFragmentCount = %d\n", pAd->WlanCounters.ReceivedFragmentCount.u.LowPart);
- printk("MulticastReceivedFrameCount = %d\n", pAd->WlanCounters.MulticastReceivedFrameCount.u.LowPart);
- printk("Rx drop due to out of resource = %ld\n", (ULONG)pAd->Counters8023.RxNoBuffer);
+ DBGPRINT(RT_DEBUG_OFF, ("TransmitCountFromOS = %d\n"
+ , pAd->WlanCounters.TransmitCountFrmOs.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedFragmentCount = %lld\n"
+ , pAd->WlanCounters.TransmittedFragmentCount.u.LowPart + pAd->WlanCounters.MulticastTransmittedFrameCount.QuadPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MulticastTransmittedFrameCount = %d\n"
+ , pAd->WlanCounters.MulticastTransmittedFrameCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("FailedCount = %d\n", pAd->WlanCounters.FailedCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RetryCount = %d\n", pAd->WlanCounters.RetryCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MultipleRetryCount = %d\n"
+ , pAd->WlanCounters.MultipleRetryCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RTSSuccessCount = %d\n", pAd->WlanCounters.RTSSuccessCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RTSFailureCount = %d\n", pAd->WlanCounters.RTSFailureCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("ACKFailureCount = %d\n", pAd->WlanCounters.ACKFailureCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("FrameDuplicateCount = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("ReceivedFragmentCount = %d\n", pAd->WlanCounters.ReceivedFragmentCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MulticastReceivedFrameCount = %d\n", pAd->WlanCounters.MulticastReceivedFrameCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("Rx drop due to out of resource = %ld\n", (ULONG)pAd->Counters8023.RxNoBuffer));
#ifdef DBG
- printk("RealFcsErrCount = %d\n", pAd->RalinkCounters.RealFcsErrCount.u.LowPart);
+ DBGPRINT(RT_DEBUG_OFF, ("RealFcsErrCount = %d\n", pAd->RalinkCounters.RealFcsErrCount.u.LowPart));
#else
- printk("FCSErrorCount = %d\n", pAd->WlanCounters.FCSErrorCount.u.LowPart);
- printk("FrameDuplicateCount.LowPart = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart / 100);
+ DBGPRINT(RT_DEBUG_OFF, ("FCSErrorCount = %d\n", pAd->WlanCounters.FCSErrorCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("FrameDuplicateCount.LowPart = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart / 100));
#endif
- printk("TransmittedFrameCount = %d\n", pAd->WlanCounters.TransmittedFragmentCount.u.LowPart);
- printk("WEPUndecryptableCount = %d\n", pAd->WlanCounters.WEPUndecryptableCount.u.LowPart);
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedFrameCount = %d\n", pAd->WlanCounters.TransmittedFragmentCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("WEPUndecryptableCount = %d\n", pAd->WlanCounters.WEPUndecryptableCount.u.LowPart));
#ifdef DOT11_N_SUPPORT
- printk("\n===Some 11n statistics variables: \n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n===Some 11n statistics variables:\n"));
/* Some 11n statistics variables */
- printk("TxAMSDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TxAMSDUCount.u.LowPart);
- printk("RxAMSDUCount = %ld\n", (ULONG)pAd->RalinkCounters.RxAMSDUCount.u.LowPart);
- printk("TransmittedAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TransmittedAMPDUCount.u.LowPart);
- printk("TransmittedMPDUsInAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TransmittedMPDUsInAMPDUCount.u.LowPart);
- printk("TransmittedOctetsInAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TransmittedOctetsInAMPDUCount.u.LowPart);
- printk("MPDUInReceivedAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.MPDUInReceivedAMPDUCount.u.LowPart);
+ DBGPRINT(RT_DEBUG_OFF, ("TxAMSDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TxAMSDUCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RxAMSDUCount = %ld\n", (ULONG)pAd->RalinkCounters.RxAMSDUCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TransmittedAMPDUCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedMPDUsInAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TransmittedMPDUsInAMPDUCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedOctetsInAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.TransmittedOctetsInAMPDUCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MPDUInReceivedAMPDUCount = %ld\n", (ULONG)pAd->RalinkCounters.MPDUInReceivedAMPDUCount.u.LowPart));
#ifdef DOT11N_DRAFT3
- printk("fAnyStaFortyIntolerant=%d\n", pAd->MacTab.fAnyStaFortyIntolerant);
+ DBGPRINT(RT_DEBUG_OFF, ("fAnyStaFortyIntolerant=%d\n", pAd->MacTab.fAnyStaFortyIntolerant));
#endif /* DOT11N_DRAFT3 */
#endif /* DOT11_N_SUPPORT */
@@ -9379,13 +9428,19 @@ INT Show_Sat_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
for (apidx=0; apidx < pAd->ApCfg.BssidNum; apidx++)
{
- printk("-- IF-ra%d -- \n", apidx);
- printk("Packets Received = %ld\n", (ULONG)pAd->ApCfg.MBSSID[apidx].RxCount);
- printk("Packets Sent = %ld\n", (ULONG)pAd->ApCfg.MBSSID[apidx].TxCount);
- printk("Bytes Received = %ld\n", (ULONG)pAd->ApCfg.MBSSID[apidx].ReceivedByteCount);
- printk("Byte Sent = %ld\n", (ULONG)pAd->ApCfg.MBSSID[apidx].TransmittedByteCount);
- printk("Error Packets Received = %ld\n", (ULONG)pAd->ApCfg.MBSSID[apidx].RxErrorCount);
- printk("Drop Received Packets = %ld\n", (ULONG)pAd->ApCfg.MBSSID[apidx].RxDropCount);
+ DBGPRINT(RT_DEBUG_OFF, ("-- IF-ra%d --\n", apidx));
+ DBGPRINT(RT_DEBUG_OFF, ("Packets Received = %ld\n",
+ (ULONG)pAd->ApCfg.MBSSID[apidx].RxCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Packets Sent = %ld\n",
+ (ULONG)pAd->ApCfg.MBSSID[apidx].TxCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Bytes Received = %ld\n",
+ (ULONG)pAd->ApCfg.MBSSID[apidx].ReceivedByteCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Byte Sent = %ld\n",
+ (ULONG)pAd->ApCfg.MBSSID[apidx].TransmittedByteCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Error Packets Received = %ld\n",
+ (ULONG)pAd->ApCfg.MBSSID[apidx].RxErrorCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Drop Received Packets = %ld\n",
+ (ULONG)pAd->ApCfg.MBSSID[apidx].RxDropCount));
#ifdef WSC_INCLUDED
if (pAd->ApCfg.MBSSID[apidx].WscControl.WscConfMode != WSC_DISABLE)
@@ -9393,7 +9448,7 @@ INT Show_Sat_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
WSC_CTRL *pWscCtrl;
pWscCtrl = &pAd->ApCfg.MBSSID[apidx].WscControl;
- printk("WscInfo:\n"
+ DBGPRINT(RT_DEBUG_OFF, ("WscInfo:\n"
"\tWscConfMode=%d\n"
"\tWscMode=%s\n"
"\tWscConfStatus=%d\n"
@@ -9403,11 +9458,11 @@ INT Show_Sat_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pWscCtrl->WscConfMode,
((pWscCtrl->WscMode == WSC_PIN_MODE) ? "PIN" : "PBC"),
pWscCtrl->WscConfStatus, pWscCtrl->WscEnrolleePinCode,
- pWscCtrl->WscState, pWscCtrl->WscStatus);
+ pWscCtrl->WscState, pWscCtrl->WscStatus))));
}
#endif /* WSC_INCLUDED */
- printk("-- IF-ra%d end -- \n", apidx);
+ DBGPRINT(RT_DEBUG_OFF, ("-- IF-ra%d end --\n", apidx));
}
}
@@ -9425,23 +9480,24 @@ INT Show_Sat_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pEntry = &pAd->MacTab.Content[i];
if (IS_ENTRY_CLIENT(pEntry) && (pEntry->Sst == SST_ASSOC))
{
- printk("\n%02x:%02x:%02x:%02x:%02x:%02x - ", PRINT_MAC(pEntry->Addr));
- printk("%-4d\n", (int)pEntry->Aid);
+ DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x - ",
+ PRINT_MAC(pEntry->Addr)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d\n", (int)pEntry->Aid));
for (j=maxMcs; j>=0; j--)
{
if ((pEntry->TXMCSExpected[j] != 0) || (pEntry->TXMCSFailed[j] !=0))
{
- printk("MCS[%02d]: Expected %u, Successful %u (%d%%), Failed %u\n",
- j, pEntry->TXMCSExpected[j], pEntry->TXMCSSuccessful[j],
- pEntry->TXMCSExpected[j] ? (100*pEntry->TXMCSSuccessful[j])/pEntry->TXMCSExpected[j] : 0,
- pEntry->TXMCSFailed[j]);
+ DBGPRINT(RT_DEBUG_OFF, ("MCS[%02d]: Expected %u, Successful %u (%d%%), Failed %u\n"
+ , j, pEntry->TXMCSExpected[j], pEntry->TXMCSSuccessful[j]
+ , pEntry->TXMCSExpected[j] ? (100*pEntry->TXMCSSuccessful[j])/pEntry->TXMCSExpected[j] : 0
+ , pEntry->TXMCSFailed[j]));
for(k=maxMcs; k>=0; k--)
{
- if (pEntry->TXMCSAutoFallBack[j][k] != 0)
- {
- printk("\t\t\tAutoMCS[%02d]: %u (%d%%)\n", k, pEntry->TXMCSAutoFallBack[j][k],
- (100*pEntry->TXMCSAutoFallBack[j][k])/pEntry->TXMCSExpected[j]);
+ if (pEntry->TXMCSAutoFallBack[j][k] != 0) {
+ DBGPRINT(RT_DEBUG_OFF, ("\t\t\tAutoMCS[%02d]: %u (%d%%)\n", k
+ , pEntry->TXMCSAutoFallBack[j][k]
+ , (100*pEntry->TXMCSAutoFallBack[j][k])/pEntry->TXMCSExpected[j]));
}
}
}
@@ -9465,26 +9521,28 @@ INT Show_Sat_Reset_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
/* Sanity check for calculation of sucessful count */
- printk("TransmittedFragmentCount = %lld\n", pAd->WlanCounters.TransmittedFragmentCount.u.LowPart + pAd->WlanCounters.MulticastTransmittedFrameCount.QuadPart);
- printk("MulticastTransmittedFrameCount = %d\n", pAd->WlanCounters.MulticastTransmittedFrameCount.u.LowPart);
- printk("FailedCount = %d\n", pAd->WlanCounters.FailedCount.u.LowPart);
- printk("RetryCount = %d\n", pAd->WlanCounters.RetryCount.u.LowPart);
- printk("MultipleRetryCount = %d\n", pAd->WlanCounters.MultipleRetryCount.u.LowPart);
- printk("RTSSuccessCount = %d\n", pAd->WlanCounters.RTSSuccessCount.u.LowPart);
- printk("RTSFailureCount = %d\n", pAd->WlanCounters.RTSFailureCount.u.LowPart);
- printk("ACKFailureCount = %d\n", pAd->WlanCounters.ACKFailureCount.u.LowPart);
- printk("FrameDuplicateCount = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart);
- printk("ReceivedFragmentCount = %d\n", pAd->WlanCounters.ReceivedFragmentCount.u.LowPart);
- printk("MulticastReceivedFrameCount = %d\n", pAd->WlanCounters.MulticastReceivedFrameCount.u.LowPart);
- printk("Rx drop due to out of resource = %ld\n", (ULONG)pAd->Counters8023.RxNoBuffer);
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedFragmentCount = %lld\n"
+ , pAd->WlanCounters.TransmittedFragmentCount.u.LowPart + pAd->WlanCounters.MulticastTransmittedFrameCount.QuadPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MulticastTransmittedFrameCount = %d\n"
+ , pAd->WlanCounters.MulticastTransmittedFrameCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("FailedCount = %d\n", pAd->WlanCounters.FailedCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RetryCount = %d\n", pAd->WlanCounters.RetryCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MultipleRetryCount = %d\n", pAd->WlanCounters.MultipleRetryCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RTSSuccessCount = %d\n", pAd->WlanCounters.RTSSuccessCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("RTSFailureCount = %d\n", pAd->WlanCounters.RTSFailureCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("ACKFailureCount = %d\n", pAd->WlanCounters.ACKFailureCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("FrameDuplicateCount = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("ReceivedFragmentCount = %d\n", pAd->WlanCounters.ReceivedFragmentCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("MulticastReceivedFrameCount = %d\n", pAd->WlanCounters.MulticastReceivedFrameCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("Rx drop due to out of resource = %ld\n", (ULONG)pAd->Counters8023.RxNoBuffer));
#ifdef DBG
- printk("RealFcsErrCount = %d\n", pAd->RalinkCounters.RealFcsErrCount.u.LowPart);
+ DBGPRINT(RT_DEBUG_OFF, ("RealFcsErrCount = %d\n", pAd->RalinkCounters.RealFcsErrCount.u.LowPart));
#else
- printk("FCSErrorCount = %d\n", pAd->WlanCounters.FCSErrorCount.u.LowPart);
- printk("FrameDuplicateCount.LowPart = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart / 100);
+ DBGPRINT(RT_DEBUG_OFF, ("FCSErrorCount = %d\n", pAd->WlanCounters.FCSErrorCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("FrameDuplicateCount.LowPart = %d\n", pAd->WlanCounters.FrameDuplicateCount.u.LowPart / 100));
#endif
- printk("TransmittedFrameCount = %d\n", pAd->WlanCounters.TransmittedFrameCount.u.LowPart);
- printk("WEPUndecryptableCount = %d\n", pAd->WlanCounters.WEPUndecryptableCount.u.LowPart);
+ DBGPRINT(RT_DEBUG_OFF, ("TransmittedFrameCount = %d\n", pAd->WlanCounters.TransmittedFrameCount.u.LowPart));
+ DBGPRINT(RT_DEBUG_OFF, ("WEPUndecryptableCount = %d\n", pAd->WlanCounters.WEPUndecryptableCount.u.LowPart));
pAd->WlanCounters.TransmittedFragmentCount.u.LowPart = 0;
pAd->WlanCounters.MulticastTransmittedFrameCount.u.LowPart = 0;
@@ -9523,26 +9581,26 @@ INT Show_Sat_Reset_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if (IS_ENTRY_CLIENT(pEntry) && (pEntry->Sst == SST_ASSOC))
{
- printk("\n%02X:%02X:%02X:%02X:%02X:%02X - ",
+ DBGPRINT(RT_DEBUG_OFF, ("\n%02X:%02X:%02X:%02X:%02X:%02X - ",
pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
- pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
- printk("%-4d\n", (int)pEntry->Aid);
+ pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d\n", (int)pEntry->Aid));
for (j = maxMcs; j >= 0; j--)
{
if ((pEntry->TXMCSExpected[j] != 0) || (pEntry->TXMCSFailed[j] !=0))
{
- printk("MCS[%02d]: Expected %u, Successful %u (%d%%), Failed %u\n",
- j, pEntry->TXMCSExpected[j], pEntry->TXMCSSuccessful[j],
- pEntry->TXMCSExpected[j] ? (100*pEntry->TXMCSSuccessful[j])/pEntry->TXMCSExpected[j] : 0,
- pEntry->TXMCSFailed[j]
- );
+ DBGPRINT(RT_DEBUG_OFF, ("MCS[%02d]: Expected %u, Successful %u (%d%%), Failed %u\n"
+ , j, pEntry->TXMCSExpected[j], pEntry->TXMCSSuccessful[j]
+ , pEntry->TXMCSExpected[j] ? (100*pEntry->TXMCSSuccessful[j])/pEntry->TXMCSExpected[j] : 0
+ , pEntry->TXMCSFailed[j]));
for(k = maxMcs; k >= 0; k--)
{
if (pEntry->TXMCSAutoFallBack[j][k] != 0)
{
- printk("\t\t\tAutoMCS[%02d]: %u (%d%%)\n", k, pEntry->TXMCSAutoFallBack[j][k],
- (100*pEntry->TXMCSAutoFallBack[j][k])/pEntry->TXMCSExpected[j]);
+ DBGPRINT(RT_DEBUG_OFF, ("\t\t\tAutoMCS[%02d]: %u (%d%%)\n"
+ , k, pEntry->TXMCSAutoFallBack[j][k]
+ , (100*pEntry->TXMCSAutoFallBack[j][k])/pEntry->TXMCSExpected[j]));
}
}
}
@@ -9582,8 +9640,9 @@ INT Show_MATTable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
dumpUidMacTb(&pAd->MatCfg, -1);
dumpIPv6MacTb(&pAd->MatCfg, -1);
- printk("Default BroadCast Address=%02x:%02x:%02x:%02x:%02x:%02x!\n", BROADCAST_ADDR[0], BROADCAST_ADDR[1],
- BROADCAST_ADDR[2], BROADCAST_ADDR[3], BROADCAST_ADDR[4], BROADCAST_ADDR[5]);
+ DBGPRINT(RT_DEBUG_OFF, ("Default BroadCast Address=%02x:%02x:%02x:%02x:%02x:%02x!\n",
+ BROADCAST_ADDR[0], BROADCAST_ADDR[1], BROADCAST_ADDR[2],
+ BROADCAST_ADDR[3], BROADCAST_ADDR[4], BROADCAST_ADDR[5]));
return TRUE;
}
#endif /* MAT_SUPPORT */
@@ -10492,9 +10551,10 @@ VOID RTMPAPIoctlBBP(
{
#ifdef __ECOS
BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);
- printk("R%02d[0x%02X]:%02X ", bbpId, bbpId, regBBP);
+ DBGPRINT(RT_DEBUG_OFF, ("R%02d[0x%02X]:%02X "
+ , bbpId, bbpId, regBBP));
if ((bbpId%5 == 4) || (bbpId == pAdapter->chipCap.MaxNumOfBbpId))
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#else
/* according to Andy, Gary, David require. */
/* the command bbp shall read/write BBP register directly for dubug. */
@@ -11013,9 +11073,9 @@ VOID RTMPAPIoctlRF(
{
#ifdef __ECOS
RT30xxReadRFRegister(pAdapter, rfId, &regRF);
- printk("R%02d[0x%02X]:%02X ", rfId, rfId*2, regRF);
+ DBGPRINT(RT_DEBUG_OFF, ("R%02d[0x%02X]:%02X ", rfId, rfId*2, regRF));
if ((rfId%5 == 4) || (rfId == maxRFIdx))
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#else
/* according to Andy, Gary, David require. */
/* the command RF shall read/write RF register directly for dubug. */
@@ -11295,9 +11355,9 @@ VOID RTMPAPIoctlE2PROM(
for (eepAddr = 0x00; eepAddr < 0x200; eepAddr += 2)
{
RT28xx_EEPROM_READ16(pAdapter, eepAddr, eepValue);
- printk("[0x%04X]:%04X ", eepAddr , eepValue);
+ DBGPRINT(RT_DEBUG_OFF, ("[0x%04X]:%04X ", eepAddr, eepValue));
if ((eepAddr & 0x6) == 0x6)
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
#else
sprintf(msg, "\n");
@@ -11402,7 +11462,7 @@ VOID RTMPIoctlStatistics(RTMP_ADAPTER *pAd, RTMP_IOCTL_INPUT_STRUCT *wrq)
#endif /* CONFIG_ATE */
{
txCount = pAd->WlanCounters.TransmittedFragmentCount.u.LowPart;
- rxCount = pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
+ rxCount = (UINT32)pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
}
sprintf(msg+strlen(msg), "Tx success = %ld\n", txCount);
@@ -11757,7 +11817,7 @@ VOID RTMPIoctlStatistics(RTMP_ADAPTER *pAd, RTMP_IOCTL_INPUT_STRUCT *wrq)
#ifdef RELEASE_EXCLUDE
DBGPRINT(RT_DEBUG_INFO, ("copy to user [msg=%s]\n", msg));
#endif /* RELEASE_EXCLUDE */
- wrq->u.data.length = strlen(msg);
+ wrq->u.data.length = (UINT16)strlen(msg);
Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
os_free_mem(NULL, msg);
@@ -11848,7 +11908,8 @@ VOID RTMPIoctlQueryBaTable(
IN RTMP_IOCTL_INPUT_STRUCT *wrq)
{
/*char *msg; */
- UCHAR TotalEntry, i, j, index;
+ UINT16 TotalEntry;
+ UCHAR i, j, index;
QUERYBA_TABLE *BAT;
BAT = vmalloc(sizeof(QUERYBA_TABLE));
@@ -11973,7 +12034,7 @@ INT Set_ApCli_Enable_Proc(
{
UINT Enable;
POS_COOKIE pObj;
- UCHAR ifIndex;
+ INT ifIndex;
pObj = (POS_COOKIE) pAd->OS_Cookie;
if (pObj->ioctl_if_type != INT_APCLI)
@@ -11984,6 +12045,7 @@ INT Set_ApCli_Enable_Proc(
pAd->ApCfg.ApCliTab[ifIndex].Enable = (Enable > 0) ? TRUE : FALSE;
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) Set_ApCli_Enable_Proc::(enable = %d)\n", ifIndex, pAd->ApCfg.ApCliTab[ifIndex].Enable));
+
ApCliIfDown(pAd);
return TRUE;
@@ -11993,7 +12055,7 @@ INT Set_ApCli_Enable_Proc(
INT Set_ApCli_Ssid_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
POS_COOKIE pObj;
- UCHAR ifIndex;
+ INT ifIndex;
BOOLEAN apcliEn;
INT success = FALSE;
/*UCHAR keyMaterial[40]; */
@@ -12070,7 +12132,7 @@ INT Set_ApCli_Bssid_Proc(
{
INT i;
RTMP_STRING *value;
- UCHAR ifIndex;
+ INT ifIndex;
BOOLEAN apcliEn;
POS_COOKIE pObj;
@@ -12137,7 +12199,7 @@ INT Set_ApCli_AuthMode_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if (pObj->ioctl_if_type != INT_APCLI)
return FALSE;
- ifIndex = pObj->ioctl_if;
+ ifIndex = (UCHAR)pObj->ioctl_if;
wdev = &pAd->ApCfg.ApCliTab[ifIndex].wdev;
if (rtstrcasecmp(arg, "WEPAUTO") == TRUE)
@@ -12199,7 +12261,7 @@ INT Set_ApCli_EncrypType_Proc(
if (pObj->ioctl_if_type != INT_APCLI)
return FALSE;
- ifIndex = pObj->ioctl_if;
+ ifIndex = (UCHAR)pObj->ioctl_if;
pApCliEntry = &pAd->ApCfg.ApCliTab[ifIndex];
wdev = &pApCliEntry->wdev;
@@ -12290,7 +12352,7 @@ INT Set_ApCli_WPAPSK_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- UCHAR ifIndex;
+ INT ifIndex;
POS_COOKIE pObj;
PAPCLI_STRUCT pApCliEntry = NULL;
INT retval;
@@ -12309,7 +12371,7 @@ INT Set_ApCli_WPAPSK_Proc(
return FALSE;
NdisMoveMemory(pApCliEntry->PSK, arg, strlen(arg));
- pApCliEntry->PSKLen = strlen(arg);
+ pApCliEntry->PSKLen = (UCHAR)strlen(arg);
return TRUE;
}
@@ -12329,7 +12391,7 @@ INT Set_ApCli_Key1_Proc(
{
POS_COOKIE pObj = (POS_COOKIE) pAd->OS_Cookie;
PAPCLI_STRUCT pApCliEntry = NULL;
- UCHAR ifIndex;
+ INT ifIndex;
INT retVal;
if (pObj->ioctl_if_type != INT_APCLI)
@@ -12361,7 +12423,7 @@ INT Set_ApCli_Key2_Proc(
{
POS_COOKIE pObj;
PAPCLI_STRUCT pApCliEntry = NULL;
- UCHAR ifIndex;
+ INT ifIndex;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
@@ -12393,7 +12455,7 @@ INT Set_ApCli_Key3_Proc(
{
POS_COOKIE pObj;
PAPCLI_STRUCT pApCliEntry = NULL;
- UCHAR ifIndex;
+ INT ifIndex;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
@@ -12425,7 +12487,7 @@ INT Set_ApCli_Key4_Proc(
{
POS_COOKIE pObj;
PAPCLI_STRUCT pApCliEntry = NULL;
- UCHAR ifIndex;
+ INT ifIndex;
INT retVal;
pObj = (POS_COOKIE) pAd->OS_Cookie;
@@ -12455,7 +12517,7 @@ INT Set_ApCli_TxMode_Proc(
wdev = &pAd->ApCfg.ApCliTab[pObj->ioctl_if].wdev;
- wdev->DesiredTransmitSetting.field.FixedTxMode = RT_CfgSetFixedTxPhyMode(arg);
+ wdev->DesiredTransmitSetting.field.FixedTxMode = (USHORT)RT_CfgSetFixedTxPhyMode(arg);
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) Set_ApCli_TxMode_Proc = %d\n",
pObj->ioctl_if, wdev->DesiredTransmitSetting.field.FixedTxMode));
@@ -12476,7 +12538,7 @@ INT Set_ApCli_TxMcs_Proc(
wdev = &pAd->ApCfg.ApCliTab[pObj->ioctl_if].wdev;
wdev->DesiredTransmitSetting.field.MCS =
- RT_CfgSetTxMCSProc(arg, &wdev->bAutoTxRateSwitch);
+ (USHORT)RT_CfgSetTxMCSProc(arg, &wdev->bAutoTxRateSwitch);
if (wdev->DesiredTransmitSetting.field.MCS == MCS_AUTO)
{
@@ -12498,7 +12560,7 @@ INT Set_ApCli_Wpa_Support(
IN RTMP_STRING *arg)
{
POS_COOKIE pObj;
- UCHAR ifIndex;
+ INT ifIndex;
PAPCLI_STRUCT pApCliEntry = NULL;
pObj = (POS_COOKIE) pAd->OS_Cookie;
@@ -12530,7 +12592,7 @@ INT Set_ApCli_IEEE8021X_Proc(
{
ULONG ieee8021x;
POS_COOKIE pObj;
- UCHAR ifIndex;
+ INT ifIndex;
PAPCLI_STRUCT pApCliEntry = NULL;
pObj = (POS_COOKIE) pAd->OS_Cookie;
@@ -14773,8 +14835,8 @@ INT Set_McastPhyMode(
break;
#endif /* DOT11_N_SUPPORT */
default:
- printk("unknow Muticast PhyMode %d.\n", PhyMode);
- printk("0:Disable 1:CCK, 2:OFDM, 3:HTMIX.\n");
+ DBGPRINT(RT_DEBUG_OFF, ("unknown Multicast PhyMode %d.\n", PhyMode));
+ DBGPRINT(RT_DEBUG_OFF, ("0:Disable 1:CCK, 2:OFDM, 3:HTMIX.\n"));
break;
}
@@ -14788,7 +14850,7 @@ INT Set_McastMcs(
UCHAR Mcs = simple_strtol(arg, 0, 10);
if (Mcs > 15)
- printk("Mcs must in range of 0 to 15\n");
+ DBGPRINT(RT_DEBUG_OFF, ("Mcs must in range of 0 to 15\n"));
switch(pAd->CommonCfg.MCastPhyMode.field.MODE)
{
@@ -14796,12 +14858,12 @@ INT Set_McastMcs(
if ((Mcs <= 3) || (Mcs >= 8 && Mcs <= 11))
pAd->CommonCfg.MCastPhyMode.field.MCS = Mcs;
else
- printk("MCS must in range of 0 ~ 3 and 8 ~ 11 for CCK Mode.\n");
+ DBGPRINT(RT_DEBUG_OFF, ("MCS must in range of 0 ~ 3 and 8 ~ 11 for CCK Mode.\n"));
break;
case MODE_OFDM:
if (Mcs > 7)
- printk("MCS must in range from 0 to 7 for CCK Mode.\n");
+ DBGPRINT(RT_DEBUG_OFF, ("MCS must in range from 0 to 7 for CCK Mode.\n"));
else
pAd->CommonCfg.MCastPhyMode.field.MCS = Mcs;
break;
@@ -14818,8 +14880,8 @@ INT Show_McastRate(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- printk("Mcast PhyMode =%d\n", pAd->CommonCfg.MCastPhyMode.field.MODE);
- printk("Mcast Mcs =%d\n", pAd->CommonCfg.MCastPhyMode.field.MCS);
+ DBGPRINT(RT_DEBUG_OFF, ("Mcast PhyMode =%d\n", pAd->CommonCfg.MCastPhyMode.field.MODE));
+ DBGPRINT(RT_DEBUG_OFF, ("Mcast Mcs =%d\n", pAd->CommonCfg.MCastPhyMode.field.MCS));
return TRUE;
}
#endif /* MCAST_RATE_SPECIFIC */
@@ -14943,9 +15005,9 @@ INT Set_EntryLifeCheck_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if (LifeCheckCnt <= 65535)
pAd->ApCfg.EntryLifeCheck = LifeCheckCnt;
else
- printk("LifeCheckCnt must in range of 0 to 65535\n");
+ DBGPRINT(RT_DEBUG_OFF, ("LifeCheckCnt must in range of 0 to 65535\n"));
- printk("EntryLifeCheck Cnt = %ld.\n", pAd->ApCfg.EntryLifeCheck);
+ DBGPRINT(RT_DEBUG_OFF, ("EntryLifeCheck Cnt = %ld.\n", pAd->ApCfg.EntryLifeCheck));
return TRUE;
}
@@ -15082,9 +15144,10 @@ INT Set_CwCTest_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT Set_MemDebug_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
#ifdef VENDOR_FEATURE2_SUPPORT
- printk("Number of Packet Allocated = %lu\n", OS_NumOfPktAlloc);
- printk("Number of Packet Freed = %lu\n", OS_NumOfPktFree);
- printk("Offset of Packet Allocated/Freed = %lu\n", OS_NumOfPktAlloc - OS_NumOfPktFree);
+ DBGPRINT(RT_DEBUG_OFF, ("Number of Packet Allocated = %lu\n", OS_NumOfPktAlloc));
+ DBGPRINT(RT_DEBUG_OFF, ("Number of Packet Freed = %lu\n", OS_NumOfPktFree));
+ DBGPRINT(RT_DEBUG_OFF, ("Offset of Packet Allocated/Freed = %lu\n",
+ OS_NumOfPktAlloc - OS_NumOfPktFree));
#endif /* VENDOR_FEATURE2_SUPPORT */
return TRUE;
}
@@ -15100,14 +15163,14 @@ VOID RTMPApCliAddKey(
ULONG KeyIdx;
MAC_TABLE_ENTRY *pEntry;
STA_TR_ENTRY *tr_entry;
- INT ifIndex,BssIdx;
+ UCHAR ifIndex, BssIdx;
PAPCLI_STRUCT pApCliEntry;
struct wifi_dev *wdev;
MAC_TABLE_ENTRY *pMacEntry=(MAC_TABLE_ENTRY *)NULL;
DBGPRINT(RT_DEBUG_TRACE, ("RTMPApCliAddKey ------>\n"));
- ifIndex=apidx;
+ ifIndex = (UCHAR)apidx;
pApCliEntry = &pAd->ApCfg.ApCliTab[ifIndex];
wdev = &pApCliEntry->wdev;
pMacEntry = &pAd->MacTab.Content[pApCliEntry->MacTabWCID];
@@ -15198,7 +15261,7 @@ VOID RTMPApCliAddKey(
/* Update group key information to ASIC Shared Key Table */
AsicAddSharedKeyEntry(pAd,
BssIdx,
- wdev->DefaultKeyId,
+ (UCHAR)wdev->DefaultKeyId,
&pApCliEntry->SharedKey[wdev->DefaultKeyId]);
@@ -15259,11 +15322,11 @@ VOID RTMPApCliAddKey(
/* update WCID attribute table and IVEIV table for this entry */
RTMPSetWcidSecurityInfo(pAd,
- BssIdx,
- KeyIdx,
- pEntry->PairwiseKey.CipherAlg,
- pEntry->wcid,
- PAIRWISEKEYTABLE);
+ BssIdx,
+ (UINT8)KeyIdx,
+ pEntry->PairwiseKey.CipherAlg,
+ pEntry->wcid,
+ PAIRWISEKEYTABLE);
}
}
else
@@ -15285,12 +15348,14 @@ VOID RTMPApCliAddKey(
Key = pApCliEntry->SharedKey[KeyIdx].Key;
/* Set Group key material to Asic */
- AsicAddSharedKeyEntry(pAd, BssIdx, KeyIdx, &pApCliEntry->SharedKey[KeyIdx]);
+ AsicAddSharedKeyEntry(pAd, BssIdx, (UCHAR)KeyIdx
+ , &pApCliEntry->SharedKey[KeyIdx]);
/* STA doesn't need to set WCID attribute for group key */
/* Update WCID attribute table and IVEIV table for this group key table */
- RTMPAddWcidAttributeEntry(pAd, BssIdx, KeyIdx, CipherAlg, NULL);
+ RTMPAddWcidAttributeEntry(pAd, BssIdx
+ , (UCHAR)KeyIdx, CipherAlg, NULL);
}
}
@@ -15322,7 +15387,7 @@ Note:
*/
INT Set_PowerSaveLifeTime_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- pAd->MacTab.MsduLifeTime = simple_strtol(arg, 0, 10);
+ pAd->MacTab.MsduLifeTime = (USHORT)simple_strtol(arg, 0, 10);
DBGPRINT(RT_DEBUG_TRACE, ("Set new life time = %d\n", pAd->MacTab.MsduLifeTime));
return TRUE;
}
@@ -15348,7 +15413,7 @@ Note:
INT Show_MbssInfo_Display_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
UINT32 IdBss;
- UCHAR PhyMode;
+ UINT PhyMode;
CHAR *mod_str = NULL;
DBGPRINT(RT_DEBUG_ERROR, ("\n\tBSS Idx\t\tPhy Mode\n"));
@@ -15485,7 +15550,7 @@ VOID RtmpHostapdSecuritySet(
//TODO: Tim service establish.
INT Set_AP_TimEnable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- UCHAR interval;
+ LONG interval;
POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
UCHAR APIndex = pObj->ioctl_if;
BSS_STRUCT *pMbss;
@@ -15571,8 +15636,9 @@ INT Set_AP_DumpTime_Proc(
int apidx = 0, i = 0;
BSS_STRUCT *pMbss;
- printk("\n\t%-10s\t%-10s\n", "PreTBTTTime", "TBTTTime");
- printk("Idx[%d]:%-10lu\t%-10lu\n", i, pAd->HandlePreInterruptTime, pAd->HandleInterruptTime);
+ DBGPRINT(RT_DEBUG_OFF, ("\n\t%-10s\t%-10s\n", "PreTBTTTime", "TBTTTime"));
+ DBGPRINT(RT_DEBUG_OFF, ("Idx[%d]:%-10lu\t%-10lu\n", i, pAd->HandlePreInterruptTime,
+ pAd->HandleInterruptTime));
for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++) {
pMbss = &pAd->ApCfg.MBSSID[apidx];
@@ -15580,10 +15646,12 @@ INT Set_AP_DumpTime_Proc(
if(!BeaconTransmitRequired(pAd, apidx, pMbss))
continue;
- printk("\n%s:%d\tBcn_State:%d\t%-10s: %d\n", "Apidx", apidx, pMbss->bcn_buf.bcn_state, "recover", pMbss->bcn_recovery_num);
- printk("\t%-10s\t%-10s\t%-10s\t%-10s\n", "WriteBcnRing", "BcnDmaDone", "TXS_TSF", "TXS_SN");
- for (i = 0; i < MAX_TIME_RECORD; i++) {
- printk("Idx[%d]:\t%-10lu\t%-10lu\t%-10lu\t%-10lu\n", i, pMbss->WriteBcnDoneTime[i], pMbss->BcnDmaDoneTime[i], pMbss->TXS_TSF[i], pMbss->TXS_SN[i]);
+ DBGPRINT(RT_DEBUG_OFF, ("\n%s:%d\tBcn_State:%d\t%-10s: %d\n", "Apidx"
+ , apidx, pMbss->bcn_buf.bcn_state, "recover", pMbss->bcn_recovery_num));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-10s\t%-10s\t%-10s\t%-10s\n", "WriteBcnRing", "BcnDmaDone", "TXS_TSF", "TXS_SN"));
+ for (i = 0; i < MAX_TIME_RECORD; i++) {
+ DBGPRINT(RT_DEBUG_OFF, ("Idx[%d]:\t%-10lu\t%-10lu\t%-10lu\t%-10lu\n"
+ , i, pMbss->WriteBcnDoneTime[i], pMbss->BcnDmaDoneTime[i], pMbss->TXS_TSF[i], pMbss->TXS_SN[i]));
}
}
@@ -15599,7 +15667,7 @@ INT Set_BcnStateCtrl_Proc(
UCHAR apIndex = pObj->ioctl_if;
BSS_STRUCT *pMbss = NULL;
- bcn_state = simple_strtol(arg, 0, 10);
+ bcn_state = (UCHAR)simple_strtol(arg, 0, 10);
if (pAd->chipCap.hif_type != HIF_MT) {
DBGPRINT(RT_DEBUG_ERROR, ("%s: chipCap is not HIF_MT\n", __func__));
@@ -15620,8 +15688,9 @@ INT Set_BcnStateCtrl_Proc(
return FALSE;
}
- if (pMbss->bcn_buf.bcn_state != BCN_TX_IDLE) {
- printk("MBSSID[%d], bcn_buf.bcn_state = %d, will change to %d\n", apIndex, pMbss->bcn_buf.bcn_state, bcn_state);
+ if (pMbss->bcn_buf.bcn_state != BCN_TX_IDLE) {
+ DBGPRINT(RT_DEBUG_OFF, ("MBSSID[%d], bcn_buf.bcn_state = %d, will change to %d\n"
+ , apIndex, pMbss->bcn_buf.bcn_state, bcn_state));
RTMP_SEM_LOCK(&pAd->BcnRingLock);
pMbss->bcn_buf.bcn_state = bcn_state;
RTMP_SEM_UNLOCK(&pAd->BcnRingLock);
@@ -15635,7 +15704,7 @@ INT setApTmrEnableProc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- UCHAR enable;
+ LONG enable;
POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
UCHAR apIndex = pObj->ioctl_if;
BSS_STRUCT *pMbss = NULL;
@@ -15738,10 +15807,24 @@ INT RTMP_AP_IoctlHandle(
switch(cmd)
{
case CMD_RTPRIV_IOCTL_SET:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_SET\n"));
+ Status = -EINVAL;
+ break;
+ }
+
Status = RTMPAPPrivIoctlSet(pAd, wrq);
break;
case CMD_RT_PRIV_IOCTL:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RT_PRIV_IOCTL\n"));
+ Status = -EINVAL;
+ break;
+ }
+
if (subcmd & OID_GET_SET_TOGGLE)
Status = RTMPAPSetInformation(pAd, wrq, (INT)subcmd);
else
@@ -15769,6 +15852,13 @@ INT RTMP_AP_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_SHOW:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_SHOW\n"));
+ Status = -EINVAL;
+ break;
+ }
+
Status = RTMPAPPrivIoctlShow(pAd, wrq);
break;
@@ -15779,16 +15869,37 @@ INT RTMP_AP_IoctlHandle(
#endif/*WSC_AP_SUPPORT*/
case CMD_RTPRIV_IOCTL_GET_MAC_TABLE:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_GET_MAC_TABLE\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPIoctlGetMacTable(pAd,wrq);
- break;
+ break;
#if defined (AP_SCAN_SUPPORT) || defined (CONFIG_STA_SUPPORT)
case CMD_RTPRIV_IOCTL_GSITESURVEY:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_GSITESURVEY\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPIoctlGetSiteSurvey(pAd,wrq);
break;
#endif /* AP_SCAN_SUPPORT */
case CMD_RTPRIV_IOCTL_STATISTICS:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_STATISTICS\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPIoctlStatistics(pAd, wrq);
break;
@@ -15800,25 +15911,60 @@ INT RTMP_AP_IoctlHandle(
#ifdef DOT11_N_SUPPORT
case CMD_RTPRIV_IOCTL_QUERY_BATABLE:
- RTMPIoctlQueryBaTable(pAd, wrq);
- break;
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_QUERY_BATABLE\n"));
+ Status = -EINVAL;
+ break;
+ }
+
+ RTMPIoctlQueryBaTable(pAd, wrq);
+ break;
#endif /* DOT11_N_SUPPORT */
case CMD_RTPRIV_IOCTL_E2P:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_E2P\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPAPIoctlE2PROM(pAd, wrq);
break;
#ifdef DBG
case CMD_RTPRIV_IOCTL_BBP:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_BBP\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPAPIoctlBBP(pAd, wrq);
break;
case CMD_RTPRIV_IOCTL_MAC:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_MAC\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPIoctlMAC(pAd, wrq);
break;
#ifdef RTMP_RF_RW_SUPPORT
case CMD_RTPRIV_IOCTL_RF:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_RF\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPAPIoctlRF(pAd, wrq);
break;
#endif /* RTMP_RF_RW_SUPPORT */
@@ -15833,10 +15979,24 @@ INT RTMP_AP_IoctlHandle(
#endif/* INF_AR9 */
case CMD_RTPRIV_IOCTL_GET_MAC_TABLE_STRUCT:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_GET_MAC_TABLE_STRUCT\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RTMPIoctlGetMacTableStaInfo(pAd, wrq);
break;
case CMD_RTPRIV_IOCTL_AP_SIOCGIFHWADDR:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_AP_SIOCGIFHWADDR\n"));
+ Status = -EINVAL;
+ break;
+ }
+
if (pObj->ioctl_if < MAX_MBSSID_NUM(pAd))
NdisCopyMemory((RTMP_STRING *) wrq->u.name, (RTMP_STRING *) pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.bssid, 6);
break;
@@ -16042,9 +16202,11 @@ INT RTMP_AP_IoctlHandle(
#endif /* WDS_SUPPORT */
HtPhyMode = pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.HTPhyMode;
- RtmpDrvMaxRateGet(pAd, HtPhyMode.field.MODE, HtPhyMode.field.ShortGI,
- HtPhyMode.field.BW, HtPhyMode.field.MCS,
- (UINT32 *)&pRate->BitRate);
+ RtmpDrvMaxRateGet(pAd, (UINT8)HtPhyMode.field.MODE
+ , (UINT8)HtPhyMode.field.ShortGI
+ , (UINT8)HtPhyMode.field.BW
+ , (UINT8)HtPhyMode.field.MCS
+ , (UINT32 *)&pRate->BitRate);
}
break;
@@ -16725,25 +16887,25 @@ INT Set_DumpBBP_Proc(
for (i = 0; i < pAd->chipCap.MaxNumOfBbpId; i++)
{
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, i, &BBPValue);
- printk("%03d = %02X\n", i, BBPValue);
+ DBGPRINT(RT_DEBUG_OFF, ("%03d = %02X\n", i, BBPValue));
}
for (i = 0; i < pAd->chipCap.MaxNumOfBbpId; i++)
{
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R158, i);
- printk("%03d = %02X\n", BBP_R158, i);
+ DBGPRINT(RT_DEBUG_OFF, ("%03d = %02X\n", BBP_R158, i));
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R159, &BBPValue);
- printk("%03d = %02X\n", BBP_R159, BBPValue);
+ DBGPRINT(RT_DEBUG_OFF, ("%03d = %02X\n", BBP_R159, BBPValue));
}
for (i = 0; i < pAd->chipCap.MaxNumOfBbpId; i++)
{
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R195, i);
- printk("%03d = %02X\n", BBP_R195, i);
+ DBGPRINT(RT_DEBUG_OFF, ("%03d = %02X\n", BBP_R195, i));
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R196, &BBPValue);
- printk("%03d = %02X\n", BBP_R196, BBPValue);
+ DBGPRINT(RT_DEBUG_OFF, ("%03d = %02X\n", BBP_R196, BBPValue));
}
return TRUE;
@@ -17083,7 +17245,8 @@ INT Send_ANQP_Rsp(
if (MAC_ADDR_EQUAL(GASPeerEntry->PeerMACAddr, PeerMACAddr))
{
IsFound = TRUE;
- printk("!!GAS RSP DialogToken!! = %x\n", GASPeerEntry->DialogToken);
+ DBGPRINT(RT_DEBUG_OFF, ("!!GAS RSP DialogToken!! = %x\n",
+ GASPeerEntry->DialogToken));
break;
}
}
@@ -17135,7 +17298,7 @@ INT Send_ANQP_Rsp(
if (MAC_ADDR_EQUAL(GASPeerEntry->PeerMACAddr, PeerMACAddr))
{
IsFound = TRUE;
- printk("GAS RSP DialogToken = %x\n", GASPeerEntry->DialogToken);
+ DBGPRINT(RT_DEBUG_OFF, ("GAS RSP DialogToken = %x\n", GASPeerEntry->DialogToken));
Event->u.GAS_RSP_DATA.DialogToken = GASPeerEntry->DialogToken;
Len += 1;
@@ -17403,7 +17566,7 @@ INT Send_WNM_Notify_Req(
}
RTMP_SEM_EVENT_UP(&pWNMCtrl->WNMNotifyPeerListLock);
- printk("*%d\n", IsFound);
+ DBGPRINT(RT_DEBUG_OFF, ("*%d\n", IsFound));
if (!IsFound)
{
os_alloc_mem(NULL, (UCHAR **)&WNMNotifyPeerEntry, sizeof(*WNMNotifyPeerEntry));
diff --git a/ap/ap_connect.c b/ap/ap_connect.c
index 4cead16..16491fa 100755
--- a/ap/ap_connect.c
+++ b/ap/ap_connect.c
@@ -127,7 +127,7 @@ VOID write_tmac_info_beacon(RTMP_ADAPTER *pAd, INT apidx, UCHAR *tmac_buf, HTTRA
mac_info.TxSPriv = apidx;
#endif /* MT_MAC */
mac_info.hdr_len = 24;
- mac_info.bss_idx = apidx;
+ mac_info.bss_idx = (UCHAR)apidx;
mac_info.SpeEn = 1;
mac_info.Preamble = LONG_PREAMBLE;
NdisZeroMemory(tmac_buf, sizeof(TMAC_TXD_L));
@@ -1733,7 +1733,7 @@ VOID APUpdateBeaconFrame(RTMP_ADAPTER *pAd, INT apidx)
static UCHAR GetBcnNum(RTMP_ADAPTER *pAd)
{
int i;
- int NumBcn;
+ UCHAR NumBcn;
BCN_BUF_STRUC *bcn_info;
NumBcn = 0;
diff --git a/ap/ap_data.c b/ap/ap_data.c
index b788ba3..f3ddfef 100755
--- a/ap/ap_data.c
+++ b/ap/ap_data.c
@@ -45,6 +45,13 @@ INT ApAllowToSendPacket(
ASSERT(wdev->func_idx < pAd->ApCfg.BssidNum);
ASSERT (wdev->wdev_type == WDEV_TYPE_AP);
+ if ((wdev->func_idx < 0) || (wdev->func_idx > pAd->ApCfg.BssidNum) ||
+ (wdev->func_idx >= ARRAY_SIZE(pAd->ApCfg.MBSSID))) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s(): wrong func_idx=%d\n",
+ __func__, wdev->func_idx));
+ return FALSE;
+ }
+
if (wdev != &pAd->ApCfg.MBSSID[wdev->func_idx].wdev) {
DBGPRINT(RT_DEBUG_ERROR, ("%s(): wdev(0x%p) not equal MBSS(0x%p), func_idx=%d\n",
__FUNCTION__, wdev, &pAd->ApCfg.MBSSID[wdev->func_idx].wdev, wdev->func_idx));
@@ -287,7 +294,7 @@ INT APSendPacket(RTMP_ADAPTER *pAd, PNDIS_PACKET pPacket)
if (pkt_len < frag_sz)
NumberOfFrag = 1;
else
- NumberOfFrag = (pkt_len / frag_sz) + 1;
+ NumberOfFrag = (UCHAR)((pkt_len / frag_sz) + 1);
/* Save fragment number to Ndis packet reserved field */
RTMP_SET_PACKET_FRAGMENTS(pPacket, NumberOfFrag);
@@ -700,6 +707,13 @@ static inline VOID APFindCipherAlgorithm(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
ASSERT(pTxBlk->wdev_idx < WDEV_NUM_MAX);
wdev = pAd->wdev_list[pTxBlk->wdev_idx];
ASSERT(wdev->func_idx < pAd->ApCfg.BssidNum);
+ if ((wdev->func_idx < 0) || (wdev->func_idx >= pAd->ApCfg.BssidNum)) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s wrong wdev->func_idx %d BssidNum %u\n",
+ __func__, wdev->func_idx,
+ pAd->ApCfg.BssidNum));
+ return;
+ }
+
#ifdef WAPI_SUPPORT
pMbss = &pAd->ApCfg.MBSSID[wdev->func_idx];
#endif /* WAPI_SUPPORT */
@@ -1213,7 +1227,7 @@ static inline VOID APBuildCommon802_11Header(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
static inline PUCHAR AP_Build_ARalink_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
{
- UCHAR *pHeaderBufPtr;
+ UCHAR *pHeaderBufPtr, *pTmpHeaderBufPtr;
HEADER_802_11 *wifi_hdr;
PNDIS_PACKET pNextPacket;
UINT32 nextBufLen;
@@ -1258,9 +1272,9 @@ static inline PUCHAR AP_Build_ARalink_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *pT
}
/* padding at front of LLC header. LLC header should at 4-bytes aligment. */
- pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+ pTmpHeaderBufPtr = pHeaderBufPtr;
pHeaderBufPtr = (UCHAR *)ROUND_UP(pHeaderBufPtr, 4);
- pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)(pHeaderBufPtr - pTmpHeaderBufPtr);
/*
@@ -1383,7 +1397,7 @@ static inline BOOLEAN BuildHtcField(
static inline PUCHAR AP_Build_AMSDU_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
{
- UCHAR *buf_ptr;
+ UCHAR *buf_ptr, *tmp_buf_ptr;
HEADER_802_11 *wifi_hdr;
APFindCipherAlgorithm(pAd, pTxBlk);
@@ -1524,9 +1538,9 @@ static inline PUCHAR AP_Build_AMSDU_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *pTxB
LLC header should locate at 4-octets aligment
@@@ MpduHeaderLen excluding padding @@@
*/
- pTxBlk->HdrPadLen = (ULONG)buf_ptr;
+ tmp_buf_ptr = buf_ptr;
buf_ptr = (UCHAR *)(ROUND_UP(buf_ptr, 4));
- pTxBlk->HdrPadLen = (ULONG)(buf_ptr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)(buf_ptr - tmp_buf_ptr);
return buf_ptr;
@@ -1536,7 +1550,7 @@ static inline PUCHAR AP_Build_AMSDU_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *pTxB
VOID AP_AMPDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
{
HEADER_802_11 *wifi_hdr;
- UCHAR *pHeaderBufPtr, *src_ptr;
+ UCHAR *pHeaderBufPtr, *src_ptr, *pTmpHeaderBufPtr;
USHORT freeCnt = 1;
BOOLEAN bVLANPkt;
MAC_TABLE_ENTRY *pMacEntry;
@@ -1841,9 +1855,9 @@ hex_dump("AMPDU HeaderBufPtr", pHeaderBufPtr, pTxBlk->wifi_hdr_len);
@@@ MpduHeaderLen excluding padding @@@
*/
- pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+ pTmpHeaderBufPtr = pHeaderBufPtr;
pHeaderBufPtr = (UCHAR *)ROUND_UP(pHeaderBufPtr, 4);
- pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)(pHeaderBufPtr - pTmpHeaderBufPtr);
#ifdef VENDOR_FEATURE1_SUPPORT
tr_entry->HdrPadLen = pTxBlk->HdrPadLen;
@@ -2316,7 +2330,8 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
// TODO: shiang-usw, check this, original code is use pTxBlk->HeaderBuf[0]
pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE];
#endif /* defined(MT7603) || defined(MT7628) */
- padding = ROUND_UP(AMSDU_SUBHEAD_LEN + subFramePayloadLen, 4) - (AMSDU_SUBHEAD_LEN + subFramePayloadLen);
+ padding = (UCHAR)(ROUND_UP(AMSDU_SUBHEAD_LEN + subFramePayloadLen, 4)
+ - (AMSDU_SUBHEAD_LEN + subFramePayloadLen));
NdisZeroMemory(pHeaderBufPtr, padding + AMSDU_SUBHEAD_LEN);
pHeaderBufPtr += padding;
pTxBlk->MpduHeaderLen = padding;
@@ -2327,7 +2342,7 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
DA(6)+SA(6)+Length(2) + LLC/SNAP Encap
*/
subFrameHeader = pHeaderBufPtr;
- subFramePayloadLen = pTxBlk->SrcBufLen;
+ subFramePayloadLen = (USHORT)pTxBlk->SrcBufLen;
NdisMoveMemory(subFrameHeader, pTxBlk->pSrcBufHeader, 12);
@@ -2373,7 +2388,7 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
/* Insert LLC-SNAP encapsulation - 8 octets */
EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData - 2, pTxBlk->pExtraLlcSnapEncap);
- subFramePayloadLen = pTxBlk->SrcBufLen;
+ subFramePayloadLen = (USHORT)pTxBlk->SrcBufLen;
if (pTxBlk->pExtraLlcSnapEncap) {
NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
@@ -2386,7 +2401,7 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
}
/* update subFrame Length field */
- subFrameHeader[12] = (subFramePayloadLen & 0xFF00) >> 8;
+ subFrameHeader[12] = (UCHAR)((subFramePayloadLen & 0xFF00) >> 8);
subFrameHeader[13] = subFramePayloadLen & 0xFF;
#if defined(MT7603) || defined(MT7628)
@@ -2399,9 +2414,10 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
#endif /* MT7603 */
if (frameNum == 0)
- FirstTx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &freeCnt);
+ FirstTx = HAL_WriteMultiTxResource(pAd, pTxBlk, (UCHAR)frameNum, &freeCnt);
else
- /*LastTxIdx = */HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &freeCnt);
+ /*LastTxIdx = */HAL_WriteMultiTxResource(pAd, pTxBlk
+ , (UCHAR)frameNum, &freeCnt);
#ifdef DBG_CTRL_SUPPORT
#ifdef INCLUDE_DEBUG_QUEUE
@@ -2486,7 +2502,7 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
VOID AP_Legacy_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
{
HEADER_802_11 *wifi_hdr;
- UCHAR *pHeaderBufPtr;
+ UCHAR *pHeaderBufPtr, *pTmpHeaderBufPtr;
USHORT freeCnt = 1;
BOOLEAN bVLANPkt;
QUEUE_ENTRY *pQEntry;
@@ -2703,9 +2719,9 @@ DBGPRINT(RT_DEBUG_TRACE, ("<--%s(%d): ##########Fail#########\n", __FUNCTION__,
}
/* The remaining content of MPDU header should locate at 4-octets aligment */
- pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+ pTmpHeaderBufPtr = pHeaderBufPtr;
pHeaderBufPtr = (UCHAR *)ROUND_UP(pHeaderBufPtr, 4);
- pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)(pHeaderBufPtr - pTmpHeaderBufPtr);
pTxBlk->MpduHeaderLen = pTxBlk->wifi_hdr_len;
#ifdef SOFT_ENCRYPT
@@ -3021,7 +3037,7 @@ VOID AP_Legacy_Frame_Tx_Hdr_Trns(
VOID AP_Fragment_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
{
HEADER_802_11 *wifi_hdr;
- UCHAR *pHeaderBufPtr;
+ UCHAR *pHeaderBufPtr, *pTmpHeaderBufPtr;
USHORT freeCnt = 1;
BOOLEAN bVLANPkt;
QUEUE_ENTRY *pQEntry;
@@ -3125,9 +3141,9 @@ DBGPRINT(RT_DEBUG_TRACE, ("%s(): Before Frag, pTxBlk->MpduHeaderLen=%d, wifi_hdr
}
/* The remaining content of MPDU header should locate at 4-octets aligment */
- pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+ pTmpHeaderBufPtr = pHeaderBufPtr;
pHeaderBufPtr = (UCHAR *)ROUND_UP(pHeaderBufPtr, 4);
- pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)(pHeaderBufPtr - pTmpHeaderBufPtr);
pTxBlk->MpduHeaderLen = pTxBlk->wifi_hdr_len;
#ifdef SOFT_ENCRYPT
@@ -3278,9 +3294,9 @@ DBGPRINT(RT_DEBUG_TRACE, ("%s(): Before Frag, pTxBlk->MpduHeaderLen=%d, wifi_hdr
pTransmit = pTxBlk->pTransmit;
/* Decide the TX rate */
if (pTransmit->field.MODE == MODE_CCK)
- pTxBlk->TxRate = pTransmit->field.MCS;
+ pTxBlk->TxRate = (UCHAR)pTransmit->field.MCS;
else if (pTransmit->field.MODE == MODE_OFDM)
- pTxBlk->TxRate = pTransmit->field.MCS + RATE_FIRST_OFDM_RATE;
+ pTxBlk->TxRate = (UCHAR)(pTransmit->field.MCS + RATE_FIRST_OFDM_RATE);
else
pTxBlk->TxRate = RATE_6_5;
@@ -3572,9 +3588,10 @@ dump_tmac_info(pAd, &pTxBlk->HeaderBuf[pTxBlk->hw_rsv_len]);
#endif /* defined(MT7603) || defined(MT7628) */
if (frameNum == 0)
- FirstTx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &freeCnt);
+ FirstTx = HAL_WriteMultiTxResource(pAd, pTxBlk, (UCHAR)frameNum, &freeCnt);
else
- LastTxIdx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &freeCnt);
+ LastTxIdx = HAL_WriteMultiTxResource(pAd, pTxBlk
+ , (UCHAR)frameNum, &freeCnt);
#ifdef SMART_ANTENNA
if (pTxBlk->pMacEntry)
@@ -3776,7 +3793,8 @@ NDIS_STATUS APHardTransmit(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
&& (!RTMP_CFG80211_VIF_P2P_GO_ON(pAd)) && (!RTMP_CFG80211_VIF_P2P_CLI_ON(pAd)))
{
DBGPRINT(RT_DEBUG_TRACE, ("%s(%d) device is not in AP MODE,and the p2p GO interface is down, release the packet!\n", __FUNCTION__, __LINE__));
- RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+ if (pPacket)
+ RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
return NDIS_STATUS_FAILURE;
}
@@ -4369,7 +4387,7 @@ INT ap_rx_ps_handle(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk)
#endif /* UAPSD_SUPPORT */
/* 1: PWR_SAVE, 0: PWR_ACTIVE */
- OldPwrMgmt = RtmpPsIndicate(pAd, pHeader->Addr2, pEntry->wcid, pHeader->FC.PwrMgmt);
+ OldPwrMgmt = RtmpPsIndicate(pAd, pHeader->Addr2, pEntry->wcid, (UCHAR)pHeader->FC.PwrMgmt);
if(OldPwrMgmt > 2)
DBGPRINT(RT_DEBUG_TRACE, ("OldPwrMgmt is %d\n", OldPwrMgmt));
@@ -4430,9 +4448,8 @@ INT ap_rx_foward_handle(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, PNDIS_PACKET p
BSS_STRUCT *pMbss;
struct wifi_dev *dst_wdev = NULL;
- if ((wdev->func_idx >= MAX_MBSSID_NUM(pAd)) ||
- (wdev->func_idx >= HW_BEACON_MAX_NUM))
- {
+ if ((wdev->func_idx < 0) || (wdev->func_idx >= MAX_MBSSID_NUM(pAd)) ||
+ (wdev->func_idx >= HW_BEACON_MAX_NUM)) {
DBGPRINT(RT_DEBUG_ERROR, ("%s():Invalid func_idx(%d), type(%d)!\n",
__FUNCTION__, wdev->func_idx, wdev->wdev_type));
return FALSE;
diff --git a/ap/ap_mbss.c b/ap/ap_mbss.c
index cd1bc2b..cff0931 100755
--- a/ap/ap_mbss.c
+++ b/ap/ap_mbss.c
@@ -84,6 +84,9 @@ VOID MBSS_Init(RTMP_ADAPTER *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevOps)
if (MaxNumBss > MAX_MBSSID_NUM(pAd))
MaxNumBss = MAX_MBSSID_NUM(pAd);
+ if (MaxNumBss > ARRAY_SIZE(pAd->ApCfg.MBSSID))
+ MaxNumBss = ARRAY_SIZE(pAd->ApCfg.MBSSID);
+
/* first IdBss must not be 0 (BSS0), must be 1 (BSS1) */
for(IdBss=FIRST_MBSSID; IdBss<MAX_MBSSID_NUM(pAd); IdBss++)
pAd->ApCfg.MBSSID[IdBss].wdev.if_dev = NULL;
@@ -103,13 +106,20 @@ VOID MBSS_Init(RTMP_ADAPTER *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevOps)
BSS_STRUCT *pMbss;
dev_name = get_dev_name_prefix(pAd, INT_MBSSID);
+ if (!dev_name) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s(): Get dev name prefix fail!\n",
+ __func__));
+ break;
+ }
+
pDevNew = RtmpOSNetDevCreate(MC_RowID, &IoctlIF, INT_MBSSID, IdBss, sizeof(struct mt_dev_priv), dev_name);
#ifdef HOSTAPD_SUPPORT
pAd->IoctlIF = IoctlIF;
#endif /* HOSTAPD_SUPPORT */
if (pDevNew == NULL)
{
- pAd->ApCfg.BssidNum = IdBss; /* re-assign new MBSS number */
+ pAd->ApCfg.BssidNum = (UCHAR)IdBss; /* re-assign new MBSS number */
break;
}
else
@@ -121,7 +131,7 @@ VOID MBSS_Init(RTMP_ADAPTER *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevOps)
wdev = &pAd->ApCfg.MBSSID[IdBss].wdev;
wdev->wdev_type = WDEV_TYPE_AP;
wdev->func_dev = &pAd->ApCfg.MBSSID[IdBss];
- wdev->func_idx = IdBss;
+ wdev->func_idx = (CHAR)IdBss;
wdev->sys_handle = (void *)pAd;
wdev->if_dev = pDevNew;
if (rtmp_wdev_idx_reg(pAd, wdev) < 0) {
@@ -262,7 +272,7 @@ INT32 mbss_cr_enable(PNET_DEV pDev)
pAd = RTMP_OS_NETDEV_GET_PRIV(pDev);
BssId = RT28xx_MBSS_IdxGet(pAd, pDev);
- printk("##### %s, BssId = %d\n", __func__, BssId);
+ DBGPRINT(RT_DEBUG_OFF, ("##### %s, BssId = %d\n", __func__, BssId));
if (BssId < 0)
return -1;
@@ -317,6 +327,10 @@ INT mbss_cr_disable(PNET_DEV pDev)
for (loop = 1; loop < pAd->ApCfg.BssidNum; loop++) {
if (loop == BssId)
continue;//skip itself.
+
+ if (loop >= ARRAY_SIZE(pAd->ApCfg.MBSSID))
+ break;
+
if (pAd->ApCfg.MBSSID[loop].bcn_buf.bBcnSntReq == TRUE)
any_mbss_enable = TRUE;
}
diff --git a/ap/ap_mlme.c b/ap/ap_mlme.c
index 360688e..be3f431 100755
--- a/ap/ap_mlme.c
+++ b/ap/ap_mlme.c
@@ -89,7 +89,8 @@ VOID APDetectOverlappingExec(
if ((pAd->CommonCfg.Channel <=14) && (pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth == BW_40))
{
pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 1;
- pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
+ pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset =
+ (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
}
}
else
@@ -229,7 +230,7 @@ VOID APMlmePeriodicExec(
ctrl_type = ASIC_MAC_TXRX;
break;
}
- AsicSetMacTxRx(pAd, ctrl_type, enable);
+ AsicSetMacTxRx(pAd, ctrl_type, (BOOLEAN)enable);
}
#endif /* CONFIG_FPGA_MODE */
diff --git a/ap/ap_nps.c b/ap/ap_nps.c
index d90a24a..526a9cb 100755
--- a/ap/ap_nps.c
+++ b/ap/ap_nps.c
@@ -141,7 +141,7 @@ VOID write_tmac_info_tim(RTMP_ADAPTER *pAd, INT apidx, UCHAR *tmac_buf, HTTRANSM
mac_info.Txopmode = IFS_HTTXOP;
mac_info.q_idx = Q_IDX_BCN;
mac_info.hdr_len = 24;
- mac_info.bss_idx = apidx;
+ mac_info.bss_idx = (UCHAR)apidx;
mac_info.SpeEn = 1;
mac_info.Preamble = LONG_PREAMBLE;
write_tmac_info(pAd, tmac_buf, &mac_info, BeaconTransmit);
@@ -301,7 +301,7 @@ VOID APMakeBssTimFrame2(RTMP_ADAPTER *pAd, INT apidx)
UINT i;
if(!TimTransmitRequired(pAd, apidx, pMbss)) {
- printk("%s, apidx = %d\n", __func__, apidx);
+ DBGPRINT(RT_DEBUG_OFF, ("%s, apidx = %d\n", __func__, apidx));
return;
}
@@ -425,7 +425,7 @@ VOID APMakeBssTimFrame2(RTMP_ADAPTER *pAd, INT apidx)
static UCHAR GetTimNum(RTMP_ADAPTER *pAd)
{
int i;
- int NumTim;
+ UCHAR NumTim;
TIM_BUF_STRUC *tim_info;
NumTim = 0;
diff --git a/ap/ap_repeater.c b/ap/ap_repeater.c
index e0c5057..3593dfd 100755
--- a/ap/ap_repeater.c
+++ b/ap/ap_repeater.c
@@ -802,16 +802,17 @@ INT Show_Repeater_Cli_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if (!pAd->ApCfg.bMACRepeaterEn)
return TRUE;
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#ifdef DOT11_N_SUPPORT
- printk("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("HT Operating Mode : %d\n",
+ pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#endif /* DOT11_N_SUPPORT */
- printk("\n%-19s%-4s%-4s%-4s%-4s%-8s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s%-7s%-7s\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-4s%-4s%-4s%-4s%-8s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s%-7s%-7s\n",
"MAC", "AID", "BSS", "PSM", "WMM", "MIMOPS", "RSSI0", "RSSI1",
- "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate");
+ "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate"));
for (i = 0; i < MAX_LEN_OF_MAC_TABLE; i++)
{
@@ -821,30 +822,33 @@ INT Show_Repeater_Cli_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
DataRate=0;
getRate(pEntry->HTPhyMode, &DataRate);
- printk("%02X:%02X:%02X:%02X:%02X:%02X ",
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X ",
pEntry->ReptCliAddr[0], pEntry->ReptCliAddr[1], pEntry->ReptCliAddr[2],
- pEntry->ReptCliAddr[3], pEntry->ReptCliAddr[4], pEntry->ReptCliAddr[5]);
+ pEntry->ReptCliAddr[3], pEntry->ReptCliAddr[4], pEntry->ReptCliAddr[5]));
- printk("%-4d", (int)pEntry->Aid);
- printk("%-4d-%d", (int)pEntry->apidx, pEntry->func_tb_idx);
- printk("%-4d", (int)pEntry->PsMode);
- printk("%-4d", (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d-%d", (int)pEntry->apidx, pEntry->func_tb_idx));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->PsMode));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d",
+ (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE)));
#ifdef DOT11_N_SUPPORT
- printk("%-8d", (int)pEntry->MmpsMode);
-#endif /* DOT11_N_SUPPORT */
- printk("%-7d", pEntry->RssiSample.AvgRssi[0]);
- printk("%-7d", pEntry->RssiSample.AvgRssi[1]);
- printk("%-7d", pEntry->RssiSample.AvgRssi[2]);
- printk("%-10s", get_phymode_str(pEntry->HTPhyMode.field.MODE));
- printk("%-6s", get_bw_str(pEntry->HTPhyMode.field.BW));
- printk("%-6d", pEntry->HTPhyMode.field.MCS);
- printk("%-6d", pEntry->HTPhyMode.field.ShortGI);
- printk("%-6d", pEntry->HTPhyMode.field.STBC);
- printk("%-7d", (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount));
- printk("%-7d", (int)DataRate);
- printk("%-10d, %d, %d%%\n", pEntry->DebugFIFOCount, pEntry->DebugTxCount,
- (pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%-8d", (int)pEntry->MmpsMode));
+#endif /* DOT11_N_SUPPORT */)
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[0]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[1]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[2]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-10s", get_phymode_str(pEntry->HTPhyMode.field.MODE)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6s", get_bw_str(pEntry->HTPhyMode.field.BW)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.MCS));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.ShortGI));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.STBC));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d",
+ (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", (int)DataRate));
+ DBGPRINT(RT_DEBUG_OFF, ("%-10d, %d, %d%%\n", pEntry->DebugFIFOCount,
+ pEntry->DebugTxCount, (pEntry->DebugTxCount) ?
+ ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
diff --git a/ap/ap_sync.c b/ap/ap_sync.c
index e08a17a..4815095 100755
--- a/ap/ap_sync.c
+++ b/ap/ap_sync.c
@@ -1768,8 +1768,11 @@ VOID APPeerBeaconAtScanAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
Rssi = RealRssi + pAd->BbpRssiToDbmDelta;
Idx = BssTableSetEntry(pAd, &pAd->ScanTab, ie_list, Rssi, LenVIE, pVIE);
- if (Idx != BSS_NOT_FOUND)
- {
+ if ((Idx != BSS_NOT_FOUND) && (Idx >= ARRAY_SIZE(pAd->ScanTab.BssEntry))) {
+ DBGPRINT(RT_DEBUG_OFF,
+ ("%s wrong idx %lu BssEntry sz %zu\n", __func__,
+ Idx, ARRAY_SIZE(pAd->ScanTab.BssEntry)));
+ } else if (Idx != BSS_NOT_FOUND) {
NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].PTSF, &Elem->Msg[24], 4);
NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[0], &Elem->TimeStamp.u.LowPart, 4);
NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[4], &Elem->TimeStamp.u.LowPart, 4);
@@ -1855,10 +1858,10 @@ VOID ApSiteSurvey(
RTMPZeroMemory(ScanReq.Ssid, MAX_LEN_OF_SSID);
ScanReq.SsidLen = 0;
- if (pSsid)
- {
- ScanReq.SsidLen = pSsid->SsidLength;
- NdisMoveMemory(ScanReq.Ssid, pSsid->Ssid, pSsid->SsidLength);
+ if (pSsid) {
+ ScanReq.SsidLen = (UCHAR)pSsid->SsidLength;
+ if (pSsid->SsidLength > 0)
+ NdisMoveMemory(ScanReq.Ssid, pSsid->Ssid, pSsid->SsidLength);
}
ScanReq.BssType = BSS_ANY;
ScanReq.ScanType = ScanType;
diff --git a/ap/ap_wpa.c b/ap/ap_wpa.c
index 05656fe..32f5bea 100755
--- a/ap/ap_wpa.c
+++ b/ap/ap_wpa.c
@@ -883,14 +883,14 @@ VOID GREKEYPeriodicExec(
USHORT Wcid;
/* Get a specific WCID to record this MBSS key attribute */
- GET_GroupKey_WCID(pAd, Wcid, apidx);
+ GET_GroupKey_WCID(pAd, Wcid, (USHORT)apidx);
/* Install shared key table */
WPAInstallSharedKey(pAd,
- wdev->GroupKeyWepStatus,
- apidx,
+ (UINT8)wdev->GroupKeyWepStatus,
+ (UINT8)apidx,
wdev->DefaultKeyId,
- Wcid,
+ (UINT8)Wcid,
TRUE,
pMbss->GTK,
LEN_TKIP_GTK);
diff --git a/ap/apcli_assoc.c b/ap/apcli_assoc.c
index d0a1c78..58cb2a3 100755
--- a/ap/apcli_assoc.c
+++ b/ap/apcli_assoc.c
@@ -377,6 +377,9 @@ static VOID ApCliMlmeAssocReqAction(
NdisZeroMemory(&HtCapabilityTmp, sizeof(HT_CAPABILITY_IE));
NdisMoveMemory(&HtCapabilityTmp, &apcli_entry->MlmeAux.HtCapability, apcli_entry->MlmeAux.HtCapabilityLen);
+ /* WFD 6.1.21E: the peer devices will use BW based on HT Support Channel width in HT Capability IE */
+ if (pAd->CommonCfg.RegTransmitSetting.field.BW == HT_BW_20)
+ HtCapabilityTmp.HtCapInfo.ChannelWidth = BW_20;
#ifdef DOT11N_SS3_SUPPORT
HtCapabilityTmp.MCSSet[2] = (apcli_entry->MlmeAux.HtCapability.MCSSet[2] & apcli_entry->RxMcsSet[2]);
#endif /* DOT11N_SS3_SUPPORT */
@@ -704,8 +707,8 @@ static VOID ApCliMlmeDisassocReqAction(
RTMPSendWirelessEvent(pAd, IW_DISASSOC_EVENT_FLAG, NULL, BSS0, 0);
#endif /* WPA_SUPPLICANT_SUPPORT */
-#if defined(RT_CFG80211_P2P_CONCURRENT_DEVICE) || defined(CFG80211_MULTI_STA)
- RT_CFG80211_LOST_GO_INFORM(pAd);
+#if defined(RT_CFG80211_P2P_CONCURRENT_DEVICE) || defined(CFG80211_MULTI_STA)
+ RT_CFG80211_LOST_GO_INFORM(pAd, pDisassocReq->Reason);
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE || CFG80211_MULTI_STA */
return;
@@ -791,7 +794,8 @@ static VOID ApCliPeerAssocRspAction(
pAd->ApCfg.ApCliTab[ifIndex].ResVarIELen = 0;
pFrame = (PFRAME_802_11) (Elem->Msg);
- pAd->ApCfg.ApCliTab[ifIndex].ResVarIELen = Elem->MsgLen - 6 - sizeof (HEADER_802_11);
+ pAd->ApCfg.ApCliTab[ifIndex].ResVarIELen =
+ (USHORT)(Elem->MsgLen - 6 - sizeof(HEADER_802_11));
NdisCopyMemory(pAd->ApCfg.ApCliTab[ifIndex].ResVarIEs, &pFrame->Octet[6], pAd->ApCfg.ApCliTab[ifIndex].ResVarIELen);
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE || CFG80211_MULTI_STA */
diff --git a/ap/apcli_auth.c b/ap/apcli_auth.c
index 898982f..9532371 100755
--- a/ap/apcli_auth.c
+++ b/ap/apcli_auth.c
@@ -359,7 +359,8 @@ static VOID ApCliPeerAuthRspAtSeq2Action(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM * El
INC_TX_TSC(pKey->TxTsc, LEN_WEP_TSC);
/* Construct the 4-bytes WEP IV header */
- RTMPConstructWEPIVHdr(default_key, pKey->TxTsc, iv_hdr);
+ RTMPConstructWEPIVHdr((UINT8)default_key
+ , pKey->TxTsc, iv_hdr);
Alg = cpu2le16(*(USHORT *)&Alg);
Seq = cpu2le16(*(USHORT *)&Seq);
@@ -575,6 +576,7 @@ static VOID ApCliPeerDeauthAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
DBGPRINT(RT_DEBUG_OFF, ("APCLI AUTH_RSP - receive DE-AUTH from our AP\n"));
*pCurrState = APCLI_AUTH_REQ_IDLE;
+ pAd->ApCfg.ApCliTab[ifIndex].LastDeauthReason = Reason;
#ifdef WPA_SUPPLICANT_SUPPORT
tr_entry = &pAd->MacTab.tr_entry[pAd->ApCfg.ApCliTab[ifIndex].MacTabWCID];
diff --git a/ap/apcli_ctrl.c b/ap/apcli_ctrl.c
index 9a59ee9..6e07b61 100755
--- a/ap/apcli_ctrl.c
+++ b/ap/apcli_ctrl.c
@@ -191,6 +191,7 @@ static VOID ApCliCtrlJoinReqAction(
return;
pApCliEntry = &pAd->ApCfg.ApCliTab[ifIndex];
+ pApCliEntry->LastDeauthReason = REASON_DEAUTH_STA_LEAVING;
NdisZeroMemory(&JoinReq, sizeof(APCLI_MLME_JOIN_REQ_STRUCT));
@@ -891,7 +892,7 @@ static VOID ApCliCtrlAssocRspAction(
ifIndex = (USHORT)(Elem->Priv);
#endif /* MAC_REPEATER_SUPPORT */
- if (ApCliLinkUp(pAd, ifIndex))
+ if (ApCliLinkUp(pAd, (UCHAR)ifIndex))
{
*pCurrState = APCLI_CTRL_CONNECTED;
@@ -1035,7 +1036,7 @@ static VOID ApCliCtrlDeAssocRspAction(
#endif /* MAC_REPEATER_SUPPORT */
if (bValid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
*pCurrState = APCLI_CTRL_DISCONNECTED;
@@ -1188,7 +1189,7 @@ static VOID ApCliCtrlDisconnectReqAction(
DBGPRINT(RT_DEBUG_ERROR, ("(%s) 2. Before do ApCliLinkDown.\n", __FUNCTION__));
if (bValid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
/* set the apcli interface be invalid. */
#ifdef MAC_REPEATER_SUPPORT
@@ -1289,7 +1290,7 @@ static VOID ApCliCtrlPeerDeAssocReqAction(
#endif /* MAC_REPEATER_SUPPORT */
if (bValid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
#ifdef APCLI_AUTO_CONNECT_SUPPORT
if ((pAd->ApCfg.ApCliAutoConnectRunning == TRUE)
@@ -1387,7 +1388,7 @@ static VOID ApCliCtrlDeAssocAction(
sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, ifIndex);
if (bValid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
/* set the apcli interface be invalid. */
#ifdef MAC_REPEATER_SUPPORT
@@ -1479,7 +1480,7 @@ static VOID ApCliCtrlDeAuthAction(
ifIndex);
if (bValid)
- ApCliLinkDown(pAd, ifIndex);
+ ApCliLinkDown(pAd, (UCHAR)ifIndex);
/* set the apcli interface be invalid. */
#ifdef MAC_REPEATER_SUPPORT
diff --git a/ap/apcli_link_cover.c b/ap/apcli_link_cover.c
index 7aba673..b22d48b 100755
--- a/ap/apcli_link_cover.c
+++ b/ap/apcli_link_cover.c
@@ -47,20 +47,20 @@ INT ApcliLinkMonitorThread(
RtmpOSTaskCustomize(pTask);
if (p2G_pAd == NULL) {
- printk("##### no 2G pAd!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, ("##### no 2G pAd!!!\n"));
//RtmpOSTaskNotifyToExit(pTask);
// return 0;
} else if (p5G_pAd == NULL) {
- printk("##### no 5G pAd!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, ("##### no 5G pAd!!!\n"));
//RtmpOSTaskNotifyToExit(pTask);
// return 0;
}
if (p5G_pAd == pAd) {
- printk("we are 5G interface, wait 2G link update\n");
+ DBGPRINT(RT_DEBUG_OFF, ("we are 5G interface, wait 2G link update\n"));
pAd_other_band = p2G_pAd;
}
else {
- printk("we are 2G interface, wait 5G link update\n");
+ DBGPRINT(RT_DEBUG_OFF, ("we are 2G interface, wait 5G link update\n"));
pAd_other_band = p5G_pAd;
}
@@ -90,7 +90,7 @@ INT ApcliLinkMonitorThread(
* This is important in preemption kernels, which transfer the flow
* of execution immediately upon a complete().
*/
- printk("<---ApcliLinkMonitorThread\n");
+ DBGPRINT(RT_DEBUG_OFF, ("<---ApcliLinkMonitorThread\n"));
//if (pTask)
// RtmpOSTaskNotifyToExit(pTask);
@@ -103,7 +103,7 @@ NDIS_STATUS RtmpApcliLinkTaskInit(IN PRTMP_ADAPTER pAd)
RTMP_OS_TASK *pTask;
NDIS_STATUS status;
- printk("##### %s\n", __func__);
+ DBGPRINT(RT_DEBUG_OFF, ("##### %s\n", __func__));
/* Creat ApCli Link Monitor Thread */
pTask = &pAd->apcliLinkTask;
RTMP_OS_TASK_INIT(pTask, "LinkMonitorTask", pAd);
@@ -112,7 +112,8 @@ NDIS_STATUS RtmpApcliLinkTaskInit(IN PRTMP_ADAPTER pAd)
if (status == NDIS_STATUS_FAILURE)
{
/* printk ("%s: unable to start RTPCICmdThread\n", RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev)); */
- printk ("%s: Unable to start ApcliLinkMonitorThread!\n", get_dev_name_prefix(pAd, INT_APCLI));
+ DBGPRINT(RT_DEBUG_ERROR, ("%s: Unable to start ApcliLinkMonitorThread!\n",
+ get_dev_name_prefix(pAd, INT_APCLI)));
return NDIS_STATUS_FAILURE;
}
@@ -124,7 +125,7 @@ VOID RtmpApcliLinkTaskExit(
{
INT ret;
- printk("##### %s\n", __func__);
+ DBGPRINT(RT_DEBUG_OFF, ("##### %s\n", __func__));
/* Terminate cmdQ thread */
RTMP_OS_TASK_LEGALITY(&pAd->apcliLinkTask)
{
diff --git a/ap/apcli_sync.c b/ap/apcli_sync.c
index 724f7db..bf39181 100755
--- a/ap/apcli_sync.c
+++ b/ap/apcli_sync.c
@@ -646,12 +646,24 @@ static VOID ApCliEnqueueProbeRequest(
}
else
{
- if(MAC_ADDR_EQUAL(pAd->ApCfg.ApCliTab[ifIndex].CfgApCliBssid, ZERO_MAC_ADDR))
+ if (MAC_ADDR_EQUAL(pAd->ApCfg.ApCliTab[ifIndex].CfgApCliBssid, ZERO_MAC_ADDR)) {
ApCliMgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0,
BROADCAST_ADDR, BROADCAST_ADDR, ifIndex);
- else
+ } else {
+#if 1
+ /* Fix WFD Certification 6.1.21B and IOT issue:
+ * DUT will not reply probe response
+ * if we send the probe request by unicast
+ */
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("force out a ProbeRequest by broadcast but not unicast...\n"));
+ ApCliMgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0,
+ BROADCAST_ADDR, BROADCAST_ADDR, ifIndex);
+#else
ApCliMgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0,
pAd->ApCfg.ApCliTab[ifIndex].CfgApCliBssid, pAd->ApCfg.ApCliTab[ifIndex].CfgApCliBssid, ifIndex);
+#endif
+ }
ssidLen = SsidLen;
NdisZeroMemory(ssid, MAX_LEN_OF_SSID);
diff --git a/ate/ate_agent.c b/ate/ate_agent.c
index 4683e7b..679029d 100755
--- a/ate/ate_agent.c
+++ b/ate/ate_agent.c
@@ -352,7 +352,7 @@ INT32 SetATETxPower0(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: Power0 = %s\n", __FUNCTION__, Arg));
- Power = simple_strtol(Arg, 0, 10);
+ Power = (CHAR)simple_strtol(Arg, 0, 10);
ATECtrl->TxPower0 = Power;
@@ -374,7 +374,7 @@ INT32 SetATETxPower1(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: Power1 = %s\n", __FUNCTION__, Arg));
- Power = simple_strtol(Arg, 0, 10);
+ Power = (CHAR)simple_strtol(Arg, 0, 10);
ATECtrl->TxPower1 = Power;
@@ -410,7 +410,7 @@ INT32 SetATETxAntenna(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: Ant = %s\n", __FUNCTION__, Arg));
- Ant = simple_strtol(Arg, 0, 10);
+ Ant = (CHAR)simple_strtol(Arg, 0, 10);
Ret = ATEOp->SetTxAntenna(pAd, Ant);
@@ -430,7 +430,7 @@ INT32 SetATERxAntenna(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: Ant = %s\n", __FUNCTION__, Arg));
- Ant = simple_strtol(Arg, 0, 10);
+ Ant = (CHAR)simple_strtol(Arg, 0, 10);
Ret = ATEOp->SetRxAntenna(pAd, Ant);
@@ -577,7 +577,7 @@ INT32 SetATETxMcs(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
PhyMode = ATECtrl->PhyMode;
- Mcs = simple_strtol(Arg, 0, 10);
+ Mcs = (UCHAR)simple_strtol(Arg, 0, 10);
Ret = CheckMCSValid(pAd, PhyMode, Mcs);
@@ -602,7 +602,7 @@ INT32 SetATETxStbc(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: Stbc = %s\n", __FUNCTION__, Arg));
- Stbc = simple_strtol(Arg, 0, 10);
+ Stbc = (UCHAR)simple_strtol(Arg, 0, 10);
if (Stbc > 1)
{
@@ -625,7 +625,7 @@ INT32 SetATETxMode(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: TxMode = %s\n", __FUNCTION__, Arg));
- PhyMode = simple_strtol(Arg, 0, 10);
+ PhyMode = (UCHAR)simple_strtol(Arg, 0, 10);
if (PhyMode > MODE_HTGREENFIELD)
{
@@ -649,7 +649,7 @@ INT32 SetATETxGi(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
DBGPRINT(RT_DEBUG_OFF, ("%s: Sgi = %s\n", __FUNCTION__, Arg));
- Sgi = simple_strtol(Arg, 0, 10);
+ Sgi = (UCHAR)simple_strtol(Arg, 0, 10);
if (Sgi > 1)
{
@@ -846,22 +846,25 @@ INT32 SetATELoadE2pFromBuf(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
INT32 SetATEReadE2p(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
{
- UINT16 Buffer[EEPROM_SIZE >> 1];
+ USHORT *buffer;
UINT16 *p;
int i;
- EEReadAll(pAd, (UINT16 *)Buffer);
+ buffer = vmalloc(EEPROM_SIZE >> 1);
+ if (!buffer)
+ return FALSE;
- p = Buffer;
+ EEReadAll(pAd, (UINT16 *)buffer);
+ p = buffer;
- for (i = 0; i < (EEPROM_SIZE >> 1); i++)
- {
+ for (i = 0; i < (EEPROM_SIZE >> 1); i++) {
DBGPRINT(RT_DEBUG_OFF, ("%4.4x ", *p));
if (((i+1) % 16) == 0)
DBGPRINT(RT_DEBUG_OFF, ("\n"));
p++;
}
+ vfree(buffer);
return TRUE;
}
@@ -1345,11 +1348,11 @@ INT32 SetATEChannel(
INT32 Ret = 0;
ATE_CTRL *ATECtrl = &(pAd->ATECtrl);
ATE_OPERATION *ATEOp = ATECtrl->ATEOp;
- INT16 Channel;
+ UCHAR Channel;
DBGPRINT(RT_DEBUG_OFF, ("%s: Channel = %s\n", __FUNCTION__, Arg));
- Channel = simple_strtol(Arg, 0, 10);
+ Channel = (UCHAR)simple_strtol(Arg, 0, 10);
ATECtrl->Channel = Channel;
@@ -1378,9 +1381,9 @@ INT32 SetATETxBw(
DBGPRINT(RT_DEBUG_OFF, ("%s: Bw = %s\n", __FUNCTION__, Arg));
- BW = simple_strtol(Arg, 0, 10);
+ BW = (INT16)simple_strtol(Arg, 0, 10);
- ATECtrl->BW = BW;
+ ATECtrl->BW = (UCHAR)BW;
if (ATECtrl->BW == BW_20)
ATECtrl->ControlChl = ATECtrl->Channel;
diff --git a/ate/inf/ate_usb.c b/ate/inf/ate_usb.c
index ee251f9..6c20e53 100755
--- a/ate/inf/ate_usb.c
+++ b/ate/inf/ate_usb.c
@@ -51,7 +51,7 @@ INT TxDmaBusy(RTMP_ADAPTER *pAd)
is_busy = UsbCfg.field_76xx.TxBusy;
else
#endif /* MT76x2 */
- is_busy = UsbCfg.field.TxBusy;
+ is_busy = (BOOLEAN)UsbCfg.field.TxBusy;
result = (is_busy) ? TRUE : FALSE;
@@ -76,7 +76,7 @@ INT RxDmaBusy(RTMP_ADAPTER *pAd)
is_busy = UsbCfg.field_76xx.RxBusy;
else
#endif /* MT76x2 */
- is_busy = UsbCfg.field.RxBusy;
+ is_busy = (BOOLEAN)UsbCfg.field.RxBusy;
result = (is_busy) ? TRUE : FALSE;
@@ -548,7 +548,7 @@ VOID ATE_RTUSBBulkOutDataPacket(
PTX_CONTEXT pNullContext = &(pAd->NullContext);
PURB pUrb;
INT ret = 0;
- ULONG IrqFlags;
+ ULONG IrqFlags = 0;
#ifdef RELEASE_EXCLUDE
DBGPRINT(RT_DEBUG_INFO, ("--->ATE_RTUSBBulkOutDataPacket \n"));
diff --git a/ate/mt_mac/mt_ate.c b/ate/mt_mac/mt_ate.c
index 86becb1..e0fb11d 100755
--- a/ate/mt_mac/mt_ate.c
+++ b/ate/mt_mac/mt_ate.c
@@ -600,7 +600,6 @@ static INT32 MT_ATESetupFrame(RTMP_ADAPTER *pAd, UINT32 TxIdx)
MAC_TX_INFO mac_info;
HTTRANSMIT_SETTING Transmit;
ATECtrl->HLen = LENGTH_802_11;
- ATECtrl->TxLength = sizeof(HEADER_802_11);
NdisZeroMemory(&pAd->NullFrame, 24);
NdisZeroMemory(&Transmit, sizeof(Transmit));
@@ -630,7 +629,7 @@ static INT32 MT_ATESetupFrame(RTMP_ADAPTER *pAd, UINT32 TxIdx)
mac_info.Ack = FALSE;
mac_info.NSeq = FALSE;
- mac_info.hdr_len = ATECtrl->HLen;
+ mac_info.hdr_len = (UCHAR)ATECtrl->HLen;
mac_info.hdr_pad = 0;
mac_info.WCID = 0;
mac_info.Length = ATECtrl->TxLength;
@@ -642,7 +641,10 @@ static INT32 MT_ATESetupFrame(RTMP_ADAPTER *pAd, UINT32 TxIdx)
switch (ATECtrl->TxAntennaSel) {
case 0: /* Both */
mac_info.AntPri = 0;
- mac_info.SpeEn = 1;
+ if (pAd->CommonCfg.TxStream == 1)
+ mac_info.SpeEn = 0;
+ else
+ mac_info.SpeEn = 1;
break;
case 1: /* TX0 */
mac_info.AntPri = 0;
@@ -1047,7 +1049,7 @@ static INT32 MT_ATEStartRx(RTMP_ADAPTER *pAd)
RTUSBBulkReceive(pAd);
#endif /* RTMP_MAC_USB */
-printk("<-----iverson MT_ATEStartRx \n ");
+ DBGPRINT(RT_DEBUG_OFF, ("MT_ATEStartRx\n"));
return Ret;
}
@@ -1239,9 +1241,10 @@ static INT32 MT_ATESetTxAntenna(RTMP_ADAPTER *pAd, CHAR Ant)
/* 0: All 1:TX0 2:TX1 */
ATECtrl->TxAntennaSel = Ant;
+#ifdef RTMP_PCI_SUPPORT
if ((MTK_REV_GTE(pAd, MT7603, MT7603E1)) ||
(MTK_REV_GTE(pAd, MT7628, MT7628E1))||
- (MTK_REV_GTE(pAd, MT7628, MT7603E2)))
+ (MTK_REV_GTE(pAd, MT7603, MT7603E2)))
{
if (ATECtrl->TxAntennaSel == 0)
{
@@ -1325,7 +1328,49 @@ static INT32 MT_ATESetTxAntenna(RTMP_ADAPTER *pAd, CHAR Ant)
}
}
}
+#else
+ if ((MTK_REV_GTE(pAd, MT7603, MT7603E1)) ||
+ (MTK_REV_GTE(pAd, MT7628, MT7628E1)) ||
+ (MTK_REV_GTE(pAd, MT7603, MT7603E2))) {
+ if (ATECtrl->TxAntennaSel == 0) {
+ RTMP_IO_READ32(pAd, CR_RFINTF_00, &Value);
+ Value &= ~CR_RFINTF_CAL_NSS_MASK;
+ Value |= CR_RFINTF_CAL_NSS(0x0);
+ RTMP_IO_WRITE32(pAd, CR_RFINTF_00, Value);
+ /* Tx both patch, ePA/eLNA/, iPA/eLNA, iPA/iLNA */
+ if ((MTK_REV_GTE(pAd, MT7603, MT7603E1)) ||
+ (MTK_REV_GTE(pAd, MT7603, MT7603E2)))
+ RTMP_IO_WRITE32(pAd, 0x81060008, 0x04852390);
+ else if (MTK_REV_GTE(pAd, MT7628, MT7628E1))
+ RTMP_IO_WRITE32(pAd, 0x81060008, 0x00489523);
+ } else if (ATECtrl->TxAntennaSel == 1) {
+ RTMP_IO_READ32(pAd, CR_RFINTF_00, &Value);
+ Value &= ~CR_RFINTF_CAL_NSS_MASK;
+ Value |= CR_RFINTF_CAL_NSS(0x0);
+ RTMP_IO_WRITE32(pAd, CR_RFINTF_00, Value);
+
+ /* Tx0 patch, ePA/eLNA/, iPA/eLNA, iPA/iLNA */
+ if ((MTK_REV_GTE(pAd, MT7603, MT7603E1)) ||
+ (MTK_REV_GTE(pAd, MT7603, MT7603E2)))
+ RTMP_IO_WRITE32(pAd, 0x81060008, 0x04852390);
+ else if (MTK_REV_GTE(pAd, MT7628, MT7628E1))
+ RTMP_IO_WRITE32(pAd, 0x81060008, 0x00489523);
+ } else if (ATECtrl->TxAntennaSel == 2) {
+ RTMP_IO_READ32(pAd, CR_RFINTF_00, &Value);
+ Value &= ~CR_RFINTF_CAL_NSS_MASK;
+ Value |= CR_RFINTF_CAL_NSS(0x1);
+ RTMP_IO_WRITE32(pAd, CR_RFINTF_00, Value);
+
+ /* Tx1 patch, ePA/eLNA/, iPA/eLNA, iPA/iLNA */
+ if ((MTK_REV_GTE(pAd, MT7603, MT7603E1)) ||
+ (MTK_REV_GTE(pAd, MT7603, MT7603E2)))
+ RTMP_IO_WRITE32(pAd, 0x81060008, 0x04856790);
+ else if (MTK_REV_GTE(pAd, MT7628, MT7628E1))
+ RTMP_IO_WRITE32(pAd, 0x81060008, 0x00489567);
+ }
+ }
+#endif
return Ret;
}
@@ -1413,7 +1458,7 @@ static INT32 MT_ATESampleRssi(RTMP_ADAPTER *pAd, RX_BLK *RxBlk)
ATECtrl->AvgRssi0X8 = (ATECtrl->AvgRssi0X8 - ATECtrl->AvgRssi0)
+ ATECtrl->LastRssi0;
- ATECtrl->AvgRssi0 = ATECtrl->AvgRssi0X8 >> 3;
+ ATECtrl->AvgRssi0 = (CHAR)(ATECtrl->AvgRssi0X8 >> 3);
}
if (RxBlk->rx_signal.raw_rssi[1] != 0)
@@ -1423,7 +1468,7 @@ static INT32 MT_ATESampleRssi(RTMP_ADAPTER *pAd, RX_BLK *RxBlk)
ATECtrl->AvgRssi1X8 = (ATECtrl->AvgRssi1X8 - ATECtrl->AvgRssi1)
+ ATECtrl->LastRssi1;
- ATECtrl->AvgRssi1 = ATECtrl->AvgRssi1X8 >> 3;
+ ATECtrl->AvgRssi1 = (CHAR)(ATECtrl->AvgRssi1X8 >> 3);
}
ATECtrl->LastSNR0 = RxBlk->rx_signal.raw_snr[0];;
@@ -1466,7 +1511,7 @@ static INT32 MT_ATEStartTxTone(RTMP_ADAPTER *pAd, UINT32 Mode)
//ATE_CTRL *ATECtrl = &pAd->ATECtrl;
INT32 Ret = 0;
DBGPRINT(RT_DEBUG_OFF, ("%s\n", __FUNCTION__));
- AsicSetTxToneTest(pAd, 1, Mode);
+ AsicSetTxToneTest(pAd, 1, (UCHAR)Mode);
return Ret;
}
static INT32 MT_ATESetTxTonePower(RTMP_ADAPTER *pAd, INT32 pwr1, INT32 pwr2)
diff --git a/chips/mt7603.c b/chips/mt7603.c
index b739fea..3f5f999 100755
--- a/chips/mt7603.c
+++ b/chips/mt7603.c
@@ -188,7 +188,7 @@ static void mt7603_switch_channel(RTMP_ADAPTER *pAd, UCHAR channel, BOOLEAN scan
}
#endif
- DBGPRINT(RT_DEBUG_OFF,
+ DBGPRINT(RT_DEBUG_TRACE,
("%s(): Switch to Ch#%d(%dT%dR), BBP_BW=%d\n",
__FUNCTION__,
channel,
@@ -540,7 +540,7 @@ int mt7603_read_chl_pwr(RTMP_ADAPTER *pAd)
/* check PA type combination */
RT28xx_EEPROM_READ16(pAd, EEPROM_NIC1_OFFSET, Value);
- cap->pa_type = GET_PA_TYPE(Value);
+ cap->pa_type = (UINT8)GET_PA_TYPE(Value);
return TRUE;
}
@@ -560,22 +560,24 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_cck_5_11 = 0;
} else {
/* CCK 1M/2M */
- if (value & TX_PWR_CCK_1_2M_EN) {
- if (value & TX_PWR_CCK_1_2M_SIGN) {
- cap->tx_pwr_cck_1_2 = (value & TX_PWR_CCK_1_2M_MASK);
+ if (value & TX_PWR_CCK_1_2M_EN) {
+ if (value & TX_PWR_CCK_1_2M_SIGN) {
+ cap->tx_pwr_cck_1_2 = (CHAR)(value & TX_PWR_CCK_1_2M_MASK);
} else {
- cap->tx_pwr_cck_1_2 = -(value & TX_PWR_CCK_1_2M_MASK);
+ cap->tx_pwr_cck_1_2 =
+ (CHAR)(-(value & TX_PWR_CCK_1_2M_MASK));
}
} else {
cap->tx_pwr_cck_1_2 = 0;
}
/* CCK 5.5M/11M */
- if (value & TX_PWR_CCK_5_11M_EN) {
- if (value & TX_PWR_CCK_5_11M_SIGN) {
- cap->tx_pwr_cck_5_11 = ((value & TX_PWR_CCK_5_11M_MASK) >> 8);
+ if (value & TX_PWR_CCK_5_11M_EN) {
+ if (value & TX_PWR_CCK_5_11M_SIGN) {
+ cap->tx_pwr_cck_5_11 = (CHAR)((value & TX_PWR_CCK_5_11M_MASK) >> 8);
} else {
- cap->tx_pwr_cck_5_11 = -((value & TX_PWR_CCK_5_11M_MASK) >> 8);
+ cap->tx_pwr_cck_5_11 =
+ (CHAR)(-((value & TX_PWR_CCK_5_11M_MASK) >> 8));
}
} else {
cap->tx_pwr_cck_5_11 = 0;
@@ -592,22 +594,26 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_g_band_ofdm_12_18 = 0;
} else {
/* OFDM 6M/9M */
- if (value & TX_PWR_G_BAND_OFDM_6_9M_EN) {
- if (value & TX_PWR_G_BAND_OFDM_6_9M_SIGN) {
- cap->tx_pwr_g_band_ofdm_6_9 = (value & TX_PWR_G_BAND_OFDM_6_9M_MASK);
+ if (value & TX_PWR_G_BAND_OFDM_6_9M_EN) {
+ if (value & TX_PWR_G_BAND_OFDM_6_9M_SIGN) {
+ cap->tx_pwr_g_band_ofdm_6_9 =
+ (CHAR)(value & TX_PWR_G_BAND_OFDM_6_9M_MASK);
} else {
- cap->tx_pwr_g_band_ofdm_6_9 = -(value & TX_PWR_G_BAND_OFDM_6_9M_MASK);
+ cap->tx_pwr_g_band_ofdm_6_9 =
+ (CHAR)(-(value & TX_PWR_G_BAND_OFDM_6_9M_MASK));
}
} else {
cap->tx_pwr_g_band_ofdm_6_9 = 0;
}
/* OFDM 12M/18M */
- if (value & TX_PWR_G_BAND_OFDM_12_18M_EN) {
- if (value & TX_PWR_G_BAND_OFDM_12_18M_SIGN) {
- cap->tx_pwr_g_band_ofdm_12_18 = ((value & TX_PWR_G_BAND_OFDM_12_18M_MASK) >> 8);
+ if (value & TX_PWR_G_BAND_OFDM_12_18M_EN) {
+ if (value & TX_PWR_G_BAND_OFDM_12_18M_SIGN) {
+ cap->tx_pwr_g_band_ofdm_12_18 =
+ (CHAR)((value & TX_PWR_G_BAND_OFDM_12_18M_MASK) >> 8);
} else {
- cap->tx_pwr_g_band_ofdm_12_18 = -((value & TX_PWR_G_BAND_OFDM_12_18M_MASK) >> 8);
+ cap->tx_pwr_g_band_ofdm_12_18 =
+ (CHAR)(-((value & TX_PWR_G_BAND_OFDM_12_18M_MASK) >> 8));
}
} else {
cap->tx_pwr_g_band_ofdm_12_18 = 0;
@@ -622,22 +628,26 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_g_band_ofdm_48= 0;
} else {
/* OFDM 24M/36M */
- if (value & TX_PWR_G_BAND_OFDM_24_36M_EN) {
- if (value & TX_PWR_G_BAND_OFDM_24_36M_SIGN) {
- cap->tx_pwr_g_band_ofdm_24_36 = (value & TX_PWR_G_BAND_OFDM_24_36M_MASK);
+ if (value & TX_PWR_G_BAND_OFDM_24_36M_EN) {
+ if (value & TX_PWR_G_BAND_OFDM_24_36M_SIGN) {
+ cap->tx_pwr_g_band_ofdm_24_36 =
+ (CHAR)(value & TX_PWR_G_BAND_OFDM_24_36M_MASK);
} else {
- cap->tx_pwr_g_band_ofdm_24_36 = -(value & TX_PWR_G_BAND_OFDM_24_36M_MASK);
+ cap->tx_pwr_g_band_ofdm_24_36 =
+ (CHAR)(-(value & TX_PWR_G_BAND_OFDM_24_36M_MASK));
}
} else {
cap->tx_pwr_g_band_ofdm_24_36 = 0;
}
/* OFDM 48M */
- if (value & TX_PWR_G_BAND_OFDM_48M_EN) {
- if (value & TX_PWR_G_BAND_OFDM_48M_SIGN) {
- cap->tx_pwr_g_band_ofdm_48 = ((value & TX_PWR_G_BAND_OFDM_48M_MASK) >> 8);
+ if (value & TX_PWR_G_BAND_OFDM_48M_EN) {
+ if (value & TX_PWR_G_BAND_OFDM_48M_SIGN) {
+ cap->tx_pwr_g_band_ofdm_48 =
+ (CHAR)((value & TX_PWR_G_BAND_OFDM_48M_MASK) >> 8);
} else {
- cap->tx_pwr_g_band_ofdm_48 = -((value & TX_PWR_G_BAND_OFDM_48M_MASK) >> 8);
+ cap->tx_pwr_g_band_ofdm_48 =
+ (CHAR)(-((value & TX_PWR_G_BAND_OFDM_48M_MASK) >> 8));
}
} else {
cap->tx_pwr_g_band_ofdm_48 = 0;
@@ -652,22 +662,26 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_ht_bpsk_mcs_0_8 = 0;
} else {
/* OFDM 54M */
- if (value & TX_PWR_G_BAND_OFDM_54M_EN) {
- if (value & TX_PWR_G_BAND_OFDM_54M_SIGN) {
- cap->tx_pwr_g_band_ofdm_54 = (value & TX_PWR_G_BAND_OFDM_54M_MASK);
+ if (value & TX_PWR_G_BAND_OFDM_54M_EN) {
+ if (value & TX_PWR_G_BAND_OFDM_54M_SIGN) {
+ cap->tx_pwr_g_band_ofdm_54 =
+ (CHAR)(value & TX_PWR_G_BAND_OFDM_54M_MASK);
} else {
- cap->tx_pwr_g_band_ofdm_54 = -(value & TX_PWR_G_BAND_OFDM_54M_MASK);
+ cap->tx_pwr_g_band_ofdm_54 =
+ (CHAR)(-(value & TX_PWR_G_BAND_OFDM_54M_MASK));
}
} else {
cap->tx_pwr_g_band_ofdm_54 = 0;
}
/* HT MCS_0, MCS_8 */
- if (value & TX_PWR_HT_BPSK_MCS_0_8_EN) {
- if (value & TX_PWR_HT_BPSK_MCS_0_8_SIGN) {
- cap->tx_pwr_ht_bpsk_mcs_0_8 = ((value & TX_PWR_HT_BPSK_MCS_0_8_MASK) >> 8);
+ if (value & TX_PWR_HT_BPSK_MCS_0_8_EN) {
+ if (value & TX_PWR_HT_BPSK_MCS_0_8_SIGN) {
+ cap->tx_pwr_ht_bpsk_mcs_0_8 =
+ (CHAR)((value & TX_PWR_HT_BPSK_MCS_0_8_MASK) >> 8);
} else {
- cap->tx_pwr_ht_bpsk_mcs_0_8 = -((value & TX_PWR_HT_BPSK_MCS_0_8_MASK) >> 8);
+ cap->tx_pwr_ht_bpsk_mcs_0_8 =
+ (CHAR)(-((value & TX_PWR_HT_BPSK_MCS_0_8_MASK) >> 8));
}
} else {
cap->tx_pwr_ht_bpsk_mcs_0_8 = 0;
@@ -681,22 +695,26 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_ht_qpsk_mcs_1_2_9_10 = 0;
} else {
/* HT MCS_0, MCS_8 */
- if (value & TX_PWR_HT_BPSK_MCS_32_EN) {
- if (value & TX_PWR_HT_BPSK_MCS_32_SIGN) {
- cap->tx_pwr_ht_bpsk_mcs_32 = (value & TX_PWR_HT_BPSK_MCS_32_MASK);
+ if (value & TX_PWR_HT_BPSK_MCS_32_EN) {
+ if (value & TX_PWR_HT_BPSK_MCS_32_SIGN) {
+ cap->tx_pwr_ht_bpsk_mcs_32 =
+ (CHAR)(value & TX_PWR_HT_BPSK_MCS_32_MASK);
} else {
- cap->tx_pwr_ht_bpsk_mcs_32 = -(value & TX_PWR_HT_BPSK_MCS_32_MASK);
+ cap->tx_pwr_ht_bpsk_mcs_32 =
+ (CHAR)(-(value & TX_PWR_HT_BPSK_MCS_32_MASK));
}
} else {
cap->tx_pwr_ht_bpsk_mcs_32 = 0;
}
/* HT MCS_1, MCS_2, MCS_9, MCS_10 */
- if (value & TX_PWR_HT_QPSK_MCS_1_2_9_10_EN) {
- if (value & TX_PWR_HT_QPSK_MCS_1_2_9_10_SIGN) {
- cap->tx_pwr_ht_qpsk_mcs_1_2_9_10 = ((value & TX_PWR_HT_QPSK_MCS_1_2_9_10_MASK) >> 8);
+ if (value & TX_PWR_HT_QPSK_MCS_1_2_9_10_EN) {
+ if (value & TX_PWR_HT_QPSK_MCS_1_2_9_10_SIGN) {
+ cap->tx_pwr_ht_qpsk_mcs_1_2_9_10 =
+ (CHAR)((value & TX_PWR_HT_QPSK_MCS_1_2_9_10_MASK) >> 8);
} else {
- cap->tx_pwr_ht_qpsk_mcs_1_2_9_10 = -((value & TX_PWR_HT_QPSK_MCS_1_2_9_10_MASK) >> 8);
+ cap->tx_pwr_ht_qpsk_mcs_1_2_9_10 =
+ (CHAR)(-((value & TX_PWR_HT_QPSK_MCS_1_2_9_10_MASK) >> 8));
}
} else {
cap->tx_pwr_ht_qpsk_mcs_1_2_9_10 = 0;
@@ -712,22 +730,26 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_ht_64qam_mcs_5_13 = 0;
} else {
/* HT MCS_3, MCS_4, MCS_11, MCS_12 */
- if (value & TX_PWR_HT_16QAM_MCS_3_4_11_12_EN) {
- if (value & TX_PWR_HT_16QAM_MCS_3_4_11_12_SIGN) {
- cap->tx_pwr_ht_16qam_mcs_3_4_11_12 = (value & TX_PWR_HT_16QAM_MCS_3_4_11_12_MASK);
+ if (value & TX_PWR_HT_16QAM_MCS_3_4_11_12_EN) {
+ if (value & TX_PWR_HT_16QAM_MCS_3_4_11_12_SIGN) {
+ cap->tx_pwr_ht_16qam_mcs_3_4_11_12 =
+ (CHAR)(value & TX_PWR_HT_16QAM_MCS_3_4_11_12_MASK);
} else {
- cap->tx_pwr_ht_16qam_mcs_3_4_11_12 = -(value & TX_PWR_HT_16QAM_MCS_3_4_11_12_MASK);
+ cap->tx_pwr_ht_16qam_mcs_3_4_11_12 =
+ (CHAR)(-(value & TX_PWR_HT_16QAM_MCS_3_4_11_12_MASK));
}
} else {
cap->tx_pwr_ht_16qam_mcs_3_4_11_12 = 0;
}
/* HT MCS_5, MCS_13 */
- if (value & TX_PWR_HT_64QAM_MCS_5_13_EN) {
- if (value & TX_PWR_HT_64QAM_MCS_5_13_SIGN) {
- cap->tx_pwr_ht_64qam_mcs_5_13 = ((value & TX_PWR_HT_64QAM_MCS_5_13_MASK) >> 8);
+ if (value & TX_PWR_HT_64QAM_MCS_5_13_EN) {
+ if (value & TX_PWR_HT_64QAM_MCS_5_13_SIGN) {
+ cap->tx_pwr_ht_64qam_mcs_5_13 =
+ (CHAR)((value & TX_PWR_HT_64QAM_MCS_5_13_MASK) >> 8);
} else {
- cap->tx_pwr_ht_64qam_mcs_5_13 = -((value & TX_PWR_HT_64QAM_MCS_5_13_MASK) >> 8);
+ cap->tx_pwr_ht_64qam_mcs_5_13 =
+ (CHAR)(-((value & TX_PWR_HT_64QAM_MCS_5_13_MASK) >> 8));
}
} else {
cap->tx_pwr_ht_64qam_mcs_5_13 = 0;
@@ -742,22 +764,26 @@ void mt7603_get_tx_pwr_per_rate(RTMP_ADAPTER *pAd)
cap->tx_pwr_ht_64qam_mcs_7_15 = 0;
} else {
/* HT MCS_6, MCS_14 */
- if (value & TX_PWR_HT_64QAM_MCS_6_14_EN) {
- if (value & TX_PWR_HT_64QAM_MCS_6_14_SIGN) {
- cap->tx_pwr_ht_64qam_mcs_6_14 = (value & TX_PWR_HT_64QAM_MCS_6_14_MASK);
+ if (value & TX_PWR_HT_64QAM_MCS_6_14_EN) {
+ if (value & TX_PWR_HT_64QAM_MCS_6_14_SIGN) {
+ cap->tx_pwr_ht_64qam_mcs_6_14 =
+ (CHAR)(value & TX_PWR_HT_64QAM_MCS_6_14_MASK);
} else {
- cap->tx_pwr_ht_64qam_mcs_6_14 = -(value & TX_PWR_HT_64QAM_MCS_6_14_MASK);
+ cap->tx_pwr_ht_64qam_mcs_6_14 =
+ (CHAR)(-(value & TX_PWR_HT_64QAM_MCS_6_14_MASK));
}
} else {
cap->tx_pwr_ht_64qam_mcs_6_14 = 0;
}
/* HT MCS_7, MCS_15 */
- if (value & TX_PWR_HT_64QAM_MCS_7_15_EN) {
- if (value & TX_PWR_HT_64QAM_MCS_7_15_SIGN) {
- cap->tx_pwr_ht_64qam_mcs_7_15 = ((value & TX_PWR_HT_64QAM_MCS_7_15_MASK) >> 8);
+ if (value & TX_PWR_HT_64QAM_MCS_7_15_EN) {
+ if (value & TX_PWR_HT_64QAM_MCS_7_15_SIGN) {
+ cap->tx_pwr_ht_64qam_mcs_7_15 =
+ (CHAR)((value & TX_PWR_HT_64QAM_MCS_7_15_MASK) >> 8);
} else {
- cap->tx_pwr_ht_64qam_mcs_7_15 = -((value & TX_PWR_HT_64QAM_MCS_7_15_MASK) >> 8);
+ cap->tx_pwr_ht_64qam_mcs_7_15 =
+ (CHAR)(-((value & TX_PWR_HT_64QAM_MCS_7_15_MASK) >> 8));
}
} else {
cap->tx_pwr_ht_64qam_mcs_7_15 = 0;
@@ -783,12 +809,14 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
cap->delta_tx_pwr_bw40_g_band = 0x0;
} else {
/* G Band */
- if (value & G_BAND_20_40_BW_PWR_DELTA_EN) {
- if (value & G_BAND_20_40_BW_PWR_DELTA_SIGN) {
+ if (value & G_BAND_20_40_BW_PWR_DELTA_EN) {
+ if (value & G_BAND_20_40_BW_PWR_DELTA_SIGN) {
/* bit[0..5] tx power delta value */
- cap->delta_tx_pwr_bw40_g_band = (value & G_BAND_20_40_BW_PWR_DELTA_MASK);
+ cap->delta_tx_pwr_bw40_g_band =
+ (CHAR)(value & G_BAND_20_40_BW_PWR_DELTA_MASK);
} else {
- cap->delta_tx_pwr_bw40_g_band = -(value & G_BAND_20_40_BW_PWR_DELTA_MASK);
+ cap->delta_tx_pwr_bw40_g_band =
+ (CHAR)(-(value & G_BAND_20_40_BW_PWR_DELTA_MASK));
}
} else {
cap->delta_tx_pwr_bw40_g_band = 0x0;
@@ -804,7 +832,8 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
(is_empty) ? TSSI_0_SLOPE_G_BAND_DEFAULT_VALUE : (value & TX0_G_BAND_TSSI_SLOPE_MASK);
cap->tssi_0_offset_g_band =
- (is_empty) ? TSSI_0_OFFSET_G_BAND_DEFAULT_VALUE : ((value & TX0_G_BAND_TSSI_OFFSET_MASK) >> 8);
+ (is_empty) ? TSSI_0_OFFSET_G_BAND_DEFAULT_VALUE :
+ (UINT8)((value & TX0_G_BAND_TSSI_OFFSET_MASK) >> 8);
DBGPRINT(RT_DEBUG_TRACE, ("tssi_0_slope_g_band = %d\n", cap->tssi_0_slope_g_band));
DBGPRINT(RT_DEBUG_TRACE, ("tssi_0_offset_g_band = %d\n", cap->tssi_0_offset_g_band));
@@ -821,11 +850,13 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
cap->tx_0_chl_pwr_delta_g_band[G_BAND_LOW] = 0x0;
} else {
/* tx power offset LOW */
- if (value & TX0_G_BAND_CHL_PWR_DELTA_LOW_EN) {
- if (value & TX0_G_BAND_CHL_PWR_DELTA_LOW_SIGN) {
- cap->tx_0_chl_pwr_delta_g_band[G_BAND_LOW] = ((value & TX0_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8);
+ if (value & TX0_G_BAND_CHL_PWR_DELTA_LOW_EN) {
+ if (value & TX0_G_BAND_CHL_PWR_DELTA_LOW_SIGN) {
+ cap->tx_0_chl_pwr_delta_g_band[G_BAND_LOW] =
+ (UINT8)((value & TX0_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8);
} else {
- cap->tx_0_chl_pwr_delta_g_band[G_BAND_LOW] = -((value & TX0_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8);
+ cap->tx_0_chl_pwr_delta_g_band[G_BAND_LOW] =
+ (UINT8)(-((value & TX0_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8));
}
} else {
cap->tx_0_chl_pwr_delta_g_band[G_BAND_LOW] = 0x0;
@@ -840,20 +871,24 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
cap->tx_0_chl_pwr_delta_g_band[G_BAND_HI] = 0x0;
} else {
/* tx power offset MID */
- if (value & TX0_G_BAND_CHL_PWR_DELTA_MID_EN) {
- if (value & TX0_G_BAND_CHL_PWR_DELTA_MID_SIGN)
- cap->tx_0_chl_pwr_delta_g_band[G_BAND_MID] = (value & TX0_G_BAND_CHL_PWR_DELTA_MID_MASK);
+ if (value & TX0_G_BAND_CHL_PWR_DELTA_MID_EN) {
+ if (value & TX0_G_BAND_CHL_PWR_DELTA_MID_SIGN)
+ cap->tx_0_chl_pwr_delta_g_band[G_BAND_MID] =
+ (CHAR)(value & TX0_G_BAND_CHL_PWR_DELTA_MID_MASK);
else
- cap->tx_0_chl_pwr_delta_g_band[G_BAND_MID] = -(value & TX0_G_BAND_CHL_PWR_DELTA_MID_MASK);
+ cap->tx_0_chl_pwr_delta_g_band[G_BAND_MID] =
+ (UINT8)(-(value & TX0_G_BAND_CHL_PWR_DELTA_MID_MASK));
} else {
cap->tx_0_chl_pwr_delta_g_band[G_BAND_MID] = 0x0;
}
/* tx power offset HIGH */
- if (value & TX0_G_BAND_CHL_PWR_DELTA_HI_EN) {
- if (value & TX0_G_BAND_CHL_PWR_DELTA_HI_SIGN)
- cap->tx_0_chl_pwr_delta_g_band[G_BAND_HI] = ((value & TX0_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8);
+ if (value & TX0_G_BAND_CHL_PWR_DELTA_HI_EN) {
+ if (value & TX0_G_BAND_CHL_PWR_DELTA_HI_SIGN)
+ cap->tx_0_chl_pwr_delta_g_band[G_BAND_HI] =
+ (UINT8)((value & TX0_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8);
else
- cap->tx_0_chl_pwr_delta_g_band[G_BAND_HI] = -((value & TX0_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8);
+ cap->tx_0_chl_pwr_delta_g_band[G_BAND_HI] =
+ (UINT8)(-((value & TX0_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8));
} else {
cap->tx_0_chl_pwr_delta_g_band[G_BAND_HI] = 0x0;
}
@@ -867,7 +902,8 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
cap->tssi_1_slope_g_band = (is_empty) ? TSSI_1_SLOPE_G_BAND_DEFAULT_VALUE : (value & TX1_G_BAND_TSSI_SLOPE_MASK);
- cap->tssi_1_offset_g_band = (is_empty) ? TSSI_1_OFFSET_G_BAND_DEFAULT_VALUE : ((value & TX1_G_BAND_TSSI_OFFSET_MASK) >> 8);
+ cap->tssi_1_offset_g_band = (is_empty) ? TSSI_1_OFFSET_G_BAND_DEFAULT_VALUE :
+ (UINT8)((value & TX1_G_BAND_TSSI_OFFSET_MASK) >> 8);
DBGPRINT(RT_DEBUG_TRACE, ("tssi_1_slope_g_band = %d\n", cap->tssi_1_slope_g_band));
DBGPRINT(RT_DEBUG_TRACE, ("tssi_1_offset_g_band = %d\n", cap->tssi_1_offset_g_band));
@@ -877,18 +913,20 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
cap->tx_1_target_pwr_g_band = (is_empty) ? TX_TARGET_PWR_DEFAULT_VALUE : (value & TX1_G_BAND_TARGET_PWR_MASK);
- printk ("tssi_1_target_pwr_g_band = %d\n", cap->tx_1_target_pwr_g_band);
+ DBGPRINT(RT_DEBUG_OFF, ("tssi_1_target_pwr_g_band = %d\n", cap->tx_1_target_pwr_g_band));
/* Read power offset (channel delta) */
if (is_empty) {
cap->tx_1_chl_pwr_delta_g_band[G_BAND_LOW] = 0;
} else {
/* tx power offset LOW */
- if (value & TX1_G_BAND_CHL_PWR_DELTA_LOW_EN) {
- if (value & TX1_G_BAND_CHL_PWR_DELTA_LOW_SIGN) {
- cap->tx_1_chl_pwr_delta_g_band[G_BAND_LOW] = ((value & TX1_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8);
+ if (value & TX1_G_BAND_CHL_PWR_DELTA_LOW_EN) {
+ if (value & TX1_G_BAND_CHL_PWR_DELTA_LOW_SIGN) {
+ cap->tx_1_chl_pwr_delta_g_band[G_BAND_LOW] =
+ (UINT8)((value & TX1_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8);
} else {
- cap->tx_1_chl_pwr_delta_g_band[G_BAND_LOW] = -((value & TX1_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8);
+ cap->tx_1_chl_pwr_delta_g_band[G_BAND_LOW] =
+ (UINT8)(-((value & TX1_G_BAND_CHL_PWR_DELTA_LOW_MASK) >> 8));
}
} else {
cap->tx_1_chl_pwr_delta_g_band[G_BAND_LOW] = 0;
@@ -902,21 +940,25 @@ void mt7603_get_tx_pwr_info(RTMP_ADAPTER *pAd)
cap->tx_1_chl_pwr_delta_g_band[G_BAND_HI] = 0;
} else {
/* tx power offset MID */
- if (value & TX1_G_BAND_CHL_PWR_DELTA_MID_EN) {
- if (value & TX1_G_BAND_CHL_PWR_DELTA_MID_SIGN) {
- cap->tx_1_chl_pwr_delta_g_band[G_BAND_MID] = (value & TX1_G_BAND_CHL_PWR_DELTA_MID_MASK);
+ if (value & TX1_G_BAND_CHL_PWR_DELTA_MID_EN) {
+ if (value & TX1_G_BAND_CHL_PWR_DELTA_MID_SIGN) {
+ cap->tx_1_chl_pwr_delta_g_band[G_BAND_MID] =
+ (CHAR)(value & TX1_G_BAND_CHL_PWR_DELTA_MID_MASK);
} else {
- cap->tx_1_chl_pwr_delta_g_band[G_BAND_MID] = -(value & TX1_G_BAND_CHL_PWR_DELTA_MID_MASK);
+ cap->tx_1_chl_pwr_delta_g_band[G_BAND_MID] =
+ (UINT8)(-(value & TX1_G_BAND_CHL_PWR_DELTA_MID_MASK));
}
} else {
cap->tx_1_chl_pwr_delta_g_band[G_BAND_MID] = 0;
}
/* tx power offset HIGH */
- if (value & TX1_G_BAND_CHL_PWR_DELTA_HI_EN) {
- if (value & TX1_G_BAND_CHL_PWR_DELTA_HI_SIGN) {
- cap->tx_1_chl_pwr_delta_g_band[G_BAND_HI] = ((value & TX1_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8);
+ if (value & TX1_G_BAND_CHL_PWR_DELTA_HI_EN) {
+ if (value & TX1_G_BAND_CHL_PWR_DELTA_HI_SIGN) {
+ cap->tx_1_chl_pwr_delta_g_band[G_BAND_HI] =
+ (UINT8)((value & TX1_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8);
} else {
- cap->tx_1_chl_pwr_delta_g_band[G_BAND_HI] = -((value & TX1_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8);
+ cap->tx_1_chl_pwr_delta_g_band[G_BAND_HI] =
+ (UINT8)(-((value & TX1_G_BAND_CHL_PWR_DELTA_HI_MASK) >> 8));
}
} else {
cap->tx_1_chl_pwr_delta_g_band[G_BAND_HI] = 0;
@@ -1523,16 +1565,243 @@ void mt7603_set_ed_cca(RTMP_ADAPTER *pAd, BOOLEAN enable)
{
macVal = 0xD7E87D10; //EDCCA ON //d7e87d10
RTMP_IO_WRITE32(pAd, WF_PHY_BASE + 0x0618, macVal);
-
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ pAd->SCSCtrl.EDCCA_Status = 1;
+ DBGPRINT(RT_DEBUG_ERROR, ("%s: TURN ON EDCCA mac 0x10618 = 0x%x, EDCCA_Status=%d\n", __FUNCTION__, macVal, pAd->SCSCtrl.EDCCA_Status));
+#else
DBGPRINT(RT_DEBUG_ERROR, ("%s: TURN ON EDCCA mac 0x10618 = 0x%x\n", __FUNCTION__, macVal));
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
}
else
{
macVal = 0xD7083F0F; //EDCCA OFF //d7083f0f
RTMP_IO_WRITE32(pAd, WF_PHY_BASE + 0x0618, macVal);
-
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ pAd->SCSCtrl.EDCCA_Status = 0;
+ DBGPRINT(RT_DEBUG_ERROR, ("%s: TURN OFF EDCCA mac 0x10618 = 0x%x, EDCCA_Status=%d\n", __FUNCTION__, macVal, pAd->SCSCtrl.EDCCA_Status));
+#else
DBGPRINT(RT_DEBUG_ERROR, ("%s: TURN OFF EDCCA mac 0x10618 = 0x%x\n", __FUNCTION__, macVal));
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
}
}
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+/*
+========================================================================
+Routine Description:
+ Get target rssi for smart carrier sense.
+Arguments:
+ pAd - WLAN control block pointer
+Return Value:
+ rssi - rssi value
+========================================================================
+*/
+INT MTSmartCarrierSense(RTMP_ADAPTER *pAd)
+{
+ UINT16 RxRatio = 0;
+ UCHAR idx = 0, RtsEnable = 0, Action = Keep_Range;
+ UINT32 CrValue = 0, MaxRtsRtyCount = 0;
+ UINT32 MaxRtsCount = 0, TempValue = 0, tmpCrValue = 0, TotalTp = 0;
+ INT32 AdjustStep = 0;
+ CHAR RSSIBoundary = 0;
+ /*get RxRatio */
+ if (pAd->RalinkCounters.OneSecReceivedByteCount != 0)
+ RxRatio = ((pAd->RalinkCounters.OneSecReceivedByteCount) * 100
+ / (pAd->RalinkCounters.OneSecReceivedByteCount +
+ pAd->RalinkCounters.OneSecTransmittedByteCount));
+ else
+ RxRatio = 0;
+ DBGPRINT(RT_DEBUG_TRACE, ("RXRatio=%d\n", RxRatio));
+ /*
+ *DBGPRINT(RT_DEBUG_ERROR, ("%s():Enter ---> miniRSSI=%d TotalByteCount=%d
+ * RxByteCount=%d TxByteCount=%d EDCCA=%d RxRatio=%d RtsCount=%d
+ * RtsRtyCount=%d RSSIBoundary=%s TotalTp =%d\n", __FUNCTION__,
+ * pAd->SCSCtrl.SCSMinRssi, (pAd->RalinkCounters.OneSecReceivedByteCount
+ * + pAd->RalinkCounters.OneSecTransmittedByteCount),
+ * pAd->RalinkCounters.OneSecReceivedByteCount,
+ * pAd->RalinkCounters.OneSecTransmittedByteCount,
+ * pAd->SCSCtrl.EDCCA_Status, RxRatio,pAd->SCSCtrl.RtsCount,
+ * pAd->SCSCtrl.RtsRtyCount,pAd->SCSCtrl.RSSIBoundary,
+ * (pAd->RalinkCounters.OneSecReceivedByteCount +
+ * pAd->RalinkCounters.OneSecTransmittedByteCount)));
+ */
+
+/*get RtsCount and RtsRetryCount*/
+ for (idx = 0; idx < 4; idx++) {
+ RTMP_IO_READ32(pAd, MIB_MB0SDR0 + idx * 0x10, &CrValue);
+ TempValue = (CrValue >> 16) & 0x0000ffff;
+ if (TempValue > MaxRtsRtyCount) {
+ MaxRtsRtyCount = TempValue;
+ MaxRtsCount = CrValue & 0x0000ffff;
+ }
+
+ pAd->SCSCtrl.RtsCount = MaxRtsCount;
+ pAd->SCSCtrl.RtsRtyCount = MaxRtsRtyCount;
+ }
+ DBGPRINT(RT_DEBUG_TRACE, ("RtsCount=%d\n", MaxRtsCount));
+ if (MaxRtsCount > 0 || MaxRtsRtyCount > 0)
+ RtsEnable = 1;
+/*get RSSIBoundary*/
+ RSSIBoundary = pAd->SCSCtrl.SCSMinRssi - pAd->SCSCtrl.SCSMinRssiTolerance;
+ RSSIBoundary -= (RSSIBoundary % 2);
+ pAd->SCSCtrl.RSSIBoundary = min(RSSIBoundary, pAd->SCSCtrl.FixedRssiBond);
+/*get TotalTp*/
+ TotalTp = pAd->RalinkCounters.OneSecReceivedByteCount +
+ pAd->RalinkCounters.OneSecTransmittedByteCount;
+ DBGPRINT(RT_DEBUG_TRACE, ("TotalTp=%d\n", TotalTp));
+ /*
+ *check the action
+ *1. under forceMode total Tp exceed th, or RTSEnable=1
+ *2. Mactable size >0
+ *3. MinRsssi<0
+ *4. In Rx status mainly
+ *When applied on customer's projects, please fine tune above conditions,
+ *otherwise, SCS would be not enabled probably.
+ */
+
+ if ((((pAd->SCSCtrl.ForceMode == 1) && (TotalTp > pAd->SCSCtrl.SCSTrafficThreshold)) ||
+ (RtsEnable == 1)) && ((pAd->MacTab.Size > 0) &&
+ (pAd->SCSCtrl.SCSMinRssi < 0) && (RxRatio < 90))) {
+ if (RtsEnable == 1) {
+ /* Consider RTS PER & False-CCA */
+ if (MaxRtsCount > (MaxRtsRtyCount + (MaxRtsRtyCount >> 1)) &&
+ (pAd->SCSCtrl.FalseCCA) > (pAd->SCSCtrl.FalseCcaUpBond))
+ Action = Decrease_Range;
+ else if ((MaxRtsCount + (MaxRtsCount >> 1)) < MaxRtsRtyCount ||
+ (pAd->SCSCtrl.FalseCCA) < (pAd->SCSCtrl.FalseCcaLowBond))
+ Action = Increase_Range;
+ else
+ Action = Keep_Range;
+ } else {
+ /* Consider False-CCA only */
+ if (pAd->SCSCtrl.FalseCCA > (pAd->SCSCtrl.FalseCcaUpBond))
+ Action = Decrease_Range;
+ else if (pAd->SCSCtrl.FalseCCA < (pAd->SCSCtrl.FalseCcaLowBond))
+ Action = Increase_Range;
+ else
+ Action = Keep_Range;
+ }
+ DBGPRINT(RT_DEBUG_TRACE, ("Action=%d, RtsCount=%d, RtsRtyCount=%d, FalseCCA=%d\n",
+ Action, MaxRtsCount, MaxRtsRtyCount, pAd->SCSCtrl.FalseCCA));
+
+ if ((Action == Decrease_Range) &&
+ (pAd->SCSCtrl.SCSStatus == SCS_STATUS_DEFAULT)) {
+ /*First time initial */
+ if (pAd->SCSCtrl.SCSMinRssi > -86) {
+ pAd->SCSCtrl.AdjustSensitivity = -92;
+ /*DBGPRINT(RT_DEBUG_ERROR, ("%s(): SCS=M\n",__FUNCTION__));*/
+ }
+ } else if ((Action == Decrease_Range) &&
+ (pAd->SCSCtrl.SCSStatus != SCS_STATUS_DEFAULT)) {
+ if (pAd->SCSCtrl.CurrSensitivity + 2 <= pAd->SCSCtrl.RSSIBoundary)
+ pAd->SCSCtrl.AdjustSensitivity = pAd->SCSCtrl.CurrSensitivity + 2;
+ else if (pAd->SCSCtrl.CurrSensitivity > pAd->SCSCtrl.RSSIBoundary)
+ pAd->SCSCtrl.AdjustSensitivity = pAd->SCSCtrl.RSSIBoundary;
+ } else if ((Action == Increase_Range) &&
+ (pAd->SCSCtrl.SCSStatus == SCS_STATUS_DEFAULT)) {
+ /*First time initial */
+ /*Nothing to do.*/
+ } else if ((Action == Increase_Range) &&
+ (pAd->SCSCtrl.SCSStatus != SCS_STATUS_DEFAULT)) {
+ if (pAd->SCSCtrl.CurrSensitivity - 2 >= (-100)) {
+ pAd->SCSCtrl.AdjustSensitivity = pAd->SCSCtrl.CurrSensitivity - 2;
+ if (pAd->SCSCtrl.AdjustSensitivity > pAd->SCSCtrl.RSSIBoundary)
+ pAd->SCSCtrl.AdjustSensitivity = pAd->SCSCtrl.RSSIBoundary;
+ }
+ }
+ DBGPRINT(RT_DEBUG_TRACE, ("CurrSen=%d, AdjustSen=%d\n",
+ pAd->SCSCtrl.CurrSensitivity, pAd->SCSCtrl.AdjustSensitivity));
+
+ if (pAd->SCSCtrl.AdjustSensitivity > -54)
+ pAd->SCSCtrl.AdjustSensitivity = -54;
+
+ if (pAd->SCSCtrl.CurrSensitivity != pAd->SCSCtrl.AdjustSensitivity) {
+ /*Apply to CR*/
+ /*SCS=M*/
+ if (pAd->SCSCtrl.AdjustSensitivity >= -100 &&
+ pAd->SCSCtrl.AdjustSensitivity <= -84){
+ AdjustStep = (pAd->SCSCtrl.AdjustSensitivity + 92) / 2;
+ CrValue = 0x56F0076f;
+ tmpCrValue = 0x7 + AdjustStep;
+ CrValue |= (tmpCrValue << 12);
+ CrValue |= (tmpCrValue << 16);
+ DBGPRINT(RT_DEBUG_ERROR, ("M AdjSensi=%d AdjStep=%d CrValue=%x\n",
+ pAd->SCSCtrl.AdjustSensitivity, AdjustStep, CrValue));
+ RTMP_IO_WRITE32(pAd, CR_AGC_0, CrValue);
+ RTMP_IO_WRITE32(pAd, CR_AGC_0_RX1, CrValue);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3, 0x81D0D5E3);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3_RX1, 0x81D0D5E3);
+ pAd->SCSCtrl.CurrSensitivity = pAd->SCSCtrl.AdjustSensitivity;
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_MIDDLE;
+
+ }
+ /*SCS=L*/
+ else if (pAd->SCSCtrl.AdjustSensitivity > -84 &&
+ pAd->SCSCtrl.AdjustSensitivity <= -72) {
+ AdjustStep = (pAd->SCSCtrl.AdjustSensitivity + 80) / 2;
+ CrValue = 0x6AF0006f;
+ tmpCrValue = 0x7 + AdjustStep;
+ CrValue |= (tmpCrValue << 8);
+ CrValue |= (tmpCrValue << 12);
+ CrValue |= (tmpCrValue << 16);
+ DBGPRINT(RT_DEBUG_ERROR, ("L AdjSensi=%d AdjStep=%d CrValue=%x\n",
+ pAd->SCSCtrl.AdjustSensitivity, AdjustStep, CrValue));
+ RTMP_IO_WRITE32(pAd, CR_AGC_0, CrValue);
+ RTMP_IO_WRITE32(pAd, CR_AGC_0_RX1, CrValue);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3, 0x8181D5E3);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3_RX1, 0x8181D5E3);
+ pAd->SCSCtrl.CurrSensitivity = pAd->SCSCtrl.AdjustSensitivity;
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_LOW;
+
+ }
+ /*SCS=UL*/
+ else if (pAd->SCSCtrl.AdjustSensitivity >= -70 &&
+ pAd->SCSCtrl.AdjustSensitivity <= -54) {
+ AdjustStep = (pAd->SCSCtrl.AdjustSensitivity + 62) / 2;
+ CrValue = 0x7FF0000f;
+ tmpCrValue = 0x6+AdjustStep;
+ CrValue |= (tmpCrValue << 4);
+ CrValue |= (tmpCrValue << 8);
+ CrValue |= (tmpCrValue << 12);
+ CrValue |= (tmpCrValue << 16);
+ DBGPRINT(RT_DEBUG_ERROR, ("UL AdjSensi=%d AdjStep=%d CrValue=%x\n",
+ pAd->SCSCtrl.AdjustSensitivity, AdjustStep, CrValue));
+ RTMP_IO_WRITE32(pAd, CR_AGC_0, CrValue);
+ RTMP_IO_WRITE32(pAd, CR_AGC_0_RX1, CrValue);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3, 0x818181E3);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3_RX1, 0x818181E3);
+ pAd->SCSCtrl.CurrSensitivity = pAd->SCSCtrl.AdjustSensitivity;
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_ULTRA_LOW;
+ }
+ /*SCS=Defalt/H*/
+ else{
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_DEFAULT;
+ RTMP_IO_WRITE32(pAd, CR_AGC_0, pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_0_RX1, pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3, pAd->SCSCtrl.CR_AGC_3_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3_RX1, pAd->SCSCtrl.CR_AGC_3_default);
+ DBGPRINT(RT_DEBUG_ERROR, ("%s(): SCS=??? (Default)\n", __func__));
+ }
+ }
+
+ DBGPRINT(RT_DEBUG_TRACE, ("%s():miniRSSI=%d, RSSIBound=%d Action=%d AdjSensi=%d\n",
+ __func__, pAd->SCSCtrl.SCSMinRssi, pAd->SCSCtrl.RSSIBoundary,
+ Action, pAd->SCSCtrl.AdjustSensitivity));
+ } else {
+ if (pAd->SCSCtrl.SCSStatus != SCS_STATUS_DEFAULT) {
+ RTMP_IO_WRITE32(pAd, CR_AGC_0, pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_0_RX1, pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3, pAd->SCSCtrl.CR_AGC_3_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3_RX1, pAd->SCSCtrl.CR_AGC_3_default);
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_DEFAULT;
+ pAd->SCSCtrl.CurrSensitivity = -102;
+ pAd->SCSCtrl.AdjustSensitivity = -102;
+ DBGPRINT(RT_DEBUG_TRACE, ("%s(): CSC=H (Default)\n", __func__));
+ }
+ }
+ return TRUE;
+
+}
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+
diff --git a/chips/rtmp_chip.c b/chips/rtmp_chip.c
index e5739e5..24b5d52 100755
--- a/chips/rtmp_chip.c
+++ b/chips/rtmp_chip.c
@@ -256,6 +256,7 @@ VOID mt_bcn_buf_init(RTMP_ADAPTER *pAd)
pChipCap->FlgIsSupSpecBcnBuf = FALSE;
pChipCap->BcnMaxHwNum = 16;
pChipCap->BcnMaxNum = 16;
+
#if defined(MT7603_FPGA) || defined(MT7628_FPGA) || defined(MT7636_FPGA)
pChipCap->WcidHwRsvNum = 20;
#else
diff --git a/common/ba_action.c b/common/ba_action.c
index e5e620f..eb35cc5 100755
--- a/common/ba_action.c
+++ b/common/ba_action.c
@@ -403,7 +403,7 @@ static USHORT ba_indicate_reordering_mpdus_in_order(
/* pass this frame up */
ANNOUNCE_REORDERING_PACKET(pAd, mpdu_blk);
/* move to next sequence */
- StartSeq = mpdu_blk->Sequence;
+ StartSeq = (USHORT)mpdu_blk->Sequence;
LastIndSeq = StartSeq;
/* free mpdu_blk */
ba_mpdu_blk_free(pAd, mpdu_blk);
@@ -460,7 +460,7 @@ static void ba_refresh_reordering_mpdus(RTMP_ADAPTER *pAd, BA_REC_ENTRY *pBAEntr
/* pass this frame up */
ANNOUNCE_REORDERING_PACKET(pAd, mpdu_blk);
- pBAEntry->LastIndSeq = mpdu_blk->Sequence;
+ pBAEntry->LastIndSeq = (USHORT)mpdu_blk->Sequence;
ba_mpdu_blk_free(pAd, mpdu_blk);
/* update last indicated sequence */
@@ -602,7 +602,7 @@ VOID BAOriSessionSetUp(
pEntry->BAOriWcidArray[TID] = Idx;
- BAWinSize = pAd->CommonCfg.BACapability.field.TxBAWinLimit;
+ BAWinSize = (UCHAR)(pAd->CommonCfg.BACapability.field.TxBAWinLimit);
#ifdef MT76XX_BTCOEX_SUPPORT
/* In coex mode, if TxBA size is specified, should update to this value */
@@ -648,7 +648,7 @@ VOID BAOriSessionAdd(
UCHAR MaxPeerBufSize;
STA_TR_ENTRY *tr_entry;
- TID = pFrame->BaParm.TID;
+ TID = (UCHAR)pFrame->BaParm.TID;
Idx = pEntry->BAOriWcidArray[TID];
pBAEntry =&pAd->BATable.BAOriEntry[Idx];
@@ -683,7 +683,7 @@ VOID BAOriSessionAdd(
}
pBAEntry->TimeOutValue = pFrame->TimeOutValue;
- pBAEntry->amsdu_cap = pFrame->BaParm.AMSDUSupported;
+ pBAEntry->amsdu_cap = (UCHAR)pFrame->BaParm.AMSDUSupported;
pBAEntry->ORI_BA_Status = Originator_Done;
pAd->BATable.numDoneOriginator ++;
@@ -728,7 +728,7 @@ BOOLEAN BARecSessionAdd(
ASSERT(pEntry);
/* find TID*/
- TID = pFrame->BaParm.TID;
+ TID = (UCHAR)pFrame->BaParm.TID;
BAWinSize = min(((UCHAR)pFrame->BaParm.BufSize), (UCHAR)pAd->CommonCfg.BACapability.field.RxBAWinLimit);
#ifdef MT76XX_BTCOEX_SUPPORT
@@ -740,7 +740,7 @@ BOOLEAN BARecSessionAdd(
#endif
if (BAWinSize == 0) {
- BAWinSize = pAd->CommonCfg.BACapability.field.RxBAWinLimit;
+ BAWinSize = (UCHAR)pAd->CommonCfg.BACapability.field.RxBAWinLimit;
}
/* get software BA rec array index, Idx*/
@@ -830,7 +830,7 @@ BA_REC_ENTRY *BATableAllocRecEntry(RTMP_ADAPTER *pAd, USHORT *Idx)
/* get one */
pAd->BATable.numAsRecipient++;
pBAEntry->REC_BA_Status = Recipient_USED;
- *Idx = i;
+ *Idx = (USHORT)i;
break;
}
}
@@ -860,7 +860,7 @@ BA_ORI_ENTRY *BATableAllocOriEntry(RTMP_ADAPTER *pAd, USHORT *Idx)
pAd->BATable.numAsOriginator++;
pBAEntry->ORI_BA_Status = Originator_USED;
pBAEntry->pAdapter = pAd;
- *Idx = i;
+ *Idx = (USHORT)i;
break;
}
}
@@ -1129,8 +1129,8 @@ VOID BASessionTearDownALL(RTMP_ADAPTER *pAd, UCHAR Wcid)
for (i=0; i<NUM_OF_TID; i++)
{
- BAOriSessionTearDown(pAd, Wcid, i, FALSE, FALSE);
- BARecSessionTearDown(pAd, Wcid, i, FALSE);
+ BAOriSessionTearDown(pAd, Wcid, (UCHAR)i, FALSE, FALSE);
+ BARecSessionTearDown(pAd, Wcid, (UCHAR)i, FALSE);
}
}
@@ -1207,7 +1207,7 @@ VOID BAOriSessionSetupTimeout(
COPY_MAC_ADDR(AddbaReq.pAddr, pEntry->Addr);
AddbaReq.Wcid = pEntry->wcid;
AddbaReq.TID = pBAEntry->TID;
- AddbaReq.BaBufSize = pAd->CommonCfg.BACapability.field.RxBAWinLimit;
+ AddbaReq.BaBufSize = (UCHAR)pAd->CommonCfg.BACapability.field.RxBAWinLimit;
AddbaReq.TimeOutValue = 0;
AddbaReq.Token = pBAEntry->Token;
MlmeEnqueue(pAd, ACTION_STATE_MACHINE, MT2_MLME_ADD_BA_CATE, sizeof(MLME_ADDBA_REQ_STRUCT), (PVOID)&AddbaReq, 0);
@@ -1458,7 +1458,7 @@ VOID PeerAddBAReqAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
ADDframe.BaParm.BufSize = min(((UCHAR)pAddreqFrame->BaParm.BufSize), (UCHAR)pAd->CommonCfg.BACapability.field.RxBAWinLimit);
if (ADDframe.BaParm.BufSize == 0) {
//ADDframe.BaParm.BufSize = 64;
- ADDframe.BaParm.BufSize = pAd->CommonCfg.BACapability.field.RxBAWinLimit;
+ ADDframe.BaParm.BufSize = (USHORT)pAd->CommonCfg.BACapability.field.RxBAWinLimit;
}
ADDframe.TimeOutValue = 0; /* pAddreqFrame->TimeOutValue; */
@@ -1516,7 +1516,8 @@ VOID PeerAddBARspAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
break;
default:
/* check status == USED ??? */
- BAOriSessionTearDown(pAd, Elem->Wcid, pFrame->BaParm.TID, TRUE, FALSE);
+ BAOriSessionTearDown(pAd, Elem->Wcid,
+ (UCHAR)pFrame->BaParm.TID, TRUE, FALSE);
break;
}
/* Rcv Decline StatusCode*/
@@ -1552,13 +1553,15 @@ VOID PeerDelBAAction(
if (pDelFrame->DelbaParm.Initiator == ORIGINATOR)
{
DBGPRINT(RT_DEBUG_TRACE,("BA - PeerDelBAAction----> ORIGINATOR\n"));
- BARecSessionTearDown(pAd, Elem->Wcid, pDelFrame->DelbaParm.TID, TRUE);
+ BARecSessionTearDown(pAd,
+ Elem->Wcid, (UCHAR)pDelFrame->DelbaParm.TID, TRUE);
}
else
{
DBGPRINT(RT_DEBUG_TRACE,("BA - PeerDelBAAction----> RECIPIENT, Reason = %d\n", pDelFrame->ReasonCode));
/*hex_dump("DelBA Frame", pDelFrame, Elem->MsgLen);*/
- BAOriSessionTearDown(pAd, Elem->Wcid, pDelFrame->DelbaParm.TID, TRUE, FALSE);
+ BAOriSessionTearDown(pAd,
+ Elem->Wcid, (UCHAR)pDelFrame->DelbaParm.TID, TRUE, FALSE);
}
}
}
@@ -2126,8 +2129,8 @@ VOID Indicate_AMPDU_Packet(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk, UCHAR wdev_idx)
TmpSeq = (MAXSEQ+1) + TmpSeq;
WinStartSeq = (TmpSeq+1) & MAXSEQ;
- ba_indicate_reordering_mpdus_le_seq(pAd, pBAEntry, WinStartSeq);
- pBAEntry->LastIndSeq = WinStartSeq; /* TmpSeq; */
+ ba_indicate_reordering_mpdus_le_seq(pAd, pBAEntry, (USHORT)WinStartSeq);
+ pBAEntry->LastIndSeq = (USHORT)WinStartSeq; /* TmpSeq; */
pBAEntry->LastIndSeqAtTimer = Now32;
@@ -2135,7 +2138,7 @@ VOID Indicate_AMPDU_Packet(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk, UCHAR wdev_idx)
TmpSeq = ba_indicate_reordering_mpdus_in_order(pAd, pBAEntry, pBAEntry->LastIndSeq);
if (TmpSeq != RESET_RCV_SEQ)
- pBAEntry->LastIndSeq = TmpSeq;
+ pBAEntry->LastIndSeq = (USHORT)TmpSeq;
#endif
}
}
diff --git a/common/cmm_cfg.c b/common/cmm_cfg.c
index 8dc14dc..e258e3a 100755
--- a/common/cmm_cfg.c
+++ b/common/cmm_cfg.c
@@ -572,7 +572,7 @@ INT RT_CfgSetWepKey(
case 16: /*wep 128 Ascii type*/
#endif
bKeyIsHex = FALSE;
- pSharedKey->KeyLen = KeyLen;
+ pSharedKey->KeyLen = (UCHAR)KeyLen;
NdisMoveMemory(pSharedKey->Key, keyString, KeyLen);
break;
@@ -587,7 +587,7 @@ INT RT_CfgSetWepKey(
return FALSE; /*Not Hex value;*/
}
bKeyIsHex = TRUE;
- pSharedKey->KeyLen = KeyLen/2 ;
+ pSharedKey->KeyLen = (UCHAR)(KeyLen/2);
AtoH(keyString, pSharedKey->Key, pSharedKey->KeyLen);
break;
@@ -815,19 +815,20 @@ INT RtmpIoctl_rt_ioctl_giwname(
if (CurOpMode == OPMODE_AP)
{
+ /* For SIOCGIWNAME, struct iwreq_data.name's size is IFNAMSIZ (16). */
#ifdef P2P_SUPPORT
if (pObj->ioctl_if_type == INT_P2P)
{
if (P2P_CLI_ON(pAd))
- strcpy(pData, "Ralink P2P Cli");
+ strncpy(pData, "Ralink P2P Cli", IFNAMSIZ);
else if (P2P_GO_ON(pAd))
- strcpy(pData, "Ralink P2P GO");
+ strncpy(pData, "Ralink P2P GO", IFNAMSIZ);
else
- strcpy(pData, "Ralink P2P");
+ strncpy(pData, "Ralink P2P", IFNAMSIZ);
}
else
#endif /* P2P_SUPPORT */
- strcpy(pData, "RTWIFI SoftAP");
+ strncpy(pData, "RTWIFI SoftAP", IFNAMSIZ);
}
return NDIS_STATUS_SUCCESS;
@@ -1501,25 +1502,32 @@ INT RTMP_COM_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_INF_STATS_GET:
- /* get statistics */
- {
- RT_CMD_STATS *pStats = (RT_CMD_STATS *)pData;
- pStats->pStats = pAd->stats;
- if(pAd->OpMode == OPMODE_STA)
- {
- pStats->rx_packets = pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
- pStats->tx_packets = pAd->WlanCounters.TransmittedFragmentCount.QuadPart;
- pStats->rx_bytes = pAd->RalinkCounters.ReceivedByteCount;
- pStats->tx_bytes = pAd->RalinkCounters.TransmittedByteCount;
- pStats->rx_errors = pAd->Counters8023.RxErrors;
- pStats->tx_errors = pAd->Counters8023.TxErrors;
- pStats->multicast = pAd->WlanCounters.MulticastReceivedFrameCount.QuadPart; /* multicast packets received*/
- pStats->collisions = 0; /* Collision packets*/
- pStats->rx_over_errors = pAd->Counters8023.RxNoBuffer; /* receiver ring buff overflow*/
- pStats->rx_crc_errors = 0;/*pAd->WlanCounters.FCSErrorCount; recved pkt with crc error*/
- pStats->rx_frame_errors = 0; /* recv'd frame alignment error*/
- pStats->rx_fifo_errors = pAd->Counters8023.RxNoBuffer; /* recv'r fifo overrun*/
- }
+ /* get statistics */
+ {
+ RT_CMD_STATS *pStats = (RT_CMD_STATS *)pData;
+
+ pStats->pStats = pAd->stats;
+ if (pAd->OpMode == OPMODE_STA) {
+ pStats->rx_packets =
+ (ULONG)pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
+ pStats->tx_packets =
+ (ULONG)pAd->WlanCounters.TransmittedFragmentCount.QuadPart;
+ pStats->rx_bytes = pAd->RalinkCounters.ReceivedByteCount;
+ pStats->tx_bytes = pAd->RalinkCounters.TransmittedByteCount;
+ pStats->rx_errors = pAd->Counters8023.RxErrors;
+ pStats->tx_errors = pAd->Counters8023.TxErrors;
+ /* multicast packets received*/
+ pStats->multicast =
+ (ULONG)pAd->WlanCounters.MulticastReceivedFrameCount.QuadPart;
+ pStats->collisions = 0; /* Collision packets*/
+ /* receiver ring buff overflow*/
+ pStats->rx_over_errors = pAd->Counters8023.RxNoBuffer;
+ /*pAd->WlanCounters.FCSErrorCount; recved pkt with crc error*/
+ pStats->rx_crc_errors = 0;
+ pStats->rx_frame_errors = 0; /* recv'd frame alignment error*/
+ /* recv'r fifo overrun*/
+ pStats->rx_fifo_errors = pAd->Counters8023.RxNoBuffer;
+ }
#ifdef CONFIG_AP_SUPPORT
else if(pAd->OpMode == OPMODE_AP)
{
@@ -1566,7 +1574,7 @@ INT RTMP_COM_IoctlHandle(
pStats->rx_fifo_errors = 0; /* recv'r fifo overrun*/
}
#endif
- }
+ }
break;
case CMD_RTPRIV_IOCTL_INF_IW_STATUS_GET:
@@ -1626,15 +1634,17 @@ INT RTMP_COM_IoctlHandle(
#ifdef CONFIG_STA_SUPPORT
if (CurOpMode == OPMODE_STA)
- pStats->qual = ((pAd->Mlme.ChannelQuality * 12)/10 + 10);
+ pStats->qual = (UINT8)((pAd->Mlme.ChannelQuality * 12)/10 + 10);
#endif /* CONFIG_STA_SUPPORT */
#ifdef CONFIG_AP_SUPPORT
if (CurOpMode == OPMODE_AP)
{
if (pMacEntry != NULL)
- pStats->qual = ((pMacEntry->ChannelQuality * 12)/10 + 10);
+ pStats->qual =
+ (UINT8)((pMacEntry->ChannelQuality * 12)/10 + 10);
else
- pStats->qual = ((pAd->Mlme.ChannelQuality * 12)/10 + 10);
+ pStats->qual =
+ (UINT8)((pAd->Mlme.ChannelQuality * 12)/10 + 10);
}
#endif /* CONFIG_AP_SUPPORT */
@@ -1669,18 +1679,14 @@ INT RTMP_COM_IoctlHandle(
#endif /* CONFIG_AP_SUPPORT */
#ifdef CONFIG_AP_SUPPORT
- pStats->noise = RTMPMaxRssi(pAd, pAd->ApCfg.RssiSample.AvgRssi[0],
- pAd->ApCfg.RssiSample.AvgRssi[1],
- pAd->ApCfg.RssiSample.AvgRssi[2]) -
- RTMPMinSnr(pAd, pAd->ApCfg.RssiSample.AvgSnr[0],
- pAd->ApCfg.RssiSample.AvgSnr[1]);
+ pStats->noise = RTMPMaxNoise(pAd, pAd->ApCfg.RssiSample.LastNoiseLevel[0],
+ pAd->ApCfg.RssiSample.LastNoiseLevel[1],
+ pAd->ApCfg.RssiSample.LastNoiseLevel[2]);
#endif /* CONFIG_AP_SUPPORT */
#ifdef CONFIG_STA_SUPPORT
- pStats->noise = RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.AvgRssi[0],
- pAd->StaCfg.RssiSample.AvgRssi[1],
- pAd->StaCfg.RssiSample.AvgRssi[2]) -
- RTMPMinSnr(pAd, pAd->StaCfg.RssiSample.AvgSnr[0],
- pAd->StaCfg.RssiSample.AvgSnr[1]);
+ pStats->noise = RTMPMaxNoise(pAd, pAd->StaCfg.RssiSample.LastNoiseLevel[0],
+ pAd->StaCfg.RssiSample.LastNoiseLevel[1],
+ pAd->StaCfg.RssiSample.LastNoiseLevel[2]);
#endif /* CONFIG_STA_SUPPORT */
}
break;
@@ -1726,6 +1732,13 @@ INT RTMP_COM_IoctlHandle(
#ifdef CONFIG_ATE
#ifdef CONFIG_QA
case CMD_RTPRIV_IOCTL_ATE:
+ if (!wrq) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("null wrq in CMD_RTPRIV_IOCTL_ATE\n"));
+ Status = -EINVAL;
+ break;
+ }
+
RtmpDoAte(pAd, wrq, pData);
break;
#endif /* CONFIG_QA */
@@ -1751,6 +1764,7 @@ INT RTMP_COM_IoctlHandle(
*(UCHAR *)(pData+i) = mac_addr[i];
break;
}
+
#ifdef CONFIG_AP_SUPPORT
case CMD_RTPRIV_IOCTL_AP_SIOCGIWRATEQ:
/* handle for SIOCGIWRATEQ */
@@ -1775,11 +1789,11 @@ INT RTMP_COM_IoctlHandle(
#endif /* WDS_SUPPORT */
HtPhyMode = pAd->ApCfg.MBSSID[pObj->ioctl_if].wdev.HTPhyMode;
- RtmpDrvMaxRateGet(pAd, HtPhyMode.field.MODE, HtPhyMode.field.ShortGI,
- HtPhyMode.field.BW, HtPhyMode.field.MCS,
+ RtmpDrvMaxRateGet(pAd, (UINT8)HtPhyMode.field.MODE, (UINT8)HtPhyMode.field.ShortGI,
+ (UINT8)HtPhyMode.field.BW, (UINT8)HtPhyMode.field.MCS,
(UINT32 *)&pRate->BitRate);
}
- break;
+ break;
#endif /* CONFIG_AP_SUPPORT */
case CMD_RTPRIV_IOCTL_SIOCGIWNAME:
@@ -1797,7 +1811,6 @@ INT RTMP_COM_IoctlHandle(
break;
#endif /* CONFIG_TSO_SUPPORT */
}
-
#ifdef RT_CFG80211_SUPPORT
if ((CMD_RTPRIV_IOCTL_80211_START <= cmd) &&
(cmd <= CMD_RTPRIV_IOCTL_80211_END))
@@ -2131,7 +2144,7 @@ INT Set_MultiMacAddrExt_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT set_tssi_enable(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- UINT8 tssi_enable = 0;
+ long tssi_enable = 0;
tssi_enable = simple_strtol(arg, 0, 10);
@@ -2142,7 +2155,7 @@ INT set_tssi_enable(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
pAd->chipCap.tssi_enable = FALSE;
DBGPRINT(RT_DEBUG_OFF, ("turn off TSS mechanism\n"));
} else {
- DBGPRINT(RT_DEBUG_OFF, ("illegal param(%u)\n", tssi_enable));
+ DBGPRINT(RT_DEBUG_OFF, ("illegal param(%ld)\n", tssi_enable));
return FALSE;
}
return TRUE;
@@ -2242,7 +2255,8 @@ INT set_fw_debug(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT set_get_fid(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
//TODO: Carter, at present, only can read pkt in Port2(LMAC port)
- volatile UCHAR q_idx = 0, loop = 0, dw_idx = 0;
+ UCHAR loop = 0, dw_idx = 0;
+ long q_idx = 0;
UINT32 head_fid_addr = 0, dw_content, next_fid_addr = 0;
volatile UINT32 value = 0x00000000L;
q_idx = simple_strtol(arg, 0, 10);
@@ -2253,7 +2267,7 @@ INT set_get_fid(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
head_fid_addr = head_fid_addr & 0xfff;
if (head_fid_addr == 0xfff) {
- DBGPRINT(RT_DEBUG_ERROR, ("%s, q_idx:%d empty!!\n", __func__, q_idx));
+ DBGPRINT(RT_DEBUG_ERROR, ("%s, q_idx:%ld empty!!\n", __func__, q_idx));
return TRUE;
}
@@ -2345,7 +2359,7 @@ INT set_fw_log(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
LogType = simple_strtol(arg, 0, 10);
if (LogType < 3)
- CmdFwLog2Host(pAd, LogType);
+ CmdFwLog2Host(pAd, (UINT8)LogType);
else
DBGPRINT(RT_DEBUG_OFF, (":%s: Unknown Log Type = %d\n", __FUNCTION__, LogType));
@@ -2513,7 +2527,7 @@ INT Set_themal_sensor(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if ((value == 0) || (value == 1)) {
#if defined(MT7603) || defined(MT7628)
- temperature = MtAsicGetThemalSensor(pAd, value);
+ temperature = MtAsicGetThemalSensor(pAd, (CHAR)value);
DBGPRINT(RT_DEBUG_OFF, ("%s: ThemalSensor = 0x%x\n", __FUNCTION__, temperature));
#else
CmdGetThemalSensorResult(pAd, value);
@@ -2530,8 +2544,8 @@ INT Set_rx_pspoll_filter_proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UINT32 value;
value = simple_strtol(arg, 0, 10);
- pAd->rx_pspoll_filter = value;
- MtAsicSetRxPspollFilter(pAd, pAd->rx_pspoll_filter);
+ pAd->rx_pspoll_filter = (USHORT)value;
+ MtAsicSetRxPspollFilter(pAd, (CHAR)pAd->rx_pspoll_filter);
DBGPRINT(RT_DEBUG_OFF, (":%s: rx_pspoll_filter=%d\n", __FUNCTION__, pAd->rx_pspoll_filter));
return TRUE;
@@ -2541,7 +2555,7 @@ INT Set_rx_pspoll_filter_proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
#ifdef SINGLE_SKU_V2
INT SetSKUEnable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- UCHAR value;
+ long value;
value = simple_strtol(arg, 0, 10);
diff --git a/common/cmm_data.c b/common/cmm_data.c
index 345e5b5..bb85d32 100755
--- a/common/cmm_data.c
+++ b/common/cmm_data.c
@@ -303,10 +303,8 @@ VOID ParseRxVPacket(RTMP_ADAPTER *pAd, UINT32 Type, RX_BLK *RxBlk, UCHAR *Data)
RX_VECTOR1_3TH_CYCLE *RXV1_3TH_CYCLE = NULL;
#endif /* CONFIG_QA */
RX_VECTOR1_4TH_CYCLE *RXV1_4TH_CYCLE = NULL;
-#ifdef CONFIG_QA
RX_VECTOR1_5TH_CYCLE *RXV1_5TH_CYCLE = NULL;
-#endif /* CONFIG_QA */
- //RX_VECTOR1_6TH_CYCLE *RXV1_6TH_CYCLE = NULL;
+ RX_VECTOR1_6TH_CYCLE *RXV1_6TH_CYCLE = NULL;
RX_VECTOR2_1ST_CYCLE *RXV2_1ST_CYCLE = NULL;
RX_VECTOR2_2ND_CYCLE *RXV2_2ND_CYCLE = NULL;
RX_VECTOR2_3TH_CYCLE *RXV2_3TH_CYCLE = NULL;
@@ -319,10 +317,9 @@ VOID ParseRxVPacket(RTMP_ADAPTER *pAd, UINT32 Type, RX_BLK *RxBlk, UCHAR *Data)
RXV1_3TH_CYCLE = (RX_VECTOR1_3TH_CYCLE *)(Data + 8);
#endif /* CONFIG_QA */
RXV1_4TH_CYCLE = (RX_VECTOR1_4TH_CYCLE *)(Data + 12);
-#ifdef CONFIG_QA
RXV1_5TH_CYCLE = (RX_VECTOR1_5TH_CYCLE *)(Data + 16);
-#endif /* CONFIG_QA */
- //RXV1_6TH_CYCLE = (RX_VECTOR1_6TH_CYCLE *)(Data + 20);
+ RXV1_6TH_CYCLE = (RX_VECTOR1_6TH_CYCLE *)(Data + 20);
+ RXV2_2ND_CYCLE = (RX_VECTOR2_2ND_CYCLE *)(Data + 28);
}
else if (Type == RMAC_RX_PKT_TYPE_RX_TXRXV)
{
@@ -334,10 +331,9 @@ VOID ParseRxVPacket(RTMP_ADAPTER *pAd, UINT32 Type, RX_BLK *RxBlk, UCHAR *Data)
RXV1_3TH_CYCLE = (RX_VECTOR1_3TH_CYCLE *)(Data + 16);
#endif /* CONFIG_QA */
RXV1_4TH_CYCLE = (RX_VECTOR1_4TH_CYCLE *)(Data + 20);
-#ifdef CONFIG_QA
RXV1_5TH_CYCLE = (RX_VECTOR1_5TH_CYCLE *)(Data + 24);
-#endif /* CONFIG_QA */
- //RXV1_6TH_CYCLE = (RX_VECTOR1_6TH_CYCLE *)(Data + 28);
+
+ RXV1_6TH_CYCLE = (RX_VECTOR1_6TH_CYCLE *)(Data + 28);
RXV2_1ST_CYCLE = (RX_VECTOR2_1ST_CYCLE *)(Data + 32);
RXV2_2ND_CYCLE = (RX_VECTOR2_2ND_CYCLE *)(Data + 36);
RXV2_3TH_CYCLE = (RX_VECTOR2_3TH_CYCLE *)(Data + 40);
@@ -349,9 +345,12 @@ VOID ParseRxVPacket(RTMP_ADAPTER *pAd, UINT32 Type, RX_BLK *RxBlk, UCHAR *Data)
#ifdef CONFIG_QA
pAd->ATECtrl.RCPI0 = RXV1_3TH_CYCLE->Rcpi0;
pAd->ATECtrl.RCPI1 = RXV1_3TH_CYCLE->Rcpi1;
- pAd->ATECtrl.FreqOffsetFromRx = RXV1_5TH_CYCLE->FoE;
- pAd->ATECtrl.SNR0 = RXV1_5TH_CYCLE->LTF_SNR0;
- pAd->ATECtrl.SNR1 = RXV2_2ND_CYCLE->OfdmLtfSNR1;
+ if (RXV1_5TH_CYCLE) {
+ pAd->ATECtrl.FreqOffsetFromRx = RXV1_5TH_CYCLE->FoE;
+ pAd->ATECtrl.SNR0 = RXV1_5TH_CYCLE->LTF_SNR0;
+ }
+ if (RXV2_2ND_CYCLE)
+ pAd->ATECtrl.SNR1 = RXV2_2ND_CYCLE->OfdmLtfSNR1;
pAd->ATECtrl.RSSI0 = RXV1_3TH_CYCLE->Rcpi0/2 - 110;
pAd->ATECtrl.RSSI1 = RXV1_3TH_CYCLE->Rcpi1/2 - 110;
#endif /* CONFIG_QA */
@@ -373,17 +372,32 @@ VOID ParseRxVPacket(RTMP_ADAPTER *pAd, UINT32 Type, RX_BLK *RxBlk, UCHAR *Data)
//RxBlk->rx_signal.raw_rssi[1] = (RXV1_3TH_CYCLE->Rcpi1 - 220) / 2;
RxBlk->rx_signal.raw_rssi[0] = (CHAR)RXV1_4TH_CYCLE->IBRssi0;
RxBlk->rx_signal.raw_rssi[1] = (CHAR)RXV1_4TH_CYCLE->IBRssi1;
+ if (RXV1_5TH_CYCLE)
+ RxBlk->rx_signal.raw_snr[0] = RXV1_5TH_CYCLE->LTF_SNR0;
+ if (RXV2_2ND_CYCLE)
+ RxBlk->rx_signal.raw_snr[1] = RXV2_2ND_CYCLE->OfdmLtfSNR1;
+
+ if (RXV1_6TH_CYCLE) {
+#ifdef CONFIG_AP_SUPPORT
+ pAd->ApCfg.RssiSample.LastNoiseLevel[0] = ((RXV1_6TH_CYCLE->Nf0 - 254)/2);
+ pAd->ApCfg.RssiSample.LastNoiseLevel[1] = ((RXV1_6TH_CYCLE->Nf1 - 254)/2);
+#endif
+#ifdef CONFIG_STA_SUPPORT
+ pAd->StaCfg.RssiSample.LastNoiseLevel[0] = ((RXV1_6TH_CYCLE->Nf0 - 254)/2);
+ pAd->StaCfg.RssiSample.LastNoiseLevel[1] = ((RXV1_6TH_CYCLE->Nf1 - 254)/2);
+#endif
+ }
//RxBlk->rx_signal.raw_snr[0] = rxwi_n->bbp_rxinfo[0];
//RxBlk->rx_signal.raw_snr[1] = rxwi_n->bbp_rxinfo[1];
//RxBlk->rx_signal.freq_offset = rxwi_n->bbp_rxinfo[4];
- RxBlk->rx_rate.field.MODE = RXV1_1ST_CYCLE->TxMode;
- RxBlk->rx_rate.field.MCS = RXV1_1ST_CYCLE->TxRate;
- RxBlk->rx_rate.field.ldpc = RXV1_1ST_CYCLE->HtAdCode;
- RxBlk->rx_rate.field.BW = RXV1_1ST_CYCLE->FrMode;
- RxBlk->rx_rate.field.STBC = RXV1_1ST_CYCLE->HtStbc;
- RxBlk->rx_rate.field.ShortGI = RXV1_1ST_CYCLE->HtShortGi;
+ RxBlk->rx_rate.field.MODE = (USHORT)RXV1_1ST_CYCLE->TxMode;
+ RxBlk->rx_rate.field.MCS = (USHORT)RXV1_1ST_CYCLE->TxRate;
+ RxBlk->rx_rate.field.ldpc = (USHORT)RXV1_1ST_CYCLE->HtAdCode;
+ RxBlk->rx_rate.field.BW = (USHORT)RXV1_1ST_CYCLE->FrMode;
+ RxBlk->rx_rate.field.STBC = (USHORT)RXV1_1ST_CYCLE->HtStbc;
+ RxBlk->rx_rate.field.ShortGI = (USHORT)RXV1_1ST_CYCLE->HtShortGi;
}
@@ -450,7 +464,7 @@ static inline INT32 mt_rx_info_2_blk(
//dump_rmac_info(pAd, RMACInfo);
- pRxBlk->MPDUtotalByteCnt = rx_base->rxd_0.rx_byte_cnt - RMACInfoLen;
+ pRxBlk->MPDUtotalByteCnt = (USHORT)(rx_base->rxd_0.rx_byte_cnt - RMACInfoLen);
if (rx_base->rxd_1.hdr_offset == 1) {
pRxBlk->MPDUtotalByteCnt -= 2;
@@ -458,10 +472,10 @@ static inline INT32 mt_rx_info_2_blk(
}
pRxBlk->DataSize = pRxBlk->MPDUtotalByteCnt;
- pRxBlk->wcid = rx_base->rxd_2.wlan_idx;
- pRxBlk->bss_idx = rx_base->rxd_1.bssid;
- pRxBlk->key_idx = rx_base->rxd_1.key_id;
- pRxBlk->TID = rx_base->rxd_2.tid;
+ pRxBlk->wcid = (UCHAR)rx_base->rxd_2.wlan_idx;
+ pRxBlk->bss_idx = (UCHAR)rx_base->rxd_1.bssid;
+ pRxBlk->key_idx = (UCHAR)rx_base->rxd_1.key_id;
+ pRxBlk->TID = (UCHAR)rx_base->rxd_2.tid;
pRxBlk->TimeStamp = RxdGrp2->timestamp;
pRxBlk->pRxInfo->U2M = rx_base->rxd_1.u2m;
@@ -608,7 +622,7 @@ UINT32 parse_rx_packet_type(RTMP_ADAPTER *ad, RX_BLK *rx_blk, VOID *rx_packet)
*(((UINT32 *)txs_d3)) = SWAP32(*(((UINT32 *)txs_d3)));
*(((UINT32 *)txs_d4)) = SWAP32(*(((UINT32 *)txs_d4)));
#endif
- ParseTxSPacket(ad, txs_d4->pid, txs_d0->txsfm, ptr);
+ ParseTxSPacket(ad, txs_d4->pid, (UINT8)txs_d0->txsfm, ptr);
ptr += 20;
}
@@ -1525,6 +1539,11 @@ NDIS_STATUS MlmeHardTransmitMgmtRing(RTMP_ADAPTER *pAd, UCHAR QueIdx, PNDIS_PACK
UCHAR TxPwrAdj = 0;
#endif /* SPECIFIC_TX_POWER_SUPPORT */
#endif /* CONFIG_AP_SUPPORT */
+#ifdef RT_CFG80211_P2P_SUPPORT
+ struct ieee80211_mgmt *mgmt;
+ BOOLEAN is_P2P_action_frame = FALSE;
+#endif /* RT_CFG80211_P2P_SUPPORT */
+
UCHAR prot = 0;
UCHAR apidx = 0;
ULONG Flags = 0;
@@ -1663,15 +1682,22 @@ NDIS_STATUS MlmeHardTransmitMgmtRing(RTMP_ADAPTER *pAd, UCHAR QueIdx, PNDIS_PACK
#endif /* P2P_SUPPORT */
#ifdef RT_CFG80211_P2P_SUPPORT
-// INT wdev_idx = rtmp_wdev_idx_find_by_p2p_ifaddr(pAd, pHeader_802_11->Addr2);
+ /* make sure that p2p does not use cck rate */
+ mgmt = (struct ieee80211_mgmt *)pHeader_802_11;
+ if (ieee80211_is_action(mgmt->frame_control)) {
+ PP2P_PUBLIC_FRAME pP2PFrame = (PP2P_PUBLIC_FRAME) pHeader_802_11;
+
+ if ((pP2PFrame->p80211Header.FC.SubType == SUBTYPE_ACTION) &&
+ (pP2PFrame->Category == CATEGORY_PUBLIC) &&
+ (pP2PFrame->Action == ACTION_WIFI_DIRECT))
+ is_P2P_action_frame = TRUE;
+ }
-// if (wdev_idx > 0)
- {
- if (pAd->CommonCfg.MlmeTransmit.field.MODE == MODE_CCK)
- {
- pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
- pAd->CommonCfg.MlmeTransmit.field.MCS = MCS_RATE_6;
- }
+ if ((pAd->CommonCfg.MlmeTransmit.field.MODE == MODE_CCK) &&
+ (pAd->ScanCtrl.ScanType == SCAN_P2P ||
+ (is_P2P_action_frame))) {
+ pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+ pAd->CommonCfg.MlmeTransmit.field.MCS = MCS_RATE_6;
}
#endif /* RT_CFG80211_SUPPORT */
@@ -1879,7 +1905,7 @@ NDIS_STATUS MlmeHardTransmitMgmtRing(RTMP_ADAPTER *pAd, UCHAR QueIdx, PNDIS_PACK
pEntry = MacTableLookup(pAd, pHeader_802_11->Addr1);
if (pEntry)
- wcid = pEntry->Aid;
+ wcid = (UCHAR)pEntry->Aid;
}
#endif
}
@@ -1995,7 +2021,7 @@ NDIS_STATUS MlmeHardTransmitMgmtRing(RTMP_ADAPTER *pAd, UCHAR QueIdx, PNDIS_PACK
PID = PID_CTL_BAR;
mac_info.hdr_len = 16;
mac_info.SpeEn = 0;
- mac_info.TID = pBar->BarControl.TID;
+ mac_info.TID = (UCHAR)pBar->BarControl.TID;
if (pAd->CommonCfg.Channel > 14)
{ /* 2.4G */
TransmitSetting.field.MODE = MODE_OFDM;
@@ -2058,19 +2084,19 @@ NDIS_STATUS MlmeHardTransmitMgmtRing(RTMP_ADAPTER *pAd, UCHAR QueIdx, PNDIS_PACK
if ((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) && RTMPEnterPsmNullBitStatus(&pAd->StaCfg.PwrMgmt))
{
- DBGPRINT(RT_DEBUG_INFO, ("%s(line=%d)\n", __FUNCTION__, __LINE__));
+ DBGPRINT(RT_DEBUG_TRACE, ("%s(line=%d)\n", __FUNCTION__, __LINE__));
RTMPClearEnterPsmNullBit(&pAd->StaCfg.PwrMgmt);
TxSTypeCtlPerPkt(pAd, mac_info.PID, TXS_FORMAT0, FALSE, TRUE, FALSE, TXS_DUMP_REPEAT);
}
else
{
- DBGPRINT(RT_DEBUG_INFO, ("%s(line=%d)\n", __FUNCTION__, __LINE__));
+ DBGPRINT(RT_DEBUG_TRACE, ("%s(line=%d)\n", __FUNCTION__, __LINE__));
TxSTypeCtlPerPkt(pAd, mac_info.PID, TXS_FORMAT0, FALSE, FALSE, FALSE, TXS_DUMP_REPEAT);
}
}
#endif /* MT_MAC */
#endif /* CONFIG_STA_SUPPORT */
- DBGPRINT(RT_DEBUG_INFO, ("%s(line=%d), mac_info.PsmBySw(%d)\n", __FUNCTION__, __LINE__, mac_info.PsmBySw));
+ DBGPRINT(RT_DEBUG_TRACE, ("%s(line=%d), mac_info.PsmBySw(%d)\n", __FUNCTION__, __LINE__, mac_info.PsmBySw));
if(pCfg80211_ctrl->TxStatusInUsed && pCfg80211_ctrl->IsNeedTxStatus)
{
DBGPRINT(RT_DEBUG_TRACE, ("%s %d, PID (%d)\n", __FUNCTION__, __LINE__, mac_info.PID));
@@ -2835,7 +2861,7 @@ VOID rtmp_tx_swq_dump(RTMP_ADAPTER *pAd, INT qidx)
VOID rtmp_ps_init(RTMP_ADAPTER *pAd)
{
- UINT32 i= 0;
+ UCHAR i = 0;
/*initial PS Token Queue*/
DlListInit(&pAd->psTokenQueue);
@@ -2890,7 +2916,7 @@ INT rtmp_psDeq_req(RTMP_ADAPTER *pAd)
struct WCID_TABLE *psEntry = NULL;
struct tx_swq_fifo *fifo_swq;
- UCHAR cnt=0,i=0;
+ INT32 cnt = 0, i = 0;
INT32 capCount=0;
/*remove first psToken now, should check WCID requeue when report*/
do {
@@ -3176,10 +3202,10 @@ INT rtmp_deq_req(RTMP_ADAPTER *pAd, INT cnt, struct dequeue_info *info)
info->full_qid[2] = FALSE;
info->full_qid[3] = FALSE;
} else {
- info->q_max_cnt[0] = cnt;
- info->q_max_cnt[1] = cnt;
- info->q_max_cnt[2] = cnt;
- info->q_max_cnt[3] = cnt;
+ info->q_max_cnt[0] = (UCHAR)cnt;
+ info->q_max_cnt[1] = (UCHAR)cnt;
+ info->q_max_cnt[2] = (UCHAR)cnt;
+ info->q_max_cnt[3] = (UCHAR)cnt;
}
info->inited = 1;
}
@@ -3751,7 +3777,7 @@ VOID RTMPDeQueuePacket(
//NdisZeroMemory((UCHAR *)&deq_info, sizeof(deq_info));
- deq_info.target_wcid = ((wcid == WCID_ALL) ? MAX_LEN_OF_TR_TABLE : wcid);
+ deq_info.target_wcid = (UCHAR)((wcid == WCID_ALL) ? MAX_LEN_OF_TR_TABLE : wcid);
deq_info.target_que = QIdx;
do
diff --git a/common/cmm_data_usb.c b/common/cmm_data_usb.c
index afd1c82..3714b9f 100755
--- a/common/cmm_data_usb.c
+++ b/common/cmm_data_usb.c
@@ -12,7 +12,7 @@
NDIS_STATUS RTUSBFreeDescriptorRelease(RTMP_ADAPTER *pAd, UCHAR BulkOutPipeId)
{
HT_TX_CONTEXT *pHTTXContext;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
pHTTXContext = &pAd->TxContext[BulkOutPipeId];
@@ -49,7 +49,7 @@ NDIS_STATUS RTUSBFreeDescRequest(
IN UINT32 req_cnt)
{
NDIS_STATUS Status = NDIS_STATUS_FAILURE;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
HT_TX_CONTEXT *pHTTXContext;
#ifdef MULTI_WMM_SUPPORT
@@ -144,7 +144,7 @@ BOOLEAN RTUSBNeedQueueBackForAgg(RTMP_ADAPTER *pAd, UCHAR BulkOutPipeId)
{
HT_TX_CONTEXT *pHTTXContext;
BOOLEAN needQueBack = FALSE;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
pHTTXContext = &pAd->TxContext[BulkOutPipeId];
@@ -579,7 +579,7 @@ USHORT RtmpUSB_WriteFragTxResource(
PUCHAR pWirelessPacket = NULL;
UCHAR QueIdx;
NDIS_STATUS Status;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
UINT32 USBDMApktLen = 0, DMAHdrLen, padding;
#ifdef USB_BULK_BUF_ALIGMENT
BOOLEAN bLasAlignmentsectiontRound = FALSE;
@@ -794,7 +794,7 @@ USHORT RtmpUSB_WriteSingleTxResource(
//TXWI_STRUC *pTxWI;
UCHAR *pWirelessPacket, *buf;
UCHAR QueIdx;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
NDIS_STATUS Status;
UINT32 hdr_copy_len, hdr_len, dma_len = 0, padding;
#ifndef USB_BULK_BUF_ALIGMENT
@@ -1054,6 +1054,11 @@ USHORT RtmpUSB_WriteSingleTxResource(
#ifdef USB_BULK_BUF_ALIGMENT
INT idx=0;
#endif
+ if (QueIdx >= NUM_OF_TX_RING) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s: Invalid QueIdx (%d)\n"
+ , __func__, QueIdx));
+ return NDIS_STATUS_FAILURE;
+ }
RTMP_IRQ_LOCK(&pAd->TxContextQueueLock[QueIdx], IrqFlags);
pHTTXContext = &pAd->TxContext[QueIdx];
fillOffset = pHTTXContext->CurWritePosition;
@@ -1321,7 +1326,7 @@ USHORT RtmpUSB_WriteMultiTxResource(
UCHAR *pWirelessPacket = NULL;
UCHAR QueIdx;
NDIS_STATUS Status;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
#ifdef USB_BULK_BUF_ALIGMENT
INT idx=0;
#endif
@@ -1486,7 +1491,7 @@ VOID RtmpUSB_FinalWriteTxResource(
TXWI_STRUC *pTxWI;
#endif
UINT32 USBDMApktLen, padding;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
PUCHAR pWirelessPacket;
#ifdef MT_MAC
TMAC_TXD_S *txd_s;
@@ -1713,12 +1718,12 @@ int RtmpUSBMgmtKickOut(
{
TXINFO_STRUC *pTxInfo;
ULONG BulkOutSize;
- UCHAR padLen;
+ ULONG padLen;
PUCHAR pDest;
ULONG SwIdx;
TX_CONTEXT *pMLMEContext = NULL;
TX_CONTEXT *pBcnContext = NULL;
- ULONG IrqFlags;
+ ULONG IrqFlags = 0;
RTMP_IRQ_LOCK(&pAd->MLMEBulkOutLock, IrqFlags);
#if defined(MT7603)
diff --git a/common/cmm_info.c b/common/cmm_info.c
index dfbf565..29ad17a 100755
--- a/common/cmm_info.c
+++ b/common/cmm_info.c
@@ -71,16 +71,115 @@ INT SetManualTxOPLowBound(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
Return:
==========================================================================
*/
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+INT SetSCSEnable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
+{
+ UINT32 value;
+
+ value = simple_strtol(arg, 0, 10);
+ if (value > 500) {
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s (Traffice Threshold=%d)\n", __FUNCTION__, value));
+ } else {
+ if (value == 1) {
+ pAd->SCSCtrl.SCSEnable = SCS_ENABLE;
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s (ON)\n", __FUNCTION__));
+ } else if (value == 0) {
+ pAd->SCSCtrl.SCSEnable = SCS_DISABLE;
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s (OFF)\n", __FUNCTION__));
+ /* Restore to default */
+ RTMP_IO_WRITE32(pAd, CR_AGC_0, pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_0_RX1, pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3, pAd->SCSCtrl.CR_AGC_3_default);
+ RTMP_IO_WRITE32(pAd, CR_AGC_3_RX1, pAd->SCSCtrl.CR_AGC_3_default);
+
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_DEFAULT;
+ } else
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s (Unknow value = %d)\n", __FUNCTION__, value));
+ }
+
+ return TRUE;
+}
+
+INT SetSCSCfg_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
+{
+ INT32 Recv = 0;
+ INT SCSMinRssiTolerance = 0, SCSTrafficThreshold = 0, FalseCcaUpBond = 0;
+ INT FalseCcaLowBond = 0, FixedBond = 0, ForceMode = 0;
+
+ Recv = sscanf(arg, "%d-%d-%d-%d-%d-%d", &(SCSMinRssiTolerance), &(SCSTrafficThreshold),
+ &(FalseCcaUpBond), &(FalseCcaLowBond), &(FixedBond), &(ForceMode));
+ if (Recv != 6) {
+ DBGPRINT(RT_DEBUG_OFF, ("Format Error!\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("iwpriv ra0 set SCSCfg=[MinRssiTolerance]-"));
+ DBGPRINT(RT_DEBUG_OFF, ("[TrafficThreshold]-[FalseCcaUpBoundary]-"));
+ DBGPRINT(RT_DEBUG_OFF, ("[FalseCcaLowBoundary]-[FixedBoundary]-[ForceMode]\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("PS: FiexedBond is Negative number. Ex:70 means -70dBm"));
+ } else {
+ pAd->SCSCtrl.SCSMinRssiTolerance = (UINT8)SCSMinRssiTolerance;
+ pAd->SCSCtrl.SCSTrafficThreshold = SCSTrafficThreshold;
+ pAd->SCSCtrl.FalseCcaUpBond = (UINT16)FalseCcaUpBond;
+ pAd->SCSCtrl.FalseCcaLowBond = (UINT16)FalseCcaLowBond;
+ pAd->SCSCtrl.FixedRssiBond = (0 - (CHAR)FixedBond);
+ pAd->SCSCtrl.ForceMode = (BOOLEAN)ForceMode;
+ }
+ return TRUE;
+}
+
+INT SetSCSDbgLogEnable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
+{
+ UINT32 value;
+
+ value = simple_strtol(arg, 0, 10);
+ #if 0
+ if (value == SCS_DBG_LOG_DISABLE) {
+ pAd->SCSCtrl.SCSDbgLogLv = RT_DEBUG_INFO;
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s: Disable SCS debug log\n", __FUNCTION__));
+ } else if (value == SCS_DBG_LOG_ENABLE) {
+ pAd->SCSCtrl.SCSDbgLogLv = RT_DEBUG_OFF;
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s: Enable SCS debug log\n", __FUNCTION__));
+ } else
+ DBGPRINT(RT_DEBUG_OFF, ("==>%s: Wrong value(0:Disable;1:Enable)\n", __FUNCTION__));
+ #endif
+ return TRUE;
+}
+INT32 ShowSCSInfo(RTMP_ADAPTER *pAd, RTMP_STRING *Arg)
+{
+ DBGPRINT(RT_DEBUG_OFF, ("========Configuration==========\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("SCS enable =%d\n", pAd->SCSCtrl.SCSEnable));
+ DBGPRINT(RT_DEBUG_OFF, ("MinRssi Tolerance=%d\n", pAd->SCSCtrl.SCSMinRssiTolerance));
+ DBGPRINT(RT_DEBUG_OFF, ("FixedRssiBoundary=%d\n", pAd->SCSCtrl.FixedRssiBond));
+ DBGPRINT(RT_DEBUG_OFF, ("False CCA up boundayr =%d\n", pAd->SCSCtrl.FalseCcaUpBond));
+ DBGPRINT(RT_DEBUG_OFF, ("False CCA low boundayr =%d\n", pAd->SCSCtrl.FalseCcaLowBond));
+ DBGPRINT(RT_DEBUG_OFF, ("Traffic threshold =%d\n", pAd->SCSCtrl.SCSTrafficThreshold));
+ DBGPRINT(RT_DEBUG_OFF, ("ForceMode = %d\n", pAd->SCSCtrl.ForceMode));
+ DBGPRINT(RT_DEBUG_OFF, ("========Statistic /Status==========\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("Min RSSI=%d\n", pAd->SCSCtrl.SCSMinRssi));
+ DBGPRINT(RT_DEBUG_OFF, ("PD count=%x\n", pAd->SCSCtrl.PdCount));
+ DBGPRINT(RT_DEBUG_OFF, ("MDRDY count=%x\n", pAd->SCSCtrl.MdrdyCount));
+ DBGPRINT(RT_DEBUG_OFF, ("FalseCCA count=%d\n", pAd->SCSCtrl.FalseCCA));
+ DBGPRINT(RT_DEBUG_OFF, ("Current RSSI boundary =%d\n", pAd->SCSCtrl.RSSIBoundary));
+ DBGPRINT(RT_DEBUG_OFF, ("RTS count =%d\n", pAd->SCSCtrl.RtsCount));
+ DBGPRINT(RT_DEBUG_OFF, ("RTS retry count =%d\n", pAd->SCSCtrl.RtsRtyCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Tx Traffic = %d\n",
+ pAd->RalinkCounters.OneSecTransmittedByteCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Rx Traffic = %d\n", pAd->RalinkCounters.OneSecReceivedByteCount));
+ DBGPRINT(RT_DEBUG_OFF, ("Current Sensitivity = %d\n", pAd->SCSCtrl.CurrSensitivity));
+ DBGPRINT(RT_DEBUG_OFF, ("Adjust Sensitivity = %d\n", pAd->SCSCtrl.AdjustSensitivity));
+
+ return TRUE;
+}
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+
INT Set_DriverVersion_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
#ifdef CONFIG_AP_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_AP(pAd)
- // DBGPRINT(RT_DEBUG_OFF, ("Driver version-%s %s %s\n", AP_DRIVER_VERSION, __DATE__, __TIME__));
+ DBGPRINT(RT_DEBUG_OFF, ("Driver version-%s\n", AP_DRIVER_VERSION));
#endif /* CONFIG_AP_SUPPORT */
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
- // DBGPRINT(RT_DEBUG_OFF, ("Driver version-%s %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__));
+ DBGPRINT(RT_DEBUG_OFF, ("Driver version-%s \n", STA_DRIVER_VERSION));
#endif /* CONFIG_STA_SUPPORT */
#ifdef CONFIG_ANDES_SUPPORT
@@ -1717,14 +1816,16 @@ VOID RTMPIoctlMAC(RTMP_ADAPTER *pAd, RTMP_IOCTL_INPUT_STRUCT *wrq)
if (is_write) {
RTMP_IO_WRITE32(pAd, mac_s, macVal);
- sprintf(msg+strlen(msg), "[0x%04x]:%08x ", mac_s, macVal);
+ snprintf(msg+strlen(msg), 4096-strlen(msg)
+ , "[0x%04x]:%08x ", mac_s, macVal);
if (!bFromUI)
DBGPRINT(RT_DEBUG_INFO, ("MacAddr=0x%x, MacValue=0x%x\n", mac_s, macVal));
} else {
for(IdMac = mac_s; IdMac <= mac_e; IdMac += 4)
{
RTMP_IO_READ32(pAd, IdMac, &macVal);
- sprintf(msg+strlen(msg), "[0x%04x]:%08x ", IdMac , macVal);
+ snprintf(msg+strlen(msg), 4096-strlen(msg)
+ , "[0x%04x]:%08x ", IdMac, macVal);
if (!bFromUI)
DBGPRINT(RT_DEBUG_TRACE, ("MacAddr=0x%x, MacValue=0x%x\n", IdMac, macVal));
}
@@ -1775,7 +1876,7 @@ print_all:
0,0
};
- sprintf(msg, "\n");
+ snprintf(msg, 4096, "\n");
mac_idx = 0;
while (mac_range_7603[mac_idx] != 0)
{
@@ -1843,14 +1944,15 @@ if (IS_RT65XX(pAd))
0,0
};
- sprintf(msg, "\n");
+ snprintf(msg, 4096, "\n");
while (mac_range_3052[mac_idx] != 0)
{
mac_s = mac_range_3052[mac_idx];
mac_e = mac_range_3052[mac_idx + 1];
for (macAddr = mac_s; macAddr <= mac_e; macAddr += 4) {
RTMP_IO_READ32(pAd, macAddr, &macValue);
- sprintf(msg+strlen(msg), "[0x%04x]:%08x\n", macAddr, macValue);
+ snprintf(msg+strlen(msg), 4096-strlen(msg),
+ "[0x%04x]:%08x\n", macAddr, macValue);
}
mac_idx += 2;
}
@@ -1877,7 +1979,8 @@ if (IS_RT65XX(pAd))
mac_e = mac_range_2883[mac_idx + 1];
for (macAddr = mac_s; macAddr <= mac_e; macAddr += 4) {
RTMP_IO_READ32(pAd, macAddr, &macValue);
- sprintf(msg+strlen(msg), "[0x%04x]:%08x\n", macAddr, macValue);
+ snprintf(msg+strlen(msg), 4096-strlen(msg),
+ "[0x%04x]:%08x\n", macAddr, macValue);
}
mac_idx += 2;
}
@@ -1886,11 +1989,11 @@ if (IS_RT65XX(pAd))
#endif /* VXWORKS */
if(strlen(msg) == 1)
- sprintf(msg+strlen(msg), "===>Error command format!");
+ snprintf(msg+strlen(msg), 4096-strlen(msg), "===>Error command format!");
#ifdef LINUX
/* Copy the information into the user buffer */
- wrq->u.data.length = strlen(msg);
+ wrq->u.data.length = (UINT16)strlen(msg);
if (copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length))
{
DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));
@@ -2178,7 +2281,7 @@ VOID RTMPSetDesiredRates(RTMP_ADAPTER *pAd, LONG Rates)
memset(&aryRates, 0x00, sizeof(NDIS_802_11_RATES));
switch (pAd->CommonCfg.PhyMode)
{
- case (WMODE_A): /* A only*/
+ case (UINT)(WMODE_A): /* A only*/
switch (Rates)
{
case 6000000: /*6M*/
@@ -2227,9 +2330,9 @@ VOID RTMPSetDesiredRates(RTMP_ADAPTER *pAd, LONG Rates)
break;
}
break;
- case (WMODE_B | WMODE_G): /* B/G Mixed*/
- case (WMODE_B): /* B only*/
- case (WMODE_A | WMODE_B | WMODE_G): /* A/B/G Mixed*/
+ case (UINT)(WMODE_B | WMODE_G): /* B/G Mixed*/
+ case (UINT)(WMODE_B): /* B only*/
+ case (UINT)(WMODE_A | WMODE_B | WMODE_G): /* A/B/G Mixed*/
default:
switch (Rates)
{
@@ -2371,12 +2474,12 @@ NDIS_STATUS RTMPWPARemoveKeyProc(
{
/*if (MAC_ADDR_EQUAL(pAd->ApCfg.ApCliTab[ifIndex].SharedKey[i].BssId, pKey->BSSID)) */
{
- ifIndex = pObj->ioctl_if;
+ ifIndex = (UCHAR)pObj->ioctl_if;
BssIdx = pAd->ApCfg.BssidNum + MAX_MESH_NUM + ifIndex;
DBGPRINT(RT_DEBUG_TRACE,("APCLI RTMPWPARemoveKeyProc(KeyIdx=%d)\n", i));
pAd->ApCfg.ApCliTab[ifIndex].SharedKey[i].KeyLen = 0;
pAd->ApCfg.ApCliTab[ifIndex].SharedKey[i].CipherAlg = CIPHER_NONE;
- AsicRemoveSharedKeyEntry(pAd, BssIdx, (UCHAR)i);
+ AsicRemoveSharedKeyEntry(pAd, (UCHAR)BssIdx, (UCHAR)i);
Status = NDIS_STATUS_SUCCESS;
break;
}
@@ -2391,7 +2494,7 @@ NDIS_STATUS RTMPWPARemoveKeyProc(
DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveKeyProc(KeyIdx=%d)\n", i));
pAd->SharedKey[BSS0][i].KeyLen = 0;
pAd->SharedKey[BSS0][i].CipherAlg = CIPHER_NONE;
- AsicRemoveSharedKeyEntry(pAd, BSS0, (UCHAR)i);
+ AsicRemoveSharedKeyEntry(pAd, (UCHAR)BSS0, (UCHAR)i);
Status = NDIS_STATUS_SUCCESS;
break;
}
@@ -2407,7 +2510,7 @@ NDIS_STATUS RTMPWPARemoveKeyProc(
DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveKeyProc(KeyIdx=%ld)\n", KeyIdx));
pAd->SharedKey[BSS0][KeyIdx].KeyLen = 0;
pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_NONE;
- AsicRemoveSharedKeyEntry(pAd, BSS0, (UCHAR)KeyIdx);
+ AsicRemoveSharedKeyEntry(pAd, (UCHAR)BSS0, (UCHAR)KeyIdx);
Status = NDIS_STATUS_SUCCESS;
}
@@ -2538,7 +2641,7 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
NdisZeroMemory(pAd->CommonCfg.ExtRate, MAX_LEN_OF_SUPPORTED_RATES);
NdisZeroMemory(pAd->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
switch (phymode) {
- case (WMODE_B):
+ case (UINT)(WMODE_B):
pAd->CommonCfg.SupRate[0] = 0x82; /* 1 mbps, in units of 0.5 Mbps, basic rate */
pAd->CommonCfg.SupRate[1] = 0x84; /* 2 mbps, in units of 0.5 Mbps, basic rate */
pAd->CommonCfg.SupRate[2] = 0x8B; /* 5.5 mbps, in units of 0.5 Mbps, basic rate */
@@ -2558,14 +2661,14 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
Or some 11n stations will not connect to us if we do not put
supported/extended rate element in beacon.
*/
- case (WMODE_B | WMODE_G):
- case (WMODE_A | WMODE_B | WMODE_G):
+ case (UINT)(WMODE_B | WMODE_G):
+ case (UINT)(WMODE_A | WMODE_B | WMODE_G):
#ifdef DOT11_N_SUPPORT
- case (WMODE_A | WMODE_B | WMODE_G | WMODE_GN | WMODE_AN):
- case (WMODE_B | WMODE_G | WMODE_GN):
+ case (UINT)(WMODE_A | WMODE_B | WMODE_G | WMODE_GN | WMODE_AN):
+ case (UINT)(WMODE_B | WMODE_G | WMODE_GN):
#endif /* DOT11_N_SUPPORT */
#ifdef DOT11_VHT_AC
- case (WMODE_A | WMODE_B | WMODE_G | WMODE_GN | WMODE_AN | WMODE_AC):
+ case (UINT)(WMODE_A | WMODE_B | WMODE_G | WMODE_GN | WMODE_AN | WMODE_AC):
#endif /* DOT11_VHT_AC */
pAd->CommonCfg.SupRate[0] = 0x82; /* 1 mbps, in units of 0.5 Mbps, basic rate*/
pAd->CommonCfg.SupRate[1] = 0x84; /* 2 mbps, in units of 0.5 Mbps, basic rate*/
@@ -2595,19 +2698,19 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
pAd->CommonCfg.DesireRate[11] = 108; /* 54 mbps, in units of 0.5 Mbps*/
break;
- case (WMODE_A):
- case (WMODE_G):
+ case (UINT)(WMODE_A):
+ case (UINT)(WMODE_G):
#ifdef DOT11_N_SUPPORT
- case (WMODE_A | WMODE_AN):
- case (WMODE_A | WMODE_G | WMODE_GN | WMODE_AN):
- case (WMODE_G | WMODE_GN):
- case (WMODE_GN):
- case (WMODE_AN):
+ case (UINT)(WMODE_A | WMODE_AN):
+ case (UINT)(WMODE_A | WMODE_G | WMODE_GN | WMODE_AN):
+ case (UINT)(WMODE_G | WMODE_GN):
+ case (UINT)(WMODE_GN):
+ case (UINT)(WMODE_AN):
#endif /* DOT11_N_SUPPORT */
#ifdef DOT11_VHT_AC
- case (WMODE_A | WMODE_AN | WMODE_AC):
- case (WMODE_AN | WMODE_AC):
- case (WMODE_G | WMODE_GN |WMODE_A | WMODE_AN | WMODE_AC):
+ case (UINT)(WMODE_A | WMODE_AN | WMODE_AC):
+ case (UINT)(WMODE_AN | WMODE_AC):
+ case (UINT)(WMODE_G | WMODE_GN | WMODE_A | WMODE_AN | WMODE_AC):
#endif /* DOT11_VHT_AC */
pAd->CommonCfg.SupRate[0] = 0x8C; /* 6 mbps, in units of 0.5 Mbps, basic rate*/
pAd->CommonCfg.SupRate[1] = 0x12; /* 9 mbps, in units of 0.5 Mbps*/
@@ -2641,18 +2744,18 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++)
{
- MlmeUpdateTxRates(pAd, FALSE, apidx);
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)apidx);
}
#ifdef WDS_SUPPORT
for (apidx = 0; apidx < MAX_WDS_ENTRY; apidx++)
{
- MlmeUpdateTxRates(pAd, FALSE, apidx + MIN_NET_DEVICE_FOR_WDS);
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)(apidx + MIN_NET_DEVICE_FOR_WDS));
}
#endif /* WDS_SUPPORT */
#ifdef APCLI_SUPPORT
for (apidx = 0; apidx < MAX_APCLI_NUM; apidx++)
{
- MlmeUpdateTxRates(pAd, FALSE, apidx + MIN_NET_DEVICE_FOR_APCLI);
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)(apidx + MIN_NET_DEVICE_FOR_APCLI));
}
#endif /* APCLI_SUPPORT */
}
@@ -2661,8 +2764,8 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
- printk("%s: Update for STA\n", __FUNCTION__);
- MlmeUpdateTxRates(pAd, FALSE, BSS0);
+ DBGPRINT(RT_DEBUG_OFF, ("%s: Update for STA\n", __func__));
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)BSS0);
}
#endif /* CONFIG_STA_SUPPORT */
@@ -2672,12 +2775,12 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
UINT apidx;
for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++)
{
- MlmeUpdateTxRates(pAd, FALSE, apidx + MIN_NET_DEVICE_FOR_P2P_GO);
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)(apidx + MIN_NET_DEVICE_FOR_P2P_GO));
}
for (apidx = 0; apidx < MAX_APCLI_NUM; apidx++)
{
- MlmeUpdateTxRates(pAd, FALSE, apidx + MIN_NET_DEVICE_FOR_APCLI);
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)(apidx + MIN_NET_DEVICE_FOR_APCLI));
}
}
#endif /* P2P_SUPPORT */
@@ -2700,11 +2803,12 @@ VOID RTMPSetPhyMode(RTMP_ADAPTER *pAd, ULONG phymode)
pAd->cfg80211_ctrl.P2pExtRateLen = 0;
#ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE
- printk("%s: Update for AP\n", __FUNCTION__);
- MlmeUpdateTxRates(pAd, FALSE, MAIN_MBSSID + MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO);
+ DBGPRINT(RT_DEBUG_OFF, ("%s: Update for AP\n", __func__));
+ MlmeUpdateTxRates(pAd, FALSE
+ , (UCHAR)(MAIN_MBSSID + MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO));
- printk("%s: Update for APCLI\n", __FUNCTION__);
- MlmeUpdateTxRates(pAd, FALSE, MAIN_MBSSID + MIN_NET_DEVICE_FOR_APCLI);
+ DBGPRINT(RT_DEBUG_OFF, ("%s: Update for APCLI\n", __func__));
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)(MAIN_MBSSID + MIN_NET_DEVICE_FOR_APCLI));
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE */
#endif /* RT_CFG80211_P2P_SUPPORT */
@@ -2864,7 +2968,7 @@ VOID RTMPAddWcidAttributeEntry(
}
#endif /* RTMP_MAC */
- offset = wcid_attr_base + (Wcid * wcid_attr_size);
+ offset = (USHORT)(wcid_attr_base + (Wcid * wcid_attr_size));
#ifdef CONFIG_AP_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_AP(pAd)
{
@@ -2925,7 +3029,7 @@ VOID RTMPAddWcidAttributeEntry(
}
#endif /* RTMP_MAC */
- offset = iveiv_tb_base + (Wcid * iveiv_tb_size);
+ offset = (USHORT)(iveiv_tb_base + (Wcid * iveiv_tb_size));
/* WPA mode*/
if ((CipherAlg == CIPHER_TKIP) || (CipherAlg == CIPHER_AES))
@@ -2976,10 +3080,10 @@ RTMP_STRING *GetEncryptType(CHAR enc)
return "TKIP";
if(enc == Ndis802_11AESEnable)
return "AES";
- if(enc == Ndis802_11TKIPAESMix)
+ if(enc == Ndis802_11TKIPAESMix)
return "TKIPAES";
#ifdef WAPI_SUPPORT
- if(enc == Ndis802_11EncryptionSMS4Enabled)
+ if(enc == Ndis802_11EncryptionSMS4Enabled)
return "SMS4";
#endif /* WAPI_SUPPORT */
else
@@ -2992,7 +3096,7 @@ RTMP_STRING *GetAuthMode(CHAR auth)
return "OPEN";
if(auth == Ndis802_11AuthModeShared)
return "SHARED";
- if(auth == Ndis802_11AuthModeAutoSwitch)
+ if(auth == Ndis802_11AuthModeAutoSwitch)
return "AUTOWEP";
if(auth == Ndis802_11AuthModeWPA)
return "WPA";
@@ -3004,14 +3108,14 @@ RTMP_STRING *GetAuthMode(CHAR auth)
return "WPA2";
if(auth == Ndis802_11AuthModeWPA2PSK)
return "WPA2PSK";
- if(auth == Ndis802_11AuthModeWPA1WPA2)
+ if(auth == Ndis802_11AuthModeWPA1WPA2)
return "WPA1WPA2";
- if(auth == Ndis802_11AuthModeWPA1PSKWPA2PSK)
+ if(auth == Ndis802_11AuthModeWPA1PSKWPA2PSK)
return "WPA1PSKWPA2PSK";
#ifdef WAPI_SUPPORT
- if(auth == Ndis802_11AuthModeWAICERT)
+ if(auth == Ndis802_11AuthModeWAICERT)
return "WAI-CERT";
- if(auth == Ndis802_11AuthModeWAIPSK)
+ if(auth == Ndis802_11AuthModeWAIPSK)
return "WAI-PSK";
#endif /* WAPI_SUPPORT */
@@ -3120,13 +3224,19 @@ VOID RTMPCommSiteSurveyData(
NDIS_802_11_AUTHENTICATION_MODE ap_auth_mode = Ndis802_11AuthModeOpen;
/*Channel*/
- sprintf(msg+strlen(msg),"%-4d", pBss->Channel);
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-4d", pBss->Channel);
#ifdef DPA_T
/* SSID Length */
- sprintf(msg+strlen(msg),"%-4d", pBss->SsidLen);
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-4d", pBss->SsidLen);
#endif /* DPA_T */
+ if (pBss->SsidLen > MAX_LEN_OF_SSID) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s: Invalid SsidLen (%d)\n"
+ , __func__, pBss->SsidLen));
+ return;
+ }
+
/*SSID*/
NdisZeroMemory(Ssid, (MAX_LEN_OF_SSID +1));
if (RTMPCheckStrPrintAble((PCHAR)pBss->Ssid, pBss->SsidLen))
@@ -3134,14 +3244,15 @@ VOID RTMPCommSiteSurveyData(
else
{
INT idx = 0;
- sprintf(Ssid, "0x");
+ snprintf(Ssid, sizeof(Ssid), "0x");
for (idx = 0; (idx < 14) && (idx < pBss->SsidLen); idx++)
- sprintf(Ssid + 2 + (idx*2), "%02X", (UCHAR)pBss->Ssid[idx]);
+ snprintf(Ssid + 2 + (idx*2), sizeof(Ssid)-2-(idx*2)
+ , "%02X", (UCHAR)pBss->Ssid[idx]);
}
- sprintf(msg+strlen(msg),"%-33s", Ssid);
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-33s", Ssid);
/*BSSID*/
- sprintf(msg+strlen(msg),"%02x:%02x:%02x:%02x:%02x:%02x ",
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%02x:%02x:%02x:%02x:%02x:%02x ",
pBss->Bssid[0],
pBss->Bssid[1],
pBss->Bssid[2],
@@ -3159,7 +3270,8 @@ VOID RTMPCommSiteSurveyData(
ap_auth_mode = pBss->AuthMode;
ap_cipher = pBss->WPA.PairCipher;
#ifdef DPA_T
- sprintf(SecurityStr, "%s-%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
+ snprintf(SecurityStr, sizeof(SecurityStr), "%s-%s"
+ , GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
#endif /* DPA_T */
}
else if (pBss->AuthModeAux == Ndis802_11AuthModeOpen)
@@ -3182,14 +3294,15 @@ VOID RTMPCommSiteSurveyData(
ap_cipher = Ndis802_11TKIPAESMix;
}
#ifdef DPA_T
- sprintf(SecurityStr, "%s-%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
+ snprintf(SecurityStr, sizeof(SecurityStr), "%s-%s"
+ , GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
#endif /* DPA_T */
}
#ifdef DPA_T
else
{
GetMixedCipherStr(pBss, pBss->AuthMode, &SecurityStr[0]);
- sprintf(SecurityStr, "%s/", SecurityStr);
+ snprintf(SecurityStr, sizeof(SecurityStr), "%s/", SecurityStr);
GetMixedCipherStr(pBss, pBss->AuthModeAux, &SecurityStr[0]);
}
#else /* DPA_T */
@@ -3240,7 +3353,9 @@ VOID RTMPCommSiteSurveyData(
ap_cipher = pBss->WPA.PairCipher;
}
- sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
+ snprintf(SecurityStr, sizeof(SecurityStr), "%s/%s"
+ , GetAuthMode((CHAR)ap_auth_mode)
+ , GetEncryptType((CHAR)ap_cipher));
#endif /* !DPA_T */
}
else
@@ -3248,17 +3363,19 @@ VOID RTMPCommSiteSurveyData(
ap_auth_mode = pBss->AuthMode;
ap_cipher = pBss->WepStatus;
if (ap_cipher == Ndis802_11WEPDisabled)
- sprintf(SecurityStr, "NONE");
+ snprintf(SecurityStr, sizeof(SecurityStr), "NONE");
else if (ap_cipher == Ndis802_11WEPEnabled)
- sprintf(SecurityStr, "WEP");
+ snprintf(SecurityStr, sizeof(SecurityStr), "WEP");
else
- sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));
+ snprintf(SecurityStr, sizeof(SecurityStr), "%s/%s"
+ , GetAuthMode((CHAR)ap_auth_mode)
+ , GetEncryptType((CHAR)ap_cipher));
}
#ifdef DPA_T
- sprintf(msg+strlen(msg), "%-33s", SecurityStr);
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-33s", SecurityStr);
#else /* DPA_T */
- sprintf(msg+strlen(msg), "%-23s", SecurityStr);
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-23s", SecurityStr);
#endif /* !DPA_T */
/* Rssi*/
@@ -3271,46 +3388,46 @@ VOID RTMPCommSiteSurveyData(
Rssi_Quality = (UINT)(((Rssi + 90) * 26)/10);
else /* < -84 dbm*/
Rssi_Quality = 0;
- sprintf(msg+strlen(msg),"%-9d", Rssi_Quality);
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-9d", Rssi_Quality);
/* Wireless Mode*/
wireless_mode = NetworkTypeInUseSanity(pBss);
if (wireless_mode == Ndis802_11FH ||
wireless_mode == Ndis802_11DS)
- sprintf(msg+strlen(msg),"%-7s", "11b");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", "11b");
else if (wireless_mode == Ndis802_11OFDM5)
- sprintf(msg+strlen(msg),"%-7s", "11a");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", "11a");
else if (wireless_mode == Ndis802_11OFDM5_N)
- sprintf(msg+strlen(msg),"%-7s", "11a/n");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", "11a/n");
else if (wireless_mode == Ndis802_11OFDM24)
- sprintf(msg+strlen(msg),"%-7s", "11b/g");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", "11b/g");
else if (wireless_mode == Ndis802_11OFDM24_N)
- sprintf(msg+strlen(msg),"%-7s", "11b/g/n");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", "11b/g/n");
else
- sprintf(msg+strlen(msg),"%-7s", "unknow");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", "unknown");
/* Ext Channel*/
if (pBss->AddHtInfoLen > 0)
{
if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE)
- sprintf(msg+strlen(msg),"%-7s", " ABOVE");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", " ABOVE");
else if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW)
- sprintf(msg+strlen(msg),"%-7s", " BELOW");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", " BELOW");
else
- sprintf(msg+strlen(msg),"%-7s", " NONE");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", " NONE");
}
else
{
- sprintf(msg+strlen(msg),"%-7s", " NONE");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-7s", " NONE");
}
/*Network Type */
if (pBss->BssType == BSS_ADHOC)
- sprintf(msg+strlen(msg),"%-3s", " Ad");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-3s", " Ad");
else
- sprintf(msg+strlen(msg),"%-3s", " In");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "%-3s", " In");
- sprintf(msg+strlen(msg),"\n");
+ snprintf(msg+strlen(msg), MsgLen-strlen(msg), "\n");
return;
}
@@ -3395,6 +3512,11 @@ VOID RTMPIoctlGetSiteSurvey(
if((strlen(msg)+100 ) >= BufLen)
break;
+ if (pBss->SsidLen > MAX_LEN_OF_SSID) {
+ DBGPRINT(RT_DEBUG_WARN,
+ ("%s - Invalid SsidLen %d\n", __func__, pBss->SsidLen));
+ break;
+ }
RTMPCommSiteSurveyData(msg, pBss, TotalLen);
@@ -3434,7 +3556,7 @@ VOID RTMPIoctlGetSiteSurvey(
#ifdef CONFIG_STA_SUPPORT
pAdapter->StaCfg.bSkipAutoScanConn = FALSE;
#endif /* CONFIG_STA_SUPPORT */
- wrq->u.data.length = strlen(msg);
+ wrq->u.data.length = (UINT16)strlen(msg);
Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
DBGPRINT(RT_DEBUG_TRACE, ("RTMPIoctlGetSiteSurvey - wrq->u.data.length = %d\n", wrq->u.data.length));
@@ -3534,6 +3656,7 @@ VOID RTMPIoctlGetMacTable(
STA_TR_ENTRY *tr_entry;
#endif /* DPA_S */
char *msg;
+ int msg_buf_len;
#ifdef DPA_S //yiwei
UCHAR index;
BOOLEAN bFound;
@@ -3629,16 +3752,18 @@ VOID RTMPIoctlGetMacTable(
DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));
}
- os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*(MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN));
+ msg_buf_len = MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN;
+ os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*msg_buf_len);
if (msg == NULL)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __FUNCTION__));
goto LabelOK;
}
- memset(msg, 0 ,MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN );
- sprintf(msg,"%s","\n");
- sprintf(msg+strlen(msg),"%-14s%-4s%-4s%-4s%-4s%-6s%-6s%-10s%-10s%-10s\n",
- "MAC", "AP", "AID", "PSM", "AUTH", "CTxR", "LTxR","LDT", "RxB", "TxB");
+ memset(msg, 0, msg_buf_len);
+ snprintf(msg, msg_buf_len, "%s", "\n");
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "%-14s%-4s%-4s%-4s%-4s%-6s%-6s%-10s%-10s%-10s\n"
+ , "MAC", "AP", "AID", "PSM", "AUTH", "CTxR", "LTxR", "LDT", "RxB", "TxB");
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
@@ -3654,16 +3779,26 @@ VOID RTMPIoctlGetMacTable(
{
if((strlen(msg)+MAC_LINE_LEN ) >= (MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN) )
break;
- sprintf(msg+strlen(msg),"%02x%02x%02x%02x%02x%02x ", PRINT_MAC(pEntry->Addr));
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->func_tb_idx);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->Aid);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->PsMode);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->AuthState);
- sprintf(msg+strlen(msg),"%-6d",RateIdToMbps[pAd->MacTab.Content[i].CurrTxRate]);
- sprintf(msg+strlen(msg),"%-6d",0/*RateIdToMbps[pAd->MacTab.Content[i].HTPhyMode.word]*/); /* ToDo*/
- sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.LastDataPacketTime*/); /* ToDo*/
- sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.TotalRxByteCount*/); /* ToDo*/
- sprintf(msg+strlen(msg),"%-10d\n",0/*pAd->MacTab.Content[i].HSCounter.TotalTxByteCount*/); /* ToDo*/
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "%02x%02x%02x%02x%02x%02x ", PRINT_MAC(pEntry->Addr));
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->func_tb_idx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->Aid);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->PsMode);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->AuthState);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-6d"
+ , RateIdToMbps[pAd->MacTab.Content[i].CurrTxRate]);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-6d"
+ , 0/*RateIdToMbps[pAd->MacTab.Content[i].HTPhyMode.word]*/);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-10d"
+ , 0/*pAd->MacTab.Content[i].HSCounter.LastDataPacketTime*/);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-10d"
+ , 0/*pAd->MacTab.Content[i].HSCounter.TotalRxByteCount*/);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-10d\n"
+ , 0/*pAd->MacTab.Content[i].HSCounter.TotalTxByteCount*/);
}
}
@@ -3690,17 +3825,20 @@ VOID RTMPAR9IoctlGetMacTable(
{
INT i;
char *msg;
+ int msg_buf_len;
- os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*(MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN));
+ msg_buf_len = MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN;
+ os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*msg_buf_len);
if (msg == NULL)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __FUNCTION__));
return;
}
- memset(msg, 0 ,MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN );
- sprintf(msg,"%s","\n");
- sprintf(msg+strlen(msg),"%-14s%-4s%-4s%-4s%-4s%-6s%-6s%-10s%-10s%-10s\n",
- "MAC", "AP", "AID", "PSM", "AUTH", "CTxR", "LTxR","LDT", "RxB", "TxB");
+ memset(msg, 0, msg_buf_len);
+ snprintf(msg, msg_buf_len, "%s", "\n");
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "%-14s%-4s%-4s%-4s%-4s%-6s%-6s%-10s%-10s%-10s\n"
+ , "MAC", "AP", "AID", "PSM", "AUTH", "CTxR", "LTxR", "LDT", "RxB", "TxB");
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
@@ -3709,18 +3847,28 @@ VOID RTMPAR9IoctlGetMacTable(
{
if((strlen(msg)+MAC_LINE_LEN ) >= (MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN) )
break;
- sprintf(msg+strlen(msg),"%02x%02x%02x%02x%02x%02x ",
- pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
- pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->func_tb_idx);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->Aid);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->PsMode);
- sprintf(msg+strlen(msg),"%-4d", (int)pEntry->AuthState);
- sprintf(msg+strlen(msg),"%-6d",RateIdToMbps[pAd->MacTab.Content[i].CurrTxRate]);
- sprintf(msg+strlen(msg),"%-6d",0/*RateIdToMbps[pAd->MacTab.Content[i].HTPhyMode.word]*/); /* ToDo*/
- sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.LastDataPacketTime*/); /* ToDo*/
- sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.TotalRxByteCount*/); /* ToDo*/
- sprintf(msg+strlen(msg),"%-10d\n",0/*pAd->MacTab.Content[i].HSCounter.TotalTxByteCount*/); /* ToDo*/
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "%02x%02x%02x%02x%02x%02x "
+ , pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2]
+ , pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->func_tb_idx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->Aid);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->PsMode);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-4d"
+ , (int)pEntry->AuthState);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-6d"
+ , RateIdToMbps[pAd->MacTab.Content[i].CurrTxRate]);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-6d"
+ , 0/*RateIdToMbps[pAd->MacTab.Content[i].HTPhyMode.word]*/);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-10d"
+ , 0/*pAd->MacTab.Content[i].HSCounter.LastDataPacketTime*/);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-10d"
+ , 0/*pAd->MacTab.Content[i].HSCounter.TotalRxByteCount*/);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg), "%-10d\n"
+ , 0/*pAd->MacTab.Content[i].HSCounter.TotalTxByteCount*/);
}
}
@@ -3739,37 +3887,54 @@ VOID RTMPIoctlGetSTAT2(
IN RTMP_IOCTL_INPUT_STRUCT *wrq)
{
char *msg;
+ int msg_buf_len;
BSS_STRUCT *pMbss;
INT apidx;
- os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*(pAd->ApCfg.BssidNum*(14*128)));
+ msg_buf_len = pAd->ApCfg.BssidNum*(14*128);
+ os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*msg_buf_len);
if (msg == NULL)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __FUNCTION__));
return;
}
- memset(msg, 0 ,pAd->ApCfg.BssidNum*(14*128));
- sprintf(msg,"%s","\n");
+ memset(msg, 0, msg_buf_len);
+ snprintf(msg, msg_buf_len, "%s", "\n");
for (apidx=0; apidx<pAd->ApCfg.BssidNum; apidx++)
{
pMbss=&pAd->ApCfg.MBSSID[apidx];
- sprintf(msg+strlen(msg),"ra%d\n",apidx);
- sprintf(msg+strlen(msg),"bytesTx = %ld\n",(pMbss->TransmittedByteCount));
- sprintf(msg+strlen(msg),"bytesRx = %ld\n",(pMbss->ReceivedByteCount));
- sprintf(msg+strlen(msg),"pktsTx = %ld\n",pMbss->TxCount);
- sprintf(msg+strlen(msg),"pktsRx = %ld\n",pMbss->RxCount);
- sprintf(msg+strlen(msg),"errorsTx = %ld\n",pMbss->TxErrorCount);
- sprintf(msg+strlen(msg),"errorsRx = %ld\n",pMbss->RxErrorCount);
- sprintf(msg+strlen(msg),"discardPktsTx = %ld\n",pMbss->TxDropCount);
- sprintf(msg+strlen(msg),"discardPktsRx = %ld\n",pMbss->RxDropCount);
- sprintf(msg+strlen(msg),"ucPktsTx = %ld\n",pMbss->ucPktsTx);
- sprintf(msg+strlen(msg),"ucPktsRx = %ld\n",pMbss->ucPktsRx);
- sprintf(msg+strlen(msg),"mcPktsTx = %ld\n",pMbss->mcPktsTx);
- sprintf(msg+strlen(msg),"mcPktsRx = %ld\n",pMbss->mcPktsRx);
- sprintf(msg+strlen(msg),"bcPktsTx = %ld\n",pMbss->bcPktsTx);
- sprintf(msg+strlen(msg),"bcPktsRx = %ld\n",pMbss->bcPktsRx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "ra%d\n", apidx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "bytesTx = %ld\n", (pMbss->TransmittedByteCount));
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "bytesRx = %ld\n", (pMbss->ReceivedByteCount));
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "pktsTx = %ld\n", pMbss->TxCount);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "pktsRx = %ld\n", pMbss->RxCount);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "errorsTx = %ld\n", pMbss->TxErrorCount);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "errorsRx = %ld\n", pMbss->RxErrorCount);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "discardPktsTx = %ld\n", pMbss->TxDropCount);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "discardPktsRx = %ld\n", pMbss->RxDropCount);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "ucPktsTx = %ld\n", pMbss->ucPktsTx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "ucPktsRx = %ld\n", pMbss->ucPktsRx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "mcPktsTx = %ld\n", pMbss->mcPktsTx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "mcPktsRx = %ld\n", pMbss->mcPktsRx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "bcPktsTx = %ld\n", pMbss->bcPktsTx);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "bcPktsRx = %ld\n", pMbss->bcPktsRx);
}
@@ -3788,18 +3953,20 @@ VOID RTMPIoctlGetRadioDynInfo(
IN RTMP_IOCTL_INPUT_STRUCT *wrq)
{
char *msg;
+ int msg_buf_len;
BSS_STRUCT *pMbss;
INT status,bandwidth,ShortGI;
struct wifi_dev *wdev;
-
- os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*(4096));
+
+ msg_buf_len = 4069;
+ os_alloc_mem(NULL, (UCHAR **)&msg, sizeof(CHAR)*(msg_buf_len));
if (msg == NULL)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __FUNCTION__));
return;
}
- memset(msg, 0 ,4096);
- sprintf(msg,"%s","\n");
+ memset(msg, 0, msg_buf_len);
+ snprintf(msg, msg_buf_len, "%s", "\n");
pMbss=&pAd->ApCfg.MBSSID[0];
@@ -3820,12 +3987,18 @@ VOID RTMPIoctlGetRadioDynInfo(
ShortGI = 0;
- sprintf(msg+strlen(msg),"status = %d\n",status);
- sprintf(msg+strlen(msg),"channelsInUse = %d\n",pAd->ChannelListNum);
- sprintf(msg+strlen(msg),"channel = %d\n",pAd->CommonCfg.Channel);
- sprintf(msg+strlen(msg),"chanWidth = %d\n",bandwidth);
- sprintf(msg+strlen(msg),"guardIntvl = %d\n",ShortGI);
- sprintf(msg+strlen(msg),"MCS = %d\n",wdev->DesiredTransmitSetting.field.MCS);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "status = %d\n", status);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "channelsInUse = %d\n", pAd->ChannelListNum);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "channel = %d\n", pAd->CommonCfg.Channel);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "chanWidth = %d\n", bandwidth);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "guardIntvl = %d\n", ShortGI);
+ snprintf(msg+strlen(msg), msg_buf_len-strlen(msg)
+ , "MCS = %d\n", wdev->DesiredTransmitSetting.field.MCS);
wrq->u.data.length = strlen(msg);
@@ -3923,8 +4096,9 @@ INT Set_BAOriTearDown_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UCHAR mac[6], tid;
RTMP_STRING *token;
RTMP_STRING sepValue[] = ":", DASH = '-';
- INT i;
- MAC_TABLE_ENTRY *pEntry;
+ INT i, ret;
+ MAC_TABLE_ENTRY *pEntry;
+ LONG ret_value;
/*DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));*/
/*
@@ -3938,7 +4112,9 @@ INT Set_BAOriTearDown_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
token = strchr(arg, DASH);
if ((token != NULL) && (strlen(token)>1))
{
- tid = simple_strtol((token+1), 0, 10);
+ ret = kstrtol((token+1), 10, &ret_value);
+ tid = (UCHAR)ret_value;
+
/* tid will be 0 ~ 7; Or kernel will crash in BAOriSessionTearDown() */
if (tid > (NUM_OF_TID-1))
return FALSE;
@@ -3975,8 +4151,9 @@ INT Set_BARecTearDown_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UCHAR mac[6], tid;
RTMP_STRING *token;
RTMP_STRING sepValue[] = ":", DASH = '-';
- INT i;
- MAC_TABLE_ENTRY *pEntry;
+ INT i, ret;
+ MAC_TABLE_ENTRY *pEntry;
+ LONG ret_value;
/*DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));*/
/*
@@ -3990,7 +4167,8 @@ INT Set_BARecTearDown_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
token = strchr(arg, DASH);
if ((token != NULL) && (strlen(token)>1))
{
- tid = simple_strtol((token+1), 0, 10);
+ ret = kstrtol((token+1), 10, &ret_value);
+ tid = (UCHAR)ret_value;
/* tid will be 0 ~ 7; Or kernel will crash in BARecSessionTearDown() */
if (tid > (NUM_OF_TID-1))
return FALSE;
@@ -4057,6 +4235,8 @@ INT Set_HtMcs_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UCHAR ss = 0, mcs = 0;
#endif /* DOT11_VHT_AC */
struct wifi_dev *wdev;
+ INT ret;
+ LONG ret_value;
#ifdef DOT11_VHT_AC
ss_str = arg;
@@ -4069,8 +4249,11 @@ INT Set_HtMcs_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
__FUNCTION__, ss_str, mcs_str));
if (strlen(ss_str) && strlen(mcs_str)) {
- mcs = simple_strtol(mcs_str, 0, 10);
- ss = simple_strtol(ss_str, 0, 10);
+ ret = kstrtol(mcs_str, 10, &ret_value);
+ mcs = (UCHAR)ret_value;
+
+ ret = kstrtol(ss_str, 10, &ret_value);
+ ss = (UCHAR)ret_value;
if ((ss <= pAd->CommonCfg.TxStream) && (mcs <= 7))
HtMcs = ((ss - 1) <<4) | mcs;
@@ -4092,7 +4275,8 @@ INT Set_HtMcs_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
ValidMcs = 23;
#endif /* DOT11N_SS3_SUPPORT */
- Mcs_tmp = simple_strtol(arg, 0, 10);
+ ret = kstrtol(arg, 10, &ret_value);
+ Mcs_tmp = (UCHAR)ret_value;
if (Mcs_tmp <= ValidMcs || Mcs_tmp == 32)
HtMcs = Mcs_tmp;
else
@@ -4219,8 +4403,11 @@ INT Set_HtGi_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT Set_HtTxBASize_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
UCHAR Size;
+ INT ret;
+ LONG ret_value;
- Size = simple_strtol(arg, 0, 10);
+ ret = kstrtol(arg, 10, &ret_value);
+ Size = (UCHAR)ret_value;
if (Size <=0 || Size >=64)
{
@@ -4480,8 +4667,9 @@ INT Set_SendSMPSAction_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UCHAR mac[6], mode;
RTMP_STRING *token;
RTMP_STRING sepValue[] = ":", DASH = '-';
- INT i;
+ INT i, ret;
MAC_TABLE_ENTRY *pEntry;
+ LONG ret_value;
/*DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));*/
/*
@@ -4495,7 +4683,9 @@ INT Set_SendSMPSAction_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
token = strchr(arg, DASH);
if ((token != NULL) && (strlen(token)>1))
{
- mode = simple_strtol((token+1), 0, 10);
+ ret = kstrtol((token+1), 10, &ret_value);
+ mode = (UCHAR)ret_value;
+
if (mode > MMPS_DISABLE)
return FALSE;
@@ -4561,9 +4751,9 @@ INT Set_HtTxStream_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
Value = simple_strtol(arg, 0, 10);
if ((Value <= 3) && (Value >= 1) && (Value <= pAd->Antenna.field.TxPath)) /* 3*3*/
- pAd->CommonCfg.TxStream = Value;
+ pAd->CommonCfg.TxStream = (UCHAR)Value;
else
- pAd->CommonCfg.TxStream = pAd->Antenna.field.TxPath;
+ pAd->CommonCfg.TxStream = (UCHAR)pAd->Antenna.field.TxPath;
if ((pAd->MACVersion < RALINK_2883_VERSION) &&
(pAd->CommonCfg.TxStream > 2))
@@ -4596,9 +4786,9 @@ INT Set_HtRxStream_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
Value = simple_strtol(arg, 0, 10);
if ((Value <= 3) && (Value >= 1) && (Value <= pAd->Antenna.field.RxPath))
- pAd->CommonCfg.RxStream = Value;
+ pAd->CommonCfg.RxStream = (UCHAR)Value;
else
- pAd->CommonCfg.RxStream = pAd->Antenna.field.RxPath;
+ pAd->CommonCfg.RxStream = (UCHAR)pAd->Antenna.field.RxPath;
if ((pAd->MACVersion < RALINK_2883_VERSION) &&
(pAd->CommonCfg.RxStream > 2)) /* 3*3*/
@@ -4955,7 +5145,7 @@ INT Set_FixedTxMode_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
#endif /* CONFIG_STA_SUPPORT */
if (wdev)
- wdev->DesiredTransmitSetting.field.FixedTxMode = fix_tx_mode;
+ wdev->DesiredTransmitSetting.field.FixedTxMode = (USHORT)fix_tx_mode;
DBGPRINT(RT_DEBUG_TRACE, ("%s():(FixedTxMode=%d)\n",
__FUNCTION__, fix_tx_mode));
@@ -5606,7 +5796,7 @@ INT Show_TxBulk_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
int i;
HT_TX_CONTEXT *pHTTXContext;
TX_CONTEXT *pMLMEContext, *pPsPollContext, *pNULLContext;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
UINT32 value;
DBGPRINT(RT_DEBUG_OFF, ("\nTx Data Ring Info:\n"));
@@ -5750,41 +5940,41 @@ INT Show_WirelessMode_Proc(
switch(pAd->CommonCfg.PhyMode)
{
- case (WMODE_B | WMODE_G):
+ case (UCHAR)(WMODE_B | WMODE_G):
snprintf(pBuf, BufLen, "\t11B/G");
break;
- case (WMODE_B):
+ case (UCHAR)(WMODE_B):
snprintf(pBuf, BufLen, "\t11B");
break;
- case (WMODE_A):
+ case (UCHAR)(WMODE_A):
snprintf(pBuf, BufLen, "\t11A");
break;
- case (WMODE_A | WMODE_B | WMODE_G):
+ case (UCHAR)(WMODE_A | WMODE_B | WMODE_G):
snprintf(pBuf, BufLen, "\t11A/B/G");
break;
- case (WMODE_G):
+ case (UCHAR)(WMODE_G):
snprintf(pBuf, BufLen, "\t11G");
break;
#ifdef DOT11_N_SUPPORT
- case (WMODE_A | WMODE_B | WMODE_G | WMODE_GN | WMODE_AN):
+ case (UCHAR)(WMODE_A | WMODE_B | WMODE_G | WMODE_GN | WMODE_AN):
snprintf(pBuf, BufLen, "\t11A/B/G/N");
break;
- case (WMODE_GN):
+ case (UCHAR)(WMODE_GN):
snprintf(pBuf, BufLen, "\t11N only with 2.4G");
break;
- case (WMODE_G | WMODE_GN):
+ case (UCHAR)(WMODE_G | WMODE_GN):
snprintf(pBuf, BufLen, "\t11G/N");
break;
- case (WMODE_A | WMODE_AN):
+ case (UCHAR)(WMODE_A | WMODE_AN):
snprintf(pBuf, BufLen, "\t11A/N");
break;
- case (WMODE_B | WMODE_G | WMODE_GN):
+ case (UCHAR)(WMODE_B | WMODE_G | WMODE_GN):
snprintf(pBuf, BufLen, "\t11B/G/N");
break;
- case (WMODE_A | WMODE_G | WMODE_GN | WMODE_AN):
+ case (UCHAR)(WMODE_A | WMODE_G | WMODE_GN | WMODE_AN):
snprintf(pBuf, BufLen, "\t11A/G/N");
break;
- case (WMODE_AN):
+ case (UCHAR)(WMODE_AN):
snprintf(pBuf, BufLen, "\t11N only with 5G");
break;
#endif /* DOT11_N_SUPPORT */
@@ -6124,7 +6314,7 @@ INT Show_NetworkType_Proc(
snprintf(pBuf, BufLen, "\tMonitor");
break;
default:
- sprintf(pBuf, "\tUnknow Value(%d)", pAd->StaCfg.BssType);
+ snprintf(pBuf, BufLen, "\tUnknow Value(%d)", pAd->StaCfg.BssType);
break;
}
return 0;
@@ -6268,7 +6458,7 @@ INT Show_EncrypType_Proc(
WepStatus = wdev->WepStatus;
if ((WepStatus >= Ndis802_11WEPEnabled) &&
(WepStatus <= Ndis802_11Encryption4KeyAbsent))
- snprintf(pBuf, BufLen, "\t%s", RTMPGetRalinkEncryModeStr(WepStatus));
+ snprintf(pBuf, BufLen, "\t%s", RTMPGetRalinkEncryModeStr((USHORT)WepStatus));
#ifdef WAPI_SUPPORT
else if (WepStatus == Ndis802_11EncryptionSMS4Enabled)
snprintf(pBuf, BufLen, "\t%s", "WPI_SMS4");
@@ -6322,20 +6512,25 @@ INT Show_WepKey_Proc(
#endif /* CONFIG_AP_SUPPORT */
KeyLength = pAd->SharedKey[index][KeyIdx].KeyLen;
+ if (KeyLength > sizeof(Key)) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s: Invalid KeyLength (%d)\n"
+ , __func__, KeyLength));
+ return 0;
+ }
NdisMoveMemory(Key, pAd->SharedKey[index][KeyIdx].Key, KeyLength);
/*check key string is ASCII or not*/
- if (RTMPCheckStrPrintAble((PCHAR)Key, KeyLength))
- sprintf(pBuf, "\t%s", Key);
+ if (RTMPCheckStrPrintAble((PCHAR)Key, KeyLength))
+ snprintf(pBuf, BufLen, "\t%s", Key);
else
{
len = strlen(pBuf);
ucMaxKeySize = sizeof(Key)/sizeof(Key[0]);
- sprintf(pBuf, "\t");
+ snprintf(pBuf, BufLen, "\t");
for (idx = 0; idx < KeyLength; idx++)
{
- if(idx < ucMaxKeySize)
- len += sprintf(pBuf+len, "%02X", Key[idx]);
+ if (idx < ucMaxKeySize)
+ len += snprintf(pBuf+len, BufLen-len, "%02X", Key[idx]);
}
}
return 0;
@@ -6397,9 +6592,9 @@ INT Show_PMK_Proc(
NdisMoveMemory(PMK, pAd->StaCfg.PMK, 32);
#endif /* CONFIG_STA_SUPPORT */
- sprintf(pBuf, "\tPMK = ");
- for (idx = 0; idx < 32; idx++)
- sprintf(pBuf+strlen(pBuf), "%02X", PMK[idx]);
+ snprintf(pBuf, BufLen, "\tPMK = ");
+ for (idx = 0; idx < 32; idx++)
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "%02X", PMK[idx]);
return 0;
}
@@ -6410,39 +6605,55 @@ INT Show_STA_RAInfo_Proc(
OUT RTMP_STRING *pBuf,
IN ULONG BufLen)
{
- sprintf(pBuf, "\n");
+ snprintf(pBuf, BufLen, "\n");
#ifdef PRE_ANT_SWITCH
- sprintf(pBuf+strlen(pBuf), "PreAntSwitch: %d\n", pAd->CommonCfg.PreAntSwitch);
- sprintf(pBuf+strlen(pBuf), "PreAntSwitchRSSI: %d\n", pAd->CommonCfg.PreAntSwitchRSSI);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "PreAntSwitch: %d\n"
+ , pAd->CommonCfg.PreAntSwitch);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "PreAntSwitchRSSI: %d\n"
+ , pAd->CommonCfg.PreAntSwitchRSSI);
#endif /* PRE_ANT_SWITCH */
#if defined (RT2883) || defined (RT3883)
- sprintf(pBuf+strlen(pBuf), "FixedRate: %d\n", pAd->CommonCfg.FixedRate);
+ snprintf(pBuf+strlen(pBuf), "FixedRate: %d\n", pAd->CommonCfg.FixedRate);
#endif // defined (RT2883) || defined (RT3883) //
#ifdef NEW_RATE_ADAPT_SUPPORT
- sprintf(pBuf+strlen(pBuf), "LowTrafficThrd: %d\n", pAd->CommonCfg.lowTrafficThrd);
- sprintf(pBuf+strlen(pBuf), "TrainUpRule: %d\n", pAd->CommonCfg.TrainUpRule);
- sprintf(pBuf+strlen(pBuf), "TrainUpRuleRSSI: %d\n", pAd->CommonCfg.TrainUpRuleRSSI);
- sprintf(pBuf+strlen(pBuf), "TrainUpLowThrd: %d\n", pAd->CommonCfg.TrainUpLowThrd);
- sprintf(pBuf+strlen(pBuf), "TrainUpHighThrd: %d\n", pAd->CommonCfg.TrainUpHighThrd);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "LowTrafficThrd: %d\n"
+ , pAd->CommonCfg.lowTrafficThrd);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "TrainUpRule: %d\n"
+ , pAd->CommonCfg.TrainUpRule);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "TrainUpRuleRSSI: %d\n"
+ , pAd->CommonCfg.TrainUpRuleRSSI);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "TrainUpLowThrd: %d\n"
+ , pAd->CommonCfg.TrainUpLowThrd);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "TrainUpHighThrd: %d\n"
+ , pAd->CommonCfg.TrainUpHighThrd);
#endif // NEW_RATE_ADAPT_SUPPORT //
#ifdef STREAM_MODE_SUPPORT
- sprintf(pBuf+strlen(pBuf), "StreamMode: %d\n", pAd->CommonCfg.StreamMode);
- sprintf(pBuf+strlen(pBuf), "StreamModeMCS: 0x%04x\n", pAd->CommonCfg.StreamModeMCS);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "StreamMode: %d\n"
+ , pAd->CommonCfg.StreamMode);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "StreamModeMCS: 0x%04x\n"
+ , pAd->CommonCfg.StreamModeMCS);
#endif // STREAM_MODE_SUPPORT //
#ifdef TXBF_SUPPORT
- sprintf(pBuf+strlen(pBuf), "ITxBfEn: %d\n", pAd->CommonCfg.RegTransmitSetting.field.ITxBfEn);
- sprintf(pBuf+strlen(pBuf), "ITxBfTimeout: %ld\n", pAd->CommonCfg.ITxBfTimeout);
- sprintf(pBuf+strlen(pBuf), "ETxBfTimeout: %ld\n", pAd->CommonCfg.ETxBfTimeout);
- sprintf(pBuf+strlen(pBuf), "ETxBfEnCond: %ld\n", pAd->CommonCfg.ETxBfEnCond);
- sprintf(pBuf+strlen(pBuf), "ETxBfNoncompress: %d\n", pAd->CommonCfg.ETxBfNoncompress);
- sprintf(pBuf+strlen(pBuf), "ETxBfIncapable: %d\n", pAd->CommonCfg.ETxBfIncapable);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "ITxBfEn: %d\n"
+ , pAd->CommonCfg.RegTransmitSetting.field.ITxBfEn);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "ITxBfTimeout: %ld\n"
+ , pAd->CommonCfg.ITxBfTimeout);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "ETxBfTimeout: %ld\n"
+ , pAd->CommonCfg.ETxBfTimeout);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "ETxBfEnCond: %ld\n"
+ , pAd->CommonCfg.ETxBfEnCond);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "ETxBfNoncompress: %d\n"
+ , pAd->CommonCfg.ETxBfNoncompress);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "ETxBfIncapable: %d\n"
+ , pAd->CommonCfg.ETxBfIncapable);
#endif // TXBF_SUPPORT //
#ifdef DBG_CTRL_SUPPORT
- sprintf(pBuf+strlen(pBuf), "DebugFlags: 0x%lx\n", pAd->CommonCfg.DebugFlags);
+ snprintf(pBuf+strlen(pBuf), BufLen-strlen(pBuf), "DebugFlags: 0x%lx\n"
+ , pAd->CommonCfg.DebugFlags);
#endif /* DBG_CTRL_SUPPORT */
return 0;
}
@@ -6454,16 +6665,19 @@ static INT dump_mac_table(RTMP_ADAPTER *pAd, UINT32 ent_type, BOOLEAN bReptCli)
ULONG DataRate=0;
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#ifdef DOT11_N_SUPPORT
- printk("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("HT Operating Mode : %d\n"
+ , pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#endif /* DOT11_N_SUPPORT */
- printk("\n%-19s%-5s%-5s%-4s%-4s%-4s%-7s%-10s%-6s%-4s%-6s%-6s%-6s%-7s%-7s%-7s\n",
- "MAC", "MODE", "AID", "BSS", "PSM", "WMM", "MIMOPS", "RSSI0/1/2", "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate", "QosMap");
-
+ DBGPRINT(RT_DEBUG_OFF
+ , ("\n%-19s%-5s%-5s%-4s%-4s%-4s%-7s%-10s%-6s%-4s%-6s%-6s%-6s%-7s%-7s%-7s\n"
+ , "MAC", "MODE", "AID", "BSS", "PSM", "WMM", "MIMOPS", "RSSI0/1/2"
+ , "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate", "QosMap"));
+
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
@@ -6494,64 +6708,80 @@ static INT dump_mac_table(RTMP_ADAPTER *pAd, UINT32 ent_type, BOOLEAN bReptCli)
DataRate=0;
getRate(pEntry->HTPhyMode, &DataRate);
- printk("%02X:%02X:%02X:%02X:%02X:%02X ", PRINT_MAC(pEntry->Addr));
- printk("%-5x", pEntry->EntryType);
- printk("%-5d", (int)pEntry->Aid);
- printk("%-4d", (int)pEntry->func_tb_idx);
- printk("%-4d", (int)pEntry->PsMode);
- printk("%-4d", (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE));
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X "
+ , PRINT_MAC(pEntry->Addr)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-5x", pEntry->EntryType));
+ DBGPRINT(RT_DEBUG_OFF, ("%-5d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->func_tb_idx));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->PsMode));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d"
+ , (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE)));
#ifdef DOT11_N_SUPPORT
- printk("%-7d", (int)pEntry->MmpsMode);
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", (int)pEntry->MmpsMode));
#endif /* DOT11_N_SUPPORT */
- printk("%-3d/%-3d/%-3d", pEntry->RssiSample.AvgRssi[0],
+ DBGPRINT(RT_DEBUG_OFF, ("%-3d/%-3d/%-3d", pEntry->RssiSample.AvgRssi[0],
pEntry->RssiSample.AvgRssi[1],
- pEntry->RssiSample.AvgRssi[2]);
- printk("%-6s", get_phymode_str(pEntry->HTPhyMode.field.MODE));
- printk("%-4s", get_bw_str(pEntry->HTPhyMode.field.BW));
+ pEntry->RssiSample.AvgRssi[2]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6s", get_phymode_str(pEntry->HTPhyMode.field.MODE)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4s", get_bw_str(pEntry->HTPhyMode.field.BW)));
#ifdef DOT11_VHT_AC
if (pEntry->HTPhyMode.field.MODE == MODE_VHT)
- printk("%dS-M%d", ((pEntry->HTPhyMode.field.MCS>>4) + 1), (pEntry->HTPhyMode.field.MCS & 0xf));
+ DBGPRINT(RT_DEBUG_OFF, ("%dS-M%d", ((pEntry->HTPhyMode.field.MCS>>4) + 1)
+ , (pEntry->HTPhyMode.field.MCS & 0xf)));
else
#endif /* DOT11_VHT_AC */
- printk("%-6d", pEntry->HTPhyMode.field.MCS);
- printk("%-4d", pEntry->HTPhyMode.field.ShortGI);
- printk("%-5d", pEntry->HTPhyMode.field.STBC);
- printk("%-7d", (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount));
- printk("%-7d", (int)DataRate);
-#ifdef CONFIG_HOTSPOT_R2
- printk("%-7d", (int)pEntry->QosMapSupport);
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.MCS));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", pEntry->HTPhyMode.field.ShortGI));
+ DBGPRINT(RT_DEBUG_OFF, ("%-5d", pEntry->HTPhyMode.field.STBC));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d"
+ , (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", (int)DataRate));
+#ifdef CONFIG_HOTSPOT_R2
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", (int)pEntry->QosMapSupport));
#endif
- printk("%-10d, %d, %d%%\n", pEntry->DebugFIFOCount, pEntry->DebugTxCount,
- (pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0);
+ DBGPRINT(RT_DEBUG_OFF, ("%-10d, %d, %d%%\n"
+ , pEntry->DebugFIFOCount, pEntry->DebugTxCount
+ , (pEntry->DebugTxCount) ?
+ ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount)
+ : 0));
#ifdef CONFIG_HOTSPOT_R2
if (pEntry->QosMapSupport)
{
- int k =0;
- printk("DSCP Exception:\n");
+ int k = 0;
+
+ DBGPRINT(RT_DEBUG_OFF, ("DSCP Exception:\n"));
for(k=0;k<pEntry->DscpExceptionCount/2;k++)
{
- printk("[Value: %4d] [UP: %4d]\n", pEntry->DscpException[k] & 0xff, (pEntry->DscpException[k] >> 8) & 0xff);
+ DBGPRINT(RT_DEBUG_OFF, ("[Value: %4d] [UP: %4d]\n"
+ , pEntry->DscpException[k] & 0xff
+ , (pEntry->DscpException[k] >> 8) & 0xff));
}
- printk("DSCP Range:\n");
+ BGPRINT(RT_DEBUG_OFF, ("DSCP Range:\n"));
for(k=0;k<8;k++)
{
- printk("[UP :%3d][Low Value: %4d] [High Value: %4d]\n", k, pEntry->DscpRange[k] & 0xff, (pEntry->DscpRange[k] >> 8) & 0xff);
+ DBGPRINT(RT_DEBUG_OFF
+ , ("[UP :%3d][Low Value: %4d] [High Value: %4d]\n"
+ , k, pEntry->DscpRange[k] & 0xff
+ , (pEntry->DscpRange[k] >> 8) & 0xff));
}
}
#endif
//+++Add by shiang for debug
- printk("\t\t\t\t\t\t\tMaxCap:%-10s", get_phymode_str(pEntry->MaxHTPhyMode.field.MODE));
- printk("%-6s", get_bw_str(pEntry->MaxHTPhyMode.field.BW));
+ DBGPRINT(RT_DEBUG_OFF, ("\t\t\t\t\t\t\tMaxCap:%-10s"
+ , get_phymode_str(pEntry->MaxHTPhyMode.field.MODE)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6s", get_bw_str(pEntry->MaxHTPhyMode.field.BW)));
#ifdef DOT11_VHT_AC
if (pEntry->MaxHTPhyMode.field.MODE == MODE_VHT)
- printk("%dS-M%d", ((pEntry->MaxHTPhyMode.field.MCS>>4) + 1), (pEntry->MaxHTPhyMode.field.MCS & 0xf));
+ DBGPRINT(RT_DEBUG_OFF, ("%dS-M%d"
+ , ((pEntry->MaxHTPhyMode.field.MCS>>4) + 1)
+ , (pEntry->MaxHTPhyMode.field.MCS & 0xf)));
else
#endif /* DOT11_VHT_AC */
- printk("%-6d", pEntry->MaxHTPhyMode.field.MCS);
- printk("%-4d", pEntry->MaxHTPhyMode.field.ShortGI);
- printk("%-5d\n", pEntry->MaxHTPhyMode.field.STBC);
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->MaxHTPhyMode.field.MCS));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", pEntry->MaxHTPhyMode.field.ShortGI));
+ DBGPRINT(RT_DEBUG_OFF, ("%-5d\n", pEntry->MaxHTPhyMode.field.STBC));
//---Add by shiang for debug
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
return TRUE;
@@ -6588,19 +6818,22 @@ static INT dump_ps_table(RTMP_ADAPTER *pAd, UINT32 ent_type, BOOLEAN bReptCli)
UCHAR pucPort, pucQueue;
INT Total_Packet_Number = 0 ;
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#ifdef DOT11_N_SUPPORT
- printk("HT Operating Mode : %d\n", pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("HT Operating Mode : %d\n"
+ , pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#endif /* DOT11_N_SUPPORT */
- printk("\n%-19s\t%-10s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-6s\t%-6s",
- "MAC", "EntryType", "AID", "BSS", "PSM", "ipsm", "iips", "sktx", "redt", "port", "queu", "pktnum","psnum");
+ DBGPRINT(RT_DEBUG_OFF
+ , ("\n%-19s\t%-10s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-5s\t%-6s\t%-6s"
+ , "MAC", "EntryType", "AID", "BSS", "PSM", "ipsm", "iips"
+ , "sktx", "redt", "port", "queu", "pktnum", "psnum"));
#ifdef UAPSD_SUPPORT
- printk("\t%-7s", "APSD");
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-7s", "APSD"));
#endif /* UAPSD_SUPPORT */
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
{
@@ -6663,24 +6896,27 @@ static INT dump_ps_table(RTMP_ADAPTER *pAd, UINT32 ent_type, BOOLEAN bReptCli)
for (j = 0; j < WMM_QUE_NUM; j++)
Total_Packet_Number = Total_Packet_Number + tr_entry->tx_queue[j].Number;
- printk("%02X:%02X:%02X:%02X:%02X:%02X", PRINT_MAC(pEntry->Addr));
- printk("\t%-10x", pEntry->EntryType);
- printk("\t%-5d", (int)pEntry->Aid);
- printk("\t%-5d", (int)pEntry->func_tb_idx);
- printk("\t%-5d", (int)pEntry->PsMode);
- printk("\t%-5d", (int)dw3->field.i_psm);
- printk("\t%-5d", (int)dw3->field.du_i_psm);
- printk("\t%-5d", (int)dw3->field.skip_tx);
- printk("\t%-5d", (int)pfgForce);
- printk("\t%-5d", (int)pucPort);
- printk("\t%-5d", (int)pucQueue);
- printk("\t%-6d", (int)Total_Packet_Number);
- printk("\t%-6d", (int)tr_entry->ps_queue.Number);
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X", PRINT_MAC(pEntry->Addr)));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-10x", pEntry->EntryType));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)pEntry->func_tb_idx));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)pEntry->PsMode));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)dw3->field.i_psm));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)dw3->field.du_i_psm));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)dw3->field.skip_tx));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)pfgForce));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)pucPort));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-5d", (int)pucQueue));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", (int)Total_Packet_Number));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6d", (int)tr_entry->ps_queue.Number));
#ifdef UAPSD_SUPPORT
- printk("\t%d,%d,%d,%d",
- (int)pEntry->bAPSDCapablePerAC[QID_AC_BE], pEntry->bAPSDCapablePerAC[QID_AC_BK], pEntry->bAPSDCapablePerAC[QID_AC_VI], pEntry->bAPSDCapablePerAC[QID_AC_VO]);
+ DBGPRINT(RT_DEBUG_OFF, ("\t%d,%d,%d,%d"
+ , (int)pEntry->bAPSDCapablePerAC[QID_AC_BE]
+ , pEntry->bAPSDCapablePerAC[QID_AC_BK]
+ , pEntry->bAPSDCapablePerAC[QID_AC_VI]
+ , pEntry->bAPSDCapablePerAC[QID_AC_VO]));
#endif /* UAPSD_SUPPORT */
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
return TRUE;
@@ -6727,42 +6963,48 @@ INT Show_BaTable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
continue;
if (IS_ENTRY_APCLI(pEntry))
- strcpy(tmpBuf, "ApCli");
+ strncpy(tmpBuf, "ApCli", sizeof(tmpBuf)-1);
else if (IS_ENTRY_WDS(pEntry))
- strcpy(tmpBuf, "WDS");
+ strncpy(tmpBuf, "WDS", sizeof(tmpBuf)-1);
else if (IS_ENTRY_MESH(pEntry))
- strcpy(tmpBuf, "Mesh");
+ strncpy(tmpBuf, "Mesh", sizeof(tmpBuf)-1);
else if (IS_ENTRY_AP(pEntry))
- strcpy(tmpBuf, "AP");
+ strncpy(tmpBuf, "AP", sizeof(tmpBuf)-1);
else
- strcpy(tmpBuf, "STA");
+ strncpy(tmpBuf, "STA", sizeof(tmpBuf)-1);
+
+ tmpBuf[sizeof(tmpBuf)-1] = 0;
- printk("%02X:%02X:%02X:%02X:%02X:%02X (Aid = %d) (%s) -\n",
- PRINT_MAC(pEntry->Addr), pEntry->Aid, tmpBuf);
-
- printk("[Recipient]\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02X:%02X:%02X:%02X:%02X:%02X (Aid = %d) (%s) -\n",
+ PRINT_MAC(pEntry->Addr), pEntry->Aid, tmpBuf));
+
+ DBGPRINT(RT_DEBUG_OFF, ("[Recipient]\n"));
for (j=0; j < NUM_OF_TID; j++)
{
if (pEntry->BARecWcidArray[j] != 0)
{
pRecBAEntry =&pAd->BATable.BARecEntry[pEntry->BARecWcidArray[j]];
- printk("TID=%d, BAWinSize=%d, LastIndSeq=%d, ReorderingPkts=%d\n", j, pRecBAEntry->BAWinSize, pRecBAEntry->LastIndSeq, pRecBAEntry->list.qlen);
+ DBGPRINT(RT_DEBUG_OFF, (
+ "TID=%d, BAWinSize=%d, LastIndSeq=%d, ReorderingPkts=%d\n"
+ , j, pRecBAEntry->BAWinSize, pRecBAEntry->LastIndSeq
+ , pRecBAEntry->list.qlen));
}
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
- printk("[Originator]\n");
+ DBGPRINT(RT_DEBUG_OFF, ("[Originator]\n"));
for (j=0; j < NUM_OF_TID; j++)
{
if (pEntry->BAOriWcidArray[j] != 0)
{
pOriBAEntry =&pAd->BATable.BAOriEntry[pEntry->BAOriWcidArray[j]];
- printk("TID=%d, BAWinSize=%d, StartSeq=%d, CurTxSeq=%d\n",
- j, pOriBAEntry->BAWinSize, pOriBAEntry->Sequence,
- pAd->MacTab.tr_entry[pEntry->wcid].TxSeq[j]);
+ DBGPRINT(RT_DEBUG_OFF
+ , ("TID=%d, BAWinSize=%d, StartSeq=%d, CurTxSeq=%d\n"
+ , j, pOriBAEntry->BAWinSize, pOriBAEntry->Sequence
+ , pAd->MacTab.tr_entry[pEntry->wcid].TxSeq[j]));
}
}
- printk("\n\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n\n"));
}
return TRUE;
@@ -7253,12 +7495,15 @@ INT32 ShowPseData(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UINT8 StartFID, CurFID, FrameNums, Index, DwIndex;
UINT32 Value;
UINT32 PseData[4 * 8];
+ INT ret;
+ LONG ret_value;
Param = rstrtok(arg, ",");
if (Param != NULL)
{
- StartFID = simple_strtol(Param, 0, 10);
+ ret = kstrtol(Param, 10, &ret_value);
+ StartFID = (UINT8)ret_value;
}
else
{
@@ -7269,7 +7514,8 @@ INT32 ShowPseData(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if (Param != NULL)
{
- FrameNums = simple_strtol(Param, 0, 10);
+ ret = kstrtol(Param, 10, &ret_value);
+ FrameNums = (UINT8)ret_value;
}
else
{
@@ -7301,7 +7547,7 @@ INT32 ShowPseData(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
Value |= SET_CURR_FID(CurFID);
RTMP_IO_WRITE32(pAd, C_GF, Value);
RTMP_IO_READ32(pAd, C_GF, &Value);
- CurFID = GET_RETURN_FID(Value);
+ CurFID = (UINT8)GET_RETURN_FID(Value);
if (CurFID == 0xfff)
break;
@@ -7565,90 +7811,103 @@ INT show_stainfo_proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
return FALSE;
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
- printk("EntryType : %d\n", pEntry->EntryType);
- printk("Entry Capability:\n");
- printk("\tPhyMode:%-10s\n", get_phymode_str(pEntry->MaxHTPhyMode.field.MODE));
- printk("\tBW:%-6s\n", get_bw_str(pEntry->MaxHTPhyMode.field.BW));
- printk("\tDataRate: \n");
+ DBGPRINT(RT_DEBUG_OFF, ("EntryType : %d\n", pEntry->EntryType));
+ DBGPRINT(RT_DEBUG_OFF, ("Entry Capability:\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("\tPhyMode:%-10s\n"
+ , get_phymode_str(pEntry->MaxHTPhyMode.field.MODE)));
+ DBGPRINT(RT_DEBUG_OFF, ("\tBW:%-6s\n", get_bw_str(pEntry->MaxHTPhyMode.field.BW)));
+ DBGPRINT(RT_DEBUG_OFF, ("\tDataRate:\n"));
#ifdef DOT11_VHT_AC
if (pEntry->MaxHTPhyMode.field.MODE == MODE_VHT)
- printk("%dS-M%d", ((pEntry->MaxHTPhyMode.field.MCS>>4) + 1), (pEntry->MaxHTPhyMode.field.MCS & 0xf));
+ DBGPRINT(RT_DEBUG_OFF, ("%dS-M%d"
+ , ((pEntry->MaxHTPhyMode.field.MCS>>4) + 1)
+ , (pEntry->MaxHTPhyMode.field.MCS & 0xf)));
else
#endif /* DOT11_VHT_AC */
- printk(" %-6d", pEntry->MaxHTPhyMode.field.MCS);
- printk(" %-6d", pEntry->MaxHTPhyMode.field.ShortGI);
- printk(" %-6d\n", pEntry->MaxHTPhyMode.field.STBC);
+ DBGPRINT(RT_DEBUG_OFF, (" %-6d", pEntry->MaxHTPhyMode.field.MCS));
+ DBGPRINT(RT_DEBUG_OFF, (" %-6d", pEntry->MaxHTPhyMode.field.ShortGI));
+ DBGPRINT(RT_DEBUG_OFF, (" %-6d\n", pEntry->MaxHTPhyMode.field.STBC));
- printk("Entry Operation Features\n");
- printk("\t%-4s%-4s%-4s%-4s%-8s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s%-7s%-7s\n",
- "AID", "BSS", "PSM", "WMM", "MIMOPS", "RSSI0", "RSSI1",
- "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate");
+ DBGPRINT(RT_DEBUG_OFF, ("Entry Operation Features\n"));
+ DBGPRINT(RT_DEBUG_OFF
+ , ("\t%-4s%-4s%-4s%-4s%-8s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s%-7s%-7s\n"
+ , "AID", "BSS", "PSM", "WMM", "MIMOPS", "RSSI0", "RSSI1"
+ , "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC", "Idle", "Rate"));
DataRate=0;
getRate(pEntry->HTPhyMode, &DataRate);
- printk("\t%-4d", (int)pEntry->Aid);
- printk("%-4d", (int)pEntry->func_tb_idx);
- printk("%-4d", (int)pEntry->PsMode);
- printk("%-4d", (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-4d", (int)pEntry->Aid));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->func_tb_idx));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->PsMode));
+ DBGPRINT(RT_DEBUG_OFF, ("%-4d"
+ , (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE)));
#ifdef DOT11_N_SUPPORT
- printk("%-8d", (int)pEntry->MmpsMode);
+ DBGPRINT(RT_DEBUG_OFF, ("%-8d", (int)pEntry->MmpsMode));
#endif /* DOT11_N_SUPPORT */
- printk("%-7d", pEntry->RssiSample.AvgRssi[0]);
- printk("%-7d", pEntry->RssiSample.AvgRssi[1]);
- printk("%-7d", pEntry->RssiSample.AvgRssi[2]);
- printk("%-10s", get_phymode_str(pEntry->HTPhyMode.field.MODE));
- printk("%-6s", get_bw_str(pEntry->HTPhyMode.field.BW));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[0]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[1]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi[2]));
+ DBGPRINT(RT_DEBUG_OFF, ("%-10s", get_phymode_str(pEntry->HTPhyMode.field.MODE)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6s", get_bw_str(pEntry->HTPhyMode.field.BW)));
#ifdef DOT11_VHT_AC
if (pEntry->HTPhyMode.field.MODE == MODE_VHT)
- printk("%dS-M%d", ((pEntry->HTPhyMode.field.MCS>>4) + 1), (pEntry->HTPhyMode.field.MCS & 0xf));
+ DBGPRINT(RT_DEBUG_OFF, ("%dS-M%d"
+ , ((pEntry->HTPhyMode.field.MCS>>4) + 1)
+ , (pEntry->HTPhyMode.field.MCS & 0xf)));
else
#endif /* DOT11_VHT_AC */
- printk("%-6d", pEntry->HTPhyMode.field.MCS);
- printk("%-6d", pEntry->HTPhyMode.field.ShortGI);
- printk("%-6d", pEntry->HTPhyMode.field.STBC);
- printk("%-7d", (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount));
- printk("%-7d", (int)DataRate);
- printk("%-10d, %d, %d%%\n", pEntry->DebugFIFOCount, pEntry->DebugTxCount,
- (pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0);
-
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.MCS));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.ShortGI));
+ DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.STBC));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", (int)(pEntry->StaIdleTimeout - pEntry->NoDataIdleCount)));
+ DBGPRINT(RT_DEBUG_OFF, ("%-7d", (int)DataRate));
+ DBGPRINT(RT_DEBUG_OFF, ("%-10d, %d, %d%%\n"
+ , pEntry->DebugFIFOCount
+ , pEntry->DebugTxCount
+ , (pEntry->DebugTxCount) ?
+ ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount)
+ : 0));
+
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
ASSERT(pEntry->wcid <= MAX_LEN_OF_MAC_TABLE);
tr_entry = &pAd->MacTab.tr_entry[pEntry->wcid];
- printk("Entry TxRx Info\n");
- printk("\tEntryType : %d\n", tr_entry->EntryType);
- printk("\tHookingWdev : %p\n", tr_entry->wdev);
- printk("\tIndexing : FuncTd=%d, WCID=%d\n", tr_entry->func_tb_idx, tr_entry->wcid);
- printk("Entry TxRx Features\n");
- printk("\tIsCached, PortSecured, PsMode, LockTx, VndAth\n");
- printk("\t%d\t%d\t%d\t%d\t%d\n", tr_entry->isCached, tr_entry->PortSecured,
+ DBGPRINT(RT_DEBUG_OFF, ("Entry TxRx Info\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("\tEntryType : %d\n", tr_entry->EntryType));
+ DBGPRINT(RT_DEBUG_OFF, ("\tHookingWdev : %p\n", tr_entry->wdev));
+ DBGPRINT(RT_DEBUG_OFF, ("\tIndexing : FuncTd=%d, WCID=%d\n"
+ , tr_entry->func_tb_idx, tr_entry->wcid));
+ DBGPRINT(RT_DEBUG_OFF, ("Entry TxRx Features\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("\tIsCached, PortSecured, PsMode, LockTx, VndAth\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("\t%d\t%d\t%d\t%d\t%d\n", tr_entry->isCached, tr_entry->PortSecured,
tr_entry->PsMode, tr_entry->LockEntryTx,
- tr_entry->bIAmBadAtheros);
-
- printk("\t%-6s%-6s%-6s%-6s%-6s%-6s%-6s\n", "TxQId", "PktNum", "QHead", "QTail", "EnQCap", "DeQCap", "PktSeq");
+ tr_entry->bIAmBadAtheros));
+
+ DBGPRINT(RT_DEBUG_OFF, ("\t%-6s%-6s%-6s%-6s%-6s%-6s%-6s\n"
+ , "TxQId", "PktNum", "QHead", "QTail", "EnQCap", "DeQCap", "PktSeq"));
for (i = 0; i < WMM_QUE_NUM; i++){
RTMP_IRQ_LOCK(&pAd->irq_lock /* &tr_entry->txq_lock[i] */, irqflags);
- printk("\t%d %6d %p %6p %d %d %d\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\t%d %6d %p %6p %d %d %d\n",
i,
tr_entry->tx_queue[i].Number,
tr_entry->tx_queue[i].Head,
tr_entry->tx_queue[i].Tail,
tr_entry->enq_cap, tr_entry->deq_cap,
- tr_entry->TxSeq[i]);
+ tr_entry->TxSeq[i]));
RTMP_IRQ_UNLOCK(&pAd->irq_lock /* &tr_entry->txq_lock[i] */, irqflags);
}
RTMP_IRQ_LOCK(&pAd->irq_lock /* &tr_entry->ps_queue_lock */, irqflags);
- printk("\tpsQ %6d %p %p %d %d NoQ:%d\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\tpsQ %6d %p %p %d %d NoQ:%d\n",
tr_entry->ps_queue.Number,
tr_entry->ps_queue.Head,
tr_entry->ps_queue.Tail,
tr_entry->enq_cap, tr_entry->deq_cap,
- tr_entry->NonQosDataSeq);
+ tr_entry->NonQosDataSeq));
RTMP_IRQ_UNLOCK(&pAd->irq_lock /* &tr_entry->ps_queue_lock */, irqflags);
-
- printk("\n");
+
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
return TRUE;
}
@@ -7699,9 +7958,10 @@ INT show_devinfo_proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
// TODO: shiang-7603
if (pAd->chipCap.hif_type != HIF_MT) {
RTMP_IO_READ32(pAd, BKOFF_SLOT_CFG, &mac_val);
- printk("BackOff Slot : %s slot time, BKOFF_SLOT_CFG(0x1104) = 0x%08x\n",
- OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED) ? "short" : "long",
- mac_val);
+ DBGPRINT(RT_DEBUG_OFF
+ , ("BackOff Slot : %s slot time, BKOFF_SLOT_CFG(0x1104) = 0x%08x\n"
+ , OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED) ? "short" : "long"
+ , mac_val));
}
#endif /* defined(RTMP_MAC) || defined(RLT_MAC) */
@@ -8112,7 +8372,8 @@ INT Show_WpsManufacturer_Proc(
OUT RTMP_STRING *pBuf,
IN ULONG BufLen)
{
- sprintf(pBuf, "\tManufacturer = %s", pAd->StaCfg.WscControl.RegData.SelfInfo.Manufacturer);
+ snprintf(pBuf, BufLen, "\tManufacturer = %s"
+ , pAd->StaCfg.WscControl.RegData.SelfInfo.Manufacturer);
return 0;
}
@@ -8121,7 +8382,8 @@ INT Show_WpsModelName_Proc(
OUT RTMP_STRING *pBuf,
IN ULONG BufLen)
{
- sprintf(pBuf, "\tModelName = %s", pAd->StaCfg.WscControl.RegData.SelfInfo.ModelName);
+ snprintf(pBuf, BufLen, "\tModelName = %s"
+ , pAd->StaCfg.WscControl.RegData.SelfInfo.ModelName);
return 0;
}
@@ -8130,7 +8392,8 @@ INT Show_WpsDeviceName_Proc(
OUT RTMP_STRING *pBuf,
IN ULONG BufLen)
{
- sprintf(pBuf, "\tDeviceName = %s", pAd->StaCfg.WscControl.RegData.SelfInfo.DeviceName);
+ snprintf(pBuf, BufLen, "\tDeviceName = %s"
+ , pAd->StaCfg.WscControl.RegData.SelfInfo.DeviceName);
return 0;
}
@@ -8139,7 +8402,8 @@ INT Show_WpsModelNumber_Proc(
OUT RTMP_STRING *pBuf,
IN ULONG BufLen)
{
- sprintf(pBuf, "\tModelNumber = %s", pAd->StaCfg.WscControl.RegData.SelfInfo.ModelNumber);
+ snprintf(pBuf, BufLen, "\tModelNumber = %s"
+ , pAd->StaCfg.WscControl.RegData.SelfInfo.ModelNumber);
return 0;
}
@@ -8148,7 +8412,8 @@ INT Show_WpsSerialNumber_Proc(
OUT RTMP_STRING *pBuf,
IN ULONG BufLen)
{
- sprintf(pBuf, "\tSerialNumber = %s", pAd->StaCfg.WscControl.RegData.SelfInfo.SerialNumber);
+ snprintf(pBuf, BufLen, "\tSerialNumber = %s"
+ , pAd->StaCfg.WscControl.RegData.SelfInfo.SerialNumber);
return 0;
}
#endif /* WSC_STA_SUPPORT */
@@ -8181,7 +8446,7 @@ INT Show_ModuleTxpower_Proc(
if (pObj->ioctl_if_type != INT_APCLI)
return FALSE;
- ifIndex = pObj->ioctl_if;
+ ifIndex = (UCHAR)pObj->ioctl_if;
DBGPRINT(RT_DEBUG_OFF, ("=============================================================\n"));
if((pAd->ApCfg.ApCliTab[ifIndex].CtrlCurrState == APCLI_CTRL_CONNECTED)
@@ -9441,7 +9706,7 @@ INT Set_ITxBfEn_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
#endif
}
- printk("MCS LUT check\n");
+ DBGPRINT(RT_DEBUG_OFF, ("MCS LUT check\n"));
}
/* If enabling ITxBF then set LNA compensation, do a Divider Calibration and update BBP registers */
@@ -9553,7 +9818,8 @@ UCHAR phill;
INT Set_TxBfProfileTag_Help(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- printk("========================================================================================================================\n"
+ DBGPRINT(RT_DEBUG_OFF, (
+ "====================================================================================================\n"
"TxBfProfile Tag setting example :\n"
"iwpriv ra0 set TxBfProfileTagMatrix=ng:cw:nrow:nol:LM\n"
"iwpriv ra0 set TxBfProfileTagMac=xx:xx:xx:xx:xx:xx\n"
@@ -9580,8 +9846,7 @@ INT Set_TxBfProfileTag_Help(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
"iwpriv ra0 set TxBfProfileDataWrite=profile:subcarrier:psi21:pill\n"
"iwpriv ra0 set TxBfProfileDataWriteAll=TxBfType:subcarrier:BW (TxBfType : 0x00 (IxBf), 0x01 (ETxBf)\n"
" (BW : 0x00 (20M) , 0x01 (40M), 0x02 (80M)\n"
- "========================================================================================================================\n");
-
+ "======================================================================\n"));
CMDInIdx = 0; // Clear index
return TRUE;
}
@@ -9728,7 +9993,8 @@ INT Set_TxBfProfileTagRead(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
*/
validFlg = (readValue32[0] >> 7) & 0x1;
- printk("============================= TxBf profile Tage Info ==============================\n"
+ DBGPRINT(RT_DEBUG_OFF, (
+ "============================= TxBf profile Tage Info ==============================\n"
"Pofile valid status = %d\n"
"Profile index = %d\n\n"
"PFMU_11 = 0x%x, PFMU_R12=0x%x, PFMU_R13=0x%x, PFMU_R14=0x%x\n\n"
@@ -9747,8 +10013,7 @@ INT Set_TxBfProfileTagRead(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
TxScale[0], TxScale[1], TxScale[2], TxScale[3],
StsSnr[0], StsSnr[1],
PFMU_TimeOut,
- FlgStatus[0], FlgStatus[1], FlgStatus[2], FlgStatus[3]);
-
+ FlgStatus[0], FlgStatus[1], FlgStatus[2], FlgStatus[3]));
return TRUE;
}
@@ -9775,9 +10040,10 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
RTMP_IO_READ32(pAd, PFMU_R14, &readValue32[3]);
RTMP_IO_READ32(pAd, PFMU_R15, &readValue32[4]);
- printk("============================= TxBf profile Tage Write ==============================\n"
+ DBGPRINT(RT_DEBUG_OFF, (
+ "============================= TxBf profile Tage Write ==============================\n"
"Profile index = %d\n\n",
- profileIdx);
+ profileIdx));
/*
Bit 63:62 ng[1:0]
@@ -9798,8 +10064,10 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
readValue32[0] &= ~(0x3);
readValue32[0] |= MatrixForm[4];
- printk("ng[1:0]=%d, cw[1:0]=%d, nrow[1:0]=%d, ncol[1:0]=%d, LM[1:0]=%d\n\n",
- MatrixForm[0], MatrixForm[1], MatrixForm[2], MatrixForm[3], MatrixForm[4]);
+ DBGPRINT(RT_DEBUG_OFF, (
+ "ng[1:0]=%d, cw[1:0]=%d, nrow[1:0]=%d, ncol[1:0]=%d, LM[1:0]=%d\n\n",
+ MatrixForm[0], MatrixForm[1], MatrixForm[2],
+ MatrixForm[3], MatrixForm[4]));
}
/*
@@ -9819,8 +10087,8 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
readValue32[0] &= 0x000000FF;
readValue32[0] |= value32;
- printk("Destimation MAC Address=%x:%x:%x:%x:%x:%x\n\n",
- macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]);
+ DBGPRINT(RT_DEBUG_OFF, ("Destimation MAC Address=%x:%x:%x:%x:%x:%x\n\n",
+ macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]));
}
/*
@@ -9837,8 +10105,9 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
value32 |= (LONG)TxScale[3] << 0;
readValue32[3] = value32;
- printk("Tx1_scal_2ss=0x%x, Tx0_scale_2ss=0x%x, Tx1_scal_1ss=0x%x, Tx0_scale_1ss=0x%x\n\n",
- TxScale[0], TxScale[1], TxScale[2], TxScale[3]);
+ DBGPRINT(RT_DEBUG_OFF, (
+ "Tx1_scal_2ss=0x%x, Tx0_scale_2ss=0x%x, Tx1_scal_1ss=0x%x, Tx0_scale_1ss=0x%x\n\n",
+ TxScale[0], TxScale[1], TxScale[2], TxScale[3]));
}
/*
@@ -9852,7 +10121,7 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
readValue32[2] &= 0x0000FFFF;
readValue32[2] |= value32;
- printk("STS1_SNR=0x%x, STS0_SNR=0x%x\n", StsSnr[0], StsSnr[1]);
+ DBGPRINT(RT_DEBUG_OFF, ("STS1_SNR=0x%x, STS0_SNR=0x%x\n", StsSnr[0], StsSnr[1]));
}
/*
@@ -9863,11 +10132,11 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
readValue32[2] &= 0xFFFF0000;
readValue32[2] |= (ULONG)PFMU_TimeOut;
- printk("timeout[15:0]=0x%x\n", PFMU_TimeOut);
+ DBGPRINT(RT_DEBUG_OFF, ("timeout[15:0]=0x%x\n", PFMU_TimeOut));
}
- printk("PFMU_11 = 0x%x, PFMU_R12=0x%x, PFMU_R13=0x%x, PFMU_R14=0x%x\n\n",
- readValue32[0], readValue32[1], readValue32[2], readValue32[3]);
+ DBGPRINT(RT_DEBUG_OFF, ("PFMU_11 = 0x%x, PFMU_R12=0x%x, PFMU_R13=0x%x, PFMU_R14=0x%x\n\n",
+ readValue32[0], readValue32[1], readValue32[2], readValue32[3]));
/*
Bit 15 : 0 timeout[15:0]
@@ -9880,9 +10149,9 @@ INT Set_TxBfProfileTagWrite(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
readValue32[4] |= FlgStatus[2] << 6;
readValue32[4] |= FlgStatus[3] << 5;
- printk("LD=%d, EO=%d, IO=%d, I/E=%d\n"
+ DBGPRINT(RT_DEBUG_OFF, ("LD=%d, EO=%d, IO=%d, I/E=%d\n"
"===================================================================================\n",
- FlgStatus[0], FlgStatus[1], FlgStatus[2], FlgStatus[3]);
+ FlgStatus[0], FlgStatus[1], FlgStatus[2], FlgStatus[3]));
}
@@ -9913,7 +10182,7 @@ INT Set_TxBfProfileDataRead(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
UINT value32, readValue32[5];
INT i;
- printk("arg length=%d\n", strlen(arg));
+ DBGPRINT(RT_DEBUG_OFF, ("arg length=%d\n", strlen(arg)));
/* Profile Select : Subcarrier Select */
if(strlen(arg) != 5)
@@ -9944,7 +10213,8 @@ INT Set_TxBfProfileDataRead(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
psi21 = (readValue32[0] >> 16) & 0x00FF;
phill = (readValue32[0] >> 0) & 0x00FF;
- printk("============================= TxBf profile Data Info ==============================\n"
+ DBGPRINT(RT_DEBUG_OFF, (
+ "============================= TxBf profile Data Info ==============================\n"
"Profile index = %d, subcarrierIdx = %d\n\n"
"PFMU_19 = 0x%x, PFMU_R20=0x%x, PFMU_R21=0x%x, PFMU_R22=0x%x\n\n"
"psi21 = 0x%x\n\n"
@@ -9952,7 +10222,7 @@ INT Set_TxBfProfileDataRead(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
"===================================================================================\n",
profileIdx, subcarrierIdx,
readValue32[0], readValue32[1], readValue32[2], readValue32[3],
- psi21, phill);
+ psi21, phill));
return TRUE;
}
@@ -10171,16 +10441,16 @@ INT Set_TxBfProfileDataReadAll(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if ((idx & 0x7) == 0)
{
- printk("\n");
- printk("(%x, %x) ", psi21_I, phill_I);
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("(%x, %x) ", psi21_I, phill_I));
}
else
- printk("(%x, %x) ", psi21_I, phill_I);
+ DBGPRINT(RT_DEBUG_OFF, ("(%x, %x) ", psi21_I, phill_I));
idx++;
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
/* Positive subcarriers */
idx = 0;
@@ -10202,11 +10472,11 @@ INT Set_TxBfProfileDataReadAll(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if ((idx & 0x7) == 0)
{
- printk("\n");
- printk("(%x, %x) ", psi21_I, phill_I);
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("(%x, %x) ", psi21_I, phill_I));
}
else
- printk("(%x, %x) ", psi21_I, phill_I);
+ DBGPRINT(RT_DEBUG_OFF, ("(%x, %x) ", psi21_I, phill_I);
idx++;
}
@@ -10245,8 +10515,9 @@ INT Set_TxBfProfileTag_Matrix(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
CMDInIdx |= 1;
- printk("ng[1:0]=%x\n" "cw[1:0]=%x\n" "nrow[1:0]=%x\n" "nol[1:0]=%x\n" "LM[1:0]=%x\n",
- MatrixForm[0], MatrixForm[1], MatrixForm[2], MatrixForm[3], MatrixForm[4]);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("ng[1:0]=%x\n cw[1:0]=%x\n nrow[1:0]=%x\n nol[1:0]=%x\n LM[1:0]=%x\n",
+ MatrixForm[0], MatrixForm[1], MatrixForm[2], MatrixForm[3], MatrixForm[4]));
return TRUE;
}
@@ -10271,8 +10542,8 @@ INT Set_TxBfProfileTag_SNR(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
CMDInIdx |= 8;
- printk("STS1_SNR=0x%x\n" "STS1_SNR=0x%x\n",
- StsSnr[0], StsSnr[1]);
+ DBGPRINT(RT_DEBUG_OFF, ("STS1_SNR=0x%x\n STS1_SNR=0x%x\n",
+ StsSnr[0], StsSnr[1]));
return TRUE;
}
@@ -10297,8 +10568,9 @@ INT Set_TxBfProfileTag_TxScale(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
CMDInIdx |= 4;
- printk("Tx1_scale_2ss=0x%x\n" "Tx0_scale_2ss=0x%x\n" "Tx1_scale_1ss=0x%x\n" "Tx0_scale_1ss=0x%x\n",
- TxScale[0], TxScale[1], TxScale[2], TxScale[3]);
+ DBGPRINT(RT_DEBUG_OFF, (
+ "Tx1_scale_2ss=0x%x\n Tx0_scale_2ss=0x%x\n Tx1_scale_1ss=0x%x\n Tx0_scale_1ss=0x%x\n",
+ TxScale[0], TxScale[1], TxScale[2], TxScale[3]));
return TRUE;
}
@@ -10324,8 +10596,14 @@ INT Set_TxBfProfileTag_MAC(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
CMDInIdx |= 2;
- printk("Set_TxBfProfileTage_MAC\n" "DS MAC=0x%x:0x%x:0x%x:0x%x:0x%x:0x%x \n",
- macAddr[0],macAddr[1],macAddr[2],macAddr[3],macAddr[4],macAddr[5]);
+ DBGPRINT(RT_DEBUG_OFF, (
+ "Set_TxBfProfileTage_MAC\n DS MAC=0x%x:0x%x:0x%x:0x%x:0x%x:0x%x\n",
+ macAddr[0],
+ macAddr[1],
+ macAddr[2],
+ macAddr[3],
+ macAddr[4],
+ macAddr[5]));
return TRUE;
}
@@ -10350,8 +10628,8 @@ INT Set_TxBfProfileTag_Flg(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
CMDInIdx |= 32;
- printk("LD=%d\n" "EO=%d\n" "IO=%d\n" "I/E=%d\n",
- FlgStatus[0], FlgStatus[1], FlgStatus[2], FlgStatus[3]);
+ DBGPRINT(RT_DEBUG_OFF, ("LD=%d\n EO=%d\n IO=%d\n I/E=%d\n",
+ FlgStatus[0], FlgStatus[1], FlgStatus[2], FlgStatus[3]));
return TRUE;
}
@@ -10622,7 +10900,11 @@ INT Set_MonitorMode_Proc(
INT Set_VcoPeriod_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- pAd->chipCap.VcoPeriod = simple_strtol(arg, 0, 10);
+ INT ret;
+ LONG ret_value;
+
+ ret = kstrtol(arg, 10, &ret_value);
+ pAd->chipCap.VcoPeriod = (UINT8)ret_value;
DBGPRINT(RT_DEBUG_TRACE,
("VCO Period = %d seconds\n", pAd->chipCap.VcoPeriod));
@@ -10807,8 +11089,11 @@ INT set_cap_support(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT set_vco_cal(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
UCHAR vco_cal;
+ INT ret;
+ LONG ret_value;
- vco_cal = simple_strtol(arg, 0, 10);
+ ret = kstrtol(arg, 10, &ret_value);
+ vco_cal = (UCHAR)ret_value;
pAd->fpga_ctl.vco_cal = vco_cal ? TRUE : FALSE;
DBGPRINT(RT_DEBUG_TRACE, ("%s(): vco_cal=%s\n",
__FUNCTION__, (pAd->fpga_ctl.vco_cal ? "Enabled" : "Stopped")));
@@ -10820,8 +11105,11 @@ INT set_vco_cal(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT set_tr_stop(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
UCHAR stop;
+ INT ret;
+ LONG ret_value;
- stop = simple_strtol(arg, 0, 10);
+ ret = kstrtol(arg, 10, &ret_value);
+ stop = (UCHAR)ret_value;
pAd->fpga_ctl.fpga_tr_stop = (stop <= 4 ? stop : 0);
DBGPRINT(RT_DEBUG_TRACE, ("%s(): fpga_tr_stop=0x%x\n", __FUNCTION__, pAd->fpga_ctl.fpga_tr_stop));
@@ -10974,7 +11262,7 @@ INT set_fpga_mode(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
}
#endif /* CONFIG_AP_SUPPORT */
- pAd->fpga_ctl.fpga_on = fpga_on;
+ pAd->fpga_ctl.fpga_on = (UINT8)fpga_on;
DBGPRINT(RT_DEBUG_TRACE, ("%s(): fpga_on=%d\n", __FUNCTION__, pAd->fpga_ctl.fpga_on));
DBGPRINT(RT_DEBUG_TRACE, ("\tdata_phy=%d\n", pAd->fpga_ctl.tx_data_phy));
DBGPRINT(RT_DEBUG_TRACE, ("\tdata_bw=%d\n", pAd->fpga_ctl.tx_data_bw));
@@ -11240,7 +11528,7 @@ void DisplayTxAgg (RTMP_ADAPTER *pAd)
for (i=0; i<MAX_AGG_CNT; i++) {
DBGPRINT(RT_DEBUG_OFF, ("\t%d MPDU=%ld (%ld%%)\n", i+1, aggCnt[i+2], aggCnt[i+2]*100/totalCount));
}
- printk("====================\n");
+ DBGPRINT(RT_DEBUG_OFF, ("====================\n"));
}
#endif /* DOT11_N_SUPPORT */
@@ -11471,7 +11759,8 @@ INT RTMPShowCfgValue(
{
if ((strlen(pBuf) + strlen(PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name)) >= MaxLen)
break;
- sprintf(pBuf, "%s%s\n", pBuf, PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name);
+ snprintf(pBuf, MaxLen, "%s%s\n", pBuf
+ , PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name);
}
}
diff --git a/common/cmm_mac_usb.c b/common/cmm_mac_usb.c
index 4e84e01..8a472f3 100755
--- a/common/cmm_mac_usb.c
+++ b/common/cmm_mac_usb.c
@@ -2422,13 +2422,25 @@ check:
SET_OS_PKT_LEN(pkt, len);
+ /*
+ * Correct tail pointer of tail should be set to avoid skb overflow;
+ */
+ skb_set_tail_pointer(RTPKT_TO_OSPKT(pkt), len);
+
#ifdef RT_BIG_ENDIAN
MTMacInfoEndianChange(pAd, buf, TYPE_TMACINFO, sizeof(TMAC_TXD_L));
#endif /* RT_BIG_ENDIAN */
/* Now do hardware-depened kick out.*/
RTMP_SEM_LOCK(&pAd->BcnRingLock);
- HAL_KickOutMgmtTx(pAd, Q_IDX_BCN, pkt, buf, len);
+ /*
+ * Bcn_buf->bcn_state should set before kickout,
+ * to avoid beacon sending process breaked and Txs received
+ * before bcn_buf->bcn_state set to BCN_TX_WRITE_TO_DMA,
+ * which makes bcn_state over-written.
+ */
bcn_buf->bcn_state = BCN_TX_WRITE_TO_DMA;
+ HAL_KickOutMgmtTx(pAd, Q_IDX_BCN, pkt, buf, len);
+ /*bcn_buf->bcn_state = BCN_TX_WRITE_TO_DMA;*/
RTMP_SEM_UNLOCK(&pAd->BcnRingLock);
} else {
DBGPRINT(RT_DEBUG_ERROR, ("%s(): BeaconPkt is NULL!\n", __FUNCTION__));
diff --git a/common/cmm_profile.c b/common/cmm_profile.c
index 4452222..5a83e97 100755
--- a/common/cmm_profile.c
+++ b/common/cmm_profile.c
@@ -534,7 +534,7 @@ INT RTMPGetKeyParameterWithOffset(
return (FALSE);
}
- *end_offset = end_ptr - buffer;
+ *end_offset = (USHORT)(end_ptr - buffer);
NdisMoveMemory(temp_buf2, start_ptr, end_ptr-start_ptr);
temp_buf2[end_ptr-start_ptr]='\0';
@@ -880,7 +880,8 @@ static void rtmp_read_ap_client_from_file(
wdev->AuthMode = Ndis802_11AuthModeOpen;
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) ApCli_AuthMode=%d \n", i, wdev->AuthMode));
- RTMPMakeRSNIE(pAd, wdev->AuthMode, wdev->WepStatus, (i + MIN_NET_DEVICE_FOR_APCLI));
+ RTMPMakeRSNIE(pAd, wdev->AuthMode,
+ wdev->WepStatus, (UCHAR)(i + MIN_NET_DEVICE_FOR_APCLI));
}
}
@@ -919,7 +920,8 @@ static void rtmp_read_ap_client_from_file(
pApCliEntry->bMixCipher = FALSE;
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) APCli_EncrypType = %d \n", i, wdev->WepStatus));
- RTMPMakeRSNIE(pAd, wdev->AuthMode, wdev->WepStatus, (i + MIN_NET_DEVICE_FOR_APCLI));
+ RTMPMakeRSNIE(pAd, wdev->AuthMode,
+ wdev->WepStatus, (UCHAR)(i + MIN_NET_DEVICE_FOR_APCLI));
}
}
@@ -940,7 +942,7 @@ static void rtmp_read_ap_client_from_file(
}
NdisMoveMemory(pApCliEntry->PSK, macptr, strlen(macptr));
- pApCliEntry->PSKLen = strlen(macptr);
+ pApCliEntry->PSKLen = (UCHAR)strlen(macptr);
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) APCli_WPAPSK_KEY=%s, Len=%d\n", i, pApCliEntry->PSK, pApCliEntry->PSKLen));
if ((pApCliEntry->wdev.AuthMode != Ndis802_11AuthModeWPAPSK) &&
@@ -1047,7 +1049,7 @@ static void rtmp_read_ap_client_from_file(
wdev = &pAd->ApCfg.ApCliTab[i].wdev;
wdev->DesiredTransmitSetting.field.FixedTxMode =
- RT_CfgSetFixedTxPhyMode(macptr);
+ (USHORT)RT_CfgSetFixedTxPhyMode(macptr);
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) Tx Mode = %d\n", i,
wdev->DesiredTransmitSetting.field.FixedTxMode));
}
@@ -1061,7 +1063,7 @@ static void rtmp_read_ap_client_from_file(
wdev = &pAd->ApCfg.ApCliTab[i].wdev;
wdev->DesiredTransmitSetting.field.MCS =
- RT_CfgSetTxMCSProc(macptr, &wdev->bAutoTxRateSwitch);
+ (UCHAR)RT_CfgSetTxMCSProc(macptr, &wdev->bAutoTxRateSwitch);
DBGPRINT(RT_DEBUG_TRACE, ("I/F(apcli%d) Tx MCS = %s(%d)\n", i,
(wdev->DesiredTransmitSetting.field.MCS == MCS_AUTO ? "AUTO" : ""),
@@ -2192,7 +2194,7 @@ static void HTParametersHook(
for (i = 0, Bufptr = rstrtok(pValueStr,";"); (Bufptr && i < MAX_MBSSID_NUM(pAd)); Bufptr = rstrtok(NULL,";"), i++)
{
pAd->ApCfg.MBSSID[i].wdev.DesiredTransmitSetting.field.FixedTxMode =
- RT_CfgSetFixedTxPhyMode(Bufptr);
+ (USHORT)RT_CfgSetFixedTxPhyMode(Bufptr);
DBGPRINT(RT_DEBUG_TRACE, ("(IF-ra%d) Fixed Tx Mode = %d\n", i,
pAd->ApCfg.MBSSID[i].wdev.DesiredTransmitSetting.field.FixedTxMode));
}
@@ -2202,7 +2204,7 @@ static void HTParametersHook(
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
pAd->StaCfg.wdev.DesiredTransmitSetting.field.FixedTxMode =
- RT_CfgSetFixedTxPhyMode(pValueStr);
+ (USHORT)RT_CfgSetFixedTxPhyMode(pValueStr);
DBGPRINT(RT_DEBUG_TRACE, ("Fixed Tx Mode = %d\n",
pAd->StaCfg.wdev.DesiredTransmitSetting.field.FixedTxMode));
}
@@ -2249,7 +2251,7 @@ static void HTParametersHook(
struct wifi_dev *wdev = &pAd->ApCfg.MBSSID[i].wdev;
Value = simple_strtol(Bufptr, 0, 10);
if ((Value >= 0 && Value <= 23) || (Value == 32))
- wdev->DesiredTransmitSetting.field.MCS = Value;
+ wdev->DesiredTransmitSetting.field.MCS = (USHORT)Value;
else
wdev->DesiredTransmitSetting.field.MCS = MCS_AUTO;
DBGPRINT(RT_DEBUG_TRACE, ("(IF-ra%d) HT: MCS = %s(%d)\n", i,
@@ -2266,7 +2268,7 @@ static void HTParametersHook(
Value = simple_strtol(pValueStr, 0, 10);
if ((Value >= 0 && Value <= 23) || (Value == 32))
{
- wdev->DesiredTransmitSetting.field.MCS = Value;
+ wdev->DesiredTransmitSetting.field.MCS = (USHORT)Value;
#ifdef P2P_SUPPORT
pAd->ApCfg.MBSSID[MAIN_MBSSID].wdev.DesiredTransmitSetting.field.MCS = Value;
#endif /* P2P_SUPPORT */
@@ -2502,10 +2504,10 @@ static void HTParametersHook(
}
#endif /* DOT11_N_SUPPORT */
- if (RTMPGetKeyParameter("TXRX_RXV_ON", pValueStr, 25, pInput, TRUE)) {
+ if (RTMPGetKeyParameter("TXRX_RXV_ON", pValueStr, 25, pInput, TRUE)) {
Value = simple_strtol(pValueStr, 0, 10);
- pAd->CommonCfg.bTXRX_RXV_ON = Value;
+ pAd->CommonCfg.bTXRX_RXV_ON = (BOOLEAN)Value;
DBGPRINT(RT_DEBUG_TRACE, ("TXRX_RXV_ON = %s\n", (Value == 1) ? "ON" : "OFF" ));
}
@@ -2695,7 +2697,7 @@ NDIS_STATUS StoreConnectInfo(
void RTMPSetCountryCode(RTMP_ADAPTER *pAd, RTMP_STRING *CountryCode)
{
NdisMoveMemory(pAd->CommonCfg.CountryCode, CountryCode , 2);
- pAd->CommonCfg.CountryCode[2] = ' ';
+ pAd->CommonCfg.CountryCode[2] = 0;
#ifdef CONFIG_STA_SUPPORT
#ifdef EXT_BUILD_CHANNEL_LIST
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
@@ -2858,7 +2860,8 @@ NDIS_STATUS RTMPSetProfileParameters(
{
NdisMoveMemory(pAd->ApCfg.MBSSID[i].Ssid, tmpbuf , strlen(tmpbuf));
pAd->ApCfg.MBSSID[i].Ssid[strlen(tmpbuf)] = '\0';
- pAd->ApCfg.MBSSID[i].SsidLen = strlen((RTMP_STRING *) pAd->ApCfg.MBSSID[i].Ssid);
+ pAd->ApCfg.MBSSID[i].SsidLen =
+ (UCHAR)strlen((RTMP_STRING *) pAd->ApCfg.MBSSID[i].Ssid);
if (bSSIDxIsUsed == FALSE)
{
bSSIDxIsUsed = TRUE;
@@ -2870,7 +2873,8 @@ NDIS_STATUS RTMPSetProfileParameters(
{
if(RTMPGetKeyParameter("SSID", tmpbuf, 256, pBuffer, FALSE))
{
- BssidCountSupposed = delimitcnt(tmpbuf, ";") + 1;
+ BssidCountSupposed =
+ (UCHAR)(delimitcnt(tmpbuf, ";") + 1);
if (pAd->ApCfg.BssidNum != BssidCountSupposed)
{
DBGPRINT_ERR(("Your no. of SSIDs( = %d) does not match your BssidNum( = %d)!\n", BssidCountSupposed, pAd->ApCfg.BssidNum));
@@ -2893,7 +2897,8 @@ NDIS_STATUS RTMPSetProfileParameters(
NdisMoveMemory(pAd->ApCfg.MBSSID[apidx].Ssid, macptr , strlen(macptr));
pAd->ApCfg.MBSSID[apidx].Ssid[strlen(macptr)] = '\0';
- pAd->ApCfg.MBSSID[apidx].SsidLen = strlen((RTMP_STRING *)pAd->ApCfg.MBSSID[apidx].Ssid);
+ pAd->ApCfg.MBSSID[apidx].SsidLen =
+ (UCHAR)strlen((RTMP_STRING *)pAd->ApCfg.MBSSID[apidx].Ssid);
DBGPRINT(RT_DEBUG_TRACE, ("SSID[%d]=%s\n", i, pAd->ApCfg.MBSSID[apidx].Ssid));
}
@@ -2904,7 +2909,8 @@ NDIS_STATUS RTMPSetProfileParameters(
{
NdisMoveMemory(pAd->ApCfg.MBSSID[BSS0].Ssid, tmpbuf , strlen(tmpbuf));
pAd->ApCfg.MBSSID[BSS0].Ssid[strlen(tmpbuf)] = '\0';
- pAd->ApCfg.MBSSID[BSS0].SsidLen = strlen((RTMP_STRING *) pAd->ApCfg.MBSSID[BSS0].Ssid);
+ pAd->ApCfg.MBSSID[BSS0].SsidLen =
+ (UCHAR)strlen((RTMP_STRING *) pAd->ApCfg.MBSSID[BSS0].Ssid);
DBGPRINT(RT_DEBUG_TRACE, ("SSID=%s\n", pAd->ApCfg.MBSSID[BSS0].Ssid));
}
}
@@ -3463,7 +3469,8 @@ NDIS_STATUS RTMPSetProfileParameters(
/*AutoChannelSkipList*/
if (RTMPGetKeyParameter("AutoChannelSkipList", tmpbuf, 50, pBuffer, FALSE))
{
- pAd->ApCfg.AutoChannelSkipListNum = delimitcnt(tmpbuf, ";") + 1;
+ pAd->ApCfg.AutoChannelSkipListNum =
+ (UCHAR)(delimitcnt(tmpbuf, ";") + 1);
if ( pAd->ApCfg.AutoChannelSkipListNum > 10 )
{
DBGPRINT(RT_DEBUG_TRACE, ("Your no. of AutoChannelSkipList( %d ) is larger than 10 (boundary)\n",pAd->ApCfg.AutoChannelSkipListNum));
@@ -4198,7 +4205,7 @@ NDIS_STATUS RTMPSetProfileParameters(
{
ULONG fpga_on = simple_strtol(tmpbuf, 0, 10);
- pAd->fpga_ctl.fpga_on = fpga_on > 0 ? fpga_on : 0;
+ pAd->fpga_ctl.fpga_on = (UINT8)(fpga_on > 0 ? fpga_on : 0);
DBGPRINT(RT_DEBUG_OFF, ("%s(): FPGA_ON=%d\n",
__FUNCTION__, pAd->fpga_ctl.fpga_on));
}
@@ -4208,7 +4215,7 @@ NDIS_STATUS RTMPSetProfileParameters(
{
ULONG dma_sch = simple_strtol(tmpbuf, 0, 10);
- pAd->fpga_ctl.dma_mode = dma_sch > 0 ? dma_sch : 0;
+ pAd->fpga_ctl.dma_mode = (UINT8)(dma_sch > 0 ? dma_sch : 0);
DBGPRINT(RT_DEBUG_OFF, ("%s(): DMA Scheduler=%d\n",
__FUNCTION__, pAd->fpga_ctl.dma_mode));
}
@@ -4529,7 +4536,7 @@ NDIS_STATUS RTMPSetProfileParameters(
if (lInfo > 90 || lInfo < 60)
pAd->StaCfg.dBmToRoam = -70;
else
- pAd->StaCfg.dBmToRoam = (CHAR)(-1)*lInfo;
+ pAd->StaCfg.dBmToRoam = (CHAR)((-1)*lInfo);
DBGPRINT(RT_DEBUG_TRACE, ("RoamThreshold=%d dBm\n", pAd->StaCfg.dBmToRoam));
}
@@ -5266,8 +5273,12 @@ NDIS_STATUS RTMPSetProfileParameters(
/* set GPIO High Low */
if (RTMPGetKeyParameter("WOW_GPIOHighLow", tmpbuf, 10, pBuffer, TRUE))
Set_WOW_GPIOHighLow(pAd, tmpbuf);
-
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT)*/
+
+ /* set GPIO High Low */
+ if (RTMPGetKeyParameter("WOW_KeepAlive", tmpbuf, 10, pBuffer, TRUE))
+ Set_WOW_KeepAlive_Proc(pAd, tmpbuf);
+
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)*/
#ifdef MICROWAVE_OVEN_SUPPORT
if (RTMPGetKeyParameter("MO_FalseCCATh", tmpbuf, 10, pBuffer, TRUE))
@@ -5294,9 +5305,17 @@ NDIS_STATUS RTMPSetProfileParameters(
{
long PS_RETRIEVE;
PS_RETRIEVE = simple_strtol(tmpbuf, 0, 10);
- pAd->bPS_Retrieve = PS_RETRIEVE;
+ pAd->bPS_Retrieve = (BOOLEAN)PS_RETRIEVE;
DBGPRINT(RT_DEBUG_OFF, ("PS_RETRIEVE = %lx\n",PS_RETRIEVE));
}
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ if (RTMPGetKeyParameter("SCSEnable", tmpbuf, 10, pBuffer, TRUE)) {
+ long SCSEnable;
+ SCSEnable = simple_strtol(tmpbuf, 0, 10);
+ pAd->SCSCtrl.SCSEnable = (BOOLEAN)SCSEnable;
+ DBGPRINT(RT_DEBUG_OFF, ("Smart Carrier Sense = %lx\n", SCSEnable));
+ }
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
}while(0);
@@ -5886,16 +5905,13 @@ NDIS_STATUS RTMPSetSingleSKUParameters(
int index, i;
CH_POWER *StartCh = NULL;
UCHAR channel, *temp;
+ CH_POWER *pwr = NULL;
+ NDIS_STATUS status = NDIS_STATUS_FAILURE;
RTMP_OS_FS_INFO osFSInfo;
DlListInit(&pAd->SingleSkuPwrList);
-
- /* init*/
- os_alloc_mem(NULL, (UCHAR **)&buffer, MAX_INI_BUFFER_SIZE);
- if (buffer == NULL)
- return FALSE;
-
RtmpOSFSInfoChange(&osFSInfo, TRUE);
+
/* open card information file*/
srcf = RtmpOSFileOpen(SINGLE_SKU_TABLE_FILE_NAME, O_RDONLY, 0);
if (IS_FILE_OPEN_ERR(srcf))
@@ -5903,9 +5919,16 @@ NDIS_STATUS RTMPSetSingleSKUParameters(
/* card information file does not exist */
DBGPRINT(RT_DEBUG_TRACE,
("--> Error opening %s\n", SINGLE_SKU_TABLE_FILE_NAME));
- goto free_resource;
+ goto open_fail;
}
+ /* init*/
+ os_alloc_mem(NULL, (UCHAR **)&buffer, MAX_INI_BUFFER_SIZE);
+ if (buffer == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s alloc %d fail\n", __func__,
+ MAX_INI_BUFFER_SIZE));
+ goto alloc_fail;
+ }
#ifdef RTMP_INTERNAL_TX_ALC
if (pAd->TxPowerCtrl.bInternalTxALC != TRUE)
@@ -5920,172 +5943,200 @@ NDIS_STATUS RTMPSetSingleSKUParameters(
/* card information file exists so reading the card information */
NdisZeroMemory(buffer, MAX_INI_BUFFER_SIZE);
retval = RtmpOSFileRead(srcf, buffer, MAX_INI_BUFFER_SIZE);
- if (retval < 0)
- {
+ if (retval < 0) {
/* read fail */
DBGPRINT(RT_DEBUG_TRACE,("--> Read %s error %d\n", SINGLE_SKU_TABLE_FILE_NAME, -retval));
+ goto read_fail;
}
- else
- {
- for ( readline = ptr = buffer, index=0; (ptr = strchr(readline, '\n')) != NULL; readline = ptr + 1, index++ )
- {
- *ptr = '\0';
-
- if ( readline[0] == '#' )
- continue;
+ for (readline = ptr = buffer, index = 0; (ptr = strchr(readline, '\n')) != NULL; readline = ptr + 1, index++) {
+ *ptr = '\0';
- if ( !strncmp(readline, "ch", 2) )
- {
+ if (readline[0] == '#')
+ continue;
- CH_POWER *pwr = NULL;
+ if (!strncmp(readline, "ch", 2)) {
- os_alloc_mem(NULL, (UCHAR **)&pwr, sizeof(*pwr));
- NdisZeroMemory(pwr, sizeof(*pwr));
+ CH_POWER *pwr = NULL;
- token= rstrtok(readline +2 ," ");
- channel = simple_strtol(token, 0, 10);
- pwr->StartChannel = channel;
+ os_alloc_mem(NULL, (UCHAR **)&pwr, sizeof(*pwr));
+ if (pwr == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s alloc pwr fail\n", __func__));
+ goto read_fail;
+ }
- if (pwr->StartChannel <= 14)
- {
- for ( i= 0 ; i < SINGLE_SKU_TABLE_CCK_LENGTH ; i++ )
- {
+ NdisZeroMemory(pwr, sizeof(*pwr));
+
+ token = rstrtok(readline + 2, " ");
+ if (token == NULL) {
+ DBGPRINT(RT_DEBUG_WARN, ("%s: token is NULL\n", __func__));
+ goto parse_fail;
+ }
+ channel = simple_strtol(token, 0, 10);
+ pwr->StartChannel = channel;
+ if (pwr->StartChannel <= 0) {
+ DBGPRINT(RT_DEBUG_ERROR, ("[Incorrect SingleSKU DAT]: Channel <= 0\n"));
+ goto parse_fail;
+ }
+
+ if (pwr->StartChannel <= 14) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_CCK_LENGTH ; i++) {
token = rstrtok(NULL ," ");
- if ( token == NULL )
- break;
+ if (token == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, CCK Index) = (%d, %d) token is NULL\n", channel, i));
+ goto parse_fail;
+ }
+ if (simple_strtol(token, 0, 10) == (long int) 0) { /* No Value or Value=0 */
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, CCK Index) = (%d, %d) value is invalid\n", channel, i));
+ goto parse_fail;
+ }
pwr->PwrCCK[i] = simple_strtol(token, 0, 10) * 2;
}
- }
+ }
- for ( i= 0 ; i < SINGLE_SKU_TABLE_OFDM_LENGTH ; i++ )
- {
- token = rstrtok(NULL ," ");
- if ( token == NULL )
- break;
- pwr->PwrOFDM[i] = simple_strtol(token, 0, 10) *2;
+ for (i = 0 ; i < SINGLE_SKU_TABLE_OFDM_LENGTH ; i++) {
+ token = rstrtok(NULL, " ");
+ if (token == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, OFDM Index) = (%d, %d) token is NULL\n", channel, i));
+ goto parse_fail;
}
+ if (simple_strtol(token, 0, 10) == (long int) 0) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, OFDM Index) = (%d, %d) value is invalid\n", channel, i));
+ goto parse_fail;
+ }
+ pwr->PwrOFDM[i] = simple_strtol(token, 0, 10) * 2;
+ }
- for ( i= 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++ )
- {
- token = rstrtok(NULL ," ");
- if ( token == NULL )
- break;
- pwr->PwrHT20[i] = simple_strtol(token, 0, 10) *2;
+ for (i = 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++) {
+ token = rstrtok(NULL, " ");
+ if (token == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, HT20 Index) = (%d, %d) token is NULL\n", channel, i));
+ goto parse_fail;
}
+ if (simple_strtol(token, 0, 10) == (long int) 0) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, HT20 Index) = (%d, %d) value is invalid\n", channel, i));
+ goto parse_fail;
+ }
+ pwr->PwrHT20[i] = simple_strtol(token, 0, 10) * 2;
+ }
- for ( i= 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++ )
- {
- token = rstrtok(NULL ," ");
- if ( token == NULL )
- break;
- pwr->PwrHT40[i] = simple_strtol(token, 0, 10) *2;
+ for (i = 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++) {
+ token = rstrtok(NULL, " ");
+ if (token == NULL) {
+ if (pAd->CommonCfg.RegTransmitSetting.field.BW == HT_BW_40) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: Channel=%d Support BW40 but no declare power\n", channel));
+ goto parse_fail;
+ }
+ break;
+ }
+ if (simple_strtol(token, 0, 10) == (long int) 0) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, HT40 Index) = (%d, %d) value is invalid\n", channel, i));
+ goto parse_fail;
}
+ pwr->PwrHT40[i] = simple_strtol(token, 0, 10) * 2;
+ }
#ifdef DOT11_VHT_AC
- if (pwr->StartChannel > 14)
+ if (pwr->StartChannel > 14) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_VHT_LENGTH ; i++)
{
- for ( i= 0 ; i < SINGLE_SKU_TABLE_VHT_LENGTH ; i++ )
- {
- token = rstrtok(NULL ," ");
- if ( token == NULL )
- break;
- pwr->PwrVHT80[i] = simple_strtol(token, 0, 10) *2;
+ token = rstrtok(NULL, " ");
+ if (token == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, VHT Index) = (%d, %d) token is NULL\n", channel, i));
+ goto parse_fail;
+ }
+ if (simple_strtol(token, 0, 10) == 0) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("[Incorrect SingleSKU DAT]: (Channel, VHT Index) = (%d, %d) value is invalid\n", channel, i));
+ goto parse_fail;
}
+ pwr->PwrVHT80[i] = simple_strtol(token, 0, 10) * 2;
}
+ }
#endif /* DOT11_VHT_AC */
- if ( StartCh == NULL )
- {
- StartCh = pwr;
- DlListAddTail(&pAd->SingleSkuPwrList, &pwr->List);
- }
- else
- {
- BOOLEAN isSame = TRUE;
-
- if (pwr->StartChannel <= 14)
- {
- for ( i= 0 ; i < SINGLE_SKU_TABLE_CCK_LENGTH ; i++ )
- {
- if ( StartCh->PwrCCK[i] != pwr->PwrCCK[i] )
- {
+ if (StartCh == NULL) {
+ StartCh = pwr;
+ DlListAddTail(&pAd->SingleSkuPwrList, &pwr->List);
+ } else {
+ BOOLEAN isSame = TRUE;
+
+ if (pwr->StartChannel <= 14) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_CCK_LENGTH ; i++) {
+ if (StartCh->PwrCCK[i] != pwr->PwrCCK[i]) {
isSame = FALSE;
- break;
+ break;
}
- }
}
+ }
- if ( isSame == TRUE )
- {
- for ( i= 0 ; i < SINGLE_SKU_TABLE_OFDM_LENGTH ; i++ )
- {
- if ( StartCh->PwrOFDM[i] != pwr->PwrOFDM[i] )
- {
+ if (isSame == TRUE) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_OFDM_LENGTH ; i++) {
+ if (StartCh->PwrOFDM[i] != pwr->PwrOFDM[i]) {
isSame = FALSE;
break;
}
}
}
- if ( isSame == TRUE )
- {
- for ( i= 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++ )
- {
- if ( StartCh->PwrHT20[i] != pwr->PwrHT20[i] )
- {
+ if (isSame == TRUE) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++) {
+ if (StartCh->PwrHT20[i] != pwr->PwrHT20[i]) {
isSame = FALSE;
break;
}
}
}
- if ( isSame == TRUE )
- {
- for ( i= 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++ )
- {
- if ( StartCh->PwrHT40[i] != pwr->PwrHT40[i] )
- {
+ if (isSame == TRUE) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_HT_LENGTH ; i++) {
+ if (StartCh->PwrHT40[i] != pwr->PwrHT40[i]) {
isSame = FALSE;
break;
}
}
}
-
- if ( isSame == TRUE )
- {
- for ( i= 0 ; i < SINGLE_SKU_TABLE_VHT_LENGTH ; i++ )
- {
- if ( StartCh->PwrVHT80[i] != pwr->PwrVHT80[i] )
- {
+
+ if (isSame == TRUE) {
+ for (i = 0 ; i < SINGLE_SKU_TABLE_VHT_LENGTH ; i++) {
+ if (StartCh->PwrVHT80[i] != pwr->PwrVHT80[i]) {
isSame = FALSE;
break;
}
}
}
- if ( isSame == TRUE )
- {
+ if (isSame == TRUE) {
os_free_mem(NULL, pwr);
- }
- else
- {
+ pwr = NULL;
+ } else {
StartCh = pwr;
DlListAddTail(&pAd->SingleSkuPwrList, &StartCh->List);
pwr = NULL;
}
- }
- StartCh->num ++;
- os_alloc_mem(pAd, (PUCHAR *)&temp, StartCh->num);
- if ( StartCh->Channel != NULL )
- {
- NdisMoveMemory(temp, StartCh->Channel, StartCh->num-1);
- os_free_mem(pAd, StartCh->Channel);
- }
- StartCh->Channel = temp;
- StartCh->Channel[StartCh->num-1] = channel;
}
- }
+ StartCh->num++;
+ os_alloc_mem(pAd, (PUCHAR *)&temp, StartCh->num);
+ if (temp == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s alloc temp fail\n", __func__));
+ goto parse_fail;
}
-
+ if (StartCh->Channel != NULL) {
+ NdisMoveMemory(temp, StartCh->Channel, StartCh->num - 1);
+ os_free_mem(pAd, StartCh->Channel);
+ }
+ StartCh->Channel = temp;
+ StartCh->Channel[StartCh->num-1] = channel;
+ }
+ }
+ status = NDIS_STATUS_SUCCESS;
{
CH_POWER *ch, *ch_temp;
DlListForEachSafe(ch, ch_temp, &pAd->SingleSkuPwrList, CH_POWER, List)
@@ -6102,14 +6153,14 @@ NDIS_STATUS RTMPSetSingleSKUParameters(
for ( i= 0 ; i < SINGLE_SKU_TABLE_CCK_LENGTH ; i++ )
{
DBGPRINT(RT_DEBUG_TRACE,("%d ", ch->PwrCCK[i]));
- }
+ }
DBGPRINT(RT_DEBUG_TRACE,("\n"));
DBGPRINT(RT_DEBUG_TRACE, ("OFDM: "));
for ( i= 0 ; i < SINGLE_SKU_TABLE_OFDM_LENGTH ; i++ )
{
DBGPRINT(RT_DEBUG_TRACE,("%d ", ch->PwrOFDM[i]));
- }
+ }
DBGPRINT(RT_DEBUG_TRACE,("\n"));
DBGPRINT(RT_DEBUG_TRACE, ("HT20: "));
@@ -6135,14 +6186,24 @@ NDIS_STATUS RTMPSetSingleSKUParameters(
}
}
+parse_fail:
+ if (pwr) {
+ os_free_mem(NULL, pwr);
+ pwr = NULL;
+ }
+read_fail:
+ if (buffer) {
+ os_free_mem(NULL, buffer);
+ buffer = NULL;
+ }
+alloc_fail:
/* close file*/
retval = RtmpOSFileClose(srcf);
-free_resource:
+open_fail:
RtmpOSFSInfoChange(&osFSInfo, FALSE);
- os_free_mem(NULL, buffer);
- return TRUE;
+ return status;
}
diff --git a/common/cmm_sanity.c b/common/cmm_sanity.c
index 50892c3..6ebcddb 100755
--- a/common/cmm_sanity.c
+++ b/common/cmm_sanity.c
@@ -1007,7 +1007,7 @@ BOOLEAN PeerBeaconAndProbeRspSanity_Old(
/* Copy to pVIE*/
Ptr = (PUCHAR) pVIE;
- NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+ NdisMoveMemory(Ptr + *LengthVIE, pEid, pEid->Len + 2);
*LengthVIE += (pEid->Len + 2);
}
break;
@@ -1136,7 +1136,7 @@ BOOLEAN PeerBeaconAndProbeRspSanity_Old(
{
UCHAR WscIe[] = {0xdd, 0x00, 0x00, 0x50, 0xF2, 0x04};
Ptr = (PUCHAR) pVIE;
- WscIe[1] = PeerWscIeLen + 4;
+ WscIe[1] = (UCHAR)(PeerWscIeLen + 4);
NdisMoveMemory(Ptr + *LengthVIE, WscIe, 6);
NdisMoveMemory(Ptr + *LengthVIE + 6, pPeerWscIe, PeerWscIeLen);
*LengthVIE += (PeerWscIeLen + 6);
@@ -1921,7 +1921,7 @@ BOOLEAN PeerBeaconAndProbeRspSanity(
/* Copy to pVIE*/
Ptr = (PUCHAR) pVIE;
- NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+ NdisMoveMemory(Ptr + *LengthVIE, pEid, pEid->Len + 2);
*LengthVIE += (pEid->Len + 2);
}
break;
@@ -2062,7 +2062,7 @@ BOOLEAN PeerBeaconAndProbeRspSanity(
{
UCHAR WscIe[] = {0xdd, 0x00, 0x00, 0x50, 0xF2, 0x04};
Ptr = (PUCHAR) pVIE;
- WscIe[1] = PeerWscIeLen + 4;
+ WscIe[1] = (UCHAR)(PeerWscIeLen + 4);
NdisMoveMemory(Ptr + *LengthVIE, WscIe, 6);
NdisMoveMemory(Ptr + *LengthVIE + 6, pPeerWscIe, PeerWscIeLen);
*LengthVIE += (PeerWscIeLen + 6);
diff --git a/common/cmm_sync.c b/common/cmm_sync.c
index 0f12cb9..ccf4464 100755
--- a/common/cmm_sync.c
+++ b/common/cmm_sync.c
@@ -48,7 +48,8 @@ extern UINT16 const Country_Region_GroupNum_5GHZ;
*/
VOID BuildChannelList(RTMP_ADAPTER *pAd)
{
- UCHAR i, j, index=0, num=0;
+ UCHAR i, j;
+ UINT16 index = 0, num = 0;
PCH_DESC pChDesc = NULL;
BOOLEAN bRegionFound = FALSE;
PUCHAR pChannelList = NULL;
@@ -267,7 +268,7 @@ VOID BuildChannelList(RTMP_ADAPTER *pAd)
}
}
- pAd->ChannelListNum = index;
+ pAd->ChannelListNum = (UCHAR)index;
DBGPRINT(RT_DEBUG_TRACE,("CountryCode(2.4G/5G)=%d/%d, RFIC=%d, PHY mode=%d, support %d channels\n",
pAd->CommonCfg.CountryRegion, pAd->CommonCfg.CountryRegionForABand, pAd->RfIcType, pAd->CommonCfg.PhyMode, pAd->ChannelListNum));
@@ -678,7 +679,8 @@ CHAR ConvertToSnr(RTMP_ADAPTER *pAd, UCHAR Snr)
else if (pAd->chipCap.SnrFormula == SNR_FORMULA3)
return (Snr * 3 / 16 ); /* * 0.1881 */
else
- return ((0xeb - Snr) * 3) / 16 ;
+ return (Snr - 16);
+ /*return ((0xeb - Snr) * 3) / 16 ; */
}
diff --git a/common/cmm_tkip.c b/common/cmm_tkip.c
index d64315f..60d27b9 100755
--- a/common/cmm_tkip.c
+++ b/common/cmm_tkip.c
@@ -1023,32 +1023,32 @@ VOID RTMPTkipMixKey(
/* Phase 2, Step 3 */
/* Phase 2, Step 3 */
- tsc0 = (unsigned int)((pnh >> 16) % 65536); /* msb */
- tsc1 = (unsigned int)(pnh % 65536);
- tsc2 = (unsigned int)(pnl % 65536); /* lsb */
+ tsc0 = (unsigned int)((pnh >> 16) % 65536); /* msb */
+ tsc1 = (unsigned int)(pnh % 65536);
+ tsc2 = (unsigned int)(pnl % 65536); /* lsb */
- rc4key[0] = (tsc2 >> 8) % 256;
- rc4key[1] = (((tsc2 >> 8) % 256) | 0x20) & 0x7f;
- rc4key[2] = tsc2 % 256;
- rc4key[3] = ((ppk5 ^ ((256*key[1]) + key[0])) >> 1) % 256;
+ rc4key[0] = (UCHAR)((tsc2 >> 8) % 256);
+ rc4key[1] = (UCHAR)((((tsc2 >> 8) % 256) | 0x20) & 0x7f);
+ rc4key[2] = (UCHAR)(tsc2 % 256);
+ rc4key[3] = (UCHAR)(((ppk5 ^ ((256*key[1]) + key[0])) >> 1) % 256);
- rc4key[4] = ppk0 % 256;
- rc4key[5] = (ppk0 >> 8) % 256;
+ rc4key[4] = (UCHAR)(ppk0 % 256);
+ rc4key[5] = (UCHAR)((ppk0 >> 8) % 256);
- rc4key[6] = ppk1 % 256;
- rc4key[7] = (ppk1 >> 8) % 256;
+ rc4key[6] = (UCHAR)(ppk1 % 256);
+ rc4key[7] = (UCHAR)((ppk1 >> 8) % 256);
- rc4key[8] = ppk2 % 256;
- rc4key[9] = (ppk2 >> 8) % 256;
+ rc4key[8] = (UCHAR)(ppk2 % 256);
+ rc4key[9] = (UCHAR)((ppk2 >> 8) % 256);
- rc4key[10] = ppk3 % 256;
- rc4key[11] = (ppk3 >> 8) % 256;
+ rc4key[10] = (UCHAR)(ppk3 % 256);
+ rc4key[11] = (UCHAR)((ppk3 >> 8) % 256);
- rc4key[12] = ppk4 % 256;
- rc4key[13] = (ppk4 >> 8) % 256;
+ rc4key[12] = (UCHAR)(ppk4 % 256);
+ rc4key[13] = (UCHAR)((ppk4 >> 8) % 256);
- rc4key[14] = ppk5 % 256;
- rc4key[15] = (ppk5 >> 8) % 256;
+ rc4key[14] = (UCHAR)(ppk5 % 256);
+ rc4key[15] = (UCHAR)((ppk5 >> 8) % 256);
}
@@ -1210,7 +1210,7 @@ BOOLEAN RTMPSoftDecryptTKIP(
}
/* Update the total data length */
- *DataByteCnt = plaintext_len;
+ *DataByteCnt = (UINT16)plaintext_len;
#ifdef RT_BIG_ENDIAN
RTMPFrameEndianChange(pAd, pHdr, DIR_READ, FALSE);
diff --git a/common/cmm_usb_io.c b/common/cmm_usb_io.c
index c0fa268..d340e31 100755
--- a/common/cmm_usb_io.c
+++ b/common/cmm_usb_io.c
@@ -150,18 +150,18 @@ NTSTATUS RTUSB_VendorRequest(
do {
RTUSB_CONTROL_MSG(pObj->pUsb_Dev, 0, Request, RequestType, Value,
- Index, pAd->UsbVendorReqBuf, TransferBufferLength,
- CONTROL_TIMEOUT_JIFFIES, RET);
+ Index, pAd->UsbVendorReqBuf, (__u16)TransferBufferLength,
+ CONTROL_TIMEOUT_JIFFIES, RET);
if (RET < 0) {
- DBGPRINT(RT_DEBUG_OFF, ("#RET%d\n",RET));
+ DBGPRINT(RT_DEBUG_OFF, ("#\n"));
if (RET == RTMP_USB_CONTROL_MSG_ENODEV)
{
RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST);
break;
}
RetryCount++;
- RtmpusecDelay(50000); /* wait for 5ms*/
+ RtmpusecDelay(5000); /* wait for 5ms*/
}
} while((RET < 0) && (RetryCount < MAX_VENDOR_REQ_RETRY_COUNT));
@@ -177,7 +177,7 @@ NTSTATUS RTUSB_VendorRequest(
DBGPRINT(RT_DEBUG_ERROR, ("\tRequest Value=0x%04x!\n", Value));
if ((!TransferBuffer) && (TransferBufferLength > 0))
- hex_dump("Failed TransferBuffer value", TransferBuffer, TransferBufferLength);
+ DBGPRINT(RT_DEBUG_ERROR, ("Failed TransferBuffer value\n"));
if (RET == RTMP_USB_CONTROL_MSG_ENODEV)
RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST);
@@ -213,8 +213,8 @@ NDIS_STATUS RTUSBEnqueueCmdFromNdis(
if ((status != NDIS_STATUS_SUCCESS) || (cmdqelmt == NULL))
return (NDIS_STATUS_RESOURCES);
- cmdqelmt->buffer = NULL;
- if (pInformationBuffer != NULL)
+ cmdqelmt->buffer = NULL;
+ if (pInformationBuffer != NULL)
{
status = os_alloc_mem(pAd, (PUCHAR *)&cmdqelmt->buffer, InformationBufferLength);
if ((status != NDIS_STATUS_SUCCESS) || (cmdqelmt->buffer == NULL))
@@ -708,7 +708,9 @@ static NTSTATUS SetAsicWcidHdlr(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelmt)
DBGPRINT_RAW(RT_DEBUG_TRACE, ("CmdThread : CMDTHREAD_SET_ASIC_WCID : WCID = %ld, Tid = %x, SN = %d, BaSize = %d, IsAdd = %d, Ses_type = %d.\n",
SetAsicWcid.WCID, SetAsicWcid.Tid, SetAsicWcid.SN, SetAsicWcid.Basize, SetAsicWcid.IsAdd, SetAsicWcid.Ses_type));
- AsicUpdateBASession(pAd, SetAsicWcid.WCID, SetAsicWcid.Tid, SetAsicWcid.SN, SetAsicWcid.Basize, SetAsicWcid.IsAdd, SetAsicWcid.Ses_type);
+ AsicUpdateBASession(pAd, (UCHAR)SetAsicWcid.WCID,
+ SetAsicWcid.Tid, SetAsicWcid.SN,
+ SetAsicWcid.Basize, SetAsicWcid.IsAdd, SetAsicWcid.Ses_type);
}
return NDIS_STATUS_SUCCESS;
@@ -820,7 +822,7 @@ static NTSTATUS SetClientMACEntryHdlr(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelm
PRT_SET_ASIC_WCID pInfo;
pInfo = (PRT_SET_ASIC_WCID)CMDQelmt->buffer;
- AsicUpdateRxWCIDTable(pAd, pInfo->WCID, pInfo->Addr);
+ AsicUpdateRxWCIDTable(pAd, (USHORT)pInfo->WCID, pInfo->Addr);
return NDIS_STATUS_SUCCESS;
}
@@ -1275,7 +1277,7 @@ static NTSTATUS HwCtrlBcnUpdate(RTMP_ADAPTER *pAd, PCmdQElmt CMDQelmt)
apidx,
&mac_val) == FALSE)
{
- printk("FLUSH fail \n");
+ DBGPRINT(RT_DEBUG_OFF, ("FLUSH fail\n"));
return NDIS_STATUS_FAILURE;
}
@@ -1416,12 +1418,13 @@ static NTSTATUS HwCtrlBcnUpdate(RTMP_ADAPTER *pAd, PCmdQElmt CMDQelmt)
static NTSTATUS HwCtrlBmcCntUpdate(RTMP_ADAPTER *pAd, PCmdQElmt CMDQelmt)
{
CHAR *pfunc_idx, idx = 0;
- pfunc_idx = (CHAR *)CMDQelmt->buffer;
+ UINT32 dummy = 0;
+ pfunc_idx = (CHAR *)CMDQelmt->buffer;
idx = *pfunc_idx;
/* BMC start */
- if (AsicSetBmcQCR(pAd, BMC_CNT_UPDATE, CR_WRITE, idx, NULL)
+ if (AsicSetBmcQCR(pAd, BMC_CNT_UPDATE, CR_WRITE, idx, &dummy)
== FALSE)
{
return NDIS_STATUS_FAILURE;
diff --git a/common/cmm_wpa.c b/common/cmm_wpa.c
index f5fbacb..862125b 100755
--- a/common/cmm_wpa.c
+++ b/common/cmm_wpa.c
@@ -504,9 +504,10 @@ VOID WpaEAPOLKeyAction(
/* Get a specific WCID to record this MBSS key attribute */
GET_GroupKey_WCID(pAd, Wcid, apidx);
- WPAInstallSharedKey(pAd, wdev->GroupKeyWepStatus,
- apidx, wdev->DefaultKeyId, Wcid,
- TRUE, mbss->GTK, LEN_TKIP_GTK);
+ WPAInstallSharedKey(pAd,
+ (UINT8)wdev->GroupKeyWepStatus,
+ apidx, wdev->DefaultKeyId, Wcid,
+ TRUE, mbss->GTK, LEN_TKIP_GTK);
}
else
{
@@ -620,13 +621,14 @@ VOID RTMPToWirelessSta(
RTMP_SET_PACKET_WCID(pPacket, (UCHAR)pEntry->wcid);
// TODO: shiang-usw, fix this!
- RTMP_SET_PACKET_WDEV(pPacket, pEntry->wdev->wdev_idx);
RTMP_SET_PACKET_MOREDATA(pPacket, FALSE);
/* send out the packet */
wdev = pEntry->wdev;
- if (wdev && wdev->tx_pkt_handle)
+ if (wdev && wdev->tx_pkt_handle) {
+ RTMP_SET_PACKET_WDEV(pPacket, pEntry->wdev->wdev_idx);
wdev->tx_pkt_handle(pAd, pPacket);
+ }
else {
DBGPRINT(RT_DEBUG_ERROR, ("%s():Invalid wdev(%p) or tx_pkt_handle(%p)!\n",
__FUNCTION__, wdev, (wdev ? wdev->tx_pkt_handle : NULL)));
@@ -766,10 +768,10 @@ BOOLEAN PeerWpaMessageSanity(
{
unsigned char *tmp = (unsigned char *)pEntry->PTK;
int k=0;
- printk("PTK=>");
+ DBGPRINT(RT_DEBUG_OFF, ("PTK=>"));
for(k=0;k<32;k++)
- printk("%02x", *(tmp+k));
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("%02x", *(tmp+k)));
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
}
#if 0
@@ -949,7 +951,7 @@ VOID WPAStart4WayHS(
/* pointer to the corresponding position*/
pBssid = pMbss->wdev.bssid;
- group_cipher = pMbss->wdev.GroupKeyWepStatus;
+ group_cipher = (UCHAR)pMbss->wdev.GroupKeyWepStatus;
}
#endif /* CONFIG_AP_SUPPORT */
@@ -1148,7 +1150,7 @@ VOID PeerPairMsg1Action(
#endif /* MAC_REPEATER_SUPPORT */
pCurrentAddr = pAd->ApCfg.ApCliTab[IfIndex].wdev.if_addr;
pmk_ptr = pAd->ApCfg.ApCliTab[IfIndex].PMK;
- group_cipher = pAd->ApCfg.ApCliTab[IfIndex].GroupCipher;
+ group_cipher = (UCHAR)pAd->ApCfg.ApCliTab[IfIndex].GroupCipher;
rsnie_ptr = pAd->ApCfg.ApCliTab[IfIndex].RSN_IE;
rsnie_len = pAd->ApCfg.ApCliTab[IfIndex].RSNIE_Len;
}
@@ -1178,7 +1180,7 @@ VOID PeerPairMsg1Action(
{
pCurrentAddr = pAd->CurrentAddress;
pmk_ptr = pAd->StaCfg.PMK;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
rsnie_ptr = pAd->StaCfg.RSN_IE;
rsnie_len = pAd->StaCfg.RSNIE_Len;
}
@@ -1385,7 +1387,7 @@ VOID PeerPairMsg2Action(
pBssid = wdev->bssid;
pmk_ptr = pAd->ApCfg.MBSSID[apidx].PMK;
gtk_ptr = pAd->ApCfg.MBSSID[apidx].GTK;
- group_cipher = wdev->GroupKeyWepStatus;
+ group_cipher = (UCHAR)wdev->GroupKeyWepStatus;
default_key = wdev->DefaultKeyId;
/* Get Group TxTsc form Asic*/
@@ -1409,7 +1411,7 @@ VOID PeerPairMsg2Action(
#ifdef CONFIG_HOTSPOT_R2
if (pAd->ApCfg.MBSSID[apidx].HotSpotCtrl.bASANEnable == 1)
{
- printk("choose OSEN\n");
+ DBGPRINT(RT_DEBUG_OFF, ("choose OSEN\n"));
rsnie_len = OSEN_IELEN;
rsnie_ptr = OSEN_IE;
}
@@ -1500,7 +1502,7 @@ VOID PeerPairMsg2Action(
#ifdef CONFIG_HOTSPOT_R2
if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_OSEN_CAPABLE))
{
- printk("got msg2 derivePTK\n");
+ DBGPRINT(RT_DEBUG_OFF, ("got msg2 derivePTK\n"));
PMF_DerivePTK(pAd,
(UCHAR *)pmk_ptr,
pEntry->ANonce,
@@ -1663,7 +1665,7 @@ VOID WPAPairMsg3Retry(
pBssid = wdev->bssid;
//pmk_ptr = pAd->ApCfg.MBSSID[apidx].PMK;
gtk_ptr = pAd->ApCfg.MBSSID[apidx].GTK;
- group_cipher = wdev->GroupKeyWepStatus;
+ group_cipher = (UCHAR)wdev->GroupKeyWepStatus;
default_key = wdev->DefaultKeyId;
/* Get Group TxTsc form Asic*/
@@ -1724,7 +1726,8 @@ VOID WPAPairMsg3Retry(
}
#endif
/* Construct EAPoL message - Pairwise Msg 3*/
- ConstructEapolMsg(pEntry,
+ if (gtk_ptr)
+ ConstructEapolMsg(pEntry,
group_cipher,
EAPOL_PAIR_MSG_3,
default_key,
@@ -1736,7 +1739,8 @@ VOID WPAPairMsg3Retry(
pEapolFrame);
/* Make outgoing frame*/
- MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pBssid, EAPOL);
+ if (pBssid)
+ MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pBssid, EAPOL);
tr_entry = &pAd->MacTab.tr_entry[pEntry->wcid];
RTMPToWirelessSta(pAd, pEntry, Header802_3, LENGTH_802_3,
(PUCHAR)pEapolFrame,
@@ -1819,7 +1823,7 @@ VOID PeerPairMsg3Action(
else
#endif /* MAC_REPEATER_SUPPORT */
pCurrentAddr = pAd->ApCfg.ApCliTab[IfIndex].wdev.if_addr;
- group_cipher = pAd->ApCfg.ApCliTab[IfIndex].GroupCipher;
+ group_cipher = (UCHAR)pAd->ApCfg.ApCliTab[IfIndex].GroupCipher;
}
#endif /* APCLI_SUPPORT */
@@ -1845,7 +1849,7 @@ VOID PeerPairMsg3Action(
#endif /* P2P_SUPPORT */
{
pCurrentAddr = pAd->CurrentAddress;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
}
}
@@ -2003,9 +2007,9 @@ VOID PeerPairMsg3Action(
STA_PORT_SECURED(pAd);
#endif /* CONFIG_STA_SUPPORT */
DBGPRINT(RT_DEBUG_TRACE, ("PeerPairMsg3Action: AuthMode(%s) PairwiseCipher(%s) GroupCipher(%s) \n",
- GetAuthMode(pEntry->AuthMode),
- GetEncryptType(pEntry->WepStatus),
- GetEncryptType(group_cipher)));
+ GetAuthMode((CHAR)pEntry->AuthMode),
+ GetEncryptType((CHAR)pEntry->WepStatus),
+ GetEncryptType((CHAR)group_cipher)));
}
else
{
@@ -2093,7 +2097,7 @@ VOID PeerPairMsg4Action(
else
apidx = pEntry->func_tb_idx;
- group_cipher = pAd->ApCfg.MBSSID[apidx].wdev.GroupKeyWepStatus;
+ group_cipher = (UCHAR)pAd->ApCfg.MBSSID[apidx].wdev.GroupKeyWepStatus;
}
#endif /* CONFIG_AP_SUPPORT */
@@ -2272,7 +2276,7 @@ VOID PeerPairMsg4Action(
pEntry->IsWNMReqValid = FALSE;
os_free_mem(NULL, req_data);
- printk("!!!!msg 4 send wnm req\n");
+ DBGPRINT(RT_DEBUG_OFF, ("!!!!msg 4 send wnm req\n"));
}
if (pEntry->IsBTMReqValid == TRUE)
{
@@ -2284,7 +2288,7 @@ VOID PeerPairMsg4Action(
pEntry->IsBTMReqValid = FALSE;
os_free_mem(NULL, req_data);
- printk("!!!!msg 4 send btm req\n");
+ DBGPRINT(RT_DEBUG_OFF, ("!!!!msg 4 send btm req\n"));
}
#endif
@@ -2298,10 +2302,10 @@ VOID PeerPairMsg4Action(
#endif /* WIDI_SUPPORT */
DBGPRINT(RT_DEBUG_OFF, ("AP SETKEYS DONE - WPA2, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n",
- pEntry->AuthMode, GetAuthMode(pEntry->AuthMode),
- pEntry->WepStatus, GetEncryptType(pEntry->WepStatus),
- group_cipher,
- GetEncryptType(group_cipher)));
+ pEntry->AuthMode, GetAuthMode((CHAR)pEntry->AuthMode),
+ pEntry->WepStatus, GetEncryptType((CHAR)pEntry->WepStatus),
+ group_cipher,
+ GetEncryptType((CHAR)group_cipher)));
}
else
{
@@ -2346,8 +2350,8 @@ VOID WPAStart2WayGroupHS(
if ((!pEntry) || !IS_ENTRY_CLIENT(pEntry))
return;
- /* delete retry timer*/
- RTMPCancelTimer(&pEntry->RetryTimer, &Cancelled);
+ /* delete retry timer*/
+ RTMPCancelTimer(&pEntry->RetryTimer, &Cancelled);
#ifdef CONFIG_AP_SUPPORT
#ifdef P2P_SUPPORT
@@ -2363,7 +2367,7 @@ VOID WPAStart2WayGroupHS(
else
apidx = pEntry->func_tb_idx;
- group_cipher = pAd->ApCfg.MBSSID[apidx].wdev.GroupKeyWepStatus;
+ group_cipher = (UCHAR)pAd->ApCfg.MBSSID[apidx].wdev.GroupKeyWepStatus;
default_key = pAd->ApCfg.MBSSID[apidx].wdev.DefaultKeyId;
gnonce_ptr = pAd->ApCfg.MBSSID[apidx].GNonce;
gtk_ptr = pAd->ApCfg.MBSSID[apidx].GTK;
@@ -2389,7 +2393,8 @@ VOID WPAStart2WayGroupHS(
ADD_ONE_To_64BIT_VAR(pEntry->R_Counter);
/* Construct EAPoL message - Group Msg 1*/
- ConstructEapolMsg(pEntry,
+ if (gnonce_ptr && gtk_ptr)
+ ConstructEapolMsg(pEntry,
group_cipher,
EAPOL_GROUP_MSG_1,
default_key,
@@ -2404,6 +2409,7 @@ VOID WPAStart2WayGroupHS(
if (pBssid == NULL)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s: pBssid == NULL!\n", __FUNCTION__));
+ os_free_mem(NULL, mpool);
return;
}
@@ -2488,7 +2494,7 @@ VOID PeerGroupMsg1Action(
else
#endif /* MAC_REPEATER_SUPPORT */
pCurrentAddr = pAd->ApCfg.ApCliTab[IfIndex].wdev.if_addr;
- group_cipher = pAd->ApCfg.ApCliTab[IfIndex].GroupCipher;
+ group_cipher = (UCHAR)pAd->ApCfg.ApCliTab[IfIndex].GroupCipher;
default_key = pAd->ApCfg.ApCliTab[IfIndex].wdev.DefaultKeyId;
}
@@ -2499,7 +2505,7 @@ VOID PeerGroupMsg1Action(
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
pCurrentAddr = pAd->CurrentAddress;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
default_key = pAd->StaCfg.wdev.DefaultKeyId;
}
#endif /* CONFIG_STA_SUPPORT */
@@ -2601,9 +2607,9 @@ VOID PeerGroupMsg1Action(
#endif /* CONFIG_STA_SUPPORT */
DBGPRINT(RT_DEBUG_TRACE, ("PeerGroupMsg1Action: AuthMode(%s) PairwiseCipher(%s) GroupCipher(%s) \n",
- GetAuthMode(pEntry->AuthMode),
- GetEncryptType(pEntry->WepStatus),
- GetEncryptType(group_cipher)));
+ GetAuthMode((CHAR)pEntry->AuthMode),
+ GetEncryptType((CHAR)pEntry->WepStatus),
+ GetEncryptType((CHAR)group_cipher)));
/* init header and Fill Packet and send Msg 2 to authenticator */
MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);
@@ -2811,7 +2817,7 @@ VOID PeerGroupMsg2Action(
else
apidx = pEntry->func_tb_idx;
- group_cipher = pAd->ApCfg.MBSSID[apidx].wdev.GroupKeyWepStatus;
+ group_cipher = (UCHAR)pAd->ApCfg.MBSSID[apidx].wdev.GroupKeyWepStatus;
}
#endif /* CONFIG_AP_SUPPORT */
@@ -2834,9 +2840,9 @@ VOID PeerGroupMsg2Action(
RTMPSendWirelessEvent(pAd, IW_SET_KEY_DONE_WPA2_EVENT_FLAG, pEntry->Addr, pEntry->wdev->wdev_idx, 0);
DBGPRINT(RT_DEBUG_OFF, ("AP SETKEYS DONE - WPA2, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n",
- pEntry->AuthMode, GetAuthMode(pEntry->AuthMode),
- pEntry->WepStatus, GetEncryptType(pEntry->WepStatus),
- group_cipher, GetEncryptType(group_cipher)));
+ pEntry->AuthMode, GetAuthMode((CHAR)pEntry->AuthMode),
+ pEntry->WepStatus, GetEncryptType((CHAR)pEntry->WepStatus),
+ group_cipher, GetEncryptType((CHAR)group_cipher)));
}
else
{
@@ -2844,9 +2850,9 @@ VOID PeerGroupMsg2Action(
RTMPSendWirelessEvent(pAd, IW_SET_KEY_DONE_WPA1_EVENT_FLAG, pEntry->Addr, pEntry->wdev->wdev_idx, 0);
DBGPRINT(RT_DEBUG_OFF, ("AP SETKEYS DONE - WPA1, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n",
- pEntry->AuthMode, GetAuthMode(pEntry->AuthMode),
- pEntry->WepStatus, GetEncryptType(pEntry->WepStatus),
- group_cipher, GetEncryptType(group_cipher)));
+ pEntry->AuthMode, GetAuthMode((CHAR)pEntry->AuthMode),
+ pEntry->WepStatus, GetEncryptType((CHAR)pEntry->WepStatus),
+ group_cipher, GetEncryptType((CHAR)group_cipher)));
}
}while(FALSE);
}
@@ -3169,7 +3175,7 @@ VOID KDF(
/* concatenate the length in bits (16-bit unsigned integer)*/
input[total_len] = (len_in_bits & 0xFF);
- input[total_len + 1] = (len_in_bits & 0xFF00) >> 8;
+ input[total_len + 1] = (UCHAR)((len_in_bits & 0xFF00) >> 8);
total_len += 2;
for (i = 1; i <= ((len_in_bits + 255) / 256); i++)
@@ -3453,7 +3459,7 @@ static VOID RTMPMakeRsnIeCipher(
IN UINT WepStatus,
IN UCHAR apidx,
IN BOOLEAN bMixCipher,
- IN UCHAR FlexibleCipher,
+ IN WPA_MIX_PAIR_CIPHER FlexibleCipher,
OUT PUCHAR pRsnIe,
OUT UCHAR *rsn_len)
{
@@ -4935,7 +4941,7 @@ BOOLEAN RTMPParseEapolKeyData(
pApcli_entry = &pAd->ApCfg.ApCliTab[IfIdx];
WPAInstallSharedKey(pAd,
- pApcli_entry->GroupCipher,
+ (UINT8)pApcli_entry->GroupCipher,
BSS0,
DefaultIdx,
APCLI_MCAST_WCID,
@@ -4970,7 +4976,7 @@ BOOLEAN RTMPParseEapolKeyData(
pAd->StaCfg.wdev.DefaultKeyId = DefaultIdx;
WPAInstallSharedKey(pAd,
- pAd->StaCfg.GroupCipher,
+ (UINT8)pAd->StaCfg.GroupCipher,
BSS0,
pAd->StaCfg.wdev.DefaultKeyId,
MCAST_WCID,
@@ -5140,7 +5146,7 @@ VOID ConstructEapolMsg(
#ifdef CONFIG_HOTSPOT_R2
if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_OSEN_CAPABLE))
{
- printk ("OSEN use sha256\n");
+ DBGPRINT(RT_DEBUG_OFF, ("OSEN use sha256\n"));
//KeyDescVer = KEY_DESC_EXT;
KeyDescVer = KEY_DESC_OSEN;
}
@@ -5729,14 +5735,14 @@ CIPHER_KEY *RTMPSwCipherKeySelection(
if (pRxBlk->pRxInfo->U2M)
{
- CipherAlg = pEntry->WepStatus;
+ CipherAlg = (UINT8)pEntry->WepStatus;
}
else
{
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
- CipherAlg = pAd->StaCfg.GroupCipher;
+ CipherAlg = (UINT8)pAd->StaCfg.GroupCipher;
}
#endif /* CONFIG_STA_SUPPORT */
}
@@ -6031,7 +6037,7 @@ PUINT8 WPA_ExtractSuiteFromRSNIE(
{
DBGPRINT(RT_DEBUG_TRACE, ("%s : The count of pairwise cipher is %d\n",
__FUNCTION__, u_cnt));
- *count = u_cnt;
+ *count = (UINT8)u_cnt;
return pRsnie->ucast[0].oui;
}
}
@@ -6072,7 +6078,7 @@ PUINT8 WPA_ExtractSuiteFromRSNIE(
{
DBGPRINT(RT_DEBUG_TRACE, ("%s : The count of pairwise cipher is %d\n",
__FUNCTION__, u_cnt));
- *count = u_cnt;
+ *count = (UINT8)u_cnt;
return pRsnie2->ucast[0].oui;
}
}
@@ -6117,7 +6123,7 @@ PUINT8 WPA_ExtractSuiteFromRSNIE(
{
DBGPRINT(RT_DEBUG_TRACE, ("%s : The count of AKM is %d\n",
__FUNCTION__, a_cnt));
- *count = a_cnt;
+ *count = (UINT8)a_cnt;
return pAkm->auth[0].oui;
}
}
@@ -6203,7 +6209,7 @@ PUINT8 WPA_ExtractSuiteFromRSNIE(
/* Extract PMKID list and its count */
if (type == PMKID_LIST)
{
- *count = p_count;
+ *count = (UINT8)p_count;
return pPmkidList;
}
diff --git a/common/cmm_wpa_adhoc.c b/common/cmm_wpa_adhoc.c
index ee0c5a1..61b22da 100755
--- a/common/cmm_wpa_adhoc.c
+++ b/common/cmm_wpa_adhoc.c
@@ -72,7 +72,7 @@ VOID Adhoc_RTMPGetTxTscFromAsic(
RTMP_IO_READ32(pAd, offset, &IV);
RTMP_IO_READ32(pAd, offset + 4, &EIV);
- *pTxTsc = IV & 0x000000ff;
+ *pTxTsc = IV & 0x000000ff;
*(pTxTsc+1) = IV & 0x0000ff00;
*(pTxTsc+2) = EIV & 0x000000ff;
*(pTxTsc+3) = EIV & 0x0000ff00;
@@ -541,7 +541,7 @@ VOID Adhoc_WpaStart4WayHS(
}
pAuthenticator = &pEntry->WPA_Authenticator;
pBssid = pAd->CommonCfg.Bssid;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
/* delete retry timer */
RTMPCancelTimer(&pAuthenticator->MsgRetryTimer, &Cancelled);
@@ -686,29 +686,29 @@ VOID Adhoc_PeerPairMsg1Action(
if (Elem->MsgLen < (LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H + MIN_LEN_OF_EAPOL_KEY_MSG))
return;
- pCurrentAddr = pAd->CurrentAddress;
- pmk_ptr = pAd->StaCfg.PMK;
- group_cipher = pAd->StaCfg.GroupCipher;
- rsnie_ptr = pAd->StaCfg.RSN_IE;
- rsnie_len = pAd->StaCfg.RSNIE_Len;
-
- /* Store the received frame */
- pMsg1 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];
- MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
+ pCurrentAddr = pAd->CurrentAddress;
+ pmk_ptr = pAd->StaCfg.PMK;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
+ rsnie_ptr = pAd->StaCfg.RSN_IE;
+ rsnie_len = pAd->StaCfg.RSNIE_Len;
+
+ /* Store the received frame */
+ pMsg1 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];
+ MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
- /* Sanity Check peer Pairwise message 1 - Replay Counter */
- if (Adhoc_PeerWpaMessageSanity(pAd, pMsg1, MsgLen, EAPOL_PAIR_MSG_1, pSupplicant, pEntry) == FALSE)
- return;
+ /* Sanity Check peer Pairwise message 1 - Replay Counter */
+ if (Adhoc_PeerWpaMessageSanity(pAd, pMsg1, MsgLen, EAPOL_PAIR_MSG_1, pSupplicant, pEntry) == FALSE)
+ return;
- /* Store Replay counter, it will use to verify message 3 and construct message 2 */
- NdisMoveMemory(pSupplicant->ReplayCounter, pMsg1->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
+ /* Store Replay counter, it will use to verify message 3 and construct message 2 */
+ NdisMoveMemory(pSupplicant->ReplayCounter, pMsg1->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
- /* Store ANonce */
- NdisMoveMemory(pSupplicant->ANonce, pMsg1->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE);
+ /* Store ANonce */
+ NdisMoveMemory(pSupplicant->ANonce, pMsg1->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE);
- /* Generate random SNonce */
- GenRandom(pAd, (UCHAR *)pCurrentAddr, pSupplicant->SNonce);
+ /* Generate random SNonce */
+ GenRandom(pAd, (UCHAR *)pCurrentAddr, pSupplicant->SNonce);
/* Calculate PTK(ANonce, SNonce) */
WpaDerivePTK(pAd,
@@ -720,26 +720,25 @@ VOID Adhoc_PeerPairMsg1Action(
PTK,
LEN_PTK);
- /* Save key to PTK entry */
- NdisMoveMemory(pSupplicant->PTK, PTK, LEN_PTK);
-
- /* Update WpaState */
- pSupplicant->WpaState = AS_PTKINIT_NEGOTIATING;
+ /* Save key to PTK entry */
+ NdisMoveMemory(pSupplicant->PTK, PTK, LEN_PTK);
+
+ /* Update WpaState */
+ pSupplicant->WpaState = AS_PTKINIT_NEGOTIATING;
- /* Allocate memory for output */
- os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
- if (mpool == NULL)
- {
+ /* Allocate memory for output */
+ os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+ if (mpool == NULL) {
DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
return;
}
- pEapolFrame = (PEAPOL_PACKET)mpool;
- NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+ pEapolFrame = (PEAPOL_PACKET)mpool;
+ NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
- /* Construct EAPoL message - Pairwise Msg 2 */
- /* EAPOL-Key(0,1,0,0,P,0,0,SNonce,MIC,DataKD_M2) */
- Adhoc_ConstructEapolMsg(pEntry,
+ /* Construct EAPoL message - Pairwise Msg 2 */
+ /* EAPOL-Key(0,1,0,0,P,0,0,SNonce,MIC,DataKD_M2) */
+ Adhoc_ConstructEapolMsg(pEntry,
group_cipher,
EAPOL_PAIR_MSG_2,
0, /* DefaultKeyIdx */
@@ -751,18 +750,18 @@ VOID Adhoc_PeerPairMsg1Action(
pSupplicant,
pEapolFrame);
- /* Make outgoing frame */
- MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);
+ /* Make outgoing frame */
+ MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);
- tr_entry = &pAd->MacTab.tr_entry[pEntry->wcid];
- RTMPToWirelessSta(pAd, pEntry,
+ tr_entry = &pAd->MacTab.tr_entry[pEntry->wcid];
+ RTMPToWirelessSta(pAd, pEntry,
Header802_3, sizeof(Header802_3), (PUCHAR)pEapolFrame,
CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4,
(tr_entry->PortSecured == WPA_802_1X_PORT_SECURED) ? FALSE : TRUE);
- os_free_mem(NULL, mpool);
+ os_free_mem(NULL, mpool);
- DBGPRINT(RT_DEBUG_TRACE, ("<=== PeerPairMsg1Action: send Msg2 of 4-way \n"));
+ DBGPRINT(RT_DEBUG_TRACE, ("<=== PeerPairMsg1Action: send Msg2 of 4-way \n"));
}
@@ -811,13 +810,13 @@ VOID Adhoc_PeerPairMsg2Action(
if (pAuthenticator->WpaState < AS_PTKSTART)
return;
- pBssid = pAd->CommonCfg.Bssid;
+ pBssid = pAd->CommonCfg.Bssid;
- pmk_ptr = pAd->StaCfg.PMK;
- gtk_ptr = pAd->StaCfg.GTK;
- group_cipher = pAd->StaCfg.GroupCipher;
+ pmk_ptr = pAd->StaCfg.PMK;
+ gtk_ptr = pAd->StaCfg.GTK;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
- default_key = pAd->StaCfg.wdev.DefaultKeyId;
+ default_key = pAd->StaCfg.wdev.DefaultKeyId;
if (pAd->StaCfg.wdev.AuthMode == Ndis802_11AuthModeWPA2PSK)
{
rsnie_len = pAd->StaCfg.RSNIE_Len;
@@ -951,7 +950,7 @@ VOID Adhoc_PeerPairMsg3Action(
return;
pCurrentAddr = pAd->CurrentAddress;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
/* Record 802.11 header & the received EAPOL packet Msg3 */
pHeader = (PHEADER_802_11) Elem->Msg;
@@ -1000,9 +999,9 @@ VOID Adhoc_PeerPairMsg3Action(
pEntry->AuthMode == Ndis802_11AuthModeWPA2)
{
DBGPRINT(RT_DEBUG_TRACE, ("PeerPairMsg3Action: AuthMode(%s) PairwiseCipher(%s) GroupCipher(%s) \n",
- GetAuthMode(pEntry->AuthMode),
- GetEncryptType(pEntry->WepStatus),
- GetEncryptType(group_cipher)));
+ GetAuthMode((CHAR)pEntry->AuthMode),
+ GetEncryptType((CHAR)pEntry->WepStatus),
+ GetEncryptType((CHAR)group_cipher)));
}
/* Init 802.3 header and send out */
@@ -1058,7 +1057,7 @@ VOID Adhoc_PeerPairMsg4Action(
if (pAuthenticator->WpaState < AS_PTKINIT_NEGOTIATING)
break;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
/* pointer to 802.11 header */
pHeader = (PHEADER_802_11)Elem->Msg;
@@ -1113,7 +1112,7 @@ VOID Adhoc_PeerGroupMsg1Action(
pSupplicant = &pEntry->WPA_Supplicant;
pCurrentAddr = pAd->CurrentAddress;
- group_cipher = pAd->StaCfg.GroupCipher;
+ group_cipher = (UCHAR)pAd->StaCfg.GroupCipher;
default_key = pAd->StaCfg.wdev.DefaultKeyId;
/* Process Group Message 1 frame. skip 802.11 header(24) & LLC_SNAP header(8) */
@@ -1164,9 +1163,9 @@ VOID Adhoc_PeerGroupMsg1Action(
#endif /* CONFIG_STA_SUPPORT */
DBGPRINT(RT_DEBUG_TRACE, ("PeerGroupMsg1Action: AuthMode(%s) PairwiseCipher(%s) GroupCipher(%s) \n",
- GetAuthMode(pEntry->AuthMode),
- GetEncryptType(pEntry->WepStatus),
- GetEncryptType(group_cipher)));
+ GetAuthMode((CHAR)pEntry->AuthMode),
+ GetEncryptType((CHAR)pEntry->WepStatus),
+ GetEncryptType((CHAR)group_cipher)));
/* init header and Fill Packet and send Msg 2 to authenticator */
MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);
@@ -1248,10 +1247,10 @@ VOID Adhoc_Wpa4WayComplete(
pAd->IndicateMediaState = NdisMediaStateConnected;
DBGPRINT(RT_DEBUG_OFF, ("Adhoc_Wpa4WayComplete - WPA2, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n",
- pEntry->AuthMode, GetAuthMode(pEntry->AuthMode),
- pEntry->WepStatus, GetEncryptType(pEntry->WepStatus),
- pAd->StaCfg.GroupCipher,
- GetEncryptType(pAd->StaCfg.GroupCipher)));
+ pEntry->AuthMode, GetAuthMode((CHAR)pEntry->AuthMode),
+ pEntry->WepStatus, GetEncryptType((CHAR)pEntry->WepStatus),
+ pAd->StaCfg.GroupCipher,
+ GetEncryptType((CHAR)pAd->StaCfg.GroupCipher)));
}
diff --git a/common/ee_efuse.c b/common/ee_efuse.c
index 213c19a..3231a34 100755
--- a/common/ee_efuse.c
+++ b/common/ee_efuse.c
@@ -370,7 +370,7 @@ VOID eFuseReadPhysical(
for(i = 0; i < Length; i+=2)
{
- EfusePhysicalReadRegisters(pAd, Offset + i, 2, &pOutBuf[i/2]);
+ EfusePhysicalReadRegisters(pAd, (UINT16)(Offset + i), 2, &pOutBuf[i/2]);
}
}
@@ -399,7 +399,7 @@ NTSTATUS eFuseRead(
for(i = 0; i < Length; i+=2)
{
- eFuseReadRegisters(pAd, Offset+i, 2, &pData[i/2]);
+ eFuseReadRegisters(pAd, (UINT16)(Offset+i), 2, &pData[i/2]);
}
return Status;
}
@@ -915,7 +915,7 @@ static VOID eFuseWritePhysical(
/* Therefore, we only need swap data when read the data.*/
for (i=0; i<Length; i+=2)
{
- eFusePhysicalWriteRegisters(pAd, Offset+i, 2, &pValueX[i/2]);
+ eFusePhysicalWriteRegisters(pAd, (USHORT)(Offset+i), 2, &pValueX[i/2]);
}
#ifdef MT76x2
@@ -982,7 +982,7 @@ NTSTATUS eFuseWrite(
for(i=0; i<length; i+=2)
{
- eFuseWriteRegisters(pAd, Offset+i, 2, &pValueX[i/2]);
+ eFuseWriteRegisters(pAd, (USHORT)(Offset+i), 2, &pValueX[i/2]);
}
os_free_mem(NULL, OddWriteByteBuf);
return TRUE;
@@ -1025,7 +1025,7 @@ INT set_eFusedump_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
for (i = 0; i < pAd->chipCap.EFUSE_USAGE_MAP_END/2; i++)
{
- InBuf[0] = 2*i;
+ InBuf[0] = (USHORT)(2*i);
InBuf[1] = 2;
InBuf[2] = 0x0;
@@ -1935,7 +1935,7 @@ INT efuse_probe(RTMP_ADAPTER *pAd)
EFUSE_IO_READ32(pAd, ctrl_reg, &eFuseCtrl);
- printk("%s: efuse = %x\n", __FUNCTION__, eFuseCtrl);
+ DBGPRINT(RT_DEBUG_OFF, ("%s: efuse = %x\n", __func__, eFuseCtrl));
if (pAd->chipCap.hif_type == HIF_MT)
{
@@ -1969,7 +1969,7 @@ VOID rtmp_ee_load_from_efuse(RTMP_ADAPTER *pAd)
NdisZeroMemory(pAd->EEPROMImage, MAX_EEPROM_BIN_FILE_SIZE);
for(i=0; i<MAX_EEPROM_BIN_FILE_SIZE; i+=2)
{
- eFuseRead(pAd, i,&efuse_val, 2);
+ eFuseRead(pAd, (USHORT)i, &efuse_val, 2);
efuse_val = cpu2le16 (efuse_val);
NdisMoveMemory(&pAd->EEPROMImage[i],&efuse_val,2);
}
@@ -1983,8 +1983,8 @@ VOID rtmp_ee_load_from_efuse(RTMP_ADAPTER *pAd)
INT Set_LoadEepromBufferFromEfuse_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
/*long bEnable = simple_strtol(arg, 0, 10);*/
- long *res = NULL;
- int bEnable = kstrtol(arg, 10, res);
+ LONG res;
+ int bEnable = kstrtol(arg, 10, &res);
if (bEnable < 0)
return FALSE;
else
@@ -1998,9 +1998,9 @@ INT Set_LoadEepromBufferFromEfuse_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT set_eFuseBufferModeWriteBack_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
int bEnable;
- long *res = NULL;
+ LONG res;
- bEnable = kstrtol(arg, 10, res);
+ bEnable = kstrtol(arg, 10, &res);
if (bEnable < 0)
return FALSE;
@@ -2015,8 +2015,8 @@ INT set_eFuseBufferModeWriteBack_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT set_BinModeWriteBack_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
- long *res = NULL;
- int bEnable = kstrtol(arg, 10, res);
+ LONG res;
+ int bEnable = kstrtol(arg, 10, &res);
if (bEnable < 0)
return FALSE;
diff --git a/common/eeprom.c b/common/eeprom.c
index c21b96f..2fdb14c 100755
--- a/common/eeprom.c
+++ b/common/eeprom.c
@@ -120,8 +120,8 @@ INT rtmp_read_rssi_langain_from_eeprom(RTMP_ADAPTER *pAd)
#endif /* RT3593 */
{
RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_BG_OFFSET, value);
- pAd->BGRssiOffset[0] = value & 0x00ff;
- pAd->BGRssiOffset[1] = (value >> 8);
+ pAd->BGRssiOffset[0] = (signed char)(value & 0x00ff);
+ pAd->BGRssiOffset[1] = (signed char)(value >> 8);
}
#ifdef RT3593
@@ -146,14 +146,14 @@ INT rtmp_read_rssi_langain_from_eeprom(RTMP_ADAPTER *pAd)
*/
if (IS_MT76x0(pAd))
{
- pAd->ALNAGain1 = (value >> 8);
+ pAd->ALNAGain1 = (CHAR)(value >> 8);
}
else
#endif /* MT76x0 */
{
/* if (IS_RT2860(pAd)) RT2860 supports 3 Rx and the 2.4 GHz RSSI #2 offset is in the EEPROM 0x48*/
- pAd->BGRssiOffset[2] = value & 0x00ff;
- pAd->ALNAGain1 = (value >> 8);
+ pAd->BGRssiOffset[2] = (signed char)(value & 0x00ff);
+ pAd->ALNAGain1 = (CHAR)(value >> 8);
}
}
@@ -166,9 +166,9 @@ INT rtmp_read_rssi_langain_from_eeprom(RTMP_ADAPTER *pAd)
#endif /* RT3593 */
{
RT28xx_EEPROM_READ16(pAd, EEPROM_LNA_OFFSET, value);
- pAd->BLNAGain = value & 0x00ff;
+ pAd->BLNAGain = (CHAR)(value & 0x00ff);
/* External LNA gain for 5GHz Band(CH36~CH64) */
- pAd->ALNAGain0 = (value >> 8);
+ pAd->ALNAGain0 = (CHAR)(value >> 8);
}
#ifdef RT3090
@@ -204,8 +204,8 @@ INT rtmp_read_rssi_langain_from_eeprom(RTMP_ADAPTER *pAd)
#endif /* MT7601 */
{
RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_A_OFFSET, value);
- pAd->ARssiOffset[0] = value & 0x00ff;
- pAd->ARssiOffset[1] = (value >> 8);
+ pAd->ARssiOffset[0] = (signed char)(value & 0x00ff);
+ pAd->ARssiOffset[1] = (signed char)(value >> 8);
}
#ifdef RT3593
@@ -233,8 +233,8 @@ INT rtmp_read_rssi_langain_from_eeprom(RTMP_ADAPTER *pAd)
else
#endif /* MT76x0 */
{
- pAd->ARssiOffset[2] = value & 0x00ff;
- pAd->ALNAGain2 = (value >> 8);
+ pAd->ARssiOffset[2] = (signed char)(value & 0x00ff);
+ pAd->ALNAGain2 = (CHAR)(value >> 8);
}
}
@@ -316,13 +316,13 @@ INT rtmp_read_freq_offset_from_eeprom(RTMP_ADAPTER *pAd)
#ifdef RT6352
if (IS_RT6352(pAd))
{
- pAd->RfFreqOffset = (ULONG)(value & 0x00FF);
+ pAd->RfFreqOffset = (UCHAR)(value & 0x00FF);
}
else
#endif /* RT6352 */
{
if ((value & 0x00FF) != 0x00FF)
- pAd->RfFreqOffset = (ULONG) (value & 0x00FF);
+ pAd->RfFreqOffset = (UCHAR)(value & 0x00FF);
else
pAd->RfFreqOffset = 0;
}
@@ -502,31 +502,6 @@ INT rtmp_read_txpwr_from_eeprom(RTMP_ADAPTER *pAd)
return TRUE;
}
-VOID rtmp_product_random_mac(IN PRTMP_ADAPTER pAd)
-{
- UCHAR SETMAC[3] = {0x00, 0x0c, 0x43};
- ULONG u4SysTime;
- USHORT Addr01, Addr23, Addr45;
-
- u4SysTime = (ULONG) kalGetTimeTick();
- pAd->CurrentAddress[0] = SETMAC[0];
- pAd->CurrentAddress[1] = SETMAC[1];
- pAd->CurrentAddress[2] = SETMAC[2];
-
- kalMemCopy(&pAd->CurrentAddress[3], &u4SysTime, 3);
- Addr01 = (USHORT)(pAd->CurrentAddress[1]<<8) + (USHORT)(pAd->CurrentAddress[0]);
- Addr23 = (USHORT)(pAd->CurrentAddress[3]<<8) + (USHORT)(pAd->CurrentAddress[2]);
- Addr45 = (USHORT)(pAd->CurrentAddress[5]<<8) + (USHORT)(pAd->CurrentAddress[4]);
- DBGPRINT_RAW(RT_DEBUG_OFF, ("translate addr : =%02x:%02x:%02x\n",
- Addr01, Addr23, Addr45));
- RT28xx_EEPROM_WRITE16(pAd, 0x04, Addr01);
- RT28xx_EEPROM_WRITE16(pAd, 0x06, Addr23);
- RT28xx_EEPROM_WRITE16(pAd, 0x08, Addr45);
- DBGPRINT_RAW(RT_DEBUG_OFF, ("Random produced MAC: =%02x:%02x:%02x:%02x:%02x:%02x\n",
- PRINT_MAC(pAd->CurrentAddress)));
- COPY_MAC_ADDR(pAd->PermanentAddress, pAd->CurrentAddress);
-}
-
/*
========================================================================
@@ -572,27 +547,17 @@ INT NICReadEEPROMParameters(RTMP_ADAPTER *pAd, RTMP_STRING *mac_addr)
}
- rtmp_ee_efuse_read16(pAd, 0x4, &Value01);
- rtmp_ee_efuse_read16(pAd, 0x6, &Value23);
- rtmp_ee_efuse_read16(pAd, 0x8, &Value45);
+ RT28xx_EEPROM_READ16(pAd, 0x4, Value01);
+ RT28xx_EEPROM_READ16(pAd, 0x6, Value23);
+ RT28xx_EEPROM_READ16(pAd, 0x8, Value45);
- if (((Value01&0xffff) == 0xffff &&
- (Value23&0xffff) == 0xffff &&
- (Value45&0xffff) == 0xffff) ||
- ((Value01&0xffff) == 0x0 &&
- (Value23&0xffff) == 0x0 &&
- (Value45&0xffff) == 0x0) ||
- ((Value01&0x0200) == 0x0200)) {
- rtmp_product_random_mac(pAd);
- } else {
- DBGPRINT(RT_DEBUG_TRACE, ("Initialize MAC Address from EFUSE!\n"));
- pAd->PermanentAddress[0] = (UCHAR)(Value01 & 0xff);
- pAd->PermanentAddress[1] = (UCHAR)(Value01 >> 8);
- pAd->PermanentAddress[2] = (UCHAR)(Value23 & 0xff);
- pAd->PermanentAddress[3] = (UCHAR)(Value23 >> 8);
- pAd->PermanentAddress[4] = (UCHAR)(Value45 & 0xff);
- pAd->PermanentAddress[5] = (UCHAR)(Value45 >> 8);
- }
+ DBGPRINT(RT_DEBUG_TRACE, ("Initialize MAC Address from EEPROM!\n"));
+ pAd->PermanentAddress[0] = (UCHAR)(Value01 & 0xff);
+ pAd->PermanentAddress[1] = (UCHAR)(Value01 >> 8);
+ pAd->PermanentAddress[2] = (UCHAR)(Value23 & 0xff);
+ pAd->PermanentAddress[3] = (UCHAR)(Value23 >> 8);
+ pAd->PermanentAddress[4] = (UCHAR)(Value45 & 0xff);
+ pAd->PermanentAddress[5] = (UCHAR)(Value45 >> 8);
DBGPRINT(RT_DEBUG_TRACE, ("E2PROM MAC: =%02x:%02x:%02x:%02x:%02x:%02x\n",
PRINT_MAC(pAd->PermanentAddress)));
@@ -604,7 +569,8 @@ INT NICReadEEPROMParameters(RTMP_ADAPTER *pAd, RTMP_STRING *mac_addr)
#if defined(BB_SOC)&&!defined(NEW_MBSSID_MODE)
//BBUPrepareMAC(pAd, pAd->CurrentAddress);
COPY_MAC_ADDR(pAd->PermanentAddress, pAd->CurrentAddress);
- printk("now bb MainSsid mac %02x:%02x:%02x:%02x:%02x:%02x\n",PRINT_MAC(pAd->CurrentAddress));
+ DBGPRINT(RT_DEBUG_TRACE, ("now bb MainSsid mac %02x:%02x:%02x:%02x:%02x:%02x\n",
+ PRINT_MAC(pAd->CurrentAddress)));
#endif
}
else if (mac_addr &&
@@ -801,11 +767,11 @@ INT NICReadEEPROMParameters(RTMP_ADAPTER *pAd, RTMP_STRING *mac_addr)
/* Choose the desired Tx&Rx stream.*/
if ((pAd->CommonCfg.TxStream == 0) || (pAd->CommonCfg.TxStream > Antenna.field.TxPath))
- pAd->CommonCfg.TxStream = Antenna.field.TxPath;
+ pAd->CommonCfg.TxStream = (UCHAR)Antenna.field.TxPath;
if ((pAd->CommonCfg.RxStream == 0) || (pAd->CommonCfg.RxStream > Antenna.field.RxPath))
{
- pAd->CommonCfg.RxStream = Antenna.field.RxPath;
+ pAd->CommonCfg.RxStream = (UCHAR)Antenna.field.RxPath;
if ((pAd->MACVersion != RALINK_3883_VERSION) &&
(pAd->MACVersion != RALINK_2883_VERSION) &&
@@ -1502,7 +1468,7 @@ INT RtmpChipOpsEepromHook(RTMP_ADAPTER *pAd, INT infType,INT forceMode)
if(forceMode != E2P_NONE && forceMode < NUM_OF_E2P_MODE)
{
- e2p_type = forceMode;
+ e2p_type = (UCHAR)forceMode;
DBGPRINT(RT_DEBUG_OFF, ("%s::forceMode: %d , infType: %d\n",
__FUNCTION__, e2p_type, infType));
pAd->eeprom_type = (e2p_type == E2P_EFUSE_MODE) ? EEPROM_EFUSE : EEPROM_FLASH;
@@ -1916,7 +1882,7 @@ INT set_buffer_mode(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
if (value == 0) {
NdisZeroMemory(pAd->EEPROMImage, MAX_EEPROM_BIN_FILE_SIZE);
for (i = 0; i < MAX_EEPROM_BIN_FILE_SIZE; i += 2) {
- eFuseRead(pAd, i, &efuse_val, 2);
+ eFuseRead(pAd, (USHORT)i, &efuse_val, 2);
efuse_val = cpu2le16(efuse_val);
NdisMoveMemory(&pAd->EEPROMImage[i], &efuse_val, 2);
}
diff --git a/common/mlme.c b/common/mlme.c
index 84e8230..27e1b6d 100755
--- a/common/mlme.c
+++ b/common/mlme.c
@@ -850,6 +850,10 @@ VOID RtmpPrepareHwNullFrame(
IN BOOLEAN bWaitACK,
IN CHAR Index)
{
+
+#if defined(MT7603) || defined(MT7628)
+ /* nothing to handle */
+#else
UINT8 TXWISize = pAd->chipCap.TXWISize;
UCHAR *pNullFrame, *tmac_info = (UCHAR *)&pAd->NullTxWI;
NDIS_STATUS NState;
@@ -863,12 +867,6 @@ VOID RtmpPrepareHwNullFrame(
#endif /* P2P_SUPPORT */
MAC_TX_INFO mac_info;
- // TODO: shiang-7603!! fix me
- if (IS_MT7603(pAd) || IS_MT7628(pAd)) {
- DBGPRINT(RT_DEBUG_OFF, ("%s(): MT7603 Not support yet!\n", __FUNCTION__));
- return;
- }
-
NState = MlmeAllocateMemory(pAd, (PUCHAR *)&pNullFrame);
NdisZeroMemory(pNullFrame, 48);
@@ -934,7 +932,7 @@ VOID RtmpPrepareHwNullFrame(
mac_info.NSeq = TRUE;
mac_info.BASize = 0;
- mac_info.WCID = pEntry->Aid;
+ mac_info.WCID = (UCHAR)(pEntry->Aid);
mac_info.Length = Length;
mac_info.TID = 0;
@@ -1016,6 +1014,7 @@ VOID RtmpPrepareHwNullFrame(
if (pNullFrame)
MlmeFreeMemory(pAd, pNullFrame);
+#endif /* defined(MT7603) || defined(MT7628) */
}
@@ -1237,7 +1236,7 @@ VOID MlmeHandler(RTMP_ADAPTER *pAd)
#ifdef APCLI_SUPPORT
case APCLI_AUTH_STATE_MACHINE:
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
#ifdef MAC_REPEATER_SUPPORT
if (apcliIfIndex >= 64)
apcliIfIndex = ((apcliIfIndex - 64) / 16);
@@ -1249,7 +1248,7 @@ VOID MlmeHandler(RTMP_ADAPTER *pAd)
#ifdef MAC_REPEATER_SUPPORT
UCHAR CliIdx = 0;
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
if (apcliIfIndex >= 64)
{
@@ -1268,7 +1267,7 @@ VOID MlmeHandler(RTMP_ADAPTER *pAd)
break;
case APCLI_ASSOC_STATE_MACHINE:
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
#ifdef MAC_REPEATER_SUPPORT
if (apcliIfIndex >= 64)
apcliIfIndex = ((apcliIfIndex - 64) / 16);
@@ -1280,7 +1279,7 @@ VOID MlmeHandler(RTMP_ADAPTER *pAd)
#ifdef MAC_REPEATER_SUPPORT
UCHAR CliIdx = 0;
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
if (apcliIfIndex >= 64)
{
@@ -1295,14 +1294,14 @@ VOID MlmeHandler(RTMP_ADAPTER *pAd)
break;
case APCLI_SYNC_STATE_MACHINE:
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
if(isValidApCliIf(apcliIfIndex))
StateMachinePerformAction(pAd, &pAd->Mlme.ApCliSyncMachine, Elem,
(pAd->ApCfg.ApCliTab[apcliIfIndex].SyncCurrState));
break;
case APCLI_CTRL_STATE_MACHINE:
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
#ifdef MAC_REPEATER_SUPPORT
if (apcliIfIndex >= 64)
apcliIfIndex = ((apcliIfIndex - 64) / 16);
@@ -1314,7 +1313,7 @@ VOID MlmeHandler(RTMP_ADAPTER *pAd)
#ifdef MAC_REPEATER_SUPPORT
UCHAR CliIdx = 0;
- apcliIfIndex = Elem->Priv;
+ apcliIfIndex = (SHORT)Elem->Priv;
if (apcliIfIndex >= 64)
{
@@ -2003,7 +2002,7 @@ VOID MlmeHalt(RTMP_ADAPTER *pAd)
#if (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)
if (!(pAd->WOW_Cfg.bEnable == TRUE) && INFRA_ON(pAd))
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT)*/
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)*/
if (pChipOps->AsicHaltAction)
pChipOps->AsicHaltAction(pAd);
}
@@ -2069,7 +2068,6 @@ NTSTATUS MlmePeriodicExec(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelmt)
SHORT realavgrssi;
#endif /* ANT_DIVERSITY_SUPPORT */
-
/* No More 0x84 MCU CMD from v.30 FW*/
#if 0
#ifdef RTMP_MAC_PCI
@@ -2465,7 +2463,8 @@ NTSTATUS MlmePeriodicExec(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelmt)
{
DBGPRINT(RT_DEBUG_TRACE, ("Current TP=%lu < Threshold(%lu), turn-off TxOP\n",
(((TxTotalByteCnt + RxTotalByteCnt) << 3) >> 20), pAd->CommonCfg.ManualTxopThreshold));
- AsicUpdateTxOP(pAd, WMM_PARAM_AC_1, 0x0);
+ if (!pAd->bLink11b)
+ AsicUpdateTxOP(pAd, WMM_PARAM_AC_1, 0x0);
}
}
else if (pAd->MacTab.Size > 1)
@@ -2635,6 +2634,7 @@ NTSTATUS MlmePeriodicExec(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelmt)
/* the dynamic tuning mechanism below are based on most up-to-date information*/
/* Hint: throughput impact is very serious in the function */
#ifndef RTMP_SDIO_SUPPORT
+ NicUpdatFalseCCACounters(pAd);
NICUpdateRawCounters(pAd);
#endif /*leonardo mark it for FPGA debug*/
RTMP_SECOND_CCA_DETECTION(pAd);
@@ -2898,10 +2898,23 @@ NTSTATUS MlmePeriodicExec(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelmt)
}
#endif /* TDLS_AUTOLINK_SUPPORT */
#endif /* defined(DOT11Z_TDLS_SUPPORT) || defined(CFG_TDLS_SUPPORT) */
+
STAMlmePeriodicExec(pAd);
}
#endif /* CONFIG_STA_SUPPORT */
+
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+#if 0 /* move to MtCmdNICUpdateRawCounters*/
+ pAd->SCSCtrl.PdCount = PDCnt;
+ pAd->SCSCtrl.MdrdyCount = MDRDYCnt;
+ pAd->SCSCtrl.FalseCCA = pAd->RalinkCounters.FalseCCACnt;
+#endif
+
+ if (pAd->SCSCtrl.SCSEnable == SCS_ENABLE)
+ MTSmartCarrierSense(pAd);
+#endif/*SMART_CARRIER_SENSE_SUPPORT */
+
#if defined(RT5370) || defined(RT5372) || defined(RT5390) || defined(RT5392)
if (IS_RT5392(pAd) && ((pAd->MACVersion & 0x0000FFFF) < 0x0223))
{
@@ -4054,6 +4067,13 @@ VOID LinkDownExec(
VOID MlmeAutoScan(RTMP_ADAPTER *pAd)
{
+ if (pAd->MlmeAux.AutoReconnectSsidLen > MAX_LEN_OF_SSID) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s(): invalid SsidLen(%d)\n",
+ __func__, pAd->MlmeAux.AutoReconnectSsidLen));
+ return;
+ }
+
/* check CntlMachine.CurrState to avoid collision with NDIS SetOID request*/
if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)
{
@@ -4719,7 +4739,7 @@ VOID MlmeUpdateTxRates(RTMP_ADAPTER *pAd, BOOLEAN bLinkUp, UCHAR apidx)
#ifdef RT_CFG80211_P2P_SUPPORT
if (apidx >= MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO)
{
- printk("%s: Update for GO\n", __FUNCTION__);
+ DBGPRINT(RT_DEBUG_INFO, ("%s: Update for GO\n", __func__));
wdev = &pAd->ApCfg.MBSSID[CFG_GO_BSSID_IDX].wdev;
break;
}
@@ -4815,7 +4835,7 @@ VOID MlmeUpdateTxRates(RTMP_ADAPTER *pAd, BOOLEAN bLinkUp, UCHAR apidx)
pMinHtPhy = &wdev->MinHTPhyMode;
auto_rate_cur_p = &wdev->bAutoTxRateSwitch;
- HtMcs = wdev->DesiredTransmitSetting.field.MCS;
+ HtMcs = (UCHAR)wdev->DesiredTransmitSetting.field.MCS;
}
pAd->CommonCfg.MaxDesiredRate = MaxDesire;
@@ -5314,7 +5334,7 @@ VOID MlmeUpdateHtTxRates(RTMP_ADAPTER *pAd, UCHAR apidx)
pMaxHtPhy->field.MCS = 32;
}
- pMaxHtPhy->field.MCS = get_ht_max_mcs(pAd, &pDesireHtPhy->MCSSet[0],
+ pMaxHtPhy->field.MCS = (USHORT)get_ht_max_mcs(pAd, &pDesireHtPhy->MCSSet[0],
&pActiveHtPhy->MCSSet[0]);
/* Copy MIN ht rate. rt2860???*/
@@ -5982,6 +6002,11 @@ ULONG BssTableSetEntry(
Idx = BssTableSearch(Tab, ie_list->Bssid, ie_list->Channel);
+ if (Idx >= MAX_LEN_OF_BSS_TABLE && Idx != BSS_NOT_FOUND) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s(): invalid BSS Idx(%ld)\n", __func__, Idx));
+ return BSS_NOT_FOUND;
+ }
if (Idx == BSS_NOT_FOUND)
{
if (Tab->BssNr >= MAX_LEN_OF_BSS_TABLE)
@@ -7218,11 +7243,9 @@ BOOLEAN MlmeEnqueue(
{
INT Tail;
MLME_QUEUE *Queue = (MLME_QUEUE *)&pAd->Mlme.Queue;
+
/* Do nothing if the driver is starting halt state.*/
/* This might happen when timer already been fired before cancel timer with mlmehalt*/
- if (Machine == APCLI_CTRL_STATE_MACHINE)
- DBGPRINT(RT_DEBUG_TRACE, ("army 1debug for the APCLI_CTRL_STATE_MACHINE state:%ld\n",MsgType));
-
if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
return FALSE;
@@ -7272,9 +7295,6 @@ BOOLEAN MlmeEnqueue(
NdisMoveMemory(Queue->Entry[Tail].Msg, Msg, MsgLen);
}
- if (Machine == APCLI_CTRL_STATE_MACHINE)
- DBGPRINT(RT_DEBUG_TRACE, ("army 2debug for the APCLI_CTRL_STATE_MACHINE state:%ld\n",MsgType));
-
NdisReleaseSpinLock(&(Queue->Lock));
#ifdef RELEASE_EXCLUDE
DBGPRINT(RT_DEBUG_INFO, ("MlmeEnqueue, num=%ld\n",Queue->Num));
@@ -7479,7 +7499,7 @@ BOOLEAN MlmeEnqueueForRecv(
NdisMoveMemory(&Queue->Entry[Tail].rssi_info, rssi_info, sizeof(struct raw_rssi_info));
Queue->Entry[Tail].Signal = rssi_info->raw_snr;
Queue->Entry[Tail].Wcid = (UCHAR)Wcid;
- Queue->Entry[Tail].OpMode = (ULONG)OpMode;
+ Queue->Entry[Tail].OpMode = (UCHAR)OpMode;
Queue->Entry[Tail].Channel = pAd->LatchRfRegs.Channel;
Queue->Entry[Tail].Priv = 0;
#ifdef APCLI_SUPPORT
@@ -7906,8 +7926,9 @@ BOOLEAN MsgTypeSubst(RTMP_ADAPTER *pAd, FRAME_802_11 *pFrame, INT *Machine, INT
break;
case SUBTYPE_AUTH:
/* get the sequence number from payload 24 Mac Header + 2 bytes algorithm*/
- NdisMoveMemory(&Seq, &pFrame->Octet[2], sizeof(USHORT));
- NdisMoveMemory(&Alg, &pFrame->Octet[0], sizeof(USHORT));
+ NdisMoveMemory(&Seq, (UCHAR *)pFrame+sizeof(HEADER_802_11)+2, sizeof(USHORT));
+ NdisMoveMemory(&Alg, (UCHAR *)pFrame+sizeof(HEADER_802_11), sizeof(USHORT));
+
if (Seq == 1 || Seq == 3)
{
*Machine = AUTH_RSP_STATE_MACHINE;
@@ -8124,7 +8145,7 @@ UCHAR RandomByte2(RTMP_ADAPTER *pAd)
a &= 0x0000ffff;
b = AsicGetCrcErrCnt(pAd);
b &= 0x0000ffff;
- value = (a<<16)|b;
+ value = (UCHAR)((a<<16)|b);
/*get seed by RSSI or SNR related info */
seed = get_random_seed_by_phy(pAd);
@@ -8328,10 +8349,13 @@ BOOLEAN RTMPCheckHt(
/* Send Assoc Req with my HT capability.*/
pAd->MlmeAux.HtCapability.HtCapInfo.AMsduSize = pAd->CommonCfg.DesiredHtPhy.AmsduSize;
pAd->MlmeAux.HtCapability.HtCapInfo.MimoPs = pAd->CommonCfg.DesiredHtPhy.MimoPs;
- pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor20 = (pAd->CommonCfg.DesiredHtPhy.ShortGIfor20) & (pHtCap->HtCapInfo.ShortGIfor20);
- pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor40 = (pAd->CommonCfg.DesiredHtPhy.ShortGIfor40) & (pHtCap->HtCapInfo.ShortGIfor40);
- pAd->MlmeAux.HtCapability.HtCapInfo.TxSTBC = (pAd->CommonCfg.DesiredHtPhy.TxSTBC)&(pHtCap->HtCapInfo.RxSTBC);
- pAd->MlmeAux.HtCapability.HtCapInfo.RxSTBC = (pAd->CommonCfg.DesiredHtPhy.RxSTBC)&(pHtCap->HtCapInfo.TxSTBC);
+ /* The HT Capabilities element are used to advertise optional HT capabilities of an HT STA.
+ * We shouldn't care about the AP's Capabilities in here
+ */
+ pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor20 = pAd->CommonCfg.DesiredHtPhy.ShortGIfor20;
+ pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor40 = pAd->CommonCfg.DesiredHtPhy.ShortGIfor40;
+ pAd->MlmeAux.HtCapability.HtCapInfo.TxSTBC = pAd->CommonCfg.DesiredHtPhy.TxSTBC;
+ pAd->MlmeAux.HtCapability.HtCapInfo.RxSTBC = pAd->CommonCfg.DesiredHtPhy.RxSTBC;
if (CLIENT_STATUS_TEST_FLAG(sta, fCLIENT_STATUS_HT_RX_LDPC_CAPABLE))
pAd->MlmeAux.HtCapability.HtCapInfo.ht_rx_ldpc = 1;
@@ -8451,16 +8475,16 @@ VOID RTMPUpdateMlmeRate(RTMP_ADAPTER *pAd)
switch (pAd->CommonCfg.PhyMode)
{
- case (WMODE_B):
+ case ((UCHAR)WMODE_B):
ProperMlmeRate = RATE_11;
MinimumRate = RATE_1;
break;
- case (WMODE_B | WMODE_G):
+ case ((UCHAR)(WMODE_B | WMODE_G)):
#ifdef DOT11_N_SUPPORT
- case (WMODE_B | WMODE_G | WMODE_GN | WMODE_A |WMODE_AN):
- case (WMODE_B | WMODE_G | WMODE_GN):
+ case ((UCHAR)(WMODE_B | WMODE_G | WMODE_GN | WMODE_A | WMODE_AN)):
+ case ((UCHAR)(WMODE_B | WMODE_G | WMODE_GN)):
#ifdef DOT11_VHT_AC
- case (WMODE_B | WMODE_G | WMODE_GN | WMODE_A |WMODE_AN | WMODE_AC):
+ case ((UCHAR)(WMODE_B | WMODE_G | WMODE_GN | WMODE_A | WMODE_AN | WMODE_AC)):
#endif /* DOT11_VHT_AC */
#endif /* DOT11_N_SUPPORT */
if ((pAd->MlmeAux.SupRateLen == 4) &&
@@ -8474,21 +8498,21 @@ VOID RTMPUpdateMlmeRate(RTMP_ADAPTER *pAd)
else
MinimumRate = RATE_6;
break;
- case (WMODE_A):
+ case ((UCHAR)WMODE_A):
#ifdef DOT11_N_SUPPORT
- case (WMODE_GN):
- case (WMODE_G | WMODE_GN):
- case (WMODE_A | WMODE_G | WMODE_GN | WMODE_AN):
- case (WMODE_A |WMODE_AN):
- case (WMODE_AN):
+ case ((UCHAR)WMODE_GN):
+ case ((UCHAR)(WMODE_G | WMODE_GN)):
+ case ((UCHAR)(WMODE_A | WMODE_G | WMODE_GN | WMODE_AN)):
+ case ((UCHAR)(WMODE_A | WMODE_AN)):
+ case ((UCHAR)WMODE_AN):
#ifdef DOT11_VHT_AC
- case (WMODE_A | WMODE_G | WMODE_GN | WMODE_AN | WMODE_AC):
+ case ((UCHAR)(WMODE_A | WMODE_G | WMODE_GN | WMODE_AN | WMODE_AC)):
#endif /* DOT11_VHT_AC */
#endif /* DOT11_N_SUPPORT */
ProperMlmeRate = RATE_24;
MinimumRate = RATE_6;
break;
- case (WMODE_A |WMODE_B | WMODE_G):
+ case ((UCHAR)(WMODE_A | WMODE_B | WMODE_G)):
ProperMlmeRate = RATE_24;
if (pAd->MlmeAux.Channel <= 14)
MinimumRate = RATE_1;
@@ -8615,6 +8639,24 @@ CHAR RTMPAvgRssi(RTMP_ADAPTER *pAd, RSSI_SAMPLE *pRssi)
return Rssi;
}
+CHAR RTMPMaxNoise(RTMP_ADAPTER *pAd, CHAR Noise0, CHAR Noise1, CHAR Noise2)
+{
+ CHAR larger = -127;
+
+ if ((pAd->Antenna.field.RxPath == 1) && (Noise0 != 0))
+ larger = Noise0;
+
+ if ((pAd->Antenna.field.RxPath >= 2) && (Noise1 != 0))
+ larger = max(Noise0, Noise1);
+
+ if ((pAd->Antenna.field.RxPath == 3) && (Noise2 != 0))
+ larger = max(larger, Noise2);
+
+ if (larger == -127)
+ larger = 0;
+
+ return larger;
+}
CHAR RTMPMaxRssi(RTMP_ADAPTER *pAd, CHAR Rssi0, CHAR Rssi1, CHAR Rssi2)
{
@@ -8641,6 +8683,24 @@ CHAR RTMPMaxRssi(RTMP_ADAPTER *pAd, CHAR Rssi0, CHAR Rssi1, CHAR Rssi2)
return larger;
}
+CHAR RTMPMinRssi(RTMP_ADAPTER *pAd, CHAR Rssi0, CHAR Rssi1, CHAR Rssi2)
+{
+ CHAR smaller = -127;
+
+ if ((pAd->Antenna.field.RxPath == 1) && (Rssi0 != 0))
+ smaller = Rssi0;
+
+ if ((pAd->Antenna.field.RxPath >= 2) && (Rssi1 != 0))
+ smaller = min(Rssi0, Rssi1);
+
+ if ((pAd->Antenna.field.RxPath == 3) && (Rssi2 != 0))
+ smaller = min(smaller, Rssi2);
+
+ if (smaller == -127)
+ smaller = 0;
+
+ return smaller;
+}
CHAR RTMPMinSnr(RTMP_ADAPTER *pAd, CHAR Snr0, CHAR Snr1)
{
diff --git a/common/mt_ps.c b/common/mt_ps.c
index c4e65ef..b923663 100755
--- a/common/mt_ps.c
+++ b/common/mt_ps.c
@@ -315,7 +315,7 @@ VOID MtHandleRxPsPoll(RTMP_ADAPTER *pAd, UCHAR *pAddr, USHORT wcid, BOOLEAN isAc
if (IsDequeu == TRUE)
{
- RTMPDeQueuePacket(pAd, FALSE, DequeuAC, tr_entry->wcid, DequeuCOUNT);
+ RTMPDeQueuePacket(pAd, FALSE, (UCHAR)DequeuAC, tr_entry->wcid, DequeuCOUNT);
DBGPRINT(RT_DEBUG_INFO | DBG_FUNC_PS, ("RtmpHandleRxPsPoll IsDequeu == TRUE tr_entry->wcid=%x DequeuCOUNT=%d, ps_state=%d\n",tr_entry->wcid, DequeuCOUNT, tr_entry->ps_state));
}
return;
@@ -562,7 +562,8 @@ VOID MtEnqTxSwqFromPsQueue(RTMP_ADAPTER *pAd, UCHAR qidx, STA_TR_ENTRY *tr_entry
if(pAcPsQue->Number > 0 && tr_entry->wcid > 0 && tr_entry->wcid < MAX_LEN_OF_TR_TABLE)
{
rtmp_ps_enq(pAd,tr_entry);
- printk("pAcPsQue->Number=%d,PS:%d\n",pAcPsQue->Number,tr_entry->PsTokenFlag);
+ DBGPRINT(RT_DEBUG_WARN,
+ ("pAcPsQue->Number=%d,PS:%d\n", pAcPsQue->Number, tr_entry->PsTokenFlag));
}
while(pAcPsQue->Head)
diff --git a/common/mtusb_io.c b/common/mtusb_io.c
index 9a7bd28..65c1a9f 100755
--- a/common/mtusb_io.c
+++ b/common/mtusb_io.c
@@ -92,8 +92,8 @@ static NTSTATUS mtusb_multiwrite(RTMP_ADAPTER *pAd,
USBD_TRANSFER_DIRECTION_OUT,
DEVICE_VENDOR_REQUEST_OUT,
0x66,
- (index & 0xffff0000) >> 16,
- (index & 0x0000ffff),
+ (USHORT)((index & 0xffff0000) >> 16),
+ (USHORT)(index & 0x0000ffff),
pSrc,
actLen);
@@ -118,8 +118,10 @@ static NTSTATUS mtusb_multiread(RTMP_ADAPTER *pAd, UINT32 addr, UCHAR *buf, UINT
Status = RTUSB_VendorRequest(pAd, (USBD_TRANSFER_DIRECTION_IN |
USBD_SHORT_TRANSFER_OK),
DEVICE_VENDOR_REQUEST_IN,
- 0x63, (addr & 0xffff0000) >> 16,
- (addr & 0x0000ffff), buf, len);
+ 0x63,
+ (USHORT)((addr & 0xffff0000) >> 16),
+ (USHORT)(addr & 0x0000ffff),
+ buf, len);
return Status;
}
@@ -342,7 +344,7 @@ static NTSTATUS SetClientMACEntryHdlr(IN PRTMP_ADAPTER pAd, IN PCmdQElmt CMDQelm
PRT_SET_ASIC_WCID pInfo;
pInfo = (PRT_SET_ASIC_WCID)CMDQelmt->buffer;
- AsicUpdateRxWCIDTable(pAd, pInfo->WCID, pInfo->Addr);
+ AsicUpdateRxWCIDTable(pAd, (USHORT)(pInfo->WCID), pInfo->Addr);
return NDIS_STATUS_SUCCESS;
}
diff --git a/common/rtmp_init.c b/common/rtmp_init.c
index 314bb9e..84772e9 100755
--- a/common/rtmp_init.c
+++ b/common/rtmp_init.c
@@ -1398,6 +1398,7 @@ VOID UserCfgInit(RTMP_ADAPTER *pAd)
#endif /* RTMP_INTERNAL_TX_ALC || RTMP_TEMPERATURE_COMPENSATION */
#ifdef THERMAL_PROTECT_SUPPORT
+ pAd->switch_tx_stream = FALSE;
pAd->force_one_tx_stream = FALSE;
pAd->last_thermal_pro_temp = 0;
#endif /* THERMAL_PROTECT_SUPPORT */
@@ -2397,7 +2398,7 @@ RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
NdisZeroMemory(pAd->WOW_Cfg.PTK, LEN_PTK);
NdisZeroMemory(pAd->WOW_Cfg.ReplayCounter, LEN_KEY_DESC_REPLAY);
//DBGPRINT(RT_DEBUG_OFF, ("WOW Enable %d, WOWFirmware %d\n", pAd->WOW_Cfg.bEnable, pAd->WOW_Cfg.bWOWFirmware));
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
/* 802.11H and DFS related params*/
pAd->Dot11_H.CSCount = 0;
@@ -2567,6 +2568,19 @@ RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
pAd->FWLoad = 0;
#endif /* LOAD_FW_ONE_TIME */
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ pAd->SCSCtrl.SCSEnable = SCS_ENABLE;
+ pAd->SCSCtrl.SCSMinRssi = 0;
+ pAd->SCSCtrl.SCSStatus = SCS_STATUS_DEFAULT;
+ pAd->SCSCtrl.SCSTrafficThreshold = 62500; /* 500Kbps */
+ pAd->SCSCtrl.CurrSensitivity = -102;
+ pAd->SCSCtrl.AdjustSensitivity = -102;
+ pAd->SCSCtrl.FixedRssiBond = -72;
+ pAd->SCSCtrl.FalseCcaUpBond = 600;
+ pAd->SCSCtrl.FalseCcaLowBond = 60;
+ pAd->SCSCtrl.SCSMinRssiTolerance = 10;
+ pAd->SCSCtrl.ForceMode = 0;
+#endif
pAd->bPS_Retrieve =1;
pAd->CommonCfg.bTXRX_RXV_ON = 0;
@@ -3161,7 +3175,6 @@ INT RtmpRaDevCtrlInit(VOID *pAdSrc, RTMP_INF_TYPE infType)
#ifdef CONFIG_STA_SUPPORT
pAd->OpMode = OPMODE_STA;
DBGPRINT(RT_DEBUG_OFF, ("STA Driver version-%s\n", STA_DRIVER_VERSION));
-// DBGPRINT(RT_DEBUG_OFF, ("Compile time-%s,%s\n", __DATE__, __TIME__));
#endif /* CONFIG_STA_SUPPORT */
#ifdef CONFIG_AP_SUPPORT
@@ -3265,7 +3278,6 @@ INT RtmpRaDevCtrlInit(VOID *pAdSrc, RTMP_INF_TYPE infType)
if (pAd->chipCap.hif_type != HIF_MT)
#endif
{
- printk("JERRY:prepare load_patch..\n");
if (load_patch(pAd) != NDIS_STATUS_SUCCESS) {
DBGPRINT_ERR(("load patch failed!\n"));
return FALSE;
@@ -3490,8 +3502,9 @@ VOID CMDHandler(RTMP_ADAPTER *pAd)
case HWCMD_ID_BMC_CNT_UPDATE:
{
CHAR idx = 0;
- printk("cmd HWCMD_ID_BMC_CNT_UPDATE \n");
- NdisMoveMemory(&idx , pData, sizeof(CHAR));
+ DBGPRINT(RT_DEBUG_INFO,
+ "cmd HWCMD_ID_BMC_CNT_UPDATE \n");
+ NdisMoveMemory(&idx, pData, sizeof(CHAR));
/* BMC start */
AsicSetBmcQCR(pAd, BMC_CNT_UPDATE, CR_WRITE, idx, NULL);
diff --git a/common/rtmp_init_inf.c b/common/rtmp_init_inf.c
index 45f7631..fb9c61a 100755
--- a/common/rtmp_init_inf.c
+++ b/common/rtmp_init_inf.c
@@ -362,8 +362,6 @@ int rt28xx_init(VOID *pAdSrc, RTMP_STRING *pDefaultMac, RTMP_STRING *pHostName)
if (MAX_LEN_OF_MAC_TABLE > MAX_AVAILABLE_CLIENT_WCID(pAd))
{
DBGPRINT(RT_DEBUG_ERROR, ("MAX_LEN_OF_MAC_TABLE can not be larger than MAX_AVAILABLE_CLIENT_WCID!!!!\n"));
- DBGPRINT(RT_DEBUG_ERROR, ("MAX_LEN_OF_MAC_TABLE :%d MAX_AVAILABLE_CLIENT_WCID:%d\n",MAX_LEN_OF_MAC_TABLE,MAX_AVAILABLE_CLIENT_WCID(pAd)));
-
goto err6;
}
@@ -386,6 +384,11 @@ int rt28xx_init(VOID *pAdSrc, RTMP_STRING *pDefaultMac, RTMP_STRING *pHostName)
DBGPRINT(RT_DEBUG_OFF, ("2. Phy Mode = %d\n", pAd->CommonCfg.PhyMode));
RTMP_NET_DEV_NICKNAME_INIT(pAd);
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ /* Backup CR_AGC_0 & CR_AGC_3 value */
+ RTMP_IO_READ32(pAd, CR_AGC_0, &pAd->SCSCtrl.CR_AGC_0_default);
+ RTMP_IO_READ32(pAd, CR_AGC_3, &pAd->SCSCtrl.CR_AGC_3_default);
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
/* After operation mode is finialized, init the AP or STA mode */
#ifdef CONFIG_AP_SUPPORT
@@ -1290,7 +1293,7 @@ VOID RTMPDrvClose(VOID *pAdSrc, VOID *net_dev)
#if ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT)
if (!((pAd->WOW_Cfg.bEnable == TRUE) && INFRA_ON(pAd)))
-#endif /* ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT) */
+#endif /* ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT) */
{
#ifdef MT_MAC
if (pAd->chipCap.hif_type != HIF_MT)
@@ -1378,7 +1381,7 @@ VOID RTMPDrvClose(VOID *pAdSrc, VOID *net_dev)
CmdExtPmStateCtrl(pAd, BSSID_WCID, PM4, ENTER_PM_STATE);
}
else
-#endif /* ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT) */
+#endif /* ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT) */
MlmeRadioOff(pAd);
}
#endif /* CONFIG_STA_SUPPORT */
@@ -1502,11 +1505,7 @@ VOID RTMPDrvClose(VOID *pAdSrc, VOID *net_dev)
DlListForEachSafe(ch, ch_temp, &pAd->SingleSkuPwrList, CH_POWER, List)
{
DlListDel(&ch->List);
-#ifdef MT7601
- if (IS_MT7601(pAd)) {
- os_free_mem(NULL, ch->Channel);
- }
-#endif /* MT7601 */
+ os_free_mem(NULL, ch->Channel);
os_free_mem(NULL, ch);
}
}
@@ -1663,7 +1662,7 @@ VOID RTMPInfClose(VOID *pAdSrc)
#if ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT)
/* In WOW state, can't issue disassociation reqeust */
pAd->WOW_Cfg.bEnable == FALSE &&
-#endif /* ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT) */
+#endif /* ((defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) defined(MT_WOW_SUPPORT)) && defined(WOW_IFDOWN_SUPPORT) */
(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)))
{
MLME_DISASSOC_REQ_STRUCT DisReq;
@@ -1916,6 +1915,10 @@ PNET_DEV RtmpPhyNetDevMainCreate(VOID *pAdSrc)
#endif /* HOSTAPD_SUPPORT */
dev_name = get_dev_name_prefix(pAd, INT_MAIN);
+ if (dev_name == NULL) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s():dev_name NULL\n", __func__));
+ return NULL;
+ }
pDevNew = RtmpOSNetDevCreate((INT32)MC_RowID, (UINT32 *)&IoctlIF,
INT_MAIN, 0, sizeof(struct mt_dev_priv), dev_name);
diff --git a/common/rtusb_bulk.c b/common/rtusb_bulk.c
index a319032..459c6fe 100755
--- a/common/rtusb_bulk.c
+++ b/common/rtusb_bulk.c
@@ -145,6 +145,10 @@ VOID RTUSBInitTxDesc(
pUrb = pTxContext->pUrb;
ASSERT(pUrb);
+ if (BulkOutPipeId >= 5) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s:Invalid BulkOutPipeId\n", __func__));
+ return;
+ }
/* Store BulkOut PipeId*/
pTxContext->BulkOutPipeId = BulkOutPipeId;
@@ -291,6 +295,10 @@ VOID RTUSBInitHTTxDesc(
#endif /* USB_BULK_BUF_ALIGMENT */
ASSERT(pUrb);
+ if (BulkOutPipeId >= 5) {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s:Invalid BulkOutPipeId\n", __FUNCTION__));
+ return;
+ }
/* Store BulkOut PipeId*/
pTxContext->BulkOutPipeId = BulkOutPipeId;
@@ -1184,6 +1192,7 @@ VOID RTUSBBulkOutDataPacket(RTMP_ADAPTER *pAd, UCHAR BulkOutPipeId, UCHAR Index)
#else
padding = (4 - (txd_0->tx_byte_cnt % 4)) & 0x03;
ThisBulkSize += txd_0->tx_byte_cnt+padding;
+ pAd->RalinkCounters.OneSecTransmittedByteCount += (txd_0->tx_byte_cnt+padding);
TmpBulkEndPos += txd_0->tx_byte_cnt+padding;
#endif /* MT_MAC */
@@ -1454,7 +1463,7 @@ VOID RTUSBBulkOutNullFrame(
PTX_CONTEXT pNullContext = &(pAd->NullContext);
PURB pUrb;
int ret = 0;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
RTMP_IRQ_LOCK(&pAd->BulkOutLock[MGMTPIPEIDX], IrqFlags);
if ((pAd->BulkOutPending[MGMTPIPEIDX] == TRUE) || RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NEED_STOP_TX))
@@ -1479,7 +1488,7 @@ VOID RTUSBBulkOutNullFrame(
#endif /* RT_BIG_ENDIAN */
/* Init Tx context descriptor*/
- RTUSBInitTxDesc(pAd, pNullContext, MGMTPIPEIDX, (usb_complete_t)RtmpUsbBulkOutNullFrameComplete);
+ RTUSBInitTxDesc(pAd, pNullContext, EDCA_BMC_PIPE, (usb_complete_t)RtmpUsbBulkOutNullFrameComplete);
pUrb = pNullContext->pUrb;
@@ -1551,7 +1560,7 @@ VOID RTUSBBulkOutMLMEPacket(
PTX_CONTEXT pMLMEContext;
PURB pUrb;
int ret = 0;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
pMLMEContext = (PTX_CONTEXT)pAd->MgmtRing.Cell[pAd->MgmtRing.TxDmaIdx].AllocVa;
pUrb = pMLMEContext->pUrb;
@@ -1606,7 +1615,7 @@ VOID RTUSBBulkOutMLMEPacket(
#endif /* RT_BIG_ENDIAN */
/* Init Tx context descriptor*/
- RTUSBInitTxDesc(pAd, pMLMEContext, MGMTPIPEIDX, (usb_complete_t)RtmpUsbBulkOutMLMEPacketComplete);
+ RTUSBInitTxDesc(pAd, pMLMEContext, EDCA_BMC_PIPE, (usb_complete_t)RtmpUsbBulkOutMLMEPacketComplete);
RTUSB_URB_DMA_MAPPING(pUrb);
@@ -1661,7 +1670,7 @@ VOID RTUSBBulkOutBCNPacket(
PTX_CONTEXT pBcnContext;
PURB pUrb;
int ret = 0;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
pBcnContext = (PTX_CONTEXT)pAd->BcnRing.Cell[pAd->BcnRing.TxDmaIdx].AllocVa;
pUrb = pBcnContext->pUrb;
@@ -1708,7 +1717,7 @@ VOID RTUSBBulkOutBCNPacket(
#endif /* RT_BIG_ENDIAN */
/* Init Tx context descriptor*/
- RTUSBInitTxDesc(pAd, pBcnContext, MGMTPIPEIDX, (usb_complete_t)RTUSBBulkOutBCNPacketComplete);
+ RTUSBInitTxDesc(pAd, pBcnContext, EDCA_BMC_PIPE, (usb_complete_t)RTUSBBulkOutBCNPacketComplete);
RTUSB_URB_DMA_MAPPING(pUrb);
@@ -1773,7 +1782,7 @@ VOID RTUSBBulkOutPsPoll(
PTX_CONTEXT pPsPollContext = &(pAd->PsPollContext);
PURB pUrb;
int ret = 0;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
RTMP_IRQ_LOCK(&pAd->BulkOutLock[0], IrqFlags);
if ((pAd->BulkOutPending[0] == TRUE) || RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NEED_STOP_TX))
@@ -1795,7 +1804,7 @@ VOID RTUSBBulkOutPsPoll(
#endif /* RT_BIG_ENDIAN */
/* Init Tx context descriptor*/
- RTUSBInitTxDesc(pAd, pPsPollContext, /*MGMTPIPEIDX*/0, (usb_complete_t)RtmpUsbBulkOutPsPollComplete);
+ RTUSBInitTxDesc(pAd, pPsPollContext, EDCA_BMC_PIPE, (usb_complete_t)RtmpUsbBulkOutPsPollComplete);
pUrb = pPsPollContext->pUrb;
@@ -2013,7 +2022,7 @@ VOID DoBulkIn(IN RTMP_ADAPTER *pAd)
VOID RTUSBBulkReceive(RTMP_ADAPTER *pAd)
{
PRX_CONTEXT pRxContext;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NEED_STOP_HANDLE_RX)
&& !RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_POLL_IDLE))
@@ -2161,7 +2170,7 @@ VOID RTUSBKickBulkOut(
else if ((RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_MLME)) ||
(pAd->MgmtRing.TxSwFreeIdx < MGMT_RING_SIZE))
{
- RTUSBBulkOutMLMEPacket(pAd, pAd->MgmtRing.TxDmaIdx);
+ RTUSBBulkOutMLMEPacket(pAd, (UCHAR)pAd->MgmtRing.TxDmaIdx);
}
#ifdef MT_MAC
@@ -2169,7 +2178,7 @@ VOID RTUSBKickBulkOut(
else if ((RTUSB_TEST_BULK_FLAG(pAd, fRTUSB_BULK_OUT_BCN)) ||
(pAd->BcnRing.TxSwFreeIdx < BCN_RING_SIZE))
{
- RTUSBBulkOutBCNPacket(pAd, pAd->BcnRing.TxDmaIdx);
+ RTUSBBulkOutBCNPacket(pAd, (UCHAR)pAd->BcnRing.TxDmaIdx);
}
#endif
#ifdef USE_BMC
diff --git a/common/rtusb_dev_id.c b/common/rtusb_dev_id.c
index 2fee679..7e931b6 100755
--- a/common/rtusb_dev_id.c
+++ b/common/rtusb_dev_id.c
@@ -286,7 +286,7 @@ USB_DEVICE_ID rtusb_dev_id[] = {
#endif /* MT7601U */
#ifdef MT7603
- {USB_DEVICE(0x0e8d,0x7603)},
+ {USB_DEVICE(0x0E8D,0x7603)},
#endif
#ifdef MT7636
{USB_DEVICE(0x0E8D,0x7606)},
diff --git a/common/scan.c b/common/scan.c
index 9bfc835..3d9d049 100755
--- a/common/scan.c
+++ b/common/scan.c
@@ -94,18 +94,18 @@ static INT scan_ch_restore(RTMP_ADAPTER *pAd, UCHAR OpMode)
if (INFRA_ON(pAd))
{
bw = pAd->StaCfg.wdev.bw;
- bbp_set_bw(pAd, bw);
+ bbp_set_bw(pAd, (UINT8)bw);
}
else if (RTMP_CFG80211_VIF_P2P_GO_ON(pAd) && (ch != p2p_wdev->channel) && (p2p_wdev->CentralChannel != 0))
{
bw = p2p_wdev->bw;
- bbp_set_bw(pAd, bw);
+ bbp_set_bw(pAd, (UINT8)bw);
}
else if (RTMP_CFG80211_VIF_P2P_CLI_ON(pAd) && (ch != p2p_wdev->channel) && (p2p_wdev->CentralChannel != 0))
{
bw = p2p_wdev->bw;
- bbp_set_bw(pAd, bw);
+ bbp_set_bw(pAd, (UINT8)bw);
}
/*If GO start, we need to change to GO Channel*/
if (INFRA_ON(pAd))
@@ -118,11 +118,12 @@ static INT scan_ch_restore(RTMP_ADAPTER *pAd, UCHAR OpMode)
#endif /* defined(RT_CFG80211_SUPPORT) && defined(RT_CFG80211_P2P_CONCURRENT_DEVICE) */
ASSERT((ch != 0));
- AsicSwitchChannel(pAd, ch, FALSE);
- AsicLockChannel(pAd, ch);
+ AsicSwitchChannel(pAd, (UCHAR)ch, FALSE);
+ AsicLockChannel(pAd, (UCHAR)ch);
- printk("SYNC - End of SCAN, restore to %dMHz channel %d, Total BSS[%02d]\n",
- bw, ch, pAd->ScanTab.BssNr);
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("SYNC - End of SCAN, restore to %dMHz channel %d, Total BSS[%02d]\n",
+ bw, ch, pAd->ScanTab.BssNr));
@@ -269,6 +270,7 @@ static INT scan_active(RTMP_ADAPTER *pAd, UCHAR OpMode, UCHAR ScanType)
#ifdef CONFIG_STA_SUPPORT
USHORT Status;
#endif /* CONFIG_STA_SUPPORT */
+ UINT i;
if (MlmeAllocateMemory(pAd, &frm_buf) != NDIS_STATUS_SUCCESS)
{
@@ -648,8 +650,8 @@ static INT scan_active(RTMP_ADAPTER *pAd, UCHAR OpMode, UCHAR ScanType)
}
#endif /* WFA_WFD_SUPPORT */
#endif /* P2P_SUPPORT */
-
- MiniportMMRequest(pAd, 0, frm_buf, FrameLen);
+ for (i = 0; i < 3; i++)
+ MiniportMMRequest(pAd, 0, frm_buf, FrameLen);
#ifdef CONFIG_STA_SUPPORT
if (OpMode == OPMODE_STA)
@@ -745,10 +747,13 @@ VOID ScanNextChannel(RTMP_ADAPTER *pAd, UCHAR OpMode)
/* Since the Channel List is from Upper layer */
if (CFG80211DRV_OpsScanRunning(pAd) && !ScanPending)
{
+#ifndef CCN3_TV_SUPPORT
if (RTMP_CFG80211_VIF_P2P_GO_ON(pAd))
{
DBGPRINT(RT_DEBUG_OFF, ("%s():Scan Only Go Channel %d\n", __FUNCTION__, pAd->CommonCfg.Channel));
- while((pAd->ScanCtrl.Channel = CFG80211DRV_OpsScanGetNextChannel(pAd)) && pAd->CommonCfg.Channel != 0)
+ while ((pAd->ScanCtrl.Channel =
+ (UCHAR)CFG80211DRV_OpsScanGetNextChannel(pAd))
+ && pAd->CommonCfg.Channel != 0)
{
if(pAd->ScanCtrl.Channel == pAd->CommonCfg.Channel)
{
@@ -758,8 +763,11 @@ VOID ScanNextChannel(RTMP_ADAPTER *pAd, UCHAR OpMode)
}
else
{
- pAd->ScanCtrl.Channel = CFG80211DRV_OpsScanGetNextChannel(pAd);
+#endif /* ifndef CCN3_TV_SUPPORT */
+ pAd->ScanCtrl.Channel = (UCHAR)CFG80211DRV_OpsScanGetNextChannel(pAd);
+#ifndef CCN3_TV_SUPPORT
}
+#endif /* ifndef CCN3_TV_SUPPORT */
}
#endif /* RT_CFG80211_SUPPORT */
#endif /* CONFIG_STA_SUPPORT */
@@ -924,7 +932,8 @@ VOID ScanNextChannel(RTMP_ADAPTER *pAd, UCHAR OpMode)
int i;
for (i = 0; i < pAd->MlmeAux.params.num_ssids; ++i) {
/* record desired BSS parameters */
- pAd->ScanCtrl.SsidLen = pAd->MlmeAux.params.ssids[i].ssid_len;
+ pAd->ScanCtrl.SsidLen =
+ (UCHAR)pAd->MlmeAux.params.ssids[i].ssid_len;
NdisMoveMemory(pAd->ScanCtrl.Ssid, pAd->MlmeAux.params.ssids[i].ssid, pAd->MlmeAux.params.ssids[i].ssid_len);
if (scan_active(pAd, OpMode, ScanType) == FALSE)
return;
diff --git a/common/spectrum.c b/common/spectrum.c
index 98b4917..7a4c589 100755
--- a/common/spectrum.c
+++ b/common/spectrum.c
@@ -279,7 +279,7 @@ CHAR RTMP_GetTxPwr(RTMP_ADAPTER *pAd, HTTRANSMIT_SETTING HTTxMode)
case MODE_CCK:
case MODE_OFDM:
Value = TxPwr[1];
- TxPwrRef = (Value & 0x00000f00) >> 8;
+ TxPwrRef = (UINT8)((Value & 0x00000f00) >> 8);
break;
@@ -289,23 +289,23 @@ CHAR RTMP_GetTxPwr(RTMP_ADAPTER *pAd, HTTRANSMIT_SETTING HTTxMode)
if (pAd->CommonCfg.TxStream == 1)
{
Value = TxPwr[2];
- TxPwrRef = (Value & 0x00000f00) >> 8;
+ TxPwrRef = (UINT8)((Value & 0x00000f00) >> 8);
}
else if (pAd->CommonCfg.TxStream == 2)
{
Value = TxPwr[3];
- TxPwrRef = (Value & 0x00000f00) >> 8;
+ TxPwrRef = (UINT8)((Value & 0x00000f00) >> 8);
}
break;
#endif /* DOT11_N_SUPPORT */
}
- PhyMode =
+ PhyMode = (UINT8)(
#ifdef DOT11_N_SUPPORT
(HTTxMode.field.MODE == MODE_HTGREENFIELD)
? MODE_HTMIX :
#endif /* DOT11_N_SUPPORT */
- HTTxMode.field.MODE;
+ HTTxMode.field.MODE);
for (Idx = 0; Idx < MAX_TXPWR_TAB_SIZE; Idx++)
{
@@ -1891,7 +1891,7 @@ static VOID PeerChSwAnnAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
if (pAd->OpMode == OPMODE_STA)
{
Bssidx = BssTableSearch(&pAd->ScanTab, pFr->Hdr.Addr3, pAd->CommonCfg.Channel);
- if (Bssidx == BSS_NOT_FOUND)
+ if (Bssidx == BSS_NOT_FOUND || Bssidx >= ARRAY_SIZE(pAd->ScanTab.BssEntry))
{
DBGPRINT(RT_DEBUG_TRACE, ("PeerChSwAnnAction - Bssidx is not found\n"));
return;
@@ -2231,7 +2231,7 @@ INT Set_MeasureReq_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
break;
case 2: /* Measurement Request Type.*/
- MeasureReqType = simple_strtol(thisChar, 0, 16);
+ MeasureReqType = (UINT8)simple_strtol(thisChar, 0, 16);
if (MeasureReqType > 3)
{
DBGPRINT(RT_DEBUG_ERROR, ("%s: unknow MeasureReqType(%d)\n", __FUNCTION__, MeasureReqType));
@@ -2369,7 +2369,7 @@ typedef struct __PWR_CONSTRAIN_CFG
{
if (DaltaPwr < PwrConstrainTab[Idx].Attenuation)
{
- pAd->CommonCfg.PwrConstraint = Value;
+ pAd->CommonCfg.PwrConstraint = (UINT8)Value;
pAd->CommonCfg.TxPowerPercentage =
PwrConstrainTab[Idx].TxPowerPercentage;
diff --git a/common/sys_log.c b/common/sys_log.c
index bd5e6df..c6cfb34 100755
--- a/common/sys_log.c
+++ b/common/sys_log.c
@@ -251,7 +251,7 @@ VOID RtmpDrvSendWirelessEvent(
pBufPtr += sprintf(pBufPtr, "%s", "unknown event");
pBufPtr[pBufPtr - pBuf] = '\0';
- BufLen = pBufPtr - pBuf;
+ BufLen = (USHORT)(pBufPtr - pBuf);
RtmpOSWrielessEventSend(pAd->net_dev, RT_WLAN_EVENT_CUSTOM, Event_flag, NULL, (PUCHAR)pBuf, BufLen);
/*DBGPRINT(RT_DEBUG_TRACE, ("%s : %s\n", __FUNCTION__, pBuf)); */
diff --git a/common/txpower.c b/common/txpower.c
index 2aa1c01..491e35e 100755
--- a/common/txpower.c
+++ b/common/txpower.c
@@ -749,8 +749,8 @@ VOID AsicGetAutoAgcOffsetForExternalTxAlc(
}
#endif /* RT3883 */
- *pTxAgcCompensate = -(TxAgcStep * (idx-1));
- DeltaPwr += (*pTxAgcCompensate);
+ *pTxAgcCompensate = (CHAR)(-(TxAgcStep * (idx-1)));
+ DeltaPwr += (CHAR)(*pTxAgcCompensate);
DBGPRINT(RT_DEBUG_TRACE, ("-- Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = -%d\n",
BbpR49.byte, TssiRef, TxAgcStep, idx-1));
}
@@ -774,7 +774,7 @@ VOID AsicGetAutoAgcOffsetForExternalTxAlc(
#endif /* RT3883 */
/* The index is the step we should increase, idx = 0 means there is nothing to compensate */
- *pTxAgcCompensate = TxAgcStep * (idx-1);
+ *pTxAgcCompensate = (CHAR)(TxAgcStep * (idx-1));
DeltaPwr += (*pTxAgcCompensate);
DBGPRINT(RT_DEBUG_TRACE, ("++ Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n",
BbpR49.byte, TssiRef, TxAgcStep, idx-1));
@@ -1660,70 +1660,70 @@ VOID RTMPReadTxPwrPerRate(RTMP_ADAPTER *pAd)
if (bApwrdeltaMinus == FALSE)
{
- t1 = value_1+(Apwrdelta);
+ t1 = (UCHAR)(value_1+(Apwrdelta));
if (t1 > 0xf)
t1 = 0xf;
- t2 = value_2+(Apwrdelta);
+ t2 = (UCHAR)(value_2+(Apwrdelta));
if (t2 > 0xf)
t2 = 0xf;
- t3 = value_3+(Apwrdelta);
+ t3 = (UCHAR)(value_3+(Apwrdelta));
if (t3 > 0xf)
t3 = 0xf;
- t4 = value_4+(Apwrdelta);
+ t4 = (UCHAR)(value_4+(Apwrdelta));
if (t4 > 0xf)
t4 = 0xf;
}
else
{
if (value_1 > Apwrdelta)
- t1 = value_1-(Apwrdelta);
+ t1 = (UCHAR)(value_1-(Apwrdelta));
else
t1 = 0;
if (value_2 > Apwrdelta)
- t2 = value_2-(Apwrdelta);
+ t2 = (UCHAR)(value_2-(Apwrdelta));
else
t2 = 0;
if (value_3 > Apwrdelta)
- t3 = value_3-(Apwrdelta);
+ t3 = (UCHAR)(value_3-(Apwrdelta));
else
t3 = 0;
if (value_4 > Apwrdelta)
- t4 = value_4-(Apwrdelta);
+ t4 = (UCHAR)(value_4-(Apwrdelta));
else
t4 = 0;
}
Adata = t1 + (t2<<4) + (t3<<8) + (t4<<12);
if (bGpwrdeltaMinus == FALSE)
{
- t1 = value_1+(Gpwrdelta);
+ t1 = (UCHAR)(value_1+(Gpwrdelta));
if (t1 > 0xf)
t1 = 0xf;
- t2 = value_2+(Gpwrdelta);
+ t2 = (UCHAR)(value_2+(Gpwrdelta));
if (t2 > 0xf)
t2 = 0xf;
- t3 = value_3+(Gpwrdelta);
+ t3 = (UCHAR)(value_3+(Gpwrdelta));
if (t3 > 0xf)
t3 = 0xf;
- t4 = value_4+(Gpwrdelta);
+ t4 = (UCHAR)(value_4+(Gpwrdelta));
if (t4 > 0xf)
t4 = 0xf;
}
else
{
if (value_1 > Gpwrdelta)
- t1 = value_1-(Gpwrdelta);
+ t1 = (UCHAR)(value_1-(Gpwrdelta));
else
t1 = 0;
if (value_2 > Gpwrdelta)
- t2 = value_2-(Gpwrdelta);
+ t2 = (UCHAR)(value_2-(Gpwrdelta));
else
t2 = 0;
if (value_3 > Gpwrdelta)
- t3 = value_3-(Gpwrdelta);
+ t3 = (UCHAR)(value_3-(Gpwrdelta));
else
t3 = 0;
if (value_4 > Gpwrdelta)
- t4 = value_4-(Gpwrdelta);
+ t4 = (UCHAR)(value_4-(Gpwrdelta));
else
t4 = 0;
}
@@ -1739,70 +1739,70 @@ VOID RTMPReadTxPwrPerRate(RTMP_ADAPTER *pAd)
if (bApwrdeltaMinus == FALSE)
{
- t1 = value_1+(Apwrdelta);
+ t1 = (UCHAR)(value_1+(Apwrdelta));
if (t1 > 0xf)
t1 = 0xf;
- t2 = value_2+(Apwrdelta);
+ t2 = (UCHAR)(value_2+(Apwrdelta));
if (t2 > 0xf)
t2 = 0xf;
- t3 = value_3+(Apwrdelta);
+ t3 = (UCHAR)(value_3+(Apwrdelta));
if (t3 > 0xf)
t3 = 0xf;
- t4 = value_4+(Apwrdelta);
+ t4 = (UCHAR)(value_4+(Apwrdelta));
if (t4 > 0xf)
t4 = 0xf;
}
else
{
if (value_1 > Apwrdelta)
- t1 = value_1-(Apwrdelta);
+ t1 = (UCHAR)(value_1-(Apwrdelta));
else
t1 = 0;
if (value_2 > Apwrdelta)
- t2 = value_2-(Apwrdelta);
+ t2 = (UCHAR)(value_2-(Apwrdelta));
else
t2 = 0;
if (value_3 > Apwrdelta)
- t3 = value_3-(Apwrdelta);
+ t3 = (UCHAR)(value_3-(Apwrdelta));
else
t3 = 0;
if (value_4 > Apwrdelta)
- t4 = value_4-(Apwrdelta);
+ t4 = (UCHAR)(value_4-(Apwrdelta));
else
t4 = 0;
}
Adata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28));
if (bGpwrdeltaMinus == FALSE)
{
- t1 = value_1+(Gpwrdelta);
+ t1 = (UCHAR)(value_1+(Gpwrdelta));
if (t1 > 0xf)
t1 = 0xf;
- t2 = value_2+(Gpwrdelta);
+ t2 = (UCHAR)(value_2+(Gpwrdelta));
if (t2 > 0xf)
t2 = 0xf;
- t3 = value_3+(Gpwrdelta);
+ t3 = (UCHAR)(value_3+(Gpwrdelta));
if (t3 > 0xf)
t3 = 0xf;
- t4 = value_4+(Gpwrdelta);
+ t4 = (UCHAR)(value_4+(Gpwrdelta));
if (t4 > 0xf)
t4 = 0xf;
}
else
{
if (value_1 > Gpwrdelta)
- t1 = value_1-(Gpwrdelta);
+ t1 = (UCHAR)(value_1-(Gpwrdelta));
else
t1 = 0;
if (value_2 > Gpwrdelta)
- t2 = value_2-(Gpwrdelta);
+ t2 = (UCHAR)(value_2-(Gpwrdelta));
else
t2 = 0;
if (value_3 > Gpwrdelta)
- t3 = value_3-(Gpwrdelta);
+ t3 = (UCHAR)(value_3-(Gpwrdelta));
else
t3 = 0;
if (value_4 > Gpwrdelta)
- t4 = value_4-(Gpwrdelta);
+ t4 = (UCHAR)(value_4-(Gpwrdelta));
else
t4 = 0;
}
@@ -2087,18 +2087,21 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
{
if (NICConfig0.field.TxPath == 3)
{
- RT28xx_EEPROM_READ16(pAd, (EEPROM_EXT_TX0_OVER_2DOT4G + (i * 2)), Power.word);
- RT28xx_EEPROM_READ16(pAd, (EEPROM_EXT_TX1_OVER_2DOT4G + (i * 2)), Power2.word);
- RT28xx_EEPROM_READ16(pAd, (EEPROM_EXT_TX2_OVER_2DOT4G + (i * 2)), Power3.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_EXT_TX0_OVER_2DOT4G + (i * 2)), Power.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_EXT_TX1_OVER_2DOT4G + (i * 2)), Power2.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_EXT_TX2_OVER_2DOT4G + (i * 2)), Power3.word);
}
else
{
- RT28xx_EEPROM_READ16(pAd, (EEPROM_G_TX_PWR_OFFSET + i * 2), Power.word);
- RT28xx_EEPROM_READ16(pAd, (EEPROM_G_TX2_PWR_OFFSET + i * 2), Power2.word);
+ RT28xx_EEPROM_READ16(pAd, (USHORT)(EEPROM_G_TX_PWR_OFFSET + i * 2), Power.word);
+ RT28xx_EEPROM_READ16(pAd, (USHORT)(EEPROM_G_TX2_PWR_OFFSET + i * 2), Power2.word);
}
- pAd->TxPower[i * 2].Channel = i * 2 + 1;
- pAd->TxPower[i * 2 + 1].Channel = i * 2 + 2;
+ pAd->TxPower[i * 2].Channel = (UCHAR)(i * 2 + 1);
+ pAd->TxPower[i * 2 + 1].Channel = (UCHAR)(i * 2 + 2);
/* Tx0 power control*/
@@ -2274,10 +2277,12 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
else /* Tx power control over RF R12 and RF R13*/
#endif /* RT3593 */
{ /* Default routine. RT3070 and RT3370 run here. */
- RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX_PWR_OFFSET + i * 2, Power.word);
- RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX2_PWR_OFFSET + i * 2, Power2.word);
- pAd->TxPower[i * 2].Channel = i * 2 + 1;
- pAd->TxPower[i * 2 + 1].Channel = i * 2 + 2;
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_G_TX_PWR_OFFSET + i * 2), Power.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_G_TX2_PWR_OFFSET + i * 2), Power2.word);
+ pAd->TxPower[i * 2].Channel = (UCHAR)(i * 2 + 1);
+ pAd->TxPower[i * 2 + 1].Channel = (UCHAR)(i * 2 + 2);
pAd->TxPower[i * 2].Power = Power.field.Byte0;
if(!IS_RT3390(pAd)) // 3370 has different Tx power range
@@ -2313,15 +2318,15 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14;
for (i = 0; i < 4; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 36 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(36 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 36 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(36 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 36 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(36 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
}
@@ -2331,8 +2336,10 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
{
RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + i * 2, Power.word);
RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + i * 2, Power2.word);
- printk("Power = %x\n", Power.word);
- printk("Power2 = %x\n", Power2.word);
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("Power = %x\n", Power.word));
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("Power2 = %x\n", Power2.word));
if ((Power.field.Byte0 < 0x2B) && (Power.field.Byte0 >= 0))
pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
@@ -2352,15 +2359,15 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14 + 12;
for (i = 0; i < 5; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 100 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(100 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 100 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(100 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 100 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(100 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
}
@@ -2394,15 +2401,15 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
/*for (i = 0; i < 2; i++)*/
for (i = 0; i < 3; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 149 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(149 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 149 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(149 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 149 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(149 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
}
@@ -2460,17 +2467,17 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14;
for (i = 0; i < 4; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 36 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(36 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power3 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 36 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(36 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power3 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 36 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(36 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power3 = DEFAULT_RF_TX_POWER;
@@ -2549,17 +2556,17 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14 + 12;
for (i = 0; i < 5; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 100 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(100 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power3 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 100 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(100 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power3 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 100 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(100 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power3 = DEFAULT_RF_TX_POWER;
@@ -2573,9 +2580,12 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
// 2.2 Fill up power
for (i = 0; i < 8; i++)
{
- RT28xx_EEPROM_READ16(pAd, (EEPROM_EXT_TX0_OVER_5G + (choffset - 14) + i * 2), Power.word);
- RT28xx_EEPROM_READ16(pAd, (EEPROM_EXT_TX1_OVER_5G + (choffset - 14) + i * 2), Power2.word);
- RT28xx_EEPROM_READ16(pAd, (EEPROM_EXT_TX2_OVER_5G + (choffset - 14) + i * 2), Power3.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_EXT_TX0_OVER_5G + (choffset - 14) + i * 2), Power.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_EXT_TX1_OVER_5G + (choffset - 14) + i * 2), Power2.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_EXT_TX2_OVER_5G + (choffset - 14) + i * 2), Power3.word);
Tx0ALC = GET_TX_ALC_BIT_MASK & Power.field.Byte0;
if (Tx0ALC > 31)
@@ -2643,17 +2653,17 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14 + 12 + 16;
for (i = 0; i < 3; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 149 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(149 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power3 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 149 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(149 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power3 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 149 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(149 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power3 = DEFAULT_RF_TX_POWER;
@@ -2748,15 +2758,15 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14;
for (i = 0; i < 4; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 36 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(36 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 36 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(36 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 36 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(36 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
}
@@ -2764,8 +2774,10 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
/* 1.2 Fill up power*/
for (i = 0; i < 6; i++)
{
- RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + i * 2, Power.word);
- RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + i * 2, Power2.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_A_TX_PWR_OFFSET + i * 2), Power.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_A_TX2_PWR_OFFSET + i * 2), Power2.word);
if ((Power.field.Byte0 < 16) && (Power.field.Byte0 >= -7))
pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
@@ -2785,15 +2797,15 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
choffset = 14 + 12;
for (i = 0; i < 5; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 100 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(100 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 100 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(100 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 100 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(100 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
}
@@ -2804,8 +2816,10 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
/* 2.2 Fill up power*/
for (i = 0; i < 8; i++)
{
- RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + (choffset - 14) + i * 2, Power.word);
- RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + (choffset - 14) + i * 2, Power2.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_A_TX_PWR_OFFSET + (choffset - 14) + i * 2), Power.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_A_TX2_PWR_OFFSET + (choffset - 14) + i * 2), Power2.word);
if ((Power.field.Byte0 < 16) && (Power.field.Byte0 >= -7))
pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
@@ -2826,15 +2840,15 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
/*for (i = 0; i < 2; i++)*/
for (i = 0; i < 3; i++)
{
- pAd->TxPower[3 * i + choffset + 0].Channel = 149 + i * 8 + 0;
+ pAd->TxPower[3 * i + choffset + 0].Channel = (UCHAR)(149 + i * 8 + 0);
pAd->TxPower[3 * i + choffset + 0].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 0].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 1].Channel = 149 + i * 8 + 2;
+ pAd->TxPower[3 * i + choffset + 1].Channel = (UCHAR)(149 + i * 8 + 2);
pAd->TxPower[3 * i + choffset + 1].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 1].Power2 = DEFAULT_RF_TX_POWER;
- pAd->TxPower[3 * i + choffset + 2].Channel = 149 + i * 8 + 4;
+ pAd->TxPower[3 * i + choffset + 2].Channel = (UCHAR)(149 + i * 8 + 4);
pAd->TxPower[3 * i + choffset + 2].Power = DEFAULT_RF_TX_POWER;
pAd->TxPower[3 * i + choffset + 2].Power2 = DEFAULT_RF_TX_POWER;
}
@@ -2855,8 +2869,10 @@ VOID RTMPReadChannelPwr(RTMP_ADAPTER *pAd)
/*for (i = 0; i < 4; i++)*/
for (i = 0; i < 6; i++)
{
- RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + (choffset - 14) + i * 2, Power.word);
- RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + (choffset - 14) + i * 2, Power2.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_A_TX_PWR_OFFSET + (choffset - 14) + i * 2), Power.word);
+ RT28xx_EEPROM_READ16(pAd,
+ (USHORT)(EEPROM_A_TX2_PWR_OFFSET + (choffset - 14) + i * 2), Power2.word);
if ((Power.field.Byte0 < 16) && (Power.field.Byte0 >= -7))
pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
diff --git a/common/uapsd.c b/common/uapsd.c
index 2089926..f3125cc 100755
--- a/common/uapsd.c
+++ b/common/uapsd.c
@@ -93,7 +93,8 @@ UINT32 gUAPSD_TimingSumTxqueue2Air;
#ifdef LINUX
#define UAPSD_SEM_LOCK(__UAPSDEOSPLock, __flags2) \
{ \
- if (irqs_disabled()) \
+ int i = irqs_disabled(); \
+ if (i) \
{ \
RTMP_INT_LOCK((__UAPSDEOSPLock), __flags2); \
} \
@@ -105,7 +106,8 @@ UINT32 gUAPSD_TimingSumTxqueue2Air;
#define UAPSD_SEM_UNLOCK(__UAPSDEOSPLock, __flags2) \
{ \
- if (irqs_disabled()) \
+ int i = irqs_disabled(); \
+ if (i) \
{ \
RTMP_INT_UNLOCK((__UAPSDEOSPLock), __flags2); \
} \
@@ -440,7 +442,8 @@ VOID UAPSD_AllPacketDeliver(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
QueId = QID_AC_BE;
}
- if (rtmp_enq_req(pAd, QUEUE_ENTRY_TO_PACKET(pEntry->pUAPSDEOSPFrame), QueId, tr_entry, FALSE, NULL) == FALSE)
+ if (rtmp_enq_req(pAd, QUEUE_ENTRY_TO_PACKET(pEntry->pUAPSDEOSPFrame),
+ (UCHAR)QueId, tr_entry, FALSE, NULL) == FALSE)
RELEASE_NDIS_PACKET(pAd, QUEUE_ENTRY_TO_PACKET(pEntry->pUAPSDEOSPFrame), NDIS_STATUS_FAILURE);
pEntry->pUAPSDEOSPFrame = NULL;
@@ -457,7 +460,8 @@ VOID UAPSD_AllPacketDeliver(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
{
pQueEntry = RemoveHeadQueue(pQueApsd);
- if (rtmp_enq_req(pAd, QUEUE_ENTRY_TO_PACKET(pQueEntry), QueId, tr_entry, FALSE, NULL) == FALSE)
+ if (rtmp_enq_req(pAd, QUEUE_ENTRY_TO_PACKET(pQueEntry),
+ (UCHAR)QueId, tr_entry, FALSE, NULL) == FALSE)
RELEASE_NDIS_PACKET(pAd, QUEUE_ENTRY_TO_PACKET(pQueEntry), NDIS_STATUS_FAILURE);
}
}
@@ -2021,7 +2025,7 @@ BOOLEAN UAPSD_PsPollHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
RTMP_SET_PACKET_TXTYPE(pQuedPkt, TX_LEGACY_FRAME);
/* set U-APSD flag & its software queue ID */
- RTMP_SET_PACKET_UAPSD(pQuedPkt, TRUE, QueId);
+ RTMP_SET_PACKET_UAPSD(pQuedPkt, TRUE, (CHAR)QueId);
}
}
@@ -2044,7 +2048,7 @@ BOOLEAN UAPSD_PsPollHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
RTMP_SET_PACKET_MOREDATA(pQuedPkt, FALSE);
}
- if (rtmp_enq_req(pAd, pQuedPkt, QueId, tr_entry, TRUE, NULL) == FALSE)
+ if (rtmp_enq_req(pAd, pQuedPkt, (UCHAR)QueId, tr_entry, TRUE, NULL) == FALSE)
RELEASE_NDIS_PACKET(pAd, pQuedPkt, NDIS_STATUS_FAILURE);
}
@@ -2433,7 +2437,8 @@ VOID UAPSD_TriggerFrameHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry, UCHAR
#if 0
InsertTailQueueAc(pAd, pEntry, pLastAcSwQue, pQuedPkt);
#else
- if (rtmp_enq_req(pAd, pQuedPkt, QueId, tr_entry, TRUE, NULL) == FALSE)
+ if (rtmp_enq_req(pAd, pQuedPkt,
+ (UCHAR)QueId, tr_entry, TRUE, NULL) == FALSE)
{
RELEASE_NDIS_PACKET(pAd, pQuedPkt, NDIS_STATUS_FAILURE);
TxPktNum --;
@@ -2460,7 +2465,7 @@ VOID UAPSD_TriggerFrameHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry, UCHAR
RTMP_SET_PACKET_TXTYPE(pQuedPkt, TX_LEGACY_FRAME);
/* set U-APSD flag & its software queue ID */
- RTMP_SET_PACKET_UAPSD(pQuedPkt, TRUE, QueId);
+ RTMP_SET_PACKET_UAPSD(pQuedPkt, TRUE, (CHAR)QueId);
}
#if 0
/* backup its software queue pointer */
@@ -2572,7 +2577,8 @@ VOID UAPSD_TriggerFrameHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry, UCHAR
//AcQueId = WMM_UP2AC_MAP[UpOfFrame];
AcQueId = RTMP_GET_PACKET_UAPSD_QUE_ID(pQuedPkt);
- if (rtmp_enq_req(pAd, pQuedPkt, AcQueId, tr_entry, FALSE, NULL) == FALSE)
+ if (rtmp_enq_req(pAd, pQuedPkt,
+ (UCHAR)AcQueId, tr_entry, FALSE, NULL) == FALSE)
{
RELEASE_NDIS_PACKET(pAd, pQuedPkt, NDIS_STATUS_FAILURE);
pEntry->bAPSDFlagEOSPOK = 0;
@@ -2611,7 +2617,7 @@ VOID UAPSD_TriggerFrameHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry, UCHAR
RTMP_SET_PACKET_TXTYPE(pQuedPkt, TX_LEGACY_FRAME);
pEntry->pUAPSDEOSPFrame = (PQUEUE_ENTRY)pQuedPkt;
- pEntry->UAPSDTxNum = TxPktNum-1; /* skip the EOSP frame */
+ pEntry->UAPSDTxNum = (USHORT)(TxPktNum-1); /* skip the EOSP frame */
}
#ifdef UAPSD_DEBUG
@@ -2697,7 +2703,8 @@ VOID UAPSD_TriggerFrameHandle(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry, UCHAR
us_of_frame is not used.
*/
RtmpEnqueueNullFrame(pAd, pEntry->Addr, pEntry->CurrTxRate,
- Aid, pEntry->func_tb_idx, TRUE, TRUE, UpOfFrame);
+ (UCHAR)Aid, pEntry->func_tb_idx,
+ TRUE, TRUE, UpOfFrame);
#ifdef UAPSD_DEBUG
DBGPRINT(RT_DEBUG_TRACE, ("uapsd> end a SP by a QoS Null frame!\n"));
@@ -2771,6 +2778,9 @@ VOID UAPSD_TagFrame(
{
/* mark the latest USB tx buffer offset for the priority */
AcQueId = RTMP_GET_PACKET_UAPSD_QUE_ID(pPkt);
+ if (AcQueId >= ARRAY_SIZE(pEntry->UAPSDTagOffset))
+ DBGPRINT(RT_DEBUG_TRACE, ("AcQueID exceed WMM_NUM_OF_AC\n"));
+ else
pEntry->UAPSDTagOffset[AcQueId] = PktOffset;
#ifdef UAPSD_DEBUG
@@ -2806,11 +2816,9 @@ VOID UAPSD_UnTagFrame(
{
MAC_TABLE_ENTRY *pEntry;
UINT32 IdEntry;
-#if 0
UINT32 TxPktTagOffset;
-#endif
UINT16 QueId;
- INT FirstWcid = 1;
+ INT FirstWcid = 1;
STA_TR_ENTRY *tr_entry = NULL;
ULONG flags = 0;
@@ -2824,8 +2832,7 @@ VOID UAPSD_UnTagFrame(
{
pEntry = &pAd->MacTab.Content[IdEntry];
tr_entry = &pAd->MacTab.tr_entry[IdEntry];
-
-#if 0
+
if ((IS_ENTRY_CLIENT(pEntry)
#if defined(DOT11Z_TDLS_SUPPORT) || defined(CFG_TDLS_SUPPORT)
|| IS_ENTRY_TDLS(pEntry)
@@ -2838,94 +2845,87 @@ VOID UAPSD_UnTagFrame(
#ifdef UAPSD_DEBUG
DBGPRINT(RT_DEBUG_ERROR, ("uapsd> bulkStartPos = %d\n", bulkStartPos));
DBGPRINT(RT_DEBUG_ERROR, ("uapsd> bulkEnPos = %d\n", bulkEnPos));
- DBGPRINT(RT_DEBUG_ERROR, ("uapsd> record offset = %d\n", pEntry->UAPSDTagOffset[AcQueId]));
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("uapsd> record offset = %d\n", pEntry->UAPSDTagOffset[AcQueId]));
#endif /* UAPSD_DEBUG */
-
/*
- 1. tx tag is in [bulkStartPos, bulkEnPos];
- 2. when bulkEnPos < bulkStartPos
- */
+ 1. tx tag is in [bulkStartPos, bulkEnPos];
+ 2. when bulkEnPos < bulkStartPos
+ */
TxPktTagOffset = pEntry->UAPSDTagOffset[AcQueId];
if (((TxPktTagOffset >= bulkStartPos) &&
- (TxPktTagOffset <= bulkEnPos)) ||
- ((bulkEnPos < bulkStartPos) &&
- (TxPktTagOffset >= bulkStartPos)) ||
- ((bulkEnPos < bulkStartPos) &&
- (TxPktTagOffset <= bulkEnPos)))
- {
+ (TxPktTagOffset <= bulkEnPos)) ||
+ ((bulkEnPos < bulkStartPos) &&
+ (TxPktTagOffset >= bulkStartPos)) ||
+ ((bulkEnPos < bulkStartPos) && (TxPktTagOffset <= bulkEnPos))) {
/* ok, some UAPSD frames of the AC are transmitted */
pEntry->UAPSDTagOffset[AcQueId] = 0;
- if (pEntry->UAPSDTxNum == 0)
- {
+ if (pEntry->UAPSDTxNum == 0) {
/* ok, all UAPSD frames are transmitted */
- //pEntry->bAPSDFlagSPStart = 0;
+ /* pEntry->bAPSDFlagSPStart = 0; */
pEntry->bAPSDFlagEOSPOK = 0;
UAPSD_SP_END(pAd, pEntry);
- if (pEntry->pUAPSDEOSPFrame != NULL)
- {
+ if (pEntry->pUAPSDEOSPFrame != NULL) {
/* should not be here */
RELEASE_NDIS_PACKET(pAd,
- QUEUE_ENTRY_TO_PACKET(pEntry->pUAPSDEOSPFrame),
- NDIS_STATUS_FAILURE);
+ QUEUE_ENTRY_TO_PACKET
+ (pEntry->pUAPSDEOSPFrame),
+ NDIS_STATUS_FAILURE);
pEntry->pUAPSDEOSPFrame = NULL;
- }
-
+ }
#ifdef UAPSD_DEBUG
- DBGPRINT(RT_DEBUG_ERROR, ("uapsd> [1] close SP (%d)!\n", AcQueId));
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("uapsd> [1] close SP (%d)!\n", AcQueId));
#endif /* UAPSD_DEBUG */
- continue; /* check next station */
+ continue; /* check next station */
}
if ((pEntry->UAPSDTagOffset[QID_AC_BE] == 0) &&
- (pEntry->UAPSDTagOffset[QID_AC_BK] == 0) &&
- (pEntry->UAPSDTagOffset[QID_AC_VI] == 0) &&
- (pEntry->UAPSDTagOffset[QID_AC_VO] == 0))
- {
+ (pEntry->UAPSDTagOffset[QID_AC_BK] == 0) &&
+ (pEntry->UAPSDTagOffset[QID_AC_VI] == 0) &&
+ (pEntry->UAPSDTagOffset[QID_AC_VO] == 0)) {
+
/*
OK, UAPSD frames of all AC for the entry are transmitted
except the EOSP frame.
*/
-
- if (pEntry->pUAPSDEOSPFrame != NULL)
- {
- /* transmit the EOSP frame */
+ if (pEntry->pUAPSDEOSPFrame != NULL) {
+ /* transmit the EOSP frame */
PNDIS_PACKET pPkt;
pPkt = QUEUE_ENTRY_TO_PACKET(pEntry->pUAPSDEOSPFrame);
QueId = RTMP_GET_PACKET_UAPSD_QUE_ID(pPkt);
- if (QueId > QID_AC_VO)
- {
- /* should not be here, only for sanity */
+ if (QueId > QID_AC_VO) {
+ /* should not be here, only for sanity */
QueId = QID_AC_BE;
- }
+ }
#ifdef UAPSD_DEBUG
- DBGPRINT(RT_DEBUG_ERROR, ("uapsd> enqueue the EOSP frame...\n"));
+ DBGPRINT(RT_DEBUG_ERROR, ("uapsd> enqueue the EOSP frame...\n"));
#endif /* UAPSD_DEBUG */
#if 0
InsertTailQueueAc(pAd, pEntry,
&pAd->TxSwQueue[QueId],
- pEntry->pUAPSDEOSPFrame);
+ pEntry->pUAPSDEOSPFrame); pEntry->pUAPSDEOSPFrame);
#else
- if (rtmp_enq_req(pAd, pPkt, QueId, tr_entry, TRUE, NULL) == FALSE)
- {
+
+ if (rtmp_enq_req(pAd, pPkt, (UCHAR)QueId, tr_entry, TRUE, NULL) == FALSE) {
/* Release the pakcet and close service period */
RELEASE_NDIS_PACKET(pAd, pPkt, NDIS_STATUS_FAILURE);
pEntry->pUAPSDEOSPFrame = NULL;
pEntry->bAPSDFlagEOSPOK = 0;
UAPSD_SP_END(pAd, pEntry);
- UAPSD_SEM_UNLOCK(&pAd->UAPSDEOSPLock, flags);
+ UAPSD_SEM_UNLOCK(&pAd->UAPSDEOSPLock, flags);
return;
- }
+ }
#endif
-
pEntry->pUAPSDEOSPFrame = NULL;
/*
@@ -2935,12 +2935,10 @@ VOID UAPSD_UnTagFrame(
*/
/* de-queue packet here to speed up EOSP frame response */
- printk("%s:: ----> call dequeue packet\n", __FUNCTION__);
- RTMPDeQueuePacket(pAd, FALSE, QueId, tr_entry->wcid, 1);
+ DBGPRINT(RT_DEBUG_TRACE, ("%s:: ----> call dequeue packet\n", __FUNCTION__));
+ RTMPDeQueuePacket(pAd, FALSE, (UCHAR)QueId, tr_entry->wcid, 1);
//RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, WCID_ALL, MAX_TX_PROCESS);
- }
- else
- {
+ } else {
/* only when 1 data frame with EOSP = 1 is transmitted */
//pEntry->bAPSDFlagSPStart = 0;
pEntry->bAPSDFlagEOSPOK = 0;
@@ -2950,70 +2948,11 @@ VOID UAPSD_UnTagFrame(
DBGPRINT(RT_DEBUG_ERROR, ("uapsd> [2] close SP (%d)!\n", AcQueId));
#endif /* UAPSD_DEBUG */
}
-
/* no any EOSP frames are queued and prepare to close the SP */
pEntry->UAPSDTxNum = 0;
}
}
}
-#else
-
- if(pEntry->UAPSDTxNum == 0)
- {
- if (pEntry->pUAPSDEOSPFrame != NULL)
- {
- /* transmit the EOSP frame */
- PNDIS_PACKET pPkt;
-
- pPkt = QUEUE_ENTRY_TO_PACKET(pEntry->pUAPSDEOSPFrame);
- QueId = RTMP_GET_PACKET_UAPSD_QUE_ID(pPkt);
-
- if (QueId > QID_AC_VO)
- {
- /* should not be here, only for sanity */
- QueId = QID_AC_BE;
- }
-
-#ifdef UAPSD_DEBUG
- DBGPRINT(RT_DEBUG_ERROR, ("uapsd> enqueue the EOSP frame...\n"));
-#endif /* UAPSD_DEBUG */
-
-#if 0
- InsertTailQueueAc(pAd, pEntry,
- &pAd->TxSwQueue[QueId],
- pEntry->pUAPSDEOSPFrame);
-#else
- rtmp_enq_req(pAd, pPkt, QueId, tr_entry, TRUE, NULL);
-#endif
-
-
- pEntry->pUAPSDEOSPFrame = NULL;
-
- /*
- The EOSP frame will be put into ASIC to tx
- in RTMPHandleTxRingDmaDoneInterrupt(),
- not the function.
- */
-
- /* de-queue packet here to speed up EOSP frame response */
- printk("%s:: ----> call dequeue packet\n", __FUNCTION__);
- RTMPDeQueuePacket(pAd, FALSE, QueId, tr_entry->wcid, 1);
- //RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, WCID_ALL, MAX_TX_PROCESS);
- }
- else
- {
- /* only when 1 data frame with EOSP = 1 is transmitted */
- //pEntry->bAPSDFlagSPStart = 0;
- pEntry->bAPSDFlagEOSPOK = 0;
- UAPSD_SP_END(pAd, pEntry);
-
-#ifdef UAPSD_DEBUG
- DBGPRINT(RT_DEBUG_WARN, ("uapsd> [2] close SP (%d)!\n", AcQueId));
-#endif /* UAPSD_DEBUG */
- }
- }
-
-#endif
}
UAPSD_SEM_UNLOCK(&pAd->UAPSDEOSPLock, flags);
diff --git a/conf/MT7603USTA.dat b/conf/MT7603USTA.dat
index ddda94a..4d42ea5 100755
--- a/conf/MT7603USTA.dat
+++ b/conf/MT7603USTA.dat
@@ -101,4 +101,4 @@ WOW_Interface=2
WOW_GPIO=2
WOW_Hold=100000
WOW_GPIOHighLow=1
-
+SCSEnable=1
diff --git a/conf/SingleSKU.dat b/conf/SingleSKU.dat
new file mode 100755
index 0000000..0f2f591
--- a/dev/null
+++ b/conf/SingleSKU.dat
@@ -0,0 +1,17 @@
+# Single SKU Max Power Table
+# |CCK 1~11 | | OFDM 6 ~ 54 | | HT20 MCS 0 ~ 15 | | HT40 MCS 0 ~ 15 |
+ch1 14 14 14 14 13 13 13 13 13 13 13 13 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12
+ch2 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14
+ch3 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch4 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch5 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch6 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch7 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch8 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch9 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch10 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch11 14 14 14 14 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11
+ch12 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ch13 14 14 14 14 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13
+ch14 14 14 14 14
+# End of Single SKU Table
diff --git a/hw_ctrl/cmm_asic.c b/hw_ctrl/cmm_asic.c
index 1e2e96f..d15ca9f 100755
--- a/hw_ctrl/cmm_asic.c
+++ b/hw_ctrl/cmm_asic.c
@@ -4793,282 +4793,3 @@ VOID AsicSetApCliBssid(
RTMP_IO_WRITE32(pAd, MAC_APCLI_BSSID_DW1, Addr4);
}
#endif /* MAC_APCLI_SUPPORT */
-
-#ifdef NEW_WOW_SUPPORT
-VOID RT28xxAndesWOWEnable(
- IN PRTMP_ADAPTER pAd)
-{
- NEW_WOW_MASK_CFG_STRUCT mask_cfg;
- NEW_WOW_SEC_CFG_STRUCT sec_cfg;
- NEW_WOW_INFRA_CFG_STRUCT infra_cfg;
- NEW_WOW_P2P_CFG_STRUCT p2p_cfg;
- NEW_WOW_PARAM_STRUCT wow_param;
- struct CMD_UNIT CmdUnit;
- RTMP_CHIP_CAP *pChipCap = &pAd->chipCap;
- INT32 Ret;
- MAC_TABLE_ENTRY *pEntry = NULL;
-
-
- NdisZeroMemory(&CmdUnit, sizeof(CmdUnit));
-
- /* WOW enable */
- NdisZeroMemory(&wow_param, sizeof(wow_param));
-
- wow_param.Parameter = WOW_ENABLE; /* WOW enable */
- wow_param.Value = TRUE;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* feature enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&wow_param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, wow_param.Parameter);
- return;
- }
-
- RtmpOsMsDelay(1);
- /* mask configuration */
- NdisZeroMemory(&mask_cfg, sizeof(mask_cfg));
-
- mask_cfg.Config_Type = WOW_MASK_CFG; /* detect mask config */
- mask_cfg.Function_Enable = TRUE;
- mask_cfg.Detect_Mask = 1UL << WOW_MAGIC_PKT; /* magic packet */
- mask_cfg.Event_Mask = 0;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_CONFIG; /* WOW config */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_MASK_CFG_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&mask_cfg;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed!!(%d/%d)\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, mask_cfg.Config_Type);
- return;
- }
-
- RtmpOsMsDelay(1);
-
- /* security configuration */
- if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPAPSK)
- {
- NdisZeroMemory(&sec_cfg, sizeof(sec_cfg));
-
- sec_cfg.Config_Type = WOW_SEC_CFG; /* security config */
-
- if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK)
- sec_cfg.WPA_Ver = 0;
- else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
- sec_cfg.WPA_Ver = 1;
-
- pEntry = &pAd->MacTab.Content[BSSID_WCID];
-
- NdisCopyMemory(sec_cfg.PTK, pEntry->PTK, 64);
- NdisCopyMemory(sec_cfg.R_COUNTER, pEntry->R_Counter, LEN_KEY_DESC_REPLAY);
-
- sec_cfg.Key_Id = pAd->StaCfg.DefaultKeyId;
- sec_cfg.Cipher_Alg = pEntry->WepStatus;
- printk("\x1b[31m%s: wep status %d\x1b[m\n", __FUNCTION__, pEntry->WepStatus);
- sec_cfg.Group_Cipher = pAd->StaCfg.GroupCipher;
- printk("\x1b[31m%s: group status %d\x1b[m\n", __FUNCTION__, sec_cfg.Group_Cipher);
- printk("\x1b[31m%s: aid %d\x1b[m\n", __FUNCTION__, pEntry->Aid);
- sec_cfg.WCID = BSSID_WCID;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_CONFIG; /* WOW config */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_SEC_CFG_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&sec_cfg;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, sec_cfg.Config_Type);
- return;
- }
-
- RtmpOsMsDelay(1);
- }
-
- /* Infra configuration */
-
- NdisZeroMemory(&infra_cfg, sizeof(infra_cfg));
-
- infra_cfg.Config_Type = WOW_INFRA_CFG; /* infra config */
-
- COPY_MAC_ADDR(infra_cfg.STA_MAC, pAd->CurrentAddress);
- COPY_MAC_ADDR(infra_cfg.AP_MAC, pAd->CommonCfg.Bssid);
-
- CmdUnit.u.ANDES.Type = CMD_WOW_CONFIG; /* WOW config */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_INFRA_CFG_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&infra_cfg;
-
- if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
- infra_cfg.AP_Status = TRUE;
- else
- infra_cfg.AP_Status = FALSE;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, infra_cfg.Config_Type);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* P2P configuration */
-
- /* Wakeup Option */
- NdisZeroMemory(&wow_param, sizeof(wow_param));
-
- wow_param.Parameter = WOW_WAKEUP; /* Wakeup Option */
- if (pAd->WOW_Cfg.bInBand)
- {
-#ifdef RTMP_MAC_PCI
- wow_param.Value = WOW_WAKEUP_BY_PCIE;
-#else
- wow_param.Value = WOW_WAKEUP_BY_USB;
-#endif /* RTMP_MAC_PCI */
- }
- else
- {
- INT32 Value;
-
- wow_param.Value = WOW_WAKEUP_BY_GPIO;
-
- RTMP_IO_READ32(pAd, WLAN_FUN_CTRL, &Value);
- printk("\x1b[31m%s: 0x80 = %x\x1b[m\n", __FUNCTION__, Value);
- Value &= ~0x01010000; /* GPIO0(ouput) --> 0(data) */
- RTMP_IO_WRITE32(pAd, WLAN_FUN_CTRL, Value);
- }
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* feature enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&wow_param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, wow_param.Parameter);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* traffic to Andes */
- NdisZeroMemory(&wow_param, sizeof(wow_param));
- wow_param.Parameter = WOW_TRAFFIC; /* Traffic switch */
- wow_param.Value = WOW_PKT_TO_ANDES; /* incoming packet to FW */
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* feature enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&wow_param.Parameter;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, wow_param.Parameter);
- return;
- }
-
- RtmpOsMsDelay(1);
-
- RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
-}
-
-VOID RT28xxAndesWOWDisable(
- IN PRTMP_ADAPTER pAd)
-{
- NEW_WOW_PARAM_STRUCT param;
- struct CMD_UNIT CmdUnit;
- RTMP_CHIP_CAP *pChipCap = &pAd->chipCap;
- INT32 Ret;
- UINT32 Value;
- MAC_TABLE_ENTRY *pEntry = NULL;
-
- printk("\x1b[31m%s: ...\x1b[m", __FUNCTION__);
-
- /* clean BulkIn Reset flag */
- //pAd->Flags &= ~0x80000;
- RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
-
- NdisZeroMemory(&CmdUnit, sizeof(CmdUnit));
-
- /* WOW disable */
- NdisZeroMemory(&param, sizeof(param));
- param.Parameter = WOW_ENABLE;
- param.Value = FALSE;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* WOW enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed!!\x1b[m\n", __FUNCTION__);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* traffic to Host */
- NdisZeroMemory(&param, sizeof(param));
- param.Parameter = WOW_TRAFFIC;
- param.Value = WOW_PKT_TO_HOST;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE;
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed!!\x1b[m\n", __FUNCTION__);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* Restore MAC TX/RX */
- AsicSetMacTxRx(pAd, ASIC_MAC_TXRX, TRUE);
-
- RTUSBBulkReceive(pAd);
- RTUSBBulkCmdRspEventReceive(pAd);
-
- /* restore hardware remote wakeup flag */
- RTMP_IO_READ32(pAd, WLAN_FUN_CTRL, &Value);
- printk("\x1b[31m%s: 0x80 %08x\x1b[m\n", __FUNCTION__, Value);
- Value &= ~0x80;
- RTMP_IO_WRITE32(pAd, WLAN_FUN_CTRL, Value);
-
- if (pAd->WOW_Cfg.bInBand == FALSE)
- {
- INT32 Value;
-
- RTMP_IO_READ32(pAd, WLAN_FUN_CTRL, &Value);
- printk("\x1b[31m%s: 0x80 = %x\x1b[m\n", __FUNCTION__, Value);
- Value &= ~0x01010000; /* GPIO0(ouput) --> 0(data) */
- RTMP_IO_WRITE32(pAd, WLAN_FUN_CTRL, Value);
- }
-}
-
-#endif /* NEW_WOW_SUPPORT */
diff --git a/hw_ctrl/cmm_asic_mt.c b/hw_ctrl/cmm_asic_mt.c
index e646834..8c4fd5b 100755
--- a/hw_ctrl/cmm_asic_mt.c
+++ b/hw_ctrl/cmm_asic_mt.c
@@ -915,14 +915,13 @@ INT AsicWtblSetRDG(RTMP_ADAPTER *pAd, BOOLEAN bEnable)
{
pEntry = &pMacTable->Content[wcid];
- if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_RALINK_CHIPSET))
- {
- if (mt_wtbl_get_entry234(pAd, wcid, &tb_entry) == FALSE)
- {
- DBGPRINT(RT_DEBUG_ERROR, ("%s():Cannot found WTBL2/3/4 for WCID(%d)\n",
- __FUNCTION__, wcid));
- return FALSE;
- }
+ if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_RALINK_CHIPSET)) {
+ if (mt_wtbl_get_entry234(pAd, (UCHAR)wcid, &tb_entry) == FALSE) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s():Cannot found WTBL2/3/4 for WCID(%d)\n",
+ __func__, wcid));
+ return FALSE;
+ }
RTMP_IO_READ32(pAd, tb_entry.wtbl_addr[0] + (2 * 4), &dw2->word);
@@ -1148,7 +1147,7 @@ static VOID DumpBcnQMessage(RTMP_ADAPTER *pAd, INT apidx)
DBGPRINT(RT_DEBUG_ERROR, ("\ncheck PSE Q:\n"));
for (j = 0; j <= 8; j++) {
- sprintf(tmp,"%d",j);
+ snprintf(tmp, sizeof(tmp), "%d", j);
set_get_fid(pAd, tmp);
}
@@ -1235,7 +1234,8 @@ VOID APCheckBcnQHandler(RTMP_ADAPTER *pAd, INT apidx, BOOLEAN *is_pretbtt_int)
j++;
OS_WAIT(1);
if (j > 1000) {
- printk("%s, bcn_flush too long!, j = %x\n", __func__, j);
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s, bcn_flush too long!, j = %x\n", __func__, j));
break;
}
}
@@ -1258,7 +1258,9 @@ VOID APCheckBcnQHandler(RTMP_ADAPTER *pAd, INT apidx, BOOLEAN *is_pretbtt_int)
j++;
OS_WAIT(1);
if (j > 1000) {
- printk("%s, flush all stuck bcn too long!! j = %x\n", __func__, j);
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s, flush all stuck bcn too long!! j = %x\n",
+ __func__, j));
break;
}
}
@@ -1802,24 +1804,24 @@ INT AsicSetWmmParam(RTMP_ADAPTER *pAd, UINT ac, UINT type, UINT val)
NdisZeroMemory(&EdcaParam,sizeof(CMD_EDCA_SET_T));
EdcaParam.ucTotalNum = 1;
pAcParam = &EdcaParam.rAcParam[0];
- pAcParam->ucAcNum = ac;
+ pAcParam->ucAcNum = (UINT8)ac;
switch (type) {
case WMM_PARAM_TXOP:
pAcParam->ucVaildBit = CMD_EDCA_TXOP_BIT;
- pAcParam->u2Txop= val;
+ pAcParam->u2Txop = (UINT16)val;
break;
case WMM_PARAM_AIFSN:
pAcParam->ucVaildBit = CMD_EDCA_AIFS_BIT;
- pAcParam->ucAifs = val;
+ pAcParam->ucAifs = (UINT8)val;
break;
case WMM_PARAM_CWMIN:
pAcParam->ucVaildBit = CMD_EDCA_WIN_MIN_BIT;
- pAcParam->ucWinMin= val;
+ pAcParam->ucWinMin = (UINT8)val;
break;
case WMM_PARAM_CWMAX:
pAcParam->ucVaildBit = CMD_EDCA_WIN_MAX_BIT;
- pAcParam->u2WinMax= val;
+ pAcParam->u2WinMax = (UINT16)val;
break;
default:
DBGPRINT(RT_DEBUG_OFF, ("%s(%d): Error type=%d\n", __FUNCTION__, __LINE__, type));
@@ -1848,7 +1850,7 @@ INT AsicSetAllWmmParam(RTMP_ADAPTER *pAd,PEDCA_PARM pEdcaParm)
index = wmm_aci_2_hw_ac_queue[ac];
pAcParam = &EdcaParam.rAcParam[index];
pAcParam->ucVaildBit = CMD_EDCA_ALL_BITS;
- pAcParam->ucAcNum = ac;
+ pAcParam->ucAcNum = (UINT8)ac;
pAcParam->ucAifs = pEdcaParm->Aifsn[index];
pAcParam->ucWinMin= (1 << pEdcaParm->Cwmin[index]) -1;
pAcParam->u2WinMax= (1 << pEdcaParm->Cwmax[index]) -1;
@@ -2186,7 +2188,8 @@ VOID AsicSetSlotTime(
else
SifsTime = SIFS_TIME_24G;
- CmdSlotTimeSet(pAd,SlotTime,SifsTime,RIFS_TIME,EIFS_TIME);
+ CmdSlotTimeSet(pAd, (UINT8)SlotTime,
+ (UINT8)SifsTime, RIFS_TIME, EIFS_TIME);
DBGPRINT(RT_DEBUG_TRACE, ("%s: SlotTime =%u us, SIFS Time = %u us,\
@@ -2234,7 +2237,7 @@ VOID RTMPGetTxTscFromAsic(RTMP_ADAPTER *pAd, UCHAR apidx, UCHAR *pTxTsc)
GET_GroupKey_WCID(pAd, Wcid, apidx);
NdisZeroMemory(&tb_entry, sizeof(tb_entry));
- if (mt_wtbl_get_entry234(pAd, Wcid, &tb_entry) == FALSE) {
+ if (mt_wtbl_get_entry234(pAd, (UCHAR)Wcid, &tb_entry) == FALSE) {
DBGPRINT(RT_DEBUG_ERROR, ("%s():Cannot found WTBL2/3/4 for WCID(%d)\n",
__FUNCTION__, Wcid));
return;
@@ -2295,7 +2298,7 @@ VOID RTMPGetTxTscFromAsic(RTMP_ADAPTER *pAd, UCHAR apidx, UCHAR *pTxTsc)
}
#endif /* RTMP_MAC */
/* Read IVEIV from Asic */
- offset = iveiv_tb_base + (Wcid * iveiv_tb_size);
+ offset = (USHORT)(iveiv_tb_base + (Wcid * iveiv_tb_size));
/* Use Read32 to avoid endian problem */
RTMP_IO_READ32(pAd, offset, &temp1);
@@ -2429,18 +2432,18 @@ VOID AsicAddSharedKeyEntry(
#ifdef RTMP_MAC_USB
{
- RTUSBMultiWrite(pAd, offset, pKey, MAX_LEN_OF_SHARE_KEY, FALSE);
+ RTUSBMultiWrite(pAd, (USHORT)offset, pKey, MAX_LEN_OF_SHARE_KEY, FALSE);
offset += MAX_LEN_OF_SHARE_KEY;
if (pTxMic)
{
- RTUSBMultiWrite(pAd, offset, pTxMic, 8, FALSE);
+ RTUSBMultiWrite(pAd, (USHORT)offset, pTxMic, 8, FALSE);
}
offset += 8;
if (pRxMic)
{
- RTUSBMultiWrite(pAd, offset, pRxMic, 8, FALSE);
+ RTUSBMultiWrite(pAd, (USHORT)offset, pRxMic, 8, FALSE);
}
}
#endif /* RTMP_MAC_USB */
@@ -2760,14 +2763,14 @@ VOID AsicTxCntUpdate(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry, MT_TX_COUNTER *
pTxInfo->TxFailCount = tx_cnt_info.wtbl_2_d7.field.current_bw_fail_cnt ;
pTxInfo->TxFailCount += tx_cnt_info.wtbl_2_d8.field.other_bw_fail_cnt;
- pTxInfo->Rate1TxCnt = tx_cnt_info.wtbl_2_d5.field.rate_1_tx_cnt;
- pTxInfo->Rate1FailCnt = tx_cnt_info.wtbl_2_d5.field.rate_1_fail_cnt;
- pTxInfo->Rate2TxCnt = tx_cnt_info.wtbl_2_d6.field.rate_2_tx_cnt;
- pTxInfo->Rate3TxCnt = tx_cnt_info.wtbl_2_d6.field.rate_3_tx_cnt;
- pTxInfo->Rate4TxCnt = tx_cnt_info.wtbl_2_d6.field.rate_4_tx_cnt;
- pTxInfo->Rate5TxCnt = tx_cnt_info.wtbl_2_d6.field.rate_5_tx_cnt;
+ pTxInfo->Rate1TxCnt = (UINT16)tx_cnt_info.wtbl_2_d5.field.rate_1_tx_cnt;
+ pTxInfo->Rate1FailCnt = (UINT16)tx_cnt_info.wtbl_2_d5.field.rate_1_fail_cnt;
+ pTxInfo->Rate2TxCnt = (UCHAR)tx_cnt_info.wtbl_2_d6.field.rate_2_tx_cnt;
+ pTxInfo->Rate3TxCnt = (UCHAR)tx_cnt_info.wtbl_2_d6.field.rate_3_tx_cnt;
+ pTxInfo->Rate4TxCnt = (UCHAR)tx_cnt_info.wtbl_2_d6.field.rate_4_tx_cnt;
+ pTxInfo->Rate5TxCnt = (UCHAR)tx_cnt_info.wtbl_2_d6.field.rate_5_tx_cnt;
- pTxInfo->RateIndex = tx_cnt_info.wtbl_2_d9.field.rate_idx;
+ pTxInfo->RateIndex = (UCHAR)tx_cnt_info.wtbl_2_d9.field.rate_idx;
/*
if ( pTxInfo->TxFailCount == 0 )
pEntry->OneSecTxNoRetryOkCount += pTxInfo->TxSuccessCount;
@@ -2815,17 +2818,20 @@ VOID AsicRssiUpdate(RTMP_ADAPTER *pAd)
Rssi1 = (wtbl_2_d13.field.resp_rcpi_1 - 220) / 2;
Rssi2 = 0;
- pEntry->RssiSample.AvgRssi[0] = pEntry->RssiSample.LastRssi[0] = Rssi0;
- pEntry->RssiSample.AvgRssi[1] = pEntry->RssiSample.LastRssi[1] = Rssi1;
- pEntry->RssiSample.AvgRssi[2] = pEntry->RssiSample.LastRssi[2] = Rssi2;
+ pEntry->RssiSample.AvgRssi[0] =
+ pEntry->RssiSample.LastRssi[0] = (CHAR)Rssi0;
+ pEntry->RssiSample.AvgRssi[1] =
+ pEntry->RssiSample.LastRssi[1] = (CHAR)Rssi1;
+ pEntry->RssiSample.AvgRssi[2] =
+ pEntry->RssiSample.LastRssi[2] = (CHAR)Rssi2;
- pAd->ApCfg.RssiSample.AvgRssi[0] = Rssi0;
- pAd->ApCfg.RssiSample.AvgRssi[1] = Rssi1;
- pAd->ApCfg.RssiSample.AvgRssi[2] = Rssi2;
+ pAd->ApCfg.RssiSample.AvgRssi[0] = (CHAR)Rssi0;
+ pAd->ApCfg.RssiSample.AvgRssi[1] = (CHAR)Rssi1;
+ pAd->ApCfg.RssiSample.AvgRssi[2] = (CHAR)Rssi2;
- pAd->ApCfg.RssiSample.LastRssi[0] = Rssi0;
- pAd->ApCfg.RssiSample.LastRssi[1] = Rssi1;
- pAd->ApCfg.RssiSample.LastRssi[2] = Rssi2;
+ pAd->ApCfg.RssiSample.LastRssi[0] = (CHAR)Rssi0;
+ pAd->ApCfg.RssiSample.LastRssi[1] = (CHAR)Rssi1;
+ pAd->ApCfg.RssiSample.LastRssi[2] = (CHAR)Rssi2;
}
else
{
@@ -2839,9 +2845,12 @@ VOID AsicRssiUpdate(RTMP_ADAPTER *pAd)
Rssi1 = (wtbl_2_d13.field.resp_rcpi_1 - 220) / 2;
Rssi2 = 0;
- pEntry->RssiSample.AvgRssi[0] = pEntry->RssiSample.LastRssi[0] = Rssi0;
- pEntry->RssiSample.AvgRssi[1] = pEntry->RssiSample.LastRssi[1] = Rssi1;
- pEntry->RssiSample.AvgRssi[2] = pEntry->RssiSample.LastRssi[2] = Rssi2;
+ pEntry->RssiSample.AvgRssi[0] =
+ pEntry->RssiSample.LastRssi[0] = (CHAR)Rssi0;
+ pEntry->RssiSample.AvgRssi[1] =
+ pEntry->RssiSample.LastRssi[1] = (CHAR)Rssi1;
+ pEntry->RssiSample.AvgRssi[2] =
+ pEntry->RssiSample.LastRssi[2] = (CHAR)Rssi2;
TotalRssi0 += Rssi0;
TotalRssi1 += Rssi1;
@@ -2849,9 +2858,15 @@ VOID AsicRssiUpdate(RTMP_ADAPTER *pAd)
}
}
- pAd->ApCfg.RssiSample.AvgRssi[0] = pAd->ApCfg.RssiSample.LastRssi[0] = TotalRssi0 / pAd->MacTab.Size;
- pAd->ApCfg.RssiSample.AvgRssi[1] = pAd->ApCfg.RssiSample.LastRssi[1] = TotalRssi1 / pAd->MacTab.Size;
- pAd->ApCfg.RssiSample.AvgRssi[2] = pAd->ApCfg.RssiSample.LastRssi[2] = TotalRssi2 / pAd->MacTab.Size;
+ pAd->ApCfg.RssiSample.AvgRssi[0] =
+ pAd->ApCfg.RssiSample.LastRssi[0] =
+ (CHAR)(TotalRssi0 / pAd->MacTab.Size);
+ pAd->ApCfg.RssiSample.AvgRssi[1] =
+ pAd->ApCfg.RssiSample.LastRssi[1] =
+ (CHAR)(TotalRssi1 / pAd->MacTab.Size);
+ pAd->ApCfg.RssiSample.AvgRssi[2] =
+ pAd->ApCfg.RssiSample.LastRssi[2] =
+ (CHAR)(TotalRssi2 / pAd->MacTab.Size);
}
}
@@ -2867,17 +2882,17 @@ VOID AsicRssiUpdate(RTMP_ADAPTER *pAd)
Rssi1 = (wtbl_2_d13.field.resp_rcpi_1 - 220) / 2;
Rssi2 = 0;
- pEntry->RssiSample.AvgRssi[0] = pEntry->RssiSample.LastRssi[0] = Rssi0;
- pEntry->RssiSample.AvgRssi[1] = pEntry->RssiSample.LastRssi[1] = Rssi1;
- pEntry->RssiSample.AvgRssi[2] = pEntry->RssiSample.LastRssi[2] = Rssi2;
+ pEntry->RssiSample.AvgRssi[0] = pEntry->RssiSample.LastRssi[0] = (CHAR)Rssi0;
+ pEntry->RssiSample.AvgRssi[1] = pEntry->RssiSample.LastRssi[1] = (CHAR)Rssi1;
+ pEntry->RssiSample.AvgRssi[2] = pEntry->RssiSample.LastRssi[2] = (CHAR)Rssi2;
- pAd->StaCfg.RssiSample.AvgRssi[0] = Rssi0;
- pAd->StaCfg.RssiSample.AvgRssi[1] = Rssi1;
- pAd->StaCfg.RssiSample.AvgRssi[2] = Rssi2;
+ pAd->StaCfg.RssiSample.AvgRssi[0] = (CHAR)Rssi0;
+ pAd->StaCfg.RssiSample.AvgRssi[1] = (CHAR)Rssi1;
+ pAd->StaCfg.RssiSample.AvgRssi[2] = (CHAR)Rssi2;
- pAd->StaCfg.RssiSample.LastRssi[0] = Rssi0;
- pAd->StaCfg.RssiSample.LastRssi[1] = Rssi1;
- pAd->StaCfg.RssiSample.LastRssi[2] = Rssi2;
+ pAd->StaCfg.RssiSample.LastRssi[0] = (CHAR)Rssi0;
+ pAd->StaCfg.RssiSample.LastRssi[1] = (CHAR)Rssi1;
+ pAd->StaCfg.RssiSample.LastRssi[2] = (CHAR)Rssi2;
}
#endif /* CONFIG_STA_SUPPORT */
}
@@ -3020,7 +3035,7 @@ VOID asic_mcs_lut_update(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
else
preamble = LONG_PREAMBLE;
- stbc = pEntry->HTPhyMode.field.STBC;
+ stbc = (UCHAR)pEntry->HTPhyMode.field.STBC;
#ifdef THERMAL_PROTECT_SUPPORT
if (pAd->force_one_tx_stream == TRUE) {
@@ -3028,7 +3043,8 @@ VOID asic_mcs_lut_update(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
}
#endif /* THERMAL_PROTECT_SUPPORT */
- nss = get_nss_by_mcs(pEntry->HTPhyMode.field.MODE, pEntry->HTPhyMode.field.MCS, stbc);
+ nss = get_nss_by_mcs((UCHAR)pEntry->HTPhyMode.field.MODE,
+ (UCHAR)pEntry->HTPhyMode.field.MCS, stbc);
if (((pEntry->MmpsMode != MMPS_STATIC) || ( pEntry->HTPhyMode.field.MODE < MODE_HTMIX ))
@@ -3044,11 +3060,12 @@ VOID asic_mcs_lut_update(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
}
}
- rate[0] = tx_rate_to_tmi_rate(pEntry->HTPhyMode.field.MODE,
- pEntry->HTPhyMode.field.MCS,
- nss,
- pEntry->HTPhyMode.field.MCS == MCS_32?0:stbc,
- preamble);
+ rate[0] = tx_rate_to_tmi_rate(
+ (UCHAR)pEntry->HTPhyMode.field.MODE,
+ (UCHAR)pEntry->HTPhyMode.field.MCS,
+ nss,
+ pEntry->HTPhyMode.field.MCS == MCS_32?0:stbc,
+ preamble);
rate[0] &= 0xfff;
if ( pEntry->bAutoTxRateSwitch == TRUE )
@@ -3131,7 +3148,7 @@ VOID asic_mcs_lut_update(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
}
- nss = get_nss_by_mcs(mode, mcs, pEntry->HTPhyMode.field.STBC);
+ nss = get_nss_by_mcs(mode, mcs, (BOOLEAN)pEntry->HTPhyMode.field.STBC);
rate[ucIndex] = tx_rate_to_tmi_rate(mode,
mcs,
nss,
@@ -3210,7 +3227,18 @@ VOID asic_mcs_lut_update(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry)
}
else
{
- ucMaxTxRetryCnt = aucHtMaxRetryLimit[(pEntry->HTPhyMode.field.MCS*2) + 1];
+ if (((pEntry->HTPhyMode.field.MCS*2) + 1) <
+ sizeof(aucHtMaxRetryLimit)/sizeof(UCHAR))
+ ucMaxTxRetryCnt =
+ aucHtMaxRetryLimit[
+ (pEntry->HTPhyMode.field.MCS*2) + 1];
+ else {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s(): Invalid index!(%d)\n",
+ __func__,
+ (pEntry->HTPhyMode.field.MCS*2) + 1));
+ return;
+ }
}
}
}
@@ -3261,57 +3289,57 @@ UINT16 AsicGetTidSn(RTMP_ADAPTER *pAd, UCHAR Wcid, UCHAR Tid)
case 0:
Reg = Entry.wtbl_addr[1] + (4 * 2); //WTBL2.DW2
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d2.word);
- Sn = Wtbl_2->wtbl_2_d2.field.tid_ac_0_sn;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d2.field.tid_ac_0_sn;
break;
case 1:
Reg = Entry.wtbl_addr[1] + (4 * 2); //WTBL2.DW2
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d2.word);
- Sn = Wtbl_2->wtbl_2_d2.field.tid_ac_1_sn;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d2.field.tid_ac_1_sn;
break;
case 2:
Reg = Entry.wtbl_addr[1] + (4 * 2); //WTBL2.DW2
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d2.word);
- Sn = Wtbl_2->wtbl_2_d2.field.tid_ac_2_sn_0;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d2.field.tid_ac_2_sn_0;
Reg = Entry.wtbl_addr[1] + (4 * 3); //WTBL2.DW3
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d3.word);
- Sn = (Wtbl_2->wtbl_2_d3.field.tid_ac_2_sn_9 << 8) | Sn;
+ Sn = (UINT16)((Wtbl_2->wtbl_2_d3.field.tid_ac_2_sn_9 << 8) | Sn);
break;
case 3:
Reg = Entry.wtbl_addr[1] + (4 * 3); //WTBL2.DW3
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d3.word);
- Sn = Wtbl_2->wtbl_2_d3.field.tid_ac_3_sn;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d3.field.tid_ac_3_sn;
break;
case 4:
Reg = Entry.wtbl_addr[1] + (4 * 3); //WTBL2.DW3
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d3.word);
- Sn = Wtbl_2->wtbl_2_d3.field.tid_4_sn;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d3.field.tid_4_sn;
break;
case 5:
Reg = Entry.wtbl_addr[1] + (4 * 3); //WTBL2.DW3
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d3.word);
- Sn = Wtbl_2->wtbl_2_d3.field.tid_5_sn_0;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d3.field.tid_5_sn_0;
Reg = Entry.wtbl_addr[1] + (4 * 4); //WTBL2.DW4
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d4.word);
- Sn = (Wtbl_2->wtbl_2_d4.field.tid_5_sn_5 << 4) | Sn;
+ Sn = (UINT16)((Wtbl_2->wtbl_2_d4.field.tid_5_sn_5 << 4) | Sn);
break;
case 6:
Reg = Entry.wtbl_addr[1] + (4 * 4); //WTBL2.DW4
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d4.word);
- Sn = Wtbl_2->wtbl_2_d4.field.tid_6_sn;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d4.field.tid_6_sn;
break;
case 7:
Reg = Entry.wtbl_addr[1] + (4 * 4); //WTBL2.DW4
RTMP_IO_READ32(pAd, Reg, &Wtbl_2->wtbl_2_d4.word);
- Sn = Wtbl_2->wtbl_2_d4.field.tid_7_sn;
+ Sn = (UINT16)Wtbl_2->wtbl_2_d4.field.tid_7_sn;
break;
default:
@@ -3432,7 +3460,7 @@ VOID AsicUpdateRxWCIDTable(RTMP_ADAPTER *pAd, USHORT WCID, UCHAR *pAddr)
// TODO: shiang-7603
NdisZeroMemory(&tb_entry, sizeof(tb_entry));
- if (mt_wtbl_get_entry234(pAd, WCID, &tb_entry) == FALSE) {
+ if (mt_wtbl_get_entry234(pAd, (UCHAR)WCID, &tb_entry) == FALSE) {
DBGPRINT(RT_DEBUG_ERROR, ("%s():Cannot found WTBL2/3/4 for WCID(%d)\n",
__FUNCTION__, WCID));
return;
@@ -3466,7 +3494,13 @@ VOID AsicUpdateRxWCIDTable(RTMP_ADAPTER *pAd, USHORT WCID, UCHAR *pAddr)
dw0->field.rc_a2 = 1;
}
else {
- mac_entry = &pAd->MacTab.Content[WCID];
+ if (WCID < MAX_LEN_OF_MAC_TABLE)
+ mac_entry = &pAd->MacTab.Content[WCID];
+ else {
+ DBGPRINT(RT_DEBUG_ERROR, ("%s():Invalid WCID(%d)!\n",
+ __func__, WCID));
+ return;
+ }
//dw0->field.muar_idx = 0x0; // TODO: need to change depends on different BssIdx!
if (IS_ENTRY_CLIENT(mac_entry)) {
@@ -3577,11 +3611,19 @@ VOID AsicUpdateRxWCIDTable(RTMP_ADAPTER *pAd, USHORT WCID, UCHAR *pAddr)
/* Clear BA Information */
RTMP_IO_WRITE32(pAd, tb_entry.wtbl_addr[1] + (15 * 4), tb_entry.wtbl_2.wtbl_2_d15.word);
+ /* IOT issue with BCM's AP (ex: TP-LINK AC1900 C8/C9): Clear PN in wtbl2
+ * The PN shall be initialized when the corresponding TK is initialized or refreshed
+ * If the PN (Packet Number) exceed the threshold, AP will drop the data frames.
+ */
+ tb_entry.wtbl_2.wtbl_2_d0.pn_0 = 0x0;
+ tb_entry.wtbl_2.wtbl_2_d1.field.pn_32 = 0x0;
+ RTMP_IO_WRITE32(pAd, tb_entry.wtbl_addr[1] + (0 * 4), tb_entry.wtbl_2.wtbl_2_d0.word);
+ RTMP_IO_WRITE32(pAd, tb_entry.wtbl_addr[1] + (1 * 4), tb_entry.wtbl_2.wtbl_2_d1.word);
/* Clear WTBL2 TID SN to default */
/* We need change disable TX to just disable TX Q only, or RX path may have problem due to we can not TX ack*/
//AsicSetMacTxRx(pAd, ASIC_MAC_TX, FALSE);
-MtAsicACQueue(pAd, AC_QUEUE_STOP, apidx, 0xF);
+ MtAsicACQueue(pAd, AC_QUEUE_STOP, (UINT8)apidx, 0xF);
RTMP_IO_WRITE32(pAd, tb_entry.wtbl_addr[1] + (2 * 4), 0x0);
RTMP_IO_WRITE32(pAd, tb_entry.wtbl_addr[1] + (3 * 4), 0x0);
@@ -3620,7 +3662,7 @@ MtAsicACQueue(pAd, AC_QUEUE_STOP, apidx, 0xF);
NdisReleaseSpinLock(&pAd->IndirectUpdateLock);
#endif
//AsicSetMacTxRx(pAd, ASIC_MAC_TX, TRUE);
- MtAsicACQueue(pAd, AC_QUEUE_START, apidx, 0xF);
+ MtAsicACQueue(pAd, AC_QUEUE_START, (UINT8)apidx, 0xF);
return;
}
@@ -3632,7 +3674,7 @@ MtAsicACQueue(pAd, AC_QUEUE_STOP, apidx, 0xF);
NdisReleaseSpinLock(&pAd->IndirectUpdateLock);
#endif
//AsicSetMacTxRx(pAd, ASIC_MAC_TX, TRUE);
-MtAsicACQueue(pAd, AC_QUEUE_START, apidx, 0xF);
+ MtAsicACQueue(pAd, AC_QUEUE_START, (UINT8)apidx, 0xF);
#ifdef RTMP_USB_SUPPORT
@@ -4346,7 +4388,7 @@ VOID AsicAddPairwiseKeyEntry(
}
#endif /* RTMP_MAC_PCI */
#ifdef RTMP_MAC_USB
- RTUSBMultiWrite(pAd, offset, &pCipherKey->Key[0], MAX_LEN_OF_PEER_KEY, FALSE);
+ RTUSBMultiWrite(pAd, (USHORT)offset, &pCipherKey->Key[0], MAX_LEN_OF_PEER_KEY, FALSE);
#endif /* RTMP_MAC_USB */
for (i=0; i<MAX_LEN_OF_PEER_KEY; i+=4)
{
@@ -4365,7 +4407,7 @@ VOID AsicAddPairwiseKeyEntry(
}
#endif /* RTMP_MAC_PCI */
#ifdef RTMP_MAC_USB
- RTUSBMultiWrite(pAd, offset, &pCipherKey->TxMic[0], 8, FALSE);
+ RTUSBMultiWrite(pAd, (USHORT)offset, &pCipherKey->TxMic[0], 8, FALSE);
#endif /* RTMP_MAC_USB */
}
offset += 8;
@@ -4379,7 +4421,7 @@ VOID AsicAddPairwiseKeyEntry(
}
#endif /* RTMP_MAC_PCI */
#ifdef RTMP_MAC_USB
- RTUSBMultiWrite(pAd, offset, &pCipherKey->RxMic[0], 8, FALSE);
+ RTUSBMultiWrite(pAd, (USHORT)offset, &pCipherKey->RxMic[0], 8, FALSE);
#endif /* RTMP_MAC_USB */
}
#ifdef RTMP_MAC
@@ -5285,7 +5327,7 @@ INT StopDmaRx(RTMP_ADAPTER *pAd, UCHAR Level)
pRxPacket = GetPacketFromRxRing(pAd, pRxBlk, &bReschedule, &RxPending, 0);
if ((RxPending == 0) && (bReschedule == FALSE))
break;
- else
+ else if (pRxPacket)
RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_SUCCESS);
}
@@ -5507,7 +5549,7 @@ INT AsicSetBW(RTMP_ADAPTER *pAd, INT bw)
}
RTMP_IO_WRITE32(pAd, AGG_BWCR, val);
- bbp_set_bw(pAd, bw);
+ bbp_set_bw(pAd, (UINT8)bw);
return TRUE;
}
@@ -6263,288 +6305,6 @@ VOID AsicSetApCliBssid(
}
#endif /* MAC_APCLI_SUPPORT */
-#ifdef NEW_WOW_SUPPORT
-VOID RT28xxAndesWOWEnable(
- IN PRTMP_ADAPTER pAd)
-{
- NEW_WOW_MASK_CFG_STRUCT mask_cfg;
- NEW_WOW_SEC_CFG_STRUCT sec_cfg;
- NEW_WOW_INFRA_CFG_STRUCT infra_cfg;
- NEW_WOW_P2P_CFG_STRUCT p2p_cfg;
- NEW_WOW_PARAM_STRUCT wow_param;
- struct CMD_UNIT CmdUnit;
- RTMP_CHIP_CAP *pChipCap = &pAd->chipCap;
- INT32 Ret;
- MAC_TABLE_ENTRY *pEntry = NULL;
-
-
- NdisZeroMemory(&CmdUnit, sizeof(CmdUnit));
-
- /* WOW enable */
- NdisZeroMemory(&wow_param, sizeof(wow_param));
-
- wow_param.Parameter = WOW_ENABLE; /* WOW enable */
- wow_param.Value = TRUE;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* feature enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&wow_param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, wow_param.Parameter);
- return;
- }
-
- RtmpOsMsDelay(1);
- /* mask configuration */
- NdisZeroMemory(&mask_cfg, sizeof(mask_cfg));
-
- mask_cfg.Config_Type = WOW_MASK_CFG; /* detect mask config */
- mask_cfg.Function_Enable = TRUE;
- mask_cfg.Detect_Mask = 1UL << WOW_MAGIC_PKT; /* magic packet */
- mask_cfg.Event_Mask = 0;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_CONFIG; /* WOW config */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_MASK_CFG_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&mask_cfg;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed!!(%d/%d)\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, mask_cfg.Config_Type);
- return;
- }
-
- RtmpOsMsDelay(1);
-
- /* security configuration */
- if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPAPSK)
- {
- NdisZeroMemory(&sec_cfg, sizeof(sec_cfg));
-
- sec_cfg.Config_Type = WOW_SEC_CFG; /* security config */
-
- if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK)
- sec_cfg.WPA_Ver = 0;
- else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
- sec_cfg.WPA_Ver = 1;
-
- pEntry = &pAd->MacTab.Content[BSSID_WCID];
-
- NdisCopyMemory(sec_cfg.PTK, pEntry->PTK, 64);
- NdisCopyMemory(sec_cfg.R_COUNTER, pEntry->R_Counter, LEN_KEY_DESC_REPLAY);
-
- sec_cfg.Key_Id = pAd->StaCfg.DefaultKeyId;
- sec_cfg.Cipher_Alg = pEntry->WepStatus;
- printk("\x1b[31m%s: wep status %d\x1b[m\n", __FUNCTION__, pEntry->WepStatus);
- sec_cfg.Group_Cipher = pAd->StaCfg.GroupCipher;
- printk("\x1b[31m%s: group status %d\x1b[m\n", __FUNCTION__, sec_cfg.Group_Cipher);
- printk("\x1b[31m%s: aid %d\x1b[m\n", __FUNCTION__, pEntry->Aid);
- sec_cfg.WCID = BSSID_WCID;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_CONFIG; /* WOW config */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_SEC_CFG_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&sec_cfg;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, sec_cfg.Config_Type);
- return;
- }
-
- RtmpOsMsDelay(1);
- }
-
- /* Infra configuration */
-
- NdisZeroMemory(&infra_cfg, sizeof(infra_cfg));
-
- infra_cfg.Config_Type = WOW_INFRA_CFG; /* infra config */
-
- COPY_MAC_ADDR(infra_cfg.STA_MAC, pAd->CurrentAddress);
- COPY_MAC_ADDR(infra_cfg.AP_MAC, pAd->CommonCfg.Bssid);
-
- CmdUnit.u.ANDES.Type = CMD_WOW_CONFIG; /* WOW config */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_INFRA_CFG_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&infra_cfg;
-
- if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
- infra_cfg.AP_Status = TRUE;
- else
- infra_cfg.AP_Status = FALSE;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, infra_cfg.Config_Type);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* P2P configuration */
-
- /* Wakeup Option */
- NdisZeroMemory(&wow_param, sizeof(wow_param));
-
- wow_param.Parameter = WOW_WAKEUP; /* Wakeup Option */
- if (pAd->WOW_Cfg.bInBand)
- {
-#ifdef RTMP_MAC_PCI
- wow_param.Value = WOW_WAKEUP_BY_PCIE;
-#else
- wow_param.Value = WOW_WAKEUP_BY_USB;
-#endif /* RTMP_MAC_PCI */
- }
- else
- {
- INT32 Value;
-
- wow_param.Value = WOW_WAKEUP_BY_GPIO;
-
- RTMP_IO_READ32(pAd, WLAN_FUN_CTRL, &Value);
- printk("\x1b[31m%s: 0x80 = %x\x1b[m\n", __FUNCTION__, Value);
- Value &= ~0x01010000; /* GPIO0(ouput) --> 0(data) */
- RTMP_IO_WRITE32(pAd, WLAN_FUN_CTRL, Value);
- }
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* feature enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&wow_param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, wow_param.Parameter);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* traffic to Andes */
- NdisZeroMemory(&wow_param, sizeof(wow_param));
- wow_param.Parameter = WOW_TRAFFIC; /* Traffic switch */
- wow_param.Value = WOW_PKT_TO_ANDES; /* incoming packet to FW */
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* feature enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&wow_param.Parameter;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed(%d/%d)!!\x1b[m\n", __FUNCTION__,
- CmdUnit.u.ANDES.Type, wow_param.Parameter);
- return;
- }
-
- RtmpOsMsDelay(1);
-
- RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
-}
-
-VOID RT28xxAndesWOWDisable(
- IN PRTMP_ADAPTER pAd)
-{
- NEW_WOW_PARAM_STRUCT param;
- struct CMD_UNIT CmdUnit;
- RTMP_CHIP_CAP *pChipCap = &pAd->chipCap;
- INT32 Ret;
- UINT32 Value;
- MAC_TABLE_ENTRY *pEntry = NULL;
-
- printk("\x1b[31m%s: ...\x1b[m", __FUNCTION__);
-
- /* clean BulkIn Reset flag */
- //pAd->Flags &= ~0x80000;
- RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
-
- NdisZeroMemory(&CmdUnit, sizeof(CmdUnit));
-
- /* WOW disable */
- NdisZeroMemory(&param, sizeof(param));
- param.Parameter = WOW_ENABLE;
- param.Value = FALSE;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE; /* WOW enable */
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed!!\x1b[m\n", __FUNCTION__);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* traffic to Host */
- NdisZeroMemory(&param, sizeof(param));
- param.Parameter = WOW_TRAFFIC;
- param.Value = WOW_PKT_TO_HOST;
-
- CmdUnit.u.ANDES.Type = CMD_WOW_FEATURE;
- CmdUnit.u.ANDES.CmdPayloadLen = sizeof(NEW_WOW_PARAM_STRUCT);
- CmdUnit.u.ANDES.CmdPayload = (PUCHAR)&param;
-
- Ret = AsicSendCmdToAndes(pAd, &CmdUnit);
-
- if (Ret != NDIS_STATUS_SUCCESS)
- {
- printk("\x1b[31m%s: send WOW config command failed!!\x1b[m\n", __FUNCTION__);
- return;
- }
-
- RtmpOsMsDelay(1);
-
-
- /* Restore MAC TX/RX */
- if (pAd->CommonCfg.bTXRX_RXV_ON)
- AsicSetMacTxRx(pAd, ASIC_MAC_TXRX_RXV, TRUE);
- else
- AsicSetMacTxRx(pAd, ASIC_MAC_TXRX, TRUE);
-
- RTUSBBulkReceive(pAd);
- RTUSBBulkCmdRspEventReceive(pAd);
-
- /* restore hardware remote wakeup flag */
- RTMP_IO_READ32(pAd, WLAN_FUN_CTRL, &Value);
- printk("\x1b[31m%s: 0x80 %08x\x1b[m\n", __FUNCTION__, Value);
- Value &= ~0x80;
- RTMP_IO_WRITE32(pAd, WLAN_FUN_CTRL, Value);
-
- if (pAd->WOW_Cfg.bInBand == FALSE)
- {
- INT32 Value;
-
- RTMP_IO_READ32(pAd, WLAN_FUN_CTRL, &Value);
- printk("\x1b[31m%s: 0x80 = %x\x1b[m\n", __FUNCTION__, Value);
- Value &= ~0x01010000; /* GPIO0(ouput) --> 0(data) */
- RTMP_IO_WRITE32(pAd, WLAN_FUN_CTRL, Value);
- }
-}
-#endif /* NEW_WOW_SUPPORT */
-
-
VOID MTPciMlmeRadioOn(PRTMP_ADAPTER pAd)
{
#ifdef CONFIG_AP_SUPPORT
diff --git a/hw_ctrl/mt_gpio.c b/hw_ctrl/mt_gpio.c
index 93129e0..d2eea32 100755
--- a/hw_ctrl/mt_gpio.c
+++ b/hw_ctrl/mt_gpio.c
@@ -210,34 +210,21 @@ INT32 GPIODirectionInput(RTMP_ADAPTER *pAd, UINT32 GPIO)
INT32 GPIODirectionOuput(RTMP_ADAPTER *pAd, UINT32 GPIO, UINT8 Value)
{
- UINT32 RemapBase, RemapOffset;
- UINT32 RestoreValue;
-
- RTMP_IO_READ32(pAd, MCU_PCIE_REMAP_2, &RestoreValue);
-
- GPIOMuxSelect(pAd, GPIO);
-
- RemapBase = GET_REMAP_2_BASE(GPIO_OE1_SET) << 19;
- RemapOffset = GET_REMAP_2_OFFSET(GPIO_OE1_SET);
- RTMP_IO_WRITE32(pAd, MCU_PCIE_REMAP_2, RemapBase);
- RTMP_IO_WRITE32(pAd, 0x80000 + RemapOffset, (1 << GPIO));
-
- if (Value == OUTPUT_HIGH)
- {
- RemapBase = GET_REMAP_2_BASE(GPIO_DOUT1_SET) << 19;
- RemapOffset = GET_REMAP_2_OFFSET(GPIO_DOUT1_SET);
- RTMP_IO_WRITE32(pAd, MCU_PCIE_REMAP_2, RemapBase);
- RTMP_IO_WRITE32(pAd, 0x80000 + RemapOffset, (1 << GPIO));
- }
- else
- {
- RemapBase = GET_REMAP_2_BASE(GPIO_DOUT1_RESET) << 19;
- RemapOffset = GET_REMAP_2_OFFSET(GPIO_DOUT1_RESET);
- RTMP_IO_WRITE32(pAd, MCU_PCIE_REMAP_2, RemapBase);
- RTMP_IO_WRITE32(pAd, 0x80000 + RemapOffset, (1 << GPIO));
+ UINT32 crValue;
+
+ if (Value == OUTPUT_HIGH) {
+ RTMP_IO_READ32(pAd, GPIO_DOUT1_SET, &crValue);
+ crValue |= (1 << GPIO);
+ RTMP_IO_WRITE32(pAd, GPIO_DOUT1_SET, crValue);
+ } else {
+ RTMP_IO_READ32(pAd, GPIO_DOUT1_RESET, &crValue);
+ crValue |= (1 << GPIO);
+ RTMP_IO_WRITE32(pAd, GPIO_DOUT1_RESET, crValue);
}
- RTMP_IO_WRITE32(pAd, MCU_PCIE_REMAP_2, RestoreValue);
+ RTMP_IO_READ32(pAd, GPIO_OE1, &crValue);
+ crValue |= (1 << GPIO);
+ RTMP_IO_WRITE32(pAd, GPIO_OE1, crValue);
return 0;
}
diff --git a/include/cfg80211.h b/include/cfg80211.h
index 1ca78d8..6e8a796 100755
--- a/include/cfg80211.h
+++ b/include/cfg80211.h
@@ -26,6 +26,30 @@
#include <linux/ieee80211.h>
+#ifdef CFG_CFG80211_VERSION
+#define CFG80211_VERSION_CODE CFG_CFG80211_VERSION
+#else
+#define CFG80211_VERSION_CODE LINUX_VERSION_CODE
+#endif
+
+#if KERNEL_VERSION(4, 7, 0) <= CFG80211_VERSION_CODE
+/**
+ * enum nl80211_band - Frequency band
+ * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
+ * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz)
+ * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 64.80 GHz)
+ * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace
+ * since newer kernel versions may support more bands
+ */
+#define KAL_BAND_2GHZ NL80211_BAND_2GHZ
+#define KAL_BAND_5GHZ NL80211_BAND_5GHZ
+#define KAL_NUM_BANDS NUM_NL80211_BANDS
+#else
+#define KAL_BAND_2GHZ IEEE80211_BAND_2GHZ
+#define KAL_BAND_5GHZ IEEE80211_BAND_5GHZ
+#define KAL_NUM_BANDS IEEE80211_NUM_BANDS
+#endif
+
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
#define random32() prandom_u32()
#endif
@@ -50,7 +74,7 @@ typedef enum _NDIS_HOSTAPD_STATUS {
typedef struct __CFG80211_CB {
/* we can change channel/rate information on the fly so we backup them */
- struct ieee80211_supported_band Cfg80211_bands[IEEE80211_NUM_BANDS];
+ struct ieee80211_supported_band Cfg80211_bands[KAL_NUM_BANDS];
struct ieee80211_channel *pCfg80211_Channels;
struct ieee80211_rate *pCfg80211_Rates;
@@ -99,6 +123,32 @@ BOOLEAN CFG80211_Register(
struct device *pDev,
struct net_device *pNetDev);
+/**
+ * kalCfg80211ScanDone - abstraction of cfg80211_scan_done
+ *
+ * @request: the corresponding scan request (sanity checked by callers!)
+ * @aborted: set to true if the scan was aborted for any reason,
+ * userspace will be notified of that
+ *
+ * Since linux-4.8.y the 2nd parameter is changed from bool to
+ * struct cfg80211_scan_info, but we don't use all fields yet.
+ */
+#if KERNEL_VERSION(4, 8, 0) <= CFG80211_VERSION_CODE
+static inline void kalCfg80211ScanDone(struct cfg80211_scan_request *request,
+ bool aborted)
+{
+ struct cfg80211_scan_info info = { .aborted = aborted };
+
+ cfg80211_scan_done(request, &info);
+}
+#else
+static inline void kalCfg80211ScanDone(struct cfg80211_scan_request *request,
+ bool aborted)
+{
+ cfg80211_scan_done(request, aborted);
+}
+#endif
+
#endif /* RT_CFG80211_SUPPORT */
#endif /* __CFG80211_H__ */
diff --git a/include/cfg80211extr.h b/include/cfg80211extr.h
index 0533213..98696f5 100755
--- a/include/cfg80211extr.h
+++ b/include/cfg80211extr.h
@@ -70,10 +70,11 @@
#define RT_CFG80211_LOST_AP_INFORM(__pAd) \
CFG80211_LostApInform((VOID *)__pAd);
#endif /*CONFIG_STA_SUPPORT*/
+
#ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE
-#define RT_CFG80211_LOST_GO_INFORM(__pAd) \
- CFG80211_LostP2pGoInform((VOID *)__pAd);
+#define RT_CFG80211_LOST_GO_INFORM(__pAd, _Reason) CFG80211_LostP2pGoInform((VOID *)__pAd, _Reason)
#endif /*RT_CFG80211_P2P_CONCURRENT_DEVICE*/
+
#define RT_CFG80211_REINIT(__pAd) \
CFG80211_SupBandReInit((VOID *)__pAd);
@@ -93,38 +94,38 @@
#ifdef SINGLE_SKU
-#define CFG80211_BANDINFO_FILL(__pAd, __pBandInfo) \
-{ \
- (__pBandInfo)->RFICType = __pAd->phy_ctrl.rf_band_cap; \
- (__pBandInfo)->MpduDensity = __pAd->CommonCfg.BACapability.field.MpduDensity;\
- (__pBandInfo)->TxStream = __pAd->CommonCfg.TxStream; \
- (__pBandInfo)->RxStream = __pAd->CommonCfg.RxStream; \
- (__pBandInfo)->MaxTxPwr = __pAd->CommonCfg.DefineMaxTxPwr; \
- if (WMODE_EQUAL(__pAd->CommonCfg.PhyMode, WMODE_B)) \
- (__pBandInfo)->FlgIsBMode = TRUE; \
- else \
- (__pBandInfo)->FlgIsBMode = FALSE; \
- (__pBandInfo)->MaxBssTable = MAX_LEN_OF_BSS_TABLE; \
- (__pBandInfo)->RtsThreshold = pAd->CommonCfg.RtsThreshold; \
- (__pBandInfo)->FragmentThreshold = pAd->CommonCfg.FragmentThreshold; \
- (__pBandInfo)->RetryMaxCnt = 0; \
+#define CFG80211_BANDINFO_FILL(__pAd, __pBandInfo) \
+{\
+(__pBandInfo)->RFICType = (UINT8)(__pAd->phy_ctrl.rf_band_cap); \
+ (__pBandInfo)->MpduDensity = (UINT8)(__pAd->CommonCfg.BACapability.field.MpduDensity);\
+ (__pBandInfo)->TxStream = (UINT8)(__pAd->CommonCfg.TxStream);\
+ (__pBandInfo)->RxStream = (UINT8)(__pAd->CommonCfg.RxStream);\
+ (__pBandInfo)->MaxTxPwr = (UINT32)(__pAd->CommonCfg.DefineMaxTxPwr);\
+ if (WMODE_EQUAL(__pAd->CommonCfg.PhyMode, WMODE_B)) \
+ (__pBandInfo)->FlgIsBMode = (BOOLEAN)(TRUE); \
+ else \
+ (__pBandInfo)->FlgIsBMode = (BOOLEAN)(FALSE); \
+ (__pBandInfo)->MaxBssTable = (UINT32)(MAX_LEN_OF_BSS_TABLE);\
+ (__pBandInfo)->RtsThreshold = (UINT16)(pAd->CommonCfg.RtsThreshold);\
+ (__pBandInfo)->FragmentThreshold = (UINT16)(pAd->CommonCfg.FragmentThreshold);\
+ (__pBandInfo)->RetryMaxCnt = (UINT32)0; \
}
#else
-#define CFG80211_BANDINFO_FILL(__pAd, __pBandInfo) \
-{ \
- (__pBandInfo)->RFICType = __pAd->phy_ctrl.rf_band_cap; \
- (__pBandInfo)->MpduDensity = __pAd->CommonCfg.BACapability.field.MpduDensity;\
- (__pBandInfo)->TxStream = __pAd->CommonCfg.TxStream; \
- (__pBandInfo)->RxStream = __pAd->CommonCfg.RxStream; \
- (__pBandInfo)->MaxTxPwr = 0; \
- if (WMODE_EQUAL(__pAd->CommonCfg.PhyMode, WMODE_B)) \
- (__pBandInfo)->FlgIsBMode = TRUE; \
- else \
- (__pBandInfo)->FlgIsBMode = FALSE; \
- (__pBandInfo)->MaxBssTable = MAX_LEN_OF_BSS_TABLE; \
- (__pBandInfo)->RtsThreshold = pAd->CommonCfg.RtsThreshold; \
- (__pBandInfo)->FragmentThreshold = pAd->CommonCfg.FragmentThreshold; \
- (__pBandInfo)->RetryMaxCnt = 0; \
+#define CFG80211_BANDINFO_FILL(__pAd, __pBandInfo) \
+{ \
+ (__pBandInfo)->RFICType = (UINT8)(__pAd->phy_ctrl.rf_band_cap);\
+ (__pBandInfo)->MpduDensity = (UINT8)(__pAd->CommonCfg.BACapability.field.MpduDensity);\
+ (__pBandInfo)->TxStream = (UINT8)(__pAd->CommonCfg.TxStream);\
+ (__pBandInfo)->RxStream = (UINT8)(__pAd->CommonCfg.RxStream);\
+ (__pBandInfo)->MaxTxPwr = (UINT32)0;\
+ if (WMODE_EQUAL(__pAd->CommonCfg.PhyMode, WMODE_B)) \
+ (__pBandInfo)->FlgIsBMode = (BOOLEAN)(TRUE);\
+ else \
+ (__pBandInfo)->FlgIsBMode = (BOOLEAN)(FALSE);\
+ (__pBandInfo)->MaxBssTable = (UINT32)(MAX_LEN_OF_BSS_TABLE);\
+ (__pBandInfo)->RtsThreshold = (UINT16)(pAd->CommonCfg.RtsThreshold);\
+ (__pBandInfo)->FragmentThreshold = (UINT16)(pAd->CommonCfg.FragmentThreshold);\
+ (__pBandInfo)->RetryMaxCnt = (UINT32)0;\
}
#endif /* SINGLE_SKU */
@@ -173,14 +174,14 @@ VOID CFG80211_ConnectResultInform(VOID *pAdCB, UCHAR *pBSSID,
VOID CFG80211DRV_PmkidConfig(VOID *pAdOrg, VOID *pData);
#ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE
-VOID CFG80211_LostP2pGoInform(VOID *pAdCB);
+VOID CFG80211_LostP2pGoInform(VOID *pAdCB, UINT16 Reason);
#endif /*RT_CFG80211_P2P_CONCURRENT_DEVICE*/
VOID CFG80211_LostApInform(VOID *pAdCB);
-INT CFG80211_StaPortSecured(VOID *pAdCB, UCHAR *pMac, UINT flag);
+INT CFG80211_StaPortSecured(VOID *pAdCB, const UCHAR *pMac, UINT flag);
/* AP Related*/
-INT CFG80211_ApStaDel(VOID *pAdCB, UCHAR *pMac);
+INT CFG80211_ApStaDel(VOID *pAdCB, const u8 *pMac);
VOID CFG80211_UpdateBeacon(VOID *pAdOrg,
UCHAR *beacon_head_buf, UINT32 beacon_head_len,
@@ -274,7 +275,7 @@ VOID CFG80211_RFKillStatusUpdate(
/* P2P Related */
VOID CFG80211DRV_SetP2pCliAssocIe(
VOID *pAdOrg,
- VOID *pData,
+ VOID const *pData,
UINT ie_len);
VOID CFG80211DRV_P2pClientKeyAdd(
@@ -329,6 +330,8 @@ BOOLEAN CFG80211_SyncPacketWmmIe(RTMP_ADAPTER *pAd, VOID *pData, ULONG dataLen);
BOOLEAN CFG80211_HandleP2pMgmtFrame(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk, UCHAR OpMode);
+INT CFG80211_SetTxNdev(RTMP_ADAPTER *pAd, PNET_DEV pNetdev);
+
INT CFG80211_SendMgmtFrame(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data);
#ifdef RT_CFG80211_P2P_SUPPORT
@@ -388,15 +391,17 @@ VOID CFG80211DRV_DisableApInterface(PRTMP_ADAPTER pAd);
BOOLEAN CFG80211DRV_OpsVifAdd(VOID *pAdOrg, VOID *pData);
#ifdef CFG_TDLS_SUPPORT
-BOOLEAN CFG80211DRV_StaTdlsInsertDeletepEntry(VOID *pAdOrg, VOID *pData, UINT Data);
+BOOLEAN CFG80211DRV_StaTdlsInsertDeletepEntry(VOID *pAdOrg, const VOID *pData, UINT Data);
BOOLEAN CFG80211_HandleTdlsDiscoverRespFrame(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk, UCHAR OpMode);
VOID cfg_tdls_send_PeerTrafficIndication(PRTMP_ADAPTER pAd, u8 *peer);
VOID cfg_tdls_rcv_PeerTrafficIndication(PRTMP_ADAPTER pAd,u8 dialog_token,u8 *peer);
VOID cfg_tdls_rcv_PeerTrafficResponse(PRTMP_ADAPTER pAd,u8 *peer);
INT cfg_tdls_search_wcid(PRTMP_ADAPTER pAd, u8 *peer);
INT cfg_tdls_search_ValidLinkIndex(PRTMP_ADAPTER pAd, u8 *peer);
-INT cfg_tlds_build_frame(PRTMP_ADAPTER pAd,u8 *peer,u8 dialog_token,u8 action_code,u16 status_code
- ,const u8 *extra_ies,size_t extra_ies_len,BOOLEAN send_by_tdls_link,u8 tdls_entry_wcid,u8 reason_code);
+INT cfg_tlds_build_frame(PRTMP_ADAPTER pAd, const u8 *peer,
+ u8 dialog_token, u8 action_code, u16 status_code,
+ const u8 *extra_ies, size_t extra_ies_len, BOOLEAN send_by_tdls_link,
+ u8 tdls_entry_wcid, u8 reason_code);
VOID cfg_tdls_UAPSDP_PsmModeChange(PRTMP_ADAPTER pAd,USHORT PsmOld,USHORT PsmNew);
BOOLEAN cfg_tdls_UAPSDP_AsicCanSleep(PRTMP_ADAPTER pAd);
INT cfg_tdls_EntryInfo_Display_Proc(PRTMP_ADAPTER pAd, PUCHAR arg);
@@ -407,8 +412,10 @@ VOID cfg_tdls_rx_parsing(PRTMP_ADAPTER pAd,RX_BLK *pRxBlk);
INT cfg_tdls_chsw_req(PRTMP_ADAPTER pAd,u8 *peer,u8 target_channel,u8 target_bw);
INT cfg_tdls_chsw_resp(PRTMP_ADAPTER pAd,u8 *peer,UINT32 ch_sw_time,UINT32 ch_sw_timeout,u8 reason_code);
VOID cfg_tdls_prepare_null_frame(PRTMP_ADAPTER pAd,BOOLEAN powersave,UCHAR dir,UCHAR *peerAddr);
-VOID cfg_tdls_TunneledProbeRequest(PRTMP_ADAPTER pAd, PUCHAR pMacAddr, const u8 *extra_ies, size_t extra_ies_len);
-VOID cfg_tdls_TunneledProbeResponse(PRTMP_ADAPTER pAd, PUCHAR pMacAddr, const u8 *extra_ies, size_t extra_ies_len);
+VOID cfg_tdls_TunneledProbeRequest(PRTMP_ADAPTER pAd, const u8 *pMacAddr,
+ const u8 *extra_ies, size_t extra_ies_len);
+VOID cfg_tdls_TunneledProbeResponse(PRTMP_ADAPTER pAd, const u8 *pMacAddr,
+ const u8 *extra_ies, size_t extra_ies_len);
VOID cfg_tdls_auto_teardown(PRTMP_ADAPTER pAd,UCHAR *peerAddr);
int cfg_tdls_send_CH_SW_SETUP(RTMP_ADAPTER *ad,UCHAR cmd,UINT8 basech,UINT8 offch,UCHAR bw_base,UCHAR bw_off,UCHAR responder
diff --git a/include/chip/mt7603.h b/include/chip/mt7603.h
index d2b5967..2d1f603 100755
--- a/include/chip/mt7603.h
+++ b/include/chip/mt7603.h
@@ -35,6 +35,12 @@ INT Set_MT7603LED_Enhance_Proc(struct _RTMP_ADAPTER *pAd, RTMP_STRING *arg);
INT Set_MT7603LED_Behavor_Proc(struct _RTMP_ADAPTER *pAd, RTMP_STRING *arg);
#endif /* LED_CONTROL_SUPPORT */
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+INT MTSmartCarrierSense(struct _RTMP_ADAPTER *pAd);
+/*INT ScsSetDftGainAtScanBegin(struct _RTMP_ADAPTER *pAd);
+INT ScsRestoreLastGainAtScanEnd(struct _RTMP_ADAPTER *pAd);
+INT ScsQuickCheckToSetDefGain(struct _RTMP_ADAPTER *pAd)*/;
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
#endif // __MT7603_H__
diff --git a/include/dot11i_wpa.h b/include/dot11i_wpa.h
index a9857db..530d79d 100755
--- a/include/dot11i_wpa.h
+++ b/include/dot11i_wpa.h
@@ -186,7 +186,7 @@ typedef struct GNU_PACKED _KEY_DESCRIPTER
UCHAR KeyId[LEN_KEY_DESC_ID];
UCHAR KeyMic[LEN_KEY_DESC_MIC];
UCHAR KeyDataLen[2];
- UCHAR KeyData[0];
+ UCHAR KeyData[];
} KEY_DESCRIPTER, *PKEY_DESCRIPTER;
typedef struct GNU_PACKED _EAPOL_PACKET
diff --git a/include/mac/mac_mt/mt_mac.h b/include/mac/mac_mt/mt_mac.h
index 49eb328..437fab1 100755
--- a/include/mac/mac_mt/mt_mac.h
+++ b/include/mac/mac_mt/mt_mac.h
@@ -1937,7 +1937,7 @@ typedef INT32 (*TXS_HANDLER)(struct _RTMP_ADAPTER *pAd, CHAR *Data, UINT32 Priv)
INT32 InitTxSTypeTable(struct _RTMP_ADAPTER *pAd);
INT32 ExitTxSTypeTable(struct _RTMP_ADAPTER *pAd);
-INT32 AddTxSTypePerPkt(struct _RTMP_ADAPTER *pAd, UINT32 Pid, UINT8 Format,
+INT32 AddTxSTypePerPkt(struct _RTMP_ADAPTER *pAd, UINT8 Pid, UINT8 Format,
TXS_HANDLER TxSHandler);
INT32 RemoveTxSTypePerPkt(struct _RTMP_ADAPTER *pAd, UINT32 Pid, UINT8 Format);
INT32 TxSTypeCtlPerPkt(struct _RTMP_ADAPTER *pAd, UINT32 Pid, UINT8 Format,
@@ -1964,7 +1964,7 @@ INT32 TxSTypeCtlPerPktType(struct _RTMP_ADAPTER *pAd, UINT8 Type, UINT8 Subtype,
BOOLEAN DumpTxSReport, ULONG DumpTxSReportTimes);
UINT8 AddTxSStatus(struct _RTMP_ADAPTER *pAd, UINT8 Type, UINT8 PktPid, UINT8 PktType,
UINT8 PktSubType, UINT16 TxRate, UINT32 Priv);
-INT32 RemoveTxSStatus(struct _RTMP_ADAPTER *pAd, UINT8 TxSPid, UINT8 *Type, UINT8 *PktPid,
+INT32 RemoveTxSStatus(struct _RTMP_ADAPTER *pAd, UINT32 TxSPid, UINT8 *Type, UINT8 *PktPid,
UINT8 *PktType, UINT8 *PktSubType, UINT16 *TxRate, UINT32 *Priv);
#ifdef CONFIG_TSO_SUPPORT
diff --git a/include/mac/mac_mt/mt_mac_usb.h b/include/mac/mac_mt/mt_mac_usb.h
index 40364cd..e99b978 100755
--- a/include/mac/mac_mt/mt_mac_usb.h
+++ b/include/mac/mac_mt/mt_mac_usb.h
@@ -659,19 +659,17 @@ typedef struct _CMD_RSP_CONTEXT
#define MT_ADDREMOVE_KEY(_pAd, _AddRemove, _BssIdx, _KeyIdx, _Wcid, _KeyTabFlag, _pCipherKey, _PeerAddr) \
{ \
- MT_ASIC_SEC_INFO Info; \
- \
- Info.AddRemove = _AddRemove; \
- Info.BssIdx = _BssIdx; \
- Info.KeyIdx = _KeyIdx; \
- Info.Wcid = _Wcid; \
- Info.KeyTabFlag = _KeyTabFlag; \
- Info.AddRemove = _AddRemove; \
- NdisMoveMemory(&Info.CipherKey, _pCipherKey, sizeof(CIPHER_KEY)); \
- NdisMoveMemory(Info.Addr, _PeerAddr, MAC_ADDR_LEN); \
- \
- RTEnqueueInternalCmd(_pAd, CMDTHREAD_ADDREMOVE_ASIC_KEY, \
- &Info, sizeof(MT_ASIC_SEC_INFO)); \
+ MT_ASIC_SEC_INFO Info; \
+ \
+ Info.AddRemove = (UCHAR)(_AddRemove);\
+ Info.BssIdx = (UCHAR)(_BssIdx); \
+ Info.KeyIdx = (UCHAR)(_KeyIdx); \
+ Info.Wcid = (UCHAR)(_Wcid); \
+ Info.KeyTabFlag = (UCHAR)(_KeyTabFlag); \
+ NdisMoveMemory(&Info.CipherKey, _pCipherKey, sizeof(CIPHER_KEY));\
+ NdisMoveMemory(Info.Addr, _PeerAddr, MAC_ADDR_LEN); \
+ RTEnqueueInternalCmd(_pAd, CMDTHREAD_ADDREMOVE_ASIC_KEY,\
+ &Info, sizeof(MT_ASIC_SEC_INFO));\
}
#define RTMP_OS_IRQ_RELEASE(_pAd, _NetDev)
diff --git a/include/mac/mac_mt/wf_phy.h b/include/mac/mac_mt/wf_phy.h
index f1462b6..1671c1d 100755
--- a/include/mac/mac_mt/wf_phy.h
+++ b/include/mac/mac_mt/wf_phy.h
@@ -20,6 +20,13 @@
#define CR_RFINTF_02 WF_PHY_BASE + 0x0208
#define CR_RFINTF_03 WF_PHY_BASE + 0x020C
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+#define CR_AGC_0 (WF_PHY_BASE + 0x0500)
+#define CR_AGC_0_RX1 (WF_PHY_BASE + 0x1500)
+#define CR_AGC_3 (WF_PHY_BASE + 0x050c)
+#define CR_AGC_3_RX1 (WF_PHY_BASE + 0x150c)
+#define CR_CCK_PD_TH (WF_PHY_BASE + 0x0614)
+#endif
#define RO_AGC_DEBUG_2 WF_PHY_BASE + 0x05A4
#define CR_RXTD_39 WF_PHY_BASE + 0x06F8
diff --git a/include/mcu/andes_mt.h b/include/mcu/andes_mt.h
index f4079c1..36b17e9 100755
--- a/include/mcu/andes_mt.h
+++ b/include/mcu/andes_mt.h
@@ -325,6 +325,9 @@ enum MT_EVENT_TYPE {
#define FW_FEATURE_RESET_IV (1 << 3)
#define GET_FEATURE_SET_KEY(p) (((p) & FW_FEATURE_SET_KEY_MASK) >> 1)
+#define FW_KEEP_ALIVE_ENABLE_MASK 0x80
+#define FW_KEEP_ALIVE_PERIOD_MASK 0xF /* max 15s */
+
/*
* Erro code for target address/length response
*/
@@ -623,7 +626,7 @@ typedef struct _BIN_CONTENT_T {
UINT8 ucReserved;
} BIN_CONTENT_T, *P_BIN_CONTENT_T;
-#define EFUSE_CONTENT_BUFFER_SIZE 0xff
+#define EFUSE_CONTENT_BUFFER_SIZE 0xf0
typedef struct _EXT_CMD_EFUSE_BUFFER_MODE_T {
UINT8 ucSourceMode;
UINT8 ucCount;
@@ -804,6 +807,8 @@ typedef struct _CMD_PACKET_FILTER_GLOBAL_T {
UINT32 PFType;
UINT32 FunctionSelect;
UINT32 Enable;
+ UINT8 extParam;
+ UINT8 resv[3];
} CMD_PACKET_FILTER_GLOBAL_T, *P_CMD_PACKET_FILTER_GLOBAL_T;
typedef struct _CMD_PACKET_FILTER_MAGIC_PACKET_T {
diff --git a/include/mcu/mt7603_e2_firmware.h b/include/mcu/mt7603_e2_firmware.h
index 03eafca..625d5c1 100755
--- a/include/mcu/mt7603_e2_firmware.h
+++ b/include/mcu/mt7603_e2_firmware.h
@@ -5,53 +5,53 @@
UCHAR MT7603_e2_FirmwareImage[] = {
0x46, 0x00, 0x01, 0x00, 0x58, 0x00, 0x02, 0x40, 0x4a, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0xbc,
0x46, 0x6a, 0x00, 0x00, 0x58, 0x63, 0x01, 0x7c, 0x04, 0x83, 0x00, 0x00, 0x54, 0x84, 0x00, 0xff,
-0x40, 0x04, 0x00, 0x10, 0x4e, 0x05, 0x00, 0x4c, 0x58, 0x04, 0x00, 0x00, 0x49, 0x00, 0x23, 0x80,
-0x10, 0x80, 0x00, 0x02, 0x44, 0x10, 0x00, 0x01, 0x49, 0x00, 0x28, 0xae, 0x44, 0x00, 0x00, 0x18,
+0x40, 0x04, 0x00, 0x10, 0x4e, 0x05, 0x00, 0x4c, 0x58, 0x04, 0x00, 0x00, 0x49, 0x00, 0x23, 0x86,
+0x10, 0x80, 0x00, 0x02, 0x44, 0x10, 0x00, 0x01, 0x49, 0x00, 0x28, 0xb4, 0x44, 0x00, 0x00, 0x18,
0x49, 0xf8, 0x16, 0x7c, 0x44, 0x50, 0x0f, 0xff, 0x58, 0xa0, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x0a,
0x44, 0x20, 0xee, 0xee, 0x14, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x36,
0x49, 0xf8, 0x16, 0x3e, 0x44, 0x70, 0x00, 0x00, 0x58, 0x90, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
0x44, 0x20, 0x00, 0x18, 0x49, 0xf8, 0x10, 0xaa, 0x58, 0x04, 0x80, 0x00, 0x44, 0x10, 0x00, 0x18,
-0x50, 0x94, 0x80, 0x0c, 0x58, 0x23, 0x80, 0x00, 0x50, 0x30, 0xff, 0xfc, 0x49, 0x00, 0x32, 0x9a,
+0x50, 0x94, 0x80, 0x0c, 0x58, 0x23, 0x80, 0x00, 0x50, 0x30, 0xff, 0xfc, 0x49, 0x00, 0x32, 0xe0,
0x14, 0x84, 0x80, 0x00, 0x14, 0x74, 0x80, 0x02, 0x14, 0x74, 0x80, 0x01, 0x14, 0x73, 0x00, 0x00,
0x58, 0x25, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x33, 0x80, 0x00,
0x49, 0xf8, 0x1a, 0x48, 0x58, 0x03, 0x80, 0x00, 0x48, 0x00, 0x00, 0x08, 0x44, 0x30, 0xdd, 0xdd,
0x14, 0x33, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0x00, 0x2f, 0x8a, 0x44, 0x50, 0x00, 0x6a,
+0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0x00, 0x2f, 0xd0, 0x44, 0x50, 0x00, 0x6a,
0x4c, 0x62, 0x80, 0x26, 0x5c, 0xf3, 0x00, 0x6b, 0x4e, 0xf2, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01,
0x4c, 0x62, 0x80, 0x1a, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xc0, 0x7c, 0x48, 0x00, 0x00, 0x10,
0x50, 0x52, 0x80, 0x0d, 0x4c, 0x62, 0x80, 0x28, 0x50, 0x52, 0x80, 0x01, 0x4c, 0x62, 0x80, 0x70,
0x50, 0x52, 0xff, 0xfd, 0x4c, 0x62, 0xc0, 0x6e, 0x48, 0x00, 0x00, 0x22, 0x49, 0xf8, 0x15, 0x9a,
-0x48, 0x00, 0x00, 0x68, 0x49, 0x00, 0x4e, 0x6e, 0x48, 0x00, 0x00, 0x64, 0x44, 0x00, 0x00, 0x02,
-0x49, 0x00, 0x30, 0x52, 0x2e, 0x87, 0xe5, 0x91, 0x4e, 0x82, 0x00, 0x5c, 0x2e, 0x07, 0xe5, 0x93,
-0x2e, 0x17, 0xe5, 0x92, 0x49, 0x00, 0x35, 0x6e, 0x44, 0x00, 0x00, 0x00, 0x3e, 0x07, 0xe5, 0x91,
-0x48, 0x00, 0x00, 0x50, 0x49, 0x00, 0x4b, 0x72, 0x48, 0x00, 0x00, 0x4c, 0x2e, 0x77, 0xe2, 0x18,
+0x48, 0x00, 0x00, 0x68, 0x49, 0x00, 0x4e, 0xb4, 0x48, 0x00, 0x00, 0x64, 0x44, 0x00, 0x00, 0x02,
+0x49, 0x00, 0x30, 0x98, 0x2e, 0x87, 0xe3, 0x31, 0x4e, 0x82, 0x00, 0x5c, 0x2e, 0x07, 0xe3, 0x33,
+0x2e, 0x17, 0xe3, 0x32, 0x49, 0x00, 0x35, 0xb4, 0x44, 0x00, 0x00, 0x00, 0x3e, 0x07, 0xe3, 0x31,
+0x48, 0x00, 0x00, 0x50, 0x49, 0x00, 0x4b, 0xb8, 0x48, 0x00, 0x00, 0x4c, 0x2e, 0x77, 0xdf, 0xb8,
0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0xc0, 0x1e, 0x46, 0x08, 0x00, 0x21, 0x04, 0x50, 0x00, 0x44,
-0x44, 0x84, 0x00, 0x00, 0x40, 0x42, 0xa0, 0x02, 0x4e, 0x43, 0x00, 0x3c, 0x2f, 0xe7, 0xe5, 0x80,
+0x44, 0x84, 0x00, 0x00, 0x40, 0x42, 0xa0, 0x02, 0x4e, 0x43, 0x00, 0x3c, 0x2f, 0xe7, 0xe3, 0x20,
0x4f, 0xe2, 0x00, 0x38, 0x46, 0x45, 0x00, 0x25, 0x04, 0x32, 0x01, 0xf1, 0x44, 0x50, 0x00, 0x90,
-0x54, 0x71, 0x80, 0x90, 0x4c, 0x72, 0x80, 0x28, 0x3e, 0x0f, 0xe5, 0x83, 0x48, 0x00, 0x00, 0x20,
-0x3e, 0x88, 0x02, 0x88, 0x00, 0x54, 0x00, 0x00, 0x4e, 0x52, 0x00, 0x08, 0x2e, 0x07, 0xe2, 0x19,
+0x54, 0x71, 0x80, 0x90, 0x4c, 0x72, 0x80, 0x28, 0x3e, 0x0f, 0xe3, 0x23, 0x48, 0x00, 0x00, 0x20,
+0x3e, 0x88, 0x02, 0x88, 0x00, 0x54, 0x00, 0x00, 0x4e, 0x52, 0x00, 0x08, 0x2e, 0x07, 0xdf, 0xb9,
0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1e, 0x46, 0x45, 0x00, 0x25, 0x04, 0x32, 0x01, 0xf1,
-0x44, 0x50, 0x00, 0x90, 0x54, 0x71, 0x80, 0x90, 0x4c, 0x72, 0x80, 0x08, 0x3e, 0x8f, 0xe5, 0x83,
-0x00, 0x54, 0x00, 0x00, 0x4e, 0x52, 0x00, 0x0e, 0x3e, 0x0f, 0xe5, 0x80, 0x00, 0x00, 0x00, 0x00,
+0x44, 0x50, 0x00, 0x90, 0x54, 0x71, 0x80, 0x90, 0x4c, 0x72, 0x80, 0x08, 0x3e, 0x8f, 0xe3, 0x23,
+0x00, 0x54, 0x00, 0x00, 0x4e, 0x52, 0x00, 0x0e, 0x3e, 0x0f, 0xe3, 0x20, 0x00, 0x00, 0x00, 0x00,
0x4e, 0x02, 0x00, 0x08, 0x49, 0xf8, 0x37, 0x82, 0x48, 0x00, 0x00, 0x04, 0x49, 0x00, 0x04, 0x4c,
-0x49, 0x00, 0x20, 0x9a, 0x49, 0x00, 0x50, 0xd0, 0x58, 0x10, 0x00, 0x00, 0x44, 0x70, 0x00, 0x00,
+0x49, 0x00, 0x20, 0xa0, 0x49, 0x00, 0x51, 0x14, 0x58, 0x10, 0x00, 0x00, 0x44, 0x70, 0x00, 0x00,
0x58, 0x03, 0x00, 0x00, 0x44, 0x6f, 0xff, 0xff, 0x40, 0x83, 0x84, 0x1b, 0x40, 0x83, 0x04, 0x1a,
-0x49, 0x00, 0x2e, 0xb8, 0x44, 0x00, 0x00, 0x02, 0x49, 0xf8, 0x07, 0x10, 0x44, 0x00, 0x00, 0x02,
+0x49, 0x00, 0x2e, 0xfa, 0x44, 0x00, 0x00, 0x02, 0x49, 0xf8, 0x07, 0x10, 0x44, 0x00, 0x00, 0x02,
0x49, 0xf8, 0x06, 0xe4, 0x44, 0x00, 0x00, 0x08, 0x49, 0xf8, 0x07, 0x08, 0x44, 0x00, 0x00, 0x08,
0x49, 0xf8, 0x06, 0xdc, 0x58, 0x04, 0x00, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0xa7, 0x34, 0x46, 0x28, 0x00, 0x21,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0xa6, 0x0a, 0x46, 0x28, 0x00, 0x21,
0x04, 0x01, 0x00, 0x04, 0x46, 0x10, 0x20, 0x00, 0x40, 0x00, 0x04, 0x02, 0x4e, 0x02, 0x00, 0x26,
0x47, 0xc5, 0x00, 0x29, 0x44, 0x00, 0x00, 0x02, 0x44, 0x10, 0x00, 0x00, 0x3e, 0x2e, 0x9c, 0x48,
0x49, 0xf8, 0x2d, 0x78, 0x04, 0x1e, 0x00, 0x08, 0x46, 0x85, 0x00, 0x29, 0x58, 0x00, 0x84, 0x00,
0x14, 0x0e, 0x00, 0x08, 0x04, 0xa4, 0x00, 0x84, 0x46, 0x75, 0x00, 0x22, 0x58, 0x95, 0x00, 0x01,
-0x44, 0x50, 0xff, 0xff, 0x3e, 0x4f, 0x6e, 0x10, 0x14, 0x94, 0x00, 0x84, 0x14, 0x53, 0x82, 0x08,
-0x3c, 0x4f, 0xff, 0xb9, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe4, 0x78, 0x49, 0x00, 0x00, 0x74,
-0x49, 0x00, 0x05, 0x0c, 0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x50, 0x6a, 0x49, 0x00, 0x00, 0xa8,
-0x46, 0x58, 0x00, 0x21, 0x58, 0x52, 0x81, 0x34, 0x04, 0x82, 0x80, 0x00, 0x3e, 0x0f, 0xc8, 0xf4,
+0x44, 0x50, 0xff, 0xff, 0x3e, 0x4f, 0x6f, 0x48, 0x14, 0x94, 0x00, 0x84, 0x14, 0x53, 0x82, 0x08,
+0x3c, 0x4f, 0xff, 0xb9, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe2, 0x18, 0x49, 0x00, 0x00, 0x74,
+0x49, 0x00, 0x05, 0x0c, 0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x50, 0xae, 0x49, 0x00, 0x00, 0xa8,
+0x46, 0x58, 0x00, 0x21, 0x58, 0x52, 0x81, 0x34, 0x04, 0x82, 0x80, 0x00, 0x3e, 0x0f, 0xc6, 0xa0,
0x58, 0x74, 0x00, 0x02, 0x14, 0x72, 0x80, 0x00, 0x04, 0x12, 0x80, 0x00, 0x49, 0x00, 0x00, 0xce,
0x46, 0x48, 0x00, 0x21, 0x04, 0x32, 0x00, 0x04, 0x42, 0x61, 0xe4, 0x0b, 0x4e, 0x63, 0x00, 0x04,
-0x49, 0x00, 0x03, 0x88, 0x46, 0x78, 0x00, 0x00, 0x3f, 0xce, 0x91, 0xac, 0x2e, 0x17, 0xe4, 0x8c,
-0x50, 0x00, 0x80, 0x01, 0x55, 0xe0, 0x00, 0xff, 0x3f, 0xe7, 0xe4, 0x8c, 0x4f, 0xe3, 0x00, 0x12,
+0x49, 0x00, 0x03, 0x88, 0x46, 0x78, 0x00, 0x00, 0x3f, 0xce, 0x91, 0xac, 0x2e, 0x17, 0xe2, 0x2c,
+0x50, 0x00, 0x80, 0x01, 0x55, 0xe0, 0x00, 0xff, 0x3f, 0xe7, 0xe2, 0x2c, 0x4f, 0xe3, 0x00, 0x12,
0x05, 0xe3, 0x80, 0x80, 0x04, 0x53, 0x80, 0x80, 0x50, 0x22, 0x80, 0x01, 0x40, 0x4f, 0x20, 0x09,
0x40, 0x42, 0x20, 0x08, 0x54, 0x31, 0x00, 0xff, 0x40, 0x61, 0x90, 0x04, 0x14, 0x63, 0x80, 0x80,
0x49, 0xf8, 0x0b, 0xb2, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x02, 0xff, 0xe2, 0x04, 0x10, 0x00, 0x01,
@@ -60,26 +60,26 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x49, 0xf8, 0x0c, 0x2c, 0x49, 0xf8, 0x0b, 0x7c, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0xff, 0xf6,
0x48, 0x00, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x49, 0xf8, 0x0c, 0x20, 0x48, 0xff, 0xff, 0xc0,
0x49, 0xf8, 0x14, 0x68, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x2f, 0xc9, 0x14,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x2f, 0xc6, 0xc0,
0x44, 0x00, 0x00, 0x02, 0x3e, 0x1e, 0x94, 0xa8, 0x49, 0xf8, 0x05, 0xa4, 0x44, 0x10, 0x00, 0x00,
0x44, 0x00, 0x00, 0x02, 0x49, 0xf8, 0x05, 0xc6, 0x44, 0x00, 0x00, 0x02, 0x49, 0xf8, 0x06, 0x16,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x00, 0x00, 0x02, 0x49, 0xf8, 0x05, 0xe0, 0x3e, 0x0f, 0xc9, 0x1c,
-0x49, 0x00, 0x00, 0x4c, 0x2e, 0x27, 0xe4, 0x8d, 0x4e, 0x23, 0x00, 0x0c, 0x44, 0x40, 0x00, 0x01,
-0x3e, 0x47, 0xe4, 0x8d, 0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x64, 0x49, 0xf8, 0x33, 0xfa,
+0x51, 0xff, 0xff, 0xfc, 0x44, 0x00, 0x00, 0x02, 0x49, 0xf8, 0x05, 0xe0, 0x3e, 0x0f, 0xc6, 0xc8,
+0x49, 0x00, 0x00, 0x4c, 0x2e, 0x27, 0xe2, 0x2d, 0x4e, 0x23, 0x00, 0x0c, 0x44, 0x40, 0x00, 0x01,
+0x3e, 0x47, 0xe2, 0x2d, 0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x64, 0x49, 0xf8, 0x33, 0xfa,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14, 0x3e, 0x0f, 0xf9, 0xcc,
-0x49, 0xf8, 0x0e, 0xd4, 0x49, 0x00, 0x30, 0x04, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x51, 0xff, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14, 0x3e, 0x0f, 0xf7, 0x6c,
+0x49, 0xf8, 0x0e, 0xd4, 0x49, 0x00, 0x30, 0x4a, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x04, 0x20, 0x80, 0x00, 0x18, 0x01, 0x00, 0x01,
0x44, 0x00, 0x00, 0x00, 0x14, 0x20, 0x80, 0x00, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
0x58, 0x60, 0x00, 0x00, 0x58, 0x33, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00, 0x58, 0x11, 0x00, 0x00,
0x3e, 0x2e, 0x95, 0x14, 0x49, 0xf8, 0x0c, 0x34, 0x44, 0x20, 0x00, 0x00, 0x38, 0x23, 0x00, 0x08,
0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x1f, 0x94, 0x3c, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xf8, 0x2e, 0x27, 0xe1, 0xc0, 0x44, 0x30, 0x00, 0x01, 0x58, 0x10, 0x00, 0x00,
+0x51, 0xff, 0xff, 0xf8, 0x2e, 0x27, 0xdf, 0x60, 0x44, 0x30, 0x00, 0x01, 0x58, 0x10, 0x00, 0x00,
0x4c, 0x21, 0xc0, 0x0a, 0x50, 0x1f, 0x80, 0x0c, 0x14, 0x1f, 0x80, 0x01, 0x49, 0xf8, 0x0e, 0x50,
0x48, 0x00, 0x00, 0x18, 0x44, 0x00, 0x00, 0x02, 0x4c, 0x20, 0x40, 0x14, 0x50, 0x2f, 0x80, 0x0c,
-0x3e, 0x0f, 0xe4, 0x9c, 0x14, 0x2f, 0x80, 0x01, 0x49, 0xff, 0xff, 0xca, 0x3e, 0x0f, 0xe4, 0x9c,
-0x49, 0xf8, 0x0f, 0x36, 0x58, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xe4, 0x9c, 0x49, 0x00, 0x31, 0x28,
+0x3e, 0x0f, 0xe2, 0x3c, 0x14, 0x2f, 0x80, 0x01, 0x49, 0xff, 0xff, 0xca, 0x3e, 0x0f, 0xe2, 0x3c,
+0x49, 0xf8, 0x0f, 0x36, 0x58, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xe2, 0x3c, 0x49, 0x00, 0x31, 0x6e,
0x51, 0xff, 0x80, 0x08, 0x3b, 0xff, 0xfc, 0x84, 0x51, 0xff, 0x80, 0x14, 0x4a, 0x00, 0x78, 0x20,
0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x44, 0x60, 0x00, 0x00, 0x54, 0x21, 0x00, 0xff,
0x54, 0x70, 0x80, 0xff, 0x54, 0x41, 0x80, 0xff, 0x58, 0x13, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00,
@@ -116,12 +116,12 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x58, 0x33, 0x00, 0x00, 0x58, 0x52, 0x00, 0x00, 0x14, 0x7f, 0x80, 0x03, 0x14, 0x6f, 0x80, 0x00,
0x14, 0x6f, 0x80, 0x01, 0x14, 0x6f, 0x80, 0x02, 0x49, 0x00, 0x1a, 0x42, 0x51, 0xff, 0x80, 0x14,
0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00,
-0x54, 0x10, 0x80, 0xff, 0x49, 0xff, 0xff, 0xd8, 0x42, 0x23, 0x40, 0x08, 0x3e, 0x0f, 0xe5, 0x64,
-0x3e, 0x1e, 0x9a, 0x18, 0x49, 0x00, 0x4a, 0xf6, 0x3e, 0x0f, 0xe5, 0x64, 0x44, 0x10, 0x13, 0x88,
-0x49, 0x00, 0x4c, 0x00, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x54, 0x10, 0x80, 0xff, 0x49, 0xff, 0xff, 0xd8, 0x42, 0x23, 0x40, 0x08, 0x3e, 0x0f, 0xe3, 0x04,
+0x3e, 0x1e, 0x9a, 0x18, 0x49, 0x00, 0x4b, 0x3c, 0x3e, 0x0f, 0xe3, 0x04, 0x44, 0x10, 0x13, 0x88,
+0x49, 0x00, 0x4c, 0x46, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
0x54, 0x10, 0x80, 0xff, 0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xff, 0xbe, 0x44, 0x03, 0x00, 0x00,
-0x40, 0x23, 0x00, 0x04, 0x3e, 0x1e, 0x9a, 0x18, 0x3e, 0x0f, 0xe5, 0x64, 0x49, 0x00, 0x4a, 0xda,
-0x3e, 0x0f, 0xe5, 0x64, 0x44, 0x10, 0x13, 0x88, 0x49, 0x00, 0x4b, 0xe4, 0x3a, 0x6f, 0x98, 0x84,
+0x40, 0x23, 0x00, 0x04, 0x3e, 0x1e, 0x9a, 0x18, 0x3e, 0x0f, 0xe3, 0x04, 0x49, 0x00, 0x4b, 0x20,
+0x3e, 0x0f, 0xe3, 0x04, 0x44, 0x10, 0x13, 0x88, 0x49, 0x00, 0x4c, 0x2a, 0x3a, 0x6f, 0x98, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x30, 0x80, 0xff,
0x54, 0x41, 0x00, 0xff, 0x44, 0x10, 0x00, 0x03, 0x44, 0x20, 0x00, 0x07, 0x49, 0x00, 0x1a, 0x90,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
@@ -132,8 +132,8 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x40, 0x7f, 0x00, 0x02, 0x14, 0x74, 0x00, 0x00, 0x40, 0xa0, 0x98, 0x08, 0x05, 0xc4, 0x00, 0x00,
0x44, 0x70, 0x00, 0x00, 0x40, 0x95, 0x70, 0x04, 0x14, 0x94, 0x00, 0x00, 0x48, 0x00, 0x00, 0x90,
0x04, 0x03, 0x00, 0x00, 0x04, 0x53, 0x00, 0x01, 0x5c, 0xf0, 0x00, 0x04, 0x4e, 0xf2, 0x00, 0x82,
-0x42, 0x42, 0xf8, 0x0b, 0x56, 0x12, 0x00, 0x01, 0x3e, 0x17, 0xe5, 0x7d, 0x40, 0x22, 0xfc, 0x09,
-0x3e, 0x47, 0xe5, 0x7c, 0x3e, 0x27, 0xe5, 0x7e, 0x54, 0x32, 0x80, 0xff, 0x45, 0xe0, 0x00, 0x05,
+0x42, 0x42, 0xf8, 0x0b, 0x56, 0x12, 0x00, 0x01, 0x3e, 0x17, 0xe3, 0x1d, 0x40, 0x22, 0xfc, 0x09,
+0x3e, 0x47, 0xe3, 0x1c, 0x3e, 0x27, 0xe3, 0x1e, 0x54, 0x32, 0x80, 0xff, 0x45, 0xe0, 0x00, 0x05,
0x4c, 0x3f, 0x00, 0x52, 0x5c, 0xf1, 0x80, 0x06, 0x4e, 0xf2, 0x00, 0x1c, 0x44, 0x50, 0x00, 0x02,
0x4c, 0x32, 0x80, 0x3c, 0x5c, 0xf1, 0x80, 0x03, 0x4e, 0xf2, 0x00, 0x0a, 0x4e, 0x32, 0x00, 0x2e,
0x44, 0x50, 0x00, 0x01, 0x4c, 0x32, 0xc0, 0x5e, 0x48, 0x00, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x03,
@@ -153,17 +153,17 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
0x40, 0x10, 0x40, 0x09, 0x40, 0x60, 0x00, 0x13, 0x54, 0x10, 0x80, 0xff, 0x44, 0x00, 0x00, 0x02,
0x4c, 0x10, 0x00, 0x20, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x12, 0x80, 0x26, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x12, 0xc0, 0x28, 0x2e, 0x17, 0xe5, 0x7d, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x8a,
-0x42, 0x23, 0x44, 0x08, 0x3e, 0x0f, 0xe5, 0x64, 0x3e, 0x1e, 0x9a, 0x18, 0x49, 0x00, 0x49, 0xca,
-0x3e, 0x0f, 0xe5, 0x64, 0x44, 0x10, 0x0b, 0xb8, 0x49, 0x00, 0x4a, 0xd4, 0x48, 0x00, 0x00, 0x12,
-0x2e, 0x17, 0xe5, 0x7c, 0x2e, 0x27, 0xe5, 0x7e, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xec,
-0x48, 0x00, 0x00, 0x08, 0x2e, 0x17, 0xe5, 0x7d, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x6a,
+0x4c, 0x12, 0xc0, 0x28, 0x2e, 0x17, 0xe3, 0x1d, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x8a,
+0x42, 0x23, 0x44, 0x08, 0x3e, 0x0f, 0xe3, 0x04, 0x3e, 0x1e, 0x9a, 0x18, 0x49, 0x00, 0x4a, 0x10,
+0x3e, 0x0f, 0xe3, 0x04, 0x44, 0x10, 0x0b, 0xb8, 0x49, 0x00, 0x4b, 0x1a, 0x48, 0x00, 0x00, 0x12,
+0x2e, 0x17, 0xe3, 0x1c, 0x2e, 0x27, 0xe3, 0x1e, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xec,
+0x48, 0x00, 0x00, 0x08, 0x2e, 0x17, 0xe3, 0x1d, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x6a,
0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x46, 0x68, 0x00, 0x23, 0x58, 0x63, 0x00, 0x80, 0x04, 0x13, 0x00, 0x00, 0x3e, 0x0f, 0xc9, 0x28,
+0x46, 0x68, 0x00, 0x23, 0x58, 0x63, 0x00, 0x80, 0x04, 0x13, 0x00, 0x00, 0x3e, 0x0f, 0xc6, 0xd4,
0x49, 0xff, 0xfd, 0x54, 0x04, 0x33, 0x00, 0x00, 0x46, 0x2f, 0xf8, 0xff, 0x58, 0x21, 0x0f, 0xff,
-0x40, 0x11, 0x88, 0x02, 0x14, 0x13, 0x00, 0x00, 0x3e, 0x0f, 0xc9, 0x40, 0x04, 0x13, 0x00, 0x00,
+0x40, 0x11, 0x88, 0x02, 0x14, 0x13, 0x00, 0x00, 0x3e, 0x0f, 0xc6, 0xec, 0x04, 0x13, 0x00, 0x00,
0x49, 0xff, 0xfd, 0x44, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xc9, 0x54, 0x49, 0xff, 0xfd, 0x36,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xc7, 0x00, 0x49, 0xff, 0xfd, 0x36,
0x46, 0x18, 0x00, 0x21, 0x04, 0x30, 0x80, 0x4c, 0x44, 0x00, 0x00, 0x00, 0x42, 0x21, 0xbc, 0x08,
0x14, 0x20, 0x80, 0x4c, 0x58, 0x40, 0x00, 0x00, 0x58, 0x20, 0x00, 0x00, 0x3e, 0x3e, 0x9b, 0x34,
0x58, 0x10, 0x00, 0x00, 0x49, 0xf8, 0x04, 0xaa, 0x44, 0x00, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00,
@@ -171,8 +171,8 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
0x44, 0x00, 0x00, 0x00, 0x49, 0xf8, 0x03, 0xb6, 0x44, 0x10, 0x00, 0x78, 0x44, 0x20, 0x00, 0x00,
0x44, 0x00, 0x00, 0x01, 0x49, 0xf8, 0x30, 0xbe, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xc9, 0x78,
-0x49, 0xff, 0xfc, 0xf4, 0x49, 0x00, 0x2c, 0xb6, 0x44, 0x00, 0x00, 0x00, 0x49, 0x00, 0x4c, 0x78,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xc7, 0x24,
+0x49, 0xff, 0xfc, 0xf4, 0x49, 0x00, 0x2c, 0xfc, 0x44, 0x00, 0x00, 0x00, 0x49, 0x00, 0x4c, 0xbc,
0x46, 0x08, 0x00, 0x21, 0x04, 0x20, 0x00, 0x4d, 0x42, 0x41, 0x04, 0x09, 0x14, 0x40, 0x00, 0x4d,
0x58, 0x10, 0x00, 0x00, 0x04, 0x30, 0x80, 0x40, 0x40, 0x21, 0x88, 0x09, 0x40, 0x21, 0x08, 0x08,
0x14, 0x20, 0x80, 0x40, 0x04, 0x40, 0x00, 0x4c, 0x46, 0x58, 0x10, 0x80, 0x42, 0x32, 0x78, 0x08,
@@ -180,11 +180,11 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x44, 0x30, 0x22, 0x01, 0x44, 0x00, 0x19, 0x71, 0x14, 0x42, 0x80, 0x0d, 0x14, 0x31, 0x00, 0x0c,
0x14, 0x00, 0x80, 0x0e, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
0x46, 0x1a, 0x00, 0x00, 0x54, 0x00, 0x00, 0xff, 0x04, 0x20, 0x80, 0x00, 0x4e, 0x02, 0x00, 0x2a,
-0x58, 0x21, 0x00, 0x01, 0x14, 0x20, 0x80, 0x00, 0x2e, 0x07, 0xe4, 0x78, 0x4e, 0x03, 0x00, 0x04,
-0x48, 0x00, 0x00, 0x0a, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x20, 0x2e, 0x47, 0xe1, 0xc1,
+0x58, 0x21, 0x00, 0x01, 0x14, 0x20, 0x80, 0x00, 0x2e, 0x07, 0xe2, 0x18, 0x4e, 0x03, 0x00, 0x04,
+0x48, 0x00, 0x00, 0x0a, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x20, 0x2e, 0x47, 0xdf, 0x61,
0x4c, 0x40, 0x40, 0x14, 0x46, 0x05, 0x00, 0x00, 0x58, 0x00, 0x05, 0x94, 0x04, 0x50, 0x00, 0x00,
0x58, 0x42, 0x81, 0x00, 0x14, 0x40, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x42, 0x11, 0xa0, 0x09,
-0x14, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x3e, 0x07, 0xe5, 0x7f, 0x48, 0x00, 0x00, 0x06,
+0x14, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x3e, 0x07, 0xe3, 0x1f, 0x48, 0x00, 0x00, 0x06,
0x42, 0x31, 0x00, 0x09, 0x14, 0x30, 0x80, 0x00, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x05, 0x00, 0x29,
0x04, 0x20, 0x00, 0x84, 0x58, 0x11, 0x00, 0x01, 0x14, 0x10, 0x00, 0x84, 0x4a, 0x00, 0x78, 0x20,
0x3a, 0x6f, 0x98, 0x3c, 0x46, 0x05, 0x00, 0x22, 0x58, 0x00, 0x08, 0x04, 0x44, 0x10, 0x00, 0x00,
@@ -204,10 +204,10 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x4a, 0x00, 0x78, 0x20, 0x46, 0x45, 0x00, 0x22, 0x04, 0x22, 0x00, 0x40, 0x46, 0x30, 0x04, 0x00,
0x40, 0x21, 0x0c, 0x02, 0x4e, 0x22, 0x00, 0x04, 0x44, 0x20, 0x00, 0x01, 0x14, 0x20, 0x80, 0x00,
0x2e, 0x10, 0x00, 0x03, 0x4e, 0x12, 0x00, 0x0a, 0x44, 0x50, 0x00, 0x01, 0x14, 0x50, 0x00, 0x00,
-0x3e, 0x57, 0xe5, 0x81, 0x48, 0x00, 0x00, 0x04, 0x14, 0x10, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20,
+0x3e, 0x57, 0xe3, 0x21, 0x48, 0x00, 0x00, 0x04, 0x14, 0x10, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20,
0x02, 0x30, 0x80, 0x03, 0x02, 0x20, 0x80, 0x01, 0x02, 0x00, 0x80, 0x02, 0x44, 0x10, 0x00, 0x01,
0x3c, 0x3e, 0x00, 0x04, 0x4c, 0x20, 0xc0, 0x08, 0x5c, 0xf0, 0x00, 0x02, 0x4e, 0xf2, 0x00, 0x04,
-0x3e, 0x07, 0xe5, 0x82, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xb4,
+0x3e, 0x07, 0xe3, 0x22, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xb4,
0x3e, 0x5e, 0xa0, 0xf4, 0x45, 0xc0, 0x54, 0xd0, 0x40, 0x42, 0xf0, 0x01, 0x14, 0x4f, 0x80, 0x0e,
0x3e, 0x8e, 0xa1, 0x70, 0x44, 0x90, 0x6a, 0x4c, 0x46, 0x40, 0x20, 0x00, 0x14, 0x4f, 0x80, 0x02,
0x40, 0x74, 0x24, 0x01, 0x3e, 0x1e, 0x9b, 0xdc, 0x44, 0x20, 0x31, 0x5c, 0x3e, 0x3e, 0xa1, 0xfc,
@@ -243,18 +243,18 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x14, 0x64, 0x00, 0x13, 0x15, 0xc3, 0x80, 0x14, 0x14, 0x22, 0x80, 0x15, 0x44, 0x20, 0x5c, 0xd4,
0x14, 0x22, 0x00, 0x16, 0x14, 0x01, 0x80, 0x17, 0x44, 0x00, 0x00, 0xff, 0x14, 0x00, 0x80, 0x00,
0x51, 0xff, 0x80, 0x4c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x60, 0x00, 0x00, 0x3e, 0x67, 0xe1, 0xc1, 0x49, 0xf8, 0x2d, 0xa0,
+0x51, 0xff, 0xff, 0xfc, 0x44, 0x60, 0x00, 0x00, 0x3e, 0x67, 0xdf, 0x61, 0x49, 0xf8, 0x2d, 0xa0,
0x46, 0x45, 0x00, 0x29, 0x04, 0x02, 0x00, 0x09, 0x46, 0x10, 0x01, 0x15, 0x58, 0x50, 0x04, 0x00,
-0x14, 0x52, 0x00, 0x09, 0x44, 0x30, 0x00, 0x01, 0x2e, 0x07, 0xe5, 0x7f, 0x44, 0x50, 0x00, 0x01,
-0x3e, 0x37, 0xe1, 0xc1, 0x4c, 0x02, 0xc0, 0x14, 0x47, 0xe5, 0x00, 0x00, 0x59, 0xef, 0x05, 0x94,
+0x14, 0x52, 0x00, 0x09, 0x44, 0x30, 0x00, 0x01, 0x2e, 0x07, 0xe3, 0x1f, 0x44, 0x50, 0x00, 0x01,
+0x3e, 0x37, 0xdf, 0x61, 0x4c, 0x02, 0xc0, 0x14, 0x47, 0xe5, 0x00, 0x00, 0x59, 0xef, 0x05, 0x94,
0x04, 0x0f, 0x00, 0x00, 0x58, 0x50, 0x01, 0x00, 0x14, 0x5f, 0x00, 0x00, 0x04, 0x4f, 0x00, 0x00,
-0x42, 0x22, 0x20, 0x09, 0x14, 0x2f, 0x00, 0x00, 0x3e, 0x67, 0xe5, 0x7f, 0x51, 0xff, 0x80, 0x04,
+0x42, 0x22, 0x20, 0x09, 0x14, 0x2f, 0x00, 0x00, 0x3e, 0x67, 0xe3, 0x1f, 0x51, 0xff, 0x80, 0x04,
0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
0x44, 0x00, 0x00, 0x00, 0x44, 0x10, 0x00, 0x08, 0x3e, 0x28, 0x07, 0x00, 0x49, 0xf8, 0x27, 0x5a,
-0x2e, 0x07, 0xe5, 0x81, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1a, 0x46, 0x55, 0x00, 0x22,
+0x2e, 0x07, 0xe3, 0x21, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1a, 0x46, 0x55, 0x00, 0x22,
0x58, 0x52, 0x81, 0x00, 0x05, 0xe2, 0x80, 0x00, 0x04, 0x02, 0x80, 0x00, 0x42, 0x30, 0x7c, 0x08,
0x14, 0x32, 0x80, 0x00, 0x04, 0x22, 0x80, 0x00, 0x44, 0x30, 0x00, 0x00, 0x42, 0x01, 0x7c, 0x09,
-0x14, 0x02, 0x80, 0x00, 0x15, 0xe2, 0x80, 0x00, 0x3e, 0x37, 0xe5, 0x81, 0x3e, 0x08, 0x07, 0x00,
+0x14, 0x02, 0x80, 0x00, 0x15, 0xe2, 0x80, 0x00, 0x3e, 0x37, 0xe3, 0x21, 0x3e, 0x08, 0x07, 0x00,
0x00, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00, 0x54, 0x10, 0x80, 0x60, 0x14, 0x20, 0x00, 0x0e,
0x4e, 0x12, 0x00, 0x08, 0x44, 0x50, 0x00, 0x40, 0x4c, 0x12, 0xc0, 0x14, 0x48, 0x00, 0x00, 0x0a,
0x58, 0x10, 0x00, 0x00, 0x50, 0x00, 0x00, 0x28, 0x49, 0xf8, 0x23, 0xfa, 0x48, 0x00, 0x00, 0x10,
@@ -269,51 +269,51 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x44, 0x30, 0x00, 0x03, 0x10, 0x23, 0x00, 0x20, 0x14, 0x33, 0x00, 0x03, 0x14, 0x23, 0x00, 0x06,
0x58, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0xa0, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x00, 0x01, 0x15,
-0x2e, 0x17, 0xe5, 0x80, 0x4e, 0x12, 0x00, 0x38, 0x44, 0x40, 0x00, 0x00, 0x3e, 0x47, 0xe5, 0x80,
+0x2e, 0x17, 0xe3, 0x20, 0x4e, 0x12, 0x00, 0x38, 0x44, 0x40, 0x00, 0x00, 0x3e, 0x47, 0xe3, 0x20,
0x49, 0xf8, 0x2f, 0xf2, 0x49, 0xf8, 0x30, 0x34, 0x46, 0x38, 0x00, 0x21, 0x04, 0x21, 0x80, 0x4d,
-0x54, 0x01, 0x00, 0x02, 0x4e, 0x02, 0x00, 0x16, 0x2e, 0x57, 0xe2, 0x18, 0x44, 0x10, 0x00, 0x01,
-0x4c, 0x50, 0x80, 0x12, 0x2e, 0x57, 0xe2, 0x19, 0x4c, 0x50, 0x80, 0x0e, 0x2e, 0x17, 0xfa, 0xbc,
+0x54, 0x01, 0x00, 0x02, 0x4e, 0x02, 0x00, 0x16, 0x2e, 0x57, 0xdf, 0xb8, 0x44, 0x10, 0x00, 0x01,
+0x4c, 0x50, 0x80, 0x12, 0x2e, 0x57, 0xdf, 0xb9, 0x4c, 0x50, 0x80, 0x0e, 0x2e, 0x17, 0xf8, 0x5c,
0x4e, 0x13, 0x00, 0x0a, 0x3c, 0x4d, 0xff, 0xb9, 0x4b, 0xe0, 0x10, 0x01, 0x48, 0x00, 0x00, 0x04,
0x49, 0xf8, 0x0e, 0xbc, 0x47, 0xe8, 0x00, 0x21, 0x59, 0xef, 0x01, 0x00, 0x04, 0x3f, 0x00, 0x00,
0x58, 0x11, 0x80, 0x10, 0x14, 0x1f, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x00, 0x58, 0x01, 0x02, 0x00,
0x14, 0x0f, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x2e, 0x07, 0xe5, 0x80, 0x4e, 0x03, 0x00, 0xa6, 0x2e, 0x20, 0x00, 0x26,
+0x3a, 0x6f, 0xa0, 0xbc, 0x2e, 0x07, 0xe3, 0x20, 0x4e, 0x03, 0x00, 0xa6, 0x2e, 0x20, 0x00, 0x26,
0x4e, 0x22, 0x00, 0xa2, 0x44, 0x00, 0x00, 0x04, 0x49, 0xf7, 0xff, 0x30, 0x46, 0x85, 0x00, 0x25,
0x58, 0x34, 0x00, 0x00, 0x58, 0x11, 0x80, 0x00, 0x46, 0x20, 0x01, 0x20, 0x46, 0x00, 0x20, 0x20,
0x58, 0x70, 0x80, 0x00, 0x58, 0x21, 0x00, 0x12, 0x58, 0x00, 0x02, 0x02, 0x44, 0x60, 0x00, 0x0f,
0x44, 0x50, 0x00, 0x05, 0x14, 0x61, 0x81, 0xec, 0x14, 0x20, 0x81, 0xed, 0x14, 0x04, 0x01, 0xef,
-0x14, 0x53, 0x81, 0xf0, 0x2e, 0x77, 0xe5, 0x83, 0x4e, 0x73, 0x00, 0x1e, 0x58, 0x60, 0x80, 0x00,
+0x14, 0x53, 0x81, 0xf0, 0x2e, 0x77, 0xe3, 0x23, 0x4e, 0x73, 0x00, 0x1e, 0x58, 0x60, 0x80, 0x00,
0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x04,
0x48, 0x00, 0x00, 0x70, 0x49, 0xf8, 0x03, 0x18, 0x50, 0x43, 0x80, 0x01, 0x54, 0x72, 0x00, 0xff,
0x04, 0x13, 0x01, 0xf1, 0x44, 0x20, 0x00, 0x90, 0x54, 0x50, 0x80, 0x90, 0x44, 0x00, 0x00, 0x01,
0x4c, 0x51, 0x7f, 0xea, 0x47, 0xe8, 0x00, 0x21, 0x59, 0xef, 0x01, 0x00, 0x04, 0x0f, 0x00, 0x00,
0x42, 0x10, 0x24, 0x09, 0x14, 0x1f, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x00, 0x42, 0x51, 0x10, 0x09,
0x14, 0x5f, 0x00, 0x00, 0x49, 0x00, 0x00, 0x78, 0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x75,
-0x44, 0x20, 0x00, 0x00, 0x49, 0xf8, 0x2d, 0x06, 0x2e, 0x07, 0xe5, 0x82, 0x4e, 0x02, 0x00, 0x3c,
-0x2f, 0xe7, 0xe5, 0x83, 0x4f, 0xe3, 0x00, 0x38, 0x46, 0x15, 0x00, 0x29, 0x05, 0xe0, 0x80, 0x84,
+0x44, 0x20, 0x00, 0x00, 0x49, 0xf8, 0x2d, 0x06, 0x2e, 0x07, 0xe3, 0x22, 0x4e, 0x02, 0x00, 0x3c,
+0x2f, 0xe7, 0xe3, 0x23, 0x4f, 0xe3, 0x00, 0x38, 0x46, 0x15, 0x00, 0x29, 0x05, 0xe0, 0x80, 0x84,
0x42, 0x3f, 0x00, 0x09, 0x14, 0x30, 0x80, 0x84, 0x46, 0x05, 0x00, 0x25, 0x58, 0x00, 0x08, 0x68,
0x04, 0x50, 0x00, 0x00, 0x43, 0xe2, 0xc4, 0x08, 0x15, 0xe0, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00,
0x42, 0x11, 0x88, 0x09, 0x14, 0x10, 0x00, 0x00, 0x44, 0x4f, 0xff, 0xcf, 0x04, 0x50, 0x00, 0x00,
0x43, 0xe2, 0xcc, 0x08, 0x15, 0xe0, 0x00, 0x00, 0x04, 0x30, 0x00, 0x00, 0x40, 0x11, 0x90, 0x02,
0x14, 0x10, 0x00, 0x00, 0x04, 0x50, 0x00, 0x00, 0x43, 0xe2, 0xc8, 0x08, 0x15, 0xe0, 0x00, 0x00,
0x44, 0x50, 0x00, 0x01, 0x04, 0x30, 0x00, 0x00, 0x42, 0x11, 0x8c, 0x09, 0x14, 0x10, 0x00, 0x00,
-0x3e, 0x57, 0xe5, 0x83, 0x44, 0x20, 0x00, 0x01, 0x3e, 0x27, 0xe5, 0x80, 0x44, 0x00, 0x00, 0x04,
+0x3e, 0x57, 0xe3, 0x23, 0x44, 0x20, 0x00, 0x01, 0x3e, 0x27, 0xe3, 0x20, 0x44, 0x00, 0x00, 0x04,
0x49, 0xf7, 0xfe, 0xbc, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
0x2e, 0x00, 0x02, 0x85, 0x4e, 0x03, 0x00, 0x1c, 0x2e, 0x20, 0x02, 0x86, 0x4e, 0x23, 0x00, 0x18,
0x2e, 0x60, 0x02, 0x87, 0x4e, 0x63, 0x00, 0x14, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf8, 0x0f, 0x60,
0x44, 0x00, 0x00, 0x04, 0x49, 0xf8, 0x02, 0x90, 0x3e, 0x60, 0x02, 0x88, 0x46, 0x58, 0x00, 0x21,
0x04, 0x12, 0x80, 0x40, 0x42, 0x00, 0x9c, 0x09, 0x14, 0x02, 0x80, 0x40, 0x3a, 0x6f, 0x98, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x07, 0xe2, 0x18,
-0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x0c, 0x2e, 0x57, 0xe2, 0x19, 0x4c, 0x50, 0x40, 0x08,
-0x2e, 0x47, 0xfa, 0xbc, 0x4e, 0x43, 0x00, 0x04, 0x49, 0xff, 0xff, 0xca, 0x2f, 0xe0, 0x02, 0x88,
-0x4f, 0xe2, 0x00, 0x10, 0x2e, 0x57, 0xe2, 0x18, 0x44, 0x10, 0x00, 0x01, 0x4c, 0x50, 0x80, 0x0a,
-0x2e, 0x57, 0xe2, 0x19, 0x4c, 0x50, 0x80, 0x06, 0x2e, 0x57, 0xfa, 0xbc, 0x4e, 0x52, 0x00, 0x04,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x07, 0xdf, 0xb8,
+0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x0c, 0x2e, 0x57, 0xdf, 0xb9, 0x4c, 0x50, 0x40, 0x08,
+0x2e, 0x47, 0xf8, 0x5c, 0x4e, 0x43, 0x00, 0x04, 0x49, 0xff, 0xff, 0xca, 0x2f, 0xe0, 0x02, 0x88,
+0x4f, 0xe2, 0x00, 0x10, 0x2e, 0x57, 0xdf, 0xb8, 0x44, 0x10, 0x00, 0x01, 0x4c, 0x50, 0x80, 0x0a,
+0x2e, 0x57, 0xdf, 0xb9, 0x4c, 0x50, 0x80, 0x06, 0x2e, 0x57, 0xf8, 0x5c, 0x4e, 0x52, 0x00, 0x04,
0x49, 0xf8, 0x2e, 0xa2, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x2e, 0x17, 0xe2, 0x55, 0x40, 0x20, 0x80, 0x10, 0x4e, 0x25, 0x00, 0x06, 0x44, 0x00, 0x00, 0x3c,
-0x48, 0x00, 0x00, 0x1c, 0x2e, 0x07, 0xe2, 0x56, 0x40, 0x30, 0x00, 0x10, 0x4e, 0x34, 0x00, 0x14,
+0x2e, 0x17, 0xdf, 0xf5, 0x40, 0x20, 0x80, 0x10, 0x4e, 0x25, 0x00, 0x06, 0x44, 0x00, 0x00, 0x3c,
+0x48, 0x00, 0x00, 0x1c, 0x2e, 0x07, 0xdf, 0xf6, 0x40, 0x30, 0x00, 0x10, 0x4e, 0x34, 0x00, 0x14,
0x54, 0x40, 0x00, 0x40, 0x54, 0x10, 0x80, 0x7f, 0x54, 0x00, 0x00, 0x3f, 0x4e, 0x43, 0x00, 0x06,
0x40, 0x00, 0x04, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x40, 0x00, 0x80, 0x01, 0x54, 0x00, 0x00, 0xff,
-0x48, 0x00, 0x00, 0x04, 0x54, 0x00, 0x80, 0x7f, 0x2e, 0x27, 0xe2, 0x57, 0x40, 0x11, 0x00, 0x10,
+0x48, 0x00, 0x00, 0x04, 0x54, 0x00, 0x80, 0x7f, 0x2e, 0x27, 0xdf, 0xf7, 0x40, 0x11, 0x00, 0x10,
0x4e, 0x14, 0x00, 0x36, 0x46, 0x18, 0x00, 0x21, 0x04, 0x30, 0x80, 0x8d, 0x44, 0x5f, 0x80, 0xff,
0x40, 0x40, 0x20, 0x08, 0x54, 0x42, 0x7f, 0x00, 0x40, 0x31, 0x94, 0x02, 0x40, 0x32, 0x0c, 0x04,
0x14, 0x30, 0x80, 0x8d, 0x04, 0x50, 0x80, 0x8e, 0x54, 0x31, 0x00, 0x40, 0x58, 0x42, 0xff, 0x00,
@@ -357,7 +357,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x40, 0x52, 0x94, 0x08, 0x04, 0x42, 0x80, 0x00, 0x04, 0x60, 0x80, 0x00, 0x4e, 0x32, 0x00, 0x10,
0x46, 0x81, 0x64, 0x00, 0x40, 0x12, 0x20, 0x04, 0x00, 0x91, 0x80, 0x07, 0x42, 0x30, 0xdc, 0x09,
0x42, 0x31, 0xe0, 0x09, 0x40, 0x74, 0xdc, 0x08, 0x40, 0x41, 0x9c, 0x04, 0x4e, 0x22, 0x00, 0x32,
-0x3e, 0x1f, 0xe1, 0xc4, 0x02, 0x91, 0x00, 0x00, 0x04, 0x30, 0x80, 0x00, 0x50, 0x70, 0x00, 0x80,
+0x3e, 0x1f, 0xdf, 0x64, 0x02, 0x91, 0x00, 0x00, 0x04, 0x30, 0x80, 0x00, 0x50, 0x70, 0x00, 0x80,
0x38, 0x91, 0x81, 0x09, 0x50, 0x30, 0x01, 0x00, 0x04, 0x80, 0x80, 0x00, 0x00, 0x91, 0x00, 0x08,
0x40, 0x84, 0x00, 0x00, 0x10, 0x94, 0x03, 0x00, 0x02, 0x91, 0x00, 0x01, 0x04, 0x80, 0x80, 0x00,
0x38, 0x94, 0x1d, 0x09, 0x04, 0x90, 0x80, 0x00, 0x00, 0x81, 0x00, 0x09, 0x40, 0x74, 0x80, 0x00,
@@ -448,14 +448,14 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x40, 0x51, 0x0c, 0x02, 0x40, 0x12, 0x90, 0x04, 0x14, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0x3c, 0x54, 0x20, 0x00, 0xff, 0x40, 0x10, 0x80, 0x13,
0x5c, 0xf1, 0x00, 0x0e, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x2a,
-0x3e, 0x0f, 0xca, 0x90, 0x38, 0x00, 0x0a, 0x02, 0x3e, 0x3f, 0xca, 0xc8, 0x38, 0x31, 0x8a, 0x02,
+0x3e, 0x0f, 0xc8, 0x3c, 0x38, 0x00, 0x0a, 0x02, 0x3e, 0x3f, 0xc8, 0x74, 0x38, 0x31, 0x8a, 0x02,
0x4e, 0x03, 0x00, 0x20, 0x54, 0x21, 0x00, 0x01, 0x44, 0x50, 0x00, 0x10, 0x40, 0x42, 0x88, 0x1b,
0x40, 0x40, 0x08, 0x1a, 0x44, 0x60, 0xff, 0xff, 0x40, 0x23, 0x10, 0x0c, 0x04, 0x51, 0x80, 0x00,
0x40, 0x61, 0x08, 0x05, 0x40, 0x53, 0x14, 0x02, 0x14, 0x51, 0x80, 0x00, 0x40, 0x40, 0x90, 0x0c,
0x04, 0x51, 0x80, 0x00, 0x40, 0x12, 0x08, 0x02, 0x40, 0x20, 0x94, 0x04, 0x14, 0x21, 0x80, 0x00,
0x3a, 0x6f, 0x98, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0x3c, 0x54, 0x20, 0x00, 0xff,
0x40, 0x10, 0x80, 0x13, 0x5c, 0xf1, 0x00, 0x0d, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0x02,
-0x48, 0x00, 0x00, 0x2a, 0x3e, 0x0f, 0xcb, 0x34, 0x38, 0x00, 0x0a, 0x02, 0x3e, 0x3f, 0xcb, 0x00,
+0x48, 0x00, 0x00, 0x2a, 0x3e, 0x0f, 0xc8, 0xac, 0x38, 0x00, 0x0a, 0x02, 0x3e, 0x3f, 0xc8, 0xe0,
0x38, 0x31, 0x8a, 0x02, 0x4e, 0x03, 0x00, 0x20, 0x54, 0x21, 0x00, 0x01, 0x44, 0x50, 0x00, 0x10,
0x40, 0x42, 0x88, 0x1b, 0x40, 0x40, 0x08, 0x1a, 0x44, 0x60, 0xff, 0xff, 0x40, 0x23, 0x10, 0x0c,
0x04, 0x51, 0x80, 0x00, 0x40, 0x61, 0x08, 0x05, 0x40, 0x53, 0x14, 0x02, 0x14, 0x51, 0x80, 0x00,
@@ -473,8 +473,8 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x41, 0xe1, 0x10, 0x02, 0x15, 0xe0, 0x00, 0x00, 0x54, 0x10, 0xfc, 0x00, 0x48, 0x00, 0x00, 0x10,
0x46, 0x06, 0x01, 0x30, 0x58, 0x00, 0x00, 0xa4, 0x05, 0xe0, 0x00, 0x00, 0x40, 0x5f, 0x24, 0x09,
0x40, 0x52, 0xa4, 0x08, 0x14, 0x50, 0x00, 0x00, 0x54, 0x10, 0x81, 0xff, 0x04, 0x20, 0x00, 0x00,
-0x40, 0x10, 0x88, 0x04, 0x14, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x2e, 0x38, 0x49, 0xf8, 0x01, 0xf2, 0x48, 0x00, 0x00, 0x00,
+0x40, 0x10, 0x88, 0x04, 0x14, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x2e, 0x38, 0x49, 0xf8, 0x01, 0xf2, 0x48, 0x00, 0x00, 0x00,
0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff, 0x54, 0x10, 0x80, 0xff,
0x5c, 0xf0, 0x00, 0x0e, 0x4e, 0xf2, 0x00, 0xb4, 0x5c, 0xf0, 0x80, 0x04, 0x4e, 0xf2, 0x00, 0xb0,
@@ -496,8 +496,8 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x58, 0x00, 0x01, 0x14, 0x44, 0x20, 0x00, 0x20, 0x48, 0x00, 0x00, 0x2a, 0x46, 0x06, 0x01, 0x20,
0x58, 0x00, 0x01, 0x14, 0x44, 0x20, 0x04, 0x00, 0x48, 0x00, 0x00, 0x22, 0x46, 0x06, 0x01, 0x20,
0x58, 0x00, 0x01, 0x14, 0x44, 0x21, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1a, 0x46, 0x20, 0x02, 0x00,
-0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x01, 0x14, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x1e, 0x4a, 0x49, 0xf8, 0x01, 0x3a, 0x48, 0x00, 0x00, 0x00,
+0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x01, 0x14, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x1e, 0x4a, 0x49, 0xf8, 0x01, 0x3a, 0x48, 0x00, 0x00, 0x00,
0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x01, 0x10, 0x44, 0x20, 0x00, 0x01, 0x40, 0x31, 0x04, 0x0c,
0x14, 0x30, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x01,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x10, 0x80, 0xff,
@@ -526,22 +526,22 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x58, 0x00, 0x01, 0x04, 0x44, 0x20, 0x00, 0x20, 0x48, 0x00, 0x00, 0x2a, 0x46, 0x06, 0x01, 0x20,
0x58, 0x00, 0x01, 0x04, 0x44, 0x20, 0x04, 0x00, 0x48, 0x00, 0x00, 0x22, 0x46, 0x06, 0x01, 0x20,
0x58, 0x00, 0x01, 0x04, 0x44, 0x21, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1a, 0x46, 0x20, 0x02, 0x00,
-0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x01, 0x04, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x1d, 0xa9, 0x49, 0xf8, 0x00, 0x4a, 0x48, 0x00, 0x00, 0x00,
+0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x01, 0x04, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x1d, 0xa9, 0x49, 0xf8, 0x00, 0x4a, 0x48, 0x00, 0x00, 0x00,
0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x01, 0x00, 0x44, 0x20, 0x00, 0x01, 0x40, 0x31, 0x04, 0x0c,
0x14, 0x30, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x01,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
0x51, 0xff, 0xff, 0xfc, 0x46, 0x26, 0x03, 0x22, 0x46, 0x38, 0x00, 0x00, 0x46, 0x06, 0x03, 0x20,
0x44, 0x10, 0x00, 0x00, 0x14, 0x31, 0x00, 0xc0, 0x58, 0x50, 0x80, 0x00, 0x48, 0x00, 0x00, 0x20,
0x44, 0x20, 0x00, 0x00, 0x41, 0xe1, 0x00, 0x00, 0x14, 0x5f, 0x00, 0x00, 0x50, 0x21, 0x00, 0x04,
-0x04, 0x4f, 0x00, 0x00, 0x4e, 0x42, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8,
+0x04, 0x4f, 0x00, 0x00, 0x4e, 0x42, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54,
0x44, 0x20, 0x1d, 0x1f, 0x49, 0xf8, 0x00, 0x0c, 0x48, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x14,
-0x4c, 0x22, 0x7f, 0xea, 0x50, 0x10, 0x80, 0x01, 0x50, 0x00, 0x00, 0x20, 0x3c, 0x2d, 0xf8, 0x72,
+0x4c, 0x22, 0x7f, 0xea, 0x50, 0x10, 0x80, 0x01, 0x50, 0x00, 0x00, 0x20, 0x3c, 0x2d, 0xf7, 0xda,
0x40, 0xf0, 0x88, 0x06, 0x4e, 0xf3, 0xff, 0xde, 0x46, 0x06, 0x03, 0x22, 0x04, 0x50, 0x00, 0xc0,
0x42, 0x12, 0xfc, 0x09, 0x14, 0x10, 0x00, 0xc0, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x54, 0x00, 0x00, 0xff, 0x5c, 0xf0, 0x00, 0x03,
0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x4a, 0x4e, 0x23, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x04, 0xcc, 0x49, 0xf7, 0xff, 0xd8,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x04, 0xcc, 0x49, 0xf7, 0xff, 0xd8,
0x48, 0x00, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0x80, 0x0e, 0x44, 0x50, 0x00, 0x02,
0x4c, 0x02, 0x80, 0x12, 0x46, 0x06, 0x01, 0x40, 0x58, 0x00, 0x00, 0x04, 0x50, 0x30, 0x00, 0x04,
0x48, 0x00, 0x00, 0x10, 0x46, 0x06, 0x01, 0x40, 0x58, 0x00, 0x00, 0x0c, 0x50, 0x30, 0x00, 0x04,
@@ -581,19 +581,19 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x48, 0x00, 0x00, 0x2a, 0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x01, 0x0c, 0x44, 0x40, 0x04, 0x00,
0x48, 0x00, 0x00, 0x22, 0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x01, 0x0c, 0x44, 0x41, 0x00, 0x00,
0x48, 0x00, 0x00, 0x1a, 0x46, 0x40, 0x02, 0x00, 0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x01, 0x0c,
-0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x1f, 0x21,
+0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x1f, 0x21,
0x49, 0xf7, 0xfe, 0x96, 0x48, 0x00, 0x00, 0x00, 0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x01, 0x08,
0x44, 0x40, 0x00, 0x01, 0x40, 0x82, 0x04, 0x0c, 0x14, 0x83, 0x00, 0x00, 0x4e, 0x22, 0x00, 0x22,
0x44, 0x00, 0x00, 0x01, 0x04, 0xa3, 0x00, 0x00, 0x4e, 0x73, 0x00, 0x0e, 0x2e, 0x00, 0x00, 0x15,
-0x4e, 0x03, 0x00, 0x18, 0x3e, 0x0f, 0xca, 0x5c, 0x49, 0xf7, 0xfe, 0x7a, 0x58, 0x03, 0x80, 0x00,
+0x4e, 0x03, 0x00, 0x18, 0x3e, 0x0f, 0xc8, 0x08, 0x49, 0xf7, 0xfe, 0x7a, 0x58, 0x03, 0x80, 0x00,
0x48, 0x00, 0x00, 0x12, 0x49, 0x00, 0x03, 0x20, 0x40, 0x25, 0x20, 0x02, 0x50, 0x73, 0xff, 0xff,
0x4e, 0x23, 0xff, 0xe8, 0x48, 0x00, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04,
0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x3c, 0x4d, 0xf8, 0x72, 0x54, 0x80, 0x00, 0xff, 0x58, 0x71, 0x80, 0x00, 0x54, 0x60, 0x80, 0xff,
+0x3c, 0x4d, 0xf7, 0xda, 0x54, 0x80, 0x00, 0xff, 0x58, 0x71, 0x80, 0x00, 0x54, 0x60, 0x80, 0xff,
0x54, 0xa1, 0x00, 0xff, 0x40, 0xf4, 0x10, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x86, 0x4e, 0x33, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8,
-0x44, 0x20, 0x1c, 0x84, 0x49, 0xf7, 0xfe, 0x44, 0x48, 0x00, 0x00, 0x00, 0x3d, 0xed, 0xf8, 0x71,
-0x50, 0x04, 0x00, 0x80, 0x38, 0x0f, 0x01, 0x01, 0x49, 0xf8, 0x03, 0xfa, 0x3c, 0x4d, 0xf8, 0x71,
+0x48, 0x00, 0x00, 0x86, 0x4e, 0x33, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54,
+0x44, 0x20, 0x1c, 0x84, 0x49, 0xf7, 0xfe, 0x44, 0x48, 0x00, 0x00, 0x00, 0x3d, 0xed, 0xf7, 0xd9,
+0x50, 0x04, 0x00, 0x80, 0x38, 0x0f, 0x01, 0x01, 0x49, 0xf8, 0x03, 0xfa, 0x3c, 0x4d, 0xf7, 0xd9,
0x44, 0x10, 0x00, 0x06, 0x40, 0x82, 0x20, 0x00, 0x00, 0x34, 0x03, 0x80, 0x40, 0x21, 0x94, 0x08,
0x40, 0x00, 0x08, 0x00, 0x4c, 0x60, 0x80, 0x4e, 0x5c, 0xf3, 0x00, 0x07, 0x4e, 0xf2, 0x00, 0x18,
0x5c, 0xf3, 0x00, 0x04, 0x4e, 0xf2, 0x00, 0x0a, 0x5c, 0xf3, 0x00, 0x02, 0x4e, 0xf2, 0x00, 0x2e,
@@ -608,13 +608,13 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x50, 0x00, 0x00, 0x10, 0x44, 0x20, 0x00, 0x10, 0x48, 0x00, 0x00, 0x08, 0x44, 0x20, 0x00, 0x00,
0x44, 0x50, 0x00, 0x06, 0x4c, 0x62, 0xc0, 0x06, 0x50, 0x13, 0x80, 0x10, 0x48, 0x00, 0x00, 0x04,
0x58, 0x13, 0x80, 0x00, 0x49, 0xf7, 0xfd, 0xee, 0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x3c, 0x4d, 0xf8, 0x72, 0x54, 0xa0, 0x00, 0xff,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x3c, 0x4d, 0xf7, 0xda, 0x54, 0xa0, 0x00, 0xff,
0x58, 0x60, 0x80, 0x00, 0x58, 0x81, 0x00, 0x00, 0x58, 0x71, 0x80, 0x00, 0x40, 0xf5, 0x10, 0x06,
0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x01, 0xb8, 0x4e, 0x13, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x1b, 0xa8, 0x49, 0xf7, 0xfd, 0xa8,
-0x48, 0x00, 0x00, 0x00, 0x4e, 0x23, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x1b, 0xa8, 0x49, 0xf7, 0xfd, 0xa8,
+0x48, 0x00, 0x00, 0x00, 0x4e, 0x23, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54,
0x44, 0x20, 0x1b, 0xa9, 0x49, 0xf7, 0xfd, 0x9c, 0x48, 0x00, 0x00, 0x00, 0x4e, 0x33, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xc9, 0xa8, 0x44, 0x20, 0x1b, 0xaa, 0x49, 0xf7, 0xfd, 0x90,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc7, 0x54, 0x44, 0x20, 0x1b, 0xaa, 0x49, 0xf7, 0xfd, 0x90,
0x48, 0x00, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x23, 0x58, 0x03, 0x00, 0x00,
0x49, 0xf7, 0xfd, 0xbc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x0c, 0x58, 0x04, 0x00, 0x00,
0x49, 0xf7, 0xfd, 0xb4, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x0a, 0x58, 0x03, 0x80, 0x00,
@@ -830,11 +830,11 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x46, 0x26, 0x03, 0x00, 0x46, 0x00, 0x80, 0x00, 0x58, 0x21, 0x01, 0x14, 0x48, 0x00, 0x00, 0x0c,
0x44, 0x50, 0x00, 0x03, 0x4c, 0x02, 0xc0, 0x14, 0x46, 0x26, 0x03, 0x00, 0x46, 0x02, 0x00, 0x00,
0x58, 0x21, 0x01, 0x14, 0x14, 0x01, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x14, 0x46, 0x16, 0x03, 0x00,
-0x58, 0x10, 0x81, 0x10, 0x14, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x13, 0x45, 0x49, 0xf7, 0xf6, 0xca, 0x48, 0x00, 0x00, 0x00,
+0x58, 0x10, 0x81, 0x10, 0x14, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x13, 0x45, 0x49, 0xf7, 0xf6, 0xca, 0x48, 0x00, 0x00, 0x00,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x5c, 0xf0, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x12, 0x81, 0x49, 0xf7, 0xf6, 0xb2, 0x48, 0x00, 0x00, 0x00,
+0x51, 0xff, 0xff, 0xfc, 0x5c, 0xf0, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x12, 0x81, 0x49, 0xf7, 0xf6, 0xb2, 0x48, 0x00, 0x00, 0x00,
0x4e, 0x03, 0x00, 0x08, 0x46, 0x06, 0x03, 0x00, 0x58, 0x00, 0x00, 0x10, 0x48, 0x00, 0x00, 0x1a,
0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x08, 0x46, 0x06, 0x03, 0x00, 0x58, 0x00, 0x00, 0x14,
0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x08, 0x46, 0x06, 0x03, 0x00,
@@ -843,7 +843,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x14, 0x20, 0x00, 0x00, 0x04, 0x5f, 0x00, 0x06, 0x58, 0x4f, 0x00, 0x00, 0x14, 0x50, 0x80, 0x00,
0x04, 0x02, 0x00, 0x07, 0x14, 0x00, 0x80, 0x01, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x5c, 0xf0, 0x00, 0x04,
-0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x11, 0xf1,
+0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x11, 0xf1,
0x49, 0xf7, 0xf6, 0x66, 0x48, 0x00, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x2a, 0x44, 0x00, 0x00, 0x01,
0x4c, 0x10, 0x00, 0x1a, 0x4e, 0x12, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x12, 0x80, 0x1a,
0x44, 0x50, 0x00, 0x03, 0x4c, 0x12, 0xc0, 0x9e, 0x48, 0x00, 0x00, 0x08, 0x46, 0x06, 0x03, 0x00,
@@ -870,19 +870,19 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x51, 0xff, 0xff, 0xfc, 0x54, 0x10, 0x80, 0xff, 0x4e, 0x03, 0x00, 0x1e, 0x46, 0x26, 0x03, 0x00,
0x58, 0x21, 0x00, 0x34, 0x04, 0x51, 0x00, 0x00, 0x42, 0x32, 0xfc, 0x09, 0x14, 0x31, 0x00, 0x00,
0x4e, 0x12, 0x00, 0x80, 0x05, 0xe1, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x13, 0x4e, 0x13, 0x00, 0x6c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x10, 0x3b, 0x49, 0xf7, 0xf5, 0x90,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x10, 0x3b, 0x49, 0xf7, 0xf5, 0x90,
0x48, 0x00, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1e, 0x46, 0x26, 0x03, 0x00,
0x58, 0x21, 0x00, 0x38, 0x04, 0x51, 0x00, 0x00, 0x42, 0x32, 0xfc, 0x09, 0x14, 0x31, 0x00, 0x00,
0x4e, 0x12, 0x00, 0x60, 0x05, 0xe1, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x13, 0x4e, 0x13, 0x00, 0x4c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x10, 0x42, 0x49, 0xf7, 0xf5, 0x70,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x10, 0x42, 0x49, 0xf7, 0xf5, 0x70,
0x48, 0x00, 0x00, 0x00, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x1e, 0x46, 0x26, 0x03, 0x00,
0x58, 0x21, 0x01, 0x08, 0x04, 0x51, 0x00, 0x00, 0x42, 0x32, 0xfc, 0x09, 0x14, 0x31, 0x00, 0x00,
0x4e, 0x12, 0x00, 0x40, 0x05, 0xe1, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x13, 0x4e, 0x13, 0x00, 0x2c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x10, 0x49, 0x49, 0xf7, 0xf5, 0x50,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x10, 0x49, 0x49, 0xf7, 0xf5, 0x50,
0x48, 0x00, 0x00, 0x00, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x02, 0xc0, 0x26, 0x46, 0x26, 0x03, 0x00,
0x58, 0x21, 0x01, 0x0c, 0x04, 0x51, 0x00, 0x00, 0x42, 0x32, 0xfc, 0x09, 0x14, 0x31, 0x00, 0x00,
0x4e, 0x12, 0x00, 0x20, 0x05, 0xe1, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x13, 0x4e, 0x13, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x10, 0x50, 0x49, 0xf7, 0xf5, 0x30,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x10, 0x50, 0x49, 0xf7, 0xf5, 0x30,
0x48, 0x00, 0x00, 0x00, 0x04, 0x51, 0x00, 0x00, 0x42, 0x32, 0xfc, 0x08, 0x14, 0x31, 0x00, 0x00,
0x48, 0x00, 0x00, 0x04, 0x4e, 0x12, 0x00, 0x06, 0x49, 0xff, 0xfc, 0x2a, 0x48, 0x00, 0x00, 0x04,
0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
@@ -900,9 +900,9 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x46, 0x06, 0x03, 0x00, 0x58, 0x00, 0x01, 0x10, 0x44, 0x10, 0x01, 0x00, 0x14, 0x10, 0x00, 0x00,
0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x54, 0x31, 0x80, 0xff,
0x58, 0x60, 0x00, 0x00, 0x40, 0x70, 0x80, 0x13, 0x54, 0x91, 0x00, 0xff, 0x54, 0x82, 0x00, 0xff,
-0x54, 0xa2, 0x80, 0xff, 0x5c, 0xf1, 0x80, 0x10, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x0f, 0xc1, 0x49, 0xf7, 0xf4, 0x9a, 0x48, 0x00, 0x00, 0x00,
-0x5c, 0xf4, 0x00, 0x08, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68,
+0x54, 0xa2, 0x80, 0xff, 0x5c, 0xf1, 0x80, 0x10, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x0f, 0xc1, 0x49, 0xf7, 0xf4, 0x9a, 0x48, 0x00, 0x00, 0x00,
+0x5c, 0xf4, 0x00, 0x08, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14,
0x44, 0x20, 0x0f, 0xc2, 0x49, 0xf7, 0xf4, 0x8c, 0x48, 0x00, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x08,
0x46, 0x06, 0x03, 0x00, 0x58, 0x00, 0x00, 0x34, 0x48, 0x00, 0x00, 0x1e, 0x44, 0x50, 0x00, 0x01,
0x4c, 0x02, 0xc0, 0x08, 0x46, 0x06, 0x03, 0x00, 0x58, 0x00, 0x00, 0x38, 0x48, 0x00, 0x00, 0x14,
@@ -919,11 +919,11 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfa, 0xe8, 0x3a, 0x6f, 0xa8, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x54, 0x10, 0x80, 0xff, 0x54, 0x00, 0x00, 0xff,
0x54, 0x21, 0x00, 0xff, 0x40, 0x31, 0x80, 0x13, 0x54, 0x42, 0x00, 0xff, 0x5c, 0xf0, 0x80, 0x40,
-0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x0f, 0x1b,
+0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x0f, 0x1b,
0x49, 0xf7, 0xf4, 0x06, 0x48, 0x00, 0x00, 0x00, 0x50, 0x61, 0x80, 0x03, 0x40, 0x63, 0x08, 0x09,
-0x5c, 0xf3, 0x01, 0x00, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68,
+0x5c, 0xf3, 0x01, 0x00, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14,
0x44, 0x20, 0x0f, 0x1c, 0x49, 0xf7, 0xf3, 0xf4, 0x48, 0x00, 0x00, 0x00, 0x5c, 0xf2, 0x00, 0x40,
-0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x0f, 0x1d,
+0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x0f, 0x1d,
0x49, 0xf7, 0xf3, 0xe6, 0x48, 0x00, 0x00, 0x00, 0x47, 0xe6, 0x03, 0x00, 0x59, 0xef, 0x00, 0x4c,
0x04, 0x5f, 0x00, 0x00, 0x40, 0x30, 0xc0, 0x08, 0x40, 0x82, 0x80, 0x13, 0x14, 0x8f, 0x00, 0x00,
0x46, 0x50, 0x04, 0x00, 0x04, 0x7f, 0x00, 0x00, 0x40, 0x81, 0x9c, 0x04, 0x40, 0x63, 0x60, 0x08,
@@ -932,7 +932,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x14, 0x6f, 0x00, 0x00, 0x50, 0x0f, 0x00, 0x04, 0x04, 0x50, 0x00, 0x00, 0x40, 0x32, 0x98, 0x09,
0x40, 0x31, 0x98, 0x08, 0x14, 0x30, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x40, 0x42, 0x04, 0x04,
0x14, 0x40, 0x00, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x3c, 0x2d, 0xf9, 0x17, 0x46, 0x36, 0x04, 0x00, 0x46, 0x10, 0x08, 0x00,
+0x51, 0xff, 0xff, 0xf4, 0x3c, 0x2d, 0xf8, 0x7f, 0x46, 0x36, 0x04, 0x00, 0x46, 0x10, 0x08, 0x00,
0x14, 0x2f, 0x80, 0x01, 0x14, 0x11, 0x80, 0x02, 0x44, 0x00, 0x16, 0xe8, 0x58, 0x81, 0x80, 0x00,
0x4b, 0xe0, 0x00, 0x01, 0x44, 0x60, 0x00, 0x1e, 0x45, 0xc0, 0x03, 0xe8, 0x44, 0xa0, 0x00, 0x07,
0x58, 0x90, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x46, 0x76, 0x04, 0x00, 0x42, 0x50, 0x5c, 0x0b,
@@ -942,7 +942,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x44, 0x50, 0x00, 0x0a, 0x40, 0x30, 0x78, 0x97, 0x40, 0x00, 0x14, 0x97, 0x44, 0x40, 0x00, 0x05,
0x40, 0x51, 0x80, 0x00, 0x42, 0x22, 0x90, 0x73, 0x40, 0xf0, 0x88, 0x06, 0x4e, 0xf2, 0xff, 0xd4,
0x04, 0x23, 0x80, 0x00, 0x47, 0xe0, 0x08, 0x00, 0x40, 0x01, 0x78, 0x02, 0x4e, 0x02, 0x00, 0x0e,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0x68, 0x44, 0x20, 0x0c, 0x97, 0x49, 0xf7, 0xf3, 0x50,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x14, 0x44, 0x20, 0x0c, 0x97, 0x49, 0xf7, 0xf3, 0x50,
0x48, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff, 0x40, 0x00, 0x20, 0x08, 0x54, 0x10, 0x80, 0xff,
0x40, 0x20, 0x00, 0x13, 0x4e, 0x12, 0x00, 0x06, 0x58, 0x11, 0x00, 0x01, 0x48, 0x00, 0x00, 0x06,
@@ -1011,7 +1011,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x4c, 0x02, 0xc0, 0x1c, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x20, 0x04, 0x00, 0x46, 0x06, 0x03, 0x10,
0x58, 0x00, 0x00, 0x0c, 0x48, 0x00, 0x00, 0x22, 0x46, 0x06, 0x03, 0x10, 0x58, 0x00, 0x00, 0x28,
0x44, 0x20, 0x08, 0x00, 0x48, 0x00, 0x00, 0x1a, 0x46, 0x20, 0x04, 0x00, 0x46, 0x06, 0x03, 0x10,
-0x58, 0x00, 0x00, 0x08, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0xa0,
+0x58, 0x00, 0x00, 0x08, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x4c,
0x44, 0x20, 0x01, 0xcf, 0x49, 0xff, 0xe2, 0xb2, 0x48, 0x00, 0x00, 0x00, 0x46, 0x06, 0x03, 0x10,
0x58, 0x00, 0x00, 0x0c, 0x44, 0x20, 0x02, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x08,
0x04, 0x10, 0x00, 0x00, 0x40, 0x20, 0x88, 0x04, 0x48, 0x00, 0x00, 0x08, 0x04, 0x30, 0x00, 0x00,
@@ -1026,7 +1026,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x46, 0x10, 0x08, 0x00, 0x58, 0x00, 0x00, 0x04, 0x14, 0x10, 0x00, 0x00, 0x4e, 0x22, 0x00, 0x0c,
0x44, 0x00, 0x00, 0x00, 0x58, 0x20, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00, 0x49, 0xff, 0xea, 0x02,
0x48, 0x00, 0x00, 0x14, 0x58, 0x01, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x49, 0xff, 0xea, 0x14,
-0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcb, 0xa0, 0x44, 0x20, 0x01, 0xad,
+0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x4c, 0x44, 0x20, 0x01, 0xad,
0x49, 0xff, 0xe2, 0x3c, 0x48, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x00, 0x00, 0xff,
0x4e, 0x03, 0x00, 0x04, 0x48, 0x00, 0x00, 0x28, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1a,
@@ -1035,2931 +1035,2959 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x50, 0x5f, 0x80, 0x04, 0x38, 0x42, 0x98, 0x08, 0x54, 0x61, 0x80, 0xff, 0x48, 0x00, 0x00, 0x14,
0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x0e, 0x54, 0x70, 0x90, 0x00, 0x4e, 0x72, 0x00, 0x0a,
0x44, 0x00, 0x00, 0x03, 0x10, 0x0f, 0x80, 0x04, 0x44, 0x60, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04,
-0x44, 0x60, 0x00, 0x00, 0x2e, 0x87, 0xfa, 0xbc, 0x4e, 0x83, 0x00, 0x1e, 0x3d, 0xec, 0x01, 0xd2,
-0x44, 0x50, 0x00, 0x01, 0x4d, 0xe2, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x03, 0x49, 0xf8, 0x11, 0xc8,
-0x50, 0x9f, 0x80, 0x04, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x08, 0x04, 0x80, 0x01,
-0x49, 0x00, 0x30, 0x38, 0x50, 0x03, 0x80, 0x01, 0x54, 0x70, 0x00, 0xff, 0x40, 0xf3, 0x98, 0x06,
+0x44, 0x60, 0x00, 0x00, 0x2e, 0x87, 0xf8, 0x5c, 0x4e, 0x82, 0x00, 0x08, 0x44, 0x20, 0x00, 0x01,
+0x3e, 0x27, 0xe3, 0x46, 0x48, 0x00, 0x00, 0x1e, 0x3c, 0x0c, 0x01, 0xd2, 0x44, 0x10, 0x00, 0x01,
+0x4c, 0x00, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x03, 0x49, 0xf8, 0x11, 0xc2, 0x50, 0x9f, 0x80, 0x04,
+0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x08, 0x04, 0x80, 0x01, 0x49, 0x00, 0x30, 0x78,
+0x50, 0x43, 0x80, 0x01, 0x54, 0x72, 0x00, 0xff, 0x40, 0xf3, 0x98, 0x06, 0x4e, 0xf3, 0xff, 0xf6,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff, 0x40, 0x40, 0x08, 0x08, 0x3e, 0x2f, 0xe2, 0x30,
+0x40, 0x32, 0x08, 0x00, 0x00, 0x11, 0x80, 0x00, 0x4e, 0x12, 0x00, 0x04, 0x49, 0x00, 0x12, 0xb8,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x54, 0x00, 0x00, 0xff, 0x4e, 0x03, 0x00, 0x04, 0x48, 0x00, 0x00, 0x28,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1a, 0x54, 0x60, 0x82, 0x00, 0x4e, 0x62, 0x00, 0x06,
+0x10, 0x0f, 0x80, 0x04, 0x58, 0x60, 0x00, 0x00, 0x42, 0x10, 0xd8, 0x0b, 0x4e, 0x12, 0x00, 0x20,
+0x50, 0x33, 0x00, 0x01, 0x44, 0x40, 0x00, 0x02, 0x50, 0x5f, 0x80, 0x04, 0x38, 0x42, 0x98, 0x08,
+0x54, 0x61, 0x80, 0xff, 0x48, 0x00, 0x00, 0x14, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x0e,
+0x54, 0x70, 0x88, 0x00, 0x4e, 0x72, 0x00, 0x0a, 0x44, 0x00, 0x00, 0x03, 0x10, 0x0f, 0x80, 0x04,
+0x44, 0x60, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x60, 0x00, 0x00, 0x2e, 0x77, 0xf8, 0x5c,
+0x4e, 0x73, 0x00, 0x12, 0x50, 0x9f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x0a, 0x08, 0x04, 0x80, 0x01,
+0x49, 0xff, 0xff, 0xa6, 0x50, 0x23, 0x80, 0x01, 0x54, 0x71, 0x00, 0xff, 0x40, 0xf3, 0x98, 0x06,
0x4e, 0xf3, 0xff, 0xf6, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff, 0x40, 0x40, 0x08, 0x08,
-0x3e, 0x2f, 0xe4, 0x90, 0x40, 0x32, 0x08, 0x00, 0x00, 0x11, 0x80, 0x00, 0x4e, 0x12, 0x00, 0x04,
-0x49, 0x00, 0x12, 0x78, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x00, 0x00, 0xff, 0x4e, 0x03, 0x00, 0x04,
-0x48, 0x00, 0x00, 0x28, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x1a, 0x54, 0x60, 0x82, 0x00,
-0x4e, 0x62, 0x00, 0x06, 0x10, 0x0f, 0x80, 0x04, 0x58, 0x60, 0x00, 0x00, 0x42, 0x10, 0xd8, 0x0b,
-0x4e, 0x12, 0x00, 0x20, 0x50, 0x33, 0x00, 0x01, 0x44, 0x40, 0x00, 0x02, 0x50, 0x5f, 0x80, 0x04,
-0x38, 0x42, 0x98, 0x08, 0x54, 0x61, 0x80, 0xff, 0x48, 0x00, 0x00, 0x14, 0x44, 0x50, 0x00, 0x02,
-0x4c, 0x02, 0xc0, 0x0e, 0x54, 0x70, 0x88, 0x00, 0x4e, 0x72, 0x00, 0x0a, 0x44, 0x00, 0x00, 0x03,
-0x10, 0x0f, 0x80, 0x04, 0x44, 0x60, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x60, 0x00, 0x00,
-0x2e, 0x77, 0xfa, 0xbc, 0x4e, 0x73, 0x00, 0x12, 0x50, 0x9f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x0a,
-0x08, 0x04, 0x80, 0x01, 0x49, 0xff, 0xff, 0xa6, 0x50, 0x23, 0x80, 0x01, 0x54, 0x71, 0x00, 0xff,
-0x40, 0xf3, 0x98, 0x06, 0x4e, 0xf3, 0xff, 0xf6, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xa4, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x00, 0x00, 0xff,
-0x14, 0x0f, 0x80, 0x01, 0x45, 0xc0, 0x34, 0x20, 0x44, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, 0x26,
-0x49, 0xf7, 0xf5, 0x8e, 0x00, 0x10, 0x00, 0x02, 0x50, 0x20, 0x00, 0x14, 0x44, 0x30, 0x00, 0x00,
-0x54, 0x00, 0x80, 0x1f, 0x48, 0x00, 0x00, 0x12, 0x05, 0xe1, 0x00, 0x00, 0x46, 0x10, 0x03, 0xfc,
-0x46, 0x40, 0x02, 0x00, 0x40, 0x5f, 0x04, 0x02, 0x50, 0x31, 0x80, 0x01, 0x4c, 0x52, 0x40, 0x04,
-0x3e, 0x87, 0xe5, 0xa5, 0x50, 0x21, 0x00, 0x14, 0x40, 0xf1, 0x80, 0x06, 0x4e, 0xf3, 0xff, 0xee,
-0x58, 0x03, 0x00, 0x00, 0x49, 0x00, 0x03, 0x36, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01,
-0x44, 0x20, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00,
-0x4c, 0x02, 0xff, 0xd0, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x00, 0x00, 0xff, 0x14, 0x0f, 0x80, 0x01,
-0x45, 0xc0, 0x34, 0x20, 0x48, 0x00, 0x00, 0x12, 0x2e, 0x17, 0xe2, 0x0c, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x12, 0xc0, 0x0a, 0x49, 0x00, 0x04, 0xd8, 0x58, 0x03, 0x00, 0x00, 0x49, 0x00, 0x05, 0xc2,
-0x48, 0x00, 0x00, 0x04, 0x49, 0x00, 0x03, 0x06, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x01, 0x4b, 0xe0, 0x70, 0x01, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00,
-0x4c, 0x02, 0xff, 0xe4, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x58, 0x80, 0x00, 0x00, 0x54, 0x70, 0x00, 0xff,
-0x3f, 0xce, 0xda, 0x38, 0x48, 0x00, 0x00, 0x26, 0x2e, 0x20, 0x02, 0x88, 0x4e, 0x22, 0x00, 0x36,
-0x49, 0x00, 0x02, 0x88, 0x44, 0x10, 0x00, 0x01, 0x4e, 0x03, 0x00, 0x0e, 0x58, 0x00, 0x80, 0x00,
-0x58, 0x23, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xf9, 0x3a,
-0x48, 0x00, 0x00, 0x24, 0x04, 0x50, 0x00, 0x02, 0x44, 0x30, 0x00, 0xa0, 0x00, 0x42, 0x80, 0x05,
-0x4c, 0x41, 0xc0, 0x06, 0x49, 0x00, 0x11, 0x24, 0x48, 0x00, 0x00, 0x04, 0x4b, 0xe0, 0x70, 0x01,
-0x2f, 0xe0, 0x02, 0x88, 0x44, 0x20, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01,
-0x4f, 0xe2, 0x00, 0x0c, 0x49, 0xf7, 0xf8, 0x8e, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00,
-0x58, 0x14, 0x00, 0x00, 0x4c, 0x02, 0xff, 0xca, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xdc, 0x46, 0xa6, 0x03, 0x10,
-0x58, 0x95, 0x00, 0x00, 0x45, 0xc0, 0x00, 0x00, 0x50, 0x6f, 0x80, 0x10, 0x58, 0x8f, 0x80, 0x00,
-0x48, 0x00, 0x00, 0xe0, 0x44, 0x00, 0x00, 0x00, 0x14, 0x04, 0x00, 0x02, 0x14, 0x03, 0x00, 0x00,
-0x14, 0x04, 0x00, 0x00, 0x14, 0x03, 0x00, 0x01, 0x14, 0x04, 0x00, 0x01, 0x14, 0x03, 0x00, 0x02,
-0x44, 0x00, 0x00, 0x00, 0x38, 0x43, 0x00, 0x02, 0x38, 0x24, 0x00, 0x02, 0x44, 0x10, 0x00, 0x10,
-0x40, 0x31, 0x10, 0x02, 0x38, 0x33, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x04, 0x4c, 0x00, 0xff, 0xf4,
-0x04, 0x53, 0x00, 0x01, 0x4e, 0x53, 0x00, 0x0e, 0x05, 0xe3, 0x00, 0x00, 0x4f, 0xe3, 0x00, 0x0a,
-0x04, 0x03, 0x00, 0x02, 0x4e, 0x03, 0x00, 0x06, 0x04, 0x13, 0x00, 0x03, 0x4e, 0x12, 0x00, 0xe8,
-0x04, 0x13, 0x00, 0x03, 0x54, 0x30, 0x80, 0x01, 0x4e, 0x32, 0x00, 0x10, 0x46, 0x5a, 0x00, 0x00,
-0x45, 0xe0, 0x00, 0x01, 0x15, 0xe2, 0x80, 0x02, 0x42, 0x40, 0x80, 0x09, 0x44, 0x00, 0x00, 0x00,
-0x14, 0x43, 0x00, 0x03, 0x49, 0xff, 0xff, 0x66, 0x04, 0x13, 0x00, 0x03, 0x54, 0x00, 0x80, 0x02,
-0x4e, 0x02, 0x00, 0x10, 0x46, 0x4a, 0x00, 0x00, 0x44, 0x20, 0x00, 0x02, 0x14, 0x22, 0x00, 0x02,
-0x42, 0x10, 0x84, 0x09, 0x44, 0x00, 0x00, 0x01, 0x14, 0x13, 0x00, 0x03, 0x49, 0xff, 0xff, 0x22,
-0x04, 0x13, 0x00, 0x03, 0x54, 0x50, 0x80, 0x04, 0x4e, 0x52, 0x00, 0x10, 0x46, 0x3a, 0x00, 0x00,
-0x44, 0x40, 0x00, 0x04, 0x14, 0x41, 0x80, 0x02, 0x43, 0xe0, 0x88, 0x09, 0x44, 0x00, 0x00, 0x02,
-0x15, 0xe3, 0x00, 0x03, 0x49, 0xff, 0xfe, 0xc8, 0x04, 0x13, 0x00, 0x03, 0x54, 0x20, 0x80, 0x08,
-0x4e, 0x22, 0x00, 0x10, 0x47, 0xea, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08, 0x14, 0x0f, 0x00, 0x02,
-0x42, 0x10, 0x8c, 0x09, 0x44, 0x00, 0x00, 0x03, 0x14, 0x13, 0x00, 0x03, 0x49, 0x00, 0x0b, 0x9a,
-0x04, 0x33, 0x00, 0x01, 0x4e, 0x33, 0x00, 0x0a, 0x04, 0x43, 0x00, 0x00, 0x4e, 0x43, 0x00, 0x06,
-0x04, 0x23, 0x00, 0x02, 0x4e, 0x22, 0x00, 0x34, 0x3e, 0x7f, 0xe1, 0xcc, 0x04, 0x03, 0x80, 0x00,
-0x04, 0x13, 0x80, 0x01, 0x39, 0xe3, 0x02, 0x02, 0x40, 0x50, 0xf8, 0x02, 0x4e, 0x52, 0x00, 0x20,
-0x3e, 0x3f, 0xcb, 0xe4, 0x38, 0x01, 0x83, 0x02, 0x14, 0x10, 0x00, 0x00, 0x04, 0x23, 0x80, 0x02,
-0x4e, 0x22, 0x00, 0x0a, 0x04, 0x43, 0x80, 0x00, 0x38, 0x13, 0x12, 0x02, 0x54, 0x02, 0x00, 0xff,
-0x4b, 0xe0, 0x08, 0x01, 0x04, 0x53, 0x80, 0x00, 0x04, 0x03, 0x80, 0x01, 0x38, 0x23, 0x16, 0x02,
-0x41, 0xe0, 0x00, 0x05, 0x40, 0x1f, 0x08, 0x02, 0x38, 0x13, 0x16, 0x0a, 0x3e, 0x5f, 0xe1, 0xfc,
-0x4c, 0x72, 0x80, 0x06, 0x50, 0x73, 0x80, 0x0c, 0x48, 0xff, 0xff, 0xd2, 0x04, 0x43, 0x00, 0x01,
-0x4e, 0x43, 0x00, 0x0e, 0x04, 0x53, 0x00, 0x00, 0x4e, 0x53, 0x00, 0x0a, 0x04, 0x13, 0x00, 0x02,
-0x4e, 0x13, 0x00, 0x06, 0x05, 0xe3, 0x00, 0x03, 0x4f, 0xe2, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcb, 0xc8, 0x44, 0x20, 0x02, 0xec, 0x49, 0xff, 0xdf, 0xc8, 0x48, 0x00, 0x00, 0x00,
-0x51, 0xce, 0x00, 0x01, 0x55, 0xce, 0x00, 0xff, 0x44, 0x50, 0x00, 0x03, 0x4d, 0xc2, 0x80, 0x38,
-0x04, 0x55, 0x00, 0x00, 0x46, 0x46, 0x03, 0x10, 0x14, 0x53, 0x00, 0x00, 0x04, 0x04, 0x80, 0x02,
-0x58, 0x32, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00, 0x04, 0x22, 0x00, 0x01, 0x58, 0x11, 0x80, 0x00,
-0x14, 0x23, 0x00, 0x01, 0x05, 0xe1, 0x80, 0x03, 0x58, 0x00, 0x80, 0x00, 0x15, 0xe4, 0x00, 0x01,
-0x04, 0x50, 0x80, 0x09, 0x46, 0x3a, 0x00, 0x00, 0x14, 0x53, 0x00, 0x02, 0x04, 0x40, 0x00, 0x0a,
-0x59, 0xe1, 0x80, 0x00, 0x14, 0x44, 0x00, 0x02, 0x04, 0x21, 0x80, 0x02, 0x46, 0x56, 0x04, 0x00,
-0x14, 0x23, 0x00, 0x03, 0x04, 0x1f, 0x00, 0x01, 0x14, 0x14, 0x00, 0x03, 0x04, 0x32, 0x80, 0x00,
-0x42, 0x01, 0xdc, 0x0b, 0x4e, 0x03, 0xfe, 0xf0, 0x48, 0xff, 0xfe, 0xfc, 0x51, 0xff, 0x80, 0x24,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xa4,
-0x44, 0x40, 0x00, 0x80, 0x54, 0x30, 0x00, 0xff, 0x44, 0x50, 0x00, 0x01, 0x40, 0x62, 0x8c, 0x1b,
-0x40, 0x62, 0x0c, 0x1a, 0x50, 0x0f, 0x80, 0x1c, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x23,
-0x45, 0xc0, 0x00, 0x00, 0x14, 0x6f, 0x80, 0x05, 0x49, 0xf7, 0xee, 0x10, 0x15, 0xcf, 0x80, 0x04,
-0x50, 0x6f, 0x80, 0x40, 0x50, 0xaf, 0x80, 0x48, 0x50, 0x9f, 0x80, 0x54, 0x50, 0x8f, 0x80, 0x42,
-0x50, 0x7f, 0x80, 0x49, 0x04, 0x3f, 0x80, 0x04, 0x51, 0xcf, 0x80, 0x4c, 0x51, 0xef, 0x80, 0x50,
-0x54, 0x01, 0x80, 0xff, 0x58, 0x13, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00, 0x15, 0xcf, 0x80, 0x03,
-0x15, 0xef, 0x80, 0x00, 0x51, 0xcf, 0x80, 0x44, 0x51, 0xef, 0x80, 0x4a, 0x58, 0x34, 0x80, 0x00,
-0x58, 0x44, 0x00, 0x00, 0x58, 0x53, 0x80, 0x00, 0x15, 0xcf, 0x80, 0x01, 0x15, 0xef, 0x80, 0x02,
-0x49, 0x00, 0x49, 0x8c, 0x05, 0xcf, 0x80, 0x04, 0x44, 0x00, 0x00, 0x00, 0x50, 0x2e, 0x00, 0x01,
-0x14, 0x2f, 0x80, 0x04, 0x05, 0xcf, 0x80, 0x05, 0x04, 0x1f, 0x80, 0x04, 0x12, 0x03, 0x00, 0x03,
-0x40, 0xf0, 0xf0, 0x06, 0x4e, 0xf3, 0xff, 0xd0, 0x51, 0xff, 0x80, 0x5c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x4b, 0x7c,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x0f, 0xf4, 0xac,
-0x44, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01, 0x14, 0x20, 0x00, 0x02,
-0x50, 0x10, 0x00, 0x10, 0x58, 0x40, 0x00, 0x00, 0x14, 0x20, 0x80, 0x02, 0x04, 0x52, 0x00, 0x01,
-0x14, 0x10, 0x00, 0x01, 0x14, 0x50, 0x80, 0x01, 0x14, 0x00, 0x80, 0x00, 0x14, 0x12, 0x80, 0x00,
-0x50, 0x10, 0x80, 0x68, 0x04, 0x30, 0x00, 0x02, 0x50, 0x51, 0x80, 0x01, 0x50, 0x30, 0x01, 0xb0,
-0x14, 0x50, 0x00, 0x02, 0x4c, 0x11, 0xff, 0xea, 0x3e, 0x0f, 0xf2, 0x0c, 0x14, 0x00, 0x00, 0x00,
-0x14, 0x00, 0x00, 0x01, 0x14, 0x20, 0x00, 0x02, 0x50, 0x10, 0x00, 0x0c, 0x58, 0x40, 0x00, 0x00,
-0x14, 0x20, 0x80, 0x02, 0x04, 0x52, 0x00, 0x01, 0x14, 0x10, 0x00, 0x01, 0x14, 0x50, 0x80, 0x01,
-0x14, 0x00, 0x80, 0x00, 0x14, 0x12, 0x80, 0x00, 0x50, 0x10, 0x80, 0x44, 0x04, 0x30, 0x00, 0x02,
-0x50, 0x51, 0x80, 0x01, 0x50, 0x30, 0x01, 0x1c, 0x14, 0x50, 0x00, 0x02, 0x4c, 0x11, 0xff, 0xea,
-0x3e, 0x0f, 0xec, 0x34, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01, 0x14, 0x20, 0x00, 0x02,
-0x50, 0x10, 0x00, 0x10, 0x58, 0x40, 0x00, 0x00, 0x14, 0x20, 0x80, 0x02, 0x04, 0x52, 0x00, 0x01,
-0x14, 0x10, 0x00, 0x01, 0x14, 0x50, 0x80, 0x01, 0x14, 0x00, 0x80, 0x00, 0x14, 0x12, 0x80, 0x00,
-0x50, 0x10, 0x80, 0x68, 0x04, 0x30, 0x00, 0x02, 0x50, 0x51, 0x80, 0x01, 0x50, 0x30, 0x01, 0xb0,
-0x14, 0x50, 0x00, 0x02, 0x4c, 0x11, 0xff, 0xea, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff,
-0x40, 0x10, 0x00, 0x10, 0x4e, 0x14, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a,
-0x44, 0x30, 0x00, 0x03, 0x42, 0x00, 0x0c, 0x24, 0x3e, 0x2f, 0xf3, 0x28, 0x40, 0x00, 0x08, 0x00,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x1f, 0xf2, 0x0c,
-0x04, 0x60, 0x80, 0x00, 0x40, 0x70, 0x00, 0x13, 0x4c, 0x60, 0xc0, 0x06, 0x44, 0x60, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x20, 0x04, 0x53, 0x00, 0x01, 0x04, 0x33, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00,
-0x14, 0x51, 0x80, 0x01, 0x14, 0x32, 0x80, 0x00, 0x14, 0x43, 0x00, 0x01, 0x14, 0x43, 0x00, 0x00,
-0x04, 0x20, 0x80, 0x02, 0x50, 0x01, 0x7f, 0xff, 0x14, 0x00, 0x80, 0x02, 0x4e, 0x62, 0x00, 0x0a,
-0x58, 0x03, 0x80, 0x00, 0x49, 0xf7, 0xf2, 0x9c, 0x14, 0x03, 0x00, 0x02, 0x12, 0x73, 0x00, 0x06,
-0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x3f, 0xf4, 0xac, 0x56, 0x10, 0x80, 0x01,
-0x3e, 0x4f, 0xec, 0x34, 0x40, 0x22, 0x04, 0x1a, 0x40, 0x21, 0x84, 0x1b, 0x04, 0x61, 0x00, 0x00,
-0x40, 0x70, 0x00, 0x13, 0x4c, 0x61, 0x40, 0x06, 0x44, 0x60, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20,
-0x04, 0x13, 0x00, 0x01, 0x04, 0x33, 0x00, 0x00, 0x45, 0xe0, 0x00, 0x00, 0x14, 0x11, 0x80, 0x01,
-0x14, 0x30, 0x80, 0x00, 0x15, 0xe3, 0x00, 0x01, 0x15, 0xe3, 0x00, 0x00, 0x04, 0x51, 0x00, 0x02,
-0x50, 0x02, 0xff, 0xff, 0x14, 0x01, 0x00, 0x02, 0x4e, 0x62, 0x00, 0x0a, 0x58, 0x03, 0x80, 0x00,
-0x49, 0xf7, 0xf2, 0x5e, 0x14, 0x03, 0x00, 0x02, 0x12, 0x73, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x28, 0x3e, 0x0f, 0xed, 0xe4,
-0x49, 0xf7, 0xec, 0xbc, 0x44, 0x2f, 0xff, 0xff, 0x3e, 0x1f, 0xee, 0x0c, 0x3c, 0x2f, 0xfb, 0x7a,
-0x3c, 0x1f, 0xfb, 0x79, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x40, 0x00, 0x00, 0x13, 0x49, 0xf7, 0xf2, 0x4a,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x04,
-0x44, 0x20, 0x02, 0xb4, 0x49, 0xff, 0xdd, 0xea, 0x48, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0xee, 0x0c,
-0x40, 0xf0, 0x04, 0x06, 0x4e, 0xf3, 0x00, 0x1e, 0x50, 0x10, 0x83, 0xff, 0x40, 0xf0, 0x80, 0x06,
-0x4e, 0xf3, 0x00, 0x18, 0x3e, 0x1f, 0xed, 0xe4, 0x04, 0x20, 0x80, 0x00, 0x40, 0x00, 0x08, 0x01,
-0x40, 0x00, 0x14, 0x09, 0x5c, 0xf0, 0x00, 0x20, 0x4e, 0xf3, 0x00, 0x12, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0xc0, 0x49, 0xff, 0xdd, 0xc8, 0x48, 0x00, 0x00, 0x00,
-0x49, 0xf7, 0xf1, 0xfe, 0x49, 0xf7, 0xf2, 0x0e, 0x48, 0x00, 0x00, 0x2c, 0x58, 0x40, 0x80, 0x00,
-0x40, 0x30, 0x10, 0x00, 0x50, 0x31, 0x80, 0x08, 0x00, 0x21, 0x80, 0x00, 0x4e, 0x23, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0xcc, 0x49, 0xff, 0xdd, 0xae,
-0x48, 0x00, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x10, 0x41, 0x80, 0x00, 0x51, 0xe1, 0x7f, 0xff,
-0x44, 0x30, 0x00, 0x01, 0x40, 0x41, 0xf8, 0x0c, 0x50, 0x52, 0x7f, 0xff, 0x40, 0x22, 0x90, 0x04,
-0x04, 0x30, 0x80, 0x01, 0x41, 0xe1, 0x00, 0x0c, 0x40, 0x5f, 0x0c, 0x04, 0x14, 0x50, 0x80, 0x01,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x54, 0x10, 0x80, 0xff, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0x11, 0x49, 0xff, 0xdd, 0x7e,
-0x48, 0x00, 0x00, 0x00, 0x3e, 0x0f, 0xf4, 0xbc, 0x40, 0xf3, 0x00, 0x06, 0x4e, 0xf3, 0x00, 0x0c,
-0x50, 0x00, 0x01, 0x38, 0x40, 0xf0, 0x18, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x3e, 0x7f, 0xf4, 0xac,
-0x48, 0x00, 0x00, 0x14, 0x3e, 0x0f, 0xf2, 0x18, 0x40, 0xf3, 0x00, 0x06, 0x4e, 0xf3, 0x00, 0x0c,
-0x50, 0x20, 0x00, 0xcc, 0x40, 0xf1, 0x18, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x50, 0x70, 0x7f, 0xf4,
-0x48, 0x00, 0x00, 0x04, 0x3e, 0x7f, 0xec, 0x34, 0x4e, 0x12, 0x00, 0x18, 0x04, 0x13, 0x00, 0x02,
-0x4e, 0x12, 0x00, 0x14, 0x02, 0x03, 0x00, 0x06, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0xc0, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0x25, 0x49, 0xff, 0xdd, 0x46,
-0x48, 0x00, 0x00, 0x00, 0x49, 0xf7, 0xf1, 0x8e, 0x44, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x02,
-0x05, 0xe3, 0x80, 0x01, 0x14, 0x63, 0x80, 0x01, 0x14, 0x73, 0x00, 0x00, 0x15, 0xe3, 0x00, 0x01,
-0x14, 0x6f, 0x00, 0x00, 0x04, 0x53, 0x80, 0x02, 0x50, 0x42, 0x80, 0x01, 0x14, 0x43, 0x80, 0x02,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0x66, 0x49, 0xff, 0xdd, 0x18, 0x48, 0x00, 0x00, 0x00,
-0x4e, 0x13, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0x67,
-0x49, 0xff, 0xdd, 0x0c, 0x48, 0x00, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x14, 0x50, 0x10, 0x80, 0x1f,
-0x40, 0x10, 0x94, 0x09, 0x5c, 0xf0, 0x80, 0x21, 0x4e, 0xf3, 0x00, 0x18, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x04, 0x44, 0x20, 0x02, 0x70, 0x49, 0xff, 0xdc, 0xf8, 0x48, 0x00, 0x00, 0x00,
-0x40, 0x00, 0x80, 0x13, 0x49, 0xf7, 0xf1, 0x52, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0x80, 0x3a,
-0x49, 0xf7, 0xf1, 0x1e, 0x48, 0x00, 0x00, 0x38, 0x50, 0x20, 0xff, 0xff, 0x5c, 0xf1, 0x00, 0x20,
-0x4e, 0xf2, 0x00, 0x30, 0x44, 0x50, 0x00, 0x01, 0x40, 0x42, 0x88, 0x0c, 0x51, 0xe2, 0x7f, 0xff,
-0x40, 0x2f, 0x10, 0x04, 0x3c, 0x3d, 0xfb, 0x7a, 0x52, 0x40, 0x80, 0x20, 0x48, 0x00, 0x00, 0x1c,
-0x4c, 0x51, 0x40, 0x16, 0x40, 0x51, 0x08, 0x05, 0x41, 0xe2, 0x8c, 0x02, 0x3e, 0x3f, 0xed, 0xe4,
-0x40, 0x40, 0x0c, 0x00, 0x15, 0xe1, 0x80, 0x01, 0x10, 0x12, 0x00, 0x08, 0x40, 0x00, 0x14, 0x08,
-0x04, 0x21, 0x80, 0x00, 0x40, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x40, 0x21, 0x08, 0x00,
-0x50, 0x00, 0x00, 0x01, 0x40, 0x51, 0x0c, 0x02, 0x40, 0xf2, 0x00, 0x06, 0x4e, 0xf2, 0xff, 0xe2,
-0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xc0, 0x54, 0x70, 0x00, 0xff, 0x40, 0x03, 0x80, 0x10,
-0x54, 0x80, 0x80, 0xff, 0x4e, 0x05, 0x00, 0x2e, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x23,
-0x50, 0x0f, 0x80, 0x04, 0x49, 0xf7, 0xeb, 0x42, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x0c,
-0x50, 0x0f, 0x80, 0x28, 0x49, 0xf7, 0xeb, 0x3a, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x0a,
-0x50, 0x0f, 0x80, 0x34, 0x49, 0xf7, 0xeb, 0x32, 0x46, 0x16, 0x03, 0x20, 0x58, 0x10, 0x80, 0x0c,
-0x40, 0x23, 0x94, 0x08, 0x40, 0x01, 0x04, 0x00, 0x04, 0x10, 0x00, 0x00, 0x4e, 0x82, 0x00, 0x06,
-0x42, 0x10, 0xfc, 0x08, 0x48, 0x00, 0x00, 0x04, 0x42, 0x10, 0xfc, 0x09, 0x14, 0x10, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x40, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x54, 0x60, 0x00, 0xff, 0x40, 0x03, 0x00, 0x10, 0x54, 0x70, 0x80, 0xff,
-0x4e, 0x05, 0x00, 0x24, 0x58, 0x03, 0x00, 0x00, 0x50, 0x1f, 0x80, 0x05, 0x50, 0x2f, 0x80, 0x06,
-0x50, 0x3f, 0x80, 0x07, 0x49, 0x00, 0x49, 0x5e, 0x00, 0x0f, 0x80, 0x05, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x02, 0xc0, 0x0a, 0x00, 0x2f, 0x80, 0x06, 0x4c, 0x20, 0x40, 0x06, 0x00, 0x3f, 0x80, 0x07,
-0x4c, 0x33, 0x80, 0x0c, 0x44, 0x10, 0x00, 0x01, 0x58, 0x03, 0x00, 0x00, 0x58, 0x33, 0x80, 0x00,
-0x58, 0x20, 0x80, 0x00, 0x49, 0x00, 0x4a, 0x66, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0x9c, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x40, 0x00, 0x00, 0x13,
-0x49, 0xf7, 0xf0, 0x66, 0x00, 0x40, 0x00, 0x03, 0x44, 0x2f, 0xff, 0xa0, 0x54, 0x32, 0x00, 0x1f,
-0x40, 0x11, 0x88, 0x04, 0x10, 0x10, 0x00, 0x03, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x21, 0x00, 0xff,
-0x59, 0xc0, 0x00, 0x00, 0x54, 0x70, 0x80, 0xff, 0x14, 0x2f, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x5a,
-0x50, 0x33, 0x80, 0x04, 0x40, 0xa1, 0x8c, 0x00, 0x44, 0x60, 0x00, 0x00, 0x44, 0x90, 0x00, 0x01,
-0x40, 0x0e, 0x18, 0x0d, 0x54, 0x10, 0x00, 0x01, 0x50, 0x03, 0x7f, 0xf9, 0x4e, 0x12, 0x00, 0x44,
-0x5c, 0xf0, 0x00, 0x02, 0x4e, 0xf2, 0x00, 0x12, 0x5c, 0xf3, 0x80, 0x03, 0x4e, 0xf2, 0x00, 0x3c,
-0x54, 0x03, 0x00, 0xff, 0x58, 0x13, 0x80, 0x00, 0x44, 0x20, 0x00, 0x01, 0x44, 0x30, 0x4e, 0x20,
-0x3e, 0x4e, 0xb3, 0x10, 0x48, 0x00, 0x00, 0x16, 0x04, 0x5f, 0x80, 0x01, 0x54, 0x43, 0x00, 0xff,
-0x58, 0x13, 0x80, 0x00, 0x44, 0x20, 0x00, 0x01, 0x44, 0x30, 0x4e, 0x20, 0x58, 0x02, 0x00, 0x00,
-0x4e, 0x52, 0x00, 0x06, 0x49, 0xff, 0xe8, 0x6e, 0x48, 0x00, 0x00, 0x06, 0x3e, 0x4e, 0xb3, 0xb0,
-0x4b, 0xe0, 0x10, 0x01, 0x3c, 0x2d, 0xf8, 0x82, 0x40, 0x14, 0x98, 0x0c, 0x41, 0xe1, 0x28, 0x00,
-0x02, 0x4f, 0x00, 0x02, 0x40, 0x30, 0x90, 0x04, 0x12, 0x3f, 0x00, 0x02, 0x4e, 0x02, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x24, 0x44, 0x20, 0x12, 0x48, 0x49, 0xff, 0xdb, 0xc6,
-0x48, 0x00, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01, 0x44, 0x00, 0x00, 0x0e, 0x4c, 0x60, 0x7f, 0xb2,
+0x45, 0xc0, 0x34, 0x20, 0x44, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, 0x26, 0x49, 0xf7, 0xf5, 0x88,
+0x00, 0x10, 0x00, 0x02, 0x50, 0x20, 0x00, 0x14, 0x44, 0x30, 0x00, 0x00, 0x54, 0x00, 0x80, 0x1f,
+0x48, 0x00, 0x00, 0x12, 0x05, 0xe1, 0x00, 0x00, 0x46, 0x10, 0x03, 0xfc, 0x46, 0x40, 0x02, 0x00,
+0x40, 0x5f, 0x04, 0x02, 0x50, 0x31, 0x80, 0x01, 0x4c, 0x52, 0x40, 0x04, 0x3e, 0x87, 0xe3, 0x45,
+0x50, 0x21, 0x00, 0x14, 0x40, 0xf1, 0x80, 0x06, 0x4e, 0xf3, 0xff, 0xee, 0x58, 0x03, 0x00, 0x00,
+0x49, 0x00, 0x03, 0x36, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01, 0x44, 0x20, 0x00, 0x00,
+0x4b, 0xe0, 0x70, 0x01, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00, 0x4c, 0x02, 0xff, 0xd0,
0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x59, 0xc0, 0x00, 0x00, 0x54, 0x70, 0x80, 0xff, 0x4e, 0x02, 0x00, 0x46,
-0x50, 0xa3, 0x80, 0x04, 0x40, 0xa5, 0x28, 0x00, 0x44, 0x60, 0x00, 0x00, 0x44, 0x90, 0x00, 0x01,
-0x40, 0x1e, 0x18, 0x0d, 0x54, 0x00, 0x80, 0x01, 0x50, 0x23, 0x7f, 0xf9, 0x4e, 0x02, 0x00, 0x30,
-0x54, 0x03, 0x00, 0xff, 0x58, 0x13, 0x80, 0x00, 0x5c, 0xf1, 0x00, 0x02, 0x4e, 0xf2, 0x00, 0x0a,
-0x5c, 0xf3, 0x80, 0x03, 0x4e, 0xf2, 0x00, 0x24, 0x3e, 0x2e, 0xaf, 0xf8, 0x48, 0x00, 0x00, 0x04,
-0x3e, 0x2e, 0xb0, 0x4c, 0x4b, 0xe0, 0x08, 0x01, 0x3c, 0x1d, 0xf8, 0x82, 0x40, 0x24, 0x98, 0x0c,
-0x40, 0x40, 0xa8, 0x00, 0x02, 0x32, 0x00, 0x02, 0x40, 0x51, 0x08, 0x05, 0x40, 0x22, 0x8c, 0x02,
-0x12, 0x22, 0x00, 0x02, 0x4e, 0x02, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x24,
-0x44, 0x20, 0x12, 0x08, 0x49, 0xff, 0xdb, 0x72, 0x48, 0x00, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01,
-0x44, 0x50, 0x00, 0x0e, 0x4c, 0x62, 0xff, 0xc6, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff,
-0x49, 0xff, 0xfc, 0xb6, 0x4e, 0x03, 0x00, 0x06, 0x44, 0x00, 0x00, 0xff, 0x48, 0x00, 0x00, 0x04,
-0x00, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x40, 0x20, 0x00, 0x13, 0x44, 0x00, 0x00, 0x00,
-0x58, 0x10, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xf3, 0xa4, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x45, 0xc0, 0x2c, 0xdc, 0x54, 0x70, 0x00, 0xff, 0x58, 0x13, 0x80, 0x00, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x49, 0xb6, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x13, 0x80, 0x00,
-0x44, 0x20, 0x00, 0x00, 0x4c, 0x02, 0x80, 0x1e, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xf2, 0xf2,
-0x58, 0x60, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x00, 0x10, 0x00, 0x05, 0x44, 0x50, 0x00, 0xa0,
-0x58, 0x03, 0x00, 0x00, 0x4c, 0x12, 0x80, 0x0a, 0x49, 0xff, 0xfe, 0xd6, 0x58, 0x03, 0x00, 0x00,
-0x49, 0xff, 0xff, 0xc0, 0x48, 0xff, 0xff, 0xda, 0x49, 0xff, 0xfd, 0x04, 0x48, 0xff, 0xff, 0xd6,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
-0x58, 0x70, 0x00, 0x00, 0x49, 0xff, 0xee, 0x12, 0x04, 0x63, 0x80, 0x02, 0x00, 0x83, 0x00, 0x20,
-0x40, 0x04, 0x00, 0x10, 0x4e, 0x04, 0x00, 0x06, 0x44, 0x10, 0xff, 0xff, 0x48, 0x00, 0x00, 0x14,
-0x44, 0x20, 0x00, 0x00, 0x3e, 0x1f, 0xf6, 0x70, 0x38, 0x20, 0xa0, 0x08, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0xff, 0xac, 0x44, 0x10, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x70,
-0x44, 0x10, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0b, 0x54, 0x01, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x2e,
-0x00, 0x23, 0x00, 0x07, 0x50, 0x43, 0x00, 0x0c, 0x14, 0x12, 0x00, 0x01, 0x44, 0x30, 0x00, 0x18,
-0x44, 0x1f, 0xff, 0xed, 0x44, 0x50, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0a, 0x14, 0x52, 0x00, 0x02,
-0x14, 0x82, 0x00, 0x00, 0x12, 0x33, 0x00, 0x00, 0x10, 0x13, 0x00, 0x04, 0x10, 0x03, 0x00, 0x08,
-0x10, 0x23, 0x00, 0x05, 0x45, 0xe0, 0x00, 0x01, 0x04, 0x53, 0x80, 0x02, 0x44, 0x4f, 0xe0, 0x00,
-0x11, 0xe3, 0x80, 0x10, 0x12, 0x42, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x02, 0xfc,
-0x49, 0xff, 0xed, 0xc4, 0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x55, 0xc0, 0x00, 0xff, 0x54, 0xa0, 0x80, 0xff,
-0x48, 0x00, 0x00, 0x08, 0x49, 0xff, 0xfe, 0x60, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xff, 0x4a,
-0x58, 0x15, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00, 0x58, 0x0e, 0x00, 0x00, 0x49, 0xf7, 0xf2, 0x62,
-0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00, 0x4c, 0x02, 0xff, 0xee, 0x51, 0xff, 0x80, 0x04,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xdc,
-0x58, 0x50, 0x80, 0x00, 0x14, 0x0f, 0x80, 0x04, 0x4e, 0x12, 0x00, 0x0a, 0x44, 0x00, 0x00, 0x01,
-0x4c, 0x10, 0x00, 0x06, 0x44, 0xa0, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4e, 0x47, 0xcc, 0x00, 0x00,
-0x54, 0x21, 0x00, 0xff, 0x59, 0xce, 0x00, 0x01, 0x44, 0xa0, 0x00, 0x00, 0x14, 0x2f, 0x80, 0x05,
-0x15, 0xcf, 0x80, 0x01, 0x58, 0x95, 0x00, 0x00, 0x50, 0x8f, 0x80, 0x1f, 0x50, 0x7f, 0x80, 0x1c,
-0x50, 0x6f, 0x80, 0x1a, 0x04, 0x4f, 0x80, 0x04, 0x40, 0x32, 0x24, 0x0d, 0x54, 0x11, 0x80, 0x01,
-0x4e, 0x12, 0x00, 0x2c, 0x58, 0x14, 0x80, 0x00, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x02,
-0x14, 0x5f, 0x80, 0x03, 0x45, 0xc0, 0x0f, 0xff, 0x49, 0x00, 0x48, 0xd4, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x03, 0x58, 0x34, 0x80, 0x00, 0x04, 0x4f, 0x80, 0x05, 0x04, 0x5f, 0x80, 0x03,
-0x4c, 0x0e, 0x00, 0x14, 0x58, 0x02, 0x80, 0x00, 0x49, 0xff, 0xe3, 0x4a, 0x05, 0xef, 0x80, 0x01,
-0x58, 0x13, 0x80, 0x00, 0x40, 0xaf, 0x00, 0x1b, 0x58, 0x23, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00,
-0x49, 0xff, 0xe3, 0x88, 0x04, 0x5f, 0x80, 0x03, 0x50, 0x94, 0x80, 0x01, 0x45, 0xc0, 0x00, 0x0e,
-0x4c, 0x9e, 0x7f, 0xca, 0x58, 0x05, 0x00, 0x00, 0x51, 0xff, 0x80, 0x24, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x81, 0x80, 0xff,
-0x50, 0x44, 0x00, 0x04, 0x3c, 0x3d, 0xf8, 0x82, 0x40, 0x02, 0x10, 0x00, 0x44, 0x40, 0x00, 0x00,
-0x58, 0x70, 0x80, 0x00, 0x40, 0x01, 0x80, 0x00, 0x54, 0x61, 0x00, 0xff, 0x58, 0x92, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x01, 0x40, 0xa3, 0x90, 0x0d, 0x54, 0x25, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x0e,
-0x02, 0x30, 0x00, 0x02, 0x40, 0x20, 0x90, 0x0c, 0x41, 0xe1, 0x90, 0x0e, 0x55, 0xcf, 0x00, 0x01,
-0x4f, 0xc3, 0x00, 0x04, 0x40, 0x94, 0x88, 0x04, 0x50, 0x42, 0x00, 0x01, 0x44, 0x50, 0x00, 0x0e,
-0x4c, 0x42, 0xff, 0xea, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xfd, 0x3a,
-0x3f, 0xce, 0xcb, 0xb0, 0x44, 0x10, 0x00, 0x01, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01,
-0x44, 0x20, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xfd, 0xb4,
-0x58, 0x04, 0x80, 0x00, 0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x1a, 0x44, 0x10, 0x00, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00,
-0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xff, 0x42, 0x58, 0x10, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x24, 0x44, 0x20, 0x0d, 0x2c, 0x49, 0xff, 0xd9, 0xb6,
-0x48, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfd, 0x04, 0x51, 0xff, 0x80, 0x04,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x80, 0x80, 0x00,
-0x58, 0x60, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x62, 0x80, 0x22,
-0x44, 0x10, 0x00, 0x06, 0x4c, 0x60, 0xc0, 0x14, 0x54, 0x71, 0x00, 0xff, 0x58, 0x03, 0x80, 0x00,
-0x49, 0xff, 0xfe, 0x32, 0x58, 0x30, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
-0x58, 0x23, 0x80, 0x00, 0x49, 0xff, 0xff, 0x70, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x24, 0x44, 0x20, 0x0d, 0x6f, 0x49, 0xff, 0xd9, 0x80, 0x48, 0x00, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x03, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xd4, 0x3a, 0x6f, 0xa0, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x00, 0x60, 0x00, 0x02, 0x54, 0x10, 0x80, 0xff,
-0x40, 0x03, 0x00, 0x10, 0x4e, 0x04, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14,
-0x4e, 0x13, 0x00, 0x04, 0x48, 0x00, 0x00, 0x0e, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfc, 0xf0,
-0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x0f, 0x49, 0xff, 0xff, 0xae,
-0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
-0x04, 0x60, 0x00, 0x02, 0x58, 0x70, 0x00, 0x00, 0x00, 0x83, 0x00, 0x20, 0x40, 0x04, 0x00, 0x10,
-0x4e, 0x04, 0x00, 0x06, 0x44, 0x10, 0xff, 0xff, 0x48, 0x00, 0x00, 0x0e, 0x58, 0x04, 0x00, 0x00,
-0x49, 0xff, 0xfa, 0x96, 0x10, 0x80, 0x00, 0x02, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xff, 0xc4,
-0x44, 0x10, 0x00, 0x00, 0x00, 0x23, 0x00, 0x0b, 0x54, 0x01, 0x00, 0x01, 0x4e, 0x02, 0x00, 0x2c,
-0x00, 0x53, 0x00, 0x07, 0x50, 0x43, 0x00, 0x0c, 0x44, 0x30, 0x00, 0x00, 0x44, 0x20, 0x00, 0x18,
-0x44, 0x0f, 0xff, 0xed, 0x45, 0xe0, 0x00, 0x14, 0x14, 0x32, 0x00, 0x02, 0x14, 0x82, 0x00, 0x00,
-0x14, 0x12, 0x00, 0x01, 0x10, 0x03, 0x00, 0x04, 0x12, 0x23, 0x00, 0x00, 0x11, 0xe3, 0x00, 0x08,
-0x10, 0x53, 0x00, 0x05, 0x44, 0x40, 0x00, 0x01, 0x04, 0x13, 0x80, 0x02, 0x44, 0x3f, 0xe0, 0x00,
-0x10, 0x43, 0x80, 0x10, 0x12, 0x30, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x01, 0x54,
-0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x3e, 0x3f, 0xe2, 0x08, 0x04, 0x11, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x14, 0x00, 0x80, 0x00, 0x58, 0x20, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x04, 0x51, 0x80, 0x00,
-0x41, 0xe0, 0x84, 0x00, 0x40, 0x42, 0xf8, 0x00, 0x12, 0x22, 0x00, 0x02, 0x51, 0xe0, 0x80, 0x04,
-0x04, 0x51, 0x80, 0x00, 0x40, 0x4f, 0x78, 0x00, 0x41, 0xe2, 0x90, 0x00, 0x50, 0x00, 0x00, 0x01,
-0x44, 0x40, 0x00, 0x04, 0x12, 0x2f, 0x00, 0x02, 0x50, 0x10, 0x80, 0x01, 0x4c, 0x02, 0x7f, 0xe8,
-0x3e, 0x0f, 0xf6, 0x70, 0x18, 0x20, 0x00, 0x01, 0x3e, 0x5f, 0xf6, 0xf0, 0x4c, 0x02, 0xff, 0xfc,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0x00, 0x49, 0x00, 0x46, 0x0e, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0x3c, 0x54, 0x10, 0x80, 0xff,
-0x54, 0x21, 0x00, 0xff, 0x4e, 0x13, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x40,
-0x46, 0x46, 0x01, 0x20, 0x58, 0x42, 0x01, 0x14, 0x50, 0x62, 0x7f, 0xfc, 0x50, 0x53, 0x7f, 0xf4,
-0x50, 0x72, 0xff, 0xfc, 0x44, 0x30, 0x00, 0x00, 0x40, 0x83, 0x88, 0x1b, 0x40, 0x83, 0x08, 0x1a,
-0x40, 0x62, 0x88, 0x1b, 0x40, 0x62, 0x08, 0x1a, 0x58, 0x21, 0x80, 0x00, 0x44, 0x40, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x1c, 0x38, 0x50, 0x0c, 0x00, 0x50, 0x31, 0x80, 0x01, 0x50, 0x92, 0x80, 0x05,
-0x50, 0x72, 0x80, 0x0a, 0x40, 0x72, 0x1c, 0x0c, 0x40, 0x92, 0x24, 0x0c, 0x40, 0x94, 0x9c, 0x04,
-0x50, 0x72, 0x80, 0x10, 0x40, 0x52, 0x14, 0x0c, 0x40, 0x54, 0x94, 0x04, 0x40, 0x72, 0x1c, 0x0c,
-0x40, 0x52, 0x9c, 0x04, 0x40, 0x21, 0x14, 0x04, 0x40, 0xf1, 0x84, 0x06, 0x4e, 0xf3, 0xff, 0xe4,
-0x14, 0x24, 0x00, 0x00, 0x14, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa4, 0x04,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x00, 0x10, 0x00, 0x2d, 0x50, 0x60, 0x00, 0x27,
-0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x0a, 0x44, 0x10, 0x00, 0x01, 0x50, 0x03, 0x00, 0x08,
-0x58, 0x20, 0x80, 0x00, 0x49, 0xff, 0xff, 0xa2, 0x44, 0x20, 0x00, 0x00, 0x10, 0x23, 0x00, 0x07,
-0x10, 0x23, 0x00, 0x05, 0x10, 0x23, 0x00, 0x06, 0x50, 0x03, 0x7f, 0xed, 0x49, 0x00, 0x24, 0xc2,
-0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x50, 0x70, 0x00, 0x14,
-0x50, 0x60, 0x00, 0x27, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x24, 0xb4, 0x00, 0x23, 0x00, 0x06,
-0x40, 0x01, 0x00, 0x10, 0x4e, 0x05, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40,
-0x44, 0x20, 0x0b, 0xc4, 0x49, 0xff, 0xd8, 0x3a, 0x48, 0x00, 0x00, 0x00, 0x54, 0x21, 0x00, 0x01,
-0x50, 0x03, 0x00, 0x08, 0x4e, 0x23, 0x00, 0x16, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xff, 0x6e,
-0x00, 0x53, 0x00, 0x06, 0x50, 0x33, 0x7f, 0xdf, 0x58, 0x42, 0x80, 0x01, 0x10, 0x43, 0x00, 0x06,
-0x44, 0x10, 0x03, 0xe8, 0x3a, 0x21, 0x88, 0x00, 0x40, 0x11, 0x04, 0x17, 0x48, 0x00, 0x00, 0x32,
-0x44, 0x10, 0x00, 0x01, 0x58, 0x20, 0x80, 0x00, 0x49, 0xff, 0xff, 0x58, 0x00, 0x03, 0x00, 0x07,
-0x44, 0x50, 0x00, 0xff, 0x4c, 0x02, 0x80, 0x12, 0x51, 0xe0, 0x7f, 0xff, 0x54, 0x0f, 0x00, 0xff,
-0x10, 0x03, 0x00, 0x07, 0x4e, 0x03, 0x00, 0x0a, 0x10, 0x03, 0x00, 0x06, 0x58, 0x03, 0x80, 0x00,
-0x49, 0x00, 0x24, 0x70, 0x48, 0x00, 0x00, 0x1a, 0x00, 0x13, 0x00, 0x06, 0x42, 0x50, 0x80, 0x09,
-0x10, 0x53, 0x00, 0x06, 0x50, 0x43, 0x7f, 0xdf, 0x50, 0x63, 0x7f, 0xe3, 0x3a, 0x22, 0x08, 0x00,
-0x3a, 0x63, 0x18, 0x00, 0x40, 0x33, 0x08, 0x01, 0x44, 0x00, 0x03, 0xe8, 0x40, 0x11, 0x80, 0x57,
-0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x25, 0x46, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0xbc, 0x44, 0x1f, 0xff, 0xff, 0x58, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x10, 0x13, 0x00, 0x2f, 0x10, 0x03, 0x00, 0x2e, 0x10, 0x03, 0x00, 0x2d, 0x58, 0x23, 0x00, 0x00,
-0x50, 0x03, 0x00, 0x14, 0x3e, 0x1e, 0xe4, 0xb4, 0x49, 0x00, 0x24, 0x1c, 0x58, 0x03, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x12, 0x49, 0xf7, 0xe6, 0x70, 0x3a, 0x6f, 0x98, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0x00, 0x2a, 0x70,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xfa, 0x2a, 0x3a, 0x6f, 0x98, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x06, 0xad, 0x49, 0xff, 0xd7, 0xa6,
-0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x06, 0xae, 0x49, 0xff, 0xd7, 0x98, 0x48, 0x00, 0x00, 0x00,
-0x00, 0x13, 0x00, 0x10, 0x5c, 0xf0, 0x80, 0x02, 0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x06, 0xb0, 0x49, 0xff, 0xd7, 0x88, 0x48, 0x00, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x00, 0x02, 0x23, 0x00, 0x06, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xef, 0xe2,
-0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x06, 0xba,
-0x49, 0xff, 0xd7, 0x74, 0x48, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xf9, 0xde, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
-0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40,
-0x44, 0x20, 0x05, 0xd2, 0x49, 0xff, 0xd7, 0x5a, 0x48, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x00, 0x13, 0x00, 0x10, 0x02, 0x23, 0x00, 0x06, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xef, 0xb2,
-0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x05, 0xdd,
-0x49, 0xff, 0xd7, 0x44, 0x48, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xf9, 0xae, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40,
-0x44, 0x20, 0x09, 0x49, 0x49, 0xff, 0xd7, 0x2a, 0x48, 0x00, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00,
-0x10, 0x20, 0x00, 0x10, 0x49, 0xff, 0xff, 0xbc, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x05, 0x2d, 0x49, 0xff, 0xd7, 0x0e,
-0x48, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0b, 0x4e, 0x13, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x05, 0x2e, 0x49, 0xff, 0xd7, 0x00, 0x48, 0x00, 0x00, 0x00,
-0x04, 0x20, 0x00, 0x0c, 0x4e, 0x23, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40,
-0x44, 0x20, 0x05, 0x2f, 0x49, 0xff, 0xd6, 0xf2, 0x48, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00,
-0x3e, 0x1f, 0xcc, 0x84, 0x40, 0x32, 0x10, 0x09, 0x38, 0x10, 0x8e, 0x02, 0x4e, 0x12, 0x00, 0x0e,
-0x4b, 0xe0, 0x04, 0x01, 0x44, 0x10, 0x00, 0x01, 0x4c, 0x00, 0x80, 0x1a, 0x2e, 0x07, 0xfa, 0xbc,
-0x4c, 0x00, 0xc0, 0x0a, 0x48, 0x00, 0x00, 0x0e, 0x2f, 0xe7, 0xfa, 0xbc, 0x44, 0x50, 0x00, 0x01,
-0x4d, 0xe2, 0x80, 0x08, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xff, 0x9a, 0x48, 0x00, 0x00, 0x08,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf9, 0x3a, 0x3a, 0x6f, 0x98, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x58, 0x70, 0x00, 0x00,
-0x49, 0xff, 0xf3, 0x7e, 0x58, 0xa0, 0x00, 0x00, 0x44, 0x20, 0x00, 0x2c, 0x50, 0x01, 0x00, 0x04,
-0x40, 0x91, 0x28, 0x1a, 0x40, 0x90, 0x28, 0x1b, 0x58, 0x04, 0x80, 0x00, 0x49, 0xf7, 0xeb, 0x0e,
-0x44, 0x50, 0x0f, 0xff, 0x58, 0x80, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x08, 0x46, 0x0c, 0x00, 0x00,
-0x58, 0x00, 0x00, 0x9a, 0x48, 0x00, 0x00, 0xf2, 0x49, 0xf7, 0xea, 0xd2, 0x50, 0x60, 0x00, 0x04,
-0x58, 0x24, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xf7, 0xe5, 0x40, 0x02, 0x03, 0x00, 0x0b,
-0x00, 0x53, 0x00, 0x04, 0x44, 0x3f, 0xc0, 0x03, 0x40, 0x52, 0x98, 0x09, 0x40, 0x52, 0x98, 0x08,
-0x40, 0x10, 0x0c, 0x02, 0x02, 0x23, 0x00, 0x04, 0x01, 0xe3, 0x7f, 0xff, 0x01, 0xc3, 0x00, 0x02,
-0x00, 0x43, 0x00, 0x05, 0x14, 0x1f, 0x80, 0x01, 0x44, 0x1f, 0xff, 0x80, 0x00, 0x03, 0x00, 0x07,
-0x54, 0x21, 0x00, 0x3f, 0x40, 0x30, 0x04, 0x04, 0x00, 0x03, 0x00, 0x11, 0x55, 0xef, 0x00, 0x7f,
-0x58, 0x10, 0x00, 0x20, 0x04, 0x0f, 0x80, 0x01, 0x59, 0xce, 0x00, 0x08, 0x58, 0x00, 0x00, 0x04,
-0x14, 0x0f, 0x80, 0x01, 0x12, 0x93, 0x7f, 0xfe, 0x44, 0x9f, 0xff, 0xff, 0x58, 0x52, 0x80, 0x1e,
-0x58, 0x42, 0x00, 0x14, 0x58, 0x21, 0x28, 0x00, 0x10, 0x93, 0x00, 0x00, 0x44, 0x9f, 0xff, 0xc8,
-0x11, 0xe3, 0x7f, 0xff, 0x10, 0x93, 0x00, 0x01, 0x11, 0xc3, 0x00, 0x02, 0x10, 0x53, 0x00, 0x04,
-0x10, 0x43, 0x00, 0x05, 0x10, 0x33, 0x00, 0x07, 0x12, 0x23, 0x00, 0x04, 0x10, 0x13, 0x00, 0x11,
-0x12, 0x03, 0x00, 0x0b, 0x4e, 0xa2, 0x00, 0x06, 0x50, 0x13, 0x00, 0x1c, 0x48, 0x00, 0x00, 0x04,
-0x50, 0x13, 0x00, 0x18, 0x45, 0xef, 0xff, 0xff, 0x44, 0x30, 0x00, 0xe4, 0x44, 0x00, 0x00, 0x00,
-0x12, 0x00, 0x80, 0x01, 0x12, 0x30, 0x80, 0x00, 0x11, 0xe0, 0x80, 0x09, 0x11, 0xe0, 0x80, 0x04,
-0x11, 0xe0, 0x80, 0x05, 0x11, 0xe0, 0x80, 0x06, 0x11, 0xe0, 0x80, 0x07, 0x11, 0xe0, 0x80, 0x08,
-0x50, 0x00, 0x80, 0x0a, 0x00, 0x43, 0x80, 0x04, 0x10, 0x40, 0x80, 0x0a, 0x00, 0x53, 0x80, 0x05,
-0x10, 0x50, 0x80, 0x0b, 0x00, 0x23, 0x80, 0x06, 0x10, 0x20, 0x80, 0x0c, 0x00, 0x33, 0x80, 0x07,
-0x10, 0x30, 0x80, 0x0d, 0x01, 0xe3, 0x80, 0x08, 0x11, 0xe0, 0x80, 0x0e, 0x00, 0x73, 0x80, 0x09,
-0x10, 0x70, 0x80, 0x0f, 0x49, 0xff, 0xf2, 0xde, 0x44, 0x50, 0x00, 0x0f, 0x58, 0x10, 0x00, 0x00,
-0x4c, 0x02, 0xc0, 0x04, 0x48, 0x00, 0x00, 0x56, 0x00, 0x23, 0x00, 0x03, 0x40, 0x50, 0x08, 0x08,
-0x54, 0x31, 0x00, 0x03, 0x40, 0x02, 0x8c, 0x04, 0x10, 0x03, 0x00, 0x03, 0x47, 0xe6, 0x01, 0x20,
-0x46, 0x40, 0x02, 0x00, 0x04, 0x2f, 0x00, 0x40, 0x40, 0x12, 0x04, 0x0c, 0x40, 0x50, 0x88, 0x02,
-0x4c, 0x50, 0xc0, 0x0e, 0x01, 0xe3, 0x7f, 0xff, 0x44, 0x0f, 0xff, 0x87, 0x40, 0x4f, 0x00, 0x02,
-0x44, 0x10, 0x00, 0x04, 0x58, 0x02, 0x00, 0x20, 0x48, 0x00, 0x00, 0x14, 0x46, 0x26, 0x01, 0x20,
-0x04, 0x51, 0x00, 0x41, 0x40, 0x30, 0x94, 0x02, 0x4c, 0x30, 0xc0, 0x10, 0x01, 0xe3, 0x7f, 0xff,
-0x44, 0x0f, 0xff, 0x87, 0x40, 0x4f, 0x00, 0x02, 0x44, 0x10, 0x00, 0x0d, 0x58, 0x02, 0x00, 0x68,
-0x10, 0x03, 0x7f, 0xff, 0x48, 0x00, 0x00, 0x08, 0x3e, 0x0f, 0xcc, 0x5c, 0x49, 0xff, 0xd5, 0xce,
-0x48, 0x00, 0x00, 0x18, 0x44, 0x00, 0x00, 0x02, 0x58, 0x24, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01,
-0x49, 0xf7, 0xee, 0x28, 0x4e, 0x02, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e,
-0x3e, 0x0f, 0xcc, 0x70, 0x49, 0xff, 0xd5, 0xba, 0x58, 0x04, 0x00, 0x00, 0x49, 0xf7, 0xea, 0x02,
-0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x05, 0x82, 0x49, 0xff, 0xd5, 0x9e,
-0x48, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0b, 0x4e, 0x13, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcc, 0x40, 0x44, 0x20, 0x05, 0x83, 0x49, 0xff, 0xd5, 0x90, 0x48, 0x00, 0x00, 0x00,
-0x02, 0x30, 0x80, 0x00, 0x44, 0x20, 0x00, 0xa4, 0x54, 0x01, 0x80, 0xfc, 0x4c, 0x01, 0x40, 0x06,
-0x58, 0x00, 0x80, 0x00, 0x49, 0xff, 0xfe, 0xc0, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x48,
-0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xe4,
-0x58, 0x70, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0x40,
-0x44, 0x20, 0x03, 0xa9, 0x49, 0xff, 0xd5, 0x6a, 0x48, 0x00, 0x00, 0x00, 0x3c, 0x13, 0xfd, 0x5e,
-0x44, 0x50, 0x01, 0x01, 0x4c, 0x12, 0xc0, 0x0e, 0x04, 0x60, 0x00, 0x02, 0x00, 0x53, 0x00, 0x04,
-0x54, 0x42, 0x80, 0x20, 0x4e, 0x42, 0x00, 0xce, 0x49, 0x00, 0x24, 0xc8, 0x48, 0x00, 0x00, 0xca,
-0x00, 0xa0, 0x00, 0x40, 0x44, 0x10, 0x00, 0x30, 0x43, 0xc5, 0x04, 0x24, 0x3f, 0xef, 0xe6, 0xec,
-0x40, 0x9e, 0x78, 0x00, 0x00, 0x84, 0x80, 0x2c, 0x54, 0x04, 0x00, 0x02, 0x4e, 0x02, 0x00, 0xba,
-0x44, 0x30, 0x00, 0x00, 0x04, 0x23, 0x80, 0x0c, 0x10, 0x3f, 0x80, 0x17, 0x50, 0x81, 0x00, 0x0c,
-0x44, 0x90, 0x00, 0x00, 0x02, 0x23, 0x80, 0x09, 0x50, 0x6f, 0x80, 0x17, 0x3f, 0xce, 0xee, 0xd8,
-0x48, 0x00, 0x00, 0x40, 0x00, 0x44, 0x00, 0x00, 0x44, 0x50, 0x00, 0xdd, 0x4c, 0x42, 0xc0, 0x30,
-0x14, 0x2f, 0x80, 0x01, 0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01,
-0x04, 0x2f, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x24, 0x00, 0x0f, 0x80, 0x17, 0x44, 0x50, 0x00, 0x09,
-0x4c, 0x02, 0xc0, 0x1e, 0x50, 0x14, 0x00, 0x06, 0x00, 0x40, 0x80, 0x00, 0x44, 0x50, 0x00, 0x0c,
-0x4c, 0x42, 0xc0, 0x16, 0x40, 0x52, 0x88, 0x08, 0x42, 0x65, 0x14, 0x24, 0x3e, 0x2f, 0xe6, 0xec,
-0x40, 0x63, 0x08, 0x00, 0x58, 0x03, 0x00, 0x00, 0x44, 0x20, 0x00, 0x12, 0x49, 0xf7, 0xe3, 0x9a,
-0x20, 0x13, 0x00, 0x2d, 0x4e, 0x14, 0x00, 0x26, 0x48, 0x00, 0x00, 0x12, 0x01, 0xe4, 0x00, 0x01,
-0x50, 0x0f, 0x00, 0x02, 0x40, 0x94, 0x80, 0x00, 0x40, 0x84, 0x00, 0x00, 0x40, 0x94, 0x80, 0x13,
-0x40, 0xf4, 0x88, 0x06, 0x4e, 0xf3, 0xff, 0xc0, 0x48, 0x00, 0x00, 0x64, 0x50, 0x03, 0x00, 0x14,
-0x49, 0x00, 0x21, 0x58, 0x00, 0x33, 0x00, 0x2d, 0x54, 0x41, 0x80, 0x01, 0x4e, 0x42, 0x00, 0x0a,
-0x44, 0x10, 0x00, 0x01, 0x50, 0x03, 0x80, 0x40, 0x58, 0x20, 0x80, 0x00, 0x49, 0xff, 0xfc, 0x1e,
-0x00, 0x03, 0x00, 0x05, 0x10, 0x03, 0x00, 0x2e, 0x4e, 0x03, 0x00, 0x04, 0x48, 0x00, 0x00, 0x3a,
-0x00, 0x03, 0x80, 0x40, 0x50, 0x7f, 0x80, 0x0c, 0x58, 0x13, 0x80, 0x00, 0x49, 0xff, 0xec, 0x80,
-0x50, 0x03, 0x00, 0x0e, 0x04, 0x23, 0x80, 0x00, 0x3a, 0x10, 0x04, 0x00, 0x40, 0x10, 0x88, 0x01,
-0x4e, 0x14, 0x00, 0x2c, 0x50, 0x53, 0x00, 0x0a, 0x3a, 0x32, 0x8c, 0x00, 0x3a, 0x10, 0x04, 0x00,
-0x40, 0x41, 0x84, 0x00, 0x3a, 0x40, 0x10, 0x20, 0x01, 0xe3, 0x00, 0x05, 0x44, 0x50, 0x00, 0xff,
-0x04, 0x13, 0x80, 0x00, 0x50, 0x4f, 0x7f, 0xff, 0x4d, 0xe2, 0x80, 0x04, 0x10, 0x43, 0x00, 0x05,
-0x3a, 0x50, 0x14, 0x00, 0x40, 0x12, 0x84, 0x01, 0x4e, 0x14, 0x00, 0x06, 0x01, 0xe3, 0x00, 0x05,
-0x4f, 0xe3, 0xff, 0xe6, 0x00, 0x03, 0x00, 0x05, 0x10, 0x03, 0x00, 0x2e, 0x4e, 0x03, 0x00, 0x06,
-0x10, 0x03, 0x00, 0x2d, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x00, 0x03, 0xe8, 0x40, 0x10, 0x80, 0x17,
-0x44, 0x3f, 0xff, 0x80, 0x10, 0x33, 0x00, 0x2d, 0x50, 0x03, 0x00, 0x14, 0x49, 0x00, 0x21, 0xea,
-0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x1c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x54, 0x00, 0x00, 0xff, 0x14, 0x0f, 0x80, 0x01,
-0x44, 0x30, 0x00, 0x00, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01, 0x50, 0x2f, 0x80, 0x0e,
-0x44, 0x90, 0x00, 0x00, 0x12, 0x31, 0x00, 0x00, 0x59, 0xc4, 0x80, 0x00, 0x49, 0xf7, 0xee, 0x34,
-0x50, 0x8f, 0x80, 0x08, 0x48, 0x00, 0x01, 0x0a, 0x49, 0xff, 0xe7, 0x80, 0x04, 0x1f, 0x80, 0x01,
-0x44, 0x00, 0x00, 0x01, 0x44, 0x20, 0x00, 0x00, 0x49, 0xf7, 0xec, 0x34, 0x44, 0x50, 0x0f, 0xff,
-0x4c, 0x02, 0x81, 0x02, 0x49, 0xff, 0xf5, 0xc8, 0x50, 0x60, 0x00, 0x10, 0x4e, 0x03, 0x00, 0x0e,
-0x3c, 0x0d, 0xf8, 0x84, 0x04, 0x20, 0x00, 0x00, 0x4e, 0x23, 0x00, 0xf6, 0x44, 0x10, 0x00, 0x0a,
-0x49, 0x00, 0x21, 0xa8, 0x48, 0x00, 0x00, 0xf0, 0x04, 0x70, 0x00, 0x02, 0x44, 0x10, 0x00, 0x10,
-0x12, 0x10, 0x00, 0x0b, 0x14, 0x70, 0x00, 0x06, 0x02, 0x03, 0x80, 0x01, 0x41, 0xe0, 0x34, 0x09,
-0x50, 0x3f, 0x7f, 0xfe, 0x54, 0x51, 0x80, 0xff, 0x11, 0xe3, 0x00, 0x04, 0x5c, 0xf2, 0x80, 0x02,
-0x4e, 0xf2, 0x00, 0x44, 0x03, 0xe3, 0x80, 0x01, 0x54, 0x5f, 0x1e, 0x00, 0x40, 0x42, 0xa4, 0x09,
-0x54, 0x22, 0x00, 0x08, 0x10, 0x43, 0x00, 0x05, 0x4e, 0x23, 0x00, 0x06, 0x58, 0x20, 0x80, 0x00,
-0x48, 0x00, 0x00, 0x08, 0x50, 0x93, 0x80, 0x10, 0x14, 0x93, 0x00, 0x06, 0x40, 0x20, 0x84, 0x08,
-0x00, 0x03, 0x00, 0x05, 0x54, 0x30, 0x00, 0x01, 0x4e, 0x32, 0x00, 0x0a, 0x40, 0x43, 0x88, 0x00,
-0x50, 0x11, 0x00, 0x10, 0x14, 0x43, 0x00, 0x03, 0x40, 0x20, 0x80, 0x13, 0x01, 0xe3, 0x00, 0x05,
-0x54, 0x5f, 0x00, 0x02, 0x4e, 0x52, 0x00, 0x0a, 0x40, 0x33, 0x88, 0x00, 0x14, 0x33, 0x00, 0x04,
-0x50, 0x21, 0x00, 0x08, 0x40, 0x21, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x54, 0x00, 0x80, 0x04,
-0x4e, 0x02, 0x00, 0x0a, 0x40, 0x53, 0x88, 0x00, 0x50, 0x41, 0x00, 0x18, 0x14, 0x53, 0x00, 0x05,
-0x40, 0x22, 0x00, 0x13, 0x12, 0x23, 0x00, 0x03, 0x00, 0x23, 0x00, 0x04, 0x44, 0x50, 0x00, 0x02,
-0x4c, 0x22, 0xc0, 0x56, 0x00, 0x33, 0x80, 0x06, 0x02, 0x13, 0x00, 0x03, 0x55, 0xe1, 0x80, 0x40,
-0x40, 0x4f, 0x78, 0x1a, 0x40, 0x41, 0x78, 0x1b, 0x40, 0x53, 0x84, 0x00, 0x40, 0x02, 0x90, 0x00,
-0x42, 0x50, 0x00, 0x09, 0x14, 0x53, 0x00, 0x07, 0x00, 0x33, 0x80, 0x06, 0x54, 0x41, 0x80, 0x3f,
-0x41, 0xe2, 0x90, 0x00, 0x40, 0x3f, 0x08, 0x09, 0x40, 0x31, 0x88, 0x08, 0x10, 0x43, 0x00, 0x01,
-0x14, 0x33, 0x00, 0x08, 0x44, 0x40, 0x00, 0x00, 0x02, 0x23, 0x80, 0x00, 0x40, 0x03, 0x88, 0x00,
-0x41, 0xe0, 0x0c, 0x01, 0x13, 0xe3, 0x00, 0x01, 0x44, 0x30, 0x00, 0x08, 0x00, 0x13, 0x80, 0x07,
-0x10, 0x43, 0x00, 0x2f, 0x40, 0x20, 0x88, 0x09, 0x10, 0x23, 0x00, 0x30, 0x02, 0x02, 0x80, 0x00,
-0x54, 0x20, 0x00, 0x0c, 0x12, 0x03, 0x00, 0x15, 0x4c, 0x21, 0xc0, 0x08, 0x50, 0x03, 0x7f, 0xf0,
-0x49, 0xff, 0xfb, 0xea, 0x48, 0x00, 0x00, 0x48, 0x4e, 0x23, 0x00, 0x08, 0x50, 0x03, 0x7f, 0xf0,
-0x49, 0xff, 0xfc, 0x8a, 0x48, 0x00, 0x00, 0x40, 0x44, 0x00, 0x00, 0x04, 0x4c, 0x20, 0x40, 0x36,
-0x50, 0x03, 0x7f, 0xf0, 0x49, 0xff, 0xfd, 0xf0, 0x48, 0x00, 0x00, 0x36, 0x44, 0x50, 0x00, 0x03,
-0x4c, 0x22, 0xc0, 0x2c, 0x05, 0xe3, 0x00, 0x06, 0x44, 0x20, 0x00, 0x06, 0x50, 0x1f, 0x00, 0x02,
-0x58, 0x04, 0x00, 0x00, 0x49, 0xf7, 0xe2, 0x1e, 0x00, 0x03, 0x80, 0x08, 0x49, 0xff, 0xf4, 0xe0,
-0x14, 0x03, 0x00, 0x09, 0x50, 0x03, 0x7f, 0xf0, 0x02, 0x14, 0x80, 0x00, 0x12, 0x13, 0x00, 0x15,
-0x02, 0x44, 0x80, 0x04, 0x12, 0x43, 0x00, 0x14, 0x02, 0x24, 0x80, 0x05, 0x12, 0x23, 0x00, 0x16,
-0x49, 0x00, 0x22, 0x00, 0x50, 0x03, 0x7f, 0xf0, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf5, 0xe0,
-0x49, 0xff, 0xe6, 0x84, 0x48, 0x00, 0x00, 0x08, 0x50, 0x03, 0x7f, 0xf0, 0x44, 0x10, 0x00, 0x01,
-0x49, 0xff, 0xf5, 0xd6, 0x51, 0xce, 0x00, 0x01, 0x02, 0x34, 0x00, 0x03, 0x40, 0xfe, 0x0c, 0x06,
-0x4e, 0xf3, 0xfe, 0xf4, 0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x03,
-0x49, 0xff, 0xdb, 0xb8, 0x46, 0x00, 0x02, 0x10, 0x58, 0x00, 0x00, 0x04, 0x49, 0xff, 0xdb, 0xd8,
+0x51, 0xff, 0xff, 0xf4, 0x54, 0x00, 0x00, 0xff, 0x14, 0x0f, 0x80, 0x01, 0x45, 0xc0, 0x34, 0x20,
+0x48, 0x00, 0x00, 0x12, 0x2e, 0x17, 0xdf, 0xac, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x0a,
+0x49, 0x00, 0x04, 0xd8, 0x58, 0x03, 0x00, 0x00, 0x49, 0x00, 0x05, 0xc2, 0x48, 0x00, 0x00, 0x04,
+0x49, 0x00, 0x03, 0x06, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01,
+0x4b, 0xe0, 0x70, 0x01, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00, 0x4c, 0x02, 0xff, 0xe4,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x58, 0x80, 0x00, 0x00, 0x54, 0x70, 0x00, 0xff, 0x3f, 0xce, 0xda, 0x44,
+0x48, 0x00, 0x00, 0x26, 0x2e, 0x20, 0x02, 0x88, 0x4e, 0x22, 0x00, 0x36, 0x49, 0x00, 0x02, 0x88,
+0x44, 0x10, 0x00, 0x01, 0x4e, 0x03, 0x00, 0x0e, 0x58, 0x00, 0x80, 0x00, 0x58, 0x23, 0x00, 0x00,
+0x58, 0x13, 0x80, 0x00, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xf9, 0x34, 0x48, 0x00, 0x00, 0x24,
+0x04, 0x50, 0x00, 0x02, 0x44, 0x30, 0x00, 0xa0, 0x00, 0x42, 0x80, 0x05, 0x4c, 0x41, 0xc0, 0x06,
+0x49, 0x00, 0x11, 0x64, 0x48, 0x00, 0x00, 0x04, 0x4b, 0xe0, 0x70, 0x01, 0x2f, 0xe0, 0x02, 0x88,
+0x44, 0x20, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01, 0x4f, 0xe2, 0x00, 0x0c,
+0x49, 0xf7, 0xf8, 0x88, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00,
+0x4c, 0x02, 0xff, 0xca, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xdc, 0x46, 0xa6, 0x03, 0x10, 0x58, 0x95, 0x00, 0x00,
+0x45, 0xc0, 0x00, 0x00, 0x50, 0x6f, 0x80, 0x10, 0x58, 0x8f, 0x80, 0x00, 0x48, 0x00, 0x00, 0xe0,
+0x44, 0x00, 0x00, 0x00, 0x14, 0x04, 0x00, 0x02, 0x14, 0x03, 0x00, 0x00, 0x14, 0x04, 0x00, 0x00,
+0x14, 0x03, 0x00, 0x01, 0x14, 0x04, 0x00, 0x01, 0x14, 0x03, 0x00, 0x02, 0x44, 0x00, 0x00, 0x00,
+0x38, 0x43, 0x00, 0x02, 0x38, 0x24, 0x00, 0x02, 0x44, 0x10, 0x00, 0x10, 0x40, 0x31, 0x10, 0x02,
+0x38, 0x33, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x04, 0x4c, 0x00, 0xff, 0xf4, 0x04, 0x53, 0x00, 0x01,
+0x4e, 0x53, 0x00, 0x0e, 0x05, 0xe3, 0x00, 0x00, 0x4f, 0xe3, 0x00, 0x0a, 0x04, 0x03, 0x00, 0x02,
+0x4e, 0x03, 0x00, 0x06, 0x04, 0x13, 0x00, 0x03, 0x4e, 0x12, 0x00, 0xe8, 0x04, 0x13, 0x00, 0x03,
+0x54, 0x30, 0x80, 0x01, 0x4e, 0x32, 0x00, 0x10, 0x46, 0x5a, 0x00, 0x00, 0x45, 0xe0, 0x00, 0x01,
+0x15, 0xe2, 0x80, 0x02, 0x42, 0x40, 0x80, 0x09, 0x44, 0x00, 0x00, 0x00, 0x14, 0x43, 0x00, 0x03,
+0x49, 0xff, 0xff, 0x66, 0x04, 0x13, 0x00, 0x03, 0x54, 0x00, 0x80, 0x02, 0x4e, 0x02, 0x00, 0x10,
+0x46, 0x4a, 0x00, 0x00, 0x44, 0x20, 0x00, 0x02, 0x14, 0x22, 0x00, 0x02, 0x42, 0x10, 0x84, 0x09,
+0x44, 0x00, 0x00, 0x01, 0x14, 0x13, 0x00, 0x03, 0x49, 0xff, 0xff, 0x22, 0x04, 0x13, 0x00, 0x03,
+0x54, 0x50, 0x80, 0x04, 0x4e, 0x52, 0x00, 0x10, 0x46, 0x3a, 0x00, 0x00, 0x44, 0x40, 0x00, 0x04,
+0x14, 0x41, 0x80, 0x02, 0x43, 0xe0, 0x88, 0x09, 0x44, 0x00, 0x00, 0x02, 0x15, 0xe3, 0x00, 0x03,
+0x49, 0xff, 0xfe, 0xc8, 0x04, 0x13, 0x00, 0x03, 0x54, 0x20, 0x80, 0x08, 0x4e, 0x22, 0x00, 0x10,
+0x47, 0xea, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08, 0x14, 0x0f, 0x00, 0x02, 0x42, 0x10, 0x8c, 0x09,
+0x44, 0x00, 0x00, 0x03, 0x14, 0x13, 0x00, 0x03, 0x49, 0x00, 0x0b, 0xd6, 0x04, 0x33, 0x00, 0x01,
+0x4e, 0x33, 0x00, 0x0a, 0x04, 0x43, 0x00, 0x00, 0x4e, 0x43, 0x00, 0x06, 0x04, 0x23, 0x00, 0x02,
+0x4e, 0x22, 0x00, 0x34, 0x3e, 0x7f, 0xdf, 0x6c, 0x04, 0x03, 0x80, 0x00, 0x04, 0x13, 0x80, 0x01,
+0x39, 0xe3, 0x02, 0x02, 0x40, 0x50, 0xf8, 0x02, 0x4e, 0x52, 0x00, 0x20, 0x3e, 0x3f, 0xc9, 0x90,
+0x38, 0x01, 0x83, 0x02, 0x14, 0x10, 0x00, 0x00, 0x04, 0x23, 0x80, 0x02, 0x4e, 0x22, 0x00, 0x0a,
+0x04, 0x43, 0x80, 0x00, 0x38, 0x13, 0x12, 0x02, 0x54, 0x02, 0x00, 0xff, 0x4b, 0xe0, 0x08, 0x01,
+0x04, 0x53, 0x80, 0x00, 0x04, 0x03, 0x80, 0x01, 0x38, 0x23, 0x16, 0x02, 0x41, 0xe0, 0x00, 0x05,
+0x40, 0x1f, 0x08, 0x02, 0x38, 0x13, 0x16, 0x0a, 0x3e, 0x5f, 0xdf, 0x9c, 0x4c, 0x72, 0x80, 0x06,
+0x50, 0x73, 0x80, 0x0c, 0x48, 0xff, 0xff, 0xd2, 0x04, 0x43, 0x00, 0x01, 0x4e, 0x43, 0x00, 0x0e,
+0x04, 0x53, 0x00, 0x00, 0x4e, 0x53, 0x00, 0x0a, 0x04, 0x13, 0x00, 0x02, 0x4e, 0x13, 0x00, 0x06,
+0x05, 0xe3, 0x00, 0x03, 0x4f, 0xe2, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0x74,
+0x44, 0x20, 0x03, 0x03, 0x49, 0xff, 0xdf, 0xc2, 0x48, 0x00, 0x00, 0x00, 0x51, 0xce, 0x00, 0x01,
+0x55, 0xce, 0x00, 0xff, 0x44, 0x50, 0x00, 0x03, 0x4d, 0xc2, 0x80, 0x38, 0x04, 0x55, 0x00, 0x00,
+0x46, 0x46, 0x03, 0x10, 0x14, 0x53, 0x00, 0x00, 0x04, 0x04, 0x80, 0x02, 0x58, 0x32, 0x00, 0x00,
+0x14, 0x04, 0x00, 0x00, 0x04, 0x22, 0x00, 0x01, 0x58, 0x11, 0x80, 0x00, 0x14, 0x23, 0x00, 0x01,
+0x05, 0xe1, 0x80, 0x03, 0x58, 0x00, 0x80, 0x00, 0x15, 0xe4, 0x00, 0x01, 0x04, 0x50, 0x80, 0x09,
+0x46, 0x3a, 0x00, 0x00, 0x14, 0x53, 0x00, 0x02, 0x04, 0x40, 0x00, 0x0a, 0x59, 0xe1, 0x80, 0x00,
+0x14, 0x44, 0x00, 0x02, 0x04, 0x21, 0x80, 0x02, 0x46, 0x56, 0x04, 0x00, 0x14, 0x23, 0x00, 0x03,
+0x04, 0x1f, 0x00, 0x01, 0x14, 0x14, 0x00, 0x03, 0x04, 0x32, 0x80, 0x00, 0x42, 0x01, 0xdc, 0x0b,
+0x4e, 0x03, 0xfe, 0xf0, 0x48, 0xff, 0xfe, 0xfc, 0x51, 0xff, 0x80, 0x24, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xa4, 0x44, 0x40, 0x00, 0x80,
+0x54, 0x30, 0x00, 0xff, 0x44, 0x50, 0x00, 0x01, 0x40, 0x62, 0x8c, 0x1b, 0x40, 0x62, 0x0c, 0x1a,
+0x50, 0x0f, 0x80, 0x1c, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x23, 0x45, 0xc0, 0x00, 0x00,
+0x14, 0x6f, 0x80, 0x05, 0x49, 0xf7, 0xee, 0x0a, 0x15, 0xcf, 0x80, 0x04, 0x50, 0x6f, 0x80, 0x40,
+0x50, 0xaf, 0x80, 0x48, 0x50, 0x9f, 0x80, 0x54, 0x50, 0x8f, 0x80, 0x42, 0x50, 0x7f, 0x80, 0x49,
+0x04, 0x3f, 0x80, 0x04, 0x51, 0xcf, 0x80, 0x4c, 0x51, 0xef, 0x80, 0x50, 0x54, 0x01, 0x80, 0xff,
+0x58, 0x13, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00, 0x15, 0xcf, 0x80, 0x03, 0x15, 0xef, 0x80, 0x00,
+0x51, 0xcf, 0x80, 0x44, 0x51, 0xef, 0x80, 0x4a, 0x58, 0x34, 0x80, 0x00, 0x58, 0x44, 0x00, 0x00,
+0x58, 0x53, 0x80, 0x00, 0x15, 0xcf, 0x80, 0x01, 0x15, 0xef, 0x80, 0x02, 0x49, 0x00, 0x4a, 0x22,
+0x05, 0xcf, 0x80, 0x04, 0x44, 0x00, 0x00, 0x00, 0x50, 0x2e, 0x00, 0x01, 0x14, 0x2f, 0x80, 0x04,
+0x05, 0xcf, 0x80, 0x05, 0x04, 0x1f, 0x80, 0x04, 0x12, 0x03, 0x00, 0x03, 0x40, 0xf0, 0xf0, 0x06,
+0x4e, 0xf3, 0xff, 0xd0, 0x51, 0xff, 0x80, 0x5c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x4c, 0x12, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x0f, 0xf2, 0x4c, 0x44, 0x20, 0x00, 0x00,
+0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01, 0x14, 0x20, 0x00, 0x02, 0x50, 0x10, 0x00, 0x10,
+0x58, 0x40, 0x00, 0x00, 0x14, 0x20, 0x80, 0x02, 0x04, 0x52, 0x00, 0x01, 0x14, 0x10, 0x00, 0x01,
+0x14, 0x50, 0x80, 0x01, 0x14, 0x00, 0x80, 0x00, 0x14, 0x12, 0x80, 0x00, 0x50, 0x10, 0x80, 0x68,
+0x04, 0x30, 0x00, 0x02, 0x50, 0x51, 0x80, 0x01, 0x50, 0x30, 0x01, 0xb0, 0x14, 0x50, 0x00, 0x02,
+0x4c, 0x11, 0xff, 0xea, 0x3e, 0x0f, 0xef, 0xac, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01,
+0x14, 0x20, 0x00, 0x02, 0x50, 0x10, 0x00, 0x0c, 0x58, 0x40, 0x00, 0x00, 0x14, 0x20, 0x80, 0x02,
+0x04, 0x52, 0x00, 0x01, 0x14, 0x10, 0x00, 0x01, 0x14, 0x50, 0x80, 0x01, 0x14, 0x00, 0x80, 0x00,
+0x14, 0x12, 0x80, 0x00, 0x50, 0x10, 0x80, 0x44, 0x04, 0x30, 0x00, 0x02, 0x50, 0x51, 0x80, 0x01,
+0x50, 0x30, 0x01, 0x1c, 0x14, 0x50, 0x00, 0x02, 0x4c, 0x11, 0xff, 0xea, 0x3e, 0x0f, 0xe9, 0xd4,
+0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x01, 0x14, 0x20, 0x00, 0x02, 0x50, 0x10, 0x00, 0x10,
+0x58, 0x40, 0x00, 0x00, 0x14, 0x20, 0x80, 0x02, 0x04, 0x52, 0x00, 0x01, 0x14, 0x10, 0x00, 0x01,
+0x14, 0x50, 0x80, 0x01, 0x14, 0x00, 0x80, 0x00, 0x14, 0x12, 0x80, 0x00, 0x50, 0x10, 0x80, 0x68,
+0x04, 0x30, 0x00, 0x02, 0x50, 0x51, 0x80, 0x01, 0x50, 0x30, 0x01, 0xb0, 0x14, 0x50, 0x00, 0x02,
+0x4c, 0x11, 0xff, 0xea, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff, 0x40, 0x10, 0x00, 0x10,
+0x4e, 0x14, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x44, 0x30, 0x00, 0x03,
+0x42, 0x00, 0x0c, 0x24, 0x3e, 0x2f, 0xf0, 0xc8, 0x40, 0x00, 0x08, 0x00, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x1f, 0xef, 0xac, 0x04, 0x60, 0x80, 0x00,
+0x40, 0x70, 0x00, 0x13, 0x4c, 0x60, 0xc0, 0x06, 0x44, 0x60, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20,
+0x04, 0x53, 0x00, 0x01, 0x04, 0x33, 0x00, 0x00, 0x44, 0x40, 0x00, 0x00, 0x14, 0x51, 0x80, 0x01,
+0x14, 0x32, 0x80, 0x00, 0x14, 0x43, 0x00, 0x01, 0x14, 0x43, 0x00, 0x00, 0x04, 0x20, 0x80, 0x02,
+0x50, 0x01, 0x7f, 0xff, 0x14, 0x00, 0x80, 0x02, 0x4e, 0x62, 0x00, 0x0a, 0x58, 0x03, 0x80, 0x00,
+0x49, 0xf7, 0xf2, 0x96, 0x14, 0x03, 0x00, 0x02, 0x12, 0x73, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x3e, 0x3f, 0xf2, 0x4c, 0x56, 0x10, 0x80, 0x01, 0x3e, 0x4f, 0xe9, 0xd4,
+0x40, 0x22, 0x04, 0x1a, 0x40, 0x21, 0x84, 0x1b, 0x04, 0x61, 0x00, 0x00, 0x40, 0x70, 0x00, 0x13,
+0x4c, 0x61, 0x40, 0x06, 0x44, 0x60, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20, 0x04, 0x13, 0x00, 0x01,
+0x04, 0x33, 0x00, 0x00, 0x45, 0xe0, 0x00, 0x00, 0x14, 0x11, 0x80, 0x01, 0x14, 0x30, 0x80, 0x00,
+0x15, 0xe3, 0x00, 0x01, 0x15, 0xe3, 0x00, 0x00, 0x04, 0x51, 0x00, 0x02, 0x50, 0x02, 0xff, 0xff,
+0x14, 0x01, 0x00, 0x02, 0x4e, 0x62, 0x00, 0x0a, 0x58, 0x03, 0x80, 0x00, 0x49, 0xf7, 0xf2, 0x58,
+0x14, 0x03, 0x00, 0x02, 0x12, 0x73, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x28, 0x3e, 0x0f, 0xeb, 0x84, 0x49, 0xf7, 0xec, 0xb6,
+0x44, 0x2f, 0xff, 0xff, 0x3e, 0x1f, 0xeb, 0xac, 0x3c, 0x2f, 0xfa, 0xe2, 0x3c, 0x1f, 0xfa, 0xe1,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0xc4,
-0x44, 0x20, 0x01, 0x93, 0x49, 0xff, 0xd3, 0x32, 0x48, 0x00, 0x00, 0x00, 0x4e, 0x13, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcc, 0xc4, 0x44, 0x20, 0x01, 0x94, 0x49, 0xff, 0xd3, 0x26,
-0x48, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x5c, 0xf1, 0x00, 0x07, 0x4e, 0xf3, 0x00, 0x1c,
-0x00, 0x40, 0x00, 0x02, 0x44, 0x50, 0x00, 0x50, 0x4c, 0x42, 0xc0, 0x16, 0x00, 0x50, 0x00, 0x03,
-0x45, 0xe0, 0x00, 0x6f, 0x4c, 0x5f, 0x40, 0x10, 0x00, 0x20, 0x00, 0x04, 0x44, 0x50, 0x00, 0x9a,
-0x4c, 0x22, 0xc0, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3e, 0x5f, 0xe2, 0x14, 0x04, 0x12, 0x80, 0x00, 0x44, 0x20, 0x00, 0x00,
-0x14, 0x20, 0x80, 0x00, 0x58, 0x32, 0x80, 0x00, 0x04, 0x42, 0x80, 0x00, 0x58, 0x11, 0x00, 0x00,
-0x10, 0x22, 0x00, 0x04, 0x58, 0x41, 0x00, 0x00, 0x04, 0x02, 0x80, 0x00, 0x10, 0x20, 0x00, 0x05,
-0x04, 0x21, 0x80, 0x00, 0x40, 0x00, 0x8c, 0x08, 0x40, 0x51, 0x00, 0x00, 0x10, 0x12, 0x80, 0x06,
-0x50, 0x10, 0x80, 0x01, 0x04, 0x21, 0x80, 0x00, 0x40, 0x51, 0x00, 0x00, 0x44, 0x00, 0x00, 0x08,
-0x10, 0x42, 0x80, 0x07, 0x4c, 0x10, 0x7f, 0xee, 0x4a, 0x00, 0x78, 0x20, 0x2e, 0x00, 0x02, 0x85,
-0x4e, 0x02, 0x00, 0x4e, 0x46, 0x36, 0x04, 0x00, 0x04, 0x41, 0x80, 0x02, 0x58, 0x11, 0x80, 0x00,
-0x42, 0x22, 0x5c, 0x08, 0x14, 0x21, 0x80, 0x02, 0x04, 0x50, 0x80, 0x00, 0x46, 0x00, 0x08, 0x00,
-0x40, 0x32, 0x80, 0x02, 0x4e, 0x33, 0xff, 0xfa, 0x46, 0x56, 0x04, 0x00, 0x58, 0x52, 0x80, 0x08,
-0x04, 0x02, 0x80, 0x00, 0x46, 0x18, 0x00, 0x21, 0x58, 0x20, 0x00, 0x04, 0x14, 0x22, 0x80, 0x00,
-0x58, 0x10, 0x81, 0x00, 0x04, 0x42, 0x80, 0x00, 0x46, 0x28, 0x00, 0x20, 0x58, 0x02, 0x00, 0x08,
-0x14, 0x02, 0x80, 0x00, 0x04, 0x42, 0x80, 0x00, 0x58, 0x02, 0x00, 0x10, 0x14, 0x02, 0x80, 0x00,
-0x04, 0x42, 0x80, 0x00, 0x58, 0x02, 0x00, 0x03, 0x14, 0x02, 0x80, 0x00, 0x44, 0x4f, 0xff, 0x9f,
-0x04, 0x00, 0x80, 0x00, 0x40, 0x50, 0x10, 0x02, 0x14, 0x50, 0x80, 0x00, 0x04, 0x00, 0x80, 0x00,
-0x42, 0x50, 0x18, 0x09, 0x14, 0x50, 0x80, 0x00, 0x04, 0x51, 0x00, 0x00, 0x40, 0x42, 0x88, 0x09,
-0x40, 0x42, 0x08, 0x08, 0x14, 0x41, 0x00, 0x00, 0x3e, 0x30, 0x02, 0x85, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0xbc, 0x2e, 0x27, 0xfa, 0xbd, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x22, 0x00, 0x2c,
-0x2e, 0x07, 0xfa, 0xbc, 0x4e, 0x02, 0x00, 0x28, 0x2e, 0x37, 0xe5, 0xa5, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x32, 0x80, 0x22, 0x2e, 0x57, 0xe4, 0x7c, 0x45, 0xe0, 0x00, 0x03, 0x4c, 0x5f, 0x00, 0x1c,
-0x44, 0x50, 0x00, 0x75, 0x4c, 0x62, 0x80, 0x04, 0x49, 0xff, 0xe5, 0x96, 0x2e, 0x37, 0xe4, 0x78,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x32, 0xc0, 0x10, 0x44, 0x50, 0x00, 0x75, 0x4c, 0x62, 0x80, 0x0c,
-0x2f, 0xe7, 0xfa, 0xbe, 0x4f, 0xe3, 0x00, 0x08, 0x49, 0xf7, 0xdd, 0x42, 0x4e, 0x03, 0x00, 0x04,
-0x49, 0xff, 0xd8, 0xa0, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x2e, 0x27, 0xfa, 0xbd, 0x4e, 0x22, 0x00, 0x14, 0x2e, 0x17, 0xfa, 0xbc,
-0x4e, 0x12, 0x00, 0x10, 0x44, 0x50, 0x00, 0x75, 0x4c, 0x02, 0x80, 0x0c, 0x49, 0xff, 0xed, 0x00,
-0x2e, 0x07, 0xe4, 0x78, 0x44, 0x40, 0x00, 0x01, 0x4c, 0x02, 0x40, 0x04, 0x49, 0xff, 0xd8, 0x3c,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x04, 0x10, 0x00, 0x02, 0x00, 0x60, 0x80, 0x06, 0x50, 0x80, 0x80, 0x20, 0x4e, 0x62, 0x00, 0x0c,
-0x04, 0x24, 0x00, 0x01, 0x04, 0x14, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x14, 0x20, 0x80, 0x00,
-0x48, 0x00, 0x00, 0x42, 0x44, 0x00, 0x00, 0x14, 0x00, 0xa0, 0x80, 0x07, 0x49, 0xf7, 0xe6, 0x6e,
-0x44, 0x50, 0x0f, 0xff, 0x58, 0x90, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03,
-0x48, 0x00, 0x00, 0x32, 0x49, 0xf7, 0xe6, 0x34, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14,
-0x58, 0x70, 0x00, 0x00, 0x49, 0xf7, 0xe0, 0xa2, 0x44, 0x30, 0x00, 0x14, 0x44, 0x2f, 0xe0, 0x00,
-0x44, 0x10, 0x00, 0x06, 0x12, 0x33, 0x80, 0x00, 0x12, 0x23, 0x80, 0x01, 0x10, 0x13, 0x80, 0x04,
-0x10, 0xa3, 0x80, 0x05, 0x50, 0x73, 0x80, 0x0c, 0x04, 0x54, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00,
-0x14, 0x53, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01, 0x04, 0x04, 0x00, 0x00, 0x58, 0x33, 0x00, 0x00,
-0x04, 0x40, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x14, 0x43, 0x80, 0x01, 0x49, 0xf7, 0xea, 0x3a,
-0x58, 0x03, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x2e, 0x50, 0x02, 0x85, 0x44, 0x90, 0x00, 0x01, 0x4c, 0x54, 0x80, 0x72, 0x46, 0x28, 0x00, 0x20,
-0x04, 0x71, 0x00, 0x00, 0x47, 0xe8, 0x00, 0x21, 0x58, 0x83, 0x80, 0x03, 0x14, 0x81, 0x00, 0x00,
-0x59, 0xef, 0x01, 0x00, 0x04, 0x0f, 0x00, 0x00, 0x46, 0x76, 0x04, 0x00, 0x58, 0x60, 0x00, 0x40,
-0x14, 0x6f, 0x00, 0x00, 0x44, 0x80, 0x17, 0xc4, 0x04, 0x1f, 0x00, 0x00, 0x58, 0x50, 0x80, 0x60,
-0x14, 0x5f, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x04, 0x43, 0x80, 0x02,
-0x46, 0x66, 0x04, 0x00, 0x58, 0x32, 0x00, 0x10, 0x14, 0x33, 0x80, 0x02, 0x58, 0x63, 0x00, 0x04,
-0x04, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0a, 0x40, 0x11, 0x24, 0x04, 0x14, 0x13, 0x00, 0x00,
-0x46, 0x78, 0x00, 0x20, 0x04, 0x53, 0x00, 0x00, 0x58, 0x73, 0x80, 0xfc, 0x58, 0x42, 0x80, 0x02,
-0x14, 0x43, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x04, 0x33, 0x00, 0x00, 0x44, 0x00, 0x00, 0x04,
-0x58, 0x21, 0x80, 0x10, 0x14, 0x23, 0x00, 0x00, 0x04, 0x13, 0x00, 0x00, 0x40, 0x50, 0x80, 0x04,
-0x14, 0x53, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x04, 0x43, 0x00, 0x00, 0x58, 0x32, 0x00, 0x08,
-0x14, 0x33, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00, 0x04, 0x23, 0x80, 0x00, 0x58, 0x11, 0x00, 0x0f,
-0x14, 0x13, 0x80, 0x00, 0x04, 0x43, 0x80, 0x00, 0x40, 0x32, 0x10, 0x09, 0x40, 0x31, 0x90, 0x08,
-0x14, 0x33, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x04, 0x23, 0x80, 0x00, 0x58, 0x11, 0x00, 0x0f,
-0x14, 0x13, 0x80, 0x00, 0x49, 0xff, 0xdf, 0x9c, 0x3e, 0x90, 0x02, 0x85, 0x3a, 0x6f, 0xa8, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0xaf, 0xe4, 0x60,
-0x3e, 0x6f, 0xe1, 0xbc, 0x3e, 0x7f, 0xe5, 0x84, 0x3f, 0xce, 0xe5, 0x8c, 0x04, 0x25, 0x00, 0x00,
-0x44, 0x50, 0x00, 0x02, 0x3c, 0x2f, 0xf9, 0x19, 0x14, 0x05, 0x00, 0x00, 0x4c, 0x02, 0x80, 0x08,
-0x44, 0x50, 0x00, 0x05, 0x4c, 0x02, 0xc0, 0x76, 0x48, 0x00, 0x00, 0x5c, 0x04, 0x03, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0xa4, 0x49, 0xf7, 0xdf, 0xd8, 0x00, 0x03, 0x80, 0x00,
-0x3e, 0x9f, 0xe6, 0xec, 0x49, 0xff, 0xf2, 0x08, 0x00, 0x03, 0x80, 0x00, 0x44, 0x80, 0x00, 0x00,
-0x49, 0xff, 0xf1, 0xa4, 0x49, 0xff, 0xff, 0x54, 0x04, 0x03, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01,
-0x10, 0x30, 0x00, 0x9c, 0x44, 0x00, 0x00, 0x00, 0x04, 0x53, 0x00, 0x00, 0x10, 0x32, 0x80, 0x9e,
-0x04, 0x43, 0x00, 0x00, 0x10, 0x32, 0x00, 0x9d, 0x04, 0x23, 0x00, 0x00, 0x10, 0x01, 0x00, 0x9f,
-0x04, 0x13, 0x00, 0x00, 0x10, 0x30, 0x80, 0xa0, 0x04, 0x53, 0x00, 0x00, 0x10, 0x02, 0x80, 0xa1,
-0x49, 0xff, 0xf2, 0xe6, 0x49, 0xff, 0xf1, 0xec, 0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x1f, 0x22,
-0x49, 0xff, 0xf7, 0xfe, 0x49, 0xff, 0xfd, 0xa6, 0x49, 0x00, 0x21, 0xf4, 0x49, 0xff, 0xd3, 0x96,
-0x49, 0xff, 0xfd, 0xfa, 0x49, 0x00, 0x0f, 0xc8, 0x58, 0x04, 0x80, 0x00, 0x4b, 0xe0, 0x70, 0x01,
-0x50, 0x14, 0x00, 0x01, 0x10, 0x84, 0x80, 0x2f, 0x44, 0x30, 0x00, 0x04, 0x54, 0x80, 0x80, 0xff,
-0x50, 0x94, 0x80, 0x30, 0x4c, 0x81, 0xff, 0xf2, 0x44, 0x00, 0x00, 0x05, 0x48, 0x00, 0x00, 0x1a,
-0x01, 0xe3, 0x80, 0x00, 0x4f, 0xe2, 0x00, 0x16, 0x3c, 0x5d, 0xf9, 0x62, 0x44, 0x20, 0x00, 0x00,
-0x50, 0x42, 0xff, 0xff, 0x10, 0x23, 0x80, 0x00, 0x5c, 0xf2, 0x00, 0x03, 0x4e, 0xf3, 0x00, 0x04,
-0x48, 0x00, 0x00, 0x06, 0x44, 0x30, 0x00, 0x00, 0x3c, 0x3f, 0xf9, 0x62, 0x44, 0x00, 0x00, 0x04,
-0x04, 0x55, 0x00, 0x00, 0x4c, 0x02, 0xff, 0x7c, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02,
-0x58, 0x60, 0x00, 0x00, 0x50, 0x13, 0x80, 0x20, 0x00, 0x20, 0x80, 0x00, 0x4e, 0x23, 0x00, 0x36,
-0x05, 0xe0, 0x80, 0x01, 0x40, 0x51, 0x78, 0x06, 0x3e, 0x57, 0xe5, 0x84, 0x04, 0x00, 0x80, 0x01,
-0x44, 0x20, 0x00, 0x03, 0x3c, 0x0f, 0xf9, 0x62, 0x4c, 0x01, 0x40, 0x06, 0x00, 0x10, 0x80, 0x01,
-0x3e, 0x17, 0xe5, 0x8c, 0x3c, 0x0d, 0xf9, 0x18, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x02, 0xc0, 0x0a,
-0x44, 0x10, 0x00, 0x6a, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0c,
-0x44, 0x50, 0x00, 0x05, 0x4c, 0x02, 0xc0, 0x0a, 0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x6a,
-0x44, 0x20, 0x00, 0x00, 0x49, 0xf8, 0x04, 0x3e, 0x44, 0x00, 0x00, 0x03, 0x49, 0xff, 0xff, 0x2c,
-0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x12, 0x3c, 0x5d, 0xf9, 0x18, 0x45, 0xe0, 0x00, 0x04,
-0x4c, 0x5f, 0x00, 0x08, 0x46, 0x1c, 0x00, 0x00, 0x58, 0x10, 0x80, 0x01, 0x48, 0x00, 0x00, 0x06,
-0x49, 0x00, 0x15, 0xee, 0x58, 0x10, 0x00, 0x00, 0x00, 0x23, 0x80, 0x0b, 0x54, 0x01, 0x00, 0x01,
-0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x49, 0x00, 0x02, 0x12, 0x58, 0x10, 0x00, 0x00,
-0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3c, 0x2d, 0xf9, 0x18, 0x4e, 0x23, 0x00, 0x0c,
-0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x6a, 0x49, 0xf8, 0x04, 0x04, 0x44, 0x00, 0x00, 0x03,
-0x49, 0xff, 0xfe, 0xf2, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x0f, 0x6e, 0x49, 0x00, 0x1e, 0x26,
-0x49, 0x00, 0x0f, 0x1c, 0x49, 0xff, 0xfd, 0x64, 0x44, 0x00, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xdc,
+0x51, 0xff, 0xff, 0xfc, 0x40, 0x00, 0x00, 0x13, 0x49, 0xf7, 0xf2, 0x44, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xb0, 0x44, 0x20, 0x02, 0xb4,
+0x49, 0xff, 0xdd, 0xe4, 0x48, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0xeb, 0xac, 0x40, 0xf0, 0x04, 0x06,
+0x4e, 0xf3, 0x00, 0x1e, 0x50, 0x10, 0x83, 0xff, 0x40, 0xf0, 0x80, 0x06, 0x4e, 0xf3, 0x00, 0x18,
+0x3e, 0x1f, 0xeb, 0x84, 0x04, 0x20, 0x80, 0x00, 0x40, 0x00, 0x08, 0x01, 0x40, 0x00, 0x14, 0x09,
+0x5c, 0xf0, 0x00, 0x20, 0x4e, 0xf3, 0x00, 0x12, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xb0,
+0x44, 0x20, 0x02, 0xc0, 0x49, 0xff, 0xdd, 0xc2, 0x48, 0x00, 0x00, 0x00, 0x49, 0xf7, 0xf1, 0xf8,
+0x49, 0xf7, 0xf2, 0x08, 0x48, 0x00, 0x00, 0x2c, 0x58, 0x40, 0x80, 0x00, 0x40, 0x30, 0x10, 0x00,
+0x50, 0x31, 0x80, 0x08, 0x00, 0x21, 0x80, 0x00, 0x4e, 0x23, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xb0, 0x44, 0x20, 0x02, 0xcc, 0x49, 0xff, 0xdd, 0xa8, 0x48, 0x00, 0x00, 0x00,
+0x44, 0x40, 0x00, 0x00, 0x10, 0x41, 0x80, 0x00, 0x51, 0xe1, 0x7f, 0xff, 0x44, 0x30, 0x00, 0x01,
+0x40, 0x41, 0xf8, 0x0c, 0x50, 0x52, 0x7f, 0xff, 0x40, 0x22, 0x90, 0x04, 0x04, 0x30, 0x80, 0x01,
+0x41, 0xe1, 0x00, 0x0c, 0x40, 0x5f, 0x0c, 0x04, 0x14, 0x50, 0x80, 0x01, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x58, 0x60, 0x00, 0x00, 0x54, 0x10, 0x80, 0xff, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xb0, 0x44, 0x20, 0x02, 0x11, 0x49, 0xff, 0xdd, 0x78, 0x48, 0x00, 0x00, 0x00,
+0x3e, 0x0f, 0xf2, 0x5c, 0x40, 0xf3, 0x00, 0x06, 0x4e, 0xf3, 0x00, 0x0c, 0x50, 0x00, 0x01, 0x38,
+0x40, 0xf0, 0x18, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x3e, 0x7f, 0xf2, 0x4c, 0x48, 0x00, 0x00, 0x14,
+0x3e, 0x0f, 0xef, 0xb8, 0x40, 0xf3, 0x00, 0x06, 0x4e, 0xf3, 0x00, 0x0c, 0x50, 0x20, 0x00, 0xcc,
+0x40, 0xf1, 0x18, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x50, 0x70, 0x7f, 0xf4, 0x48, 0x00, 0x00, 0x04,
+0x3e, 0x7f, 0xe9, 0xd4, 0x4e, 0x12, 0x00, 0x18, 0x04, 0x13, 0x00, 0x02, 0x4e, 0x12, 0x00, 0x14,
+0x02, 0x03, 0x00, 0x06, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0xc0, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xb0, 0x44, 0x20, 0x02, 0x25, 0x49, 0xff, 0xdd, 0x40, 0x48, 0x00, 0x00, 0x00,
+0x49, 0xf7, 0xf1, 0x88, 0x44, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x02, 0x05, 0xe3, 0x80, 0x01,
+0x14, 0x63, 0x80, 0x01, 0x14, 0x73, 0x00, 0x00, 0x15, 0xe3, 0x00, 0x01, 0x14, 0x6f, 0x00, 0x00,
+0x04, 0x53, 0x80, 0x02, 0x50, 0x42, 0x80, 0x01, 0x14, 0x43, 0x80, 0x02, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xb0,
+0x44, 0x20, 0x02, 0x66, 0x49, 0xff, 0xdd, 0x12, 0x48, 0x00, 0x00, 0x00, 0x4e, 0x13, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xb0, 0x44, 0x20, 0x02, 0x67, 0x49, 0xff, 0xdd, 0x06,
+0x48, 0x00, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x14, 0x50, 0x10, 0x80, 0x1f, 0x40, 0x10, 0x94, 0x09,
+0x5c, 0xf0, 0x80, 0x21, 0x4e, 0xf3, 0x00, 0x18, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xb0,
+0x44, 0x20, 0x02, 0x70, 0x49, 0xff, 0xdc, 0xf2, 0x48, 0x00, 0x00, 0x00, 0x40, 0x00, 0x80, 0x13,
+0x49, 0xf7, 0xf1, 0x4c, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0x80, 0x3a, 0x49, 0xf7, 0xf1, 0x18,
+0x48, 0x00, 0x00, 0x38, 0x50, 0x20, 0xff, 0xff, 0x5c, 0xf1, 0x00, 0x20, 0x4e, 0xf2, 0x00, 0x30,
+0x44, 0x50, 0x00, 0x01, 0x40, 0x42, 0x88, 0x0c, 0x51, 0xe2, 0x7f, 0xff, 0x40, 0x2f, 0x10, 0x04,
+0x3c, 0x3d, 0xfa, 0xe2, 0x52, 0x40, 0x80, 0x20, 0x48, 0x00, 0x00, 0x1c, 0x4c, 0x51, 0x40, 0x16,
+0x40, 0x51, 0x08, 0x05, 0x41, 0xe2, 0x8c, 0x02, 0x3e, 0x3f, 0xeb, 0x84, 0x40, 0x40, 0x0c, 0x00,
+0x15, 0xe1, 0x80, 0x01, 0x10, 0x12, 0x00, 0x08, 0x40, 0x00, 0x14, 0x08, 0x04, 0x21, 0x80, 0x00,
+0x40, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x40, 0x21, 0x08, 0x00, 0x50, 0x00, 0x00, 0x01,
+0x40, 0x51, 0x0c, 0x02, 0x40, 0xf2, 0x00, 0x06, 0x4e, 0xf2, 0xff, 0xe2, 0x44, 0x00, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
+0x51, 0xff, 0xff, 0xc0, 0x54, 0x70, 0x00, 0xff, 0x40, 0x03, 0x80, 0x10, 0x54, 0x80, 0x80, 0xff,
+0x4e, 0x05, 0x00, 0x2e, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x23, 0x50, 0x0f, 0x80, 0x04,
+0x49, 0xf7, 0xeb, 0x3c, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x0c, 0x50, 0x0f, 0x80, 0x28,
+0x49, 0xf7, 0xeb, 0x34, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x0a, 0x50, 0x0f, 0x80, 0x34,
+0x49, 0xf7, 0xeb, 0x2c, 0x46, 0x16, 0x03, 0x20, 0x58, 0x10, 0x80, 0x0c, 0x40, 0x23, 0x94, 0x08,
+0x40, 0x01, 0x04, 0x00, 0x04, 0x10, 0x00, 0x00, 0x4e, 0x82, 0x00, 0x06, 0x42, 0x10, 0xfc, 0x08,
+0x48, 0x00, 0x00, 0x04, 0x42, 0x10, 0xfc, 0x09, 0x14, 0x10, 0x00, 0x00, 0x51, 0xff, 0x80, 0x40,
+0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xf4,
+0x54, 0x60, 0x00, 0xff, 0x40, 0x03, 0x00, 0x10, 0x54, 0x70, 0x80, 0xff, 0x4e, 0x05, 0x00, 0x24,
+0x58, 0x03, 0x00, 0x00, 0x50, 0x1f, 0x80, 0x05, 0x50, 0x2f, 0x80, 0x06, 0x50, 0x3f, 0x80, 0x07,
+0x49, 0x00, 0x49, 0xf4, 0x00, 0x0f, 0x80, 0x05, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0a,
+0x00, 0x2f, 0x80, 0x06, 0x4c, 0x20, 0x40, 0x06, 0x00, 0x3f, 0x80, 0x07, 0x4c, 0x33, 0x80, 0x0c,
+0x44, 0x10, 0x00, 0x01, 0x58, 0x03, 0x00, 0x00, 0x58, 0x33, 0x80, 0x00, 0x58, 0x20, 0x80, 0x00,
+0x49, 0x00, 0x4a, 0xfc, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x40, 0x00, 0x00, 0x13, 0x49, 0xf7, 0xf0, 0x60,
+0x00, 0x40, 0x00, 0x03, 0x44, 0x2f, 0xff, 0xa0, 0x54, 0x32, 0x00, 0x1f, 0x40, 0x11, 0x88, 0x04,
+0x10, 0x10, 0x00, 0x03, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x21, 0x00, 0xff, 0x59, 0xc0, 0x00, 0x00,
+0x54, 0x70, 0x80, 0xff, 0x14, 0x2f, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x5a, 0x50, 0x33, 0x80, 0x04,
+0x40, 0xa1, 0x8c, 0x00, 0x44, 0x60, 0x00, 0x00, 0x44, 0x90, 0x00, 0x01, 0x40, 0x0e, 0x18, 0x0d,
+0x54, 0x10, 0x00, 0x01, 0x50, 0x03, 0x7f, 0xf9, 0x4e, 0x12, 0x00, 0x44, 0x5c, 0xf0, 0x00, 0x02,
+0x4e, 0xf2, 0x00, 0x12, 0x5c, 0xf3, 0x80, 0x03, 0x4e, 0xf2, 0x00, 0x3c, 0x54, 0x03, 0x00, 0xff,
+0x58, 0x13, 0x80, 0x00, 0x44, 0x20, 0x00, 0x01, 0x44, 0x30, 0x4e, 0x20, 0x3e, 0x4e, 0xb3, 0x10,
+0x48, 0x00, 0x00, 0x16, 0x04, 0x5f, 0x80, 0x01, 0x54, 0x43, 0x00, 0xff, 0x58, 0x13, 0x80, 0x00,
+0x44, 0x20, 0x00, 0x01, 0x44, 0x30, 0x4e, 0x20, 0x58, 0x02, 0x00, 0x00, 0x4e, 0x52, 0x00, 0x06,
+0x49, 0xff, 0xe8, 0x68, 0x48, 0x00, 0x00, 0x06, 0x3e, 0x4e, 0xb3, 0xb0, 0x4b, 0xe0, 0x10, 0x01,
+0x3c, 0x2d, 0xf7, 0xea, 0x40, 0x14, 0x98, 0x0c, 0x41, 0xe1, 0x28, 0x00, 0x02, 0x4f, 0x00, 0x02,
+0x40, 0x30, 0x90, 0x04, 0x12, 0x3f, 0x00, 0x02, 0x4e, 0x02, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xd0, 0x44, 0x20, 0x12, 0x48, 0x49, 0xff, 0xdb, 0xc0, 0x48, 0x00, 0x00, 0x00,
+0x50, 0x63, 0x00, 0x01, 0x44, 0x00, 0x00, 0x0e, 0x4c, 0x60, 0x7f, 0xb2, 0x51, 0xff, 0x80, 0x0c,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x59, 0xc0, 0x00, 0x00, 0x54, 0x70, 0x80, 0xff, 0x4e, 0x02, 0x00, 0x46, 0x50, 0xa3, 0x80, 0x04,
+0x40, 0xa5, 0x28, 0x00, 0x44, 0x60, 0x00, 0x00, 0x44, 0x90, 0x00, 0x01, 0x40, 0x1e, 0x18, 0x0d,
+0x54, 0x00, 0x80, 0x01, 0x50, 0x23, 0x7f, 0xf9, 0x4e, 0x02, 0x00, 0x30, 0x54, 0x03, 0x00, 0xff,
+0x58, 0x13, 0x80, 0x00, 0x5c, 0xf1, 0x00, 0x02, 0x4e, 0xf2, 0x00, 0x0a, 0x5c, 0xf3, 0x80, 0x03,
+0x4e, 0xf2, 0x00, 0x24, 0x3e, 0x2e, 0xaf, 0xf8, 0x48, 0x00, 0x00, 0x04, 0x3e, 0x2e, 0xb0, 0x4c,
+0x4b, 0xe0, 0x08, 0x01, 0x3c, 0x1d, 0xf7, 0xea, 0x40, 0x24, 0x98, 0x0c, 0x40, 0x40, 0xa8, 0x00,
+0x02, 0x32, 0x00, 0x02, 0x40, 0x51, 0x08, 0x05, 0x40, 0x22, 0x8c, 0x02, 0x12, 0x22, 0x00, 0x02,
+0x4e, 0x02, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xd0, 0x44, 0x20, 0x12, 0x08,
+0x49, 0xff, 0xdb, 0x6c, 0x48, 0x00, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01, 0x44, 0x50, 0x00, 0x0e,
+0x4c, 0x62, 0xff, 0xc6, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff, 0x49, 0xff, 0xfc, 0xb6,
+0x4e, 0x03, 0x00, 0x06, 0x44, 0x00, 0x00, 0xff, 0x48, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x50, 0x00, 0x00, 0x3e, 0x57, 0xe5, 0x84,
-0x3c, 0x1f, 0xf9, 0x19, 0x3c, 0x1f, 0xf9, 0x18, 0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xfe, 0xc4,
+0x51, 0xff, 0xff, 0xfc, 0x40, 0x20, 0x00, 0x13, 0x44, 0x00, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00,
+0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xf3, 0x9e, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x45, 0xc0, 0x2c, 0xdc,
+0x54, 0x70, 0x00, 0xff, 0x58, 0x13, 0x80, 0x00, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01,
+0x49, 0x00, 0x4a, 0x4c, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x13, 0x80, 0x00, 0x44, 0x20, 0x00, 0x00,
+0x4c, 0x02, 0x80, 0x1e, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xf2, 0xec, 0x58, 0x60, 0x00, 0x00,
+0x4b, 0xe0, 0x70, 0x01, 0x00, 0x10, 0x00, 0x05, 0x44, 0x50, 0x00, 0xa0, 0x58, 0x03, 0x00, 0x00,
+0x4c, 0x12, 0x80, 0x0a, 0x49, 0xff, 0xfe, 0xd6, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xff, 0xc0,
+0x48, 0xff, 0xff, 0xda, 0x49, 0xff, 0xfd, 0x04, 0x48, 0xff, 0xff, 0xd6, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x70, 0x00, 0x00,
+0x49, 0xff, 0xee, 0x0c, 0x04, 0x63, 0x80, 0x02, 0x00, 0x83, 0x00, 0x20, 0x40, 0x04, 0x00, 0x10,
+0x4e, 0x04, 0x00, 0x06, 0x44, 0x10, 0xff, 0xff, 0x48, 0x00, 0x00, 0x14, 0x44, 0x20, 0x00, 0x00,
+0x3e, 0x1f, 0xf4, 0x10, 0x38, 0x20, 0xa0, 0x08, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xff, 0xac,
+0x44, 0x10, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x70, 0x44, 0x10, 0x00, 0x00,
+0x00, 0x33, 0x00, 0x0b, 0x54, 0x01, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x2e, 0x00, 0x23, 0x00, 0x07,
+0x50, 0x43, 0x00, 0x0c, 0x14, 0x12, 0x00, 0x01, 0x44, 0x30, 0x00, 0x18, 0x44, 0x1f, 0xff, 0xed,
+0x44, 0x50, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0a, 0x14, 0x52, 0x00, 0x02, 0x14, 0x82, 0x00, 0x00,
+0x12, 0x33, 0x00, 0x00, 0x10, 0x13, 0x00, 0x04, 0x10, 0x03, 0x00, 0x08, 0x10, 0x23, 0x00, 0x05,
+0x45, 0xe0, 0x00, 0x01, 0x04, 0x53, 0x80, 0x02, 0x44, 0x4f, 0xe0, 0x00, 0x11, 0xe3, 0x80, 0x10,
+0x12, 0x42, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x03, 0x2a, 0x49, 0xff, 0xed, 0xbe,
+0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x55, 0xc0, 0x00, 0xff, 0x54, 0xa0, 0x80, 0xff, 0x48, 0x00, 0x00, 0x08,
+0x49, 0xff, 0xfe, 0x60, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xff, 0x4a, 0x58, 0x15, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x00, 0x58, 0x0e, 0x00, 0x00, 0x49, 0xf7, 0xf2, 0x5c, 0x44, 0x50, 0x0f, 0xff,
+0x58, 0x60, 0x00, 0x00, 0x4c, 0x02, 0xff, 0xee, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xdc, 0x58, 0x50, 0x80, 0x00,
+0x14, 0x0f, 0x80, 0x04, 0x4e, 0x12, 0x00, 0x0a, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x10, 0x00, 0x06,
+0x44, 0xa0, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4e, 0x47, 0xcc, 0x00, 0x00, 0x54, 0x21, 0x00, 0xff,
+0x59, 0xce, 0x00, 0x01, 0x44, 0x90, 0x00, 0x00, 0x14, 0x2f, 0x80, 0x05, 0x15, 0xcf, 0x80, 0x01,
+0x58, 0xa4, 0x80, 0x00, 0x50, 0x8f, 0x80, 0x1f, 0x50, 0x7f, 0x80, 0x1c, 0x50, 0x6f, 0x80, 0x1a,
+0x04, 0x4f, 0x80, 0x04, 0x40, 0x32, 0x24, 0x0d, 0x54, 0x11, 0x80, 0x01, 0x4e, 0x12, 0x00, 0x2c,
+0x58, 0x14, 0x80, 0x00, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x02, 0x14, 0x5f, 0x80, 0x03,
+0x45, 0xc0, 0x0f, 0xff, 0x49, 0x00, 0x49, 0x6a, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x03,
+0x58, 0x34, 0x80, 0x00, 0x04, 0x4f, 0x80, 0x05, 0x04, 0x5f, 0x80, 0x03, 0x4c, 0x0e, 0x00, 0x14,
+0x58, 0x02, 0x80, 0x00, 0x49, 0xff, 0xe3, 0x44, 0x05, 0xef, 0x80, 0x01, 0x58, 0x13, 0x80, 0x00,
+0x40, 0xaf, 0x00, 0x1b, 0x58, 0x23, 0x00, 0x00, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0xe3, 0x82,
+0x04, 0x5f, 0x80, 0x03, 0x50, 0x94, 0x80, 0x01, 0x45, 0xc0, 0x00, 0x0e, 0x4c, 0x9e, 0x7f, 0xca,
+0x58, 0x05, 0x00, 0x00, 0x51, 0xff, 0x80, 0x24, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x81, 0x80, 0xff, 0x50, 0x44, 0x00, 0x04,
+0x3c, 0x3d, 0xf7, 0xea, 0x40, 0x02, 0x10, 0x00, 0x44, 0x40, 0x00, 0x00, 0x58, 0x70, 0x80, 0x00,
+0x40, 0x01, 0x80, 0x00, 0x54, 0x61, 0x00, 0xff, 0x58, 0x92, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x40, 0xa3, 0x90, 0x0d, 0x54, 0x25, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x0e, 0x02, 0x30, 0x00, 0x02,
+0x40, 0x20, 0x90, 0x0c, 0x41, 0xe1, 0x90, 0x0e, 0x55, 0xcf, 0x00, 0x01, 0x4f, 0xc3, 0x00, 0x04,
+0x40, 0x94, 0x88, 0x04, 0x50, 0x42, 0x00, 0x01, 0x44, 0x50, 0x00, 0x0e, 0x4c, 0x42, 0xff, 0xea,
+0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xfd, 0x3a, 0x3f, 0xce, 0xcb, 0xb0,
+0x44, 0x10, 0x00, 0x01, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x44, 0x20, 0x00, 0x00,
+0x58, 0x03, 0x80, 0x00, 0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xfd, 0xb4, 0x58, 0x04, 0x80, 0x00,
+0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x1a, 0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x4b, 0xe0, 0x70, 0x01, 0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xff, 0x42, 0x58, 0x10, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xd0, 0x44, 0x20, 0x0d, 0x2c, 0x49, 0xff, 0xd9, 0xb0, 0x48, 0x00, 0x00, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfd, 0x04, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x80, 0x80, 0x00, 0x58, 0x60, 0x00, 0x00,
+0x4e, 0x12, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x62, 0x80, 0x22, 0x44, 0x10, 0x00, 0x06,
+0x4c, 0x60, 0xc0, 0x14, 0x54, 0x71, 0x00, 0xff, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xfe, 0x32,
+0x58, 0x30, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
+0x49, 0xff, 0xff, 0x70, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xd0,
+0x44, 0x20, 0x0d, 0x6f, 0x49, 0xff, 0xd9, 0x7a, 0x48, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x03,
+0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xd4, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x98, 0xbc, 0x00, 0x60, 0x00, 0x02, 0x54, 0x10, 0x80, 0xff, 0x40, 0x03, 0x00, 0x10,
+0x4e, 0x04, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14, 0x4e, 0x13, 0x00, 0x04,
+0x48, 0x00, 0x00, 0x0e, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfc, 0xf0, 0x58, 0x23, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x0f, 0x49, 0xff, 0xff, 0xae, 0x44, 0x00, 0x00, 0x01,
+0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x60, 0x00, 0x02,
+0x58, 0x70, 0x00, 0x00, 0x00, 0x83, 0x00, 0x20, 0x40, 0x04, 0x00, 0x10, 0x4e, 0x04, 0x00, 0x06,
+0x44, 0x10, 0xff, 0xff, 0x48, 0x00, 0x00, 0x0e, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0xfa, 0x96,
+0x10, 0x80, 0x00, 0x02, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xff, 0xc4, 0x44, 0x10, 0x00, 0x00,
+0x00, 0x23, 0x00, 0x0b, 0x54, 0x01, 0x00, 0x01, 0x4e, 0x02, 0x00, 0x2c, 0x00, 0x53, 0x00, 0x07,
+0x50, 0x43, 0x00, 0x0c, 0x44, 0x30, 0x00, 0x00, 0x44, 0x20, 0x00, 0x18, 0x44, 0x0f, 0xff, 0xed,
+0x45, 0xe0, 0x00, 0x14, 0x14, 0x32, 0x00, 0x02, 0x14, 0x82, 0x00, 0x00, 0x14, 0x12, 0x00, 0x01,
+0x10, 0x03, 0x00, 0x04, 0x12, 0x23, 0x00, 0x00, 0x11, 0xe3, 0x00, 0x08, 0x10, 0x53, 0x00, 0x05,
+0x44, 0x40, 0x00, 0x01, 0x04, 0x13, 0x80, 0x02, 0x44, 0x3f, 0xe0, 0x00, 0x10, 0x43, 0x80, 0x10,
+0x12, 0x30, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x01, 0x82, 0x44, 0x00, 0x00, 0x01,
+0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x3e, 0x3f, 0xdf, 0xa8, 0x04, 0x11, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x14, 0x00, 0x80, 0x00,
+0x58, 0x20, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x04, 0x51, 0x80, 0x00, 0x41, 0xe0, 0x84, 0x00,
+0x40, 0x42, 0xf8, 0x00, 0x12, 0x22, 0x00, 0x02, 0x51, 0xe0, 0x80, 0x04, 0x04, 0x51, 0x80, 0x00,
+0x40, 0x4f, 0x78, 0x00, 0x41, 0xe2, 0x90, 0x00, 0x50, 0x00, 0x00, 0x01, 0x44, 0x40, 0x00, 0x04,
+0x12, 0x2f, 0x00, 0x02, 0x50, 0x10, 0x80, 0x01, 0x4c, 0x02, 0x7f, 0xe8, 0x3e, 0x0f, 0xf4, 0x10,
+0x18, 0x20, 0x00, 0x01, 0x3e, 0x5f, 0xf4, 0x90, 0x4c, 0x02, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x01,
+0x44, 0x00, 0x00, 0x00, 0x49, 0x00, 0x46, 0xa4, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0x3c, 0x54, 0x10, 0x80, 0xff, 0x54, 0x21, 0x00, 0xff,
+0x4e, 0x13, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x40, 0x46, 0x46, 0x01, 0x20,
+0x58, 0x42, 0x01, 0x14, 0x50, 0x62, 0x7f, 0xfc, 0x50, 0x53, 0x7f, 0xf4, 0x50, 0x72, 0xff, 0xfc,
+0x44, 0x30, 0x00, 0x00, 0x40, 0x83, 0x88, 0x1b, 0x40, 0x83, 0x08, 0x1a, 0x40, 0x62, 0x88, 0x1b,
+0x40, 0x62, 0x08, 0x1a, 0x58, 0x21, 0x80, 0x00, 0x44, 0x40, 0x00, 0x01, 0x48, 0x00, 0x00, 0x1c,
+0x38, 0x50, 0x0c, 0x00, 0x50, 0x31, 0x80, 0x01, 0x50, 0x92, 0x80, 0x05, 0x50, 0x72, 0x80, 0x0a,
+0x40, 0x72, 0x1c, 0x0c, 0x40, 0x92, 0x24, 0x0c, 0x40, 0x94, 0x9c, 0x04, 0x50, 0x72, 0x80, 0x10,
+0x40, 0x52, 0x14, 0x0c, 0x40, 0x54, 0x94, 0x04, 0x40, 0x72, 0x1c, 0x0c, 0x40, 0x52, 0x9c, 0x04,
+0x40, 0x21, 0x14, 0x04, 0x40, 0xf1, 0x84, 0x06, 0x4e, 0xf3, 0xff, 0xe4, 0x14, 0x24, 0x00, 0x00,
+0x14, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa4, 0x04, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x98, 0xbc, 0x00, 0x10, 0x00, 0x2d, 0x50, 0x60, 0x00, 0x27, 0x54, 0x00, 0x80, 0x01,
+0x4e, 0x02, 0x00, 0x0a, 0x44, 0x10, 0x00, 0x01, 0x50, 0x03, 0x00, 0x08, 0x58, 0x20, 0x80, 0x00,
+0x49, 0xff, 0xff, 0xa2, 0x44, 0x20, 0x00, 0x00, 0x10, 0x23, 0x00, 0x07, 0x10, 0x23, 0x00, 0x05,
+0x10, 0x23, 0x00, 0x06, 0x50, 0x03, 0x7f, 0xed, 0x49, 0x00, 0x25, 0x02, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x50, 0x70, 0x00, 0x14, 0x50, 0x60, 0x00, 0x27,
+0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x24, 0xf4, 0x00, 0x23, 0x00, 0x06, 0x40, 0x01, 0x00, 0x10,
+0x4e, 0x05, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x0b, 0xca,
+0x49, 0xff, 0xd8, 0x34, 0x48, 0x00, 0x00, 0x00, 0x54, 0x21, 0x00, 0x01, 0x50, 0x03, 0x00, 0x08,
+0x4e, 0x23, 0x00, 0x16, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xff, 0x6e, 0x00, 0x53, 0x00, 0x06,
+0x50, 0x33, 0x7f, 0xdf, 0x58, 0x42, 0x80, 0x01, 0x10, 0x43, 0x00, 0x06, 0x44, 0x10, 0x03, 0xe8,
+0x3a, 0x21, 0x88, 0x00, 0x40, 0x11, 0x04, 0x17, 0x48, 0x00, 0x00, 0x32, 0x44, 0x10, 0x00, 0x01,
+0x58, 0x20, 0x80, 0x00, 0x49, 0xff, 0xff, 0x58, 0x00, 0x03, 0x00, 0x07, 0x44, 0x50, 0x00, 0xff,
+0x4c, 0x02, 0x80, 0x12, 0x51, 0xe0, 0x7f, 0xff, 0x54, 0x0f, 0x00, 0xff, 0x10, 0x03, 0x00, 0x07,
+0x4e, 0x03, 0x00, 0x0a, 0x10, 0x03, 0x00, 0x06, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x24, 0xb0,
+0x48, 0x00, 0x00, 0x1a, 0x00, 0x13, 0x00, 0x06, 0x42, 0x50, 0x80, 0x09, 0x10, 0x53, 0x00, 0x06,
+0x50, 0x43, 0x7f, 0xdf, 0x50, 0x63, 0x7f, 0xe3, 0x3a, 0x22, 0x08, 0x00, 0x3a, 0x63, 0x18, 0x00,
+0x40, 0x33, 0x08, 0x01, 0x44, 0x00, 0x03, 0xe8, 0x40, 0x11, 0x80, 0x57, 0x58, 0x03, 0x80, 0x00,
+0x49, 0x00, 0x25, 0x86, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x44, 0x1f, 0xff, 0xff, 0x58, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x10, 0x13, 0x00, 0x2f,
+0x10, 0x03, 0x00, 0x2e, 0x10, 0x03, 0x00, 0x2d, 0x58, 0x23, 0x00, 0x00, 0x50, 0x03, 0x00, 0x14,
+0x3e, 0x1e, 0xe4, 0xc0, 0x49, 0x00, 0x24, 0x5c, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x12, 0x49, 0xf7, 0xe6, 0x6a, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0x00, 0x2a, 0xc8, 0x58, 0x03, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xfa, 0x2a, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x06, 0xfe, 0x49, 0xff, 0xd7, 0xa0, 0x48, 0x00, 0x00, 0x00,
+0x04, 0x00, 0x00, 0x0b, 0x44, 0x50, 0x00, 0x03, 0x00, 0x10, 0x00, 0x18, 0x4c, 0x12, 0xc0, 0x10,
+0x00, 0x00, 0x00, 0x19, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x0a, 0x44, 0x50, 0x00, 0x01,
+0x3e, 0x57, 0xe3, 0x24, 0x44, 0x00, 0x00, 0x00, 0x49, 0x00, 0x3a, 0xea, 0x44, 0x00, 0x00, 0x00,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
-0x51, 0xff, 0xff, 0xf8, 0x44, 0x60, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x04, 0x14, 0x6f, 0x80, 0x01,
-0x49, 0xf7, 0xd3, 0x8e, 0x46, 0x00, 0x20, 0x00, 0x14, 0x60, 0x00, 0x00, 0x44, 0x20, 0x2d, 0x0c,
-0x04, 0x0f, 0x80, 0x01, 0x3c, 0x2f, 0xff, 0xb9, 0x49, 0xf7, 0xd3, 0x8e, 0x51, 0xff, 0x80, 0x08,
-0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x60, 0x00, 0x00,
-0x49, 0xff, 0xff, 0xb0, 0x44, 0x00, 0x00, 0x0c, 0x04, 0x83, 0x00, 0x02, 0x49, 0xf7, 0xe4, 0x46,
-0x44, 0x50, 0x0f, 0xff, 0x58, 0x70, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x0a, 0x3e, 0x0f, 0xcc, 0xe4,
-0x49, 0xff, 0xcf, 0xdc, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x2e, 0x49, 0xf7, 0xe4, 0x08,
-0x44, 0x50, 0x00, 0x0c, 0x44, 0x4f, 0xe0, 0x00, 0x44, 0x3f, 0xff, 0xef, 0x12, 0x50, 0x00, 0x00,
-0x12, 0x40, 0x00, 0x01, 0x10, 0x30, 0x00, 0x04, 0x50, 0x20, 0x00, 0x08, 0x00, 0x84, 0x00, 0x07,
-0x44, 0x60, 0x00, 0x00, 0x10, 0x80, 0x00, 0x05, 0x10, 0x61, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x58, 0x23, 0x80, 0x00, 0x58, 0x10, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xe8, 0x1a,
-0x44, 0x00, 0x00, 0x00, 0x49, 0x00, 0x1f, 0x3c, 0x3e, 0x67, 0xe5, 0x90, 0x49, 0xff, 0xff, 0xa0,
-0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
-0x04, 0x10, 0x00, 0x02, 0x58, 0x60, 0x00, 0x00, 0x00, 0x20, 0x80, 0x04, 0x3e, 0x0f, 0xcd, 0x08,
-0x44, 0x80, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x50, 0x34, 0x00, 0x01, 0x4c, 0x51, 0x40, 0x1e,
-0x04, 0x10, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x1a, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01,
-0x58, 0x70, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0x80, 0x1c, 0x46, 0x2c, 0x00, 0x00,
-0x58, 0x51, 0x00, 0x9a, 0x4c, 0x72, 0x80, 0x16, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
-0x49, 0xff, 0xf1, 0xee, 0x48, 0x00, 0x00, 0x0e, 0x54, 0x81, 0x80, 0xff, 0x44, 0x50, 0x00, 0x04,
-0x50, 0x00, 0x00, 0x08, 0x4c, 0x82, 0xff, 0xd8, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06,
-0x5c, 0xf4, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
-0x49, 0xff, 0xf1, 0xd6, 0x58, 0x03, 0x80, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x10, 0x30, 0x00, 0x08, 0x12, 0x10, 0x00, 0x00, 0x44, 0x3f, 0xe0, 0x00, 0x44, 0x1f, 0xff, 0xed,
-0x12, 0x30, 0x00, 0x01, 0x10, 0x10, 0x00, 0x04, 0x10, 0x20, 0x00, 0x05, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0xbc, 0x51, 0xff, 0xff, 0xf8, 0x10, 0x0f, 0x80, 0x04, 0x44, 0x00, 0x00, 0x0d,
-0x49, 0xf7, 0xe3, 0xa4, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06,
-0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x2c, 0x49, 0xf7, 0xe3, 0x6a, 0x44, 0x5f, 0xe0, 0x00,
-0x44, 0x4f, 0xff, 0xed, 0x44, 0x30, 0x00, 0x00, 0x44, 0x10, 0x00, 0x10, 0x44, 0x20, 0x00, 0x31,
-0x12, 0x10, 0x00, 0x00, 0x12, 0x50, 0x00, 0x01, 0x10, 0x40, 0x00, 0x04, 0x10, 0x30, 0x00, 0x05,
-0x10, 0x20, 0x00, 0x08, 0x50, 0x1f, 0x80, 0x04, 0x44, 0x20, 0x00, 0x01, 0x50, 0x00, 0x00, 0x0c,
-0x49, 0xf7, 0xdd, 0xb0, 0x44, 0x00, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
-0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xe7, 0x76, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x08,
-0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x54, 0x90, 0x00, 0xff, 0x44, 0x00, 0x00, 0x10, 0x40, 0x80, 0x80, 0x10, 0x49, 0xf7, 0xe3, 0x5e,
+0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec,
+0x44, 0x20, 0x06, 0xd7, 0x49, 0xff, 0xd7, 0x72, 0x48, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02,
+0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x06, 0xd8,
+0x49, 0xff, 0xd7, 0x64, 0x48, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x10, 0x5c, 0xf0, 0x80, 0x02,
+0x4e, 0xf3, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x06, 0xda,
+0x49, 0xff, 0xd7, 0x54, 0x48, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x02, 0x23, 0x00, 0x06,
+0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xef, 0xae, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x06, 0xe4, 0x49, 0xff, 0xd7, 0x40, 0x48, 0x00, 0x00, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xf9, 0xb0, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x05, 0xfc, 0x49, 0xff, 0xd7, 0x26,
+0x48, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x10, 0x02, 0x23, 0x00, 0x06,
+0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xef, 0x7e, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x06, 0x07, 0x49, 0xff, 0xd7, 0x10, 0x48, 0x00, 0x00, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xf9, 0x80, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x09, 0x4f, 0x49, 0xff, 0xd6, 0xf6,
+0x48, 0x00, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00, 0x10, 0x20, 0x00, 0x10, 0x49, 0xff, 0xff, 0xbc,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec,
+0x44, 0x20, 0x05, 0x57, 0x49, 0xff, 0xd6, 0xda, 0x48, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0b,
+0x4e, 0x13, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x05, 0x58,
+0x49, 0xff, 0xd6, 0xcc, 0x48, 0x00, 0x00, 0x00, 0x04, 0x20, 0x00, 0x0c, 0x4e, 0x23, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x05, 0x59, 0x49, 0xff, 0xd6, 0xbe,
+0x48, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x3e, 0x1f, 0xca, 0x30, 0x40, 0x32, 0x10, 0x09,
+0x38, 0x10, 0x8e, 0x02, 0x4e, 0x12, 0x00, 0x0e, 0x4b, 0xe0, 0x04, 0x01, 0x44, 0x10, 0x00, 0x01,
+0x4c, 0x00, 0x80, 0x1a, 0x2e, 0x07, 0xf8, 0x5c, 0x4c, 0x00, 0xc0, 0x0a, 0x48, 0x00, 0x00, 0x0e,
+0x2f, 0xe7, 0xf8, 0x5c, 0x44, 0x50, 0x00, 0x01, 0x4d, 0xe2, 0x80, 0x08, 0x58, 0x03, 0x00, 0x00,
+0x49, 0xff, 0xff, 0x9a, 0x48, 0x00, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x49, 0xff, 0xf9, 0x0c, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x58, 0x70, 0x00, 0x00, 0x49, 0xff, 0xf3, 0x4a, 0x58, 0xa0, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x2c, 0x50, 0x01, 0x00, 0x04, 0x40, 0x91, 0x28, 0x1a, 0x40, 0x90, 0x28, 0x1b,
+0x58, 0x04, 0x80, 0x00, 0x49, 0xf7, 0xea, 0xda, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x80, 0x00, 0x00,
+0x4c, 0x02, 0xc0, 0x08, 0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x9a, 0x48, 0x00, 0x00, 0xf2,
+0x49, 0xf7, 0xea, 0x9e, 0x50, 0x60, 0x00, 0x04, 0x58, 0x24, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x49, 0xf7, 0xe5, 0x0c, 0x02, 0x03, 0x00, 0x0b, 0x00, 0x53, 0x00, 0x04, 0x44, 0x3f, 0xc0, 0x03,
+0x40, 0x52, 0x98, 0x09, 0x40, 0x52, 0x98, 0x08, 0x40, 0x10, 0x0c, 0x02, 0x02, 0x23, 0x00, 0x04,
+0x01, 0xe3, 0x7f, 0xff, 0x01, 0xc3, 0x00, 0x02, 0x00, 0x43, 0x00, 0x05, 0x14, 0x1f, 0x80, 0x01,
+0x44, 0x1f, 0xff, 0x80, 0x00, 0x03, 0x00, 0x07, 0x54, 0x21, 0x00, 0x3f, 0x40, 0x30, 0x04, 0x04,
+0x00, 0x03, 0x00, 0x11, 0x55, 0xef, 0x00, 0x7f, 0x58, 0x10, 0x00, 0x20, 0x04, 0x0f, 0x80, 0x01,
+0x59, 0xce, 0x00, 0x08, 0x58, 0x00, 0x00, 0x04, 0x14, 0x0f, 0x80, 0x01, 0x12, 0x93, 0x7f, 0xfe,
+0x44, 0x9f, 0xff, 0xff, 0x58, 0x52, 0x80, 0x1e, 0x58, 0x42, 0x00, 0x14, 0x58, 0x21, 0x28, 0x00,
+0x10, 0x93, 0x00, 0x00, 0x44, 0x9f, 0xff, 0xc8, 0x11, 0xe3, 0x7f, 0xff, 0x10, 0x93, 0x00, 0x01,
+0x11, 0xc3, 0x00, 0x02, 0x10, 0x53, 0x00, 0x04, 0x10, 0x43, 0x00, 0x05, 0x10, 0x33, 0x00, 0x07,
+0x12, 0x23, 0x00, 0x04, 0x10, 0x13, 0x00, 0x11, 0x12, 0x03, 0x00, 0x0b, 0x4e, 0xa2, 0x00, 0x06,
+0x50, 0x13, 0x00, 0x1c, 0x48, 0x00, 0x00, 0x04, 0x50, 0x13, 0x00, 0x18, 0x45, 0xef, 0xff, 0xff,
+0x44, 0x30, 0x00, 0xe4, 0x44, 0x00, 0x00, 0x00, 0x12, 0x00, 0x80, 0x01, 0x12, 0x30, 0x80, 0x00,
+0x11, 0xe0, 0x80, 0x09, 0x11, 0xe0, 0x80, 0x04, 0x11, 0xe0, 0x80, 0x05, 0x11, 0xe0, 0x80, 0x06,
+0x11, 0xe0, 0x80, 0x07, 0x11, 0xe0, 0x80, 0x08, 0x50, 0x00, 0x80, 0x0a, 0x00, 0x43, 0x80, 0x04,
+0x10, 0x40, 0x80, 0x0a, 0x00, 0x53, 0x80, 0x05, 0x10, 0x50, 0x80, 0x0b, 0x00, 0x23, 0x80, 0x06,
+0x10, 0x20, 0x80, 0x0c, 0x00, 0x33, 0x80, 0x07, 0x10, 0x30, 0x80, 0x0d, 0x01, 0xe3, 0x80, 0x08,
+0x11, 0xe0, 0x80, 0x0e, 0x00, 0x73, 0x80, 0x09, 0x10, 0x70, 0x80, 0x0f, 0x49, 0xff, 0xf2, 0xaa,
+0x44, 0x50, 0x00, 0x0f, 0x58, 0x10, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x04, 0x48, 0x00, 0x00, 0x56,
+0x00, 0x23, 0x00, 0x03, 0x40, 0x50, 0x08, 0x08, 0x54, 0x31, 0x00, 0x03, 0x40, 0x02, 0x8c, 0x04,
+0x10, 0x03, 0x00, 0x03, 0x47, 0xe6, 0x01, 0x20, 0x46, 0x40, 0x02, 0x00, 0x04, 0x2f, 0x00, 0x40,
+0x40, 0x12, 0x04, 0x0c, 0x40, 0x50, 0x88, 0x02, 0x4c, 0x50, 0xc0, 0x0e, 0x01, 0xe3, 0x7f, 0xff,
+0x44, 0x0f, 0xff, 0x87, 0x40, 0x4f, 0x00, 0x02, 0x44, 0x10, 0x00, 0x04, 0x58, 0x02, 0x00, 0x20,
+0x48, 0x00, 0x00, 0x14, 0x46, 0x26, 0x01, 0x20, 0x04, 0x51, 0x00, 0x41, 0x40, 0x30, 0x94, 0x02,
+0x4c, 0x30, 0xc0, 0x10, 0x01, 0xe3, 0x7f, 0xff, 0x44, 0x0f, 0xff, 0x87, 0x40, 0x4f, 0x00, 0x02,
+0x44, 0x10, 0x00, 0x0d, 0x58, 0x02, 0x00, 0x68, 0x10, 0x03, 0x7f, 0xff, 0x48, 0x00, 0x00, 0x08,
+0x3e, 0x0f, 0xca, 0x08, 0x49, 0xff, 0xd5, 0x9a, 0x48, 0x00, 0x00, 0x18, 0x44, 0x00, 0x00, 0x02,
+0x58, 0x24, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xed, 0xf4, 0x4e, 0x02, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x3e, 0x0f, 0xca, 0x1c, 0x49, 0xff, 0xd5, 0x86,
+0x58, 0x04, 0x00, 0x00, 0x49, 0xf7, 0xe9, 0xce, 0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x01,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec,
+0x44, 0x20, 0x05, 0xac, 0x49, 0xff, 0xd5, 0x6a, 0x48, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x0b,
+0x4e, 0x13, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x05, 0xad,
+0x49, 0xff, 0xd5, 0x5c, 0x48, 0x00, 0x00, 0x00, 0x02, 0x30, 0x80, 0x00, 0x44, 0x20, 0x00, 0xa4,
+0x54, 0x01, 0x80, 0xfc, 0x4c, 0x01, 0x40, 0x06, 0x58, 0x00, 0x80, 0x00, 0x49, 0xff, 0xfe, 0xc0,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x48, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xe4, 0x58, 0x70, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xc9, 0xec, 0x44, 0x20, 0x03, 0xc6, 0x49, 0xff, 0xd5, 0x36,
+0x48, 0x00, 0x00, 0x00, 0x3c, 0x03, 0xfc, 0x2e, 0x44, 0x90, 0x00, 0x00, 0x44, 0x50, 0x01, 0x01,
+0x3e, 0x97, 0xe3, 0x46, 0x4c, 0x02, 0xc0, 0x1a, 0x2e, 0x07, 0xe3, 0x24, 0x44, 0x50, 0x00, 0x01,
+0x04, 0x83, 0x80, 0x02, 0x4c, 0x02, 0xc0, 0x06, 0x49, 0x00, 0x38, 0x82, 0x3e, 0x97, 0xe3, 0x24,
+0x00, 0xa4, 0x00, 0x04, 0x54, 0x55, 0x00, 0x20, 0x4e, 0x52, 0x00, 0xce, 0x58, 0x03, 0x80, 0x00,
+0x49, 0x00, 0x24, 0xc8, 0x48, 0x00, 0x00, 0xc8, 0x00, 0xa3, 0x80, 0x40, 0x44, 0x00, 0x00, 0x30,
+0x43, 0xe5, 0x00, 0x24, 0x3e, 0x1f, 0xe4, 0x8c, 0x41, 0xcf, 0x04, 0x00, 0x00, 0x8e, 0x00, 0x2c,
+0x54, 0x64, 0x00, 0x02, 0x4e, 0x62, 0x00, 0xb8, 0x04, 0x23, 0x80, 0x0c, 0x10, 0x9f, 0x80, 0x17,
+0x50, 0x81, 0x00, 0x0c, 0x44, 0x90, 0x00, 0x00, 0x02, 0x23, 0x80, 0x09, 0x50, 0x6f, 0x80, 0x17,
+0x3f, 0xce, 0xef, 0x5c, 0x48, 0x00, 0x00, 0x40, 0x00, 0x34, 0x00, 0x00, 0x44, 0x40, 0x00, 0xdd,
+0x4c, 0x32, 0x40, 0x30, 0x14, 0x2f, 0x80, 0x01, 0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
+0x4b, 0xe0, 0x70, 0x01, 0x04, 0x2f, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x24, 0x00, 0x5f, 0x80, 0x17,
+0x45, 0xe0, 0x00, 0x09, 0x4c, 0x5f, 0x40, 0x1e, 0x50, 0x14, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00,
+0x44, 0x30, 0x00, 0x0c, 0x4c, 0x01, 0xc0, 0x16, 0x40, 0x41, 0x88, 0x08, 0x42, 0x65, 0x10, 0x24,
+0x3e, 0x2f, 0xe4, 0x8c, 0x40, 0x63, 0x08, 0x00, 0x58, 0x03, 0x00, 0x00, 0x50, 0x21, 0x80, 0x06,
+0x49, 0xf7, 0xe3, 0x58, 0x20, 0x13, 0x00, 0x2d, 0x4e, 0x14, 0x00, 0x26, 0x48, 0x00, 0x00, 0x12,
+0x01, 0xe4, 0x00, 0x01, 0x50, 0x5f, 0x00, 0x02, 0x40, 0x94, 0x94, 0x00, 0x40, 0x84, 0x14, 0x00,
+0x40, 0x94, 0x80, 0x13, 0x40, 0xf4, 0x88, 0x06, 0x4e, 0xf3, 0xff, 0xc0, 0x48, 0x00, 0x00, 0x64,
+0x50, 0x03, 0x00, 0x14, 0x49, 0x00, 0x21, 0x5c, 0x00, 0x33, 0x00, 0x2d, 0x54, 0x01, 0x80, 0x01,
+0x4e, 0x02, 0x00, 0x0a, 0x44, 0x10, 0x00, 0x01, 0x50, 0x03, 0x80, 0x40, 0x58, 0x20, 0x80, 0x00,
+0x49, 0xff, 0xfb, 0xe2, 0x00, 0x03, 0x00, 0x05, 0x10, 0x03, 0x00, 0x2e, 0x4e, 0x03, 0x00, 0x04,
+0x48, 0x00, 0x00, 0x3a, 0x00, 0x03, 0x80, 0x40, 0x50, 0x7f, 0x80, 0x0c, 0x58, 0x13, 0x80, 0x00,
+0x49, 0xff, 0xec, 0x3e, 0x50, 0x03, 0x00, 0x0e, 0x04, 0x23, 0x80, 0x00, 0x3a, 0x10, 0x04, 0x00,
+0x40, 0x10, 0x88, 0x01, 0x4e, 0x14, 0x00, 0x2c, 0x50, 0x43, 0x00, 0x0a, 0x3a, 0x32, 0x0c, 0x00,
+0x3a, 0x20, 0x08, 0x00, 0x40, 0x11, 0x88, 0x00, 0x3a, 0x10, 0x04, 0x20, 0x01, 0xe3, 0x00, 0x05,
+0x44, 0x50, 0x00, 0xff, 0x04, 0x13, 0x80, 0x00, 0x50, 0x4f, 0x7f, 0xff, 0x4d, 0xe2, 0x80, 0x04,
+0x10, 0x43, 0x00, 0x05, 0x3a, 0x40, 0x10, 0x00, 0x40, 0x12, 0x04, 0x01, 0x4e, 0x14, 0x00, 0x06,
+0x01, 0xe3, 0x00, 0x05, 0x4f, 0xe3, 0xff, 0xe6, 0x00, 0x03, 0x00, 0x05, 0x10, 0x03, 0x00, 0x2e,
+0x4e, 0x03, 0x00, 0x06, 0x10, 0x03, 0x00, 0x2d, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x00, 0x03, 0xe8,
+0x40, 0x10, 0x80, 0x17, 0x44, 0x3f, 0xff, 0x80, 0x10, 0x33, 0x00, 0x2d, 0x50, 0x03, 0x00, 0x14,
+0x49, 0x00, 0x21, 0xee, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x1c, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x54, 0x00, 0x00, 0xff,
+0x14, 0x0f, 0x80, 0x01, 0x44, 0x30, 0x00, 0x00, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01,
+0x50, 0x2f, 0x80, 0x0e, 0x44, 0x90, 0x00, 0x00, 0x12, 0x31, 0x00, 0x00, 0x59, 0xc4, 0x80, 0x00,
+0x49, 0xf7, 0xed, 0xf2, 0x50, 0x8f, 0x80, 0x08, 0x48, 0x00, 0x01, 0x0a, 0x49, 0xff, 0xe7, 0x3e,
+0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01, 0x44, 0x20, 0x00, 0x00, 0x49, 0xf7, 0xeb, 0xf2,
+0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0x81, 0x02, 0x49, 0xff, 0xf5, 0x8c, 0x50, 0x60, 0x00, 0x10,
+0x4e, 0x03, 0x00, 0x0e, 0x3c, 0x0d, 0xf7, 0xec, 0x04, 0x20, 0x00, 0x00, 0x4e, 0x23, 0x00, 0xf6,
+0x44, 0x10, 0x00, 0x0a, 0x49, 0x00, 0x21, 0xac, 0x48, 0x00, 0x00, 0xf0, 0x04, 0x70, 0x00, 0x02,
+0x44, 0x10, 0x00, 0x10, 0x12, 0x10, 0x00, 0x0b, 0x14, 0x70, 0x00, 0x06, 0x02, 0x03, 0x80, 0x01,
+0x41, 0xe0, 0x34, 0x09, 0x50, 0x3f, 0x7f, 0xfe, 0x54, 0x51, 0x80, 0xff, 0x11, 0xe3, 0x00, 0x04,
+0x5c, 0xf2, 0x80, 0x02, 0x4e, 0xf2, 0x00, 0x44, 0x03, 0xe3, 0x80, 0x01, 0x54, 0x5f, 0x1e, 0x00,
+0x40, 0x42, 0xa4, 0x09, 0x54, 0x22, 0x00, 0x08, 0x10, 0x43, 0x00, 0x05, 0x4e, 0x23, 0x00, 0x06,
+0x58, 0x20, 0x80, 0x00, 0x48, 0x00, 0x00, 0x08, 0x50, 0x93, 0x80, 0x10, 0x14, 0x93, 0x00, 0x06,
+0x40, 0x20, 0x84, 0x08, 0x00, 0x03, 0x00, 0x05, 0x54, 0x30, 0x00, 0x01, 0x4e, 0x32, 0x00, 0x0a,
+0x40, 0x43, 0x88, 0x00, 0x50, 0x11, 0x00, 0x10, 0x14, 0x43, 0x00, 0x03, 0x40, 0x20, 0x80, 0x13,
+0x01, 0xe3, 0x00, 0x05, 0x54, 0x5f, 0x00, 0x02, 0x4e, 0x52, 0x00, 0x0a, 0x40, 0x33, 0x88, 0x00,
+0x14, 0x33, 0x00, 0x04, 0x50, 0x21, 0x00, 0x08, 0x40, 0x21, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05,
+0x54, 0x00, 0x80, 0x04, 0x4e, 0x02, 0x00, 0x0a, 0x40, 0x53, 0x88, 0x00, 0x50, 0x41, 0x00, 0x18,
+0x14, 0x53, 0x00, 0x05, 0x40, 0x22, 0x00, 0x13, 0x12, 0x23, 0x00, 0x03, 0x00, 0x23, 0x00, 0x04,
+0x44, 0x50, 0x00, 0x02, 0x4c, 0x22, 0xc0, 0x56, 0x00, 0x33, 0x80, 0x06, 0x02, 0x13, 0x00, 0x03,
+0x55, 0xe1, 0x80, 0x40, 0x40, 0x4f, 0x78, 0x1a, 0x40, 0x41, 0x78, 0x1b, 0x40, 0x53, 0x84, 0x00,
+0x40, 0x02, 0x90, 0x00, 0x42, 0x50, 0x00, 0x09, 0x14, 0x53, 0x00, 0x07, 0x00, 0x33, 0x80, 0x06,
+0x54, 0x41, 0x80, 0x3f, 0x41, 0xe2, 0x90, 0x00, 0x40, 0x3f, 0x08, 0x09, 0x40, 0x31, 0x88, 0x08,
+0x10, 0x43, 0x00, 0x01, 0x14, 0x33, 0x00, 0x08, 0x44, 0x40, 0x00, 0x00, 0x02, 0x23, 0x80, 0x00,
+0x40, 0x03, 0x88, 0x00, 0x41, 0xe0, 0x0c, 0x01, 0x13, 0xe3, 0x00, 0x01, 0x44, 0x30, 0x00, 0x08,
+0x00, 0x13, 0x80, 0x07, 0x10, 0x43, 0x00, 0x2f, 0x40, 0x20, 0x88, 0x09, 0x10, 0x23, 0x00, 0x30,
+0x02, 0x02, 0x80, 0x00, 0x54, 0x20, 0x00, 0x0c, 0x12, 0x03, 0x00, 0x15, 0x4c, 0x21, 0xc0, 0x08,
+0x50, 0x03, 0x7f, 0xf0, 0x49, 0xff, 0xfb, 0xae, 0x48, 0x00, 0x00, 0x48, 0x4e, 0x23, 0x00, 0x08,
+0x50, 0x03, 0x7f, 0xf0, 0x49, 0xff, 0xfc, 0x7c, 0x48, 0x00, 0x00, 0x40, 0x44, 0x00, 0x00, 0x04,
+0x4c, 0x20, 0x40, 0x36, 0x50, 0x03, 0x7f, 0xf0, 0x49, 0xff, 0xfd, 0xe2, 0x48, 0x00, 0x00, 0x36,
+0x44, 0x50, 0x00, 0x03, 0x4c, 0x22, 0xc0, 0x2c, 0x05, 0xe3, 0x00, 0x06, 0x44, 0x20, 0x00, 0x06,
+0x50, 0x1f, 0x00, 0x02, 0x58, 0x04, 0x00, 0x00, 0x49, 0xf7, 0xe1, 0xdc, 0x00, 0x03, 0x80, 0x08,
+0x49, 0xff, 0xf4, 0xa4, 0x14, 0x03, 0x00, 0x09, 0x50, 0x03, 0x7f, 0xf0, 0x02, 0x14, 0x80, 0x00,
+0x12, 0x13, 0x00, 0x15, 0x02, 0x44, 0x80, 0x04, 0x12, 0x43, 0x00, 0x14, 0x02, 0x24, 0x80, 0x05,
+0x12, 0x23, 0x00, 0x16, 0x49, 0x00, 0x22, 0x04, 0x50, 0x03, 0x7f, 0xf0, 0x44, 0x10, 0x00, 0x01,
+0x49, 0xff, 0xf5, 0xa4, 0x49, 0xff, 0xe6, 0x42, 0x48, 0x00, 0x00, 0x08, 0x50, 0x03, 0x7f, 0xf0,
+0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf5, 0x9a, 0x51, 0xce, 0x00, 0x01, 0x02, 0x34, 0x00, 0x03,
+0x40, 0xfe, 0x0c, 0x06, 0x4e, 0xf3, 0xfe, 0xf4, 0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x03, 0x49, 0xff, 0xdb, 0x76, 0x46, 0x00, 0x02, 0x10, 0x58, 0x00, 0x00, 0x04,
+0x49, 0xff, 0xdb, 0x96, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xca, 0x70, 0x44, 0x20, 0x01, 0x93, 0x49, 0xff, 0xd2, 0xf0, 0x48, 0x00, 0x00, 0x00,
+0x4e, 0x13, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xca, 0x70, 0x44, 0x20, 0x01, 0x94,
+0x49, 0xff, 0xd2, 0xe4, 0x48, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x01, 0x5c, 0xf1, 0x00, 0x07,
+0x4e, 0xf3, 0x00, 0x1c, 0x00, 0x40, 0x00, 0x02, 0x44, 0x50, 0x00, 0x50, 0x4c, 0x42, 0xc0, 0x16,
+0x00, 0x50, 0x00, 0x03, 0x45, 0xe0, 0x00, 0x6f, 0x4c, 0x5f, 0x40, 0x10, 0x00, 0x20, 0x00, 0x04,
+0x44, 0x50, 0x00, 0x9a, 0x4c, 0x22, 0xc0, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x10, 0x00, 0x80, 0x00,
+0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x5f, 0xdf, 0xb4, 0x04, 0x12, 0x80, 0x00,
+0x44, 0x20, 0x00, 0x00, 0x14, 0x20, 0x80, 0x00, 0x58, 0x32, 0x80, 0x00, 0x04, 0x42, 0x80, 0x00,
+0x58, 0x11, 0x00, 0x00, 0x10, 0x22, 0x00, 0x04, 0x58, 0x41, 0x00, 0x00, 0x04, 0x02, 0x80, 0x00,
+0x10, 0x20, 0x00, 0x05, 0x04, 0x21, 0x80, 0x00, 0x40, 0x00, 0x8c, 0x08, 0x40, 0x51, 0x00, 0x00,
+0x10, 0x12, 0x80, 0x06, 0x50, 0x10, 0x80, 0x01, 0x04, 0x21, 0x80, 0x00, 0x40, 0x51, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x08, 0x10, 0x42, 0x80, 0x07, 0x4c, 0x10, 0x7f, 0xee, 0x4a, 0x00, 0x78, 0x20,
+0x2e, 0x00, 0x02, 0x85, 0x4e, 0x02, 0x00, 0x4e, 0x46, 0x36, 0x04, 0x00, 0x04, 0x41, 0x80, 0x02,
+0x58, 0x11, 0x80, 0x00, 0x42, 0x22, 0x5c, 0x08, 0x14, 0x21, 0x80, 0x02, 0x04, 0x50, 0x80, 0x00,
+0x46, 0x00, 0x08, 0x00, 0x40, 0x32, 0x80, 0x02, 0x4e, 0x33, 0xff, 0xfa, 0x46, 0x56, 0x04, 0x00,
+0x58, 0x52, 0x80, 0x08, 0x04, 0x02, 0x80, 0x00, 0x46, 0x18, 0x00, 0x21, 0x58, 0x20, 0x00, 0x04,
+0x14, 0x22, 0x80, 0x00, 0x58, 0x10, 0x81, 0x00, 0x04, 0x42, 0x80, 0x00, 0x46, 0x28, 0x00, 0x20,
+0x58, 0x02, 0x00, 0x08, 0x14, 0x02, 0x80, 0x00, 0x04, 0x42, 0x80, 0x00, 0x58, 0x02, 0x00, 0x10,
+0x14, 0x02, 0x80, 0x00, 0x04, 0x42, 0x80, 0x00, 0x58, 0x02, 0x00, 0x03, 0x14, 0x02, 0x80, 0x00,
+0x44, 0x4f, 0xff, 0x9f, 0x04, 0x00, 0x80, 0x00, 0x40, 0x50, 0x10, 0x02, 0x14, 0x50, 0x80, 0x00,
+0x04, 0x00, 0x80, 0x00, 0x42, 0x50, 0x18, 0x09, 0x14, 0x50, 0x80, 0x00, 0x04, 0x51, 0x00, 0x00,
+0x40, 0x42, 0x88, 0x09, 0x40, 0x42, 0x08, 0x08, 0x14, 0x41, 0x00, 0x00, 0x3e, 0x30, 0x02, 0x85,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x2e, 0x27, 0xf8, 0x5d, 0x58, 0x60, 0x00, 0x00,
+0x4e, 0x22, 0x00, 0x30, 0x2e, 0x07, 0xf8, 0x5c, 0x4e, 0x02, 0x00, 0x2c, 0x2e, 0x57, 0xe3, 0x45,
+0x44, 0x10, 0x00, 0x01, 0x4c, 0x50, 0x80, 0x26, 0x2e, 0x47, 0xe3, 0x46, 0x4c, 0x40, 0x80, 0x22,
+0x2f, 0xe7, 0xe2, 0x1c, 0x44, 0x50, 0x00, 0x03, 0x4d, 0xe2, 0x80, 0x1c, 0x44, 0x50, 0x00, 0x75,
+0x4c, 0x62, 0x80, 0x04, 0x49, 0xff, 0xe5, 0x50, 0x2e, 0x47, 0xe2, 0x18, 0x44, 0x10, 0x00, 0x01,
+0x4c, 0x40, 0xc0, 0x10, 0x44, 0x50, 0x00, 0x75, 0x4c, 0x62, 0x80, 0x0c, 0x2e, 0x27, 0xf8, 0x5e,
+0x4e, 0x23, 0x00, 0x08, 0x49, 0xf7, 0xdc, 0xfc, 0x4e, 0x03, 0x00, 0x04, 0x49, 0xff, 0xd8, 0x5a,
+0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x2e, 0x27, 0xf8, 0x5d, 0x4e, 0x22, 0x00, 0x14, 0x2e, 0x17, 0xf8, 0x5c, 0x4e, 0x12, 0x00, 0x10,
+0x44, 0x50, 0x00, 0x75, 0x4c, 0x02, 0x80, 0x0c, 0x49, 0xff, 0xec, 0xba, 0x2e, 0x07, 0xe2, 0x18,
+0x44, 0x40, 0x00, 0x01, 0x4c, 0x02, 0x40, 0x04, 0x49, 0xff, 0xd7, 0xf6, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x04, 0x10, 0x00, 0x02,
+0x00, 0x60, 0x80, 0x06, 0x50, 0x80, 0x80, 0x20, 0x4e, 0x62, 0x00, 0x0c, 0x04, 0x24, 0x00, 0x01,
+0x04, 0x14, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x14, 0x20, 0x80, 0x00, 0x48, 0x00, 0x00, 0x42,
+0x44, 0x00, 0x00, 0x14, 0x00, 0xa0, 0x80, 0x07, 0x49, 0xf7, 0xe6, 0x28, 0x44, 0x50, 0x0f, 0xff,
+0x58, 0x90, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x32,
+0x49, 0xf7, 0xe5, 0xee, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14, 0x58, 0x70, 0x00, 0x00,
+0x49, 0xf7, 0xe0, 0x5c, 0x44, 0x30, 0x00, 0x14, 0x44, 0x2f, 0xe0, 0x00, 0x44, 0x10, 0x00, 0x06,
+0x12, 0x33, 0x80, 0x00, 0x12, 0x23, 0x80, 0x01, 0x10, 0x13, 0x80, 0x04, 0x10, 0xa3, 0x80, 0x05,
+0x50, 0x73, 0x80, 0x0c, 0x04, 0x54, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00, 0x14, 0x53, 0x80, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x04, 0x04, 0x00, 0x00, 0x58, 0x33, 0x00, 0x00, 0x04, 0x40, 0x00, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x14, 0x43, 0x80, 0x01, 0x49, 0xf7, 0xe9, 0xf4, 0x58, 0x03, 0x00, 0x00,
+0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x2e, 0x50, 0x02, 0x85,
+0x44, 0x90, 0x00, 0x01, 0x4c, 0x54, 0x80, 0x72, 0x46, 0x28, 0x00, 0x20, 0x04, 0x71, 0x00, 0x00,
+0x47, 0xe8, 0x00, 0x21, 0x58, 0x83, 0x80, 0x03, 0x14, 0x81, 0x00, 0x00, 0x59, 0xef, 0x01, 0x00,
+0x04, 0x0f, 0x00, 0x00, 0x46, 0x76, 0x04, 0x00, 0x58, 0x60, 0x00, 0x40, 0x14, 0x6f, 0x00, 0x00,
+0x44, 0x80, 0x17, 0xc4, 0x04, 0x1f, 0x00, 0x00, 0x58, 0x50, 0x80, 0x60, 0x14, 0x5f, 0x00, 0x00,
+0x58, 0x04, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x04, 0x43, 0x80, 0x02, 0x46, 0x66, 0x04, 0x00,
+0x58, 0x32, 0x00, 0x10, 0x14, 0x33, 0x80, 0x02, 0x58, 0x63, 0x00, 0x04, 0x04, 0x23, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x0a, 0x40, 0x11, 0x24, 0x04, 0x14, 0x13, 0x00, 0x00, 0x46, 0x78, 0x00, 0x20,
+0x04, 0x53, 0x00, 0x00, 0x58, 0x73, 0x80, 0xfc, 0x58, 0x42, 0x80, 0x02, 0x14, 0x43, 0x00, 0x00,
+0x4b, 0xe0, 0x20, 0x01, 0x04, 0x33, 0x00, 0x00, 0x44, 0x00, 0x00, 0x04, 0x58, 0x21, 0x80, 0x10,
+0x14, 0x23, 0x00, 0x00, 0x04, 0x13, 0x00, 0x00, 0x40, 0x50, 0x80, 0x04, 0x14, 0x53, 0x00, 0x00,
+0x4b, 0xe0, 0x20, 0x01, 0x04, 0x43, 0x00, 0x00, 0x58, 0x32, 0x00, 0x08, 0x14, 0x33, 0x00, 0x00,
+0x58, 0x04, 0x80, 0x00, 0x04, 0x23, 0x80, 0x00, 0x58, 0x11, 0x00, 0x0f, 0x14, 0x13, 0x80, 0x00,
+0x04, 0x43, 0x80, 0x00, 0x40, 0x32, 0x10, 0x09, 0x40, 0x31, 0x90, 0x08, 0x14, 0x33, 0x80, 0x00,
+0x4b, 0xe0, 0x20, 0x01, 0x04, 0x23, 0x80, 0x00, 0x58, 0x11, 0x00, 0x0f, 0x14, 0x13, 0x80, 0x00,
+0x49, 0xff, 0xdf, 0x56, 0x3e, 0x90, 0x02, 0x85, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0xaf, 0xe2, 0x00, 0x3e, 0x6f, 0xdf, 0x5c,
+0x3e, 0x7f, 0xe3, 0x25, 0x3f, 0xce, 0xe5, 0x98, 0x04, 0x25, 0x00, 0x00, 0x44, 0x50, 0x00, 0x02,
+0x3c, 0x2f, 0xf8, 0x81, 0x14, 0x05, 0x00, 0x00, 0x4c, 0x02, 0x80, 0x08, 0x44, 0x50, 0x00, 0x05,
+0x4c, 0x02, 0xc0, 0x76, 0x48, 0x00, 0x00, 0x5c, 0x04, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0xa4, 0x49, 0xf7, 0xdf, 0x92, 0x00, 0x03, 0x80, 0x00, 0x3e, 0x9f, 0xe4, 0x8c,
+0x49, 0xff, 0xf1, 0xc8, 0x00, 0x03, 0x80, 0x00, 0x44, 0x80, 0x00, 0x00, 0x49, 0xff, 0xf1, 0x64,
+0x49, 0xff, 0xff, 0x54, 0x04, 0x03, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01, 0x10, 0x30, 0x00, 0x9c,
+0x44, 0x00, 0x00, 0x00, 0x04, 0x53, 0x00, 0x00, 0x10, 0x32, 0x80, 0x9e, 0x04, 0x43, 0x00, 0x00,
+0x10, 0x32, 0x00, 0x9d, 0x04, 0x23, 0x00, 0x00, 0x10, 0x01, 0x00, 0x9f, 0x04, 0x13, 0x00, 0x00,
+0x10, 0x30, 0x80, 0xa0, 0x04, 0x53, 0x00, 0x00, 0x10, 0x02, 0x80, 0xa1, 0x49, 0xff, 0xf2, 0xa6,
+0x49, 0xff, 0xf1, 0xac, 0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x1f, 0x22, 0x49, 0xff, 0xf7, 0xbe,
+0x49, 0xff, 0xfd, 0xa2, 0x49, 0x00, 0x22, 0x0c, 0x49, 0xff, 0xd3, 0x50, 0x49, 0xff, 0xfd, 0xf6,
+0x49, 0x00, 0x0f, 0xc8, 0x58, 0x04, 0x80, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x50, 0x14, 0x00, 0x01,
+0x10, 0x84, 0x80, 0x2f, 0x44, 0x30, 0x00, 0x04, 0x54, 0x80, 0x80, 0xff, 0x50, 0x94, 0x80, 0x30,
+0x4c, 0x81, 0xff, 0xf2, 0x44, 0x00, 0x00, 0x05, 0x48, 0x00, 0x00, 0x1a, 0x01, 0xe3, 0x80, 0x00,
+0x4f, 0xe2, 0x00, 0x16, 0x3c, 0x5d, 0xf8, 0xca, 0x44, 0x20, 0x00, 0x00, 0x50, 0x42, 0xff, 0xff,
+0x10, 0x23, 0x80, 0x00, 0x5c, 0xf2, 0x00, 0x03, 0x4e, 0xf3, 0x00, 0x04, 0x48, 0x00, 0x00, 0x06,
+0x44, 0x30, 0x00, 0x00, 0x3c, 0x3f, 0xf8, 0xca, 0x44, 0x00, 0x00, 0x04, 0x04, 0x55, 0x00, 0x00,
+0x4c, 0x02, 0xff, 0x7c, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x60, 0x00, 0x00,
+0x50, 0x13, 0x80, 0x20, 0x00, 0x20, 0x80, 0x00, 0x4e, 0x23, 0x00, 0x36, 0x05, 0xe0, 0x80, 0x01,
+0x40, 0x51, 0x78, 0x06, 0x3e, 0x57, 0xe3, 0x25, 0x04, 0x00, 0x80, 0x01, 0x44, 0x20, 0x00, 0x03,
+0x3c, 0x0f, 0xf8, 0xca, 0x4c, 0x01, 0x40, 0x06, 0x00, 0x10, 0x80, 0x01, 0x3e, 0x17, 0xe3, 0x2c,
+0x3c, 0x0d, 0xf8, 0x80, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x02, 0xc0, 0x0a, 0x44, 0x10, 0x00, 0x6a,
+0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x05,
+0x4c, 0x02, 0xc0, 0x0a, 0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x6a, 0x44, 0x20, 0x00, 0x00,
+0x49, 0xf8, 0x03, 0xf8, 0x44, 0x00, 0x00, 0x03, 0x49, 0xff, 0xff, 0x2c, 0x44, 0x10, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x12, 0x3c, 0x5d, 0xf8, 0x80, 0x45, 0xe0, 0x00, 0x04, 0x4c, 0x5f, 0x00, 0x08,
+0x46, 0x1c, 0x00, 0x00, 0x58, 0x10, 0x80, 0x01, 0x48, 0x00, 0x00, 0x06, 0x49, 0x00, 0x15, 0xee,
+0x58, 0x10, 0x00, 0x00, 0x00, 0x23, 0x80, 0x0b, 0x54, 0x01, 0x00, 0x01, 0x4e, 0x02, 0x00, 0x08,
+0x58, 0x03, 0x00, 0x00, 0x49, 0x00, 0x02, 0x12, 0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x3c, 0x2d, 0xf8, 0x80, 0x4e, 0x23, 0x00, 0x0c, 0x44, 0x00, 0x00, 0x01,
+0x44, 0x10, 0x00, 0x6a, 0x49, 0xf8, 0x03, 0xbe, 0x44, 0x00, 0x00, 0x03, 0x49, 0xff, 0xfe, 0xf2,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x0f, 0x6e, 0x49, 0x00, 0x1e, 0x26, 0x49, 0x00, 0x0f, 0x1c,
+0x49, 0xff, 0xfd, 0x60, 0x44, 0x00, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xdc, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x50, 0x00, 0x00, 0x3e, 0x57, 0xe3, 0x25, 0x3c, 0x1f, 0xf8, 0x81,
+0x3c, 0x1f, 0xf8, 0x80, 0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xfe, 0xc4, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x51, 0xff, 0xff, 0xf8,
+0x44, 0x60, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x04, 0x14, 0x6f, 0x80, 0x01, 0x49, 0xf7, 0xd3, 0x48,
+0x46, 0x00, 0x20, 0x00, 0x14, 0x60, 0x00, 0x00, 0x44, 0x20, 0x2d, 0x0c, 0x04, 0x0f, 0x80, 0x01,
+0x3c, 0x2f, 0xff, 0xb9, 0x49, 0xf7, 0xd3, 0x48, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xff, 0xb0,
+0x44, 0x00, 0x00, 0x0c, 0x04, 0x83, 0x00, 0x02, 0x49, 0xf7, 0xe4, 0x00, 0x44, 0x50, 0x0f, 0xff,
+0x58, 0x70, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x0a, 0x3e, 0x0f, 0xca, 0x90, 0x49, 0xff, 0xcf, 0x96,
+0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x2e, 0x49, 0xf7, 0xe3, 0xc2, 0x44, 0x50, 0x00, 0x0c,
+0x44, 0x4f, 0xe0, 0x00, 0x44, 0x3f, 0xff, 0xef, 0x12, 0x50, 0x00, 0x00, 0x12, 0x40, 0x00, 0x01,
+0x10, 0x30, 0x00, 0x04, 0x50, 0x20, 0x00, 0x08, 0x00, 0x84, 0x00, 0x07, 0x44, 0x60, 0x00, 0x00,
+0x10, 0x80, 0x00, 0x05, 0x10, 0x61, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
+0x58, 0x10, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xe7, 0xd4, 0x44, 0x00, 0x00, 0x00,
+0x49, 0x00, 0x1f, 0x3a, 0x3e, 0x67, 0xe3, 0x30, 0x49, 0xff, 0xff, 0xa0, 0x44, 0x00, 0x00, 0x00,
+0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x10, 0x00, 0x02,
+0x58, 0x60, 0x00, 0x00, 0x00, 0x20, 0x80, 0x04, 0x3e, 0x0f, 0xca, 0xb4, 0x44, 0x80, 0x00, 0x00,
+0x00, 0x50, 0x00, 0x00, 0x50, 0x34, 0x00, 0x01, 0x4c, 0x51, 0x40, 0x1e, 0x04, 0x10, 0x00, 0x01,
+0x4e, 0x12, 0x00, 0x1a, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01, 0x58, 0x70, 0x00, 0x00,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0x80, 0x1c, 0x46, 0x2c, 0x00, 0x00, 0x58, 0x51, 0x00, 0x9a,
+0x4c, 0x72, 0x80, 0x16, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf1, 0xae,
+0x48, 0x00, 0x00, 0x0e, 0x54, 0x81, 0x80, 0xff, 0x44, 0x50, 0x00, 0x04, 0x50, 0x00, 0x00, 0x08,
+0x4c, 0x82, 0xff, 0xd8, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x5c, 0xf4, 0x00, 0x04,
+0x4e, 0xf3, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf1, 0x96,
+0x58, 0x03, 0x80, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x10, 0x30, 0x00, 0x08,
+0x12, 0x10, 0x00, 0x00, 0x44, 0x3f, 0xe0, 0x00, 0x44, 0x1f, 0xff, 0xed, 0x12, 0x30, 0x00, 0x01,
+0x10, 0x10, 0x00, 0x04, 0x10, 0x20, 0x00, 0x05, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x51, 0xff, 0xff, 0xf8, 0x10, 0x0f, 0x80, 0x04, 0x44, 0x00, 0x00, 0x0d, 0x49, 0xf7, 0xe3, 0x5e,
+0x44, 0x50, 0x0f, 0xff, 0x58, 0x60, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03,
+0x48, 0x00, 0x00, 0x2c, 0x49, 0xf7, 0xe3, 0x24, 0x44, 0x5f, 0xe0, 0x00, 0x44, 0x4f, 0xff, 0xed,
+0x44, 0x30, 0x00, 0x00, 0x44, 0x10, 0x00, 0x10, 0x44, 0x20, 0x00, 0x31, 0x12, 0x10, 0x00, 0x00,
+0x12, 0x50, 0x00, 0x01, 0x10, 0x40, 0x00, 0x04, 0x10, 0x30, 0x00, 0x05, 0x10, 0x20, 0x00, 0x08,
+0x50, 0x1f, 0x80, 0x04, 0x44, 0x20, 0x00, 0x01, 0x50, 0x00, 0x00, 0x0c, 0x49, 0xf7, 0xdd, 0x6a,
+0x44, 0x00, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00,
+0x49, 0xf7, 0xe7, 0x30, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x90, 0x00, 0xff,
+0x44, 0x00, 0x00, 0x10, 0x40, 0x80, 0x80, 0x10, 0x49, 0xf7, 0xe3, 0x18, 0x44, 0x50, 0x0f, 0xff,
+0x58, 0x70, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x40,
+0x49, 0xf7, 0xe2, 0xde, 0x58, 0x60, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10,
+0x49, 0xf7, 0xdd, 0x4c, 0x50, 0x33, 0x00, 0x0c, 0x4e, 0x92, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x01, 0x10, 0x01, 0x80, 0x00, 0x10, 0x81, 0x80, 0x01,
+0x2e, 0x07, 0xe3, 0x2f, 0x44, 0x50, 0x00, 0x22, 0x50, 0x10, 0x00, 0x01, 0x54, 0x00, 0x80, 0xff,
+0x44, 0x40, 0x00, 0x10, 0x44, 0x3f, 0xe0, 0x00, 0x44, 0x2f, 0xff, 0xed, 0x3e, 0x07, 0xe3, 0x2f,
+0x12, 0x33, 0x00, 0x01, 0x10, 0x23, 0x00, 0x04, 0x10, 0x03, 0x00, 0x05, 0x10, 0x53, 0x00, 0x08,
+0x44, 0x00, 0x00, 0x00, 0x12, 0x43, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xe6, 0xd6, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x50, 0x20, 0x80, 0x0c,
+0x58, 0xa0, 0x00, 0x00, 0x40, 0x01, 0x00, 0x13, 0x58, 0x70, 0x80, 0x00, 0x49, 0xf7, 0xe2, 0xbe,
+0x44, 0x50, 0x0f, 0xff, 0x58, 0x80, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03,
+0x48, 0x00, 0x00, 0x48, 0x49, 0xf7, 0xe2, 0x84, 0x58, 0x60, 0x00, 0x00, 0x54, 0x03, 0x80, 0x03,
+0x4e, 0x02, 0x00, 0x08, 0x40, 0x73, 0x88, 0x09, 0x40, 0x73, 0x88, 0x08, 0x50, 0x73, 0x80, 0x04,
+0x50, 0x93, 0x80, 0x0c, 0x44, 0x10, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x49, 0xf7, 0xdc, 0xe4, 0x58, 0x23, 0x80, 0x00, 0x58, 0x15, 0x00, 0x00, 0x3e, 0x7f, 0xe3, 0x2e,
+0x50, 0x03, 0x00, 0x0c, 0x49, 0xf7, 0xdc, 0xc6, 0x00, 0x23, 0x80, 0x00, 0x44, 0x30, 0x00, 0x13,
+0x44, 0x0f, 0xe0, 0x00, 0x44, 0x1f, 0xff, 0xed, 0x10, 0x33, 0x00, 0x08, 0x12, 0x03, 0x00, 0x01,
+0x10, 0x13, 0x00, 0x04, 0x10, 0x23, 0x00, 0x05, 0x44, 0x00, 0x00, 0x00, 0x12, 0x93, 0x00, 0x00,
+0x58, 0x24, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xe6, 0x7a,
+0x00, 0x53, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x50, 0x42, 0x80, 0x01, 0x10, 0x43, 0x80, 0x00,
+0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x04, 0x80, 0x00, 0x02,
+0x44, 0x00, 0x00, 0x14, 0x58, 0x90, 0x80, 0x00, 0x00, 0xa4, 0x00, 0x07, 0x49, 0xf7, 0xe2, 0x5e,
0x44, 0x50, 0x0f, 0xff, 0x58, 0x70, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03,
-0x48, 0x00, 0x00, 0x40, 0x49, 0xf7, 0xe3, 0x24, 0x58, 0x60, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xdd, 0x92, 0x50, 0x33, 0x00, 0x0c, 0x4e, 0x92, 0x00, 0x06,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x01, 0x10, 0x01, 0x80, 0x00,
-0x10, 0x81, 0x80, 0x01, 0x2e, 0x07, 0xe5, 0x8f, 0x44, 0x50, 0x00, 0x22, 0x50, 0x10, 0x00, 0x01,
-0x54, 0x00, 0x80, 0xff, 0x44, 0x40, 0x00, 0x10, 0x44, 0x3f, 0xe0, 0x00, 0x44, 0x2f, 0xff, 0xed,
-0x3e, 0x07, 0xe5, 0x8f, 0x12, 0x33, 0x00, 0x01, 0x10, 0x23, 0x00, 0x04, 0x10, 0x03, 0x00, 0x05,
-0x10, 0x53, 0x00, 0x08, 0x44, 0x00, 0x00, 0x00, 0x12, 0x43, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
-0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xe7, 0x1c, 0x44, 0x00, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x50, 0x20, 0x80, 0x0c, 0x58, 0xa0, 0x00, 0x00, 0x40, 0x01, 0x00, 0x13, 0x58, 0x70, 0x80, 0x00,
-0x49, 0xf7, 0xe3, 0x04, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x80, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06,
-0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x48, 0x49, 0xf7, 0xe2, 0xca, 0x58, 0x60, 0x00, 0x00,
-0x54, 0x03, 0x80, 0x03, 0x4e, 0x02, 0x00, 0x08, 0x40, 0x73, 0x88, 0x09, 0x40, 0x73, 0x88, 0x08,
-0x50, 0x73, 0x80, 0x04, 0x50, 0x93, 0x80, 0x0c, 0x44, 0x10, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x49, 0xf7, 0xdd, 0x2a, 0x58, 0x23, 0x80, 0x00, 0x58, 0x15, 0x00, 0x00,
-0x3e, 0x7f, 0xe5, 0x8e, 0x50, 0x03, 0x00, 0x0c, 0x49, 0xf7, 0xdd, 0x0c, 0x00, 0x23, 0x80, 0x00,
-0x44, 0x30, 0x00, 0x13, 0x44, 0x0f, 0xe0, 0x00, 0x44, 0x1f, 0xff, 0xed, 0x10, 0x33, 0x00, 0x08,
-0x12, 0x03, 0x00, 0x01, 0x10, 0x13, 0x00, 0x04, 0x10, 0x23, 0x00, 0x05, 0x44, 0x00, 0x00, 0x00,
-0x12, 0x93, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00,
-0x49, 0xf7, 0xe6, 0xc0, 0x00, 0x53, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x50, 0x42, 0x80, 0x01,
-0x10, 0x43, 0x80, 0x00, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x04, 0x80, 0x00, 0x02, 0x44, 0x00, 0x00, 0x14, 0x58, 0x90, 0x80, 0x00, 0x00, 0xa4, 0x00, 0x07,
-0x49, 0xf7, 0xe2, 0xa4, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x70, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06,
-0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x32, 0x49, 0xf7, 0xe2, 0x6a, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x14, 0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xdc, 0xd8, 0x44, 0x40, 0x00, 0x14,
-0x44, 0x3f, 0xe0, 0x00, 0x44, 0x2f, 0xff, 0xed, 0x44, 0x00, 0x00, 0x00, 0x10, 0x23, 0x00, 0x04,
-0x12, 0x43, 0x00, 0x00, 0x12, 0x33, 0x00, 0x01, 0x10, 0xa3, 0x00, 0x05, 0x10, 0x03, 0x00, 0x08,
-0x50, 0x63, 0x00, 0x0c, 0x00, 0x84, 0x00, 0x09, 0x44, 0x00, 0x00, 0x00, 0x10, 0x83, 0x00, 0x00,
-0x14, 0x93, 0x00, 0x01, 0x58, 0x23, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00,
-0x49, 0xf7, 0xe6, 0x70, 0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0xbc, 0x04, 0x20, 0x00, 0x02, 0x50, 0x61, 0x00, 0x20, 0x04, 0x33, 0x00, 0x00,
-0x04, 0x43, 0x00, 0x01, 0x04, 0x53, 0x00, 0x02, 0x04, 0x61, 0x80, 0x00, 0x41, 0xe2, 0x10, 0x05,
-0x40, 0x13, 0x78, 0x02, 0x41, 0xe2, 0x14, 0x02, 0x40, 0x40, 0xf8, 0x04, 0x14, 0x41, 0x80, 0x00,
-0x00, 0x11, 0x00, 0x0b, 0x54, 0x10, 0x80, 0x01, 0x4e, 0x13, 0x00, 0x06, 0x58, 0x00, 0x80, 0x00,
-0x48, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xff, 0x92, 0x3a, 0x6f, 0x98, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02,
-0x58, 0x60, 0x00, 0x00, 0x50, 0x23, 0x80, 0x20, 0x00, 0x01, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x06,
-0x00, 0x11, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02,
-0x3e, 0x3f, 0xe4, 0x90, 0x41, 0xe0, 0x08, 0x08, 0x40, 0x4f, 0x0c, 0x00, 0x10, 0x12, 0x00, 0x00,
-0x02, 0x51, 0x00, 0x02, 0x44, 0x20, 0x00, 0x01, 0x12, 0x52, 0x00, 0x01, 0x4c, 0x11, 0x40, 0x04,
-0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xea, 0xc8, 0x00, 0x13, 0x80, 0x0b,
-0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xff, 0x56, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x80, 0x00, 0x02,
-0x3e, 0x3f, 0xe6, 0xec, 0x50, 0x54, 0x00, 0x20, 0x00, 0x42, 0x80, 0x00, 0x58, 0x70, 0x00, 0x00,
-0x10, 0x41, 0x80, 0x2c, 0x00, 0x12, 0x80, 0x04, 0x10, 0x11, 0x80, 0x5c, 0x00, 0x02, 0x80, 0x08,
-0x10, 0x01, 0x80, 0x8c, 0x01, 0xe2, 0x80, 0x0c, 0x11, 0xe1, 0x80, 0xbc, 0x00, 0x92, 0x80, 0x04,
-0x00, 0x62, 0x80, 0x00, 0x00, 0x22, 0x80, 0x08, 0x00, 0x12, 0x80, 0x0c, 0x40, 0x44, 0x98, 0x00,
-0x40, 0x32, 0x08, 0x00, 0x40, 0x01, 0x84, 0x00, 0x3e, 0x1e, 0xa6, 0x78, 0x4e, 0x03, 0x00, 0x06,
-0x46, 0x00, 0x02, 0x10, 0x48, 0x00, 0x00, 0x06, 0x46, 0x00, 0x02, 0x10, 0x58, 0x00, 0x00, 0x04,
-0x4b, 0xe0, 0x04, 0x01, 0x3e, 0x6f, 0xe6, 0xec, 0x00, 0x23, 0x00, 0x2c, 0x4e, 0x23, 0x00, 0x06,
-0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf4, 0xe8, 0x50, 0x63, 0x00, 0x30, 0x3e, 0x5f, 0xe7, 0xac,
-0x4c, 0x62, 0xff, 0xf4, 0x00, 0x34, 0x00, 0x0b, 0x55, 0xe1, 0x80, 0x01, 0x4f, 0xe2, 0x00, 0x08,
-0x58, 0x03, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xfa, 0x44, 0x00, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x04, 0x30, 0x00, 0x02, 0x44, 0x40, 0x00, 0x01, 0x50, 0x11, 0x80, 0x20,
-0x00, 0x50, 0x80, 0x00, 0x4c, 0x52, 0x00, 0x06, 0x44, 0x11, 0x00, 0x03, 0x48, 0x00, 0x00, 0x16,
-0x00, 0x10, 0x80, 0x01, 0x3e, 0x2f, 0xe2, 0x1c, 0x4e, 0x12, 0x00, 0x0a, 0x01, 0xe1, 0x00, 0x45,
-0x44, 0x10, 0x00, 0x00, 0x42, 0x4f, 0x18, 0x09, 0x48, 0x00, 0x00, 0x06, 0x00, 0x41, 0x00, 0x45,
-0x58, 0x42, 0x00, 0x40, 0x10, 0x41, 0x00, 0x45, 0x00, 0x21, 0x80, 0x0b, 0x54, 0x31, 0x00, 0x01,
-0x4e, 0x32, 0x00, 0x06, 0x49, 0xff, 0xfe, 0xc4, 0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x04, 0x90, 0x00, 0x02, 0x58, 0x80, 0x00, 0x00, 0x50, 0x74, 0x80, 0x20,
-0x49, 0x00, 0x4e, 0x38, 0x00, 0x13, 0x80, 0x00, 0x3e, 0x6e, 0xad, 0x78, 0x44, 0x00, 0x00, 0x00,
-0x4b, 0xe0, 0x18, 0x01, 0x00, 0x13, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01, 0x4b, 0xe0, 0x18, 0x01,
-0x00, 0x13, 0x80, 0x02, 0x44, 0x00, 0x00, 0x02, 0x4b, 0xe0, 0x18, 0x01, 0x02, 0x13, 0x80, 0x02,
-0x44, 0x00, 0x00, 0x03, 0x4b, 0xe0, 0x18, 0x01, 0x49, 0x00, 0x4d, 0xd0, 0x00, 0x04, 0x80, 0x0b,
-0x54, 0x00, 0x00, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x58, 0x04, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xfe, 0x86, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x90, 0x00, 0x00,
-0x50, 0xa3, 0x80, 0x20, 0x00, 0x55, 0x00, 0x00, 0x02, 0x33, 0x80, 0x00, 0x40, 0x42, 0x94, 0x00,
-0x50, 0x22, 0x00, 0x01, 0x50, 0x11, 0xff, 0xe0, 0x40, 0x01, 0x08, 0x08, 0x4c, 0x10, 0x00, 0x08,
-0x46, 0x1c, 0x00, 0x10, 0x58, 0x10, 0x80, 0x14, 0x48, 0x00, 0x00, 0x4a, 0x50, 0x63, 0x80, 0x24,
-0x49, 0x00, 0x4d, 0xe8, 0x44, 0x80, 0x00, 0x00, 0x3f, 0xce, 0xad, 0x04, 0x48, 0x00, 0x00, 0x36,
-0x00, 0x03, 0x00, 0x01, 0x50, 0x84, 0x00, 0x01, 0x55, 0xe0, 0x00, 0x01, 0x4f, 0xe2, 0x00, 0x08,
-0x00, 0x13, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd7, 0x76, 0x00, 0x23, 0x00, 0x01,
-0x54, 0x11, 0x00, 0x02, 0x4e, 0x12, 0x00, 0x08, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00,
-0x49, 0xff, 0xd7, 0xb2, 0x00, 0x43, 0x00, 0x01, 0x54, 0x32, 0x00, 0x04, 0x4e, 0x32, 0x00, 0x08,
-0x02, 0x13, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd8, 0x1e, 0x01, 0xe3, 0x00, 0x01,
-0x54, 0x5f, 0x00, 0x08, 0x4e, 0x52, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x02, 0x13, 0x00, 0x03,
-0x4b, 0xe0, 0x70, 0x01, 0x50, 0x63, 0x00, 0x08, 0x00, 0x05, 0x00, 0x00, 0x40, 0xf4, 0x00, 0x06,
-0x4e, 0xf3, 0xff, 0xc8, 0x49, 0x00, 0x4d, 0x5a, 0x44, 0x10, 0x00, 0x00, 0x00, 0x33, 0x80, 0x0b,
-0x54, 0x21, 0x80, 0x01, 0x4e, 0x22, 0x00, 0x08, 0x58, 0x04, 0x80, 0x00, 0x49, 0xff, 0xfe, 0x10,
-0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x20, 0x00, 0x02,
-0x00, 0x11, 0x00, 0x20, 0x5c, 0xf0, 0x80, 0x03, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x11, 0x00, 0x03,
-0x48, 0x00, 0x00, 0x06, 0x3e, 0x17, 0xe1, 0xc0, 0x44, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x0b,
-0x54, 0x22, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x06, 0x49, 0xff, 0xfd, 0xea, 0x58, 0x10, 0x00, 0x00,
-0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0x74, 0x50, 0x2f, 0x80, 0x68, 0x10, 0x11, 0x00, 0x07,
-0x10, 0x01, 0x00, 0x09, 0x44, 0x10, 0x00, 0x00, 0x58, 0x0f, 0x80, 0x00, 0x14, 0x2f, 0x80, 0x02,
-0x49, 0xff, 0xfd, 0xce, 0x51, 0xff, 0x80, 0x8c, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x48, 0x00, 0x00, 0x32, 0x49, 0xf7, 0xe2, 0x24, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14,
+0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xdc, 0x92, 0x44, 0x40, 0x00, 0x14, 0x44, 0x3f, 0xe0, 0x00,
+0x44, 0x2f, 0xff, 0xed, 0x44, 0x00, 0x00, 0x00, 0x10, 0x23, 0x00, 0x04, 0x12, 0x43, 0x00, 0x00,
+0x12, 0x33, 0x00, 0x01, 0x10, 0xa3, 0x00, 0x05, 0x10, 0x03, 0x00, 0x08, 0x50, 0x63, 0x00, 0x0c,
+0x00, 0x84, 0x00, 0x09, 0x44, 0x00, 0x00, 0x00, 0x10, 0x83, 0x00, 0x00, 0x14, 0x93, 0x00, 0x01,
+0x58, 0x23, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xe6, 0x2a,
+0x44, 0x00, 0x00, 0x00, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x04, 0x20, 0x00, 0x02, 0x50, 0x61, 0x00, 0x20, 0x04, 0x33, 0x00, 0x00, 0x04, 0x43, 0x00, 0x01,
+0x04, 0x53, 0x00, 0x02, 0x04, 0x61, 0x80, 0x00, 0x41, 0xe2, 0x10, 0x05, 0x40, 0x13, 0x78, 0x02,
+0x41, 0xe2, 0x14, 0x02, 0x40, 0x40, 0xf8, 0x04, 0x14, 0x41, 0x80, 0x00, 0x00, 0x11, 0x00, 0x0b,
+0x54, 0x10, 0x80, 0x01, 0x4e, 0x13, 0x00, 0x06, 0x58, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06,
+0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xff, 0x92, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20,
0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x60, 0x00, 0x00,
-0x50, 0x23, 0x80, 0x20, 0x00, 0x31, 0x00, 0x00, 0x3e, 0x1f, 0xe2, 0x94, 0x4e, 0x32, 0x00, 0x2c,
-0x44, 0x00, 0x00, 0x01, 0x44, 0x40, 0x00, 0x00, 0x10, 0x00, 0x80, 0x26, 0x10, 0x40, 0x80, 0x25,
-0x2f, 0xef, 0xe4, 0x7a, 0x20, 0x31, 0x00, 0x01, 0x40, 0x51, 0xf8, 0x01, 0x50, 0x42, 0x00, 0x1e,
-0x2f, 0xef, 0xe4, 0x7b, 0x42, 0x32, 0x90, 0x24, 0x50, 0x4f, 0x00, 0x38, 0x41, 0xe1, 0x90, 0x16,
-0x2e, 0x57, 0xe4, 0x79, 0x2e, 0x4f, 0xf9, 0xca, 0x40, 0x3f, 0x14, 0x00, 0x40, 0x31, 0x80, 0x10,
-0x10, 0x30, 0x80, 0x28, 0x40, 0xf1, 0x90, 0x07, 0x4e, 0xf2, 0x00, 0x0a, 0x3e, 0x37, 0xf9, 0xca,
-0x48, 0x00, 0x00, 0x06, 0x10, 0x30, 0x80, 0x25, 0x10, 0x30, 0x80, 0x26, 0x00, 0x31, 0x00, 0x02,
-0x4e, 0x32, 0x00, 0x2c, 0x44, 0x30, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x10, 0x30, 0x80, 0x32,
-0x10, 0x50, 0x80, 0x31, 0x2e, 0x0f, 0xe4, 0x7a, 0x20, 0x21, 0x00, 0x03, 0x2f, 0xef, 0xe4, 0x7b,
-0x40, 0x51, 0x00, 0x01, 0x50, 0x31, 0x80, 0x1e, 0x42, 0x22, 0x8c, 0x24, 0x50, 0x0f, 0x00, 0x38,
-0x41, 0xe1, 0x00, 0x16, 0x2e, 0x57, 0xe4, 0x79, 0x2e, 0x3f, 0xf9, 0xc9, 0x40, 0x2f, 0x14, 0x00,
-0x40, 0x21, 0x00, 0x10, 0x10, 0x20, 0x80, 0x33, 0x40, 0xf1, 0x88, 0x07, 0x4e, 0xf2, 0x00, 0x0a,
-0x3e, 0x27, 0xf9, 0xc9, 0x48, 0x00, 0x00, 0x06, 0x10, 0x30, 0x80, 0x31, 0x10, 0x30, 0x80, 0x32,
-0x2e, 0x37, 0xf9, 0xc9, 0x2e, 0x27, 0xf9, 0xca, 0x44, 0x10, 0x00, 0x7f, 0x44, 0x40, 0x00, 0x1e,
-0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xe6, 0xe2, 0x46, 0x48, 0x00, 0x22, 0x04, 0x52, 0x00, 0x07,
-0x46, 0x30, 0x11, 0x10, 0x40, 0x22, 0x8c, 0x04, 0x14, 0x22, 0x00, 0x07, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xf7, 0xd1, 0x6c, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xd1, 0x40, 0x00, 0x13, 0x80, 0x0b,
-0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xfd, 0x2e, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0x44, 0x3e, 0x1f, 0xce, 0x14, 0x58, 0x70, 0x00, 0x00,
-0x44, 0x20, 0x00, 0xb6, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xd9, 0xfc, 0x2e, 0x17, 0xe5, 0x90,
-0x58, 0x6f, 0x80, 0x00, 0x04, 0x83, 0x80, 0x02, 0x4e, 0x12, 0x00, 0x04, 0x48, 0x00, 0x00, 0xa8,
-0x50, 0x24, 0x00, 0x20, 0x00, 0x31, 0x00, 0x00, 0x4e, 0x32, 0x00, 0x06, 0x58, 0x0f, 0x80, 0x00,
-0x48, 0x00, 0x00, 0xb0, 0x44, 0x60, 0x6f, 0x4c, 0x3e, 0x1f, 0xe2, 0x1c, 0x44, 0x20, 0x00, 0x03,
-0x44, 0x00, 0x00, 0x35, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x1f, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x48, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x20, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x50, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x21, 0x44, 0x20, 0x00, 0x0f,
-0x44, 0x00, 0x00, 0x53, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x30, 0x44, 0x20, 0x00, 0x0e,
-0x44, 0x00, 0x00, 0xa0, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x3e, 0x44, 0x20, 0x00, 0x10,
-0x44, 0x00, 0x00, 0xc0, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x4e, 0x44, 0x20, 0x00, 0x07,
-0x44, 0x00, 0x00, 0xd0, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x55, 0x44, 0x20, 0x00, 0x04,
-0x44, 0x00, 0x00, 0xf4, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x59, 0x44, 0x20, 0x00, 0x02,
-0x44, 0x00, 0x00, 0x24, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x5b, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x34, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x5c, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x39, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x5d, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x3b, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x5e, 0x44, 0x20, 0x00, 0x02,
-0x44, 0x00, 0x00, 0x42, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x60, 0x44, 0x20, 0x00, 0x02,
-0x44, 0x00, 0x00, 0x9e, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x62, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0xf2, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x63, 0x44, 0x20, 0x00, 0x03,
-0x44, 0x00, 0x00, 0xf8, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x66, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x01, 0x2e, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe2, 0x67, 0x44, 0x20, 0x00, 0x10,
-0x44, 0x00, 0x01, 0x30, 0x4b, 0xe0, 0x18, 0x01, 0x48, 0x00, 0x00, 0x42, 0x38, 0x90, 0x05, 0x01,
-0x02, 0x41, 0x80, 0x02, 0x54, 0x13, 0x00, 0xff, 0x4c, 0x92, 0x00, 0x10, 0x00, 0x24, 0x00, 0x0b,
-0x54, 0x11, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x7a, 0x58, 0x03, 0x80, 0x00, 0x44, 0x11, 0x00, 0x03,
-0x49, 0xff, 0xfc, 0x5e, 0x48, 0x00, 0x00, 0x72, 0x00, 0x61, 0x80, 0x06, 0x10, 0x62, 0x80, 0x00,
-0x01, 0xe1, 0x00, 0x01, 0x40, 0x50, 0x88, 0x08, 0x3e, 0x9f, 0xe2, 0x1c, 0x40, 0x31, 0x14, 0x00,
-0x50, 0x60, 0x80, 0x01, 0x40, 0x50, 0xa4, 0x00, 0x40, 0xf0, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xd8,
-0x58, 0x04, 0x80, 0x00, 0x00, 0x94, 0x80, 0x44, 0x44, 0x30, 0x00, 0xff, 0x4c, 0x91, 0xc0, 0x06,
-0x44, 0x40, 0x00, 0x00, 0x10, 0x40, 0x00, 0x44, 0x2e, 0x17, 0xe2, 0x61, 0x58, 0x21, 0x80, 0x00,
-0x4c, 0x11, 0x40, 0x06, 0x45, 0xe0, 0x00, 0x00, 0x3f, 0xe7, 0xe2, 0x61, 0x3e, 0x3f, 0xe2, 0x1c,
-0x00, 0x91, 0x80, 0x31, 0x00, 0x01, 0x80, 0x2f, 0x50, 0x11, 0x80, 0x28, 0x40, 0x54, 0x80, 0x01,
-0x54, 0x22, 0x80, 0xff, 0x00, 0x00, 0x80, 0x00, 0x44, 0x50, 0x00, 0x7f, 0x4c, 0x02, 0x80, 0x08,
-0x40, 0x31, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x04, 0x10, 0x30, 0x80, 0x00, 0x50, 0x10, 0x80, 0x01,
-0x3e, 0x5f, 0xe2, 0x4c, 0x4c, 0x12, 0xff, 0xf0, 0x50, 0x10, 0x80, 0x02, 0x00, 0x00, 0x80, 0x00,
-0x44, 0x50, 0x00, 0x7f, 0x4c, 0x02, 0x80, 0x08, 0x40, 0x31, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x04,
-0x10, 0x30, 0x80, 0x00, 0x50, 0x10, 0x80, 0x01, 0x3e, 0x5f, 0xe2, 0x55, 0x4c, 0x12, 0xff, 0xf0,
-0x49, 0x00, 0x0f, 0x6a, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe5, 0x90, 0x00, 0x14, 0x00, 0x0b,
-0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x0c, 0x58, 0x03, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xfb, 0xee, 0x48, 0x00, 0x00, 0x04, 0x44, 0x01, 0x00, 0x03, 0x51, 0xff, 0x80, 0xbc,
-0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xb4,
-0x3e, 0x7f, 0xce, 0xcc, 0x54, 0x10, 0x00, 0xff, 0x14, 0x1f, 0x80, 0x05, 0x3a, 0x03, 0x8c, 0x04,
-0x50, 0x5f, 0x80, 0x2c, 0x3e, 0x6f, 0xe2, 0x1c, 0x3a, 0x02, 0x8c, 0x24, 0x3a, 0x03, 0x88, 0x00,
-0x2e, 0x47, 0xe6, 0x1e, 0x3a, 0x02, 0x88, 0x20, 0x00, 0x03, 0x00, 0x0a, 0x14, 0x0f, 0x80, 0x07,
-0x4e, 0x43, 0x00, 0x06, 0x58, 0x12, 0x00, 0x00, 0x48, 0x00, 0x00, 0x3e, 0x49, 0x00, 0x12, 0x82,
-0x50, 0x23, 0x00, 0x28, 0x44, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x50, 0x30, 0x80, 0x01,
-0x50, 0x21, 0x00, 0x01, 0x40, 0xf0, 0x18, 0x06, 0x4e, 0xf3, 0x00, 0x0a, 0x54, 0x11, 0x80, 0xff,
-0x44, 0x50, 0x00, 0x08, 0x4c, 0x12, 0xff, 0xf2, 0x48, 0x00, 0x00, 0x08, 0x2e, 0x27, 0xe2, 0x4c,
-0x50, 0x10, 0xff, 0xf9, 0x48, 0x00, 0x00, 0x18, 0x3e, 0x2f, 0xe2, 0x4e, 0x44, 0x10, 0x00, 0x00,
-0x00, 0x91, 0x00, 0x00, 0x50, 0x30, 0x80, 0x01, 0x50, 0x21, 0x00, 0x01, 0x40, 0xf0, 0x24, 0x06,
-0x4e, 0xf3, 0x00, 0x08, 0x54, 0x11, 0x80, 0xff, 0x44, 0x50, 0x00, 0x07, 0x4c, 0x12, 0xff, 0xf2,
-0x2e, 0x27, 0xe2, 0x4c, 0x55, 0xe1, 0x00, 0x01, 0x4f, 0xe2, 0x00, 0x04, 0x40, 0x10, 0x84, 0x00,
-0x40, 0x10, 0x80, 0x10, 0x2e, 0x27, 0xe2, 0x20, 0x44, 0x50, 0x00, 0x02, 0x40, 0x31, 0x18, 0x09,
-0x4c, 0x32, 0xc0, 0x0e, 0x54, 0x51, 0x00, 0x3f, 0x52, 0x72, 0x80, 0x00, 0x40, 0x43, 0x80, 0x10,
-0x14, 0x4f, 0x80, 0x04, 0x45, 0xc0, 0x00, 0x01, 0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x03,
-0x4c, 0x32, 0x80, 0x08, 0x45, 0xc0, 0x00, 0x00, 0x15, 0xcf, 0x80, 0x04, 0x48, 0x00, 0x00, 0x08,
-0x54, 0x81, 0x00, 0x3f, 0x14, 0x8f, 0x80, 0x04, 0x45, 0xc0, 0x00, 0x00, 0x05, 0xef, 0x80, 0x07,
-0x54, 0x00, 0x80, 0xff, 0x42, 0xaf, 0x18, 0x0b, 0x3e, 0x9f, 0xe2, 0x30, 0x3e, 0x2f, 0xe2, 0x78,
-0x50, 0x1f, 0x80, 0x2c, 0x14, 0x0f, 0x80, 0x08, 0x14, 0xaf, 0x80, 0x09, 0x14, 0x9f, 0x80, 0x03,
-0x14, 0x2f, 0x80, 0x02, 0x14, 0x1f, 0x80, 0x01, 0x15, 0xcf, 0x80, 0x06, 0x04, 0x3f, 0x80, 0x03,
-0x45, 0xc0, 0x00, 0x02, 0x00, 0x01, 0x80, 0x00, 0x40, 0x10, 0x18, 0x09, 0x4c, 0x1e, 0x40, 0x0c,
-0x54, 0x70, 0x00, 0x3f, 0x52, 0x43, 0x80, 0x00, 0x40, 0x02, 0x00, 0x10, 0x44, 0x20, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x12, 0x80, 0x08, 0x44, 0x20, 0x00, 0x00,
-0x58, 0x01, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x54, 0x00, 0x00, 0x3f, 0x44, 0x20, 0x00, 0x00,
-0x04, 0x1f, 0x80, 0x07, 0x04, 0x6f, 0x80, 0x09, 0x40, 0x80, 0x80, 0x00, 0x54, 0x74, 0x00, 0xff,
-0x42, 0x13, 0x98, 0x0b, 0x4c, 0x60, 0x80, 0x10, 0x4c, 0x11, 0x00, 0x0e, 0x44, 0x90, 0x00, 0x01,
-0x4c, 0x24, 0xc0, 0x06, 0x40, 0x74, 0x98, 0x08, 0x48, 0x00, 0x00, 0x06, 0x44, 0xa0, 0x00, 0x3f,
-0x40, 0x75, 0x08, 0x1a, 0x05, 0xef, 0x80, 0x01, 0x04, 0x2f, 0x80, 0x02, 0x55, 0xc3, 0x80, 0x40,
-0x00, 0x8f, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x01, 0x00, 0x51, 0x00, 0x00, 0x4f, 0xc3, 0x00, 0x20,
-0x40, 0xf3, 0x94, 0x06, 0x4e, 0xf2, 0x00, 0x0e, 0x44, 0x30, 0x00, 0x07, 0x58, 0x05, 0x00, 0x00,
-0x42, 0x04, 0x0c, 0x73, 0x3e, 0x4f, 0xf8, 0xec, 0x40, 0x30, 0x10, 0x00, 0x48, 0x00, 0x00, 0x1a,
-0x58, 0x15, 0x00, 0x00, 0x44, 0x20, 0x00, 0x07, 0x42, 0x14, 0x08, 0x73, 0x3e, 0x9f, 0xf8, 0xec,
-0x40, 0x60, 0xa4, 0x00, 0x10, 0x53, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x58, 0x55, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x07, 0x42, 0x54, 0x00, 0x73, 0x3f, 0xef, 0xf8, 0xec, 0x40, 0x32, 0xf8, 0x00,
-0x10, 0x71, 0x80, 0x00, 0x44, 0x40, 0x00, 0x07, 0x59, 0xe5, 0x00, 0x00, 0x2e, 0x27, 0xe5, 0x8d,
-0x43, 0xe4, 0x10, 0x73, 0x3e, 0x0f, 0xf8, 0xec, 0x04, 0x1f, 0x80, 0x08, 0x40, 0x61, 0x08, 0x00,
-0x40, 0x5f, 0x00, 0x00, 0x00, 0x22, 0x80, 0x00, 0x40, 0x90, 0x98, 0x01, 0x54, 0x64, 0x80, 0xff,
-0x40, 0x33, 0x08, 0x00, 0x54, 0x91, 0x80, 0xff, 0x42, 0x41, 0x18, 0x0b, 0x42, 0x54, 0x98, 0x0b,
-0x4c, 0x42, 0x80, 0x12, 0x40, 0x63, 0x1c, 0x09, 0x4c, 0x53, 0x00, 0x0e, 0x44, 0x10, 0x00, 0x01,
-0x4c, 0x60, 0xc0, 0x06, 0x40, 0x90, 0x98, 0x08, 0x48, 0x00, 0x00, 0x06, 0x44, 0x50, 0x00, 0x3f,
-0x40, 0x92, 0x98, 0x1a, 0x44, 0x00, 0x00, 0x07, 0x58, 0x25, 0x00, 0x00, 0x42, 0x24, 0x00, 0x73,
-0x3e, 0x4f, 0xf8, 0xec, 0x41, 0xe1, 0x10, 0x00, 0x10, 0x9f, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x58, 0x3f, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00, 0x44, 0x60, 0x00, 0x02,
-0x49, 0xff, 0xd2, 0x4e, 0x4c, 0x83, 0x40, 0x7c, 0x04, 0x3f, 0x80, 0x04, 0x04, 0x5f, 0x80, 0x02,
-0x40, 0x13, 0x8c, 0x00, 0x54, 0x30, 0x80, 0xff, 0x40, 0x7e, 0x18, 0x09, 0x42, 0x11, 0x98, 0x0b,
-0x00, 0x22, 0x80, 0x07, 0x4c, 0x70, 0x80, 0x16, 0x04, 0x6f, 0x80, 0x06, 0x4c, 0x13, 0x00, 0x12,
-0x45, 0xe0, 0x00, 0x01, 0x4c, 0x6f, 0x40, 0x06, 0x40, 0x3f, 0x18, 0x08, 0x48, 0x00, 0x00, 0x1e,
-0x04, 0x6f, 0x80, 0x06, 0x4e, 0x63, 0x00, 0x06, 0x44, 0x30, 0x00, 0x3f, 0x48, 0x00, 0x00, 0x06,
-0x54, 0x41, 0x80, 0x40, 0x4e, 0x43, 0x00, 0x12, 0x3e, 0x0f, 0xf8, 0xec, 0x40, 0x15, 0x00, 0x00,
-0x40, 0xf1, 0x88, 0x06, 0x4e, 0xf2, 0x00, 0x06, 0x10, 0x30, 0x80, 0x15, 0x48, 0x00, 0x00, 0x0c,
-0x10, 0x20, 0x80, 0x15, 0x48, 0x00, 0x00, 0x08, 0x3e, 0x7f, 0xf8, 0xec, 0x40, 0x25, 0x1c, 0x00,
-0x10, 0x31, 0x00, 0x15, 0x2e, 0x37, 0xe5, 0x8d, 0x04, 0x1f, 0x80, 0x08, 0x3e, 0x2f, 0xf8, 0xec,
-0x40, 0x45, 0x08, 0x00, 0x40, 0x01, 0x8c, 0x00, 0x01, 0xe2, 0x00, 0x15, 0x40, 0x50, 0x80, 0x01,
-0x54, 0x12, 0x80, 0xff, 0x40, 0x60, 0xf8, 0x00, 0x54, 0x53, 0x00, 0xff, 0x42, 0x3f, 0x18, 0x0b,
-0x42, 0x42, 0x98, 0x0b, 0x4c, 0x32, 0x00, 0x12, 0x40, 0x10, 0x9c, 0x09, 0x4c, 0x40, 0x80, 0x0e,
-0x45, 0xe0, 0x00, 0x01, 0x4c, 0x1f, 0x40, 0x06, 0x40, 0x5f, 0x18, 0x08, 0x48, 0x00, 0x00, 0x06,
-0x44, 0x70, 0x00, 0x3f, 0x40, 0x53, 0x84, 0x1a, 0x58, 0x01, 0x00, 0x00, 0x40, 0x65, 0x00, 0x00,
-0x50, 0x15, 0x00, 0x15, 0x10, 0x53, 0x00, 0x15, 0x40, 0x30, 0x80, 0x00, 0x58, 0x25, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x00, 0x44, 0x10, 0x00, 0x03, 0x49, 0xff, 0xd1, 0xd2, 0x04, 0x0f, 0x80, 0x03,
-0x04, 0x6f, 0x80, 0x02, 0x04, 0x2f, 0x80, 0x01, 0x50, 0x50, 0x00, 0x01, 0x51, 0xe3, 0x00, 0x01,
-0x50, 0x31, 0x00, 0x02, 0x3e, 0x4f, 0xe2, 0x3e, 0x14, 0x5f, 0x80, 0x03, 0x15, 0xef, 0x80, 0x02,
-0x14, 0x3f, 0x80, 0x01, 0x4c, 0x52, 0x7e, 0xb4, 0x04, 0x6f, 0x80, 0x05, 0x50, 0x53, 0x7f, 0xff,
-0x54, 0x12, 0x80, 0xff, 0x5c, 0xf0, 0x80, 0x05, 0x4e, 0xf2, 0x00, 0x1c, 0x2e, 0x07, 0xe2, 0x27,
-0x40, 0x40, 0x00, 0x10, 0x4e, 0x45, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e,
-0x42, 0x50, 0x18, 0x0b, 0x40, 0x12, 0x94, 0x00, 0x51, 0xe0, 0xff, 0xff, 0x54, 0x60, 0x00, 0x3f,
-0x42, 0x2f, 0x18, 0x24, 0x40, 0x11, 0x00, 0x10, 0x2e, 0x07, 0xe2, 0x2d, 0x48, 0x00, 0x00, 0x4e,
-0x04, 0x7f, 0x80, 0x05, 0x50, 0x33, 0xff, 0xfa, 0x54, 0x41, 0x80, 0xff, 0x5c, 0xf2, 0x00, 0x05,
-0x4e, 0xf2, 0x00, 0x1c, 0x2e, 0x07, 0xe2, 0x28, 0x40, 0x20, 0x00, 0x10, 0x4e, 0x25, 0x00, 0x06,
-0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x42, 0x30, 0x18, 0x0b, 0x40, 0x41, 0x8c, 0x00,
-0x50, 0x12, 0x7f, 0xff, 0x54, 0x50, 0x00, 0x3f, 0x42, 0x60, 0x94, 0x24, 0x40, 0x13, 0x00, 0x10,
-0x2e, 0x07, 0xe2, 0x2e, 0x48, 0x00, 0x00, 0x2a, 0x04, 0x1f, 0x80, 0x05, 0x51, 0xe0, 0xff, 0xf5,
-0x54, 0x2f, 0x00, 0xff, 0x5c, 0xf1, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x08, 0x46, 0x0c, 0x00, 0x00,
-0x58, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x8c, 0x2e, 0x07, 0xe2, 0x29, 0x40, 0x60, 0x00, 0x10,
-0x4e, 0x65, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x43, 0xe0, 0x18, 0x0b,
+0x50, 0x23, 0x80, 0x20, 0x00, 0x01, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x06, 0x00, 0x11, 0x00, 0x01,
+0x4e, 0x12, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x11, 0x00, 0x02, 0x3e, 0x3f, 0xe2, 0x30,
+0x41, 0xe0, 0x08, 0x08, 0x40, 0x4f, 0x0c, 0x00, 0x10, 0x12, 0x00, 0x00, 0x02, 0x51, 0x00, 0x02,
+0x44, 0x20, 0x00, 0x01, 0x12, 0x52, 0x00, 0x01, 0x4c, 0x11, 0x40, 0x04, 0x48, 0x00, 0x00, 0x04,
+0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xea, 0x82, 0x00, 0x13, 0x80, 0x0b, 0x54, 0x00, 0x80, 0x01,
+0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xff, 0x56,
+0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x80, 0x00, 0x02, 0x3e, 0x3f, 0xe4, 0x8c,
+0x50, 0x54, 0x00, 0x20, 0x00, 0x42, 0x80, 0x00, 0x58, 0x70, 0x00, 0x00, 0x10, 0x41, 0x80, 0x2c,
+0x00, 0x12, 0x80, 0x04, 0x10, 0x11, 0x80, 0x5c, 0x00, 0x02, 0x80, 0x08, 0x10, 0x01, 0x80, 0x8c,
+0x01, 0xe2, 0x80, 0x0c, 0x11, 0xe1, 0x80, 0xbc, 0x00, 0x92, 0x80, 0x04, 0x00, 0x62, 0x80, 0x00,
+0x00, 0x22, 0x80, 0x08, 0x00, 0x12, 0x80, 0x0c, 0x40, 0x44, 0x98, 0x00, 0x40, 0x32, 0x08, 0x00,
+0x40, 0x01, 0x84, 0x00, 0x3e, 0x1e, 0xa6, 0x78, 0x4e, 0x03, 0x00, 0x06, 0x46, 0x00, 0x02, 0x10,
+0x48, 0x00, 0x00, 0x06, 0x46, 0x00, 0x02, 0x10, 0x58, 0x00, 0x00, 0x04, 0x4b, 0xe0, 0x04, 0x01,
+0x3e, 0x6f, 0xe4, 0x8c, 0x00, 0x23, 0x00, 0x2c, 0x4e, 0x23, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00,
+0x49, 0xff, 0xf4, 0xa8, 0x50, 0x63, 0x00, 0x30, 0x3e, 0x5f, 0xe5, 0x4c, 0x4c, 0x62, 0xff, 0xf4,
+0x00, 0x34, 0x00, 0x0b, 0x55, 0xe1, 0x80, 0x01, 0x4f, 0xe2, 0x00, 0x08, 0x58, 0x03, 0x80, 0x00,
+0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xfa, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x04, 0x30, 0x00, 0x02, 0x44, 0x40, 0x00, 0x01, 0x50, 0x11, 0x80, 0x20, 0x00, 0x50, 0x80, 0x00,
+0x4c, 0x52, 0x00, 0x06, 0x44, 0x11, 0x00, 0x03, 0x48, 0x00, 0x00, 0x16, 0x00, 0x10, 0x80, 0x01,
+0x3e, 0x2f, 0xdf, 0xbc, 0x4e, 0x12, 0x00, 0x0a, 0x01, 0xe1, 0x00, 0x45, 0x44, 0x10, 0x00, 0x00,
+0x42, 0x4f, 0x18, 0x09, 0x48, 0x00, 0x00, 0x06, 0x00, 0x41, 0x00, 0x45, 0x58, 0x42, 0x00, 0x40,
+0x10, 0x41, 0x00, 0x45, 0x00, 0x21, 0x80, 0x0b, 0x54, 0x31, 0x00, 0x01, 0x4e, 0x32, 0x00, 0x06,
+0x49, 0xff, 0xfe, 0xc4, 0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x04, 0x90, 0x00, 0x02, 0x58, 0x80, 0x00, 0x00, 0x50, 0x74, 0x80, 0x20, 0x49, 0x00, 0x4d, 0xc8,
+0x00, 0x13, 0x80, 0x00, 0x3e, 0x6e, 0xad, 0x78, 0x44, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01,
+0x00, 0x13, 0x80, 0x01, 0x44, 0x00, 0x00, 0x01, 0x4b, 0xe0, 0x18, 0x01, 0x00, 0x13, 0x80, 0x02,
+0x44, 0x00, 0x00, 0x02, 0x4b, 0xe0, 0x18, 0x01, 0x02, 0x13, 0x80, 0x02, 0x44, 0x00, 0x00, 0x03,
+0x4b, 0xe0, 0x18, 0x01, 0x49, 0x00, 0x4d, 0x60, 0x00, 0x04, 0x80, 0x0b, 0x54, 0x00, 0x00, 0x01,
+0x4e, 0x02, 0x00, 0x08, 0x58, 0x04, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x86,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x90, 0x00, 0x00, 0x50, 0xa3, 0x80, 0x20,
+0x00, 0x55, 0x00, 0x00, 0x02, 0x33, 0x80, 0x00, 0x40, 0x42, 0x94, 0x00, 0x50, 0x22, 0x00, 0x01,
+0x50, 0x11, 0xff, 0xe0, 0x40, 0x01, 0x08, 0x08, 0x4c, 0x10, 0x00, 0x08, 0x46, 0x1c, 0x00, 0x10,
+0x58, 0x10, 0x80, 0x14, 0x48, 0x00, 0x00, 0x4a, 0x50, 0x63, 0x80, 0x24, 0x49, 0x00, 0x4d, 0x78,
+0x44, 0x80, 0x00, 0x00, 0x3f, 0xce, 0xad, 0x04, 0x48, 0x00, 0x00, 0x36, 0x00, 0x03, 0x00, 0x01,
+0x50, 0x84, 0x00, 0x01, 0x55, 0xe0, 0x00, 0x01, 0x4f, 0xe2, 0x00, 0x08, 0x00, 0x13, 0x00, 0x02,
+0x00, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd7, 0x30, 0x00, 0x23, 0x00, 0x01, 0x54, 0x11, 0x00, 0x02,
+0x4e, 0x12, 0x00, 0x08, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd7, 0x6c,
+0x00, 0x43, 0x00, 0x01, 0x54, 0x32, 0x00, 0x04, 0x4e, 0x32, 0x00, 0x08, 0x02, 0x13, 0x00, 0x02,
+0x00, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd7, 0xd8, 0x01, 0xe3, 0x00, 0x01, 0x54, 0x5f, 0x00, 0x08,
+0x4e, 0x52, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x02, 0x13, 0x00, 0x03, 0x4b, 0xe0, 0x70, 0x01,
+0x50, 0x63, 0x00, 0x08, 0x00, 0x05, 0x00, 0x00, 0x40, 0xf4, 0x00, 0x06, 0x4e, 0xf3, 0xff, 0xc8,
+0x49, 0x00, 0x4c, 0xea, 0x44, 0x10, 0x00, 0x00, 0x00, 0x33, 0x80, 0x0b, 0x54, 0x21, 0x80, 0x01,
+0x4e, 0x22, 0x00, 0x08, 0x58, 0x04, 0x80, 0x00, 0x49, 0xff, 0xfe, 0x10, 0x58, 0x10, 0x00, 0x00,
+0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x20, 0x00, 0x02, 0x00, 0x11, 0x00, 0x20,
+0x5c, 0xf0, 0x80, 0x03, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x11, 0x00, 0x03, 0x48, 0x00, 0x00, 0x06,
+0x3e, 0x17, 0xdf, 0x60, 0x44, 0x10, 0x00, 0x00, 0x00, 0x41, 0x00, 0x0b, 0x54, 0x22, 0x00, 0x01,
+0x4e, 0x22, 0x00, 0x06, 0x49, 0xff, 0xfd, 0xea, 0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0x74, 0x50, 0x2f, 0x80, 0x68, 0x10, 0x11, 0x00, 0x07, 0x10, 0x01, 0x00, 0x09,
+0x44, 0x10, 0x00, 0x00, 0x58, 0x0f, 0x80, 0x00, 0x14, 0x2f, 0x80, 0x02, 0x49, 0xff, 0xfd, 0xce,
+0x51, 0xff, 0x80, 0x8c, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x60, 0x00, 0x00, 0x50, 0x23, 0x80, 0x20,
+0x00, 0x31, 0x00, 0x00, 0x3e, 0x1f, 0xe0, 0x34, 0x4e, 0x32, 0x00, 0x2c, 0x44, 0x00, 0x00, 0x01,
+0x44, 0x40, 0x00, 0x00, 0x10, 0x00, 0x80, 0x26, 0x10, 0x40, 0x80, 0x25, 0x2f, 0xef, 0xe2, 0x1a,
+0x20, 0x31, 0x00, 0x01, 0x40, 0x51, 0xf8, 0x01, 0x50, 0x42, 0x00, 0x1e, 0x2f, 0xef, 0xe2, 0x1b,
+0x42, 0x32, 0x90, 0x24, 0x50, 0x4f, 0x00, 0x38, 0x41, 0xe1, 0x90, 0x16, 0x2e, 0x57, 0xe2, 0x19,
+0x2e, 0x4f, 0xf7, 0x6a, 0x40, 0x3f, 0x14, 0x00, 0x40, 0x31, 0x80, 0x10, 0x10, 0x30, 0x80, 0x28,
+0x40, 0xf1, 0x90, 0x07, 0x4e, 0xf2, 0x00, 0x0a, 0x3e, 0x37, 0xf7, 0x6a, 0x48, 0x00, 0x00, 0x06,
+0x10, 0x30, 0x80, 0x25, 0x10, 0x30, 0x80, 0x26, 0x00, 0x31, 0x00, 0x02, 0x4e, 0x32, 0x00, 0x2c,
+0x44, 0x30, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x10, 0x30, 0x80, 0x32, 0x10, 0x50, 0x80, 0x31,
+0x2e, 0x0f, 0xe2, 0x1a, 0x20, 0x21, 0x00, 0x03, 0x2f, 0xef, 0xe2, 0x1b, 0x40, 0x51, 0x00, 0x01,
+0x50, 0x31, 0x80, 0x1e, 0x42, 0x22, 0x8c, 0x24, 0x50, 0x0f, 0x00, 0x38, 0x41, 0xe1, 0x00, 0x16,
+0x2e, 0x57, 0xe2, 0x19, 0x2e, 0x3f, 0xf7, 0x69, 0x40, 0x2f, 0x14, 0x00, 0x40, 0x21, 0x00, 0x10,
+0x10, 0x20, 0x80, 0x33, 0x40, 0xf1, 0x88, 0x07, 0x4e, 0xf2, 0x00, 0x0a, 0x3e, 0x27, 0xf7, 0x69,
+0x48, 0x00, 0x00, 0x06, 0x10, 0x30, 0x80, 0x31, 0x10, 0x30, 0x80, 0x32, 0x2e, 0x37, 0xf7, 0x69,
+0x2e, 0x27, 0xf7, 0x6a, 0x44, 0x10, 0x00, 0x7f, 0x44, 0x40, 0x00, 0x1e, 0x44, 0x00, 0x00, 0x02,
+0x49, 0xff, 0xe6, 0x9c, 0x46, 0x48, 0x00, 0x22, 0x04, 0x52, 0x00, 0x07, 0x46, 0x30, 0x11, 0x10,
+0x40, 0x22, 0x8c, 0x04, 0x14, 0x22, 0x00, 0x07, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xd1, 0x26,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xd0, 0xfa, 0x00, 0x13, 0x80, 0x0b, 0x54, 0x00, 0x80, 0x01,
+0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfd, 0x2e,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
+0x51, 0xff, 0xff, 0x44, 0x3e, 0x1f, 0xcb, 0xc0, 0x58, 0x70, 0x00, 0x00, 0x44, 0x20, 0x00, 0xb6,
+0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xd9, 0xb6, 0x2e, 0x17, 0xe3, 0x30, 0x58, 0x6f, 0x80, 0x00,
+0x04, 0x83, 0x80, 0x02, 0x4e, 0x12, 0x00, 0x04, 0x48, 0x00, 0x00, 0xa8, 0x50, 0x24, 0x00, 0x20,
+0x00, 0x31, 0x00, 0x00, 0x4e, 0x32, 0x00, 0x06, 0x58, 0x0f, 0x80, 0x00, 0x48, 0x00, 0x00, 0xb0,
+0x44, 0x60, 0x6f, 0x4c, 0x3e, 0x1f, 0xdf, 0xbc, 0x44, 0x20, 0x00, 0x03, 0x44, 0x00, 0x00, 0x35,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xbf, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0x48,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xc0, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0x50,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xc1, 0x44, 0x20, 0x00, 0x0f, 0x44, 0x00, 0x00, 0x53,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xd0, 0x44, 0x20, 0x00, 0x0e, 0x44, 0x00, 0x00, 0xa0,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xde, 0x44, 0x20, 0x00, 0x10, 0x44, 0x00, 0x00, 0xc0,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xee, 0x44, 0x20, 0x00, 0x07, 0x44, 0x00, 0x00, 0xd0,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xf5, 0x44, 0x20, 0x00, 0x04, 0x44, 0x00, 0x00, 0xf4,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xf9, 0x44, 0x20, 0x00, 0x02, 0x44, 0x00, 0x00, 0x24,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xfb, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0x34,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xfc, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0x39,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xfd, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0x3b,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xdf, 0xfe, 0x44, 0x20, 0x00, 0x02, 0x44, 0x00, 0x00, 0x42,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe0, 0x00, 0x44, 0x20, 0x00, 0x02, 0x44, 0x00, 0x00, 0x9e,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe0, 0x02, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xf2,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe0, 0x03, 0x44, 0x20, 0x00, 0x03, 0x44, 0x00, 0x00, 0xf8,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe0, 0x06, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x01, 0x2e,
+0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe0, 0x07, 0x44, 0x20, 0x00, 0x10, 0x44, 0x00, 0x01, 0x30,
+0x4b, 0xe0, 0x18, 0x01, 0x48, 0x00, 0x00, 0x42, 0x38, 0x90, 0x05, 0x01, 0x02, 0x41, 0x80, 0x02,
+0x54, 0x13, 0x00, 0xff, 0x4c, 0x92, 0x00, 0x10, 0x00, 0x24, 0x00, 0x0b, 0x54, 0x11, 0x00, 0x01,
+0x4e, 0x12, 0x00, 0x7a, 0x58, 0x03, 0x80, 0x00, 0x44, 0x11, 0x00, 0x03, 0x49, 0xff, 0xfc, 0x5e,
+0x48, 0x00, 0x00, 0x72, 0x00, 0x61, 0x80, 0x06, 0x10, 0x62, 0x80, 0x00, 0x01, 0xe1, 0x00, 0x01,
+0x40, 0x50, 0x88, 0x08, 0x3e, 0x9f, 0xdf, 0xbc, 0x40, 0x31, 0x14, 0x00, 0x50, 0x60, 0x80, 0x01,
+0x40, 0x50, 0xa4, 0x00, 0x40, 0xf0, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xd8, 0x58, 0x04, 0x80, 0x00,
+0x00, 0x94, 0x80, 0x44, 0x44, 0x30, 0x00, 0xff, 0x4c, 0x91, 0xc0, 0x06, 0x44, 0x40, 0x00, 0x00,
+0x10, 0x40, 0x00, 0x44, 0x2e, 0x17, 0xe0, 0x01, 0x58, 0x21, 0x80, 0x00, 0x4c, 0x11, 0x40, 0x06,
+0x45, 0xe0, 0x00, 0x00, 0x3f, 0xe7, 0xe0, 0x01, 0x3e, 0x3f, 0xdf, 0xbc, 0x00, 0x91, 0x80, 0x31,
+0x00, 0x01, 0x80, 0x2f, 0x50, 0x11, 0x80, 0x28, 0x40, 0x54, 0x80, 0x01, 0x54, 0x22, 0x80, 0xff,
+0x00, 0x00, 0x80, 0x00, 0x44, 0x50, 0x00, 0x7f, 0x4c, 0x02, 0x80, 0x08, 0x40, 0x31, 0x00, 0x00,
+0x4e, 0x02, 0x00, 0x04, 0x10, 0x30, 0x80, 0x00, 0x50, 0x10, 0x80, 0x01, 0x3e, 0x5f, 0xdf, 0xec,
+0x4c, 0x12, 0xff, 0xf0, 0x50, 0x10, 0x80, 0x02, 0x00, 0x00, 0x80, 0x00, 0x44, 0x50, 0x00, 0x7f,
+0x4c, 0x02, 0x80, 0x08, 0x40, 0x31, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x04, 0x10, 0x30, 0x80, 0x00,
+0x50, 0x10, 0x80, 0x01, 0x3e, 0x5f, 0xdf, 0xf5, 0x4c, 0x12, 0xff, 0xf0, 0x49, 0x00, 0x0f, 0x6a,
+0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe3, 0x30, 0x00, 0x14, 0x00, 0x0b, 0x54, 0x00, 0x80, 0x01,
+0x4e, 0x02, 0x00, 0x0c, 0x58, 0x03, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfb, 0xee,
+0x48, 0x00, 0x00, 0x04, 0x44, 0x01, 0x00, 0x03, 0x51, 0xff, 0x80, 0xbc, 0x3a, 0x6f, 0xa4, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xb4, 0x3e, 0x7f, 0xcc, 0x78,
+0x54, 0x10, 0x00, 0xff, 0x14, 0x1f, 0x80, 0x05, 0x3a, 0x03, 0x8c, 0x04, 0x50, 0x5f, 0x80, 0x2c,
+0x3e, 0x6f, 0xdf, 0xbc, 0x3a, 0x02, 0x8c, 0x24, 0x3a, 0x03, 0x88, 0x00, 0x2e, 0x47, 0xe3, 0xbe,
+0x3a, 0x02, 0x88, 0x20, 0x00, 0x03, 0x00, 0x0a, 0x14, 0x0f, 0x80, 0x07, 0x4e, 0x43, 0x00, 0x06,
+0x58, 0x12, 0x00, 0x00, 0x48, 0x00, 0x00, 0x3e, 0x49, 0x00, 0x12, 0x82, 0x50, 0x23, 0x00, 0x28,
+0x44, 0x10, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x50, 0x30, 0x80, 0x01, 0x50, 0x21, 0x00, 0x01,
+0x40, 0xf0, 0x18, 0x06, 0x4e, 0xf3, 0x00, 0x0a, 0x54, 0x11, 0x80, 0xff, 0x44, 0x50, 0x00, 0x08,
+0x4c, 0x12, 0xff, 0xf2, 0x48, 0x00, 0x00, 0x08, 0x2e, 0x27, 0xdf, 0xec, 0x50, 0x10, 0xff, 0xf9,
+0x48, 0x00, 0x00, 0x18, 0x3e, 0x2f, 0xdf, 0xee, 0x44, 0x10, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00,
+0x50, 0x30, 0x80, 0x01, 0x50, 0x21, 0x00, 0x01, 0x40, 0xf0, 0x24, 0x06, 0x4e, 0xf3, 0x00, 0x08,
+0x54, 0x11, 0x80, 0xff, 0x44, 0x50, 0x00, 0x07, 0x4c, 0x12, 0xff, 0xf2, 0x2e, 0x27, 0xdf, 0xec,
+0x55, 0xe1, 0x00, 0x01, 0x4f, 0xe2, 0x00, 0x04, 0x40, 0x10, 0x84, 0x00, 0x40, 0x10, 0x80, 0x10,
+0x2e, 0x27, 0xdf, 0xc0, 0x44, 0x50, 0x00, 0x02, 0x40, 0x31, 0x18, 0x09, 0x4c, 0x32, 0xc0, 0x0e,
+0x54, 0x51, 0x00, 0x3f, 0x52, 0x72, 0x80, 0x00, 0x40, 0x43, 0x80, 0x10, 0x14, 0x4f, 0x80, 0x04,
+0x45, 0xc0, 0x00, 0x01, 0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x32, 0x80, 0x08,
+0x45, 0xc0, 0x00, 0x00, 0x15, 0xcf, 0x80, 0x04, 0x48, 0x00, 0x00, 0x08, 0x54, 0x81, 0x00, 0x3f,
+0x14, 0x8f, 0x80, 0x04, 0x45, 0xc0, 0x00, 0x00, 0x05, 0xef, 0x80, 0x07, 0x54, 0x00, 0x80, 0xff,
+0x42, 0xaf, 0x18, 0x0b, 0x3e, 0x9f, 0xdf, 0xd0, 0x3e, 0x2f, 0xe0, 0x18, 0x50, 0x1f, 0x80, 0x2c,
+0x14, 0x0f, 0x80, 0x08, 0x14, 0xaf, 0x80, 0x09, 0x14, 0x9f, 0x80, 0x03, 0x14, 0x2f, 0x80, 0x02,
+0x14, 0x1f, 0x80, 0x01, 0x15, 0xcf, 0x80, 0x06, 0x04, 0x3f, 0x80, 0x03, 0x45, 0xc0, 0x00, 0x02,
+0x00, 0x01, 0x80, 0x00, 0x40, 0x10, 0x18, 0x09, 0x4c, 0x1e, 0x40, 0x0c, 0x54, 0x70, 0x00, 0x3f,
+0x52, 0x43, 0x80, 0x00, 0x40, 0x02, 0x00, 0x10, 0x44, 0x20, 0x00, 0x01, 0x48, 0x00, 0x00, 0x10,
+0x44, 0x50, 0x00, 0x03, 0x4c, 0x12, 0x80, 0x08, 0x44, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x06, 0x54, 0x00, 0x00, 0x3f, 0x44, 0x20, 0x00, 0x00, 0x04, 0x1f, 0x80, 0x07,
+0x04, 0x6f, 0x80, 0x09, 0x40, 0x80, 0x80, 0x00, 0x54, 0x74, 0x00, 0xff, 0x42, 0x13, 0x98, 0x0b,
+0x4c, 0x60, 0x80, 0x10, 0x4c, 0x11, 0x00, 0x0e, 0x44, 0x90, 0x00, 0x01, 0x4c, 0x24, 0xc0, 0x06,
+0x40, 0x74, 0x98, 0x08, 0x48, 0x00, 0x00, 0x06, 0x44, 0xa0, 0x00, 0x3f, 0x40, 0x75, 0x08, 0x1a,
+0x05, 0xef, 0x80, 0x01, 0x04, 0x2f, 0x80, 0x02, 0x55, 0xc3, 0x80, 0x40, 0x00, 0x8f, 0x00, 0x00,
+0x00, 0xaf, 0x00, 0x01, 0x00, 0x51, 0x00, 0x00, 0x4f, 0xc3, 0x00, 0x20, 0x40, 0xf3, 0x94, 0x06,
+0x4e, 0xf2, 0x00, 0x0e, 0x44, 0x30, 0x00, 0x07, 0x58, 0x05, 0x00, 0x00, 0x42, 0x04, 0x0c, 0x73,
+0x3e, 0x4f, 0xf6, 0x8c, 0x40, 0x30, 0x10, 0x00, 0x48, 0x00, 0x00, 0x1a, 0x58, 0x15, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x07, 0x42, 0x14, 0x08, 0x73, 0x3e, 0x9f, 0xf6, 0x8c, 0x40, 0x60, 0xa4, 0x00,
+0x10, 0x53, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x58, 0x55, 0x00, 0x00, 0x44, 0x00, 0x00, 0x07,
+0x42, 0x54, 0x00, 0x73, 0x3f, 0xef, 0xf6, 0x8c, 0x40, 0x32, 0xf8, 0x00, 0x10, 0x71, 0x80, 0x00,
+0x44, 0x40, 0x00, 0x07, 0x59, 0xe5, 0x00, 0x00, 0x2e, 0x27, 0xe3, 0x2d, 0x43, 0xe4, 0x10, 0x73,
+0x3e, 0x0f, 0xf6, 0x8c, 0x04, 0x1f, 0x80, 0x08, 0x40, 0x61, 0x08, 0x00, 0x40, 0x5f, 0x00, 0x00,
+0x00, 0x22, 0x80, 0x00, 0x40, 0x90, 0x98, 0x01, 0x54, 0x64, 0x80, 0xff, 0x40, 0x33, 0x08, 0x00,
+0x54, 0x91, 0x80, 0xff, 0x42, 0x41, 0x18, 0x0b, 0x42, 0x54, 0x98, 0x0b, 0x4c, 0x42, 0x80, 0x12,
+0x40, 0x63, 0x1c, 0x09, 0x4c, 0x53, 0x00, 0x0e, 0x44, 0x10, 0x00, 0x01, 0x4c, 0x60, 0xc0, 0x06,
+0x40, 0x90, 0x98, 0x08, 0x48, 0x00, 0x00, 0x06, 0x44, 0x50, 0x00, 0x3f, 0x40, 0x92, 0x98, 0x1a,
+0x44, 0x00, 0x00, 0x07, 0x58, 0x25, 0x00, 0x00, 0x42, 0x24, 0x00, 0x73, 0x3e, 0x4f, 0xf6, 0x8c,
+0x41, 0xe1, 0x10, 0x00, 0x10, 0x9f, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x58, 0x3f, 0x00, 0x00,
+0x58, 0x14, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00, 0x44, 0x60, 0x00, 0x02, 0x49, 0xff, 0xd2, 0x08,
+0x4c, 0x83, 0x40, 0x7c, 0x04, 0x3f, 0x80, 0x04, 0x04, 0x5f, 0x80, 0x02, 0x40, 0x13, 0x8c, 0x00,
+0x54, 0x30, 0x80, 0xff, 0x40, 0x7e, 0x18, 0x09, 0x42, 0x11, 0x98, 0x0b, 0x00, 0x22, 0x80, 0x07,
+0x4c, 0x70, 0x80, 0x16, 0x04, 0x6f, 0x80, 0x06, 0x4c, 0x13, 0x00, 0x12, 0x45, 0xe0, 0x00, 0x01,
+0x4c, 0x6f, 0x40, 0x06, 0x40, 0x3f, 0x18, 0x08, 0x48, 0x00, 0x00, 0x1e, 0x04, 0x6f, 0x80, 0x06,
+0x4e, 0x63, 0x00, 0x06, 0x44, 0x30, 0x00, 0x3f, 0x48, 0x00, 0x00, 0x06, 0x54, 0x41, 0x80, 0x40,
+0x4e, 0x43, 0x00, 0x12, 0x3e, 0x0f, 0xf6, 0x8c, 0x40, 0x15, 0x00, 0x00, 0x40, 0xf1, 0x88, 0x06,
+0x4e, 0xf2, 0x00, 0x06, 0x10, 0x30, 0x80, 0x15, 0x48, 0x00, 0x00, 0x0c, 0x10, 0x20, 0x80, 0x15,
+0x48, 0x00, 0x00, 0x08, 0x3e, 0x7f, 0xf6, 0x8c, 0x40, 0x25, 0x1c, 0x00, 0x10, 0x31, 0x00, 0x15,
+0x2e, 0x37, 0xe3, 0x2d, 0x04, 0x1f, 0x80, 0x08, 0x3e, 0x2f, 0xf6, 0x8c, 0x40, 0x45, 0x08, 0x00,
+0x40, 0x01, 0x8c, 0x00, 0x01, 0xe2, 0x00, 0x15, 0x40, 0x50, 0x80, 0x01, 0x54, 0x12, 0x80, 0xff,
+0x40, 0x60, 0xf8, 0x00, 0x54, 0x53, 0x00, 0xff, 0x42, 0x3f, 0x18, 0x0b, 0x42, 0x42, 0x98, 0x0b,
+0x4c, 0x32, 0x00, 0x12, 0x40, 0x10, 0x9c, 0x09, 0x4c, 0x40, 0x80, 0x0e, 0x45, 0xe0, 0x00, 0x01,
+0x4c, 0x1f, 0x40, 0x06, 0x40, 0x5f, 0x18, 0x08, 0x48, 0x00, 0x00, 0x06, 0x44, 0x70, 0x00, 0x3f,
+0x40, 0x53, 0x84, 0x1a, 0x58, 0x01, 0x00, 0x00, 0x40, 0x65, 0x00, 0x00, 0x50, 0x15, 0x00, 0x15,
+0x10, 0x53, 0x00, 0x15, 0x40, 0x30, 0x80, 0x00, 0x58, 0x25, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x03, 0x49, 0xff, 0xd1, 0x8c, 0x04, 0x0f, 0x80, 0x03, 0x04, 0x6f, 0x80, 0x02,
+0x04, 0x2f, 0x80, 0x01, 0x50, 0x50, 0x00, 0x01, 0x51, 0xe3, 0x00, 0x01, 0x50, 0x31, 0x00, 0x02,
+0x3e, 0x4f, 0xdf, 0xde, 0x14, 0x5f, 0x80, 0x03, 0x15, 0xef, 0x80, 0x02, 0x14, 0x3f, 0x80, 0x01,
+0x4c, 0x52, 0x7e, 0xb4, 0x04, 0x6f, 0x80, 0x05, 0x50, 0x53, 0x7f, 0xff, 0x54, 0x12, 0x80, 0xff,
+0x5c, 0xf0, 0x80, 0x05, 0x4e, 0xf2, 0x00, 0x1c, 0x2e, 0x07, 0xdf, 0xc7, 0x40, 0x40, 0x00, 0x10,
+0x4e, 0x45, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x42, 0x50, 0x18, 0x0b,
+0x40, 0x12, 0x94, 0x00, 0x51, 0xe0, 0xff, 0xff, 0x54, 0x60, 0x00, 0x3f, 0x42, 0x2f, 0x18, 0x24,
+0x40, 0x11, 0x00, 0x10, 0x2e, 0x07, 0xdf, 0xcd, 0x48, 0x00, 0x00, 0x4e, 0x04, 0x7f, 0x80, 0x05,
+0x50, 0x33, 0xff, 0xfa, 0x54, 0x41, 0x80, 0xff, 0x5c, 0xf2, 0x00, 0x05, 0x4e, 0xf2, 0x00, 0x1c,
+0x2e, 0x07, 0xdf, 0xc8, 0x40, 0x20, 0x00, 0x10, 0x4e, 0x25, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x0e, 0x42, 0x30, 0x18, 0x0b, 0x40, 0x41, 0x8c, 0x00, 0x50, 0x12, 0x7f, 0xff,
+0x54, 0x50, 0x00, 0x3f, 0x42, 0x60, 0x94, 0x24, 0x40, 0x13, 0x00, 0x10, 0x2e, 0x07, 0xdf, 0xce,
+0x48, 0x00, 0x00, 0x2a, 0x04, 0x1f, 0x80, 0x05, 0x51, 0xe0, 0xff, 0xf5, 0x54, 0x2f, 0x00, 0xff,
+0x5c, 0xf1, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x08, 0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x8c, 0x2e, 0x07, 0xdf, 0xc9, 0x40, 0x60, 0x00, 0x10, 0x4e, 0x65, 0x00, 0x06,
+0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x43, 0xe0, 0x18, 0x0b, 0x40, 0x2f, 0x78, 0x00,
+0x50, 0x31, 0x7f, 0xff, 0x54, 0x00, 0x00, 0x3f, 0x42, 0x41, 0x80, 0x24, 0x40, 0x12, 0x00, 0x10,
+0x2e, 0x07, 0xdf, 0xcf, 0x40, 0x50, 0x00, 0x10, 0x4e, 0x54, 0x00, 0x10, 0x43, 0xe0, 0x18, 0x0b,
0x40, 0x2f, 0x78, 0x00, 0x50, 0x31, 0x7f, 0xff, 0x54, 0x00, 0x00, 0x3f, 0x42, 0x41, 0x80, 0x24,
-0x40, 0x12, 0x00, 0x10, 0x2e, 0x07, 0xe2, 0x2f, 0x40, 0x50, 0x00, 0x10, 0x4e, 0x54, 0x00, 0x10,
-0x43, 0xe0, 0x18, 0x0b, 0x40, 0x2f, 0x78, 0x00, 0x50, 0x31, 0x7f, 0xff, 0x54, 0x00, 0x00, 0x3f,
-0x42, 0x41, 0x80, 0x24, 0x40, 0x22, 0x00, 0x10, 0x48, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x00,
-0x2e, 0x67, 0xe2, 0x1e, 0x54, 0x03, 0x00, 0x20, 0x4e, 0x02, 0x00, 0x30, 0x44, 0x4f, 0xff, 0xf8,
-0x42, 0x50, 0x90, 0x00, 0x44, 0x30, 0x00, 0x07, 0x46, 0x06, 0x02, 0x00, 0x42, 0x12, 0x8c, 0x01,
-0x05, 0xe0, 0x03, 0x43, 0x40, 0x60, 0x90, 0x08, 0x54, 0x13, 0x00, 0xff, 0x44, 0x6f, 0xff, 0x00,
-0x40, 0x5f, 0x18, 0x02, 0x41, 0xe0, 0x94, 0x04, 0x15, 0xe0, 0x03, 0x43, 0x46, 0x06, 0x02, 0x01,
-0x42, 0x11, 0x10, 0x00, 0x42, 0x50, 0x8c, 0x01, 0x04, 0x20, 0x03, 0x43, 0x41, 0xe2, 0x90, 0x08,
-0x54, 0x3f, 0x00, 0xff, 0x40, 0x11, 0x18, 0x02, 0x40, 0x41, 0x84, 0x04, 0x14, 0x40, 0x03, 0x43,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x2c, 0x44, 0x5f, 0xff, 0xc0, 0x42, 0x10, 0x94, 0x00,
-0x44, 0x40, 0x00, 0x3f, 0x46, 0x36, 0x02, 0x00, 0x43, 0xe0, 0x90, 0x01, 0x04, 0x61, 0x83, 0x46,
-0x40, 0x7f, 0x78, 0x00, 0x54, 0x13, 0x80, 0xff, 0x44, 0x7f, 0xff, 0x00, 0x40, 0x63, 0x1c, 0x02,
-0x41, 0xe0, 0x98, 0x04, 0x15, 0xe1, 0x83, 0x46, 0x47, 0xe6, 0x02, 0x01, 0x42, 0x31, 0x14, 0x00,
-0x42, 0x21, 0x90, 0x01, 0x04, 0x1f, 0x03, 0x46, 0x40, 0x51, 0x08, 0x00, 0x54, 0x42, 0x80, 0xff,
-0x40, 0x30, 0x9c, 0x02, 0x40, 0x22, 0x0c, 0x04, 0x14, 0x2f, 0x03, 0x46, 0x51, 0xff, 0x80, 0x4c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x04, 0x70, 0x00, 0x02, 0x3e, 0x2f, 0xe2, 0x1c, 0x50, 0x13, 0x80, 0x20, 0x00, 0x40, 0x80, 0x01,
-0x58, 0x60, 0x00, 0x00, 0x10, 0x41, 0x00, 0x02, 0x00, 0x30, 0x80, 0x02, 0x10, 0x31, 0x00, 0x01,
-0x01, 0xe0, 0x80, 0x03, 0x11, 0xe1, 0x00, 0x0a, 0x00, 0x50, 0x80, 0x04, 0x10, 0x51, 0x00, 0x10,
-0x00, 0x00, 0x80, 0x05, 0x10, 0x01, 0x00, 0x14, 0x00, 0x40, 0x80, 0x06, 0x10, 0x41, 0x00, 0x15,
-0x00, 0x30, 0x80, 0x07, 0x10, 0x31, 0x00, 0x16, 0x01, 0xe0, 0x80, 0x08, 0x11, 0xe1, 0x00, 0x17,
-0x00, 0x50, 0x80, 0x09, 0x10, 0x51, 0x00, 0x18, 0x00, 0x00, 0x80, 0x0a, 0x10, 0x01, 0x00, 0x19,
-0x00, 0x40, 0x80, 0x0b, 0x10, 0x41, 0x00, 0x1a, 0x00, 0x30, 0x80, 0x0c, 0x10, 0x31, 0x00, 0x1b,
-0x01, 0xe0, 0x80, 0x0d, 0x11, 0xe1, 0x00, 0x1c, 0x00, 0x50, 0x80, 0x0e, 0x10, 0x51, 0x00, 0x1d,
-0x00, 0x00, 0x80, 0x0f, 0x10, 0x01, 0x00, 0x1e, 0x00, 0x40, 0x80, 0x10, 0x10, 0x41, 0x00, 0x1f,
-0x00, 0x30, 0x80, 0x11, 0x10, 0x31, 0x00, 0x20, 0x01, 0xe0, 0x80, 0x12, 0x11, 0xe1, 0x00, 0x21,
-0x00, 0x50, 0x80, 0x13, 0x10, 0x51, 0x00, 0x04, 0x00, 0x00, 0x80, 0x14, 0x10, 0x01, 0x00, 0x0b,
-0x00, 0x40, 0x80, 0x15, 0x10, 0x41, 0x00, 0x0c, 0x00, 0x30, 0x80, 0x16, 0x10, 0x31, 0x00, 0x0d,
-0x01, 0xe0, 0x80, 0x17, 0x11, 0xe1, 0x00, 0x11, 0x00, 0x50, 0x80, 0x18, 0x10, 0x51, 0x00, 0x12,
-0x00, 0x00, 0x80, 0x19, 0x10, 0x01, 0x00, 0x13, 0x00, 0x40, 0x80, 0x1a, 0x10, 0x41, 0x00, 0x28,
-0x00, 0x30, 0x80, 0x1b, 0x10, 0x31, 0x00, 0x29, 0x01, 0xe0, 0x80, 0x1c, 0x11, 0xe1, 0x00, 0x2a,
-0x00, 0x50, 0x80, 0x1d, 0x10, 0x51, 0x00, 0x2b, 0x00, 0x00, 0x80, 0x1e, 0x10, 0x01, 0x00, 0x2c,
-0x00, 0x40, 0x80, 0x1f, 0x10, 0x41, 0x00, 0x2d, 0x00, 0x30, 0x80, 0x20, 0x10, 0x31, 0x00, 0x2e,
-0x50, 0x31, 0x00, 0x28, 0x00, 0x00, 0x80, 0x21, 0x10, 0x01, 0x00, 0x2f, 0x01, 0xe0, 0x80, 0x22,
-0x11, 0xe1, 0x00, 0x30, 0x00, 0x50, 0x80, 0x23, 0x10, 0x51, 0x00, 0x31, 0x40, 0x02, 0x80, 0x01,
-0x00, 0x40, 0x80, 0x24, 0x54, 0x00, 0x00, 0xff, 0x10, 0x41, 0x00, 0x32, 0x01, 0xe0, 0x80, 0x25,
-0x11, 0xe1, 0x00, 0x33, 0x00, 0x50, 0x80, 0x26, 0x10, 0x51, 0x00, 0x34, 0x00, 0x40, 0x80, 0x27,
-0x10, 0x41, 0x00, 0x35, 0x01, 0xe0, 0x80, 0x28, 0x11, 0xe1, 0x00, 0x36, 0x00, 0x50, 0x80, 0x29,
-0x10, 0x51, 0x00, 0x37, 0x00, 0x40, 0x80, 0x2a, 0x10, 0x41, 0x00, 0x38, 0x00, 0x21, 0x80, 0x00,
-0x44, 0x50, 0x00, 0x7f, 0x4c, 0x22, 0x80, 0x08, 0x40, 0x40, 0x08, 0x00, 0x4e, 0x22, 0x00, 0x04,
-0x10, 0x41, 0x80, 0x00, 0x50, 0x31, 0x80, 0x01, 0x3e, 0x2f, 0xe2, 0x4c, 0x4c, 0x31, 0x7f, 0xf0,
-0x50, 0x31, 0x80, 0x02, 0x00, 0x21, 0x80, 0x00, 0x44, 0x50, 0x00, 0x7f, 0x4c, 0x22, 0x80, 0x08,
-0x40, 0x40, 0x08, 0x00, 0x4e, 0x22, 0x00, 0x04, 0x10, 0x41, 0x80, 0x00, 0x50, 0x31, 0x80, 0x01,
-0x3e, 0x5f, 0xe2, 0x55, 0x4c, 0x32, 0xff, 0xf0, 0x00, 0x30, 0x80, 0x2b, 0x3e, 0x37, 0xe5, 0x8d,
-0x00, 0x00, 0x80, 0x00, 0x3e, 0x1f, 0xe2, 0x78, 0x49, 0xff, 0xfc, 0x48, 0x00, 0x13, 0x80, 0x0b,
-0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xf8, 0x1e, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x80, 0x00, 0x02, 0x58, 0x70, 0x00, 0x00, 0x50, 0x64, 0x00, 0x20,
-0x00, 0x03, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x1c, 0x49, 0x00, 0x0c, 0x8a, 0x4e, 0x02, 0x00, 0x08,
-0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x20, 0x20, 0x43, 0x00, 0x06,
-0x00, 0x03, 0x00, 0x02, 0x00, 0x13, 0x00, 0x03, 0x00, 0x23, 0x00, 0x04, 0x20, 0x33, 0x00, 0x05,
-0x49, 0x00, 0x0c, 0x50, 0x49, 0x00, 0x11, 0x58, 0x48, 0x00, 0x00, 0x04, 0x49, 0x00, 0x0e, 0xbc,
-0x00, 0x14, 0x00, 0x0b, 0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x80, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xf7, 0xe4, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x90, 0x00, 0x00,
-0x02, 0x13, 0x80, 0x00, 0x50, 0x03, 0x80, 0x20, 0x5c, 0xf0, 0x80, 0x44, 0x4e, 0xf2, 0x00, 0x08,
-0x3e, 0x1f, 0xe2, 0x78, 0x44, 0x2f, 0xff, 0xff, 0x48, 0x00, 0x00, 0x3e, 0x3e, 0x1f, 0xe2, 0x78,
-0x50, 0x33, 0x80, 0x2c, 0x58, 0x20, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06, 0x08, 0x41, 0x80, 0x01,
-0x18, 0x41, 0x00, 0x01, 0x50, 0x50, 0x80, 0x15, 0x4c, 0x22, 0xff, 0xfa, 0x2e, 0x27, 0xe6, 0x20,
-0x4e, 0x22, 0x00, 0x2e, 0x2e, 0x87, 0xe2, 0x26, 0x2e, 0xa7, 0xe2, 0x62, 0x44, 0x40, 0x00, 0x00,
-0x40, 0x65, 0x20, 0x01, 0x54, 0x33, 0x00, 0xff, 0x48, 0x00, 0x00, 0x16, 0x00, 0x20, 0x80, 0x00,
-0x45, 0xe0, 0x00, 0xff, 0x4c, 0x2f, 0x00, 0x0e, 0x40, 0x51, 0x0c, 0x01, 0x40, 0xf1, 0x0c, 0x06,
-0x4e, 0xf2, 0x00, 0x06, 0x10, 0x40, 0x80, 0x00, 0x48, 0x00, 0x00, 0x04, 0x10, 0x50, 0x80, 0x00,
-0x50, 0x10, 0x80, 0x01, 0x3e, 0x5f, 0xe2, 0x8d, 0x4c, 0x12, 0xff, 0xea, 0x48, 0x00, 0x00, 0x08,
-0x18, 0x20, 0x80, 0x01, 0x3e, 0x4f, 0xe2, 0x8d, 0x4c, 0x12, 0x7f, 0xfc, 0x00, 0x10, 0x00, 0x00,
-0x00, 0x80, 0x00, 0x01, 0x3e, 0x28, 0x02, 0x85, 0x40, 0xa4, 0x04, 0x06, 0x44, 0x00, 0x00, 0x03,
-0x01, 0xe1, 0x00, 0x00, 0x46, 0x40, 0x02, 0x4b, 0x46, 0x50, 0x04, 0xc4, 0x44, 0x60, 0x00, 0x00,
-0x40, 0x23, 0x28, 0x1a, 0x40, 0x20, 0x28, 0x1b, 0x58, 0x42, 0x0a, 0x58, 0x58, 0x52, 0x8b, 0x40,
-0x5d, 0xc0, 0x80, 0x0f, 0x40, 0xa0, 0xa0, 0x06, 0x44, 0x30, 0x00, 0x01, 0x40, 0x02, 0x70, 0x1b,
-0x40, 0x02, 0xf0, 0x1a, 0x40, 0x21, 0xa8, 0x1b, 0x4f, 0xe2, 0x00, 0x14, 0x2f, 0xe0, 0x02, 0x86,
-0x4f, 0xe2, 0x00, 0x10, 0x2e, 0x50, 0x02, 0x87, 0x4e, 0x52, 0x00, 0x0c, 0x58, 0x33, 0x00, 0x00,
-0x58, 0x43, 0x00, 0x00, 0x58, 0x53, 0x00, 0x00, 0x49, 0x00, 0x0a, 0xa6, 0x48, 0x00, 0x00, 0x06,
-0x46, 0x6c, 0x00, 0x00, 0x58, 0x63, 0x00, 0x01, 0x3e, 0x1f, 0xe2, 0x78, 0x58, 0x04, 0x00, 0x00,
-0x49, 0xff, 0xfb, 0x64, 0x00, 0x03, 0x80, 0x0b, 0x54, 0x10, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x0a,
-0x58, 0x13, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00, 0x49, 0xff, 0xf7, 0x3a, 0x58, 0x60, 0x00, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xd4, 0x14, 0x0f, 0x80, 0x03, 0x44, 0x40, 0x00, 0x01,
-0x04, 0x00, 0x00, 0x02, 0x14, 0x0f, 0x80, 0x02, 0x50, 0x70, 0x00, 0x20, 0x00, 0x63, 0x80, 0x01,
-0x00, 0x83, 0x80, 0x00, 0x4c, 0x62, 0x40, 0x06, 0x49, 0x00, 0x04, 0x9e, 0x48, 0x00, 0x00, 0x08,
-0x44, 0x10, 0x00, 0x02, 0x4c, 0x60, 0xc0, 0x04, 0x49, 0x00, 0x04, 0xb2, 0x44, 0x20, 0x00, 0x04,
-0x4c, 0x81, 0x41, 0x5c, 0x44, 0x30, 0x00, 0x01, 0x4c, 0x61, 0xc1, 0x2c, 0x2e, 0x57, 0xe2, 0x18,
-0x44, 0x90, 0x00, 0x02, 0x4c, 0x54, 0xc1, 0x86, 0x00, 0xa3, 0x80, 0x1e, 0x01, 0xe3, 0x80, 0x08,
-0x40, 0x55, 0x28, 0x00, 0x40, 0x92, 0xf8, 0x00, 0x40, 0x3f, 0x78, 0x00, 0x40, 0x44, 0x8c, 0xb6,
-0x02, 0x23, 0x80, 0x05, 0x44, 0x10, 0x00, 0x0a, 0x14, 0x2f, 0x80, 0x04, 0x50, 0x9f, 0x80, 0x27,
-0x05, 0xc3, 0x80, 0x03, 0x3e, 0x3e, 0xb2, 0x60, 0x15, 0xcf, 0x80, 0x06, 0x58, 0x5f, 0x00, 0x00,
-0x04, 0x83, 0x80, 0x04, 0x50, 0x73, 0x80, 0x02, 0x14, 0x8f, 0x80, 0x05, 0x14, 0x7f, 0x80, 0x07,
-0x45, 0xc0, 0x00, 0x00, 0x50, 0x8f, 0x80, 0x20, 0x54, 0x62, 0x00, 0xff, 0x5c, 0x03, 0x00, 0x0a,
-0x40, 0x60, 0x80, 0x1b, 0x58, 0xa3, 0x00, 0x00, 0x14, 0x3f, 0x80, 0x01, 0x14, 0x5f, 0x80, 0x00,
-0x58, 0x0e, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x58, 0x14, 0x80, 0x00, 0x4b, 0xe0, 0x0c, 0x01,
-0x04, 0x1f, 0x80, 0x07, 0x58, 0x04, 0x00, 0x00, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xd4, 0x50,
-0x54, 0x6e, 0x00, 0xff, 0x04, 0x3f, 0x80, 0x01, 0x51, 0xce, 0x00, 0x01, 0x04, 0x5f, 0x80, 0x00,
-0x4e, 0x03, 0x00, 0x08, 0x58, 0x45, 0x00, 0x00, 0x58, 0xa2, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0c,
-0x44, 0x60, 0x00, 0x03, 0x4d, 0xc3, 0x7f, 0xda, 0x58, 0x45, 0x00, 0x00, 0x44, 0x60, 0x00, 0x00,
-0x58, 0xa2, 0x80, 0x00, 0x04, 0x7f, 0x80, 0x05, 0x46, 0x86, 0x01, 0x40, 0x14, 0x74, 0x00, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x05, 0xef, 0x80, 0x06, 0x14, 0x4f, 0x80, 0x01, 0x40, 0x7f, 0x00, 0x13,
-0x58, 0x13, 0x80, 0x00, 0x49, 0xff, 0xdb, 0xe4, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
-0x49, 0xff, 0xdc, 0x38, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xdb, 0x3a,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xdb, 0x76, 0x58, 0x03, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xdc, 0xc8, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x49, 0xff, 0xd8, 0x0a, 0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd9, 0x24,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd7, 0xfe, 0x58, 0x03, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd9, 0x18, 0x04, 0x4f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x30, 0x00, 0x14, 0x44, 0x10, 0x00, 0x05, 0x44, 0x00, 0x00, 0x00, 0x49, 0xff, 0xde, 0xfc,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd8, 0x54, 0x58, 0x03, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd8, 0xbe, 0x44, 0x00, 0x00, 0x01, 0x58, 0x20, 0x00, 0x00,
-0x44, 0x30, 0x00, 0x64, 0x44, 0x40, 0x00, 0x00, 0x44, 0x10, 0x00, 0x05, 0x49, 0xff, 0xd9, 0x36,
-0x44, 0x40, 0x00, 0x01, 0x04, 0x1f, 0x80, 0x04, 0x58, 0x52, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00, 0x49, 0xff, 0xde, 0x40, 0x50, 0x25, 0x7f, 0xff,
-0x54, 0x11, 0x00, 0xff, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xda, 0xa2, 0x44, 0x10, 0x00, 0x01,
-0x58, 0x20, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xdd, 0xcc, 0x46, 0x36, 0x03, 0x00,
-0x04, 0x01, 0x80, 0x17, 0x46, 0x26, 0x03, 0x00, 0x58, 0x10, 0x00, 0x01, 0x14, 0x11, 0x80, 0x17,
-0x58, 0x21, 0x00, 0x30, 0x04, 0x51, 0x00, 0x00, 0x40, 0x02, 0xa0, 0x09, 0x40, 0x00, 0x20, 0x08,
-0x14, 0x01, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x04, 0x31, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
-0x58, 0x41, 0x80, 0x50, 0x14, 0x41, 0x00, 0x00, 0x49, 0xff, 0xdd, 0x12, 0x58, 0x03, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xe1, 0xbc, 0x3e, 0x1f, 0xfa, 0x08, 0x00, 0x00, 0x80, 0xb4,
-0x44, 0x50, 0x00, 0x02, 0x44, 0x20, 0x00, 0x01, 0x3e, 0x57, 0xe4, 0x7c, 0x10, 0x20, 0x80, 0xb5,
-0x12, 0x70, 0x80, 0x04, 0x4e, 0x02, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x27, 0x3a,
-0x49, 0xff, 0xd7, 0x6a, 0x44, 0x40, 0x00, 0x01, 0x3e, 0x47, 0xe2, 0x18, 0x48, 0x00, 0x00, 0x5e,
-0x45, 0xc0, 0x00, 0x02, 0x4c, 0x6e, 0x40, 0x5e, 0x2e, 0x97, 0xe2, 0x18, 0x44, 0xa0, 0x00, 0x01,
-0x4c, 0x95, 0x40, 0x58, 0x04, 0x73, 0x80, 0x04, 0x46, 0x96, 0x01, 0x40, 0x49, 0xff, 0xde, 0xe8,
-0x49, 0xff, 0xd7, 0x5a, 0x44, 0x00, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x49, 0xff, 0xe1, 0x88,
-0x14, 0x74, 0x80, 0x00, 0x46, 0x56, 0x01, 0x40, 0x05, 0xc2, 0x80, 0x20, 0x44, 0x20, 0x00, 0x00,
-0x42, 0x4e, 0x08, 0x09, 0x14, 0x42, 0x80, 0x20, 0x3e, 0x27, 0xe4, 0x7c, 0x3e, 0x67, 0xe2, 0x18,
-0x3e, 0x27, 0xfa, 0xbd, 0x48, 0x00, 0x00, 0x32, 0x45, 0xe0, 0x00, 0x05, 0x4c, 0x8f, 0x40, 0x22,
-0x44, 0xa0, 0x00, 0x01, 0x4c, 0x65, 0x40, 0x0c, 0x3e, 0x7f, 0xe2, 0x19, 0x44, 0x10, 0x00, 0x02,
-0x10, 0x13, 0x80, 0x00, 0x49, 0xff, 0xd7, 0x28, 0x48, 0x00, 0x00, 0x10, 0x44, 0x20, 0x00, 0x02,
-0x4c, 0x61, 0x40, 0x20, 0x44, 0x30, 0x00, 0x01, 0x3e, 0x7f, 0xe2, 0x19, 0x10, 0x33, 0x80, 0x00,
-0x49, 0xff, 0xde, 0xae, 0x49, 0xff, 0xd7, 0x20, 0x10, 0x63, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0e,
-0x44, 0x50, 0x00, 0x06, 0x4c, 0x82, 0xc0, 0x0e, 0x44, 0x40, 0x00, 0x01, 0x4c, 0x62, 0x00, 0x06,
-0x45, 0xc0, 0x00, 0x02, 0x4c, 0x6e, 0x40, 0x06, 0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06,
-0x46, 0x1c, 0x00, 0x00, 0x58, 0x10, 0x80, 0xbb, 0x04, 0x2f, 0x80, 0x02, 0x01, 0xe1, 0x00, 0x0b,
-0x54, 0x0f, 0x00, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x04, 0x0f, 0x80, 0x03, 0x49, 0xff, 0xf5, 0x70,
-0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x60, 0x00, 0xff,
-0x44, 0x00, 0x00, 0x14, 0x49, 0xf7, 0xd8, 0x0a, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x70, 0x00, 0x00,
-0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x3a, 0x49, 0xf7, 0xd7, 0xd0,
-0x44, 0x10, 0x00, 0x14, 0x44, 0x5f, 0xe0, 0x00, 0x44, 0x4f, 0xff, 0xed, 0x44, 0x20, 0x00, 0x00,
-0x58, 0x30, 0x00, 0x00, 0x12, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x05, 0x12, 0x50, 0x00, 0x01,
-0x10, 0x40, 0x00, 0x04, 0x50, 0x00, 0x80, 0x06, 0x10, 0x01, 0x80, 0x08, 0x50, 0x21, 0x80, 0x0c,
-0x58, 0x03, 0x00, 0x00, 0x50, 0x1f, 0x80, 0x07, 0x49, 0xff, 0xd2, 0x06, 0x58, 0x60, 0x00, 0x00,
-0x4e, 0x02, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcd, 0x28, 0x44, 0x20, 0x06, 0x83,
-0x49, 0xff, 0xc3, 0x74, 0x48, 0x00, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01,
-0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xdb, 0xce, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x10, 0x00, 0x02,
-0x58, 0x60, 0x00, 0x00, 0x00, 0x20, 0x80, 0x09, 0x3e, 0x0f, 0xcd, 0x54, 0x44, 0x70, 0x00, 0x00,
-0x00, 0x50, 0x00, 0x00, 0x50, 0x33, 0x80, 0x01, 0x4c, 0x51, 0x40, 0x12, 0x04, 0x10, 0x00, 0x01,
-0x4e, 0x12, 0x00, 0x0e, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01, 0x58, 0x80, 0x00, 0x00,
-0x5c, 0xf3, 0x80, 0x18, 0x4e, 0xf3, 0x00, 0x14, 0x48, 0x00, 0x00, 0x0c, 0x40, 0x71, 0x80, 0x13,
-0x44, 0x50, 0x00, 0x18, 0x50, 0x00, 0x00, 0x08, 0x4c, 0x72, 0xff, 0xe4, 0x44, 0x80, 0x00, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xe5, 0xa2, 0x58, 0x04, 0x00, 0x00,
-0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x60, 0x00, 0x02,
-0x58, 0x70, 0x00, 0x00, 0x50, 0x83, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x02, 0xc0, 0x06, 0x49, 0xff, 0xf2, 0xc6, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x02,
-0x4c, 0x02, 0x80, 0x06, 0x44, 0x11, 0x00, 0x03, 0x48, 0x00, 0x00, 0x06, 0x49, 0xff, 0xf2, 0xd2,
-0x44, 0x10, 0x00, 0x00, 0x00, 0x33, 0x00, 0x0b, 0x54, 0x01, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x1a,
-0x00, 0x04, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0e, 0x3e, 0x07, 0xe5, 0x91,
-0x00, 0x23, 0x00, 0x07, 0x3e, 0x27, 0xe5, 0x92, 0x00, 0x63, 0x00, 0x09, 0x3e, 0x67, 0xe5, 0x93,
-0x48, 0x00, 0x00, 0x08, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xf4, 0xa2, 0x58, 0x10, 0x00, 0x00,
-0x58, 0x00, 0x80, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x04, 0xa0, 0x00, 0x02, 0x44, 0x00, 0x00, 0x24, 0x00, 0x25, 0x00, 0x07,
-0x14, 0x2f, 0x80, 0x01, 0x04, 0x85, 0x00, 0x08, 0x49, 0xf7, 0xd7, 0x38, 0x44, 0x50, 0x0f, 0xff,
-0x59, 0xc0, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x60,
-0x49, 0xf7, 0xd6, 0xfe, 0x50, 0x70, 0x00, 0x0c, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x24,
-0x54, 0x94, 0x00, 0x0f, 0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xd1, 0x68, 0x14, 0x83, 0x80, 0x00,
-0x4e, 0x92, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x16, 0x00, 0xa5, 0x00, 0x06,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0xa2, 0xc0, 0x14, 0x3c, 0x4d, 0xff, 0xff, 0x58, 0x04, 0x00, 0x00,
-0x50, 0x13, 0x00, 0x14, 0x4b, 0xe0, 0x10, 0x01, 0x40, 0x34, 0x80, 0x1b, 0x40, 0x35, 0x00, 0x1a,
-0x58, 0x01, 0x80, 0x00, 0x14, 0x03, 0x80, 0x01, 0x48, 0x00, 0x00, 0x12, 0x4e, 0xa3, 0x00, 0x0e,
-0x58, 0x04, 0x00, 0x00, 0x50, 0x13, 0x00, 0x14, 0x50, 0x23, 0x00, 0x10, 0x44, 0x30, 0x00, 0x01,
-0x49, 0xf7, 0xf6, 0xec, 0x48, 0x00, 0x00, 0x04, 0x14, 0x93, 0x80, 0x01, 0x44, 0x30, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x24, 0x44, 0x2f, 0xe0, 0x00, 0x44, 0x1f, 0xff, 0xed, 0x10, 0x33, 0x00, 0x08,
-0x12, 0x03, 0x00, 0x00, 0x12, 0x23, 0x00, 0x01, 0x10, 0x13, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00,
-0x05, 0xef, 0x80, 0x01, 0x58, 0x2e, 0x00, 0x00, 0x11, 0xe3, 0x00, 0x05, 0x44, 0x10, 0x00, 0x01,
-0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xda, 0xd6, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x04, 0x70, 0x00, 0x02, 0x00, 0x03, 0x80, 0x06, 0x50, 0x63, 0x80, 0x20, 0x4e, 0x02, 0x00, 0x10,
-0x04, 0x03, 0x00, 0x01, 0x04, 0x13, 0x00, 0x02, 0x04, 0x23, 0x00, 0x00, 0x49, 0x00, 0x39, 0x50,
-0x00, 0x13, 0x80, 0x0b, 0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x56, 0x00, 0x23, 0x80, 0x06,
-0x4e, 0x22, 0x00, 0x08, 0x00, 0x33, 0x80, 0x0b, 0x54, 0x01, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x4c,
-0x44, 0x00, 0x00, 0x18, 0x00, 0x93, 0x80, 0x07, 0x49, 0xf7, 0xd6, 0xa0, 0x44, 0x50, 0x0f, 0xff,
-0x58, 0x80, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x3c,
-0x49, 0xf7, 0xd6, 0x66, 0x44, 0x20, 0x00, 0x18, 0x44, 0x10, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00,
-0x49, 0xf7, 0xd0, 0xd4, 0x44, 0x40, 0x00, 0x18, 0x44, 0x3f, 0xe0, 0x00, 0x44, 0x2f, 0xff, 0xed,
-0x44, 0x10, 0x00, 0x02, 0x12, 0x43, 0x80, 0x00, 0x12, 0x33, 0x80, 0x01, 0x10, 0x23, 0x80, 0x04,
-0x10, 0x93, 0x80, 0x05, 0x10, 0x13, 0x80, 0x08, 0x50, 0x73, 0x80, 0x0c, 0x04, 0x03, 0x00, 0x00,
-0x14, 0x03, 0x80, 0x00, 0x04, 0x53, 0x00, 0x01, 0x14, 0x53, 0x80, 0x01, 0x04, 0x13, 0x00, 0x00,
-0x04, 0x03, 0x00, 0x01, 0x49, 0x00, 0x39, 0x22, 0x14, 0x03, 0x80, 0x02, 0x44, 0x00, 0x00, 0x00,
-0x58, 0x24, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xda, 0x62,
-0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x04, 0x60, 0x00, 0x02, 0x44, 0x10, 0x00, 0x0c,
-0x03, 0xc3, 0x00, 0x00, 0x58, 0x80, 0x00, 0x00, 0x51, 0xce, 0x7f, 0xe0, 0x40, 0x3e, 0x05, 0x57,
-0x00, 0x03, 0x00, 0x07, 0x50, 0x73, 0x00, 0x20, 0x14, 0x0f, 0x80, 0x03, 0x14, 0x3f, 0x80, 0x02,
-0x4e, 0xa2, 0x00, 0x0e, 0x44, 0x40, 0x00, 0x00, 0x44, 0x20, 0xff, 0xff, 0x14, 0x43, 0x80, 0x02,
-0x14, 0x23, 0x80, 0x00, 0x14, 0x43, 0x80, 0x01, 0x48, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00, 0x06,
-0x50, 0x93, 0x00, 0x28, 0x4e, 0x02, 0x00, 0x3c, 0x3f, 0xcf, 0x83, 0x48, 0x48, 0x00, 0x00, 0x24,
-0x04, 0x23, 0x80, 0x00, 0x54, 0x01, 0x00, 0xff, 0x4e, 0x03, 0x00, 0x0a, 0x04, 0x53, 0x80, 0x01,
-0x04, 0x14, 0x80, 0x00, 0x14, 0x12, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x02, 0xc0, 0x0a, 0x04, 0x03, 0x80, 0x01, 0x04, 0x14, 0x80, 0x00, 0x40, 0x21, 0x20, 0x09,
-0x4b, 0xe0, 0x70, 0x01, 0x50, 0xa5, 0x00, 0x01, 0x50, 0x73, 0x80, 0x0c, 0x40, 0xa5, 0x00, 0x13,
-0x50, 0x94, 0x80, 0x0c, 0x04, 0x3f, 0x80, 0x02, 0x40, 0xf5, 0x0c, 0x06, 0x4e, 0xf3, 0xff, 0xda,
-0x50, 0x03, 0x00, 0x20, 0x44, 0x40, 0x00, 0x00, 0x14, 0x40, 0x00, 0x02, 0x14, 0x40, 0x00, 0x00,
-0x14, 0x40, 0x00, 0x01, 0x44, 0x10, 0x00, 0x0c, 0x48, 0x00, 0x00, 0x36, 0x58, 0xa0, 0x00, 0x00,
-0x3e, 0x2f, 0x83, 0x84, 0x48, 0x00, 0x00, 0x28, 0x04, 0x13, 0x80, 0x00, 0x54, 0x00, 0x80, 0xff,
-0x4e, 0x03, 0x00, 0x0a, 0x04, 0x13, 0x80, 0x01, 0x04, 0x50, 0x80, 0x00, 0x14, 0x54, 0x80, 0x00,
-0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0e, 0x04, 0x03, 0x80, 0x01,
-0x14, 0x2f, 0x80, 0x01, 0x40, 0x10, 0xa0, 0x09, 0x4b, 0xe0, 0x08, 0x01, 0x14, 0x04, 0x80, 0x00,
-0x04, 0x2f, 0x80, 0x01, 0x50, 0xa5, 0x00, 0x01, 0x50, 0x73, 0x80, 0x0c, 0x40, 0xa5, 0x00, 0x13,
-0x50, 0x94, 0x80, 0x0c, 0x04, 0x3f, 0x80, 0x02, 0x40, 0xf5, 0x0c, 0x06, 0x4e, 0xf3, 0xff, 0xd6,
-0x58, 0x1e, 0x00, 0x00, 0x00, 0x23, 0x00, 0x06, 0x4e, 0x22, 0x00, 0x08, 0x00, 0x03, 0x00, 0x0b,
-0x54, 0x00, 0x00, 0x01, 0x4e, 0x02, 0x00, 0x22, 0x50, 0x00, 0x80, 0x20, 0x44, 0x2f, 0xff, 0xed,
-0x44, 0x30, 0x00, 0x0e, 0x12, 0x03, 0x00, 0x00, 0x10, 0x23, 0x00, 0x04, 0x10, 0x33, 0x00, 0x08,
-0x44, 0x10, 0x00, 0x01, 0x05, 0xef, 0x80, 0x03, 0x44, 0x4f, 0xe0, 0x00, 0x11, 0xe3, 0x00, 0x05,
-0x10, 0x14, 0x00, 0x10, 0x04, 0x54, 0x00, 0x02, 0x58, 0x04, 0x00, 0x00, 0x12, 0x42, 0x80, 0x01,
-0x49, 0xff, 0xe9, 0x82, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x00, 0x1a,
-0x2e, 0x07, 0xe5, 0x90, 0x4e, 0x02, 0x00, 0x04, 0x49, 0x00, 0x06, 0x3e, 0x51, 0xff, 0x80, 0x04,
+0x40, 0x22, 0x00, 0x10, 0x48, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x00, 0x2e, 0x67, 0xdf, 0xbe,
+0x54, 0x03, 0x00, 0x20, 0x4e, 0x02, 0x00, 0x30, 0x44, 0x4f, 0xff, 0xf8, 0x42, 0x50, 0x90, 0x00,
+0x44, 0x30, 0x00, 0x07, 0x46, 0x06, 0x02, 0x00, 0x42, 0x12, 0x8c, 0x01, 0x05, 0xe0, 0x03, 0x43,
+0x40, 0x60, 0x90, 0x08, 0x54, 0x13, 0x00, 0xff, 0x44, 0x6f, 0xff, 0x00, 0x40, 0x5f, 0x18, 0x02,
+0x41, 0xe0, 0x94, 0x04, 0x15, 0xe0, 0x03, 0x43, 0x46, 0x06, 0x02, 0x01, 0x42, 0x11, 0x10, 0x00,
+0x42, 0x50, 0x8c, 0x01, 0x04, 0x20, 0x03, 0x43, 0x41, 0xe2, 0x90, 0x08, 0x54, 0x3f, 0x00, 0xff,
+0x40, 0x11, 0x18, 0x02, 0x40, 0x41, 0x84, 0x04, 0x14, 0x40, 0x03, 0x43, 0x44, 0x00, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x2c, 0x44, 0x5f, 0xff, 0xc0, 0x42, 0x10, 0x94, 0x00, 0x44, 0x40, 0x00, 0x3f,
+0x46, 0x36, 0x02, 0x00, 0x43, 0xe0, 0x90, 0x01, 0x04, 0x61, 0x83, 0x46, 0x40, 0x7f, 0x78, 0x00,
+0x54, 0x13, 0x80, 0xff, 0x44, 0x7f, 0xff, 0x00, 0x40, 0x63, 0x1c, 0x02, 0x41, 0xe0, 0x98, 0x04,
+0x15, 0xe1, 0x83, 0x46, 0x47, 0xe6, 0x02, 0x01, 0x42, 0x31, 0x14, 0x00, 0x42, 0x21, 0x90, 0x01,
+0x04, 0x1f, 0x03, 0x46, 0x40, 0x51, 0x08, 0x00, 0x54, 0x42, 0x80, 0xff, 0x40, 0x30, 0x9c, 0x02,
+0x40, 0x22, 0x0c, 0x04, 0x14, 0x2f, 0x03, 0x46, 0x51, 0xff, 0x80, 0x4c, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02,
+0x3e, 0x2f, 0xdf, 0xbc, 0x50, 0x13, 0x80, 0x20, 0x00, 0x40, 0x80, 0x01, 0x58, 0x60, 0x00, 0x00,
+0x10, 0x41, 0x00, 0x02, 0x00, 0x30, 0x80, 0x02, 0x10, 0x31, 0x00, 0x01, 0x01, 0xe0, 0x80, 0x03,
+0x11, 0xe1, 0x00, 0x0a, 0x00, 0x50, 0x80, 0x04, 0x10, 0x51, 0x00, 0x10, 0x00, 0x00, 0x80, 0x05,
+0x10, 0x01, 0x00, 0x14, 0x00, 0x40, 0x80, 0x06, 0x10, 0x41, 0x00, 0x15, 0x00, 0x30, 0x80, 0x07,
+0x10, 0x31, 0x00, 0x16, 0x01, 0xe0, 0x80, 0x08, 0x11, 0xe1, 0x00, 0x17, 0x00, 0x50, 0x80, 0x09,
+0x10, 0x51, 0x00, 0x18, 0x00, 0x00, 0x80, 0x0a, 0x10, 0x01, 0x00, 0x19, 0x00, 0x40, 0x80, 0x0b,
+0x10, 0x41, 0x00, 0x1a, 0x00, 0x30, 0x80, 0x0c, 0x10, 0x31, 0x00, 0x1b, 0x01, 0xe0, 0x80, 0x0d,
+0x11, 0xe1, 0x00, 0x1c, 0x00, 0x50, 0x80, 0x0e, 0x10, 0x51, 0x00, 0x1d, 0x00, 0x00, 0x80, 0x0f,
+0x10, 0x01, 0x00, 0x1e, 0x00, 0x40, 0x80, 0x10, 0x10, 0x41, 0x00, 0x1f, 0x00, 0x30, 0x80, 0x11,
+0x10, 0x31, 0x00, 0x20, 0x01, 0xe0, 0x80, 0x12, 0x11, 0xe1, 0x00, 0x21, 0x00, 0x50, 0x80, 0x13,
+0x10, 0x51, 0x00, 0x04, 0x00, 0x00, 0x80, 0x14, 0x10, 0x01, 0x00, 0x0b, 0x00, 0x40, 0x80, 0x15,
+0x10, 0x41, 0x00, 0x0c, 0x00, 0x30, 0x80, 0x16, 0x10, 0x31, 0x00, 0x0d, 0x01, 0xe0, 0x80, 0x17,
+0x11, 0xe1, 0x00, 0x11, 0x00, 0x50, 0x80, 0x18, 0x10, 0x51, 0x00, 0x12, 0x00, 0x00, 0x80, 0x19,
+0x10, 0x01, 0x00, 0x13, 0x00, 0x40, 0x80, 0x1a, 0x10, 0x41, 0x00, 0x28, 0x00, 0x30, 0x80, 0x1b,
+0x10, 0x31, 0x00, 0x29, 0x01, 0xe0, 0x80, 0x1c, 0x11, 0xe1, 0x00, 0x2a, 0x00, 0x50, 0x80, 0x1d,
+0x10, 0x51, 0x00, 0x2b, 0x00, 0x00, 0x80, 0x1e, 0x10, 0x01, 0x00, 0x2c, 0x00, 0x40, 0x80, 0x1f,
+0x10, 0x41, 0x00, 0x2d, 0x00, 0x30, 0x80, 0x20, 0x10, 0x31, 0x00, 0x2e, 0x50, 0x31, 0x00, 0x28,
+0x00, 0x00, 0x80, 0x21, 0x10, 0x01, 0x00, 0x2f, 0x01, 0xe0, 0x80, 0x22, 0x11, 0xe1, 0x00, 0x30,
+0x00, 0x50, 0x80, 0x23, 0x10, 0x51, 0x00, 0x31, 0x40, 0x02, 0x80, 0x01, 0x00, 0x40, 0x80, 0x24,
+0x54, 0x00, 0x00, 0xff, 0x10, 0x41, 0x00, 0x32, 0x01, 0xe0, 0x80, 0x25, 0x11, 0xe1, 0x00, 0x33,
+0x00, 0x50, 0x80, 0x26, 0x10, 0x51, 0x00, 0x34, 0x00, 0x40, 0x80, 0x27, 0x10, 0x41, 0x00, 0x35,
+0x01, 0xe0, 0x80, 0x28, 0x11, 0xe1, 0x00, 0x36, 0x00, 0x50, 0x80, 0x29, 0x10, 0x51, 0x00, 0x37,
+0x00, 0x40, 0x80, 0x2a, 0x10, 0x41, 0x00, 0x38, 0x00, 0x21, 0x80, 0x00, 0x44, 0x50, 0x00, 0x7f,
+0x4c, 0x22, 0x80, 0x08, 0x40, 0x40, 0x08, 0x00, 0x4e, 0x22, 0x00, 0x04, 0x10, 0x41, 0x80, 0x00,
+0x50, 0x31, 0x80, 0x01, 0x3e, 0x2f, 0xdf, 0xec, 0x4c, 0x31, 0x7f, 0xf0, 0x50, 0x31, 0x80, 0x02,
+0x00, 0x21, 0x80, 0x00, 0x44, 0x50, 0x00, 0x7f, 0x4c, 0x22, 0x80, 0x08, 0x40, 0x40, 0x08, 0x00,
+0x4e, 0x22, 0x00, 0x04, 0x10, 0x41, 0x80, 0x00, 0x50, 0x31, 0x80, 0x01, 0x3e, 0x5f, 0xdf, 0xf5,
+0x4c, 0x32, 0xff, 0xf0, 0x00, 0x30, 0x80, 0x2b, 0x3e, 0x37, 0xe3, 0x2d, 0x00, 0x00, 0x80, 0x00,
+0x3e, 0x1f, 0xe0, 0x18, 0x49, 0xff, 0xfc, 0x48, 0x00, 0x13, 0x80, 0x0b, 0x54, 0x00, 0x80, 0x01,
+0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xf8, 0x1e,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
+0x04, 0x80, 0x00, 0x02, 0x58, 0x70, 0x00, 0x00, 0x50, 0x64, 0x00, 0x20, 0x00, 0x03, 0x00, 0x00,
+0x4e, 0x02, 0x00, 0x1c, 0x49, 0x00, 0x0c, 0x8a, 0x4e, 0x02, 0x00, 0x08, 0x46, 0x0c, 0x00, 0x00,
+0x58, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x20, 0x20, 0x43, 0x00, 0x06, 0x00, 0x03, 0x00, 0x02,
+0x00, 0x13, 0x00, 0x03, 0x00, 0x23, 0x00, 0x04, 0x20, 0x33, 0x00, 0x05, 0x49, 0x00, 0x0c, 0x50,
+0x49, 0x00, 0x11, 0x58, 0x48, 0x00, 0x00, 0x04, 0x49, 0x00, 0x0e, 0xbc, 0x00, 0x14, 0x00, 0x0b,
+0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x08, 0x58, 0x03, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x49, 0xff, 0xf7, 0xe4, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02, 0x58, 0x90, 0x00, 0x00, 0x02, 0x13, 0x80, 0x00,
+0x50, 0x03, 0x80, 0x20, 0x5c, 0xf0, 0x80, 0x44, 0x4e, 0xf2, 0x00, 0x08, 0x3e, 0x1f, 0xe0, 0x18,
+0x44, 0x2f, 0xff, 0xff, 0x48, 0x00, 0x00, 0x3e, 0x3e, 0x1f, 0xe0, 0x18, 0x50, 0x33, 0x80, 0x2c,
+0x58, 0x20, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06, 0x08, 0x41, 0x80, 0x01, 0x18, 0x41, 0x00, 0x01,
+0x50, 0x50, 0x80, 0x15, 0x4c, 0x22, 0xff, 0xfa, 0x2e, 0x27, 0xe3, 0xc0, 0x4e, 0x22, 0x00, 0x2e,
+0x2e, 0x87, 0xdf, 0xc6, 0x2e, 0xa7, 0xe0, 0x02, 0x44, 0x40, 0x00, 0x00, 0x40, 0x65, 0x20, 0x01,
+0x54, 0x33, 0x00, 0xff, 0x48, 0x00, 0x00, 0x16, 0x00, 0x20, 0x80, 0x00, 0x45, 0xe0, 0x00, 0xff,
+0x4c, 0x2f, 0x00, 0x0e, 0x40, 0x51, 0x0c, 0x01, 0x40, 0xf1, 0x0c, 0x06, 0x4e, 0xf2, 0x00, 0x06,
+0x10, 0x40, 0x80, 0x00, 0x48, 0x00, 0x00, 0x04, 0x10, 0x50, 0x80, 0x00, 0x50, 0x10, 0x80, 0x01,
+0x3e, 0x5f, 0xe0, 0x2d, 0x4c, 0x12, 0xff, 0xea, 0x48, 0x00, 0x00, 0x08, 0x18, 0x20, 0x80, 0x01,
+0x3e, 0x4f, 0xe0, 0x2d, 0x4c, 0x12, 0x7f, 0xfc, 0x00, 0x10, 0x00, 0x00, 0x00, 0x80, 0x00, 0x01,
+0x3e, 0x28, 0x02, 0x85, 0x40, 0xa4, 0x04, 0x06, 0x44, 0x00, 0x00, 0x03, 0x01, 0xe1, 0x00, 0x00,
+0x46, 0x40, 0x02, 0x4b, 0x46, 0x50, 0x04, 0xc4, 0x44, 0x60, 0x00, 0x00, 0x40, 0x23, 0x28, 0x1a,
+0x40, 0x20, 0x28, 0x1b, 0x58, 0x42, 0x0a, 0x58, 0x58, 0x52, 0x8b, 0x40, 0x5d, 0xc0, 0x80, 0x0f,
+0x40, 0xa0, 0xa0, 0x06, 0x44, 0x30, 0x00, 0x01, 0x40, 0x02, 0x70, 0x1b, 0x40, 0x02, 0xf0, 0x1a,
+0x40, 0x21, 0xa8, 0x1b, 0x4f, 0xe2, 0x00, 0x14, 0x2f, 0xe0, 0x02, 0x86, 0x4f, 0xe2, 0x00, 0x10,
+0x2e, 0x50, 0x02, 0x87, 0x4e, 0x52, 0x00, 0x0c, 0x58, 0x33, 0x00, 0x00, 0x58, 0x43, 0x00, 0x00,
+0x58, 0x53, 0x00, 0x00, 0x49, 0x00, 0x0a, 0xa6, 0x48, 0x00, 0x00, 0x06, 0x46, 0x6c, 0x00, 0x00,
+0x58, 0x63, 0x00, 0x01, 0x3e, 0x1f, 0xe0, 0x18, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0xfb, 0x64,
+0x00, 0x03, 0x80, 0x0b, 0x54, 0x10, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x0a, 0x58, 0x13, 0x00, 0x00,
+0x58, 0x04, 0x80, 0x00, 0x49, 0xff, 0xf7, 0x3a, 0x58, 0x60, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xd4, 0x14, 0x0f, 0x80, 0x03, 0x44, 0x40, 0x00, 0x01, 0x04, 0x00, 0x00, 0x02,
+0x14, 0x0f, 0x80, 0x02, 0x50, 0x70, 0x00, 0x20, 0x00, 0x63, 0x80, 0x01, 0x00, 0x83, 0x80, 0x00,
+0x4c, 0x62, 0x40, 0x06, 0x49, 0x00, 0x04, 0x9e, 0x48, 0x00, 0x00, 0x08, 0x44, 0x10, 0x00, 0x02,
+0x4c, 0x60, 0xc0, 0x04, 0x49, 0x00, 0x04, 0xb2, 0x44, 0x20, 0x00, 0x04, 0x4c, 0x81, 0x41, 0x5c,
+0x44, 0x30, 0x00, 0x01, 0x4c, 0x61, 0xc1, 0x2c, 0x2e, 0x57, 0xdf, 0xb8, 0x44, 0x90, 0x00, 0x02,
+0x4c, 0x54, 0xc1, 0x86, 0x00, 0xa3, 0x80, 0x1e, 0x01, 0xe3, 0x80, 0x08, 0x40, 0x55, 0x28, 0x00,
+0x40, 0x92, 0xf8, 0x00, 0x40, 0x3f, 0x78, 0x00, 0x40, 0x44, 0x8c, 0xb6, 0x02, 0x23, 0x80, 0x05,
+0x44, 0x10, 0x00, 0x0a, 0x14, 0x2f, 0x80, 0x04, 0x50, 0x9f, 0x80, 0x27, 0x05, 0xc3, 0x80, 0x03,
+0x3e, 0x3e, 0xb2, 0x60, 0x15, 0xcf, 0x80, 0x06, 0x58, 0x5f, 0x00, 0x00, 0x04, 0x83, 0x80, 0x04,
+0x50, 0x73, 0x80, 0x02, 0x14, 0x8f, 0x80, 0x05, 0x14, 0x7f, 0x80, 0x07, 0x45, 0xc0, 0x00, 0x00,
+0x50, 0x8f, 0x80, 0x20, 0x54, 0x62, 0x00, 0xff, 0x5c, 0x03, 0x00, 0x0a, 0x40, 0x60, 0x80, 0x1b,
+0x58, 0xa3, 0x00, 0x00, 0x14, 0x3f, 0x80, 0x01, 0x14, 0x5f, 0x80, 0x00, 0x58, 0x0e, 0x00, 0x00,
+0x58, 0x24, 0x00, 0x00, 0x58, 0x14, 0x80, 0x00, 0x4b, 0xe0, 0x0c, 0x01, 0x04, 0x1f, 0x80, 0x07,
+0x58, 0x04, 0x00, 0x00, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xd4, 0x0a, 0x54, 0x6e, 0x00, 0xff,
+0x04, 0x3f, 0x80, 0x01, 0x51, 0xce, 0x00, 0x01, 0x04, 0x5f, 0x80, 0x00, 0x4e, 0x03, 0x00, 0x08,
+0x58, 0x45, 0x00, 0x00, 0x58, 0xa2, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x60, 0x00, 0x03,
+0x4d, 0xc3, 0x7f, 0xda, 0x58, 0x45, 0x00, 0x00, 0x44, 0x60, 0x00, 0x00, 0x58, 0xa2, 0x80, 0x00,
+0x04, 0x7f, 0x80, 0x05, 0x46, 0x86, 0x01, 0x40, 0x14, 0x74, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x05, 0xef, 0x80, 0x06, 0x14, 0x4f, 0x80, 0x01, 0x40, 0x7f, 0x00, 0x13, 0x58, 0x13, 0x80, 0x00,
+0x49, 0xff, 0xdb, 0x9e, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xdb, 0xf2,
+0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xda, 0xf4, 0x58, 0x03, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xdb, 0x30, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x49, 0xff, 0xdc, 0x82, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xd7, 0xc4,
+0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xd8, 0xde, 0x58, 0x03, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd7, 0xb8, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x49, 0xff, 0xd8, 0xd2, 0x04, 0x4f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x01, 0x44, 0x30, 0x00, 0x64,
+0x44, 0x10, 0x00, 0x05, 0x44, 0x00, 0x00, 0x00, 0x49, 0xff, 0xde, 0xb6, 0x58, 0x03, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd8, 0x0e, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x49, 0xff, 0xd8, 0x78, 0x44, 0x00, 0x00, 0x01, 0x58, 0x20, 0x00, 0x00, 0x44, 0x30, 0x00, 0x64,
+0x44, 0x40, 0x00, 0x00, 0x44, 0x10, 0x00, 0x05, 0x49, 0xff, 0xd8, 0xf0, 0x44, 0x40, 0x00, 0x01,
+0x04, 0x1f, 0x80, 0x04, 0x58, 0x52, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x58, 0x25, 0x00, 0x00, 0x49, 0xff, 0xdd, 0xfa, 0x50, 0x25, 0x7f, 0xff, 0x54, 0x11, 0x00, 0xff,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xda, 0x5c, 0x44, 0x10, 0x00, 0x01, 0x58, 0x20, 0x80, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xdd, 0x86, 0x46, 0x36, 0x03, 0x00, 0x04, 0x01, 0x80, 0x17,
+0x46, 0x26, 0x03, 0x00, 0x58, 0x10, 0x00, 0x01, 0x14, 0x11, 0x80, 0x17, 0x58, 0x21, 0x00, 0x30,
+0x04, 0x51, 0x00, 0x00, 0x40, 0x02, 0xa0, 0x09, 0x40, 0x00, 0x20, 0x08, 0x14, 0x01, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x04, 0x31, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x58, 0x41, 0x80, 0x50,
+0x14, 0x41, 0x00, 0x00, 0x49, 0xff, 0xdc, 0xcc, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x49, 0xff, 0xe1, 0x76, 0x3e, 0x1f, 0xf7, 0xa8, 0x00, 0x00, 0x80, 0xb4, 0x44, 0x50, 0x00, 0x02,
+0x44, 0x20, 0x00, 0x01, 0x3e, 0x57, 0xe2, 0x1c, 0x10, 0x20, 0x80, 0xb5, 0x12, 0x70, 0x80, 0x04,
+0x4e, 0x02, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x49, 0x00, 0x27, 0x52, 0x49, 0xff, 0xd7, 0x24,
+0x44, 0x40, 0x00, 0x01, 0x3e, 0x47, 0xdf, 0xb8, 0x48, 0x00, 0x00, 0x5e, 0x45, 0xc0, 0x00, 0x02,
+0x4c, 0x6e, 0x40, 0x5e, 0x2e, 0x97, 0xdf, 0xb8, 0x44, 0xa0, 0x00, 0x01, 0x4c, 0x95, 0x40, 0x58,
+0x04, 0x73, 0x80, 0x04, 0x46, 0x96, 0x01, 0x40, 0x49, 0xff, 0xde, 0xa2, 0x49, 0xff, 0xd7, 0x14,
+0x44, 0x00, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x49, 0xff, 0xe1, 0x42, 0x14, 0x74, 0x80, 0x00,
+0x46, 0x56, 0x01, 0x40, 0x05, 0xc2, 0x80, 0x20, 0x44, 0x20, 0x00, 0x00, 0x42, 0x4e, 0x08, 0x09,
+0x14, 0x42, 0x80, 0x20, 0x3e, 0x27, 0xe2, 0x1c, 0x3e, 0x67, 0xdf, 0xb8, 0x3e, 0x27, 0xf8, 0x5d,
+0x48, 0x00, 0x00, 0x32, 0x45, 0xe0, 0x00, 0x05, 0x4c, 0x8f, 0x40, 0x22, 0x44, 0xa0, 0x00, 0x01,
+0x4c, 0x65, 0x40, 0x0c, 0x3e, 0x7f, 0xdf, 0xb9, 0x44, 0x10, 0x00, 0x02, 0x10, 0x13, 0x80, 0x00,
+0x49, 0xff, 0xd6, 0xe2, 0x48, 0x00, 0x00, 0x10, 0x44, 0x20, 0x00, 0x02, 0x4c, 0x61, 0x40, 0x20,
+0x44, 0x30, 0x00, 0x01, 0x3e, 0x7f, 0xdf, 0xb9, 0x10, 0x33, 0x80, 0x00, 0x49, 0xff, 0xde, 0x68,
+0x49, 0xff, 0xd6, 0xda, 0x10, 0x63, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x06,
+0x4c, 0x82, 0xc0, 0x0e, 0x44, 0x40, 0x00, 0x01, 0x4c, 0x62, 0x00, 0x06, 0x45, 0xc0, 0x00, 0x02,
+0x4c, 0x6e, 0x40, 0x06, 0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x46, 0x1c, 0x00, 0x00,
+0x58, 0x10, 0x80, 0xbb, 0x04, 0x2f, 0x80, 0x02, 0x01, 0xe1, 0x00, 0x0b, 0x54, 0x0f, 0x00, 0x01,
+0x4e, 0x02, 0x00, 0x08, 0x04, 0x0f, 0x80, 0x03, 0x49, 0xff, 0xf5, 0x70, 0x58, 0x10, 0x00, 0x00,
+0x58, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x60, 0x00, 0xff, 0x44, 0x00, 0x00, 0x14,
+0x49, 0xf7, 0xd7, 0xc4, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x70, 0x00, 0x00, 0x4c, 0x02, 0xc0, 0x06,
+0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x3a, 0x49, 0xf7, 0xd7, 0x8a, 0x44, 0x10, 0x00, 0x14,
+0x44, 0x5f, 0xe0, 0x00, 0x44, 0x4f, 0xff, 0xed, 0x44, 0x20, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00,
+0x12, 0x10, 0x00, 0x00, 0x10, 0x20, 0x00, 0x05, 0x12, 0x50, 0x00, 0x01, 0x10, 0x40, 0x00, 0x04,
+0x50, 0x00, 0x80, 0x06, 0x10, 0x01, 0x80, 0x08, 0x50, 0x21, 0x80, 0x0c, 0x58, 0x03, 0x00, 0x00,
+0x50, 0x1f, 0x80, 0x07, 0x49, 0xff, 0xd1, 0xc0, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x02, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xca, 0xd4, 0x44, 0x20, 0x06, 0x8f, 0x49, 0xff, 0xc3, 0x2e,
+0x48, 0x00, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00,
+0x49, 0xf7, 0xdb, 0x88, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0x9c, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x10, 0x00, 0x02, 0x58, 0x60, 0x00, 0x00,
+0x00, 0x20, 0x80, 0x09, 0x3e, 0x0f, 0xcb, 0x00, 0x44, 0x70, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
+0x50, 0x33, 0x80, 0x01, 0x4c, 0x51, 0x40, 0x12, 0x04, 0x10, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x0e,
+0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01, 0x58, 0x80, 0x00, 0x00, 0x5c, 0xf3, 0x80, 0x18,
+0x4e, 0xf3, 0x00, 0x14, 0x48, 0x00, 0x00, 0x0c, 0x40, 0x71, 0x80, 0x13, 0x44, 0x50, 0x00, 0x18,
+0x50, 0x00, 0x00, 0x08, 0x4c, 0x72, 0xff, 0xe4, 0x44, 0x80, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xe5, 0x62, 0x58, 0x04, 0x00, 0x00, 0x3a, 0x6f, 0xa0, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x60, 0x00, 0x02, 0x58, 0x70, 0x00, 0x00,
+0x50, 0x83, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x06,
+0x49, 0xff, 0xf2, 0xc6, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0x80, 0x06,
+0x44, 0x11, 0x00, 0x03, 0x48, 0x00, 0x00, 0x06, 0x49, 0xff, 0xf2, 0xd2, 0x44, 0x10, 0x00, 0x00,
+0x00, 0x33, 0x00, 0x0b, 0x54, 0x01, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x00,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0e, 0x3e, 0x07, 0xe3, 0x31, 0x00, 0x23, 0x00, 0x07,
+0x3e, 0x27, 0xe3, 0x32, 0x00, 0x63, 0x00, 0x09, 0x3e, 0x67, 0xe3, 0x33, 0x48, 0x00, 0x00, 0x08,
+0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xf4, 0xa2, 0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00,
+0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4,
+0x04, 0xa0, 0x00, 0x02, 0x44, 0x00, 0x00, 0x24, 0x00, 0x25, 0x00, 0x07, 0x14, 0x2f, 0x80, 0x01,
+0x04, 0x85, 0x00, 0x08, 0x49, 0xf7, 0xd6, 0xf2, 0x44, 0x50, 0x0f, 0xff, 0x59, 0xc0, 0x00, 0x00,
+0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x60, 0x49, 0xf7, 0xd6, 0xb8,
+0x50, 0x70, 0x00, 0x0c, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x24, 0x54, 0x94, 0x00, 0x0f,
+0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xd1, 0x22, 0x14, 0x83, 0x80, 0x00, 0x4e, 0x92, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x16, 0x00, 0xa5, 0x00, 0x06, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0xa2, 0xc0, 0x14, 0x3c, 0x4d, 0xff, 0xff, 0x58, 0x04, 0x00, 0x00, 0x50, 0x13, 0x00, 0x14,
+0x4b, 0xe0, 0x10, 0x01, 0x40, 0x34, 0x80, 0x1b, 0x40, 0x35, 0x00, 0x1a, 0x58, 0x01, 0x80, 0x00,
+0x14, 0x03, 0x80, 0x01, 0x48, 0x00, 0x00, 0x12, 0x4e, 0xa3, 0x00, 0x0e, 0x58, 0x04, 0x00, 0x00,
+0x50, 0x13, 0x00, 0x14, 0x50, 0x23, 0x00, 0x10, 0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xf6, 0xa6,
+0x48, 0x00, 0x00, 0x04, 0x14, 0x93, 0x80, 0x01, 0x44, 0x30, 0x00, 0x01, 0x44, 0x00, 0x00, 0x24,
+0x44, 0x2f, 0xe0, 0x00, 0x44, 0x1f, 0xff, 0xed, 0x10, 0x33, 0x00, 0x08, 0x12, 0x03, 0x00, 0x00,
+0x12, 0x23, 0x00, 0x01, 0x10, 0x13, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x05, 0xef, 0x80, 0x01,
+0x58, 0x2e, 0x00, 0x00, 0x11, 0xe3, 0x00, 0x05, 0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00,
+0x49, 0xf7, 0xda, 0x90, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x70, 0x00, 0x02,
+0x00, 0x03, 0x80, 0x06, 0x50, 0x63, 0x80, 0x20, 0x4e, 0x02, 0x00, 0x10, 0x04, 0x03, 0x00, 0x01,
+0x04, 0x13, 0x00, 0x02, 0x04, 0x23, 0x00, 0x00, 0x49, 0x00, 0x39, 0xa6, 0x00, 0x13, 0x80, 0x0b,
+0x54, 0x00, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x56, 0x00, 0x23, 0x80, 0x06, 0x4e, 0x22, 0x00, 0x08,
+0x00, 0x33, 0x80, 0x0b, 0x54, 0x01, 0x80, 0x01, 0x4e, 0x02, 0x00, 0x4c, 0x44, 0x00, 0x00, 0x18,
+0x00, 0x93, 0x80, 0x07, 0x49, 0xf7, 0xd6, 0x5a, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x80, 0x00, 0x00,
+0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x3c, 0x49, 0xf7, 0xd6, 0x20,
+0x44, 0x20, 0x00, 0x18, 0x44, 0x10, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00, 0x49, 0xf7, 0xd0, 0x8e,
+0x44, 0x40, 0x00, 0x18, 0x44, 0x3f, 0xe0, 0x00, 0x44, 0x2f, 0xff, 0xed, 0x44, 0x10, 0x00, 0x02,
+0x12, 0x43, 0x80, 0x00, 0x12, 0x33, 0x80, 0x01, 0x10, 0x23, 0x80, 0x04, 0x10, 0x93, 0x80, 0x05,
+0x10, 0x13, 0x80, 0x08, 0x50, 0x73, 0x80, 0x0c, 0x04, 0x03, 0x00, 0x00, 0x14, 0x03, 0x80, 0x00,
+0x04, 0x53, 0x00, 0x01, 0x14, 0x53, 0x80, 0x01, 0x04, 0x13, 0x00, 0x00, 0x04, 0x03, 0x00, 0x01,
+0x49, 0x00, 0x39, 0x78, 0x14, 0x03, 0x80, 0x02, 0x44, 0x00, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x01, 0x58, 0x30, 0x00, 0x00, 0x49, 0xf7, 0xda, 0x1c, 0x44, 0x00, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xec, 0x04, 0x60, 0x00, 0x02, 0x44, 0x10, 0x00, 0x0c, 0x03, 0xc3, 0x00, 0x00,
+0x58, 0x80, 0x00, 0x00, 0x51, 0xce, 0x7f, 0xe0, 0x40, 0x3e, 0x05, 0x57, 0x00, 0x03, 0x00, 0x07,
+0x50, 0x73, 0x00, 0x20, 0x14, 0x0f, 0x80, 0x03, 0x14, 0x3f, 0x80, 0x02, 0x4e, 0xa2, 0x00, 0x0e,
+0x44, 0x40, 0x00, 0x00, 0x44, 0x20, 0xff, 0xff, 0x14, 0x43, 0x80, 0x02, 0x14, 0x23, 0x80, 0x00,
+0x14, 0x43, 0x80, 0x01, 0x48, 0x00, 0x00, 0x76, 0x00, 0x03, 0x00, 0x06, 0x50, 0x93, 0x00, 0x28,
+0x4e, 0x02, 0x00, 0x3c, 0x3f, 0xcf, 0x84, 0x80, 0x48, 0x00, 0x00, 0x24, 0x04, 0x23, 0x80, 0x00,
+0x54, 0x01, 0x00, 0xff, 0x4e, 0x03, 0x00, 0x0a, 0x04, 0x53, 0x80, 0x01, 0x04, 0x14, 0x80, 0x00,
+0x14, 0x12, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0a,
+0x04, 0x03, 0x80, 0x01, 0x04, 0x14, 0x80, 0x00, 0x40, 0x21, 0x20, 0x09, 0x4b, 0xe0, 0x70, 0x01,
+0x50, 0xa5, 0x00, 0x01, 0x50, 0x73, 0x80, 0x0c, 0x40, 0xa5, 0x00, 0x13, 0x50, 0x94, 0x80, 0x0c,
+0x04, 0x3f, 0x80, 0x02, 0x40, 0xf5, 0x0c, 0x06, 0x4e, 0xf3, 0xff, 0xda, 0x50, 0x03, 0x00, 0x20,
+0x44, 0x40, 0x00, 0x00, 0x14, 0x40, 0x00, 0x02, 0x14, 0x40, 0x00, 0x00, 0x14, 0x40, 0x00, 0x01,
+0x44, 0x10, 0x00, 0x0c, 0x48, 0x00, 0x00, 0x36, 0x58, 0xa0, 0x00, 0x00, 0x3e, 0x2f, 0x84, 0xbc,
+0x48, 0x00, 0x00, 0x28, 0x04, 0x13, 0x80, 0x00, 0x54, 0x00, 0x80, 0xff, 0x4e, 0x03, 0x00, 0x0a,
+0x04, 0x13, 0x80, 0x01, 0x04, 0x50, 0x80, 0x00, 0x14, 0x54, 0x80, 0x00, 0x48, 0x00, 0x00, 0x12,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0e, 0x04, 0x03, 0x80, 0x01, 0x14, 0x2f, 0x80, 0x01,
+0x40, 0x10, 0xa0, 0x09, 0x4b, 0xe0, 0x08, 0x01, 0x14, 0x04, 0x80, 0x00, 0x04, 0x2f, 0x80, 0x01,
+0x50, 0xa5, 0x00, 0x01, 0x50, 0x73, 0x80, 0x0c, 0x40, 0xa5, 0x00, 0x13, 0x50, 0x94, 0x80, 0x0c,
+0x04, 0x3f, 0x80, 0x02, 0x40, 0xf5, 0x0c, 0x06, 0x4e, 0xf3, 0xff, 0xd6, 0x58, 0x1e, 0x00, 0x00,
+0x00, 0x23, 0x00, 0x06, 0x4e, 0x22, 0x00, 0x08, 0x00, 0x03, 0x00, 0x0b, 0x54, 0x00, 0x00, 0x01,
+0x4e, 0x02, 0x00, 0x22, 0x50, 0x00, 0x80, 0x20, 0x44, 0x2f, 0xff, 0xed, 0x44, 0x30, 0x00, 0x0e,
+0x12, 0x03, 0x00, 0x00, 0x10, 0x23, 0x00, 0x04, 0x10, 0x33, 0x00, 0x08, 0x44, 0x10, 0x00, 0x01,
+0x05, 0xef, 0x80, 0x03, 0x44, 0x4f, 0xe0, 0x00, 0x11, 0xe3, 0x00, 0x05, 0x10, 0x14, 0x00, 0x10,
+0x04, 0x54, 0x00, 0x02, 0x58, 0x04, 0x00, 0x00, 0x12, 0x42, 0x80, 0x01, 0x49, 0xff, 0xe9, 0x70,
+0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x00, 0x1a, 0x2e, 0x07, 0xe3, 0x30,
+0x4e, 0x02, 0x00, 0x04, 0x49, 0x00, 0x06, 0x3e, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x06, 0x62,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x3e, 0x7f, 0xf6, 0xa8, 0x00, 0x63, 0x80, 0x00, 0x4e, 0x63, 0x00, 0x12,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0xa0, 0x50, 0x03, 0x80, 0x08, 0x49, 0xf7, 0xcf, 0x5e,
+0x44, 0x20, 0x00, 0x01, 0x10, 0x23, 0x80, 0x00, 0x3c, 0x6f, 0xf8, 0x84, 0x3c, 0x6f, 0xf8, 0x83,
+0x46, 0x07, 0xff, 0xff, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x01, 0x58, 0x00, 0x0f, 0xff,
+0x49, 0xff, 0xc8, 0xec, 0x49, 0xf7, 0xc9, 0xda, 0x3c, 0x0f, 0xfd, 0xab, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x80, 0xff, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x22, 0xc0, 0x06, 0x50, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x08, 0x44, 0x50, 0x00, 0x03,
+0x4c, 0x22, 0xc0, 0x06, 0x50, 0x00, 0x7f, 0xfe, 0x54, 0x00, 0x00, 0xff, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x10, 0x01, 0x15, 0x2e, 0x07, 0xe3, 0x34,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0c, 0x44, 0x40, 0x00, 0x00, 0x3e, 0x47, 0xe3, 0x3e,
+0x3e, 0x47, 0xe3, 0x34, 0x3e, 0x0f, 0xf7, 0x50, 0x49, 0x00, 0x0d, 0x22, 0x51, 0xff, 0x80, 0x04,
0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x49, 0x00, 0x06, 0x62, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x7f, 0xf9, 0x08, 0x00, 0x63, 0x80, 0x00,
-0x4e, 0x63, 0x00, 0x12, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0xa0, 0x50, 0x03, 0x80, 0x08,
-0x49, 0xf7, 0xcf, 0xa4, 0x44, 0x20, 0x00, 0x01, 0x10, 0x23, 0x80, 0x00, 0x3c, 0x6f, 0xf9, 0x1c,
-0x3c, 0x6f, 0xf9, 0x1b, 0x46, 0x07, 0xff, 0xff, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x01,
-0x58, 0x00, 0x0f, 0xff, 0x49, 0xff, 0xc9, 0x32, 0x49, 0xf7, 0xca, 0x20, 0x3c, 0x0f, 0xfe, 0x43,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x80, 0xff,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x06, 0x50, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x08,
-0x44, 0x50, 0x00, 0x03, 0x4c, 0x22, 0xc0, 0x06, 0x50, 0x00, 0x7f, 0xfe, 0x54, 0x00, 0x00, 0xff,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x10, 0x01, 0x15,
-0x2e, 0x07, 0xe5, 0x94, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x0c, 0x44, 0x40, 0x00, 0x00,
-0x3e, 0x47, 0xe5, 0x9e, 0x3e, 0x47, 0xe5, 0x94, 0x3e, 0x0f, 0xf9, 0xb0, 0x49, 0x00, 0x0d, 0x22,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x46, 0x00, 0x01, 0x15, 0x2e, 0x27, 0xe5, 0x94, 0x4e, 0x23, 0x00, 0x3e,
-0x44, 0x30, 0x00, 0x01, 0x3e, 0x37, 0xe5, 0x94, 0x3e, 0x27, 0xe5, 0x9d, 0x3e, 0x27, 0xe5, 0x9c,
-0x46, 0x06, 0x01, 0x00, 0x04, 0x10, 0x00, 0x13, 0x40, 0x50, 0x80, 0x13, 0x46, 0x06, 0x02, 0x04,
-0x3c, 0x5f, 0xf9, 0x66, 0x58, 0x00, 0x01, 0x08, 0x40, 0x11, 0x9c, 0x08, 0x44, 0x40, 0x00, 0xc0,
-0x3e, 0x27, 0xe5, 0xa2, 0x3c, 0x2b, 0xf2, 0xd0, 0x14, 0x10, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00,
-0x14, 0x10, 0x00, 0x00, 0x46, 0x06, 0x01, 0x70, 0x05, 0xe0, 0x00, 0x01, 0x46, 0x1a, 0x00, 0x00,
-0x58, 0x5f, 0x00, 0x10, 0x14, 0x50, 0x00, 0x01, 0x14, 0x20, 0x80, 0x5f, 0x3e, 0x37, 0xe5, 0x9e,
-0x3e, 0x0f, 0xf9, 0xb0, 0x3e, 0x1f, 0x17, 0x6c, 0x49, 0x00, 0x0c, 0xbc, 0x3e, 0x0f, 0xf9, 0xb0,
-0x44, 0x10, 0x00, 0x65, 0x49, 0x00, 0x0d, 0xc6, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x2e, 0x17, 0xe4, 0x78,
-0x54, 0x90, 0x00, 0xff, 0x4e, 0x13, 0x00, 0x0e, 0x46, 0x15, 0x00, 0x00, 0x58, 0x10, 0x82, 0x08,
-0x04, 0x00, 0x80, 0x00, 0x40, 0x00, 0x10, 0x09, 0x40, 0x00, 0x10, 0x08, 0x48, 0x00, 0x00, 0x10,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x0e, 0x46, 0x15, 0x00, 0x29, 0x58, 0x10, 0x80, 0x18,
-0x04, 0x50, 0x80, 0x00, 0x42, 0x02, 0xd8, 0x09, 0x42, 0x00, 0x5c, 0x09, 0x14, 0x00, 0x80, 0x00,
-0x46, 0x88, 0x00, 0xc0, 0x58, 0x84, 0x00, 0x70, 0x05, 0xe4, 0x00, 0x00, 0x46, 0xa6, 0x03, 0x00,
-0x58, 0x6f, 0x00, 0x20, 0x14, 0x64, 0x00, 0x00, 0x58, 0xa5, 0x00, 0x7c, 0x05, 0xc4, 0x00, 0x00,
-0x46, 0x6a, 0x00, 0x00, 0x42, 0x7e, 0x40, 0x08, 0x14, 0x74, 0x00, 0x00, 0x58, 0x45, 0x00, 0x00,
-0x04, 0x75, 0x00, 0x00, 0x59, 0xc4, 0x00, 0x00, 0x44, 0x80, 0x00, 0x00, 0x14, 0x4f, 0x80, 0x01,
-0x44, 0x00, 0x00, 0x64, 0x49, 0xff, 0xd3, 0x38, 0x04, 0x4f, 0x80, 0x01, 0x04, 0x32, 0x00, 0x00,
-0x04, 0x2e, 0x00, 0x00, 0x42, 0x01, 0x50, 0x0b, 0x46, 0x26, 0x03, 0x00, 0x50, 0x84, 0x00, 0x01,
-0x58, 0x21, 0x00, 0x7c, 0x4e, 0x03, 0x00, 0x14, 0x04, 0x53, 0x00, 0x00, 0x58, 0x12, 0x80, 0x02,
-0x14, 0x13, 0x00, 0x00, 0x44, 0x50, 0x00, 0x06, 0x04, 0x03, 0x00, 0x00, 0x43, 0xe0, 0x04, 0x09,
-0x15, 0xe3, 0x00, 0x00, 0x4c, 0x82, 0xff, 0xdc, 0x48, 0x00, 0x00, 0x4e, 0x46, 0x8a, 0x00, 0x00,
-0x04, 0x74, 0x00, 0x00, 0x58, 0xa3, 0x80, 0x02, 0x14, 0xa4, 0x00, 0x00, 0x59, 0xc1, 0x00, 0x00,
-0x04, 0x64, 0x00, 0x00, 0x58, 0xa4, 0x00, 0x00, 0x42, 0x43, 0x04, 0x09, 0x14, 0x44, 0x00, 0x00,
-0x44, 0x70, 0x00, 0x00, 0x04, 0x61, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x04, 0x20, 0x80, 0x00,
-0x40, 0x41, 0x9c, 0x01, 0x40, 0x52, 0x40, 0x08, 0x41, 0xe2, 0x88, 0x04, 0x15, 0xe0, 0x80, 0x00,
-0x48, 0x00, 0x00, 0x24, 0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xd2, 0xee, 0x04, 0x2e, 0x00, 0x00,
-0x04, 0x15, 0x00, 0x00, 0x50, 0x73, 0x80, 0x01, 0x54, 0x00, 0x80, 0x04, 0x4e, 0x02, 0x00, 0x06,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x72, 0xff, 0xec,
-0x48, 0x00, 0x00, 0x28, 0x04, 0x40, 0x80, 0x00, 0x40, 0x21, 0x18, 0x01, 0x40, 0x51, 0x40, 0x08,
-0x41, 0xe2, 0x90, 0x04, 0x15, 0xe0, 0x80, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70, 0x04, 0x40, 0x80, 0x00,
-0x44, 0x00, 0x00, 0x01, 0x40, 0x90, 0x24, 0x0c, 0x40, 0x94, 0x90, 0x04, 0x14, 0x90, 0x80, 0x00,
-0x04, 0x50, 0x80, 0x00, 0x41, 0xe2, 0x80, 0x13, 0x15, 0xe0, 0x80, 0x00, 0x48, 0xff, 0xff, 0xb8,
+0x46, 0x00, 0x01, 0x15, 0x2e, 0x27, 0xe3, 0x34, 0x4e, 0x23, 0x00, 0x3e, 0x44, 0x30, 0x00, 0x01,
+0x3e, 0x37, 0xe3, 0x34, 0x3e, 0x27, 0xe3, 0x3d, 0x3e, 0x27, 0xe3, 0x3c, 0x46, 0x06, 0x01, 0x00,
+0x04, 0x10, 0x00, 0x13, 0x40, 0x50, 0x80, 0x13, 0x46, 0x06, 0x02, 0x04, 0x3c, 0x5f, 0xf8, 0xce,
+0x58, 0x00, 0x01, 0x08, 0x40, 0x11, 0x9c, 0x08, 0x44, 0x40, 0x00, 0xc0, 0x3e, 0x27, 0xe3, 0x42,
+0x3c, 0x2b, 0xf1, 0xa0, 0x14, 0x10, 0x00, 0x00, 0x14, 0x40, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00,
+0x46, 0x06, 0x01, 0x70, 0x05, 0xe0, 0x00, 0x01, 0x46, 0x1a, 0x00, 0x00, 0x58, 0x5f, 0x00, 0x10,
+0x14, 0x50, 0x00, 0x01, 0x14, 0x20, 0x80, 0x5f, 0x3e, 0x37, 0xe3, 0x3e, 0x3e, 0x0f, 0xf7, 0x50,
+0x3e, 0x1f, 0x17, 0xf8, 0x49, 0x00, 0x0c, 0xbc, 0x3e, 0x0f, 0xf7, 0x50, 0x44, 0x10, 0x00, 0x65,
+0x49, 0x00, 0x0d, 0xc6, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x2e, 0x17, 0xe2, 0x18, 0x54, 0x90, 0x00, 0xff,
+0x4e, 0x13, 0x00, 0x0e, 0x46, 0x15, 0x00, 0x00, 0x58, 0x10, 0x82, 0x08, 0x04, 0x00, 0x80, 0x00,
+0x40, 0x00, 0x10, 0x09, 0x40, 0x00, 0x10, 0x08, 0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x12, 0xc0, 0x0e, 0x46, 0x15, 0x00, 0x29, 0x58, 0x10, 0x80, 0x18, 0x04, 0x50, 0x80, 0x00,
+0x42, 0x02, 0xd8, 0x09, 0x42, 0x00, 0x5c, 0x09, 0x14, 0x00, 0x80, 0x00, 0x46, 0x88, 0x00, 0xc0,
+0x58, 0x84, 0x00, 0x70, 0x05, 0xe4, 0x00, 0x00, 0x46, 0xa6, 0x03, 0x00, 0x58, 0x6f, 0x00, 0x20,
+0x14, 0x64, 0x00, 0x00, 0x58, 0xa5, 0x00, 0x7c, 0x05, 0xc4, 0x00, 0x00, 0x46, 0x6a, 0x00, 0x00,
+0x42, 0x7e, 0x40, 0x08, 0x14, 0x74, 0x00, 0x00, 0x58, 0x45, 0x00, 0x00, 0x04, 0x75, 0x00, 0x00,
+0x59, 0xc4, 0x00, 0x00, 0x44, 0x80, 0x00, 0x00, 0x14, 0x4f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x64,
+0x49, 0xff, 0xd2, 0xf2, 0x04, 0x4f, 0x80, 0x01, 0x04, 0x32, 0x00, 0x00, 0x04, 0x2e, 0x00, 0x00,
+0x42, 0x01, 0x50, 0x0b, 0x46, 0x26, 0x03, 0x00, 0x50, 0x84, 0x00, 0x01, 0x58, 0x21, 0x00, 0x7c,
+0x4e, 0x03, 0x00, 0x14, 0x04, 0x53, 0x00, 0x00, 0x58, 0x12, 0x80, 0x02, 0x14, 0x13, 0x00, 0x00,
+0x44, 0x50, 0x00, 0x06, 0x04, 0x03, 0x00, 0x00, 0x43, 0xe0, 0x04, 0x09, 0x15, 0xe3, 0x00, 0x00,
+0x4c, 0x82, 0xff, 0xdc, 0x48, 0x00, 0x00, 0x4e, 0x46, 0x8a, 0x00, 0x00, 0x04, 0x74, 0x00, 0x00,
+0x58, 0xa3, 0x80, 0x02, 0x14, 0xa4, 0x00, 0x00, 0x59, 0xc1, 0x00, 0x00, 0x04, 0x64, 0x00, 0x00,
+0x58, 0xa4, 0x00, 0x00, 0x42, 0x43, 0x04, 0x09, 0x14, 0x44, 0x00, 0x00, 0x44, 0x70, 0x00, 0x00,
+0x04, 0x61, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x04, 0x20, 0x80, 0x00, 0x40, 0x41, 0x9c, 0x01,
+0x40, 0x52, 0x40, 0x08, 0x41, 0xe2, 0x88, 0x04, 0x15, 0xe0, 0x80, 0x00, 0x48, 0x00, 0x00, 0x24,
+0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xd2, 0xa8, 0x04, 0x2e, 0x00, 0x00, 0x04, 0x15, 0x00, 0x00,
+0x50, 0x73, 0x80, 0x01, 0x54, 0x00, 0x80, 0x04, 0x4e, 0x02, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x72, 0xff, 0xec, 0x48, 0x00, 0x00, 0x28,
+0x04, 0x40, 0x80, 0x00, 0x40, 0x21, 0x18, 0x01, 0x40, 0x51, 0x40, 0x08, 0x41, 0xe2, 0x90, 0x04,
+0x15, 0xe0, 0x80, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70, 0x04, 0x40, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01,
-0x40, 0x50, 0x24, 0x0c, 0x40, 0x92, 0x90, 0x04, 0x14, 0x90, 0x80, 0x00, 0x05, 0xe0, 0x80, 0x00,
-0x40, 0x3f, 0x00, 0x13, 0x14, 0x30, 0x80, 0x00, 0x48, 0xff, 0xff, 0xc6, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xec, 0x47, 0xc6, 0x01, 0x20, 0x58, 0xae, 0x00, 0x00, 0x58, 0x95, 0x00, 0x00,
-0x58, 0x84, 0x80, 0x00, 0x58, 0x74, 0x00, 0x00, 0x54, 0x10, 0x80, 0xff, 0x40, 0x30, 0x08, 0x09,
-0x44, 0x60, 0x00, 0x00, 0x3e, 0x2e, 0xbb, 0x90, 0x48, 0x00, 0x00, 0x28, 0x14, 0x1f, 0x80, 0x02,
-0x14, 0x2f, 0x80, 0x01, 0x14, 0x3f, 0x80, 0x03, 0x50, 0x63, 0x00, 0x01, 0x4b, 0xe0, 0x08, 0x01,
-0x04, 0x0e, 0x00, 0x42, 0x04, 0x1f, 0x80, 0x02, 0x04, 0x2f, 0x80, 0x01, 0x04, 0x3f, 0x80, 0x03,
-0x4e, 0x03, 0x00, 0x14, 0x04, 0x45, 0x00, 0x43, 0x4e, 0x43, 0x00, 0x10, 0x04, 0x54, 0x80, 0x47,
-0x4e, 0x53, 0x00, 0x0c, 0x05, 0xe4, 0x00, 0x49, 0x4f, 0xe3, 0x00, 0x08, 0x04, 0x03, 0x80, 0x1c,
-0x54, 0x00, 0x00, 0x04, 0x4e, 0x02, 0x00, 0x3e, 0x44, 0x00, 0x00, 0x04, 0x40, 0xf3, 0x0c, 0x06,
-0x4e, 0xf3, 0xff, 0xd6, 0x48, 0x00, 0x00, 0x3c, 0x46, 0x4a, 0x00, 0x00, 0x04, 0x32, 0x00, 0x5c,
-0x45, 0xe0, 0x00, 0x01, 0x40, 0x5f, 0x04, 0x0c, 0x40, 0x22, 0x8c, 0x04, 0x14, 0x22, 0x00, 0x5c,
-0x46, 0x46, 0x01, 0x20, 0x04, 0x02, 0x00, 0x42, 0x4e, 0x03, 0x00, 0x16, 0x58, 0x52, 0x00, 0x00,
-0x04, 0x22, 0x80, 0x43, 0x4e, 0x23, 0x00, 0x10, 0x59, 0xe2, 0x00, 0x00, 0x04, 0x3f, 0x00, 0x47,
-0x4e, 0x33, 0x00, 0x0a, 0x04, 0x02, 0x00, 0x49, 0x4e, 0x03, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x10, 0x46, 0x2a, 0x00, 0x00, 0x51, 0xe0, 0x80, 0x01, 0x04, 0x31, 0x00, 0x5c,
-0x44, 0x00, 0x00, 0x01, 0x40, 0x50, 0x78, 0x0c, 0x40, 0x12, 0x8c, 0x04, 0x14, 0x11, 0x00, 0x5c,
-0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x26, 0x01, 0x20,
-0x04, 0x41, 0x00, 0x1c, 0x54, 0x02, 0x00, 0x04, 0x4e, 0x03, 0xff, 0xc0, 0x48, 0xff, 0xff, 0xca,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x49, 0x00, 0x39, 0x92, 0x46, 0x36, 0x01, 0x10,
-0x04, 0x21, 0x80, 0x36, 0x46, 0x10, 0x0f, 0xf0, 0x40, 0x51, 0x04, 0x02, 0x4c, 0x50, 0x80, 0x78,
-0x46, 0x16, 0x02, 0x04, 0x46, 0x60, 0x20, 0x30, 0x58, 0x63, 0x08, 0x00, 0x14, 0x60, 0x80, 0x08,
-0x58, 0x00, 0x80, 0x00, 0x04, 0x20, 0x00, 0x3f, 0x44, 0x40, 0x02, 0x00, 0x54, 0x51, 0x0f, 0x00,
-0x4c, 0x52, 0x40, 0x66, 0x54, 0x71, 0x00, 0x0f, 0x44, 0x50, 0x00, 0x07, 0x4c, 0x72, 0xc0, 0x60,
-0x47, 0xe8, 0x38, 0x30, 0x59, 0xef, 0x02, 0x01, 0x15, 0xe0, 0x80, 0x08, 0x44, 0xa0, 0x00, 0x02,
-0x05, 0xc0, 0x00, 0x3f, 0x54, 0x5e, 0x00, 0x1f, 0x4c, 0x55, 0x40, 0x52, 0x46, 0x06, 0x01, 0x20,
-0x04, 0x10, 0x00, 0x20, 0x54, 0x20, 0x81, 0x00, 0x4e, 0x22, 0x00, 0x04, 0x44, 0x20, 0x00, 0x01,
-0x54, 0x10, 0x82, 0x00, 0x3e, 0x27, 0xe6, 0x3f, 0x4e, 0x12, 0x00, 0x04, 0x44, 0x10, 0x00, 0x01,
-0x3e, 0x17, 0xe6, 0x40, 0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x00, 0x80, 0x04, 0x53, 0x00, 0x00,
-0x58, 0x32, 0x83, 0x00, 0x14, 0x33, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xd1, 0xbc,
-0x2e, 0x17, 0xe6, 0x3f, 0x4e, 0x13, 0x00, 0x0c, 0x04, 0x83, 0x00, 0x00, 0x42, 0x44, 0x20, 0x09,
-0x14, 0x43, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xd1, 0xae, 0x2e, 0xa7, 0xe6, 0x40,
-0x4e, 0xa3, 0x00, 0x0e, 0x47, 0xe6, 0x01, 0x20, 0x04, 0x2f, 0x00, 0x20, 0x42, 0x11, 0x24, 0x09,
-0x14, 0x1f, 0x00, 0x20, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xd1, 0x9e, 0x46, 0x06, 0x01, 0x20,
-0x04, 0x10, 0x00, 0x3f, 0x46, 0x40, 0x0f, 0xf0, 0x40, 0x50, 0x90, 0x02, 0x4c, 0x52, 0x00, 0x08,
-0x44, 0x91, 0x00, 0x00, 0x40, 0x80, 0xa4, 0x00, 0x14, 0x80, 0x00, 0x3f, 0x47, 0xc6, 0x01, 0x10,
-0x04, 0xae, 0x00, 0x36, 0x44, 0x00, 0x00, 0xff, 0x40, 0x15, 0x60, 0x09, 0x4c, 0x10, 0x00, 0xc8,
-0x46, 0x26, 0x01, 0x00, 0x04, 0x61, 0x00, 0x13, 0x45, 0xe0, 0x00, 0xcc, 0x40, 0x63, 0x00, 0x13,
-0x4c, 0x1f, 0x00, 0x32, 0x47, 0xc6, 0x00, 0x00, 0x58, 0x0e, 0x00, 0x00, 0x46, 0xa0, 0x30, 0x30,
-0x58, 0x80, 0x00, 0x00, 0x46, 0x99, 0x19, 0x19, 0x58, 0xa5, 0x03, 0x03, 0x58, 0x94, 0x81, 0x91,
-0x44, 0x50, 0x00, 0x1f, 0x14, 0x5e, 0x00, 0x05, 0x14, 0xa0, 0x00, 0x06, 0x14, 0x94, 0x00, 0x13,
-0x58, 0x40, 0x00, 0x00, 0x3c, 0x1d, 0xf9, 0x66, 0x04, 0x02, 0x00, 0x09, 0x4c, 0x60, 0xc0, 0x0e,
-0x41, 0xe0, 0x14, 0x02, 0x4f, 0xe2, 0x00, 0x0a, 0x3e, 0x0f, 0xe5, 0x9c, 0x00, 0x50, 0x00, 0x00,
-0x50, 0x12, 0x80, 0x01, 0x48, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xe5, 0x9c,
-0x10, 0x10, 0x00, 0x00, 0x3c, 0x5d, 0xf9, 0x66, 0x4c, 0x62, 0xc0, 0x08, 0x2e, 0x37, 0xe5, 0x9d,
-0x50, 0x11, 0x80, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x00, 0x2e, 0x47, 0xe5, 0x9c,
-0x3e, 0x17, 0xe5, 0x9d, 0x5c, 0xf2, 0x00, 0x03, 0x4e, 0xf2, 0x00, 0x08, 0x2e, 0x97, 0xe5, 0x9d,
-0x5c, 0xf4, 0x80, 0x0a, 0x4e, 0xf3, 0x00, 0x72, 0x44, 0x50, 0x00, 0x00, 0x3e, 0x57, 0xe5, 0x9d,
-0x3e, 0x57, 0xe5, 0x9c, 0x47, 0xe6, 0x01, 0x20, 0x05, 0xcf, 0x00, 0x20, 0x54, 0xae, 0x02, 0x00,
-0x4e, 0xa3, 0x00, 0x64, 0x58, 0x0f, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3f, 0x44, 0x50, 0x00, 0xff,
-0x40, 0x70, 0xe0, 0x09, 0x4c, 0x72, 0x80, 0x08, 0x46, 0x80, 0x10, 0x00, 0x40, 0x40, 0xa0, 0x00,
-0x14, 0x40, 0x00, 0x3f, 0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x00, 0x70, 0x50, 0xa0, 0x00, 0x10,
-0x04, 0x90, 0x00, 0x00, 0x04, 0x85, 0x00, 0x00, 0x04, 0x15, 0x00, 0x00, 0x59, 0xc0, 0x00, 0x00,
-0x58, 0x20, 0x83, 0x00, 0x14, 0x25, 0x00, 0x00, 0x44, 0x70, 0x00, 0x00, 0x04, 0x50, 0x00, 0x00,
-0x59, 0xe2, 0x80, 0x04, 0x15, 0xe0, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xd0, 0xf4,
-0x04, 0x4e, 0x00, 0x00, 0x50, 0x73, 0x80, 0x01, 0x42, 0x32, 0x08, 0x0b, 0x4e, 0x32, 0x00, 0x08,
-0x44, 0x50, 0x00, 0x64, 0x4c, 0x72, 0xff, 0xf2, 0x48, 0x00, 0x02, 0x88, 0x47, 0xe6, 0x01, 0x20,
-0x04, 0x5f, 0x00, 0x1c, 0x54, 0x24, 0x80, 0x10, 0x58, 0x91, 0x00, 0x01, 0x40, 0x94, 0x94, 0x04,
-0x54, 0x84, 0x01, 0x00, 0x14, 0x9f, 0x00, 0x1c, 0x4e, 0x82, 0x00, 0x0c, 0x46, 0x06, 0x01, 0x20,
-0x58, 0x00, 0x00, 0x80, 0x04, 0x10, 0x00, 0x00, 0x42, 0x10, 0xa4, 0x09, 0x48, 0x00, 0x00, 0x0c,
-0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x00, 0x80, 0x04, 0x40, 0x00, 0x00, 0x45, 0xef, 0xfc, 0xff,
-0x40, 0x12, 0x78, 0x02, 0x14, 0x10, 0x00, 0x00, 0x3c, 0x6f, 0xf9, 0x66, 0x46, 0x36, 0x01, 0x10,
-0x04, 0x11, 0x80, 0x36, 0x46, 0x20, 0x0f, 0xf0, 0x40, 0x50, 0x88, 0x02, 0x4c, 0x51, 0x00, 0x6c,
-0x2e, 0x47, 0xe5, 0xa2, 0x4e, 0x43, 0x00, 0x68, 0x46, 0x36, 0x02, 0x04, 0x04, 0x51, 0x80, 0x44,
-0x04, 0x21, 0x80, 0x44, 0x40, 0x02, 0xc0, 0x09, 0x44, 0x50, 0xff, 0xff, 0x41, 0xe1, 0x14, 0x02,
-0x40, 0x2f, 0x00, 0x00, 0x5c, 0xf1, 0x03, 0xe9, 0x4e, 0xf3, 0x00, 0x56, 0x04, 0x01, 0x80, 0x48,
-0x41, 0xe0, 0x14, 0x02, 0x44, 0x50, 0x00, 0x64, 0x42, 0x4f, 0x14, 0x24, 0x40, 0xf2, 0x08, 0x06,
-0x4e, 0xf2, 0x00, 0x38, 0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x00, 0x80, 0x04, 0x03, 0x00, 0x00,
-0x59, 0xe1, 0x80, 0x00, 0x58, 0x30, 0x02, 0x00, 0x14, 0x33, 0x00, 0x00, 0x04, 0x5f, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x01, 0x58, 0x12, 0x80, 0x08, 0x14, 0x1f, 0x00, 0x01, 0x49, 0xff, 0xd0, 0x7c,
-0x46, 0x06, 0x02, 0x04, 0x44, 0x40, 0x00, 0xc0, 0x44, 0x20, 0x00, 0x80, 0x14, 0x40, 0x00, 0x42,
-0x14, 0x20, 0x00, 0x42, 0x04, 0x53, 0x00, 0x00, 0x46, 0x06, 0x01, 0x20, 0x42, 0x12, 0xa4, 0x09,
-0x14, 0x13, 0x00, 0x00, 0x58, 0x00, 0x00, 0xfc, 0x04, 0x10, 0x00, 0x00, 0x44, 0x50, 0xff, 0x00,
-0x40, 0x20, 0x94, 0x02, 0x4c, 0x22, 0x80, 0x18, 0x50, 0x10, 0x81, 0x00, 0x48, 0x00, 0x00, 0x12,
-0x45, 0xe0, 0x00, 0x01, 0x3f, 0xe7, 0xe5, 0xa2, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x06, 0xf8,
-0x04, 0x20, 0x00, 0x00, 0x46, 0x4f, 0xff, 0x0f, 0x58, 0x42, 0x0f, 0xff, 0x40, 0x11, 0x10, 0x02,
-0x14, 0x10, 0x00, 0x00, 0x46, 0x0a, 0x00, 0x00, 0x58, 0x00, 0x01, 0x6c, 0x04, 0x50, 0x00, 0x00,
-0x54, 0x12, 0x80, 0x01, 0x4e, 0x12, 0x01, 0xd0, 0x04, 0x10, 0x00, 0x00, 0x46, 0xaa, 0x00, 0x00,
-0x42, 0x90, 0x80, 0x09, 0x44, 0x10, 0x00, 0x00, 0x14, 0x90, 0x00, 0x00, 0x46, 0x66, 0x01, 0x20,
-0x14, 0x15, 0x00, 0x5c, 0x58, 0x33, 0x00, 0x00, 0x58, 0x63, 0x00, 0x70, 0x04, 0xa3, 0x00, 0x00,
-0x04, 0x93, 0x00, 0x00, 0x05, 0xe1, 0x80, 0x20, 0x58, 0x21, 0x80, 0x00, 0x58, 0x5f, 0x03, 0x00,
-0x14, 0x51, 0x80, 0x20, 0x04, 0x03, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x58, 0x40, 0x00, 0x04,
-0x14, 0x43, 0x00, 0x00, 0x46, 0x07, 0xff, 0xf7, 0x05, 0xe1, 0x00, 0x42, 0x58, 0x00, 0x0f, 0xff,
-0x40, 0x5f, 0x00, 0x04, 0x14, 0x51, 0x00, 0x42, 0x04, 0x41, 0x80, 0x43, 0x58, 0x61, 0x00, 0x00,
-0x41, 0xe2, 0x00, 0x04, 0x15, 0xe1, 0x80, 0x43, 0x04, 0x53, 0x00, 0x47, 0x46, 0x47, 0xff, 0xf0,
-0x58, 0x42, 0x00, 0x0f, 0x40, 0x02, 0x90, 0x04, 0x14, 0x03, 0x00, 0x47, 0x05, 0xe1, 0x00, 0x49,
-0x40, 0x3f, 0x10, 0x04, 0x14, 0x31, 0x00, 0x49, 0x44, 0x00, 0x00, 0x64, 0x49, 0xff, 0xfd, 0x58,
-0x4e, 0x02, 0x00, 0x24, 0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xfc, 0x6e, 0x4e, 0x02, 0x00, 0x04,
-0x48, 0x00, 0x01, 0x88, 0x44, 0x00, 0x00, 0x64, 0x44, 0x10, 0x00, 0x04, 0x49, 0xff, 0xfd, 0x48,
-0x4e, 0x02, 0x00, 0x14, 0x44, 0x00, 0x00, 0x06, 0x49, 0xff, 0xfc, 0x5e, 0x4e, 0x02, 0x00, 0x04,
-0x48, 0x00, 0x01, 0x78, 0x44, 0x00, 0x01, 0xf4, 0x44, 0x10, 0x00, 0x08, 0x49, 0xff, 0xfd, 0x38,
-0x4e, 0x02, 0x00, 0x04, 0x48, 0x00, 0x01, 0x6e, 0x44, 0x00, 0x00, 0x0a, 0x49, 0xff, 0xfc, 0x4c,
-0x4e, 0x02, 0x00, 0x04, 0x48, 0x00, 0x01, 0x66, 0x47, 0xc6, 0x03, 0x00, 0x59, 0xce, 0x00, 0x7c,
-0x46, 0x78, 0x00, 0xc0, 0x04, 0x6e, 0x00, 0x00, 0x58, 0x3e, 0x00, 0x00, 0x58, 0x80, 0x00, 0x00,
-0x3f, 0xce, 0xbb, 0x90, 0x14, 0x3f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x05, 0x4b, 0xe0, 0x70, 0x01,
-0x04, 0x3f, 0x80, 0x01, 0x04, 0x21, 0x80, 0x00, 0x04, 0x03, 0x80, 0x1c, 0x46, 0x18, 0x00, 0xc0,
-0x42, 0x40, 0x50, 0x0b, 0x50, 0x84, 0x00, 0x01, 0x58, 0x10, 0x80, 0x70, 0x4e, 0x43, 0x00, 0x08,
-0x45, 0xe0, 0x00, 0x64, 0x4c, 0x8f, 0x7f, 0xe8, 0x48, 0x00, 0x01, 0x46, 0x04, 0x60, 0x80, 0x00,
-0x42, 0x83, 0x44, 0x08, 0x14, 0x80, 0x80, 0x00, 0x2e, 0x27, 0xe4, 0x78, 0x4e, 0x22, 0x00, 0x10,
-0x48, 0x00, 0x00, 0x2c, 0x04, 0x10, 0x00, 0x00, 0x40, 0x41, 0x18, 0x01, 0x40, 0x22, 0x40, 0x08,
-0x40, 0x31, 0x04, 0x04, 0x14, 0x30, 0x00, 0x00, 0x48, 0x00, 0x01, 0x24, 0x46, 0x05, 0x00, 0x00,
-0x05, 0xe0, 0x00, 0x82, 0x58, 0x61, 0x00, 0x00, 0x42, 0x5f, 0x60, 0x08, 0x14, 0x50, 0x00, 0x82,
-0x58, 0x80, 0x80, 0x00, 0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xcf, 0x76, 0x04, 0x24, 0x00, 0x00,
-0x42, 0x31, 0x54, 0x0b, 0x50, 0x63, 0x00, 0x01, 0x4e, 0x33, 0x00, 0x4c, 0x44, 0x50, 0x00, 0x64,
-0x4c, 0x62, 0xff, 0xf2, 0x48, 0x00, 0x01, 0x22, 0x44, 0x70, 0x00, 0x01, 0x4c, 0x23, 0xc0, 0x42,
-0x46, 0x45, 0x00, 0x22, 0x44, 0x7e, 0xff, 0xfe, 0x14, 0x72, 0x02, 0x01, 0x46, 0x85, 0x00, 0x29,
-0x04, 0x14, 0x00, 0x05, 0x46, 0x68, 0x00, 0xc0, 0x58, 0x20, 0x80, 0x60, 0x14, 0x24, 0x00, 0x05,
-0x58, 0x63, 0x00, 0x6c, 0x05, 0xe3, 0x00, 0x00, 0x40, 0x5f, 0x20, 0x09, 0x40, 0x52, 0xa0, 0x08,
-0x58, 0x02, 0x80, 0x04, 0x58, 0x83, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x44, 0x60, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xcf, 0x40, 0x04, 0x04, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01,
-0x4e, 0x04, 0x00, 0x08, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf4, 0x48, 0x00, 0x00, 0xee,
-0x46, 0x25, 0x00, 0x22, 0x44, 0x10, 0x00, 0x00, 0x14, 0x11, 0x02, 0x01, 0x46, 0x65, 0x00, 0x29,
-0x04, 0x33, 0x00, 0x05, 0x44, 0x8f, 0xff, 0x9f, 0x41, 0xe1, 0xa0, 0x02, 0x15, 0xe3, 0x00, 0x05,
-0x46, 0x48, 0x00, 0xc0, 0x58, 0x42, 0x00, 0x70, 0x04, 0x62, 0x00, 0x00, 0x42, 0x73, 0x40, 0x09,
-0x14, 0x72, 0x00, 0x00, 0x04, 0x52, 0x00, 0x00, 0x58, 0x82, 0x00, 0x00, 0x42, 0x02, 0xc4, 0x09,
-0x14, 0x02, 0x00, 0x00, 0x44, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xcf, 0x0c,
-0x04, 0x14, 0x00, 0x00, 0x46, 0x08, 0x00, 0xc0, 0x54, 0x20, 0x82, 0x00, 0x50, 0x63, 0x00, 0x01,
-0x4e, 0x23, 0x00, 0x08, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf0, 0x48, 0x00, 0x00, 0xc2,
-0x04, 0x20, 0x00, 0x1c, 0x42, 0x31, 0x14, 0x09, 0x14, 0x30, 0x00, 0x1c, 0x46, 0x75, 0x00, 0x00,
-0x58, 0x73, 0x85, 0x94, 0x05, 0xe3, 0x80, 0x00, 0x58, 0x8f, 0x01, 0x00, 0x14, 0x83, 0x80, 0x00,
-0x46, 0x0a, 0x00, 0x00, 0x04, 0x43, 0x80, 0x00, 0x42, 0x62, 0x20, 0x09, 0x14, 0x63, 0x80, 0x00,
-0x04, 0x10, 0x00, 0x00, 0x58, 0x80, 0x00, 0x00, 0x58, 0x20, 0x80, 0x02, 0x14, 0x20, 0x00, 0x00,
-0x44, 0x60, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x42, 0x5f, 0x04, 0x09, 0x14, 0x50, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xce, 0xd0, 0x04, 0x44, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01,
-0x54, 0x02, 0x00, 0x04, 0x4e, 0x03, 0x00, 0x08, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf2,
-0x48, 0x00, 0x00, 0x94, 0x47, 0xe6, 0x01, 0x20, 0x59, 0xef, 0x00, 0x70, 0x04, 0x0f, 0x00, 0x00,
-0x54, 0x55, 0x01, 0x80, 0x58, 0x10, 0x00, 0x01, 0x14, 0x1f, 0x00, 0x00, 0x54, 0x34, 0x80, 0x10,
-0x04, 0x4f, 0x00, 0x00, 0x46, 0x16, 0x01, 0x20, 0x40, 0x22, 0x90, 0x04, 0x40, 0x01, 0x0c, 0x04,
-0x14, 0x0f, 0x00, 0x00, 0x04, 0x50, 0x80, 0x20, 0x44, 0x4f, 0xfc, 0xff, 0x40, 0x22, 0x90, 0x02,
-0x14, 0x20, 0x80, 0x20, 0x59, 0xe0, 0x80, 0x00, 0x04, 0x3f, 0x00, 0x40, 0x46, 0x57, 0xff, 0xf7,
-0x58, 0x52, 0x8f, 0xff, 0x40, 0x01, 0x94, 0x04, 0x14, 0x0f, 0x00, 0x40, 0x04, 0x20, 0x80, 0x41,
-0x59, 0xe0, 0x80, 0x00, 0x40, 0x41, 0x14, 0x04, 0x14, 0x40, 0x80, 0x41, 0x04, 0x0f, 0x00, 0x46,
-0x46, 0x37, 0xff, 0xff, 0x58, 0x31, 0x8c, 0x0f, 0x40, 0x20, 0x0c, 0x04, 0x14, 0x2f, 0x00, 0x46,
-0x04, 0x50, 0x80, 0x48, 0x46, 0x47, 0xff, 0xf0, 0x58, 0x42, 0x00, 0x0f, 0x40, 0x02, 0x90, 0x04,
-0x14, 0x00, 0x80, 0x48, 0x47, 0xea, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x5b, 0x58, 0x31, 0x00, 0x02,
-0x14, 0x3f, 0x00, 0x5b, 0x46, 0x2a, 0x00, 0x00, 0x05, 0xe1, 0x00, 0x5f, 0x4f, 0xe2, 0x00, 0x0a,
-0x2e, 0x37, 0xe5, 0x9e, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x32, 0xc0, 0x04, 0x49, 0xff, 0xb9, 0x10,
-0x3e, 0x0f, 0xf9, 0xb0, 0x48, 0x00, 0x00, 0x3e, 0x3e, 0x0f, 0xcf, 0x10, 0x49, 0xff, 0xbb, 0x3e,
-0x48, 0xff, 0xfd, 0x76, 0x46, 0x0a, 0x00, 0x00, 0x58, 0x00, 0x01, 0x70, 0x04, 0x50, 0x00, 0x00,
-0x58, 0x32, 0x90, 0x00, 0x14, 0x30, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x13,
-0x14, 0x10, 0x00, 0x00, 0x48, 0xff, 0xfe, 0xb8, 0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70,
-0x04, 0x20, 0x80, 0x00, 0x3e, 0x0f, 0xf9, 0xb0, 0x58, 0x21, 0x20, 0x00, 0x48, 0x00, 0x00, 0x18,
-0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70, 0x04, 0x40, 0x80, 0x00, 0x3e, 0x0f, 0xf9, 0xb0,
-0x58, 0x22, 0x40, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70,
-0x05, 0xe0, 0x80, 0x00, 0x3e, 0x0f, 0xf9, 0xb0, 0x42, 0x2f, 0x3c, 0x08, 0x14, 0x20, 0x80, 0x00,
-0x44, 0x10, 0x00, 0x65, 0x49, 0x00, 0x08, 0x5e, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x80, 0xff,
-0x58, 0x11, 0x00, 0x00, 0x54, 0x21, 0x80, 0xff, 0x54, 0x32, 0x00, 0xff, 0x58, 0x42, 0x80, 0x00,
-0x49, 0x00, 0x44, 0x80, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x53, 0x1c,
-0x2e, 0x50, 0x02, 0x87, 0x44, 0x20, 0x00, 0x01, 0x4c, 0x51, 0x00, 0x06, 0x3e, 0x20, 0x02, 0x87,
-0x49, 0x00, 0x37, 0x9c, 0x49, 0x00, 0x2d, 0x24, 0x2e, 0x07, 0xe6, 0x20, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x02, 0x80, 0x0a, 0x2e, 0x57, 0xe4, 0x0e, 0x4e, 0x53, 0x00, 0x08, 0x2e, 0x17, 0xe4, 0x0f,
-0x4e, 0x13, 0x00, 0x04, 0x49, 0x00, 0x31, 0x96, 0x49, 0x00, 0x43, 0xd0, 0x49, 0x00, 0x00, 0xf0,
-0x49, 0x00, 0x05, 0xd2, 0x49, 0xff, 0xfa, 0x0c, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x29, 0x98,
-0x46, 0x00, 0x01, 0x17, 0x2e, 0x10, 0x02, 0x87, 0x4e, 0x12, 0x00, 0x06, 0x44, 0x20, 0x00, 0x00,
-0x3e, 0x20, 0x02, 0x87, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x58, 0x70, 0x80, 0x00, 0x49, 0x00, 0x31, 0x66,
-0x58, 0x60, 0x00, 0x00, 0x49, 0x00, 0x3b, 0xee, 0x50, 0x63, 0x7f, 0xff, 0x58, 0x03, 0x00, 0x00,
-0x4b, 0xe0, 0x1c, 0x01, 0x4e, 0x63, 0xff, 0xfa, 0x49, 0x00, 0x3b, 0xa2, 0x58, 0x03, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x04, 0x10, 0x00, 0x02, 0x44, 0x20, 0x00, 0x01, 0x50, 0x10, 0x80, 0x20,
-0x00, 0x30, 0x80, 0x00, 0x4c, 0x31, 0x00, 0x04, 0x48, 0x00, 0x00, 0x42, 0x00, 0x40, 0x80, 0x04,
-0x04, 0x20, 0x80, 0x02, 0x4c, 0x41, 0xc0, 0x6e, 0x44, 0x50, 0x00, 0x06, 0x4c, 0x22, 0x80, 0x4e,
-0x5c, 0xf1, 0x00, 0x07, 0x4e, 0xf2, 0x00, 0x14, 0x44, 0x10, 0x00, 0x02, 0x4c, 0x20, 0x80, 0x34,
-0x40, 0xf1, 0x04, 0x06, 0x4e, 0xf3, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x22, 0x80, 0x28,
-0x5c, 0xf1, 0x00, 0x05, 0x4e, 0xf2, 0x00, 0x32, 0x48, 0x00, 0x00, 0x2a, 0x44, 0x50, 0x00, 0x0a,
-0x4c, 0x22, 0x80, 0x3c, 0x5c, 0xf1, 0x00, 0x0b, 0x4e, 0xf2, 0x00, 0x0c, 0x44, 0x10, 0x00, 0x08,
-0x4c, 0x20, 0x80, 0x16, 0x44, 0x50, 0x00, 0x09, 0x4c, 0x22, 0xc0, 0x44, 0x48, 0x00, 0x00, 0x2a,
-0x44, 0x10, 0x00, 0x0c, 0x4c, 0x20, 0x80, 0x34, 0x40, 0xf1, 0x04, 0x06, 0x4e, 0xf3, 0x00, 0x2a,
-0x44, 0x50, 0x00, 0x0d, 0x4c, 0x22, 0xc0, 0x36, 0x48, 0x00, 0x00, 0x2e, 0x44, 0x00, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x32, 0x3e, 0x1f, 0xbd, 0xd4, 0x48, 0x00, 0x00, 0x28, 0x3e, 0x1f, 0xa3, 0xcc,
-0x44, 0x20, 0x00, 0x03, 0x48, 0x00, 0x00, 0x06, 0x3e, 0x1f, 0xb3, 0xc0, 0x44, 0x20, 0x00, 0x05,
-0x49, 0xff, 0xff, 0x80, 0x48, 0x00, 0x00, 0x20, 0x3e, 0x1f, 0xb3, 0xc0, 0x48, 0x00, 0x00, 0x16,
-0x3e, 0x1f, 0x98, 0x28, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x1f, 0xaf, 0x04, 0x48, 0x00, 0x00, 0x0e,
-0x3e, 0x1f, 0xa9, 0x58, 0x44, 0x20, 0x00, 0x0b, 0x48, 0x00, 0x00, 0x08, 0x3e, 0x1f, 0xb7, 0x14,
-0x48, 0x00, 0x00, 0x04, 0x3e, 0x1f, 0xbc, 0x48, 0x49, 0xff, 0xff, 0x64, 0x48, 0x00, 0x00, 0x04,
-0x44, 0x01, 0x00, 0x03, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x44, 0x50, 0x00, 0xff, 0x54, 0x00, 0x00, 0xff, 0x54, 0x10, 0x80, 0xff, 0x54, 0x21, 0x00, 0xff,
-0x40, 0x31, 0x80, 0x10, 0x40, 0x42, 0x00, 0x10, 0x4c, 0x02, 0x80, 0x08, 0x40, 0x00, 0x00, 0x10,
-0x3e, 0x07, 0xe2, 0x90, 0x3e, 0x07, 0xe2, 0x98, 0x58, 0x02, 0x80, 0x00, 0x4c, 0x10, 0x00, 0x04,
-0x3e, 0x17, 0xe2, 0xa4, 0x58, 0x10, 0x00, 0x00, 0x4c, 0x20, 0x80, 0x04, 0x3e, 0x27, 0xe2, 0xa3,
-0x3e, 0x47, 0xe2, 0xb0, 0x3e, 0x37, 0xe2, 0xaf, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x0f, 0xe2, 0x1c,
-0x00, 0x30, 0x00, 0x07, 0x00, 0x20, 0x00, 0x05, 0x40, 0x41, 0x80, 0x10, 0x00, 0x10, 0x00, 0x06,
-0x4e, 0x44, 0x00, 0x06, 0x54, 0x31, 0x80, 0x7f, 0x48, 0x00, 0x00, 0x04, 0x44, 0x30, 0x00, 0x34,
-0x3e, 0x37, 0xe4, 0x79, 0x2e, 0x57, 0xe2, 0x63, 0x50, 0x42, 0x80, 0x1c, 0x40, 0x51, 0x00, 0x10,
-0x3e, 0x47, 0xe4, 0x7a, 0x4e, 0x54, 0x00, 0x26, 0x46, 0x08, 0x00, 0x22, 0x54, 0x30, 0x80, 0xe0,
-0x54, 0x41, 0x00, 0x38, 0x40, 0x51, 0xa4, 0x08, 0x40, 0x32, 0x50, 0x08, 0x04, 0x40, 0x00, 0x0a,
-0x40, 0x32, 0x8c, 0x04, 0x54, 0x51, 0x00, 0x07, 0x40, 0x31, 0x90, 0x04, 0x40, 0x42, 0xd0, 0x08,
-0x40, 0x21, 0x90, 0x04, 0x54, 0x10, 0x80, 0x1f, 0x14, 0x20, 0x00, 0x0a, 0x5c, 0xf0, 0x80, 0x11,
-0x4e, 0xf3, 0x00, 0x0a, 0x50, 0x10, 0xff, 0xe0, 0x40, 0x10, 0x80, 0x10, 0x48, 0x00, 0x00, 0x04,
-0x44, 0x10, 0x00, 0x00, 0x3e, 0x17, 0xe4, 0x7b, 0x44, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20,
-0x54, 0x00, 0x00, 0xff, 0x4e, 0x02, 0x00, 0x70, 0x2e, 0x37, 0xe4, 0x0e, 0x44, 0x20, 0x00, 0x01,
-0x3e, 0x27, 0xe2, 0xa1, 0x4e, 0x33, 0x00, 0x06, 0x2e, 0x17, 0xe4, 0x0f, 0x4e, 0x12, 0x00, 0x2a,
-0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48, 0x46, 0x3f, 0xf0, 0x00, 0x40, 0x22, 0x0c, 0x02,
-0x46, 0x40, 0x0a, 0xdf, 0x58, 0x42, 0x04, 0x80, 0x40, 0x51, 0x10, 0x04, 0x14, 0x50, 0x01, 0x48,
-0x46, 0x16, 0x02, 0x01, 0x04, 0x20, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00, 0x40, 0x51, 0x0c, 0x02,
-0x40, 0x22, 0x90, 0x04, 0x14, 0x20, 0x81, 0x48, 0x58, 0x00, 0x00, 0xfc, 0x04, 0x50, 0x00, 0x00,
-0x46, 0x3f, 0xff, 0x00, 0x58, 0x31, 0x80, 0xff, 0x40, 0x12, 0x8c, 0x02, 0x48, 0x00, 0x00, 0xc2,
-0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48, 0x3c, 0x2d, 0xfe, 0xb0, 0x40, 0x12, 0x60, 0x09,
-0x40, 0x10, 0xe0, 0x08, 0x40, 0x50, 0x88, 0x04, 0x14, 0x50, 0x01, 0x48, 0x46, 0x56, 0x02, 0x01,
-0x04, 0x12, 0x81, 0x48, 0x40, 0x30, 0xe0, 0x09, 0x40, 0x31, 0xe0, 0x08, 0x40, 0x21, 0x88, 0x04,
-0x14, 0x22, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc, 0x2e, 0x17, 0xfa, 0xcc,
-0x04, 0x20, 0x00, 0x00, 0x44, 0x4f, 0xc0, 0xff, 0x40, 0x30, 0xa0, 0x08, 0x40, 0x51, 0x10, 0x02,
-0x40, 0x41, 0x94, 0x04, 0x14, 0x40, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x03, 0x04, 0x20, 0x00, 0x00,
-0x58, 0x31, 0x8f, 0xff, 0x40, 0x10, 0xb8, 0x08, 0x40, 0x51, 0x0c, 0x02, 0x40, 0x10, 0x94, 0x04,
-0x48, 0x00, 0x00, 0x88, 0x2e, 0x07, 0xe4, 0x0e, 0x44, 0x50, 0x00, 0x01, 0x3e, 0x57, 0xe2, 0xa2,
-0x4e, 0x03, 0x00, 0x06, 0x2e, 0x17, 0xe4, 0x0f, 0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00,
-0x04, 0x30, 0x01, 0x48, 0x46, 0x4f, 0xf0, 0x00, 0x40, 0x11, 0x90, 0x02, 0x46, 0x30, 0x0b, 0x20,
-0x58, 0x31, 0x84, 0xc1, 0x40, 0x20, 0x8c, 0x04, 0x14, 0x20, 0x01, 0x48, 0x46, 0x56, 0x02, 0x01,
-0x04, 0x12, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00, 0x40, 0x20, 0x90, 0x02, 0x40, 0x11, 0x0c, 0x04,
-0x14, 0x12, 0x81, 0x48, 0x58, 0x00, 0x00, 0xfc, 0x04, 0x30, 0x00, 0x00, 0x46, 0x2f, 0xff, 0x00,
-0x58, 0x21, 0x00, 0xff, 0x40, 0x11, 0x88, 0x02, 0x48, 0x00, 0x00, 0x3a, 0x46, 0x06, 0x02, 0x00,
-0x04, 0x40, 0x01, 0x48, 0x3c, 0x2d, 0xfe, 0xb1, 0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08,
+0x40, 0x90, 0x24, 0x0c, 0x40, 0x94, 0x90, 0x04, 0x14, 0x90, 0x80, 0x00, 0x04, 0x50, 0x80, 0x00,
+0x41, 0xe2, 0x80, 0x13, 0x15, 0xe0, 0x80, 0x00, 0x48, 0xff, 0xff, 0xb8, 0x46, 0x1a, 0x00, 0x00,
+0x58, 0x10, 0x81, 0x70, 0x04, 0x40, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01, 0x40, 0x50, 0x24, 0x0c,
+0x40, 0x92, 0x90, 0x04, 0x14, 0x90, 0x80, 0x00, 0x05, 0xe0, 0x80, 0x00, 0x40, 0x3f, 0x00, 0x13,
+0x14, 0x30, 0x80, 0x00, 0x48, 0xff, 0xff, 0xc6, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec,
+0x47, 0xc6, 0x01, 0x20, 0x58, 0xae, 0x00, 0x00, 0x58, 0x95, 0x00, 0x00, 0x58, 0x84, 0x80, 0x00,
+0x58, 0x74, 0x00, 0x00, 0x54, 0x10, 0x80, 0xff, 0x40, 0x30, 0x08, 0x09, 0x44, 0x60, 0x00, 0x00,
+0x3e, 0x2e, 0xbb, 0x90, 0x48, 0x00, 0x00, 0x28, 0x14, 0x1f, 0x80, 0x02, 0x14, 0x2f, 0x80, 0x01,
+0x14, 0x3f, 0x80, 0x03, 0x50, 0x63, 0x00, 0x01, 0x4b, 0xe0, 0x08, 0x01, 0x04, 0x0e, 0x00, 0x42,
+0x04, 0x1f, 0x80, 0x02, 0x04, 0x2f, 0x80, 0x01, 0x04, 0x3f, 0x80, 0x03, 0x4e, 0x03, 0x00, 0x14,
+0x04, 0x45, 0x00, 0x43, 0x4e, 0x43, 0x00, 0x10, 0x04, 0x54, 0x80, 0x47, 0x4e, 0x53, 0x00, 0x0c,
+0x05, 0xe4, 0x00, 0x49, 0x4f, 0xe3, 0x00, 0x08, 0x04, 0x03, 0x80, 0x1c, 0x54, 0x00, 0x00, 0x04,
+0x4e, 0x02, 0x00, 0x3e, 0x44, 0x00, 0x00, 0x04, 0x40, 0xf3, 0x0c, 0x06, 0x4e, 0xf3, 0xff, 0xd6,
+0x48, 0x00, 0x00, 0x3c, 0x46, 0x4a, 0x00, 0x00, 0x04, 0x32, 0x00, 0x5c, 0x45, 0xe0, 0x00, 0x01,
+0x40, 0x5f, 0x04, 0x0c, 0x40, 0x22, 0x8c, 0x04, 0x14, 0x22, 0x00, 0x5c, 0x46, 0x46, 0x01, 0x20,
+0x04, 0x02, 0x00, 0x42, 0x4e, 0x03, 0x00, 0x16, 0x58, 0x52, 0x00, 0x00, 0x04, 0x22, 0x80, 0x43,
+0x4e, 0x23, 0x00, 0x10, 0x59, 0xe2, 0x00, 0x00, 0x04, 0x3f, 0x00, 0x47, 0x4e, 0x33, 0x00, 0x0a,
+0x04, 0x02, 0x00, 0x49, 0x4e, 0x03, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x10,
+0x46, 0x2a, 0x00, 0x00, 0x51, 0xe0, 0x80, 0x01, 0x04, 0x31, 0x00, 0x5c, 0x44, 0x00, 0x00, 0x01,
+0x40, 0x50, 0x78, 0x0c, 0x40, 0x12, 0x8c, 0x04, 0x14, 0x11, 0x00, 0x5c, 0x51, 0xff, 0x80, 0x14,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x26, 0x01, 0x20, 0x04, 0x41, 0x00, 0x1c,
+0x54, 0x02, 0x00, 0x04, 0x4e, 0x03, 0xff, 0xc0, 0x48, 0xff, 0xff, 0xca, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x49, 0x00, 0x3a, 0x2c, 0x46, 0x36, 0x01, 0x10, 0x04, 0x21, 0x80, 0x36,
+0x46, 0x10, 0x0f, 0xf0, 0x40, 0x51, 0x04, 0x02, 0x4c, 0x50, 0x80, 0x78, 0x46, 0x16, 0x02, 0x04,
+0x46, 0x60, 0x20, 0x30, 0x58, 0x63, 0x08, 0x00, 0x14, 0x60, 0x80, 0x08, 0x58, 0x00, 0x80, 0x00,
+0x04, 0x20, 0x00, 0x3f, 0x44, 0x40, 0x02, 0x00, 0x54, 0x51, 0x0f, 0x00, 0x4c, 0x52, 0x40, 0x66,
+0x54, 0x71, 0x00, 0x0f, 0x44, 0x50, 0x00, 0x07, 0x4c, 0x72, 0xc0, 0x60, 0x47, 0xe8, 0x38, 0x30,
+0x59, 0xef, 0x02, 0x01, 0x15, 0xe0, 0x80, 0x08, 0x44, 0xa0, 0x00, 0x02, 0x05, 0xc0, 0x00, 0x3f,
+0x54, 0x5e, 0x00, 0x1f, 0x4c, 0x55, 0x40, 0x52, 0x46, 0x06, 0x01, 0x20, 0x04, 0x10, 0x00, 0x20,
+0x54, 0x20, 0x81, 0x00, 0x4e, 0x22, 0x00, 0x04, 0x44, 0x20, 0x00, 0x01, 0x54, 0x10, 0x82, 0x00,
+0x3e, 0x27, 0xe3, 0xdf, 0x4e, 0x12, 0x00, 0x04, 0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe3, 0xe0,
+0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x00, 0x80, 0x04, 0x53, 0x00, 0x00, 0x58, 0x32, 0x83, 0x00,
+0x14, 0x33, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xd1, 0x76, 0x2e, 0x17, 0xe3, 0xdf,
+0x4e, 0x13, 0x00, 0x0c, 0x04, 0x83, 0x00, 0x00, 0x42, 0x44, 0x20, 0x09, 0x14, 0x43, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xd1, 0x68, 0x2e, 0xa7, 0xe3, 0xe0, 0x4e, 0xa3, 0x00, 0x0e,
+0x47, 0xe6, 0x01, 0x20, 0x04, 0x2f, 0x00, 0x20, 0x42, 0x11, 0x24, 0x09, 0x14, 0x1f, 0x00, 0x20,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xd1, 0x58, 0x46, 0x06, 0x01, 0x20, 0x04, 0x10, 0x00, 0x3f,
+0x46, 0x40, 0x0f, 0xf0, 0x40, 0x50, 0x90, 0x02, 0x4c, 0x52, 0x00, 0x08, 0x44, 0x91, 0x00, 0x00,
+0x40, 0x80, 0xa4, 0x00, 0x14, 0x80, 0x00, 0x3f, 0x47, 0xc6, 0x01, 0x10, 0x04, 0xae, 0x00, 0x36,
+0x44, 0x00, 0x00, 0xff, 0x40, 0x15, 0x60, 0x09, 0x4c, 0x10, 0x00, 0xc8, 0x46, 0x26, 0x01, 0x00,
+0x04, 0x61, 0x00, 0x13, 0x45, 0xe0, 0x00, 0xcc, 0x40, 0x63, 0x00, 0x13, 0x4c, 0x1f, 0x00, 0x32,
+0x47, 0xc6, 0x00, 0x00, 0x58, 0x0e, 0x00, 0x00, 0x46, 0xa0, 0x30, 0x30, 0x58, 0x80, 0x00, 0x00,
+0x46, 0x99, 0x19, 0x19, 0x58, 0xa5, 0x03, 0x03, 0x58, 0x94, 0x81, 0x91, 0x44, 0x50, 0x00, 0x1f,
+0x14, 0x5e, 0x00, 0x05, 0x14, 0xa0, 0x00, 0x06, 0x14, 0x94, 0x00, 0x13, 0x58, 0x40, 0x00, 0x00,
+0x3c, 0x1d, 0xf8, 0xce, 0x04, 0x02, 0x00, 0x09, 0x4c, 0x60, 0xc0, 0x0e, 0x41, 0xe0, 0x14, 0x02,
+0x4f, 0xe2, 0x00, 0x0a, 0x3e, 0x0f, 0xe3, 0x3c, 0x00, 0x50, 0x00, 0x00, 0x50, 0x12, 0x80, 0x01,
+0x48, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xe3, 0x3c, 0x10, 0x10, 0x00, 0x00,
+0x3c, 0x5d, 0xf8, 0xce, 0x4c, 0x62, 0xc0, 0x08, 0x2e, 0x37, 0xe3, 0x3d, 0x50, 0x11, 0x80, 0x01,
+0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x00, 0x2e, 0x47, 0xe3, 0x3c, 0x3e, 0x17, 0xe3, 0x3d,
+0x5c, 0xf2, 0x00, 0x03, 0x4e, 0xf2, 0x00, 0x08, 0x2e, 0x97, 0xe3, 0x3d, 0x5c, 0xf4, 0x80, 0x0a,
+0x4e, 0xf3, 0x00, 0x72, 0x44, 0x50, 0x00, 0x00, 0x3e, 0x57, 0xe3, 0x3d, 0x3e, 0x57, 0xe3, 0x3c,
+0x47, 0xe6, 0x01, 0x20, 0x05, 0xcf, 0x00, 0x20, 0x54, 0xae, 0x02, 0x00, 0x4e, 0xa3, 0x00, 0x64,
+0x58, 0x0f, 0x00, 0x00, 0x04, 0x10, 0x00, 0x3f, 0x44, 0x50, 0x00, 0xff, 0x40, 0x70, 0xe0, 0x09,
+0x4c, 0x72, 0x80, 0x08, 0x46, 0x80, 0x10, 0x00, 0x40, 0x40, 0xa0, 0x00, 0x14, 0x40, 0x00, 0x3f,
+0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x00, 0x70, 0x50, 0xa0, 0x00, 0x10, 0x04, 0x90, 0x00, 0x00,
+0x04, 0x85, 0x00, 0x00, 0x04, 0x15, 0x00, 0x00, 0x59, 0xc0, 0x00, 0x00, 0x58, 0x20, 0x83, 0x00,
+0x14, 0x25, 0x00, 0x00, 0x44, 0x70, 0x00, 0x00, 0x04, 0x50, 0x00, 0x00, 0x59, 0xe2, 0x80, 0x04,
+0x15, 0xe0, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xd0, 0xae, 0x04, 0x4e, 0x00, 0x00,
+0x50, 0x73, 0x80, 0x01, 0x42, 0x32, 0x08, 0x0b, 0x4e, 0x32, 0x00, 0x08, 0x44, 0x50, 0x00, 0x64,
+0x4c, 0x72, 0xff, 0xf2, 0x48, 0x00, 0x02, 0x88, 0x47, 0xe6, 0x01, 0x20, 0x04, 0x5f, 0x00, 0x1c,
+0x54, 0x24, 0x80, 0x10, 0x58, 0x91, 0x00, 0x01, 0x40, 0x94, 0x94, 0x04, 0x54, 0x84, 0x01, 0x00,
+0x14, 0x9f, 0x00, 0x1c, 0x4e, 0x82, 0x00, 0x0c, 0x46, 0x06, 0x01, 0x20, 0x58, 0x00, 0x00, 0x80,
+0x04, 0x10, 0x00, 0x00, 0x42, 0x10, 0xa4, 0x09, 0x48, 0x00, 0x00, 0x0c, 0x46, 0x06, 0x01, 0x20,
+0x58, 0x00, 0x00, 0x80, 0x04, 0x40, 0x00, 0x00, 0x45, 0xef, 0xfc, 0xff, 0x40, 0x12, 0x78, 0x02,
+0x14, 0x10, 0x00, 0x00, 0x3c, 0x6f, 0xf8, 0xce, 0x46, 0x36, 0x01, 0x10, 0x04, 0x11, 0x80, 0x36,
+0x46, 0x20, 0x0f, 0xf0, 0x40, 0x50, 0x88, 0x02, 0x4c, 0x51, 0x00, 0x6c, 0x2e, 0x47, 0xe3, 0x42,
+0x4e, 0x43, 0x00, 0x68, 0x46, 0x36, 0x02, 0x04, 0x04, 0x51, 0x80, 0x44, 0x04, 0x21, 0x80, 0x44,
+0x40, 0x02, 0xc0, 0x09, 0x44, 0x50, 0xff, 0xff, 0x41, 0xe1, 0x14, 0x02, 0x40, 0x2f, 0x00, 0x00,
+0x5c, 0xf1, 0x03, 0xe9, 0x4e, 0xf3, 0x00, 0x56, 0x04, 0x01, 0x80, 0x48, 0x41, 0xe0, 0x14, 0x02,
+0x44, 0x50, 0x00, 0x64, 0x42, 0x4f, 0x14, 0x24, 0x40, 0xf2, 0x08, 0x06, 0x4e, 0xf2, 0x00, 0x38,
+0x46, 0x66, 0x01, 0x20, 0x58, 0x63, 0x00, 0x80, 0x04, 0x03, 0x00, 0x00, 0x59, 0xe1, 0x80, 0x00,
+0x58, 0x30, 0x02, 0x00, 0x14, 0x33, 0x00, 0x00, 0x04, 0x5f, 0x00, 0x01, 0x44, 0x00, 0x00, 0x01,
+0x58, 0x12, 0x80, 0x08, 0x14, 0x1f, 0x00, 0x01, 0x49, 0xff, 0xd0, 0x36, 0x46, 0x06, 0x02, 0x04,
+0x44, 0x40, 0x00, 0xc0, 0x44, 0x20, 0x00, 0x80, 0x14, 0x40, 0x00, 0x42, 0x14, 0x20, 0x00, 0x42,
+0x04, 0x53, 0x00, 0x00, 0x46, 0x06, 0x01, 0x20, 0x42, 0x12, 0xa4, 0x09, 0x14, 0x13, 0x00, 0x00,
+0x58, 0x00, 0x00, 0xfc, 0x04, 0x10, 0x00, 0x00, 0x44, 0x50, 0xff, 0x00, 0x40, 0x20, 0x94, 0x02,
+0x4c, 0x22, 0x80, 0x18, 0x50, 0x10, 0x81, 0x00, 0x48, 0x00, 0x00, 0x12, 0x45, 0xe0, 0x00, 0x01,
+0x3f, 0xe7, 0xe3, 0x42, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x06, 0xf8, 0x04, 0x20, 0x00, 0x00,
+0x46, 0x4f, 0xff, 0x0f, 0x58, 0x42, 0x0f, 0xff, 0x40, 0x11, 0x10, 0x02, 0x14, 0x10, 0x00, 0x00,
+0x46, 0x0a, 0x00, 0x00, 0x58, 0x00, 0x01, 0x6c, 0x04, 0x50, 0x00, 0x00, 0x54, 0x12, 0x80, 0x01,
+0x4e, 0x12, 0x01, 0xd0, 0x04, 0x10, 0x00, 0x00, 0x46, 0xaa, 0x00, 0x00, 0x42, 0x90, 0x80, 0x09,
+0x44, 0x10, 0x00, 0x00, 0x14, 0x90, 0x00, 0x00, 0x46, 0x66, 0x01, 0x20, 0x14, 0x15, 0x00, 0x5c,
+0x58, 0x33, 0x00, 0x00, 0x58, 0x63, 0x00, 0x70, 0x04, 0xa3, 0x00, 0x00, 0x04, 0x93, 0x00, 0x00,
+0x05, 0xe1, 0x80, 0x20, 0x58, 0x21, 0x80, 0x00, 0x58, 0x5f, 0x03, 0x00, 0x14, 0x51, 0x80, 0x20,
+0x04, 0x03, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x58, 0x40, 0x00, 0x04, 0x14, 0x43, 0x00, 0x00,
+0x46, 0x07, 0xff, 0xf7, 0x05, 0xe1, 0x00, 0x42, 0x58, 0x00, 0x0f, 0xff, 0x40, 0x5f, 0x00, 0x04,
+0x14, 0x51, 0x00, 0x42, 0x04, 0x41, 0x80, 0x43, 0x58, 0x61, 0x00, 0x00, 0x41, 0xe2, 0x00, 0x04,
+0x15, 0xe1, 0x80, 0x43, 0x04, 0x53, 0x00, 0x47, 0x46, 0x47, 0xff, 0xf0, 0x58, 0x42, 0x00, 0x0f,
+0x40, 0x02, 0x90, 0x04, 0x14, 0x03, 0x00, 0x47, 0x05, 0xe1, 0x00, 0x49, 0x40, 0x3f, 0x10, 0x04,
+0x14, 0x31, 0x00, 0x49, 0x44, 0x00, 0x00, 0x64, 0x49, 0xff, 0xfd, 0x58, 0x4e, 0x02, 0x00, 0x24,
+0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xfc, 0x6e, 0x4e, 0x02, 0x00, 0x04, 0x48, 0x00, 0x01, 0x88,
+0x44, 0x00, 0x00, 0x64, 0x44, 0x10, 0x00, 0x04, 0x49, 0xff, 0xfd, 0x48, 0x4e, 0x02, 0x00, 0x14,
+0x44, 0x00, 0x00, 0x06, 0x49, 0xff, 0xfc, 0x5e, 0x4e, 0x02, 0x00, 0x04, 0x48, 0x00, 0x01, 0x78,
+0x44, 0x00, 0x01, 0xf4, 0x44, 0x10, 0x00, 0x08, 0x49, 0xff, 0xfd, 0x38, 0x4e, 0x02, 0x00, 0x04,
+0x48, 0x00, 0x01, 0x6e, 0x44, 0x00, 0x00, 0x0a, 0x49, 0xff, 0xfc, 0x4c, 0x4e, 0x02, 0x00, 0x04,
+0x48, 0x00, 0x01, 0x66, 0x47, 0xc6, 0x03, 0x00, 0x59, 0xce, 0x00, 0x7c, 0x46, 0x78, 0x00, 0xc0,
+0x04, 0x6e, 0x00, 0x00, 0x58, 0x3e, 0x00, 0x00, 0x58, 0x80, 0x00, 0x00, 0x3f, 0xce, 0xbb, 0x90,
+0x14, 0x3f, 0x80, 0x01, 0x44, 0x00, 0x00, 0x05, 0x4b, 0xe0, 0x70, 0x01, 0x04, 0x3f, 0x80, 0x01,
+0x04, 0x21, 0x80, 0x00, 0x04, 0x03, 0x80, 0x1c, 0x46, 0x18, 0x00, 0xc0, 0x42, 0x40, 0x50, 0x0b,
+0x50, 0x84, 0x00, 0x01, 0x58, 0x10, 0x80, 0x70, 0x4e, 0x43, 0x00, 0x08, 0x45, 0xe0, 0x00, 0x64,
+0x4c, 0x8f, 0x7f, 0xe8, 0x48, 0x00, 0x01, 0x46, 0x04, 0x60, 0x80, 0x00, 0x42, 0x83, 0x44, 0x08,
+0x14, 0x80, 0x80, 0x00, 0x2e, 0x27, 0xe2, 0x18, 0x4e, 0x22, 0x00, 0x10, 0x48, 0x00, 0x00, 0x2c,
+0x04, 0x10, 0x00, 0x00, 0x40, 0x41, 0x18, 0x01, 0x40, 0x22, 0x40, 0x08, 0x40, 0x31, 0x04, 0x04,
+0x14, 0x30, 0x00, 0x00, 0x48, 0x00, 0x01, 0x24, 0x46, 0x05, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x82,
+0x58, 0x61, 0x00, 0x00, 0x42, 0x5f, 0x60, 0x08, 0x14, 0x50, 0x00, 0x82, 0x58, 0x80, 0x80, 0x00,
+0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xcf, 0x30, 0x04, 0x24, 0x00, 0x00, 0x42, 0x31, 0x54, 0x0b,
+0x50, 0x63, 0x00, 0x01, 0x4e, 0x33, 0x00, 0x4c, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf2,
+0x48, 0x00, 0x01, 0x22, 0x44, 0x70, 0x00, 0x01, 0x4c, 0x23, 0xc0, 0x42, 0x46, 0x45, 0x00, 0x22,
+0x44, 0x7e, 0xff, 0xfe, 0x14, 0x72, 0x02, 0x01, 0x46, 0x85, 0x00, 0x29, 0x04, 0x14, 0x00, 0x05,
+0x46, 0x68, 0x00, 0xc0, 0x58, 0x20, 0x80, 0x60, 0x14, 0x24, 0x00, 0x05, 0x58, 0x63, 0x00, 0x6c,
+0x05, 0xe3, 0x00, 0x00, 0x40, 0x5f, 0x20, 0x09, 0x40, 0x52, 0xa0, 0x08, 0x58, 0x02, 0x80, 0x04,
+0x58, 0x83, 0x00, 0x00, 0x14, 0x03, 0x00, 0x00, 0x44, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05,
+0x49, 0xff, 0xce, 0xfa, 0x04, 0x04, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01, 0x4e, 0x04, 0x00, 0x08,
+0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf4, 0x48, 0x00, 0x00, 0xee, 0x46, 0x25, 0x00, 0x22,
+0x44, 0x10, 0x00, 0x00, 0x14, 0x11, 0x02, 0x01, 0x46, 0x65, 0x00, 0x29, 0x04, 0x33, 0x00, 0x05,
+0x44, 0x8f, 0xff, 0x9f, 0x41, 0xe1, 0xa0, 0x02, 0x15, 0xe3, 0x00, 0x05, 0x46, 0x48, 0x00, 0xc0,
+0x58, 0x42, 0x00, 0x70, 0x04, 0x62, 0x00, 0x00, 0x42, 0x73, 0x40, 0x09, 0x14, 0x72, 0x00, 0x00,
+0x04, 0x52, 0x00, 0x00, 0x58, 0x82, 0x00, 0x00, 0x42, 0x02, 0xc4, 0x09, 0x14, 0x02, 0x00, 0x00,
+0x44, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05, 0x49, 0xff, 0xce, 0xc6, 0x04, 0x14, 0x00, 0x00,
+0x46, 0x08, 0x00, 0xc0, 0x54, 0x20, 0x82, 0x00, 0x50, 0x63, 0x00, 0x01, 0x4e, 0x23, 0x00, 0x08,
+0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf0, 0x48, 0x00, 0x00, 0xc2, 0x04, 0x20, 0x00, 0x1c,
+0x42, 0x31, 0x14, 0x09, 0x14, 0x30, 0x00, 0x1c, 0x46, 0x75, 0x00, 0x00, 0x58, 0x73, 0x85, 0x94,
+0x05, 0xe3, 0x80, 0x00, 0x58, 0x8f, 0x01, 0x00, 0x14, 0x83, 0x80, 0x00, 0x46, 0x0a, 0x00, 0x00,
+0x04, 0x43, 0x80, 0x00, 0x42, 0x62, 0x20, 0x09, 0x14, 0x63, 0x80, 0x00, 0x04, 0x10, 0x00, 0x00,
+0x58, 0x80, 0x00, 0x00, 0x58, 0x20, 0x80, 0x02, 0x14, 0x20, 0x00, 0x00, 0x44, 0x60, 0x00, 0x00,
+0x05, 0xe0, 0x00, 0x00, 0x42, 0x5f, 0x04, 0x09, 0x14, 0x50, 0x00, 0x00, 0x44, 0x00, 0x00, 0x05,
+0x49, 0xff, 0xce, 0x8a, 0x04, 0x44, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01, 0x54, 0x02, 0x00, 0x04,
+0x4e, 0x03, 0x00, 0x08, 0x44, 0x50, 0x00, 0x64, 0x4c, 0x62, 0xff, 0xf2, 0x48, 0x00, 0x00, 0x94,
+0x47, 0xe6, 0x01, 0x20, 0x59, 0xef, 0x00, 0x70, 0x04, 0x0f, 0x00, 0x00, 0x54, 0x55, 0x01, 0x80,
+0x58, 0x10, 0x00, 0x01, 0x14, 0x1f, 0x00, 0x00, 0x54, 0x34, 0x80, 0x10, 0x04, 0x4f, 0x00, 0x00,
+0x46, 0x16, 0x01, 0x20, 0x40, 0x22, 0x90, 0x04, 0x40, 0x01, 0x0c, 0x04, 0x14, 0x0f, 0x00, 0x00,
+0x04, 0x50, 0x80, 0x20, 0x44, 0x4f, 0xfc, 0xff, 0x40, 0x22, 0x90, 0x02, 0x14, 0x20, 0x80, 0x20,
+0x59, 0xe0, 0x80, 0x00, 0x04, 0x3f, 0x00, 0x40, 0x46, 0x57, 0xff, 0xf7, 0x58, 0x52, 0x8f, 0xff,
+0x40, 0x01, 0x94, 0x04, 0x14, 0x0f, 0x00, 0x40, 0x04, 0x20, 0x80, 0x41, 0x59, 0xe0, 0x80, 0x00,
+0x40, 0x41, 0x14, 0x04, 0x14, 0x40, 0x80, 0x41, 0x04, 0x0f, 0x00, 0x46, 0x46, 0x37, 0xff, 0xff,
+0x58, 0x31, 0x8c, 0x0f, 0x40, 0x20, 0x0c, 0x04, 0x14, 0x2f, 0x00, 0x46, 0x04, 0x50, 0x80, 0x48,
+0x46, 0x47, 0xff, 0xf0, 0x58, 0x42, 0x00, 0x0f, 0x40, 0x02, 0x90, 0x04, 0x14, 0x00, 0x80, 0x48,
+0x47, 0xea, 0x00, 0x00, 0x04, 0x2f, 0x00, 0x5b, 0x58, 0x31, 0x00, 0x02, 0x14, 0x3f, 0x00, 0x5b,
+0x46, 0x2a, 0x00, 0x00, 0x05, 0xe1, 0x00, 0x5f, 0x4f, 0xe2, 0x00, 0x0a, 0x2e, 0x37, 0xe3, 0x3e,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x32, 0xc0, 0x04, 0x49, 0xff, 0xb8, 0xca, 0x3e, 0x0f, 0xf7, 0x50,
+0x48, 0x00, 0x00, 0x3e, 0x3e, 0x0f, 0xcc, 0xbc, 0x49, 0xff, 0xba, 0xf8, 0x48, 0xff, 0xfd, 0x76,
+0x46, 0x0a, 0x00, 0x00, 0x58, 0x00, 0x01, 0x70, 0x04, 0x50, 0x00, 0x00, 0x58, 0x32, 0x90, 0x00,
+0x14, 0x30, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x13, 0x14, 0x10, 0x00, 0x00,
+0x48, 0xff, 0xfe, 0xb8, 0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70, 0x04, 0x20, 0x80, 0x00,
+0x3e, 0x0f, 0xf7, 0x50, 0x58, 0x21, 0x20, 0x00, 0x48, 0x00, 0x00, 0x18, 0x46, 0x1a, 0x00, 0x00,
+0x58, 0x10, 0x81, 0x70, 0x04, 0x40, 0x80, 0x00, 0x3e, 0x0f, 0xf7, 0x50, 0x58, 0x22, 0x40, 0x00,
+0x48, 0x00, 0x00, 0x0c, 0x46, 0x1a, 0x00, 0x00, 0x58, 0x10, 0x81, 0x70, 0x05, 0xe0, 0x80, 0x00,
+0x3e, 0x0f, 0xf7, 0x50, 0x42, 0x2f, 0x3c, 0x08, 0x14, 0x20, 0x80, 0x00, 0x44, 0x10, 0x00, 0x65,
+0x49, 0x00, 0x08, 0x5e, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x80, 0xff, 0x58, 0x11, 0x00, 0x00,
+0x54, 0x21, 0x80, 0xff, 0x54, 0x32, 0x00, 0xff, 0x58, 0x42, 0x80, 0x00, 0x49, 0x00, 0x43, 0x74,
+0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x51, 0xac, 0x2e, 0x50, 0x02, 0x87,
+0x44, 0x20, 0x00, 0x01, 0x4c, 0x51, 0x00, 0x06, 0x3e, 0x20, 0x02, 0x87, 0x49, 0x00, 0x38, 0x22,
+0x49, 0x00, 0x2d, 0x7a, 0x2e, 0x07, 0xe3, 0xc0, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0x80, 0x0a,
+0x2e, 0x57, 0xe1, 0xb2, 0x4e, 0x53, 0x00, 0x08, 0x2e, 0x17, 0xe1, 0xb3, 0x4e, 0x13, 0x00, 0x04,
+0x49, 0x00, 0x31, 0xec, 0x49, 0x00, 0x42, 0xc4, 0x49, 0x00, 0x00, 0xf0, 0x49, 0x00, 0x05, 0xd2,
+0x49, 0xff, 0xfa, 0x0c, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0x00, 0x29, 0xee, 0x46, 0x00, 0x01, 0x17,
+0x2e, 0x10, 0x02, 0x87, 0x4e, 0x12, 0x00, 0x06, 0x44, 0x20, 0x00, 0x00, 0x3e, 0x20, 0x02, 0x87,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x58, 0x70, 0x80, 0x00, 0x49, 0x00, 0x31, 0xbc, 0x58, 0x60, 0x00, 0x00,
+0x49, 0x00, 0x3b, 0x7e, 0x50, 0x63, 0x7f, 0xff, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x4e, 0x63, 0xff, 0xfa, 0x49, 0x00, 0x3b, 0x32, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x04, 0x10, 0x00, 0x02, 0x44, 0x20, 0x00, 0x01, 0x50, 0x10, 0x80, 0x20, 0x00, 0x30, 0x80, 0x00,
+0x4c, 0x31, 0x00, 0x04, 0x48, 0x00, 0x00, 0x42, 0x00, 0x40, 0x80, 0x04, 0x04, 0x20, 0x80, 0x02,
+0x4c, 0x41, 0xc0, 0x6e, 0x44, 0x50, 0x00, 0x06, 0x4c, 0x22, 0x80, 0x4e, 0x5c, 0xf1, 0x00, 0x07,
+0x4e, 0xf2, 0x00, 0x14, 0x44, 0x10, 0x00, 0x02, 0x4c, 0x20, 0x80, 0x34, 0x40, 0xf1, 0x04, 0x06,
+0x4e, 0xf3, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x22, 0x80, 0x28, 0x5c, 0xf1, 0x00, 0x05,
+0x4e, 0xf2, 0x00, 0x32, 0x48, 0x00, 0x00, 0x2a, 0x44, 0x50, 0x00, 0x0a, 0x4c, 0x22, 0x80, 0x3c,
+0x5c, 0xf1, 0x00, 0x0b, 0x4e, 0xf2, 0x00, 0x0c, 0x44, 0x10, 0x00, 0x08, 0x4c, 0x20, 0x80, 0x16,
+0x44, 0x50, 0x00, 0x09, 0x4c, 0x22, 0xc0, 0x44, 0x48, 0x00, 0x00, 0x2a, 0x44, 0x10, 0x00, 0x0c,
+0x4c, 0x20, 0x80, 0x34, 0x40, 0xf1, 0x04, 0x06, 0x4e, 0xf3, 0x00, 0x2a, 0x44, 0x50, 0x00, 0x0d,
+0x4c, 0x22, 0xc0, 0x36, 0x48, 0x00, 0x00, 0x2e, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x32,
+0x3e, 0x1f, 0xbc, 0x3c, 0x48, 0x00, 0x00, 0x28, 0x3e, 0x1f, 0xa2, 0xa4, 0x44, 0x20, 0x00, 0x03,
+0x48, 0x00, 0x00, 0x06, 0x3e, 0x1f, 0xb2, 0x28, 0x44, 0x20, 0x00, 0x05, 0x49, 0xff, 0xff, 0x80,
+0x48, 0x00, 0x00, 0x20, 0x3e, 0x1f, 0xb2, 0x28, 0x48, 0x00, 0x00, 0x16, 0x3e, 0x1f, 0x97, 0xd4,
+0x48, 0x00, 0x00, 0x12, 0x3e, 0x1f, 0xad, 0x78, 0x48, 0x00, 0x00, 0x0e, 0x3e, 0x1f, 0xa7, 0xcc,
+0x44, 0x20, 0x00, 0x0b, 0x48, 0x00, 0x00, 0x08, 0x3e, 0x1f, 0xb5, 0x7c, 0x48, 0x00, 0x00, 0x04,
+0x3e, 0x1f, 0xba, 0xb0, 0x49, 0xff, 0xff, 0x64, 0x48, 0x00, 0x00, 0x04, 0x44, 0x01, 0x00, 0x03,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x44, 0x50, 0x00, 0xff,
+0x54, 0x00, 0x00, 0xff, 0x54, 0x10, 0x80, 0xff, 0x54, 0x21, 0x00, 0xff, 0x40, 0x31, 0x80, 0x10,
+0x40, 0x42, 0x00, 0x10, 0x4c, 0x02, 0x80, 0x08, 0x40, 0x00, 0x00, 0x10, 0x3e, 0x07, 0xe0, 0x30,
+0x3e, 0x07, 0xe0, 0x38, 0x58, 0x02, 0x80, 0x00, 0x4c, 0x10, 0x00, 0x04, 0x3e, 0x17, 0xe0, 0x44,
+0x58, 0x10, 0x00, 0x00, 0x4c, 0x20, 0x80, 0x04, 0x3e, 0x27, 0xe0, 0x43, 0x3e, 0x47, 0xe0, 0x50,
+0x3e, 0x37, 0xe0, 0x4f, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x0f, 0xdf, 0xbc, 0x00, 0x30, 0x00, 0x07,
+0x00, 0x20, 0x00, 0x05, 0x40, 0x41, 0x80, 0x10, 0x00, 0x10, 0x00, 0x06, 0x4e, 0x44, 0x00, 0x06,
+0x54, 0x31, 0x80, 0x7f, 0x48, 0x00, 0x00, 0x04, 0x44, 0x30, 0x00, 0x34, 0x3e, 0x37, 0xe2, 0x19,
+0x2e, 0x57, 0xe0, 0x03, 0x50, 0x42, 0x80, 0x1c, 0x40, 0x51, 0x00, 0x10, 0x3e, 0x47, 0xe2, 0x1a,
+0x4e, 0x54, 0x00, 0x26, 0x46, 0x08, 0x00, 0x22, 0x54, 0x30, 0x80, 0xe0, 0x54, 0x41, 0x00, 0x38,
+0x40, 0x51, 0xa4, 0x08, 0x40, 0x32, 0x50, 0x08, 0x04, 0x40, 0x00, 0x0a, 0x40, 0x32, 0x8c, 0x04,
+0x54, 0x51, 0x00, 0x07, 0x40, 0x31, 0x90, 0x04, 0x40, 0x42, 0xd0, 0x08, 0x40, 0x21, 0x90, 0x04,
+0x54, 0x10, 0x80, 0x1f, 0x14, 0x20, 0x00, 0x0a, 0x5c, 0xf0, 0x80, 0x11, 0x4e, 0xf3, 0x00, 0x0a,
+0x50, 0x10, 0xff, 0xe0, 0x40, 0x10, 0x80, 0x10, 0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x00,
+0x3e, 0x17, 0xe2, 0x1b, 0x44, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff,
+0x4e, 0x02, 0x00, 0x70, 0x2e, 0x37, 0xe1, 0xb2, 0x44, 0x20, 0x00, 0x01, 0x3e, 0x27, 0xe0, 0x41,
+0x4e, 0x33, 0x00, 0x06, 0x2e, 0x17, 0xe1, 0xb3, 0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00,
+0x04, 0x40, 0x01, 0x48, 0x46, 0x3f, 0xf0, 0x00, 0x40, 0x22, 0x0c, 0x02, 0x46, 0x40, 0x0a, 0xdf,
+0x58, 0x42, 0x04, 0x80, 0x40, 0x51, 0x10, 0x04, 0x14, 0x50, 0x01, 0x48, 0x46, 0x16, 0x02, 0x01,
+0x04, 0x20, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00, 0x40, 0x51, 0x0c, 0x02, 0x40, 0x22, 0x90, 0x04,
+0x14, 0x20, 0x81, 0x48, 0x58, 0x00, 0x00, 0xfc, 0x04, 0x50, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x00,
+0x58, 0x31, 0x80, 0xff, 0x40, 0x12, 0x8c, 0x02, 0x48, 0x00, 0x00, 0xc2, 0x46, 0x06, 0x02, 0x00,
+0x04, 0x40, 0x01, 0x48, 0x3c, 0x2d, 0xfe, 0x18, 0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08,
0x40, 0x50, 0x88, 0x04, 0x14, 0x50, 0x01, 0x48, 0x46, 0x56, 0x02, 0x01, 0x04, 0x12, 0x81, 0x48,
0x40, 0x30, 0xe0, 0x09, 0x40, 0x31, 0xe0, 0x08, 0x40, 0x21, 0x88, 0x04, 0x14, 0x22, 0x81, 0x48,
-0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc, 0x2e, 0x17, 0xfa, 0xcd, 0x04, 0x50, 0x00, 0x00,
-0x44, 0x4f, 0xc0, 0xff, 0x40, 0x30, 0xa0, 0x08, 0x40, 0x22, 0x90, 0x02, 0x40, 0x51, 0x88, 0x04,
-0x14, 0x50, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x03, 0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff,
-0x40, 0x50, 0xb8, 0x08, 0x40, 0x41, 0x0c, 0x02, 0x40, 0x12, 0x90, 0x04, 0x14, 0x10, 0x00, 0x00,
-0x2e, 0x07, 0xe6, 0x1d, 0x4e, 0x02, 0x00, 0x18, 0x46, 0x36, 0x02, 0x00, 0x04, 0x51, 0x83, 0x44,
-0x46, 0x40, 0x0f, 0xff, 0x58, 0x42, 0x0f, 0xff, 0x40, 0x22, 0x90, 0x02, 0x46, 0x06, 0x02, 0x01,
-0x14, 0x21, 0x83, 0x44, 0x58, 0x00, 0x0d, 0x10, 0x04, 0x10, 0x00, 0x00, 0x40, 0x10, 0x90, 0x02,
-0x14, 0x10, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff, 0x4e, 0x02, 0x00, 0x8a,
-0x2e, 0x37, 0xe4, 0x0e, 0x44, 0x20, 0x00, 0x01, 0x3e, 0x27, 0xe2, 0xad, 0x4e, 0x33, 0x00, 0x06,
-0x2e, 0x17, 0xe4, 0x0f, 0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48,
-0x46, 0x3f, 0xf0, 0x00, 0x40, 0x22, 0x0c, 0x02, 0x46, 0x40, 0x0b, 0x20, 0x58, 0x42, 0x04, 0xc1,
-0x40, 0x51, 0x10, 0x04, 0x14, 0x50, 0x01, 0x48, 0x46, 0x16, 0x02, 0x01, 0x04, 0x20, 0x81, 0x48,
-0x46, 0x06, 0x02, 0x00, 0x40, 0x51, 0x0c, 0x02, 0x40, 0x22, 0x90, 0x04, 0x14, 0x20, 0x81, 0x48,
-0x58, 0x00, 0x00, 0xfc, 0x04, 0x50, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x00, 0x58, 0x31, 0x80, 0xff,
-0x40, 0x12, 0x8c, 0x02, 0x48, 0x00, 0x00, 0x3a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48,
-0x3c, 0x2d, 0xfe, 0xb1, 0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08, 0x40, 0x50, 0x88, 0x04,
+0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc, 0x2e, 0x17, 0xf8, 0x6c, 0x04, 0x20, 0x00, 0x00,
+0x44, 0x4f, 0xc0, 0xff, 0x40, 0x30, 0xa0, 0x08, 0x40, 0x51, 0x10, 0x02, 0x40, 0x41, 0x94, 0x04,
+0x14, 0x40, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x03, 0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff,
+0x40, 0x10, 0xb8, 0x08, 0x40, 0x51, 0x0c, 0x02, 0x40, 0x10, 0x94, 0x04, 0x48, 0x00, 0x00, 0x88,
+0x2e, 0x07, 0xe1, 0xb2, 0x44, 0x50, 0x00, 0x01, 0x3e, 0x57, 0xe0, 0x42, 0x4e, 0x03, 0x00, 0x06,
+0x2e, 0x17, 0xe1, 0xb3, 0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x30, 0x01, 0x48,
+0x46, 0x4f, 0xf0, 0x00, 0x40, 0x11, 0x90, 0x02, 0x46, 0x30, 0x0b, 0x20, 0x58, 0x31, 0x84, 0xc1,
+0x40, 0x20, 0x8c, 0x04, 0x14, 0x20, 0x01, 0x48, 0x46, 0x56, 0x02, 0x01, 0x04, 0x12, 0x81, 0x48,
+0x46, 0x06, 0x02, 0x00, 0x40, 0x20, 0x90, 0x02, 0x40, 0x11, 0x0c, 0x04, 0x14, 0x12, 0x81, 0x48,
+0x58, 0x00, 0x00, 0xfc, 0x04, 0x30, 0x00, 0x00, 0x46, 0x2f, 0xff, 0x00, 0x58, 0x21, 0x00, 0xff,
+0x40, 0x11, 0x88, 0x02, 0x48, 0x00, 0x00, 0x3a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48,
+0x3c, 0x2d, 0xfe, 0x19, 0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08, 0x40, 0x50, 0x88, 0x04,
0x14, 0x50, 0x01, 0x48, 0x46, 0x56, 0x02, 0x01, 0x04, 0x12, 0x81, 0x48, 0x40, 0x30, 0xe0, 0x09,
0x40, 0x31, 0xe0, 0x08, 0x40, 0x21, 0x88, 0x04, 0x14, 0x22, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00,
-0x58, 0x00, 0x00, 0xfc, 0x2e, 0x17, 0xfa, 0xcd, 0x04, 0x20, 0x00, 0x00, 0x44, 0x4f, 0xc0, 0xff,
-0x40, 0x30, 0xa0, 0x08, 0x40, 0x51, 0x10, 0x02, 0x40, 0x41, 0x94, 0x04, 0x14, 0x40, 0x00, 0x00,
-0x46, 0x3f, 0xff, 0x03, 0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff, 0x40, 0x10, 0xb8, 0x08,
-0x40, 0x51, 0x0c, 0x02, 0x40, 0x10, 0x94, 0x04, 0x14, 0x10, 0x00, 0x00, 0x2e, 0x07, 0xe6, 0x1d,
-0x4e, 0x02, 0x00, 0x86, 0x46, 0x36, 0x02, 0x00, 0x04, 0x51, 0x83, 0x44, 0x46, 0x40, 0x0f, 0xff,
+0x58, 0x00, 0x00, 0xfc, 0x2e, 0x17, 0xf8, 0x6d, 0x04, 0x50, 0x00, 0x00, 0x44, 0x4f, 0xc0, 0xff,
+0x40, 0x30, 0xa0, 0x08, 0x40, 0x22, 0x90, 0x02, 0x40, 0x51, 0x88, 0x04, 0x14, 0x50, 0x00, 0x00,
+0x46, 0x3f, 0xff, 0x03, 0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff, 0x40, 0x50, 0xb8, 0x08,
+0x40, 0x41, 0x0c, 0x02, 0x40, 0x12, 0x90, 0x04, 0x14, 0x10, 0x00, 0x00, 0x2e, 0x07, 0xe3, 0xbd,
+0x4e, 0x02, 0x00, 0x18, 0x46, 0x36, 0x02, 0x00, 0x04, 0x51, 0x83, 0x44, 0x46, 0x40, 0x0f, 0xff,
0x58, 0x42, 0x0f, 0xff, 0x40, 0x22, 0x90, 0x02, 0x46, 0x06, 0x02, 0x01, 0x14, 0x21, 0x83, 0x44,
-0x58, 0x00, 0x0d, 0x10, 0x04, 0x10, 0x00, 0x00, 0x40, 0x10, 0x90, 0x02, 0x48, 0x00, 0x00, 0x6e,
-0x2e, 0x07, 0xe4, 0x0e, 0x44, 0x40, 0x00, 0x01, 0x3e, 0x47, 0xe2, 0xae, 0x4e, 0x03, 0x00, 0x06,
-0x2e, 0x17, 0xe4, 0x0f, 0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48,
-0x46, 0x3f, 0xf0, 0x00, 0x40, 0x22, 0x0c, 0x02, 0x46, 0x40, 0x0b, 0x61, 0x58, 0x42, 0x05, 0x02,
-0x40, 0x51, 0x10, 0x04, 0x14, 0x50, 0x01, 0x48, 0x46, 0x16, 0x02, 0x01, 0x04, 0x20, 0x81, 0x48,
-0x46, 0x06, 0x02, 0x00, 0x40, 0x51, 0x0c, 0x02, 0x40, 0x32, 0x90, 0x04, 0x14, 0x30, 0x81, 0x48,
-0x58, 0x00, 0x00, 0xfc, 0x04, 0x50, 0x00, 0x00, 0x46, 0x2f, 0xff, 0x00, 0x58, 0x21, 0x00, 0xff,
-0x40, 0x12, 0x88, 0x02, 0x48, 0x00, 0x00, 0x3a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48,
-0x3c, 0x2d, 0xfe, 0xb2, 0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08, 0x40, 0x50, 0x88, 0x04,
-0x14, 0x50, 0x01, 0x48, 0x46, 0x56, 0x02, 0x01, 0x04, 0x12, 0x81, 0x48, 0x40, 0x30, 0xe0, 0x09,
-0x40, 0x31, 0xe0, 0x08, 0x40, 0x21, 0x88, 0x04, 0x14, 0x22, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00,
-0x58, 0x00, 0x00, 0xfc, 0x2e, 0x17, 0xfa, 0xce, 0x04, 0x20, 0x00, 0x00, 0x44, 0x4f, 0xc0, 0xff,
-0x40, 0x30, 0xa0, 0x08, 0x40, 0x51, 0x10, 0x02, 0x40, 0x41, 0x94, 0x04, 0x14, 0x40, 0x00, 0x00,
-0x46, 0x3f, 0xff, 0x03, 0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff, 0x40, 0x10, 0xb8, 0x08,
-0x40, 0x51, 0x0c, 0x02, 0x40, 0x10, 0x94, 0x04, 0x14, 0x10, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20,
-0x46, 0x28, 0x00, 0x22, 0x04, 0x11, 0x00, 0x00, 0x54, 0x00, 0xff, 0x00, 0x40, 0x00, 0x20, 0x09,
-0x4a, 0x00, 0x78, 0x20, 0x46, 0x48, 0x00, 0x22, 0x04, 0x12, 0x00, 0x00, 0x42, 0x50, 0xcc, 0x09,
-0x14, 0x52, 0x00, 0x00, 0x58, 0x02, 0x00, 0x00, 0x04, 0x30, 0x00, 0x06, 0x46, 0x2f, 0xee, 0xef,
-0x58, 0x21, 0x0f, 0xff, 0x40, 0x11, 0x88, 0x02, 0x14, 0x10, 0x00, 0x06, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x48, 0x00, 0x22, 0x04, 0x12, 0x00, 0x00,
-0x2e, 0x57, 0xe4, 0x79, 0x55, 0xe0, 0xff, 0x00, 0x2e, 0x2f, 0xe4, 0x7b, 0x40, 0x4f, 0x20, 0x09,
-0x40, 0x12, 0x14, 0x01, 0x50, 0x31, 0x00, 0x38, 0x42, 0x50, 0x8c, 0x24, 0x45, 0xe0, 0x00, 0x1e,
-0x40, 0x32, 0xf8, 0x57, 0x2e, 0x27, 0xe4, 0x7a, 0x54, 0x00, 0x00, 0xff, 0x40, 0x11, 0x88, 0x00,
-0x40, 0x10, 0x80, 0x10, 0x49, 0xff, 0xe8, 0x42, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x07, 0xe6, 0x12,
-0x3e, 0x1f, 0xe2, 0x78, 0x49, 0xff, 0xed, 0x0a, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xd4, 0x44, 0x70, 0x00, 0x00,
-0x46, 0x68, 0x00, 0x22, 0x58, 0x83, 0x80, 0x00, 0x58, 0x93, 0x80, 0x00, 0x59, 0xcf, 0x80, 0x00,
-0x04, 0x43, 0x00, 0x00, 0x46, 0x20, 0x00, 0xc0, 0x40, 0x12, 0x08, 0x04, 0x14, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xc0, 0xc0, 0x04, 0x13, 0x00, 0x00, 0x40, 0x00, 0xbc, 0x08,
-0x40, 0x00, 0x7c, 0x09, 0x4e, 0x03, 0x00, 0x40, 0x54, 0x70, 0xff, 0x00, 0x40, 0x73, 0xa0, 0x09,
-0x54, 0x00, 0x80, 0x7f, 0x40, 0xf3, 0x80, 0x06, 0x4e, 0xf2, 0x00, 0x06, 0x40, 0x20, 0x1c, 0x01,
-0x48, 0x00, 0x00, 0x04, 0x40, 0x23, 0x80, 0x01, 0x54, 0x51, 0x00, 0xff, 0x5c, 0xf2, 0x80, 0x03,
-0x4e, 0xf2, 0x00, 0x04, 0x4e, 0x03, 0x00, 0x3e, 0x04, 0x53, 0x00, 0x00, 0x42, 0x22, 0xc8, 0x09,
-0x42, 0x21, 0x4c, 0x09, 0x14, 0x23, 0x00, 0x00, 0x40, 0x00, 0x20, 0x08, 0x04, 0x43, 0x00, 0x00,
-0x42, 0x32, 0x4c, 0x08, 0x41, 0xe1, 0x80, 0x04, 0x15, 0xe3, 0x00, 0x00, 0x5c, 0xf4, 0x83, 0xde,
-0x4e, 0xf3, 0x00, 0x0a, 0x5c, 0xf4, 0x00, 0x0a, 0x4e, 0xf2, 0x00, 0x06, 0x38, 0x1e, 0x22, 0x0a,
-0x50, 0x84, 0x00, 0x01, 0x04, 0x33, 0x00, 0x00, 0x42, 0x01, 0xc8, 0x09, 0x42, 0x00, 0x4c, 0x09,
-0x14, 0x03, 0x00, 0x00, 0x50, 0x94, 0x80, 0x01, 0x44, 0x40, 0x03, 0xe8, 0x4c, 0x92, 0x7f, 0xaa,
-0x48, 0x00, 0x00, 0x18, 0x0c, 0x24, 0x80, 0x01, 0x50, 0x63, 0x00, 0x01, 0x4b, 0xe0, 0x28, 0x01,
-0x58, 0x13, 0x00, 0x00, 0x3e, 0x0f, 0xcf, 0x4c, 0x40, 0xf3, 0x20, 0x06, 0x4e, 0xf3, 0xff, 0xf4,
-0x58, 0x03, 0x80, 0x00, 0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3e, 0x6e, 0x95, 0x54, 0x3e, 0x0f, 0xcf, 0x60, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0xa3, 0x00, 0x00,
-0x58, 0x9f, 0x80, 0x00, 0x44, 0x60, 0x00, 0x00, 0x48, 0xff, 0xff, 0xe4, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x40, 0x21, 0x00, 0x10, 0x54, 0x10, 0x80, 0xff, 0x4e, 0x26, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x20, 0x44, 0x20, 0x07, 0x35, 0x49, 0xff, 0xb6, 0x96,
-0x48, 0x00, 0x00, 0x00, 0x2f, 0xef, 0xe4, 0x7b, 0x44, 0x40, 0x00, 0x1e, 0x42, 0x51, 0x10, 0x24,
-0x50, 0x4f, 0x00, 0x38, 0x40, 0x22, 0x90, 0x76, 0x54, 0x21, 0x00, 0xff, 0x52, 0x31, 0x00, 0x7f,
-0x40, 0xf1, 0x84, 0x07, 0x4e, 0xf3, 0x00, 0x0a, 0x40, 0x51, 0x04, 0x00, 0x10, 0x50, 0x00, 0x04,
-0x44, 0x30, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x30, 0x00, 0x00, 0x10, 0x30, 0x00, 0x02,
-0x40, 0xf0, 0x88, 0x06, 0x4e, 0xf3, 0x00, 0x0c, 0x40, 0x10, 0x88, 0x01, 0x44, 0x20, 0x00, 0x01,
-0x10, 0x20, 0x00, 0x01, 0x10, 0x10, 0x00, 0x03, 0x48, 0x00, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x00,
-0x11, 0xe0, 0x00, 0x01, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x54, 0x00, 0x00, 0xff, 0x2e, 0x67, 0xe6, 0x19, 0x2e, 0x77, 0xe6, 0x18,
-0x3c, 0x83, 0xf3, 0x08, 0x4e, 0x02, 0x00, 0x06, 0x2e, 0x17, 0xe2, 0x98, 0x48, 0x00, 0x00, 0x04,
-0x2e, 0x17, 0xe2, 0x97, 0x2e, 0x2f, 0xe2, 0x90, 0x3e, 0x0f, 0xe2, 0x94, 0x49, 0xff, 0xff, 0xa0,
-0x3e, 0x0f, 0xcf, 0x78, 0x49, 0xff, 0xb6, 0x42, 0x2e, 0x27, 0xe6, 0x38, 0x44, 0x40, 0x00, 0x01,
-0x4c, 0x22, 0x40, 0x0a, 0x46, 0x10, 0x10, 0x08, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44,
-0x49, 0x00, 0x2d, 0x2e, 0x49, 0x00, 0x3f, 0x42, 0x44, 0x20, 0x00, 0x00, 0x54, 0x04, 0x00, 0xff,
-0x58, 0x13, 0x80, 0x00, 0x58, 0x43, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x49, 0x00, 0x3f, 0xba,
-0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x46, 0x08, 0x00, 0x22, 0x04, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xf9, 0xc8, 0x54, 0x70, 0xff, 0x00,
-0x20, 0x10, 0x00, 0x02, 0x40, 0x73, 0xa0, 0x09, 0x40, 0xf3, 0x84, 0x07, 0x4e, 0xf3, 0x00, 0x4a,
-0x3e, 0x9f, 0xe2, 0x96, 0x44, 0x80, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x50, 0x64, 0x80, 0x06,
-0x59, 0xc4, 0x00, 0x00, 0x00, 0x24, 0x80, 0x00, 0x4e, 0x22, 0x00, 0x2e, 0x20, 0x34, 0x80, 0x02,
-0x2e, 0x4f, 0xf9, 0xca, 0x50, 0x54, 0x7f, 0xfb, 0x54, 0x22, 0x80, 0xff, 0x40, 0xf2, 0x0c, 0x07,
-0x4e, 0xf3, 0x00, 0x22, 0x04, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x1c,
-0x5c, 0xf1, 0x00, 0x0f, 0x4e, 0xf2, 0x00, 0x04, 0x48, 0x00, 0x00, 0x4e, 0x44, 0x50, 0x00, 0x03,
-0x4c, 0x82, 0xc0, 0x0c, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe2, 0xc5, 0x3f, 0xc7, 0xe2, 0xba,
-0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x11, 0xc4, 0x80, 0x00, 0x04, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x08, 0x01, 0x50, 0x84, 0x00, 0x01, 0x54, 0x84, 0x00, 0xff, 0x44, 0x50, 0x00, 0x14,
-0x50, 0x94, 0x80, 0x0c, 0x50, 0x63, 0x00, 0x0c, 0x4c, 0x82, 0xff, 0xc6, 0x48, 0x00, 0x00, 0x50,
-0x20, 0x10, 0x00, 0x01, 0x40, 0xf0, 0x9c, 0x07, 0x4e, 0xf3, 0x00, 0x4a, 0x3e, 0x9f, 0xe2, 0x95,
-0x44, 0x80, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x50, 0x64, 0x80, 0x07, 0x59, 0xc4, 0x00, 0x00,
-0x00, 0x44, 0x80, 0x00, 0x4e, 0x42, 0x00, 0x30, 0x21, 0xe4, 0x80, 0x02, 0x2e, 0x5f, 0xf9, 0xc9,
-0x50, 0x14, 0x7f, 0xfb, 0x54, 0x20, 0x80, 0xff, 0x40, 0xff, 0x14, 0x07, 0x4e, 0xf3, 0x00, 0x24,
-0x04, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x1e, 0x5c, 0xf1, 0x00, 0x0f,
-0x4e, 0xf2, 0x00, 0x06, 0x4b, 0xe0, 0x04, 0x01, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x04,
-0x4c, 0x82, 0xc0, 0x0c, 0x44, 0x30, 0x00, 0x01, 0x3e, 0x37, 0xe2, 0xba, 0x3f, 0xc7, 0xe2, 0xc5,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x11, 0xc4, 0x80, 0x00, 0x04, 0x43, 0x00, 0x00,
-0x4b, 0xe0, 0x10, 0x01, 0x50, 0x84, 0x00, 0x01, 0x54, 0x84, 0x00, 0xff, 0x44, 0x50, 0x00, 0x14,
-0x50, 0x94, 0x80, 0x0c, 0x50, 0x63, 0x00, 0x0c, 0x4c, 0x82, 0xff, 0xc4, 0x2e, 0x47, 0xe6, 0x1e,
-0x44, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xe2, 0x97, 0x44, 0x20, 0x00, 0xfb, 0x44, 0x60, 0x00, 0x7f,
-0x5c, 0xf1, 0x00, 0x0f, 0x4e, 0xf2, 0x00, 0x08, 0x4e, 0x42, 0x00, 0x40, 0x00, 0x30, 0x7f, 0xff,
-0x48, 0x00, 0x00, 0x0c, 0x50, 0x31, 0x00, 0x02, 0x55, 0xe1, 0x80, 0xff, 0x00, 0x30, 0x7f, 0xff,
-0x5c, 0xff, 0x00, 0x02, 0x4e, 0xf2, 0x00, 0x20, 0x4e, 0x32, 0x00, 0x0c, 0x20, 0x30, 0x00, 0x01,
-0x40, 0xf1, 0x98, 0x07, 0x4e, 0xf2, 0x00, 0x06, 0x40, 0xf3, 0x8c, 0x07, 0x4e, 0xf3, 0x00, 0x04,
-0x58, 0x33, 0x00, 0x00, 0x00, 0x50, 0x7f, 0xfe, 0x4e, 0x52, 0x00, 0x24, 0x20, 0x50, 0x00, 0x00,
-0x40, 0xf0, 0x94, 0x07, 0x4e, 0xf2, 0x00, 0x1e, 0x40, 0xf2, 0x9c, 0x07, 0x4e, 0xf2, 0x00, 0x1a,
-0x48, 0x00, 0x00, 0x1a, 0x4e, 0x32, 0x00, 0x08, 0x21, 0xe0, 0x00, 0x01, 0x42, 0x6f, 0x18, 0x01,
-0x40, 0x63, 0x00, 0x10, 0x00, 0x30, 0x7f, 0xfe, 0x4e, 0x32, 0x00, 0x08, 0x20, 0x50, 0x00, 0x00,
-0x40, 0xf0, 0x94, 0x07, 0x4e, 0xf3, 0x00, 0x0a, 0x58, 0x50, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06,
-0x58, 0x50, 0x80, 0x00, 0x58, 0x61, 0x80, 0x00, 0x50, 0x21, 0x00, 0x01, 0x54, 0x21, 0x00, 0xff,
-0x44, 0x10, 0x00, 0x0f, 0x50, 0x00, 0x00, 0x0c, 0x4c, 0x20, 0x80, 0x06, 0x58, 0x12, 0x80, 0x00,
-0x48, 0xff, 0xff, 0xa8, 0x3e, 0x57, 0xf9, 0xc9, 0x3e, 0x67, 0xf9, 0xca, 0x54, 0x23, 0x00, 0xff,
-0x54, 0x32, 0x80, 0xff, 0x44, 0x10, 0x00, 0x7f, 0x44, 0x40, 0x00, 0x1e, 0x44, 0x00, 0x00, 0x02,
-0x49, 0xff, 0xd0, 0x4c, 0x46, 0x48, 0x00, 0x22, 0x04, 0x12, 0x00, 0x07, 0x46, 0x30, 0x11, 0x10,
-0x40, 0x50, 0x8c, 0x04, 0x14, 0x52, 0x00, 0x07, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xba, 0xd6,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xba, 0xaa, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0xff, 0xfd, 0xb4,
-0x58, 0x90, 0x00, 0x00, 0x3e, 0x2f, 0xe2, 0x44, 0x3e, 0x3f, 0xe2, 0xd3, 0x28, 0x11, 0x00, 0x01,
-0x3e, 0x0f, 0xe2, 0x4c, 0x10, 0x11, 0x80, 0x01, 0x10, 0x11, 0x80, 0x00, 0x50, 0x31, 0x80, 0x0c,
-0x4c, 0x20, 0x7f, 0xf6, 0x50, 0x01, 0x00, 0x02, 0x3e, 0x2f, 0xe3, 0x33, 0x28, 0x40, 0x00, 0x01,
-0x3e, 0x3f, 0xe2, 0x55, 0x10, 0x41, 0x00, 0x01, 0x10, 0x41, 0x00, 0x00, 0x50, 0x21, 0x00, 0x0c,
-0x4c, 0x01, 0xff, 0xf6, 0x3e, 0x6f, 0xe2, 0x94, 0x2f, 0xcf, 0xe4, 0x7a, 0x21, 0xe3, 0x00, 0x1c,
-0x20, 0x83, 0x00, 0x0f, 0x20, 0x13, 0x00, 0x10, 0x20, 0x73, 0x00, 0x1b, 0x44, 0x20, 0x00, 0x1e,
-0x40, 0xaf, 0x70, 0x01, 0x2f, 0xef, 0xe4, 0x7b, 0x40, 0x44, 0x70, 0x01, 0x40, 0x50, 0xf0, 0x01,
-0x40, 0x33, 0xf0, 0x01, 0x42, 0x15, 0x08, 0x24, 0x42, 0x82, 0x08, 0x24, 0x42, 0x71, 0x88, 0x24,
-0x50, 0x3f, 0x00, 0x38, 0x40, 0xa0, 0x8c, 0x16, 0x42, 0x52, 0x88, 0x24, 0x2e, 0x2f, 0xe2, 0x90,
-0x2f, 0xe7, 0xe4, 0x79, 0x58, 0x14, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00, 0x40, 0x84, 0x0f, 0x96,
-0x40, 0x4f, 0x28, 0x00, 0x10, 0x43, 0x00, 0x1c, 0x40, 0x42, 0x8d, 0x56, 0x40, 0xaf, 0x20, 0x00,
-0x10, 0xa3, 0x00, 0x0f, 0x40, 0x83, 0x8c, 0xf6, 0x40, 0x7f, 0x10, 0x00, 0x10, 0x73, 0x00, 0x10,
-0x44, 0x70, 0x00, 0x01, 0x40, 0x5f, 0x20, 0x00, 0x10, 0x53, 0x00, 0x1b, 0x44, 0x80, 0x00, 0xfb,
-0x49, 0xff, 0xfd, 0xd6, 0x44, 0x30, 0x00, 0x00, 0x2e, 0xa7, 0xe6, 0x1e, 0x58, 0x01, 0x80, 0x00,
-0x50, 0x23, 0x00, 0x03, 0x44, 0x60, 0x00, 0x7f, 0x5c, 0xf4, 0x00, 0x0f, 0x4e, 0xf2, 0x00, 0x20,
-0x4e, 0xa2, 0x00, 0x42, 0x20, 0x41, 0x00, 0x01, 0x10, 0x71, 0x7f, 0xff, 0x10, 0x71, 0x7f, 0xfe,
-0x40, 0xf2, 0x18, 0x07, 0x4e, 0xf2, 0x00, 0x06, 0x40, 0xf4, 0x90, 0x07, 0x4e, 0xf3, 0x00, 0x04,
-0x58, 0x43, 0x00, 0x00, 0x20, 0x51, 0x00, 0x00, 0x40, 0xf1, 0x94, 0x07, 0x4e, 0xf2, 0x00, 0x30,
-0x40, 0xf2, 0xa4, 0x07, 0x4e, 0xf2, 0x00, 0x2c, 0x48, 0x00, 0x00, 0x2c, 0x20, 0x11, 0x7f, 0xfd,
-0x4e, 0x17, 0x00, 0x08, 0x10, 0x71, 0x7f, 0xff, 0x10, 0x01, 0x7f, 0xfe, 0x48, 0x00, 0x00, 0x08,
-0x4e, 0x12, 0x00, 0x06, 0x10, 0x01, 0x7f, 0xff, 0x10, 0x71, 0x7f, 0xfe, 0x00, 0x51, 0x7f, 0xff,
-0x4e, 0x52, 0x00, 0x08, 0x20, 0x41, 0x00, 0x01, 0x42, 0x62, 0x18, 0x01, 0x40, 0x63, 0x00, 0x10,
-0x00, 0x11, 0x7f, 0xfe, 0x4e, 0x12, 0x00, 0x08, 0x20, 0x51, 0x00, 0x00, 0x40, 0xf1, 0x94, 0x07,
-0x4e, 0xf3, 0x00, 0x0a, 0x58, 0x51, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06, 0x58, 0x51, 0x80, 0x00,
-0x58, 0x62, 0x00, 0x00, 0x50, 0x84, 0x00, 0x01, 0x54, 0x84, 0x00, 0xff, 0x45, 0xe0, 0x00, 0x0f,
-0x50, 0x21, 0x00, 0x0c, 0x4c, 0x8f, 0x00, 0x06, 0x58, 0x32, 0x80, 0x00, 0x48, 0xff, 0xff, 0xa6,
-0x3e, 0x57, 0xf9, 0xc9, 0x3e, 0x67, 0xf9, 0xca, 0x54, 0x32, 0x80, 0xff, 0x40, 0x4f, 0x04, 0x08,
-0x54, 0x23, 0x00, 0xff, 0x44, 0x10, 0x00, 0x7f, 0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xcf, 0x4e,
-0x3e, 0x2f, 0xcf, 0x8c, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x1f, 0x2d, 0xb8, 0x49, 0xf7, 0xb9, 0x3a,
-0x44, 0x00, 0x00, 0x01, 0x44, 0x10, 0x00, 0x00, 0x49, 0xf7, 0xb9, 0x5c, 0x46, 0x58, 0x00, 0x22,
-0x04, 0x42, 0x80, 0x07, 0x46, 0x30, 0x11, 0x10, 0x40, 0x22, 0x0c, 0x04, 0x14, 0x22, 0x80, 0x07,
-0x58, 0x02, 0x80, 0x00, 0x04, 0x10, 0x00, 0x06, 0x58, 0x50, 0x00, 0x00, 0x40, 0x40, 0x8c, 0x04,
-0x14, 0x40, 0x00, 0x06, 0x04, 0x32, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01, 0x42, 0x21, 0xcc, 0x08,
-0x14, 0x22, 0x80, 0x00, 0x49, 0xf7, 0xb9, 0xba, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xb9, 0x8e,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xb9, 0x58, 0x44, 0x10, 0x00, 0x77,
-0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xe7, 0x7c, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3c, 0x0d, 0xf9, 0x8a, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x00, 0xda, 0x49, 0xff, 0xb3, 0xa8, 0x48, 0x00, 0x00, 0x00,
-0x44, 0x30, 0x00, 0x00, 0x14, 0x20, 0x00, 0x04, 0x14, 0x30, 0x00, 0x01, 0x14, 0x10, 0x00, 0x05,
-0x14, 0x30, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x01, 0x0a, 0x49, 0xff, 0xb3, 0x88, 0x48, 0x00, 0x00, 0x00,
-0x04, 0x10, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x1e, 0x04, 0x50, 0x00, 0x01, 0x44, 0x40, 0x00, 0x00,
-0x14, 0x50, 0x80, 0x01, 0x14, 0x12, 0x80, 0x00, 0x14, 0x40, 0x00, 0x00, 0x14, 0x40, 0x00, 0x01,
-0x3e, 0x0f, 0xf9, 0xcc, 0x04, 0x30, 0x00, 0x02, 0x04, 0x10, 0x00, 0x00, 0x50, 0x21, 0xff, 0xff,
-0x14, 0x20, 0x00, 0x02, 0x4c, 0x10, 0x40, 0x06, 0x04, 0x00, 0x80, 0x03, 0x49, 0xf7, 0xbc, 0x46,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x3c, 0x1d, 0xfe, 0x76, 0x58, 0x70, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x14,
-0x58, 0x00, 0x80, 0x00, 0x49, 0xf7, 0xbc, 0x32, 0x44, 0x00, 0x03, 0xe8, 0x42, 0x33, 0x80, 0x24,
-0x44, 0x20, 0x7f, 0xff, 0x40, 0x11, 0x88, 0x00, 0x3c, 0x0d, 0xfe, 0x76, 0x40, 0x10, 0xbc, 0x09,
-0x49, 0xf7, 0xbd, 0x16, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0xf7, 0xbc, 0x70, 0x46, 0x17, 0xff, 0xff,
-0x58, 0x10, 0x8f, 0xff, 0x58, 0x80, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x46, 0x00, 0x01, 0xe0,
-0x3e, 0x2f, 0xf9, 0xcc, 0x14, 0xa1, 0x00, 0x04, 0x58, 0x71, 0x00, 0x00, 0x04, 0x61, 0x00, 0x00,
-0x41, 0xc4, 0x00, 0x00, 0x48, 0x00, 0x00, 0x5c, 0x4e, 0x63, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94,
-0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x01, 0x7d, 0x49, 0xff, 0xb3, 0x18, 0x48, 0x00, 0x00, 0x00,
-0x04, 0x03, 0x00, 0x02, 0x40, 0x34, 0x00, 0x01, 0x4e, 0x35, 0x00, 0x3c, 0x04, 0x43, 0x00, 0x00,
-0x4e, 0x43, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x01, 0x81,
-0x49, 0xff, 0xb3, 0x04, 0x48, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xff, 0x6a,
-0x02, 0x03, 0x00, 0x06, 0x4e, 0x02, 0x00, 0x1a, 0x50, 0x00, 0x7f, 0xff, 0x12, 0x03, 0x00, 0x06,
-0x15, 0xc3, 0x00, 0x02, 0x05, 0xe3, 0x80, 0x01, 0x14, 0x63, 0x80, 0x01, 0x14, 0x73, 0x00, 0x00,
-0x15, 0xe3, 0x00, 0x01, 0x14, 0x6f, 0x00, 0x00, 0x04, 0x63, 0x80, 0x02, 0x50, 0x53, 0x00, 0x01,
-0x14, 0x53, 0x80, 0x02, 0x48, 0x00, 0x00, 0x0a, 0x04, 0x13, 0x00, 0x05, 0x4e, 0x12, 0x00, 0x06,
-0x04, 0x03, 0x00, 0x04, 0x4b, 0xe0, 0x04, 0x01, 0x14, 0xa3, 0x80, 0x04, 0x48, 0x00, 0x00, 0x0e,
-0x04, 0x23, 0x80, 0x04, 0x40, 0x90, 0x08, 0x01, 0x4e, 0x95, 0x00, 0x04, 0x48, 0x00, 0x00, 0x04,
-0x14, 0x03, 0x80, 0x04, 0x58, 0x93, 0x00, 0x00, 0x04, 0x64, 0x80, 0x00, 0x3e, 0x9f, 0xf9, 0xcc,
-0x4c, 0x64, 0xff, 0xa4, 0x04, 0x53, 0x00, 0x00, 0x4c, 0x53, 0x00, 0x16, 0x04, 0x03, 0x00, 0x04,
-0x40, 0x34, 0x00, 0x01, 0x4e, 0x35, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94,
-0x44, 0x20, 0x01, 0xa0, 0x49, 0xff, 0xb2, 0xb2, 0x48, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x01,
-0x49, 0xff, 0xff, 0x4e, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x01, 0x2d, 0x49, 0xff, 0xb2, 0x96,
-0x48, 0x00, 0x00, 0x00, 0x44, 0x00, 0xea, 0x60, 0x40, 0xf0, 0x04, 0x06, 0x4e, 0xf2, 0x00, 0x28,
-0x46, 0x2e, 0xa5, 0xf1, 0x58, 0x21, 0x05, 0xa0, 0x40, 0xf1, 0x04, 0x06, 0x4e, 0xf2, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x01, 0x35, 0x49, 0xff, 0xb2, 0x7e,
-0x48, 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, 0x77, 0x44, 0x3f, 0x15, 0xa0, 0x40, 0x22, 0x00, 0x13,
-0x42, 0x11, 0x0c, 0x73, 0x12, 0x23, 0x00, 0x06, 0x4e, 0x13, 0x00, 0x10, 0x50, 0x11, 0x7f, 0xff,
-0x12, 0x13, 0x00, 0x06, 0x58, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x44, 0x00, 0x00, 0x00,
-0x12, 0x03, 0x00, 0x06, 0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0xff, 0xfe, 0x40, 0xf2, 0x84, 0x06,
-0x4e, 0xf2, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x01, 0x48,
-0x49, 0xff, 0xb2, 0x54, 0x48, 0x00, 0x00, 0x00, 0x40, 0x30, 0xbc, 0x08, 0x50, 0x71, 0x83, 0xe7,
-0x44, 0x90, 0x03, 0xe8, 0x40, 0x83, 0xa4, 0x57, 0x45, 0xe0, 0x00, 0x01, 0x3e, 0x7f, 0xf9, 0xcc,
-0x40, 0x94, 0x20, 0x1b, 0x40, 0x9f, 0x20, 0x1a, 0x49, 0xf7, 0xbb, 0x78, 0x04, 0x23, 0x80, 0x00,
-0x40, 0x80, 0x24, 0x00, 0x4c, 0x23, 0x80, 0x08, 0x04, 0x13, 0x80, 0x04, 0x40, 0x44, 0x04, 0x01,
-0x4e, 0x44, 0x00, 0x08, 0x3c, 0x8f, 0xfe, 0x77, 0x58, 0x04, 0x80, 0x00, 0x49, 0xff, 0xfe, 0xd0,
-0x04, 0x03, 0x00, 0x00, 0x14, 0x83, 0x00, 0x02, 0x4e, 0x03, 0x00, 0x12, 0x3c, 0x3d, 0xfe, 0x74,
-0x14, 0x63, 0x80, 0x01, 0x14, 0x73, 0x00, 0x00, 0x14, 0x33, 0x00, 0x01, 0x14, 0x61, 0x80, 0x00,
-0x05, 0xe3, 0x80, 0x02, 0x50, 0x2f, 0x00, 0x01, 0x14, 0x23, 0x80, 0x02, 0x51, 0xff, 0x80, 0x04,
-0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x46, 0x10, 0x01, 0x15, 0x2e, 0x07, 0xe5, 0xa3, 0x4e, 0x02, 0x00, 0x26, 0x3e, 0x6f, 0xf9, 0xcc,
-0x04, 0x03, 0x00, 0x03, 0x44, 0x70, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00, 0x3e, 0x27, 0xe5, 0xa3,
-0x14, 0x63, 0x00, 0x00, 0x14, 0x63, 0x00, 0x01, 0x14, 0x73, 0x00, 0x02, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x00, 0xc2, 0x49, 0xff, 0xb1, 0xee,
-0x48, 0x00, 0x00, 0x00, 0x49, 0xf7, 0xba, 0xca, 0x04, 0x03, 0x00, 0x03, 0x49, 0xf7, 0xba, 0x38,
-0x14, 0x73, 0x00, 0x03, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0xbc, 0x46, 0x10, 0x01, 0x15, 0x3e, 0x6f, 0xf9, 0xcc, 0x44, 0x20, 0x00, 0x00,
-0x2e, 0x07, 0xe5, 0xa3, 0x14, 0x23, 0x00, 0x02, 0x44, 0x20, 0x00, 0x01, 0x14, 0x63, 0x00, 0x00,
-0x14, 0x63, 0x00, 0x01, 0x4c, 0x01, 0x00, 0x1a, 0x04, 0x03, 0x00, 0x03, 0x3e, 0x27, 0xe5, 0xa3,
-0x4e, 0x03, 0x00, 0x12, 0x49, 0xf7, 0xba, 0x58, 0x14, 0x03, 0x00, 0x03, 0x4e, 0x03, 0x00, 0x0e,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xcf, 0x94, 0x44, 0x20, 0x00, 0xa2, 0x49, 0xff, 0xb1, 0xb6,
-0x48, 0x00, 0x00, 0x00, 0x49, 0xf7, 0xba, 0x92, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff, 0x49, 0xff, 0xed, 0xf4,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x58, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0d, 0x02, 0x11, 0x00, 0x1d,
-0x00, 0x30, 0x00, 0x01, 0x42, 0x10, 0xb0, 0x0b, 0x00, 0x20, 0x00, 0x02, 0x4c, 0x30, 0x80, 0x14,
-0x10, 0x10, 0x00, 0x01, 0x3e, 0x3f, 0xf6, 0x70, 0x38, 0x41, 0x88, 0x00, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x42, 0x80, 0x0a, 0x4c, 0x12, 0xc0, 0x04, 0x38, 0x11, 0x88, 0x08, 0x00, 0x10, 0x00, 0x01,
-0x49, 0xff, 0xd8, 0x0a, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x04, 0x50, 0x00, 0x06, 0x04, 0x30, 0x00, 0x0d,
-0x00, 0x42, 0x80, 0x07, 0x40, 0x22, 0x08, 0x09, 0x10, 0x21, 0x80, 0x00, 0x05, 0xe0, 0x00, 0x06,
-0x04, 0x40, 0x00, 0x0d, 0x00, 0x5f, 0x00, 0x08, 0x44, 0x20, 0x00, 0x01, 0x10, 0x52, 0x00, 0x02,
-0x2e, 0x17, 0xe2, 0x0c, 0x4c, 0x11, 0x40, 0x04, 0x49, 0xff, 0xff, 0xba, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x44, 0x00, 0x00, 0x30, 0x49, 0xf7, 0xc5, 0xaa, 0x58, 0x90, 0x00, 0x00, 0x49, 0xf7, 0xc5, 0x78,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x30, 0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xbf, 0xe6,
-0x44, 0x20, 0x00, 0x30, 0x12, 0x23, 0x00, 0x00, 0x2e, 0x17, 0xfa, 0x12, 0x50, 0x83, 0x00, 0x20,
-0x00, 0x03, 0x00, 0x03, 0x4e, 0x13, 0x00, 0x0a, 0x44, 0x4f, 0xff, 0x87, 0x40, 0x30, 0x10, 0x02,
-0x58, 0x01, 0x80, 0x20, 0x48, 0x00, 0x00, 0x08, 0x44, 0x7f, 0xff, 0x87, 0x40, 0x50, 0x1c, 0x02,
-0x58, 0x02, 0x80, 0x68, 0x10, 0x03, 0x00, 0x03, 0x00, 0x73, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03,
-0x44, 0x2f, 0xff, 0xc8, 0x54, 0xa0, 0x00, 0x7f, 0x10, 0xa3, 0x00, 0x03, 0x54, 0x03, 0x80, 0x03,
-0x3e, 0x7f, 0xfa, 0x08, 0x00, 0x53, 0x80, 0x01, 0x10, 0x03, 0x00, 0x07, 0x10, 0x53, 0x00, 0x04,
-0x10, 0x23, 0x00, 0x05, 0x02, 0x43, 0x00, 0x06, 0x01, 0xc3, 0x80, 0x07, 0x00, 0x13, 0x00, 0x15,
-0x02, 0x33, 0x00, 0x0d, 0x00, 0x53, 0x00, 0x0b, 0x41, 0xce, 0x08, 0x08, 0x00, 0xa3, 0x00, 0x09,
-0x00, 0x23, 0x00, 0x19, 0x40, 0x00, 0x70, 0x04, 0x45, 0xef, 0xc0, 0x03, 0x45, 0xcf, 0xff, 0x80,
-0x40, 0x52, 0xf0, 0x04, 0x40, 0x31, 0xf8, 0x02, 0x45, 0xef, 0xf8, 0x00, 0x54, 0x42, 0x00, 0x3f,
-0x54, 0x10, 0x80, 0xdd, 0x40, 0x42, 0x78, 0x04, 0x58, 0x31, 0x80, 0x04, 0x40, 0x21, 0x0c, 0x09,
-0x40, 0x21, 0x0c, 0x08, 0x58, 0x10, 0x80, 0x22, 0x58, 0xa5, 0x00, 0x10, 0x45, 0xcf, 0xff, 0xff,
-0x12, 0x43, 0x00, 0x06, 0x10, 0x03, 0x00, 0x07, 0x10, 0x53, 0x00, 0x0b, 0x12, 0x33, 0x00, 0x0d,
-0x10, 0x13, 0x00, 0x15, 0x11, 0xc3, 0x00, 0x14, 0x10, 0xa3, 0x00, 0x09, 0x10, 0x23, 0x00, 0x19,
-0x44, 0x60, 0x10, 0xa4, 0x12, 0x64, 0x00, 0x00, 0x45, 0xef, 0xc0, 0x00, 0x02, 0x23, 0x80, 0x04,
-0x40, 0x01, 0x78, 0x04, 0x12, 0x04, 0x00, 0x01, 0x3e, 0x1f, 0xfa, 0x00, 0x44, 0x20, 0x00, 0x06,
-0x50, 0x04, 0x00, 0x04, 0x49, 0xf7, 0xbf, 0x4e, 0x3e, 0x1f, 0xf9, 0xf8, 0x50, 0x04, 0x00, 0x0a,
-0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbf, 0x46, 0x00, 0x13, 0x80, 0x0a, 0x4e, 0x13, 0x00, 0x0c,
-0x58, 0x24, 0x80, 0x00, 0x44, 0x10, 0x00, 0x04, 0x44, 0x30, 0x00, 0x01, 0x44, 0x00, 0x00, 0x02,
-0x48, 0x00, 0x00, 0x0a, 0x58, 0x24, 0x80, 0x00, 0x44, 0x00, 0x00, 0x02, 0x44, 0x10, 0x00, 0x0d,
-0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xc8, 0xfe, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x58, 0x00, 0x0d, 0x10, 0x04, 0x10, 0x00, 0x00, 0x40, 0x10, 0x90, 0x02, 0x14, 0x10, 0x00, 0x00,
+0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff, 0x4e, 0x02, 0x00, 0x8a, 0x2e, 0x37, 0xe1, 0xb2,
+0x44, 0x20, 0x00, 0x01, 0x3e, 0x27, 0xe0, 0x4d, 0x4e, 0x33, 0x00, 0x06, 0x2e, 0x17, 0xe1, 0xb3,
+0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48, 0x46, 0x3f, 0xf0, 0x00,
+0x40, 0x22, 0x0c, 0x02, 0x46, 0x40, 0x0b, 0x20, 0x58, 0x42, 0x04, 0xc1, 0x40, 0x51, 0x10, 0x04,
+0x14, 0x50, 0x01, 0x48, 0x46, 0x16, 0x02, 0x01, 0x04, 0x20, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00,
+0x40, 0x51, 0x0c, 0x02, 0x40, 0x22, 0x90, 0x04, 0x14, 0x20, 0x81, 0x48, 0x58, 0x00, 0x00, 0xfc,
+0x04, 0x50, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x00, 0x58, 0x31, 0x80, 0xff, 0x40, 0x12, 0x8c, 0x02,
+0x48, 0x00, 0x00, 0x3a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48, 0x3c, 0x2d, 0xfe, 0x19,
+0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08, 0x40, 0x50, 0x88, 0x04, 0x14, 0x50, 0x01, 0x48,
+0x46, 0x56, 0x02, 0x01, 0x04, 0x12, 0x81, 0x48, 0x40, 0x30, 0xe0, 0x09, 0x40, 0x31, 0xe0, 0x08,
+0x40, 0x21, 0x88, 0x04, 0x14, 0x22, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc,
+0x2e, 0x17, 0xf8, 0x6d, 0x04, 0x20, 0x00, 0x00, 0x44, 0x4f, 0xc0, 0xff, 0x40, 0x30, 0xa0, 0x08,
+0x40, 0x51, 0x10, 0x02, 0x40, 0x41, 0x94, 0x04, 0x14, 0x40, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x03,
+0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff, 0x40, 0x10, 0xb8, 0x08, 0x40, 0x51, 0x0c, 0x02,
+0x40, 0x10, 0x94, 0x04, 0x14, 0x10, 0x00, 0x00, 0x2e, 0x07, 0xe3, 0xbd, 0x4e, 0x02, 0x00, 0x86,
+0x46, 0x36, 0x02, 0x00, 0x04, 0x51, 0x83, 0x44, 0x46, 0x40, 0x0f, 0xff, 0x58, 0x42, 0x0f, 0xff,
+0x40, 0x22, 0x90, 0x02, 0x46, 0x06, 0x02, 0x01, 0x14, 0x21, 0x83, 0x44, 0x58, 0x00, 0x0d, 0x10,
+0x04, 0x10, 0x00, 0x00, 0x40, 0x10, 0x90, 0x02, 0x48, 0x00, 0x00, 0x6e, 0x2e, 0x07, 0xe1, 0xb2,
+0x44, 0x40, 0x00, 0x01, 0x3e, 0x47, 0xe0, 0x4e, 0x4e, 0x03, 0x00, 0x06, 0x2e, 0x17, 0xe1, 0xb3,
+0x4e, 0x12, 0x00, 0x2a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48, 0x46, 0x3f, 0xf0, 0x00,
+0x40, 0x22, 0x0c, 0x02, 0x46, 0x40, 0x0b, 0x61, 0x58, 0x42, 0x05, 0x02, 0x40, 0x51, 0x10, 0x04,
+0x14, 0x50, 0x01, 0x48, 0x46, 0x16, 0x02, 0x01, 0x04, 0x20, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00,
+0x40, 0x51, 0x0c, 0x02, 0x40, 0x32, 0x90, 0x04, 0x14, 0x30, 0x81, 0x48, 0x58, 0x00, 0x00, 0xfc,
+0x04, 0x50, 0x00, 0x00, 0x46, 0x2f, 0xff, 0x00, 0x58, 0x21, 0x00, 0xff, 0x40, 0x12, 0x88, 0x02,
+0x48, 0x00, 0x00, 0x3a, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x01, 0x48, 0x3c, 0x2d, 0xfe, 0x1a,
+0x40, 0x12, 0x60, 0x09, 0x40, 0x10, 0xe0, 0x08, 0x40, 0x50, 0x88, 0x04, 0x14, 0x50, 0x01, 0x48,
+0x46, 0x56, 0x02, 0x01, 0x04, 0x12, 0x81, 0x48, 0x40, 0x30, 0xe0, 0x09, 0x40, 0x31, 0xe0, 0x08,
+0x40, 0x21, 0x88, 0x04, 0x14, 0x22, 0x81, 0x48, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc,
+0x2e, 0x17, 0xf8, 0x6e, 0x04, 0x20, 0x00, 0x00, 0x44, 0x4f, 0xc0, 0xff, 0x40, 0x30, 0xa0, 0x08,
+0x40, 0x51, 0x10, 0x02, 0x40, 0x41, 0x94, 0x04, 0x14, 0x40, 0x00, 0x00, 0x46, 0x3f, 0xff, 0x03,
+0x04, 0x20, 0x00, 0x00, 0x58, 0x31, 0x8f, 0xff, 0x40, 0x10, 0xb8, 0x08, 0x40, 0x51, 0x0c, 0x02,
+0x40, 0x10, 0x94, 0x04, 0x14, 0x10, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x28, 0x00, 0x22,
+0x04, 0x11, 0x00, 0x00, 0x54, 0x00, 0xff, 0x00, 0x40, 0x00, 0x20, 0x09, 0x4a, 0x00, 0x78, 0x20,
+0x46, 0x48, 0x00, 0x22, 0x04, 0x12, 0x00, 0x00, 0x42, 0x50, 0xcc, 0x09, 0x14, 0x52, 0x00, 0x00,
+0x58, 0x02, 0x00, 0x00, 0x04, 0x30, 0x00, 0x06, 0x46, 0x2f, 0xee, 0xef, 0x58, 0x21, 0x0f, 0xff,
+0x40, 0x11, 0x88, 0x02, 0x14, 0x10, 0x00, 0x06, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x46, 0x48, 0x00, 0x22, 0x04, 0x12, 0x00, 0x00, 0x2e, 0x57, 0xe2, 0x19,
+0x55, 0xe0, 0xff, 0x00, 0x2e, 0x2f, 0xe2, 0x1b, 0x40, 0x4f, 0x20, 0x09, 0x40, 0x12, 0x14, 0x01,
+0x50, 0x31, 0x00, 0x38, 0x42, 0x50, 0x8c, 0x24, 0x45, 0xe0, 0x00, 0x1e, 0x40, 0x32, 0xf8, 0x57,
+0x2e, 0x27, 0xe2, 0x1a, 0x54, 0x00, 0x00, 0xff, 0x40, 0x11, 0x88, 0x00, 0x40, 0x10, 0x80, 0x10,
+0x49, 0xff, 0xe8, 0x42, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x07, 0xe3, 0xb2, 0x3e, 0x1f, 0xe0, 0x18,
+0x49, 0xff, 0xed, 0x0a, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xd4, 0x44, 0x70, 0x00, 0x00, 0x46, 0x68, 0x00, 0x22,
+0x58, 0x83, 0x80, 0x00, 0x58, 0x93, 0x80, 0x00, 0x59, 0xcf, 0x80, 0x00, 0x04, 0x43, 0x00, 0x00,
+0x46, 0x20, 0x00, 0xc0, 0x40, 0x12, 0x08, 0x04, 0x14, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xf7, 0xc0, 0x7a, 0x04, 0x13, 0x00, 0x00, 0x40, 0x00, 0xbc, 0x08, 0x40, 0x00, 0x7c, 0x09,
+0x4e, 0x03, 0x00, 0x40, 0x54, 0x70, 0xff, 0x00, 0x40, 0x73, 0xa0, 0x09, 0x54, 0x00, 0x80, 0x7f,
+0x40, 0xf3, 0x80, 0x06, 0x4e, 0xf2, 0x00, 0x06, 0x40, 0x20, 0x1c, 0x01, 0x48, 0x00, 0x00, 0x04,
+0x40, 0x23, 0x80, 0x01, 0x54, 0x51, 0x00, 0xff, 0x5c, 0xf2, 0x80, 0x03, 0x4e, 0xf2, 0x00, 0x04,
+0x4e, 0x03, 0x00, 0x3e, 0x04, 0x53, 0x00, 0x00, 0x42, 0x22, 0xc8, 0x09, 0x42, 0x21, 0x4c, 0x09,
+0x14, 0x23, 0x00, 0x00, 0x40, 0x00, 0x20, 0x08, 0x04, 0x43, 0x00, 0x00, 0x42, 0x32, 0x4c, 0x08,
+0x41, 0xe1, 0x80, 0x04, 0x15, 0xe3, 0x00, 0x00, 0x5c, 0xf4, 0x83, 0xde, 0x4e, 0xf3, 0x00, 0x0a,
+0x5c, 0xf4, 0x00, 0x0a, 0x4e, 0xf2, 0x00, 0x06, 0x38, 0x1e, 0x22, 0x0a, 0x50, 0x84, 0x00, 0x01,
+0x04, 0x33, 0x00, 0x00, 0x42, 0x01, 0xc8, 0x09, 0x42, 0x00, 0x4c, 0x09, 0x14, 0x03, 0x00, 0x00,
+0x50, 0x94, 0x80, 0x01, 0x44, 0x40, 0x03, 0xe8, 0x4c, 0x92, 0x7f, 0xaa, 0x48, 0x00, 0x00, 0x18,
+0x0c, 0x24, 0x80, 0x01, 0x50, 0x63, 0x00, 0x01, 0x4b, 0xe0, 0x28, 0x01, 0x58, 0x13, 0x00, 0x00,
+0x3e, 0x0f, 0xcc, 0xf8, 0x40, 0xf3, 0x20, 0x06, 0x4e, 0xf3, 0xff, 0xf4, 0x58, 0x03, 0x80, 0x00,
+0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x6e, 0x95, 0x54,
+0x3e, 0x0f, 0xcd, 0x0c, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0xa3, 0x00, 0x00, 0x58, 0x9f, 0x80, 0x00,
+0x44, 0x60, 0x00, 0x00, 0x48, 0xff, 0xff, 0xe4, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x40, 0x21, 0x00, 0x10, 0x54, 0x10, 0x80, 0xff, 0x4e, 0x26, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xcc, 0xcc, 0x44, 0x20, 0x07, 0x35, 0x49, 0xff, 0xb6, 0x50, 0x48, 0x00, 0x00, 0x00,
+0x2f, 0xef, 0xe2, 0x1b, 0x44, 0x40, 0x00, 0x1e, 0x42, 0x51, 0x10, 0x24, 0x50, 0x4f, 0x00, 0x38,
+0x40, 0x22, 0x90, 0x76, 0x54, 0x21, 0x00, 0xff, 0x52, 0x31, 0x00, 0x7f, 0x40, 0xf1, 0x84, 0x07,
+0x4e, 0xf3, 0x00, 0x0a, 0x40, 0x51, 0x04, 0x00, 0x10, 0x50, 0x00, 0x04, 0x44, 0x30, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x04, 0x44, 0x30, 0x00, 0x00, 0x10, 0x30, 0x00, 0x02, 0x40, 0xf0, 0x88, 0x06,
+0x4e, 0xf3, 0x00, 0x0c, 0x40, 0x10, 0x88, 0x01, 0x44, 0x20, 0x00, 0x01, 0x10, 0x20, 0x00, 0x01,
+0x10, 0x10, 0x00, 0x03, 0x48, 0x00, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x00, 0x11, 0xe0, 0x00, 0x01,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
+0x54, 0x00, 0x00, 0xff, 0x2e, 0x67, 0xe3, 0xb9, 0x2e, 0x77, 0xe3, 0xb8, 0x3c, 0x83, 0xf1, 0xd8,
+0x4e, 0x02, 0x00, 0x06, 0x2e, 0x17, 0xe0, 0x38, 0x48, 0x00, 0x00, 0x04, 0x2e, 0x17, 0xe0, 0x37,
+0x2e, 0x2f, 0xe0, 0x30, 0x3e, 0x0f, 0xe0, 0x34, 0x49, 0xff, 0xff, 0xa0, 0x3e, 0x0f, 0xcd, 0x24,
+0x49, 0xff, 0xb5, 0xfc, 0x2e, 0x27, 0xe3, 0xd8, 0x44, 0x40, 0x00, 0x01, 0x4c, 0x22, 0x40, 0x0a,
+0x46, 0x10, 0x10, 0x08, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x49, 0x00, 0x2d, 0x84,
+0x49, 0x00, 0x3e, 0x36, 0x44, 0x20, 0x00, 0x00, 0x54, 0x04, 0x00, 0xff, 0x58, 0x13, 0x80, 0x00,
+0x58, 0x43, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x49, 0x00, 0x3e, 0xae, 0x3a, 0x6f, 0xa0, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x08, 0x00, 0x22,
+0x04, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xf7, 0x68, 0x54, 0x70, 0xff, 0x00, 0x20, 0x10, 0x00, 0x02,
+0x40, 0x73, 0xa0, 0x09, 0x40, 0xf3, 0x84, 0x07, 0x4e, 0xf3, 0x00, 0x4a, 0x3e, 0x9f, 0xe0, 0x36,
+0x44, 0x80, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x50, 0x64, 0x80, 0x06, 0x59, 0xc4, 0x00, 0x00,
+0x00, 0x24, 0x80, 0x00, 0x4e, 0x22, 0x00, 0x2e, 0x20, 0x34, 0x80, 0x02, 0x2e, 0x4f, 0xf7, 0x6a,
+0x50, 0x54, 0x7f, 0xfb, 0x54, 0x22, 0x80, 0xff, 0x40, 0xf2, 0x0c, 0x07, 0x4e, 0xf3, 0x00, 0x22,
+0x04, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x1c, 0x5c, 0xf1, 0x00, 0x0f,
+0x4e, 0xf2, 0x00, 0x04, 0x48, 0x00, 0x00, 0x4e, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x82, 0xc0, 0x0c,
+0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe0, 0x65, 0x3f, 0xc7, 0xe0, 0x5a, 0x44, 0x00, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x04, 0x11, 0xc4, 0x80, 0x00, 0x04, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x08, 0x01,
+0x50, 0x84, 0x00, 0x01, 0x54, 0x84, 0x00, 0xff, 0x44, 0x50, 0x00, 0x14, 0x50, 0x94, 0x80, 0x0c,
+0x50, 0x63, 0x00, 0x0c, 0x4c, 0x82, 0xff, 0xc6, 0x48, 0x00, 0x00, 0x50, 0x20, 0x10, 0x00, 0x01,
+0x40, 0xf0, 0x9c, 0x07, 0x4e, 0xf3, 0x00, 0x4a, 0x3e, 0x9f, 0xe0, 0x35, 0x44, 0x80, 0x00, 0x00,
+0x10, 0x10, 0x00, 0x00, 0x50, 0x64, 0x80, 0x07, 0x59, 0xc4, 0x00, 0x00, 0x00, 0x44, 0x80, 0x00,
+0x4e, 0x42, 0x00, 0x30, 0x21, 0xe4, 0x80, 0x02, 0x2e, 0x5f, 0xf7, 0x69, 0x50, 0x14, 0x7f, 0xfb,
+0x54, 0x20, 0x80, 0xff, 0x40, 0xff, 0x14, 0x07, 0x4e, 0xf3, 0x00, 0x24, 0x04, 0x13, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x1e, 0x5c, 0xf1, 0x00, 0x0f, 0x4e, 0xf2, 0x00, 0x06,
+0x4b, 0xe0, 0x04, 0x01, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x82, 0xc0, 0x0c,
+0x44, 0x30, 0x00, 0x01, 0x3e, 0x37, 0xe0, 0x5a, 0x3f, 0xc7, 0xe0, 0x65, 0x44, 0x00, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x04, 0x11, 0xc4, 0x80, 0x00, 0x04, 0x43, 0x00, 0x00, 0x4b, 0xe0, 0x10, 0x01,
+0x50, 0x84, 0x00, 0x01, 0x54, 0x84, 0x00, 0xff, 0x44, 0x50, 0x00, 0x14, 0x50, 0x94, 0x80, 0x0c,
+0x50, 0x63, 0x00, 0x0c, 0x4c, 0x82, 0xff, 0xc4, 0x2e, 0x47, 0xe3, 0xbe, 0x44, 0x10, 0x00, 0x00,
+0x3e, 0x0f, 0xe0, 0x37, 0x44, 0x20, 0x00, 0xfb, 0x44, 0x60, 0x00, 0x7f, 0x5c, 0xf1, 0x00, 0x0f,
+0x4e, 0xf2, 0x00, 0x08, 0x4e, 0x42, 0x00, 0x40, 0x00, 0x30, 0x7f, 0xff, 0x48, 0x00, 0x00, 0x0c,
+0x50, 0x31, 0x00, 0x02, 0x55, 0xe1, 0x80, 0xff, 0x00, 0x30, 0x7f, 0xff, 0x5c, 0xff, 0x00, 0x02,
+0x4e, 0xf2, 0x00, 0x20, 0x4e, 0x32, 0x00, 0x0c, 0x20, 0x30, 0x00, 0x01, 0x40, 0xf1, 0x98, 0x07,
+0x4e, 0xf2, 0x00, 0x06, 0x40, 0xf3, 0x8c, 0x07, 0x4e, 0xf3, 0x00, 0x04, 0x58, 0x33, 0x00, 0x00,
+0x00, 0x50, 0x7f, 0xfe, 0x4e, 0x52, 0x00, 0x24, 0x20, 0x50, 0x00, 0x00, 0x40, 0xf0, 0x94, 0x07,
+0x4e, 0xf2, 0x00, 0x1e, 0x40, 0xf2, 0x9c, 0x07, 0x4e, 0xf2, 0x00, 0x1a, 0x48, 0x00, 0x00, 0x1a,
+0x4e, 0x32, 0x00, 0x08, 0x21, 0xe0, 0x00, 0x01, 0x42, 0x6f, 0x18, 0x01, 0x40, 0x63, 0x00, 0x10,
+0x00, 0x30, 0x7f, 0xfe, 0x4e, 0x32, 0x00, 0x08, 0x20, 0x50, 0x00, 0x00, 0x40, 0xf0, 0x94, 0x07,
+0x4e, 0xf3, 0x00, 0x0a, 0x58, 0x50, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06, 0x58, 0x50, 0x80, 0x00,
+0x58, 0x61, 0x80, 0x00, 0x50, 0x21, 0x00, 0x01, 0x54, 0x21, 0x00, 0xff, 0x44, 0x10, 0x00, 0x0f,
+0x50, 0x00, 0x00, 0x0c, 0x4c, 0x20, 0x80, 0x06, 0x58, 0x12, 0x80, 0x00, 0x48, 0xff, 0xff, 0xa8,
+0x3e, 0x57, 0xf7, 0x69, 0x3e, 0x67, 0xf7, 0x6a, 0x54, 0x23, 0x00, 0xff, 0x54, 0x32, 0x80, 0xff,
+0x44, 0x10, 0x00, 0x7f, 0x44, 0x40, 0x00, 0x1e, 0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xd0, 0x06,
+0x46, 0x48, 0x00, 0x22, 0x04, 0x12, 0x00, 0x07, 0x46, 0x30, 0x11, 0x10, 0x40, 0x50, 0x8c, 0x04,
+0x14, 0x52, 0x00, 0x07, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xba, 0x90, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xf7, 0xba, 0x64, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0xff, 0xfd, 0xb4, 0x58, 0x90, 0x00, 0x00,
+0x3e, 0x2f, 0xdf, 0xe4, 0x3e, 0x3f, 0xe0, 0x73, 0x28, 0x11, 0x00, 0x01, 0x3e, 0x0f, 0xdf, 0xec,
+0x10, 0x11, 0x80, 0x01, 0x10, 0x11, 0x80, 0x00, 0x50, 0x31, 0x80, 0x0c, 0x4c, 0x20, 0x7f, 0xf6,
+0x50, 0x01, 0x00, 0x02, 0x3e, 0x2f, 0xe0, 0xd3, 0x28, 0x40, 0x00, 0x01, 0x3e, 0x3f, 0xdf, 0xf5,
+0x10, 0x41, 0x00, 0x01, 0x10, 0x41, 0x00, 0x00, 0x50, 0x21, 0x00, 0x0c, 0x4c, 0x01, 0xff, 0xf6,
+0x3e, 0x6f, 0xe0, 0x34, 0x2f, 0xcf, 0xe2, 0x1a, 0x21, 0xe3, 0x00, 0x1c, 0x20, 0x83, 0x00, 0x0f,
+0x20, 0x13, 0x00, 0x10, 0x20, 0x73, 0x00, 0x1b, 0x44, 0x20, 0x00, 0x1e, 0x40, 0xaf, 0x70, 0x01,
+0x2f, 0xef, 0xe2, 0x1b, 0x40, 0x44, 0x70, 0x01, 0x40, 0x50, 0xf0, 0x01, 0x40, 0x33, 0xf0, 0x01,
+0x42, 0x15, 0x08, 0x24, 0x42, 0x82, 0x08, 0x24, 0x42, 0x71, 0x88, 0x24, 0x50, 0x3f, 0x00, 0x38,
+0x40, 0xa0, 0x8c, 0x16, 0x42, 0x52, 0x88, 0x24, 0x2e, 0x2f, 0xe0, 0x30, 0x2f, 0xe7, 0xe2, 0x19,
+0x58, 0x14, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00, 0x40, 0x84, 0x0f, 0x96, 0x40, 0x4f, 0x28, 0x00,
+0x10, 0x43, 0x00, 0x1c, 0x40, 0x42, 0x8d, 0x56, 0x40, 0xaf, 0x20, 0x00, 0x10, 0xa3, 0x00, 0x0f,
+0x40, 0x83, 0x8c, 0xf6, 0x40, 0x7f, 0x10, 0x00, 0x10, 0x73, 0x00, 0x10, 0x44, 0x70, 0x00, 0x01,
+0x40, 0x5f, 0x20, 0x00, 0x10, 0x53, 0x00, 0x1b, 0x44, 0x80, 0x00, 0xfb, 0x49, 0xff, 0xfd, 0xd6,
+0x44, 0x30, 0x00, 0x00, 0x2e, 0xa7, 0xe3, 0xbe, 0x58, 0x01, 0x80, 0x00, 0x50, 0x23, 0x00, 0x03,
+0x44, 0x60, 0x00, 0x7f, 0x5c, 0xf4, 0x00, 0x0f, 0x4e, 0xf2, 0x00, 0x20, 0x4e, 0xa2, 0x00, 0x42,
+0x20, 0x41, 0x00, 0x01, 0x10, 0x71, 0x7f, 0xff, 0x10, 0x71, 0x7f, 0xfe, 0x40, 0xf2, 0x18, 0x07,
+0x4e, 0xf2, 0x00, 0x06, 0x40, 0xf4, 0x90, 0x07, 0x4e, 0xf3, 0x00, 0x04, 0x58, 0x43, 0x00, 0x00,
+0x20, 0x51, 0x00, 0x00, 0x40, 0xf1, 0x94, 0x07, 0x4e, 0xf2, 0x00, 0x30, 0x40, 0xf2, 0xa4, 0x07,
+0x4e, 0xf2, 0x00, 0x2c, 0x48, 0x00, 0x00, 0x2c, 0x20, 0x11, 0x7f, 0xfd, 0x4e, 0x17, 0x00, 0x08,
+0x10, 0x71, 0x7f, 0xff, 0x10, 0x01, 0x7f, 0xfe, 0x48, 0x00, 0x00, 0x08, 0x4e, 0x12, 0x00, 0x06,
+0x10, 0x01, 0x7f, 0xff, 0x10, 0x71, 0x7f, 0xfe, 0x00, 0x51, 0x7f, 0xff, 0x4e, 0x52, 0x00, 0x08,
+0x20, 0x41, 0x00, 0x01, 0x42, 0x62, 0x18, 0x01, 0x40, 0x63, 0x00, 0x10, 0x00, 0x11, 0x7f, 0xfe,
+0x4e, 0x12, 0x00, 0x08, 0x20, 0x51, 0x00, 0x00, 0x40, 0xf1, 0x94, 0x07, 0x4e, 0xf3, 0x00, 0x0a,
+0x58, 0x51, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06, 0x58, 0x51, 0x80, 0x00, 0x58, 0x62, 0x00, 0x00,
+0x50, 0x84, 0x00, 0x01, 0x54, 0x84, 0x00, 0xff, 0x45, 0xe0, 0x00, 0x0f, 0x50, 0x21, 0x00, 0x0c,
+0x4c, 0x8f, 0x00, 0x06, 0x58, 0x32, 0x80, 0x00, 0x48, 0xff, 0xff, 0xa6, 0x3e, 0x57, 0xf7, 0x69,
+0x3e, 0x67, 0xf7, 0x6a, 0x54, 0x32, 0x80, 0xff, 0x40, 0x4f, 0x04, 0x08, 0x54, 0x23, 0x00, 0xff,
+0x44, 0x10, 0x00, 0x7f, 0x44, 0x00, 0x00, 0x02, 0x49, 0xff, 0xcf, 0x08, 0x3e, 0x2f, 0xcd, 0x38,
+0x44, 0x00, 0x00, 0x01, 0x3e, 0x1f, 0x2e, 0x44, 0x49, 0xf7, 0xb8, 0xf4, 0x44, 0x00, 0x00, 0x01,
+0x44, 0x10, 0x00, 0x00, 0x49, 0xf7, 0xb9, 0x16, 0x46, 0x58, 0x00, 0x22, 0x04, 0x42, 0x80, 0x07,
+0x46, 0x30, 0x11, 0x10, 0x40, 0x22, 0x0c, 0x04, 0x14, 0x22, 0x80, 0x07, 0x58, 0x02, 0x80, 0x00,
+0x04, 0x10, 0x00, 0x06, 0x58, 0x50, 0x00, 0x00, 0x40, 0x40, 0x8c, 0x04, 0x14, 0x40, 0x00, 0x06,
+0x04, 0x32, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01, 0x42, 0x21, 0xcc, 0x08, 0x14, 0x22, 0x80, 0x00,
+0x49, 0xf7, 0xb9, 0x74, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xb9, 0x48, 0x51, 0xff, 0x80, 0x04,
0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x2e, 0x27, 0xfa, 0xbd, 0x4e, 0x22, 0x00, 0x0e, 0x2e, 0x17, 0xfa, 0xbc, 0x4e, 0x12, 0x00, 0x0a,
-0x49, 0xff, 0xff, 0x34, 0x4e, 0x03, 0x00, 0x06, 0x44, 0x30, 0x00, 0x03, 0x3e, 0x37, 0xe4, 0x7c,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3e, 0x07, 0xe5, 0xa4,
-0x4a, 0x00, 0x78, 0x20, 0x2e, 0x07, 0xe5, 0xa4, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
-0x04, 0x80, 0x00, 0x02, 0x58, 0x70, 0x00, 0x00, 0x50, 0x64, 0x00, 0x20, 0x04, 0x03, 0x00, 0x00,
-0x5c, 0xf0, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x08, 0x46, 0x1c, 0x00, 0x00, 0x58, 0x10, 0x80, 0x01,
-0x48, 0x00, 0x00, 0x50, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x3e, 0x0f, 0xfa, 0xac,
-0x49, 0xf7, 0xbf, 0x6e, 0x3c, 0x1d, 0xfe, 0xab, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x06,
-0x44, 0x30, 0x00, 0x00, 0x3e, 0x37, 0xfa, 0xbe, 0x3c, 0x0d, 0xfe, 0xab, 0x44, 0x40, 0x00, 0x02,
-0x4c, 0x02, 0x40, 0x36, 0x04, 0x13, 0x00, 0x01, 0x44, 0x50, 0xff, 0xff, 0x4c, 0x12, 0xc0, 0x04,
-0x14, 0x03, 0x00, 0x01, 0x3c, 0x0d, 0xfe, 0xae, 0x54, 0x20, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x28,
-0x54, 0x30, 0x00, 0x02, 0x4e, 0x32, 0x00, 0x08, 0x46, 0x18, 0x00, 0x23, 0x58, 0x10, 0x80, 0x24,
-0x48, 0x00, 0x00, 0x06, 0x46, 0x18, 0x00, 0x23, 0x58, 0x10, 0x80, 0x28, 0x04, 0x00, 0x80, 0x00,
-0x47, 0xe8, 0x00, 0x23, 0x58, 0x20, 0x00, 0x04, 0x14, 0x20, 0x80, 0x00, 0x04, 0x1f, 0x00, 0x0c,
-0x58, 0x50, 0x80, 0x04, 0x14, 0x5f, 0x00, 0x0c, 0x44, 0x03, 0x0d, 0x40, 0x3c, 0x4d, 0xfe, 0xad,
-0x40, 0xf0, 0x10, 0x06, 0x4e, 0xf2, 0x00, 0x04, 0x3c, 0x0f, 0xfe, 0xad, 0x44, 0x10, 0x00, 0x00,
-0x00, 0x44, 0x00, 0x0b, 0x54, 0x32, 0x00, 0x01, 0x4e, 0x32, 0x00, 0x08, 0x58, 0x03, 0x80, 0x00,
-0x49, 0xff, 0xe1, 0xb6, 0x58, 0x10, 0x00, 0x00, 0x58, 0x00, 0x80, 0x00, 0x3a, 0x6f, 0xa0, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x02, 0x20, 0x00, 0x09,
-0x14, 0x1f, 0x80, 0x01, 0x04, 0x60, 0x00, 0x0c, 0x5c, 0xf1, 0x00, 0x66, 0x4e, 0xf3, 0x00, 0x34,
-0x51, 0xc1, 0x7f, 0x9a, 0x44, 0x70, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x3e, 0x1f, 0xe3, 0x9c,
-0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbf, 0x24, 0x4e, 0x03, 0x00, 0x1c, 0x58, 0x90, 0x00, 0x00,
-0x50, 0x83, 0x00, 0x06, 0x04, 0x1f, 0x80, 0x01, 0x58, 0x04, 0x00, 0x00, 0x44, 0x20, 0x00, 0x06,
-0x50, 0x94, 0x80, 0x01, 0x49, 0xf7, 0xbf, 0x14, 0x4e, 0x03, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x10,
-0x50, 0x84, 0x00, 0x06, 0x4c, 0x92, 0xff, 0xf0, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0e,
-0x50, 0x73, 0x80, 0x01, 0x40, 0xfe, 0x1c, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x50, 0x63, 0x00, 0x01,
-0x48, 0xff, 0xff, 0xd4, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0x0f,
-0x49, 0xff, 0xc2, 0x80, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x51, 0xff, 0xff, 0xf8, 0x58, 0x60, 0x80, 0x00,
-0x44, 0x10, 0x00, 0x10, 0x4c, 0x00, 0x80, 0x06, 0x44, 0x01, 0x00, 0x03, 0x48, 0x00, 0x00, 0x60,
-0x54, 0x73, 0x00, 0xff, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xc2, 0x0c, 0x58, 0x03, 0x80, 0x00,
-0x49, 0xff, 0xc2, 0x60, 0x3e, 0x1e, 0xbb, 0x2c, 0x4e, 0x62, 0x00, 0x38, 0x44, 0x00, 0x00, 0x01,
-0x4b, 0xe0, 0x04, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xc2, 0x82, 0x44, 0x00, 0x00, 0x00,
-0x49, 0xff, 0xc2, 0x12, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xc2, 0x2c, 0x50, 0x0f, 0x80, 0x04,
-0x49, 0xff, 0xb8, 0x16, 0x04, 0x5f, 0x80, 0x01, 0x46, 0x1f, 0x0f, 0xff, 0x58, 0x10, 0x8f, 0xc7,
-0x46, 0x40, 0x57, 0xff, 0x40, 0x32, 0x84, 0x02, 0x58, 0x42, 0x0f, 0xc7, 0x40, 0x21, 0x90, 0x04,
-0x58, 0x01, 0x00, 0x00, 0x14, 0x2f, 0x80, 0x01, 0x49, 0xff, 0xb7, 0xf2, 0x3e, 0x0f, 0xf9, 0xe0,
-0x44, 0x10, 0x27, 0x10, 0x49, 0xff, 0xfc, 0xb6, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xfa, 0xbc,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xb9, 0x12, 0x44, 0x10, 0x00, 0x77, 0x44, 0x20, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xe7, 0x36, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3c, 0x0d, 0xf8, 0xf2, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xcd, 0x40,
+0x44, 0x20, 0x00, 0xda, 0x49, 0xff, 0xb3, 0x62, 0x48, 0x00, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00,
+0x14, 0x20, 0x00, 0x04, 0x14, 0x30, 0x00, 0x01, 0x14, 0x10, 0x00, 0x05, 0x14, 0x30, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xcd, 0x40,
+0x44, 0x20, 0x01, 0x0a, 0x49, 0xff, 0xb3, 0x42, 0x48, 0x00, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00,
+0x4e, 0x12, 0x00, 0x1e, 0x04, 0x50, 0x00, 0x01, 0x44, 0x40, 0x00, 0x00, 0x14, 0x50, 0x80, 0x01,
+0x14, 0x12, 0x80, 0x00, 0x14, 0x40, 0x00, 0x00, 0x14, 0x40, 0x00, 0x01, 0x3e, 0x0f, 0xf7, 0x6c,
+0x04, 0x30, 0x00, 0x02, 0x04, 0x10, 0x00, 0x00, 0x50, 0x21, 0xff, 0xff, 0x14, 0x20, 0x00, 0x02,
+0x4c, 0x10, 0x40, 0x06, 0x04, 0x00, 0x80, 0x03, 0x49, 0xf7, 0xbc, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x3c, 0x1d, 0xfd, 0xde, 0x58, 0x70, 0x00, 0x00, 0x4e, 0x12, 0x00, 0x14, 0x58, 0x00, 0x80, 0x00,
+0x49, 0xf7, 0xbb, 0xec, 0x44, 0x00, 0x03, 0xe8, 0x42, 0x33, 0x80, 0x24, 0x44, 0x20, 0x7f, 0xff,
+0x40, 0x11, 0x88, 0x00, 0x3c, 0x0d, 0xfd, 0xde, 0x40, 0x10, 0xbc, 0x09, 0x49, 0xf7, 0xbc, 0xd0,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x49, 0xf7, 0xbc, 0x2a, 0x46, 0x17, 0xff, 0xff, 0x58, 0x10, 0x8f, 0xff,
+0x58, 0x80, 0x00, 0x00, 0x40, 0xa0, 0x04, 0x00, 0x46, 0x00, 0x01, 0xe0, 0x3e, 0x2f, 0xf7, 0x6c,
+0x14, 0xa1, 0x00, 0x04, 0x58, 0x71, 0x00, 0x00, 0x04, 0x61, 0x00, 0x00, 0x41, 0xc4, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x5c, 0x4e, 0x63, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xcd, 0x40,
+0x44, 0x20, 0x01, 0x7d, 0x49, 0xff, 0xb2, 0xd2, 0x48, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x02,
+0x40, 0x34, 0x00, 0x01, 0x4e, 0x35, 0x00, 0x3c, 0x04, 0x43, 0x00, 0x00, 0x4e, 0x43, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x01, 0x81, 0x49, 0xff, 0xb2, 0xbe,
+0x48, 0x00, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xff, 0x6a, 0x02, 0x03, 0x00, 0x06,
+0x4e, 0x02, 0x00, 0x1a, 0x50, 0x00, 0x7f, 0xff, 0x12, 0x03, 0x00, 0x06, 0x15, 0xc3, 0x00, 0x02,
+0x05, 0xe3, 0x80, 0x01, 0x14, 0x63, 0x80, 0x01, 0x14, 0x73, 0x00, 0x00, 0x15, 0xe3, 0x00, 0x01,
+0x14, 0x6f, 0x00, 0x00, 0x04, 0x63, 0x80, 0x02, 0x50, 0x53, 0x00, 0x01, 0x14, 0x53, 0x80, 0x02,
+0x48, 0x00, 0x00, 0x0a, 0x04, 0x13, 0x00, 0x05, 0x4e, 0x12, 0x00, 0x06, 0x04, 0x03, 0x00, 0x04,
+0x4b, 0xe0, 0x04, 0x01, 0x14, 0xa3, 0x80, 0x04, 0x48, 0x00, 0x00, 0x0e, 0x04, 0x23, 0x80, 0x04,
+0x40, 0x90, 0x08, 0x01, 0x4e, 0x95, 0x00, 0x04, 0x48, 0x00, 0x00, 0x04, 0x14, 0x03, 0x80, 0x04,
+0x58, 0x93, 0x00, 0x00, 0x04, 0x64, 0x80, 0x00, 0x3e, 0x9f, 0xf7, 0x6c, 0x4c, 0x64, 0xff, 0xa4,
+0x04, 0x53, 0x00, 0x00, 0x4c, 0x53, 0x00, 0x16, 0x04, 0x03, 0x00, 0x04, 0x40, 0x34, 0x00, 0x01,
+0x4e, 0x35, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x01, 0xa0,
+0x49, 0xff, 0xb2, 0x6c, 0x48, 0x00, 0x00, 0x00, 0x40, 0x00, 0x20, 0x01, 0x49, 0xff, 0xff, 0x4e,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x01, 0x2d, 0x49, 0xff, 0xb2, 0x50, 0x48, 0x00, 0x00, 0x00,
+0x44, 0x00, 0xea, 0x60, 0x40, 0xf0, 0x04, 0x06, 0x4e, 0xf2, 0x00, 0x28, 0x46, 0x2e, 0xa5, 0xf1,
+0x58, 0x21, 0x05, 0xa0, 0x40, 0xf1, 0x04, 0x06, 0x4e, 0xf2, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x01, 0x35, 0x49, 0xff, 0xb2, 0x38, 0x48, 0x00, 0x00, 0x00,
+0x40, 0x40, 0x80, 0x77, 0x44, 0x3f, 0x15, 0xa0, 0x40, 0x22, 0x00, 0x13, 0x42, 0x11, 0x0c, 0x73,
+0x12, 0x23, 0x00, 0x06, 0x4e, 0x13, 0x00, 0x10, 0x50, 0x11, 0x7f, 0xff, 0x12, 0x13, 0x00, 0x06,
+0x58, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x44, 0x00, 0x00, 0x00, 0x12, 0x03, 0x00, 0x06,
+0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0xff, 0xfe, 0x40, 0xf2, 0x84, 0x06, 0x4e, 0xf2, 0x00, 0x0c,
+0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x01, 0x48, 0x49, 0xff, 0xb2, 0x0e,
+0x48, 0x00, 0x00, 0x00, 0x40, 0x30, 0xbc, 0x08, 0x50, 0x71, 0x83, 0xe7, 0x44, 0x90, 0x03, 0xe8,
+0x40, 0x83, 0xa4, 0x57, 0x45, 0xe0, 0x00, 0x01, 0x3e, 0x7f, 0xf7, 0x6c, 0x40, 0x94, 0x20, 0x1b,
+0x40, 0x9f, 0x20, 0x1a, 0x49, 0xf7, 0xbb, 0x32, 0x04, 0x23, 0x80, 0x00, 0x40, 0x80, 0x24, 0x00,
+0x4c, 0x23, 0x80, 0x08, 0x04, 0x13, 0x80, 0x04, 0x40, 0x44, 0x04, 0x01, 0x4e, 0x44, 0x00, 0x08,
+0x3c, 0x8f, 0xfd, 0xdf, 0x58, 0x04, 0x80, 0x00, 0x49, 0xff, 0xfe, 0xd0, 0x04, 0x03, 0x00, 0x00,
+0x14, 0x83, 0x00, 0x02, 0x4e, 0x03, 0x00, 0x12, 0x3c, 0x3d, 0xfd, 0xdc, 0x14, 0x63, 0x80, 0x01,
+0x14, 0x73, 0x00, 0x00, 0x14, 0x33, 0x00, 0x01, 0x14, 0x61, 0x80, 0x00, 0x05, 0xe3, 0x80, 0x02,
+0x50, 0x2f, 0x00, 0x01, 0x14, 0x23, 0x80, 0x02, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x10, 0x01, 0x15,
+0x2e, 0x07, 0xe3, 0x43, 0x4e, 0x02, 0x00, 0x26, 0x3e, 0x6f, 0xf7, 0x6c, 0x04, 0x03, 0x00, 0x03,
+0x44, 0x70, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00, 0x3e, 0x27, 0xe3, 0x43, 0x14, 0x63, 0x00, 0x00,
+0x14, 0x63, 0x00, 0x01, 0x14, 0x73, 0x00, 0x02, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x00, 0xc2, 0x49, 0xff, 0xb1, 0xa8, 0x48, 0x00, 0x00, 0x00,
+0x49, 0xf7, 0xba, 0x84, 0x04, 0x03, 0x00, 0x03, 0x49, 0xf7, 0xb9, 0xf2, 0x14, 0x73, 0x00, 0x03,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x46, 0x10, 0x01, 0x15, 0x3e, 0x6f, 0xf7, 0x6c, 0x44, 0x20, 0x00, 0x00, 0x2e, 0x07, 0xe3, 0x43,
+0x14, 0x23, 0x00, 0x02, 0x44, 0x20, 0x00, 0x01, 0x14, 0x63, 0x00, 0x00, 0x14, 0x63, 0x00, 0x01,
+0x4c, 0x01, 0x00, 0x1a, 0x04, 0x03, 0x00, 0x03, 0x3e, 0x27, 0xe3, 0x43, 0x4e, 0x03, 0x00, 0x12,
+0x49, 0xf7, 0xba, 0x12, 0x14, 0x03, 0x00, 0x03, 0x4e, 0x03, 0x00, 0x0e, 0x3e, 0x0f, 0xc7, 0x40,
+0x3e, 0x1f, 0xcd, 0x40, 0x44, 0x20, 0x00, 0xa2, 0x49, 0xff, 0xb1, 0x70, 0x48, 0x00, 0x00, 0x00,
+0x49, 0xf7, 0xba, 0x4c, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0xff, 0x49, 0xff, 0xed, 0xf4, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x58, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0d, 0x02, 0x11, 0x00, 0x1d, 0x00, 0x30, 0x00, 0x01,
+0x42, 0x10, 0xb0, 0x0b, 0x00, 0x20, 0x00, 0x02, 0x4c, 0x30, 0x80, 0x14, 0x10, 0x10, 0x00, 0x01,
+0x3e, 0x3f, 0xf4, 0x10, 0x38, 0x41, 0x88, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x42, 0x80, 0x0a,
+0x4c, 0x12, 0xc0, 0x04, 0x38, 0x11, 0x88, 0x08, 0x00, 0x10, 0x00, 0x01, 0x49, 0xff, 0xd7, 0xca,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x04, 0x50, 0x00, 0x06, 0x04, 0x30, 0x00, 0x0d, 0x00, 0x42, 0x80, 0x07,
+0x40, 0x22, 0x08, 0x09, 0x10, 0x21, 0x80, 0x00, 0x05, 0xe0, 0x00, 0x06, 0x04, 0x40, 0x00, 0x0d,
+0x00, 0x5f, 0x00, 0x08, 0x44, 0x20, 0x00, 0x01, 0x10, 0x52, 0x00, 0x02, 0x2e, 0x17, 0xdf, 0xac,
+0x4c, 0x11, 0x40, 0x04, 0x49, 0xff, 0xff, 0xba, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x44, 0x00, 0x00, 0x30,
+0x49, 0xf7, 0xc5, 0x64, 0x58, 0x90, 0x00, 0x00, 0x49, 0xf7, 0xc5, 0x32, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x30, 0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xbf, 0xa0, 0x44, 0x20, 0x00, 0x30,
+0x12, 0x23, 0x00, 0x00, 0x2e, 0x17, 0xf7, 0xb2, 0x50, 0x83, 0x00, 0x20, 0x00, 0x03, 0x00, 0x03,
+0x4e, 0x13, 0x00, 0x0a, 0x44, 0x4f, 0xff, 0x87, 0x40, 0x30, 0x10, 0x02, 0x58, 0x01, 0x80, 0x20,
+0x48, 0x00, 0x00, 0x08, 0x44, 0x7f, 0xff, 0x87, 0x40, 0x50, 0x1c, 0x02, 0x58, 0x02, 0x80, 0x68,
+0x10, 0x03, 0x00, 0x03, 0x00, 0x73, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x44, 0x2f, 0xff, 0xc8,
+0x54, 0xa0, 0x00, 0x7f, 0x10, 0xa3, 0x00, 0x03, 0x54, 0x03, 0x80, 0x03, 0x3e, 0x7f, 0xf7, 0xa8,
+0x00, 0x53, 0x80, 0x01, 0x10, 0x03, 0x00, 0x07, 0x10, 0x53, 0x00, 0x04, 0x10, 0x23, 0x00, 0x05,
+0x02, 0x43, 0x00, 0x06, 0x01, 0xc3, 0x80, 0x07, 0x00, 0x13, 0x00, 0x15, 0x02, 0x33, 0x00, 0x0d,
+0x00, 0xa3, 0x00, 0x09, 0x00, 0x53, 0x00, 0x0b, 0x00, 0x23, 0x00, 0x19, 0x41, 0xce, 0x08, 0x08,
+0x45, 0xef, 0xc0, 0x03, 0x40, 0x00, 0x70, 0x04, 0x40, 0x31, 0xf8, 0x02, 0x45, 0xef, 0xff, 0x80,
+0x54, 0x42, 0x00, 0x3f, 0x54, 0x10, 0x80, 0xdd, 0x40, 0x52, 0xf8, 0x04, 0x58, 0x42, 0x78, 0x00,
+0x58, 0x31, 0x80, 0x0c, 0x40, 0x21, 0x0c, 0x09, 0x40, 0x21, 0x0c, 0x08, 0x58, 0x10, 0x80, 0x22,
+0x58, 0xa5, 0x00, 0x10, 0x45, 0xcf, 0xff, 0xff, 0x12, 0x43, 0x00, 0x06, 0x10, 0x53, 0x00, 0x0b,
+0x12, 0x33, 0x00, 0x0d, 0x10, 0x23, 0x00, 0x19, 0x10, 0x13, 0x00, 0x15, 0x11, 0xc3, 0x00, 0x14,
+0x10, 0x03, 0x00, 0x07, 0x10, 0xa3, 0x00, 0x09, 0x44, 0x60, 0x10, 0xa4, 0x12, 0x64, 0x00, 0x00,
+0x44, 0x2f, 0xc0, 0x00, 0x02, 0x03, 0x80, 0x04, 0x41, 0xe0, 0x08, 0x04, 0x13, 0xe4, 0x00, 0x01,
+0x3e, 0x1f, 0xf7, 0xa0, 0x44, 0x20, 0x00, 0x06, 0x50, 0x04, 0x00, 0x04, 0x49, 0xf7, 0xbf, 0x0a,
+0x3e, 0x1f, 0xf7, 0x98, 0x50, 0x04, 0x00, 0x0a, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbf, 0x02,
+0x00, 0x13, 0x80, 0x0a, 0x4e, 0x13, 0x00, 0x0c, 0x58, 0x24, 0x80, 0x00, 0x44, 0x10, 0x00, 0x04,
+0x44, 0x30, 0x00, 0x01, 0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x0a, 0x58, 0x24, 0x80, 0x00,
+0x44, 0x00, 0x00, 0x02, 0x44, 0x10, 0x00, 0x0d, 0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xc8, 0xba,
+0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x27, 0xf8, 0x5d, 0x4e, 0x22, 0x00, 0x0e,
+0x2e, 0x17, 0xf8, 0x5c, 0x4e, 0x12, 0x00, 0x0a, 0x49, 0xff, 0xff, 0x36, 0x4e, 0x03, 0x00, 0x06,
+0x44, 0x30, 0x00, 0x03, 0x3e, 0x37, 0xe2, 0x1c, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3e, 0x07, 0xe3, 0x44, 0x4a, 0x00, 0x78, 0x20, 0x2e, 0x07, 0xe3, 0x44,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x80, 0x00, 0x02, 0x58, 0x70, 0x00, 0x00,
+0x50, 0x64, 0x00, 0x20, 0x04, 0x03, 0x00, 0x00, 0x5c, 0xf0, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x08,
+0x46, 0x1c, 0x00, 0x00, 0x58, 0x10, 0x80, 0x01, 0x48, 0x00, 0x00, 0x50, 0x58, 0x13, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x10, 0x3e, 0x0f, 0xf8, 0x4c, 0x49, 0xf7, 0xbf, 0x2a, 0x3c, 0x1d, 0xfe, 0x13,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x06, 0x44, 0x30, 0x00, 0x00, 0x3e, 0x37, 0xf8, 0x5e,
+0x3c, 0x0d, 0xfe, 0x13, 0x44, 0x40, 0x00, 0x02, 0x4c, 0x02, 0x40, 0x36, 0x04, 0x13, 0x00, 0x01,
+0x44, 0x50, 0xff, 0xff, 0x4c, 0x12, 0xc0, 0x04, 0x14, 0x03, 0x00, 0x01, 0x3c, 0x0d, 0xfe, 0x16,
+0x54, 0x20, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x28, 0x54, 0x30, 0x00, 0x02, 0x4e, 0x32, 0x00, 0x08,
+0x46, 0x18, 0x00, 0x23, 0x58, 0x10, 0x80, 0x24, 0x48, 0x00, 0x00, 0x06, 0x46, 0x18, 0x00, 0x23,
+0x58, 0x10, 0x80, 0x28, 0x04, 0x00, 0x80, 0x00, 0x47, 0xe8, 0x00, 0x23, 0x58, 0x20, 0x00, 0x04,
+0x14, 0x20, 0x80, 0x00, 0x04, 0x1f, 0x00, 0x0c, 0x58, 0x50, 0x80, 0x04, 0x14, 0x5f, 0x00, 0x0c,
+0x44, 0x03, 0x0d, 0x40, 0x3c, 0x4d, 0xfe, 0x15, 0x40, 0xf0, 0x10, 0x06, 0x4e, 0xf2, 0x00, 0x04,
+0x3c, 0x0f, 0xfe, 0x15, 0x44, 0x10, 0x00, 0x00, 0x00, 0x44, 0x00, 0x0b, 0x54, 0x32, 0x00, 0x01,
+0x4e, 0x32, 0x00, 0x08, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xe1, 0xb8, 0x58, 0x10, 0x00, 0x00,
+0x58, 0x00, 0x80, 0x00, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x02, 0x20, 0x00, 0x09, 0x14, 0x1f, 0x80, 0x01, 0x04, 0x60, 0x00, 0x0c,
+0x5c, 0xf1, 0x00, 0x66, 0x4e, 0xf3, 0x00, 0x34, 0x51, 0xc1, 0x7f, 0x9a, 0x44, 0x70, 0x00, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x3e, 0x1f, 0xe1, 0x40, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbe, 0xe0,
+0x4e, 0x03, 0x00, 0x1c, 0x58, 0x90, 0x00, 0x00, 0x50, 0x83, 0x00, 0x06, 0x04, 0x1f, 0x80, 0x01,
+0x58, 0x04, 0x00, 0x00, 0x44, 0x20, 0x00, 0x06, 0x50, 0x94, 0x80, 0x01, 0x49, 0xf7, 0xbe, 0xd0,
+0x4e, 0x03, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x10, 0x50, 0x84, 0x00, 0x06, 0x4c, 0x92, 0xff, 0xf0,
+0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0e, 0x50, 0x73, 0x80, 0x01, 0x40, 0xfe, 0x1c, 0x06,
+0x4e, 0xf3, 0x00, 0x06, 0x50, 0x63, 0x00, 0x01, 0x48, 0xff, 0xff, 0xd4, 0x44, 0x00, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x54, 0x00, 0x00, 0x0f, 0x49, 0xff, 0xc2, 0x3c, 0x44, 0x00, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
+0x51, 0xff, 0xff, 0xf8, 0x58, 0x60, 0x80, 0x00, 0x44, 0x10, 0x00, 0x10, 0x54, 0x21, 0x00, 0xff,
+0x4c, 0x00, 0x80, 0x06, 0x44, 0x01, 0x00, 0x03, 0x48, 0x00, 0x00, 0x6a, 0x40, 0x01, 0x00, 0x10,
+0x4e, 0x04, 0x00, 0x08, 0x54, 0x21, 0x00, 0x0f, 0x4e, 0x22, 0x00, 0x04, 0x3e, 0x27, 0xe1, 0x24,
+0x54, 0x73, 0x00, 0xff, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xc1, 0xbc, 0x58, 0x03, 0x80, 0x00,
+0x49, 0xff, 0xc2, 0x10, 0x3e, 0x1e, 0xbb, 0x2c, 0x4e, 0x62, 0x00, 0x38, 0x44, 0x00, 0x00, 0x01,
+0x4b, 0xe0, 0x04, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xc2, 0x32, 0x44, 0x00, 0x00, 0x00,
+0x49, 0xff, 0xc1, 0xc2, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xc1, 0xdc, 0x50, 0x0f, 0x80, 0x04,
+0x49, 0xff, 0xb7, 0xc6, 0x04, 0x1f, 0x80, 0x01, 0x46, 0x3f, 0x0f, 0xff, 0x58, 0x31, 0x8f, 0xc7,
+0x46, 0x00, 0x57, 0xff, 0x40, 0x50, 0x8c, 0x02, 0x58, 0x00, 0x0f, 0xc7, 0x40, 0x42, 0x80, 0x04,
+0x58, 0x02, 0x00, 0x00, 0x14, 0x4f, 0x80, 0x01, 0x49, 0xff, 0xb7, 0xa2, 0x3e, 0x0f, 0xf7, 0x80,
+0x44, 0x10, 0x27, 0x10, 0x49, 0xff, 0xfc, 0xac, 0x44, 0x20, 0x00, 0x01, 0x3e, 0x27, 0xf8, 0x5c,
0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1c, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01,
-0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xc2, 0x4c, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xc1, 0xfa,
-0x46, 0x00, 0x02, 0x10, 0x58, 0x00, 0x00, 0x04, 0x49, 0xff, 0xb7, 0xd2, 0x3e, 0x0f, 0xf9, 0xe0,
-0x49, 0xff, 0xfb, 0xa8, 0x3e, 0x67, 0xfa, 0xbc, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x08,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xc1, 0xfc, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xc1, 0xaa,
+0x46, 0x00, 0x02, 0x10, 0x58, 0x00, 0x00, 0x04, 0x49, 0xff, 0xb7, 0x82, 0x3e, 0x0f, 0xf7, 0x80,
+0x49, 0xff, 0xfb, 0x9e, 0x3e, 0x67, 0xf8, 0x5c, 0x58, 0x03, 0x00, 0x00, 0x51, 0xff, 0x80, 0x08,
0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x04, 0x10, 0x00, 0x01, 0x04, 0x00, 0x00, 0x00, 0x49, 0xff, 0xff, 0x86, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x3e, 0x0f, 0xf9, 0xe0, 0x49, 0xff, 0xfb, 0x86, 0x2e, 0x07, 0xfa, 0xbd, 0x44, 0x10, 0x00, 0x00,
-0x40, 0x00, 0x80, 0x06, 0x49, 0x00, 0x12, 0x16, 0x3e, 0x0f, 0xf9, 0xe0, 0x44, 0x10, 0x27, 0x10,
-0x49, 0xff, 0xfc, 0x68, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x44, 0x00, 0x00, 0x0f, 0x49, 0xff, 0xc1, 0x7a,
-0x44, 0x00, 0x00, 0x0f, 0x49, 0xff, 0xc1, 0xce, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xc1, 0xe2,
-0x3e, 0x0f, 0xf9, 0xe0, 0x3e, 0x1f, 0x37, 0x14, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfb, 0x3a,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0xb8, 0x3e, 0x0f, 0xfa, 0x08, 0x49, 0xf7, 0xbd, 0x8e,
-0x44, 0x10, 0x00, 0x00, 0x3e, 0x17, 0xe4, 0x7c, 0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x80,
-0x04, 0x40, 0x00, 0x00, 0x44, 0x5f, 0xf8, 0xff, 0x40, 0x32, 0x14, 0x02, 0x14, 0x30, 0x00, 0x00,
-0x04, 0x20, 0x00, 0x00, 0x58, 0x11, 0x02, 0x00, 0x14, 0x10, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xf8,
-0x01, 0xe0, 0x00, 0x00, 0x3e, 0x6f, 0xfa, 0x08, 0x11, 0xe3, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00,
-0x00, 0x80, 0x00, 0x4c, 0x50, 0x10, 0x00, 0x44, 0x10, 0x83, 0x00, 0x01, 0x00, 0x50, 0x00, 0x50,
-0x10, 0x53, 0x00, 0x03, 0x00, 0x40, 0x00, 0x54, 0x10, 0x43, 0x00, 0x06, 0x00, 0x20, 0x00, 0x58,
-0x50, 0x03, 0x00, 0x0c, 0x10, 0x23, 0x00, 0x07, 0x44, 0x20, 0x00, 0x08, 0x00, 0x33, 0x80, 0x5c,
-0x10, 0x33, 0x00, 0x0a, 0x49, 0xf7, 0xbd, 0x36, 0x50, 0x13, 0x80, 0x04, 0x44, 0x20, 0x00, 0x40,
-0x50, 0x03, 0x00, 0x14, 0x49, 0xf7, 0xbd, 0x2e, 0x49, 0xff, 0xc9, 0x62, 0x46, 0x06, 0x01, 0x60,
-0x46, 0x10, 0x1f, 0xf8, 0x58, 0x10, 0x80, 0x7f, 0x14, 0x10, 0x00, 0x20, 0x50, 0x7f, 0x80, 0x07,
-0x00, 0x03, 0x00, 0x06, 0x58, 0x13, 0x80, 0x00, 0x3e, 0x2f, 0xfa, 0x00, 0x49, 0xff, 0xbd, 0x0c,
-0x00, 0x03, 0x00, 0x07, 0x58, 0x13, 0x80, 0x00, 0x3e, 0x2f, 0xf9, 0xf8, 0x49, 0xff, 0xb6, 0x6e,
-0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x04, 0x60, 0x00, 0x02, 0x44, 0x10, 0x00, 0x03, 0x04, 0x83, 0x00, 0x08,
-0x58, 0x70, 0x00, 0x00, 0x50, 0x03, 0x00, 0x24, 0x4c, 0x80, 0x80, 0x12, 0x44, 0x50, 0x00, 0x05,
-0x4c, 0x82, 0x80, 0x12, 0x4e, 0x82, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e,
-0x04, 0x00, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xa8, 0x48, 0x00, 0x00, 0x08, 0x49, 0xff, 0xff, 0x8e,
-0x48, 0x00, 0x00, 0x04, 0x49, 0xff, 0xff, 0x22, 0x00, 0x33, 0x00, 0x0b, 0x54, 0x11, 0x80, 0x01,
-0x4e, 0x13, 0x00, 0x06, 0x58, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x2c, 0x01, 0xe3, 0x00, 0x07,
-0x50, 0x43, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x00, 0x44, 0x30, 0x00, 0x18, 0x44, 0x2f, 0xff, 0xed,
-0x58, 0x11, 0x80, 0x00, 0x14, 0x52, 0x00, 0x02, 0x14, 0x82, 0x00, 0x00, 0x14, 0x02, 0x00, 0x01,
-0x12, 0x33, 0x00, 0x00, 0x10, 0x23, 0x00, 0x04, 0x10, 0x13, 0x00, 0x08, 0x11, 0xe3, 0x00, 0x05,
-0x44, 0x50, 0x00, 0x01, 0x04, 0x43, 0x80, 0x02, 0x44, 0x0f, 0xe0, 0x00, 0x10, 0x53, 0x80, 0x10,
-0x12, 0x02, 0x00, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xd6, 0x6e, 0x44, 0x00, 0x00, 0x01,
-0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x00, 0x30, 0x80, 0x01, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x32, 0xc0, 0x06, 0x02, 0x20, 0x00, 0x09,
-0x49, 0x00, 0x16, 0xf0, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x94, 0x54, 0x70, 0x80, 0xff,
-0x40, 0x13, 0x80, 0x10, 0x58, 0x90, 0x00, 0x00, 0x55, 0xc1, 0x00, 0xff, 0x4e, 0x14, 0x00, 0x06,
-0x44, 0x00, 0xff, 0xff, 0x48, 0x00, 0x00, 0x4c, 0x50, 0x6f, 0x80, 0x5c, 0x50, 0xaf, 0x80, 0x0c,
-0x50, 0x8f, 0x80, 0x50, 0x58, 0x33, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x58, 0x15, 0x00, 0x00,
-0x58, 0x03, 0x80, 0x00, 0x14, 0x8f, 0x80, 0x01, 0x49, 0xff, 0xbe, 0x8e, 0x58, 0x14, 0x80, 0x00,
-0x44, 0x20, 0x00, 0x10, 0x50, 0x0f, 0x80, 0x30, 0x49, 0xf7, 0xbc, 0x6c, 0x50, 0x14, 0x80, 0x10,
-0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x40, 0x49, 0xf7, 0xbc, 0x64, 0x50, 0x14, 0x80, 0x18,
-0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x48, 0x49, 0xf7, 0xbc, 0x5c, 0x04, 0x2f, 0x80, 0x01,
-0x44, 0x50, 0x00, 0x01, 0x58, 0x15, 0x00, 0x00, 0x58, 0x33, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00,
-0x10, 0x55, 0x00, 0x18, 0x10, 0x53, 0x00, 0x01, 0x10, 0x53, 0x00, 0x03, 0x11, 0xc3, 0x00, 0x07,
-0x49, 0xff, 0xb6, 0x64, 0x00, 0x13, 0x00, 0x09, 0x58, 0x03, 0x80, 0x00, 0x58, 0x2e, 0x00, 0x00,
-0x50, 0x3f, 0x80, 0x30, 0x49, 0xff, 0xbd, 0xbc, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x6c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x3e, 0x7f, 0xfa, 0x08, 0x04, 0x63, 0x80, 0x29, 0x4e, 0x62, 0x00, 0x44, 0x44, 0x00, 0x00, 0x01,
-0x4c, 0x60, 0x40, 0x0a, 0x44, 0x00, 0x00, 0x03, 0x49, 0xf7, 0xdd, 0x6a, 0x10, 0x63, 0x80, 0xb6,
-0x48, 0x00, 0x00, 0x38, 0x44, 0x10, 0x00, 0x02, 0x4c, 0x60, 0xc0, 0x34, 0x04, 0x33, 0x80, 0x2c,
-0x54, 0x21, 0x80, 0x04, 0x4e, 0x22, 0x00, 0x08, 0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x24,
-0x48, 0x00, 0x00, 0x06, 0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x28, 0x04, 0x50, 0x00, 0x00,
-0x58, 0x42, 0x80, 0x04, 0x14, 0x40, 0x00, 0x00, 0x3c, 0x0d, 0xfe, 0xad, 0x4e, 0x02, 0x00, 0x1a,
-0x49, 0xff, 0xc0, 0x8a, 0x3c, 0x1d, 0xfe, 0xae, 0x54, 0x00, 0x80, 0x04, 0x4e, 0x02, 0x00, 0x08,
-0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x28, 0x48, 0x00, 0x00, 0x06, 0x46, 0x08, 0x00, 0x23,
-0x58, 0x00, 0x00, 0x24, 0x04, 0x20, 0x00, 0x00, 0x59, 0xe1, 0x00, 0x04, 0x15, 0xe0, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x51, 0xff, 0xff, 0xf8, 0x04, 0x10, 0x00, 0x0b, 0x04, 0x30, 0x00, 0x06, 0x0a, 0x80, 0x80, 0x05,
-0x58, 0x60, 0x00, 0x00, 0x3e, 0x0f, 0xfa, 0x00, 0x44, 0x20, 0x00, 0x06, 0x00, 0xa1, 0x80, 0x04,
-0x04, 0x91, 0x80, 0x03, 0x49, 0xf7, 0xbc, 0x7c, 0x4e, 0x03, 0x00, 0xa0, 0x04, 0x03, 0x00, 0x0c,
-0x3e, 0x1f, 0xe3, 0x84, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbc, 0x72, 0x4e, 0x02, 0x00, 0x0c,
-0x04, 0x03, 0x00, 0x0c, 0x3e, 0x1f, 0xe3, 0x8c, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbc, 0x68,
-0x4e, 0x03, 0x00, 0x8c, 0x04, 0x53, 0x00, 0x0c, 0x02, 0x43, 0x00, 0x09, 0x50, 0x22, 0x80, 0x06,
-0x50, 0x02, 0x7f, 0xfa, 0x12, 0x03, 0x00, 0x09, 0x14, 0x23, 0x00, 0x0c, 0x2e, 0x17, 0xfa, 0xbd,
-0x4e, 0x12, 0x00, 0x1a, 0x2e, 0x77, 0xfa, 0xbc, 0x4e, 0x72, 0x00, 0x16, 0x55, 0xe5, 0x00, 0x02,
-0x4f, 0xe2, 0x00, 0x12, 0x54, 0x34, 0x24, 0x00, 0x44, 0x80, 0x20, 0x00, 0x4c, 0x34, 0x40, 0x08,
-0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfb, 0xb2, 0x48, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x02,
-0x3e, 0x17, 0xe4, 0x7c, 0x04, 0x83, 0x00, 0x0c, 0x02, 0x53, 0x00, 0x09, 0x50, 0x74, 0x00, 0x02,
-0x50, 0x42, 0xff, 0xfe, 0x54, 0x24, 0xa0, 0x00, 0x12, 0x43, 0x00, 0x09, 0x14, 0x73, 0x00, 0x0c,
-0x4e, 0x22, 0x00, 0x08, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20,
-0x54, 0xa5, 0x00, 0x04, 0x4e, 0xa2, 0x00, 0x20, 0x00, 0x03, 0x00, 0x40, 0x50, 0x1f, 0x80, 0x07,
-0x58, 0x2f, 0x80, 0x00, 0x49, 0xff, 0xb4, 0xca, 0x58, 0x9f, 0x80, 0x00, 0x58, 0x80, 0x00, 0x00,
-0x4e, 0x03, 0x00, 0x3c, 0x58, 0x03, 0x00, 0x00, 0x58, 0x1f, 0x80, 0x00, 0x49, 0xff, 0xfc, 0xd4,
-0x4e, 0x02, 0x00, 0x34, 0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00, 0x49, 0xff, 0xff, 0x26,
-0x48, 0x00, 0x00, 0x2c, 0x55, 0xe4, 0x98, 0x00, 0x40, 0x0f, 0x2c, 0x09, 0x4e, 0x02, 0x00, 0x0e,
-0x44, 0x30, 0x00, 0x01, 0x4c, 0x01, 0xc0, 0x22, 0x58, 0x03, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00,
-0x49, 0xff, 0xfe, 0x9c, 0x48, 0x00, 0x00, 0x1a, 0x40, 0x94, 0x8c, 0x08, 0x40, 0x94, 0xd8, 0x09,
-0x4e, 0x92, 0x00, 0x14, 0x58, 0x04, 0x00, 0x00, 0x3e, 0x1f, 0xe3, 0x94, 0x44, 0x20, 0x00, 0x02,
-0x49, 0xf7, 0xbb, 0xe6, 0x4e, 0x02, 0x00, 0x0a, 0x58, 0x04, 0x00, 0x00, 0x3e, 0x1f, 0xe3, 0x98,
-0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xbb, 0xdc, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa8, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x50, 0x31, 0x00, 0x10,
-0x40, 0x10, 0x88, 0x09, 0x58, 0x41, 0x80, 0x00, 0x44, 0x50, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18,
-0x00, 0x60, 0x00, 0x00, 0x50, 0x52, 0x80, 0x01, 0x10, 0x62, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x01,
-0x10, 0xa2, 0x00, 0x3c, 0x01, 0xc0, 0x00, 0x02, 0x11, 0xc2, 0x00, 0x78, 0x00, 0x60, 0x00, 0x03,
-0x50, 0x00, 0x00, 0x04, 0x10, 0x62, 0x00, 0xb4, 0x50, 0x42, 0x00, 0x01, 0x40, 0xf2, 0x84, 0x06,
-0x4e, 0xf3, 0xff, 0xe8, 0x50, 0x50, 0x80, 0x07, 0x40, 0x02, 0x88, 0x08, 0x50, 0x40, 0x80, 0x10,
-0x14, 0x0f, 0x80, 0x03, 0x40, 0x21, 0x10, 0x00, 0x58, 0x90, 0x80, 0x00, 0x3e, 0x0f, 0xcf, 0xe8,
-0x3f, 0xef, 0xcf, 0xbc, 0x48, 0x00, 0x00, 0x60, 0x40, 0xa4, 0x85, 0x17, 0x00, 0x71, 0x7f, 0xff,
-0x00, 0x61, 0x00, 0x3b, 0x00, 0x51, 0x00, 0x77, 0x00, 0x41, 0x00, 0xb3, 0x4e, 0x83, 0x00, 0x26,
-0x38, 0x8f, 0x2a, 0x02, 0x38, 0xa0, 0x14, 0x00, 0x38, 0x50, 0x10, 0x00, 0x10, 0xaf, 0x80, 0x00,
-0x38, 0x40, 0x1c, 0x00, 0x01, 0xcf, 0x80, 0x00, 0x38, 0x70, 0x18, 0x00, 0x40, 0xa4, 0x20, 0x09,
-0x40, 0x64, 0x40, 0x09, 0x40, 0x63, 0x70, 0x03, 0x40, 0x55, 0x14, 0x03, 0x41, 0xc4, 0x10, 0x03,
-0x40, 0x84, 0x60, 0x09, 0x40, 0x74, 0x1c, 0x03, 0x54, 0x63, 0x00, 0xff, 0x54, 0x52, 0x80, 0xff,
-0x54, 0x4e, 0x00, 0xff, 0x48, 0x00, 0x00, 0x12, 0x5c, 0xf0, 0x80, 0x07, 0x4e, 0xf3, 0x00, 0x0e,
-0x44, 0xa0, 0x00, 0x04, 0x4c, 0x85, 0x40, 0x0a, 0x38, 0x60, 0x18, 0x00, 0x38, 0x50, 0x14, 0x00,
-0x38, 0x40, 0x10, 0x00, 0x38, 0x70, 0x1c, 0x00, 0x00, 0x81, 0x80, 0x00, 0x50, 0x94, 0x80, 0x01,
-0x40, 0x73, 0xa0, 0x03, 0x10, 0x71, 0x00, 0x00, 0x00, 0x71, 0x80, 0x3c, 0x40, 0x63, 0x1c, 0x03,
-0x10, 0x61, 0x00, 0x3c, 0x00, 0x61, 0x80, 0x78, 0x41, 0xc2, 0x98, 0x03, 0x11, 0xc1, 0x00, 0x78,
-0x00, 0x51, 0x80, 0xb4, 0x50, 0x31, 0x80, 0x01, 0x40, 0x42, 0x14, 0x03, 0x10, 0x41, 0x00, 0xb4,
-0x50, 0x21, 0x00, 0x01, 0x05, 0xcf, 0x80, 0x03, 0x40, 0xf4, 0xf0, 0x06, 0x4e, 0xf3, 0xff, 0x9e,
-0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xfe, 0xbc, 0x14, 0x5f, 0x80, 0x0c, 0x58, 0x61, 0x80, 0x00, 0x04, 0x72, 0x80, 0x00,
-0x14, 0x4f, 0x80, 0x0e, 0x5c, 0xf3, 0x80, 0x10, 0x4e, 0xf3, 0x02, 0x58, 0x44, 0x30, 0x00, 0x10,
-0x4c, 0x61, 0x80, 0x0a, 0x44, 0x40, 0x00, 0x18, 0x4c, 0x62, 0x00, 0x06, 0x40, 0x51, 0x84, 0x08,
-0x4c, 0x62, 0xc2, 0x4c, 0x58, 0x71, 0x80, 0x00, 0x4c, 0x13, 0xc2, 0x48, 0x44, 0x10, 0x00, 0x00,
-0x50, 0x9f, 0x80, 0x40, 0x48, 0x00, 0x00, 0x10, 0x08, 0x82, 0x00, 0x04, 0x50, 0x31, 0x80, 0x01,
-0x44, 0x70, 0x00, 0x04, 0x18, 0x82, 0x80, 0x01, 0x4c, 0x33, 0xff, 0xf8, 0x50, 0x10, 0x80, 0x01,
-0x4c, 0x11, 0x80, 0x0c, 0x40, 0xa0, 0x88, 0x08, 0x40, 0x54, 0xa8, 0x00, 0x40, 0x40, 0x04, 0x00,
-0x44, 0x30, 0x00, 0x00, 0x48, 0xff, 0xff, 0xea, 0x58, 0x01, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x50, 0x2f, 0x80, 0x40, 0x49, 0xff, 0xff, 0x18, 0x50, 0x4f, 0x80, 0x41, 0x40, 0x63, 0x08, 0x09,
-0x14, 0x4f, 0x80, 0x04, 0x50, 0x7f, 0x80, 0x40, 0x50, 0x1f, 0x80, 0x42, 0x50, 0xaf, 0x80, 0x43,
-0x50, 0x53, 0x00, 0x0a, 0x50, 0x9f, 0x80, 0x50, 0x40, 0x02, 0x88, 0x08, 0x14, 0x1f, 0x80, 0x06,
-0x14, 0xaf, 0x80, 0x05, 0x14, 0x7f, 0x80, 0x0d, 0x04, 0x8f, 0x80, 0x04, 0x14, 0x9f, 0x80, 0x01,
-0x40, 0x03, 0x80, 0x00, 0x58, 0x90, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x43, 0x80, 0x00,
-0x40, 0x31, 0x10, 0x03, 0x18, 0x33, 0x80, 0x04, 0x00, 0x10, 0x00, 0x01, 0x01, 0xc4, 0x00, 0x00,
-0x41, 0xe0, 0xf0, 0x03, 0x19, 0xe4, 0x00, 0x04, 0x05, 0xef, 0x80, 0x01, 0x00, 0x50, 0x00, 0x02,
-0x00, 0x44, 0x80, 0x00, 0x40, 0x32, 0x14, 0x03, 0x18, 0x34, 0x80, 0x04, 0x00, 0x10, 0x00, 0x03,
-0x00, 0x25, 0x00, 0x00, 0x50, 0x00, 0x00, 0x3c, 0x41, 0xc0, 0x88, 0x03, 0x19, 0xc5, 0x00, 0x04,
-0x4c, 0x7f, 0x7f, 0xdc, 0x50, 0x03, 0x00, 0x05, 0x50, 0x7f, 0x80, 0x40, 0x40, 0x90, 0x08, 0x08,
-0x50, 0x63, 0x80, 0x04, 0x14, 0x9f, 0x80, 0x08, 0x14, 0x6f, 0x80, 0x0f, 0x48, 0x00, 0x01, 0x26,
-0x00, 0x3f, 0x80, 0x49, 0x00, 0x2f, 0x80, 0x45, 0x00, 0x4f, 0x80, 0x4b, 0x01, 0xcf, 0x80, 0x47,
-0x00, 0x6f, 0x80, 0x48, 0x00, 0x8f, 0x80, 0x4c, 0x00, 0x9f, 0x80, 0x46, 0x00, 0x7f, 0x80, 0x4a,
-0x01, 0xef, 0x80, 0x4d, 0x00, 0x5f, 0x80, 0x4e, 0x00, 0xaf, 0x80, 0x4f, 0x00, 0x1f, 0x80, 0x44,
-0x10, 0x2f, 0x80, 0x46, 0x10, 0x4f, 0x80, 0x49, 0x10, 0x3f, 0x80, 0x4b, 0x10, 0x9f, 0x80, 0x47,
-0x10, 0x7f, 0x80, 0x48, 0x10, 0x6f, 0x80, 0x4a, 0x11, 0xcf, 0x80, 0x44, 0x11, 0xef, 0x80, 0x4c,
-0x10, 0x5f, 0x80, 0x4d, 0x10, 0xaf, 0x80, 0x4e, 0x10, 0x8f, 0x80, 0x4f, 0x04, 0x2f, 0x80, 0x05,
-0x04, 0x3f, 0x80, 0x06, 0x04, 0x4f, 0x80, 0x04, 0x10, 0x1f, 0x80, 0x45, 0x50, 0x1f, 0x80, 0x40,
-0x00, 0x00, 0x80, 0x00, 0x3e, 0x5f, 0xd0, 0xe8, 0x38, 0x92, 0x80, 0x00, 0x04, 0x0f, 0x80, 0x01,
-0x18, 0x90, 0x80, 0x04, 0x00, 0x72, 0x00, 0x00, 0x38, 0x62, 0x9c, 0x00, 0x18, 0x62, 0x00, 0x04,
-0x01, 0xc1, 0x80, 0x00, 0x39, 0xe2, 0xf0, 0x00, 0x19, 0xe1, 0x80, 0x04, 0x00, 0xa1, 0x00, 0x00,
-0x38, 0x82, 0xa8, 0x00, 0x18, 0x81, 0x00, 0x04, 0x4c, 0x10, 0x7f, 0xe4, 0x04, 0x4f, 0x80, 0x08,
-0x50, 0x5f, 0x80, 0x40, 0x50, 0x32, 0x00, 0x10, 0x40, 0x22, 0x8c, 0x00, 0x04, 0x4f, 0x80, 0x06,
-0x04, 0x3f, 0x80, 0x05, 0x04, 0x6f, 0x80, 0x04, 0x00, 0x71, 0x00, 0x00, 0x01, 0xc2, 0x80, 0x00,
-0x41, 0xe3, 0xf0, 0x03, 0x19, 0xe2, 0x80, 0x04, 0x00, 0x11, 0x00, 0x01, 0x00, 0xa3, 0x00, 0x00,
-0x40, 0x80, 0xa8, 0x03, 0x18, 0x83, 0x00, 0x04, 0x04, 0x8f, 0x80, 0x01, 0x00, 0x01, 0x00, 0x02,
-0x00, 0x92, 0x00, 0x00, 0x40, 0x70, 0x24, 0x03, 0x18, 0x72, 0x00, 0x04, 0x01, 0xe1, 0x00, 0x03,
-0x01, 0xc1, 0x80, 0x00, 0x50, 0x21, 0x00, 0x3c, 0x40, 0xaf, 0x70, 0x03, 0x18, 0xa1, 0x80, 0x04,
-0x4c, 0x54, 0x7f, 0xdc, 0x50, 0x3f, 0x80, 0x44, 0x50, 0x6f, 0x80, 0x48, 0x50, 0x5f, 0x80, 0x4c,
-0x50, 0x2f, 0x80, 0x40, 0x14, 0x3f, 0x80, 0x0b, 0x14, 0x6f, 0x80, 0x0a, 0x14, 0x5f, 0x80, 0x09,
-0x14, 0x2f, 0x80, 0x07, 0x05, 0xcf, 0x80, 0x07, 0x04, 0x4f, 0x80, 0x0b, 0x04, 0x5f, 0x80, 0x0a,
-0x04, 0xaf, 0x80, 0x09, 0x00, 0x3e, 0x00, 0x00, 0x01, 0xc2, 0x00, 0x00, 0x00, 0x42, 0x80, 0x00,
-0x00, 0x55, 0x00, 0x00, 0x3e, 0x8f, 0xd4, 0xe8, 0x3e, 0x1f, 0xd2, 0xe8, 0x3e, 0x9f, 0xd1, 0xe8,
-0x39, 0xe4, 0x0c, 0x00, 0x38, 0x24, 0x94, 0x00, 0x38, 0x60, 0xf0, 0x00, 0x3e, 0x7f, 0xd3, 0xe8,
-0x38, 0xa3, 0x90, 0x00, 0x58, 0x00, 0x80, 0x00, 0x40, 0x13, 0x78, 0x03, 0x10, 0x2f, 0x80, 0x08,
-0x39, 0xe3, 0xf0, 0x00, 0x58, 0x64, 0x80, 0x00, 0x38, 0x70, 0x0c, 0x00, 0x3e, 0x0f, 0xd3, 0xe8,
-0x38, 0x93, 0x0c, 0x00, 0x38, 0x24, 0x70, 0x00, 0x38, 0x83, 0x70, 0x00, 0x38, 0x60, 0x0c, 0x00,
-0x3f, 0xcf, 0xd1, 0xe8, 0x40, 0x30, 0xa8, 0x03, 0x3e, 0xaf, 0xd2, 0xe8, 0x3e, 0x1f, 0xd4, 0xe8,
-0x38, 0x0e, 0x10, 0x00, 0x39, 0xc5, 0x10, 0x00, 0x38, 0xa0, 0x90, 0x00, 0x00, 0x1f, 0x80, 0x08,
-0x40, 0x21, 0x24, 0x03, 0x40, 0x31, 0x84, 0x03, 0x3e, 0x4f, 0xd3, 0xe8, 0x40, 0x14, 0x18, 0x03,
-0x3e, 0x9f, 0xd2, 0xe8, 0x3e, 0x6f, 0xd4, 0xe8, 0x38, 0x83, 0x14, 0x00, 0x38, 0x62, 0x14, 0x00,
-0x38, 0x44, 0x94, 0x00, 0x04, 0x9f, 0x80, 0x07, 0x40, 0x51, 0x70, 0x03, 0x18, 0x34, 0x80, 0x01,
-0x40, 0x22, 0x98, 0x03, 0x04, 0x6f, 0x80, 0x0b, 0x40, 0x7f, 0x1c, 0x03, 0x14, 0x9f, 0x80, 0x07,
-0x40, 0x33, 0x80, 0x03, 0x40, 0x90, 0xa8, 0x03, 0x18, 0x23, 0x00, 0x01, 0x04, 0x7f, 0x80, 0x0a,
-0x40, 0x54, 0x90, 0x03, 0x14, 0x6f, 0x80, 0x0b, 0x18, 0x53, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x09,
-0x40, 0x01, 0xa0, 0x03, 0x18, 0x00, 0x80, 0x01, 0x04, 0x4f, 0x80, 0x07, 0x04, 0x9f, 0x80, 0x0f,
-0x14, 0x7f, 0x80, 0x0a, 0x14, 0x1f, 0x80, 0x09, 0x4c, 0x44, 0xff, 0x7e, 0x04, 0x2f, 0x80, 0x08,
-0x50, 0x31, 0x7f, 0xfc, 0x14, 0x3f, 0x80, 0x08, 0x04, 0x9f, 0x80, 0x08, 0x4e, 0x93, 0xfe, 0xda,
-0x00, 0x1f, 0x80, 0x47, 0x00, 0x6f, 0x80, 0x46, 0x00, 0x7f, 0x80, 0x4a, 0x00, 0x2f, 0x80, 0x49,
-0x00, 0x3f, 0x80, 0x45, 0x00, 0x4f, 0x80, 0x4b, 0x00, 0x9f, 0x80, 0x48, 0x00, 0x5f, 0x80, 0x44,
-0x10, 0x6f, 0x80, 0x47, 0x10, 0x7f, 0x80, 0x48, 0x00, 0x6f, 0x80, 0x4e, 0x00, 0x7f, 0x80, 0x4f,
-0x10, 0x1f, 0x80, 0x44, 0x00, 0x1f, 0x80, 0x4d, 0x00, 0x0f, 0x80, 0x4c, 0x10, 0x3f, 0x80, 0x46,
-0x10, 0x4f, 0x80, 0x49, 0x10, 0x2f, 0x80, 0x4b, 0x10, 0x1f, 0x80, 0x4c, 0x10, 0x9f, 0x80, 0x4a,
-0x10, 0x5f, 0x80, 0x45, 0x10, 0x6f, 0x80, 0x4d, 0x10, 0x7f, 0x80, 0x4e, 0x04, 0x1f, 0x80, 0x0d,
-0x04, 0x2f, 0x80, 0x04, 0x04, 0x3f, 0x80, 0x05, 0x04, 0x4f, 0x80, 0x06, 0x10, 0x0f, 0x80, 0x4f,
-0x3e, 0x0f, 0xd0, 0xe8, 0x00, 0x50, 0x80, 0x00, 0x38, 0x60, 0x14, 0x00, 0x18, 0x60, 0x80, 0x04,
-0x00, 0x71, 0x00, 0x00, 0x38, 0x90, 0x1c, 0x00, 0x18, 0x91, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00,
-0x38, 0x60, 0x14, 0x00, 0x04, 0x5f, 0x80, 0x01, 0x18, 0x62, 0x00, 0x04, 0x00, 0x71, 0x80, 0x00,
-0x38, 0x90, 0x1c, 0x00, 0x18, 0x91, 0x80, 0x04, 0x4c, 0x12, 0xff, 0xe6, 0x44, 0x00, 0x00, 0x00,
-0x50, 0x7f, 0x80, 0x40, 0x44, 0x60, 0x00, 0x3c, 0x48, 0x00, 0x00, 0x1a, 0x08, 0x41, 0x80, 0x01,
-0x00, 0x51, 0x00, 0x00, 0x50, 0x10, 0x80, 0x01, 0x40, 0x92, 0x14, 0x03, 0x44, 0x40, 0x00, 0x04,
-0x18, 0x91, 0x00, 0x01, 0x4c, 0x12, 0x7f, 0xf4, 0x50, 0x00, 0x00, 0x01, 0x4c, 0x00, 0xc0, 0x08,
-0x44, 0x00, 0x00, 0x00, 0x50, 0x6f, 0x80, 0x40, 0x48, 0x00, 0x00, 0x1e, 0x42, 0x30, 0x18, 0x24,
-0x40, 0x20, 0x08, 0x08, 0x50, 0x11, 0x80, 0x10, 0x40, 0x33, 0x84, 0x00, 0x40, 0x23, 0x88, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x48, 0xff, 0xff, 0xdc, 0x08, 0x41, 0x80, 0x01, 0x50, 0x10, 0x80, 0x01,
-0x44, 0x90, 0x00, 0x04, 0x18, 0x41, 0x00, 0x04, 0x4c, 0x14, 0xff, 0xf8, 0x50, 0x00, 0x00, 0x01,
-0x4c, 0x00, 0x80, 0x0e, 0x40, 0x70, 0x08, 0x08, 0x40, 0x33, 0x1c, 0x00, 0x04, 0x7f, 0x80, 0x0e,
-0x44, 0x10, 0x00, 0x00, 0x40, 0x23, 0x80, 0x00, 0x48, 0xff, 0xff, 0xe8, 0x04, 0x9f, 0x80, 0x0c,
-0x44, 0x00, 0x00, 0x10, 0x14, 0x04, 0x80, 0x00, 0x51, 0xff, 0x81, 0x44, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x9c, 0x58, 0x80, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x10, 0x14, 0x3f, 0x80, 0x03, 0x14, 0x2f, 0x80, 0x08, 0x14, 0x4f, 0x80, 0x09,
-0x14, 0x5f, 0x80, 0x0a, 0x4c, 0x30, 0x00, 0x0e, 0x44, 0x20, 0x00, 0x18, 0x4c, 0x31, 0x00, 0x0a,
-0x41, 0xe0, 0x04, 0x08, 0x4c, 0x3f, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xff, 0x48, 0x00, 0x00, 0xc2,
-0x44, 0x60, 0x00, 0x00, 0x50, 0x10, 0xff, 0xf8, 0x58, 0x03, 0x00, 0x00, 0x14, 0x1f, 0x80, 0x01,
-0x14, 0x6f, 0x80, 0x17, 0x49, 0xff, 0xcc, 0x34, 0x14, 0x0f, 0x80, 0x02, 0x4e, 0x03, 0x00, 0x06,
-0x44, 0x0f, 0xff, 0xfe, 0x48, 0x00, 0x00, 0xae, 0x50, 0x0f, 0x80, 0x54, 0x58, 0x14, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x08, 0x49, 0xf7, 0xb8, 0x64, 0x04, 0x2f, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x02,
-0x40, 0x91, 0x0c, 0x09, 0x50, 0x14, 0x00, 0x08, 0x49, 0xf7, 0xb8, 0x5a, 0x44, 0x70, 0x00, 0x05,
-0x54, 0x54, 0x80, 0xff, 0x58, 0x34, 0x80, 0x00, 0x42, 0x32, 0x9c, 0x73, 0x40, 0x04, 0x8c, 0x08,
-0x05, 0xef, 0x80, 0x02, 0x50, 0x10, 0x7f, 0xf8, 0x52, 0x42, 0x80, 0x00, 0x54, 0x82, 0x00, 0xff,
-0x55, 0xc1, 0x80, 0xff, 0x40, 0xaf, 0x04, 0x00, 0x50, 0x64, 0xff, 0xff, 0x14, 0x8f, 0x80, 0x07,
-0x15, 0xcf, 0x80, 0x04, 0x14, 0x7f, 0x80, 0x05, 0x14, 0xaf, 0x80, 0x0b, 0x14, 0x6f, 0x80, 0x06,
-0x04, 0x6f, 0x80, 0x06, 0x04, 0xaf, 0x80, 0x0b, 0x05, 0xcf, 0x80, 0x04, 0x44, 0x90, 0x22, 0xac,
-0x50, 0x8f, 0x80, 0x5c, 0x50, 0x7f, 0x80, 0x4c, 0x48, 0x00, 0x00, 0x3c, 0x00, 0x40, 0x80, 0x07,
-0x50, 0x63, 0x7f, 0xff, 0x40, 0x3e, 0x10, 0x03, 0x10, 0x30, 0x80, 0x07, 0x4b, 0xe0, 0x24, 0x01,
-0x58, 0x15, 0x00, 0x00, 0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x3c, 0x4b, 0xe0, 0x24, 0x01,
-0x04, 0x3f, 0x80, 0x03, 0x3c, 0x1d, 0xf3, 0xee, 0x04, 0x2f, 0x80, 0x08, 0x45, 0xe0, 0x00, 0x10,
-0x50, 0x4f, 0x80, 0x44, 0x58, 0x54, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x34, 0x15, 0xef, 0x80, 0x17,
-0x49, 0xff, 0xfc, 0xfe, 0x50, 0x1f, 0x80, 0x44, 0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x54,
-0x4b, 0xe0, 0x24, 0x01, 0x58, 0x05, 0x00, 0x00, 0x44, 0x20, 0x00, 0x08, 0x58, 0x13, 0x80, 0x00,
-0x4b, 0xe0, 0x24, 0x01, 0x50, 0x2e, 0x7f, 0xff, 0x55, 0xc1, 0x00, 0xff, 0x50, 0xa5, 0x7f, 0xf8,
-0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x34, 0x50, 0x1f, 0x80, 0x54, 0x4e, 0x64, 0xff, 0xc0,
-0x05, 0xef, 0x80, 0x04, 0x04, 0x4f, 0x80, 0x07, 0x04, 0x2f, 0x80, 0x05, 0x40, 0x3f, 0x10, 0x00,
-0x50, 0x51, 0x7f, 0xff, 0x54, 0x01, 0x80, 0xff, 0x44, 0x1f, 0xff, 0xff, 0x14, 0x5f, 0x80, 0x05,
-0x14, 0x0f, 0x80, 0x04, 0x4c, 0x50, 0xff, 0x9e, 0x04, 0x5f, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x0a,
-0x14, 0x50, 0x80, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x02, 0x04, 0x0f, 0x80, 0x09,
-0x49, 0xf7, 0xb7, 0xc6, 0x04, 0x0f, 0x80, 0x02, 0x49, 0xff, 0xca, 0xb2, 0x44, 0x00, 0x00, 0x00,
-0x51, 0xff, 0x80, 0x64, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0x3c,
-0x44, 0x30, 0x00, 0x00, 0x50, 0x50, 0x00, 0x08, 0x14, 0x30, 0x00, 0x00, 0x14, 0x30, 0x00, 0x01,
-0x58, 0x42, 0x80, 0x00, 0x18, 0x32, 0x00, 0x01, 0x44, 0x60, 0x01, 0x00, 0x50, 0x31, 0x80, 0x01,
-0x4c, 0x33, 0x7f, 0xfa, 0x44, 0x40, 0x00, 0x00, 0x58, 0x32, 0x00, 0x00, 0x40, 0x71, 0x88, 0xd7,
-0x00, 0x72, 0x80, 0x00, 0x50, 0x31, 0x80, 0x01, 0x40, 0x82, 0x1c, 0x00, 0x38, 0x60, 0x98, 0x00,
-0x40, 0x44, 0x18, 0x00, 0x54, 0x42, 0x00, 0xff, 0x40, 0x80, 0x10, 0x00, 0x50, 0x64, 0x00, 0x08,
-0x00, 0x83, 0x00, 0x00, 0x18, 0x82, 0x80, 0x01, 0x10, 0x73, 0x00, 0x00, 0x44, 0x60, 0x01, 0x00,
-0x4c, 0x33, 0x7f, 0xe6, 0x3a, 0x6f, 0xa0, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0x3c,
-0x44, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x32, 0x04, 0x80, 0x00, 0x00, 0x50, 0x74, 0x00, 0x01,
-0x54, 0x63, 0x80, 0xff, 0x38, 0x62, 0x98, 0x0e, 0x50, 0x52, 0x80, 0x08, 0x00, 0x62, 0x80, 0x00,
-0x04, 0x80, 0x00, 0x01, 0x40, 0x73, 0x20, 0x00, 0x54, 0x83, 0x80, 0xff, 0x14, 0x80, 0x00, 0x01,
-0x40, 0x70, 0x20, 0x00, 0x50, 0x73, 0x80, 0x08, 0x00, 0x83, 0x80, 0x00, 0x10, 0x82, 0x80, 0x00,
-0x10, 0x63, 0x80, 0x00, 0x00, 0x72, 0x80, 0x00, 0x38, 0x80, 0x90, 0x00, 0x40, 0x53, 0x1c, 0x00,
-0x54, 0x62, 0x80, 0xff, 0x40, 0x60, 0x18, 0x00, 0x00, 0x53, 0x00, 0x08, 0x40, 0x52, 0xa0, 0x03,
-0x38, 0x51, 0x90, 0x08, 0x50, 0x42, 0x00, 0x01, 0x58, 0x50, 0x00, 0x00, 0x40, 0xf2, 0x08, 0x06,
-0x4e, 0xf3, 0xff, 0xcc, 0x3a, 0x6f, 0xa0, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0x3c,
-0x44, 0x20, 0x00, 0x00, 0x48, 0x00, 0x00, 0x22, 0x04, 0x40, 0x00, 0x00, 0x50, 0x21, 0x00, 0x01,
-0x50, 0x62, 0x00, 0x01, 0x54, 0x53, 0x00, 0xff, 0x38, 0x51, 0x94, 0x0e, 0x50, 0x31, 0x80, 0x08,
-0x04, 0x40, 0x00, 0x01, 0x00, 0x51, 0x80, 0x00, 0x40, 0x62, 0x90, 0x00, 0x54, 0x43, 0x00, 0xff,
-0x14, 0x40, 0x00, 0x01, 0x40, 0x60, 0x10, 0x00, 0x50, 0x43, 0x00, 0x08, 0x00, 0x62, 0x00, 0x00,
-0x10, 0x61, 0x80, 0x00, 0x10, 0x52, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00, 0x40, 0xf1, 0x04, 0x06,
-0x4e, 0xf3, 0xff, 0xdc, 0x3a, 0x6f, 0x98, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xfe, 0xe4, 0x14, 0x2f, 0x80, 0x00, 0x14, 0x3f, 0x80, 0x01, 0x58, 0x60, 0x80, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x60, 0x59, 0xc0, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x68,
-0x58, 0xa2, 0x00, 0x00, 0x58, 0x92, 0x80, 0x00, 0x50, 0x8f, 0x80, 0xc8, 0x49, 0xf7, 0xb6, 0x86,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x60, 0x50, 0x0f, 0x80, 0x08, 0x49, 0xf7, 0xb6, 0x7e,
-0x58, 0x04, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb6, 0x76,
-0x5c, 0xf3, 0x00, 0x41, 0x4e, 0xf2, 0x00, 0x12, 0x58, 0x04, 0x00, 0x00, 0x58, 0x1e, 0x00, 0x00,
-0x58, 0x23, 0x00, 0x00, 0x49, 0xf7, 0xb6, 0xdc, 0x50, 0x6f, 0x80, 0xc8, 0x51, 0xcf, 0x81, 0x08,
-0x58, 0x73, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x58, 0x0e, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x58, 0x24, 0x00, 0x00, 0x49, 0x00, 0x0a, 0x8a, 0x48, 0xff, 0xff, 0xf0, 0x00, 0x13, 0x80, 0x00,
-0x56, 0x00, 0x80, 0x36, 0x18, 0x03, 0x80, 0x01, 0x4c, 0x7e, 0x7f, 0xfa, 0x50, 0x7f, 0x80, 0x68,
-0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x0a, 0x58, 0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x80, 0xc8,
-0x44, 0x20, 0x00, 0x40, 0x49, 0x00, 0x09, 0xec, 0x04, 0x1f, 0x80, 0x00, 0x04, 0x2f, 0x80, 0x01,
-0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x09, 0xe4, 0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x81, 0x08,
-0x49, 0x00, 0x09, 0x96, 0x00, 0x33, 0x00, 0x00, 0x56, 0x21, 0x80, 0x6a, 0x18, 0x23, 0x00, 0x01,
-0x4c, 0x6e, 0x7f, 0xfa, 0x50, 0x7f, 0x80, 0x08, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x0a, 0x34,
-0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x80, 0xc8, 0x44, 0x20, 0x00, 0x40, 0x50, 0x6f, 0x81, 0x08,
-0x49, 0x00, 0x09, 0xc6, 0x44, 0x20, 0x00, 0x10, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x49, 0x00, 0x09, 0xbe, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0x00, 0x09, 0x70,
-0x5c, 0xf4, 0x80, 0x11, 0x4e, 0xf3, 0x00, 0x0a, 0x58, 0x05, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x10, 0x48, 0x00, 0x00, 0x08, 0x58, 0x05, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x58, 0x24, 0x80, 0x00, 0x49, 0xf7, 0xb6, 0x6c, 0x51, 0xff, 0x81, 0x1c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xcc, 0x14, 0x2f, 0x80, 0x00,
-0x14, 0x3f, 0x80, 0x01, 0x58, 0x60, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x68,
-0x59, 0xc0, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x70, 0x58, 0xa2, 0x00, 0x00, 0x58, 0x92, 0x80, 0x00,
-0x50, 0x8f, 0x80, 0xdc, 0x49, 0xf7, 0xb5, 0xda, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x68,
-0x50, 0x0f, 0x80, 0x08, 0x49, 0xf7, 0xb5, 0xd2, 0x58, 0x04, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb5, 0xca, 0x5c, 0xf3, 0x00, 0x41, 0x4e, 0xf2, 0x00, 0x12,
-0x58, 0x04, 0x00, 0x00, 0x58, 0x1e, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x49, 0xf7, 0xb6, 0x30,
-0x50, 0x6f, 0x80, 0xdc, 0x51, 0xcf, 0x81, 0x1c, 0x58, 0x73, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c,
-0x58, 0x0e, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x49, 0x00, 0x02, 0xb8,
-0x48, 0xff, 0xff, 0xf0, 0x00, 0x13, 0x80, 0x00, 0x56, 0x00, 0x80, 0x36, 0x18, 0x03, 0x80, 0x01,
-0x4c, 0x7e, 0x7f, 0xfa, 0x50, 0x7f, 0x80, 0x70, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x02, 0x86,
-0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x80, 0xdc, 0x44, 0x20, 0x00, 0x40, 0x49, 0x00, 0x02, 0x1a,
-0x04, 0x1f, 0x80, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x02, 0x12,
-0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x81, 0x1c, 0x49, 0x00, 0x01, 0x7c, 0x00, 0x33, 0x00, 0x00,
-0x56, 0x21, 0x80, 0x6a, 0x18, 0x23, 0x00, 0x01, 0x4c, 0x6e, 0x7f, 0xfa, 0x50, 0x7f, 0x80, 0x08,
-0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x02, 0x62, 0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x80, 0xdc,
-0x44, 0x20, 0x00, 0x40, 0x50, 0x6f, 0x81, 0x1c, 0x49, 0x00, 0x01, 0xf4, 0x44, 0x20, 0x00, 0x14,
-0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0x00, 0x01, 0xec, 0x58, 0x03, 0x80, 0x00,
-0x58, 0x13, 0x00, 0x00, 0x49, 0x00, 0x01, 0x56, 0x5c, 0xf4, 0x80, 0x15, 0x4e, 0xf3, 0x00, 0x0a,
-0x58, 0x05, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14, 0x48, 0x00, 0x00, 0x08,
-0x58, 0x05, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00, 0x49, 0xf7, 0xb5, 0xc0,
-0x51, 0xff, 0x81, 0x34, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xfe, 0xb4, 0x58, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x14, 0x0f, 0x80, 0x01,
-0x50, 0x9f, 0x80, 0x08, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x40, 0x58, 0x04, 0x80, 0x00,
-0x49, 0xf7, 0xb5, 0xa6, 0x50, 0x8f, 0x80, 0x48, 0x59, 0xe4, 0x80, 0x00, 0x58, 0x24, 0x80, 0x00,
-0x04, 0x01, 0x00, 0x00, 0x44, 0x50, 0xff, 0x00, 0x46, 0xa0, 0x0f, 0xf0, 0x40, 0x30, 0x14, 0x02,
-0x40, 0x40, 0x60, 0x09, 0x40, 0x10, 0x60, 0x08, 0x40, 0x72, 0x04, 0x04, 0x41, 0xc1, 0xa0, 0x08,
-0x40, 0x50, 0x28, 0x02, 0x40, 0x13, 0xf0, 0x04, 0x40, 0x42, 0xa0, 0x09, 0x40, 0x30, 0x90, 0x04,
-0x1c, 0x31, 0x00, 0x01, 0x4c, 0x24, 0x7f, 0xe6, 0x50, 0x2f, 0x80, 0x3c, 0x50, 0x34, 0x81, 0x34,
-0x04, 0x41, 0x7f, 0xfb, 0x04, 0x51, 0x00, 0x00, 0x04, 0x01, 0x7f, 0xf5, 0x04, 0xa1, 0x7f, 0xf3,
-0x40, 0x12, 0x14, 0x03, 0x41, 0xc0, 0x80, 0x03, 0x40, 0x7e, 0x28, 0x03, 0x40, 0x83, 0xfc, 0x0b,
-0x14, 0x81, 0x00, 0x03, 0x50, 0x21, 0x00, 0x04, 0x4c, 0x21, 0xff, 0xec, 0x04, 0x03, 0x00, 0x00,
-0x04, 0x83, 0x00, 0x01, 0x04, 0x43, 0x00, 0x02, 0x04, 0x33, 0x00, 0x03, 0x05, 0xc3, 0x00, 0x04,
-0x50, 0x14, 0x80, 0x50, 0x58, 0x70, 0x00, 0x00, 0x0c, 0x5f, 0x00, 0x01, 0x46, 0xa5, 0xa8, 0x27,
-0x58, 0xa5, 0x09, 0x99, 0x40, 0x24, 0x20, 0x05, 0x40, 0x52, 0xa8, 0x00, 0x40, 0x52, 0xf0, 0x00,
-0x40, 0xa2, 0x20, 0x02, 0x41, 0xc3, 0xec, 0x0b, 0x40, 0x21, 0x0c, 0x02, 0x40, 0x52, 0xf0, 0x00,
-0x40, 0x21, 0x28, 0x03, 0x40, 0x52, 0x88, 0x00, 0x59, 0xc1, 0x80, 0x00, 0x40, 0x24, 0x08, 0x0b,
-0x58, 0x83, 0x80, 0x00, 0x4d, 0xe0, 0x80, 0x0a, 0x58, 0x32, 0x00, 0x00, 0x58, 0x72, 0x80, 0x00,
-0x58, 0x41, 0x00, 0x00, 0x48, 0xff, 0xff, 0xda, 0x59, 0xe1, 0x80, 0x00, 0x50, 0x8f, 0x80, 0x58,
-0x50, 0xa4, 0x80, 0xa0, 0x0d, 0xc4, 0x00, 0x01, 0x46, 0x36, 0xed, 0x9e, 0x58, 0x31, 0x8b, 0xa1,
-0x41, 0xce, 0x0c, 0x00, 0x40, 0x11, 0x1c, 0x03, 0x41, 0xce, 0x78, 0x00, 0x40, 0x32, 0xec, 0x0b,
-0x41, 0xee, 0x0c, 0x00, 0x40, 0x30, 0x90, 0x03, 0x41, 0xcf, 0x0c, 0x00, 0x40, 0x33, 0x88, 0x0b,
-0x59, 0xe2, 0x00, 0x00, 0x58, 0x72, 0x80, 0x00, 0x4c, 0x85, 0x00, 0x0a, 0x58, 0x41, 0x00, 0x00,
-0x58, 0x5e, 0x00, 0x00, 0x58, 0x21, 0x80, 0x00, 0x48, 0xff, 0xff, 0xde, 0x58, 0x82, 0x80, 0x00,
-0x58, 0x5e, 0x00, 0x00, 0x58, 0x71, 0x00, 0x00, 0x51, 0xcf, 0x80, 0xa8, 0x50, 0x14, 0x80, 0xf0,
-0x0c, 0x4e, 0x00, 0x01, 0x46, 0xa8, 0xf1, 0xbb, 0x58, 0xa5, 0x0c, 0xdc, 0x40, 0x42, 0x28, 0x00,
-0x40, 0x21, 0x9c, 0x03, 0x40, 0x42, 0x78, 0x00, 0x40, 0x21, 0x20, 0x02, 0x41, 0xe2, 0xec, 0x0b,
-0x40, 0xa3, 0x8c, 0x02, 0x40, 0x42, 0x78, 0x00, 0x40, 0x21, 0x28, 0x03, 0x40, 0x42, 0x08, 0x00,
-0x59, 0xe3, 0x80, 0x00, 0x40, 0x24, 0x08, 0x0b, 0x58, 0x82, 0x80, 0x00, 0x4d, 0xc0, 0x80, 0x0a,
-0x58, 0x71, 0x80, 0x00, 0x58, 0x52, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x48, 0xff, 0xff, 0xda,
-0x59, 0xc3, 0x80, 0x00, 0x50, 0x94, 0x81, 0x40, 0x50, 0x7f, 0x80, 0xf8, 0x0d, 0xe3, 0x80, 0x01,
-0x46, 0x8c, 0xa6, 0x2c, 0x58, 0x84, 0x01, 0xd6, 0x40, 0xaf, 0x20, 0x00, 0x40, 0x11, 0x14, 0x03,
-0x41, 0xe5, 0x70, 0x00, 0x40, 0x82, 0x6c, 0x0b, 0x41, 0xcf, 0x20, 0x00, 0x40, 0x80, 0x8c, 0x03,
-0x40, 0xae, 0x20, 0x00, 0x40, 0x82, 0x88, 0x0b, 0x59, 0xc1, 0x80, 0x00, 0x58, 0x52, 0x00, 0x00,
-0x4c, 0x74, 0x80, 0x0a, 0x58, 0x31, 0x00, 0x00, 0x58, 0x45, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00,
-0x48, 0xff, 0xff, 0xde, 0x05, 0xc3, 0x00, 0x01, 0x04, 0x93, 0x00, 0x02, 0x04, 0x73, 0x00, 0x03,
-0x04, 0x53, 0x00, 0x04, 0x40, 0xa5, 0x00, 0x00, 0x40, 0x4e, 0x10, 0x00, 0x40, 0x23, 0x88, 0x00,
-0x40, 0x32, 0x8c, 0x00, 0x40, 0x84, 0xa0, 0x00, 0x14, 0x23, 0x00, 0x03, 0x14, 0xa3, 0x00, 0x00,
-0x14, 0x43, 0x00, 0x01, 0x14, 0x83, 0x00, 0x02, 0x14, 0x33, 0x00, 0x04, 0x44, 0x10, 0x00, 0x00,
-0x04, 0x0f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb4, 0x18, 0x44, 0x00, 0x00, 0x00,
-0x14, 0x03, 0x00, 0x18, 0x51, 0xff, 0x81, 0x4c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x04, 0x20, 0x00, 0x18, 0x50, 0x70, 0x00, 0x20,
-0x58, 0x60, 0x00, 0x00, 0x58, 0x80, 0x80, 0x00, 0x40, 0x03, 0x88, 0x00, 0x44, 0x10, 0x00, 0x80,
-0x44, 0x20, 0x00, 0x01, 0x49, 0xf7, 0xb3, 0xfa, 0x04, 0x03, 0x00, 0x18, 0x5c, 0xf0, 0x00, 0x38,
-0x4e, 0xf3, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xaa, 0x04, 0x33, 0x00, 0x06,
-0x05, 0xe3, 0x00, 0x07, 0x41, 0xc1, 0xf4, 0x09, 0x40, 0x2f, 0x0c, 0x08, 0x40, 0x2e, 0x08, 0x04,
-0x40, 0x31, 0x8c, 0x08, 0x44, 0x50, 0xff, 0x00, 0x46, 0x10, 0x0f, 0xf0, 0x40, 0x91, 0x14, 0x02,
-0x40, 0xa1, 0x94, 0x02, 0x41, 0xe1, 0x84, 0x02, 0x41, 0xc1, 0x04, 0x02, 0x40, 0x44, 0xa0, 0x08,
-0x40, 0x01, 0xe0, 0x08, 0x40, 0x91, 0x60, 0x08, 0x40, 0xa5, 0x20, 0x08, 0x40, 0x1e, 0x20, 0x09,
-0x40, 0x05, 0x00, 0x04, 0x40, 0x44, 0x90, 0x04, 0x40, 0x5f, 0x20, 0x09, 0x41, 0xe0, 0x14, 0x04,
-0x41, 0xc1, 0xe0, 0x09, 0x40, 0x52, 0x04, 0x04, 0x40, 0x11, 0x60, 0x09, 0x40, 0x42, 0x84, 0x04,
-0x40, 0x3e, 0x78, 0x04, 0x44, 0x20, 0x00, 0x08, 0x58, 0x1f, 0x80, 0x00, 0x50, 0x03, 0x80, 0x38,
-0x14, 0x4f, 0x80, 0x00, 0x14, 0x3f, 0x80, 0x01, 0x49, 0xf7, 0xb4, 0x22, 0x58, 0x03, 0x00, 0x00,
-0x49, 0xff, 0xfe, 0x66, 0x44, 0x20, 0x00, 0x00, 0x38, 0x33, 0x08, 0x02, 0x44, 0x50, 0xff, 0x00,
-0x41, 0xc1, 0x94, 0x02, 0x40, 0x4e, 0x20, 0x08, 0x47, 0xc0, 0x0f, 0xf0, 0x40, 0x01, 0xe0, 0x09,
-0x40, 0x11, 0xe0, 0x08, 0x41, 0xe0, 0x04, 0x04, 0x40, 0x31, 0xf0, 0x02, 0x40, 0x0f, 0x10, 0x04,
-0x40, 0x51, 0xa0, 0x09, 0x40, 0x10, 0x14, 0x04, 0x38, 0x13, 0x08, 0x0a, 0x44, 0x40, 0x00, 0x14,
-0x50, 0x21, 0x00, 0x04, 0x4c, 0x22, 0x7f, 0xe2, 0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x49, 0xf7, 0xb3, 0xf6, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x58, 0x70, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20,
-0x14, 0x1f, 0x80, 0x01, 0x59, 0xc1, 0x00, 0x00, 0x14, 0x0f, 0x80, 0x00, 0x44, 0x80, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x34, 0x04, 0x33, 0x80, 0x18, 0x04, 0x1f, 0x80, 0x01, 0x05, 0xef, 0x80, 0x00,
-0x40, 0x50, 0xa0, 0x00, 0x40, 0x4f, 0x0c, 0x00, 0x40, 0x93, 0x0c, 0x00, 0x58, 0x12, 0x80, 0x00,
-0x58, 0x02, 0x00, 0x00, 0x5c, 0xf4, 0x80, 0x40, 0x4e, 0xf2, 0x00, 0x0e, 0x49, 0xf7, 0xb3, 0xc8,
-0x04, 0x33, 0x80, 0x18, 0x40, 0x84, 0x18, 0x00, 0x40, 0x21, 0x98, 0x00, 0x14, 0x23, 0x80, 0x18,
-0x48, 0x00, 0x00, 0x14, 0x52, 0x21, 0x80, 0x40, 0x49, 0xf7, 0xb3, 0xba, 0x44, 0x60, 0x00, 0x40,
-0x04, 0x53, 0x80, 0x18, 0x14, 0x63, 0x80, 0x18, 0x40, 0x43, 0x14, 0x01, 0x58, 0x03, 0x80, 0x00,
-0x40, 0x84, 0x10, 0x00, 0x49, 0xff, 0xfd, 0xf4, 0x40, 0x6e, 0x20, 0x01, 0x58, 0x23, 0x00, 0x00,
-0x4c, 0x8e, 0x7f, 0xca, 0x04, 0x03, 0x80, 0x06, 0x04, 0x13, 0x80, 0x07, 0x58, 0x24, 0x00, 0x00,
-0x44, 0x30, 0x00, 0x00, 0x40, 0x40, 0x08, 0x00, 0x40, 0xf2, 0x08, 0x06, 0x40, 0x50, 0x8c, 0x00,
-0x40, 0x52, 0xbc, 0x00, 0x14, 0x43, 0x80, 0x06, 0x14, 0x53, 0x80, 0x07, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x3e, 0x1f, 0xd5, 0xe8,
-0x58, 0x60, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14, 0x49, 0xf7, 0xb3, 0x82, 0x50, 0x03, 0x00, 0x20,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb3, 0x08, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x14, 0x23, 0x00, 0x18, 0x14, 0x03, 0x00, 0x06,
-0x14, 0x13, 0x00, 0x07, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
-0x51, 0xff, 0xff, 0x94, 0x58, 0x90, 0x00, 0x00, 0x58, 0x80, 0x80, 0x00, 0x58, 0x71, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x68, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xb2, 0xe6,
-0x58, 0x0f, 0x80, 0x00, 0x49, 0xff, 0xff, 0xca, 0x58, 0x0f, 0x80, 0x00, 0x58, 0x14, 0x80, 0x00,
-0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xff, 0x5e, 0x58, 0x0f, 0x80, 0x00, 0x58, 0x13, 0x80, 0x00,
-0x58, 0x6f, 0x80, 0x00, 0x49, 0xff, 0xfe, 0xc6, 0x51, 0xff, 0x80, 0x6c, 0x3a, 0x6f, 0xa4, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x5c, 0x14, 0x0f, 0x80, 0x05,
-0x50, 0x00, 0x00, 0x18, 0x14, 0x0f, 0x80, 0x17, 0x50, 0x6f, 0x80, 0x60, 0x04, 0x1f, 0x80, 0x17,
-0x44, 0x20, 0x00, 0x40, 0x58, 0x03, 0x00, 0x00, 0x49, 0xf7, 0xb3, 0x2a, 0x58, 0x23, 0x00, 0x00,
-0x50, 0x3f, 0x80, 0xa0, 0x50, 0x21, 0x00, 0x04, 0x4c, 0x21, 0xff, 0xfe, 0x04, 0x1f, 0x80, 0x05,
-0x04, 0x4f, 0x80, 0x05, 0x04, 0xa0, 0x80, 0x01, 0x05, 0xcf, 0x80, 0x05, 0x14, 0xaf, 0x80, 0x02,
-0x50, 0x3f, 0x80, 0x60, 0x05, 0xe2, 0x00, 0x02, 0x04, 0x01, 0x80, 0x00, 0x15, 0xef, 0x80, 0x03,
-0x04, 0x2f, 0x80, 0x05, 0x04, 0x5e, 0x00, 0x03, 0x14, 0x0f, 0x80, 0x16, 0x14, 0x5f, 0x80, 0x04,
-0x46, 0x1d, 0x76, 0xaa, 0x04, 0x61, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x02, 0x40, 0xa3, 0x00, 0x00,
-0x14, 0x6f, 0x80, 0x01, 0x04, 0x6f, 0x80, 0x03, 0x40, 0x71, 0x08, 0x05, 0x40, 0x83, 0x94, 0x02,
-0x40, 0x93, 0x08, 0x02, 0x58, 0x10, 0x84, 0x78, 0x40, 0x44, 0x24, 0x04, 0x41, 0xe5, 0x04, 0x00,
-0x04, 0x01, 0x80, 0x01, 0x41, 0xcf, 0x10, 0x00, 0x04, 0x5f, 0x80, 0x04, 0x40, 0x7e, 0x64, 0x0b,
-0x40, 0x23, 0x88, 0x00, 0x40, 0x42, 0x80, 0x00, 0x14, 0x0f, 0x80, 0x15, 0x04, 0x0f, 0x80, 0x02,
-0x40, 0x81, 0x08, 0x05, 0x46, 0x1e, 0x8c, 0x7b, 0x40, 0xa4, 0x18, 0x02, 0x40, 0x91, 0x00, 0x02,
-0x58, 0x10, 0x87, 0x56, 0x41, 0xe5, 0x24, 0x04, 0x41, 0xc2, 0x04, 0x00, 0x40, 0x6e, 0x78, 0x00,
-0x40, 0x73, 0x50, 0x0b, 0x40, 0x63, 0x88, 0x00, 0x04, 0x51, 0x80, 0x02, 0x04, 0xaf, 0x80, 0x03,
-0x40, 0x83, 0x18, 0x05, 0x46, 0x12, 0x42, 0x07, 0x40, 0x94, 0x00, 0x02, 0x41, 0xe5, 0x14, 0x00,
-0x40, 0x43, 0x08, 0x02, 0x58, 0x10, 0x80, 0xdb, 0x41, 0xcf, 0x04, 0x00, 0x14, 0x5f, 0x80, 0x14,
-0x40, 0x54, 0x90, 0x04, 0x40, 0x0e, 0x14, 0x00, 0x40, 0x80, 0x3c, 0x0b, 0x40, 0x84, 0x18, 0x00,
-0x04, 0x91, 0x80, 0x03, 0x04, 0x4f, 0x80, 0x02, 0x40, 0xa4, 0x20, 0x05, 0x46, 0x1c, 0x1b, 0xdc,
-0x41, 0xe5, 0x08, 0x02, 0x41, 0xc2, 0x24, 0x00, 0x40, 0x54, 0x18, 0x02, 0x58, 0x10, 0x8e, 0xee,
-0x40, 0x0f, 0x14, 0x04, 0x40, 0xae, 0x04, 0x00, 0x14, 0x9f, 0x80, 0x13, 0x40, 0x95, 0x00, 0x00,
-0x40, 0x44, 0xa8, 0x0b, 0x40, 0x92, 0x20, 0x00, 0x04, 0x51, 0x80, 0x04, 0x46, 0x0f, 0x57, 0xc0,
-0x41, 0xe4, 0xa4, 0x05, 0x58, 0x00, 0x0f, 0xaf, 0x40, 0x1f, 0x18, 0x02, 0x41, 0xc2, 0x80, 0x00,
-0x40, 0xa4, 0xa0, 0x02, 0x40, 0x4e, 0x08, 0x00, 0x40, 0x20, 0xa8, 0x04, 0x14, 0x5f, 0x80, 0x12,
-0x40, 0x52, 0x08, 0x00, 0x41, 0xc2, 0xe4, 0x0b, 0x40, 0x5e, 0x24, 0x00, 0x04, 0x11, 0x80, 0x05,
-0x47, 0xe4, 0x78, 0x7c, 0x40, 0x02, 0x94, 0x05, 0x59, 0xef, 0x06, 0x2a, 0x40, 0x40, 0xf8, 0x00,
-0x40, 0x22, 0xa4, 0x02, 0x40, 0xa0, 0x20, 0x02, 0x41, 0xc2, 0x18, 0x00, 0x40, 0x05, 0x08, 0x04,
-0x41, 0xee, 0x00, 0x00, 0x14, 0x1f, 0x80, 0x11, 0x40, 0x1f, 0x50, 0x0b, 0x41, 0xe0, 0x94, 0x00,
-0x05, 0xc1, 0x80, 0x06, 0x46, 0x6a, 0x83, 0x04, 0x40, 0x7f, 0x78, 0x05, 0x58, 0x63, 0x06, 0x13,
-0x40, 0xa3, 0xa4, 0x02, 0x40, 0x4e, 0x18, 0x00, 0x40, 0x2f, 0x14, 0x02, 0x40, 0x02, 0x20, 0x00,
-0x40, 0x15, 0x08, 0x04, 0x40, 0x60, 0x04, 0x00, 0x15, 0xcf, 0x80, 0x10, 0x41, 0xc3, 0x3c, 0x0b,
-0x40, 0x6e, 0x78, 0x00, 0x04, 0x71, 0x80, 0x07, 0x46, 0x8f, 0xd4, 0x69, 0x40, 0x23, 0x18, 0x05,
-0x58, 0x84, 0x05, 0x01, 0x40, 0x41, 0x14, 0x02, 0x40, 0xa3, 0xa0, 0x00, 0x40, 0x03, 0x78, 0x02,
-0x40, 0x15, 0x24, 0x00, 0x41, 0xc2, 0x00, 0x04, 0x40, 0x20, 0xf0, 0x00, 0x14, 0x7f, 0x80, 0x0f,
-0x40, 0x71, 0x28, 0x0b, 0x40, 0x23, 0x98, 0x00, 0x04, 0xa1, 0x80, 0x08, 0x46, 0x06, 0x98, 0x09,
-0x40, 0x81, 0x08, 0x05, 0x58, 0x00, 0x08, 0xd8, 0x40, 0x94, 0x78, 0x02, 0x40, 0x45, 0x00, 0x00,
-0x40, 0x11, 0x18, 0x02, 0x40, 0x74, 0x84, 0x04, 0x41, 0xc2, 0x14, 0x00, 0x40, 0x5e, 0x1c, 0x00,
-0x14, 0xaf, 0x80, 0x0e, 0x40, 0xa2, 0xe4, 0x0b, 0x40, 0x55, 0x08, 0x00, 0x04, 0x01, 0x80, 0x09,
-0x46, 0x48, 0xb4, 0x4f, 0x40, 0x82, 0x94, 0x05, 0x58, 0x42, 0x07, 0xaf, 0x41, 0xc4, 0x18, 0x02,
-0x40, 0x90, 0x10, 0x00, 0x40, 0x12, 0x88, 0x02, 0x40, 0x74, 0xf8, 0x00, 0x40, 0xae, 0x04, 0x04,
-0x40, 0x83, 0xa8, 0x00, 0x14, 0x0f, 0x80, 0x0d, 0x40, 0x04, 0x50, 0x0b, 0x40, 0x80, 0x14, 0x00,
-0x05, 0xc1, 0x80, 0x0a, 0x40, 0x44, 0x20, 0x05, 0x44, 0x9f, 0x5b, 0xb1, 0x40, 0x72, 0x08, 0x02,
-0x41, 0xee, 0x24, 0x00, 0x40, 0x14, 0x14, 0x02, 0x40, 0x03, 0x84, 0x04, 0x40, 0xaf, 0x18, 0x00,
-0x40, 0x65, 0x00, 0x00, 0x40, 0x43, 0x3c, 0x0b, 0x40, 0x62, 0x20, 0x00, 0x04, 0x91, 0x80, 0x0b,
-0x47, 0xe8, 0x95, 0xcd, 0x15, 0xcf, 0x80, 0x0c, 0x59, 0xef, 0x07, 0xbe, 0x41, 0xc3, 0x18, 0x05,
-0x40, 0xae, 0x14, 0x02, 0x40, 0x74, 0xf8, 0x00, 0x40, 0x13, 0x20, 0x02, 0x40, 0x03, 0x88, 0x00,
-0x40, 0x45, 0x04, 0x04, 0x14, 0x9f, 0x80, 0x0b, 0x40, 0x90, 0x10, 0x00, 0x41, 0xc4, 0xa8, 0x0b,
-0x40, 0x9e, 0x18, 0x00, 0x04, 0x11, 0x80, 0x0c, 0x46, 0x26, 0xb9, 0x01, 0x41, 0xe4, 0xa4, 0x05,
-0x58, 0x21, 0x01, 0x22, 0x40, 0x0f, 0x20, 0x02, 0x40, 0xa0, 0x88, 0x00, 0x40, 0x74, 0x98, 0x02,
-0x41, 0xc0, 0x1c, 0x04, 0x40, 0x45, 0x14, 0x00, 0x40, 0x52, 0x70, 0x00, 0x14, 0x1f, 0x80, 0x0a,
-0x40, 0x12, 0xe4, 0x0b, 0x40, 0x50, 0xa4, 0x00, 0x04, 0x21, 0x80, 0x0d, 0x47, 0xef, 0xd9, 0x87,
-0x40, 0xa2, 0x94, 0x05, 0x59, 0xef, 0x01, 0x93, 0x41, 0xc5, 0x18, 0x02, 0x40, 0x71, 0x78, 0x00,
-0x40, 0x02, 0xa4, 0x02, 0x40, 0x43, 0xa0, 0x00, 0x40, 0x8e, 0x00, 0x04, 0x40, 0x12, 0x20, 0x00,
-0x41, 0xe0, 0xd0, 0x0b, 0x40, 0x1f, 0x14, 0x00, 0x14, 0x2f, 0x80, 0x09, 0x46, 0xaa, 0x67, 0x94,
-0x04, 0x21, 0x80, 0x0e, 0x41, 0xe0, 0x84, 0x05, 0x58, 0xa5, 0x03, 0x8e, 0x40, 0x71, 0x28, 0x00,
-0x40, 0x0f, 0x24, 0x02, 0x41, 0xc0, 0x94, 0x02, 0x40, 0x40, 0x70, 0x04, 0x40, 0x83, 0x98, 0x00,
-0x40, 0x64, 0x10, 0x00, 0x40, 0xa3, 0x3c, 0x0b, 0x40, 0x65, 0x04, 0x00, 0x14, 0x2f, 0x80, 0x08,
-0x04, 0x31, 0x80, 0x0f, 0x46, 0x24, 0x9b, 0x40, 0x40, 0xa3, 0x18, 0x05, 0x58, 0x21, 0x08, 0x21,
-0x40, 0x71, 0x88, 0x00, 0x40, 0x05, 0x14, 0x02, 0x41, 0xc3, 0x04, 0x02, 0x40, 0x83, 0xa4, 0x00,
-0x40, 0x90, 0x70, 0x04, 0x40, 0x44, 0x24, 0x00, 0x14, 0x3f, 0x80, 0x07, 0x40, 0x72, 0x28, 0x0b,
-0x04, 0x3f, 0x80, 0x15, 0x46, 0x2f, 0x61, 0xe2, 0x40, 0x43, 0x98, 0x00, 0x58, 0x21, 0x05, 0x62,
-0x41, 0xc1, 0x88, 0x00, 0x40, 0x02, 0x04, 0x02, 0x41, 0xe3, 0x78, 0x02, 0x40, 0x80, 0x78, 0x04,
-0x40, 0x9e, 0x14, 0x00, 0x40, 0x54, 0xa0, 0x00, 0x04, 0x2f, 0x80, 0x10, 0x40, 0x72, 0xec, 0x0b,
-0x47, 0xcc, 0x04, 0x0b, 0x40, 0x53, 0x90, 0x00, 0x59, 0xce, 0x03, 0x40, 0x41, 0xe2, 0x28, 0x02,
-0x40, 0x31, 0x70, 0x00, 0x40, 0x02, 0x98, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x81, 0x84, 0x00,
-0x40, 0x14, 0x24, 0x00, 0x04, 0x3f, 0x80, 0x0b, 0x40, 0x70, 0xdc, 0x0b, 0x46, 0x22, 0x65, 0xe5,
-0x40, 0x13, 0x94, 0x00, 0x41, 0xc2, 0x10, 0x05, 0x58, 0x21, 0x0a, 0x51, 0x41, 0xe2, 0xf0, 0x02,
-0x40, 0xa1, 0x88, 0x00, 0x40, 0x00, 0x90, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x85, 0x18, 0x00,
-0x40, 0x64, 0x24, 0x00, 0x04, 0x2f, 0x80, 0x16, 0x40, 0x73, 0x48, 0x0b, 0x46, 0x3e, 0x9b, 0x6c,
-0x40, 0x63, 0x84, 0x00, 0x41, 0xc2, 0x94, 0x05, 0x58, 0x31, 0x87, 0xaa, 0x41, 0xe0, 0xf0, 0x02,
-0x40, 0xa1, 0x0c, 0x00, 0x40, 0x03, 0x14, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x85, 0x10, 0x00,
-0x40, 0x44, 0x24, 0x00, 0x05, 0xcf, 0x80, 0x11, 0x40, 0x72, 0x30, 0x0b, 0x46, 0x2d, 0x62, 0xf1,
-0x40, 0x43, 0x98, 0x00, 0x40, 0xa0, 0x84, 0x05, 0x58, 0x21, 0x00, 0x5d, 0x41, 0xe3, 0x28, 0x02,
-0x40, 0x3e, 0x08, 0x00, 0x40, 0x02, 0x04, 0x02, 0x40, 0x80, 0x78, 0x04, 0x40, 0x91, 0x94, 0x00,
-0x40, 0x54, 0xa0, 0x00, 0x05, 0xcf, 0x80, 0x0c, 0x40, 0x72, 0xec, 0x0b, 0x46, 0x20, 0x24, 0x41,
-0x40, 0x53, 0x90, 0x00, 0x40, 0xa3, 0x18, 0x05, 0x58, 0x21, 0x04, 0x53, 0x41, 0xe2, 0x28, 0x02,
-0x40, 0x3e, 0x08, 0x00, 0x40, 0x02, 0x98, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x81, 0x84, 0x00,
-0x40, 0x14, 0x24, 0x00, 0x04, 0x3f, 0x80, 0x07, 0x40, 0x70, 0xdc, 0x0b, 0x46, 0xad, 0x8a, 0x1e,
-0x40, 0x13, 0x94, 0x00, 0x41, 0xc2, 0x10, 0x05, 0x58, 0xa5, 0x06, 0x81, 0x41, 0xe2, 0xf0, 0x02,
-0x40, 0x21, 0xa8, 0x00, 0x40, 0x00, 0x90, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x81, 0x18, 0x00,
-0x40, 0x64, 0x24, 0x00, 0x04, 0xaf, 0x80, 0x12, 0x40, 0x73, 0x48, 0x0b, 0x46, 0x3e, 0x7d, 0x3f,
-0x40, 0x63, 0x84, 0x00, 0x41, 0xc2, 0x94, 0x05, 0x58, 0x31, 0x8b, 0xc8, 0x41, 0xe0, 0xf0, 0x02,
-0x40, 0x05, 0x0c, 0x00, 0x40, 0x23, 0x14, 0x02, 0x40, 0x91, 0x78, 0x04, 0x40, 0x80, 0x10, 0x00,
-0x40, 0x44, 0x24, 0x00, 0x04, 0x0f, 0x80, 0x0d, 0x40, 0x72, 0x30, 0x0b, 0x47, 0xc2, 0x1e, 0x1c,
-0x40, 0x43, 0x98, 0x00, 0x40, 0xa0, 0x84, 0x05, 0x59, 0xce, 0x0d, 0xe6, 0x41, 0xe3, 0x28, 0x02,
-0x40, 0x30, 0x70, 0x00, 0x40, 0x22, 0x04, 0x02, 0x40, 0x81, 0x78, 0x04, 0x40, 0x91, 0x94, 0x00,
-0x40, 0x54, 0xa0, 0x00, 0x04, 0x0f, 0x80, 0x08, 0x40, 0x72, 0xec, 0x0b, 0x47, 0xcc, 0x33, 0x70,
-0x40, 0x53, 0x90, 0x00, 0x40, 0xa3, 0x18, 0x05, 0x59, 0xce, 0x07, 0xd6, 0x41, 0xe2, 0x28, 0x02,
-0x40, 0x30, 0x70, 0x00, 0x40, 0x22, 0x98, 0x02, 0x40, 0x91, 0x78, 0x04, 0x40, 0x81, 0x84, 0x00,
-0x40, 0x14, 0x24, 0x00, 0x04, 0x0f, 0x80, 0x13, 0x40, 0x70, 0xdc, 0x0b, 0x46, 0x2f, 0x4d, 0x50,
-0x40, 0x13, 0x94, 0x00, 0x41, 0xc2, 0x10, 0x05, 0x58, 0x21, 0x0d, 0x87, 0x41, 0xe2, 0xf0, 0x02,
-0x40, 0xa0, 0x08, 0x00, 0x40, 0x30, 0x90, 0x02, 0x40, 0x91, 0xf8, 0x04, 0x40, 0x85, 0x18, 0x00,
-0x40, 0x64, 0x24, 0x00, 0x04, 0x2f, 0x80, 0x0e, 0x40, 0x73, 0x48, 0x0b, 0x46, 0x04, 0x55, 0xa1,
-0x40, 0x63, 0x84, 0x00, 0x41, 0xc2, 0x94, 0x05, 0x58, 0x00, 0x04, 0xed, 0x41, 0xe0, 0xf0, 0x02,
-0x40, 0xa1, 0x00, 0x00, 0x40, 0x33, 0x14, 0x02, 0x40, 0x85, 0x10, 0x00, 0x40, 0x91, 0xf8, 0x04,
-0x40, 0x74, 0x24, 0x00, 0x04, 0x4f, 0x80, 0x09, 0x40, 0x03, 0xb0, 0x0b, 0x46, 0x2a, 0x9e, 0x3e,
-0x40, 0x80, 0x18, 0x00, 0x40, 0xa0, 0x84, 0x05, 0x58, 0x21, 0x09, 0x05, 0x41, 0xe3, 0x28, 0x02,
-0x40, 0x32, 0x08, 0x00, 0x41, 0xc4, 0x04, 0x02, 0x40, 0x7e, 0x78, 0x04, 0x40, 0x91, 0x94, 0x00,
-0x40, 0x54, 0x9c, 0x00, 0x04, 0x4f, 0x80, 0x14, 0x40, 0x02, 0xec, 0x0b, 0x46, 0x2f, 0xce, 0xfa,
-0x40, 0x50, 0x20, 0x00, 0x40, 0xa3, 0x18, 0x05, 0x58, 0x21, 0x03, 0xf8, 0x41, 0xe4, 0x28, 0x02,
-0x40, 0x32, 0x08, 0x00, 0x41, 0xc2, 0x98, 0x02, 0x40, 0x71, 0x84, 0x00, 0x40, 0x9e, 0x78, 0x04,
-0x40, 0x03, 0xa4, 0x00, 0x04, 0x3f, 0x80, 0x0f, 0x40, 0xa0, 0x5c, 0x0b, 0x47, 0xe6, 0x76, 0xf0,
-0x40, 0xa5, 0x14, 0x00, 0x40, 0x44, 0x20, 0x05, 0x59, 0xef, 0x02, 0xd9, 0x40, 0x72, 0x90, 0x02,
-0x40, 0x21, 0xf8, 0x00, 0x41, 0xc5, 0x20, 0x02, 0x40, 0x11, 0x18, 0x00, 0x40, 0x9e, 0x1c, 0x04,
-0x40, 0x00, 0xa4, 0x00, 0x04, 0x7f, 0x80, 0x0a, 0x40, 0x40, 0x48, 0x0b, 0x46, 0x28, 0xd2, 0xa4,
-0x40, 0x02, 0x28, 0x00, 0x41, 0xe2, 0x94, 0x05, 0x58, 0x21, 0x0c, 0x8a, 0x41, 0xc5, 0x78, 0x02,
-0x40, 0x33, 0x88, 0x00, 0x40, 0x60, 0x14, 0x02, 0x40, 0x11, 0xa0, 0x00, 0x40, 0x93, 0x70, 0x04,
-0x40, 0x40, 0xa4, 0x00, 0x04, 0x8f, 0x80, 0x11, 0x41, 0xe2, 0x30, 0x0b, 0x44, 0x2a, 0x39, 0x42,
-0x40, 0x4f, 0x00, 0x00, 0x40, 0x74, 0x08, 0x00, 0x40, 0x30, 0x28, 0x03, 0x14, 0xaf, 0x80, 0x06,
-0x40, 0x63, 0x94, 0x00, 0x41, 0xc1, 0x90, 0x03, 0x40, 0x13, 0x70, 0x00, 0x04, 0x8f, 0x80, 0x0e,
-0x47, 0xe8, 0x77, 0x1f, 0x04, 0x2f, 0x80, 0x06, 0x40, 0x90, 0xf0, 0x0b, 0x59, 0xef, 0x06, 0x81,
-0x40, 0x14, 0x90, 0x00, 0x40, 0x74, 0x78, 0x00, 0x40, 0x52, 0x00, 0x03, 0x40, 0x33, 0x88, 0x00,
-0x40, 0xa2, 0x84, 0x03, 0x40, 0x61, 0xa8, 0x00, 0x05, 0xef, 0x80, 0x0b, 0x46, 0x96, 0xd9, 0xd6,
-0x41, 0xc3, 0x54, 0x0b, 0x58, 0x94, 0x81, 0x22, 0x40, 0x6e, 0x04, 0x00, 0x40, 0x8f, 0x24, 0x00,
-0x40, 0x70, 0x90, 0x03, 0x40, 0x24, 0x00, 0x00, 0x40, 0x03, 0x98, 0x03, 0x40, 0x51, 0x00, 0x00,
-0x05, 0xcf, 0x80, 0x08, 0x46, 0xaf, 0xde, 0x53, 0x40, 0x32, 0xc0, 0x0b, 0x58, 0xa5, 0x08, 0x0c,
-0x40, 0x51, 0x98, 0x00, 0x40, 0x9e, 0x28, 0x00, 0x41, 0xe3, 0x04, 0x03, 0x40, 0x84, 0x90, 0x00,
-0x40, 0x7f, 0x14, 0x03, 0x40, 0x24, 0x1c, 0x00, 0x04, 0x3f, 0x80, 0x15, 0x46, 0x4a, 0x4b, 0xee,
-0x40, 0x01, 0x24, 0x0b, 0x58, 0x42, 0x0a, 0x44, 0x40, 0x80, 0x14, 0x00, 0x40, 0xa1, 0x90, 0x00,
-0x41, 0xc2, 0x98, 0x03, 0x41, 0xee, 0x20, 0x03, 0x40, 0x95, 0x04, 0x00, 0x40, 0x14, 0xf8, 0x00,
-0x04, 0x2f, 0x80, 0x12, 0x46, 0x04, 0xbd, 0xec, 0x40, 0x70, 0xf0, 0x0b, 0x58, 0x00, 0x0f, 0xa9,
-0x40, 0x13, 0xa0, 0x00, 0x40, 0x41, 0x00, 0x00, 0x40, 0xa4, 0x14, 0x03, 0x41, 0xc5, 0x04, 0x03,
-0x40, 0x32, 0x18, 0x00, 0x40, 0x61, 0xf0, 0x00, 0x04, 0x9f, 0x80, 0x0f, 0x46, 0x7f, 0x6b, 0xb4,
-0x41, 0xe3, 0x54, 0x0b, 0x58, 0x73, 0x8b, 0x60, 0x40, 0x6f, 0x04, 0x00, 0x40, 0x24, 0x9c, 0x00,
-0x40, 0x00, 0xa0, 0x03, 0x40, 0xa0, 0x18, 0x03, 0x40, 0x41, 0x14, 0x00, 0x40, 0x52, 0x28, 0x00,
-0x05, 0xef, 0x80, 0x0c, 0x46, 0x3b, 0xeb, 0xfb, 0x41, 0xc2, 0xc0, 0x0b, 0x58, 0x31, 0x8c, 0x70,
-0x40, 0x5e, 0x18, 0x00, 0x40, 0x9f, 0x0c, 0x00, 0x40, 0x73, 0x04, 0x03, 0x40, 0x04, 0xa0, 0x00,
-0x40, 0x23, 0x94, 0x03, 0x40, 0x40, 0x08, 0x00, 0x05, 0xcf, 0x80, 0x09, 0x46, 0xa2, 0x89, 0xb7,
-0x40, 0x82, 0x24, 0x0b, 0x58, 0xa5, 0x0e, 0xc6, 0x40, 0x44, 0x14, 0x00, 0x40, 0x3e, 0x28, 0x00,
-0x41, 0xe2, 0x98, 0x03, 0x40, 0x7f, 0x10, 0x03, 0x40, 0x91, 0x84, 0x00, 0x40, 0x14, 0x9c, 0x00,
-0x04, 0x8f, 0x80, 0x16, 0x46, 0x2e, 0xaa, 0x12, 0x40, 0x00, 0xf0, 0x0b, 0x58, 0x21, 0x07, 0xfa,
-0x40, 0x10, 0x10, 0x00, 0x40, 0xa4, 0x08, 0x00, 0x41, 0xc2, 0x14, 0x03, 0x41, 0xee, 0x04, 0x03,
-0x40, 0x35, 0x18, 0x00, 0x40, 0x61, 0xf8, 0x00, 0x04, 0x9f, 0x80, 0x13, 0x46, 0x0d, 0x4e, 0xf3,
-0x40, 0x73, 0x54, 0x0b, 0x58, 0x00, 0x00, 0x85, 0x40, 0x63, 0x84, 0x00, 0x40, 0x84, 0x80, 0x00,
-0x40, 0xa0, 0x90, 0x03, 0x41, 0xc5, 0x18, 0x03, 0x40, 0x24, 0x14, 0x00, 0x40, 0x51, 0x70, 0x00,
-0x04, 0x7f, 0x80, 0x10, 0x46, 0x30, 0x48, 0x81, 0x41, 0xe2, 0xc0, 0x0b, 0x58, 0x31, 0x8d, 0x05,
-0x40, 0x5f, 0x18, 0x00, 0x40, 0x93, 0x8c, 0x00, 0x40, 0x03, 0x04, 0x03, 0x40, 0xa0, 0x14, 0x03,
-0x40, 0x84, 0x90, 0x00, 0x40, 0x44, 0x28, 0x00, 0x05, 0xef, 0x80, 0x0d, 0x46, 0x2d, 0x9d, 0x4d,
-0x41, 0xc2, 0x24, 0x0b, 0x58, 0x21, 0x00, 0x39, 0x40, 0x4e, 0x14, 0x00, 0x40, 0x3f, 0x08, 0x00,
-0x40, 0x72, 0x98, 0x03, 0x40, 0x91, 0x84, 0x00, 0x40, 0x03, 0x90, 0x03, 0x40, 0xa4, 0x80, 0x00,
-0x05, 0xcf, 0x80, 0x0a, 0x46, 0x8e, 0x6d, 0xb9, 0x40, 0x15, 0x70, 0x0b, 0x58, 0x84, 0x09, 0xe5,
-0x40, 0x90, 0x90, 0x00, 0x40, 0x2e, 0x20, 0x00, 0x41, 0xe2, 0x14, 0x03, 0x40, 0x31, 0x18, 0x00,
-0x40, 0x7f, 0x24, 0x03, 0x40, 0x01, 0x9c, 0x00, 0x04, 0x6f, 0x80, 0x07, 0x46, 0x11, 0xfa, 0x27,
-0x40, 0xa0, 0x54, 0x0b, 0x58, 0x10, 0x8c, 0xf8, 0x40, 0xa5, 0x24, 0x00, 0x40, 0x83, 0x04, 0x00,
-0x41, 0xc4, 0x90, 0x03, 0x40, 0x24, 0x14, 0x00, 0x41, 0xee, 0x28, 0x03, 0x40, 0x31, 0x78, 0x00,
-0x04, 0x6f, 0x80, 0x14, 0x46, 0x0c, 0x4a, 0xc5, 0x40, 0x71, 0xc0, 0x0b, 0x58, 0x00, 0x06, 0x65,
-0x40, 0x73, 0xa8, 0x00, 0x40, 0x53, 0x00, 0x00, 0x40, 0x15, 0x24, 0x03, 0x40, 0x82, 0x90, 0x00,
-0x41, 0xc0, 0x9c, 0x03, 0x40, 0x24, 0x70, 0x00, 0x04, 0x0f, 0x80, 0x16, 0x41, 0xe1, 0x24, 0x0b,
-0x46, 0x3f, 0x42, 0x92, 0x40, 0x2f, 0x1c, 0x00, 0x40, 0x45, 0x28, 0x05, 0x58, 0x31, 0x82, 0x44,
-0x40, 0x60, 0x0c, 0x00, 0x40, 0x51, 0x10, 0x04, 0x40, 0x13, 0x24, 0x00, 0x40, 0x82, 0x9c, 0x03,
-0x41, 0xc0, 0xa0, 0x00, 0x04, 0x0f, 0x80, 0x0f, 0x41, 0xee, 0x68, 0x0b, 0x46, 0x34, 0x32, 0xaf,
-0x41, 0xef, 0x08, 0x00, 0x40, 0x43, 0x9c, 0x05, 0x58, 0x31, 0x8f, 0x97, 0x40, 0x50, 0x0c, 0x00,
-0x40, 0x6f, 0x10, 0x04, 0x40, 0x12, 0xa8, 0x00, 0x40, 0x93, 0x08, 0x03, 0x40, 0x80, 0xa4, 0x00,
-0x04, 0x3f, 0x80, 0x08, 0x41, 0xc4, 0x58, 0x0b, 0x46, 0x0a, 0xb9, 0x42, 0x40, 0x8e, 0x78, 0x00,
-0x40, 0xa1, 0x08, 0x05, 0x58, 0x00, 0x03, 0xa7, 0x40, 0x41, 0x80, 0x00, 0x40, 0x54, 0x28, 0x04,
-0x40, 0x62, 0x1c, 0x00, 0x40, 0x12, 0xf8, 0x03, 0x40, 0x93, 0x04, 0x00, 0x04, 0x7f, 0x80, 0x11,
-0x41, 0xc4, 0xc4, 0x0b, 0x46, 0x3f, 0xc9, 0x3a, 0x40, 0x9e, 0x20, 0x00, 0x40, 0xaf, 0x78, 0x05,
-0x58, 0x31, 0x80, 0x39, 0x40, 0x03, 0x8c, 0x00, 0x40, 0x44, 0xa8, 0x04, 0x40, 0x50, 0x08, 0x00,
-0x40, 0x62, 0x20, 0x03, 0x40, 0x12, 0x98, 0x00, 0x04, 0x2f, 0x80, 0x0a, 0x41, 0xc0, 0xac, 0x0b,
-0x46, 0x76, 0x55, 0xb5, 0x41, 0xce, 0x24, 0x00, 0x40, 0xa4, 0x20, 0x05, 0x58, 0x73, 0x89, 0xc3,
-0x40, 0x31, 0x1c, 0x00, 0x40, 0x0e, 0x28, 0x04, 0x40, 0x41, 0xf8, 0x00, 0x40, 0x50, 0x24, 0x03,
-0x40, 0x62, 0x14, 0x00, 0x04, 0x7f, 0x80, 0x13, 0x40, 0x13, 0x68, 0x0b, 0x46, 0x28, 0xf0, 0xcc,
-0x40, 0x60, 0xf0, 0x00, 0x40, 0xa4, 0xa4, 0x05, 0x58, 0x21, 0x0c, 0x92, 0x40, 0x33, 0x88, 0x00,
-0x40, 0x03, 0x28, 0x04, 0x41, 0xe1, 0xa0, 0x00, 0x40, 0x40, 0x70, 0x03, 0x40, 0x5f, 0x10, 0x00,
-0x04, 0x7f, 0x80, 0x0c, 0x40, 0x12, 0xd8, 0x0b, 0x46, 0xaf, 0xfe, 0xff, 0x40, 0x50, 0x98, 0x00,
-0x40, 0x8e, 0x70, 0x05, 0x58, 0xa5, 0x04, 0x7d, 0x40, 0x23, 0xa8, 0x00, 0x40, 0x32, 0xa0, 0x04,
-0x40, 0x01, 0x24, 0x00, 0x41, 0xe1, 0x98, 0x03, 0x40, 0x40, 0x78, 0x00, 0x04, 0xaf, 0x80, 0x15,
-0x40, 0x12, 0x44, 0x0b, 0x46, 0x78, 0x58, 0x45, 0x40, 0x40, 0x94, 0x00, 0x40, 0x93, 0x18, 0x05,
-0x58, 0x73, 0x8d, 0xd1, 0x40, 0x85, 0x1c, 0x00, 0x40, 0x22, 0x24, 0x04, 0x40, 0x34, 0x70, 0x00,
-0x40, 0x01, 0x14, 0x03, 0x41, 0xe1, 0x80, 0x00, 0x04, 0x1f, 0x80, 0x0e, 0x41, 0xcf, 0x2c, 0x0b,
-0x46, 0x76, 0xfa, 0x87, 0x41, 0xce, 0x10, 0x00, 0x40, 0xa2, 0x94, 0x05, 0x58, 0x73, 0x8e, 0x4f,
-0x40, 0x90, 0x9c, 0x00, 0x40, 0x8e, 0x28, 0x04, 0x40, 0x24, 0x98, 0x00, 0x40, 0x04, 0x10, 0x03,
-0x41, 0xe1, 0x00, 0x00, 0x04, 0x7f, 0x80, 0x07, 0x40, 0x3f, 0x68, 0x0b, 0x46, 0x1f, 0xe2, 0xce,
-0x40, 0x21, 0xf0, 0x00, 0x40, 0xa2, 0x10, 0x05, 0x58, 0x10, 0x86, 0xe0, 0x40, 0x93, 0x84, 0x00,
-0x40, 0x61, 0x28, 0x04, 0x40, 0x84, 0x94, 0x00, 0x40, 0x03, 0x70, 0x03, 0x41, 0xe4, 0x00, 0x00,
-0x04, 0x5f, 0x80, 0x10, 0x40, 0x3f, 0x58, 0x0b, 0x46, 0x1a, 0x30, 0x14, 0x40, 0x81, 0x88, 0x00,
-0x40, 0x7e, 0x70, 0x05, 0x58, 0x10, 0x83, 0x14, 0x40, 0x92, 0x84, 0x00, 0x40, 0xa4, 0x1c, 0x04,
-0x40, 0x64, 0x90, 0x00, 0x40, 0x05, 0x08, 0x03, 0x41, 0xe3, 0x00, 0x00, 0x04, 0x1f, 0x80, 0x09,
-0x40, 0x4f, 0x44, 0x0b, 0x46, 0x34, 0xe0, 0x81, 0x40, 0x62, 0x20, 0x00, 0x40, 0x71, 0x08, 0x05,
-0x58, 0x31, 0x81, 0xa1, 0x40, 0x90, 0x8c, 0x00, 0x40, 0x53, 0x1c, 0x04, 0x40, 0x04, 0xf0, 0x00,
-0x40, 0xa2, 0xa0, 0x03, 0x41, 0xe0, 0x28, 0x00, 0x04, 0x9f, 0x80, 0x12, 0x40, 0x4f, 0x2c, 0x0b,
-0x46, 0x1f, 0x75, 0x37, 0x40, 0x42, 0x18, 0x00, 0x40, 0x74, 0x20, 0x05, 0x58, 0x10, 0x8e, 0x82,
-0x41, 0xc4, 0x84, 0x00, 0x40, 0x32, 0x1c, 0x04, 0x40, 0x5e, 0x08, 0x00, 0x40, 0xa1, 0x98, 0x03,
-0x40, 0x02, 0xa8, 0x00, 0x04, 0x9f, 0x80, 0x0b, 0x41, 0xe0, 0x68, 0x0b, 0x46, 0x1b, 0xd3, 0xaf,
-0x41, 0xef, 0x10, 0x00, 0x40, 0x73, 0x18, 0x05, 0x58, 0x10, 0x82, 0x35, 0x40, 0x3f, 0x1c, 0x04,
-0x41, 0xc4, 0x84, 0x00, 0x40, 0x21, 0x90, 0x03, 0x41, 0xce, 0x20, 0x00, 0x40, 0xae, 0x08, 0x00,
-0x04, 0x5f, 0x80, 0x14, 0x40, 0xa5, 0x58, 0x0b, 0x46, 0x02, 0xad, 0x7d, 0x40, 0x25, 0x78, 0x00,
-0x40, 0x12, 0x10, 0x05, 0x58, 0x00, 0x02, 0xbb, 0x40, 0x71, 0x04, 0x04, 0x40, 0x92, 0x80, 0x00,
-0x40, 0x94, 0x98, 0x00, 0x40, 0x63, 0xf8, 0x03, 0x40, 0x34, 0x98, 0x00, 0x04, 0x1f, 0x80, 0x0d,
-0x40, 0x81, 0xc4, 0x0b, 0x46, 0x5e, 0xb8, 0x6d, 0x40, 0x34, 0x08, 0x00, 0x40, 0x0f, 0x78, 0x05,
-0x58, 0x52, 0x83, 0x91, 0x40, 0x80, 0x94, 0x00, 0x40, 0x71, 0x80, 0x04, 0x04, 0x5f, 0x80, 0x02,
-0x04, 0x1f, 0x80, 0x01, 0x40, 0x64, 0x10, 0x00, 0x40, 0x73, 0x88, 0x03, 0x40, 0x43, 0x1c, 0x00,
-0x40, 0x61, 0x94, 0x00, 0x40, 0x5f, 0x04, 0x00, 0x05, 0xef, 0x80, 0x03, 0x04, 0x1f, 0x80, 0x04,
-0x40, 0x3f, 0x0c, 0x00, 0x40, 0x02, 0x2c, 0x0b, 0x05, 0xef, 0x80, 0x05, 0x40, 0x43, 0x00, 0x00,
-0x40, 0x00, 0x88, 0x00, 0x14, 0x5f, 0x00, 0x00, 0x14, 0x4f, 0x00, 0x01, 0x14, 0x3f, 0x00, 0x02,
-0x14, 0x0f, 0x00, 0x03, 0x44, 0x10, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x17, 0x44, 0x20, 0x00, 0x40,
-0x49, 0xf7, 0xac, 0xac, 0x04, 0x2f, 0x80, 0x05, 0x44, 0x10, 0x00, 0x00, 0x14, 0x11, 0x00, 0x16,
-0x51, 0xff, 0x80, 0xa4, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
-0x51, 0xff, 0xff, 0xf8, 0x04, 0x20, 0x00, 0x16, 0x50, 0x70, 0x00, 0x18, 0x58, 0x60, 0x00, 0x00,
+0x58, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x04, 0x10, 0x80, 0x01, 0x04, 0x00, 0x00, 0x00,
+0x49, 0xff, 0xff, 0x76, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xf7, 0x80, 0x49, 0xff, 0xfb, 0x78,
+0x2e, 0x17, 0xe3, 0x46, 0x44, 0x50, 0x00, 0x01, 0x2e, 0x07, 0xf8, 0x5d, 0x4c, 0x12, 0x80, 0x08,
+0x44, 0x40, 0x00, 0x00, 0x40, 0x02, 0x00, 0x06, 0x49, 0x00, 0x12, 0x1a, 0x2e, 0x57, 0xe1, 0x24,
+0x45, 0xe0, 0x03, 0xe8, 0x42, 0x12, 0xf8, 0x24, 0x3e, 0x0f, 0xf7, 0x80, 0x49, 0xff, 0xfc, 0x50,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x44, 0x00, 0x00, 0x0f, 0x49, 0xff, 0xc1, 0x1c, 0x44, 0x00, 0x00, 0x0f,
+0x49, 0xff, 0xc1, 0x70, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xc1, 0x84, 0x3e, 0x0f, 0xf7, 0x80,
+0x3e, 0x1f, 0x37, 0xbc, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfb, 0x22, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0xb8, 0x3e, 0x0f, 0xf7, 0xa8, 0x49, 0xf7, 0xbd, 0x30, 0x44, 0x10, 0x00, 0x00,
+0x3e, 0x17, 0xe2, 0x1c, 0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x80, 0x04, 0x40, 0x00, 0x00,
+0x44, 0x5f, 0xf8, 0xff, 0x40, 0x32, 0x14, 0x02, 0x14, 0x30, 0x00, 0x00, 0x04, 0x20, 0x00, 0x00,
+0x58, 0x11, 0x02, 0x00, 0x14, 0x10, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xf8, 0x01, 0xe0, 0x00, 0x00,
+0x3e, 0x6f, 0xf7, 0xa8, 0x11, 0xe3, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00, 0x00, 0x80, 0x00, 0x4c,
+0x50, 0x10, 0x00, 0x44, 0x10, 0x83, 0x00, 0x01, 0x00, 0x50, 0x00, 0x50, 0x10, 0x53, 0x00, 0x03,
+0x00, 0x40, 0x00, 0x54, 0x10, 0x43, 0x00, 0x06, 0x00, 0x20, 0x00, 0x58, 0x50, 0x03, 0x00, 0x0c,
+0x10, 0x23, 0x00, 0x07, 0x44, 0x20, 0x00, 0x08, 0x00, 0x33, 0x80, 0x5c, 0x10, 0x33, 0x00, 0x0a,
+0x49, 0xf7, 0xbc, 0xd8, 0x50, 0x13, 0x80, 0x04, 0x44, 0x20, 0x00, 0x40, 0x50, 0x03, 0x00, 0x14,
+0x49, 0xf7, 0xbc, 0xd0, 0x49, 0xff, 0xc9, 0x04, 0x46, 0x06, 0x01, 0x60, 0x46, 0x10, 0x1f, 0xf8,
+0x58, 0x10, 0x80, 0x7f, 0x14, 0x10, 0x00, 0x20, 0x50, 0x7f, 0x80, 0x07, 0x00, 0x03, 0x00, 0x06,
+0x58, 0x13, 0x80, 0x00, 0x3e, 0x2f, 0xf7, 0xa0, 0x49, 0xff, 0xbc, 0xae, 0x00, 0x03, 0x00, 0x07,
+0x58, 0x13, 0x80, 0x00, 0x3e, 0x2f, 0xf7, 0x98, 0x49, 0xff, 0xb6, 0x10, 0x44, 0x00, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
+0x04, 0x60, 0x00, 0x02, 0x44, 0x10, 0x00, 0x03, 0x04, 0x83, 0x00, 0x08, 0x58, 0x70, 0x00, 0x00,
+0x50, 0x03, 0x00, 0x24, 0x4c, 0x80, 0x80, 0x12, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x82, 0x80, 0x12,
+0x4e, 0x82, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x04, 0x00, 0x00, 0x00,
+0x49, 0xff, 0xfe, 0x8e, 0x48, 0x00, 0x00, 0x08, 0x49, 0xff, 0xff, 0x8e, 0x48, 0x00, 0x00, 0x04,
+0x49, 0xff, 0xff, 0x14, 0x00, 0x33, 0x00, 0x0b, 0x54, 0x11, 0x80, 0x01, 0x4e, 0x13, 0x00, 0x06,
+0x58, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x2c, 0x01, 0xe3, 0x00, 0x07, 0x50, 0x43, 0x00, 0x0c,
+0x44, 0x50, 0x00, 0x00, 0x44, 0x30, 0x00, 0x18, 0x44, 0x2f, 0xff, 0xed, 0x58, 0x11, 0x80, 0x00,
+0x14, 0x52, 0x00, 0x02, 0x14, 0x82, 0x00, 0x00, 0x14, 0x02, 0x00, 0x01, 0x12, 0x33, 0x00, 0x00,
+0x10, 0x23, 0x00, 0x04, 0x10, 0x13, 0x00, 0x08, 0x11, 0xe3, 0x00, 0x05, 0x44, 0x50, 0x00, 0x01,
+0x04, 0x43, 0x80, 0x02, 0x44, 0x0f, 0xe0, 0x00, 0x10, 0x53, 0x80, 0x10, 0x12, 0x02, 0x00, 0x01,
+0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xd6, 0x44, 0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0xa0, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x00, 0x30, 0x80, 0x01,
+0x44, 0x50, 0x00, 0x03, 0x4c, 0x32, 0xc0, 0x06, 0x02, 0x20, 0x00, 0x09, 0x49, 0x00, 0x17, 0x2e,
+0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x94, 0x54, 0x70, 0x80, 0xff, 0x40, 0x13, 0x80, 0x10,
+0x58, 0x90, 0x00, 0x00, 0x55, 0xc1, 0x00, 0xff, 0x4e, 0x14, 0x00, 0x06, 0x44, 0x00, 0xff, 0xff,
+0x48, 0x00, 0x00, 0x4c, 0x50, 0x6f, 0x80, 0x5c, 0x50, 0xaf, 0x80, 0x0c, 0x50, 0x8f, 0x80, 0x50,
+0x58, 0x33, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x58, 0x15, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00,
+0x14, 0x8f, 0x80, 0x01, 0x49, 0xff, 0xbe, 0x30, 0x58, 0x14, 0x80, 0x00, 0x44, 0x20, 0x00, 0x10,
+0x50, 0x0f, 0x80, 0x30, 0x49, 0xf7, 0xbc, 0x0e, 0x50, 0x14, 0x80, 0x10, 0x44, 0x20, 0x00, 0x08,
+0x50, 0x0f, 0x80, 0x40, 0x49, 0xf7, 0xbc, 0x06, 0x50, 0x14, 0x80, 0x18, 0x44, 0x20, 0x00, 0x08,
+0x50, 0x0f, 0x80, 0x48, 0x49, 0xf7, 0xbb, 0xfe, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x01,
+0x58, 0x15, 0x00, 0x00, 0x58, 0x33, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x10, 0x55, 0x00, 0x18,
+0x10, 0x53, 0x00, 0x01, 0x10, 0x53, 0x00, 0x03, 0x11, 0xc3, 0x00, 0x07, 0x49, 0xff, 0xb6, 0x06,
+0x00, 0x13, 0x00, 0x09, 0x58, 0x03, 0x80, 0x00, 0x58, 0x2e, 0x00, 0x00, 0x50, 0x3f, 0x80, 0x30,
+0x49, 0xff, 0xbd, 0x5e, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x6c, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x7f, 0xf7, 0xa8,
+0x04, 0x63, 0x80, 0x29, 0x4e, 0x62, 0x00, 0x44, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x60, 0x40, 0x0a,
+0x44, 0x00, 0x00, 0x03, 0x49, 0xf7, 0xdd, 0x0c, 0x10, 0x63, 0x80, 0xb6, 0x48, 0x00, 0x00, 0x38,
+0x44, 0x10, 0x00, 0x02, 0x4c, 0x60, 0xc0, 0x34, 0x04, 0x33, 0x80, 0x2c, 0x54, 0x21, 0x80, 0x04,
+0x4e, 0x22, 0x00, 0x08, 0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x24, 0x48, 0x00, 0x00, 0x06,
+0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x28, 0x04, 0x50, 0x00, 0x00, 0x58, 0x42, 0x80, 0x04,
+0x14, 0x40, 0x00, 0x00, 0x3c, 0x0d, 0xfe, 0x15, 0x4e, 0x02, 0x00, 0x1a, 0x49, 0xff, 0xc0, 0x2c,
+0x3c, 0x1d, 0xfe, 0x16, 0x54, 0x00, 0x80, 0x04, 0x4e, 0x02, 0x00, 0x08, 0x46, 0x08, 0x00, 0x23,
+0x58, 0x00, 0x00, 0x28, 0x48, 0x00, 0x00, 0x06, 0x46, 0x08, 0x00, 0x23, 0x58, 0x00, 0x00, 0x24,
+0x04, 0x20, 0x00, 0x00, 0x59, 0xe1, 0x00, 0x04, 0x15, 0xe0, 0x00, 0x00, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x51, 0xff, 0xff, 0xf8,
+0x04, 0x10, 0x00, 0x0b, 0x04, 0x30, 0x00, 0x06, 0x0a, 0x80, 0x80, 0x05, 0x58, 0x60, 0x00, 0x00,
+0x3e, 0x0f, 0xf7, 0xa0, 0x44, 0x20, 0x00, 0x06, 0x00, 0xa1, 0x80, 0x04, 0x04, 0x91, 0x80, 0x03,
+0x49, 0xf7, 0xbc, 0x1e, 0x4e, 0x03, 0x00, 0xa0, 0x04, 0x03, 0x00, 0x0c, 0x3e, 0x1f, 0xe1, 0x28,
+0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbc, 0x14, 0x4e, 0x02, 0x00, 0x0c, 0x04, 0x03, 0x00, 0x0c,
+0x3e, 0x1f, 0xe1, 0x30, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xbc, 0x0a, 0x4e, 0x03, 0x00, 0x8c,
+0x04, 0x53, 0x00, 0x0c, 0x02, 0x43, 0x00, 0x09, 0x50, 0x22, 0x80, 0x06, 0x50, 0x02, 0x7f, 0xfa,
+0x12, 0x03, 0x00, 0x09, 0x14, 0x23, 0x00, 0x0c, 0x2e, 0x17, 0xf8, 0x5d, 0x4e, 0x12, 0x00, 0x1a,
+0x2e, 0x77, 0xf8, 0x5c, 0x4e, 0x72, 0x00, 0x16, 0x55, 0xe5, 0x00, 0x02, 0x4f, 0xe2, 0x00, 0x12,
+0x54, 0x34, 0x24, 0x00, 0x44, 0x80, 0x20, 0x00, 0x4c, 0x34, 0x40, 0x08, 0x58, 0x03, 0x00, 0x00,
+0x49, 0xff, 0xfb, 0x9a, 0x48, 0x00, 0x00, 0x06, 0x44, 0x10, 0x00, 0x02, 0x3e, 0x17, 0xe2, 0x1c,
+0x04, 0x83, 0x00, 0x0c, 0x02, 0x53, 0x00, 0x09, 0x50, 0x74, 0x00, 0x02, 0x50, 0x42, 0xff, 0xfe,
+0x54, 0x24, 0xa0, 0x00, 0x12, 0x43, 0x00, 0x09, 0x14, 0x73, 0x00, 0x0c, 0x4e, 0x22, 0x00, 0x08,
+0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20, 0x54, 0xa5, 0x00, 0x04,
+0x4e, 0xa2, 0x00, 0x20, 0x00, 0x03, 0x00, 0x40, 0x50, 0x1f, 0x80, 0x07, 0x58, 0x2f, 0x80, 0x00,
+0x49, 0xff, 0xb4, 0x6c, 0x58, 0x9f, 0x80, 0x00, 0x58, 0x80, 0x00, 0x00, 0x4e, 0x03, 0x00, 0x3c,
+0x58, 0x03, 0x00, 0x00, 0x58, 0x1f, 0x80, 0x00, 0x49, 0xff, 0xfc, 0xba, 0x4e, 0x02, 0x00, 0x34,
+0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00, 0x49, 0xff, 0xff, 0x26, 0x48, 0x00, 0x00, 0x2c,
+0x55, 0xe4, 0x98, 0x00, 0x40, 0x0f, 0x2c, 0x09, 0x4e, 0x02, 0x00, 0x0e, 0x44, 0x30, 0x00, 0x01,
+0x4c, 0x01, 0xc0, 0x22, 0x58, 0x03, 0x00, 0x00, 0x58, 0x13, 0x80, 0x00, 0x49, 0xff, 0xfe, 0x9c,
+0x48, 0x00, 0x00, 0x1a, 0x40, 0x94, 0x8c, 0x08, 0x40, 0x94, 0xd8, 0x09, 0x4e, 0x92, 0x00, 0x14,
+0x58, 0x04, 0x00, 0x00, 0x3e, 0x1f, 0xe1, 0x38, 0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xbb, 0x88,
+0x4e, 0x02, 0x00, 0x0a, 0x58, 0x04, 0x00, 0x00, 0x3e, 0x1f, 0xe1, 0x3c, 0x44, 0x20, 0x00, 0x02,
+0x49, 0xf7, 0xbb, 0x7e, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x50, 0x31, 0x00, 0x10, 0x40, 0x10, 0x88, 0x09,
+0x58, 0x41, 0x80, 0x00, 0x44, 0x50, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00,
+0x50, 0x52, 0x80, 0x01, 0x10, 0x62, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x01, 0x10, 0xa2, 0x00, 0x3c,
+0x01, 0xc0, 0x00, 0x02, 0x11, 0xc2, 0x00, 0x78, 0x00, 0x60, 0x00, 0x03, 0x50, 0x00, 0x00, 0x04,
+0x10, 0x62, 0x00, 0xb4, 0x50, 0x42, 0x00, 0x01, 0x40, 0xf2, 0x84, 0x06, 0x4e, 0xf3, 0xff, 0xe8,
+0x50, 0x50, 0x80, 0x07, 0x40, 0x02, 0x88, 0x08, 0x50, 0x40, 0x80, 0x10, 0x14, 0x0f, 0x80, 0x03,
+0x40, 0x21, 0x10, 0x00, 0x58, 0x90, 0x80, 0x00, 0x3e, 0x0f, 0xcd, 0x94, 0x3f, 0xef, 0xcd, 0x68,
+0x48, 0x00, 0x00, 0x60, 0x40, 0xa4, 0x85, 0x17, 0x00, 0x71, 0x7f, 0xff, 0x00, 0x61, 0x00, 0x3b,
+0x00, 0x51, 0x00, 0x77, 0x00, 0x41, 0x00, 0xb3, 0x4e, 0x83, 0x00, 0x26, 0x38, 0x8f, 0x2a, 0x02,
+0x38, 0xa0, 0x14, 0x00, 0x38, 0x50, 0x10, 0x00, 0x10, 0xaf, 0x80, 0x00, 0x38, 0x40, 0x1c, 0x00,
+0x01, 0xcf, 0x80, 0x00, 0x38, 0x70, 0x18, 0x00, 0x40, 0xa4, 0x20, 0x09, 0x40, 0x64, 0x40, 0x09,
+0x40, 0x63, 0x70, 0x03, 0x40, 0x55, 0x14, 0x03, 0x41, 0xc4, 0x10, 0x03, 0x40, 0x84, 0x60, 0x09,
+0x40, 0x74, 0x1c, 0x03, 0x54, 0x63, 0x00, 0xff, 0x54, 0x52, 0x80, 0xff, 0x54, 0x4e, 0x00, 0xff,
+0x48, 0x00, 0x00, 0x12, 0x5c, 0xf0, 0x80, 0x07, 0x4e, 0xf3, 0x00, 0x0e, 0x44, 0xa0, 0x00, 0x04,
+0x4c, 0x85, 0x40, 0x0a, 0x38, 0x60, 0x18, 0x00, 0x38, 0x50, 0x14, 0x00, 0x38, 0x40, 0x10, 0x00,
+0x38, 0x70, 0x1c, 0x00, 0x00, 0x81, 0x80, 0x00, 0x50, 0x94, 0x80, 0x01, 0x40, 0x73, 0xa0, 0x03,
+0x10, 0x71, 0x00, 0x00, 0x00, 0x71, 0x80, 0x3c, 0x40, 0x63, 0x1c, 0x03, 0x10, 0x61, 0x00, 0x3c,
+0x00, 0x61, 0x80, 0x78, 0x41, 0xc2, 0x98, 0x03, 0x11, 0xc1, 0x00, 0x78, 0x00, 0x51, 0x80, 0xb4,
+0x50, 0x31, 0x80, 0x01, 0x40, 0x42, 0x14, 0x03, 0x10, 0x41, 0x00, 0xb4, 0x50, 0x21, 0x00, 0x01,
+0x05, 0xcf, 0x80, 0x03, 0x40, 0xf4, 0xf0, 0x06, 0x4e, 0xf3, 0xff, 0x9e, 0x51, 0xff, 0x80, 0x14,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xbc,
+0x14, 0x5f, 0x80, 0x0c, 0x58, 0x61, 0x80, 0x00, 0x04, 0x72, 0x80, 0x00, 0x14, 0x4f, 0x80, 0x0e,
+0x5c, 0xf3, 0x80, 0x10, 0x4e, 0xf3, 0x02, 0x58, 0x44, 0x30, 0x00, 0x10, 0x4c, 0x61, 0x80, 0x0a,
+0x44, 0x40, 0x00, 0x18, 0x4c, 0x62, 0x00, 0x06, 0x40, 0x51, 0x84, 0x08, 0x4c, 0x62, 0xc2, 0x4c,
+0x58, 0x71, 0x80, 0x00, 0x4c, 0x13, 0xc2, 0x48, 0x44, 0x10, 0x00, 0x00, 0x50, 0x9f, 0x80, 0x40,
+0x48, 0x00, 0x00, 0x10, 0x08, 0x82, 0x00, 0x04, 0x50, 0x31, 0x80, 0x01, 0x44, 0x70, 0x00, 0x04,
+0x18, 0x82, 0x80, 0x01, 0x4c, 0x33, 0xff, 0xf8, 0x50, 0x10, 0x80, 0x01, 0x4c, 0x11, 0x80, 0x0c,
+0x40, 0xa0, 0x88, 0x08, 0x40, 0x54, 0xa8, 0x00, 0x40, 0x40, 0x04, 0x00, 0x44, 0x30, 0x00, 0x00,
+0x48, 0xff, 0xff, 0xea, 0x58, 0x01, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x50, 0x2f, 0x80, 0x40,
+0x49, 0xff, 0xff, 0x18, 0x50, 0x4f, 0x80, 0x41, 0x40, 0x63, 0x08, 0x09, 0x14, 0x4f, 0x80, 0x04,
+0x50, 0x7f, 0x80, 0x40, 0x50, 0x1f, 0x80, 0x42, 0x50, 0xaf, 0x80, 0x43, 0x50, 0x53, 0x00, 0x0a,
+0x50, 0x9f, 0x80, 0x50, 0x40, 0x02, 0x88, 0x08, 0x14, 0x1f, 0x80, 0x06, 0x14, 0xaf, 0x80, 0x05,
+0x14, 0x7f, 0x80, 0x0d, 0x04, 0x8f, 0x80, 0x04, 0x14, 0x9f, 0x80, 0x01, 0x40, 0x03, 0x80, 0x00,
+0x58, 0x90, 0x80, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x43, 0x80, 0x00, 0x40, 0x31, 0x10, 0x03,
+0x18, 0x33, 0x80, 0x04, 0x00, 0x10, 0x00, 0x01, 0x01, 0xc4, 0x00, 0x00, 0x41, 0xe0, 0xf0, 0x03,
+0x19, 0xe4, 0x00, 0x04, 0x05, 0xef, 0x80, 0x01, 0x00, 0x50, 0x00, 0x02, 0x00, 0x44, 0x80, 0x00,
+0x40, 0x32, 0x14, 0x03, 0x18, 0x34, 0x80, 0x04, 0x00, 0x10, 0x00, 0x03, 0x00, 0x25, 0x00, 0x00,
+0x50, 0x00, 0x00, 0x3c, 0x41, 0xc0, 0x88, 0x03, 0x19, 0xc5, 0x00, 0x04, 0x4c, 0x7f, 0x7f, 0xdc,
+0x50, 0x03, 0x00, 0x05, 0x50, 0x7f, 0x80, 0x40, 0x40, 0x90, 0x08, 0x08, 0x50, 0x63, 0x80, 0x04,
+0x14, 0x9f, 0x80, 0x08, 0x14, 0x6f, 0x80, 0x0f, 0x48, 0x00, 0x01, 0x26, 0x00, 0x3f, 0x80, 0x49,
+0x00, 0x2f, 0x80, 0x45, 0x00, 0x4f, 0x80, 0x4b, 0x01, 0xcf, 0x80, 0x47, 0x00, 0x6f, 0x80, 0x48,
+0x00, 0x8f, 0x80, 0x4c, 0x00, 0x9f, 0x80, 0x46, 0x00, 0x7f, 0x80, 0x4a, 0x01, 0xef, 0x80, 0x4d,
+0x00, 0x5f, 0x80, 0x4e, 0x00, 0xaf, 0x80, 0x4f, 0x00, 0x1f, 0x80, 0x44, 0x10, 0x2f, 0x80, 0x46,
+0x10, 0x4f, 0x80, 0x49, 0x10, 0x3f, 0x80, 0x4b, 0x10, 0x9f, 0x80, 0x47, 0x10, 0x7f, 0x80, 0x48,
+0x10, 0x6f, 0x80, 0x4a, 0x11, 0xcf, 0x80, 0x44, 0x11, 0xef, 0x80, 0x4c, 0x10, 0x5f, 0x80, 0x4d,
+0x10, 0xaf, 0x80, 0x4e, 0x10, 0x8f, 0x80, 0x4f, 0x04, 0x2f, 0x80, 0x05, 0x04, 0x3f, 0x80, 0x06,
+0x04, 0x4f, 0x80, 0x04, 0x10, 0x1f, 0x80, 0x45, 0x50, 0x1f, 0x80, 0x40, 0x00, 0x00, 0x80, 0x00,
+0x3e, 0x5f, 0xce, 0x94, 0x38, 0x92, 0x80, 0x00, 0x04, 0x0f, 0x80, 0x01, 0x18, 0x90, 0x80, 0x04,
+0x00, 0x72, 0x00, 0x00, 0x38, 0x62, 0x9c, 0x00, 0x18, 0x62, 0x00, 0x04, 0x01, 0xc1, 0x80, 0x00,
+0x39, 0xe2, 0xf0, 0x00, 0x19, 0xe1, 0x80, 0x04, 0x00, 0xa1, 0x00, 0x00, 0x38, 0x82, 0xa8, 0x00,
+0x18, 0x81, 0x00, 0x04, 0x4c, 0x10, 0x7f, 0xe4, 0x04, 0x4f, 0x80, 0x08, 0x50, 0x5f, 0x80, 0x40,
+0x50, 0x32, 0x00, 0x10, 0x40, 0x22, 0x8c, 0x00, 0x04, 0x4f, 0x80, 0x06, 0x04, 0x3f, 0x80, 0x05,
+0x04, 0x6f, 0x80, 0x04, 0x00, 0x71, 0x00, 0x00, 0x01, 0xc2, 0x80, 0x00, 0x41, 0xe3, 0xf0, 0x03,
+0x19, 0xe2, 0x80, 0x04, 0x00, 0x11, 0x00, 0x01, 0x00, 0xa3, 0x00, 0x00, 0x40, 0x80, 0xa8, 0x03,
+0x18, 0x83, 0x00, 0x04, 0x04, 0x8f, 0x80, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x92, 0x00, 0x00,
+0x40, 0x70, 0x24, 0x03, 0x18, 0x72, 0x00, 0x04, 0x01, 0xe1, 0x00, 0x03, 0x01, 0xc1, 0x80, 0x00,
+0x50, 0x21, 0x00, 0x3c, 0x40, 0xaf, 0x70, 0x03, 0x18, 0xa1, 0x80, 0x04, 0x4c, 0x54, 0x7f, 0xdc,
+0x50, 0x3f, 0x80, 0x44, 0x50, 0x6f, 0x80, 0x48, 0x50, 0x5f, 0x80, 0x4c, 0x50, 0x2f, 0x80, 0x40,
+0x14, 0x3f, 0x80, 0x0b, 0x14, 0x6f, 0x80, 0x0a, 0x14, 0x5f, 0x80, 0x09, 0x14, 0x2f, 0x80, 0x07,
+0x05, 0xcf, 0x80, 0x07, 0x04, 0x4f, 0x80, 0x0b, 0x04, 0x5f, 0x80, 0x0a, 0x04, 0xaf, 0x80, 0x09,
+0x00, 0x3e, 0x00, 0x00, 0x01, 0xc2, 0x00, 0x00, 0x00, 0x42, 0x80, 0x00, 0x00, 0x55, 0x00, 0x00,
+0x3e, 0x8f, 0xd2, 0x94, 0x3e, 0x1f, 0xd0, 0x94, 0x3e, 0x9f, 0xcf, 0x94, 0x39, 0xe4, 0x0c, 0x00,
+0x38, 0x24, 0x94, 0x00, 0x38, 0x60, 0xf0, 0x00, 0x3e, 0x7f, 0xd1, 0x94, 0x38, 0xa3, 0x90, 0x00,
+0x58, 0x00, 0x80, 0x00, 0x40, 0x13, 0x78, 0x03, 0x10, 0x2f, 0x80, 0x08, 0x39, 0xe3, 0xf0, 0x00,
+0x58, 0x64, 0x80, 0x00, 0x38, 0x70, 0x0c, 0x00, 0x3e, 0x0f, 0xd1, 0x94, 0x38, 0x93, 0x0c, 0x00,
+0x38, 0x24, 0x70, 0x00, 0x38, 0x83, 0x70, 0x00, 0x38, 0x60, 0x0c, 0x00, 0x3f, 0xcf, 0xcf, 0x94,
+0x40, 0x30, 0xa8, 0x03, 0x3e, 0xaf, 0xd0, 0x94, 0x3e, 0x1f, 0xd2, 0x94, 0x38, 0x0e, 0x10, 0x00,
+0x39, 0xc5, 0x10, 0x00, 0x38, 0xa0, 0x90, 0x00, 0x00, 0x1f, 0x80, 0x08, 0x40, 0x21, 0x24, 0x03,
+0x40, 0x31, 0x84, 0x03, 0x3e, 0x4f, 0xd1, 0x94, 0x40, 0x14, 0x18, 0x03, 0x3e, 0x9f, 0xd0, 0x94,
+0x3e, 0x6f, 0xd2, 0x94, 0x38, 0x83, 0x14, 0x00, 0x38, 0x62, 0x14, 0x00, 0x38, 0x44, 0x94, 0x00,
+0x04, 0x9f, 0x80, 0x07, 0x40, 0x51, 0x70, 0x03, 0x18, 0x34, 0x80, 0x01, 0x40, 0x22, 0x98, 0x03,
+0x04, 0x6f, 0x80, 0x0b, 0x40, 0x7f, 0x1c, 0x03, 0x14, 0x9f, 0x80, 0x07, 0x40, 0x33, 0x80, 0x03,
+0x40, 0x90, 0xa8, 0x03, 0x18, 0x23, 0x00, 0x01, 0x04, 0x7f, 0x80, 0x0a, 0x40, 0x54, 0x90, 0x03,
+0x14, 0x6f, 0x80, 0x0b, 0x18, 0x53, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x09, 0x40, 0x01, 0xa0, 0x03,
+0x18, 0x00, 0x80, 0x01, 0x04, 0x4f, 0x80, 0x07, 0x04, 0x9f, 0x80, 0x0f, 0x14, 0x7f, 0x80, 0x0a,
+0x14, 0x1f, 0x80, 0x09, 0x4c, 0x44, 0xff, 0x7e, 0x04, 0x2f, 0x80, 0x08, 0x50, 0x31, 0x7f, 0xfc,
+0x14, 0x3f, 0x80, 0x08, 0x04, 0x9f, 0x80, 0x08, 0x4e, 0x93, 0xfe, 0xda, 0x00, 0x1f, 0x80, 0x47,
+0x00, 0x6f, 0x80, 0x46, 0x00, 0x7f, 0x80, 0x4a, 0x00, 0x2f, 0x80, 0x49, 0x00, 0x3f, 0x80, 0x45,
+0x00, 0x4f, 0x80, 0x4b, 0x00, 0x9f, 0x80, 0x48, 0x00, 0x5f, 0x80, 0x44, 0x10, 0x6f, 0x80, 0x47,
+0x10, 0x7f, 0x80, 0x48, 0x00, 0x6f, 0x80, 0x4e, 0x00, 0x7f, 0x80, 0x4f, 0x10, 0x1f, 0x80, 0x44,
+0x00, 0x1f, 0x80, 0x4d, 0x00, 0x0f, 0x80, 0x4c, 0x10, 0x3f, 0x80, 0x46, 0x10, 0x4f, 0x80, 0x49,
+0x10, 0x2f, 0x80, 0x4b, 0x10, 0x1f, 0x80, 0x4c, 0x10, 0x9f, 0x80, 0x4a, 0x10, 0x5f, 0x80, 0x45,
+0x10, 0x6f, 0x80, 0x4d, 0x10, 0x7f, 0x80, 0x4e, 0x04, 0x1f, 0x80, 0x0d, 0x04, 0x2f, 0x80, 0x04,
+0x04, 0x3f, 0x80, 0x05, 0x04, 0x4f, 0x80, 0x06, 0x10, 0x0f, 0x80, 0x4f, 0x3e, 0x0f, 0xce, 0x94,
+0x00, 0x50, 0x80, 0x00, 0x38, 0x60, 0x14, 0x00, 0x18, 0x60, 0x80, 0x04, 0x00, 0x71, 0x00, 0x00,
+0x38, 0x90, 0x1c, 0x00, 0x18, 0x91, 0x00, 0x04, 0x00, 0x52, 0x00, 0x00, 0x38, 0x60, 0x14, 0x00,
+0x04, 0x5f, 0x80, 0x01, 0x18, 0x62, 0x00, 0x04, 0x00, 0x71, 0x80, 0x00, 0x38, 0x90, 0x1c, 0x00,
+0x18, 0x91, 0x80, 0x04, 0x4c, 0x12, 0xff, 0xe6, 0x44, 0x00, 0x00, 0x00, 0x50, 0x7f, 0x80, 0x40,
+0x44, 0x60, 0x00, 0x3c, 0x48, 0x00, 0x00, 0x1a, 0x08, 0x41, 0x80, 0x01, 0x00, 0x51, 0x00, 0x00,
+0x50, 0x10, 0x80, 0x01, 0x40, 0x92, 0x14, 0x03, 0x44, 0x40, 0x00, 0x04, 0x18, 0x91, 0x00, 0x01,
+0x4c, 0x12, 0x7f, 0xf4, 0x50, 0x00, 0x00, 0x01, 0x4c, 0x00, 0xc0, 0x08, 0x44, 0x00, 0x00, 0x00,
+0x50, 0x6f, 0x80, 0x40, 0x48, 0x00, 0x00, 0x1e, 0x42, 0x30, 0x18, 0x24, 0x40, 0x20, 0x08, 0x08,
+0x50, 0x11, 0x80, 0x10, 0x40, 0x33, 0x84, 0x00, 0x40, 0x23, 0x88, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x48, 0xff, 0xff, 0xdc, 0x08, 0x41, 0x80, 0x01, 0x50, 0x10, 0x80, 0x01, 0x44, 0x90, 0x00, 0x04,
+0x18, 0x41, 0x00, 0x04, 0x4c, 0x14, 0xff, 0xf8, 0x50, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x80, 0x0e,
+0x40, 0x70, 0x08, 0x08, 0x40, 0x33, 0x1c, 0x00, 0x04, 0x7f, 0x80, 0x0e, 0x44, 0x10, 0x00, 0x00,
+0x40, 0x23, 0x80, 0x00, 0x48, 0xff, 0xff, 0xe8, 0x04, 0x9f, 0x80, 0x0c, 0x44, 0x00, 0x00, 0x10,
+0x14, 0x04, 0x80, 0x00, 0x51, 0xff, 0x81, 0x44, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x9c, 0x58, 0x80, 0x00, 0x00, 0x44, 0x00, 0x00, 0x10,
+0x14, 0x3f, 0x80, 0x03, 0x14, 0x2f, 0x80, 0x08, 0x14, 0x4f, 0x80, 0x09, 0x14, 0x5f, 0x80, 0x0a,
+0x4c, 0x30, 0x00, 0x0e, 0x44, 0x20, 0x00, 0x18, 0x4c, 0x31, 0x00, 0x0a, 0x41, 0xe0, 0x04, 0x08,
+0x4c, 0x3f, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xff, 0x48, 0x00, 0x00, 0xc2, 0x44, 0x60, 0x00, 0x00,
+0x50, 0x10, 0xff, 0xf8, 0x58, 0x03, 0x00, 0x00, 0x14, 0x1f, 0x80, 0x01, 0x14, 0x6f, 0x80, 0x17,
+0x49, 0xff, 0xcb, 0xdc, 0x14, 0x0f, 0x80, 0x02, 0x4e, 0x03, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xfe,
+0x48, 0x00, 0x00, 0xae, 0x50, 0x0f, 0x80, 0x54, 0x58, 0x14, 0x00, 0x00, 0x44, 0x20, 0x00, 0x08,
+0x49, 0xf7, 0xb8, 0x06, 0x04, 0x2f, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x02, 0x40, 0x91, 0x0c, 0x09,
+0x50, 0x14, 0x00, 0x08, 0x49, 0xf7, 0xb7, 0xfc, 0x44, 0x70, 0x00, 0x05, 0x54, 0x54, 0x80, 0xff,
+0x58, 0x34, 0x80, 0x00, 0x42, 0x32, 0x9c, 0x73, 0x40, 0x04, 0x8c, 0x08, 0x05, 0xef, 0x80, 0x02,
+0x50, 0x10, 0x7f, 0xf8, 0x52, 0x42, 0x80, 0x00, 0x54, 0x82, 0x00, 0xff, 0x55, 0xc1, 0x80, 0xff,
+0x40, 0xaf, 0x04, 0x00, 0x50, 0x64, 0xff, 0xff, 0x14, 0x8f, 0x80, 0x07, 0x15, 0xcf, 0x80, 0x04,
+0x14, 0x7f, 0x80, 0x05, 0x14, 0xaf, 0x80, 0x0b, 0x14, 0x6f, 0x80, 0x06, 0x04, 0x6f, 0x80, 0x06,
+0x04, 0xaf, 0x80, 0x0b, 0x05, 0xcf, 0x80, 0x04, 0x44, 0x90, 0x22, 0xac, 0x50, 0x8f, 0x80, 0x5c,
+0x50, 0x7f, 0x80, 0x4c, 0x48, 0x00, 0x00, 0x3c, 0x00, 0x40, 0x80, 0x07, 0x50, 0x63, 0x7f, 0xff,
+0x40, 0x3e, 0x10, 0x03, 0x10, 0x30, 0x80, 0x07, 0x4b, 0xe0, 0x24, 0x01, 0x58, 0x15, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x3c, 0x4b, 0xe0, 0x24, 0x01, 0x04, 0x3f, 0x80, 0x03,
+0x3c, 0x1d, 0xf3, 0x59, 0x04, 0x2f, 0x80, 0x08, 0x45, 0xe0, 0x00, 0x10, 0x50, 0x4f, 0x80, 0x44,
+0x58, 0x54, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x34, 0x15, 0xef, 0x80, 0x17, 0x49, 0xff, 0xfc, 0xfe,
+0x50, 0x1f, 0x80, 0x44, 0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x80, 0x54, 0x4b, 0xe0, 0x24, 0x01,
+0x58, 0x05, 0x00, 0x00, 0x44, 0x20, 0x00, 0x08, 0x58, 0x13, 0x80, 0x00, 0x4b, 0xe0, 0x24, 0x01,
+0x50, 0x2e, 0x7f, 0xff, 0x55, 0xc1, 0x00, 0xff, 0x50, 0xa5, 0x7f, 0xf8, 0x44, 0x20, 0x00, 0x08,
+0x50, 0x0f, 0x80, 0x34, 0x50, 0x1f, 0x80, 0x54, 0x4e, 0x64, 0xff, 0xc0, 0x05, 0xef, 0x80, 0x04,
+0x04, 0x4f, 0x80, 0x07, 0x04, 0x2f, 0x80, 0x05, 0x40, 0x3f, 0x10, 0x00, 0x50, 0x51, 0x7f, 0xff,
+0x54, 0x01, 0x80, 0xff, 0x44, 0x1f, 0xff, 0xff, 0x14, 0x5f, 0x80, 0x05, 0x14, 0x0f, 0x80, 0x04,
+0x4c, 0x50, 0xff, 0x9e, 0x04, 0x5f, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x0a, 0x14, 0x50, 0x80, 0x00,
+0x04, 0x2f, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x02, 0x04, 0x0f, 0x80, 0x09, 0x49, 0xf7, 0xb7, 0x68,
+0x04, 0x0f, 0x80, 0x02, 0x49, 0xff, 0xca, 0x5a, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x64,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0x3c, 0x44, 0x30, 0x00, 0x00,
+0x50, 0x50, 0x00, 0x08, 0x14, 0x30, 0x00, 0x00, 0x14, 0x30, 0x00, 0x01, 0x58, 0x42, 0x80, 0x00,
+0x18, 0x32, 0x00, 0x01, 0x44, 0x60, 0x01, 0x00, 0x50, 0x31, 0x80, 0x01, 0x4c, 0x33, 0x7f, 0xfa,
+0x44, 0x40, 0x00, 0x00, 0x58, 0x32, 0x00, 0x00, 0x40, 0x71, 0x88, 0xd7, 0x00, 0x72, 0x80, 0x00,
+0x50, 0x31, 0x80, 0x01, 0x40, 0x82, 0x1c, 0x00, 0x38, 0x60, 0x98, 0x00, 0x40, 0x44, 0x18, 0x00,
+0x54, 0x42, 0x00, 0xff, 0x40, 0x80, 0x10, 0x00, 0x50, 0x64, 0x00, 0x08, 0x00, 0x83, 0x00, 0x00,
+0x18, 0x82, 0x80, 0x01, 0x10, 0x73, 0x00, 0x00, 0x44, 0x60, 0x01, 0x00, 0x4c, 0x33, 0x7f, 0xe6,
+0x3a, 0x6f, 0xa0, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0x3c, 0x44, 0x40, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x32, 0x04, 0x80, 0x00, 0x00, 0x50, 0x74, 0x00, 0x01, 0x54, 0x63, 0x80, 0xff,
+0x38, 0x62, 0x98, 0x0e, 0x50, 0x52, 0x80, 0x08, 0x00, 0x62, 0x80, 0x00, 0x04, 0x80, 0x00, 0x01,
+0x40, 0x73, 0x20, 0x00, 0x54, 0x83, 0x80, 0xff, 0x14, 0x80, 0x00, 0x01, 0x40, 0x70, 0x20, 0x00,
+0x50, 0x73, 0x80, 0x08, 0x00, 0x83, 0x80, 0x00, 0x10, 0x82, 0x80, 0x00, 0x10, 0x63, 0x80, 0x00,
+0x00, 0x72, 0x80, 0x00, 0x38, 0x80, 0x90, 0x00, 0x40, 0x53, 0x1c, 0x00, 0x54, 0x62, 0x80, 0xff,
+0x40, 0x60, 0x18, 0x00, 0x00, 0x53, 0x00, 0x08, 0x40, 0x52, 0xa0, 0x03, 0x38, 0x51, 0x90, 0x08,
+0x50, 0x42, 0x00, 0x01, 0x58, 0x50, 0x00, 0x00, 0x40, 0xf2, 0x08, 0x06, 0x4e, 0xf3, 0xff, 0xcc,
+0x3a, 0x6f, 0xa0, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0x3c, 0x44, 0x20, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x22, 0x04, 0x40, 0x00, 0x00, 0x50, 0x21, 0x00, 0x01, 0x50, 0x62, 0x00, 0x01,
+0x54, 0x53, 0x00, 0xff, 0x38, 0x51, 0x94, 0x0e, 0x50, 0x31, 0x80, 0x08, 0x04, 0x40, 0x00, 0x01,
+0x00, 0x51, 0x80, 0x00, 0x40, 0x62, 0x90, 0x00, 0x54, 0x43, 0x00, 0xff, 0x14, 0x40, 0x00, 0x01,
+0x40, 0x60, 0x10, 0x00, 0x50, 0x43, 0x00, 0x08, 0x00, 0x62, 0x00, 0x00, 0x10, 0x61, 0x80, 0x00,
+0x10, 0x52, 0x00, 0x00, 0x58, 0x30, 0x00, 0x00, 0x40, 0xf1, 0x04, 0x06, 0x4e, 0xf3, 0xff, 0xdc,
+0x3a, 0x6f, 0x98, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xe4,
+0x14, 0x2f, 0x80, 0x00, 0x14, 0x3f, 0x80, 0x01, 0x58, 0x60, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x60, 0x59, 0xc0, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x68, 0x58, 0xa2, 0x00, 0x00,
+0x58, 0x92, 0x80, 0x00, 0x50, 0x8f, 0x80, 0xc8, 0x49, 0xf7, 0xb6, 0x28, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x60, 0x50, 0x0f, 0x80, 0x08, 0x49, 0xf7, 0xb6, 0x20, 0x58, 0x04, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb6, 0x18, 0x5c, 0xf3, 0x00, 0x41,
+0x4e, 0xf2, 0x00, 0x12, 0x58, 0x04, 0x00, 0x00, 0x58, 0x1e, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xf7, 0xb6, 0x7e, 0x50, 0x6f, 0x80, 0xc8, 0x51, 0xcf, 0x81, 0x08, 0x58, 0x73, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x0c, 0x58, 0x0e, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00,
+0x49, 0x00, 0x0a, 0x8a, 0x48, 0xff, 0xff, 0xf0, 0x00, 0x13, 0x80, 0x00, 0x56, 0x00, 0x80, 0x36,
+0x18, 0x03, 0x80, 0x01, 0x4c, 0x7e, 0x7f, 0xfa, 0x50, 0x7f, 0x80, 0x68, 0x58, 0x03, 0x80, 0x00,
+0x49, 0x00, 0x0a, 0x58, 0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x80, 0xc8, 0x44, 0x20, 0x00, 0x40,
+0x49, 0x00, 0x09, 0xec, 0x04, 0x1f, 0x80, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00,
+0x49, 0x00, 0x09, 0xe4, 0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x81, 0x08, 0x49, 0x00, 0x09, 0x96,
+0x00, 0x33, 0x00, 0x00, 0x56, 0x21, 0x80, 0x6a, 0x18, 0x23, 0x00, 0x01, 0x4c, 0x6e, 0x7f, 0xfa,
+0x50, 0x7f, 0x80, 0x08, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x0a, 0x34, 0x58, 0x03, 0x80, 0x00,
+0x50, 0x1f, 0x80, 0xc8, 0x44, 0x20, 0x00, 0x40, 0x50, 0x6f, 0x81, 0x08, 0x49, 0x00, 0x09, 0xc6,
+0x44, 0x20, 0x00, 0x10, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0x00, 0x09, 0xbe,
+0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0x00, 0x09, 0x70, 0x5c, 0xf4, 0x80, 0x11,
+0x4e, 0xf3, 0x00, 0x0a, 0x58, 0x05, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10,
+0x48, 0x00, 0x00, 0x08, 0x58, 0x05, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00,
+0x49, 0xf7, 0xb6, 0x0e, 0x51, 0xff, 0x81, 0x1c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xcc, 0x14, 0x2f, 0x80, 0x00, 0x14, 0x3f, 0x80, 0x01,
+0x58, 0x60, 0x80, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x68, 0x59, 0xc0, 0x00, 0x00,
+0x50, 0x0f, 0x80, 0x70, 0x58, 0xa2, 0x00, 0x00, 0x58, 0x92, 0x80, 0x00, 0x50, 0x8f, 0x80, 0xdc,
+0x49, 0xf7, 0xb5, 0x7c, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x68, 0x50, 0x0f, 0x80, 0x08,
+0x49, 0xf7, 0xb5, 0x74, 0x58, 0x04, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x40,
+0x49, 0xf7, 0xb5, 0x6c, 0x5c, 0xf3, 0x00, 0x41, 0x4e, 0xf2, 0x00, 0x12, 0x58, 0x04, 0x00, 0x00,
+0x58, 0x1e, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x49, 0xf7, 0xb5, 0xd2, 0x50, 0x6f, 0x80, 0xdc,
+0x51, 0xcf, 0x81, 0x1c, 0x58, 0x73, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x58, 0x0e, 0x00, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x49, 0x00, 0x02, 0xb8, 0x48, 0xff, 0xff, 0xf0,
+0x00, 0x13, 0x80, 0x00, 0x56, 0x00, 0x80, 0x36, 0x18, 0x03, 0x80, 0x01, 0x4c, 0x7e, 0x7f, 0xfa,
+0x50, 0x7f, 0x80, 0x70, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x02, 0x86, 0x58, 0x03, 0x80, 0x00,
+0x50, 0x1f, 0x80, 0xdc, 0x44, 0x20, 0x00, 0x40, 0x49, 0x00, 0x02, 0x1a, 0x04, 0x1f, 0x80, 0x00,
+0x04, 0x2f, 0x80, 0x01, 0x58, 0x03, 0x80, 0x00, 0x49, 0x00, 0x02, 0x12, 0x58, 0x03, 0x80, 0x00,
+0x50, 0x1f, 0x81, 0x1c, 0x49, 0x00, 0x01, 0x7c, 0x00, 0x33, 0x00, 0x00, 0x56, 0x21, 0x80, 0x6a,
+0x18, 0x23, 0x00, 0x01, 0x4c, 0x6e, 0x7f, 0xfa, 0x50, 0x7f, 0x80, 0x08, 0x58, 0x03, 0x80, 0x00,
+0x49, 0x00, 0x02, 0x62, 0x58, 0x03, 0x80, 0x00, 0x50, 0x1f, 0x80, 0xdc, 0x44, 0x20, 0x00, 0x40,
+0x50, 0x6f, 0x81, 0x1c, 0x49, 0x00, 0x01, 0xf4, 0x44, 0x20, 0x00, 0x14, 0x58, 0x03, 0x80, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x49, 0x00, 0x01, 0xec, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00,
+0x49, 0x00, 0x01, 0x56, 0x5c, 0xf4, 0x80, 0x15, 0x4e, 0xf3, 0x00, 0x0a, 0x58, 0x05, 0x00, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x14, 0x48, 0x00, 0x00, 0x08, 0x58, 0x05, 0x00, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00, 0x49, 0xf7, 0xb5, 0x62, 0x51, 0xff, 0x81, 0x34,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xb4,
+0x58, 0x60, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x14, 0x0f, 0x80, 0x01, 0x50, 0x9f, 0x80, 0x08,
+0x04, 0x1f, 0x80, 0x01, 0x44, 0x20, 0x00, 0x40, 0x58, 0x04, 0x80, 0x00, 0x49, 0xf7, 0xb5, 0x48,
+0x50, 0x8f, 0x80, 0x48, 0x59, 0xe4, 0x80, 0x00, 0x58, 0x24, 0x80, 0x00, 0x04, 0x01, 0x00, 0x00,
+0x44, 0x50, 0xff, 0x00, 0x46, 0xa0, 0x0f, 0xf0, 0x40, 0x30, 0x14, 0x02, 0x40, 0x40, 0x60, 0x09,
+0x40, 0x10, 0x60, 0x08, 0x40, 0x72, 0x04, 0x04, 0x41, 0xc1, 0xa0, 0x08, 0x40, 0x50, 0x28, 0x02,
+0x40, 0x13, 0xf0, 0x04, 0x40, 0x42, 0xa0, 0x09, 0x40, 0x30, 0x90, 0x04, 0x1c, 0x31, 0x00, 0x01,
+0x4c, 0x24, 0x7f, 0xe6, 0x50, 0x2f, 0x80, 0x3c, 0x50, 0x34, 0x81, 0x34, 0x04, 0x41, 0x7f, 0xfb,
+0x04, 0x51, 0x00, 0x00, 0x04, 0x01, 0x7f, 0xf5, 0x04, 0xa1, 0x7f, 0xf3, 0x40, 0x12, 0x14, 0x03,
+0x41, 0xc0, 0x80, 0x03, 0x40, 0x7e, 0x28, 0x03, 0x40, 0x83, 0xfc, 0x0b, 0x14, 0x81, 0x00, 0x03,
+0x50, 0x21, 0x00, 0x04, 0x4c, 0x21, 0xff, 0xec, 0x04, 0x03, 0x00, 0x00, 0x04, 0x83, 0x00, 0x01,
+0x04, 0x43, 0x00, 0x02, 0x04, 0x33, 0x00, 0x03, 0x05, 0xc3, 0x00, 0x04, 0x50, 0x14, 0x80, 0x50,
+0x58, 0x70, 0x00, 0x00, 0x0c, 0x5f, 0x00, 0x01, 0x46, 0xa5, 0xa8, 0x27, 0x58, 0xa5, 0x09, 0x99,
+0x40, 0x24, 0x20, 0x05, 0x40, 0x52, 0xa8, 0x00, 0x40, 0x52, 0xf0, 0x00, 0x40, 0xa2, 0x20, 0x02,
+0x41, 0xc3, 0xec, 0x0b, 0x40, 0x21, 0x0c, 0x02, 0x40, 0x52, 0xf0, 0x00, 0x40, 0x21, 0x28, 0x03,
+0x40, 0x52, 0x88, 0x00, 0x59, 0xc1, 0x80, 0x00, 0x40, 0x24, 0x08, 0x0b, 0x58, 0x83, 0x80, 0x00,
+0x4d, 0xe0, 0x80, 0x0a, 0x58, 0x32, 0x00, 0x00, 0x58, 0x72, 0x80, 0x00, 0x58, 0x41, 0x00, 0x00,
+0x48, 0xff, 0xff, 0xda, 0x59, 0xe1, 0x80, 0x00, 0x50, 0x8f, 0x80, 0x58, 0x50, 0xa4, 0x80, 0xa0,
+0x0d, 0xc4, 0x00, 0x01, 0x46, 0x36, 0xed, 0x9e, 0x58, 0x31, 0x8b, 0xa1, 0x41, 0xce, 0x0c, 0x00,
+0x40, 0x11, 0x1c, 0x03, 0x41, 0xce, 0x78, 0x00, 0x40, 0x32, 0xec, 0x0b, 0x41, 0xee, 0x0c, 0x00,
+0x40, 0x30, 0x90, 0x03, 0x41, 0xcf, 0x0c, 0x00, 0x40, 0x33, 0x88, 0x0b, 0x59, 0xe2, 0x00, 0x00,
+0x58, 0x72, 0x80, 0x00, 0x4c, 0x85, 0x00, 0x0a, 0x58, 0x41, 0x00, 0x00, 0x58, 0x5e, 0x00, 0x00,
+0x58, 0x21, 0x80, 0x00, 0x48, 0xff, 0xff, 0xde, 0x58, 0x82, 0x80, 0x00, 0x58, 0x5e, 0x00, 0x00,
+0x58, 0x71, 0x00, 0x00, 0x51, 0xcf, 0x80, 0xa8, 0x50, 0x14, 0x80, 0xf0, 0x0c, 0x4e, 0x00, 0x01,
+0x46, 0xa8, 0xf1, 0xbb, 0x58, 0xa5, 0x0c, 0xdc, 0x40, 0x42, 0x28, 0x00, 0x40, 0x21, 0x9c, 0x03,
+0x40, 0x42, 0x78, 0x00, 0x40, 0x21, 0x20, 0x02, 0x41, 0xe2, 0xec, 0x0b, 0x40, 0xa3, 0x8c, 0x02,
+0x40, 0x42, 0x78, 0x00, 0x40, 0x21, 0x28, 0x03, 0x40, 0x42, 0x08, 0x00, 0x59, 0xe3, 0x80, 0x00,
+0x40, 0x24, 0x08, 0x0b, 0x58, 0x82, 0x80, 0x00, 0x4d, 0xc0, 0x80, 0x0a, 0x58, 0x71, 0x80, 0x00,
+0x58, 0x52, 0x00, 0x00, 0x58, 0x31, 0x00, 0x00, 0x48, 0xff, 0xff, 0xda, 0x59, 0xc3, 0x80, 0x00,
+0x50, 0x94, 0x81, 0x40, 0x50, 0x7f, 0x80, 0xf8, 0x0d, 0xe3, 0x80, 0x01, 0x46, 0x8c, 0xa6, 0x2c,
+0x58, 0x84, 0x01, 0xd6, 0x40, 0xaf, 0x20, 0x00, 0x40, 0x11, 0x14, 0x03, 0x41, 0xe5, 0x70, 0x00,
+0x40, 0x82, 0x6c, 0x0b, 0x41, 0xcf, 0x20, 0x00, 0x40, 0x80, 0x8c, 0x03, 0x40, 0xae, 0x20, 0x00,
+0x40, 0x82, 0x88, 0x0b, 0x59, 0xc1, 0x80, 0x00, 0x58, 0x52, 0x00, 0x00, 0x4c, 0x74, 0x80, 0x0a,
+0x58, 0x31, 0x00, 0x00, 0x58, 0x45, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x48, 0xff, 0xff, 0xde,
+0x05, 0xc3, 0x00, 0x01, 0x04, 0x93, 0x00, 0x02, 0x04, 0x73, 0x00, 0x03, 0x04, 0x53, 0x00, 0x04,
+0x40, 0xa5, 0x00, 0x00, 0x40, 0x4e, 0x10, 0x00, 0x40, 0x23, 0x88, 0x00, 0x40, 0x32, 0x8c, 0x00,
+0x40, 0x84, 0xa0, 0x00, 0x14, 0x23, 0x00, 0x03, 0x14, 0xa3, 0x00, 0x00, 0x14, 0x43, 0x00, 0x01,
+0x14, 0x83, 0x00, 0x02, 0x14, 0x33, 0x00, 0x04, 0x44, 0x10, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x01,
+0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb3, 0xba, 0x44, 0x00, 0x00, 0x00, 0x14, 0x03, 0x00, 0x18,
+0x51, 0xff, 0x81, 0x4c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x04, 0x20, 0x00, 0x18, 0x50, 0x70, 0x00, 0x20, 0x58, 0x60, 0x00, 0x00,
0x58, 0x80, 0x80, 0x00, 0x40, 0x03, 0x88, 0x00, 0x44, 0x10, 0x00, 0x80, 0x44, 0x20, 0x00, 0x01,
-0x49, 0xf7, 0xac, 0x8c, 0x04, 0x03, 0x00, 0x16, 0x5c, 0xf0, 0x00, 0x38, 0x4e, 0xf3, 0x00, 0x06,
-0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf9, 0xb8, 0x04, 0x13, 0x00, 0x04, 0x04, 0x03, 0x00, 0x05,
-0x41, 0xe0, 0xf4, 0x09, 0x40, 0x50, 0x0c, 0x08, 0x40, 0x30, 0x8c, 0x08, 0x40, 0x42, 0xf8, 0x04,
-0x14, 0x4f, 0x80, 0x01, 0x14, 0x3f, 0x80, 0x00, 0x58, 0x1f, 0x80, 0x00, 0x44, 0x20, 0x00, 0x08,
-0x50, 0x03, 0x80, 0x38, 0x49, 0xf7, 0xac, 0xdc, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf9, 0x9c,
-0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xac, 0xd0,
-0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x58, 0x70, 0x00, 0x00, 0x50, 0x00, 0x00, 0x18, 0x14, 0x1f, 0x80, 0x01,
+0x49, 0xf7, 0xb3, 0x9c, 0x04, 0x03, 0x00, 0x18, 0x5c, 0xf0, 0x00, 0x38, 0x4e, 0xf3, 0x00, 0x06,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xaa, 0x04, 0x33, 0x00, 0x06, 0x05, 0xe3, 0x00, 0x07,
+0x41, 0xc1, 0xf4, 0x09, 0x40, 0x2f, 0x0c, 0x08, 0x40, 0x2e, 0x08, 0x04, 0x40, 0x31, 0x8c, 0x08,
+0x44, 0x50, 0xff, 0x00, 0x46, 0x10, 0x0f, 0xf0, 0x40, 0x91, 0x14, 0x02, 0x40, 0xa1, 0x94, 0x02,
+0x41, 0xe1, 0x84, 0x02, 0x41, 0xc1, 0x04, 0x02, 0x40, 0x44, 0xa0, 0x08, 0x40, 0x01, 0xe0, 0x08,
+0x40, 0x91, 0x60, 0x08, 0x40, 0xa5, 0x20, 0x08, 0x40, 0x1e, 0x20, 0x09, 0x40, 0x05, 0x00, 0x04,
+0x40, 0x44, 0x90, 0x04, 0x40, 0x5f, 0x20, 0x09, 0x41, 0xe0, 0x14, 0x04, 0x41, 0xc1, 0xe0, 0x09,
+0x40, 0x52, 0x04, 0x04, 0x40, 0x11, 0x60, 0x09, 0x40, 0x42, 0x84, 0x04, 0x40, 0x3e, 0x78, 0x04,
+0x44, 0x20, 0x00, 0x08, 0x58, 0x1f, 0x80, 0x00, 0x50, 0x03, 0x80, 0x38, 0x14, 0x4f, 0x80, 0x00,
+0x14, 0x3f, 0x80, 0x01, 0x49, 0xf7, 0xb3, 0xc4, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x66,
+0x44, 0x20, 0x00, 0x00, 0x38, 0x33, 0x08, 0x02, 0x44, 0x50, 0xff, 0x00, 0x41, 0xc1, 0x94, 0x02,
+0x40, 0x4e, 0x20, 0x08, 0x47, 0xc0, 0x0f, 0xf0, 0x40, 0x01, 0xe0, 0x09, 0x40, 0x11, 0xe0, 0x08,
+0x41, 0xe0, 0x04, 0x04, 0x40, 0x31, 0xf0, 0x02, 0x40, 0x0f, 0x10, 0x04, 0x40, 0x51, 0xa0, 0x09,
+0x40, 0x10, 0x14, 0x04, 0x38, 0x13, 0x08, 0x0a, 0x44, 0x40, 0x00, 0x14, 0x50, 0x21, 0x00, 0x04,
+0x4c, 0x22, 0x7f, 0xe2, 0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xf7, 0xb3, 0x98,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x58, 0x70, 0x00, 0x00, 0x50, 0x00, 0x00, 0x20, 0x14, 0x1f, 0x80, 0x01,
0x59, 0xc1, 0x00, 0x00, 0x14, 0x0f, 0x80, 0x00, 0x44, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, 0x34,
-0x04, 0x33, 0x80, 0x16, 0x04, 0x1f, 0x80, 0x01, 0x05, 0xef, 0x80, 0x00, 0x40, 0x50, 0xa0, 0x00,
+0x04, 0x33, 0x80, 0x18, 0x04, 0x1f, 0x80, 0x01, 0x05, 0xef, 0x80, 0x00, 0x40, 0x50, 0xa0, 0x00,
0x40, 0x4f, 0x0c, 0x00, 0x40, 0x93, 0x0c, 0x00, 0x58, 0x12, 0x80, 0x00, 0x58, 0x02, 0x00, 0x00,
-0x5c, 0xf4, 0x80, 0x40, 0x4e, 0xf2, 0x00, 0x0e, 0x49, 0xf7, 0xac, 0xa2, 0x04, 0x33, 0x80, 0x16,
-0x40, 0x84, 0x18, 0x00, 0x40, 0x21, 0x98, 0x00, 0x14, 0x23, 0x80, 0x16, 0x48, 0x00, 0x00, 0x14,
-0x52, 0x21, 0x80, 0x40, 0x49, 0xf7, 0xac, 0x94, 0x44, 0x60, 0x00, 0x40, 0x04, 0x53, 0x80, 0x16,
-0x14, 0x63, 0x80, 0x16, 0x40, 0x43, 0x14, 0x01, 0x58, 0x03, 0x80, 0x00, 0x40, 0x84, 0x10, 0x00,
-0x49, 0xff, 0xf9, 0x4a, 0x40, 0x6e, 0x20, 0x01, 0x58, 0x23, 0x00, 0x00, 0x4c, 0x8e, 0x7f, 0xca,
-0x04, 0x03, 0x80, 0x04, 0x04, 0x13, 0x80, 0x05, 0x58, 0x24, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00,
+0x5c, 0xf4, 0x80, 0x40, 0x4e, 0xf2, 0x00, 0x0e, 0x49, 0xf7, 0xb3, 0x6a, 0x04, 0x33, 0x80, 0x18,
+0x40, 0x84, 0x18, 0x00, 0x40, 0x21, 0x98, 0x00, 0x14, 0x23, 0x80, 0x18, 0x48, 0x00, 0x00, 0x14,
+0x52, 0x21, 0x80, 0x40, 0x49, 0xf7, 0xb3, 0x5c, 0x44, 0x60, 0x00, 0x40, 0x04, 0x53, 0x80, 0x18,
+0x14, 0x63, 0x80, 0x18, 0x40, 0x43, 0x14, 0x01, 0x58, 0x03, 0x80, 0x00, 0x40, 0x84, 0x10, 0x00,
+0x49, 0xff, 0xfd, 0xf4, 0x40, 0x6e, 0x20, 0x01, 0x58, 0x23, 0x00, 0x00, 0x4c, 0x8e, 0x7f, 0xca,
+0x04, 0x03, 0x80, 0x06, 0x04, 0x13, 0x80, 0x07, 0x58, 0x24, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00,
0x40, 0x40, 0x08, 0x00, 0x40, 0xf2, 0x08, 0x06, 0x40, 0x50, 0x8c, 0x00, 0x40, 0x52, 0xbc, 0x00,
-0x14, 0x43, 0x80, 0x04, 0x14, 0x53, 0x80, 0x05, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x3e, 0x1f, 0xd5, 0xfc, 0x58, 0x60, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xac, 0x5c, 0x50, 0x03, 0x00, 0x18, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xab, 0xe2, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x14, 0x23, 0x00, 0x16, 0x14, 0x03, 0x00, 0x04, 0x14, 0x13, 0x00, 0x05,
-0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0x9c,
+0x14, 0x43, 0x80, 0x06, 0x14, 0x53, 0x80, 0x07, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x3e, 0x1f, 0xd3, 0x94, 0x58, 0x60, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x14, 0x49, 0xf7, 0xb3, 0x24, 0x50, 0x03, 0x00, 0x20, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xb2, 0xaa, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x00, 0x14, 0x23, 0x00, 0x18, 0x14, 0x03, 0x00, 0x06, 0x14, 0x13, 0x00, 0x07,
+0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0x94,
0x58, 0x90, 0x00, 0x00, 0x58, 0x80, 0x80, 0x00, 0x58, 0x71, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x60, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xab, 0xc0, 0x58, 0x0f, 0x80, 0x00,
+0x44, 0x20, 0x00, 0x68, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xb2, 0x88, 0x58, 0x0f, 0x80, 0x00,
0x49, 0xff, 0xff, 0xca, 0x58, 0x0f, 0x80, 0x00, 0x58, 0x14, 0x80, 0x00, 0x58, 0x24, 0x00, 0x00,
0x49, 0xff, 0xff, 0x5e, 0x58, 0x0f, 0x80, 0x00, 0x58, 0x13, 0x80, 0x00, 0x58, 0x6f, 0x80, 0x00,
-0x49, 0xff, 0xff, 0x0e, 0x51, 0xff, 0x80, 0x64, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x90, 0x00, 0xff, 0x49, 0xff, 0xb9, 0xb8,
-0x44, 0x30, 0x00, 0x38, 0x50, 0x21, 0xff, 0xfc, 0x40, 0x71, 0x00, 0x1a, 0x40, 0x71, 0x80, 0x1b,
-0x58, 0x03, 0x80, 0x00, 0x49, 0xf7, 0xb1, 0x4a, 0x44, 0x50, 0x0f, 0xff, 0x58, 0x80, 0x00, 0x00,
-0x4c, 0x02, 0xc0, 0x08, 0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x9a, 0x48, 0x00, 0x00, 0xc8,
-0x49, 0xf7, 0xb1, 0x0e, 0x58, 0x60, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
-0x49, 0xf7, 0xab, 0x7c, 0x12, 0x73, 0x00, 0x00, 0x2e, 0x07, 0xfa, 0x12, 0x00, 0x13, 0x00, 0x03,
-0x4e, 0x03, 0x00, 0x0a, 0x44, 0x7f, 0xff, 0x87, 0x40, 0x50, 0x9c, 0x02, 0x58, 0x12, 0x80, 0x18,
-0x48, 0x00, 0x00, 0x08, 0x45, 0xef, 0xff, 0x87, 0x40, 0xa0, 0xf8, 0x02, 0x58, 0x15, 0x00, 0x60,
-0x10, 0x13, 0x00, 0x03, 0x00, 0xa3, 0x00, 0x07, 0x00, 0x13, 0x00, 0x03, 0x55, 0xc0, 0x80, 0x7f,
-0x11, 0xc3, 0x00, 0x03, 0x54, 0x15, 0x00, 0x03, 0x2e, 0x47, 0xfa, 0x09, 0x44, 0x0f, 0xff, 0xcc,
-0x10, 0x13, 0x00, 0x07, 0x10, 0x43, 0x00, 0x04, 0x10, 0x03, 0x00, 0x05, 0x02, 0x23, 0x00, 0x0d,
-0x2e, 0x77, 0xfa, 0x0f, 0x02, 0x53, 0x00, 0x06, 0x01, 0xc3, 0x00, 0x09, 0x00, 0xa3, 0x00, 0x0b,
-0x40, 0x73, 0x88, 0x08, 0x45, 0xef, 0xc0, 0x03, 0x02, 0x43, 0x00, 0x07, 0x00, 0x33, 0x00, 0x15,
-0x00, 0x03, 0x00, 0x19, 0x40, 0x21, 0x78, 0x02, 0x40, 0x10, 0x9c, 0x04, 0x44, 0x7f, 0xff, 0x80,
-0x43, 0xce, 0x10, 0x09, 0x40, 0xa5, 0x1c, 0x04, 0x54, 0x52, 0x80, 0x3f, 0x45, 0xef, 0xf8, 0x00,
-0x11, 0xc3, 0x00, 0x09, 0x40, 0x00, 0x0c, 0x09, 0x40, 0x00, 0x0c, 0x08, 0x40, 0x52, 0xf8, 0x04,
-0x54, 0x42, 0x70, 0x00, 0x58, 0x31, 0x80, 0x20, 0x58, 0x21, 0x00, 0x04, 0x45, 0xc0, 0x00, 0x00,
-0x50, 0x73, 0x00, 0x20, 0x10, 0x13, 0x00, 0x07, 0x11, 0xc3, 0x00, 0x0a, 0x10, 0xa3, 0x00, 0x0b,
-0x12, 0x53, 0x00, 0x06, 0x12, 0x43, 0x00, 0x07, 0x10, 0x33, 0x00, 0x15, 0x12, 0x23, 0x00, 0x0d,
-0x10, 0x03, 0x00, 0x19, 0x44, 0x60, 0x01, 0x48, 0x12, 0x63, 0x80, 0x00, 0x4e, 0x92, 0x00, 0x06,
-0x44, 0x90, 0x11, 0x48, 0x12, 0x93, 0x80, 0x00, 0x3e, 0x6f, 0xfa, 0x08, 0x51, 0xcf, 0x80, 0x07,
-0x00, 0x03, 0x00, 0x06, 0x58, 0x1e, 0x00, 0x00, 0x3e, 0x2f, 0xfa, 0x00, 0x49, 0xff, 0xaa, 0xd4,
-0x3e, 0x1f, 0xfa, 0x00, 0x44, 0x20, 0x00, 0x06, 0x50, 0x03, 0x80, 0x04, 0x49, 0xf7, 0xaa, 0xda,
-0x50, 0xa3, 0x80, 0x0a, 0x00, 0x03, 0x00, 0x07, 0x58, 0x1e, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00,
-0x49, 0xff, 0xa4, 0x2c, 0x3e, 0x1f, 0xf9, 0xf8, 0x44, 0x20, 0x00, 0x06, 0x58, 0x05, 0x00, 0x00,
-0x49, 0xf7, 0xaa, 0xc8, 0x3e, 0x1f, 0xfa, 0x00, 0x44, 0x20, 0x00, 0x06, 0x50, 0x03, 0x80, 0x10,
-0x49, 0xf7, 0xaa, 0xc0, 0x00, 0x23, 0x00, 0x0a, 0x44, 0x10, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x03,
-0x40, 0x12, 0x88, 0x1a, 0x44, 0x00, 0x00, 0x02, 0x58, 0x24, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01,
-0x49, 0xf7, 0xb4, 0x80, 0x4e, 0x02, 0x00, 0x0a, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x58, 0x04, 0x00, 0x00, 0x49, 0xf7, 0xb0, 0x5a,
-0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x01, 0x48, 0xff, 0xff, 0xf2, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xdc, 0x54, 0x42, 0x00, 0xff, 0x55, 0xc0, 0x80, 0xff, 0x54, 0x91, 0x00, 0xff,
-0x54, 0x31, 0x80, 0xff, 0x4e, 0x42, 0x00, 0x58, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x32, 0x80, 0x06,
-0x44, 0x50, 0x00, 0x05, 0x4c, 0x32, 0xc0, 0x82, 0x44, 0xa0, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00,
-0x58, 0x95, 0x00, 0x00, 0x58, 0x85, 0x00, 0x00, 0x58, 0x6f, 0x80, 0x00, 0x48, 0x00, 0x00, 0x38,
-0x00, 0x03, 0x80, 0x00, 0x44, 0x50, 0x00, 0xdd, 0x4c, 0x02, 0xc0, 0x28, 0x50, 0x03, 0x80, 0x02,
-0x3e, 0x1f, 0xe3, 0xa4, 0x44, 0x20, 0x00, 0x03, 0x49, 0xf7, 0xab, 0x1a, 0x4e, 0x03, 0x00, 0x1e,
-0x00, 0x53, 0x80, 0x05, 0x45, 0xe0, 0x00, 0x01, 0x4c, 0x5f, 0x40, 0x18, 0x00, 0x43, 0x80, 0x01,
-0x00, 0x93, 0x80, 0x06, 0x50, 0x82, 0x7f, 0xfa, 0x54, 0x84, 0x00, 0xff, 0x50, 0x13, 0x80, 0x08,
-0x58, 0x0f, 0x80, 0x00, 0x58, 0x24, 0x00, 0x00, 0x54, 0x94, 0x80, 0x03, 0x5c, 0xf4, 0x00, 0x10,
-0x4e, 0xf3, 0x00, 0x44, 0x49, 0xf7, 0xaa, 0xd4, 0x00, 0x23, 0x80, 0x01, 0x50, 0x11, 0x00, 0x02,
-0x40, 0xa5, 0x04, 0x00, 0x40, 0x73, 0x84, 0x00, 0x54, 0xa5, 0x00, 0xff, 0x00, 0x53, 0x80, 0x01,
-0x50, 0x32, 0x80, 0x02, 0x40, 0x01, 0xa8, 0x00, 0x40, 0xfe, 0x00, 0x07, 0x4e, 0xf2, 0xff, 0xc2,
-0x48, 0x00, 0x00, 0x14, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x32, 0xc0, 0x30, 0x58, 0x10, 0x00, 0x00,
-0x58, 0x2e, 0x00, 0x00, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xaa, 0xb2, 0x5c, 0xf4, 0x80, 0x04,
-0x4e, 0xf2, 0x00, 0x1c, 0x58, 0x8e, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x58, 0x1f, 0x80, 0x00,
-0x3e, 0x0f, 0xfa, 0x5c, 0x49, 0xf7, 0xaa, 0xa4, 0x3e, 0x4f, 0xfa, 0x08, 0x00, 0x12, 0x00, 0x03,
-0x10, 0x92, 0x00, 0x05, 0x58, 0x24, 0x80, 0x00, 0x50, 0x02, 0x00, 0x54, 0x49, 0xff, 0xed, 0x7c,
-0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x24,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x44, 0x90, 0x00, 0x00, 0x58, 0x84, 0x80, 0x00,
-0x48, 0xff, 0xff, 0xdc, 0x3a, 0x2f, 0x94, 0x3c, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4,
-0x58, 0x90, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x20, 0x14, 0x0f, 0x80, 0x01, 0x58, 0x70, 0x80, 0x00,
-0x44, 0x60, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x5f, 0xff, 0xff, 0x50, 0x41, 0x00, 0x04,
-0x14, 0x4f, 0x80, 0x01, 0x40, 0x04, 0x98, 0x00, 0x04, 0x31, 0x00, 0x00, 0x50, 0x12, 0x00, 0x04,
-0x58, 0x21, 0x80, 0x00, 0x4c, 0x32, 0x80, 0x0c, 0x14, 0x1f, 0x80, 0x01, 0x40, 0x63, 0x0c, 0x00,
-0x04, 0x12, 0x00, 0x00, 0x49, 0xf7, 0xaa, 0x5c, 0x48, 0xff, 0xff, 0xe6, 0x58, 0x03, 0x00, 0x00,
-0x14, 0x63, 0x80, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xa4, 0x84, 0x51, 0xff, 0x80, 0x10,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x94, 0x44, 0x80, 0x00, 0x00,
-0x58, 0x61, 0x00, 0x00, 0x55, 0xc0, 0x00, 0xff, 0x58, 0xa0, 0x80, 0x00, 0x58, 0x04, 0x00, 0x00,
-0x44, 0x10, 0x02, 0x00, 0x14, 0x8f, 0x80, 0x19, 0x49, 0xff, 0xbd, 0xfa, 0x00, 0x43, 0x00, 0x02,
-0x00, 0x13, 0x00, 0x03, 0x40, 0x32, 0x20, 0x08, 0x40, 0x21, 0x84, 0x04, 0x50, 0x21, 0x00, 0x04,
-0x50, 0x1f, 0x80, 0x64, 0x58, 0x33, 0x00, 0x00, 0x44, 0x4f, 0xff, 0xff, 0x50, 0x9f, 0x80, 0x54,
-0x58, 0x70, 0x00, 0x00, 0x49, 0xff, 0xff, 0xa0, 0x58, 0x14, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00,
-0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa9, 0xaa, 0x44, 0x00, 0x00, 0x02, 0x4d, 0xc0, 0x40, 0x1c,
-0x50, 0x8f, 0x80, 0x04, 0x04, 0x3f, 0x80, 0x19, 0x58, 0x05, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
-0x58, 0x44, 0x00, 0x00, 0x44, 0x50, 0x00, 0x14, 0x50, 0x12, 0xff, 0xfc, 0x49, 0xff, 0xf3, 0xa4,
-0x58, 0x04, 0x80, 0x00, 0x58, 0x14, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xaa, 0x00,
-0x48, 0x00, 0x00, 0x10, 0x44, 0x10, 0x00, 0x10, 0x04, 0x3f, 0x80, 0x19, 0x58, 0x05, 0x00, 0x00,
-0x58, 0x44, 0x80, 0x00, 0x58, 0x23, 0x80, 0x00, 0x58, 0x50, 0x80, 0x00, 0x49, 0xff, 0xf2, 0xe0,
-0x50, 0x1f, 0x80, 0x54, 0x44, 0x20, 0x00, 0x10, 0x50, 0x03, 0x00, 0x51, 0x49, 0xf7, 0xa9, 0xe8,
-0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xbc, 0xd4, 0x51, 0xff, 0x80, 0x6c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x2e, 0x87, 0xfa, 0x08,
-0x04, 0x6f, 0x80, 0x0c, 0x44, 0x70, 0x00, 0x03, 0x44, 0x90, 0x00, 0x01, 0x44, 0x50, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x5f, 0x10, 0x73, 0x00, 0x01, 0x10, 0x93, 0x00, 0x00, 0x10, 0x53, 0x00, 0x02,
-0x10, 0x03, 0x00, 0x03, 0x59, 0xc1, 0x80, 0x00, 0x14, 0x4f, 0x80, 0x01, 0x54, 0x70, 0x80, 0xff,
-0x54, 0x21, 0x00, 0xff, 0x4e, 0x82, 0x00, 0x06, 0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x04,
-0x44, 0x0f, 0xff, 0xfe, 0x10, 0x03, 0x00, 0x04, 0x3e, 0x9f, 0xfa, 0x08, 0x00, 0x54, 0x80, 0x04,
-0x00, 0x43, 0x00, 0x06, 0x56, 0x02, 0x80, 0x04, 0x44, 0xa0, 0x00, 0x01, 0x45, 0xe0, 0x00, 0x02,
-0x40, 0x9f, 0x00, 0x1a, 0x40, 0x95, 0x00, 0x1b, 0x40, 0x12, 0x0c, 0x09, 0x40, 0x10, 0x8c, 0x08,
-0x40, 0x50, 0xa4, 0x04, 0x10, 0x53, 0x00, 0x06, 0x5c, 0xf3, 0x80, 0x05, 0x4e, 0xf3, 0x00, 0x06,
-0x42, 0x52, 0x8c, 0x09, 0x48, 0x00, 0x00, 0x04, 0x58, 0x52, 0x80, 0x08, 0x10, 0x53, 0x00, 0x06,
-0x4e, 0x83, 0x00, 0x1a, 0x5c, 0xf3, 0x80, 0x05, 0x4e, 0xf3, 0x00, 0x16, 0x00, 0x53, 0x00, 0x06,
-0x54, 0x01, 0x00, 0x03, 0x44, 0x3f, 0xff, 0xcf, 0x41, 0xe0, 0x10, 0x08, 0x40, 0xa2, 0x8c, 0x02,
-0x40, 0x45, 0x78, 0x04, 0x44, 0x20, 0x00, 0x03, 0x10, 0x43, 0x00, 0x06, 0x4c, 0x71, 0x40, 0x14,
-0x48, 0x00, 0x00, 0x16, 0x44, 0x10, 0x00, 0x03, 0x4c, 0x70, 0xc0, 0x0a, 0x00, 0x43, 0x00, 0x06,
-0x58, 0x22, 0x00, 0x40, 0x10, 0x23, 0x00, 0x06, 0x48, 0x00, 0x00, 0x0a, 0x44, 0xa0, 0x00, 0x01,
-0x4c, 0x75, 0x00, 0x06, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x0e, 0x00, 0x03, 0x00, 0x06,
-0x44, 0x1f, 0xff, 0x80, 0x40, 0x30, 0x04, 0x04, 0x44, 0x50, 0x00, 0x01, 0x10, 0x33, 0x00, 0x06,
-0x4c, 0x72, 0x80, 0x08, 0x00, 0x43, 0x00, 0x05, 0x58, 0x22, 0x00, 0x01, 0x10, 0x23, 0x00, 0x05,
-0x4e, 0x82, 0x00, 0x08, 0x5c, 0xf3, 0x80, 0x03, 0x4e, 0xf2, 0x00, 0x08, 0x48, 0x00, 0x00, 0x12,
-0x5c, 0xf3, 0x80, 0x05, 0x4e, 0xf3, 0x00, 0x22, 0x01, 0xe3, 0x00, 0x05, 0x58, 0xaf, 0x00, 0x02,
-0x10, 0xa3, 0x00, 0x05, 0x4e, 0x82, 0x00, 0x1a, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x72, 0x80, 0x06,
-0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x08, 0x00, 0x13, 0x00, 0x05, 0x58, 0x00, 0x80, 0x10,
-0x10, 0x03, 0x00, 0x05, 0x4e, 0x82, 0x00, 0x0a, 0x44, 0x20, 0x00, 0x01, 0x4c, 0x71, 0x00, 0x06,
-0x44, 0x50, 0x00, 0x03, 0x4c, 0x72, 0xc0, 0x10, 0x2e, 0x17, 0xfa, 0x0c, 0x45, 0xe0, 0x00, 0x10,
-0x56, 0x30, 0x80, 0x02, 0x40, 0x5f, 0x04, 0x08, 0x40, 0xa2, 0x8c, 0x1a, 0x40, 0xaf, 0x0c, 0x1b,
-0x10, 0xa3, 0x00, 0x08, 0x50, 0x03, 0x00, 0x09, 0x3e, 0x1f, 0xfa, 0x14, 0x44, 0x20, 0x00, 0x08,
-0x49, 0xf7, 0xa9, 0x0e, 0x5c, 0xf3, 0x80, 0x04, 0x4e, 0xf3, 0x00, 0x08, 0x4e, 0x83, 0x00, 0x2c,
-0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x28, 0x50, 0x03, 0x00, 0x11, 0x58, 0x1e, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x20, 0x49, 0xf7, 0xa8, 0xfc, 0x4e, 0x83, 0x00, 0x16, 0x44, 0x50, 0x00, 0x05,
-0x4c, 0x72, 0xc0, 0x12, 0x50, 0x1e, 0x00, 0x10, 0x50, 0x03, 0x00, 0x31, 0x44, 0x20, 0x00, 0x10,
-0x49, 0xf7, 0xa8, 0xee, 0x00, 0x33, 0x00, 0x40, 0x50, 0x51, 0x80, 0x02, 0x10, 0x53, 0x00, 0x40,
-0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x72, 0xc0, 0x06, 0x4e, 0x83, 0x00, 0x08,
-0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x0a, 0x04, 0x1f, 0x80, 0x01,
-0x50, 0x03, 0x00, 0x41, 0x44, 0x20, 0x00, 0x06, 0x49, 0xf7, 0xa8, 0xd2, 0x50, 0x03, 0x00, 0x51,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa8, 0x58, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x72, 0x80, 0x0a, 0x58, 0x04, 0x80, 0x00, 0x58, 0x23, 0x00, 0x00, 0x3e, 0x1f, 0xfa, 0x1c,
-0x49, 0xff, 0xfe, 0x72, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0x84, 0x44, 0x80, 0x21, 0xc8, 0x58, 0x60, 0x00, 0x00,
-0x44, 0x10, 0x00, 0x00, 0x54, 0x71, 0x00, 0xff, 0x50, 0x0f, 0x81, 0x60, 0x44, 0x20, 0x00, 0x10,
-0x4b, 0xe0, 0x20, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x50, 0x50, 0x0f, 0x81, 0x00,
-0x4b, 0xe0, 0x20, 0x01, 0x50, 0x9f, 0x81, 0x74, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0xff,
-0x58, 0x0f, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x02,
-0x58, 0x04, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x50, 0x13, 0x00, 0x05, 0x58, 0x04, 0x80, 0x00,
-0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xa8, 0x84, 0x44, 0x00, 0x00, 0x01, 0x2e, 0x87, 0xfa, 0x08,
-0x4c, 0x70, 0x00, 0x0a, 0x44, 0x20, 0x00, 0x03, 0x4c, 0x71, 0x00, 0x06, 0x44, 0x30, 0x00, 0x05,
-0x4c, 0x71, 0xc0, 0x38, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x81, 0x50,
-0x49, 0xf7, 0xa7, 0xfc, 0x50, 0x23, 0x00, 0x09, 0x58, 0x01, 0x00, 0x00, 0x3e, 0x1f, 0xfa, 0x14,
-0x50, 0x53, 0x00, 0x11, 0x00, 0x40, 0x00, 0x00, 0x00, 0x30, 0x80, 0x00, 0x50, 0x00, 0x00, 0x01,
-0x40, 0xf1, 0x90, 0x06, 0x4e, 0xf3, 0x00, 0x1a, 0x40, 0xf2, 0x0c, 0x06, 0x4e, 0xf3, 0x00, 0x06,
-0x50, 0x10, 0x80, 0x01, 0x4c, 0x02, 0xff, 0xf0, 0x44, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x81, 0x50,
-0x38, 0xa1, 0x00, 0x00, 0x38, 0x52, 0x00, 0x00, 0x50, 0x00, 0x00, 0x01, 0x4c, 0xa2, 0xc0, 0x06,
-0x45, 0xc0, 0x00, 0x08, 0x4c, 0x0e, 0x7f, 0xf6, 0x44, 0x40, 0x00, 0x01, 0x4c, 0x72, 0x00, 0x6a,
-0x00, 0x33, 0x00, 0x02, 0x00, 0x23, 0x00, 0x03, 0x40, 0x91, 0xa0, 0x08, 0x50, 0xa3, 0x00, 0x51,
-0x41, 0xe4, 0x88, 0x04, 0x58, 0x15, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x50, 0x0f, 0x81, 0x50,
-0x51, 0xcf, 0x00, 0x04, 0x49, 0xf7, 0xa8, 0x2c, 0x44, 0x10, 0x00, 0x00, 0x58, 0x05, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa7, 0xb2, 0x00, 0x0f, 0x81, 0x75, 0x44, 0x10, 0x00, 0x01,
-0x54, 0x00, 0x00, 0x07, 0x4c, 0x00, 0xc0, 0x18, 0x3e, 0x9f, 0xfa, 0x08, 0x44, 0xa0, 0x00, 0x02,
-0x50, 0x10, 0x80, 0x0f, 0x10, 0xa4, 0x80, 0x04, 0x50, 0x04, 0x80, 0x14, 0x58, 0x3e, 0x00, 0x00,
-0x58, 0x23, 0x00, 0x00, 0x50, 0x4f, 0x81, 0x60, 0x58, 0x50, 0x80, 0x00, 0x49, 0xff, 0xf0, 0xf8,
-0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x02, 0xc0, 0x1e, 0x3e, 0xaf, 0xfa, 0x08,
-0x58, 0x3e, 0x00, 0x00, 0x45, 0xc0, 0x00, 0x04, 0x11, 0xc5, 0x00, 0x04, 0x50, 0x05, 0x00, 0x14,
-0x50, 0x10, 0x80, 0x0f, 0x58, 0x23, 0x00, 0x00, 0x50, 0x4f, 0x81, 0x00, 0x50, 0x50, 0x80, 0x04,
-0x49, 0xff, 0xf1, 0x8a, 0x50, 0x1f, 0x81, 0x00, 0x50, 0x0f, 0x81, 0x60, 0x44, 0x20, 0x00, 0x10,
-0x49, 0xf7, 0xa7, 0xe6, 0x50, 0x0f, 0x81, 0x50, 0x50, 0x1f, 0x81, 0x60, 0x44, 0x20, 0x00, 0x10,
-0x49, 0xf7, 0xa8, 0x06, 0x4e, 0x02, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x6c,
-0x00, 0x03, 0x00, 0x61, 0x00, 0x13, 0x00, 0x62, 0x40, 0x40, 0x20, 0x08, 0x40, 0x32, 0x04, 0x04,
-0x4e, 0x36, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x5e, 0x45, 0xe0, 0x00, 0x03,
-0x4c, 0x7f, 0x40, 0x06, 0x4e, 0x83, 0x00, 0x08, 0x48, 0x00, 0x00, 0x46, 0x44, 0x20, 0x00, 0x05,
-0x4c, 0x71, 0x40, 0x42, 0x00, 0x1f, 0x81, 0x75, 0x45, 0xe0, 0x00, 0x02, 0x54, 0x50, 0x80, 0x07,
-0x58, 0x4f, 0x80, 0x00, 0x50, 0x03, 0x00, 0x63, 0x4c, 0x5f, 0x40, 0x20, 0x00, 0x53, 0x00, 0x61,
-0x00, 0x23, 0x00, 0x62, 0x40, 0x92, 0xa0, 0x08, 0x40, 0x14, 0x88, 0x04, 0x40, 0x3f, 0x0c, 0x08,
-0x3e, 0x2f, 0xfa, 0x2c, 0x50, 0x5f, 0x81, 0x70, 0x44, 0x90, 0x00, 0x00, 0x14, 0x9f, 0x80, 0x5c,
-0x49, 0xff, 0xef, 0x02, 0x04, 0x3f, 0x80, 0x5c, 0x00, 0x4f, 0x81, 0x71, 0x10, 0x33, 0x00, 0x62,
-0x10, 0x43, 0x00, 0x61, 0x48, 0x00, 0x00, 0x0a, 0x58, 0x20, 0x00, 0x00, 0x3e, 0x0f, 0xfa, 0x2c,
-0x50, 0x13, 0x00, 0x31, 0x49, 0x00, 0x01, 0xd6, 0x4e, 0x83, 0x00, 0x0e, 0x44, 0x00, 0x00, 0x05,
-0x4c, 0x70, 0x40, 0x0a, 0x00, 0x1f, 0x81, 0x75, 0x41, 0xe0, 0x90, 0x09, 0x54, 0x2f, 0x00, 0x03,
-0x48, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x00, 0x00, 0x13, 0x00, 0x62, 0x58, 0x33, 0x80, 0x00,
-0x58, 0x44, 0x00, 0x00, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xff, 0xfc, 0x52, 0x44, 0x30, 0x00, 0x00,
-0x40, 0x01, 0x80, 0x06, 0x51, 0xff, 0x81, 0x7c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xd4, 0x3e, 0x7f, 0xfa, 0x08, 0x00, 0x33, 0x80, 0x04,
-0x50, 0x9f, 0x80, 0x27, 0x00, 0x03, 0x80, 0x07, 0x58, 0x60, 0x80, 0x00, 0x58, 0x81, 0x00, 0x00,
-0x58, 0x14, 0x80, 0x00, 0x50, 0x2f, 0x80, 0x20, 0x14, 0x3f, 0x80, 0x05, 0x49, 0xff, 0xa0, 0x26,
-0x00, 0x03, 0x80, 0x06, 0x58, 0x14, 0x80, 0x00, 0x50, 0x2f, 0x80, 0x18, 0x49, 0xff, 0xa6, 0xb4,
-0x58, 0x03, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x44, 0x20, 0x00, 0x05, 0x49, 0xff, 0xfe, 0x8a,
-0x4e, 0x02, 0x01, 0x02, 0x00, 0x13, 0x00, 0x0f, 0x00, 0x23, 0x00, 0x10, 0x3e, 0x0f, 0xd6, 0x0c,
-0x49, 0xf7, 0xa6, 0x8e, 0x50, 0x13, 0x00, 0x09, 0x44, 0x20, 0x00, 0x08, 0x50, 0x03, 0x80, 0x0c,
-0x49, 0xf7, 0xa7, 0x2e, 0x44, 0x00, 0x00, 0xa3, 0x49, 0xf7, 0xac, 0x70, 0x14, 0x0f, 0x80, 0x04,
-0x49, 0xf7, 0xac, 0x3e, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0xa3, 0x58, 0x60, 0x00, 0x00,
-0x49, 0xf7, 0xa6, 0xac, 0x44, 0x10, 0x00, 0xa3, 0x12, 0x13, 0x00, 0x00, 0x50, 0x83, 0x00, 0x20,
-0x00, 0x03, 0x80, 0x0a, 0x00, 0x13, 0x00, 0x03, 0x4e, 0x03, 0x00, 0x0a, 0x44, 0x4f, 0xff, 0x87,
-0x40, 0x20, 0x90, 0x02, 0x58, 0x11, 0x00, 0x18, 0x48, 0x00, 0x00, 0x08, 0x44, 0x7f, 0xff, 0x87,
-0x40, 0x50, 0x9c, 0x02, 0x58, 0x12, 0x80, 0x60, 0x10, 0x13, 0x00, 0x03, 0x01, 0xe3, 0x00, 0x07,
-0x00, 0x93, 0x00, 0x03, 0x54, 0xaf, 0x00, 0x03, 0x54, 0x74, 0x80, 0x7f, 0x10, 0x73, 0x00, 0x03,
-0x2e, 0x37, 0xfa, 0x09, 0x44, 0x0f, 0xff, 0xcc, 0x10, 0xa3, 0x00, 0x07, 0x10, 0x33, 0x00, 0x04,
-0x10, 0x03, 0x00, 0x05, 0x00, 0x13, 0x00, 0x0b, 0x2e, 0x57, 0xfa, 0x0f, 0x00, 0x73, 0x00, 0x09,
-0x02, 0x43, 0x00, 0x06, 0x00, 0x93, 0x00, 0x06, 0x40, 0x22, 0x88, 0x08, 0x02, 0x03, 0x00, 0x0d,
-0x01, 0xc3, 0x00, 0x15, 0x02, 0x33, 0x00, 0x07, 0x58, 0x50, 0x80, 0x20, 0x40, 0xa5, 0x08, 0x04,
-0x44, 0x2f, 0xff, 0x80, 0x40, 0x94, 0x88, 0x04, 0x54, 0x42, 0x00, 0x3f, 0x42, 0x23, 0x90, 0x09,
-0x44, 0x1f, 0xf8, 0x00, 0x40, 0x42, 0x04, 0x04, 0x54, 0x31, 0xf0, 0x00, 0x54, 0x10, 0x7f, 0xff,
-0x55, 0xce, 0x00, 0xdd, 0x10, 0x23, 0x00, 0x09, 0x12, 0x33, 0x00, 0x07, 0x12, 0x13, 0x00, 0x0d,
-0x54, 0x52, 0x80, 0x7f, 0x59, 0xce, 0x00, 0x22, 0x44, 0x70, 0x00, 0x00, 0x44, 0x2f, 0xff, 0x80,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x30, 0x41, 0x08, 0x11, 0xc3, 0x00, 0x15, 0x10, 0xa3, 0x00, 0x07,
-0x10, 0x93, 0x00, 0x06, 0x10, 0x73, 0x00, 0x0a, 0x10, 0x53, 0x00, 0x0b, 0x12, 0x43, 0x00, 0x06,
-0x10, 0x23, 0x00, 0x14, 0x3e, 0x17, 0xe5, 0xa5, 0x12, 0x34, 0x00, 0x00, 0x2e, 0x67, 0xfa, 0xbd,
-0x4e, 0x62, 0x00, 0x06, 0x44, 0x60, 0x51, 0x08, 0x12, 0x64, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
-0x12, 0x14, 0x00, 0x0b, 0x44, 0x60, 0x21, 0xa0, 0x3e, 0x1f, 0xfa, 0x00, 0x44, 0x20, 0x00, 0x06,
-0x50, 0x04, 0x00, 0x04, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xf9, 0xf8, 0x44, 0x20, 0x00, 0x06,
-0x50, 0x04, 0x00, 0x0a, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xfa, 0x00, 0x44, 0x20, 0x00, 0x06,
-0x50, 0x04, 0x00, 0x10, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe3, 0xa8, 0x44, 0x20, 0x00, 0x06,
-0x50, 0x04, 0x00, 0x18, 0x4b, 0xe0, 0x18, 0x01, 0x3e, 0x1f, 0xe3, 0xb0, 0x44, 0x20, 0x00, 0x02,
-0x50, 0x04, 0x00, 0x1e, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x60, 0x00, 0x00, 0x2e, 0x27, 0xfa, 0x0d,
-0x04, 0x0f, 0x80, 0x05, 0x58, 0x33, 0x00, 0x00, 0x44, 0x10, 0x00, 0x06, 0x58, 0x43, 0x00, 0x00,
-0x50, 0x84, 0x00, 0x20, 0x58, 0x53, 0x00, 0x00, 0x14, 0x8f, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x00,
-0x14, 0x6f, 0x80, 0x01, 0x49, 0xff, 0xfc, 0x78, 0x2e, 0x47, 0xfa, 0x12, 0x44, 0x20, 0x00, 0x03,
-0x44, 0x10, 0x00, 0x0c, 0x40, 0x11, 0x10, 0x1a, 0x04, 0x2f, 0x80, 0x04, 0x44, 0x00, 0x00, 0x02,
-0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xaf, 0x8e, 0x4e, 0x03, 0x00, 0x06, 0x04, 0x0f, 0x80, 0x04,
-0x49, 0xf7, 0xab, 0x70, 0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x50, 0x6f, 0x80, 0x04, 0x58, 0x70, 0x80, 0x00,
-0x58, 0x90, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x58, 0x81, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
-0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xa5, 0xb2, 0x58, 0x03, 0x00, 0x00, 0x50, 0x13, 0x80, 0x05,
-0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xa6, 0x1c, 0x00, 0x33, 0x00, 0x01, 0x54, 0x01, 0x80, 0x80,
-0x4e, 0x02, 0x00, 0x1e, 0x00, 0x13, 0x00, 0x00, 0x54, 0x20, 0x80, 0x0e, 0x4e, 0x23, 0x00, 0x06,
-0x54, 0x41, 0x80, 0x08, 0x4e, 0x43, 0x00, 0x14, 0x54, 0x10, 0x80, 0x0f, 0x44, 0x50, 0x00, 0x03,
-0x4c, 0x12, 0xc0, 0x0e, 0x54, 0x31, 0x80, 0x08, 0x4e, 0x33, 0x00, 0x0a, 0x58, 0x04, 0x80, 0x00,
-0x58, 0x13, 0x80, 0x00, 0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x94, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xd4,
-0x51, 0xcf, 0x81, 0x08, 0x58, 0x60, 0x00, 0x00, 0x58, 0xa1, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10,
-0x58, 0x0e, 0x00, 0x00, 0x58, 0x91, 0x80, 0x00, 0x58, 0x82, 0x00, 0x00, 0x49, 0xf7, 0xa5, 0xe0,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x50, 0x0f, 0x81, 0x18, 0x49, 0xf7, 0xa5, 0xd8,
-0x58, 0x1e, 0x00, 0x00, 0x44, 0x20, 0x00, 0x20, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xff, 0xee, 0x18,
-0x58, 0x0f, 0x80, 0x00, 0x44, 0x10, 0x01, 0x00, 0x49, 0xff, 0xee, 0x8a, 0x58, 0x0f, 0x80, 0x00,
-0x58, 0x15, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00, 0x58, 0x34, 0x00, 0x00, 0x58, 0x6f, 0x80, 0x00,
-0x49, 0xff, 0xee, 0x3e, 0x51, 0xff, 0x81, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0xff, 0xff, 0xc0, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x3c, 0x6d, 0xf9, 0x7d, 0x3c, 0x7d, 0xf9, 0x70, 0x4e, 0x62, 0x00, 0x18, 0x49, 0xf7, 0xaa, 0xb0,
-0x49, 0xf7, 0xac, 0xe6, 0x42, 0x60, 0x18, 0x24, 0x44, 0x10, 0x00, 0x00, 0x40, 0x63, 0x08, 0x09,
-0x58, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06, 0x1c, 0x03, 0x80, 0x01, 0x50, 0x10, 0x80, 0x01,
-0x40, 0xf0, 0x98, 0x06, 0x4e, 0xf3, 0xff, 0xfa, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x04,
-0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00,
-0x49, 0xf7, 0xaa, 0x8e, 0x49, 0xf7, 0xac, 0xc4, 0x40, 0x03, 0x00, 0x37, 0x4e, 0x12, 0x00, 0x04,
-0x50, 0x00, 0x00, 0x01, 0x46, 0x10, 0x01, 0x15, 0x5c, 0xf0, 0x02, 0x01, 0x4e, 0xf3, 0x00, 0x08,
-0x44, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0xf9, 0x6d, 0x48, 0x00, 0x00, 0x06, 0x3c, 0x0f, 0xf9, 0x6d,
-0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
-0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xaa, 0x6c, 0x49, 0xf7, 0xac, 0xa2, 0x40, 0x03, 0x00, 0x37,
-0x4e, 0x12, 0x00, 0x04, 0x50, 0x00, 0x00, 0x01, 0x54, 0x20, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x04,
-0x50, 0x00, 0x00, 0x01, 0x46, 0x10, 0x01, 0x15, 0x5c, 0xf0, 0x00, 0x41, 0x4e, 0xf3, 0x00, 0x08,
-0x44, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0xf9, 0x6c, 0x48, 0x00, 0x00, 0x06, 0x3c, 0x0f, 0xf9, 0x6c,
-0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x14, 0x5f, 0x80, 0x01, 0x58, 0x90, 0x80, 0x00, 0x58, 0x81, 0x00, 0x00,
-0x58, 0x61, 0x80, 0x00, 0x58, 0xa0, 0x00, 0x00, 0x05, 0xcf, 0x80, 0x0a, 0x49, 0xf7, 0xaa, 0x38,
-0x49, 0xf7, 0xac, 0x6e, 0x04, 0x5f, 0x80, 0x01, 0x4e, 0xa3, 0x00, 0x06, 0x58, 0x75, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x0a, 0x40, 0x70, 0x28, 0x37, 0x40, 0x73, 0x1c, 0x37, 0x4e, 0x12, 0x00, 0x04,
-0x50, 0x73, 0x80, 0x01, 0x4e, 0x93, 0x00, 0x06, 0x58, 0x44, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0a,
-0x40, 0x40, 0x24, 0x37, 0x40, 0x43, 0x10, 0x57, 0x4e, 0x22, 0x00, 0x04, 0x50, 0x42, 0x00, 0x01,
-0x4e, 0x83, 0x00, 0x06, 0x58, 0x34, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x40, 0x30, 0x20, 0x37,
-0x40, 0x33, 0x0f, 0xd7, 0x4f, 0xe2, 0x00, 0x04, 0x50, 0x31, 0x80, 0x01, 0x40, 0x02, 0x80, 0xb7,
-0x40, 0x12, 0x1c, 0x00, 0x40, 0x20, 0x8c, 0x00, 0x4e, 0x52, 0x00, 0x04, 0x50, 0x00, 0x00, 0x01,
-0x42, 0x10, 0x70, 0x24, 0x41, 0xe0, 0x88, 0x00, 0x3d, 0xef, 0xf9, 0x7d, 0x3c, 0x2f, 0xf9, 0x7e,
-0x3c, 0x0f, 0xf9, 0x7f, 0x3c, 0x1f, 0xf9, 0x80, 0x3c, 0x8f, 0xf9, 0x7b, 0x3c, 0x6f, 0xf9, 0x78,
-0x3c, 0xaf, 0xf9, 0x79, 0x3c, 0x9f, 0xf9, 0x7a, 0x3c, 0x3f, 0xf9, 0x83, 0x44, 0x00, 0x00, 0x01,
-0x3d, 0xcf, 0xf9, 0x7c, 0x3c, 0x7f, 0xf9, 0x81, 0x3c, 0x4f, 0xf9, 0x82, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec,
-0x58, 0x91, 0x80, 0x00, 0x58, 0x82, 0x00, 0x00, 0x04, 0x3f, 0x80, 0x0d, 0x04, 0x4f, 0x80, 0x0c,
-0x14, 0x2f, 0x80, 0x03, 0x14, 0x3f, 0x80, 0x00, 0x14, 0x4f, 0x80, 0x01, 0x14, 0x5f, 0x80, 0x02,
-0x58, 0xa0, 0x80, 0x00, 0x54, 0x60, 0x00, 0xff, 0x05, 0xcf, 0x80, 0x0f, 0x49, 0xf7, 0xa9, 0xc0,
-0x49, 0xf7, 0xab, 0xf6, 0x04, 0x2f, 0x80, 0x03, 0x04, 0x3f, 0x80, 0x00, 0x04, 0x4f, 0x80, 0x01,
-0x04, 0x5f, 0x80, 0x02, 0x4e, 0x92, 0x00, 0x1c, 0x3c, 0x7d, 0xf9, 0x79, 0x4e, 0x72, 0x00, 0x18,
-0x41, 0xe0, 0x1c, 0xf7, 0x40, 0x73, 0x78, 0x37, 0x55, 0xe0, 0x80, 0xff, 0x12, 0x75, 0x00, 0x00,
-0x11, 0xe1, 0x00, 0x00, 0x02, 0x25, 0x00, 0x00, 0x40, 0x7f, 0x18, 0x08, 0x3d, 0xed, 0xf9, 0x70,
-0x43, 0xe0, 0x08, 0x73, 0x40, 0x2f, 0x1c, 0x00, 0x14, 0x24, 0x80, 0x00, 0x4e, 0x42, 0x00, 0x22,
-0x3c, 0x1d, 0xf9, 0x7a, 0x4e, 0x12, 0x00, 0x1e, 0x40, 0x20, 0x04, 0x37, 0x3c, 0x7d, 0xf9, 0x81,
-0x40, 0x23, 0x0b, 0xd7, 0x40, 0x1f, 0x78, 0x00, 0x54, 0x10, 0x80, 0xff, 0x41, 0xe1, 0x1c, 0x00,
-0x13, 0xe4, 0x00, 0x00, 0x10, 0x12, 0x80, 0x00, 0x41, 0xe0, 0x94, 0x08, 0x02, 0x24, 0x00, 0x00,
-0x3c, 0x1d, 0xf9, 0x70, 0x42, 0x10, 0x08, 0x73, 0x40, 0x50, 0xf8, 0x00, 0x14, 0x52, 0x00, 0x00,
-0x4f, 0xc2, 0x00, 0x26, 0x3c, 0x1d, 0xf9, 0x7b, 0x4e, 0x12, 0x00, 0x22, 0x40, 0x10, 0x04, 0x57,
-0x3c, 0x4d, 0xf9, 0x82, 0x3c, 0x2d, 0xf9, 0x81, 0x40, 0x52, 0x08, 0x00, 0x41, 0xe3, 0x04, 0x97,
-0x40, 0x22, 0xf8, 0x00, 0x12, 0x21, 0x80, 0x00, 0x54, 0x12, 0x00, 0xff, 0x04, 0x6f, 0x80, 0x0e,
-0x10, 0x13, 0x00, 0x00, 0x40, 0x60, 0x94, 0x08, 0x02, 0x51, 0x80, 0x00, 0x3c, 0x3d, 0xf9, 0x70,
-0x42, 0x30, 0x14, 0x73, 0x40, 0x01, 0x98, 0x00, 0x14, 0x0e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01,
-0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x44, 0x60, 0x2f, 0xc0, 0x54, 0x70, 0x00, 0xff, 0x4b, 0xe0, 0x18, 0x01,
-0x46, 0x50, 0x06, 0x63, 0x4c, 0x02, 0x80, 0x1a, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x20, 0x07, 0x60,
-0x58, 0x51, 0x03, 0x00, 0x4c, 0x02, 0x80, 0x12, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x30, 0x07, 0x62,
-0x58, 0x51, 0x88, 0x00, 0x4c, 0x02, 0x80, 0x0a, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x40, 0x07, 0x63,
-0x58, 0x52, 0x06, 0x00, 0x4c, 0x02, 0xc0, 0x04, 0x3e, 0x77, 0xe5, 0xb8, 0x44, 0x00, 0x00, 0x01,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x51, 0xff, 0xff, 0xf8, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xab, 0x6c, 0x2e, 0x27, 0xe5, 0xb8,
-0x4e, 0x23, 0x00, 0x10, 0x2e, 0x07, 0xe5, 0xac, 0x2e, 0x17, 0xe5, 0xa8, 0x2e, 0x47, 0xe5, 0xf4,
-0x2e, 0x57, 0xe5, 0xb0, 0x2e, 0x67, 0xe5, 0xb4, 0x58, 0x31, 0x00, 0x00, 0x48, 0x00, 0x00, 0x30,
-0x44, 0x60, 0x2f, 0xc0, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x20, 0x06, 0x63, 0x4c, 0x01, 0x00, 0x1a,
-0x46, 0x70, 0x07, 0x60, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0x73, 0x83, 0x00, 0x4c, 0x03, 0x80, 0x12,
-0x46, 0x80, 0x07, 0x62, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0x84, 0x08, 0x00, 0x4c, 0x04, 0x00, 0x0a,
-0x46, 0x90, 0x07, 0x63, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0x94, 0x86, 0x00, 0x4c, 0x04, 0xc0, 0x14,
-0x44, 0x60, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x30, 0x00, 0x01, 0x58, 0x43, 0x00, 0x00, 0x58, 0x53, 0x00, 0x00, 0x14, 0x6f, 0x80, 0x00,
-0x49, 0x00, 0x02, 0x12, 0x46, 0x7a, 0x00, 0x00, 0x04, 0x83, 0x80, 0x59, 0x46, 0x6a, 0x00, 0x00,
-0x14, 0x83, 0x00, 0x5a, 0x44, 0x70, 0x2c, 0xcc, 0x3c, 0x9d, 0xf9, 0x7d, 0x44, 0x60, 0x31, 0x3c,
-0x4b, 0xe0, 0x1c, 0x01, 0x4b, 0xe0, 0x18, 0x01, 0x42, 0x80, 0x24, 0x73, 0x46, 0x1a, 0x00, 0x00,
-0x14, 0x80, 0x80, 0x5b, 0x3c, 0xad, 0xf9, 0x6a, 0x58, 0x04, 0x00, 0x00, 0x40, 0x35, 0x20, 0x08,
-0x46, 0x8a, 0x00, 0x00, 0x40, 0x40, 0x0c, 0x00, 0x14, 0x44, 0x00, 0x5c, 0x3c, 0x2d, 0xf9, 0x6b,
-0x46, 0x5a, 0x00, 0x00, 0x40, 0x11, 0x20, 0x08, 0x40, 0x92, 0x04, 0x00, 0x14, 0x92, 0x80, 0x5d,
-0x3c, 0xad, 0xf9, 0x6c, 0x4b, 0xe0, 0x1c, 0x01, 0x4b, 0xe0, 0x18, 0x01, 0x40, 0xa5, 0x04, 0x09,
-0x42, 0x90, 0x28, 0x73, 0x46, 0x3a, 0x00, 0x00, 0x14, 0x91, 0x80, 0x5e, 0x3c, 0x0d, 0xf9, 0x6c,
-0x40, 0x80, 0x04, 0x09, 0x4b, 0xe0, 0x1c, 0x01, 0x4b, 0xe0, 0x18, 0x01, 0x42, 0x90, 0x20, 0x73,
-0x58, 0x84, 0x80, 0x00, 0x46, 0x9a, 0x00, 0x00, 0x14, 0x84, 0x80, 0x5f, 0x3c, 0x9d, 0xf9, 0x6d,
-0x4b, 0xe0, 0x1c, 0x01, 0x4b, 0xe0, 0x18, 0x01, 0x42, 0x80, 0x24, 0x73, 0x46, 0x4a, 0x00, 0x00,
-0x14, 0x82, 0x00, 0x61, 0x44, 0x00, 0x00, 0x00, 0x49, 0xf7, 0xaa, 0xcc, 0x3e, 0x08, 0x02, 0x76,
-0x3e, 0x18, 0x02, 0x78, 0x49, 0xf7, 0xae, 0x1c, 0x3c, 0x00, 0x01, 0x3c, 0x3c, 0x08, 0x01, 0x3a,
-0x3c, 0x08, 0x01, 0x39, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa8, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xf0, 0x04, 0x7f, 0x80, 0x08,
-0x04, 0x6f, 0x80, 0x09, 0x14, 0x7f, 0x80, 0x00, 0x14, 0x6f, 0x80, 0x01, 0x04, 0x7f, 0x80, 0x0a,
-0x04, 0x6f, 0x80, 0x0b, 0x00, 0x8f, 0x80, 0x38, 0x49, 0xff, 0xfe, 0x02, 0x4e, 0x02, 0x00, 0x74,
-0x4e, 0x73, 0x00, 0x06, 0x3c, 0x7f, 0xf9, 0x6a, 0x48, 0x00, 0x00, 0x16, 0x5c, 0xf3, 0x81, 0x01,
-0x4e, 0xf2, 0x00, 0x08, 0x44, 0x10, 0x00, 0x01, 0x3c, 0x1f, 0xf9, 0x6a, 0x48, 0x00, 0x00, 0x0c,
-0x3e, 0x1f, 0xe5, 0xa8, 0x5c, 0xf3, 0x82, 0x01, 0x4e, 0xf2, 0x00, 0x22, 0x44, 0x30, 0x00, 0x02,
-0x14, 0x30, 0x80, 0x00, 0x4e, 0x63, 0x00, 0x06, 0x3c, 0x6f, 0xf9, 0x6b, 0x48, 0x00, 0x00, 0x1e,
-0x5c, 0xf3, 0x01, 0x01, 0x4e, 0xf2, 0x00, 0x08, 0x45, 0xe0, 0x00, 0x01, 0x3d, 0xef, 0xf9, 0x6b,
-0x48, 0x00, 0x00, 0x14, 0x3e, 0x1f, 0xe5, 0xac, 0x5c, 0xf3, 0x02, 0x01, 0x4e, 0xf2, 0x00, 0x08,
-0x44, 0x00, 0x00, 0x02, 0x14, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x08, 0x44, 0x00, 0x00, 0x00,
-0x14, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x3a, 0x04, 0x0f, 0x80, 0x0c, 0x49, 0xff, 0xfd, 0x98,
-0x4e, 0x02, 0x00, 0x32, 0x04, 0x0f, 0x80, 0x0d, 0x49, 0xff, 0xfd, 0x70, 0x4e, 0x02, 0x00, 0x2c,
-0x04, 0x1f, 0x80, 0x0f, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xb2, 0x4e, 0x02, 0x00, 0x24,
-0x3e, 0x6f, 0xe5, 0xd4, 0x49, 0xff, 0xfe, 0xdc, 0x14, 0x6f, 0x80, 0x00, 0x3e, 0x6f, 0xe5, 0xd8,
-0x3e, 0x1f, 0xe5, 0xc0, 0x3e, 0x2f, 0xe5, 0xc4, 0x3e, 0x3f, 0xe5, 0xc8, 0x3e, 0x4f, 0xe5, 0xcc,
-0x3e, 0x5f, 0xe5, 0xd0, 0x14, 0x6f, 0x80, 0x01, 0x3e, 0x0f, 0xe5, 0xbc, 0x3e, 0x6f, 0xe5, 0xdc,
-0x14, 0x6f, 0x80, 0x02, 0x49, 0x00, 0x01, 0x92, 0x49, 0xff, 0xfd, 0x20, 0x44, 0x00, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x10, 0x3a, 0x6f, 0xa0, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xdc, 0x49, 0xf7, 0xc9, 0xf0,
-0x44, 0x00, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x49, 0xf7, 0xa8, 0x4e, 0x44, 0x60, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x40, 0x58, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x20, 0x40, 0x30, 0x04, 0x08,
-0x44, 0x40, 0x50, 0x00, 0x58, 0x53, 0x00, 0x00, 0x14, 0x6f, 0x80, 0x00, 0x14, 0x6f, 0x80, 0x01,
-0x14, 0x6f, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x03, 0x14, 0x6f, 0x80, 0x04, 0x14, 0x6f, 0x80, 0x05,
-0x14, 0x6f, 0x80, 0x06, 0x14, 0x6f, 0x80, 0x07, 0x49, 0xff, 0xff, 0x46, 0x4e, 0x02, 0x00, 0x74,
-0x44, 0x00, 0xff, 0xff, 0x49, 0xf7, 0xa7, 0x3c, 0x44, 0x00, 0x00, 0x0f, 0x49, 0xf7, 0xa7, 0x4a,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xa9, 0xee, 0x3c, 0x0d, 0xf9, 0x62, 0x44, 0x10, 0x00, 0x03,
-0x44, 0x70, 0x38, 0xf4, 0x4c, 0x00, 0xc0, 0x2a, 0x46, 0x45, 0x00, 0x00, 0x04, 0x32, 0x01, 0x63,
-0x58, 0x13, 0x00, 0x00, 0x51, 0xe1, 0x80, 0x01, 0x40, 0x2f, 0x00, 0x13, 0x58, 0x31, 0x00, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x0f, 0xff,
-0x44, 0x30, 0x00, 0x18, 0x44, 0x00, 0x00, 0x01, 0x4b, 0xe0, 0x1c, 0x01, 0x2e, 0x17, 0xe5, 0x8c,
-0x46, 0x0a, 0x50, 0x08, 0x46, 0x3a, 0x00, 0x00, 0x40, 0x50, 0xa8, 0x08, 0x40, 0x42, 0x80, 0x00,
-0x14, 0x41, 0x80, 0x61, 0x48, 0x00, 0x00, 0x34, 0x44, 0x20, 0x02, 0x88, 0x58, 0x31, 0x00, 0x00,
-0x58, 0x13, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x20, 0x0f, 0xff, 0x44, 0x30, 0x00, 0x18, 0x44, 0x00, 0x00, 0x01, 0x4b, 0xe0, 0x1c, 0x01,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x0f, 0xff, 0x44, 0x30, 0x00, 0x34, 0x44, 0x00, 0x00, 0x02,
-0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x10, 0x00, 0x01, 0x44, 0x20, 0x0f, 0xff, 0x44, 0x30, 0x00, 0x18,
-0x44, 0x00, 0x00, 0x02, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x02, 0x58, 0x10, 0x00, 0x00,
-0x44, 0x20, 0x0f, 0xff, 0x40, 0x30, 0x0c, 0x08, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x00,
-0x49, 0xf7, 0xa9, 0x88, 0x51, 0xff, 0x80, 0x24, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0x3c, 0x51, 0xff, 0xff, 0xf4, 0x04, 0x6f, 0x80, 0x01, 0x54, 0x00, 0x00, 0xff,
-0x42, 0x43, 0x7c, 0x08, 0x14, 0x4f, 0x80, 0x01, 0x04, 0x5f, 0x80, 0x01, 0x46, 0x4a, 0x00, 0x00,
-0x42, 0x52, 0xc0, 0x09, 0x14, 0x5f, 0x80, 0x01, 0x10, 0x0f, 0x80, 0x05, 0x04, 0x0f, 0x80, 0x01,
-0x14, 0x02, 0x00, 0x65, 0x04, 0x52, 0x00, 0x65, 0x46, 0x0a, 0x00, 0x00, 0x14, 0x5f, 0x80, 0x01,
-0x04, 0x5f, 0x80, 0x01, 0x4e, 0x55, 0xff, 0xf8, 0x04, 0x00, 0x00, 0x65, 0x14, 0x0f, 0x80, 0x01,
-0x04, 0x5f, 0x80, 0x01, 0x04, 0x4f, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x01, 0x40, 0x42, 0x14, 0x09,
-0x42, 0x52, 0x9c, 0x0b, 0x54, 0x42, 0x00, 0x03, 0x54, 0x00, 0x00, 0x1f, 0x10, 0x51, 0x80, 0x00,
-0x10, 0x40, 0x80, 0x00, 0x10, 0x01, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0x98, 0x04,
-0x4a, 0x00, 0x78, 0x20, 0x51, 0xff, 0xff, 0xf8, 0x44, 0x30, 0x00, 0x00, 0x14, 0x3f, 0x80, 0x01,
-0x46, 0x2a, 0x00, 0x00, 0x04, 0x01, 0x00, 0x64, 0x54, 0x10, 0x80, 0xff, 0x14, 0x0f, 0x80, 0x01,
-0x4e, 0x12, 0x00, 0x08, 0x04, 0x4f, 0x80, 0x01, 0x58, 0x02, 0x00, 0x10, 0x48, 0x00, 0x00, 0x06,
-0x04, 0x5f, 0x80, 0x01, 0x42, 0x02, 0x90, 0x09, 0x14, 0x0f, 0x80, 0x01, 0x46, 0x0a, 0x00, 0x00,
-0x04, 0x2f, 0x80, 0x01, 0x14, 0x20, 0x00, 0x64, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x08,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0x3c, 0x51, 0xff, 0xff, 0xf8, 0x04, 0x6f, 0x80, 0x01,
-0x54, 0x00, 0x00, 0x03, 0x40, 0x63, 0x08, 0x09, 0x40, 0x63, 0x08, 0x08, 0x40, 0x73, 0x00, 0x04,
-0x14, 0x7f, 0x80, 0x01, 0x54, 0x10, 0x80, 0x03, 0x04, 0x0f, 0x80, 0x01, 0x44, 0x6f, 0xff, 0xf3,
-0x40, 0x00, 0x18, 0x02, 0x40, 0x70, 0x88, 0x08, 0x40, 0x10, 0x1c, 0x04, 0x14, 0x1f, 0x80, 0x01,
-0x54, 0x61, 0x00, 0x07, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x7f, 0xff, 0x8f, 0x40, 0x00, 0x9c, 0x02,
-0x40, 0x23, 0x10, 0x08, 0x40, 0x60, 0x08, 0x04, 0x14, 0x6f, 0x80, 0x01, 0x54, 0x31, 0x80, 0x01,
-0x04, 0x2f, 0x80, 0x01, 0x42, 0x01, 0x1c, 0x09, 0x40, 0x71, 0x9c, 0x08, 0x40, 0x60, 0x1c, 0x04,
-0x14, 0x6f, 0x80, 0x01, 0x54, 0x32, 0x00, 0x7f, 0x04, 0x0f, 0x80, 0x01, 0x44, 0x2f, 0x80, 0xff,
-0x40, 0x10, 0x08, 0x02, 0x40, 0x71, 0xa0, 0x08, 0x40, 0x40, 0x9c, 0x04, 0x14, 0x4f, 0x80, 0x01,
-0x54, 0x62, 0x80, 0x7f, 0x04, 0x3f, 0x80, 0x01, 0x40, 0x23, 0x3c, 0x08, 0x46, 0x6f, 0xfc, 0x07,
-0x58, 0x63, 0x0f, 0xff, 0x40, 0x01, 0x98, 0x02, 0x40, 0x10, 0x08, 0x04, 0x14, 0x1f, 0x80, 0x01,
-0x00, 0x7f, 0x80, 0x10, 0x04, 0x5f, 0x80, 0x01, 0x40, 0x43, 0xd8, 0x08, 0x40, 0x32, 0xa8, 0x08,
-0x40, 0x31, 0xa8, 0x09, 0x40, 0x21, 0x90, 0x04, 0x14, 0x2f, 0x80, 0x01, 0x46, 0x0a, 0x00, 0x00,
-0x04, 0x1f, 0x80, 0x01, 0x14, 0x10, 0x00, 0x58, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x08,
-0x3a, 0x6f, 0x9c, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0x3c, 0x46, 0x6a, 0x00, 0x00,
-0x04, 0x63, 0x00, 0x59, 0x14, 0x60, 0x00, 0x00, 0x46, 0x0a, 0x00, 0x00, 0x04, 0x60, 0x00, 0x5a,
-0x46, 0x0a, 0x00, 0x00, 0x14, 0x60, 0x80, 0x00, 0x04, 0x10, 0x00, 0x5b, 0x46, 0x0a, 0x00, 0x00,
-0x14, 0x11, 0x00, 0x00, 0x04, 0x20, 0x00, 0x5c, 0x46, 0x0a, 0x00, 0x00, 0x14, 0x21, 0x80, 0x00,
-0x04, 0x10, 0x00, 0x5d, 0x58, 0x20, 0x00, 0x00, 0x14, 0x12, 0x00, 0x00, 0x04, 0x31, 0x00, 0x5e,
-0x46, 0x0a, 0x00, 0x00, 0x14, 0x32, 0x80, 0x00, 0x04, 0x10, 0x00, 0x5f, 0x04, 0x2f, 0x80, 0x01,
-0x58, 0x50, 0x00, 0x00, 0x14, 0x11, 0x00, 0x00, 0x04, 0x32, 0x80, 0x60, 0x04, 0x4f, 0x80, 0x02,
-0x46, 0x0a, 0x00, 0x00, 0x14, 0x32, 0x00, 0x00, 0x04, 0x10, 0x00, 0x61, 0x04, 0x2f, 0x80, 0x03,
-0x44, 0x00, 0x00, 0x01, 0x14, 0x11, 0x00, 0x00, 0x3a, 0x6f, 0x98, 0x04, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x54, 0x70, 0x80, 0xff, 0x54, 0x61, 0x00, 0xff,
-0x58, 0x13, 0x00, 0x00, 0x54, 0x80, 0x00, 0xff, 0x58, 0x03, 0x80, 0x00, 0x54, 0x91, 0x80, 0xff,
-0x49, 0xf7, 0xa7, 0x8e, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x4a, 0x04, 0x5f, 0x80, 0x01, 0x54, 0x13, 0x80, 0x03, 0x42, 0x42, 0xfc, 0x08,
-0x14, 0x4f, 0x80, 0x01, 0x54, 0x24, 0x80, 0x01, 0x04, 0x3f, 0x80, 0x01, 0x43, 0xe1, 0xc0, 0x08,
-0x15, 0xef, 0x80, 0x01, 0x10, 0x8f, 0x80, 0x05, 0x40, 0x51, 0x1c, 0x08, 0x04, 0x7f, 0x80, 0x01,
-0x41, 0xe0, 0x94, 0x08, 0x42, 0x43, 0x9c, 0x09, 0x40, 0x32, 0x14, 0x04, 0x14, 0x3f, 0x80, 0x01,
-0x44, 0x1f, 0xff, 0x9f, 0x04, 0x0f, 0x80, 0x01, 0x40, 0x70, 0x04, 0x02, 0x40, 0x73, 0xf8, 0x04,
-0x14, 0x7f, 0x80, 0x01, 0x54, 0x63, 0x00, 0x1f, 0x04, 0x5f, 0x80, 0x01, 0x46, 0x3a, 0x00, 0x00,
-0x40, 0x42, 0x94, 0x09, 0x40, 0x42, 0x14, 0x08, 0x40, 0x62, 0x18, 0x04, 0x14, 0x6f, 0x80, 0x01,
-0x58, 0x31, 0x81, 0x94, 0x04, 0x0f, 0x80, 0x01, 0x58, 0x11, 0x80, 0x00, 0x14, 0x01, 0x80, 0x00,
-0x05, 0xe0, 0x80, 0x00, 0x15, 0xef, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x01, 0x4e, 0x05, 0xff, 0xfa,
-0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xf8, 0x54, 0x60, 0x00, 0xff, 0x54, 0x70, 0x80, 0xff,
-0x58, 0x13, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00, 0x54, 0x81, 0x00, 0xff, 0x49, 0xf7, 0xa7, 0x28,
-0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0xc0, 0x08, 0x4e, 0x63, 0x00, 0x42, 0x44, 0x50, 0x00, 0x02,
-0x4c, 0x72, 0xc0, 0x3e, 0x04, 0x1f, 0x80, 0x01, 0x46, 0x2f, 0xfe, 0x0f, 0x54, 0x43, 0x80, 0x1f,
-0x58, 0x21, 0x0f, 0xff, 0x40, 0x32, 0x40, 0x08, 0x40, 0x70, 0x88, 0x02, 0x40, 0x73, 0x8c, 0x04,
-0x14, 0x7f, 0x80, 0x01, 0x54, 0x03, 0x00, 0x03, 0x05, 0xef, 0x80, 0x01, 0x42, 0x4f, 0x54, 0x09,
-0x42, 0x42, 0x58, 0x09, 0x40, 0x50, 0x54, 0x08, 0x40, 0x32, 0x14, 0x04, 0x14, 0x3f, 0x80, 0x01,
-0x04, 0x0f, 0x80, 0x01, 0x54, 0x14, 0x00, 0x01, 0x42, 0x60, 0x5c, 0x09, 0x41, 0xe0, 0xdc, 0x08,
-0x40, 0x53, 0x78, 0x04, 0x14, 0x5f, 0x80, 0x01, 0x46, 0x6a, 0x00, 0x00, 0x04, 0x4f, 0x80, 0x01,
-0x14, 0x43, 0x00, 0x09, 0x49, 0xf7, 0xab, 0x14, 0x04, 0x33, 0x00, 0x09, 0x14, 0x3f, 0x80, 0x01,
-0x04, 0x0f, 0x80, 0x01, 0x54, 0x00, 0x0f, 0xff, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x0f, 0xff,
-0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x00, 0x01, 0x17,
-0x2e, 0x10, 0x02, 0x86, 0x4e, 0x12, 0x00, 0x06, 0x44, 0x20, 0x00, 0x00, 0x3e, 0x20, 0x02, 0x86,
-0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff, 0x40, 0x20, 0x08, 0x09, 0x40, 0x11, 0x00, 0x10,
-0x4e, 0x16, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xfd, 0x48, 0x00, 0x00, 0x56, 0x44, 0x30, 0x00, 0x01,
-0x54, 0x00, 0x00, 0x03, 0x4c, 0x11, 0xc0, 0x08, 0x40, 0x01, 0x00, 0x00, 0x50, 0x00, 0x7f, 0xff,
-0x48, 0x00, 0x00, 0x14, 0x5e, 0xf0, 0x80, 0x05, 0x4e, 0xf2, 0x00, 0x14, 0x44, 0x20, 0x00, 0x03,
-0x42, 0x00, 0x08, 0x24, 0x42, 0x50, 0x88, 0x24, 0x50, 0x30, 0x00, 0x05, 0x40, 0x41, 0x88, 0x0e,
-0x40, 0x12, 0x84, 0x0a, 0x40, 0x02, 0x04, 0x00, 0x40, 0x00, 0x00, 0x10, 0x48, 0x00, 0x00, 0x34,
-0x5e, 0xf0, 0x80, 0x09, 0x4e, 0xf2, 0x00, 0x0e, 0x44, 0x30, 0x00, 0x03, 0x42, 0x50, 0x8c, 0x24,
-0x50, 0x12, 0x80, 0x02, 0x40, 0x40, 0x88, 0x0a, 0x50, 0x02, 0x00, 0x03, 0x48, 0xff, 0xff, 0xee,
-0x5e, 0xf0, 0x80, 0x11, 0x4e, 0xf2, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x0b, 0x42, 0x40, 0x94, 0x24,
-0x50, 0x02, 0x00, 0x0f, 0x40, 0x20, 0x14, 0x0a, 0x50, 0x01, 0x00, 0x07, 0x48, 0x00, 0x00, 0x14,
-0x5e, 0xf0, 0x80, 0x21, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x0c,
-0x44, 0x00, 0x00, 0x05, 0x42, 0x20, 0x80, 0x24, 0x50, 0x31, 0x00, 0x10, 0x40, 0x11, 0x94, 0x0a,
-0x50, 0x00, 0x80, 0x0a, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xcc,
-0x2e, 0x07, 0xe4, 0x0e, 0x4e, 0x03, 0x02, 0xee, 0x3e, 0x0f, 0xe2, 0x1c, 0x00, 0x30, 0x00, 0x25,
-0x00, 0x40, 0x00, 0x24, 0x3e, 0x1f, 0xd6, 0x28, 0x20, 0xa0, 0x00, 0x27, 0x20, 0x90, 0x00, 0x22,
-0x2e, 0x57, 0xe6, 0x1c, 0x3a, 0x00, 0x84, 0x00, 0x50, 0x8f, 0x80, 0x28, 0x3c, 0x7d, 0xf5, 0x89,
-0x52, 0x62, 0x00, 0x00, 0x53, 0xc1, 0x80, 0x00, 0x50, 0x2f, 0x80, 0x18, 0x14, 0x5f, 0x80, 0x05,
-0x3a, 0x01, 0x04, 0x20, 0x14, 0x7f, 0x80, 0x09, 0x10, 0x64, 0x00, 0x03, 0x11, 0xc4, 0x00, 0x00,
-0x10, 0xa4, 0x00, 0x01, 0x10, 0x94, 0x00, 0x02, 0x3c, 0x4d, 0xf5, 0x88, 0x04, 0x2f, 0x80, 0x05,
-0x44, 0x30, 0x00, 0x01, 0x14, 0x4f, 0x80, 0x08, 0x4c, 0x21, 0xc0, 0x08, 0x3e, 0x9f, 0xe3, 0xc8,
-0x14, 0x9f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x1c, 0x04, 0xaf, 0x80, 0x05, 0x44, 0x50, 0x00, 0x02,
-0x4c, 0xa2, 0xc0, 0x08, 0x3e, 0x6f, 0xe3, 0xd0, 0x14, 0x6f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x10,
-0x04, 0x4f, 0x80, 0x05, 0x3f, 0xef, 0xe3, 0xe0, 0x56, 0x22, 0x00, 0x03, 0x3e, 0x3f, 0xe3, 0xd8,
-0x40, 0x71, 0x88, 0x1a, 0x40, 0x7f, 0x08, 0x1b, 0x14, 0x7f, 0x80, 0x04, 0x44, 0x10, 0x00, 0x00,
-0x3e, 0x0f, 0xe3, 0xe8, 0x14, 0x1f, 0x80, 0x03, 0x14, 0x0f, 0x80, 0x02, 0x50, 0x8f, 0x80, 0x20,
-0x3e, 0xaf, 0xe3, 0xb4, 0x59, 0xc0, 0x80, 0x00, 0x04, 0x9f, 0x80, 0x05, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x92, 0x80, 0xc4, 0x04, 0x1f, 0x80, 0x04, 0x3e, 0x6f, 0xe3, 0xbc, 0x00, 0x30, 0x80, 0x00,
-0x00, 0x20, 0x80, 0x01, 0x40, 0x71, 0x8c, 0x00, 0x40, 0x43, 0x98, 0x00, 0x20, 0x72, 0x00, 0x01,
-0x51, 0xef, 0x80, 0x28, 0x38, 0x43, 0x0d, 0x10, 0x38, 0x6f, 0x09, 0x00, 0x5e, 0xf3, 0xff, 0xf7,
-0x4e, 0xf2, 0x00, 0x06, 0x44, 0x30, 0x00, 0x00, 0x48, 0x00, 0x00, 0x26, 0x5e, 0xf3, 0xff, 0xfc,
-0x4e, 0xf2, 0x00, 0x06, 0x44, 0x30, 0x00, 0x01, 0x48, 0x00, 0x00, 0x1e, 0x5e, 0xf3, 0xff, 0xff,
-0x4e, 0xf2, 0x00, 0x06, 0x44, 0x30, 0x00, 0x02, 0x48, 0x00, 0x00, 0x16, 0x4e, 0x76, 0x00, 0x06,
-0x44, 0x30, 0x00, 0x04, 0x48, 0x00, 0x00, 0x10, 0x5e, 0xf3, 0x80, 0x13, 0x4e, 0xf3, 0x00, 0x06,
-0x44, 0x30, 0x00, 0xfc, 0x48, 0x00, 0x00, 0x08, 0x3e, 0x5f, 0xe3, 0xf8, 0x40, 0x03, 0x94, 0x00,
-0x00, 0x30, 0x7f, 0xff, 0x40, 0x11, 0x08, 0x00, 0x50, 0x9f, 0x80, 0x28, 0x41, 0xe4, 0x84, 0x00,
-0x00, 0x9f, 0x00, 0x01, 0x40, 0x24, 0x98, 0x00, 0x40, 0x21, 0x00, 0x10, 0x5e, 0xf1, 0x7f, 0xf7,
-0x4e, 0xf2, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x26, 0x5e, 0xf1, 0x7f, 0xfc,
-0x4e, 0xf2, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x1e, 0x5e, 0xf1, 0x7f, 0xff,
-0x4e, 0xf2, 0x00, 0x06, 0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x16, 0x4e, 0x26, 0x00, 0x06,
-0x44, 0x00, 0x00, 0x04, 0x48, 0x00, 0x00, 0x10, 0x5e, 0xf1, 0x00, 0x13, 0x4e, 0xf3, 0x00, 0x06,
-0x44, 0x00, 0x00, 0xfc, 0x48, 0x00, 0x00, 0x08, 0x3e, 0x0f, 0xe3, 0xf8, 0x40, 0x51, 0x00, 0x00,
-0x00, 0x02, 0xff, 0xff, 0x41, 0xe0, 0x0c, 0x00, 0x54, 0x0f, 0x00, 0xff, 0x14, 0x4f, 0x80, 0x01,
-0x49, 0xff, 0xfe, 0xb2, 0x40, 0x54, 0x9c, 0x00, 0x40, 0x12, 0x80, 0x01, 0x04, 0x9f, 0x80, 0x01,
-0x00, 0x05, 0x00, 0x01, 0x3e, 0x3f, 0xe3, 0xf0, 0x3e, 0x4f, 0xe3, 0xf4, 0x00, 0x55, 0x00, 0x00,
-0x40, 0x2e, 0x0c, 0x00, 0x40, 0x7e, 0x10, 0x00, 0x54, 0x10, 0x80, 0xff, 0x00, 0x41, 0x00, 0x00,
-0x40, 0x63, 0x24, 0x00, 0x40, 0x30, 0x80, 0x01, 0x04, 0x9f, 0x80, 0x03, 0x00, 0x03, 0x80, 0x00,
-0x40, 0x53, 0x14, 0x01, 0x54, 0x31, 0x80, 0xff, 0x50, 0x7f, 0x80, 0x18, 0x38, 0x63, 0xa4, 0x08,
-0x40, 0x22, 0x90, 0x00, 0x40, 0x41, 0x80, 0x00, 0x40, 0x03, 0xa4, 0x00, 0x50, 0x7f, 0x80, 0x24,
-0x10, 0x10, 0x00, 0x01, 0x38, 0x23, 0xf0, 0x08, 0x10, 0x44, 0x00, 0x00, 0x04, 0x4f, 0x80, 0x02,
-0x10, 0x52, 0x00, 0x00, 0x10, 0x32, 0x00, 0x01, 0x04, 0x3f, 0x80, 0x04, 0x50, 0x61, 0x80, 0x02,
-0x14, 0x6f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x20, 0x05, 0xef, 0x80, 0x03, 0x3e, 0x6f, 0xe3, 0xbc,
-0x40, 0x5f, 0x18, 0x00, 0x20, 0x62, 0x80, 0x01, 0x20, 0x22, 0x80, 0x00, 0x00, 0x15, 0x00, 0x00,
-0x00, 0x35, 0x00, 0x01, 0x04, 0x9f, 0x80, 0x02, 0x40, 0x41, 0x04, 0x01, 0x40, 0x03, 0x0c, 0x01,
-0x50, 0x7f, 0x80, 0x24, 0x10, 0x44, 0x80, 0x00, 0x10, 0x04, 0x80, 0x01, 0x38, 0x23, 0xf0, 0x08,
-0x10, 0x64, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00, 0x4e, 0x07, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x08, 0x5e, 0xf0, 0x7f, 0xc1, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xc1,
-0x10, 0x04, 0x00, 0x00, 0x04, 0x4f, 0x80, 0x03, 0x04, 0x0f, 0x80, 0x02, 0x50, 0x92, 0x00, 0x02,
-0x50, 0x70, 0x00, 0x02, 0x51, 0xce, 0x00, 0x01, 0x44, 0x50, 0x00, 0x04, 0x50, 0x84, 0x00, 0x01,
-0x14, 0x9f, 0x80, 0x03, 0x50, 0xa5, 0x00, 0x02, 0x14, 0x7f, 0x80, 0x02, 0x4d, 0xc2, 0xfe, 0xf6,
-0x50, 0x8f, 0x80, 0x24, 0x20, 0x54, 0x00, 0x03, 0x3e, 0x3f, 0xfa, 0xc0, 0x14, 0x5f, 0x80, 0x02,
-0x44, 0x50, 0x00, 0x00, 0x20, 0xa4, 0x00, 0x00, 0x3e, 0x6f, 0xfa, 0xcc, 0x14, 0xaf, 0x80, 0x03,
-0x50, 0x4f, 0x80, 0x2c, 0x20, 0x14, 0x00, 0x01, 0x21, 0xc4, 0x00, 0x02, 0x14, 0x1f, 0x80, 0x04,
-0x59, 0xee, 0x00, 0x00, 0x58, 0xa2, 0x80, 0x00, 0x44, 0x90, 0x00, 0x40, 0x44, 0x80, 0x00, 0x3f,
-0x59, 0xc1, 0x80, 0x00, 0x04, 0x0f, 0x80, 0x03, 0x04, 0x7f, 0x80, 0x04, 0x04, 0x2f, 0x80, 0x02,
-0x10, 0x02, 0x00, 0x00, 0x11, 0xe2, 0x00, 0x02, 0x10, 0x72, 0x00, 0x01, 0x10, 0x22, 0x00, 0x03,
-0x54, 0x72, 0x80, 0xff, 0x58, 0x22, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
-0x40, 0x13, 0x80, 0x00, 0x40, 0x00, 0x80, 0x10, 0x10, 0x01, 0x00, 0x00, 0x4e, 0x05, 0x00, 0x0e,
-0x5e, 0xf0, 0x00, 0x40, 0x4e, 0xf3, 0x00, 0x04, 0x10, 0x81, 0x00, 0x00, 0x4e, 0x33, 0x00, 0x16,
-0x10, 0x33, 0x00, 0x00, 0x48, 0x00, 0x00, 0x12, 0x52, 0x10, 0x00, 0x00, 0x54, 0x00, 0x80, 0xff,
-0x4e, 0x33, 0x00, 0x0a, 0x10, 0x03, 0x00, 0x00, 0x5c, 0xf0, 0x00, 0x41, 0x4e, 0xf3, 0x00, 0x04,
-0x10, 0x93, 0x00, 0x00, 0x10, 0xa1, 0x00, 0x00, 0x50, 0x31, 0x80, 0x01, 0x54, 0x31, 0x80, 0xff,
-0x44, 0x00, 0x00, 0x04, 0x50, 0x21, 0x00, 0x01, 0x4c, 0x30, 0x7f, 0xd2, 0x20, 0x72, 0x00, 0x01,
-0x20, 0x22, 0x00, 0x02, 0x40, 0x03, 0x98, 0x08, 0x40, 0x11, 0x30, 0x08, 0x20, 0x32, 0x00, 0x00,
-0x20, 0x22, 0x00, 0x03, 0x40, 0x70, 0x04, 0x04, 0x40, 0x03, 0x8c, 0x04, 0x40, 0x11, 0x48, 0x08,
-0x40, 0x70, 0x04, 0x04, 0x50, 0x52, 0x80, 0x01, 0x44, 0x20, 0x00, 0x03, 0x1c, 0x7e, 0x00, 0x01,
-0x50, 0x63, 0x00, 0x01, 0x4c, 0x51, 0x7f, 0xa0, 0x46, 0x66, 0x02, 0x00, 0x04, 0x03, 0x01, 0x48,
-0x3c, 0x5d, 0xfe, 0xb1, 0x40, 0x90, 0x60, 0x09, 0x40, 0x94, 0xe0, 0x08, 0x40, 0x14, 0x94, 0x04,
-0x14, 0x13, 0x01, 0x48, 0x46, 0x96, 0x02, 0x01, 0x04, 0x74, 0x81, 0x48, 0x40, 0x33, 0xe0, 0x09,
-0x40, 0x31, 0xe0, 0x08, 0x40, 0x01, 0x94, 0x04, 0x14, 0x04, 0x81, 0x48, 0x46, 0x66, 0x02, 0x00,
-0x58, 0x63, 0x00, 0xfc, 0x04, 0x23, 0x00, 0x00, 0x2e, 0x07, 0xfa, 0xcd, 0x44, 0x7f, 0xc0, 0xff,
-0x40, 0x51, 0x1c, 0x02, 0x40, 0x30, 0x20, 0x08, 0x40, 0x41, 0x94, 0x04, 0x14, 0x43, 0x00, 0x00,
-0x46, 0x9f, 0xff, 0x03, 0x04, 0x13, 0x00, 0x00, 0x58, 0x94, 0x8f, 0xff, 0x40, 0x70, 0xa4, 0x02,
-0x40, 0x30, 0x38, 0x08, 0x40, 0x21, 0x9c, 0x04, 0x14, 0x23, 0x00, 0x00, 0x50, 0x5f, 0x80, 0x20,
-0x00, 0x42, 0x80, 0x01, 0x00, 0x02, 0x80, 0x02, 0x00, 0x72, 0x80, 0x03, 0x50, 0x32, 0x7f, 0xff,
-0x50, 0x90, 0x7f, 0xff, 0x54, 0x11, 0x80, 0xff, 0x54, 0x54, 0x80, 0xff, 0x40, 0x00, 0x84, 0x00,
-0x40, 0x22, 0xa8, 0x08, 0x50, 0x33, 0xff, 0xff, 0x40, 0x90, 0x08, 0x04, 0x54, 0x51, 0x80, 0xff,
-0x44, 0x44, 0x02, 0x01, 0x46, 0x66, 0x02, 0x00, 0x40, 0x14, 0x90, 0x04, 0x40, 0x72, 0xcc, 0x08,
-0x04, 0x03, 0x01, 0x46, 0x40, 0x50, 0x9c, 0x04, 0x46, 0x7f, 0x80, 0x00, 0x40, 0x90, 0x1c, 0x02,
-0x40, 0x22, 0xa4, 0x04, 0x14, 0x23, 0x01, 0x46, 0x46, 0x96, 0x02, 0x01, 0x04, 0x04, 0x81, 0x46,
-0x40, 0x30, 0x1c, 0x02, 0x40, 0x42, 0x8c, 0x04, 0x14, 0x44, 0x81, 0x46, 0x2e, 0x0f, 0xe3, 0xe8,
-0x5e, 0xf0, 0x7f, 0xff, 0x4e, 0xf2, 0x00, 0x0c, 0x44, 0x60, 0x00, 0x02, 0x40, 0x40, 0x18, 0x56,
-0x50, 0x52, 0x00, 0x0f, 0x40, 0x12, 0x80, 0x10, 0x48, 0x00, 0x00, 0x0e, 0x5e, 0xf0, 0x00, 0x12,
-0x4e, 0xf3, 0x00, 0x08, 0x44, 0x10, 0x00, 0x0f, 0x58, 0x50, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0c,
-0x44, 0x10, 0x00, 0x0f, 0x44, 0x20, 0x00, 0x02, 0x40, 0x30, 0x08, 0x16, 0x50, 0x91, 0x80, 0x06,
-0x40, 0x54, 0x80, 0x10, 0x2e, 0x2f, 0xe3, 0xea, 0x5e, 0xf1, 0x00, 0x10, 0x4e, 0xf3, 0x00, 0x06,
-0x44, 0x40, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x0a, 0x44, 0x90, 0x00, 0x02, 0x40, 0x61, 0x24, 0x56,
-0x50, 0x43, 0x00, 0x07, 0x40, 0x42, 0x00, 0x10, 0x2e, 0x2f, 0xe3, 0xec, 0x5e, 0xf1, 0x00, 0x10,
-0x4e, 0xf3, 0x00, 0x06, 0x44, 0x30, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x0a, 0x44, 0x60, 0x00, 0x02,
-0x40, 0x01, 0x18, 0x56, 0x50, 0x20, 0x00, 0x07, 0x40, 0x31, 0x00, 0x10, 0x2e, 0x2f, 0xe3, 0xee,
-0x5e, 0xf1, 0x00, 0x1e, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x20, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x08,
-0x44, 0x00, 0x00, 0x02, 0x40, 0x21, 0x00, 0x16, 0x40, 0x21, 0x00, 0x10, 0x44, 0x90, 0x00, 0x00,
-0x42, 0x52, 0xa4, 0x00, 0x42, 0x60, 0xa4, 0x00, 0x42, 0x42, 0x24, 0x00, 0x40, 0x02, 0x90, 0x08,
-0x40, 0x50, 0x18, 0x04, 0x42, 0x61, 0xa4, 0x00, 0x40, 0x02, 0x20, 0x08, 0x40, 0x42, 0x80, 0x04,
-0x42, 0x21, 0x24, 0x00, 0x40, 0x03, 0x30, 0x08, 0x46, 0x16, 0x02, 0x00, 0x40, 0x32, 0x00, 0x04,
-0x40, 0x91, 0x40, 0x08, 0x04, 0x60, 0x81, 0x40, 0x40, 0x41, 0xa4, 0x04, 0x46, 0x9f, 0xff, 0x00,
-0x40, 0x53, 0x24, 0x02, 0x40, 0x02, 0x14, 0x04, 0x14, 0x00, 0x81, 0x40, 0x46, 0x16, 0x02, 0x01,
-0x04, 0x20, 0x81, 0x40, 0x40, 0x31, 0x24, 0x02, 0x40, 0x52, 0x0c, 0x04, 0x14, 0x50, 0x81, 0x40,
-0x51, 0xff, 0x80, 0x34, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xd4, 0x2e, 0x00, 0x02, 0x86, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0x84, 0x70,
-0x46, 0x86, 0x02, 0x00, 0x46, 0x6b, 0xfc, 0xff, 0x14, 0x8f, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x03,
-0x04, 0x1f, 0x80, 0x02, 0x04, 0x0f, 0x80, 0x03, 0x58, 0x54, 0x00, 0x00, 0x58, 0x42, 0x80, 0x00,
-0x58, 0x32, 0x00, 0x00, 0x14, 0x5f, 0x80, 0x04, 0x14, 0x4f, 0x80, 0x05, 0x14, 0x3f, 0x80, 0x06,
-0x58, 0x10, 0x88, 0x00, 0x58, 0x00, 0x03, 0xfc, 0x14, 0x1f, 0x80, 0x02, 0x14, 0x0f, 0x80, 0x03,
-0x04, 0x7f, 0x80, 0x04, 0x04, 0x1f, 0x80, 0x05, 0x04, 0x0f, 0x80, 0x06, 0x46, 0x26, 0x02, 0x04,
-0x14, 0x2f, 0x80, 0x07, 0x58, 0x10, 0x80, 0x04, 0x58, 0x00, 0x01, 0x7c, 0x14, 0x7f, 0x80, 0x04,
-0x14, 0x1f, 0x80, 0x05, 0x14, 0x0f, 0x80, 0x06, 0x04, 0x7f, 0x80, 0x07, 0x44, 0x10, 0x00, 0x01,
-0x3e, 0x10, 0x02, 0x86, 0x04, 0x0f, 0x80, 0x03, 0x04, 0x1f, 0x80, 0x02, 0x58, 0x73, 0x82, 0x04,
-0x14, 0x7f, 0x80, 0x07, 0x14, 0x00, 0x80, 0x00, 0x44, 0x00, 0x02, 0x45, 0x04, 0x1f, 0x80, 0x04,
-0x44, 0x70, 0x00, 0x00, 0x14, 0x00, 0x80, 0x00, 0x47, 0xe0, 0xa5, 0xf0, 0x04, 0x1f, 0x80, 0x05,
-0x59, 0xef, 0x00, 0x5f, 0x14, 0x00, 0x80, 0x00, 0x59, 0xc1, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x06,
-0x58, 0xa1, 0x80, 0x00, 0x14, 0x70, 0x00, 0x00, 0x46, 0x92, 0x01, 0x71, 0x04, 0x1f, 0x80, 0x07,
-0x15, 0xe0, 0x80, 0x00, 0x58, 0x94, 0x87, 0x17, 0x45, 0xe1, 0x00, 0x01, 0x58, 0x81, 0x80, 0x00,
-0x46, 0x61, 0x72, 0x02, 0x58, 0x51, 0x80, 0x00, 0x46, 0x42, 0x02, 0x02, 0x58, 0x31, 0x00, 0x00,
-0x58, 0x22, 0x80, 0x00, 0x15, 0xee, 0x00, 0x82, 0x14, 0x95, 0x02, 0x17, 0x58, 0x63, 0x08, 0x20,
-0x58, 0x42, 0x00, 0x20, 0x44, 0x94, 0xb0, 0x43, 0x14, 0x64, 0x02, 0x18, 0x14, 0x42, 0x82, 0x19,
-0x58, 0x61, 0x00, 0x00, 0x14, 0x71, 0x80, 0x42, 0x14, 0x91, 0x01, 0xbe, 0x04, 0x03, 0x01, 0xb2,
-0x42, 0x80, 0x78, 0x08, 0x14, 0x83, 0x01, 0xb2, 0x04, 0x01, 0x01, 0xb3, 0x58, 0x51, 0x00, 0x00,
-0x14, 0x5f, 0x80, 0x02, 0x58, 0x00, 0x00, 0x01, 0x14, 0x0f, 0x80, 0x01, 0x46, 0x4d, 0xbe, 0xa2,
-0x04, 0x0f, 0x80, 0x02, 0x14, 0x4f, 0x80, 0x03, 0x58, 0x00, 0x06, 0xec, 0x14, 0x0f, 0x80, 0x02,
-0x04, 0x0f, 0x80, 0x03, 0x14, 0x3f, 0x80, 0x04, 0x58, 0x00, 0x0f, 0x40, 0x14, 0x0f, 0x80, 0x03,
-0x46, 0x17, 0xf5, 0x55, 0x04, 0x0f, 0x80, 0x04, 0x14, 0x1f, 0x80, 0x05, 0x58, 0x00, 0x04, 0x60,
-0x14, 0x0f, 0x80, 0x04, 0x59, 0xc1, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x05, 0x15, 0xcf, 0x80, 0x06,
-0x58, 0x00, 0x00, 0x80, 0x14, 0x0f, 0x80, 0x05, 0x47, 0xe6, 0x02, 0x01, 0x04, 0x0f, 0x80, 0x06,
-0x15, 0xef, 0x80, 0x07, 0x58, 0x00, 0x05, 0x50, 0x14, 0x0f, 0x80, 0x06, 0x58, 0xa1, 0x00, 0x00,
-0x04, 0x0f, 0x80, 0x07, 0x14, 0xaf, 0x80, 0x08, 0x58, 0x00, 0x05, 0x50, 0x14, 0x0f, 0x80, 0x07,
-0x46, 0x90, 0x0d, 0x8b, 0x04, 0x0f, 0x80, 0x08, 0x14, 0x9f, 0x80, 0x09, 0x58, 0x00, 0x05, 0x58,
-0x14, 0x0f, 0x80, 0x08, 0x04, 0x0f, 0x80, 0x09, 0x47, 0xc0, 0x48, 0x90, 0x58, 0x00, 0x0c, 0xc4,
-0x14, 0x0f, 0x80, 0x09, 0x04, 0x0f, 0x80, 0x01, 0x59, 0xce, 0x0c, 0x18, 0x14, 0x01, 0x01, 0xb3,
-0x04, 0x0f, 0x80, 0x03, 0x04, 0x2f, 0x80, 0x02, 0x46, 0xa1, 0x29, 0x29, 0x14, 0x01, 0x00, 0x00,
-0x04, 0x0f, 0x80, 0x05, 0x04, 0x2f, 0x80, 0x04, 0x58, 0x9f, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00,
-0x46, 0x80, 0x2e, 0x11, 0x04, 0x2f, 0x80, 0x06, 0x58, 0x64, 0x80, 0x00, 0x15, 0xc1, 0x00, 0x00,
-0x46, 0x50, 0x69, 0x8f, 0x04, 0x0f, 0x80, 0x07, 0x58, 0x43, 0x00, 0x00, 0x15, 0xc0, 0x00, 0x00,
-0x46, 0x35, 0x22, 0x0c, 0x04, 0x0f, 0x80, 0x09, 0x04, 0x2f, 0x80, 0x08, 0x58, 0x52, 0x88, 0x2a,
-0x58, 0x12, 0x00, 0x00, 0x58, 0xa5, 0x05, 0x15, 0x58, 0x84, 0x0d, 0x30, 0x14, 0x01, 0x00, 0x00,
-0x14, 0xaf, 0x01, 0x82, 0x14, 0x84, 0x81, 0x83, 0x14, 0x53, 0x01, 0x84, 0x14, 0x32, 0x01, 0x85,
-0x44, 0x30, 0x05, 0xd5, 0x14, 0x30, 0x81, 0xa5, 0x2e, 0x57, 0xe2, 0x1c, 0x2e, 0x37, 0xe2, 0x5f,
-0x54, 0x42, 0x80, 0x30, 0x56, 0x02, 0x00, 0x10, 0x40, 0x41, 0x80, 0x10, 0x5c, 0x60, 0x00, 0x01,
-0x4e, 0x44, 0x00, 0x26, 0x4e, 0x03, 0x00, 0x12, 0x46, 0x76, 0x02, 0x04, 0x46, 0x14, 0x00, 0xa0,
-0x58, 0x10, 0x8a, 0xbf, 0x46, 0x06, 0x02, 0x04, 0x14, 0x13, 0x80, 0x98, 0x58, 0x00, 0x02, 0x70,
-0x44, 0x10, 0x4f, 0x00, 0x48, 0x00, 0x00, 0x10, 0x46, 0x56, 0x02, 0x04, 0x46, 0x24, 0x01, 0x81,
-0x58, 0x21, 0x08, 0xbf, 0x46, 0x06, 0x02, 0x04, 0x14, 0x22, 0x80, 0x98, 0x58, 0x00, 0x02, 0x70,
-0x44, 0x10, 0x5f, 0x00, 0x14, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x46, 0x86, 0x02, 0x04,
-0x46, 0x14, 0x04, 0x04, 0x58, 0x04, 0x00, 0x00, 0x58, 0x10, 0x80, 0xbf, 0x14, 0x14, 0x00, 0x98,
-0x14, 0x70, 0x00, 0x9c, 0x46, 0x26, 0x02, 0x04, 0x58, 0x71, 0x00, 0x00, 0x44, 0x50, 0xf8, 0xf8,
-0x14, 0x51, 0x00, 0x99, 0x14, 0x53, 0x80, 0x9a, 0x4e, 0x44, 0x00, 0x14, 0x4e, 0x62, 0x00, 0x0a,
-0x46, 0x06, 0x02, 0x04, 0x46, 0x12, 0xf0, 0xa2, 0x58, 0x00, 0x02, 0x6c, 0x48, 0x00, 0x00, 0x10,
-0x46, 0x06, 0x02, 0x04, 0x46, 0x12, 0xf1, 0x82, 0x58, 0x00, 0x02, 0x6c, 0x48, 0x00, 0x00, 0x08,
-0x46, 0x06, 0x02, 0x04, 0x46, 0x12, 0xf1, 0x62, 0x58, 0x00, 0x02, 0x6c, 0x54, 0x31, 0x80, 0x40,
-0x14, 0x10, 0x00, 0x00, 0x4e, 0x32, 0x00, 0x0a, 0x46, 0x00, 0x03, 0xff, 0x58, 0x11, 0x00, 0x00,
-0x58, 0x00, 0x08, 0xf8, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x00, 0x03, 0xfb, 0x46, 0x26, 0x02, 0x04,
-0x46, 0x16, 0x02, 0x04, 0x58, 0x00, 0x08, 0xb8, 0x14, 0x01, 0x01, 0xc5, 0x14, 0x00, 0x81, 0xc6,
-0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc, 0x04, 0x70, 0x00, 0x00, 0x46, 0x8f, 0xfe, 0x00,
-0x58, 0x84, 0x00, 0x0f, 0x40, 0x73, 0xa0, 0x02, 0x58, 0x54, 0x80, 0x00, 0x46, 0x46, 0x02, 0x00,
-0x46, 0x12, 0x00, 0xfc, 0x58, 0x32, 0x80, 0x00, 0x14, 0x70, 0x00, 0x00, 0x58, 0x10, 0x80, 0x0c,
-0x44, 0x70, 0x00, 0x00, 0x46, 0x26, 0x02, 0x04, 0x14, 0x72, 0x80, 0x5f, 0x14, 0x12, 0x01, 0x45,
-0x14, 0x11, 0x81, 0x45, 0x44, 0x10, 0xc4, 0xc6, 0x14, 0x11, 0x01, 0x23, 0x58, 0x51, 0x00, 0x00,
-0x04, 0x82, 0x80, 0x64, 0x44, 0x3c, 0xff, 0xff, 0x40, 0x44, 0x0c, 0x02, 0x42, 0x22, 0x40, 0x08,
-0x14, 0x22, 0x80, 0x64, 0x46, 0x7f, 0xff, 0x00, 0x04, 0x10, 0x00, 0x00, 0x58, 0x73, 0x80, 0x0f,
-0x40, 0x80, 0x9c, 0x02, 0x14, 0x80, 0x00, 0x00, 0x2e, 0x47, 0xe4, 0x0e, 0x4e, 0x43, 0x00, 0x06,
-0x2e, 0x07, 0xe4, 0x0f, 0x4e, 0x02, 0x00, 0x54, 0x46, 0x26, 0x02, 0x00, 0x46, 0x04, 0xf1, 0x7b,
-0x58, 0x84, 0x80, 0x00, 0x58, 0x00, 0x0b, 0xf5, 0x14, 0x01, 0x01, 0x46, 0x58, 0x11, 0x00, 0x00,
-0x14, 0x04, 0x01, 0x46, 0x04, 0x30, 0x81, 0x40, 0x46, 0x7f, 0xff, 0x00, 0x40, 0x41, 0x9c, 0x02,
-0x58, 0x52, 0x77, 0x6f, 0x14, 0x50, 0x81, 0x40, 0x58, 0x04, 0x00, 0x00, 0x04, 0x80, 0x01, 0x40,
-0x40, 0x24, 0x1c, 0x02, 0x58, 0x31, 0x77, 0x6f, 0x14, 0x30, 0x01, 0x40, 0x04, 0x40, 0x81, 0x48,
-0x46, 0x8f, 0xf0, 0x00, 0x46, 0x30, 0x0b, 0x20, 0x40, 0x52, 0x20, 0x02, 0x58, 0x31, 0x84, 0xc1,
-0x40, 0x72, 0x8c, 0x04, 0x14, 0x70, 0x81, 0x48, 0x04, 0x20, 0x01, 0x48, 0x58, 0x70, 0x80, 0x00,
-0x40, 0x41, 0x20, 0x02, 0x40, 0x52, 0x0c, 0x04, 0x14, 0x50, 0x01, 0x48, 0x04, 0x13, 0x81, 0x61,
-0x44, 0x40, 0xff, 0xff, 0x46, 0x30, 0xb4, 0x90, 0x40, 0x20, 0x90, 0x02, 0x40, 0x81, 0x0c, 0x04,
-0x46, 0x06, 0x02, 0x01, 0x14, 0x83, 0x81, 0x61, 0x58, 0x00, 0x05, 0x84, 0x04, 0x50, 0x00, 0x00,
-0x40, 0x12, 0x90, 0x02, 0x40, 0x10, 0x8c, 0x04, 0x48, 0x00, 0x00, 0x78, 0x49, 0xff, 0xfa, 0xc6,
-0x2e, 0x77, 0xe6, 0x1a, 0x4e, 0x73, 0x00, 0x1c, 0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61,
-0x44, 0x30, 0xff, 0xff, 0x46, 0x50, 0xb4, 0x90, 0x40, 0x70, 0x8c, 0x02, 0x40, 0x23, 0x94, 0x04,
-0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61, 0x58, 0x00, 0x05, 0x84, 0x04, 0x40, 0x00, 0x00,
-0x41, 0xe2, 0x0c, 0x02, 0x40, 0x1f, 0x14, 0x04, 0x48, 0x00, 0x00, 0x58, 0x2e, 0x0f, 0xe6, 0x1b,
-0x5e, 0xf0, 0x7f, 0xfb, 0x4e, 0xf3, 0x00, 0x1c, 0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61,
-0x44, 0x30, 0xff, 0xff, 0x46, 0x50, 0xb4, 0x90, 0x40, 0x70, 0x8c, 0x02, 0x40, 0x23, 0x94, 0x04,
-0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61, 0x58, 0x00, 0x05, 0x84, 0x04, 0x40, 0x00, 0x00,
-0x41, 0xe2, 0x0c, 0x02, 0x40, 0x1f, 0x14, 0x04, 0x48, 0x00, 0x00, 0x38, 0x5e, 0xf0, 0x7f, 0xf7,
-0x4e, 0xf3, 0x00, 0x1c, 0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61, 0x44, 0x50, 0xff, 0xff,
-0x46, 0x40, 0xb6, 0x90, 0x40, 0x70, 0x94, 0x02, 0x40, 0x23, 0x90, 0x04, 0x46, 0x06, 0x02, 0x01,
-0x14, 0x24, 0x01, 0x61, 0x58, 0x00, 0x05, 0x84, 0x04, 0x30, 0x00, 0x00, 0x41, 0xe1, 0x94, 0x02,
-0x40, 0x1f, 0x10, 0x04, 0x48, 0x00, 0x00, 0x1a, 0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61,
-0x44, 0x50, 0xff, 0xff, 0x46, 0x40, 0xb6, 0x90, 0x40, 0x70, 0x94, 0x02, 0x40, 0x23, 0x90, 0x04,
-0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61, 0x58, 0x00, 0x05, 0x84, 0x04, 0x30, 0x00, 0x00,
-0x41, 0xe1, 0x94, 0x02, 0x40, 0x1f, 0x10, 0x04, 0x46, 0x56, 0x02, 0x00, 0x46, 0x4b, 0x20, 0x10,
-0x46, 0x36, 0x02, 0x01, 0x14, 0x10, 0x00, 0x00, 0x14, 0x42, 0x83, 0x45, 0x14, 0x41, 0x83, 0x45,
-0x2e, 0x27, 0xe2, 0x25, 0x2e, 0x17, 0xe2, 0x24, 0x4e, 0x62, 0x00, 0x0c, 0x46, 0x06, 0x02, 0x00,
-0x46, 0x10, 0xcb, 0x00, 0x58, 0x00, 0x0d, 0x08, 0x58, 0x10, 0x80, 0x40, 0x48, 0x00, 0x00, 0x1e,
-0x54, 0x00, 0x80, 0x7f, 0x4e, 0x02, 0x00, 0x12, 0x40, 0x70, 0x9c, 0x09, 0x40, 0x41, 0x50, 0x08,
-0x40, 0x22, 0x00, 0x04, 0x40, 0x83, 0xcc, 0x08, 0x46, 0x06, 0x02, 0x00, 0x40, 0x11, 0x20, 0x04,
-0x58, 0x00, 0x0d, 0x08, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x10, 0xc9, 0xc0,
-0x58, 0x00, 0x0d, 0x08, 0x58, 0x10, 0x80, 0x40, 0x14, 0x10, 0x00, 0x00, 0x2e, 0x27, 0xe2, 0x2b,
-0x2e, 0x17, 0xe2, 0x2a, 0x4e, 0x62, 0x00, 0x0c, 0x46, 0x06, 0x02, 0x01, 0x46, 0x10, 0xcb, 0x80,
-0x58, 0x00, 0x0d, 0x08, 0x58, 0x10, 0x80, 0x40, 0x48, 0x00, 0x00, 0x1e, 0x54, 0x00, 0x80, 0x7f,
-0x4e, 0x02, 0x00, 0x12, 0x40, 0x50, 0x9c, 0x09, 0x40, 0x81, 0x50, 0x08, 0x40, 0x34, 0x00, 0x04,
-0x40, 0x62, 0xcc, 0x08, 0x46, 0x06, 0x02, 0x01, 0x40, 0x11, 0x98, 0x04, 0x58, 0x00, 0x0d, 0x08,
-0x48, 0x00, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x10, 0xc9, 0xf0, 0x58, 0x00, 0x0d, 0x08,
-0x58, 0x10, 0x80, 0x40, 0x14, 0x10, 0x00, 0x00, 0x2e, 0x07, 0xe6, 0x20, 0x4e, 0x02, 0x00, 0x26,
-0x46, 0x66, 0x02, 0x00, 0x04, 0x83, 0x03, 0x46, 0x44, 0x4f, 0x00, 0xff, 0x40, 0x54, 0x10, 0x02,
-0x58, 0x32, 0x83, 0x00, 0x14, 0x33, 0x03, 0x46, 0x46, 0x26, 0x02, 0x01, 0x58, 0x21, 0x0d, 0x18,
-0x04, 0x11, 0x00, 0x00, 0x46, 0x00, 0x30, 0x00, 0x40, 0x70, 0x90, 0x02, 0x46, 0x10, 0x20, 0x01,
-0x46, 0x56, 0x02, 0x01, 0x58, 0x43, 0x00, 0x00, 0x58, 0x32, 0x80, 0x00, 0x58, 0x10, 0x86, 0x1f,
-0x58, 0x73, 0x83, 0x00, 0x48, 0x00, 0x00, 0x24, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x03, 0x46,
-0x44, 0x6f, 0x00, 0xff, 0x40, 0x12, 0x18, 0x02, 0x14, 0x10, 0x03, 0x46, 0x46, 0x26, 0x02, 0x01,
-0x58, 0x21, 0x0d, 0x18, 0x04, 0x71, 0x00, 0x00, 0x46, 0x18, 0x20, 0x01, 0x46, 0x00, 0x60, 0x20,
-0x58, 0x83, 0x00, 0x00, 0x46, 0x66, 0x02, 0x00, 0x46, 0x56, 0x02, 0x01, 0x46, 0x46, 0x02, 0x00,
-0x46, 0x36, 0x02, 0x01, 0x58, 0x10, 0x83, 0x1a, 0x40, 0x73, 0xa0, 0x02, 0x14, 0x71, 0x00, 0x00,
-0x14, 0x13, 0x03, 0x47, 0x46, 0x76, 0x02, 0x04, 0x14, 0x12, 0x83, 0x47, 0x14, 0x02, 0x03, 0x48,
-0x14, 0x01, 0x83, 0x48, 0x58, 0x73, 0x86, 0x00, 0x04, 0x03, 0x80, 0x00, 0x42, 0x40, 0x58, 0x09,
-0x42, 0x42, 0x5c, 0x09, 0x42, 0x82, 0x5c, 0x08, 0x14, 0x83, 0x80, 0x00, 0x04, 0x63, 0x80, 0x00,
-0x46, 0x16, 0x02, 0x00, 0x42, 0x23, 0x1c, 0x09, 0x14, 0x23, 0x80, 0x00, 0x04, 0x30, 0x81, 0x8e,
-0x40, 0x41, 0x94, 0x09, 0x40, 0x42, 0x14, 0x08, 0x58, 0x62, 0x00, 0x1e, 0x14, 0x60, 0x81, 0x8e,
-0x58, 0x80, 0x80, 0x00, 0x04, 0x54, 0x01, 0x83, 0x46, 0x73, 0x00, 0x00, 0x40, 0x02, 0x9c, 0x04,
-0x14, 0x04, 0x01, 0x83, 0x46, 0x26, 0x02, 0x04, 0x58, 0x21, 0x02, 0x00, 0x04, 0x31, 0x00, 0x00,
-0x46, 0x6f, 0xff, 0x00, 0x58, 0x41, 0x83, 0xff, 0x14, 0x41, 0x00, 0x00, 0x58, 0x63, 0x03, 0xff,
-0x04, 0x51, 0x00, 0x00, 0x44, 0x81, 0x60, 0x00, 0x40, 0x72, 0x98, 0x02, 0x40, 0x33, 0xa0, 0x04,
-0x14, 0x31, 0x00, 0x00, 0x46, 0x16, 0x01, 0x30, 0x58, 0x10, 0x80, 0x9c, 0x04, 0x50, 0x80, 0x00,
-0x40, 0x82, 0xa4, 0x09, 0x40, 0x84, 0x24, 0x08, 0x14, 0x80, 0x80, 0x00, 0x04, 0x70, 0x80, 0x00,
-0x50, 0x00, 0xff, 0xfc, 0x58, 0x23, 0x80, 0x82, 0x14, 0x20, 0x80, 0x00, 0x04, 0x80, 0x00, 0x00,
-0x46, 0x46, 0x02, 0x04, 0x40, 0x14, 0x20, 0x09, 0x40, 0x10, 0xa0, 0x08, 0x14, 0x10, 0x00, 0x00,
-0x04, 0x70, 0x00, 0x00, 0x58, 0x53, 0x80, 0x14, 0x14, 0x50, 0x00, 0x00, 0x46, 0x36, 0x02, 0x04,
-0x04, 0x02, 0x00, 0x8a, 0x58, 0x31, 0x82, 0x0c, 0x40, 0x70, 0x14, 0x09, 0x40, 0x73, 0x94, 0x08,
-0x58, 0x03, 0x80, 0x0d, 0x14, 0x02, 0x00, 0x8a, 0x46, 0x78, 0x00, 0x00, 0x04, 0x81, 0x80, 0x00,
-0x58, 0x73, 0x80, 0xff, 0x40, 0x04, 0x1c, 0x02, 0x46, 0x77, 0xc9, 0x00, 0x58, 0x73, 0x84, 0x00,
-0x40, 0x00, 0x1c, 0x04, 0x14, 0x01, 0x80, 0x00, 0x04, 0x71, 0x80, 0x00, 0x46, 0x66, 0x02, 0x00,
-0x40, 0x73, 0xa0, 0x09, 0x40, 0x73, 0xa0, 0x08, 0x58, 0x83, 0x80, 0x01, 0x14, 0x81, 0x80, 0x00,
-0x04, 0x33, 0x01, 0x86, 0x40, 0x81, 0xbc, 0x09, 0x40, 0x84, 0x3c, 0x08, 0x58, 0x34, 0x7d, 0x10,
-0x14, 0x33, 0x01, 0x86, 0x46, 0x26, 0x02, 0x00, 0x58, 0x21, 0x06, 0x34, 0x04, 0x71, 0x00, 0x00,
-0x42, 0x63, 0x80, 0x09, 0x14, 0x61, 0x00, 0x00, 0x04, 0x31, 0x00, 0x00, 0x46, 0x60, 0x1f, 0x80,
-0x40, 0x71, 0x98, 0x04, 0x14, 0x71, 0x00, 0x00, 0x50, 0x11, 0x7f, 0xe0, 0x04, 0x20, 0x80, 0x00,
-0x42, 0x81, 0x4c, 0x09, 0x14, 0x80, 0x80, 0x00, 0x44, 0x8f, 0x00, 0xff, 0x04, 0x30, 0x80, 0x00,
-0x46, 0x56, 0x02, 0x01, 0x40, 0x21, 0xa0, 0x02, 0x58, 0x31, 0x4d, 0x00, 0x14, 0x30, 0x80, 0x00,
-0x04, 0x22, 0x81, 0xbc, 0x46, 0x46, 0x02, 0x00, 0x40, 0x31, 0x20, 0x02, 0x58, 0x11, 0xb0, 0x00,
-0x14, 0x12, 0x81, 0xbc, 0x04, 0x52, 0x01, 0xbc, 0x46, 0x33, 0x40, 0x00, 0x40, 0x12, 0xa0, 0x08,
-0x40, 0x10, 0xa0, 0x09, 0x40, 0x50, 0x8c, 0x04, 0x14, 0x52, 0x01, 0xbc, 0x46, 0x06, 0x02, 0x04,
-0x58, 0x00, 0x00, 0xf0, 0x04, 0x20, 0x00, 0x00, 0x58, 0x41, 0x00, 0x02, 0x14, 0x40, 0x00, 0x00,
-0x04, 0x10, 0x00, 0x00, 0x58, 0x50, 0x80, 0x04, 0x14, 0x50, 0x00, 0x00, 0x2e, 0x27, 0xe6, 0x1d,
-0x4e, 0x22, 0x00, 0x16, 0x46, 0x06, 0x02, 0x00, 0x04, 0x10, 0x03, 0x44, 0x46, 0x40, 0x0f, 0xff,
-0x58, 0x42, 0x0f, 0xff, 0x40, 0x30, 0x90, 0x02, 0x14, 0x30, 0x03, 0x44, 0x46, 0x56, 0x02, 0x01,
-0x04, 0x22, 0x83, 0x44, 0x40, 0x11, 0x10, 0x02, 0x14, 0x12, 0x83, 0x44, 0x46, 0x26, 0x02, 0x04,
-0x04, 0x01, 0x00, 0x64, 0x42, 0x40, 0x1c, 0x09, 0x14, 0x41, 0x00, 0x64, 0x51, 0xff, 0x80, 0x2c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3c, 0x0d, 0xf9, 0x8d, 0x4a, 0x00, 0x78, 0x20,
-0x46, 0x08, 0x00, 0x23, 0x04, 0x10, 0x00, 0x20, 0x46, 0x21, 0x10, 0x00, 0x40, 0x40, 0x88, 0x04,
-0x14, 0x40, 0x00, 0x20, 0x58, 0x50, 0x00, 0x00, 0x04, 0x22, 0x80, 0x21, 0x44, 0x31, 0x01, 0x11,
-0x40, 0x11, 0x0c, 0x04, 0x14, 0x12, 0x80, 0x21, 0x46, 0x08, 0x00, 0x00, 0x04, 0x40, 0x00, 0x42,
-0x46, 0x18, 0x10, 0x60, 0x46, 0x20, 0x48, 0x52, 0x58, 0x32, 0x40, 0x00, 0x58, 0x21, 0x03, 0x90,
-0x14, 0x30, 0x00, 0x42, 0x14, 0x20, 0x80, 0x02, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x36, 0x02, 0x00,
-0x14, 0x11, 0x83, 0x80, 0x4e, 0x23, 0x00, 0x08, 0x58, 0x11, 0x80, 0x00, 0x44, 0x21, 0x10, 0x00,
-0x48, 0x00, 0x00, 0x06, 0x46, 0x16, 0x02, 0x00, 0x44, 0x23, 0x10, 0x00, 0x40, 0x00, 0x08, 0x00,
-0x14, 0x00, 0x83, 0x81, 0x58, 0x01, 0x80, 0x00, 0x04, 0x20, 0x03, 0x84, 0x54, 0x11, 0x20, 0x00,
-0x4e, 0x13, 0xff, 0xfc, 0x4a, 0x00, 0x78, 0x20, 0x4e, 0x13, 0x00, 0x0c, 0x44, 0x1e, 0xef, 0xff,
-0x40, 0x00, 0x04, 0x02, 0x44, 0x21, 0x00, 0x00, 0x46, 0x16, 0x02, 0x00, 0x48, 0x00, 0x00, 0x0a,
-0x44, 0x2c, 0xef, 0xff, 0x40, 0x00, 0x08, 0x02, 0x46, 0x16, 0x02, 0x00, 0x44, 0x23, 0x00, 0x00,
-0x40, 0x00, 0x08, 0x04, 0x14, 0x00, 0x83, 0x81, 0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x03, 0x84,
-0x54, 0x32, 0x20, 0x00, 0x4e, 0x33, 0xff, 0xfc, 0x58, 0x50, 0x00, 0x00, 0x04, 0x02, 0x83, 0x83,
+0x49, 0xff, 0xfe, 0xc6, 0x51, 0xff, 0x80, 0x6c, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0x5c, 0x14, 0x0f, 0x80, 0x05, 0x50, 0x00, 0x00, 0x18,
+0x14, 0x0f, 0x80, 0x17, 0x50, 0x6f, 0x80, 0x60, 0x04, 0x1f, 0x80, 0x17, 0x44, 0x20, 0x00, 0x40,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xf7, 0xb2, 0xcc, 0x58, 0x23, 0x00, 0x00, 0x50, 0x3f, 0x80, 0xa0,
+0x50, 0x21, 0x00, 0x04, 0x4c, 0x21, 0xff, 0xfe, 0x04, 0x1f, 0x80, 0x05, 0x04, 0x4f, 0x80, 0x05,
+0x04, 0xa0, 0x80, 0x01, 0x05, 0xcf, 0x80, 0x05, 0x14, 0xaf, 0x80, 0x02, 0x50, 0x3f, 0x80, 0x60,
+0x05, 0xe2, 0x00, 0x02, 0x04, 0x01, 0x80, 0x00, 0x15, 0xef, 0x80, 0x03, 0x04, 0x2f, 0x80, 0x05,
+0x04, 0x5e, 0x00, 0x03, 0x14, 0x0f, 0x80, 0x16, 0x14, 0x5f, 0x80, 0x04, 0x46, 0x1d, 0x76, 0xaa,
+0x04, 0x61, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x02, 0x40, 0xa3, 0x00, 0x00, 0x14, 0x6f, 0x80, 0x01,
+0x04, 0x6f, 0x80, 0x03, 0x40, 0x71, 0x08, 0x05, 0x40, 0x83, 0x94, 0x02, 0x40, 0x93, 0x08, 0x02,
+0x58, 0x10, 0x84, 0x78, 0x40, 0x44, 0x24, 0x04, 0x41, 0xe5, 0x04, 0x00, 0x04, 0x01, 0x80, 0x01,
+0x41, 0xcf, 0x10, 0x00, 0x04, 0x5f, 0x80, 0x04, 0x40, 0x7e, 0x64, 0x0b, 0x40, 0x23, 0x88, 0x00,
+0x40, 0x42, 0x80, 0x00, 0x14, 0x0f, 0x80, 0x15, 0x04, 0x0f, 0x80, 0x02, 0x40, 0x81, 0x08, 0x05,
+0x46, 0x1e, 0x8c, 0x7b, 0x40, 0xa4, 0x18, 0x02, 0x40, 0x91, 0x00, 0x02, 0x58, 0x10, 0x87, 0x56,
+0x41, 0xe5, 0x24, 0x04, 0x41, 0xc2, 0x04, 0x00, 0x40, 0x6e, 0x78, 0x00, 0x40, 0x73, 0x50, 0x0b,
+0x40, 0x63, 0x88, 0x00, 0x04, 0x51, 0x80, 0x02, 0x04, 0xaf, 0x80, 0x03, 0x40, 0x83, 0x18, 0x05,
+0x46, 0x12, 0x42, 0x07, 0x40, 0x94, 0x00, 0x02, 0x41, 0xe5, 0x14, 0x00, 0x40, 0x43, 0x08, 0x02,
+0x58, 0x10, 0x80, 0xdb, 0x41, 0xcf, 0x04, 0x00, 0x14, 0x5f, 0x80, 0x14, 0x40, 0x54, 0x90, 0x04,
+0x40, 0x0e, 0x14, 0x00, 0x40, 0x80, 0x3c, 0x0b, 0x40, 0x84, 0x18, 0x00, 0x04, 0x91, 0x80, 0x03,
+0x04, 0x4f, 0x80, 0x02, 0x40, 0xa4, 0x20, 0x05, 0x46, 0x1c, 0x1b, 0xdc, 0x41, 0xe5, 0x08, 0x02,
+0x41, 0xc2, 0x24, 0x00, 0x40, 0x54, 0x18, 0x02, 0x58, 0x10, 0x8e, 0xee, 0x40, 0x0f, 0x14, 0x04,
+0x40, 0xae, 0x04, 0x00, 0x14, 0x9f, 0x80, 0x13, 0x40, 0x95, 0x00, 0x00, 0x40, 0x44, 0xa8, 0x0b,
+0x40, 0x92, 0x20, 0x00, 0x04, 0x51, 0x80, 0x04, 0x46, 0x0f, 0x57, 0xc0, 0x41, 0xe4, 0xa4, 0x05,
+0x58, 0x00, 0x0f, 0xaf, 0x40, 0x1f, 0x18, 0x02, 0x41, 0xc2, 0x80, 0x00, 0x40, 0xa4, 0xa0, 0x02,
+0x40, 0x4e, 0x08, 0x00, 0x40, 0x20, 0xa8, 0x04, 0x14, 0x5f, 0x80, 0x12, 0x40, 0x52, 0x08, 0x00,
+0x41, 0xc2, 0xe4, 0x0b, 0x40, 0x5e, 0x24, 0x00, 0x04, 0x11, 0x80, 0x05, 0x47, 0xe4, 0x78, 0x7c,
+0x40, 0x02, 0x94, 0x05, 0x59, 0xef, 0x06, 0x2a, 0x40, 0x40, 0xf8, 0x00, 0x40, 0x22, 0xa4, 0x02,
+0x40, 0xa0, 0x20, 0x02, 0x41, 0xc2, 0x18, 0x00, 0x40, 0x05, 0x08, 0x04, 0x41, 0xee, 0x00, 0x00,
+0x14, 0x1f, 0x80, 0x11, 0x40, 0x1f, 0x50, 0x0b, 0x41, 0xe0, 0x94, 0x00, 0x05, 0xc1, 0x80, 0x06,
+0x46, 0x6a, 0x83, 0x04, 0x40, 0x7f, 0x78, 0x05, 0x58, 0x63, 0x06, 0x13, 0x40, 0xa3, 0xa4, 0x02,
+0x40, 0x4e, 0x18, 0x00, 0x40, 0x2f, 0x14, 0x02, 0x40, 0x02, 0x20, 0x00, 0x40, 0x15, 0x08, 0x04,
+0x40, 0x60, 0x04, 0x00, 0x15, 0xcf, 0x80, 0x10, 0x41, 0xc3, 0x3c, 0x0b, 0x40, 0x6e, 0x78, 0x00,
+0x04, 0x71, 0x80, 0x07, 0x46, 0x8f, 0xd4, 0x69, 0x40, 0x23, 0x18, 0x05, 0x58, 0x84, 0x05, 0x01,
+0x40, 0x41, 0x14, 0x02, 0x40, 0xa3, 0xa0, 0x00, 0x40, 0x03, 0x78, 0x02, 0x40, 0x15, 0x24, 0x00,
+0x41, 0xc2, 0x00, 0x04, 0x40, 0x20, 0xf0, 0x00, 0x14, 0x7f, 0x80, 0x0f, 0x40, 0x71, 0x28, 0x0b,
+0x40, 0x23, 0x98, 0x00, 0x04, 0xa1, 0x80, 0x08, 0x46, 0x06, 0x98, 0x09, 0x40, 0x81, 0x08, 0x05,
+0x58, 0x00, 0x08, 0xd8, 0x40, 0x94, 0x78, 0x02, 0x40, 0x45, 0x00, 0x00, 0x40, 0x11, 0x18, 0x02,
+0x40, 0x74, 0x84, 0x04, 0x41, 0xc2, 0x14, 0x00, 0x40, 0x5e, 0x1c, 0x00, 0x14, 0xaf, 0x80, 0x0e,
+0x40, 0xa2, 0xe4, 0x0b, 0x40, 0x55, 0x08, 0x00, 0x04, 0x01, 0x80, 0x09, 0x46, 0x48, 0xb4, 0x4f,
+0x40, 0x82, 0x94, 0x05, 0x58, 0x42, 0x07, 0xaf, 0x41, 0xc4, 0x18, 0x02, 0x40, 0x90, 0x10, 0x00,
+0x40, 0x12, 0x88, 0x02, 0x40, 0x74, 0xf8, 0x00, 0x40, 0xae, 0x04, 0x04, 0x40, 0x83, 0xa8, 0x00,
+0x14, 0x0f, 0x80, 0x0d, 0x40, 0x04, 0x50, 0x0b, 0x40, 0x80, 0x14, 0x00, 0x05, 0xc1, 0x80, 0x0a,
+0x40, 0x44, 0x20, 0x05, 0x44, 0x9f, 0x5b, 0xb1, 0x40, 0x72, 0x08, 0x02, 0x41, 0xee, 0x24, 0x00,
+0x40, 0x14, 0x14, 0x02, 0x40, 0x03, 0x84, 0x04, 0x40, 0xaf, 0x18, 0x00, 0x40, 0x65, 0x00, 0x00,
+0x40, 0x43, 0x3c, 0x0b, 0x40, 0x62, 0x20, 0x00, 0x04, 0x91, 0x80, 0x0b, 0x47, 0xe8, 0x95, 0xcd,
+0x15, 0xcf, 0x80, 0x0c, 0x59, 0xef, 0x07, 0xbe, 0x41, 0xc3, 0x18, 0x05, 0x40, 0xae, 0x14, 0x02,
+0x40, 0x74, 0xf8, 0x00, 0x40, 0x13, 0x20, 0x02, 0x40, 0x03, 0x88, 0x00, 0x40, 0x45, 0x04, 0x04,
+0x14, 0x9f, 0x80, 0x0b, 0x40, 0x90, 0x10, 0x00, 0x41, 0xc4, 0xa8, 0x0b, 0x40, 0x9e, 0x18, 0x00,
+0x04, 0x11, 0x80, 0x0c, 0x46, 0x26, 0xb9, 0x01, 0x41, 0xe4, 0xa4, 0x05, 0x58, 0x21, 0x01, 0x22,
+0x40, 0x0f, 0x20, 0x02, 0x40, 0xa0, 0x88, 0x00, 0x40, 0x74, 0x98, 0x02, 0x41, 0xc0, 0x1c, 0x04,
+0x40, 0x45, 0x14, 0x00, 0x40, 0x52, 0x70, 0x00, 0x14, 0x1f, 0x80, 0x0a, 0x40, 0x12, 0xe4, 0x0b,
+0x40, 0x50, 0xa4, 0x00, 0x04, 0x21, 0x80, 0x0d, 0x47, 0xef, 0xd9, 0x87, 0x40, 0xa2, 0x94, 0x05,
+0x59, 0xef, 0x01, 0x93, 0x41, 0xc5, 0x18, 0x02, 0x40, 0x71, 0x78, 0x00, 0x40, 0x02, 0xa4, 0x02,
+0x40, 0x43, 0xa0, 0x00, 0x40, 0x8e, 0x00, 0x04, 0x40, 0x12, 0x20, 0x00, 0x41, 0xe0, 0xd0, 0x0b,
+0x40, 0x1f, 0x14, 0x00, 0x14, 0x2f, 0x80, 0x09, 0x46, 0xaa, 0x67, 0x94, 0x04, 0x21, 0x80, 0x0e,
+0x41, 0xe0, 0x84, 0x05, 0x58, 0xa5, 0x03, 0x8e, 0x40, 0x71, 0x28, 0x00, 0x40, 0x0f, 0x24, 0x02,
+0x41, 0xc0, 0x94, 0x02, 0x40, 0x40, 0x70, 0x04, 0x40, 0x83, 0x98, 0x00, 0x40, 0x64, 0x10, 0x00,
+0x40, 0xa3, 0x3c, 0x0b, 0x40, 0x65, 0x04, 0x00, 0x14, 0x2f, 0x80, 0x08, 0x04, 0x31, 0x80, 0x0f,
+0x46, 0x24, 0x9b, 0x40, 0x40, 0xa3, 0x18, 0x05, 0x58, 0x21, 0x08, 0x21, 0x40, 0x71, 0x88, 0x00,
+0x40, 0x05, 0x14, 0x02, 0x41, 0xc3, 0x04, 0x02, 0x40, 0x83, 0xa4, 0x00, 0x40, 0x90, 0x70, 0x04,
+0x40, 0x44, 0x24, 0x00, 0x14, 0x3f, 0x80, 0x07, 0x40, 0x72, 0x28, 0x0b, 0x04, 0x3f, 0x80, 0x15,
+0x46, 0x2f, 0x61, 0xe2, 0x40, 0x43, 0x98, 0x00, 0x58, 0x21, 0x05, 0x62, 0x41, 0xc1, 0x88, 0x00,
+0x40, 0x02, 0x04, 0x02, 0x41, 0xe3, 0x78, 0x02, 0x40, 0x80, 0x78, 0x04, 0x40, 0x9e, 0x14, 0x00,
+0x40, 0x54, 0xa0, 0x00, 0x04, 0x2f, 0x80, 0x10, 0x40, 0x72, 0xec, 0x0b, 0x47, 0xcc, 0x04, 0x0b,
+0x40, 0x53, 0x90, 0x00, 0x59, 0xce, 0x03, 0x40, 0x41, 0xe2, 0x28, 0x02, 0x40, 0x31, 0x70, 0x00,
+0x40, 0x02, 0x98, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x81, 0x84, 0x00, 0x40, 0x14, 0x24, 0x00,
+0x04, 0x3f, 0x80, 0x0b, 0x40, 0x70, 0xdc, 0x0b, 0x46, 0x22, 0x65, 0xe5, 0x40, 0x13, 0x94, 0x00,
+0x41, 0xc2, 0x10, 0x05, 0x58, 0x21, 0x0a, 0x51, 0x41, 0xe2, 0xf0, 0x02, 0x40, 0xa1, 0x88, 0x00,
+0x40, 0x00, 0x90, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x85, 0x18, 0x00, 0x40, 0x64, 0x24, 0x00,
+0x04, 0x2f, 0x80, 0x16, 0x40, 0x73, 0x48, 0x0b, 0x46, 0x3e, 0x9b, 0x6c, 0x40, 0x63, 0x84, 0x00,
+0x41, 0xc2, 0x94, 0x05, 0x58, 0x31, 0x87, 0xaa, 0x41, 0xe0, 0xf0, 0x02, 0x40, 0xa1, 0x0c, 0x00,
+0x40, 0x03, 0x14, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x85, 0x10, 0x00, 0x40, 0x44, 0x24, 0x00,
+0x05, 0xcf, 0x80, 0x11, 0x40, 0x72, 0x30, 0x0b, 0x46, 0x2d, 0x62, 0xf1, 0x40, 0x43, 0x98, 0x00,
+0x40, 0xa0, 0x84, 0x05, 0x58, 0x21, 0x00, 0x5d, 0x41, 0xe3, 0x28, 0x02, 0x40, 0x3e, 0x08, 0x00,
+0x40, 0x02, 0x04, 0x02, 0x40, 0x80, 0x78, 0x04, 0x40, 0x91, 0x94, 0x00, 0x40, 0x54, 0xa0, 0x00,
+0x05, 0xcf, 0x80, 0x0c, 0x40, 0x72, 0xec, 0x0b, 0x46, 0x20, 0x24, 0x41, 0x40, 0x53, 0x90, 0x00,
+0x40, 0xa3, 0x18, 0x05, 0x58, 0x21, 0x04, 0x53, 0x41, 0xe2, 0x28, 0x02, 0x40, 0x3e, 0x08, 0x00,
+0x40, 0x02, 0x98, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x81, 0x84, 0x00, 0x40, 0x14, 0x24, 0x00,
+0x04, 0x3f, 0x80, 0x07, 0x40, 0x70, 0xdc, 0x0b, 0x46, 0xad, 0x8a, 0x1e, 0x40, 0x13, 0x94, 0x00,
+0x41, 0xc2, 0x10, 0x05, 0x58, 0xa5, 0x06, 0x81, 0x41, 0xe2, 0xf0, 0x02, 0x40, 0x21, 0xa8, 0x00,
+0x40, 0x00, 0x90, 0x02, 0x40, 0x90, 0x78, 0x04, 0x40, 0x81, 0x18, 0x00, 0x40, 0x64, 0x24, 0x00,
+0x04, 0xaf, 0x80, 0x12, 0x40, 0x73, 0x48, 0x0b, 0x46, 0x3e, 0x7d, 0x3f, 0x40, 0x63, 0x84, 0x00,
+0x41, 0xc2, 0x94, 0x05, 0x58, 0x31, 0x8b, 0xc8, 0x41, 0xe0, 0xf0, 0x02, 0x40, 0x05, 0x0c, 0x00,
+0x40, 0x23, 0x14, 0x02, 0x40, 0x91, 0x78, 0x04, 0x40, 0x80, 0x10, 0x00, 0x40, 0x44, 0x24, 0x00,
+0x04, 0x0f, 0x80, 0x0d, 0x40, 0x72, 0x30, 0x0b, 0x47, 0xc2, 0x1e, 0x1c, 0x40, 0x43, 0x98, 0x00,
+0x40, 0xa0, 0x84, 0x05, 0x59, 0xce, 0x0d, 0xe6, 0x41, 0xe3, 0x28, 0x02, 0x40, 0x30, 0x70, 0x00,
+0x40, 0x22, 0x04, 0x02, 0x40, 0x81, 0x78, 0x04, 0x40, 0x91, 0x94, 0x00, 0x40, 0x54, 0xa0, 0x00,
+0x04, 0x0f, 0x80, 0x08, 0x40, 0x72, 0xec, 0x0b, 0x47, 0xcc, 0x33, 0x70, 0x40, 0x53, 0x90, 0x00,
+0x40, 0xa3, 0x18, 0x05, 0x59, 0xce, 0x07, 0xd6, 0x41, 0xe2, 0x28, 0x02, 0x40, 0x30, 0x70, 0x00,
+0x40, 0x22, 0x98, 0x02, 0x40, 0x91, 0x78, 0x04, 0x40, 0x81, 0x84, 0x00, 0x40, 0x14, 0x24, 0x00,
+0x04, 0x0f, 0x80, 0x13, 0x40, 0x70, 0xdc, 0x0b, 0x46, 0x2f, 0x4d, 0x50, 0x40, 0x13, 0x94, 0x00,
+0x41, 0xc2, 0x10, 0x05, 0x58, 0x21, 0x0d, 0x87, 0x41, 0xe2, 0xf0, 0x02, 0x40, 0xa0, 0x08, 0x00,
+0x40, 0x30, 0x90, 0x02, 0x40, 0x91, 0xf8, 0x04, 0x40, 0x85, 0x18, 0x00, 0x40, 0x64, 0x24, 0x00,
+0x04, 0x2f, 0x80, 0x0e, 0x40, 0x73, 0x48, 0x0b, 0x46, 0x04, 0x55, 0xa1, 0x40, 0x63, 0x84, 0x00,
+0x41, 0xc2, 0x94, 0x05, 0x58, 0x00, 0x04, 0xed, 0x41, 0xe0, 0xf0, 0x02, 0x40, 0xa1, 0x00, 0x00,
+0x40, 0x33, 0x14, 0x02, 0x40, 0x85, 0x10, 0x00, 0x40, 0x91, 0xf8, 0x04, 0x40, 0x74, 0x24, 0x00,
+0x04, 0x4f, 0x80, 0x09, 0x40, 0x03, 0xb0, 0x0b, 0x46, 0x2a, 0x9e, 0x3e, 0x40, 0x80, 0x18, 0x00,
+0x40, 0xa0, 0x84, 0x05, 0x58, 0x21, 0x09, 0x05, 0x41, 0xe3, 0x28, 0x02, 0x40, 0x32, 0x08, 0x00,
+0x41, 0xc4, 0x04, 0x02, 0x40, 0x7e, 0x78, 0x04, 0x40, 0x91, 0x94, 0x00, 0x40, 0x54, 0x9c, 0x00,
+0x04, 0x4f, 0x80, 0x14, 0x40, 0x02, 0xec, 0x0b, 0x46, 0x2f, 0xce, 0xfa, 0x40, 0x50, 0x20, 0x00,
+0x40, 0xa3, 0x18, 0x05, 0x58, 0x21, 0x03, 0xf8, 0x41, 0xe4, 0x28, 0x02, 0x40, 0x32, 0x08, 0x00,
+0x41, 0xc2, 0x98, 0x02, 0x40, 0x71, 0x84, 0x00, 0x40, 0x9e, 0x78, 0x04, 0x40, 0x03, 0xa4, 0x00,
+0x04, 0x3f, 0x80, 0x0f, 0x40, 0xa0, 0x5c, 0x0b, 0x47, 0xe6, 0x76, 0xf0, 0x40, 0xa5, 0x14, 0x00,
+0x40, 0x44, 0x20, 0x05, 0x59, 0xef, 0x02, 0xd9, 0x40, 0x72, 0x90, 0x02, 0x40, 0x21, 0xf8, 0x00,
+0x41, 0xc5, 0x20, 0x02, 0x40, 0x11, 0x18, 0x00, 0x40, 0x9e, 0x1c, 0x04, 0x40, 0x00, 0xa4, 0x00,
+0x04, 0x7f, 0x80, 0x0a, 0x40, 0x40, 0x48, 0x0b, 0x46, 0x28, 0xd2, 0xa4, 0x40, 0x02, 0x28, 0x00,
+0x41, 0xe2, 0x94, 0x05, 0x58, 0x21, 0x0c, 0x8a, 0x41, 0xc5, 0x78, 0x02, 0x40, 0x33, 0x88, 0x00,
+0x40, 0x60, 0x14, 0x02, 0x40, 0x11, 0xa0, 0x00, 0x40, 0x93, 0x70, 0x04, 0x40, 0x40, 0xa4, 0x00,
+0x04, 0x8f, 0x80, 0x11, 0x41, 0xe2, 0x30, 0x0b, 0x44, 0x2a, 0x39, 0x42, 0x40, 0x4f, 0x00, 0x00,
+0x40, 0x74, 0x08, 0x00, 0x40, 0x30, 0x28, 0x03, 0x14, 0xaf, 0x80, 0x06, 0x40, 0x63, 0x94, 0x00,
+0x41, 0xc1, 0x90, 0x03, 0x40, 0x13, 0x70, 0x00, 0x04, 0x8f, 0x80, 0x0e, 0x47, 0xe8, 0x77, 0x1f,
+0x04, 0x2f, 0x80, 0x06, 0x40, 0x90, 0xf0, 0x0b, 0x59, 0xef, 0x06, 0x81, 0x40, 0x14, 0x90, 0x00,
+0x40, 0x74, 0x78, 0x00, 0x40, 0x52, 0x00, 0x03, 0x40, 0x33, 0x88, 0x00, 0x40, 0xa2, 0x84, 0x03,
+0x40, 0x61, 0xa8, 0x00, 0x05, 0xef, 0x80, 0x0b, 0x46, 0x96, 0xd9, 0xd6, 0x41, 0xc3, 0x54, 0x0b,
+0x58, 0x94, 0x81, 0x22, 0x40, 0x6e, 0x04, 0x00, 0x40, 0x8f, 0x24, 0x00, 0x40, 0x70, 0x90, 0x03,
+0x40, 0x24, 0x00, 0x00, 0x40, 0x03, 0x98, 0x03, 0x40, 0x51, 0x00, 0x00, 0x05, 0xcf, 0x80, 0x08,
+0x46, 0xaf, 0xde, 0x53, 0x40, 0x32, 0xc0, 0x0b, 0x58, 0xa5, 0x08, 0x0c, 0x40, 0x51, 0x98, 0x00,
+0x40, 0x9e, 0x28, 0x00, 0x41, 0xe3, 0x04, 0x03, 0x40, 0x84, 0x90, 0x00, 0x40, 0x7f, 0x14, 0x03,
+0x40, 0x24, 0x1c, 0x00, 0x04, 0x3f, 0x80, 0x15, 0x46, 0x4a, 0x4b, 0xee, 0x40, 0x01, 0x24, 0x0b,
+0x58, 0x42, 0x0a, 0x44, 0x40, 0x80, 0x14, 0x00, 0x40, 0xa1, 0x90, 0x00, 0x41, 0xc2, 0x98, 0x03,
+0x41, 0xee, 0x20, 0x03, 0x40, 0x95, 0x04, 0x00, 0x40, 0x14, 0xf8, 0x00, 0x04, 0x2f, 0x80, 0x12,
+0x46, 0x04, 0xbd, 0xec, 0x40, 0x70, 0xf0, 0x0b, 0x58, 0x00, 0x0f, 0xa9, 0x40, 0x13, 0xa0, 0x00,
+0x40, 0x41, 0x00, 0x00, 0x40, 0xa4, 0x14, 0x03, 0x41, 0xc5, 0x04, 0x03, 0x40, 0x32, 0x18, 0x00,
+0x40, 0x61, 0xf0, 0x00, 0x04, 0x9f, 0x80, 0x0f, 0x46, 0x7f, 0x6b, 0xb4, 0x41, 0xe3, 0x54, 0x0b,
+0x58, 0x73, 0x8b, 0x60, 0x40, 0x6f, 0x04, 0x00, 0x40, 0x24, 0x9c, 0x00, 0x40, 0x00, 0xa0, 0x03,
+0x40, 0xa0, 0x18, 0x03, 0x40, 0x41, 0x14, 0x00, 0x40, 0x52, 0x28, 0x00, 0x05, 0xef, 0x80, 0x0c,
+0x46, 0x3b, 0xeb, 0xfb, 0x41, 0xc2, 0xc0, 0x0b, 0x58, 0x31, 0x8c, 0x70, 0x40, 0x5e, 0x18, 0x00,
+0x40, 0x9f, 0x0c, 0x00, 0x40, 0x73, 0x04, 0x03, 0x40, 0x04, 0xa0, 0x00, 0x40, 0x23, 0x94, 0x03,
+0x40, 0x40, 0x08, 0x00, 0x05, 0xcf, 0x80, 0x09, 0x46, 0xa2, 0x89, 0xb7, 0x40, 0x82, 0x24, 0x0b,
+0x58, 0xa5, 0x0e, 0xc6, 0x40, 0x44, 0x14, 0x00, 0x40, 0x3e, 0x28, 0x00, 0x41, 0xe2, 0x98, 0x03,
+0x40, 0x7f, 0x10, 0x03, 0x40, 0x91, 0x84, 0x00, 0x40, 0x14, 0x9c, 0x00, 0x04, 0x8f, 0x80, 0x16,
+0x46, 0x2e, 0xaa, 0x12, 0x40, 0x00, 0xf0, 0x0b, 0x58, 0x21, 0x07, 0xfa, 0x40, 0x10, 0x10, 0x00,
+0x40, 0xa4, 0x08, 0x00, 0x41, 0xc2, 0x14, 0x03, 0x41, 0xee, 0x04, 0x03, 0x40, 0x35, 0x18, 0x00,
+0x40, 0x61, 0xf8, 0x00, 0x04, 0x9f, 0x80, 0x13, 0x46, 0x0d, 0x4e, 0xf3, 0x40, 0x73, 0x54, 0x0b,
+0x58, 0x00, 0x00, 0x85, 0x40, 0x63, 0x84, 0x00, 0x40, 0x84, 0x80, 0x00, 0x40, 0xa0, 0x90, 0x03,
+0x41, 0xc5, 0x18, 0x03, 0x40, 0x24, 0x14, 0x00, 0x40, 0x51, 0x70, 0x00, 0x04, 0x7f, 0x80, 0x10,
+0x46, 0x30, 0x48, 0x81, 0x41, 0xe2, 0xc0, 0x0b, 0x58, 0x31, 0x8d, 0x05, 0x40, 0x5f, 0x18, 0x00,
+0x40, 0x93, 0x8c, 0x00, 0x40, 0x03, 0x04, 0x03, 0x40, 0xa0, 0x14, 0x03, 0x40, 0x84, 0x90, 0x00,
+0x40, 0x44, 0x28, 0x00, 0x05, 0xef, 0x80, 0x0d, 0x46, 0x2d, 0x9d, 0x4d, 0x41, 0xc2, 0x24, 0x0b,
+0x58, 0x21, 0x00, 0x39, 0x40, 0x4e, 0x14, 0x00, 0x40, 0x3f, 0x08, 0x00, 0x40, 0x72, 0x98, 0x03,
+0x40, 0x91, 0x84, 0x00, 0x40, 0x03, 0x90, 0x03, 0x40, 0xa4, 0x80, 0x00, 0x05, 0xcf, 0x80, 0x0a,
+0x46, 0x8e, 0x6d, 0xb9, 0x40, 0x15, 0x70, 0x0b, 0x58, 0x84, 0x09, 0xe5, 0x40, 0x90, 0x90, 0x00,
+0x40, 0x2e, 0x20, 0x00, 0x41, 0xe2, 0x14, 0x03, 0x40, 0x31, 0x18, 0x00, 0x40, 0x7f, 0x24, 0x03,
+0x40, 0x01, 0x9c, 0x00, 0x04, 0x6f, 0x80, 0x07, 0x46, 0x11, 0xfa, 0x27, 0x40, 0xa0, 0x54, 0x0b,
+0x58, 0x10, 0x8c, 0xf8, 0x40, 0xa5, 0x24, 0x00, 0x40, 0x83, 0x04, 0x00, 0x41, 0xc4, 0x90, 0x03,
+0x40, 0x24, 0x14, 0x00, 0x41, 0xee, 0x28, 0x03, 0x40, 0x31, 0x78, 0x00, 0x04, 0x6f, 0x80, 0x14,
+0x46, 0x0c, 0x4a, 0xc5, 0x40, 0x71, 0xc0, 0x0b, 0x58, 0x00, 0x06, 0x65, 0x40, 0x73, 0xa8, 0x00,
+0x40, 0x53, 0x00, 0x00, 0x40, 0x15, 0x24, 0x03, 0x40, 0x82, 0x90, 0x00, 0x41, 0xc0, 0x9c, 0x03,
+0x40, 0x24, 0x70, 0x00, 0x04, 0x0f, 0x80, 0x16, 0x41, 0xe1, 0x24, 0x0b, 0x46, 0x3f, 0x42, 0x92,
+0x40, 0x2f, 0x1c, 0x00, 0x40, 0x45, 0x28, 0x05, 0x58, 0x31, 0x82, 0x44, 0x40, 0x60, 0x0c, 0x00,
+0x40, 0x51, 0x10, 0x04, 0x40, 0x13, 0x24, 0x00, 0x40, 0x82, 0x9c, 0x03, 0x41, 0xc0, 0xa0, 0x00,
+0x04, 0x0f, 0x80, 0x0f, 0x41, 0xee, 0x68, 0x0b, 0x46, 0x34, 0x32, 0xaf, 0x41, 0xef, 0x08, 0x00,
+0x40, 0x43, 0x9c, 0x05, 0x58, 0x31, 0x8f, 0x97, 0x40, 0x50, 0x0c, 0x00, 0x40, 0x6f, 0x10, 0x04,
+0x40, 0x12, 0xa8, 0x00, 0x40, 0x93, 0x08, 0x03, 0x40, 0x80, 0xa4, 0x00, 0x04, 0x3f, 0x80, 0x08,
+0x41, 0xc4, 0x58, 0x0b, 0x46, 0x0a, 0xb9, 0x42, 0x40, 0x8e, 0x78, 0x00, 0x40, 0xa1, 0x08, 0x05,
+0x58, 0x00, 0x03, 0xa7, 0x40, 0x41, 0x80, 0x00, 0x40, 0x54, 0x28, 0x04, 0x40, 0x62, 0x1c, 0x00,
+0x40, 0x12, 0xf8, 0x03, 0x40, 0x93, 0x04, 0x00, 0x04, 0x7f, 0x80, 0x11, 0x41, 0xc4, 0xc4, 0x0b,
+0x46, 0x3f, 0xc9, 0x3a, 0x40, 0x9e, 0x20, 0x00, 0x40, 0xaf, 0x78, 0x05, 0x58, 0x31, 0x80, 0x39,
+0x40, 0x03, 0x8c, 0x00, 0x40, 0x44, 0xa8, 0x04, 0x40, 0x50, 0x08, 0x00, 0x40, 0x62, 0x20, 0x03,
+0x40, 0x12, 0x98, 0x00, 0x04, 0x2f, 0x80, 0x0a, 0x41, 0xc0, 0xac, 0x0b, 0x46, 0x76, 0x55, 0xb5,
+0x41, 0xce, 0x24, 0x00, 0x40, 0xa4, 0x20, 0x05, 0x58, 0x73, 0x89, 0xc3, 0x40, 0x31, 0x1c, 0x00,
+0x40, 0x0e, 0x28, 0x04, 0x40, 0x41, 0xf8, 0x00, 0x40, 0x50, 0x24, 0x03, 0x40, 0x62, 0x14, 0x00,
+0x04, 0x7f, 0x80, 0x13, 0x40, 0x13, 0x68, 0x0b, 0x46, 0x28, 0xf0, 0xcc, 0x40, 0x60, 0xf0, 0x00,
+0x40, 0xa4, 0xa4, 0x05, 0x58, 0x21, 0x0c, 0x92, 0x40, 0x33, 0x88, 0x00, 0x40, 0x03, 0x28, 0x04,
+0x41, 0xe1, 0xa0, 0x00, 0x40, 0x40, 0x70, 0x03, 0x40, 0x5f, 0x10, 0x00, 0x04, 0x7f, 0x80, 0x0c,
+0x40, 0x12, 0xd8, 0x0b, 0x46, 0xaf, 0xfe, 0xff, 0x40, 0x50, 0x98, 0x00, 0x40, 0x8e, 0x70, 0x05,
+0x58, 0xa5, 0x04, 0x7d, 0x40, 0x23, 0xa8, 0x00, 0x40, 0x32, 0xa0, 0x04, 0x40, 0x01, 0x24, 0x00,
+0x41, 0xe1, 0x98, 0x03, 0x40, 0x40, 0x78, 0x00, 0x04, 0xaf, 0x80, 0x15, 0x40, 0x12, 0x44, 0x0b,
+0x46, 0x78, 0x58, 0x45, 0x40, 0x40, 0x94, 0x00, 0x40, 0x93, 0x18, 0x05, 0x58, 0x73, 0x8d, 0xd1,
+0x40, 0x85, 0x1c, 0x00, 0x40, 0x22, 0x24, 0x04, 0x40, 0x34, 0x70, 0x00, 0x40, 0x01, 0x14, 0x03,
+0x41, 0xe1, 0x80, 0x00, 0x04, 0x1f, 0x80, 0x0e, 0x41, 0xcf, 0x2c, 0x0b, 0x46, 0x76, 0xfa, 0x87,
+0x41, 0xce, 0x10, 0x00, 0x40, 0xa2, 0x94, 0x05, 0x58, 0x73, 0x8e, 0x4f, 0x40, 0x90, 0x9c, 0x00,
+0x40, 0x8e, 0x28, 0x04, 0x40, 0x24, 0x98, 0x00, 0x40, 0x04, 0x10, 0x03, 0x41, 0xe1, 0x00, 0x00,
+0x04, 0x7f, 0x80, 0x07, 0x40, 0x3f, 0x68, 0x0b, 0x46, 0x1f, 0xe2, 0xce, 0x40, 0x21, 0xf0, 0x00,
+0x40, 0xa2, 0x10, 0x05, 0x58, 0x10, 0x86, 0xe0, 0x40, 0x93, 0x84, 0x00, 0x40, 0x61, 0x28, 0x04,
+0x40, 0x84, 0x94, 0x00, 0x40, 0x03, 0x70, 0x03, 0x41, 0xe4, 0x00, 0x00, 0x04, 0x5f, 0x80, 0x10,
+0x40, 0x3f, 0x58, 0x0b, 0x46, 0x1a, 0x30, 0x14, 0x40, 0x81, 0x88, 0x00, 0x40, 0x7e, 0x70, 0x05,
+0x58, 0x10, 0x83, 0x14, 0x40, 0x92, 0x84, 0x00, 0x40, 0xa4, 0x1c, 0x04, 0x40, 0x64, 0x90, 0x00,
+0x40, 0x05, 0x08, 0x03, 0x41, 0xe3, 0x00, 0x00, 0x04, 0x1f, 0x80, 0x09, 0x40, 0x4f, 0x44, 0x0b,
+0x46, 0x34, 0xe0, 0x81, 0x40, 0x62, 0x20, 0x00, 0x40, 0x71, 0x08, 0x05, 0x58, 0x31, 0x81, 0xa1,
+0x40, 0x90, 0x8c, 0x00, 0x40, 0x53, 0x1c, 0x04, 0x40, 0x04, 0xf0, 0x00, 0x40, 0xa2, 0xa0, 0x03,
+0x41, 0xe0, 0x28, 0x00, 0x04, 0x9f, 0x80, 0x12, 0x40, 0x4f, 0x2c, 0x0b, 0x46, 0x1f, 0x75, 0x37,
+0x40, 0x42, 0x18, 0x00, 0x40, 0x74, 0x20, 0x05, 0x58, 0x10, 0x8e, 0x82, 0x41, 0xc4, 0x84, 0x00,
+0x40, 0x32, 0x1c, 0x04, 0x40, 0x5e, 0x08, 0x00, 0x40, 0xa1, 0x98, 0x03, 0x40, 0x02, 0xa8, 0x00,
+0x04, 0x9f, 0x80, 0x0b, 0x41, 0xe0, 0x68, 0x0b, 0x46, 0x1b, 0xd3, 0xaf, 0x41, 0xef, 0x10, 0x00,
+0x40, 0x73, 0x18, 0x05, 0x58, 0x10, 0x82, 0x35, 0x40, 0x3f, 0x1c, 0x04, 0x41, 0xc4, 0x84, 0x00,
+0x40, 0x21, 0x90, 0x03, 0x41, 0xce, 0x20, 0x00, 0x40, 0xae, 0x08, 0x00, 0x04, 0x5f, 0x80, 0x14,
+0x40, 0xa5, 0x58, 0x0b, 0x46, 0x02, 0xad, 0x7d, 0x40, 0x25, 0x78, 0x00, 0x40, 0x12, 0x10, 0x05,
+0x58, 0x00, 0x02, 0xbb, 0x40, 0x71, 0x04, 0x04, 0x40, 0x92, 0x80, 0x00, 0x40, 0x94, 0x98, 0x00,
+0x40, 0x63, 0xf8, 0x03, 0x40, 0x34, 0x98, 0x00, 0x04, 0x1f, 0x80, 0x0d, 0x40, 0x81, 0xc4, 0x0b,
+0x46, 0x5e, 0xb8, 0x6d, 0x40, 0x34, 0x08, 0x00, 0x40, 0x0f, 0x78, 0x05, 0x58, 0x52, 0x83, 0x91,
+0x40, 0x80, 0x94, 0x00, 0x40, 0x71, 0x80, 0x04, 0x04, 0x5f, 0x80, 0x02, 0x04, 0x1f, 0x80, 0x01,
+0x40, 0x64, 0x10, 0x00, 0x40, 0x73, 0x88, 0x03, 0x40, 0x43, 0x1c, 0x00, 0x40, 0x61, 0x94, 0x00,
+0x40, 0x5f, 0x04, 0x00, 0x05, 0xef, 0x80, 0x03, 0x04, 0x1f, 0x80, 0x04, 0x40, 0x3f, 0x0c, 0x00,
+0x40, 0x02, 0x2c, 0x0b, 0x05, 0xef, 0x80, 0x05, 0x40, 0x43, 0x00, 0x00, 0x40, 0x00, 0x88, 0x00,
+0x14, 0x5f, 0x00, 0x00, 0x14, 0x4f, 0x00, 0x01, 0x14, 0x3f, 0x00, 0x02, 0x14, 0x0f, 0x00, 0x03,
+0x44, 0x10, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x17, 0x44, 0x20, 0x00, 0x40, 0x49, 0xf7, 0xac, 0x4e,
+0x04, 0x2f, 0x80, 0x05, 0x44, 0x10, 0x00, 0x00, 0x14, 0x11, 0x00, 0x16, 0x51, 0xff, 0x80, 0xa4,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xf8,
+0x04, 0x20, 0x00, 0x16, 0x50, 0x70, 0x00, 0x18, 0x58, 0x60, 0x00, 0x00, 0x58, 0x80, 0x80, 0x00,
+0x40, 0x03, 0x88, 0x00, 0x44, 0x10, 0x00, 0x80, 0x44, 0x20, 0x00, 0x01, 0x49, 0xf7, 0xac, 0x2e,
+0x04, 0x03, 0x00, 0x16, 0x5c, 0xf0, 0x00, 0x38, 0x4e, 0xf3, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00,
+0x49, 0xff, 0xf9, 0xb8, 0x04, 0x13, 0x00, 0x04, 0x04, 0x03, 0x00, 0x05, 0x41, 0xe0, 0xf4, 0x09,
+0x40, 0x50, 0x0c, 0x08, 0x40, 0x30, 0x8c, 0x08, 0x40, 0x42, 0xf8, 0x04, 0x14, 0x4f, 0x80, 0x01,
+0x14, 0x3f, 0x80, 0x00, 0x58, 0x1f, 0x80, 0x00, 0x44, 0x20, 0x00, 0x08, 0x50, 0x03, 0x80, 0x38,
+0x49, 0xf7, 0xac, 0x7e, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf9, 0x9c, 0x58, 0x04, 0x00, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xac, 0x72, 0x51, 0xff, 0x80, 0x08,
+0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4,
+0x58, 0x70, 0x00, 0x00, 0x50, 0x00, 0x00, 0x18, 0x14, 0x1f, 0x80, 0x01, 0x59, 0xc1, 0x00, 0x00,
+0x14, 0x0f, 0x80, 0x00, 0x44, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, 0x34, 0x04, 0x33, 0x80, 0x16,
+0x04, 0x1f, 0x80, 0x01, 0x05, 0xef, 0x80, 0x00, 0x40, 0x50, 0xa0, 0x00, 0x40, 0x4f, 0x0c, 0x00,
+0x40, 0x93, 0x0c, 0x00, 0x58, 0x12, 0x80, 0x00, 0x58, 0x02, 0x00, 0x00, 0x5c, 0xf4, 0x80, 0x40,
+0x4e, 0xf2, 0x00, 0x0e, 0x49, 0xf7, 0xac, 0x44, 0x04, 0x33, 0x80, 0x16, 0x40, 0x84, 0x18, 0x00,
+0x40, 0x21, 0x98, 0x00, 0x14, 0x23, 0x80, 0x16, 0x48, 0x00, 0x00, 0x14, 0x52, 0x21, 0x80, 0x40,
+0x49, 0xf7, 0xac, 0x36, 0x44, 0x60, 0x00, 0x40, 0x04, 0x53, 0x80, 0x16, 0x14, 0x63, 0x80, 0x16,
+0x40, 0x43, 0x14, 0x01, 0x58, 0x03, 0x80, 0x00, 0x40, 0x84, 0x10, 0x00, 0x49, 0xff, 0xf9, 0x4a,
+0x40, 0x6e, 0x20, 0x01, 0x58, 0x23, 0x00, 0x00, 0x4c, 0x8e, 0x7f, 0xca, 0x04, 0x03, 0x80, 0x04,
+0x04, 0x13, 0x80, 0x05, 0x58, 0x24, 0x00, 0x00, 0x44, 0x30, 0x00, 0x00, 0x40, 0x40, 0x08, 0x00,
+0x40, 0xf2, 0x08, 0x06, 0x40, 0x50, 0x8c, 0x00, 0x40, 0x52, 0xbc, 0x00, 0x14, 0x43, 0x80, 0x04,
+0x14, 0x53, 0x80, 0x05, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x98, 0xbc, 0x3e, 0x1f, 0xd3, 0xa8, 0x58, 0x60, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10,
+0x49, 0xf7, 0xab, 0xfe, 0x50, 0x03, 0x00, 0x18, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x40,
+0x49, 0xf7, 0xab, 0x84, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x14, 0x23, 0x00, 0x16, 0x14, 0x03, 0x00, 0x04, 0x14, 0x13, 0x00, 0x05, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0x9c, 0x58, 0x90, 0x00, 0x00,
+0x58, 0x80, 0x80, 0x00, 0x58, 0x71, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x60,
+0x58, 0x0f, 0x80, 0x00, 0x49, 0xf7, 0xab, 0x62, 0x58, 0x0f, 0x80, 0x00, 0x49, 0xff, 0xff, 0xca,
+0x58, 0x0f, 0x80, 0x00, 0x58, 0x14, 0x80, 0x00, 0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xff, 0x5e,
+0x58, 0x0f, 0x80, 0x00, 0x58, 0x13, 0x80, 0x00, 0x58, 0x6f, 0x80, 0x00, 0x49, 0xff, 0xff, 0x0e,
+0x51, 0xff, 0x80, 0x64, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xb4, 0x55, 0xc0, 0x00, 0xff, 0x49, 0xff, 0xb9, 0x5a, 0x44, 0x10, 0x00, 0x3a,
+0x50, 0x20, 0xff, 0xfc, 0x40, 0x81, 0x00, 0x1a, 0x40, 0x80, 0x80, 0x1b, 0x58, 0x04, 0x00, 0x00,
+0x49, 0xf7, 0xb0, 0xec, 0x58, 0x70, 0x00, 0x00, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x72, 0xc0, 0x08,
+0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x9a, 0x48, 0x00, 0x00, 0xf6, 0x50, 0x6f, 0x80, 0x0c,
+0x2e, 0x07, 0xf7, 0xa9, 0x58, 0x13, 0x00, 0x00, 0x50, 0x3f, 0x80, 0x3c, 0x50, 0x2f, 0x80, 0x30,
+0x49, 0xff, 0xad, 0x22, 0x58, 0x03, 0x80, 0x00, 0x00, 0x93, 0x00, 0x15, 0x49, 0xf7, 0xb0, 0xa0,
+0x58, 0x60, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x49, 0xf7, 0xab, 0x0e,
+0x12, 0x83, 0x00, 0x00, 0x00, 0x13, 0x00, 0x03, 0x2e, 0x37, 0xf7, 0xb2, 0x4e, 0x33, 0x00, 0x0a,
+0x44, 0x5f, 0xff, 0x87, 0x40, 0x40, 0x94, 0x02, 0x58, 0x12, 0x00, 0x18, 0x48, 0x00, 0x00, 0x08,
+0x45, 0xef, 0xff, 0x87, 0x40, 0x80, 0xf8, 0x02, 0x58, 0x14, 0x00, 0x60, 0x10, 0x13, 0x00, 0x03,
+0x00, 0x43, 0x00, 0x05, 0x00, 0x83, 0x00, 0x03, 0x54, 0x54, 0x00, 0x7f, 0x10, 0x53, 0x00, 0x03,
+0x54, 0xa2, 0x00, 0x9f, 0x2e, 0x17, 0xf7, 0xa9, 0x58, 0x25, 0x00, 0x40, 0x10, 0x13, 0x00, 0x04,
+0x10, 0x23, 0x00, 0x05, 0x40, 0x11, 0x14, 0x09, 0x40, 0x10, 0x94, 0x08, 0x4e, 0x92, 0x00, 0x06,
+0x58, 0x10, 0x80, 0x0d, 0x48, 0x00, 0x00, 0x04, 0x58, 0x10, 0x80, 0x0c, 0x10, 0x13, 0x00, 0x05,
+0x00, 0x13, 0x00, 0x07, 0x00, 0x83, 0x00, 0x05, 0x44, 0xaf, 0xff, 0x80, 0x40, 0x44, 0x28, 0x04,
+0x54, 0x10, 0x80, 0x03, 0x10, 0x13, 0x00, 0x07, 0x10, 0x43, 0x00, 0x05, 0x2f, 0xe7, 0xf7, 0xaf,
+0x02, 0x23, 0x00, 0x0d, 0x00, 0xa3, 0x00, 0x09, 0x41, 0xef, 0x08, 0x08, 0x02, 0x53, 0x00, 0x06,
+0x00, 0x83, 0x00, 0x0b, 0x44, 0x0f, 0xc0, 0x03, 0x40, 0x10, 0xf8, 0x04, 0x02, 0x43, 0x00, 0x07,
+0x00, 0x33, 0x00, 0x15, 0x40, 0x21, 0x00, 0x02, 0x42, 0xa5, 0x10, 0x09, 0x44, 0x0f, 0xff, 0x80,
+0x01, 0xe3, 0x00, 0x19, 0x40, 0x84, 0x00, 0x04, 0x54, 0x52, 0x80, 0x3f, 0x40, 0x0f, 0x0c, 0x09,
+0x40, 0x00, 0x0c, 0x08, 0x58, 0x52, 0xf8, 0x00, 0x54, 0x42, 0x70, 0x00, 0x58, 0x31, 0x80, 0x20,
+0x58, 0x21, 0x00, 0x0c, 0x45, 0xe0, 0x00, 0x00, 0x10, 0x13, 0x00, 0x07, 0x10, 0xa3, 0x00, 0x09,
+0x11, 0xe3, 0x00, 0x0a, 0x10, 0x83, 0x00, 0x0b, 0x12, 0x53, 0x00, 0x06, 0x12, 0x43, 0x00, 0x07,
+0x10, 0x33, 0x00, 0x15, 0x12, 0x23, 0x00, 0x0d, 0x10, 0x03, 0x00, 0x19, 0x50, 0x63, 0x00, 0x20,
+0x4e, 0x92, 0x00, 0x06, 0x44, 0x00, 0x01, 0xc8, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x01, 0x48,
+0x12, 0x03, 0x00, 0x00, 0x4f, 0xc2, 0x00, 0x08, 0x03, 0xc3, 0x00, 0x00, 0x58, 0x9e, 0x10, 0x00,
+0x12, 0x93, 0x00, 0x00, 0x51, 0xcf, 0x80, 0x47, 0x2e, 0x07, 0xf7, 0xae, 0x58, 0x1e, 0x00, 0x00,
+0x3e, 0x2f, 0xf7, 0xa0, 0x49, 0xff, 0xaa, 0x48, 0x3e, 0x1f, 0xf7, 0xa0, 0x44, 0x20, 0x00, 0x06,
+0x50, 0x03, 0x00, 0x04, 0x49, 0xf7, 0xaa, 0x4e, 0x50, 0xa3, 0x00, 0x0a, 0x2e, 0x07, 0xf7, 0xaf,
+0x58, 0x1e, 0x00, 0x00, 0x58, 0x25, 0x00, 0x00, 0x49, 0xff, 0xa3, 0xa0, 0x3e, 0x1f, 0xf7, 0x98,
+0x44, 0x20, 0x00, 0x06, 0x58, 0x05, 0x00, 0x00, 0x49, 0xf7, 0xaa, 0x3c, 0x3e, 0x1f, 0xf7, 0xa0,
+0x44, 0x20, 0x00, 0x06, 0x50, 0x03, 0x00, 0x10, 0x49, 0xf7, 0xaa, 0x34, 0x2e, 0x27, 0xf7, 0xb2,
+0x44, 0x00, 0x00, 0x03, 0x44, 0x10, 0x00, 0x0c, 0x40, 0x10, 0x08, 0x1a, 0x44, 0x30, 0x00, 0x01,
+0x44, 0x00, 0x00, 0x02, 0x58, 0x23, 0x80, 0x00, 0x49, 0xf7, 0xb3, 0xf4, 0x4e, 0x02, 0x00, 0x0a,
+0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x4c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x58, 0x03, 0x80, 0x00, 0x49, 0xf7, 0xaf, 0xce, 0x46, 0x0c, 0x00, 0x00, 0x58, 0x00, 0x00, 0x01,
+0x48, 0xff, 0xff, 0xf2, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xdc, 0x54, 0x42, 0x00, 0xff,
+0x55, 0xc0, 0x80, 0xff, 0x54, 0x91, 0x00, 0xff, 0x54, 0x31, 0x80, 0xff, 0x4e, 0x42, 0x00, 0x58,
+0x44, 0x50, 0x00, 0x03, 0x4c, 0x32, 0x80, 0x06, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x32, 0xc0, 0x82,
+0x44, 0xa0, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00, 0x58, 0x95, 0x00, 0x00, 0x58, 0x85, 0x00, 0x00,
+0x58, 0x6f, 0x80, 0x00, 0x48, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x44, 0x50, 0x00, 0xdd,
+0x4c, 0x02, 0xc0, 0x28, 0x50, 0x03, 0x80, 0x02, 0x3e, 0x1f, 0xe1, 0x48, 0x44, 0x20, 0x00, 0x03,
+0x49, 0xf7, 0xaa, 0x8e, 0x4e, 0x03, 0x00, 0x1e, 0x00, 0x53, 0x80, 0x05, 0x45, 0xe0, 0x00, 0x01,
+0x4c, 0x5f, 0x40, 0x18, 0x00, 0x43, 0x80, 0x01, 0x00, 0x93, 0x80, 0x06, 0x50, 0x82, 0x7f, 0xfa,
+0x54, 0x84, 0x00, 0xff, 0x50, 0x13, 0x80, 0x08, 0x58, 0x0f, 0x80, 0x00, 0x58, 0x24, 0x00, 0x00,
+0x54, 0x94, 0x80, 0x03, 0x5c, 0xf4, 0x00, 0x10, 0x4e, 0xf3, 0x00, 0x44, 0x49, 0xf7, 0xaa, 0x48,
+0x00, 0x23, 0x80, 0x01, 0x50, 0x11, 0x00, 0x02, 0x40, 0xa5, 0x04, 0x00, 0x40, 0x73, 0x84, 0x00,
+0x54, 0xa5, 0x00, 0xff, 0x00, 0x53, 0x80, 0x01, 0x50, 0x32, 0x80, 0x02, 0x40, 0x01, 0xa8, 0x00,
+0x40, 0xfe, 0x00, 0x07, 0x4e, 0xf2, 0xff, 0xc2, 0x48, 0x00, 0x00, 0x14, 0x44, 0x50, 0x00, 0x05,
+0x4c, 0x32, 0xc0, 0x30, 0x58, 0x10, 0x00, 0x00, 0x58, 0x2e, 0x00, 0x00, 0x58, 0x0f, 0x80, 0x00,
+0x49, 0xf7, 0xaa, 0x26, 0x5c, 0xf4, 0x80, 0x04, 0x4e, 0xf2, 0x00, 0x1c, 0x58, 0x8e, 0x00, 0x00,
+0x58, 0x24, 0x00, 0x00, 0x58, 0x1f, 0x80, 0x00, 0x3e, 0x0f, 0xf7, 0xfc, 0x49, 0xf7, 0xaa, 0x18,
+0x3e, 0x4f, 0xf7, 0xa8, 0x00, 0x12, 0x00, 0x03, 0x10, 0x92, 0x00, 0x05, 0x58, 0x24, 0x80, 0x00,
+0x50, 0x02, 0x00, 0x54, 0x49, 0xff, 0xed, 0x4e, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04,
+0x44, 0x00, 0x00, 0x00, 0x51, 0xff, 0x80, 0x24, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x44, 0x90, 0x00, 0x00, 0x58, 0x84, 0x80, 0x00, 0x48, 0xff, 0xff, 0xdc, 0x3a, 0x2f, 0x94, 0x3c,
+0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x58, 0x90, 0x00, 0x00, 0x50, 0x0f, 0x80, 0x20,
+0x14, 0x0f, 0x80, 0x01, 0x58, 0x70, 0x80, 0x00, 0x44, 0x60, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x01,
+0x44, 0x5f, 0xff, 0xff, 0x50, 0x41, 0x00, 0x04, 0x14, 0x4f, 0x80, 0x01, 0x40, 0x04, 0x98, 0x00,
+0x04, 0x31, 0x00, 0x00, 0x50, 0x12, 0x00, 0x04, 0x58, 0x21, 0x80, 0x00, 0x4c, 0x32, 0x80, 0x0c,
+0x14, 0x1f, 0x80, 0x01, 0x40, 0x63, 0x0c, 0x00, 0x04, 0x12, 0x00, 0x00, 0x49, 0xf7, 0xa9, 0xd0,
+0x48, 0xff, 0xff, 0xe6, 0x58, 0x03, 0x00, 0x00, 0x14, 0x63, 0x80, 0x00, 0x51, 0xff, 0x80, 0x0c,
+0x3a, 0x6f, 0xa4, 0x84, 0x51, 0xff, 0x80, 0x10, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0x94, 0x44, 0x80, 0x00, 0x00, 0x58, 0x61, 0x00, 0x00, 0x55, 0xc0, 0x00, 0xff,
+0x58, 0xa0, 0x80, 0x00, 0x58, 0x04, 0x00, 0x00, 0x44, 0x10, 0x02, 0x00, 0x14, 0x8f, 0x80, 0x19,
+0x49, 0xff, 0xbd, 0x74, 0x00, 0x43, 0x00, 0x02, 0x00, 0x13, 0x00, 0x03, 0x40, 0x32, 0x20, 0x08,
+0x40, 0x21, 0x84, 0x04, 0x50, 0x21, 0x00, 0x04, 0x50, 0x1f, 0x80, 0x64, 0x58, 0x33, 0x00, 0x00,
+0x44, 0x4f, 0xff, 0xff, 0x50, 0x9f, 0x80, 0x54, 0x58, 0x70, 0x00, 0x00, 0x49, 0xff, 0xff, 0xa0,
+0x58, 0x14, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa9, 0x1e,
+0x44, 0x00, 0x00, 0x02, 0x4d, 0xc0, 0x40, 0x1c, 0x50, 0x8f, 0x80, 0x04, 0x04, 0x3f, 0x80, 0x19,
+0x58, 0x05, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x58, 0x44, 0x00, 0x00, 0x44, 0x50, 0x00, 0x14,
+0x50, 0x12, 0xff, 0xfc, 0x49, 0xff, 0xf3, 0x76, 0x58, 0x04, 0x80, 0x00, 0x58, 0x14, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa9, 0x74, 0x48, 0x00, 0x00, 0x10, 0x44, 0x10, 0x00, 0x10,
+0x04, 0x3f, 0x80, 0x19, 0x58, 0x05, 0x00, 0x00, 0x58, 0x44, 0x80, 0x00, 0x58, 0x23, 0x80, 0x00,
+0x58, 0x50, 0x80, 0x00, 0x49, 0xff, 0xf2, 0xb2, 0x50, 0x1f, 0x80, 0x54, 0x44, 0x20, 0x00, 0x10,
+0x50, 0x03, 0x00, 0x51, 0x49, 0xf7, 0xa9, 0x5c, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xbc, 0x4e,
+0x51, 0xff, 0x80, 0x6c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x2e, 0x87, 0xf7, 0xa8, 0x04, 0x6f, 0x80, 0x0c, 0x44, 0x70, 0x00, 0x03,
+0x44, 0x90, 0x00, 0x01, 0x44, 0x50, 0x00, 0x00, 0x44, 0x00, 0x00, 0x5f, 0x10, 0x73, 0x00, 0x01,
+0x10, 0x93, 0x00, 0x00, 0x10, 0x53, 0x00, 0x02, 0x10, 0x03, 0x00, 0x03, 0x59, 0xc1, 0x80, 0x00,
+0x14, 0x4f, 0x80, 0x01, 0x54, 0x70, 0x80, 0xff, 0x54, 0x21, 0x00, 0xff, 0x4e, 0x82, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x04, 0x44, 0x0f, 0xff, 0xfe, 0x10, 0x03, 0x00, 0x04,
+0x3e, 0x9f, 0xf7, 0xa8, 0x00, 0x54, 0x80, 0x04, 0x00, 0x43, 0x00, 0x06, 0x56, 0x02, 0x80, 0x04,
+0x44, 0xa0, 0x00, 0x01, 0x45, 0xe0, 0x00, 0x02, 0x40, 0x9f, 0x00, 0x1a, 0x40, 0x95, 0x00, 0x1b,
+0x40, 0x12, 0x0c, 0x09, 0x40, 0x10, 0x8c, 0x08, 0x40, 0x50, 0xa4, 0x04, 0x10, 0x53, 0x00, 0x06,
+0x5c, 0xf3, 0x80, 0x05, 0x4e, 0xf3, 0x00, 0x06, 0x42, 0x52, 0x8c, 0x09, 0x48, 0x00, 0x00, 0x04,
+0x58, 0x52, 0x80, 0x08, 0x10, 0x53, 0x00, 0x06, 0x4e, 0x83, 0x00, 0x1a, 0x5c, 0xf3, 0x80, 0x05,
+0x4e, 0xf3, 0x00, 0x16, 0x00, 0x53, 0x00, 0x06, 0x54, 0x01, 0x00, 0x03, 0x44, 0x3f, 0xff, 0xcf,
+0x41, 0xe0, 0x10, 0x08, 0x40, 0xa2, 0x8c, 0x02, 0x40, 0x45, 0x78, 0x04, 0x44, 0x20, 0x00, 0x03,
+0x10, 0x43, 0x00, 0x06, 0x4c, 0x71, 0x40, 0x14, 0x48, 0x00, 0x00, 0x16, 0x44, 0x10, 0x00, 0x03,
+0x4c, 0x70, 0xc0, 0x0a, 0x00, 0x43, 0x00, 0x06, 0x58, 0x22, 0x00, 0x40, 0x10, 0x23, 0x00, 0x06,
+0x48, 0x00, 0x00, 0x0a, 0x44, 0xa0, 0x00, 0x01, 0x4c, 0x75, 0x00, 0x06, 0x44, 0x50, 0x00, 0x05,
+0x4c, 0x72, 0xc0, 0x0e, 0x00, 0x03, 0x00, 0x06, 0x44, 0x1f, 0xff, 0x80, 0x40, 0x30, 0x04, 0x04,
+0x44, 0x50, 0x00, 0x01, 0x10, 0x33, 0x00, 0x06, 0x4c, 0x72, 0x80, 0x08, 0x00, 0x43, 0x00, 0x05,
+0x58, 0x22, 0x00, 0x01, 0x10, 0x23, 0x00, 0x05, 0x4e, 0x82, 0x00, 0x08, 0x5c, 0xf3, 0x80, 0x03,
+0x4e, 0xf2, 0x00, 0x08, 0x48, 0x00, 0x00, 0x12, 0x5c, 0xf3, 0x80, 0x05, 0x4e, 0xf3, 0x00, 0x22,
+0x01, 0xe3, 0x00, 0x05, 0x58, 0xaf, 0x00, 0x02, 0x10, 0xa3, 0x00, 0x05, 0x4e, 0x82, 0x00, 0x1a,
+0x44, 0x50, 0x00, 0x03, 0x4c, 0x72, 0x80, 0x06, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x08,
+0x00, 0x13, 0x00, 0x05, 0x58, 0x00, 0x80, 0x10, 0x10, 0x03, 0x00, 0x05, 0x4e, 0x82, 0x00, 0x0a,
+0x44, 0x20, 0x00, 0x01, 0x4c, 0x71, 0x00, 0x06, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x72, 0xc0, 0x10,
+0x2e, 0x17, 0xf7, 0xac, 0x45, 0xe0, 0x00, 0x10, 0x56, 0x30, 0x80, 0x02, 0x40, 0x5f, 0x04, 0x08,
+0x40, 0xa2, 0x8c, 0x1a, 0x40, 0xaf, 0x0c, 0x1b, 0x10, 0xa3, 0x00, 0x08, 0x50, 0x03, 0x00, 0x09,
+0x3e, 0x1f, 0xf7, 0xb4, 0x44, 0x20, 0x00, 0x08, 0x49, 0xf7, 0xa8, 0x82, 0x5c, 0xf3, 0x80, 0x04,
+0x4e, 0xf3, 0x00, 0x08, 0x4e, 0x83, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x28,
+0x50, 0x03, 0x00, 0x11, 0x58, 0x1e, 0x00, 0x00, 0x44, 0x20, 0x00, 0x20, 0x49, 0xf7, 0xa8, 0x70,
+0x4e, 0x83, 0x00, 0x16, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x72, 0xc0, 0x12, 0x50, 0x1e, 0x00, 0x10,
+0x50, 0x03, 0x00, 0x31, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa8, 0x62, 0x00, 0x33, 0x00, 0x40,
+0x50, 0x51, 0x80, 0x02, 0x10, 0x53, 0x00, 0x40, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x03,
+0x4c, 0x72, 0xc0, 0x06, 0x4e, 0x83, 0x00, 0x08, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x05,
+0x4c, 0x72, 0xc0, 0x0a, 0x04, 0x1f, 0x80, 0x01, 0x50, 0x03, 0x00, 0x41, 0x44, 0x20, 0x00, 0x06,
+0x49, 0xf7, 0xa8, 0x46, 0x50, 0x03, 0x00, 0x51, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10,
+0x49, 0xf7, 0xa7, 0xcc, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0x80, 0x0a, 0x58, 0x04, 0x80, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x3e, 0x1f, 0xf7, 0xbc, 0x49, 0xff, 0xfe, 0x72, 0x51, 0xff, 0x80, 0x0c,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0x84,
+0x44, 0x80, 0x21, 0xc8, 0x58, 0x60, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x54, 0x71, 0x00, 0xff,
+0x50, 0x0f, 0x81, 0x60, 0x44, 0x20, 0x00, 0x10, 0x4b, 0xe0, 0x20, 0x01, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x50, 0x50, 0x0f, 0x81, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x50, 0x9f, 0x81, 0x74,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0xff, 0x58, 0x0f, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x02, 0x58, 0x04, 0x80, 0x00, 0x4b, 0xe0, 0x20, 0x01,
+0x50, 0x13, 0x00, 0x05, 0x58, 0x04, 0x80, 0x00, 0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xa7, 0xf8,
+0x44, 0x00, 0x00, 0x01, 0x2e, 0x87, 0xf7, 0xa8, 0x4c, 0x70, 0x00, 0x0a, 0x44, 0x20, 0x00, 0x03,
+0x4c, 0x71, 0x00, 0x06, 0x44, 0x30, 0x00, 0x05, 0x4c, 0x71, 0xc0, 0x38, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x08, 0x50, 0x0f, 0x81, 0x50, 0x49, 0xf7, 0xa7, 0x70, 0x50, 0x23, 0x00, 0x09,
+0x58, 0x01, 0x00, 0x00, 0x3e, 0x1f, 0xf7, 0xb4, 0x50, 0x53, 0x00, 0x11, 0x00, 0x40, 0x00, 0x00,
+0x00, 0x30, 0x80, 0x00, 0x50, 0x00, 0x00, 0x01, 0x40, 0xf1, 0x90, 0x06, 0x4e, 0xf3, 0x00, 0x1a,
+0x40, 0xf2, 0x0c, 0x06, 0x4e, 0xf3, 0x00, 0x06, 0x50, 0x10, 0x80, 0x01, 0x4c, 0x02, 0xff, 0xf0,
+0x44, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x81, 0x50, 0x38, 0xa1, 0x00, 0x00, 0x38, 0x52, 0x00, 0x00,
+0x50, 0x00, 0x00, 0x01, 0x4c, 0xa2, 0xc0, 0x06, 0x45, 0xc0, 0x00, 0x08, 0x4c, 0x0e, 0x7f, 0xf6,
+0x44, 0x40, 0x00, 0x01, 0x4c, 0x72, 0x00, 0x6a, 0x00, 0x33, 0x00, 0x02, 0x00, 0x23, 0x00, 0x03,
+0x40, 0x91, 0xa0, 0x08, 0x50, 0xa3, 0x00, 0x51, 0x41, 0xe4, 0x88, 0x04, 0x58, 0x15, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x10, 0x50, 0x0f, 0x81, 0x50, 0x51, 0xcf, 0x00, 0x04, 0x49, 0xf7, 0xa7, 0xa0,
+0x44, 0x10, 0x00, 0x00, 0x58, 0x05, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa7, 0x26,
+0x00, 0x0f, 0x81, 0x75, 0x44, 0x10, 0x00, 0x01, 0x54, 0x00, 0x00, 0x07, 0x4c, 0x00, 0xc0, 0x18,
+0x3e, 0x9f, 0xf7, 0xa8, 0x44, 0xa0, 0x00, 0x02, 0x50, 0x10, 0x80, 0x0f, 0x10, 0xa4, 0x80, 0x04,
+0x50, 0x04, 0x80, 0x14, 0x58, 0x3e, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x50, 0x4f, 0x81, 0x60,
+0x58, 0x50, 0x80, 0x00, 0x49, 0xff, 0xf0, 0xca, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x02,
+0x4c, 0x02, 0xc0, 0x1e, 0x3e, 0xaf, 0xf7, 0xa8, 0x58, 0x3e, 0x00, 0x00, 0x45, 0xc0, 0x00, 0x04,
+0x11, 0xc5, 0x00, 0x04, 0x50, 0x05, 0x00, 0x14, 0x50, 0x10, 0x80, 0x0f, 0x58, 0x23, 0x00, 0x00,
+0x50, 0x4f, 0x81, 0x00, 0x50, 0x50, 0x80, 0x04, 0x49, 0xff, 0xf1, 0x5c, 0x50, 0x1f, 0x81, 0x00,
+0x50, 0x0f, 0x81, 0x60, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa7, 0x5a, 0x50, 0x0f, 0x81, 0x50,
+0x50, 0x1f, 0x81, 0x60, 0x44, 0x20, 0x00, 0x10, 0x49, 0xf7, 0xa7, 0x7a, 0x4e, 0x02, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x6c, 0x00, 0x03, 0x00, 0x61, 0x00, 0x13, 0x00, 0x62,
+0x40, 0x40, 0x20, 0x08, 0x40, 0x32, 0x04, 0x04, 0x4e, 0x36, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x5e, 0x45, 0xe0, 0x00, 0x03, 0x4c, 0x7f, 0x40, 0x06, 0x4e, 0x83, 0x00, 0x08,
+0x48, 0x00, 0x00, 0x46, 0x44, 0x20, 0x00, 0x05, 0x4c, 0x71, 0x40, 0x42, 0x00, 0x1f, 0x81, 0x75,
+0x45, 0xe0, 0x00, 0x02, 0x54, 0x50, 0x80, 0x07, 0x58, 0x4f, 0x80, 0x00, 0x50, 0x03, 0x00, 0x63,
+0x4c, 0x5f, 0x40, 0x20, 0x00, 0x53, 0x00, 0x61, 0x00, 0x23, 0x00, 0x62, 0x40, 0x92, 0xa0, 0x08,
+0x40, 0x14, 0x88, 0x04, 0x40, 0x3f, 0x0c, 0x08, 0x3e, 0x2f, 0xf7, 0xcc, 0x50, 0x5f, 0x81, 0x70,
+0x44, 0x90, 0x00, 0x00, 0x14, 0x9f, 0x80, 0x5c, 0x49, 0xff, 0xee, 0xd4, 0x04, 0x3f, 0x80, 0x5c,
+0x00, 0x4f, 0x81, 0x71, 0x10, 0x33, 0x00, 0x62, 0x10, 0x43, 0x00, 0x61, 0x48, 0x00, 0x00, 0x0a,
+0x58, 0x20, 0x00, 0x00, 0x3e, 0x0f, 0xf7, 0xcc, 0x50, 0x13, 0x00, 0x31, 0x49, 0x00, 0x01, 0xe6,
+0x4e, 0x83, 0x00, 0x0e, 0x44, 0x00, 0x00, 0x05, 0x4c, 0x70, 0x40, 0x0a, 0x00, 0x1f, 0x81, 0x75,
+0x41, 0xe0, 0x90, 0x09, 0x54, 0x2f, 0x00, 0x03, 0x48, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x00,
+0x00, 0x13, 0x00, 0x62, 0x58, 0x33, 0x80, 0x00, 0x58, 0x44, 0x00, 0x00, 0x58, 0x0f, 0x80, 0x00,
+0x49, 0xff, 0xfc, 0x52, 0x44, 0x30, 0x00, 0x00, 0x40, 0x01, 0x80, 0x06, 0x51, 0xff, 0x81, 0x7c,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xcc,
+0x3e, 0x6f, 0xf7, 0xa8, 0x00, 0x33, 0x00, 0x04, 0x50, 0x9f, 0x80, 0x2f, 0x00, 0x03, 0x00, 0x07,
+0x58, 0x70, 0x80, 0x00, 0x58, 0x81, 0x00, 0x00, 0x58, 0x14, 0x80, 0x00, 0x50, 0x2f, 0x80, 0x28,
+0x14, 0x3f, 0x80, 0x07, 0x49, 0xff, 0x9f, 0x9a, 0x00, 0x03, 0x00, 0x06, 0x58, 0x14, 0x80, 0x00,
+0x50, 0x2f, 0x80, 0x20, 0x49, 0xff, 0xa6, 0x28, 0x58, 0x03, 0x80, 0x00, 0x58, 0x14, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x05, 0x49, 0xff, 0xfe, 0x8a, 0x4e, 0x02, 0x01, 0x12, 0x00, 0x13, 0x80, 0x0f,
+0x00, 0x23, 0x80, 0x10, 0x3e, 0x0f, 0xd3, 0xb8, 0x49, 0xf7, 0xa6, 0x02, 0x50, 0x13, 0x80, 0x09,
+0x44, 0x20, 0x00, 0x08, 0x50, 0x03, 0x00, 0x0c, 0x49, 0xf7, 0xa6, 0xa2, 0x44, 0x00, 0x00, 0xa3,
+0x49, 0xf7, 0xab, 0xe4, 0x14, 0x0f, 0x80, 0x06, 0x49, 0xf7, 0xab, 0xb2, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0xa3, 0x58, 0x70, 0x00, 0x00, 0x49, 0xf7, 0xa6, 0x20, 0x44, 0x10, 0x00, 0xa3,
+0x12, 0x13, 0x80, 0x00, 0x50, 0x83, 0x80, 0x20, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x13, 0x80, 0x03,
+0x4e, 0x03, 0x00, 0x0a, 0x45, 0xcf, 0xff, 0x87, 0x40, 0x20, 0xf0, 0x02, 0x58, 0x11, 0x00, 0x18,
+0x48, 0x00, 0x00, 0x08, 0x44, 0x5f, 0xff, 0x87, 0x40, 0x40, 0x94, 0x02, 0x58, 0x12, 0x00, 0x60,
+0x10, 0x13, 0x80, 0x03, 0x00, 0x63, 0x80, 0x07, 0x01, 0xc3, 0x80, 0x03, 0x44, 0x4f, 0xff, 0xcc,
+0x54, 0x1e, 0x00, 0x7f, 0x10, 0x13, 0x80, 0x03, 0x55, 0xc3, 0x00, 0x03, 0x3e, 0x6f, 0xf7, 0xa8,
+0x00, 0x03, 0x00, 0x01, 0x11, 0xc3, 0x80, 0x07, 0x10, 0x03, 0x80, 0x04, 0x10, 0x43, 0x80, 0x05,
+0x00, 0x23, 0x80, 0x15, 0x00, 0xa3, 0x00, 0x07, 0x02, 0x53, 0x80, 0x0d, 0x54, 0x31, 0x00, 0xdd,
+0x00, 0x13, 0x80, 0x06, 0x00, 0x03, 0x80, 0x09, 0x00, 0x43, 0x80, 0x0b, 0x03, 0xe3, 0x80, 0x06,
+0x02, 0x93, 0x80, 0x07, 0x40, 0xa5, 0x08, 0x08, 0x14, 0x3f, 0x80, 0x05, 0x44, 0x2f, 0xc0, 0x03,
+0x40, 0x52, 0x88, 0x02, 0x44, 0x3f, 0xff, 0x80, 0x40, 0x2e, 0x28, 0x04, 0x40, 0xa0, 0x8c, 0x04,
+0x00, 0x33, 0x80, 0x19, 0x42, 0x10, 0x10, 0x09, 0x44, 0x0f, 0xff, 0xa0, 0x41, 0xc2, 0x00, 0x04,
+0x40, 0x41, 0x8c, 0x09, 0x40, 0x42, 0x0c, 0x08, 0x04, 0x0f, 0x80, 0x05, 0x55, 0xef, 0x00, 0x3f,
+0x58, 0x30, 0x00, 0x22, 0x59, 0xef, 0x78, 0x00, 0x10, 0x33, 0x80, 0x15, 0x10, 0x23, 0x80, 0x07,
+0x10, 0x13, 0x80, 0x09, 0x13, 0xe3, 0x80, 0x06, 0x54, 0x94, 0xf0, 0x00, 0x58, 0x52, 0x80, 0x0c,
+0x44, 0x20, 0x00, 0x00, 0x44, 0x1f, 0xff, 0x80, 0x44, 0x30, 0x00, 0x01, 0x45, 0xe0, 0x41, 0x08,
+0x10, 0xa3, 0x80, 0x06, 0x10, 0x23, 0x80, 0x0a, 0x11, 0xc3, 0x80, 0x0b, 0x12, 0x93, 0x80, 0x07,
+0x12, 0x53, 0x80, 0x0d, 0x10, 0x43, 0x80, 0x19, 0x10, 0x13, 0x80, 0x14, 0x3e, 0x37, 0xe3, 0x45,
+0x13, 0xe4, 0x00, 0x00, 0x00, 0x73, 0x00, 0xb5, 0x4e, 0x72, 0x00, 0x06, 0x44, 0x70, 0x51, 0x08,
+0x12, 0x74, 0x00, 0x00, 0x44, 0x20, 0x00, 0x00, 0x12, 0x24, 0x00, 0x0b, 0x44, 0x60, 0x21, 0xa0,
+0x3e, 0x1f, 0xf7, 0xa0, 0x44, 0x20, 0x00, 0x06, 0x50, 0x04, 0x00, 0x04, 0x4b, 0xe0, 0x18, 0x01,
+0x3e, 0x1f, 0xf7, 0x98, 0x44, 0x20, 0x00, 0x06, 0x50, 0x04, 0x00, 0x0a, 0x4b, 0xe0, 0x18, 0x01,
+0x3e, 0x1f, 0xf7, 0xa0, 0x44, 0x20, 0x00, 0x06, 0x50, 0x04, 0x00, 0x10, 0x4b, 0xe0, 0x18, 0x01,
+0x3e, 0x1f, 0xe1, 0x4c, 0x44, 0x20, 0x00, 0x06, 0x50, 0x04, 0x00, 0x18, 0x4b, 0xe0, 0x18, 0x01,
+0x3e, 0x1f, 0xe1, 0x54, 0x44, 0x20, 0x00, 0x02, 0x50, 0x04, 0x00, 0x1e, 0x4b, 0xe0, 0x18, 0x01,
+0x44, 0x60, 0x00, 0x00, 0x2e, 0x27, 0xf7, 0xad, 0x04, 0x0f, 0x80, 0x07, 0x58, 0x33, 0x00, 0x00,
+0x44, 0x10, 0x00, 0x06, 0x58, 0x53, 0x00, 0x00, 0x50, 0x84, 0x00, 0x20, 0x58, 0x43, 0x00, 0x00,
+0x14, 0x8f, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x00, 0x14, 0x6f, 0x80, 0x01, 0x49, 0xff, 0xfc, 0x68,
+0x2e, 0x37, 0xf7, 0xb2, 0x44, 0x10, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x03, 0x04, 0x2f, 0x80, 0x06,
+0x40, 0x12, 0x8c, 0x1a, 0x44, 0x00, 0x00, 0x02, 0x44, 0x30, 0x00, 0x01, 0x49, 0xf7, 0xae, 0xf2,
+0x4e, 0x03, 0x00, 0x06, 0x04, 0x0f, 0x80, 0x06, 0x49, 0xf7, 0xaa, 0xd4, 0x51, 0xff, 0x80, 0x34,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4,
+0x50, 0x6f, 0x80, 0x04, 0x58, 0x70, 0x80, 0x00, 0x58, 0x90, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x58, 0x81, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xa5, 0x16,
+0x58, 0x03, 0x00, 0x00, 0x50, 0x13, 0x80, 0x05, 0x44, 0x20, 0x00, 0x02, 0x49, 0xf7, 0xa5, 0x80,
+0x00, 0x33, 0x00, 0x01, 0x54, 0x01, 0x80, 0x80, 0x4e, 0x02, 0x00, 0x1e, 0x00, 0x13, 0x00, 0x00,
+0x54, 0x20, 0x80, 0x0e, 0x4e, 0x23, 0x00, 0x06, 0x54, 0x41, 0x80, 0x08, 0x4e, 0x43, 0x00, 0x14,
+0x54, 0x10, 0x80, 0x0f, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x12, 0xc0, 0x0e, 0x54, 0x31, 0x80, 0x08,
+0x4e, 0x33, 0x00, 0x0a, 0x58, 0x04, 0x80, 0x00, 0x58, 0x13, 0x80, 0x00, 0x58, 0x24, 0x00, 0x00,
+0x49, 0xff, 0xfe, 0x84, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xfe, 0xd4, 0x51, 0xcf, 0x81, 0x08, 0x58, 0x60, 0x00, 0x00,
+0x58, 0xa1, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10, 0x58, 0x0e, 0x00, 0x00, 0x58, 0x91, 0x80, 0x00,
+0x58, 0x82, 0x00, 0x00, 0x49, 0xf7, 0xa5, 0x44, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x00, 0x10,
+0x50, 0x0f, 0x81, 0x18, 0x49, 0xf7, 0xa5, 0x3c, 0x58, 0x1e, 0x00, 0x00, 0x44, 0x20, 0x00, 0x20,
+0x58, 0x0f, 0x80, 0x00, 0x49, 0xff, 0xed, 0xda, 0x58, 0x0f, 0x80, 0x00, 0x44, 0x10, 0x01, 0x00,
+0x49, 0xff, 0xee, 0x4c, 0x58, 0x0f, 0x80, 0x00, 0x58, 0x15, 0x00, 0x00, 0x58, 0x24, 0x80, 0x00,
+0x58, 0x34, 0x00, 0x00, 0x58, 0x6f, 0x80, 0x00, 0x49, 0xff, 0xee, 0x00, 0x51, 0xff, 0x81, 0x2c,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x49, 0xff, 0xff, 0xc0, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3c, 0x6d, 0xf8, 0xe5, 0x3c, 0x7d, 0xf8, 0xd8,
+0x4e, 0x62, 0x00, 0x18, 0x49, 0xf7, 0xaa, 0x14, 0x49, 0xf7, 0xac, 0x4a, 0x42, 0x60, 0x18, 0x24,
+0x44, 0x10, 0x00, 0x00, 0x40, 0x63, 0x08, 0x09, 0x58, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x06,
+0x1c, 0x03, 0x80, 0x01, 0x50, 0x10, 0x80, 0x01, 0x40, 0xf0, 0x98, 0x06, 0x4e, 0xf3, 0xff, 0xfa,
+0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xa9, 0xf2, 0x49, 0xf7, 0xac, 0x28,
+0x40, 0x03, 0x00, 0x37, 0x4e, 0x12, 0x00, 0x04, 0x50, 0x00, 0x00, 0x01, 0x46, 0x10, 0x01, 0x15,
+0x5c, 0xf0, 0x02, 0x01, 0x4e, 0xf3, 0x00, 0x08, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0xf8, 0xd5,
+0x48, 0x00, 0x00, 0x06, 0x3c, 0x0f, 0xf8, 0xd5, 0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0xf7, 0xa9, 0xd0,
+0x49, 0xf7, 0xac, 0x06, 0x40, 0x03, 0x00, 0x37, 0x4e, 0x12, 0x00, 0x04, 0x50, 0x00, 0x00, 0x01,
+0x54, 0x20, 0x00, 0x01, 0x4e, 0x22, 0x00, 0x04, 0x50, 0x00, 0x00, 0x01, 0x46, 0x10, 0x01, 0x15,
+0x5c, 0xf0, 0x00, 0x41, 0x4e, 0xf3, 0x00, 0x08, 0x44, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0xf8, 0xd4,
+0x48, 0x00, 0x00, 0x06, 0x3c, 0x0f, 0xf8, 0xd4, 0x44, 0x00, 0x00, 0x01, 0x3a, 0x6f, 0x98, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x14, 0x5f, 0x80, 0x01,
+0x58, 0x90, 0x80, 0x00, 0x58, 0x81, 0x00, 0x00, 0x58, 0x61, 0x80, 0x00, 0x58, 0xa0, 0x00, 0x00,
+0x05, 0xcf, 0x80, 0x0a, 0x49, 0xf7, 0xa9, 0x9c, 0x49, 0xf7, 0xab, 0xd2, 0x04, 0x5f, 0x80, 0x01,
+0x4e, 0xa3, 0x00, 0x06, 0x58, 0x75, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x40, 0x70, 0x28, 0x37,
+0x40, 0x73, 0x1c, 0x37, 0x4e, 0x12, 0x00, 0x04, 0x50, 0x73, 0x80, 0x01, 0x4e, 0x93, 0x00, 0x06,
+0x58, 0x44, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x40, 0x40, 0x24, 0x37, 0x40, 0x43, 0x10, 0x57,
+0x4e, 0x22, 0x00, 0x04, 0x50, 0x42, 0x00, 0x01, 0x4e, 0x83, 0x00, 0x06, 0x58, 0x34, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x0a, 0x40, 0x30, 0x20, 0x37, 0x40, 0x33, 0x0f, 0xd7, 0x4f, 0xe2, 0x00, 0x04,
+0x50, 0x31, 0x80, 0x01, 0x40, 0x02, 0x80, 0xb7, 0x40, 0x12, 0x1c, 0x00, 0x40, 0x20, 0x8c, 0x00,
+0x4e, 0x52, 0x00, 0x04, 0x50, 0x00, 0x00, 0x01, 0x42, 0x10, 0x70, 0x24, 0x41, 0xe0, 0x88, 0x00,
+0x3d, 0xef, 0xf8, 0xe5, 0x3c, 0x2f, 0xf8, 0xe6, 0x3c, 0x0f, 0xf8, 0xe7, 0x3c, 0x1f, 0xf8, 0xe8,
+0x3c, 0x8f, 0xf8, 0xe3, 0x3c, 0x6f, 0xf8, 0xe0, 0x3c, 0xaf, 0xf8, 0xe1, 0x3c, 0x9f, 0xf8, 0xe2,
+0x3c, 0x3f, 0xf8, 0xeb, 0x44, 0x00, 0x00, 0x01, 0x3d, 0xcf, 0xf8, 0xe4, 0x3c, 0x7f, 0xf8, 0xe9,
+0x3c, 0x4f, 0xf8, 0xea, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xec, 0x58, 0x91, 0x80, 0x00, 0x58, 0x82, 0x00, 0x00,
+0x04, 0x3f, 0x80, 0x0d, 0x04, 0x4f, 0x80, 0x0c, 0x14, 0x2f, 0x80, 0x03, 0x14, 0x3f, 0x80, 0x00,
+0x14, 0x4f, 0x80, 0x01, 0x14, 0x5f, 0x80, 0x02, 0x58, 0xa0, 0x80, 0x00, 0x54, 0x60, 0x00, 0xff,
+0x05, 0xcf, 0x80, 0x0f, 0x49, 0xf7, 0xa9, 0x24, 0x49, 0xf7, 0xab, 0x5a, 0x04, 0x2f, 0x80, 0x03,
+0x04, 0x3f, 0x80, 0x00, 0x04, 0x4f, 0x80, 0x01, 0x04, 0x5f, 0x80, 0x02, 0x4e, 0x92, 0x00, 0x1c,
+0x3c, 0x7d, 0xf8, 0xe1, 0x4e, 0x72, 0x00, 0x18, 0x41, 0xe0, 0x1c, 0xf7, 0x40, 0x73, 0x78, 0x37,
+0x55, 0xe0, 0x80, 0xff, 0x12, 0x75, 0x00, 0x00, 0x11, 0xe1, 0x00, 0x00, 0x02, 0x25, 0x00, 0x00,
+0x40, 0x7f, 0x18, 0x08, 0x3d, 0xed, 0xf8, 0xd8, 0x43, 0xe0, 0x08, 0x73, 0x40, 0x2f, 0x1c, 0x00,
+0x14, 0x24, 0x80, 0x00, 0x4e, 0x42, 0x00, 0x22, 0x3c, 0x1d, 0xf8, 0xe2, 0x4e, 0x12, 0x00, 0x1e,
+0x40, 0x20, 0x04, 0x37, 0x3c, 0x7d, 0xf8, 0xe9, 0x40, 0x23, 0x0b, 0xd7, 0x40, 0x1f, 0x78, 0x00,
+0x54, 0x10, 0x80, 0xff, 0x41, 0xe1, 0x1c, 0x00, 0x13, 0xe4, 0x00, 0x00, 0x10, 0x12, 0x80, 0x00,
+0x41, 0xe0, 0x94, 0x08, 0x02, 0x24, 0x00, 0x00, 0x3c, 0x1d, 0xf8, 0xd8, 0x42, 0x10, 0x08, 0x73,
+0x40, 0x50, 0xf8, 0x00, 0x14, 0x52, 0x00, 0x00, 0x4f, 0xc2, 0x00, 0x26, 0x3c, 0x1d, 0xf8, 0xe3,
+0x4e, 0x12, 0x00, 0x22, 0x40, 0x10, 0x04, 0x57, 0x3c, 0x4d, 0xf8, 0xea, 0x3c, 0x2d, 0xf8, 0xe9,
+0x40, 0x52, 0x08, 0x00, 0x41, 0xe3, 0x04, 0x97, 0x40, 0x22, 0xf8, 0x00, 0x12, 0x21, 0x80, 0x00,
+0x54, 0x12, 0x00, 0xff, 0x04, 0x6f, 0x80, 0x0e, 0x10, 0x13, 0x00, 0x00, 0x40, 0x60, 0x94, 0x08,
+0x02, 0x51, 0x80, 0x00, 0x3c, 0x3d, 0xf8, 0xd8, 0x42, 0x30, 0x14, 0x73, 0x40, 0x01, 0x98, 0x00,
+0x14, 0x0e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x14, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x44, 0x60, 0x2f, 0xc0,
+0x54, 0x70, 0x00, 0xff, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x50, 0x06, 0x63, 0x4c, 0x02, 0x80, 0x1a,
+0x4b, 0xe0, 0x18, 0x01, 0x46, 0x20, 0x07, 0x60, 0x58, 0x51, 0x03, 0x00, 0x4c, 0x02, 0x80, 0x12,
+0x4b, 0xe0, 0x18, 0x01, 0x46, 0x30, 0x07, 0x62, 0x58, 0x51, 0x88, 0x00, 0x4c, 0x02, 0x80, 0x0a,
+0x4b, 0xe0, 0x18, 0x01, 0x46, 0x40, 0x07, 0x63, 0x58, 0x52, 0x06, 0x00, 0x4c, 0x02, 0xc0, 0x04,
+0x3e, 0x77, 0xe3, 0x58, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x51, 0xff, 0xff, 0xf8, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xf7, 0xaa, 0xd0, 0x2e, 0x27, 0xe3, 0x58, 0x4e, 0x23, 0x00, 0x10, 0x2e, 0x07, 0xe3, 0x4c,
+0x2e, 0x17, 0xe3, 0x48, 0x2e, 0x47, 0xe3, 0x94, 0x2e, 0x57, 0xe3, 0x50, 0x2e, 0x67, 0xe3, 0x54,
+0x58, 0x31, 0x00, 0x00, 0x48, 0x00, 0x00, 0x30, 0x44, 0x60, 0x2f, 0xc0, 0x4b, 0xe0, 0x18, 0x01,
+0x46, 0x20, 0x06, 0x63, 0x4c, 0x01, 0x00, 0x1a, 0x46, 0x70, 0x07, 0x60, 0x4b, 0xe0, 0x18, 0x01,
+0x58, 0x73, 0x83, 0x00, 0x4c, 0x03, 0x80, 0x12, 0x46, 0x80, 0x07, 0x62, 0x4b, 0xe0, 0x18, 0x01,
+0x58, 0x84, 0x08, 0x00, 0x4c, 0x04, 0x00, 0x0a, 0x46, 0x90, 0x07, 0x63, 0x4b, 0xe0, 0x18, 0x01,
+0x58, 0x94, 0x86, 0x00, 0x4c, 0x04, 0xc0, 0x14, 0x44, 0x60, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x30, 0x00, 0x01, 0x58, 0x43, 0x00, 0x00,
+0x58, 0x53, 0x00, 0x00, 0x14, 0x6f, 0x80, 0x00, 0x49, 0x00, 0x02, 0x12, 0x46, 0x7a, 0x00, 0x00,
+0x04, 0x83, 0x80, 0x59, 0x46, 0x6a, 0x00, 0x00, 0x14, 0x83, 0x00, 0x5a, 0x44, 0x70, 0x2c, 0xcc,
+0x3c, 0x9d, 0xf8, 0xe5, 0x44, 0x60, 0x31, 0x3c, 0x4b, 0xe0, 0x1c, 0x01, 0x4b, 0xe0, 0x18, 0x01,
+0x42, 0x80, 0x24, 0x73, 0x46, 0x1a, 0x00, 0x00, 0x14, 0x80, 0x80, 0x5b, 0x3c, 0xad, 0xf8, 0xd2,
+0x58, 0x04, 0x00, 0x00, 0x40, 0x35, 0x20, 0x08, 0x46, 0x8a, 0x00, 0x00, 0x40, 0x40, 0x0c, 0x00,
+0x14, 0x44, 0x00, 0x5c, 0x3c, 0x2d, 0xf8, 0xd3, 0x46, 0x5a, 0x00, 0x00, 0x40, 0x11, 0x20, 0x08,
+0x40, 0x92, 0x04, 0x00, 0x14, 0x92, 0x80, 0x5d, 0x3c, 0xad, 0xf8, 0xd4, 0x4b, 0xe0, 0x1c, 0x01,
+0x4b, 0xe0, 0x18, 0x01, 0x40, 0xa5, 0x04, 0x09, 0x42, 0x90, 0x28, 0x73, 0x46, 0x3a, 0x00, 0x00,
+0x14, 0x91, 0x80, 0x5e, 0x3c, 0x0d, 0xf8, 0xd4, 0x40, 0x80, 0x04, 0x09, 0x4b, 0xe0, 0x1c, 0x01,
+0x4b, 0xe0, 0x18, 0x01, 0x42, 0x90, 0x20, 0x73, 0x58, 0x84, 0x80, 0x00, 0x46, 0x9a, 0x00, 0x00,
+0x14, 0x84, 0x80, 0x5f, 0x3c, 0x9d, 0xf8, 0xd5, 0x4b, 0xe0, 0x1c, 0x01, 0x4b, 0xe0, 0x18, 0x01,
+0x42, 0x80, 0x24, 0x73, 0x46, 0x4a, 0x00, 0x00, 0x14, 0x82, 0x00, 0x61, 0x44, 0x00, 0x00, 0x00,
+0x49, 0xf7, 0xaa, 0x30, 0x3e, 0x08, 0x02, 0x76, 0x3e, 0x18, 0x02, 0x78, 0x49, 0xf7, 0xad, 0x80,
+0x3c, 0x00, 0x01, 0x3c, 0x3c, 0x08, 0x01, 0x3a, 0x3c, 0x08, 0x01, 0x39, 0x44, 0x00, 0x00, 0x01,
+0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
+0x51, 0xff, 0xff, 0xf0, 0x04, 0x7f, 0x80, 0x08, 0x04, 0x6f, 0x80, 0x09, 0x14, 0x7f, 0x80, 0x00,
+0x14, 0x6f, 0x80, 0x01, 0x04, 0x7f, 0x80, 0x0a, 0x04, 0x6f, 0x80, 0x0b, 0x00, 0x8f, 0x80, 0x38,
+0x49, 0xff, 0xfe, 0x02, 0x4e, 0x02, 0x00, 0x74, 0x4e, 0x73, 0x00, 0x06, 0x3c, 0x7f, 0xf8, 0xd2,
+0x48, 0x00, 0x00, 0x16, 0x5c, 0xf3, 0x81, 0x01, 0x4e, 0xf2, 0x00, 0x08, 0x44, 0x10, 0x00, 0x01,
+0x3c, 0x1f, 0xf8, 0xd2, 0x48, 0x00, 0x00, 0x0c, 0x3e, 0x1f, 0xe3, 0x48, 0x5c, 0xf3, 0x82, 0x01,
+0x4e, 0xf2, 0x00, 0x22, 0x44, 0x30, 0x00, 0x02, 0x14, 0x30, 0x80, 0x00, 0x4e, 0x63, 0x00, 0x06,
+0x3c, 0x6f, 0xf8, 0xd3, 0x48, 0x00, 0x00, 0x1e, 0x5c, 0xf3, 0x01, 0x01, 0x4e, 0xf2, 0x00, 0x08,
+0x45, 0xe0, 0x00, 0x01, 0x3d, 0xef, 0xf8, 0xd3, 0x48, 0x00, 0x00, 0x14, 0x3e, 0x1f, 0xe3, 0x4c,
+0x5c, 0xf3, 0x02, 0x01, 0x4e, 0xf2, 0x00, 0x08, 0x44, 0x00, 0x00, 0x02, 0x14, 0x00, 0x80, 0x00,
+0x48, 0x00, 0x00, 0x08, 0x44, 0x00, 0x00, 0x00, 0x14, 0x00, 0x80, 0x00, 0x48, 0x00, 0x00, 0x3a,
+0x04, 0x0f, 0x80, 0x0c, 0x49, 0xff, 0xfd, 0x98, 0x4e, 0x02, 0x00, 0x32, 0x04, 0x0f, 0x80, 0x0d,
+0x49, 0xff, 0xfd, 0x70, 0x4e, 0x02, 0x00, 0x2c, 0x04, 0x1f, 0x80, 0x0f, 0x58, 0x04, 0x00, 0x00,
+0x49, 0xff, 0xfe, 0xb2, 0x4e, 0x02, 0x00, 0x24, 0x3e, 0x6f, 0xe3, 0x74, 0x49, 0xff, 0xfe, 0xdc,
+0x14, 0x6f, 0x80, 0x00, 0x3e, 0x6f, 0xe3, 0x78, 0x3e, 0x1f, 0xe3, 0x60, 0x3e, 0x2f, 0xe3, 0x64,
+0x3e, 0x3f, 0xe3, 0x68, 0x3e, 0x4f, 0xe3, 0x6c, 0x3e, 0x5f, 0xe3, 0x70, 0x14, 0x6f, 0x80, 0x01,
+0x3e, 0x0f, 0xe3, 0x5c, 0x3e, 0x6f, 0xe3, 0x7c, 0x14, 0x6f, 0x80, 0x02, 0x49, 0x00, 0x01, 0x92,
+0x49, 0xff, 0xfd, 0x20, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x10, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x51, 0xff, 0xff, 0xdc, 0x49, 0xf7, 0xc9, 0x54, 0x44, 0x00, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00,
+0x49, 0xf7, 0xa7, 0xb2, 0x44, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x40, 0x58, 0x10, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x20, 0x40, 0x30, 0x04, 0x08, 0x44, 0x40, 0x50, 0x00, 0x58, 0x53, 0x00, 0x00,
+0x14, 0x6f, 0x80, 0x00, 0x14, 0x6f, 0x80, 0x01, 0x14, 0x6f, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x03,
+0x14, 0x6f, 0x80, 0x04, 0x14, 0x6f, 0x80, 0x05, 0x14, 0x6f, 0x80, 0x06, 0x14, 0x6f, 0x80, 0x07,
+0x49, 0xff, 0xff, 0x46, 0x4e, 0x02, 0x00, 0x74, 0x44, 0x00, 0xff, 0xff, 0x49, 0xf7, 0xa6, 0xa0,
+0x44, 0x00, 0x00, 0x0f, 0x49, 0xf7, 0xa6, 0xae, 0x44, 0x00, 0x00, 0x01, 0x49, 0xf7, 0xa9, 0x52,
+0x3c, 0x0d, 0xf8, 0xca, 0x44, 0x10, 0x00, 0x03, 0x44, 0x70, 0x38, 0xf4, 0x4c, 0x00, 0xc0, 0x2a,
+0x46, 0x45, 0x00, 0x00, 0x04, 0x32, 0x01, 0x63, 0x58, 0x13, 0x00, 0x00, 0x51, 0xe1, 0x80, 0x01,
+0x40, 0x2f, 0x00, 0x13, 0x58, 0x31, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x0f, 0xff, 0x44, 0x30, 0x00, 0x18, 0x44, 0x00, 0x00, 0x01,
+0x4b, 0xe0, 0x1c, 0x01, 0x2e, 0x17, 0xe3, 0x2c, 0x46, 0x0a, 0x50, 0x08, 0x46, 0x3a, 0x00, 0x00,
+0x40, 0x50, 0xa8, 0x08, 0x40, 0x42, 0x80, 0x00, 0x14, 0x41, 0x80, 0x61, 0x48, 0x00, 0x00, 0x34,
+0x44, 0x20, 0x02, 0x88, 0x58, 0x31, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x0f, 0xff, 0x44, 0x30, 0x00, 0x18,
+0x44, 0x00, 0x00, 0x01, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0x0f, 0xff,
+0x44, 0x30, 0x00, 0x34, 0x44, 0x00, 0x00, 0x02, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x10, 0x00, 0x01,
+0x44, 0x20, 0x0f, 0xff, 0x44, 0x30, 0x00, 0x18, 0x44, 0x00, 0x00, 0x02, 0x4b, 0xe0, 0x1c, 0x01,
+0x44, 0x00, 0x00, 0x02, 0x58, 0x10, 0x00, 0x00, 0x44, 0x20, 0x0f, 0xff, 0x40, 0x30, 0x0c, 0x08,
+0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x00, 0x49, 0xf7, 0xa8, 0xec, 0x51, 0xff, 0x80, 0x24,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0x3c, 0x51, 0xff, 0xff, 0xf4,
+0x04, 0x6f, 0x80, 0x01, 0x54, 0x00, 0x00, 0xff, 0x42, 0x43, 0x7c, 0x08, 0x14, 0x4f, 0x80, 0x01,
+0x04, 0x5f, 0x80, 0x01, 0x46, 0x4a, 0x00, 0x00, 0x42, 0x52, 0xc0, 0x09, 0x14, 0x5f, 0x80, 0x01,
+0x10, 0x0f, 0x80, 0x05, 0x04, 0x0f, 0x80, 0x01, 0x14, 0x02, 0x00, 0x65, 0x04, 0x52, 0x00, 0x65,
+0x46, 0x0a, 0x00, 0x00, 0x14, 0x5f, 0x80, 0x01, 0x04, 0x5f, 0x80, 0x01, 0x4e, 0x55, 0xff, 0xf8,
+0x04, 0x00, 0x00, 0x65, 0x14, 0x0f, 0x80, 0x01, 0x04, 0x5f, 0x80, 0x01, 0x04, 0x4f, 0x80, 0x01,
+0x04, 0x0f, 0x80, 0x01, 0x40, 0x42, 0x14, 0x09, 0x42, 0x52, 0x9c, 0x0b, 0x54, 0x42, 0x00, 0x03,
+0x54, 0x00, 0x00, 0x1f, 0x10, 0x51, 0x80, 0x00, 0x10, 0x40, 0x80, 0x00, 0x10, 0x01, 0x00, 0x00,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0x98, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x51, 0xff, 0xff, 0xf8,
+0x44, 0x30, 0x00, 0x00, 0x14, 0x3f, 0x80, 0x01, 0x46, 0x2a, 0x00, 0x00, 0x04, 0x01, 0x00, 0x64,
+0x54, 0x10, 0x80, 0xff, 0x14, 0x0f, 0x80, 0x01, 0x4e, 0x12, 0x00, 0x08, 0x04, 0x4f, 0x80, 0x01,
+0x58, 0x02, 0x00, 0x10, 0x48, 0x00, 0x00, 0x06, 0x04, 0x5f, 0x80, 0x01, 0x42, 0x02, 0x90, 0x09,
+0x14, 0x0f, 0x80, 0x01, 0x46, 0x0a, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x14, 0x20, 0x00, 0x64,
+0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x08, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0x3c,
+0x51, 0xff, 0xff, 0xf8, 0x04, 0x6f, 0x80, 0x01, 0x54, 0x00, 0x00, 0x03, 0x40, 0x63, 0x08, 0x09,
+0x40, 0x63, 0x08, 0x08, 0x40, 0x73, 0x00, 0x04, 0x14, 0x7f, 0x80, 0x01, 0x54, 0x10, 0x80, 0x03,
+0x04, 0x0f, 0x80, 0x01, 0x44, 0x6f, 0xff, 0xf3, 0x40, 0x00, 0x18, 0x02, 0x40, 0x70, 0x88, 0x08,
+0x40, 0x10, 0x1c, 0x04, 0x14, 0x1f, 0x80, 0x01, 0x54, 0x61, 0x00, 0x07, 0x04, 0x1f, 0x80, 0x01,
+0x44, 0x7f, 0xff, 0x8f, 0x40, 0x00, 0x9c, 0x02, 0x40, 0x23, 0x10, 0x08, 0x40, 0x60, 0x08, 0x04,
+0x14, 0x6f, 0x80, 0x01, 0x54, 0x31, 0x80, 0x01, 0x04, 0x2f, 0x80, 0x01, 0x42, 0x01, 0x1c, 0x09,
+0x40, 0x71, 0x9c, 0x08, 0x40, 0x60, 0x1c, 0x04, 0x14, 0x6f, 0x80, 0x01, 0x54, 0x32, 0x00, 0x7f,
+0x04, 0x0f, 0x80, 0x01, 0x44, 0x2f, 0x80, 0xff, 0x40, 0x10, 0x08, 0x02, 0x40, 0x71, 0xa0, 0x08,
+0x40, 0x40, 0x9c, 0x04, 0x14, 0x4f, 0x80, 0x01, 0x54, 0x62, 0x80, 0x7f, 0x04, 0x3f, 0x80, 0x01,
+0x40, 0x23, 0x3c, 0x08, 0x46, 0x6f, 0xfc, 0x07, 0x58, 0x63, 0x0f, 0xff, 0x40, 0x01, 0x98, 0x02,
+0x40, 0x10, 0x08, 0x04, 0x14, 0x1f, 0x80, 0x01, 0x00, 0x7f, 0x80, 0x10, 0x04, 0x5f, 0x80, 0x01,
+0x40, 0x43, 0xd8, 0x08, 0x40, 0x32, 0xa8, 0x08, 0x40, 0x31, 0xa8, 0x09, 0x40, 0x21, 0x90, 0x04,
+0x14, 0x2f, 0x80, 0x01, 0x46, 0x0a, 0x00, 0x00, 0x04, 0x1f, 0x80, 0x01, 0x14, 0x10, 0x00, 0x58,
+0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0x9c, 0x04, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x98, 0x3c, 0x46, 0x6a, 0x00, 0x00, 0x04, 0x63, 0x00, 0x59, 0x14, 0x60, 0x00, 0x00,
+0x46, 0x0a, 0x00, 0x00, 0x04, 0x60, 0x00, 0x5a, 0x46, 0x0a, 0x00, 0x00, 0x14, 0x60, 0x80, 0x00,
+0x04, 0x10, 0x00, 0x5b, 0x46, 0x0a, 0x00, 0x00, 0x14, 0x11, 0x00, 0x00, 0x04, 0x20, 0x00, 0x5c,
+0x46, 0x0a, 0x00, 0x00, 0x14, 0x21, 0x80, 0x00, 0x04, 0x10, 0x00, 0x5d, 0x58, 0x20, 0x00, 0x00,
+0x14, 0x12, 0x00, 0x00, 0x04, 0x31, 0x00, 0x5e, 0x46, 0x0a, 0x00, 0x00, 0x14, 0x32, 0x80, 0x00,
+0x04, 0x10, 0x00, 0x5f, 0x04, 0x2f, 0x80, 0x01, 0x58, 0x50, 0x00, 0x00, 0x14, 0x11, 0x00, 0x00,
+0x04, 0x32, 0x80, 0x60, 0x04, 0x4f, 0x80, 0x02, 0x46, 0x0a, 0x00, 0x00, 0x14, 0x32, 0x00, 0x00,
+0x04, 0x10, 0x00, 0x61, 0x04, 0x2f, 0x80, 0x03, 0x44, 0x00, 0x00, 0x01, 0x14, 0x11, 0x00, 0x00,
+0x3a, 0x6f, 0x98, 0x04, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xf4,
+0x54, 0x70, 0x80, 0xff, 0x54, 0x61, 0x00, 0xff, 0x58, 0x13, 0x00, 0x00, 0x54, 0x80, 0x00, 0xff,
+0x58, 0x03, 0x80, 0x00, 0x54, 0x91, 0x80, 0xff, 0x49, 0xf7, 0xa6, 0xf2, 0x44, 0x50, 0x0f, 0xff,
+0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x4a, 0x04, 0x5f, 0x80, 0x01,
+0x54, 0x13, 0x80, 0x03, 0x42, 0x42, 0xfc, 0x08, 0x14, 0x4f, 0x80, 0x01, 0x54, 0x24, 0x80, 0x01,
+0x04, 0x3f, 0x80, 0x01, 0x43, 0xe1, 0xc0, 0x08, 0x15, 0xef, 0x80, 0x01, 0x10, 0x8f, 0x80, 0x05,
+0x40, 0x51, 0x1c, 0x08, 0x04, 0x7f, 0x80, 0x01, 0x41, 0xe0, 0x94, 0x08, 0x42, 0x43, 0x9c, 0x09,
+0x40, 0x32, 0x14, 0x04, 0x14, 0x3f, 0x80, 0x01, 0x44, 0x1f, 0xff, 0x9f, 0x04, 0x0f, 0x80, 0x01,
+0x40, 0x70, 0x04, 0x02, 0x40, 0x73, 0xf8, 0x04, 0x14, 0x7f, 0x80, 0x01, 0x54, 0x63, 0x00, 0x1f,
+0x04, 0x5f, 0x80, 0x01, 0x46, 0x3a, 0x00, 0x00, 0x40, 0x42, 0x94, 0x09, 0x40, 0x42, 0x14, 0x08,
+0x40, 0x62, 0x18, 0x04, 0x14, 0x6f, 0x80, 0x01, 0x58, 0x31, 0x81, 0x94, 0x04, 0x0f, 0x80, 0x01,
+0x58, 0x11, 0x80, 0x00, 0x14, 0x01, 0x80, 0x00, 0x05, 0xe0, 0x80, 0x00, 0x15, 0xef, 0x80, 0x01,
+0x04, 0x0f, 0x80, 0x01, 0x4e, 0x05, 0xff, 0xfa, 0x44, 0x00, 0x00, 0x01, 0x51, 0xff, 0x80, 0x0c,
+0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x51, 0xff, 0xff, 0xf8,
+0x54, 0x60, 0x00, 0xff, 0x54, 0x70, 0x80, 0xff, 0x58, 0x13, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00,
+0x54, 0x81, 0x00, 0xff, 0x49, 0xf7, 0xa6, 0x8c, 0x44, 0x50, 0x0f, 0xff, 0x4c, 0x02, 0xc0, 0x08,
+0x4e, 0x63, 0x00, 0x42, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x72, 0xc0, 0x3e, 0x04, 0x1f, 0x80, 0x01,
+0x46, 0x2f, 0xfe, 0x0f, 0x54, 0x43, 0x80, 0x1f, 0x58, 0x21, 0x0f, 0xff, 0x40, 0x32, 0x40, 0x08,
+0x40, 0x70, 0x88, 0x02, 0x40, 0x73, 0x8c, 0x04, 0x14, 0x7f, 0x80, 0x01, 0x54, 0x03, 0x00, 0x03,
+0x05, 0xef, 0x80, 0x01, 0x42, 0x4f, 0x54, 0x09, 0x42, 0x42, 0x58, 0x09, 0x40, 0x50, 0x54, 0x08,
+0x40, 0x32, 0x14, 0x04, 0x14, 0x3f, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x01, 0x54, 0x14, 0x00, 0x01,
+0x42, 0x60, 0x5c, 0x09, 0x41, 0xe0, 0xdc, 0x08, 0x40, 0x53, 0x78, 0x04, 0x14, 0x5f, 0x80, 0x01,
+0x46, 0x6a, 0x00, 0x00, 0x04, 0x4f, 0x80, 0x01, 0x14, 0x43, 0x00, 0x09, 0x49, 0xf7, 0xaa, 0x78,
+0x04, 0x33, 0x00, 0x09, 0x14, 0x3f, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x01, 0x54, 0x00, 0x0f, 0xff,
+0x48, 0x00, 0x00, 0x04, 0x44, 0x00, 0x0f, 0xff, 0x51, 0xff, 0x80, 0x08, 0x3a, 0x6f, 0xa0, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x46, 0x00, 0x01, 0x17, 0x2e, 0x10, 0x02, 0x86, 0x4e, 0x12, 0x00, 0x06,
+0x44, 0x20, 0x00, 0x00, 0x3e, 0x20, 0x02, 0x86, 0x4a, 0x00, 0x78, 0x20, 0x54, 0x00, 0x00, 0xff,
+0x40, 0x20, 0x08, 0x09, 0x40, 0x11, 0x00, 0x10, 0x4e, 0x16, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xfd,
+0x48, 0x00, 0x00, 0x56, 0x44, 0x30, 0x00, 0x01, 0x54, 0x00, 0x00, 0x03, 0x4c, 0x11, 0xc0, 0x08,
+0x40, 0x01, 0x00, 0x00, 0x50, 0x00, 0x7f, 0xff, 0x48, 0x00, 0x00, 0x14, 0x5e, 0xf0, 0x80, 0x05,
+0x4e, 0xf2, 0x00, 0x14, 0x44, 0x20, 0x00, 0x03, 0x42, 0x00, 0x08, 0x24, 0x42, 0x50, 0x88, 0x24,
+0x50, 0x30, 0x00, 0x05, 0x40, 0x41, 0x88, 0x0e, 0x40, 0x12, 0x84, 0x0a, 0x40, 0x02, 0x04, 0x00,
+0x40, 0x00, 0x00, 0x10, 0x48, 0x00, 0x00, 0x34, 0x5e, 0xf0, 0x80, 0x09, 0x4e, 0xf2, 0x00, 0x0e,
+0x44, 0x30, 0x00, 0x03, 0x42, 0x50, 0x8c, 0x24, 0x50, 0x12, 0x80, 0x02, 0x40, 0x40, 0x88, 0x0a,
+0x50, 0x02, 0x00, 0x03, 0x48, 0xff, 0xff, 0xee, 0x5e, 0xf0, 0x80, 0x11, 0x4e, 0xf2, 0x00, 0x0e,
+0x44, 0x50, 0x00, 0x0b, 0x42, 0x40, 0x94, 0x24, 0x50, 0x02, 0x00, 0x0f, 0x40, 0x20, 0x14, 0x0a,
+0x50, 0x01, 0x00, 0x07, 0x48, 0x00, 0x00, 0x14, 0x5e, 0xf0, 0x80, 0x21, 0x4e, 0xf3, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x00, 0x00, 0x05, 0x42, 0x20, 0x80, 0x24,
+0x50, 0x31, 0x00, 0x10, 0x40, 0x11, 0x94, 0x0a, 0x50, 0x00, 0x80, 0x0a, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xcc, 0x2e, 0x07, 0xe1, 0xb2, 0x4e, 0x03, 0x02, 0xee,
+0x3e, 0x0f, 0xdf, 0xbc, 0x00, 0x30, 0x00, 0x25, 0x00, 0x40, 0x00, 0x24, 0x3e, 0x1f, 0xd3, 0xd4,
+0x20, 0xa0, 0x00, 0x27, 0x20, 0x90, 0x00, 0x22, 0x2e, 0x57, 0xe3, 0xbc, 0x3a, 0x00, 0x84, 0x00,
+0x50, 0x8f, 0x80, 0x28, 0x3c, 0x7d, 0xf4, 0xf4, 0x52, 0x62, 0x00, 0x00, 0x53, 0xc1, 0x80, 0x00,
+0x50, 0x2f, 0x80, 0x18, 0x14, 0x5f, 0x80, 0x05, 0x3a, 0x01, 0x04, 0x20, 0x14, 0x7f, 0x80, 0x09,
+0x10, 0x64, 0x00, 0x03, 0x11, 0xc4, 0x00, 0x00, 0x10, 0xa4, 0x00, 0x01, 0x10, 0x94, 0x00, 0x02,
+0x3c, 0x4d, 0xf4, 0xf3, 0x04, 0x2f, 0x80, 0x05, 0x44, 0x30, 0x00, 0x01, 0x14, 0x4f, 0x80, 0x08,
+0x4c, 0x21, 0xc0, 0x08, 0x3e, 0x9f, 0xe1, 0x6c, 0x14, 0x9f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x1c,
+0x04, 0xaf, 0x80, 0x05, 0x44, 0x50, 0x00, 0x02, 0x4c, 0xa2, 0xc0, 0x08, 0x3e, 0x6f, 0xe1, 0x74,
+0x14, 0x6f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x10, 0x04, 0x4f, 0x80, 0x05, 0x3f, 0xef, 0xe1, 0x84,
+0x56, 0x22, 0x00, 0x03, 0x3e, 0x3f, 0xe1, 0x7c, 0x40, 0x71, 0x88, 0x1a, 0x40, 0x7f, 0x08, 0x1b,
+0x14, 0x7f, 0x80, 0x04, 0x44, 0x10, 0x00, 0x00, 0x3e, 0x0f, 0xe1, 0x8c, 0x14, 0x1f, 0x80, 0x03,
+0x14, 0x0f, 0x80, 0x02, 0x50, 0x8f, 0x80, 0x20, 0x3e, 0xaf, 0xe1, 0x58, 0x59, 0xc0, 0x80, 0x00,
+0x04, 0x9f, 0x80, 0x05, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x92, 0x80, 0xc4, 0x04, 0x1f, 0x80, 0x04,
+0x3e, 0x6f, 0xe1, 0x60, 0x00, 0x30, 0x80, 0x00, 0x00, 0x20, 0x80, 0x01, 0x40, 0x71, 0x8c, 0x00,
+0x40, 0x43, 0x98, 0x00, 0x20, 0x72, 0x00, 0x01, 0x51, 0xef, 0x80, 0x28, 0x38, 0x43, 0x0d, 0x10,
+0x38, 0x6f, 0x09, 0x00, 0x5e, 0xf3, 0xff, 0xf7, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x30, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x26, 0x5e, 0xf3, 0xff, 0xfc, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x30, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x1e, 0x5e, 0xf3, 0xff, 0xff, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x30, 0x00, 0x02,
+0x48, 0x00, 0x00, 0x16, 0x4e, 0x76, 0x00, 0x06, 0x44, 0x30, 0x00, 0x04, 0x48, 0x00, 0x00, 0x10,
+0x5e, 0xf3, 0x80, 0x13, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x30, 0x00, 0xfc, 0x48, 0x00, 0x00, 0x08,
+0x3e, 0x5f, 0xe1, 0x9c, 0x40, 0x03, 0x94, 0x00, 0x00, 0x30, 0x7f, 0xff, 0x40, 0x11, 0x08, 0x00,
+0x50, 0x9f, 0x80, 0x28, 0x41, 0xe4, 0x84, 0x00, 0x00, 0x9f, 0x00, 0x01, 0x40, 0x24, 0x98, 0x00,
+0x40, 0x21, 0x00, 0x10, 0x5e, 0xf1, 0x7f, 0xf7, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x26, 0x5e, 0xf1, 0x7f, 0xfc, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x1e, 0x5e, 0xf1, 0x7f, 0xff, 0x4e, 0xf2, 0x00, 0x06, 0x44, 0x00, 0x00, 0x02,
+0x48, 0x00, 0x00, 0x16, 0x4e, 0x26, 0x00, 0x06, 0x44, 0x00, 0x00, 0x04, 0x48, 0x00, 0x00, 0x10,
+0x5e, 0xf1, 0x00, 0x13, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x00, 0x00, 0xfc, 0x48, 0x00, 0x00, 0x08,
+0x3e, 0x0f, 0xe1, 0x9c, 0x40, 0x51, 0x00, 0x00, 0x00, 0x02, 0xff, 0xff, 0x41, 0xe0, 0x0c, 0x00,
+0x54, 0x0f, 0x00, 0xff, 0x14, 0x4f, 0x80, 0x01, 0x49, 0xff, 0xfe, 0xb2, 0x40, 0x54, 0x9c, 0x00,
+0x40, 0x12, 0x80, 0x01, 0x04, 0x9f, 0x80, 0x01, 0x00, 0x05, 0x00, 0x01, 0x3e, 0x3f, 0xe1, 0x94,
+0x3e, 0x4f, 0xe1, 0x98, 0x00, 0x55, 0x00, 0x00, 0x40, 0x2e, 0x0c, 0x00, 0x40, 0x7e, 0x10, 0x00,
+0x54, 0x10, 0x80, 0xff, 0x00, 0x41, 0x00, 0x00, 0x40, 0x63, 0x24, 0x00, 0x40, 0x30, 0x80, 0x01,
+0x04, 0x9f, 0x80, 0x03, 0x00, 0x03, 0x80, 0x00, 0x40, 0x53, 0x14, 0x01, 0x54, 0x31, 0x80, 0xff,
+0x50, 0x7f, 0x80, 0x18, 0x38, 0x63, 0xa4, 0x08, 0x40, 0x22, 0x90, 0x00, 0x40, 0x41, 0x80, 0x00,
+0x40, 0x03, 0xa4, 0x00, 0x50, 0x7f, 0x80, 0x24, 0x10, 0x10, 0x00, 0x01, 0x38, 0x23, 0xf0, 0x08,
+0x10, 0x44, 0x00, 0x00, 0x04, 0x4f, 0x80, 0x02, 0x10, 0x52, 0x00, 0x00, 0x10, 0x32, 0x00, 0x01,
+0x04, 0x3f, 0x80, 0x04, 0x50, 0x61, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x04, 0x48, 0x00, 0x00, 0x20,
+0x05, 0xef, 0x80, 0x03, 0x3e, 0x6f, 0xe1, 0x60, 0x40, 0x5f, 0x18, 0x00, 0x20, 0x62, 0x80, 0x01,
+0x20, 0x22, 0x80, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x35, 0x00, 0x01, 0x04, 0x9f, 0x80, 0x02,
+0x40, 0x41, 0x04, 0x01, 0x40, 0x03, 0x0c, 0x01, 0x50, 0x7f, 0x80, 0x24, 0x10, 0x44, 0x80, 0x00,
+0x10, 0x04, 0x80, 0x01, 0x38, 0x23, 0xf0, 0x08, 0x10, 0x64, 0x00, 0x00, 0x20, 0x04, 0x00, 0x00,
+0x4e, 0x07, 0x00, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x08, 0x5e, 0xf0, 0x7f, 0xc1,
+0x4e, 0xf2, 0x00, 0x06, 0x44, 0x0f, 0xff, 0xc1, 0x10, 0x04, 0x00, 0x00, 0x04, 0x4f, 0x80, 0x03,
+0x04, 0x0f, 0x80, 0x02, 0x50, 0x92, 0x00, 0x02, 0x50, 0x70, 0x00, 0x02, 0x51, 0xce, 0x00, 0x01,
+0x44, 0x50, 0x00, 0x04, 0x50, 0x84, 0x00, 0x01, 0x14, 0x9f, 0x80, 0x03, 0x50, 0xa5, 0x00, 0x02,
+0x14, 0x7f, 0x80, 0x02, 0x4d, 0xc2, 0xfe, 0xf6, 0x50, 0x8f, 0x80, 0x24, 0x20, 0x54, 0x00, 0x03,
+0x3e, 0x3f, 0xf8, 0x60, 0x14, 0x5f, 0x80, 0x02, 0x44, 0x50, 0x00, 0x00, 0x20, 0xa4, 0x00, 0x00,
+0x3e, 0x6f, 0xf8, 0x6c, 0x14, 0xaf, 0x80, 0x03, 0x50, 0x4f, 0x80, 0x2c, 0x20, 0x14, 0x00, 0x01,
+0x21, 0xc4, 0x00, 0x02, 0x14, 0x1f, 0x80, 0x04, 0x59, 0xee, 0x00, 0x00, 0x58, 0xa2, 0x80, 0x00,
+0x44, 0x90, 0x00, 0x40, 0x44, 0x80, 0x00, 0x3f, 0x59, 0xc1, 0x80, 0x00, 0x04, 0x0f, 0x80, 0x03,
+0x04, 0x7f, 0x80, 0x04, 0x04, 0x2f, 0x80, 0x02, 0x10, 0x02, 0x00, 0x00, 0x11, 0xe2, 0x00, 0x02,
+0x10, 0x72, 0x00, 0x01, 0x10, 0x22, 0x00, 0x03, 0x54, 0x72, 0x80, 0xff, 0x58, 0x22, 0x00, 0x00,
+0x44, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x40, 0x13, 0x80, 0x00, 0x40, 0x00, 0x80, 0x10,
+0x10, 0x01, 0x00, 0x00, 0x4e, 0x05, 0x00, 0x0e, 0x5e, 0xf0, 0x00, 0x40, 0x4e, 0xf3, 0x00, 0x04,
+0x10, 0x81, 0x00, 0x00, 0x4e, 0x33, 0x00, 0x16, 0x10, 0x33, 0x00, 0x00, 0x48, 0x00, 0x00, 0x12,
+0x52, 0x10, 0x00, 0x00, 0x54, 0x00, 0x80, 0xff, 0x4e, 0x33, 0x00, 0x0a, 0x10, 0x03, 0x00, 0x00,
+0x5c, 0xf0, 0x00, 0x41, 0x4e, 0xf3, 0x00, 0x04, 0x10, 0x93, 0x00, 0x00, 0x10, 0xa1, 0x00, 0x00,
+0x50, 0x31, 0x80, 0x01, 0x54, 0x31, 0x80, 0xff, 0x44, 0x00, 0x00, 0x04, 0x50, 0x21, 0x00, 0x01,
+0x4c, 0x30, 0x7f, 0xd2, 0x20, 0x72, 0x00, 0x01, 0x20, 0x22, 0x00, 0x02, 0x40, 0x03, 0x98, 0x08,
+0x40, 0x11, 0x30, 0x08, 0x20, 0x32, 0x00, 0x00, 0x20, 0x22, 0x00, 0x03, 0x40, 0x70, 0x04, 0x04,
+0x40, 0x03, 0x8c, 0x04, 0x40, 0x11, 0x48, 0x08, 0x40, 0x70, 0x04, 0x04, 0x50, 0x52, 0x80, 0x01,
+0x44, 0x20, 0x00, 0x03, 0x1c, 0x7e, 0x00, 0x01, 0x50, 0x63, 0x00, 0x01, 0x4c, 0x51, 0x7f, 0xa0,
+0x46, 0x66, 0x02, 0x00, 0x04, 0x03, 0x01, 0x48, 0x3c, 0x5d, 0xfe, 0x19, 0x40, 0x90, 0x60, 0x09,
+0x40, 0x94, 0xe0, 0x08, 0x40, 0x14, 0x94, 0x04, 0x14, 0x13, 0x01, 0x48, 0x46, 0x96, 0x02, 0x01,
+0x04, 0x74, 0x81, 0x48, 0x40, 0x33, 0xe0, 0x09, 0x40, 0x31, 0xe0, 0x08, 0x40, 0x01, 0x94, 0x04,
+0x14, 0x04, 0x81, 0x48, 0x46, 0x66, 0x02, 0x00, 0x58, 0x63, 0x00, 0xfc, 0x04, 0x23, 0x00, 0x00,
+0x2e, 0x07, 0xf8, 0x6d, 0x44, 0x7f, 0xc0, 0xff, 0x40, 0x51, 0x1c, 0x02, 0x40, 0x30, 0x20, 0x08,
+0x40, 0x41, 0x94, 0x04, 0x14, 0x43, 0x00, 0x00, 0x46, 0x9f, 0xff, 0x03, 0x04, 0x13, 0x00, 0x00,
+0x58, 0x94, 0x8f, 0xff, 0x40, 0x70, 0xa4, 0x02, 0x40, 0x30, 0x38, 0x08, 0x40, 0x21, 0x9c, 0x04,
+0x14, 0x23, 0x00, 0x00, 0x50, 0x5f, 0x80, 0x20, 0x00, 0x42, 0x80, 0x01, 0x00, 0x02, 0x80, 0x02,
+0x00, 0x72, 0x80, 0x03, 0x50, 0x32, 0x7f, 0xff, 0x50, 0x90, 0x7f, 0xff, 0x54, 0x11, 0x80, 0xff,
+0x54, 0x54, 0x80, 0xff, 0x40, 0x00, 0x84, 0x00, 0x40, 0x22, 0xa8, 0x08, 0x50, 0x33, 0xff, 0xff,
+0x40, 0x90, 0x08, 0x04, 0x54, 0x51, 0x80, 0xff, 0x44, 0x44, 0x02, 0x01, 0x46, 0x66, 0x02, 0x00,
+0x40, 0x14, 0x90, 0x04, 0x40, 0x72, 0xcc, 0x08, 0x04, 0x03, 0x01, 0x46, 0x40, 0x50, 0x9c, 0x04,
+0x46, 0x7f, 0x80, 0x00, 0x40, 0x90, 0x1c, 0x02, 0x40, 0x22, 0xa4, 0x04, 0x14, 0x23, 0x01, 0x46,
+0x46, 0x96, 0x02, 0x01, 0x04, 0x04, 0x81, 0x46, 0x40, 0x30, 0x1c, 0x02, 0x40, 0x42, 0x8c, 0x04,
+0x14, 0x44, 0x81, 0x46, 0x2e, 0x0f, 0xe1, 0x8c, 0x5e, 0xf0, 0x7f, 0xff, 0x4e, 0xf2, 0x00, 0x0c,
+0x44, 0x60, 0x00, 0x02, 0x40, 0x40, 0x18, 0x56, 0x50, 0x52, 0x00, 0x0f, 0x40, 0x12, 0x80, 0x10,
+0x48, 0x00, 0x00, 0x0e, 0x5e, 0xf0, 0x00, 0x12, 0x4e, 0xf3, 0x00, 0x08, 0x44, 0x10, 0x00, 0x0f,
+0x58, 0x50, 0x80, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x10, 0x00, 0x0f, 0x44, 0x20, 0x00, 0x02,
+0x40, 0x30, 0x08, 0x16, 0x50, 0x91, 0x80, 0x06, 0x40, 0x54, 0x80, 0x10, 0x2e, 0x2f, 0xe1, 0x8e,
+0x5e, 0xf1, 0x00, 0x10, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x40, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x0a,
+0x44, 0x90, 0x00, 0x02, 0x40, 0x61, 0x24, 0x56, 0x50, 0x43, 0x00, 0x07, 0x40, 0x42, 0x00, 0x10,
+0x2e, 0x2f, 0xe1, 0x90, 0x5e, 0xf1, 0x00, 0x10, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x30, 0x00, 0x0f,
+0x48, 0x00, 0x00, 0x0a, 0x44, 0x60, 0x00, 0x02, 0x40, 0x01, 0x18, 0x56, 0x50, 0x20, 0x00, 0x07,
+0x40, 0x31, 0x00, 0x10, 0x2e, 0x2f, 0xe1, 0x92, 0x5e, 0xf1, 0x00, 0x1e, 0x4e, 0xf3, 0x00, 0x06,
+0x44, 0x20, 0x00, 0x0f, 0x48, 0x00, 0x00, 0x08, 0x44, 0x00, 0x00, 0x02, 0x40, 0x21, 0x00, 0x16,
+0x40, 0x21, 0x00, 0x10, 0x44, 0x90, 0x00, 0x00, 0x42, 0x52, 0xa4, 0x00, 0x42, 0x60, 0xa4, 0x00,
+0x42, 0x42, 0x24, 0x00, 0x40, 0x02, 0x90, 0x08, 0x40, 0x50, 0x18, 0x04, 0x42, 0x61, 0xa4, 0x00,
+0x40, 0x02, 0x20, 0x08, 0x40, 0x42, 0x80, 0x04, 0x42, 0x21, 0x24, 0x00, 0x40, 0x03, 0x30, 0x08,
+0x46, 0x16, 0x02, 0x00, 0x40, 0x32, 0x00, 0x04, 0x40, 0x91, 0x40, 0x08, 0x04, 0x60, 0x81, 0x40,
+0x40, 0x41, 0xa4, 0x04, 0x46, 0x9f, 0xff, 0x00, 0x40, 0x53, 0x24, 0x02, 0x40, 0x02, 0x14, 0x04,
+0x14, 0x00, 0x81, 0x40, 0x46, 0x16, 0x02, 0x01, 0x04, 0x20, 0x81, 0x40, 0x40, 0x31, 0x24, 0x02,
+0x40, 0x52, 0x0c, 0x04, 0x14, 0x50, 0x81, 0x40, 0x51, 0xff, 0x80, 0x34, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xd4, 0x2e, 0x00, 0x02, 0x86,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0x84, 0x70, 0x46, 0x86, 0x02, 0x00, 0x46, 0x6b, 0xfc, 0xff,
+0x14, 0x8f, 0x80, 0x02, 0x14, 0x6f, 0x80, 0x03, 0x04, 0x1f, 0x80, 0x02, 0x04, 0x0f, 0x80, 0x03,
+0x58, 0x54, 0x00, 0x00, 0x58, 0x42, 0x80, 0x00, 0x58, 0x32, 0x00, 0x00, 0x14, 0x5f, 0x80, 0x04,
+0x14, 0x4f, 0x80, 0x05, 0x14, 0x3f, 0x80, 0x06, 0x58, 0x10, 0x88, 0x00, 0x58, 0x00, 0x03, 0xfc,
+0x14, 0x1f, 0x80, 0x02, 0x14, 0x0f, 0x80, 0x03, 0x04, 0x7f, 0x80, 0x04, 0x04, 0x1f, 0x80, 0x05,
+0x04, 0x0f, 0x80, 0x06, 0x46, 0x26, 0x02, 0x04, 0x14, 0x2f, 0x80, 0x07, 0x58, 0x10, 0x80, 0x04,
+0x58, 0x00, 0x01, 0x7c, 0x14, 0x7f, 0x80, 0x04, 0x14, 0x1f, 0x80, 0x05, 0x14, 0x0f, 0x80, 0x06,
+0x04, 0x7f, 0x80, 0x07, 0x44, 0x10, 0x00, 0x01, 0x3e, 0x10, 0x02, 0x86, 0x04, 0x0f, 0x80, 0x03,
+0x04, 0x1f, 0x80, 0x02, 0x58, 0x73, 0x82, 0x04, 0x14, 0x7f, 0x80, 0x07, 0x14, 0x00, 0x80, 0x00,
+0x44, 0x00, 0x02, 0x45, 0x04, 0x1f, 0x80, 0x04, 0x44, 0x70, 0x00, 0x00, 0x14, 0x00, 0x80, 0x00,
+0x47, 0xe0, 0xa5, 0xf0, 0x04, 0x1f, 0x80, 0x05, 0x59, 0xef, 0x00, 0x5f, 0x14, 0x00, 0x80, 0x00,
+0x59, 0xc1, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x06, 0x58, 0xa1, 0x80, 0x00, 0x14, 0x70, 0x00, 0x00,
+0x46, 0x92, 0x01, 0x71, 0x04, 0x1f, 0x80, 0x07, 0x15, 0xe0, 0x80, 0x00, 0x58, 0x94, 0x87, 0x17,
+0x45, 0xe1, 0x00, 0x01, 0x58, 0x81, 0x80, 0x00, 0x46, 0x61, 0x72, 0x02, 0x58, 0x51, 0x80, 0x00,
+0x46, 0x42, 0x02, 0x02, 0x58, 0x31, 0x00, 0x00, 0x58, 0x22, 0x80, 0x00, 0x15, 0xee, 0x00, 0x82,
+0x14, 0x95, 0x02, 0x17, 0x58, 0x63, 0x08, 0x20, 0x58, 0x42, 0x00, 0x20, 0x44, 0x94, 0xb0, 0x43,
+0x14, 0x64, 0x02, 0x18, 0x14, 0x42, 0x82, 0x19, 0x58, 0x61, 0x00, 0x00, 0x14, 0x71, 0x80, 0x42,
+0x14, 0x91, 0x01, 0xbe, 0x04, 0x03, 0x01, 0xb2, 0x42, 0x80, 0x78, 0x08, 0x14, 0x83, 0x01, 0xb2,
+0x04, 0x01, 0x01, 0xb3, 0x58, 0x51, 0x00, 0x00, 0x14, 0x5f, 0x80, 0x02, 0x58, 0x00, 0x00, 0x01,
+0x14, 0x0f, 0x80, 0x01, 0x46, 0x4d, 0xbe, 0xa2, 0x04, 0x0f, 0x80, 0x02, 0x14, 0x4f, 0x80, 0x03,
+0x58, 0x00, 0x06, 0xec, 0x14, 0x0f, 0x80, 0x02, 0x04, 0x0f, 0x80, 0x03, 0x14, 0x3f, 0x80, 0x04,
+0x58, 0x00, 0x0f, 0x40, 0x14, 0x0f, 0x80, 0x03, 0x46, 0x17, 0xf5, 0x55, 0x04, 0x0f, 0x80, 0x04,
+0x14, 0x1f, 0x80, 0x05, 0x58, 0x00, 0x04, 0x60, 0x14, 0x0f, 0x80, 0x04, 0x59, 0xc1, 0x00, 0x00,
+0x04, 0x0f, 0x80, 0x05, 0x15, 0xcf, 0x80, 0x06, 0x58, 0x00, 0x00, 0x80, 0x14, 0x0f, 0x80, 0x05,
+0x47, 0xe6, 0x02, 0x01, 0x04, 0x0f, 0x80, 0x06, 0x15, 0xef, 0x80, 0x07, 0x58, 0x00, 0x05, 0x50,
+0x14, 0x0f, 0x80, 0x06, 0x58, 0xa1, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x07, 0x14, 0xaf, 0x80, 0x08,
+0x58, 0x00, 0x05, 0x50, 0x14, 0x0f, 0x80, 0x07, 0x46, 0x90, 0x0d, 0x8b, 0x04, 0x0f, 0x80, 0x08,
+0x14, 0x9f, 0x80, 0x09, 0x58, 0x00, 0x05, 0x58, 0x14, 0x0f, 0x80, 0x08, 0x04, 0x0f, 0x80, 0x09,
+0x47, 0xc0, 0x48, 0x90, 0x58, 0x00, 0x0c, 0xc4, 0x14, 0x0f, 0x80, 0x09, 0x04, 0x0f, 0x80, 0x01,
+0x59, 0xce, 0x0c, 0x18, 0x14, 0x01, 0x01, 0xb3, 0x04, 0x0f, 0x80, 0x03, 0x04, 0x2f, 0x80, 0x02,
+0x46, 0xa1, 0x29, 0x29, 0x14, 0x01, 0x00, 0x00, 0x04, 0x0f, 0x80, 0x05, 0x04, 0x2f, 0x80, 0x04,
+0x58, 0x9f, 0x00, 0x00, 0x14, 0x01, 0x00, 0x00, 0x46, 0x80, 0x2e, 0x11, 0x04, 0x2f, 0x80, 0x06,
+0x58, 0x64, 0x80, 0x00, 0x15, 0xc1, 0x00, 0x00, 0x46, 0x50, 0x69, 0x8f, 0x04, 0x0f, 0x80, 0x07,
+0x58, 0x43, 0x00, 0x00, 0x15, 0xc0, 0x00, 0x00, 0x46, 0x35, 0x22, 0x0c, 0x04, 0x0f, 0x80, 0x09,
+0x04, 0x2f, 0x80, 0x08, 0x58, 0x52, 0x88, 0x2a, 0x58, 0x12, 0x00, 0x00, 0x58, 0xa5, 0x05, 0x15,
+0x58, 0x84, 0x0d, 0x30, 0x14, 0x01, 0x00, 0x00, 0x14, 0xaf, 0x01, 0x82, 0x14, 0x84, 0x81, 0x83,
+0x14, 0x53, 0x01, 0x84, 0x14, 0x32, 0x01, 0x85, 0x44, 0x30, 0x05, 0xd5, 0x14, 0x30, 0x81, 0xa5,
+0x2e, 0x57, 0xdf, 0xbc, 0x2e, 0x37, 0xdf, 0xff, 0x54, 0x42, 0x80, 0x30, 0x56, 0x02, 0x00, 0x10,
+0x40, 0x41, 0x80, 0x10, 0x5c, 0x60, 0x00, 0x01, 0x4e, 0x44, 0x00, 0x26, 0x4e, 0x03, 0x00, 0x12,
+0x46, 0x76, 0x02, 0x04, 0x46, 0x14, 0x00, 0xa0, 0x58, 0x10, 0x8a, 0xbf, 0x46, 0x06, 0x02, 0x04,
+0x14, 0x13, 0x80, 0x98, 0x58, 0x00, 0x02, 0x70, 0x44, 0x10, 0x4f, 0x00, 0x48, 0x00, 0x00, 0x10,
+0x46, 0x56, 0x02, 0x04, 0x46, 0x24, 0x01, 0x81, 0x58, 0x21, 0x08, 0xbf, 0x46, 0x06, 0x02, 0x04,
+0x14, 0x22, 0x80, 0x98, 0x58, 0x00, 0x02, 0x70, 0x44, 0x10, 0x5f, 0x00, 0x14, 0x10, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x0e, 0x46, 0x86, 0x02, 0x04, 0x46, 0x14, 0x04, 0x04, 0x58, 0x04, 0x00, 0x00,
+0x58, 0x10, 0x80, 0xbf, 0x14, 0x14, 0x00, 0x98, 0x14, 0x70, 0x00, 0x9c, 0x46, 0x26, 0x02, 0x04,
+0x58, 0x71, 0x00, 0x00, 0x44, 0x50, 0xf8, 0xf8, 0x14, 0x51, 0x00, 0x99, 0x14, 0x53, 0x80, 0x9a,
+0x4e, 0x44, 0x00, 0x14, 0x4e, 0x62, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x04, 0x46, 0x12, 0xf0, 0xa2,
+0x58, 0x00, 0x02, 0x6c, 0x48, 0x00, 0x00, 0x10, 0x46, 0x06, 0x02, 0x04, 0x46, 0x12, 0xf1, 0x82,
+0x58, 0x00, 0x02, 0x6c, 0x48, 0x00, 0x00, 0x08, 0x46, 0x06, 0x02, 0x04, 0x46, 0x12, 0xf1, 0x62,
+0x58, 0x00, 0x02, 0x6c, 0x54, 0x31, 0x80, 0x40, 0x14, 0x10, 0x00, 0x00, 0x4e, 0x32, 0x00, 0x0a,
+0x46, 0x00, 0x03, 0xff, 0x58, 0x11, 0x00, 0x00, 0x58, 0x00, 0x08, 0xf8, 0x48, 0x00, 0x00, 0x0a,
+0x46, 0x00, 0x03, 0xfb, 0x46, 0x26, 0x02, 0x04, 0x46, 0x16, 0x02, 0x04, 0x58, 0x00, 0x08, 0xb8,
+0x14, 0x01, 0x01, 0xc5, 0x14, 0x00, 0x81, 0xc6, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x00, 0xfc,
+0x04, 0x70, 0x00, 0x00, 0x46, 0x8f, 0xfe, 0x00, 0x58, 0x84, 0x00, 0x0f, 0x40, 0x73, 0xa0, 0x02,
+0x58, 0x54, 0x80, 0x00, 0x46, 0x46, 0x02, 0x00, 0x46, 0x12, 0x00, 0xfc, 0x58, 0x32, 0x80, 0x00,
+0x14, 0x70, 0x00, 0x00, 0x58, 0x10, 0x80, 0x0c, 0x44, 0x70, 0x00, 0x00, 0x46, 0x26, 0x02, 0x04,
+0x14, 0x72, 0x80, 0x5f, 0x14, 0x12, 0x01, 0x45, 0x14, 0x11, 0x81, 0x45, 0x44, 0x10, 0xc4, 0xc6,
+0x14, 0x11, 0x01, 0x23, 0x58, 0x51, 0x00, 0x00, 0x04, 0x82, 0x80, 0x64, 0x44, 0x3c, 0xff, 0xff,
+0x40, 0x44, 0x0c, 0x02, 0x42, 0x22, 0x40, 0x08, 0x14, 0x22, 0x80, 0x64, 0x46, 0x7f, 0xff, 0x00,
+0x04, 0x10, 0x00, 0x00, 0x58, 0x73, 0x80, 0x0f, 0x40, 0x80, 0x9c, 0x02, 0x14, 0x80, 0x00, 0x00,
+0x2e, 0x47, 0xe1, 0xb2, 0x4e, 0x43, 0x00, 0x06, 0x2e, 0x07, 0xe1, 0xb3, 0x4e, 0x02, 0x00, 0x54,
+0x46, 0x26, 0x02, 0x00, 0x46, 0x04, 0xf1, 0x7b, 0x58, 0x84, 0x80, 0x00, 0x58, 0x00, 0x0b, 0xf5,
+0x14, 0x01, 0x01, 0x46, 0x58, 0x11, 0x00, 0x00, 0x14, 0x04, 0x01, 0x46, 0x04, 0x30, 0x81, 0x40,
+0x46, 0x7f, 0xff, 0x00, 0x40, 0x41, 0x9c, 0x02, 0x58, 0x52, 0x77, 0x6f, 0x14, 0x50, 0x81, 0x40,
+0x58, 0x04, 0x00, 0x00, 0x04, 0x80, 0x01, 0x40, 0x40, 0x24, 0x1c, 0x02, 0x58, 0x31, 0x77, 0x6f,
+0x14, 0x30, 0x01, 0x40, 0x04, 0x40, 0x81, 0x48, 0x46, 0x8f, 0xf0, 0x00, 0x46, 0x30, 0x0b, 0x20,
+0x40, 0x52, 0x20, 0x02, 0x58, 0x31, 0x84, 0xc1, 0x40, 0x72, 0x8c, 0x04, 0x14, 0x70, 0x81, 0x48,
+0x04, 0x20, 0x01, 0x48, 0x58, 0x70, 0x80, 0x00, 0x40, 0x41, 0x20, 0x02, 0x40, 0x52, 0x0c, 0x04,
+0x14, 0x50, 0x01, 0x48, 0x04, 0x13, 0x81, 0x61, 0x44, 0x40, 0xff, 0xff, 0x46, 0x30, 0xb4, 0x90,
+0x40, 0x20, 0x90, 0x02, 0x40, 0x81, 0x0c, 0x04, 0x46, 0x06, 0x02, 0x01, 0x14, 0x83, 0x81, 0x61,
+0x58, 0x00, 0x05, 0x84, 0x04, 0x50, 0x00, 0x00, 0x40, 0x12, 0x90, 0x02, 0x40, 0x10, 0x8c, 0x04,
+0x48, 0x00, 0x00, 0x78, 0x49, 0xff, 0xfa, 0xc6, 0x2e, 0x77, 0xe3, 0xba, 0x4e, 0x73, 0x00, 0x1c,
+0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61, 0x44, 0x30, 0xff, 0xff, 0x46, 0x50, 0xb4, 0x90,
+0x40, 0x70, 0x8c, 0x02, 0x40, 0x23, 0x94, 0x04, 0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61,
+0x58, 0x00, 0x05, 0x84, 0x04, 0x40, 0x00, 0x00, 0x41, 0xe2, 0x0c, 0x02, 0x40, 0x1f, 0x14, 0x04,
+0x48, 0x00, 0x00, 0x58, 0x2e, 0x0f, 0xe3, 0xbb, 0x5e, 0xf0, 0x7f, 0xfb, 0x4e, 0xf3, 0x00, 0x1c,
+0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61, 0x44, 0x30, 0xff, 0xff, 0x46, 0x50, 0xb4, 0x90,
+0x40, 0x70, 0x8c, 0x02, 0x40, 0x23, 0x94, 0x04, 0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61,
+0x58, 0x00, 0x05, 0x84, 0x04, 0x40, 0x00, 0x00, 0x41, 0xe2, 0x0c, 0x02, 0x40, 0x1f, 0x14, 0x04,
+0x48, 0x00, 0x00, 0x38, 0x5e, 0xf0, 0x7f, 0xf7, 0x4e, 0xf3, 0x00, 0x1c, 0x46, 0x86, 0x02, 0x00,
+0x04, 0x14, 0x01, 0x61, 0x44, 0x50, 0xff, 0xff, 0x46, 0x40, 0xb6, 0x90, 0x40, 0x70, 0x94, 0x02,
+0x40, 0x23, 0x90, 0x04, 0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61, 0x58, 0x00, 0x05, 0x84,
+0x04, 0x30, 0x00, 0x00, 0x41, 0xe1, 0x94, 0x02, 0x40, 0x1f, 0x10, 0x04, 0x48, 0x00, 0x00, 0x1a,
+0x46, 0x86, 0x02, 0x00, 0x04, 0x14, 0x01, 0x61, 0x44, 0x50, 0xff, 0xff, 0x46, 0x40, 0xb6, 0x90,
+0x40, 0x70, 0x94, 0x02, 0x40, 0x23, 0x90, 0x04, 0x46, 0x06, 0x02, 0x01, 0x14, 0x24, 0x01, 0x61,
+0x58, 0x00, 0x05, 0x84, 0x04, 0x30, 0x00, 0x00, 0x41, 0xe1, 0x94, 0x02, 0x40, 0x1f, 0x10, 0x04,
+0x46, 0x56, 0x02, 0x00, 0x46, 0x4b, 0x20, 0x10, 0x46, 0x36, 0x02, 0x01, 0x14, 0x10, 0x00, 0x00,
+0x14, 0x42, 0x83, 0x45, 0x14, 0x41, 0x83, 0x45, 0x2e, 0x27, 0xdf, 0xc5, 0x2e, 0x17, 0xdf, 0xc4,
+0x4e, 0x62, 0x00, 0x0c, 0x46, 0x06, 0x02, 0x00, 0x46, 0x10, 0xcb, 0x00, 0x58, 0x00, 0x0d, 0x08,
+0x58, 0x10, 0x80, 0x40, 0x48, 0x00, 0x00, 0x1e, 0x54, 0x00, 0x80, 0x7f, 0x4e, 0x02, 0x00, 0x12,
+0x40, 0x70, 0x9c, 0x09, 0x40, 0x41, 0x50, 0x08, 0x40, 0x22, 0x00, 0x04, 0x40, 0x83, 0xcc, 0x08,
+0x46, 0x06, 0x02, 0x00, 0x40, 0x11, 0x20, 0x04, 0x58, 0x00, 0x0d, 0x08, 0x48, 0x00, 0x00, 0x0a,
+0x46, 0x06, 0x02, 0x00, 0x46, 0x10, 0xc9, 0xc0, 0x58, 0x00, 0x0d, 0x08, 0x58, 0x10, 0x80, 0x40,
+0x14, 0x10, 0x00, 0x00, 0x2e, 0x27, 0xdf, 0xcb, 0x2e, 0x17, 0xdf, 0xca, 0x4e, 0x62, 0x00, 0x0c,
+0x46, 0x06, 0x02, 0x01, 0x46, 0x10, 0xcb, 0x80, 0x58, 0x00, 0x0d, 0x08, 0x58, 0x10, 0x80, 0x40,
+0x48, 0x00, 0x00, 0x1e, 0x54, 0x00, 0x80, 0x7f, 0x4e, 0x02, 0x00, 0x12, 0x40, 0x50, 0x9c, 0x09,
+0x40, 0x81, 0x50, 0x08, 0x40, 0x34, 0x00, 0x04, 0x40, 0x62, 0xcc, 0x08, 0x46, 0x06, 0x02, 0x01,
+0x40, 0x11, 0x98, 0x04, 0x58, 0x00, 0x0d, 0x08, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x01,
+0x46, 0x10, 0xc9, 0xf0, 0x58, 0x00, 0x0d, 0x08, 0x58, 0x10, 0x80, 0x40, 0x14, 0x10, 0x00, 0x00,
+0x2e, 0x07, 0xe3, 0xc0, 0x4e, 0x02, 0x00, 0x26, 0x46, 0x66, 0x02, 0x00, 0x04, 0x83, 0x03, 0x46,
+0x44, 0x4f, 0x00, 0xff, 0x40, 0x54, 0x10, 0x02, 0x58, 0x32, 0x83, 0x00, 0x14, 0x33, 0x03, 0x46,
+0x46, 0x26, 0x02, 0x01, 0x58, 0x21, 0x0d, 0x18, 0x04, 0x11, 0x00, 0x00, 0x46, 0x00, 0x30, 0x00,
+0x40, 0x70, 0x90, 0x02, 0x46, 0x10, 0x20, 0x01, 0x46, 0x56, 0x02, 0x01, 0x58, 0x43, 0x00, 0x00,
+0x58, 0x32, 0x80, 0x00, 0x58, 0x10, 0x86, 0x1f, 0x58, 0x73, 0x83, 0x00, 0x48, 0x00, 0x00, 0x24,
+0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x03, 0x46, 0x44, 0x6f, 0x00, 0xff, 0x40, 0x12, 0x18, 0x02,
+0x14, 0x10, 0x03, 0x46, 0x46, 0x26, 0x02, 0x01, 0x58, 0x21, 0x0d, 0x18, 0x04, 0x71, 0x00, 0x00,
+0x46, 0x18, 0x20, 0x01, 0x46, 0x00, 0x60, 0x20, 0x58, 0x83, 0x00, 0x00, 0x46, 0x66, 0x02, 0x00,
+0x46, 0x56, 0x02, 0x01, 0x46, 0x46, 0x02, 0x00, 0x46, 0x36, 0x02, 0x01, 0x58, 0x10, 0x83, 0x1a,
+0x40, 0x73, 0xa0, 0x02, 0x14, 0x71, 0x00, 0x00, 0x14, 0x13, 0x03, 0x47, 0x46, 0x76, 0x02, 0x04,
+0x14, 0x12, 0x83, 0x47, 0x14, 0x02, 0x03, 0x48, 0x14, 0x01, 0x83, 0x48, 0x58, 0x73, 0x86, 0x00,
+0x04, 0x03, 0x80, 0x00, 0x42, 0x40, 0x58, 0x09, 0x42, 0x42, 0x5c, 0x09, 0x42, 0x82, 0x5c, 0x08,
+0x14, 0x83, 0x80, 0x00, 0x04, 0x63, 0x80, 0x00, 0x46, 0x16, 0x02, 0x00, 0x42, 0x23, 0x1c, 0x09,
+0x14, 0x23, 0x80, 0x00, 0x04, 0x30, 0x81, 0x8e, 0x40, 0x41, 0x94, 0x09, 0x40, 0x42, 0x14, 0x08,
+0x58, 0x62, 0x00, 0x1e, 0x14, 0x60, 0x81, 0x8e, 0x58, 0x80, 0x80, 0x00, 0x04, 0x54, 0x01, 0x83,
+0x46, 0x73, 0x00, 0x00, 0x40, 0x02, 0x9c, 0x04, 0x14, 0x04, 0x01, 0x83, 0x46, 0x26, 0x02, 0x04,
+0x58, 0x21, 0x02, 0x00, 0x04, 0x31, 0x00, 0x00, 0x46, 0x6f, 0xff, 0x00, 0x58, 0x41, 0x83, 0xff,
+0x14, 0x41, 0x00, 0x00, 0x58, 0x63, 0x03, 0xff, 0x04, 0x51, 0x00, 0x00, 0x44, 0x81, 0x60, 0x00,
+0x40, 0x72, 0x98, 0x02, 0x40, 0x33, 0xa0, 0x04, 0x14, 0x31, 0x00, 0x00, 0x46, 0x16, 0x01, 0x30,
+0x58, 0x10, 0x80, 0x9c, 0x04, 0x50, 0x80, 0x00, 0x40, 0x82, 0xa4, 0x09, 0x40, 0x84, 0x24, 0x08,
+0x14, 0x80, 0x80, 0x00, 0x04, 0x70, 0x80, 0x00, 0x50, 0x00, 0xff, 0xfc, 0x58, 0x23, 0x80, 0x82,
+0x14, 0x20, 0x80, 0x00, 0x04, 0x80, 0x00, 0x00, 0x46, 0x46, 0x02, 0x04, 0x40, 0x14, 0x20, 0x09,
+0x40, 0x10, 0xa0, 0x08, 0x14, 0x10, 0x00, 0x00, 0x04, 0x70, 0x00, 0x00, 0x58, 0x53, 0x80, 0x14,
+0x14, 0x50, 0x00, 0x00, 0x46, 0x36, 0x02, 0x04, 0x04, 0x02, 0x00, 0x8a, 0x58, 0x31, 0x82, 0x0c,
+0x40, 0x70, 0x14, 0x09, 0x40, 0x73, 0x94, 0x08, 0x58, 0x03, 0x80, 0x0d, 0x14, 0x02, 0x00, 0x8a,
+0x46, 0x78, 0x00, 0x00, 0x04, 0x81, 0x80, 0x00, 0x58, 0x73, 0x80, 0xff, 0x40, 0x04, 0x1c, 0x02,
+0x46, 0x77, 0xc9, 0x00, 0x58, 0x73, 0x84, 0x00, 0x40, 0x00, 0x1c, 0x04, 0x14, 0x01, 0x80, 0x00,
+0x04, 0x71, 0x80, 0x00, 0x46, 0x66, 0x02, 0x00, 0x40, 0x73, 0xa0, 0x09, 0x40, 0x73, 0xa0, 0x08,
+0x58, 0x83, 0x80, 0x01, 0x14, 0x81, 0x80, 0x00, 0x04, 0x33, 0x01, 0x86, 0x40, 0x81, 0xbc, 0x09,
+0x40, 0x84, 0x3c, 0x08, 0x58, 0x34, 0x7d, 0x10, 0x14, 0x33, 0x01, 0x86, 0x46, 0x26, 0x02, 0x00,
+0x58, 0x21, 0x06, 0x34, 0x04, 0x71, 0x00, 0x00, 0x42, 0x63, 0x80, 0x09, 0x14, 0x61, 0x00, 0x00,
+0x04, 0x31, 0x00, 0x00, 0x46, 0x60, 0x1f, 0x80, 0x40, 0x71, 0x98, 0x04, 0x14, 0x71, 0x00, 0x00,
+0x50, 0x11, 0x7f, 0xe0, 0x04, 0x20, 0x80, 0x00, 0x42, 0x81, 0x4c, 0x09, 0x14, 0x80, 0x80, 0x00,
+0x44, 0x8f, 0x00, 0xff, 0x04, 0x30, 0x80, 0x00, 0x46, 0x56, 0x02, 0x01, 0x40, 0x21, 0xa0, 0x02,
+0x58, 0x31, 0x4d, 0x00, 0x14, 0x30, 0x80, 0x00, 0x04, 0x22, 0x81, 0xbc, 0x46, 0x46, 0x02, 0x00,
+0x40, 0x31, 0x20, 0x02, 0x58, 0x11, 0xb0, 0x00, 0x14, 0x12, 0x81, 0xbc, 0x04, 0x52, 0x01, 0xbc,
+0x46, 0x33, 0x40, 0x00, 0x40, 0x12, 0xa0, 0x08, 0x40, 0x10, 0xa0, 0x09, 0x40, 0x50, 0x8c, 0x04,
+0x14, 0x52, 0x01, 0xbc, 0x46, 0x06, 0x02, 0x04, 0x58, 0x00, 0x00, 0xf0, 0x04, 0x20, 0x00, 0x00,
+0x58, 0x41, 0x00, 0x02, 0x14, 0x40, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x58, 0x50, 0x80, 0x04,
+0x14, 0x50, 0x00, 0x00, 0x2e, 0x27, 0xe3, 0xbd, 0x4e, 0x22, 0x00, 0x16, 0x46, 0x06, 0x02, 0x00,
+0x04, 0x10, 0x03, 0x44, 0x46, 0x40, 0x0f, 0xff, 0x58, 0x42, 0x0f, 0xff, 0x40, 0x30, 0x90, 0x02,
+0x14, 0x30, 0x03, 0x44, 0x46, 0x56, 0x02, 0x01, 0x04, 0x22, 0x83, 0x44, 0x40, 0x11, 0x10, 0x02,
+0x14, 0x12, 0x83, 0x44, 0x46, 0x26, 0x02, 0x04, 0x04, 0x01, 0x00, 0x64, 0x42, 0x40, 0x1c, 0x09,
+0x14, 0x41, 0x00, 0x64, 0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3c, 0x0d, 0xf8, 0xf5, 0x4a, 0x00, 0x78, 0x20, 0x46, 0x08, 0x00, 0x23, 0x04, 0x10, 0x00, 0x20,
+0x46, 0x21, 0x10, 0x00, 0x40, 0x40, 0x88, 0x04, 0x14, 0x40, 0x00, 0x20, 0x58, 0x50, 0x00, 0x00,
+0x04, 0x22, 0x80, 0x21, 0x44, 0x31, 0x01, 0x11, 0x40, 0x11, 0x0c, 0x04, 0x14, 0x12, 0x80, 0x21,
+0x46, 0x08, 0x00, 0x00, 0x04, 0x40, 0x00, 0x42, 0x46, 0x18, 0x10, 0x60, 0x46, 0x20, 0x48, 0x52,
+0x58, 0x32, 0x40, 0x00, 0x58, 0x21, 0x03, 0x90, 0x14, 0x30, 0x00, 0x42, 0x14, 0x20, 0x80, 0x02,
+0x4a, 0x00, 0x78, 0x20, 0x46, 0x36, 0x02, 0x00, 0x14, 0x11, 0x83, 0x80, 0x4e, 0x23, 0x00, 0x08,
+0x58, 0x11, 0x80, 0x00, 0x44, 0x21, 0x10, 0x00, 0x48, 0x00, 0x00, 0x06, 0x46, 0x16, 0x02, 0x00,
+0x44, 0x23, 0x10, 0x00, 0x40, 0x00, 0x08, 0x00, 0x14, 0x00, 0x83, 0x81, 0x58, 0x01, 0x80, 0x00,
+0x04, 0x20, 0x03, 0x84, 0x54, 0x11, 0x20, 0x00, 0x4e, 0x13, 0xff, 0xfc, 0x4a, 0x00, 0x78, 0x20,
+0x4e, 0x13, 0x00, 0x0c, 0x44, 0x1e, 0xef, 0xff, 0x40, 0x00, 0x04, 0x02, 0x44, 0x21, 0x00, 0x00,
+0x46, 0x16, 0x02, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x44, 0x2c, 0xef, 0xff, 0x40, 0x00, 0x08, 0x02,
+0x46, 0x16, 0x02, 0x00, 0x44, 0x23, 0x00, 0x00, 0x40, 0x00, 0x08, 0x04, 0x14, 0x00, 0x83, 0x81,
+0x46, 0x06, 0x02, 0x00, 0x04, 0x40, 0x03, 0x84, 0x54, 0x32, 0x20, 0x00, 0x4e, 0x33, 0xff, 0xfc,
+0x58, 0x50, 0x00, 0x00, 0x04, 0x02, 0x83, 0x83, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
+0x58, 0x61, 0x00, 0x00, 0x58, 0xa2, 0x00, 0x00, 0x58, 0x91, 0x80, 0x00, 0x58, 0x70, 0x80, 0x00,
+0x58, 0x80, 0x00, 0x00, 0x49, 0xff, 0xff, 0xce, 0x40, 0x35, 0x24, 0x0c, 0x40, 0x13, 0x18, 0x05,
+0x40, 0x50, 0x04, 0x02, 0x40, 0x61, 0x98, 0x02, 0x40, 0x12, 0x98, 0x04, 0x58, 0x04, 0x00, 0x00,
+0x58, 0x23, 0x80, 0x00, 0x49, 0xff, 0xff, 0xa0, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x80, 0x80, 0x00, 0x58, 0x11, 0x00, 0x00, 0x58, 0x61, 0x00, 0x00,
+0x58, 0x70, 0x00, 0x00, 0x49, 0xff, 0xff, 0xae, 0x40, 0x10, 0x20, 0x04, 0x58, 0x23, 0x00, 0x00,
+0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xff, 0x88, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xa0, 0xbc, 0x58, 0x80, 0x80, 0x00, 0x58, 0x11, 0x00, 0x00, 0x58, 0x61, 0x00, 0x00,
+0x58, 0x70, 0x00, 0x00, 0x49, 0xff, 0xff, 0x96, 0x40, 0x14, 0x20, 0x05, 0x40, 0x10, 0x04, 0x02,
+0x58, 0x23, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x49, 0xff, 0xff, 0x6e, 0x3a, 0x6f, 0xa0, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x54, 0x70, 0x00, 0xff, 0x4e, 0x72, 0x00, 0x14,
-0x3e, 0x6f, 0xdd, 0x30, 0x04, 0x03, 0x00, 0x00, 0x04, 0x13, 0x00, 0x01, 0x04, 0x23, 0x00, 0x05,
-0x50, 0x63, 0x00, 0x18, 0x49, 0xff, 0xff, 0xac, 0x3e, 0x5f, 0xde, 0x50, 0x4c, 0x62, 0xff, 0xf4,
-0x48, 0x00, 0x00, 0x22, 0x3e, 0x6f, 0xdd, 0x30, 0x44, 0x90, 0x00, 0x06, 0x2e, 0x17, 0xe6, 0x1c,
-0x3e, 0x3f, 0xdd, 0x00, 0x42, 0x13, 0xa4, 0x73, 0x04, 0x03, 0x00, 0x00, 0x51, 0xe0, 0x80, 0x0b,
+0x3e, 0x6f, 0xda, 0xdc, 0x04, 0x03, 0x00, 0x00, 0x04, 0x13, 0x00, 0x01, 0x04, 0x23, 0x00, 0x05,
+0x50, 0x63, 0x00, 0x18, 0x49, 0xff, 0xff, 0x58, 0x3e, 0x5f, 0xdb, 0xfc, 0x4c, 0x62, 0xff, 0xf4,
+0x48, 0x00, 0x00, 0x22, 0x3e, 0x6f, 0xda, 0xdc, 0x44, 0x90, 0x00, 0x06, 0x2e, 0x17, 0xe3, 0xbc,
+0x3e, 0x3f, 0xda, 0xac, 0x42, 0x13, 0xa4, 0x73, 0x04, 0x03, 0x00, 0x00, 0x51, 0xe0, 0x80, 0x0b,
0x40, 0x5f, 0x08, 0x08, 0x40, 0x42, 0x8c, 0x00, 0x04, 0x23, 0x00, 0x05, 0x04, 0x12, 0x00, 0x01,
-0x50, 0x73, 0x80, 0x01, 0x49, 0xff, 0xff, 0x8c, 0x44, 0x50, 0x00, 0x0c, 0x50, 0x63, 0x00, 0x18,
-0x4c, 0x72, 0xff, 0xe6, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc,
-0x58, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x60, 0x40, 0x28, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x92, 0x40, 0x30, 0x10, 0x08, 0x40, 0x31, 0x90, 0x09,
-0x42, 0x11, 0xf0, 0x08, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x68,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x80, 0x40, 0x20, 0x10, 0x08,
-0x40, 0x21, 0x10, 0x09, 0x42, 0x11, 0x70, 0x08, 0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xff, 0x56, 0x48, 0x00, 0x00, 0x2c, 0x4e, 0x62, 0x00, 0x0a, 0x44, 0x50, 0x00, 0x05,
-0x4c, 0x62, 0x80, 0x06, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x62, 0xc0, 0x22, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x62, 0x40, 0x10, 0x10, 0x08, 0x40, 0x10, 0x90, 0x09,
-0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x3a, 0x44, 0x10, 0x00, 0x01,
-0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x52, 0x40, 0x10, 0x10, 0x08, 0x40, 0x10, 0x90, 0x09,
-0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xff, 0x2a, 0x3a, 0x6f, 0xa0, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xdf, 0xb4,
+0x50, 0x73, 0x80, 0x01, 0x49, 0xff, 0xff, 0x38, 0x44, 0x50, 0x00, 0x0c, 0x50, 0x63, 0x00, 0x18,
+0x4c, 0x72, 0xff, 0xe6, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x60, 0x40, 0x1c,
+0x46, 0x2f, 0x00, 0x00, 0x58, 0x43, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x30, 0x00, 0x1c, 0x49, 0xff, 0xff, 0x5c, 0x46, 0x2f, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00,
+0x44, 0x00, 0x00, 0xa0, 0x44, 0x30, 0x00, 0x1c, 0x58, 0x43, 0x00, 0x00, 0x49, 0xff, 0xff, 0x50,
+0x48, 0x00, 0x00, 0x24, 0x4e, 0x62, 0x00, 0x0a, 0x44, 0x10, 0x00, 0x05, 0x4c, 0x60, 0x80, 0x06,
+0x44, 0x50, 0x00, 0x04, 0x4c, 0x62, 0xc0, 0x1a, 0x44, 0x10, 0x00, 0x00, 0x46, 0x2f, 0x00, 0x00,
+0x58, 0x40, 0x80, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x44, 0x30, 0x00, 0x1c, 0x49, 0xff, 0xff, 0x38,
+0x46, 0x2f, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x44, 0x10, 0x00, 0x01, 0x44, 0x30, 0x00, 0x1c,
+0x44, 0x40, 0x00, 0x00, 0x49, 0xff, 0xff, 0x2c, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x3e, 0x0f, 0xdd, 0x60,
0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x04, 0x30, 0x00, 0x00, 0x04, 0x40, 0x00, 0x01,
-0x50, 0x10, 0x80, 0x01, 0x14, 0x41, 0x80, 0x00, 0x50, 0x00, 0x00, 0x08, 0x2e, 0x57, 0xe6, 0x39,
-0x40, 0xf0, 0x94, 0x06, 0x4e, 0xf3, 0xff, 0xf2, 0x44, 0x00, 0x00, 0x00, 0x49, 0xff, 0xff, 0x4c,
-0x3e, 0x6f, 0xe0, 0xc4, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x04, 0x03, 0x00, 0x00,
-0x04, 0x13, 0x00, 0x01, 0x50, 0x73, 0x80, 0x01, 0x49, 0xff, 0xfe, 0xfa, 0x50, 0x63, 0x00, 0x08,
-0x2e, 0x07, 0xe6, 0x3a, 0x44, 0x20, 0x00, 0x00, 0x40, 0xf3, 0x80, 0x06, 0x4e, 0xf3, 0xff, 0xf0,
-0x2e, 0x77, 0xe6, 0x1c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0xc0, 0x0a, 0x46, 0x1a, 0x88, 0x88,
+0x50, 0x10, 0x80, 0x01, 0x14, 0x41, 0x80, 0x00, 0x50, 0x00, 0x00, 0x08, 0x2e, 0x57, 0xe3, 0xd9,
+0x40, 0xf0, 0x94, 0x06, 0x4e, 0xf3, 0xff, 0xf2, 0x44, 0x00, 0x00, 0x00, 0x49, 0xff, 0xff, 0x5c,
+0x3e, 0x6f, 0xde, 0x70, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x04, 0x03, 0x00, 0x00,
+0x04, 0x13, 0x00, 0x01, 0x50, 0x73, 0x80, 0x01, 0x49, 0xff, 0xfe, 0xb6, 0x50, 0x63, 0x00, 0x08,
+0x2e, 0x07, 0xe3, 0xda, 0x44, 0x20, 0x00, 0x00, 0x40, 0xf3, 0x80, 0x06, 0x4e, 0xf3, 0xff, 0xf0,
+0x2e, 0x77, 0xe3, 0xbc, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0xc0, 0x0a, 0x46, 0x1a, 0x88, 0x88,
0x58, 0x10, 0x88, 0x88, 0x44, 0x00, 0x00, 0x78, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x18, 0x88, 0x88,
-0x58, 0x10, 0x88, 0x88, 0x44, 0x00, 0x00, 0x78, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xd8,
-0x2e, 0x77, 0xe4, 0x0e, 0x4e, 0x72, 0x00, 0x16, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x00,
-0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xca, 0x46, 0x10, 0x3f, 0xf0,
+0x58, 0x10, 0x88, 0x88, 0x44, 0x00, 0x00, 0x78, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x94,
+0x2e, 0x77, 0xe1, 0xb2, 0x4e, 0x72, 0x00, 0x16, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x00,
+0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x86, 0x46, 0x10, 0x3f, 0xf0,
0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x44, 0x20, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14,
0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x08, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x80, 0x00,
-0x49, 0xff, 0xfe, 0xb6, 0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x58, 0x23, 0x80, 0x00,
-0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xfe, 0xac, 0x2e, 0x27, 0xe6, 0x20, 0x4e, 0x23, 0x00, 0x0a,
+0x49, 0xff, 0xfe, 0x72, 0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x58, 0x23, 0x80, 0x00,
+0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xfe, 0x68, 0x2e, 0x27, 0xe3, 0xc0, 0x4e, 0x23, 0x00, 0x0a,
0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x81, 0x44, 0x00, 0x00, 0xe8, 0x48, 0x00, 0x00, 0x0a,
0x46, 0x10, 0x0a, 0x10, 0x58, 0x10, 0x80, 0xe1, 0x44, 0x00, 0x00, 0xe8, 0x44, 0x20, 0x00, 0x00,
-0x49, 0xff, 0xfe, 0x96, 0x3c, 0x4d, 0xf9, 0x8d, 0x5c, 0xf2, 0x00, 0x02, 0x4e, 0xf3, 0x00, 0x1a,
-0x3e, 0x6f, 0xe1, 0x14, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x04, 0x03, 0x00, 0x00,
-0x04, 0x13, 0x00, 0x01, 0x50, 0x73, 0x80, 0x01, 0x49, 0xff, 0xfe, 0x82, 0x50, 0x63, 0x00, 0x08,
-0x2f, 0xe7, 0xe6, 0x3b, 0x44, 0x20, 0x00, 0x01, 0x40, 0xf3, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xf0,
-0x2e, 0x27, 0xe6, 0x1c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x0a, 0x46, 0x1a, 0x88, 0x88,
+0x49, 0xff, 0xfe, 0x52, 0x3c, 0x4d, 0xf8, 0xf5, 0x5c, 0xf2, 0x00, 0x02, 0x4e, 0xf3, 0x00, 0x1a,
+0x3e, 0x6f, 0xde, 0xc0, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x04, 0x03, 0x00, 0x00,
+0x04, 0x13, 0x00, 0x01, 0x50, 0x73, 0x80, 0x01, 0x49, 0xff, 0xfe, 0x3e, 0x50, 0x63, 0x00, 0x08,
+0x2f, 0xe7, 0xe3, 0xdb, 0x44, 0x20, 0x00, 0x01, 0x40, 0xf3, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xf0,
+0x2e, 0x27, 0xe3, 0xbc, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x0a, 0x46, 0x1a, 0x88, 0x88,
0x58, 0x10, 0x88, 0x88, 0x44, 0x00, 0x00, 0x78, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x18, 0x88, 0x88,
-0x58, 0x10, 0x88, 0x88, 0x44, 0x00, 0x00, 0x78, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x60,
-0x2e, 0x27, 0xe4, 0x0f, 0x4e, 0x22, 0x00, 0x12, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x00,
-0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x52, 0x46, 0x10, 0x3f, 0xf0,
+0x58, 0x10, 0x88, 0x88, 0x44, 0x00, 0x00, 0x78, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x1c,
+0x2e, 0x27, 0xe1, 0xb3, 0x4e, 0x22, 0x00, 0x12, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x00,
+0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x0e, 0x46, 0x10, 0x3f, 0xf0,
0x58, 0x10, 0x80, 0x03, 0x48, 0x00, 0x00, 0x10, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x08,
-0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x42, 0x46, 0x18, 0x3f, 0xf0,
-0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x38,
-0x2e, 0x37, 0xe6, 0x20, 0x4e, 0x32, 0x00, 0x08, 0x46, 0x10, 0x0a, 0x10, 0x58, 0x10, 0x80, 0xe1,
+0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfd, 0xfe, 0x46, 0x18, 0x3f, 0xf0,
+0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfd, 0xf4,
+0x2e, 0x37, 0xe3, 0xc0, 0x4e, 0x32, 0x00, 0x08, 0x46, 0x10, 0x0a, 0x10, 0x58, 0x10, 0x80, 0xe1,
0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x81, 0x44, 0x00, 0x00, 0xe8,
-0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfe, 0x24, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84,
+0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xfd, 0xe0, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84,
0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x47, 0xe6, 0x02, 0x00,
0x04, 0x3f, 0x00, 0x00, 0x58, 0x5f, 0x00, 0x00, 0x58, 0x21, 0x80, 0x45, 0x14, 0x2f, 0x00, 0x00,
0x04, 0x42, 0x80, 0x01, 0x40, 0x10, 0x80, 0x13, 0x58, 0x32, 0x00, 0x45, 0x44, 0x20, 0x00, 0x0e,
-0x14, 0x32, 0x80, 0x01, 0x4c, 0x11, 0x40, 0x12, 0x3e, 0x1f, 0xdb, 0xc0, 0x04, 0x40, 0x80, 0x00,
-0x05, 0xe0, 0x80, 0x01, 0x3e, 0x5f, 0xdc, 0x60, 0x50, 0x10, 0x80, 0x08, 0x15, 0xe2, 0x00, 0x00,
-0x4c, 0x12, 0xff, 0xf6, 0x48, 0x00, 0x00, 0x10, 0x3e, 0x1f, 0xdc, 0x60, 0x04, 0x50, 0x80, 0x00,
-0x04, 0x30, 0x80, 0x01, 0x3e, 0x2f, 0xdd, 0x00, 0x50, 0x10, 0x80, 0x08, 0x14, 0x32, 0x80, 0x00,
-0x4c, 0x11, 0x7f, 0xf6, 0x2e, 0x17, 0xe6, 0x20, 0x4e, 0x13, 0x00, 0x72, 0x2f, 0xe7, 0xe2, 0x61,
-0x54, 0x0f, 0x00, 0x40, 0x4e, 0x03, 0x00, 0x56, 0x2e, 0x57, 0xe6, 0x44, 0x44, 0x30, 0x00, 0x01,
+0x14, 0x32, 0x80, 0x01, 0x4c, 0x11, 0x40, 0x12, 0x3e, 0x1f, 0xd9, 0x6c, 0x04, 0x40, 0x80, 0x00,
+0x05, 0xe0, 0x80, 0x01, 0x3e, 0x5f, 0xda, 0x0c, 0x50, 0x10, 0x80, 0x08, 0x15, 0xe2, 0x00, 0x00,
+0x4c, 0x12, 0xff, 0xf6, 0x48, 0x00, 0x00, 0x10, 0x3e, 0x1f, 0xda, 0x0c, 0x04, 0x50, 0x80, 0x00,
+0x04, 0x30, 0x80, 0x01, 0x3e, 0x2f, 0xda, 0xac, 0x50, 0x10, 0x80, 0x08, 0x14, 0x32, 0x80, 0x00,
+0x4c, 0x11, 0x7f, 0xf6, 0x2e, 0x17, 0xe3, 0xc0, 0x4e, 0x13, 0x00, 0x72, 0x2f, 0xe7, 0xe0, 0x01,
+0x54, 0x0f, 0x00, 0x40, 0x4e, 0x03, 0x00, 0x56, 0x2e, 0x57, 0xe3, 0xe4, 0x44, 0x30, 0x00, 0x01,
0x4c, 0x51, 0xc0, 0x0c, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x0a, 0x08, 0x46, 0x2f, 0x00, 0x00,
0x04, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x0a, 0x08,
0x05, 0xe0, 0x00, 0x00, 0x40, 0x1f, 0x10, 0x08, 0x40, 0x10, 0x90, 0x09, 0x14, 0x10, 0x00, 0x00,
-0x2e, 0x27, 0xfe, 0x6c, 0x05, 0xe0, 0x00, 0x00, 0x44, 0x4f, 0x00, 0xff, 0x40, 0x21, 0x20, 0x08,
-0x40, 0x1f, 0x10, 0x02, 0x40, 0x51, 0x04, 0x04, 0x14, 0x50, 0x00, 0x00, 0x2e, 0x07, 0xe6, 0x45,
+0x2e, 0x27, 0xfc, 0x0c, 0x05, 0xe0, 0x00, 0x00, 0x44, 0x4f, 0x00, 0xff, 0x40, 0x21, 0x20, 0x08,
+0x40, 0x1f, 0x10, 0x02, 0x40, 0x51, 0x04, 0x04, 0x14, 0x50, 0x00, 0x00, 0x2e, 0x07, 0xe3, 0xe5,
0x44, 0x40, 0x00, 0x01, 0x4c, 0x02, 0x40, 0x0c, 0x46, 0x06, 0x02, 0x01, 0x58, 0x00, 0x0a, 0x08,
0x46, 0x2f, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x46, 0x06, 0x02, 0x01,
0x58, 0x00, 0x0a, 0x08, 0x04, 0x50, 0x00, 0x00, 0x40, 0x22, 0x90, 0x08, 0x40, 0x21, 0x10, 0x09,
-0x14, 0x20, 0x00, 0x00, 0x2e, 0x37, 0xfe, 0x6d, 0x04, 0x10, 0x00, 0x00, 0x45, 0xef, 0x00, 0xff,
+0x14, 0x20, 0x00, 0x00, 0x2e, 0x37, 0xfc, 0x0d, 0x04, 0x10, 0x00, 0x00, 0x45, 0xef, 0x00, 0xff,
0x40, 0x21, 0xa0, 0x08, 0x40, 0x10, 0xf8, 0x02, 0x40, 0x11, 0x04, 0x04, 0x48, 0x00, 0x00, 0x14,
0x46, 0x46, 0x02, 0x00, 0x04, 0x52, 0x02, 0x82, 0x46, 0x3f, 0x00, 0x00, 0x40, 0x22, 0x8c, 0x04,
0x46, 0x06, 0x02, 0x01, 0x14, 0x22, 0x02, 0x82, 0x58, 0x00, 0x0a, 0x08, 0x05, 0xe0, 0x00, 0x00,
@@ -3967,38 +3995,38 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x05, 0xe0, 0x82, 0x82, 0x46, 0x4f, 0x00, 0x00, 0x40, 0x5f, 0x10, 0x04, 0x14, 0x50, 0x82, 0x82,
0x46, 0x36, 0x02, 0x01, 0x04, 0x21, 0x82, 0x82, 0x46, 0x10, 0x10, 0x00, 0x41, 0xe1, 0x10, 0x04,
0x15, 0xe1, 0x82, 0x82, 0x58, 0x20, 0x00, 0x00, 0x58, 0x10, 0x87, 0x00, 0x44, 0x00, 0x00, 0x70,
-0x49, 0xff, 0xfd, 0x56, 0x2e, 0x27, 0xe6, 0x38, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x0a,
-0x46, 0x18, 0x10, 0x08, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x49, 0xff, 0xfd, 0x48,
+0x49, 0xff, 0xfd, 0x12, 0x2e, 0x27, 0xe3, 0xd8, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x0a,
+0x46, 0x18, 0x10, 0x08, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x49, 0xff, 0xfd, 0x04,
0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x80, 0x00, 0x4e, 0x02, 0x00, 0x06, 0x44, 0x50, 0x00, 0x05,
-0x4c, 0x02, 0xc0, 0x0c, 0x40, 0x83, 0x14, 0x08, 0x3e, 0x0f, 0xfb, 0x0c, 0x40, 0x84, 0x00, 0x00,
+0x4c, 0x02, 0xc0, 0x0c, 0x40, 0x83, 0x14, 0x08, 0x3e, 0x0f, 0xf8, 0xac, 0x40, 0x84, 0x00, 0x00,
0x44, 0x70, 0x04, 0x28, 0x48, 0x00, 0x00, 0x08, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x02, 0xc0, 0x60,
0x48, 0xff, 0xff, 0xf2, 0x04, 0x14, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xfd, 0x1e, 0x04, 0x14, 0x00, 0x20, 0x50, 0x03, 0x82, 0xa4, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xfd, 0x16, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x48, 0x50, 0x84, 0x00, 0x04,
-0x4c, 0x72, 0xff, 0xea, 0x4e, 0x63, 0x00, 0x22, 0x3e, 0x4f, 0xfa, 0xd0, 0x05, 0xe2, 0x00, 0xcd,
+0x49, 0xff, 0xfc, 0xda, 0x04, 0x14, 0x00, 0x20, 0x50, 0x03, 0x82, 0xa4, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xfc, 0xd2, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x48, 0x50, 0x84, 0x00, 0x04,
+0x4c, 0x72, 0xff, 0xea, 0x4e, 0x63, 0x00, 0x22, 0x3e, 0x4f, 0xf8, 0x70, 0x05, 0xe2, 0x00, 0xcd,
0x46, 0x56, 0x02, 0x00, 0x15, 0xe2, 0x80, 0x56, 0x58, 0x32, 0x80, 0x00, 0x04, 0x22, 0x00, 0xce,
0x14, 0x21, 0x80, 0x57, 0x58, 0x11, 0x80, 0x00, 0x04, 0x02, 0x00, 0xcf, 0x14, 0x00, 0x80, 0x58,
0x58, 0x50, 0x80, 0x00, 0x05, 0xe2, 0x00, 0xd9, 0x15, 0xe2, 0x80, 0x62, 0x46, 0x16, 0x02, 0x00,
0x04, 0x02, 0x00, 0xda, 0x48, 0x00, 0x00, 0x66, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x8a,
-0x3e, 0x0f, 0xfa, 0xd0, 0x04, 0x30, 0x00, 0xd0, 0x46, 0x16, 0x02, 0x01, 0x14, 0x30, 0x80, 0x56,
+0x3e, 0x0f, 0xf8, 0x70, 0x04, 0x30, 0x00, 0xd0, 0x46, 0x16, 0x02, 0x01, 0x14, 0x30, 0x80, 0x56,
0x59, 0xe0, 0x80, 0x00, 0x04, 0x40, 0x00, 0xd1, 0x14, 0x4f, 0x00, 0x57, 0x58, 0x50, 0x80, 0x00,
0x04, 0x20, 0x00, 0xd2, 0x14, 0x22, 0x80, 0x58, 0x04, 0x30, 0x00, 0xdb, 0x14, 0x30, 0x80, 0x62,
0x46, 0x16, 0x02, 0x01, 0x04, 0x00, 0x00, 0xdc, 0x48, 0x00, 0x00, 0x68, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x02, 0xc0, 0x68, 0x40, 0x93, 0x14, 0x08, 0x3e, 0x0f, 0xfb, 0x4c, 0x40, 0x84, 0x80, 0x00,
+0x4c, 0x02, 0xc0, 0x68, 0x40, 0x93, 0x14, 0x08, 0x3e, 0x0f, 0xf8, 0xec, 0x40, 0x84, 0x80, 0x00,
0x44, 0x70, 0x04, 0x48, 0x04, 0x14, 0x00, 0x00, 0x58, 0x03, 0x80, 0x00, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xfc, 0xb6, 0x04, 0x14, 0x00, 0x20, 0x50, 0x03, 0x82, 0x84, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xfc, 0xae, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x68, 0x50, 0x84, 0x00, 0x04,
-0x4c, 0x72, 0xff, 0xea, 0x4e, 0x63, 0x00, 0x22, 0x3c, 0x2d, 0xff, 0x87, 0x46, 0x46, 0x02, 0x00,
-0x14, 0x22, 0x00, 0x56, 0x58, 0x02, 0x00, 0x00, 0x3c, 0x5d, 0xff, 0x88, 0x14, 0x50, 0x00, 0x57,
-0x58, 0x10, 0x00, 0x00, 0x3c, 0x3d, 0xff, 0x89, 0x14, 0x30, 0x80, 0x58, 0x58, 0x40, 0x00, 0x00,
-0x3c, 0x2d, 0xff, 0x91, 0x14, 0x22, 0x00, 0x62, 0x46, 0x16, 0x02, 0x00, 0x3c, 0x0d, 0xff, 0x92,
+0x49, 0xff, 0xfc, 0x72, 0x04, 0x14, 0x00, 0x20, 0x50, 0x03, 0x82, 0x84, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xfc, 0x6a, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x68, 0x50, 0x84, 0x00, 0x04,
+0x4c, 0x72, 0xff, 0xea, 0x4e, 0x63, 0x00, 0x22, 0x3c, 0x2d, 0xfe, 0xef, 0x46, 0x46, 0x02, 0x00,
+0x14, 0x22, 0x00, 0x56, 0x58, 0x02, 0x00, 0x00, 0x3c, 0x5d, 0xfe, 0xf0, 0x14, 0x50, 0x00, 0x57,
+0x58, 0x10, 0x00, 0x00, 0x3c, 0x3d, 0xfe, 0xf1, 0x14, 0x30, 0x80, 0x58, 0x58, 0x40, 0x00, 0x00,
+0x3c, 0x2d, 0xfe, 0xf9, 0x14, 0x22, 0x00, 0x62, 0x46, 0x16, 0x02, 0x00, 0x3c, 0x0d, 0xfe, 0xfa,
0x58, 0x10, 0x81, 0x8c, 0x48, 0x00, 0x00, 0x24, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x22,
-0x3e, 0x3f, 0xfa, 0xd0, 0x04, 0x01, 0x80, 0xd6, 0x46, 0x16, 0x02, 0x01, 0x14, 0x00, 0x80, 0x56,
+0x3e, 0x3f, 0xf8, 0x70, 0x04, 0x01, 0x80, 0xd6, 0x46, 0x16, 0x02, 0x01, 0x14, 0x00, 0x80, 0x56,
0x59, 0xe0, 0x80, 0x00, 0x04, 0x21, 0x80, 0xd7, 0x14, 0x2f, 0x00, 0x57, 0x58, 0x50, 0x80, 0x00,
0x04, 0x41, 0x80, 0xd8, 0x14, 0x42, 0x80, 0x58, 0x04, 0x01, 0x80, 0xdf, 0x14, 0x00, 0x80, 0x62,
0x46, 0x16, 0x02, 0x01, 0x04, 0x01, 0x80, 0xe0, 0x58, 0x10, 0x81, 0x8c, 0x14, 0x00, 0x80, 0x00,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x2e, 0x17, 0xe2, 0x1e,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x2e, 0x17, 0xdf, 0xbe,
0x54, 0x00, 0x80, 0x20, 0x4e, 0x02, 0x00, 0x62, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x0d, 0x18,
0x04, 0x10, 0x00, 0x00, 0x40, 0x50, 0xa8, 0x08, 0x40, 0x12, 0xe8, 0x09, 0x54, 0x40, 0x80, 0x20,
0x40, 0x32, 0x00, 0x10, 0x4e, 0x32, 0x00, 0x0a, 0x50, 0x30, 0xff, 0xc0, 0x5e, 0xf1, 0xff, 0xf0,
@@ -4012,7 +4040,7 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x04, 0x10, 0x00, 0x00, 0x40, 0x30, 0xa0, 0x09, 0x40, 0x31, 0xa0, 0x08, 0x58, 0x11, 0x80, 0x10,
0x48, 0x00, 0x00, 0x0a, 0x04, 0x30, 0x00, 0x00, 0x40, 0x51, 0xa0, 0x09, 0x40, 0x52, 0xa0, 0x08,
0x58, 0x12, 0x80, 0xf0, 0x14, 0x10, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x2e, 0x27, 0xe6, 0x1d, 0x14, 0x2f, 0x80, 0x01, 0x4e, 0x03, 0x00, 0x2e,
+0x51, 0xff, 0xff, 0xf4, 0x2e, 0x27, 0xe3, 0xbd, 0x14, 0x2f, 0x80, 0x01, 0x4e, 0x03, 0x00, 0x2e,
0x47, 0xc6, 0x02, 0x00, 0x58, 0xae, 0x00, 0x00, 0x46, 0x96, 0x02, 0x04, 0x45, 0xe0, 0x02, 0x45,
0x46, 0x86, 0x02, 0x00, 0x46, 0x66, 0x02, 0x04, 0x46, 0x75, 0x57, 0x84, 0x46, 0x12, 0x00, 0xfc,
0x46, 0x35, 0x7c, 0x04, 0x15, 0xee, 0x00, 0x00, 0x58, 0x10, 0x80, 0x0c, 0x15, 0xe5, 0x00, 0x01,
@@ -4050,1355 +4078,1289 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x46, 0x46, 0x02, 0x01, 0x46, 0x36, 0x02, 0x00, 0x46, 0x26, 0x02, 0x01, 0x58, 0x10, 0x81, 0xc0,
0x58, 0x00, 0x08, 0x00, 0x14, 0x12, 0x83, 0x40, 0x14, 0x12, 0x03, 0x40, 0x14, 0x01, 0x83, 0x41,
0x14, 0x01, 0x03, 0x41, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x07, 0xe2, 0x1f, 0x54, 0x10, 0x00, 0x01,
-0x4e, 0x12, 0x00, 0x32, 0x54, 0x20, 0x00, 0x02, 0x4e, 0x22, 0x00, 0x2e, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x1c, 0x49, 0xff, 0xfa, 0xca, 0x46, 0x1e, 0x1f, 0xff, 0x58, 0x10, 0x8f, 0xff,
-0x40, 0x60, 0x04, 0x02, 0x42, 0x13, 0x70, 0x08, 0x44, 0x00, 0x00, 0x1c, 0x44, 0x20, 0x00, 0x00,
-0x49, 0xff, 0xfa, 0x9e, 0x3c, 0x3d, 0xf9, 0x8d, 0x44, 0x40, 0x00, 0x02, 0x4c, 0x32, 0x40, 0x14,
-0x44, 0x10, 0x00, 0x00, 0x40, 0x02, 0x10, 0x08, 0x49, 0xff, 0xfa, 0xb0, 0x44, 0x2f, 0xff, 0x9f,
-0x40, 0x00, 0x08, 0x02, 0x58, 0x10, 0x00, 0x40, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x20,
-0x49, 0xff, 0xfa, 0x86, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x40, 0x00, 0x00, 0x13, 0x4e, 0x03, 0x00, 0x0c,
-0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xd6, 0x30, 0x44, 0x20, 0x1f, 0x23, 0x49, 0xff, 0x83, 0x76,
-0x48, 0x00, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x0c, 0x46, 0x16, 0x02, 0x04,
-0x58, 0x10, 0x84, 0x28, 0x50, 0x00, 0x7f, 0xff, 0x3e, 0x2f, 0xde, 0x6c, 0x48, 0x00, 0x00, 0x1c,
-0x4e, 0x13, 0x00, 0x0c, 0x46, 0x16, 0x02, 0x04, 0x58, 0x10, 0x84, 0x28, 0x50, 0x00, 0x7f, 0xff,
-0x3e, 0x2f, 0xde, 0x50, 0x48, 0x00, 0x00, 0x10, 0x50, 0x10, 0xff, 0xfc, 0x5c, 0xf0, 0x80, 0x02,
-0x4e, 0xf2, 0x00, 0x16, 0x46, 0x16, 0x02, 0x04, 0x58, 0x10, 0x84, 0x28, 0x50, 0x00, 0x7f, 0xff,
-0x3e, 0x2f, 0xde, 0x88, 0x39, 0xe1, 0x01, 0x01, 0x04, 0x50, 0x80, 0x00, 0x40, 0x4f, 0x40, 0x08,
-0x40, 0x32, 0x80, 0x13, 0x40, 0x02, 0x0c, 0x04, 0x14, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04,
-0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4,
-0x2e, 0x77, 0xe4, 0x0e, 0x4e, 0x72, 0x00, 0x16, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a,
-0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xfa, 0x22, 0x46, 0x10, 0x3f, 0xf0,
-0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x44, 0x20, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14,
-0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x80, 0x00,
-0x49, 0xff, 0xfa, 0x0e, 0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x58, 0x23, 0x80, 0x00,
-0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xfa, 0x04, 0x2e, 0x17, 0xe4, 0x0f, 0x4e, 0x12, 0x00, 0x12,
-0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a, 0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01,
-0x49, 0xff, 0xf9, 0xf6, 0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x48, 0x00, 0x00, 0x10,
-0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a, 0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01,
-0x49, 0xff, 0xf9, 0xe6, 0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54,
-0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xf9, 0xdc, 0x46, 0x08, 0x00, 0x21, 0x58, 0x00, 0x02, 0x44,
-0x04, 0x70, 0x00, 0x00, 0x44, 0x8f, 0xff, 0xcf, 0x40, 0x63, 0xa0, 0x02, 0x14, 0x60, 0x00, 0x00,
-0x2e, 0x47, 0xe2, 0x59, 0x54, 0x32, 0x00, 0x20, 0x4e, 0x32, 0x00, 0x10, 0x04, 0x20, 0x00, 0x00,
-0x42, 0x11, 0x00, 0x09, 0x14, 0x10, 0x00, 0x00, 0x46, 0xa8, 0x00, 0x21, 0x05, 0xc5, 0x00, 0x44,
-0x42, 0x9e, 0x64, 0x09, 0x14, 0x95, 0x00, 0x44, 0x2e, 0x17, 0xe2, 0x5a, 0x54, 0x00, 0x80, 0x10,
-0x4e, 0x02, 0x00, 0x12, 0x46, 0x58, 0x00, 0x21, 0x04, 0x92, 0x80, 0x91, 0x55, 0xc0, 0x80, 0x0c,
-0x58, 0xa4, 0x00, 0x00, 0x40, 0x7e, 0x08, 0x08, 0x40, 0x84, 0xa8, 0x02, 0x40, 0x64, 0x1c, 0x04,
-0x14, 0x62, 0x80, 0x91, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x30, 0x49, 0xff, 0xf9, 0xbe,
-0x40, 0x20, 0x34, 0x08, 0x40, 0x21, 0x7c, 0x09, 0x4e, 0x22, 0x00, 0x1c, 0x44, 0x00, 0x00, 0x30,
-0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf9, 0xb2, 0x40, 0x30, 0x34, 0x08, 0x40, 0x31, 0xfc, 0x09,
-0x4e, 0x32, 0x00, 0x10, 0x46, 0x58, 0x00, 0x23, 0x46, 0x60, 0x01, 0x30, 0x47, 0xe8, 0x00, 0x21,
-0x58, 0x63, 0x05, 0x11, 0x44, 0x00, 0x00, 0x36, 0x14, 0x62, 0x80, 0x1b, 0x14, 0x0f, 0x00, 0xce,
-0x44, 0xa0, 0x00, 0x00, 0x3e, 0x6f, 0x83, 0x48, 0x58, 0x75, 0x00, 0x00, 0x59, 0xc3, 0x00, 0x00,
-0x48, 0x00, 0x03, 0x0c, 0x3c, 0x4d, 0xf9, 0x8b, 0x50, 0x94, 0x80, 0x01, 0x40, 0x12, 0x08, 0x08,
-0x40, 0x34, 0x04, 0x00, 0x04, 0x11, 0x80, 0x01, 0x0c, 0x04, 0x00, 0x04, 0x40, 0x94, 0x80, 0x13,
-0x4b, 0xe0, 0x18, 0x01, 0x3c, 0x0d, 0xf9, 0x8c, 0x58, 0x23, 0x80, 0x00, 0x40, 0xf4, 0x80, 0x06,
-0x4e, 0xf3, 0xff, 0xea, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x06, 0x00, 0x49, 0xff, 0xf9, 0x76,
-0x44, 0x3f, 0xfc, 0x7f, 0x40, 0x90, 0x0c, 0x02, 0x58, 0x14, 0x82, 0x80, 0x44, 0x00, 0x06, 0x00,
-0x58, 0x23, 0x80, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x46, 0x80, 0x13, 0x12, 0x3c, 0x0d, 0xf9, 0x8a,
-0x58, 0x84, 0x0d, 0x00, 0x4c, 0x04, 0x40, 0x06, 0x44, 0xa0, 0x00, 0x14, 0x48, 0x00, 0x00, 0x1e,
-0x46, 0x10, 0x17, 0xd7, 0x58, 0x10, 0x88, 0x40, 0x4c, 0x00, 0xc0, 0x06, 0x44, 0xa0, 0x00, 0x1b,
-0x48, 0x00, 0x00, 0x14, 0x46, 0x40, 0x26, 0x25, 0x58, 0x42, 0x0a, 0x00, 0x4c, 0x02, 0x40, 0x06,
-0x44, 0xa0, 0x00, 0x28, 0x48, 0x00, 0x00, 0x0a, 0x3e, 0x0f, 0xd6, 0x64, 0x3e, 0x1f, 0xde, 0xa4,
-0x44, 0x20, 0x1d, 0x79, 0x49, 0xff, 0x82, 0x2a, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x58,
-0x49, 0xff, 0xf9, 0x3c, 0x44, 0x9f, 0x00, 0xff, 0x40, 0x50, 0x24, 0x02, 0x40, 0x85, 0x20, 0x08,
-0x44, 0x00, 0x00, 0x58, 0x58, 0x23, 0x80, 0x00, 0x40, 0x14, 0x14, 0x04, 0x4b, 0xe0, 0x18, 0x01,
-0x2e, 0x07, 0xe6, 0x20, 0x4e, 0x03, 0x01, 0xe6, 0x3e, 0x8f, 0xd9, 0x20, 0x02, 0x04, 0x00, 0x00,
-0x04, 0x14, 0x00, 0x01, 0x58, 0x23, 0x80, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x50, 0x84, 0x00, 0x08,
-0x3e, 0x5f, 0xd9, 0x78, 0x4c, 0x82, 0xff, 0xf4, 0x4e, 0x73, 0x00, 0xea, 0x2f, 0xef, 0xe2, 0x60,
-0x4f, 0xe4, 0x00, 0x1a, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x18, 0x49, 0xff, 0xf9, 0x0e,
-0x2e, 0x57, 0xe2, 0x60, 0x44, 0x8f, 0x1f, 0xff, 0x40, 0x22, 0xb4, 0x08, 0x40, 0x40, 0x20, 0x02,
-0x40, 0x11, 0x00, 0x13, 0x40, 0x12, 0x04, 0x04, 0x44, 0x00, 0x00, 0x18, 0x58, 0x23, 0x80, 0x00,
-0x4b, 0xe0, 0x70, 0x01, 0x2e, 0x07, 0xe2, 0x1f, 0x54, 0x90, 0x00, 0x04, 0x4e, 0x92, 0x00, 0xb4,
-0x3e, 0x9f, 0x83, 0x84, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x24, 0x01,
-0x2e, 0x57, 0xe2, 0x67, 0x40, 0x00, 0x20, 0x09, 0x40, 0x00, 0x20, 0x08, 0x40, 0x10, 0x14, 0x04,
-0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x17, 0xe2, 0x68, 0x44, 0x3f, 0x00, 0xff,
-0x40, 0x40, 0x0c, 0x02, 0x40, 0x50, 0xa0, 0x08, 0x40, 0x12, 0x14, 0x04, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0xdc,
-0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x17, 0xe2, 0x6f, 0x46, 0x2f, 0xf0, 0x0f, 0x58, 0x21, 0x0f, 0xff,
-0x40, 0x30, 0xc0, 0x08, 0x40, 0x00, 0x08, 0x02, 0x40, 0x10, 0x0c, 0x04, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0xdc,
-0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x57, 0xe2, 0x70, 0x40, 0x22, 0xe0, 0x08, 0x40, 0x00, 0x20, 0x08,
-0x40, 0x00, 0x20, 0x09, 0x40, 0x10, 0x08, 0x04, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0xdc,
-0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x24, 0x01,
-0x2e, 0x47, 0xe2, 0x6b, 0x40, 0x30, 0x20, 0x09, 0x40, 0x31, 0xa0, 0x08, 0x40, 0x11, 0x90, 0x04,
-0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x27, 0xe2, 0x6c, 0x44, 0x5f, 0x00, 0xff,
-0x40, 0x31, 0x20, 0x08, 0x40, 0x00, 0x14, 0x02, 0x40, 0x10, 0x0c, 0x04, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0xe0,
-0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x47, 0xe2, 0x73, 0x46, 0x1f, 0xf0, 0x0f, 0x58, 0x10, 0x8f, 0xff,
-0x40, 0x22, 0x40, 0x08, 0x40, 0x50, 0x04, 0x02, 0x40, 0x12, 0x88, 0x04, 0x44, 0x00, 0x00, 0xe0,
-0x44, 0x20, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0xe0,
-0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x17, 0xe2, 0x74, 0x40, 0x40, 0x20, 0x08, 0x40, 0x42, 0x20, 0x09,
-0x40, 0x90, 0xe0, 0x08, 0x40, 0x12, 0x24, 0x04, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x20, 0x00, 0x00,
-0x48, 0x00, 0x00, 0xec, 0x46, 0x17, 0xf1, 0x71, 0x58, 0x10, 0x8d, 0x11, 0x58, 0x24, 0x80, 0x00,
-0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x13, 0xb1, 0x17, 0x58, 0x10, 0x8f, 0x15,
-0x58, 0x24, 0x80, 0x00, 0x44, 0x00, 0x00, 0xe0, 0x48, 0x00, 0x00, 0xd8, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x72, 0xc0, 0xf8, 0x2e, 0x9f, 0xe2, 0x60, 0x4e, 0x94, 0x00, 0x1a, 0x58, 0x13, 0x80, 0x00,
-0x44, 0x00, 0x00, 0x18, 0x49, 0xff, 0xf8, 0x22, 0x2e, 0x37, 0xe2, 0x60, 0x44, 0x5f, 0x1f, 0xff,
-0x40, 0x11, 0xb4, 0x08, 0x40, 0x40, 0x14, 0x02, 0x40, 0x80, 0x80, 0x13, 0x40, 0x12, 0x20, 0x04,
-0x44, 0x00, 0x00, 0x18, 0x58, 0x23, 0x80, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x2e, 0x27, 0xe2, 0x1f,
-0x54, 0x01, 0x00, 0x04, 0x4e, 0x02, 0x00, 0xb6, 0x3e, 0x9f, 0x83, 0x84, 0x44, 0x10, 0x00, 0x01,
-0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x57, 0xe2, 0x69, 0x40, 0x00, 0x20, 0x09,
-0x40, 0x00, 0x20, 0x08, 0x40, 0x10, 0x14, 0x04, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xdc,
-0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x24, 0x01,
-0x2e, 0x17, 0xe2, 0x6a, 0x44, 0x3f, 0x00, 0xff, 0x40, 0x20, 0x0c, 0x02, 0x40, 0x40, 0xa0, 0x08,
-0x40, 0x11, 0x10, 0x04, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x20, 0x00, 0x01, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x17, 0xe2, 0x71,
-0x46, 0x5f, 0xf0, 0x0f, 0x58, 0x52, 0x8f, 0xff, 0x40, 0x00, 0x14, 0x02, 0x40, 0x20, 0xc0, 0x08,
-0x40, 0x10, 0x08, 0x04, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x47, 0xe2, 0x72,
-0x40, 0x50, 0x20, 0x08, 0x40, 0x52, 0xa0, 0x09, 0x40, 0x12, 0x60, 0x08, 0x40, 0x12, 0x84, 0x04,
-0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xdc, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x01,
-0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x47, 0xe2, 0x6d, 0x40, 0x00, 0x20, 0x09,
-0x40, 0x00, 0x20, 0x08, 0x40, 0x10, 0x10, 0x04, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe0,
-0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x24, 0x01,
-0x2e, 0x57, 0xe2, 0x6e, 0x44, 0x3f, 0x00, 0xff, 0x40, 0x00, 0x0c, 0x02, 0x40, 0x12, 0xa0, 0x08,
-0x40, 0x10, 0x04, 0x04, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x47, 0xe2, 0x75,
-0x46, 0x2f, 0xf0, 0x0f, 0x58, 0x21, 0x0f, 0xff, 0x40, 0x50, 0x08, 0x02, 0x40, 0x32, 0x40, 0x08,
-0x40, 0x12, 0x8c, 0x04, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe0, 0x4b, 0xe0, 0x24, 0x01, 0x2e, 0x47, 0xe2, 0x76,
-0x40, 0x80, 0x20, 0x08, 0x40, 0x84, 0x20, 0x09, 0x40, 0x92, 0x60, 0x08, 0x40, 0x14, 0x24, 0x04,
-0x44, 0x00, 0x00, 0xe0, 0x44, 0x20, 0x00, 0x01, 0x4b, 0xe0, 0x18, 0x01, 0x48, 0x00, 0x00, 0x22,
-0x46, 0x13, 0xf1, 0x71, 0x58, 0x10, 0x8d, 0x11, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x20, 0x00, 0x01,
-0x4b, 0xe0, 0x18, 0x01, 0x46, 0x13, 0xb1, 0x17, 0x58, 0x10, 0x8f, 0x15, 0x48, 0xff, 0xff, 0xea,
-0x3e, 0x8f, 0xd9, 0x78, 0x02, 0x04, 0x00, 0x00, 0x04, 0x14, 0x00, 0x01, 0x58, 0x23, 0x80, 0x00,
-0x50, 0x84, 0x00, 0x08, 0x3e, 0x9f, 0xd9, 0xe0, 0x4b, 0xe0, 0x18, 0x01, 0x4c, 0x84, 0xff, 0xf4,
-0x2e, 0x87, 0xe2, 0x1f, 0x55, 0xe4, 0x00, 0x08, 0x4f, 0xe2, 0x00, 0x7c, 0x2f, 0xe7, 0xe2, 0x66,
-0x3e, 0x8f, 0x83, 0x84, 0x15, 0xef, 0x80, 0x01, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00,
-0x4b, 0xe0, 0x20, 0x01, 0x04, 0x4f, 0x80, 0x01, 0x46, 0x1f, 0xfc, 0x3f, 0x54, 0x92, 0x00, 0x0f,
-0x58, 0x10, 0x8f, 0xff, 0x40, 0x50, 0x04, 0x02, 0x40, 0x34, 0xc8, 0x08, 0x40, 0x12, 0x8c, 0x04,
-0x58, 0x23, 0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0x13, 0x80, 0x00,
-0x44, 0x00, 0x06, 0x0c, 0x4b, 0xe0, 0x20, 0x01, 0x44, 0x2f, 0xf0, 0xff, 0x40, 0x44, 0xa0, 0x08,
-0x40, 0x00, 0x08, 0x02, 0x40, 0x10, 0x10, 0x04, 0x58, 0x23, 0x80, 0x00, 0x44, 0x00, 0x06, 0x0c,
-0x4b, 0xe0, 0x18, 0x01, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x06, 0x08, 0x4b, 0xe0, 0x20, 0x01,
-0x46, 0x1f, 0x0f, 0xff, 0x58, 0x10, 0x8f, 0xff, 0x40, 0x34, 0xe0, 0x08, 0x40, 0x50, 0x04, 0x02,
-0x40, 0x12, 0x8c, 0x04, 0x58, 0x23, 0x80, 0x00, 0x44, 0x00, 0x06, 0x08, 0x4b, 0xe0, 0x18, 0x01,
-0x04, 0x2f, 0x80, 0x01, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x1c, 0x40, 0x91, 0x10, 0x09,
-0x4b, 0xe0, 0x20, 0x01, 0x46, 0x4f, 0xf0, 0xff, 0x58, 0x42, 0x0f, 0xff, 0x40, 0x00, 0x10, 0x02,
-0x40, 0x54, 0xd0, 0x08, 0x40, 0x10, 0x14, 0x04, 0x58, 0x23, 0x80, 0x00, 0x44, 0x00, 0x00, 0x1c,
-0x4b, 0xe0, 0x18, 0x01, 0x58, 0x13, 0x80, 0x00, 0x44, 0x00, 0x00, 0x1c, 0x4b, 0xe0, 0x20, 0x01,
-0x46, 0x1e, 0x1f, 0xff, 0x58, 0x10, 0x8f, 0xff, 0x40, 0x20, 0x04, 0x02, 0x40, 0x34, 0xe4, 0x08,
-0x40, 0x11, 0x0c, 0x04, 0x44, 0x00, 0x00, 0x1c, 0x58, 0x23, 0x80, 0x00, 0x4b, 0xe0, 0x18, 0x01,
-0x4e, 0x73, 0x00, 0x14, 0x3e, 0x8f, 0xd9, 0xe0, 0x02, 0x04, 0x00, 0x00, 0x04, 0x14, 0x00, 0x01,
-0x44, 0x20, 0x00, 0x00, 0x50, 0x84, 0x00, 0x08, 0x3e, 0x9f, 0xda, 0x50, 0x4b, 0xe0, 0x18, 0x01,
-0x4c, 0x84, 0xff, 0xf4, 0x48, 0x00, 0x00, 0x16, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0xc0, 0x12,
-0x3e, 0x8f, 0xda, 0x50, 0x02, 0x04, 0x00, 0x00, 0x04, 0x14, 0x00, 0x01, 0x44, 0x20, 0x00, 0x01,
-0x4b, 0xe0, 0x18, 0x01, 0x50, 0x84, 0x00, 0x08, 0x3e, 0x5f, 0xda, 0xc0, 0x4c, 0x82, 0xff, 0xf4,
-0x50, 0x73, 0x80, 0x01, 0x40, 0x73, 0x80, 0x13, 0x3c, 0x2d, 0xf9, 0x8d, 0x40, 0xf3, 0x88, 0x06,
-0x4e, 0xf2, 0x00, 0x08, 0x44, 0x90, 0x00, 0x00, 0x3e, 0x8f, 0xd8, 0xb0, 0x48, 0xff, 0xfc, 0xfc,
-0x2e, 0x17, 0xe6, 0x1c, 0x50, 0x60, 0xff, 0xff, 0x54, 0xa3, 0x00, 0xff, 0x5c, 0xf5, 0x00, 0x04,
-0x4e, 0xf3, 0x00, 0x06, 0x3e, 0x0f, 0xd6, 0x78, 0x49, 0xff, 0x7f, 0x58, 0x3e, 0x7f, 0xdd, 0x00,
-0x44, 0x60, 0x00, 0x00, 0x44, 0x90, 0x00, 0x06, 0x2e, 0x17, 0xe6, 0x1c, 0x3e, 0x3f, 0xdd, 0x00,
-0x42, 0x13, 0x24, 0x73, 0x04, 0x03, 0x80, 0x00, 0x50, 0x50, 0xff, 0xff, 0x41, 0xe2, 0x88, 0x08,
-0x40, 0x4f, 0x0c, 0x00, 0x04, 0x23, 0x80, 0x05, 0x04, 0x12, 0x00, 0x01, 0x50, 0x63, 0x00, 0x01,
-0x49, 0xff, 0xf6, 0x36, 0x44, 0x50, 0x00, 0x0e, 0x50, 0x73, 0x80, 0x18, 0x4c, 0x62, 0xff, 0xe6,
-0x2e, 0x0f, 0xe2, 0x1f, 0x4e, 0x04, 0x00, 0x1a, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x06, 0x00,
-0x49, 0xff, 0xf6, 0x44, 0x2e, 0x57, 0xe2, 0x1f, 0x44, 0x1f, 0xe3, 0xff, 0x54, 0x32, 0x80, 0x70,
-0x40, 0x40, 0x04, 0x02, 0x40, 0x21, 0x98, 0x08, 0x40, 0x12, 0x08, 0x04, 0x44, 0x00, 0x06, 0x00,
-0x44, 0x20, 0x00, 0x00, 0x49, 0xff, 0xf6, 0x14, 0x49, 0xff, 0xfb, 0x54, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x2e, 0x07, 0xe6, 0x3f, 0x4e, 0x03, 0x00, 0x0e, 0x46, 0x46, 0x01, 0x20, 0x04, 0x52, 0x00, 0x20,
-0x42, 0x22, 0xa0, 0x09, 0x14, 0x22, 0x00, 0x20, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x92, 0x1c,
-0x2f, 0xe7, 0xe6, 0x40, 0x4f, 0xe3, 0x00, 0x0e, 0x46, 0x16, 0x01, 0x20, 0x04, 0x20, 0x80, 0x20,
-0x42, 0x41, 0x24, 0x09, 0x14, 0x40, 0x80, 0x20, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x92, 0x0c,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x49, 0xff, 0xff, 0xd2, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x16, 0x01, 0x20,
-0x04, 0x30, 0x80, 0x20, 0x44, 0x00, 0x00, 0x01, 0x58, 0x21, 0x83, 0x00, 0x14, 0x20, 0x80, 0x20,
-0x49, 0xff, 0x91, 0xea, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x06, 0x01, 0x20, 0x04, 0x10, 0x00, 0x20,
-0x54, 0x20, 0x81, 0x00, 0x4e, 0x22, 0x00, 0x04, 0x44, 0x20, 0x00, 0x01, 0x54, 0x10, 0x82, 0x00,
-0x3e, 0x27, 0xe6, 0x3f, 0x4e, 0x12, 0x00, 0x04, 0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe6, 0x40,
+0x3a, 0x6f, 0x98, 0xbc, 0x2e, 0x07, 0xdf, 0xbf, 0x54, 0x10, 0x00, 0x01, 0x4e, 0x12, 0x00, 0x22,
+0x54, 0x20, 0x00, 0x02, 0x4e, 0x22, 0x00, 0x1e, 0x46, 0x21, 0xe0, 0x00, 0x44, 0x30, 0x00, 0x19,
+0x44, 0x40, 0x00, 0x08, 0x50, 0x01, 0x80, 0x03, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xfa, 0xa8,
+0x3c, 0x4d, 0xf8, 0xf5, 0x44, 0x30, 0x00, 0x02, 0x4c, 0x41, 0xc0, 0x0c, 0x40, 0x01, 0x90, 0x08,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x00, 0x60, 0x44, 0x30, 0x00, 0x05, 0x49, 0xff, 0xfa, 0x98,
+0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x40, 0x00, 0x00, 0x13, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xd3, 0xdc,
+0x44, 0x20, 0x1f, 0x93, 0x49, 0xff, 0x82, 0xaa, 0x48, 0x00, 0x00, 0x00, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x12, 0xc0, 0x0c, 0x46, 0x16, 0x02, 0x04, 0x58, 0x10, 0x84, 0x28, 0x50, 0x00, 0x7f, 0xff,
+0x3e, 0x2f, 0xdc, 0x18, 0x48, 0x00, 0x00, 0x1c, 0x4e, 0x13, 0x00, 0x0c, 0x46, 0x16, 0x02, 0x04,
+0x58, 0x10, 0x84, 0x28, 0x50, 0x00, 0x7f, 0xff, 0x3e, 0x2f, 0xdb, 0xfc, 0x48, 0x00, 0x00, 0x10,
+0x50, 0x10, 0xff, 0xfc, 0x5c, 0xf0, 0x80, 0x02, 0x4e, 0xf2, 0x00, 0x16, 0x46, 0x16, 0x02, 0x04,
+0x58, 0x10, 0x84, 0x28, 0x50, 0x00, 0x7f, 0xff, 0x3e, 0x2f, 0xdc, 0x34, 0x39, 0xe1, 0x01, 0x01,
+0x04, 0x50, 0x80, 0x00, 0x40, 0x4f, 0x40, 0x08, 0x40, 0x32, 0x80, 0x13, 0x40, 0x02, 0x0c, 0x04,
+0x14, 0x00, 0x80, 0x00, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x77, 0xe1, 0xb2, 0x4e, 0x72, 0x00, 0x16,
+0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a, 0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x00,
+0x49, 0xff, 0xf9, 0xf2, 0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54,
+0x44, 0x20, 0x00, 0x00, 0x48, 0x00, 0x00, 0x14, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a,
+0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x80, 0x00, 0x49, 0xff, 0xf9, 0xde, 0x46, 0x18, 0x3f, 0xf0,
+0x58, 0x10, 0x80, 0x03, 0x58, 0x23, 0x80, 0x00, 0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xf9, 0xd4,
+0x2e, 0x17, 0xe1, 0xb3, 0x4e, 0x12, 0x00, 0x12, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a,
+0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xf9, 0xc6, 0x46, 0x10, 0x3f, 0xf0,
+0x58, 0x10, 0x80, 0x03, 0x48, 0x00, 0x00, 0x10, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a,
+0x44, 0x00, 0x06, 0x10, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xf9, 0xb6, 0x46, 0x18, 0x3f, 0xf0,
+0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xf9, 0xac,
+0x46, 0x08, 0x00, 0x21, 0x58, 0x00, 0x02, 0x44, 0x04, 0x70, 0x00, 0x00, 0x44, 0x8f, 0xff, 0xcf,
+0x40, 0x63, 0xa0, 0x02, 0x14, 0x60, 0x00, 0x00, 0x2e, 0x47, 0xdf, 0xf9, 0x54, 0x32, 0x00, 0x20,
+0x4e, 0x32, 0x00, 0x10, 0x04, 0x20, 0x00, 0x00, 0x42, 0x11, 0x00, 0x09, 0x14, 0x10, 0x00, 0x00,
+0x46, 0xa8, 0x00, 0x21, 0x05, 0xc5, 0x00, 0x44, 0x42, 0x9e, 0x64, 0x09, 0x14, 0x95, 0x00, 0x44,
+0x2e, 0x17, 0xdf, 0xfa, 0x54, 0x00, 0x80, 0x10, 0x4e, 0x02, 0x00, 0x12, 0x46, 0x58, 0x00, 0x21,
+0x04, 0x92, 0x80, 0x91, 0x55, 0xc0, 0x80, 0x0c, 0x58, 0xa4, 0x00, 0x00, 0x40, 0x7e, 0x08, 0x08,
+0x40, 0x84, 0xa8, 0x02, 0x40, 0x64, 0x1c, 0x04, 0x14, 0x62, 0x80, 0x91, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x30, 0x49, 0xff, 0xf9, 0x8e, 0x40, 0x20, 0x34, 0x08, 0x40, 0x21, 0x7c, 0x09,
+0x4e, 0x22, 0x00, 0x1c, 0x44, 0x00, 0x00, 0x30, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf9, 0x82,
+0x40, 0x30, 0x34, 0x08, 0x40, 0x31, 0xfc, 0x09, 0x4e, 0x32, 0x00, 0x10, 0x46, 0x58, 0x00, 0x23,
+0x46, 0x60, 0x01, 0x30, 0x47, 0xe8, 0x00, 0x21, 0x58, 0x63, 0x05, 0x11, 0x44, 0x00, 0x00, 0x36,
+0x14, 0x62, 0x80, 0x1b, 0x14, 0x0f, 0x00, 0xce, 0x45, 0xc0, 0x00, 0x00, 0x58, 0x9e, 0x00, 0x00,
+0x3e, 0xaf, 0x84, 0x80, 0x48, 0x00, 0x02, 0x20, 0x3c, 0x4d, 0xf8, 0xf3, 0x50, 0x73, 0x80, 0x01,
+0x40, 0x12, 0x08, 0x08, 0x40, 0x83, 0x04, 0x00, 0x04, 0x14, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x04,
+0x40, 0x73, 0x80, 0x13, 0x4b, 0xe0, 0x28, 0x01, 0x3d, 0xed, 0xf8, 0xf4, 0x58, 0x24, 0x80, 0x00,
+0x40, 0xf3, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xea, 0x44, 0x00, 0x06, 0x00, 0x58, 0x14, 0x80, 0x00,
+0x44, 0x20, 0x03, 0x80, 0x44, 0x30, 0x00, 0x07, 0x44, 0x40, 0x00, 0x05, 0x49, 0xff, 0xf9, 0x68,
+0x46, 0x50, 0x13, 0x12, 0x3c, 0x0d, 0xf8, 0xf2, 0x58, 0x52, 0x8d, 0x00, 0x4c, 0x02, 0xc0, 0x06,
+0x45, 0xc0, 0x00, 0x14, 0x48, 0x00, 0x00, 0x1e, 0x46, 0x60, 0x17, 0xd7, 0x58, 0x53, 0x08, 0x40,
+0x4c, 0x02, 0xc0, 0x06, 0x45, 0xc0, 0x00, 0x1b, 0x48, 0x00, 0x00, 0x14, 0x46, 0x70, 0x26, 0x25,
+0x58, 0x53, 0x8a, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x45, 0xc0, 0x00, 0x28, 0x48, 0x00, 0x00, 0x0a,
+0x3e, 0x0f, 0xd4, 0x10, 0x3e, 0x1f, 0xdc, 0x50, 0x44, 0x20, 0x1d, 0xe9, 0x49, 0xff, 0x81, 0x66,
+0x58, 0x14, 0x80, 0x00, 0x44, 0x00, 0x00, 0x58, 0x44, 0x20, 0xff, 0x00, 0x44, 0x30, 0x00, 0x08,
+0x58, 0x4e, 0x00, 0x00, 0x49, 0xff, 0xf9, 0x34, 0x2e, 0x87, 0xe3, 0xc0, 0x4e, 0x83, 0x01, 0x3e,
+0x3e, 0x6f, 0xd6, 0xcc, 0x02, 0x03, 0x00, 0x00, 0x04, 0x13, 0x00, 0x01, 0x58, 0x24, 0x80, 0x00,
+0x4b, 0xe0, 0x28, 0x01, 0x50, 0x63, 0x00, 0x08, 0x3e, 0x5f, 0xd7, 0x24, 0x4c, 0x62, 0xff, 0xf4,
+0x4e, 0x93, 0x00, 0x94, 0x2e, 0x07, 0xe0, 0x00, 0x40, 0x30, 0x00, 0x10, 0x4e, 0x34, 0x00, 0x0e,
+0x54, 0x40, 0x00, 0x07, 0x58, 0x14, 0x80, 0x00, 0x44, 0x00, 0x00, 0x18, 0x44, 0x20, 0xe0, 0x00,
+0x44, 0x30, 0x00, 0x0d, 0x49, 0xff, 0xf9, 0x0c, 0x3e, 0x7f, 0xdf, 0xbc, 0x00, 0x23, 0x80, 0x03,
+0x54, 0x61, 0x00, 0x04, 0x4e, 0x62, 0x00, 0x66, 0x44, 0x10, 0x00, 0x00, 0x00, 0x43, 0x80, 0x4b,
+0x3e, 0x6f, 0x85, 0x08, 0x58, 0x30, 0x80, 0x00, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x20, 0x00, 0xff,
+0x4b, 0xe0, 0x18, 0x01, 0x00, 0x43, 0x80, 0x4c, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0xff, 0x00, 0x44, 0x30, 0x00, 0x08, 0x4b, 0xe0, 0x18, 0x01, 0x00, 0x43, 0x80, 0x53,
+0x46, 0x20, 0x0f, 0xf0, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x10, 0x00, 0x00, 0x44, 0x30, 0x00, 0x10,
+0x4b, 0xe0, 0x18, 0x01, 0x00, 0x43, 0x80, 0x54, 0x46, 0x2f, 0xf0, 0x00, 0x44, 0x00, 0x00, 0xdc,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x30, 0x00, 0x18, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
+0x00, 0x43, 0x80, 0x4f, 0x58, 0x30, 0x80, 0x00, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x20, 0x00, 0xff,
+0x4b, 0xe0, 0x18, 0x01, 0x00, 0x43, 0x80, 0x50, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x10, 0x00, 0x00,
+0x44, 0x20, 0xff, 0x00, 0x44, 0x30, 0x00, 0x08, 0x4b, 0xe0, 0x18, 0x01, 0x00, 0x43, 0x80, 0x57,
+0x46, 0x20, 0x0f, 0xf0, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x10, 0x00, 0x00, 0x44, 0x30, 0x00, 0x10,
+0x4b, 0xe0, 0x18, 0x01, 0x00, 0x43, 0x80, 0x58, 0x46, 0x2f, 0xf0, 0x00, 0x44, 0x00, 0x00, 0xe0,
+0x44, 0x10, 0x00, 0x00, 0x44, 0x30, 0x00, 0x18, 0x4b, 0xe0, 0x18, 0x01, 0x48, 0x00, 0x00, 0xbe,
+0x46, 0x17, 0xf1, 0x71, 0x58, 0x10, 0x8d, 0x11, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xdc,
+0x4b, 0xe0, 0x28, 0x01, 0x46, 0x13, 0xb1, 0x17, 0x58, 0x10, 0x8f, 0x15, 0x58, 0x23, 0x00, 0x00,
+0x44, 0x00, 0x00, 0xe0, 0x48, 0x00, 0x00, 0x96, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x92, 0xc0, 0xa6,
+0x2e, 0x07, 0xe0, 0x00, 0x40, 0x70, 0x00, 0x10, 0x4e, 0x74, 0x00, 0x0e, 0x54, 0x40, 0x00, 0x07,
+0x58, 0x14, 0x80, 0x00, 0x44, 0x00, 0x00, 0x18, 0x44, 0x20, 0xe0, 0x00, 0x44, 0x30, 0x00, 0x0d,
+0x49, 0xff, 0xf8, 0x76, 0x3e, 0x6f, 0xdf, 0xbc, 0x00, 0x13, 0x00, 0x03, 0x54, 0x80, 0x80, 0x04,
+0x4e, 0x82, 0x00, 0x66, 0x00, 0x43, 0x00, 0x4d, 0x3e, 0x7f, 0x85, 0x08, 0x44, 0x00, 0x00, 0xdc,
+0x44, 0x10, 0x00, 0x01, 0x44, 0x20, 0x00, 0xff, 0x44, 0x30, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x00, 0x43, 0x00, 0x4e, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x10, 0x00, 0x01, 0x44, 0x20, 0xff, 0x00,
+0x44, 0x30, 0x00, 0x08, 0x4b, 0xe0, 0x1c, 0x01, 0x00, 0x43, 0x00, 0x55, 0x46, 0x20, 0x0f, 0xf0,
+0x44, 0x00, 0x00, 0xdc, 0x44, 0x10, 0x00, 0x01, 0x40, 0x30, 0x90, 0x08, 0x4b, 0xe0, 0x1c, 0x01,
+0x00, 0x43, 0x00, 0x56, 0x46, 0x2f, 0xf0, 0x00, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x10, 0x00, 0x01,
+0x44, 0x30, 0x00, 0x18, 0x4b, 0xe0, 0x1c, 0x01, 0x00, 0x43, 0x00, 0x51, 0x44, 0x00, 0x00, 0xe0,
+0x44, 0x10, 0x00, 0x01, 0x44, 0x20, 0x00, 0xff, 0x44, 0x30, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x00, 0x43, 0x00, 0x52, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x10, 0x00, 0x01, 0x44, 0x20, 0xff, 0x00,
+0x44, 0x30, 0x00, 0x08, 0x4b, 0xe0, 0x1c, 0x01, 0x00, 0x43, 0x00, 0x59, 0x46, 0x20, 0x0f, 0xf0,
+0x44, 0x00, 0x00, 0xe0, 0x44, 0x10, 0x00, 0x01, 0x40, 0x30, 0x90, 0x08, 0x4b, 0xe0, 0x1c, 0x01,
+0x00, 0x43, 0x00, 0x5a, 0x46, 0x2f, 0xf0, 0x00, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x10, 0x00, 0x01,
+0x44, 0x30, 0x00, 0x18, 0x4b, 0xe0, 0x1c, 0x01, 0x48, 0x00, 0x00, 0x28, 0x46, 0x13, 0xf1, 0x71,
+0x58, 0x10, 0x8d, 0x11, 0x44, 0x00, 0x00, 0xdc, 0x44, 0x20, 0x00, 0x01, 0x4b, 0xe0, 0x28, 0x01,
+0x46, 0x13, 0xb1, 0x17, 0x58, 0x10, 0x8f, 0x15, 0x44, 0x00, 0x00, 0xe0, 0x44, 0x20, 0x00, 0x01,
+0x4b, 0xe0, 0x28, 0x01, 0x48, 0x00, 0x00, 0x12, 0x3e, 0x6f, 0xd7, 0x24, 0x02, 0x03, 0x00, 0x00,
+0x04, 0x13, 0x00, 0x01, 0x58, 0x24, 0x80, 0x00, 0x4b, 0xe0, 0x28, 0x01, 0x50, 0x63, 0x00, 0x08,
+0x3e, 0x5f, 0xd7, 0x8c, 0x4c, 0x62, 0xff, 0xf4, 0x2f, 0xe7, 0xdf, 0xbf, 0x54, 0x3f, 0x00, 0x08,
+0x4e, 0x32, 0x00, 0x46, 0x2e, 0x67, 0xe0, 0x06, 0x46, 0x20, 0x03, 0xc0, 0x54, 0x83, 0x00, 0x0f,
+0x3e, 0x7f, 0x85, 0x08, 0x44, 0x00, 0x00, 0x00, 0x58, 0x14, 0x80, 0x00, 0x44, 0x30, 0x00, 0x12,
+0x58, 0x44, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x06, 0x0c, 0x58, 0x14, 0x80, 0x00,
+0x44, 0x20, 0x0f, 0x00, 0x44, 0x30, 0x00, 0x08, 0x58, 0x44, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x46, 0x20, 0xf0, 0x00, 0x58, 0x44, 0x00, 0x00, 0x44, 0x00, 0x06, 0x08, 0x58, 0x14, 0x80, 0x00,
+0x44, 0x30, 0x00, 0x18, 0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x63, 0x10, 0x09, 0x46, 0x20, 0x0f, 0x00,
+0x44, 0x00, 0x00, 0x1c, 0x58, 0x14, 0x80, 0x00, 0x44, 0x30, 0x00, 0x14, 0x58, 0x43, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x21, 0xe0, 0x00, 0x58, 0x43, 0x00, 0x00, 0x44, 0x00, 0x00, 0x1c,
+0x58, 0x14, 0x80, 0x00, 0x50, 0x30, 0x7f, 0xfd, 0x4b, 0xe0, 0x1c, 0x01, 0x4e, 0x93, 0x00, 0x14,
+0x3e, 0x6f, 0xd7, 0x8c, 0x02, 0x03, 0x00, 0x00, 0x04, 0x13, 0x00, 0x01, 0x44, 0x20, 0x00, 0x00,
+0x4b, 0xe0, 0x28, 0x01, 0x50, 0x63, 0x00, 0x08, 0x3e, 0x5f, 0xd7, 0xfc, 0x4c, 0x62, 0xff, 0xf4,
+0x48, 0x00, 0x00, 0x16, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x92, 0xc0, 0x12, 0x3e, 0x6f, 0xd7, 0xfc,
+0x02, 0x03, 0x00, 0x00, 0x04, 0x13, 0x00, 0x01, 0x44, 0x20, 0x00, 0x01, 0x4b, 0xe0, 0x28, 0x01,
+0x50, 0x63, 0x00, 0x08, 0x3e, 0x5f, 0xd8, 0x6c, 0x4c, 0x62, 0xff, 0xf4, 0x50, 0x94, 0x80, 0x01,
+0x40, 0x94, 0x80, 0x13, 0x3c, 0x4d, 0xf8, 0xf5, 0x40, 0xf4, 0x90, 0x06, 0x4e, 0xf2, 0x00, 0x08,
+0x44, 0x70, 0x00, 0x00, 0x3e, 0x6f, 0xd6, 0x5c, 0x48, 0xff, 0xfd, 0xe8, 0x2e, 0x17, 0xe3, 0xbc,
+0x50, 0x30, 0xff, 0xff, 0x54, 0xa1, 0x80, 0xff, 0x5c, 0xf5, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x06,
+0x3e, 0x0f, 0xd4, 0x24, 0x49, 0xff, 0x7f, 0x7a, 0x3e, 0x7f, 0xda, 0xac, 0x44, 0x60, 0x00, 0x00,
+0x44, 0x90, 0x00, 0x06, 0x2f, 0xe7, 0xe3, 0xbc, 0x3e, 0x3f, 0xda, 0xac, 0x43, 0xe3, 0x24, 0x73,
+0x04, 0x23, 0x80, 0x05, 0x50, 0x1f, 0x7f, 0xff, 0x40, 0x40, 0x88, 0x08, 0x40, 0x52, 0x0c, 0x00,
+0x04, 0x03, 0x80, 0x00, 0x04, 0x12, 0x80, 0x01, 0x50, 0x63, 0x00, 0x01, 0x49, 0xff, 0xf6, 0xf4,
+0x44, 0x50, 0x00, 0x0e, 0x50, 0x73, 0x80, 0x18, 0x4c, 0x62, 0xff, 0xe6, 0x2e, 0x47, 0xdf, 0xbf,
+0x40, 0x02, 0x00, 0x10, 0x4e, 0x04, 0x00, 0x10, 0x54, 0x52, 0x00, 0x70, 0x40, 0x42, 0x90, 0x09,
+0x44, 0x00, 0x06, 0x00, 0x44, 0x10, 0x00, 0x00, 0x44, 0x20, 0x1c, 0x00, 0x44, 0x30, 0x00, 0x0a,
+0x49, 0xff, 0xf7, 0x1e, 0x49, 0xff, 0xfc, 0x5e, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x2e, 0x07, 0xe3, 0xdf,
+0x4e, 0x03, 0x00, 0x0e, 0x46, 0x46, 0x01, 0x20, 0x04, 0x52, 0x00, 0x20, 0x42, 0x22, 0xa0, 0x09,
+0x14, 0x22, 0x00, 0x20, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x92, 0x46, 0x2f, 0xe7, 0xe3, 0xe0,
+0x4f, 0xe3, 0x00, 0x0e, 0x46, 0x16, 0x01, 0x20, 0x04, 0x20, 0x80, 0x20, 0x42, 0x41, 0x24, 0x09,
+0x14, 0x40, 0x80, 0x20, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x92, 0x36, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
0x49, 0xff, 0xff, 0xd2, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x49, 0xff, 0xff, 0xdc, 0x49, 0xff, 0xff, 0xc4,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xe4, 0x2e, 0x37, 0xe2, 0x61, 0x59, 0xc0, 0x00, 0x00, 0x54, 0x41, 0x80, 0x40,
-0x4e, 0x43, 0x05, 0x02, 0x2e, 0x57, 0xe6, 0x20, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x50, 0x04, 0xfc,
-0x54, 0xa1, 0x80, 0x20, 0x49, 0xff, 0xf5, 0xc0, 0x46, 0x18, 0x1b, 0xce, 0x3e, 0x6f, 0x83, 0x48,
-0x58, 0x10, 0x8c, 0x3f, 0x44, 0x00, 0x00, 0x6c, 0x58, 0x2e, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01,
-0x46, 0x1f, 0xcb, 0x00, 0x58, 0x2e, 0x00, 0x00, 0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48,
-0x4b, 0xe0, 0x18, 0x01, 0x58, 0x1e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xf5, 0x7e,
-0x42, 0x20, 0x74, 0x09, 0x42, 0x21, 0x78, 0x09, 0x42, 0x11, 0x78, 0x08, 0x44, 0x00, 0x00, 0x54,
-0x58, 0x2e, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x10, 0x5a, 0x00, 0x58, 0x10, 0x8f, 0x8b,
-0x44, 0x00, 0x00, 0x70, 0x58, 0x2e, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x4e, 0xa2, 0x00, 0x3e,
-0x44, 0x00, 0x00, 0x70, 0x58, 0x1e, 0x00, 0x00, 0x49, 0xff, 0xf5, 0x60, 0x2e, 0x87, 0xe2, 0x61,
-0x40, 0x70, 0x20, 0x08, 0x54, 0x54, 0x00, 0x10, 0x40, 0x63, 0xf0, 0x09, 0x54, 0x34, 0x00, 0x0f,
-0x4e, 0x52, 0x00, 0x06, 0x40, 0x63, 0x0c, 0x00, 0x48, 0x00, 0x00, 0x04, 0x40, 0x63, 0x0c, 0x01,
-0x4e, 0x66, 0x00, 0x06, 0x44, 0x60, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x0f,
-0x42, 0x63, 0x78, 0x01, 0x58, 0x1e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf5, 0x3e,
-0x46, 0x2f, 0xf0, 0xff, 0x46, 0x10, 0x0f, 0x00, 0x58, 0x21, 0x0f, 0xff, 0x40, 0x63, 0x50, 0x08,
-0x40, 0x40, 0x08, 0x02, 0x40, 0x03, 0x04, 0x02, 0x40, 0x10, 0x10, 0x04, 0x58, 0x2e, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf5, 0x0c, 0x46, 0x19, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0,
-0x58, 0x2e, 0x00, 0x00, 0x49, 0xff, 0xf5, 0x04, 0x46, 0x38, 0x10, 0x60, 0x04, 0x71, 0x80, 0x02,
-0x2e, 0x87, 0xe4, 0x0e, 0x3c, 0x7f, 0xf9, 0x1d, 0x4e, 0x83, 0x00, 0x18, 0x2f, 0xe7, 0xe4, 0x0f,
-0x4f, 0xe3, 0x00, 0x14, 0x4f, 0xc3, 0x00, 0x08, 0x46, 0x40, 0x48, 0x52, 0x58, 0x42, 0x03, 0x90,
+0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x16, 0x01, 0x20, 0x04, 0x30, 0x80, 0x20,
+0x44, 0x00, 0x00, 0x01, 0x58, 0x21, 0x83, 0x00, 0x14, 0x20, 0x80, 0x20, 0x49, 0xff, 0x92, 0x14,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x46, 0x06, 0x01, 0x20, 0x04, 0x10, 0x00, 0x20, 0x54, 0x20, 0x81, 0x00,
+0x4e, 0x22, 0x00, 0x04, 0x44, 0x20, 0x00, 0x01, 0x54, 0x10, 0x82, 0x00, 0x3e, 0x27, 0xe3, 0xdf,
+0x4e, 0x12, 0x00, 0x04, 0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe3, 0xe0, 0x49, 0xff, 0xff, 0xd2,
+0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x49, 0xff, 0xff, 0xdc, 0x49, 0xff, 0xff, 0xc4, 0x51, 0xff, 0x80, 0x04,
+0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xe4,
+0x2e, 0x37, 0xe0, 0x01, 0x59, 0xc0, 0x00, 0x00, 0x54, 0x41, 0x80, 0x40, 0x4e, 0x43, 0x04, 0xd2,
+0x2e, 0x57, 0xe3, 0xc0, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x50, 0x04, 0xcc, 0x54, 0xa1, 0x80, 0x20,
+0x49, 0xff, 0xf6, 0xda, 0x46, 0x18, 0x1b, 0xce, 0x3e, 0x6f, 0x84, 0x80, 0x58, 0x10, 0x8c, 0x3f,
+0x44, 0x00, 0x00, 0x6c, 0x58, 0x2e, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x46, 0x1f, 0xcb, 0x00,
+0x58, 0x2e, 0x00, 0x00, 0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48, 0x4b, 0xe0, 0x18, 0x01,
+0x58, 0x1e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xf6, 0x44, 0x42, 0x20, 0x74, 0x09,
+0x42, 0x21, 0x78, 0x09, 0x42, 0x11, 0x78, 0x08, 0x44, 0x00, 0x00, 0x54, 0x58, 0x2e, 0x00, 0x00,
+0x4b, 0xe0, 0x18, 0x01, 0x46, 0x10, 0x5a, 0x00, 0x58, 0x10, 0x8f, 0x8b, 0x44, 0x00, 0x00, 0x70,
+0x58, 0x2e, 0x00, 0x00, 0x4b, 0xe0, 0x18, 0x01, 0x4e, 0xa2, 0x00, 0x30, 0x44, 0x00, 0x00, 0x70,
+0x58, 0x1e, 0x00, 0x00, 0x49, 0xff, 0xf6, 0x26, 0x2e, 0x87, 0xe0, 0x01, 0x40, 0x70, 0x20, 0x08,
+0x54, 0x54, 0x00, 0x10, 0x40, 0x43, 0xf0, 0x09, 0x54, 0x34, 0x00, 0x0f, 0x4e, 0x52, 0x00, 0x06,
+0x40, 0x42, 0x0c, 0x00, 0x48, 0x00, 0x00, 0x04, 0x40, 0x42, 0x0c, 0x01, 0x4e, 0x46, 0x00, 0x06,
+0x44, 0x40, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x0f, 0x42, 0x42, 0x78, 0x01,
+0x46, 0x20, 0x0f, 0x00, 0x54, 0x42, 0x00, 0xff, 0x44, 0x00, 0x00, 0x70, 0x58, 0x1e, 0x00, 0x00,
+0x44, 0x30, 0x00, 0x14, 0x49, 0xff, 0xf6, 0x24, 0x46, 0x19, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0,
+0x58, 0x2e, 0x00, 0x00, 0x49, 0xff, 0xf5, 0xd8, 0x46, 0x38, 0x10, 0x60, 0x04, 0x01, 0x80, 0x02,
+0x2e, 0x47, 0xe1, 0xb2, 0x3c, 0x0f, 0xf8, 0x85, 0x4e, 0x43, 0x00, 0x18, 0x2e, 0x27, 0xe1, 0xb3,
+0x4e, 0x23, 0x00, 0x14, 0x4f, 0xc3, 0x00, 0x08, 0x46, 0x40, 0x48, 0x52, 0x58, 0x42, 0x03, 0x90,
0x48, 0x00, 0x00, 0x0a, 0x44, 0x50, 0x00, 0x01, 0x4d, 0xc2, 0xc0, 0x08, 0x46, 0x40, 0x48, 0x56,
-0x58, 0x42, 0x07, 0x90, 0x14, 0x41, 0x80, 0x02, 0x46, 0x86, 0x02, 0x00, 0x58, 0x14, 0x00, 0x00,
-0x58, 0x30, 0x80, 0x00, 0x44, 0x20, 0x00, 0xa7, 0x44, 0x60, 0x00, 0x02, 0x14, 0x24, 0x00, 0x00,
-0x14, 0x20, 0x80, 0x01, 0x14, 0x61, 0x80, 0x83, 0x4f, 0xc3, 0x00, 0x22, 0x58, 0x60, 0x80, 0x00,
-0x46, 0x90, 0x40, 0x00, 0x58, 0x30, 0x80, 0x00, 0x46, 0x70, 0x02, 0x74, 0x58, 0x40, 0x80, 0x00,
-0x46, 0x0c, 0x00, 0x00, 0x47, 0xe6, 0x02, 0x04, 0x58, 0x73, 0x80, 0x27, 0x58, 0x00, 0x04, 0x00,
-0x44, 0x50, 0x05, 0x9f, 0x14, 0x93, 0x00, 0x80, 0x14, 0x71, 0x83, 0x40, 0x14, 0x02, 0x03, 0x41,
-0x14, 0x5f, 0x00, 0x85, 0x4e, 0xa2, 0x00, 0x2c, 0x48, 0x00, 0x00, 0x32, 0x44, 0x50, 0x00, 0x01,
-0x4d, 0xc2, 0x80, 0x06, 0x44, 0x90, 0x00, 0x00, 0x48, 0x00, 0x00, 0x60, 0x46, 0x36, 0x02, 0x00,
-0x46, 0x71, 0x40, 0x00, 0x46, 0x46, 0x02, 0x01, 0x46, 0x00, 0x02, 0x74, 0x59, 0xe2, 0x00, 0x00,
-0x46, 0x5c, 0x00, 0x00, 0x46, 0x26, 0x02, 0x05, 0x58, 0x00, 0x00, 0x27, 0x58, 0x52, 0x84, 0x00,
-0x44, 0x80, 0x05, 0x9f, 0x14, 0x71, 0x80, 0x80, 0x14, 0x02, 0x03, 0x40, 0x14, 0x5f, 0x03, 0x41,
-0x14, 0x81, 0x00, 0x85, 0x4e, 0xa2, 0x00, 0x24, 0x48, 0x00, 0x00, 0x2a, 0x46, 0x36, 0x02, 0x00,
+0x58, 0x42, 0x07, 0x90, 0x14, 0x41, 0x80, 0x02, 0x46, 0x46, 0x02, 0x00, 0x58, 0x92, 0x00, 0x00,
+0x58, 0x32, 0x00, 0x00, 0x45, 0xe0, 0x00, 0xa7, 0x44, 0x70, 0x00, 0x02, 0x15, 0xe2, 0x00, 0x00,
+0x15, 0xe4, 0x80, 0x01, 0x14, 0x71, 0x80, 0x83, 0x4f, 0xc3, 0x00, 0x22, 0x58, 0x81, 0x80, 0x00,
+0x46, 0x70, 0x40, 0x00, 0x58, 0x61, 0x80, 0x00, 0x46, 0x30, 0x02, 0x74, 0x58, 0x22, 0x00, 0x00,
+0x46, 0x5c, 0x00, 0x00, 0x46, 0x16, 0x02, 0x04, 0x58, 0x31, 0x80, 0x27, 0x58, 0x52, 0x84, 0x00,
+0x44, 0x00, 0x05, 0x9f, 0x14, 0x74, 0x00, 0x80, 0x14, 0x33, 0x03, 0x40, 0x14, 0x51, 0x03, 0x41,
+0x14, 0x00, 0x80, 0x85, 0x4e, 0xa2, 0x00, 0x2c, 0x48, 0x00, 0x00, 0x32, 0x44, 0x50, 0x00, 0x01,
+0x4d, 0xc2, 0x80, 0x06, 0x44, 0x90, 0x00, 0x00, 0x48, 0x00, 0x00, 0x60, 0x46, 0x66, 0x02, 0x00,
+0x46, 0x31, 0x40, 0x00, 0x46, 0x26, 0x02, 0x01, 0x46, 0x50, 0x02, 0x74, 0x58, 0x11, 0x00, 0x00,
+0x46, 0x0c, 0x00, 0x00, 0x47, 0xe6, 0x02, 0x05, 0x58, 0x52, 0x80, 0x27, 0x58, 0x00, 0x04, 0x00,
+0x44, 0x40, 0x05, 0x9f, 0x14, 0x33, 0x00, 0x80, 0x14, 0x51, 0x03, 0x40, 0x14, 0x00, 0x83, 0x41,
+0x14, 0x4f, 0x00, 0x85, 0x4e, 0xa2, 0x00, 0x24, 0x48, 0x00, 0x00, 0x2a, 0x46, 0x36, 0x02, 0x00,
0x46, 0x44, 0x0c, 0x00, 0x58, 0x31, 0x8d, 0x24, 0x48, 0x00, 0x00, 0x08, 0x46, 0x36, 0x02, 0x00,
-0x46, 0x44, 0x04, 0x00, 0x58, 0x31, 0x8d, 0x24, 0x14, 0x41, 0x80, 0x00, 0x58, 0x80, 0x80, 0x00,
-0x04, 0x64, 0x03, 0x49, 0x58, 0x90, 0x80, 0x00, 0x46, 0x2a, 0x30, 0x00, 0x46, 0x10, 0xff, 0x00,
-0x14, 0x24, 0x82, 0x82, 0x40, 0x93, 0x04, 0x02, 0x48, 0x00, 0x00, 0x20, 0x46, 0x36, 0x02, 0x01,
+0x46, 0x44, 0x04, 0x00, 0x58, 0x31, 0x8d, 0x24, 0x14, 0x41, 0x80, 0x00, 0x58, 0x41, 0x00, 0x00,
+0x04, 0x82, 0x03, 0x49, 0x58, 0x91, 0x00, 0x00, 0x47, 0xea, 0x30, 0x00, 0x46, 0x70, 0xff, 0x00,
+0x15, 0xe4, 0x82, 0x82, 0x40, 0x94, 0x1c, 0x02, 0x48, 0x00, 0x00, 0x20, 0x46, 0x36, 0x02, 0x01,
0x46, 0x44, 0x0c, 0x00, 0x58, 0x31, 0x8d, 0x24, 0x48, 0x00, 0x00, 0x08, 0x46, 0x36, 0x02, 0x01,
-0x46, 0x44, 0x04, 0x00, 0x58, 0x31, 0x8d, 0x24, 0x14, 0x41, 0x80, 0x00, 0x58, 0x3f, 0x00, 0x00,
-0x58, 0x01, 0x80, 0x00, 0x46, 0x4a, 0x30, 0x00, 0x05, 0xe1, 0x83, 0x49, 0x46, 0x50, 0xff, 0x00,
-0x14, 0x40, 0x02, 0x82, 0x40, 0x9f, 0x14, 0x02, 0x46, 0x36, 0x02, 0x00, 0x14, 0x3f, 0x80, 0x00,
-0x58, 0x21, 0x80, 0x00, 0x04, 0x0f, 0x80, 0x00, 0x14, 0x2f, 0x80, 0x01, 0x58, 0x00, 0x03, 0x80,
-0x14, 0x0f, 0x80, 0x00, 0x46, 0x16, 0x02, 0x04, 0x04, 0x0f, 0x80, 0x01, 0x14, 0x1f, 0x80, 0x02,
-0x58, 0x00, 0x03, 0x00, 0x14, 0x0f, 0x80, 0x01, 0x04, 0x0f, 0x80, 0x02, 0x58, 0x40, 0x80, 0x00,
-0x58, 0x00, 0x01, 0x00, 0x14, 0x0f, 0x80, 0x02, 0x44, 0x00, 0x00, 0x03, 0x14, 0x02, 0x00, 0x50,
-0x50, 0x00, 0x00, 0x0d, 0x04, 0x4f, 0x80, 0x00, 0x47, 0xe0, 0x10, 0x00, 0x14, 0x02, 0x00, 0x00,
-0x44, 0x01, 0x00, 0x68, 0x04, 0x4f, 0x80, 0x01, 0x14, 0x02, 0x00, 0x00, 0x58, 0x81, 0x00, 0x00,
-0x04, 0x0f, 0x80, 0x02, 0x58, 0x71, 0x00, 0x00, 0x46, 0x62, 0x03, 0xf0, 0x58, 0x50, 0x80, 0x00,
-0x46, 0x30, 0x60, 0x70, 0x46, 0x10, 0x00, 0x80, 0x15, 0xe0, 0x00, 0x00, 0x58, 0x63, 0x06, 0x06,
+0x46, 0x44, 0x04, 0x00, 0x58, 0x31, 0x8d, 0x24, 0x14, 0x41, 0x80, 0x00, 0x58, 0x50, 0x80, 0x00,
+0x58, 0x20, 0x80, 0x00, 0x46, 0x6a, 0x30, 0x00, 0x04, 0x12, 0x83, 0x49, 0x46, 0x00, 0xff, 0x00,
+0x14, 0x61, 0x02, 0x82, 0x40, 0x90, 0x80, 0x02, 0x46, 0x36, 0x02, 0x00, 0x14, 0x3f, 0x80, 0x01,
+0x58, 0x21, 0x80, 0x00, 0x04, 0x0f, 0x80, 0x01, 0x14, 0x2f, 0x80, 0x02, 0x58, 0x00, 0x03, 0x80,
+0x14, 0x0f, 0x80, 0x01, 0x46, 0x16, 0x02, 0x04, 0x04, 0x0f, 0x80, 0x02, 0x14, 0x1f, 0x80, 0x03,
+0x58, 0x00, 0x03, 0x00, 0x14, 0x0f, 0x80, 0x02, 0x04, 0x0f, 0x80, 0x03, 0x58, 0x40, 0x80, 0x00,
+0x58, 0x00, 0x01, 0x00, 0x14, 0x0f, 0x80, 0x03, 0x44, 0x00, 0x00, 0x03, 0x14, 0x02, 0x00, 0x50,
+0x50, 0x00, 0x00, 0x0d, 0x04, 0x4f, 0x80, 0x01, 0x47, 0xe0, 0x10, 0x00, 0x14, 0x02, 0x00, 0x00,
+0x44, 0x01, 0x00, 0x68, 0x04, 0x4f, 0x80, 0x02, 0x14, 0x02, 0x00, 0x00, 0x58, 0x81, 0x00, 0x00,
+0x04, 0x4f, 0x80, 0x03, 0x58, 0x71, 0x00, 0x00, 0x46, 0x62, 0x03, 0xf0, 0x58, 0x50, 0x80, 0x00,
+0x46, 0x30, 0x60, 0x70, 0x46, 0x10, 0x00, 0x80, 0x15, 0xe2, 0x00, 0x00, 0x58, 0x63, 0x06, 0x06,
0x58, 0x10, 0x87, 0x01, 0x45, 0xe0, 0x00, 0x06, 0x15, 0xe4, 0x02, 0x44, 0x14, 0x63, 0x82, 0x43,
0x14, 0x32, 0x80, 0x08, 0x58, 0x71, 0x00, 0x00, 0x14, 0x11, 0x02, 0x40, 0x44, 0x60, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x90, 0x18, 0x04, 0x43, 0x82, 0x6c, 0x42, 0x52, 0x74, 0x0b,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x90, 0x50, 0x04, 0x43, 0x82, 0x6c, 0x42, 0x52, 0x74, 0x0b,
0x4e, 0x53, 0x00, 0x12, 0x44, 0x50, 0x27, 0x11, 0x4c, 0x62, 0x80, 0x06, 0x50, 0x63, 0x00, 0x01,
-0x48, 0xff, 0xff, 0xf0, 0x3e, 0x0f, 0xd6, 0x64, 0x3e, 0x1f, 0xde, 0xb8, 0x44, 0x20, 0x15, 0xe3,
-0x49, 0xff, 0x7c, 0xe4, 0x46, 0x26, 0x02, 0x00, 0x46, 0x30, 0x00, 0x80, 0x58, 0x61, 0x00, 0x00,
+0x48, 0xff, 0xff, 0xf0, 0x3e, 0x0f, 0xd4, 0x10, 0x3e, 0x1f, 0xdc, 0x64, 0x44, 0x20, 0x16, 0x53,
+0x49, 0xff, 0x7d, 0x1c, 0x46, 0x26, 0x02, 0x00, 0x46, 0x30, 0x00, 0x80, 0x58, 0x61, 0x00, 0x00,
0x58, 0x31, 0x87, 0x00, 0x40, 0x94, 0xd0, 0x09, 0x44, 0x11, 0x00, 0x06, 0x14, 0x31, 0x02, 0x40,
-0x40, 0x94, 0x80, 0x10, 0x14, 0x13, 0x02, 0x44, 0x4e, 0xa3, 0x02, 0x70, 0x47, 0xe6, 0x02, 0x01,
-0x59, 0xef, 0x09, 0xac, 0x50, 0x4f, 0x70, 0x00, 0x50, 0x02, 0x00, 0x04, 0x14, 0xaf, 0x80, 0x02,
-0x15, 0xef, 0x80, 0x03, 0x14, 0x4f, 0x80, 0x04, 0x14, 0x0f, 0x80, 0x05, 0x14, 0xaf, 0x80, 0x01,
-0x15, 0xcf, 0x80, 0x00, 0x59, 0xc5, 0x00, 0x00, 0x04, 0x6f, 0x80, 0x00, 0x4e, 0x63, 0x00, 0x0c,
-0x04, 0x1f, 0x80, 0x04, 0x47, 0xc0, 0x0f, 0xf0, 0x04, 0x00, 0x80, 0x00, 0x40, 0x30, 0x70, 0x02,
-0x48, 0x00, 0x00, 0x10, 0x04, 0x2f, 0x80, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x10,
-0x04, 0x4f, 0x80, 0x03, 0x46, 0x50, 0x0f, 0xf0, 0x04, 0x02, 0x00, 0x00, 0x40, 0x30, 0x14, 0x02,
-0x41, 0xe1, 0xc0, 0x09, 0x15, 0xef, 0x80, 0x01, 0x55, 0xc0, 0x00, 0xff, 0x5c, 0xfe, 0x00, 0x41,
-0x4e, 0xf3, 0x00, 0x06, 0x50, 0x94, 0x80, 0x0a, 0x48, 0x00, 0x00, 0xb0, 0x5c, 0xfe, 0x00, 0x08,
-0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x08, 0x48, 0x00, 0x00, 0xa8, 0x5c, 0xfe, 0x00, 0x10,
-0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x06, 0x48, 0x00, 0x00, 0xa0, 0x5c, 0xfe, 0x00, 0x20,
-0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x04, 0x48, 0x00, 0x00, 0x98, 0x5c, 0xfe, 0x00, 0x30,
-0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x02, 0x48, 0x00, 0x00, 0x90, 0x04, 0x2f, 0x80, 0x00,
-0x4e, 0x23, 0x00, 0x22, 0x46, 0x36, 0x02, 0x00, 0x58, 0x31, 0x89, 0xac, 0x58, 0x01, 0x00, 0x00,
-0x05, 0xc1, 0x80, 0x00, 0x50, 0x20, 0x00, 0x01, 0x55, 0xce, 0x00, 0xff, 0x50, 0x1e, 0x7f, 0xd0,
-0x54, 0x60, 0x80, 0xff, 0x50, 0x31, 0xff, 0xfc, 0x5c, 0xf3, 0x00, 0x10, 0x4e, 0xf2, 0x00, 0x04,
-0x54, 0x01, 0x00, 0xff, 0x46, 0x26, 0x02, 0x00, 0x58, 0x51, 0x09, 0x6c, 0x4c, 0x32, 0xff, 0xea,
-0x48, 0x00, 0x00, 0x26, 0x04, 0x3f, 0x80, 0x00, 0x44, 0x00, 0x00, 0x01, 0x4c, 0x30, 0x40, 0x24,
-0x46, 0x36, 0x02, 0x01, 0x58, 0x31, 0x89, 0xac, 0x44, 0x00, 0x00, 0x00, 0x05, 0xe1, 0x80, 0x00,
-0x50, 0x20, 0x00, 0x01, 0x55, 0xcf, 0x00, 0xff, 0x50, 0x4e, 0x7f, 0xd0, 0x54, 0x52, 0x00, 0xff,
-0x50, 0x31, 0xff, 0xfc, 0x5c, 0xf2, 0x80, 0x10, 0x4e, 0xf2, 0x00, 0x04, 0x54, 0x01, 0x00, 0xff,
-0x46, 0x66, 0x02, 0x01, 0x58, 0x63, 0x09, 0x6c, 0x4c, 0x33, 0x7f, 0xea, 0x5c, 0xf0, 0x00, 0x03,
-0x4e, 0xf2, 0x00, 0x12, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x7f, 0x4c, 0x22, 0x80, 0x40,
-0x50, 0x02, 0x80, 0x02, 0x4c, 0x20, 0x00, 0x3c, 0x05, 0xcf, 0x80, 0x00, 0x44, 0x50, 0x00, 0x01,
-0x48, 0x00, 0x01, 0x4e, 0x44, 0xa0, 0x00, 0x03, 0x4c, 0x05, 0x40, 0x06, 0x50, 0x94, 0xff, 0xfe,
-0x48, 0x00, 0x00, 0x2c, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x02, 0xc0, 0x06, 0x50, 0x94, 0xff, 0xfc,
-0x48, 0x00, 0x00, 0x24, 0x44, 0x50, 0x00, 0x05, 0x4c, 0x02, 0xc0, 0x06, 0x50, 0x94, 0xff, 0xf8,
-0x48, 0x00, 0x00, 0x1c, 0x44, 0x50, 0x00, 0x06, 0x4c, 0x02, 0xc0, 0x06, 0x50, 0x94, 0xff, 0xf4,
-0x48, 0x00, 0x00, 0x14, 0x44, 0x30, 0x00, 0x07, 0x4c, 0x01, 0xc0, 0x06, 0x50, 0x94, 0xff, 0xf0,
-0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x08, 0x4c, 0x02, 0xc0, 0x06, 0x50, 0x94, 0xff, 0xec,
-0x48, 0x00, 0x00, 0x04, 0x50, 0x94, 0xff, 0xe8, 0x40, 0x94, 0x80, 0x10, 0x04, 0x1f, 0x80, 0x00,
-0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf2, 0xf2, 0x40, 0x60, 0x20, 0x08, 0x40, 0x43, 0x70, 0x09,
-0x54, 0x12, 0x00, 0xff, 0x40, 0xa2, 0x00, 0x10, 0x45, 0xe0, 0x00, 0x00, 0x54, 0x5f, 0x00, 0xff,
-0x50, 0x34, 0x80, 0x08, 0x50, 0x25, 0x7f, 0xff, 0x4c, 0x12, 0xc0, 0x10, 0x5e, 0xf4, 0xff, 0xe1,
-0x4e, 0xf3, 0x00, 0x06, 0x44, 0xa0, 0x00, 0x00, 0x48, 0x00, 0x00, 0x16, 0x44, 0xa0, 0x00, 0x00,
-0x44, 0x9f, 0xff, 0xe1, 0x48, 0x00, 0x00, 0x10, 0x5e, 0xf4, 0xff, 0xe1, 0x4e, 0xf2, 0x00, 0x0c,
-0x40, 0x91, 0x80, 0x10, 0x40, 0xa1, 0x00, 0x10, 0x51, 0xef, 0x00, 0x01, 0x5e, 0xf4, 0xff, 0xe1,
-0x4e, 0xf3, 0xff, 0xde, 0x44, 0x50, 0x00, 0x0f, 0x50, 0x14, 0xff, 0xf8, 0x50, 0x05, 0x00, 0x01,
-0x4c, 0xa2, 0xc0, 0x08, 0x44, 0x70, 0x00, 0x1f, 0x42, 0x94, 0x9c, 0x01, 0x48, 0x00, 0x00, 0x0e,
-0x5e, 0xf4, 0x80, 0x20, 0x4e, 0xf3, 0x00, 0x0a, 0x40, 0x90, 0x80, 0x10, 0x40, 0xa0, 0x00, 0x10,
-0x5e, 0xf4, 0x80, 0x20, 0x4e, 0xf2, 0xff, 0xe8, 0x04, 0x1f, 0x80, 0x00, 0x44, 0x00, 0x00, 0x70,
-0x49, 0xff, 0xf2, 0xa4, 0x46, 0x4f, 0xf0, 0xff, 0x46, 0x50, 0x0f, 0x00, 0x40, 0x35, 0x50, 0x08,
-0x58, 0x42, 0x0f, 0xff, 0x40, 0x80, 0x10, 0x02, 0x40, 0x21, 0x94, 0x02, 0x40, 0x11, 0x20, 0x04,
-0x04, 0x2f, 0x80, 0x00, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf2, 0x72, 0x04, 0xaf, 0x80, 0x00,
-0x4e, 0xa3, 0x00, 0x10, 0x46, 0x00, 0xff, 0x00, 0x40, 0x14, 0xd0, 0x08, 0x40, 0x60, 0x80, 0x02,
-0x46, 0x06, 0x02, 0x00, 0x42, 0x33, 0x78, 0x08, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x14,
-0x04, 0x7f, 0x80, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x72, 0xc0, 0x10, 0x46, 0x20, 0xff, 0x00,
-0x40, 0x84, 0xd0, 0x08, 0x40, 0xa4, 0x08, 0x02, 0x46, 0x06, 0x02, 0x01, 0x42, 0x35, 0x78, 0x08,
-0x58, 0x00, 0x0d, 0x24, 0x14, 0x30, 0x00, 0x00, 0x46, 0x86, 0x02, 0x04, 0x46, 0xa6, 0x02, 0x00,
-0x58, 0x75, 0x00, 0x00, 0x58, 0x44, 0x00, 0x00, 0x47, 0xe0, 0x10, 0x00, 0x58, 0x13, 0x80, 0x00,
-0x44, 0x30, 0x00, 0x06, 0x44, 0x20, 0x00, 0x03, 0x44, 0x00, 0x00, 0x10, 0x44, 0x61, 0x00, 0x68,
-0x14, 0x24, 0x00, 0x50, 0x14, 0x05, 0x00, 0xe0, 0x14, 0x63, 0x80, 0xc0, 0x15, 0xe2, 0x00, 0x40,
-0x14, 0x30, 0x82, 0x44, 0x44, 0x50, 0x00, 0x7f, 0x04, 0x3f, 0x80, 0x01, 0x4c, 0x32, 0x80, 0x10,
-0x50, 0x52, 0x80, 0x02, 0x4c, 0x32, 0x80, 0x0c, 0x46, 0x06, 0x02, 0x00, 0x46, 0x32, 0x03, 0xf0,
-0x58, 0x00, 0x09, 0x0c, 0x58, 0x31, 0x86, 0x06, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00,
-0x46, 0x31, 0x03, 0xf0, 0x58, 0x00, 0x09, 0x0c, 0x58, 0x31, 0x86, 0x06, 0x58, 0x82, 0x00, 0x00,
-0x46, 0xa0, 0x60, 0x70, 0x46, 0x70, 0x00, 0x80, 0x58, 0x73, 0x87, 0x01, 0x14, 0x30, 0x00, 0x00,
-0x14, 0xa4, 0x00, 0x08, 0x14, 0x70, 0x82, 0x40, 0x44, 0x60, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0x8e, 0x22, 0x04, 0x2f, 0x80, 0x05, 0x04, 0x01, 0x00, 0x00, 0x42, 0x40, 0x74, 0x0b,
-0x4e, 0x43, 0x00, 0x12, 0x44, 0x50, 0x27, 0x11, 0x4c, 0x62, 0x80, 0x06, 0x50, 0x63, 0x00, 0x01,
-0x48, 0xff, 0xff, 0xee, 0x3e, 0x0f, 0xd6, 0x64, 0x3e, 0x1f, 0xde, 0xb8, 0x44, 0x20, 0x16, 0xec,
-0x49, 0xff, 0x7a, 0xec, 0x04, 0x6f, 0x80, 0x02, 0x46, 0x16, 0x02, 0x00, 0x50, 0x53, 0x00, 0x01,
-0x46, 0x20, 0x00, 0x80, 0x58, 0x00, 0x80, 0x00, 0x55, 0xe2, 0x80, 0xff, 0x58, 0x21, 0x07, 0x00,
-0x44, 0x31, 0x00, 0x06, 0x44, 0x46, 0x07, 0x00, 0x15, 0xef, 0x80, 0x02, 0x14, 0x20, 0x82, 0x40,
-0x14, 0x30, 0x02, 0x44, 0x14, 0x40, 0x82, 0x40, 0x44, 0x50, 0x00, 0x04, 0x04, 0x6f, 0x80, 0x02,
-0x4c, 0x62, 0xfe, 0x14, 0x05, 0xcf, 0x80, 0x00, 0x44, 0x50, 0x00, 0x00, 0x4f, 0xc3, 0x00, 0x20,
-0x46, 0x46, 0x02, 0x00, 0x58, 0x42, 0x09, 0xac, 0x58, 0x3e, 0x00, 0x00, 0x04, 0x22, 0x00, 0x00,
-0x50, 0x42, 0x7f, 0xfc, 0x50, 0x01, 0x7f, 0xd0, 0x54, 0x10, 0x00, 0xff, 0x50, 0x01, 0x80, 0x01,
-0x5c, 0xf0, 0x80, 0x10, 0x4e, 0xf2, 0x00, 0x04, 0x54, 0x30, 0x00, 0xff, 0x47, 0xe6, 0x02, 0x00,
-0x59, 0xef, 0x09, 0x6c, 0x4c, 0x4f, 0x7f, 0xec, 0x48, 0x00, 0x00, 0x22, 0x44, 0x40, 0x00, 0x01,
-0x4d, 0xc2, 0x40, 0x4e, 0x46, 0x46, 0x02, 0x01, 0x58, 0x42, 0x09, 0xac, 0x44, 0x30, 0x00, 0x00,
-0x04, 0x02, 0x00, 0x00, 0x50, 0x42, 0x7f, 0xfc, 0x50, 0x10, 0x7f, 0xd0, 0x54, 0x60, 0x80, 0xff,
-0x50, 0x01, 0x80, 0x01, 0x5c, 0xf3, 0x00, 0x10, 0x4e, 0xf2, 0x00, 0x04, 0x54, 0x30, 0x00, 0xff,
-0x46, 0x26, 0x02, 0x01, 0x58, 0x21, 0x09, 0x6c, 0x4c, 0x41, 0x7f, 0xec, 0x5c, 0xf1, 0x80, 0x03,
-0x4e, 0xf3, 0x00, 0x14, 0x4e, 0x53, 0x00, 0x12, 0x4f, 0xc3, 0x00, 0x08, 0x44, 0x50, 0x00, 0x01,
-0x3e, 0x57, 0xe6, 0x44, 0x48, 0x00, 0x00, 0x24, 0x45, 0xe0, 0x00, 0x01, 0x4d, 0xcf, 0x40, 0x20,
-0x3f, 0xc7, 0xe6, 0x45, 0x48, 0x00, 0x00, 0x1c, 0x4f, 0xc3, 0x00, 0x06, 0x3f, 0xc7, 0xe6, 0x44,
-0x48, 0x00, 0x00, 0x16, 0x44, 0x20, 0x00, 0x01, 0x4d, 0xc1, 0x40, 0x12, 0x44, 0x50, 0x00, 0x00,
-0x3e, 0x57, 0xe6, 0x45, 0x48, 0x00, 0x00, 0x0c, 0x2e, 0x67, 0xe2, 0x61, 0x54, 0x43, 0x00, 0x0f,
-0x41, 0xe2, 0x08, 0x08, 0x40, 0x94, 0xf8, 0x00, 0x40, 0x94, 0x80, 0x10, 0x58, 0x1e, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf1, 0x6a, 0x46, 0x10, 0x0f, 0x00, 0x40, 0x60, 0x04, 0x02,
-0x40, 0x43, 0x44, 0x09, 0x40, 0x54, 0x90, 0x00, 0x3e, 0x6f, 0xfa, 0xd0, 0x50, 0x92, 0xff, 0xc2,
-0x40, 0x3e, 0x18, 0x00, 0x10, 0x91, 0x83, 0x9c, 0x46, 0x26, 0x02, 0x00, 0x04, 0x01, 0x02, 0x44,
-0x54, 0x40, 0x00, 0x0f, 0x4f, 0xc3, 0x00, 0x38, 0x46, 0x01, 0x80, 0x80, 0x58, 0x00, 0x02, 0x48,
-0x41, 0xe2, 0x00, 0x00, 0x46, 0x36, 0x02, 0x00, 0x40, 0x5f, 0x08, 0x08, 0x58, 0x31, 0x89, 0x20,
-0x58, 0x2e, 0x00, 0x00, 0x04, 0x01, 0x80, 0x00, 0x47, 0xef, 0xf0, 0x0f, 0x59, 0xef, 0x0f, 0xff,
-0x40, 0x10, 0x78, 0x02, 0x41, 0xe0, 0x20, 0x08, 0x40, 0x0f, 0x60, 0x09, 0x44, 0x60, 0x00, 0x7f,
-0x4c, 0x03, 0x00, 0x06, 0x50, 0x63, 0x00, 0x02, 0x4c, 0x03, 0x40, 0x04, 0x14, 0x11, 0x80, 0x00,
-0x40, 0xf1, 0x10, 0x06, 0x4e, 0xf2, 0x00, 0x06, 0x04, 0x12, 0x80, 0x00, 0x14, 0x11, 0x80, 0x00,
-0x50, 0x21, 0x00, 0x01, 0x44, 0x00, 0x00, 0x10, 0x50, 0x31, 0x80, 0x04, 0x4c, 0x20, 0x7f, 0xdc,
-0x48, 0x00, 0x00, 0x3c, 0x44, 0x50, 0x00, 0x01, 0x4d, 0xc2, 0xc0, 0x6e, 0x46, 0x51, 0x80, 0x80,
-0x58, 0x52, 0x86, 0x48, 0x40, 0x32, 0x14, 0x00, 0x46, 0x06, 0x02, 0x01, 0x40, 0x31, 0x88, 0x08,
-0x58, 0x00, 0x09, 0x20, 0x44, 0x10, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x46, 0x2f, 0xf0, 0x0f,
-0x58, 0x21, 0x0f, 0xff, 0x40, 0x5f, 0x08, 0x02, 0x40, 0x2f, 0x20, 0x08, 0x40, 0x21, 0x60, 0x09,
-0x45, 0xe0, 0x00, 0x7f, 0x4c, 0x2f, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x81, 0x4c, 0x2f, 0x40, 0x04,
-0x14, 0x50, 0x00, 0x00, 0x40, 0xf0, 0x90, 0x06, 0x4e, 0xf2, 0x00, 0x06, 0x04, 0x51, 0x80, 0x00,
-0x14, 0x50, 0x00, 0x00, 0x50, 0x10, 0x80, 0x01, 0x44, 0x60, 0x00, 0x10, 0x50, 0x00, 0x00, 0x04,
-0x4c, 0x13, 0x7f, 0xdc, 0x48, 0x00, 0x00, 0x1e, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x09, 0x20,
-0x3e, 0x3f, 0xfa, 0xd0, 0x46, 0x49, 0xfd, 0xff, 0x04, 0x20, 0x00, 0x00, 0x41, 0xe0, 0x0c, 0x00,
-0x58, 0x42, 0x09, 0x14, 0x46, 0x66, 0x02, 0x00, 0x40, 0x1f, 0x10, 0x00, 0x50, 0x00, 0x00, 0x04,
-0x58, 0x63, 0x09, 0x60, 0x14, 0x20, 0x80, 0x00, 0x4c, 0x03, 0x7f, 0xec, 0x48, 0x00, 0x00, 0x1c,
-0x46, 0x06, 0x02, 0x01, 0x58, 0x00, 0x09, 0x20, 0x3f, 0xef, 0xfa, 0xd0, 0x46, 0x29, 0xfd, 0xfe,
-0x04, 0x60, 0x00, 0x00, 0x40, 0x10, 0x78, 0x00, 0x58, 0x21, 0x09, 0x54, 0x40, 0x50, 0x88, 0x00,
-0x14, 0x62, 0x80, 0x00, 0x46, 0x66, 0x02, 0x01, 0x50, 0x00, 0x00, 0x04, 0x58, 0x63, 0x09, 0x60,
-0x4c, 0x03, 0x7f, 0xec, 0x49, 0xff, 0xf1, 0x68, 0x3c, 0x4d, 0xf9, 0x1d, 0x46, 0x08, 0x10, 0x60,
-0x14, 0x40, 0x00, 0x02, 0x51, 0xff, 0x80, 0x1c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xa0, 0xbc, 0x46, 0x18, 0x18, 0x00, 0x3e, 0x6f, 0x83, 0x48, 0x44, 0x20, 0x00, 0x00,
-0x58, 0x10, 0x80, 0x07, 0x44, 0x00, 0x00, 0x6c, 0x3e, 0x7f, 0x83, 0x84, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x4b, 0xe0, 0x1c, 0x01, 0x42, 0x10, 0x5c, 0x08,
-0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x1c, 0x01, 0x3c, 0x1d, 0xf9, 0x8b, 0x44, 0x80, 0x00, 0x0c,
-0x42, 0x30, 0xa0, 0x24, 0x3e, 0x2f, 0xd6, 0xac, 0x40, 0x51, 0x88, 0x00, 0x40, 0x00, 0x28, 0x08,
-0x40, 0x00, 0x28, 0x09, 0x04, 0x42, 0x80, 0x02, 0x44, 0x20, 0x00, 0x00, 0x40, 0x12, 0x58, 0x08,
-0x40, 0x10, 0x04, 0x04, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x70, 0x4b, 0xe0, 0x1c, 0x01, 0x42, 0x10, 0x7c, 0x08, 0x44, 0x20, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x70, 0x4b, 0xe0, 0x18, 0x01, 0x58, 0x04, 0x00, 0x00, 0x49, 0xff, 0x8c, 0x54,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x4b, 0xe0, 0x1c, 0x01, 0x42, 0x10, 0x7c, 0x09,
-0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
-0x58, 0x20, 0x80, 0x00, 0x44, 0x00, 0x00, 0x6c, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x00,
-0x44, 0x00, 0x08, 0x34, 0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x80, 0x1c, 0x08, 0x40, 0x44, 0x6c, 0x09,
-0x3c, 0x4f, 0xff, 0x23, 0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x1c, 0x01,
-0x42, 0x10, 0x54, 0x08, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x1c, 0x01, 0x3c, 0x3d, 0xff, 0x23,
-0x44, 0x2f, 0x07, 0xff, 0x40, 0x11, 0xac, 0x08, 0x40, 0x50, 0x80, 0x13, 0x40, 0x00, 0x08, 0x02,
-0x40, 0x10, 0x14, 0x04, 0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x18, 0x01,
-0x44, 0x10, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x1c, 0x01, 0x42, 0x10, 0x28, 0x09,
-0x44, 0x20, 0x00, 0x01, 0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x18, 0x01, 0x44, 0x10, 0x00, 0x01,
-0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x1c, 0x01, 0x3c, 0x3d, 0xff, 0x23, 0x40, 0x00, 0x14, 0x09,
-0x40, 0x00, 0x14, 0x08, 0x54, 0x11, 0x80, 0x1f, 0x40, 0x10, 0x04, 0x04, 0x44, 0x20, 0x00, 0x01,
-0x44, 0x00, 0x00, 0xe4, 0x4b, 0xe0, 0x18, 0x01, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x4e, 0x03, 0x00, 0x04, 0x49, 0xff, 0xff, 0x3a,
-0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
-0x58, 0x60, 0x00, 0x00, 0x58, 0x71, 0x00, 0x00, 0x4e, 0x13, 0x00, 0x14, 0x3e, 0x0f, 0xda, 0xc0,
-0x38, 0x10, 0x0b, 0x02, 0x3e, 0x8f, 0x83, 0x48, 0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x20, 0x01, 0x40, 0x03, 0x8c, 0x08, 0x3e, 0x1f, 0xda, 0xc0, 0x48, 0x00, 0x00, 0x16,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x1c, 0x3e, 0x3f, 0xdb, 0x40, 0x38, 0x11, 0x9f, 0x02,
-0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00, 0x3e, 0x8f, 0x83, 0x48, 0x4b, 0xe0, 0x20, 0x01,
-0x40, 0x03, 0x8c, 0x08, 0x3e, 0x1f, 0xdb, 0x40, 0x40, 0x40, 0x04, 0x00, 0x04, 0x12, 0x00, 0x01,
-0x44, 0x00, 0x00, 0x70, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x46, 0x18, 0x20, 0x24,
-0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xef, 0x70,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x8b, 0x90, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c,
-0x49, 0xff, 0xef, 0x84, 0x40, 0x50, 0x70, 0x09, 0x4e, 0x53, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x04,
-0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xef, 0x58,
-0x44, 0x00, 0x04, 0x68, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xef, 0x70, 0x54, 0x73, 0x80, 0x01,
-0x40, 0xa0, 0x00, 0x13, 0x4e, 0x73, 0x00, 0x0e, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x28,
-0x49, 0xff, 0xef, 0x64, 0x40, 0x00, 0x40, 0x09, 0x40, 0x00, 0x40, 0x08, 0x48, 0x00, 0x00, 0x0c,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x28, 0x49, 0xff, 0xef, 0x58, 0x40, 0x00, 0x00, 0x13,
-0x40, 0xa5, 0x40, 0x08, 0x40, 0x10, 0x28, 0x04, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x04, 0x28,
-0x49, 0xff, 0xef, 0x2e, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
+0x40, 0x94, 0x80, 0x10, 0x14, 0x13, 0x02, 0x44, 0x4e, 0xa3, 0x02, 0x4e, 0x46, 0x06, 0x02, 0x01,
+0x58, 0x00, 0x09, 0xac, 0x50, 0x40, 0x70, 0x00, 0x50, 0x52, 0x00, 0x04, 0x14, 0xaf, 0x80, 0x02,
+0x14, 0x0f, 0x80, 0x03, 0x14, 0x4f, 0x80, 0x04, 0x14, 0x5f, 0x80, 0x05, 0x14, 0xaf, 0x80, 0x01,
+0x4f, 0xc3, 0x00, 0x0c, 0x05, 0xef, 0x80, 0x04, 0x46, 0xa0, 0x0f, 0xf0, 0x04, 0x0f, 0x00, 0x00,
+0x40, 0x20, 0x28, 0x02, 0x48, 0x00, 0x00, 0x0e, 0x44, 0x50, 0x00, 0x01, 0x4d, 0xc2, 0xc0, 0x10,
+0x04, 0x2f, 0x80, 0x03, 0x46, 0x10, 0x0f, 0xf0, 0x04, 0x01, 0x00, 0x00, 0x40, 0x20, 0x04, 0x02,
+0x40, 0x31, 0x40, 0x09, 0x14, 0x3f, 0x80, 0x01, 0x54, 0xa0, 0x00, 0xff, 0x5c, 0xf5, 0x00, 0x41,
+0x4e, 0xf3, 0x00, 0x06, 0x50, 0x94, 0x80, 0x0a, 0x48, 0x00, 0x00, 0xaa, 0x5c, 0xf5, 0x00, 0x08,
+0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x08, 0x48, 0x00, 0x00, 0xa2, 0x5c, 0xf5, 0x00, 0x10,
+0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x06, 0x48, 0x00, 0x00, 0x9a, 0x5c, 0xf5, 0x00, 0x20,
+0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x04, 0x48, 0x00, 0x00, 0x92, 0x5c, 0xf5, 0x00, 0x30,
+0x4e, 0xf2, 0x00, 0x06, 0x50, 0x94, 0x80, 0x02, 0x48, 0x00, 0x00, 0x8a, 0x4f, 0xc3, 0x00, 0x22,
+0x46, 0x26, 0x02, 0x00, 0x58, 0x21, 0x09, 0xac, 0x58, 0x0e, 0x00, 0x00, 0x04, 0xa1, 0x00, 0x00,
+0x50, 0x30, 0x00, 0x01, 0x54, 0xa5, 0x00, 0xff, 0x50, 0x45, 0x7f, 0xd0, 0x54, 0x52, 0x00, 0xff,
+0x50, 0x21, 0x7f, 0xfc, 0x5c, 0xf2, 0x80, 0x10, 0x4e, 0xf2, 0x00, 0x04, 0x54, 0x01, 0x80, 0xff,
+0x47, 0xe6, 0x02, 0x00, 0x59, 0xef, 0x09, 0x6c, 0x4c, 0x2f, 0x7f, 0xea, 0x48, 0x00, 0x00, 0x24,
+0x44, 0x00, 0x00, 0x01, 0x4d, 0xc0, 0x40, 0x24, 0x46, 0x26, 0x02, 0x01, 0x58, 0x21, 0x09, 0xac,
+0x44, 0x00, 0x00, 0x00, 0x04, 0x31, 0x00, 0x00, 0x50, 0x21, 0x7f, 0xfc, 0x54, 0xa1, 0x80, 0xff,
+0x50, 0x15, 0x7f, 0xd0, 0x54, 0x60, 0x80, 0xff, 0x50, 0x30, 0x00, 0x01, 0x5c, 0xf3, 0x00, 0x10,
+0x4e, 0xf2, 0x00, 0x04, 0x54, 0x01, 0x80, 0xff, 0x46, 0x56, 0x02, 0x01, 0x58, 0x52, 0x89, 0x6c,
+0x4c, 0x22, 0xff, 0xea, 0x5c, 0xf0, 0x00, 0x03, 0x4e, 0xf2, 0x00, 0x10, 0x04, 0x0f, 0x80, 0x01,
+0x44, 0x20, 0x00, 0x7f, 0x4c, 0x01, 0x00, 0x3e, 0x50, 0x51, 0x00, 0x02, 0x4c, 0x02, 0x80, 0x3a,
+0x44, 0x50, 0x00, 0x01, 0x48, 0x00, 0x01, 0x3a, 0x44, 0x70, 0x00, 0x03, 0x4c, 0x03, 0xc0, 0x06,
+0x50, 0x94, 0xff, 0xfe, 0x48, 0x00, 0x00, 0x2c, 0x44, 0x80, 0x00, 0x04, 0x4c, 0x04, 0x40, 0x06,
+0x50, 0x94, 0xff, 0xfc, 0x48, 0x00, 0x00, 0x24, 0x45, 0xe0, 0x00, 0x05, 0x4c, 0x0f, 0x40, 0x06,
+0x50, 0x94, 0xff, 0xf8, 0x48, 0x00, 0x00, 0x1c, 0x44, 0x60, 0x00, 0x06, 0x4c, 0x03, 0x40, 0x06,
+0x50, 0x94, 0xff, 0xf4, 0x48, 0x00, 0x00, 0x14, 0x44, 0x10, 0x00, 0x07, 0x4c, 0x00, 0xc0, 0x06,
+0x50, 0x94, 0xff, 0xf0, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x30, 0x00, 0x08, 0x4c, 0x01, 0xc0, 0x06,
+0x50, 0x94, 0xff, 0xec, 0x48, 0x00, 0x00, 0x04, 0x50, 0x94, 0xff, 0xe8, 0x40, 0x94, 0x80, 0x10,
+0x58, 0x1e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf3, 0xd4, 0x40, 0x50, 0x20, 0x08,
+0x40, 0x02, 0xf0, 0x09, 0x54, 0x10, 0x00, 0xff, 0x40, 0x70, 0x00, 0x10, 0x44, 0x80, 0x00, 0x00,
+0x54, 0x54, 0x00, 0xff, 0x50, 0x34, 0x80, 0x08, 0x50, 0x23, 0xff, 0xff, 0x4c, 0x12, 0xc0, 0x10,
+0x5e, 0xf4, 0xff, 0xe1, 0x4e, 0xf3, 0x00, 0x06, 0x44, 0x70, 0x00, 0x00, 0x48, 0x00, 0x00, 0x16,
+0x44, 0x70, 0x00, 0x00, 0x44, 0x9f, 0xff, 0xe1, 0x48, 0x00, 0x00, 0x10, 0x5e, 0xf4, 0xff, 0xe1,
+0x4e, 0xf2, 0x00, 0x0c, 0x40, 0x91, 0x80, 0x10, 0x40, 0x71, 0x00, 0x10, 0x50, 0x84, 0x00, 0x01,
+0x5e, 0xf4, 0xff, 0xe1, 0x4e, 0xf3, 0xff, 0xde, 0x44, 0x50, 0x00, 0x0f, 0x50, 0x14, 0xff, 0xf8,
+0x50, 0x03, 0x80, 0x01, 0x4c, 0x72, 0xc0, 0x08, 0x45, 0xe0, 0x00, 0x1f, 0x42, 0x94, 0xf8, 0x01,
+0x48, 0x00, 0x00, 0x0e, 0x5e, 0xf4, 0x80, 0x20, 0x4e, 0xf3, 0x00, 0x0a, 0x40, 0x90, 0x80, 0x10,
+0x40, 0x70, 0x00, 0x10, 0x5e, 0xf4, 0x80, 0x20, 0x4e, 0xf2, 0xff, 0xe8, 0x46, 0x20, 0x0f, 0x00,
+0x54, 0x43, 0x80, 0xff, 0x44, 0x00, 0x00, 0x70, 0x58, 0x1e, 0x00, 0x00, 0x50, 0x32, 0x80, 0x05,
+0x49, 0xff, 0xf3, 0xa6, 0x4f, 0xc3, 0x00, 0x10, 0x46, 0x10, 0xff, 0x00, 0x40, 0x64, 0xd0, 0x08,
+0x40, 0x73, 0x04, 0x02, 0x46, 0x06, 0x02, 0x00, 0x42, 0x23, 0xf8, 0x08, 0x58, 0x00, 0x0d, 0x24,
+0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x01, 0x4d, 0xc2, 0xc0, 0x10, 0x46, 0x00, 0xff, 0x00,
+0x40, 0x24, 0xd0, 0x08, 0x40, 0x51, 0x00, 0x02, 0x46, 0x06, 0x02, 0x01, 0x42, 0x22, 0xf8, 0x08,
+0x58, 0x00, 0x0d, 0x24, 0x14, 0x20, 0x00, 0x00, 0x46, 0x06, 0x02, 0x04, 0x46, 0x26, 0x02, 0x00,
+0x58, 0x71, 0x00, 0x00, 0x58, 0x60, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00, 0x58, 0x81, 0x00, 0x00,
+0x44, 0x40, 0x00, 0x03, 0x44, 0x50, 0x00, 0x10, 0x44, 0x31, 0x00, 0x68, 0x45, 0xe0, 0x00, 0x06,
+0x14, 0x40, 0x00, 0x50, 0x14, 0x51, 0x00, 0xe0, 0x14, 0x33, 0x80, 0xc0, 0x14, 0x13, 0x00, 0x40,
+0x15, 0xe4, 0x02, 0x44, 0x44, 0x40, 0x00, 0x7f, 0x04, 0x2f, 0x80, 0x01, 0x4c, 0x22, 0x00, 0x10,
+0x50, 0x52, 0x00, 0x02, 0x4c, 0x22, 0x80, 0x0c, 0x46, 0x06, 0x02, 0x00, 0x46, 0x22, 0x03, 0xf0,
+0x58, 0x00, 0x09, 0x0c, 0x58, 0x21, 0x06, 0x06, 0x48, 0x00, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00,
+0x46, 0x21, 0x03, 0xf0, 0x58, 0x00, 0x09, 0x0c, 0x58, 0x21, 0x06, 0x06, 0x58, 0x73, 0x00, 0x00,
+0x46, 0x80, 0x60, 0x70, 0x47, 0xe6, 0x02, 0x00, 0x46, 0x10, 0x00, 0x80, 0x58, 0x10, 0x87, 0x01,
+0x14, 0x20, 0x00, 0x00, 0x14, 0x83, 0x80, 0x08, 0x14, 0x1f, 0x02, 0x40, 0x44, 0x60, 0x00, 0x00,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x8e, 0x78, 0x04, 0x0f, 0x80, 0x05, 0x04, 0x50, 0x00, 0x00,
+0x42, 0x22, 0xf4, 0x0b, 0x4e, 0x23, 0x00, 0x12, 0x44, 0x50, 0x27, 0x11, 0x4c, 0x62, 0x80, 0x06,
+0x50, 0x63, 0x00, 0x01, 0x48, 0xff, 0xff, 0xee, 0x3e, 0x0f, 0xd4, 0x10, 0x3e, 0x1f, 0xdc, 0x64,
+0x44, 0x20, 0x17, 0x5c, 0x49, 0xff, 0x7b, 0x42, 0x04, 0x6f, 0x80, 0x02, 0x46, 0x16, 0x02, 0x00,
+0x50, 0x43, 0x00, 0x01, 0x46, 0x00, 0x00, 0x80, 0x58, 0x50, 0x80, 0x00, 0x58, 0x00, 0x07, 0x00,
+0x55, 0xe2, 0x00, 0xff, 0x44, 0x31, 0x00, 0x06, 0x44, 0x26, 0x07, 0x00, 0x44, 0x60, 0x00, 0x04,
+0x15, 0xef, 0x80, 0x02, 0x14, 0x00, 0x82, 0x40, 0x14, 0x32, 0x82, 0x44, 0x14, 0x20, 0x82, 0x40,
+0x4d, 0xe3, 0x7e, 0x30, 0x44, 0x50, 0x00, 0x00, 0x4f, 0xc3, 0x00, 0x20, 0x46, 0x46, 0x02, 0x00,
+0x58, 0x42, 0x09, 0xac, 0x58, 0x3e, 0x00, 0x00, 0x04, 0x22, 0x00, 0x00, 0x50, 0x01, 0x80, 0x01,
+0x50, 0x11, 0x7f, 0xd0, 0x55, 0xe0, 0x80, 0xff, 0x50, 0x42, 0x7f, 0xfc, 0x5c, 0xff, 0x00, 0x10,
+0x4e, 0xf2, 0x00, 0x04, 0x54, 0x30, 0x00, 0xff, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x09, 0x6c,
+0x4c, 0x40, 0x7f, 0xec, 0x48, 0x00, 0x00, 0x22, 0x44, 0x30, 0x00, 0x01, 0x4d, 0xc1, 0xc0, 0x4e,
+0x46, 0x46, 0x02, 0x01, 0x58, 0x42, 0x09, 0xac, 0x44, 0x30, 0x00, 0x00, 0x04, 0x12, 0x00, 0x00,
+0x50, 0x01, 0x80, 0x01, 0x51, 0xe0, 0xff, 0xd0, 0x54, 0x6f, 0x00, 0xff, 0x50, 0x42, 0x7f, 0xfc,
+0x5c, 0xf3, 0x00, 0x10, 0x4e, 0xf2, 0x00, 0x04, 0x54, 0x30, 0x00, 0xff, 0x46, 0x26, 0x02, 0x01,
+0x58, 0x21, 0x09, 0x6c, 0x4c, 0x41, 0x7f, 0xec, 0x5c, 0xf1, 0x80, 0x03, 0x4e, 0xf3, 0x00, 0x14,
+0x4e, 0x53, 0x00, 0x12, 0x4f, 0xc3, 0x00, 0x08, 0x44, 0x40, 0x00, 0x01, 0x3e, 0x47, 0xe3, 0xe4,
+0x48, 0x00, 0x00, 0x24, 0x44, 0x00, 0x00, 0x01, 0x4d, 0xc0, 0x40, 0x20, 0x3f, 0xc7, 0xe3, 0xe5,
+0x48, 0x00, 0x00, 0x1c, 0x4f, 0xc3, 0x00, 0x06, 0x3f, 0xc7, 0xe3, 0xe4, 0x48, 0x00, 0x00, 0x16,
+0x44, 0x20, 0x00, 0x01, 0x4d, 0xc1, 0x40, 0x12, 0x44, 0x40, 0x00, 0x00, 0x3e, 0x47, 0xe3, 0xe5,
+0x48, 0x00, 0x00, 0x0c, 0x2e, 0x37, 0xe0, 0x01, 0x54, 0x61, 0x80, 0x0f, 0x40, 0x03, 0x08, 0x08,
+0x40, 0x94, 0x80, 0x00, 0x40, 0x94, 0x80, 0x10, 0x58, 0x1e, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70,
+0x49, 0xff, 0xf2, 0x60, 0x46, 0x30, 0x0f, 0x00, 0x40, 0x60, 0x0c, 0x02, 0x40, 0x03, 0x44, 0x09,
+0x40, 0x44, 0x80, 0x00, 0x3e, 0x6f, 0xf8, 0x70, 0x50, 0x92, 0x7f, 0xc2, 0x40, 0x5e, 0x18, 0x00,
+0x10, 0x92, 0x83, 0x9c, 0x46, 0x26, 0x02, 0x00, 0x04, 0x11, 0x02, 0x44, 0x54, 0x40, 0x80, 0x0f,
+0x4f, 0xc3, 0x00, 0x38, 0x46, 0x11, 0x80, 0x80, 0x58, 0x10, 0x82, 0x48, 0x41, 0xe2, 0x04, 0x00,
+0x46, 0x36, 0x02, 0x00, 0x40, 0x5f, 0x08, 0x08, 0x58, 0x31, 0x89, 0x20, 0x58, 0x1e, 0x00, 0x00,
+0x05, 0xe1, 0x80, 0x00, 0x46, 0x0f, 0xf0, 0x0f, 0x58, 0x00, 0x0f, 0xff, 0x40, 0x2f, 0x00, 0x02,
+0x40, 0x0f, 0x20, 0x08, 0x40, 0x00, 0x60, 0x09, 0x44, 0x60, 0x00, 0x7f, 0x4c, 0x03, 0x00, 0x06,
+0x45, 0xe0, 0x00, 0x81, 0x4c, 0x0f, 0x40, 0x04, 0x14, 0x21, 0x80, 0x00, 0x40, 0xf0, 0x90, 0x06,
+0x4e, 0xf2, 0x00, 0x06, 0x04, 0x22, 0x80, 0x00, 0x14, 0x21, 0x80, 0x00, 0x50, 0x10, 0x80, 0x01,
+0x44, 0x60, 0x00, 0x10, 0x50, 0x31, 0x80, 0x04, 0x4c, 0x13, 0x7f, 0xdc, 0x48, 0x00, 0x00, 0x3c,
+0x44, 0x50, 0x00, 0x01, 0x4d, 0xc2, 0xc0, 0x6e, 0x46, 0x11, 0x80, 0x80, 0x58, 0x10, 0x86, 0x48,
+0x40, 0x32, 0x04, 0x00, 0x46, 0x06, 0x02, 0x01, 0x40, 0x31, 0x88, 0x08, 0x58, 0x00, 0x09, 0x20,
+0x44, 0x10, 0x00, 0x00, 0x05, 0xe0, 0x00, 0x00, 0x46, 0x2f, 0xf0, 0x0f, 0x58, 0x21, 0x0f, 0xff,
+0x40, 0x5f, 0x08, 0x02, 0x40, 0x2f, 0x20, 0x08, 0x40, 0x21, 0x60, 0x09, 0x45, 0xe0, 0x00, 0x7f,
+0x4c, 0x2f, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x81, 0x4c, 0x2f, 0x40, 0x04, 0x14, 0x50, 0x00, 0x00,
+0x40, 0xf0, 0x90, 0x06, 0x4e, 0xf2, 0x00, 0x06, 0x04, 0x51, 0x80, 0x00, 0x14, 0x50, 0x00, 0x00,
+0x50, 0x10, 0x80, 0x01, 0x44, 0x60, 0x00, 0x10, 0x50, 0x00, 0x00, 0x04, 0x4c, 0x13, 0x7f, 0xdc,
+0x48, 0x00, 0x00, 0x1e, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x09, 0x20, 0x3f, 0xef, 0xf8, 0x70,
+0x46, 0x49, 0xfd, 0xff, 0x04, 0x20, 0x00, 0x00, 0x40, 0x10, 0x78, 0x00, 0x58, 0x42, 0x09, 0x14,
+0x46, 0x66, 0x02, 0x00, 0x40, 0x30, 0x90, 0x00, 0x50, 0x00, 0x00, 0x04, 0x58, 0x63, 0x09, 0x60,
+0x14, 0x21, 0x80, 0x00, 0x4c, 0x03, 0x7f, 0xec, 0x48, 0x00, 0x00, 0x1c, 0x46, 0x06, 0x02, 0x01,
+0x58, 0x00, 0x09, 0x20, 0x3e, 0x1f, 0xf8, 0x70, 0x46, 0x39, 0xfd, 0xfe, 0x04, 0x60, 0x00, 0x00,
+0x40, 0x20, 0x04, 0x00, 0x58, 0x31, 0x89, 0x54, 0x40, 0x51, 0x0c, 0x00, 0x14, 0x62, 0x80, 0x00,
+0x46, 0x66, 0x02, 0x01, 0x50, 0x00, 0x00, 0x04, 0x58, 0x63, 0x09, 0x60, 0x4c, 0x03, 0x7f, 0xec,
+0x49, 0xff, 0xf2, 0xa2, 0x3c, 0x4d, 0xf8, 0x85, 0x46, 0x08, 0x10, 0x60, 0x14, 0x40, 0x00, 0x02,
+0x51, 0xff, 0x80, 0x1c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc,
+0x46, 0x18, 0x18, 0x00, 0x44, 0x20, 0x00, 0x00, 0x58, 0x10, 0x80, 0x07, 0x44, 0x00, 0x00, 0x6c,
+0x49, 0xff, 0xf1, 0x6a, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x49, 0xff, 0xf1, 0x82,
+0x42, 0x10, 0x5c, 0x08, 0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x49, 0xff, 0xf1, 0x5c,
+0x3c, 0x6d, 0xf8, 0xf3, 0x44, 0x80, 0x00, 0x0c, 0x42, 0x43, 0x20, 0x24, 0x3e, 0x1f, 0xd4, 0x58,
+0x40, 0x52, 0x04, 0x00, 0x04, 0x42, 0x80, 0x02, 0x46, 0x2f, 0xfc, 0x00, 0x44, 0x30, 0x00, 0x16,
+0x44, 0x00, 0x00, 0xe4, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xf1, 0x8a, 0x46, 0x18, 0x00, 0x00,
+0x44, 0x20, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xf1, 0xa4, 0x58, 0x04, 0x00, 0x00,
+0x49, 0xff, 0x8c, 0xc2, 0x46, 0x18, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x44, 0x20, 0x00, 0x00,
+0x49, 0xff, 0xf1, 0xb0, 0x44, 0x10, 0x00, 0x00, 0x58, 0x20, 0x80, 0x00, 0x44, 0x00, 0x00, 0x6c,
+0x49, 0xff, 0xf1, 0x2a, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x08, 0x34, 0x49, 0xff, 0xf1, 0x42,
+0x40, 0x00, 0x1c, 0x08, 0x40, 0x30, 0x6c, 0x09, 0x3e, 0x7f, 0xf8, 0x70, 0x14, 0x33, 0x80, 0x6f,
+0x46, 0x10, 0x02, 0x00, 0x44, 0x00, 0x00, 0xe4, 0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xf1, 0x7a,
+0x04, 0x43, 0x80, 0x6f, 0x44, 0x30, 0x00, 0x0b, 0x44, 0x00, 0x00, 0xe4, 0x44, 0x10, 0x00, 0x01,
+0x44, 0x20, 0xf8, 0x00, 0x49, 0xff, 0xf1, 0x4c, 0x44, 0x00, 0x00, 0xe4, 0x44, 0x10, 0x04, 0x00,
+0x44, 0x20, 0x00, 0x01, 0x49, 0xff, 0xf1, 0x7e, 0x04, 0x43, 0x80, 0x6f, 0x44, 0x00, 0x00, 0xe4,
+0x44, 0x10, 0x00, 0x01, 0x44, 0x20, 0x00, 0x1f, 0x44, 0x30, 0x00, 0x00, 0x49, 0xff, 0xf1, 0x38,
+0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3b, 0xff, 0xfc, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x4e, 0x03, 0x00, 0x04, 0x49, 0xff, 0xff, 0x74, 0x51, 0xff, 0x80, 0x04, 0x3b, 0xff, 0xfc, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x58, 0x80, 0x80, 0x00, 0x58, 0x60, 0x00, 0x00,
+0x58, 0x71, 0x00, 0x00, 0x4e, 0x13, 0x00, 0x14, 0x3e, 0x0f, 0xd8, 0x6c, 0x38, 0x10, 0x0b, 0x02,
+0x3e, 0x9f, 0x84, 0x80, 0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01,
+0x40, 0x03, 0x8c, 0x08, 0x3e, 0x1f, 0xd8, 0x6c, 0x48, 0x00, 0x00, 0x16, 0x44, 0x10, 0x00, 0x01,
+0x4c, 0x80, 0xc0, 0x1c, 0x3e, 0x2f, 0xd8, 0xec, 0x38, 0x11, 0x1f, 0x02, 0x44, 0x00, 0x00, 0xa0,
+0x58, 0x23, 0x00, 0x00, 0x3e, 0x9f, 0x84, 0x80, 0x4b, 0xe0, 0x24, 0x01, 0x40, 0x03, 0x8c, 0x08,
+0x3e, 0x1f, 0xd8, 0xec, 0x40, 0x30, 0x04, 0x00, 0x04, 0x11, 0x80, 0x01, 0x44, 0x00, 0x00, 0x70,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01, 0x46, 0x18, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0,
+0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xf0, 0x9e, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x8c, 0x22, 0x44, 0x00, 0x04, 0x1c, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf0, 0xb2,
+0x40, 0x40, 0x70, 0x09, 0x4e, 0x43, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0,
+0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xf0, 0x86, 0x44, 0x00, 0x04, 0x68,
+0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf0, 0x9e, 0x40, 0x40, 0x00, 0x13, 0x4e, 0x82, 0x00, 0x0a,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x82, 0xc0, 0x06, 0x44, 0x10, 0x04, 0x48, 0x48, 0x00, 0x00, 0x04,
+0x44, 0x10, 0x04, 0x28, 0x40, 0x23, 0x84, 0x09, 0x40, 0x01, 0x08, 0x08, 0x54, 0x33, 0x80, 0x01,
+0x40, 0x00, 0x80, 0x00, 0x4e, 0x33, 0x00, 0x08, 0x58, 0x13, 0x00, 0x00, 0x44, 0x20, 0xff, 0xff,
+0x48, 0x00, 0x00, 0x08, 0x58, 0x13, 0x00, 0x00, 0x44, 0x2f, 0x00, 0x00, 0x44, 0x30, 0x00, 0x10,
+0x49, 0xff, 0xf0, 0x9e, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc,
0x51, 0xff, 0xff, 0xfc, 0x46, 0x18, 0x03, 0x00, 0x58, 0x20, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00,
-0x58, 0x10, 0x80, 0x08, 0x44, 0x00, 0x07, 0xdc, 0x49, 0xff, 0xef, 0x1a, 0x44, 0x00, 0x00, 0x02,
-0x49, 0xff, 0x8b, 0x3a, 0x46, 0x10, 0x03, 0x00, 0x58, 0x10, 0x80, 0x08, 0x58, 0x23, 0x80, 0x00,
-0x44, 0x00, 0x07, 0xdc, 0x49, 0xff, 0xef, 0x0c, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x40, 0xa0, 0x00, 0x13, 0x58, 0x60, 0x80, 0x00,
-0x4e, 0xa3, 0x00, 0x0c, 0x3e, 0x0f, 0xc9, 0x94, 0x3e, 0x1f, 0xd6, 0x30, 0x44, 0x20, 0x08, 0xc8,
-0x49, 0xff, 0x77, 0xfc, 0x48, 0x00, 0x00, 0x00, 0x49, 0xff, 0xc4, 0x40, 0x3e, 0x7f, 0x83, 0x84,
-0x58, 0x13, 0x00, 0x00, 0x50, 0xa5, 0x7f, 0xff, 0x44, 0x00, 0x00, 0xb0, 0x3c, 0x9d, 0xf9, 0x8b,
-0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x40, 0x00, 0x0f, 0x58, 0x35, 0x00, 0x00, 0x42, 0x33, 0x10, 0x73,
-0x3e, 0x1f, 0xfa, 0xd0, 0x38, 0x50, 0x8d, 0x01, 0x46, 0x2f, 0x80, 0xff, 0x46, 0x40, 0x7f, 0x00,
-0x40, 0x32, 0xd0, 0x08, 0x58, 0x21, 0x0f, 0xff, 0x40, 0x81, 0x90, 0x02, 0x40, 0x00, 0x08, 0x02,
-0x40, 0x10, 0x20, 0x04, 0x58, 0x23, 0x00, 0x00, 0x3e, 0x8f, 0x83, 0x48, 0x44, 0x00, 0x00, 0xb0,
-0x40, 0xa5, 0x08, 0x08, 0x4b, 0xe0, 0x20, 0x01, 0x40, 0x95, 0x24, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x1c, 0x01, 0x50, 0x94, 0x80, 0x01, 0x3e, 0x1f, 0xd6, 0xd0,
-0x38, 0x50, 0xa7, 0x01, 0x44, 0x43, 0xff, 0xf0, 0x40, 0x32, 0x90, 0x08, 0x44, 0x2c, 0x00, 0x0f,
-0x40, 0x11, 0x90, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x10, 0x04, 0x04, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x20, 0x01, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c,
-0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x94, 0x8c, 0x08, 0x3e, 0x5f, 0xd6, 0xd0, 0x40, 0x94, 0x94, 0x00,
-0x02, 0x44, 0x80, 0x01, 0x46, 0x2c, 0x00, 0xff, 0x46, 0x33, 0xff, 0x00, 0x40, 0x12, 0x50, 0x08,
-0x58, 0x21, 0x0f, 0xff, 0x40, 0x50, 0x8c, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x10, 0x14, 0x04,
-0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x20, 0x01, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x1c, 0x01, 0x04, 0x34, 0x80, 0x01, 0x40, 0x00, 0x50, 0x09,
-0x40, 0x00, 0x50, 0x08, 0x40, 0x11, 0xb0, 0x08, 0x40, 0x10, 0xb0, 0x09, 0x40, 0x10, 0x04, 0x04,
-0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x20, 0x01, 0x46, 0x1f, 0xff, 0x0c,
-0x58, 0x10, 0x80, 0x10, 0x44, 0x00, 0x00, 0xb4, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01,
-0x3e, 0x8e, 0xbb, 0x90, 0x44, 0x00, 0x00, 0x64, 0x4b, 0xe0, 0x20, 0x01, 0x58, 0x94, 0x00, 0x00,
-0x44, 0x80, 0x00, 0x00, 0x44, 0x00, 0x00, 0x64, 0x4b, 0xe0, 0x24, 0x01, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x04, 0x24, 0x4b, 0xe0, 0x1c, 0x01, 0x42, 0x00, 0x68, 0x0b, 0x4e, 0x03, 0x00, 0x12,
-0x44, 0x50, 0x00, 0x0b, 0x4c, 0x82, 0x80, 0x06, 0x50, 0x84, 0x00, 0x01, 0x48, 0xff, 0xff, 0xec,
-0x3e, 0x0f, 0xd6, 0x64, 0x3e, 0x1f, 0xe1, 0x64, 0x44, 0x20, 0x09, 0x0b, 0x49, 0xff, 0x77, 0x3e,
+0x58, 0x10, 0x80, 0x08, 0x44, 0x00, 0x07, 0xdc, 0x49, 0xff, 0xf0, 0x46, 0x44, 0x00, 0x00, 0x02,
+0x49, 0xff, 0x8b, 0xca, 0x46, 0x10, 0x03, 0x00, 0x58, 0x10, 0x80, 0x08, 0x58, 0x23, 0x80, 0x00,
+0x44, 0x00, 0x07, 0xdc, 0x49, 0xff, 0xf0, 0x38, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x40, 0x00, 0x00, 0x13,
+0x58, 0x60, 0x80, 0x00, 0x4e, 0x03, 0x00, 0x0c, 0x3e, 0x0f, 0xc7, 0x40, 0x3e, 0x1f, 0xd3, 0xdc,
+0x44, 0x20, 0x09, 0x12, 0x49, 0xff, 0x78, 0x8a, 0x48, 0x00, 0x00, 0x00, 0x50, 0x90, 0x7f, 0xff,
+0x49, 0xff, 0xc5, 0x12, 0x44, 0x20, 0x00, 0x0f, 0x58, 0x04, 0x80, 0x00, 0x42, 0x03, 0x08, 0x73,
+0x3e, 0x7f, 0xf8, 0x70, 0x38, 0x43, 0x81, 0x01, 0x46, 0x20, 0x7f, 0x00, 0x3c, 0x8d, 0xf8, 0xf3,
+0x3e, 0x7f, 0x85, 0x08, 0x44, 0x00, 0x00, 0xb0, 0x58, 0x13, 0x00, 0x00, 0x44, 0x30, 0x00, 0x14,
+0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x44, 0x88, 0x08, 0x40, 0x32, 0x20, 0x00, 0x50, 0x91, 0x80, 0x01,
+0x3e, 0x2f, 0xd4, 0x7c, 0x38, 0x41, 0x27, 0x01, 0x44, 0x00, 0x00, 0xb0, 0x58, 0x13, 0x00, 0x00,
+0x44, 0x23, 0xff, 0xf0, 0x44, 0x30, 0x00, 0x04, 0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x04, 0x8c, 0x08,
+0x3e, 0x1f, 0xd4, 0x7c, 0x40, 0x80, 0x04, 0x00, 0x02, 0x44, 0x00, 0x01, 0x46, 0x23, 0xff, 0x00,
+0x44, 0x00, 0x01, 0x0c, 0x58, 0x13, 0x00, 0x00, 0x44, 0x30, 0x00, 0x14, 0x4b, 0xe0, 0x1c, 0x01,
+0x04, 0x44, 0x00, 0x01, 0x46, 0x20, 0x00, 0xff, 0x44, 0x30, 0x00, 0x00, 0x58, 0x21, 0x0f, 0xff,
+0x44, 0x00, 0x01, 0x0c, 0x58, 0x13, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x1f, 0xff, 0x0c,
+0x58, 0x10, 0x80, 0x10, 0x44, 0x00, 0x00, 0xb4, 0x58, 0x23, 0x00, 0x00, 0x3e, 0x7e, 0xbb, 0x90,
+0x49, 0xff, 0xef, 0xc2, 0x44, 0x00, 0x00, 0x64, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x93, 0x80, 0x00,
+0x44, 0x70, 0x00, 0x00, 0x44, 0x00, 0x00, 0x64, 0x4b, 0xe0, 0x24, 0x01, 0x58, 0x13, 0x00, 0x00,
+0x44, 0x00, 0x04, 0x24, 0x49, 0xff, 0xef, 0xce, 0x42, 0x30, 0x68, 0x0b, 0x4e, 0x33, 0x00, 0x12,
+0x44, 0x50, 0x00, 0x0b, 0x4c, 0x72, 0x80, 0x06, 0x50, 0x73, 0x80, 0x01, 0x48, 0xff, 0xff, 0xec,
+0x3e, 0x0f, 0xd4, 0x10, 0x3e, 0x1f, 0xdf, 0x10, 0x44, 0x20, 0x09, 0x55, 0x49, 0xff, 0x78, 0x06,
0x46, 0x13, 0xff, 0x0c, 0x58, 0x10, 0x80, 0x10, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb4,
-0x49, 0xff, 0xee, 0x2e, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc,
-0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x40, 0x81, 0x00, 0x13, 0x58, 0x70, 0x80, 0x00,
-0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x91, 0x80, 0x00, 0x49, 0xff, 0xff, 0x14,
-0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xee, 0x92, 0x58, 0x03, 0x80, 0x00,
-0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf0, 0xcc, 0x2e, 0x07, 0xe6, 0x20, 0x4e, 0x03, 0x00, 0x06,
-0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf8, 0x74, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x49, 0xff, 0xee, 0x7e, 0x58, 0x03, 0x80, 0x00, 0x58, 0x14, 0x80, 0x00, 0x49, 0xff, 0xf2, 0x08,
-0x58, 0x03, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xef, 0xd6, 0x51, 0xff, 0x80, 0x04,
-0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x44, 0x70, 0x00, 0x00, 0x49, 0xff, 0xf8, 0x46, 0x44, 0x80, 0x00, 0x01, 0x49, 0xff, 0xfd, 0x62,
-0x3e, 0x9f, 0xe4, 0x10, 0x48, 0x00, 0x00, 0x44, 0x4e, 0x73, 0x00, 0x06, 0x44, 0x80, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x08, 0x56, 0x03, 0x80, 0x01, 0x44, 0x10, 0x00, 0x00, 0x40, 0x80, 0x80, 0x1a,
-0x44, 0x60, 0x00, 0x00, 0x48, 0x00, 0x00, 0x26, 0x2e, 0x37, 0xe6, 0x20, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x32, 0x80, 0x0a, 0x38, 0x14, 0x9b, 0x02, 0x4e, 0x12, 0x00, 0x18, 0x00, 0x01, 0x00, 0x04,
-0x48, 0x00, 0x00, 0x0e, 0x38, 0x14, 0x9b, 0x02, 0x40, 0x23, 0x0c, 0x08, 0x3e, 0x5f, 0xe4, 0x10,
-0x40, 0x01, 0x14, 0x00, 0x4e, 0x12, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05, 0x4e, 0x02, 0x00, 0x06,
-0x58, 0x04, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01, 0x50, 0x63, 0x00, 0x01, 0x54, 0x63, 0x00, 0xff,
-0x2f, 0xe7, 0xe6, 0x3c, 0x40, 0x13, 0x0c, 0x08, 0x3e, 0x3f, 0xe4, 0x10, 0x40, 0x20, 0x8c, 0x00,
-0x40, 0xf3, 0x78, 0x06, 0x4e, 0xf3, 0xff, 0xd2, 0x50, 0x73, 0x80, 0x01, 0x3c, 0x4d, 0xf9, 0x8d,
-0x40, 0xf3, 0x90, 0x06, 0x4e, 0xf3, 0xff, 0xba, 0x49, 0xff, 0xf7, 0x88, 0x44, 0x80, 0x00, 0x07,
-0x3e, 0x7f, 0xe4, 0x0c, 0x44, 0x60, 0x00, 0x00, 0x12, 0x83, 0x80, 0x00, 0x3c, 0x8b, 0xf3, 0x09,
-0x3c, 0x8b, 0xf3, 0x08, 0x3c, 0x6f, 0xf9, 0x85, 0x58, 0x93, 0x80, 0x00, 0x48, 0x00, 0x00, 0x08,
-0x02, 0x24, 0x80, 0x00, 0x50, 0x63, 0x00, 0x01, 0x49, 0xff, 0xff, 0x52, 0x3d, 0xed, 0xf9, 0x8d,
-0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x58, 0x30, 0x80, 0x00, 0x40, 0xf3, 0x78, 0x06,
-0x4e, 0xf3, 0xff, 0xf0, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x46, 0x30, 0x02, 0x4b, 0x55, 0xc0, 0x00, 0xff,
-0x46, 0x20, 0x04, 0xc4, 0x58, 0x31, 0x8a, 0x58, 0x58, 0x21, 0x0b, 0x40, 0x5c, 0x5e, 0x00, 0x0f,
-0x58, 0x80, 0x80, 0x00, 0x40, 0x01, 0x94, 0x1b, 0x40, 0x01, 0x14, 0x1a, 0x58, 0x1e, 0x00, 0x00,
-0x58, 0x24, 0x00, 0x00, 0x58, 0x62, 0x00, 0x00, 0x49, 0xff, 0xb5, 0x72, 0x58, 0xa0, 0x00, 0x00,
-0x44, 0x50, 0x00, 0x04, 0x4c, 0x62, 0xc0, 0x04, 0x48, 0x00, 0x00, 0x06, 0x44, 0x50, 0x00, 0x05,
-0x4c, 0x62, 0xc0, 0x06, 0x58, 0x73, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x44, 0x70, 0x00, 0x00,
-0x40, 0x73, 0xa0, 0x06, 0x49, 0xff, 0xf7, 0x96, 0x44, 0x90, 0x00, 0x00, 0x3e, 0x4f, 0xe6, 0x34,
-0x3e, 0x5f, 0xa6, 0xf8, 0x48, 0x00, 0x00, 0x0e, 0x14, 0x4f, 0x80, 0x01, 0x14, 0x5f, 0x80, 0x00,
-0x50, 0x94, 0x80, 0x01, 0x4b, 0xe0, 0x14, 0x01, 0x04, 0x5f, 0x80, 0x00, 0x04, 0x4f, 0x80, 0x01,
-0x05, 0xe2, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00, 0x58, 0x13, 0x80, 0x00, 0x58, 0x25, 0x00, 0x00,
-0x58, 0x34, 0x00, 0x00, 0x40, 0xf4, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xe8, 0x58, 0x05, 0x00, 0x00,
-0x49, 0xff, 0xf2, 0x90, 0x49, 0xff, 0xf7, 0x02, 0x3e, 0x87, 0xe6, 0x18, 0x44, 0x00, 0x00, 0x01,
-0x3d, 0xcb, 0xf3, 0x08, 0x3c, 0xab, 0xf3, 0x09, 0x3c, 0x7f, 0xf9, 0x85, 0x3e, 0x67, 0xe6, 0x19,
-0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xd4, 0x14, 0x0f, 0x80, 0x01, 0x3c, 0x03, 0xf2, 0x06, 0x04, 0x1f, 0x80, 0x01,
-0x49, 0xff, 0xfd, 0xea, 0x04, 0x2f, 0x80, 0x01, 0x46, 0x18, 0x1b, 0xd6, 0x58, 0x10, 0x8c, 0x7f,
-0x44, 0x00, 0x00, 0x6c, 0x49, 0xff, 0xec, 0xe4, 0x04, 0x2f, 0x80, 0x01, 0x46, 0x18, 0xc0, 0x08,
-0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x49, 0xff, 0xec, 0xda, 0x04, 0x2f, 0x80, 0x01,
-0x46, 0x1f, 0x8b, 0x00, 0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48, 0x49, 0xff, 0xec, 0xd0,
-0x04, 0x4f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x0c, 0x42, 0x32, 0x14, 0x24, 0x3e, 0x1f, 0xfa, 0xd0,
-0x40, 0x01, 0x84, 0x00, 0x14, 0x0f, 0x80, 0x02, 0x50, 0x22, 0x00, 0x6e, 0x51, 0xc2, 0x00, 0x6c,
-0x04, 0x3f, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x02, 0x40, 0xa1, 0x0c, 0x08, 0x40, 0x7e, 0x0c, 0x08,
-0x3e, 0x9f, 0xfa, 0xd0, 0x58, 0x64, 0x80, 0x00, 0x44, 0x50, 0x00, 0x00, 0x40, 0x85, 0x24, 0x00,
-0x40, 0x43, 0x98, 0x00, 0x40, 0x21, 0x8c, 0x08, 0x50, 0x00, 0x83, 0x4c, 0x14, 0x5f, 0x80, 0x05,
-0x14, 0x8f, 0x80, 0x07, 0x14, 0x4f, 0x80, 0x08, 0x14, 0x5f, 0x80, 0x03, 0x14, 0x2f, 0x80, 0x04,
-0x14, 0x0f, 0x80, 0x06, 0x46, 0x10, 0x06, 0x10, 0x04, 0x2f, 0x80, 0x01, 0x58, 0x10, 0x80, 0x88,
-0x44, 0x00, 0x00, 0xe8, 0x49, 0xff, 0xec, 0x94, 0x2e, 0x77, 0xe6, 0x20, 0x4e, 0x73, 0x00, 0x08,
-0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x88, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10,
-0x58, 0x10, 0x80, 0x87, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x00, 0x00, 0xe8, 0x49, 0xff, 0xec, 0x80,
-0x04, 0x9f, 0x80, 0x03, 0x4e, 0x93, 0x00, 0x10, 0x46, 0x10, 0x50, 0x00, 0x04, 0x2f, 0x80, 0x01,
-0x58, 0x10, 0x8b, 0xb8, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xec, 0x72, 0x46, 0x18, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x0e, 0x46, 0x10, 0x50, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x58, 0x10, 0x8b, 0xb8,
-0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xec, 0x64, 0x46, 0x19, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x01,
-0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xec, 0x5c, 0x46, 0x18, 0x20, 0x24, 0x04, 0x2f, 0x80, 0x01,
-0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x49, 0xff, 0xec, 0x52, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0x88, 0x72, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xec, 0x66,
-0x40, 0xa0, 0x04, 0x08, 0x40, 0xa5, 0x74, 0x09, 0x4e, 0xa3, 0xff, 0xf2, 0x04, 0x2f, 0x80, 0x01,
-0x46, 0x10, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x49, 0xff, 0xec, 0x38,
-0x46, 0x46, 0x02, 0x00, 0x58, 0x32, 0x00, 0x00, 0x58, 0x01, 0x80, 0x00, 0x44, 0x50, 0x00, 0x27,
-0x44, 0x10, 0x00, 0x02, 0x14, 0x52, 0x00, 0x00, 0x14, 0x51, 0x80, 0x01, 0x14, 0x10, 0x00, 0x83,
-0x04, 0x2f, 0x80, 0x01, 0x4e, 0x23, 0x00, 0x20, 0x47, 0xe6, 0x02, 0x00, 0x47, 0xc0, 0x40, 0x00,
-0x46, 0xa0, 0x02, 0x74, 0x46, 0x3c, 0x00, 0x00, 0x46, 0x7f, 0x00, 0x00, 0x46, 0x44, 0x38, 0x00,
-0x59, 0xef, 0x02, 0x00, 0x50, 0x2f, 0x0b, 0x00, 0x58, 0xa5, 0x00, 0x27, 0x50, 0x11, 0x00, 0x04,
-0x58, 0x31, 0x84, 0x00, 0x50, 0x90, 0xb5, 0x10, 0x50, 0x81, 0x7d, 0x08, 0x50, 0x60, 0x80, 0x20,
-0x48, 0x00, 0x00, 0x24, 0x04, 0x6f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x2c,
-0x47, 0xe6, 0x02, 0x00, 0x47, 0xc1, 0x40, 0x00, 0x46, 0xa0, 0x02, 0x74, 0x46, 0x3c, 0x00, 0x00,
-0x46, 0x7f, 0x00, 0x00, 0x46, 0x44, 0x38, 0x00, 0x59, 0xef, 0x02, 0x00, 0x50, 0x2f, 0x1b, 0x00,
-0x58, 0xa5, 0x00, 0x27, 0x50, 0x11, 0x00, 0x04, 0x58, 0x31, 0x84, 0x00, 0x50, 0x90, 0xb5, 0x10,
-0x50, 0x81, 0x7d, 0x08, 0x50, 0x60, 0x80, 0x20, 0x15, 0xcf, 0x00, 0x00, 0x14, 0xa1, 0x00, 0x00,
-0x44, 0xa0, 0x05, 0x95, 0x14, 0x30, 0x80, 0x00, 0x14, 0xa4, 0x80, 0x00, 0x14, 0x74, 0x00, 0x00,
-0x14, 0x43, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x44, 0x30, 0x08, 0x00, 0x58, 0x60, 0x00, 0x00,
-0x58, 0x70, 0x00, 0x00, 0x46, 0xa6, 0x02, 0x04, 0x59, 0xc0, 0x00, 0x00, 0x14, 0x30, 0x80, 0x56,
-0x44, 0x40, 0x00, 0x00, 0x58, 0x50, 0x00, 0x00, 0x59, 0xe0, 0x00, 0x00, 0x46, 0x04, 0x40, 0x0c,
-0x58, 0x90, 0x80, 0x00, 0x46, 0x80, 0x02, 0x20, 0x44, 0x30, 0x00, 0x33, 0x44, 0x10, 0x00, 0x10,
-0x14, 0x43, 0x00, 0x57, 0x58, 0x84, 0x0d, 0xa2, 0x14, 0x43, 0x80, 0x58, 0x58, 0x22, 0x80, 0x00,
-0x14, 0x35, 0x00, 0x50, 0x14, 0x1e, 0x00, 0xe0, 0x58, 0x00, 0x01, 0x00, 0x45, 0xc1, 0x50, 0x68,
-0x15, 0xc2, 0x80, 0xc0, 0x14, 0x0f, 0x01, 0xc1, 0x14, 0x84, 0x81, 0xb3, 0x44, 0x80, 0x13, 0x00,
-0x14, 0x81, 0x00, 0x82, 0x04, 0x7f, 0x80, 0x03, 0x4e, 0x73, 0x00, 0x18, 0x05, 0xef, 0x80, 0x03,
-0x58, 0x55, 0x00, 0x00, 0x58, 0x91, 0x00, 0x00, 0x46, 0x07, 0xa8, 0x28, 0x46, 0x8a, 0x77, 0xb6,
-0x58, 0x00, 0x03, 0x80, 0x58, 0x84, 0x0f, 0x71, 0x15, 0xe2, 0x80, 0x40, 0x14, 0x04, 0x80, 0x60,
-0x14, 0x81, 0x00, 0x61, 0x48, 0x00, 0x00, 0x18, 0x58, 0x65, 0x00, 0x00, 0x46, 0x10, 0x10, 0x00,
-0x58, 0x41, 0x00, 0x00, 0x46, 0x77, 0xa8, 0x38, 0x59, 0xc1, 0x00, 0x00, 0x46, 0xaa, 0x67, 0xb6,
-0x58, 0x73, 0x84, 0x80, 0x58, 0xa5, 0x0f, 0x71, 0x14, 0x13, 0x00, 0x40, 0x14, 0x72, 0x00, 0x60,
-0x14, 0xae, 0x00, 0x61, 0x46, 0x86, 0x02, 0x00, 0x46, 0x36, 0x02, 0x00, 0x47, 0xc0, 0x90, 0x70,
-0x59, 0xe4, 0x00, 0x00, 0x46, 0x50, 0x14, 0x20, 0x58, 0x31, 0x81, 0x50, 0x59, 0xce, 0x00, 0x01,
-0x44, 0x90, 0x04, 0x1f, 0x14, 0x94, 0x00, 0x64, 0x15, 0xc1, 0x80, 0x00, 0x14, 0x5f, 0x00, 0x55,
-0x50, 0x0e, 0x00, 0x04, 0x58, 0x94, 0x00, 0x00, 0x46, 0x80, 0x21, 0x00, 0x50, 0x21, 0x80, 0x08,
-0x14, 0x0f, 0x80, 0x09, 0x04, 0x7f, 0x80, 0x05, 0x58, 0xa1, 0x80, 0x00, 0x58, 0x84, 0x00, 0x01,
-0x59, 0xc1, 0x00, 0x00, 0x46, 0x40, 0x90, 0x70, 0x58, 0x42, 0x00, 0x05, 0x14, 0x45, 0x00, 0x00,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x87, 0x60, 0x04, 0x14, 0x80, 0x65, 0x54, 0x60, 0x80, 0x1f,
-0x4e, 0x63, 0xff, 0xf8, 0x14, 0x85, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x09, 0x04, 0x6e, 0x00, 0x00,
-0x14, 0x25, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x87, 0x4e, 0x04, 0x34, 0x80, 0x65,
-0x54, 0x01, 0x80, 0x1f, 0x4e, 0x03, 0xff, 0xf8, 0x14, 0x85, 0x00, 0x00, 0x54, 0x13, 0x0f, 0xfc,
-0x04, 0x6e, 0x00, 0x00, 0x40, 0x20, 0x88, 0x09, 0x54, 0x43, 0x0f, 0xfc, 0x50, 0x53, 0x80, 0x01,
-0x40, 0x62, 0x08, 0x09, 0x51, 0xe1, 0x00, 0x0a, 0x54, 0x72, 0x80, 0xff, 0x40, 0xff, 0x18, 0x07,
-0x4e, 0xf3, 0x00, 0x10, 0x50, 0x03, 0x00, 0x0a, 0x40, 0xf0, 0x08, 0x07, 0x4e, 0xf3, 0x00, 0x0a,
-0x5c, 0xf3, 0x02, 0x1f, 0x4e, 0xf2, 0x00, 0x06, 0x5c, 0xf3, 0x01, 0xe3, 0x4e, 0xf2, 0x00, 0x06,
-0x5c, 0xf3, 0x80, 0x03, 0x4e, 0xf3, 0xff, 0xb8, 0x04, 0x2f, 0x80, 0x03, 0x14, 0x7f, 0x80, 0x05,
-0x50, 0x03, 0x7e, 0x1d, 0x4e, 0x23, 0x00, 0x54, 0x40, 0x30, 0x00, 0x13, 0x5c, 0xf1, 0x80, 0x3c,
-0x4e, 0xf3, 0x00, 0x22, 0x04, 0x3f, 0x80, 0x04, 0x3e, 0x4f, 0xfa, 0xd0, 0x04, 0x1f, 0x80, 0x02,
-0x50, 0x10, 0x83, 0x20, 0x40, 0x51, 0x90, 0x00, 0x04, 0x0f, 0x80, 0x03, 0x47, 0xe8, 0x08, 0x08,
-0x04, 0x4f, 0x80, 0x08, 0x59, 0xef, 0x00, 0x80, 0x44, 0x20, 0x08, 0x00, 0x14, 0x20, 0x80, 0x05,
-0x14, 0x00, 0x80, 0x06, 0x14, 0x00, 0x80, 0x07, 0x15, 0xe2, 0x00, 0x01, 0x15, 0xe2, 0x80, 0xda,
-0x48, 0x00, 0x00, 0x82, 0x47, 0xe6, 0x02, 0x00, 0x04, 0x3f, 0x00, 0x56, 0x04, 0x5f, 0x80, 0x02,
-0x50, 0x52, 0x83, 0x20, 0x58, 0x4f, 0x00, 0x00, 0x14, 0x32, 0x80, 0x05, 0x04, 0x22, 0x00, 0x57,
-0x58, 0x02, 0x00, 0x00, 0x14, 0x22, 0x80, 0x06, 0x04, 0x10, 0x00, 0x58, 0x59, 0xe0, 0x00, 0x00,
-0x14, 0x12, 0x80, 0x07, 0x04, 0x3f, 0x00, 0x62, 0x04, 0x4f, 0x80, 0x08, 0x58, 0x20, 0x00, 0x00,
-0x14, 0x32, 0x00, 0x01, 0x04, 0x0f, 0x80, 0x04, 0x04, 0x51, 0x00, 0x63, 0x3e, 0x1f, 0xfa, 0xd0,
-0x41, 0xe0, 0x04, 0x00, 0x14, 0x5f, 0x00, 0xda, 0x48, 0x00, 0x00, 0x56, 0x40, 0x50, 0x00, 0x13,
-0x5c, 0xf2, 0x80, 0x3c, 0x4e, 0xf3, 0x00, 0x26, 0x04, 0x5f, 0x80, 0x02, 0x05, 0xef, 0x80, 0x04,
-0x3e, 0x8f, 0xfa, 0xd0, 0x46, 0x08, 0x08, 0x08, 0x04, 0x2f, 0x80, 0x06, 0x04, 0x1f, 0x80, 0x07,
-0x58, 0x00, 0x00, 0x80, 0x44, 0x30, 0x00, 0x00, 0x40, 0x4f, 0x20, 0x00, 0x50, 0x72, 0x83, 0x50,
-0x50, 0x62, 0x83, 0x54, 0x44, 0x80, 0x08, 0x00, 0x14, 0x81, 0x00, 0x00, 0x14, 0x33, 0x80, 0x00,
-0x14, 0x33, 0x00, 0x00, 0x14, 0x00, 0x80, 0x01, 0x14, 0x02, 0x00, 0xde, 0x48, 0x00, 0x00, 0x2c,
-0x46, 0x16, 0x02, 0x00, 0x04, 0x40, 0x80, 0x56, 0x04, 0x2f, 0x80, 0x06, 0x58, 0x50, 0x80, 0x00,
-0x14, 0x41, 0x00, 0x00, 0x05, 0xe2, 0x80, 0x57, 0x04, 0x1f, 0x80, 0x02, 0x58, 0x02, 0x80, 0x00,
-0x15, 0xe0, 0x80, 0xd4, 0x04, 0x30, 0x00, 0x58, 0x58, 0x40, 0x00, 0x00, 0x14, 0x30, 0x80, 0xd5,
-0x04, 0x52, 0x00, 0x62, 0x04, 0x2f, 0x80, 0x07, 0x59, 0xe0, 0x00, 0x00, 0x14, 0x51, 0x00, 0x01,
-0x04, 0x0f, 0x80, 0x04, 0x04, 0x4f, 0x00, 0x63, 0x3e, 0x1f, 0xfa, 0xd0, 0x40, 0x30, 0x04, 0x00,
-0x14, 0x41, 0x80, 0xde, 0x04, 0x5f, 0x80, 0x03, 0x45, 0xe0, 0x00, 0x02, 0x50, 0x02, 0x80, 0x01,
-0x40, 0x30, 0x00, 0x13, 0x14, 0x3f, 0x80, 0x03, 0x4c, 0x3f, 0x7d, 0xa6, 0x49, 0xff, 0xeb, 0x1c,
-0x04, 0x2f, 0x80, 0x01, 0x4e, 0x23, 0x00, 0x08, 0x46, 0x46, 0x02, 0x00, 0x14, 0x22, 0x00, 0x5f,
-0x48, 0x00, 0x00, 0x0e, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x08,
-0x46, 0x36, 0x02, 0x01, 0x45, 0xe0, 0x00, 0x00, 0x15, 0xe1, 0x80, 0x5f, 0x51, 0xff, 0x80, 0x2c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4,
-0x14, 0x0f, 0x80, 0x00, 0x3c, 0x03, 0xf2, 0x06, 0x04, 0x1f, 0x80, 0x00, 0x49, 0xff, 0xfb, 0x14,
-0x04, 0x2f, 0x80, 0x00, 0x46, 0x18, 0x1b, 0xd6, 0x58, 0x10, 0x8c, 0x7f, 0x44, 0x00, 0x00, 0x6c,
-0x49, 0xff, 0xea, 0x0e, 0x04, 0x2f, 0x80, 0x00, 0x46, 0x18, 0xc0, 0x08, 0x58, 0x10, 0x82, 0xd0,
-0x44, 0x00, 0x00, 0x44, 0x49, 0xff, 0xea, 0x04, 0x46, 0x1f, 0x8b, 0x00, 0x04, 0x2f, 0x80, 0x00,
-0x44, 0x00, 0x00, 0x48, 0x58, 0x10, 0x87, 0x27, 0x49, 0xff, 0xe9, 0xfa, 0x04, 0x0f, 0x80, 0x00,
-0x4e, 0x03, 0x00, 0x06, 0x3e, 0x3f, 0xe4, 0x0e, 0x48, 0x00, 0x00, 0x0a, 0x04, 0x1f, 0x80, 0x00,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x1c, 0x3e, 0x3f, 0xe4, 0x0f, 0x00, 0x41, 0x80, 0x00,
-0x4e, 0x43, 0x00, 0x16, 0x04, 0x2f, 0x80, 0x00, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x08,
-0x44, 0x00, 0x06, 0x10, 0x49, 0xff, 0xe9, 0xdc, 0x46, 0x18, 0x3f, 0xf0, 0x04, 0x2f, 0x80, 0x00,
-0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xe9, 0xd2, 0x46, 0x56, 0x02, 0x00,
-0x58, 0x52, 0x81, 0x48, 0x14, 0x5f, 0x80, 0x01, 0x04, 0x8f, 0x80, 0x00, 0x44, 0x90, 0x00, 0x00,
-0x2f, 0xe7, 0xe6, 0x20, 0x4f, 0xe3, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x88,
-0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x87, 0x44, 0x00, 0x00, 0xe8,
-0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xe9, 0xb4, 0x4e, 0x93, 0x00, 0x08, 0x46, 0x10, 0x50, 0x00,
-0x58, 0x10, 0x8b, 0xb8, 0x48, 0x00, 0x00, 0x1a, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x92, 0xc0, 0x08,
-0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0xaa, 0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x02,
-0x4c, 0x92, 0xc0, 0x08, 0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0x99, 0x48, 0x00, 0x00, 0x06,
-0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0x8a, 0x44, 0x00, 0x00, 0x70, 0x58, 0x24, 0x00, 0x00,
-0x49, 0xff, 0xe9, 0x8e, 0x46, 0x18, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x58, 0x24, 0x00, 0x00,
-0x49, 0xff, 0xe9, 0x86, 0x46, 0x18, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
-0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xe9, 0x7c, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x85, 0x9c,
-0x58, 0x14, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xe9, 0x90, 0x40, 0x10, 0x70, 0x09,
-0x4e, 0x13, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x24, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x10, 0x80, 0xc0,
-0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xe9, 0x64, 0x46, 0x66, 0x02, 0x00, 0x58, 0x03, 0x00, 0x00,
-0x58, 0x70, 0x00, 0x00, 0x44, 0x50, 0x00, 0x27, 0x44, 0x40, 0x00, 0x02, 0x14, 0x53, 0x00, 0x00,
-0x14, 0x50, 0x00, 0x01, 0x14, 0x43, 0x80, 0x83, 0x4e, 0x83, 0x00, 0x20, 0x47, 0xe6, 0x02, 0x00,
-0x46, 0x70, 0x40, 0x00, 0x46, 0x60, 0x02, 0x74, 0x46, 0x0c, 0x00, 0x00, 0x46, 0x3f, 0x00, 0x00,
-0x46, 0x14, 0x08, 0x00, 0x59, 0xef, 0x02, 0x00, 0x51, 0xcf, 0x0b, 0x00, 0x58, 0x63, 0x00, 0x27,
-0x50, 0xae, 0x00, 0x04, 0x58, 0x00, 0x04, 0x00, 0x50, 0x55, 0x35, 0x10, 0x50, 0x4e, 0x7d, 0x08,
-0x50, 0x25, 0x00, 0x20, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x82, 0xc0, 0x2c,
-0x47, 0xe6, 0x02, 0x00, 0x46, 0x71, 0x40, 0x00, 0x46, 0x60, 0x02, 0x74, 0x46, 0x0c, 0x00, 0x00,
-0x46, 0x3f, 0x00, 0x00, 0x46, 0x14, 0x08, 0x00, 0x59, 0xef, 0x02, 0x00, 0x51, 0xcf, 0x1b, 0x00,
-0x58, 0x63, 0x00, 0x27, 0x50, 0xae, 0x00, 0x04, 0x58, 0x00, 0x04, 0x00, 0x50, 0x55, 0x35, 0x10,
-0x50, 0x4e, 0x7d, 0x08, 0x50, 0x25, 0x00, 0x20, 0x14, 0x7f, 0x00, 0x00, 0x44, 0x70, 0x05, 0x95,
-0x14, 0x6e, 0x00, 0x00, 0x14, 0x05, 0x00, 0x00, 0x14, 0x72, 0x80, 0x00, 0x14, 0x32, 0x00, 0x00,
-0x14, 0x11, 0x00, 0x00, 0x46, 0x56, 0x02, 0x04, 0x46, 0x06, 0x02, 0x00, 0x58, 0x20, 0x00, 0x00,
-0x58, 0x12, 0x80, 0x00, 0x46, 0x30, 0x20, 0x00, 0x44, 0x70, 0x00, 0x03, 0x44, 0x60, 0x00, 0x10,
-0x44, 0x41, 0x00, 0x68, 0x14, 0x72, 0x80, 0x50, 0x14, 0x60, 0x00, 0xe0, 0x14, 0x41, 0x00, 0xc0,
-0x14, 0x30, 0x80, 0x40, 0x4e, 0x83, 0x00, 0x06, 0x3e, 0x0f, 0xe4, 0x0e, 0x48, 0x00, 0x00, 0x08,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x82, 0xc0, 0x0c, 0x3e, 0x0f, 0xe4, 0x0f, 0x00, 0x10, 0x00, 0x00,
-0x4e, 0x13, 0x00, 0x06, 0x46, 0x33, 0x00, 0x00, 0x14, 0x31, 0x00, 0x51, 0x4e, 0x93, 0x00, 0x0a,
-0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x13, 0x00, 0x48, 0x00, 0x00, 0x20,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x92, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08,
-0x44, 0x30, 0x12, 0x00, 0x48, 0x00, 0x00, 0x14, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x92, 0xc0, 0x0a,
-0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x11, 0x00, 0x48, 0x00, 0x00, 0x08,
-0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x10, 0x00, 0x58, 0x51, 0x00, 0x00,
-0x46, 0x10, 0x07, 0x38, 0x47, 0xe8, 0x07, 0x38, 0x14, 0x30, 0x00, 0x00, 0x14, 0x12, 0x80, 0x50,
-0x15, 0xe2, 0x80, 0x50, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x84, 0xc6, 0x04, 0x0f, 0x80, 0x01,
-0x04, 0x40, 0x00, 0x00, 0x40, 0x22, 0x04, 0x08, 0x40, 0x21, 0x74, 0x09, 0x4e, 0x23, 0xff, 0xf4,
-0x46, 0x56, 0x02, 0x00, 0x46, 0x10, 0x07, 0x38, 0x47, 0xe4, 0x07, 0x38, 0x14, 0x12, 0x80, 0x50,
-0x15, 0xe2, 0x80, 0x50, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x84, 0xae, 0x04, 0x0f, 0x80, 0x01,
-0x04, 0x40, 0x00, 0x00, 0x40, 0x22, 0x04, 0x08, 0x40, 0x21, 0x74, 0x09, 0x4e, 0x23, 0xff, 0xf4,
-0x46, 0x56, 0x02, 0x00, 0x46, 0x10, 0x07, 0x38, 0x47, 0xe2, 0x07, 0x38, 0x14, 0x12, 0x80, 0x50,
-0x15, 0xe2, 0x80, 0x50, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x84, 0x96, 0x04, 0x0f, 0x80, 0x01,
-0x04, 0x40, 0x00, 0x00, 0x40, 0x22, 0x04, 0x08, 0x40, 0x21, 0x74, 0x09, 0x4e, 0x23, 0xff, 0xf4,
-0x50, 0x24, 0x80, 0x01, 0x47, 0xe6, 0x02, 0x00, 0x46, 0x10, 0x07, 0x38, 0x40, 0x91, 0x00, 0x13,
-0x44, 0x50, 0x00, 0x04, 0x14, 0x1f, 0x00, 0x50, 0x4c, 0x92, 0xfe, 0x94, 0x04, 0x3f, 0x80, 0x00,
-0x50, 0x41, 0x80, 0x88, 0x4e, 0x33, 0x00, 0x06, 0x3e, 0x3f, 0xe4, 0x0e, 0x48, 0x00, 0x00, 0x0a,
-0x04, 0x0f, 0x80, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x02, 0xc0, 0x14, 0x3e, 0x3f, 0xe4, 0x0f,
-0x01, 0xe1, 0x80, 0x00, 0x4f, 0xe3, 0x00, 0x0e, 0x46, 0x26, 0x02, 0x00, 0x40, 0x42, 0x08, 0x08,
-0x3e, 0x1f, 0xfa, 0xd0, 0x04, 0x31, 0x00, 0xa4, 0x40, 0x42, 0x04, 0x00, 0x48, 0x00, 0x00, 0x0c,
-0x46, 0x36, 0x02, 0x00, 0x40, 0x02, 0x08, 0x08, 0x3e, 0x5f, 0xfa, 0xd0, 0x04, 0x31, 0x80, 0xa2,
-0x40, 0x40, 0x14, 0x00, 0x05, 0xef, 0x80, 0x00, 0x14, 0x32, 0x00, 0x01, 0x50, 0x4f, 0x00, 0x8a,
-0x4f, 0xe3, 0x00, 0x06, 0x3e, 0x3f, 0xe4, 0x0e, 0x48, 0x00, 0x00, 0x0a, 0x04, 0x2f, 0x80, 0x00,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x14, 0x3e, 0x3f, 0xe4, 0x0f, 0x00, 0x01, 0x80, 0x00,
-0x4e, 0x03, 0x00, 0x0e, 0x46, 0x36, 0x02, 0x00, 0x40, 0x42, 0x08, 0x08, 0x3e, 0x5f, 0xfa, 0xd0,
-0x04, 0x31, 0x80, 0xa5, 0x40, 0x42, 0x14, 0x00, 0x48, 0x00, 0x00, 0x0c, 0x46, 0x26, 0x02, 0x00,
-0x41, 0xe2, 0x08, 0x08, 0x3e, 0x1f, 0xfa, 0xd0, 0x04, 0x31, 0x00, 0xa3, 0x40, 0x4f, 0x04, 0x00,
-0x14, 0x32, 0x00, 0x01, 0x49, 0xff, 0xe8, 0xd8, 0x04, 0x0f, 0x80, 0x00, 0x4e, 0x03, 0x00, 0x2e,
-0x2e, 0x17, 0xe4, 0x0e, 0x4e, 0x13, 0x00, 0x0e, 0x2e, 0x57, 0xe4, 0x0f, 0x4e, 0x53, 0x00, 0x0a,
-0x3c, 0x1d, 0xff, 0x3e, 0x47, 0xe6, 0x02, 0x01, 0x14, 0x1f, 0x00, 0xa4, 0x48, 0x00, 0x00, 0x0a,
-0x3c, 0x4d, 0xff, 0x3e, 0x46, 0x06, 0x02, 0x01, 0x14, 0x40, 0x00, 0xa2, 0x4e, 0x13, 0x00, 0x0e,
-0x2e, 0x37, 0xe4, 0x0f, 0x4e, 0x33, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x3c, 0x1d, 0xff, 0x40,
-0x58, 0x00, 0x02, 0x94, 0x48, 0x00, 0x00, 0x08, 0x3c, 0x1d, 0xff, 0x40, 0x46, 0x06, 0x02, 0x01,
-0x58, 0x00, 0x02, 0x8c, 0x14, 0x10, 0x00, 0x00, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x58, 0x60, 0x00, 0x00,
-0x3c, 0x03, 0xf2, 0x06, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf8, 0xb6, 0x46, 0x18, 0x1b, 0x06,
-0x58, 0x10, 0x8e, 0x07, 0x44, 0x00, 0x00, 0x6c, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe7, 0xb0,
-0x46, 0x1f, 0x8b, 0x00, 0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xe7, 0xa6, 0x46, 0x18, 0x00, 0x6d, 0x58, 0x10, 0x85, 0xe4, 0x44, 0x00, 0x00, 0xa0,
-0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe7, 0x9c, 0x46, 0x26, 0x02, 0x00, 0x58, 0x41, 0x00, 0x00,
-0x58, 0x01, 0x00, 0x00, 0x44, 0x30, 0x00, 0x27, 0x44, 0x10, 0x00, 0x02, 0x14, 0x31, 0x00, 0x00,
-0x14, 0x32, 0x00, 0x01, 0x14, 0x10, 0x00, 0x83, 0x4e, 0x63, 0x00, 0x1c, 0x46, 0x86, 0x02, 0x00,
-0x46, 0x90, 0x40, 0x00, 0x46, 0x70, 0x02, 0x74, 0x46, 0x4c, 0x00, 0x00, 0x46, 0x1f, 0x00, 0x00,
-0x58, 0x84, 0x02, 0x00, 0x50, 0x54, 0x0b, 0x00, 0x58, 0x73, 0x80, 0x27, 0x50, 0x32, 0x80, 0x04,
-0x58, 0x42, 0x04, 0x00, 0x50, 0x21, 0xb5, 0x10, 0x50, 0x02, 0xfd, 0x08, 0x48, 0x00, 0x00, 0x1e,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x26, 0x46, 0x86, 0x02, 0x00, 0x46, 0x91, 0x40, 0x00,
-0x46, 0x70, 0x02, 0x74, 0x46, 0x4c, 0x00, 0x00, 0x46, 0x1f, 0x00, 0x00, 0x58, 0x84, 0x02, 0x00,
-0x50, 0x54, 0x1b, 0x00, 0x58, 0x73, 0x80, 0x27, 0x50, 0x32, 0x80, 0x04, 0x58, 0x42, 0x04, 0x00,
-0x50, 0x21, 0xb5, 0x10, 0x50, 0x02, 0xfd, 0x08, 0x14, 0x94, 0x00, 0x00, 0x44, 0x90, 0x05, 0x95,
-0x14, 0x72, 0x80, 0x00, 0x14, 0x41, 0x80, 0x00, 0x14, 0x91, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00,
-0x46, 0x36, 0x02, 0x04, 0x46, 0x16, 0x02, 0x00, 0x59, 0xe0, 0x80, 0x00, 0x58, 0xa1, 0x80, 0x00,
-0x47, 0xc0, 0x20, 0x00, 0x44, 0x20, 0x00, 0x03, 0x44, 0x40, 0x00, 0x10, 0x44, 0x01, 0x00, 0x68,
-0x14, 0x21, 0x80, 0x50, 0x14, 0x40, 0x80, 0xe0, 0x14, 0x0f, 0x00, 0xc0, 0x46, 0x18, 0x20, 0x24,
-0x15, 0xc5, 0x00, 0x40, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xe7, 0x26, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x83, 0x46, 0x44, 0x00, 0x04, 0x1c,
-0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe7, 0x3a, 0x40, 0x50, 0x70, 0x09, 0x4e, 0x53, 0xff, 0xf4,
-0x46, 0x86, 0x02, 0x01, 0x14, 0x8f, 0x80, 0x01, 0x46, 0x10, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0,
-0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe7, 0x0a, 0x04, 0x7f, 0x80, 0x01,
-0x47, 0xc6, 0x02, 0x00, 0x58, 0x73, 0x8d, 0x24, 0x46, 0x86, 0x02, 0x00, 0x14, 0x7f, 0x80, 0x01,
-0x58, 0x84, 0x01, 0x24, 0x3e, 0x7f, 0xde, 0xe0, 0x50, 0x93, 0xff, 0xf4, 0x2f, 0xe7, 0xe6, 0x20,
-0x4f, 0xe3, 0x00, 0x06, 0x04, 0x14, 0x80, 0x00, 0x48, 0x00, 0x00, 0x04, 0x04, 0x14, 0x80, 0x01,
-0x44, 0x00, 0x00, 0xd4, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe6, 0xea, 0x04, 0x13, 0xff, 0xff,
-0x44, 0x00, 0x00, 0x14, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe6, 0xe2, 0x4e, 0x63, 0x00, 0x08,
-0x04, 0x13, 0x80, 0x00, 0x14, 0x1e, 0x03, 0x49, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x62, 0xc0, 0x08, 0x04, 0x33, 0x80, 0x00, 0x04, 0x2f, 0x80, 0x01, 0x14, 0x31, 0x00, 0x00,
-0x46, 0x06, 0x02, 0x00, 0x46, 0x10, 0x50, 0x04, 0x58, 0x50, 0x00, 0x00, 0x58, 0x10, 0x80, 0xf7,
-0x45, 0xe0, 0x00, 0x01, 0x14, 0x10, 0x00, 0x41, 0x15, 0xe2, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0x82, 0xe2, 0x04, 0x44, 0x00, 0x00, 0x54, 0x32, 0x00, 0x08, 0x4e, 0x33, 0xff, 0xf8,
-0x46, 0x56, 0x02, 0x00, 0x59, 0xe2, 0x80, 0x00, 0x46, 0x20, 0x80, 0x04, 0x14, 0x32, 0x80, 0x40,
-0x58, 0x21, 0x07, 0xf7, 0x44, 0x30, 0x00, 0x02, 0x14, 0x2f, 0x00, 0x41, 0x14, 0x32, 0x80, 0x40,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x82, 0xc8, 0x04, 0x04, 0x00, 0x00, 0x54, 0x10, 0x00, 0x08,
-0x4e, 0x13, 0xff, 0xf8, 0x46, 0x46, 0x02, 0x00, 0x14, 0x12, 0x00, 0x40, 0x44, 0x10, 0x00, 0x04,
-0x14, 0x12, 0x00, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x82, 0xb6, 0x04, 0x54, 0x00, 0x00,
-0x54, 0x12, 0x80, 0x08, 0x4e, 0x13, 0xff, 0xf8, 0x47, 0xe6, 0x02, 0x00, 0x50, 0x73, 0x80, 0x10,
-0x3e, 0x5f, 0xdf, 0xa0, 0x14, 0x1f, 0x00, 0x40, 0x50, 0x94, 0x80, 0x10, 0x4c, 0x72, 0xff, 0x88,
-0x44, 0x00, 0x00, 0x18, 0x42, 0x23, 0x00, 0x24, 0x3e, 0x4f, 0xfc, 0x94, 0x46, 0x06, 0x02, 0x00,
-0x40, 0x11, 0x10, 0x00, 0x58, 0x00, 0x02, 0x64, 0x0c, 0x30, 0x00, 0x01, 0x46, 0x56, 0x02, 0x00,
-0x58, 0x52, 0x82, 0x7c, 0x1c, 0x30, 0x80, 0x01, 0x4c, 0x02, 0xff, 0xf8, 0x44, 0x20, 0x00, 0x18,
-0x42, 0x13, 0x08, 0x24, 0x51, 0xe2, 0x00, 0x30, 0x40, 0x10, 0xf8, 0x00, 0x50, 0x02, 0xff, 0xc4,
-0x0c, 0x50, 0x00, 0x01, 0x46, 0x46, 0x02, 0x00, 0x58, 0x42, 0x02, 0x58, 0x1c, 0x50, 0x80, 0x01,
-0x4c, 0x02, 0x7f, 0xf8, 0x49, 0xff, 0xe7, 0x30, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x30,
-0x46, 0x06, 0x02, 0x01, 0x58, 0x00, 0x02, 0x64, 0x3e, 0x5f, 0xfa, 0xd0, 0x46, 0x29, 0xfd, 0xfe,
-0x40, 0x40, 0x14, 0x00, 0x58, 0x21, 0x0f, 0x78, 0x41, 0xe2, 0x08, 0x00, 0x04, 0x1f, 0x00, 0x00,
-0x46, 0x36, 0x02, 0x01, 0x1c, 0x10, 0x00, 0x01, 0x58, 0x31, 0x82, 0x7c, 0x4c, 0x01, 0xff, 0xee,
-0x50, 0x01, 0xff, 0xc4, 0x3e, 0x5f, 0xfa, 0xd0, 0x46, 0x29, 0xfd, 0xfe, 0x40, 0x40, 0x14, 0x00,
-0x58, 0x21, 0x0f, 0xcc, 0x41, 0xe2, 0x08, 0x00, 0x04, 0x1f, 0x00, 0x00, 0x46, 0x36, 0x02, 0x01,
-0x1c, 0x10, 0x00, 0x01, 0x58, 0x31, 0x82, 0x58, 0x4c, 0x01, 0xff, 0xee, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x58, 0x60, 0x00, 0x00, 0x3c, 0x03, 0xf2, 0x06, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf7, 0x0c,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xe6, 0x50, 0x46, 0x18, 0x1b, 0xd6, 0x3e, 0x7f, 0x83, 0x48,
-0x58, 0x10, 0x8c, 0x7f, 0x44, 0x00, 0x00, 0x6c, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x46, 0x18, 0xc0, 0x08, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x1f, 0x8b, 0x00, 0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48,
-0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0xb8,
-0x44, 0x00, 0x00, 0x70, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x20, 0x24,
-0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x81, 0xf0, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c,
-0x49, 0xff, 0xe5, 0xe4, 0x40, 0x20, 0x70, 0x09, 0x4e, 0x23, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x24,
-0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe5, 0xb8,
-0x46, 0x96, 0x02, 0x00, 0x58, 0x54, 0x80, 0x00, 0x58, 0x42, 0x80, 0x00, 0x44, 0x80, 0x00, 0x27,
-0x44, 0x30, 0x00, 0x02, 0x14, 0x84, 0x80, 0x00, 0x14, 0x82, 0x80, 0x01, 0x14, 0x32, 0x00, 0x83,
-0x4e, 0x63, 0x00, 0x20, 0x46, 0xa6, 0x02, 0x00, 0x47, 0xc0, 0x40, 0x00, 0x46, 0x90, 0x02, 0x74,
-0x46, 0x7c, 0x00, 0x00, 0x46, 0x34, 0x00, 0x00, 0x46, 0x1f, 0x00, 0x00, 0x58, 0xa5, 0x02, 0x00,
-0x50, 0x85, 0x0b, 0x00, 0x58, 0x94, 0x80, 0x27, 0x50, 0x54, 0x00, 0x04, 0x58, 0x73, 0x84, 0x00,
-0x50, 0x42, 0xb5, 0x10, 0x50, 0x22, 0x80, 0x20, 0x50, 0x04, 0x7d, 0x08, 0x48, 0x00, 0x00, 0x22,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x2c, 0x46, 0xa6, 0x02, 0x00, 0x47, 0xc1, 0x40, 0x00,
-0x46, 0x90, 0x02, 0x74, 0x46, 0x7c, 0x00, 0x00, 0x46, 0x34, 0x00, 0x00, 0x46, 0x1f, 0x00, 0x00,
-0x58, 0xa5, 0x02, 0x00, 0x50, 0x85, 0x1b, 0x00, 0x58, 0x94, 0x80, 0x27, 0x50, 0x54, 0x00, 0x04,
-0x58, 0x73, 0x84, 0x00, 0x50, 0x42, 0xb5, 0x10, 0x50, 0x22, 0x80, 0x20, 0x50, 0x04, 0x7d, 0x08,
-0x45, 0xe0, 0x05, 0x97, 0x15, 0xc5, 0x00, 0x00, 0x14, 0x94, 0x00, 0x00, 0x14, 0x72, 0x80, 0x00,
-0x15, 0xe2, 0x00, 0x00, 0x14, 0x31, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x46, 0x76, 0x02, 0x04,
-0x44, 0x50, 0x00, 0x03, 0x46, 0x06, 0x02, 0x00, 0x58, 0x40, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
-0x46, 0x30, 0x20, 0x00, 0x59, 0xe0, 0x00, 0x00, 0x46, 0x10, 0x90, 0x04, 0x14, 0x53, 0x80, 0x50,
-0x58, 0x10, 0x8f, 0xf9, 0x44, 0x80, 0x00, 0x10, 0x44, 0x51, 0x00, 0x68, 0x14, 0x80, 0x00, 0xe0,
-0x14, 0x52, 0x00, 0xc0, 0x14, 0x31, 0x00, 0x40, 0x14, 0x1f, 0x00, 0x41, 0x2e, 0x77, 0xe6, 0x20,
+0x49, 0xff, 0xef, 0x92, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x40, 0x81, 0x00, 0x13,
+0x58, 0x70, 0x80, 0x00, 0x58, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x91, 0x80, 0x00,
+0x49, 0xff, 0xff, 0x4a, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf0, 0x48,
+0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf2, 0x72, 0x2e, 0x07, 0xe3, 0xc0,
+0x4e, 0x03, 0x00, 0x06, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf9, 0x10, 0x58, 0x03, 0x80, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf0, 0x34, 0x58, 0x03, 0x80, 0x00, 0x58, 0x14, 0x80, 0x00,
+0x49, 0xff, 0xf3, 0xae, 0x58, 0x03, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xf1, 0x7c,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x44, 0x70, 0x00, 0x00, 0x49, 0xff, 0xf8, 0xe2, 0x44, 0x80, 0x00, 0x01,
+0x49, 0xff, 0xfd, 0xce, 0x3e, 0x9f, 0xe1, 0xb4, 0x48, 0x00, 0x00, 0x44, 0x4e, 0x73, 0x00, 0x06,
+0x44, 0x80, 0x00, 0x01, 0x48, 0x00, 0x00, 0x08, 0x56, 0x03, 0x80, 0x01, 0x44, 0x10, 0x00, 0x00,
+0x40, 0x80, 0x80, 0x1a, 0x44, 0x60, 0x00, 0x00, 0x48, 0x00, 0x00, 0x26, 0x2e, 0x37, 0xe3, 0xc0,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x32, 0x80, 0x0a, 0x38, 0x14, 0x9b, 0x02, 0x4e, 0x12, 0x00, 0x18,
+0x00, 0x01, 0x00, 0x04, 0x48, 0x00, 0x00, 0x0e, 0x38, 0x14, 0x9b, 0x02, 0x40, 0x23, 0x0c, 0x08,
+0x3e, 0x5f, 0xe1, 0xb4, 0x40, 0x01, 0x14, 0x00, 0x4e, 0x12, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x05,
+0x4e, 0x02, 0x00, 0x06, 0x58, 0x04, 0x00, 0x00, 0x4b, 0xe0, 0x04, 0x01, 0x50, 0x63, 0x00, 0x01,
+0x54, 0x63, 0x00, 0xff, 0x2f, 0xe7, 0xe3, 0xdc, 0x40, 0x13, 0x0c, 0x08, 0x3e, 0x3f, 0xe1, 0xb4,
+0x40, 0x20, 0x8c, 0x00, 0x40, 0xf3, 0x78, 0x06, 0x4e, 0xf3, 0xff, 0xd2, 0x50, 0x73, 0x80, 0x01,
+0x3c, 0x4d, 0xf8, 0xf5, 0x40, 0xf3, 0x90, 0x06, 0x4e, 0xf3, 0xff, 0xba, 0x49, 0xff, 0xf8, 0x24,
+0x44, 0x80, 0x00, 0x07, 0x3e, 0x7f, 0xe1, 0xb0, 0x44, 0x60, 0x00, 0x00, 0x12, 0x83, 0x80, 0x00,
+0x3c, 0x8b, 0xf1, 0xd9, 0x3c, 0x8b, 0xf1, 0xd8, 0x3c, 0x6f, 0xf8, 0xed, 0x58, 0x93, 0x80, 0x00,
+0x48, 0x00, 0x00, 0x08, 0x02, 0x24, 0x80, 0x00, 0x50, 0x63, 0x00, 0x01, 0x49, 0xff, 0xff, 0x52,
+0x3d, 0xed, 0xf8, 0xf5, 0x44, 0x10, 0x00, 0x00, 0x58, 0x03, 0x00, 0x00, 0x58, 0x30, 0x80, 0x00,
+0x40, 0xf3, 0x78, 0x06, 0x4e, 0xf3, 0xff, 0xf0, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x46, 0x30, 0x02, 0x4b,
+0x55, 0xc0, 0x00, 0xff, 0x46, 0x20, 0x04, 0xc4, 0x58, 0x31, 0x8a, 0x58, 0x58, 0x21, 0x0b, 0x40,
+0x5c, 0x5e, 0x00, 0x0f, 0x58, 0x80, 0x80, 0x00, 0x40, 0x01, 0x94, 0x1b, 0x40, 0x01, 0x14, 0x1a,
+0x58, 0x1e, 0x00, 0x00, 0x58, 0x24, 0x00, 0x00, 0x58, 0x62, 0x00, 0x00, 0x49, 0xff, 0xb6, 0x7e,
+0x58, 0xa0, 0x00, 0x00, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x62, 0xc0, 0x04, 0x48, 0x00, 0x00, 0x06,
+0x44, 0x50, 0x00, 0x05, 0x4c, 0x62, 0xc0, 0x06, 0x58, 0x73, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06,
+0x44, 0x70, 0x00, 0x00, 0x40, 0x73, 0xa0, 0x06, 0x49, 0xff, 0xf8, 0x32, 0x44, 0x90, 0x00, 0x00,
+0x3e, 0x4f, 0xe3, 0xd4, 0x3e, 0x5f, 0xa5, 0x6c, 0x48, 0x00, 0x00, 0x0e, 0x14, 0x4f, 0x80, 0x01,
+0x14, 0x5f, 0x80, 0x00, 0x50, 0x94, 0x80, 0x01, 0x4b, 0xe0, 0x14, 0x01, 0x04, 0x5f, 0x80, 0x00,
+0x04, 0x4f, 0x80, 0x01, 0x05, 0xe2, 0x00, 0x00, 0x58, 0x04, 0x80, 0x00, 0x58, 0x13, 0x80, 0x00,
+0x58, 0x25, 0x00, 0x00, 0x58, 0x34, 0x00, 0x00, 0x40, 0xf4, 0xf8, 0x06, 0x4e, 0xf3, 0xff, 0xe8,
+0x58, 0x05, 0x00, 0x00, 0x49, 0xff, 0xf4, 0x22, 0x49, 0xff, 0xf7, 0x9e, 0x3e, 0x87, 0xe3, 0xb8,
+0x44, 0x00, 0x00, 0x01, 0x3d, 0xcb, 0xf1, 0xd8, 0x3c, 0xab, 0xf1, 0xd9, 0x3c, 0x7f, 0xf8, 0xed,
+0x3e, 0x67, 0xe3, 0xb9, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xd4, 0x14, 0x0f, 0x80, 0x01, 0x3c, 0x03, 0xf0, 0xd8,
+0x04, 0x1f, 0x80, 0x01, 0x49, 0xff, 0xfe, 0x20, 0x04, 0x2f, 0x80, 0x01, 0x46, 0x18, 0x1b, 0xd6,
+0x58, 0x10, 0x8c, 0x7f, 0x44, 0x00, 0x00, 0x6c, 0x49, 0xff, 0xee, 0x46, 0x04, 0x2f, 0x80, 0x01,
+0x46, 0x18, 0xc0, 0x08, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x49, 0xff, 0xee, 0x3c,
+0x04, 0x2f, 0x80, 0x01, 0x46, 0x1f, 0x8b, 0x00, 0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48,
+0x49, 0xff, 0xee, 0x32, 0x04, 0x4f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x0c, 0x42, 0x32, 0x14, 0x24,
+0x3e, 0x1f, 0xf8, 0x70, 0x40, 0x01, 0x84, 0x00, 0x14, 0x0f, 0x80, 0x02, 0x50, 0x22, 0x00, 0x6e,
+0x51, 0xc2, 0x00, 0x6c, 0x04, 0x3f, 0x80, 0x01, 0x04, 0x1f, 0x80, 0x02, 0x40, 0xa1, 0x0c, 0x08,
+0x40, 0x7e, 0x0c, 0x08, 0x3e, 0x9f, 0xf8, 0x70, 0x58, 0x64, 0x80, 0x00, 0x44, 0x50, 0x00, 0x00,
+0x40, 0x85, 0x24, 0x00, 0x40, 0x43, 0x98, 0x00, 0x40, 0x21, 0x8c, 0x08, 0x50, 0x00, 0x83, 0x4c,
+0x14, 0x5f, 0x80, 0x03, 0x14, 0x8f, 0x80, 0x07, 0x14, 0x4f, 0x80, 0x08, 0x14, 0x5f, 0x80, 0x05,
+0x14, 0x2f, 0x80, 0x04, 0x14, 0x0f, 0x80, 0x06, 0x46, 0x10, 0x06, 0x10, 0x04, 0x2f, 0x80, 0x01,
+0x58, 0x10, 0x80, 0x88, 0x44, 0x00, 0x00, 0xe8, 0x49, 0xff, 0xed, 0xf6, 0x2e, 0x77, 0xe3, 0xc0,
0x4e, 0x73, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x88, 0x48, 0x00, 0x00, 0x06,
-0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x87, 0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xe5, 0x26, 0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x00, 0x00,
-0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a,
-0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x00, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00,
-0x46, 0x46, 0x02, 0x00, 0x46, 0x27, 0x10, 0x20, 0x58, 0x32, 0x00, 0x00, 0x44, 0x10, 0x00, 0x20,
-0x14, 0x22, 0x00, 0x47, 0x58, 0x71, 0x80, 0x00, 0x14, 0x11, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0x81, 0x22, 0x04, 0x03, 0x80, 0x4c, 0x44, 0x51, 0x00, 0x00, 0x40, 0x30, 0x14, 0x02,
-0x4e, 0x33, 0xff, 0xf6, 0x46, 0x46, 0x02, 0x00, 0x59, 0xe2, 0x00, 0x00, 0x46, 0x17, 0x10, 0x00,
-0x58, 0x10, 0x80, 0x02, 0x14, 0x32, 0x00, 0x40, 0x14, 0x1f, 0x00, 0x47, 0x2e, 0x87, 0xe6, 0x20,
-0x4e, 0x83, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x08, 0x48, 0x00, 0x00, 0x06,
-0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x07, 0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xe4, 0xd6, 0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x28, 0x00,
-0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a,
-0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x28, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00,
-0x46, 0x26, 0x02, 0x00, 0x44, 0x00, 0x00, 0x20, 0x58, 0x71, 0x00, 0x00, 0x14, 0x01, 0x00, 0x40,
-0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x80, 0xd8, 0x04, 0x53, 0x80, 0x4c, 0x44, 0x41, 0x00, 0x00,
-0x40, 0x12, 0x90, 0x02, 0x4e, 0x13, 0xff, 0xf6, 0x47, 0xe6, 0x02, 0x00, 0x14, 0x1f, 0x00, 0x40,
-0x2e, 0x87, 0xe6, 0x20, 0x4e, 0x83, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x28,
-0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x27, 0x44, 0x00, 0x00, 0xe8,
-0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe4, 0x94, 0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00,
-0x46, 0x14, 0x30, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x30, 0x00, 0x58, 0x00, 0x0d, 0x24,
-0x14, 0x10, 0x00, 0x00, 0x46, 0x36, 0x02, 0x00, 0x44, 0x20, 0x00, 0x20, 0x58, 0x71, 0x80, 0x00,
-0x14, 0x21, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x80, 0x96, 0x04, 0x03, 0x80, 0x4c,
-0x44, 0x51, 0x00, 0x00, 0x40, 0x10, 0x14, 0x02, 0x4e, 0x13, 0xff, 0xf6, 0x46, 0x76, 0x02, 0x00,
-0x14, 0x13, 0x80, 0x40, 0x2e, 0x47, 0xe6, 0x20, 0x4e, 0x43, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10,
-0x58, 0x10, 0x80, 0x68, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x67,
-0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe4, 0x52, 0x4e, 0x63, 0x00, 0x0a,
-0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x38, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x38, 0x00,
-0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00, 0x46, 0x36, 0x02, 0x00, 0x44, 0x10, 0x00, 0x20,
-0x58, 0x71, 0x80, 0x00, 0x14, 0x11, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x80, 0x54,
-0x04, 0x03, 0x80, 0x4c, 0x44, 0x21, 0x00, 0x00, 0x40, 0x10, 0x08, 0x02, 0x4e, 0x13, 0xff, 0xf6,
-0x46, 0x86, 0x02, 0x00, 0x14, 0x14, 0x00, 0x40, 0x2e, 0x57, 0xe6, 0x20, 0x4e, 0x53, 0x00, 0x08,
-0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0xa8, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10,
-0x58, 0x10, 0x80, 0xa7, 0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe4, 0x10,
-0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x08, 0x00, 0x58, 0x00, 0x0d, 0x24,
+0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x87, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x00, 0x00, 0xe8,
+0x49, 0xff, 0xed, 0xe2, 0x04, 0x9f, 0x80, 0x03, 0x4e, 0x93, 0x00, 0x10, 0x46, 0x10, 0x50, 0x00,
+0x04, 0x2f, 0x80, 0x01, 0x58, 0x10, 0x8b, 0xb8, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xed, 0xd4,
+0x46, 0x18, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x46, 0x10, 0x50, 0x00, 0x04, 0x2f, 0x80, 0x01,
+0x58, 0x10, 0x8b, 0xb8, 0x44, 0x00, 0x00, 0x70, 0x49, 0xff, 0xed, 0xc6, 0x46, 0x19, 0x00, 0x00,
+0x04, 0x2f, 0x80, 0x01, 0x44, 0x00, 0x00, 0xa0, 0x49, 0xff, 0xed, 0xbe, 0x46, 0x18, 0x20, 0x24,
+0x04, 0x2f, 0x80, 0x01, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x49, 0xff, 0xed, 0xb4,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x89, 0x38, 0x04, 0x1f, 0x80, 0x01, 0x44, 0x00, 0x04, 0x1c,
+0x49, 0xff, 0xed, 0xc8, 0x40, 0xa0, 0x04, 0x08, 0x40, 0xa5, 0x74, 0x09, 0x4e, 0xa3, 0xff, 0xf2,
+0x04, 0x2f, 0x80, 0x01, 0x46, 0x10, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
+0x49, 0xff, 0xed, 0x9a, 0x46, 0x46, 0x02, 0x00, 0x58, 0x32, 0x00, 0x00, 0x58, 0x01, 0x80, 0x00,
+0x44, 0x50, 0x00, 0x27, 0x44, 0x10, 0x00, 0x02, 0x14, 0x52, 0x00, 0x00, 0x14, 0x51, 0x80, 0x01,
+0x14, 0x10, 0x00, 0x83, 0x04, 0x2f, 0x80, 0x01, 0x4e, 0x23, 0x00, 0x20, 0x47, 0xe6, 0x02, 0x00,
+0x47, 0xc0, 0x40, 0x00, 0x46, 0xa0, 0x02, 0x74, 0x46, 0x3c, 0x00, 0x00, 0x46, 0x7f, 0x00, 0x00,
+0x46, 0x44, 0x38, 0x00, 0x59, 0xef, 0x02, 0x00, 0x50, 0x2f, 0x0b, 0x00, 0x58, 0xa5, 0x00, 0x27,
+0x50, 0x11, 0x00, 0x04, 0x58, 0x31, 0x84, 0x00, 0x50, 0x90, 0xb5, 0x10, 0x50, 0x81, 0x7d, 0x08,
+0x50, 0x60, 0x80, 0x20, 0x48, 0x00, 0x00, 0x24, 0x04, 0x6f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x62, 0xc0, 0x2c, 0x47, 0xe6, 0x02, 0x00, 0x47, 0xc1, 0x40, 0x00, 0x46, 0xa0, 0x02, 0x74,
+0x46, 0x3c, 0x00, 0x00, 0x46, 0x7f, 0x00, 0x00, 0x46, 0x44, 0x38, 0x00, 0x59, 0xef, 0x02, 0x00,
+0x50, 0x2f, 0x1b, 0x00, 0x58, 0xa5, 0x00, 0x27, 0x50, 0x11, 0x00, 0x04, 0x58, 0x31, 0x84, 0x00,
+0x50, 0x90, 0xb5, 0x10, 0x50, 0x81, 0x7d, 0x08, 0x50, 0x60, 0x80, 0x20, 0x15, 0xcf, 0x00, 0x00,
+0x14, 0xa1, 0x00, 0x00, 0x44, 0xa0, 0x05, 0x95, 0x14, 0x30, 0x80, 0x00, 0x14, 0xa4, 0x80, 0x00,
+0x14, 0x74, 0x00, 0x00, 0x14, 0x43, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x44, 0x30, 0x08, 0x00,
+0x58, 0x60, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00, 0x46, 0xa6, 0x02, 0x04, 0x59, 0xc0, 0x00, 0x00,
+0x14, 0x30, 0x80, 0x56, 0x44, 0x40, 0x00, 0x00, 0x58, 0x50, 0x00, 0x00, 0x59, 0xe0, 0x00, 0x00,
+0x46, 0x04, 0x40, 0x0c, 0x58, 0x90, 0x80, 0x00, 0x46, 0x80, 0x02, 0x20, 0x44, 0x30, 0x00, 0x33,
+0x44, 0x10, 0x00, 0x10, 0x14, 0x43, 0x00, 0x57, 0x58, 0x84, 0x0d, 0xa2, 0x14, 0x43, 0x80, 0x58,
+0x58, 0x22, 0x80, 0x00, 0x14, 0x35, 0x00, 0x50, 0x14, 0x1e, 0x00, 0xe0, 0x58, 0x00, 0x01, 0x00,
+0x45, 0xc1, 0x50, 0x68, 0x15, 0xc2, 0x80, 0xc0, 0x14, 0x0f, 0x01, 0xc1, 0x14, 0x84, 0x81, 0xb3,
+0x44, 0x80, 0x13, 0x00, 0x14, 0x81, 0x00, 0x82, 0x04, 0x7f, 0x80, 0x03, 0x4e, 0x73, 0x00, 0x18,
+0x05, 0xef, 0x80, 0x03, 0x58, 0x55, 0x00, 0x00, 0x58, 0x91, 0x00, 0x00, 0x46, 0x07, 0xa8, 0x28,
+0x46, 0x8a, 0x77, 0xb6, 0x58, 0x00, 0x03, 0x80, 0x58, 0x84, 0x0f, 0x71, 0x15, 0xe2, 0x80, 0x40,
+0x14, 0x04, 0x80, 0x60, 0x14, 0x81, 0x00, 0x61, 0x48, 0x00, 0x00, 0x18, 0x58, 0x65, 0x00, 0x00,
+0x46, 0x10, 0x10, 0x00, 0x58, 0x41, 0x00, 0x00, 0x46, 0x77, 0xa8, 0x38, 0x59, 0xc1, 0x00, 0x00,
+0x46, 0xaa, 0x67, 0xb6, 0x58, 0x73, 0x84, 0x80, 0x58, 0xa5, 0x0f, 0x71, 0x14, 0x13, 0x00, 0x40,
+0x14, 0x72, 0x00, 0x60, 0x14, 0xae, 0x00, 0x61, 0x46, 0x86, 0x02, 0x00, 0x46, 0x36, 0x02, 0x00,
+0x47, 0xc0, 0x90, 0x70, 0x59, 0xe4, 0x00, 0x00, 0x46, 0x50, 0x14, 0x20, 0x58, 0x31, 0x81, 0x50,
+0x59, 0xce, 0x00, 0x01, 0x44, 0x90, 0x04, 0x1f, 0x14, 0x94, 0x00, 0x64, 0x15, 0xc1, 0x80, 0x00,
+0x14, 0x5f, 0x00, 0x55, 0x50, 0x0e, 0x00, 0x04, 0x58, 0x94, 0x00, 0x00, 0x46, 0x80, 0x21, 0x00,
+0x50, 0x21, 0x80, 0x08, 0x14, 0x0f, 0x80, 0x09, 0x04, 0x7f, 0x80, 0x05, 0x58, 0xa1, 0x80, 0x00,
+0x58, 0x84, 0x00, 0x01, 0x59, 0xc1, 0x00, 0x00, 0x46, 0x40, 0x90, 0x70, 0x58, 0x42, 0x00, 0x05,
+0x14, 0x45, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x88, 0x26, 0x04, 0x14, 0x80, 0x65,
+0x54, 0x60, 0x80, 0x1f, 0x4e, 0x63, 0xff, 0xf8, 0x14, 0x85, 0x00, 0x00, 0x04, 0x2f, 0x80, 0x09,
+0x04, 0x6e, 0x00, 0x00, 0x14, 0x25, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x88, 0x14,
+0x04, 0x34, 0x80, 0x65, 0x54, 0x01, 0x80, 0x1f, 0x4e, 0x03, 0xff, 0xf8, 0x14, 0x85, 0x00, 0x00,
+0x54, 0x13, 0x0f, 0xfc, 0x04, 0x6e, 0x00, 0x00, 0x40, 0x20, 0x88, 0x09, 0x54, 0x43, 0x0f, 0xfc,
+0x50, 0x53, 0x80, 0x01, 0x40, 0x62, 0x08, 0x09, 0x51, 0xe1, 0x00, 0x0a, 0x54, 0x72, 0x80, 0xff,
+0x40, 0xff, 0x18, 0x07, 0x4e, 0xf3, 0x00, 0x10, 0x50, 0x03, 0x00, 0x0a, 0x40, 0xf0, 0x08, 0x07,
+0x4e, 0xf3, 0x00, 0x0a, 0x5c, 0xf3, 0x02, 0x1f, 0x4e, 0xf2, 0x00, 0x06, 0x5c, 0xf3, 0x01, 0xe3,
+0x4e, 0xf2, 0x00, 0x06, 0x5c, 0xf3, 0x80, 0x03, 0x4e, 0xf3, 0xff, 0xb8, 0x04, 0x2f, 0x80, 0x03,
+0x14, 0x7f, 0x80, 0x05, 0x50, 0x03, 0x7e, 0x1d, 0x4e, 0x23, 0x00, 0x54, 0x40, 0x30, 0x00, 0x13,
+0x5c, 0xf1, 0x80, 0x3c, 0x4e, 0xf3, 0x00, 0x22, 0x04, 0x3f, 0x80, 0x04, 0x3e, 0x4f, 0xf8, 0x70,
+0x04, 0x1f, 0x80, 0x02, 0x50, 0x10, 0x83, 0x20, 0x40, 0x51, 0x90, 0x00, 0x04, 0x0f, 0x80, 0x03,
+0x47, 0xe8, 0x08, 0x08, 0x04, 0x4f, 0x80, 0x08, 0x59, 0xef, 0x00, 0x80, 0x44, 0x20, 0x08, 0x00,
+0x14, 0x20, 0x80, 0x05, 0x14, 0x00, 0x80, 0x06, 0x14, 0x00, 0x80, 0x07, 0x15, 0xe2, 0x00, 0x01,
+0x15, 0xe2, 0x80, 0xda, 0x48, 0x00, 0x00, 0x82, 0x47, 0xe6, 0x02, 0x00, 0x04, 0x3f, 0x00, 0x56,
+0x04, 0x5f, 0x80, 0x02, 0x50, 0x52, 0x83, 0x20, 0x58, 0x4f, 0x00, 0x00, 0x14, 0x32, 0x80, 0x05,
+0x04, 0x22, 0x00, 0x57, 0x58, 0x02, 0x00, 0x00, 0x14, 0x22, 0x80, 0x06, 0x04, 0x10, 0x00, 0x58,
+0x59, 0xe0, 0x00, 0x00, 0x14, 0x12, 0x80, 0x07, 0x04, 0x3f, 0x00, 0x62, 0x04, 0x4f, 0x80, 0x08,
+0x58, 0x20, 0x00, 0x00, 0x14, 0x32, 0x00, 0x01, 0x04, 0x0f, 0x80, 0x04, 0x04, 0x51, 0x00, 0x63,
+0x3e, 0x1f, 0xf8, 0x70, 0x41, 0xe0, 0x04, 0x00, 0x14, 0x5f, 0x00, 0xda, 0x48, 0x00, 0x00, 0x56,
+0x40, 0x50, 0x00, 0x13, 0x5c, 0xf2, 0x80, 0x3c, 0x4e, 0xf3, 0x00, 0x26, 0x04, 0x5f, 0x80, 0x02,
+0x05, 0xef, 0x80, 0x04, 0x3e, 0x8f, 0xf8, 0x70, 0x46, 0x08, 0x08, 0x08, 0x04, 0x2f, 0x80, 0x06,
+0x04, 0x1f, 0x80, 0x07, 0x58, 0x00, 0x00, 0x80, 0x44, 0x30, 0x00, 0x00, 0x40, 0x4f, 0x20, 0x00,
+0x50, 0x72, 0x83, 0x50, 0x50, 0x62, 0x83, 0x54, 0x44, 0x80, 0x08, 0x00, 0x14, 0x81, 0x00, 0x00,
+0x14, 0x33, 0x80, 0x00, 0x14, 0x33, 0x00, 0x00, 0x14, 0x00, 0x80, 0x01, 0x14, 0x02, 0x00, 0xde,
+0x48, 0x00, 0x00, 0x2c, 0x46, 0x16, 0x02, 0x00, 0x04, 0x40, 0x80, 0x56, 0x04, 0x2f, 0x80, 0x06,
+0x58, 0x50, 0x80, 0x00, 0x14, 0x41, 0x00, 0x00, 0x05, 0xe2, 0x80, 0x57, 0x04, 0x1f, 0x80, 0x02,
+0x58, 0x02, 0x80, 0x00, 0x15, 0xe0, 0x80, 0xd4, 0x04, 0x30, 0x00, 0x58, 0x58, 0x40, 0x00, 0x00,
+0x14, 0x30, 0x80, 0xd5, 0x04, 0x52, 0x00, 0x62, 0x04, 0x2f, 0x80, 0x07, 0x59, 0xe0, 0x00, 0x00,
+0x14, 0x51, 0x00, 0x01, 0x04, 0x0f, 0x80, 0x04, 0x04, 0x4f, 0x00, 0x63, 0x3e, 0x1f, 0xf8, 0x70,
+0x40, 0x30, 0x04, 0x00, 0x14, 0x41, 0x80, 0xde, 0x04, 0x5f, 0x80, 0x03, 0x45, 0xe0, 0x00, 0x02,
+0x50, 0x02, 0x80, 0x01, 0x40, 0x30, 0x00, 0x13, 0x14, 0x3f, 0x80, 0x03, 0x4c, 0x3f, 0x7d, 0xa6,
+0x49, 0xff, 0xec, 0xc2, 0x04, 0x2f, 0x80, 0x01, 0x4e, 0x23, 0x00, 0x08, 0x46, 0x46, 0x02, 0x00,
+0x14, 0x22, 0x00, 0x5f, 0x48, 0x00, 0x00, 0x0e, 0x04, 0x2f, 0x80, 0x01, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x22, 0xc0, 0x08, 0x46, 0x36, 0x02, 0x01, 0x45, 0xe0, 0x00, 0x00, 0x15, 0xe1, 0x80, 0x5f,
+0x51, 0xff, 0x80, 0x2c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x14, 0x0f, 0x80, 0x00, 0x3c, 0x03, 0xf0, 0xd8, 0x04, 0x1f, 0x80, 0x00,
+0x49, 0xff, 0xfb, 0x4a, 0x04, 0x2f, 0x80, 0x00, 0x46, 0x18, 0x1b, 0xd6, 0x58, 0x10, 0x8c, 0x7f,
+0x44, 0x00, 0x00, 0x6c, 0x49, 0xff, 0xeb, 0x70, 0x04, 0x2f, 0x80, 0x00, 0x46, 0x18, 0xc0, 0x08,
+0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44, 0x49, 0xff, 0xeb, 0x66, 0x46, 0x1f, 0x8b, 0x00,
+0x04, 0x2f, 0x80, 0x00, 0x44, 0x00, 0x00, 0x48, 0x58, 0x10, 0x87, 0x27, 0x49, 0xff, 0xeb, 0x5c,
+0x04, 0x0f, 0x80, 0x00, 0x4e, 0x03, 0x00, 0x06, 0x3e, 0x3f, 0xe1, 0xb2, 0x48, 0x00, 0x00, 0x0a,
+0x04, 0x1f, 0x80, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x12, 0xc0, 0x1c, 0x3e, 0x3f, 0xe1, 0xb3,
+0x00, 0x41, 0x80, 0x00, 0x4e, 0x43, 0x00, 0x16, 0x04, 0x2f, 0x80, 0x00, 0x46, 0x10, 0x24, 0x44,
+0x58, 0x10, 0x84, 0x08, 0x44, 0x00, 0x06, 0x10, 0x49, 0xff, 0xeb, 0x3e, 0x46, 0x18, 0x3f, 0xf0,
+0x04, 0x2f, 0x80, 0x00, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x49, 0xff, 0xeb, 0x34,
+0x46, 0x56, 0x02, 0x00, 0x58, 0x52, 0x81, 0x48, 0x14, 0x5f, 0x80, 0x01, 0x04, 0x8f, 0x80, 0x00,
+0x44, 0x90, 0x00, 0x00, 0x2f, 0xe7, 0xe3, 0xc0, 0x4f, 0xe3, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10,
+0x58, 0x10, 0x80, 0x88, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x87,
+0x44, 0x00, 0x00, 0xe8, 0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xeb, 0x16, 0x4e, 0x93, 0x00, 0x08,
+0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0xb8, 0x48, 0x00, 0x00, 0x1a, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x92, 0xc0, 0x08, 0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0xaa, 0x48, 0x00, 0x00, 0x10,
+0x44, 0x50, 0x00, 0x02, 0x4c, 0x92, 0xc0, 0x08, 0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0x99,
+0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0x8a, 0x44, 0x00, 0x00, 0x70,
+0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xea, 0xf0, 0x46, 0x18, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0,
+0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xea, 0xe8, 0x46, 0x18, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0,
+0x44, 0x00, 0x00, 0xc8, 0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xea, 0xde, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x86, 0x62, 0x58, 0x14, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xea, 0xf2,
+0x40, 0x10, 0x70, 0x09, 0x4e, 0x13, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x24, 0x44, 0x00, 0x00, 0xc8,
+0x58, 0x10, 0x80, 0xc0, 0x58, 0x24, 0x00, 0x00, 0x49, 0xff, 0xea, 0xc6, 0x46, 0x66, 0x02, 0x00,
+0x58, 0x03, 0x00, 0x00, 0x58, 0x70, 0x00, 0x00, 0x44, 0x50, 0x00, 0x27, 0x44, 0x40, 0x00, 0x02,
+0x14, 0x53, 0x00, 0x00, 0x14, 0x50, 0x00, 0x01, 0x14, 0x43, 0x80, 0x83, 0x4e, 0x83, 0x00, 0x20,
+0x47, 0xe6, 0x02, 0x00, 0x46, 0x70, 0x40, 0x00, 0x46, 0x60, 0x02, 0x74, 0x46, 0x0c, 0x00, 0x00,
+0x46, 0x3f, 0x00, 0x00, 0x46, 0x14, 0x08, 0x00, 0x59, 0xef, 0x02, 0x00, 0x51, 0xcf, 0x0b, 0x00,
+0x58, 0x63, 0x00, 0x27, 0x50, 0xae, 0x00, 0x04, 0x58, 0x00, 0x04, 0x00, 0x50, 0x55, 0x35, 0x10,
+0x50, 0x4e, 0x7d, 0x08, 0x50, 0x25, 0x00, 0x20, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x82, 0xc0, 0x2c, 0x47, 0xe6, 0x02, 0x00, 0x46, 0x71, 0x40, 0x00, 0x46, 0x60, 0x02, 0x74,
+0x46, 0x0c, 0x00, 0x00, 0x46, 0x3f, 0x00, 0x00, 0x46, 0x14, 0x08, 0x00, 0x59, 0xef, 0x02, 0x00,
+0x51, 0xcf, 0x1b, 0x00, 0x58, 0x63, 0x00, 0x27, 0x50, 0xae, 0x00, 0x04, 0x58, 0x00, 0x04, 0x00,
+0x50, 0x55, 0x35, 0x10, 0x50, 0x4e, 0x7d, 0x08, 0x50, 0x25, 0x00, 0x20, 0x14, 0x7f, 0x00, 0x00,
+0x44, 0x70, 0x05, 0x95, 0x14, 0x6e, 0x00, 0x00, 0x14, 0x05, 0x00, 0x00, 0x14, 0x72, 0x80, 0x00,
+0x14, 0x32, 0x00, 0x00, 0x14, 0x11, 0x00, 0x00, 0x46, 0x56, 0x02, 0x04, 0x46, 0x06, 0x02, 0x00,
+0x58, 0x20, 0x00, 0x00, 0x58, 0x12, 0x80, 0x00, 0x46, 0x30, 0x20, 0x00, 0x44, 0x70, 0x00, 0x03,
+0x44, 0x60, 0x00, 0x10, 0x44, 0x41, 0x00, 0x68, 0x14, 0x72, 0x80, 0x50, 0x14, 0x60, 0x00, 0xe0,
+0x14, 0x41, 0x00, 0xc0, 0x14, 0x30, 0x80, 0x40, 0x4e, 0x83, 0x00, 0x06, 0x3e, 0x0f, 0xe1, 0xb2,
+0x48, 0x00, 0x00, 0x08, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x82, 0xc0, 0x0c, 0x3e, 0x0f, 0xe1, 0xb3,
+0x00, 0x10, 0x00, 0x00, 0x4e, 0x13, 0x00, 0x06, 0x46, 0x33, 0x00, 0x00, 0x14, 0x31, 0x00, 0x51,
+0x4e, 0x93, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x13, 0x00,
+0x48, 0x00, 0x00, 0x20, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x92, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x00,
+0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x12, 0x00, 0x48, 0x00, 0x00, 0x14, 0x44, 0x50, 0x00, 0x02,
+0x4c, 0x92, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x11, 0x00,
+0x48, 0x00, 0x00, 0x08, 0x46, 0x06, 0x02, 0x00, 0x58, 0x00, 0x02, 0x08, 0x44, 0x30, 0x10, 0x00,
+0x58, 0x51, 0x00, 0x00, 0x46, 0x10, 0x07, 0x38, 0x47, 0xe8, 0x07, 0x38, 0x14, 0x30, 0x00, 0x00,
+0x14, 0x12, 0x80, 0x50, 0x15, 0xe2, 0x80, 0x50, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x85, 0x8c,
+0x04, 0x0f, 0x80, 0x01, 0x04, 0x40, 0x00, 0x00, 0x40, 0x22, 0x04, 0x08, 0x40, 0x21, 0x74, 0x09,
+0x4e, 0x23, 0xff, 0xf4, 0x46, 0x56, 0x02, 0x00, 0x46, 0x10, 0x07, 0x38, 0x47, 0xe4, 0x07, 0x38,
+0x14, 0x12, 0x80, 0x50, 0x15, 0xe2, 0x80, 0x50, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x85, 0x74,
+0x04, 0x0f, 0x80, 0x01, 0x04, 0x40, 0x00, 0x00, 0x40, 0x22, 0x04, 0x08, 0x40, 0x21, 0x74, 0x09,
+0x4e, 0x23, 0xff, 0xf4, 0x46, 0x56, 0x02, 0x00, 0x46, 0x10, 0x07, 0x38, 0x47, 0xe2, 0x07, 0x38,
+0x14, 0x12, 0x80, 0x50, 0x15, 0xe2, 0x80, 0x50, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x85, 0x5c,
+0x04, 0x0f, 0x80, 0x01, 0x04, 0x40, 0x00, 0x00, 0x40, 0x22, 0x04, 0x08, 0x40, 0x21, 0x74, 0x09,
+0x4e, 0x23, 0xff, 0xf4, 0x50, 0x24, 0x80, 0x01, 0x47, 0xe6, 0x02, 0x00, 0x46, 0x10, 0x07, 0x38,
+0x40, 0x91, 0x00, 0x13, 0x44, 0x50, 0x00, 0x04, 0x14, 0x1f, 0x00, 0x50, 0x4c, 0x92, 0xfe, 0x94,
+0x04, 0x3f, 0x80, 0x00, 0x50, 0x51, 0x80, 0x88, 0x50, 0x41, 0x80, 0x8a, 0x4e, 0x33, 0x00, 0x06,
+0x3e, 0x3f, 0xe1, 0xb2, 0x48, 0x00, 0x00, 0x0a, 0x04, 0x0f, 0x80, 0x00, 0x45, 0xe0, 0x00, 0x01,
+0x4c, 0x0f, 0x40, 0x30, 0x3e, 0x3f, 0xe1, 0xb3, 0x00, 0x11, 0x80, 0x00, 0x4e, 0x13, 0x00, 0x2a,
+0x46, 0x26, 0x02, 0x00, 0x04, 0x11, 0x00, 0xa4, 0x40, 0x02, 0x88, 0x08, 0x3e, 0x2f, 0xf8, 0x70,
+0x40, 0x50, 0x08, 0x00, 0x14, 0x12, 0x80, 0x01, 0x47, 0xe6, 0x02, 0x00, 0x04, 0x3f, 0x00, 0xa5,
+0x40, 0x02, 0x08, 0x08, 0x04, 0x5f, 0x80, 0x00, 0x40, 0x40, 0x08, 0x00, 0x14, 0x32, 0x00, 0x01,
+0x4e, 0x53, 0x00, 0x26, 0x05, 0xe1, 0x00, 0x89, 0x46, 0x16, 0x02, 0x00, 0x15, 0xe0, 0x80, 0xa2,
+0x58, 0x30, 0x80, 0x00, 0x04, 0x41, 0x00, 0x8b, 0x14, 0x41, 0x80, 0xa3, 0x48, 0x00, 0x00, 0x18,
+0x46, 0x06, 0x02, 0x00, 0x05, 0xe0, 0x00, 0xa2, 0x40, 0x52, 0x88, 0x08, 0x3e, 0x2f, 0xf8, 0x70,
+0x40, 0x12, 0x88, 0x00, 0x15, 0xe0, 0x80, 0x01, 0x58, 0x30, 0x00, 0x00, 0x04, 0x51, 0x80, 0xa3,
+0x40, 0x42, 0x08, 0x08, 0x40, 0x02, 0x08, 0x00, 0x14, 0x50, 0x00, 0x01, 0x49, 0xff, 0xea, 0x84,
+0x04, 0x2f, 0x80, 0x00, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x22, 0xc0, 0x2c, 0x2e, 0x37, 0xe1, 0xb2,
+0x4e, 0x33, 0x00, 0x1c, 0x2e, 0x17, 0xe1, 0xb3, 0x4e, 0x13, 0x00, 0x18, 0x3c, 0x5d, 0xfe, 0xa6,
+0x46, 0x16, 0x02, 0x01, 0x59, 0xe0, 0x80, 0x00, 0x14, 0x50, 0x80, 0xa4, 0x14, 0x5f, 0x00, 0xa2,
+0x58, 0x30, 0x80, 0x00, 0x3c, 0x4d, 0xfe, 0xa8, 0x58, 0x00, 0x80, 0x00, 0x14, 0x41, 0x80, 0xa5,
+0x14, 0x40, 0x00, 0xa3, 0x48, 0x00, 0x00, 0x0e, 0x3c, 0x2d, 0xfe, 0xa6, 0x47, 0xe6, 0x02, 0x01,
+0x14, 0x2f, 0x00, 0xa2, 0x58, 0x0f, 0x00, 0x00, 0x3c, 0x4d, 0xfe, 0xa8, 0x14, 0x40, 0x00, 0xa3,
+0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xf4, 0x58, 0x60, 0x00, 0x00, 0x3c, 0x03, 0xf0, 0xd8, 0x58, 0x13, 0x00, 0x00,
+0x49, 0xff, 0xf8, 0xf2, 0x46, 0x18, 0x1b, 0x06, 0x58, 0x10, 0x8e, 0x07, 0x44, 0x00, 0x00, 0x6c,
+0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe9, 0x18, 0x46, 0x1f, 0x8b, 0x00, 0x58, 0x10, 0x87, 0x27,
+0x44, 0x00, 0x00, 0x48, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe9, 0x0e, 0x46, 0x18, 0x00, 0x6d,
+0x58, 0x10, 0x85, 0xe4, 0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe9, 0x04,
+0x46, 0x26, 0x02, 0x00, 0x58, 0x41, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 0x44, 0x30, 0x00, 0x27,
+0x44, 0x10, 0x00, 0x02, 0x14, 0x31, 0x00, 0x00, 0x14, 0x32, 0x00, 0x01, 0x14, 0x10, 0x00, 0x83,
+0x4e, 0x63, 0x00, 0x1c, 0x46, 0x86, 0x02, 0x00, 0x46, 0x90, 0x40, 0x00, 0x46, 0x70, 0x02, 0x74,
+0x46, 0x4c, 0x00, 0x00, 0x46, 0x1f, 0x00, 0x00, 0x58, 0x84, 0x02, 0x00, 0x50, 0x54, 0x0b, 0x00,
+0x58, 0x73, 0x80, 0x27, 0x50, 0x32, 0x80, 0x04, 0x58, 0x42, 0x04, 0x00, 0x50, 0x21, 0xb5, 0x10,
+0x50, 0x02, 0xfd, 0x08, 0x48, 0x00, 0x00, 0x1e, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x26,
+0x46, 0x86, 0x02, 0x00, 0x46, 0x91, 0x40, 0x00, 0x46, 0x70, 0x02, 0x74, 0x46, 0x4c, 0x00, 0x00,
+0x46, 0x1f, 0x00, 0x00, 0x58, 0x84, 0x02, 0x00, 0x50, 0x54, 0x1b, 0x00, 0x58, 0x73, 0x80, 0x27,
+0x50, 0x32, 0x80, 0x04, 0x58, 0x42, 0x04, 0x00, 0x50, 0x21, 0xb5, 0x10, 0x50, 0x02, 0xfd, 0x08,
+0x14, 0x94, 0x00, 0x00, 0x44, 0x90, 0x05, 0x95, 0x14, 0x72, 0x80, 0x00, 0x14, 0x41, 0x80, 0x00,
+0x14, 0x91, 0x00, 0x00, 0x14, 0x10, 0x00, 0x00, 0x46, 0x36, 0x02, 0x04, 0x46, 0x16, 0x02, 0x00,
+0x59, 0xe0, 0x80, 0x00, 0x58, 0xa1, 0x80, 0x00, 0x47, 0xc0, 0x20, 0x00, 0x44, 0x20, 0x00, 0x03,
+0x44, 0x40, 0x00, 0x10, 0x44, 0x01, 0x00, 0x68, 0x14, 0x21, 0x80, 0x50, 0x14, 0x40, 0x80, 0xe0,
+0x14, 0x0f, 0x00, 0xc0, 0x46, 0x18, 0x20, 0x24, 0x15, 0xc5, 0x00, 0x40, 0x58, 0x10, 0x80, 0xc0,
+0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe8, 0x8e, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x84, 0x12, 0x44, 0x00, 0x04, 0x1c, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe8, 0xa2,
+0x40, 0x50, 0x70, 0x09, 0x4e, 0x53, 0xff, 0xf4, 0x46, 0x86, 0x02, 0x01, 0x14, 0x8f, 0x80, 0x01,
+0x46, 0x10, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xe8, 0x72, 0x04, 0x7f, 0x80, 0x01, 0x47, 0xc6, 0x02, 0x00, 0x58, 0x73, 0x8d, 0x24,
+0x46, 0x86, 0x02, 0x00, 0x14, 0x7f, 0x80, 0x01, 0x58, 0x84, 0x01, 0x24, 0x3e, 0x7f, 0xdc, 0x8c,
+0x50, 0x93, 0xff, 0xf4, 0x2f, 0xe7, 0xe3, 0xc0, 0x4f, 0xe3, 0x00, 0x06, 0x04, 0x14, 0x80, 0x00,
+0x48, 0x00, 0x00, 0x04, 0x04, 0x14, 0x80, 0x01, 0x44, 0x00, 0x00, 0xd4, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xe8, 0x52, 0x04, 0x13, 0xff, 0xff, 0x44, 0x00, 0x00, 0x14, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xe8, 0x4a, 0x4e, 0x63, 0x00, 0x08, 0x04, 0x13, 0x80, 0x00, 0x14, 0x1e, 0x03, 0x49,
+0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x08, 0x04, 0x33, 0x80, 0x00,
+0x04, 0x2f, 0x80, 0x01, 0x14, 0x31, 0x00, 0x00, 0x46, 0x06, 0x02, 0x00, 0x46, 0x10, 0x50, 0x04,
+0x58, 0x50, 0x00, 0x00, 0x58, 0x10, 0x80, 0xf7, 0x45, 0xe0, 0x00, 0x01, 0x14, 0x10, 0x00, 0x41,
+0x15, 0xe2, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x83, 0xae, 0x04, 0x44, 0x00, 0x00,
+0x54, 0x32, 0x00, 0x08, 0x4e, 0x33, 0xff, 0xf8, 0x46, 0x56, 0x02, 0x00, 0x59, 0xe2, 0x80, 0x00,
+0x46, 0x20, 0x80, 0x04, 0x14, 0x32, 0x80, 0x40, 0x58, 0x21, 0x07, 0xf7, 0x44, 0x30, 0x00, 0x02,
+0x14, 0x2f, 0x00, 0x41, 0x14, 0x32, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x83, 0x94,
+0x04, 0x04, 0x00, 0x00, 0x54, 0x10, 0x00, 0x08, 0x4e, 0x13, 0xff, 0xf8, 0x46, 0x46, 0x02, 0x00,
+0x14, 0x12, 0x00, 0x40, 0x44, 0x10, 0x00, 0x04, 0x14, 0x12, 0x00, 0x40, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x83, 0x82, 0x04, 0x54, 0x00, 0x00, 0x54, 0x12, 0x80, 0x08, 0x4e, 0x13, 0xff, 0xf8,
+0x47, 0xe6, 0x02, 0x00, 0x50, 0x73, 0x80, 0x10, 0x3e, 0x5f, 0xdd, 0x4c, 0x14, 0x1f, 0x00, 0x40,
+0x50, 0x94, 0x80, 0x10, 0x4c, 0x72, 0xff, 0x88, 0x44, 0x00, 0x00, 0x18, 0x42, 0x23, 0x00, 0x24,
+0x3e, 0x4f, 0xfa, 0x34, 0x46, 0x06, 0x02, 0x00, 0x40, 0x11, 0x10, 0x00, 0x58, 0x00, 0x02, 0x64,
+0x0c, 0x30, 0x00, 0x01, 0x46, 0x56, 0x02, 0x00, 0x58, 0x52, 0x82, 0x7c, 0x1c, 0x30, 0x80, 0x01,
+0x4c, 0x02, 0xff, 0xf8, 0x44, 0x20, 0x00, 0x18, 0x42, 0x13, 0x08, 0x24, 0x51, 0xe2, 0x00, 0x30,
+0x40, 0x10, 0xf8, 0x00, 0x50, 0x02, 0xff, 0xc4, 0x0c, 0x50, 0x00, 0x01, 0x46, 0x46, 0x02, 0x00,
+0x58, 0x42, 0x02, 0x58, 0x1c, 0x50, 0x80, 0x01, 0x4c, 0x02, 0x7f, 0xf8, 0x49, 0xff, 0xe8, 0xdc,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x30, 0x46, 0x06, 0x02, 0x01, 0x58, 0x00, 0x02, 0x64,
+0x3e, 0x5f, 0xf8, 0x70, 0x46, 0x29, 0xfd, 0xfe, 0x40, 0x40, 0x14, 0x00, 0x58, 0x21, 0x0f, 0x78,
+0x41, 0xe2, 0x08, 0x00, 0x04, 0x1f, 0x00, 0x00, 0x46, 0x36, 0x02, 0x01, 0x1c, 0x10, 0x00, 0x01,
+0x58, 0x31, 0x82, 0x7c, 0x4c, 0x01, 0xff, 0xee, 0x50, 0x01, 0xff, 0xc4, 0x3e, 0x5f, 0xf8, 0x70,
+0x46, 0x29, 0xfd, 0xfe, 0x40, 0x40, 0x14, 0x00, 0x58, 0x21, 0x0f, 0xcc, 0x41, 0xe2, 0x08, 0x00,
+0x04, 0x1f, 0x00, 0x00, 0x46, 0x36, 0x02, 0x01, 0x1c, 0x10, 0x00, 0x01, 0x58, 0x31, 0x82, 0x58,
+0x4c, 0x01, 0xff, 0xee, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x3c, 0x03, 0xf0, 0xd8,
+0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf7, 0x48, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0xe8, 0x0c,
+0x46, 0x18, 0x1b, 0xd6, 0x3e, 0x7f, 0x84, 0x80, 0x58, 0x10, 0x8c, 0x7f, 0x44, 0x00, 0x00, 0x6c,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0xc0, 0x08, 0x58, 0x10, 0x82, 0xd0,
+0x44, 0x00, 0x00, 0x44, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x1f, 0x8b, 0x00,
+0x58, 0x10, 0x87, 0x27, 0x44, 0x00, 0x00, 0x48, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x46, 0x10, 0x50, 0x00, 0x58, 0x10, 0x8b, 0xb8, 0x44, 0x00, 0x00, 0x70, 0x58, 0x23, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x58, 0x23, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x82, 0xbc,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xe7, 0x4c, 0x40, 0x20, 0x70, 0x09,
+0x4e, 0x23, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x24, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
+0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe7, 0x20, 0x46, 0x96, 0x02, 0x00, 0x58, 0x54, 0x80, 0x00,
+0x58, 0x42, 0x80, 0x00, 0x44, 0x80, 0x00, 0x27, 0x44, 0x30, 0x00, 0x02, 0x14, 0x84, 0x80, 0x00,
+0x14, 0x82, 0x80, 0x01, 0x14, 0x32, 0x00, 0x83, 0x4e, 0x63, 0x00, 0x20, 0x46, 0xa6, 0x02, 0x00,
+0x47, 0xc0, 0x40, 0x00, 0x46, 0x90, 0x02, 0x74, 0x46, 0x7c, 0x00, 0x00, 0x46, 0x34, 0x00, 0x00,
+0x46, 0x1f, 0x00, 0x00, 0x58, 0xa5, 0x02, 0x00, 0x50, 0x85, 0x0b, 0x00, 0x58, 0x94, 0x80, 0x27,
+0x50, 0x54, 0x00, 0x04, 0x58, 0x73, 0x84, 0x00, 0x50, 0x42, 0xb5, 0x10, 0x50, 0x22, 0x80, 0x20,
+0x50, 0x04, 0x7d, 0x08, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x2c,
+0x46, 0xa6, 0x02, 0x00, 0x47, 0xc1, 0x40, 0x00, 0x46, 0x90, 0x02, 0x74, 0x46, 0x7c, 0x00, 0x00,
+0x46, 0x34, 0x00, 0x00, 0x46, 0x1f, 0x00, 0x00, 0x58, 0xa5, 0x02, 0x00, 0x50, 0x85, 0x1b, 0x00,
+0x58, 0x94, 0x80, 0x27, 0x50, 0x54, 0x00, 0x04, 0x58, 0x73, 0x84, 0x00, 0x50, 0x42, 0xb5, 0x10,
+0x50, 0x22, 0x80, 0x20, 0x50, 0x04, 0x7d, 0x08, 0x45, 0xe0, 0x05, 0x97, 0x15, 0xc5, 0x00, 0x00,
+0x14, 0x94, 0x00, 0x00, 0x14, 0x72, 0x80, 0x00, 0x15, 0xe2, 0x00, 0x00, 0x14, 0x31, 0x00, 0x00,
+0x14, 0x10, 0x00, 0x00, 0x46, 0x76, 0x02, 0x04, 0x44, 0x50, 0x00, 0x03, 0x46, 0x06, 0x02, 0x00,
+0x58, 0x40, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x46, 0x30, 0x20, 0x00, 0x59, 0xe0, 0x00, 0x00,
+0x46, 0x10, 0x90, 0x04, 0x14, 0x53, 0x80, 0x50, 0x58, 0x10, 0x8f, 0xf9, 0x44, 0x80, 0x00, 0x10,
+0x44, 0x51, 0x00, 0x68, 0x14, 0x80, 0x00, 0xe0, 0x14, 0x52, 0x00, 0xc0, 0x14, 0x31, 0x00, 0x40,
+0x14, 0x1f, 0x00, 0x41, 0x2e, 0x77, 0xe3, 0xc0, 0x4e, 0x73, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10,
+0x58, 0x10, 0x80, 0x88, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x87,
+0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe6, 0x8e, 0x4e, 0x63, 0x00, 0x0a,
+0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x00, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x00, 0x00,
+0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00, 0x46, 0x46, 0x02, 0x00, 0x46, 0x27, 0x10, 0x20,
+0x58, 0x32, 0x00, 0x00, 0x44, 0x10, 0x00, 0x20, 0x14, 0x22, 0x00, 0x47, 0x58, 0x71, 0x80, 0x00,
+0x14, 0x11, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x81, 0xee, 0x04, 0x03, 0x80, 0x4c,
+0x44, 0x51, 0x00, 0x00, 0x40, 0x30, 0x14, 0x02, 0x4e, 0x33, 0xff, 0xf6, 0x46, 0x46, 0x02, 0x00,
+0x59, 0xe2, 0x00, 0x00, 0x46, 0x17, 0x10, 0x00, 0x58, 0x10, 0x80, 0x02, 0x14, 0x32, 0x00, 0x40,
+0x14, 0x1f, 0x00, 0x47, 0x2e, 0x87, 0xe3, 0xc0, 0x4e, 0x83, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10,
+0x58, 0x10, 0x80, 0x08, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x07,
+0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe6, 0x3e, 0x4e, 0x63, 0x00, 0x0a,
+0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x28, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x28, 0x00,
+0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00, 0x46, 0x26, 0x02, 0x00, 0x44, 0x00, 0x00, 0x20,
+0x58, 0x71, 0x00, 0x00, 0x14, 0x01, 0x00, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x81, 0xa4,
+0x04, 0x53, 0x80, 0x4c, 0x44, 0x41, 0x00, 0x00, 0x40, 0x12, 0x90, 0x02, 0x4e, 0x13, 0xff, 0xf6,
+0x47, 0xe6, 0x02, 0x00, 0x14, 0x1f, 0x00, 0x40, 0x2e, 0x87, 0xe3, 0xc0, 0x4e, 0x83, 0x00, 0x08,
+0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x28, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10,
+0x58, 0x10, 0x80, 0x27, 0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe5, 0xfc,
+0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x30, 0x00, 0x58, 0x00, 0x0d, 0x24,
0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01,
-0x46, 0x14, 0x08, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00, 0x47, 0xe6, 0x02, 0x00,
-0x44, 0x30, 0x00, 0x20, 0x58, 0x7f, 0x00, 0x00, 0x14, 0x3f, 0x00, 0x40, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0x80, 0x12, 0x04, 0x13, 0x80, 0x4c, 0x44, 0x01, 0x00, 0x00, 0x40, 0x10, 0x80, 0x02,
-0x4e, 0x13, 0xff, 0xf6, 0x46, 0x46, 0x02, 0x00, 0x14, 0x12, 0x00, 0x40, 0x2e, 0x27, 0xe6, 0x20,
-0x4e, 0x23, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0xe8, 0x48, 0x00, 0x00, 0x06,
-0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0xe7, 0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xe3, 0xce, 0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x10, 0x00,
+0x46, 0x14, 0x30, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00, 0x46, 0x36, 0x02, 0x00,
+0x44, 0x20, 0x00, 0x20, 0x58, 0x71, 0x80, 0x00, 0x14, 0x21, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x81, 0x62, 0x04, 0x03, 0x80, 0x4c, 0x44, 0x51, 0x00, 0x00, 0x40, 0x10, 0x14, 0x02,
+0x4e, 0x13, 0xff, 0xf6, 0x46, 0x76, 0x02, 0x00, 0x14, 0x13, 0x80, 0x40, 0x2e, 0x47, 0xe3, 0xc0,
+0x4e, 0x43, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x68, 0x48, 0x00, 0x00, 0x06,
+0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0x67, 0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00,
+0x49, 0xff, 0xe5, 0xba, 0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x38, 0x00,
0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a,
-0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x10, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00,
-0x46, 0x76, 0x02, 0x00, 0x45, 0xe0, 0x00, 0x20, 0x15, 0xe3, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01,
-0x49, 0xff, 0x7f, 0xd2, 0x04, 0x33, 0x80, 0x4c, 0x44, 0x01, 0x00, 0x00, 0x40, 0x11, 0x80, 0x02,
-0x4e, 0x13, 0xff, 0xf6, 0x46, 0x56, 0x02, 0x00, 0x14, 0x12, 0x80, 0x40, 0x58, 0x02, 0x80, 0x00,
-0x50, 0x33, 0x00, 0xe4, 0x04, 0x40, 0x00, 0xa1, 0x41, 0xe1, 0x88, 0x08, 0x3e, 0x2f, 0xfa, 0xd0,
-0x40, 0x5f, 0x08, 0x00, 0x14, 0x42, 0x80, 0x01, 0x49, 0xff, 0xe4, 0x6e, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x62, 0xc0, 0x08, 0x3c, 0x1d, 0xff, 0x9a, 0x46, 0x46, 0x02, 0x01, 0x14, 0x12, 0x00, 0xa1,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
-0x51, 0xff, 0xff, 0xf4, 0x3c, 0x13, 0xf2, 0x06, 0x58, 0x60, 0x00, 0x00, 0x14, 0x1f, 0x80, 0x01,
-0x44, 0x80, 0x00, 0x00, 0x3e, 0x7f, 0x83, 0x48, 0x3f, 0xcf, 0x83, 0x84, 0x04, 0x0f, 0x80, 0x01,
-0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf4, 0x68, 0x46, 0x18, 0xf0, 0x92, 0x58, 0x10, 0x83, 0x00,
-0x44, 0x00, 0x00, 0xc0, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x10, 0xc6,
-0x58, 0x10, 0x80, 0xfe, 0x44, 0x00, 0x00, 0x6c, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x4e, 0x83, 0x00, 0x08, 0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0x80, 0x48, 0x00, 0x00, 0x1a,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x82, 0xc0, 0x08, 0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0x90,
-0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x02, 0x4c, 0x82, 0xc0, 0x08, 0x44, 0x00, 0x00, 0x70,
-0x44, 0x10, 0x00, 0xa0, 0x48, 0x00, 0x00, 0x06, 0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0xb0,
-0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0xcc, 0x44, 0x10, 0x80, 0x00,
-0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x07, 0x49, 0xff, 0x7f, 0x4c,
-0x44, 0x90, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x7f, 0x46, 0x44, 0x00, 0x04, 0x04,
-0x58, 0x13, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01, 0x40, 0x40, 0x38, 0x08, 0x40, 0x42, 0x74, 0x09,
-0x50, 0x94, 0x80, 0x01, 0x4e, 0x42, 0x00, 0x0e, 0x44, 0x50, 0x03, 0xe9, 0x4c, 0x92, 0xff, 0xec,
-0x3e, 0x0f, 0xd6, 0x64, 0x3e, 0x1f, 0xdf, 0x94, 0x44, 0x20, 0x0c, 0xdf, 0x49, 0xff, 0x6c, 0x0e,
-0x44, 0x00, 0x00, 0xcc, 0x44, 0x10, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x46, 0x18, 0xf0, 0x92, 0x44, 0x00, 0x00, 0xc0, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x44, 0x00, 0x00, 0x6c, 0x44, 0x10, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x50, 0x84, 0x00, 0x01, 0x44, 0x50, 0x00, 0x04, 0x4c, 0x82, 0xff, 0x72, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x04, 0x6c, 0x49, 0xff, 0xe2, 0xfa, 0x50, 0x13, 0x00, 0xe0, 0x40, 0x50, 0x88, 0x08,
-0x3e, 0x2f, 0xfa, 0xd0, 0x40, 0x42, 0x88, 0x00, 0x14, 0x02, 0x00, 0x01, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x04, 0x70, 0x49, 0xff, 0xe2, 0xea, 0x50, 0x33, 0x00, 0xe2, 0x40, 0x61, 0x88, 0x08,
-0x3e, 0x2f, 0xfa, 0xd0, 0x40, 0x63, 0x08, 0x00, 0x14, 0x03, 0x00, 0x01, 0x51, 0xff, 0x80, 0x0c,
-0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc,
-0x58, 0x60, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0f, 0x49, 0xff, 0xf3, 0xac,
-0x46, 0x18, 0x80, 0x08, 0x3e, 0x7f, 0x83, 0x48, 0x58, 0x10, 0x82, 0xd0, 0x44, 0x00, 0x00, 0x44,
-0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a,
-0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x3f, 0xf0,
-0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x44, 0x00, 0x06, 0x1c, 0x44, 0x10, 0x00, 0x04, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
-0x46, 0x18, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x7e, 0x9e, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xe2, 0x92, 0x40, 0x00, 0x70, 0x09, 0x4e, 0x03, 0xff, 0xf4,
-0x46, 0x10, 0x20, 0x04, 0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
-0x49, 0xff, 0xe2, 0x66, 0x40, 0x83, 0x14, 0x08, 0x3e, 0x2f, 0xfb, 0x0c, 0x40, 0x84, 0x08, 0x00,
-0x44, 0x70, 0x04, 0x28, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe2, 0x76,
-0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x48, 0x1c, 0x04, 0x00, 0x01, 0x4c, 0x72, 0xff, 0xf4,
-0x40, 0x43, 0x14, 0x08, 0x3e, 0x5f, 0xfb, 0x4c, 0x40, 0x82, 0x14, 0x00, 0x58, 0x03, 0x80, 0x00,
-0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe2, 0x62, 0x1c, 0x04, 0x00, 0x01, 0x50, 0x73, 0x80, 0x04,
-0x44, 0x50, 0x04, 0x68, 0x4c, 0x72, 0xff, 0xf4, 0x46, 0x10, 0x24, 0x44, 0x3e, 0x9f, 0x83, 0x48,
-0x58, 0x10, 0x84, 0x0b, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01,
+0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x38, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00,
+0x46, 0x36, 0x02, 0x00, 0x44, 0x10, 0x00, 0x20, 0x58, 0x71, 0x80, 0x00, 0x14, 0x11, 0x80, 0x40,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x81, 0x20, 0x04, 0x03, 0x80, 0x4c, 0x44, 0x21, 0x00, 0x00,
+0x40, 0x10, 0x08, 0x02, 0x4e, 0x13, 0xff, 0xf6, 0x46, 0x86, 0x02, 0x00, 0x14, 0x14, 0x00, 0x40,
+0x2e, 0x57, 0xe3, 0xc0, 0x4e, 0x53, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0xa8,
+0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0xa7, 0x44, 0x00, 0x00, 0xe8,
+0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe5, 0x78, 0x4e, 0x63, 0x00, 0x0a, 0x46, 0x06, 0x02, 0x00,
+0x46, 0x14, 0x08, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x08, 0x00, 0x58, 0x00, 0x0d, 0x24,
+0x14, 0x10, 0x00, 0x00, 0x47, 0xe6, 0x02, 0x00, 0x44, 0x30, 0x00, 0x20, 0x58, 0x7f, 0x00, 0x00,
+0x14, 0x3f, 0x00, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x80, 0xde, 0x04, 0x13, 0x80, 0x4c,
+0x44, 0x01, 0x00, 0x00, 0x40, 0x10, 0x80, 0x02, 0x4e, 0x13, 0xff, 0xf6, 0x46, 0x46, 0x02, 0x00,
+0x14, 0x12, 0x00, 0x40, 0x2e, 0x27, 0xe3, 0xc0, 0x4e, 0x23, 0x00, 0x08, 0x46, 0x10, 0x06, 0x10,
+0x58, 0x10, 0x80, 0xe8, 0x48, 0x00, 0x00, 0x06, 0x46, 0x10, 0x06, 0x10, 0x58, 0x10, 0x80, 0xe7,
+0x44, 0x00, 0x00, 0xe8, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe5, 0x36, 0x4e, 0x63, 0x00, 0x0a,
+0x46, 0x06, 0x02, 0x00, 0x46, 0x14, 0x10, 0x00, 0x58, 0x00, 0x0d, 0x24, 0x48, 0x00, 0x00, 0x0c,
+0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0a, 0x46, 0x06, 0x02, 0x01, 0x46, 0x14, 0x10, 0x00,
+0x58, 0x00, 0x0d, 0x24, 0x14, 0x10, 0x00, 0x00, 0x46, 0x76, 0x02, 0x00, 0x45, 0xe0, 0x00, 0x20,
+0x15, 0xe3, 0x80, 0x40, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x80, 0x9e, 0x04, 0x33, 0x80, 0x4c,
+0x44, 0x01, 0x00, 0x00, 0x40, 0x11, 0x80, 0x02, 0x4e, 0x13, 0xff, 0xf6, 0x46, 0x56, 0x02, 0x00,
+0x14, 0x12, 0x80, 0x40, 0x58, 0x02, 0x80, 0x00, 0x50, 0x33, 0x00, 0xe4, 0x04, 0x40, 0x00, 0xa1,
+0x41, 0xe1, 0x88, 0x08, 0x3e, 0x2f, 0xf8, 0x70, 0x40, 0x5f, 0x08, 0x00, 0x14, 0x42, 0x80, 0x01,
+0x49, 0xff, 0xe6, 0x1a, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x08, 0x3c, 0x1d, 0xff, 0x02,
+0x46, 0x46, 0x02, 0x01, 0x14, 0x12, 0x00, 0xa1, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
+0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xf4, 0x3c, 0x13, 0xf0, 0xd8,
+0x58, 0x60, 0x00, 0x00, 0x14, 0x1f, 0x80, 0x01, 0x44, 0x80, 0x00, 0x00, 0x3e, 0x7f, 0x84, 0x80,
+0x3f, 0xcf, 0x84, 0xbc, 0x04, 0x0f, 0x80, 0x01, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xf4, 0xa4,
+0x46, 0x18, 0xf0, 0x92, 0x58, 0x10, 0x83, 0x00, 0x44, 0x00, 0x00, 0xc0, 0x58, 0x23, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x10, 0xc6, 0x58, 0x10, 0x80, 0xfe, 0x44, 0x00, 0x00, 0x6c,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x4e, 0x83, 0x00, 0x08, 0x44, 0x00, 0x00, 0x70,
+0x44, 0x10, 0x00, 0x80, 0x48, 0x00, 0x00, 0x1a, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x82, 0xc0, 0x08,
+0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0x90, 0x48, 0x00, 0x00, 0x10, 0x44, 0x50, 0x00, 0x02,
+0x4c, 0x82, 0xc0, 0x08, 0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0xa0, 0x48, 0x00, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0xb0, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x44, 0x00, 0x00, 0xcc, 0x44, 0x10, 0x80, 0x00, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x44, 0x00, 0x00, 0x07, 0x49, 0xff, 0x80, 0x18, 0x44, 0x90, 0x00, 0x00, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x80, 0x12, 0x44, 0x00, 0x04, 0x04, 0x58, 0x13, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01,
+0x40, 0x40, 0x38, 0x08, 0x40, 0x42, 0x74, 0x09, 0x50, 0x94, 0x80, 0x01, 0x4e, 0x42, 0x00, 0x0e,
+0x44, 0x50, 0x03, 0xe9, 0x4c, 0x92, 0xff, 0xec, 0x3e, 0x0f, 0xd4, 0x10, 0x3e, 0x1f, 0xdd, 0x40,
+0x44, 0x20, 0x0d, 0x44, 0x49, 0xff, 0x6c, 0xda, 0x44, 0x00, 0x00, 0xcc, 0x44, 0x10, 0x00, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0xf0, 0x92, 0x44, 0x00, 0x00, 0xc0,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x6c, 0x44, 0x10, 0x00, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x50, 0x84, 0x00, 0x01, 0x44, 0x50, 0x00, 0x04,
+0x4c, 0x82, 0xff, 0x72, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x6c, 0x49, 0xff, 0xe4, 0x62,
+0x50, 0x13, 0x00, 0xe0, 0x40, 0x50, 0x88, 0x08, 0x3e, 0x2f, 0xf8, 0x70, 0x40, 0x42, 0x88, 0x00,
+0x14, 0x02, 0x00, 0x01, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x70, 0x49, 0xff, 0xe4, 0x52,
+0x50, 0x33, 0x00, 0xe2, 0x40, 0x61, 0x88, 0x08, 0x3e, 0x2f, 0xf8, 0x70, 0x40, 0x63, 0x08, 0x00,
+0x14, 0x03, 0x00, 0x01, 0x51, 0xff, 0x80, 0x0c, 0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xa8, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x58, 0x10, 0x00, 0x00, 0x44, 0x00, 0x00, 0x0f,
+0x49, 0xff, 0xf3, 0xea, 0x46, 0x18, 0x80, 0x08, 0x3e, 0x7f, 0x84, 0x80, 0x58, 0x10, 0x82, 0xd0,
+0x44, 0x00, 0x00, 0x44, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x24, 0x44,
+0x58, 0x10, 0x84, 0x0a, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x24, 0x01, 0x44, 0x00, 0x06, 0x1c, 0x44, 0x10, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x24, 0x01, 0x46, 0x18, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
-0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x7e, 0x34,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xe2, 0x28, 0x40, 0x20, 0x70, 0x09,
-0x4e, 0x23, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
-0x58, 0x23, 0x00, 0x00, 0x40, 0x73, 0x14, 0x08, 0x49, 0xff, 0xe1, 0xfa, 0x3e, 0x3f, 0xfb, 0x8c,
-0x40, 0x83, 0x8c, 0x00, 0x44, 0x70, 0x06, 0xcc, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x49, 0xff, 0xe2, 0x0c, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x06, 0xec, 0x1c, 0x04, 0x00, 0x01,
-0x4c, 0x72, 0xff, 0xf4, 0x46, 0x10, 0x24, 0x44, 0x3e, 0x8f, 0x83, 0x48, 0x58, 0x10, 0x84, 0x0b,
-0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01, 0x46, 0x10, 0x3f, 0xf0,
-0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01,
-0x44, 0x00, 0x06, 0x1c, 0x44, 0x10, 0x00, 0x05, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x20, 0x01,
-0x46, 0x18, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x20, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x7d, 0xde, 0x44, 0x00, 0x04, 0x1c,
-0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe1, 0xd2, 0x40, 0x50, 0x70, 0x09, 0x4e, 0x53, 0xff, 0xf4,
-0x46, 0x10, 0x20, 0x04, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0xc0,
-0x49, 0xff, 0xe1, 0xa6, 0x40, 0x23, 0x14, 0x08, 0x3e, 0x0f, 0xfb, 0xcc, 0x40, 0x81, 0x00, 0x00,
-0x44, 0x70, 0x06, 0xcc, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe1, 0xb6,
-0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x06, 0xec, 0x1c, 0x04, 0x00, 0x01, 0x4c, 0x72, 0xff, 0xf4,
-0x4e, 0x63, 0x00, 0x06, 0x3e, 0x0f, 0xe4, 0x0e, 0x48, 0x00, 0x00, 0x08, 0x44, 0x50, 0x00, 0x01,
-0x4c, 0x62, 0xc0, 0x5c, 0x3e, 0x0f, 0xe4, 0x0f, 0x00, 0x70, 0x00, 0x00, 0x4e, 0x73, 0x00, 0x56,
-0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00,
-0x49, 0xff, 0xe1, 0x76, 0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54,
-0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe1, 0x6c, 0x44, 0x70, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xf1, 0xb2, 0x50, 0x73, 0x80, 0x01,
-0x44, 0x50, 0x00, 0x10, 0x4c, 0x72, 0xff, 0xf4, 0x44, 0x70, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00,
-0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01, 0x49, 0xff, 0xf1, 0xa2, 0x50, 0x73, 0x80, 0x01,
-0x44, 0x50, 0x00, 0x10, 0x4c, 0x72, 0xff, 0xf4, 0x3e, 0x9f, 0xfc, 0x0c, 0x40, 0x53, 0x14, 0x08,
-0x40, 0x82, 0xa4, 0x00, 0x44, 0x70, 0x04, 0x28, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00,
-0x49, 0xff, 0xe1, 0x5c, 0x14, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x50, 0x03, 0x80, 0x20,
-0x49, 0xff, 0xe1, 0x54, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x48, 0x14, 0x04, 0x00, 0x10,
-0x50, 0x84, 0x00, 0x04, 0x4c, 0x72, 0xff, 0xea, 0x3e, 0x7f, 0x83, 0x48, 0x44, 0x00, 0x00, 0x44,
-0x44, 0x10, 0x82, 0xd0, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x4e, 0x63, 0x00, 0x12,
-0x2e, 0x07, 0xe4, 0x0e, 0x4e, 0x02, 0x00, 0x04, 0x48, 0x00, 0x00, 0x14, 0x46, 0x10, 0x24, 0x44,
-0x58, 0x10, 0x84, 0x08, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x48, 0x00, 0x00, 0x22,
-0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x2a, 0x2e, 0x37, 0xe4, 0x0f, 0x4e, 0x32, 0x00, 0x12,
-0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x48, 0x00, 0x00, 0x10,
-0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x08, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54,
-0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0,
-0x44, 0x16, 0xf5, 0xfe, 0x49, 0xff, 0xe0, 0xdc, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70,
-0x44, 0x10, 0x00, 0x00, 0x49, 0xff, 0xe0, 0xd4, 0x46, 0x10, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0,
-0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xc8, 0x49, 0xff, 0xe0, 0xca, 0x51, 0xff, 0x80, 0x04,
-0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa0, 0xbc, 0x44, 0x60, 0x00, 0x00,
-0x58, 0x80, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01, 0x58, 0x03, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00,
-0x49, 0xff, 0xf1, 0xb2, 0x44, 0x50, 0x00, 0x0e, 0x4c, 0x62, 0xff, 0xf6, 0x3a, 0x6f, 0xa0, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00,
-0x49, 0xff, 0xb5, 0xf4, 0x46, 0x10, 0x13, 0x12, 0x58, 0x50, 0x8d, 0x00, 0x4c, 0x02, 0xc0, 0x06,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x46, 0x20, 0x17, 0xd7, 0x58, 0x51, 0x08, 0x40,
-0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x0e, 0x46, 0x30, 0x26, 0x25,
-0x58, 0x51, 0x8a, 0x00, 0x4c, 0x02, 0x80, 0x06, 0x44, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, 0x08,
-0x44, 0x00, 0x00, 0x02, 0x3e, 0x4f, 0xd6, 0x94, 0x38, 0x82, 0x03, 0x02, 0x50, 0x54, 0x00, 0x01,
-0x40, 0x82, 0x8c, 0x08, 0x3e, 0x0f, 0xd6, 0xd0, 0x40, 0x84, 0x00, 0x00, 0x3e, 0xaf, 0xfa, 0xd0,
-0x3e, 0x9f, 0x83, 0x84, 0x3e, 0x7f, 0x83, 0x48, 0x3f, 0xce, 0xbb, 0x90, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x24, 0x01, 0x02, 0x54, 0x00, 0x00, 0x44, 0x43, 0xff, 0xf0,
-0x40, 0x32, 0x90, 0x08, 0x44, 0x2c, 0x00, 0x0f, 0x40, 0x11, 0x90, 0x02, 0x40, 0x00, 0x08, 0x02,
-0x40, 0x10, 0x04, 0x04, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x1c, 0x01,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x24, 0x01, 0x02, 0x54, 0x00, 0x01,
-0x46, 0x2c, 0x00, 0xff, 0x46, 0x43, 0xff, 0x00, 0x40, 0x32, 0xd0, 0x08, 0x58, 0x21, 0x0f, 0xff,
-0x40, 0x11, 0x90, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x10, 0x04, 0x04, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c,
-0x4b, 0xe0, 0x24, 0x01, 0x04, 0x44, 0x00, 0x01, 0x40, 0x30, 0x50, 0x09, 0x40, 0x31, 0xd0, 0x08,
-0x40, 0x12, 0x30, 0x08, 0x40, 0x10, 0xb0, 0x09, 0x40, 0x11, 0x84, 0x04, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0xf8, 0x00, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x01, 0x10, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x1f, 0xfe, 0x04, 0x58, 0x10, 0x80, 0x10,
-0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x64,
-0x4b, 0xe0, 0x70, 0x01, 0x46, 0x13, 0xff, 0x0c, 0x58, 0x10, 0x80, 0x10, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0xb0, 0x00, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x01, 0x10, 0x4b, 0xe0, 0x1c, 0x01, 0x4e, 0x63, 0x00, 0x10, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x04, 0x20, 0x4b, 0xe0, 0x24, 0x01, 0x54, 0x00, 0x7f, 0x00, 0x40, 0x10, 0x20, 0x09,
-0x12, 0x15, 0x00, 0x00, 0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x0e,
-0x44, 0x00, 0x04, 0x20, 0x58, 0x13, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01, 0x54, 0x40, 0x7f, 0x00,
-0x40, 0x32, 0x20, 0x09, 0x12, 0x35, 0x00, 0x0f, 0x50, 0xa5, 0x00, 0x02, 0x3e, 0x5f, 0xfa, 0xee,
-0x50, 0x84, 0x00, 0x20, 0x4c, 0xa2, 0xff, 0x64, 0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xaa, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa8, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xb5, 0x16,
-0x46, 0x10, 0x13, 0x12, 0x58, 0x50, 0x8d, 0x00, 0x4c, 0x02, 0xc0, 0x08, 0x44, 0x70, 0x00, 0x04,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20, 0x46, 0x20, 0x17, 0xd7, 0x58, 0x51, 0x08, 0x40,
-0x4c, 0x02, 0xc0, 0x08, 0x44, 0x70, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x14,
-0x46, 0x30, 0x26, 0x25, 0x58, 0x51, 0x8a, 0x00, 0x4c, 0x02, 0xc0, 0x08, 0x44, 0x70, 0x00, 0x09,
-0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x08, 0x44, 0x70, 0x00, 0x00, 0x58, 0x93, 0x80, 0x00,
-0x48, 0x00, 0x00, 0x06, 0x3e, 0x4f, 0xd6, 0x94, 0x38, 0x92, 0x03, 0x02, 0x3c, 0x23, 0xf2, 0x06,
-0x3e, 0x1f, 0xd6, 0xd0, 0x44, 0x00, 0x00, 0x00, 0x02, 0x50, 0x80, 0x00, 0x50, 0x10, 0x80, 0x20,
-0x4c, 0x51, 0x40, 0x06, 0x58, 0xa0, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x01,
-0x44, 0x50, 0x00, 0x0f, 0x4c, 0x02, 0xff, 0xf2, 0x44, 0xa0, 0x00, 0x00, 0x3e, 0x8f, 0x83, 0x84,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x20, 0x01, 0x40, 0x00, 0x10, 0x09,
-0x40, 0x00, 0x10, 0x08, 0x40, 0x10, 0x1c, 0x04, 0x58, 0x23, 0x00, 0x00, 0x3e, 0x7f, 0x83, 0x48,
-0x44, 0x00, 0x00, 0xb0, 0x40, 0xa5, 0x08, 0x08, 0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x95, 0x24, 0x00,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x20, 0x01, 0x50, 0x94, 0x80, 0x01,
-0x3e, 0x4f, 0xd6, 0xd0, 0x38, 0x12, 0x27, 0x01, 0x44, 0x33, 0xff, 0xf0, 0x40, 0x50, 0x90, 0x08,
-0x44, 0x2c, 0x00, 0x0f, 0x40, 0x42, 0x8c, 0x02, 0x40, 0x00, 0x08, 0x02, 0x40, 0x10, 0x10, 0x04,
-0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb0, 0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x13, 0x00, 0x00,
-0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x20, 0x01, 0x40, 0x94, 0x8c, 0x08, 0x3e, 0x1f, 0xd6, 0xd0,
-0x40, 0x94, 0x84, 0x00, 0x02, 0x34, 0x80, 0x01, 0x46, 0x2c, 0x00, 0xff, 0x46, 0x53, 0xff, 0x00,
-0x40, 0x41, 0xd0, 0x08, 0x58, 0x21, 0x0f, 0xff, 0x40, 0x12, 0x14, 0x02, 0x40, 0x00, 0x08, 0x02,
-0x40, 0x10, 0x04, 0x04, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x1c, 0x01,
-0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x20, 0x01, 0x04, 0x54, 0x80, 0x01,
-0x40, 0x40, 0x50, 0x09, 0x40, 0x42, 0x50, 0x08, 0x40, 0x12, 0xb0, 0x08, 0x40, 0x10, 0xb0, 0x09,
-0x40, 0x12, 0x04, 0x04, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x4b, 0xe0, 0x1c, 0x01,
-0x46, 0x10, 0x03, 0x00, 0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0x88, 0x44, 0x00, 0x07, 0xdc,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0xf8, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x10,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x1f, 0xfe, 0x04, 0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0x10,
-0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x64, 0x49, 0xff, 0x7b, 0x14,
-0x46, 0x13, 0xfe, 0x0c, 0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0x10, 0x44, 0x00, 0x00, 0xb4,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0xb0, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x10,
-0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x03, 0x00, 0x58, 0x10, 0x80, 0x08, 0x58, 0x23, 0x00, 0x00,
-0x44, 0x00, 0x07, 0xdc, 0x4b, 0xe0, 0x1c, 0x01, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
-0x3a, 0x6f, 0x98, 0xbc, 0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xfe, 0xfe, 0x58, 0x03, 0x00, 0x00,
-0x49, 0xff, 0xef, 0x9e, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x16, 0x3a, 0x6f, 0x98, 0x84,
-0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x38, 0x00, 0x21,
-0x04, 0x01, 0x80, 0x04, 0x54, 0x00, 0x00, 0x03, 0x44, 0x50, 0x00, 0x02, 0x3c, 0x0f, 0xf9, 0x89,
-0x4c, 0x02, 0x80, 0x0e, 0x44, 0x50, 0x00, 0x03, 0x4c, 0x02, 0x80, 0x10, 0x46, 0x00, 0x13, 0x12,
-0x3e, 0x1f, 0xe6, 0x28, 0x58, 0x00, 0x0d, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x46, 0x00, 0x17, 0xd7,
-0x58, 0x00, 0x08, 0x40, 0x48, 0x00, 0x00, 0x06, 0x46, 0x00, 0x26, 0x25, 0x58, 0x00, 0x0a, 0x00,
-0x3e, 0x1f, 0xe6, 0x28, 0x14, 0x00, 0x80, 0x00, 0x49, 0xff, 0x6e, 0xec, 0x2e, 0x57, 0xe4, 0x78,
-0x4e, 0x53, 0x00, 0x24, 0x2e, 0x7f, 0xe2, 0x5a, 0x4e, 0x75, 0x00, 0x14, 0x46, 0x05, 0x00, 0x12,
-0x58, 0x00, 0x00, 0x08, 0x04, 0x40, 0x00, 0x00, 0x44, 0x2f, 0xff, 0xcf, 0x40, 0x32, 0x08, 0x02,
-0x14, 0x30, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x58, 0x10, 0x80, 0x30, 0x48, 0x00, 0x00, 0x0c,
-0x46, 0x05, 0x00, 0x12, 0x58, 0x00, 0x00, 0x08, 0x04, 0x50, 0x00, 0x00, 0x44, 0x6f, 0xff, 0xcf,
-0x40, 0x12, 0x98, 0x02, 0x14, 0x10, 0x00, 0x00, 0x2f, 0xe7, 0xe2, 0x1e, 0x54, 0x7f, 0x00, 0x20,
-0x4e, 0x72, 0x00, 0x0a, 0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe6, 0x1d, 0x44, 0x10, 0x00, 0x00,
-0x48, 0x00, 0x00, 0x0a, 0x2e, 0x47, 0xe2, 0x1d, 0x54, 0x32, 0x00, 0x02, 0x4e, 0x32, 0x00, 0x06,
-0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe6, 0x1e, 0x2e, 0x67, 0xe2, 0x1c, 0x54, 0x53, 0x00, 0x02,
-0x4e, 0x52, 0x00, 0x06, 0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe6, 0x20, 0x2e, 0x07, 0xe2, 0x1d,
-0x54, 0x30, 0x00, 0x04, 0x4e, 0x32, 0x00, 0x06, 0x44, 0x20, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04,
-0x44, 0x20, 0x00, 0x01, 0x54, 0x40, 0x00, 0x08, 0x3e, 0x27, 0xe4, 0x0e, 0x4e, 0x42, 0x00, 0x06,
-0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x01, 0x2e, 0x27, 0xe2, 0x3e,
-0x3e, 0x17, 0xe4, 0x0f, 0x54, 0x61, 0x00, 0x1f, 0x4e, 0x62, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x01,
-0x3f, 0xe7, 0xe6, 0x1f, 0x2e, 0x77, 0xe2, 0x41, 0x54, 0x53, 0x80, 0x1f, 0x52, 0x12, 0x80, 0x00,
-0x2e, 0x37, 0xe4, 0x0e, 0x40, 0x10, 0x80, 0x10, 0x3e, 0x17, 0xe6, 0x1b, 0x3e, 0x67, 0xe6, 0x1a,
-0x4e, 0x32, 0x00, 0x08, 0x2e, 0x37, 0xe4, 0x0f, 0x4e, 0x33, 0x00, 0x0a, 0x48, 0x00, 0x00, 0x24,
-0x2e, 0x07, 0xe4, 0x0f, 0x4e, 0x03, 0x00, 0x20, 0x4e, 0x63, 0x00, 0x06, 0x44, 0x10, 0x00, 0x01,
-0x48, 0x00, 0x00, 0x08, 0x5e, 0xf0, 0xff, 0xfb, 0x4e, 0xf3, 0x00, 0x08, 0x44, 0x10, 0x00, 0x02,
-0x3e, 0x0f, 0xe6, 0x1c, 0x48, 0x00, 0x00, 0x0e, 0x3e, 0x0f, 0xe6, 0x1c, 0x5e, 0xf0, 0xff, 0xf7,
-0x4e, 0xf3, 0x00, 0x06, 0x44, 0x10, 0x00, 0x03, 0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x04,
-0x10, 0x10, 0x00, 0x00, 0x2e, 0x17, 0xe6, 0x1c, 0x50, 0x20, 0xff, 0xff, 0x54, 0x41, 0x00, 0xff,
-0x5c, 0xf2, 0x00, 0x04, 0x4e, 0xf3, 0x00, 0x06, 0x3e, 0x0f, 0xd6, 0x88, 0x49, 0xff, 0x66, 0xe6,
-0x2e, 0x17, 0xe4, 0x0e, 0x4e, 0x13, 0x00, 0x08, 0x4e, 0x62, 0x00, 0x06, 0x44, 0x30, 0x00, 0x01,
-0x3e, 0x37, 0xe6, 0x3d, 0x2e, 0x07, 0xe4, 0x0f, 0x4e, 0x03, 0x00, 0x04, 0x4e, 0x63, 0x00, 0x1c,
-0x3e, 0x0f, 0xd6, 0x94, 0x3c, 0x1d, 0xf9, 0x8a, 0x04, 0x60, 0x00, 0x01, 0x4c, 0x13, 0x40, 0x06,
-0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18, 0x04, 0x50, 0x00, 0x03, 0x4c, 0x12, 0xc0, 0x06,
-0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x10, 0x04, 0x50, 0x00, 0x05, 0x4c, 0x12, 0xc0, 0x12,
-0x48, 0x00, 0x00, 0x08, 0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe6, 0x3e, 0x48, 0xff, 0xff, 0xe2,
-0x44, 0x00, 0x00, 0x02, 0x3e, 0x6f, 0xd6, 0x94, 0x38, 0x43, 0x03, 0x02, 0x3c, 0x4f, 0xf9, 0x8b,
-0x44, 0x00, 0x00, 0x07, 0x44, 0x40, 0x00, 0x02, 0x45, 0xe0, 0x00, 0x00, 0x3c, 0x0f, 0xf9, 0x8c,
-0x3c, 0x4f, 0xf9, 0x8d, 0x3f, 0xe7, 0xe6, 0x38, 0x46, 0x78, 0x00, 0x21, 0x04, 0x53, 0x80, 0x04,
-0x42, 0x02, 0xe0, 0x0b, 0x4e, 0x02, 0x00, 0x06, 0x44, 0x50, 0x00, 0x01, 0x3e, 0x57, 0xe6, 0x38,
-0x44, 0x40, 0x00, 0x07, 0x44, 0x50, 0x00, 0x22, 0x44, 0x00, 0x00, 0x0a, 0x3c, 0x4b, 0xf3, 0x09,
-0x3e, 0x57, 0xe6, 0x39, 0x3c, 0x4b, 0xf2, 0x06, 0x3e, 0x07, 0xe6, 0x3b, 0x44, 0x70, 0x00, 0x09,
-0x46, 0x18, 0x08, 0x08, 0x44, 0x20, 0x00, 0x00, 0x58, 0x10, 0x80, 0x80, 0x44, 0x30, 0x08, 0x00,
-0x3e, 0x77, 0xe6, 0x3c, 0x3c, 0x4b, 0xf3, 0x08, 0x3c, 0x1f, 0xff, 0x94, 0x3c, 0x2f, 0xf9, 0x85,
-0x3e, 0x07, 0xe6, 0x3a, 0x3c, 0x3f, 0xff, 0x8a, 0x3c, 0x2f, 0xff, 0x8c, 0x3c, 0x3f, 0xff, 0x81,
-0x3c, 0x2f, 0xff, 0x82, 0x3c, 0x2f, 0xff, 0x83, 0x3c, 0x1f, 0xff, 0x8d, 0x3c, 0x1f, 0xff, 0x8e,
-0x3c, 0x3f, 0xff, 0x87, 0x3c, 0x2f, 0xff, 0x88, 0x3c, 0x2f, 0xff, 0x89, 0x3c, 0x1f, 0xff, 0x91,
-0x3c, 0x1f, 0xff, 0x92, 0x3c, 0x3f, 0xff, 0x84, 0x3c, 0x2f, 0xff, 0x85, 0x3c, 0x2f, 0xff, 0x86,
-0x3c, 0x1f, 0xff, 0x8f, 0x3c, 0x1f, 0xff, 0x90, 0x3c, 0x2f, 0xff, 0x8b, 0x3c, 0x1f, 0xff, 0x93,
-0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x52, 0x41, 0x4d, 0x20,
-0x63, 0x6f, 0x64, 0x65, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x43, 0x4d, 0x44,
-0x20, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61,
-0x64, 0x20, 0x66, 0x6c, 0x6f, 0x77, 0x0a, 0x00, 0x52, 0x45, 0x47, 0x33, 0x32, 0x28, 0x53, 0x59,
-0x53, 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x4d, 0x49, 0x53, 0x43, 0x32, 0x29, 0x20, 0x3d, 0x20, 0x30,
-0x78, 0x25, 0x78, 0x20, 0x0a, 0x00, 0x00, 0x00, 0x57, 0x49, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00,
-0x57, 0x49, 0x46, 0x49, 0x5f, 0x4c, 0x49, 0x53, 0x52, 0x0a, 0x00, 0x00, 0x62, 0x65, 0x66, 0x6f,
-0x72, 0x65, 0x20, 0x50, 0x49, 0x4e, 0x5f, 0x4d, 0x55, 0x58, 0x31, 0x3d, 0x30, 0x78, 0x25, 0x30,
-0x38, 0x78, 0x0a, 0x00, 0x50, 0x49, 0x4e, 0x5f, 0x4d, 0x55, 0x58, 0x31, 0x3d, 0x30, 0x78, 0x25,
-0x30, 0x38, 0x78, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x50, 0x43, 0x49, 0x65, 0x5f, 0x52, 0x65, 0x73,
-0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x69, 0x74,
-0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x20, 0x0a, 0x00, 0x00, 0x00, 0x57, 0x61, 0x74, 0x63,
-0x68, 0x44, 0x6f, 0x67, 0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, 0x65, 0x73, 0x20, 0x63,
-0x61, 0x6c, 0x6c, 0x65, 0x64, 0x21, 0x0a, 0x00, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64,
-0x21, 0x20, 0x5b, 0x25, 0x73, 0x2c, 0x20, 0x25, 0x64, 0x5d, 0x0a, 0x00, 0x73, 0x72, 0x63, 0x2f,
-0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x52, 0x4f, 0x4d,
-0x2f, 0x6e, 0x69, 0x63, 0x2f, 0x68, 0x61, 0x6c, 0x2f, 0x4d, 0x54, 0x37, 0x36, 0x30, 0x33, 0x2f,
-0x68, 0x61, 0x6c, 0x5f, 0x72, 0x6f, 0x6d, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6c, 0x54,
-0x78, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
-0x3a, 0x20, 0x48, 0x54, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20,
-0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x4f, 0x46, 0x44, 0x4d, 0x20, 0x63, 0x6f, 0x6e, 0x66,
-0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x00, 0x68, 0x61, 0x6c, 0x4d,
-0x61, 0x63, 0x54, 0x78, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57,
-0x69, 0x74, 0x68, 0x50, 0x6f, 0x6c, 0x6c, 0x44, 0x6f, 0x6e, 0x65, 0x3a, 0x20, 0x54, 0x69, 0x6d,
+0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x06, 0x1c, 0x44, 0x10, 0x00, 0x04, 0x58, 0x23, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x18, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x7f, 0x6c,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c, 0x49, 0xff, 0xe3, 0xfc, 0x40, 0x00, 0x70, 0x09,
+0x4e, 0x03, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x04, 0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0xc0,
+0x44, 0x00, 0x00, 0xc8, 0x49, 0xff, 0xe3, 0xd0, 0x40, 0x83, 0x14, 0x08, 0x3e, 0x2f, 0xf8, 0xac,
+0x40, 0x84, 0x08, 0x00, 0x58, 0x94, 0x00, 0x00, 0x44, 0x70, 0x04, 0x28, 0x58, 0x03, 0x80, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe3, 0xde, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x48,
+0x1c, 0x04, 0x80, 0x01, 0x4c, 0x72, 0xff, 0xf4, 0x40, 0x93, 0x14, 0x08, 0x3e, 0x4f, 0xf8, 0xec,
+0x40, 0x94, 0x90, 0x00, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe3, 0xca,
+0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x68, 0x1c, 0x04, 0x80, 0x01, 0x4c, 0x72, 0xff, 0xf4,
+0x46, 0x10, 0x24, 0x44, 0x3e, 0xaf, 0x84, 0x80, 0x58, 0x10, 0x84, 0x0b, 0x44, 0x00, 0x06, 0x10,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x28, 0x01, 0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03,
+0x44, 0x00, 0x00, 0x54, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x28, 0x01, 0x44, 0x00, 0x06, 0x1c,
+0x44, 0x10, 0x00, 0x00, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x28, 0x01, 0x46, 0x18, 0x20, 0x04,
+0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x28, 0x01,
+0x44, 0x00, 0x00, 0x01, 0x49, 0xff, 0x7f, 0x00, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x1c,
+0x49, 0xff, 0xe3, 0x90, 0x40, 0x00, 0x70, 0x09, 0x4e, 0x03, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x04,
+0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0xc0, 0x44, 0x00, 0x00, 0xc8, 0x40, 0x73, 0x14, 0x08,
+0x49, 0xff, 0xe3, 0x62, 0x3e, 0x2f, 0xf9, 0x2c, 0x40, 0x93, 0x88, 0x00, 0x44, 0x70, 0x06, 0xcc,
+0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe3, 0x74, 0x50, 0x73, 0x80, 0x04,
+0x44, 0x50, 0x06, 0xec, 0x1c, 0x04, 0x80, 0x01, 0x4c, 0x72, 0xff, 0xf4, 0x46, 0x10, 0x24, 0x44,
+0x3e, 0x9f, 0x84, 0x80, 0x58, 0x10, 0x84, 0x0b, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00,
+0x4b, 0xe0, 0x24, 0x01, 0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01, 0x44, 0x00, 0x06, 0x1c, 0x44, 0x10, 0x00, 0x05,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01, 0x46, 0x18, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0,
+0x44, 0x00, 0x00, 0xc8, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x24, 0x01, 0x44, 0x00, 0x00, 0x01,
+0x49, 0xff, 0x7e, 0xaa, 0x44, 0x00, 0x04, 0x1c, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe3, 0x3a,
+0x40, 0x40, 0x70, 0x09, 0x4e, 0x43, 0xff, 0xf4, 0x46, 0x10, 0x20, 0x04, 0x44, 0x00, 0x00, 0xc8,
+0x58, 0x10, 0x80, 0xc0, 0x58, 0x23, 0x00, 0x00, 0x40, 0xa3, 0x14, 0x08, 0x49, 0xff, 0xe3, 0x0c,
+0x3e, 0x0f, 0xf9, 0x6c, 0x40, 0x95, 0x00, 0x00, 0x44, 0x70, 0x06, 0xcc, 0x58, 0x03, 0x80, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe3, 0x1e, 0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x06, 0xec,
+0x1c, 0x04, 0x80, 0x01, 0x4c, 0x72, 0xff, 0xf4, 0x4e, 0x63, 0x00, 0x06, 0x3e, 0x0f, 0xe1, 0xb2,
+0x48, 0x00, 0x00, 0x08, 0x44, 0x50, 0x00, 0x01, 0x4c, 0x62, 0xc0, 0x56, 0x3e, 0x0f, 0xe1, 0xb3,
+0x00, 0x70, 0x00, 0x00, 0x4e, 0x73, 0x00, 0x50, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x0a,
+0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe2, 0xde, 0x46, 0x18, 0x3f, 0xf0,
+0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x58, 0x23, 0x00, 0x00, 0x49, 0xff, 0xe2, 0xd4,
+0x44, 0x70, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x00,
+0x49, 0xff, 0xf1, 0xea, 0x50, 0x73, 0x80, 0x01, 0x44, 0x50, 0x00, 0x10, 0x4c, 0x72, 0xff, 0xf4,
+0x44, 0x70, 0x00, 0x00, 0x58, 0x23, 0x80, 0x00, 0x58, 0x03, 0x00, 0x00, 0x44, 0x10, 0x00, 0x01,
+0x49, 0xff, 0xf1, 0xda, 0x50, 0x73, 0x80, 0x01, 0x44, 0x50, 0x00, 0x10, 0x4c, 0x72, 0xff, 0xf4,
+0x44, 0x70, 0x04, 0x28, 0x58, 0x03, 0x80, 0x00, 0x58, 0x13, 0x00, 0x00, 0x49, 0xff, 0xe2, 0xca,
+0x14, 0x04, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x50, 0x03, 0x80, 0x20, 0x49, 0xff, 0xe2, 0xc2,
+0x50, 0x73, 0x80, 0x04, 0x44, 0x50, 0x04, 0x48, 0x14, 0x04, 0x00, 0x10, 0x50, 0x84, 0x00, 0x04,
+0x4c, 0x72, 0xff, 0xea, 0x3e, 0x7f, 0x84, 0x80, 0x44, 0x00, 0x00, 0x44, 0x44, 0x10, 0x82, 0xd0,
+0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01, 0x4e, 0x63, 0x00, 0x12, 0x2e, 0x57, 0xe1, 0xb2,
+0x4e, 0x52, 0x00, 0x04, 0x48, 0x00, 0x00, 0x14, 0x46, 0x10, 0x24, 0x44, 0x58, 0x10, 0x84, 0x08,
+0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x48, 0x00, 0x00, 0x22, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x62, 0xc0, 0x2a, 0x2f, 0xe7, 0xe1, 0xb3, 0x4f, 0xe2, 0x00, 0x12, 0x46, 0x10, 0x24, 0x44,
+0x58, 0x10, 0x84, 0x00, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x06, 0x10, 0x4b, 0xe0, 0x1c, 0x01,
+0x46, 0x10, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x48, 0x00, 0x00, 0x10, 0x46, 0x10, 0x24, 0x44,
+0x58, 0x10, 0x84, 0x08, 0x44, 0x00, 0x06, 0x10, 0x58, 0x23, 0x00, 0x00, 0x4b, 0xe0, 0x1c, 0x01,
+0x46, 0x18, 0x3f, 0xf0, 0x58, 0x10, 0x80, 0x03, 0x44, 0x00, 0x00, 0x54, 0x58, 0x23, 0x00, 0x00,
+0x4b, 0xe0, 0x1c, 0x01, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xa0, 0x44, 0x16, 0xf5, 0xfe,
+0x49, 0xff, 0xe2, 0x4a, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0x70, 0x44, 0x10, 0x00, 0x00,
+0x49, 0xff, 0xe2, 0x42, 0x46, 0x10, 0x20, 0x04, 0x58, 0x10, 0x80, 0xc0, 0x58, 0x23, 0x00, 0x00,
+0x44, 0x00, 0x00, 0xc8, 0x49, 0xff, 0xe2, 0x38, 0x3a, 0x6f, 0xa8, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0xa0, 0xbc, 0x44, 0x60, 0x00, 0x00, 0x58, 0x80, 0x00, 0x00, 0x50, 0x63, 0x00, 0x01,
+0x58, 0x03, 0x00, 0x00, 0x58, 0x14, 0x00, 0x00, 0x49, 0xff, 0xf1, 0xf6, 0x44, 0x50, 0x00, 0x0e,
+0x4c, 0x62, 0xff, 0xf6, 0x3a, 0x6f, 0xa0, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xaa, 0xbc,
+0x51, 0xff, 0xff, 0xfc, 0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xb7, 0x0e, 0x46, 0x10, 0x13, 0x12,
+0x58, 0x50, 0x8d, 0x00, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x18,
+0x46, 0x20, 0x17, 0xd7, 0x58, 0x51, 0x08, 0x40, 0x4c, 0x02, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x0e, 0x46, 0x30, 0x26, 0x25, 0x58, 0x51, 0x8a, 0x00, 0x4c, 0x02, 0x80, 0x06,
+0x44, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, 0x08, 0x44, 0x00, 0x00, 0x02, 0x3e, 0x4f, 0xd4, 0x40,
+0x38, 0x82, 0x03, 0x02, 0x50, 0x54, 0x00, 0x01, 0x40, 0x82, 0x8c, 0x08, 0x3e, 0x0f, 0xd4, 0x7c,
+0x40, 0x84, 0x00, 0x00, 0x3e, 0x7f, 0xf8, 0x70, 0x3e, 0x9f, 0x84, 0x80, 0x3f, 0xcf, 0x84, 0xbc,
+0x02, 0x44, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb0, 0x44, 0x23, 0xff, 0xf0,
+0x44, 0x30, 0x00, 0x04, 0x49, 0xff, 0xe2, 0x1c, 0x02, 0x44, 0x00, 0x01, 0x46, 0x23, 0xff, 0x00,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x44, 0x30, 0x00, 0x14, 0x49, 0xff, 0xe2, 0x10,
+0x04, 0x44, 0x00, 0x01, 0x46, 0x20, 0x00, 0xff, 0x44, 0x30, 0x00, 0x00, 0x58, 0x21, 0x0f, 0xff,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c, 0x49, 0xff, 0xe2, 0x02, 0x46, 0x10, 0xf8, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x10, 0x4b, 0xe0, 0x24, 0x01, 0x46, 0x1f, 0xfe, 0x04,
+0x58, 0x10, 0x80, 0x10, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x24, 0x01,
+0x44, 0x00, 0x00, 0x64, 0x49, 0xff, 0x7d, 0x30, 0x46, 0x13, 0xff, 0x0c, 0x58, 0x10, 0x80, 0x10,
+0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x24, 0x01, 0x46, 0x10, 0xb0, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x10, 0x4b, 0xe0, 0x24, 0x01, 0x4e, 0x63, 0x00, 0x10,
+0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x04, 0x20, 0x4b, 0xe0, 0x70, 0x01, 0x54, 0x20, 0x7f, 0x00,
+0x40, 0x11, 0x20, 0x09, 0x12, 0x13, 0x80, 0x00, 0x48, 0x00, 0x00, 0x12, 0x44, 0x50, 0x00, 0x01,
+0x4c, 0x62, 0xc0, 0x0e, 0x44, 0x00, 0x04, 0x20, 0x58, 0x13, 0x00, 0x00, 0x4b, 0xe0, 0x70, 0x01,
+0x54, 0x40, 0x7f, 0x00, 0x40, 0x32, 0x20, 0x09, 0x12, 0x33, 0x80, 0x0f, 0x50, 0x73, 0x80, 0x02,
+0x3e, 0x5f, 0xf8, 0x8e, 0x50, 0x84, 0x00, 0x20, 0x4c, 0x72, 0xff, 0x8c, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0xaa, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0xa4, 0xbc, 0x51, 0xff, 0xff, 0xfc,
+0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xb6, 0x58, 0x46, 0x10, 0x13, 0x12, 0x58, 0x50, 0x8d, 0x00,
+0x4c, 0x02, 0xc0, 0x08, 0x44, 0x40, 0x00, 0x04, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x20,
+0x46, 0x30, 0x17, 0xd7, 0x58, 0x51, 0x88, 0x40, 0x4c, 0x02, 0xc0, 0x08, 0x44, 0x40, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x01, 0x48, 0x00, 0x00, 0x14, 0x46, 0x20, 0x26, 0x25, 0x58, 0x51, 0x0a, 0x00,
+0x4c, 0x02, 0xc0, 0x08, 0x44, 0x40, 0x00, 0x09, 0x44, 0x00, 0x00, 0x02, 0x48, 0x00, 0x00, 0x08,
+0x44, 0x40, 0x00, 0x00, 0x58, 0x82, 0x00, 0x00, 0x48, 0x00, 0x00, 0x06, 0x3e, 0x5f, 0xd4, 0x40,
+0x38, 0x82, 0x83, 0x02, 0x3c, 0x23, 0xf0, 0xd8, 0x3e, 0x1f, 0xd4, 0x7c, 0x44, 0x00, 0x00, 0x00,
+0x02, 0x50, 0x80, 0x00, 0x50, 0x10, 0x80, 0x20, 0x4c, 0x51, 0x40, 0x06, 0x58, 0x90, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x01, 0x44, 0x50, 0x00, 0x0f, 0x4c, 0x02, 0xff, 0xf2,
+0x44, 0x90, 0x00, 0x00, 0x3e, 0x7f, 0x85, 0x08, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x00, 0xb0,
+0x44, 0x20, 0x00, 0x0f, 0x44, 0x30, 0x00, 0x00, 0x40, 0x94, 0x88, 0x08, 0x4b, 0xe0, 0x1c, 0x01,
+0x40, 0x34, 0xa0, 0x00, 0x50, 0x81, 0x80, 0x01, 0x3e, 0x1f, 0xd4, 0x7c, 0x38, 0x40, 0xa3, 0x01,
+0x44, 0x00, 0x00, 0xb0, 0x58, 0x13, 0x00, 0x00, 0x44, 0x23, 0xff, 0xf0, 0x44, 0x30, 0x00, 0x04,
+0x4b, 0xe0, 0x1c, 0x01, 0x40, 0x84, 0x0c, 0x08, 0x3e, 0x4f, 0xd4, 0x7c, 0x40, 0x84, 0x10, 0x00,
+0x02, 0x44, 0x00, 0x01, 0x46, 0x23, 0xff, 0x00, 0x58, 0x13, 0x00, 0x00, 0x44, 0x00, 0x01, 0x0c,
+0x44, 0x30, 0x00, 0x14, 0x4b, 0xe0, 0x1c, 0x01, 0x04, 0x44, 0x00, 0x01, 0x46, 0x20, 0x00, 0xff,
+0x44, 0x30, 0x00, 0x00, 0x58, 0x13, 0x00, 0x00, 0x58, 0x21, 0x0f, 0xff, 0x44, 0x00, 0x01, 0x0c,
+0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x03, 0x00, 0x3e, 0x7f, 0x84, 0x80, 0x58, 0x23, 0x00, 0x00,
+0x58, 0x10, 0x80, 0x88, 0x44, 0x00, 0x07, 0xdc, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0xf8, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x10, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x1f, 0xfe, 0x04,
+0x58, 0x23, 0x00, 0x00, 0x58, 0x10, 0x80, 0x10, 0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x1c, 0x01,
+0x44, 0x00, 0x00, 0x64, 0x49, 0xff, 0x7c, 0x40, 0x46, 0x13, 0xfe, 0x0c, 0x58, 0x23, 0x00, 0x00,
+0x58, 0x10, 0x80, 0x10, 0x44, 0x00, 0x00, 0xb4, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0xb0, 0x00,
+0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x01, 0x10, 0x4b, 0xe0, 0x1c, 0x01, 0x46, 0x10, 0x03, 0x00,
+0x58, 0x10, 0x80, 0x08, 0x58, 0x23, 0x00, 0x00, 0x44, 0x00, 0x07, 0xdc, 0x4b, 0xe0, 0x1c, 0x01,
+0x51, 0xff, 0x80, 0x04, 0x3a, 0x6f, 0xa4, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x3a, 0x6f, 0x98, 0xbc,
+0x58, 0x60, 0x00, 0x00, 0x49, 0xff, 0xff, 0x2a, 0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xf0, 0x38,
+0x58, 0x03, 0x00, 0x00, 0x49, 0xff, 0xfe, 0x6c, 0x3a, 0x6f, 0x98, 0x84, 0x4a, 0x00, 0x78, 0x20,
+0x3a, 0x6f, 0x9c, 0xbc, 0x51, 0xff, 0xff, 0xfc, 0x46, 0x38, 0x00, 0x21, 0x04, 0x01, 0x80, 0x04,
+0x54, 0x00, 0x00, 0x03, 0x44, 0x50, 0x00, 0x02, 0x3c, 0x0f, 0xf8, 0xf1, 0x4c, 0x02, 0x80, 0x0e,
+0x44, 0x50, 0x00, 0x03, 0x4c, 0x02, 0x80, 0x10, 0x46, 0x00, 0x13, 0x12, 0x3e, 0x1f, 0xe3, 0xc8,
+0x58, 0x00, 0x0d, 0x00, 0x48, 0x00, 0x00, 0x0e, 0x46, 0x00, 0x17, 0xd7, 0x58, 0x00, 0x08, 0x40,
+0x48, 0x00, 0x00, 0x06, 0x46, 0x00, 0x26, 0x25, 0x58, 0x00, 0x0a, 0x00, 0x3e, 0x1f, 0xe3, 0xc8,
+0x14, 0x00, 0x80, 0x00, 0x49, 0xff, 0x70, 0x16, 0x2e, 0x57, 0xe2, 0x18, 0x4e, 0x53, 0x00, 0x24,
+0x2e, 0x7f, 0xdf, 0xfa, 0x4e, 0x75, 0x00, 0x14, 0x46, 0x05, 0x00, 0x12, 0x58, 0x00, 0x00, 0x08,
+0x04, 0x40, 0x00, 0x00, 0x44, 0x2f, 0xff, 0xcf, 0x40, 0x32, 0x08, 0x02, 0x14, 0x30, 0x00, 0x00,
+0x04, 0x10, 0x00, 0x00, 0x58, 0x10, 0x80, 0x30, 0x48, 0x00, 0x00, 0x0c, 0x46, 0x05, 0x00, 0x12,
+0x58, 0x00, 0x00, 0x08, 0x04, 0x50, 0x00, 0x00, 0x44, 0x6f, 0xff, 0xcf, 0x40, 0x12, 0x98, 0x02,
+0x14, 0x10, 0x00, 0x00, 0x2f, 0xe7, 0xdf, 0xbe, 0x54, 0x7f, 0x00, 0x20, 0x4e, 0x72, 0x00, 0x0a,
+0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe3, 0xbd, 0x44, 0x10, 0x00, 0x00, 0x48, 0x00, 0x00, 0x0a,
+0x2e, 0x47, 0xdf, 0xbd, 0x54, 0x32, 0x00, 0x02, 0x4e, 0x32, 0x00, 0x06, 0x44, 0x10, 0x00, 0x01,
+0x3e, 0x17, 0xe3, 0xbe, 0x2e, 0x67, 0xdf, 0xbc, 0x54, 0x53, 0x00, 0x02, 0x4e, 0x52, 0x00, 0x06,
+0x44, 0x00, 0x00, 0x01, 0x3e, 0x07, 0xe3, 0xc0, 0x2e, 0x07, 0xdf, 0xbd, 0x54, 0x30, 0x00, 0x04,
+0x4e, 0x32, 0x00, 0x06, 0x44, 0x20, 0x00, 0x00, 0x48, 0x00, 0x00, 0x04, 0x44, 0x20, 0x00, 0x01,
+0x54, 0x40, 0x00, 0x08, 0x3e, 0x27, 0xe1, 0xb2, 0x4e, 0x42, 0x00, 0x06, 0x44, 0x10, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x01, 0x2e, 0x27, 0xdf, 0xde, 0x3e, 0x17, 0xe1, 0xb3,
+0x54, 0x61, 0x00, 0x1f, 0x4e, 0x62, 0x00, 0x06, 0x45, 0xe0, 0x00, 0x01, 0x3f, 0xe7, 0xe3, 0xbf,
+0x2e, 0x77, 0xdf, 0xe1, 0x54, 0x53, 0x80, 0x1f, 0x52, 0x12, 0x80, 0x00, 0x2e, 0x37, 0xe1, 0xb2,
+0x40, 0x10, 0x80, 0x10, 0x3e, 0x17, 0xe3, 0xbb, 0x3e, 0x67, 0xe3, 0xba, 0x4e, 0x32, 0x00, 0x08,
+0x2e, 0x37, 0xe1, 0xb3, 0x4e, 0x33, 0x00, 0x0a, 0x48, 0x00, 0x00, 0x24, 0x2e, 0x07, 0xe1, 0xb3,
+0x4e, 0x03, 0x00, 0x20, 0x4e, 0x63, 0x00, 0x06, 0x44, 0x10, 0x00, 0x01, 0x48, 0x00, 0x00, 0x08,
+0x5e, 0xf0, 0xff, 0xfb, 0x4e, 0xf3, 0x00, 0x08, 0x44, 0x10, 0x00, 0x02, 0x3e, 0x0f, 0xe3, 0xbc,
+0x48, 0x00, 0x00, 0x0e, 0x3e, 0x0f, 0xe3, 0xbc, 0x5e, 0xf0, 0xff, 0xf7, 0x4e, 0xf3, 0x00, 0x06,
+0x44, 0x10, 0x00, 0x03, 0x48, 0x00, 0x00, 0x04, 0x44, 0x10, 0x00, 0x04, 0x10, 0x10, 0x00, 0x00,
+0x2e, 0x17, 0xe3, 0xbc, 0x50, 0x20, 0xff, 0xff, 0x54, 0x41, 0x00, 0xff, 0x5c, 0xf2, 0x00, 0x04,
+0x4e, 0xf3, 0x00, 0x06, 0x3e, 0x0f, 0xd4, 0x34, 0x49, 0xff, 0x68, 0x10, 0x2e, 0x17, 0xe1, 0xb2,
+0x4e, 0x13, 0x00, 0x08, 0x4e, 0x62, 0x00, 0x06, 0x44, 0x30, 0x00, 0x01, 0x3e, 0x37, 0xe3, 0xdd,
+0x2e, 0x07, 0xe1, 0xb3, 0x4e, 0x03, 0x00, 0x04, 0x4e, 0x63, 0x00, 0x1c, 0x3e, 0x0f, 0xd4, 0x40,
+0x3c, 0x1d, 0xf8, 0xf2, 0x04, 0x60, 0x00, 0x01, 0x4c, 0x13, 0x40, 0x06, 0x44, 0x00, 0x00, 0x00,
+0x48, 0x00, 0x00, 0x18, 0x04, 0x50, 0x00, 0x03, 0x4c, 0x12, 0xc0, 0x06, 0x44, 0x00, 0x00, 0x01,
+0x48, 0x00, 0x00, 0x10, 0x04, 0x50, 0x00, 0x05, 0x4c, 0x12, 0xc0, 0x12, 0x48, 0x00, 0x00, 0x08,
+0x44, 0x10, 0x00, 0x01, 0x3e, 0x17, 0xe3, 0xde, 0x48, 0xff, 0xff, 0xe2, 0x44, 0x00, 0x00, 0x02,
+0x3e, 0x6f, 0xd4, 0x40, 0x38, 0x43, 0x03, 0x02, 0x3c, 0x4f, 0xf8, 0xf3, 0x44, 0x00, 0x00, 0x07,
+0x44, 0x40, 0x00, 0x02, 0x45, 0xe0, 0x00, 0x00, 0x3c, 0x0f, 0xf8, 0xf4, 0x3c, 0x4f, 0xf8, 0xf5,
+0x3f, 0xe7, 0xe3, 0xd8, 0x46, 0x78, 0x00, 0x21, 0x04, 0x53, 0x80, 0x04, 0x42, 0x02, 0xe0, 0x0b,
+0x4e, 0x02, 0x00, 0x06, 0x44, 0x50, 0x00, 0x01, 0x3e, 0x57, 0xe3, 0xd8, 0x44, 0x40, 0x00, 0x07,
+0x44, 0x50, 0x00, 0x22, 0x44, 0x00, 0x00, 0x0a, 0x3c, 0x4b, 0xf1, 0xd9, 0x3e, 0x57, 0xe3, 0xd9,
+0x3c, 0x4b, 0xf0, 0xd8, 0x3e, 0x07, 0xe3, 0xdb, 0x44, 0x70, 0x00, 0x09, 0x46, 0x18, 0x08, 0x08,
+0x44, 0x20, 0x00, 0x00, 0x58, 0x10, 0x80, 0x80, 0x44, 0x30, 0x08, 0x00, 0x3e, 0x77, 0xe3, 0xdc,
+0x3c, 0x4b, 0xf1, 0xd8, 0x3c, 0x1f, 0xfe, 0xfc, 0x3c, 0x2f, 0xf8, 0xed, 0x3e, 0x07, 0xe3, 0xda,
+0x3c, 0x3f, 0xfe, 0xf2, 0x3c, 0x2f, 0xfe, 0xf4, 0x3c, 0x3f, 0xfe, 0xe9, 0x3c, 0x2f, 0xfe, 0xea,
+0x3c, 0x2f, 0xfe, 0xeb, 0x3c, 0x1f, 0xfe, 0xf5, 0x3c, 0x1f, 0xfe, 0xf6, 0x3c, 0x3f, 0xfe, 0xef,
+0x3c, 0x2f, 0xfe, 0xf0, 0x3c, 0x2f, 0xfe, 0xf1, 0x3c, 0x1f, 0xfe, 0xf9, 0x3c, 0x1f, 0xfe, 0xfa,
+0x3c, 0x3f, 0xfe, 0xec, 0x3c, 0x2f, 0xfe, 0xed, 0x3c, 0x2f, 0xfe, 0xee, 0x3c, 0x1f, 0xfe, 0xf7,
+0x3c, 0x1f, 0xfe, 0xf8, 0x3c, 0x2f, 0xfe, 0xf3, 0x3c, 0x1f, 0xfe, 0xfb, 0x51, 0xff, 0x80, 0x04,
+0x3a, 0x6f, 0x9c, 0x84, 0x4a, 0x00, 0x78, 0x20, 0x52, 0x41, 0x4d, 0x20, 0x63, 0x6f, 0x64, 0x65,
+0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x43, 0x4d, 0x44, 0x20, 0x52, 0x65, 0x73,
+0x74, 0x61, 0x72, 0x74, 0x20, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x66, 0x6c,
+0x6f, 0x77, 0x0a, 0x00, 0x52, 0x45, 0x47, 0x33, 0x32, 0x28, 0x53, 0x59, 0x53, 0x5f, 0x54, 0x4f,
+0x50, 0x5f, 0x4d, 0x49, 0x53, 0x43, 0x32, 0x29, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x78, 0x20,
+0x0a, 0x00, 0x00, 0x00, 0x57, 0x49, 0x46, 0x49, 0x00, 0x00, 0x00, 0x00, 0x57, 0x49, 0x46, 0x49,
+0x5f, 0x4c, 0x49, 0x53, 0x52, 0x0a, 0x00, 0x00, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x50,
+0x49, 0x4e, 0x5f, 0x4d, 0x55, 0x58, 0x31, 0x3d, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0a, 0x00,
+0x50, 0x49, 0x4e, 0x5f, 0x4d, 0x55, 0x58, 0x31, 0x3d, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0a,
+0x00, 0x00, 0x00, 0x00, 0x50, 0x43, 0x49, 0x65, 0x5f, 0x52, 0x65, 0x73, 0x65, 0x74, 0x57, 0x6f,
+0x72, 0x6b, 0x61, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x49, 0x6e, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6c,
+0x6c, 0x65, 0x64, 0x20, 0x0a, 0x00, 0x00, 0x00, 0x57, 0x61, 0x74, 0x63, 0x68, 0x44, 0x6f, 0x67,
+0x52, 0x65, 0x73, 0x65, 0x74, 0x41, 0x6e, 0x64, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65,
+0x64, 0x21, 0x0a, 0x00, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x21, 0x20, 0x5b, 0x25,
+0x73, 0x2c, 0x20, 0x25, 0x64, 0x5d, 0x0a, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
+0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x52, 0x4f, 0x4d, 0x2f, 0x6e, 0x69, 0x63,
+0x2f, 0x68, 0x61, 0x6c, 0x2f, 0x4d, 0x54, 0x37, 0x36, 0x30, 0x33, 0x2f, 0x68, 0x61, 0x6c, 0x5f,
+0x72, 0x6f, 0x6d, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x68, 0x61, 0x6c, 0x54, 0x78, 0x43, 0x6f, 0x6e,
+0x66, 0x69, 0x67, 0x54, 0x78, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x3a, 0x20, 0x48, 0x54,
+0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x77, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x66, 0x6f, 0x6c, 0x6c,
+0x6f, 0x77, 0x20, 0x4f, 0x46, 0x44, 0x4d, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72,
+0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x00, 0x68, 0x61, 0x6c, 0x4d, 0x61, 0x63, 0x54, 0x78,
+0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x51, 0x75, 0x65, 0x75, 0x65, 0x57, 0x69, 0x74, 0x68, 0x50,
+0x6f, 0x6c, 0x6c, 0x44, 0x6f, 0x6e, 0x65, 0x3a, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
+0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x73,
+0x74, 0x6f, 0x70, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x00, 0x00, 0x00, 0x65, 0x6d, 0x75, 0x6c,
+0x54, 0x78, 0x53, 0x74, 0x6f, 0x70, 0x51, 0x75, 0x65, 0x75, 0x65, 0x3a, 0x20, 0x54, 0x69, 0x6d,
0x65, 0x6f, 0x75, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x71, 0x75, 0x65,
0x75, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x00, 0x00, 0x00,
-0x65, 0x6d, 0x75, 0x6c, 0x54, 0x78, 0x53, 0x74, 0x6f, 0x70, 0x51, 0x75, 0x65, 0x75, 0x65, 0x3a,
-0x20, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6e, 0x67,
-0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x64, 0x6f, 0x6e, 0x65,
-0x0a, 0x00, 0x00, 0x00, 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, 0x00,
-0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x12, 0x60,
-0x28, 0x00, 0x12, 0x60, 0x2c, 0x00, 0x12, 0x60, 0x2c, 0x00, 0x12, 0x60, 0x30, 0x00, 0x12, 0x60,
-0x30, 0x00, 0x12, 0x60, 0x28, 0x00, 0x12, 0x60, 0x28, 0x00, 0x12, 0x60, 0x28, 0x00, 0x12, 0x60,
-0x34, 0x00, 0x12, 0x60, 0x34, 0x00, 0x12, 0x60, 0x38, 0x00, 0x12, 0x60, 0x38, 0x00, 0x12, 0x60,
-0x3c, 0x00, 0x12, 0x60, 0x14, 0x00, 0x13, 0x60, 0x14, 0x00, 0x13, 0x60, 0x10, 0x00, 0x13, 0x60,
+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, 0x00, 0x02, 0x00, 0x00, 0x00,
+0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x12, 0x60, 0x28, 0x00, 0x12, 0x60,
+0x2c, 0x00, 0x12, 0x60, 0x2c, 0x00, 0x12, 0x60, 0x30, 0x00, 0x12, 0x60, 0x30, 0x00, 0x12, 0x60,
+0x28, 0x00, 0x12, 0x60, 0x28, 0x00, 0x12, 0x60, 0x28, 0x00, 0x12, 0x60, 0x34, 0x00, 0x12, 0x60,
+0x34, 0x00, 0x12, 0x60, 0x38, 0x00, 0x12, 0x60, 0x38, 0x00, 0x12, 0x60, 0x3c, 0x00, 0x12, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
+0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x13, 0x60, 0x14, 0x00, 0x13, 0x60, 0x10, 0x00, 0x13, 0x60,
0x10, 0x00, 0x13, 0x60, 0x10, 0x00, 0x13, 0x60, 0x10, 0x00, 0x13, 0x60, 0x10, 0x00, 0x13, 0x60,
0x10, 0x00, 0x13, 0x60, 0x10, 0x00, 0x13, 0x60, 0x1c, 0x00, 0x13, 0x60, 0x1c, 0x00, 0x13, 0x60,
-0x18, 0x00, 0x13, 0x60, 0x18, 0x00, 0x13, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
-0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x2f,
-0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x52, 0x4f, 0x4d,
+0x18, 0x00, 0x13, 0x60, 0x18, 0x00, 0x13, 0x60, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
+0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x52, 0x4f, 0x4d, 0x2f, 0x6e, 0x69, 0x63,
+0x2f, 0x68, 0x61, 0x6c, 0x2f, 0x4d, 0x54, 0x37, 0x36, 0x30, 0x33, 0x2f, 0x68, 0x61, 0x6c, 0x5f,
+0x70, 0x77, 0x72, 0x5f, 0x6d, 0x67, 0x74, 0x5f, 0x72, 0x6f, 0x6d, 0x2e, 0x63, 0x00, 0x00, 0x00,
+0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63,
0x2f, 0x6e, 0x69, 0x63, 0x2f, 0x68, 0x61, 0x6c, 0x2f, 0x4d, 0x54, 0x37, 0x36, 0x30, 0x33, 0x2f,
-0x68, 0x61, 0x6c, 0x5f, 0x70, 0x77, 0x72, 0x5f, 0x6d, 0x67, 0x74, 0x5f, 0x72, 0x6f, 0x6d, 0x2e,
-0x63, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
-0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6e, 0x69, 0x63, 0x2f, 0x68, 0x61, 0x6c, 0x2f, 0x4d, 0x54, 0x37,
-0x36, 0x30, 0x33, 0x2f, 0x68, 0x61, 0x6c, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x2f,
-0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6e, 0x69, 0x63,
-0x2f, 0x6e, 0x69, 0x63, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x31, 0x60, 0x08, 0x00, 0x31, 0x60,
-0x04, 0x00, 0x31, 0x60, 0x0c, 0x00, 0x31, 0x60, 0x24, 0x00, 0x31, 0x60, 0x28, 0x00, 0x31, 0x60,
-0x08, 0x00, 0x00, 0xa0, 0x04, 0x00, 0x00, 0xa0, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
-0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x63, 0x6e,
-0x6d, 0x5f, 0x6d, 0x65, 0x6d, 0x2e, 0x63, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
-0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x74, 0x78,
+0x68, 0x61, 0x6c, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
+0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6e, 0x69, 0x63, 0x2f, 0x6e, 0x69, 0x63,
+0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x31, 0x60, 0x08, 0x00, 0x31, 0x60, 0x04, 0x00, 0x31, 0x60,
+0x0c, 0x00, 0x31, 0x60, 0x24, 0x00, 0x31, 0x60, 0x28, 0x00, 0x31, 0x60, 0x08, 0x00, 0x00, 0xa0,
+0x04, 0x00, 0x00, 0xa0, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
+0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x63, 0x6e, 0x6d, 0x5f, 0x6d, 0x65,
0x6d, 0x2e, 0x63, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
-0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x72, 0x78, 0x6d, 0x2e, 0x63, 0x00,
-0x41, 0x43, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x70,
-0x0a, 0x00, 0x00, 0x00, 0x43, 0x46, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65,
-0x20, 0x66, 0x61, 0x69, 0x6c, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x74, 0x78, 0x6d, 0x2e, 0x63, 0x00,
+0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63,
+0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x72, 0x78, 0x6d, 0x2e, 0x63, 0x00, 0x41, 0x43, 0x20, 0x71,
+0x75, 0x65, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x70, 0x0a, 0x00, 0x00, 0x00,
+0x43, 0x46, 0x2d, 0x45, 0x4e, 0x44, 0x20, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x20, 0x66, 0x61, 0x69,
+0x6c, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x59, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
-0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x32,
-0x70, 0x5f, 0x66, 0x73, 0x6d, 0x2e, 0x63, 0x00, 0x64, 0x6c, 0x66, 0x6d, 0x43, 0x6d, 0x64, 0x46,
-0x77, 0x52, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x20, 0x50,
-0x53, 0x45, 0x20, 0x62, 0x75, 0x66, 0x20, 0x45, 0x72, 0x72, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xef, 0x00, 0x00, 0x00, 0x98, 0x64, 0x10, 0x00, 0xed, 0x00, 0x00, 0x00,
-0xb8, 0x7d, 0x10, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x2c, 0x60, 0x10, 0x00, 0x73, 0x72, 0x63, 0x2f,
-0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d,
-0x74, 0x2f, 0x68, 0x65, 0x6d, 0x5f, 0x63, 0x6d, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x30,
-0x65, 0x78, 0x74, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x01, 0x00, 0x00, 0x00, 0xac, 0x7e, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xa8, 0x7f, 0x10, 0x00,
-0x0e, 0x00, 0x00, 0x00, 0x90, 0x80, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x63, 0x10, 0x00,
-0x05, 0x00, 0x00, 0x00, 0x28, 0x7e, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x79, 0x10, 0x00,
-0x08, 0x00, 0x00, 0x00, 0x20, 0x78, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x7c, 0x4e, 0x10, 0x00,
-0x14, 0x00, 0x00, 0x00, 0xdc, 0x51, 0x10, 0x00, 0x12, 0x00, 0x00, 0x00, 0xb0, 0x77, 0x10, 0x00,
-0x11, 0x00, 0x00, 0x00, 0xb8, 0x75, 0x10, 0x00, 0x13, 0x00, 0x00, 0x00, 0xd4, 0x6b, 0x10, 0x00,
-0x17, 0x00, 0x00, 0x00, 0x9c, 0x07, 0x10, 0x00, 0x18, 0x00, 0x00, 0x00, 0x90, 0xa7, 0x10, 0x00,
-0x2e, 0x00, 0x00, 0x00, 0x9c, 0xa3, 0x10, 0x00, 0x21, 0x00, 0x00, 0x00, 0x90, 0x6d, 0x10, 0x00,
-0x23, 0x00, 0x00, 0x00, 0x50, 0x6c, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0xe0, 0x6a, 0x10, 0x00,
-0x28, 0x00, 0x00, 0x00, 0x6c, 0x6a, 0x10, 0x00, 0x29, 0x00, 0x00, 0x00, 0xfc, 0x69, 0x10, 0x00,
-0x2b, 0x00, 0x00, 0x00, 0x44, 0x69, 0x10, 0x00, 0x33, 0x00, 0x00, 0x00, 0xc4, 0x68, 0x10, 0x00,
-0x55, 0x00, 0x00, 0x00, 0x70, 0x68, 0x10, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x48, 0x00,
-0x50, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00,
-0x5a, 0x00, 0x5b, 0x00, 0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00,
-0xa0, 0x00, 0xa1, 0x00, 0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00,
-0xa8, 0x00, 0xa9, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xc0, 0x00, 0xc1, 0x00,
-0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00,
-0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00,
-0xd2, 0x00, 0xd3, 0x00, 0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00,
-0xf7, 0x00, 0x24, 0x00, 0x25, 0x00, 0x34, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x42, 0x00, 0x43, 0x00,
-0x9e, 0x00, 0x9f, 0x00, 0xf2, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0x2e, 0x01, 0x30, 0x01,
-0x31, 0x01, 0x32, 0x01, 0x33, 0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01,
-0x39, 0x01, 0x3a, 0x01, 0x3b, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x00, 0x00,
-0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x05, 0x02, 0x00,
-0x02, 0x06, 0x02, 0x01, 0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x73, 0x72, 0x63, 0x2f,
-0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d,
-0x74, 0x2f, 0x6d, 0x74, 0x37, 0x36, 0x30, 0x33, 0x2f, 0x72, 0x6c, 0x6d, 0x5f, 0x70, 0x68, 0x79,
-0x2e, 0x63, 0x00, 0x00, 0x52, 0x58, 0x51, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x20, 0x46, 0x61,
-0x69, 0x6c, 0x0a, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
-0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x6d, 0x74, 0x37, 0x36, 0x30, 0x33,
-0x2f, 0x72, 0x6c, 0x6d, 0x5f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00,
-0x54, 0x48, 0x45, 0x52, 0x4d, 0x43, 0x52, 0x30, 0x5b, 0x25, 0x64, 0x5d, 0x3d, 0x30, 0x78, 0x25,
-0x78, 0x0a, 0x00, 0x00, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x6f, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65,
-0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x0a, 0x00, 0x72, 0x6c, 0x6d, 0x54,
-0x68, 0x65, 0x72, 0x6d, 0x6f, 0x52, 0x65, 0x43, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x0a, 0x00, 0x00,
-0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
-0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x63, 0x6e,
-0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04,
-0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40,
-0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x36, 0x63, 0x7c, 0x77, 0x7b,
-0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d,
-0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,
-0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3,
-0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a,
-0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,
-0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb,
-0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f,
-0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,
-0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc,
-0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a,
-0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,
-0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e,
-0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66,
-0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,
-0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d,
-0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, 0x52, 0x09, 0x6a, 0xd5,
-0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82,
-0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,
-0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66,
-0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64,
-0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,
-0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00,
-0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f,
-0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,
-0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22,
-0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71,
-0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,
-0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33,
-0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9,
-0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,
-0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e,
-0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, 0x00, 0x09, 0x12, 0x1b,
-0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b,
-0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3b, 0x32, 0x29, 0x20,
-0x1f, 0x16, 0x0d, 0x04, 0x73, 0x7a, 0x61, 0x68, 0x57, 0x5e, 0x45, 0x4c, 0xab, 0xa2, 0xb9, 0xb0,
-0x8f, 0x86, 0x9d, 0x94, 0xe3, 0xea, 0xf1, 0xf8, 0xc7, 0xce, 0xd5, 0xdc, 0x76, 0x7f, 0x64, 0x6d,
-0x52, 0x5b, 0x40, 0x49, 0x3e, 0x37, 0x2c, 0x25, 0x1a, 0x13, 0x08, 0x01, 0xe6, 0xef, 0xf4, 0xfd,
-0xc2, 0xcb, 0xd0, 0xd9, 0xae, 0xa7, 0xbc, 0xb5, 0x8a, 0x83, 0x98, 0x91, 0x4d, 0x44, 0x5f, 0x56,
-0x69, 0x60, 0x7b, 0x72, 0x05, 0x0c, 0x17, 0x1e, 0x21, 0x28, 0x33, 0x3a, 0xdd, 0xd4, 0xcf, 0xc6,
-0xf9, 0xf0, 0xeb, 0xe2, 0x95, 0x9c, 0x87, 0x8e, 0xb1, 0xb8, 0xa3, 0xaa, 0xec, 0xe5, 0xfe, 0xf7,
-0xc8, 0xc1, 0xda, 0xd3, 0xa4, 0xad, 0xb6, 0xbf, 0x80, 0x89, 0x92, 0x9b, 0x7c, 0x75, 0x6e, 0x67,
-0x58, 0x51, 0x4a, 0x43, 0x34, 0x3d, 0x26, 0x2f, 0x10, 0x19, 0x02, 0x0b, 0xd7, 0xde, 0xc5, 0xcc,
-0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0x47, 0x4e, 0x55, 0x5c,
-0x63, 0x6a, 0x71, 0x78, 0x0f, 0x06, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, 0x9a, 0x93, 0x88, 0x81,
-0xbe, 0xb7, 0xac, 0xa5, 0xd2, 0xdb, 0xc0, 0xc9, 0xf6, 0xff, 0xe4, 0xed, 0x0a, 0x03, 0x18, 0x11,
-0x2e, 0x27, 0x3c, 0x35, 0x42, 0x4b, 0x50, 0x59, 0x66, 0x6f, 0x74, 0x7d, 0xa1, 0xa8, 0xb3, 0xba,
-0x85, 0x8c, 0x97, 0x9e, 0xe9, 0xe0, 0xfb, 0xf2, 0xcd, 0xc4, 0xdf, 0xd6, 0x31, 0x38, 0x23, 0x2a,
-0x15, 0x1c, 0x07, 0x0e, 0x79, 0x70, 0x6b, 0x62, 0x5d, 0x54, 0x4f, 0x46, 0x00, 0x0b, 0x16, 0x1d,
-0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad,
-0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7b, 0x70, 0x6d, 0x66,
-0x57, 0x5c, 0x41, 0x4a, 0x23, 0x28, 0x35, 0x3e, 0x0f, 0x04, 0x19, 0x12, 0xcb, 0xc0, 0xdd, 0xd6,
-0xe7, 0xec, 0xf1, 0xfa, 0x93, 0x98, 0x85, 0x8e, 0xbf, 0xb4, 0xa9, 0xa2, 0xf6, 0xfd, 0xe0, 0xeb,
-0xda, 0xd1, 0xcc, 0xc7, 0xae, 0xa5, 0xb8, 0xb3, 0x82, 0x89, 0x94, 0x9f, 0x46, 0x4d, 0x50, 0x5b,
-0x6a, 0x61, 0x7c, 0x77, 0x1e, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2f, 0x8d, 0x86, 0x9b, 0x90,
-0xa1, 0xaa, 0xb7, 0xbc, 0xd5, 0xde, 0xc3, 0xc8, 0xf9, 0xf2, 0xef, 0xe4, 0x3d, 0x36, 0x2b, 0x20,
-0x11, 0x1a, 0x07, 0x0c, 0x65, 0x6e, 0x73, 0x78, 0x49, 0x42, 0x5f, 0x54, 0xf7, 0xfc, 0xe1, 0xea,
-0xdb, 0xd0, 0xcd, 0xc6, 0xaf, 0xa4, 0xb9, 0xb2, 0x83, 0x88, 0x95, 0x9e, 0x47, 0x4c, 0x51, 0x5a,
-0x6b, 0x60, 0x7d, 0x76, 0x1f, 0x14, 0x09, 0x02, 0x33, 0x38, 0x25, 0x2e, 0x8c, 0x87, 0x9a, 0x91,
-0xa0, 0xab, 0xb6, 0xbd, 0xd4, 0xdf, 0xc2, 0xc9, 0xf8, 0xf3, 0xee, 0xe5, 0x3c, 0x37, 0x2a, 0x21,
-0x10, 0x1b, 0x06, 0x0d, 0x64, 0x6f, 0x72, 0x79, 0x48, 0x43, 0x5e, 0x55, 0x01, 0x0a, 0x17, 0x1c,
-0x2d, 0x26, 0x3b, 0x30, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0xb1, 0xba, 0xa7, 0xac,
-0x9d, 0x96, 0x8b, 0x80, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0x7a, 0x71, 0x6c, 0x67,
-0x56, 0x5d, 0x40, 0x4b, 0x22, 0x29, 0x34, 0x3f, 0x0e, 0x05, 0x18, 0x13, 0xca, 0xc1, 0xdc, 0xd7,
-0xe6, 0xed, 0xf0, 0xfb, 0x92, 0x99, 0x84, 0x8f, 0xbe, 0xb5, 0xa8, 0xa3, 0x00, 0x0d, 0x1a, 0x17,
-0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7,
-0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbb, 0xb6, 0xa1, 0xac,
-0x8f, 0x82, 0x95, 0x98, 0xd3, 0xde, 0xc9, 0xc4, 0xe7, 0xea, 0xfd, 0xf0, 0x6b, 0x66, 0x71, 0x7c,
-0x5f, 0x52, 0x45, 0x48, 0x03, 0x0e, 0x19, 0x14, 0x37, 0x3a, 0x2d, 0x20, 0x6d, 0x60, 0x77, 0x7a,
-0x59, 0x54, 0x43, 0x4e, 0x05, 0x08, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0xbd, 0xb0, 0xa7, 0xaa,
-0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, 0xd6, 0xdb, 0xcc, 0xc1,
-0xe2, 0xef, 0xf8, 0xf5, 0xbe, 0xb3, 0xa4, 0xa9, 0x8a, 0x87, 0x90, 0x9d, 0x06, 0x0b, 0x1c, 0x11,
-0x32, 0x3f, 0x28, 0x25, 0x6e, 0x63, 0x74, 0x79, 0x5a, 0x57, 0x40, 0x4d, 0xda, 0xd7, 0xc0, 0xcd,
-0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, 0x0a, 0x07, 0x10, 0x1d,
-0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, 0x61, 0x6c, 0x7b, 0x76,
-0x55, 0x58, 0x4f, 0x42, 0x09, 0x04, 0x13, 0x1e, 0x3d, 0x30, 0x27, 0x2a, 0xb1, 0xbc, 0xab, 0xa6,
-0x85, 0x88, 0x9f, 0x92, 0xd9, 0xd4, 0xc3, 0xce, 0xed, 0xe0, 0xf7, 0xfa, 0xb7, 0xba, 0xad, 0xa0,
-0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, 0x67, 0x6a, 0x7d, 0x70,
-0x53, 0x5e, 0x49, 0x44, 0x0f, 0x02, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0x0c, 0x01, 0x16, 0x1b,
-0x38, 0x35, 0x22, 0x2f, 0x64, 0x69, 0x7e, 0x73, 0x50, 0x5d, 0x4a, 0x47, 0xdc, 0xd1, 0xc6, 0xcb,
-0xe8, 0xe5, 0xf2, 0xff, 0xb4, 0xb9, 0xae, 0xa3, 0x80, 0x8d, 0x9a, 0x97, 0x00, 0x0e, 0x1c, 0x12,
-0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2,
-0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdb, 0xd5, 0xc7, 0xc9,
-0xe3, 0xed, 0xff, 0xf1, 0xab, 0xa5, 0xb7, 0xb9, 0x93, 0x9d, 0x8f, 0x81, 0x3b, 0x35, 0x27, 0x29,
-0x03, 0x0d, 0x1f, 0x11, 0x4b, 0x45, 0x57, 0x59, 0x73, 0x7d, 0x6f, 0x61, 0xad, 0xa3, 0xb1, 0xbf,
-0x95, 0x9b, 0x89, 0x87, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0x4d, 0x43, 0x51, 0x5f,
-0x75, 0x7b, 0x69, 0x67, 0x3d, 0x33, 0x21, 0x2f, 0x05, 0x0b, 0x19, 0x17, 0x76, 0x78, 0x6a, 0x64,
-0x4e, 0x40, 0x52, 0x5c, 0x06, 0x08, 0x1a, 0x14, 0x3e, 0x30, 0x22, 0x2c, 0x96, 0x98, 0x8a, 0x84,
-0xae, 0xa0, 0xb2, 0xbc, 0xe6, 0xe8, 0xfa, 0xf4, 0xde, 0xd0, 0xc2, 0xcc, 0x41, 0x4f, 0x5d, 0x53,
-0x79, 0x77, 0x65, 0x6b, 0x31, 0x3f, 0x2d, 0x23, 0x09, 0x07, 0x15, 0x1b, 0xa1, 0xaf, 0xbd, 0xb3,
-0x99, 0x97, 0x85, 0x8b, 0xd1, 0xdf, 0xcd, 0xc3, 0xe9, 0xe7, 0xf5, 0xfb, 0x9a, 0x94, 0x86, 0x88,
-0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x7a, 0x74, 0x66, 0x68,
-0x42, 0x4c, 0x5e, 0x50, 0x0a, 0x04, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, 0xec, 0xe2, 0xf0, 0xfe,
-0xd4, 0xda, 0xc8, 0xc6, 0x9c, 0x92, 0x80, 0x8e, 0xa4, 0xaa, 0xb8, 0xb6, 0x0c, 0x02, 0x10, 0x1e,
-0x34, 0x3a, 0x28, 0x26, 0x7c, 0x72, 0x60, 0x6e, 0x44, 0x4a, 0x58, 0x56, 0x37, 0x39, 0x2b, 0x25,
-0x0f, 0x01, 0x13, 0x1d, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0xd7, 0xd9, 0xcb, 0xc5,
-0xef, 0xe1, 0xf3, 0xfd, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0x01, 0x23, 0x45, 0x67,
-0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf0, 0xe1, 0xd2, 0xc3,
-0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
-0x3d, 0x3e, 0x47, 0x31, 0x2c, 0x20, 0x63, 0x6e, 0x74, 0x3a, 0x25, 0x64, 0x2d, 0x25, 0x64, 0x0a,
-0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
-0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x62, 0x62, 0x70, 0x72, 0x66, 0x2f, 0x6d, 0x74, 0x37, 0x36, 0x30,
-0x33, 0x2f, 0x72, 0x6c, 0x6d, 0x5f, 0x72, 0x66, 0x5f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x74, 0x37,
-0x36, 0x30, 0x33, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x52, 0x4c, 0x4d, 0x20, 0x43, 0x41, 0x4c, 0x28,
-0x25, 0x73, 0x29, 0x28, 0x25, 0x73, 0x29, 0x45, 0x52, 0x52, 0x0a, 0x00, 0x45, 0x4c, 0x4e, 0x41,
-0x5f, 0x54, 0x42, 0x4c, 0x25, 0x64, 0x20, 0x52, 0x46, 0x0a, 0x00, 0x00, 0x45, 0x4c, 0x4e, 0x41,
-0x5f, 0x54, 0x42, 0x4c, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x31, 0x01,
-0x01, 0x00, 0x00, 0x00, 0x40, 0x78, 0x7d, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x62, 0x02,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x31, 0x01, 0x65, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
-0x40, 0x78, 0x7d, 0x01, 0x7f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x62, 0x02,
-0xcc, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe0, 0xcd, 0x24, 0x00, 0xea, 0x19, 0x2d, 0x01,
-0x00, 0x00, 0x08, 0x00, 0x62, 0x1a, 0xf1, 0x00, 0x33, 0x33, 0x03, 0x00, 0xea, 0x19, 0x96, 0x00,
-0x00, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x68, 0xe1, 0x24, 0x00, 0xf8, 0x19, 0x2e, 0x01,
-0x00, 0x00, 0x02, 0x00, 0x70, 0x1a, 0xf1, 0x00, 0x33, 0x33, 0x0b, 0x00, 0xf8, 0x19, 0x97, 0x00,
-0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf0, 0xf4, 0x24, 0x00, 0x06, 0x1a, 0x2e, 0x01,
-0x00, 0x00, 0x0c, 0x00, 0x7e, 0x1a, 0xf2, 0x00, 0x33, 0x33, 0x03, 0x00, 0x06, 0x1a, 0x97, 0x00,
-0x00, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00, 0x78, 0x08, 0x25, 0x00, 0x14, 0x1a, 0x2f, 0x01,
-0x00, 0x00, 0x06, 0x00, 0x8c, 0x1a, 0xf2, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x14, 0x1a, 0x97, 0x00,
-0x00, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x25, 0x00, 0x20, 0x1a, 0x30, 0x01,
-0x00, 0x00, 0x00, 0x00, 0x9a, 0x1a, 0xf3, 0x00, 0x33, 0x33, 0x03, 0x00, 0x20, 0x1a, 0x98, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x88, 0x2f, 0x25, 0x00, 0x2e, 0x1a, 0x30, 0x01,
-0x00, 0x00, 0x0a, 0x00, 0xa8, 0x1a, 0xf3, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x2e, 0x1a, 0x98, 0x00,
-0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x43, 0x25, 0x00, 0x3c, 0x1a, 0x31, 0x01,
-0x00, 0x00, 0x04, 0x00, 0xb6, 0x1a, 0xf4, 0x00, 0x33, 0x33, 0x03, 0x00, 0x3c, 0x1a, 0x98, 0x00,
-0x00, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x98, 0x56, 0x25, 0x00, 0x4a, 0x1a, 0x31, 0x01,
-0x00, 0x00, 0x0e, 0x00, 0xc4, 0x1a, 0xf4, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x4a, 0x1a, 0x98, 0x00,
-0x00, 0x00, 0x0f, 0x00, 0x09, 0x00, 0x00, 0x00, 0x20, 0x6a, 0x25, 0x00, 0x58, 0x1a, 0x32, 0x01,
-0x00, 0x00, 0x08, 0x00, 0xd2, 0x1a, 0xf5, 0x00, 0x33, 0x33, 0x03, 0x00, 0x58, 0x1a, 0x99, 0x00,
-0x00, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xa8, 0x7d, 0x25, 0x00, 0x66, 0x1a, 0x33, 0x01,
-0x00, 0x00, 0x02, 0x00, 0xe0, 0x1a, 0xf5, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x66, 0x1a, 0x99, 0x00,
-0x00, 0x00, 0x09, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x30, 0x91, 0x25, 0x00, 0x74, 0x1a, 0x33, 0x01,
-0x00, 0x00, 0x0c, 0x00, 0xee, 0x1a, 0xf6, 0x00, 0x33, 0x33, 0x03, 0x00, 0x74, 0x1a, 0x99, 0x00,
-0x00, 0x00, 0x0e, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xb8, 0xa4, 0x25, 0x00, 0x82, 0x1a, 0x34, 0x01,
-0x00, 0x00, 0x06, 0x00, 0xfc, 0x1a, 0xf6, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x82, 0x1a, 0x9a, 0x00,
-0x00, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x40, 0xb8, 0x25, 0x00, 0x8e, 0x1a, 0x35, 0x01,
-0x00, 0x00, 0x00, 0x00, 0x0a, 0x1b, 0xf7, 0x00, 0x33, 0x33, 0x03, 0x00, 0x8e, 0x1a, 0x9a, 0x00,
-0x00, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x20, 0xe7, 0x25, 0x00, 0xb0, 0x1a, 0x36, 0x01,
-0x00, 0x00, 0x08, 0x00, 0x2c, 0x1b, 0xf8, 0x00, 0x66, 0x66, 0x06, 0x00, 0xb0, 0x1a, 0x9b, 0x00,
-0x00, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xc8, 0x98, 0x66, 0x01, 0x40, 0x19, 0x25, 0x01,
-0x9a, 0x19, 0x0c, 0x00, 0xb6, 0x19, 0xeb, 0x00, 0x7b, 0x14, 0x00, 0x00, 0x40, 0x19, 0x92, 0x00,
-0xcd, 0x0c, 0x0e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x8c, 0x09, 0x80, 0x00, 0x8c, 0x09, 0x80, 0x00,
-0x8c, 0x09, 0x80, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x66, 0xa4, 0x81, 0xee, 0x66, 0xa4, 0x81, 0xee,
-0x66, 0xa4, 0x81, 0xee, 0xb0, 0x00, 0x00, 0x00, 0xc4, 0xa3, 0x01, 0x04, 0x66, 0xab, 0x01, 0x04,
-0xc9, 0xa3, 0x01, 0x04, 0xb4, 0x00, 0x00, 0x00, 0x10, 0xc0, 0xf0, 0x3f, 0x10, 0xc0, 0xf0, 0x3f,
-0x10, 0xc0, 0xf0, 0x3f, 0xbc, 0x00, 0x00, 0x00, 0xc3, 0xb6, 0x44, 0x44, 0xc3, 0xb6, 0x55, 0x55,
-0xc3, 0xb6, 0x66, 0x66, 0x00, 0x06, 0x00, 0x00, 0xb3, 0x6f, 0x62, 0xc1, 0xc3, 0x6f, 0x62, 0xc1,
-0xf3, 0x6f, 0x62, 0xc1, 0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x13, 0x33, 0x33, 0x43, 0x0f,
-0x00, 0x00, 0x8a, 0x09, 0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56, 0xe8, 0x00, 0x00, 0x00,
-0x81, 0x00, 0x61, 0x00, 0xec, 0x00, 0x00, 0x00, 0x21, 0x00, 0x83, 0x00, 0xf0, 0x00, 0x00, 0x00,
-0x63, 0x00, 0x23, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x88, 0x00, 0x68, 0x00, 0xf8, 0x00, 0x00, 0x00,
-0x28, 0x00, 0x8f, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x6f, 0x00, 0xbd, 0x00, 0x00, 0x01, 0x00, 0x00,
-0x9d, 0x00, 0x7d, 0x00, 0x04, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x1d, 0x00, 0x10, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x78, 0xbf, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x78, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56, 0x18, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x11, 0x1d, 0x1e, 0x35, 0xe0, 0x00, 0x00, 0x00,
-0x1c, 0x35, 0x17, 0x19, 0xe8, 0x00, 0x00, 0x00, 0xe1, 0x00, 0xa1, 0x00, 0xec, 0x00, 0x00, 0x00,
-0x81, 0x00, 0x61, 0x00, 0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x83, 0x00, 0xf4, 0x00, 0x00, 0x00,
-0x63, 0x00, 0xa7, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x87, 0x00, 0x67, 0x00, 0xfc, 0x00, 0x00, 0x00,
-0xae, 0x00, 0x8e, 0x00, 0x00, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0x04, 0x01, 0x00, 0x00,
-0x0e, 0x00, 0x0e, 0x00, 0x00, 0x08, 0x00, 0x00, 0x66, 0x44, 0x66, 0x44, 0x04, 0x08, 0x00, 0x00,
-0x66, 0x44, 0x66, 0x44, 0x08, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x0c, 0x08, 0x00, 0x00,
-0x00, 0x44, 0x00, 0x44, 0x10, 0x08, 0x00, 0x00, 0x44, 0x44, 0x44, 0x41, 0x14, 0x08, 0x00, 0x00,
-0x44, 0x44, 0x44, 0x41, 0x3c, 0x06, 0x00, 0x00, 0x32, 0x74, 0x32, 0x63, 0x40, 0x06, 0x00, 0x00,
-0x22, 0x62, 0x32, 0x63, 0x4c, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x50, 0x06, 0x00, 0x00,
-0x0a, 0x0a, 0x0a, 0x01, 0x58, 0x06, 0x00, 0x00, 0x19, 0x14, 0x14, 0x05, 0x5c, 0x06, 0x00, 0x00,
-0x0a, 0x07, 0x07, 0x01, 0x64, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x68, 0x06, 0x00, 0x00,
-0x19, 0x14, 0x14, 0x05, 0x00, 0x08, 0x00, 0x00, 0x66, 0x44, 0x66, 0x44, 0x04, 0x08, 0x00, 0x00,
-0x66, 0x44, 0x66, 0x44, 0x08, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x0c, 0x08, 0x00, 0x00,
-0x00, 0x44, 0x00, 0x44, 0x10, 0x08, 0x00, 0x00, 0x44, 0x44, 0x44, 0x41, 0x14, 0x08, 0x00, 0x00,
-0x44, 0x44, 0x44, 0x41, 0x3c, 0x06, 0x00, 0x00, 0x32, 0x74, 0x32, 0x63, 0x40, 0x06, 0x00, 0x00,
-0x22, 0x62, 0x32, 0x63, 0x4c, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x50, 0x06, 0x00, 0x00,
-0x0a, 0x0a, 0x0a, 0x01, 0x58, 0x06, 0x00, 0x00, 0x19, 0x14, 0x14, 0x05, 0x5c, 0x06, 0x00, 0x00,
-0x0a, 0x07, 0x07, 0x01, 0x64, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x68, 0x06, 0x00, 0x00,
-0x19, 0x14, 0x14, 0x05, 0xfe, 0x77, 0x0d, 0x80, 0x00, 0x80, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80,
-0x00, 0x80, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x80, 0x00, 0x80, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80,
-0x00, 0x80, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x80, 0x00, 0x90, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80,
-0x00, 0x90, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x80, 0x00, 0x90, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80,
-0x00, 0x90, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x80, 0x00, 0xa0, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80,
-0x00, 0xa0, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x80, 0x00, 0xa0, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80,
-0x00, 0xa0, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x80, 0x00, 0xb0, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80,
-0x00, 0xb0, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x80, 0x00, 0xb0, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80,
-0x00, 0xb0, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x90, 0x00, 0x80, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90,
-0x00, 0x80, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x90, 0x00, 0x80, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90,
-0x00, 0x80, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x90, 0x00, 0x90, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90,
-0x00, 0x90, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x90, 0x00, 0x90, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90,
-0x00, 0x90, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x90, 0x00, 0xa0, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90,
-0x00, 0xa0, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x90, 0x00, 0xa0, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90,
-0x00, 0xa0, 0x00, 0x00, 0xfe, 0x77, 0x0d, 0x90, 0x00, 0xb0, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90,
-0x00, 0xb0, 0x00, 0x00, 0xfe, 0xb7, 0x0f, 0x90, 0x00, 0xb0, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90,
-0x00, 0xb0, 0x00, 0x00, 0x00, 0x08, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x20, 0x60,
-0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x20, 0x60,
-0x00, 0x00, 0x00, 0x00, 0x10, 0x08, 0x20, 0x60, 0xfe, 0xfb, 0xff, 0x3f, 0x14, 0x08, 0x20, 0x60,
-0xfa, 0xf3, 0xdf, 0x3f, 0x18, 0x08, 0x20, 0x60, 0xf5, 0xdf, 0x9f, 0x3f, 0x1c, 0x08, 0x20, 0x60,
-0xf0, 0xcb, 0x4f, 0x3f, 0x20, 0x08, 0x20, 0x60, 0xeb, 0xb3, 0xef, 0x3e, 0x24, 0x08, 0x20, 0x60,
-0xe9, 0xa7, 0xaf, 0x3e, 0x28, 0x08, 0x20, 0x60, 0xef, 0xb3, 0xaf, 0x3e, 0x2c, 0x08, 0x20, 0x60,
-0xff, 0xe7, 0x3f, 0x3f, 0x30, 0x08, 0x20, 0x60, 0x1c, 0x44, 0x80, 0x00, 0x34, 0x08, 0x20, 0x60,
-0x46, 0xdc, 0x90, 0x02, 0x38, 0x08, 0x20, 0x60, 0x7a, 0x9c, 0x61, 0x05, 0x3c, 0x08, 0x20, 0x60,
-0xb3, 0x80, 0xd2, 0x08, 0x40, 0x08, 0x20, 0x60, 0xec, 0x68, 0x73, 0x0c, 0x44, 0x08, 0x20, 0x60,
-0x1d, 0x39, 0xe4, 0x0f, 0x48, 0x08, 0x20, 0x60, 0x3f, 0xd9, 0xa4, 0x12, 0x4c, 0x08, 0x20, 0x60,
-0x4e, 0x2d, 0x65, 0x14, 0x00, 0x08, 0x20, 0x60, 0xfd, 0xf7, 0xdf, 0x3f, 0x04, 0x08, 0x20, 0x60,
-0xfd, 0xf7, 0xdf, 0x3f, 0x08, 0x08, 0x20, 0x60, 0xfd, 0xf7, 0xdf, 0x3f, 0x0c, 0x08, 0x20, 0x60,
-0xfd, 0xf7, 0xdf, 0x3f, 0x10, 0x08, 0x20, 0x60, 0xff, 0xfb, 0xef, 0x3f, 0x14, 0x08, 0x20, 0x60,
-0x02, 0x04, 0xf0, 0x3f, 0x18, 0x08, 0x20, 0x60, 0x07, 0x14, 0x30, 0x00, 0x1c, 0x08, 0x20, 0x60,
-0x0f, 0x30, 0x90, 0x00, 0x20, 0x08, 0x20, 0x60, 0x19, 0x54, 0x20, 0x01, 0x24, 0x08, 0x20, 0x60,
-0x26, 0x88, 0xd0, 0x01, 0x28, 0x08, 0x20, 0x60, 0x36, 0xc4, 0xb0, 0x02, 0x2c, 0x08, 0x20, 0x60,
-0x49, 0x0c, 0xc1, 0x03, 0x30, 0x08, 0x20, 0x60, 0x5d, 0x58, 0xf1, 0x04, 0x34, 0x08, 0x20, 0x60,
-0x72, 0xac, 0x41, 0x06, 0x38, 0x08, 0x20, 0x60, 0x86, 0x00, 0x92, 0x07, 0x3c, 0x08, 0x20, 0x60,
-0x99, 0x4c, 0xd2, 0x08, 0x40, 0x08, 0x20, 0x60, 0xaa, 0x94, 0xf2, 0x09, 0x44, 0x08, 0x20, 0x60,
-0xb7, 0xcc, 0xe2, 0x0a, 0x48, 0x08, 0x20, 0x60, 0xbf, 0xf4, 0xa2, 0x0b, 0x4c, 0x08, 0x20, 0x60,
-0xc2, 0x08, 0x13, 0x0c, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe4, 0x00, 0x00, 0xe4, 0x94,
-0x00, 0x00, 0xe4, 0x90, 0x00, 0x00, 0xe4, 0x91, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
-0x00, 0x00, 0xe4, 0xe4, 0x00, 0x00, 0xe4, 0x94, 0x00, 0x00, 0xe4, 0x90, 0x00, 0x00, 0xe4, 0x91,
-0x01, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x76, 0x66, 0x66, 0x66, 0x66,
-0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00,
-0x66, 0x66, 0x66, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
-0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xa8, 0x88, 0x88, 0x88, 0x88,
-0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
-0x88, 0x88, 0x88, 0xa8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
-0x01, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x44, 0x46, 0x41, 0x44, 0x44, 0x46, 0x11,
-0x44, 0x44, 0x46, 0x11, 0x44, 0x44, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00,
-0x44, 0x44, 0x46, 0x41, 0x44, 0x44, 0x46, 0x11, 0x44, 0x44, 0x46, 0x11, 0x44, 0x44, 0x46, 0x11,
-0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x32, 0x52, 0x43, 0x63, 0x32, 0x52, 0x46, 0x34,
-0x32, 0x52, 0x66, 0x34, 0x32, 0x52, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
-0x32, 0x52, 0x42, 0x52, 0x32, 0x52, 0x45, 0x24, 0x32, 0x52, 0x55, 0x24, 0x32, 0x52, 0x54, 0x24,
-0x01, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x14, 0x05, 0x05, 0x0f, 0x0f, 0x14,
-0x05, 0x05, 0x0f, 0x14, 0x0f, 0x05, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
-0x19, 0x0f, 0x19, 0x0a, 0x0a, 0x0f, 0x0f, 0x19, 0x0a, 0x0a, 0x0f, 0x19, 0x0f, 0x0a, 0x0f, 0x19,
-0x01, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x07, 0x04, 0x07, 0x01, 0x01, 0x04, 0x04, 0x07,
-0x01, 0x01, 0x04, 0x07, 0x04, 0x01, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
-0x0a, 0x04, 0x0a, 0x03, 0x03, 0x04, 0x04, 0x0a, 0x03, 0x03, 0x04, 0x0a, 0x04, 0x03, 0x04, 0x0a,
-0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa4, 0x08, 0xa4,
-0x38, 0xa4, 0x28, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa4, 0x32, 0xa4,
-0x00, 0x00, 0x00, 0x00, 0x39, 0x92, 0x29, 0x92, 0x19, 0x92, 0x09, 0x92, 0x79, 0x92, 0x69, 0x92,
-0x59, 0x92, 0x49, 0x92, 0x39, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xf0, 0x59, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x55, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
+0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x70, 0x32, 0x70, 0x5f, 0x66, 0x73,
+0x6d, 0x2e, 0x63, 0x00, 0x64, 0x6c, 0x66, 0x6d, 0x43, 0x6d, 0x64, 0x46, 0x77, 0x52, 0x65, 0x53,
+0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x20, 0x50, 0x53, 0x45, 0x20, 0x62,
+0x75, 0x66, 0x20, 0x45, 0x72, 0x72, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xef, 0x00, 0x00, 0x00, 0x24, 0x65, 0x10, 0x00, 0xed, 0x00, 0x00, 0x00, 0x44, 0x7e, 0x10, 0x00,
+0xc2, 0x00, 0x00, 0x00, 0xb8, 0x60, 0x10, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
+0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x68, 0x65,
+0x6d, 0x5f, 0x63, 0x6d, 0x64, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x30, 0x65, 0x78, 0x74, 0x2e,
+0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
+0x38, 0x7f, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 0x80, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00,
+0x1c, 0x81, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x90, 0x63, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00,
+0xb4, 0x7e, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x7a, 0x10, 0x00, 0x08, 0x00, 0x00, 0x00,
+0xac, 0x78, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x88, 0x4e, 0x10, 0x00, 0x14, 0x00, 0x00, 0x00,
+0xe8, 0x51, 0x10, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x10, 0x00, 0x11, 0x00, 0x00, 0x00,
+0x44, 0x76, 0x10, 0x00, 0x13, 0x00, 0x00, 0x00, 0x60, 0x6c, 0x10, 0x00, 0x17, 0x00, 0x00, 0x00,
+0x9c, 0x07, 0x10, 0x00, 0x18, 0x00, 0x00, 0x00, 0x4c, 0xa8, 0x10, 0x00, 0x2e, 0x00, 0x00, 0x00,
+0x24, 0xa4, 0x10, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1c, 0x6e, 0x10, 0x00, 0x23, 0x00, 0x00, 0x00,
+0xdc, 0x6c, 0x10, 0x00, 0x27, 0x00, 0x00, 0x00, 0x6c, 0x6b, 0x10, 0x00, 0x28, 0x00, 0x00, 0x00,
+0xf8, 0x6a, 0x10, 0x00, 0x29, 0x00, 0x00, 0x00, 0x88, 0x6a, 0x10, 0x00, 0x2b, 0x00, 0x00, 0x00,
+0xd0, 0x69, 0x10, 0x00, 0x33, 0x00, 0x00, 0x00, 0x50, 0x69, 0x10, 0x00, 0x55, 0x00, 0x00, 0x00,
+0xfc, 0x68, 0x10, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x48, 0x00, 0x50, 0x00, 0x53, 0x00,
+0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, 0x00,
+0x5c, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, 0x00, 0x60, 0x00, 0x61, 0x00, 0xa0, 0x00, 0xa1, 0x00,
+0xa2, 0x00, 0xa3, 0x00, 0xa4, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xa8, 0x00, 0xa9, 0x00,
+0xaa, 0x00, 0xab, 0x00, 0xac, 0x00, 0xad, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, 0x00,
+0xc4, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, 0x00, 0xc8, 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00,
+0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd2, 0x00, 0xd3, 0x00,
+0xd4, 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0x24, 0x00,
+0x25, 0x00, 0x34, 0x00, 0x39, 0x00, 0x3b, 0x00, 0x42, 0x00, 0x43, 0x00, 0x9e, 0x00, 0x9f, 0x00,
+0xf2, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, 0x00, 0x2e, 0x01, 0x30, 0x01, 0x31, 0x01, 0x32, 0x01,
+0x33, 0x01, 0x34, 0x01, 0x35, 0x01, 0x36, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3a, 0x01,
+0x3b, 0x01, 0x3c, 0x01, 0x3d, 0x01, 0x3e, 0x01, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
+0x01, 0x00, 0x01, 0x01, 0x01, 0x02, 0x01, 0x03, 0x01, 0x05, 0x02, 0x00, 0x02, 0x06, 0x02, 0x01,
+0x02, 0x02, 0x02, 0x03, 0x02, 0x04, 0x02, 0x05, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69,
+0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x6d, 0x74,
+0x37, 0x36, 0x30, 0x33, 0x2f, 0x72, 0x6c, 0x6d, 0x5f, 0x70, 0x68, 0x79, 0x2e, 0x63, 0x00, 0x00,
+0x52, 0x58, 0x51, 0x20, 0x52, 0x65, 0x73, 0x65, 0x74, 0x20, 0x46, 0x61, 0x69, 0x6c, 0x0a, 0x00,
+0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63,
+0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x6d, 0x74, 0x37, 0x36, 0x30, 0x33, 0x2f, 0x72, 0x6c, 0x6d,
+0x5f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x54, 0x48, 0x45, 0x52,
+0x4d, 0x43, 0x52, 0x30, 0x5b, 0x25, 0x64, 0x5d, 0x3d, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0x00,
+0x54, 0x68, 0x65, 0x72, 0x6d, 0x6f, 0x53, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x68, 0x65, 0x63,
+0x6b, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x0a, 0x00, 0x72, 0x6c, 0x6d, 0x54, 0x68, 0x65, 0x72, 0x6d,
+0x6f, 0x52, 0x65, 0x43, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x0a, 0x00, 0x00, 0x54, 0x68, 0x65, 0x72,
+0x6d, 0x61, 0x6c, 0x00, 0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69,
+0x5f, 0x6d, 0x61, 0x63, 0x2f, 0x6d, 0x67, 0x6d, 0x74, 0x2f, 0x63, 0x6e, 0x6d, 0x5f, 0x74, 0x69,
+0x6d, 0x65, 0x72, 0x2e, 0x63, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08,
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x80,
+0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x36, 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
+0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
+0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc,
+0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a,
+0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
+0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b,
+0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85,
+0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
+0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17,
+0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88,
+0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
+0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9,
+0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6,
+0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
+0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94,
+0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68,
+0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16, 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38,
+0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,
+0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d,
+0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2,
+0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,
+0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda,
+0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a,
+0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,
+0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea,
+0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85,
+0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,
+0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20,
+0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31,
+0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,
+0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0,
+0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26,
+0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, 0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f,
+0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, 0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf,
+0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, 0x3b, 0x32, 0x29, 0x20, 0x1f, 0x16, 0x0d, 0x04,
+0x73, 0x7a, 0x61, 0x68, 0x57, 0x5e, 0x45, 0x4c, 0xab, 0xa2, 0xb9, 0xb0, 0x8f, 0x86, 0x9d, 0x94,
+0xe3, 0xea, 0xf1, 0xf8, 0xc7, 0xce, 0xd5, 0xdc, 0x76, 0x7f, 0x64, 0x6d, 0x52, 0x5b, 0x40, 0x49,
+0x3e, 0x37, 0x2c, 0x25, 0x1a, 0x13, 0x08, 0x01, 0xe6, 0xef, 0xf4, 0xfd, 0xc2, 0xcb, 0xd0, 0xd9,
+0xae, 0xa7, 0xbc, 0xb5, 0x8a, 0x83, 0x98, 0x91, 0x4d, 0x44, 0x5f, 0x56, 0x69, 0x60, 0x7b, 0x72,
+0x05, 0x0c, 0x17, 0x1e, 0x21, 0x28, 0x33, 0x3a, 0xdd, 0xd4, 0xcf, 0xc6, 0xf9, 0xf0, 0xeb, 0xe2,
+0x95, 0x9c, 0x87, 0x8e, 0xb1, 0xb8, 0xa3, 0xaa, 0xec, 0xe5, 0xfe, 0xf7, 0xc8, 0xc1, 0xda, 0xd3,
+0xa4, 0xad, 0xb6, 0xbf, 0x80, 0x89, 0x92, 0x9b, 0x7c, 0x75, 0x6e, 0x67, 0x58, 0x51, 0x4a, 0x43,
+0x34, 0x3d, 0x26, 0x2f, 0x10, 0x19, 0x02, 0x0b, 0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8,
+0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, 0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78,
+0x0f, 0x06, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, 0x9a, 0x93, 0x88, 0x81, 0xbe, 0xb7, 0xac, 0xa5,
+0xd2, 0xdb, 0xc0, 0xc9, 0xf6, 0xff, 0xe4, 0xed, 0x0a, 0x03, 0x18, 0x11, 0x2e, 0x27, 0x3c, 0x35,
+0x42, 0x4b, 0x50, 0x59, 0x66, 0x6f, 0x74, 0x7d, 0xa1, 0xa8, 0xb3, 0xba, 0x85, 0x8c, 0x97, 0x9e,
+0xe9, 0xe0, 0xfb, 0xf2, 0xcd, 0xc4, 0xdf, 0xd6, 0x31, 0x38, 0x23, 0x2a, 0x15, 0x1c, 0x07, 0x0e,
+0x79, 0x70, 0x6b, 0x62, 0x5d, 0x54, 0x4f, 0x46, 0x00, 0x0b, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31,
+0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, 0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81,
+0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, 0x7b, 0x70, 0x6d, 0x66, 0x57, 0x5c, 0x41, 0x4a,
+0x23, 0x28, 0x35, 0x3e, 0x0f, 0x04, 0x19, 0x12, 0xcb, 0xc0, 0xdd, 0xd6, 0xe7, 0xec, 0xf1, 0xfa,
+0x93, 0x98, 0x85, 0x8e, 0xbf, 0xb4, 0xa9, 0xa2, 0xf6, 0xfd, 0xe0, 0xeb, 0xda, 0xd1, 0xcc, 0xc7,
+0xae, 0xa5, 0xb8, 0xb3, 0x82, 0x89, 0x94, 0x9f, 0x46, 0x4d, 0x50, 0x5b, 0x6a, 0x61, 0x7c, 0x77,
+0x1e, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2f, 0x8d, 0x86, 0x9b, 0x90, 0xa1, 0xaa, 0xb7, 0xbc,
+0xd5, 0xde, 0xc3, 0xc8, 0xf9, 0xf2, 0xef, 0xe4, 0x3d, 0x36, 0x2b, 0x20, 0x11, 0x1a, 0x07, 0x0c,
+0x65, 0x6e, 0x73, 0x78, 0x49, 0x42, 0x5f, 0x54, 0xf7, 0xfc, 0xe1, 0xea, 0xdb, 0xd0, 0xcd, 0xc6,
+0xaf, 0xa4, 0xb9, 0xb2, 0x83, 0x88, 0x95, 0x9e, 0x47, 0x4c, 0x51, 0x5a, 0x6b, 0x60, 0x7d, 0x76,
+0x1f, 0x14, 0x09, 0x02, 0x33, 0x38, 0x25, 0x2e, 0x8c, 0x87, 0x9a, 0x91, 0xa0, 0xab, 0xb6, 0xbd,
+0xd4, 0xdf, 0xc2, 0xc9, 0xf8, 0xf3, 0xee, 0xe5, 0x3c, 0x37, 0x2a, 0x21, 0x10, 0x1b, 0x06, 0x0d,
+0x64, 0x6f, 0x72, 0x79, 0x48, 0x43, 0x5e, 0x55, 0x01, 0x0a, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30,
+0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, 0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80,
+0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, 0x7a, 0x71, 0x6c, 0x67, 0x56, 0x5d, 0x40, 0x4b,
+0x22, 0x29, 0x34, 0x3f, 0x0e, 0x05, 0x18, 0x13, 0xca, 0xc1, 0xdc, 0xd7, 0xe6, 0xed, 0xf0, 0xfb,
+0x92, 0x99, 0x84, 0x8f, 0xbe, 0xb5, 0xa8, 0xa3, 0x00, 0x0d, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23,
+0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, 0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3,
+0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, 0xbb, 0xb6, 0xa1, 0xac, 0x8f, 0x82, 0x95, 0x98,
+0xd3, 0xde, 0xc9, 0xc4, 0xe7, 0xea, 0xfd, 0xf0, 0x6b, 0x66, 0x71, 0x7c, 0x5f, 0x52, 0x45, 0x48,
+0x03, 0x0e, 0x19, 0x14, 0x37, 0x3a, 0x2d, 0x20, 0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e,
+0x05, 0x08, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, 0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e,
+0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, 0xd6, 0xdb, 0xcc, 0xc1, 0xe2, 0xef, 0xf8, 0xf5,
+0xbe, 0xb3, 0xa4, 0xa9, 0x8a, 0x87, 0x90, 0x9d, 0x06, 0x0b, 0x1c, 0x11, 0x32, 0x3f, 0x28, 0x25,
+0x6e, 0x63, 0x74, 0x79, 0x5a, 0x57, 0x40, 0x4d, 0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9,
+0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, 0x0a, 0x07, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29,
+0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, 0x61, 0x6c, 0x7b, 0x76, 0x55, 0x58, 0x4f, 0x42,
+0x09, 0x04, 0x13, 0x1e, 0x3d, 0x30, 0x27, 0x2a, 0xb1, 0xbc, 0xab, 0xa6, 0x85, 0x88, 0x9f, 0x92,
+0xd9, 0xd4, 0xc3, 0xce, 0xed, 0xe0, 0xf7, 0xfa, 0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94,
+0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, 0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44,
+0x0f, 0x02, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, 0x0c, 0x01, 0x16, 0x1b, 0x38, 0x35, 0x22, 0x2f,
+0x64, 0x69, 0x7e, 0x73, 0x50, 0x5d, 0x4a, 0x47, 0xdc, 0xd1, 0xc6, 0xcb, 0xe8, 0xe5, 0xf2, 0xff,
+0xb4, 0xb9, 0xae, 0xa3, 0x80, 0x8d, 0x9a, 0x97, 0x00, 0x0e, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a,
+0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, 0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca,
+0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, 0xdb, 0xd5, 0xc7, 0xc9, 0xe3, 0xed, 0xff, 0xf1,
+0xab, 0xa5, 0xb7, 0xb9, 0x93, 0x9d, 0x8f, 0x81, 0x3b, 0x35, 0x27, 0x29, 0x03, 0x0d, 0x1f, 0x11,
+0x4b, 0x45, 0x57, 0x59, 0x73, 0x7d, 0x6f, 0x61, 0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87,
+0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, 0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67,
+0x3d, 0x33, 0x21, 0x2f, 0x05, 0x0b, 0x19, 0x17, 0x76, 0x78, 0x6a, 0x64, 0x4e, 0x40, 0x52, 0x5c,
+0x06, 0x08, 0x1a, 0x14, 0x3e, 0x30, 0x22, 0x2c, 0x96, 0x98, 0x8a, 0x84, 0xae, 0xa0, 0xb2, 0xbc,
+0xe6, 0xe8, 0xfa, 0xf4, 0xde, 0xd0, 0xc2, 0xcc, 0x41, 0x4f, 0x5d, 0x53, 0x79, 0x77, 0x65, 0x6b,
+0x31, 0x3f, 0x2d, 0x23, 0x09, 0x07, 0x15, 0x1b, 0xa1, 0xaf, 0xbd, 0xb3, 0x99, 0x97, 0x85, 0x8b,
+0xd1, 0xdf, 0xcd, 0xc3, 0xe9, 0xe7, 0xf5, 0xfb, 0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0,
+0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, 0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50,
+0x0a, 0x04, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, 0xec, 0xe2, 0xf0, 0xfe, 0xd4, 0xda, 0xc8, 0xc6,
+0x9c, 0x92, 0x80, 0x8e, 0xa4, 0xaa, 0xb8, 0xb6, 0x0c, 0x02, 0x10, 0x1e, 0x34, 0x3a, 0x28, 0x26,
+0x7c, 0x72, 0x60, 0x6e, 0x44, 0x4a, 0x58, 0x56, 0x37, 0x39, 0x2b, 0x25, 0x0f, 0x01, 0x13, 0x1d,
+0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, 0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd,
+0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
+0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0xf0, 0xe1, 0xd2, 0xc3, 0x01, 0x23, 0x45, 0x67,
+0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 0x3d, 0x3e, 0x47, 0x31,
+0x2c, 0x20, 0x63, 0x6e, 0x74, 0x3a, 0x25, 0x64, 0x2d, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+0x73, 0x72, 0x63, 0x2f, 0x77, 0x69, 0x66, 0x69, 0x5f, 0x75, 0x6e, 0x69, 0x5f, 0x6d, 0x61, 0x63,
+0x2f, 0x62, 0x62, 0x70, 0x72, 0x66, 0x2f, 0x6d, 0x74, 0x37, 0x36, 0x30, 0x33, 0x2f, 0x72, 0x6c,
+0x6d, 0x5f, 0x72, 0x66, 0x5f, 0x63, 0x61, 0x6c, 0x5f, 0x6d, 0x74, 0x37, 0x36, 0x30, 0x33, 0x2e,
+0x63, 0x00, 0x00, 0x00, 0x52, 0x4c, 0x4d, 0x20, 0x43, 0x41, 0x4c, 0x28, 0x25, 0x73, 0x29, 0x28,
+0x25, 0x73, 0x29, 0x45, 0x52, 0x52, 0x0a, 0x00, 0x45, 0x4c, 0x4e, 0x41, 0x5f, 0x54, 0x42, 0x4c,
+0x25, 0x64, 0x20, 0x52, 0x46, 0x0a, 0x00, 0x00, 0x45, 0x4c, 0x4e, 0x41, 0x5f, 0x54, 0x42, 0x4c,
+0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x31, 0x01, 0x01, 0x00, 0x00, 0x00,
+0x40, 0x78, 0x7d, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x62, 0x02, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x2d, 0x31, 0x01, 0x65, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x40, 0x78, 0x7d, 0x01,
+0x7f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x5a, 0x62, 0x02, 0xcc, 0x00, 0x00, 0x00,
+0x01, 0x00, 0x00, 0x00, 0xe0, 0xcd, 0x24, 0x00, 0xea, 0x19, 0x2d, 0x01, 0x00, 0x00, 0x08, 0x00,
+0x62, 0x1a, 0xf1, 0x00, 0x33, 0x33, 0x03, 0x00, 0xea, 0x19, 0x96, 0x00, 0x00, 0x00, 0x0c, 0x00,
+0x02, 0x00, 0x00, 0x00, 0x68, 0xe1, 0x24, 0x00, 0xf8, 0x19, 0x2e, 0x01, 0x00, 0x00, 0x02, 0x00,
+0x70, 0x1a, 0xf1, 0x00, 0x33, 0x33, 0x0b, 0x00, 0xf8, 0x19, 0x97, 0x00, 0x00, 0x00, 0x01, 0x00,
+0x03, 0x00, 0x00, 0x00, 0xf0, 0xf4, 0x24, 0x00, 0x06, 0x1a, 0x2e, 0x01, 0x00, 0x00, 0x0c, 0x00,
+0x7e, 0x1a, 0xf2, 0x00, 0x33, 0x33, 0x03, 0x00, 0x06, 0x1a, 0x97, 0x00, 0x00, 0x00, 0x06, 0x00,
+0x04, 0x00, 0x00, 0x00, 0x78, 0x08, 0x25, 0x00, 0x14, 0x1a, 0x2f, 0x01, 0x00, 0x00, 0x06, 0x00,
+0x8c, 0x1a, 0xf2, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x14, 0x1a, 0x97, 0x00, 0x00, 0x00, 0x0b, 0x00,
+0x05, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x25, 0x00, 0x20, 0x1a, 0x30, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x9a, 0x1a, 0xf3, 0x00, 0x33, 0x33, 0x03, 0x00, 0x20, 0x1a, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x06, 0x00, 0x00, 0x00, 0x88, 0x2f, 0x25, 0x00, 0x2e, 0x1a, 0x30, 0x01, 0x00, 0x00, 0x0a, 0x00,
+0xa8, 0x1a, 0xf3, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x2e, 0x1a, 0x98, 0x00, 0x00, 0x00, 0x05, 0x00,
+0x07, 0x00, 0x00, 0x00, 0x10, 0x43, 0x25, 0x00, 0x3c, 0x1a, 0x31, 0x01, 0x00, 0x00, 0x04, 0x00,
+0xb6, 0x1a, 0xf4, 0x00, 0x33, 0x33, 0x03, 0x00, 0x3c, 0x1a, 0x98, 0x00, 0x00, 0x00, 0x0a, 0x00,
+0x08, 0x00, 0x00, 0x00, 0x98, 0x56, 0x25, 0x00, 0x4a, 0x1a, 0x31, 0x01, 0x00, 0x00, 0x0e, 0x00,
+0xc4, 0x1a, 0xf4, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x4a, 0x1a, 0x98, 0x00, 0x00, 0x00, 0x0f, 0x00,
+0x09, 0x00, 0x00, 0x00, 0x20, 0x6a, 0x25, 0x00, 0x58, 0x1a, 0x32, 0x01, 0x00, 0x00, 0x08, 0x00,
+0xd2, 0x1a, 0xf5, 0x00, 0x33, 0x33, 0x03, 0x00, 0x58, 0x1a, 0x99, 0x00, 0x00, 0x00, 0x04, 0x00,
+0x0a, 0x00, 0x00, 0x00, 0xa8, 0x7d, 0x25, 0x00, 0x66, 0x1a, 0x33, 0x01, 0x00, 0x00, 0x02, 0x00,
+0xe0, 0x1a, 0xf5, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x66, 0x1a, 0x99, 0x00, 0x00, 0x00, 0x09, 0x00,
+0x0b, 0x00, 0x00, 0x00, 0x30, 0x91, 0x25, 0x00, 0x74, 0x1a, 0x33, 0x01, 0x00, 0x00, 0x0c, 0x00,
+0xee, 0x1a, 0xf6, 0x00, 0x33, 0x33, 0x03, 0x00, 0x74, 0x1a, 0x99, 0x00, 0x00, 0x00, 0x0e, 0x00,
+0x0c, 0x00, 0x00, 0x00, 0xb8, 0xa4, 0x25, 0x00, 0x82, 0x1a, 0x34, 0x01, 0x00, 0x00, 0x06, 0x00,
+0xfc, 0x1a, 0xf6, 0x00, 0x33, 0x33, 0x0b, 0x00, 0x82, 0x1a, 0x9a, 0x00, 0x00, 0x00, 0x03, 0x00,
+0x0d, 0x00, 0x00, 0x00, 0x40, 0xb8, 0x25, 0x00, 0x8e, 0x1a, 0x35, 0x01, 0x00, 0x00, 0x00, 0x00,
+0x0a, 0x1b, 0xf7, 0x00, 0x33, 0x33, 0x03, 0x00, 0x8e, 0x1a, 0x9a, 0x00, 0x00, 0x00, 0x08, 0x00,
+0x0e, 0x00, 0x00, 0x00, 0x20, 0xe7, 0x25, 0x00, 0xb0, 0x1a, 0x36, 0x01, 0x00, 0x00, 0x08, 0x00,
+0x2c, 0x1b, 0xf8, 0x00, 0x66, 0x66, 0x06, 0x00, 0xb0, 0x1a, 0x9b, 0x00, 0x00, 0x00, 0x04, 0x00,
+0x0f, 0x00, 0x00, 0x00, 0xc8, 0x98, 0x66, 0x01, 0x40, 0x19, 0x25, 0x01, 0x9a, 0x19, 0x0c, 0x00,
+0xb6, 0x19, 0xeb, 0x00, 0x7b, 0x14, 0x00, 0x00, 0x40, 0x19, 0x92, 0x00, 0xcd, 0x0c, 0x0e, 0x00,
+0x20, 0x00, 0x00, 0x00, 0x8c, 0x09, 0x80, 0x00, 0x8c, 0x09, 0x80, 0x00, 0x8c, 0x09, 0x80, 0x00,
+0x1c, 0x00, 0x00, 0x00, 0x66, 0xa4, 0x81, 0xee, 0x66, 0xa4, 0x81, 0xee, 0x66, 0xa4, 0x81, 0xee,
+0xb0, 0x00, 0x00, 0x00, 0xc4, 0xa3, 0x01, 0x04, 0x66, 0xab, 0x01, 0x04, 0xc9, 0xa3, 0x01, 0x04,
+0xb4, 0x00, 0x00, 0x00, 0x10, 0xc0, 0xf0, 0x3f, 0x10, 0xc0, 0xf0, 0x3f, 0x10, 0xc0, 0xf0, 0x3f,
+0xbc, 0x00, 0x00, 0x00, 0xc3, 0xb6, 0x44, 0x44, 0xc3, 0xb6, 0x55, 0x55, 0xc3, 0xb6, 0x66, 0x66,
+0x00, 0x06, 0x00, 0x00, 0xb3, 0x6f, 0x62, 0xc1, 0xc3, 0x6f, 0x62, 0xc1, 0xf3, 0x6f, 0x62, 0xc1,
+0x0c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x14, 0x13, 0x33, 0x33, 0x43, 0x0f, 0x00, 0x00, 0x8a, 0x09,
+0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56, 0xe8, 0x00, 0x00, 0x00, 0x81, 0x00, 0x61, 0x00,
+0xec, 0x00, 0x00, 0x00, 0x21, 0x00, 0x83, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x63, 0x00, 0x23, 0x00,
+0xf4, 0x00, 0x00, 0x00, 0x88, 0x00, 0x68, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x28, 0x00, 0x8f, 0x00,
+0xfc, 0x00, 0x00, 0x00, 0x6f, 0x00, 0xbd, 0x00, 0x00, 0x01, 0x00, 0x00, 0x9d, 0x00, 0x7d, 0x00,
+0x04, 0x01, 0x00, 0x00, 0x3d, 0x00, 0x1d, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xbf,
+0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80,
+0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0xdc, 0x00, 0x00, 0x00, 0x11, 0x1d, 0x1e, 0x35, 0xe0, 0x00, 0x00, 0x00, 0x1c, 0x35, 0x17, 0x19,
+0xe8, 0x00, 0x00, 0x00, 0xe1, 0x00, 0xa1, 0x00, 0xec, 0x00, 0x00, 0x00, 0x81, 0x00, 0x61, 0x00,
+0xf0, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x83, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x63, 0x00, 0xa7, 0x00,
+0xf8, 0x00, 0x00, 0x00, 0x87, 0x00, 0x67, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xae, 0x00, 0x8e, 0x00,
+0x00, 0x01, 0x00, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0x04, 0x01, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00,
+0x00, 0x08, 0x00, 0x00, 0x66, 0x44, 0x66, 0x44, 0x04, 0x08, 0x00, 0x00, 0x66, 0x44, 0x66, 0x44,
+0x08, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44,
+0x10, 0x08, 0x00, 0x00, 0x44, 0x44, 0x44, 0x41, 0x14, 0x08, 0x00, 0x00, 0x44, 0x44, 0x44, 0x41,
+0x3c, 0x06, 0x00, 0x00, 0x32, 0x74, 0x32, 0x63, 0x40, 0x06, 0x00, 0x00, 0x22, 0x62, 0x32, 0x63,
+0x4c, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x50, 0x06, 0x00, 0x00, 0x0a, 0x0a, 0x0a, 0x01,
+0x58, 0x06, 0x00, 0x00, 0x19, 0x14, 0x14, 0x05, 0x5c, 0x06, 0x00, 0x00, 0x0a, 0x07, 0x07, 0x01,
+0x64, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x68, 0x06, 0x00, 0x00, 0x19, 0x14, 0x14, 0x05,
+0x00, 0x08, 0x00, 0x00, 0x66, 0x44, 0x66, 0x44, 0x04, 0x08, 0x00, 0x00, 0x66, 0x44, 0x66, 0x44,
+0x08, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x44, 0x00, 0x44,
+0x10, 0x08, 0x00, 0x00, 0x44, 0x44, 0x44, 0x41, 0x14, 0x08, 0x00, 0x00, 0x44, 0x44, 0x44, 0x41,
+0x3c, 0x06, 0x00, 0x00, 0x32, 0x74, 0x32, 0x63, 0x40, 0x06, 0x00, 0x00, 0x22, 0x62, 0x32, 0x63,
+0x4c, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x50, 0x06, 0x00, 0x00, 0x0a, 0x0a, 0x0a, 0x01,
+0x58, 0x06, 0x00, 0x00, 0x19, 0x14, 0x14, 0x05, 0x5c, 0x06, 0x00, 0x00, 0x0a, 0x07, 0x07, 0x01,
+0x64, 0x06, 0x00, 0x00, 0x19, 0x19, 0x19, 0x05, 0x68, 0x06, 0x00, 0x00, 0x19, 0x14, 0x14, 0x05,
+0xfe, 0x77, 0x0d, 0x80, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80, 0x80, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x80, 0x80, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80, 0x80, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x80, 0x90, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80, 0x90, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x80, 0x90, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80, 0x90, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x80, 0xa0, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80, 0xa0, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x80, 0xa0, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80, 0xa0, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x80, 0xb0, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x80, 0xb0, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x80, 0xb0, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x80, 0xb0, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x90, 0x80, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90, 0x80, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x90, 0x80, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90, 0x80, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x90, 0x90, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90, 0x90, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x90, 0x90, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90, 0x90, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x90, 0xa0, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90, 0xa0, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x90, 0xa0, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90, 0xa0, 0x00, 0x00, 0x00,
+0xfe, 0x77, 0x0d, 0x90, 0xb0, 0x00, 0x00, 0x00, 0xfe, 0x77, 0x0f, 0x90, 0xb0, 0x00, 0x00, 0x00,
+0xfe, 0xb7, 0x0f, 0x90, 0xb0, 0x00, 0x00, 0x00, 0xfe, 0xf7, 0x0f, 0x90, 0xb0, 0x00, 0x00, 0x00,
+0x00, 0x08, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
+0x08, 0x08, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
+0x10, 0x08, 0x20, 0x60, 0xfe, 0xfb, 0xff, 0x3f, 0x14, 0x08, 0x20, 0x60, 0xfa, 0xf3, 0xdf, 0x3f,
+0x18, 0x08, 0x20, 0x60, 0xf5, 0xdf, 0x9f, 0x3f, 0x1c, 0x08, 0x20, 0x60, 0xf0, 0xcb, 0x4f, 0x3f,
+0x20, 0x08, 0x20, 0x60, 0xeb, 0xb3, 0xef, 0x3e, 0x24, 0x08, 0x20, 0x60, 0xe9, 0xa7, 0xaf, 0x3e,
+0x28, 0x08, 0x20, 0x60, 0xef, 0xb3, 0xaf, 0x3e, 0x2c, 0x08, 0x20, 0x60, 0xff, 0xe7, 0x3f, 0x3f,
+0x30, 0x08, 0x20, 0x60, 0x1c, 0x44, 0x80, 0x00, 0x34, 0x08, 0x20, 0x60, 0x46, 0xdc, 0x90, 0x02,
+0x38, 0x08, 0x20, 0x60, 0x7a, 0x9c, 0x61, 0x05, 0x3c, 0x08, 0x20, 0x60, 0xb3, 0x80, 0xd2, 0x08,
+0x40, 0x08, 0x20, 0x60, 0xec, 0x68, 0x73, 0x0c, 0x44, 0x08, 0x20, 0x60, 0x1d, 0x39, 0xe4, 0x0f,
+0x48, 0x08, 0x20, 0x60, 0x3f, 0xd9, 0xa4, 0x12, 0x4c, 0x08, 0x20, 0x60, 0x4e, 0x2d, 0x65, 0x14,
+0x00, 0x08, 0x20, 0x60, 0xfd, 0xf7, 0xdf, 0x3f, 0x04, 0x08, 0x20, 0x60, 0xfd, 0xf7, 0xdf, 0x3f,
+0x08, 0x08, 0x20, 0x60, 0xfd, 0xf7, 0xdf, 0x3f, 0x0c, 0x08, 0x20, 0x60, 0xfd, 0xf7, 0xdf, 0x3f,
+0x10, 0x08, 0x20, 0x60, 0xff, 0xfb, 0xef, 0x3f, 0x14, 0x08, 0x20, 0x60, 0x02, 0x04, 0xf0, 0x3f,
+0x18, 0x08, 0x20, 0x60, 0x07, 0x14, 0x30, 0x00, 0x1c, 0x08, 0x20, 0x60, 0x0f, 0x30, 0x90, 0x00,
+0x20, 0x08, 0x20, 0x60, 0x19, 0x54, 0x20, 0x01, 0x24, 0x08, 0x20, 0x60, 0x26, 0x88, 0xd0, 0x01,
+0x28, 0x08, 0x20, 0x60, 0x36, 0xc4, 0xb0, 0x02, 0x2c, 0x08, 0x20, 0x60, 0x49, 0x0c, 0xc1, 0x03,
+0x30, 0x08, 0x20, 0x60, 0x5d, 0x58, 0xf1, 0x04, 0x34, 0x08, 0x20, 0x60, 0x72, 0xac, 0x41, 0x06,
+0x38, 0x08, 0x20, 0x60, 0x86, 0x00, 0x92, 0x07, 0x3c, 0x08, 0x20, 0x60, 0x99, 0x4c, 0xd2, 0x08,
+0x40, 0x08, 0x20, 0x60, 0xaa, 0x94, 0xf2, 0x09, 0x44, 0x08, 0x20, 0x60, 0xb7, 0xcc, 0xe2, 0x0a,
+0x48, 0x08, 0x20, 0x60, 0xbf, 0xf4, 0xa2, 0x0b, 0x4c, 0x08, 0x20, 0x60, 0xc2, 0x08, 0x13, 0x0c,
+0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe4, 0x00, 0x00, 0xe4, 0x94, 0x00, 0x00, 0xe4, 0x90,
+0x00, 0x00, 0xe4, 0x91, 0x00, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0xe4,
+0x00, 0x00, 0xe4, 0x94, 0x00, 0x00, 0xe4, 0x90, 0x00, 0x00, 0xe4, 0x91, 0x01, 0x00, 0x00, 0x00,
+0x74, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x76, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
+0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x76,
+0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x01, 0x00, 0x00, 0x00,
+0x78, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xa8, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88,
+0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0xa8,
+0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x01, 0x00, 0x00, 0x00,
+0x7c, 0x00, 0x00, 0x00, 0x44, 0x44, 0x46, 0x41, 0x44, 0x44, 0x46, 0x11, 0x44, 0x44, 0x46, 0x11,
+0x44, 0x44, 0x46, 0x11, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x44, 0x44, 0x46, 0x41,
+0x44, 0x44, 0x46, 0x11, 0x44, 0x44, 0x46, 0x11, 0x44, 0x44, 0x46, 0x11, 0x01, 0x00, 0x00, 0x00,
+0x88, 0x00, 0x00, 0x00, 0x32, 0x52, 0x43, 0x63, 0x32, 0x52, 0x46, 0x34, 0x32, 0x52, 0x66, 0x34,
+0x32, 0x52, 0x64, 0x34, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x32, 0x52, 0x42, 0x52,
+0x32, 0x52, 0x45, 0x24, 0x32, 0x52, 0x55, 0x24, 0x32, 0x52, 0x54, 0x24, 0x01, 0x00, 0x00, 0x00,
+0x94, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x14, 0x05, 0x05, 0x0f, 0x0f, 0x14, 0x05, 0x05, 0x0f, 0x14,
+0x0f, 0x05, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x19, 0x0a,
+0x0a, 0x0f, 0x0f, 0x19, 0x0a, 0x0a, 0x0f, 0x19, 0x0f, 0x0a, 0x0f, 0x19, 0x01, 0x00, 0x00, 0x00,
+0x98, 0x00, 0x00, 0x00, 0x07, 0x04, 0x07, 0x01, 0x01, 0x04, 0x04, 0x07, 0x01, 0x01, 0x04, 0x07,
+0x04, 0x01, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x0a, 0x04, 0x0a, 0x03,
+0x03, 0x04, 0x04, 0x0a, 0x03, 0x03, 0x04, 0x0a, 0x04, 0x03, 0x04, 0x0a, 0x01, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa4, 0x08, 0xa4, 0x38, 0xa4, 0x28, 0xa4,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xa4, 0x32, 0xa4, 0x00, 0x00, 0x00, 0x00,
+0x39, 0x92, 0x29, 0x92, 0x19, 0x92, 0x09, 0x92, 0x79, 0x92, 0x69, 0x92, 0x59, 0x92, 0x49, 0x92,
+0x39, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x32, 0x47, 0x34,
-0x5f, 0x52, 0x65, 0x67, 0x49, 0x6e, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6c, 0x6d, 0x52,
-0x46, 0x5f, 0x41, 0x46, 0x45, 0x5f, 0x43, 0x61, 0x6c, 0x32, 0x47, 0x5f, 0x54, 0x78, 0x5f, 0x44,
-0x50, 0x44, 0x5f, 0x43, 0x61, 0x6c, 0x00, 0x00, 0xd0, 0x81, 0x80, 0x00, 0xd0, 0x81, 0x80, 0x00,
-0x00, 0xab, 0x84, 0x56, 0x00, 0x00, 0x80, 0x43, 0xd0, 0x81, 0x81, 0x00, 0xd0, 0x81, 0x81, 0x00,
-0x00, 0xab, 0x84, 0x56, 0x00, 0x00, 0x00, 0x40, 0xd0, 0x81, 0x83, 0x00, 0xd0, 0x81, 0x83, 0x00,
-0x00, 0xab, 0x84, 0x56, 0x00, 0x00, 0x80, 0x40, 0xd0, 0x81, 0x84, 0x00, 0xd0, 0x81, 0x84, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x80, 0x43, 0xd0, 0x81, 0x85, 0x00, 0xd0, 0x81, 0x85, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x00, 0x40, 0xd0, 0x81, 0x87, 0x00, 0xd0, 0x81, 0x87, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x80, 0x40, 0xf0, 0x80, 0x80, 0x00, 0xe0, 0x80, 0x80, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x80, 0x43, 0xf0, 0x80, 0x81, 0x00, 0xe0, 0x80, 0x81, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x00, 0x40, 0xf0, 0x80, 0x83, 0x00, 0xe0, 0x80, 0x83, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x80, 0x40, 0xf0, 0x80, 0x84, 0x00, 0xe0, 0x80, 0x84, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x00, 0x41, 0xf0, 0x80, 0x85, 0x00, 0xe0, 0x80, 0x85, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x00, 0x41, 0xf0, 0x80, 0x87, 0x00, 0xe0, 0x80, 0x87, 0x00,
-0x00, 0xa8, 0x84, 0x56, 0x00, 0x00, 0x00, 0x41, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x5f, 0x41, 0x46,
-0x45, 0x5f, 0x43, 0x61, 0x6c, 0x32, 0x47, 0x5f, 0x52, 0x53, 0x53, 0x49, 0x5f, 0x44, 0x43, 0x4f,
-0x43, 0x5f, 0x43, 0x61, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x60, 0x00, 0x00, 0x00, 0x04,
-0x0c, 0x02, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x20, 0x60, 0xc0, 0x41, 0x40, 0x82,
-0x04, 0x0d, 0x20, 0x60, 0x00, 0x08, 0x01, 0x21, 0x14, 0x42, 0x20, 0x60, 0x80, 0x05, 0x00, 0x00,
-0x24, 0x0d, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x40, 0x41, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x03, 0x20, 0x60, 0x48, 0x00, 0x01, 0x00, 0x00, 0x41, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x04, 0x07, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x06, 0x20, 0x60, 0xa3, 0x0d, 0x22, 0x00,
-0x80, 0x01, 0x20, 0x60, 0x80, 0x83, 0x82, 0x7a, 0x84, 0x01, 0x20, 0x60, 0x71, 0x6f, 0x7b, 0xa7,
-0x50, 0x01, 0x20, 0x60, 0x01, 0x00, 0x10, 0x02, 0x54, 0x01, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x08, 0x02, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x20, 0x60, 0x00, 0x80, 0x10, 0x00,
-0x08, 0x01, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x20, 0x60, 0xf9, 0x4f, 0x00, 0x09,
-0x14, 0x41, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x20, 0x60, 0xf9, 0x4f, 0x00, 0x09,
-0x10, 0x01, 0x20, 0x60, 0xf9, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x20, 0x60, 0x00, 0x00, 0xf0, 0x90,
-0x00, 0x00, 0x20, 0x60, 0x45, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x60, 0x45, 0x00, 0x00, 0x00,
-0x44, 0x01, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x20, 0x60, 0xc0, 0x41, 0x40, 0x82,
-0x04, 0x1d, 0x20, 0x60, 0x00, 0x08, 0x01, 0x21, 0x24, 0x1d, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x08, 0x12, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1a, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00,
-0x14, 0x52, 0x20, 0x60, 0x80, 0x05, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x27, 0x07, 0x30, 0x00,
-0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd0, 0x82, 0x00, 0x01,
-0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x02,
-0xc0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x8f, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xd8, 0x00, 0x00, 0x00, 0xd1, 0x7e, 0x11, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56,
-0xa0, 0x00, 0x00, 0x00, 0xfe, 0xf5, 0x06, 0x00, 0x48, 0x00, 0x00, 0x00, 0x27, 0x07, 0x30, 0x00,
-0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd0, 0x82, 0x00, 0x01,
-0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x02,
-0xc0, 0x00, 0x00, 0x00, 0x00, 0x20, 0x09, 0x8f, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xd8, 0x00, 0x00, 0x00, 0xd1, 0x7e, 0x11, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56,
-0xa0, 0x00, 0x00, 0x00, 0xfe, 0xf5, 0x06, 0x00, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x5f, 0x41, 0x46,
-0x45, 0x5f, 0x43, 0x61, 0x6c, 0x32, 0x47, 0x5f, 0x53, 0x58, 0x5f, 0x47, 0x5f, 0x43, 0x61, 0x6c,
-0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x43, 0x68, 0x5f, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x00,
-0x58, 0x4f, 0x00, 0x00, 0x3e, 0x0f, 0xe4, 0x5c, 0x3e, 0x2f, 0xfe, 0x70, 0x4c, 0x01, 0x00, 0x08,
-0x44, 0x10, 0x00, 0x00, 0x1c, 0x10, 0x00, 0x01, 0x4c, 0x01, 0x7f, 0xfe, 0x59, 0xe2, 0x00, 0x00,
-0x4a, 0x00, 0x78, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x6c, 0x55, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xd4, 0x56, 0x11, 0x00, 0x80, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x32, 0x47, 0x34, 0x5f, 0x52, 0x65, 0x67,
+0x49, 0x6e, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x5f, 0x41, 0x46,
+0x45, 0x5f, 0x43, 0x61, 0x6c, 0x32, 0x47, 0x5f, 0x54, 0x78, 0x5f, 0x44, 0x50, 0x44, 0x5f, 0x43,
+0x61, 0x6c, 0x00, 0x00, 0xd0, 0x81, 0x80, 0x00, 0xd0, 0x81, 0x80, 0x00, 0x00, 0xab, 0x84, 0x56,
+0x00, 0x00, 0x80, 0x43, 0xd0, 0x81, 0x81, 0x00, 0xd0, 0x81, 0x81, 0x00, 0x00, 0xab, 0x84, 0x56,
+0x00, 0x00, 0x00, 0x40, 0xd0, 0x81, 0x83, 0x00, 0xd0, 0x81, 0x83, 0x00, 0x00, 0xab, 0x84, 0x56,
+0x00, 0x00, 0x80, 0x40, 0xd0, 0x81, 0x84, 0x00, 0xd0, 0x81, 0x84, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x80, 0x43, 0xd0, 0x81, 0x85, 0x00, 0xd0, 0x81, 0x85, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x00, 0x40, 0xd0, 0x81, 0x87, 0x00, 0xd0, 0x81, 0x87, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x80, 0x40, 0xf0, 0x80, 0x80, 0x00, 0xe0, 0x80, 0x80, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x80, 0x43, 0xf0, 0x80, 0x81, 0x00, 0xe0, 0x80, 0x81, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x00, 0x40, 0xf0, 0x80, 0x83, 0x00, 0xe0, 0x80, 0x83, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x80, 0x40, 0xf0, 0x80, 0x84, 0x00, 0xe0, 0x80, 0x84, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x00, 0x41, 0xf0, 0x80, 0x85, 0x00, 0xe0, 0x80, 0x85, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x00, 0x41, 0xf0, 0x80, 0x87, 0x00, 0xe0, 0x80, 0x87, 0x00, 0x00, 0xa8, 0x84, 0x56,
+0x00, 0x00, 0x00, 0x41, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x5f, 0x41, 0x46, 0x45, 0x5f, 0x43, 0x61,
+0x6c, 0x32, 0x47, 0x5f, 0x52, 0x53, 0x53, 0x49, 0x5f, 0x44, 0x43, 0x4f, 0x43, 0x5f, 0x43, 0x61,
+0x6c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x20, 0x60, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x02, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x20, 0x60, 0xc0, 0x41, 0x40, 0x82, 0x04, 0x0d, 0x20, 0x60,
+0x00, 0x08, 0x01, 0x21, 0x14, 0x42, 0x20, 0x60, 0x80, 0x05, 0x00, 0x00, 0x24, 0x0d, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x08, 0x0a, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x40, 0x41, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0x60,
+0x48, 0x00, 0x01, 0x00, 0x00, 0x41, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0xcc, 0x06, 0x20, 0x60, 0xa3, 0x0d, 0x22, 0x00, 0x80, 0x01, 0x20, 0x60,
+0x80, 0x83, 0x82, 0x7a, 0x84, 0x01, 0x20, 0x60, 0x71, 0x6f, 0x7b, 0xa7, 0x50, 0x01, 0x20, 0x60,
+0x01, 0x00, 0x10, 0x02, 0x54, 0x01, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x40, 0x01, 0x20, 0x60, 0x00, 0x80, 0x10, 0x00, 0x08, 0x01, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x20, 0x60, 0xf9, 0x4f, 0x00, 0x09, 0x14, 0x41, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x20, 0x60, 0xf9, 0x4f, 0x00, 0x09, 0x10, 0x01, 0x20, 0x60,
+0xf9, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x20, 0x60, 0x00, 0x00, 0xf0, 0x90, 0x00, 0x00, 0x20, 0x60,
+0x45, 0x00, 0x00, 0x00, 0x04, 0x00, 0x20, 0x60, 0x45, 0x00, 0x00, 0x00, 0x44, 0x01, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x20, 0x60, 0xc0, 0x41, 0x40, 0x82, 0x04, 0x1d, 0x20, 0x60,
+0x00, 0x08, 0x01, 0x21, 0x24, 0x1d, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x08, 0x12, 0x20, 0x60,
+0x00, 0x00, 0x00, 0x00, 0x08, 0x1a, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x14, 0x52, 0x20, 0x60,
+0x80, 0x05, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x27, 0x07, 0x30, 0x00, 0x6c, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd0, 0x82, 0x00, 0x01, 0x70, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00,
+0x00, 0x20, 0x09, 0x8f, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00,
+0xd1, 0x7e, 0x11, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56, 0xa0, 0x00, 0x00, 0x00,
+0xfe, 0xf5, 0x06, 0x00, 0x48, 0x00, 0x00, 0x00, 0x27, 0x07, 0x30, 0x00, 0x6c, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd0, 0x82, 0x00, 0x01, 0x70, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x02, 0xc0, 0x00, 0x00, 0x00,
+0x00, 0x20, 0x09, 0x8f, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00,
+0xd1, 0x7e, 0x11, 0x19, 0x14, 0x00, 0x00, 0x00, 0x00, 0xab, 0x84, 0x56, 0xa0, 0x00, 0x00, 0x00,
+0xfe, 0xf5, 0x06, 0x00, 0x72, 0x6c, 0x6d, 0x52, 0x46, 0x5f, 0x41, 0x46, 0x45, 0x5f, 0x43, 0x61,
+0x6c, 0x32, 0x47, 0x5f, 0x53, 0x58, 0x5f, 0x47, 0x5f, 0x43, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72,
+0x5f, 0x43, 0x68, 0x5f, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x00, 0x00, 0x58, 0x4f, 0x00, 0x00,
+0x3e, 0x0f, 0xe1, 0xfc, 0x3e, 0x2f, 0xfc, 0x10, 0x4c, 0x01, 0x00, 0x08, 0x44, 0x10, 0x00, 0x00,
+0x1c, 0x10, 0x00, 0x01, 0x4c, 0x01, 0x7f, 0xfe, 0x59, 0xe2, 0x00, 0x00, 0x4a, 0x00, 0x78, 0x20,
+0x0c, 0x53, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0x74, 0x54, 0x11, 0x00, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x14, 0x40, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00,
0x00, 0x04, 0x80, 0x00, 0x14, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00,
-0x00, 0x41, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x41, 0x10, 0x00,
-0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x80, 0x65, 0x11, 0x00,
-0x01, 0x00, 0x00, 0x00, 0x14, 0x66, 0x11, 0x00, 0x68, 0x67, 0x11, 0x00, 0x02, 0x02, 0x00, 0x00,
+0x0c, 0x41, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x0c, 0x41, 0x10, 0x00,
+0x02, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0c, 0x41, 0x10, 0x00, 0x20, 0x63, 0x11, 0x00,
+0x01, 0x00, 0x00, 0x00, 0xb4, 0x63, 0x11, 0x00, 0x08, 0x65, 0x11, 0x00, 0x02, 0x02, 0x00, 0x00,
0x36, 0x0c, 0x00, 0x00, 0x81, 0x94, 0x40, 0xb0, 0x40, 0xc9, 0x00, 0x00, 0x00, 0x00, 0x40, 0xc9,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0e, 0x02, 0x00, 0x0d, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -5407,34 +5369,34 @@ UCHAR MT7603_e2_FirmwareImage[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
-0xc0, 0x97, 0x10, 0x00, 0x01, 0x00, 0x00, 0x32, 0x39, 0x00, 0x00, 0x00, 0x70, 0x91, 0x10, 0x00,
-0xff, 0x00, 0x00, 0x09, 0x10, 0x00, 0x00, 0x00, 0x68, 0x93, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xa0, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xa0, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
-0x00, 0x00, 0x00, 0x00, 0xf4, 0x95, 0x10, 0x00, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
-0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x8e, 0x00, 0x00,
-0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xac, 0x00, 0xaa, 0xaa, 0x03, 0x00,
-0x00, 0x00, 0x00, 0x00, 0x88, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x12, 0xfc, 0x1e, 0xf0, 0x2a, 0xe4,
-0x01, 0x06, 0x12, 0xfc, 0x1e, 0xf0, 0x2a, 0xe4, 0x06, 0x06, 0x00, 0x00, 0x00, 0xff, 0x01, 0xff,
-0x02, 0xff, 0x03, 0xff, 0x04, 0x00, 0x01, 0x00, 0x01, 0x01, 0x02, 0x01, 0x04, 0x00, 0x04, 0x01,
-0x01, 0x01, 0x02, 0x01, 0x01, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x01, 0xff, 0xff, 0xff, 0xff,
-0xff, 0xff, 0xff, 0xff, 0x00, 0x12, 0x1f, 0x2b, 0x00, 0xfb, 0xef, 0xe3, 0x05, 0x07, 0x08, 0x0a,
-0x0d, 0x10, 0x14, 0x1a, 0x20, 0x28, 0x33, 0x3e, 0x50, 0x66, 0x7c, 0xa0, 0xcc, 0xf8, 0x00, 0x00,
-0x07, 0x00, 0x01, 0x01, 0xd0, 0x34, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xe8, 0x30, 0x11, 0x00,
-0x01, 0x01, 0x00, 0x00, 0x6c, 0x2b, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xf8, 0x2c, 0x11, 0x00,
-0x01, 0x01, 0x00, 0x00, 0x38, 0x26, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xe4, 0x22, 0x11, 0x00,
-0x01, 0x01, 0x00, 0x00, 0x28, 0x1e, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0x7c, 0x18, 0x11, 0x00,
-0x01, 0x01, 0x00, 0x00, 0x4c, 0x07, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x14, 0x18,
-0x91, 0x7f, 0x4b, 0x38, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x5f, 0x6d, 0x74, 0x37, 0x36,
-0x30, 0x33, 0x6d, 0x70, 0x00, 0x32, 0x30, 0x31, 0x35, 0x31, 0x30, 0x32, 0x30, 0x31, 0x35, 0x35,
-0x39, 0x30, 0x32, 0x00, 0x80, 0x53, 0x01, 0x00, } ;
+0x4c, 0x98, 0x10, 0x00, 0x01, 0x00, 0x00, 0x32, 0x39, 0x00, 0x00, 0x00, 0xfc, 0x91, 0x10, 0x00,
+0xff, 0x00, 0x00, 0x09, 0x10, 0x00, 0x00, 0x00, 0xf4, 0x93, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x2c, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x2c, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,
+0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x10, 0x00, 0x0a, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x03, 0x00,
+0x00, 0x00, 0x00, 0x00, 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
+0x88, 0x8e, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0xac, 0x00,
+0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x12, 0xfc,
+0x1e, 0xf0, 0x2a, 0xe4, 0x01, 0x06, 0x12, 0xfc, 0x1e, 0xf0, 0x2a, 0xe4, 0x06, 0x06, 0x00, 0x00,
+0x00, 0xff, 0x01, 0xff, 0x02, 0xff, 0x03, 0xff, 0x04, 0x00, 0x01, 0x00, 0x01, 0x01, 0x02, 0x01,
+0x04, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x01,
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x12, 0x1f, 0x2b, 0x00, 0xfb, 0xef, 0xe3,
+0x05, 0x07, 0x08, 0x0a, 0x0d, 0x10, 0x14, 0x1a, 0x20, 0x28, 0x33, 0x3e, 0x50, 0x66, 0x7c, 0xa0,
+0xcc, 0xf8, 0x00, 0x00, 0x07, 0x00, 0x01, 0x01, 0x7c, 0x32, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00,
+0x40, 0x2f, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xd4, 0x29, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00,
+0x60, 0x2b, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xa0, 0x24, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00,
+0x4c, 0x21, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0x9c, 0x1c, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00,
+0xf0, 0x16, 0x11, 0x00, 0x01, 0x01, 0x00, 0x00, 0xf8, 0x06, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00,
+0x01, 0x08, 0x14, 0x18, 0x35, 0x5b, 0x17, 0xa2, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x5f,
+0x6d, 0x74, 0x37, 0x36, 0x30, 0x33, 0x6d, 0x70, 0x00, 0x32, 0x30, 0x31, 0x37, 0x30, 0x32, 0x31,
+0x30, 0x31, 0x38, 0x31, 0x32, 0x34, 0x37, 0x00, 0x24, 0x51, 0x01, 0x00, } ;
diff --git a/include/mlme.h b/include/mlme.h
index 6f221af..80e44d1 100755
--- a/include/mlme.h
+++ b/include/mlme.h
@@ -523,7 +523,7 @@ typedef struct GNU_PACKED _NEW_EXT_CHAN_IE{
typedef struct GNU_PACKED _FRAME_802_11 {
HEADER_802_11 Hdr;
- UCHAR Octet[1];
+ UCHAR Octet[];
} FRAME_802_11, *PFRAME_802_11;
/* QoSNull embedding of management action. When HT Control MA field set to 1. */
@@ -1364,7 +1364,7 @@ typedef struct _MLME_DLS_REQ_STRUCT {
typedef struct GNU_PACKED _EID_STRUCT{
UCHAR Eid;
UCHAR Len;
- UCHAR Octet[1];
+ UCHAR Octet[];
} EID_STRUCT,*PEID_STRUCT, BEACON_EID_STRUCT, *PBEACON_EID_STRUCT;
diff --git a/include/oid.h b/include/oid.h
index 6d0cddf..d650246 100755
--- a/include/oid.h
+++ b/include/oid.h
@@ -664,7 +664,7 @@ typedef struct _NDIS_APCLI_802_11_KEY
UINT KeyLength;
NDIS_802_11_MAC_ADDRESS BSSID;
NDIS_802_11_KEY_RSC KeyRSC;
- UCHAR KeyMaterial[1];
+ UCHAR KeyMaterial[];
} NDIS_APCLI_802_11_KEY, *PNDIS_APCLI_802_11_KEY;
#endif/* WPA_SUPPLICANT_SUPPORT */
#endif /* APCLI_SUPPORT */
@@ -677,7 +677,7 @@ typedef struct _NDIS_802_11_KEY {
UINT KeyLength; /* length of key in bytes */
NDIS_802_11_MAC_ADDRESS BSSID;
NDIS_802_11_KEY_RSC KeyRSC;
- UCHAR KeyMaterial[1]; /* variable length depending on above field */
+ UCHAR KeyMaterial[]; /* variable length depending on above field */
} NDIS_802_11_KEY, *PNDIS_802_11_KEY;
typedef struct _NDIS_802_11_PASSPHRASE {
@@ -770,16 +770,7 @@ typedef struct GNU_PACKED _NDIS_WLAN_BSSID_EX {
NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
NDIS_802_11_RATES_EX SupportedRates;
ULONG IELength;
- UCHAR IEs[1];
-
-#ifdef WAC_SUPPORT
- /* SAMSUNG DMC */
- CHAR Threshold_Offset1;
- CHAR Threshold_Offset2;
- UCHAR Antenna_Type;
- UCHAR Device_Type;
- UCHAR Application_List;
-#endif /* WAC_SUPPORT */
+ UCHAR IEs[];
} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
typedef struct GNU_PACKED _NDIS_802_11_BSSID_LIST_EX {
@@ -920,7 +911,7 @@ typedef struct _NDIS_APCLI_802_11_PMKID
{
UINT Length;
UINT BSSIDInfoCount;
- BSSID_INFO BSSIDInfo[1];
+ BSSID_INFO BSSIDInfo[];
} NDIS_APCLI_802_11_PMKID, *PNDIS_APCLI_802_11_PMKID;
#endif/*WPA_SUPPLICANT_SUPPORT*/
#endif /* APCLI_SUPPORT */
diff --git a/include/os/rt_drv.h b/include/os/rt_drv.h
index 0ea68a4..c4b82a3 100755
--- a/include/os/rt_drv.h
+++ b/include/os/rt_drv.h
@@ -89,7 +89,7 @@ typedef VOID pregs;
#define CARD_INFO_PATH "/etc/Wireless/RT2870AP/RT2870APCard.dat"
#endif /* MULTIPLE_CARD_SUPPORT */
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat "
+#define STA_PROFILE_PATH "/etc/Wireless/RT2870STA/MT7603USTA.dat"
#endif /* RTMP_MAC_USB */
@@ -106,7 +106,7 @@ typedef VOID pregs;
#ifdef CONFIG_STA_SUPPORT
#ifdef RTMP_MAC_PCI
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/etc/Wireless/RT2860STA/RT2860STA.dat"
#define STA_DRIVER_VERSION "3.0.0.0"
#ifdef MULTIPLE_CARD_SUPPORT
#define CARD_INFO_PATH "/etc/Wireless/RT2860STA/RT2860STACard.dat"
@@ -116,9 +116,9 @@ typedef VOID pregs;
#ifdef RTMP_MAC_USB
#ifdef HE_BD_CFG80211_SUPPORT
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/etc/Wireless/RT2870STA/RT2870STA_MT7603U.dat"
#else
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/etc/Wireless/RT2870STA/RT2870STA.dat"
#endif /* HE_BD_CFG80211_SUPPORT */
#define STA_DRIVER_VERSION "3.0.0.0"
diff --git a/include/os/rt_linux.h b/include/os/rt_linux.h
index 9ddc4ea..321c782 100755
--- a/include/os/rt_linux.h
+++ b/include/os/rt_linux.h
@@ -192,16 +192,12 @@ typedef struct usb_ctrlrequest devctrlrequest;
#define RT2880_AP_DRIVER_VERSION "1.0.0.0"
#endif /* RTMP_RBUS_SUPPORT */
-#ifdef SINGLE_SKU_V2
-#define SINGLE_SKU_TABLE_FILE_NAME "/etc/Wireless/RT2860AP/SingleSKU.dat"
-#endif /* SINGLE_SKU_V2 */
-
#endif /* CONFIG_AP_SUPPORT */
#ifdef CONFIG_STA_SUPPORT
#ifdef RTMP_MAC_PCI
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/vendor/etc/wifi/RT2870STA_7603.dat"
#define STA_DRIVER_VERSION "3.0.0.0"
#ifdef MULTIPLE_CARD_SUPPORT
#define CARD_INFO_PATH "/etc/Wireless/RT2860STA/RT2860STACard.dat"
@@ -210,15 +206,15 @@ typedef struct usb_ctrlrequest devctrlrequest;
#ifdef RTMP_MAC_USB
#ifdef HE_BD_CFG80211_SUPPORT
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/vendor/etc/wifi/RT2870STA_7603.dat"
#else
#ifdef USE_CHIP_DEPENDENT_PROFILE_NAME
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/vendor/etc/wifi/RT2870STA_7603.dat"
#else
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/vendor/etc/wifi/RT2870STA_7603.dat"
#endif /* USE_CHIP_DEPENDENT_PROFILE_NAME */
#endif /* HE_BD_CFG80211_SUPPORT */
-#define STA_DRIVER_VERSION "JEDI.L0.MP1.mt7603u.v1.8"
+#define STA_DRIVER_VERSION "JEDI.L0.MP1.mt7603u.v1.14"
#ifdef MULTIPLE_CARD_SUPPORT
#define CARD_INFO_PATH "/etc/Wireless/RT2870STA/RT2870STACard.dat"
#endif /* MULTIPLE_CARD_SUPPORT */
@@ -227,7 +223,7 @@ typedef struct usb_ctrlrequest devctrlrequest;
#ifdef RTMP_MAC_SDIO
-#define STA_PROFILE_PATH "/system/etc/wifi/RT2870STA_7603.dat"
+#define STA_PROFILE_PATH "/vendor/etc/wifi/RT2870STA_7603.dat"
#define STA_DRIVER_VERSION "3.0.0.0"
#ifdef MULTIPLE_CARD_SUPPORT
#define CARD_INFO_PATH "/etc/Wireless/RT2870STA/RT2870STACard.dat"
@@ -244,12 +240,12 @@ typedef struct usb_ctrlrequest devctrlrequest;
extern const struct iw_handler_def rt28xx_iw_handler_def;
+#endif /* CONFIG_STA_SUPPORT */
+
#ifdef SINGLE_SKU_V2
#define SINGLE_SKU_TABLE_FILE_NAME "/etc/Wireless/RT2870STA/SingleSKU.dat"
#endif /* SINGLE_SKU_V2 */
-#endif /* CONFIG_STA_SUPPORT */
-
#ifdef CONFIG_APSTA_MIXED_SUPPORT
extern const struct iw_handler_def rt28xx_ap_iw_handler_def;
#endif /* CONFIG_APSTA_MIXED_SUPPORT */
@@ -860,13 +856,13 @@ do{ \
#define DBGPRINT_ERR(Fmt) \
{ \
- printk("ERROR!!! "); \
- printk Fmt; \
+ DBGPRINT(RT_DEBUG_ERROR, ("ERROR!!! "));\
+ DBGPRINT(RT_DEBUG_ERROR, Fmt);\
}
#define DBGPRINT_S(Fmt) \
{ \
- printk Fmt; \
+ DBGPRINT(RT_DEBUG_OFF, Fmt); \
}
#else
#define DBGPRINT(Level, Fmt)
@@ -881,14 +877,14 @@ do{ \
{ \
if (!(x)) \
{ \
- printk(KERN_WARNING __FILE__ ":%d assert " #x "failed\n", __LINE__); \
+ DBGPRINT(RT_DEBUG_OFF, ("%s:%d assert " #x "failed\n", __FILE__, __LINE__));\
} \
}
#else
#define ASSERT(x)
#endif /* DBG */
-void hex_dump(char *str, unsigned char *pSrcBufVA, unsigned int SrcBufLen);
+void hex_dump(char *str, const unsigned char *pSrcBufVA, unsigned int SrcBufLen);
/*********************************************************************************************************
@@ -1792,6 +1788,7 @@ USBHST_STATUS RTUSBBulkOutBCNPacketComplete(URBCompleteStatus Status, purbb_t pU
#define RTUSB_URB_DMA_MAPPING(pUrb)
#endif
+
#define RTUSB_CONTROL_MSG(pUsb_Dev, uEndpointAddress, Request, RequestType, Value,Index, tmpBuf, TransferBufferLength, timeout, ret) \
do{ \
if ((RequestType == DEVICE_VENDOR_REQUEST_OUT) || (RequestType == DEVICE_CLASS_REQUEST_OUT)) \
@@ -1803,7 +1800,8 @@ USBHST_STATUS RTUSBBulkOutBCNPacketComplete(URBCompleteStatus Status, purbb_t pU
DBGPRINT(RT_DEBUG_ERROR, ("vendor request direction is failed\n")); \
ret = -1; \
} \
- }while(0)
+ }while(0)
+
#define rtusb_urb_context context
#define rtusb_urb_status status
diff --git a/include/phy/phy.h b/include/phy/phy.h
index ddc3720..b07bd28 100755
--- a/include/phy/phy.h
+++ b/include/phy/phy.h
@@ -201,7 +201,7 @@ typedef struct _RSSI_SAMPLE {
CHAR LastSnr[3];
CHAR AvgSnr[3];
SHORT AvgSnrX8[3];
- //CHAR LastNoiseLevel[3];
+ CHAR LastNoiseLevel[3];
} RSSI_SAMPLE;
#endif
diff --git a/include/rt_os_net.h b/include/rt_os_net.h
index 3cd57f1..fb58ab7 100755
--- a/include/rt_os_net.h
+++ b/include/rt_os_net.h
@@ -308,7 +308,10 @@ VOID RTMP_CFG80211_DummyP2pIf_Init(
VOID RTMP_CFG80211_DummyP2pIf_Remove(
IN VOID *pAdSrc);
-
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
+extern const struct ieee80211_iface_combination *p_ra_iface_combinations_ap_sta;
+extern const INT ra_iface_combinations_ap_sta_num;
+#endif
BOOLEAN RTMP_CFG80211_VIF_ON(
IN VOID *pAdSrc);
@@ -347,7 +350,8 @@ VOID RTMP_CFG80211_VirtualIF_Init(
VOID RTMP_CFG80211_VirtualIF_Remove(
IN VOID *pAd,
IN PNET_DEV dev_p,
- IN UINT32 DevType);
+ IN UINT32 DevType,
+ BOOLEAN rtnl_lock);
VOID RTMP_CFG80211_AllVirtualIF_Remove(
IN VOID *pAdSrc);
@@ -429,7 +433,7 @@ INT rt_android_private_command_entry(
#define RTMP_DRIVER_ADAPTER_RT28XX_WOW_DISABLE(__pAd) \
RTMP_COM_IoctlHandle(__pAd, NULL, CMD_RTPRIV_IOCTL_ADAPTER_RT28XX_WOW_DISABLE, 0, NULL, 0)
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
#endif /* CONFIG_PM */
@@ -626,8 +630,11 @@ INT rt_android_private_command_entry(
RTMP_COM_IoctlHandle(__pAd, NULL, CMD_RTPRIV_IOCTL_80211_CHANNEL_LOCK, 0, NULL , __Chan)
#define RTMP_DRIVER_80211_MGMT_FRAME_REG(__pAd, __devPtr, __Reg) \
- RTMP_COM_IoctlHandle(__pAd, NULL, CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_REG, 0, __devPtr, __Reg)
-
+ RTMP_COM_IoctlHandle(__pAd, NULL, CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_REG, 0, __devPtr, __Reg)
+
+#define RTMP_DRIVER_80211_TX_NETDEV_SET(__pAd, __netdev) \
+ RTMP_COM_IoctlHandle(__pAd, NULL, CMD_RTPRIV_IOCTL_80211_TX_NETDEV_SET, 0, __netdev, 0)
+
#define RTMP_DRIVER_80211_MGMT_FRAME_SEND(__pAd, __pFrame, __Len) \
RTMP_COM_IoctlHandle(__pAd, NULL, CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_SEND, 0, __pFrame, __Len)
diff --git a/include/rt_os_util.h b/include/rt_os_util.h
index 18fb8f8..60ea6d2 100755
--- a/include/rt_os_util.h
+++ b/include/rt_os_util.h
@@ -266,6 +266,7 @@ void RtmpOSNetDeviceRefPut(PNET_DEV pNetDev);
INT RtmpOSNetDevDestory(VOID *pReserved, PNET_DEV pNetDev);
void RtmpOSNetDevDetach(PNET_DEV pNetDev);
+void RtmpOSNetDevDetach_WithoutLock(PNET_DEV pNetDev);
int RtmpOSNetDevAttach(
IN UCHAR OpMode,
IN PNET_DEV pNetDev,
@@ -451,7 +452,7 @@ VOID RtmpOsAtomicDec(RTMP_OS_ATOMIC *pAtomic);
VOID RtmpOsAtomicInterlockedExchange(RTMP_OS_ATOMIC *pAtomicSrc, LONG Value);
/* OS Utility */
-void hex_dump(char *str, unsigned char *pSrcBufVA, unsigned int SrcBufLen);
+void hex_dump(char *str, const unsigned char *pSrcBufVA, unsigned int SrcBufLen);
typedef VOID (*RTMP_OS_SEND_WLAN_EVENT)(
IN VOID *pAdSrc,
@@ -865,7 +866,7 @@ VOID CFG80211OS_InformBSS(
IN UINT16 beacon_interval,
IN UCHAR *pBeacon,
IN UINT32 BeaconLen);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18 ,0))
+#if (KERNEL_VERSION(3, 15, 0) <= LINUX_VERSION_CODE)
VOID CFG80211OS_JoinIBSS(IN PNET_DEV pNetDev, IN const PUCHAR pBssid, IN struct ieee80211_channel *channel);
#else
VOID CFG80211OS_JoinIBSS(IN PNET_DEV pNetDev, IN const PUCHAR pBssid);
diff --git a/include/rtmp.h b/include/rtmp.h
index 50b17a0..7fb9bb8 100755
--- a/include/rtmp.h
+++ b/include/rtmp.h
@@ -885,6 +885,8 @@ typedef struct _COUNTER_RALINK {
UINT32 OneSecStart; /* for one sec count clear use */
UINT32 OneSecBeaconSentCnt;
UINT32 OneSecFalseCCACnt; /* CCA error count, for debug purpose, might move to global counter */
+ UINT32 OneSecCCKFalseCCACnt;
+ UINT32 OneSecOFDMFalseCCACnt;
UINT32 OneSecRxFcsErrCnt; /* CRC error */
UINT32 OneSecRxOkCnt; /* RX without error */
UINT32 OneSecTxFailCount;
@@ -4555,6 +4557,7 @@ typedef struct _APCLI_STRUCT {
UCHAR LastSsidLen; /* the actual ssid length in used */
CHAR LastSsid[MAX_LEN_OF_SSID]; /* NOT NULL-terminated */
UCHAR LastBssid[MAC_ADDR_LEN];
+ UINT16 LastDeauthReason;
#endif /* WPA_SUPPLICANT_SUPPORT */
@@ -5182,6 +5185,7 @@ typedef struct _WOW_CFG_STRUCT {
BOOLEAN bWoWRunning; /* WOW function is working */
UINT8 nWakeupInterface; /* PCI:0 USB:1 GPIO:2 */
UINT8 bGPIOHighLow; /* 0: low to high, 1: high to low */
+ UINT8 nKeepAlivePeriod; /* 0:NOT configured, 1~15:wow keep alive */
#ifdef RT_CFG80211_SUPPORT
UCHAR PTK[LEN_PTK]; /* Store the PTK for rekey */
UCHAR ReplayCounter[LEN_KEY_DESC_REPLAY]; /* Store the replay counter for rekey */
@@ -5261,7 +5265,7 @@ typedef struct _NEW_WOW_PARAM_STRUCT {
UINT32 Parameter;
UINT32 Value;
} NEW_WOW_PARAM_STRUCT, *PNEW_WOW_PARAM_STRUCT;
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
/*
Packet drop reason code
@@ -5676,6 +5680,7 @@ typedef struct _CFG80211_CONTROL
BOOLEAN IsNeedTxStatus;
BOOLEAN TxSAcked;
RTMP_OS_COMPLETION fw_event_done;
+ PNET_DEV TxNdev;
LIST_HEADER cfg80211TxPacketList;
/* P2P Releated*/
@@ -5871,6 +5876,31 @@ typedef struct _TX_CTRL_T {
} TX_CTRL_T, *P_TX_CTRL_T;
#endif
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+typedef struct _SMART_CARRIER_SENSE_CTRL{
+ BOOLEAN SCSEnable; /* 0:Disable, 1:Enable */
+ UINT8 SCSStatus; /* 0: Normal, 1:Low_gain */
+ CHAR SCSMinRssi;
+ UINT32 CR_AGC_0_default;
+ UINT32 CR_AGC_3_default;
+ UINT8 EDCCA_Status;
+ UINT32 PdCount;
+ UINT32 MdrdyCount;
+ UINT32 FalseCCA;
+ CHAR CurrSensitivity;
+ CHAR AdjustSensitivity;
+ UINT32 RtsCount;
+ UINT32 RtsRtyCount;
+ CHAR RSSIBoundary;
+ UINT8 SCSMinRssiTolerance;
+ UINT32 SCSTrafficThreshold;
+ UINT16 FalseCcaUpBond;
+ UINT16 FalseCcaLowBond;
+ CHAR FixedRssiBond;
+ BOOLEAN ForceMode; /*This mode only consider False CCA not care RTS PER.*/
+
+} SMART_CARRIER_SENSE_CTRL;
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
/*
The miniport adapter structure
*/
@@ -6314,8 +6344,9 @@ struct _RTMP_ADAPTER {
#endif /* RT6352 */
#ifdef THERMAL_PROTECT_SUPPORT
- BOOLEAN force_one_tx_stream;
- BOOLEAN fgThermalProtectToggle;
+ BOOLEAN switch_tx_stream; /* determine switch action */
+ BOOLEAN force_one_tx_stream; /* for rate adaptation */
+ BOOLEAN fgThermalProtectToggle;
INT32 last_thermal_pro_temp;
INT32 thermal_pro_high_criteria;
BOOLEAN thermal_pro_high_en;
@@ -6935,9 +6966,9 @@ MONITOR_STRUCT monitor_ctrl;
#if (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)
WOW_CFG_STRUCT WOW_Cfg; /* data structure for wake on wireless */
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
- TXWI_STRUC NullTxWI;
+ TMAC_TXD_L NullTxWI;
USHORT NullBufOffset[2];
#ifdef MULTI_MAC_ADDR_EXT_SUPPORT
@@ -7091,7 +7122,10 @@ MONITOR_STRUCT monitor_ctrl;
#ifdef USB_IOT_WORKAROUND2
BOOLEAN bUSBIOTReady;
#endif
-
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ SMART_CARRIER_SENSE_CTRL SCSCtrl;
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+ BOOLEAN bLink11b;
};
#if defined(RTMP_INTERNAL_TX_ALC) || defined(RTMP_TEMPERATURE_COMPENSATION)
@@ -8020,6 +8054,7 @@ INT hif_sys_exit(RTMP_ADAPTER *pAd);
VOID NICResetFromError(RTMP_ADAPTER *pAd);
+VOID NicUpdatFalseCCACounters(RTMP_ADAPTER *pAd);
VOID RTMPRingCleanUp(
@@ -9918,12 +9953,22 @@ BOOLEAN RTMPCheckVht(
VOID RTMPUpdateMlmeRate(
IN RTMP_ADAPTER *pAd);
+CHAR RTMPMaxNoise(
+ IN RTMP_ADAPTER * pAd,
+ IN CHAR Noise0,
+ IN CHAR Noise1,
+ IN CHAR Noise2);
+
CHAR RTMPMaxRssi(
IN RTMP_ADAPTER *pAd,
IN CHAR Rssi0,
IN CHAR Rssi1,
IN CHAR Rssi2);
-
+CHAR RTMPMinRssi(
+ IN RTMP_ADAPTER *pAd,
+ IN CHAR Rssi0,
+ IN CHAR Rssi1,
+ IN CHAR Rssi2);
CHAR RTMPAvgRssi(
IN RTMP_ADAPTER *pAd,
IN RSSI_SAMPLE *pRssi);
@@ -11858,8 +11903,8 @@ VOID Update_Rssi_Sample(
IN RTMP_ADAPTER *pAd,
IN RSSI_SAMPLE *pRssi,
IN struct rx_signal_info *signal,
- IN UCHAR phymode,
- IN UCHAR bw);
+ IN USHORT phymode,
+ IN USHORT bw);
PNDIS_PACKET GetPacketFromRxRing(
RTMP_ADAPTER *pAd,
@@ -12059,22 +12104,12 @@ INT Set_TSSIMaxRange_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
#endif /* defined(RT3352) || defined(RT5350) */
#endif /* RT305x */
-#ifdef NEW_WOW_SUPPORT
-VOID RT28xxAndesWOWEnable(RTMP_ADAPTER *pAd);
-VOID RT28xxAndesWOWDisable(RTMP_ADAPTER *pAd);
-#endif /* NEW_WOW_SUPPORT */
-
#ifdef MT_WOW_SUPPORT
VOID MT76xxAndesWOWEnable(RTMP_ADAPTER *pAd);
VOID MT76xxAndesWOWDisable(RTMP_ADAPTER *pAd);
VOID MT76xxAndesWOWInit(RTMP_ADAPTER *pAd);
#endif
-#if (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT)
-VOID RT28xxAsicWOWEnable(RTMP_ADAPTER *pAd);
-VOID RT28xxAsicWOWDisable(RTMP_ADAPTER *pAd);
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) */
-
/*////////////////////////////////////*/
@@ -12563,7 +12598,7 @@ VOID dump_tr_entry(RTMP_ADAPTER *pAd, INT tr_idx, RTMP_STRING *caller, INT line)
VOID mgmt_tb_set_mcast_entry(RTMP_ADAPTER *pAd, UCHAR wcid);
VOID set_entry_phy_cfg(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *pEntry);
VOID MacTableReset(RTMP_ADAPTER *pAd, INT startWcid);
-MAC_TABLE_ENTRY *MacTableLookup(RTMP_ADAPTER *pAd, UCHAR *pAddr);
+MAC_TABLE_ENTRY *MacTableLookup(RTMP_ADAPTER *pAd, const UCHAR *pAddr);
BOOLEAN MacTableDeleteEntry(RTMP_ADAPTER *pAd, USHORT wcid, UCHAR *pAddr);
MAC_TABLE_ENTRY *MacTableInsertEntry(
IN RTMP_ADAPTER *pAd,
@@ -12766,6 +12801,12 @@ BOOLEAN Monitor_Open(RTMP_ADAPTER *pAd, PNET_DEV dev_p);
BOOLEAN Monitor_Close(RTMP_ADAPTER *pAd, PNET_DEV dev_p);
#endif /* CONFIG_SNIFFER_SUPPORT */
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+INT SetSCSEnable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
+INT SetSCSDbgLogEnable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
+INT SetSCSCfg_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
+INT32 ShowSCSInfo(RTMP_ADAPTER *pAd, RTMP_STRING *Arg);
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
#endif /* __RTMP_H__ */
diff --git a/include/rtmp_chip.h b/include/rtmp_chip.h
index 5523173..439d55a 100755
--- a/include/rtmp_chip.h
+++ b/include/rtmp_chip.h
@@ -1564,7 +1564,7 @@ struct _RTMP_CHIP_OP {
VOID (*AsicWOWEnable)(struct _RTMP_ADAPTER *ad);
VOID (*AsicWOWDisable)(struct _RTMP_ADAPTER *ad);
VOID (*AsicWOWInit)(struct _RTMP_ADAPTER *ad);
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
void (*usb_cfg_read)(struct _RTMP_ADAPTER *ad, UINT32 *value);
void (*usb_cfg_write)(struct _RTMP_ADAPTER *ad, UINT32 value);
@@ -1908,7 +1908,7 @@ do { \
_pAd->chipOps.AsicWOWInit(_pAd); \
} while(0)
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
#define MCU_CTRL_INIT(_pAd) \
do { \
diff --git a/include/rtmp_cmd.h b/include/rtmp_cmd.h
index 3476d24..4f115e4 100755
--- a/include/rtmp_cmd.h
+++ b/include/rtmp_cmd.h
@@ -266,7 +266,7 @@ typedef enum _CMD_RTPRIV_IOCTL_COMMON {
CMD_RTPRIV_IOCTL_ADAPTER_RT28XX_WOW_STATUS,
CMD_RTPRIV_IOCTL_ADAPTER_RT28XX_WOW_ENABLE,
CMD_RTPRIV_IOCTL_ADAPTER_RT28XX_WOW_DISABLE,
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) */
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT) */
CMD_RTPRIV_IOCTL_AP_BSSID_GET,
#endif /* CONFIG_STA_SUPPORT */
@@ -381,6 +381,7 @@ typedef enum _CMD_RTPRIV_IOCTL_COMMON {
CMD_RTPRIV_IOCTL_80211_REMAIN_ON_CHAN_SET,
CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_REG,
CMD_RTPRIV_IOCTL_80211_CHANNEL_LOCK,
+ CMD_RTPRIV_IOCTL_80211_TX_NETDEV_SET,
CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_SEND,
CMD_RTPRIV_IOCTL_80211_CHANNEL_LIST_SET,
CMD_RTPRIV_IOCTL_80211_ACTION_FRAME_REG,
@@ -588,11 +589,11 @@ typedef struct __CMD_RTPRIV_IOCTL_80211_CONNECT {
UINT32 KeyLen;
UINT8 KeyIdx;
- UINT8 *pSsid;
+ const UINT8 *pSsid;
UINT32 SsidLen;
- UINT8 *pBssid;
-
+ const UINT8 *pBssid;
+
BOOLEAN bWpsConnection;
PNET_DEV pNetDev;
#ifdef DOT11W_PMF_SUPPORT
@@ -602,7 +603,7 @@ typedef struct __CMD_RTPRIV_IOCTL_80211_CONNECT {
typedef struct __CMD_RTPRIV_IOCTL_80211_ASSOC_IE {
PNET_DEV pNetDev;
- UINT8 *ie;
+ const UINT8 *ie;
UINT32 ie_len;
} CMD_RTPRIV_IOCTL_80211_ASSOC_IE;
@@ -988,7 +989,7 @@ typedef struct __RT_CMD_STA_IOCTL_PMA_SA {
#define RT_CMD_STA_IOCTL_PMA_SA_ADD 0x03
UINT32 Cmd;
UCHAR *pBssid;
- UCHAR *pPmkid;
+ const UCHAR *pPmkid;
} RT_CMD_STA_IOCTL_PMA_SA;
typedef struct __RT_CMD_USB_INIT {
diff --git a/include/rtmp_comm.h b/include/rtmp_comm.h
index 1f67dfe..04fcef2 100755
--- a/include/rtmp_comm.h
+++ b/include/rtmp_comm.h
@@ -338,7 +338,11 @@ typedef enum _RTMP_INF_TYPE_
#define RT_CONFIG_IF_OPMODE_ON_STA(__OpMode)
#endif
-
+#ifdef THERMAL_PROTECT_SUPPORT
+#define BOOL_IS_THERMAL_PROTECTION_SWITCH_TX(_pAd) (_pAd->switch_tx_stream)
+#else
+#define BOOL_IS_THERMAL_PROTECTION_SWITCH_TX(_pAd) FALSE
+#endif
/***********************************************************************************
* IOCTL related definitions and data structures.
diff --git a/include/rtmp_def.h b/include/rtmp_def.h
index 903f239..1890339 100755
--- a/include/rtmp_def.h
+++ b/include/rtmp_def.h
@@ -651,6 +651,7 @@ enum WIFI_MODE{
#define MAX_AVAILABLE_CLIENT_WCID(__pAd) (LAST_SPECIFIC_WCID(__pAd) - MAX_MBSSID_NUM(__pAd))
#else
#define LAST_SPECIFIC_WCID(__pAd) (HW_RESERVED_WCID(__pAd) - 2)
+
/* If MAX_MBSSID_NUM is 8, the maximum available wcid for the associated STA is 211. */
/* If MAX_MBSSID_NUM is 7, the maximum available wcid for the associated STA is 228. */
#define MAX_AVAILABLE_CLIENT_WCID(__pAd) (LAST_SPECIFIC_WCID(__pAd) - MAX_MBSSID_NUM(__pAd) - 1)
@@ -2014,7 +2015,7 @@ enum WIFI_MODE{
#define DEFAULT_RF_TX_POWER 5
#define DEFAULT_BBP_TX_FINE_POWER_CTRL 0
-#define MAX_INI_BUFFER_SIZE 4096
+#define MAX_INI_BUFFER_SIZE 10000 /*4096*/
#define MAX_PARAM_BUFFER_SIZE (2048) /* enough for ACL (18*64) */
/*18 : the length of Mac address acceptable format "01:02:03:04:05:06;") */
/*64 : MAX_NUM_OF_ACL_LIST */
@@ -2496,6 +2497,26 @@ enum {
#define I_PSM_DISABLE 0
#endif /* MT_PS */
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+enum {
+ SCS_DISABLE,
+ SCS_ENABLE,
+};
+
+enum {
+ SCS_STATUS_DEFAULT,
+ SCS_STATUS_MIDDLE,
+ SCS_STATUS_LOW,
+ SCS_STATUS_ULTRA_LOW,
+};
+
+enum {
+ Keep_Range,
+ Decrease_Range,
+ Increase_Range
+};
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+
#define ABS(_x, _y) ((_x) > (_y)) ? ((_x) -(_y)) : ((_y) -(_x))
#define A2Dec(_X, _p) \
diff --git a/include/sta_cfg.h b/include/sta_cfg.h
index 8ff4766..e41f91b 100755
--- a/include/sta_cfg.h
+++ b/include/sta_cfg.h
@@ -35,6 +35,9 @@ INT RTMPSTAPrivIoctlSet(
IN RTMP_STRING *SetProcName,
IN RTMP_STRING *ProcArg);
+INT Set_GPIOHigh_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
+INT Set_GPIOLow_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
+
#if (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)
/* set WOW enable */
INT Set_WOW_Enable(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
@@ -50,8 +53,9 @@ INT Set_WOW_InBand(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
INT Set_WOW_Interface(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
/* set wakeup GPIO High Low */
INT Set_WOW_GPIOHighLow(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
+INT Set_WOW_KeepAlive_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
-#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(NEW_WOW_SUPPORT) || defined(MT_WOW_SUPPORT)*/
+#endif /* (defined(WOW_SUPPORT) && defined(RTMP_MAC_USB)) || defined(MT_WOW_SUPPORT)*/
#ifdef RTMP_MAC_USB
INT Set_UsbSuspend(RTMP_ADAPTER *pAd, RTMP_STRING *arg);
diff --git a/include/wfa_p2p.h b/include/wfa_p2p.h
index 996b4cf..11bd4fc 100755
--- a/include/wfa_p2p.h
+++ b/include/wfa_p2p.h
@@ -61,7 +61,7 @@ typedef struct _P2P_ACTION_FRAME {
UCHAR OUIType;
UCHAR Subtype;
UCHAR Token;
- UCHAR Octet[1];
+ UCHAR Octet[];
} P2P_ACTION_FRAME, *PP2P_ACTION_FRAME;
typedef struct _FRAME_P2P_ACTION {
diff --git a/include/wpa.h b/include/wpa.h
index cb6581e..240eecd 100755
--- a/include/wpa.h
+++ b/include/wpa.h
@@ -34,21 +34,21 @@
(((ULONG)((__x)+((__y)-1))) & ((ULONG)~((__y)-1)))
#endif
-#define SET_UINT16_TO_ARRARY(_V, _LEN) \
-{ \
- _V[0] = ((UINT16)_LEN) >> 8; \
- _V[1] = ((UINT16)_LEN & 0xFF); \
+#define SET_UINT16_TO_ARRARY(_V, _LEN) \
+{\
+ _V[0] = (UINT8)(((UINT16)(_LEN)) >> 8); \
+ _V[1] = (UINT8)(((UINT16)(_LEN)) & 0xFF); \
}
-#define INC_UINT16_TO_ARRARY(_V, _LEN) \
-{ \
- UINT16 var_len; \
- \
- var_len = (_V[0]<<8) | (_V[1]); \
- var_len += _LEN; \
- \
- _V[0] = (var_len & 0xFF00) >> 8; \
- _V[1] = (var_len & 0xFF); \
+#define INC_UINT16_TO_ARRARY(_V, _LEN) \
+{ \
+ UINT16 var_len; \
+ \
+ var_len = (UINT16)(((_V[0])<<8) | (_V[1])); \
+ var_len += (UINT16)(_LEN); \
+ \
+ _V[0] = (UINT8)((var_len & 0xFF00) >> 8); \
+ _V[1] = (UINT8)(var_len & 0xFF); \
}
#define CONV_ARRARY_TO_UINT16(_V) ((_V[0]<<8) | (_V[1]))
diff --git a/mac/mt_mac.c b/mac/mt_mac.c
index 358d53f..a31e371 100755
--- a/mac/mt_mac.c
+++ b/mac/mt_mac.c
@@ -87,9 +87,9 @@ VOID dump_tmac_info(RTMP_ADAPTER *pAd, UCHAR *tmac_info)
DBGPRINT(RT_DEBUG_OFF, ("\t\tPortID=%d(%s)\n", txd_0->p_idx,
txd_0->p_idx < 2 ? p_idx_str[txd_0->p_idx] : "Invalid"));
if (txd_0->p_idx == P_IDX_LMAC)
- q_idx = txd_0->q_idx % 0xf;
+ q_idx = (UCHAR)(txd_0->q_idx % 0xf);
else
- q_idx = txd_0->q_idx % 0x5;
+ q_idx = (UCHAR)(txd_0->q_idx % 0x5);
DBGPRINT(RT_DEBUG_OFF, ("\t\tQueID=%d(%s %s)\n", txd_0->q_idx,
(txd_0->p_idx == P_IDX_LMAC ? "LMAC" : "MCU"),
txd_0->p_idx == P_IDX_LMAC ? q_idx_lmac_str[q_idx] : q_idx_mcu_str[q_idx]));
@@ -378,6 +378,48 @@ VOID NicGetTxRawCounters(
return;
}
+VOID NicUpdatFalseCCACounters(RTMP_ADAPTER *pAd)
+{
+ UINT32 OFDM_PD_Cnt, CCK_PD_Cnt, OFDM_MDRDY_Cnt, CCK_MDRDY_Cnt;
+ UINT32 PDCnt = 0;
+ UINT32 MDRDYCnt = 0;
+ UINT32 value, CCAcount = 0;
+
+ /* update one sec falseCCA (PD CNT - MDRDY CNT) */
+ RTMP_IO_READ32(pAd, RO_PHYCTRL_STS0, &PDCnt);
+ OFDM_PD_Cnt = (PDCnt >> 16);
+ CCK_PD_Cnt = (PDCnt & 0xFFFF);
+ RTMP_IO_READ32(pAd, RO_PHYCTRL_STS5, &MDRDYCnt);
+ OFDM_MDRDY_Cnt = (MDRDYCnt >> 16);
+ CCK_MDRDY_Cnt = (MDRDYCnt & 0xFFFF);
+ CCAcount = ((OFDM_PD_Cnt - OFDM_MDRDY_Cnt) + (CCK_PD_Cnt - CCK_MDRDY_Cnt));
+ RTMP_IO_READ32(pAd, CR_PHYCTRL_2, &value);
+ value |= (1<<6); /* BIT6: CR_STSCNT_RST */
+ RTMP_IO_WRITE32(pAd, CR_PHYCTRL_2, value);
+ value &= (~(1<<6));
+ RTMP_IO_WRITE32(pAd, CR_PHYCTRL_2, value);
+ value |= (1<<7); /* BIT7: CR_STSCNT_EN */
+ RTMP_IO_WRITE32(pAd, CR_PHYCTRL_2, value);
+
+ /*DBGPRINT(RT_DEBUG_WARN, ("one-sec FalseCCACnt %d (CCK %d + OFDM %d)\n"
+ * ,CCAcount,(CCK_PD_CNT - CCK_MDRDY_CNT),(OFDM_PD_CNT - OFDM_MDRDY_CNT)));
+ */
+
+ pAd->RalinkCounters.OneSecFalseCCACnt = CCAcount;
+ pAd->RalinkCounters.OneSecCCKFalseCCACnt = (CCK_PD_Cnt - CCK_MDRDY_Cnt);
+ pAd->RalinkCounters.OneSecOFDMFalseCCACnt = (OFDM_PD_Cnt - OFDM_MDRDY_Cnt);
+ pAd->RalinkCounters.FalseCCACnt = CCAcount;
+
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ pAd->SCSCtrl.PdCount = PDCnt;
+ pAd->SCSCtrl.MdrdyCount = MDRDYCnt;
+ DBGPRINT(RT_DEBUG_TRACE, ("False CCA (one second) = %ld (CCK %d + OFDM %d)\n",
+ (ULONG)pAd->RalinkCounters.OneSecFalseCCACnt,
+ pAd->RalinkCounters.OneSecCCKFalseCCACnt,
+ pAd->RalinkCounters.OneSecOFDMFalseCCACnt));
+ pAd->SCSCtrl.FalseCCA = pAd->RalinkCounters.FalseCCACnt;
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+}
/*
========================================================================
@@ -586,7 +628,37 @@ NTSTATUS MtCmdNICUpdateRawCounters(RTMP_ADAPTER *pAd, PCmdQElmt CMDQelmt)
}
}
#endif /* DBG_DIAGNOSE */
-
+#if 0
+ /* To calculate False CCA count.*/
+ RTMP_IO_READ32(pAd, RO_PHYCTRL_STS0, &PDCnt);
+ OFDM_PD_CNT = (PDCnt >> 16);
+ CCK_PD_CNT = (PDCnt & 0xFFFF);
+ RTMP_IO_READ32(pAd, RO_PHYCTRL_STS5, &MDRDYCnt);
+ OFDM_MDRDY_CNT = (MDRDYCnt >> 16);
+ CCK_MDRDY_CNT = (MDRDYCnt & 0xFFFF);
+ CCAcount = ((OFDM_PD_CNT - OFDM_MDRDY_CNT) + (CCK_PD_CNT - CCK_MDRDY_CNT));
+ RTMP_IO_READ32(pAd, CR_PHYCTRL_2, &value);
+ value |= (1<<6); /* BIT6: CR_STSCNT_RST */
+ RTMP_IO_WRITE32(pAd, CR_PHYCTRL_2, value);
+ value &= (~(1<<6));
+ RTMP_IO_WRITE32(pAd, CR_PHYCTRL_2, value);
+ value |= (1<<7); /* BIT7: CR_STSCNT_EN */
+ RTMP_IO_WRITE32(pAd, CR_PHYCTRL_2, value);
+ pAd->RalinkCounters.OneSecFalseCCACnt = CCAcount;
+ pAd->RalinkCounters.OneSecCCKFalseCCACnt = (CCK_PD_CNT - CCK_MDRDY_CNT);
+ pAd->RalinkCounters.OneSecOFDMFalseCCACnt = (OFDM_PD_CNT - OFDM_MDRDY_CNT);
+ pAd->RalinkCounters.FalseCCACnt = CCAcount;
+
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ pAd->SCSCtrl.PdCount = PDCnt;
+ pAd->SCSCtrl.MdrdyCount = MDRDYCnt;
+ DBGPRINT(RT_DEBUG_TRACE, ("False CCA (one second) = %ld (CCK %d + OFDM %d)\n",
+ (ULONG)pAd->RalinkCounters.OneSecFalseCCACnt,
+ pAd->RalinkCounters.OneSecCCKFalseCCACnt,
+ pAd->RalinkCounters.OneSecOFDMFalseCCACnt));
+ pAd->SCSCtrl.FalseCCA = pAd->RalinkCounters.FalseCCACnt;
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+#endif
return NDIS_STATUS_SUCCESS;
}
@@ -789,12 +861,12 @@ VOID write_tmac_info(
NdisZeroMemory(&txd, sizeof(TMAC_TXD_L));
- ldpc = pTransmit->field.ldpc;
- mcs = pTransmit->field.MCS;
- sgi = pTransmit->field.ShortGI;
- stbc = pTransmit->field.STBC;
- phy_mode = pTransmit->field.MODE;
- bw = (phy_mode <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
+ ldpc = (UCHAR)pTransmit->field.ldpc;
+ mcs = (UCHAR)pTransmit->field.MCS;
+ sgi = (UCHAR)pTransmit->field.ShortGI;
+ stbc = (UCHAR)pTransmit->field.STBC;
+ phy_mode = (UCHAR)pTransmit->field.MODE;
+ bw = (UCHAR)((phy_mode <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW));
#if 0 /* we should not set 20/40 coexist this way because the "bw" here is for fix mode */
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
@@ -975,7 +1047,7 @@ VOID write_tmac_info(
if (TxSCtl->TxS2HostStatusPerPkt & (1 << info->PID))
{
txd_5->pid = AddTxSStatus(pAd, TXS_TYPE0, info->PID, 0, 0,
- txd_6->tx_rate, info->TxSPriv);
+ (UINT16)txd_6->tx_rate, info->TxSPriv);
txd_5->tx_status_2_host = 1;
}
else
@@ -1011,7 +1083,8 @@ VOID write_tmac_info(
if (TxSCtl->TxS2HostStatusPerPktType[txd_2->frm_type] & (1 << txd_2->sub_type))
{
txd_5->pid = AddTxSStatus(pAd, TXS_TYPE1, 0,
- txd_2->frm_type, txd_2->sub_type, txd_6->tx_rate, info->TxSPriv);
+ (UINT8)txd_2->frm_type, (UINT8)txd_2->sub_type,
+ (UINT16)txd_6->tx_rate, info->TxSPriv);
txd_5->tx_status_2_host = 1;
}
else
@@ -1228,12 +1301,12 @@ VOID write_tmac_info_Data(RTMP_ADAPTER *pAd, UCHAR *buf, TX_BLK *pTxBlk)
txd_1->ft = TMI_FT_LONG;
txd_size = sizeof(TMAC_TXD_L);
if (pTransmit) {
- ldpc = pTransmit->field.ldpc;
- mcs = pTransmit->field.MCS;
- sgi = pTransmit->field.ShortGI;
- stbc = pTransmit->field.STBC;
- phy_mode = pTransmit->field.MODE;
- bw = (phy_mode <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
+ ldpc = (UCHAR)pTransmit->field.ldpc;
+ mcs = (UCHAR)pTransmit->field.MCS;
+ sgi = (UCHAR)pTransmit->field.ShortGI;
+ stbc = (UCHAR)pTransmit->field.STBC;
+ phy_mode = (UCHAR)pTransmit->field.MODE;
+ bw = (UCHAR)((phy_mode <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW));
nss = get_nss_by_mcs(phy_mode, mcs, stbc);
}
@@ -1314,7 +1387,7 @@ VOID write_tmac_info_Data(RTMP_ADAPTER *pAd, UCHAR *buf, TX_BLK *pTxBlk)
if (TxSCtl->TxS2HostStatusPerPkt & (1 << pTxBlk->Pid))
{
txd_5->pid = AddTxSStatus(pAd, TXS_TYPE0, pTxBlk->Pid, 0, 0,
- txd_6->tx_rate, pTxBlk->TxSPriv);
+ (UINT16)txd_6->tx_rate, pTxBlk->TxSPriv);
txd_5->tx_status_2_host = 1;
}
else
@@ -1349,7 +1422,8 @@ VOID write_tmac_info_Data(RTMP_ADAPTER *pAd, UCHAR *buf, TX_BLK *pTxBlk)
if (TxSCtl->TxS2HostStatusPerPktType[txd_2->frm_type] & (1 << txd_2->sub_type))
{
txd_5->pid = AddTxSStatus(pAd, TXS_TYPE1, 0,
- txd_2->frm_type, txd_2->sub_type, txd_6->tx_rate, pTxBlk->TxSPriv);
+ (UINT8)txd_2->frm_type, (UINT8)txd_2->sub_type,
+ (UINT16)txd_6->tx_rate, pTxBlk->TxSPriv);
txd_5->tx_status_2_host = 1;
}
else
@@ -1684,14 +1758,14 @@ VOID dump_wtbl_1_info(RTMP_ADAPTER *pAd, struct wtbl_1_struc *tb)
UCHAR addr[6];
NdisMoveMemory(&addr[0], &wtbl_1_d1->word, 4);
- addr[0] = wtbl_1_d1->field.addr_0 & 0xff;
- addr[1] = ((wtbl_1_d1->field.addr_0 & 0xff00) >> 8);
- addr[2] = ((wtbl_1_d1->field.addr_0 & 0xff0000) >> 16);
- addr[3] = ((wtbl_1_d1->field.addr_0 & 0xff000000) >> 24);
+ addr[0] = (UCHAR)(wtbl_1_d1->field.addr_0 & 0xff);
+ addr[1] = (UCHAR)((wtbl_1_d1->field.addr_0 & 0xff00) >> 8);
+ addr[2] = (UCHAR)((wtbl_1_d1->field.addr_0 & 0xff0000) >> 16);
+ addr[3] = (UCHAR)((wtbl_1_d1->field.addr_0 & 0xff000000) >> 24);
//addr[4] = wtbl_1_d0->field.addr_32 & 0xff;
//addr[5] = (wtbl_1_d0->field.addr_32 & 0xff00 >> 8);
- addr[4] = wtbl_1_d0->field.addr_4 & 0xff;
- addr[5] = wtbl_1_d0->field.addr_5 & 0xff;
+ addr[4] = (UCHAR)(wtbl_1_d0->field.addr_4 & 0xff);
+ addr[5] = (UCHAR)(wtbl_1_d0->field.addr_5 & 0xff);
hex_dump("WTBL Segment 1 Raw Data", (UCHAR *)tb, sizeof(struct wtbl_1_struc));
DBGPRINT(RT_DEBUG_OFF, ("WTBL Segment 1 Fields:\n"));
@@ -1811,8 +1885,8 @@ VOID dump_wtbl_2_info(RTMP_ADAPTER *pAd, struct wtbl_2_struc *tb)
raw_data = rate_info[idx] & 0xfff;
stbc = (raw_data & 0x800) ? 1 : 0;
- nss = (raw_data & 0x600) >> 9;
- phy_mode = (raw_data & 0x1c0) >> 6;
+ nss = (UCHAR)((raw_data & 0x600) >> 9);
+ phy_mode = (UCHAR)((raw_data & 0x1c0) >> 6);
rate = (raw_data & 0x3f);
//DBGPRINT(RT_DEBUG_OFF, ("\t\t%d/%d/%d/%d/MCS%d 0x%x\n", idx + 1, stbc, nss, phy_mode, rate, rate_info[idx]));
@@ -2055,14 +2129,15 @@ INT mt_wtbl_get_entry234(RTMP_ADAPTER *pAd, UCHAR widx, struct wtbl_entry *ent)
else
{
/* WTBL 2/3/4 */
- ecnt_per_page = wtbl_ctrl->page_size / wtbl_ctrl->wtbl_entry_size[idx];
+ ecnt_per_page = (UCHAR)(wtbl_ctrl->page_size /
+ wtbl_ctrl->wtbl_entry_size[idx]);
page_offset = wtbl_idx / ecnt_per_page;
element_offset = wtbl_idx % ecnt_per_page;
- ent->wtbl_fid[idx] = wtbl_ctrl->wtbl_base_fid[idx] + page_offset;
+ ent->wtbl_fid[idx] = (UINT16)(wtbl_ctrl->wtbl_base_fid[idx] + page_offset);
if (idx == 2)
- ent->wtbl_eid[idx] = element_offset * 2;
+ ent->wtbl_eid[idx] = (UINT16)(element_offset * 2);
else
- ent->wtbl_eid[idx] = element_offset;
+ ent->wtbl_eid[idx] = (UINT16)element_offset;
ent->wtbl_addr[idx] = wtbl_ctrl->wtbl_base_addr[idx] +
page_offset * wtbl_ctrl->page_size +
element_offset * wtbl_ctrl->wtbl_entry_size[idx];
diff --git a/mcu/andes_mt.c b/mcu/andes_mt.c
index cc967e7..add6906 100755
--- a/mcu/andes_mt.c
+++ b/mcu/andes_mt.c
@@ -1525,7 +1525,7 @@ INT32 CmdMultiPleRfRegAccessRead(RTMP_ADAPTER *pAd, MT_RF_REG_PAIR *RegPair,
}
AndesInitCmdMsg(msg, P1_Q0, EXT_CID, CMD_QUERY, EXT_CMD_MULTIPLE_REG_ACCESS,
- TRUE, 0, TRUE, TRUE, (12 * Num) + 20, (char *)RegPair,
+ TRUE, 0, TRUE, TRUE, (UINT16)(12 * Num) + 20, (char *)RegPair,
CmdMultipleRfRegAccessReadCb);
for (Index = 0; Index < Num; Index++)
@@ -1583,7 +1583,7 @@ INT32 CmdMultiPleMacRegAccessRead(RTMP_ADAPTER *pAd, RTMP_REG_PAIR *RegPair,
}
AndesInitCmdMsg(msg, P1_Q0, EXT_CID, CMD_QUERY, EXT_CMD_MULTIPLE_REG_ACCESS,
- TRUE, 0, TRUE, TRUE, (12 * Num) + 20, (char *)RegPair,
+ TRUE, 0, TRUE, TRUE, (UINT16)(12 * Num) + 20, (char *)RegPair,
CmdMultipleMacRegAccessReadCb);
for (Index = 0; Index < Num; Index++)
@@ -1719,7 +1719,7 @@ static VOID CmdRFRegAccessReadCb(struct cmd_msg *msg, char *Data, UINT16 Len)
struct _CMD_RF_REG_ACCESS_T *RFRegAccess = (struct _CMD_RF_REG_ACCESS_T *)Data;
NdisMoveMemory(msg->rsp_payload, &RFRegAccess->Data, Len - 8);
- *msg->rsp_payload = le2cpu32(*msg->rsp_payload);
+ *((UINT32 *)msg->rsp_payload) = le2cpu32(*((UINT32 *)msg->rsp_payload));
}
@@ -1786,6 +1786,7 @@ VOID CmdIORead32(struct _RTMP_ADAPTER *pAd, UINT32 Offset, UINT32 *Value)
struct MCU_CTRL *Ctl = &pAd->MCUCtrl;
RTMP_REG_PAIR RegPair;
+ RegPair.Value = 0;
if (Ctl->Stage == FW_RUN_TIME)
{
@@ -1818,7 +1819,7 @@ static VOID EventExtCmdResult(struct cmd_msg *msg, char *Data, UINT16 Len)
DBGPRINT(RT_DEBUG_INFO, ("%s: EventExtCmdResult.u4Status = 0x%x\n",
__FUNCTION__, EventExtCmdResult->u4Status));
- RTMP_OS_TXRXHOOK_CALL(WLAN_CALIB_TEST_RSP,NULL,EventExtCmdResult->u4Status,pAd);
+ RTMP_OS_TXRXHOOK_CALL(WLAN_CALIB_TEST_RSP, NULL, (UCHAR)EventExtCmdResult->u4Status, pAd);
}
@@ -1835,7 +1836,7 @@ VOID EventExtCmdResultHandler(RTMP_ADAPTER *pAd, char *Data, UINT16 Len)
DBGPRINT(RT_DEBUG_INFO, ("%s: EventExtCmdResult.u4Status = 0x%x\n",
__FUNCTION__, EventExtCmdResult->u4Status));
- RTMP_OS_TXRXHOOK_CALL(WLAN_CALIB_TEST_RSP,NULL,EventExtCmdResult->u4Status,pAd);
+ RTMP_OS_TXRXHOOK_CALL(WLAN_CALIB_TEST_RSP, NULL, (UCHAR)EventExtCmdResult->u4Status, pAd);
}
@@ -1861,7 +1862,7 @@ INT32 CmdIcapOverLap(RTMP_ADAPTER *pAd, UINT32 IcapLen)
TestCtrl.ucAction = 0;
- TestCtrl.ucIcapLen = IcapLen;
+ TestCtrl.ucIcapLen = (UINT8)IcapLen;
TestCtrl.u.u4OpMode = OPERATION_ICAP_OVERLAP;
@@ -1979,7 +1980,7 @@ INT32 CmdWiFiRxDisable(RTMP_ADAPTER *pAd, UINT RxDisable)
memset(&WiFiRxDisable, 0x00, sizeof(WiFiRxDisable));
- WiFiRxDisable.ucWiFiRxDisableCtrl = RxDisable;
+ WiFiRxDisable.ucWiFiRxDisableCtrl = (UINT8)RxDisable;
AndesAppendCmdMsg(msg, (char *)&WiFiRxDisable, sizeof(WiFiRxDisable));
@@ -2012,7 +2013,7 @@ INT32 CmdP2pNoaOffloadCtrl(RTMP_ADAPTER *ad, UINT8 enable)
NdisZeroMemory(&extCmdNoaCtrl, sizeof(extCmdNoaCtrl));
- extCmdNoaCtrl.ucMode1 = cpu2le32(enable);
+ extCmdNoaCtrl.ucMode1 = (UINT8)cpu2le32(enable);
//extCmdNoaCtrl.ucMode0 = cpu2le32(enable);
AndesAppendCmdMsg(msg, (char *)&extCmdNoaCtrl, sizeof(extCmdNoaCtrl));
@@ -2267,10 +2268,11 @@ static VOID EventThermalProtect(RTMP_ADAPTER *pAd, UINT8 *Data, UINT32 Length)
}
else
{
- DBGPRINT(RT_DEBUG_OFF, ("Switch TX to 2 stram\n"));
pAd->force_one_tx_stream = FALSE;
+ DBGPRINT(RT_DEBUG_OFF, ("Switch TX to 2 stram\n"));
}
+ pAd->switch_tx_stream = TRUE;
pAd->fgThermalProtectToggle = TRUE;
RTMP_SEM_EVENT_UP(&pAd->AutoRateLock);
@@ -2953,7 +2955,7 @@ INT32 AndesMTEraseFw(RTMP_ADAPTER *pAd)
if (cap->FWImageName)
os_free_mem(NULL, cap->FWImageName);
- cap->FWImageName = NULL;
+ cap->FWImageName = NULL;
}
return 0;
@@ -3015,7 +3017,7 @@ static VOID EventExtEventHandler(RTMP_ADAPTER *pAd, UINT8 ExtEID, UINT8 *Data, U
switch (ExtEID)
{
case EXT_EVENT_CMD_RESULT:
- EventExtCmdResultHandler(pAd, Data, Length);
+ EventExtCmdResultHandler(pAd, Data, (UINT16)Length);
break;
case EXT_EVENT_FW_LOG_2_HOST:
ExtEventFwLog2HostHandler(pAd, Data, Length);
@@ -3100,8 +3102,10 @@ static VOID AndesMTRxProcessEvent(RTMP_ADAPTER *pAd, struct cmd_msg *rx_msg)
(event_rxd->fw_rxd_2.field.ext_eid == EXT_EVENT_FW_LOG_2_HOST) ||
(event_rxd->fw_rxd_2.field.ext_eid == EXT_EVENT_THERMAL_PROTECT)) {
/* if have callback function */
- UnsolicitedEventHandler(pAd, event_rxd->fw_rxd_1.field.eid, event_rxd->fw_rxd_2.field.ext_eid, GET_OS_PKT_DATAPTR(net_pkt) + sizeof(*event_rxd),
- event_rxd->fw_rxd_0.field.length - sizeof(*event_rxd));
+ UnsolicitedEventHandler(pAd, (UINT8)event_rxd->fw_rxd_1.field.eid
+ , (UINT8)event_rxd->fw_rxd_2.field.ext_eid
+ , GET_OS_PKT_DATAPTR(net_pkt) + sizeof(*event_rxd)
+ , event_rxd->fw_rxd_0.field.length - sizeof(*event_rxd));
}
else
{
@@ -3149,7 +3153,9 @@ static VOID AndesMTRxProcessEvent(RTMP_ADAPTER *pAd, struct cmd_msg *rx_msg)
else
{
DBGPRINT(RT_DEBUG_ERROR, ("expect response len(%d), command response len(%zu) invalid\n", msg->rsp_payload_len, event_rxd->fw_rxd_0.field.length - sizeof(*event_rxd)));
- msg->rsp_payload_len = event_rxd->fw_rxd_0.field.length - sizeof(*event_rxd);
+ msg->rsp_payload_len =
+ (UINT16)(event_rxd->fw_rxd_0.field.length -
+ sizeof(*event_rxd));
}
if (msg->need_wait) {
@@ -3306,6 +3312,14 @@ static VOID CmdThemalSensorRsp(struct cmd_msg *msg, char *Data, UINT16 Len)
static inline VOID bufferModeFieldSet(RTMP_ADAPTER *pAd,EXT_CMD_EFUSE_BUFFER_MODE_T *pCmd,UINT16 addr)
{
UINT32 i = pCmd->ucCount;
+
+ if (i >= EFUSE_CONTENT_BUFFER_SIZE) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s: EFUSE_CONTENT_BUFFER_SIZE Overflow\n",
+ __FUNCTION__));
+ return;
+ }
+
pCmd->aBinContent[i].u2Addr = cpu2le16(addr);
pCmd->aBinContent[i].ucValue = pAd->EEPROMImage[addr] ;
pCmd->ucCount++;
@@ -3333,7 +3347,7 @@ static VOID CmdExtPmStateCtrlRsp(struct cmd_msg *msg, char *Data, UINT16 Len)
static VOID CmdFillEeprom(RTMP_ADAPTER *pAd,EXT_CMD_EFUSE_BUFFER_MODE_T *pCmd)
{
- int i=0;
+ UINT8 i = 0;
pCmd->aBinContent[i].u2Addr = NIC_CONFIGURE_0_TOP;
pCmd->aBinContent[i].ucValue = pAd->EEPROMImage[NIC_CONFIGURE_0_TOP] ;
i++;
@@ -3599,7 +3613,8 @@ VOID CmdSetTxPowerCtrl(RTMP_ADAPTER *pAd, UINT8 central_chl)
struct cmd_msg *msg;
EXT_CMD_TX_POWER_CTRL_T CmdTxPwrCtrl;
int ret = 0;
- int i, j;
+ USHORT i;
+ int j;
UINT8 PwrPercentageDelta = 0;
USHORT Value;
struct MT_TX_PWR_CAP *cap = &pAd->chipCap.MTTxPwrCap;
@@ -3622,7 +3637,7 @@ VOID CmdSetTxPowerCtrl(RTMP_ADAPTER *pAd, UINT8 central_chl)
{
RT28xx_EEPROM_READ16(pAd, NIC_CONFIGURE_1, Value);
- CmdTxPwrCtrl.ucTSSIEnable = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.ucTSSIEnable = (UINT8)((Value & 0xff00) >> 8);
RT28xx_EEPROM_READ16(pAd, NIC_CONFIGURE_1, Value);
CmdTxPwrCtrl.ucTempCompEnable = (Value & 0xff);
@@ -3639,7 +3654,7 @@ VOID CmdSetTxPowerCtrl(RTMP_ADAPTER *pAd, UINT8 central_chl)
RT28xx_EEPROM_READ16(pAd, TX_PWR_CCK_1_2M + (i * 2), Value);
CmdTxPwrCtrl.aucRatePowerDelta[j] = Value & 0xff;
j++;
- CmdTxPwrCtrl.aucRatePowerDelta[j] = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.aucRatePowerDelta[j] = (UINT8)((Value & 0xff00) >> 8);
j++;
}
@@ -3647,20 +3662,20 @@ VOID CmdSetTxPowerCtrl(RTMP_ADAPTER *pAd, UINT8 central_chl)
CmdTxPwrCtrl.ucBWPowerDelta = Value & 0xff;
RT28xx_EEPROM_READ16(pAd, TX0_G_BAND_TARGET_PWR, Value);
- CmdTxPwrCtrl.aucCHPowerDelta[0] = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.aucCHPowerDelta[0] = (UINT8)((Value & 0xff00) >> 8);
RT28xx_EEPROM_READ16(pAd, TX0_G_BAND_CHL_PWR_DELTA_MID, Value);
CmdTxPwrCtrl.aucCHPowerDelta[1] = Value & 0xff;
- CmdTxPwrCtrl.aucCHPowerDelta[2] = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.aucCHPowerDelta[2] = (UINT8)((Value & 0xff00) >> 8);
RT28xx_EEPROM_READ16(pAd, TX1_G_BAND_TARGET_PWR, Value);
- CmdTxPwrCtrl.aucCHPowerDelta[3] = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.aucCHPowerDelta[3] = (UINT8)((Value & 0xff00) >> 8);
RT28xx_EEPROM_READ16(pAd, TX1_G_BAND_CHL_PWR_DELTA_MID, Value);
CmdTxPwrCtrl.aucCHPowerDelta[4] = Value & 0xff;
- CmdTxPwrCtrl.aucCHPowerDelta[5] = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.aucCHPowerDelta[5] = (UINT8)((Value & 0xff00) >> 8);
j = 0;
@@ -3672,7 +3687,7 @@ VOID CmdSetTxPowerCtrl(RTMP_ADAPTER *pAd, UINT8 central_chl)
if (i != 8)
{
- CmdTxPwrCtrl.aucTempCompPower[j] = ((Value & 0xff00) >> 8);
+ CmdTxPwrCtrl.aucTempCompPower[j] = (UINT8)((Value & 0xff00) >> 8);
j++;
}
}
@@ -3959,8 +3974,8 @@ INT32 CmdExtPwrMgtBitWifi(RTMP_ADAPTER *pAd, UINT8 ucWlanIdx, UINT8 ucPwrMgtBit)
goto error;
}
- PwrMgtBitWifi.ucWlanIdx = cpu2le32(ucWlanIdx);
- PwrMgtBitWifi.ucPwrMgtBit = cpu2le32(ucPwrMgtBit);
+ PwrMgtBitWifi.ucWlanIdx = (UINT8)cpu2le32(ucWlanIdx);
+ PwrMgtBitWifi.ucPwrMgtBit = (UINT8)cpu2le32(ucPwrMgtBit);
DBGPRINT(RT_DEBUG_OFF, ("%s:ucWlanIdx(%d), ucPwrMgtBit(%d)\n", __FUNCTION__, ucWlanIdx, ucPwrMgtBit));
@@ -3995,9 +4010,9 @@ INT32 CmdExtPmStateCtrl(RTMP_ADAPTER *pAd, UINT8 ucWlanIdx, UINT8 ucPmNumber, UI
}
/* Fill parameter here*/
- CmdPmStateCtrl.ucWlanIdx = cpu2le32(ucWlanIdx);
- CmdPmStateCtrl.ucPmNumber = cpu2le32(ucPmNumber);
- CmdPmStateCtrl.ucPmState = cpu2le32(ucPmState);
+ CmdPmStateCtrl.ucWlanIdx = (UINT8)cpu2le32(ucWlanIdx);
+ CmdPmStateCtrl.ucPmNumber = (UINT8)cpu2le32(ucPmNumber);
+ CmdPmStateCtrl.ucPmState = (UINT8)cpu2le32(ucPmState);
#ifdef CONFIG_STA_SUPPORT
NdisMoveMemory(CmdPmStateCtrl.aucBssid, pEntry->Addr, MAC_ADDR_LEN);
DBGPRINT(RT_DEBUG_OFF, ("%s:(%x, %x, %x, %x, %x, %x), BeaconPeriod(%d), DtimPeriod(%d), AID(%d)\n",
@@ -4011,8 +4026,8 @@ INT32 CmdExtPmStateCtrl(RTMP_ADAPTER *pAd, UINT8 ucWlanIdx, UINT8 ucPmNumber, UI
#ifdef CONFIG_STA_SUPPORT
if (ucPmState == ENTER_PM_STATE)
{
- CmdPmStateCtrl.ucDtimPeriod = cpu2le32(pAd->MlmeAux.DtimPeriod);
- CmdPmStateCtrl.u2BcnInterval = cpu2le32(pAd->MlmeAux.BeaconPeriod);
+ CmdPmStateCtrl.ucDtimPeriod = (UINT8)cpu2le32(pAd->MlmeAux.DtimPeriod);
+ CmdPmStateCtrl.u2BcnInterval = (UINT16)cpu2le32(pAd->MlmeAux.BeaconPeriod);
CmdPmStateCtrl.u4Aid = cpu2le32(pAd->StaActive.Aid);
RTMP_IO_READ32(pAd, RMAC_RFCR, &u4RfCr);
@@ -4158,7 +4173,7 @@ VOID RT28xx_UpdateBeaconToMcu(
if (HWBssidIdx > 0) //HWBssid > 0 case, no extendable bssid.
bcn_update.ucExtBssidIdx = 0;
else
- bcn_update.ucExtBssidIdx = apidx;
+ bcn_update.ucExtBssidIdx = (UINT8)apidx;
bcn_update.ucEnable = Enable;
//bcn_update.ucWlanIdx = 0;//hardcode at present
@@ -4251,6 +4266,8 @@ VOID MT76xxAndesWOWEnable(
NdisCopyMemory(CmdGTK.PTK, pEntry->PTK, LEN_PTK);
#else
NdisCopyMemory(CmdGTK.PTK, pAd->WOW_Cfg.PTK, LEN_PTK);
+ hex_dump("WOW_Cfg.KCK", pAd->WOW_Cfg.PTK, LEN_PTK_KCK);
+ hex_dump("WOW_Cfg.KEK", &pAd->WOW_Cfg.PTK[LEN_PTK_KCK], LEN_PTK_KEK);
#endif
#endif
@@ -4362,6 +4379,11 @@ VOID MT76xxAndesWOWEnable(
CmdPFGlobal.PFType = cpu2le32(_ENUM_TYPE_GLOBAL_EN);
CmdPFGlobal.FunctionSelect = cpu2le32(_ENUM_GLOBAL_WOW_EN);
CmdPFGlobal.Enable = cpu2le32(1); //bit0=1 mean BSS0 for staion mode
+ /* if 0: NOT to configure. non-0: set value 1~15 */
+ if (pAd->WOW_Cfg.nKeepAlivePeriod != 0) {
+ CmdPFGlobal.extParam = ((FW_KEEP_ALIVE_ENABLE_MASK)
+ | (pAd->WOW_Cfg.nKeepAlivePeriod & FW_KEEP_ALIVE_PERIOD_MASK));
+ }
AndesAppendCmdMsg(msg, (char *)&CmdPFGlobal, sizeof(CMD_PACKET_FILTER_GLOBAL_T));
diff --git a/mcu/bin/WIFI_RAM_CODE_MT7603_e2.bin b/mcu/bin/WIFI_RAM_CODE_MT7603_e2.bin
index 292767d..d26a4bb 100755
--- a/mcu/bin/WIFI_RAM_CODE_MT7603_e2.bin
+++ b/mcu/bin/WIFI_RAM_CODE_MT7603_e2.bin
@@ -1,13 +1,14 @@
-F
-D îî#
-P€ €IøPH
-D@
+F
+D îî#
+F(
+P€ €IøPH
+D@
N2
-L2ÀBH
-DP
->åH
+L2ÀBH
+DP
+>ãH
Q
-DP
+DP
@
X €
@@ -19,31 +20,31 @@ X!
Ï€/€@ 
@
D`1\n
-Ï€ n
-X
-<Mÿ¹KàH
-.WâLP€.Wú¼NR
-@
+Ï€ n
+X
+<Mÿ¹KàH
+.Wß¹LP€.Wø\NR
+@
D
J
@1@!„
D
-F@X
+F@X
@€
TQ
P
-DP
->?ÊÈ81ŠN
->?Ë
+DP
+>?Èt81ŠN
+>?Èà81ŠN
N
-L€J\ð
+L€J\ð
N
-L€J\ð
+L€J\ð
#
N
-L€J\ð
+L€J\ð
-Nò
+Nò
X€
@0¼@1ü N2
D
@@ -65,125 +66,127 @@ F@
F@
D
F&
-F&
-L
-F
+F&
+L
+F
D
-N¢
-@0x—@
-F 
-D
-€I
-D
-€Iÿÿ¦P#€Tq
-I
+N¢
+@0x—@
+F 
+D
+€I
+D
+€Iÿÿ¦P#€Tq
+I
P
-
-C
+
+C
C€
->_áüLr€Ps€ HÿÿÒC
-
-Yá€
-D0
-X€
-X€
-P€4I÷ë2F X€ @#”@
-
-\ó€Nò
-IÿþÖX
-R
-D
+>_ßœLr€Ps€ HÿÿÒC
+
+Yá€
+Ï€Po€@P¯€HPŸ€TP€BP€I?€QÏ€LQï€PT€ÿX
+D0
+X€
+X€
+P€4I÷ë,F X€ @#”@
+
+\ó€Nò
+IÿþÖX
+R
+D
@r @’$ @”œPr€@R @T”@r @Rœ@!@ñ„Nóÿä$
-D
-
-H
+D
+
+DP
+H
-
-D
-:2Œ
-Iÿ瀀D
-I
+
+D
+:2
+Iÿç>€D
+I
@Cˆ
@3ˆ
-@Sˆ
-
-@$
+@Sˆ
+
+@$
D
-D
->ÌäIÿÏÜD
-á
->7ùÊH
->'ùÉH
+D
+>ÊIÿÏ–D
+á
+>7÷jH
+>'÷iH
€NC
-T€ÿDP
+T€ÿDP
-
+
XXR‹@]À€@  D0
-¦H
-X
+¦H
+X
/€PŸ€'À>>²`Ï€X_
-@`€X£
-D
-DPÿXp
+@`€X£
+Tn
S€€
-€€
-€P€
-
->åœ
-Nó
+€€
+€P€
+
+>ã<
+Nó
-IÿüLN
-
-.7åžDP
-
-.WäNS
-L"€<\ñ
+IÿüLN
+
+.7ã>DP
+
+.Wá²NS
+L"€<\ñ
@2ŒTQ
\ð€Nó
-Pÿà@€H
-ßXB€@QPHF HF
-Qÿ€;ÿü„J
+Pÿà@€H
+ßXB€@QPHF HF
+Qÿ€;ÿü„J
-P„
-@Q
-FX‚ÐD
-XP€
-XQ€
-Iÿ³ˆH
-
-LÀ8ˆ
-Qÿ€;ÿü„J
-DOÿ‡@0X€ H
-D
+P„
+@Q
+FX‚ÐD
+XP€
+XQ€
+Iÿ³BH
+
+LÀ8ˆ
+DOÿ‡@0X€ H
+>÷˜P
+D
N
-X$€
-Iÿÿ4N
-I÷½6P€D
-D
-€€X`
-X
+X$€
+Iÿÿ6N
+I÷¼ØP€D
+D
+€€X`
+N
+X
8`
D@
-PŸ€P@ˆ€¯€€ €Ÿ€@€
+PŸ€P@ˆ€¯€€ €Ÿ€@€
_€ /€Ï€O€ _€
-¯€
+¯€
@To€ S€€ @ 
-€ LDÿ~/€P1ü?€Ÿ€N“þÚ
+€ LDÿ~/€P1ü?€Ÿ€N“þÚ
L0
-AàL?
-P€
+AàL?
+P€
ŠHÿÿð
XX€
4X€
-X
-X
+X
+X
X2
XA
Xq€
-X1
-D@
+X1
+D@
@D DŸ[±@rAî$
@ä @P¤
QAâð@¡ˆ
@@ -191,33 +194,32 @@ QAâð@¡ˆ
D@€
FŽm¹@p X„ å@
¹B@Žx
-AÀ¬ FvUµAÎ$
-Dÿ‡@PœX€H
-£
-
-D
-D
+AÀ¬ FvUµAÎ$
+D_ÿ‡@@”X
+ƒ
+.÷¯X
+D
-D
-€P
-X€
-D
-X
-
-
-DOÿ‡@ X
-S
-Kà>ú
-X€
-I÷ª8I÷¬n_€N£
+D
+€P
+X€
+D
+X
+
+
+EÏÿ‡@ ðX
+À “€S€ C€€>7ãEä
+Kà>÷ D
+X€
+I÷©œI÷«Ò_€N£
@p(7@s7N
@@$7@CWN"
-@0 7@3×Oâ
-KàF@cXR
-FcKàX”†
-o€
-PF:
+@0 7@3×Oâ
+KàF@cXR
+FcKàX”†
+o€
+PF:
@@ -226,87 +228,84 @@ PF:
-
+
@
P
P
P
-J
-
-D
-D`
+J
+
+D
+D`
FFð¢X
F
-F
-F
-FFÉðX
-D,ïÿ@
-DP
+F
+F
+FFÉðX
+D,ïÿ@
+D
FˆˆXˆˆD
-FˆˆXˆˆD
+FˆˆXˆˆD
FX€D
F
-XۇD
+XۇD
FˆˆXˆˆD
-FˆˆXˆˆD
-XۇH
+FˆˆXˆˆD
+XۇH
F/
-à
+à
F/
-P
-à
-FX‚ÐD
+P
+à
+FX‚ÐD
P0ÿÀ^ñÿðNó
@
PPÿÀ^òÿðNó
-0
+0
FF
-FF
-D
-D
-D
-D
-
->Öd>Þ¤D yIÿ‚*X€
-DP
-H
-@€@ 
-F
-8›N
-
+FF
+D
+D
+D
+D
+>Ô>ÜPD éIÿfX€
+Iÿ÷Iÿü^Qÿ€:oª„J
+DP
+H
+@€@p
+F
+DP
+8›N
+
Tr€ÿ@ÿNó
@ðNó
-\óNò
-€
+\óNò
+€
F
F
-F
-€
-/€
-<ÿ>Gæ
-<Mÿ>F@
-F<ÿ@X
-€GÆ
+F
+€
F
-FF
+FF
F
-FF(
+FF(
F
-FF0
+FF0
F
-FF8
+FF8
F
-FF
+FF
F
-FF
-D
-D
-P
-
-D
-.GâT2
-H
-<Kó >Wæ9<Kò>æ;Dp
+FF
+D
+D
+
+P
+
+D
+.Gß½T2
+H
+<KñÙ>WãÙ<KðØ>ãÛDp
@@ -317,11 +316,11 @@ H
-
+
-
-
-
+
+
+
@@ -347,7 +346,7 @@ I$\ÂÓ¬b‘•äyçÈ7mÕN©lVôêez®ºx%.¦´ÆèÝtK½‹Šp>µfHöa5W¹†Ážáø˜iÙŽ”›‡éÎU(ߌ¡‰
X
-d
+d
H `¿ô¢ L `Â „

@@ -359,6 +358,7 @@ H `¿ô¢ L `Â „



- `
-
-  (3>Pf| Ìø
+ `
+
+
+  (3>Pf| Ìø
diff --git a/mcu/mcu.c b/mcu/mcu.c
index 0d9838d..adc76ff 100755
--- a/mcu/mcu.c
+++ b/mcu/mcu.c
@@ -31,7 +31,7 @@
INT MCUBurstWrite(PRTMP_ADAPTER pAd, UINT32 Offset, UINT32 *Data, UINT32 Cnt)
{
#ifdef RTMP_USB_SUPPORT
- RTUSBMultiWrite_nBytes(pAd, Offset, (UCHAR *)Data, Cnt * 4, 64);
+ RTUSBMultiWrite_nBytes(pAd, (USHORT)Offset, (UCHAR *)Data, (USHORT)(Cnt * 4), 64);
#endif /* RTMP_USB_SUPPORT */
return 0;
}
diff --git a/mgmt/mgmt_entrytb.c b/mgmt/mgmt_entrytb.c
index d204e30..891c438 100755
--- a/mgmt/mgmt_entrytb.c
+++ b/mgmt/mgmt_entrytb.c
@@ -318,10 +318,13 @@ VOID set_sta_ra_cap(RTMP_ADAPTER *pAd, MAC_TABLE_ENTRY *ent, ULONG ra_ie)
pEntry - pointer to the MAC entry; NULL is not found
==========================================================================
*/
-MAC_TABLE_ENTRY *MacTableLookup(RTMP_ADAPTER *pAd, UCHAR *pAddr)
+MAC_TABLE_ENTRY *MacTableLookup(RTMP_ADAPTER *pAd, const UCHAR *pAddr)
{
ULONG HashIdx;
MAC_TABLE_ENTRY *pEntry = NULL;
+
+ if (pAd == NULL || pAddr == NULL)
+ return NULL;
HashIdx = MAC_ADDR_HASH_INDEX(pAddr);
pEntry = pAd->MacTab.Hash[HashIdx];
@@ -438,10 +441,14 @@ BOOLEAN StaUpdateMacTableEntry(
#endif /* TXBF_SUPPORT */
/* find max fixed rate */
- pEntry->MaxHTPhyMode.field.MCS = get_ht_max_mcs(pAd, &wdev->DesiredHtPhyInfo.MCSSet[0], &ht_cap->MCSSet[0]);
+ pEntry->MaxHTPhyMode.field.MCS =
+ (USHORT)get_ht_max_mcs(pAd, &wdev->DesiredHtPhyInfo.MCSSet[0],
+ &ht_cap->MCSSet[0]);
if (wdev->DesiredTransmitSetting.field.MCS != MCS_AUTO)
- set_ht_fixed_mcs(pAd, pEntry, wdev->DesiredTransmitSetting.field.MCS, wdev->HTPhyMode.field.MCS);
+ set_ht_fixed_mcs(pAd, pEntry,
+ (UCHAR)wdev->DesiredTransmitSetting.field.MCS,
+ (UCHAR)wdev->HTPhyMode.field.MCS);
pEntry->MaxHTPhyMode.field.STBC = (ht_cap->HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
pEntry->MpduDensity = ht_cap->HtCapParm.MpduDensity;
@@ -691,7 +698,7 @@ MAC_TABLE_ENTRY *MacTableInsertEntry(
/* ENTRY PREEMPTION: initialize the entry */
pEntry->wdev = wdev;
- pEntry->wcid = i;
+ pEntry->wcid = (UCHAR)i;
pEntry->func_tb_idx = wdev->func_idx;
pEntry->bIAmBadAtheros = FALSE;
pEntry->pAd = pAd;
@@ -878,7 +885,7 @@ MAC_TABLE_ENTRY *MacTableInsertEntry(
#endif /* CONFIG_STA_SUPPORT */
} while (FALSE);
- tr_tb_set_entry(pAd, i, pEntry);
+ tr_tb_set_entry(pAd, (UCHAR)i, pEntry);
RTMPInitTimer(pAd, &pEntry->EnqueueStartForPSKTimer, GET_TIMER_FUNCTION(EnqueueStartForPSKExec), pEntry, FALSE);
@@ -1289,7 +1296,7 @@ BOOLEAN MacTableDeleteEntry(RTMP_ADAPTER *pAd, USHORT wcid, UCHAR *pAddr)
APCleanupPsQueue(pAd, &tr_entry->ps_queue); /* return all NDIS packet in PSQ*/
#endif /* CONFIG_AP_SUPPORT */
- tr_tb_reset_entry(pAd, wcid);
+ tr_tb_reset_entry(pAd, (UCHAR)wcid);
/*RTMP_REMOVE_PAIRWISE_KEY_ENTRY(pAd, wcid);*/
@@ -1536,7 +1543,7 @@ VOID MacTableReset(RTMP_ADAPTER *pAd, INT startWcid)
}
/* Delete a entry via WCID */
- MacTableDeleteEntry(pAd, i, pMacEntry->Addr);
+ MacTableDeleteEntry(pAd, (USHORT)i, pMacEntry->Addr);
}
#ifdef CONFIG_AP_SUPPORT
@@ -1564,9 +1571,8 @@ VOID MacTableReset(RTMP_ADAPTER *pAd, INT startWcid)
/* ENTRY PREEMPTION: Zero Mac Table but entry's content */
/* NdisZeroMemory(&pAd->MacTab, sizeof(MAC_TABLE));*/
- NdisZeroMemory(&pAd->MacTab.Size,
- sizeof(MAC_TABLE)-
- Offsetof(MAC_TABLE, Size));
+ NdisZeroMemory((((CHAR *)(&(pAd->MacTab))) + Offsetof(MAC_TABLE, Size)),
+ sizeof(MAC_TABLE) - Offsetof(MAC_TABLE, Size));
InitializeQueueHeader(&pAd->MacTab.McastPsQueue);
/*NdisReleaseSpinLock(&pAd->MacTabLock);*/
diff --git a/mgmt/mgmt_ht.c b/mgmt/mgmt_ht.c
index 0dfc3d9..3ccd171 100755
--- a/mgmt/mgmt_ht.c
+++ b/mgmt/mgmt_ht.c
@@ -93,7 +93,7 @@ INT get_ht_max_mcs(RTMP_ADAPTER *pAd, UCHAR *desire_mcs, UCHAR *cap_mcs)
for (i=23; i>=0; i--)
{
j = i/8;
- bitmask = (1<<(i-(j*8)));
+ bitmask = (UCHAR)(1<<(i-(j*8)));
if ((desire_mcs[j] & bitmask) && (cap_mcs[j] & bitmask))
{
/*pEntry->MaxHTPhyMode.field.MCS = i; */
@@ -389,7 +389,7 @@ VOID RTMPSetHT(
bbp_set_bw(pAd, pAd->StaCfg.wdev.bw);
else
#endif /* defined(RT_CFG80211_SUPPORT) && defined(RT_CFG80211_P2P_CONCURRENT_DEVICE) */
- bbp_set_bw(pAd, bw);
+ bbp_set_bw(pAd, (UINT8)bw);
#ifdef RT305x
RTMP_CHIP_SPECIFIC(pAd, RT305x_HT_MODE_CHANGE, NULL, pHTPhyMode->BW);
@@ -488,14 +488,14 @@ VOID RTMPSetHT(
IF_DEV_CONFIG_OPMODE_ON_AP(pAd)
{
for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++)
- RTMPSetIndividualHT(pAd, apidx);
+ RTMPSetIndividualHT(pAd, (UCHAR)apidx);
#ifdef WDS_SUPPORT
for (apidx = 0; apidx < MAX_WDS_ENTRY; apidx++)
RTMPSetIndividualHT(pAd, apidx + MIN_NET_DEVICE_FOR_WDS);
#endif /* WDS_SUPPORT */
#ifdef APCLI_SUPPORT
for (apidx = 0; apidx < MAX_APCLI_NUM; apidx++)
- RTMPSetIndividualHT(pAd, apidx + MIN_NET_DEVICE_FOR_APCLI);
+ RTMPSetIndividualHT(pAd, (UCHAR)(apidx + MIN_NET_DEVICE_FOR_APCLI));
#endif /* APCLI_SUPPORT */
}
#endif /* CONFIG_AP_SUPPORT */
@@ -513,7 +513,8 @@ VOID RTMPSetHT(
#ifdef RT_CFG80211_P2P_SUPPORT
for (apidx = 0; apidx < pAd->ApCfg.BssidNum; apidx++)
- RTMPSetIndividualHT(pAd, apidx + MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO);
+ RTMPSetIndividualHT(pAd,
+ (UCHAR)(apidx + MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO));
#endif /* RT_CFG80211_P2P_SUPPORT */
RTMPSetIndividualHT(pAd, 0);
@@ -554,8 +555,9 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
UCHAR idx = apidx - MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO;
pDesired_ht_phy = &pAd->ApCfg.MBSSID[idx].wdev.DesiredHtPhyInfo;
- DesiredMcs = pAd->ApCfg.MBSSID[idx].wdev.DesiredTransmitSetting.field.MCS;
- encrypt_mode = pAd->ApCfg.MBSSID[idx].wdev.WepStatus;
+ DesiredMcs =
+ (UCHAR)pAd->ApCfg.MBSSID[idx].wdev.DesiredTransmitSetting.field.MCS;
+ encrypt_mode = (UCHAR)pAd->ApCfg.MBSSID[idx].wdev.WepStatus;
pAd->ApCfg.MBSSID[idx].wdev.bWmmCapable = TRUE;
pAd->ApCfg.MBSSID[idx].wdev.bAutoTxRateSwitch = (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
break;
@@ -595,9 +597,13 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
if (idx < MAX_APCLI_NUM)
{
pDesired_ht_phy = &pAd->ApCfg.ApCliTab[idx].wdev.DesiredHtPhyInfo;
- DesiredMcs = pAd->ApCfg.ApCliTab[idx].wdev.DesiredTransmitSetting.field.MCS;
- encrypt_mode = pAd->ApCfg.ApCliTab[idx].wdev.WepStatus;
- pAd->ApCfg.ApCliTab[idx].wdev.bAutoTxRateSwitch = (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
+ DesiredMcs =
+ (UCHAR)pAd->ApCfg.ApCliTab[idx].
+ wdev.DesiredTransmitSetting.field.MCS;
+ encrypt_mode =
+ (UCHAR)pAd->ApCfg.ApCliTab[idx].wdev.WepStatus;
+ pAd->ApCfg.ApCliTab[idx].wdev.bAutoTxRateSwitch =
+ (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
break;
}
else
@@ -635,7 +641,7 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
wdev = &pAd->ApCfg.MBSSID[apidx].wdev;
pDesired_ht_phy = &wdev->DesiredHtPhyInfo;
- DesiredMcs = wdev->DesiredTransmitSetting.field.MCS;
+ DesiredMcs = (UCHAR)wdev->DesiredTransmitSetting.field.MCS;
#ifdef WFA_VHT_PF
// TODO: Sigma, this code segment used to work around for Sigma Automation!
if (WMODE_CAP_AC(pAd->CommonCfg.PhyMode) && (DesiredMcs != MCS_AUTO)) {
@@ -646,7 +652,7 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
RT_CfgSetAutoFallBack(pAd, "1");
}
#endif /* WFA_VHT_PF */
- encrypt_mode = wdev->WepStatus;
+ encrypt_mode = (UCHAR)wdev->WepStatus;
pAd->ApCfg.MBSSID[apidx].wdev.bWmmCapable = TRUE;
wdev->bAutoTxRateSwitch = (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
break;
@@ -663,8 +669,8 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
wdev = &pAd->StaCfg.wdev;
pDesired_ht_phy = &wdev->DesiredHtPhyInfo;
- DesiredMcs = wdev->DesiredTransmitSetting.field.MCS;
- encrypt_mode = wdev->WepStatus;
+ DesiredMcs = (UCHAR)wdev->DesiredTransmitSetting.field.MCS;
+ encrypt_mode = (UCHAR)wdev->WepStatus;
break;
}
#endif /* CONFIG_STA_SUPPORT */
@@ -743,7 +749,8 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
mode = DesiredMcs / 8;
if (mode < 2)
- pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
+ pDesired_ht_phy->MCSSet[mode] =
+ (UCHAR)(1 << (DesiredMcs - mode * 8));
}
break;
@@ -761,7 +768,8 @@ VOID RTMPSetIndividualHT(RTMP_ADAPTER *pAd, UCHAR apidx)
mode = DesiredMcs / 8;
if (mode < 3)
- pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
+ pDesired_ht_phy->MCSSet[mode] =
+ (UCHAR)(1 << (DesiredMcs - mode * 8));
}
break;
}
diff --git a/mt7603.IAB b/mt7603.IAB
deleted file mode 100755
index ba450d7..0000000
--- a/mt7603.IAB
+++ b/dev/null
@@ -1,4925 +0,0 @@
- :
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Y
-
-
-
-
-
-
-
-
-
-
-
-H
-
-
-
-
-
-
-
-
-
-
-‹
-–
-
-
- W
-
-
-
-
-
-
-P
-
-
-
-
-
-
-
-
-
-
-
-
-f
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Q
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-“
-
-
-
-
-_
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5
-'
-a
-P
-
-
-
-
-
-4
-L
-
-
-
-
-
-
-
-c
-{
-
-
-
-
-
-
-3
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-J
-
-
-/
-™
-
-
-
-
-
-
-
-•
-
-
-'
-
-G
-
-
-
-
-
-
-
-G
-
-
-
-
-K
-
-
-
-
-
-
-
-
-
-
-‹
-y
-
-
-q
-
-
-
-
-]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-\
-
-“
-
-f
-
-
-
-#
-
-
-#
-.
-
-
-
-
-6
-
-
-Q
-
-
-
-
-O
-g
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4
-
-
-
-
-
-
-
-
-
-
-
-
-/
-/
-7
-7
-:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-+
-
-5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-*
-
-
-
-
-
-
-
-
-
-
-
-D
-j
-ƒ
-
-
-
-
-
-N
-
-N
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-,
-
-
-
-
-…
-
-
-
-
-
-2
-
-
-?
-
-
-
-
-{
-
-
-
-
-*
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-;
-
-
-
-
-
-
-
-
-
-
-@
-E
-c
-
-
-
-
-
-
-
-
-
-
-
-
-<
-!
-!
-
-
-†
-
-
-
-
-
-
-
-
-d
- W
-
-
-
-
-
-
-
-S
-/
-/
-9
-,
-
-
- :
-
-
-ˆ
-Œ
-8
-8
-o
-–
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-q
-
-
-
-
-
-
-
-i
-
-,
-J
-
-‰
-
-
-
-4
-M
-
-
-p
-
-
-
-
-4
-
-
-
-
-
-
-
-
-
-
-
-
-g
-
-
-A
-
-
-
-
-
-
-
-
-
-
-
-L
-
-H
-
-
-k
-A
-
-
-
-
-
-
-
-
-
-
-
-
-1
-l
-
-o
-
-
-h
-
-
-/
-
-
-
-
-
-
-
-
-
-
-
-•
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2
-2
-<
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-S
-
-
-
-
-
-
-B
-
-!
-!
-
-
-
-
-
-
-
-'
-
-
-
-
-
-
-
-
-
-
-
-
-j
-ƒ
-
-—
-
-
-
-¿
-
-
-
-7
-(
-|
-
-
-
-H
-,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-&
-
-*
-
-
-
-
-!
-
-
-
-
-
-
-
-
-
-
-
-
-Œ
-3
-
-
-
-
-
-$
-$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-*
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-D
-
-
-
-
-
-
-O
-
-
-
-“
-M
-
-X
-
-
-
-
-
-
-
-
-
-A
- :
-c
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Y
-
-6
-
-
-
-
-
-
-
-2
-
-
-
-
-
-
-
-
-(
-)
-
-
-y
-
-
-
-
-
- =
- P
-
-
-"
-$
-n
-
-
-U
-
-
-
-
-
-F
-
-Y
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-t
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-.
-
-%
-8
-
-K
-
-
-
-
-
->
-&
-
-9
-
-
-j
-ƒ
-
-.
-.
-
-
-”
-
-
-Y
-
-
-
-
-@
-
-
-
-
-E
-
-
-
-
-R
-
-4
-
-
-8
-m
-…
-t
-—
-
-
-
-
-
-_
-
-T
-Z
-5
-'
-_
-
-
-9
-
-
-
-
-
-*
-
-
-
-
-
-
-
-8
-‡
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-\
-
-
-
-<
-=
-
-
-
-
-
-
-
-
-
-
->
-
-
-
-
-
-
-
-ˆ
-
-
-
-
-
-
-
-
-
-
-
-1
-9
-H
-
-‡
-‡
-
-2
-:
-P
-
-
-
-
-
-
-
-
-
-
-
-
-
-@
-
-
-
-H
-1
-B
-
-
-
-
-
-
-*
-=
-
->
-&
-<
-
-L
-L
-
-H
-J
-J
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1
-
-5
-
-N
-C
-J
-
-
-
-
-
-=
-8
-
-
-
-
-
-
-H
-
-
-R
-
-
-
-
-i
-
-
-
-
-1
-
-
-
-*
-
-
-=
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-:
-
-
-
-
-
-
-
-
-
-
-N
-
-
-
-
-
-
-
-ˆ
-Œ
-
-N
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1
-
-
-
-
-
-
-B
-P
-f
-
-
-
-
-†
-
-
-
-
-
-
-
-E
-K
-
-C
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Y
-T
-F
-
-
-
-
-
-
-
-
-
-
-
-6
-8
-
-›
-
-
-%
-.
-5
-p
-
-y
-
-
-
-4
-4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4
-
-
-‹
-
-!
-$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-x
-
-
-/
-V
-
-
-
-
-
-
-
-
-
-
-
-9
-v
-9
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-_
-`
-†
-
-
-
-
-
-
-
--
-
-
-l
-v
-v
-
-C
-C
-w
-w
-
-
-
-
-
-
-
-H
-
-
-
-
--
-
-
-
-
-!
-
-
-#
-
-#
-
-
-=
-
-M
-O
-
-
-?
-
-
-
-
-
-
-
-
-
-
-
-
-B
-B
-B
-
-
-
- W
-H
-J
-J
-H
-
-
-
-
-
-
-9
-
-
-
-
-
-
-
-
-
-H
-
-j
-ƒ
-
-
-
-
-
-l
-9
-U
-T
-
-m
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-D
-
-
-
-E
-
-
-
-
-
-
-
-`
-2
-2
-<
-d
-
-;
-
-’
-C
-
-
-
-|
-
-
-
-
-
-
-
->
-
-
-`
-
-
-
-
-5
-5
-
-L
-
-
-
-
-—
-,
-,
-M
-
-
-
-
-
-
-
- Y
-
-
-
-
-
-
-
-„
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-M
-
-
-
-f
-
-
-
-@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`
-
-
-Œ
-
-
-
-J
-
-
-
-
-
-
-
-
-P
-P
- W
-
-
-5
-
-
-
-
-
-O
-
-M
-
-
-
-
-i
-
-
-
-
-
-
-
-
-a
-
-
-
-
-
-
-
-
-7
-7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-&
-
-`
-‘
-
-c
-
-
-
-
-
-
-D
-
-
-
-
-
-
-
-Q
-
-M
-
-
-
-
-
-
-T
-
-
-
-
-
-‹
-–
-!
-
-
-j
-ƒ
-
-
-f
-D
-”
-”
-X
-
-”
-
-
-U
- Y
-
-
-
-
-
-
-
-
-
-a
-—
-
-E
-
-
-T
-
-
-_
-Y
-r
-
-
-
-
-J
-+
-
-7
-
-
-<
-
-
-
-
-
-
-
-
->
-&
-_
-
-
-‡
-
-
-
-‚
-
-
-
-
-
-
-
-
-
-
-;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-„
-
-
-
-
-
-
-r
-
-
-
-
-
-
-
-
-
-U
->
-
-W
-
-
-
-
-a
-a
-
-x
-
-
-
-5
-
-
-/
-
-
-
-
-
-
-
-
-
-
-f
-‘
-n
-“
-h
-
-
-U
-x
-t
-•
-
-
-^
-
-S
-c
-“
-
-f
-
-
-
-*
-
-
-
-
-
-
-
-
-
-
-
-*
-
-c
-
-
-
-
-
-
-
-
-
-
-
-
-–
-d
-g
-
-r
-
-
-
-
-
-
-
-f
-
-
-
-
-
-
-
-]
-
-
-
-O
-
-W
-
-
-
-
-
-
-
-U
-
-
-
-
-
-
-
-
-
-
-
-
-
-S
-
-Q
-‰
-‰
-
-
-
-
-
- W
-
-F
-
-
-
-
-
-
-
-
-
-
-g
-n
-
-`
- Y
-Y
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-y
-
-
-R
-F
-
-
-D
-
-
-
-
-V
-
-:
-r
-
-
-
-
-
-
-
-
-N
-`
-Z
-R
-
-
-
-
-^
-[
-
-\
-
-1
-
-
-
-
-[
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-2
-2
-]
-
-^
-
-
->
-C
-Z
-]
-]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-D
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-C
-
-
-
-
-
-
-
-
-
-
-P
-
-
-
-
-
-
-
-
-`
-
-
-
-
-j
-ƒ
-
-5
-
-
-
-5
-
-
-
-
-
-n
-t
-Z
-
-
-
-t
-
-
-
-
-
-
-
-
-
-'
-k
-
-
-
-2
-
-
-z
-G
-™
-
-
-
-
-
-
-
-
-
-
-
-
-„
-
-
-
-
-8
-‘
-
-K
-S
-
-
-
-
-c
-
-
-
-
-?
-
-
->
-
-
-
-[
-[
-|
-
-
-
-
-f
-™
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-“
-
-
-
-:
-
-
-
-
-
-
-
-
-
-
-
-›
-
-R
-R
-
-
-
-
-
-
-
-
-r
-
-
-
-i
-m
-n
-n
-o
-
-
-h
-
-
-
-
-
-
-
-
-
-n
-
-
-
-
-
-
-
-
-
-
-
-=
-
-
-
-
-k
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-"
-r
-
-
-=
-‚
-|
-,
-
-”
-ˆ
-Œ
-
-\
-V
-W
-
-
-
-
-j
-ƒ
-
-#
-
-&
-
-
-
-
-
- =
-
-
-
-
-
-
-
-
-
-
-
-
-
-z
-q
-j
-ƒ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-C
-v
-y
-Y
-
-
-{
-
-
-
-
-j
-ƒ
-
-
-
-
-
-
-k
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-E
-
-y
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-†
-
-t
-X
-
-”
-
-
-]
-
-s
-
-
-
-
-
-‘
-
-
-
-
-‡
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-w
-
-
-
-
-
-€
-
-[
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-%
-U
-|
-w
-
-
-
-
-
-
-)
-
-
-
-—
-
-
-
-
-
-
-c
-c
-
-
-‰
-
-4
-4
-
-
-
-
-
-
-
-
-
-
-F
-
-
-
-!
-!
-
-
-
-
-
-
-¿
-
-
-
-
-
-`
-x
-’
-”
-
-€
-
-q
-
-
-
-
-
-
-
-–
-
-
-
-
-
-
-
-J
-
-
-
-
-
-’
-2
-:
-’
-t
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-”
-
-
-‹
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-=
-
-
-
-
-
-
-
-
-
-
-m
-
-D
-A
- :
-
-
-
-
-
-
-
-
-
-
-
-
-
-V
-
-N
-y
-
-#
-
-
-
-M
-
-
-
-
-
-
-
-
-‰
-
-
-Q
-
-
-’
-D
-h
-
-
-
-
-„
-„
-
-
-
-
-
-p
-
-
-
-
-
-.
-.
-
-
-5
-
-
-
-
-
-`
-
-‚
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-@
-
-
-
-
-
-_
-A
-
-7
-Y
-
-
-L
-
-
-c
-
-
-
-
-
-
-
-
-
-
-
-¿
-
-
-Z
-t
-
-
-
-_
-
-
-
-
-
-
-
-
-
-™
-
-6
-6
-s
-
- =
- P
-‡
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-M
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-‘
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-\
-
-
-
-
-
-
-
-v
-v
-
-
-
-;
-
-
-
-
-
-
-
-
-
-
-
-
-
-8
-
-
-
-Œ
-3
-
-p
-
-
-G
-
-
-
-$
-$
-
-
-W
-
-
-
-
-
-
-
-
-
-
-
-@
-E
-
-#
-
-
-
-
-
-
-A
-
-
-™
-
-™
-
-
-
-‹
-
-
-x
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-D
-
-H
-J
-J
-H
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-h
-
-
-/
-
-
-k
-A
-
-
-
-
-
-
-
-
-5
-
-
-“
-
-
-
-G
-
-H
-
-
-
-
-
-
-7
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-4
-—
-`
-o
-q
-
-
-
-
-
-
-
-
-
-
-
-E
-
-
-F
-
-x
-
-j
-ƒ
-
-
-
-
-
-
-
-
-+
-]
-
-
-
-]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-N
-
-
-
-
-
-
-i
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-”
-ˆ
-Œ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-V
-
-
-
- P
-
-
-
-
-
- =
-
-
-
-
-—
-™
-q
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Y
-Z
-.
-
-
-
-
-
-
-
-
-
-
-{
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-›
-
-
-
-
-
-
-
-
-’
-’
-
-
-
-
-
-
-
-
-C
-“
-
-
-
-5
-
-
-
-
-s
-A
- :
-Q
-
-
-
-U
-
-Q
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-1
-
-
-
-
-
-S
-
-
-x
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-™
-Z
-
-
-
->
-
-`
-
-
-+
-
-
-
-[
-Q
-‘
-
-
-
-g
-
-
-
-
-
-
-$
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-\
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-G
-
-1
-
-
-
-
-
-
-
-G
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-“
-
-
-
-
-
-
-
-
-
-
-t
-<
-_
-
-
-
-
-
-
-
-
-
-
-
-
-*
-
-
-
-
-{
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-&
-
-M
-\
-„
-
-
-
-r
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-5
-
-
-/
-
-
-<
-¿
-•
-
-h
-
-
-
-
-x
-
-
-
-
-
-
-*
-c
-
-j
-ƒ
-
-
-
-
-
-
-
-=
-
-
-
-
-ˆ
-Œ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
-
-
-
-
-
-
-
-
-;
-
-
-
-5
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-M
-
-
-
-
-
-
-
-
-
-Z
-
-t
-
-Q
-
-
-
-
-
-
-
diff --git a/mt7603.IAD b/mt7603.IAD
deleted file mode 100755
index cbcb650..0000000
--- a/mt7603.IAD
+++ b/dev/null
@@ -1,53 +0,0 @@
-’
-
-
-
-
-
-
-
-5
-
-Z
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-C
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mt7603.IMB b/mt7603.IMB
deleted file mode 100755
index 2377081..0000000
--- a/mt7603.IMB
+++ b/dev/null
@@ -1,1097 +0,0 @@
-!p
-
-
-
-
-H
-
-
-
-
- Y
-
-
-
-
-
-
-
-
-
-
->
-
-
- W
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-j
-ƒ
-
-
-
-
-
-
-
-@
-
-_
-
-
-
-L
-a
-3
-
-
-
-
-
-N
-
-
-
-
-q
-
-
-
-
-
-
-[
-
-
-†
-K
-
-
-
-
-
-X
-
-
-
-
-
-
-
-
-
-
-
-
-=
-
-
-
-,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-E
-
-
-
-!
-
-
-
-
-
-
-'
-
-
-
-
-
-
-
-
-
-
-{
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-R
-
-
-6
-y
-v
-
-#
-
-
-
-
-
-
-
-
-
-
-
-
-)
-
-(
-
-
-
-
-
-%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
-…
-
-¿
-
-
-
-
-
-
-
-
-8
-‡
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-;
-
-
-
-<
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-9
-U
-
-2
-u
-A
-
-
-
-
-
-
-
-0
-
-
-1
-
-D
-
-z
-G
-B
-T
-
-
-/
-€
-
-c
-
-
-
-~
-
-
-
-I
-J
-H
-b
-
-
-
-
-h
-"
-C
-`
-+
-
-V
-
-
-
-Q
-*
-
-
-
-
-
-4
-
-
-
-
-
-
-
-
-
-
-s
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-?
-
--
-
-
-S
-*
-^
-7
-
-e
-c
-d
-”
-F
-
-Y
-
-
-f
-&
-
-
-
-
->
-‚
-n
-C
-.
-\
-
-
-]
-w
-
-
-
-
-
-P
-a
-
-t
-5
-
-
-{
-
-
-„
-
-
-!
-
-
-h
-
-
-
-
-
-l
-i
-m
-
-
-
-
-
-O
-
-
-|
-
-ˆ
-Œ
-W
-Y
-A
-
-
-
-
-
-
-
-
-
-
-g
-n
-C
-y
-v
-Z
-
-
-k
-›
-
-
-
-
-
-
-
-
-
-:
-$
->
-
-
-
-
-
-
-
-
-
-p
-
-
-a
-@
-
-
-
-
-
-
-
-
-
-
-
-’
-R
-"
-
-
-
-
-
-
-‰
- :
-
- =
-–
-
-
-
-
-j
-ƒ
-
-‹
-
-
-†
-K
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-¿
-
-
-
-
-G
-
-
-
-M
-
-
-r
-
-
-
-
-
-
-
-
-‘
-
-
-
-
-
-
-“
-
-Q
-*
-
-x
-
-•
-,
-
-ˆ
-Œ
-
-
-W
-
-
-
-
-
-
-
-
-
- =
-–
-
-
-
-
-E
-
-
-
-
-
-
-—
-
-
-D
-
-z
-™
-
-
-
-
-o
-q
-
-
- P
-
-g
-.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/
-€
-
-
-
-
-
-
-
-C
-
-
-c
-
-
-"
-
-Y
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-C
-
-
-%
diff --git a/mt7603.IMD b/mt7603.IMD
deleted file mode 100755
index 939d5a4..0000000
--- a/mt7603.IMD
+++ b/dev/null
@@ -1,21 +0,0 @@
-’
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-g
diff --git a/mt7603.PFI b/mt7603.PFI
deleted file mode 100755
index 4a40666..0000000
--- a/mt7603.PFI
+++ b/dev/null
@@ -1,4 +0,0 @@
-X
-
-
-
diff --git a/mt7603.PO b/mt7603.PO
deleted file mode 100755
index f48346a..0000000
--- a/mt7603.PO
+++ b/dev/null
@@ -1,2 +0,0 @@
-1
-
diff --git a/mt7603.PR b/mt7603.PR
deleted file mode 100755
index 4bf0e70..0000000
--- a/mt7603.PR
+++ b/dev/null
@@ -1,49 +0,0 @@
-#
-
-
-
-
-
-
-
-
-
-
-
->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mt7603.PRI b/mt7603.PRI
deleted file mode 100755
index 0b316d0..0000000
--- a/mt7603.PRI
+++ b/dev/null
@@ -1,2384 +0,0 @@
-
-IFã3Vå²Ïß÷óû~¿¢ÿvˆ
- ("+€@€`` „
-H
-$
-÷ìEBüÄ>0¼§-â^Ñ-±*{uK%ë§/ ­˜®¸â‰´â@…
-b"
-
-‚
-`%I h
-
-
-¨Ü
-¡€ð4&0$PàÛÄÐ@„Rp¤P0$
-f
- A
-)
-j
- e
- &@
-
-’j=LT
-
-
-
-,
- à0
-D
-‚
-@ˆDBÜ
-q`¨„)‡
-B‹ €
-
- 
-
-2$i0ˆ¦Á ,€Å
-8€4
-
-’H@È P@
-²(!
-
-
-8B!â†
-
-
-
-
-
- ÍeCÜä06‡/r^ñ=9*9AÉ­ „« žú¸¾º` ÃHˆ
-
- 
-€@È!8
-@
-€
-@IP€”`D„ a%JÔD#
-
-б\>%9ah¾Àä‰Ö‘x¢&J)¾ƒP€
-
-
- ÝBY b
-
-€B
-@@
-˜@! –N
-
-
-0@0
-­ûo
-
-ŠP
--(6+
-$Áth@)¢¤ „® ‘€
-`‚
-
-D
-@D€¢
-À@
-
-
-
-
-¤P €€
-HÃ@"(ÁÃ)4„
-
-„8€
-
-
-€Ä–
-
-@
-
-
-
-¢H
-
-
-
-±I
-
-
-
-
-
-
-
-
-
-
-
-@
-$
-
-
-
-
-$
-
-À^ J
-Ý
-
-  
-˜
-0‚
-€
-:l
-À±#IТ?&±” eôt&
-
-
-
-
-
-
-
-
-
-
-
-‚
-
-
-
-
-
-€
-
-
-
-D#
-
-X@
-1 €
-R
-
- A'*Dm›*ð— [°“ÛÿÿlS!—Ô§<aËÐ… Â
-;R
-2BDpH0“"ºÌPƒK(‚$€ƒ  @!€d
-–
-
-@
-
-€
-!
-Dm0I[„ÀeÃH€
-
-@
-
-
-Et
-
-
-
-
-€
-Õb0
-€±
-€
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-D
-!
-
-
-@€A€
-
-[L P -,¶º"€F€°(€òð
-
-
-
-D
-(”
-
-@
-
-2ˆ pG
-
-
-Y ®0—Á˜iÕBõ{áŸ,߇'& dC€‡ÈjÀ€€
-`
-XÌ
-D[„¬Ô,–—£"vô,áöÁG›irr
-
-
- 
-
-€
-
-€ *
-åRb(Õ  A
- 
-
-2ZEB0
-
-
- @
-
-
-š!@d 
-„ €`™#Â
-Ú'“ThA
-$$BÃäŠH
-
-õÍ.dpwQ¿a
-MˆÙ°Õ¥šö‚$Xt©â.Vƒ6G —S7Ìg¢* Ë3Zb
-à *Ìbת‚ž8>‰%‹’M„ )
-²U‡þ§› f„•D¾ ƒàM«rðŸÄHWNð«R1°Â¨aW¤WO[É DÀÈc=¿ð£‰á‘}]™÷Pº?¡í¹J)ìü/h]Ó„ £\}éô4”}Y™ K[¶ÕÑ2?‘÷‰ýӬߟŸß-ÏöÐøɳN|õ,—L}«0Ή\•û~íÊÙ4¤S
-J™Á" ¶O
-€ Ô »DCР¥¥L+P (pVö+ƒ¸D¤€à,ÿСKHåö?8ö.^©b³ ¿ïÆÞ~¨ÿ¹ûÜö­ß«ýúïöW[+;ö·òþ/›ÿþè÷ÿŸŸ»Ö½&™[¢þ1ú(Qƒ1Â(¡%1¤†@0œFÒ”`Á¨K€!L¨ˆéL „NH C!@,*
-
-B
-
-Ï ’€"œ„
-ˆ
- 
- 
- B
-
-—i
-„Z0
-!
-€
-
- @6Š‰ˆ~‡²8I”ÕSñp/!÷7€•á 
-@
-#$±$  0’
-@
-
-
-
-€
-Î T 
- !i
-1T)
- €
-½  °,
-
-
-
-
-
-
-
-!
-
-
-
-@$
-
-
-€
-
-
-
-Ú€%a€*A{ 
-
-
-
-
-
-
-
-®°u²x
-B&ˆÂBƒÈODÔ
-
-€
-Œ€H
-€
-5b6×9T*LD@
-
-ˆ
-
-€
-@
-H¸á*Á©
-
-
-
-@
-
-
-D
-
-
-
-
-!‰jà
-)Š+
-@
-10
-
-(
-
-]Š‡8U‘1Sa¬ß†N-
-
-‚
-‘
-
-
-1
-
-@
-d‚H
-"À‚
-
-€
-å€ÜVß@'£€‘@
-
-
-€
-
-
-¥H
-
-Å
-
-(T*ˆ `¥
-
-@@@
-!0€
-
-
-AY ¡$
-
-
-„
-€ 
-Ip
-
-
-€Œ
-
-
-!
-
-Hӊ €
-
-
-
-
-@
-
-!
-D
-
-
-!
-$
- #AR
-
-
-
-
- =!
-
-ª(0€ )a¤Œ) (h,•”
-XøH@Y
-
-
-„h )6Öôkî ¬„„ȉDIĦ0
-¸lÍAp
-
-
-
-
-Z
-
-´é
-
-
-@
-
-
-!1!
-’
-@
-$‚€ 
-
-¡H
- ÊH
-
-1
-
-
-
-€
-
-
-
-
-
-
-
-
-À<
-^ç#x”ªý\%
-
-
-€
-@( €
-"T b–
-
-!
-
-€
-
-
-((A
-
-
-9a‚
-
-
-
-€
- dÀÖ´u‡”–
-
-
-$
-@
- P
-
-
-€$
-DA@€ 
- Ûò
-.¡ÆИª„"g Ò?†
-4
-
-J
-P‚
-@ Ä
-P D°õÙB ‚"(„R 
-
- @€
-
-< —4@)€Ô¨` ,fƒu <QD÷/CðÿïÛ½ßÜ£
-¸²ˆùcH€Rø =ºÿöîû÷=÷ï@0@@
-
-„
-
-
-
-
-
-
-U
-
-BH@,9ØÒu† ’¸
-
- B@€
- €
- 
-X
--n
-
-
-
-€d4A(@ pä
-
-‚@
-àÍrƒM%§Ð"
-
- ,@@
-T
-´  €@
-P@
-f
- 
-@ŒS¿€<¡H-@# ]RÁXÂa`„FÂx
-ð¹ï¿¿ýMPŒ„€˜ , 0Àb !H˜|ê³ÿÿÿ÷ûÿý#V
-
-
-0@@
-
-
-‰Òš$M€â¹= uý;¿óh7»×—oŽ¿bÅF€®’€Z@L‚„P
-
-^B
- ${©Lei¼²'§ò÷æ¡Þÿfä?Z6ú7 Ä„€A
-P€@
-H’€
- ‰B˜¤\Ìœ
-d2NG
-
-
-°6'‚às*<ßâvàW.åíæ 
-€
-
-
-
-
-
-
-
-€€0
-
-
-
-
-‰
-
-
-
-
-50@
-
-
-
-nö†éz­WÇg“
-
-`Œ-
-`À
-
-¿~…нþ:ÿ¿fïFæüýtÇ{?ZÃ\¬½ýêÿ)‹Ÿ”·âþ€w·ÖTô­À%ˆ
-@•Â0”
- „%¡* 5¤BDÁùŸP~¹Û¼ %%K#'$Ù4 IHm€`±á0I›)R³ @Yõb
-4°Ö‘µšùÿÿí¯ÿÿwû>«¼÷þq!Ë"@@„ 
-
- ‰
-\ ƒC(&QÂFHP€!HA&TWràÿ0ED` )ð@€
-@BÌFÂ
-
-
-
-$a„
-
-
-BB
-M)Rˆ¢z
-
-
-@
-
-!
-
-
-
-K?ÊYˇ{ý§
-„ =
-
-
-
-
-
-
-)` Rff
- $
- À
-
-
-‚
-
-
- n@È[„A§£$”P
-
-‚+`•4RbF –
-)
-
-
-@
-
-
-
-
-H
-
-
-
-D
-€@
-$Ë:¢‘»I’×ÿûñ‹¥Wä‡Ä5)çØÅ(N)DI!Ä
-
-€‚ `$!'B
-
-
-
-1
-
-
-F!Ai
-
-€
-
-
-tdwtåÒÁÙ÷‡D—
-
-¢€5’
-
-
-
-$
-@
-
-
-
-
- $)
-
-
-¨[È
-°n`€
-!
-
-9
-
- v@—îYA€
-
-
-
-
-
-
- €
-À p€
- 
-@
-P
-
-
-
-
-
-
-
-I€ À
-
-J!
-ª°3„þühîÏoeûáWj÷ûÆ
-
-ŽšP@
-
-BD
-
- @ۊl
-@
-"
-B
-I óÐ
- à8H„@@8
-‡@(ÆU‚1 „ €D
-
- €
-
-@
-!€‹‘¨ºSÂôPaŽ©–J”
-
-
-
-
-
-
-
-
-
-
-
- @€@€
-€
-dæ#
-
-
-0((
-
-
-@P„
-@
-
-  I"+Ä}!*¹Ç ˜)8Õ[÷sés¬•„'X!C
-lÀ!È
-€Cå
-ˆ`j ‚
-€
-
-
-
-
-
-
-
-
-
-Ù
-
-
-Q
-
- "äà0‹@äJ—Ä %)Ô"HF½Œ ‰þ !
-‘p‡
-
-„`"
-¨’kî÷ùºÿ@
-
-
-!d€É@€
-#`€AP
-€$€H€B
-at1ÀFŠq‡¡
-
-
-`@@‚€
-
- æ•ÁB‚E‡‡
-
-
- dÅ`@€
-
-
-
-
-BL€
-
-€
-
-
-@
-
-
-¡0ŠFI°
-
-
- "äà0‹@äJ—Ä %)Ô H@¹Œ ˆü !
-‘p‡
-
-„`"
-¨’kîçýº?ÿ@
-
-
-
-
-
-
-
-Hè
-
-<QÁ
-(&!C÷"Â D
-
-
-
- ƒ
-
-
-
-%‡
-
-ƒ@ ¸‚Y
-C
-
-‚
-B
-‚
-Ì|¡krù%àX(
-!
-H
-
-
-
-@
-
-
-
-àÉ *4„
-BP
-hRüOõÇ`›
-
-°—ÒP4X@"rÆ„P AA B€R€
-
-`
-
-
-
-@
- 
-
-
-
-
- €Ì
-„$ *QiDÀ
-
-
-
-
-
-
-@€A-€
-
-
-
-
-
-
-
-
-
- @
-
-
-
- 
-
-
-
-
-DkàHC@
-
-A”à … 
-
-¤
-
-`/
-
-
-
-
-¨ÑŽ4Œ
-
-
- 
-
-
- 
-„
-
-
-@©•
-" 
-À}G8C +-…DÖ
-
-
-
-
-
-°
-
-
-
-
-a@
-
-
-@
-
-
-
- `B
-€
-`’ c‰%‡@
-
-
-
-
-
-€
-€
-
-
-€
-
-IŽ@
-
-
-
-
-
-
-
-(
-
-ƒ°Bp‰¡ !4!¸$À ku;tÿÀkB< W-…;‚H þëÙ†’AŸÀ°‘8
-4`…
-@@ ”
- Qª
-4,ä
-H0 1!U˜bd€  PÐ|Æ$˜$"Ü
-èÿQÃÿa‹l`˜!ŠL€–¯h þûû¿\À®D
-€D
-
-P (
-¥Mد£ß¹¾xV¿þûï£ì½†mýûYÄ*%T
-8yg³=\
-x@‚!‚
- €
-0
-
- `
-2"  ^<Jø$4ÁAnS)$
-
-P
-
-
-
-  
-
- ƒpI*‚$·Q t¡°
-
-
-
-€€ˆ@
-
-
-
-
-
-
-a
-9"
-!
-
-
-
-
-el%ã{‚‹Wƒ@•
-~ÍrÖ
-
-
-X€ €
-@P
-!P†‚`
-!@
-"fJiE…@¡
-ð
-B
-X
-€
-
-
-
-@4
-
-
-
-I´@
-Ð
-
-
-
-P€(@€”<IUA
-
-
-
-
-
-
-
-H@
-
-@aDcSÂÁD“
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-„‰@À,@€€€
-@
-€1
-!*>Ô!<þªòw·þvÿïëßþ7?÷_o÷ûýGÙ÷8ÈÓ@I`
-
-
-"‚hJÐH
-D P€Ð%¥$È
-I°ˆ
-( P¡H
-F( #€
-
-
-ꄨüX€€
-
-
-$
-
-
-€@
-
-F}é³{Íçg£
-H
-"
-$"x€#`t°ˆH
-
-
-‚@
-1!D
-
-
-
-
- $"
-
-
-@p ƒ! bX@(@
-€
-"
-1
-
-†
-¢
-! @@
-
-
-
-~¤ !À€!&
-@
-
-€
-
-
-! H
-
-
-
-~ !@€!&Â
-D
-€
-†
-
-! @
-
-
-
-~ !@€ Ò
-@
-€
-
-€
-
-
-@
-
-
-A
-L>‚¬èÿÿ¿WzµøErDž¦_áËâ…ˆ ˜PÀ€
-
-P
-3! 
-„
-A
-@
-
-
-
-,‚á``@€€@$@
-D
-
-) ˆ  BÁ
-D
-F@ý/Ð
-
-
-
-
-
-$
-
-
-
-€
-
-–.ÁÍ
-
-
-
-
-
-
-
-
-„
-
-
-€!@€
-
-
-
-
-G€€p @
-À‡€0€
-@@’ä
-
-B €@
-
-BA"
-àW€
-
-P
-îê$T4$
-Ã
-
-€
-
-
-
-
-
-%
-¢JŠÂu
-
-
-$”@b
-
-
-
-b
-„ qf¬$wÀà,i#<¿ìG9¡’.ócT˜ˆÀQ@
-
-‚D
-Š$
-
-
-©²Æîýû5~WÊ
-€ÀÀ
-€`‚1
-0„
-
-$"
-J
-
-@
-
-
-
-¼#
-’€ @d0HD
-@d
-0‘Pƒ!ˆX µŒ@
-!
-¸ ‚@
- A2
-Äí‹*ù§¥•yÜ—Óÿûÿ®©ßÔŽ_mc’ç Z Rà˜
-A€E
-,o6¡\ƒ$ëÖ×n+ßÒ‰„xV”@"
-`
-P€‹
-
-a†@ F
-@@
-
-
-„¢
-€€0
-
-
-@
- D
-
-
- ´d
-
-
-
-
-
-
-
-
-Ä
-ŒP $
-D
-!
- V‚ÄIª“²²Ž•øóÁŽ¨_–.‘AA‚$
-
-
-€
-¨”
-@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-àI˜!àÀÈ
-
-€!PhI€AC@€°L
- ¢"”0ƒ@D@HB P  !D
-„
-VƒG!
-Œ"Q¨‚–*‰a
-‰€L„ „!
-¢Tÿ—€`
-JY’Ð"?ÑwùÓŒQ¨‹ÈVp¨I¢N|å Duª`ÎøWÁ»{DBX4 A
-é! ¡P 
-P
-P€J‰V(
-
-0
-
-
-x@$0
-k*LËçéJ`ùà‘ªº$­­¢Ê ¤  a%—Ø€q"lÀê::Â2b‚ 'B¸
-!€
-A
-DÁ`
-
-
- 
-
-Ø@ID†
-@
-!
-
- €!
-
-
-
-$0 A
-€ 
-
-€`
-Š‚
-€D
-
-Ð@
-@€
-
-
-
-
-¦“½1‹C
-P
-
-€
-
-
-`
-
-
-
-
-
-@1B
-P
-
-Tl€ (
-H
- À
-"x
-
-
-
-@ " B”|ÀH«Ú8% c:êÅ„²&1A d
-
-
-
-E
-
-
-˱1
-
-
-
-
-
-
-dvˆÀÛŒ `À
-
-
-
-
-
-
- I
-€
-@
- ‚X@
-†X£ s
-
-
-@
-
-*Œ
-
-€
-
-
-€@
-
-
-
-
-@€
-
-
-
-
-
-
-
-@
-
-‹
-
-X(0h €
-Ò
-
-
-àQ
-€
-
-)
-€
-
-
-™
-€
-
-€
-
-
-
-
-€2
-
-
- X
-€iB”
-P
-
-
-
-
-
-„
-”t @
-
-
-
-
-€$$
- 
- @
-
-
-€
-
- @ ‚
-
-
-@ 
-
-H Ð
-
-
-
-`
- 
-
-H Ð
-
-
-@ৠ
-
-
-
-H ‡ÁÒ€
-*
-
- 
-
-
-
-
-A€
-
-
-H€
-
-P
- B
-
-$"€  ƒ DH$
-
-€‚`
-
- 
-
-
-NˆAÜT þ3àk@¦Šd
-
-0
-€
-
-
-
-$
-
-
-
-
-
-
-
-1
-ü?€)
-@`
-B
-D !
-
-
-
-
-
-H ‡Á’€
-
- ‚
-
-
-
-
-
-᧠
-
-
-(‚
-$B
-
-
-
- 
-
-DD
-
-aÅi1
-B
-bL%
-4 P)E€@
-A
-ž4®AùDF&„@
-
-ˆ€
-
-
- B
-
-
-ä€@€
-
-
-
-`€
-
-d B.Áù_O/€È
-
-€
-
-
-
-
-
-
-
-
- 
-1
-À`
-
-
-$B
-
-
-
-$
-H
-
-
- €
-
-0…
-b!
-
-
-$B
-
-Q
-
-
-
-€
-$
-
-
-
-
-„LD
-
- DD
-
-
-3
-e‘
-* 
-
-$€(
-
-
-N I܉Âi
-
-
-
- $h¢3P"£,…B@
-
-
-×%! 0€‘h 
-
-
-@
-
-
-T`
-
-
-
-
-
-
-
-
-
-Al@[™DÐ
-€ PH
-Š‚
- 
-1#„€IN
- Àh
-
-
- %`
-
-
-4
-
-
-e«€•âú¼Ñß žŠQý‚/º™Ûò$þyÑÃæùàöüïýÿû¿{lTIl°Q¨Ã|n²Ö~)pñÕkì_
-eÖV+ÁG%ŠèY°ÝEw—Ÿ’ôž#ÝTL‰•]öï¥D‰ÄŠVá/ÆL«>`x´¼÷C7ðÞÀÞÂÒ­œ­|ÿÏFOlXÍDMö9žv[Ñ÷Á€as'–uÔ´6ÌÏozIûÿ˜zªxÏfV³ãíÜ;<ï?o°ëÿµù„Ť~6{¯ÒÆßûsT_ŠÍÃÞÌ;YV÷¿@½gÚ£qN]oß•Žu÷üTMs)ö·Ïý¼.ïZ‚cy¤Èo\Cê?i߶E¯Wÿý{ÆÏ{¦oV^)š¯õáî®ÿ¦Sl’Að5šÄðÇó©NϪ•ƒÆßw”Ð×
-ôÇì­¹COr7ÐË3ß'{Ú<žpðúLÓççW½‡zêÝ÷ÿòí÷}ßйöEýSþõß?¸×nßÏ÷îØ»ßã]ÿÞ^üþ_wË=[wþßî›þÕgÖüø¥_Ï>»½ÿnDýúþg«é¼ÝÕïÑü`³Qžæמ¿Ÿ§»v<&1ÌO¯¹õÚ܇ßÏ¥Bá¤fmR×õ¼V–®LÚ§Ö°]@äÙ,.L°àŨÜÂmP(2Iæ\öšJïËi=諉ÀÒÓXE,­Ó·@å8
-B tË¢Ò1ôÑÁABc2”Cnj;F°êl
-ËYç3€}~:\â4$ÀWôžgC4žl2¢Žáétì]u+¥?cZ-¿@«ûÅ9ð¿·A½ŽY´\Ñøe“’­ë½Ãà´7ýûÁWÝE£Ëà"ZÕV>©Ö¸¯¿ûçûsüzÙ¿ÿúý÷ÿçìû?¿uÿ/ÿïþ¿×þþïÿÿ÷^ßïÿû]§ÿ{Víö¾[¶¾<;»ýÈþºe7ï×¹$j/ÏzrêyåU™ë½­Ùã# åk÷íÑBAª8(w£áZ*XoTi"Væé2ý{—¾êcgÿ¤‹Mg×™Gx†¶8äï•ý6—ÿ/9]Æö}ve›¶è^Ùå»6u÷óV7Uï|Ÿí{£ï}ä™oÎîÒâ†h²ÖËŒ¦n}Ê—Ì4ã- ¢ë{è-r¯HNüA gÜ
-„IÑìÊ5Oêz-‰ë*ŸvO;×6Oúÿûÿç[GµúÿÎvÿïÖÛ~­»äþïþÿûß­ÿÿ>¬w÷¿ÿ¯þvÎkû›×ºûä­o¿Ü5D{žO€·~|Šd20ÚVAÌ”Ð!@Àìwd5A ¢(A §G @˜àH r…, ´L a²@”à!%
-@
- B@B
-L`µëúÏl)=Ó/9FëšÕj•Å¨«GYH ]¤¤±$Gµ“Ç“nË»ìT)‚Ãû¾6™4wÿã/Ë; 
- 
- €F 
-
-
-Œ›¨È
-
-
- d(F A ùE €
-
-
-
-
-€4
-
-
-
-EDÅP_SUp$
-QìQr
-
-
- Ê’O.€
-$H
-%ƒÀ
-‹(
-
-‚‚: 
-
- 
-¾P¿í‹b
-
-
- Àªµ‚`Q
-
-
-
- €
-
-
-ˆa
-
-
-
-
-
-
-
-
-
-
-0
-@
-
-` ÆX "
-
-
-
-I
-
-` BÁÿ(
-@
-’‚E
-
-€þGHS:•˜°°\ ÖŸ7ú{¦­ö? €P†‹
-
-‘
-
-H
-
-
-(€
-
-@B
-@
-JdUJJÂä°£X0ôZýyh'‰Ÿö‡E!dC ¥
-,VPa
-¦@
-/6h#‹¨­ÂLª’b
-„ @
-
-€B
-°
-~
- {4\+(%®¡%&†€-IÖЊ© * A
-
-
-A€
-€P 0
- €
-
-þÈP
-
-
-
-2€
-@
-
- @€
- 
-
-
-
-
-
-€
-
-
-€
-
-òÿ¤2
-A€O˜
- 0€
-‰D
-`|"
-2 (£
-€À
-
- $
-
-
-
-@
-
-
-
- 
-
-
-
-H
-B)
-
-
- @‚a"
-
-
-
-
-
-
-Z
-H
-
-
-
-t
-@
-
-
-
-B€
-
-
-
-L ˜$ @
-
-!€
-ô\˜
-D
-€
-
-@
-zWfƒ’4¡ÎÈš B
- ؆•Åÿ
-%",A€
-
-
-
-@ 
-
-
-à 
-
-
-„
-
-
-¥‡Dñ „€
-
-
-
-
-€
-
- 
-€
-
-
-
-D…+
-
-
-
-
-X}ÛÖ¹ííçd’@
- €(i
-
-
-€
-
- @€ 
-
-
-@
-
-
-
-(A*BI4D
-`jhS‚ WƒL“”
-
-
-
-
-
-@ &Ù
-
-DDT „
-h‚ÿßßÙÿ÷äÚ‚
-
-"„;é9§P5ö~…h×È’ðÞiå1²Œ
-¤€‰ ADA ppÑŠ%á
-Q
-`H$¡`
-
-0 @
-„¤
-„
-
-
-@
-€
-
-
-
-
-A€
-
-
-Jp  
-
-@0 
-H
-
-r$¢ !
-
-Y
-
-@
-
-
-
-
-
-(b
-#
-JDrd 0
-€
-
-@0 
-‹H
-$L(
-
-
-
-
-@
-
-
-@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @€
-
-
-
-
-% ‚
-€H”T
-a‚¶
-
-
-
-
-
-
- ˆ
-
-
-
-„¹(
-
-
-@
-
-%
-ˆ$„à
-
-
- ܥ
-€ p-
-
- 
-A
-
-„
-‰ €
-
- 
-
-
-
-
-
-@
-D
-(
-
-Á
-z
-
-
-
-
-
-
-
-@
- ˆ@
-‘Ž97
-
-(
-
-(H„
-
-0 cTP 
-@
-€!
-
-
-B
-
-CH@
-ªˆ
-dT
-h˜
-
-
-
-
-
-Ÿ]Å™å‡@€
-
-
-
-
- 
-!
-
-@
-
-
-`
-
-
-
-
-
-@
-
-
-‚
-
-@ˆ
-
-€
-
-€
-
-
- !€)¢€.Ô`
-gA
- @
-€ € €‚$
-
-
-(
- €
-@
- @€ 
-
-
-@
-€
-€'
-
-
-
-€4
-
-
-
-@
-
-
-
-
-P
-€€ ù
-uþWë^}µ§lÓ
-
-
-
-
-
-
-
-€€
-
-
-A
-
-
-
- 
-!
-€´€L(šÁ6tPjÁ)V
- 
- HD0,
-–
- ²3@
-
- $n + €FÀ„XN
-
-
-
-
-
-
-€„
-d‚H
-"À‚
-
-€@A
-
-
-‡ƒ
-!’
-#
-$ à’ˆ
-Dø @¹Ù%N±1—>V##)níIÕõ.ѵ÷ëbéÝ5ÅúøØÝ_ÛÜVuÏÞ+!ŒŠšÀ§`ÒuVJ­ÅIŠaA˜TT„DHˆ­
-„ „ÄéÀÀ¬ ¤ÀbH4‘Kq
-B #RE³`
-©Ni Lˆ"Q¬“zh>‰fˆ„mâ̬J! ¢UaÈ„e‘_
-‚ì—ÍíËïý?j÷¦!÷9¹ÿY÷ÿs¿¨ÿößØ]wyÚÇxºÒ†jbÂ4ƒF\0@É$„˜€@BÓ
-JZ Á 
-C‚
-Ì’¢€@hd–¬‰â.TH4Bˆ,"¨£ÔpHOŠ€Q„m‚¤@XPK ¬"ƒB6çdP0’Ž\y
-D
-
-$
-P
-(
-
-
-
-
-(€
-@ˆäÏ\P  
-=]F†€8€ª
- ­
- @@© ˜
-ä €I‘ @€
-(-~€39³‰œèåÞüu„§ŠZƒ„¤@ò
-
-‚ÁL¸
-‚B'‚D
-€
-
-
-
-
-€
-€
-
-
-„ ”ˆ1
- 
-
-
-
-" 
-
-
-
-
-
-1c€
-
-
-
-¦Ã (
-
-
-
-€À
-@0
-
-
-
-
-
-
-
-
-
-
-
-H
-•(Na„'†ñAÔI0‚P 
-
- 
-
-E
-
-
-
-"€
-"
-XrÁ¤19Þ ˜¦ß
-
-
-€(J„nD+ –``'’–,Àæ€6$Rt
-Af€
-
-q
- \ˆ@ÁPÂË0˜
- €
-€
-
- (
-
-
-
-
-
-
-
- ¨Ì
-
-
-
-¤=ÁfÕY
-€
-
-b<íï§ë}GÄÐ
-„!L)¢
-
-
- A
-
-@
-
-q³\í?0€­
-C
-€
-
-á‚ξÚõpä]
-@
-z€€ 
-ƒiE
-„C
-
-$jà!
-
-H
-ð
-B
-
-
-
-
-
-
-$
-@
-
-
-p~„HÚ†I§j
-
-
-
-
-
-
-“ŠJ
-
-!tÞí ÖY¥gÀš
-`
-
-
-
-
-
-“ŠJ
-
-!t^í ÆX¥g@š
-
-H 
-
-
-
-
-H
-
-i
-
-
-
-
-H
-
-
-
-
-
-tLWŒç§D’
- !@µSaà]†H€LÑ  LBP
-
-B
-
-
-
-
-
-
-
-
-ž%È šqA€Ö
-@ Pñ!4(A€Ð
-
-
-
-@
-@B
-B@x †X  ™:!Æ +$£C"4" 
-@
-
-
-
-
-
-@
-
-!
- €
-
-
-
-
-
-
-
-
-
-
-@àQS€
-
-
-
-E$`
-
-D€
- $
-
-@€0(
-,â
-
-@€HH€
-
-è‚A€F
-
-„„
-
-%ˆ
-@
-
-
-
-À
-
-
-
-€ð€0€
-
-
-ˆ3‰Xª"
-TD
-
-
-  
-⸠ýÉÂL” 0
-
-
-
-„
-
- 
-
-
-
-
-
-
-
-
-
- "`j€ 
-
-á}AËÿŒKe¥tö’
-À€
-  
- $
-
-@
-€P„„€
-
-
-L
-
-á~“ëÖÇ#}‡D’
- 
-
-ä0
-
-
-
-
-
-
-
-ˆ
-
-
-
diff --git a/mt7603.PS b/mt7603.PS
deleted file mode 100755
index 224e234..0000000
--- a/mt7603.PS
+++ b/dev/null
@@ -1,6706 +0,0 @@
-
-H
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Y
-
-
-
-gAcmMCS_HT
-
-StatusCode
-
-
-
-
-
-
-AcmOutTime
-AvalAdmCap
-
-
-
-AvalAdmCap
-
-
-Processing
-_ACM_IPHDR
-_ACM_IPHDR
-
-
-
-Identifier
-
-
-
-
-FlgTxopReq
-
-ACM_STREAM
-FlgOutLink
-PhyModeMin
-StreamType
-
-
-ACM_UP_MAX
-GNU_PACKED
-TIME_SIFSA
-TIME_SIFSG
-TXOP_Limit
-
-
-
-Processing
-
-FlgUapsdBE
-FlgUapsdBK
-FlgUapsdVI
-FlgUapsdVO
-TXOP_Limit
-StatusCode
-DelayBound
-MaxServInt
-MediumTime
-MinPhyRate
-MinServInt
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ACMR_DEBUG
-ACMR_HTONS
-
-
-
-AcUsedTime
-AvalAdmCap
-NumReqLink
-AcmOutTime
-ACM_EXTERN
-ACM_EXTERN
-
-ACM_RTN_OK
-FlgOutLink
-PhyModeMin
-StreamType
-_ACM_TCLAS
-_ACM_TCLAS
-PortSource
-
-
-_ACM_TSPEC
-_ACM_TSPEC
-DelayBound
-MaxServInt
-MediumTime
-MinPhyRate
-MinServInt
-
-
-
-
-
-
-
-
-
-
-
-TxTotalCnt
-
-
-
-
-
-
-
-
-
-
-
-
-BW_SETTING
-cmd_msg_cb
-CMD_MSG_CB
-EXT_CMD_NA
-FW_NO_INIT
-kickq_lock
-RX_RING_ID
-
-tx_sdio_ok
-AndesLedOP
-
-
- W
-
-
-
-
-
-
-
-
-AndesLedOP
-ucReserved
-
-
-ucBssIndex
-
-aucReserve
-
-ucTotalNum
-CoalesceOP
-PacketType
-BssidIndex
-WPAVersion
-GPIONumber
-PacketType
-TCPDstPort
-TCPSrcPort
-WiFiStream
-ucBssIndex
-ucReverved
-u2Reserve2
-ucReserve1
-ucSlotTime
-
-
-
-
-
-
-
-aucReserve
-ucExTenCID
-
-
-
-aucReserve
-ucBssidIdx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-u4RxFilter
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ucPmNumber
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-aucReserve
-
-
-
-
-
-
-
-
-
-
-
-
-aucReserve
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ucReserved
-
-
-
-
-
-
-
-
-
-
-
-
-
-aucReserve
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-u4Reserved
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-aucReserve
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ucSetQuery
-u4FuncData
-PKT_ID_CMD
-
-
-
-
-
-
-
-
-
-
-
-
-ucVaildBit
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-UsbLoadIvb
-BW_SETTING
-
-
-
-
-
-ApLogEvent
-
-
-APShutdown
-
-
-
-pEventText
-
-ApLogEvent
-ApLogEvent
-APShutdown
-
-
-
-
-
-
-
-
-APCli_Init
-ApCli_Open
-
-
-
-
-
-APCli_Init
-ApCli_Open
-
-
-
-
-
-RALINK_OUI
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-allCountry
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ADDBGPRINT
-
-
-
-
-ap_privtab
-iwpriv_cmd
-MBSS_Close
-MBSS_Close
-NINTO_INFO
-
-
-
-AvalAdmCap
-
-BSSIDENTRY
-
-channelset
-
-WDS_Remove
-_AP_WDS_H_
-
-
-WDS_Remove
-PACInquiry
-
-
-
-
-
-
-
-
-AteAllocVa
-AvgRssi0X8
-AvgRssi1X8
-AvgRssi2X8
-bAutoTxAlc
-bFWLoading
-bQAEnabled
-bQARxStart
-bQATxStart
-cmd_expire
-ControlChl
-OtherCount
-pAtePacket
-phy_mux_27
-RxTotalCnt
-
-RfRegWrite
-SampleRssi
-SetChannel
-StopTxTone
-ATE_RFTEST
-ATE_RXSTOP
-ATE_TXCARR
-ATE_TXCONT
-ATE_TXSTOP
-
-
-SetADCDump
-SetATEHelp
-
-
-SetATEShow
-
-SetATETxBw
-
-SetATETxGi
-SetBBPRead
-
-SetEEWrite
-SetRFWrite
-
-MT_ATEInit
-SetADCDump
-SetATEHelp
-SetATEShow
-SetATETxBw
-SetATETxGi
-SetATETxGi
-SetBBPRead
-SetEEWrite
-SetRFWrite
-
-
-
-
-TYPE_OTHER
-
-
-ba_dequeue
-ba_enqueue
-
-
-BT_DISABLE
-LinkStatus
-FDDRequest
-TDDRequest
-
-UpdateMode
-WLANStatus
-POWERSAVE0
-POWERSAVE1
-
-
-g_FWSeqMCU
-c
-
-
-
-
-
-
-
-
-
-
-curCalibId
-resultWork
-
-
-calib_proc
-
-
-file_entry
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CFG80211CB
-
-bInitiator
-
-EntryValid
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-GNU_PACKED
-
-FT_MIC_LEN
-IE_FT_FTIE
-IE_FT_MDIE
-
-
-TDLS_SETUP
-
-
-
-
-
-
-
-
-
-channelset
-
-
-
-
-
-_CH_POWER_
-_CH_POWER_
-
-_CH_REGION
-_CH_REGION
-
-
-N_SetCenCh
-PCH_REGION
-_CH_REGION
-TotalChNum
-TX_R_E_1_S
-TX_R_E_2_S
-mix_column
-
-
-
-
-
-
-
-AsicSetRDG
-
-
-
-
-
-
-
-
-
-
-
-
-
-AsicSetDPD
-AsicSetRDG
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-get_bw_str
-phy_bw_str
-
-
-
-set_fw_log
-
-
-
-
-
-
-
-
-
-
-APPLE_TALK
-
-
-
-dump_rxblk
-IP_HDR_LEN
-
-
-
-
-
-
-WCID_TABLE
-wcid_table
-
-dumpRxRing
-dumpTxRing
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-DBQ_LENGTH
-
-expSCTable
-impSCTable
-MatrixForm
-
-
-
-
-
-
-
-
-set_no_bcn
-
-
-
-%
-%
-ShowRFInfo
-
-RF_ALC_NUM
-
-
-
-
-
-
-
-
-
-BLK_PSPOLL
-
-
-
-
-
-
-
-
-MATProtoTb
-DHCP_MAGIC
-
-
-
-outMacAddr
-uIDAddByUs
-delimitcnt
-MC_CardMac
-ralinkrate
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RALINK_OUI
-GNU_PACKED
-GNU_PACKED
-GNU_PACKED
-GNU_PACKED
-
-
-
-
-
-
-
-groupShift
-handleBfFb
-rxBestSndg
-avgPhase32
-
-
-FIXED_M_PI
-maxCarrTab
-Read_BFRow
-
-
-CMDHandler
-
-
-
-
-
-
-
-
-
-
-
-
-OSEN_IELEN
-
-
-
-RTMPFindIE
-
-
-CAL_2_4G_R
-CH_BW20_40
-CIPHER_ADD
-
-
-auReserved
-ucBssIndex
-CMD_GET_PD
-
-
-CONTI_OFDM
-CONTI_RAMP
-CONTI_STOP
-DEVICE_USB
-Enable_Rx0
-Enable_Rx1
-Enable_Rx2
-Enable_Tx0
-Enable_Tx1
-Enable_Tx2
-
-
-
-EXT_CH_BW5
-aucReserve
-ucBssIndex
-ucReverved
-
-
-
-u4DataMode
-FwEventTxD
-ucSetQuery
-
-
-
-u4Override
-ucSetQuery
-ucSetQuery
-GNU_PACKED
-PacketSize
-!
-
-
-
-
-PacketSize
-
-
-
-MCAST_WCID
-MODE_EFUSE
-OPMODE_STA
-u4FuncData
-
-
-
-
-PID_BEACON
-PRXD_STRUC
-_RXD_STRUC
-RXV_HEADER
-RX_STASTIC
-PTXD_STRUC
-_TXD_STRUC
-PTX_STATUS
-"
-"
-PWTBL_4_AC
-_WTBL_4_AC
-
-
-
-
-
-
-_RXD_STRUC
-_RXD_STRUC
-Is802dot11
-MAC_LENOFS
-Reserved_2
-Reserved_3
-FirstCycle
-ThreeCycle
-RXV_HEADER
-RXV_HEADER
-RXV_HEADER
-HT_STF_DET
-cagc_state
-HT_shortgi
-RX_STASTIC
-FCSErr_CCK
-#
-RX_STASTIC
-RX_STASTIC
-SETCH_2_4G
-tmac_txd_0
-
-
-TMAC_TXD_0
-tmac_txd_0
-tmac_txd_1
-hdr_format
-TMAC_TXD_1
-tmac_txd_1
-tmac_txd_2
-ba_disable
-pwr_offset
-TMAC_TXD_2
-tmac_txd_2
-tmac_txd_3
-
-TMAC_TXD_3
-
-tmac_txd_3
-
-tmac_txd_4
-TMAC_TXD_4
-tmac_txd_4
-tmac_txd_5
-TMAC_TXD_5
-tmac_txd_5
-tmac_txd_6
-TMAC_TXD_6
-tmac_txd_6
-TWO_FOUR_G
-_TXD_STRUC
-_TXD_STRUC
-Is802dot11
-Reserved_1
-Reserved_2
-
-
-WLAN_Index
-$
-WTBL_1_DW0
-WTBL_1_DW1
-WTBL_1_DW2
-WTBL_1_DW3
-WTBL_1_DW4
-
-
-tid_5_sn_0
-tid_5_sn_5
-_WTBL_4_AC
-_WTBL_4_AC
-%
-%
-WTBL_BTCRn
-
-
-
-mic_key0_0
-mic_key0_1
-mic_key0_2
-mic_key0_3
-mic_key1_0
-mic_key1_1
-mic_key1_2
-mic_key1_3
-
-
-
-
-
-
-
-
->
-
-
-
-
-
-
-
-
-
-
-
-
-Const_Zero
-
-
-Default_IV
-
-GET_UINT32
-PUT_UINT32
-
-
-
-
-&
-
-aes_key_st
-
-
-
-
-
-
-
-
-
-
-
-
-DEBUGPRINT
-DEBUGPRINT
-currentvar
-
-
-
-BN_CTX_new
-
-bn_expand2
-bn_expand2
-
-
-
-BN_is_zero
-BN_MASK2h1
-
-
-'
-
-
-BN_rshift1
-BN_rshift1
-BN_set_bit
-
-
-
-
-
-
-
-
-bn_wexpand
-
-
-BODY_00_15
-BODY_16_19
-BODY_20_39
-BODY_40_59
-BODY_60_79
-
-
-DH_freeall
-DH_P_VALUE
-
-
-EVP_MD_CTX
-g_md_count
-HASH_FINAL
-HASH_FINAL
-HOST_c2l_p
-HOST_p_c2l
-
-
-mul_add_c2
-RAND_final
-
-
-
-
-SHA_CBLOCK
-SHA_LBLOCK
-sqr_add_c2
-STATE_SIZE
-DH_freeall
-DH_KEY_LEN
-
-(
-USE_SHA256
-
-
-RT_MD5_End
-
-RT_MD5_End
-MessageLen
-
-sha224_end
-
-
-sha256_end
-sha2_begin
-sha384_end
-sha512_end
-SWAP_BYTES
-MessageLen
-sha224_ctx
-sha224_end
-sha256_ctx
-MessageLen
-sha256_end
-sha2_begin
-)
-sha384_ctx
-sha384_end
-sha512_ctx
-sha512_end
-
-Rx_PE_Mask
-CheckCount
-
-
-CD_RECHECK
-CD_SILENCE
-CD_STATE_n
-CD_STATE_n
-
-
-alloc_time
-ExFreePool
-Encryption
-FeatureSet
-
-*
-
-QueueState
-WdmVersion
-WmiLibInfo
-
-
-bLoadingFW
-
-
-
-
-
-
-IODisabled
-
-
-MACVersion
-
-
-PortLength
-
-
-
-QueueState
-
-RxSpinLock
-
-
-
-
-
-UsageCount
-UsbTimeout
-WdmVersion
-WmiLibInfo
-BypassMode
-HybridMode
-USBRemoved
-USBStopped
-USBWorking
-+
-+
-
-_DFS_EVENT
-
-_DFS_EVENT
-
-
-DeltaDelay
-Rx_PE_Mask
-ENTRY_PLUS
-
-
-
-
-
-false_time
-
-
-
-
-
-NEW_DFS_EU
-PDFS_EVENT
-
-_DFS_EVENT
-
-
-
-
-
-
-
-,
-ChirpCheck
-DfsRssiLow
-DfsSwParam
-currentvar
-
-BN_CTX_new
-
-bn_expand2
-bn_expand2
-
-
-
-BN_is_zero
-BN_MASK2h1
-
-
-
-
-
-
-BN_rshift1
-BN_rshift1
-BN_set_bit
-
-
-
-
-
-
-
-
-bn_wexpand
-
-
-BODY_00_15
-BODY_16_19
-BODY_20_39
-BODY_40_59
-BODY_60_79
-
-
-DH_freeall
-DH_P_VALUE
-
-
-
-
-EVP_MD_CTX
-g_md_count
-HASH_FINAL
-HASH_FINAL
--
-HOST_c2l_p
-HOST_p_c2l
-mul_add_c2
-RAND_final
-
-
-
-
-SHA_CBLOCK
-SHA_LBLOCK
-sqr_add_c2
-STATE_SIZE
-DH_freeall
-DH_KEY_LEN
-
-
-
-
-
-
-
-
-
-DTXWI_SIZE
-
-RspEvtType
-.
-Reserved_1
-Reserved_3
-Reserved_4
-Reserved_5
-IE_VHT_CAP
-VHT_CAP_IE
-fb_tx_type
-fb_tx_type
-
-
-rx_mcs_map
-rx_mcs_map
-tx_mcs_map
-tx_mcs_map
-_VHT_OP_IE
-_VHT_OP_IE
-/
-EAPOLStart
-EAPOL_VER2
-identifier
-
-KeyDataLen
-
-
-
-
-KeyDescVer
-
-KeyDescVer
-
-
-
-
-
-
-LEN_AES_TK
-LEN_WEP128
-
-GNU_PACKED
-GNU_PACKED
-RSNIE_AUTH
-GNU_PACKED
-GNU_PACKED
-GNU_PACKED
-
-
-
-
-
-
-
-
-
-
-
-
-WPA_KDE_ID
-
-
-0
-GNU_PACKED
-
-
-
-
-GNU_PACKED
-BE_ACDelay
-BK_ACDelay
-VI_ACDelay
-VO_ACDelay
-GNU_PACKED
-
-
-GNU_PACKED
-RRM_PHY_HT
-GNU_PACKED
-
-GNU_PACKED
-
-1
-1
-1
-1
-1
-PeerStaMac
-GNU_PACKED
-ADD_HTINFO
-RecomWidth
-RecomWidth
-DualBeacon
-DualBeacon
-STBCBeacon
-STBCBeacon
-AddHtInfo2
-AddHtInfo3
-
-
-GNU_PACKED
-RDGSupport
-RDGSupport
-_HT_AS_CAP
-_HT_AS_CAP
-_HT_BF_CAP
-_HT_BF_CAP
-ExpNoComBF
-ExpNoComBF
-ht_rx_ldpc
-ht_rx_ldpc
-HT_MCS_SET
-2
-PHT_AS_CAP
-_HT_AS_CAP
-PHT_BF_CAP
-_HT_BF_CAP
-GNU_PACKED
-
-
-StatusCode
-GNU_PACKED
-FT_IGTK_ID
-GNU_PACKED
-
-FT_MIC_LEN
-StatusCode
-FT_R0KH_ID
-FT_R1KH_ID
-BaStartSeq
-
-
-
-IE_FT_FTIE
-IE_FT_MDIE
-PFT_ACTION
-
-
-_GAS_FRAME
-3
-_GAS_FRAME
-3
-GAS_CB_REQ
-GAS_CB_RSP
-
-StatusCode
-
-
-StatusCode
-
-PGAS_FRAME
-_GAS_FRAME
-PWNM_FRAME
-_WNM_FRAME
-TFS_NOTIFY
-_WNM_FRAME
-_WNM_FRAME
-RespStatus
-GNU_PACKED
-GNU_PACKED
-
-FT_MIC_LEN
-IE_FT_FTIE
-IE_FT_MDIE
-SwitchTime
-4
-GNU_PACKED
-GNU_PACKED
-GNU_PACKED
-5
-DebugPrint
-DriverInit
-PciAddress
-
-
-bAutoTxAgc
-
-RandomByte
-ReadMemory
-
-
-
-6
-FileHandle
-
-MACVersion
-MemorySize
-PowerState
-pPacketBuf
-RTMP_DMACB
-
-ScatterLen
-
-
-ScatterNum
-ScatterSht
-INV_TR_SW0
-WLAN_RESET
-INV_TR_SW0
-WLAN_RESET
-INV_TR_SW0
-WLAN_RESET
-INV_TR_SW0
-WLAN_RESET
-
-
-MlmeRAInit
-Rate1TxCnt
-Rate2TxCnt
-Rate3TxCnt
-7
-Rate4TxCnt
-Rate5TxCnt
-kalMemCopy
-
-LowerClock
-RaiseClock
-ReadEEprom
-
-
-8
-DACTestBit
-DACTestBit
-CoexMethod
-CoexMethod
-XtalOption
-CoexMethod
-CoexMethod
-XtalOption
-CoexMethod
-XtalOption
-CoexMethod
-XtalOption
-DeltaValue
-DeltaValue
-
-
-
-
-
-
-eFuseWrite
-eFuse_init
-9
-
-
-
-
-
-
-:
-XTAL_TRIM1
-LowerClock
-RaiseClock
-ReadEEprom
-
-eFuseWrite
-eFuse_init
-
-
-
-LowerClock
-RaiseClock
-EFUSE_CTRL
-
-EFSROM_AIN
-
-EFSROM_AIN
-MT_EE_CTRL
-
-
-aes_key_st
-
-
-
-_EVP_ENC_H
-
-
-;
-
-
-
-OTHER_PORT
-
-
-
-
-
-
-
-
-
-OTHER_PORT
-
-
-
-
-
-
-
-
-NORMAL_PKT
-rx_data_bw
-rx_data_gi
-tx_data_bw
-tx_data_gi
-
-
-RX_WCID_En
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-FT_GetMDIE
-FT_Release
-Set_FT_OTD
-Set_FT_RIC
-
-
-
-FT_GetMDIE
-<
-PeerIpAddr
-FT_Release
-CurrAPAddr
-Set_FT_OTD
-Set_FT_RIC
-
-
-bFtSupport
-
-
-FT_CAP_CFG
-
-
-=
-TimeUpdate
-_FT_RIC_AP
-_FT_RIC_AP
-FlgIsValid
-FT_KdpLock
-
-
-
-
-TargetAddr
-
-FT_REQ_ACT
-
-
-ˆ
-Œ
-
-
-SendGASReq
-SendGASRsp
-GAS_CB_REQ
-GAS_CB_RSP
-
-
-StatusCode
-
-
-StatusCode
-
-
-
-StatusCode
-
-
-StatusCode
-
-
-StatusCode
-
-StatusCode
-
-
-SendGASRsp
-GPIO10_SEL
-GPIO11_SEL
-GPIO12_SEL
-GPIO13_SEL
-GPIO14_SEL
-GPIO15_SEL
-GPIO16_SEL
-?
-GPIOPullUp
-GPIO_DOUT1
-__GPIO_H__
-GPIO_INPUT
-INPUT_HIGH
-NO_PULL_UP
-OUTPUT_LOW
-
-GetPhyRSSI
-GetPhyRSSI
-WL_RX_BUSY
-WL_TX_BUSY
-
-@
-E
-HSCtrlExit
-HSCtrlHalt
-HSCtrlInit
-
-
-ICMPv4Deny
-HSCtrlExit
-HSCtrlHalt
-HSCTRL_OFF
-
-
-
-
-
-
-A
-
-
-
-
-
-{anonaddr}
-B
-ipv6Addr16
-ipv6Addr32
-
-
-assoc_stat
-
-
-
-serial_num
-frame_type
-DlListInit
-
-
-C
-
-
-
-
-
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-_TXD_STRUC
-_TXD_STRUC
-_TXD_STRUC
-_TXD_STRUC
-IRPPending
-
-
-
-IRPPending
-
-bRingEmpty
-
-IRPPending
-
-MGMT_STRUC
-
-
-
-PTX_BUFFER
-
-D
-
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-RX_CONTEXT
-
-IRPPending
-
-
-TX_CONTEXT
-DataOffset
-IRPPending
-
-field_7601
-field_76xx
-EpoutValid
-EpoutValid
-EpoutValid
-field_7601
-field_76xx
-EpoutValid
-EpoutValid
-EpoutValid
-
-BitReverse
-
-DispPnpPCI
-DispPnpUSB
-
-DriverInit
-g_FWSeqMCU
-
-
-
-RandomByte
-ReadMemory
-E
-IS_GOOD_IP
-MAT_STRUCT
-
-IPMacTable
-PMAT_TABLE
-MCUSysExit
-MCUSysInit
-MCUSysExit
-MCUSysInit
-BitReverse
-
-
-
-
-
-
-
-
-GetMeshSeq
-GetMeshTTL
-
-
-
-ActionCode
-MESH_Close
-F
-
-
-
-
-GetMeshSeq
-GetMeshTTL
-
-
-
-MESH_Close
-__MESH_H__
-
-
-
-G
-
-
-BTYPE_MESH
-
-
-IE_MESH_ID
-IE_MESH_PU
-IE_MESH_TC
-Forwarding
-Forwarding
-DependAddr
-
-MESH_ENTRY
-_MESH_FLAG
-_MESH_FLAG
-
-_MESH_LINK
-_MESH_LINK
-LocalMsaIe
-H
-PeerLinkId
-
-
-
-NeighborMP
-NeighborNr
-
-MESH_POTAL
-DependAddr
-
-PortalRole
-PortalRole
-MESH_PROXY
-bPrecursor
-PathMetric
-
-
-
-RetryCount
-PMESH_FLAG
-_MESH_FLAG
-I
-PMESH_LINK
-_MESH_LINK
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-IS_MESH_IF
-PeerLinkId
-ReasonCode
-
-
-
-J
-PeerLinkId
-ReasonCode
-StatusCode
-PeerLinkId
-ReasonCode
-SupRateLen
-
-
-
-
-
-
-
-RTMPSetVHT
-DetectExec
-DetectExec
-DetectExec
-ApMlmeInit
-K
-
-
-ExtHtCapIe
-
-
-
-
-MlmeThread
-RALINK_OUI
-RandomByte
-RTMPMinSnr
-
-
-
-_AuthState
-AUTH_STATE
-_AuthState
-Compressed
-Compressed
-GNU_PACKED
-BA_CONTROL
-Compressed
-Compressed
-DtimPeriod
-ExtCapInfo
-ExtRateLen
-NewChannel
-SupRateLen
-vht_cap_ie
-vht_op_len
-L
-
-
-
-
-_BSS_ENTRY
-_BSS_ENTRY
-
-DeviceType
-DtimPeriod
-ExtCapInfo
-ExtRateLen
-SupRateLen
-vht_cap_ie
-vht_op_len
-CAP_IS_QOS
-NewChannel
-SwitchMode
-PairCipher
-CQI_IS_BAD
-DELBA_PARM
-EID_STRUCT
-ac_sta_cnt
-ac_sta_cnt
-DMSSupport
-DMSSupport
-FMSSupport
-FMSSupport
-M
-TFSSupport
-TFSSupport
-uapsd_coex
-uapsd_coex
-
-BaStartSeq
-
-StatusCode
-BarControl
-_FRAME_BAR
-_FRAME_BAR
-BarControl
-BARControl
-ReasonCode
-FRAME_MTBA
-PerTIDInfo
-
-
-Repetition
-CSAnnounce
-ExtCapInfo
-ht_cap_len
-vht_op_len
-BaStartSeq
-ListenIntv
-
-APEdcaParm
-APQbssLoad
-APRalinkIe
-AssocTimer
-N
-
-DtimPeriod
-ExtCapInfo
-ExtRateLen
-OldChannel
-
-ProbeTimer
-SsidBssTab
-SupRateLen
-vht_op_len
-
-
-__MLME_H__
-
-MLME_QUEUE
-Compressed
-Compressed
-
-ORIGINATOR
-PBSS_TABLE
-PEDCA_PARM
-PFRAME_BAR
-_FRAME_BAR
-O
-O
-QOSMAP_SET
-DSCP_Field
-RSSI_DELTA
-
-
-bVhtEnable
-
-RT_VHT_CAP
-vht_rxstbc
-vht_txstbc
-
-
-SEQ_LARGER
-P
-RecomWidth
-RecomWidth
-
-
-ralinkrate
-
-
-
-
-
-
-
-
-RF_VERSION
-Q
-
-
-
-
-
-
-
-
-
-
-R
-RF_PA_Mode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-S
-gm_gc_a_hg
-gm_gc_a_lg
-gm_gc_a_mg
-_MT_RF_REG
-_MT_RF_REG
-PMT_RF_REG
-_MT_RF_REG
-RFDIGI_SX7
-RFDIGI_SX8
-SX7_FRACES
-
-HIF_TX_NUM
-
-T
-
-
-
-
-
-MT_ATEInit
-
-
-MT_ATEStop
-
-
-
-U
-PCIE_RECAL
-
-
-THADC_SLOP
-V
-XTAL_TRIM1
-GPIOPullUp
-ENOUGH_BUF
-FORCE_MODE
-
-
-RG_FFA_THD
-W
-SCH_DBG0_0
-SCH_DBG_10
-SCH_DBG_11
-UDMA_RESET
-D2H_SW_INT
-IDATDLYCR1
-IDATDLYCR2
-W_FUNC_RDY
-X
-mac_cr_seg
-
-
-E2PROM_CSR
-
-
-
-
-P_IDX_LMAC
-Q_IDX_AC10
-Q_IDX_AC11
-Q_IDX_AC12
-Q_IDX_AC13
-Q_IDX_AC14
-rmac_rxd_0
-Y
-hdr_offset
-hdr_offset
-cls_bitmap
-cls_bitmap
-
-
-
-wpi_pn_128
-wpi_pn_128
-RXS_GROUP1
-RXS_GROUP2
-RXS_GROUP3
-RXS_GROUP4
-RXV_DWORD0
-RXV_DWORD1
-
-
-
-RXV_DWORD1
-
-
-_RXV_STRUC
-_RXV_STRUC
-_RXV_STRUC
-_RXV_STRUC
-RXWI_STRUC
-Z
-Fagc0EqCal
-Fgac1EqCal
-Fagc0EqCal
-Fagc1EqCal
-Fagc2EqCal
-Fagc2EqCal
-SecItfrEnv
-SecItfrEnv
-tmac_txd_0
-TMAC_TXD_0
-tmac_txd_0
-tmac_txd_0
-TMAC_TXD_0
-tmac_txd_0
-tmac_txd_1
-hdr_format
-TMAC_TXD_1
-tmac_txd_1
-tmac_txd_1
-hdr_format
-TMAC_TXD_1
-tmac_txd_1
-tmac_txd_2
-ba_disable
-
-
-[
-pwr_offset
-TMAC_TXD_2
-tmac_txd_2
-tmac_txd_2
-ba_disable
-pwr_offset
-TMAC_TXD_2
-tmac_txd_2
-tmac_txd_3
-
-TMAC_TXD_3
-
-tmac_txd_3
-
-tmac_txd_3
-
-TMAC_TXD_3
-
-tmac_txd_3
-
-tmac_txd_4
-TMAC_TXD_4
-tmac_txd_4
-tmac_txd_5
-TMAC_TXD_5
-tmac_txd_5
-tmac_txd_5
-TMAC_TXD_5
-tmac_txd_5
-tmac_txd_6
-TMAC_TXD_6
-tmac_txd_6
-tmac_txd_6
-TMAC_TXD_6
-tmac_txd_6
-tmac_txd_7
-TMAC_TXD_7
-tmac_txd_7
-tmac_txd_7
-TMAC_TXD_7
-tmac_txd_7
-TMAC_TXD_L
-TMAC_TXD_S
-
-
-
-
-
-field_init
-field_resp
-
-
-field_init
-field_resp
-\
-
-
-TXS2H_QID0
-TXS2H_QID1
-TXS2M_QID0
-TXS2M_QID1
-TXS2M_QID2
-TXS2M_QID3
-field_rcpi
-front_time
-tx_pwr_dBm
-tx_pwr_dBm
-field_rcpi
-front_time
-tx_pwr_dBm
-tx_pwr_dBm
-
-TXS_STATUS
-
-
-
-PktSubType
-_TXS_STRUC
-_TXS_STRUC
-PktSubType
-]
-TxSHandler
-TXS_UNUSED
-TXWI_STRUC
-wtbl_entry
-WTBL_ENTRY
-wtbl_entry
-XTAL_CTL13
-XTAL_CTL14
-
-
-MT_INTMASK
-MT_INT_CMD
-rx_dly_int
-tx_dly_int
-tx_done_10
-tx_done_11
-tx_done_12
-tx_done_13
-tx_done_15
-rx_dly_int
-
-
-tx_dly_int
-tx_done_10
-tx_done_11
-tx_done_12
-tx_done_13
-tx_done_15
-^
-rx_dly_int
-tx_dly_int
-tx_done_10
-tx_done_11
-tx_done_12
-tx_done_13
-tx_done_15
-rx_dly_int
-tx_dly_int
-tx_done_10
-tx_done_11
-tx_done_12
-tx_done_13
-tx_done_15
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-_TXD_STRUC
-_TXD_STRUC
-_TXD_STRUC
-_TXD_STRUC
-IRPPending
-_
-
-
-
-IRPPending
-
-
-bRingEmpty
-
-
-IRPPending
-
-MGMT_STRUC
-
-
-
-PTX_BUFFER
-
-
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-_RXD_STRUC
-RX_CONTEXT
-
-TX_CONTEXT
-DataOffset
-IRPPending
-
-field_7601
-field_76xx
-EpoutValid
-EpoutValid
-EpoutValid
-field_7601
-field_76xx
-EpoutValid
-`
-EpoutValid
-EpoutValid
-mt_phy_ops
-
-tssi_stage
-blockNetIf
-blockNetIf
-
-NfcCommand
-NfcCommand
-MT7603_RAM
-MT7636_RAM
-ASSOC_FAIL
-bbp32_info
-BSSID_INFO
-a
-ik_keydata
-DLS_FINISH
-
-
-
-key_length
-event_type
-
-
-ik_keydata
-ik_macaddr
-im_macaddr
-b
-EncrypType
-StatusCode
-NoOfPMKIDs
-ATIMWindow
-HopPattern
-
-
-
-
-
-
-
-
-SsidLength
-c
-RetryCount
-StatusType
-MacAddress
-
-
-MacAddress
-d
-
-
-
-
-
-PHY_11N_5G
-e
-
-
-
-
-
-
-
-
-
-
-
-qosmap_len
-radius_key
-
-
-
-SystemTime
-CurrTxRate
-f
-DeviceName
-LastRxRate
-
-
-
-ExtRateLen
-SupRateLen
-
-
-
-
-g
-
-
-ProfileCnt
-TransmitNo
-decodeDpid
-
-P2pCfgInit
-P2PCfgInit
-P2pConnect
-
-
-
-
-
-
-h
-
-P2POUIBYTE
-
-
-P2pSetRule
-P2pStopNoA
-
-P2pWpsDone
-P2P_GoStop
-P2P_Remove
-
-decodeDpid
-PerstEntry
-P2pCfgInit
-P2PCfgInit
-
-P2pConnect
-
-
-
-P2pSetRule
-P2pStartGo
-
-
-P2pStopNoA
-i
-P2pWpsDone
-P2P_CLI_ON
-P2P_CLI_UP
-P2P_GoStop
-P2P_Remove
-
-
-ConfigMode
-DeviceName
-
-
-APCli_Init
-ApCli_Open
-
-
-
-ƒ
-j
-
-P2POUIBYTE
-allCountry
-
-
-k
-
-
-
-
-
-
-
-
-,
-,
-IS_OPPS_ON
-
-
-
-
-l
-
-
-P2P_CLIENT
-
-
-
-
-bStartScan
-
-UserAccept
-P2P_DEVICE
-
-
-
-DeviceName
-P2P_INF_ON
-P2P_INVITE
-P2P_LISTEN
-m
-
-
-P2P_SEARCH
-bMixCipher
-PairCipher
-
-
-
-
-
-bSupport5G
-
-DeviceName
-LastRxTime
-
-StateCount
-bExtListen
-DeviceName
-n
-
-
-P2pControl
-P2pCounter
-P2pPhyMode
-P2p_OpMode
-PopUpIndex
-Wsc_Uuid_E
-assoc_addr
-bWfdClient
-
-
-
-
-
-PerstEntry
-
-Capability
-
-SwBasedNoA
-
-
-
-P2P_CLI_ON
-P2P_CLI_UP
-o
-
-
-DevDiscCnt
-
-
-
-P2POUIBYTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-__PARSER_H
-TXRXQ_PCNT
-US_CYC_CNT
-MiscModeEn
-MiscModeEn
-
-
-
-
-
-
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-
-ETH_DRV_SC
-ETH_DRV_SC
-
- =
-
-
-p
-bbp_set_bw
-NICInitBBP
-ShowAllBBP
-bbp_set_bw
-NICInitBBP
-bbp_set_bw
-ShowAllBBP
-RFIC_7610E
-RFIC_7610U
-RX_CHAIN_0
-RX_CHAIN_1
-RX_CHAIN_2
-ShowAllBBP
-
-
-
-
-q
-
-
-
-
-
-
-
-BLK_PSPOLL
-FC_RP2Q0Q1
-FC_SP2Q0Q1
-
-
-r
-
-
-
-
-
-HQA_SetDPD
-HQA_SetNss
-
-HQA_StopRx
-HQA_StopTx
-memcpy_exs
-
-CmdSetSize
-FCSErr_CCK
-s
-s
-bDFSIndoor
-CalBufTime
-
-it_present
-
-it_version
-
-
-
-
-
-
-
-
-INV_TR_SW1
-
-
-
-
-
-
-
-
-
-
-
-INV_TR_SW1
-
-
-
-
-
-
-
-
-AFH_END_CH
-
-
-
-
-
-
-AFH_END_CH
-
-
-
-
-
-CLK_ENABLE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-t
-
-
-
-
-
-
-CMD_PACKET
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-u
-RXFCE_INFO
-RXFCE_INFO
-bssid_idx3
-bssid_idx3
-_RXWI_NMAC
-_RXWI_NMAC
-_RXWI_NMAC
-bbp_rxinfo
-_RXWI_NMAC
-bbp_rxinfo
-
-
-_RXWI_XMAC
-_RXWI_XMAC
-_RXWI_XMAC
-_RXWI_XMAC
-v
-
-TSO_SEG_EN
-
-TSO_SEG_EN
-_TSO_INFO_
-_TSO_INFO_
-_TSO_INFO_
-_TSO_INFO_
-TxInfoQSEL
-txinfo_cmd
-txinfo_pkt
-_TXWI_NMAC
-_TXWI_NMAC
-_TXWI_NMAC
-NDPSndRate
-
-
-_TXWI_NMAC
-NDPSndRate
-_TXWI_XMAC
-_TXWI_XMAC
-_TXWI_XMAC
-NDPSndRate
-_TXWI_XMAC
-w
-NDPSndRate
-INV_TR_SW0
-WLAN_RESET
-INV_TR_SW0
-WLAN_RESET
-
-
-
-
-
-
-MAC_CLKSEL
-MAC_CLK_EN
-PBF_CLK_EN
-MAC_CLKSEL
-MAC_CLK_EN
-PBF_CLK_EN
-INT_RX_DLY
-INT_TX_DLY
-Ac0DmaDone
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-AutoWakeup
-rxCoherent
-RxDelayINT
-trCoherent
-txCoherent
-TxDelayINT
-x
-Ac0DmaDone
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-AutoWakeup
-rxCoherent
-RxDelayINT
-trCoherent
-txCoherent
-TxDelayINT
-RLT_INT_RX
-Ac0DmaDone
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-AutoWakeup
-rxCoherent
-RxDelayINT
-trCoherent
-txCoherent
-TxDelayINT
-Ac0DmaDone
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-AutoWakeup
-rxCoherent
-RxDelayINT
-trCoherent
-txCoherent
-TxDelayINT
-_RXWI_OMAC
-_RXWI_OMAC
-_RXWI_OMAC
-
-
-y
-_RXWI_OMAC
-TxInfoQSEL
-_TXWI_OMAC
-_TXWI_OMAC
-_TXWI_OMAC
-NDPSndRate
-_TXWI_OMAC
-NDPSndRate
-DMA_CLK_EN
-HST_PM_SEL
-MAC_CLK_EN
-PBF_CLK_EN
-DMA_CLK_EN
-HST_PM_SEL
-MAC_CLK_EN
-PBF_CLK_EN
-Ac0DmaDone
-
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-
-RxCoherent
-
-
-TxCoherent
-
-Ac0DmaDone
-
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-
-RxCoherent
-
-
-TxCoherent
-
-z
-Ac0DmaDone
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-AutoWakeup
-RxCoherent
-RxDelayINT
-TxCoherent
-TxDelayINT
-Ac0DmaDone
-Ac1DmaDone
-Ac2DmaDone
-Ac3DmaDone
-AutoWakeup
-RxCoherent
-RxDelayINT
-TxCoherent
-TxDelayINT
-RTMP_RxINT
-RX_CRX_IDX
-RX_DRX_IDX
-RX_MAX_CNT
-INTERNAL_1
-RF_BYPASS1
-RF_BYPASS2
-RF_BYPASS3
-
-
-MlmeRAInit
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rt2880_dev
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-ETH_DRV_SC
-{
-ETH_DRV_SC
-
-ETH_DRV_SC
-ETH_DRV_SC
-
- P
-AGG_AALCR1
-AGG_AWSCR1
-ARB_AIFSR0
-ARB_AIFSR1
-ARB_MSDR10
-ARB_MSDR11
-ARB_MSDR12
-ARB_MSDR13
-ARB_MSDR14
-ARB_MSDR15
-ARB_MSDR16
-ARB_MSDR17
-ARB_MSDR18
-ARB_MSDR19
-ARB_MSDR20
-ARB_MSDR21
-ARB_MSDR22
-ARB_MSDR23
-ARB_MSDR24
-ARB_MSDR25
-ARB_MSDR26
-ARB_MSDR27
-ARB_MSDR28
-
-
-
-HIF_CLIENT
-
-
-
-
-
-
-RA_EE_CTRL
-
-
-|
-RBIST_BASE
-
-
-
-RFLESelect
-RFRegValue
-RMAC_CB0R0
-RMAC_CB0R1
-RMAC_CB1R0
-RMAC_CB1R1
-RMAC_CB2R0
-RMAC_CB2R1
-RMAC_CB3R0
-RMAC_CB3R1
-addr_47_32
-TMAC_FP0R0
-TMAC_FP0R1
-TMAC_FP0R2
-TMAC_FP0R3
-TMAC_FP0R4
-TMAC_FP0R5
-TMAC_FP0R6
-TMAC_FP0R7
-TMAC_FP0R8
-TX_BT_SIZE
-
-
-
-WF_PF_BASE
-ACS_CENTER
-BN_CLICKED
-BN_DISABLE
-BST_PUSHED
-CF_DSPTEXT
-CF_OEMTEXT
-CF_PALETTE
-CF_PENDATA
-
-
-}
-CS_CLASSDC
-CS_DBLCLKS
-CS_HREDRAW
-CS_NOCLOSE
-CS_VREDRAW
-DTS_UPDOWN
-EM_CANUNDO
-EM_GETLINE
-EM_GETRECT
-EM_SETRECT
-FINDDLGORD
-FONTDLGORD
-HDS_HIDDEN
-HELP_TCARD
-HTTOPRIGHT
-ICON_SMALL
-
-
-IDCONTINUE
-IDH_CANCEL
-IDTRYAGAIN
-LANG_AZERI
-LANG_CZECH
-LANG_DUTCH
-LANG_FARSI
-LANG_GREEK
-LANG_HINDI
-LANG_KAZAK
-LANG_MALAY
-LANG_ORIYA
-LANG_TAMIL
-LANG_TATAR
-LANG_UZBEK
-~
-LVS_REPORT
-MK_CONTROL
-MK_LBUTTON
-MK_MBUTTON
-MK_RBUTTON
-NFS_BUTTON
-NFS_STATIC
-NF_REQUERY
-OBM_BTSIZE
-OBM_REDUCE
-OCR_ICOCUR
-OCR_NORMAL
-OCR_SIZENS
-OCR_SIZEWE
-OIC_SAMPLE
-PBS_SMOOTH
-SC_ARRANGE
-SC_DEFAULT
-SC_HSCROLL
-SC_KEYMENU
-SC_RESTORE
-SC_VSCROLL
-SMTO_BLOCK
-
-
-
-SW_RESTORE
-TBS_BOTTOM
-TCS_BOTTOM
-TTS_NOFADE
-VK_CAPITAL
-VK_CONTROL
-VK_CONVERT
-VK_DECIMAL
-VK_EXECUTE
-€
-VK_HANGEUL
-VK_LBUTTON
-VK_MBUTTON
-VK_NUMLOCK
-VK_NUMPAD0
-VK_NUMPAD1
-VK_NUMPAD2
-VK_NUMPAD3
-VK_NUMPAD4
-VK_NUMPAD5
-VK_NUMPAD6
-VK_NUMPAD7
-VK_NUMPAD8
-VK_NUMPAD9
-VK_OEM_102
-VK_OEM_PA1
-VK_OEM_PA2
-VK_OEM_PA3
-VK_RBUTTON
-WMSZ_RIGHT
-WM_AFXLAST
-WM_COMMAND
-WM_DESTROY
-WM_GETFONT
-WM_GETICON
-WM_GETTEXT
-WM_HSCROLL
-
-
-WM_KEYDOWN
-WM_KEYLAST
-WM_MDINEXT
-WM_MDITILE
-
-WM_NCPAINT
-
-
-WM_SETFONT
-WM_SETICON
-WM_SETTEXT
-WM_SYSCHAR
-WM_VSCROLL
-RF_CSR_CFG
-‚
-
-
-
-
-
-
-
-
-ChannelRep
-RRM_CONFIG
-MeasureCnt
-QuietState
-QuietTimer
-
-
-BTYPE_CNTL
-BTYPE_DATA
-BTYPE_MGMT
-
-
-„
-
-
-BBP_REG_BF
-RALINK2883
-RALINK2860
-RALINK2870
-RALINK2880
-
-
-RALINK3050
-RALINK3052
-RALINK3350
-RALINK30xx
-…
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RALINK3352
-RALINK33xx
-†
-BBP_REG_BF
-RALINK3593
-RALINK3062
-RALINK3562
-RALINK3572
-RALINK3592
-
-
-BBP_REG_BF
-RALINK3883
-‡
-RALINK5350
-
-
-
-
-RALINK5390
-RALINK5392
-
-
-
-MAC5592Reg
-
-
-
-
-
-
-
-
-RALINK5572
-RALINK5592
-
-
-
-
-
-
-
-
-
-
-
-
-RALINK6352
-‰
-DEFAULT_BO
-RF_PA_Mode
-
-RALINK6570
-RALINK6590
-
-
-
-
-
-rf_init_tb
-
-
-
-
-RT85592_E1
-RT85592_E2
-RT85592_E3
-
-
-
-
-
-AntCfgInit
-
-AuthReqCnt
-bMixCipher
-bP2pClient
-
-CfgSsidLen
-MacTabWCID
-
-PairCipher
-WscControl
-
-APPLE_TALK
-
-
-
-
-DtimPeriod
-RssiSample
-HighTxMode
-TxLifeTime
-‹
-AsicSetDPD
-AsicSetRDG
-,
-,
-
-
-ORIBATimer
-LastIndSeq
-RECBATimer
-
-bBcnSntReq
-cap_ie_pos
-BeaconTxWI
-BSS_STRUCT
-
-
-
-
-HostapdWPS
-PMKIDCache
-REKEYTimer
-TimBitmaps
-timer_loop
-
-
-
-
-
-WscControl
-
-
-
-
-
-
-
-ExtraIeLen
-P2pExtRate
-
-
-P2pSupRate
-
-
-
-
-vifDevList
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CipherName
-CMDHandler
-
-
-
-APEdcaParm
-APQbssLoad
-bACMAPSDTr
-bAPSDAC_BE
-bAPSDAC_BK
-bAPSDAC_VI
-bAPSDAC_VO
-bBADecline
-
-
-bHTProtect
-
-
-
-
-
-
-
-
-Chip_VerID
-
-
-
-
-
-
-
-
-
-
-
-
-DebugFlags
-
-
-DesireRate
-
-
-
-
-
-
-
-
-
-
-ExtRateLen
-HT_Disable
-IOTestParm
-
-
-
-
-ManualTxop
-
-
-
-
-
-
-
-
-
-
-
-
-
-pTpcReqTab
-
-
-SkuChannel
-StreamMode
-
-
-
-
-
-
-
-
-SupRateLen
-
-
-
-
-TxPreamble
-vht_cap_ie
-vht_sgi_80
-
-
-
-
-RetryCount
-RxNoBuffer
-PlcpErrCnt
-TxAggCount
-CountryNum
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-deq_called
-pse_pg_cnt
-TxAMPDUCnt
-TxSWQueCnt
-target_que
-DEQUE_INFO
-_DMS_ENTRY
-_DMS_ENTRY
-1
-1
-dump_rxblk
-bDoAutoWps
-bEnableWAC
-ModuleType
-
-
-
-WpsPinCode
-SSIDStrLen
-.
-.
-ExtHtCapIe
-
-
-
-
-get_bw_str
-handleBfFb
-HTIOTCheck
-hw_setting
-cur_ch_pwr
-
-
-
-_IOT_STRUC
-
-_IOT_STRUC
-
-createTime
-
-identifier
-
-
-IS_HT_RATE
-IS_VHT_STA
-LinkUpExec
-
-
-
-
-load_patch
-_MAC_TABLE
-_MAC_TABLE
-‘
-sta_status
-bAPSDAllAC
-bestMethod
-bf0RateIdx
-bf1RateIdx
-bP2pClient
-bWfdClient
-curAvgRSSI
-CurrTxRate
-DeviceName
-DMSSupport
-
-fewPktsCnt
-freqOffset
-FT_UCipher
-hwTxRtyCnt
-hwTxSucCnt
-
-
-
-
-LastRxRate
-LastTxRate
-LegalMfbRS
-
-
-perThrdAdj
-
-
-pRateTable
-
-ReqbtmData
-RetryTimer
-RssiSample
-RXBAbitmap
-’
-
-
-TXBAbitmap
-TxSndgLock
-TxSndgType
-UAPSDQueue
-UAPSDTxNum
-vht_cap_ie
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-
-
-LocalMSCIE
-MeshPreqID
-
-ActMachine
-ApAuthFunc
-“
-ApSyncFunc
-BTMMachine
-DlsMachine
-GASMachine
-HSCtrlFunc
-RealRxPath
-WpaMachine
-WscMachine
-MONITOR_ON
-MONITOR_ON
-
-
-
-
-
-#
-#
-
-
-
-
-MemberList
-
-Event_Mask
-P2P_Status
-
-Cipher_Alg
-
-
-
-”
-PACInquiry
-
-
-
-
-
-
-PDMS_ENTRY
-_DMS_ENTRY
-PeerBeacon
-PeerBeacon
-
-
-PKT_ATE_ON
-PKT_TX_JAM
-PMAC_TABLE
-_MAC_TABLE
-
-
-
-
-
-
-
-•
-
-
-
-
-
-PS_CONTROL
-AMDNewPSOn
-
-
-
-
-
-
-PWDS_ENTRY
-_WDS_ENTRY
-PWDS_TABLE
-_WDS_TABLE
-
-
-
-
-
-
-
-_TX_CTRL_T
-
-BAOriEntry
-BARecEntry
-RALINK_OUI
-RandomByte
-AuthReqCnt
-MacTabWCID
-RTMPAddKey
-–
-
-
-
-
-RTMPMinSnr
-
-AcmAvalCap
-assebQueue
-
-
-
-
-
-
-BeaconTxWI
-
-
-bLinkAdapt
-bPCIclkOff
-BulkInLock
-—
-BulkOutReq
-
-BusyDegree
-cal_atomic
-ChBndryIdx
-CmdRspLock
-DiagStruct
-e2pCurMode
-EthConvert
-ExtCapInfo
-FT_RicLock
-
-
-
-
-HASH_BSSID
-
-
-HostVendor
-LastMCUCmd
-LastRxRate
-LastTxRate
-MacTabLock
-MACVersion
-
-McuCmdLock
-
-
-NicConfig2
-NicConfig3
-P2PChannel
-
-
-
-
-RECBATimer
-reg_atomic
-RxDescRing
-RxRingLock
-serial_num
-shortretry
-ShrMemLock
-TimerQLock
-
-
-TxAgcStepA
-TxAgcStepG
-TxBufSpace
-TxContext2
-TxDescRing
-WdsTabLock
-WlanEnLock
-WlanEnLock
-wmm_cw_max
-wmm_cw_min
-
-
-
-
-
-
-™
-RTMP_DMACB
-LastBDInfo
-__RTMP_H__
-
-
-
-
-
-
-
-
-bRoundDone
-pTrainInfo
-trainStage
-antPattern
-antPattern
-candWeight
-preSNRDist
-txNoRtyCnt
-
-
-antPattern
-pAgspEntry
-
-
-
-
-
-
-WdsCounter
-rxBestSndg
-hw_rx_info
-pRxFceInfo
-pTransData
-set_fw_log
-set_no_bcn
-›
-0
-0
-ShowRFInfo
-bStaChange
-candMethod
-saMcsBound
-trainDelay
-trainEntry
-SSID_EQUAL
-
-ExtCapInfo
-ExtRateLen
-SupRateLen
-
-
-
-
-
-
-
-bMixCipher
-
-
-
-
-
-
-DtimPeriod
-
-
-
-
-OriDevType
-PairCipher
-RPIDensity
-RssiSample
-
-
-
-WscControl
-
-
-
-
-
-
-
-
-
-Changeable
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-bestMethod
-bf0RateIdx
-bf1RateIdx
-CurrTxRate
-EospNullUp
-
-
-
-ps_qbitmap
-RXBAbitmap
-TokenCount
-TXBAbitmap
-TxSndgLock
-TxSndgType
-TC10_INDEX
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-bTimSntReq
-
-
-
-ApCliIfidx
-
-
-
-
-
-
-hw_rsv_len
-
-
-
-MpduReqNum
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-_TX_CTRL_T
-_TX_CTRL_T
-u4PageSize
-BW20Over5G
-BW40Over5G
-
-
-UAPSD_INFO
-
-
-
-RxNoBuffer
-_WDS_ENTRY
-_WDS_ENTRY
-_WDS_TABLE
-_WDS_TABLE
-CurrTxRate
-
-
-RssiSample
-sys_handle
-WOW_BITMAP
-
-
-WOW_ENABLE
-WOW_WAKEUP
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-WscPBCExec
-
-BAOriEntry
-BARecEntry
-
-
-
-
-
-
-
-
-DataIndex1
-DataIndex1
-DataIndex2
-DataIndex2
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-MAX_BBP_ID
-
-
-
-
-
-IQCalValue
-BMC_ENABLE
-BURST_READ
-
-
-IQ_CAL_TX0
-IQ_CAL_TX1
-IS_MT7601U
-IS_MT7602E
-IS_MT7603E
-IS_MT7603U
-IS_MT7610E
-IS_MT7610U
-IS_MT7612E
-IS_MT7612U
-IS_MT7630E
-IS_MT7630U
-IS_MT7632E
-IS_MT7632U
-IS_MT7636U
-IS_MT7650E
-IS_MT7650U
-IS_MT7662E
-IS_MT7662U
-IS_MT76x0E
-IS_MT76x0U
-IS_MT76x2E
-IS_MT76x2U
-IS_PCI_INF
-IS_RT3052B
-IS_RT3090A
-IS_RT5370G
-IS_RT5390D
-IS_RT5390F
-IS_RT5390H
-IS_RT5390R
-IS_RT5390U
-IS_RT5392C
-IS_USB_INF
-
-
-MTK_REV_LT
-MT_REV_GTE
-PDMA_TX_RX
-ba_max_cnt
-
-dlm_offset
-ilm_offset
-MBSSIDMode
-MTTxPwrCap
-PAModeOFDM
-RFIndexNum
-SnrFormula
-
-
-tssi_stage
-
-
-
-AsicRfInit
-BurstWrite
-RandomRead
-
-RT_REV_GTE
-mix_column
-
-
-
-beacon_ies
-probe_resp
-
-
-
-ap_isolate
-FlgIs8021x
-
-
-
-
-
-rx_packets
-tx_packets
-tx_retries
-
-vifNameLen
-
-
-EnqueueCmd
-
-OS_RTCMDUp
-priv_flags
-priv_flags
-
-
-priv_flags
-
-priv_flags
-
-
-FlgHaveGTK
-
-collisions
-
-rx_packets
-tx_packets
-
-
-ExtRateLen
-SupRateLen
-
-
-
-
-priv_flags
-
-FlgAnySsid
-
-pTimerTask
-LENGTH_CRC
-
-
-MODE_HTMIX
-OPMODE_STA
-
-RFIC_24GHZ
-
-{anondata}
-
-
-
-
-
-
-
-
-
-
-ADDBA_RESP
-
-
-ASSOC_IDLE
-BSSID_WCID
-CIPHER_AES
-CIPHER_BIP
-ENTRY_MESH
-ENTRY_NONE
-ENTRY_TDLS
-
-
-
-
-HT_ATHEROS
-IE_ADD_HT2
-IE_CF_PARM
-IE_COUNTRY
-IE_DS_PARM
-IE_FH_PARM
-IE_HT_CAP2
-IE_WFA_WSC
-IFS_HTTXOP
-INT_MBSSID
-IWSC_START
-LONG_RETRY
-MAX_AID_BA
-
-
-MCAST_OFDM
-MCAST_WCID
-MCSFBK_MRQ
-MCSFBK_RSV
-MCS_RATE_6
-MCS_RATE_9
-NORMAL_ACK
-NUM_OF_TID
-
-PHY_CAP_2G
-PHY_CAP_5G
-PHY_CAP_AC
-POWERSAVE0
-POWERSAVE1
-PWR_ACTIVE
-
-
-RSSI_IDX_0
-RSSI_IDX_1
-RSSI_IDX_2
-
-
-
-
-
-
-
-
-
-
-
-
-RXSTBC_ONE
-RXSTBC_THR
-RXSTBC_TWO
-SPEC_TPCRP
-SPEC_TPCRQ
-TXRATEMIMO
-TXRATEOFDM
-VALID_MBSS
-VALID_WCID
-VHT_BW_160
-
-
-
-WMODE_COMP
-txop_limit
-HT_CONTROL
-PRTS_FRAME
-_RTS_FRAME
-_RTS_FRAME
-_RTS_FRAME
-rbusConfig
-
-
-AntCfgInit
-
-
-
-
-CipherName
-CMDHandler
-
-
-load_patch
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CTS40MMode
-
-CTS40MMode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-bBeaconGen
-
-
-bBeaconGen
-CLIENT_ETH
-CLIENT_STA
-
-
-
-
-E2PROM_CSR
-
-
-
-
-
-
-
-LoadStatus
-
-
-
-
-
-
-
-
-LoadStatus
-
-
-
-
-
-
-
-
-
-
-
-
-HTMCS10FBK
-HTMCS11FBK
-HTMCS12FBK
-HTMCS13FBK
-HTMCS14FBK
-HTMCS15FBK
-
-HTMCS10FBK
-HTMCS11FBK
-HTMCS12FBK
-HTMCS13FBK
-HTMCS14FBK
-HTMCS15FBK
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CCKMCS0FBK
-CCKMCS1FBK
-CCKMCS2FBK
-CCKMCS3FBK
-
-CCKMCS0FBK
-CCKMCS1FBK
-CCKMCS2FBK
-CCKMCS3FBK
-MBssBcnNum
-NMBssMode2
-NMBssMode3
-MBssBcnNum
-NMBssMode2
-NMBssMode3
-
-
-ProtectNav
-ProtectNav
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RXWI_STRUC
-DropCRCErr
-DropPhyErr
-DropPsPoll
-DropVerErr
-
-
-DropCRCErr
-DropPhyErr
-DropPsPoll
-DropVerErr
-
-
-
-
-TBTT_TIMER
-TXWI_STRUC
-TX_AGG_CNT
-
-HTMCS16FBK
-HTMCS17FBK
-HTMCS18FBK
-HTMCS19FBK
-
-HTMCS16FBK
-HTMCS17FBK
-HTMCS18FBK
-HTMCS19FBK
-
-HTMCS20FBK
-HTMCS21FBK
-HTMCS22FBK
-HTMCS23FBK
-
-HTMCS20FBK
-HTMCS21FBK
-HTMCS22FBK
-HTMCS23FBK
-AggTxCount
-AggTxCount
-TX_PIN_CFG
-TX_RTS_CFG
-TX_RTY_CFG
-AggRtyMode
-AggRtyMode
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-TX_SW_CFG0
-
-
-TX_SW_CFG1
-TX_SW_CFG2
-
-
-
-
-
-
-AutoTxbfEn
-AutoTxbfEn
-EtxbfFbkEn
-EtxbfFbkEn
-EtxbfFbkNg
-EtxbfFbkNg
-EtxbfForce
-EtxbfForce
-ItxbfForce
-ItxbfForce
-
-
-
-
-
-
-
-WAPIKeyIdx
-
-
-
-
-
-
-
-
-
-
-WAPIKeyIdx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-get_wstats
-iw_handler
-priv_flags
-taskStatus
-thread_obj
-PCI_EECTRL
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RXMAX_PINT
-
-TXMAX_PINT
-
-RXMAX_PINT
-
-TXMAX_PINT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-TimerValue
-GNU_PACKED
-priv_flags
-sys_handle
-WiFiStream
-PR_M_W_REG
-_R_M_W_REG
-_R_M_W_REG
-_R_M_W_REG
-NT_SUCCESS
-RX_BULKINQ
-
-
-
-
-
-
-
-
-
-
-
-
-KeyTabFlag
-KeyTabFlag
-KeyTabFlag
-
-
-
-
-
-InsertTssi
-
-RALINK2860
-RALINK2870
-RALINK2880
-RALINK2883
-RALINK3050
-RALINK3052
-RALINK3062
-RALINK30xx
-RALINK3350
-RALINK3352
-RALINK33xx
-RALINK3562
-RALINK3572
-RALINK3592
-RALINK3593
-RALINK3883
-RALINK5350
-RALINK5390
-RALINK5392
-RALINK5572
-RALINK5592
-RALINK6352
-RALINK6570
-RALINK6590
-
-
-
-
-
-tssi_slope
-AteAllocVa
-AvgRssi0X8
-AvgRssi1X8
-AvgRssi2X8
-bAutoTxAlc
-bDPDEnable
-bFWLoading
-bQAEnabled
-bQARxStart
-bQATxStart
-LastRxRate
-LastTxRate
-OtherCount
-pAtePacket
-RxTotalCnt
-ATE_TXCARR
-ATE_TXCONT
-
-
-
-HIGH_BYTE0
-HIGH_BYTE1
-InsertTssi
-LEN_OF_ARG
-
-
-
-
-
-¿
-
-
-
-FillChList
-N_SetCenCh
-TotalChNum
-atomic_dec
-DBGPRINT_S
-DBGPRINT_S
-EOPNOTSUPP
-ETH_P_IPV6
-FlashWrite
-KERN_EMERG
-apd_pid_nr
-IappPid_nr
-
-
-PNET_IOCTL
-POS_COOKIE
-RA_NETLINK
-
-RTMP_OS_FD
-
-
-
-
-
-SeqDstAddr
-SeqSrcAddr
-
-
-
-
-
-
-
-
-
-
-
-completion
-DBGPRINT_S
-DBGPRINT_S
-ETH_P_IPV6
-FlashWrite
-GFP_ATOMIC
-GFP_KERNEL
-IWEVCUSTOM
-
-iwreq_data
-KERN_EMERG
-apd_pid_nr
-IappPid_nr
-
-
-
-
-PCI_DEVICE
-POS_COOKIE
-
-
-
-taskStatus
-RTMP_OS_FD
-
-
-
-CurrAPAddr
-THREAD_PID
-time_after
-BEN_TC_ACT
-
-RTMPSetLED
-
-SetLedMode
-
-ACTIVE_LOW
-LED_AG_CFG
-_LED_CFG_T
-_LED_CFG_T
-G_LED_MODE
-G_LED_MODE
-R_LED_MODE
-R_LED_MODE
-Y_LED_MODE
-Y_LED_MODE
-
-
-
-
-MCULedCntl
-
-LedActMode
-MAC_LED_ON
-
-PLED_CFG_T
-_LED_CFG_T
-RTMPSetLED
-SetLedMode
-LinkStatus
-RestPeriod
-FlashWrite
-
-
-
-
-
-OS_SET_BIT
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-RtmpOsWait
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-BRIDGE_TAG
-DBGPRINT_S
-DBGPRINT_S
-FlashWrite
-apd_pid_nr
-IappPid_nr
-
-
-
-
-OS_FS_INFO
-PCI_DEVICE
-PNET_IOCTL
-POS_COOKIE
-RA_NETLINK
-
-
-
-RTMP_OS_FD
-
-
-
-
-
-rtusb_exit
-rtusb_init
-
-
-def_to_str
-_OS_RSTRUC
-_OS_RSTRUC
-RtmpMLMEUp
-RtmpMLMEUp
-
-WLAN_TX_IN
-
-
-
-ip_sum_str
-
-RtmpDrvOps
-
-
-tcp_hdrlen
-
-
-
-
-
-
-
-
-
-
-
-taskStatus
-
-
-
-RalinkRate
-
-APPLE_TALK
-
-
-FlgIsBMode
-OS_SET_BIT
-ralinkrate
-
-
-RtmpOsWait
-
-
-
-
-
-
-
-procRegDir
-
-
-def_to_str
-prefix_map
-
-
-
-BubbleSort
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-memcpy_exl
-memcpy_exs
-cmdSetSize
-
-AvgRssi0X8
-AvgRssi1X8
-AvgRssi2X8
-RxTotalCnt
-command_id
-
-ATE_RXSTOP
-ATE_TXSTOP
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-A
- :
-
-
-atomic_dec
-atomic_inc
-atomic_set
-RALINK_OUI
-
-RtmpMSleep
-
-
-
-atomic_dec
-atomic_inc
-atomic_set
-completion
-
-DBGPRINT_S
-DBGPRINT_S
-dataToggle
-
-
-stop_count
-zeroPacket
-free_pipes
-ETH_P_IPV6
-GFP_ATOMIC
-GFP_KERNEL
-IWEVCUSTOM
-iwreq_data
-KERN_EMERG
-
-
-
-PNET_IOCTL
-POS_COOKIE
-
-
-
-
-RTMP_OS_FD
-
-
-CurrAPAddr
-
-
-THREAD_PID
-time_after
-USB_DEVICE
-
-
-
-
-E1aHighBeg
-E1aHighEnd
-E0aHighBeg
-E0aHighEnd
-E1aHighBeg
-E1aHighEnd
-E0aHighBeg
-E0aHighEnd
-E1aHighBeg
-E1aHighEnd
-
-impProfile
-
-
-
-DBGPRINT_S
-DBGPRINT_S
-GFP_ATOMIC
-GFP_KERNEL
-iwreq_data
-
-
-POS_COOKIE
-
-TimerValue
-CurrAPAddr
-
-
-
-
-FlashWrite
-
-m_data_put
-
-
-RtmpMSleep
-
-
-
-
-
-
-
-BRIDGE_TAG
-completion
-DBGPRINT_S
-DBGPRINT_S
-ETH_P_IPV6
-ETH_P_IPV6
-FlashWrite
-GFP_ATOMIC
-GFP_KERNEL
-IWEVCUSTOM
-iwreq_data
-KERN_EMERG
-m_data_put
-
-
-pMclMemPtr
-PNET_IOCTL
-POS_COOKIE
-RtmpMSleep
-
-
-taskStatus
-RTMP_OS_FD
-
-
-
-
-
-CurrAPAddr
-THREAD_PID
-time_after
-USB_DEVICE
-INC_TX_TSC
-
-
-ZONE_ERROR
-RALINK_OUI
-
-
-RtmpSAExit
-RtmpSAInit
-RtmpSAStop
-rtstrtomac
-
-
-
-SA_GPIO_72
-SA_GPIO_73
-SA_GPIO_74
-SA_GPIO_75
-SA_GPIO_76
-SA_GPIO_77
-SA_GPIO_78
-SA_GPIO_79
-SA_GPIO_80
-SA_GPIO_81
-SA_GPIO_82
-SA_GPIO_83
-SA_HDR_PIN
-
-RtmpSAExit
-RtmpSAInit
-RtmpSAStop
-DOT_11_HDR
-PRISM_TYPE
-
-
-file_entry
-
-softq_proc
-
-
-
-
-
-TX_PWR_CFG
-
-ChannelSet
-GNU_PACKED
-
-GNU_PACKED
-
-ReportMode
-ReportType
-GNU_PACKED
-GNU_PACKED
-
-GNU_PACKED
-QUIET_INFO
-RM_CH_LOAD
-RM_TPC_REQ
-LinkMargin
-CKIP_KP_ON
-STA_AES_ON
-STA_WEP_ON
-
-RTMPAddKey
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-ralinkrate
-
-
-rt_handler
-G
-
-
-
-
-
-
-
-
-INCLUDE_AP
-
-
-
-
-
-
-
-
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-INCLUDE_HS
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-fnStripCmd
-
-fnStripCmd
-INCLUDE_AP
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-PeerBeacon
-
-
-
-
-
-wifi_power
-
-SYWSC_STOP
-SY_CONTROL
-
-P2POUIBYTE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-channelset
-
-
-
-
-bConnected
-bFirstTime
-RetryCount
-
-
-
-TDLS_STATE
-
-
-
-bInitiator
-
-
-ExtRateLen
-SupRateLen
-TdlsExtCap
-
-RetryCount
-
-
-
-TDLS_Ioctl
-TDLS_Ioctl
-
-
-
-
-
-
-EEPROM_SEL
-GET_FW_VER
-GET_HW_VER
-
-
-
-
-__TxRx_H__
-
-
-A_BAND_LOW
-DEFAULT_BO
-G_BAND_LOW
-G_BAND_MID
-UAPSD_Init
-
-
-
-
-
-UAPSD_Init
-
-rtusb_exit
-rtusb_init
-
-
-
-
-
-
-
-DSCOPE_CTL
-DSCOPE_STS
-
-
-vht_ch_80M
-ch_low_bnd
-
-
-
-__WAPI_H__
-ASCII_MODE
-as_cert_no
-
-wapi_as_ip
-
-
-HEADER_WAI
-
-
-
-
-
-
-
-
-
-ifname_len
-
-
-
-
-PWAPI_CONF
-_WAPI_CONF
-GNU_PACKED
-capability
-GNU_PACKED
-_WAPI_CONF
-_WAPI_CONF
-SMS4KeyExt
-SMS4KeyExt
-
-
-
-
-
-
-
-
-
-
-OUISubType
-P2PACT_NOA
-WfdCfgInit
-WfdCfgInit
-
-
-
-
-bWfdEnable
-DeviceType
-
-
-
-DeviceType
-DeviceType
-assoc_addr
-bWfdClient
-
-WFD_PC_P2P
-DeviceAddr
-DeviceAddr
-WfdDevInfo
-WfdDevInfo
-WFD_SOURCE
-AGG_AALCR1
-AGG_AWSCR1
-SPE_DIS_TH
-ARB_AIFSR0
-ARB_AIFSR1
-DMA_TMCFR0
-TXS2H_TOUT
-TXS2M_TOUT
-LPON_BCNTR
-LPON_BTEIR
-LPON_T0STR
-LPON_T1STR
-LPON_TCLCR
-LPON_TFRSR
-LPON_TIMTR
-LPON_TSELR
-LPON_UTTR0
-LPON_UTTR1
-MIB_MPBSCR
-MIB_MSDR10
-MIB_MSDR11
-MIB_MSDR12
-MIB_MSDR14
-MIB_MSDR15
-MIB_MSDR16
-MIB_MSDR17
-MIB_MSDR18
-MIB_MSDR22
-MIB_MSDR23
-WF_PF_BASE
-CR_RXTD_39
-CR_TSSI_13
-CR_TXFE1_3
-CR_TXFE1_4
-GREEN_MODE
-ht_ext_ltf
-MIXED_MODE
-
-
-
-aci_detect
-
-cags_state
-RMAC_ACBEN
-RMAC_CB0R0
-RMAC_CB0R1
-RMAC_CB1R0
-RMAC_CB1R1
-RMAC_CB2R0
-RMAC_CB2R1
-RMAC_CB3R0
-RMAC_CB3R1
-addr_47_32
-
-
-addr_39_32
-addr_47_40
-
-RMAC_RFCR1
-RST_BA_SEL
-RST_BA_TID
-GET_APS_EN
-I2T_CHK_EN
-TMAC_FP0R0
-TMAC_FP0R1
-TMAC_FP0R2
-TMAC_FP0R3
-TMAC_FP0R4
-TMAC_PCTSR
-TMAC_QNCR0
-TMAC_QNCR1
-TMAC_QNCR2
-TMAC_QNCR3
-TMAC_QNCR4
-TX_RIFS_EN
-WTBL_2_DW0
-WTBL_2_DW1
-WTBL_2_DW1
-WTBL_2_DW2
-WTBL_2_DW2
-WTBL_2_DW3
-tid_5_sn_0
-WTBL_2_DW3
-tid_5_sn_0
-WTBL_2_DW4
-tid_5_sn_5
-WTBL_2_DW4
-tid_5_sn_5
-WTBL_2_DW5
-WTBL_2_DW5
-WTBL_2_DW6
-WTBL_2_DW6
-WTBL_2_DW7
-WTBL_2_DW7
-WTBL_2_DW8
-WTBL_2_DW8
-WTBL_2_DW9
-WTBL_2_DW9
-wtbl_2_d10
-wtbl_2_d11
-wtbl_2_d12
-wtbl_2_d13
-wtbl_2_d14
-wtbl_2_d15
-cipher_128
-cipher_256
-cipher_wep
-cipher_wpi
-
-
-
-mic_key0_0
-mic_key0_1
-mic_key0_2
-mic_key0_3
-mic_key1_0
-mic_key1_1
-mic_key1_2
-mic_key1_3
-
-
-RX_MV_MODE
-PSM_W_FLAG
-WTBL_1_DW0
-WTBL_1_DW0
-WTBL_1_DW1
-WTBL_1_DW2
-WTBL_1_DW2
-WTBL_1_DW3
-
-WTBL_1_DW3
-
-WTBL_1_DW4
-WTBL_1_DW4
-WTBL_BRCRn
-WTBL_BTCRn
-VendorDesc
-
-
-
-
-
-
-
-
-link_local
-
-
-SendBTMReq
-SendBTMRsp
-
-
-
-
-
-
-
-
-
-
-IS_WNM_DMS
-WNM_Action
-TimezoneIE
-
-
-WNM_CONFIG
-
-
-
-
-INC_TX_TSC
-
-
-RTMPFindIE
-AS_INITPMK
-AS_INITPSK
-CIPHER_KEY
-ucBssIndex
-ucReverved
-PMKID_LIST
-NoPairwise
-TIME_REKEY
-CFG_commit
-CFG_commit
-CFG_str2id
-CFG_str2id
-RALINK_OUI
-
-
-
-
-WscPBCExec
-
-C
-
-
-
-_EAP_FRAME
-_EAP_FRAME
-_IWSC_INFO
-_IWSC_INFO
-
-bDoNotStop
-bLimitedUI
-bSinglePIN
-
-IpDevCount
-
-
-
-
-
-
-
-RegMacAddr
-
-
-PEAP_FRAME
-_EAP_FRAME
-PIWSC_INFO
-_IWSC_INFO
-PWSC_FRAME
-_WSC_FRAME
-msgSubType
-
-
-
-WPA2PSKAES
-WPAPSKTKIP
-bSetupLock
-EapolTimer
-EntryIfIdx
-
-
-
-
-
-
-
-
-
-
-
-
-
-WscLEDMode
-WscPeerMAC
-WscPinCode
-WscProfile
-WscUseUPnP
-Wsc_Uuid_E
-AssocState
-DeviceName
-
-
-
-_WSC_FRAME
-_WSC_FRAME
-VendorType
-
-
-WSC_MSG_M1
-
-
-WSC_MSG_M2
-WSC_MSG_M3
-WSC_MSG_M4
-WSC_MSG_M5
-WSC_MSG_M6
-WSC_MSG_M7
-WSC_MSG_M8
-WscPeerMAC
-KeyWrapKey
-PinCodeLen
-ReciveTime
-
-StaMacAddr
-
-WSC_UUID_T
-bWpsEnable
-
-
-WscGenPSK1
-WscGenPSK2
-wsc_tlv_0b
-
-
-WSC_TLV_0B
diff --git a/mt7603.SearchResults b/mt7603.SearchResults
deleted file mode 100755
index 03f560e..0000000
--- a/mt7603.SearchResults
+++ b/dev/null
@@ -1,28 +0,0 @@
----- HW_BEACON_MAX_COUNT Matches (13 in 6 files) ----
-Ap_connect.c (ap):1787
- for (i=0; i<HW_BEACON_MAX_COUNT(pAd); i++)
-Cmm_mac_usb.c (common):2753
- for(i=0; i < HW_BEACON_MAX_COUNT(pAd); i++)
-Cmm_mac_usb.c (common):2802
- for(i=0; i<HW_BEACON_MAX_COUNT(pAd); i++)
-Mt_mac.c (mac):1642
- for (apidx = 0; apidx < HW_BEACON_MAX_COUNT(pAd); apidx++)
-Rtmp_def.h (include):573
-#define HW_BEACON_MAX_COUNT 16
-Rtmp_def.h (include):585
-#define HW_BEACON_MAX_COUNT 8
-#define MAX_MBSSID_NUM (HW_BEACON_MAX_COUNT - MAX_MESH_NUM - MAX_APCLI_NUM)
-Rtmp_def.h (include):590
-#define HW_BEACON_MAX_COUNT 8
-Rtmp_def.h (include):597
-#define HW_BEACON_MAX_COUNT(__pAd) ((__pAd)->chipCap.BcnMaxHwNum)
-Rtmp_def.h (include):599
-#define HW_BEACON_MAX_COUNT(__pAd) 8
-Rtmp_mac.c (mac):2133
- for (apidx = 0; apidx < HW_BEACON_MAX_COUNT(pAd); apidx++)
-Rtmp_mac.c (mac):2136
- // TODO: shiang-6590, if we didn't define MBSS_SUPPORT, the pAd->BeaconOffset[x] may set as 0 when chipCap.BcnMaxHwNum != HW_BEACON_MAX_COUNT
-Rtmp_mac.h (include\mac\mac_ral):2426
-/*#define HW_BEACON_MAX_COUNT 16 */
-Rtmp_mac.h (include\mac\mac_ral):2453
-/*#define HW_BEACON_MAX_COUNT 8 */
diff --git a/mt7603.WK3 b/mt7603.WK3
deleted file mode 100755
index 017886a..0000000
--- a/mt7603.WK3
+++ b/dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-CONFIG_P2P
-
-CONFIG_LPS
-
diff --git a/os/linux/Makefile b/os/linux/Makefile
new file mode 100755
index 0000000..36b239a
--- a/dev/null
+++ b/os/linux/Makefile
@@ -0,0 +1,1747 @@
+include $(RT28xx_DIR)/os/linux/config.mk
+
+obj_ap :=
+obj_sta :=
+obj_p2p :=
+obj_wsc :=
+obj_vht :=
+obj_cmm := \
+ ../../common/crypt_md5.o\
+ ../../common/crypt_sha2.o\
+ ../../common/crypt_hmac.o\
+ ../../common/crypt_aes.o\
+ ../../common/crypt_arc4.o\
+ ../../common/mlme.o\
+ ../../common/cmm_wep.o\
+ ../../common/action.o\
+ ../../common/cmm_data.o\
+ ../../common/rtmp_init.o\
+ ../../common/rtmp_init_inf.o\
+ ../../common/cmm_tkip.o\
+ ../../common/cmm_aes.o\
+ ../../common/cmm_sync.o\
+ ../../common/eeprom.o\
+ ../../common/cmm_sanity.o\
+ ../../common/cmm_info.o\
+ ../../common/cmm_cfg.o\
+ ../../common/cmm_wpa.o\
+ ../../common/cmm_radar.o\
+ ../../common/spectrum.o\
+ ../../common/rtmp_timer.o\
+ ../../common/rt_channel.o\
+ ../../common/cmm_profile.o\
+ ../../common/scan.o\
+ ../../common/cmm_cmd.o\
+ ../../common/ps.o\
+ ../../common/sys_log.o\
+ ../../common/txpower.o\
+ ../../rate_ctrl/ra_ctrl.o\
+ ../../rate_ctrl/alg_legacy.o\
+ ../../rate_ctrl/alg_ags.o\
+ ../../chips/rtmp_chip.o\
+ ../../mgmt/mgmt_hw.o\
+ ../../mgmt/mgmt_entrytb.o\
+ ../../tx_rx/wdev.o\
+ ../../tx_rx/wdev_tx.o\
+ ../../tx_rx/wdev_rx.o\
+ ../../os/linux/rt_profile.o
+
+
+#########################################
+# ASIC related source files
+#########################################
+obj_mac :=
+obj_phy := ../../phy/phy.o\
+ ../../phy/rf.o
+
+ifeq ($(HAS_RTMP_BBP),y)
+obj_phy += ../../phy/rtmp_phy.o
+endif
+
+ifeq ($(HAS_RLT_BBP),y)
+obj_phy += ../../phy/rlt_phy.o
+endif
+
+ifeq ($(HAS_MT_BBP),y)
+obj_phy += ../../phy/mt_phy.o
+endif
+
+ifeq ($(HAS_MT_RF),y)
+obj_phy += ../../phy/mt_rf.o
+endif
+
+ifeq ($(HAS_RLT_RF),y)
+obj_phy += ../../phy/rlt_rf.o
+endif
+
+ifeq ($(HAS_RT_RF),y)
+obj_phy += ../../phy/rt_rf.o
+endif
+
+ifeq ($(HAS_MAC_PCI),y)
+obj_mac += ../../common/cmm_mac_pci.o\
+ ../../common/cmm_data_pci.o\
+ ../../os/linux/rt_rbus_pci_drv.o\
+ ../../hif/hif_pci.o
+
+ifeq ($(HAS_ATE),y)
+#obj_mac += ../../ate/inf/ate_pci.o
+endif
+
+ifeq ($(OSABL),NO)
+obj_mac += \
+ ../../os/linux/rt_pci_rbus.o\
+ ../../os/linux/rt_rbus_pci_util.o
+endif
+endif
+
+ifeq ($(HAS_MAC_USB),y)
+obj_mac += ../../common/cmm_mac_usb.o
+endif
+
+ifeq ($(HAS_MAC_SDIO),y)
+obj_mac += ../../common/cmm_mac_sdio.o
+endif
+
+ifeq ($(HAS_RLT_MAC),y)
+obj_mac += ../../hw_ctrl/cmm_asic.o
+obj_mac += ../../mac/rtmp_mac.o
+obj_mac += ../../mac/ral_nmac.o
+obj_mac += ../../common/ral_ps.o
+endif
+
+ifeq ($(HAS_RTMP_MAC),y)
+obj_mac += ../../hw_ctrl/cmm_asic.o
+obj_mac += ../../mac/rtmp_mac.o
+obj_mac += ../../mac/ral_omac.o
+obj_mac += ../../common/ral_ps.o
+endif
+
+ifeq ($(HAS_MT_MAC),y)
+obj_mac += ../../hw_ctrl/cmm_asic_mt.o
+obj_mac += ../../hw_ctrl/cmm_chip_mt.o
+obj_mac += ../../hw_ctrl/mt_gpio.o
+obj_mac += ../../mac/mt_mac.o
+obj_mac += ../../common/mt_ps.o
+obj_mac += ../../common/mt_io.o
+obj_mac += ../../tx_rx/txs.o
+endif
+
+
+#########################################
+# Itnterface related source files
+#########################################
+obj_inf :=
+ifeq ($(HAS_INF_USB),y)
+obj_inf += ../../common/cmm_mac_usb.o\
+ ../../common/rtusb_data.o\
+ ../../common/cmm_usb_io.o\
+ ../../common/cmm_data_usb.o\
+ ../../common/rtusb_bulk.o\
+ ../../os/linux/rt_usb.o
+
+ifeq ($(HAS_RTMP_MAC),y)
+obj_inf += ../../common/rtusb_io.o
+endif
+
+ifeq ($(HAS_RLT_MAC),y)
+obj_inf += ../../common/rtusb_io.o
+endif
+
+ifeq ($(HAS_MT_MAC),y)
+obj_inf += ../../common/mtusb_io.o
+endif
+
+ifeq ($(OSABL),NO)
+obj_inf += ../../common/rtusb_dev_id.o\
+ ../../os/linux/rt_usb_util.o\
+ ../../os/linux/usb_main_dev.o
+endif
+
+ifeq ($(HAS_ATE),y)
+obj_inf += ../../ate/inf/ate_usb.o
+endif
+endif
+
+ifeq ($(HAS_INF_SDIO),y)
+obj_inf += ../../os/linux/rt_sdio.o\
+ ../../common/mtsdio_io.o\
+ ../../common/mtsdio_data.o\
+ ../../common/cmm_data_sdio.o\
+ ../../os/linux/sdio_main_dev.o
+endif
+ifeq ($(HAS_MAC_USB),y)
+
+endif
+
+ifeq ($(HAS_INF_PCI),y)
+ifeq ($(OSABL),NO)
+obj_inf += ../../os/linux/pci_main_dev.o
+endif
+endif
+
+ifeq ($(HAS_INF_RBUS),y)
+ifeq ($(OSABL),NO)
+obj_inf += ../../os/linux/rbus_main_dev.o
+endif
+endif
+
+obj_cmm += $(obj_phy) $(obj_mac) $(obj_inf)
+
+#########################################
+# System Feature related source files
+#########################################
+
+ifeq ($(HAS_UAPSD_SUPPORT),y)
+obj_cmm += ../../common/uapsd.o
+endif
+
+ifeq ($(HAS_BLOCK_NET_IF),y)
+obj_cmm += ../../common/netif_block.o
+endif
+
+ifeq ($(HAS_NEW_RATE_ADAPT_SUPPORT),y)
+obj_cmm += ../../rate_ctrl/alg_grp.o
+endif
+
+ifeq ($(HAS_RATE_ADAPT_AGS_SUPPORT),y)
+obj_cmm += ../../rate_ctrl/alg_ags.o
+endif
+
+ifeq ($(HAS_DFS_SUPPORT),y)
+obj_cmm += ../../common/cmm_dfs.o
+endif
+
+ifeq ($(HAS_CS_SUPPORT),y)
+obj_cmm += ../../common/cmm_cs.o
+endif
+
+#ifdef LED_CONTROL_SUPPORT
+ifeq ($(HAS_LED_CONTROL_SUPPORT),y)
+obj_cmm += ../../common/rt_led.o
+endif
+#endif // LED_CONTROL_SUPPORT //
+
+#ifdef ANDES_FIRMWARE_SUPPORT
+ifeq ($(HAS_ANDES_FIRMWARE_SUPPORT),y)
+obj_cmm += ../../mcu/rtmp_and.o
+endif
+#endif /* ANDES_FIRMWARE_SUPPORT */
+
+#ifdef WAPI_SUPPORT
+ifeq ($(HAS_WAPI_SUPPORT),y)
+obj_cmm += ../../common/wapi.o
+obj_cmm += ../../common/wapi_crypt.o
+obj_cmm += ../../common/wapi_sms4.o
+endif
+#endif // WAPI_SUPPORT //
+
+#ifdef DOT11K_RRM_SUPPORT
+ifeq ($(HAS_DOT11K_RRM_SUPPORT),y)
+obj_cmm += \
+ ../../common/rrm_tlv.o\
+ ../../common/rrm_sanity.o\
+ ../../common/rrm.o
+endif
+#endif // DOT11K_RRM_SUPPORT //
+
+#ifdef DOT11V_WNM_SUPPORT
+ifeq ($(HAS_DOT11V_WNM_SUPPORT),y)
+obj_cmm += \
+ ../../common/wnm_tlv.o\
+ ../../common/wnm.o
+endif
+#endif // DOT11V_WNM_SUPPORT //
+
+#ifdef DOT11W_PMF_SUPPORT
+ifeq ($(HAS_DOT11W_PMF_SUPPORT),y)
+obj_cmm += ../../common/pmf.o
+endif
+#endif // DOT11W_PMF_SUPPORT //
+
+#ifdef WMM_ACM_SUPPORT
+ifeq ($(HAS_WMM_ACM_SUPPORT),y)
+obj_cmm += \
+ ../../common/acm_edca.o\
+ ../../common/acm_comm.o\
+ ../../common/acm_iocl.o
+endif
+#endif // WMM_ACM_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+ifeq ($(HAS_DOT11_N_SUPPORT),y)
+obj_cmm += \
+ ../../common/ba_action.o\
+ ../../mgmt/mgmt_ht.o
+
+#ifdef TXBF_SUPPORT
+ifeq ($(HAS_TXBF_SUPPORT),y)
+obj_cmm += \
+ ../../common/cmm_txbf.o\
+ ../../common/cmm_txbf_cal.o
+endif
+#endif // TXBF_SUPPORT //
+endif
+#endif // DOT11_N_SUPPORT //
+
+#ifdef DOT11_VHT_SUPPORT
+ifeq ($(HAS_DOT11_VHT_SUPPORT),y)
+obj_vht += ../../mgmt/mgmt_vht.o\
+ ../../common/vht.o
+endif
+#endif // DOT11_VHT_SUPPORT //
+
+
+#ifdef WSC_INCLUDED
+ifeq ($(HAS_WSC),y)
+obj_wsc += \
+ ../../common/wsc.o\
+ ../../common/wsc_tlv.o\
+ ../../common/crypt_biginteger.o\
+ ../../common/crypt_dh.o
+endif
+
+ifeq ($(HAS_WSC_V2),y)
+obj_wsc += ../../common/wsc_v2.o
+endif
+ifeq ($(HAS_WSC_NFC),y)
+obj_wsc += ../../common/nfc.o
+endif
+#endif // WSC_INCLUDED //
+
+
+#ifdef DOT11R_FT_SUPPORT
+ifeq ($(HAS_DOT11R_FT_SUPPORT),y)
+obj_cmm += \
+ ../../common/ft.o\
+ ../../common/ft_tlv.o\
+ ../../common/ft_iocl.o\
+ ../../common/ft_rc.o
+endif
+#endif // DOT11R_FT_SUPPORT //
+
+
+#ifdef P2P_SUPPORT
+ifeq ($(OSABL),NO)
+ifeq ($(HAS_P2P_SUPPORT),y)
+obj_p2p += \
+ ../../p2p/p2p_inf.o
+endif
+endif
+
+ifeq ($(HAS_P2P_SUPPORT),y)
+obj_p2p += \
+ ../../p2p/p2pcli.o \
+ ../../p2p/p2pcli_ctrl.o \
+ ../../p2p/p2pcli_sync.o \
+ ../../p2p/p2pcli_auth.o \
+ ../../p2p/p2pcli_assoc.o \
+ ../../p2p/p2p_dbg.o\
+ ../../p2p/p2p_cfg.o\
+ ../../p2p/p2p.o\
+ ../../p2p/p2p_packet.o\
+ ../../p2p/p2p_action.o\
+ ../../p2p/p2p_table.o\
+ ../../p2p/p2p_ctrl.o\
+ ../../p2p/p2p_disc_mng.o\
+ ../../p2p/p2p_nego_mng.o\
+ ../../p2p/p2p_dbg.o\
+ ../../p2p/p2p.o\
+ ../../p2p/p2p_packet.o\
+ ../../p2p/p2p_action.o\
+ ../../p2p/p2p_table.o\
+ ../../p2p/p2p_ctrl.o\
+ ../../p2p/p2p_disc_mng.o\
+ ../../p2p/p2p_nego_mng.o
+endif
+
+ifeq ($(HAS_P2P_SUPPORT),y)
+ifeq ($(OSABL),NO)
+obj_p2p += \
+ ../../ap/ap_mbss_inf.o\
+ ../../common/rt_os_util.o\
+ ../../os/linux/ap_ioctl.o\
+ ../../os/linux/sta_ioctl.o\
+ ../../os/linux/rt_linux.o\
+ ../../os/linux/rt_txrx_hook.o\
+ ../../os/linux/rt_main_dev.o
+else
+$(MOD_NAME)-objs += \
+ ../../os/linux/rt_symb.o
+endif
+endif
+#endif // P2P_SUPPORT //
+
+#ifdef CONFIG_HOTSPOT
+ifeq ($(HAS_HOTSPOT_SUPPORT),y)
+obj_cmm += \
+ ../../common/wnm.o\
+ ../../common/gas.o\
+ ../../common/hotspot.o
+endif
+#endif // CONFIG_HOTSPOT //
+
+
+###############################################################################
+#
+# config for AP mode
+#
+###############################################################################
+
+#ifdef CONFIG_AP_SUPPORT
+ifeq ($(RT28xx_MODE),AP)
+obj_ap += \
+ ../../ap/ap_mbss.o\
+ ../../ap/ap.o\
+ ../../ap/ap_assoc.o\
+ ../../ap/ap_auth.o\
+ ../../ap/ap_connect.o\
+ ../../ap/ap_mlme.o\
+ ../../ap/ap_sanity.o\
+ ../../ap/ap_sync.o\
+ ../../ap/ap_wpa.o\
+ ../../ap/ap_data.o\
+ ../../ap/ap_autoChSel.o\
+ ../../ap/ap_qload.o\
+ ../../ap/ap_cfg.o\
+ ../../ap/ap_nps.o
+
+ifeq ($(HAS_QOS_DLS_SUPPORT),y)
+obj_ap += ../../ap/ap_dls.o
+endif
+
+ifeq ($(HAS_IDS_SUPPORT),y)
+obj_ap += ../../ap/ap_ids.o
+endif
+
+ifeq ($(HAS_WSC),y)
+obj_ap += ../../common/wsc_ufd.o
+endif
+
+#ifdef DOT11R_FT_SUPPORT
+ifeq ($(HAS_DOT11R_FT_SUPPORT),y)
+obj_ap += ../../ap/ap_ftkd.o
+endif
+#endif // DOT11R_FT_SUPPORT //
+
+#ifdef NINTENDO_AP
+ifeq ($(HAS_NINTENDO),y)
+obj_ap += ../../ap/ap_nintendo.o
+endif
+#endif // NINTENDO_AP //
+
+ifeq ($(HAS_WDS),y)
+obj_ap += ../../ap/ap_wds.o
+
+ifeq ($(OSABL),NO)
+obj_ap += ../../ap/ap_wds_inf.o
+endif
+endif
+
+ifeq ($(OSABL),NO)
+obj_ap += \
+ ../../ap/ap_mbss_inf.o\
+ ../../os/linux/ap_ioctl.o
+endif
+
+#ifdef APCLI_SUPPORT
+ifeq ($(HAS_APCLI),y)
+obj_ap += \
+ ../../ap/ap_apcli.o \
+ ../../ap/apcli_ctrl.o \
+ ../../ap/apcli_sync.o \
+ ../../ap/apcli_auth.o \
+ ../../ap/apcli_assoc.o \
+ ../../common/cmm_mat.o \
+ ../../common/cmm_mat_iparp.o \
+ ../../common/cmm_mat_pppoe.o \
+ ../../common/cmm_mat_ipv6.o
+
+
+ifeq ($(HAS_MAC_REPEATER_SUPPORT),y)
+obj_ap += ../../ap/ap_repeater.o
+endif
+
+ifeq ($(OSABL),NO)
+obj_ap += ../../ap/ap_apcli_inf.o
+endif
+endif
+#endif // APCLI_SUPPORT //
+
+#ifdef MESH_SUPPORT
+ifeq ($(HAS_MESH_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/mesh_bmpkt.o \
+ ../../common/mesh_ctrl.o \
+ ../../common/mesh_link_mng.o \
+ ../../common/mesh_sanity.o \
+ ../../common/mesh_tlv.o \
+ ../../common/mesh.o \
+ ../../common/mesh_forwarding.o \
+ ../../common/mesh_path_mng.o
+
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += \
+ ../../common/mesh_inf.o
+endif
+endif
+#endif // MESH_SUPPORT //
+
+ifeq ($(HAS_CLIENT_WDS_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/client_wds.o
+endif
+
+ifeq ($(HAS_IGMP_SNOOP_SUPPORT),y)
+obj_ap += ../../common/igmp_snoop.o
+endif
+
+MOD_NAME = $(MODULE)_ap
+DAT_PATH = /etc/Wireless/RT$(CHIPSET_DAT)AP
+DAT_FILE_NAME = conf/RT$(CHIPSET_DAT)AP.dat
+endif
+#endif // CONFIG_AP_SUPPORT //
+
+
+###############################################################################
+#
+# config for STA mode
+#
+###############################################################################
+
+#ifdef CONFIG_STA_SUPPORT
+ifeq ($(RT28xx_MODE), STA)
+obj_sta += \
+ ../../sta/assoc.o\
+ ../../sta/auth.o\
+ ../../sta/auth_rsp.o\
+ ../../sta/sync.o\
+ ../../sta/sanity.o\
+ ../../sta/rtmp_data.o\
+ ../../sta/connect.o\
+ ../../sta/wpa.o\
+ ../../sta/sta_cfg.o\
+ ../../sta/adhoc.o\
+ ../../sta/sta.o
+
+#ifdef DOT11R_FT_SUPPORT
+ifeq ($(HAS_DOT11R_FT_SUPPORT),y)
+obj_sta += \
+ ../../sta/ft_auth.o\
+ ../../sta/ft_action.o
+endif
+#endif // DOT11R_FT_SUPPORT //
+
+ifeq ($(OSABL),NO)
+obj_sta += ../../os/linux/sta_ioctl.o
+endif
+
+#TODO
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+ifeq ($(HAS_CFG80211_MULTI_STA_SUPPORT),y)
+obj_sta += \
+ ../../ap/ap_apcli.o \
+ ../../ap/apcli_ctrl.o \
+ ../../ap/apcli_sync.o \
+ ../../ap/apcli_auth.o \
+ ../../ap/apcli_assoc.o \
+ ../../ap/ap_apcli_inf.o
+endif #HAS_CFG80211_MULTI_STA_SUPPORT
+
+ifeq ($(HAS_CFG80211_P2P_SUPPORT),y)
+ifeq ($(HAS_CFG80211_P2P_CONCURRENT_DEVICE),y)
+obj_sta += \
+ ../../ap/ap_apcli.o \
+ ../../ap/apcli_ctrl.o \
+ ../../ap/apcli_sync.o \
+ ../../ap/apcli_auth.o \
+ ../../ap/apcli_assoc.o
+
+ifeq ($(OSABL),NO)
+obj_sta += ../../ap/ap_apcli_inf.o
+endif
+endif
+endif
+endif
+
+MOD_NAME = $(MODULE)sta
+DAT_PATH = /etc/Wireless/RT$(CHIPSET_DAT)STA
+DAT_FILE_NAME = conf/RT$(CHIPSET_DAT)STA.dat
+endif
+#endif // CONFIG_STA_SUPPORT //
+
+
+###############################################################################
+#
+# config for AP/STA mixed mode
+#
+###############################################################################
+
+#ifdef CONFIG_APSTA_SUPPORT
+ifeq ($(RT28xx_MODE), APSTA)
+MOD_NAME = $(MODULE)_apsta
+endif
+#endif // CONFIG_APSTA_SUPPORT //
+
+
+###############################################################################
+#
+# Module Base
+#
+###############################################################################
+
+obj-m := $(MOD_NAME).o
+
+#ifdef CONFIG_AP_SUPPORT
+ifeq ($(RT28xx_MODE),AP)
+
+$(MOD_NAME)-objs := \
+ $(obj_ap)\
+ $(obj_vht)\
+ $(obj_cmm)\
+ $(obj_wsc)\
+ $(obj_phy)
+
+ifeq ($(HAS_ATE),y)
+#$(MOD_NAME)-objs += ../../ate/rt_mac/rt_ate.o
+$(MOD_NAME)-objs += ../../ate/ate_agent.o
+endif
+
+ifeq ($(HAS_QA_SUPPORT),y)
+#$(MOD_NAME)-objs += ../../ate/rt_mac/rt_qa.o
+$(MOD_NAME)-objs += ../../ate/qa_agent.o
+endif
+
+#ifdef MULTI_INF_SUPPORT
+ifeq ($(HAS_MULTI_INF),y)
+$(MOD_NAME)-objs += ../../os/linux/multi_main_dev.o
+endif
+#endif // MULTI_INF_SUPPORT //
+
+#ifdef BG_FT_SUPPORT
+ifeq ($(OSABL),NO)
+ifeq ($(HAS_BGFP_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../os/linux/br_ftph.o
+endif
+endif
+#endif // BG_FT_SUPPORT //
+
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += \
+ ../../common/rt_os_util.o\
+ ../../os/linux/rt_linux.o\
+ ../../os/linux/rt_txrx_hook.o\
+ ../../os/linux/rt_main_dev.o
+
+#ifdef CONFIG_TRACE_SUPPORT
+CFLAGS_rt_linux.o = -I$(RT28xx_DIR)/include/os
+#endif
+
+ifeq ($(HAS_SNIFFER_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../sniffer/sniffer_prism.o \
+ ../../sniffer/sniffer_radiotap.o
+endif
+
+else
+$(MOD_NAME)-objs += \
+ ../../os/linux/rt_symb.o
+endif
+
+#ifdef CRDA_SUPPORT
+ifeq ($(OSABL),NO)
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../os/linux/cfg80211/cfg80211.o\
+ ../../os/linux/cfg80211/cfg80211_util.o\
+ ../../os/linux/cfg80211/cfg80211_scan.o\
+ ../../os/linux/cfg80211/cfg80211_rx.o\
+ ../../os/linux/cfg80211/cfg80211_tx.o\
+ ../../os/linux/cfg80211/cfg80211_inf.o\
+ ../../os/linux/cfg80211/cfg80211_p2p.o\
+ ../../os/linux/cfg80211/cfg80211_ap.o\
+ ../../os/linux/cfg80211/cfg80211drv.o\
+ ../../os/linux/cfg80211/cfg80211_tdls.o
+endif
+endif
+
+ifeq ($(OSABL),YES)
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../os/linux/cfg80211/cfg80211_scan.o\
+ ../../os/linux/cfg80211/cfg80211_rx.o\
+ ../../os/linux/cfg80211/cfg80211_tx.o\
+ ../../os/linux/cfg80211/cfg80211_inf.o\
+ ../../os/linux/cfg80211/cfg80211_p2p.o\
+ ../../os/linux/cfg80211/cfg80211_ap.o\
+ ../../os/linux/cfg80211/cfg80211drv.o
+endif
+endif
+#endif // CRDA_SUPPORT //
+
+ifeq ($(HAS_RT2880_RT2860_COEXIST),y)
+RT28XX_AP_OBJ += \
+ ../../os/linux/rt_pci_rbus.o\
+ ../../os/linux/rt_rbus_pci_util.o\
+ ../../os/linux/pci_main_dev.o\
+ ../../common/dfs.o
+endif
+
+#ifdef EASY_CONFIG_SETUP
+ifeq ($(HAS_EASY_CONFIG_SETUP_SUPPORT),y)
+ifneq ($(PLATFORM),RALINK_3052)
+$(MOD_NAME)-objs += ../../common/auto_provision.o
+endif
+endif
+#endif // EASY_CONFIG_SETUP //
+
+ifeq ($(PLATFORM),IKANOS_V160)
+$(MOD_NAME)-objs += ../../os/linux/vr_ikans.o
+endif
+
+ifeq ($(PLATFORM),IKANOS_V180)
+$(MOD_NAME)-objs += ../../os/linux/vr_ikans.o
+endif
+
+ifeq ($(PLATFORM),BL2348)
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += ../../os/linux/vr_bdlt.o
+endif
+endif
+#ifdef PLATFORM_BL23570
+ifeq ($(PLATFORM),BL23570)
+rt$(CHIPSET)ap-objs += \
+ ../../os/linux/vr_bdlt.o
+endif
+#endif // PLATFORM_BL23570 //
+
+ifeq ($(HAS_EASY_CONFIG_SETUP_SUPPORT),y)
+ifeq ($(PLATFORM),RALINK_3052)
+$(MOD_NAME)-objs += lib.a
+endif
+endif
+
+endif
+#endif // CONFIG_AP_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+ifeq ($(RT28xx_MODE), STA)
+
+$(MOD_NAME)-objs := \
+ $(obj_sta)\
+ $(obj_p2p)\
+ $(obj_vht)\
+ $(obj_cmm)\
+ $(obj_wsc)\
+ $(obj_phy)
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/ate_agent.o
+endif
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += \
+ ../../common/rt_os_util.o\
+ ../../os/linux/sta_ioctl.o\
+ ../../os/linux/rt_linux.o\
+ ../../os/linux/rt_txrx_hook.o\
+ ../../os/linux/rt_main_dev.o
+
+ifeq ($(HAS_SNIFFER_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../sniffer/sniffer_prism.o\
+ ../../sniffer/sniffer_radiotap.o
+endif
+
+else
+$(MOD_NAME)-objs += \
+ ../../os/linux/rt_symb.o
+endif
+
+#ifdef ETH_CONVERT
+ifeq ($(HAS_ETH_CONVERT_SUPPORT), y)
+$(MOD_NAME)-objs += \
+ ../../common/cmm_mat.o \
+ ../../common/cmm_mat_iparp.o \
+ ../../common/cmm_mat_pppoe.o \
+ ../../common/cmm_mat_ipv6.o
+endif
+#endif // ETH_CONVERT //
+
+#ifdef ADHOC_WPA2PSK_SUPPORT
+$(MOD_NAME)-objs += \
+ ../../common/cmm_wpa_adhoc.o
+#endif // ADHOC_WPA2PSK_SUPPORT //
+
+#ifdef WSC_INCLUDED
+ifeq ($(HAS_WSC_V2),y)
+ifeq ($(HAS_WIDI_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/l2sd_ta_mod.o
+endif
+
+ifeq ($(HAS_IWSC_SUPPORT),y)
+$(MOD_NAME)-objs += ../../sta/sta_iwsc.o
+endif
+
+endif
+#endif // WSC_INCLUDED //
+
+#ifdef STA_EASY_CONFIG_SETUP
+ifeq ($(HAS_WSC),y)
+ifeq ($(HAS_EASY_CONFIG_SETUP_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/auto_provision.o \
+ ../../sta/sta_auto_provision.o
+endif
+endif
+#endif // STA_EASY_CONFIG_SETUP //
+
+ifeq ($(HAS_QOS_DLS_SUPPORT),y)
+$(MOD_NAME)-objs += ../../sta/dls.o
+endif
+
+#ifdef DOT11Z_TDLS_SUPPORT
+ifeq ($(HAS_DOT11Z_TDLS_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../sta/tdls.o\
+ ../../sta/tdls_ctrl.o\
+ ../../sta/tdls_tlv.o\
+ ../../sta/tdls_link_mng.o\
+ ../../sta/tdls_uapsd.o
+endif
+#endif // DOT11Z_TDLS_SUPPORT //
+
+#ifdef WFD_SUPPORT
+ifeq ($(HAS_WFD_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/wfd.o
+endif
+#endif // WFD_SUPPORT //
+
+ifeq ($(HAS_ATE),y)
+#$(MOD_NAME)-objs += ../../ate/rt_mac/rt_ate.o
+endif
+
+ifeq ($(HAS_QA_SUPPORT),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/rt_qa.o
+endif
+
+#ifdef MESH_SUPPORT
+ifeq ($(HAS_MESH_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/mesh_bmpkt.o \
+ ../../common/mesh_ctrl.o \
+ ../../common/mesh_link_mng.o \
+ ../../common/mesh_sanity.o \
+ ../../common/mesh_tlv.o \
+ ../../common/mesh.o \
+ ../../common/mesh_forwarding.o \
+ ../../common/mesh_path_mng.o
+
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += \
+ ../../common/mesh_inf.o
+endif
+endif
+#endif // MESH_SUPPORT //
+
+#ifdef WAPI_SUPPORT
+ifeq ($(HAS_WAPI_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/wapi.o
+endif
+#endif // WAPI_SUPPORT //
+
+#ifdef DOT11V_WNM_SUPPORT
+ifeq ($(HAS_DOT11V_WNM_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../common/wnm.o\
+ ../../common/wnm_tlv.o
+endif
+#endif // DOT11V_WNM_SUPPORT //
+
+#ifdef CRDA_SUPPORT
+ifeq ($(OSABL),NO)
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../os/linux/cfg80211/cfg80211.o \
+ ../../os/linux/cfg80211/cfg80211_util.o\
+ ../../os/linux/cfg80211/cfg80211_scan.o\
+ ../../os/linux/cfg80211/cfg80211_rx.o\
+ ../../os/linux/cfg80211/cfg80211_tx.o\
+ ../../os/linux/cfg80211/cfg80211_inf.o\
+ ../../os/linux/cfg80211/cfg80211_p2p.o\
+ ../../os/linux/cfg80211/cfg80211_ap.o\
+ ../../os/linux/cfg80211/cfg80211drv.o
+ifeq ($(HAS_CFG80211_TDLS_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../os/linux/cfg80211/cfg80211_tdls.o
+endif
+ifeq ($(HAS_CFG80211_P2P_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../ap/ap_mbss.o\
+ ../../ap/ap.o\
+ ../../ap/ap_assoc.o\
+ ../../ap/ap_auth.o\
+ ../../ap/ap_connect.o\
+ ../../ap/ap_mlme.o\
+ ../../ap/ap_sanity.o\
+ ../../ap/ap_sync.o\
+ ../../ap/ap_wpa.o\
+ ../../ap/ap_data.o\
+ ../../ap/ap_autoChSel.o\
+ ../../ap/ap_qload.o\
+ ../../ap/ap_cfg.o\
+ ../../ap/ap_nps.o\
+ ../../os/linux/ap_ioctl.o
+endif
+
+#TODO
+ifeq ($(HAS_CFG80211_MULTI_STA_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../ap/ap_mbss.o\
+ ../../ap/ap.o\
+ ../../ap/ap_assoc.o\
+ ../../ap/ap_auth.o\
+ ../../ap/ap_connect.o\
+ ../../ap/ap_mlme.o\
+ ../../ap/ap_sanity.o\
+ ../../ap/ap_sync.o\
+ ../../ap/ap_wpa.o\
+ ../../ap/ap_data.o\
+ ../../ap/ap_autoChSel.o\
+ ../../ap/ap_qload.o\
+ ../../ap/ap_cfg.o\
+ ../../ap/ap_nps.o\
+ ../../os/linux/ap_ioctl.o
+endif #HAS_CFG80211_MULTI_STA_SUPPORT
+
+endif
+endif
+
+ifeq ($(OSABL),YES)
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../os/linux/cfg80211/cfg80211_scan.o\
+ ../../os/linux/cfg80211/cfg80211_rx.o\
+ ../../os/linux/cfg80211/cfg80211_tx.o\
+ ../../os/linux/cfg80211/cfg80211_inf.o\
+ ../../os/linux/cfg80211/cfg80211_p2p.o\
+ ../../os/linux/cfg80211/cfg80211_ap.o\
+ ../../os/linux/cfg80211/cfg80211drv.o
+endif
+endif
+#endif // CRDA_SUPPORT //
+
+#ifdef BT_COEXISTENCE_SUPPORT
+ifeq ($(HAS_BT_COEXISTENCE_SUPPORT),y)
+obj_sta += ../../common/misc.o
+endif
+#endif // BT_COEXISTENCE_SUPPORT //
+
+#ifdef CONFIG_MULTI_CHANNEL
+ifeq ($(HAS_MULTI_CHANNEL),y)
+obj_sta += ../../common/multi_channel.o
+endif
+#endif /* CONFIG_MULTI_CHANNEL */
+
+endif
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_APSTA_SUPPORT
+ifeq ($(RT28xx_MODE), APSTA)
+$(MOD_NAME)-objs := \
+ $(obj_ap)\
+ $(obj_sta)\
+ $(obj_cmm)\
+ $(obj_wsc)
+endif
+#endif // CONFIG_APSTA_SUPPORT //
+
+
+#chip releated
+
+#ifdef RT2860
+ifneq ($(findstring rt2860,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../chips/rt28xx.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt28xx_ate.o
+endif
+
+endif
+#endif // RT2860 //
+
+#ifdef RT3090
+ifneq ($(findstring rt3090,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+../../chips/rt30xx.o\
+ ../../chips/rt3090.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt30xx_ate.o
+endif
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+endif
+#endif // RT3090 //
+
+#ifdef RT2870
+ifneq ($(findstring rt2870,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../chips/rt28xx.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt28xx_ate.o
+endif
+
+endif
+#endif // RT2870 //
+
+#ifdef RT3070
+ifneq ($(findstring rt2070,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt3070.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt30xx_ate.o
+endif
+
+endif
+
+
+ifneq ($(findstring rt3070,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt3070.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt30xx_ate.o
+endif
+
+endif
+#endif // RT3070 //
+
+#ifdef RT2880
+ifneq ($(findstring rt2880,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_flash.o\
+ ../../common/rtmp_swmcu.o\
+ ../../chips/rt2880.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt28xx_ate.o
+endif
+
+endif
+#endif // RT2880 //
+
+#ifdef RT3052
+ifneq ($(findstring rt3052,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_flash.o\
+ ../../common/rtmp_swmcu.o\
+ ../../chips/rt305x.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt305x_ate.o
+endif
+
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += ../../os/linux/rt_proc.o
+endif
+
+endif
+#endif // RT3052 //
+
+#ifdef RT3352
+ifneq ($(findstring rt3352,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_flash.o\
+ ../../common/rtmp_swmcu.o\
+ ../../chips/rt305x.o\
+ ../../chips/rt3352.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt305x_ate.o\
+ ../../ate/rt_mac/chips/rt3352_ate.o
+endif
+
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += ../../os/linux/rt_proc.o
+endif
+
+endif
+#endif // RT3352 //
+
+
+#ifdef RT5350
+ifneq ($(findstring rt5350,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_flash.o\
+ ../../common/rtmp_swmcu.o\
+ ../../chips/rt305x.o\
+ ../../chips/rt5350.o
+
+ifeq ($(OSABL),NO)
+$(MOD_NAME)-objs += ../../os/linux/rt_proc.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+#not need to include it yet.
+# ../../ate/rt_mac/chips/rt305x_ate.o\
+ ../../ate/rt_mac/chips/rt5350_ate.o
+endif
+
+endif
+#endif // RT5350 //
+
+
+#ifdef RT3572
+ifneq ($(findstring rt3572,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt28xx.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt35xx.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt28xx_ate.o\
+ ../../ate/rt_mac/chips/rt35xx_ate.o
+endif
+
+endif
+#endif // RT3572 //
+
+#ifdef RT3062
+ifneq ($(findstring rt3062,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../common/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt28xx.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt35xx.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt28xx_ate.o\
+ ../../ate/rt_mac/chips/rt35xx_ate.o
+endif
+
+endif
+#endif // RT3062 //
+
+#ifdef RT3562
+ifneq ($(findstring rt3562,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt28xx.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt35xx.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt28xx_ate.o\
+ ../../ate/rt_mac/chips/rt35xx_ate.o
+endif
+
+endif
+#endif // RT3562 //
+
+
+#ifdef RT3573
+ifneq ($(findstring rt3573,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt28xx.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt35xx.o\
+ ../../chips/rt3593.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt30xx_ate.o\
+ ../../ate/rt_mac/chips/rt35xx_ate.o\
+ ../../ate/rt_mac/chips/rt3593_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT3573 //
+
+#ifdef RTMP_MAC_PCI
+#ifdef RT3593
+ifneq ($(findstring rt3593,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt35xx.o\
+ ../../chips/rt28xx.o\
+ ../../chips/rt3593.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt30xx_ate.o\
+ ../../ate/rt_mac/chips/rt35xx_ate.o\
+ ../../ate/rt_mac/chips/rt3593_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT3593 //
+#endif // RTMP_MAC_PCI //
+
+#ifdef RT3390
+ifneq ($(findstring rt3390,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt3090.o\
+ ../../chips/rt33xx.o\
+ ../../chips/rt3390.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt33xx_ate.o\
+ ../../ate/rt_mac/chips/rt30xx_ate.o
+endif
+
+endif
+#endif // RT3390 //
+
+#ifdef RT3370
+ifneq ($(findstring rt3370,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt33xx.o\
+ ../../chips/rt3370.o\
+ ../../chips/rt3070.o\
+ ../../chips/rt30xx.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt33xx_ate.o\
+ ../../ate/rt_mac/chips/rt30xx_ate.o
+endif
+
+endif
+#endif // RT3370 //
+
+#ifdef RT5370
+ifneq ($(findstring rt5370,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt33xx.o\
+ ../../chips/rt3370.o\
+ ../../chips/rt3070.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt5390.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt5390_ate.o\
+ ../../ate/rt_mac/chips/rt30xx_ate.o\
+ ../../ate/rt_mac/chips/rt33xx_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT5370 //
+
+#ifdef RT5390
+ifneq ($(findstring rt5390,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt3090.o\
+ ../../chips/rt33xx.o\
+ ../../chips/rt3390.o\
+ ../../chips/rt5390.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += \
+ ../../ate/rt_mac/chips/rt5390_ate.o\
+ ../../ate/rt_mac/chips/rt33xx_ate.o\
+ ../../ate/rt_mac/chips/rt30xx_ate.o
+endif
+
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT5390 //
+
+#ifdef RT3290
+ifneq ($(findstring rt3290,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt3290.o
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT3290 //
+
+
+#ifdef RT5572
+ifneq ($(findstring rt5572,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../mcu/mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt5592.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt5592_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT5572 //
+
+#ifdef RTMP_MAC_PCI
+#ifdef RT5592
+ifneq ($(findstring rt5592,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/frq_cal.o\
+ ../../common/ee_efuse.o\
+ ../../mcu/mcu.o\
+ ../../mcu/mcu_51.o\
+ ../../chips/rt30xx.o\
+ ../../chips/rt5592.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt5592_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT5592 //
+#endif //RTMP_MAC_PCI//
+
+
+#ifdef MT76x0
+ifneq ($(or $(findstring mt7650e,$(CHIPSET)),$(findstring mt7630e,$(CHIPSET)),$(findstring mt7610e,$(CHIPSET))),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_efuse.o\
+ ../../common/ee_prom.o\
+ ../../chips/rt65xx.o\
+ ../../chips/mt76x0.o\
+ ../../mac/ral_nmac.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_rlt.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt6590_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // MT76x0 //
+
+#ifdef MT76x0
+ifneq ($(or $(findstring mt7650u,$(CHIPSET)),$(findstring mt7630u,$(CHIPSET)),$(findstring mt7610u,$(CHIPSET))),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt65xx.o\
+ ../../chips/mt76x0.o\
+ ../../mac/ral_nmac.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_rlt.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_CSO_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../naf/net_acc.o\
+ ../../naf/cso.o
+ifeq ($(HAS_TSO_SUPPORT),y)
+$(MOD_NAME)-objs += ../../naf/tso.o
+endif
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt6590_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // MT76x0 //
+
+#ifdef MT76x2
+ifneq ($(or $(findstring mt7662e,$(CHIPSET)),$(findstring mt7612e,$(CHIPSET))),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_efuse.o\
+ ../../common/ee_prom.o\
+ ../../chips/rt65xx.o\
+ ../../chips/mt76x2.o\
+ ../../phy/mt76x2_rf.o\
+ ../../mac/ral_nmac.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_rlt.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_MT76XX_BT_COEXISTENCE_SUPPORT),y)
+$(MOD_NAME)-objs += ../../mcu/bt_coex.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/mt76x2_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+
+
+ifneq ($(or $(findstring mt7662u,$(CHIPSET)),$(findstring mt7612u,$(CHIPSET))),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../chips/rt65xx.o\
+ ../../chips/mt76x2.o\
+ ../../phy/mt76x2_rf.o\
+ ../../mac/ral_nmac.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_rlt.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_MT76XX_BT_COEXISTENCE_SUPPORT),y)
+$(MOD_NAME)-objs += ../../mcu/bt_coex.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/mt76x2_ate.o
+endif
+
+ifeq ($(HAS_TSO_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../naf/net_acc.o\
+ ../../naf/cso.o
+endif
+
+ifeq ($(HAS_CSO_SUPPORT), y)
+$(MOD_NAME)-objs += \
+ ../../naf/net_acc.o\
+ ../../naf/cso.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // MT76x2 //
+
+
+#ifdef MT7603
+ifneq ($(or $(findstring mt7603e,$(CHIPSET)),$(findstring mt7603u,$(CHIPSET))),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_efuse.o\
+ ../../common/ee_prom.o\
+ ../../chips/mt7603.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_mt.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/mt_mac/mt_ate.o
+endif
+
+endif
+#endif // MT7603 //
+
+#ifdef MT7636
+ifneq ($(or $(findstring mt7636s,$(CHIPSET)),$(findstring mt7636u,$(CHIPSET))),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_efuse.o\
+ ../../common/ee_prom.o\
+ ../../chips/mt7636.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_mt.o
+
+#ifeq ($(HAS_ATE),y)
+#$(MOD_NAME)-objs += ../../ate/chips/mt7603_ate.o
+#endif
+
+endif
+#endif // MT7636 //
+
+#ifdef MT7628
+ifneq ($(findstring mt7628,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_efuse.o\
+ ../../common/ee_prom.o\
+ ../../chips/mt7628.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_mt.o
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/mt_mac/mt_ate.o
+endif
+endif
+#endif // MT7628 //
+
+
+#ifdef RT8592
+ifneq ($(findstring rt8592,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/rtmp_mcu.o\
+ ../../chips/rt65xx.o\
+ ../../chips/rt85592.o\
+ ../../mac/ral_nmac.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_rlt.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/rt85592_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // RT8592 //
+
+
+#ifdef MT7601E
+ifneq ($(findstring mt7601e,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../mcu/rtmp_and.o\
+ ../../mcu/rtmp_mcu.o\
+ ../../mcu/rtmp_M51.o\
+ ../../chips/rt30xx.o\
+ ../../chips/mt7601.o\
+ ../../mac/ral_omac.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/mt7601_ate.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // MT7601E //
+
+
+#ifdef MT7601U
+ifneq ($(findstring mt7601u,$(CHIPSET)),)
+$(MOD_NAME)-objs += \
+ ../../common/ee_prom.o\
+ ../../common/ee_efuse.o\
+ ../../mcu/mcu.o\
+ ../../mcu/andes_core.o\
+ ../../mcu/andes_rlt.o\
+ ../../chips/mt7601.o\
+ ../../mac/ral_nmac.o
+
+ifeq ($(HAS_RTMP_FLASH_SUPPORT),y)
+$(MOD_NAME)-objs += ../../common/ee_flash.o
+endif
+
+ifeq ($(HAS_ATE),y)
+$(MOD_NAME)-objs += ../../ate/rt_mac/chips/mt7601_ate.o
+endif
+
+ifeq ($(HAS_TSO_SUPPORT),y)
+$(MOD_NAME)-objs += \
+ ../../naf/net_acc.o\
+ ../../naf/tso.o\
+ ../../naf/cso.o
+endif
+
+ifneq ($(findstring $(RT28xx_MODE),STA APSTA),)
+$(MOD_NAME)-objs += ../../common/frq_cal.o
+endif
+
+endif
+#endif // MT7601U //
+
+
+PHONY := clean install uninstall
+
+clean:
+ rm -f ../../common/*.o
+ rm -f ../../common/.*.{cmd,flags,d}
+ rm -f ../../os/linux/*.{o,ko,mod.{o,c}}
+ rm -f ../../os/linux/.*.{cmd,flags,d}
+ rm -fr ../../os/linux/.tmp_versions
+#Must clean Module.symvers; or you will suffer symbol version not match
+#when OS_ABL = YES.
+ rm -f ../../os/linux/Module.symvers
+ rm -f ../../os/linux/Modules.symvers
+ rm -f ../../os/linux/Module.markers
+ rm -f ../../os/linux/modules.order
+ rm -f ../../chips/*.o
+ rm -f ../../chips/.*.{cmd,flags,d}
+ifeq ($(RT28xx_MODE),AP)
+ rm -f ../../ap/*.o
+ rm -f ../../ap/.*.{cmd,flags,d}
+else
+ifeq ($(RT28xx_MODE),STA)
+ rm -f ../../sta/*.o
+ rm -f ../../sta/.*.{cmd,flags,d}
+else
+ifeq ($(RT28xx_MODE),APSTA)
+ rm -f ../../ap/*.o
+ rm -f ../../ap/.*.{cmd,flags,d}
+ rm -f ../../sta/*.o
+ rm -f ../../sta/.*.{cmd,flags,d}
+endif
+endif
+endif
+
+install:
+ rm -rf $(DAT_PATH)
+ $(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
+ mkdir $(DAT_PATH)
+ cp $(RT28xx_DIR)/$(DAT_FILE_NAME) $(DAT_PATH)/.
+ install -d $(LINUX_SRC_MODULE)
+ install -m 644 -c $(addsuffix .ko,$(MOD_NAME)) $(LINUX_SRC_MODULE)
+ /sbin/depmod -a ${shell uname -r}
+
+uninstall:
+# rm -rf $(DAT_PATH)
+ rm -rf $(addprefix $(LINUX_SRC_MODULE),$(addsuffix .ko,$(MOD_NAME)))
+ /sbin/depmod -a ${shell uname -r}
+
+# Declare the contents of the .PHONY variable as phony. We keep that
+# information in a variable so we can use it in if_changed and friends.
+.PHONY: $(PHONY)
diff --git a/os/linux/ap_ioctl.c b/os/linux/ap_ioctl.c
index 64ebf53..75c6826 100755
--- a/os/linux/ap_ioctl.c
+++ b/os/linux/ap_ioctl.c
@@ -337,7 +337,7 @@ skip_check:
RTMP_AP_IoctlHandle(pAd, wrq, CMD_RTPRIV_IOCTL_AP_SIOCGIWESSID, 0, pIoctlSSID, 0);
pSsidStr = (PCHAR)pIoctlSSID->pSsidStr;
- erq->length = pIoctlSSID->length;
+ erq->length = (USHORT)pIoctlSSID->length;
#if 0 /* os abl move */
#ifdef APCLI_SUPPORT
diff --git a/os/linux/cfg80211/cfg80211.c b/os/linux/cfg80211/cfg80211.c
index 388f961..48496e5 100755
--- a/os/linux/cfg80211/cfg80211.c
+++ b/os/linux/cfg80211/cfg80211.c
@@ -126,7 +126,7 @@
#ifdef RT_CFG80211_SUPPORT
#ifdef CONFIG_PM
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0))
static const struct wiphy_wowlan_support mtk_wowlan_support = {
.flags = WIPHY_WOWLAN_MAGIC_PKT,
};
@@ -418,9 +418,9 @@ static int CFG80211_OpsMonitorChannelSet(struct wiphy *pWiphy,
- printk("control:%d MHz width:%d center: %d/%d MHz",
+ CFG80211DBG(RT_DEBUG_OFF, ("control:%d MHz width:%d center: %d/%d MHz",
pChan->center_freq, chandef->width,
- chandef->center_freq1, chandef->center_freq2);
+ chandef->center_freq1, chandef->center_freq2));
/* get channel number */
@@ -430,7 +430,7 @@ static int CFG80211_OpsMonitorChannelSet(struct wiphy *pWiphy,
/* init */
memset(&ChanInfo, 0, sizeof(ChanInfo));
- ChanInfo.ChanId = ChanId;
+ ChanInfo.ChanId = (UINT8)ChanId;
p80211CB = NULL;
RTMP_DRIVER_80211_CB_GET(pAd, &p80211CB);
@@ -441,7 +441,7 @@ static int CFG80211_OpsMonitorChannelSet(struct wiphy *pWiphy,
return 0;
}
- ChanInfo.IfType = pNetDev->ieee80211_ptr->iftype;
+ ChanInfo.IfType = (UINT8)pNetDev->ieee80211_ptr->iftype;
CFG80211DBG(RT_DEBUG_ERROR, ("80211> ChanInfo.IfType == %d!\n",ChanInfo.IfType));
@@ -539,8 +539,8 @@ static int CFG80211_OpsVirtualInfChg(
pNetDev->ieee80211_ptr->iftype = Type;
VifInfo.net_dev = pNetDev;
- VifInfo.newIfType = Type;
- VifInfo.oldIfType = oldType;
+ VifInfo.newIfType = (UINT8)Type;
+ VifInfo.oldIfType = (UINT8)oldType;
if (pFlags != NULL)
{
@@ -1060,7 +1060,11 @@ Note:
static int CFG80211_OpsStaGet(
IN struct wiphy *pWiphy,
IN struct net_device *pNdev,
- IN UINT8 *pMac,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0))
+ IN const UINT8 * pMac,
+#else
+ IN UINT8 * pMac,
+#endif
IN struct station_info *pSinfo)
{
VOID *pAd;
@@ -1082,53 +1086,97 @@ static int CFG80211_OpsStaGet(
if (StaInfo.TxRateFlags != RT_CMD_80211_TXRATE_LEGACY)
{
pSinfo->txrate.flags = RATE_INFO_FLAGS_MCS;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->txrate.bw = RATE_INFO_BW_20;
+ if (StaInfo.TxRateFlags & RT_CMD_80211_TXRATE_BW_40)
+ pSinfo->txrate.bw = RATE_INFO_BW_40;
+#else
if (StaInfo.TxRateFlags & RT_CMD_80211_TXRATE_BW_40)
pSinfo->txrate.flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+#endif
+
if (StaInfo.TxRateFlags & RT_CMD_80211_TXRATE_SHORT_GI)
pSinfo->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI;
- pSinfo->txrate.mcs = StaInfo.TxRateMCS;
+ pSinfo->txrate.mcs = (u8)StaInfo.TxRateMCS;
}
else
{
- pSinfo->txrate.legacy = StaInfo.TxRateMCS;
+ pSinfo->txrate.legacy = (u16)StaInfo.TxRateMCS;
}
-
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_TX_BITRATE);
+#else
pSinfo->filled |= STATION_INFO_TX_BITRATE;
+#endif
/* fill signal */
- pSinfo->signal = StaInfo.Signal;
+ pSinfo->signal = (s8)StaInfo.Signal;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_SIGNAL);
+#else
pSinfo->filled |= STATION_INFO_SIGNAL;
+#endif
#ifdef CONFIG_AP_SUPPORT
/* fill tx count */
pSinfo->tx_packets = StaInfo.TxPacketCnt;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
+#else
pSinfo->filled |= STATION_INFO_TX_PACKETS;
+#endif
/* fill inactive time */
pSinfo->inactive_time = StaInfo.InactiveTime;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME);
+#else
pSinfo->filled |= STATION_INFO_INACTIVE_TIME;
+#endif
#endif /* CONFIG_AP_SUPPORT */
#ifdef CONFIG_STA_SUPPORT
/* fill tx/rx count */
pSinfo->tx_packets = StaInfo.tx_packets;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_TX_PACKETS);
+#else
pSinfo->filled |= STATION_INFO_TX_PACKETS;
+#endif
pSinfo->tx_retries = StaInfo.tx_retries;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_TX_RETRIES);
+#else
pSinfo->filled |= STATION_INFO_TX_RETRIES;
+#endif
+
pSinfo->tx_failed = StaInfo.tx_failed;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_TX_FAILED);
+#else
pSinfo->filled |= STATION_INFO_TX_FAILED;
+#endif
+
pSinfo->rx_packets = StaInfo.rx_packets;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_RX_PACKETS);
+#else
pSinfo->filled |= STATION_INFO_RX_PACKETS;
+#endif
/* fill inactive time */
pSinfo->inactive_time = StaInfo.InactiveTime;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0))
+ pSinfo->filled |= BIT(NL80211_STA_INFO_INACTIVE_TIME);
+#else
pSinfo->filled |= STATION_INFO_INACTIVE_TIME;
+#endif
#endif /* CONFIG_STA_SUPPORT */
return 0;
@@ -1280,9 +1328,9 @@ static int CFG80211_OpsKeyAdd(
KeyInfo.KeyBuf[pParams->key_len] = 0x00;
KeyInfo.KeyId = KeyIdx;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
- KeyInfo.bPairwise = Pairwise;
+ KeyInfo.bPairwise = (BOOLEAN)Pairwise;
#endif /* LINUX_VERSION_CODE: 2,6,37 */
- KeyInfo.KeyLen = pParams->key_len;
+ KeyInfo.KeyLen = (UINT8)pParams->key_len;
if ((pParams->cipher == WLAN_CIPHER_SUITE_WEP40))
{
@@ -1468,7 +1516,7 @@ static int CFG80211_OpsKeyDel(
KeyInfo.KeyId = KeyIdx;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
CFG80211DBG(RT_DEBUG_TRACE, ("80211> KeyDel isPairwise %d\n", Pairwise));
- KeyInfo.bPairwise = Pairwise;
+ KeyInfo.bPairwise = (BOOLEAN)Pairwise;
#endif /* LINUX_VERSION_CODE 2.6.37 */
#ifdef CONFIG_AP_SUPPORT
@@ -2112,9 +2160,9 @@ static int CFG80211_OpsRemainOnChannel(
/* init */
*cookie = rndCookie;
memset(&ChanInfo, 0, sizeof(ChanInfo));
- ChanInfo.ChanId = ChanId;
- ChanInfo.IfType = dev->ieee80211_ptr->iftype;
- ChanInfo.ChanType = ChannelType;
+ ChanInfo.ChanId = (UINT8)ChanId;
+ ChanInfo.IfType = (UINT8)dev->ieee80211_ptr->iftype;
+ ChanInfo.ChanType = (UINT8)ChannelType;
ChanInfo.chan = pChan;
ChanInfo.cookie = rndCookie;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
@@ -2194,15 +2242,8 @@ void CFG80211_OpsSetWakeup(IN struct wiphy *wiphy, bool enabled)
int CFG80211_OpsResume(IN struct wiphy *wiphy)
{
-#ifdef MT_WOW_SUPPORT
- VOID *pAd;
- CFG80211DBG(RT_DEBUG_OFF, ("%s\n",__FUNCTION__));
+ CFG80211DBG(RT_DEBUG_OFF, ("%s\n", __func__));
- MAC80211_PAD_GET(pAd, wiphy);
-#ifdef NEW_FAST_CONNECT_SCHEME_SUPPORT
- RTMP_DRIVER_ADAPTER_RT28XX_WOW_DISABLE(pAd);
-#endif
-#endif
return 0;
}
@@ -2211,8 +2252,7 @@ int CFG80211_OpsSetRekeyData(struct wiphy *wiphy, struct net_device *dev,
{
void *pAdSrc = NULL;
PRTMP_ADAPTER pAd = NULL;
-
- CFG80211DBG(RT_DEBUG_OFF, ("%s\n", __FUNCTION__));
+ CFG80211DBG(RT_DEBUG_OFF, ("%s\n", __func__));
MAC80211_PAD_GET(pAdSrc, wiphy);
pAd = (PRTMP_ADAPTER)pAdSrc;
@@ -2225,17 +2265,27 @@ int CFG80211_OpsSetRekeyData(struct wiphy *wiphy, struct net_device *dev,
#endif
-#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,1,10))
+#if (KERNEL_VERSION(3, 4, 0) < LINUX_VERSION_CODE)
//Supplicant_NEW_TDLS
#ifdef CFG_TDLS_SUPPORT
static int CFG80211_OpsTdlsMgmt
(
IN struct wiphy *pWiphy,
IN struct net_device *pDev,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0))
+ IN const u8 *peer,
+#else
IN u8 *peer,
+#endif
IN u8 action_code,
IN u8 dialog_token,
IN u16 status_code,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0))
+ IN u32 peer_capability,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 17, 0))
+ IN bool initiator,
+#endif
+#endif
IN const u8 *extra_ies,
IN size_t extra_ies_len
)
@@ -2247,18 +2297,18 @@ static int CFG80211_OpsTdlsMgmt
CFG80211DBG(RT_DEBUG_WARN, ("80211> extra_ies_len : %zd ==>\n", extra_ies_len));
switch (action_code) {
- case WLAN_TDLS_SETUP_REQUEST:
- case WLAN_TDLS_DISCOVERY_REQUEST:
- case WLAN_TDLS_SETUP_CONFIRM:
- case WLAN_TDLS_TEARDOWN:
- case WLAN_TDLS_SETUP_RESPONSE:
- case WLAN_PUB_ACTION_TDLS_DISCOVER_RES:
+ case (u8)(WLAN_TDLS_SETUP_REQUEST):
+ case (u8)(WLAN_TDLS_DISCOVERY_REQUEST):
+ case (u8)(WLAN_TDLS_SETUP_CONFIRM):
+ case (u8)(WLAN_TDLS_TEARDOWN):
+ case (u8)(WLAN_TDLS_SETUP_RESPONSE):
+ case (u8)(WLAN_PUB_ACTION_TDLS_DISCOVER_RES):
cfg_tlds_build_frame(pAd,peer,dialog_token,action_code,status_code,extra_ies,extra_ies_len,FALSE,0,0);
break;
- case TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_REQ:
+ case (u8)(TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_REQ):
cfg_tdls_TunneledProbeRequest(pAd,peer,extra_ies,extra_ies_len);
break;
- case TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_RSP:
+ case (u8)(TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_RSP):
cfg_tdls_TunneledProbeResponse(pAd,peer,extra_ies,extra_ies_len);
break;
default:
@@ -2273,7 +2323,11 @@ static int CFG80211_OpsTdlsMgmt
static int CFG80211_OpsTdlsOper(
IN struct wiphy *pWiphy,
IN struct net_device *pDev,
- IN u8 *peer,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 15, 0))
+ IN const u8 *peer,
+#else
+ IN u8 *peer,
+#endif
IN enum nl80211_tdls_operation oper)
{
@@ -2283,10 +2337,10 @@ static int CFG80211_OpsTdlsOper(
switch(oper)
{
case NL80211_TDLS_ENABLE_LINK:
- RTMP_DRIVER_80211_STA_TDLS_INSERT_DELETE_PENTRY(pAd, peer, tdls_insert_entry);
+ CFG80211DRV_StaTdlsInsertDeletepEntry(pAd, peer, tdls_insert_entry);
break;
case NL80211_TDLS_DISABLE_LINK:
- RTMP_DRIVER_80211_STA_TDLS_INSERT_DELETE_PENTRY(pAd, peer, tdls_delete_entry);
+ CFG80211DRV_StaTdlsInsertDeletepEntry(pAd, peer, tdls_delete_entry);
break;
default:
break;
@@ -2296,7 +2350,7 @@ static int CFG80211_OpsTdlsOper(
#endif /*CFG_TDLS_SUPPORT*/
#endif /* LINUX_VERSION_CODE: 3.1.10 */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
static int CFG80211_OpsMgmtTx(
IN struct wiphy *pWiphy,
IN struct wireless_dev *wdev,
@@ -2306,6 +2360,9 @@ static int CFG80211_OpsMgmtTx(
static int CFG80211_OpsMgmtTx(
IN struct wiphy *pWiphy,
IN struct wireless_dev *wdev,
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
+ struct cfg80211_mgmt_tx_params *params,
+#else
IN struct ieee80211_channel *pChan,
IN bool Offchan,
IN unsigned int Wait,
@@ -2313,6 +2370,7 @@ static int CFG80211_OpsMgmtTx(
IN size_t Len,
IN bool no_cck,
IN bool done_wait_for_ack,
+#endif /* >= 3.14.0 */
IN u64 *pCookie)
#else
static int CFG80211_OpsMgmtTx(
@@ -2339,16 +2397,35 @@ static int CFG80211_OpsMgmtTx(
PRTMP_ADAPTER prAd;
PCFG80211_CTRL pCfg80211_ctrl;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
- struct net_device *dev = NULL;
+ struct net_device *pDev = NULL;
#endif /* LINUX_VERSION_CODE: 3.6.0 */
CFG80211DBG(RT_DEBUG_INFO, ("80211> %s ==>\n", __FUNCTION__));
- MAC80211_PAD_GET(pAd, pWiphy);
- prAd = (PRTMP_ADAPTER)pAd;
+
+ /* check null pointer */
+if (pWiphy == NULL || pCookie == NULL
+#if (KERNEL_VERSION(3, 18, 0) <= LINUX_VERSION_CODE)
+ || wdev == NULL || params == NULL
+#elif (KERNEL_VERSION(3, 6, 0) <= LINUX_VERSION_CODE)
+ || wdev == NULL
+#else
+ || pDev == NULL
+#endif
+ ) {
+ CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s() NULL pointer parameters!\n", __func__));
+ return 0;
+ }
+
+#if (KERNEL_VERSION(3, 6, 0) <= LINUX_VERSION_CODE)
+ pDev = wdev->netdev;
+#endif /* LINUX_VERSION_CODE: 3.6.0 */
+
+ MAC80211_PAD_GET(pAd, pWiphy);
+ prAd = (PRTMP_ADAPTER)pAd;
pCfg80211_ctrl = &prAd->cfg80211_ctrl;
pCfg80211_ctrl->TxStatusSeq = 0;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
pCfg80211_ctrl->IsNeedTxStatus = !(params->dont_wait_for_ack);
#else
pCfg80211_ctrl->IsNeedTxStatus = !done_wait_for_ack;
@@ -2357,12 +2434,20 @@ static int CFG80211_OpsMgmtTx(
pCfg80211_ctrl->IsNeedTxStatus = FALSE;
#endif
CFG80211DBG(RT_DEBUG_INFO, ("80211> IsNeedTxStatus = %d\n", pCfg80211_ctrl->IsNeedTxStatus));
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
- RTMP_DRIVER_NET_DEV_GET(pAd, &dev);
-#endif /* LINUX_VERSION_CODE: 3.6.0 */
+
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
+ if (!(params->chan)) {
+#else
+ if (!pChan) {
+#endif
+ CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s() NULL ieee80211_channel!\n", __func__));
+ *pCookie = 5678;
+ CFG80211_SendMgmtFrameDone(pAd, 5678, FALSE);
+ return 0;
+ }
/* get channel number */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
ChanId = ieee80211_frequency_to_channel(params->chan->center_freq);
#else
ChanId = ieee80211_frequency_to_channel(pChan->center_freq);
@@ -2371,7 +2456,7 @@ static int CFG80211_OpsMgmtTx(
/* Send the Frame with basic rate 6 */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
if (params->no_cck)
; //pAd->isCfgDeviceInP2p = TRUE;
#else
@@ -2382,9 +2467,10 @@ static int CFG80211_OpsMgmtTx(
#endif /* LINUX_VERSION_CODE: 3.2.0 */
- *pCookie = 5678;
+ *pCookie = 5678;
+ RTMP_DRIVER_80211_TX_NETDEV_SET(pAd, pDev);
RTMP_DRIVER_80211_CHANNEL_LOCK(pAd, ChanId);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
RTMP_DRIVER_80211_MGMT_FRAME_SEND(pAd, (void *)(params->buf), params->len);
#else
RTMP_DRIVER_80211_MGMT_FRAME_SEND(pAd, (void *)pBuf, Len);
@@ -2396,7 +2482,9 @@ static int CFG80211_OpsMgmtTx(
if (pCfg80211_ctrl->IsNeedTxStatus)
*pCookie = pCfg80211_ctrl->TxStatusSeq;
- CFG80211DBG(RT_DEBUG_TRACE, ("%s, Cookie = %d, IsNeedTxStatus (%d)\n", __func__, (int)*pCookie, pCfg80211_ctrl->IsNeedTxStatus));
+ CFG80211DBG(RT_DEBUG_TRACE, ("%s, Cookie = 0x%llx, IsNeedTxStatus (%d), DevName (%s)\n",
+ __func__, (long long unsigned int)*pCookie,
+ pCfg80211_ctrl->IsNeedTxStatus, pDev->name));
/*reset IsNeedTxStatus to FALSE*/
pCfg80211_ctrl->IsNeedTxStatus = FALSE;
return 0;
@@ -2428,7 +2516,7 @@ static int CFG80211_OpsCancelRemainOnChannel(
CFG80211DBG(RT_DEBUG_INFO, ("80211> %s ==>\n", __FUNCTION__));
MAC80211_PAD_GET(pAd, pWiphy);
/* It cause the Supplicant-based OffChannel Hang */
- RTMP_DRIVER_80211_CANCEL_REMAIN_ON_CHAN_SET(pAd, cookie);
+ RTMP_DRIVER_80211_CANCEL_REMAIN_ON_CHAN_SET(pAd, (ULONG)cookie);
return 0;
}
@@ -2442,7 +2530,11 @@ static int CFG80211_OpsSetBeacon(
VOID *pAd;
CMD_RTPRIV_IOCTL_80211_BEACON bcn;
UCHAR *beacon_head_buf, *beacon_tail_buf;
- NdisZeroMemory(&bcn,sizeof(CMD_RTPRIV_IOCTL_80211_BEACON));
+#if (KERNEL_VERSION(3, 2, 0) <= LINUX_VERSION_CODE)
+ UCHAR *proberesp_ies, *assocresp_ies;
+#endif
+
+ NdisZeroMemory(&bcn, sizeof(CMD_RTPRIV_IOCTL_80211_BEACON));
CFG80211DBG(RT_DEBUG_TRACE, ("80211> %s ==>\n", __FUNCTION__));
MAC80211_PAD_GET(pAd, pWiphy);
@@ -2454,17 +2546,36 @@ static int CFG80211_OpsSetBeacon(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
CFG80211DBG(RT_DEBUG_TRACE, ("80211>ssid = %s \n", info->ssid));
- CFG80211DBG(RT_DEBUG_TRACE, ("80211>ssid_len = %s \n", info->ssid_len));
+ CFG80211DBG(RT_DEBUG_TRACE, ("80211>ssid_len = %u\n", info->ssid_len));
CFG80211DBG(RT_DEBUG_TRACE, ("80211>beacon_ies_len = %d \n", info->beacon_ies_len));
CFG80211DBG(RT_DEBUG_TRACE, ("80211>proberesp_ies_len = %d \n", info->proberesp_ies_len));
CFG80211DBG(RT_DEBUG_TRACE, ("80211>assocresp_ies_len = %d \n", info->assocresp_ies_len));
- if (info->proberesp_ies_len > 0 && info->proberesp_ies)
- RTMP_DRIVER_80211_AP_PROBE_RSP(pAd, info->proberesp_ies, info->proberesp_ies_len);
+ if (info->proberesp_ies_len > 0 && info->proberesp_ies) {
+ os_alloc_mem(NULL, &proberesp_ies, info->proberesp_ies_len);
+ NdisCopyMemory(proberesp_ies, info->proberesp_ies, info->proberesp_ies_len);
- if (info->assocresp_ies_len > 0 && info->assocresp_ies)
- RTMP_DRIVER_80211_AP_ASSOC_RSP(pAd, info->assocresp_ies, info->assocresp_ies_len);
+ if (proberesp_ies) {
+ RTMP_DRIVER_80211_AP_PROBE_RSP(pAd, proberesp_ies, info->proberesp_ies_len);
+ os_free_mem(NULL, proberesp_ies);
+ } else
+ CFG80211DBG(RT_DEBUG_ERROR, ("%s() alloc mem for proberesp_ies failed\n",
+ __func__));
+ }
+
+ if (info->assocresp_ies_len > 0 && info->assocresp_ies) {
+ os_alloc_mem(NULL, &assocresp_ies, info->assocresp_ies_len);
+ NdisCopyMemory(assocresp_ies, info->assocresp_ies, info->assocresp_ies_len);
+
+ if (assocresp_ies) {
+ RTMP_DRIVER_80211_AP_ASSOC_RSP(pAd, assocresp_ies, info->assocresp_ies_len);
+ os_free_mem(NULL, assocresp_ies);
+ } else
+ CFG80211DBG(RT_DEBUG_ERROR,
+ ("%s() 80211>alloc mem for assocresp_ies failed\n",
+ __func__));
+ }
#endif /* LINUX_VERSION_CODE: 3.2.0 */
os_alloc_mem(NULL, &beacon_head_buf, info->head_len);
@@ -2501,7 +2612,10 @@ static int CFG80211_OpsAddBeacon(
VOID *pAd;
CMD_RTPRIV_IOCTL_80211_BEACON bcn;
UCHAR *beacon_head_buf, *beacon_tail_buf;
- NdisZeroMemory(&bcn,sizeof(CMD_RTPRIV_IOCTL_80211_BEACON));
+#if (KERNEL_VERSION(3, 2, 0) <= LINUX_VERSION_CODE)
+ UCHAR *proberesp_ies, *assocresp_ies;
+#endif
+ NdisZeroMemory(&bcn, sizeof(CMD_RTPRIV_IOCTL_80211_BEACON));
MAC80211_PAD_GET(pAd, pWiphy);
CFG80211DBG(RT_DEBUG_TRACE, ("80211> %s ==>\n", __FUNCTION__));
@@ -2513,36 +2627,56 @@ static int CFG80211_OpsAddBeacon(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0))
CFG80211DBG(RT_DEBUG_TRACE, ("80211>ssid = %s \n", info->ssid));
- CFG80211DBG(RT_DEBUG_TRACE, ("80211>ssid_len = %s \n", info->ssid_len));
-
- CFG80211DBG(RT_DEBUG_TRACE, ("80211>beacon_ies_len = %d \n", info->beacon_ies_len));
- CFG80211DBG(RT_DEBUG_TRACE, ("80211>proberesp_ies_len = %d \n", info->proberesp_ies_len));
- CFG80211DBG(RT_DEBUG_TRACE, ("80211>assocresp_ies_len = %d \n", info->assocresp_ies_len));
-
- if (info->proberesp_ies_len > 0 && info->proberesp_ies)
- RTMP_DRIVER_80211_AP_PROBE_RSP(pAd, info->proberesp_ies, info->proberesp_ies_len);
+ CFG80211DBG(RT_DEBUG_TRACE, ("80211>ssid_len = %u\n", info->ssid_len));
+
+ CFG80211DBG(RT_DEBUG_TRACE, ("80211>beacon_ies_len = %d\n", info->beacon_ies_len));
+ CFG80211DBG(RT_DEBUG_TRACE, ("80211>proberesp_ies_len = %d\n", info->proberesp_ies_len));
+ CFG80211DBG(RT_DEBUG_TRACE, ("80211>assocresp_ies_len = %d\n", info->assocresp_ies_len));
+
+ if (info->proberesp_ies_len > 0 && info->proberesp_ies) {
+ os_alloc_mem(NULL, &proberesp_ies, info->proberesp_ies_len);
+ NdisCopyMemory(proberesp_ies, info->proberesp_ies, info->proberesp_ies_len);
+
+ if (proberesp_ies) {
+ RTMP_DRIVER_80211_AP_PROBE_RSP(pAd, proberesp_ies, info->proberesp_ies_len);
+ os_free_mem(NULL, proberesp_ies);
+ } else
+ CFG80211DBG(RT_DEBUG_ERROR,
+ ("%s() alloc mem for proberesp_ies failed\n",
+ __func__));
+ }
- if (info->assocresp_ies_len > 0 && info->assocresp_ies)
- RTMP_DRIVER_80211_AP_ASSOC_RSP(pAd, info->assocresp_ies, info->assocresp_ies_len);
+ if (info->assocresp_ies_len > 0 && info->assocresp_ies) {
+ os_alloc_mem(NULL, &assocresp_ies, info->assocresp_ies_len);
+ NdisCopyMemory(assocresp_ies, info->assocresp_ies, info->assocresp_ies_len);
+
+ if (assocresp_ies) {
+ RTMP_DRIVER_80211_AP_ASSOC_RSP(pAd, assocresp_ies, info->assocresp_ies_len);
+ os_free_mem(NULL, assocresp_ies);
+ } else
+ CFG80211DBG(RT_DEBUG_ERROR,
+ ("%s() 80211>alloc mem for assocresp_ies failed\n",
+ __func__));
+ }
#endif /* LINUX_VERSION_CODE: 3.2.0 */
- os_alloc_mem(NULL, &beacon_head_buf, info->head_len);
- NdisCopyMemory(beacon_head_buf, info->head, info->head_len);
+ os_alloc_mem(NULL, &beacon_head_buf, info->head_len);
+ NdisCopyMemory(beacon_head_buf, info->head, info->head_len);
os_alloc_mem(NULL, &beacon_tail_buf, info->tail_len);
NdisCopyMemory(beacon_tail_buf, info->tail, info->tail_len);
- bcn.beacon_head_len = info->head_len;
+ bcn.beacon_head_len = info->head_len;
bcn.beacon_tail_len = info->tail_len;
- bcn.beacon_head = beacon_head_buf;
+ bcn.beacon_head = beacon_head_buf;
bcn.beacon_tail = beacon_tail_buf;
- bcn.dtim_period = info->dtim_period;
+ bcn.dtim_period = info->dtim_period;
bcn.interval = info->interval;
- RTMP_DRIVER_80211_BEACON_ADD(pAd, &bcn);
+ RTMP_DRIVER_80211_BEACON_ADD(pAd, &bcn);
- if (beacon_head_buf)
- os_free_mem(NULL, beacon_head_buf);
+ if (beacon_head_buf)
+ os_free_mem(NULL, beacon_head_buf);
if (beacon_tail_buf)
os_free_mem(NULL, beacon_tail_buf);
@@ -2572,7 +2706,8 @@ static int CFG80211_OpsStartAp(
{
VOID *pAd;
CMD_RTPRIV_IOCTL_80211_BEACON bcn;
- UCHAR *beacon_head_buf, *beacon_tail_buf;
+ UCHAR *beacon_head_buf = NULL;
+ UCHAR *beacon_tail_buf = NULL;
MAC80211_PAD_GET(pAd, pWiphy);
CFG80211DBG(RT_DEBUG_OFF, ("80211> %s ==>\n", __FUNCTION__));
@@ -2581,13 +2716,17 @@ static int CFG80211_OpsStartAp(
if (settings->beacon.head_len > 0)
{
os_alloc_mem(NULL, &beacon_head_buf, settings->beacon.head_len);
- NdisCopyMemory(beacon_head_buf, settings->beacon.head, settings->beacon.head_len);
+ if (beacon_head_buf)
+ NdisCopyMemory(beacon_head_buf,
+ settings->beacon.head, settings->beacon.head_len);
}
if (settings->beacon.tail_len > 0)
{
os_alloc_mem(NULL, &beacon_tail_buf, settings->beacon.tail_len);
- NdisCopyMemory(beacon_tail_buf, settings->beacon.tail, settings->beacon.tail_len);
+ if (beacon_tail_buf)
+ NdisCopyMemory(beacon_tail_buf,
+ settings->beacon.tail, settings->beacon.tail_len);
}
bcn.beacon_head_len = settings->beacon.head_len;
@@ -2597,13 +2736,13 @@ static int CFG80211_OpsStartAp(
bcn.dtim_period = settings->dtim_period;
bcn.interval = settings->beacon_interval;
bcn.ssid_len = settings->ssid_len;
- bcn.privacy = settings->privacy;
+ bcn.privacy = (BOOLEAN)settings->privacy;
NdisZeroMemory(&bcn.ssid[0], MAX_LEN_OF_SSID);
if (settings->ssid && (settings->ssid_len <= 32))
NdisCopyMemory(&bcn.ssid[0], settings->ssid, settings->ssid_len);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
- bcn.hidden_ssid = settings->hidden_ssid;
+ bcn.hidden_ssid = (UCHAR)settings->hidden_ssid;
#endif /*LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)*/
@@ -2634,7 +2773,7 @@ static int CFG80211_OpsStartAp(
/* get channel number */
ChanId = ieee80211_frequency_to_channel(settings->chandef.chan->center_freq);
CFG80211DBG(RT_DEBUG_OFF, ("80211> Channel = %d\n", ChanId));
- ChanInfo.ChanId = ChanId;
+ ChanInfo.ChanId = (UINT8)ChanId;
ChanInfo.IfType = RT_CMD_80211_IFTYPE_P2P_GO;
@@ -2673,9 +2812,10 @@ static int CFG80211_OpsChangeBeacon(
struct net_device *netdev,
struct cfg80211_beacon_data *info)
{
- VOID *pAd;
- CMD_RTPRIV_IOCTL_80211_BEACON bcn;
- UCHAR *beacon_head_buf, *beacon_tail_buf;
+ VOID *pAd;
+ CMD_RTPRIV_IOCTL_80211_BEACON bcn;
+ UCHAR *beacon_head_buf = NULL;
+ UCHAR *beacon_tail_buf = NULL;
MAC80211_PAD_GET(pAd, pWiphy);
CFG80211DBG(RT_DEBUG_TRACE, ("80211> %s ==>\n", __FUNCTION__));
@@ -2683,12 +2823,14 @@ static int CFG80211_OpsChangeBeacon(
if (info->head_len > 0)
{
os_alloc_mem(NULL, &beacon_head_buf, info->head_len);
- NdisCopyMemory(beacon_head_buf, info->head, info->head_len);
+ if (beacon_head_buf)
+ NdisCopyMemory(beacon_head_buf, info->head, info->head_len);
}
if (info->tail_len > 0) {
os_alloc_mem(NULL, &beacon_tail_buf, info->tail_len);
- NdisCopyMemory(beacon_tail_buf, info->tail, info->tail_len);
+ if (beacon_tail_buf)
+ NdisCopyMemory(beacon_tail_buf, info->tail, info->tail_len);
}
memset(&bcn, 0, sizeof(CMD_RTPRIV_IOCTL_80211_BEACON));
@@ -2755,9 +2897,22 @@ static int CFG80211_OpsChangeBss(
static int CFG80211_OpsStaDel(
struct wiphy *pWiphy,
struct net_device *dev,
- UINT8 *pMacAddr)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
+ struct station_del_parameters *params
+#else
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0))
+ const UINT8 * pMacAddr
+#else
+ UINT8 * pMacAddr
+#endif
+#endif
+
+)
{
VOID *pAd;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
+ const u8 *pMacAddr = params->mac;
+#endif
MAC80211_PAD_GET(pAd, pWiphy);
CFG80211DBG(RT_DEBUG_TRACE, ("80211> %s ==>\n", __FUNCTION__));
@@ -2769,7 +2924,7 @@ static int CFG80211_OpsStaDel(
{
CFG80211DBG(RT_DEBUG_TRACE, ("80211> Delete STA(%02X:%02X:%02X:%02X:%02X:%02X) ==>\n",
PRINT_MAC(pMacAddr)));
- RTMP_DRIVER_80211_AP_STA_DEL(pAd, pMacAddr);
+ CFG80211_ApStaDel(pAd, pMacAddr);
}
return 0;
@@ -2778,7 +2933,11 @@ static int CFG80211_OpsStaDel(
static int CFG80211_OpsStaAdd(
struct wiphy *wiphy,
struct net_device *dev,
- UINT8 *mac,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0))
+ const UINT8 * mac,
+#else
+ UINT8 * mac,
+#endif
struct station_parameters *params)
{
CFG80211DBG(RT_DEBUG_TRACE, ("80211> %s ==>\n", __FUNCTION__));
@@ -2788,7 +2947,11 @@ static int CFG80211_OpsStaAdd(
static int CFG80211_OpsStaChg(
struct wiphy *pWiphy,
struct net_device *dev,
- UINT8 *pMacAddr,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0))
+ const UINT8 * pMacAddr,
+#else
+ UINT8 * pMacAddr,
+#endif
struct station_parameters *params)
{
void *pAd;
@@ -2818,13 +2981,13 @@ static int CFG80211_OpsStaChg(
{
CFG80211DBG(RT_DEBUG_TRACE, ("80211> STA(%02X:%02X:%02X:%02X:%02X:%02X) ==> PortSecured\n",
PRINT_MAC(pMacAddr)));
- RTMP_DRIVER_80211_AP_MLME_PORT_SECURED(pAd, pMacAddr, 1);
+ CFG80211_StaPortSecured(pAd, pMacAddr, 1);
}
else
{
CFG80211DBG(RT_DEBUG_TRACE, ("80211> STA(%02X:%02X:%02X:%02X:%02X:%02X) ==> PortNotSecured\n",
PRINT_MAC(pMacAddr)));
- RTMP_DRIVER_80211_AP_MLME_PORT_SECURED(pAd, pMacAddr, 0);
+ CFG80211_StaPortSecured(pAd, pMacAddr, 0);
}
return 0;
}
@@ -2834,6 +2997,9 @@ static int CFG80211_OpsStaChg(
static struct wireless_dev* CFG80211_OpsVirtualInfAdd(
IN struct wiphy *pWiphy,
IN const char *name,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
+ IN unsigned char name_assign_type,
+#endif
IN enum nl80211_iftype Type,
IN u32 *pFlags,
struct vif_params *pParams)
@@ -2979,7 +3145,7 @@ ralink_mgmt_stypes[NUM_NL80211_IFTYPES] = {
};
#endif
-#if 0
+
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
static const struct ieee80211_iface_limit ra_p2p_sta_go_limits[] =
{
@@ -2988,21 +3154,16 @@ static const struct ieee80211_iface_limit ra_p2p_sta_go_limits[] =
.types = BIT(NL80211_IFTYPE_STATION) |
BIT(NL80211_IFTYPE_AP),
},
-#if 0
+
{
.max = 1,
.types = BIT(NL80211_IFTYPE_P2P_GO) |
- BIT(NL80211_IFTYPE_AP),
+ BIT(NL80211_IFTYPE_P2P_CLIENT),
},
- {
- .max = 1,
- .types = BIT(NL80211_IFTYPE_P2P_CLIENT),
- },
-#endif
};
-static const struct ieee80211_iface_combination
-ra_iface_combinations_p2p[] = {
+static const struct ieee80211_iface_combination
+ra_iface_combinations_ap_sta[] = {
{
#ifdef RT_CFG80211_P2P_MULTI_CHAN_SUPPORT
.num_different_channels = 2,
@@ -3011,59 +3172,42 @@ ra_iface_combinations_p2p[] = {
#endif /* RT_CFG80211_P2P_MULTI_CHAN_SUPPORT */
.max_interfaces = 3,
/* CFG TODO*/
- //.beacon_int_infra_match = true,
+ /* .beacon_int_infra_match = true,*/
.limits = ra_p2p_sta_go_limits,
- .n_limits = ARRAY_SIZE(ra_p2p_sta_go_limits),
- },
-};
-#endif /* LINUX_VERSION_CODE: 3.8.0 */
-#endif
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
-static const struct ieee80211_iface_limit ra_p2p_sta_go_limits[] =
-{
- {
- .max = 3,
- .types = BIT(NL80211_IFTYPE_STATION)| BIT(NL80211_IFTYPE_AP),
- },
- {
- .max = 1,
- .types = BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_CLIENT),
+ .n_limits = 1,
},
};
-static const struct ieee80211_iface_combination
+static const struct ieee80211_iface_combination
ra_iface_combinations_p2p[] = {
{
+#ifdef RT_CFG80211_P2P_MULTI_CHAN_SUPPORT
+ .num_different_channels = 2,
+#else
.num_different_channels = 1,
+#endif /* RT_CFG80211_P2P_MULTI_CHAN_SUPPORT */
.max_interfaces = 3,
- //.beacon_int_infra_match = true,
- .limits = ra_p2p_sta_go_limits,
- .n_limits = 1,//ARRAY_SIZE(ra_p2p_sta_go_limits),
- },
-};
-
-static const struct ieee80211_iface_combination
-ra_iface_combinations_p2p_GO[] = {
- {
- .num_different_channels = 1,
- .max_interfaces = 3,
+ /* CFG TODO*/
//.beacon_int_infra_match = true,
.limits = ra_p2p_sta_go_limits,
.n_limits = ARRAY_SIZE(ra_p2p_sta_go_limits),
},
};
-const struct ieee80211_iface_combination *p_ra_iface_combinations_ap_sta = ra_iface_combinations_p2p;
-const INT ra_iface_combinations_ap_sta_num = ARRAY_SIZE(ra_iface_combinations_p2p);
+const struct ieee80211_iface_combination *p_ra_iface_combinations_ap_sta = ra_iface_combinations_ap_sta;
+const INT ra_iface_combinations_ap_sta_num = ARRAY_SIZE(ra_iface_combinations_ap_sta);
+
+const struct ieee80211_iface_combination *p_ra_iface_combinations_p2p = ra_iface_combinations_p2p;
+const INT ra_iface_combinations_p2p_num = ARRAY_SIZE(ra_iface_combinations_p2p);
+
+#endif /* LINUX_VERSION_CODE: 3.8.0 */
-const struct ieee80211_iface_combination *p_ra_iface_combinations_p2p = ra_iface_combinations_p2p_GO;
-const INT ra_iface_combinations_p2p_num = ARRAY_SIZE(ra_iface_combinations_p2p_GO);
-#endif
struct cfg80211_ops CFG80211_Ops = {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
.suspend = CFG80211_OpsSuspend,
.set_wakeup = CFG80211_OpsSetWakeup,
.resume = CFG80211_OpsResume,
+ .set_rekey_data = CFG80211_OpsSetRekeyData,
#endif
#ifdef CFG_TDLS_SUPPORT
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,4,0))
@@ -3305,7 +3449,7 @@ static struct wireless_dev *CFG80211_WdevAlloc(
set_wiphy_dev(pWdev->wiphy, pDev);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
- pWdev->wiphy->max_scan_ssids = pBandInfo->MaxBssTable;
+ pWdev->wiphy->max_scan_ssids = (u8)pBandInfo->MaxBssTable;
#endif /* KERNEL_VERSION */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
@@ -3351,6 +3495,10 @@ static struct wireless_dev *CFG80211_WdevAlloc(
/* init channel information */
CFG80211_SupBandInit(pCfg80211_CB, pBandInfo, pWdev->wiphy, NULL, NULL);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
+ pWdev->wiphy->regulatory_flags |= (REGULATORY_DISABLE_BEACON_HINTS|REGULATORY_CUSTOM_REG);
+#endif /* endif */
+
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
/* CFG80211_SIGNAL_TYPE_MBM: signal strength in mBm (100*dBm) */
pWdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
@@ -3377,7 +3525,7 @@ static struct wireless_dev *CFG80211_WdevAlloc(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
#ifdef CONFIG_PM
#ifdef MT_WOW_SUPPORT
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0))
pWdev->wiphy->wowlan = &mtk_wowlan_support;
#else
pWdev->wiphy->wowlan.flags = WIPHY_WOWLAN_MAGIC_PKT;
@@ -3415,8 +3563,9 @@ static struct wireless_dev *CFG80211_WdevAlloc(
//pWdev->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0))
- pWdev->wiphy->iface_combinations = ra_iface_combinations_p2p;
- pWdev->wiphy->n_iface_combinations = ARRAY_SIZE(ra_iface_combinations_p2p);
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] Change to AP/STA combination mode!!\n", __func__));
+ pWdev->wiphy->iface_combinations = p_ra_iface_combinations_ap_sta;
+ pWdev->wiphy->n_iface_combinations = ARRAY_SIZE(ra_iface_combinations_ap_sta);
#endif /* LINUX_VERSION_CODE: 3.8.0 */
if (wiphy_register(pWdev->wiphy) < 0)
@@ -3501,7 +3650,7 @@ BOOLEAN CFG80211_Register(
#if 0
CFG_TODO
struct ieee80211_channel *ch;
- ch = pCfg80211_CB->pCfg80211_Wdev->wiphy->bands[IEEE80211_BAND_2GHZ]->channels;
+ ch = pCfg80211_CB->pCfg80211_Wdev->wiphy->bands[KAL_BAND_2GHZ]->channels;
cfg80211_chandef_create(&pCfg80211_CB->pCfg80211_Wdev->preset_chandef, ch, NL80211_CHAN_NO_HT);
#endif
@@ -3585,7 +3734,7 @@ static INT32 CFG80211_RegNotifier(
is not permitted.
*/
#ifdef RELEASE_EXCLUDE
- if (pWiphy->bands[IEEE80211_BAND_5GHZ])
+ if (pWiphy->bands[KAL_BAND_5GHZ])
{
struct ieee80211_supported_band *pBand;
struct ieee80211_channel *pChannel;
@@ -3615,7 +3764,7 @@ static INT32 CFG80211_RegNotifier(
IEEE80211_CHAN_NO_IBSS |
IEEE80211_CHAN_PASSIVE_SCAN;
*/
- pBand = pWiphy->bands[IEEE80211_BAND_5GHZ];
+ pBand = pWiphy->bands[KAL_BAND_5GHZ];
for(IdChan=0; IdChan<pBand->n_channels; IdChan++)
{
@@ -3734,7 +3883,7 @@ static INT32 CFG80211_RegNotifier(
is not permitted.
*/
#ifdef RELEASE_EXCLUDE
- if (pWiphy->bands[IEEE80211_BAND_5GHZ])
+ if (pWiphy->bands[KAL_BAND_5GHZ])
{
struct ieee80211_supported_band *pBand;
struct ieee80211_channel *pChannel;
@@ -3764,7 +3913,7 @@ static INT32 CFG80211_RegNotifier(
IEEE80211_CHAN_NO_IBSS |
IEEE80211_CHAN_PASSIVE_SCAN;
*/
- pBand = pWiphy->bands[IEEE80211_BAND_5GHZ];
+ pBand = pWiphy->bands[KAL_BAND_5GHZ];
for(IdChan=0; IdChan<pBand->n_channels; IdChan++)
{
diff --git a/os/linux/cfg80211/cfg80211_ap.c b/os/linux/cfg80211/cfg80211_ap.c
index 441ffdf..7094157 100755
--- a/os/linux/cfg80211/cfg80211_ap.c
+++ b/os/linux/cfg80211/cfg80211_ap.c
@@ -177,7 +177,7 @@ static INT CFG80211DRV_UpdateApSettingFromBeacon(PRTMP_ADAPTER pAd, UINT mbss_id
else if (pBeacon->ssid_len != 0)
{
NdisZeroMemory(pMbss->Ssid, pMbss->SsidLen);
- pMbss->SsidLen = pBeacon->ssid_len;
+ pMbss->SsidLen = (UCHAR)pBeacon->ssid_len;
NdisCopyMemory(pMbss->Ssid, ssid_ie+2, pMbss->SsidLen);
DBGPRINT(RT_DEBUG_ERROR,("\nCFG : SSID: %s, %d\n", pMbss->Ssid, pMbss->SsidLen));
}
@@ -197,7 +197,7 @@ static INT CFG80211DRV_UpdateApSettingFromBeacon(PRTMP_ADAPTER pAd, UINT mbss_id
if ((pBeacon->ssid_len != 0)
&& (pBeacon->ssid_len <= MAX_LEN_OF_SSID))
{
- pMbss->SsidLen = pBeacon->ssid_len;
+ pMbss->SsidLen = (UCHAR)pBeacon->ssid_len;
NdisCopyMemory(pMbss->Ssid, pBeacon->ssid, pMbss->SsidLen);
DBGPRINT(RT_DEBUG_ERROR,("80211> [Hidden] SSID: %s, %d\n", pMbss->Ssid, pMbss->SsidLen));
}
@@ -224,13 +224,13 @@ static INT CFG80211DRV_UpdateApSettingFromBeacon(PRTMP_ADAPTER pAd, UINT mbss_id
if (pBeacon->interval != 0)
{
DBGPRINT(RT_DEBUG_TRACE,("CFG_TIM New BI %d\n", pBeacon->interval));
- pAd->CommonCfg.BeaconPeriod = pBeacon->interval;
+ pAd->CommonCfg.BeaconPeriod = (USHORT)pBeacon->interval;
}
if (pBeacon->dtim_period != 0)
{
DBGPRINT(RT_DEBUG_TRACE, ("CFG_TIM New DP %d\n", pBeacon->dtim_period));
- pAd->ApCfg.DtimPeriod = pBeacon->dtim_period;
+ pAd->ApCfg.DtimPeriod = (UCHAR)pBeacon->dtim_period;
}
@@ -351,7 +351,7 @@ VOID CFG80211_UpdateBeacon(
NdisCopyMemory(pBeaconFrame, beacon_head_buf, beacon_head_len);
/* 2. Update the Location of TIM IE */
- pAd->ApCfg.MBSSID[apidx].TimIELocationInBeacon = beacon_head_len;
+ pAd->ApCfg.MBSSID[apidx].TimIELocationInBeacon = (UCHAR)beacon_head_len;
/* 3. Store the Tail Part For appending later */
if (pCfg80211_ctrl->beacon_tail_buf != NULL)
@@ -409,7 +409,7 @@ VOID CFG80211_UpdateBeacon(
#endif /* MT_MAC */
/* 4. Update the TIM IE */
- New_Tim_Len = CFG80211DRV_UpdateTimIE(pAd, apidx, pBeaconFrame,
+ New_Tim_Len = (UCHAR)CFG80211DRV_UpdateTimIE(pAd, apidx, pBeaconFrame,
pAd->ApCfg.MBSSID[apidx].TimIELocationInBeacon);
/* 5. Update the Buffer AFTER TIM IE */
@@ -501,7 +501,7 @@ BOOLEAN CFG80211DRV_OpsBeaconAdd(VOID *pAdOrg, VOID *pData)
/* for Concurrent, AP/P2P GO use HW_BSSID 1 */
//wdev->hw_bssid_idx = CFG_GO_BSSID_IDX;
- wdev->hw_bssid_idx = apidx;
+ wdev->hw_bssid_idx = (UCHAR)apidx;
#ifdef RT_CFG80211_SUPPORT
#ifdef RT_CFG80211_P2P_SUPPORT
@@ -560,7 +560,7 @@ BOOLEAN CFG80211DRV_OpsBeaconAdd(VOID *pAdOrg, VOID *pData)
wdev->wdev_type = WDEV_TYPE_AP;
wdev->func_dev = (void *)&pAd->ApCfg.MBSSID[apidx];
wdev->sys_handle = (void *)pAd;
- wdev->func_idx = apidx; //NEW
+ wdev->func_idx = (CHAR)apidx;
#if 0
@@ -728,7 +728,7 @@ BOOLEAN CFG80211DRV_OpsBeaconAdd(VOID *pAdOrg, VOID *pData)
//MlmeSetTxPreamble(pAd, (USHORT)pAd->CommonCfg.TxPreamble);
//MlmeUpdateTxRates(pAd, FALSE, MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO + apidx);
#ifdef RT_CFG80211_P2P_SUPPORT
- MlmeUpdateTxRates(pAd, FALSE, MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO + apidx);
+ MlmeUpdateTxRates(pAd, FALSE, (UCHAR)(MIN_NET_DEVICE_FOR_CFG80211_VIF_P2P_GO + apidx));
#else
MlmeUpdateTxRates(pAd, FALSE, apidx);
#endif /*RT_CFG80211_P2P_SUPPORT*/
@@ -813,12 +813,13 @@ BOOLEAN CFG80211DRV_ApKeyDel(
#endif
{
DBGPRINT(RT_DEBUG_TRACE,("CFG: AsicRemoveSharedKeyEntry %d\n", pKeyInfo->KeyId));
- AsicRemoveSharedKeyEntry(pAd, apidx, pKeyInfo->KeyId);
+ AsicRemoveSharedKeyEntry(pAd, (UCHAR)apidx, pKeyInfo->KeyId);
#ifdef MT_MAC
- if (pAd->chipCap.hif_type == HIF_MT)
- CmdProcAddRemoveKey(pAd, 1, apidx, pKeyInfo->KeyId, BSS0, SHAREDKEYTABLE,
- &pAd->SharedKey[apidx][pKeyInfo->KeyId], BROADCAST_ADDR);
+ if (pAd->chipCap.hif_type == HIF_MT)
+ CmdProcAddRemoveKey(pAd, 1, (UCHAR)apidx,
+ pKeyInfo->KeyId, BSS0, SHAREDKEYTABLE,
+ &pAd->SharedKey[apidx][pKeyInfo->KeyId], BROADCAST_ADDR);
#endif /* MT_MAC */
}
else
@@ -900,11 +901,11 @@ BOOLEAN CFG80211DRV_ApKeyAdd(
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdOrg;
CMD_RTPRIV_IOCTL_80211_KEY *pKeyInfo;
MAC_TABLE_ENTRY *pEntry = NULL;
- UINT Wcid = 0;
+ UCHAR Wcid = 0;
#ifdef RT_CFG80211_P2P_SUPPORT
- UINT apidx = CFG_GO_BSSID_IDX;
+ UCHAR apidx = CFG_GO_BSSID_IDX;
#else
- UINT apidx = MAIN_MBSSID;
+ UCHAR apidx = MAIN_MBSSID;
#endif /*RT_CFG80211_P2P_SUPPORT*/
BSS_STRUCT *pMbss = &pAd->ApCfg.MBSSID[apidx];
@@ -932,7 +933,8 @@ BOOLEAN CFG80211DRV_ApKeyAdd(
else
pAd->SharedKey[apidx][pKeyInfo->KeyId].CipherAlg = CIPHER_WEP128;
- AsicAddSharedKeyEntry(pAd, apidx, pKeyInfo->KeyId, pSharedKey);
+ AsicAddSharedKeyEntry(pAd, (UCHAR)apidx,
+ pKeyInfo->KeyId, pSharedKey);
}
}
else if(pKeyInfo->KeyType == RT_CMD_80211_KEY_WPA)
@@ -984,8 +986,10 @@ BOOLEAN CFG80211DRV_ApKeyAdd(
pEntry->PairwiseKey.CipherAlg = CIPHER_AES;
AsicAddPairwiseKeyEntry(pAd, (UCHAR)pEntry->Aid, &pEntry->PairwiseKey);
- RTMPSetWcidSecurityInfo(pAd, pEntry->apidx, (UINT8)(pKeyInfo->KeyId & 0x0fff),
- pEntry->PairwiseKey.CipherAlg, pEntry->Aid, PAIRWISEKEYTABLE);
+ RTMPSetWcidSecurityInfo(pAd, pEntry->apidx,
+ (UINT8)(pKeyInfo->KeyId & 0x0fff),
+ pEntry->PairwiseKey.CipherAlg, (UINT8)pEntry->Aid,
+ PAIRWISEKEYTABLE);
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT)
@@ -1052,8 +1056,10 @@ BOOLEAN CFG80211DRV_ApKeyAdd(
pEntry->PairwiseKey.CipherAlg = CIPHER_TKIP;
AsicAddPairwiseKeyEntry(pAd, (UCHAR)pEntry->Aid, &pEntry->PairwiseKey);
- RTMPSetWcidSecurityInfo(pAd, pEntry->apidx, (UINT8)(pKeyInfo->KeyId & 0x0fff),
- pEntry->PairwiseKey.CipherAlg, pEntry->Aid, PAIRWISEKEYTABLE);
+ RTMPSetWcidSecurityInfo(pAd, pEntry->apidx,
+ (UINT8)(pKeyInfo->KeyId & 0x0fff),
+ pEntry->PairwiseKey.CipherAlg, (UINT8)pEntry->Aid,
+ PAIRWISEKEYTABLE);
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT)
@@ -1077,7 +1083,7 @@ BOOLEAN CFG80211DRV_ApKeyAdd(
INT CFG80211_StaPortSecured(
IN VOID *pAdCB,
- IN UCHAR *pMac,
+ IN const UCHAR * pMac,
IN UINT flag)
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
@@ -1112,7 +1118,7 @@ INT CFG80211_StaPortSecured(
INT CFG80211_ApStaDel(
IN VOID *pAdCB,
- IN UCHAR *pMac)
+ IN const u8 *pMac)
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
MAC_TABLE_ENTRY *pEntry;
@@ -1151,9 +1157,9 @@ INT CFG80211_setApDefaultKey(
DBGPRINT(RT_DEBUG_TRACE, ("Set Ap Default Key: %d\n", Data));
#ifdef RT_CFG80211_P2P_SUPPORT
- pAd->ApCfg.MBSSID[CFG_GO_BSSID_IDX].wdev.DefaultKeyId = Data;
+ pAd->ApCfg.MBSSID[CFG_GO_BSSID_IDX].wdev.DefaultKeyId = (UCHAR)Data;
#else
- pAd->ApCfg.MBSSID[MAIN_MBSSID].wdev.DefaultKeyId = Data;
+ pAd->ApCfg.MBSSID[MAIN_MBSSID].wdev.DefaultKeyId = UCHAR)Data;
#endif /*RT_CFG80211_P2P_SUPPORT*/
return 0;
diff --git a/os/linux/cfg80211/cfg80211_inf.c b/os/linux/cfg80211/cfg80211_inf.c
index b3828e2..a99f1bb 100755
--- a/os/linux/cfg80211/cfg80211_inf.c
+++ b/os/linux/cfg80211/cfg80211_inf.c
@@ -64,7 +64,9 @@ BOOLEAN CFG80211DRV_OpsChgVirtualInf(RTMP_ADAPTER *pAd, VOID *pData)
CHAR tr_tb_idx = MAX_LEN_OF_MAC_TABLE + apidx;
- printk(" CFG80211DRV_OpsChgVirtualInf newType %d oldType %d \n",newType,oldType);
+ DBGPRINT(RT_DEBUG_OFF,
+ (" CFG80211DRV_OpsChgVirtualInf newType %d oldType %d\n",
+ newType, oldType));
if (strcmp(pVifParm->net_dev->name, "p2p0") == 0)
{
@@ -198,7 +200,7 @@ BOOLEAN CFG80211DRV_OpsChgVirtualInf(RTMP_ADAPTER *pAd, VOID *pData)
pAd->flg_apcli_init = FALSE;
RT_MOD_INC_USE_COUNT();
- printk("iverson ApCli_Close \n");
+ DBGPRINT(RT_DEBUG_OFF, ("iverson ApCli_Close\n"));
AsicSetBssid(pAd, pAd->cfg80211_ctrl.P2PCurrentAddress, 0x1);
AsicSetBssid(pAd, pAd->CurrentAddress, 0x0);
pAd->cfg80211_ctrl.isCfgInApMode = RT_CMD_80211_IFTYPE_STATION;
@@ -605,13 +607,13 @@ static INT CFG80211_PacketSend(PNDIS_PACKET pPktSrc, PNET_DEV pDev, RTMP_NET_PAC
ASSERT(pAd);
/* To Indicate from Which VIF */
- switch (pDev->ieee80211_ptr->iftype)
+ switch ((UINT)(pDev->ieee80211_ptr->iftype))
{
- case RT_CMD_80211_IFTYPE_AP:
+ case ((UINT)(RT_CMD_80211_IFTYPE_AP)):
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
- case RT_CMD_80211_IFTYPE_P2P_GO:;
+ case ((UINT)(RT_CMD_80211_IFTYPE_P2P_GO)):
if(!OPSTATUS_TEST_FLAG(pAd, fOP_AP_STATUS_MEDIA_STATE_CONNECTED))
{
DBGPRINT(RT_DEBUG_TRACE, ("Drop the Packet due P2P GO not in ready state\n"));
@@ -621,10 +623,12 @@ static INT CFG80211_PacketSend(PNDIS_PACKET pPktSrc, PNET_DEV pDev, RTMP_NET_PAC
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
break;
- case RT_CMD_80211_IFTYPE_P2P_CLIENT:
- case RT_CMD_80211_IFTYPE_STATION:
+ case ((UINT)(RT_CMD_80211_IFTYPE_P2P_CLIENT)):
+ case ((UINT)(RT_CMD_80211_IFTYPE_STATION)):
RTMP_SET_PACKET_OPMODE(pPktSrc, OPMODE_AP);
- //printk("%s: tx ==> %d\n", __FUNCTION__, RTMP_GET_PACKET_OPMODE(pPktSrc));
+ /* DBGPRINT(RT_DEBUG_OFF,
+ * ("%s: tx ==> %d\n", __FUNCTION__, RTMP_GET_PACKET_OPMODE(pPktSrc)));
+ */
break;
default:
@@ -705,9 +709,9 @@ VOID RTMP_CFG80211_VirtualIF_Init(
APCLI_STRUCT *pApCliEntry;
struct wifi_dev *wdev;
#ifdef RT_CFG80211_P2P_SUPPORT
- UINT apidx = CFG_GO_BSSID_IDX;
+ CHAR apidx = CFG_GO_BSSID_IDX;
#else
- UINT apidx = MAIN_MBSSID;
+ CHAR apidx = MAIN_MBSSID;
#endif /*RT_CFG80211_P2P_SUPPORT*/
#ifdef MT_MAC
@@ -724,7 +728,8 @@ VOID RTMP_CFG80211_VirtualIF_Init(
UINT32 MC_RowID = 0, IoctlIF = 0, Inf = INT_P2P;
memset(preIfName, 0, sizeof(preIfName));
- NdisCopyMemory(preIfName, pDevName, devNameLen-1);
+ NdisCopyMemory(preIfName, pDevName,
+ (devNameLen <= IFNAMSIZ) ? (devNameLen - 1) : (IFNAMSIZ - 1));
pNetDevOps=&netDevHook;
@@ -777,7 +782,7 @@ VOID RTMP_CFG80211_VirtualIF_Init(
RTMP_IO_READ32(pAd, LPON_BTEIR, &Value);//read BTEIR bit[31:29] for determine to choose which byte to extend BSSID mac address.
Value = Value | (0x2 << 29);//Note: Carter, make default will use byte4 bit[31:28] to extend Mac Address
RTMP_IO_WRITE32(pAd, LPON_BTEIR, Value);
- MacByte = Value >> 29;
+ MacByte = (UCHAR)(Value >> 29);
pNetDevOps->devAddr[0] |= 0x2;
@@ -853,7 +858,9 @@ VOID RTMP_CFG80211_VirtualIF_Init(
DBGPRINT(RT_DEBUG_ERROR, ("%s: Assign wdev idx for %s failed, free net device!\n",
__FUNCTION__,RTMP_OS_NETDEV_GET_DEVNAME(new_dev_p)));
RtmpOSNetDevFree(new_dev_p);
- break;
+ new_dev_p = NULL;
+ wdev->if_dev = NULL;
+ return;
}
/* init MAC address of virtual network interface */
@@ -900,7 +907,9 @@ VOID RTMP_CFG80211_VirtualIF_Init(
DBGPRINT(RT_DEBUG_ERROR, ("%s: Assign wdev idx for %s failed, free net device!\n",
__FUNCTION__,RTMP_OS_NETDEV_GET_DEVNAME(new_dev_p)));
RtmpOSNetDevFree(new_dev_p);
- break;
+ new_dev_p = NULL;
+ wdev->if_dev = NULL;
+ return;
}
COPY_MAC_ADDR(pAd->ApCfg.MBSSID[apidx].wdev.if_addr, pNetDevOps->devAddr);
@@ -944,7 +953,8 @@ VOID RTMP_CFG80211_VirtualIF_Init(
VOID RTMP_CFG80211_VirtualIF_Remove(
IN VOID *pAdSrc,
IN PNET_DEV dev_p,
- IN UINT32 DevType)
+ IN UINT32 DevType,
+ BOOLEAN rtnl_lock)
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc;
@@ -999,7 +1009,10 @@ VOID RTMP_CFG80211_VirtualIF_Remove(
SetCommonHT(pAd);
wdev_bcn_buf_deinit(pAd, &pAd->ApCfg.MBSSID[apidx].bcn_buf);
- RtmpOSNetDevDetach(dev_p);
+ if (rtnl_lock)
+ RtmpOSNetDevDetach(dev_p);
+ else
+ RtmpOSNetDevDetach_WithoutLock(dev_p);
rtmp_wdev_idx_unreg(pAd, wdev);
wdev->if_dev = NULL;
}
@@ -1012,7 +1025,9 @@ VOID RTMP_CFG80211_VirtualIF_Remove(
//actually not mcc still need to check this!
if (pAd->Mlme.bStartScc == TRUE)
{
- printk("GC remove & switch to Infra BW = %d pAd->StaCfg.wdev.CentralChannel %d \n",pAd->StaCfg.wdev.bw,pAd->StaCfg.wdev.CentralChannel);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("GC remove & switch to Infra BW = %d CentralChannel %d\n",
+ pAd->StaCfg.wdev.bw, pAd->StaCfg.wdev.CentralChannel));
pAd->Mlme.bStartScc = FALSE;
AsicSwitchChannel(pAd, pAd->StaCfg.wdev.CentralChannel, FALSE);
AsicLockChannel(pAd, pAd->StaCfg.wdev.CentralChannel);
@@ -1026,17 +1041,27 @@ VOID RTMP_CFG80211_VirtualIF_Remove(
OPSTATUS_CLEAR_FLAG(pAd, fOP_AP_STATUS_MEDIA_STATE_CONNECTED);
- cfg80211_disconnected(dev_p, 0, NULL, 0, GFP_KERNEL);
+ cfg80211_disconnected(dev_p, WLAN_REASON_DEAUTH_LEAVING, NULL, 0,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0))
+ TRUE,/* locally_generated */
+#endif
+ GFP_KERNEL);
NdisZeroMemory(pAd->ApCfg.ApCliTab[MAIN_MBSSID].CfgApCliBssid, MAC_ADDR_LEN);
- RtmpOSNetDevDetach(dev_p);
+ if (rtnl_lock)
+ RtmpOSNetDevDetach(dev_p);
+ else
+ RtmpOSNetDevDetach_WithoutLock(dev_p);
rtmp_wdev_idx_unreg(pAd, wdev);
pAd->flg_apcli_init = FALSE;
wdev->if_dev = NULL;
}
else /* Never Opened When New Netdevice on */
{
- RtmpOSNetDevDetach(dev_p);
+ if (rtnl_lock)
+ RtmpOSNetDevDetach(dev_p);
+ else
+ RtmpOSNetDevDetach_WithoutLock(dev_p);
}
if (dev_p->ieee80211_ptr)
@@ -1066,9 +1091,11 @@ VOID RTMP_CFG80211_AllVirtualIF_Remove(
while ((pDevEntry != NULL) && (pCacheList->size != 0))
{
- RtmpOSNetDevProtect(1);
- RTMP_CFG80211_VirtualIF_Remove(pAd, pDevEntry->net_dev, pDevEntry->net_dev->ieee80211_ptr->iftype);
- RtmpOSNetDevProtect(0);
+ /* Remove wifi dirver to lock the rtnl_lock here.
+ * It will cause kernel crash sometimes.
+ * The lock action leave to kernel.
+ */
+ RTMP_CFG80211_VirtualIF_Remove(pAd, pDevEntry->net_dev, pDevEntry->net_dev->ieee80211_ptr->iftype, TRUE);
pListEntry = pListEntry->pNext;
pDevEntry = (PCFG80211_VIF_DEV)pListEntry;
@@ -1163,7 +1190,7 @@ static INT CFG80211_DummyP2pIf_Open(
struct wireless_dev *wdev = dev_p->ieee80211_ptr;
#ifdef RT_CFG80211_P2P_STATIC_CONCURRENT_DEVICE
VOID *pAdSrc;
- printk("CFG80211_DummyP2pIf_Open=======> Open\n");
+ DBGPRINT(RT_DEBUG_OFF, ("CFG80211_DummyP2pIf_Open=======> Open\n"));
pAdSrc = RTMP_OS_NETDEV_GET_PRIV(dev_p);
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc;
#endif /* RT_CFG80211_P2P_STATIC_CONCURRENT_DEVICE */
@@ -1281,16 +1308,13 @@ static INT CFG80211_DummyP2pIf_Close(
#endif /* LINUX_VERSION_CODE: 3.7.0 */
));
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
{
- extern const struct ieee80211_iface_combination *p_ra_iface_combinations_ap_sta;
- extern const INT ra_iface_combinations_ap_sta_num;
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] Change to AP/STA combination mode!!\n", __func__));
wdev->wiphy->iface_combinations = p_ra_iface_combinations_ap_sta;
- wdev->wiphy->n_iface_combinations = ra_iface_combinations_ap_sta_num;
+ wdev->wiphy->n_iface_combinations = ra_iface_combinations_ap_sta_num;
}
-#endif
-
- wdev->iftype = NL80211_IFTYPE_STATION;
+#endif /* endif */
#ifdef RT_CFG80211_P2P_STATIC_CONCURRENT_DEVICE
RT_MOD_DEC_USE_COUNT();
#endif /* RT_CFG80211_P2P_STATIC_CONCURRENT_DEVICE */
@@ -1367,7 +1391,10 @@ VOID RTMP_CFG80211_DummyP2pIf_Remove(
struct wifi_dev *wdev = &cfg80211_ctrl->dummy_p2p_wdev;
DBGPRINT(RT_DEBUG_TRACE, (" %s =====> \n", __FUNCTION__));
- RtmpOSNetDevProtect(1);
+ /* Remove wifi dirver to lock the rtnl_lock here.
+ * It will cause kernel crash sometimes.
+ * The lock action leave to kernel.
+ */
if (dummy_p2p_net_dev)
{
@@ -1392,14 +1419,11 @@ VOID RTMP_CFG80211_DummyP2pIf_Remove(
kfree(dummy_p2p_net_dev->ieee80211_ptr);
dummy_p2p_net_dev->ieee80211_ptr = NULL;
}
-
- RtmpOSNetDevProtect(0);
- RtmpOSNetDevFree(dummy_p2p_net_dev);
- RtmpOSNetDevProtect(1);
-
+
+ RtmpOSNetDevFree(dummy_p2p_net_dev);
+
cfg80211_ctrl->flg_cfg_dummy_p2p_init = FALSE;
}
- RtmpOSNetDevProtect(0);
DBGPRINT(RT_DEBUG_TRACE, (" %s <=====\n", __FUNCTION__));
}
@@ -1417,10 +1441,33 @@ VOID RTMP_CFG80211_DummyP2pIf_Init(
UINT preIfIndex = 0;
struct wireless_dev *pWdev;
struct wifi_dev *wdev = NULL;
+ PNET_DEV pNetDev = NULL;
DBGPRINT(RT_DEBUG_TRACE, (" %s =====> \n", __FUNCTION__));
- if (cfg80211_ctrl->flg_cfg_dummy_p2p_init != FALSE)
+ if (cfg80211_ctrl->flg_cfg_dummy_p2p_init != FALSE) {
+ /* To fix the P2P functionality fail when
+ * wpa_supplicant TERMINATE and RE-START issue,
+ * Due to the interface mode has changed to AP/STA.
+ */
+ DBGPRINT(RT_DEBUG_WARN, ("Change the interface mode to avoid the p2p functionality fail!\n"));
+ pNetDev = cfg80211_ctrl->dummy_p2p_net_dev;
+ pWdev = pNetDev->ieee80211_ptr;
+ pWdev->wiphy->interface_modes |= (BIT(NL80211_IFTYPE_P2P_CLIENT)
+ | BIT(NL80211_IFTYPE_P2P_GO));
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
+ {
+ extern const struct ieee80211_iface_combination
+ *p_ra_iface_combinations_p2p;
+ extern const INT ra_iface_combinations_p2p_num;
+
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] Change to P2P combination mode!!\n", __func__));
+ pWdev->wiphy->iface_combinations = p_ra_iface_combinations_p2p;
+ pWdev->wiphy->n_iface_combinations = ra_iface_combinations_p2p_num;
+ }
+#endif /* KERNEL_VERSION >= 3.8.0 */
+
return;
+ }
#ifdef RT_CFG80211_P2P_SINGLE_DEVICE
cfg80211_ctrl->P2POpStatusFlags = CFG_P2P_DISABLE;
@@ -1536,12 +1583,21 @@ VOID RTMP_CFG80211_DummyP2pIf_Init(
/* interface_modes move from IF open to init */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,37))
pWdev->wiphy->interface_modes |= (BIT(NL80211_IFTYPE_P2P_CLIENT)
- | BIT(NL80211_IFTYPE_P2P_GO));
+ | BIT(NL80211_IFTYPE_P2P_GO));
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0))
pWdev->wiphy->software_iftypes |= BIT(NL80211_IFTYPE_P2P_DEVICE);
#endif /* LINUX_VERSION_CODE 3.7.0 */
#endif /* LINUX_VERSION_CODE 2.6.37 */
-
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
+ {
+ extern const struct ieee80211_iface_combination *p_ra_iface_combinations_p2p;
+ extern const INT ra_iface_combinations_p2p_num;
+
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] Change to P2P combination mode!!\n", __func__));
+ pWdev->wiphy->iface_combinations = p_ra_iface_combinations_p2p;
+ pWdev->wiphy->n_iface_combinations = ra_iface_combinations_p2p_num;
+ }
+#endif /* KERNEL_VERSION >= 3.8.0 */
wdev = &cfg80211_ctrl->dummy_p2p_wdev;
wdev->wdev_type = WDEV_TYPE_STA;
@@ -1556,14 +1612,7 @@ VOID RTMP_CFG80211_DummyP2pIf_Init(
{
DBGPRINT(RT_DEBUG_ERROR, ("===============> fail register the wdev for dummy p2p\n"));
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0))
- {
- extern const struct ieee80211_iface_combination * p_ra_iface_combinations_p2p;
- extern const INT ra_iface_combinations_p2p_num;
- pWdev->wiphy->iface_combinations = p_ra_iface_combinations_p2p;
- pWdev->wiphy->n_iface_combinations = ra_iface_combinations_p2p_num;
- }
-#endif
+
RtmpOSNetDevAttach(pAd->OpMode, new_dev_p, pNetDevOps);
cfg80211_ctrl->dummy_p2p_net_dev = new_dev_p;
cfg80211_ctrl->flg_cfg_dummy_p2p_init = TRUE;
@@ -1614,7 +1663,7 @@ BOOLEAN RTMP_CFG80211_MULTI_STA_ON(VOID *pAdSrc, PNET_DEV pNewNetDev)
VOID RTMP_CFG80211_MutliStaIf_Init(VOID *pAdSrc)
{
- printk("%s()\n", __FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("%s()\n", __func__));
#define INF_CFG80211_MULTI_STA_NAME "muti-sta0"
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc;
CMD_RTPRIV_IOCTL_80211_VIF_SET vifInfo;
@@ -1638,16 +1687,17 @@ VOID RTMP_CFG80211_MutliStaIf_Init(VOID *pAdSrc)
VOID RTMP_CFG80211_MutliStaIf_Remove(VOID *pAdSrc)
{
- printk("%s()\n", __FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("%s()\n", __func__));
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdSrc;
PCFG80211_CTRL cfg80211_ctrl = &pAd->cfg80211_ctrl;
if (cfg80211_ctrl->multi_sta_net_dev)
{
- RtmpOSNetDevProtect(1);
- RTMP_DRIVER_80211_VIF_DEL(pAd, cfg80211_ctrl->multi_sta_net_dev,
- RT_CMD_80211_IFTYPE_STATION);
- RtmpOSNetDevProtect(0);
+ /* Remove wifi dirver to lock the rtnl_lock here.
+ * It will cause kernel crash sometimes.
+ * The lock action leave to kernel.
+ */
+ RTMP_CFG80211_VirtualIF_Remove(pAd, cfg80211_ctrl->multi_sta_net_dev, DevType, TRUE);
cfg80211_ctrl->flg_cfg_multi_sta_init = FALSE;
}
}
diff --git a/os/linux/cfg80211/cfg80211_p2p.c b/os/linux/cfg80211/cfg80211_p2p.c
index a63667c..343043f 100755
--- a/os/linux/cfg80211/cfg80211_p2p.c
+++ b/os/linux/cfg80211/cfg80211_p2p.c
@@ -401,7 +401,7 @@ INT CFG80211_setPowerMgmt(VOID *pAdCB, UINT Enable)
DBGPRINT(RT_DEBUG_TRACE, ("@@@ %s: %d\n", __FUNCTION__, Enable));
#ifdef RT_CFG80211_P2P_SUPPORT
- pAd->cfg80211_ctrl.bP2pCliPmEnable = Enable;
+ pAd->cfg80211_ctrl.bP2pCliPmEnable = (BOOLEAN)Enable;
#endif /* RT_CFG80211_P2P_SUPPORT */
return 0;
@@ -424,7 +424,7 @@ VOID CFG80211_P2pClientSendNullFrame(VOID *pAdCB, INT PwrMgmt)
ApCliRTMPSendNullFrame(pAd,
RATE_6,
(CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE)) ? TRUE:FALSE,
- pEntry, PwrMgmt);
+ pEntry, (USHORT)PwrMgmt);
OS_WAIT(20);
}
}
@@ -464,18 +464,20 @@ VOID CFG80211DRV_P2pClientKeyAdd(VOID *pAdOrg, VOID *pData)
if (pApCliEntry->wdev.WepStatus == Ndis802_11Encryption3Enabled)
{
- printk("APCLI: Set AES Security Set. [%d] (GROUP) %d\n", BssIdx, pKeyInfo->KeyLen);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("APCLI: Set AES Security Set. [%d] (GROUP) %d\n",
+ BssIdx, pKeyInfo->KeyLen));
NdisZeroMemory(&pApCliEntry->SharedKey[pKeyInfo->KeyId], sizeof(CIPHER_KEY));
pApCliEntry->SharedKey[pKeyInfo->KeyId].KeyLen = LEN_TK;
NdisMoveMemory(pApCliEntry->SharedKey[pKeyInfo->KeyId].Key, pKeyInfo->KeyBuf, pKeyInfo->KeyLen);
pApCliEntry->SharedKey[pKeyInfo->KeyId].CipherAlg = CIPHER_AES;
- AsicAddSharedKeyEntry(pAd, BssIdx, pKeyInfo->KeyId,
+ AsicAddSharedKeyEntry(pAd, (UCHAR)BssIdx, pKeyInfo->KeyId,
&pApCliEntry->SharedKey[pKeyInfo->KeyId]);
- RTMPAddWcidAttributeEntry(pAd, BssIdx, pKeyInfo->KeyId,
+ RTMPAddWcidAttributeEntry(pAd, (UCHAR)BssIdx, pKeyInfo->KeyId,
pApCliEntry->SharedKey[pKeyInfo->KeyId].CipherAlg,
NULL);
@@ -510,7 +512,9 @@ VOID CFG80211DRV_P2pClientKeyAdd(VOID *pAdOrg, VOID *pData)
{
if(pMacEntry)
{
- printk("APCLI: Set AES Security Set. [%d] (PAIRWISE) %d\n", BssIdx, pKeyInfo->KeyLen);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("APCLI: Set AES Security Set. [%d] (PAIRWISE) %d\n",
+ BssIdx, pKeyInfo->KeyLen));
NdisZeroMemory(&pMacEntry->PairwiseKey, sizeof(CIPHER_KEY));
pMacEntry->PairwiseKey.KeyLen = LEN_TK;
@@ -520,7 +524,9 @@ VOID CFG80211DRV_P2pClientKeyAdd(VOID *pAdOrg, VOID *pData)
pMacEntry->PairwiseKey.CipherAlg = CIPHER_AES;
AsicAddPairwiseKeyEntry(pAd, (UCHAR)pMacEntry->Aid, &pMacEntry->PairwiseKey);
- RTMPSetWcidSecurityInfo(pAd, BssIdx, 0, pMacEntry->PairwiseKey.CipherAlg, pMacEntry->Aid, PAIRWISEKEYTABLE);
+ RTMPSetWcidSecurityInfo(pAd, (UINT8)BssIdx, 0,
+ pMacEntry->PairwiseKey.CipherAlg,
+ (UINT8)(pMacEntry->Aid), PAIRWISEKEYTABLE);
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT)
@@ -579,13 +585,14 @@ VOID CFG80211DRV_P2pClientKeyAdd(VOID *pAdOrg, VOID *pData)
}
else
{
- printk("APCLI: Set AES Security Set. (PAIRWISE) But pMacEntry NULL\n");
+ DBGPRINT(RT_DEBUG_OFF,
+ ("APCLI: Set AES Security Set. But pMacEntry NULL\n"));
}
}
}
}
-VOID CFG80211DRV_SetP2pCliAssocIe(VOID *pAdOrg, VOID *pData, UINT ie_len)
+VOID CFG80211DRV_SetP2pCliAssocIe(VOID *pAdOrg, const VOID *pData, UINT ie_len)
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdOrg;
APCLI_STRUCT *apcli_entry;
@@ -660,7 +667,7 @@ BOOLEAN CFG80211DRV_P2pClientConnect(VOID *pAdOrg, VOID *pData)
/* Set authentication mode */
if (pConnInfo->WpaVer == 2)
{
- if (!pConnInfo->FlgIs8021x == TRUE)
+ if (!pConnInfo->FlgIs8021x)
{
DBGPRINT(RT_DEBUG_TRACE,("APCLI WPA2PSK\n"));
Set_ApCli_AuthMode_Proc(pAd, "WPA2PSK");
@@ -721,7 +728,8 @@ VOID CFG80211_P2pClientConnectResultInform(
pAd->cfg80211_ctrl.FlgCfg80211Connecting = FALSE;
}
-VOID CFG80211_LostP2pGoInform(VOID *pAdCB)
+VOID CFG80211_LostP2pGoInform(VOID *pAdCB, UINT16 Reason)
+
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
PNET_DEV pNetDev = NULL;
@@ -742,7 +750,8 @@ VOID CFG80211_LostP2pGoInform(VOID *pAdCB)
#if 0 //MCC
if(pAd->cfg80211_ctrl.isMccOn)
{
- printk("MCC:==============================> off by GC\n");
+ DBGPRINT(RT_DEBUG_OFF,
+ ("MCC:==============================> off by GC\n"));
pAd->cfg80211_ctrl.isMccOn = FALSE;
CmdMccStop(pAd, NULL);
}
@@ -758,7 +767,12 @@ VOID CFG80211_LostP2pGoInform(VOID *pAdCB)
cfg80211_disconnected(pNetDev, WLAN_REASON_DEAUTH_LEAVING, NULL, 0, GFP_KERNEL);
}
#else
- cfg80211_disconnected(pNetDev, 0, NULL, 0, GFP_KERNEL);
+ cfg80211_disconnected(pNetDev, Reason, NULL, 0,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0))
+ FALSE,/* locally_generated */
+#endif
+ GFP_KERNEL);
+
#endif
}
else
diff --git a/os/linux/cfg80211/cfg80211_scan.c b/os/linux/cfg80211/cfg80211_scan.c
index 1697fac..87c6306 100755
--- a/os/linux/cfg80211/cfg80211_scan.c
+++ b/os/linux/cfg80211/cfg80211_scan.c
@@ -285,9 +285,11 @@ static void CFG80211_UpdateBssTableRssi(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
if (pAd->ScanTab.BssEntry[index].Channel > 14)
- CenFreq = ieee80211_channel_to_frequency(pAd->ScanTab.BssEntry[index].Channel , IEEE80211_BAND_5GHZ);
+ CenFreq = ieee80211_channel_to_frequency(pAd->ScanTab.BssEntry[index].Channel,
+ KAL_BAND_5GHZ);
else
- CenFreq = ieee80211_channel_to_frequency(pAd->ScanTab.BssEntry[index].Channel , IEEE80211_BAND_2GHZ);
+ CenFreq = ieee80211_channel_to_frequency(pAd->ScanTab.BssEntry[index].Channel,
+ KAL_BAND_2GHZ);
#else
CenFreq = ieee80211_channel_to_frequency(pAd->ScanTab.BssEntry[index].Channel);
#endif
@@ -434,6 +436,10 @@ VOID CFG80211_ScanEnd(
}
CFG80211OS_ScanEnd(CFG80211CB, FlgIsAborted);
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ /*restore SCS gain when finish scanning*/
+ /*ScsRestoreLastGainAtScanEnd(pAd);*/
+#endif
pAd->cfg80211_ctrl.FlgCfg80211Scanning = FALSE;
#endif /* CONFIG_STA_SUPPORT */
}
diff --git a/os/linux/cfg80211/cfg80211_tdls.c b/os/linux/cfg80211/cfg80211_tdls.c
index 2edb081..5ec337a 100755
--- a/os/linux/cfg80211/cfg80211_tdls.c
+++ b/os/linux/cfg80211/cfg80211_tdls.c
@@ -317,7 +317,7 @@ VOID InitPeerEntryRateCapability(
BOOLEAN CFG80211DRV_StaTdlsInsertDeletepEntry(
VOID *pAdOrg,
- VOID *pData,
+ const VOID *pData,
UINT Data)
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdOrg;
@@ -406,7 +406,8 @@ BOOLEAN CFG80211DRV_StaTdlsInsertDeletepEntry(
#ifndef RT_BIG_ENDIAN
NdisZeroMemory(&HtCapabilityTmp, sizeof(HT_CAPABILITY_IE));
NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
- HtCapabilityTmp.HtCapInfo.ChannelWidth = pAd->CommonCfg.RegTransmitSetting.field.BW;
+ HtCapabilityTmp.HtCapInfo.ChannelWidth =
+ (UINT16)pAd->CommonCfg.RegTransmitSetting.field.BW;
#else
NdisZeroMemory(&HtCapabilityTmp, sizeof(HT_CAPABILITY_IE));
NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
@@ -656,8 +657,8 @@ VOID cfg_tdls_UAPSDP_PsmModeChange(
DBGPRINT(RT_DEBUG_TRACE, ("tdls uapsd> send a NULL frame!\n"));
RtmpEnqueueNullFrame(pAd, pMacEntry->Addr,
- pAd->CommonCfg.TxRate, pMacEntry->Aid,
- pMacEntry->apidx, TRUE, FALSE, 0);
+ pAd->CommonCfg.TxRate, (UCHAR)pMacEntry->Aid,
+ pMacEntry->apidx, TRUE, FALSE, 0);
continue;
}
@@ -697,7 +698,9 @@ void cfg_tdls_rcv_PeerTrafficIndication(PRTMP_ADAPTER pAd,u8 dialog_token,u8 *pe
return;
}
- cfg_tlds_build_frame(pAd, peer, dialog_token, TDLS_ACTION_CODE_PEER_TRAFFIC_RESPONSE, 0, NULL, 0, FALSE, tdls_entry_wcid,0);
+ cfg_tlds_build_frame(pAd, peer, dialog_token,
+ TDLS_ACTION_CODE_PEER_TRAFFIC_RESPONSE, 0,
+ NULL, 0, FALSE, (u8)tdls_entry_wcid, 0);
DBGPRINT(RT_DEBUG_INFO,("<====== %s() out\n", __FUNCTION__));
}
void cfg_tdls_rcv_PeerTrafficResponse(PRTMP_ADAPTER pAd,u8 *peer)
@@ -766,7 +769,9 @@ void cfg_tdls_send_PeerTrafficIndication(PRTMP_ADAPTER pAd, u8 *peer)
pAd->StaCfg.wpa_supplicant_info.CFG_Tdls_info.TDLSEntry[tdls_entry_link_index].FlgIsWaitingUapsdTraRsp = TRUE;
- cfg_tlds_build_frame(pAd, peer, dialog_token, TDLS_ACTION_CODE_PEER_TRAFFIC_INDICATION, 0, NULL, 0, FALSE, tdls_entry_link_index,0);
+ cfg_tlds_build_frame(pAd, peer, dialog_token,
+ TDLS_ACTION_CODE_PEER_TRAFFIC_INDICATION, 0,
+ NULL, 0, FALSE, (u8)tdls_entry_link_index, 0);
/*
11.2.1.14.1 Peer U-APSD Behavior at the PU buffer STA
When no corresponding TDLS Peer Traffic Response frame has been
@@ -883,7 +888,7 @@ int cfg_tdls_search_ValidLinkIndex(PRTMP_ADAPTER pAd, u8 *peer)
int cfg_tlds_build_frame(
PRTMP_ADAPTER pAd,
-u8 *peer,
+const u8 *peer,
u8 dialog_token,
u8 action_code,
u16 status_code,
@@ -1074,7 +1079,9 @@ u8 reason_code
UCHAR RegluatoryRxtIdent = 221;
UCHAR CoverageClass = 0;
- regclass = cfg_tdls_GetRegulatoryClass(pAd, pAd->CommonCfg.RegTransmitSetting.field.BW, pAd->CommonCfg.Channel);
+ regclass = cfg_tdls_GetRegulatoryClass(pAd,
+ (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.BW,
+ pAd->CommonCfg.Channel);
MakeOutgoingFrame(TmpFrame+TmpLen2, &TmpLen,
1, &RegluatoryRxtIdent,
1, &regclass,
@@ -1264,7 +1271,9 @@ u8 reason_code
UCHAR SuppClassesList[] = {1, 2, 3, 4, 12, 22, 23, 24, 25, 27, 28, 29, 30, 32, 33};
UCHAR regclass;
- regclass = cfg_tdls_GetRegulatoryClass(pAd, pAd->CommonCfg.RegTransmitSetting.field.BW, pAd->CommonCfg.Channel);
+ regclass = cfg_tdls_GetRegulatoryClass(pAd,
+ (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.BW,
+ pAd->CommonCfg.Channel);
MakeOutgoingFrame(pOutBuffer + FrameLen, &TempLen,
1, &TDLS_IE,
@@ -1286,7 +1295,8 @@ u8 reason_code
#ifndef RT_BIG_ENDIAN
NdisZeroMemory(&HtCapabilityTmp, sizeof(HT_CAPABILITY_IE));
NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
- HtCapabilityTmp.HtCapInfo.ChannelWidth = pAd->CommonCfg.RegTransmitSetting.field.BW;
+ HtCapabilityTmp.HtCapInfo.ChannelWidth =
+ (UINT16)pAd->CommonCfg.RegTransmitSetting.field.BW;
MakeOutgoingFrame(pOutBuffer + FrameLen, &TempLen,
1, &HtCapIe,
@@ -1448,7 +1458,7 @@ u8 reason_code
for (idx=QID_AC_BE; idx<=QID_AC_VO; idx++)
{
- WmeParmIe[10+ (idx*4)] = (idx << 5) + // b5-6 is ACI
+ WmeParmIe[10 + (idx * 4)] = (UCHAR)(idx << 5) +/* b5-6 is ACI */
((UCHAR)pAd->CommonCfg.APEdcaParm.bACM[idx] << 4) + // b4 is ACM
(pAd->CommonCfg.APEdcaParm.Aifsn[idx] & 0x0f); // b0-3 is AIFSN
WmeParmIe[11+ (idx*4)] = (pAd->CommonCfg.APEdcaParm.Cwmax[idx] << 4) + // b5-8 is CWMAX
@@ -1543,35 +1553,35 @@ u8 reason_code
/////////////////// debug output /////////////////////////////
switch (action_code) {
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,1,10))
- case WLAN_TDLS_SETUP_REQUEST:
+ case ((u8)(WLAN_TDLS_SETUP_REQUEST)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> WLAN_TDLS_SETUP_REQUEST ==>\n"));
break;
- case WLAN_TDLS_SETUP_RESPONSE:
+ case ((u8)(WLAN_TDLS_SETUP_RESPONSE)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> WLAN_TDLS_SETUP_RESPONSE ==>\n"));
break;
- case WLAN_TDLS_SETUP_CONFIRM:
+ case ((u8)(WLAN_TDLS_SETUP_CONFIRM)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> WLAN_TDLS_SETUP_CONFIRM ==>\n"));
break;
- case WLAN_TDLS_TEARDOWN:
+ case ((u8)(WLAN_TDLS_TEARDOWN)):
#endif /* LINUX_VERSION_CODE: 3.1.10 */
- case TDLS_ACTION_CODE_AUTO_TEARDOWN:
+ case ((u8)(TDLS_ACTION_CODE_AUTO_TEARDOWN)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> WLAN_TDLS_TEARDOWN ==>\n"));
break;
#if (LINUX_VERSION_CODE > KERNEL_VERSION(3,1,10))
- case WLAN_TDLS_DISCOVERY_REQUEST:
+ case ((u8)(WLAN_TDLS_DISCOVERY_REQUEST)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> WLAN_TDLS_DISCOVERY_REQUEST ==>\n"));
break;
- case WLAN_PUB_ACTION_TDLS_DISCOVER_RES:
+ case ((u8)(WLAN_PUB_ACTION_TDLS_DISCOVER_RES)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> WLAN_PUB_ACTION_TDLS_DISCOVERY_RESPONSE ==>\n"));
break;
#endif /* LINUX_VERSION_CODE: 3.1.10 */
- case TDLS_ACTION_CODE_PEER_TRAFFIC_INDICATION:
+ case ((u8)(TDLS_ACTION_CODE_PEER_TRAFFIC_INDICATION)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> TDLS_ACTION_CODE_PEER_TRAFFIC_INDICATION ==>\n"));
break;
- case TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_REQ:
+ case ((u8)(TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_REQ)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_REQ ==>\n"));
break;
- case TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_RSP:
+ case ((u8)(TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_RSP)):
CFG80211DBG(RT_DEBUG_ERROR, ("80211> TDLS_ACTION_CODE_WFD_TUNNELED_PROBE_RSP ==>\n"));
break;
default:
@@ -1819,7 +1829,7 @@ VOID cfg_tdls_rx_parsing(PRTMP_ADAPTER pAd,RX_BLK *pRxBlk)
void cfg_tdls_prepare_null_frame(PRTMP_ADAPTER pAd,BOOLEAN powersave,UCHAR dir,UCHAR *peerAddr)
{
PMAC_TABLE_ENTRY pEntry_TDLS = MacTableLookup(pAd,peerAddr);
-
+
RtmpPrepareHwNullFrame(pAd,
&pAd->MacTab.Content[BSSID_WCID],
FALSE,
@@ -1829,6 +1839,8 @@ void cfg_tdls_prepare_null_frame(PRTMP_ADAPTER pAd,BOOLEAN powersave,UCHAR dir,U
PWR_SAVE,
0,
0);
+ if (pEntry_TDLS == NULL)
+ return;
RtmpPrepareHwNullFrame(pAd,
pEntry_TDLS,
TRUE,
@@ -1864,7 +1876,8 @@ void cfg_tdls_auto_teardown(PRTMP_ADAPTER pAd,UCHAR *peerAddr)
IRQL = PASSIVE_LEVEL
==========================================================================
*/
-VOID cfg_tdls_TunneledProbeRequest(PRTMP_ADAPTER pAd, PUCHAR pMacAddr, const u8 *extra_ies, size_t extra_ies_len)
+VOID cfg_tdls_TunneledProbeRequest(PRTMP_ADAPTER pAd, const u8 *pMacAddr,
+ const u8 *extra_ies, size_t extra_ies_len)
{
UCHAR TDLS_ETHERTYPE[] = {0x89, 0x0d};
UCHAR Header802_3[14];
@@ -1948,7 +1961,8 @@ VOID cfg_tdls_TunneledProbeRequest(PRTMP_ADAPTER pAd, PUCHAR pMacAddr, const u8
IRQL = PASSIVE_LEVEL
==========================================================================
*/
-VOID cfg_tdls_TunneledProbeResponse(PRTMP_ADAPTER pAd, PUCHAR pMacAddr, const u8 *extra_ies, size_t extra_ies_len)
+VOID cfg_tdls_TunneledProbeResponse(PRTMP_ADAPTER pAd, const u8 *pMacAddr, const u8 *extra_ies,
+ size_t extra_ies_len)
{
UCHAR TDLS_ETHERTYPE[] = {0x89, 0x0d};
UCHAR Header802_3[14];
diff --git a/os/linux/cfg80211/cfg80211_tx.c b/os/linux/cfg80211/cfg80211_tx.c
index 8808a6f..f0bf874 100755
--- a/os/linux/cfg80211/cfg80211_tx.c
+++ b/os/linux/cfg80211/cfg80211_tx.c
@@ -86,7 +86,7 @@ BOOLEAN CFG80211_SyncPacketWmmIe(RTMP_ADAPTER *pAd, VOID *pData, ULONG dataLen)
if (wmm_ie != NULL)
{
- UINT i = QID_AC_BE;
+ UCHAR i = QID_AC_BE;
#ifdef RT_CFG80211_P2P_SUPPORT
#ifdef UAPSD_SUPPORT
@@ -148,6 +148,15 @@ PCFG80211_TX_PACKET CFG80211_TxMgmtFrameSearch(RTMP_ADAPTER *pAd, USHORT Sequenc
}
#endif
+INT CFG80211_SetTxNdev(RTMP_ADAPTER *pAd, PNET_DEV pNetdev)
+{
+ PCFG80211_CTRL pCfg80211_ctrl = &pAd->cfg80211_ctrl;
+
+ pCfg80211_ctrl->TxNdev = pNetdev;
+
+ return TRUE;
+}
+
INT CFG80211_SendMgmtFrame(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
{
if (pData != NULL)
@@ -262,7 +271,7 @@ INT CFG80211_SendMgmtFrame(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
acked = TRUE;
cookie = 5678;
}
- CFG80211_SendMgmtFrameDone(pAd, cookie, acked);
+ CFG80211_SendMgmtFrameDone(pAd, (USHORT)cookie, acked);
RTMP_OS_EXIT_COMPLETION(&pCfg80211_ctrl->fw_event_done);
}
@@ -307,8 +316,9 @@ VOID CFG80211_SendMgmtFrameDone(RTMP_ADAPTER *pAd, USHORT Sequence, BOOLEAN Ack)
if (pCfg80211_ctrl->TxStatusInUsed && pCfg80211_ctrl->pTxStatusBuf
/*&& (pAd->TxStatusSeq == pHeader->Sequence)*/)
{
- DBGPRINT(RT_DEBUG_TRACE, ("CFG_TX_STATUS: REAL send cookie %d, ack(%d)\n", Sequence, Ack));
- CFG80211OS_TxStatus(CFG80211_GetEventDevice(pAd), Sequence,
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] CFG_TX_STATUS: REAL send cookie 0x%llx, ack(%d)\n",
+ pCfg80211_ctrl->TxNdev->name, (long long unsigned int) Sequence, Ack));
+ CFG80211OS_TxStatus(pCfg80211_ctrl->TxNdev, Sequence,
pCfg80211_ctrl->pTxStatusBuf, pCfg80211_ctrl->TxStatusBufLen,
Ack);
pCfg80211_ctrl->TxStatusInUsed = FALSE;
diff --git a/os/linux/cfg80211/cfg80211_util.c b/os/linux/cfg80211/cfg80211_util.c
index 8351232..978a954 100755
--- a/os/linux/cfg80211/cfg80211_util.c
+++ b/os/linux/cfg80211/cfg80211_util.c
@@ -330,20 +330,22 @@ BOOLEAN CFG80211_SupBandInit(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
if (IdLoop >= 14)
{
- pChannels[IdLoop].band = IEEE80211_BAND_5GHZ;
+ pChannels[IdLoop].band = KAL_BAND_5GHZ;
pChannels[IdLoop].center_freq = \
- ieee80211_channel_to_frequency(Cfg80211_Chan[IdLoop], IEEE80211_BAND_5GHZ);
+ (UINT16)ieee80211_channel_to_frequency(
+ Cfg80211_Chan[IdLoop], KAL_BAND_5GHZ);
}
else
{
- pChannels[IdLoop].band = IEEE80211_BAND_2GHZ;
+ pChannels[IdLoop].band = KAL_BAND_2GHZ;
pChannels[IdLoop].center_freq = \
- ieee80211_channel_to_frequency(Cfg80211_Chan[IdLoop], IEEE80211_BAND_2GHZ);
+ (UINT16)ieee80211_channel_to_frequency(
+ Cfg80211_Chan[IdLoop], KAL_BAND_2GHZ);
}
#else
pChannels[IdLoop].center_freq = ieee80211_channel_to_frequency(Cfg80211_Chan[IdLoop]);
#endif
- pChannels[IdLoop].hw_value = IdLoop;
+ pChannels[IdLoop].hw_value = (UINT16)IdLoop;
if (IdLoop < CFG80211_NUM_OF_CHAN_2GHZ)
pChannels[IdLoop].max_power = CurTxPower;
@@ -358,7 +360,7 @@ BOOLEAN CFG80211_SupBandInit(
pChannels[IdLoop].flags = 0;
CFG80211DBG(RT_DEBUG_TRACE, ("====> Rader Channel %d\n", Cfg80211_Chan[IdLoop]));
pChannels[IdLoop].flags |= (IEEE80211_CHAN_RADAR
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#if (KERNEL_VERSION(3, 14, 0) <= LINUX_VERSION_CODE)
| IEEE80211_CHAN_NO_IR
#else
| IEEE80211_CHAN_PASSIVE_SCAN
@@ -393,7 +395,7 @@ BOOLEAN CFG80211_SupBandInit(
*/
/* 7. Fill the Band 2.4GHz */
- pBand = &pCfg80211_CB->Cfg80211_bands[IEEE80211_BAND_2GHZ];
+ pBand = &pCfg80211_CB->Cfg80211_bands[KAL_BAND_2GHZ];
if (pDriverBandInfo->RFICType & RFIC_24GHZ)
{
pBand->n_channels = CFG80211_NUM_OF_CHAN_2GHZ;
@@ -441,17 +443,17 @@ BOOLEAN CFG80211_SupBandInit(
pBand->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
#endif /* DOT11_N_SUPPORT */
- pWiphy->bands[IEEE80211_BAND_2GHZ] = pBand;
+ pWiphy->bands[KAL_BAND_2GHZ] = pBand;
}
else
{
- pWiphy->bands[IEEE80211_BAND_2GHZ] = NULL;
+ pWiphy->bands[KAL_BAND_2GHZ] = NULL;
pBand->channels = NULL;
pBand->bitrates = NULL;
}
/* 8. Fill the Band 5GHz */
- pBand = &pCfg80211_CB->Cfg80211_bands[IEEE80211_BAND_5GHZ];
+ pBand = &pCfg80211_CB->Cfg80211_bands[KAL_BAND_5GHZ];
if (pDriverBandInfo->RFICType & RFIC_5GHZ)
{
pBand->n_channels = CFG80211_NUM_OF_CHAN_5GHZ;
@@ -496,11 +498,11 @@ BOOLEAN CFG80211_SupBandInit(
pBand->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
#endif /* DOT11_N_SUPPORT */
- pWiphy->bands[IEEE80211_BAND_5GHZ] = pBand;
+ pWiphy->bands[KAL_BAND_5GHZ] = pBand;
}
else
{
- pWiphy->bands[IEEE80211_BAND_5GHZ] = NULL;
+ pWiphy->bands[KAL_BAND_5GHZ] = NULL;
pBand->channels = NULL;
pBand->bitrates = NULL;
}
@@ -559,7 +561,7 @@ BOOLEAN CFG80211OS_SupBandReInit(
pWiphy->rts_threshold = pBandInfo->RtsThreshold;
pWiphy->frag_threshold = pBandInfo->FragmentThreshold;
pWiphy->retry_short = pBandInfo->RetryMaxCnt & 0xff;
- pWiphy->retry_long = (pBandInfo->RetryMaxCnt & 0xff00)>>8;
+ pWiphy->retry_long = (u8)((pBandInfo->RetryMaxCnt & 0xff00)>>8);
#endif /* LINUX_VERSION_CODE */
return TRUE;
@@ -673,8 +675,8 @@ BOOLEAN CFG80211OS_BandInfoGet(
if (pWiphy == NULL)
return FALSE;
- *ppBand24 = pWiphy->bands[IEEE80211_BAND_2GHZ];
- *ppBand5 = pWiphy->bands[IEEE80211_BAND_5GHZ];
+ *ppBand24 = pWiphy->bands[KAL_BAND_2GHZ];
+ *ppBand5 = pWiphy->bands[KAL_BAND_5GHZ];
return TRUE;
}
@@ -783,12 +785,12 @@ BOOLEAN CFG80211OS_ChanInfoInit(
memset(pChan, 0, sizeof(*pChan));
if (ChanId > 14)
- pChan->band = IEEE80211_BAND_5GHZ;
+ pChan->band = KAL_BAND_5GHZ;
else
- pChan->band = IEEE80211_BAND_2GHZ;
+ pChan->band = KAL_BAND_2GHZ;
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- pChan->center_freq = ieee80211_channel_to_frequency(ChanId, pChan->band);
+ pChan->center_freq = (UINT16)ieee80211_channel_to_frequency(ChanId, pChan->band);
#else
pChan->center_freq = ieee80211_channel_to_frequency(ChanId);
#endif
@@ -857,17 +859,17 @@ VOID CFG80211OS_Scaning(
/* get channel information */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
if (ChanId > 14)
- CenFreq = ieee80211_channel_to_frequency(ChanId, IEEE80211_BAND_5GHZ);
+ CenFreq = ieee80211_channel_to_frequency(ChanId, KAL_BAND_5GHZ);
else
- CenFreq = ieee80211_channel_to_frequency(ChanId, IEEE80211_BAND_2GHZ);
+ CenFreq = ieee80211_channel_to_frequency(ChanId, KAL_BAND_2GHZ);
#else
CenFreq = ieee80211_channel_to_frequency(ChanId);
#endif
if (ChanId > 14)
- CurBand = IEEE80211_BAND_5GHZ;
+ CurBand = KAL_BAND_5GHZ;
else
- CurBand = IEEE80211_BAND_2GHZ;
+ CurBand = KAL_BAND_2GHZ;
pBand = &pCfg80211_CB->Cfg80211_bands[CurBand];
@@ -945,8 +947,8 @@ VOID CFG80211OS_ScanEnd(
NdisAcquireSpinLock(&pCfg80211_CB->scan_notify_lock);
if (pCfg80211_CB->pCfg80211_ScanReq)
{
- CFG80211DBG(RT_DEBUG_ERROR, ("80211> cfg80211_scan_done\n"));
- cfg80211_scan_done(pCfg80211_CB->pCfg80211_ScanReq, FlgIsAborted);
+ CFG80211DBG(RT_DEBUG_TRACE, ("80211> cfg80211_scan_done\n"));
+ kalCfg80211ScanDone(pCfg80211_CB->pCfg80211_ScanReq, FlgIsAborted);
pCfg80211_CB->pCfg80211_ScanReq = NULL;
}
else
@@ -990,17 +992,22 @@ void CFG80211OS_ConnectResultInform(
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
CFG80211_CB *pCfg80211_CB = (CFG80211_CB *)pCB;
-// PNET_DEV pNetDev = pCfg80211_CB->pCfg80211_Wdev->netdev;
+
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 10, 0)
+ PNET_DEV pNetDev = pCfg80211_CB->pCfg80211_Wdev->netdev;
+#endif
if ((pCfg80211_CB->pCfg80211_Wdev->netdev == NULL) || (pBSSID == NULL))
return;
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,11,00))
+
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 10, 0)
if (pNetDev->ieee80211_ptr->sme_state != CFG80211_SME_CONNECTING) {
DBGPRINT(RT_DEBUG_OFF,
("%s, not indicate! It will cause kernel warning\n", __func__));
return;
}
#endif
+
if (FlgIsSuccess)
{
cfg80211_connect_result(pCfg80211_CB->pCfg80211_Wdev->netdev,
@@ -1038,7 +1045,7 @@ void CFG80211OS_P2pClientConnectResultInform(
if (FlgIsSuccess)
{
- printk("APCLI: ReqIeLen %d, RspIeLen, %d\n", ReqIeLen, RspIeLen);
+ DBGPRINT(RT_DEBUG_OFF, ("APCLI: ReqIeLen %d, RspIeLen, %d\n", ReqIeLen, RspIeLen));
hex_dump("APCLI Req:", pReqIe, ReqIeLen);
hex_dump("APCLI Rsp:", pRspIe, RspIeLen);
cfg80211_connect_result(pNetDev,
@@ -1069,22 +1076,19 @@ BOOLEAN CFG80211OS_RxMgmt(IN PNET_DEV pNetDev, IN INT32 freq, IN PUCHAR frame, I
return FALSE;
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0))
- return cfg80211_rx_mgmt(pNetDev->ieee80211_ptr,
- freq,
- 0, //CFG_TODO return 0 in dbm
- frame,
- len,
- 0,
- GFP_ATOMIC);
-#else
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0))
return cfg80211_rx_mgmt(pNetDev->ieee80211_ptr,
freq,
0, //CFG_TODO return 0 in dbm
frame,
- len,
- GFP_ATOMIC);
+ len
+#if (KERNEL_VERSION(3, 12, 0) <= LINUX_VERSION_CODE)
+ , 0/* saker: 3.12 check new field-flags [BRCM/ATH also use 0] */
+#endif
+#if (KERNEL_VERSION(3, 18, 0) > LINUX_VERSION_CODE)
+ , GFP_ATOMIC
+#endif
+ );
#else
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0))
return cfg80211_rx_mgmt(pNetDev,
@@ -1107,7 +1111,6 @@ BOOLEAN CFG80211OS_RxMgmt(IN PNET_DEV pNetDev, IN INT32 freq, IN PUCHAR frame, I
#endif /* LINUX_VERSION_CODE: 2.6.37 */
#endif /* LINUX_VERSION_CODE: 3.4.0 */
#endif /* LINUX_VERSION_CODE: 3.6.0 */
-#endif/* LINUX_VERSION_CODE: 3.12.0 */
}
@@ -1132,8 +1135,9 @@ VOID CFG80211OS_TxStatus(IN PNET_DEV pNetDev, IN INT32 cookie, IN PUCHAR frame,
VOID CFG80211OS_NewSta(IN PNET_DEV pNetDev, IN const PUCHAR mac_addr, IN const PUCHAR assoc_frame, IN UINT32 assoc_len)
{
struct station_info sinfo;
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
struct ieee80211_mgmt *mgmt;
-
+#endif
NdisZeroMemory(&sinfo, sizeof(sinfo));
@@ -1141,10 +1145,18 @@ VOID CFG80211OS_NewSta(IN PNET_DEV pNetDev, IN const PUCHAR mac_addr, IN const P
#if 1
if (pNetDev->ieee80211_ptr->iftype != RT_CMD_80211_IFTYPE_ADHOC)
{
- sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(3, 19, 0)
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0))
+ sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
+#elif defined(SUPPORT_ANDROID_HOSTAPD_ASSOC_REQ_IES)
+ sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
+#endif /* endif */
+#endif
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0))
mgmt = (struct ieee80211_mgmt *) assoc_frame;
sinfo.assoc_req_ies_len = assoc_len - 24 - 4;
sinfo.assoc_req_ies = mgmt->u.assoc_req.variable;
+#endif
}
#endif
@@ -1225,7 +1237,7 @@ VOID CFG80211OS_InformBSS(
pWiphy = pCfg80211_CB->pCfg80211_Wdev->wiphy;
- bss=cfg80211_inform_bss(pWiphy,
+ bss = cfg80211_inform_bss(pWiphy,
pCfg80211_CB->pCfg80211_Channels,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
CFG80211_BSS_FTYPE_UNKNOWN,
@@ -1236,13 +1248,9 @@ VOID CFG80211OS_InformBSS(
beacon_interval,
pBeacon, BeaconLen,
0, GFP_KERNEL);
- if (unlikely(!bss))
- CFG80211DBG(RT_DEBUG_ERROR, ("%s(%d)> BSS IS NULL, return here.\n", __FUNCTION__, __LINE__));
-
-
}
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
+#if (KERNEL_VERSION(3, 15, 0) <= LINUX_VERSION_CODE)
VOID CFG80211OS_JoinIBSS(IN PNET_DEV pNetDev, IN const PUCHAR pBssid, IN struct ieee80211_channel *channel)
{
cfg80211_ibss_joined(pNetDev, pBssid, channel, GFP_KERNEL);
@@ -1270,10 +1278,10 @@ VOID CFG80211OS_ForceUpdateChanFlags(
return;
if (freq_start_mhz < 4000)
{
- pBand = &pCfg80211_CB->Cfg80211_bands[IEEE80211_BAND_2GHZ];
+ pBand = &pCfg80211_CB->Cfg80211_bands[KAL_BAND_2GHZ];
}
else
- pBand = &pCfg80211_CB->Cfg80211_bands[IEEE80211_BAND_5GHZ];
+ pBand = &pCfg80211_CB->Cfg80211_bands[KAL_BAND_5GHZ];
if (!pBand)
{
@@ -1294,10 +1302,16 @@ VOID CFG80211OS_ForceUpdateChanFlags(
{
pChannels->flags &= ~IEEE80211_CHAN_DISABLED;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
+ /* NL80211_RRF_PASSIVE_SCAN change to NL80211_RRF_NO_IR */
+ if (!(flags & NL80211_RRF_NO_IR))
+ pChannels->flags &= ~IEEE80211_CHAN_NO_IR;
+#else
if (!(flags & NL80211_RRF_PASSIVE_SCAN))
pChannels->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN;
if (!(flags & NL80211_RRF_NO_IBSS))
pChannels->flags &= ~IEEE80211_CHAN_NO_IBSS;
+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0) */
}
pChannels ++;
}
@@ -1322,10 +1336,7 @@ INT32 CFG80211OS_UpdateRegRuleByRegionIdx(
if (!pCB || (!pChDesc2G && !pChDesc5G))
return -EINVAL;
pWiphy = pCfg80211_CB->pCfg80211_Wdev->wiphy;
- if (!pWiphy)
- {
- CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s: invalid pWiphy!!\n", __FUNCTION__));
- }
+
/* first, calculate the number of reg_rules */
if (pChDesc2G)
reg_rules_n += TotalRuleNum((PCH_DESC)pChDesc2G);
@@ -1348,10 +1359,10 @@ INT32 CFG80211OS_UpdateRegRuleByRegionIdx(
while (pChDesc && pChDesc->FirstChannel)
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
-
- freq_start_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel, IEEE80211_BAND_2GHZ);
- freq_end_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel + (pChDesc->NumOfCh-1),
- IEEE80211_BAND_2GHZ);
+
+ freq_start_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel, KAL_BAND_2GHZ);
+ freq_end_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel +
+ (pChDesc->NumOfCh-1), KAL_BAND_2GHZ);
#else
freq_start_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel);
@@ -1390,9 +1401,9 @@ INT32 CFG80211OS_UpdateRegRuleByRegionIdx(
{
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
- freq_start_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel, IEEE80211_BAND_5GHZ);
- freq_end_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel + ((pChDesc->NumOfCh-1)*4),
- IEEE80211_BAND_5GHZ);
+ freq_start_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel, KAL_BAND_5GHZ);
+ freq_end_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel + ((pChDesc->NumOfCh-1)*4),
+ KAL_BAND_5GHZ);
#else
freq_start_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel);
freq_end_mhz = ieee80211_channel_to_frequency(pChDesc->FirstChannel + ((pChDesc->NumOfCh-1)*4));
@@ -1426,8 +1437,13 @@ INT32 CFG80211OS_UpdateRegRuleByRegionIdx(
ASSERT(rule_idx == reg_rules_n)
//pWiphy->flags |= (WIPHY_FLAG_STRICT_REGULATORY | WIPHY_FLAG_CUSTOM_REGULATORY);
regd = reg_ptr;
- wiphy_apply_custom_regulatory(pWiphy, regd);
+ if (!pWiphy)
+ CFG80211DBG(RT_DEBUG_ERROR, ("80211> %s: invalid pWiphy!!\n", __func__));
+ else
+ wiphy_apply_custom_regulatory(pWiphy, regd);
+ if (reg_ptr != NULL)
+ kfree(reg_ptr);
return 0;
}
diff --git a/os/linux/cfg80211/cfg80211drv.c b/os/linux/cfg80211/cfg80211drv.c
index 33660ee..e20754f 100755
--- a/os/linux/cfg80211/cfg80211drv.c
+++ b/os/linux/cfg80211/cfg80211drv.c
@@ -27,6 +27,8 @@
#include "rt_config.h"
+extern int RtmpIoctl_rt_ioctl_siwgenie(RTMP_ADAPTER *pAd, const u8 *ie, size_t ie_len);
+
#if defined (HE_BD_CFG80211_SUPPORT) && defined (BD_KERNEL_VER)
#undef LINUX_VERSION_CODE
#define LINUX_VERSION_CODE KERNEL_VERSION(2,6,39)
@@ -81,12 +83,12 @@ INT CFG80211DRV_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_80211_SCAN:
- if (CFG80211DRV_OpsScanCheckStatus(pAd, Data) != TRUE)
+ if (CFG80211DRV_OpsScanCheckStatus(pAd, (UINT8)Data) != TRUE)
return NDIS_STATUS_FAILURE;
break;
case CMD_RTPRIV_IOCTL_80211_SCAN_STATUS_LOCK_INIT:
- CFG80211_ScanStatusLockInit(pAd, Data);
+ CFG80211_ScanStatusLockInit(pAd, (UINT)Data);
break;
case CMD_RTPRIV_IOCTL_80211_IBSS_JOIN:
@@ -103,7 +105,7 @@ INT CFG80211DRV_IoctlHandle(
break;
#ifdef CFG_TDLS_SUPPORT
case CMD_RTPRIV_IOCTL_80211_STA_TDLS_INSERT_PENTRY:
- CFG80211DRV_StaTdlsInsertDeletepEntry(pAd, pData, Data);
+ CFG80211DRV_StaTdlsInsertDeletepEntry(pAd, pData, (UINT)Data);
break;
#endif /* CFG_TDLS_SUPPORT */
@@ -128,12 +130,12 @@ INT CFG80211DRV_IoctlHandle(
#ifdef CONFIG_STA_SUPPORT
case CMD_RTPRIV_IOCTL_80211_STA_KEY_DEFAULT_SET:
- CFG80211_setStaDefaultKey(pAd, Data);
+ CFG80211_setStaDefaultKey(pAd, (UINT)Data);
break;
#ifdef DOT11W_PMF_SUPPORT
case CMD_RTPRIV_IOCTL_80211_STA_MGMT_KEY_DEFAULT_SET:
- CFG80211_setStaMgmtDefaultKey(pAd, Data);
+ CFG80211_setStaMgmtDefaultKey(pAd, (UINT)Data);
break;
#endif /* DOT11W_PMF_SUPPORT */
@@ -180,22 +182,22 @@ INT CFG80211DRV_IoctlHandle(
break;
#ifdef RT_CFG80211_P2P_SUPPORT
case CMD_RTPRIV_IOCTL_80211_REMAIN_ON_CHAN_SET:
- CFG80211DRV_OpsRemainOnChannel(pAd, pData, Data);
+ CFG80211DRV_OpsRemainOnChannel(pAd, pData, (UINT32)Data);
break;
case CMD_RTPRIV_IOCTL_80211_CANCEL_REMAIN_ON_CHAN_SET:
- CFG80211DRV_OpsCancelRemainOnChannel(pAd, Data);
+ CFG80211DRV_OpsCancelRemainOnChannel(pAd, (UINT32)Data);
break;
#endif /*RT_CFG80211_P2P_SUPPORT*/
/* CFG_TODO */
case CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_REG:
- CFG80211DRV_OpsMgmtFrameProbeRegister(pAd, pData, Data);
+ CFG80211DRV_OpsMgmtFrameProbeRegister(pAd, pData, (BOOLEAN)Data);
break;
/* CFG_TODO */
case CMD_RTPRIV_IOCTL_80211_ACTION_FRAME_REG:
- CFG80211DRV_OpsMgmtFrameActionRegister(pAd, pData, Data);
+ CFG80211DRV_OpsMgmtFrameActionRegister(pAd, pData, (BOOLEAN)Data);
break;
case CMD_RTPRIV_IOCTL_80211_CHANNEL_LOCK:
@@ -205,17 +207,21 @@ INT CFG80211DRV_IoctlHandle(
case CMD_RTPRIV_IOCTL_80211_CHANNEL_RESTORE:
break;
+ case CMD_RTPRIV_IOCTL_80211_TX_NETDEV_SET:
+ CFG80211_SetTxNdev(pAd, pData);
+ break;
+
case CMD_RTPRIV_IOCTL_80211_MGMT_FRAME_SEND:
CFG80211_SendMgmtFrame(pAd, pData, Data);
break;
case CMD_RTPRIV_IOCTL_80211_CHANNEL_LIST_SET:
- return CFG80211DRV_OpsScanSetSpecifyChannel(pAd,pData, Data);
+ return CFG80211DRV_OpsScanSetSpecifyChannel(pAd, pData, (UINT8)Data);
#ifdef CONFIG_AP_SUPPORT
#ifdef RT_CFG80211_P2P_SUPPORT
case CMD_RTPRIV_IOCTL_80211_POWER_MGMT_SET:
- CFG80211_setPowerMgmt(pAd, Data);
+ CFG80211_setPowerMgmt(pAd, (UINT)Data);
break;
#endif /*RT_CFG80211_P2P_SUPPORT*/
@@ -260,11 +266,11 @@ INT CFG80211DRV_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_80211_RTS_THRESHOLD_ADD:
- CFG80211DRV_RtsThresholdAdd(pAd, Data);
+ CFG80211DRV_RtsThresholdAdd(pAd, (UINT)Data);
break;
case CMD_RTPRIV_IOCTL_80211_FRAG_THRESHOLD_ADD:
- CFG80211DRV_FragThresholdAdd(pAd, Data);
+ CFG80211DRV_FragThresholdAdd(pAd, (UINT)Data);
break;
case CMD_RTPRIV_IOCTL_80211_AP_KEY_DEL:
@@ -272,11 +278,11 @@ INT CFG80211DRV_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_80211_AP_KEY_DEFAULT_SET:
- CFG80211_setApDefaultKey(pAd, Data);
+ CFG80211_setApDefaultKey(pAd, (UINT)Data);
break;
case CMD_RTPRIV_IOCTL_80211_PORT_SECURED:
- CFG80211_StaPortSecured(pAd, pData, Data);
+ CFG80211_StaPortSecured(pAd, pData, (UINT)Data);
break;
case CMD_RTPRIV_IOCTL_80211_AP_STA_DEL:
@@ -284,7 +290,7 @@ INT CFG80211DRV_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_80211_AP_ASSOC_RSP_EXTRA_IE:
- CFG80211_setApAssocRspExtraIe(pAd, pData, Data);
+ CFG80211_setApAssocRspExtraIe(pAd, pData, (UINT32)Data);
break;
#endif /* CONFIG_AP_SUPPORT */
@@ -331,11 +337,19 @@ INT CFG80211DRV_IoctlHandle(
RTMP_CFG80211_MULTI_STA_ON(pAd, pAssocIe->pNetDev) ||
#endif /* CFG80211_MULTI_STA */
(Data == RT_CMD_80211_IFTYPE_P2P_CLIENT)
- )
- CFG80211DRV_SetP2pCliAssocIe(pAd, pAssocIe->ie, pAssocIe->ie_len);
- else
+ ) {
+ if (pAssocIe->ie && pAssocIe->ie_len > 0)
+ CFG80211DRV_SetP2pCliAssocIe(pAd, pAssocIe->ie, pAssocIe->ie_len);
+ else
+ CFG80211DRV_SetP2pCliAssocIe(pAd, NULL, 0);
+ } else
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE || CFG80211_MULTI_STA */
- RTMP_DRIVER_80211_GEN_IE_SET(pAd, pAssocIe->ie, pAssocIe->ie_len);
+ {
+ if (pAssocIe->ie && pAssocIe->ie_len > 0)
+ RtmpIoctl_rt_ioctl_siwgenie(pAd, pAssocIe->ie, pAssocIe->ie_len);
+ else
+ RtmpIoctl_rt_ioctl_siwgenie(pAd, NULL, 0);
+ }
}
break;
#endif /*CONFIG_STA_SUPPORT*/
@@ -347,7 +361,10 @@ INT CFG80211DRV_IoctlHandle(
break;
case CMD_RTPRIV_IOCTL_80211_VIF_DEL:
- RTMP_CFG80211_VirtualIF_Remove(pAd, pData, Data);
+ /* .del_virtual_intf CFG hook function,
+ * If we lock here, will cause dead_lock issue
+ */
+ RTMP_CFG80211_VirtualIF_Remove(pAd, pData, (UINT32)Data, FALSE);
break;
#endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE || CFG80211_MULTI_STA */
@@ -638,7 +655,7 @@ BOOLEAN CFG80211DRV_OpsSetChannel(RTMP_ADAPTER *pAd, VOID *pData)
IfType == RT_CMD_80211_IFTYPE_P2P_GO)
{
- wdev->bw = pAd->CommonCfg.RegTransmitSetting.field.BW;
+ wdev->bw = (UCHAR)(pAd->CommonCfg.RegTransmitSetting.field.BW);
pAd->CommonCfg.Channel = ChanId;
if(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_BELOW)
@@ -664,7 +681,7 @@ BOOLEAN CFG80211DRV_OpsSetChannel(RTMP_ADAPTER *pAd, VOID *pData)
if(IfType == RT_CMD_80211_IFTYPE_AP ||
IfType == RT_CMD_80211_IFTYPE_P2P_GO)
{
- wdev->bw = pAd->CommonCfg.RegTransmitSetting.field.BW;
+ wdev->bw = (UCHAR)(pAd->CommonCfg.RegTransmitSetting.field.BW);
pAd->CommonCfg.Channel = ChanId;
if(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_BELOW)
@@ -737,9 +754,9 @@ BOOLEAN CFG80211DRV_OpsSetChannel(RTMP_ADAPTER *pAd, VOID *pData)
else
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
- bbp_set_bw(pAd, pAd->CommonCfg.RegTransmitSetting.field.BW);
- AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel,FALSE);
- AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+ bbp_set_bw(pAd, (UINT8)(pAd->CommonCfg.RegTransmitSetting.field.BW));
+ AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+ AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
CFG80211DBG(RT_DEBUG_TRACE, ("80211> New CH = %d, New BW = %d with Ext[%d]\n",
pAd->CommonCfg.CentralChannel, pAd->CommonCfg.RegTransmitSetting.field.BW,
@@ -798,7 +815,7 @@ BOOLEAN CFG80211DRV_OpsJoinIbss(
pIbssInfo = (CMD_RTPRIV_IOCTL_80211_IBSS *)pData;
pAd->StaCfg.bAutoReconnect = TRUE;
- pAd->CommonCfg.BeaconPeriod = pIbssInfo->BeaconInterval;
+ pAd->CommonCfg.BeaconPeriod = (USHORT)pIbssInfo->BeaconInterval;
if (pIbssInfo->privacy)
{
@@ -1022,7 +1039,7 @@ BOOLEAN CFG80211DRV_StaGet(
pIbssInfo->tx_packets = pAd->WlanCounters.TransmittedFragmentCount.u.LowPart;
pIbssInfo->tx_retries = pAd->WlanCounters.RetryCount.u.LowPart;
pIbssInfo->tx_failed = pAd->WlanCounters.FailedCount.u.LowPart;
- pIbssInfo->rx_packets = pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
+ pIbssInfo->rx_packets = (UINT32)(pAd->WlanCounters.ReceivedFragmentCount.QuadPart);
/* fill signal */
@@ -1144,8 +1161,10 @@ BOOLEAN CFG80211DRV_StaKeyAdd(
&pAd->SharedKey[BSS0][pKeyInfo->KeyId], pEntry->Addr);
}
else
- printk("%s =====> can't add to [%d]Wcid %d, type=%d\n", __FUNCTION__, i,
- pEntry->wcid, pEntry->EntryType);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("%s can't add [%d]Wcid %d type=%d\n",
+ __func__, i, pEntry->wcid,
+ pEntry->EntryType));
}
}
@@ -1651,20 +1670,25 @@ VOID CFG80211_LostApInform(
{
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
-// CFG80211_CB *p80211CB = pAd->pCfg80211_CB;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0))
+ CFG80211_CB *p80211CB = pAd->pCfg80211_CB;
+
+ DBGPRINT(RT_DEBUG_TRACE, ("80211> CFG80211_LostApInform ==> %d\n",
+ p80211CB->pCfg80211_Wdev->sme_state));
+#endif
pAd->StaCfg.bAutoReconnect = FALSE;
#if 0 //MCC
if(pAd->cfg80211_ctrl.isMccOn)
{
- printk("MCC:==============================> off by STA\n");
+ DBGPRINT(RT_DEBUG_OFF, ("MCC:==============================> off by STA\n"));
pAd->cfg80211_ctrl.isMccOn = FALSE;
CmdMccStop(pAd, NULL);
}
#endif
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0))
- DBGPRINT(RT_DEBUG_TRACE, ("80211> CFG80211_LostApInform ==> %d\n",
+ DBGPRINT(RT_DEBUG_TRACE, ("80211> CFG80211_LostApInform ==> %d\n",
p80211CB->pCfg80211_Wdev->sme_state));
if (p80211CB->pCfg80211_Wdev->sme_state == CFG80211_SME_CONNECTING)
{
@@ -1676,7 +1700,11 @@ VOID CFG80211_LostApInform(
cfg80211_disconnected(pAd->net_dev, 0, NULL, 0, GFP_KERNEL);
}
#else
- cfg80211_disconnected(pAd->net_dev, 0, NULL, 0, GFP_KERNEL);
+ cfg80211_disconnected(pAd->net_dev, 0, NULL, 0,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0))
+ FALSE,/* locally_generated */
+#endif
+ GFP_KERNEL);
#endif
}
#endif /*CONFIG_STA_SUPPORT*/
@@ -1772,7 +1800,7 @@ VOID CFG80211_RegRuleApply(
UINT32 IdBand, IdChan, IdPwr;
UINT32 ChanNum, ChanId, Power, RecId, DfsType;
BOOLEAN FlgIsRadar;
- ULONG IrqFlags;
+ ULONG IrqFlags = 0;
#ifdef DFS_SUPPORT
RADAR_DETECT_STRUCT *pRadarDetect;
#endif /* DFS_SUPPORT */
@@ -1840,18 +1868,15 @@ VOID CFG80211_RegRuleApply(
#endif /* EXT_BUILD_CHANNEL_LIST */
#endif /* AUTO_CH_SELECT_ENHANCE */
- for(IdBand=0; IdBand<IEEE80211_NUM_BANDS; IdBand++)
- {
- if (((IdBand == IEEE80211_BAND_2GHZ) && (pBand24G == NULL)) ||
- ((IdBand == IEEE80211_BAND_5GHZ) && (pBand5G == NULL)))
+ for (IdBand = 0; IdBand < KAL_NUM_BANDS; IdBand++) {
+ if (((IdBand == KAL_BAND_2GHZ) && (pBand24G == NULL)) ||
+ ((IdBand == KAL_BAND_5GHZ) && (pBand5G == NULL)))
{
continue;
}
- if (IdBand == IEEE80211_BAND_2GHZ)
- {
+ if (IdBand == KAL_BAND_2GHZ)
CFG80211DBG(RT_DEBUG_TRACE, ("crda> reset chan/power for 2.4GHz\n"));
- }
else
{
CFG80211DBG(RT_DEBUG_TRACE, ("crda> reset chan/power for 5GHz\n"));
@@ -1885,7 +1910,7 @@ VOID CFG80211_RegRuleApply(
for(IdPwr=0; IdPwr<MAX_NUM_OF_CHANNELS; IdPwr++)
{
- if (ChanId == pAd->TxPower[IdPwr].Channel)
+ if (((UCHAR)ChanId) == pAd->TxPower[IdPwr].Channel)
{
/* init the channel info. */
NdisMoveMemory(&pAd->ChannelList[RecId],
@@ -1893,22 +1918,22 @@ VOID CFG80211_RegRuleApply(
sizeof(CHANNEL_TX_POWER));
/* keep channel number */
- pAd->ChannelList[RecId].Channel = ChanId;
+ pAd->ChannelList[RecId].Channel = (UCHAR)ChanId;
/* keep maximum tranmission power */
- pAd->ChannelList[RecId].MaxTxPwr = Power;
+ pAd->ChannelList[RecId].MaxTxPwr = (UCHAR)Power;
/* keep DFS flag */
if (FlgIsRadar == TRUE)
- pAd->ChannelList[RecId].DfsReq = TRUE;
+ pAd->ChannelList[RecId].DfsReq = (UCHAR)TRUE;
else
- pAd->ChannelList[RecId].DfsReq = FALSE;
+ pAd->ChannelList[RecId].DfsReq = (UCHAR)FALSE;
/* keep DFS type */
- pAd->ChannelList[RecId].RegulatoryDomain = DfsType;
+ pAd->ChannelList[RecId].RegulatoryDomain = (UCHAR)DfsType;
/* re-set DFS info. */
- pAd->CommonCfg.RDDurRegion = DfsType;
+ pAd->CommonCfg.RDDurRegion = (UCHAR)DfsType;
#if 0
if (DfsType == JAP_W53)
@@ -1942,7 +1967,7 @@ VOID CFG80211_RegRuleApply(
}
}
- pAd->ChannelListNum = RecId;
+ pAd->ChannelListNum = (UCHAR)RecId;
RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
CFG80211DBG(RT_DEBUG_TRACE, ("crda> Number of channels = %d\n", RecId));
@@ -2047,7 +2072,7 @@ INT CFG80211_setStaDefaultKey(
PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
DBGPRINT(RT_DEBUG_TRACE, ("Set Sta Default Key: %d\n", Data));
- pAd->StaCfg.wdev.DefaultKeyId = Data; /* base 0 */
+ pAd->StaCfg.wdev.DefaultKeyId = (UCHAR)Data; /* base 0 */
return 0;
}
@@ -2057,7 +2082,7 @@ INT CFG80211_setStaMgmtDefaultKey(
IN UINT Data
)
{
- PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+ /* PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB; */
DBGPRINT(RT_DEBUG_TRACE, ("Set Sta MgmtDefault Key: %d\n", Data));
//pAd->StaCfg.wdev.MgmtDefaultKeyId = Data; /* base 0 */
@@ -2186,15 +2211,15 @@ BOOLEAN CFG80211_checkScanTable(
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,39))
if (pAd->ScanTab.BssEntry[bss_idx].Channel > 14)
- CenFreq = ieee80211_channel_to_frequency(pBssEntry->Channel , IEEE80211_BAND_5GHZ);
+ CenFreq = ieee80211_channel_to_frequency(pBssEntry->Channel, KAL_BAND_5GHZ);
else
- CenFreq = ieee80211_channel_to_frequency(pBssEntry->Channel , IEEE80211_BAND_2GHZ);
+ CenFreq = ieee80211_channel_to_frequency(pBssEntry->Channel, KAL_BAND_2GHZ);
#else
CenFreq = ieee80211_channel_to_frequency(pBssEntry->Channel);
#endif
chan = ieee80211_get_channel(pWiphy, CenFreq);
- ieLen = 2 + pApCliEntry->MlmeAux.SsidLen + pBssEntry->VarIeFromProbeRspLen;
+ ieLen = (UCHAR)(2 + pApCliEntry->MlmeAux.SsidLen + pBssEntry->VarIeFromProbeRspLen);
os_alloc_mem(NULL, (UCHAR **)&ie, ieLen);
if (!ie)
@@ -2208,8 +2233,9 @@ BOOLEAN CFG80211_checkScanTable(
NdisCopyMemory(ie + 2, pApCliEntry->MlmeAux.Ssid, pApCliEntry->MlmeAux.SsidLen);
NdisCopyMemory(ie + 2 + pApCliEntry->MlmeAux.SsidLen, pBssEntry->pVarIeFromProbRsp,
pBssEntry->VarIeFromProbeRspLen);
-
- bss = cfg80211_inform_bss(pWiphy, chan,
+
+ if (chan) {
+ bss = cfg80211_inform_bss(pWiphy, chan,
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0))
CFG80211_BSS_FTYPE_UNKNOWN,
#endif
@@ -2221,12 +2247,26 @@ BOOLEAN CFG80211_checkScanTable(
(pBssEntry->Rssi * 100),
#endif
GFP_KERNEL);
+ } else {
+ DBGPRINT(RT_DEBUG_ERROR, ("Invalid channel !!\n"));
+
+ if (ie != NULL)
+ os_free_mem(NULL, ie);
+
+ return FALSE;
+ }
+
if (bss)
{
- printk("Fake New %s(%02x:%02x:%02x:%02x:%02x:%02x) in Kernel_ScanTable with CH[%d][%d] BI:%d len:%d\n",
- pApCliEntry->MlmeAux.Ssid,
- PRINT_MAC(pApCliEntry->MlmeAux.Bssid),bss->channel->center_freq, pBssEntry->Channel,
- pApCliEntry->MlmeAux.BeaconPeriod, pBssEntry->VarIeFromProbeRspLen);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Fake New %s(%02x:%02x:%02x:%02x:%02x:%02x)",
+ pApCliEntry->MlmeAux.Ssid,
+ PRINT_MAC(pApCliEntry->MlmeAux.Bssid)));
+ DBGPRINT(RT_DEBUG_OFF,
+ (" in Kernel_ScanTable with CH[%d][%d] BI:%d len:%d\n",
+ bss->channel->center_freq, pBssEntry->Channel,
+ pApCliEntry->MlmeAux.BeaconPeriod,
+ pBssEntry->VarIeFromProbeRspLen));
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0))
cfg80211_put_bss(pWiphy, bss);
@@ -2243,7 +2283,9 @@ BOOLEAN CFG80211_checkScanTable(
return TRUE;
}
else
- printk("%s Not In Driver Scan Table\n", pApCliEntry->MlmeAux.Ssid);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("%s Not In Driver Scan Table\n",
+ pApCliEntry->MlmeAux.Ssid));
return FALSE;
}
@@ -2366,7 +2408,7 @@ VOID CFG80211_JoinIBSS(
pBeaconFrame, FrameLen);
#endif /*CONFIG_STA_SUPPORT*/
MlmeFreeMemory(pAd, pBeaconFrame);
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18 ,0))
+#if (KERNEL_VERSION(3, 15, 0) <= LINUX_VERSION_CODE)
CFG80211OS_JoinIBSS(pAd->net_dev, pBSSID, pCfg80211_CB->pCfg80211_Channels);
#else
CFG80211OS_JoinIBSS(pAd->net_dev, pBSSID);
diff --git a/os/linux/config.mk b/os/linux/config.mk
index 9cae843..f591aee 100755
--- a/os/linux/config.mk
+++ b/os/linux/config.mk
@@ -71,7 +71,7 @@ HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n
#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
#Support Net interface block while Tx-Sw queue full
-HAS_BLOCK_NET_IF=n
+HAS_BLOCK_NET_IF=y
#Support IGMP-Snooping function.
HAS_IGMP_SNOOP_SUPPORT=n
@@ -275,7 +275,7 @@ HAS_CFG80211_P2P_SUPPORT=y
HAS_CFG80211_P2P_CONCURRENT_DEVICE=y
HAS_CFG80211_P2P_SINGLE_DEVICE=n
HAS_CFG80211_P2P_STATIC_CONCURRENT_DEVICE=n
-HAS_CFG80211_BUILD_CHANNEL_LIST=n
+HAS_CFG80211_BUILD_CHANNEL_LIST=y
HAS_CFG80211_P2P_MULTI_CHAN_SUPPORT=n
#Cfg80211-based TDLS support
@@ -316,7 +316,11 @@ HAS_HT40_DISABLE_SHORT_GI=n
HAS_BSS_COEX_DISABLE=n
#Treat compile Warning as Error
-HAS_COMPILE_WARNING_AS_ERROR=n
+ifndef CONFIG_KASAN
+# KASAN need high version of GCC, many compile errors in
+# this module, so disable -Werror option
+HAS_COMPILE_WARNING_AS_ERROR=y
+endif
#ifdef OS_ABL_FUNC_SUPPORT
ifeq ($(OSABL),YES)
@@ -472,6 +476,10 @@ HAS_MT_PS_SUPPORT=n
HAS_CONFIG_COB_SOLUTION_SUPPORT=y
#endif
+#ifdef SMART_CARRIER_SENSE
+HAS_SMART_CARRIER_SENSE_SUPPORT=n
+#endif
+
#ifdef USB_IOT_WORKAROUND
# This workaround can fix IOT issue with some specific USB host controllers.
# On those host controllers, a USB packet is unexpectedly divided into 2 smaller
@@ -497,6 +505,7 @@ ifeq ($(PLATFORM),MSTAR)
HAS_USB_BULK_BUF_ALIGMENT=y
HAS_USB_BULK_BUF_PREALLOC=y
HAS_NEW_FAST_CONNECT_SCHEME_SUPPORT=y
+HAS_SUPPORT_ACS_ALL_CHANNEL_RANK=y
endif
# ----------- End of MSTAR -----------
@@ -510,7 +519,6 @@ endif
# ============ HE_TV ===========
ifeq ($(PLATFORM),HE_TV)
HAS_HE_SUPPORT=y
-HAS_RESUME_WITH_USB_RESET_SUPPORT=y
HAS_USB_BULK_BUF_ALIGMENT=n
HAS_USB_BULK_BUF_PREALLOC=n
endif
@@ -532,7 +540,7 @@ WFLAGS += -DCONFIG_RA_NAT_NONE
WFLAGS += -I$(RT28xx_DIR)/include
ifneq (,$(findstring MSTAR,$(PLATFORM)))
-#WFLAGS += -DMSTAR_SUPPORT
+WFLAGS += -DMSTAR_SUPPORT
endif
ifeq ($(PREALLOC),YES)
@@ -1251,6 +1259,9 @@ WFLAGS += -DNEW_FAST_CONNECT_SCHEME_SUPPORT
endif
endif
+ifeq ($(HAS_SMART_CARRIER_SENSE_SUPPORT),y)
+WFLAGS += -DSMART_CARRIER_SENSE_SUPPORT
+endif
endif
# endif of ifeq ($(RT28xx_MODE),STA)
#endif // CONFIG_STA_SUPPORT //
@@ -2273,7 +2284,7 @@ endif
ifneq ($(findstring mt7603u,$(CHIPSET)),)
WFLAGS += -DMT7603 -DMT_BBP -DMT_RF -DRTMP_RF_RW_SUPPORT -DMT_MAC -DRTMP_MAC_USB -DRTMP_USB_SUPPORT -DMCS_LUT_SUPPORT -DRTMP_TIMER_TASK_SUPPORT
-WFLAGS += -DRTMP_EFUSE_SUPPORT
+WFLAGS += -DRTMP_EFUSE_SUPPORT -DBUF_ALIGMENT_RINGSIZE=2
WFLAGS += -DSTA_LP_PHASE_1_SUPPORT
#WFLAGS += -DCONFIG_PM_BIT_HW_MODE
#-DNEW_MBSSID_MODE
@@ -2384,5 +2395,6 @@ endif
ifeq ($(PLATFORM),MSTAR)
WFLAGS += -Wframe-larger-than=2048
+WFLAGS += -DCCN3_TV_SUPPORT
EXTRA_CFLAGS := $(WFLAGS)
endif
diff --git a/os/linux/prealloc.c b/os/linux/prealloc.c
index 5ed6bb9..bed90d7 100755
--- a/os/linux/prealloc.c
+++ b/os/linux/prealloc.c
@@ -1,4 +1,3 @@
-
#include <linux/module.h>
#include <linux/version.h>
#include <linux/kernel.h>
@@ -26,11 +25,7 @@ enum BLK_TYPE {
BLK_NULL,
#endif
BLK_PSPOLL,
-#if 0// USB_BULK_BUF_PREALLOC
- BLK_RX0 = 5*BUF_ALIGMENT_RINGSIZE,
-#else
BLK_RX0,
-#endif
BLK_RX1,
BLK_RX2,
BLK_RX3,
@@ -47,8 +42,7 @@ enum BLK_TYPE {
#endif
-
-void * PreAllocBuffer[NUM_OF_TOTAL_BLK];
+void* PreAllocBuffer[NUM_OF_TOTAL_BLK];
ULONG PreAllocDmaAddr[NUM_OF_TOTAL_BLK];
int __init prealloc_init(void)
@@ -56,10 +50,10 @@ int __init prealloc_init(void)
int result = 0, tx = 0, rx = 0, k = 0;
memset(PreAllocBuffer,0, NUM_OF_TOTAL_BLK);
- printk("HTTX_BUFFER [%zu]\n",sizeof(HTTX_BUFFER));
- printk("TX_BUFFER [%zu]\n",sizeof(TX_BUFFER));
+ /*printk("HTTX_BUFFER [%u]\n",sizeof(HTTX_BUFFER));
+ printk("TX_BUFFER [%u]\n",sizeof(TX_BUFFER));
printk("MAX_RXBULK_SIZE [%u]\n",MAX_RXBULK_SIZE);
- printk("CMD_RSP_BULK_SIZE [%u]\n",CMD_RSP_BULK_SIZE);
+ printk("CMD_RSP_BULK_SIZE [%u]\n",CMD_RSP_BULK_SIZE);*/
//TX
#ifdef USB_BULK_BUF_PREALLOC
for(tx=0;tx<5*BUF_ALIGMENT_RINGSIZE;tx++)
@@ -67,8 +61,6 @@ int __init prealloc_init(void)
for(tx=0; tx<5; tx++)
#endif
{
-
- //printk("%s[%u][%u]\n",__FUNCTION__,sizeof(HTTX_BUFFER),NUM_OF_TOTAL_BLK);
PreAllocBuffer[tx+BLK_TX0] = kmalloc(sizeof(HTTX_BUFFER), GFP_KERNEL | GFP_DMA);
if (!PreAllocBuffer[tx+BLK_TX0])
goto fail_malloc1;
@@ -77,7 +69,6 @@ int __init prealloc_init(void)
}
//Null
-
PreAllocBuffer[BLK_NULL] = kmalloc(sizeof(TX_BUFFER), GFP_KERNEL | GFP_DMA);
if (!PreAllocBuffer[BLK_NULL])
goto fail_malloc1;
@@ -88,7 +79,7 @@ int __init prealloc_init(void)
PreAllocBuffer[BLK_PSPOLL] = kmalloc(sizeof(TX_BUFFER), GFP_KERNEL | GFP_DMA);
if (!PreAllocBuffer[BLK_PSPOLL])
goto fail_malloc2;
-
+
PreAllocDmaAddr[BLK_PSPOLL] = virt_to_phys(PreAllocBuffer[BLK_PSPOLL]);
//RX
@@ -109,7 +100,7 @@ int __init prealloc_init(void)
PreAllocDmaAddr[BLK_CMD] = virt_to_phys(PreAllocBuffer[BLK_CMD]);
for (k=0;k<NUM_OF_TOTAL_BLK;k++)
- printk("==>[%d]:PreBuff:0x%p, DmaAddr:0x%lu\n", k, PreAllocBuffer[k], PreAllocDmaAddr[k]);
+ printk("==>[%d]:PreBuff:0x%p, DmaAddr:0x%p\n", k, PreAllocBuffer[k], (void*)PreAllocDmaAddr[k]);
printk("install prealloc ok\n");
return result; /* succeed */
@@ -218,12 +209,10 @@ void *RTMPQMemAddr(int size, dma_addr_t *pDmaAddr, int type)
if (size > MAX_RXBULK_SIZE)
return NULL;
break;
- #if 1
case BLK_CMD:
if (size > CMD_RSP_BULK_SIZE)
return NULL;
break;
- #endif
default:
printk("Non-support memory type!!!!\n");
return NULL;
@@ -233,10 +222,7 @@ void *RTMPQMemAddr(int size, dma_addr_t *pDmaAddr, int type)
return PreAllocBuffer[type];
}
#endif
-
-
EXPORT_SYMBOL(RTMPQMemAddr);
module_init(prealloc_init);
module_exit(prealloc_cleanup);
-
diff --git a/os/linux/rt_linux.c b/os/linux/rt_linux.c
index 6ec5f03..4563b08 100755
--- a/os/linux/rt_linux.c
+++ b/os/linux/rt_linux.c
@@ -192,7 +192,7 @@ static inline VOID __RTMP_OS_Del_Timer(
OUT BOOLEAN *pCancelled)
{
if (timer_pending(pTimer))
- *pCancelled = del_timer_sync(pTimer);
+ *pCancelled = (BOOLEAN)del_timer_sync(pTimer);
else
*pCancelled = TRUE;
}
@@ -492,7 +492,7 @@ NDIS_STATUS RTMPCloneNdisPacket(
GET_OS_PKT_LEN(pInPacket));
*ppOutPacket = OSPKT_TO_RTPKT(pkt);
- printk(KERN_ERR "###Clone###\n");
+ DBGPRINT(RT_DEBUG_OFF, (KERN_ERR "###Clone###\n"));
return NDIS_STATUS_SUCCESS;
}
@@ -517,7 +517,7 @@ NDIS_STATUS RTMPAllocateNdisPacket(
if (pPacket == NULL) {
*ppPacket = NULL;
#ifdef DEBUG
- printk(KERN_ERR "RTMPAllocateNdisPacket Fail\n\n");
+ DBGPRINT(RT_DEBUG_OFF, (KERN_ERR "RTMPAllocateNdisPacket Fail\n\n"));
#endif
return NDIS_STATUS_FAILURE;
}
@@ -923,25 +923,25 @@ void wlan_802_11_to_802_3_packet(
}
-void hex_dump(char *str, UCHAR *pSrcBufVA, UINT SrcBufLen)
+void hex_dump(char *str, const UCHAR *pSrcBufVA, UINT SrcBufLen)
{
#ifdef DBG
- unsigned char *pt;
+ const unsigned char *pt;
int x;
if (RTDebugLevel < RT_DEBUG_TRACE)
return;
pt = pSrcBufVA;
- printk("%s: %p, len = %d\n", str, pSrcBufVA, SrcBufLen);
+ DBGPRINT(RT_DEBUG_OFF, ("%s: %p, len = %d\n", str, pSrcBufVA, SrcBufLen));
for (x = 0; x < SrcBufLen; x++) {
if (x % 16 == 0)
- printk("0x%04x : ", x);
- printk("%02x ", ((unsigned char)pt[x]));
+ DBGPRINT(RT_DEBUG_OFF, ("0x%04x : ", x));
+ DBGPRINT(RT_DEBUG_OFF, ("%02x ", ((unsigned char)pt[x])));
if (x % 16 == 15)
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
}
- printk("\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
#endif /* DBG */
}
@@ -1072,13 +1072,20 @@ void RtmpOSFileSeek(RTMP_OS_FD osfd, int offset)
int RtmpOSFileRead(RTMP_OS_FD osfd, char *pDataPtr, int readLen)
{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0))
+ size_t count = 0;
+ count = kernel_read(osfd, 0, pDataPtr, readLen);
+ return count;
+#else
/* The object must have a read method */
if (osfd->f_op && osfd->f_op->read) {
return osfd->f_op->read(osfd, pDataPtr, readLen, &osfd->f_pos);
- } else {
+ }
+ else {
DBGPRINT(RT_DEBUG_ERROR, ("no file read method\n"));
return -1;
}
+#endif
}
@@ -1149,10 +1156,10 @@ static inline NDIS_STATUS __RtmpOSTaskKill(OS_TASK *pTask)
mb();
ret = KILL_THREAD_PID(pTask->taskPID, SIGTERM, 1);
if (ret) {
- printk(KERN_WARNING
+ DBGPRINT(RT_DEBUG_OFF, (KERN_WARNING
"kill task(%s) with pid(%d) failed(retVal=%d)!\n",
pTask->taskName, GET_PID_NUMBER(pTask->taskPID),
- ret);
+ ret));
} else {
wait_for_completion(&pTask->taskComplete);
pTask->taskPID = THREAD_PID_INIT_VALUE;
@@ -1377,7 +1384,7 @@ static UINT32 RtmpOSWirelessEventTranslate(IN UINT32 eventType)
#endif /* P2P_SUPPORT */
default:
- printk("Unknown event: 0x%x\n", eventType);
+ DBGPRINT(RT_DEBUG_OFF, ("Unknown event: 0x%x\n", eventType));
break;
}
@@ -1404,19 +1411,18 @@ int RtmpOSWrielessEventSend(
memset(&wrqu, 0, sizeof (wrqu));
if (flags > -1)
- wrqu.data.flags = flags;
+ wrqu.data.flags = (USHORT)flags;
if (pSrcMac)
memcpy(wrqu.ap_addr.sa_data, pSrcMac, MAC_ADDR_LEN);
if ((pData != NULL) && (dataLen > 0))
- wrqu.data.length = dataLen;
+ wrqu.data.length = (USHORT)dataLen;
else
wrqu.data.length = 0;
-#ifdef CONFIG_WEXT_EXT
+
wireless_send_event(pNetDev, eventType, &wrqu, (char *)pData);
#endif
-#endif
return 0;
}
@@ -1439,18 +1445,17 @@ int RtmpOSWrielessEventSendExt(
memset(&wrqu, 0, sizeof (wrqu));
if (flags > -1)
- wrqu.data.flags = flags;
+ wrqu.data.flags = (USHORT)flags;
if (pSrcMac)
memcpy(wrqu.ap_addr.sa_data, pSrcMac, MAC_ADDR_LEN);
if ((pData != NULL) && (dataLen > 0))
- wrqu.data.length = dataLen;
+ wrqu.data.length = (USHORT)dataLen;
+
+ wrqu.addr.sa_family = (sa_family_t)family;
- wrqu.addr.sa_family = family;
-#ifdef CONFIG_WEXT_EXT
wireless_send_event(pNetDev, eventType, &wrqu, (char *)pData);
-#endif
return 0;
}
@@ -1662,35 +1667,29 @@ static int RtmpOSNetDevRequestName(
PNET_DEV existNetDev;
RTMP_STRING suffixName[IFNAMSIZ];
RTMP_STRING desiredName[IFNAMSIZ];
- int ifNameIdx,
- prefixLen,
- slotNameLen;
+ int ifNameIdx;
int Status;
- prefixLen = strlen(pPrefixStr);
- ASSERT((prefixLen < IFNAMSIZ));
-
for (ifNameIdx = devIdx; ifNameIdx < 32; ifNameIdx++) {
memset(suffixName, 0, IFNAMSIZ);
memset(desiredName, 0, IFNAMSIZ);
- strncpy(&desiredName[0], pPrefixStr, prefixLen);
+ snprintf(desiredName, sizeof(desiredName), "%s", pPrefixStr);
#ifdef MULTIPLE_CARD_SUPPORT
#ifdef RT_SOC_SUPPORT
if (MC_RowID > 0)
- sprintf(suffixName, "i%d", ifNameIdx);
+ snprintf(suffixName, sizeof(suffixName), "i%d", ifNameIdx);
else
#else
if (MC_RowID >= 0)
- sprintf(suffixName, "%02d_%d", MC_RowID, ifNameIdx);
+ snprintf(suffixName, sizeof(suffixName), "%02d_%d", MC_RowID, ifNameIdx);
else
#endif /* RT_SOC_SUPPORT */
#endif /* MULTIPLE_CARD_SUPPORT */
- sprintf(suffixName, "%d", ifNameIdx);
+ snprintf(suffixName, sizeof(suffixName), "%d", ifNameIdx);
- slotNameLen = strlen(suffixName);
- ASSERT(((slotNameLen + prefixLen) < IFNAMSIZ));
- strcat(desiredName, suffixName);
+ snprintf(desiredName + strlen(desiredName),
+ sizeof(desiredName) - strlen(desiredName), "%s", suffixName);
existNetDev = RtmpOSNetDevGetByName(dev, &desiredName[0]);
if (existNetDev == NULL)
@@ -1735,12 +1734,12 @@ void RtmpOSNetDevFree(PNET_DEV pNetDev)
#endif
#ifdef VENDOR_FEATURE4_SUPPORT
- printk("OS_NumOfMemAlloc = %ld, OS_NumOfMemFree = %ld\n",
- OS_NumOfMemAlloc, OS_NumOfMemFree);
+ DBGPRINT(RT_DEBUG_OFF, ("OS_NumOfMemAlloc = %ld, OS_NumOfMemFree = %ld\n",
+ OS_NumOfMemAlloc, OS_NumOfMemFree));
#endif /* VENDOR_FEATURE4_SUPPORT */
#ifdef VENDOR_FEATURE2_SUPPORT
- printk("OS_NumOfPktAlloc = %ld, OS_NumOfPktFree = %ld\n",
- OS_NumOfPktAlloc, OS_NumOfPktFree);
+ DBGPRINT(RT_DEBUG_OFF, ("OS_NumOfPktAlloc = %ld, OS_NumOfPktFree = %ld\n",
+ OS_NumOfPktAlloc, OS_NumOfPktFree));
#endif /* VENDOR_FEATURE2_SUPPORT */
}
@@ -1832,22 +1831,41 @@ INT RtmpOSNetDevDestory(VOID *pReserved, PNET_DEV pNetDev)
{
/* TODO: Need to fix this */
- printk("WARNING: This function(%s) not implement yet!!!\n",
- __FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("WARNING: This function(%s) not implement yet!!!\n",
+ __func__));
return 0;
}
void RtmpOSNetDevDetach(PNET_DEV pNetDev)
{
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
+ struct net_device_ops *pNetDevOps = (struct net_device_ops *)pNetDev->netdev_ops;
+#endif
+
+ unregister_netdev(pNetDev);
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
+ if (pNetDevOps) {
+ vfree(pNetDevOps);
+ pNetDevOps = NULL;
+ }
+#endif
+}
+
+void RtmpOSNetDevDetach_WithoutLock(PNET_DEV pNetDev)
+{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
struct net_device_ops *pNetDevOps = (struct net_device_ops *)pNetDev->netdev_ops;
#endif
unregister_netdevice(pNetDev);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
- vfree(pNetDevOps);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)
+ if (pNetDevOps) {
+ vfree(pNetDevOps);
+ pNetDevOps = NULL;
+ }
#endif
}
@@ -1932,12 +1950,13 @@ int RtmpOSNetDevAttach(
/* OS specific flags, here we used to indicate if we are virtual interface */
/* pNetDev->priv_flags = pDevOpHook->priv_flags; */
- RT_DEV_PRIV_FLAGS_SET(pNetDev, pDevOpHook->priv_flags);
+ RT_DEV_PRIV_FLAGS_SET(pNetDev, (USHORT)pDevOpHook->priv_flags);
#if (WIRELESS_EXT < 21) && (WIRELESS_EXT >= 12)
/* pNetDev->get_wireless_stats = rt28xx_get_wireless_stats; */
pNetDev->get_wireless_stats = pDevOpHook->get_wstats;
#endif
+
#ifdef CONFIG_WIRELESS_EXT
#ifdef CONFIG_STA_SUPPORT
#if WIRELESS_EXT >= 12
@@ -1947,6 +1966,7 @@ int RtmpOSNetDevAttach(
}
#endif /*WIRELESS_EXT >= 12 */
#endif /* CONFIG_STA_SUPPORT */
+
#ifdef CONFIG_APSTA_MIXED_SUPPORT
#if WIRELESS_EXT >= 12
if (OpMode == OPMODE_AP) {
@@ -1955,7 +1975,7 @@ int RtmpOSNetDevAttach(
}
#endif /*WIRELESS_EXT >= 12 */
#endif /* CONFIG_APSTA_MIXED_SUPPORT */
-#endif
+#endif /* CONFIG_WIRELESS_EXT */
/* copy the net device mac address to the net_device structure. */
NdisMoveMemory(pNetDev->dev_addr, &pDevOpHook->devAddr[0],
MAC_ADDR_LEN);
@@ -2182,7 +2202,7 @@ VOID RtmpDrvAllMacPrint(
/* write data to file */
file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
- printk("%s", msg);
+ DBGPRINT(RT_DEBUG_OFF, ("%s", msg));
macAddr += AddrStep;
}
sprintf(msg, "\nDump all MAC values to %s\n", fileName);
@@ -2232,7 +2252,7 @@ VOID RtmpDrvAllE2PPrint(
/* write data to file */
file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
- printk("%s", msg);
+ DBGPRINT(RT_DEBUG_OFF, ("%s", msg));
eepAddr += AddrStep;
pMacContent += (AddrStep >> 1);
}
@@ -2808,6 +2828,10 @@ void OS_LOAD_CODE_FROM_BIN(unsigned char **image, char *bin_name, void *inf_dev,
}
*image = kmalloc(fw_entry->size, GFP_KERNEL);
+ if (*image == NULL) {
+ release_firmware(fw_entry);
+ return;
+ }
memcpy(*image, fw_entry->data, fw_entry->size);
*code_len = fw_entry->size;
@@ -3691,7 +3715,7 @@ VOID RtmpOsSpinLockBh(NDIS_SPIN_LOCK *pLockOrg)
if (pLock != NULL) {
OS_SEM_LOCK(pLock);
} else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
@@ -3717,7 +3741,7 @@ VOID RtmpOsSpinUnLockBh(NDIS_SPIN_LOCK *pLockOrg)
if (pLock != NULL) {
OS_SEM_UNLOCK(pLock);
} else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
@@ -3744,7 +3768,7 @@ VOID RtmpOsIntLock(NDIS_SPIN_LOCK *pLockOrg, ULONG *pIrqFlags)
if (pLock != NULL) {
OS_INT_LOCK(pLock, *pIrqFlags);
} else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
@@ -3771,7 +3795,7 @@ VOID RtmpOsIntUnLock(NDIS_SPIN_LOCK *pLockOrg, ULONG IrqFlags)
if (pLock != NULL) {
OS_INT_UNLOCK(pLock, IrqFlags);
} else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
void RtmpOsSpinLockIrqSave(NDIS_SPIN_LOCK *lock, unsigned long *flags)
@@ -3782,7 +3806,7 @@ void RtmpOsSpinLockIrqSave(NDIS_SPIN_LOCK *lock, unsigned long *flags)
if (pLock != NULL)
spin_lock_irqsave((spinlock_t *)(pLock), *flags);
else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
@@ -3794,7 +3818,7 @@ void RtmpOsSpinUnlockIrqRestore(NDIS_SPIN_LOCK *lock, unsigned long *flags)
if (pLock != NULL)
spin_unlock_irqrestore((spinlock_t *)(pLock), *flags);
else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
void RtmpOsSpinLockIrq(NDIS_SPIN_LOCK *lock)
@@ -3805,7 +3829,7 @@ void RtmpOsSpinLockIrq(NDIS_SPIN_LOCK *lock)
if (pLock != NULL)
spin_lock_irq((spinlock_t *)(pLock));
else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
void RtmpOsSpinUnlockIrq(NDIS_SPIN_LOCK *lock)
@@ -3816,7 +3840,7 @@ void RtmpOsSpinUnlockIrq(NDIS_SPIN_LOCK *lock)
if (pLock != NULL)
spin_unlock_irq((spinlock_t *)(pLock));
else
- printk("lock> warning! the lock was freed!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("lock> warning! the lock was freed!\n"));
}
/*
@@ -4367,7 +4391,7 @@ BOOLEAN RtmpOsSemaDestory(RTMP_OS_SEM *pSemOrg)
os_free_mem(NULL, pSem);
pSemOrg->pContent = NULL;
} else
- printk("sem> warning! double-free sem!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("sem> warning! double-free sem!\n"));
return TRUE;
}
diff --git a/os/linux/rt_main_dev.c b/os/linux/rt_main_dev.c
index f021615..2ab3af0 100755
--- a/os/linux/rt_main_dev.c
+++ b/os/linux/rt_main_dev.c
@@ -277,6 +277,7 @@ int rt28xx_open(VOID *dev)
RTMP_DRIVER_OP_MODE_GET(pAd, &OpMode);
+#ifdef CONFIG_WIRELESS_EXT
#if WIRELESS_EXT >= 12
/* if (RT_DEV_PRIV_FLAGS_GET(net_dev) == INT_MAIN) */
if (RTMP_DRIVER_MAIN_INF_CHECK(pAd, RT_DEV_PRIV_FLAGS_GET(net_dev)) == NDIS_STATUS_SUCCESS)
@@ -285,14 +286,13 @@ int rt28xx_open(VOID *dev)
if (OpMode == OPMODE_AP)
net_dev->wireless_handlers = (struct iw_handler_def *) &rt28xx_ap_iw_handler_def;
#endif /* CONFIG_APSTA_MIXED_SUPPORT */
-#ifdef CONFIG_WIRELESS_EXT
#ifdef CONFIG_STA_SUPPORT
if (OpMode == OPMODE_STA)
net_dev->wireless_handlers = (struct iw_handler_def *) &rt28xx_iw_handler_def;
#endif /* CONFIG_STA_SUPPORT */
-#endif
}
#endif /* WIRELESS_EXT >= 12 */
+#endif /* #ifdef CONFIG_WIRELESS_EXT */
/*
Request interrupt service routine for PCI device
@@ -366,8 +366,8 @@ int rt28xx_open(VOID *dev)
RTMPDrvOpen(pAd);
#ifdef VENDOR_FEATURE2_SUPPORT
- printk("Number of Packet Allocated in open = %lu\n", OS_NumOfPktAlloc);
- printk("Number of Packet Freed in open = %lu\n", OS_NumOfPktFree);
+ DBGPRINT(RT_DEBUG_OFF, ("Number of Packet Allocated in open = %lu\n", OS_NumOfPktAlloc));
+ DBGPRINT(RT_DEBUG_OFF, ("Number of Packet Freed in open = %lu\n", OS_NumOfPktFree));
#endif /* VENDOR_FEATURE2_SUPPORT */
return (retval);
@@ -394,7 +394,9 @@ PNET_DEV RtmpPhyNetDevInit(VOID *pAd, RTMP_OS_NETDEV_OP_HOOK *pNetDevHook)
RTMP_DRIVER_MAIN_INF_CREATE(pAd, &net_dev);
if (net_dev == NULL)
{
- printk("%s(): main physical net device creation failed!\n", __FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("%s(): main physical net device creation failed!\n",
+ __func__));
return NULL;
}
@@ -532,37 +534,37 @@ VOID dump_skb_info(struct sk_buff *skb)
struct sock *sk = skb->sk;
- printk("Binding sock info:\n");
+ DBGPRINT(RT_DEBUG_OFF, ("Binding sock info:\n"));
if (sk) {
//NETIF_F_HW_CSUM;NETIF_F_TSO
- printk("\tsk_route_caps=0x%x\n", sk->sk_route_caps);
- printk("\tsk_gso_type=%d\n", sk->sk_gso_type);
+ DBGPRINT(RT_DEBUG_OFF, ("\tsk_route_caps=0x%x\n", sk->sk_route_caps));
+ DBGPRINT(RT_DEBUG_OFF, ("\tsk_gso_type=%d\n", sk->sk_gso_type));
} else {
- printk("\tNo binding sock!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\tNo binding sock!\n"));
}
- printk("Binding Skb info:\n");
- printk("\tprotocol=%d\n", skb->protocol);
- printk("\tip_summed=%d", skb->ip_summed);
+ DBGPRINT(RT_DEBUG_OFF, ("Binding Skb info:\n"));
+ DBGPRINT(RT_DEBUG_OFF, ("\tprotocol=%d\n", skb->protocol));
+ DBGPRINT(RT_DEBUG_OFF, ("\tip_summed=%d", skb->ip_summed));
if (skb->ip_summed <= 3)
- printk("(%s)\n", ip_sum_str[skb->ip_summed]);
+ DBGPRINT(RT_DEBUG_OFF, ("(%s)\n", ip_sum_str[skb->ip_summed]));
else
- printk("\n");
-
- printk("\tcsum=0x%x\n", skb->csum);
- printk("\tcsum_start=%d\n", skb->csum_start);
- printk("\tcsum_offset=%d\n", skb->csum_offset);
- printk("\tskb->head=0x%x\n", skb->head);
- printk("\tskb->data=0x%x\n", skb->data);
- printk("\tskb->len=%d\n", skb->len);
+ DBGPRINT(RT_DEBUG_OFF, ("\n"));
+
+ DBGPRINT(RT_DEBUG_OFF, ("\tcsum=0x%x\n", skb->csum));
+ DBGPRINT(RT_DEBUG_OFF, ("\tcsum_start=%d\n", skb->csum_start));
+ DBGPRINT(RT_DEBUG_OFF, ("\tcsum_offset=%d\n", skb->csum_offset));
+ DBGPRINT(RT_DEBUG_OFF, ("\tskb->head=0x%x\n", skb->head));
+ DBGPRINT(RT_DEBUG_OFF, ("\tskb->data=0x%x\n", skb->data));
+ DBGPRINT(RT_DEBUG_OFF, ("\tskb->len=%d\n", skb->len));
if (skb->protocol == htons(ETH_P_IP)){
- printk("\tip_hdr=0x%x\n", ip_hdr(skb));
- printk("\ttcp_hdr=0x%x\n", tcp_hdr(skb));
+ DBGPRINT(RT_DEBUG_OFF, ("\tip_hdr=0x%x\n", ip_hdr(skb)));
+ DBGPRINT(RT_DEBUG_OFF, ("\ttcp_hdr=0x%x\n", tcp_hdr(skb)));
}
- printk("\tgso_size=%d\n", skb_shinfo(skb)->gso_size);
- printk("\tgso_type=%d\n", skb_shinfo(skb)->gso_type);
- printk("\tgso_seg=%d\n", skb_shinfo(skb)->gso_segs);
- printk("\tnr_frags=%d\n", skb_shinfo(skb)->nr_frags);
+ DBGPRINT(RT_DEBUG_OFF, ("\tgso_size=%d\n", skb_shinfo(skb)->gso_size));
+ DBGPRINT(RT_DEBUG_OFF, ("\tgso_type=%d\n", skb_shinfo(skb)->gso_type));
+ DBGPRINT(RT_DEBUG_OFF, ("\tgso_seg=%d\n", skb_shinfo(skb)->gso_segs));
+ DBGPRINT(RT_DEBUG_OFF, ("\tnr_frags=%d\n", skb_shinfo(skb)->nr_frags));
}
@@ -571,8 +573,12 @@ VOID dump_nonlinear_pkt(struct sk_buff *skb)
if (skb_is_nonlinear(skb)) {
int i, nr_frags = skb_shinfo(skb)->nr_frags, len;
void *buf;
- printk("%s(): skb is non-linear! skb->len=%d, skb->data_len=%d, non-paged data len=%d, nr_frags=%d!\n",
- __FUNCTION__, skb->len, skb->data_len, skb_headlen(skb), nr_frags);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("%s(): skb is non-linear! skb->len=%d, skb->data_len=%d, ",
+ __func__, skb->len, skb->data_len));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("non-paged data len=%d, nr_frags=%d!\n",
+ skb_headlen(skb), nr_frags));
len = skb->len;
buf = kmalloc(len, GFP_KERNEL);
@@ -587,7 +593,9 @@ VOID dump_nonlinear_pkt(struct sk_buff *skb)
void *addr;
addr = ((void *) page_address(frag->page)) + frag->page_offset;
- printk("frag %d: page=0x%x, offset=%d, addr=0x%x, size=%d\n", i, frag->page, frag->page_offset, addr, frag->size);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("frag %d: page=0x%x, offset=%d, addr=0x%x, size=%d\n",
+ i, frag->page, frag->page_offset, addr, frag->size));
memcpy(ptr, addr, frag->size);
ptr += frag->size;
len += frag->size;
@@ -621,7 +629,9 @@ INT rt28xx_tso_xmit(struct sk_buff *skb)
if (skb_is_gso(skb) || (skb->ip_summed == CHECKSUM_PARTIAL)) {
if (skb_is_gso(skb)) {
- printk("%s(): skb_is_gso()=%d, skb->ip_summed=%d!\n", __FUNCTION__, skb_is_gso(skb), skb->ip_summed);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("%s(): skb_is_gso()=%d, skb->ip_summed=%d!\n",
+ __func__, skb_is_gso(skb), skb->ip_summed));
if (skb_is_nonlinear(skb))
dump_nonlinear_pkt(skb);
//hex_dump("rt28xx_tso_xmit", (UCHAR *)skb->data, skb->len);
@@ -675,22 +685,27 @@ INT rt28xx_tso_xmit(struct sk_buff *skb)
}
if (skb_is_gso(skb)) {
- printk("\tmss=%d, gso_type=GSO_%s(0x%x), nr_frags=%d!\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\tmss=%d, gso_type=GSO_%s(0x%x), nr_frags=%d!\n",
mss, (gso_type == SKB_GSO_TCPV4 ? "TCP" : "NonTCP"),
- gso_type, nr_frags);
- printk("\tips=0x%x, ipcso=0x%x, tups=0x%x, tucso=0x%x, tucse=0x%x\n",
- ips, ipcso, tups, tucso, tucse);
- printk("RalinkRequiredFields: \n\tcso/tso=%d/%d, is_tcp=%d, ips=%d, tups=%d, mss=%d!\n",
- ((skb->ip_summed == CHECKSUM_PARTIAL) ? 1 : 0),
- (skb_is_gso(skb) ? 1 : 0),
- is_tcp, ips, tups, mss);
- printk("\tfields saved in CB[]:cso/tso=%d:%d, is_tcp=%d, ips=%d, tups=%d, mss=%d!\n",
- RTMP_GET_PKT_CSO(skb),
- RTMP_GET_PKT_TSO(skb),
- RTMP_GET_PKT_TCP(skb),
- RTMP_GET_PKT_IPS(skb),
- RTMP_GET_PKT_TUPS(skb),
- RTMP_GET_PKT_MSS(skb));
+ gso_type, nr_frags));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("\tips=0x%x, ipcso=0x%x, tups=0x%x, tucso=0x%x, tucse=0x%x\n",
+ ips, ipcso, tups, tucso, tucse));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("RalinkRequiredFields:\n\tcso/tso=%d/%d,",
+ ((skb->ip_summed == CHECKSUM_PARTIAL) ? 1 : 0),
+ (skb_is_gso(skb) ? 1 : 0)));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("is_tcp=%d, ips=%d, tups=%d, mss=%d!\n",
+ is_tcp, ips, tups, mss));
+ DBGPRINT(RT_DEBUG_OFF, ("\tfields saved in CB[]:cso/tso=%d:%d,",
+ RTMP_GET_PKT_CSO(skb),
+ RTMP_GET_PKT_TSO(skb)));
+ DBGPRINT(RT_DEBUG_OFF, ("is_tcp=%d, ips=%d, tups=%d, mss=%d!\n",
+ RTMP_GET_PKT_TCP(skb),
+ RTMP_GET_PKT_IPS(skb),
+ RTMP_GET_PKT_TUPS(skb),
+ RTMP_GET_PKT_MSS(skb)));
}
return TRUE;
}
@@ -779,7 +794,7 @@ struct iw_statistics *rt28xx_get_wireless_stats(struct net_device *net_dev)
GET_PAD_FROM_NET_DEV(pAd, net_dev);
- DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_get_wireless_stats --->\n"));
+ /*DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_get_wireless_stats --->\n"));*/
pDrvIwStats->priv_flags = RT_DEV_PRIV_FLAGS_GET(net_dev);
pDrvIwStats->dev_addr = (PUCHAR)net_dev->dev_addr;
@@ -882,7 +897,7 @@ struct iw_statistics *rt28xx_get_wireless_stats(struct net_device *net_dev)
pStats->discard.nwid = 0; /* Rx : Wrong nwid/essid */
pStats->miss.beacon = 0; /* Missed beacons/superframe */
- DBGPRINT(RT_DEBUG_TRACE, ("<--- rt28xx_get_wireless_stats\n"));
+ /*DBGPRINT(RT_DEBUG_TRACE, ("<--- rt28xx_get_wireless_stats\n"));*/
return pStats;
}
#endif /* WIRELESS_EXT */
@@ -1062,10 +1077,14 @@ BOOLEAN RtmpPhyNetDevExit(VOID *pAd, PNET_DEV net_dev)
/* Unregister network device */
if (net_dev != NULL)
{
- printk("RtmpOSNetDevDetach(): RtmpOSNetDeviceDetach(), dev->name=%s!\n", net_dev->name);
- RtmpOSNetDevProtect(1);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("RtmpOSNetDevDetach(): RtmpOSNetDeviceDetach(), dev->name=%s!\n",
+ net_dev->name));
+ /* Remove wifi dirver to lock the rtnl_lock here.
+ * It will cause kernel crash sometimes.
+ * The lock action leave to kernel.
+ */
RtmpOSNetDevDetach(net_dev);
- RtmpOSNetDevProtect(0);
}
return TRUE;
@@ -1103,7 +1122,7 @@ int RtmpOSIRQRequest(IN PNET_DEV pNetDev)
retval = request_irq(pci_dev->irq, rt2860_interrupt, SA_SHIRQ, (net_dev)->name, (net_dev));
if (retval != 0)
- printk("RT2860: request_irq ERROR(%d)\n", retval);
+ DBGPRINT(RT_DEBUG_OFF, ("RT2860: request_irq ERROR(%d)\n", retval));
}
#endif /* RTMP_PCI_SUPPORT */
@@ -1116,7 +1135,7 @@ int RtmpOSIRQRequest(IN PNET_DEV pNetDev)
if ((retval = request_irq(net_dev->irq,rt2860_interrupt, SA_INTERRUPT, net_dev->name ,net_dev)))
#endif
{
- printk("RT2860: request_irq ERROR(%d)\n", retval);
+ DBGPRINT(RT_DEBUG_OFF, ("RT2860: request_irq ERROR(%d)\n", retval));
}
}
#endif /* RTMP_RBUS_SUPPORT */
diff --git a/os/linux/rt_profile.c b/os/linux/rt_profile.c
index ede988b..717128b 100755
--- a/os/linux/rt_profile.c
+++ b/os/linux/rt_profile.c
@@ -253,7 +253,7 @@ NDIS_STATUS RTMPReadParametersHook(RTMP_ADAPTER *pAd)
{
#ifndef OS_ABL_SUPPORT
// TODO: need to roll back when convert into OSABL code
- fsize = (ULONG)srcf->f_dentry->d_inode->i_size;
+ fsize = (ULONG) srcf->f_path.dentry->d_inode->i_size;
if (buf_size < (fsize + 1))
buf_size = fsize + 1;
#endif /* OS_ABL_SUPPORT */
@@ -291,7 +291,7 @@ NDIS_STATUS RTMPReadParametersHook(RTMP_ADAPTER *pAd)
#endif /*HOSTAPD_SUPPORT */
#ifdef SINGLE_SKU_V2
- RTMPSetSingleSKUParameters(pAd);
+ retval = RTMPSetSingleSKUParameters(pAd);
#endif /* SINGLE_SKU_V2 */
return (retval);
@@ -1435,7 +1435,7 @@ VOID AP_E2PROM_IOCTL_PostCtrl(
IN RTMP_IOCTL_INPUT_STRUCT *wrq,
IN RTMP_STRING *msg)
{
- wrq->u.data.length = strlen(msg);
+ wrq->u.data.length = (UINT16)strlen(msg);
if (copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length))
{
DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));
diff --git a/os/linux/rt_txrx_hook.c b/os/linux/rt_txrx_hook.c
index d4b60a1..485613b 100755
--- a/os/linux/rt_txrx_hook.c
+++ b/os/linux/rt_txrx_hook.c
@@ -41,7 +41,7 @@ int RtmpOsTxRxHookRegister(struct mt_wlanTxRxHookOps *ops)
list_for_each_safe(cur,next,&hookHead)
{
entry = list_entry(cur,struct mt_wlanTxRxHookOps,list);
- if(entry && ops->priority > entry->priority)
+ if (ops->priority > entry->priority)
{
(ops->list).next = next;
cur->next =& ops->list;
diff --git a/os/linux/rt_usb.c b/os/linux/rt_usb.c
index aecf857..70a3a24 100755
--- a/os/linux/rt_usb.c
+++ b/os/linux/rt_usb.c
@@ -61,7 +61,9 @@ NDIS_STATUS RtmpMgmtTaskInit(
status = RtmpOSTaskAttach(pTask, RtmpTimerQThread, (ULONG)pTask);
if (status == NDIS_STATUS_FAILURE)
{
- printk (KERN_WARNING "%s: unable to start RtmpTimerQThread\n", RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev));
+ DBGPRINT(RT_DEBUG_OFF,
+ (KERN_WARNING "%s: unable to start RtmpTimerQThread\n",
+ RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev)));
return NDIS_STATUS_FAILURE;
}
@@ -71,7 +73,9 @@ NDIS_STATUS RtmpMgmtTaskInit(
status = RtmpOSTaskAttach(pTask, RTUSBCmdThread, (ULONG)pTask);
if (status == NDIS_STATUS_FAILURE)
{
- printk (KERN_WARNING "%s: unable to start RTUSBCmdThread\n", RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev));
+ DBGPRINT(RT_DEBUG_OFF,
+ (KERN_WARNING "%s: unable to start RTUSBCmdThread\n",
+ RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev)));
return NDIS_STATUS_FAILURE;
}
@@ -160,7 +164,7 @@ static void rtusb_dataout_complete(unsigned long data)
PHT_TX_CONTEXT pHTTXContext;
UCHAR BulkOutPipeId;
NTSTATUS Status;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
#ifdef USB_BULK_BUF_ALIGMENT
unsigned long IrqFlags2 = 0;
#endif /* USB_BULK_BUF_ALIGMENT */
@@ -618,7 +622,7 @@ static void rtusb_mgmt_dma_done_tasklet(unsigned long data)
PNDIS_PACKET pPacket;
purbb_t pUrb;
NTSTATUS Status;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
#ifdef WMM_ACM_SUPPORT
#ifdef CONFIG_AP_SUPPORT
UINT8 TXWISize = pAd->chipCap.TXWISize;
@@ -1159,10 +1163,16 @@ static void rtusb_bcn_dma_done_tasklet(unsigned long data)
PNDIS_PACKET pPacket;
purbb_t pUrb;
NTSTATUS Status;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
UCHAR *ppkt_tail;
UCHAR padding_length;
+#if defined(RT_CFG80211_P2P_SUPPORT) || defined(SOFTAP_SUPPORT)
+ UINT apidx = CFG_GO_BSSID_IDX;
+#else
+ UINT apidx = MAIN_MBSSID;
+#endif /*RT_CFG80211_P2P_SUPPORT*/
+ BSS_STRUCT *pMbss;
#ifdef RELEASE_EXCLUDE
DBGPRINT_RAW(RT_DEBUG_INFO, ("--->rtusb_bcn_dma_done_tasklet\n"));
@@ -1173,6 +1183,7 @@ static void rtusb_bcn_dma_done_tasklet(unsigned long data)
Status = RTMP_USB_URB_STATUS_GET(pUrb);
pAd = pBcnContext->pAd;
index = pBcnContext->SelfIdx;
+ pMbss = &pAd->ApCfg.MBSSID[apidx];
ASSERT((pAd->BcnRing.TxDmaIdx == index));
@@ -1205,15 +1216,24 @@ static void rtusb_bcn_dma_done_tasklet(unsigned long data)
pPacket = pAd->BcnRing.Cell[index].pNdisPacket;
ppkt_tail = GET_OS_PKT_DATATAIL(pPacket);
- padding_length = ppkt_tail - pBcnContext->ppkt_tail_before_padding;
-
- OS_PKT_TAIL_ADJUST(pPacket, padding_length);
+ padding_length = (UCHAR)(ppkt_tail - pBcnContext->ppkt_tail_before_padding);
+ /*
+ * OS_PKT_TAIL_ADJUST(pPacket, padding_length);
+ *
+ * If set tail position at bulkout function,
+ * tail_adjust is not necessary
+ */
//because MT7603 doesn't free bcn_buf. if we don't push 4 byte after kickout done,
//next time tx will put extra 4byte.
//what if we keep put but without push back, it will cause overflow.
pAd->BcnRing.Cell[index].pNdisPacket = NULL;
+ /*
+ * Bcn_state should set to DMA_DONE, if Txs not received;
+ */
+ if (pMbss->bcn_buf.bcn_state == BCN_TX_WRITE_TO_DMA)
+ pMbss->bcn_buf.bcn_state = BCN_TX_DMA_DONE;
/* Increase MgmtRing Index */
INC_RING_INDEX(pAd->BcnRing.TxDmaIdx, BCN_RING_SIZE);
@@ -1480,6 +1500,7 @@ INT RTUSBCmdThread(
{
RTMP_ADAPTER *pAd;
RTMP_OS_TASK *pTask;
+ CmdQElmt *pCmdQElmt = NULL;
int status;
status = 0;
@@ -1515,34 +1536,25 @@ INT RTUSBCmdThread(
CMDHandler(pAd);
}
- if (!pAd->PM_FlgSuspend)
- { /* Clear the CmdQElements. */
- CmdQElmt *pCmdQElmt = NULL;
-
- NdisAcquireSpinLock(&pAd->CmdQLock);
- pAd->CmdQ.CmdQState = RTMP_TASK_STAT_STOPED;
- while(pAd->CmdQ.size)
- {
- RTThreadDequeueCmd(&pAd->CmdQ, &pCmdQElmt);
- if (pCmdQElmt)
- {
- if (pCmdQElmt->CmdFromNdis == TRUE)
- {
- if (pCmdQElmt->buffer != NULL)
- os_free_mem(pAd, pCmdQElmt->buffer);
- os_free_mem(pAd, (PUCHAR)pCmdQElmt);
- }
- else
- {
- if ((pCmdQElmt->buffer != NULL) && (pCmdQElmt->bufferlength != 0))
- os_free_mem(pAd, pCmdQElmt->buffer);
- os_free_mem(pAd, (PUCHAR)pCmdQElmt);
- }
+ /* Clear the CmdQElements. */
+ NdisAcquireSpinLock(&pAd->CmdQLock);
+ pAd->CmdQ.CmdQState = RTMP_TASK_STAT_STOPED;
+ while (pAd->CmdQ.size) {
+ RTThreadDequeueCmd(&pAd->CmdQ, &pCmdQElmt);
+ if (pCmdQElmt) {
+ if (pCmdQElmt->CmdFromNdis == TRUE) {
+ if (pCmdQElmt->buffer != NULL)
+ os_free_mem(pAd, pCmdQElmt->buffer);
+ os_free_mem(pAd, (PUCHAR)pCmdQElmt);
+ } else {
+ if ((pCmdQElmt->buffer != NULL) && (pCmdQElmt->bufferlength != 0))
+ os_free_mem(pAd, pCmdQElmt->buffer);
+ os_free_mem(pAd, (PUCHAR)pCmdQElmt);
}
}
-
- NdisReleaseSpinLock(&pAd->CmdQLock);
}
+ NdisReleaseSpinLock(&pAd->CmdQLock);
+
/* notify the exit routine that we're actually exiting now
*
* complete()/wait_for_completion() is similar to up()/down(),
diff --git a/os/linux/rt_usb_util.c b/os/linux/rt_usb_util.c
index 17840d6..4cd6f23 100755
--- a/os/linux/rt_usb_util.c
+++ b/os/linux/rt_usb_util.c
@@ -43,22 +43,26 @@ void dump_urb(VOID *purb_org)
{
struct urb *purb = (struct urb *)purb_org;
- printk("urb :0x%08lx\n", (unsigned long)purb);
- printk("\tdev :0x%08lx\n", (unsigned long)purb->dev);
- printk("\t\tdev->state :0x%d\n", purb->dev->state);
- printk("\tpipe :0x%08x\n", purb->pipe);
- printk("\tstatus :%d\n", purb->status);
- printk("\ttransfer_flags :0x%08x\n", purb->transfer_flags);
- printk("\ttransfer_buffer :0x%08lx\n", (unsigned long)purb->transfer_buffer);
- printk("\ttransfer_buffer_length:%d\n", purb->transfer_buffer_length);
- printk("\tactual_length :%d\n", purb->actual_length);
- printk("\tsetup_packet :0x%08lx\n", (unsigned long)purb->setup_packet);
- printk("\tstart_frame :%d\n", purb->start_frame);
- printk("\tnumber_of_packets :%d\n", purb->number_of_packets);
- printk("\tinterval :%d\n", purb->interval);
- printk("\terror_count :%d\n", purb->error_count);
- printk("\tcontext :0x%08lx\n", (unsigned long)purb->context);
- printk("\tcomplete :0x%08lx\n\n", (unsigned long)purb->complete);
+ DBGPRINT(RT_DEBUG_OFF, ("urb :0x%08lx\n", (unsigned long)purb));
+ DBGPRINT(RT_DEBUG_OFF, ("\tdev :0x%08lx\n", (unsigned long)purb->dev));
+ DBGPRINT(RT_DEBUG_OFF, ("\t\tdev->state :%d\n", purb->dev->state));
+ DBGPRINT(RT_DEBUG_OFF, ("\tpipe :0x%08x\n", purb->pipe));
+ DBGPRINT(RT_DEBUG_OFF, ("\tstatus :%d\n", purb->status));
+ DBGPRINT(RT_DEBUG_OFF, ("\ttransfer_flags :0x%08x\n", purb->transfer_flags));
+ DBGPRINT(RT_DEBUG_OFF, ("\ttransfer_buffer :0x%08lx\n",
+ (unsigned long)purb->transfer_buffer));
+ DBGPRINT(RT_DEBUG_OFF, ("\ttransfer_buffer_length:%d\n", purb->transfer_buffer_length));
+ DBGPRINT(RT_DEBUG_OFF, ("\tactual_length :%d\n", purb->actual_length));
+ DBGPRINT(RT_DEBUG_OFF, ("\tsetup_packet :0x%08lx\n",
+ (unsigned long)purb->setup_packet));
+ DBGPRINT(RT_DEBUG_OFF, ("\tstart_frame :%d\n", purb->start_frame));
+ DBGPRINT(RT_DEBUG_OFF, ("\tnumber_of_packets :%d\n", purb->number_of_packets));
+ DBGPRINT(RT_DEBUG_OFF, ("\tinterval :%d\n", purb->interval));
+ DBGPRINT(RT_DEBUG_OFF, ("\terror_count :%d\n", purb->error_count));
+ DBGPRINT(RT_DEBUG_OFF, ("\tcontext :0x%08lx\n",
+ (unsigned long)purb->context));
+ DBGPRINT(RT_DEBUG_OFF, ("\tcomplete :0x%08lx\n\n",
+ (unsigned long)purb->complete));
}
#else
void dump_urb(VOID *purb_org)
diff --git a/os/linux/sta_ioctl.c b/os/linux/sta_ioctl.c
index ab8fbbe..e76f4e9 100755
--- a/os/linux/sta_ioctl.c
+++ b/os/linux/sta_ioctl.c
@@ -464,7 +464,7 @@ int rt_ioctl_giwrange(struct net_device *dev,
#endif /* RT_CFG80211_SUPPORT */
#endif /* NATIVE_WPA_SUPPLICANT_SUPPORT */
- DBGPRINT(RT_DEBUG_TRACE ,("===>rt_ioctl_giwrange\n"));
+ /*DBGPRINT(RT_DEBUG_TRACE ,("===>rt_ioctl_giwrange\n"));*/
data->length = sizeof(struct iw_range);
memset(range, 0, sizeof(struct iw_range));
@@ -497,7 +497,7 @@ int rt_ioctl_giwrange(struct net_device *dev,
/* range->num_channels = pAd->ChannelListNum; */
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_CHAN_LIST_NUM_GET, 0,
&ChannelListNum, 0, RT_DEV_PRIV_FLAGS_GET(dev));
- range->num_channels = ChannelListNum;
+ range->num_channels = (UINT16)ChannelListNum;
os_alloc_mem(NULL, (UCHAR **)&pChannel, sizeof(UCHAR)*ChannelListNum);
if (pChannel == NULL)
@@ -530,7 +530,7 @@ int rt_ioctl_giwrange(struct net_device *dev,
os_free_mem(NULL, pChannel);
os_free_mem(NULL, pFreq);
- range->num_frequency = val;
+ range->num_frequency = (UINT8)val;
range->max_qual.qual = 100; /* what is correct max? This was not
* documented exactly. At least
@@ -841,6 +841,7 @@ int rt_ioctl_iwaplist(struct net_device *dev,
RT_CMD_STA_IOCTL_BSS_LIST BssList, *pBssList = &BssList;
RT_CMD_STA_IOCTL_BSS *pList;
+ memset(qual, 0, sizeof(qual));
GET_PAD_FROM_NET_DEV(pAd, dev);
/*check if the interface is down */
@@ -882,7 +883,7 @@ int rt_ioctl_iwaplist(struct net_device *dev,
memcpy(addr[i].sa_data, pList->Bssid, MAC_ADDR_LEN);
set_quality(pAd, &qual[i], pList); /*&pAd->ScanTab.BssEntry[i]); */
}
- data->length = i;
+ data->length = (USHORT)i;
memcpy(extra, &addr, i*sizeof(addr[0]));
data->flags = 1; /* signal quality present (sort of) */
memcpy(extra + i*sizeof(addr[0]), &qual, i*sizeof(qual[i]));
@@ -1534,12 +1535,12 @@ int rt_ioctl_giwscan(struct net_device *dev,
#endif /* IWEVGENIE */
}
- data->length = current_ev - extra;
+ data->length = (USHORT)(current_ev - extra);
/* pAd->StaCfg.bScanReqIsFromWebUI = FALSE; */
/* DBGPRINT(RT_DEBUG_ERROR ,("===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %d\n",i , pAd->ScanTab.BssNr, data->length)); */
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_SCAN_END, 0,
- NULL, data->length, RT_DEV_PRIV_FLAGS_GET(dev));
+ data, data->length, RT_DEV_PRIV_FLAGS_GET(dev));
go_out:
if (pIoctlScan->pBssTable != NULL)
@@ -1606,7 +1607,7 @@ int rt_ioctl_siwessid(struct net_device *dev,
return 0;
#endif /* 0 */
- pIoctlEssid->FlgAnySsid = data->flags;
+ pIoctlEssid->FlgAnySsid = (UCHAR)data->flags;
pIoctlEssid->SsidLen = data->length;
pIoctlEssid->pSsid = (CHAR *)essid;
pIoctlEssid->Status = 0;
@@ -1680,7 +1681,7 @@ int rt_ioctl_giwessid(struct net_device *dev,
pIoctlEssid->Status = 0;
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_SIOCGIWESSID, 0,
pIoctlEssid, 0, RT_DEV_PRIV_FLAGS_GET(dev));
- data->length = pIoctlEssid->SsidLen;
+ data->length = (USHORT)pIoctlEssid->SsidLen;
RT_CMD_STATUS_TRANSLATE(pIoctlEssid->Status);
return pIoctlEssid->Status;
@@ -1755,7 +1756,7 @@ int rt_ioctl_giwnickn(struct net_device *dev,
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_SIOCGIWNICKN, 0,
pNickName, 0, RT_DEV_PRIV_FLAGS_GET(dev));
- data->length = pNickName->NameLen;
+ data->length = (USHORT)pNickName->NameLen;
return 0;
}
@@ -1783,7 +1784,7 @@ int rt_ioctl_siwrts(struct net_device *dev,
else if (rts->value == 0)
val = MAX_RTS_THRESHOLD;
else
- val = rts->value;
+ val = (UINT16)rts->value;
/* if (val != pAd->CommonCfg.RtsThreshold) */
/* pAd->CommonCfg.RtsThreshold = val; */
@@ -1854,7 +1855,7 @@ int rt_ioctl_siwfrag(struct net_device *dev,
/* pAd->CommonCfg.FragmentThreshold = val; */
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_SIOCSIWFRAG, 0,
- NULL, val, RT_DEV_PRIV_FLAGS_GET(dev));
+ info, val, RT_DEV_PRIV_FLAGS_GET(dev));
return 0;
}
@@ -2097,7 +2098,7 @@ rt_ioctl_giwencode(struct net_device *dev,
pIoctlSec, 0, RT_DEV_PRIV_FLAGS_GET(dev));
erq->length = pIoctlSec->length;
- erq->flags = pIoctlSec->KeyIdx;
+ erq->flags = (USHORT)pIoctlSec->KeyIdx;
if (pIoctlSec->flags & RT_CMD_STA_IOCTL_SECURITY_DISABLED)
erq->flags = RT_CMD_STA_IOCTL_SECURITY_DISABLED;
{
@@ -2162,8 +2163,9 @@ int rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info,
if (!*this_char)
return -EINVAL;
-
- if ((value = rtstrchr(this_char, '=')) != NULL)
+
+ value = rtstrchr(this_char, '=');
+ if (value)
*value++ = 0;
/*check if the interface is down */
@@ -2201,8 +2203,11 @@ int rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info,
goto SET_PROC;
/* reject setting nothing besides ANY ssid(ssidLen=0) */
- if (!*value && (strcmp(this_char, "SSID") != 0))
- return -EINVAL;
+ if (value) {
+ if (!*value && (strcmp(this_char, "SSID") != 0))
+ return -EINVAL;
+ }
+
}
SET_PROC:
@@ -2808,7 +2813,7 @@ rt_private_get_statistics(struct net_device *dev, struct iw_request_info *info,
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_IW_GET_STATISTICS, 0,
extra, IW_PRIV_SIZE_MASK, RT_DEV_PRIV_FLAGS_GET(dev));
- wrq->length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->length = (USHORT)(strlen(extra) + 1); /* 1: size of '\0' */
DBGPRINT(RT_DEBUG_TRACE, ("<== rt_private_get_statistics, wrq->length = %d\n", wrq->length));
return Status;
@@ -2876,7 +2881,7 @@ rt_private_show(struct net_device *dev, struct iw_request_info *info,
INT Status = 0;
VOID *pAd;
/* POS_COOKIE pObj; */
- UINT32 subcmd = wrq->flags;
+ USHORT subcmd = wrq->flags;
RT_CMD_STA_IOCTL_SHOW IoctlShow, *pIoctlShow = &IoctlShow;
GET_PAD_FROM_NET_DEV(pAd, dev);
@@ -3198,7 +3203,7 @@ int rt_ioctl_siwmlme(struct net_device *dev,
/* MLME_QUEUE_ELEM *pMsgElem = NULL; */
/* MLME_DISASSOC_REQ_STRUCT DisAssocReq; */
/* MLME_DEAUTH_REQ_STRUCT DeAuthReq; */
- ULONG Subcmd = 0;
+ USHORT Subcmd = 0;
GET_PAD_FROM_NET_DEV(pAd, dev);
@@ -3283,7 +3288,7 @@ int rt_ioctl_siwmlme(struct net_device *dev,
}
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_SIOCSIWMLME, Subcmd,
- NULL, pMlme->reason_code, RT_DEV_PRIV_FLAGS_GET(dev));
+ info, pMlme->reason_code, RT_DEV_PRIV_FLAGS_GET(dev));
return 0;
}
#endif /* SIOCSIWMLME */
@@ -3938,7 +3943,7 @@ rt_ioctl_giwencodeext(struct net_device *dev,
return pIoctlSec->Status;
}
- encoding->flags = pIoctlSec->KeyIdx;
+ encoding->flags = (USHORT)pIoctlSec->KeyIdx;
ext->key_len = pIoctlSec->length;
if (pIoctlSec->Alg == RT_CMD_STA_IOCTL_SECURITY_ALG_NONE)
@@ -4086,7 +4091,7 @@ int rt_ioctl_giwgenie(struct net_device *dev,
RT_DEV_PRIV_FLAGS_GET(dev)) != NDIS_STATUS_SUCCESS)
return -E2BIG;
- wrqu->data.length = pIoctlRsnIe->length;
+ wrqu->data.length = (USHORT)pIoctlRsnIe->length;
return 0;
}
@@ -4563,7 +4568,7 @@ static const iw_handler rt_priv_handlers[] = {
#ifndef CONFIG_AP_SUPPORT
(iw_handler) rt_ioctl_setparam, /* + 0x02 */
#else
- (iw_handler) NULL, /* + 0x02 */
+ (iw_handler) rt_ioctl_setparam, /* + 0x02 */
#endif /* CONFIG_AP_SUPPORT */
#ifdef DBG
(iw_handler) rt_private_ioctl_bbp, /* + 0x03 */
@@ -4606,12 +4611,12 @@ const struct iw_handler_def rt28xx_iw_handler_def =
#define N(a) (sizeof (a) / sizeof (a[0]))
.standard = (iw_handler *) rt_handler,
.num_standard = sizeof(rt_handler) / sizeof(iw_handler),
-#ifdef CONFIG_WIRELESS_EXT
+#if defined(CONFIG_WEXT_PRIV) || LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 32)
.private = (iw_handler *) rt_priv_handlers,
.num_private = N(rt_priv_handlers),
.private_args = (struct iw_priv_args *) privtab,
.num_private_args = N(privtab),
-#endif
+#endif /* CONFIG_WEXT_PRIV || LINUX_VERSION_CODE <= 2.6.32 */
#if IW_HANDLER_VERSION >= 7
.get_wireless_stats = rt28xx_get_wireless_stats,
#endif
@@ -4766,7 +4771,8 @@ skip_check:
RTMP_STA_IoctlHandle(pAd, NULL, CMD_RTPRIV_IOCTL_STA_SIOCGIWNICKN, 0,
pNickName, 0, RT_DEV_PRIV_FLAGS_GET(net_dev));
- erq->length = pNickName->NameLen; /*strlen((RTMP_STRING *) pAd->nickname); */
+ /*strlen((RTMP_STRING *) pAd->nickname); */
+ erq->length = (USHORT)pNickName->NameLen;
Status = copy_to_user(erq->pointer, nickname, erq->length);
break;
}
@@ -4796,8 +4802,10 @@ skip_check:
}
case SIOCSIWFRAG: /*set fragmentation thr (bytes) */
{
- struct iw_param *frag=&wrqin->u.frag;
- rt_ioctl_siwfrag(net_dev, NULL, frag, NULL);
+ struct iw_param *frag = &wrqin->u.frag;
+ struct iw_request_info info;
+
+ rt_ioctl_siwfrag(net_dev, &info, frag, NULL);
break;
}
case SIOCGIWENCODE: /*get encoding token & mode */
diff --git a/os/linux/usb_main_dev.c b/os/linux/usb_main_dev.c
index 4202a01..0e7baef 100755
--- a/os/linux/usb_main_dev.c
+++ b/os/linux/usb_main_dev.c
@@ -281,7 +281,6 @@ static int rt2870_probe(
if (USBDevConfigInit(usb_dev, intf, pAd) == FALSE)
goto err_out_free_radev;
-
RTMP_DRIVER_USB_INIT(pAd, usb_dev, dev_id->driver_info);
net_dev = RtmpPhyNetDevInit(pAd, &netDevHook);
@@ -323,7 +322,7 @@ static int rt2870_probe(
#endif /* RT_CFG80211_SUPPORT */
RTMP_DRIVER_OP_MODE_GET(pAd, &OpMode);
- status = RtmpOSNetDevAttach(OpMode, net_dev, &netDevHook);
+ status = RtmpOSNetDevAttach((UCHAR)OpMode, net_dev, &netDevHook);
if (status != 0)
goto err_out_free_netdev;
@@ -632,7 +631,7 @@ static int rtusb_suspend(struct usb_interface *intf, pm_message_t state)
//during the 2nd suspend, cfg80211->ops_suspend() would not be called;
//So we need make WOW enable here;
//In normal case, wow_enable will be double called, and the 2nd call will not send wow_enable CMD beacause wow_running flag.
-#ifdef RESUME_WITH_USB_RESET_SUPPORT
+#ifdef MT_WOW_SUPPORT
RTMP_DRIVER_ADAPTER_RT28XX_WOW_ENABLE(pAd);
#endif
@@ -696,6 +695,7 @@ static int rtusb_resume(struct usb_interface *intf)
/* pAd->PM_FlgSuspend = 0; */
RTMP_DRIVER_USB_RESUME(pAd);
+ RTMP_DRIVER_ADAPTER_RT28XX_WOW_DISABLE(pAd);
/* net_dev = pAd->net_dev; */
RTMP_DRIVER_NET_DEV_GET(pAd, &net_dev);
@@ -722,6 +722,7 @@ static int rtusb_reset_resume(struct usb_interface *intf)
/* pAd->PM_FlgSuspend = 0; */
RTMP_DRIVER_USB_RESUME(pAd);
+ RTMP_DRIVER_ADAPTER_RT28XX_WOW_DISABLE(pAd);
/* net_dev = pAd->net_dev; */
RTMP_DRIVER_NET_DEV_GET(pAd, &net_dev);
diff --git a/os/threadX/rt_usb.c b/os/threadX/rt_usb.c
index 61c8782..9f67c10 100755
--- a/os/threadX/rt_usb.c
+++ b/os/threadX/rt_usb.c
@@ -314,6 +314,7 @@ INT32 usb_control_msg(DC_USB_DEVICE *pUSBDev, UINT32 endpointaddress, UINT8 bReq
NDIS_STATUS Result = NDIS_STATUS_FAILURE;
void *pDMAAddr = NULL;
void *pSetupDMAAddr = NULL;
+
/* To store the setup packet */
pUSBHST_SETUP_PACKET pSetup = NULL;
diff --git a/rate_ctrl/alg_grp.c b/rate_ctrl/alg_grp.c
index d92119b..14bba82 100755
--- a/rate_ctrl/alg_grp.c
+++ b/rate_ctrl/alg_grp.c
@@ -1547,7 +1547,7 @@ VOID QuickResponeForRateUpExecAdaptMT(/* actually for both up and down */
if (TxTotalCnt != 0)
{
- Rate1ErrorRatio = 100 - ((Rate1SuccessCnt * 100) / TxTotalCnt);
+ Rate1ErrorRatio = (UCHAR)(100 - ((Rate1SuccessCnt * 100) / TxTotalCnt));
}
else
{
@@ -1648,9 +1648,9 @@ VOID QuickResponeForRateUpExecAdaptMT(/* actually for both up and down */
&& (pAd->CommonCfg.DebugFlags & DBF_FORCE_QUICK_DRS)==0
#endif /* DBG_CTRL_SUPPORT */
)
- ratio = RA_INTERVAL / pAd->ra_fast_interval;
+ ratio = (UCHAR)(RA_INTERVAL / pAd->ra_fast_interval);
else
- ratio = (RA_INTERVAL - pAd->ra_fast_interval) / pAd->ra_fast_interval;
+ ratio = (UCHAR)((RA_INTERVAL - pAd->ra_fast_interval) / pAd->ra_fast_interval);
/*
if (pAd->MacTab.Size == 1)
@@ -1855,7 +1855,7 @@ VOID DynamicTxRateSwitchingAdaptMT(RTMP_ADAPTER *pAd, UINT i)
if (TxTotalCnt != 0)
{
- Rate1ErrorRatio = 100 - ((Rate1SuccessCnt * 100) / TxTotalCnt);
+ Rate1ErrorRatio = (UCHAR)(100 - ((Rate1SuccessCnt * 100) / TxTotalCnt));
}
else
{
@@ -1919,11 +1919,12 @@ VOID DynamicTxRateSwitchingAdaptMT(RTMP_ADAPTER *pAd, UINT i)
/* Handle low traffic case */
- if (TxTotalCnt <= 15)
+ if (TxTotalCnt <= 15 || BOOL_IS_THERMAL_PROTECTION_SWITCH_TX(pAd))
{
pEntry->lowTrafficCount++;
if (pEntry->lowTrafficCount >= pAd->CommonCfg.lowTrafficThrd
+ || BOOL_IS_THERMAL_PROTECTION_SWITCH_TX(pAd)
#ifdef DOT11N_DRAFT3
|| (pAd->CommonCfg.Bss2040CoexistFlag & BSS_2040_COEXIST_BW_SYNC)
#endif /* DOT11N_DRAFT3 */
@@ -1933,7 +1934,15 @@ VOID DynamicTxRateSwitchingAdaptMT(RTMP_ADAPTER *pAd, UINT i)
CHAR mcs[24];
CHAR RssiOffset = 0;
- pEntry->lowTrafficCount = 0;
+#ifdef THERMAL_PROTECT_SUPPORT
+ if (pAd->switch_tx_stream) {
+ DBGPRINT(RT_DEBUG_ERROR, ("[%s] tx stream switch\n", __func__));
+ pAd->switch_tx_stream = FALSE;
+ } else
+#endif /* THERMAL_PROTECT_SUPPORT */
+ {
+ pEntry->lowTrafficCount = 0;
+ }
/* Check existence and get index of each MCS */
MlmeGetSupportedMcsAdapt(pAd, pEntry, GI_400, mcs);
@@ -2246,9 +2255,9 @@ VOID APQuickResponeForRateUpExecAdapt(/* actually for both up and down */
&& (pAd->CommonCfg.DebugFlags & DBF_FORCE_QUICK_DRS)==0
#endif /* DBG_CTRL_SUPPORT */
)
- ratio = RA_INTERVAL / pAd->ra_fast_interval;
+ ratio = (CHAR) (RA_INTERVAL / pAd->ra_fast_interval);
else
- ratio = (RA_INTERVAL - pAd->ra_fast_interval) / pAd->ra_fast_interval;
+ ratio = (CHAR)((RA_INTERVAL - pAd->ra_fast_interval) / pAd->ra_fast_interval);
if (pAd->MacTab.Size == 1)
OneSecTxNoRetryOKRationCount = (TxSuccess * ratio);
@@ -2864,9 +2873,9 @@ VOID StaQuickResponeForRateUpExecAdapt(
&& (pAd->CommonCfg.DebugFlags & DBF_FORCE_QUICK_DRS)==0
#endif /* DBG_CTRL_SUPPORT */
)
- ratio = RA_INTERVAL/pAd->ra_fast_interval;
+ ratio = (CHAR)(RA_INTERVAL/pAd->ra_fast_interval);
else
- ratio = (RA_INTERVAL-pAd->ra_fast_interval)/pAd->ra_fast_interval;
+ ratio = (CHAR)((RA_INTERVAL-pAd->ra_fast_interval)/pAd->ra_fast_interval);
OneSecTxNoRetryOKRationCount = (TxSuccess * ratio);
@@ -3381,7 +3390,7 @@ INT Set_RateTable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
while (*arg<'0' || *arg>'9')
arg++;
value = simple_strtol(arg, &arg, 10);
- pRateEntry[rtIndex] = value;
+ pRateEntry[rtIndex] = (UCHAR)value;
DBGPRINT(RT_DEBUG_OFF, ("Set_RateTable_Proc::%d:%d:%d\n", itemNo, rtIndex, value));
}
@@ -3398,8 +3407,13 @@ INT Set_PerThrdAdj_Proc(
IN RTMP_STRING *arg)
{
UCHAR i;
+ long thrd;
+ int ret;
for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++){
- pAd->MacTab.Content[i].perThrdAdj = simple_strtol(arg, 0, 10);
+ ret = kstrtol(arg, 10, &thrd);
+ if (ret < 0)
+ return FALSE;
+ pAd->MacTab.Content[i].perThrdAdj = (BOOLEAN)thrd;
}
return TRUE;
}
@@ -3409,7 +3423,13 @@ INT Set_LowTrafficThrd_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- pAd->CommonCfg.lowTrafficThrd = simple_strtol(arg, 0, 10);
+ long thrd;
+ int ret;
+
+ ret = kstrtol(arg, 10, &thrd);
+ if (ret < 0)
+ return FALSE;
+ pAd->CommonCfg.lowTrafficThrd = (USHORT)thrd;
return TRUE;
}
@@ -3419,7 +3439,13 @@ INT Set_TrainUpRule_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- pAd->CommonCfg.TrainUpRule = simple_strtol(arg, 0, 10);
+ long thrd;
+ int ret;
+
+ ret = kstrtol(arg, 10, &thrd);
+ if (ret < 0)
+ return FALSE;
+ pAd->CommonCfg.TrainUpRule = (BOOLEAN)thrd;
return TRUE;
}
@@ -3429,7 +3455,13 @@ INT Set_TrainUpRuleRSSI_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- pAd->CommonCfg.TrainUpRuleRSSI = simple_strtol(arg, 0, 10);
+ long thrd;
+ int ret;
+
+ ret = kstrtol(arg, 10, &thrd);
+ if (ret < 0)
+ return FALSE;
+ pAd->CommonCfg.TrainUpRuleRSSI = (SHORT)thrd;
return TRUE;
}
@@ -3439,7 +3471,13 @@ INT Set_TrainUpLowThrd_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- pAd->CommonCfg.TrainUpLowThrd = simple_strtol(arg, 0, 10);
+ long thrd;
+ int ret;
+
+ ret = kstrtol(arg, 10, &thrd);
+ if (ret < 0)
+ return FALSE;
+ pAd->CommonCfg.TrainUpLowThrd = (USHORT)thrd;
return TRUE;
}
@@ -3449,7 +3487,13 @@ INT Set_TrainUpHighThrd_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- pAd->CommonCfg.TrainUpHighThrd = simple_strtol(arg, 0, 10);
+ long thrd;
+ int ret;
+
+ ret = kstrtol(arg, 10, &thrd);
+ if (ret < 0)
+ return FALSE;
+ pAd->CommonCfg.TrainUpHighThrd = (USHORT)thrd;
return TRUE;
}
diff --git a/rate_ctrl/alg_legacy.c b/rate_ctrl/alg_legacy.c
index 765f1a3..077c842 100755
--- a/rate_ctrl/alg_legacy.c
+++ b/rate_ctrl/alg_legacy.c
@@ -855,9 +855,10 @@ VOID APQuickResponeForRateUpExec(
&& (pAd->CommonCfg.DebugFlags & DBF_FORCE_QUICK_DRS)==0
#endif /* DBG_CTRL_SUPPORT */
)
- ratio = RA_INTERVAL/pAd->ra_fast_interval;
+ ratio = (CHAR)(RA_INTERVAL/pAd->ra_fast_interval);
else
- ratio = (RA_INTERVAL-pAd->ra_fast_interval)/pAd->ra_fast_interval;
+ ratio = (CHAR)((RA_INTERVAL-pAd->ra_fast_interval) /
+ pAd->ra_fast_interval);
/* downgrade TX quality if PER >= Rate-Down threshold */
if (TxErrorRatio >= TrainDown)
@@ -1923,9 +1924,10 @@ VOID StaQuickResponeForRateUpExec(
&& (pAd->CommonCfg.DebugFlags & DBF_FORCE_QUICK_DRS)==0
#endif /* DBG_CTRL_SUPPORT */
)
- ratio = RA_INTERVAL/pAd->ra_fast_interval;
+ ratio = (CHAR)(RA_INTERVAL/pAd->ra_fast_interval);
else
- ratio = (RA_INTERVAL-pAd->ra_fast_interval)/pAd->ra_fast_interval;
+ ratio = (CHAR)((RA_INTERVAL-pAd->ra_fast_interval) /
+ pAd->ra_fast_interval);
OneSecTxNoRetryOKRationCount = (TxSuccess * ratio);
diff --git a/rate_ctrl/ra_ctrl.c b/rate_ctrl/ra_ctrl.c
index ac81ebf..051d8ec 100755
--- a/rate_ctrl/ra_ctrl.c
+++ b/rate_ctrl/ra_ctrl.c
@@ -3337,9 +3337,17 @@ VOID RTMPSetSupportMCS(
else
#endif /* WDS_SUPPORT */
#ifdef APCLI_SUPPORT
- if (IS_ENTRY_APCLI(pEntry))
+ if (IS_ENTRY_APCLI(pEntry)) {
+ if (pEntry->func_tb_idx >= ARRAY_SIZE(pAd->ApCfg.ApCliTab)) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s: invalid apcli entry idx %d table sz %zu\n",
+ __func__, pEntry->func_tb_idx,
+ ARRAY_SIZE(pAd->ApCfg.ApCliTab)));
+ return;
+ }
+
pDesired_ht_phy = &pAd->ApCfg.ApCliTab[pEntry->func_tb_idx].wdev.DesiredHtPhyInfo;
- else
+ } else {
#endif /* APCLI_SUPPORT */
#ifdef MESH_SUPPORT
if (IS_ENTRY_MESH(pEntry))
@@ -3347,6 +3355,7 @@ VOID RTMPSetSupportMCS(
else
#endif /* MESH_SUPPORT */
pDesired_ht_phy = &pAd->ApCfg.MBSSID[pEntry->func_tb_idx].wdev.DesiredHtPhyInfo;
+ }
}
#endif /* CONFIG_AP_SUPPORT */
diff --git a/sta/adhoc.c b/sta/adhoc.c
index 11fb0ef..2894c34 100755
--- a/sta/adhoc.c
+++ b/sta/adhoc.c
@@ -366,7 +366,7 @@ VOID Adhoc_checkPeerBeaconLost(RTMP_ADAPTER *pAd)
VOID LinkUp_Adhoc(RTMP_ADAPTER *pAd, struct wifi_dev *wdev)
{
- INT idx;
+ UINT8 idx;
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT)
@@ -433,7 +433,7 @@ VOID LinkUp_Adhoc(RTMP_ADAPTER *pAd, struct wifi_dev *wdev)
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT)
{
- INT groupWcid = pAd->StaCfg.wdev.tr_tb_idx;
+ UCHAR groupWcid = pAd->StaCfg.wdev.tr_tb_idx;
MT_ADDREMOVE_KEY(pAd, 0, BSS0, wdev->DefaultKeyId, groupWcid, SHAREDKEYTABLE,
&pAd->SharedKey[BSS0][wdev->DefaultKeyId],BROADCAST_ADDR);
}
diff --git a/sta/connect.c b/sta/connect.c
index 20a8275..9644566 100755
--- a/sta/connect.c
+++ b/sta/connect.c
@@ -81,7 +81,8 @@ UCHAR CipherSuiteWpaNoneAesLen =
NdisMoveMemory(&(_pAd)->CommonCfg.APQosCapability, &(_pAd)->MlmeAux.APQosCapability, sizeof(QOS_CAPABILITY_PARM));\
NdisMoveMemory(&(_pAd)->CommonCfg.APQbssLoad, &(_pAd)->MlmeAux.APQbssLoad, sizeof(QBSS_LOAD_PARM));\
COPY_MAC_ADDR((_pAd)->MacTab.Content[BSSID_WCID].Addr, (_pAd)->MlmeAux.Bssid); \
- (_pAd)->MacTab.Content[BSSID_WCID].PairwiseKey.CipherAlg = (_pAd)->StaCfg.PairCipher;\
+ (_pAd)->MacTab.Content[BSSID_WCID].PairwiseKey.CipherAlg = \
+ (UCHAR)(_pAd)->StaCfg.PairCipher;\
COPY_MAC_ADDR((_pAd)->MacTab.Content[BSSID_WCID].PairwiseKey.BssId, (_pAd)->MlmeAux.Bssid);\
(_pAd)->MacTab.Content[BSSID_WCID].RateLen = (_pAd)->StaActive.SupRateLen + (_pAd)->StaActive.ExtRateLen;\
}
@@ -471,6 +472,10 @@ VOID CntlOidScanProc(
sizeof (BSS_ENTRY));
}
}
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ /*Need to set default gain for SCS when scanning, otherwise, there will be AP lost--->Add by xiaojiao*/
+ /*ScsSetDftGainAtScanBegin(pAd);*/
+#endif
#if 0
/* clean up previous SCAN result, add current BSS back to table if any */
@@ -489,10 +494,12 @@ VOID CntlOidScanProc(
#ifdef WIDI_SUPPORT
if (pAd->StaCfg.bWIDI)
- ScanParmFill(pAd, &ScanReq, (RTMP_STRING *)Elem->Msg, Elem->MsgLen, BSS_ANY, SCAN_PASSIVE);
+ ScanParmFill(pAd, &ScanReq, (RTMP_STRING *)Elem->Msg,
+ (UCHAR)Elem->MsgLen, BSS_ANY, SCAN_PASSIVE);
else
#endif /* WIDI_SUPPORT */
- ScanParmFill(pAd, &ScanReq, (RTMP_STRING *) Elem->Msg, Elem->MsgLen, BSS_ANY, Elem->Priv);
+ ScanParmFill(pAd, &ScanReq, (RTMP_STRING *) Elem->Msg,
+ (UCHAR)Elem->MsgLen, BSS_ANY, (UCHAR)Elem->Priv);
MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ,
sizeof (MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
@@ -537,7 +544,7 @@ VOID CntlOidSsidProc(
/*save connect info*/
NdisZeroMemory(pAd->StaCfg.ConnectinfoSsid, MAX_LEN_OF_SSID);
NdisMoveMemory(pAd->StaCfg.ConnectinfoSsid, pOidSsid->Ssid, pOidSsid->SsidLength);
- pAd->StaCfg.ConnectinfoSsidLen = pOidSsid->SsidLength;
+ pAd->StaCfg.ConnectinfoSsidLen = (UCHAR)pOidSsid->SsidLength;
pAd->StaCfg.ConnectinfoBssType = pAd->StaCfg.BssType;
#ifdef WSC_STA_SUPPORT
@@ -924,7 +931,7 @@ VOID CntlOidRTBssidProc(
pAd->StaCfg.bSkipAutoScanConn = FALSE;
#endif /* WSC_STA_SUPPORT */
- if (BssIdx == BSS_NOT_FOUND) {
+ if ((BssIdx == BSS_NOT_FOUND) || (BssIdx >= MAX_LEN_OF_BSS_TABLE)) {
if (((pAd->StaCfg.BssType == BSS_INFRA) && (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))) ||
(pAd->StaCfg.bNotFirstScan == FALSE)) {
MLME_SCAN_REQ_STRUCT ScanReq;
@@ -1860,15 +1867,20 @@ VOID CntlWaitAssocProc(
DBGPRINT(RT_DEBUG_TRACE,
("CNTL - Association fails on BSS #%ld\n", pAd->MlmeAux.BssIdx));
#ifdef RT_CFG80211_SUPPORT
+ pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
RT_CFG80211_CONN_RESULT_INFORM(pAd, pAd->MlmeAux.Bssid, NULL, 0,
- NULL, 0, 0);
+ NULL, 0, 0);
#endif /* RT_CFG80211_SUPPORT */
RTMP_STA_ENTRY_MAC_RESET(pAd, BSSID_WCID);
pAd->MlmeAux.BssIdx++;
#ifdef MT76XX_BTCOEX_SUPPORT
MLMEHook(pAd, WLAN_CONNECTION_ASSOC_FAIL, QueryHashID(pAd, pAd->MlmeAux.Bssid, TRUE));
#endif /*MT76XX_BTCOEX_SUPPORT*/
+
+#ifndef RT_CFG80211_SUPPORT
IterateOnBssTab(pAd);
+#endif
+
}
}
}
@@ -1971,7 +1983,7 @@ VOID AdhocTurnOnQos(RTMP_ADAPTER *pAd)
VOID LinkUp_Infra(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, MAC_TABLE_ENTRY *pEntry, UCHAR *tmpWscSsid, UCHAR tmpWscSsidLen)
{
BOOLEAN Cancelled = TRUE;
- INT idx;
+ UCHAR idx;
PSTA_ADMIN_CONFIG pStaCfg = &pAd->StaCfg;
#if defined(STA_LP_PHASE_1_SUPPORT) || defined(STA_LP_PHASE_2_SUPPORT)
@@ -1979,7 +1991,7 @@ VOID LinkUp_Infra(RTMP_ADAPTER *pAd, struct wifi_dev *wdev, MAC_TABLE_ENTRY *pEn
pStaCfg->PwrMgmt.bBeaconLost = FALSE;
/* Copy DtimPeriod/BeaconPeriod to wdev */
- pStaCfg->PwrMgmt.ucBeaconPeriod = pAd->MlmeAux.BeaconPeriod;
+ pStaCfg->PwrMgmt.ucBeaconPeriod = (UINT8)pAd->MlmeAux.BeaconPeriod;
pStaCfg->PwrMgmt.ucDtimPeriod = pAd->MlmeAux.DtimPeriod;
RTMPClearEnterPsmNullBit(&pAd->StaCfg.PwrMgmt);
@@ -2649,8 +2661,14 @@ VOID LinkUp(RTMP_ADAPTER *pAd, UCHAR BssType)
#ifdef DOT11_N_SUPPORT
DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK UP !!! (Density =%d, )\n", pAd->MacTab.Content[BSSID_WCID].MpduDensity));
+ DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK UP !!! (SupportRateMode =%d, )\n", pAd->MacTab.Content[BSSID_WCID].SupportRateMode));
#endif /* DOT11_N_SUPPORT */
+ if (pAd->MacTab.Content[BSSID_WCID].SupportRateMode == SUPPORT_CCK_MODE)
+ pAd->bLink11b = TRUE;
+ else
+ pAd->bLink11b = FALSE;
+
/*
We cannot move AsicSetBssid to PeerBeaconAtJoinAction because
PeerBeaconAtJoinAction wouldn't be invoked in roaming case.
@@ -3489,7 +3507,10 @@ VOID LinkDown(RTMP_ADAPTER *pAd, BOOLEAN IsReqFromAP)
pAd->Mlme.PeriodicRound = 0;
pAd->Mlme.OneSecPeriodicRound = 0;
- pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+ if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE) {
+ RTMP_MLME_RESET_STATE_MACHINE(pAd);
+ DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+ }
#ifdef DOT11_N_SUPPORT
NdisZeroMemory(&pAd->MlmeAux.HtCapability, sizeof (HT_CAPABILITY_IE));
diff --git a/sta/rtmp_data.c b/sta/rtmp_data.c
index 208a515..a0316dc 100755
--- a/sta/rtmp_data.c
+++ b/sta/rtmp_data.c
@@ -197,7 +197,7 @@ NDIS_STATUS RTMPFreeTXDRequest(
{
/*ULONG FreeNumber = 0; */
NDIS_STATUS Status = NDIS_STATUS_FAILURE;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
HT_TX_CONTEXT *pHTTXContext;
switch (QueIdx) {
@@ -549,7 +549,7 @@ INT STASendPacket_New(RTMP_ADAPTER *pAd, PNDIS_PACKET pPacket)
#endif /* DOT11_N_SUPPORT */
else
{
- NumberOfFrag = (pkt_len / frag_sz) + 1;
+ NumberOfFrag = (UCHAR)((pkt_len / frag_sz) + 1);
/* To get accurate number of fragmentation, Minus 1 if the size just match to allowable fragment size */
if ((pkt_len % frag_sz) == 0) {
NumberOfFrag--;
@@ -770,6 +770,12 @@ VOID STAFindCipherAlgorithm(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
KeyIdx = wdev->DefaultKeyId;
}
+ if ((KeyIdx >= 4) && (KeyIdx != 0xff)) {
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("%s():KeyIdx must be smaller than 4!\n", __func__));
+ return;
+ }
+
if (KeyIdx == 0xff)
CipherAlg = CIPHER_NONE;
#ifdef ADHOC_WPA2PSK_SUPPORT
@@ -1091,9 +1097,9 @@ static inline PUCHAR STA_Build_ARalink_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *p
pHeaderBufPtr += pTxBlk->wifi_hdr_len;
/* padding at front of LLC header. LLC header should at 4-bytes aligment. */
- pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)pHeaderBufPtr);
pHeaderBufPtr = (UCHAR *)ROUND_UP(pHeaderBufPtr, 4);
- pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen));
/*
@@ -1138,9 +1144,9 @@ static inline PUCHAR STA_Build_AMSDU_Frame_Header(RTMP_ADAPTER *pAd, TX_BLK *pTx
LLC header should locate at 4-octets aligment
@@@ MpduHeaderLen excluding padding @@@
*/
- pTxBlk->HdrPadLen = (ULONG)buf_ptr;
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)buf_ptr);
buf_ptr = (UCHAR *)(ROUND_UP(buf_ptr, 4));
- pTxBlk->HdrPadLen = (ULONG)(buf_ptr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)(buf_ptr - pTxBlk->HdrPadLen));
return buf_ptr;
@@ -1408,9 +1414,9 @@ VOID STA_AMPDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
@@@ MpduHeaderLen excluding padding @@@
*/
- pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)pHeaderBufPtr);
pHeaderBufPtr = (UCHAR *)ROUND_UP(pHeaderBufPtr, 4);
- pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen));
#ifdef VENDOR_FEATURE1_SUPPORT
tr_entry->HdrPadLen = pTxBlk->HdrPadLen;
@@ -1553,7 +1559,7 @@ VOID STA_AMSDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
USHORT totalMPDUSize = 0;
UCHAR padding = 0;
USHORT FirstTx = 0, LastTxIdx = 0;
- int frameNum = 0;
+ UCHAR frameNum = 0;
PQUEUE_ENTRY pQEntry;
ASSERT((pTxBlk->TxPacketList.Number > 1));
@@ -1592,7 +1598,8 @@ VOID STA_AMSDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
// TODO: shiang-usw, check this, original code is use pTxBlk->HeaderBuf[0]
pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE];
#endif /* MT7603 */
- padding = ROUND_UP(AMSDU_SUBHEAD_LEN + subFramePayloadLen, 4) - (AMSDU_SUBHEAD_LEN + subFramePayloadLen);
+ padding = (UCHAR)(ROUND_UP(AMSDU_SUBHEAD_LEN + subFramePayloadLen, 4)
+ - (AMSDU_SUBHEAD_LEN + subFramePayloadLen));
NdisZeroMemory(pHeaderBufPtr, padding + AMSDU_SUBHEAD_LEN);
pHeaderBufPtr += padding;
pTxBlk->MpduHeaderLen = padding;
@@ -1603,7 +1610,7 @@ VOID STA_AMSDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
DA(6)+SA(6)+Length(2) + LLC/SNAP Encap
*/
subFrameHeader = pHeaderBufPtr;
- subFramePayloadLen = pTxBlk->SrcBufLen;
+ subFramePayloadLen = (USHORT)pTxBlk->SrcBufLen;
NdisMoveMemory(subFrameHeader, pTxBlk->pSrcBufHeader, 12);
@@ -1618,7 +1625,7 @@ VOID STA_AMSDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
/* Insert LLC-SNAP encapsulation - 8 octets */
EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData - 2, pTxBlk->pExtraLlcSnapEncap);
- subFramePayloadLen = pTxBlk->SrcBufLen;
+ subFramePayloadLen = (USHORT)pTxBlk->SrcBufLen;
if (pTxBlk->pExtraLlcSnapEncap) {
NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
@@ -1631,7 +1638,7 @@ VOID STA_AMSDU_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
}
/* update subFrame Length field */
- subFrameHeader[12] = (subFramePayloadLen & 0xFF00) >> 8;
+ subFrameHeader[12] = (UCHAR)((subFramePayloadLen & 0xFF00) >> 8);
subFrameHeader[13] = subFramePayloadLen & 0xFF;
#if defined(MT7603) || defined(MT7628)
@@ -1896,9 +1903,9 @@ VOID STA_Fragment_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
buf_ptr += pTxBlk->wifi_hdr_len;
/* The remaining content of MPDU header should locate at 4-octets aligment */
- pTxBlk->HdrPadLen = (ULONG)buf_ptr;
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)buf_ptr);
buf_ptr = (UCHAR *)ROUND_UP(buf_ptr, 4);
- pTxBlk->HdrPadLen = (ULONG)(buf_ptr - pTxBlk->HdrPadLen);
+ pTxBlk->HdrPadLen = (UCHAR)((ULONG)(buf_ptr - pTxBlk->HdrPadLen));
pTxBlk->MpduHeaderLen = pTxBlk->wifi_hdr_len;
#ifdef SOFT_ENCRYPT
@@ -2011,9 +2018,9 @@ VOID STA_Fragment_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK *pTxBlk)
pTransmit = pTxBlk->pTransmit;
/* Decide the TX rate */
if (pTransmit->field.MODE == MODE_CCK)
- pTxBlk->TxRate = pTransmit->field.MCS;
+ pTxBlk->TxRate = (UCHAR)pTransmit->field.MCS;
else if (pTransmit->field.MODE == MODE_OFDM)
- pTxBlk->TxRate = pTransmit->field.MCS + RATE_FIRST_OFDM_RATE;
+ pTxBlk->TxRate = (UCHAR)(pTransmit->field.MCS + RATE_FIRST_OFDM_RATE);
else
pTxBlk->TxRate = RATE_6_5;
@@ -2187,7 +2194,7 @@ VOID STA_ARalink_Frame_Tx(RTMP_ADAPTER *pAd, TX_BLK * pTxBlk)
USHORT freeCnt = 0;
USHORT totalMPDUSize = 0;
USHORT FirstTx, LastTxIdx;
- int frameNum = 0;
+ UCHAR frameNum = 0;
BOOLEAN bVLANPkt;
PQUEUE_ENTRY pQEntry;
@@ -2651,7 +2658,7 @@ INT STASendPacket(RTMP_ADAPTER *pAd, PNDIS_PACKET pPacket)
UCHAR QueIdx;
UCHAR UserPriority;
UCHAR Wcid;
- unsigned long IrqFlags;
+ unsigned long IrqFlags = 0;
#ifdef MESH_SUPPORT
BOOLEAN bMeshPkt = FALSE;
#endif /* MESH_SUPPORT */
@@ -2855,7 +2862,7 @@ DBGPRINT(RT_DEBUG_OFF, ("%s(): pMacEntry->wcid=%d\n", __FUNCTION__, pMacEntry->w
AllowFragSize = (pAd->CommonCfg.FragmentThreshold) - LENGTH_802_11 - LENGTH_CRC;
Size = PacketInfo.TotalPacketLength - LENGTH_802_3 + LENGTH_802_1_H;
- NumberOfFrag = (Size / AllowFragSize) + 1;
+ NumberOfFrag = (UCHAR)((Size / AllowFragSize) + 1);
/* To get accurate number of fragmentation, Minus 1 if the size just match to allowable fragment size */
if ((Size % AllowFragSize) == 0) {
NumberOfFrag--;
diff --git a/sta/sanity.c b/sta/sanity.c
index 8945243..d60aa4d 100755
--- a/sta/sanity.c
+++ b/sta/sanity.c
@@ -433,8 +433,9 @@ BOOLEAN GetTimBit(
if ((Aid < (N1 << 3)) || (Aid >= ((N2 + 1) << 3)))
*MessageToMe = FALSE;
else {
- MyByte = (Aid >> 3) - N1; /* my byte position in the bitmap byte-stream */
- MyBit = Aid % 16 - ((MyByte & 0x01) ? 8 : 0);
+ /* my byte position in the bitmap byte-stream */
+ MyByte = (UCHAR)((Aid >> 3) - N1);
+ MyBit = (UCHAR)(Aid % 16 - ((MyByte & 0x01) ? 8 : 0));
IdxPtr += (MyByte + 1);
diff --git a/sta/sta_cfg.c b/sta/sta_cfg.c
index d0e536d..12c83fd 100755
--- a/sta/sta_cfg.c
+++ b/sta/sta_cfg.c
@@ -174,7 +174,7 @@ INT mcu_read(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
testaddr = simple_strtol(arg, 0, 16);
RTMP_MCU_IO_READ32(pAd, testaddr, &mac_val);
- printk ("mcu_read [0x%08x]=0x%08x\n", testaddr, mac_val);
+ DBGPRINT(RT_DEBUG_OFF, ("mcu_read [0x%08x]=0x%08x\n", testaddr, mac_val));
return TRUE;
}
@@ -183,7 +183,7 @@ INT mcu_read(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT mcu_write(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
UINT32 testdata = simple_strtol(arg, 0, 16);
- printk ("mcu_write addr[0x%08x]=0x%08x\n", testaddr, testdata);
+ DBGPRINT(RT_DEBUG_OFF, ("mcu_write addr[0x%08x]=0x%08x\n", testaddr, testdata));
RTMP_MCU_IO_WRITE32(pAd, testaddr, testdata);
return TRUE;
@@ -193,7 +193,7 @@ INT Set_STA_RadioOn_Proc(
IN PRTMP_ADAPTER pAd,
IN RTMP_STRING *arg)
{
- UCHAR radio;
+ UINT32 radio;
radio = simple_strtol(arg, 0, 10);
@@ -672,7 +672,8 @@ static struct {
{"wow_hold", Set_WOW_Hold},
{"wow_inband", Set_WOW_InBand},
{"wow_interface", Set_WOW_Interface},
- {"wow_GPIOHighLow", Set_WOW_GPIOHighLow},
+ {"wow_GPIOHighLow", Set_WOW_GPIOHighLow},
+ {"wow_keepalive", Set_WOW_KeepAlive_Proc},
#endif /*#ifdef MT_WOW_SUPPORT*/
#ifdef RTMP_MAC_USB
@@ -763,6 +764,17 @@ static struct {
{"MT7603LEDEnhance", Set_MT7603LED_Enhance_Proc},
{"MT7603LEDBehavior", Set_MT7603LED_Behavor_Proc},
#endif /* LED_CONTROL_SUPPORT */
+#ifdef SMART_CARRIER_SENSE_SUPPORT
+ {"SCSEnable", SetSCSEnable_Proc},
+ {"SCSDbgLogEnable", SetSCSDbgLogEnable_Proc},
+ {"SCSCfg", SetSCSCfg_Proc},
+ {"SCSInfo", ShowSCSInfo},
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
+
+ /* GPIO */
+ {"gpio_high", Set_GPIOHigh_Proc},
+ {"gpio_low", Set_GPIOLow_Proc},
+
{"ed_chk", Set_ed_chk_proc},
{NULL,}
};
@@ -925,8 +937,15 @@ INT Set_SSID_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
INT Set_WmmCapable_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
{
BOOLEAN bWmmCapable;
+ LONG Value = 0;
+ INT ret = TRUE;
+
+ ret = kstrtol(arg, 10, &Value);
+
+ if (ret < 0)
+ return FALSE;
- bWmmCapable = simple_strtol(arg, 0, 10);
+ bWmmCapable = (BOOLEAN)Value;
if ((bWmmCapable == 1)
#ifdef RTMP_MAC_USB
@@ -1267,7 +1286,7 @@ INT Set_EncrypType_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
else
return FALSE;
- if (pAd->StaCfg.BssType == BSS_ADHOC)
+ if (pAd->StaCfg.BssType == BSS_ADHOC)
{
/* Build all corresponding channel information */
RTMPSetPhyMode(pAd, pAd->CommonCfg.cfg_wmode);
@@ -1341,7 +1360,7 @@ INT Set_Wep_Key_Proc(
switch (KeyLen)
{
case 5: /* wep 40 Ascii type */
- pAdapter->SharedKey[BSS0][KeyId].KeyLen = KeyLen;
+ pAdapter->SharedKey[BSS0][KeyId].KeyLen = (UCHAR)KeyLen;
memcpy(pAdapter->SharedKey[BSS0][KeyId].Key, Key, KeyLen);
CipherAlg = CIPHER_WEP64;
break;
@@ -1352,13 +1371,13 @@ INT Set_Wep_Key_Proc(
if( !isxdigit(*(Key+i)) )
return FALSE; /*Not Hex value; */
}
- pAdapter->SharedKey[BSS0][KeyId].KeyLen = KeyLen / 2 ;
+ pAdapter->SharedKey[BSS0][KeyId].KeyLen = (UCHAR)(KeyLen / 2);
AtoH(Key, pAdapter->SharedKey[BSS0][KeyId].Key, KeyLen / 2);
CipherAlg = CIPHER_WEP64;
break;
case 13: /* wep 104 Ascii type */
- pAdapter->SharedKey[BSS0][KeyId].KeyLen = KeyLen;
+ pAdapter->SharedKey[BSS0][KeyId].KeyLen = (UCHAR)KeyLen;
memcpy(pAdapter->SharedKey[BSS0][KeyId].Key, Key, KeyLen);
CipherAlg = CIPHER_WEP128;
break;
@@ -1369,7 +1388,7 @@ INT Set_Wep_Key_Proc(
if( !isxdigit(*(Key+i)) )
return FALSE; /*Not Hex value; */
}
- pAdapter->SharedKey[BSS0][KeyId].KeyLen = KeyLen / 2 ;
+ pAdapter->SharedKey[BSS0][KeyId].KeyLen = (UCHAR)(KeyLen / 2);
AtoH(Key, pAdapter->SharedKey[BSS0][KeyId].Key, KeyLen / 2);
CipherAlg = CIPHER_WEP128;
break;
@@ -1388,7 +1407,7 @@ INT Set_Wep_Key_Proc(
{
AsicAddSharedKeyEntry(pAdapter,
0,
- KeyId,
+ (UCHAR)KeyId,
&pAdapter->SharedKey[BSS0][KeyId]);
#ifdef MT_MAC
SetWepKeyForMT(pAdapter, KeyId);
@@ -1408,14 +1427,14 @@ INT Set_Wep_Key_Proc(
*/
INT Set_Key1_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
{
- int KeyLen;
+ UCHAR KeyLen;
int i;
UCHAR CipherAlg=CIPHER_WEP64;
if (pAdapter->StaCfg.wdev.AuthMode >= Ndis802_11AuthModeWPA)
return TRUE; /* do nothing */
- KeyLen = strlen(arg);
+ KeyLen = (UCHAR)strlen(arg);
switch (KeyLen)
{
@@ -1488,14 +1507,14 @@ INT Set_Key1_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
*/
INT Set_Key2_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
{
- int KeyLen;
+ UCHAR KeyLen;
int i;
UCHAR CipherAlg=CIPHER_WEP64;
if (pAdapter->StaCfg.wdev.AuthMode >= Ndis802_11AuthModeWPA)
return TRUE; /* do nothing */
- KeyLen = strlen(arg);
+ KeyLen = (UCHAR)strlen(arg);
switch (KeyLen)
{
@@ -1566,14 +1585,14 @@ INT Set_Key2_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
*/
INT Set_Key3_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
{
- int KeyLen;
+ UCHAR KeyLen;
int i;
UCHAR CipherAlg=CIPHER_WEP64;
if (pAdapter->StaCfg.wdev.AuthMode >= Ndis802_11AuthModeWPA)
return TRUE; /* do nothing */
- KeyLen = strlen(arg);
+ KeyLen = (UCHAR)strlen(arg);
switch (KeyLen)
{
@@ -1644,14 +1663,14 @@ INT Set_Key3_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
*/
INT Set_Key4_Proc(RTMP_ADAPTER *pAdapter, RTMP_STRING *arg)
{
- int KeyLen;
+ UCHAR KeyLen;
int i;
UCHAR CipherAlg=CIPHER_WEP64;
if (pAdapter->StaCfg.wdev.AuthMode >= Ndis802_11AuthModeWPA)
return TRUE; /* do nothing */
- KeyLen = strlen(arg);
+ KeyLen = (UCHAR)strlen(arg);
switch (KeyLen)
{
@@ -3144,11 +3163,11 @@ VOID RTMPAddKey(RTMP_ADAPTER *pAd, PNDIS_802_11_KEY pKey)
/* update WCID attribute table and IVEIV table for this entry */
RTMPSetWcidSecurityInfo(pAd,
- BSS0,
- KeyIdx,
- pEntry->PairwiseKey.CipherAlg,
- pEntry->wcid,
- PAIRWISEKEYTABLE);
+ BSS0,
+ (UINT8)KeyIdx,
+ pEntry->PairwiseKey.CipherAlg,
+ pEntry->wcid,
+ PAIRWISEKEYTABLE);
}
}
else
@@ -3170,7 +3189,8 @@ VOID RTMPAddKey(RTMP_ADAPTER *pAd, PNDIS_802_11_KEY pKey)
Key = pAd->SharedKey[BSS0][KeyIdx].Key;
/* Set Group key material to Asic */
- AsicAddSharedKeyEntry(pAd, BSS0, KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);
+ AsicAddSharedKeyEntry(pAd, BSS0,
+ (UCHAR)KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);
#if 0
/* STA doesn't need to set WCID attribute for group key */
@@ -3318,7 +3338,7 @@ VOID StaSiteSurvey(
INT32 cli_idx = 0;
for (cli_idx=0; cli_idx < MAX_APCLI_NUM; cli_idx++)
{
- if (pAd && pAd->ApCfg.ApCliTab[cli_idx].CtrlCurrState == APCLI_CTRL_CONNECTED)
+ if (pAd->ApCfg.ApCliTab[cli_idx].CtrlCurrState == APCLI_CTRL_CONNECTED)
{
pAd->StaCfg.bImprovedScan = TRUE;
pAd->StaCfg.ScanChannelCnt = 0; /* reset channel counter to 0 */
@@ -3577,8 +3597,59 @@ INT Set_WOW_GPIOHighLow(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
return TRUE;
}
+
+/* set WOW keep alive null frame period */
+INT Set_WOW_KeepAlive_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
+{
+ ULONG Value = simple_strtol(arg, 0, 10);
+
+ DBGPRINT(RT_DEBUG_OFF, ("keep alive enter: arg=%s\n", arg));
+
+ /* if 0: NOT to configure. non-0: set value 1~15 */
+ pAd->WOW_Cfg.nKeepAlivePeriod = ((UINT8)Value) & 0xf;
+
+ DBGPRINT(RT_DEBUG_OFF, ("keep alive period = %d\n", pAd->WOW_Cfg.nKeepAlivePeriod));
+
+ return TRUE;
+}
#endif /*#ifdef MT_WOW_SUPPORT*/
+INT Set_GPIOHigh_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
+{
+ LONG input = 0;
+
+ int bEnable = kstrtol(arg, 10, &input);
+
+ if (bEnable < 0)
+ return FALSE;
+
+ if (input > GPIO16)
+ return FALSE;
+
+ GPIODirectionOuput(pAd, (UINT32)input, OUTPUT_HIGH);
+
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] gpio=%lu\n", __func__, input));
+ return TRUE;
+}
+
+INT Set_GPIOLow_Proc(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
+{
+ LONG input = 0;
+
+ int bEnable = kstrtol(arg, 10, &input);
+
+ if (bEnable < 0)
+ return FALSE;
+
+ if (input > GPIO16)
+ return FALSE;
+
+ GPIODirectionOuput(pAd, (UINT32)input, OUTPUT_LOW);
+
+ DBGPRINT(RT_DEBUG_TRACE, ("[%s] gpio=%lu\n", __func__, input));
+ return TRUE;
+}
+
#ifdef RTMP_MAC_USB
/* Sets the FW into WOW Suspend mode */
INT Set_UsbSuspend(RTMP_ADAPTER *pAd, RTMP_STRING *arg)
@@ -3819,7 +3890,9 @@ INT RTMPSetInformation(
NdisMoveMemory(pAd->StaCfg.WpaPassPhrase, &ppassphrase->KeyMaterial, ppassphrase->KeyLength);
pAd->StaCfg.WpaPassPhraseLen = ppassphrase->KeyLength;
hex_dump("pAd->StaCfg.WpaPassPhrase", pAd->StaCfg.WpaPassPhrase, 64);
- printk("WpaPassPhrase=%s\n",pAd->StaCfg.WpaPassPhrase);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("WpaPassPhrase=%s\n",
+ pAd->StaCfg.WpaPassPhrase));
}
}
}
@@ -3904,7 +3977,7 @@ INT RTMPSetInformation(
Status = copy_from_user(&PhyMode, wrq->u.data.pointer, wrq->u.data.length);
if (PhyMode <= MaxPhyMode)
{
- pAd->CommonCfg.cfg_wmode = PhyMode;
+ pAd->CommonCfg.cfg_wmode = (UCHAR)PhyMode;
RTMPSetPhyMode(pAd, PhyMode);
}
DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_PHY_MODE (=%d)\n", PhyMode));
@@ -3916,7 +3989,7 @@ INT RTMPSetInformation(
else
{
Status = copy_from_user(&StaConfig, wrq->u.data.pointer, wrq->u.data.length);
- pAd->CommonCfg.bEnableTxBurst = StaConfig.EnableTxBurst;
+ pAd->CommonCfg.bEnableTxBurst = (BOOLEAN)StaConfig.EnableTxBurst;
pAd->CommonCfg.UseBGProtection = StaConfig.UseBGProtection;
pAd->CommonCfg.bUseShortSlotTime = 1; /* 2003-10-30 always SHORT SLOT capable */
if ((pAd->CommonCfg.PhyMode != StaConfig.AdhocMode) &&
@@ -4790,7 +4863,8 @@ INT RTMPSetInformation(
NdisMoveMemory(pAd->StaCfg.wpa_supplicant_info.DesireSharedKey[KeyIdx].Key,
&pWepKey->KeyMaterial,
pWepKey->KeyLength);
- pAd->StaCfg.wpa_supplicant_info.DesireSharedKeyId = KeyIdx;
+ pAd->StaCfg.wpa_supplicant_info.DesireSharedKeyId =
+ (UCHAR)KeyIdx;
pAd->StaCfg.wpa_supplicant_info.DesireSharedKey[KeyIdx].CipherAlg = CipherAlg;
#endif /* WPA_SUPPLICANT_SUPPORT */
wdev->DefaultKeyId = (UCHAR) KeyIdx;
@@ -4803,7 +4877,9 @@ INT RTMPSetInformation(
Key = pWepKey->KeyMaterial;
/* Set Group key material to Asic */
- AsicAddSharedKeyEntry(pAd, BSS0, KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);
+ AsicAddSharedKeyEntry(pAd, BSS0,
+ (UCHAR)KeyIdx,
+ &pAd->SharedKey[BSS0][KeyIdx]);
#if 0
/* STA doesn't need to set WCID attribute for group key */
@@ -4818,7 +4894,9 @@ INT RTMPSetInformation(
Key = pAd->SharedKey[BSS0][KeyIdx].Key;
/* Set key material and cipherAlg to Asic */
- AsicAddSharedKeyEntry(pAd, BSS0, KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);
+ AsicAddSharedKeyEntry(pAd, BSS0,
+ (UCHAR)KeyIdx,
+ &pAd->SharedKey[BSS0][KeyIdx]);
if (pWepKey->KeyIndex & 0x80000000)
{
@@ -4829,11 +4907,11 @@ INT RTMPSetInformation(
#endif
/* Assign pairwise key info */
RTMPSetWcidSecurityInfo(pAd,
- BSS0,
- KeyIdx,
- CipherAlg,
- BSSID_WCID,
- SHAREDKEYTABLE);
+ BSS0,
+ (UINT8)KeyIdx,
+ CipherAlg,
+ BSSID_WCID,
+ SHAREDKEYTABLE);
}
}
DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP (id=0x%x, Len=%d-byte), Port %s Secured\n",
@@ -6659,7 +6737,7 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_WEP_STATUS(=%d)\n", WepStatus));
break;
case OID_802_11_TX_POWER_LEVEL:
- wrq->u.data.length = sizeof(ULONG);
+ wrq->u.data.length = sizeof(UCHAR);
Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.TxPower, wrq->u.data.length);
DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_TX_POWER_LEVEL %x\n",pAd->CommonCfg.TxPower));
break;
@@ -6782,7 +6860,7 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
apsd,pAd->StaCfg.wdev.UapsdInfo.bAPSDCapable,pAd->CommonCfg.bAPSDAC_BE,pAd->CommonCfg.bAPSDAC_BK,pAd->CommonCfg.bAPSDAC_VI,pAd->CommonCfg.bAPSDAC_VO,pAd->CommonCfg.MaxSPLength));
break;
case RT_OID_802_11_QUERY_APSD_PSM:
- wrq->u.data.length = sizeof(ULONG);
+ wrq->u.data.length = sizeof(BOOLEAN);
Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.bAPSDForcePowerSave, wrq->u.data.length);
DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_APSD_PSM (=%d)\n", pAd->CommonCfg.bAPSDForcePowerSave));
break;
@@ -7359,7 +7437,7 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
pUICli = &pUI_table->Client[i];
NdisMoveMemory(pUICli, pPAdCli, sizeof(RT_P2P_CLIENT_ENTRY));
}
- printk("Query::OID_802_11_P2P_SCAN_LIST\n");
+ DBGPRINT(RT_DEBUG_OFF, ("Query::OID_802_11_P2P_SCAN_LIST\n"));
Status = copy_to_user(wrq->u.data.pointer, pUI_table, sizeof(RT_P2P_UI_TABLE));
DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_P2P_SCAN_LIST (Len=%d, Rule=%s)\n", sizeof(char),pAd->P2pCfg.GroupOpChannel));
os_free_mem(NULL, pUI_table);
@@ -7993,16 +8071,20 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
Status = copy_from_user(pBuf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct bbp32_info *)pBuf;
- printk("Info->bbp_start = %x\n", Info->bbp_start);
- printk("Info->bbp_end = %x\n", Info->bbp_end);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Info->bbp_start = %x\n",
+ Info->bbp_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->bbp_end = %x\n", Info->bbp_end));
for (Index = Info->bbp_start; Index <= Info->bbp_end; Index += 4)
{
UINT32 Value;
RTMP_IO_READ32(pAd, Index + pAd->chipCap.BBPMemMapOffset, &Value);
- printk("Offset = %x\n", Index + pAd->chipCap.BBPMemMapOffset);
- printk("Value = %x\n", Value);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Offset = %x\n",
+ Index + pAd->chipCap.BBPMemMapOffset));
+ DBGPRINT(RT_DEBUG_OFF, ("Value = %x\n", Value));
NdisMoveMemory(Info->bbp_value + j, &Value, 4);
j++;
}
@@ -8114,9 +8196,13 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
Status = copy_from_user(pBuf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct mem_map_info *)pBuf;
- printk("Info->base = %x\n", Info->base);
- printk("Info->mem_map_start = %x\n", Info->mem_map_start);
- printk("Info->mem_map_end = %x\n", Info->mem_map_end);
+ DBGPRINT(RT_DEBUG_OFF, ("Info->base = %x\n", Info->base));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Info->mem_map_start = %x\n",
+ Info->mem_map_start));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Info->mem_map_end = %x\n",
+ Info->mem_map_end));
for (Index = Info->mem_map_start; Index <= Info->mem_map_end; Index += 4)
@@ -8150,8 +8236,12 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
Status = copy_from_user(pBuf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct e2p_info *)pBuf;
- printk("Info->e2p_start = %x\n", Info->e2p_start);
- printk("Info->e2p_end = %x\n", Info->e2p_end);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Info->e2p_start = %x\n",
+ Info->e2p_start));
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Info->e2p_end = %x\n",
+ Info->e2p_end));
for (Index = Info->e2p_start; Index <= Info->e2p_end; Index += 2)
@@ -8185,16 +8275,19 @@ ACM_BANDWIDTH_INFO BwInfo, *pInfo;
Status = copy_from_user(pBuf, wrq->u.data.pointer, wrq->u.data.length);
Info = (struct mac_info *)pBuf;
- printk("Info->mac_start = %x\n", Info->mac_start);
- printk("Info->mac_end = %x\n", Info->mac_end);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("Info->mac_start = %x\n",
+ Info->mac_start));
+ DBGPRINT(RT_DEBUG_OFF, ("Info->mac_end = %x\n", Info->mac_end));
for (Index = Info->mac_start; Index <= Info->mac_end; Index += 4)
{
UINT32 Value;
RTMP_IO_READ32(pAd, Index + pAd->chipCap.MacMemMapOffset, &Value);
- printk("Offset = %x\n", Index + pAd->chipCap.MacMemMapOffset);
- printk("Value = %x\n", Value);
+ DBGPRINT(RT_DEBUG_OFF, ("Offset = %x\n",
+ Index + pAd->chipCap.MacMemMapOffset));
+ DBGPRINT(RT_DEBUG_OFF, ("Value = %x\n", Value));
NdisMoveMemory(Info->mac_value + j, &Value, 4);
j++;
}
@@ -8601,7 +8694,7 @@ next:
/* write data to file */
file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
- printk("%s", msg);
+ DBGPRINT(RT_DEBUG_OFF, ("%s", msg));
eepAddr += 2;
}
sprintf(msg, "\nDump all EEPROM values to %s\n", fileName);
@@ -8619,7 +8712,7 @@ next:
#endif /* RELEASE_EXCLUDE */
/* Copy the information into the user buffer */
- wrq->u.data.length = strlen(msg);
+ wrq->u.data.length = (UINT16)strlen(msg);
Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
LabelOK:
@@ -8915,19 +9008,21 @@ VOID RTMPAPIoctlRF_mt7603(RTMP_ADAPTER *pAd, RTMP_IOCTL_INPUT_STRUCT *wrq)
if (bIsPrintAllRF)
{
RTMPZeroMemory(msg, memLen);
- sprintf(msg, "WF0 : \n");
+ snprintf(msg, memLen, "WF0 :\n");
for (offset = 0; offset < 0x1000; offset+=4)
{
CmdRFRegAccessRead(pAd, (UINT32)0, (UINT32)offset, (UINT32 *)&regRF);
- sprintf(msg+strlen(msg), "0x%08X = 0x%08X\n", offset, regRF);
+ snprintf(msg+strlen(msg), memLen-strlen(msg),
+ "0x%08X = 0x%08X\n", offset, regRF);
}
- sprintf(msg+strlen(msg), "\n");
- sprintf(msg+strlen(msg), "WF1 : \n");
+ snprintf(msg+strlen(msg), memLen-strlen(msg), "\n");
+ snprintf(msg+strlen(msg), memLen-strlen(msg), "WF1 :\n");
for (offset = 0; offset < 0x1000; offset+=4)
{
CmdRFRegAccessRead(pAd, (UINT32)1, (UINT32)offset, (UINT32 *)&regRF);
- sprintf(msg+strlen(msg), "0x%08X = 0x%08X\n", offset, regRF);
+ snprintf(msg+strlen(msg), memLen-strlen(msg),
+ "0x%08X = 0x%08X\n", offset, regRF);
}
RtmpDrvAllRFPrint(NULL, msg, strlen(msg));
@@ -8935,7 +9030,7 @@ VOID RTMPAPIoctlRF_mt7603(RTMP_ADAPTER *pAd, RTMP_IOCTL_INPUT_STRUCT *wrq)
DBGPRINT(RT_DEBUG_TRACE, ("strlen(msg)=%d\n", (UINT32)strlen(msg)));
/* Copy the information into the user buffer */
#ifdef LINUX
- wrq->u.data.length = strlen("Dump to RFDump.txt");
+ wrq->u.data.length = (UINT16)strlen("Dump to RFDump.txt");
if (copy_to_user(wrq->u.data.pointer, "Dump to RFDump.txt", wrq->u.data.length))
{
DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));
@@ -9849,42 +9944,40 @@ VOID RTMPIoctlShow(
}
else
{
- if (pAd->IndicateMediaState == NdisMediaStateConnected)
- {
- if (INFRA_ON(pAd))
- {
- snprintf(extra, size, "Connected(AP: %s[%02X:%02X:%02X:%02X:%02X:%02X])\n",
- pAd->CommonCfg.Ssid,
- pAd->CommonCfg.Bssid[0],
- pAd->CommonCfg.Bssid[1],
- pAd->CommonCfg.Bssid[2],
- pAd->CommonCfg.Bssid[3],
- pAd->CommonCfg.Bssid[4],
- pAd->CommonCfg.Bssid[5]);
- DBGPRINT(RT_DEBUG_TRACE ,("Ssid=%s ,Ssidlen = %d\n",pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen));
- }
- else if (ADHOC_ON(pAd))
- snprintf(extra, size, "Connected\n");
- }
- else
- {
- snprintf(extra, size, "Disconnected\n");
- DBGPRINT(RT_DEBUG_TRACE ,("ConnStatus is not connected\n"));
- }
+ if (INFRA_ON(pAd)) {
+ snprintf(extra, size,
+ "Connected(AP: %s[%02X:%02X:%02X:%02X:%02X:%02X])\n",
+ pAd->CommonCfg.Ssid,
+ pAd->CommonCfg.Bssid[0],
+ pAd->CommonCfg.Bssid[1],
+ pAd->CommonCfg.Bssid[2],
+ pAd->CommonCfg.Bssid[3],
+ pAd->CommonCfg.Bssid[4],
+ pAd->CommonCfg.Bssid[5]);
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("Ssid=%s ,Ssidlen = %d\n",
+ pAd->CommonCfg.Ssid,
+ pAd->CommonCfg.SsidLen));
+ } else if (ADHOC_ON(pAd)) {
+ snprintf(extra, size, "Connected\n");
+ } else {
+ snprintf(extra, size, "Disconnected\n");
+ DBGPRINT(RT_DEBUG_TRACE, ("ConnStatus is not connected\n"));
+ }
}
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
break;
case SHOW_DRVIER_VERION:
- //snprintf(extra, size, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ );
+ snprintf(extra, size, "Driver version-%s\n", STA_DRIVER_VERSION);
#ifdef MESH_SUPPORT
sprintf(extra+strlen(extra), "Support MESH \n");
#endif /* MESH_SUPPORT */
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
break;
#ifdef DOT11_N_SUPPORT
case SHOW_BA_INFO:
getBaInfo(pAd, extra, size);
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
break;
#endif /* DOT11_N_SUPPORT */
case SHOW_DESC_INFO:
@@ -9959,7 +10052,7 @@ VOID RTMPIoctlShow(
}
}
snprintf(extra, size, "Radio Off\n");
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
break;
case RAIO_ON:
pAd->StaCfg.bSwRadio = TRUE;
@@ -9975,7 +10068,7 @@ VOID RTMPIoctlShow(
}
}
snprintf(extra, size, "Radio On\n");
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
break;
#ifdef MESH_SUPPORT
@@ -10060,15 +10153,16 @@ VOID RTMPIoctlShow(
case SHOW_CFG_VALUE:
{
- Status = RTMPShowCfgValue(pAd, (RTMP_STRING *) wrq->u.data.pointer,
- extra, pIoctlShow->MaxSize);
+ Status = RTMPShowCfgValue(pAd,
+ (RTMP_STRING *) wrq->u.data.pointer,
+ extra, pIoctlShow->MaxSize);
if (Status == 0)
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
}
break;
case SHOW_ADHOC_ENTRY_INFO:
Show_Adhoc_MacTable_Proc(pAd, extra, size);
- wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
+ wrq->u.data.length = (UINT16)(strlen(extra) + 1); /* 1: size of '\0' */
break;
#ifdef WMM_ACM_SUPPORT
@@ -10081,7 +10175,9 @@ VOID RTMPIoctlShow(
case SHOW_ACM_STREAM:
AcmCmdStreamGuiDisplay(pAd, extra, size);
wrq->u.data.length = strlen(extra) + 1; /* 1: size of '\0' */
- printk("SHOW_ACM_STREAM - wrq->length = %d\n", wrq->u.data.length);
+ DBGPRINT(RT_DEBUG_OFF,
+ ("SHOW_ACM_STREAM - wrq->length = %d\n",
+ wrq->u.data.length));
break;
#endif
@@ -10250,9 +10346,9 @@ RtmpIoctl_rt_ioctl_siwfreq(
MAP_KHZ_TO_CHANNEL_ID( freq , chan); /* Setting by frequency - search the table , like 2.412G, 2.422G, */
}
- if (ChannelSanity(pAd, chan) == TRUE)
+ if (ChannelSanity(pAd, (UCHAR)chan) == TRUE)
{
- pAd->CommonCfg.Channel = chan;
+ pAd->CommonCfg.Channel = (UCHAR)chan;
/* Save the channel on MlmeAux for CntlOidRTBssidProc used. */
pAd->MlmeAux.Channel = pAd->CommonCfg.Channel;
/*save connect info*/
@@ -10262,7 +10358,7 @@ RtmpIoctl_rt_ioctl_siwfreq(
else
return NDIS_STATUS_FAILURE;
- return NDIS_STATUS_SUCCESS;
+ return NDIS_STATUS_SUCCESS;
}
@@ -10574,11 +10670,15 @@ INT RtmpIoctl_rt_ioctl_siwscan(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
{
NDIS_802_11_SSID Ssid;
Ssid.SsidLength = pConfig->SsidLen;
+
+ if (Ssid.SsidLength > MAX_LEN_OF_SSID)
+ Ssid.SsidLength = MAX_LEN_OF_SSID;
+
DBGPRINT(RT_DEBUG_TRACE, ("rt_ioctl_siwscan:: req.essid_len-%d, essid-%s\n", pConfig->SsidLen, pConfig->pSsid));
NdisZeroMemory(&Ssid.Ssid, NDIS_802_11_LENGTH_SSID);
NdisMoveMemory(Ssid.Ssid, pConfig->pSsid, Ssid.SsidLength);
pAd->MlmeAux.params.FlgScanThisSsid = pConfig->FlgScanThisSsid;
- StaSiteSurvey(pAd, &Ssid, scanType);
+ StaSiteSurvey(pAd, &Ssid, (UCHAR)scanType);
}
else
#endif /* WPA_SUPPLICANT_SUPPORT */
@@ -10591,7 +10691,7 @@ INT RtmpIoctl_rt_ioctl_siwscan(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
}
else
#endif
- StaSiteSurvey(pAd, NULL, scanType);
+ StaSiteSurvey(pAd, NULL, (UCHAR)scanType);
}while(0);
pConfig->Status = Status;
@@ -10718,9 +10818,9 @@ RtmpIoctl_rt_ioctl_giwscan(
pBssTable->SsidLen = pBssEntry->SsidLen;
memcpy(pBssTable->Ssid, pBssEntry->Ssid, 32);
pBssTable->CapabilityInfo = pBssEntry->CapabilityInfo;
- pBssTable->ChannelWidth = capInfo.ChannelWidth;
- pBssTable->ShortGIfor40 = capInfo.ShortGIfor40;
- pBssTable->ShortGIfor20 = capInfo.ShortGIfor20;
+ pBssTable->ChannelWidth = (UCHAR)capInfo.ChannelWidth;
+ pBssTable->ShortGIfor40 = (UCHAR)capInfo.ShortGIfor40;
+ pBssTable->ShortGIfor20 = (UCHAR)capInfo.ShortGIfor20;
pBssTable->MCSSet = pBssEntry->HtCapability.MCSSet[1];
pBssTable->WpaIeLen = pBssEntry->WpaIE.IELen;
pBssTable->pWpaIe = pBssEntry->WpaIE.IE;
@@ -10942,7 +11042,7 @@ RtmpIoctl_rt_ioctl_siwrts(
IN VOID *pData,
IN ULONG Data)
{
- pAd->CommonCfg.RtsThreshold = Data;
+ pAd->CommonCfg.RtsThreshold = (USHORT)Data;
return NDIS_STATUS_SUCCESS;
}
@@ -10996,7 +11096,7 @@ RtmpIoctl_rt_ioctl_siwfrag(
IN VOID *pData,
IN ULONG Data)
{
- pAd->CommonCfg.FragmentThreshold = Data;
+ pAd->CommonCfg.FragmentThreshold = (USHORT)Data;
return NDIS_STATUS_SUCCESS;
}
@@ -11093,7 +11193,7 @@ INT RtmpIoctl_rt_ioctl_siwencode(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
keyIdx = wdev->DefaultKeyId;
}
else
- wdev->DefaultKeyId = keyIdx;
+ wdev->DefaultKeyId = (UCHAR)keyIdx;
NdisZeroMemory(pAd->SharedKey[BSS0][keyIdx].Key, 16);
@@ -11124,7 +11224,7 @@ INT RtmpIoctl_rt_ioctl_siwencode(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
int index = pIoctlSec->KeyIdx; /*(erq->flags & IW_ENCODE_INDEX) - 1; */
if ((index >= 0) && (index < 4))
{
- pAd->StaCfg.wdev.DefaultKeyId = index;
+ pAd->StaCfg.wdev.DefaultKeyId = (UCHAR)index;
}
else
/* Don't complain if only change the mode */
@@ -11257,7 +11357,7 @@ RtmpIoctl_rt_ioctl_siwmlme(
case RT_CMD_STA_IOCTL_IW_MLME_DEAUTH:
DBGPRINT(RT_DEBUG_TRACE, ("====> %s - IW_MLME_DEAUTH\n", __FUNCTION__));
COPY_MAC_ADDR(DeAuthReq.Addr, pAd->CommonCfg.Bssid);
- DeAuthReq.Reason = reason_code;
+ DeAuthReq.Reason = (USHORT)reason_code;
pMsgElem->MsgLen = sizeof(MLME_DEAUTH_REQ_STRUCT);
NdisMoveMemory(pMsgElem->Msg, &DeAuthReq, sizeof(MLME_DEAUTH_REQ_STRUCT));
MlmeDeauthReqAction(pAd, pMsgElem);
@@ -11276,7 +11376,7 @@ RtmpIoctl_rt_ioctl_siwmlme(
pAd->StaCfg.ConnectinfoChannel = 0;
COPY_MAC_ADDR(DisAssocReq.Addr, pAd->CommonCfg.Bssid);
- DisAssocReq.Reason = reason_code;
+ DisAssocReq.Reason = (USHORT)reason_code;
pMsgElem->Machine = ASSOC_STATE_MACHINE;
pMsgElem->MsgType = MT2_MLME_DISASSOC_REQ;
@@ -11565,11 +11665,11 @@ void fnSetCipherKey(
}
else
{
- pAd->StaCfg.wdev.DefaultKeyId = keyIdx;
+ pAd->StaCfg.wdev.DefaultKeyId = (UCHAR)keyIdx;
/* Update group key information to ASIC Shared Key Table */
AsicAddSharedKeyEntry(pAd,
- BSS0,
- keyIdx,
+ (UCHAR)BSS0,
+ (UCHAR)keyIdx,
&pAd->SharedKey[BSS0][keyIdx]);
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT)
@@ -11629,7 +11729,7 @@ INT RtmpIoctl_rt_ioctl_siwencodeext(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
if (pIoctlSec->ext_flags & RT_CMD_STA_IOCTL_SECURTIY_EXT_SET_TX_KEY)
{
- wdev->DefaultKeyId = keyIdx;
+ wdev->DefaultKeyId = (UCHAR)keyIdx;
DBGPRINT(RT_DEBUG_TRACE, ("%s::DefaultKeyId = %d\n", __FUNCTION__, wdev->DefaultKeyId));
}
@@ -11660,7 +11760,8 @@ INT RtmpIoctl_rt_ioctl_siwencodeext(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
(pAd->StaCfg.GroupCipher == Ndis802_11GroupWEP104Enabled))
{
/* Set Group key material to Asic */
- AsicAddSharedKeyEntry(pAd, BSS0, keyIdx, &pAd->SharedKey[BSS0][keyIdx]);
+ AsicAddSharedKeyEntry(pAd, BSS0,
+ (UCHAR)keyIdx, &pAd->SharedKey[BSS0][keyIdx]);
/*
STA doesn't need to set WCID attribute for group key
@@ -12185,9 +12286,9 @@ RtmpIoctl_rt_ioctl_giwrate(RTMP_ADAPTER *pAd, VOID *pData, ULONG Data)
if (rate_index >= rate_count)
rate_index = rate_count-1;
- *(ULONG *)pData = ralinkrate[rate_index] * 500000;
+ *(ULONG *)pData = ralinkrate[rate_index] * 500000;
- return NDIS_STATUS_SUCCESS;
+ return NDIS_STATUS_SUCCESS;
}
@@ -13149,14 +13250,14 @@ INT RTMP_STA_IoctlHandle(
/* handle by command */
switch(Command)
{
- case CMD_RT_PRIV_IOCTL:
+ case (UINT)CMD_RT_PRIV_IOCTL:
if (Subcmd & OID_GET_SET_TOGGLE)
Status = RTMPSetInformation(pAd, pRequest, Subcmd);
else
Status = RTMPQueryInformation(pAd, pRequest, Subcmd);
break;
- case CMD_RTPRIV_IOCTL_PARAM_SET:
+ case (UINT)CMD_RTPRIV_IOCTL_PARAM_SET:
{
RT_CMD_PARAM_SET *pCmdParam = (RT_CMD_PARAM_SET *)pData;
RTMP_STRING *this_char = pCmdParam->pThisChar;
@@ -13166,46 +13267,46 @@ INT RTMP_STA_IoctlHandle(
}
break;
- case CMD_RTPRIV_IOCTL_SITESURVEY_GET:
+ case (UINT)CMD_RTPRIV_IOCTL_SITESURVEY_GET:
RTMPIoctlGetSiteSurvey(pAd, pRequest);
break;
- case CMD_RTPRIV_IOCTL_MAC:
+ case (UINT)CMD_RTPRIV_IOCTL_MAC:
RTMPIoctlMAC(pAd, pRequest);
break;
- case CMD_RTPRIV_IOCTL_E2P:
+ case (UINT)CMD_RTPRIV_IOCTL_E2P:
RTMPIoctlE2PROM(pAd, pRequest);
break;
- case CMD_RTPRIV_IOCTL_RF:
+ case (UINT)CMD_RTPRIV_IOCTL_RF:
#ifdef RTMP_RF_RW_SUPPORT
RTMPIoctlRF(pAd, pRequest);
#endif /* RTMP_RF_RW_SUPPORT */
break;
- case CMD_RTPRIV_IOCTL_BBP:
+ case (UINT)CMD_RTPRIV_IOCTL_BBP:
RTMPIoctlBbp(pAd, pRequest, pData, Data);
break;
- case CMD_RTPRIV_IOCTL_SHOW:
+ case (UINT)CMD_RTPRIV_IOCTL_SHOW:
RTMPIoctlShow(pAd, pRequest, Subcmd, pData, Data);
break;
- case CMD_RTPRIV_IOCTL_SITESURVEY:
- StaSiteSurvey(pAd, (NDIS_802_11_SSID *)pData, Data);
+ case (UINT)CMD_RTPRIV_IOCTL_SITESURVEY:
+ StaSiteSurvey(pAd, (NDIS_802_11_SSID *)pData, (UCHAR)Data);
break;
- case CMD_RTPRIV_IOCTL_CHID_2_FREQ:
- RTMP_MapChannelID2KHZ(Data, (UINT32 *)pData);
+ case (UINT)CMD_RTPRIV_IOCTL_CHID_2_FREQ:
+ RTMP_MapChannelID2KHZ((UCHAR)Data, (UINT32 *)pData);
break;
- case CMD_RTPRIV_IOCTL_FREQ_2_CHID:
+ case (UINT)CMD_RTPRIV_IOCTL_FREQ_2_CHID:
RTMP_MapKHZ2ChannelID(Data, (UINT32 *)pData);
break;
- case CMD_RTPRIV_IOCTL_ORI_DEV_TYPE_SET:
- pAd->StaCfg.OriDevType = Data;
+ case (UINT)CMD_RTPRIV_IOCTL_ORI_DEV_TYPE_SET:
+ pAd->StaCfg.OriDevType = (USHORT)Data;
#ifdef CONFIG_STA_SUPPORT
#ifdef CREDENTIAL_STORE
NdisAllocateSpinLock(pAd, &pAd->StaCtIf.Lock);
@@ -13226,7 +13327,7 @@ INT RTMP_STA_IoctlHandle(
#ifdef P2P_SUPPORT
if (Data & INT_P2P)
{
- printk("Data & INT_P2P\n");
+ DBGPRINT(RT_DEBUG_OFF, ("Data & INT_P2P\n"));
pObj->ioctl_if_type = INT_P2P;
pObj->ioctl_if = 0;
} else
@@ -13238,7 +13339,7 @@ INT RTMP_STA_IoctlHandle(
break;
#endif // #if 0
- case CMD_RTPRIV_IOCTL_STA_SCAN_SANITY_CHECK:
+ case (UINT)CMD_RTPRIV_IOCTL_STA_SCAN_SANITY_CHECK:
if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
{
/*
@@ -13258,12 +13359,12 @@ INT RTMP_STA_IoctlHandle(
}
break;
- case CMD_RTPRIV_IOCTL_STA_SCAN_END:
+ case (UINT)CMD_RTPRIV_IOCTL_STA_SCAN_END:
pAd->StaCfg.bSkipAutoScanConn = FALSE;
DBGPRINT(RT_DEBUG_ERROR ,("===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %ld\n",pAd->ScanTab.BssNr , pAd->ScanTab.BssNr, Data));
break;
- case CMD_RTPRIV_IOCTL_BSS_LIST_GET:
+ case (UINT)CMD_RTPRIV_IOCTL_BSS_LIST_GET:
{
RT_CMD_STA_IOCTL_BSS_LIST *pBssList = (RT_CMD_STA_IOCTL_BSS_LIST *)pData;
RT_CMD_STA_IOCTL_BSS *pList;
diff --git a/sta/sync.c b/sta/sync.c
index 1a240c7..49fb104 100755
--- a/sta/sync.c
+++ b/sta/sync.c
@@ -1587,12 +1587,13 @@ VOID PeerBeaconAtScanAction(
}
}
#endif /* WIFI_REGION32_HIDDEN_SSID_SUPPORT */
-
+
Idx = BssTableSearch(&pAd->ScanTab, &ie_list->Bssid[0], ie_list->Channel);
#ifdef WIFI_REGION32_HIDDEN_SSID_SUPPORT
- if (Idx != BSS_NOT_FOUND && ie_list->SsidLen != 0 && SsidAllZero == 0)
+ if ((Idx != BSS_NOT_FOUND) && (ie_list->SsidLen != 0) &&
+ (SsidAllZero == 0) && (Idx < ARRAY_SIZE(pAd->ScanTab.BssEntry)))
#else
- if (Idx != BSS_NOT_FOUND)
+ if ((Idx != BSS_NOT_FOUND) && (Idx < ARRAY_SIZE(pAd->ScanTab.BssEntry)))
#endif /* WIFI_REGION32_HIDDEN_SSID_SUPPORT */
Rssi = pAd->ScanTab.BssEntry[Idx].Rssi;
@@ -1741,7 +1742,7 @@ VOID PeerBeaconAtScanAction(
}
#endif /* DOT11N_DRAFT3 */
#endif /* DOT11_N_SUPPORT */
- if (Idx != BSS_NOT_FOUND)
+ if ((Idx != BSS_NOT_FOUND) && (Idx < ARRAY_SIZE(pAd->ScanTab.BssEntry)))
{
BSS_ENTRY *pBssEntry = &pAd->ScanTab.BssEntry[Idx];
NdisMoveMemory(pBssEntry->PTSF, &Elem->Msg[24], 4);
@@ -1912,13 +1913,15 @@ VOID PeerBeaconAtJoinAction(RTMP_ADAPTER *pAd, MLME_QUEUE_ELEM *Elem)
pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen,
ie_list->Channel);
- if (Idx == BSS_NOT_FOUND)
+ if ((Idx == BSS_NOT_FOUND) ||
+ (Idx >= ARRAY_SIZE(pAd->ScanTab.BssEntry)))
{
Rssi = RTMPMaxRssi(pAd, ConvertToRssi(pAd, &Elem->rssi_info, RSSI_IDX_0),
ConvertToRssi(pAd, &Elem->rssi_info, RSSI_IDX_1),
ConvertToRssi(pAd, &Elem->rssi_info, RSSI_IDX_2));
Idx = BssTableSetEntry(pAd, &pAd->ScanTab, ie_list, Rssi, LenVIE, pVIE);
- if (Idx != BSS_NOT_FOUND)
+ if ((Idx != BSS_NOT_FOUND) &&
+ (Idx < ARRAY_SIZE(pAd->ScanTab.BssEntry)))
{
NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].PTSF, &Elem->Msg[24], 4);
NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[0], &Elem->TimeStamp.u.LowPart, 4);
@@ -2366,8 +2369,8 @@ DBGPRINT(RT_DEBUG_OFF, ("-->%s():INFRA_ON=%d, jiffies=0x%x, OS_HZ=%d\n", __FUNCT
NdisGetSystemUpTime(&Mesh_Now);
pAd->MeshTab.MeshLink[LinkIdx].Entry.LastBeaconTime = Mesh_Now;
}
- }
-#endif /* MESH_SUPPORT */
+ }
+#endif /* SMART_CARRIER_SENSE_SUPPORT */
/* ignore BEACON not for my SSID */
if ((!is_my_ssid) && (!is_my_bssid))
@@ -2388,11 +2391,12 @@ DBGPRINT(RT_DEBUG_OFF, ("-->%s():INFRA_ON=%d, jiffies=0x%x, OS_HZ=%d\n", __FUNCT
/* Housekeeping "SsidBssTab" table for later-on ROAMing usage. */
Bssidx = BssTableSearchWithSSID(&pAd->MlmeAux.SsidBssTab, bcn_ie_list->Bssid, bcn_ie_list->Ssid, bcn_ie_list->SsidLen, bcn_ie_list->Channel);
- if (Bssidx == BSS_NOT_FOUND)
- {
+ if ((Bssidx == BSS_NOT_FOUND) ||
+ (Bssidx >= ARRAY_SIZE(pAd->MlmeAux.SsidBssTab.BssEntry))) {
/* discover new AP of this network, create BSS entry */
Bssidx = BssTableSetEntry(pAd, &pAd->MlmeAux.SsidBssTab, bcn_ie_list, RealRssi, LenVIE, pVIE);
- if (Bssidx == BSS_NOT_FOUND)
+ if ((Bssidx == BSS_NOT_FOUND) ||
+ (Bssidx >= ARRAY_SIZE(pAd->MlmeAux.SsidBssTab.BssEntry)))
;
else
{
@@ -2427,11 +2431,13 @@ DBGPRINT(RT_DEBUG_OFF, ("-->%s():INFRA_ON=%d, jiffies=0x%x, OS_HZ=%d\n", __FUNCT
/* Update ScanTab */
Bssidx = BssTableSearch(&pAd->ScanTab, bcn_ie_list->Bssid, bcn_ie_list->Channel);
- if (Bssidx == BSS_NOT_FOUND)
+ if ((Bssidx == BSS_NOT_FOUND) || (Bssidx >= ARRAY_SIZE(pAd->ScanTab.BssEntry)))
{
/* discover new AP of this network, create BSS entry */
Bssidx = BssTableSetEntry(pAd, &pAd->ScanTab, bcn_ie_list, RealRssi, LenVIE, pVIE);
- if (Bssidx == BSS_NOT_FOUND) /* return if BSS table full */
+ /* return if BSS table full */
+ if ((Bssidx == BSS_NOT_FOUND) ||
+ (Bssidx >= ARRAY_SIZE(pAd->ScanTab.BssEntry)))
goto LabelOK;
NdisMoveMemory(pAd->ScanTab.BssEntry[Bssidx].PTSF, &Elem->Msg[24], 4);
diff --git a/tools/bin2h b/tools/bin2h
new file mode 100755
index 0000000..74e971b
--- a/dev/null
+++ b/tools/bin2h
@@ -0,0 +1,31 @@
+ELF
+
+
+G
+
+
+
+
+
+
+
+
+
+
+@
+@
+
+@
+@
+
+e
+Œ
+@
+
+@
+
+@
+@
+@
+@
+@
diff --git a/tools/bin2h.c b/tools/bin2h.c
index ce65baa..b20df9e 100755
--- a/tools/bin2h.c
+++ b/tools/bin2h.c
@@ -21,11 +21,15 @@
#include <string.h>
#include <stdlib.h>
+#define MAX_FIRMWARE_NAME_BUFFER_LENGTH 128
+#define MAX_NAME_BUFFER_LENGTH 512
+#define MAX_CHIPSETS_BUFFER_LENGTH 1024
+
int bin2h(char *infname, char *outfname, char *fw_name)
{
int ret = 0;
FILE *infile, *outfile;
- unsigned char c;
+ int c;
int i=0;
infile = fopen(infname,"r");
@@ -66,7 +70,7 @@ int bin2h(char *infname, char *outfname, char *fw_name)
}
fputs("0x", outfile);
- sprintf(cc,"%02x",c);
+ snprintf(cc, sizeof(cc), "%02x", c);
fputs(cc, outfile);
fputs(", ", outfile);
i++;
@@ -80,13 +84,14 @@ int bin2h(char *infname, char *outfname, char *fw_name)
int main(int argc ,char *argv[])
{
- char infname[512], ine2pname[512], in_rom_patch[512];
- char infname1[512];
- char outfname[512], oute2pname[512], out_rom_patch[512];
- char outfname1[512];
- char chipsets[1024];
- char fw_name[128], e2p_name[128], rom_patch_name[128];
- char fw_name1[128];
+ char infname[MAX_NAME_BUFFER_LENGTH], ine2pname[MAX_NAME_BUFFER_LENGTH];
+ char infname1[MAX_NAME_BUFFER_LENGTH], in_rom_patch[MAX_NAME_BUFFER_LENGTH];
+ char outfname[MAX_NAME_BUFFER_LENGTH], oute2pname[MAX_NAME_BUFFER_LENGTH];
+ char outfname1[MAX_NAME_BUFFER_LENGTH], out_rom_patch[MAX_NAME_BUFFER_LENGTH];
+ char chipsets[MAX_CHIPSETS_BUFFER_LENGTH];
+ char fw_name[MAX_FIRMWARE_NAME_BUFFER_LENGTH], e2p_name[MAX_FIRMWARE_NAME_BUFFER_LENGTH];
+ char fw_name1[MAX_FIRMWARE_NAME_BUFFER_LENGTH];
+ char rom_patch_name[MAX_FIRMWARE_NAME_BUFFER_LENGTH];
char *rt28xxdir;
char *chipset, *token;
char *wow, *rt28xx_mode;
@@ -115,8 +120,9 @@ int main(int argc ,char *argv[])
printf("Environment value \"CHIPSET\" over 1024 bytes\n");
return -1;
}
- memset(chipsets, 0, 1024);
- memcpy(chipsets, chipset, strlen(chipset));
+ memset(chipsets, 0, MAX_CHIPSETS_BUFFER_LENGTH);
+ strncpy(chipsets, chipset, MAX_CHIPSETS_BUFFER_LENGTH - 1);
+ chipsets[MAX_CHIPSETS_BUFFER_LENGTH - 1] = '\0';
if (strlen(rt28xxdir) > (sizeof(infname)-100)) {
printf("Environment value \"RT28xx_DIR\" is too long!\n");
@@ -127,26 +133,27 @@ int main(int argc ,char *argv[])
while (chipset != NULL) {
printf("chipset = %s\n", chipset);
- memset(infname, 0, 512);
- memset(infname1, 0, 512);
- memset(ine2pname, 0, 512);
- memset(outfname, 0, 512);
- memset(outfname1, 0, 512);
- memset(oute2pname, 0, 512);
- memset(fw_name, 0, 128);
- memset(fw_name1, 0, 128);
- memset(e2p_name, 0, 128);
- memset(in_rom_patch, 0, 512);
- memset(out_rom_patch, 0, 512);
- memset(rom_patch_name, 0, 128);
- strcat(infname,rt28xxdir);
- strcat(infname1,rt28xxdir);
- strcat(ine2pname, rt28xxdir);
- strcat(in_rom_patch, rt28xxdir);
- strcat(outfname,rt28xxdir);
- strcat(outfname1,rt28xxdir);
- strcat(oute2pname, rt28xxdir);
- strcat(out_rom_patch, rt28xxdir);
+ memset(infname, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(infname1, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(ine2pname, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(outfname, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(outfname1, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(oute2pname, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(fw_name, 0, MAX_FIRMWARE_NAME_BUFFER_LENGTH);
+ memset(fw_name1, 0, MAX_FIRMWARE_NAME_BUFFER_LENGTH);
+ memset(e2p_name, 0, MAX_FIRMWARE_NAME_BUFFER_LENGTH);
+ memset(in_rom_patch, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(out_rom_patch, 0, MAX_NAME_BUFFER_LENGTH);
+ memset(rom_patch_name, 0, MAX_FIRMWARE_NAME_BUFFER_LENGTH);
+ strncat(infname, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(infname) - 1);
+ strncat(infname1, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(infname1) - 1);
+ strncat(ine2pname, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(ine2pname) - 1);
+ strncat(in_rom_patch, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(in_rom_patch) - 1);
+ strncat(outfname, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(outfname) - 1);
+ strncat(outfname1, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(outfname1) - 1);
+ strncat(oute2pname, rt28xxdir, MAX_NAME_BUFFER_LENGTH - strlen(oute2pname) - 1);
+ strncat(out_rom_patch, rt28xxdir,
+ MAX_NAME_BUFFER_LENGTH - strlen(out_rom_patch) - 1);
is_bin2h_fw = 0;
is_bin2h_rom_patch = 0;
is_bin2h_e2p = 0;
@@ -321,9 +328,11 @@ int main(int argc ,char *argv[])
|| (strncmp(chipset, "mt7603u", 7) == 0)) {
strcat(infname, "/mcu/bin/WIFI_RAM_CODE_MT7603_e1.bin");
strcat(infname1, "/mcu/bin/WIFI_RAM_CODE_MT7603_e2.bin");
- strcat(outfname, "/include/mcu/mt7603_firmware.h");
+ strncat(outfname, "/include/mcu/mt7603_firmware.h"
+ , MAX_NAME_BUFFER_LENGTH - strlen(outfname) - 1);
strcat(outfname1, "/include/mcu/mt7603_e2_firmware.h");
- strcat(fw_name, "MT7603_FirmwareImage");
+ strncat(fw_name, "MT7603_FirmwareImage"
+ , MAX_FIRMWARE_NAME_BUFFER_LENGTH - strlen(fw_name) - 1);
strcat(fw_name1, "MT7603_e2_FirmwareImage");
strcat(e2p_name, "MT7603_E2PImage");
@@ -334,10 +343,12 @@ int main(int argc ,char *argv[])
} else if (strncmp(chipset, "mt7628", 7) == 0) {
//strcat(infname, "/mcu/bin/MT7628_ram_20140212_fpga_tv01.bin");
strcat(infname, "/mcu/bin/WIFI_RAM_CODE_MT7628_e1.bin");
- strcat(outfname, "/include/mcu/mt7628_firmware.h");
+ strncat(outfname, "/include/mcu/mt7628_firmware.h"
+ , MAX_NAME_BUFFER_LENGTH - strlen(outfname) - 1);
strcat(fw_name, "MT7628_FirmwareImage");
strcat(e2p_name, "MT7628_E2PImage");
- strcat(ine2pname, "/eeprom/MT7603E1_EEPROM_layout_20131206.bin");
+ strncat(ine2pname, "/eeprom/MT7603E1_EEPROM_layout_20131206.bin"
+ , MAX_NAME_BUFFER_LENGTH - strlen(ine2pname) - 1);
strcat(oute2pname, "/include/eeprom/mt7628_e2p.h");
is_bin2h_fw = 1;
is_bin2h_e2p = 1;
diff --git a/tools/plug_in/calib_robust_test/calib_robust_file.c b/tools/plug_in/calib_robust_test/calib_robust_file.c
index 4791eb0..c15e3dc 100755
--- a/tools/plug_in/calib_robust_test/calib_robust_file.c
+++ b/tools/plug_in/calib_robust_test/calib_robust_file.c
@@ -31,12 +31,12 @@ int calib_test_fileOpen(char *fname)
filp = filp_open(fname, O_RDWR | O_CREAT, 0);
}else
{
- printk("[calib] file is exist!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, ("[calib] file is exist!!\n"));
result = -1;
}
if (IS_ERR(filp))
{
- printk("[calib] error occured while opening file %s, exiting...\n",fname);
+ DBGPRINT(RT_DEBUG_ERROR, ("[calib] error occurred while opening file %s, exiting...\n", fname));
result = -1;
}
return result;
diff --git a/tools/plug_in/calib_robust_test/calib_robust_main.c b/tools/plug_in/calib_robust_test/calib_robust_main.c
index 712dbb4..5ad2cf9 100755
--- a/tools/plug_in/calib_robust_test/calib_robust_main.c
+++ b/tools/plug_in/calib_robust_test/calib_robust_main.c
@@ -176,7 +176,7 @@ static void calib_result_show(RTMP_ADAPTER *pAd,unsigned int calibId)
if(pCalibInfo==NULL)
{
- printk("[Calib] can't find calib information by calibId %d\n",calibId);
+ DBGPRINT(RT_DEBUG_ERROR, ("[Calib] can't find calib information by calibId %d\n", calibId));
return ;
}
@@ -244,7 +244,7 @@ static void calib_robust_routine(struct work_struct *ws)
static int calib_robust_callback(unsigned short hook, struct sk_buff *skb, unsigned char status,void *priv)
{
RTMP_ADAPTER *pAd = (RTMP_ADAPTER*)priv;
- printk("[calib] Calibration ID: %d,State: %d\n",gCalib.curCalibId,status);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] Calibration ID: %d,State: %d\n", gCalib.curCalibId, status));
if(pAd == pGAd){
switch(gCalib.stat){
case CALIB_STATE_NOP:
@@ -259,11 +259,12 @@ static int calib_robust_callback(unsigned short hook, struct sk_buff *skb, unsig
{
if(status!=NDIS_STATUS_SUCCESS)
{
- printk("[calib] rcv response in calib cma failed, retry!\n");
+ DBGPRINT(RT_DEBUG_ERROR, ("[calib] rcv response in calib cma failed, retry!\n"));
}else
{
- printk("[calib] rcv response in calib cmd ok, calibId %d!\n",gCalib.curCalibId);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] rcv response in calib cmd ok, calibId %d!\n",
+ gCalib.curCalibId));
/*do save result*/
schedule_work(gCalib.resultWork);
spin_unlock(&gCalib.lock);
@@ -348,7 +349,8 @@ static struct mt_wlanTxRxHookOps calib_ops __read_mostly = {
static int __init calib_test_module_init(void)
{
- printk("[calib] %s(): module init and register callback for roubst test\n",__FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] %s(): module init and register callback for roubst test\n",
+ __func__));
/*initial global struct*/
calib_test_init();
/*register proc file*/
@@ -364,7 +366,7 @@ static int __init calib_test_module_init(void)
static void __exit calib_test_module_exit(void)
{
- printk("[calib] %s(): module exist\n",__FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] %s(): module exist\n", __func__));
RtmpOsTxRxHookUnRegister(&calib_ops);
calib_test_exit();
calib_file_exit();
diff --git a/tools/plug_in/calib_robust_test/calib_robust_proc.c b/tools/plug_in/calib_robust_test/calib_robust_proc.c
index 37dbbae..2e7025e 100755
--- a/tools/plug_in/calib_robust_test/calib_robust_proc.c
+++ b/tools/plug_in/calib_robust_test/calib_robust_proc.c
@@ -44,7 +44,7 @@ static int calib_robust_testModeSet(unsigned int state)
gCalib.stat = state ? CALIB_STATE_START_TEST_MODE : CALIB_STATE_STOP_TEST_MODE;
/*start into test mode*/
ret = RtmpOsRfTest(pGAd,ACTION_SWITCH_TO_RFTEST,state,0);
- printk("[calib] enable test mode!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] enable test mode!\n"));
return ret;
}
@@ -122,13 +122,13 @@ static int calib_state_proc_write( struct file *filp, const char *buff,unsigned
break;
case CALIB_STATE_START_TEST_MODE:
{
- printk("[calib] goto test mode...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] goto test mode...\n"));
calib_robust_testModeSet(1);
}
break;
case CALIB_STATE_CALIB_START:
{
- printk("[calib] start to test...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] start to test...\n"));
pItem = calib_table_get(gCalib.curCalibId);
if(pItem)
{
@@ -140,13 +140,13 @@ static int calib_state_proc_write( struct file *filp, const char *buff,unsigned
calib_robust_testStart();
}
- printk("[calib] count %d\n",gCalib.curCount);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] count %d\n", gCalib.curCount));
}
}
break;
case CALIB_STATE_STOP_TEST_MODE:
{
- printk("[calib] stop test mode...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] stop test mode...\n"));
calib_robust_testModeSet(0);
}
break;
@@ -182,7 +182,7 @@ static int calib_times_proc_write( struct file *filp, const char *buff,unsigned
if (buff && !copy_from_user(value, buff, len1)) {
gCalib.times = simple_strtoul(value, &end, 10);
- printk("[calib] change calibration time to %d\n",gCalib.times);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] change calibration time to %d\n", gCalib.times));
}
return len1;
@@ -210,16 +210,16 @@ static int calib_id_proc_write( struct file *filp, const char *buff,unsigned lon
if(!buff)
{
- printk("[calib] %s(): null buffer\n",__FUNCTION__);
+ DBGPRINT(RT_DEBUG_ERROR, ("[calib] %s(): null buffer\n", __func__));
goto end;
}
if(copy_from_user(value, buff, len1))
{
- printk("[calib] %s(), copy from user failed!\n",__FUNCTION__);
+ DBGPRINT(RT_DEBUG_ERROR, ("[calib] %s(), copy from user failed!\n", __func__));
goto end;
}
- printk("value = %s\n",value);
+ DBGPRINT(RT_DEBUG_OFF, ("value = %s\n", value));
if(!strncmp(value,"24GRCAL",7))
{
gCalib.curCalibId = CALIB_TEST_24GRCAL;
@@ -280,7 +280,7 @@ static int calib_id_proc_write( struct file *filp, const char *buff,unsigned lon
{
goto end;
}
- printk("[calib] change calibId to %s\n",value);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] change calibId to %s\n", value));
pItem = calib_table_get(gCalib.curCalibId);
if(pItem)
{
@@ -361,7 +361,7 @@ static int calib_file_proc_write( struct file *filp, const char *buff,unsigned l
if (buff && !copy_from_user(value, buff, len1)) {
gCalib.fstate = simple_strtoul(value, &end, 10);
- printk("[calib] change file stat to %d\n",gCalib.fstate);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] change file stat to %d\n", gCalib.fstate));
calib_file_state_run(gCalib.fstate);
}
return len1;
@@ -391,13 +391,13 @@ static int calib_bw_proc_write( struct file *filp, const char *buff,unsigned lon
if (buff && !copy_from_user(value, buff, len1)) {
bw = simple_strtoul(value, &end, 10);
- printk("[calib] bw=%d\n",bw);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] bw=%d\n", bw));
if(bw!=20 && bw!=40)
{
- printk("[calib] only support bw 20 or 40\n");
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] only support bw 20 or 40\n"));
}else{
gCalib.bw = bw;
- printk("[calib] change bw to %d\n",gCalib.bw);
+ DBGPRINT(RT_DEBUG_OFF, ("[calib] change bw to %d\n", gCalib.bw));
}
}
return len1;
@@ -475,7 +475,7 @@ int calib_test_proc_init(void)
if (!calib_proc)
{
- printk(KERN_INFO "[calib] Create cakibration test dir failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "[calib] Create cakibration test dir failed!!!\n"));
return -1;
}
@@ -483,7 +483,7 @@ int calib_test_proc_init(void)
if (!state_entry)
{
- printk(KERN_INFO "[calib] Create state entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "[calib] Create state entry failed!!!\n"));
remove_proc_entry("calib_test", NULL);
return -1;
}
@@ -492,7 +492,7 @@ int calib_test_proc_init(void)
if (!times_entry)
{
- printk(KERN_INFO "[calib] Create times_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "[calib] Create times_entry failed!!!\n"));
remove_proc_entry("stat", calib_proc);
remove_proc_entry("calib_test", NULL);
return -1;
@@ -502,7 +502,7 @@ int calib_test_proc_init(void)
if (!calibId_entry)
{
- printk(KERN_INFO "[calib] Create staId_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "[calib] Create staId_entry failed!!!\n"));
remove_proc_entry("stat", calib_proc);
remove_proc_entry("times", calib_proc);
remove_proc_entry("calib_test", NULL);
@@ -514,7 +514,7 @@ int calib_test_proc_init(void)
if (!file_entry)
{
- printk(KERN_INFO "[calib] Create file_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "[calib] Create file_entry failed!!!\n"));
remove_proc_entry("stat", calib_proc);
remove_proc_entry("times", calib_proc);
remove_proc_entry("calibId", calib_proc);
@@ -527,7 +527,7 @@ int calib_test_proc_init(void)
if (!bw_entry)
{
- printk(KERN_INFO "[calib] Create bw_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "[calib] Create bw_entry failed!!!\n"));
remove_proc_entry("stat", calib_proc);
remove_proc_entry("times", calib_proc);
remove_proc_entry("calibId", calib_proc);
@@ -538,7 +538,7 @@ int calib_test_proc_init(void)
calib_file_state_run(1);
- printk(KERN_INFO "[calib] Create calib_test ok!!!\n");
+ DBGPRINT(RT_DEBUG_OFF, (KERN_INFO "[calib] Create calib_test ok!!!\n"));
return 0;
}
diff --git a/tools/plug_in/softq_statistic/softq_stat_file.c b/tools/plug_in/softq_statistic/softq_stat_file.c
index eb01b3b..d0cc3b3 100755
--- a/tools/plug_in/softq_statistic/softq_stat_file.c
+++ b/tools/plug_in/softq_statistic/softq_stat_file.c
@@ -31,12 +31,12 @@ int softq_stat_fileOpen(char *fname)
filp = filp_open(fname, O_RDWR | O_CREAT, 0);
}else
{
- printk("file is exist!!\n");
+ DBGPRINT(RT_DEBUG_OFF, ("file is exist!!\n"));
result = -1;
}
if (IS_ERR(filp))
{
- printk("%s(): error occured while opening file %s, exiting...\n",__FUNCTION__,fname);
+ DBGPRINT(RT_DEBUG_ERROR, ("%s(): error occurred while opening file %s, exiting...\n", __func__, fname));
result = -1;
}
return result;
diff --git a/tools/plug_in/softq_statistic/softq_stat_proc.c b/tools/plug_in/softq_statistic/softq_stat_proc.c
index 33dd037..9fd7d3c 100755
--- a/tools/plug_in/softq_statistic/softq_stat_proc.c
+++ b/tools/plug_in/softq_statistic/softq_stat_proc.c
@@ -37,12 +37,12 @@ extern char *gBuffer;
swq = softq_statistic.swQueueTotal[i] ? softq_statistic.swQueueTotal[i]/softq_statistic.swQueueCounter[i]:0;
ring = softq_statistic.swQueueTotal[i] ? softq_statistic.txRingTotal[i]/softq_statistic.txRingCounter[i]:0;
- printk("\tAC%d Drop=%d, SW_Q=%d, Ring=%d, APSendPacket=%d, DequeuePacket=%d\n", i,
+ DBGPRINT(RT_DEBUG_OFF, ("\tAC%d Drop=%d, SW_Q=%d, Ring=%d, APSendPacket=%d, DequeuePacket=%d\n", i,
softq_statistic.swDropPacket[i],
swq,
ring,
softq_statistic.apSendPacket[i],
- softq_statistic.apDequeuePacket[i]);
+ softq_statistic.apDequeuePacket[i]));
}
return 0;
}
@@ -122,31 +122,31 @@ static int softq_state_proc_write( struct file *filp, const char *buff,unsigned
case SOFTQ_STATE_REPORT:
{
softq_state_show();
- printk("\nshow don...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\nshow don...\n"));
}
break;
case SOFTQ_STATE_CLEAN:
{
softq_state_clean();
- printk("\nclean don...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\nclean don...\n"));
}
break;
case SOFTQ_STATE_NOP:
- printk("\nchange to no operation...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\nchange to no operation...\n"));
break;
case SOFTQ_STATE_REPORT_INTR_PERIOD:
- printk("\nchange to report periodic...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\nchange to report periodic...\n"));
break;
case SOFTQ_STATE_REPORT_INTR_EACHTIME:
- printk("\nchange to report each time...\n");
+ DBGPRINT(RT_DEBUG_OFF, ("\nchange to report each time...\n"));
break;
default:
- printk("\nplease echo: [ clean: %d | report: %d | report-period: %d | report-each: %d | nop: %d]\n",
+ DBGPRINT(RT_DEBUG_OFF, ("\nplease echo: [ clean: %d | report: %d | report-period: %d | report-each: %d | nop: %d]\n",
SOFTQ_STATE_CLEAN,
SOFTQ_STATE_REPORT,
SOFTQ_STATE_REPORT_INTR_PERIOD,
SOFTQ_STATE_REPORT_INTR_EACHTIME,
- SOFTQ_STATE_NOP);
+ SOFTQ_STATE_NOP));
break;
}
@@ -182,7 +182,7 @@ static int softq_times_proc_write( struct file *filp, const char *buff,unsigned
if (buff && !copy_from_user(value, buff, len1)) {
softq_statistic.times = simple_strtoul(value, &end, 10);
- printk("change periodic time to %d\n",softq_statistic.times);
+ DBGPRINT(RT_DEBUG_OFF, ("change periodic time to %d\n", softq_statistic.times));
}
return len1;
@@ -216,7 +216,7 @@ static int softq_staId_proc_write( struct file *filp, const char *buff,unsigned
if (buff && !copy_from_user(value, buff, len1)) {
softq_statistic.staId = simple_strtoul(value, &end, 10);
- printk("change staId to %d\n",softq_statistic.staId);
+ DBGPRINT(RT_DEBUG_OFF, ("change staId to %d\n", softq_statistic.staId));
}
return len1;
@@ -251,7 +251,7 @@ static int softq_file_proc_write( struct file *filp, const char *buff,unsigned l
if (buff && !copy_from_user(value, buff, len1)) {
softq_statistic.fstate = simple_strtoul(value, &end, 10);
- printk("change file stat to %d\n",softq_statistic.fstate);
+ DBGPRINT(RT_DEBUG_OFF, ("change file stat to %d\n", softq_statistic.fstate));
softq_file_state_run(softq_statistic.fstate);
}
return len1;
@@ -264,7 +264,7 @@ int softq_stat_proc_init(void)
if (!softq_proc)
{
- printk(KERN_INFO "Create softq_stat dir failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "Create softq_stat dir failed!!!\n"));
return -1;
}
@@ -272,7 +272,7 @@ int softq_stat_proc_init(void)
if (!state_entry)
{
- printk(KERN_INFO "Create state entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "Create state entry failed!!!\n"));
remove_proc_entry("softq_stat", NULL);
return -1;
}
@@ -285,7 +285,7 @@ int softq_stat_proc_init(void)
if (!times_entry)
{
- printk(KERN_INFO "Create times_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "Create times_entry failed!!!\n"));
remove_proc_entry("stat", softq_proc);
remove_proc_entry("softq_stat", NULL);
return -1;
@@ -298,7 +298,7 @@ int softq_stat_proc_init(void)
if (!staId_entry)
{
- printk(KERN_INFO "Create staId_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "Create staId_entry failed!!!\n"));
remove_proc_entry("stat", softq_proc);
remove_proc_entry("times", softq_proc);
remove_proc_entry("softq_stat", NULL);
@@ -312,7 +312,7 @@ int softq_stat_proc_init(void)
if (!staId_entry)
{
- printk(KERN_INFO "Create staId_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "Create staId_entry failed!!!\n"));
remove_proc_entry("stat", softq_proc);
remove_proc_entry("times", softq_proc);
remove_proc_entry("softq_stat", NULL);
@@ -324,7 +324,7 @@ int softq_stat_proc_init(void)
if (!file_entry)
{
- printk(KERN_INFO "Create file_entry failed!!!\n");
+ DBGPRINT(RT_DEBUG_ERROR, (KERN_INFO "Create file_entry failed!!!\n"));
remove_proc_entry("stat", softq_proc);
remove_proc_entry("times", softq_proc);
remove_proc_entry("staId", softq_proc);
@@ -332,7 +332,7 @@ int softq_stat_proc_init(void)
return -1;
}
- printk(KERN_INFO "Create softq_stat ok!!!\n");
+ DBGPRINT(RT_DEBUG_OFF, (KERN_INFO "Create softq_stat ok!!!\n"));
return 0;
}
diff --git a/tools/plug_in/softq_statistic/softq_statistic.c b/tools/plug_in/softq_statistic/softq_statistic.c
index 849082f..7553695 100755
--- a/tools/plug_in/softq_statistic/softq_statistic.c
+++ b/tools/plug_in/softq_statistic/softq_statistic.c
@@ -61,7 +61,7 @@ static int softq_state_drop(unsigned int queIdx)
{
if (softq_statistic.swDropPacket[queIdx] == 0)
{
- printk("%s():drop pkt, QueIdx=%d\n", __FUNCTION__, queIdx);
+ DBGPRINT(RT_DEBUG_OFF, ("%s():drop pkt, QueIdx=%d\n", __func__, queIdx));
}
softq_statistic.swDropPacket[queIdx] +=1;
}
@@ -123,40 +123,40 @@ static int softq_state_mlme(unsigned int staId,RTMP_ADAPTER *pAd )
unsigned int freeNO0,freeNO1,freeNO2,freeNO3;
temp1 = softq_statistic.apSendPacket[0]+softq_statistic.apSendPacket[1]+softq_statistic.apSendPacket[2]+softq_statistic.apSendPacket[3];
temp2 = softq_statistic.apPreSendPacket[0]+softq_statistic.apPreSendPacket[1]+ softq_statistic.apPreSendPacket[2] + softq_statistic.apPreSendPacket[3] ;
- printk(" Send from Charior: AC0=%d, AC1=%d, AC2=%d, AC3=%d, Total=%d\n"
- , (softq_statistic.apSendPacket[0] - softq_statistic.apPreSendPacket[0])
- , (softq_statistic.apSendPacket[1] - softq_statistic.apPreSendPacket[1])
- , (softq_statistic.apSendPacket[2] - softq_statistic.apPreSendPacket[2])
- , (softq_statistic.apSendPacket[3] - softq_statistic.apPreSendPacket[3])
- , (temp1 - temp2));
+ DBGPRINT(RT_DEBUG_OFF, (" Send from Charior: AC0=%d, AC1=%d, AC2=%d, AC3=%d, Total=%d\n"
+ , (softq_statistic.apSendPacket[0] - softq_statistic.apPreSendPacket[0])
+ , (softq_statistic.apSendPacket[1] - softq_statistic.apPreSendPacket[1])
+ , (softq_statistic.apSendPacket[2] - softq_statistic.apPreSendPacket[2])
+ , (softq_statistic.apSendPacket[3] - softq_statistic.apPreSendPacket[3])
+ , (temp1 - temp2)));
temp1 = softq_statistic.apDequeuePacket[0]+softq_statistic.apDequeuePacket[1]+softq_statistic.apDequeuePacket[2]+softq_statistic.apDequeuePacket[3];
temp2 = softq_statistic.apPreDequeuePacket[0]+softq_statistic.apPreDequeuePacket[1]+softq_statistic.apPreDequeuePacket[2]+softq_statistic.apPreDequeuePacket[3];
- printk("Dequeue to Tx Ring: AC0=%d, AC1=%d, AC2=%d, AC3=%d, Total=%d\n"
+ DBGPRINT(RT_DEBUG_OFF, ("Dequeue to Tx Ring: AC0=%d, AC1=%d, AC2=%d, AC3=%d, Total=%d\n"
, (softq_statistic.apDequeuePacket[0] - softq_statistic.apPreDequeuePacket[0])
, (softq_statistic.apDequeuePacket[1] - softq_statistic.apPreDequeuePacket[1])
, (softq_statistic.apDequeuePacket[2] - softq_statistic.apPreDequeuePacket[2])
, (softq_statistic.apDequeuePacket[3] - softq_statistic.apPreDequeuePacket[3])
- , (temp1 - temp2));
+ , (temp1 - temp2)));
temp1 = softq_statistic.swDropPacket[0]+softq_statistic.swDropPacket[1]+softq_statistic.swDropPacket[2]+softq_statistic.swDropPacket[3];
temp2 = softq_statistic.swPreDropPacket[0]+softq_statistic.swPreDropPacket[1]+softq_statistic.swPreDropPacket[2]+softq_statistic.swPreDropPacket[3];
- printk(" Drop packets: AC0=%d, AC1=%d, AC2=%d, AC3=%d, Total=%d\n"
+ DBGPRINT(RT_DEBUG_OFF, (" Drop packets: AC0=%d, AC1=%d, AC2=%d, AC3=%d, Total=%d\n"
, (softq_statistic.swDropPacket[0] - softq_statistic.swPreDropPacket[0])
, (softq_statistic.swDropPacket[1] - softq_statistic.swPreDropPacket[1])
, (softq_statistic.swDropPacket[2] - softq_statistic.swPreDropPacket[2])
, (softq_statistic.swDropPacket[3] - softq_statistic.swPreDropPacket[3])
- , (temp1 - temp2));
+ , (temp1 - temp2)));
freeNO0 = GET_TXRING_FREENO(pAd, 0);
freeNO1 = GET_TXRING_FREENO(pAd, 1);
freeNO2 = GET_TXRING_FREENO(pAd, 2);
freeNO3 = GET_TXRING_FREENO(pAd, 3);
- printk(" Tx Ring Used: AC0=%d, AC1=%d, AC2=%d, AC3=%d\n\n"
- , (TX_RING_SIZE - freeNO0)
- , (TX_RING_SIZE - freeNO1)
- , (TX_RING_SIZE - freeNO2)
- , (TX_RING_SIZE - freeNO3));
+ DBGPRINT(RT_DEBUG_OFF, (" Tx Ring Used: AC0=%d, AC1=%d, AC2=%d, AC3=%d\n\n"
+ , (TX_RING_SIZE - freeNO0)
+ , (TX_RING_SIZE - freeNO1)
+ , (TX_RING_SIZE - freeNO2)
+ , (TX_RING_SIZE - freeNO3)));
for(p=0;p<4;p++)
{
@@ -286,7 +286,7 @@ static struct mt_wlanTxRxHookOps softq_stat_ops __read_mostly = {
static int __init softq_stat_module_init(void)
{
- printk("%s(): module init and register callback for debug\n",__FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("%s(): module init and register callback for debug\n", __func__));
/*initial global struct*/
sofq_stat_init();
@@ -301,7 +301,7 @@ static int __init softq_stat_module_init(void)
static void __exit softq_stat_module_exit(void)
{
- printk("%s(): module exist\n",__FUNCTION__);
+ DBGPRINT(RT_DEBUG_OFF, ("%s(): module exist\n", __func__));
RtmpOsTxRxHookUnRegister(&softq_stat_ops);
sofq_stat_exit();
softq_file_exit();
diff --git a/tx_rx/txs.c b/tx_rx/txs.c
index 88d6660..0ab5dd1 100755
--- a/tx_rx/txs.c
+++ b/tx_rx/txs.c
@@ -94,7 +94,7 @@ INT32 BcnTxSHandler(RTMP_ADAPTER *pAd, CHAR *Data, UINT32 Priv)
#endif /* RT_CFG80211_P2P_SUPPORT */
)
{
- UCHAR bss_idx = 0;
+ UINT32 bss_idx = 0;
BSS_STRUCT *pMbss = NULL;
bss_idx = Priv;
pMbss = &pAd->ApCfg.MBSSID[bss_idx];
@@ -397,7 +397,7 @@ INT32 ExitTxSTypeTable(RTMP_ADAPTER *pAd)
return 0;
}
-INT32 AddTxSTypePerPkt(RTMP_ADAPTER *pAd, UINT32 PktPid, UINT8 Format,
+INT32 AddTxSTypePerPkt(RTMP_ADAPTER *pAd, UINT8 PktPid, UINT8 Format,
TXS_HANDLER TxSHandler)
{
ULONG Flags;
@@ -500,7 +500,7 @@ INT32 TxSTypeCtlPerPkt(RTMP_ADAPTER *pAd, UINT32 PktPid, UINT8 Format, BOOLEAN T
}
RTMP_SPIN_UNLOCK_IRQRESTORE(&TxSCtl->TxSTypePerPktLock[PktPid % TOTAL_PID_HASH_NUMS], &Flags);
- DBGPRINT(RT_DEBUG_INFO, ("%s: can not find TxSType(PktPID = %d, Format = %d)\n",
+ DBGPRINT(RT_DEBUG_TRACE, ("%s: can not find TxSType(PktPID = %d, Format = %d)\n",
__FUNCTION__, PktPid, Format));
return -1;
}
@@ -552,8 +552,11 @@ INT32 RemoveTxSTypePerPktType(RTMP_ADAPTER *pAd, UINT8 PktType, UINT8 PktSubType
ULONG Flags;
TXS_CTL *TxSCtl = &pAd->TxSCtl;
TXS_TYPE *TxSType = NULL, *TmpTxSType = NULL;
+ const UINT8 st = PktSubType % TOTAL_PID_HASH_NUMS_PER_PKT_TYPE;
+ NDIS_SPIN_LOCK *lock;
- RTMP_SPIN_LOCK_IRQSAVE(&TxSCtl->TxSTypePerPktTypeLock[PktType][PktSubType % TOTAL_PID_HASH_NUMS_PER_PKT_TYPE], &Flags);
+ lock = &TxSCtl->TxSTypePerPktTypeLock[PktType][st];
+ RTMP_SPIN_LOCK_IRQSAVE(lock, &Flags);
DlListForEachSafe(TxSType, TmpTxSType, &TxSCtl->TxSTypePerPktType[PktType][PktSubType % TOTAL_PID_HASH_NUMS_PER_PKT_TYPE], TXS_TYPE, List)
{
if ((TxSType->PktType == PktType) && (TxSType->PktSubType == PktSubType)
@@ -561,11 +564,11 @@ INT32 RemoveTxSTypePerPktType(RTMP_ADAPTER *pAd, UINT8 PktType, UINT8 PktSubType
{
DlListDel(&TxSType->List);
os_free_mem(NULL, TxSType);
- RTMP_SPIN_UNLOCK_IRQRESTORE(&TxSCtl->TxSTypePerPktTypeLock[PktType][PktSubType % TOTAL_PID_HASH_NUMS], &Flags);
+ RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &Flags);
return 0;
}
}
- RTMP_SPIN_UNLOCK_IRQRESTORE(&TxSCtl->TxSTypePerPktTypeLock[PktType][PktSubType % TOTAL_PID_HASH_NUMS_PER_PKT_TYPE], &Flags);
+ RTMP_SPIN_UNLOCK_IRQRESTORE(lock, &Flags);
return -1;
}
@@ -733,7 +736,7 @@ INT32 ParseTxSPacket(RTMP_ADAPTER *pAd, UINT32 Pid, UINT8 Format, CHAR *Data)
TxSType = DlListFirst (&TxSCtl->TxSTypePerPktType[PktType][PktSubType % TOTAL_PID_HASH_NUMS_PER_PKT_TYPE], TXS_TYPE, List);
if (TxSType == NULL)
{
- printk("QQ 2\n");
+ DBGPRINT(RT_DEBUG_ERROR, ("List is empty\n"));
RTMP_SPIN_UNLOCK_IRQRESTORE(&TxSCtl->TxSTypePerPktTypeLock[PktType][PktSubType % TOTAL_PID_HASH_NUMS_PER_PKT_TYPE], &Flags);
return -1;
}
@@ -794,7 +797,7 @@ UINT8 AddTxSStatus(RTMP_ADAPTER *pAd, UINT8 Type, UINT8 PktPid, UINT8 PktType,
}
-INT32 RemoveTxSStatus(RTMP_ADAPTER *pAd, UINT8 TxSPid, UINT8 *Type, UINT8 *PktPid,
+INT32 RemoveTxSStatus(RTMP_ADAPTER *pAd, UINT32 TxSPid, UINT8 *Type, UINT8 *PktPid,
UINT8 *PktType, UINT8 *PktSubType, UINT16 *TxRate, UINT32 *TxSPriv)
{
TXS_CTL *TxSCtl = &pAd->TxSCtl;
diff --git a/tx_rx/wdev.c b/tx_rx/wdev.c
index 89ae92d..515172d 100755
--- a/tx_rx/wdev.c
+++ b/tx_rx/wdev.c
@@ -120,7 +120,7 @@ INT rtmp_wdev_idx_unreg(RTMP_ADAPTER *pAd, struct wifi_dev *wdev)
INT rtmp_wdev_idx_reg(RTMP_ADAPTER *pAd, struct wifi_dev *wdev)
{
- INT idx;
+ CHAR idx;
ULONG flags;
if (!wdev)
diff --git a/tx_rx/wdev_rx.c b/tx_rx/wdev_rx.c
index c653d2d..3321ac3 100755
--- a/tx_rx/wdev_rx.c
+++ b/tx_rx/wdev_rx.c
@@ -36,11 +36,12 @@ VOID Update_Rssi_Sample(
IN RTMP_ADAPTER *pAd,
IN RSSI_SAMPLE *pRssi,
IN struct rx_signal_info *signal,
- IN UCHAR phy_mode,
- IN UCHAR bw)
+ IN USHORT phy_mode,
+ IN USHORT bw)
{
BOOLEAN bInitial = FALSE;
- INT ant_idx, ant_max = 3;
+ UCHAR ant_idx;
+ INT ant_max = 3;
if (!(pRssi->AvgRssi[0] | pRssi->AvgRssiX8[0] | pRssi->LastRssi[0]))
bInitial = TRUE;
@@ -62,7 +63,7 @@ VOID Update_Rssi_Sample(
else
pRssi->AvgSnrX8[ant_idx] = (pRssi->AvgSnrX8[ant_idx] - pRssi->AvgSnr[ant_idx]) + pRssi->LastSnr[ant_idx];
- pRssi->AvgSnr[ant_idx] = pRssi->AvgSnrX8[ant_idx] >> 3;
+ pRssi->AvgSnr[ant_idx] = (CHAR)(pRssi->AvgSnrX8[ant_idx] >> 3);
}
if (signal->raw_rssi[ant_idx] != 0)
@@ -85,7 +86,7 @@ VOID Update_Rssi_Sample(
else
pRssi->AvgRssiX8[ant_idx] = (pRssi->AvgRssiX8[ant_idx] - pRssi->AvgRssi[ant_idx]) + pRssi->LastRssi[ant_idx];
- pRssi->AvgRssi[ant_idx] = pRssi->AvgRssiX8[ant_idx] >> 3;
+ pRssi->AvgRssi[ant_idx] = (CHAR)(pRssi->AvgRssiX8[ant_idx] >> 3);
}
}
}
@@ -272,7 +273,7 @@ VOID Announce_or_Forward_802_3_Packet(
IN UCHAR wdev_idx,
IN UCHAR op_mode)
{
- BOOLEAN to_os = FALSE;
+ INT to_os = FALSE;
struct wifi_dev *wdev;
ASSERT(wdev_idx < WDEV_NUM_MAX);
@@ -583,7 +584,7 @@ PNDIS_PACKET RTMPDeFragmentDataFrame(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk)
PNDIS_PACKET pRetPacket = NULL;
UCHAR *pFragBuffer = NULL;
BOOLEAN bReassDone = FALSE;
- UCHAR HeaderRoom = 0;
+ UINT HeaderRoom = 0;
RXWI_STRUC *pRxWI = pRxBlk->pRxWI;
UINT8 RXWISize = pAd->chipCap.RXWISize;
@@ -686,7 +687,7 @@ done:
pRxBlk->pRxWI = (RXWI_STRUC *) GET_OS_PKT_DATAPTR(pRetPacket);
pRxBlk->pHeader = (PHEADER_802_11) ((UCHAR *)pRxBlk->pRxWI + RXWISize);
pRxBlk->pData = (UCHAR *)pRxBlk->pHeader + HeaderRoom;
- pRxBlk->DataSize = pAd->FragFrame.RxSize - HeaderRoom - RXWISize;
+ pRxBlk->DataSize = (USHORT)(pAd->FragFrame.RxSize - HeaderRoom - RXWISize);
pRxBlk->pRxPacket = pRetPacket;
}
else
@@ -814,7 +815,7 @@ VOID rx_eapol_frm_handle(
#ifdef WPA_SUPPLICANT_SUPPORT
WPA_SUPPLICANT_INFO *sup_info = NULL;
CIPHER_KEY *share_key = NULL;
- int BssIdx;
+ UCHAR BssIdx;
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
@@ -856,7 +857,7 @@ VOID rx_eapol_frm_handle(
{
//UCHAR *Key;
UCHAR CipherAlg;
- int idx = 0;
+ UCHAR idx = 0;
DBGPRINT_RAW(RT_DEBUG_TRACE, ("Receive EAP-SUCCESS Packet\n"));
#ifdef CONFIG_AP_SUPPORT
@@ -1077,7 +1078,9 @@ bool check_duplicated_mgmt_frame(HEADER_802_11 *pHeader)
if (MAC_ADDR_EQUAL(duplicated_frame[mgmt_type].prev_mgmt_src_addr, pHeader->Addr2) && retry == 1
&& duplicated_frame[mgmt_type].prev_mgmt_frame_sn == current_sn) {
- DBGPRINT(RT_DEBUG_OFF, ("%s:: Drop duplicated mgmt frame(subtype=%d, current_sn=%d, prev_sn=%d, retry=%d) \n",__FUNCTION__,
+ DBGPRINT(RT_DEBUG_TRACE,
+ ("%s:: Drop duplicated mgmt frame(subtype=%d, current_sn=%d, prev_sn=%d, retry=%d) \n",
+ __FUNCTION__,
mgmt_type, current_sn, duplicated_frame[mgmt_type].prev_mgmt_frame_sn, retry));
return TRUE;
} else {
@@ -1093,7 +1096,7 @@ VOID dev_rx_mgmt_frm(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk)
HEADER_802_11 *pHeader = pRxBlk->pHeader;
PNDIS_PACKET pRxPacket = pRxBlk->pRxPacket;
MAC_TABLE_ENTRY *pEntry = NULL;
- INT op_mode = pRxBlk->OpMode;
+ UCHAR op_mode = pRxBlk->OpMode;
DBGPRINT(RT_DEBUG_FPGA, ("-->%s()\n", __FUNCTION__));
@@ -1317,7 +1320,8 @@ DBGPRINT(RT_DEBUG_FPGA, ("-->%s()\n", __FUNCTION__));
/* only PM bit of ACTION frame can be set */
if (((op_mode == OPMODE_AP) && IS_ENTRY_CLIENT(pEntry)) ||
((op_mode == OPMODE_STA) && (IS_ENTRY_TDLS(pEntry))))
- RtmpPsIndicate(pAd, pHeader->Addr2, pRxBlk->wcid, pHeader->FC.PwrMgmt);
+ RtmpPsIndicate(pAd, pHeader->Addr2, pRxBlk->wcid
+ , (UCHAR)pHeader->FC.PwrMgmt);
/*
In IEEE802.11, 11.2.1.1 STA Power Management modes,
@@ -1874,20 +1878,20 @@ INT ate_rx_done_handle(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk)
CSI_Steering = (pRxBlk->pData)[0] >> 6;
NDP_Announce = (pRxBlk->pData)[1] & 0x1;
- printk("================== Sounding request info ==================\n"
+ DBGPRINT(RT_DEBUG_OFF, ("================== Sounding request info ==================\n"
"HTC low byte = 0x%x\n"
"HTC high byte = 0x%x\n"
"CSI_Steering = %d\n"
"NDP Anouncement = %d\n",
(pRxBlk->pData)[0], (pRxBlk->pData)[1],
- CSI_Steering, NDP_Announce);
+ CSI_Steering, NDP_Announce));
/* If sounding request packet i detected, send a null packet to AP immediately */
COPY_MAC_ADDR(pATEInfo->Addr1, pHeader->Addr2);
COPY_MAC_ADDR(pATEInfo->Addr2, pHeader->Addr1);
COPY_MAC_ADDR(pATEInfo->Addr3, pAd->CommonCfg.Bssid);
- printk("=================== APSendNullFrame ===================\n"
+ DBGPRINT(RT_DEBUG_OFF, ("=================== APSendNullFrame ===================\n"
"From AP : \n"
"pATEInfo->Addr1 = %x:%x:%x:%x:%x:%x\n"
"pATEInfo->Addr2 = %x:%x:%x:%x:%x:%x\n"
@@ -1898,7 +1902,7 @@ INT ate_rx_done_handle(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk)
pATEInfo->Addr2[0], pATEInfo->Addr2[2], pATEInfo->Addr2[2],
pATEInfo->Addr2[3], pATEInfo->Addr2[4], pATEInfo->Addr2[5],
pATEInfo->Addr3[0], pATEInfo->Addr3[1], pATEInfo->Addr3[2],
- pATEInfo->Addr3[3], pATEInfo->Addr3[4], pATEInfo->Addr3[5]);
+ pATEInfo->Addr3[3], pATEInfo->Addr3[4], pATEInfo->Addr3[5]));
pATEInfo->TxCount= 1;
pATEInfo->TxPower0 = 18;
@@ -1908,7 +1912,7 @@ INT ate_rx_done_handle(RTMP_ADAPTER *pAd, RX_BLK *pRxBlk)
Set_ATE_Proc(pAd, "RXFRAME");
if (CSI_Steering >= 2 && NDP_Announce == TRUE)
- printk("================== Sounding request is found ==================\n");
+ DBGPRINT(RT_DEBUG_OFF, ("================== Sounding request is found ==================\n"));
}
}
}
@@ -2238,7 +2242,8 @@ DBGPRINT(RT_DEBUG_OFF, ("%s(): Not my bss! pRxInfo->MyBss=%d\n", __FUNCTION__,
{
UCHAR OldPwrMgmt;
- OldPwrMgmt = RtmpPsIndicate(pAd, pHeader->Addr2, pEntry->wcid, pFmeCtrl->PwrMgmt);
+ OldPwrMgmt = RtmpPsIndicate(pAd, pHeader->Addr2, pEntry->wcid
+ , (UCHAR)pFmeCtrl->PwrMgmt);
#ifdef UAPSD_SUPPORT
RTMP_PS_VIRTUAL_TIMEOUT_RESET(pEntry);
@@ -2655,7 +2660,8 @@ VOID rx_data_frm_announce(
UCHAR HS2_Header[4] = {0x50,0x6f,0x9a,0x12};
memcpy(&pRxBlk->pData[pRxBlk->DataSize], HS2_Header, 4);
memcpy(&pRxBlk->pData[pRxBlk->DataSize+4], &pEntry->hs_info, sizeof(struct _sta_hs_info));
- printk("rcv eapol start, %x:%x:%x:%x\n",pRxBlk->pData[pRxBlk->DataSize+4], pRxBlk->pData[pRxBlk->DataSize+5],pRxBlk->pData[pRxBlk->DataSize+6], pRxBlk->pData[pRxBlk->DataSize+7]);
+ DBGPRINT(RT_DEBUG_OFF, ("rcv eapol start, %x:%x:%x:%x\n", pRxBlk->pData[pRxBlk->DataSize+4]
+ , pRxBlk->pData[pRxBlk->DataSize+5], pRxBlk->pData[pRxBlk->DataSize+6], pRxBlk->pData[pRxBlk->DataSize+7]));
pRxBlk->DataSize += 8;
}
}
@@ -3542,6 +3548,11 @@ BOOLEAN rtmp_rx_done_handle(RTMP_ADAPTER *pAd)
/* get rx descriptor and data buffer */
pHeader = rxblk.pHeader;
+ if (!pHeader) {
+ DBGPRINT(RT_DEBUG_ERROR,
+ ("%s(): null rxblk.pHeader!\n", __func__));
+ continue;
+ }
#ifdef MT_MAC
if (pAd->chipCap.hif_type == HIF_MT) {
diff --git a/tx_rx/wdev_tx.c b/tx_rx/wdev_tx.c
index 259a96a..b008162 100755
--- a/tx_rx/wdev_tx.c
+++ b/tx_rx/wdev_tx.c
@@ -50,7 +50,7 @@ INT wdev_tx_pkts(NDIS_HANDLE dev_hnd, PPNDIS_PACKET pkt_list, UINT pkt_cnt, stru
{
RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)dev_hnd;
PNDIS_PACKET pPacket;
- BOOLEAN allowToSend;
+ INT allowToSend;
UCHAR wcid = MAX_LEN_OF_MAC_TABLE;
UINT Index;
#ifdef CONFIG_FPGA_MODE