summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/advansys/advansys.c19
-rw-r--r--sys/dev/advansys/advlib.c8
-rw-r--r--sys/dev/advansys/adwlib.c5
-rw-r--r--sys/dev/aha/aha.c470
-rw-r--r--sys/dev/aha/ahareg.h125
-rw-r--r--sys/dev/aic7xxx/Makefile4
-rw-r--r--sys/dev/aic7xxx/aic7xxx.c2253
-rw-r--r--sys/dev/aic7xxx/aic7xxx.h75
-rw-r--r--sys/dev/aic7xxx/aic7xxx.reg97
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq404
-rw-r--r--sys/dev/aic7xxx/aicasm_gram.y6
-rw-r--r--sys/dev/buslogic/bt.c144
-rw-r--r--sys/dev/buslogic/btreg.h11
-rw-r--r--sys/dev/dec/mcclock_if.m4
-rw-r--r--sys/dev/dpt/dpt_control.c5
-rw-r--r--sys/dev/dpt/dpt_scsi.c14
-rw-r--r--sys/dev/en/midway.c8
-rw-r--r--sys/dev/fb/fb.c421
-rw-r--r--sys/dev/fb/fbreg.h154
-rw-r--r--sys/dev/fb/splash.c208
-rw-r--r--sys/dev/fb/splashreg.h102
-rw-r--r--sys/dev/fb/vgareg.h67
-rw-r--r--sys/dev/hea/eni.c22
-rw-r--r--sys/dev/hea/eni_buffer.c10
-rw-r--r--sys/dev/hea/eni_globals.c10
-rw-r--r--sys/dev/hea/eni_if.c13
-rw-r--r--sys/dev/hea/eni_init.c10
-rw-r--r--sys/dev/hea/eni_intr.c10
-rw-r--r--sys/dev/hea/eni_receive.c10
-rw-r--r--sys/dev/hea/eni_transmit.c12
-rw-r--r--sys/dev/hea/eni_vcm.c10
-rw-r--r--sys/dev/hfa/fore_buffer.c8
-rw-r--r--sys/dev/hfa/fore_command.c11
-rw-r--r--sys/dev/hfa/fore_globals.c8
-rw-r--r--sys/dev/hfa/fore_if.c11
-rw-r--r--sys/dev/hfa/fore_init.c11
-rw-r--r--sys/dev/hfa/fore_intr.c8
-rw-r--r--sys/dev/hfa/fore_load.c28
-rw-r--r--sys/dev/hfa/fore_output.c8
-rw-r--r--sys/dev/hfa/fore_receive.c8
-rw-r--r--sys/dev/hfa/fore_stats.c8
-rw-r--r--sys/dev/hfa/fore_timer.c8
-rw-r--r--sys/dev/hfa/fore_transmit.c8
-rw-r--r--sys/dev/hfa/fore_vcm.c8
-rw-r--r--sys/dev/iicbus/if_ic.c5
-rw-r--r--sys/dev/iicbus/iic.c20
-rw-r--r--sys/dev/iicbus/iicbb.c323
-rw-r--r--sys/dev/iicbus/iicbb_if.m65
-rw-r--r--sys/dev/iicbus/iicbus.c147
-rw-r--r--sys/dev/iicbus/iicbus.h5
-rw-r--r--sys/dev/iicbus/iicbus_if.m22
-rw-r--r--sys/dev/iicbus/iiconf.c170
-rw-r--r--sys/dev/iicbus/iiconf.h40
-rw-r--r--sys/dev/iicbus/iicsmb.c128
-rw-r--r--sys/dev/isp/asm_pci.h22380
-rw-r--r--sys/dev/isp/asm_sbus.h1205
-rw-r--r--sys/dev/isp/isp.c813
-rw-r--r--sys/dev/isp/isp_freebsd.c179
-rw-r--r--sys/dev/isp/isp_freebsd.h17
-rw-r--r--sys/dev/isp/isp_freebsd_cam.h48
-rw-r--r--sys/dev/isp/ispmbox.h607
-rw-r--r--sys/dev/isp/ispreg.h5
-rw-r--r--sys/dev/isp/ispvar.h80
-rw-r--r--sys/dev/kbd/atkbd.c1313
-rw-r--r--sys/dev/kbd/atkbdc.c1017
-rw-r--r--sys/dev/kbd/atkbdcreg.h246
-rw-r--r--sys/dev/kbd/atkbdreg.h61
-rw-r--r--sys/dev/kbd/kbd.c1198
-rw-r--r--sys/dev/kbd/kbdreg.h270
-rw-r--r--sys/dev/kbd/kbdtables.h1332
-rw-r--r--sys/dev/pci/ohci_pci.c200
-rw-r--r--sys/dev/pci/uhci_pci.c228
-rw-r--r--sys/dev/ppbus/if_plip.c24
-rw-r--r--sys/dev/ppbus/immio.c24
-rw-r--r--sys/dev/ppbus/lpbb.c319
-rw-r--r--sys/dev/ppbus/nlpt.c171
-rw-r--r--sys/dev/ppbus/nlpt.h6
-rw-r--r--sys/dev/ppbus/ppb_1284.c777
-rw-r--r--sys/dev/ppbus/ppb_1284.h65
-rw-r--r--sys/dev/ppbus/ppb_base.c49
-rw-r--r--sys/dev/ppbus/ppb_msq.c22
-rw-r--r--sys/dev/ppbus/ppb_msq.h4
-rw-r--r--sys/dev/ppbus/ppbconf.c216
-rw-r--r--sys/dev/ppbus/ppbconf.h37
-rw-r--r--sys/dev/ppbus/ppi.c324
-rw-r--r--sys/dev/ppbus/pps.c5
-rw-r--r--sys/dev/ppbus/vpo.c15
-rw-r--r--sys/dev/ppbus/vpoio.c23
-rw-r--r--sys/dev/smbus/smb.c50
-rw-r--r--sys/dev/smbus/smbconf.c60
-rw-r--r--sys/dev/smbus/smbconf.h10
-rw-r--r--sys/dev/smbus/smbus.c49
-rw-r--r--sys/dev/smbus/smbus_if.m19
-rw-r--r--sys/dev/syscons/scvesactl.c143
-rw-r--r--sys/dev/syscons/scvidctl.c583
-rw-r--r--sys/dev/syscons/syscons.c4529
-rw-r--r--sys/dev/syscons/syscons.h241
-rw-r--r--sys/dev/usb/hid.c471
-rw-r--r--sys/dev/usb/hid.h91
-rw-r--r--sys/dev/usb/ohci.c2228
-rw-r--r--sys/dev/usb/ohcireg.h208
-rw-r--r--sys/dev/usb/ohcivar.h115
-rw-r--r--sys/dev/usb/ucom.c139
-rw-r--r--sys/dev/usb/ugen.c985
-rw-r--r--sys/dev/usb/uhci.c2620
-rw-r--r--sys/dev/usb/uhcireg.h191
-rw-r--r--sys/dev/usb/uhcivar.h180
-rw-r--r--sys/dev/usb/uhid.c546
-rw-r--r--sys/dev/usb/uhub.c521
-rw-r--r--sys/dev/usb/ukbd.c680
-rw-r--r--sys/dev/usb/ulpt.c451
-rw-r--r--sys/dev/usb/umodem.c142
-rw-r--r--sys/dev/usb/ums.c720
-rw-r--r--sys/dev/usb/usb.c418
-rw-r--r--sys/dev/usb/usb.h493
-rw-r--r--sys/dev/usb/usb_if.m41
-rw-r--r--sys/dev/usb/usb_mem.h92
-rw-r--r--sys/dev/usb/usb_port.h217
-rw-r--r--sys/dev/usb/usb_quirks.c94
-rw-r--r--sys/dev/usb/usb_quirks.h53
-rw-r--r--sys/dev/usb/usb_subr.c1127
-rw-r--r--sys/dev/usb/usbcdc.h141
-rw-r--r--sys/dev/usb/usbdevs.h176
-rw-r--r--sys/dev/usb/usbdevs_data.h439
-rw-r--r--sys/dev/usb/usbdi.c1294
-rw-r--r--sys/dev/usb/usbdi.h343
-rw-r--r--sys/dev/usb/usbdi_util.c511
-rw-r--r--sys/dev/usb/usbdi_util.h92
-rw-r--r--sys/dev/usb/usbdivar.h227
-rw-r--r--sys/dev/usb/usbhid.h135
-rw-r--r--sys/dev/vinum/COPYRIGHT37
-rw-r--r--sys/dev/vinum/Makefile26
-rwxr-xr-xsys/dev/vinum/makestatetext78
-rw-r--r--sys/dev/vinum/request.h220
-rw-r--r--sys/dev/vinum/statetexts.h87
-rw-r--r--sys/dev/vinum/vinum.c501
-rw-r--r--sys/dev/vinum/vinumconfig.c1730
-rw-r--r--sys/dev/vinum/vinumdaemon.c202
-rw-r--r--sys/dev/vinum/vinumext.h226
-rw-r--r--sys/dev/vinum/vinumhdr.h104
-rw-r--r--sys/dev/vinum/vinuminterrupt.c210
-rw-r--r--sys/dev/vinum/vinumio.c1032
-rw-r--r--sys/dev/vinum/vinumio.h145
-rw-r--r--sys/dev/vinum/vinumioctl.c767
-rw-r--r--sys/dev/vinum/vinumkw.h129
-rw-r--r--sys/dev/vinum/vinumlock.c171
-rw-r--r--sys/dev/vinum/vinummemory.c198
-rw-r--r--sys/dev/vinum/vinumparser.c216
-rw-r--r--sys/dev/vinum/vinumrequest.c925
-rw-r--r--sys/dev/vinum/vinumrevive.c181
-rw-r--r--sys/dev/vinum/vinumstate.c843
-rw-r--r--sys/dev/vinum/vinumstate.h206
-rw-r--r--sys/dev/vinum/vinumutil.c280
-rw-r--r--sys/dev/vinum/vinumvar.h528
-rw-r--r--sys/dev/vx/if_vx.c8
-rw-r--r--sys/dev/vx/if_vxreg.h2
156 files changed, 12321 insertions, 57645 deletions
diff --git a/sys/dev/advansys/advansys.c b/sys/dev/advansys/advansys.c
index f0588f8916372..ac47f8d7bac4e 100644
--- a/sys/dev/advansys/advansys.c
+++ b/sys/dev/advansys/advansys.c
@@ -32,7 +32,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: advansys.c,v 1.6 1998/12/04 22:54:44 archie Exp $
+ * $Id: advansys.c,v 1.3 1998/10/07 03:32:56 gibbs Exp $
*/
/*
* Ported from:
@@ -134,7 +134,7 @@ adv_name(struct adv_softc *adv)
{
static char name[10];
- snprintf(name, sizeof(name), "adv%d", adv->unit);
+ sprintf(name, "adv%d", adv->unit);
return (name);
}
@@ -554,10 +554,8 @@ adv_alloc_ccb_info(struct adv_softc *adv)
struct adv_ccb_info *cinfo;
cinfo = malloc(sizeof(*cinfo), M_DEVBUF, M_NOWAIT);
- if (cinfo == NULL) {
+ if (cinfo == NULL)
printf("%s: Can't malloc CCB info\n", adv_name(adv));
- return (NULL);
- }
cinfo->state = ACCB_FREE;
error = bus_dmamap_create(adv->buffer_dmat, /*flags*/0,
&cinfo->dmamap);
@@ -1050,9 +1048,7 @@ adv_done(struct adv_softc *adv, union ccb *ccb, u_int done_stat,
ccb->ccb_h.status = CAM_SEL_TIMEOUT;
break;
default:
- xpt_print_path(ccb->ccb_h.path);
- printf("adv_done - queue done without error, "
- "unknown host status %x\n", host_stat);
+ /* QHSTA error occurred */
/* XXX Can I get more explicit information here? */
ccb->ccb_h.status = CAM_REQ_CMP_ERR;
break;
@@ -1088,9 +1084,6 @@ adv_done(struct adv_softc *adv, union ccb *ccb, u_int done_stat,
ccb->ccb_h.status = CAM_SEL_TIMEOUT;
break;
default:
- xpt_print_path(ccb->ccb_h.path);
- printf("adv_done - queue done with error, "
- "unknown host status %x\n", host_stat);
/* XXX Can I get more explicit information here? */
ccb->ccb_h.status = CAM_REQ_CMP_ERR;
break;
@@ -1104,9 +1097,7 @@ adv_done(struct adv_softc *adv, union ccb *ccb, u_int done_stat,
break;
default:
- xpt_print_path(ccb->ccb_h.path);
- printf("adv_done - queue done with unknown status %x:%x\n",
- done_stat, host_stat);
+ printf("adv_done: Unknown done status 0x%x\n", done_stat);
ccb->ccb_h.status = CAM_REQ_CMP_ERR;
break;
}
diff --git a/sys/dev/advansys/advlib.c b/sys/dev/advansys/advlib.c
index e612974c44aa4..617266a6aa876 100644
--- a/sys/dev/advansys/advlib.c
+++ b/sys/dev/advansys/advlib.c
@@ -28,7 +28,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: advlib.c,v 1.9 1998/10/29 17:41:34 gibbs Exp $
+ * $Id: advlib.c,v 1.7 1998/10/07 03:32:57 gibbs Exp $
*/
/*
* Ported from:
@@ -1031,8 +1031,7 @@ adv_isr_chip_halted(struct adv_softc *adv)
ccb = (union ccb *) adv_read_lram_32(adv, halt_q_addr
+ ADV_SCSIQ_D_CCBPTR);
xpt_freeze_devq(ccb->ccb_h.path, /*count*/1);
- ccb->ccb_h.status |= CAM_DEV_QFRZN|CAM_SCSI_STATUS_ERROR;
- ccb->csio.scsi_status = SCSI_STATUS_QUEUE_FULL;
+ ccb->ccb_h.status |= CAM_DEV_QFRZN;
adv_abort_ccb(adv, tid_no, ADV_TIX_TO_LUN(target_ix),
/*ccb*/NULL, CAM_REQUEUE_REQ,
/*queued_only*/TRUE);
@@ -1971,6 +1970,7 @@ adv_abort_ccb(struct adv_softc *adv, int target, int lun, union ccb *ccb,
struct adv_ccb_info *cinfo;
scsiq->q_status |= QS_ABORTED;
+ scsiq->d3.done_stat = QD_ABORTED_BY_HOST;
adv_write_lram_8(adv, q_addr + ADV_SCSIQ_B_STATUS,
scsiq->q_status);
aborted_ccb = (union ccb *)scsiq->d2.ccb_ptr;
@@ -2009,6 +2009,8 @@ adv_reset_bus(struct adv_softc *adv)
count = 0;
while ((ccb = (union ccb *)LIST_FIRST(&adv->pending_ccbs)) != NULL) {
+ struct adv_ccb_info *cinfo;
+
if ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_INPROG)
ccb->ccb_h.status |= CAM_SCSI_BUS_RESET;
adv_done(adv, ccb, QD_ABORTED_BY_HOST, 0, 0, 0);
diff --git a/sys/dev/advansys/adwlib.c b/sys/dev/advansys/adwlib.c
index c727ca633b751..e2b93ac0fc2ce 100644
--- a/sys/dev/advansys/adwlib.c
+++ b/sys/dev/advansys/adwlib.c
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: adwlib.c,v 1.1 1998/10/07 03:20:46 gibbs Exp $
+ * $Id$
*/
/*
* Ported from:
@@ -43,8 +43,7 @@
* code retain the above copyright notice and this comment without
* modification.
*/
-
-#include <sys/types.h>
+#include <sys/queue.h>
#include <sys/systm.h>
#include <machine/bus_pio.h>
diff --git a/sys/dev/aha/aha.c b/sys/dev/aha/aha.c
index dcabdeaa71ad7..9109c6d4cfe3d 100644
--- a/sys/dev/aha/aha.c
+++ b/sys/dev/aha/aha.c
@@ -55,11 +55,9 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aha.c,v 1.18 1998/12/22 22:31:06 imp Exp $
+ * $Id: aha.c,v 1.9 1998/10/15 19:53:30 imp Exp $
*/
-#include "pnp.h"
-
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/malloc.h>
@@ -81,15 +79,10 @@
#include <vm/vm.h>
#include <vm/pmap.h>
-
-#if NPNP > 0
-#include <i386/isa/isa_device.h>
-#include <i386/isa/pnp.h> /* XXX pnp isn't x86 only */
-#endif
#include <dev/aha/ahareg.h>
-struct aha_softc *aha_softcs[NAHATOT];
+struct aha_softc *aha_softcs[NAHA];
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#define PRVERB(x) if (bootverbose) printf x
@@ -132,15 +125,15 @@ ahanextoutbox(struct aha_softc *aha)
/* CCB Mangement functions */
static __inline u_int32_t ahaccbvtop(struct aha_softc *aha,
- struct aha_ccb *accb);
+ struct aha_ccb *bccb);
static __inline struct aha_ccb* ahaccbptov(struct aha_softc *aha,
u_int32_t ccb_addr);
static __inline u_int32_t
-ahaccbvtop(struct aha_softc *aha, struct aha_ccb *accb)
+ahaccbvtop(struct aha_softc *aha, struct aha_ccb *bccb)
{
return (aha->aha_ccb_physbase
- + (u_int32_t)((caddr_t)accb - (caddr_t)aha->aha_ccb_array));
+ + (u_int32_t)((caddr_t)bccb - (caddr_t)aha->aha_ccb_array));
}
static __inline struct aha_ccb *
ahaccbptov(struct aha_softc *aha, u_int32_t ccb_addr)
@@ -150,10 +143,10 @@ ahaccbptov(struct aha_softc *aha, u_int32_t ccb_addr)
}
static struct aha_ccb* ahagetccb(struct aha_softc *aha);
-static __inline void ahafreeccb(struct aha_softc *aha, struct aha_ccb *accb);
+static __inline void ahafreeccb(struct aha_softc *aha, struct aha_ccb *bccb);
static void ahaallocccbs(struct aha_softc *aha);
static bus_dmamap_callback_t ahaexecuteccb;
-static void ahadone(struct aha_softc *aha, struct aha_ccb *accb,
+static void ahadone(struct aha_softc *aha, struct aha_ccb *bccb,
aha_mbi_comp_code_t comp_code);
/* Host adapter command functions */
@@ -170,7 +163,7 @@ static void ahafetchtransinfo(struct aha_softc *aha,
struct ccb_trans_settings *cts);
/* CAM SIM entry points */
-#define ccb_accb_ptr spriv_ptr0
+#define ccb_bccb_ptr spriv_ptr0
#define ccb_aha_ptr spriv_ptr1
static void ahaaction(struct cam_sim *sim, union ccb *ccb);
static void ahapoll(struct cam_sim *sim);
@@ -187,26 +180,12 @@ u_long aha_unit = 0;
*/
struct aha_isa_port aha_isa_ports[] =
{
- { 0x130, 0, 4 },
- { 0x134, 0, 5 },
- { 0x230, 0, 2 },
- { 0x234, 0, 3 },
- { 0x330, 0, 0 },
- { 0x334, 0, 1 }
-};
-
-/*
- * I/O ports listed in the order enumerated by the
- * card for certain op codes.
- */
-u_int16_t aha_board_ports[] =
-{
- 0x330,
- 0x334,
- 0x230,
- 0x234,
- 0x130,
- 0x134
+ { 0x330, 0 },
+ { 0x334, 0 },
+ { 0x230, 0 },
+ { 0x234, 0 },
+ { 0x130, 0 },
+ { 0x134, 0 }
};
/* Exported functions */
@@ -216,7 +195,7 @@ aha_alloc(int unit, bus_space_tag_t tag, bus_space_handle_t bsh)
struct aha_softc *aha;
if (unit != AHA_TEMP_UNIT) {
- if (unit >= NAHATOT) {
+ if (unit >= NAHA) {
printf("aha: unit number (%d) too high\n", unit);
return NULL;
}
@@ -242,8 +221,6 @@ aha_alloc(int unit, bus_space_tag_t tag, bus_space_handle_t bsh)
aha->unit = unit;
aha->tag = tag;
aha->bsh = bsh;
- aha->ccb_sg_opcode = INITIATOR_SG_CCB_WRESID;
- aha->ccb_ccb_opcode = INITIATOR_CCB_WRESID;
if (aha->unit != AHA_TEMP_UNIT) {
aha_softcs[unit] = aha;
@@ -315,26 +292,13 @@ aha_probe(struct aha_softc* aha)
status = aha_inb(aha, STATUS_REG);
if ((status == 0)
|| (status & (DIAG_ACTIVE|CMD_REG_BUSY|
- STATUS_REG_RSVD)) != 0) {
- PRVERB(("%s: status reg test failed %x\n", aha_name(aha),
- status));
+ STATUS_REG_RSVD|CMD_INVALID)) != 0) {
return (ENXIO);
}
intstat = aha_inb(aha, INTSTAT_REG);
if ((intstat & INTSTAT_REG_RSVD) != 0) {
- PRVERB(("%s: Failed Intstat Reg Test\n", aha_name(aha)));
- return (ENXIO);
- }
-
- /*
- * Looking good so far. Final test is to reset the
- * adapter and fetch the board ID and ensure we aren't
- * looking at a BusLogic.
- */
- if ((error = ahareset(aha, /*hard_reset*/TRUE)) != 0) {
- if (bootverbose)
- printf("%s: Failed Reset\n", aha_name(aha));
+ printf("%s: Failed Intstat Reg Test\n", aha_name(aha));
return (ENXIO);
}
@@ -342,7 +306,7 @@ aha_probe(struct aha_softc* aha)
* Get the board ID. We use this to see if we're dealing with
* a buslogic card or a aha card (or clone).
*/
- error = aha_cmd(aha, AOP_INQUIRE_BOARD_ID, NULL, /*parmlen*/0,
+ error = aha_cmd(aha, BOP_INQUIRE_BOARD_ID, NULL, /*parmlen*/0,
(u_int8_t*)&board_id, sizeof(board_id),
DEFAULT_CMD_TIMEOUT);
if (error != 0) {
@@ -360,29 +324,12 @@ aha_probe(struct aha_softc* aha)
* this register, and return 0xff, while buslogic cards will return
* something different.
*
- * It appears that for reasons unknow, for the for the
- * aha-1542B cards, we need to wait a little bit before trying
- * to read the geometry register. I picked 10ms since we have
- * reports that a for loop to 1000 did the trick, and this
- * errs on the side of conservatism. Besides, no one will
- * notice a 10mS delay here, even the 1542B card users :-)
- *
- * Some compatible cards return 0 here.
- *
- * XXX I'm not sure how this will impact other cloned cards
- *
- * This really should be replaced with the esetup command, since
- * that appears to be more reliable.
+ * XXX I'm not sure how this will impact other cloned cards.
*/
if (aha->boardid <= 0x42) {
- /* Wait 10ms before reading */
- DELAY(10000);
status = aha_inb(aha, GEOMETRY_REG);
- if (status != 0xff && status != 0x00) {
- PRVERB(("%s: Geometry Register test failed\n",
- aha_name(aha)));
+ if (status != 0xff)
return (ENXIO);
- }
}
return (0);
@@ -402,31 +349,31 @@ aha_fetch_adapter_info(struct aha_softc *aha)
switch (aha->boardid) {
case BOARD_1540_16HEAD_BIOS:
- snprintf(aha->model, sizeof(aha->model), "1540 16 head BIOS");
+ strcpy(aha->model, "1540 16 head BIOS");
break;
case BOARD_1540_64HEAD_BIOS:
- snprintf(aha->model, sizeof(aha->model), "1540 64 head BIOS");
+ strcpy(aha->model, "1540 64 head BIOS");
break;
case BOARD_1542:
- snprintf(aha->model, sizeof(aha->model), "1540/1542 64 head BIOS");
+ strcpy(aha->model, "1540/1542 64 head BIOS");
break;
case BOARD_1640:
- snprintf(aha->model, sizeof(aha->model), "1640");
+ strcpy(aha->model, "1640");
break;
case BOARD_1740:
- snprintf(aha->model, sizeof(aha->model), "1740A/1742A/1744");
+ strcpy(aha->model, "1740A/1742A/1744");
break;
case BOARD_1542C:
- snprintf(aha->model, sizeof(aha->model), "1542C");
+ strcpy(aha->model, "1542C");
break;
case BOARD_1542CF:
- snprintf(aha->model, sizeof(aha->model), "1542CF");
+ strcpy(aha->model, "1542CF");
break;
case BOARD_1542CP:
- snprintf(aha->model, sizeof(aha->model), "1542CP");
+ strcpy(aha->model, "1542CP");
break;
default:
- snprintf(aha->model, sizeof(aha->model), "Unknown");
+ strcpy(aha->model, "Unknown");
break;
}
/*
@@ -442,24 +389,24 @@ aha_fetch_adapter_info(struct aha_softc *aha)
(aha->boardid == 0x41
&& aha->fw_major == 0x31 &&
aha->fw_minor >= 0x34)) {
- error = aha_cmd(aha, AOP_RETURN_EXT_BIOS_INFO, NULL,
+ error = aha_cmd(aha, BOP_RETURN_EXT_BIOS_INFO, NULL,
/*paramlen*/0, (u_char *)&extbios, sizeof(extbios),
DEFAULT_CMD_TIMEOUT);
- error = aha_cmd(aha, AOP_MBOX_IF_ENABLE, (u_int8_t *)&extbios,
+ error = aha_cmd(aha, BOP_MBOX_IF_ENABLE, (u_int8_t *)&extbios,
/*paramlen*/2, NULL, 0, DEFAULT_CMD_TIMEOUT);
}
if (aha->boardid < 0x41)
- printf("%s: Warning: aha-1542A won't likely work.\n",
+ printf("%s: Likely aha 1542A, which might not work properly\n",
aha_name(aha));
- aha->max_sg = 17; /* Need >= 17 to do 64k I/O */
+ aha->max_sg = 17; /* Need 17 to do 64k I/O */
aha->diff_bus = 0;
aha->extended_lun = 0;
aha->extended_trans = 0;
aha->max_ccbs = 16;
/* Determine Sync/Wide/Disc settings */
length_param = sizeof(setup_info);
- error = aha_cmd(aha, AOP_INQUIRE_SETUP_INFO, &length_param,
+ error = aha_cmd(aha, BOP_INQUIRE_SETUP_INFO, &length_param,
/*paramlen*/1, (u_int8_t*)&setup_info,
sizeof(setup_info), DEFAULT_CMD_TIMEOUT);
if (error != 0) {
@@ -477,7 +424,7 @@ aha_fetch_adapter_info(struct aha_softc *aha)
/* Determine our SCSI ID */
- error = aha_cmd(aha, AOP_INQUIRE_CONFIG, NULL, /*parmlen*/0,
+ error = aha_cmd(aha, BOP_INQUIRE_CONFIG, NULL, /*parmlen*/0,
(u_int8_t*)&config_data, sizeof(config_data),
DEFAULT_CMD_TIMEOUT);
if (error != 0) {
@@ -634,8 +581,8 @@ aha_attach(struct aha_softc *aha)
struct cam_devq *devq;
/*
- * We don't do tagged queueing, since the aha cards don't
- * support it.
+ * We reserve 1 ccb for error recovery, so don't
+ * tell the XPT about it.
*/
tagged_dev_openings = 0;
@@ -677,7 +624,7 @@ aha_name(struct aha_softc *aha)
{
static char name[10];
- snprintf(name, sizeof(name), "aha%d", aha->unit);
+ sprintf(name, "aha%d", aha->unit);
return (name);
}
@@ -702,7 +649,7 @@ void
aha_mark_probed_bio(isa_compat_io_t port)
{
if (port < BIO_DISABLED)
- aha_mark_probed_iop(aha_board_ports[port]);
+ aha_isa_ports[port].probed = 1;
}
void
@@ -718,43 +665,6 @@ aha_mark_probed_iop(u_int ioport)
}
}
-void
-aha_find_probe_range(int ioport, int *port_index, int *max_port_index)
-{
- if (ioport > 0) {
- int i;
-
- for (i = 0;i < AHA_NUM_ISAPORTS; i++)
- if (ioport <= aha_isa_ports[i].addr)
- break;
- if ((i >= AHA_NUM_ISAPORTS)
- || (ioport != aha_isa_ports[i].addr)) {
- printf("\n"
-"aha_isa_probe: Invalid baseport of 0x%x specified.\n"
-"aha_isa_probe: Nearest valid baseport is 0x%x.\n"
-"aha_isa_probe: Failing probe.\n",
- ioport,
- (i < AHA_NUM_ISAPORTS)
- ? aha_isa_ports[i].addr
- : aha_isa_ports[AHA_NUM_ISAPORTS - 1].addr);
- *port_index = *max_port_index = -1;
- return;
- }
- *port_index = *max_port_index = aha_isa_ports[i].bio;
- } else {
- *port_index = 0;
- *max_port_index = AHA_NUM_ISAPORTS - 1;
- }
-}
-
-int
-aha_iop_from_bio(isa_compat_io_t bio_index)
-{
- if (bio_index >= 0 && bio_index < AHA_NUM_ISAPORTS)
- return (aha_board_ports[bio_index]);
- return (-1);
-}
-
static void
ahaallocccbs(struct aha_softc *aha)
{
@@ -793,7 +703,7 @@ ahaallocccbs(struct aha_softc *aha)
next_ccb->sg_list = segs;
next_ccb->sg_list_phys = physaddr;
- next_ccb->flags = ACCB_FREE;
+ next_ccb->flags = BCCB_FREE;
error = bus_dmamap_create(aha->buffer_dmat, /*flags*/0,
&next_ccb->dmamap);
if (error != 0)
@@ -806,54 +716,50 @@ ahaallocccbs(struct aha_softc *aha)
}
/* Reserve a CCB for error recovery */
- if (aha->recovery_accb == NULL) {
- aha->recovery_accb = SLIST_FIRST(&aha->free_aha_ccbs);
+ if (aha->recovery_bccb == NULL) {
+ aha->recovery_bccb = SLIST_FIRST(&aha->free_aha_ccbs);
SLIST_REMOVE_HEAD(&aha->free_aha_ccbs, links);
}
}
static __inline void
-ahafreeccb(struct aha_softc *aha, struct aha_ccb *accb)
+ahafreeccb(struct aha_softc *aha, struct aha_ccb *bccb)
{
int s;
s = splcam();
- if ((accb->flags & ACCB_ACTIVE) != 0)
- LIST_REMOVE(&accb->ccb->ccb_h, sim_links.le);
+ if ((bccb->flags & BCCB_ACTIVE) != 0)
+ LIST_REMOVE(&bccb->ccb->ccb_h, sim_links.le);
if (aha->resource_shortage != 0
- && (accb->ccb->ccb_h.status & CAM_RELEASE_SIMQ) == 0) {
- accb->ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
+ && (bccb->ccb->ccb_h.status & CAM_RELEASE_SIMQ) == 0) {
+ bccb->ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
aha->resource_shortage = FALSE;
}
- accb->flags = ACCB_FREE;
- SLIST_INSERT_HEAD(&aha->free_aha_ccbs, accb, links);
- aha->active_ccbs--;
+ bccb->flags = BCCB_FREE;
+ SLIST_INSERT_HEAD(&aha->free_aha_ccbs, bccb, links);
splx(s);
}
static struct aha_ccb*
ahagetccb(struct aha_softc *aha)
{
- struct aha_ccb* accb;
+ struct aha_ccb* bccb;
int s;
s = splcam();
- if ((accb = SLIST_FIRST(&aha->free_aha_ccbs)) != NULL) {
+ if ((bccb = SLIST_FIRST(&aha->free_aha_ccbs)) != NULL) {
SLIST_REMOVE_HEAD(&aha->free_aha_ccbs, links);
- aha->active_ccbs++;
} else if (aha->num_ccbs < aha->max_ccbs) {
ahaallocccbs(aha);
- accb = SLIST_FIRST(&aha->free_aha_ccbs);
- if (accb == NULL)
- printf("%s: Can't malloc ACCB\n", aha_name(aha));
- else {
+ bccb = SLIST_FIRST(&aha->free_aha_ccbs);
+ if (bccb == NULL)
+ printf("%s: Can't malloc BCCB\n", aha_name(aha));
+ else
SLIST_REMOVE_HEAD(&aha->free_aha_ccbs, links);
- aha->active_ccbs++;
- }
}
splx(s);
- return (accb);
+ return (bccb);
}
static void
@@ -870,13 +776,13 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
case XPT_SCSI_IO: /* Execute the requested I/O operation */
case XPT_RESET_DEV: /* Bus Device Reset the specified SCSI device */
{
- struct aha_ccb *accb;
+ struct aha_ccb *bccb;
struct aha_hccb *hccb;
/*
- * get a accb to use.
+ * get a bccb to use.
*/
- if ((accb = ahagetccb(aha)) == NULL) {
+ if ((bccb = ahagetccb(aha)) == NULL) {
int s;
s = splcam();
@@ -888,17 +794,17 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
return;
}
- hccb = &accb->hccb;
+ hccb = &bccb->hccb;
/*
- * So we can find the ACCB when an abort is requested
+ * So we can find the BCCB when an abort is requested
*/
- accb->ccb = ccb;
- ccb->ccb_h.ccb_accb_ptr = accb;
+ bccb->ccb = ccb;
+ ccb->ccb_h.ccb_bccb_ptr = bccb;
ccb->ccb_h.ccb_aha_ptr = aha;
/*
- * Put all the arguments for the xfer in the accb
+ * Put all the arguments for the xfer in the bccb
*/
hccb->target = ccb->ccb_h.target_id;
hccb->lun = ccb->ccb_h.target_lun;
@@ -911,13 +817,13 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
csio = &ccb->csio;
ccbh = &csio->ccb_h;
- hccb->opcode = aha->ccb_ccb_opcode;
+ hccb->opcode = INITIATOR_CCB_WRESID;
hccb->datain = (ccb->ccb_h.flags & CAM_DIR_IN) != 0;
hccb->dataout = (ccb->ccb_h.flags & CAM_DIR_OUT) != 0;
hccb->cmd_len = csio->cdb_len;
if (hccb->cmd_len > sizeof(hccb->scsi_cdb)) {
ccb->ccb_h.status = CAM_REQ_INVALID;
- ahafreeccb(aha, accb);
+ ahafreeccb(aha, bccb);
xpt_done(ccb);
return;
}
@@ -929,7 +835,7 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
} else {
/* I guess I could map it in... */
ccbh->status = CAM_REQ_INVALID;
- ahafreeccb(aha, accb);
+ ahafreeccb(aha, bccb);
xpt_done(ccb);
return;
}
@@ -955,11 +861,11 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
s = splsoftvm();
error = bus_dmamap_load(
aha->buffer_dmat,
- accb->dmamap,
+ bccb->dmamap,
csio->data_ptr,
csio->dxfer_len,
ahaexecuteccb,
- accb,
+ bccb,
/*flags*/0);
if (error == EINPROGRESS) {
/*
@@ -982,7 +888,7 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
seg.ds_addr =
(bus_addr_t)csio->data_ptr;
seg.ds_len = csio->dxfer_len;
- ahaexecuteccb(accb, &seg, 1, 0);
+ ahaexecuteccb(bccb, &seg, 1, 0);
}
} else {
struct bus_dma_segment *segs;
@@ -1000,11 +906,11 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
/* Just use the segments provided */
segs = (struct bus_dma_segment *)
csio->data_ptr;
- ahaexecuteccb(accb, segs,
+ ahaexecuteccb(bccb, segs,
csio->sglist_cnt, 0);
}
} else {
- ahaexecuteccb(accb, NULL, 0, 0);
+ ahaexecuteccb(bccb, NULL, 0, 0);
}
} else {
hccb->opcode = INITIATOR_BUS_DEV_RESET;
@@ -1013,7 +919,7 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
hccb->dataout = TRUE;
hccb->cmd_len = 0;
hccb->sense_len = 0;
- ahaexecuteccb(accb, NULL, 0, 0);
+ ahaexecuteccb(bccb, NULL, 0, 0);
}
break;
}
@@ -1138,14 +1044,14 @@ ahaaction(struct cam_sim *sim, union ccb *ccb)
static void
ahaexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
{
- struct aha_ccb *accb;
+ struct aha_ccb *bccb;
union ccb *ccb;
struct aha_softc *aha;
int s;
u_int32_t paddr;
- accb = (struct aha_ccb *)arg;
- ccb = accb->ccb;
+ bccb = (struct aha_ccb *)arg;
+ ccb = bccb->ccb;
aha = (struct aha_softc *)ccb->ccb_h.ccb_aha_ptr;
if (error != 0) {
@@ -1156,7 +1062,7 @@ ahaexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
xpt_freeze_devq(ccb->ccb_h.path, /*count*/1);
ccb->ccb_h.status = CAM_REQ_TOO_BIG|CAM_DEV_QFRZN;
}
- ahafreeccb(aha, accb);
+ ahafreeccb(aha, bccb);
xpt_done(ccb);
return;
}
@@ -1169,7 +1075,7 @@ ahaexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
end_seg = dm_segs + nseg;
/* Copy the segments into our SG list */
- sg = accb->sg_list;
+ sg = bccb->sg_list;
while (dm_segs < end_seg) {
ahautoa24(dm_segs->ds_len, sg->len);
ahautoa24(dm_segs->ds_addr, sg->addr);
@@ -1178,13 +1084,13 @@ ahaexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
}
if (nseg > 1) {
- accb->hccb.opcode = aha->ccb_sg_opcode;
+ bccb->hccb.opcode = INITIATOR_SG_CCB_WRESID;
ahautoa24((sizeof(aha_sg_t) * nseg),
- accb->hccb.data_len);
- ahautoa24(accb->sg_list_phys, accb->hccb.data_addr);
+ bccb->hccb.data_len);
+ ahautoa24(bccb->sg_list_phys, bccb->hccb.data_addr);
} else {
- bcopy(accb->sg_list->len, accb->hccb.data_len, 3);
- bcopy(accb->sg_list->addr, accb->hccb.data_addr, 3);
+ bcopy(bccb->sg_list->len, bccb->hccb.data_len, 3);
+ bcopy(bccb->sg_list->addr, bccb->hccb.data_addr, 3);
}
if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN)
@@ -1192,12 +1098,12 @@ ahaexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
else
op = BUS_DMASYNC_PREWRITE;
- bus_dmamap_sync(aha->buffer_dmat, accb->dmamap, op);
+ bus_dmamap_sync(aha->buffer_dmat, bccb->dmamap, op);
} else {
- accb->hccb.opcode = INITIATOR_CCB;
- ahautoa24(0, accb->hccb.data_len);
- ahautoa24(0, accb->hccb.data_addr);
+ bccb->hccb.opcode = INITIATOR_CCB_WRESID;
+ ahautoa24(0, bccb->hccb.data_len);
+ ahautoa24(0, bccb->hccb.data_addr);
}
s = splcam();
@@ -1208,47 +1114,28 @@ ahaexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
*/
if (ccb->ccb_h.status != CAM_REQ_INPROG) {
if (nseg != 0)
- bus_dmamap_unload(aha->buffer_dmat, accb->dmamap);
- ahafreeccb(aha, accb);
+ bus_dmamap_unload(aha->buffer_dmat, bccb->dmamap);
+ ahafreeccb(aha, bccb);
xpt_done(ccb);
splx(s);
return;
}
- accb->flags = ACCB_ACTIVE;
+ bccb->flags = BCCB_ACTIVE;
ccb->ccb_h.status |= CAM_SIM_QUEUED;
LIST_INSERT_HEAD(&aha->pending_ccbs, &ccb->ccb_h, sim_links.le);
ccb->ccb_h.timeout_ch =
- timeout(ahatimeout, (caddr_t)accb,
+ timeout(ahatimeout, (caddr_t)bccb,
(ccb->ccb_h.timeout * hz) / 1000);
/* Tell the adapter about this command */
- if (aha->cur_outbox->action_code != AMBO_FREE) {
- /*
- * We should never encounter a busy mailbox.
- * If we do, warn the user, and treat it as
- * a resource shortage. If the controller is
- * hung, one of the pending transactions will
- * timeout causing us to start recovery operations.
- */
- printf("%s: Encountered busy mailbox with %d out of %d "
- "commands active!!!", aha_name(aha), aha->active_ccbs,
- aha->max_ccbs);
- untimeout(ahatimeout, accb, ccb->ccb_h.timeout_ch);
- if (nseg != 0)
- bus_dmamap_unload(aha->buffer_dmat, accb->dmamap);
- ahafreeccb(aha, accb);
- aha->resource_shortage = TRUE;
- xpt_freeze_simq(aha->sim, /*count*/1);
- ccb->ccb_h.status = CAM_REQUEUE_REQ;
- xpt_done(ccb);
- return;
- }
- paddr = ahaccbvtop(aha, accb);
+ paddr = ahaccbvtop(aha, bccb);
ahautoa24(paddr, aha->cur_outbox->ccb_addr);
- aha->cur_outbox->action_code = AMBO_START;
- aha_outb(aha, COMMAND_REG, AOP_START_MBOX);
+ if (aha->cur_outbox->action_code != BMBO_FREE)
+ panic("%s: Too few mailboxes or to many ccbs???", aha_name(aha));
+ aha->cur_outbox->action_code = BMBO_START;
+ aha_outb(aha, COMMAND_REG, BOP_START_MBOX);
ahanextoutbox(aha);
splx(s);
@@ -1270,13 +1157,13 @@ aha_intr(void *arg)
aha_outb(aha, CONTROL_REG, RESET_INTR);
if ((intstat & IMB_LOADED) != 0) {
- while (aha->cur_inbox->comp_code != AMBI_FREE) {
+ while (aha->cur_inbox->comp_code != BMBI_FREE) {
u_int32_t paddr;
paddr = aha_a24tou(aha->cur_inbox->ccb_addr);
ahadone(aha,
ahaccbptov(aha, paddr),
aha->cur_inbox->comp_code);
- aha->cur_inbox->comp_code = AMBI_FREE;
+ aha->cur_inbox->comp_code = BMBI_FREE;
ahanextinbox(aha);
}
}
@@ -1288,17 +1175,17 @@ aha_intr(void *arg)
}
static void
-ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_code)
+ahadone(struct aha_softc *aha, struct aha_ccb *bccb, aha_mbi_comp_code_t comp_code)
{
union ccb *ccb;
struct ccb_scsiio *csio;
- ccb = accb->ccb;
- csio = &accb->ccb->csio;
+ ccb = bccb->ccb;
+ csio = &bccb->ccb->csio;
- if ((accb->flags & ACCB_ACTIVE) == 0) {
- printf("%s: ahadone - Attempt to free non-active ACCB %p\n",
- aha_name(aha), (void *)accb);
+ if ((bccb->flags & BCCB_ACTIVE) == 0) {
+ printf("%s: ahadone - Attempt to free non-active BCCB %p\n",
+ aha_name(aha), (void *)bccb);
return;
}
@@ -1309,13 +1196,13 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
op = BUS_DMASYNC_POSTREAD;
else
op = BUS_DMASYNC_POSTWRITE;
- bus_dmamap_sync(aha->buffer_dmat, accb->dmamap, op);
- bus_dmamap_unload(aha->buffer_dmat, accb->dmamap);
+ bus_dmamap_sync(aha->buffer_dmat, bccb->dmamap, op);
+ bus_dmamap_unload(aha->buffer_dmat, bccb->dmamap);
}
- if (accb == aha->recovery_accb) {
+ if (bccb == aha->recovery_bccb) {
/*
- * The recovery ACCB does not have a CCB associated
+ * The recovery BCCB does not have a CCB associated
* with it, so short circuit the normal error handling.
* We now traverse our list of pending CCBs and process
* any that were terminated by the recovery CCBs action.
@@ -1329,7 +1216,7 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
/* Notify all clients that a BDR occured */
error = xpt_create_path(&path, /*periph*/NULL,
cam_sim_path(aha->sim),
- accb->hccb.target,
+ bccb->hccb.target,
CAM_LUN_WILDCARD);
if (error == CAM_REQ_CMP)
@@ -1337,16 +1224,16 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
ccb_h = LIST_FIRST(&aha->pending_ccbs);
while (ccb_h != NULL) {
- struct aha_ccb *pending_accb;
+ struct aha_ccb *pending_bccb;
- pending_accb = (struct aha_ccb *)ccb_h->ccb_accb_ptr;
- if (pending_accb->hccb.target == accb->hccb.target) {
- pending_accb->hccb.ahastat = AHASTAT_HA_BDR;
+ pending_bccb = (struct aha_ccb *)ccb_h->ccb_bccb_ptr;
+ if (pending_bccb->hccb.target == bccb->hccb.target) {
+ pending_bccb->hccb.ahastat = AHASTAT_HA_BDR;
ccb_h = LIST_NEXT(ccb_h, sim_links.le);
- ahadone(aha, pending_accb, AMBI_ERROR);
+ ahadone(aha, pending_bccb, BMBI_ERROR);
} else {
ccb_h->timeout_ch =
- timeout(ahatimeout, (caddr_t)pending_accb,
+ timeout(ahatimeout, (caddr_t)pending_bccb,
(ccb_h->timeout * hz) / 1000);
ccb_h = LIST_NEXT(ccb_h, sim_links.le);
}
@@ -1355,35 +1242,29 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
return;
}
- untimeout(ahatimeout, accb, ccb->ccb_h.timeout_ch);
+ untimeout(ahatimeout, bccb, ccb->ccb_h.timeout_ch);
switch (comp_code) {
- case AMBI_FREE:
+ case BMBI_FREE:
printf("%s: ahadone - CCB completed with free status!\n",
aha_name(aha));
break;
- case AMBI_NOT_FOUND:
+ case BMBI_NOT_FOUND:
printf("%s: ahadone - CCB Abort failed to find CCB\n",
aha_name(aha));
break;
- case AMBI_ABORT:
- case AMBI_ERROR:
+ case BMBI_ABORT:
+ case BMBI_ERROR:
/* An error occured */
- if (accb->hccb.opcode < INITIATOR_CCB_WRESID)
- csio->resid = 0;
- else
- csio->resid = aha_a24tou(accb->hccb.data_len);
- switch(accb->hccb.ahastat) {
+ switch(bccb->hccb.ahastat) {
case AHASTAT_DATARUN_ERROR:
- {
- if (csio->resid <= 0) {
+ if (bccb->hccb.data_len <= 0) {
csio->ccb_h.status = CAM_DATA_RUN_ERR;
break;
}
/* FALLTHROUGH */
- }
case AHASTAT_NOERROR:
- csio->scsi_status = accb->hccb.sdstat;
+ csio->scsi_status = bccb->hccb.sdstat;
csio->ccb_h.status |= CAM_SCSI_STATUS_ERROR;
switch(csio->scsi_status) {
case SCSI_STATUS_CHECK_COND:
@@ -1393,10 +1274,10 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
* The aha writes the sense data at different
* offsets based on the scsi cmd len
*/
- bcopy((caddr_t) &accb->hccb.scsi_cdb +
- accb->hccb.cmd_len,
+ bcopy((caddr_t) &bccb->hccb.scsi_cdb +
+ bccb->hccb.cmd_len,
(caddr_t) &csio->sense_data,
- accb->hccb.sense_len);
+ bccb->hccb.sense_len);
break;
default:
break;
@@ -1404,6 +1285,7 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
csio->ccb_h.status = CAM_REQ_CMP;
break;
}
+ csio->resid = aha_a24tou(bccb->hccb.data_len);
break;
case AHASTAT_SELTIMEOUT:
csio->ccb_h.status = CAM_SEL_TIMEOUT;
@@ -1418,16 +1300,8 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
panic("%s: Inavlid Action code", aha_name(aha));
break;
case AHASTAT_INVALID_OPCODE:
- if (accb->hccb.opcode < INITIATOR_CCB_WRESID)
- panic("%s: Invalid CCB Opcode %x hccb = %p",
- aha_name(aha), accb->hccb.opcode,
- &accb->hccb);
- printf("%s: AHA-1540A detected, compensating\n",
- aha_name(aha));
- aha->ccb_sg_opcode = INITIATOR_SG_CCB;
- aha->ccb_ccb_opcode = INITIATOR_CCB;
- xpt_freeze_devq(ccb->ccb_h.path, /*count*/1);
- csio->ccb_h.status = CAM_REQUEUE_REQ;
+ panic("%s: Inavlid CCB Opcode code %x hccb = %p",
+ aha_name(aha), bccb->hccb.opcode, &bccb->hccb);
break;
case AHASTAT_LINKED_CCB_LUN_MISMATCH:
/* We don't even support linked commands... */
@@ -1438,11 +1312,11 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
break;
case AHASTAT_HA_SCSI_BUS_RESET:
if ((csio->ccb_h.status & CAM_STATUS_MASK)
- != CAM_CMD_TIMEOUT)
+ != CAM_CMD_TIMEOUT)
csio->ccb_h.status = CAM_SCSI_BUS_RESET;
break;
case AHASTAT_HA_BDR:
- if ((accb->flags & ACCB_DEVICE_RESET) == 0)
+ if ((bccb->flags & BCCB_DEVICE_RESET) == 0)
csio->ccb_h.status = CAM_BDR_SENT;
else
csio->ccb_h.status = CAM_CMD_TIMEOUT;
@@ -1452,19 +1326,18 @@ ahadone(struct aha_softc *aha, struct aha_ccb *accb, aha_mbi_comp_code_t comp_co
xpt_freeze_devq(csio->ccb_h.path, /*count*/1);
csio->ccb_h.status |= CAM_DEV_QFRZN;
}
- if ((accb->flags & ACCB_RELEASE_SIMQ) != 0)
+ if ((bccb->flags & BCCB_RELEASE_SIMQ) != 0)
ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
- ahafreeccb(aha, accb);
+ ahafreeccb(aha, bccb);
xpt_done(ccb);
break;
- case AMBI_OK:
+ case BMBI_OK:
/* All completed without incident */
/* XXX DO WE NEED TO COPY SENSE BYTES HERE???? XXX */
- /* I don't think so since it works???? */
ccb->ccb_h.status |= CAM_REQ_CMP;
- if ((accb->flags & ACCB_RELEASE_SIMQ) != 0)
+ if ((bccb->flags & BCCB_RELEASE_SIMQ) != 0)
ccb->ccb_h.status |= CAM_RELEASE_SIMQ;
- ahafreeccb(aha, accb);
+ ahafreeccb(aha, bccb);
xpt_done(ccb);
break;
}
@@ -1552,11 +1425,11 @@ ahareset(struct aha_softc* aha, int hard_reset)
* Perform completion processing for all outstanding CCBs.
*/
while ((ccb_h = LIST_FIRST(&aha->pending_ccbs)) != NULL) {
- struct aha_ccb *pending_accb;
+ struct aha_ccb *pending_bccb;
- pending_accb = (struct aha_ccb *)ccb_h->ccb_accb_ptr;
- pending_accb->hccb.ahastat = AHASTAT_HA_SCSI_BUS_RESET;
- ahadone(aha, pending_accb, AMBI_ERROR);
+ pending_bccb = (struct aha_ccb *)ccb_h->ccb_bccb_ptr;
+ pending_bccb->hccb.ahastat = AHASTAT_HA_SCSI_BUS_RESET;
+ ahadone(aha, pending_bccb, BMBI_ERROR);
}
return (0);
@@ -1575,13 +1448,11 @@ aha_cmd(struct aha_softc *aha, aha_op_t opcode, u_int8_t *params,
u_int intstat;
u_int reply_buf_size;
int s;
- int cmd_complete;
/* No data returned to start */
reply_buf_size = reply_len;
reply_len = 0;
intstat = 0;
- cmd_complete = 0;
aha->command_cmp = 0;
/*
@@ -1617,13 +1488,10 @@ aha_cmd(struct aha_softc *aha, aha_op_t opcode, u_int8_t *params,
status = aha_inb(aha, STATUS_REG);
intstat = aha_inb(aha, INTSTAT_REG);
if ((intstat & (INTR_PENDING|CMD_COMPLETE))
- == (INTR_PENDING|CMD_COMPLETE)) {
- cmd_complete = 1;
+ == (INTR_PENDING|CMD_COMPLETE))
break;
- }
if (aha->command_cmp != 0) {
status = aha->latched_status;
- cmd_complete = 1;
break;
}
if ((status & DATAIN_REG_READY) != 0)
@@ -1643,7 +1511,7 @@ aha_cmd(struct aha_softc *aha, aha_op_t opcode, u_int8_t *params,
* For all other commands, we wait for any output data
* and the final comand completion interrupt.
*/
- while (cmd_complete == 0 && --cmd_timeout) {
+ while (--cmd_timeout) {
status = aha_inb(aha, STATUS_REG);
intstat = aha_inb(aha, INTSTAT_REG);
@@ -1741,7 +1609,7 @@ ahainitmboxes(struct aha_softc *aha)
/* Tell the adapter about them */
init_mbox.num_mboxes = aha->num_boxes;
ahautoa24(aha->mailbox_physbase, init_mbox.base_addr);
- error = aha_cmd(aha, AOP_INITIALIZE_MBOX, (u_int8_t *)&init_mbox,
+ error = aha_cmd(aha, BOP_INITIALIZE_MBOX, (u_int8_t *)&init_mbox,
/*parmlen*/sizeof(init_mbox), /*reply_buf*/NULL,
/*reply_len*/0, DEFAULT_CMD_TIMEOUT);
@@ -1774,7 +1642,7 @@ ahafetchtransinfo(struct aha_softc *aha, struct ccb_trans_settings* cts)
* the sync info for older models.
*/
param = sizeof(setup_info);
- error = aha_cmd(aha, AOP_INQUIRE_SETUP_INFO, &param, /*paramlen*/1,
+ error = aha_cmd(aha, BOP_INQUIRE_SETUP_INFO, &param, /*paramlen*/1,
(u_int8_t*)&setup_info, sizeof(setup_info),
DEFAULT_CMD_TIMEOUT);
@@ -1844,24 +1712,24 @@ ahapoll(struct cam_sim *sim)
void
ahatimeout(void *arg)
{
- struct aha_ccb *accb;
+ struct aha_ccb *bccb;
union ccb *ccb;
struct aha_softc *aha;
int s;
u_int32_t paddr;
- accb = (struct aha_ccb *)arg;
- ccb = accb->ccb;
+ bccb = (struct aha_ccb *)arg;
+ ccb = bccb->ccb;
aha = (struct aha_softc *)ccb->ccb_h.ccb_aha_ptr;
xpt_print_path(ccb->ccb_h.path);
- printf("CCB %p - timed out\n", (void *)accb);
+ printf("CCB %p - timed out\n", (void *)bccb);
s = splcam();
- if ((accb->flags & ACCB_ACTIVE) == 0) {
+ if ((bccb->flags & BCCB_ACTIVE) == 0) {
xpt_print_path(ccb->ccb_h.path);
printf("CCB %p - timed out CCB already completed\n",
- (void *)accb);
+ (void *)bccb);
splx(s);
return;
}
@@ -1876,26 +1744,26 @@ ahatimeout(void *arg)
* in attempting to handle errors in parrallel. Timeouts will
* be reinstated when the recovery process ends.
*/
- if ((accb->flags & ACCB_DEVICE_RESET) == 0) {
+ if ((bccb->flags & BCCB_DEVICE_RESET) == 0) {
struct ccb_hdr *ccb_h;
- if ((accb->flags & ACCB_RELEASE_SIMQ) == 0) {
+ if ((bccb->flags & BCCB_RELEASE_SIMQ) == 0) {
xpt_freeze_simq(aha->sim, /*count*/1);
- accb->flags |= ACCB_RELEASE_SIMQ;
+ bccb->flags |= BCCB_RELEASE_SIMQ;
}
ccb_h = LIST_FIRST(&aha->pending_ccbs);
while (ccb_h != NULL) {
- struct aha_ccb *pending_accb;
+ struct aha_ccb *pending_bccb;
- pending_accb = (struct aha_ccb *)ccb_h->ccb_accb_ptr;
- untimeout(ahatimeout, pending_accb, ccb_h->timeout_ch);
+ pending_bccb = (struct aha_ccb *)ccb_h->ccb_bccb_ptr;
+ untimeout(ahatimeout, pending_bccb, ccb_h->timeout_ch);
ccb_h = LIST_NEXT(ccb_h, sim_links.le);
}
}
- if ((accb->flags & ACCB_DEVICE_RESET) != 0
- || aha->cur_outbox->action_code != AMBO_FREE) {
+ if ((bccb->flags & BCCB_DEVICE_RESET) != 0
+ || aha->cur_outbox->action_code != BMBO_FREE) {
/*
* Try a full host adapter/SCSI bus reset.
* We do this only if we have already attempted
@@ -1917,22 +1785,22 @@ ahatimeout(void *arg)
* If this fails, we'll get another timeout 2 seconds
* later which will attempt a bus reset.
*/
- accb->flags |= ACCB_DEVICE_RESET;
- ccb->ccb_h.timeout_ch = timeout(ahatimeout, (caddr_t)accb, 2 * hz);
- aha->recovery_accb->hccb.opcode = INITIATOR_BUS_DEV_RESET;
+ bccb->flags |= BCCB_DEVICE_RESET;
+ ccb->ccb_h.timeout_ch = timeout(ahatimeout, (caddr_t)bccb, 2 * hz);
+ aha->recovery_bccb->hccb.opcode = INITIATOR_BUS_DEV_RESET;
/* No Data Transfer */
- aha->recovery_accb->hccb.datain = TRUE;
- aha->recovery_accb->hccb.dataout = TRUE;
- aha->recovery_accb->hccb.ahastat = 0;
- aha->recovery_accb->hccb.sdstat = 0;
- aha->recovery_accb->hccb.target = ccb->ccb_h.target_id;
+ aha->recovery_bccb->hccb.datain = TRUE;
+ aha->recovery_bccb->hccb.dataout = TRUE;
+ aha->recovery_bccb->hccb.ahastat = 0;
+ aha->recovery_bccb->hccb.sdstat = 0;
+ aha->recovery_bccb->hccb.target = ccb->ccb_h.target_id;
/* Tell the adapter about this command */
- paddr = ahaccbvtop(aha, aha->recovery_accb);
+ paddr = ahaccbvtop(aha, aha->recovery_bccb);
ahautoa24(paddr, aha->cur_outbox->ccb_addr);
- aha->cur_outbox->action_code = AMBO_START;
- aha_outb(aha, COMMAND_REG, AOP_START_MBOX);
+ aha->cur_outbox->action_code = BMBO_START;
+ aha_outb(aha, COMMAND_REG, BOP_START_MBOX);
ahanextoutbox(aha);
}
diff --git a/sys/dev/aha/ahareg.h b/sys/dev/aha/ahareg.h
index 82f3f4a49bd4b..7af8b537d40d0 100644
--- a/sys/dev/aha/ahareg.h
+++ b/sys/dev/aha/ahareg.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ahareg.h,v 1.4 1998/11/10 06:44:42 gibbs Exp $
+ * $Id: ahareg.h,v 1.2 1998/10/01 04:53:55 imp Exp $
*/
#ifndef _AHAREG_H_
@@ -101,41 +101,41 @@
* Opcodes for Adapter commands.
*/
typedef enum {
- AOP_NOP = 0x00,
- AOP_INITIALIZE_MBOX = 0x01,
- AOP_START_MBOX = 0x02,
- AOP_EXECUTE_BIOS_CMD = 0x03,
- AOP_INQUIRE_BOARD_ID = 0x04,
- AOP_ENABLE_OMBR_INT = 0x05,
- AOP_SET_SEL_TIMOUT = 0x06,
- AOP_SET_TIME_ON_BUS = 0x07,
- AOP_SET_TIME_OFF_BUS = 0x08,
- AOP_SET_BUS_TRANS_RATE = 0x09,
- AOP_INQUIRE_INST_LDEVS = 0x0A,
- AOP_INQUIRE_CONFIG = 0x0B,
- AOP_ENABLE_TARGET_MODE = 0x0C,
- AOP_INQUIRE_SETUP_INFO = 0x0D,
- AOP_WRITE_LRAM = 0x1A,
- AOP_READ_LRAM = 0x1B,
- AOP_WRITE_CHIP_FIFO = 0x1C,
- AOP_READ_CHIP_FIFO = 0x1D,
- AOP_ECHO_DATA_BYTE = 0x1F,
- AOP_ADAPTER_DIAGNOSTICS = 0x20,
- AOP_SET_ADAPTER_OPTIONS = 0x21,
- AOP_SET_EEPROM = 0x22,
- AOP_RETURN_EEPROM = 0x23,
- AOP_ENABLE_SHADOW_RAM = 0x24,
- AOP_INIT_BIOS_MBOX = 0x25,
- AOP_SET_BIOS_BANK_1 = 0x26,
- AOP_SET_BIOS_BANK_2 = 0x27,
- AOP_RETURN_EXT_BIOS_INFO= 0x28,
- AOP_MBOX_IF_ENABLE = 0x29,
- AOP_SCSI_TERM_STATUS = 0x2C,
- AOP_INQUIRE_SCAM_DEV = 0x2D,
- AOP_SCSI_DEV_TABLE = 0x2E,
- AOP_SCAM_OP = 0x2F,
- AOP_START_BIOS_CMD = 0x82,
- AOP_INQUIRE_ESETUP_INFO = 0x8D
+ BOP_NOP = 0x00,
+ BOP_INITIALIZE_MBOX = 0x01,
+ BOP_START_MBOX = 0x02,
+ BOP_EXECUTE_BIOS_CMD = 0x03,
+ BOP_INQUIRE_BOARD_ID = 0x04,
+ BOP_ENABLE_OMBR_INT = 0x05,
+ BOP_SET_SEL_TIMOUT = 0x06,
+ BOP_SET_TIME_ON_BUS = 0x07,
+ BOP_SET_TIME_OFF_BUS = 0x08,
+ BOP_SET_BUS_TRANS_RATE = 0x09,
+ BOP_INQUIRE_INST_LDEVS = 0x0A,
+ BOP_INQUIRE_CONFIG = 0x0B,
+ BOP_ENABLE_TARGET_MODE = 0x0C,
+ BOP_INQUIRE_SETUP_INFO = 0x0D,
+ BOP_WRITE_LRAM = 0x1A,
+ BOP_READ_LRAM = 0x1B,
+ BOP_WRITE_CHIP_FIFO = 0x1C,
+ BOP_READ_CHIP_FIFO = 0x1D,
+ BOP_ECHO_DATA_BYTE = 0x1F,
+ BOP_ADAPTER_DIAGNOSTICS = 0x20,
+ BOP_SET_ADAPTER_OPTIONS = 0x21,
+ BOP_SET_EEPROM = 0x22,
+ BOP_RETURN_EEPROM = 0x23,
+ BOP_ENABLE_SHADOW_RAM = 0x24,
+ BOP_INIT_BIOS_MBOX = 0x25,
+ BOP_SET_BIOS_BANK_1 = 0x26,
+ BOP_SET_BIOS_BANK_2 = 0x27,
+ BOP_RETURN_EXT_BIOS_INFO= 0x28,
+ BOP_MBOX_IF_ENABLE = 0x29,
+ BOP_SCSI_TERM_STATUS = 0x2C,
+ BOP_INQUIRE_SCAM_DEV = 0x2D,
+ BOP_SCSI_DEV_TABLE = 0x2E,
+ BOP_SCAM_OP = 0x2F,
+ BOP_START_BIOS_CMD = 0x82,
+ BOP_INQUIRE_ESETUP_INFO = 0x8D
} aha_op_t;
/************** Definitions of Multi-byte commands and responses ************/
@@ -217,9 +217,10 @@ typedef struct {
struct aha_isa_port {
u_int16_t addr;
u_int8_t probed;
- u_int8_t bio; /* board IO offset */
};
+extern struct aha_isa_port aha_isa_ports[];
+
#define AHA_NUM_ISAPORTS 6
typedef enum {
@@ -245,9 +246,9 @@ typedef struct {
/********************** Mail Box definitions *******************************/
typedef enum {
- AMBO_FREE = 0x0, /* MBO intry is free */
- AMBO_START = 0x1, /* MBO activate entry */
- AMBO_ABORT = 0x2 /* MBO abort entry */
+ BMBO_FREE = 0x0, /* MBO intry is free */
+ BMBO_START = 0x1, /* MBO activate entry */
+ BMBO_ABORT = 0x2 /* MBO abort entry */
} aha_mbo_action_code_t;
typedef struct aha_mbox_out {
@@ -256,11 +257,11 @@ typedef struct aha_mbox_out {
} aha_mbox_out_t;
typedef enum {
- AMBI_FREE = 0x0, /* MBI entry is free */
- AMBI_OK = 0x1, /* completed without error */
- AMBI_ABORT = 0x2, /* aborted ccb */
- AMBI_NOT_FOUND = 0x3, /* Tried to abort invalid CCB */
- AMBI_ERROR = 0x4 /* Completed with error */
+ BMBI_FREE = 0x0, /* MBI entry is free */
+ BMBI_OK = 0x1, /* completed without error */
+ BMBI_ABORT = 0x2, /* aborted ccb */
+ BMBI_NOT_FOUND = 0x3, /* Tried to abort invalid CCB */
+ BMBI_ERROR = 0x4 /* Completed with error */
} aha_mbi_comp_code_t;
typedef struct aha_mbox_in {
@@ -312,11 +313,11 @@ struct aha_hccb {
};
typedef enum {
- ACCB_FREE = 0x0,
- ACCB_ACTIVE = 0x1,
- ACCB_DEVICE_RESET = 0x2,
- ACCB_RELEASE_SIMQ = 0x4
-} accb_flags_t;
+ BCCB_FREE = 0x0,
+ BCCB_ACTIVE = 0x1,
+ BCCB_DEVICE_RESET = 0x2,
+ BCCB_RELEASE_SIMQ = 0x4
+} bccb_flags_t;
struct aha_ccb {
struct aha_hccb hccb; /* hccb assumed to be at 0 */
@@ -347,15 +348,12 @@ struct aha_softc {
struct aha_ccb *aha_ccb_array;
SLIST_HEAD(,aha_ccb) free_aha_ccbs;
LIST_HEAD(,ccb_hdr) pending_ccbs;
- u_int active_ccbs;
u_int32_t aha_ccb_physbase;
- aha_ccb_opcode_t ccb_sg_opcode;
- aha_ccb_opcode_t ccb_ccb_opcode;
aha_mbox_in_t *in_boxes;
aha_mbox_out_t *out_boxes;
struct scsi_sense_data *sense_buffers;
u_int32_t sense_buffers_physbase;
- struct aha_ccb *recovery_accb;
+ struct aha_ccb *recovery_bccb;
u_int num_boxes;
bus_dma_tag_t parent_dmat; /*
* All dmat's derive from
@@ -412,11 +410,6 @@ char * aha_name(struct aha_softc *aha);
int aha_check_probed_iop(u_int ioport);
void aha_mark_probed_bio(isa_compat_io_t port);
void aha_mark_probed_iop(u_int ioport);
-void aha_find_probe_range(int ioport,
- int *port_index,
- int *max_port_index);
-
-int aha_iop_from_bio(isa_compat_io_t bio_index);
#define DEFAULT_CMD_TIMEOUT 10000 /* 1 sec */
int aha_cmd(struct aha_softc *aha, aha_op_t opcode,
@@ -430,18 +423,4 @@ int aha_cmd(struct aha_softc *aha, aha_op_t opcode,
#define aha_outb(aha, port, value) \
bus_space_write_1((aha)->tag, (aha)->bsh, port, value)
-
-#ifndef EXTRA_AHA
-#if NPNP > 0
-#define EXTRA_AHA MAX_PNP_CARDS
-#else
-#define EXTRA_AHA 0
-#endif
-#endif
-
-#define NAHATOT (NAHA + EXTRA_AHA)
-
-#define AHA1542_PNP 0x42159004 /* ADP1542 */
-#define AHA1542_PNPCOMPAT 0xA000D040 /* PNP00A0 */
-
#endif /* _AHA_H_ */
diff --git a/sys/dev/aic7xxx/Makefile b/sys/dev/aic7xxx/Makefile
index b47dab3520815..0a74ca9c8c474 100644
--- a/sys/dev/aic7xxx/Makefile
+++ b/sys/dev/aic7xxx/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.4 1997/09/27 19:37:22 gibbs Exp $
+# $Id: Makefile,v 1.3 1997/09/03 03:44:32 gibbs Exp $
PROG= aicasm
@@ -19,7 +19,7 @@ LDADD+= -ll
DEPENDFILE=
.endif
-CFLAGS+= -I/usr/include -I.
+CFLAGS+= -I.
NOMAN= noman
.ifdef DEBUG
diff --git a/sys/dev/aic7xxx/aic7xxx.c b/sys/dev/aic7xxx/aic7xxx.c
index e442be536b9e6..48014aef3e1a2 100644
--- a/sys/dev/aic7xxx/aic7xxx.c
+++ b/sys/dev/aic7xxx/aic7xxx.c
@@ -5,7 +5,7 @@
* pci/ahc_pci.c 3985, 3980, 3940, 2940, aic7895, aic7890,
* aic7880, aic7870, aic7860, and aic7850 controllers
*
- * Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999 Justin T. Gibbs.
+ * Copyright (c) 1994, 1995, 1996, 1997, 1998 Justin T. Gibbs.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -36,7 +36,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.c,v 1.15 1999/01/14 06:14:14 gibbs Exp $
+ * $Id: aic7xxx.c,v 1.8 1998/10/15 18:21:47 gibbs Exp $
*/
/*
* A few notes on features of the driver.
@@ -133,8 +133,9 @@
#define MAX(a,b) (((a) > (b)) ? (a) : (b))
#define MIN(a,b) (((a) < (b)) ? (a) : (b))
+#define ALL_TARGETS (~0)
+#define ALL_LUNS (~0)
#define ALL_CHANNELS '\0'
-#define ALL_TARGETS_MASK 0xFFFF
#define SIM_IS_SCSIBUS_B(ahc, sim) \
(sim == ahc->sim_b)
@@ -154,22 +155,11 @@
#define ccb_scb_ptr spriv_ptr0
#define ccb_ahc_ptr spriv_ptr1
-typedef enum {
- ROLE_UNKNOWN,
- ROLE_INITIATOR,
- ROLE_TARGET,
-} role_t;
-
struct ahc_devinfo {
int target_offset;
u_int16_t target_mask;
u_int8_t target;
- u_int8_t lun;
char channel;
- role_t role; /*
- * Only guaranteed to be correct if not
- * in the busfree state.
- */
};
typedef enum {
@@ -188,10 +178,9 @@ static int ahc_debug = AHC_DEBUG;
void ahc_pci_intr(struct ahc_softc *ahc);
#endif
-#if UNUSED
static void ahc_dump_targcmd(struct target_cmd *cmd);
-#endif
static void ahc_shutdown(int howto, void *arg);
+static void ahcminphys(struct buf *bp);
static cam_status
ahc_find_tmode_devs(struct ahc_softc *ahc,
struct cam_sim *sim, union ccb *ccb,
@@ -215,33 +204,16 @@ static struct scb *
static void ahc_fetch_devinfo(struct ahc_softc *ahc,
struct ahc_devinfo *devinfo);
static void ahc_compile_devinfo(struct ahc_devinfo *devinfo,
- u_int target, u_int lun, char channel,
- role_t role);
+ u_int target, char channel);
static u_int ahc_abort_wscb(struct ahc_softc *ahc, u_int scbpos, u_int prev);
static void ahc_done(struct ahc_softc *ahc, struct scb *scbp);
-static void ahc_handle_en_lun(struct ahc_softc *ahc, struct cam_sim *sim,
- union ccb *ccb);
-static int ahc_handle_target_cmd(struct ahc_softc *ahc,
- struct target_cmd *cmd);
+static void ahc_handle_target_cmd(struct ahc_softc *ahc);
static void ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat);
static void ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat);
-static void ahc_build_transfer_msg(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo);
-static void ahc_setup_initiator_msgout(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo,
- struct scb *scb);
-static void ahc_setup_target_msgin(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo);
-static int ahc_handle_msg_reject(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo);
-static void ahc_clear_msg_state(struct ahc_softc *ahc);
-static void ahc_handle_message_phase(struct ahc_softc *ahc,
- struct cam_path *path);
-static int ahc_sent_msg(struct ahc_softc *ahc, u_int msgtype, int full);
-static int ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
+static void ahc_handle_reqinit(struct ahc_softc *ahc,
+ struct scb *scb);
+static int ahc_parse_msg(struct ahc_softc *ahc, struct scb *scb,
struct ahc_devinfo *devinfo);
-static void ahc_handle_ign_wide_residue(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo);
static void ahc_handle_devreset(struct ahc_softc *ahc, int target,
char channel, cam_status status,
ac_code acode, char *message,
@@ -260,8 +232,6 @@ static void ahc_print_scb(struct scb *scb);
static int ahc_search_qinfifo(struct ahc_softc *ahc, int target,
char channel, int lun, u_int tag,
u_int32_t status, ahc_search_action action);
-static void ahc_abort_ccb(struct ahc_softc *ahc, struct cam_sim *sim,
- union ccb *ccb);
static int ahc_reset_channel(struct ahc_softc *ahc, char channel,
int initiate_reset);
static int ahc_abort_scbs(struct ahc_softc *ahc, int target,
@@ -275,8 +245,6 @@ static void ahc_add_curscb_to_free_list(struct ahc_softc *ahc);
static void ahc_clear_intstat(struct ahc_softc *ahc);
static void ahc_reset_current_bus(struct ahc_softc *ahc);
static struct ahc_syncrate *
- ahc_devlimited_syncrate(struct ahc_softc *ahc, u_int *period);
-static struct ahc_syncrate *
ahc_find_syncrate(struct ahc_softc *ahc, u_int *period,
u_int maxsync);
static u_int ahc_find_period(struct ahc_softc *ahc, u_int scsirate,
@@ -284,13 +252,6 @@ static u_int ahc_find_period(struct ahc_softc *ahc, u_int scsirate,
static void ahc_validate_offset(struct ahc_softc *ahc,
struct ahc_syncrate *syncrate,
u_int *offset, int wide);
-static void ahc_update_target_msg_request(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo,
- struct ahc_target_tinfo *tinfo,
- int force);
-static int ahc_create_path(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo,
- struct cam_path **path);
static void ahc_set_syncrate(struct ahc_softc *ahc,
struct ahc_devinfo *devinfo,
struct cam_path *path,
@@ -312,7 +273,6 @@ static void ahc_set_recoveryscb(struct ahc_softc *ahc, struct scb *scb);
static timeout_t
ahc_timeout;
-static __inline int sequencer_paused(struct ahc_softc *ahc);
static __inline void pause_sequencer(struct ahc_softc *ahc);
static __inline void unpause_sequencer(struct ahc_softc *ahc,
int unpause_always);
@@ -335,12 +295,6 @@ ahc_hscb_busaddr(struct ahc_softc *ahc, u_int index)
#define AHC_BUSRESET_DELAY 25 /* Reset delay in us */
-static __inline int
-sequencer_paused(struct ahc_softc *ahc)
-{
- return ((ahc_inb(ahc, HCNTRL) & PAUSE) != 0);
-}
-
static __inline void
pause_sequencer(struct ahc_softc *ahc)
{
@@ -350,15 +304,16 @@ pause_sequencer(struct ahc_softc *ahc)
* Since the sequencer can disable pausing in a critical section, we
* must loop until it actually stops.
*/
- while (sequencer_paused(ahc) == 0)
+ while ((ahc_inb(ahc, HCNTRL) & PAUSE) == 0)
;
}
static __inline void
unpause_sequencer(struct ahc_softc *ahc, int unpause_always)
{
- if (unpause_always
- || (ahc_inb(ahc, INTSTAT) & (SCSIINT | SEQINT | BRKADRINT)) == 0)
+ if ((ahc->flags & AHC_HANDLING_REQINITS) == 0
+ && (unpause_always
+ || (ahc_inb(ahc, INTSTAT) & (SCSIINT | SEQINT | BRKADRINT)) == 0))
ahc_outb(ahc, HCNTRL, ahc->unpause);
}
@@ -418,7 +373,7 @@ ahc_name(struct ahc_softc *ahc)
{
static char name[10];
- snprintf(name, sizeof(name), "ahc%d", ahc->unit);
+ sprintf(name, "ahc%d", ahc->unit);
return (name);
}
@@ -604,30 +559,6 @@ ahc_reset(struct ahc_softc *ahc)
}
/*
- * Called when we have an active connection to a target on the bus,
- * this function finds the nearest syncrate to the input period limited
- * by the capabilities of the bus connectivity of the target.
- */
-static struct ahc_syncrate *
-ahc_devlimited_syncrate(struct ahc_softc *ahc, u_int *period) {
- u_int maxsync;
-
- if ((ahc->features & AHC_ULTRA2) != 0) {
- if ((ahc_inb(ahc, SBLKCTL) & ENAB40) != 0
- && (ahc_inb(ahc, SSTAT2) & EXP_ACTIVE) == 0) {
- maxsync = AHC_SYNCRATE_ULTRA2;
- } else {
- maxsync = AHC_SYNCRATE_ULTRA;
- }
- } else if ((ahc->features & AHC_ULTRA) != 0) {
- maxsync = AHC_SYNCRATE_ULTRA;
- } else {
- maxsync = AHC_SYNCRATE_FAST;
- }
- return (ahc_find_syncrate(ahc, period, maxsync));
-}
-
-/*
* Look up the valid period to SCSIRATE conversion in our table.
* Return the period and offset that should be sent to the target
* if this was the beginning of an SDTR.
@@ -721,62 +652,10 @@ ahc_validate_offset(struct ahc_softc *ahc, struct ahc_syncrate *syncrate,
}
static void
-ahc_update_target_msg_request(struct ahc_softc *ahc,
- struct ahc_devinfo *devinfo,
- struct ahc_target_tinfo *tinfo,
- int force)
-{
- int paused;
- u_int targ_msg_req_orig;
-
- targ_msg_req_orig = ahc->targ_msg_req;
- if (tinfo->current.period != tinfo->goal.period
- || tinfo->current.width != tinfo->goal.width
- || (force
- && (tinfo->goal.period != 0
- || tinfo->goal.width != MSG_EXT_WDTR_BUS_8_BIT)))
- ahc->targ_msg_req |= devinfo->target_mask;
- else
- ahc->targ_msg_req &= ~devinfo->target_mask;
-
- if (ahc->targ_msg_req != targ_msg_req_orig) {
- /* Update the message request bit for this target */
- paused = sequencer_paused(ahc);
-
- if (!paused)
- pause_sequencer(ahc);
-
- ahc_outb(ahc, TARGET_MSG_REQUEST, ahc->targ_msg_req & 0xFF);
- ahc_outb(ahc, TARGET_MSG_REQUEST + 1,
- (ahc->targ_msg_req >> 8) & 0xFF);
-
- if (!paused)
- unpause_sequencer(ahc, /*unpause always*/FALSE);
- }
-}
-
-static int
-ahc_create_path(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
- struct cam_path **path)
-{
- path_id_t path_id;
-
- if (devinfo->channel == 'B')
- path_id = cam_sim_path(ahc->sim_b);
- else
- path_id = cam_sim_path(ahc->sim);
-
- return (xpt_create_path(path, /*periph*/NULL,
- path_id, devinfo->target,
- devinfo->lun));
-}
-
-static void
ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
struct cam_path *path, struct ahc_syncrate *syncrate,
u_int period, u_int offset, u_int type)
{
- struct ahc_target_tinfo *tinfo;
u_int old_period;
u_int old_offset;
@@ -785,16 +664,15 @@ ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
offset = 0;
}
- tinfo = &ahc->transinfo[devinfo->target_offset];
- old_period = tinfo->current.period;
- old_offset = tinfo->current.offset;
+ old_period = ahc->transinfo[devinfo->target_offset].current.period;
+ old_offset = ahc->transinfo[devinfo->target_offset].current.offset;
if ((type & AHC_TRANS_CUR) != 0
&& (old_period != period || old_offset != offset)) {
- struct cam_path *path2;
+ struct ccb_trans_settings neg;
u_int scsirate;
- scsirate = tinfo->scsirate;
+ scsirate = ahc->transinfo[devinfo->target_offset].scsirate;
if ((ahc->features & AHC_ULTRA2) != 0) {
scsirate &= ~SXFR_ULTRA2;
@@ -803,8 +681,11 @@ ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
scsirate |= syncrate->sxfr_ultra2;
}
- if ((type & AHC_TRANS_ACTIVE) == AHC_TRANS_ACTIVE)
+ if ((type & AHC_TRANS_ACTIVE) == AHC_TRANS_ACTIVE) {
ahc_outb(ahc, SCSIOFFSET, offset);
+ }
+ ahc_outb(ahc, TARG_OFFSET + devinfo->target_offset,
+ offset);
} else {
scsirate &= ~(SXFR|SOFS);
@@ -833,45 +714,25 @@ ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
if ((type & AHC_TRANS_ACTIVE) == AHC_TRANS_ACTIVE)
ahc_outb(ahc, SCSIRATE, scsirate);
- tinfo->scsirate = scsirate;
- tinfo->current.period = period;
- tinfo->current.offset = offset;
+ ahc->transinfo[devinfo->target_offset].scsirate = scsirate;
+ ahc->transinfo[devinfo->target_offset].current.period = period;
+ ahc->transinfo[devinfo->target_offset].current.offset = offset;
/* Update the syncrates in any pending scbs */
ahc_update_pending_syncrates(ahc);
/*
- * If possible, tell the SCSI layer about the
+ * Tell the SCSI layer about the
* new transfer parameters.
*/
- /* If possible, update the XPT's notion of our transfer rate */
- path2 = NULL;
- if (path == NULL) {
- int error;
-
- error = ahc_create_path(ahc, devinfo, &path2);
- if (error == CAM_REQ_CMP)
- path = path2;
- else
- path2 = NULL;
- }
-
- if (path != NULL) {
- struct ccb_trans_settings neg;
-
- neg.sync_period = period;
- neg.sync_offset = offset;
- neg.valid = CCB_TRANS_SYNC_RATE_VALID
- | CCB_TRANS_SYNC_OFFSET_VALID;
- xpt_setup_ccb(&neg.ccb_h, path, /*priority*/1);
- xpt_async(AC_TRANSFER_NEG, path, &neg);
- }
-
- if (path2 != NULL)
- xpt_free_path(path2);
-
+ neg.sync_period = period;
+ neg.sync_offset = offset;
+ neg.valid = CCB_TRANS_SYNC_RATE_VALID
+ | CCB_TRANS_SYNC_OFFSET_VALID;
+ xpt_setup_ccb(&neg.ccb_h, path, /*priority*/1);
+ xpt_async(AC_TRANSFER_NEG, path, &neg);
if (bootverbose) {
- if (offset != 0) {
+ if (neg.sync_offset != 0) {
printf("%s: target %d synchronous at %sMHz, "
"offset = 0x%x\n", ahc_name(ahc),
devinfo->target, syncrate->rate, offset);
@@ -884,80 +745,57 @@ ahc_set_syncrate(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
}
if ((type & AHC_TRANS_GOAL) != 0) {
- tinfo->goal.period = period;
- tinfo->goal.offset = offset;
+ ahc->transinfo[devinfo->target_offset].goal.period = period;
+ ahc->transinfo[devinfo->target_offset].goal.offset = offset;
}
if ((type & AHC_TRANS_USER) != 0) {
- tinfo->user.period = period;
- tinfo->user.offset = offset;
+ ahc->transinfo[devinfo->target_offset].user.period = period;
+ ahc->transinfo[devinfo->target_offset].user.offset = offset;
}
-
- ahc_update_target_msg_request(ahc, devinfo, tinfo, /*force*/FALSE);
}
static void
ahc_set_width(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
struct cam_path *path, u_int width, u_int type)
{
- struct ahc_target_tinfo *tinfo;
- u_int oldwidth;
+ u_int oldwidth;
- tinfo = &ahc->transinfo[devinfo->target_offset];
- oldwidth = tinfo->current.width;
+ oldwidth = ahc->transinfo[devinfo->target_offset].current.width;
if ((type & AHC_TRANS_CUR) != 0 && oldwidth != width) {
- struct cam_path *path2;
+ struct ccb_trans_settings neg;
u_int scsirate;
- scsirate = tinfo->scsirate;
+ scsirate = ahc->transinfo[devinfo->target_offset].scsirate;
scsirate &= ~WIDEXFER;
if (width == MSG_EXT_WDTR_BUS_16_BIT)
scsirate |= WIDEXFER;
- tinfo->scsirate = scsirate;
+ ahc->transinfo[devinfo->target_offset].scsirate = scsirate;
if ((type & AHC_TRANS_ACTIVE) == AHC_TRANS_ACTIVE)
ahc_outb(ahc, SCSIRATE, scsirate);
- tinfo->current.width = width;
-
- /* If possible, update the XPT's notion of our transfer rate */
- path2 = NULL;
- if (path == NULL) {
- int error;
-
- error = ahc_create_path(ahc, devinfo, &path2);
- if (error == CAM_REQ_CMP)
- path = path2;
- else
- path2 = NULL;
- }
-
- if (path != NULL) {
- struct ccb_trans_settings neg;
-
- neg.bus_width = width;
- neg.valid = CCB_TRANS_BUS_WIDTH_VALID;
- xpt_setup_ccb(&neg.ccb_h, path, /*priority*/1);
- xpt_async(AC_TRANSFER_NEG, path, &neg);
- }
-
- if (path2 != NULL)
- xpt_free_path(path2);
+ ahc->transinfo[devinfo->target_offset].current.width = width;
+ /* Tell the SCSI layer about the new transfer params */
+ neg.bus_width = width;
+ neg.valid = CCB_TRANS_BUS_WIDTH_VALID;
+ xpt_setup_ccb(&neg.ccb_h, path, /*priority*/1);
+ xpt_async(AC_TRANSFER_NEG, path, &neg);
if (bootverbose) {
printf("%s: target %d using %dbit transfers\n",
ahc_name(ahc), devinfo->target,
- 8 * (0x01 << width));
+ 8 * (0x01 << neg.bus_width));
}
}
- if ((type & AHC_TRANS_GOAL) != 0)
- tinfo->goal.width = width;
- if ((type & AHC_TRANS_USER) != 0)
- tinfo->user.width = width;
-
- ahc_update_target_msg_request(ahc, devinfo, tinfo, /*force*/FALSE);
+ if ((type & AHC_TRANS_GOAL) != 0) {
+ ahc->transinfo[devinfo->target_offset].goal.width = width;
+ }
+ if ((type & AHC_TRANS_USER) != 0) {
+ ahc->transinfo[devinfo->target_offset].user.width = width;
+ }
}
/*
@@ -1089,29 +927,19 @@ fail:
static void
ahc_fetch_devinfo(struct ahc_softc *ahc, struct ahc_devinfo *devinfo)
{
- u_int saved_tcl;
- role_t role;
-
- if (ahc_inb(ahc, SSTAT0) & TARGET)
- role = ROLE_TARGET;
- else
- role = ROLE_INITIATOR;
+ u_int saved_tcl;
saved_tcl = ahc_inb(ahc, SAVED_TCL);
ahc_compile_devinfo(devinfo, (saved_tcl >> 4) & 0x0f,
- saved_tcl & 0x3, (saved_tcl & SELBUSB) ? 'B': 'A',
- role);
+ (saved_tcl & SELBUSB) ? 'B': 'A');
}
static void
-ahc_compile_devinfo(struct ahc_devinfo *devinfo, u_int target, u_int lun,
- char channel, role_t role)
+ahc_compile_devinfo(struct ahc_devinfo *devinfo, u_int target, char channel)
{
devinfo->target = target;
- devinfo->lun = lun;
devinfo->target_offset = target;
devinfo->channel = channel;
- devinfo->role = role;
if (channel == 'B')
devinfo->target_offset += 8;
devinfo->target_mask = (0x01 << devinfo->target_offset);
@@ -1161,6 +989,12 @@ ahc_intr(void *arg)
scb_index = ahc->qoutfifo[ahc->qoutfifonext];
ahc->qoutfifo[ahc->qoutfifonext++] = SCB_LIST_NULL;
+ if (scb_index == TARGET_CMD_CMPLT
+ && (ahc->flags & AHC_TARGETMODE) != 0) {
+ ahc_handle_target_cmd(ahc);
+ continue;
+ }
+
scb = ahc->scb_data->scbarray[scb_index];
if (!scb || !(scb->flags & SCB_ACTIVE)) {
printf("%s: WARNING no command for scb %d "
@@ -1178,23 +1012,6 @@ ahc_intr(void *arg)
ahc_calc_residual(scb);
ahc_done(ahc, scb);
}
-
- if ((ahc->flags & AHC_TARGETMODE) != 0) {
- while (ahc->targetcmds[ahc->tqinfifonext].cmd_valid) {
- struct target_cmd *cmd;
-
- cmd = &ahc->targetcmds[ahc->tqinfifonext];
-
- /*
- * Only advance through the queue if we
- * had the resources to process the command.
- */
- if (ahc_handle_target_cmd(ahc, cmd) != 0)
- break;
- ahc->tqinfifonext++;
- cmd->cmd_valid = 0;
- }
- }
}
if (intstat & BRKADRINT) {
/*
@@ -1213,8 +1030,8 @@ ahc_intr(void *arg)
(ahc_inb(ahc, SEQADDR1) << 8));
/* Tell everyone that this HBA is no longer availible */
- ahc_abort_scbs(ahc, CAM_TARGET_WILDCARD, ALL_CHANNELS,
- CAM_LUN_WILDCARD, SCB_LIST_NULL, CAM_NO_HBA);
+ ahc_abort_scbs(ahc, ALL_TARGETS, ALL_CHANNELS,
+ ALL_LUNS, SCB_LIST_NULL, CAM_NO_HBA);
}
if (intstat & SEQINT)
ahc_handle_seqint(ahc, intstat);
@@ -1224,207 +1041,31 @@ ahc_intr(void *arg)
}
static void
-ahc_handle_en_lun(struct ahc_softc *ahc, struct cam_sim *sim, union ccb *ccb)
-{
- struct tmode_tstate *tstate;
- struct tmode_lstate *lstate;
- struct ccb_en_lun *cel;
- cam_status status;
- int target;
- int lun;
-
- status = ahc_find_tmode_devs(ahc, sim, ccb, &tstate, &lstate,
- /* notfound_failure*/FALSE);
-
- if (status != CAM_REQ_CMP) {
- ccb->ccb_h.status = status;
- return;
- }
-
- cel = &ccb->cel;
- target = ccb->ccb_h.target_id;
- lun = ccb->ccb_h.target_lun;
- if (cel->enable != 0) {
- u_int scsiseq;
-
- /* Are we already enabled?? */
- if (lstate != NULL) {
- ccb->ccb_h.status = CAM_LUN_ALRDY_ENA;
- return;
- }
-
- if (cel->grp6_len != 0
- || cel->grp7_len != 0) {
- /*
- * Don't (yet?) support vendor
- * specific commands.
- */
- ccb->ccb_h.status = CAM_REQ_INVALID;
- return;
- }
-
- /*
- * Seems to be okay.
- * Setup our data structures.
- */
- if (target != CAM_TARGET_WILDCARD && tstate == NULL) {
- tstate = malloc(sizeof(*tstate), M_DEVBUF, M_NOWAIT);
- if (tstate == NULL) {
- ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
- return;
- }
- bzero(tstate, sizeof(*tstate));
- ahc->enabled_targets[target] = tstate;
- }
- lstate = malloc(sizeof(*lstate), M_DEVBUF, M_NOWAIT);
- if (lstate == NULL) {
- ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
- return;
- }
- bzero(lstate, sizeof(*lstate));
- SLIST_INIT(&lstate->accept_tios);
- SLIST_INIT(&lstate->immed_notifies);
- if (target != CAM_TARGET_WILDCARD) {
- tstate->enabled_luns[lun] = lstate;
- ahc->enabled_luns++;
- } else
- ahc->black_hole = lstate;
- pause_sequencer(ahc);
- if ((ahc->features & AHC_MULTI_TID) != 0) {
- u_int16_t targid_mask;
-
- targid_mask = ahc_inb(ahc, TARGID)
- | (ahc_inb(ahc, TARGID + 1) << 8);
-
- targid_mask |= (0x01 << target);
- ahc_outb(ahc, TARGID, targid_mask);
- ahc_outb(ahc, TARGID+1, (targid_mask >> 8));
- }
- /* Allow select-in operations */
- if (ahc->black_hole != NULL && ahc->enabled_luns > 0) {
- scsiseq = ahc_inb(ahc, SCSISEQ_TEMPLATE);
- scsiseq |= ENSELI;
- ahc_outb(ahc, SCSISEQ_TEMPLATE, scsiseq);
- scsiseq = ahc_inb(ahc, SCSISEQ);
- scsiseq |= ENSELI;
- ahc_outb(ahc, SCSISEQ, scsiseq);
- }
- unpause_sequencer(ahc, /*always?*/FALSE);
- ccb->ccb_h.status = CAM_REQ_CMP;
- xpt_print_path(ccb->ccb_h.path);
- printf("Lun now enabled for target mode\n");
- xpt_done(ccb);
- } else {
- struct ccb_hdr *elm;
-
- if (lstate == NULL) {
- ccb->ccb_h.status = CAM_LUN_INVALID;
- return;
- }
-
- ccb->ccb_h.status = CAM_REQ_CMP;
- LIST_FOREACH(elm, &ahc->pending_ccbs, sim_links.le) {
- if (elm->func_code == XPT_CONT_TARGET_IO
- && !xpt_path_comp(elm->path, ccb->ccb_h.path)){
- printf("CTIO pending\n");
- ccb->ccb_h.status = CAM_REQ_INVALID;
- return;
- }
- }
-
- if (SLIST_FIRST(&lstate->accept_tios) != NULL) {
- printf("ATIOs pending\n");
- ccb->ccb_h.status = CAM_REQ_INVALID;
- }
-
- if (SLIST_FIRST(&lstate->immed_notifies) != NULL) {
- printf("INOTs pending\n");
- ccb->ccb_h.status = CAM_REQ_INVALID;
- }
-
- if (ccb->ccb_h.status == CAM_REQ_CMP) {
- int i, empty;
-
- xpt_print_path(ccb->ccb_h.path);
- printf("Target mode disabled\n");
- free(lstate, M_DEVBUF);
-
- pause_sequencer(ahc);
- /* Can we clean up the target too? */
- if (target != CAM_TARGET_WILDCARD) {
- tstate->enabled_luns[lun] = NULL;
- ahc->enabled_luns--;
- for (empty = 1, i = 0; i < 8; i++)
- if (tstate->enabled_luns[i] != NULL) {
- empty = 0;
- break;
- }
- if (empty) {
- free(tstate, M_DEVBUF);
- ahc->enabled_targets[target] = NULL;
- if (ahc->features & AHC_MULTI_TID) {
- u_int16_t targid_mask;
-
- targid_mask =
- ahc_inb(ahc, TARGID)
- | (ahc_inb(ahc, TARGID + 1)
- << 8);
-
- targid_mask &= (0x01 << target);
- ahc_outb(ahc, TARGID,
- targid_mask);
- ahc_outb(ahc, TARGID+1,
- (targid_mask >> 8));
- }
-
- for (empty = 1, i = 0; i < 16; i++)
- if (ahc->enabled_targets[i]
- != NULL) {
- empty = 0;
- break;
- }
- }
- } else {
-
- ahc->black_hole = NULL;
-
- /*
- * We can't allow selections without
- * our black hole device.
- */
- empty = TRUE;
- }
- if (empty) {
- /* Disallow select-in */
- u_int scsiseq;
-
- scsiseq = ahc_inb(ahc, SCSISEQ_TEMPLATE);
- scsiseq &= ~ENSELI;
- ahc_outb(ahc, SCSISEQ_TEMPLATE, scsiseq);
- scsiseq = ahc_inb(ahc, SCSISEQ);
- scsiseq &= ~ENSELI;
- ahc_outb(ahc, SCSISEQ, scsiseq);
- }
- unpause_sequencer(ahc, /*always?*/FALSE);
- }
- }
-}
-
-static int
-ahc_handle_target_cmd(struct ahc_softc *ahc, struct target_cmd *cmd)
+ahc_handle_target_cmd(struct ahc_softc *ahc)
{
struct tmode_tstate *tstate;
struct tmode_lstate *lstate;
struct ccb_accept_tio *atio;
+ struct target_cmd *cmd;
u_int8_t *byte;
int initiator;
int target;
int lun;
- initiator = cmd->initiator_channel >> 4;
+ cmd = &ahc->targetcmds[ahc->next_targetcmd];
+ ahc->next_targetcmd++;
+ if (ahc->next_targetcmd >= ahc->num_targetcmds)
+ ahc->next_targetcmd = 0;
+
+ initiator = cmd->icl >> 4;
target = cmd->targ_id;
lun = (cmd->identify & MSG_IDENTIFY_LUNMASK);
+ xpt_print_path(ahc->path);
+ printf("Received Target Command (%d:%d:%d)\n",
+ initiator, target, lun);
+ ahc_dump_targcmd(cmd);
+
byte = cmd->bytes;
tstate = ahc->enabled_targets[target];
lstate = NULL;
@@ -1432,28 +1073,23 @@ ahc_handle_target_cmd(struct ahc_softc *ahc, struct target_cmd *cmd)
lstate = tstate->enabled_luns[lun];
/*
- * Commands for disabled luns go to the black hole driver.
+ * XXX Need to have a default TMODE devce that attaches to luns
+ * that wouldn't otherwise be enabled and returns the proper
+ * inquiry information. After all, we don't want to duplicate
+ * this code in each driver. For now, simply drop it on the
+ * floor.
*/
if (lstate == NULL) {
printf("Incoming Command on disabled lun\n");
- lstate = ahc->black_hole;
- atio =
- (struct ccb_accept_tio*)SLIST_FIRST(&lstate->accept_tios);
- /* Fill in the wildcards */
- atio->ccb_h.target_id = target;
- atio->ccb_h.target_lun = lun;
- } else {
- atio =
- (struct ccb_accept_tio*)SLIST_FIRST(&lstate->accept_tios);
+ return;
}
+
+ atio = (struct ccb_accept_tio*)SLIST_FIRST(&lstate->accept_tios);
+ /* XXX Should reconnect and return BUSY status */
if (atio == NULL) {
printf("No ATIOs for incoming command\n");
- /*
- * Wait for more ATIOs from the peripheral driver for this lun.
- */
- return (1);
+ return;
}
- SLIST_REMOVE_HEAD(&lstate->accept_tios, sim_links.sle);
/*
* Package it up and send it off to
@@ -1494,6 +1130,7 @@ ahc_handle_target_cmd(struct ahc_softc *ahc, struct target_cmd *cmd)
}
bcopy(byte, atio->cdb_io.cdb_bytes, atio->cdb_len);
+ SLIST_REMOVE_HEAD(&lstate->accept_tios, sim_links.sle);
atio->ccb_h.status |= CAM_CDB_RECVD;
if ((cmd->identify & MSG_IDENTIFY_DISCFLAG) == 0) {
@@ -1503,10 +1140,11 @@ ahc_handle_target_cmd(struct ahc_softc *ahc, struct target_cmd *cmd)
* continue target I/O comes in response
* to this accept tio.
*/
+ xpt_print_path(atio->ccb_h.path);
+ printf("Incoming Command did not disconnect %p\n", lstate);
ahc->pending_device = lstate;
}
xpt_done((union ccb*)atio);
- return (0);
}
static void
@@ -1581,6 +1219,130 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat)
devinfo.target);
}
break;
+ case EXTENDED_MSG:
+ {
+ ahc->msg_type = MSG_TYPE_INITIATOR_MSGIN;
+ ahc->msg_len = 0;
+ ahc->msg_index = 0;
+
+ /*
+ * To actually receive the message, simply turn on
+ * REQINIT interrupts and let our interrupt handler
+ * do the rest (REQINIT should already be true).
+ */
+ ahc_outb(ahc, SIMODE1, ahc_inb(ahc, SIMODE1) | ENREQINIT);
+ ahc->flags |= AHC_HANDLING_REQINITS;
+ return;
+ }
+ case REJECT_MSG:
+ {
+ /*
+ * What we care about here is if we had an
+ * outstanding SDTR or WDTR message for this
+ * target. If we did, this is a signal that
+ * the target is refusing negotiation.
+ */
+ u_int scb_index;
+ u_int last_msg;
+
+ scb_index = ahc_inb(ahc, SCB_TAG);
+ scb = ahc->scb_data->scbarray[scb_index];
+
+ last_msg = ahc_inb(ahc, LAST_MSG);
+
+ if ((last_msg == MSG_IDENTIFYFLAG
+ || last_msg == HOST_MSG)
+ && (scb->flags & SCB_MSGOUT_WDTR) != 0
+ && (scb->flags & SCB_MSGOUT_SENT) != 0) {
+ struct ahc_target_tinfo *tinfo;
+
+ /* note 8bit xfers and clear flag */
+ printf("%s:%c:%d: refuses WIDE negotiation. Using "
+ "8bit transfers\n", ahc_name(ahc),
+ devinfo.channel, devinfo.target);
+ scb->flags &= ~SCB_MSGOUT_BITS;
+ ahc->wdtrpending &= ~devinfo.target_mask;
+ ahc_set_width(ahc, &devinfo, scb->ccb->ccb_h.path,
+ MSG_EXT_WDTR_BUS_8_BIT,
+ AHC_TRANS_ACTIVE|AHC_TRANS_GOAL);
+ ahc_set_syncrate(ahc, &devinfo, scb->ccb->ccb_h.path,
+ /*syncrate*/NULL, /*period*/0,
+ /*offset*/0, AHC_TRANS_ACTIVE);
+ tinfo = &ahc->transinfo[devinfo.target_offset];
+ if (tinfo->goal.period) {
+ /* Start the sync negotiation */
+ ahc->sdtrpending |= devinfo.target_mask;
+ scb->flags |= SCB_MSGOUT_SDTR;
+ ahc_outb(ahc, MSG_OUT, HOST_MSG);
+ ahc_outb(ahc, SCSISIGO,
+ ahc_inb(ahc, SCSISIGO) | ATNO);
+ }
+ } else if ((last_msg == MSG_IDENTIFYFLAG
+ || last_msg == HOST_MSG)
+ && (scb->flags & SCB_MSGOUT_SDTR) != 0
+ && (scb->flags & SCB_MSGOUT_SENT) != 0) {
+
+ /* note asynch xfers and clear flag */
+ ahc_set_syncrate(ahc, &devinfo, scb->ccb->ccb_h.path,
+ /*syncrate*/NULL, /*period*/0,
+ /*offset*/0,
+ AHC_TRANS_ACTIVE|AHC_TRANS_GOAL);
+ scb->flags &= ~SCB_MSGOUT_BITS;
+ ahc->sdtrpending &= ~devinfo.target_mask;
+ printf("%s:%c:%d: refuses synchronous negotiation. "
+ "Using asynchronous transfers\n",
+ ahc_name(ahc),
+ devinfo.channel, devinfo.target);
+ } else if ((last_msg == MSG_IDENTIFYFLAG)
+ && (scb->hscb->control & MSG_SIMPLE_Q_TAG) != 0) {
+ struct ccb_trans_settings neg;
+
+ printf("%s:%c:%d: refuses tagged commands. Performing "
+ "non-tagged I/O\n", ahc_name(ahc),
+ devinfo.channel, devinfo.target);
+
+ ahc->tagenable &= ~devinfo.target_mask;
+ neg.flags = 0;
+ neg.valid = CCB_TRANS_TQ_VALID;
+ xpt_setup_ccb(&neg.ccb_h, scb->ccb->ccb_h.path,
+ /*priority*/1);
+ xpt_async(AC_TRANSFER_NEG, scb->ccb->ccb_h.path, &neg);
+ /*
+ * Resend the identify for this CCB as the target
+ * may believe that the selection is invalid otherwise.
+ */
+ ahc_outb(ahc, SCB_CONTROL, ahc_inb(ahc, SCB_CONTROL)
+ & ~MSG_SIMPLE_Q_TAG);
+ scb->hscb->control &= ~MSG_SIMPLE_Q_TAG;
+ scb->ccb->ccb_h.flags &= ~CAM_TAG_ACTION_VALID;
+ ahc_outb(ahc, MSG_OUT, MSG_IDENTIFYFLAG);
+ ahc_outb(ahc, SCSISIGO, ahc_inb(ahc, SCSISIGO) | ATNO);
+
+ /*
+ * Requeue all tagged commands for this target
+ * currently in our posession so they can be
+ * converted to untagged commands.
+ */
+ ahc_search_qinfifo(ahc, SCB_TARGET(scb),
+ SCB_CHANNEL(scb),
+ SCB_LUN(scb),
+ /*tag*/SCB_LIST_NULL,
+ CAM_REQUEUE_REQ,
+ SEARCH_COMPLETE);
+ } else {
+ /*
+ * Otherwise, we ignore it.
+ */
+#ifdef AHC_DEBUG
+ if (ahc_debug & AHC_SHOWMISC)
+ printf("%s:%c:%d: Message reject -- ignored\n",
+ ahc_name(ahc), devinfo.channel,
+ devinfo.target);
+#endif
+ break;
+ }
+ break;
+ }
case BAD_STATUS:
{
u_int scb_index;
@@ -1683,17 +1445,31 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat)
* but due to the way we page SCBs, we can't.
*/
hscb->control = 0;
-
/*
* This request sense could be because the
* the device lost power or in some other
* way has lost our transfer negotiations.
* Renegotiate if appropriate.
*/
+ ahc_set_width(ahc, &devinfo,
+ scb->ccb->ccb_h.path,
+ MSG_EXT_WDTR_BUS_8_BIT,
+ AHC_TRANS_CUR);
+ ahc_set_syncrate(ahc, &devinfo,
+ scb->ccb->ccb_h.path,
+ /*syncrate*/NULL, /*period*/0,
+ /*offset*/0, AHC_TRANS_CUR);
+ scb->flags &= ~SCB_MSGOUT_BITS;
tinfo = &ahc->transinfo[devinfo.target_offset];
- ahc_update_target_msg_request(ahc, &devinfo,
- tinfo,
- /*force*/TRUE);
+ if (tinfo->goal.width) {
+ ahc->wdtrpending |= devinfo.target_mask;
+ hscb->control |= MK_MESSAGE;
+ scb->flags |= SCB_MSGOUT_WDTR;
+ } else if (tinfo->goal.period) {
+ ahc->sdtrpending |= devinfo.target_mask;
+ hscb->control |= MK_MESSAGE;
+ scb->flags |= SCB_MSGOUT_SDTR;
+ }
hscb->status = 0;
hscb->SG_count = 1;
hscb->SG_pointer = scb->ahc_dmaphys;
@@ -1736,15 +1512,19 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat)
}
break;
}
- case TRACE_POINT:
+ case TARGET_SYNC_CMD:
{
- printf("SSTAT2 = 0x%x DFCNTRL = 0x%x\n", ahc_inb(ahc, SSTAT2),
- ahc_inb(ahc, DFCNTRL));
- printf("SSTAT3 = 0x%x DSTATUS = 0x%x\n", ahc_inb(ahc, SSTAT3),
- ahc_inb(ahc, DFSTATUS));
- printf("SSTAT0 = 0x%x, SCB_DATACNT = 0x%x\n",
- ahc_inb(ahc, SSTAT0),
- ahc_inb(ahc, SCB_DATACNT));
+ /*
+ * We've already processed the command. If the command
+ * is still pending, don't unpause the sequencer until
+ * it returns.
+ */
+ xpt_print_path(ahc->path);
+ printf("Saw a target sync cmd\n");
+ if (ahc->pending_device != NULL) {
+ printf(" Pending device too.\n");
+ return;
+ }
break;
}
case TARGET_MSG_HELP:
@@ -1755,56 +1535,105 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat)
restart_sequencer(ahc);
return;
}
- case HOST_MSG_LOOP:
+ case AWAITING_MSG:
{
+ u_int scb_index;
+
+ scb_index = ahc_inb(ahc, SCB_TAG);
+ scb = ahc->scb_data->scbarray[scb_index];
+
+ /*
+ * To facilitate adding multiple messages together,
+ * each routine should increment the index and len
+ * variables instead of setting them explicitly.
+ */
+ ahc->msg_index = 0;
+ ahc->msg_len = 0;
+
/*
- * The sequencer has encountered a message phase
- * that requires host assistance for completion.
- * While handling the message phase(s), we will be
- * notified by the sequencer after each byte is
- * transfered so we can track bus phases.
- *
- * If this is the first time we've seen a HOST_MSG_LOOP,
- * initialize the state of the host message loop.
+ * This SCB had MK_MESSAGE set in its control byte or
+ * we have explicitly set HOST_MSG in MSG_OUT,
+ * informing the sequencer that we want to send a
+ * special message to this target.
*/
- if (ahc->msg_type == MSG_TYPE_NONE) {
- u_int bus_phase;
-
- bus_phase = ahc_inb(ahc, SCSISIGI) & PHASE_MASK;
- if (bus_phase != P_MESGIN && bus_phase != P_MESGOUT)
- panic("ahc_intr: HOST_MSG_LOOP bad phase 0x%x",
- bus_phase);
-
- if (devinfo.role == ROLE_INITIATOR) {
- struct scb *scb;
- u_int scb_index;
-
- scb_index = ahc_inb(ahc, SCB_TAG);
- scb = ahc->scb_data->scbarray[scb_index];
-
- if (bus_phase == P_MESGOUT)
- ahc_setup_initiator_msgout(ahc,
- &devinfo,
- scb);
- else {
- ahc->msg_type =
- MSG_TYPE_INITIATOR_MSGIN;
- ahc->msgin_index = 0;
+ if ((scb->flags & SCB_DEVICE_RESET) == 0
+ && ahc_inb(ahc, MSG_OUT) == MSG_IDENTIFYFLAG
+ && (scb->hscb->control & TAG_ENB) != 0) {
+ ahc->msg_buf[ahc->msg_index++] =
+ scb->ccb->csio.tag_action;
+ ahc->msg_buf[ahc->msg_index++] =
+ scb->hscb->tag;
+ ahc->msg_len += 2;
+ }
+
+ if (scb->flags & SCB_DEVICE_RESET) {
+ ahc->msg_buf[ahc->msg_index++] = MSG_BUS_DEV_RESET;
+ ahc->msg_len++;
+ xpt_print_path(scb->ccb->ccb_h.path);
+ printf("Bus Device Reset Message Sent\n");
+ } else if (scb->flags & SCB_ABORT) {
+ if ((scb->hscb->control & TAG_ENB) != 0)
+ ahc->msg_buf[ahc->msg_index++] = MSG_ABORT_TAG;
+ else
+ ahc->msg_buf[ahc->msg_index++] = MSG_ABORT;
+ ahc->msg_len++;
+ xpt_print_path(scb->ccb->ccb_h.path);
+ printf("Abort Message Sent\n");
+ } else if (scb->flags & SCB_MSGOUT_WDTR) {
+ struct ahc_target_tinfo *tinfo;
+
+ tinfo = &ahc->transinfo[devinfo.target_offset];
+ ahc_construct_wdtr(ahc, tinfo->goal.width);
+ } else if (scb->flags & SCB_MSGOUT_SDTR) {
+ struct ahc_target_tinfo *tinfo;
+ u_int period;
+ u_int maxsync;
+
+ /*
+ * Now that the target is actually selected, we
+ * can further refine our sync rate based on the
+ * output transceiver mode.
+ */
+ if ((ahc->features & AHC_ULTRA2) != 0) {
+ if ((ahc_inb(ahc, SBLKCTL) & ENAB40) != 0
+ && (ahc_inb(ahc, SSTAT2) & EXP_ACTIVE) == 0) {
+ maxsync = AHC_SYNCRATE_ULTRA2;
+ } else {
+ maxsync = AHC_SYNCRATE_ULTRA;
}
+ } else if ((ahc->features & AHC_ULTRA) != 0) {
+ maxsync = AHC_SYNCRATE_ULTRA;
} else {
- if (bus_phase == P_MESGOUT) {
- ahc->msg_type =
- MSG_TYPE_TARGET_MSGOUT;
- ahc->msgin_index = 0;
- } else
- /* XXX Ever executed??? */
- ahc_setup_target_msgin(ahc, &devinfo);
+ maxsync = AHC_SYNCRATE_FAST;
}
+ tinfo = &ahc->transinfo[devinfo.target_offset];
+ period = tinfo->goal.period;
+ ahc_find_syncrate(ahc, &period, maxsync);
+ ahc_construct_sdtr(ahc, period, tinfo->goal.offset);
+ } else {
+ printf("ahc_intr: AWAITING_MSG for an SCB that "
+ "does not have a waiting message");
+ panic("SCB = %d, SCB Control = %x, MSG_OUT = %x "
+ "SCB flags = %x", scb_index, scb->hscb->control,
+ ahc_inb(ahc, MSG_OUT), scb->flags);
}
- /* Pass a NULL path so that handlers generate their own */
- ahc_handle_message_phase(ahc, /*path*/NULL);
- break;
+ /*
+ * Record the fact that we attempted to send a message.
+ */
+ scb->flags |= SCB_MSGOUT_SENT;
+
+ /*
+ * To actually send the message, simply turn on
+ * REQINIT interrupts and let our interrupt handler
+ * do the rest (REQINIT should already be true).
+ */
+ ahc->msg_index = 0;
+ ahc->msg_type = MSG_TYPE_INITIATOR_MSGOUT;
+ ahc->flags |= AHC_HANDLING_REQINITS;
+ ahc_outb(ahc, SIMODE1, ahc_inb(ahc, SIMODE1) | ENREQINIT);
+
+ return;
}
case DATA_OVERRUN:
{
@@ -1997,7 +1826,7 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
CAM_UNEXP_BUSFREE);
} else {
ahc_abort_scbs(ahc, target, channel,
- CAM_LUN_WILDCARD, SCB_LIST_NULL,
+ ALL_LUNS, SCB_LIST_NULL,
CAM_UNEXP_BUSFREE);
printf("%s: ", ahc_name(ahc));
}
@@ -2006,8 +1835,10 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
lastphase, ahc_inb(ahc, SEQADDR0)
| (ahc_inb(ahc, SEQADDR1) << 8));
}
- ahc_clear_msg_state(ahc);
- ahc_outb(ahc, SIMODE1, ahc_inb(ahc, SIMODE1) & ~ENBUSFREE);
+ ahc_outb(ahc, MSG_OUT, MSG_NOOP);
+ ahc_outb(ahc, SIMODE1,
+ ahc_inb(ahc, SIMODE1) & ~(ENBUSFREE|ENREQINIT));
+ ahc->flags &= ~AHC_HANDLING_REQINITS;
ahc_outb(ahc, CLRSINT1, CLRBUSFREE);
ahc_outb(ahc, CLRINT, CLRSCSIINT);
restart_sequencer(ahc);
@@ -2030,6 +1861,11 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
"valid during SELTO scb(%d, %d)\n",
ahc_name(ahc), scbptr, scb_index);
} else {
+ /*
+ * Clear any pending messages for the timed out
+ * target.
+ */
+ ahc_outb(ahc, MSG_OUT, MSG_NOOP);
ahc_handle_devreset(ahc, SCB_TARGET(scb),
SCB_CHANNEL(scb), CAM_SEL_TIMEOUT,
/*ac_code*/0, "Selection Timeout",
@@ -2038,7 +1874,9 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
/* Stop the selection */
ahc_outb(ahc, SCSISEQ, 0);
- ahc_clear_msg_state(ahc);
+ ahc_outb(ahc, SIMODE1,
+ ahc_inb(ahc, SIMODE1) & ~ENREQINIT);
+ ahc->flags &= ~AHC_HANDLING_REQINITS;
ahc_outb(ahc, CLRSINT1, CLRSELTIMEO|CLRBUSFREE);
@@ -2109,14 +1947,14 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
* mesg_out to something other than MSG_NOP.
*/
if (mesg_out != MSG_NOOP) {
- if (ahc->msg_type != MSG_TYPE_NONE)
- ahc->send_msg_perror = TRUE;
- else
- ahc_outb(ahc, MSG_OUT, mesg_out);
+ ahc_outb(ahc, MSG_OUT, mesg_out);
}
ahc_outb(ahc, CLRSINT1, CLRSCSIPERR);
ahc_outb(ahc, CLRINT, CLRSCSIINT);
unpause_sequencer(ahc, /*unpause_always*/TRUE);
+ } else if ((status & REQINIT) != 0
+ && (ahc->flags & AHC_HANDLING_REQINITS) != 0) {
+ ahc_handle_reqinit(ahc, scb);
} else {
xpt_print_path(scb->ccb->ccb_h.path);
printf("Unknown SCSIINT. Status = 0x%x\n", status);
@@ -2127,529 +1965,101 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat)
}
static void
-ahc_build_transfer_msg(struct ahc_softc *ahc, struct ahc_devinfo *devinfo)
-{
- /*
- * We need to initiate transfer negotiations.
- * If our current and goal settings are identical,
- * we want to renegotiate due to a check condition.
- */
- struct ahc_target_tinfo *tinfo;
- int dowide;
- int dosync;
-
- tinfo = &ahc->transinfo[devinfo->target_offset];
- dowide = tinfo->current.width != tinfo->goal.width;
- dosync = tinfo->current.period != tinfo->goal.period;
-
- if (!dowide && !dosync) {
- dowide = tinfo->goal.width != MSG_EXT_WDTR_BUS_8_BIT;
- dosync = tinfo->goal.period != 0;
- }
-
- if (dowide)
- ahc_construct_wdtr(ahc, tinfo->goal.width);
- else if (dosync) {
- struct ahc_syncrate *rate;
- u_int period;
- u_int offset;
-
- period = tinfo->goal.period;
- rate = ahc_devlimited_syncrate(ahc, &period);
- offset = tinfo->goal.offset;
- ahc_validate_offset(ahc, rate, &offset,
- tinfo->current.width);
- ahc_construct_sdtr(ahc, period, offset);
- } else {
- panic("ahc_intr: AWAITING_MSG for negotiation, "
- "but no negotiation needed\n");
- }
-}
-
-static void
-ahc_setup_initiator_msgout(struct ahc_softc *ahc, struct ahc_devinfo *devinfo,
- struct scb *scb)
-{
- /*
- * To facilitate adding multiple messages together,
- * each routine should increment the index and len
- * variables instead of setting them explicitly.
- */
- ahc->msgout_index = 0;
- ahc->msgout_len = 0;
-
- if ((scb->flags & SCB_DEVICE_RESET) == 0
- && ahc_inb(ahc, MSG_OUT) == MSG_IDENTIFYFLAG) {
- u_int identify_msg;
-
- identify_msg = MSG_IDENTIFYFLAG | SCB_LUN(scb);
- if ((scb->hscb->control & DISCENB) != 0)
- identify_msg |= MSG_IDENTIFY_DISCFLAG;
- ahc->msgout_buf[ahc->msgout_index++] = identify_msg;
- ahc->msgout_len++;
-
- if ((scb->hscb->control & TAG_ENB) != 0) {
- ahc->msgout_buf[ahc->msgout_index++] =
- scb->ccb->csio.tag_action;
- ahc->msgout_buf[ahc->msgout_index++] = scb->hscb->tag;
- ahc->msgout_len += 2;
- }
- }
-
- if (scb->flags & SCB_DEVICE_RESET) {
- ahc->msgout_buf[ahc->msgout_index++] = MSG_BUS_DEV_RESET;
- ahc->msgout_len++;
- xpt_print_path(scb->ccb->ccb_h.path);
- printf("Bus Device Reset Message Sent\n");
- } else if (scb->flags & SCB_ABORT) {
- if ((scb->hscb->control & TAG_ENB) != 0)
- ahc->msgout_buf[ahc->msgout_index++] = MSG_ABORT_TAG;
- else
- ahc->msgout_buf[ahc->msgout_index++] = MSG_ABORT;
- ahc->msgout_len++;
- xpt_print_path(scb->ccb->ccb_h.path);
- printf("Abort Message Sent\n");
- } else if ((ahc->targ_msg_req & devinfo->target_mask) != 0) {
- ahc_build_transfer_msg(ahc, devinfo);
- } else {
- printf("ahc_intr: AWAITING_MSG for an SCB that "
- "does not have a waiting message");
- panic("SCB = %d, SCB Control = %x, MSG_OUT = %x "
- "SCB flags = %x", scb->hscb->tag, scb->hscb->control,
- ahc_inb(ahc, MSG_OUT), scb->flags);
- }
-
- /*
- * Clear the MK_MESSAGE flag from the SCB so we aren't
- * asked to send this message again.
- */
- ahc_outb(ahc, SCB_CONTROL, ahc_inb(ahc, SCB_CONTROL) & ~MK_MESSAGE);
- ahc->msgout_index = 0;
- ahc->msg_type = MSG_TYPE_INITIATOR_MSGOUT;
-}
-
-static void
-ahc_setup_target_msgin(struct ahc_softc *ahc, struct ahc_devinfo *devinfo)
-{
- /*
- * To facilitate adding multiple messages together,
- * each routine should increment the index and len
- * variables instead of setting them explicitly.
- */
- ahc->msgout_index = 0;
- ahc->msgout_len = 0;
-
- if ((ahc->targ_msg_req & devinfo->target_mask) != 0)
- ahc_build_transfer_msg(ahc, devinfo);
- else
- panic("ahc_intr: AWAITING target message with no message");
-
- ahc->msgout_index = 0;
- ahc->msg_type = MSG_TYPE_TARGET_MSGIN;
-}
-
-static int
-ahc_handle_msg_reject(struct ahc_softc *ahc, struct ahc_devinfo *devinfo)
-{
- /*
- * What we care about here is if we had an
- * outstanding SDTR or WDTR message for this
- * target. If we did, this is a signal that
- * the target is refusing negotiation.
- */
- struct scb *scb;
- u_int scb_index;
- u_int last_msg;
- int response = 0;
-
- scb_index = ahc_inb(ahc, SCB_TAG);
- scb = ahc->scb_data->scbarray[scb_index];
-
- /* Might be necessary */
- last_msg = ahc_inb(ahc, LAST_MSG);
-
- if (ahc_sent_msg(ahc, MSG_EXT_WDTR, /*full*/FALSE)) {
- struct ahc_target_tinfo *tinfo;
-
- /* note 8bit xfers and clear flag */
- printf("%s:%c:%d: refuses WIDE negotiation. Using "
- "8bit transfers\n", ahc_name(ahc),
- devinfo->channel, devinfo->target);
- ahc_set_width(ahc, devinfo, scb->ccb->ccb_h.path,
- MSG_EXT_WDTR_BUS_8_BIT,
- AHC_TRANS_ACTIVE|AHC_TRANS_GOAL);
- ahc_set_syncrate(ahc, devinfo, scb->ccb->ccb_h.path,
- /*syncrate*/NULL, /*period*/0,
- /*offset*/0, AHC_TRANS_ACTIVE);
- tinfo = &ahc->transinfo[devinfo->target_offset];
- if (tinfo->goal.period) {
- u_int period;
-
- /* Start the sync negotiation */
- period = tinfo->goal.period;
- ahc_devlimited_syncrate(ahc, &period);
- ahc->msgout_index = 0;
- ahc->msgout_len = 0;
- ahc_construct_sdtr(ahc, period, tinfo->goal.offset);
- ahc->msgout_index = 0;
- response = 1;
- }
- } else if (ahc_sent_msg(ahc, MSG_EXT_SDTR, /*full*/FALSE)) {
- /* note asynch xfers and clear flag */
- ahc_set_syncrate(ahc, devinfo, scb->ccb->ccb_h.path,
- /*syncrate*/NULL, /*period*/0,
- /*offset*/0,
- AHC_TRANS_ACTIVE|AHC_TRANS_GOAL);
- printf("%s:%c:%d: refuses synchronous negotiation. "
- "Using asynchronous transfers\n",
- ahc_name(ahc),
- devinfo->channel, devinfo->target);
- } else if ((scb->hscb->control & MSG_SIMPLE_Q_TAG) != 0) {
- struct ccb_trans_settings neg;
-
- printf("%s:%c:%d: refuses tagged commands. Performing "
- "non-tagged I/O\n", ahc_name(ahc),
- devinfo->channel, devinfo->target);
-
- ahc->tagenable &= ~devinfo->target_mask;
- neg.flags = 0;
- neg.valid = CCB_TRANS_TQ_VALID;
- xpt_setup_ccb(&neg.ccb_h, scb->ccb->ccb_h.path, /*priority*/1);
- xpt_async(AC_TRANSFER_NEG, scb->ccb->ccb_h.path, &neg);
-
- /*
- * Resend the identify for this CCB as the target
- * may believe that the selection is invalid otherwise.
- */
- ahc_outb(ahc, SCB_CONTROL, ahc_inb(ahc, SCB_CONTROL)
- & ~MSG_SIMPLE_Q_TAG);
- scb->hscb->control &= ~MSG_SIMPLE_Q_TAG;
- scb->ccb->ccb_h.flags &= ~CAM_TAG_ACTION_VALID;
- ahc_outb(ahc, MSG_OUT, MSG_IDENTIFYFLAG);
- ahc_outb(ahc, SCSISIGO, ahc_inb(ahc, SCSISIGO) | ATNO);
-
- /*
- * Requeue all tagged commands for this target
- * currently in our posession so they can be
- * converted to untagged commands.
- */
- ahc_search_qinfifo(ahc, SCB_TARGET(scb), SCB_CHANNEL(scb),
- SCB_LUN(scb), /*tag*/SCB_LIST_NULL,
- CAM_REQUEUE_REQ, SEARCH_COMPLETE);
- } else {
- /*
- * Otherwise, we ignore it.
- */
- printf("%s:%c:%d: Message reject for %x -- ignored\n",
- ahc_name(ahc), devinfo->channel, devinfo->target,
- last_msg);
- }
- return (response);
-}
-
-static void
-ahc_clear_msg_state(struct ahc_softc *ahc)
-{
- ahc->msgout_len = 0;
- ahc->msgin_index = 0;
- ahc->msg_type = MSG_TYPE_NONE;
- ahc_outb(ahc, MSG_OUT, MSG_NOOP);
-}
-
-static void
-ahc_handle_message_phase(struct ahc_softc *ahc, struct cam_path *path)
+ahc_handle_reqinit(struct ahc_softc *ahc, struct scb *scb)
{
struct ahc_devinfo devinfo;
- u_int bus_phase;
- int end_session;
+ u_int simode1;
ahc_fetch_devinfo(ahc, &devinfo);
-
- end_session = FALSE;
- bus_phase = ahc_inb(ahc, SCSISIGI) & PHASE_MASK;
-
-reswitch:
switch (ahc->msg_type) {
case MSG_TYPE_INITIATOR_MSGOUT:
{
- int lastbyte;
- int phasemis;
- int msgdone;
+ int lastbyte;
+ int phasemis;
+ u_int bus_phase;
- if (ahc->msgout_len == 0)
+ if (ahc->msg_len == 0)
panic("REQINIT interrupt with no active message");
+ lastbyte = (ahc->msg_index == ahc->msg_len - 1);
+ bus_phase = ahc_inb(ahc, SCSISIGI) & PHASE_MASK;
phasemis = bus_phase != P_MESGOUT;
- if (phasemis) {
- if (bus_phase == P_MESGIN) {
- /*
- * Change gears and see if
- * this messages is of interest to
- * us or should be passed back to
- * the sequencer.
- */
- ahc_outb(ahc, CLRSINT1, CLRATNO);
- ahc->send_msg_perror = FALSE;
- ahc->msg_type = MSG_TYPE_INITIATOR_MSGIN;
- ahc->msgin_index = 0;
- goto reswitch;
- }
- end_session = TRUE;
- break;
- }
-
- if (ahc->send_msg_perror) {
- ahc_outb(ahc, CLRSINT1, CLRATNO);
- ahc_outb(ahc, CLRSINT1, CLRREQINIT);
- ahc_outb(ahc, SCSIDATL, MSG_PARITY_ERROR);
- break;
- }
-
- msgdone = ahc->msgout_index == ahc->msgout_len;
- if (msgdone) {
- /*
- * The target has requested a retry.
- * Re-assert ATN, reset our message index to
- * 0, and try again.
- */
- ahc->msgout_index = 0;
- ahc_outb(ahc, SCSISIGO, ahc_inb(ahc, SCSISIGO) | ATNO);
- }
-
- lastbyte = ahc->msgout_index == (ahc->msgout_len - 1);
- if (lastbyte) {
- /* Last byte is signified by dropping ATN */
- ahc_outb(ahc, CLRSINT1, CLRATNO);
- }
- /*
- * Clear our interrupt status and present
- * the next byte on the bus.
- */
- ahc_outb(ahc, CLRSINT1, CLRREQINIT);
- ahc_outb(ahc, SCSIDATL, ahc->msgout_buf[ahc->msgout_index++]);
- break;
- }
- case MSG_TYPE_INITIATOR_MSGIN:
- {
- int phasemis;
- int message_done;
-
- phasemis = bus_phase != P_MESGIN;
-
- if (phasemis) {
- ahc->msgin_index = 0;
- if (bus_phase == P_MESGOUT
- && (ahc->send_msg_perror == TRUE
- || (ahc->msgout_len != 0
- && ahc->msgout_index == 0))) {
- ahc->msg_type = MSG_TYPE_INITIATOR_MSGOUT;
- goto reswitch;
+ if (lastbyte || phasemis) {
+ /* Time to end our message session */
+ ahc->msg_len = 0;
+ ahc->msg_type = MSG_TYPE_NONE;
+ simode1 = ahc_inb(ahc, SIMODE1) & ~ENREQINIT;
+ ahc_outb(ahc, SIMODE1, simode1);
+ ahc_outb(ahc, CLRINT, CLRSCSIINT);
+ ahc->flags &= ~AHC_HANDLING_REQINITS;
+
+ if (phasemis == 0) {
+ ahc_outb(ahc, SINDEX,
+ ahc->msg_buf[ahc->msg_index]);
+ ahc_outb(ahc, RETURN_1, 0);
+ } else {
+ ahc_outb(ahc, RETURN_1, MSGOUT_PHASEMIS);
}
- end_session = TRUE;
- break;
- }
-
- /* Pull the byte in without acking it */
- ahc->msgin_buf[ahc->msgin_index] = ahc_inb(ahc, SCSIBUSL);
-
- message_done = ahc_parse_msg(ahc, path, &devinfo);
-
- if (message_done) {
- /*
- * Clear our incoming message buffer in case there
- * is another message following this one.
- */
- ahc->msgin_index = 0;
+ unpause_sequencer(ahc, /* unpause_always */TRUE);
+ } else {
/*
- * If this message illicited a response,
- * assert ATN so the target takes us to the
- * message out phase.
+ * Clear our interrupt status and present the byte
+ * on the bus, but don't unpause the sequencer.
*/
- if (ahc->msgout_len != 0)
- ahc_outb(ahc, SCSISIGO,
- ahc_inb(ahc, SCSISIGO) | ATNO);
+ ahc_outb(ahc, CLRSINT1, CLRREQINIT);
+ ahc_outb(ahc, CLRINT, CLRSCSIINT);
+ ahc_outb(ahc, SCSIDATL, ahc->msg_buf[ahc->msg_index++]);
}
-
- /* Ack the byte */
- ahc_outb(ahc, CLRSINT1, CLRREQINIT);
- ahc_inb(ahc, SCSIDATL);
- ahc->msgin_index++;
break;
}
- case MSG_TYPE_TARGET_MSGIN:
+ case MSG_TYPE_INITIATOR_MSGIN:
{
- int msgdone;
- int msgout_request;
+ int phasemis;
+ int done;
- if (ahc->msgout_len == 0)
- panic("Target MSGIN with no active message");
+ phasemis = (ahc_inb(ahc, SCSISIGI) & PHASE_MASK) != P_MESGIN;
- /*
- * If we interrupted a mesgout session, the initiator
- * will not know this until our first REQ. So, we
- * only honor mesgout requests after we've sent our
- * first byte.
- */
- if ((ahc_inb(ahc, SCSISIGI) & ATNI) != 0
- && ahc->msgout_index > 0)
- msgout_request = TRUE;
- else
- msgout_request = FALSE;
+ if (phasemis == 0) {
- if (msgout_request) {
-
- /*
- * Change gears and see if
- * this messages is of interest to
- * us or should be passed back to
- * the sequencer.
- */
- ahc->msg_type = MSG_TYPE_TARGET_MSGOUT;
- ahc_outb(ahc, SCSISIGO, P_MESGOUT | BSYO);
- ahc->msgin_index = 0;
- /* Dummy read to REQ for first byte */
+ ahc->msg_len++;
+ /* Pull the byte in without acking it */
+ ahc->msg_buf[ahc->msg_index] = ahc_inb(ahc, SCSIBUSL);
+ done = ahc_parse_msg(ahc, scb, &devinfo);
+ /* Ack the byte */
+ ahc_outb(ahc, CLRSINT1, CLRREQINIT);
+ ahc_outb(ahc, CLRINT, CLRSCSIINT);
ahc_inb(ahc, SCSIDATL);
- ahc_outb(ahc, SXFRCTL0,
- ahc_inb(ahc, SXFRCTL0) | SPIOEN);
- break;
+ ahc->msg_index++;
}
-
- msgdone = ahc->msgout_index == ahc->msgout_len;
- if (msgdone) {
- ahc_outb(ahc, SXFRCTL0,
- ahc_inb(ahc, SXFRCTL0) & ~SPIOEN);
- end_session = TRUE;
- break;
+ if (phasemis || done) {
+ /* Time to end our message session */
+ ahc->msg_len = 0;
+ ahc->msg_type = MSG_TYPE_NONE;
+ simode1 = ahc_inb(ahc, SIMODE1) & ~ENREQINIT;
+ ahc->flags &= ~AHC_HANDLING_REQINITS;
+ ahc_outb(ahc, SIMODE1, simode1);
+ ahc_outb(ahc, CLRINT, CLRSCSIINT);
+ unpause_sequencer(ahc, /* unpause_always */TRUE);
}
-
- /*
- * Present the next byte on the bus.
- */
- ahc_outb(ahc, SXFRCTL0, ahc_inb(ahc, SXFRCTL0) | SPIOEN);
- ahc_outb(ahc, SCSIDATL, ahc->msgout_buf[ahc->msgout_index++]);
- break;
- }
- case MSG_TYPE_TARGET_MSGOUT:
- {
- int lastbyte;
- int msgdone;
-
- /*
- * The initiator signals that this is
- * the last byte by dropping ATN.
- */
- lastbyte = (ahc_inb(ahc, SCSISIGI) & ATNI) == 0;
-
- /*
- * Read the latched byte, but turn off SPIOEN first
- * so that we don't inadvertantly cause a REQ for the
- * next byte.
- */
- ahc_outb(ahc, SXFRCTL0, ahc_inb(ahc, SXFRCTL0) & ~SPIOEN);
- ahc->msgin_buf[ahc->msgin_index] = ahc_inb(ahc, SCSIDATL);
- msgdone = ahc_parse_msg(ahc, path, &devinfo);
- ahc->msgin_index++;
-
- /*
- * XXX Read spec about initiator dropping ATN too soon
- * and use msgdone to detect it.
- */
- if (msgdone) {
- ahc->msgin_index = 0;
-
- /*
- * If this message illicited a response, transition
- * to the Message in phase and send it.
- */
- if (ahc->msgout_len != 0) {
- ahc_outb(ahc, SCSISIGO, P_MESGIN | BSYO);
- ahc_outb(ahc, SXFRCTL0,
- ahc_inb(ahc, SXFRCTL0) | SPIOEN);
- ahc->msg_type = MSG_TYPE_TARGET_MSGIN;
- ahc->msgin_index = 0;
- break;
- }
- }
-
- if (lastbyte)
- end_session = TRUE;
- else {
- /* Ask for the next byte. */
- ahc_outb(ahc, SXFRCTL0,
- ahc_inb(ahc, SXFRCTL0) | SPIOEN);
- }
-
break;
}
default:
panic("Unknown REQINIT message type");
}
-
- if (end_session) {
- ahc_clear_msg_state(ahc);
- ahc_outb(ahc, RETURN_1, EXIT_MSG_LOOP);
- } else
- ahc_outb(ahc, RETURN_1, CONT_MSG_LOOP);
}
-/*
- * See if we sent a particular extended message to the target.
- * If "full" is true, the target saw the full message.
- * If "full" is false, the target saw at least the first
- * byte of the message.
- */
static int
-ahc_sent_msg(struct ahc_softc *ahc, u_int msgtype, int full)
-{
- int found;
- int index;
-
- found = FALSE;
- index = 0;
-
- while (index < ahc->msgout_len) {
- if ((ahc->msgout_buf[index] & MSG_IDENTIFYFLAG) != 0
- || ahc->msgout_buf[index] == MSG_MESSAGE_REJECT)
- index++;
- else if (ahc->msgout_buf[index] >= MSG_SIMPLE_Q_TAG
- && ahc->msgout_buf[index] < MSG_IGN_WIDE_RESIDUE) {
- /* Skip tag type and tag id */
- index += 2;
- } else if (ahc->msgout_buf[index] == MSG_EXTENDED) {
- /* Found a candidate */
- if (ahc->msgout_buf[index+2] == msgtype) {
- u_int end_index;
-
- end_index = index + 1
- + ahc->msgout_buf[index + 1];
- if (full) {
- if (ahc->msgout_index > end_index)
- found = TRUE;
- } else if (ahc->msgout_index > index)
- found = TRUE;
- }
- break;
- } else {
- panic("ahc_sent_msg: Inconsistent msg buffer");
- }
- }
- return (found);
-}
-
-static int
-ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
+ahc_parse_msg(struct ahc_softc *ahc, struct scb *scb,
struct ahc_devinfo *devinfo)
{
int reject;
int done;
- int response;
u_int targ_scsirate;
done = FALSE;
- response = FALSE;
reject = FALSE;
targ_scsirate = ahc->transinfo[devinfo->target_offset].scsirate;
/*
@@ -2658,48 +2068,26 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
* the entire message is availible and has been
* handled, return TRUE indicating that we have
* parsed an entire message.
- *
- * In the case of extended messages, we accept the length
- * byte outright and perform more checking once we know the
- * extended message type.
*/
- switch (ahc->msgin_buf[0]) {
- case MSG_MESSAGE_REJECT:
- response = ahc_handle_msg_reject(ahc, devinfo);
- /* FALLTHROUGH */
- case MSG_NOOP:
- done = TRUE;
- break;
- case MSG_IGN_WIDE_RESIDUE:
- {
- struct ahc_target_tinfo *tinfo;
-
- tinfo = &ahc->transinfo[devinfo->target_offset];
- /* Wait for the whole message */
- if (ahc->msgin_index >= 1) {
- if (ahc->msgin_buf[1] != 1
- || tinfo->current.width == MSG_EXT_WDTR_BUS_8_BIT) {
- reject = TRUE;
- done = TRUE;
- } else
- ahc_handle_ign_wide_residue(ahc, devinfo);
- }
- break;
+ if (ahc->msg_buf[0] != MSG_EXTENDED) {
+ reject = TRUE;
}
- case MSG_EXTENDED:
- {
- /* Wait for enough of the message to begin validation */
- if (ahc->msgin_index < 2)
- break;
- switch (ahc->msgin_buf[2]) {
+
+ /*
+ * Just accept the length byte outright and perform
+ * more checking once we know the message type.
+ */
+ if (!reject && (ahc->msg_len > 2)) {
+ switch (ahc->msg_buf[2]) {
case MSG_EXT_SDTR:
{
struct ahc_syncrate *syncrate;
u_int period;
u_int offset;
u_int saved_offset;
+ u_int maxsync;
- if (ahc->msgin_buf[1] != MSG_EXT_SDTR_LEN) {
+ if (ahc->msg_buf[1] != MSG_EXT_SDTR_LEN) {
reject = TRUE;
break;
}
@@ -2707,19 +2095,28 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
/*
* Wait until we have both args before validating
* and acting on this message.
- *
- * Add one to MSG_EXT_SDTR_LEN to account for
- * the extended message preamble.
*/
- if (ahc->msgin_index < (MSG_EXT_SDTR_LEN + 1))
+ if (ahc->msg_len < (MSG_EXT_SDTR_LEN + /*preamble*/2))
break;
- period = ahc->msgin_buf[3];
- saved_offset = offset = ahc->msgin_buf[4];
- syncrate = ahc_devlimited_syncrate(ahc, &period);
+ period = ahc->msg_buf[3];
+ saved_offset = offset = ahc->msg_buf[4];
+ if ((ahc->features & AHC_ULTRA2) != 0) {
+ if ((ahc_inb(ahc, SBLKCTL) & ENAB40) != 0
+ && (ahc_inb(ahc, SSTAT2) & EXP_ACTIVE) == 0) {
+ maxsync = AHC_SYNCRATE_ULTRA2;
+ } else {
+ maxsync = AHC_SYNCRATE_ULTRA;
+ }
+ } else if ((ahc->features & AHC_ULTRA) != 0) {
+ maxsync = AHC_SYNCRATE_ULTRA;
+ } else {
+ maxsync = AHC_SYNCRATE_FAST;
+ }
+ syncrate = ahc_find_syncrate(ahc, &period, maxsync);
ahc_validate_offset(ahc, syncrate, &offset,
targ_scsirate & WIDEXFER);
- ahc_set_syncrate(ahc, devinfo, path,
+ ahc_set_syncrate(ahc, devinfo, scb->ccb->ccb_h.path,
syncrate, period, offset,
AHC_TRANS_ACTIVE|AHC_TRANS_GOAL);
@@ -2728,23 +2125,27 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
* and didn't have to fall down to async
* transfers.
*/
- if (ahc_sent_msg(ahc, MSG_EXT_SDTR, /*full*/TRUE)) {
+ if ((scb->flags & (SCB_MSGOUT_SDTR|SCB_MSGOUT_SENT))
+ == (SCB_MSGOUT_SDTR|SCB_MSGOUT_SENT)) {
/* We started it */
if (saved_offset != offset) {
/* Went too low - force async */
reject = TRUE;
}
+ scb->flags &= ~SCB_MSGOUT_BITS;
+ ahc->sdtrpending &= ~devinfo->target_mask;
} else {
/*
* Send our own SDTR in reply
*/
- if (bootverbose)
- printf("Sending SDTR!\n");
- ahc->msgout_index = 0;
- ahc->msgout_len = 0;
- ahc_construct_sdtr(ahc, period, offset);
- ahc->msgout_index = 0;
- response = TRUE;
+ scb->flags &= ~SCB_MSGOUT_BITS;
+ scb->flags |= SCB_MSGOUT_SDTR;
+ ahc->sdtrpending |= devinfo->target_mask;
+ xpt_print_path(scb->ccb->ccb_h.path);
+ printf("Sending SDTR!!\n");
+ ahc_outb(ahc, MSG_OUT, HOST_MSG);
+ ahc_outb(ahc, SCSISIGO,
+ ahc_inb(ahc, SCSISIGO) | ATNO);
}
done = TRUE;
break;
@@ -2752,10 +2153,8 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
case MSG_EXT_WDTR:
{
u_int bus_width;
- u_int sending_reply;
- sending_reply = FALSE;
- if (ahc->msgin_buf[1] != MSG_EXT_WDTR_LEN) {
+ if (ahc->msg_buf[1] != MSG_EXT_WDTR_LEN) {
reject = TRUE;
break;
}
@@ -2763,26 +2162,13 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
/*
* Wait until we have our arg before validating
* and acting on this message.
- *
- * Add one to MSG_EXT_WDTR_LEN to account for
- * the extended message preamble.
- */
- if (ahc->msgin_index < (MSG_EXT_WDTR_LEN + 1))
- break;
-
- /*
- * Due to a problem with sync/wide transfers
- * on the aic7880 only allow this on Ultra2
- * controllers for the moment.
*/
- if (devinfo->role == ROLE_TARGET
- && (ahc->features & AHC_ULTRA2) == 0) {
- reject = TRUE;
+ if (ahc->msg_len < (MSG_EXT_WDTR_LEN + /*preamble*/2))
break;
- }
- bus_width = ahc->msgin_buf[3];
- if (ahc_sent_msg(ahc, MSG_EXT_WDTR, /*full*/TRUE)) {
+ bus_width = ahc->msg_buf[3];
+ if ((scb->flags & (SCB_MSGOUT_WDTR|SCB_MSGOUT_SENT))
+ == (SCB_MSGOUT_WDTR|SCB_MSGOUT_SENT)) {
/*
* Don't send a WDTR back to the
* target, since we asked first.
@@ -2806,12 +2192,15 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
case MSG_EXT_WDTR_BUS_16_BIT:
break;
}
+ scb->flags &= ~SCB_MSGOUT_WDTR;
+ ahc->wdtrpending &= ~devinfo->target_mask;
} else {
/*
* Send our own WDTR in reply
*/
- if (bootverbose)
- printf("Sending WDTR!\n");
+ printf("Sending WDTR!\n");
+ scb->flags &= ~SCB_MSGOUT_BITS;
+ scb->flags |= SCB_MSGOUT_WDTR;
switch (bus_width) {
default:
if (ahc->features & AHC_WIDE) {
@@ -2825,41 +2214,33 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
bus_width = MSG_EXT_WDTR_BUS_8_BIT;
break;
}
- ahc->msgout_index = 0;
- ahc->msgout_len = 0;
- ahc_construct_wdtr(ahc, bus_width);
- ahc->msgout_index = 0;
- response = TRUE;
- sending_reply = TRUE;
+ ahc_outb(ahc, MSG_OUT, HOST_MSG);
+ ahc_outb(ahc, SCSISIGO,
+ ahc_inb(ahc, SCSISIGO) | ATNO);
+ ahc->wdtrpending |= devinfo->target_mask;
}
- ahc_set_width(ahc, devinfo, path, bus_width,
+ ahc_set_width(ahc, devinfo, scb->ccb->ccb_h.path,
+ bus_width,
AHC_TRANS_ACTIVE|AHC_TRANS_GOAL);
/* After a wide message, we are async */
- ahc_set_syncrate(ahc, devinfo, path,
+ ahc_set_syncrate(ahc, devinfo, scb->ccb->ccb_h.path,
/*syncrate*/NULL, /*period*/0,
/*offset*/0, AHC_TRANS_ACTIVE);
- if (sending_reply == FALSE && reject == FALSE) {
+ if ((ahc->wdtrpending & devinfo->target_mask) == 0
+ && (reject == 0)) {
struct ahc_target_tinfo *tinfo;
+ scb->flags &= ~SCB_MSGOUT_WDTR;
tinfo = &ahc->transinfo[devinfo->target_offset];
if (tinfo->goal.period) {
- struct ahc_syncrate *rate;
- u_int period;
- u_int offset;
-
/* Start the sync negotiation */
- period = tinfo->goal.period;
- rate = ahc_devlimited_syncrate(ahc,
- &period);
- offset = tinfo->goal.offset;
- ahc_validate_offset(ahc, rate, &offset,
- tinfo->current.width);
- ahc->msgout_index = 0;
- ahc->msgout_len = 0;
- ahc_construct_sdtr(ahc, period, offset);
- ahc->msgout_index = 0;
- response = TRUE;
+ ahc->sdtrpending |=
+ devinfo->target_mask;
+ scb->flags |= SCB_MSGOUT_SDTR;
+ ahc_outb(ahc, MSG_OUT, HOST_MSG);
+ ahc_outb(ahc, SCSISIGO,
+ ahc_inb(ahc, SCSISIGO) | ATNO);
}
}
done = TRUE;
@@ -2870,20 +2251,6 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
reject = TRUE;
break;
}
- break;
- }
- case MSG_ABORT:
- case MSG_ABORT_TAG:
- case MSG_BUS_DEV_RESET:
- case MSG_CLEAR_QUEUE:
- case MSG_TERM_IO_PROC:
- /* Target mode messages */
- if (devinfo->role != ROLE_TARGET)
- reject = TRUE;
- break;
- default:
- reject = TRUE;
- break;
}
if (reject) {
@@ -2891,128 +2258,43 @@ ahc_parse_msg(struct ahc_softc *ahc, struct cam_path *path,
* Assert attention and setup to
* reject the message.
*/
- ahc->msgout_index = 0;
- ahc->msgout_len = 1;
- ahc->msgout_buf[0] = MSG_MESSAGE_REJECT;
+ ahc_outb(ahc, MSG_OUT, MSG_MESSAGE_REJECT);
+ ahc_outb(ahc, SCSISIGO, ahc_inb(ahc, SCSISIGO) | ATNO);
done = TRUE;
- response = TRUE;
}
-
- if (done && !response)
- /* Clear the outgoing message buffer */
- ahc->msgout_len = 0;
-
return (done);
}
static void
-ahc_handle_ign_wide_residue(struct ahc_softc *ahc, struct ahc_devinfo *devinfo)
-{
- u_int scb_index;
- struct scb *scb;
-
- scb_index = ahc_inb(ahc, SCB_TAG);
- scb = ahc->scb_data->scbarray[scb_index];
- if ((ahc_inb(ahc, SEQ_FLAGS) & DPHASE) == 0
- || (scb->ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_IN) {
- /*
- * Ignore the message if we haven't
- * seen an appropriate data phase yet.
- */
- } else {
- /*
- * If the residual occurred on the last
- * transfer and the transfer request was
- * expected to end on an odd count, do
- * nothing. Otherwise, subtract a byte
- * and update the residual count accordingly.
- */
- u_int resid_sgcnt;
-
- resid_sgcnt = ahc_inb(ahc, SCB_RESID_SGCNT);
- if (resid_sgcnt == 0
- && ahc_inb(ahc, DATA_COUNT_ODD) == 1) {
- /*
- * If the residual occurred on the last
- * transfer and the transfer request was
- * expected to end on an odd count, do
- * nothing.
- */
- } else {
- u_int data_cnt;
- u_int data_addr;
- u_int sg_index;
-
- data_cnt = (ahc_inb(ahc, SCB_RESID_DCNT + 2) << 16)
- | (ahc_inb(ahc, SCB_RESID_DCNT + 1) << 8)
- | (ahc_inb(ahc, SCB_RESID_DCNT));
-
- data_addr = (ahc_inb(ahc, SHADDR + 3) << 24)
- | (ahc_inb(ahc, SHADDR + 2) << 16)
- | (ahc_inb(ahc, SHADDR + 1) << 8)
- | (ahc_inb(ahc, SHADDR));
-
- data_cnt += 1;
- data_addr -= 1;
-
- sg_index = scb->sg_count - resid_sgcnt;
-
- /*
- * scb->ahc_dma starts with the second S/G entry.
- */
- if (sg_index-- != 0
- && (scb->ahc_dma[sg_index].len < data_cnt)) {
- u_int sg_addr;
-
- data_cnt = 1;
- data_addr = scb->ahc_dma[sg_index - 1].addr
- + scb->ahc_dma[sg_index - 1].len - 1;
-
- sg_addr = scb->ahc_dmaphys
- + (sg_index * sizeof(*scb->ahc_dma));
- ahc_outb(ahc, SG_NEXT + 3, sg_addr >> 24);
- ahc_outb(ahc, SG_NEXT + 2, sg_addr >> 16);
- ahc_outb(ahc, SG_NEXT + 1, sg_addr >> 8);
- ahc_outb(ahc, SG_NEXT, sg_addr);
- }
-
- ahc_outb(ahc, SCB_RESID_DCNT + 2, data_cnt >> 16);
- ahc_outb(ahc, SCB_RESID_DCNT + 1, data_cnt >> 8);
- ahc_outb(ahc, SCB_RESID_DCNT, data_cnt);
-
- ahc_outb(ahc, SHADDR + 3, data_addr >> 24);
- ahc_outb(ahc, SHADDR + 2, data_addr >> 16);
- ahc_outb(ahc, SHADDR + 1, data_addr >> 8);
- ahc_outb(ahc, SHADDR, data_addr);
- }
- }
-}
-
-static void
ahc_handle_devreset(struct ahc_softc *ahc, int target, char channel,
cam_status status, ac_code acode, char *message,
int verbose_only)
{
struct ahc_devinfo devinfo;
struct cam_path *path;
+ path_id_t path_id;
int found;
int error;
- ahc_compile_devinfo(&devinfo, target, CAM_LUN_WILDCARD, channel,
- ROLE_UNKNOWN);
+ ahc_compile_devinfo(&devinfo, target, channel);
- error = ahc_create_path(ahc, &devinfo, &path);
+ if (channel == 'B')
+ path_id = cam_sim_path(ahc->sim_b);
+ else
+ path_id = cam_sim_path(ahc->sim);
+ error = xpt_create_path(&path, /*periph*/NULL, path_id, target,
+ CAM_LUN_WILDCARD);
/*
* Go back to async/narrow transfers and renegotiate.
- * ahc_set_width and ahc_set_syncrate can cope with NULL
- * paths.
*/
- ahc_set_width(ahc, &devinfo, path, MSG_EXT_WDTR_BUS_8_BIT,
- AHC_TRANS_CUR);
- ahc_set_syncrate(ahc, &devinfo, path, /*syncrate*/NULL,
- /*period*/0, /*offset*/0, AHC_TRANS_CUR);
- found = ahc_abort_scbs(ahc, target, channel, CAM_LUN_WILDCARD,
+ if (error == CAM_REQ_CMP) {
+ ahc_set_width(ahc, &devinfo, path, MSG_EXT_WDTR_BUS_8_BIT,
+ AHC_TRANS_CUR);
+ ahc_set_syncrate(ahc, &devinfo, path, /*syncrate*/NULL,
+ /*period*/0, /*offset*/0, AHC_TRANS_CUR);
+ }
+ found = ahc_abort_scbs(ahc, target, channel, ALL_LUNS,
SCB_LIST_NULL, status);
if (error == CAM_REQ_CMP && acode != 0)
@@ -3064,6 +2346,8 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb)
ahc_index_busy_tcl(ahc, scb->hscb->tcl, /*unbusy*/TRUE);
if (ccb->ccb_h.func_code == XPT_CONT_TARGET_IO) {
+ xpt_print_path(ccb->ccb_h.path);
+ printf("CONT_TARGET_IO complete\n");
ccb->ccb_h.status = CAM_REQ_CMP;
ahc_free_scb(ahc, scb);
xpt_done(ccb);
@@ -3108,6 +2392,22 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb)
ccb->ccb_h.status);
}
+ if ((scb->flags & (SCB_MSGOUT_WDTR|SCB_MSGOUT_SDTR)) != 0) {
+ /*
+ * Turn off the pending flags for any DTR messages
+ * regardless of whether they completed successfully
+ * or not. This ensures that we don't have lingering
+ * state after we abort an SCB.
+ */
+ u_int16_t mask;
+
+ mask = (0x01 << (SCB_TARGET(scb)
+ | (SCB_IS_SCSIBUS_B(scb) ? SELBUSB : 0)));
+ if (scb->flags & SCB_MSGOUT_WDTR)
+ ahc->wdtrpending &= ~mask;
+ if (scb->flags & SCB_MSGOUT_SDTR)
+ ahc->sdtrpending &= ~mask;
+ }
/* Don't clobber any existing error state */
if (ahc_ccb_status(ccb) == CAM_REQ_INPROG) {
ccb->ccb_h.status |= CAM_REQ_CMP;
@@ -3150,7 +2450,6 @@ ahc_init(struct ahc_softc *ahc)
int i;
int term;
u_int scsi_conf;
- u_int scsiseq_template;
#ifdef AHC_PRINT_SRAM
printf("Scratch Ram:");
@@ -3179,21 +2478,11 @@ ahc_init(struct ahc_softc *ahc)
}
/*
- * Default to allowing initiator operations.
- */
- ahc->flags |= AHC_INITIATORMODE;
-
- /*
* XXX Would be better to use a per device flag, but PCI and EISA
* devices don't have them yet.
*/
- if ((AHC_TMODE_ENABLE & (0x01 << ahc->unit)) != 0) {
+ if ((AHC_TMODE_ENABLE & (0x01 << ahc->unit)) != 0)
ahc->flags |= AHC_TARGETMODE;
- if ((ahc->features & AHC_ULTRA2) == 0)
- /* Only have space for both on the Ultra2 chips */
- ahc->flags &= ~AHC_INITIATORMODE;
- }
-
if ((ahc->features & AHC_TWIN) != 0) {
printf("Twin Channel, A SCSI Id=%d, B SCSI Id=%d, primary %c, ",
@@ -3246,10 +2535,18 @@ ahc_init(struct ahc_softc *ahc)
if (ahc->scb_data->maxhscbs < AHC_SCB_MAX) {
ahc->flags |= AHC_PAGESCBS;
ahc->scb_data->maxscbs = AHC_SCB_MAX;
+ if ((ahc->flags & AHC_TARGETMODE) != 0) {
+ /* Steal one slot for TMODE commands */
+ ahc->scb_data->maxscbs--;
+ }
printf("%d/%d SCBs\n", ahc->scb_data->maxhscbs,
ahc->scb_data->maxscbs);
} else {
ahc->scb_data->maxscbs = ahc->scb_data->maxhscbs;
+ if ((ahc->flags & AHC_TARGETMODE) != 0) {
+ /* Steal one slot for TMODE commands */
+ ahc->scb_data->maxscbs--;
+ }
ahc->flags &= ~AHC_PAGESCBS;
printf("%d SCBs\n", ahc->scb_data->maxhscbs);
}
@@ -3283,14 +2580,13 @@ ahc_init(struct ahc_softc *ahc)
ahc_outb(ahc, SIMODE1, ENSELTIMO|ENSCSIRST|ENSCSIPERR);
ahc_outb(ahc, SXFRCTL0, DFON|SPIOEN);
-#if 0
- if ((scsi_conf & RESET_SCSI) != 0
- && (ahc->flags & AHC_INITIATORMODE) != 0)
- ahc->flags |= AHC_RESET_BUS_B;
-#else
- if ((ahc->flags & AHC_INITIATORMODE) != 0)
- ahc->flags |= AHC_RESET_BUS_B;
-#endif
+ if (scsi_conf & RESET_SCSI) {
+ /* Reset the bus */
+ if (bootverbose)
+ printf("%s: Resetting Channel B\n",
+ ahc_name(ahc));
+ ahc_reset_current_bus(ahc);
+ }
/* Select Channel A */
ahc_outb(ahc, SBLKCTL, ahc_inb(ahc, SBLKCTL) & ~SELBUSB);
@@ -3318,14 +2614,14 @@ ahc_init(struct ahc_softc *ahc)
ahc_name(ahc));
}
-#if 0
- if ((scsi_conf & RESET_SCSI) != 0
- && (ahc->flags & AHC_INITIATORMODE) != 0)
- ahc->flags |= AHC_RESET_BUS_A;
-#else
- if ((ahc->flags & AHC_INITIATORMODE) != 0)
- ahc->flags |= AHC_RESET_BUS_A;
-#endif
+ if (scsi_conf & RESET_SCSI) {
+ /* Reset the bus */
+ if (bootverbose)
+ printf("%s: Resetting Channel %c\n", ahc_name(ahc),
+ ahc->channel);
+
+ ahc_reset_current_bus(ahc);
+ }
/*
* Look at the information that board initialization or
@@ -3337,7 +2633,7 @@ ahc_init(struct ahc_softc *ahc)
* flag.
*/
ahc->ultraenb = 0;
- ahc->tagenable = ALL_TARGETS_MASK;
+ ahc->tagenable = ALL_TARGETS;
/* Grab the disconnection disable table and invert it for our needs */
if (ahc->flags & AHC_USEDEFAULTS) {
@@ -3345,7 +2641,7 @@ ahc_init(struct ahc_softc *ahc)
"device parameters\n", ahc_name(ahc));
ahc->flags |= AHC_EXTENDED_TRANS_A|AHC_EXTENDED_TRANS_B|
AHC_TERM_ENB_A|AHC_TERM_ENB_B;
- ahc->discenable = ALL_TARGETS_MASK;
+ ahc->discenable = ALL_TARGETS;
if ((ahc->features & AHC_ULTRA) != 0)
ahc->ultraenb = 0xffff;
} else {
@@ -3421,6 +2717,8 @@ ahc_init(struct ahc_softc *ahc)
}
}
+ ahc->sdtrpending = 0;
+ ahc->wdtrpending = 0;
#ifdef AHC_DEBUG
if (ahc_debug & AHC_SHOWMISC)
@@ -3463,10 +2761,9 @@ ahc_init(struct ahc_softc *ahc)
if ((ahc->flags & AHC_TARGETMODE) != 0) {
size_t array_size;
- array_size = AHC_TMODE_CMDS * sizeof(struct target_cmd);
- ahc->targetcmds = contigmalloc(array_size, M_DEVBUF,
- M_NOWAIT, 0ul, 0xffffffff,
- PAGE_SIZE, 0x10000);
+ ahc->num_targetcmds = 32;
+ array_size = ahc->num_targetcmds * sizeof(struct target_cmd);
+ ahc->targetcmds = malloc(array_size, M_DEVBUF, M_NOWAIT);
if (ahc->targetcmds == NULL) {
printf("%s: unable to allocate targetcmd array. "
@@ -3474,11 +2771,8 @@ ahc_init(struct ahc_softc *ahc)
return (-1);
}
- /* All target command blocks start out invalid. */
- for (i = 0; i < AHC_TMODE_CMDS; i++)
- ahc->targetcmds[i].cmd_valid = 0;
- ahc_outb(ahc, KERNEL_TQINPOS, 0);
- ahc_outb(ahc, TQINPOS, 0);
+ bzero(ahc->targetcmds, array_size);
+ ahc_outb(ahc, TMODE_CMDADDR_NEXT, 0);
}
/*
@@ -3535,10 +2829,6 @@ ahc_init(struct ahc_softc *ahc)
ahc_outb(ahc, QINPOS, 0);
ahc_outb(ahc, QOUTPOS, 0);
- /* Don't have any special messages to send to targets */
- ahc_outb(ahc, TARGET_MSG_REQUEST, 0);
- ahc_outb(ahc, TARGET_MSG_REQUEST + 1, 0);
-
/*
* Use the built in queue management registers
* if they are available.
@@ -3561,16 +2851,6 @@ ahc_init(struct ahc_softc *ahc)
ahc_outb(ahc, MSG_OUT, MSG_NOOP);
/*
- * Setup the allowed SCSI Sequences based on operational mode.
- * If we are a target, we'll enalbe select in operations once
- * we've had a lun enabled.
- */
- scsiseq_template = ENSELO|ENAUTOATNO|ENAUTOATNP;
- if ((ahc->flags & AHC_INITIATORMODE) != 0)
- scsiseq_template |= ENRSELI;
- ahc_outb(ahc, SCSISEQ_TEMPLATE, scsiseq_template);
-
- /*
* Load the Sequencer program and Enable the adapter
* in "fast" mode.
*/
@@ -3586,6 +2866,21 @@ ahc_init(struct ahc_softc *ahc)
return (0);
}
+static void
+ahcminphys(struct buf *bp)
+{
+/*
+ * Even though the card can transfer up to 16megs per command
+ * we are limited by the number of segments in the dma segment
+ * list that we can hold. The worst case is that all pages are
+ * discontinuous physically, hense the "page per segment" limit
+ * enforced here.
+ */
+ if (bp->b_bcount > ((AHC_NSEG - 1) * PAGE_SIZE)) {
+ bp->b_bcount = ((AHC_NSEG - 1) * PAGE_SIZE);
+ }
+}
+
static cam_status
ahc_find_tmode_devs(struct ahc_softc *ahc, struct cam_sim *sim, union ccb *ccb,
struct tmode_tstate **tstate, struct tmode_lstate **lstate,
@@ -3601,34 +2896,22 @@ ahc_find_tmode_devs(struct ahc_softc *ahc, struct cam_sim *sim, union ccb *ccb,
return (CAM_REQ_INVALID);
/* Range check target and lun */
+ if (cam_sim_bus(sim) == 0)
+ our_id = ahc->our_id;
+ else
+ our_id = ahc->our_id_b;
+ if (ccb->ccb_h.target_id > ((ahc->features & AHC_WIDE) ? 15 : 7)
+ || ((ahc->features & AHC_MULTI_TID) == 0
+ && (ccb->ccb_h.target_id != our_id)))
+ return (CAM_TID_INVALID);
- /*
- * Handle the 'black hole' device that sucks up
- * requests to unattached luns on enabled targets.
- */
- if (ccb->ccb_h.target_id == CAM_TARGET_WILDCARD
- && ccb->ccb_h.target_lun == CAM_LUN_WILDCARD) {
- *tstate = NULL;
- *lstate = ahc->black_hole;
- } else {
- if (cam_sim_bus(sim) == 0)
- our_id = ahc->our_id;
- else
- our_id = ahc->our_id_b;
- if (ccb->ccb_h.target_id > ((ahc->features & AHC_WIDE) ? 15 : 7)
- || ((ahc->features & AHC_MULTI_TID) == 0
- && (ccb->ccb_h.target_id != our_id)))
- return (CAM_TID_INVALID);
-
- if (ccb->ccb_h.target_lun > 8)
- return (CAM_LUN_INVALID);
-
- *tstate = ahc->enabled_targets[ccb->ccb_h.target_id];
- *lstate = NULL;
- if (*tstate != NULL)
- *lstate =
- (*tstate)->enabled_luns[ccb->ccb_h.target_lun];
- }
+ if (ccb->ccb_h.target_lun > 8)
+ return (CAM_LUN_INVALID);
+
+ *tstate = ahc->enabled_targets[ccb->ccb_h.target_id];
+ *lstate = NULL;
+ if (*tstate != NULL)
+ *lstate = (*tstate)->enabled_luns[ccb->ccb_h.target_lun];
if (notfound_failure != 0 && *lstate == NULL)
return (CAM_PATH_INVALID);
@@ -3662,15 +2945,9 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
&lstate, TRUE);
if (status != CAM_REQ_CMP) {
- if (ccb->ccb_h.func_code == XPT_CONT_TARGET_IO) {
- /* Response from the black hole device */
- tstate = NULL;
- lstate = ahc->black_hole;
- } else {
- ccb->ccb_h.status = status;
- xpt_done(ccb);
- break;
- }
+ ccb->ccb_h.status = status;
+ xpt_done(ccb);
+ break;
}
if (ccb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO) {
SLIST_INSERT_HEAD(&lstate->accept_tios, &ccb->ccb_h,
@@ -3685,6 +2962,8 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
* the original command.
*/
target_id = ccb->csio.init_id;
+ xpt_print_path(ccb->ccb_h.path);
+ printf("Sending a continue TIO\n");
/* FALLTHROUGH */
}
case XPT_SCSI_IO: /* Execute the requested I/O operation */
@@ -3746,7 +3025,21 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
hscb->control |= MK_MESSAGE;
ahc_execute_scb(scb, NULL, 0, 0);
} else {
- if (ccb->ccb_h.func_code == XPT_CONT_TARGET_IO) {
+ if (ccb->ccb_h.func_code == XPT_SCSI_IO) {
+ if (tinfo->current.width != tinfo->goal.width) {
+ if ((ahc->wdtrpending & mask) == 0) {
+ ahc->wdtrpending |= mask;
+ hscb->control |= MK_MESSAGE;
+ scb->flags |= SCB_MSGOUT_WDTR;
+ }
+ } else if ((tinfo->current.period
+ != tinfo->goal.period)
+ && (ahc->sdtrpending & mask) == 0) {
+ ahc->sdtrpending |= mask;
+ hscb->control |= MK_MESSAGE;
+ scb->flags |= SCB_MSGOUT_SDTR;
+ }
+ } else {
if (ahc->pending_device == lstate) {
scb->flags |= SCB_TARGET_IMMEDIATE;
ahc->pending_device = NULL;
@@ -3797,14 +3090,105 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
break;
}
case XPT_EN_LUN: /* Enable LUN as a target */
- ahc_handle_en_lun(ahc, sim, ccb);
- xpt_done(ccb);
- break;
- case XPT_ABORT: /* Abort the specified CCB */
{
- ahc_abort_ccb(ahc, sim, ccb);
+ struct tmode_tstate *tstate;
+ struct tmode_lstate *lstate;
+ struct ccb_en_lun *cel;
+ cam_status status;
+ int target;
+ int lun;
+
+ status = ahc_find_tmode_devs(ahc, sim, ccb, &tstate, &lstate,
+ /* notfound_failure*/FALSE);
+
+ if (status != CAM_REQ_CMP) {
+ ccb->ccb_h.status = status;
+ xpt_done(ccb);
+ break;
+ }
+
+ cel = &ccb->cel;
+ target = ccb->ccb_h.target_id;
+ lun = ccb->ccb_h.target_lun;
+ if (cel->enable != 0) {
+ /* Are we already enabled?? */
+ if (lstate != NULL) {
+ ccb->ccb_h.status = CAM_LUN_ALRDY_ENA;
+ xpt_done(ccb);
+ break;
+ }
+
+ if (cel->grp6_len != 0
+ || cel->grp7_len != 0) {
+ /*
+ * Don't (yet?) support vendor
+ * specific commands.
+ */
+ ccb->ccb_h.status = CAM_REQ_INVALID;
+ xpt_done(ccb);
+ break;
+ }
+
+ /*
+ * Seems to be okay.
+ * Setup our data structures.
+ */
+ if (tstate == NULL) {
+ tstate = malloc(sizeof(*tstate),
+ M_DEVBUF, M_NOWAIT);
+ if (tstate == NULL) {
+ ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
+ xpt_done(ccb);
+ break;
+ }
+ bzero(tstate, sizeof(*tstate));
+ ahc->enabled_targets[target] = tstate;
+ }
+ lstate = malloc(sizeof(*lstate), M_DEVBUF, M_NOWAIT);
+ if (lstate == NULL) {
+ ccb->ccb_h.status = CAM_RESRC_UNAVAIL;
+ xpt_done(ccb);
+ break;
+ }
+ bzero(lstate, sizeof(*lstate));
+ SLIST_INIT(&lstate->accept_tios);
+ SLIST_INIT(&lstate->immed_notifies);
+ tstate->enabled_luns[lun] = lstate;
+ if ((ahc->features & AHC_MULTI_TID) != 0) {
+ u_int16_t targid_mask;
+
+ pause_sequencer(ahc);
+ targid_mask = ahc_inb(ahc, TARGID)
+ | (ahc_inb(ahc, TARGID + 1) << 8);
+
+ targid_mask |= (0x01 << target);
+ ahc_outb(ahc, TARGID, targid_mask);
+ ahc_outb(ahc, TARGID+1, (targid_mask >> 8));
+ unpause_sequencer(ahc, /*always?*/FALSE);
+ }
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ xpt_print_path(ccb->ccb_h.path);
+ printf("Lun now enabled for target mode\n");
+ xpt_done(ccb);
+ break;
+ } else {
+ /* XXX Fully Implement Disable */
+ if (lstate == NULL) {
+ ccb->ccb_h.status = CAM_LUN_INVALID;
+ xpt_done(ccb);
+ break;
+ }
+ ccb->ccb_h.status = CAM_REQ_CMP;
+ xpt_done(ccb);
+ break;
+ }
break;
}
+ case XPT_ABORT: /* Abort the specified CCB */
+ /* XXX Implement */
+ ccb->ccb_h.status = CAM_REQ_INVALID;
+ xpt_done(ccb);
+ break;
case XPT_SET_TRAN_SETTINGS:
{
struct ahc_devinfo devinfo;
@@ -3815,9 +3199,7 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
cts = &ccb->cts;
ahc_compile_devinfo(&devinfo, cts->ccb_h.target_id,
- cts->ccb_h.target_lun,
- SIM_IS_SCSIBUS_B(ahc, sim) ? 'B' : 'A',
- ROLE_UNKNOWN);
+ SIM_IS_SCSIBUS_B(ahc, sim) ? 'B' : 'A');
tinfo = &ahc->transinfo[devinfo.target_offset];
update_type = 0;
if ((cts->flags & CCB_TRANS_CURRENT_SETTINGS) != 0)
@@ -3853,8 +3235,10 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
cts->bus_width = MSG_EXT_WDTR_BUS_8_BIT;
break;
}
- ahc_set_width(ahc, &devinfo, cts->ccb_h.path,
- cts->bus_width, update_type);
+ if ((update_type & AHC_TRANS_GOAL) != 0)
+ tinfo->goal.width = cts->bus_width;
+ if ((update_type & AHC_TRANS_USER) != 0)
+ tinfo->user.width = cts->bus_width;
}
if ((cts->valid & CCB_TRANS_SYNC_RATE_VALID) != 0) {
@@ -3868,21 +3252,30 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
else
maxsync = AHC_SYNCRATE_FAST;
- if ((cts->valid & CCB_TRANS_SYNC_OFFSET_VALID) == 0)
+ if ((cts->valid & CCB_TRANS_SYNC_OFFSET_VALID) != 0) {
+ if (cts->sync_offset != 0)
+ cts->sync_offset = ~0;
+ } else {
cts->sync_offset = 0;
+ }
syncrate = ahc_find_syncrate(ahc, &cts->sync_period,
maxsync);
ahc_validate_offset(ahc, syncrate, &cts->sync_offset,
- MSG_EXT_WDTR_BUS_8_BIT);
+ tinfo->goal.width);
/* We use a period of 0 to represent async */
if (cts->sync_offset == 0)
cts->sync_period = 0;
- ahc_set_syncrate(ahc, &devinfo, cts->ccb_h.path,
- syncrate, cts->sync_period,
- cts->sync_offset, update_type);
+ if ((update_type & AHC_TRANS_GOAL) != 0) {
+ tinfo->goal.period = cts->sync_period;
+ tinfo->goal.offset = cts->sync_offset;
+ }
+ if ((update_type & AHC_TRANS_USER) != 0) {
+ tinfo->user.period = cts->sync_period;
+ tinfo->user.offset = cts->sync_offset;
+ }
}
splx(s);
ccb->ccb_h.status = CAM_REQ_CMP;
@@ -3900,9 +3293,7 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
cts = &ccb->cts;
ahc_compile_devinfo(&devinfo, cts->ccb_h.target_id,
- cts->ccb_h.target_lun,
- SIM_IS_SCSIBUS_B(ahc, sim) ? 'B' : 'A',
- ROLE_UNKNOWN);
+ SIM_IS_SCSIBUS_B(ahc, sim) ? 'B' : 'A');
targ_info = &ahc->transinfo[devinfo.target_offset];
if ((cts->flags & CCB_TRANS_CURRENT_SETTINGS) != 0)
@@ -4007,20 +3398,14 @@ ahc_action(struct cam_sim *sim, union ccb *ccb)
} else {
cpi->target_sprt = 0;
}
- cpi->hba_misc = (ahc->flags & AHC_INITIATORMODE)
- ? 0 : PIM_NOINITIATOR;
+ cpi->hba_misc = 0;
cpi->hba_eng_cnt = 0;
cpi->max_target = (ahc->features & AHC_WIDE) ? 15 : 7;
cpi->max_lun = 7;
- if (SIM_IS_SCSIBUS_B(ahc, sim)) {
+ if (SIM_IS_SCSIBUS_B(ahc, sim))
cpi->initiator_id = ahc->our_id_b;
- if ((ahc->flags & AHC_RESET_BUS_B) == 0)
- cpi->hba_misc |= PIM_NOBUSRESET;
- } else {
+ else
cpi->initiator_id = ahc->our_id;
- if ((ahc->flags & AHC_RESET_BUS_A) == 0)
- cpi->hba_misc |= PIM_NOBUSRESET;
- }
cpi->bus_id = cam_sim_bus(sim);
strncpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
strncpy(cpi->hba_vid, "Adaptec", HBA_IDLEN);
@@ -4051,9 +3436,7 @@ ahc_async(void *callback_arg, u_int32_t code, struct cam_path *path, void *arg)
struct ahc_devinfo devinfo;
ahc_compile_devinfo(&devinfo, xpt_path_target_id(path),
- xpt_path_lun_id(path),
- SIM_IS_SCSIBUS_B(ahc, sim) ? 'B' : 'A',
- ROLE_UNKNOWN);
+ SIM_IS_SCSIBUS_B(ahc, sim) ? 'B' : 'A');
/*
* Revert to async/narrow transfers
@@ -4152,12 +3535,12 @@ ahc_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments,
(ccb->ccb_h.timeout * hz) / 1000);
if ((scb->flags & SCB_TARGET_IMMEDIATE) != 0) {
+ xpt_print_path(ccb->ccb_h.path);
+ printf("Returning an immediate CTIO\n");
if ((ahc->flags & AHC_PAGESCBS) == 0)
ahc_outb(ahc, SCBPTR, scb->hscb->tag);
- pause_sequencer(ahc);
ahc_outb(ahc, SCB_TAG, scb->hscb->tag);
- ahc_outb(ahc, RETURN_1, CONT_MSG_LOOP);
- unpause_sequencer(ahc, /*unpause_always*/FALSE);
+ unpause_sequencer(ahc, /*unpause_always*/TRUE);
} else {
ahc->qinfifo[ahc->qinfifonext++] = scb->hscb->tag;
@@ -4428,10 +3811,7 @@ ahc_loadseq(struct ahc_softc *ahc)
u_int8_t download_consts[4];
/* Setup downloadable constant table */
-#if 0
- /* No downloaded constants are currently defined. */
download_consts[TMODE_NUMCMDS] = ahc->num_targetcmds;
-#endif
cur_patch = patches;
downloaded = 0;
@@ -4716,14 +4096,12 @@ ahc_timeout(void *arg)
break;
}
- printf(", SEQADDR == 0x%x\n",
- ahc_inb(ahc, SEQADDR0) | (ahc_inb(ahc, SEQADDR1) << 8));
-
-#if 0
printf(", SCSISIGI == 0x%x\n", ahc_inb(ahc, SCSISIGI));
- printf("SIMODE1 = 0x%x\n", ahc_inb(ahc, SIMODE1));
- printf("INTSTAT = 0x%x\n", ahc_inb(ahc, INTSTAT));
+
+ printf("SEQADDR == 0x%x\n", ahc_inb(ahc, SEQADDR0)
+ | (ahc_inb(ahc, SEQADDR1) << 8));
printf("SSTAT1 == 0x%x\n", ahc_inb(ahc, SSTAT1));
+#if 0
printf("SCSIRATE == 0x%x\n", ahc_inb(ahc, SCSIRATE));
printf("CCSCBCTL == 0x%x\n", ahc_inb(ahc, CCSCBCTL));
printf("CCSCBCNT == 0x%x\n", ahc_inb(ahc, CCSCBCNT));
@@ -4731,6 +4109,7 @@ ahc_timeout(void *arg)
printf("DFSTATUS == 0x%x\n", ahc_inb(ahc, DFSTATUS));
printf("CCHCNT == 0x%x\n", ahc_inb(ahc, CCHCNT));
#endif
+ /* Decide our course of action */
if (scb->flags & SCB_DEVICE_RESET) {
/*
* Been down this road before.
@@ -4743,26 +4122,18 @@ bus_reset:
"%d SCBs aborted\n", ahc_name(ahc), channel, found);
} else {
/*
- * If we are a target, transition to bus free and report
- * the timeout.
- *
- * The target/initiator that is holding up the bus may not
+ * Send a Bus Device Reset message:
+ * The target that is holding up the bus may not
* be the same as the one that triggered this timeout
* (different commands have different timeout lengths).
- * If the bus is idle and we are actiing as the initiator
- * for this request, queue a BDR message to the timed out
- * target. Otherwise, if the timed out transaction is
- * active:
- * Initiator transaction:
- * Stuff the message buffer with a BDR message and assert
- * ATN in the hopes that the target will let go of the bus
- * and go to the mesgout phase. If this fails, we'll
- * get another timeout 2 seconds later which will attempt
- * a bus reset.
- *
- * Target transaction:
- * Transition to BUS FREE and report the error.
- * It's good to be the target!
+ * Our strategy here is to queue a BDR message
+ * to the timed out target if the bus is idle.
+ * Otherwise, if we have an active target we stuff the
+ * message buffer with a BDR message and assert ATN
+ * in the hopes that the target will let go of the bus
+ * and go to the mesgout phase. If this fails, we'll
+ * get another timeout 2 seconds later which will attempt
+ * a bus reset.
*/
u_int active_scb_index;
@@ -4793,25 +4164,7 @@ bus_reset:
(newtimeout * hz) / 1000);
splx(s);
return;
- }
-
- /* It's us */
- if ((scb->hscb->control & TARGET_SCB) != 0) {
-
- /*
- * Send back any queued up transactions
- * and properly record the error condition.
- */
- ahc_freeze_devq(ahc, scb->ccb->ccb_h.path);
- ahc_set_ccb_status(scb->ccb, CAM_CMD_TIMEOUT);
- ahc_freeze_ccb(scb->ccb);
- ahc_done(ahc, scb);
-
- /* Will clear us from the bus */
- restart_sequencer(ahc);
- return;
}
-
ahc_set_recoveryscb(ahc, active_scb);
ahc_outb(ahc, MSG_OUT, MSG_BUS_DEV_RESET);
ahc_outb(ahc, SCSISIGO, bus_state|ATNO);
@@ -4824,15 +4177,6 @@ bus_reset:
} else {
int disconnected;
- if (bus_state != P_BUSFREE
- && (ahc_inb(ahc, SSTAT0) & TARGET) != 0) {
- /* Hung target selection. Goto busfree */
- printf("%s: Hung target selection\n",
- ahc_name(ahc));
- restart_sequencer(ahc);
- return;
- }
-
if (ahc_search_qinfifo(ahc, target, channel, lun,
scb->hscb->tag, /*status*/0,
SEARCH_COUNT) > 0) {
@@ -4959,86 +4303,6 @@ ahc_search_qinfifo(struct ahc_softc *ahc, int target, char channel,
}
-static void
-ahc_abort_ccb(struct ahc_softc *ahc, struct cam_sim *sim, union ccb *ccb)
-{
- union ccb *abort_ccb;
-
- abort_ccb = ccb->cab.abort_ccb;
- switch (abort_ccb->ccb_h.func_code) {
- case XPT_ACCEPT_TARGET_IO:
- case XPT_IMMED_NOTIFY:
- case XPT_CONT_TARGET_IO:
- {
- struct tmode_tstate *tstate;
- struct tmode_lstate *lstate;
- struct ccb_hdr_slist *list;
- cam_status status;
-
- status = ahc_find_tmode_devs(ahc, sim, abort_ccb, &tstate,
- &lstate, TRUE);
-
- if (status != CAM_REQ_CMP) {
- ccb->ccb_h.status = status;
- break;
- }
-
- if (abort_ccb->ccb_h.func_code == XPT_ACCEPT_TARGET_IO)
- list = &lstate->accept_tios;
- else if (abort_ccb->ccb_h.func_code == XPT_IMMED_NOTIFY)
- list = &lstate->immed_notifies;
- else
- list = NULL;
-
- if (list != NULL) {
- struct ccb_hdr *curelm;
- int found;
-
- curelm = SLIST_FIRST(list);
- found = 0;
- if (curelm == &abort_ccb->ccb_h) {
- found = 1;
- SLIST_REMOVE_HEAD(list, sim_links.sle);
- } else {
- while(curelm != NULL) {
- struct ccb_hdr *nextelm;
-
- nextelm =
- SLIST_NEXT(curelm, sim_links.sle);
-
- if (nextelm == &abort_ccb->ccb_h) {
- found = 1;
- SLIST_NEXT(curelm,
- sim_links.sle) =
- SLIST_NEXT(nextelm,
- sim_links.sle);
- break;
- }
- curelm = nextelm;
- }
- }
-
- if (found)
- abort_ccb->ccb_h.status = CAM_REQ_ABORTED;
- else {
- printf("Not found\n");
- ccb->ccb_h.status = CAM_PATH_INVALID;
- }
- break;
- }
- /* FALLTHROUGH */
- }
- case XPT_SCSI_IO:
- /* XXX Fully implement the hard ones */
- ccb->ccb_h.status = CAM_UA_ABORT;
- break;
- default:
- ccb->ccb_h.status = CAM_REQ_INVALID;
- break;
- }
- xpt_done(ccb);
-}
-
/*
* Abort all SCBs that match the given description (target/channel/lun/tag),
* setting their status to the passed in status if the status has not already
@@ -5303,9 +4567,8 @@ ahc_reset_channel(struct ahc_softc *ahc, char channel, int initiate_reset)
* Clean up all the state information for the
* pending transactions on this bus.
*/
- found = ahc_abort_scbs(ahc, CAM_TARGET_WILDCARD, channel,
- CAM_LUN_WILDCARD, SCB_LIST_NULL,
- CAM_SCSI_BUS_RESET);
+ found = ahc_abort_scbs(ahc, ALL_TARGETS, channel, ALL_LUNS,
+ SCB_LIST_NULL, CAM_SCSI_BUS_RESET);
path = channel == 'B' ? ahc->path_b : ahc->path;
/* Notify the XPT that a bus reset occurred */
@@ -5318,8 +4581,7 @@ ahc_reset_channel(struct ahc_softc *ahc, char channel, int initiate_reset)
for (target = 0; target <= max_target; target++) {
struct ahc_devinfo devinfo;
- ahc_compile_devinfo(&devinfo, target, CAM_LUN_WILDCARD,
- channel, ROLE_UNKNOWN);
+ ahc_compile_devinfo(&devinfo, target, channel);
ahc_set_width(ahc, &devinfo, path, MSG_EXT_WDTR_BUS_8_BIT,
AHC_TRANS_CUR);
ahc_set_syncrate(ahc, &devinfo, path, /*syncrate*/NULL,
@@ -5341,7 +4603,8 @@ ahc_reset_channel(struct ahc_softc *ahc, char channel, int initiate_reset)
* upsetting the current bus.
*/
ahc_outb(ahc, SBLKCTL, sblkctl ^ SELBUSB);
- ahc_outb(ahc, SIMODE1, ahc_inb(ahc, SIMODE1) & ~ENBUSFREE);
+ ahc_outb(ahc, SIMODE1,
+ ahc_inb(ahc, SIMODE1) & ~(ENBUSFREE|ENREQINIT));
ahc_outb(ahc, SCSISEQ,
ahc_inb(ahc, SCSISEQ) & (ENSELI|ENRSELI|ENAUTOATNP));
if (initiate_reset)
@@ -5351,8 +4614,10 @@ ahc_reset_channel(struct ahc_softc *ahc, char channel, int initiate_reset)
unpause_sequencer(ahc, /*unpause_always*/FALSE);
} else {
/* Case 2: A command from this bus is active or we're idle */
- ahc_clear_msg_state(ahc);
- ahc_outb(ahc, SIMODE1, ahc_inb(ahc, SIMODE1) & ~ENBUSFREE);
+ ahc_outb(ahc, SIMODE1,
+ ahc_inb(ahc, SIMODE1) & ~(ENBUSFREE|ENREQINIT));
+ ahc->flags &= ~AHC_HANDLING_REQINITS;
+ ahc->msg_type = MSG_TYPE_NONE;
ahc_outb(ahc, SCSISEQ,
ahc_inb(ahc, SCSISEQ) & (ENSELI|ENRSELI|ENAUTOATNP));
if (initiate_reset)
@@ -5373,9 +4638,9 @@ ahc_match_scb (struct scb *scb, int target, char channel, int lun, u_int tag)
match = ((chan == channel) || (channel == ALL_CHANNELS));
if (match != 0)
- match = ((targ == target) || (target == CAM_TARGET_WILDCARD));
+ match = ((targ == target) || (target == ALL_TARGETS));
if (match != 0)
- match = ((lun == slun) || (lun == CAM_LUN_WILDCARD));
+ match = ((lun == slun) || (lun == ALL_LUNS));
if (match != 0)
match = ((tag == scb->hscb->tag) || (tag == SCB_LIST_NULL));
@@ -5385,22 +4650,22 @@ ahc_match_scb (struct scb *scb, int target, char channel, int lun, u_int tag)
static void
ahc_construct_sdtr(struct ahc_softc *ahc, u_int period, u_int offset)
{
- ahc->msgout_buf[ahc->msgout_index++] = MSG_EXTENDED;
- ahc->msgout_buf[ahc->msgout_index++] = MSG_EXT_SDTR_LEN;
- ahc->msgout_buf[ahc->msgout_index++] = MSG_EXT_SDTR;
- ahc->msgout_buf[ahc->msgout_index++] = period;
- ahc->msgout_buf[ahc->msgout_index++] = offset;
- ahc->msgout_len += 5;
+ ahc->msg_buf[ahc->msg_index++] = MSG_EXTENDED;
+ ahc->msg_buf[ahc->msg_index++] = MSG_EXT_SDTR_LEN;
+ ahc->msg_buf[ahc->msg_index++] = MSG_EXT_SDTR;
+ ahc->msg_buf[ahc->msg_index++] = period;
+ ahc->msg_buf[ahc->msg_index++] = offset;
+ ahc->msg_len += 5;
}
static void
ahc_construct_wdtr(struct ahc_softc *ahc, u_int bus_width)
{
- ahc->msgout_buf[ahc->msgout_index++] = MSG_EXTENDED;
- ahc->msgout_buf[ahc->msgout_index++] = MSG_EXT_WDTR_LEN;
- ahc->msgout_buf[ahc->msgout_index++] = MSG_EXT_WDTR;
- ahc->msgout_buf[ahc->msgout_index++] = bus_width;
- ahc->msgout_len += 4;
+ ahc->msg_buf[ahc->msg_index++] = MSG_EXTENDED;
+ ahc->msg_buf[ahc->msg_index++] = MSG_EXT_WDTR_LEN;
+ ahc->msg_buf[ahc->msg_index++] = MSG_EXT_WDTR;
+ ahc->msg_buf[ahc->msg_index++] = bus_width;
+ ahc->msg_len += 4;
}
static void
@@ -5495,9 +4760,7 @@ ahc_update_pending_syncrates(struct ahc_softc *ahc)
pending_scb = (struct scb *)ccbh->ccb_scb_ptr;
pending_hscb = pending_scb->hscb;
ahc_compile_devinfo(&devinfo, SCB_TARGET(pending_scb),
- SCB_LUN(pending_scb),
- SCB_CHANNEL(pending_scb),
- ROLE_UNKNOWN);
+ SCB_CHANNEL(pending_scb));
tinfo = &ahc->transinfo[devinfo.target_offset];
pending_hscb->control &= ~ULTRAENB;
if ((ahc->ultraenb & devinfo.target_mask) != 0)
@@ -5528,9 +4791,7 @@ ahc_update_pending_syncrates(struct ahc_softc *ahc)
pending_scb = ahc->scb_data->scbarray[scb_tag];
pending_hscb = pending_scb->hscb;
ahc_compile_devinfo(&devinfo, SCB_TARGET(pending_scb),
- SCB_LUN(pending_scb),
- SCB_CHANNEL(pending_scb),
- ROLE_UNKNOWN);
+ SCB_CHANNEL(pending_scb));
tinfo = &ahc->transinfo[devinfo.target_offset];
control = ahc_inb(ahc, SCB_CONTROL);
control &= ~ULTRAENB;
@@ -5544,7 +4805,6 @@ ahc_update_pending_syncrates(struct ahc_softc *ahc)
ahc_outb(ahc, SCBPTR, saved_scbptr);
}
-#if UNUSED
static void
ahc_dump_targcmd(struct target_cmd *cmd)
{
@@ -5552,9 +4812,9 @@ ahc_dump_targcmd(struct target_cmd *cmd)
u_int8_t *last_byte;
int i;
- byte = &cmd->initiator_channel;
+ byte = &cmd->icl;
/* Debugging info for received commands */
- last_byte = &cmd[1].initiator_channel;
+ last_byte = &cmd[1].icl;
i = 0;
while (byte < last_byte) {
@@ -5570,7 +4830,6 @@ ahc_dump_targcmd(struct target_cmd *cmd)
}
}
}
-#endif
static void
ahc_shutdown(int howto, void *arg)
diff --git a/sys/dev/aic7xxx/aic7xxx.h b/sys/dev/aic7xxx/aic7xxx.h
index e46d277e8d585..06f7d4abd4e1e 100644
--- a/sys/dev/aic7xxx/aic7xxx.h
+++ b/sys/dev/aic7xxx/aic7xxx.h
@@ -34,7 +34,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.h,v 1.4 1998/12/15 08:22:41 gibbs Exp $
+ * $Id: aic7xxx.h,v 1.40 1997/02/25 03:05:35 gibbs Exp $
*/
#ifndef _AIC7XXX_H_
@@ -68,12 +68,6 @@
* aic7850 has only 3.
*/
-#define AHC_TMODE_CMDS 256 /*
- * Ring Buffer of incoming target commands.
- * We allocate 256 to simplify the logic
- * in the sequencer by using the natural
- * wrap point of an 8bit counter.
- */
#if defined(__FreeBSD__)
extern u_long ahc_unit;
@@ -117,11 +111,9 @@ typedef enum {
AHC_AIC7860_FE = AHC_ULTRA|AHC_SPIOCAP,
AHC_AIC7870_FE = AHC_FENONE,
AHC_AIC7880_FE = AHC_ULTRA,
- AHC_AIC7890_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS
- |AHC_SG_PRELOAD|AHC_MULTI_TID,
+ AHC_AIC7890_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS|AHC_SG_PRELOAD|AHC_MULTI_TID,
AHC_AIC7895_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA,
- AHC_AIC7896_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS
- |AHC_SG_PRELOAD|AHC_MULTI_TID,
+ AHC_AIC7896_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS|AHC_SG_PRELOAD|AHC_MULTI_TID,
} ahc_feature;
typedef enum {
@@ -141,16 +133,11 @@ typedef enum {
AHC_INDIRECT_PAGING = 0x008,
AHC_SHARED_SRAM = 0x010,
AHC_LARGE_SEEPROM = 0x020,/* Uses C56_66 not C46 */
- AHC_RESET_BUS_A = 0x040,
- AHC_RESET_BUS_B = 0x080,
AHC_EXTENDED_TRANS_A = 0x100,
AHC_EXTENDED_TRANS_B = 0x200,
AHC_TERM_ENB_A = 0x400,
AHC_TERM_ENB_B = 0x800,
- AHC_INITIATORMODE = 0x1000,/*
- * Allow initiator operations on
- * this controller.
- */
+ AHC_HANDLING_REQINITS = 0x1000,
AHC_TARGETMODE = 0x2000,/*
* Allow target operations on this
* controller.
@@ -172,6 +159,11 @@ typedef enum {
SCB_DEVICE_RESET = 0x0004,
SCB_SENSE = 0x0008,
SCB_RECOVERY_SCB = 0x0040,
+ SCB_MSGOUT_SENT = 0x0200,
+ SCB_MSGOUT_SDTR = 0x0400,
+ SCB_MSGOUT_WDTR = 0x0800,
+ SCB_MSGOUT_BITS = (SCB_MSGOUT_SDTR|SCB_MSGOUT_WDTR
+ |SCB_MSGOUT_SENT),
SCB_ABORT = 0x1000,
SCB_QUEUED_MSG = 0x2000,
SCB_ACTIVE = 0x4000,
@@ -255,17 +247,13 @@ struct scb_data {
* Connection desciptor for select-in requests in target mode.
* The first byte is the connecting target, followed by identify
* message and optional tag information, terminated by 0xFF. The
- * remainder is the command to execute. The cmd_valid byte is on
- * an 8 byte boundary to simplify setting it on aic7880 hardware
- * which only has limited direct access to the DMA FIFO.
+ * remainder is the command to execute.
*/
struct target_cmd {
- u_int8_t initiator_channel;
- u_int8_t targ_id; /* Target ID we were selected at */
- u_int8_t identify; /* Identify message */
- u_int8_t bytes[21];
- u_int8_t cmd_valid;
- u_int8_t pad[7];
+ u_int8_t icl; /* Really only holds Initiator ID */
+ u_int8_t targ_id; /* Target ID we were selected at */
+ u_int8_t identify; /* Identify message */
+ u_int8_t bytes[29];
};
/*
@@ -273,8 +261,8 @@ struct target_cmd {
* and immediate notify CCB pools.
*/
struct tmode_lstate {
- struct ccb_hdr_slist accept_tios;
- struct ccb_hdr_slist immed_notifies;
+ SLIST_HEAD(, ccb_hdr) accept_tios;
+ SLIST_HEAD(, ccb_hdr) immed_notifies;
};
/*
@@ -386,9 +374,7 @@ struct ahc_syncrate {
typedef enum {
MSG_TYPE_NONE = 0x00,
MSG_TYPE_INITIATOR_MSGOUT = 0x01,
- MSG_TYPE_INITIATOR_MSGIN = 0x02,
- MSG_TYPE_TARGET_MSGOUT = 0x03,
- MSG_TYPE_TARGET_MSGIN = 0x04
+ MSG_TYPE_INITIATOR_MSGIN = 0x02
} ahc_msg_type;
struct ahc_softc {
@@ -409,12 +395,6 @@ struct ahc_softc {
struct tmode_tstate* enabled_targets[16];
/*
- * The black hole device responsible for handling requests for
- * disabled luns on enabled targets.
- */
- struct tmode_lstate* black_hole;
-
- /*
* Device instance currently on the bus awaiting a continue TIO
* for a command that was not given the disconnect priveledge.
*/
@@ -452,9 +432,10 @@ struct ahc_softc {
* Per target state bitmasks.
*/
u_int16_t ultraenb; /* Using ultra sync rate */
+ u_int16_t sdtrpending; /* Pending SDTR request */
+ u_int16_t wdtrpending; /* Pending WDTR request */
u_int16_t discenable; /* Disconnection allowed */
u_int16_t tagenable; /* Tagged Queuing allowed */
- u_int16_t targ_msg_req; /* Need negotiation messages */
/*
* Hooks into the XPT.
@@ -481,24 +462,18 @@ struct ahc_softc {
int unsolicited_ints;
pcici_t pci_config_id;
- /*
- * Target incoming command FIFO.
- */
+ /* Hmmm. */
struct target_cmd *targetcmds;
- u_int8_t tqinfifonext;
+ int next_targetcmd;
+ int num_targetcmds;
/*
* Incoming and outgoing message handling.
*/
- u_int8_t send_msg_perror;
ahc_msg_type msg_type;
- u_int8_t msgout_buf[8]; /* Message we are sending */
- u_int8_t msgin_buf[8]; /* Message we are receiving */
- u_int msgout_len; /* Length of message to send */
- u_int msgout_index; /* Current index in msgout */
- u_int msgin_index; /* Current index in msgin */
-
- u_int enabled_luns;
+ u_int8_t msg_buf[8]; /* Message we are sending */
+ u_int msg_len; /* Length of message to send */
+ u_int msg_index; /* Current index in message */
/*
* "Bus" addresses of our data structures.
diff --git a/sys/dev/aic7xxx/aic7xxx.reg b/sys/dev/aic7xxx/aic7xxx.reg
index 775c0e31086f4..fff2b6f26fc14 100644
--- a/sys/dev/aic7xxx/aic7xxx.reg
+++ b/sys/dev/aic7xxx/aic7xxx.reg
@@ -1,7 +1,7 @@
/*
* Aic7xxx register and scratch ram definitions.
*
- * Copyright (c) 1994-1999 Justin Gibbs.
+ * Copyright (c) 1994-1998 Justin Gibbs.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,7 +32,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.reg,v 1.11 1998/12/17 00:06:52 gibbs Exp $
+ * $Id: aic7xxx.reg,v 1.4 1997/06/27 19:38:39 gibbs Exp $
*/
/*
@@ -471,7 +471,7 @@ register SEQCTL {
* Sequencer RAM Data (p. 3-34)
* Single byte window into the Scratch Ram area starting at the address
* specified by SEQADDR0 and SEQADDR1. To write a full word, simply write
- * four bytes in succession. The SEQADDRs will increment after the most
+ * four bytes in sucessesion. The SEQADDRs will increment after the most
* significant byte is written
*/
register SEQRAM {
@@ -675,20 +675,20 @@ register INTSTAT {
mask SEND_REJECT 0x10|SEQINT /* sending a message reject */
mask NO_IDENT 0x20|SEQINT /* no IDENTIFY after reconnect*/
mask NO_MATCH 0x30|SEQINT /* no cmd match for reconnect */
+ mask EXTENDED_MSG 0x40|SEQINT /* Extended message received */
mask ABORT_REQUESTED 0x50|SEQINT /* Reconect of aborted SCB */
+ mask REJECT_MSG 0x60|SEQINT /* Reject message received */
mask BAD_STATUS 0x70|SEQINT /* Bad status from target */
mask RESIDUAL 0x80|SEQINT /* Residual byte count != 0 */
- mask TRACE_POINT 0x90|SEQINT
- mask HOST_MSG_LOOP 0xa0|SEQINT /*
- * The bus is ready for the
- * host to perform another
- * message transaction. This
- * mechanism is used for things
- * like sync/wide negotiation
- * that require a kernel based
- * message state engine.
+ mask AWAITING_MSG 0xa0|SEQINT /*
+ * Kernel requested to specify
+ * a message to this target
+ * (command was null), so tell
+ * it that it can fill the
+ * message buffer.
*/
mask TARGET_MSG_HELP 0xb0|SEQINT
+ mask TARGET_SYNC_CMD 0xc0|SEQINT
mask TRACEPOINT 0xd0|SEQINT
mask MSGIN_PHASEMIS 0xe0|SEQINT /*
* Target changed phase on us
@@ -763,16 +763,6 @@ register DFSTATUS {
bit FIFOEMP 0x01
}
-register DFWADDR {
- address 0x95
- access_mode RW
-}
-
-register DFRADDR {
- address 0x97
- access_mode RW
-}
-
register DFDAT {
address 0x099
access_mode RW
@@ -1265,25 +1255,18 @@ scratch_ram {
size 1
}
/*
- * Kernel and sequencer offsets into the queue of
- * incoming target mode command descriptors. The
- * queue is full when the ((KERNEL_TQINPOS - TQINPOS) == 1)
+ * Offset into the command descriptor array for the next
+ * available desciptor to use.
*/
- KERNEL_TQINPOS {
- size 1
- }
- TQINPOS {
+ TMODE_CMDADDR_NEXT {
size 1
}
ARG_1 {
size 1
- mask SEND_MSG 0x80
- mask SEND_SENSE 0x40
- mask SEND_REJ 0x20
- mask MSGOUT_PHASEMIS 0x10
- mask EXIT_MSG_LOOP 0x08
- mask CONT_MSG_LOOP 0x04
- mask CONT_TARG_SESSION 0x02
+ mask SEND_MSG 0x80
+ mask SEND_SENSE 0x40
+ mask SEND_REJ 0x20
+ mask MSGOUT_PHASEMIS 0x10
alias RETURN_1
}
ARG_2 {
@@ -1306,44 +1289,6 @@ scratch_ram {
size 1
}
- /*
- * Interrupt kernel for a message to this target on
- * the next transaction. This is usually used for
- * negotiation requests.
- */
- TARGET_MSG_REQUEST {
- size 2
- }
-
- /*
- * Sequences the kernel driver has okayed for us. This allows
- * the driver to do things like prevent initiator or target
- * operations.
- */
- SCSISEQ_TEMPLATE {
- size 1
- bit ENSELO 0x40
- bit ENSELI 0x20
- bit ENRSELI 0x10
- bit ENAUTOATNO 0x08
- bit ENAUTOATNI 0x04
- bit ENAUTOATNP 0x02
- }
-
- /*
- * Track whether the transfer byte count for
- * the current data phase is odd.
- */
- DATA_COUNT_ODD {
- size 1
- }
-
- /*
- * The initiator specified tag for this target mode transaction.
- */
- INITIATOR_TAG {
- size 1
- }
/*
* These are reserved registers in the card's scratch ram. Some of
@@ -1415,7 +1360,5 @@ const CMD_GROUP5_BYTE_DELTA 11
/*
* Number of command descriptors in the command descriptor array.
- * No longer used, but left here as an example for how downloaded
- * constantants can be defined.
-const TMODE_NUMCMDS download
*/
+const TMODE_NUMCMDS download
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index 3377449cd302b..c1ab64df4193e 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -1,7 +1,7 @@
/*
* Adaptec 274x/284x/294x device driver firmware for Linux and FreeBSD.
*
- * Copyright (c) 1994-1999 Justin Gibbs.
+ * Copyright (c) 1994-1998 Justin Gibbs.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -32,7 +32,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7xxx.seq,v 1.83 1998/12/17 00:06:52 gibbs Exp $
+ * $Id: aic7xxx.seq,v 1.78 1998/09/15 07:24:16 gibbs Exp $
*/
#include <dev/aic7xxx/aic7xxx.reg>
@@ -58,9 +58,12 @@
reset:
clr SCSISIGO; /* De-assert BSY */
- and SXFRCTL1, ~BITBUCKET;
/* Always allow reselection */
- and SCSISEQ, ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ_TEMPLATE;
+ if ((ahc->flags & AHC_TARGETMODE) != 0) {
+ mvi SCSISEQ, ENSELI|ENRSELI|ENAUTOATNP;
+ } else {
+ mvi SCSISEQ, ENRSELI|ENAUTOATNP;
+ }
if ((ahc->features & AHC_CMD_CHAN) != 0) {
/* Ensure that no DMA operations are in progress */
@@ -178,12 +181,13 @@ initialize_scsiid:
and SCSIID, OID; /* Clear old target */
or SCSIID, A;
}
- mov SINDEX, SCSISEQ_TEMPLATE;
if ((ahc->flags & AHC_TARGETMODE) != 0) {
- test SCB_CONTROL, TARGET_SCB jz . + 2;
- or SINDEX, TEMODE;
+ and SINDEX, TARGET_SCB, SCB_CONTROL;
+ or SCSISEQ, ENSELO|ENAUTOATNO|ENSELI
+ |ENRSELI|ENAUTOATNP, SINDEX ret ;
+ } else {
+ mvi SCSISEQ, ENSELO|ENAUTOATNO|ENRSELI|ENAUTOATNP ret;
}
- mov SCSISEQ, SINDEX ret;
/*
* Initialize transfer settings and clear the SCSI channel.
@@ -212,26 +216,29 @@ selection:
mvi CLRSINT0, CLRSELDI;
select_in:
if ((ahc->flags & AHC_TARGETMODE) != 0) {
- if ((ahc->flags & AHC_INITIATORMODE) != 0) {
- test SSTAT0, TARGET jz initiator_reselect;
- }
-
+ test SSTAT0, TARGET jz initiator_reselect;
/*
* We've just been selected. Assert BSY and
* setup the phase for receiving messages
* from the target.
*/
mvi SCSISIGO, P_MESGOUT|BSYO;
- mvi CLRSINT1, CLRBUSFREE;
+
+ /*
+ * LAST_MSG gives an indication to the host of what
+ * went wrong should we need to terminate this selection
+ * before doing real work. Initialize it to SCB_LIST_NULL to
+ * indicate an improper initiator selection.
+ */
+ mvi LAST_MSG, SCB_LIST_NULL;
/*
* Setup the DMA for sending the identify and
- * command information.
+ * command information. We keep a count of the
+ * number of bytes to send to the host in ARG_2.
*/
or SEQ_FLAGS, CMDPHASE_PENDING;
-
- /* XXX If ring buffer is full, return busy or queue full */
- mov A, TQINPOS;
+ mov A, TMODE_CMDADDR_NEXT;
if ((ahc->features & AHC_CMD_CHAN) != 0) {
mvi DINDEX, CCHADDR;
mvi TMODE_CMDADDR call set_32byte_addr;
@@ -265,9 +272,6 @@ select_in:
}
}
- /* No tag yet */
- mvi INITIATOR_TAG, SCB_LIST_NULL;
-
/*
* If ATN isn't asserted, the target isn't interested
* in talking to us. Go directly to bus free.
@@ -279,20 +283,20 @@ select_in:
* initiator. We follow the guidlines from section 6.5
* of the SCSI-2 spec for what messages are allowed when.
*/
- call target_inb;
+ call targ_inb;
/*
* Our first message must be one of IDENTIFY, ABORT, or
* BUS_DEVICE_RESET.
*/
- /* XXX May need to be more lax here for older initiators... */
- test DINDEX, MSG_IDENTIFYFLAG jz host_target_message_loop;
+ test DINDEX, MSG_IDENTIFYFLAG jz more_first_messages;
/* Store for host */
if ((ahc->features & AHC_CMD_CHAN) != 0) {
mov CCSCBRAM, DINDEX;
} else {
mov DFDAT, DINDEX;
}
+ mvi ARG_2, 3;
/* Remember for disconnection decision */
test DINDEX, MSG_IDENTIFY_DISCFLAG jnz . + 2;
@@ -300,7 +304,7 @@ select_in:
or SEQ_FLAGS, NO_DISCONNECT;
test SCSISIGI, ATNI jz ident_messages_done;
- call target_inb;
+ call targ_inb;
/*
* If this is a tagged request, the tagged message must
* immediately follow the identify. We test for a valid
@@ -324,39 +328,39 @@ select_in:
* free.
*/
test SCSISIGI, ATNI jz target_busfree;
-
/*
* Store the tag for the host.
*/
- call target_inb;
+ call targ_inb;
if ((ahc->features & AHC_CMD_CHAN) != 0) {
mov CCSCBRAM, DINDEX;
} else {
mov DFDAT, DINDEX;
}
- mov INITIATOR_TAG, DINDEX;
+ add ARG_2, 2;
jmp ident_messages_done;
+more_first_messages:
/*
- * Pushed message loop to allow the kernel to
- * run it's own target mode message state engine.
+ * Hmm. Now we're down to only accepting
+ * either an ABORT or BDR.
*/
-host_target_message_loop:
- mvi INTSTAT, HOST_MSG_LOOP;
- nop;
- cmp RETURN_1, EXIT_MSG_LOOP je target_ITloop;
- test SSTAT0, SPIORDY jz .;
- jmp host_target_message_loop;
+ cmp DINDEX, MSG_ABORT je . + 2;
+ cmp DINDEX, MSG_BUS_DEV_RESET jne target_busfree;
+
+ /* Record the event and notify the host */
+ mov LAST_MSG, DINDEX;
+ jmp target_busfree;
ident_messages_done:
+ mvi LAST_MSG, MSG_NOOP; /* We are so far successful */
/* Terminate the ident list */
if ((ahc->features & AHC_CMD_CHAN) != 0) {
mvi CCSCBRAM, SCB_LIST_NULL;
} else {
mvi DFDAT, SCB_LIST_NULL;
}
- or SEQ_FLAGS, TARG_CMD_PENDING|IDENTIFY_SEEN;
- test SCSISIGI, ATNI jnz target_mesgout_pending_msg;
+ or SEQ_FLAGS, TARG_CMD_PENDING;
jmp target_ITloop;
/*
@@ -364,20 +368,16 @@ ident_messages_done:
* message byte we receive so it can be checked prior to
* driving REQ on the bus for the next byte.
*/
-target_inb:
- /*
- * Drive REQ on the bus by enabling SCSI PIO.
- */
+targ_inb:
+ /* Drive REQ on the bus by enabling SCSI PIO */
or SXFRCTL0, SPIOEN;
/* Wait for the byte */
test SSTAT0, SPIORDY jz .;
/* Prevent our read from triggering another REQ */
and SXFRCTL0, ~SPIOEN;
- /* Save latched contents */
mov DINDEX, SCSIDATL ret;
}
-if ((ahc->flags & AHC_INITIATORMODE) != 0) {
/*
* Reselection has been initiated by a target. Make a note that we've been
* reselected, but haven't seen an IDENTIFY message from the target yet.
@@ -389,7 +389,7 @@ initiator_reselect:
test SBLKCTL, SELBUSB jz . + 2;
or SAVED_TCL, SELBUSB;
}
- or SXFRCTL0, SPIOEN|CLRSTCNT|CLRCHN;
+ or SXFRCTL0, SPIOEN|CLRCHN;
mvi CLRSINT1,CLRBUSFREE;
or SIMODE1, ENBUSFREE; /*
* We aren't expecting a
@@ -399,7 +399,6 @@ initiator_reselect:
*/
mvi MSG_OUT, MSG_NOOP; /* No message to send */
jmp ITloop;
-}
/*
* After the selection, remove this SCB from the "waiting SCB"
@@ -409,7 +408,11 @@ initiator_reselect:
*/
select_out:
/* Turn off the selection hardware */
- and SCSISEQ, ENSELI|ENRSELI|ENAUTOATNP, SCSISEQ_TEMPLATE;
+ if ((ahc->flags & AHC_TARGETMODE) != 0) {
+ mvi SCSISEQ, ENSELI|ENRSELI|ENAUTOATNP;
+ } else {
+ mvi SCSISEQ, ENRSELI|ENAUTOATNP;
+ }
mvi CLRSINT0, CLRSELDO;
mov SCBPTR, WAITING_SCBH;
mov WAITING_SCBH,SCB_NEXT;
@@ -422,8 +425,7 @@ select_out:
* Assert BSY and setup the phase for
* sending our identify messages.
*/
- mvi P_MESGIN|BSYO call change_phase;
- mvi CLRSINT1,CLRBUSFREE;
+ mvi SCSISIGO, P_MESGIN|BSYO;
/*
* Start out with a simple identify message.
@@ -437,22 +439,19 @@ select_out:
*/
test SCB_CONTROL, TAG_ENB jz . + 3;
mvi MSG_SIMPLE_Q_TAG call target_outb;
- mov SCB_INITIATOR_TAG call target_outb;
- mov INITIATOR_TAG, SCB_INITIATOR_TAG;
+ mov SCB_TAG call target_outb;
target_synccmd:
/*
* Now determine what phases the host wants us
* to go through.
*/
mov SEQ_FLAGS, SCB_TARGET_PHASES;
-
target_ITloop:
/*
- * Start honoring ATN signals now that
- * we properly identified ourself.
+ * XXX Start honoring ATN signals now that
+ * we properly identified ourself.
*/
- test SCSISIGI, ATNI jnz target_mesgout;
test SEQ_FLAGS, CMDPHASE_PENDING jnz target_cmdphase;
test SEQ_FLAGS, DPHASE_PENDING jnz target_dphase;
test SEQ_FLAGS, SPHASE_PENDING jnz target_sphase;
@@ -465,35 +464,38 @@ target_ITloop:
if ((ahc->flags & AHC_PAGESCBS) != 0) {
mov ALLZEROS call get_free_or_disc_scb;
}
- mov RETURN_1, ALLZEROS;
call complete_target_cmd;
- cmp RETURN_1, CONT_MSG_LOOP jne .;
mvi DMAPARAMS, HDMAEN|DIRECTION|FIFORESET;
mov SCB_TAG call dma_scb;
jmp target_synccmd;
-target_mesgout:
- mvi SCSISIGO, P_MESGOUT|BSYO;
- call target_inb;
- /* Local Processing goes here... */
-target_mesgout_pending_msg:
- jmp host_target_message_loop;
-
target_disconnect:
- mvi P_MESGIN|BSYO call change_phase;
- test SEQ_FLAGS, DPHASE jz . + 2;
- mvi MSG_SAVEDATAPOINTER call target_outb;
+ mvi SCSISIGO, P_MESGIN|BSYO;
mvi MSG_DISCONNECT call target_outb;
target_busfree:
+ and SXFRCTL0, ~SPIOEN;
clr SCSISIGO;
call complete_target_cmd;
+ cmp LAST_MSG, MSG_NOOP je . + 2;
+ mvi INTSTAT, TARGET_MSG_HELP;
call clear_target_state;
jmp poll_for_work;
target_cmdphase:
- mvi P_COMMAND|BSYO call change_phase;
- call target_inb;
+ /*
+ * Add one for the terminating byte
+ * and one for the command code.
+ */
+ if ((ahc->features & AHC_CMD_CHAN) != 0) {
+ add CCHCNT, 2, ARG_2;
+ } else {
+ add HCNT[0], 2, ARG_2;
+ clr HCNT[1];
+ clr HCNT[2];
+ }
+ mvi SCSISIGO, P_COMMAND|BSYO;
+ call targ_inb;
mov A, DINDEX;
/* Store for host */
if ((ahc->features & AHC_CMD_CHAN) != 0) {
@@ -504,16 +506,20 @@ target_cmdphase:
/*
* Determine the number of bytes to read
- * based on the command group code via table lookup.
- * We reuse the first 8 bytes of the TARG_SCSIRATE
- * BIOS array for this table. Count is one less than
- * the total for the command since we've already fetched
- * the first byte.
+ * based on the command group code using an adding
+ * jump table. Count is one less than the total
+ * since we've already fetched the first byte.
*/
shr A, CMD_GROUP_CODE_SHIFT;
add SINDEX, TARG_SCSIRATE, A;
mov A, SINDIR;
+ if ((ahc->features & AHC_CMD_CHAN) != 0) {
+ add CCHCNT, A;
+ } else {
+ add HCNT[0], A;
+ }
+
test A, 0xFF jz command_phase_done;
command_loop:
or SXFRCTL0, SPIOEN;
@@ -537,20 +543,20 @@ target_dphase:
* Data direction flags are from the
* perspective of the initiator.
*/
+ and SXFRCTL0, ~SPIOEN;
+ or SXFRCTL0, CLRCHN;
test SCB_TARGET_PHASES[1], TARGET_DATA_IN jz . + 4;
+ mvi SCSISIGO, P_DATAIN|BSYO;
mvi LASTPHASE, P_DATAOUT;
- mvi P_DATAIN|BSYO call change_phase;
- jmp . + 3;
+ jmp p_data;
+ mvi SCSISIGO, P_DATAOUT|BSYO;
mvi LASTPHASE, P_DATAIN;
- mvi P_DATAOUT|BSYO call change_phase;
- mov ALLZEROS call initialize_channel;
jmp p_data;
target_sphase:
- mvi P_STATUS|BSYO call change_phase;
- mvi LASTPHASE, P_STATUS;
+ mvi SCSISIGO, P_STATUS|BSYO;
mov SCB_TARGET_STATUS call target_outb;
- /* XXX Watch for ATN or parity errors??? */
+ /* XXX Watch for ATN for parity errors??? */
mvi SCSISIGO, P_MESGIN|BSYO;
/* MSG_CMDCMPLT is 0, but we can't do an immediate of 0 */
mov ALLZEROS call target_outb;
@@ -560,52 +566,37 @@ complete_target_cmd:
test SEQ_FLAGS, TARG_CMD_PENDING jnz . + 2;
mov SCB_TAG jmp complete_post;
if ((ahc->features & AHC_CMD_CHAN) != 0) {
- /* Set the valid byte */
- mvi CCSCBADDR, 24;
- mov CCSCBRAM, ALLONES;
- mvi CCHCNT, 28;
or CCSCBCTL, CCSCBEN|CCSCBRESET;
test CCSCBCTL, CCSCBDONE jz .;
clr CCSCBCTL;
} else {
- /* Set the valid byte */
- or DFCNTRL, FIFORESET;
- mvi DFWADDR, 3; /* Third 64bit word or byte 24 */
- mov DFDAT, ALLONES;
- mvi HCNT[0], 28;
- clr HCNT[1];
- clr HCNT[2];
or DFCNTRL, HDMAEN|FIFOFLUSH;
call dma_finish;
}
- inc TQINPOS;
- mvi INTSTAT,CMDCMPLT ret;
+ inc TMODE_CMDADDR_NEXT;
+ cmp TMODE_CMDADDR_NEXT, TMODE_NUMCMDS jne . + 2;
+ clr TMODE_CMDADDR_NEXT;
+ mvi TARGET_CMD_CMPLT jmp complete_post;
}
-
-if ((ahc->flags & AHC_INITIATORMODE) != 0) {
initiator_select:
mvi SPIOEN call initialize_channel;
-
- /*
- * We aren't expecting a bus free, so interrupt
- * the kernel driver if it happens.
- */
+/*
+ * We aren't expecting a bus free, so interrupt
+ * the kernel driver if it happens.
+ */
mvi CLRSINT1,CLRBUSFREE;
or SIMODE1, ENBUSFREE;
-
- /*
- * As soon as we get a successful selection, the target
- * should go into the message out phase since we have ATN
- * asserted.
- */
+/*
+ * As soon as we get a successful selection, the target should go
+ * into the message out phase since we have ATN asserted.
+ */
mvi MSG_OUT, MSG_IDENTIFYFLAG;
or SEQ_FLAGS, IDENTIFY_SEEN;
- /*
- * Main loop for information transfer phases. Wait for the
- * target to assert REQ before checking MSG, C/D and I/O for
- * the bus phase.
- */
+/*
+ * Main loop for information transfer phases. Wait for the target
+ * to assert REQ before checking MSG, C/D and I/O for the bus phase.
+ */
ITloop:
call phase_lock;
@@ -617,7 +608,7 @@ ITloop:
cmp A,P_STATUS je p_status;
cmp A,P_MESGIN je p_mesgin;
- mvi INTSTAT,BAD_PHASE;
+ mvi INTSTAT,BAD_PHASE; /* unknown phase - signal driver */
jmp ITloop; /* Try reading the bus again. */
await_busfree:
@@ -628,27 +619,20 @@ await_busfree:
test SSTAT1,REQINIT|BUSFREE jz .;
test SSTAT1, BUSFREE jnz poll_for_work;
mvi INTSTAT, BAD_PHASE;
-}
clear_target_state:
- /*
- * We assume that the kernel driver may reset us
- * at any time, even in the middle of a DMA, so
- * clear DFCNTRL too.
- */
- clr DFCNTRL;
-
- /*
- * We don't know the target we will connect to,
- * so default to narrow transfers to avoid
- * parity problems.
- */
- if ((ahc->features & AHC_ULTRA2) != 0) {
- bmov SCSIRATE, ALLZEROS, 2;
- } else {
- clr SCSIRATE;
- and SXFRCTL0, ~(FAST20);
- }
+ clr DFCNTRL; /*
+ * We assume that the kernel driver
+ * may reset us at any time, even
+ * in the middle of a DMA, so clear
+ * DFCNTRL too.
+ */
+ clr SCSIRATE; /*
+ * We don't know the target we will
+ * connect to, so default to narrow
+ * transfers to avoid parity problems.
+ */
+ and SXFRCTL0, ~(FAST20);
mvi LASTPHASE, P_BUSFREE;
/* clear target specific flags */
clr SEQ_FLAGS ret;
@@ -664,7 +648,6 @@ data_phase_reinit:
mvi DINDEX, STCNT;
mvi SCB_RESID_DCNT call bcopy_3;
}
- and DATA_COUNT_ODD, 0x1, SCB_RESID_DCNT[0];
jmp data_phase_loop;
p_data:
@@ -699,7 +682,6 @@ p_data:
mvi DINDEX, HADDR;
mvi SCB_DATAPTR call bcopy_7;
}
- and DATA_COUNT_ODD, 0x1, SCB_DATACNT[0];
if ((ahc->features & AHC_ULTRA2) == 0) {
if ((ahc->features & AHC_CMD_CHAN) != 0) {
@@ -826,10 +808,6 @@ prefetched_segs_avail:
mvi HADDR call dfdat_in_7;
}
- /* Track odd'ness */
- test HCNT[0], 0x1 jz . + 2;
- xor DATA_COUNT_ODD, 0x1;
-
if ((ahc->features & AHC_ULTRA2) == 0) {
/* Load STCNT as well. It is a mirror of HCNT */
if ((ahc->features & AHC_CMD_CHAN) != 0) {
@@ -844,12 +822,7 @@ prefetched_segs_avail:
add SG_NEXT[0],SG_SIZEOF;
adc SG_NEXT[1],A;
- if ((ahc->flags & AHC_TARGETMODE) != 0) {
- test SSTAT0, TARGET jnz data_phase_loop;
- }
- test SSTAT1, REQINIT jz .;
test SSTAT1,PHASEMIS jz data_phase_loop;
-
/* Ensure the last seg is visable at the shaddow layer */
if ((ahc->features & AHC_ULTRA2) != 0) {
or DFCNTRL, PRELOADEN;
@@ -878,14 +851,8 @@ data_phase_finish:
}
if ((ahc->flags & AHC_TARGETMODE) != 0) {
- test SEQ_FLAGS, DPHASE_PENDING jz ITloop;
+ test SEQ_FLAGS, DPHASE_PENDING jz . + 3;
and SEQ_FLAGS, ~DPHASE_PENDING;
- /*
- * For data-in phases, wait for any pending acks from the
- * initiator before changing phase.
- */
- test DFCNTRL, DIRECTION jz target_ITloop;
- test SSTAT1, REQINIT jnz .;
jmp target_ITloop;
}
jmp ITloop;
@@ -915,7 +882,6 @@ ultra2_dmahalt:
ret;
}
-if ((ahc->flags & AHC_INITIATORMODE) != 0) {
/*
* Command phase. Set up the DMA registers and let 'er rip.
*/
@@ -972,22 +938,17 @@ p_status:
jmp ITloop;
/*
- * Message out phase. If MSG_OUT is MSG_IDENTIFYFLAG, build a full
- * indentify message sequence and send it to the target. The host may
- * override this behavior by setting the MK_MESSAGE bit in the SCB
- * control byte. This will cause us to interrupt the host and allow
- * it to handle the message phase completely on its own. If the bit
- * associated with this target is set, we will also interrupt the host,
- * thereby allowing it to send a message on the next selection regardless
- * of the transaction being sent.
+ * Message out phase. If MSG_OUT is 0x80, build I full indentify message
+ * sequence and send it to the target. In addition, if the MK_MESSAGE bit
+ * is set in the SCB_CONTROL byte, interrupt the host and allow it to send
+ * it's own message.
*
* If MSG_OUT is == HOST_MSG, also interrupt the host and take a message.
- * This is done to allow the host to send messages outside of an identify
+ * This is done to allow the hsot to send messages outside of an identify
* sequence while protecting the seqencer from testing the MK_MESSAGE bit
* on an SCB that might not be for the current nexus. (For example, a
* BDR message in responce to a bad reselection would leave us pointed to
* an SCB that doesn't have anything to do with the current target).
- *
* Otherwise, treat MSG_OUT as a 1 byte message to send (abort, abort tag,
* bus device reset).
*
@@ -995,29 +956,22 @@ p_status:
* in case the target decides to put us in this phase for some strange
* reason.
*/
-p_mesgout_retry:
- or SCSISIGO,ATNO,LASTPHASE;/* turn on ATN for the retry */
p_mesgout:
mov SINDEX, MSG_OUT;
cmp SINDEX, MSG_IDENTIFYFLAG jne p_mesgout_from_host;
- test SCB_CONTROL,MK_MESSAGE jnz host_message_loop;
- mov FUNCTION1, SCB_TCL;
- mov A, FUNCTION1;
- mov SINDEX, TARGET_MSG_REQUEST[0];
- if ((ahc->features & AHC_TWIN) != 0) {
- /* Second Channel uses high byte bits */
- test SCB_TCL, SELBUSB jz . + 2;
- mov SINDEX, TARGET_MSG_REQUEST[1];
- } else if ((ahc->features & AHC_WIDE) != 0) {
- test SCB_TCL, 0x80 jz . + 2; /* target > 7 */
- mov SINDEX, TARGET_MSG_REQUEST[1];
- }
- test SINDEX, A jnz host_message_loop;
p_mesgout_identify:
- and SINDEX,LID,SCB_TCL; /* lun */
+ if ((ahc->features & AHC_WIDE) != 0) {
+ and SINDEX,0xf,SCB_TCL; /* lun */
+ } else {
+ and SINDEX,0x7,SCB_TCL; /* lun */
+ }
and A,DISCENB,SCB_CONTROL; /* mask off disconnect privledge */
or SINDEX,A; /* or in disconnect privledge */
or SINDEX,MSG_IDENTIFYFLAG;
+p_mesgout_mk_message:
+ test SCB_CONTROL,MK_MESSAGE jz p_mesgout_tag;
+ mov SCSIDATL, SINDEX; /* Send the last byte */
+ jmp p_mesgout_from_host + 1;/* Skip HOST_MSG test */
/*
* Send a tag message if TAG_ENB is set in the SCB control block.
* Use SCB_TAG (the position in the kernel's SCB array) as the tag value.
@@ -1032,27 +986,36 @@ p_mesgout_tag:
cmp LASTPHASE, P_MESGOUT jne p_mesgout_done;
mov SCB_TAG jmp p_mesgout_onebyte;
/*
- * Interrupt the driver, and allow it to handle this message
- * phase and any required retries.
+ * Interrupt the driver, and allow it to send a message
+ * if it asks.
*/
p_mesgout_from_host:
cmp SINDEX, HOST_MSG jne p_mesgout_onebyte;
- jmp host_message_loop;
+ mvi INTSTAT,AWAITING_MSG;
+ nop;
+ /*
+ * Did the host detect a phase change?
+ */
+ cmp RETURN_1, MSGOUT_PHASEMIS je p_mesgout_done;
p_mesgout_onebyte:
mvi CLRSINT1, CLRATNO;
mov SCSIDATL, SINDEX;
/*
- * If the next bus phase after ATN drops is message out, it means
+ * If the next bus phase after ATN drops is a message out, it means
* that the target is requesting that the last message(s) be resent.
*/
call phase_lock;
- cmp LASTPHASE, P_MESGOUT je p_mesgout_retry;
+ cmp LASTPHASE, P_MESGOUT jne p_mesgout_done;
+ or SCSISIGO,ATNO,LASTPHASE;/* turn on ATN for the retry */
+ jmp p_mesgout;
p_mesgout_done:
mvi CLRSINT1,CLRATNO; /* Be sure to turn ATNO off */
mov LAST_MSG, MSG_OUT;
+ cmp MSG_OUT, MSG_IDENTIFYFLAG jne . + 2;
+ and SCB_CONTROL, ~MK_MESSAGE;
mvi MSG_OUT, MSG_NOOP; /* No message left */
jmp ITloop;
@@ -1067,22 +1030,19 @@ p_mesgin:
cmp A,MSG_SAVEDATAPOINTER je mesgin_sdptrs;
cmp ALLZEROS,A je mesgin_complete;
cmp A,MSG_RESTOREPOINTERS je mesgin_rdptrs;
+ cmp A,MSG_EXTENDED je mesgin_extended;
+ cmp A,MSG_MESSAGE_REJECT je mesgin_reject;
cmp A,MSG_NOOP je mesgin_done;
+rej_mesgin:
/*
- * Pushed message loop to allow the kernel to
- * RUN IT's own message state engine. To avoid an
- * extra nop instruction after signaling the kernel,
- * we perform the phase_lock before checking to see
- * if we should exit the loop and skip the phase_lock
- * in the ITloop. Performing back to back phase_locks
- * shouldn't hurt, but why do it twice...
+ * We have no idea what this message in is, so we issue a message reject
+ * and hope for the best. In any case, rejection should be a rare
+ * occurrence - signal the driver when it happens.
*/
-host_message_loop:
- mvi INTSTAT, HOST_MSG_LOOP;
- call phase_lock;
- cmp RETURN_1, EXIT_MSG_LOOP je ITloop + 1;
- jmp host_message_loop;
+ mvi INTSTAT,SEND_REJECT; /* let driver know */
+
+ mvi MSG_MESSAGE_REJECT call mk_mesg;
mesgin_done:
mov NONE,SCSIDATL; /*dummy read from latch to ACK*/
@@ -1147,7 +1107,6 @@ complete_queue:
add_to_free_list:
call add_scb_to_free_list;
jmp await_busfree;
-}
complete_post:
/* Post the SCBID in SINDEX and issue an interrupt */
@@ -1162,9 +1121,23 @@ complete_post:
if ((ahc->features & AHC_QUEUE_REGS) == 0) {
inc QOUTPOS;
}
+ if ((ahc->flags & AHC_TARGETMODE) != 0) {
+ test SEQ_FLAGS, NO_DISCONNECT jz . + 3;
+ mvi INTSTAT,TARGET_SYNC_CMD|CMDCMPLT;
+ ret;
+ }
mvi INTSTAT,CMDCMPLT ret;
-if ((ahc->flags & AHC_INITIATORMODE) != 0) {
+/*
+ * Is it an extended message? Copy the message to our message buffer and
+ * notify the host. The host will tell us whether to reject this message,
+ * respond to it with the message that the host placed in our message buffer,
+ * or simply to do nothing.
+ */
+mesgin_extended:
+ mvi INTSTAT,EXTENDED_MSG; /* let driver know */
+ jmp ITloop;
+
/*
* Is it a disconnect message? Set a flag in the SCB to remind us
* and await the bus going free.
@@ -1293,6 +1266,16 @@ not_found:
jmp mesgin_done;
/*
+ * Message reject? Let the kernel driver handle this. If we have an
+ * outstanding WDTR or SDTR negotiation, assume that it's a response from
+ * the target selecting 8bit or asynchronous transfer, otherwise just ignore
+ * it since we have no clue what it pertains to.
+ */
+mesgin_reject:
+ mvi INTSTAT, REJECT_MSG;
+ jmp mesgin_done;
+
+/*
* [ ADD MORE MESSAGE HANDLING HERE ]
*/
@@ -1337,35 +1320,18 @@ inb_first:
mov DINDIR,SCSIBUSL ret; /*read byte directly from bus*/
inb_last:
mov NONE,SCSIDATL ret; /*dummy read from latch to ACK*/
-}
if ((ahc->flags & AHC_TARGETMODE) != 0) {
-/*
- * Change to a new phase. If we are changing the state of the I/O signal,
- * from out to in, wait an additional data release delay before continuing.
- */
-change_phase:
- and DINDEX, IOI, SCSISIGI;
- mov SCSISIGO, SINDEX;
- and A, IOI, SINDEX;
- cmp DINDEX, A je change_phase_wait;
- test SINDEX, IOI jz change_phase_wait;
- call change_phase_wait;
-change_phase_wait:
- nop;
- nop;
- nop;
- nop ret;
-
-/*
- * Send a byte to an initiator in Automatic PIO mode.
- */
+ /*
+ * Send a byte to an initiator in Automatic PIO mode.
+ * SPIOEN must be on prior to calling this routine.
+ */
target_outb:
or SXFRCTL0, SPIOEN;
test SSTAT0, SPIORDY jz .;
mov SCSIDATL, SINDEX;
test SSTAT0, SPIORDY jz .;
- and SXFRCTL0, ~SPIOEN ret;
+ ret;
}
mesgin_phasemis:
@@ -1584,8 +1550,8 @@ get_SCBID_from_host:
phase_lock:
test SSTAT1, REQINIT jz phase_lock;
test SSTAT1, SCSIPERR jnz phase_lock;
- and SCSISIGO, PHASE_MASK, SCSISIGI;
- and LASTPHASE, PHASE_MASK, SCSISIGI ret;
+ and LASTPHASE, PHASE_MASK, SCSISIGI;
+ mov SCSISIGO, LASTPHASE ret;
if ((ahc->features & AHC_CMD_CHAN) == 0) {
set_stcnt_from_hcnt:
diff --git a/sys/dev/aic7xxx/aicasm_gram.y b/sys/dev/aic7xxx/aicasm_gram.y
index fdf352249ab8f..09a62b936d279 100644
--- a/sys/dev/aic7xxx/aicasm_gram.y
+++ b/sys/dev/aic7xxx/aicasm_gram.y
@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aicasm_gram.y,v 1.5 1998/09/15 07:24:17 gibbs Exp $
+ * $Id: aicasm_gram.y,v 1.4 1997/09/27 19:37:28 gibbs Exp $
*/
#include <stdio.h>
@@ -861,12 +861,12 @@ code:
;
code:
- T_NOP ret ';'
+ T_NOP ';'
{
expression_t immed;
make_expression(&immed, 0xff);
- format_1_instr(AIC_OP_AND, &none, &immed, &allzeros, $2);
+ format_1_instr(AIC_OP_AND, &none, &immed, &allzeros, FALSE);
}
;
diff --git a/sys/dev/buslogic/bt.c b/sys/dev/buslogic/bt.c
index 33ca81f6b2a6c..7196844368833 100644
--- a/sys/dev/buslogic/bt.c
+++ b/sys/dev/buslogic/bt.c
@@ -29,7 +29,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: bt.c,v 1.12 1998/12/04 22:54:44 archie Exp $
+ * $Id: bt.c,v 1.6 1998/10/15 23:17:58 gibbs Exp $
*/
/*
@@ -181,26 +181,12 @@ u_long bt_unit = 0;
*/
struct bt_isa_port bt_isa_ports[] =
{
- { 0x130, 0, 4 },
- { 0x134, 0, 5 },
- { 0x230, 0, 2 },
- { 0x234, 0, 3 },
- { 0x330, 0, 0 },
- { 0x334, 0, 1 }
-};
-
-/*
- * I/O ports listed in the order enumerated by the
- * card for certain op codes.
- */
-u_int16_t bt_board_ports[] =
-{
- 0x330,
- 0x334,
- 0x230,
- 0x234,
- 0x130,
- 0x134
+ { 0x330, 0 },
+ { 0x334, 0 },
+ { 0x230, 0 },
+ { 0x234, 0 },
+ { 0x130, 0 },
+ { 0x134, 0 }
};
/* Exported functions */
@@ -449,15 +435,15 @@ bt_fetch_adapter_info(struct bt_softc *bt)
if (esetup_info.bus_type == 'A'
&& bt->firmware_ver[0] == '2') {
- snprintf(bt->model, sizeof(bt->model), "542B");
+ strcpy(bt->model, "542B");
} else if (esetup_info.bus_type == 'E'
&& (strncmp(bt->firmware_ver, "2.1", 3) == 0
|| strncmp(bt->firmware_ver, "2.20", 4) == 0)) {
- snprintf(bt->model, sizeof(bt->model), "742A");
+ strcpy(bt->model, "742A");
} else if (esetup_info.bus_type == 'E'
&& bt->firmware_ver[0] == '0') {
/* AMI FastDisk EISA Series 441 0.x */
- snprintf(bt->model, sizeof(bt->model), "747A");
+ strcpy(bt->model, "747A");
} else {
ha_model_data_t model_data;
int i;
@@ -819,7 +805,7 @@ bt_name(struct bt_softc *bt)
{
static char name[10];
- snprintf(name, sizeof(name), "bt%d", bt->unit);
+ sprintf(name, "bt%d", bt->unit);
return (name);
}
@@ -828,7 +814,7 @@ bt_check_probed_iop(u_int ioport)
{
u_int i;
- for (i = 0; i < BT_NUM_ISAPORTS; i++) {
+ for (i=0; i < BT_NUM_ISAPORTS; i++) {
if (bt_isa_ports[i].addr == ioport) {
if (bt_isa_ports[i].probed != 0)
return (1);
@@ -844,7 +830,7 @@ void
bt_mark_probed_bio(isa_compat_io_t port)
{
if (port < BIO_DISABLED)
- bt_mark_probed_iop(bt_board_ports[port]);
+ bt_isa_ports[port].probed = 1;
}
void
@@ -860,44 +846,6 @@ bt_mark_probed_iop(u_int ioport)
}
}
-void
-bt_find_probe_range(int ioport, int *port_index, int *max_port_index)
-{
- if (ioport > 0) {
- int i;
-
- for (i = 0;i < BT_NUM_ISAPORTS; i++)
- if (ioport <= bt_isa_ports[i].addr)
- break;
- if ((i >= BT_NUM_ISAPORTS)
- || (ioport != bt_isa_ports[i].addr)) {
- printf("
-bt_isa_probe: Invalid baseport of 0x%x specified.
-bt_isa_probe: Nearest valid baseport is 0x%x.
-bt_isa_probe: Failing probe.\n",
- ioport,
- (i < BT_NUM_ISAPORTS)
- ? bt_isa_ports[i].addr
- : bt_isa_ports[BT_NUM_ISAPORTS - 1].addr);
- *port_index = *max_port_index = -1;
- return;
- }
- *port_index = *max_port_index = bt_isa_ports[i].bio;
- } else {
- *port_index = 0;
- *max_port_index = BT_NUM_ISAPORTS - 1;
- }
-}
-
-int
-bt_iop_from_bio(isa_compat_io_t bio_index)
-{
- if (bio_index >= 0 && bio_index < BT_NUM_ISAPORTS)
- return (bt_board_ports[bio_index]);
- return (-1);
-}
-
-
static void
btallocccbs(struct bt_softc *bt)
{
@@ -970,7 +918,6 @@ btfreeccb(struct bt_softc *bt, struct bt_ccb *bccb)
}
bccb->flags = BCCB_FREE;
SLIST_INSERT_HEAD(&bt->free_bt_ccbs, bccb, links);
- bt->active_ccbs--;
splx(s);
}
@@ -983,16 +930,13 @@ btgetccb(struct bt_softc *bt)
s = splcam();
if ((bccb = SLIST_FIRST(&bt->free_bt_ccbs)) != NULL) {
SLIST_REMOVE_HEAD(&bt->free_bt_ccbs, links);
- bt->active_ccbs++;
} else if (bt->num_ccbs < bt->max_ccbs) {
btallocccbs(bt);
bccb = SLIST_FIRST(&bt->free_bt_ccbs);
if (bccb == NULL)
printf("%s: Can't malloc BCCB\n", bt_name(bt));
- else {
+ else
SLIST_REMOVE_HEAD(&bt->free_bt_ccbs, links);
- bt->active_ccbs++;
- }
}
splx(s);
@@ -1015,6 +959,7 @@ btaction(struct cam_sim *sim, union ccb *ccb)
{
struct bt_ccb *bccb;
struct bt_hccb *hccb;
+ u_int16_t targ_mask;
/*
* get a bccb to use.
@@ -1047,6 +992,7 @@ btaction(struct cam_sim *sim, union ccb *ccb)
hccb->target_lun = ccb->ccb_h.target_lun;
hccb->btstat = 0;
hccb->sdstat = 0;
+ targ_mask = (0x01 << hccb->target_id);
if (ccb->ccb_h.func_code == XPT_SCSI_IO) {
struct ccb_scsiio *csio;
@@ -1055,8 +1001,8 @@ btaction(struct cam_sim *sim, union ccb *ccb)
csio = &ccb->csio;
ccbh = &csio->ccb_h;
hccb->opcode = INITIATOR_CCB_WRESID;
- hccb->datain = (ccb->ccb_h.flags & CAM_DIR_IN) ? 1 : 0;
- hccb->dataout =(ccb->ccb_h.flags & CAM_DIR_OUT) ? 1 : 0;
+ hccb->datain = (ccb->ccb_h.flags & CAM_DIR_IN) != 0;
+ hccb->dataout = (ccb->ccb_h.flags & CAM_DIR_OUT) != 0;
hccb->cmd_len = csio->cdb_len;
if (hccb->cmd_len > sizeof(hccb->scsi_cdb)) {
ccb->ccb_h.status = CAM_REQ_INVALID;
@@ -1365,7 +1311,7 @@ btexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
bus_dmamap_sync(bt->buffer_dmat, bccb->dmamap, op);
} else {
- bccb->hccb.opcode = INITIATOR_CCB;
+ bccb->hccb.opcode = INITIATOR_SG_CCB;
bccb->hccb.data_len = 0;
bccb->hccb.data_addr = 0;
}
@@ -1395,27 +1341,8 @@ btexecuteccb(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
/* Tell the adapter about this command */
bt->cur_outbox->ccb_addr = btccbvtop(bt, bccb);
- if (bt->cur_outbox->action_code != BMBO_FREE) {
- /*
- * We should never encounter a busy mailbox.
- * If we do, warn the user, and treat it as
- * a resource shortage. If the controller is
- * hung, one of the pending transactions will
- * timeout causing us to start recovery operations.
- */
- printf("%s: Encountered busy mailbox with %d out of %d "
- "commands active!!!", bt_name(bt), bt->active_ccbs,
- bt->max_ccbs);
- untimeout(bttimeout, bccb, ccb->ccb_h.timeout_ch);
- if (nseg != 0)
- bus_dmamap_unload(bt->buffer_dmat, bccb->dmamap);
- btfreeccb(bt, bccb);
- bt->resource_shortage = TRUE;
- xpt_freeze_simq(bt->sim, /*count*/1);
- ccb->ccb_h.status = CAM_REQUEUE_REQ;
- xpt_done(ccb);
- return;
- }
+ if (bt->cur_outbox->action_code != BMBO_FREE)
+ panic("%s: Too few mailboxes or to many ccbs???", bt_name(bt));
bt->cur_outbox->action_code = BMBO_START;
bt_outb(bt, COMMAND_REG, BOP_START_MBOX);
btnextoutbox(bt);
@@ -1536,22 +1463,14 @@ btdone(struct bt_softc *bt, struct bt_ccb *bccb, bt_mbi_comp_code_t comp_code)
break;
case BMBI_ABORT:
case BMBI_ERROR:
- if (bootverbose) {
- printf("bt: ccb %p - error %x occured. "
- "btstat = %x, sdstat = %x\n",
- (void *)bccb, comp_code, bccb->hccb.btstat,
- bccb->hccb.sdstat);
- }
+#if 0
+ printf("bt: ccb %x - error %x occured. btstat = %x, sdstat = %x\n",
+ bccb, comp_code, bccb->hccb.btstat, bccb->hccb.sdstat);
+#endif
/* An error occured */
switch(bccb->hccb.btstat) {
case BTSTAT_DATARUN_ERROR:
- if (bccb->hccb.data_len == 0) {
- /*
- * At least firmware 4.22, does this
- * for a QUEUE FULL condition.
- */
- bccb->hccb.sdstat = SCSI_STATUS_QUEUE_FULL;
- } else if (bccb->hccb.data_len < 0) {
+ if (bccb->hccb.data_len <= 0) {
csio->ccb_h.status = CAM_DATA_RUN_ERR;
break;
}
@@ -1779,13 +1698,11 @@ bt_cmd(struct bt_softc *bt, bt_op_t opcode, u_int8_t *params, u_int param_len,
u_int intstat;
u_int reply_buf_size;
int s;
- int cmd_complete;
/* No data returned to start */
reply_buf_size = reply_len;
reply_len = 0;
intstat = 0;
- cmd_complete = 0;
bt->command_cmp = 0;
/*
@@ -1821,13 +1738,10 @@ bt_cmd(struct bt_softc *bt, bt_op_t opcode, u_int8_t *params, u_int param_len,
status = bt_inb(bt, STATUS_REG);
intstat = bt_inb(bt, INTSTAT_REG);
if ((intstat & (INTR_PENDING|CMD_COMPLETE))
- == (INTR_PENDING|CMD_COMPLETE)) {
- cmd_complete = 1;
+ == (INTR_PENDING|CMD_COMPLETE))
break;
- }
if (bt->command_cmp != 0) {
status = bt->latched_status;
- cmd_complete = 1;
break;
}
if ((status & DATAIN_REG_READY) != 0)
@@ -1849,7 +1763,7 @@ bt_cmd(struct bt_softc *bt, bt_op_t opcode, u_int8_t *params, u_int param_len,
* the CMD_REG_BUSY status to clear and check for a command
* failure.
*/
- if (cmd_complete == 0 && opcode == BOP_MODIFY_IO_ADDR) {
+ if (opcode == BOP_MODIFY_IO_ADDR) {
while (--cmd_timeout) {
status = bt_inb(bt, STATUS_REG);
@@ -1874,7 +1788,7 @@ bt_cmd(struct bt_softc *bt, bt_op_t opcode, u_int8_t *params, u_int param_len,
* For all other commands, we wait for any output data
* and the final comand completion interrupt.
*/
- while (cmd_complete == 0 && --cmd_timeout) {
+ while (--cmd_timeout) {
status = bt_inb(bt, STATUS_REG);
intstat = bt_inb(bt, INTSTAT_REG);
diff --git a/sys/dev/buslogic/btreg.h b/sys/dev/buslogic/btreg.h
index fa049bcfc3e2b..d31db883fc3d6 100644
--- a/sys/dev/buslogic/btreg.h
+++ b/sys/dev/buslogic/btreg.h
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: btreg.h,v 1.2 1998/10/30 02:06:44 gibbs Exp $
+ * $Id$
*/
#ifndef _BTREG_H_
@@ -408,7 +408,6 @@ typedef struct {
struct bt_isa_port {
u_int16_t addr;
u_int8_t probed;
- u_int8_t bio;
};
extern struct bt_isa_port bt_isa_ports[];
@@ -550,7 +549,7 @@ struct bt_hccb {
wide_tag_type :2; /* Wide Lun CCB format */
u_int8_t cmd_len;
u_int8_t sense_len;
- int32_t data_len; /* residuals can be negative */
+ u_int32_t data_len;
u_int32_t data_addr;
u_int8_t reserved[2];
u_int8_t btstat;
@@ -600,7 +599,6 @@ struct bt_softc {
struct bt_ccb *bt_ccb_array;
SLIST_HEAD(,bt_ccb) free_bt_ccbs;
LIST_HEAD(,ccb_hdr) pending_ccbs;
- u_int active_ccbs;
u_int32_t bt_ccb_physbase;
bt_mbox_in_t *in_boxes;
bt_mbox_out_t *out_boxes;
@@ -668,11 +666,6 @@ char * bt_name(struct bt_softc *bt);
int bt_check_probed_iop(u_int ioport);
void bt_mark_probed_bio(isa_compat_io_t port);
void bt_mark_probed_iop(u_int ioport);
-void bt_find_probe_range(int ioport,
- int *port_index,
- int *max_port_index);
-
-int bt_iop_from_bio(isa_compat_io_t bio_index);
#define DEFAULT_CMD_TIMEOUT 10000 /* 1 sec */
int bt_cmd(struct bt_softc *bt, bt_op_t opcode,
diff --git a/sys/dev/dec/mcclock_if.m b/sys/dev/dec/mcclock_if.m
index 79686237ed57b..39a06baf5d489 100644
--- a/sys/dev/dec/mcclock_if.m
+++ b/sys/dev/dec/mcclock_if.m
@@ -23,10 +23,10 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: mcclock_if.m,v 1.1 1998/06/14 13:52:55 dfr Exp $
+# $Id$
#
-INTERFACE mcclock;
+INTERFACE mcclock
#
# Read an RTC register and return its value.
diff --git a/sys/dev/dpt/dpt_control.c b/sys/dev/dpt/dpt_control.c
index b28fb672d1cfc..ba4bec9c3cdb1 100644
--- a/sys/dev/dpt/dpt_control.c
+++ b/sys/dev/dpt/dpt_control.c
@@ -36,7 +36,7 @@
* future.
*/
-#ident "$Id: dpt_control.c,v 1.9 1998/09/15 08:33:31 gibbs Exp $"
+#ident "$Id: dpt_control.c,v 1.8 1998/08/05 00:54:36 eivind Exp $"
#include "opt_dpt.h"
@@ -782,8 +782,7 @@ dpt_ioctl(dev_t dev, u_long cmd, caddr_t cmdarg, int flags, struct proc * p)
compat_softc.ha_npend = dpt->submitted_ccbs_count;
compat_softc.ha_active_jobs = dpt->waiting_ccbs_count;
strncpy(compat_softc.ha_fw_version,
- dpt->board_data.firmware,
- sizeof(compat_softc.ha_fw_version));
+ dpt->board_data.firmware, 4);
compat_softc.ha_ccb = NULL;
compat_softc.ha_cblist = NULL;
compat_softc.ha_dev = NULL;
diff --git a/sys/dev/dpt/dpt_scsi.c b/sys/dev/dpt/dpt_scsi.c
index 47c12a51bdade..42ff038f6645d 100644
--- a/sys/dev/dpt/dpt_scsi.c
+++ b/sys/dev/dpt/dpt_scsi.c
@@ -43,7 +43,7 @@
* arrays that span controllers (Wow!).
*/
-#ident "$Id: dpt_scsi.c,v 1.21 1998/12/22 00:52:27 eivind Exp $"
+#ident "$Id: dpt_scsi.c,v 1.19 1998/10/15 23:17:56 gibbs Exp $"
#define _DPT_C_
@@ -300,12 +300,11 @@ dptallocsgmap(struct dpt_softc *dpt)
return (NULL);
}
- (void)bus_dmamap_load(dpt->sg_dmat, sg_map->sg_dmamap, sg_map->sg_vaddr,
- PAGE_SIZE, dptmapmem, &sg_map->sg_physaddr,
- /*flags*/0);
-
SLIST_INSERT_HEAD(&dpt->sg_maps, sg_map, links);
+ bus_dmamap_load(dpt->sg_dmat, sg_map->sg_dmamap, sg_map->sg_vaddr,
+ PAGE_SIZE, dptmapmem, &sg_map->sg_physaddr, /*flags*/0);
+
return (sg_map);
}
@@ -1129,7 +1128,7 @@ dpt_free(struct dpt_softc *dpt)
free(dpt, M_DEVBUF);
}
-static u_int8_t string_sizes[] =
+u_int8_t string_sizes[] =
{
sizeof(((dpt_inq_t*)NULL)->vendor),
sizeof(((dpt_inq_t*)NULL)->modelNum),
@@ -1148,9 +1147,6 @@ dpt_init(struct dpt_softc *dpt)
int i;
int retval;
- dpt->init_level = 0;
- SLIST_INIT(&dpt->sg_maps);
-
#ifdef DPT_RESET_BOARD
printf("dpt%d: resetting HBA\n", dpt->unit);
dpt_outb(dpt, HA_WCOMMAND, EATA_CMD_RESET);
diff --git a/sys/dev/en/midway.c b/sys/dev/en/midway.c
index 44a465927ca41..2e22fd1db3291 100644
--- a/sys/dev/en/midway.c
+++ b/sys/dev/en/midway.c
@@ -1278,8 +1278,8 @@ caddr_t data;
break;
if ((shadow = pvc_attach(ifp)) != NULL) {
- snprintf(ifr->ifr_name, sizeof(ifr->ifr_name),
- "%s%d", shadow->if_name, shadow->if_unit);
+ sprintf(ifr->ifr_name, "%s%d",
+ shadow->if_name, shadow->if_unit);
}
else
error = ENOBUFS;
@@ -3643,8 +3643,8 @@ static int en_pvctx(sc, pvcreq)
pvcreq->pvc_ifname);
return (EINVAL);
}
- snprintf(pvcreq->pvc_ifname, sizeof(pvcreq->pvc_ifname),
- "%s%d", sc->enif.if_name, sc->enif.if_unit);
+ sprintf(pvcreq->pvc_ifname, "%s%d",
+ sc->enif.if_name, sc->enif.if_unit);
ATM_PH_FLAGS(&api.aph) = ATM_PH_PVCSIF |
(ATM_PH_FLAGS(pvc_aph) & (ATM_PH_AAL5|ATM_PH_LLCSNAP));
diff --git a/sys/dev/fb/fb.c b/sys/dev/fb/fb.c
deleted file mode 100644
index 99d15f852a373..0000000000000
--- a/sys/dev/fb/fb.c
+++ /dev/null
@@ -1,421 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: fb.c,v 1.2 1999/01/12 10:35:50 yokota Exp $
- */
-
-#include "fb.h"
-#include "opt_fb.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-
-#include <machine/console.h>
-
-#include <dev/fb/fbreg.h>
-
-/* local arrays */
-
-/*
- * We need at least one entry each in order to initialize a video card
- * for the kernel console. The arrays will be increased dynamically
- * when necessary.
- */
-
-static int adapters = 1;
-static video_adapter_t *adp_ini;
-static video_adapter_t **adapter = &adp_ini;
-static video_switch_t *vidsw_ini;
- video_switch_t **vidsw = &vidsw_ini;
-
-#ifdef FB_INSTALL_CDEV
-
-#define ARRAY_DELTA 4
-
-static struct cdevsw *vidcdevsw_ini;
-static struct cdevsw **vidcdevsw = &vidcdevsw_ini;
-
-static void
-vid_realloc_array(void)
-{
- video_adapter_t **new_adp;
- video_switch_t **new_vidsw;
- struct cdevsw **new_cdevsw;
- int newsize;
- int s;
-
- s = spltty();
- newsize = ((adapters + ARRAY_DELTA)/ARRAY_DELTA)*ARRAY_DELTA;
- new_adp = malloc(sizeof(*new_adp)*newsize, M_DEVBUF, M_WAITOK);
- new_vidsw = malloc(sizeof(*new_vidsw)*newsize, M_DEVBUF, M_WAITOK);
- new_cdevsw = malloc(sizeof(*new_cdevsw)*newsize, M_DEVBUF, M_WAITOK);
- bzero(new_adp, sizeof(*new_adp)*newsize);
- bzero(new_vidsw, sizeof(*new_vidsw)*newsize);
- bzero(new_cdevsw, sizeof(*new_cdevsw)*newsize);
- bcopy(adapter, new_adp, sizeof(*adapter)*adapters);
- bcopy(vidsw, new_vidsw, sizeof(*vidsw)*adapters);
- bcopy(vidcdevsw, new_cdevsw, sizeof(*vidcdevsw)*adapters);
- if (adapters > 1) {
- free(adapter, M_DEVBUF);
- free(vidsw, M_DEVBUF);
- free(vidcdevsw, M_DEVBUF);
- }
- adapter = new_adp;
- vidsw = new_vidsw;
- vidcdevsw = new_cdevsw;
- adapters = newsize;
- splx(s);
-
- if (bootverbose)
- printf("fb: new array size %d\n", adapters);
-}
-
-#endif /* FB_INSTALL_CDEV */
-
-/*
- * Low-level frame buffer driver functions
- * frame buffer subdrivers, such as the VGA driver, call these functions
- * to initialize the video_adapter structure and register it to the virtual
- * frame buffer driver `fb'.
- */
-
-/* initialize the video_adapter_t structure */
-void
-vid_init_struct(video_adapter_t *adp, char *name, int type, int unit)
-{
- adp->va_flags = 0;
- adp->va_name = name;
- adp->va_type = type;
- adp->va_unit = unit;
-}
-
-/* Register a video adapter */
-int
-vid_register(video_adapter_t *adp)
-{
- video_driver_t **list;
- video_driver_t *p;
- int index;
-
- for (index = 0; index < adapters; ++index) {
- if (adapter[index] == NULL)
- break;
- }
- if (index >= adapters)
- return -1;
-
- adp->va_index = index;
- adp->va_token = NULL;
- list = (video_driver_t **)videodriver_set.ls_items;
- while ((p = *list++) != NULL) {
- if (strcmp(p->name, adp->va_name) == 0) {
- adapter[index] = adp;
- vidsw[index] = p->vidsw;
- return index;
- }
- }
-
- return -1;
-}
-
-int
-vid_unregister(video_adapter_t *adp)
-{
- if ((adp->va_index < 0) || (adp->va_index >= adapters))
- return ENOENT;
- if (adapter[adp->va_index] != adp)
- return ENOENT;
-
- adapter[adp->va_index] = NULL;
- vidsw[adp->va_index] = NULL;
- return 0;
-}
-
-/* Get video I/O function table */
-video_switch_t
-*vid_get_switch(char *name)
-{
- video_driver_t **list;
- video_driver_t *p;
-
- list = (video_driver_t **)videodriver_set.ls_items;
- while ((p = *list++) != NULL) {
- if (strcmp(p->name, name) == 0)
- return p->vidsw;
- }
-
- return NULL;
-}
-
-/*
- * Video card client functions
- * Video card clients, such as the console driver `syscons' and the frame
- * buffer cdev driver, use these functions to claim and release a card for
- * exclusive use.
- */
-
-/* find the video card specified by a driver name and a unit number */
-int
-vid_find_adapter(char *driver, int unit)
-{
- int i;
-
- for (i = 0; i < adapters; ++i) {
- if (adapter[i] == NULL)
- continue;
- if (strcmp("*", driver) && strcmp(adapter[i]->va_name, driver))
- continue;
- if ((unit != -1) && (adapter[i]->va_unit != unit))
- continue;
- return i;
- }
- return -1;
-}
-
-/* allocate a video card */
-int
-vid_allocate(char *driver, int unit, void *id)
-{
- int index;
- int s;
-
- s = spltty();
- index = vid_find_adapter(driver, unit);
- if (index >= 0) {
- if (adapter[index]->va_token) {
- splx(s);
- return -1;
- }
- adapter[index]->va_token = id;
- }
- splx(s);
- return index;
-}
-
-int
-vid_release(video_adapter_t *adp, void *id)
-{
- int error;
- int s;
-
- s = spltty();
- if (adp->va_token == NULL) {
- error = EINVAL;
- } else if (adp->va_token != id) {
- error = EPERM;
- } else {
- adp->va_token = NULL;
- error = 0;
- }
- splx(s);
- return error;
-}
-
-/* Get a video adapter structure */
-video_adapter_t
-*vid_get_adapter(int index)
-{
- if ((index < 0) || (index >= adapters))
- return NULL;
- return adapter[index];
-}
-
-/* Configure drivers: this is a backdoor for the console driver XXX */
-int
-vid_configure(int flags)
-{
- video_driver_t **list;
- video_driver_t *p;
-
- list = (video_driver_t **)videodriver_set.ls_items;
- while ((p = *list++) != NULL) {
- if (p->configure != NULL)
- (*p->configure)(flags);
- }
-
- return 0;
-}
-
-/*
- * Virtual frame buffer cdev driver functions
- * The virtual frame buffer driver dispatches driver functions to
- * appropriate subdrivers.
- */
-
-#define DRIVER_NAME "fb"
-
-#ifdef FB_INSTALL_CDEV
-
-#define FB_UNIT(dev) minor(dev)
-#define FB_MKMINOR(unit) (u)
-
-#if notyet
-
-static d_open_t fbopen;
-static d_close_t fbclose;
-static d_ioctl_t fbioctl;
-static d_mmap_t fbmmap;
-
-#define CDEV_MAJOR 141 /* XXX */
-
-static struct cdevsw fb_cdevsw = {
- fbopen, fbclose, noread, nowrite, /* ??? */
- fbioctl, nostop, nullreset, nodevtotty,
- seltrue, fbmmap, NULL, DRIVER_NAME,
- NULL, -1, nodump, nopsize,
-};
-
-static void
-vfbattach(void *arg)
-{
- static int fb_devsw_installed = FALSE;
- dev_t dev;
-
- if (!fb_devsw_installed) {
- dev = makedev(CDEV_MAJOR, 0);
- cdevsw_add(&dev, &fb_cdevsw, NULL);
- fb_devsw_installed = TRUE;
- }
-}
-
-PSEUDO_SET(vfbattach, fb);
-
-#endif /* notyet */
-
-int
-fb_attach(dev_t dev, video_adapter *adp, struct cdevsw *cdevsw)
-{
- int s;
-
- if (adp->va_index >= adapters)
- return EINVAL;
- if (adapter[adp->va_index] != adp)
- return EINVAL;
-
- s = spltty();
- adp->va_minor = minor(dev);
- vidcdevsw[adp->va_index] = cdevsw;
- splx(s);
-
- /* XXX: DEVFS? */
-
- if (adp->va_index + 1 >= adapters)
- vid_realloc_array();
-
- printf("fb%d at %s%d\n", adp->va_index, adp->va_name, adp->va_unit);
- return 0;
-}
-
-int
-fb_detach(dev_t dev, video_adapter *adp, struct cdevsw *cdevsw)
-{
- int s;
-
- if (adp->va_index >= adapters)
- return EINVAL;
- if (adapter[adp->va_index] != adp)
- return EINVAL;
- if (vidcdevsw[adp->va_index] != cdevsw)
- return EINVAL;
-
- s = spltty();
- vidcdevsw[adp->va_index] = NULL;
- splx(s);
- return 0;
-}
-
-#endif /* FB_INSTALL_CDEV */
-
-static char
-*adapter_name(int type)
-{
- static struct {
- int type;
- char *name;
- } names[] = {
- { KD_MONO, "MDA" },
- { KD_HERCULES, "Hercules" },
- { KD_CGA, "CGA" },
- { KD_EGA, "EGA" },
- { KD_VGA, "VGA" },
- { KD_PC98, "PC-98x1" },
- { -1, "Unknown" },
- };
- int i;
-
- for (i = 0; names[i].type != -1; ++i)
- if (names[i].type == type)
- break;
- return names[i].name;
-}
-
-void
-fb_dump_adp_info(char *driver, video_adapter_t *adp, int level)
-{
- if (level <= 0)
- return;
-
- printf("%s%d: %s%d, %s, type:%s (%d), flags:0x%x\n",
- DRIVER_NAME, adp->va_index, driver, adp->va_unit, adp->va_name,
- adapter_name(adp->va_type), adp->va_type, adp->va_flags);
- printf("%s%d: port:0x%x-0x%x, crtc:0x%x, mem:0x%x 0x%x\n",
- DRIVER_NAME, adp->va_index,
- adp->va_io_base, adp->va_io_base + adp->va_io_size - 1,
- adp->va_crtc_addr, adp->va_mem_base, adp->va_mem_size);
- printf("%s%d: init mode:%d, bios mode:%d, current mode:%d\n",
- DRIVER_NAME, adp->va_index,
- adp->va_initial_mode, adp->va_initial_bios_mode, adp->va_mode);
- printf("%s%d: window:0x%x size:%dk gran:%dk, buf:0x%x size:%dk\n",
- DRIVER_NAME, adp->va_index,
- adp->va_window, (int)adp->va_window_size/1024,
- (int)adp->va_window_gran/1024, adp->va_buffer,
- (int)adp->va_buffer_size/1024);
-}
-
-void
-fb_dump_mode_info(char *driver, video_adapter_t *adp, video_info_t *info,
- int level)
-{
- if (level <= 0)
- return;
-
- printf("%s%d: %s, mode:%d, flags:0x%x ",
- driver, adp->va_unit, adp->va_name, info->vi_mode, info->vi_flags);
- if (info->vi_flags & V_INFO_GRAPHICS)
- printf("G %dx%dx%d, %d plane(s), font:%dx%d, ",
- info->vi_width, info->vi_height,
- info->vi_depth, info->vi_planes,
- info->vi_cwidth, info->vi_cheight);
- else
- printf("T %dx%d, font:%dx%d, ",
- info->vi_width, info->vi_height,
- info->vi_cwidth, info->vi_cheight);
- printf("win:0x%x\n", info->vi_window);
-}
diff --git a/sys/dev/fb/fbreg.h b/sys/dev/fb/fbreg.h
deleted file mode 100644
index 46f0343d0edd1..0000000000000
--- a/sys/dev/fb/fbreg.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: fbreg.h,v 1.1 1999/01/09 02:44:49 yokota Exp $
- */
-
-#ifndef _DEV_FB_FBREG_H_
-#define _DEV_FB_FBREG_H_
-
-#ifdef KERNEL
-
-#define V_MAX_ADAPTERS 8 /* XXX */
-
-/* some macros */
-#ifdef __i386__
-#define bcopy_toio(s, d, c) generic_bcopy((void *)(s), (void *)(d), c)
-#define bcopy_fromio(s, d, c) generic_bcopy((void *)(s), (void *)(d), c)
-#define bzero_io(d, c) generic_bzero((void *)(d), c)
-void generic_bcopy(const void *s, void *d, size_t c);
-void generic_bzero(void *d, size_t c);
-#else /* !__i386__ */
-#define bcopy_toio(s, d, c) memcpy_toio(d, s, c)
-#define bcopy_fromio(s, d, c) memcpy_fromio(d, s, c)
-#define bzero_io(d, c) memset_io(d, 0, c)
-#endif /* !__i386__ */
-
-/* video function table */
-typedef int vi_probe_t(int unit, video_adapter_t **adpp, void *arg, int flags);
-typedef int vi_init_t(int unit, video_adapter_t *adp, int flags);
-typedef int vi_get_info_t(video_adapter_t *adp, int mode, video_info_t *info);
-typedef int vi_query_mode_t(video_adapter_t *adp, video_info_t *info);
-typedef int vi_set_mode_t(video_adapter_t *adp, int mode);
-typedef int vi_save_font_t(video_adapter_t *adp, int page, int size,
- u_char *data, int c, int count);
-typedef int vi_load_font_t(video_adapter_t *adp, int page, int size,
- u_char *data, int c, int count);
-typedef int vi_show_font_t(video_adapter_t *adp, int page);
-typedef int vi_save_palette_t(video_adapter_t *adp, u_char *palette);
-typedef int vi_load_palette_t(video_adapter_t *adp, u_char *palette);
-typedef int vi_set_border_t(video_adapter_t *adp, int border);
-typedef int vi_save_state_t(video_adapter_t *adp, void *p, size_t size);
-typedef int vi_load_state_t(video_adapter_t *adp, void *p);
-typedef int vi_set_win_org_t(video_adapter_t *adp, off_t offset);
-typedef int vi_read_hw_cursor_t(video_adapter_t *adp, int *col, int *row);
-typedef int vi_set_hw_cursor_t(video_adapter_t *adp, int col, int row);
-typedef int vi_set_hw_cursor_shape_t(video_adapter_t *adp, int base,
- int height, int celsize, int blink);
-typedef int vi_blank_display_t(video_adapter_t *adp, int mode);
-#define V_DISPLAY_POWER_ON 0
-#define V_DISPLAY_SUSPEND 1
-#define V_DISPLAY_SUSPEND1 1
-#define V_DISPLAY_SUSPEND2 2
-#define V_DISPLAY_POWER_OFF 3
-typedef int vi_mmap_t(video_adapter_t *adp, vm_offset_t offset);
-typedef int vi_diag_t(video_adapter_t *adp, int level);
-
-typedef struct video_switch {
- vi_probe_t *probe;
- vi_init_t *init;
- vi_get_info_t *get_info;
- vi_query_mode_t *query_mode;
- vi_set_mode_t *set_mode;
- vi_save_font_t *save_font;
- vi_load_font_t *load_font;
- vi_show_font_t *show_font;
- vi_save_palette_t *save_palette;
- vi_load_palette_t *load_palette;
- vi_set_border_t *set_border;
- vi_save_state_t *save_state;
- vi_load_state_t *load_state;
- vi_set_win_org_t *set_win_org;
- vi_read_hw_cursor_t *read_hw_cursor;
- vi_set_hw_cursor_t *set_hw_cursor;
- vi_set_hw_cursor_shape_t *set_hw_cursor_shape;
- vi_blank_display_t *blank_display;
- vi_mmap_t *mmap;
- vi_diag_t *diag;
-} video_switch_t;
-
-/* video driver */
-typedef struct video_driver {
- char *name;
- video_switch_t *vidsw;
- int (*configure)(int); /* backdoor for the console driver */
-} video_driver_t;
-
-#define VIDEO_DRIVER(name, sw, config) \
- static struct video_driver name##_driver = { \
- #name, &sw, config \
- }; \
- DATA_SET(videodriver_set, name##_driver);
-
-/* global variables */
-extern struct video_switch **vidsw;
-extern struct linker_set videodriver_set;
-
-/* functions for the video card driver */
-int vid_register(video_adapter_t *adp);
-int vid_unregister(video_adapter_t *adp);
-video_switch_t *vid_get_switch(char *name);
-void vid_init_struct(video_adapter_t *adp, char *name, int type,
- int unit);
-
-/* functions for the video card client */
-int vid_allocate(char *driver, int unit, void *id);
-int vid_release(video_adapter_t *adp, void *id);
-int vid_find_adapter(char *driver, int unit);
-video_adapter_t *vid_get_adapter(int index);
-
-/* a backdoor for the console driver to tickle the video driver XXX */
-int vid_configure(int flags);
-#define VIO_PROBE_ONLY (1 << 0) /* probe only, don't initialize */
-
-#ifdef FB_INSTALL_CDEV
-
-/* virtual frame buffer driver functions */
-int fb_attach(dev_t dev, video_adapter_t *adp,
- struct cdevsw *cdevsw);
-int fb_detach(dev_t dev, video_adapter_t *adp,
- struct cdevsw *cdevsw);
-
-#endif /* FB_INSTALL_CDEV */
-
-/* generic low-level driver functions */
-
-void fb_dump_adp_info(char *driver, video_adapter_t *adp, int level);
-void fb_dump_mode_info(char *driver, video_adapter_t *adp,
- video_info_t *info, int level);
-
-#endif /* KERNEL */
-
-#endif /* !_DEV_FB_FBREG_H_ */
diff --git a/sys/dev/fb/splash.c b/sys/dev/fb/splash.c
deleted file mode 100644
index 1f3281e361a3c..0000000000000
--- a/sys/dev/fb/splash.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: splash.c,v 1.1 1999/01/09 02:44:49 yokota Exp $
- */
-
-#include "splash.h"
-
-#if NSPLASH > 0
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/linker.h>
-
-#include <machine/console.h>
-
-#include <dev/fb/fbreg.h>
-#include <dev/fb/splashreg.h>
-
-/* video adapter and image decoder */
-static video_adapter_t *splash_adp;
-static splash_decoder_t *splash_decoder;
-
-/* decoder candidates */
-static int decoders;
-static splash_decoder_t **decoder_set;
-#define DECODER_ARRAY_DELTA 4
-
-/* console driver callback */
-static int (*splash_callback)(int);
-
-static int
-splash_find_data(splash_decoder_t *decoder)
-{
- caddr_t image_module;
- caddr_t p;
-
- if (decoder->data_type == NULL)
- return 0;
- image_module = preload_search_by_type(decoder->data_type);
- if (image_module == NULL)
- return ENOENT;
- p = preload_search_info(image_module, MODINFO_ADDR);
- if (p == NULL)
- return ENOENT;
- decoder->data = *(void **)p;
- p = preload_search_info(image_module, MODINFO_SIZE);
- if (p == NULL)
- return ENOENT;
- decoder->data_size = *(size_t *)p;
- if (bootverbose)
- printf("splash: image@%p, size:%u\n",
- decoder->data, decoder->data_size);
- return 0;
-}
-
-static int
-splash_test(splash_decoder_t *decoder)
-{
- if (splash_find_data(decoder))
- return ENOENT; /* XXX */
- if ((*decoder->init)(splash_adp)) {
- decoder->data = NULL;
- decoder->data_size = 0;
- return ENODEV; /* XXX */
- }
- if (bootverbose)
- printf("splash: image decoder found: %s\n", decoder->name);
- return 0;
-}
-
-static void
-splash_new(splash_decoder_t *decoder)
-{
- splash_decoder = decoder;
- if (splash_callback != NULL)
- (*splash_callback)(SPLASH_INIT);
-}
-
-int
-splash_register(splash_decoder_t *decoder)
-{
- splash_decoder_t **p;
- int error;
- int i;
-
- if (splash_adp != NULL) {
- /*
- * If the video card has aleady been initialized, test
- * this decoder immediately.
- */
- error = splash_test(decoder);
- if (error == 0) {
- /* replace the current decoder with new one */
- if (splash_decoder != NULL)
- error = splash_term(splash_adp);
- if (error == 0)
- splash_new(decoder);
- }
- return error;
- } else {
- /* register the decoder for later use */
- for (i = 0; i < decoders; ++i) {
- if (decoder_set[i] == NULL)
- break;
- }
- if ((i >= decoders) && (decoders % DECODER_ARRAY_DELTA) == 0) {
- p = malloc(sizeof(*p)*(decoders + DECODER_ARRAY_DELTA),
- M_DEVBUF, M_NOWAIT);
- if (p == NULL)
- return ENOMEM;
- if (decoder_set != NULL)
- bcopy(decoder_set, p, sizeof(*p)*decoders);
- free(decoder_set, M_DEVBUF);
- decoder_set = p;
- i = decoders++;
- }
- decoder_set[i] = decoder;
- }
-
- return 0;
-}
-
-int
-splash_unregister(splash_decoder_t *decoder)
-{
- int error;
-
- if (splash_decoder == decoder) {
- if ((error = splash_term(splash_adp)) != 0)
- return error;
- }
- return 0;
-}
-
-int
-splash_init(video_adapter_t *adp, int (*callback)(int))
-{
- int i;
-
- splash_adp = adp;
- splash_callback = callback;
-
- splash_decoder = NULL;
- for (i = 0; i < decoders; ++i) {
- if (decoder_set[i] == NULL)
- continue;
- if (splash_test(decoder_set[i]) == 0) {
- splash_new(decoder_set[i]);
- break;
- }
- decoder_set[i] = NULL;
- }
- for (++i; i < decoders; ++i) {
- decoder_set[i] = NULL;
- }
- return 0;
-}
-
-int
-splash_term(video_adapter_t *adp)
-{
- int error = 0;
-
- if (splash_decoder != NULL) {
- if (splash_callback != NULL)
- error = (*splash_callback)(SPLASH_TERM);
- if (error == 0)
- error = (*splash_decoder->term)(adp);
- if (error == 0)
- splash_decoder = NULL;
- }
- return error;
-}
-
-int
-splash(video_adapter_t *adp, int on)
-{
- if (splash_decoder != NULL)
- return (*splash_decoder->splash)(adp, on);
- return ENODEV;
-}
-
-#endif /* NSPLASH > 0 */
diff --git a/sys/dev/fb/splashreg.h b/sys/dev/fb/splashreg.h
deleted file mode 100644
index fb785346202d3..0000000000000
--- a/sys/dev/fb/splashreg.h
+++ /dev/null
@@ -1,102 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: splashreg.h,v 1.1 1999/01/09 02:44:49 yokota Exp $
- */
-
-#ifndef _DEV_FB_SPLASHREG_H_
-#define _DEV_FB_SPLASHREG_H_
-
-#define SPLASH_IMAGE "splash_image_data"
-
-struct video_adapter;
-
-struct image_decoder {
- char *name;
- int (*init)(struct video_adapter *adp);
- int (*term)(struct video_adapter *adp);
- int (*splash)(struct video_adapter *adp, int on);
- char *data_type;
- void *data;
- size_t data_size;
-};
-
-typedef struct image_decoder splash_decoder_t;
-typedef struct image_decoder scrn_saver_t;
-
-#define SPLASH_DECODER(name, sw) \
- static int name##_modevent(module_t mod, int type, void *data) \
- { \
- switch ((modeventtype_t)type) { \
- case MOD_LOAD: \
- return splash_register(&sw); \
- case MOD_UNLOAD: \
- return splash_unregister(&sw); \
- default: \
- break; \
- } \
- return 0; \
- } \
- static moduledata_t name##_mod = { \
- #name, \
- name##_modevent, \
- NULL \
- }; \
- DECLARE_MODULE(name, name##_mod, SI_SUB_DRIVERS, SI_ORDER_ANY)
-
-#define SAVER_MODULE(name, sw) \
- static int name##_modevent(module_t mod, int type, void *data) \
- { \
- switch ((modeventtype_t)type) { \
- case MOD_LOAD: \
- return splash_register(&sw); \
- case MOD_UNLOAD: \
- return splash_unregister(&sw); \
- default: \
- break; \
- } \
- return 0; \
- } \
- static moduledata_t name##_mod = { \
- #name, \
- name##_modevent, \
- NULL \
- }; \
- DECLARE_MODULE(name, name##_mod, SI_SUB_PSEUDO, SI_ORDER_MIDDLE)
-
-/* entry point for the splash image decoder */
-int splash_register(splash_decoder_t *decoder);
-int splash_unregister(splash_decoder_t *decoder);
-
-/* entry points for the console driver */
-int splash_init(video_adapter_t *adp, int (*callback)(int));
-int splash_term(video_adapter_t *adp);
-int splash(video_adapter_t *adp, int on);
-
-/* event types for the callback function */
-#define SPLASH_INIT 0
-#define SPLASH_TERM 1
-
-#endif /* _DEV_FB_SPLASHREG_H_ */
diff --git a/sys/dev/fb/vgareg.h b/sys/dev/fb/vgareg.h
deleted file mode 100644
index 841408e898799..0000000000000
--- a/sys/dev/fb/vgareg.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id:$
- */
-
-#ifndef _DEV_FB_VGAREG_H_
-#define _DEV_FB_VGAREG_H_
-
-/* physical addresses */
-#define MDA_BUF_BASE 0xb0000
-#define MDA_BUF_SIZE 0x08000
-#define MDA_BUF BIOS_PADDRTOVADDR(MDA_BUF_BASE)
-#define CGA_BUF_BASE 0xb8000
-#define CGA_BUF_SIZE 0x08000
-#define CGA_BUF BIOS_PADDRTOVADDR(CGA_BUF_BASE)
-#define EGA_BUF_BASE 0xa0000
-#define EGA_BUF_SIZE 0x20000
-#define EGA_BUF BIOS_PADDRTOVADDR(EGA_BUF_BASE)
-#define GRAPHICS_BUF_BASE 0xa0000
-#define GRAPHICS_BUF_SIZE 0x10000
-#define GRAPHICS_BUF BIOS_PADDRTOVADDR(GRAPHICS_BUF_BASE)
-#define FONT_BUF BIOS_PADDRTOVADDR(GRAPHICS_BUF_BASE)
-#define VIDEO_BUF_BASE 0xa0000
-#define VIDEO_BUF_SIZE 0x20000
-
-/* I/O port addresses */
-#define MONO_CRTC (IO_MDA + 0x04) /* crt controller base mono */
-#define COLOR_CRTC (IO_CGA + 0x04) /* crt controller base color */
-#define MISC (IO_VGA + 0x02) /* misc output register */
-#define ATC (IO_VGA + 0x00) /* attribute controller */
-#define TSIDX (IO_VGA + 0x04) /* timing sequencer idx */
-#define TSREG (IO_VGA + 0x05) /* timing sequencer data */
-#define PIXMASK (IO_VGA + 0x06) /* pixel write mask */
-#define PALRADR (IO_VGA + 0x07) /* palette read address */
-#define PALWADR (IO_VGA + 0x08) /* palette write address */
-#define PALDATA (IO_VGA + 0x09) /* palette data register */
-#define GDCIDX (IO_VGA + 0x0E) /* graph data controller idx */
-#define GDCREG (IO_VGA + 0x0F) /* graph data controller data */
-
-#ifdef KERNEL
-extern int (*vga_sub_configure)(int flags);
-#endif
-
-#endif /* _DEV_FB_VGAREG_H_ */
diff --git a/sys/dev/hea/eni.c b/sys/dev/hea/eni.c
index 8c3e0604c1ac1..977ed9bf2060a 100644
--- a/sys/dev/hea/eni.c
+++ b/sys/dev/hea/eni.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni.c,v 1.4 1998/12/04 22:54:45 archie Exp $
+ * @(#) $Id: eni.c,v 1.1 1998/09/15 08:22:52 phk Exp $
*
*/
@@ -35,20 +35,20 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni.c,v 1.1 1998/09/15 08:22:52 phk Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni.c,v 1.4 1998/12/04 22:54:45 archie Exp $");
-#endif
-
/*
* Typedef local functions
*/
-static const char *eni_pci_probe __P((pcici_t, pcidi_t));
+static char *eni_pci_probe __P((pcici_t, pcidi_t));
static void eni_pci_attach __P((pcici_t, int));
static int eni_get_ack __P((Eni_unit *));
static int eni_get_sebyte __P((Eni_unit *));
@@ -98,7 +98,7 @@ DATA_SET ( pcidevice_set, eni_pci_device );
* NULL unrecognized vendor/device
*
*/
-static const char *
+static char *
eni_pci_probe ( pcici_t config_id, pcidi_t device_id )
{
@@ -496,12 +496,10 @@ eni_pci_attach ( pcici_t config_id, int unit )
* Make a hw version number from the ID register values.
* Format: {Midway ID}.{Mother board ID}.{Daughter board ID}
*/
- snprintf ( eup->eu_config.ac_hard_vers,
- sizeof ( eup->eu_config.ac_hard_vers ),
- "%ld/%ld/%ld",
- (val >> ID_SHIFT) & ID_MASK,
+ sprintf ( eup->eu_config.ac_hard_vers, "%ld/%ld/%ld",
+ (val >> ID_SHIFT) & ID_MASK,
(val >> MID_SHIFT) & MID_MASK,
- (val >> DID_SHIFT) & DID_MASK );
+ (val >> DID_SHIFT) & DID_MASK );
/*
* There is no software version number
diff --git a/sys/dev/hea/eni_buffer.c b/sys/dev/hea/eni_buffer.c
index 71d2eb9128caa..35d1b13ae4f88 100644
--- a/sys/dev/hea/eni_buffer.c
+++ b/sys/dev/hea/eni_buffer.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_buffer.c,v 1.1 1998/09/15 08:22:53 phk Exp $
+ * @(#) $Id: eni_buffer.c,v 1.8 1998/08/26 23:28:53 mks Exp $
*
*/
@@ -35,16 +35,16 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_buffer.c,v 1.8 1998/08/26 23:28:53 mks Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_buffer.c,v 1.1 1998/09/15 08:22:53 phk Exp $");
-#endif
-
static int eni_test_memory __P((Eni_unit *));
/*
diff --git a/sys/dev/hea/eni_globals.c b/sys/dev/hea/eni_globals.c
index 71253e27a8232..a2a51fa834093 100644
--- a/sys/dev/hea/eni_globals.c
+++ b/sys/dev/hea/eni_globals.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_globals.c,v 1.1 1998/09/15 08:22:53 phk Exp $
+ * @(#) $Id: eni_globals.c,v 1.2 1997/05/06 22:07:52 mks Exp $
*
*/
@@ -35,16 +35,16 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_globals.c,v 1.2 1997/05/06 22:07:52 mks Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_globals.c,v 1.1 1998/09/15 08:22:53 phk Exp $");
-#endif
-
/*
* Device unit table
*/
diff --git a/sys/dev/hea/eni_if.c b/sys/dev/hea/eni_if.c
index 49f5e09516cdc..41ffd485b3f13 100644
--- a/sys/dev/hea/eni_if.c
+++ b/sys/dev/hea/eni_if.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_if.c,v 1.2 1998/10/31 20:06:45 phk Exp $
+ * @(#) $Id: eni_if.c,v 1.6 1998/08/26 23:28:53 mks Exp $
*
*/
@@ -35,6 +35,10 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_if.c,v 1.6 1998/08/26 23:28:53 mks Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
@@ -42,10 +46,6 @@
#include <dev/hea/eni_suni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_if.c,v 1.2 1998/10/31 20:06:45 phk Exp $");
-#endif
-
static void eni_get_stats __P((Eni_unit *));
/*
@@ -194,8 +194,7 @@ eni_atm_ioctl ( code, data, arg )
*/
if ( eup == NULL )
return ( ENXIO );
- snprintf ( ifname, sizeof(ifname),
- "%s%d", pip->pif_name, pip->pif_unit );
+ sprintf ( ifname, "%s%d", pip->pif_name, pip->pif_unit );
/*
* Cast response structure onto user's buffer
diff --git a/sys/dev/hea/eni_init.c b/sys/dev/hea/eni_init.c
index 5706c65adb32b..d8106ab0e763e 100644
--- a/sys/dev/hea/eni_init.c
+++ b/sys/dev/hea/eni_init.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_init.c,v 1.1 1998/09/15 08:22:53 phk Exp $
+ * @(#) $Id: eni_init.c,v 1.6 1998/08/26 23:28:53 mks Exp $
*
*/
@@ -35,16 +35,16 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_init.c,v 1.6 1998/08/26 23:28:53 mks Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_init.c,v 1.1 1998/09/15 08:22:53 phk Exp $");
-#endif
-
/*
* Initialize adapter for PDU processing
*
diff --git a/sys/dev/hea/eni_intr.c b/sys/dev/hea/eni_intr.c
index ccc0d6bbc5475..44a6790eb88d9 100644
--- a/sys/dev/hea/eni_intr.c
+++ b/sys/dev/hea/eni_intr.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_intr.c,v 1.2 1998/09/17 09:34:58 phk Exp $
+ * @(#) $Id: eni_intr.c,v 1.1 1998/09/15 08:22:53 phk Exp $
*
*/
@@ -35,6 +35,10 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_intr.c,v 1.1 1998/09/15 08:22:53 phk Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
@@ -42,10 +46,6 @@
#include <dev/hea/eni_suni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_intr.c,v 1.2 1998/09/17 09:34:58 phk Exp $");
-#endif
-
static void eni_suni_intr __P((Eni_unit *));
/*
diff --git a/sys/dev/hea/eni_receive.c b/sys/dev/hea/eni_receive.c
index 8e8be36d6577b..94ce8c48a2217 100644
--- a/sys/dev/hea/eni_receive.c
+++ b/sys/dev/hea/eni_receive.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_receive.c,v 1.2 1998/09/17 09:34:58 phk Exp $
+ * @(#) $Id: eni_receive.c,v 1.1 1998/09/15 08:22:53 phk Exp $
*
*/
@@ -35,16 +35,16 @@
*
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_receive.c,v 1.1 1998/09/15 08:22:53 phk Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_receive.c,v 1.2 1998/09/17 09:34:58 phk Exp $");
-#endif
-
static void eni_recv_stack __P((void *, KBuffer *));
#ifdef DIAGNOSTIC
diff --git a/sys/dev/hea/eni_transmit.c b/sys/dev/hea/eni_transmit.c
index 2721709a8fd6a..25066dfb6060f 100644
--- a/sys/dev/hea/eni_transmit.c
+++ b/sys/dev/hea/eni_transmit.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_transmit.c,v 1.2 1998/10/18 11:58:57 phk Exp $
+ * @(#) $Id: eni_transmit.c,v 1.20 1998/07/17 20:20:16 root Exp $
*
*/
@@ -36,16 +36,16 @@
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_transmit.c,v 1.20 1998/07/17 20:20:16 root Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_transmit.c,v 1.2 1998/10/18 11:58:57 phk Exp $");
-#endif
-
/*
* Make a variable which controls printing of PDUs
* as they travel through the driver.
@@ -467,7 +467,7 @@ retry:
/*
* Gotta slide the data up
*/
- eup->eu_stats.eni_st_drv.drv_xm_segnoal++;
+ eup->eu_stats.eni_st_drv.drv_xm_segnoal;
bfr = cp - align;
KM_COPY ( cp, bfr, KB_LEN ( m ) );
KB_HEADMOVE ( m, -align );
diff --git a/sys/dev/hea/eni_vcm.c b/sys/dev/hea/eni_vcm.c
index a88fc01bc67ad..36c2a3dbcec53 100644
--- a/sys/dev/hea/eni_vcm.c
+++ b/sys/dev/hea/eni_vcm.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: eni_vcm.c,v 1.1 1998/09/15 08:22:54 phk Exp $
+ * @(#) $Id: eni_vcm.c,v 1.8 1998/06/29 23:03:18 mks Exp $
*
*/
@@ -36,16 +36,16 @@
*/
+#ifndef lint
+static char *RCSid = "@(#) $Id: eni_vcm.c,v 1.8 1998/06/29 23:03:18 mks Exp $";
+#endif
+
#include <netatm/kern_include.h>
#include <dev/hea/eni_stats.h>
#include <dev/hea/eni.h>
#include <dev/hea/eni_var.h>
-#ifndef lint
-__RCSID("@(#) $Id: eni_vcm.c,v 1.1 1998/09/15 08:22:54 phk Exp $");
-#endif
-
/*
* VCC Stack Instantiation
diff --git a/sys/dev/hfa/fore_buffer.c b/sys/dev/hfa/fore_buffer.c
index 6952f01cc23d9..d8bdce48c6d1c 100644
--- a/sys/dev/hfa/fore_buffer.c
+++ b/sys/dev/hfa/fore_buffer.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_buffer.c,v 1.1 1998/09/15 08:22:54 phk Exp $
+ * @(#) $Id: fore_buffer.c,v 1.6 1997/05/06 22:09:21 mks Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_buffer.c,v 1.1 1998/09/15 08:22:54 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_buffer.c,v 1.6 1997/05/06 22:09:21 mks Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Local functions
diff --git a/sys/dev/hfa/fore_command.c b/sys/dev/hfa/fore_command.c
index d8e0e9d3cd2e9..980be432deaa8 100644
--- a/sys/dev/hfa/fore_command.c
+++ b/sys/dev/hfa/fore_command.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_command.c,v 1.3 1998/10/31 20:06:52 phk Exp $
+ * @(#) $Id: fore_command.c,v 1.1 1998/09/15 08:22:54 phk Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_command.c,v 1.3 1998/10/31 20:06:52 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_command.c,v 1.1 1998/09/15 08:22:54 phk Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Local variables
*/
@@ -341,8 +341,7 @@ fore_cmd_drain(fup)
sizeof(struct mac_addr));
fup->fu_config.ac_macaddr =
fup->fu_pif.pif_macaddr;
- snprintf(fup->fu_config.ac_hard_vers,
- sizeof(fup->fu_config.ac_hard_vers),
+ sprintf(fup->fu_config.ac_hard_vers,
"%ld.%ld.%ld",
(fp->pr_hwver >> 16) & 0xff,
(fp->pr_hwver >> 8) & 0xff,
diff --git a/sys/dev/hfa/fore_globals.c b/sys/dev/hfa/fore_globals.c
index 5dc803a954172..4abc5fa437c30 100644
--- a/sys/dev/hfa/fore_globals.c
+++ b/sys/dev/hfa/fore_globals.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_globals.c,v 1.1 1998/09/15 08:22:55 phk Exp $
+ * @(#) $Id: fore_globals.c,v 1.6 1997/05/06 22:09:31 mks Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_globals.c,v 1.1 1998/09/15 08:22:55 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_globals.c,v 1.6 1997/05/06 22:09:31 mks Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Supported device models
diff --git a/sys/dev/hfa/fore_if.c b/sys/dev/hfa/fore_if.c
index 479e7e672f816..7d3b3b6dff5f1 100644
--- a/sys/dev/hfa/fore_if.c
+++ b/sys/dev/hfa/fore_if.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_if.c,v 1.2 1998/10/31 20:06:52 phk Exp $
+ * @(#) $Id: fore_if.c,v 1.6 1998/08/26 23:28:58 mks Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_if.c,v 1.2 1998/10/31 20:06:52 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_if.c,v 1.6 1998/08/26 23:28:58 mks Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Handle netatm core service interface ioctl requests
@@ -85,8 +85,7 @@ fore_atm_ioctl(code, data, arg)
fup = (Fore_unit *)pip;
if ( pip == NULL )
return ( ENXIO );
- snprintf ( ifname, sizeof(ifname),
- "%s%d", pip->pif_name, pip->pif_unit );
+ sprintf ( ifname, "%s%d", pip->pif_name, pip->pif_unit );
/*
* Cast response structure onto user's buffer
diff --git a/sys/dev/hfa/fore_init.c b/sys/dev/hfa/fore_init.c
index 7c1ee96dd9055..d82a8f8f7a1d6 100644
--- a/sys/dev/hfa/fore_init.c
+++ b/sys/dev/hfa/fore_init.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_init.c,v 1.3 1998/10/31 20:06:53 phk Exp $
+ * @(#) $Id: fore_init.c,v 1.1 1998/09/15 08:22:55 phk Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_init.c,v 1.3 1998/10/31 20:06:53 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_init.c,v 1.1 1998/09/15 08:22:55 phk Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Local functions
@@ -122,8 +122,7 @@ fore_initialize(fup)
errmsg = "unsupported microcode version";
goto failed;
}
- snprintf(fup->fu_config.ac_firm_vers,
- sizeof(fup->fu_config.ac_firm_vers), "%ld.%ld.%ld",
+ sprintf(fup->fu_config.ac_firm_vers, "%ld.%ld.%ld",
(vers >> 16) & 0xff, (vers >> 8) & 0xff, vers & 0xff);
#ifdef notdef
diff --git a/sys/dev/hfa/fore_intr.c b/sys/dev/hfa/fore_intr.c
index 6fba5f224a7c3..f295b6267e393 100644
--- a/sys/dev/hfa/fore_intr.c
+++ b/sys/dev/hfa/fore_intr.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_intr.c,v 1.1 1998/09/15 08:22:55 phk Exp $
+ * @(#) $Id: fore_intr.c,v 1.7 1997/05/06 22:09:48 mks Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_intr.c,v 1.1 1998/09/15 08:22:55 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_intr.c,v 1.7 1997/05/06 22:09:48 mks Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
#if defined(sun)
/*
* Polling interrupt routine
diff --git a/sys/dev/hfa/fore_load.c b/sys/dev/hfa/fore_load.c
index e41370efe5c35..251443d252471 100644
--- a/sys/dev/hfa/fore_load.c
+++ b/sys/dev/hfa/fore_load.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_load.c,v 1.4 1998/12/04 22:54:45 archie Exp $
+ * @(#) $Id: fore_load.c,v 1.1 1998/09/15 08:22:55 phk Exp $
*
*/
@@ -35,26 +35,26 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_load.c,v 1.4 1998/12/04 22:54:45 archie Exp $");
+static char *RCSid = "@(#) $Id: fore_load.c,v 1.1 1998/09/15 08:22:55 phk Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Local functions
*/
static int fore_start __P((void));
-#ifdef sun
static int fore_stop __P((void));
static int fore_doload __P((void));
static int fore_dounload __P((void));
+#ifdef sun
static int fore_identify __P((char *));
static int fore_attach __P((struct devinfo *));
#endif
#ifdef __FreeBSD__
-static const char * fore_pci_probe __P((pcici_t, pcidi_t));
+static char * fore_pci_probe __P((pcici_t, pcidi_t));
static void fore_pci_attach __P((pcici_t, int));
#if BSD < 199506
static int fore_pci_shutdown __P((struct kern_devconf *, int));
@@ -156,8 +156,6 @@ fore_start()
}
-#ifdef sun
-
/*
* Halt driver processing
*
@@ -242,6 +240,8 @@ fore_stop()
return (0);
}
+
+#ifdef sun
/*
* Device identify routine
*
@@ -726,12 +726,10 @@ fore_attach(devinfo_p)
val = getprop ( devinfo_p->devi_nodeid, "hw-version", -1 );
}
if (val != -1) {
- snprintf(fcp->ac_hard_vers,
- sizeof(fcp->ac_hard_vers), "%d.%d.%d",
+ sprintf(fcp->ac_hard_vers, "%d.%d.%d",
(val >> 16) & 0xff, (val >> 8) & 0xff, val & 0xff);
} else
- snprintf(fcp->ac_hard_vers,
- sizeof(fcp->ac_hard_vers), "Unknown");
+ sprintf(fcp->ac_hard_vers, "Unknown");
val = getprop ( devinfo_p->devi_nodeid, "serialnumber", -1 );
if ( val != -1 )
@@ -844,7 +842,7 @@ fore_attach(devinfo_p)
* NULL device not claimed by this driver
*
*/
-static const char *
+static char *
fore_pci_probe(config_id, device_id)
pcici_t config_id;
pcidi_t device_id;
@@ -1145,8 +1143,8 @@ fore_unattach(fup)
struct dev_info *devinfo_p = fup->fu_devinfo;
struct dev_reg *dev_reg_p;
struct dev_intr *dev_intr_p;
- int i;
#endif
+ int i;
/*
@@ -1361,7 +1359,6 @@ fore_reset(fup)
*******************************************************************
*/
-#ifdef sun
/*
* Generic module load processing
*
@@ -1421,6 +1418,7 @@ fore_dounload()
}
+#ifdef sun
/*
* Loadable driver description
*/
diff --git a/sys/dev/hfa/fore_output.c b/sys/dev/hfa/fore_output.c
index d92d5a01ca481..59c82c939dc3a 100644
--- a/sys/dev/hfa/fore_output.c
+++ b/sys/dev/hfa/fore_output.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_output.c,v 1.1 1998/09/15 08:22:55 phk Exp $
+ * @(#) $Id: fore_output.c,v 1.7 1998/02/19 20:10:34 mks Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_output.c,v 1.1 1998/09/15 08:22:55 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_output.c,v 1.7 1998/02/19 20:10:34 mks Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Local functions
diff --git a/sys/dev/hfa/fore_receive.c b/sys/dev/hfa/fore_receive.c
index 431a03f17cba8..12dfcec0d69ce 100644
--- a/sys/dev/hfa/fore_receive.c
+++ b/sys/dev/hfa/fore_receive.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_receive.c,v 1.2 1998/09/17 09:34:59 phk Exp $
+ * @(#) $Id: fore_receive.c,v 1.1 1998/09/15 08:22:55 phk Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_receive.c,v 1.2 1998/09/17 09:34:59 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_receive.c,v 1.1 1998/09/15 08:22:55 phk Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Local functions
diff --git a/sys/dev/hfa/fore_stats.c b/sys/dev/hfa/fore_stats.c
index c1a1fab14e817..c70b09879a7a1 100644
--- a/sys/dev/hfa/fore_stats.c
+++ b/sys/dev/hfa/fore_stats.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_stats.c,v 1.2 1998/09/17 09:34:59 phk Exp $
+ * @(#) $Id: fore_stats.c,v 1.1 1998/09/15 08:22:55 phk Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_stats.c,v 1.2 1998/09/17 09:34:59 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_stats.c,v 1.1 1998/09/15 08:22:55 phk Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Get device statistics from CP
diff --git a/sys/dev/hfa/fore_timer.c b/sys/dev/hfa/fore_timer.c
index 15cb02efbe65d..e0d0c0ee0a39a 100644
--- a/sys/dev/hfa/fore_timer.c
+++ b/sys/dev/hfa/fore_timer.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_timer.c,v 1.1 1998/09/15 08:22:56 phk Exp $
+ * @(#) $Id: fore_timer.c,v 1.5 1997/05/06 22:10:24 mks Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_timer.c,v 1.1 1998/09/15 08:22:56 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_timer.c,v 1.5 1997/05/06 22:10:24 mks Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Process a Fore timer tick
diff --git a/sys/dev/hfa/fore_transmit.c b/sys/dev/hfa/fore_transmit.c
index bced06c25e67f..744e7751c7568 100644
--- a/sys/dev/hfa/fore_transmit.c
+++ b/sys/dev/hfa/fore_transmit.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_transmit.c,v 1.1 1998/09/15 08:22:56 phk Exp $
+ * @(#) $Id: fore_transmit.c,v 1.8 1998/07/17 20:19:37 root Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_transmit.c,v 1.1 1998/09/15 08:22:56 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_transmit.c,v 1.8 1998/07/17 20:19:37 root Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* Allocate Transmit Queue Data Structures
diff --git a/sys/dev/hfa/fore_vcm.c b/sys/dev/hfa/fore_vcm.c
index 325883b31b6eb..2481d17c20bab 100644
--- a/sys/dev/hfa/fore_vcm.c
+++ b/sys/dev/hfa/fore_vcm.c
@@ -23,7 +23,7 @@
* Copies of this Software may be made, however, the above copyright
* notice must be reproduced on all copies.
*
- * @(#) $Id: fore_vcm.c,v 1.2 1998/09/17 09:34:59 phk Exp $
+ * @(#) $Id: fore_vcm.c,v 1.1 1998/09/15 08:22:56 phk Exp $
*
*/
@@ -35,12 +35,12 @@
*
*/
-#include <dev/hfa/fore_include.h>
-
#ifndef lint
-__RCSID("@(#) $Id: fore_vcm.c,v 1.2 1998/09/17 09:34:59 phk Exp $");
+static char *RCSid = "@(#) $Id: fore_vcm.c,v 1.1 1998/09/15 08:22:56 phk Exp $";
#endif
+#include <dev/hfa/fore_include.h>
+
/*
* VCC Stack Instantiation
diff --git a/sys/dev/iicbus/if_ic.c b/sys/dev/iicbus/if_ic.c
index 7af9db71f632f..52626e0904431 100644
--- a/sys/dev/iicbus/if_ic.c
+++ b/sys/dev/iicbus/if_ic.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: if_ic.c,v 1.2 1998/10/31 11:31:07 nsouch Exp $
+ * $Id: if_ic.c,v 1.1.1.11 1998/08/13 17:10:42 son Exp $
*/
/*
@@ -213,7 +213,7 @@ icioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
return ENOBUFS;
}
- iicbus_reset(parent, IIC_FASTEST, 0, NULL);
+ iicbus_reset(parent, IIC_FASTEST);
ifp->if_flags |= IFF_RUNNING;
}
@@ -290,6 +290,7 @@ icintr (device_t dev, int event, char *ptr)
int unit = device_get_unit(dev);
int s, len;
struct mbuf *top;
+ int i;
s = splhigh();
diff --git a/sys/dev/iicbus/iic.c b/sys/dev/iicbus/iic.c
index e41d08b8a2b77..45d551b8f5de8 100644
--- a/sys/dev/iicbus/iic.c
+++ b/sys/dev/iicbus/iic.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: iic.c,v 1.5 1998/12/07 21:58:16 archie Exp $
+ * $Id: iic.c,v 1.2 1998/09/04 17:53:35 nsouch Exp $
*
*/
#include <sys/param.h>
@@ -40,7 +40,6 @@
#include <dev/iicbus/iiconf.h>
#include <dev/iicbus/iicbus.h>
-
#include <machine/iic.h>
#include "iicbus_if.h"
@@ -118,6 +117,8 @@ iic_probe(device_t dev)
static int
iic_attach(device_t dev)
{
+ struct iic_softc *sc = (struct iic_softc *)device_get_softc(dev);
+
return (0);
}
@@ -210,16 +211,15 @@ iicioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
{
device_t iicdev = IIC_DEVICE(minor(dev));
struct iic_softc *sc = IIC_SOFTC(minor(dev));
+ int error;
device_t parent = device_get_parent(iicdev);
- struct iiccmd *s = (struct iiccmd *)data;
- int error, count;
if (!sc)
return (EINVAL);
switch (cmd) {
case I2CSTART:
- error = iicbus_start(parent, s->slave, 0);
+ error = iicbus_start(parent, sc->sc_addr);
break;
case I2CSTOP:
@@ -227,15 +227,7 @@ iicioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
break;
case I2CRSTCARD:
- error = iicbus_reset(parent, 0, 0, NULL);
- break;
-
- case I2CWRITE:
- error = iicbus_write(parent, s->buf, s->count, &count, 0);
- break;
-
- case I2CREAD:
- error = iicbus_read(parent, s->buf, s->count, &count, s->last, 0);
+ error = iicbus_reset(parent, 0);
break;
default:
diff --git a/sys/dev/iicbus/iicbb.c b/sys/dev/iicbus/iicbb.c
deleted file mode 100644
index 81629bcf2b099..0000000000000
--- a/sys/dev/iicbus/iicbb.c
+++ /dev/null
@@ -1,323 +0,0 @@
-/*-
- * Copyright (c) 1998 Nicolas Souchu
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: iicbb.c,v 1.1 1998/10/31 11:31:07 nsouch Exp $
- *
- */
-
-/*
- * Generic I2C bit-banging code
- *
- * Example:
- *
- * iicbus
- * / \
- * iicbb pcf
- * | \
- * bti2c lpbb
- *
- * From Linux I2C generic interface
- * (c) 1998 Gerd Knorr <kraxel@cs.tu-berlin.de>
- *
- * TODO: port Peter's generic bit-banging code <dufault@hda.com>
- */
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#include <sys/buf.h>
-#include <sys/uio.h>
-#include <sys/malloc.h>
-
-#include <machine/clock.h>
-
-#include <dev/iicbus/iiconf.h>
-#include <dev/iicbus/iicbus.h>
-
-#include <dev/smbus/smbconf.h>
-
-#include "iicbus_if.h"
-#include "iicbb_if.h"
-
-struct iicbb_softc {
- int dummy;
-};
-
-static int iicbb_probe(device_t);
-static int iicbb_attach(device_t);
-static void iicbb_print_child(device_t, device_t);
-
-static int iicbb_callback(device_t, int, caddr_t);
-static int iicbb_start(device_t, u_char, int);
-static int iicbb_stop(device_t);
-static int iicbb_write(device_t, char *, int, int *, int);
-static int iicbb_read(device_t, char *, int, int *, int, int);
-static int iicbb_reset(device_t, u_char, u_char, u_char *);
-
-static device_method_t iicbb_methods[] = {
- /* device interface */
- DEVMETHOD(device_probe, iicbb_probe),
- DEVMETHOD(device_attach, iicbb_attach),
-
- /* bus interface */
- DEVMETHOD(bus_print_child, iicbb_print_child),
-
- /* iicbus interface */
- DEVMETHOD(iicbus_callback, iicbb_callback),
- DEVMETHOD(iicbus_start, iicbb_start),
- DEVMETHOD(iicbus_repeated_start, iicbb_start),
- DEVMETHOD(iicbus_stop, iicbb_stop),
- DEVMETHOD(iicbus_write, iicbb_write),
- DEVMETHOD(iicbus_read, iicbb_read),
- DEVMETHOD(iicbus_reset, iicbb_reset),
-
- { 0, 0 }
-};
-
-static driver_t iicbb_driver = {
- "iicbb",
- iicbb_methods,
- DRIVER_TYPE_MISC,
- sizeof(struct iicbb_softc),
-};
-
-static devclass_t iicbb_devclass;
-
-static int iicbb_probe(device_t dev)
-{
- device_set_desc(dev, "I2C generic bit-banging driver");
-
- return (0);
-}
-
-static int iicbb_attach(device_t dev)
-{
- return (0);
-}
-
-static void
-iicbb_print_child(device_t bus, device_t dev)
-{
- int error;
- u_char oldaddr;
-
- /* retrieve the interface I2C address */
- error = IICBB_RESET(device_get_parent(bus), IIC_FASTEST, 0, &oldaddr);
- if (error == IIC_ENOADDR) {
- printf(" on %s%d master-only", device_get_name(bus),
- device_get_unit(bus));
-
- } else {
- /* restore the address */
- IICBB_RESET(device_get_parent(bus), IIC_FASTEST, oldaddr, NULL);
-
- printf(" on %s%d addr 0x%x", device_get_name(bus),
- device_get_unit(bus), oldaddr & 0xff);
- }
-
- return;
-}
-
-#define I2C_SET(dev,ctrl,data) \
- IICBB_SETLINES(device_get_parent(dev), ctrl, data)
-
-#define I2C_GET(dev) (IICBB_GETDATALINE(device_get_parent(dev)))
-
-static int i2c_debug = 0;
-#define I2C_DEBUG(x) if (i2c_debug) (x)
-
-static void iicbb_one(device_t dev)
-{
- I2C_SET(dev,0,1);
- I2C_SET(dev,1,1);
- I2C_SET(dev,0,1);
- return;
-}
-
-static void iicbb_zero(device_t dev)
-{
- I2C_SET(dev,0,0);
- I2C_SET(dev,1,0);
- I2C_SET(dev,0,0);
- return;
-}
-
-/*
- * Waiting for ACKNOWLEDGE.
- *
- * When a chip is being addressed or has received data it will issue an
- * ACKNOWLEDGE pulse. Therefore the MASTER must release the DATA line
- * (set it to high level) and then release the CLOCK line.
- * Now it must wait for the SLAVE to pull the DATA line low.
- * Actually on the bus this looks like a START condition so nothing happens
- * because of the fact that the IC's that have not been addressed are doing
- * nothing.
- *
- * When the SLAVE has pulled this line low the MASTER will take the CLOCK
- * line low and then the SLAVE will release the SDA (data) line.
- */
-static int iicbb_ack(device_t dev, int timeout)
-{
- int noack;
- int k = timeout/10;
-
- I2C_SET(dev,0,1);
- I2C_SET(dev,1,1);
-
- do {
- noack = I2C_GET(dev);
- if (!noack)
- break;
- DELAY(10); /* XXX wait 10us */
- } while (k--);
-
- I2C_SET(dev,0,1);
- I2C_DEBUG(printf("%c ",noack?'-':'+'));
-
- return (noack);
-}
-
-static void iicbb_sendbyte(device_t dev, u_char data)
-{
- int i;
-
- I2C_SET(dev,0,0);
- for (i=7; i>=0; i--)
- (data&(1<<i)) ? iicbb_one(dev) : iicbb_zero(dev);
- I2C_DEBUG(printf("w%02x",(int)data));
- return;
-}
-
-static u_char iicbb_readbyte(device_t dev, int last)
-{
- int i;
- unsigned char data=0;
-
- I2C_SET(dev,0,1);
- for (i=7; i>=0; i--)
- {
- I2C_SET(dev,1,1);
- if (I2C_GET(dev))
- data |= (1<<i);
- I2C_SET(dev,0,1);
- }
- last ? iicbb_one(dev) : iicbb_zero(dev);
- I2C_DEBUG(printf("r%02x%c ",(int)data,last?'-':'+'));
- return data;
-}
-
-static int iicbb_callback(device_t dev, int index, caddr_t data)
-{
- return (IICBB_CALLBACK(device_get_parent(dev), index, data));
-}
-
-static int iicbb_reset(device_t dev, u_char speed, u_char addr, u_char *oldaddr)
-{
- return (IICBB_RESET(device_get_parent(dev), speed, addr, oldaddr));
-}
-
-static int iicbb_start(device_t dev, u_char slave, int timeout)
-{
- int error;
-
- I2C_DEBUG(printf("<"));
-
- I2C_SET(dev,0,1);
- I2C_SET(dev,1,1);
- I2C_SET(dev,1,0);
- I2C_SET(dev,0,0);
-
- /* send address */
- iicbb_sendbyte(dev, slave);
-
- /* check for ack */
- if (iicbb_ack(dev, timeout)) {
- error = IIC_ENOACK;
- goto error;
- }
-
- return(0);
-
-error:
- iicbb_stop(dev);
- return (error);
-}
-
-static int iicbb_stop(device_t dev)
-{
- I2C_SET(dev,0,0);
- I2C_SET(dev,1,0);
- I2C_SET(dev,1,1);
- I2C_DEBUG(printf(">"));
- return (0);
-}
-
-static int iicbb_write(device_t dev, char * buf, int len, int *sent,
- int timeout)
-{
- int bytes, error = 0;
-
- bytes = 0;
- while (len) {
- /* send byte */
- iicbb_sendbyte(dev,(u_char)*buf++);
-
- /* check for ack */
- if (iicbb_ack(dev, timeout)) {
- error = IIC_ENOACK;
- goto error;
- }
- bytes ++;
- len --;
- }
-
-error:
- *sent = bytes;
- return (error);
-}
-
-static int iicbb_read(device_t dev, char * buf, int len, int *read,
- int last, int delay)
-{
- int bytes;
-
- bytes = 0;
- while (len) {
- /* XXX should insert delay here */
- *buf++ = (char)iicbb_readbyte(dev, (len == 1) ? 1 : 0);
-
- bytes ++;
- len --;
- }
-
- *read = bytes;
- return (0);
-}
-
-DRIVER_MODULE(iicbb, bti2c, iicbb_driver, iicbb_devclass, 0, 0);
-DRIVER_MODULE(iicbb, lpbb, iicbb_driver, iicbb_devclass, 0, 0);
diff --git a/sys/dev/iicbus/iicbb_if.m b/sys/dev/iicbus/iicbb_if.m
deleted file mode 100644
index bdf1108fac95a..0000000000000
--- a/sys/dev/iicbus/iicbb_if.m
+++ /dev/null
@@ -1,65 +0,0 @@
-#
-# Copyright (c) 1998 Nicolas Souchu
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-# $Id: iicbb_if.m,v 1.1 1998/10/31 11:31:07 nsouch Exp $
-#
-
-INTERFACE iicbb;
-
-#
-# iicbus callback
-#
-METHOD int callback {
- device_t dev;
- int index;
- caddr_t data;
-};
-
-#
-# Set I2C bus lines
-#
-METHOD void setlines {
- device_t dev;
- int ctrl;
- int data;
-};
-
-#
-# Get I2C bus lines
-#
-#
-METHOD int getdataline {
- device_t dev;
-};
-
-#
-# Reset interface
-#
-METHOD int reset {
- device_t dev;
- u_char speed;
- u_char addr;
- u_char *oldaddr;
-};
diff --git a/sys/dev/iicbus/iicbus.c b/sys/dev/iicbus/iicbus.c
index cf9f6ba5ac262..41a0cea4f01c4 100644
--- a/sys/dev/iicbus/iicbus.c
+++ b/sys/dev/iicbus/iicbus.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: iicbus.c,v 1.6 1998/12/07 21:58:16 archie Exp $
+ * $Id: iicbus.c,v 1.1.2.7 1998/08/29 16:54:16 son Exp $
*
*/
@@ -54,7 +54,6 @@ struct iicbus_device {
int iicd_class; /* driver or slave device class */
const char *iicd_desc; /* device descriptor */
u_char iicd_addr; /* address of the device */
- int iicd_waitack; /* wait for ack timeout or delay */
int iicd_alive; /* 1 if device found */
};
@@ -62,10 +61,10 @@ struct iicbus_device {
* Common I2C addresses
*/
#define I2C_GENERAL_CALL 0x0
-#define PCF_MASTER_ADDRESS 0xaa
-#define FIRST_SLAVE_ADDR 0x2
+#define I2C_MASTER_ADDRESS 0xaa
+#define I2C_INET_ADDRESS 0xaa
-#define LAST_SLAVE_ADDR 255
+#define MAXSLAVE 256
#define IICBUS_UNKNOWN_CLASS 0
#define IICBUS_DEVICE_CLASS 1
@@ -73,15 +72,13 @@ struct iicbus_device {
/*
* list of known devices
- *
- * XXX only one smb driver should exist for each I2C interface
*/
struct iicbus_device iicbus_children[] = {
+ { "iic", IICBUS_DRIVER_CLASS, "General Call", I2C_GENERAL_CALL },
{ "iicsmb", IICBUS_DRIVER_CLASS, "I2C to SMB bridge" },
- { "iic", IICBUS_DRIVER_CLASS, "I2C general purpose I/O" },
-#if 0
- { "ic", IICBUS_DEVICE_CLASS, "network interface", PCF_MASTER_ADDRESS },
-#endif
+ { "iic", IICBUS_DEVICE_CLASS, "PCF8574 I2C to 8 bits parallel i/o", 64},
+ { "iic", IICBUS_DEVICE_CLASS, "PCF8584 as slave", I2C_MASTER_ADDRESS },
+ { "ic", IICBUS_DEVICE_CLASS, "network interface", I2C_INET_ADDRESS },
{ NULL, 0 }
};
@@ -94,7 +91,6 @@ static int iicbus_probe(device_t);
static int iicbus_attach(device_t);
static void iicbus_print_child(device_t, device_t);
static int iicbus_read_ivar(device_t , device_t, int, u_long *);
-static int iicbus_write_ivar(device_t , device_t, int, u_long);
static device_method_t iicbus_methods[] = {
/* device interface */
@@ -106,7 +102,9 @@ static device_method_t iicbus_methods[] = {
/* bus interface */
DEVMETHOD(bus_print_child, iicbus_print_child),
DEVMETHOD(bus_read_ivar, iicbus_read_ivar),
- DEVMETHOD(bus_write_ivar, iicbus_write_ivar),
+ DEVMETHOD(bus_write_ivar, bus_generic_write_ivar),
+ DEVMETHOD(bus_create_intr, bus_generic_create_intr),
+ DEVMETHOD(bus_connect_intr, bus_generic_connect_intr),
{ 0, 0 }
};
@@ -118,118 +116,59 @@ static driver_t iicbus_driver = {
sizeof(struct iicbus_softc),
};
-static int
-iicbus_probe(device_t dev)
-{
- device_set_desc(dev, "Philips I2C bus");
-
- return (0);
-}
-
-#if 0
-static int
-iic_probe_device(device_t dev, u_char addr)
-{
- int count;
- char byte;
-
- if ((addr & 1) == 0) {
- /* is device writable? */
- if (!iicbus_start(dev, (u_char)addr, 0)) {
- iicbus_stop(dev);
- return (1);
- }
- } else {
- /* is device readable? */
- if (!iicbus_block_read(dev, (u_char)addr, &byte, 1, &count))
- return (1);
- }
-
- return (0);
-}
-#endif
-
/*
- * We add all the devices which we know about.
- * The generic attach routine will attach them if they are alive.
+ * At 'probe' time, we add all the devices which we know about to the
+ * bus. The generic attach routine will probe and attach them if they
+ * are alive.
*/
static int
-iicbus_attach(device_t dev)
+iicbus_probe(device_t dev)
{
+ struct iicbus_softc *sc = device_get_softc(dev);
struct iicbus_device *iicdev;
device_t child;
- iicbus_reset(dev, IIC_FASTEST, 0, NULL);
+ /* XXX should query parent */
+ sc->ownaddr = I2C_MASTER_ADDRESS;
- /* device probing is meaningless since the bus is supposed to be
- * hot-plug. Moreover, some I2C chips do not appreciate random
- * accesses like stop after start to fast, reads for less than
- * x bytes...
- */
-#if 0
- printf("Probing for devices on iicbus%d:", device_get_unit(dev));
-
- /* probe any devices */
- for (addr = FIRST_SLAVE_ADDR; addr <= LAST_SLAVE_ADDR; addr++) {
- if (iic_probe_device(dev, (u_char)addr)) {
- printf(" <%x>", addr);
- }
- }
- printf("\n");
-#endif
+ iicbus_reset(dev, IIC_FASTEST);
- /* attach known devices */
for (iicdev = iicbus_children; iicdev->iicd_name; iicdev++) {
+
+ /* probe devices, not drivers */
switch (iicdev->iicd_class) {
case IICBUS_DEVICE_CLASS:
- /* check if the devclass exists */
- if (devclass_find(iicdev->iicd_name))
+ if (!iicbus_start(dev, iicdev->iicd_addr)) {
+ iicbus_stop(dev);
iicdev->iicd_alive = 1;
- else if (bootverbose)
- printf("iicbus: %s devclass not found\n",
- iicdev->iicd_name);
+ }
break;
-
case IICBUS_DRIVER_CLASS:
- /* check if the devclass exists */
- if (devclass_find(iicdev->iicd_name))
- iicdev->iicd_alive = 1;
- else if (bootverbose)
- printf("iicbus: %s devclass not found\n",
- iicdev->iicd_name);
+ iicdev->iicd_addr = sc->ownaddr;
break;
-
default:
panic("%s: unknown class!", __FUNCTION__);
}
- if (iicdev->iicd_alive) {
- child = device_add_child(dev, iicdev->iicd_name,
- -1, iicdev);
- device_set_desc(child, iicdev->iicd_desc);
- }
+ child = device_add_child(dev, iicdev->iicd_name, -1, iicdev);
+ device_set_desc(child, iicdev->iicd_desc);
}
- bus_generic_attach(dev);
-
- return (0);
-}
-int
-iicbus_generic_intr(device_t dev, int event, char *buf)
-{
return (0);
}
-int
-iicbus_null_callback(device_t dev, int index, caddr_t data)
+static int
+iicbus_attach(device_t dev)
{
- return (0);
+ bus_generic_attach(dev);
+
+ return (0);
}
int
-iicbus_null_repeated_start(device_t dev, u_char addr)
+iicbus_generic_intr(device_t dev, int event, char *buf)
{
- return (IIC_ENOTSUPP);
+ return (0);
}
static void
@@ -239,8 +178,9 @@ iicbus_print_child(device_t bus, device_t dev)
switch (iicdev->iicd_class) {
case IICBUS_DEVICE_CLASS:
- printf(" on %s%d addr 0x%x", device_get_name(bus),
- device_get_unit(bus), iicdev->iicd_addr);
+ printf(" on %s%d addr %d %s", device_get_name(bus),
+ device_get_unit(bus), iicdev->iicd_addr,
+ (iicdev->iicd_alive) ? "found" : "not found");
break;
case IICBUS_DRIVER_CLASS:
@@ -272,17 +212,4 @@ iicbus_read_ivar(device_t bus, device_t dev, int index, u_long* result)
return (0);
}
-static int
-iicbus_write_ivar(device_t bus, device_t dev, int index, u_long val)
-{
- switch (index) {
- default:
- return (ENOENT);
- }
-
- return (0);
-}
-
DRIVER_MODULE(iicbus, pcf, iicbus_driver, iicbus_devclass, 0, 0);
-DRIVER_MODULE(iicbus, iicbb, iicbus_driver, iicbus_devclass, 0, 0);
-DRIVER_MODULE(iicbus, bti2c, iicbus_driver, iicbus_devclass, 0, 0);
diff --git a/sys/dev/iicbus/iicbus.h b/sys/dev/iicbus/iicbus.h
index 3c230955bbc12..e84525286175f 100644
--- a/sys/dev/iicbus/iicbus.h
+++ b/sys/dev/iicbus/iicbus.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: iicbus.h,v 1.2 1998/10/31 11:31:07 nsouch Exp $
+ * $Id: iicbus.h,v 1.1.2.3 1998/08/13 17:10:43 son Exp $
*
*/
#ifndef __IICBUS_H
@@ -31,9 +31,8 @@
struct iicbus_softc {
+ u_char ownaddr; /* address of the adapter */
device_t owner; /* iicbus owner device structure */
- u_char started; /* address of the 'started' slave
- * 0 if no start condition succeeded */
};
extern devclass_t iicbus_devclass;
diff --git a/sys/dev/iicbus/iicbus_if.m b/sys/dev/iicbus/iicbus_if.m
index 7e29333db4954..bf7efeb3a45a7 100644
--- a/sys/dev/iicbus/iicbus_if.m
+++ b/sys/dev/iicbus/iicbus_if.m
@@ -23,13 +23,13 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: iicbus_if.m,v 1.2 1998/10/31 11:31:07 nsouch Exp $
+# $Id: iicbus_if.m,v 1.1.2.4 1998/08/13 17:10:43 son Exp $
#
-INTERFACE iicbus;
+INTERFACE iicbus
#
-# Interpret interrupt
+# Interprete interrupt
#
METHOD int intr {
device_t dev;
@@ -38,21 +38,11 @@ METHOD int intr {
};
#
-# iicbus callback
-#
-METHOD int callback {
- device_t dev;
- int index;
- caddr_t data;
-};
-
-#
# Send REPEATED_START condition
#
METHOD int repeated_start {
device_t dev;
u_char slave;
- int timeout;
};
#
@@ -61,7 +51,6 @@ METHOD int repeated_start {
METHOD int start {
device_t dev;
u_char slave;
- int timeout;
};
#
@@ -79,8 +68,6 @@ METHOD int read {
char *buf;
int len;
int *bytes;
- int last;
- int delay;
};
#
@@ -91,7 +78,6 @@ METHOD int write {
char *buf;
int len;
int *bytes;
- int timeout;
};
#
@@ -100,6 +86,4 @@ METHOD int write {
METHOD int reset {
device_t dev;
u_char speed;
- u_char addr;
- u_char *oldaddr;
};
diff --git a/sys/dev/iicbus/iiconf.c b/sys/dev/iicbus/iiconf.c
index 47f1686fac0f5..b037b7cca2b13 100644
--- a/sys/dev/iicbus/iiconf.c
+++ b/sys/dev/iicbus/iiconf.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: iiconf.c,v 1.3 1998/11/22 22:01:42 nsouch Exp $
+ * $Id: iiconf.c,v 1.1.1.11 1998/08/29 17:02:05 son Exp $
*
*/
#include <sys/param.h>
@@ -65,29 +65,10 @@ iicbus_alloc_bus(device_t parent)
/* add the bus to the parent */
child = device_add_child(parent, "iicbus", -1, NULL);
- return (child);
-}
-
-static int
-iicbus_poll(struct iicbus_softc *sc, int how)
-{
- int error;
+ if (child)
+ device_set_desc(child, "Philips I2C bus");
- switch (how) {
- case (IIC_WAIT | IIC_INTR):
- error = tsleep(sc, IICPRI|PCATCH, "iicreq", 0);
- break;
-
- case (IIC_WAIT | IIC_NOINTR):
- error = tsleep(sc, IICPRI, "iicreq", 0);
- break;
-
- default:
- return (EWOULDBLOCK);
- break;
- }
-
- return (error);
+ return (child);
}
/*
@@ -103,20 +84,25 @@ iicbus_request_bus(device_t bus, device_t dev, int how)
struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
int s, error = 0;
- /* first, ask the underlying layers if the request is ok */
- do {
- error = IICBUS_CALLBACK(device_get_parent(bus),
- IIC_REQUEST_BUS, (caddr_t)&how);
- if (error)
- error = iicbus_poll(sc, how);
- } while (error);
-
while (!error) {
s = splhigh();
if (sc->owner) {
splx(s);
- error = iicbus_poll(sc, how);
+ switch (how) {
+ case (IIC_WAIT | IIC_INTR):
+ error = tsleep(sc, IICPRI|PCATCH, "iicreq", 0);
+ break;
+
+ case (IIC_WAIT | IIC_NOINTR):
+ error = tsleep(sc, IICPRI, "iicreq", 0);
+ break;
+
+ default:
+ return (EWOULDBLOCK);
+ break;
+ }
+
} else {
sc->owner = dev;
@@ -137,13 +123,7 @@ int
iicbus_release_bus(device_t bus, device_t dev)
{
struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
- int s, error;
-
- /* first, ask the underlying layers if the release is ok */
- error = IICBUS_CALLBACK(device_get_parent(bus), IIC_RELEASE_BUS, NULL);
-
- if (error)
- return (error);
+ int s;
s = splhigh();
if (sc->owner != dev) {
@@ -161,99 +141,6 @@ iicbus_release_bus(device_t bus, device_t dev)
}
/*
- * iicbus_started()
- *
- * Test if the iicbus is started by the controller
- */
-int
-iicbus_started(device_t bus)
-{
- struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
-
- return (sc->started);
-}
-
-/*
- * iicbus_start()
- *
- * Send start condition to the slave addressed by 'slave'
- */
-int
-iicbus_start(device_t bus, u_char slave, int timeout)
-{
- struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
- int error = 0;
-
- if (sc->started)
- return (EINVAL); /* bus already started */
-
- if (!(error = IICBUS_START(device_get_parent(bus), slave, timeout)))
- sc->started = slave;
- else
- sc->started = 0;
-
- return (error);
-}
-
-/*
- * iicbus_stop()
- *
- * Send stop condition to the bus
- */
-int
-iicbus_stop(device_t bus)
-{
- struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
- int error = 0;
-
- if (!sc->started)
- return (EINVAL); /* bus not started */
-
- error = IICBUS_STOP(device_get_parent(bus));
-
- /* refuse any further access */
- sc->started = 0;
-
- return (error);
-}
-
-/*
- * iicbus_write()
- *
- * Write a block of data to the slave previously started by
- * iicbus_start() call
- */
-int
-iicbus_write(device_t bus, char *buf, int len, int *sent, int timeout)
-{
- struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
-
- /* a slave must have been started with the appropriate address */
- if (!sc->started || (sc->started & LSB))
- return (EINVAL);
-
- return (IICBUS_WRITE(device_get_parent(bus), buf, len, sent, timeout));
-}
-
-/*
- * iicbus_read()
- *
- * Read a block of data from the slave previously started by
- * iicbus_read() call
- */
-int
-iicbus_read(device_t bus, char *buf, int len, int *read, int last, int delay)
-{
- struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
-
- /* a slave must have been started with the appropriate address */
- if (!sc->started || !(sc->started & LSB))
- return (EINVAL);
-
- return (IICBUS_READ(device_get_parent(bus), buf, len, read, last, delay));
-}
-
-/*
* iicbus_block_write()
*
* Write a block of data to slave ; start/stop protocol managed
@@ -264,10 +151,10 @@ iicbus_block_write(device_t bus, u_char slave, char *buf, int len, int *sent)
u_char addr = slave & ~LSB;
int error;
- if ((error = iicbus_start(bus, addr, 0)))
+ if ((error = iicbus_start(bus, addr)))
return (error);
- error = iicbus_write(bus, buf, len, sent, 0);
+ error = iicbus_write(bus, buf, len, sent);
iicbus_stop(bus);
@@ -285,12 +172,12 @@ iicbus_block_read(device_t bus, u_char slave, char *buf, int len, int *read)
u_char addr = slave | LSB;
int error;
- if ((error = iicbus_start(bus, addr, 0)))
+ if ((error = iicbus_start(bus, addr)))
return (error);
- error = iicbus_read(bus, buf, len, read, IIC_LAST_READ, 0);
+ error = iicbus_read(bus, buf, len, read);
- iicbus_stop(bus);
+ /* STOP condition sent at adapter level */
return (error);
}
@@ -303,7 +190,7 @@ iicbus_block_read(device_t bus, u_char slave, char *buf, int len, int *read)
u_char
iicbus_get_addr(device_t dev)
{
- uintptr_t addr;
+ u_long addr;
device_t parent = device_get_parent(dev);
BUS_READ_IVAR(parent, dev, IICBUS_IVAR_ADDR, &addr);
@@ -311,3 +198,10 @@ iicbus_get_addr(device_t dev)
return ((u_char)addr);
}
+u_char
+iicbus_get_own_address(device_t bus)
+{
+ struct iicbus_softc *sc = (struct iicbus_softc *)device_get_softc(bus);
+
+ return (sc->ownaddr);
+}
diff --git a/sys/dev/iicbus/iiconf.h b/sys/dev/iicbus/iiconf.h
index 0b548fbdf8f05..9bf0ed35e3cd2 100644
--- a/sys/dev/iicbus/iiconf.h
+++ b/sys/dev/iicbus/iiconf.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: iiconf.h,v 1.2 1998/10/31 11:31:07 nsouch Exp $
+ * $Id: iiconf.h,v 1.1.1.10 1998/08/13 17:10:43 son Exp $
*/
#ifndef __IICONF_H
#define __IICONF_H
@@ -59,14 +59,6 @@
#define IIC_FAST 0x2
#define IIC_FASTEST 0x3
-#define IIC_LAST_READ 0x1
-
-/*
- * callback index
- */
-#define IIC_REQUEST_BUS 0x1
-#define IIC_RELEASE_BUS 0x2
-
/*
* interrupt events
*/
@@ -89,8 +81,6 @@
#define IIC_ESTATUS 0x5 /* status error */
#define IIC_EUNDERFLOW 0x6 /* slave ready for more data */
#define IIC_EOVERFLOW 0x7 /* too much data */
-#define IIC_ENOTSUPP 0x8 /* request not supported */
-#define IIC_ENOADDR 0x9 /* no address assigned to the interface */
/*
* ivars codes
@@ -103,25 +93,23 @@ extern device_t iicbus_alloc_bus(device_t);
extern void iicbus_intr(device_t, int, char *);
-extern int iicbus_null_repeated_start(device_t, u_char);
-extern int iicbus_null_callback(device_t, int, caddr_t);
-
-#define iicbus_repeated_start(bus,slave,timeout) \
- (IICBUS_REPEATED_START(device_get_parent(bus), slave, timeout))
-#define iicbus_reset(bus,speed,addr,oldaddr) \
- (IICBUS_RESET(device_get_parent(bus), speed, addr, oldaddr))
-
-/* basic I2C operations */
-extern int iicbus_started(device_t);
-extern int iicbus_start(device_t, u_char, int);
-extern int iicbus_stop(device_t);
-extern int iicbus_write(device_t, char *, int, int *, int);
-extern int iicbus_read(device_t, char *, int, int *, int, int);
+#define iicbus_repeated_start(bus,slave) \
+ (IICBUS_REPEATED_START(device_get_parent(bus), slave))
+#define iicbus_start(bus,slave) \
+ (IICBUS_START(device_get_parent(bus), slave))
+#define iicbus_stop(bus) \
+ (IICBUS_STOP(device_get_parent(bus)))
+#define iicbus_reset(bus,speed) \
+ (IICBUS_RESET(device_get_parent(bus), speed))
+#define iicbus_write(bus,buf,len,sent) \
+ (IICBUS_WRITE(device_get_parent(bus), buf, len, sent))
+#define iicbus_read(bus,buf,len,sent) \
+ (IICBUS_READ(device_get_parent(bus), buf, len, sent))
-/* Read/write operations with start/stop conditions managed */
extern int iicbus_block_write(device_t, u_char, char *, int, int *);
extern int iicbus_block_read(device_t, u_char, char *, int, int *);
extern u_char iicbus_get_addr(device_t);
+extern u_char iicbus_get_own_address(device_t);
#endif
diff --git a/sys/dev/iicbus/iicsmb.c b/sys/dev/iicbus/iicsmb.c
index 060c548d8a2fc..8f3a8bb7066d6 100644
--- a/sys/dev/iicbus/iicsmb.c
+++ b/sys/dev/iicbus/iicsmb.c
@@ -23,26 +23,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: iicsmb.c,v 1.1.1.1 1998/09/03 20:51:50 nsouch Exp $
+ * $Id: iicsmb.c,v 1.1.2.2 1998/08/13 17:10:44 son Exp $
*
*/
/*
* I2C to SMB bridge
- *
- * Example:
- *
- * smb bttv
- * \ /
- * smbus
- * / \
- * iicsmb bti2c
- * |
- * iicbus
- * / | \
- * iicbb pcf ...
- * |
- * lpbb
*/
#include <sys/param.h>
@@ -86,7 +72,6 @@ static int iicsmb_attach(device_t);
static void iicsmb_print_child(device_t, device_t);
static void iicsmb_intr(device_t dev, int event, char *buf);
-static int iicsmb_callback(device_t dev, int index, caddr_t data);
static int iicsmb_quick(device_t dev, u_char slave, int how);
static int iicsmb_sendb(device_t dev, u_char slave, char byte);
static int iicsmb_recvb(device_t dev, u_char slave, char *byte);
@@ -112,7 +97,6 @@ static device_method_t iicsmb_methods[] = {
DEVMETHOD(iicbus_intr, iicsmb_intr),
/* smbus interface */
- DEVMETHOD(smbus_callback, iicsmb_callback),
DEVMETHOD(smbus_quick, iicsmb_quick),
DEVMETHOD(smbus_sendb, iicsmb_sendb),
DEVMETHOD(smbus_recvb, iicsmb_recvb),
@@ -239,32 +223,6 @@ end:
}
static int
-iicsmb_callback(device_t dev, int index, caddr_t data)
-{
- device_t parent = device_get_parent(dev);
- int error = 0;
- int how;
-
- switch (index) {
- case SMB_REQUEST_BUS:
- /* request underlying iicbus */
- how = *(int *)data;
- error = iicbus_request_bus(parent, dev, how);
- break;
-
- case SMB_RELEASE_BUS:
- /* release underlying iicbus */
- error = iicbus_release_bus(parent, dev);
- break;
-
- default:
- error = EINVAL;
- }
-
- return (error);
-}
-
-static int
iicsmb_quick(device_t dev, u_char slave, int how)
{
device_t parent = device_get_parent(dev);
@@ -272,11 +230,11 @@ iicsmb_quick(device_t dev, u_char slave, int how)
switch (how) {
case SMB_QWRITE:
- error = iicbus_start(parent, slave & ~LSB, 0);
+ error = iicbus_start(parent, slave & ~LSB);
break;
case SMB_QREAD:
- error = iicbus_start(parent, slave | LSB, 0);
+ error = iicbus_start(parent, slave | LSB);
break;
default:
@@ -296,10 +254,10 @@ iicsmb_sendb(device_t dev, u_char slave, char byte)
device_t parent = device_get_parent(dev);
int error, sent;
- error = iicbus_start(parent, slave & ~LSB, 0);
+ error = iicbus_start(parent, slave & ~LSB);
if (!error) {
- error = iicbus_write(parent, &byte, 1, &sent, 0);
+ error = iicbus_write(parent, &byte, 1, &sent);
iicbus_stop(parent);
}
@@ -313,13 +271,10 @@ iicsmb_recvb(device_t dev, u_char slave, char *byte)
device_t parent = device_get_parent(dev);
int error, read;
- error = iicbus_start(parent, slave | LSB, 0);
+ error = iicbus_start(parent, slave | LSB);
- if (!error) {
- error = iicbus_read(parent, byte, 1, &read, IIC_LAST_READ, 0);
-
- iicbus_stop(parent);
- }
+ if (!error)
+ error = iicbus_read(parent, byte, 1, &read);
return (error);
}
@@ -330,11 +285,11 @@ iicsmb_writeb(device_t dev, u_char slave, char cmd, char byte)
device_t parent = device_get_parent(dev);
int error, sent;
- error = iicbus_start(parent, slave & ~LSB, 0);
+ error = iicbus_start(parent, slave & ~LSB);
if (!error) {
- if (!(error = iicbus_write(parent, &cmd, 1, &sent, 0)))
- error = iicbus_write(parent, &byte, 1, &sent, 0);
+ if (!(error = iicbus_write(parent, &cmd, 1, &sent)))
+ error = iicbus_write(parent, &byte, 1, &sent);
iicbus_stop(parent);
}
@@ -351,12 +306,12 @@ iicsmb_writew(device_t dev, u_char slave, char cmd, short word)
char low = (char)(word & 0xff);
char high = (char)((word & 0xff00) >> 8);
- error = iicbus_start(parent, slave & ~LSB, 0);
+ error = iicbus_start(parent, slave & ~LSB);
if (!error) {
- if (!(error = iicbus_write(parent, &cmd, 1, &sent, 0)))
- if (!(error = iicbus_write(parent, &low, 1, &sent, 0)))
- error = iicbus_write(parent, &high, 1, &sent, 0);
+ if (!(error = iicbus_write(parent, &cmd, 1, &sent)))
+ if (!(error = iicbus_write(parent, &low, 1, &sent)))
+ error = iicbus_write(parent, &high, 1, &sent);
iicbus_stop(parent);
}
@@ -370,20 +325,19 @@ iicsmb_readb(device_t dev, u_char slave, char cmd, char *byte)
device_t parent = device_get_parent(dev);
int error, sent, read;
- if ((error = iicbus_start(parent, slave & ~LSB, 0)))
- return (error);
+ if ((error = iicbus_start(parent, slave & ~LSB)))
+ goto error;
- if ((error = iicbus_write(parent, &cmd, 1, &sent, 0)))
+ if ((error = iicbus_write(parent, &cmd, 1, &sent)))
goto error;
- if ((error = iicbus_repeated_start(parent, slave | LSB, 0)))
+ if ((error = iicbus_repeated_start(parent, slave | LSB)))
goto error;
- if ((error = iicbus_read(parent, byte, 1, &read, IIC_LAST_READ, 0)))
+ if ((error = iicbus_read(parent, byte, 1, &read)))
goto error;
error:
- iicbus_stop(parent);
return (error);
}
@@ -397,23 +351,22 @@ iicsmb_readw(device_t dev, u_char slave, char cmd, short *word)
int error, sent, read;
char buf[2];
- if ((error = iicbus_start(parent, slave & ~LSB, 0)))
- return (error);
+ if ((error = iicbus_start(parent, slave & ~LSB)))
+ goto error;
- if ((error = iicbus_write(parent, &cmd, 1, &sent, 0)))
+ if ((error = iicbus_write(parent, &cmd, 1, &sent)))
goto error;
- if ((error = iicbus_repeated_start(parent, slave | LSB, 0)))
+ if ((error = iicbus_repeated_start(parent, slave | LSB)))
goto error;
- if ((error = iicbus_read(parent, buf, 2, &read, IIC_LAST_READ, 0)))
+ if ((error = iicbus_read(parent, buf, 2, &read)))
goto error;
/* first, receive low, then high byte */
*word = BUF2SHORT(buf[0], buf[1]);
error:
- iicbus_stop(parent);
return (error);
}
@@ -424,30 +377,29 @@ iicsmb_pcall(device_t dev, u_char slave, char cmd, short sdata, short *rdata)
int error, sent, read;
char buf[2];
- if ((error = iicbus_start(parent, slave & ~LSB, 0)))
- return (error);
+ if ((error = iicbus_start(parent, slave & ~LSB)))
+ goto error;
- if ((error = iicbus_write(parent, &cmd, 1, &sent, 0)))
+ if ((error = iicbus_write(parent, &cmd, 1, &sent)))
goto error;
/* first, send low, then high byte */
buf[0] = (char)(sdata & 0xff);
buf[1] = (char)((sdata & 0xff00) >> 8);
- if ((error = iicbus_write(parent, buf, 2, &sent, 0)))
+ if ((error = iicbus_write(parent, buf, 2, &sent)))
goto error;
- if ((error = iicbus_repeated_start(parent, slave | LSB, 0)))
+ if ((error = iicbus_repeated_start(parent, slave | LSB)))
goto error;
- if ((error = iicbus_read(parent, buf, 2, &read, IIC_LAST_READ, 0)))
+ if ((error = iicbus_read(parent, buf, 2, &read)))
goto error;
/* first, receive low, then high byte */
*rdata = BUF2SHORT(buf[0], buf[1]);
error:
- iicbus_stop(parent);
return (error);
}
@@ -457,13 +409,13 @@ iicsmb_bwrite(device_t dev, u_char slave, char cmd, u_char count, char *buf)
device_t parent = device_get_parent(dev);
int error, sent;
- if ((error = iicbus_start(parent, slave & ~LSB, 0)))
+ if ((error = iicbus_start(parent, slave & ~LSB)))
goto error;
- if ((error = iicbus_write(parent, &cmd, 1, &sent, 0)))
+ if ((error = iicbus_write(parent, &cmd, 1, &sent)))
goto error;
- if ((error = iicbus_write(parent, buf, (int)count, &sent, 0)))
+ if ((error = iicbus_write(parent, buf, (int)count, &sent)))
goto error;
if ((error = iicbus_stop(parent)))
@@ -479,21 +431,19 @@ iicsmb_bread(device_t dev, u_char slave, char cmd, u_char count, char *buf)
device_t parent = device_get_parent(dev);
int error, sent, read;
- if ((error = iicbus_start(parent, slave & ~LSB, 0)))
- return (error);
+ if ((error = iicbus_start(parent, slave & ~LSB)))
+ goto error;
- if ((error = iicbus_write(parent, &cmd, 1, &sent, 0)))
+ if ((error = iicbus_write(parent, &cmd, 1, &sent)))
goto error;
- if ((error = iicbus_repeated_start(parent, slave | LSB, 0)))
+ if ((error = iicbus_repeated_start(parent, slave | LSB)))
goto error;
- if ((error = iicbus_read(parent, buf, (int)count, &read,
- IIC_LAST_READ, 0)))
+ if ((error = iicbus_read(parent, buf, (int)count, &read)))
goto error;
error:
- iicbus_stop(parent);
return (error);
}
diff --git a/sys/dev/isp/asm_pci.h b/sys/dev/isp/asm_pci.h
index b7e0f9a9a11dc..fd9313bd263e1 100644
--- a/sys/dev/isp/asm_pci.h
+++ b/sys/dev/isp/asm_pci.h
@@ -1,13 +1,1314 @@
-/* $Id: $ */
-/* release_12_28_98_A */
+/* $Id: asm_pci.h,v 1.8 1998/09/14 23:24:59 mjacob Exp $ */
/*
* Copyright (c) 1995, 1996, 1997, 1998 by Qlogic Corporation
*/
/*
- * Firmware Version 7.55.00 (16:16 Mar 20, 1998)
+ * Version 2.10 Initiator Firmware (16:13 Oct 18, 1995)
+ *
+ * (this f/w now deprecated for newer f/w, but the old is held here
+ * in case of problems...)
*/
+
#define ISP_CODE_ORG 0x1000
+#if 0
+#define ISP_CODE_VERSION 2*1024+10
+static const u_int16_t ISP_RISC_CODE[] = {
+ 0x0078, 0x1041, 0x0000, 0x283a, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932, 0x2c31,
+ 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749, 0x4320,
+ 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049, 0x5350,
+ 0x3130, 0x3230, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x322e, 0x3130, 0x2020, 0x2043,
+ 0x7573, 0x746f, 0x6d65, 0x7220, 0x4e6f, 0x2e20, 0x3030, 0x2050,
+ 0x726f, 0x6475, 0x6374, 0x204e, 0x6f2e, 0x2020, 0x3030, 0x2020,
+ 0x2400, 0x20b9, 0x1212, 0x2071, 0x0010, 0x70c3, 0x0004, 0x20c9,
+ 0x43ff, 0x2089, 0x115b, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf,
+ 0x2020, 0x70d3, 0x0002, 0x3f00, 0x70d6, 0x20c1, 0x0008, 0x2019,
+ 0x0000, 0x2009, 0xfeff, 0x2100, 0x200b, 0xa5a5, 0xa1ec, 0x7fff,
+ 0x2d64, 0x206b, 0x0a0a, 0xaddc, 0x3fff, 0x2b54, 0x205b, 0x5050,
+ 0x2114, 0xa286, 0xa5a5, 0x0040, 0x10b3, 0xa386, 0x000f, 0x0040,
+ 0x1079, 0x2c6a, 0x2a5a, 0x20c1, 0x0000, 0x2019, 0x000f, 0x0078,
+ 0x1059, 0x2c6a, 0x2a5a, 0x20c1, 0x0008, 0x2009, 0x7fff, 0x2148,
+ 0x2944, 0x204b, 0x0a0a, 0xa9bc, 0x3fff, 0x2734, 0x203b, 0x5050,
+ 0x2114, 0xa286, 0x0a0a, 0x0040, 0x109d, 0x284a, 0x263a, 0x20c1,
+ 0x0004, 0x2009, 0x3fff, 0x2134, 0x200b, 0x5050, 0x2114, 0xa286,
+ 0x5050, 0x0040, 0x109e, 0x0078, 0x1163, 0x284a, 0x263a, 0x98c0,
+ 0xa188, 0x1000, 0x212c, 0x200b, 0xa5a5, 0x2114, 0xa286, 0xa5a5,
+ 0x0040, 0x10b0, 0x250a, 0xa18a, 0x1000, 0x98c1, 0x0078, 0x10b5,
+ 0x250a, 0x0078, 0x10b5, 0x2c6a, 0x2a5a, 0x2130, 0xa18a, 0x0040,
+ 0x2128, 0xa1a2, 0x3900, 0x8424, 0x8424, 0x8424, 0x8424, 0x8424,
+ 0x8424, 0xa192, 0x4400, 0x2009, 0x0000, 0x2001, 0x002f, 0x1078,
+ 0x1a70, 0x2218, 0x2079, 0x3900, 0x2fa0, 0x2408, 0x2011, 0x0000,
+ 0x20a9, 0x0040, 0x42a4, 0x8109, 0x00c0, 0x10d0, 0x7eea, 0x7dde,
+ 0x8528, 0x7dda, 0x7ce2, 0x7be6, 0x787b, 0x0000, 0x2031, 0x0030,
+ 0x78c3, 0x0101, 0x780b, 0x0002, 0x780f, 0x0002, 0x784f, 0x0003,
+ 0x2069, 0x3940, 0x681b, 0x0028, 0x6807, 0x0007, 0x680b, 0x00fa,
+ 0x680f, 0x0008, 0x6813, 0x0005, 0x681f, 0x0000, 0x6823, 0x0006,
+ 0x6817, 0x0008, 0x6827, 0x0000, 0x2069, 0x3a00, 0x2011, 0x0020,
+ 0x2009, 0x0010, 0x680b, 0x0c19, 0x680f, 0x0019, 0x6803, 0xfd00,
+ 0x6807, 0x0018, 0x6a1a, 0x2d00, 0xa0e8, 0x0008, 0xa290, 0x0004,
+ 0x8109, 0x00c0, 0x1102, 0x2069, 0x3a80, 0x20a9, 0x0080, 0x680b,
+ 0x0040, 0x7be8, 0xa386, 0xfeff, 0x00c0, 0x1124, 0x6817, 0x0100,
+ 0x681f, 0x0064, 0x0078, 0x1128, 0x6817, 0x0064, 0x681f, 0x0002,
+ 0xade8, 0x0010, 0x0070, 0x112e, 0x0078, 0x1117, 0x1078, 0x1d15,
+ 0x1078, 0x3366, 0x1078, 0x18a4, 0x1078, 0x37fc, 0x3200, 0xa085,
+ 0x000d, 0x2090, 0x70c3, 0x0000, 0x0090, 0x1145, 0x70c0, 0xa086,
+ 0x0002, 0x00c0, 0x1145, 0x1078, 0x1274, 0x1078, 0x1186, 0x78c0,
+ 0xa005, 0x00c0, 0x1151, 0x1078, 0x1a99, 0x0068, 0x1155, 0x1078,
+ 0x1c6f, 0x0068, 0x1155, 0x1078, 0x1997, 0x00e0, 0x1145, 0x1078,
+ 0x369a, 0x0078, 0x1145, 0x1163, 0x1165, 0x1ebb, 0x1ebb, 0x33d7,
+ 0x33d7, 0x1ebb, 0x1ebb, 0x0078, 0x1163, 0x0078, 0x1165, 0x0078,
+ 0x1167, 0x0078, 0x1169, 0x2009, 0x0022, 0x2104, 0xa086, 0x4000,
+ 0x0040, 0x1181, 0x7008, 0x800b, 0x00c8, 0x1181, 0x7007, 0x0002,
+ 0xa08c, 0x0060, 0x00c0, 0x1182, 0xa084, 0x0008, 0x0040, 0x1181,
+ 0x087a, 0x097a, 0x70c3, 0x4002, 0x0078, 0x1277, 0x0068, 0x11f1,
+ 0x2061, 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x11f1, 0x7814,
+ 0xa005, 0x00c0, 0x1197, 0x0010, 0x11f2, 0x0078, 0x11f1, 0x2009,
+ 0x3968, 0x2104, 0xa005, 0x00c0, 0x11f1, 0x2009, 0x3971, 0x200b,
+ 0x0000, 0x7914, 0xa186, 0x0042, 0x00c0, 0x11bc, 0x7816, 0x2009,
+ 0x396f, 0x2164, 0x200b, 0x0000, 0x6018, 0x70c6, 0x6014, 0x70ca,
+ 0x611c, 0xa18c, 0xff00, 0x6020, 0xa084, 0x00ff, 0xa105, 0x70ce,
+ 0x1078, 0x1896, 0x0078, 0x11ef, 0x7814, 0xa086, 0x0018, 0x00c0,
+ 0x11c3, 0x1078, 0x1622, 0x7817, 0x0000, 0x2009, 0x396f, 0x2104,
+ 0xa065, 0x0040, 0x11df, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x18f6,
+ 0x0c7f, 0x609f, 0x0000, 0x1078, 0x16e9, 0x2009, 0x001c, 0x6087,
+ 0x0103, 0x1078, 0x181d, 0x00c0, 0x11eb, 0x1078, 0x1896, 0x2009,
+ 0x396f, 0x200b, 0x0000, 0x2009, 0x3969, 0x2104, 0x200b, 0x0000,
+ 0xa005, 0x0040, 0x11ef, 0x2001, 0x4005, 0x0078, 0x1276, 0x0078,
+ 0x1274, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000, 0x70cb, 0x0000,
+ 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0, 0x1242, 0x2038,
+ 0x0079, 0x1202, 0x1274, 0x12cf, 0x1293, 0x12cf, 0x1338, 0x1338,
+ 0x128a, 0x16fd, 0x1343, 0x1282, 0x1297, 0x1299, 0x129b, 0x129d,
+ 0x1702, 0x1282, 0x1355, 0x1380, 0x163a, 0x16f7, 0x129f, 0x1569,
+ 0x158b, 0x15a1, 0x15be, 0x1526, 0x1534, 0x1548, 0x155c, 0x13f3,
+ 0x1282, 0x13a1, 0x13a7, 0x13ac, 0x13b1, 0x13b7, 0x13bc, 0x13c1,
+ 0x13c6, 0x13cb, 0x13cf, 0x13e4, 0x13f0, 0x1282, 0x1282, 0x1282,
+ 0x1282, 0x13ff, 0x1408, 0x1417, 0x143d, 0x1447, 0x144e, 0x1474,
+ 0x1483, 0x1492, 0x14a4, 0x1506, 0x1516, 0x1282, 0x1282, 0x1282,
+ 0x1282, 0x151b, 0xa0bc, 0xffa0, 0x00c0, 0x1282, 0x2038, 0xa084,
+ 0x001f, 0x0079, 0x124b, 0x1719, 0x171c, 0x172c, 0x17a8, 0x17e1,
+ 0x1282, 0x1282, 0x1282, 0x1282, 0x1282, 0x1282, 0x1282, 0x1282,
+ 0x1282, 0x1282, 0x1282, 0x12c5, 0x132e, 0x134b, 0x1376, 0x1630,
+ 0x1282, 0x1282, 0x1282, 0x1282, 0x1282, 0x17f9, 0x1803, 0x1807,
+ 0x1815, 0x1282, 0x1282, 0x72ca, 0x71c6, 0x2001, 0x4006, 0x0078,
+ 0x1276, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000, 0x70c2, 0x0068,
+ 0x1277, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091,
+ 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078, 0x1277, 0x70c3, 0x4006,
+ 0x0078, 0x1277, 0x2099, 0x0041, 0x20a1, 0x0041, 0x20a9, 0x0005,
+ 0x53a3, 0x0078, 0x1274, 0x70c4, 0x70c3, 0x0004, 0x007a, 0x0078,
+ 0x1274, 0x0078, 0x1274, 0x0078, 0x1274, 0x0078, 0x1274, 0x2091,
+ 0x8000, 0x70c3, 0x0000, 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf,
+ 0x2020, 0x70d3, 0x0002, 0x3f00, 0x70d6, 0x2079, 0x0000, 0x781b,
+ 0x0001, 0x2031, 0x0030, 0x2059, 0x1000, 0x2029, 0x0457, 0x2051,
+ 0x0470, 0x2061, 0x0472, 0x20b9, 0xffff, 0x20c1, 0x0000, 0x2091,
+ 0x5000, 0x2091, 0x4080, 0x0078, 0x0455, 0x1078, 0x1a04, 0x00c0,
+ 0x1286, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x12d2, 0x2029,
+ 0x0000, 0x2520, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0, 0x2098,
+ 0x2031, 0x0030, 0x81ff, 0x0040, 0x1274, 0x7007, 0x0004, 0x731a,
+ 0x721e, 0x7422, 0x7526, 0x2051, 0x0012, 0x2049, 0x130d, 0x2041,
+ 0x1274, 0x7003, 0x0002, 0xa786, 0x0001, 0x0040, 0x12f5, 0xa786,
+ 0x0050, 0x0040, 0x12f5, 0x0078, 0x12fb, 0x2049, 0x131a, 0x2041,
+ 0x1326, 0x7003, 0x0003, 0x7017, 0x0000, 0x810b, 0x7112, 0x00c8,
+ 0x1303, 0x7017, 0x0001, 0x7007, 0x0001, 0xa786, 0x0001, 0x0040,
+ 0x131a, 0xa786, 0x0050, 0x0040, 0x131a, 0x700c, 0xa084, 0x007f,
+ 0x2009, 0x0040, 0xa102, 0x8004, 0x094a, 0x20a8, 0x26a0, 0x53a6,
+ 0x0078, 0x116b, 0x700c, 0xa084, 0x007f, 0x0040, 0x131a, 0x80ac,
+ 0x0048, 0x131a, 0x2698, 0x53a5, 0x0078, 0x116b, 0x700c, 0xa084,
+ 0x007f, 0x80ac, 0x2698, 0x53a5, 0x0078, 0x1274, 0x1078, 0x1a04,
+ 0x00c0, 0x1286, 0x75d8, 0x74dc, 0x75da, 0x74de, 0x0078, 0x12d2,
+ 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0, 0x1340, 0x200a,
+ 0x72ca, 0x0078, 0x1273, 0x70c7, 0x0002, 0x70cb, 0x000a, 0x70cf,
+ 0x0000, 0x0078, 0x1274, 0x1078, 0x1a04, 0x00c0, 0x1286, 0x75d8,
+ 0x76dc, 0x75da, 0x76de, 0x0078, 0x1358, 0x2029, 0x0000, 0x2530,
+ 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6, 0x72ca, 0x73ce, 0x74d2,
+ 0xa005, 0x0040, 0x1370, 0x8001, 0x788a, 0x7a92, 0x7b96, 0x7d9a,
+ 0x7e9e, 0x7c8e, 0x78c0, 0xa084, 0xfffc, 0x78c2, 0x0078, 0x1374,
+ 0x78c0, 0xa085, 0x0001, 0x78c2, 0x0078, 0x1274, 0x1078, 0x1a04,
+ 0x00c0, 0x1286, 0x75d8, 0x76dc, 0x75da, 0x76de, 0x0078, 0x1383,
+ 0x2029, 0x0000, 0x2530, 0x70c4, 0x72c8, 0x73cc, 0x74d4, 0x70c6,
+ 0x72ca, 0x73ce, 0x74d6, 0xa005, 0x0040, 0x139b, 0x8001, 0x78a6,
+ 0x7aae, 0x7bb2, 0x7db6, 0x7eba, 0x7caa, 0x78c0, 0xa084, 0xfcff,
+ 0x78c2, 0x0078, 0x139f, 0x78c0, 0xa085, 0x0100, 0x78c2, 0x0078,
+ 0x1274, 0x2009, 0x395f, 0x210c, 0x7ae4, 0x0078, 0x1272, 0x2009,
+ 0x3941, 0x210c, 0x0078, 0x1273, 0x2009, 0x3942, 0x210c, 0x0078,
+ 0x1273, 0x2061, 0x3940, 0x610c, 0x6210, 0x0078, 0x1272, 0x2009,
+ 0x3945, 0x210c, 0x0078, 0x1273, 0x2009, 0x3946, 0x210c, 0x0078,
+ 0x1273, 0x2009, 0x3947, 0x210c, 0x0078, 0x1273, 0x2009, 0x3948,
+ 0x210c, 0x0078, 0x1273, 0x7908, 0x7a0c, 0x0078, 0x1272, 0x71c4,
+ 0x8107, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e8, 0x3a00,
+ 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040, 0x13e1, 0x6b08, 0x0078,
+ 0x13e2, 0x6b0c, 0x0078, 0x1271, 0x77c4, 0x1078, 0x18b4, 0x2091,
+ 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001, 0x2708, 0x0078, 0x1271,
+ 0x794c, 0x0078, 0x1273, 0x77c4, 0x1078, 0x18b4, 0x2091, 0x8000,
+ 0x6908, 0x6a18, 0x6b10, 0x2091, 0x8001, 0x0078, 0x1271, 0x71c4,
+ 0xa182, 0x0010, 0x00c8, 0x126c, 0x1078, 0x1d9b, 0x0078, 0x1271,
+ 0x71c4, 0xa182, 0x0010, 0x00c8, 0x126c, 0x2011, 0x3941, 0x2204,
+ 0x007e, 0x2112, 0x1078, 0x1d54, 0x017f, 0x0078, 0x1273, 0x71c4,
+ 0x2011, 0x1435, 0x20a9, 0x0008, 0x2204, 0xa106, 0x0040, 0x1427,
+ 0x8210, 0x0070, 0x1425, 0x0078, 0x141c, 0x0078, 0x126c, 0xa292,
+ 0x1435, 0x027e, 0x2011, 0x3942, 0x2204, 0x2112, 0x017f, 0x007e,
+ 0x1078, 0x1d60, 0x017f, 0x0078, 0x1273, 0x03e8, 0x00fa, 0x01f4,
+ 0x02ee, 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, 0x3940, 0x610c,
+ 0x6210, 0x70c4, 0x600e, 0x70c8, 0x6012, 0x0078, 0x1272, 0x2061,
+ 0x3940, 0x6114, 0x70c4, 0x6016, 0x0078, 0x1273, 0x71c4, 0x2011,
+ 0x0004, 0x2019, 0x1212, 0xa186, 0x0028, 0x0040, 0x1467, 0x2011,
+ 0x0005, 0x2019, 0x1212, 0xa186, 0x0032, 0x0040, 0x1467, 0x2011,
+ 0x0006, 0x2019, 0x2323, 0xa186, 0x003c, 0x00c0, 0x126c, 0x2061,
+ 0x3940, 0x6018, 0x007e, 0x611a, 0x23b8, 0x1078, 0x1d71, 0x1078,
+ 0x37fc, 0x017f, 0x0078, 0x1273, 0x71c4, 0xa184, 0xffcf, 0x00c0,
+ 0x126c, 0x2011, 0x3947, 0x2204, 0x2112, 0x007e, 0x1078, 0x1d93,
+ 0x017f, 0x0078, 0x1273, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x126c,
+ 0x2011, 0x3948, 0x2204, 0x007e, 0x2112, 0x1078, 0x1d82, 0x017f,
+ 0x0078, 0x1273, 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x126b,
+ 0xa284, 0xfffd, 0x00c0, 0x126b, 0x2100, 0x7908, 0x780a, 0x2200,
+ 0x7a0c, 0x780e, 0x0078, 0x1272, 0x71c4, 0x8107, 0xa084, 0x000f,
+ 0x8003, 0x8003, 0x8003, 0xa0e8, 0x3a00, 0x2019, 0x0000, 0x72c8,
+ 0x6800, 0x007e, 0xa226, 0x0040, 0x14d3, 0x6a02, 0xa484, 0x2000,
+ 0x0040, 0x14bc, 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x14c2,
+ 0xa39d, 0x0008, 0xa484, 0x4000, 0x0040, 0x14d3, 0x810f, 0xa284,
+ 0x4000, 0x0040, 0x14cf, 0x1078, 0x1db5, 0x0078, 0x14d3, 0x1078,
+ 0x1da7, 0x0078, 0x14d3, 0x72cc, 0x82ff, 0x0040, 0x14ff, 0x6808,
+ 0xa206, 0x0040, 0x14ff, 0xa2a4, 0x00ff, 0x2061, 0x3940, 0x6118,
+ 0xa186, 0x0028, 0x0040, 0x14ec, 0xa186, 0x0032, 0x0040, 0x14f2,
+ 0xa186, 0x003c, 0x0040, 0x14f8, 0xa482, 0x0064, 0x00c8, 0x126d,
+ 0x0078, 0x14fc, 0xa482, 0x0050, 0x00c8, 0x126d, 0x0078, 0x14fc,
+ 0xa482, 0x0043, 0x00c8, 0x126d, 0x6a0a, 0xa39d, 0x000a, 0x6804,
+ 0xa305, 0x6806, 0x027f, 0x6b0c, 0x0078, 0x1271, 0x77c4, 0x1078,
+ 0x18b4, 0x2091, 0x8000, 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8,
+ 0x6816, 0x70cc, 0x681e, 0x2708, 0x0078, 0x1271, 0x70c4, 0x794c,
+ 0x784e, 0x0078, 0x1273, 0x71c4, 0x72c8, 0x73cc, 0xa182, 0x0010,
+ 0x00c8, 0x126c, 0x1078, 0x1dc3, 0x0078, 0x1271, 0x77c4, 0x1078,
+ 0x18b4, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0002, 0x6a0a, 0x2091,
+ 0x8001, 0x2708, 0x0078, 0x1272, 0x77c4, 0x1078, 0x18b4, 0x2091,
+ 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804, 0xa005, 0x0040,
+ 0x1543, 0x1078, 0x1cf6, 0x2091, 0x8001, 0x2708, 0x0078, 0x1272,
+ 0x77c4, 0x1078, 0x18b4, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0004,
+ 0x6a0a, 0x6804, 0xa005, 0x0040, 0x1557, 0x1078, 0x1cf6, 0x2091,
+ 0x8001, 0x2708, 0x0078, 0x1272, 0x77c4, 0x2041, 0x0001, 0x2049,
+ 0x0005, 0x2051, 0x0020, 0x1078, 0x18c1, 0x2708, 0x6a08, 0x0078,
+ 0x1272, 0x77c4, 0x73c8, 0x72cc, 0x77c6, 0x73ca, 0x72ce, 0x1078,
+ 0x193c, 0x00c0, 0x1587, 0x6818, 0xa005, 0x0040, 0x1581, 0x2708,
+ 0x1078, 0x1dd3, 0x00c0, 0x1581, 0x7817, 0x0015, 0x2091, 0x8001,
+ 0x007c, 0x2091, 0x8001, 0x2001, 0x4005, 0x0078, 0x1276, 0x2091,
+ 0x8001, 0x0078, 0x1274, 0x77c4, 0x77c6, 0x2061, 0x3940, 0x60a3,
+ 0x0003, 0x67b6, 0x60c7, 0x000f, 0x2041, 0x0021, 0x2049, 0x0005,
+ 0x2051, 0x0020, 0x1078, 0x18c1, 0x7817, 0x0016, 0x1078, 0x1cf6,
+ 0x007c, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2061, 0x3940, 0x60a3,
+ 0x0002, 0x67b6, 0x60c7, 0x000f, 0x7817, 0x0017, 0x1078, 0x1cf6,
+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0010, 0x1078, 0x18c1,
+ 0x8738, 0xa784, 0x0007, 0x00c0, 0x15b6, 0x007c, 0x78c0, 0xa084,
+ 0x0003, 0x00c0, 0x15e2, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049,
+ 0x0004, 0x2051, 0x0008, 0x1078, 0x18b4, 0x2091, 0x8000, 0x6808,
+ 0xa80d, 0x690a, 0x2091, 0x8001, 0x8738, 0xa784, 0x0007, 0x00c0,
+ 0x15cb, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f, 0xa784, 0x0f00,
+ 0x00c0, 0x15cb, 0x2091, 0x8000, 0x2069, 0x0100, 0x6830, 0xa084,
+ 0x0040, 0x0040, 0x160b, 0x684b, 0x0004, 0x20a9, 0x0014, 0x6848,
+ 0xa084, 0x0004, 0x0040, 0x15f8, 0x0070, 0x15f8, 0x0078, 0x15ef,
+ 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001, 0x0040,
+ 0x1605, 0x0070, 0x1605, 0x0078, 0x15fc, 0x20a9, 0x00fa, 0x0070,
+ 0x160b, 0x0078, 0x1607, 0x2079, 0x3900, 0x7817, 0x0018, 0x2061,
+ 0x3940, 0x60a3, 0x0001, 0x60c7, 0x000f, 0x78c0, 0xa085, 0x0002,
+ 0x78c2, 0x6808, 0xa084, 0xfffd, 0x680a, 0x681b, 0x0047, 0x2091,
+ 0x8001, 0x007c, 0x78c0, 0xa084, 0xfffd, 0x78c2, 0xa084, 0x0001,
+ 0x00c0, 0x162c, 0x1078, 0x197e, 0x71c4, 0x71c6, 0x794a, 0x007c,
+ 0x1078, 0x1a04, 0x00c0, 0x1286, 0x75d8, 0x74dc, 0x75da, 0x74de,
+ 0x0078, 0x163d, 0x2029, 0x0000, 0x2520, 0x71c4, 0x73c8, 0x72cc,
+ 0x71c6, 0x73ca, 0x72ce, 0x2079, 0x3900, 0x1078, 0x188d, 0x0040,
+ 0x16e5, 0x20a9, 0x0005, 0x20a1, 0x3916, 0x41a1, 0x2009, 0x0040,
+ 0x1078, 0x1857, 0x0040, 0x1658, 0x1078, 0x1896, 0x0078, 0x16e5,
+ 0x6004, 0xa084, 0xff00, 0x8007, 0x8009, 0x0040, 0x16b9, 0x0c7e,
+ 0x2c68, 0x1078, 0x188d, 0x0040, 0x1688, 0x2c00, 0x689e, 0x8109,
+ 0x00c0, 0x1660, 0x609f, 0x0000, 0x0c7f, 0x0c7e, 0x7218, 0x731c,
+ 0x7420, 0x7524, 0x2c68, 0x689c, 0xa065, 0x0040, 0x16b8, 0x2009,
+ 0x0040, 0x1078, 0x1857, 0x00c0, 0x16a1, 0x6004, 0xa084, 0x00ff,
+ 0xa086, 0x0002, 0x00c0, 0x1688, 0x2d00, 0x6002, 0x0078, 0x166e,
+ 0x0c7f, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x18f6, 0x0c7f, 0x609f,
+ 0x0000, 0x1078, 0x16e9, 0x2009, 0x001c, 0x6008, 0xa085, 0x0200,
+ 0x600a, 0x6004, 0x6086, 0x1078, 0x181d, 0x1078, 0x1896, 0x0078,
+ 0x16e5, 0x0c7f, 0x0c7e, 0x609c, 0x2060, 0x1078, 0x18f6, 0x0c7f,
+ 0x609f, 0x0000, 0x1078, 0x16e9, 0x2009, 0x001c, 0x6087, 0x0103,
+ 0x601b, 0x0003, 0x1078, 0x181d, 0x1078, 0x1896, 0x0078, 0x16e5,
+ 0x0c7f, 0x74c4, 0x73c8, 0x72cc, 0x6014, 0x7817, 0x0012, 0x0e7e,
+ 0x2071, 0x3940, 0x70a3, 0x0005, 0x70a7, 0x0000, 0x73aa, 0x72ae,
+ 0x74b2, 0x70b6, 0x70bb, 0x0000, 0x2c00, 0x70be, 0x70c3, 0x0000,
+ 0xa02e, 0x2530, 0x611c, 0xa184, 0x0060, 0x0040, 0x16d9, 0x1078,
+ 0x330a, 0x0e7f, 0x6596, 0x65a6, 0x669a, 0x669a, 0x60af, 0x0000,
+ 0x60b3, 0x0000, 0x1078, 0x1cf6, 0x007c, 0x70c3, 0x4005, 0x0078,
+ 0x1277, 0x20a9, 0x0005, 0x2099, 0x3916, 0x530a, 0x2100, 0xa210,
+ 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x007c, 0x71c4,
+ 0x70c7, 0x0000, 0x7906, 0x0078, 0x1274, 0x71c4, 0x71c6, 0x2168,
+ 0x0078, 0x1704, 0x2069, 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210,
+ 0x8d68, 0x8109, 0x00c0, 0x1706, 0xa285, 0x0000, 0x00c0, 0x1714,
+ 0x70c3, 0x4000, 0x0078, 0x1716, 0x70c3, 0x4003, 0x70ca, 0x0078,
+ 0x1277, 0x79d8, 0x0078, 0x1273, 0x71c4, 0x71c6, 0x2198, 0x20a1,
+ 0x0042, 0x20a9, 0x0004, 0x53a3, 0x21a0, 0x2099, 0x0042, 0x20a9,
+ 0x0004, 0x53a3, 0x0078, 0x1274, 0x70c4, 0x2068, 0x2079, 0x3900,
+ 0x1078, 0x188d, 0x0040, 0x17a4, 0x6007, 0x0001, 0x600b, 0x0000,
+ 0x602b, 0x0000, 0x601b, 0x0006, 0x6a10, 0xa28c, 0x0007, 0xa284,
+ 0x00f0, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0x6016, 0xa284,
+ 0x0800, 0x0040, 0x174f, 0x601b, 0x000a, 0x0078, 0x1755, 0xa284,
+ 0x1000, 0x0040, 0x1755, 0x601b, 0x000c, 0xa284, 0x0300, 0x0040,
+ 0x175e, 0x602b, 0x0001, 0x8004, 0x8004, 0x8004, 0xa085, 0x0001,
+ 0x601e, 0x6023, 0x0000, 0x6027, 0x000a, 0xa284, 0x0400, 0x0040,
+ 0x176b, 0x602b, 0x0000, 0x20a9, 0x0006, 0xac80, 0x000b, 0x20a0,
+ 0xad80, 0x0005, 0x2098, 0x53a3, 0xa284, 0x0300, 0x00c0, 0x1780,
+ 0x6046, 0x604a, 0x604e, 0x6052, 0x6096, 0x609a, 0x0078, 0x178a,
+ 0x6800, 0x6046, 0x6804, 0x604a, 0x6e08, 0x664e, 0x6d0c, 0x6552,
+ 0x6596, 0x669a, 0x6014, 0x7817, 0x0042, 0x2c08, 0x2061, 0x3940,
+ 0x60a3, 0x0005, 0x60a7, 0x0000, 0x60ab, 0x0000, 0x60af, 0x0000,
+ 0x60b3, 0x0000, 0x60b6, 0x61be, 0xa284, 0x0400, 0x60c2, 0x1078,
+ 0x32f5, 0x1078, 0x1cf6, 0x007c, 0x70c3, 0x4005, 0x0078, 0x1277,
+ 0x78f0, 0xa005, 0x0040, 0x1282, 0x2091, 0x8000, 0x70c4, 0x800a,
+ 0x2011, 0x0010, 0x810c, 0x0048, 0x17ba, 0x3a00, 0xa084, 0xfff7,
+ 0x0078, 0x17bd, 0x3a00, 0xa085, 0x0008, 0x20d0, 0x0005, 0x0005,
+ 0xa084, 0xfffb, 0x20d0, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0xa085, 0x0004, 0x20d0, 0x0005, 0x0005,
+ 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x8211, 0x00c0,
+ 0x17b2, 0x3a00, 0xa085, 0x0008, 0x20d0, 0x2091, 0x8001, 0x0078,
+ 0x1274, 0x2011, 0x04fd, 0x2204, 0xa082, 0x0004, 0x0048, 0x17f5,
+ 0x78f3, 0x0001, 0x2009, 0xff01, 0x200a, 0x2001, 0x000c, 0x20d8,
+ 0x2001, 0x000c, 0x20d0, 0x0078, 0x1274, 0x2001, 0x4005, 0x0078,
+ 0x1276, 0x7978, 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x126c,
+ 0x797a, 0x0078, 0x1274, 0x7978, 0x71c6, 0x0078, 0x1274, 0x796c,
+ 0x71c6, 0x71c4, 0x796e, 0x7970, 0x71ca, 0x71c8, 0x7972, 0x7974,
+ 0x71ce, 0x71cc, 0x7976, 0x0078, 0x1274, 0x796c, 0x71c6, 0x7970,
+ 0x71ca, 0x7974, 0x71ce, 0x0078, 0x1274, 0x700c, 0xa084, 0x00ff,
+ 0x0040, 0x1829, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0,
+ 0x1824, 0x7017, 0x0000, 0x7112, 0x721a, 0x731e, 0x7422, 0x7526,
+ 0xac80, 0x0001, 0x8108, 0x810c, 0x81a9, 0x8098, 0x20a1, 0x0030,
+ 0x6084, 0x20a2, 0x53a6, 0x780c, 0xa085, 0x0000, 0x7002, 0x7007,
+ 0x0001, 0x2009, 0x0022, 0x2104, 0xa084, 0x4000, 0x00c0, 0x1841,
+ 0x7108, 0x8103, 0x00c8, 0x1841, 0x7014, 0xa005, 0x0040, 0x1841,
+ 0x7007, 0x0002, 0xa184, 0x0060, 0x7003, 0x0000, 0x007c, 0x700c,
+ 0xa084, 0x00ff, 0x0040, 0x1863, 0x7007, 0x0004, 0x7004, 0xa084,
+ 0x0004, 0x00c0, 0x185e, 0x7017, 0x0000, 0x7112, 0x721a, 0x7422,
+ 0x7526, 0x731e, 0x2099, 0x0030, 0x8108, 0x81ac, 0x780c, 0xa085,
+ 0x0001, 0x7002, 0x7007, 0x0001, 0x2009, 0x0022, 0x2104, 0xa084,
+ 0x4000, 0x00c0, 0x1874, 0x7008, 0x800b, 0x00c8, 0x1874, 0x7007,
+ 0x0002, 0xa08c, 0x0060, 0x00c0, 0x188a, 0xac80, 0x0001, 0x20a0,
+ 0x53a5, 0xa006, 0x7003, 0x0000, 0x007c, 0x7850, 0xa065, 0x0040,
+ 0x1895, 0x2c04, 0x7852, 0x2063, 0x0000, 0x007c, 0x0f7e, 0x2079,
+ 0x3900, 0x7850, 0x2062, 0x2c00, 0xa005, 0x00c0, 0x18a1, 0x1078,
+ 0x1eac, 0x7852, 0x0f7f, 0x007c, 0x2011, 0x4400, 0x7a52, 0x7be4,
+ 0x8319, 0x0040, 0x18b1, 0xa280, 0x002f, 0x2012, 0x2010, 0x0078,
+ 0x18a8, 0x2013, 0x0000, 0x007c, 0xa784, 0x0f00, 0x800c, 0xa784,
+ 0x0007, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e8, 0x3a80,
+ 0x007c, 0x1078, 0x18b4, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808,
+ 0xa084, 0xffef, 0xa80d, 0x690a, 0x2091, 0x8000, 0x2009, 0x394f,
+ 0x210c, 0x6804, 0xa005, 0x0040, 0x18de, 0xa116, 0x00c0, 0x18de,
+ 0x2060, 0x6000, 0x6806, 0x017e, 0x0078, 0x18e1, 0x2009, 0x0000,
+ 0x017e, 0x6804, 0xa065, 0x0040, 0x18f0, 0x6000, 0x6806, 0x1078,
+ 0x1903, 0x1078, 0x1a14, 0x6810, 0x8001, 0x6812, 0x00c0, 0x18e1,
+ 0x017f, 0x6902, 0x6906, 0x2091, 0x8001, 0x007c, 0xa065, 0x0040,
+ 0x1902, 0x609c, 0x609f, 0x0000, 0x2008, 0x1078, 0x1896, 0x2100,
+ 0x0078, 0x18f6, 0x007c, 0x6007, 0x0103, 0x20a9, 0x001c, 0xac80,
+ 0x0005, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x6828, 0x601a, 0x682c,
+ 0x6022, 0x007c, 0x0e7e, 0x2071, 0x3940, 0x7040, 0xa08c, 0x0080,
+ 0x00c0, 0x1920, 0xa088, 0x3980, 0x2d0a, 0x8000, 0x7042, 0xa006,
+ 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x3940, 0x2009, 0x3980, 0x7240,
+ 0x8221, 0x8211, 0x0048, 0x193a, 0x2104, 0x8108, 0xad06, 0x00c0,
+ 0x1929, 0x8119, 0x211e, 0x8108, 0x8318, 0x8211, 0x00c8, 0x1932,
+ 0x7442, 0xa006, 0x0e7f, 0x007c, 0x1078, 0x18b4, 0x2091, 0x8000,
+ 0x6804, 0x781e, 0xa065, 0x0040, 0x197d, 0x0078, 0x194d, 0x2c00,
+ 0x781e, 0x6000, 0xa065, 0x0040, 0x197d, 0x6010, 0xa306, 0x00c0,
+ 0x1947, 0x600c, 0xa206, 0x00c0, 0x1947, 0x2c28, 0x6804, 0xac06,
+ 0x00c0, 0x1964, 0x6000, 0x2060, 0x6806, 0xa005, 0x00c0, 0x1964,
+ 0x6803, 0x0000, 0x0078, 0x196e, 0x6400, 0x781c, 0x2060, 0x6402,
+ 0xa486, 0x0000, 0x00c0, 0x196e, 0x2c00, 0x6802, 0x2560, 0x1078,
+ 0x1903, 0x601b, 0x0005, 0x6023, 0x0020, 0x1078, 0x1a14, 0x6810,
+ 0x8001, 0x6812, 0x2001, 0xffff, 0xa005, 0x007c, 0x2039, 0x0000,
+ 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x1078, 0x18c1,
+ 0x8738, 0xa784, 0x0007, 0x00c0, 0x1986, 0xa7bc, 0xff00, 0x873f,
+ 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x1986, 0x007c, 0x2061,
+ 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x19a8, 0x2091, 0x8000,
+ 0x78d4, 0x78d7, 0x0000, 0x2091, 0x8001, 0xa005, 0x00c0, 0x19a9,
+ 0x007c, 0xa08c, 0xfff0, 0x0040, 0x19af, 0x1078, 0x1eac, 0x0079,
+ 0x19b1, 0x19c1, 0x19c3, 0x19c9, 0x19cd, 0x19c1, 0x19d1, 0x19c1,
+ 0x19d8, 0x19dc, 0x19e0, 0x1a0a, 0x1a0e, 0x19c1, 0x19c1, 0x19c1,
+ 0x19c1, 0x1078, 0x1eac, 0x1078, 0x197e, 0x2001, 0x8001, 0x0078,
+ 0x1276, 0x2001, 0x8003, 0x0078, 0x1276, 0x2001, 0x8004, 0x0078,
+ 0x1276, 0x1078, 0x197e, 0x2001, 0x8006, 0x007c, 0x0078, 0x1276,
+ 0x2001, 0x8008, 0x0078, 0x1276, 0x2001, 0x8009, 0x0078, 0x1276,
+ 0x2091, 0x8000, 0x2069, 0x3940, 0x6800, 0xa086, 0x0000, 0x0040,
+ 0x19ee, 0x2091, 0x8001, 0x78d7, 0x0009, 0x007c, 0x68b4, 0xa0bc,
+ 0xff00, 0x2091, 0x8000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051,
+ 0x0010, 0x1078, 0x18c1, 0x8738, 0xa784, 0x0007, 0x00c0, 0x19f9,
+ 0x2001, 0x800a, 0x0078, 0x1276, 0x2001, 0x04fd, 0x2004, 0xa086,
+ 0x0004, 0x007c, 0x2001, 0x800c, 0x0078, 0x1276, 0x1078, 0x197e,
+ 0x2001, 0x800d, 0x0078, 0x1276, 0x6004, 0x6086, 0x2c08, 0x2063,
+ 0x0000, 0x787c, 0x8000, 0x787e, 0x7880, 0xa005, 0x7982, 0x0040,
+ 0x1a24, 0x2c02, 0x0078, 0x1a25, 0x7986, 0x007c, 0x0c7e, 0x2061,
+ 0x3900, 0x6887, 0x0103, 0x2d08, 0x206b, 0x0000, 0x607c, 0x8000,
+ 0x607e, 0x6080, 0xa005, 0x6182, 0x0040, 0x1a39, 0x2d02, 0x0078,
+ 0x1a3a, 0x6186, 0x0c7f, 0x007c, 0x1078, 0x1a4d, 0x0040, 0x1a4c,
+ 0x0c7e, 0x609c, 0xa065, 0x0040, 0x1a47, 0x1078, 0x18f6, 0x0c7f,
+ 0x609f, 0x0000, 0x1078, 0x1896, 0x007c, 0x7884, 0xa065, 0x0040,
+ 0x1a5f, 0x2091, 0x8000, 0x787c, 0x8001, 0x787e, 0x2c04, 0x7886,
+ 0xa005, 0x00c0, 0x1a5d, 0x7882, 0x8000, 0x2091, 0x8001, 0x007c,
+ 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086, 0x818e, 0x00c8, 0x1a69,
+ 0xa200, 0x0070, 0x1a6d, 0x0078, 0x1a64, 0x8086, 0x818e, 0x007c,
+ 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x1a93, 0xa11a, 0x00c8,
+ 0x1a93, 0x8213, 0x818d, 0x0048, 0x1a84, 0xa11a, 0x00c8, 0x1a85,
+ 0x0070, 0x1a8b, 0x0078, 0x1a79, 0xa11a, 0x2308, 0x8210, 0x0070,
+ 0x1a8b, 0x0078, 0x1a79, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080,
+ 0x007f, 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078,
+ 0x1a8f, 0x798c, 0x70d0, 0x007e, 0x007f, 0xa106, 0x0040, 0x1ae9,
+ 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0, 0x1ae9,
+ 0x7008, 0x7208, 0xa206, 0x00c0, 0x1ae9, 0xa286, 0x0008, 0x00c0,
+ 0x1ae9, 0x2071, 0x0010, 0x1078, 0x188d, 0x0040, 0x1ae9, 0x7a94,
+ 0x7b90, 0x7c9c, 0x7d98, 0x8107, 0x8004, 0x8004, 0xa210, 0xa399,
+ 0x0000, 0x2009, 0x0040, 0x1078, 0x1857, 0x2091, 0x8001, 0x0040,
+ 0x1ae0, 0x1078, 0x1896, 0x78a0, 0x8000, 0x78a2, 0xa086, 0x0002,
+ 0x00c0, 0x1ae9, 0x2091, 0x8000, 0x78d7, 0x0002, 0x78a3, 0x0000,
+ 0x78c0, 0xa085, 0x0003, 0x78c2, 0x2091, 0x8001, 0x0078, 0x1ae9,
+ 0x78a3, 0x0000, 0x1078, 0x1c38, 0x6004, 0xa084, 0x000f, 0x0079,
+ 0x1aee, 0x2071, 0x0010, 0x2091, 0x8001, 0x007c, 0x1afe, 0x1b20,
+ 0x1b46, 0x1afe, 0x1b58, 0x1b0d, 0x1afe, 0x1afe, 0x1afe, 0x1b1a,
+ 0x1b40, 0x1afe, 0x1afe, 0x1afe, 0x1afe, 0x1afe, 0x2039, 0x0400,
+ 0x78d0, 0xa705, 0x78d2, 0x6008, 0xa705, 0x600a, 0x1078, 0x1b96,
+ 0x609c, 0x78ce, 0x1078, 0x1c20, 0x007c, 0x78d0, 0xa084, 0x0100,
+ 0x0040, 0x1b14, 0x0078, 0x1afe, 0x601c, 0xa085, 0x0080, 0x601e,
+ 0x0078, 0x1b27, 0x1078, 0x1a04, 0x00c0, 0x1afe, 0x1078, 0x1c52,
+ 0x78d0, 0xa084, 0x0100, 0x0040, 0x1b27, 0x0078, 0x1afe, 0x78d3,
+ 0x0000, 0x6004, 0x8007, 0xa084, 0x00ff, 0x78c6, 0x8001, 0x609f,
+ 0x0000, 0x0040, 0x1b3d, 0x1078, 0x1b96, 0x0040, 0x1b3d, 0x78d0,
+ 0xa085, 0x0100, 0x78d2, 0x0078, 0x1b3f, 0x1078, 0x1bba, 0x007c,
+ 0x1078, 0x1a04, 0x00c0, 0x1afe, 0x1078, 0x1c4e, 0x78d0, 0xa08c,
+ 0x0e00, 0x00c0, 0x1b4f, 0xa084, 0x0100, 0x00c0, 0x1b51, 0x0078,
+ 0x1afe, 0x1078, 0x1b96, 0x00c0, 0x1b57, 0x1078, 0x1bba, 0x007c,
+ 0x78d0, 0xa084, 0x0100, 0x0040, 0x1b5f, 0x0078, 0x1afe, 0x78d3,
+ 0x0000, 0x6714, 0x20a9, 0x0001, 0x6018, 0xa005, 0x0040, 0x1b7a,
+ 0xa7bc, 0xff00, 0x20a9, 0x0008, 0xa08e, 0x0001, 0x0040, 0x1b7a,
+ 0x2039, 0x0000, 0x20a9, 0x0080, 0xa08e, 0x0002, 0x0040, 0x1b7a,
+ 0x0078, 0x1b93, 0x1078, 0x18b4, 0x2d00, 0xa088, 0x0002, 0x2091,
+ 0x8000, 0x2168, 0x682b, 0x0000, 0x682f, 0x0000, 0x2104, 0xa084,
+ 0xffde, 0x200a, 0x2100, 0xa088, 0x0010, 0x2091, 0x8001, 0x0070,
+ 0x1b93, 0x0078, 0x1b7f, 0x1078, 0x1896, 0x007c, 0x78c8, 0xa06d,
+ 0x00c0, 0x1ba1, 0x2c00, 0x78ca, 0x78ce, 0x609f, 0x0000, 0x0078,
+ 0x1bad, 0x2c00, 0x689e, 0x609f, 0x0000, 0x78ca, 0x2d00, 0x6002,
+ 0x78cc, 0xad06, 0x00c0, 0x1bad, 0x6002, 0x78c4, 0x8001, 0x78c6,
+ 0x00c0, 0x1bb9, 0x78d0, 0xa084, 0x0000, 0x78d2, 0x78cc, 0x2060,
+ 0xa006, 0x007c, 0xa02e, 0x2530, 0x611c, 0x61a2, 0xa184, 0xc1ff,
+ 0x601e, 0xa184, 0x0060, 0x0040, 0x1bc9, 0x0e7e, 0x1078, 0x330a,
+ 0x0e7f, 0x6596, 0x669a, 0x6714, 0x1078, 0x18b4, 0x2091, 0x8000,
+ 0x6808, 0xa084, 0x0001, 0x0040, 0x1be5, 0x2091, 0x8001, 0x1078,
+ 0x1903, 0x2091, 0x8000, 0x1078, 0x1a14, 0x2091, 0x8001, 0x78cb,
+ 0x0000, 0x78cf, 0x0000, 0x0078, 0x1c1f, 0x6024, 0xa096, 0x0001,
+ 0x00c0, 0x1bec, 0x8000, 0x6026, 0x6a10, 0x6814, 0x2091, 0x8001,
+ 0xa202, 0x0048, 0x1bfb, 0x0040, 0x1bfb, 0x2039, 0x0200, 0x1078,
+ 0x1c20, 0x0078, 0x1c1f, 0x2c08, 0x2091, 0x8000, 0x6800, 0xa065,
+ 0x0040, 0x1c03, 0x6102, 0x6902, 0x00c0, 0x1c07, 0x6906, 0x2160,
+ 0x6003, 0x0000, 0x6810, 0x8000, 0x6812, 0x2091, 0x8001, 0x6808,
+ 0xa08c, 0x0040, 0x0040, 0x1c19, 0xa086, 0x0040, 0x680a, 0x1078,
+ 0x1912, 0x1078, 0x1cf6, 0x78cf, 0x0000, 0x78cb, 0x0000, 0x007c,
+ 0x6008, 0xa705, 0x600a, 0x2091, 0x8000, 0x1078, 0x1a14, 0x2091,
+ 0x8001, 0x78cc, 0xa065, 0x0040, 0x1c33, 0x609c, 0x78ce, 0x609f,
+ 0x0000, 0x0078, 0x1c23, 0x78cb, 0x0000, 0x78cf, 0x0000, 0x007c,
+ 0x7988, 0x788c, 0x8000, 0xa10a, 0x00c8, 0x1c3f, 0xa006, 0x788e,
+ 0x70d2, 0x7804, 0xa005, 0x0040, 0x1c4d, 0x8001, 0x7806, 0x00c0,
+ 0x1c4d, 0x0068, 0x1c4d, 0x2091, 0x4080, 0x007c, 0x2039, 0x1c66,
+ 0x0078, 0x1c54, 0x2039, 0x1c6c, 0x2704, 0xa005, 0x0040, 0x1c65,
+ 0xac00, 0x2068, 0x6b08, 0x6c0c, 0x6910, 0x6a14, 0x690a, 0x6a0e,
+ 0x6b12, 0x6c16, 0x8738, 0x0078, 0x1c54, 0x007c, 0x0003, 0x0009,
+ 0x000f, 0x0015, 0x001b, 0x0000, 0x0015, 0x001b, 0x0000, 0x0068,
+ 0x1c87, 0x2029, 0x0000, 0x7884, 0xa065, 0x0040, 0x1c82, 0x1078,
+ 0x1c88, 0x0040, 0x1c82, 0x1078, 0x1c99, 0x00c0, 0x1c82, 0x8528,
+ 0x0078, 0x1c73, 0x85ff, 0x0040, 0x1c87, 0x2091, 0x4080, 0x007c,
+ 0x7ba4, 0x79a8, 0x70d4, 0x007e, 0x007f, 0xa102, 0x00c0, 0x1c93,
+ 0x2300, 0xa005, 0x007c, 0x0048, 0x1c97, 0xa302, 0x007c, 0x8002,
+ 0x007c, 0x2091, 0x8000, 0x2071, 0x0020, 0x7004, 0xa005, 0x00c0,
+ 0x1cdd, 0x7008, 0x7208, 0xa206, 0x00c0, 0x1cdd, 0xa286, 0x0008,
+ 0x00c0, 0x1cdd, 0x2071, 0x0010, 0x1078, 0x1ce2, 0x2009, 0x001c,
+ 0x6028, 0xa005, 0x0040, 0x1cb6, 0x2009, 0x0040, 0x1078, 0x181d,
+ 0x0040, 0x1ccf, 0x78bc, 0x8000, 0x78be, 0xa086, 0x0002, 0x00c0,
+ 0x1cdd, 0x2091, 0x8000, 0x78d7, 0x0003, 0x78bf, 0x0000, 0x78c0,
+ 0xa085, 0x0300, 0x78c2, 0x2091, 0x8001, 0x0078, 0x1cdd, 0x78bf,
+ 0x0000, 0x1078, 0x1a3c, 0x79a4, 0x78a8, 0x8000, 0xa10a, 0x00c8,
+ 0x1cda, 0xa006, 0x78aa, 0x70d6, 0xa006, 0x2071, 0x0010, 0x2091,
+ 0x8001, 0x007c, 0x8107, 0x8004, 0x8004, 0x7ab0, 0x7bac, 0x7cb8,
+ 0x7db4, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000,
+ 0x007c, 0x2009, 0x3968, 0x2091, 0x8000, 0x200a, 0x0f7e, 0x2079,
+ 0x0100, 0x2009, 0x3940, 0x2091, 0x8000, 0x2104, 0xa086, 0x0000,
+ 0x00c0, 0x1d11, 0x2009, 0x3912, 0x2104, 0xa005, 0x00c0, 0x1d11,
+ 0x7830, 0xa084, 0x00c0, 0x00c0, 0x1d11, 0x0018, 0x1d11, 0x781b,
+ 0x0045, 0x2091, 0x8001, 0x0f7f, 0x007c, 0x127e, 0x2091, 0x2300,
+ 0x2071, 0x3940, 0x2079, 0x0100, 0x784b, 0x000f, 0x2019, 0x3205,
+ 0x20a1, 0x012b, 0x2304, 0xa005, 0x0040, 0x1d2f, 0x789a, 0x8318,
+ 0x23ac, 0x8318, 0x2398, 0x53a6, 0x3318, 0x0078, 0x1d22, 0x789b,
+ 0x0020, 0x20a9, 0x0010, 0x78af, 0x0000, 0x78af, 0x0020, 0x0070,
+ 0x1d3b, 0x0078, 0x1d33, 0x7003, 0x0000, 0x1078, 0x1e40, 0x7004,
+ 0xa084, 0x000f, 0xa085, 0x6280, 0x7806, 0x780f, 0x9200, 0x7843,
+ 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008, 0x7047, 0x397f, 0x7043,
+ 0x0000, 0x127f, 0x2000, 0x007c, 0xa18c, 0x000f, 0x2011, 0x0101,
+ 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012, 0x1078, 0x1e40, 0x007c,
+ 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b, 0x0070, 0x1d69, 0x0078,
+ 0x1d64, 0xa18c, 0x0e00, 0x2204, 0xa084, 0xf1ff, 0xa105, 0x2012,
+ 0x007c, 0x2009, 0x0101, 0x20a9, 0x0005, 0x8213, 0x0070, 0x1d7a,
+ 0x0078, 0x1d75, 0xa294, 0x00e0, 0x2104, 0xa084, 0xff1f, 0xa205,
+ 0x200a, 0x007c, 0x2011, 0x0101, 0x20a9, 0x000c, 0x810b, 0x0070,
+ 0x1d8b, 0x0078, 0x1d86, 0xa18c, 0xf000, 0x2204, 0xa084, 0x0fff,
+ 0xa105, 0x2012, 0x007c, 0x2011, 0x0102, 0x2204, 0xa084, 0xffcf,
+ 0xa105, 0x2012, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e,
+ 0x2061, 0x0100, 0x609a, 0x62ac, 0x63ac, 0x0c7f, 0x007c, 0x8103,
+ 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4,
+ 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080,
+ 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0xa085, 0x0020,
+ 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0020, 0x0c7e,
+ 0x2061, 0x0100, 0x609a, 0x60a4, 0x62ae, 0x2010, 0x60a4, 0x63ae,
+ 0x2018, 0x0c7f, 0x007c, 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040,
+ 0x1e1c, 0x2061, 0x4380, 0x1078, 0x1e22, 0x0040, 0x1e06, 0x20a9,
+ 0x0000, 0x2061, 0x4280, 0x0c7e, 0x1078, 0x1e22, 0x0040, 0x1df0,
+ 0x0c7f, 0x8c60, 0x0070, 0x1dee, 0x0078, 0x1de3, 0x0078, 0x1e1c,
+ 0x007f, 0xa082, 0x4280, 0x2071, 0x3940, 0x70ba, 0x6020, 0xa085,
+ 0x0800, 0x6022, 0x2091, 0x8001, 0x71b6, 0x2001, 0x0004, 0x70a2,
+ 0x70c7, 0x000f, 0x1078, 0x1cf1, 0x0078, 0x1e18, 0x2071, 0x3940,
+ 0x6020, 0xa085, 0x0800, 0x6022, 0x2091, 0x8001, 0x71b6, 0x2c00,
+ 0x70be, 0x2001, 0x0006, 0x70a2, 0x70c7, 0x000f, 0x1078, 0x1cf1,
+ 0x2001, 0x0000, 0x0078, 0x1e1e, 0x2001, 0x0001, 0xa005, 0x0e7f,
+ 0x0c7f, 0x007c, 0x2091, 0x8000, 0x2c04, 0xa005, 0x0040, 0x1e3b,
+ 0x2060, 0x6010, 0xa306, 0x00c0, 0x1e38, 0x600c, 0xa206, 0x00c0,
+ 0x1e38, 0x6014, 0xa106, 0x00c0, 0x1e38, 0xa006, 0x0078, 0x1e3f,
+ 0x6000, 0x0078, 0x1e25, 0xa085, 0x0001, 0x2091, 0x8001, 0x007c,
+ 0x2011, 0x3941, 0x220c, 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204,
+ 0xa084, 0x0100, 0x0040, 0x1e56, 0x2021, 0xff04, 0x2122, 0x810b,
+ 0x810b, 0x810b, 0x810b, 0xa18d, 0x0f00, 0x2104, 0x007c, 0x0e7e,
+ 0x68e4, 0xa08c, 0x0020, 0x0040, 0x1eaa, 0xa084, 0x0006, 0x00c0,
+ 0x1eaa, 0x6014, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
+ 0xa0f0, 0x3a00, 0x7004, 0xa084, 0x000a, 0x00c0, 0x1eaa, 0x7108,
+ 0xa194, 0xff00, 0x0040, 0x1eaa, 0xa18c, 0x00ff, 0x2001, 0x000c,
+ 0xa106, 0x0040, 0x1e91, 0x2001, 0x0012, 0xa106, 0x0040, 0x1e95,
+ 0x2001, 0x0014, 0xa106, 0x0040, 0x1e99, 0x2001, 0x0019, 0xa106,
+ 0x0040, 0x1e9d, 0x2001, 0x0032, 0xa106, 0x0040, 0x1ea1, 0x0078,
+ 0x1ea5, 0x2009, 0x0012, 0x0078, 0x1ea7, 0x2009, 0x0014, 0x0078,
+ 0x1ea7, 0x2009, 0x0019, 0x0078, 0x1ea7, 0x2009, 0x0020, 0x0078,
+ 0x1ea7, 0x2009, 0x003f, 0x0078, 0x1ea7, 0x2011, 0x0000, 0x2100,
+ 0xa205, 0x700a, 0x0e7f, 0x007c, 0x2071, 0x0010, 0x70ca, 0x007f,
+ 0x70c6, 0x70c3, 0x8002, 0x2071, 0x0000, 0x701b, 0x0001, 0x2091,
+ 0x4080, 0x0078, 0x1eb9, 0x107e, 0x007e, 0x127e, 0x2091, 0x2300,
+ 0x7f3c, 0x7e58, 0x7c30, 0x7d38, 0x2009, 0x3974, 0x78a0, 0x200a,
+ 0x8108, 0x250a, 0x8108, 0x240a, 0x8108, 0x260a, 0x8108, 0x270a,
+ 0xa594, 0x003f, 0xa484, 0x4000, 0x0040, 0x1edc, 0xa784, 0x007c,
+ 0x00c0, 0x318f, 0x1078, 0x1eac, 0xa49c, 0x000f, 0xa382, 0x0004,
+ 0x0050, 0x1ee4, 0x1078, 0x1eac, 0x8507, 0xa084, 0x000f, 0x0079,
+ 0x1ee9, 0x236e, 0x240d, 0x242e, 0x2699, 0x28dd, 0x293b, 0x2984,
+ 0x29f0, 0x2a8d, 0x2b1a, 0x1f11, 0x1ef9, 0x21c3, 0x2288, 0x28bc,
+ 0x1ef9, 0x1078, 0x1eac, 0x0018, 0x1ec0, 0x127f, 0x2091, 0x8001,
+ 0x007f, 0x107f, 0x007c, 0x7003, 0x0000, 0x703f, 0x0000, 0x7030,
+ 0xa005, 0x0040, 0x1f0d, 0x7033, 0x0000, 0x1078, 0x316a, 0x0018,
+ 0x1ec0, 0x2009, 0x390f, 0x200b, 0x0000, 0x705c, 0xa005, 0x00c0,
+ 0x1fe2, 0x70a0, 0xa084, 0x0007, 0x0079, 0x1f1e, 0x2005, 0x1f26,
+ 0x1f34, 0x1f51, 0x1f73, 0x1fc0, 0x1f99, 0x1f26, 0x7808, 0xa084,
+ 0xfffd, 0x780a, 0x2009, 0x0047, 0x1078, 0x27c1, 0x00c0, 0x1f32,
+ 0x7003, 0x0004, 0x0078, 0x1efb, 0x1078, 0x3151, 0x00c0, 0x1f4f,
+ 0x70b4, 0x8007, 0x7882, 0x789b, 0x0010, 0x78ab, 0x000c, 0x789b,
+ 0x0060, 0x78ab, 0x0001, 0x785b, 0x0004, 0x2009, 0x00fb, 0x1078,
+ 0x27bf, 0x00c0, 0x1f4f, 0x7003, 0x0004, 0x70c7, 0x000f, 0x0078,
+ 0x1efb, 0x1078, 0x3151, 0x00c0, 0x1f71, 0x71b4, 0x8107, 0x7882,
+ 0x789b, 0x0010, 0xa18c, 0x0007, 0xa18d, 0x00c0, 0x79aa, 0x78ab,
+ 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009,
+ 0x00fb, 0x1078, 0x27bf, 0x00c0, 0x1f71, 0x7003, 0x0004, 0x70c7,
+ 0x000f, 0x0078, 0x1efb, 0x1078, 0x3151, 0x00c0, 0x1f97, 0x71b4,
+ 0x8107, 0x7882, 0x789b, 0x0010, 0xa18c, 0x0007, 0xa18d, 0x00c0,
+ 0x79aa, 0x78ab, 0x0020, 0x71b8, 0x79aa, 0x78ab, 0x000d, 0x789b,
+ 0x0060, 0x78ab, 0x0004, 0x785b, 0x0004, 0x2009, 0x00fb, 0x1078,
+ 0x27bf, 0x00c0, 0x1f97, 0x7003, 0x0004, 0x70c7, 0x000f, 0x0078,
+ 0x1efb, 0x1078, 0x3151, 0x00c0, 0x1fbe, 0x71b4, 0x8107, 0x7882,
+ 0x789b, 0x0010, 0xa18c, 0x0007, 0xa18d, 0x00c0, 0x79aa, 0x78ab,
+ 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009,
+ 0x00fb, 0x1078, 0x27bf, 0x00c0, 0x1fbe, 0x70bc, 0x70bf, 0x0000,
+ 0x2068, 0x703e, 0x7003, 0x0002, 0x70c7, 0x000f, 0x0078, 0x1efb,
+ 0x1078, 0x3151, 0x00c0, 0x1efb, 0x70bc, 0x2068, 0x1078, 0x31f3,
+ 0x789b, 0x0010, 0x6814, 0xa084, 0x0007, 0xa085, 0x0080, 0x007e,
+ 0x007f, 0x78aa, 0x6e1c, 0x067e, 0x067f, 0x2041, 0x0001, 0x70c0,
+ 0xa084, 0x0400, 0x2001, 0x0004, 0x0040, 0x1fe0, 0x2001, 0x0006,
+ 0x0078, 0x20e1, 0x1078, 0x3151, 0x00c0, 0x1efb, 0x789b, 0x0010,
+ 0x705c, 0x2068, 0x1078, 0x31f3, 0x6f14, 0x1078, 0x3099, 0x6008,
+ 0xa085, 0x0010, 0x600a, 0xad80, 0x0009, 0x2003, 0x0005, 0x6814,
+ 0xa084, 0x0007, 0xa085, 0x0080, 0x78aa, 0x2031, 0x0020, 0x2041,
+ 0x0001, 0x2001, 0x0003, 0x0078, 0x20e1, 0x0018, 0x1ec0, 0x7440,
+ 0xa485, 0x0000, 0x0040, 0x201f, 0xa080, 0x3980, 0x2030, 0x7144,
+ 0x8108, 0xa12a, 0x0048, 0x2016, 0x2009, 0x3980, 0x2164, 0x6504,
+ 0x85ff, 0x00c0, 0x202c, 0x8421, 0x00c0, 0x2010, 0x7146, 0x7003,
+ 0x0000, 0x703f, 0x0000, 0x0078, 0x1efb, 0x7640, 0xa6b0, 0x3980,
+ 0x7144, 0x2600, 0x0078, 0x201b, 0x7146, 0x2568, 0x2558, 0x753e,
+ 0x2c50, 0x6708, 0x7736, 0xa784, 0x013f, 0x0040, 0x2059, 0xa784,
+ 0x0021, 0x00c0, 0x2029, 0xa784, 0x0002, 0x0040, 0x2046, 0xa784,
+ 0x0004, 0x0040, 0x2029, 0xa7bc, 0xfffb, 0x670a, 0xa784, 0x0008,
+ 0x00c0, 0x2029, 0xa784, 0x0010, 0x00c0, 0x2029, 0xa784, 0x0100,
+ 0x0040, 0x2059, 0x6018, 0xa005, 0x00c0, 0x2029, 0xa7bc, 0xfeff,
+ 0x670a, 0x6823, 0x0000, 0x6e1c, 0xa684, 0x000e, 0x6118, 0x0040,
+ 0x2069, 0x601c, 0xa102, 0x0048, 0x206c, 0x0040, 0x206c, 0x0078,
+ 0x2025, 0x81ff, 0x00c0, 0x2025, 0xa784, 0x0080, 0x00c0, 0x2072,
+ 0x700c, 0x6022, 0x1078, 0x31f3, 0x0018, 0x1ec0, 0x789b, 0x0010,
+ 0xa046, 0x1078, 0x3151, 0x00c0, 0x1efb, 0x6b14, 0xa39c, 0x0007,
+ 0xa39d, 0x00c0, 0x704c, 0xa084, 0x8000, 0x0040, 0x208b, 0xa684,
+ 0x0001, 0x0040, 0x208d, 0xa39c, 0xffbf, 0xa684, 0x0010, 0x0040,
+ 0x2093, 0xa39d, 0x0020, 0x7baa, 0x8840, 0xa684, 0x000e, 0x00c0,
+ 0x209e, 0xa7bd, 0x0010, 0x670a, 0x0078, 0x20df, 0x714c, 0xa18c,
+ 0x0800, 0x0040, 0x2cfc, 0x2011, 0x0021, 0x8004, 0x8004, 0x0048,
+ 0x20b5, 0x2011, 0x0022, 0x8004, 0x0048, 0x20b5, 0x2011, 0x0020,
+ 0x8004, 0x0048, 0x20b5, 0x0040, 0x20df, 0x7aaa, 0x8840, 0x1078,
+ 0x316a, 0x6a14, 0x610c, 0x8108, 0xa18c, 0x00ff, 0xa1e0, 0x4280,
+ 0x2c64, 0x8cff, 0x0040, 0x20d6, 0x6014, 0xa206, 0x00c0, 0x20c0,
+ 0x60b8, 0x8001, 0x60ba, 0x00c0, 0x20bb, 0x0c7e, 0x2a60, 0x6008,
+ 0xa085, 0x0100, 0x600a, 0x0c7f, 0x0078, 0x2005, 0x1078, 0x3151,
+ 0x00c0, 0x1efb, 0x2a60, 0x610e, 0x79aa, 0x8840, 0x712e, 0x2001,
+ 0x0001, 0x007e, 0x7150, 0xa184, 0x0018, 0x0040, 0x20fc, 0xa184,
+ 0x0010, 0x0040, 0x20ef, 0x1078, 0x2ee3, 0x00c0, 0x211f, 0xa184,
+ 0x0008, 0x0040, 0x20fc, 0x69a0, 0xa184, 0x0600, 0x00c0, 0x20fc,
+ 0x1078, 0x2ddf, 0x0078, 0x211f, 0x69a0, 0xa184, 0x0800, 0x0040,
+ 0x2113, 0x0c7e, 0x027e, 0x2960, 0x6000, 0xa085, 0x2000, 0x6002,
+ 0x6104, 0xa18d, 0x0010, 0x6106, 0x027f, 0x0c7f, 0x1078, 0x2ee3,
+ 0x00c0, 0x211f, 0x69a0, 0xa184, 0x0200, 0x0040, 0x211b, 0x1078,
+ 0x2e2e, 0x0078, 0x211f, 0xa184, 0x0400, 0x00c0, 0x20f8, 0x69a0,
+ 0xa184, 0x1000, 0x0040, 0x212a, 0x6914, 0xa18c, 0xff00, 0x810f,
+ 0x1078, 0x1da7, 0x007f, 0x7002, 0xa68c, 0x00e0, 0xa684, 0x0060,
+ 0x0040, 0x2138, 0xa086, 0x0060, 0x00c0, 0x2138, 0xa18d, 0x4000,
+ 0x88ff, 0x0040, 0x213d, 0xa18d, 0x0004, 0x795a, 0x69b6, 0x789b,
+ 0x0060, 0x2800, 0x78aa, 0x789b, 0x0061, 0x6818, 0xa08d, 0x8000,
+ 0xa084, 0x7fff, 0x691a, 0xa68c, 0x0080, 0x0040, 0x215c, 0x70cb,
+ 0x0000, 0xa08a, 0x000d, 0x0050, 0x215a, 0xa08a, 0x000c, 0x71ca,
+ 0x2001, 0x000c, 0x800c, 0x71ce, 0x78aa, 0x8008, 0x810c, 0x0040,
+ 0x2d07, 0xa18c, 0x00f8, 0x00c0, 0x2d07, 0x157e, 0x137e, 0x147e,
+ 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b,
+ 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882,
+ 0x6d94, 0x7dd6, 0x7dde, 0x6e98, 0x7ed2, 0x7eda, 0x7830, 0xa084,
+ 0x00c0, 0x00c0, 0x2185, 0x0098, 0x218d, 0x6008, 0xa084, 0xffef,
+ 0x600a, 0x1078, 0x316a, 0x0078, 0x1f03, 0x7200, 0xa284, 0x0007,
+ 0xa086, 0x0001, 0x00c0, 0x219a, 0x781b, 0x004a, 0x1078, 0x316a,
+ 0x0078, 0x21ab, 0x6ab4, 0xa295, 0x2000, 0x7a5a, 0x781b, 0x004a,
+ 0x1078, 0x316a, 0x7200, 0x2500, 0xa605, 0x0040, 0x21ab, 0xa284,
+ 0x0007, 0x1079, 0x21b9, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0,
+ 0x1efb, 0x6018, 0x8000, 0x601a, 0xad80, 0x0009, 0x7032, 0x0078,
+ 0x1efb, 0x21c1, 0x3571, 0x3571, 0x3560, 0x3571, 0x21c1, 0x3560,
+ 0x21c1, 0x1078, 0x1eac, 0x7808, 0xa084, 0xfffd, 0x780a, 0x0f7e,
+ 0x2079, 0x3900, 0x78c0, 0x0f7f, 0xa084, 0x0001, 0x0040, 0x21e9,
+ 0x70a0, 0xa086, 0x0001, 0x00c0, 0x21d8, 0x70a2, 0x0078, 0x226c,
+ 0x70a0, 0xa086, 0x0005, 0x00c0, 0x21e7, 0x70bc, 0x2068, 0x681b,
+ 0x0004, 0x6817, 0x0000, 0x6820, 0xa085, 0x0008, 0x6822, 0x70a3,
+ 0x0000, 0x157e, 0x2011, 0x0004, 0x71a0, 0xa186, 0x0001, 0x0040,
+ 0x2207, 0xa186, 0x0007, 0x00c0, 0x21fb, 0x2009, 0x3935, 0x200b,
+ 0x0005, 0x0078, 0x2207, 0x2009, 0x3913, 0x2104, 0x2009, 0x3912,
+ 0x200a, 0x2009, 0x3935, 0x200b, 0x0001, 0x0078, 0x2209, 0x70a3,
+ 0x0000, 0x1078, 0x32f5, 0x20a9, 0x0010, 0x2039, 0x0000, 0x1078,
+ 0x2f9a, 0xa7b8, 0x0100, 0x0070, 0x2217, 0x0078, 0x220f, 0x7000,
+ 0x0079, 0x221a, 0x2248, 0x2231, 0x2231, 0x2224, 0x2248, 0x2248,
+ 0x2248, 0x2222, 0x1078, 0x1eac, 0x2021, 0x3957, 0x2404, 0xa005,
+ 0x0040, 0x2248, 0xad06, 0x00c0, 0x2231, 0x6800, 0x2022, 0x0078,
+ 0x2241, 0x6820, 0xa084, 0x0001, 0x00c0, 0x223d, 0x6f14, 0x1078,
+ 0x3099, 0x1078, 0x2cc9, 0x0078, 0x2241, 0x7054, 0x2060, 0x6800,
+ 0x6002, 0x6a1a, 0x6820, 0xa085, 0x0008, 0x6822, 0x1078, 0x1a26,
+ 0x2021, 0x4380, 0x1078, 0x2272, 0x2021, 0x3957, 0x1078, 0x2272,
+ 0x20a9, 0x0000, 0x2021, 0x4280, 0x1078, 0x2272, 0x8420, 0x0070,
+ 0x225b, 0x0078, 0x2254, 0x20a9, 0x0080, 0x2061, 0x3a80, 0x6018,
+ 0x6110, 0xa102, 0x6012, 0x601b, 0x0000, 0xace0, 0x0010, 0x0070,
+ 0x226b, 0x0078, 0x225f, 0x157f, 0x7003, 0x0000, 0x703f, 0x0000,
+ 0x0078, 0x1efb, 0x047e, 0x2404, 0xa005, 0x0040, 0x2284, 0x2068,
+ 0x6800, 0x007e, 0x6a1a, 0x6820, 0xa085, 0x0008, 0x6822, 0x1078,
+ 0x1a26, 0x007f, 0x0078, 0x2274, 0x047f, 0x2023, 0x0000, 0x007c,
+ 0xa282, 0x0003, 0x0050, 0x228e, 0x1078, 0x1eac, 0x2300, 0x0079,
+ 0x2291, 0x2294, 0x2311, 0x232e, 0xa282, 0x0002, 0x0040, 0x229a,
+ 0x1078, 0x1eac, 0x70a0, 0x70a3, 0x0000, 0x70c7, 0x0000, 0x0079,
+ 0x22a1, 0x22a9, 0x22a9, 0x22ab, 0x22e9, 0x2d0d, 0x22a9, 0x22e9,
+ 0x22a9, 0x1078, 0x1eac, 0x77b4, 0x1078, 0x2f9a, 0x77b4, 0xa7bc,
+ 0x0f00, 0x1078, 0x3099, 0x6018, 0xa005, 0x0040, 0x22e0, 0x2021,
+ 0x4380, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x2349, 0x0040,
+ 0x22e0, 0x157e, 0x20a9, 0x0000, 0x2021, 0x4280, 0x047e, 0x2009,
+ 0x0004, 0x2011, 0x0010, 0x1078, 0x2349, 0x047f, 0x0040, 0x22d5,
+ 0x8420, 0x0070, 0x22d5, 0x0078, 0x22c6, 0x157f, 0x2021, 0x3957,
+ 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x2349, 0x0040, 0x22e0,
+ 0x8738, 0xa784, 0x0007, 0x00c0, 0x22b1, 0x0078, 0x1f03, 0x0078,
+ 0x1f03, 0x77b4, 0x1078, 0x3099, 0x6018, 0xa005, 0x0040, 0x230f,
+ 0x2021, 0x4380, 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x2349,
+ 0x0040, 0x230f, 0x157e, 0x20a9, 0x0000, 0x2021, 0x4280, 0x047e,
+ 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x2349, 0x047f, 0x0040,
+ 0x230e, 0x8420, 0x0070, 0x230e, 0x0078, 0x22ff, 0x157f, 0x0078,
+ 0x1f03, 0x2200, 0x0079, 0x2314, 0x2317, 0x2319, 0x2319, 0x1078,
+ 0x1eac, 0x2009, 0x0012, 0x70a0, 0xa086, 0x0002, 0x0040, 0x2322,
+ 0x2009, 0x000e, 0x6818, 0xa084, 0x8000, 0x0040, 0x2328, 0x691a,
+ 0x70a3, 0x0000, 0x70a7, 0x0001, 0x0078, 0x311c, 0x2200, 0x0079,
+ 0x2331, 0x2336, 0x2319, 0x2334, 0x1078, 0x1eac, 0x1078, 0x27ce,
+ 0x7000, 0xa086, 0x0001, 0x00c0, 0x2c9f, 0x1078, 0x2cdf, 0x6008,
+ 0xa084, 0xffef, 0x600a, 0x1078, 0x2c92, 0x0040, 0x2c9f, 0x0078,
+ 0x2005, 0x2404, 0xa005, 0x0040, 0x236a, 0x2068, 0x2d04, 0x007e,
+ 0x6814, 0xa706, 0x0040, 0x2358, 0x2d20, 0x007f, 0x0078, 0x234a,
+ 0x007f, 0x2022, 0x691a, 0x6820, 0xa205, 0x6822, 0x1078, 0x1a26,
+ 0x6010, 0x8001, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078,
+ 0x2cdf, 0x007c, 0xa085, 0x0001, 0x0078, 0x2369, 0x2300, 0x0079,
+ 0x2371, 0x2376, 0x2374, 0x23c2, 0x1078, 0x1eac, 0x78e4, 0xa005,
+ 0x00d0, 0x238a, 0x0018, 0x238a, 0xa084, 0x0007, 0x0079, 0x2380,
+ 0x239b, 0x23a8, 0x238e, 0x2388, 0x3144, 0x3144, 0x2388, 0x23b5,
+ 0x1078, 0x1eac, 0x2001, 0x0003, 0x0078, 0x26ad, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x2395, 0x681b, 0x001d, 0x1078, 0x2f7d, 0x781b,
+ 0x0053, 0x0078, 0x1efb, 0x6818, 0xa084, 0x8000, 0x0040, 0x23a2,
+ 0x681b, 0x001d, 0x1078, 0x2f7d, 0x781b, 0x00de, 0x0078, 0x1efb,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x23af, 0x681b, 0x001d, 0x1078,
+ 0x2f7d, 0x781b, 0x00e5, 0x0078, 0x1efb, 0x6818, 0xa084, 0x8000,
+ 0x0040, 0x23bc, 0x681b, 0x001d, 0x1078, 0x2f7d, 0x781b, 0x009c,
+ 0x0078, 0x1efb, 0xa584, 0x000f, 0x00c0, 0x23e1, 0x1078, 0x27ce,
+ 0x7000, 0x0079, 0x23cb, 0x23d3, 0x23d5, 0x23d3, 0x2c9f, 0x2c9f,
+ 0x2c9f, 0x2c9f, 0x23d3, 0x1078, 0x1eac, 0x1078, 0x2cdf, 0x6008,
+ 0xa084, 0xffef, 0x600a, 0x1078, 0x2c92, 0x0040, 0x2c9f, 0x0078,
+ 0x2005, 0x79e4, 0xa005, 0x00d0, 0x238a, 0x0018, 0x238a, 0xa184,
+ 0x0007, 0x0079, 0x23eb, 0x23fb, 0x2401, 0x23f5, 0x23f3, 0x3144,
+ 0x3144, 0x23f3, 0x313c, 0x1078, 0x1eac, 0x1078, 0x2f85, 0x781b,
+ 0x0053, 0x0078, 0x1efb, 0x1078, 0x2f85, 0x781b, 0x00de, 0x0078,
+ 0x1efb, 0x1078, 0x2f85, 0x781b, 0x00e5, 0x0078, 0x1efb, 0x1078,
+ 0x2f85, 0x781b, 0x009c, 0x0078, 0x1efb, 0x2300, 0x0079, 0x2410,
+ 0x2415, 0x2413, 0x2417, 0x1078, 0x1eac, 0x0078, 0x29f0, 0x681b,
+ 0x0008, 0x78a3, 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x29f0,
+ 0xa184, 0x0007, 0x0079, 0x2424, 0x242c, 0x2401, 0x238e, 0x311c,
+ 0x3144, 0x3144, 0x242c, 0x313c, 0x1078, 0x1eac, 0xa282, 0x0005,
+ 0x0050, 0x2434, 0x1078, 0x1eac, 0x2300, 0x0079, 0x2437, 0x243a,
+ 0x265e, 0x266a, 0x2200, 0x0079, 0x243d, 0x2457, 0x2444, 0x2457,
+ 0x2442, 0x2643, 0x1078, 0x1eac, 0x789b, 0x0018, 0x78a8, 0xa084,
+ 0x00ff, 0xa082, 0x0020, 0x0048, 0x2f69, 0xa08a, 0x0004, 0x00c8,
+ 0x2f69, 0x0079, 0x2453, 0x2f69, 0x2f69, 0x2f69, 0x2f23, 0x789b,
+ 0x0018, 0x79a8, 0xa184, 0x0080, 0x0040, 0x246c, 0xa184, 0x0018,
+ 0x0040, 0x2468, 0x0078, 0x2f69, 0x7000, 0xa005, 0x00c0, 0x2462,
+ 0x2011, 0x0004, 0x0078, 0x2b28, 0xa184, 0x00ff, 0xa08a, 0x0010,
+ 0x00c8, 0x2f69, 0x0079, 0x2474, 0x2486, 0x2484, 0x249e, 0x24a2,
+ 0x255a, 0x2f69, 0x2f69, 0x255c, 0x2f69, 0x2f69, 0x263f, 0x263f,
+ 0x2f69, 0x2f69, 0x2f69, 0x2641, 0x1078, 0x1eac, 0xa684, 0x1000,
+ 0x0040, 0x2493, 0x2001, 0x0300, 0x8000, 0x8000, 0x783a, 0x781b,
+ 0x0099, 0x0078, 0x1efb, 0x6818, 0xa084, 0x8000, 0x0040, 0x249c,
+ 0x681b, 0x001d, 0x0078, 0x248a, 0x0078, 0x311c, 0x681b, 0x001d,
+ 0x0078, 0x2f75, 0x6920, 0xa184, 0x8000, 0x00c0, 0x24ae, 0x68af,
+ 0x0000, 0x68b3, 0x0000, 0xa18d, 0x8000, 0x6922, 0xa684, 0x1800,
+ 0x00c0, 0x24ed, 0x6820, 0xa084, 0x0001, 0x00c0, 0x24f3, 0x6818,
+ 0xa086, 0x0008, 0x00c0, 0x24be, 0x681b, 0x0000, 0xa684, 0x0400,
+ 0x0040, 0x2556, 0xa684, 0x0080, 0x0040, 0x24e9, 0x70cb, 0x0000,
+ 0x6818, 0xa084, 0x003f, 0xa08a, 0x000d, 0x0050, 0x24e9, 0xa08a,
+ 0x000c, 0x71ca, 0x2001, 0x000c, 0x800c, 0x71ce, 0x789b, 0x0061,
+ 0x78aa, 0x157e, 0x137e, 0x147e, 0x20a1, 0x012b, 0x789b, 0x0000,
+ 0x8000, 0x80ac, 0xad80, 0x000b, 0x2098, 0x53a6, 0x147f, 0x137f,
+ 0x157f, 0x781b, 0x0056, 0x0078, 0x1efb, 0xa684, 0x1000, 0x0040,
+ 0x24f3, 0x0078, 0x1efb, 0xa684, 0x0060, 0x0040, 0x2552, 0xa684,
+ 0x0800, 0x0040, 0x2552, 0xa684, 0x8000, 0x00c0, 0x2503, 0x69b0,
+ 0x6aac, 0x0078, 0x251d, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb6, 0x789b,
+ 0x0074, 0x7aac, 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x2510, 0x8000,
+ 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100, 0xa302,
+ 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0xa684, 0x4000, 0x0040,
+ 0x2525, 0xa6b4, 0xbfff, 0x7e5a, 0x6eb6, 0xa006, 0x1078, 0x362f,
+ 0x6ab0, 0x69ac, 0x6c98, 0x6b94, 0x2200, 0xa105, 0x0040, 0x2534,
+ 0x2200, 0xa422, 0x2100, 0xa31b, 0x6caa, 0x7cd2, 0x6ba6, 0x7bd6,
+ 0x2300, 0xa405, 0x00c0, 0x2544, 0xa6b5, 0x4000, 0x7e5a, 0x6eb6,
+ 0x781b, 0x0065, 0x0078, 0x1efb, 0x781b, 0x0065, 0x2200, 0xa115,
+ 0x00c0, 0x254e, 0x1078, 0x3571, 0x0078, 0x1efb, 0x1078, 0x35a6,
+ 0x0078, 0x1efb, 0x781b, 0x0068, 0x0078, 0x1efb, 0x781b, 0x0056,
+ 0x0078, 0x1efb, 0x1078, 0x1eac, 0x0078, 0x25b1, 0x6920, 0xa184,
+ 0x0100, 0x0040, 0x2570, 0xa18c, 0xfeff, 0x6922, 0x0c7e, 0x7048,
+ 0x2060, 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x25a0,
+ 0xa184, 0x0200, 0x0040, 0x25a0, 0xa18c, 0xfdff, 0x6922, 0x0c7e,
+ 0x7048, 0x2060, 0x6004, 0xa084, 0xffef, 0x6006, 0x2008, 0x2c48,
+ 0x0c7f, 0xa184, 0x0008, 0x0040, 0x25a0, 0x1078, 0x3095, 0x1078,
+ 0x2ddf, 0x88ff, 0x0040, 0x25a0, 0x789b, 0x0060, 0x2800, 0x78aa,
+ 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x259c,
+ 0x781b, 0x0053, 0x0078, 0x1efb, 0x781b, 0x0067, 0x0078, 0x1efb,
+ 0x7e58, 0xa684, 0x0400, 0x00c0, 0x25a9, 0x781b, 0x0056, 0x0078,
+ 0x1efb, 0x781b, 0x0068, 0x0078, 0x1efb, 0x0078, 0x2f6f, 0x0078,
+ 0x2f6f, 0x2019, 0x0000, 0x7990, 0xa18c, 0x0007, 0x0040, 0x25af,
+ 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff, 0xa286, 0x0001, 0x00c0,
+ 0x25d4, 0x2300, 0x7ca8, 0xa400, 0x2018, 0xa102, 0x0040, 0x25cc,
+ 0x0048, 0x25cc, 0x0078, 0x25ce, 0x0078, 0x255e, 0x24a8, 0x7aa8,
+ 0x00f0, 0x25ce, 0x0078, 0x25ba, 0xa284, 0x00f0, 0xa086, 0x0020,
+ 0x00c0, 0x2630, 0x8318, 0x8318, 0x2300, 0xa102, 0x0040, 0x25e4,
+ 0x0048, 0x25e4, 0x0078, 0x262d, 0xa286, 0x0023, 0x0040, 0x25af,
+ 0x681c, 0xa084, 0xfff1, 0x681e, 0x7e58, 0xa684, 0xfff1, 0xa085,
+ 0x0010, 0x2030, 0x7e5a, 0x6008, 0xa085, 0x0010, 0x600a, 0x0c7e,
+ 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0010,
+ 0x0040, 0x2608, 0x1078, 0x3095, 0x1078, 0x2ee3, 0x0078, 0x2617,
+ 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48, 0x0c7f, 0xa184,
+ 0x0008, 0x0040, 0x25a0, 0x1078, 0x3095, 0x1078, 0x2ddf, 0x88ff,
+ 0x0040, 0x25a0, 0x789b, 0x0060, 0x2800, 0x78aa, 0xa6b5, 0x0004,
+ 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2629, 0x781b, 0x0053, 0x0078,
+ 0x1efb, 0x781b, 0x0067, 0x0078, 0x1efb, 0x7aa8, 0x0078, 0x25ba,
+ 0x8318, 0x2300, 0xa102, 0x0040, 0x2639, 0x0048, 0x2639, 0x0078,
+ 0x25ba, 0xa284, 0x0080, 0x00c0, 0x2f75, 0x0078, 0x2f6f, 0x0078,
+ 0x2f75, 0x0078, 0x2f69, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff,
+ 0xa08e, 0x0001, 0x0040, 0x264e, 0x1078, 0x1eac, 0x7aa8, 0xa294,
+ 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a, 0x0004, 0x00c8, 0x2f69,
+ 0x0079, 0x265a, 0x2f69, 0x2d32, 0x2f69, 0x2e7e, 0xa282, 0x0000,
+ 0x00c0, 0x2664, 0x1078, 0x1eac, 0x1078, 0x2f7d, 0x781b, 0x0067,
+ 0x0078, 0x1efb, 0xa282, 0x0003, 0x00c0, 0x2670, 0x1078, 0x1eac,
+ 0xa484, 0x8000, 0x00c0, 0x2693, 0x70a0, 0xa005, 0x0040, 0x267a,
+ 0x1078, 0x1eac, 0x6f14, 0x77b6, 0xa7bc, 0x0f00, 0x1078, 0x3099,
+ 0x6008, 0xa085, 0x0021, 0x600a, 0x8738, 0xa784, 0x0007, 0x00c0,
+ 0x267e, 0x1078, 0x2f81, 0x70a3, 0x0002, 0x2009, 0x3935, 0x200b,
+ 0x0009, 0x0078, 0x2695, 0x1078, 0x2f8d, 0x781b, 0x0067, 0x0078,
+ 0x1efb, 0xa282, 0x0004, 0x0050, 0x269f, 0x1078, 0x1eac, 0x2300,
+ 0x0079, 0x26a2, 0x26a5, 0x2781, 0x27a9, 0xa286, 0x0003, 0x0040,
+ 0x26ab, 0x1078, 0x1eac, 0x2001, 0x0000, 0x703a, 0x7000, 0xa084,
+ 0x0007, 0x0079, 0x26b3, 0x26bb, 0x26bd, 0x26bd, 0x2871, 0x28a2,
+ 0x1f03, 0x28a2, 0x26bb, 0x1078, 0x1eac, 0xa684, 0x1000, 0x00c0,
+ 0x26c5, 0x1078, 0x32f5, 0x0040, 0x275b, 0x7868, 0xa08c, 0x00ff,
+ 0x0040, 0x270d, 0xa186, 0x0008, 0x00c0, 0x26dc, 0x1078, 0x2cdf,
+ 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2c92, 0x0040, 0x270d,
+ 0x1078, 0x32f5, 0x0078, 0x26f4, 0xa186, 0x0028, 0x00c0, 0x270d,
+ 0x1078, 0x32f5, 0x6008, 0xa084, 0xffef, 0x600a, 0x6018, 0xa005,
+ 0x0040, 0x26f4, 0x8001, 0x601a, 0xa005, 0x0040, 0x26f4, 0x8001,
+ 0xa005, 0x0040, 0x26f4, 0x601e, 0x6820, 0xa084, 0x0001, 0x0040,
+ 0x1f03, 0x6820, 0xa084, 0xfffe, 0x6822, 0x7054, 0x0c7e, 0x2060,
+ 0x6800, 0x6002, 0x0c7f, 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0,
+ 0x270a, 0x6002, 0x6006, 0x0078, 0x1f03, 0x017e, 0x1078, 0x27ce,
+ 0x017f, 0xa684, 0xdf00, 0x681e, 0x682b, 0x0000, 0x6f14, 0x81ff,
+ 0x0040, 0x275b, 0xa186, 0x0002, 0x00c0, 0x2753, 0xa684, 0x0800,
+ 0x00c0, 0x272a, 0xa684, 0x0060, 0x0040, 0x272a, 0x78d8, 0x7adc,
+ 0x682e, 0x6a32, 0x6820, 0xa084, 0x0800, 0x00c0, 0x275b, 0x8717,
+ 0xa294, 0x000f, 0x8213, 0x8213, 0x8213, 0xa290, 0x3a00, 0xa290,
+ 0x0000, 0x221c, 0x8210, 0x2204, 0xa085, 0x0018, 0x2012, 0x8211,
+ 0xa384, 0x0400, 0x0040, 0x274d, 0x68a0, 0xa084, 0x0100, 0x00c0,
+ 0x274d, 0x1078, 0x2830, 0x0078, 0x1f03, 0x6008, 0xa085, 0x0002,
+ 0x600a, 0x0078, 0x275b, 0xa186, 0x0018, 0x0040, 0x275b, 0xa186,
+ 0x0014, 0x0040, 0x1f03, 0x6916, 0x6818, 0xa084, 0x8000, 0x0040,
+ 0x2763, 0x7038, 0x681a, 0xa68c, 0xdf00, 0x691e, 0x1078, 0x2cd0,
+ 0x1078, 0x2cdf, 0x00c0, 0x2770, 0x6008, 0xa084, 0xffef, 0x600a,
+ 0x6820, 0xa084, 0x0001, 0x00c0, 0x2779, 0x1078, 0x2cc9, 0x0078,
+ 0x277d, 0x7054, 0x2060, 0x6800, 0x6002, 0x1078, 0x1a26, 0x0078,
+ 0x1f03, 0xa282, 0x0004, 0x0048, 0x2787, 0x1078, 0x1eac, 0x2200,
+ 0x0079, 0x278a, 0x2785, 0x278e, 0x2794, 0x278e, 0x1078, 0x2f7d,
+ 0x781b, 0x0067, 0x0078, 0x1efb, 0x7890, 0x8007, 0x8001, 0xa084,
+ 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c, 0x00ff, 0xa186,
+ 0x0003, 0x0040, 0x27a5, 0x0078, 0x2f69, 0x781b, 0x0068, 0x0078,
+ 0x1efb, 0x6820, 0xa085, 0x0004, 0x6822, 0x82ff, 0x00c0, 0x27b4,
+ 0x1078, 0x2f7d, 0x0078, 0x27bb, 0x8211, 0x0040, 0x27b9, 0x1078,
+ 0x1eac, 0x1078, 0x2f8d, 0x781b, 0x0067, 0x0078, 0x1efb, 0x1078,
+ 0x316a, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x27cb, 0x0018, 0x27cb,
+ 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0xa684, 0x0060,
+ 0x00c0, 0x27d8, 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x282f,
+ 0xa684, 0x0800, 0x00c0, 0x27e8, 0x6998, 0x6a94, 0x692e, 0x6a32,
+ 0x7000, 0xa086, 0x0006, 0x0040, 0x27e7, 0x1078, 0x32f5, 0x007c,
+ 0xa684, 0x0020, 0x0040, 0x2802, 0xa684, 0x4000, 0x0040, 0x27f6,
+ 0x682f, 0x0000, 0x6833, 0x0000, 0x0078, 0x27e0, 0x7038, 0xa005,
+ 0x00c0, 0x27fc, 0x703b, 0x0015, 0x79d8, 0x7adc, 0x692e, 0x6a32,
+ 0x0078, 0x27e0, 0xa684, 0x4000, 0x0040, 0x280c, 0x682f, 0x0000,
+ 0x6833, 0x0000, 0x0078, 0x27e0, 0x7038, 0xa005, 0x00c0, 0x2812,
+ 0x703b, 0x0015, 0x79d8, 0x7adc, 0x78d0, 0x80fb, 0x00c8, 0x2819,
+ 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x692e, 0x6a32,
+ 0x2100, 0xa205, 0x00c0, 0x2826, 0x0078, 0x27e0, 0x7000, 0xa086,
+ 0x0006, 0x0040, 0x282f, 0x1078, 0x362f, 0x0078, 0x27e0, 0x007c,
+ 0xa384, 0x0200, 0x0040, 0x2838, 0x6008, 0xa085, 0x0002, 0x600a,
+ 0x681b, 0x0006, 0x6a30, 0x692c, 0x6a3e, 0x6942, 0x682f, 0x0003,
+ 0x6833, 0x0000, 0x6837, 0x0020, 0x6897, 0x0000, 0x689b, 0x0020,
+ 0x7000, 0x0079, 0x284b, 0x2853, 0x2855, 0x285e, 0x2853, 0x2853,
+ 0x2853, 0x2853, 0x2853, 0x1078, 0x1eac, 0x6820, 0xa084, 0x0001,
+ 0x00c0, 0x285e, 0x1078, 0x2cc9, 0x0078, 0x2864, 0x7054, 0x2c50,
+ 0x2060, 0x6800, 0x6002, 0x2a60, 0x2021, 0x3957, 0x2404, 0xa005,
+ 0x0040, 0x286d, 0x2020, 0x0078, 0x2866, 0x2d22, 0x206b, 0x0000,
+ 0x007c, 0x1078, 0x2cd0, 0x1078, 0x2cdf, 0x682b, 0x0000, 0x789b,
+ 0x000e, 0x6f14, 0x6817, 0x0002, 0x1078, 0x366b, 0xa684, 0x0800,
+ 0x0040, 0x2886, 0x691c, 0xa18d, 0x2000, 0x691e, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x2896, 0x7868, 0xa08c, 0x00ff, 0x0040, 0x2894,
+ 0x681b, 0x001e, 0x0078, 0x2896, 0x681b, 0x0000, 0x2021, 0x3957,
+ 0x6800, 0x2022, 0x6a3c, 0x6940, 0x6a32, 0x692e, 0x1078, 0x1a26,
+ 0x0078, 0x1f03, 0x1078, 0x27ce, 0x682b, 0x0000, 0x789b, 0x000e,
+ 0x6f14, 0x1078, 0x316f, 0xa08c, 0x00ff, 0x6916, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x28b5, 0x7038, 0x681a, 0xa68c, 0xdf00, 0x691e,
+ 0x70a3, 0x0000, 0x0078, 0x1f03, 0xa006, 0x1078, 0x32f5, 0x6817,
+ 0x0000, 0x681b, 0x0001, 0xa68c, 0xdf00, 0x691e, 0x682b, 0x0000,
+ 0x7000, 0x0079, 0x28cb, 0x28d3, 0x28d5, 0x28d5, 0x28d7, 0x28d7,
+ 0x28d7, 0x28d7, 0x28d3, 0x1078, 0x1eac, 0x1078, 0x2cdf, 0x6008,
+ 0xa084, 0xffef, 0x600a, 0x0078, 0x2caa, 0x2300, 0x0079, 0x28e0,
+ 0x28e3, 0x28e5, 0x2939, 0x1078, 0x1eac, 0x7000, 0x0079, 0x28e8,
+ 0x28f0, 0x28f2, 0x28f2, 0x290d, 0x28f2, 0x291a, 0x290d, 0x28f0,
+ 0x1078, 0x1eac, 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x2909,
+ 0xa6b4, 0xffdf, 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x681c,
+ 0xa084, 0xffdf, 0x681e, 0x1078, 0x32f5, 0x1078, 0x3571, 0x0078,
+ 0x311c, 0xa684, 0x2000, 0x0040, 0x28fc, 0x6818, 0xa084, 0x8000,
+ 0x0040, 0x291a, 0x681b, 0x0015, 0xa684, 0x4000, 0x0040, 0x291a,
+ 0x681b, 0x0007, 0x2009, 0x391e, 0x210c, 0xa186, 0x0000, 0x0040,
+ 0x292f, 0xa186, 0x0001, 0x0040, 0x2933, 0x2009, 0x3935, 0x200b,
+ 0x000b, 0x70a3, 0x0001, 0x781b, 0x0047, 0x0078, 0x1efb, 0x781b,
+ 0x00df, 0x0078, 0x1efb, 0x2009, 0x3935, 0x200b, 0x000a, 0x0078,
+ 0x1efb, 0x1078, 0x1eac, 0x2300, 0x0079, 0x293e, 0x2941, 0x2943,
+ 0x2976, 0x1078, 0x1eac, 0x7000, 0x0079, 0x2946, 0x294e, 0x2950,
+ 0x2950, 0x296b, 0x2950, 0x2972, 0x296b, 0x294e, 0x1078, 0x1eac,
+ 0xa684, 0x0060, 0xa086, 0x0060, 0x00c0, 0x2967, 0xa6b4, 0xffbf,
+ 0xa6b4, 0xbfff, 0xa6b5, 0x2000, 0x7e5a, 0x681c, 0xa084, 0xffbf,
+ 0x681e, 0x1078, 0x32f5, 0x1078, 0x3571, 0x0078, 0x311c, 0xa684,
+ 0x2000, 0x0040, 0x295a, 0x6818, 0xa084, 0x8000, 0x0040, 0x2972,
+ 0x681b, 0x0007, 0x781b, 0x00e6, 0x0078, 0x1efb, 0x6820, 0xa085,
+ 0x0004, 0x6822, 0x1078, 0x30e7, 0xa6b5, 0x0800, 0x1078, 0x2f7d,
+ 0x781b, 0x0067, 0x0078, 0x1efb, 0x2300, 0x0079, 0x2987, 0x298a,
+ 0x298c, 0x298e, 0x1078, 0x1eac, 0x1078, 0x1eac, 0xa684, 0x0400,
+ 0x00c0, 0x29ae, 0x782b, 0x3009, 0x6920, 0xa18c, 0xfdff, 0xa18c,
+ 0xfeff, 0x6922, 0x789b, 0x0060, 0x78ab, 0x0000, 0xa684, 0xfffb,
+ 0x785a, 0x79e4, 0xa184, 0x0020, 0x00c0, 0x29aa, 0x2001, 0x0014,
+ 0x0078, 0x26ad, 0xa184, 0x0007, 0x0079, 0x29e6, 0x7a90, 0xa294,
+ 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, 0x0040, 0x29e4, 0x789b,
+ 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, 0x29d5, 0x7ba8, 0x7ba8,
+ 0xa386, 0x0001, 0x00c0, 0x29c8, 0x2009, 0xfff7, 0x0078, 0x29ce,
+ 0xa386, 0x0003, 0x00c0, 0x29d5, 0x2009, 0xffef, 0x0c7e, 0x7048,
+ 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab,
+ 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, 0x3009, 0x6920, 0xa18c,
+ 0xfdff, 0xa18c, 0xfeff, 0x6922, 0x0078, 0x311c, 0x239b, 0x23a8,
+ 0x3124, 0x3124, 0x29ee, 0x29ee, 0x29ee, 0x3124, 0x1078, 0x1eac,
+ 0x79e4, 0xa184, 0x0030, 0x00c0, 0x2a06, 0x70a0, 0xa086, 0x0002,
+ 0x00c0, 0x29fe, 0x2011, 0x0002, 0x0078, 0x2288, 0x6818, 0xa085,
+ 0x8000, 0x681a, 0x2001, 0x0014, 0x0078, 0x26ad, 0xa184, 0x0007,
+ 0x0079, 0x2a0a, 0x311c, 0x311c, 0x2a12, 0x311c, 0x3144, 0x3144,
+ 0x311c, 0x311c, 0xa684, 0x0080, 0x0040, 0x2a41, 0x71c8, 0x81ff,
+ 0x0040, 0x2a41, 0xa182, 0x000d, 0x00d0, 0x2a22, 0x70cb, 0x0000,
+ 0x0078, 0x2a27, 0xa182, 0x000c, 0x70ca, 0x2009, 0x000c, 0x789b,
+ 0x0061, 0x79aa, 0x157e, 0x137e, 0x147e, 0x70cc, 0x8114, 0xa210,
+ 0x72ce, 0xa080, 0x000b, 0xad00, 0x2098, 0x20a1, 0x012b, 0x789b,
+ 0x0000, 0x8108, 0x81ac, 0x53a6, 0x147f, 0x137f, 0x157f, 0x0078,
+ 0x3124, 0xa684, 0x0400, 0x00c0, 0x2a82, 0x6820, 0xa084, 0x0001,
+ 0x0040, 0x3124, 0xa68c, 0x0060, 0xa684, 0x0060, 0x0040, 0x2a56,
+ 0xa086, 0x0060, 0x00c0, 0x2a56, 0xa18d, 0x4000, 0xa18c, 0xfffb,
+ 0x795a, 0x69b6, 0x789b, 0x0060, 0x78ab, 0x0000, 0x789b, 0x0061,
+ 0x6818, 0xa085, 0x8000, 0x681a, 0x78aa, 0x8008, 0x810c, 0x0040,
+ 0x2d07, 0xa18c, 0x00f8, 0x00c0, 0x2d07, 0x157e, 0x137e, 0x147e,
+ 0x20a1, 0x012b, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80, 0x000b,
+ 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6814, 0x8007, 0x7882,
+ 0x0078, 0x3124, 0x6818, 0xa084, 0x8000, 0x0040, 0x2a89, 0x681b,
+ 0x0008, 0x781b, 0x00da, 0x0078, 0x1efb, 0x2300, 0x0079, 0x2a90,
+ 0x2a95, 0x2b18, 0x2a93, 0x1078, 0x1eac, 0x7000, 0xa084, 0x0007,
+ 0x0079, 0x2a9a, 0x2aa2, 0x2aa4, 0x2ac0, 0x2aa2, 0x2aa2, 0x1f03,
+ 0x2aa2, 0x2aa2, 0x1078, 0x1eac, 0x6920, 0xa18d, 0x0001, 0x6922,
+ 0x6800, 0x6006, 0xa005, 0x00c0, 0x2aae, 0x6002, 0x681c, 0xa084,
+ 0x000e, 0x0040, 0x2aba, 0x7014, 0x68ba, 0x712c, 0xa188, 0x4280,
+ 0x0078, 0x2abc, 0x2009, 0x4380, 0x2104, 0x6802, 0x2d0a, 0x7156,
+ 0x6920, 0xa184, 0x8000, 0x00c0, 0x2acc, 0x68af, 0x0000, 0x68b3,
+ 0x0000, 0xa18d, 0x8000, 0x6922, 0x6eb6, 0xa684, 0x0060, 0x0040,
+ 0x2b16, 0xa684, 0x0800, 0x00c0, 0x2add, 0x6894, 0x68a6, 0x6898,
+ 0x68aa, 0x1078, 0x32f5, 0x0078, 0x2b16, 0xa684, 0x0020, 0x0040,
+ 0x2aea, 0xa006, 0x1078, 0x362f, 0x79d8, 0x7adc, 0x69aa, 0x6aa6,
+ 0x0078, 0x2af0, 0x1078, 0x30a6, 0x69aa, 0x6aa6, 0x1078, 0x362f,
+ 0xa684, 0x8000, 0x0040, 0x2b16, 0xa684, 0x7fff, 0x68b6, 0x789b,
+ 0x0074, 0x1078, 0x316f, 0x2010, 0x1078, 0x316f, 0x2008, 0xa684,
+ 0x0020, 0x00c0, 0x2b0e, 0x1078, 0x316f, 0x801b, 0x00c8, 0x2b09,
+ 0x8000, 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b98, 0x2100,
+ 0xa302, 0x68b2, 0x6b94, 0x2200, 0xa303, 0x68ae, 0x0078, 0x1f03,
+ 0x0078, 0x2f75, 0x7033, 0x0000, 0xa282, 0x0006, 0x0050, 0x2b22,
+ 0x1078, 0x1eac, 0x2300, 0x0079, 0x2b25, 0x2b28, 0x2b4e, 0x2b72,
+ 0x2200, 0x0079, 0x2b2b, 0x2b31, 0x2f75, 0x2b33, 0x2b31, 0x2b9c,
+ 0x2bed, 0x1078, 0x1eac, 0x7003, 0x0005, 0x2001, 0x4390, 0x2068,
+ 0x703e, 0x157e, 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070,
+ 0x2b43, 0x0078, 0x2b3c, 0x157f, 0x6817, 0x0000, 0x68b7, 0x0700,
+ 0x6823, 0x0800, 0x6827, 0x0003, 0x0078, 0x2f69, 0x7000, 0xa086,
+ 0x0001, 0x00c0, 0x2b5b, 0x1078, 0x2cdf, 0x1078, 0x32f5, 0x7034,
+ 0x600a, 0x0078, 0x2b60, 0x7000, 0xa086, 0x0003, 0x0040, 0x2b55,
+ 0x7003, 0x0005, 0x2001, 0x4390, 0x2068, 0x703e, 0x7032, 0x2200,
+ 0x0079, 0x2b6a, 0x2f75, 0x2b70, 0x2b70, 0x2b9c, 0x2b70, 0x2f75,
+ 0x1078, 0x1eac, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2b7f, 0x1078,
+ 0x2cdf, 0x1078, 0x32f5, 0x7034, 0x600a, 0x0078, 0x2b84, 0x7000,
+ 0xa086, 0x0003, 0x0040, 0x2b79, 0x7003, 0x0005, 0x2001, 0x4390,
+ 0x2068, 0x703e, 0x7032, 0x2200, 0x0079, 0x2b8e, 0x2b96, 0x2b94,
+ 0x2b94, 0x2b96, 0x2b94, 0x2b96, 0x1078, 0x1eac, 0x1078, 0x2f8d,
+ 0x781b, 0x0067, 0x0078, 0x1efb, 0x7000, 0xa086, 0x0001, 0x00c0,
+ 0x2ba9, 0x1078, 0x2cdf, 0x1078, 0x32f5, 0x7034, 0x600a, 0x0078,
+ 0x2bae, 0x7000, 0xa086, 0x0003, 0x0040, 0x2ba3, 0x7003, 0x0002,
+ 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, 0x0007,
+ 0xa215, 0x2069, 0x4380, 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005,
+ 0x0040, 0x2bc9, 0x6814, 0xa206, 0x0040, 0x2be2, 0x6800, 0x0078,
+ 0x2bbc, 0x7003, 0x0005, 0x2001, 0x4390, 0x2068, 0x703e, 0x7032,
+ 0x157e, 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x2bda,
+ 0x0078, 0x2bd3, 0x157f, 0x6a16, 0x68b7, 0x0700, 0x6823, 0x0800,
+ 0x6827, 0x0003, 0x6eb4, 0x7e5a, 0x6820, 0xa084, 0x0c00, 0x0040,
+ 0x2c4b, 0x1078, 0x2f85, 0x0078, 0x2c4b, 0x7000, 0xa086, 0x0001,
+ 0x00c0, 0x2bfa, 0x1078, 0x2cdf, 0x1078, 0x32f5, 0x7034, 0x600a,
+ 0x0078, 0x2bff, 0x7000, 0xa086, 0x0003, 0x0040, 0x2bf4, 0x7003,
+ 0x0002, 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484,
+ 0x0007, 0xa215, 0x79a8, 0x79a8, 0xa18c, 0x00ff, 0xa1e8, 0x4280,
+ 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005, 0x0040, 0x2c1e, 0x6814,
+ 0xa206, 0x0040, 0x2c36, 0x6800, 0x0078, 0x2c11, 0x7003, 0x0005,
+ 0x2001, 0x4390, 0x2068, 0x703e, 0x157e, 0x20a9, 0x002f, 0x2003,
+ 0x0000, 0x8000, 0x0070, 0x2c2e, 0x0078, 0x2c27, 0x157f, 0x6a16,
+ 0x68b7, 0x0700, 0x6823, 0x0800, 0x6827, 0x0003, 0x6eb4, 0x7e5a,
+ 0x6820, 0xa084, 0x0c00, 0x0040, 0x2c4b, 0xa084, 0x0800, 0x0040,
+ 0x2c45, 0x1078, 0x2f89, 0x0078, 0x2c4b, 0x1078, 0x2f85, 0x70bf,
+ 0x0000, 0x0078, 0x2c4b, 0x027e, 0x8207, 0xa084, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xa080, 0x3a00, 0x2060, 0x704a, 0x6000, 0x704e,
+ 0x6004, 0x7052, 0xa684, 0x0060, 0x0040, 0x2c64, 0x68a8, 0x78d2,
+ 0x78da, 0x68a4, 0x78d6, 0x78de, 0x077f, 0x1078, 0x3099, 0x2009,
+ 0x0068, 0xa684, 0x0008, 0x0040, 0x2c6f, 0x2009, 0x0067, 0xa6b5,
+ 0x2000, 0x7e5a, 0x791a, 0xa684, 0x0060, 0x0040, 0x2c85, 0xa684,
+ 0x0800, 0x00c0, 0x2c7f, 0x1078, 0x3571, 0x0078, 0x2c85, 0xa684,
+ 0x4000, 0x00c0, 0x2c85, 0x1078, 0x3502, 0x2d00, 0x703e, 0x8207,
+ 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x3a00, 0x2048,
+ 0x0078, 0x1efb, 0x6020, 0xa005, 0x0040, 0x2c9e, 0x8001, 0x6022,
+ 0x6008, 0xa085, 0x0008, 0x600a, 0x7010, 0x6026, 0x007c, 0xa006,
+ 0x1078, 0x32f5, 0x6817, 0x0000, 0x681b, 0x0001, 0x6823, 0x0040,
+ 0x681f, 0x0100, 0x7000, 0xa084, 0x0007, 0x0079, 0x2caf, 0x2cb7,
+ 0x2cb9, 0x2cb9, 0x2cc5, 0x2cc1, 0x2cb7, 0x2cc1, 0x2cb7, 0x1078,
+ 0x1eac, 0x1078, 0x2cd0, 0x1078, 0x2cc9, 0x1078, 0x1a26, 0x0078,
+ 0x1f03, 0x70a3, 0x0000, 0x0078, 0x1f03, 0x681b, 0x0000, 0x0078,
+ 0x2871, 0x6800, 0xa005, 0x00c0, 0x2cce, 0x6002, 0x6006, 0x007c,
+ 0x6010, 0xa005, 0x0040, 0x2cd9, 0x8001, 0x00d0, 0x2cd9, 0x1078,
+ 0x1eac, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x007c, 0x6018,
+ 0xa005, 0x0040, 0x2ce5, 0x8001, 0x601a, 0x007c, 0x1078, 0x316a,
+ 0x6818, 0xa084, 0x8000, 0x0040, 0x2cef, 0x681b, 0x0018, 0x0078,
+ 0x2d26, 0x1078, 0x316a, 0x6818, 0xa084, 0x8000, 0x0040, 0x2cfa,
+ 0x681b, 0x0019, 0x0078, 0x2d26, 0x1078, 0x316a, 0x6818, 0xa084,
+ 0x8000, 0x0040, 0x2d05, 0x681b, 0x001a, 0x0078, 0x2d26, 0x1078,
+ 0x316a, 0x681b, 0x0003, 0x0078, 0x2d26, 0x71b8, 0xa18c, 0x00ff,
+ 0xa1e8, 0x4280, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x00c0, 0x2d1a,
+ 0x0078, 0x1f03, 0x6814, 0x72b4, 0xa206, 0x0040, 0x2d22, 0x6800,
+ 0x0078, 0x2d13, 0x6800, 0x200a, 0x681b, 0x0005, 0x681f, 0x0000,
+ 0x6823, 0x0020, 0x1078, 0x2cd0, 0x1078, 0x2cc9, 0x1078, 0x1a26,
+ 0x0078, 0x1f03, 0xa282, 0x0003, 0x00c0, 0x2f69, 0x7da8, 0xa5ac,
+ 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, 0x6920, 0xa18d, 0x0080, 0x6922,
+ 0xa184, 0x0100, 0x0040, 0x2d92, 0xa18c, 0xfeff, 0x6922, 0xa6b4,
+ 0x00ff, 0x0040, 0x2d7c, 0xa682, 0x000c, 0x0048, 0x2d53, 0x0040,
+ 0x2d53, 0x2031, 0x000c, 0x852b, 0x852b, 0x1078, 0x3018, 0x0040,
+ 0x2d5d, 0x1078, 0x2e4a, 0x0078, 0x2d85, 0x1078, 0x2fd3, 0x0c7e,
+ 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x2e6e, 0x0c7f,
+ 0x6920, 0xa18d, 0x0100, 0x6922, 0x7e58, 0xa6b5, 0x0004, 0x7e5a,
+ 0xa684, 0x0400, 0x00c0, 0x2d78, 0x781b, 0x0053, 0x0078, 0x1efb,
+ 0x781b, 0x0067, 0x0078, 0x1efb, 0x0c7e, 0x2960, 0x6004, 0xa084,
+ 0xfff5, 0x6006, 0x1078, 0x2e6e, 0x0c7f, 0x7e58, 0xa684, 0x0400,
+ 0x00c0, 0x2d8e, 0x781b, 0x0056, 0x0078, 0x1efb, 0x781b, 0x0068,
+ 0x0078, 0x1efb, 0x0c7e, 0x7048, 0x2060, 0x6100, 0xa18c, 0x1000,
+ 0x0040, 0x2dd2, 0x6208, 0x8217, 0xa294, 0x00ff, 0xa282, 0x000c,
+ 0x0048, 0x2da6, 0x0040, 0x2da6, 0x2011, 0x000c, 0x2600, 0xa202,
+ 0x00c8, 0x2dab, 0x2230, 0x6208, 0xa294, 0x00ff, 0x7018, 0xa086,
+ 0x0028, 0x00c0, 0x2dbb, 0xa282, 0x0019, 0x00c8, 0x2dc1, 0x2011,
+ 0x0019, 0x0078, 0x2dc1, 0xa282, 0x000c, 0x00c8, 0x2dc1, 0x2011,
+ 0x000c, 0x2200, 0xa502, 0x00c8, 0x2dc6, 0x2228, 0x1078, 0x2fd7,
+ 0x852b, 0x852b, 0x1078, 0x3018, 0x0040, 0x2dd2, 0x1078, 0x2e4a,
+ 0x0078, 0x2dd6, 0x1078, 0x2fd3, 0x1078, 0x2e6e, 0x7858, 0xa085,
+ 0x0004, 0x785a, 0x0c7f, 0x781b, 0x0067, 0x0078, 0x1efb, 0x0c7e,
+ 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x2df7, 0x6010, 0xa084,
+ 0x000f, 0x00c0, 0x2df1, 0x6104, 0xa18c, 0xfff5, 0x6106, 0x0c7f,
+ 0x007c, 0x2011, 0x0032, 0x2019, 0x0000, 0x0078, 0x2e1e, 0x68a0,
+ 0xa084, 0x0200, 0x00c0, 0x2df1, 0x6208, 0xa294, 0x00ff, 0x7018,
+ 0xa086, 0x0028, 0x00c0, 0x2e0c, 0xa282, 0x0019, 0x00c8, 0x2e12,
+ 0x2011, 0x0019, 0x0078, 0x2e12, 0xa282, 0x000c, 0x00c8, 0x2e12,
+ 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000c,
+ 0x0048, 0x2e1e, 0x0040, 0x2e1e, 0x2019, 0x000c, 0x78ab, 0x0001,
+ 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005,
+ 0x6820, 0xa085, 0x0100, 0x6822, 0x0c7f, 0x007c, 0x0c7e, 0x2960,
+ 0x6104, 0xa18c, 0xfff5, 0x6106, 0x2011, 0x0032, 0x2019, 0x0000,
+ 0x0078, 0x2e3a, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001,
+ 0x7aaa, 0x7baa, 0xa8c0, 0x0005, 0x6820, 0xa085, 0x0100, 0x6822,
+ 0x0c7f, 0x007c, 0x0c7e, 0x7148, 0x2160, 0x2008, 0xa084, 0xfff0,
+ 0xa635, 0x7e86, 0x6018, 0x789a, 0x7eae, 0x6612, 0x78a4, 0xa084,
+ 0xfff8, 0xa18c, 0x0007, 0xa105, 0x78a6, 0x6016, 0x788a, 0xa6b4,
+ 0x000f, 0x8637, 0x8204, 0x8004, 0xa084, 0x00ff, 0xa605, 0x600e,
+ 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x007c, 0x0c7e, 0x7048,
+ 0x2060, 0x6018, 0x789a, 0x78a4, 0xa084, 0xfff0, 0x78a6, 0x6012,
+ 0x7884, 0xa084, 0xfff0, 0x7886, 0x0c7f, 0x007c, 0xa282, 0x0002,
+ 0x00c0, 0x2f69, 0x7aa8, 0x6920, 0xa18d, 0x0080, 0x6922, 0xa184,
+ 0x0200, 0x0040, 0x2ec3, 0xa18c, 0xfdff, 0x6922, 0xa294, 0x00ff,
+ 0xa282, 0x0002, 0x00c8, 0x2f69, 0x1078, 0x2f0a, 0x1078, 0x2e6e,
+ 0xa980, 0x0001, 0x200c, 0x1078, 0x3095, 0x1078, 0x2ddf, 0x88ff,
+ 0x0040, 0x2eb6, 0x789b, 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5,
+ 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x2eb2, 0x781b, 0x0053,
+ 0x0078, 0x1efb, 0x781b, 0x0067, 0x0078, 0x1efb, 0x7e58, 0xa684,
+ 0x0400, 0x00c0, 0x2ebf, 0x781b, 0x0056, 0x0078, 0x1efb, 0x781b,
+ 0x0068, 0x0078, 0x1efb, 0xa282, 0x0002, 0x00c8, 0x2ecb, 0xa284,
+ 0x0001, 0x0040, 0x2ed5, 0x7148, 0xa188, 0x0000, 0x210c, 0xa18c,
+ 0x2000, 0x00c0, 0x2ed5, 0x2011, 0x0000, 0x1078, 0x2fc5, 0x1078,
+ 0x2f0a, 0x1078, 0x2e6e, 0x7858, 0xa085, 0x0004, 0x785a, 0x781b,
+ 0x0067, 0x0078, 0x1efb, 0x0c7e, 0x027e, 0x2960, 0x6000, 0x2011,
+ 0x0001, 0xa084, 0x2000, 0x00c0, 0x2efa, 0x6014, 0xa084, 0x0040,
+ 0x00c0, 0x2ef8, 0xa18c, 0xffef, 0x6106, 0xa006, 0x0078, 0x2f07,
+ 0x2011, 0x0000, 0x78ab, 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003,
+ 0x7aaa, 0xa8c0, 0x0004, 0x6820, 0xa085, 0x0200, 0x6822, 0x027f,
+ 0x0c7f, 0x007c, 0x0c7e, 0x7048, 0x2060, 0x82ff, 0x0040, 0x2f12,
+ 0x2011, 0x0040, 0x6018, 0xa080, 0x0002, 0x789a, 0x78a4, 0xa084,
+ 0xffbf, 0xa205, 0x78a6, 0x6016, 0x788a, 0x6004, 0xa084, 0xffef,
+ 0x6006, 0x0c7f, 0x007c, 0xa684, 0x0020, 0x0040, 0x2f65, 0x7888,
+ 0xa084, 0x0040, 0x0040, 0x2f65, 0x7bb8, 0xa384, 0x003f, 0x831b,
+ 0x00c8, 0x2f33, 0x8000, 0xa005, 0x0040, 0x2f4c, 0x831b, 0x00c8,
+ 0x2f3c, 0x8001, 0x0040, 0x2f61, 0xa684, 0x4000, 0x0040, 0x2f4c,
+ 0x78b8, 0x801b, 0x00c8, 0x2f45, 0x8000, 0xa084, 0x003f, 0x00c0,
+ 0x2f61, 0xa6b4, 0xbfff, 0x7e5a, 0x79d8, 0x7adc, 0x2001, 0x0001,
+ 0xa108, 0x00c8, 0x2f55, 0xa291, 0x0000, 0x79d2, 0x79da, 0x7ad6,
+ 0x7ade, 0x1078, 0x362f, 0x781b, 0x0065, 0x1078, 0x3502, 0x0078,
+ 0x1efb, 0x781b, 0x0065, 0x0078, 0x1efb, 0x781b, 0x0068, 0x0078,
+ 0x1efb, 0x1078, 0x2f91, 0x781b, 0x0067, 0x0078, 0x1efb, 0x1078,
+ 0x2f7d, 0x781b, 0x0067, 0x0078, 0x1efb, 0x6827, 0x0002, 0x1078,
+ 0x2f85, 0x781b, 0x0067, 0x0078, 0x1efb, 0x2001, 0x0005, 0x0078,
+ 0x2f93, 0x2001, 0x000c, 0x0078, 0x2f93, 0x2001, 0x0006, 0x0078,
+ 0x2f93, 0x2001, 0x000d, 0x0078, 0x2f93, 0x2001, 0x0009, 0x0078,
+ 0x2f93, 0x2001, 0x0007, 0x789b, 0x007e, 0x78aa, 0xa6b5, 0x0008,
+ 0x7e5a, 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b,
+ 0x8703, 0xa0e0, 0x3a00, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184,
+ 0x000f, 0x0040, 0x2fb3, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004,
+ 0xa085, 0x0008, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184,
+ 0x0040, 0x0040, 0x2fc3, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004,
+ 0xa085, 0x0010, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab,
+ 0x0001, 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060,
+ 0x78ab, 0x0004, 0x007c, 0x2031, 0x0000, 0x2029, 0x0032, 0x789b,
+ 0x0010, 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa,
+ 0x7eaa, 0x789b, 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007,
+ 0xa084, 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4,
+ 0xa18c, 0xfff0, 0x2001, 0x3946, 0x2004, 0xa082, 0x0028, 0x0040,
+ 0x3001, 0x2021, 0x307c, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078,
+ 0x3007, 0x2021, 0x3088, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011,
+ 0x0064, 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x3016, 0x8420,
+ 0x2300, 0xa210, 0x0070, 0x3016, 0x0078, 0x3009, 0x157f, 0x007c,
+ 0x157e, 0x2011, 0x3946, 0x2214, 0xa282, 0x0032, 0x0048, 0x302c,
+ 0x0040, 0x3030, 0x2021, 0x306e, 0x2019, 0x0011, 0x20a9, 0x000e,
+ 0x2011, 0x0032, 0x0078, 0x3042, 0xa282, 0x0028, 0x0040, 0x303a,
+ 0x2021, 0x307c, 0x2019, 0x0014, 0x20a9, 0x000c, 0x2011, 0x0064,
+ 0x0078, 0x3042, 0x2021, 0x3088, 0x2019, 0x0019, 0x20a9, 0x000d,
+ 0x2011, 0x0064, 0x2200, 0xa502, 0x0040, 0x3052, 0x0048, 0x3052,
+ 0x8420, 0x2300, 0xa210, 0x0070, 0x304f, 0x0078, 0x3042, 0x157f,
+ 0xa006, 0x007c, 0x157f, 0x7a08, 0xa582, 0x0064, 0x00c8, 0x305d,
+ 0xa285, 0x0040, 0x780a, 0x0078, 0x305d, 0x78ec, 0xa084, 0x0300,
+ 0x0040, 0x306b, 0x2404, 0xa09e, 0x2002, 0x00c0, 0x306b, 0x2001,
+ 0x2101, 0x0078, 0x306c, 0x2404, 0xa015, 0x007c, 0x2002, 0x3002,
+ 0x3202, 0x4203, 0x4403, 0x5404, 0x5604, 0x6605, 0x6805, 0x7806,
+ 0x7a06, 0x0a07, 0x0c07, 0x0e07, 0x3202, 0x4202, 0x5202, 0x6202,
+ 0x7202, 0x6605, 0x7605, 0x7805, 0x7a05, 0x7c05, 0x7e05, 0x7f05,
+ 0x2202, 0x3202, 0x4202, 0x5202, 0x5404, 0x6404, 0x7404, 0x7604,
+ 0x7804, 0x7a04, 0x7c04, 0x7e04, 0x7f04, 0x789b, 0x0010, 0xa046,
+ 0x007c, 0xa784, 0x0f00, 0x800c, 0xa784, 0x0007, 0x8003, 0x8003,
+ 0x8003, 0x8003, 0xa105, 0xa0e0, 0x3a80, 0x007c, 0x79d8, 0x7adc,
+ 0x78d0, 0x801b, 0x00c8, 0x30ad, 0x8000, 0xa084, 0x003f, 0xa108,
+ 0xa291, 0x0000, 0x007c, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x3940,
+ 0x2091, 0x8000, 0x2104, 0x0079, 0x30bd, 0x30e3, 0x30c7, 0x30c7,
+ 0x30c7, 0x30c7, 0x30c7, 0x30c7, 0x30c5, 0x1078, 0x1eac, 0x784b,
+ 0x0004, 0x68b4, 0xa085, 0x4000, 0x68b6, 0x7858, 0xa085, 0x4000,
+ 0x785a, 0x7830, 0xa084, 0x0080, 0x00c0, 0x30e3, 0x0018, 0x30e3,
+ 0x681c, 0xa084, 0x0020, 0x00c0, 0x30e1, 0x781b, 0x00df, 0x0078,
+ 0x30e3, 0x781b, 0x00e6, 0x2091, 0x8001, 0x0f7f, 0x007c, 0x0c7e,
+ 0x6814, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0,
+ 0x3a00, 0x6004, 0xa084, 0x000a, 0x00c0, 0x311a, 0x6108, 0xa194,
+ 0xff00, 0x0040, 0x311a, 0xa18c, 0x00ff, 0x2001, 0x0019, 0xa106,
+ 0x0040, 0x3109, 0x2001, 0x0032, 0xa106, 0x0040, 0x310d, 0x0078,
+ 0x3111, 0x2009, 0x0020, 0x0078, 0x3113, 0x2009, 0x003f, 0x0078,
+ 0x3113, 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004, 0xa085,
+ 0x0002, 0x6006, 0x0c7f, 0x007c, 0x781b, 0x0068, 0x0078, 0x1efb,
+ 0x781b, 0x0067, 0x0078, 0x1efb, 0x781b, 0x0056, 0x0078, 0x1efb,
+ 0x781b, 0x0053, 0x0078, 0x1efb, 0x781b, 0x00df, 0x0078, 0x1efb,
+ 0x781b, 0x00de, 0x0078, 0x1efb, 0x781b, 0x00e6, 0x0078, 0x1efb,
+ 0x781b, 0x00e5, 0x0078, 0x1efb, 0x781b, 0x009d, 0x0078, 0x1efb,
+ 0x781b, 0x009c, 0x0078, 0x1efb, 0x6818, 0xa084, 0x8000, 0x0040,
+ 0x314b, 0x681b, 0x001d, 0x70a3, 0x0001, 0x781b, 0x0047, 0x0078,
+ 0x1efb, 0x007e, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x3168, 0x7808,
+ 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec,
+ 0xa084, 0x0021, 0x0040, 0x3168, 0x7808, 0xa085, 0x0002, 0x780a,
+ 0x007f, 0x007c, 0x7808, 0xa085, 0x0002, 0x780a, 0x007c, 0x7830,
+ 0xa084, 0x0040, 0x00c0, 0x316f, 0x0098, 0x3178, 0x78ac, 0x007c,
+ 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005,
+ 0x78ec, 0xa084, 0x0021, 0x0040, 0x3187, 0x0098, 0x3185, 0x78ac,
+ 0x007e, 0x7808, 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0xa784,
+ 0x0070, 0x0040, 0x319b, 0x0c7e, 0x2d60, 0x2f68, 0x1078, 0x1e57,
+ 0x2d78, 0x2c68, 0x0c7f, 0xa784, 0x0008, 0x0040, 0x31a8, 0x784b,
+ 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x1f03, 0x0078, 0x311c,
+ 0xa784, 0x0004, 0x0040, 0x31db, 0x78b8, 0xa084, 0x4001, 0x0040,
+ 0x31db, 0x784b, 0x0008, 0x78ec, 0xa084, 0x0003, 0x0040, 0x1f03,
+ 0x78e4, 0xa084, 0x0007, 0xa086, 0x0001, 0x00c0, 0x31db, 0x78c0,
+ 0xa685, 0x4800, 0x2030, 0x7e5a, 0x781b, 0x00e6, 0x0078, 0x1efb,
+ 0x784b, 0x0008, 0x6818, 0xa084, 0x8000, 0x0040, 0x31d7, 0x681b,
+ 0x0015, 0xa684, 0x4000, 0x0040, 0x31d7, 0x681b, 0x0007, 0x781b,
+ 0x00df, 0x0078, 0x1efb, 0x681b, 0x0003, 0x7858, 0xa084, 0x3f00,
+ 0x681e, 0x682f, 0x0000, 0x6833, 0x0000, 0x784b, 0x0008, 0x78e4,
+ 0xa005, 0x00d0, 0x238a, 0xa084, 0x0020, 0x0040, 0x238a, 0x0018,
+ 0x238a, 0x0078, 0x2f6f, 0x6b14, 0x8307, 0xa084, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xa080, 0x3a00, 0x2060, 0x2048, 0x704a, 0x6000,
+ 0x704e, 0x6004, 0x7052, 0x2a60, 0x007c, 0x0020, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
+ 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0062,
+ 0x0009, 0x0014, 0x0014, 0x9848, 0x0014, 0x0014, 0x98f9, 0x98e9,
+ 0x0014, 0x0014, 0x0080, 0x00c0, 0x0100, 0x0402, 0x2008, 0xf880,
+ 0x0018, 0xa20a, 0x0014, 0x300b, 0xa20c, 0x0014, 0xa200, 0x8838,
+ 0x3806, 0x8839, 0x28c2, 0x9cc2, 0xa805, 0x0864, 0xa83d, 0x3008,
+ 0x28c1, 0x9cc2, 0xa201, 0x300c, 0x2847, 0x8161, 0x846a, 0x8000,
+ 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, 0x9c9f, 0xa8f3, 0x0864,
+ 0xa82b, 0x300c, 0xa801, 0x3008, 0x28e1, 0x9c9f, 0x280d, 0xa204,
+ 0x64c0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677,
+ 0xa80f, 0x786e, 0x883e, 0xa80c, 0x282b, 0xa205, 0x64a0, 0x67a0,
+ 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677, 0xa801, 0x883e,
+ 0x206b, 0x28c1, 0x9cc2, 0x2044, 0x2103, 0x20a2, 0x2081, 0xa8dc,
+ 0xa207, 0x2901, 0xa80a, 0x0014, 0xa203, 0x8000, 0x85a4, 0x1872,
+ 0x879a, 0x883c, 0x1fe2, 0xf601, 0xa208, 0x856e, 0x866f, 0x0704,
+ 0x3008, 0x9c9f, 0x0014, 0xa202, 0x8000, 0x85a4, 0x3009, 0x84a8,
+ 0x19e2, 0xf848, 0x8174, 0x86eb, 0x85eb, 0x872e, 0x87a9, 0x883f,
+ 0x08e6, 0xa8f1, 0xf861, 0xa8e8, 0xf801, 0x0014, 0xf881, 0x0016,
+ 0x85b2, 0x80f0, 0x9532, 0xfaa2, 0x1de2, 0x0014, 0x8532, 0xf221,
+ 0x0014, 0x1de2, 0x84a8, 0xd6e0, 0x1fe6, 0x0014, 0xa206, 0x6865,
+ 0x817e, 0x842a, 0x1dc1, 0x8823, 0x0016, 0x6042, 0x8008, 0xa8fa,
+ 0x8000, 0x84a4, 0x8160, 0x842a, 0xf021, 0x3008, 0x84a8, 0x11d6,
+ 0x7042, 0x20dd, 0x0011, 0x20d4, 0x8822, 0x0016, 0x8000, 0x2848,
+ 0x1011, 0xa8fc, 0x3008, 0x8000, 0xa000, 0x2802, 0x1011, 0xa8fd,
+ 0xa883, 0x3008, 0x283d, 0x1011, 0xa8fd, 0xa209, 0x0017, 0x300c,
+ 0x8000, 0x85a4, 0x1de2, 0xdac1, 0x0014, 0xd301, 0x0014, 0x26e0,
+ 0x873a, 0xfaa2, 0x19f2, 0x1fe2, 0x0014, 0xa20b, 0x0014, 0xa20d,
+ 0x3806, 0x0210, 0x9ccc, 0x0704, 0x0000, 0x127e, 0x2091, 0x2200,
+ 0x2049, 0x32f5, 0x7000, 0x7204, 0xa205, 0x720c, 0xa215, 0x7008,
+ 0xa084, 0xfff7, 0xa205, 0x0040, 0x3307, 0x1078, 0x3380, 0x127f,
+ 0x2000, 0x007c, 0x6428, 0x84ff, 0x0040, 0x3336, 0x2c70, 0x7004,
+ 0xa0bc, 0x000f, 0xa7b8, 0x3346, 0x273c, 0x87fb, 0x00c0, 0x3324,
+ 0x0048, 0x331c, 0x1078, 0x1eac, 0x609c, 0xa075, 0x0040, 0x3336,
+ 0x0078, 0x330f, 0x2039, 0x333b, 0x2704, 0xae68, 0x6808, 0xa630,
+ 0x680c, 0xa529, 0x8421, 0x0040, 0x3336, 0x8738, 0x2704, 0xa005,
+ 0x00c0, 0x3325, 0x709c, 0xa075, 0x00c0, 0x330f, 0x007c, 0x0000,
+ 0x0005, 0x0009, 0x000d, 0x0011, 0x0015, 0x0019, 0x001d, 0x0000,
+ 0x0003, 0x0009, 0x000f, 0x0015, 0x001b, 0x0000, 0x0000, 0x333b,
+ 0x3338, 0x0000, 0x0000, 0x8000, 0x0000, 0x333b, 0x0000, 0x3343,
+ 0x3340, 0x0000, 0x0000, 0x0000, 0x0000, 0x3343, 0x0000, 0x333e,
+ 0x333e, 0x0000, 0x0000, 0x8000, 0x0000, 0x333e, 0x0000, 0x3344,
+ 0x3344, 0x0000, 0x0000, 0x0000, 0x0000, 0x3344, 0x127e, 0x2091,
+ 0x2200, 0x2079, 0x3900, 0x2071, 0x0010, 0x7007, 0x000a, 0x7007,
+ 0x0002, 0x7003, 0x0000, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007,
+ 0x0002, 0x7003, 0x0000, 0x2049, 0x0000, 0x127f, 0x2000, 0x007c,
+ 0x2049, 0x3380, 0x2019, 0x0000, 0x7004, 0x8004, 0x00c8, 0x33b2,
+ 0x7007, 0x0012, 0x7108, 0x7008, 0xa106, 0x00c0, 0x338a, 0xa184,
+ 0x01e0, 0x0040, 0x3395, 0x1078, 0x1eac, 0xa184, 0x4000, 0x00c0,
+ 0x338a, 0xa19c, 0x300c, 0xa386, 0x2004, 0x0040, 0x33a7, 0xa386,
+ 0x0008, 0x0040, 0x33b2, 0xa386, 0x200c, 0x00c0, 0x338a, 0x7200,
+ 0x8204, 0x0048, 0x33b2, 0x730c, 0xa384, 0x00ff, 0x0040, 0x33b2,
+ 0x1078, 0x1eac, 0x7007, 0x0012, 0x7000, 0xa084, 0x0001, 0x00c0,
+ 0x33c3, 0x7310, 0x7014, 0xa305, 0x0040, 0x33c3, 0x700c, 0xa084,
+ 0x00ff, 0x00c0, 0x3380, 0x7007, 0x0012, 0x7007, 0x0008, 0x7004,
+ 0xa084, 0x0008, 0x00c0, 0x33c7, 0x7007, 0x0012, 0x7108, 0x8103,
+ 0x0048, 0x33cc, 0x7003, 0x0000, 0x2049, 0x0000, 0x007c, 0x107e,
+ 0x007e, 0x127e, 0x157e, 0x2091, 0x2200, 0x7108, 0x1078, 0x33e7,
+ 0x157f, 0x127f, 0x2091, 0x8001, 0x007f, 0x107f, 0x007c, 0x7204,
+ 0x7500, 0x730c, 0xa384, 0x0300, 0x00c0, 0x3426, 0xa184, 0x0060,
+ 0x00c0, 0x3442, 0x7008, 0x7108, 0xa106, 0x00c0, 0x33f2, 0xa184,
+ 0x01e0, 0x00c0, 0x3442, 0xa184, 0x4000, 0x00c0, 0x33f2, 0xa986,
+ 0x362f, 0x00c0, 0x341a, 0xa19c, 0x300c, 0xa386, 0x2004, 0x0040,
+ 0x3411, 0xa386, 0x0008, 0x0040, 0x341a, 0xa386, 0x200c, 0x00c0,
+ 0x33f2, 0x7200, 0x8204, 0x0048, 0x341a, 0x730c, 0xa384, 0x00ff,
+ 0x00c0, 0x3426, 0xa184, 0x0007, 0x0079, 0x341e, 0x3428, 0x3436,
+ 0x3426, 0x3436, 0x3426, 0x348f, 0x3426, 0x348d, 0x1078, 0x1eac,
+ 0x7007, 0x0002, 0x8aff, 0x00c0, 0x3431, 0x2049, 0x0000, 0x0078,
+ 0x3435, 0x1078, 0x3606, 0x00c0, 0x3431, 0x007c, 0x7007, 0x0002,
+ 0x8aff, 0x00c0, 0x343d, 0x0078, 0x3441, 0x1078, 0x3606, 0x00c0,
+ 0x343d, 0x007c, 0x7108, 0x7008, 0xa106, 0x00c0, 0x3442, 0xa184,
+ 0x4000, 0x00c0, 0x3442, 0x7007, 0x0012, 0x7108, 0x7008, 0xa106,
+ 0x00c0, 0x344d, 0xa184, 0x4000, 0x00c0, 0x344d, 0x00e0, 0x3456,
+ 0x2091, 0x6000, 0x00e0, 0x345a, 0x2091, 0x6000, 0x7007, 0x0012,
+ 0x7007, 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, 0x3462, 0x7007,
+ 0x0012, 0x7108, 0x8103, 0x0048, 0x3467, 0x7003, 0x0000, 0x7000,
+ 0xa005, 0x00c0, 0x347b, 0x7004, 0xa005, 0x00c0, 0x347b, 0x700c,
+ 0xa005, 0x0040, 0x347d, 0x0078, 0x345e, 0x2049, 0x0000, 0x1078,
+ 0x30b3, 0x6818, 0xa084, 0x8000, 0x0040, 0x3488, 0x681b, 0x0002,
+ 0x007c, 0x1078, 0x1eac, 0x1078, 0x1eac, 0x1078, 0x34ed, 0x7210,
+ 0x7114, 0x700c, 0xa09c, 0x00ff, 0x2800, 0xa300, 0xa211, 0xa189,
+ 0x0000, 0x1078, 0x34ed, 0x2704, 0x2c58, 0xac60, 0x6308, 0x2200,
+ 0xa322, 0x630c, 0x2100, 0xa31b, 0x2400, 0xa305, 0x0040, 0x34b2,
+ 0x00c8, 0x34b2, 0x8412, 0x8210, 0x830a, 0xa189, 0x0000, 0x2b60,
+ 0x0078, 0x3499, 0x2b60, 0x8a07, 0x007e, 0x6004, 0xa084, 0x0008,
+ 0x0040, 0x34be, 0xa7ba, 0x3340, 0x0078, 0x34c0, 0xa7ba, 0x3338,
+ 0x007f, 0xa73d, 0x2c00, 0x6886, 0x6f8a, 0x6c92, 0x6b8e, 0x1078,
+ 0x3380, 0x007c, 0x8738, 0x2704, 0xa005, 0x00c0, 0x34dd, 0x609c,
+ 0xa005, 0x0040, 0x34ea, 0x2060, 0x6004, 0xa084, 0x000f, 0xa080,
+ 0x3346, 0x203c, 0x87fb, 0x1040, 0x1eac, 0x8a51, 0x0040, 0x34e9,
+ 0x7008, 0x7508, 0xa52e, 0x00c0, 0x34e0, 0xa084, 0x0003, 0xa086,
+ 0x0003, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50, 0x8739, 0x2704,
+ 0xa004, 0x00c0, 0x3501, 0x6000, 0xa064, 0x00c0, 0x34f8, 0x2d60,
+ 0x6004, 0xa084, 0x000f, 0xa080, 0x3356, 0x203c, 0x87fb, 0x1040,
+ 0x1eac, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x6884,
+ 0x2060, 0x6888, 0x6b8c, 0x6c90, 0x8057, 0xaad4, 0x00ff, 0xa084,
+ 0x00ff, 0x007e, 0x6804, 0xa084, 0x0008, 0x007f, 0x0040, 0x351c,
+ 0xa0b8, 0x3340, 0x0078, 0x351e, 0xa0b8, 0x3338, 0x7e08, 0xa6b5,
+ 0x000c, 0x681c, 0xa084, 0x0040, 0x0040, 0x3528, 0xa6b5, 0x0001,
+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x352a, 0x2400,
+ 0xa305, 0x00c0, 0x3535, 0x0078, 0x3559, 0x2c58, 0x2704, 0x6104,
+ 0xac60, 0x6000, 0xa400, 0x701a, 0x6004, 0xa301, 0x701e, 0xa184,
+ 0x0008, 0x0040, 0x3549, 0x6010, 0xa001, 0x7022, 0x6014, 0xa001,
+ 0x7026, 0x6208, 0x2400, 0xa202, 0x7012, 0x620c, 0x2300, 0xa203,
+ 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078, 0x34ca, 0x0078,
+ 0x355b, 0x1078, 0x3606, 0x00c0, 0x3559, 0x127f, 0x2000, 0x007c,
+ 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x7007, 0x0004, 0x7004,
+ 0xa084, 0x0004, 0x00c0, 0x3567, 0x7003, 0x0008, 0x127f, 0x2000,
+ 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049, 0x3571,
+ 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x357a, 0x7e08,
+ 0xa6b5, 0x000c, 0x681c, 0xa084, 0x0020, 0x00c0, 0x3589, 0xa6b5,
+ 0x0001, 0x6828, 0x2050, 0x2d60, 0x6004, 0xa0bc, 0x000f, 0xa7b8,
+ 0x3346, 0x273c, 0x87fb, 0x00c0, 0x359f, 0x0048, 0x3599, 0x1078,
+ 0x1eac, 0x689c, 0xa065, 0x0040, 0x35a3, 0x0078, 0x358c, 0x1078,
+ 0x3606, 0x00c0, 0x359f, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e,
+ 0x017e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f, 0x047f, 0x7e08,
+ 0xa6b5, 0x000c, 0x681c, 0xa084, 0x0040, 0x0040, 0x35b9, 0xa6b5,
+ 0x0001, 0x2049, 0x35a6, 0x6828, 0xa055, 0x0040, 0x3603, 0x2d70,
+ 0x2e60, 0x7004, 0xa0bc, 0x000f, 0xa7b8, 0x3346, 0x273c, 0x87fb,
+ 0x00c0, 0x35d5, 0x0048, 0x35ce, 0x1078, 0x1eac, 0x709c, 0xa075,
+ 0x2060, 0x0040, 0x3603, 0x0078, 0x35c1, 0x2704, 0xae68, 0x6808,
+ 0xa422, 0x680c, 0xa31b, 0x0048, 0x35f0, 0x8a51, 0x00c0, 0x35e2,
+ 0x1078, 0x1eac, 0x8738, 0x2704, 0xa005, 0x00c0, 0x35d6, 0x709c,
+ 0xa075, 0x2060, 0x0040, 0x3603, 0x2039, 0x3338, 0x0078, 0x35c1,
+ 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x6908, 0x2400, 0xa122,
+ 0x690c, 0x2300, 0xa11b, 0x00c8, 0x35ff, 0x1078, 0x1eac, 0x2071,
+ 0x0020, 0x0078, 0x3528, 0x127f, 0x2000, 0x007c, 0x7008, 0x7508,
+ 0xa52e, 0x00c0, 0x3606, 0xa084, 0x0003, 0xa086, 0x0003, 0x0040,
+ 0x362e, 0x2704, 0xac08, 0x2104, 0x701a, 0x8108, 0x2104, 0x701e,
+ 0x8108, 0x2104, 0x7012, 0x8108, 0x2104, 0x7016, 0x6004, 0xa084,
+ 0x0008, 0x0040, 0x3629, 0x8108, 0x2104, 0x7022, 0x8108, 0x2104,
+ 0x7026, 0x7602, 0x7007, 0x0001, 0x1078, 0x34ca, 0x007c, 0x127e,
+ 0x007e, 0x0d7e, 0x2091, 0x2200, 0x2049, 0x362f, 0x0d7f, 0x087f,
+ 0x7108, 0x7008, 0xa106, 0x00c0, 0x3638, 0xa184, 0x4000, 0x00c0,
+ 0x3638, 0xa184, 0x0003, 0x00c0, 0x364f, 0x6828, 0xa005, 0x0040,
+ 0x365d, 0x0020, 0x364f, 0x1078, 0x348f, 0x0078, 0x365d, 0x00a0,
+ 0x3656, 0x7108, 0x1078, 0x33e7, 0x0078, 0x3638, 0x7007, 0x0010,
+ 0x00a0, 0x3658, 0x7108, 0x1078, 0x33e7, 0x7008, 0xa086, 0x0008,
+ 0x00c0, 0x3638, 0x7000, 0xa005, 0x00c0, 0x3638, 0x2049, 0x0000,
+ 0x127f, 0x2000, 0x007c, 0x127e, 0x147e, 0x137e, 0x157e, 0x0d7e,
+ 0x2091, 0x2200, 0x0d7f, 0x2049, 0x366b, 0xad80, 0x0011, 0x20a0,
+ 0x2099, 0x0031, 0x700c, 0xa084, 0x00ff, 0x682a, 0x7007, 0x0008,
+ 0x7007, 0x0002, 0x7003, 0x0001, 0x0040, 0x3689, 0x8000, 0x80ac,
+ 0x53a5, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x368b,
+ 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, 0x137f, 0x147f, 0x127f,
+ 0x2000, 0x007c, 0x2091, 0x6000, 0x78c0, 0xa005, 0x0040, 0x36af,
+ 0x798c, 0x70d0, 0xa106, 0x00c0, 0x36af, 0x7804, 0xa005, 0x0040,
+ 0x36af, 0x7807, 0x0000, 0x0068, 0x36af, 0x2091, 0x4080, 0x7820,
+ 0x8001, 0x7822, 0x00c0, 0x370f, 0x7824, 0x7822, 0x2091, 0x8000,
+ 0x78f0, 0xa005, 0x0040, 0x36dc, 0x78d4, 0xa005, 0x00c0, 0x36dc,
+ 0x3a10, 0xa284, 0x0002, 0x00c0, 0x36cc, 0x78d7, 0x0007, 0x2009,
+ 0xff01, 0x200a, 0x0078, 0x36dc, 0xa284, 0x0001, 0x00c0, 0x36d4,
+ 0x78ef, 0x0000, 0x0078, 0x36dc, 0x78ec, 0xa005, 0x00c0, 0x36dc,
+ 0x78d7, 0x0008, 0x78ef, 0x0001, 0x2069, 0x3940, 0x6800, 0xa084,
+ 0x0007, 0x0040, 0x36f3, 0xa086, 0x0002, 0x0040, 0x36f3, 0x6830,
+ 0xa00d, 0x0040, 0x36f3, 0x2104, 0xa005, 0x0040, 0x36f3, 0x8001,
+ 0x200a, 0x0040, 0x37b1, 0x7848, 0xa005, 0x0040, 0x3703, 0x8001,
+ 0x784a, 0x00c0, 0x3703, 0x0f7e, 0x2079, 0x0100, 0x1078, 0x316a,
+ 0x0f7f, 0x1078, 0x1cf6, 0x68c4, 0xa005, 0x0040, 0x370f, 0x8001,
+ 0x68c6, 0x00c0, 0x370f, 0x68a3, 0x0000, 0x68a7, 0x0001, 0x1078,
+ 0x3716, 0x1078, 0x373b, 0x2091, 0x8001, 0x007c, 0x7834, 0x8001,
+ 0x7836, 0x00c0, 0x373a, 0x7838, 0x7836, 0x2091, 0x8000, 0x7844,
+ 0xa005, 0x00c0, 0x3725, 0x2001, 0x0101, 0x8001, 0x7846, 0xa080,
+ 0x4280, 0x2040, 0x2004, 0xa065, 0x0040, 0x373a, 0x6024, 0xa005,
+ 0x0040, 0x3736, 0x8001, 0x6026, 0x0040, 0x376a, 0x6000, 0x2c40,
+ 0x0078, 0x372b, 0x007c, 0x7828, 0x8001, 0x782a, 0x00c0, 0x3769,
+ 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x3748, 0x2001, 0x0080,
+ 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003, 0xa090, 0x3a80,
+ 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040, 0x3769, 0xa290,
+ 0x0009, 0x2204, 0xa005, 0x0040, 0x3761, 0x8001, 0x2012, 0x00c0,
+ 0x3769, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080, 0x201a, 0x1078,
+ 0x1cf6, 0x007c, 0x2069, 0x3940, 0x6800, 0xa005, 0x0040, 0x3774,
+ 0x683c, 0xac06, 0x0040, 0x37b1, 0x601b, 0x0006, 0x60b4, 0xa084,
+ 0x3f00, 0x601e, 0x6020, 0xa084, 0x00ff, 0xa085, 0x0060, 0x6022,
+ 0x6000, 0x2042, 0x6714, 0x6fb6, 0x1078, 0x18b4, 0x6818, 0xa005,
+ 0x0040, 0x378c, 0x8001, 0x681a, 0x6808, 0xa084, 0xffef, 0x680a,
+ 0x6810, 0x8001, 0x00d0, 0x3796, 0x1078, 0x1eac, 0x6812, 0x602f,
+ 0x0000, 0x6033, 0x0000, 0x2c68, 0x1078, 0x1a26, 0x2069, 0x3940,
+ 0x2001, 0x0006, 0x68a2, 0x7944, 0xa184, 0x0100, 0x00c0, 0x37ac,
+ 0x69ba, 0x2001, 0x0004, 0x68a2, 0x1078, 0x1cf1, 0x2091, 0x8001,
+ 0x007c, 0x2009, 0x394f, 0x2164, 0x2069, 0x0100, 0x1078, 0x1e57,
+ 0x601b, 0x0006, 0x6858, 0xa084, 0x3f00, 0x601e, 0x6020, 0xa084,
+ 0x00ff, 0xa085, 0x0048, 0x6022, 0x602f, 0x0000, 0x6033, 0x0000,
+ 0x6830, 0xa084, 0x0040, 0x0040, 0x37ed, 0x684b, 0x0004, 0x20a9,
+ 0x0014, 0x6848, 0xa084, 0x0004, 0x0040, 0x37da, 0x0070, 0x37da,
+ 0x0078, 0x37d1, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084,
+ 0x0001, 0x0040, 0x37e7, 0x0070, 0x37e7, 0x0078, 0x37de, 0x20a9,
+ 0x00fa, 0x0070, 0x37ed, 0x0078, 0x37e9, 0x6808, 0xa084, 0xfffd,
+ 0x680a, 0x681b, 0x0047, 0x2009, 0x3968, 0x200b, 0x0007, 0x784c,
+ 0x784a, 0x2091, 0x8001, 0x007c, 0x2079, 0x3900, 0x1078, 0x3827,
+ 0x1078, 0x380b, 0x1078, 0x3819, 0x7833, 0x0000, 0x7847, 0x0000,
+ 0x784b, 0x0000, 0x007c, 0x2019, 0x000c, 0x2011, 0x3946, 0x2204,
+ 0xa086, 0x003c, 0x0040, 0x3816, 0x2019, 0x0008, 0x7b2a, 0x7b2e,
+ 0x007c, 0x2019, 0x0039, 0x2011, 0x3946, 0x2204, 0xa086, 0x003c,
+ 0x0040, 0x3824, 0x2019, 0x0027, 0x7b36, 0x7b3a, 0x007c, 0x2019,
+ 0x3971, 0x2011, 0x3946, 0x2204, 0xa086, 0x003c, 0x0040, 0x3832,
+ 0x2019, 0x2626, 0x7b22, 0x7b26, 0x783f, 0x0000, 0x7843, 0x000a,
+ 0x007c, 0x8e59
+};
+#define ISP_CODE_LENGTH 0x283a
+#endif
+/*
+ * Firmware Version 7.55.00 (16:16 Mar 20, 1998)
+ */
+
#define ISP_CODE_VERSION 7*1024+55
static const u_int16_t ISP_RISC_CODE[] = {
0x0078, 0x103a, 0x0000, 0x3cd2, 0x0000, 0x2043, 0x4f50, 0x5952,
@@ -1960,6166 +3261,5933 @@ static const u_int16_t ISP_RISC_CODE[] = {
};
#define ISP_CODE_LENGTH 0x3cd2
-/*
- * We now only support 1.15.07 version F/W with some various flavors
- *
- * ISP2100_FABRIC provides Fabric Login support
- * ISP2100_SCCLUN provides 16 bits worth of lun.
- *
- * As of 11/24/98 neither Fabric nor SCCLUN have been extensively tested.
- */
#define ISP2100_CODE_ORG 0x1000
-#define ISP2100_CODE_VERSION 1*1024+15
-/* #define ISP2100_FABRIC 1 */
-/* #define ISP2100_SCCLUN 1 */
-
-#if !defined(ISP2100_FABRIC) && !defined(ISP2100_SCCLUN)
/************************************************************************
* *
- * --- ISP2100 Initiator/Target Firmware --- *
+ * --- ISP2100 Fabric Initiator/Target Firmware --- *
* *
* *
- ************************************************************************
- * *
- * NOTICE *
- * *
- * COPYRIGHT 1998 QLOGIC CORPORATION *
- * ALL RIGHTS RESERVED *
- * *
- * This computer program is CONFIDENTIAL and contains TRADE SECRETS of *
- * QLOGIC CORPORATION. The receipt or possession of this program does *
- * not convey any rights to reproduce or disclose its contents, or to *
- * manufacture, use, or sell anything that it may describe, in whole or *
- * in part, without the specific written consent of QLOGIC CORPORATION. *
- * Any reproduction of this program without the express written consent *
- * of QLOGIC CORPORATION is a violation of the copyright laws and may *
- * subject you to civil liability and criminal prosecution. *
- * *
- ************************************************************************
- */
+ ************************************************************************/
+#if 0
/*
- * Firmware Version 1.15.07 (14:43 Oct 13, 1998)
+ * Firmware Version 1.13.00 (18:04 May 04, 1998)
*/
-
+#define ISP2100_CODE_VERSION 1*1024+13
static const u_int16_t ISP2100_RISC_CODE[] = {
- 0x0078, 0x1029, 0x0000, 0x5e69, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x0078, 0x1029, 0x0000, 0x5c95, 0x0000, 0x2043, 0x4f50, 0x5952,
0x4947, 0x4854, 0x2031, 0x3939, 0x3620, 0x514c, 0x4f47, 0x4943,
0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350,
0x3231, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
- 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3135, 0x2020, 0x2020,
- 0x2400, 0x20c1, 0x0021, 0x20a1, 0x6e69, 0x2009, 0x0000, 0x20a9,
- 0x0697, 0x41a4, 0x3400, 0x20c9, 0x72ff, 0x2091, 0x2000, 0x2059,
- 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x1ff1, 0x2051, 0x6f00,
- 0x2a70, 0x705b, 0x8d00, 0x705f, 0xffff, 0x7057, 0x8cf9, 0x7063,
- 0x0300, 0x1078, 0x1235, 0x20a1, 0x7500, 0x715c, 0x810d, 0x810d,
+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3133, 0x2020, 0x2020,
+ 0x2400, 0x20c1, 0x0021, 0x20a1, 0x6c95, 0x2009, 0x0000, 0x20a9,
+ 0x076b, 0x41a4, 0x3400, 0x20c9, 0x71ff, 0x2091, 0x2000, 0x2059,
+ 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x1e36, 0x2051, 0x6d00,
+ 0x2a70, 0x705b, 0x8c00, 0x705f, 0xffff, 0x7057, 0x8bf9, 0x7063,
+ 0x0300, 0x1078, 0x1264, 0x20a1, 0x7400, 0x715c, 0x810d, 0x810d,
0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0007, 0xa112, 0xa00e,
0x21a8, 0x41a4, 0x3400, 0x8211, 0x00c0, 0x1058, 0x715c, 0x3400,
0xa102, 0x0040, 0x1068, 0x0048, 0x1068, 0x20a8, 0xa00e, 0x41a4,
- 0x1078, 0x1200, 0x1078, 0x1321, 0x1078, 0x14a6, 0x1078, 0x192f,
- 0x1078, 0x32c3, 0x1078, 0x5567, 0x1078, 0x12ac, 0x1078, 0x22f7,
- 0x1078, 0x38fc, 0x1078, 0x36d4, 0x1078, 0x40ad, 0x1078, 0x1dbe,
- 0x1078, 0x42ec, 0x1078, 0x3e1a, 0x1078, 0x1cdd, 0x1078, 0x1d9d,
+ 0x1078, 0x122b, 0x1078, 0x134e, 0x1078, 0x14d3, 0x1078, 0x17d7,
+ 0x1078, 0x324a, 0x1078, 0x54fc, 0x1078, 0x12d9, 0x1078, 0x2191,
+ 0x1078, 0x3875, 0x1078, 0x3655, 0x1078, 0x4064, 0x1078, 0x1c35,
+ 0x1078, 0x4213, 0x1078, 0x3d73, 0x1078, 0x1b5d, 0x1078, 0x1c14,
0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x109d, 0x7820, 0xa086,
0x0002, 0x00c0, 0x109d, 0x7823, 0x4000, 0x0068, 0x1095, 0x781b,
0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000,
0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003,
- 0x00c0, 0x10bd, 0x1078, 0x2a3b, 0x1078, 0x231f, 0x1078, 0x394c,
- 0x1078, 0x37bf, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
- 0x10c1, 0x1078, 0x40c5, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
- 0x10aa, 0x1078, 0x5239, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x112a,
- 0x10cd, 0x117d, 0x11fd, 0x11fe, 0x11ff, 0x1078, 0x1288, 0x007c,
- 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2b5e, 0x2079, 0x0100,
- 0x7844, 0xa005, 0x00c0, 0x1127, 0x2011, 0x31f0, 0x1078, 0x4187,
+ 0x00c0, 0x10bd, 0x1078, 0x2a96, 0x1078, 0x21b9, 0x1078, 0x38c5,
+ 0x1078, 0x373c, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
+ 0x10c1, 0x1078, 0x4078, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
+ 0x10aa, 0x1078, 0x52d8, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x1151,
+ 0x10cd, 0x11aa, 0x1228, 0x1229, 0x122a, 0x1078, 0x12b7, 0x007c,
+ 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2aec, 0x2079, 0x0100,
+ 0x7844, 0xa005, 0x00c0, 0x1142, 0x2011, 0x318e, 0x1078, 0x40d1,
0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010,
- 0x73b0, 0x1078, 0x29fa, 0x1078, 0x5084, 0x2011, 0x0004, 0x1078,
- 0x622b, 0x1078, 0x366e, 0x2079, 0x6f51, 0x7804, 0xd0ac, 0x00c0,
- 0x1115, 0x2011, 0x0001, 0x1078, 0x622b, 0x7083, 0x0000, 0x7087,
- 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x20a1, 0x2011, 0x0005,
- 0x1078, 0x5193, 0x1078, 0x4893, 0x0c7e, 0x2061, 0x0100, 0x60e3,
- 0x0008, 0x0c7f, 0x127f, 0x0078, 0x1129, 0x7083, 0x0000, 0x7087,
- 0xffff, 0x7003, 0x0002, 0x2011, 0x0005, 0x1078, 0x5193, 0x1078,
- 0x4893, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x0f7f,
- 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x7084, 0xa086, 0xffff,
- 0x0040, 0x1138, 0x1078, 0x20a1, 0x1078, 0x4893, 0x0078, 0x117b,
- 0x7080, 0xa005, 0x00c0, 0x117b, 0x2001, 0x6f52, 0x2004, 0xd0ac,
- 0x0040, 0x115e, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000,
- 0x017e, 0x1078, 0x34cb, 0x00c0, 0x1151, 0x6000, 0xd0ec, 0x00c0,
- 0x1159, 0x017f, 0x8108, 0x00f0, 0x1148, 0x0c7f, 0x157f, 0x0078,
- 0x115e, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x117b, 0x7003, 0x0003,
- 0x7087, 0xffff, 0x2001, 0x0000, 0x1078, 0x1f8a, 0x1078, 0x2a74,
- 0x2001, 0x70b7, 0x2004, 0xa086, 0x0005, 0x00c0, 0x1173, 0x2011,
- 0x0000, 0x1078, 0x5193, 0x2011, 0x0000, 0x1078, 0x519d, 0x1078,
- 0x4893, 0x1078, 0x4943, 0x127f, 0x007c, 0x017e, 0x0f7e, 0x127e,
- 0x2091, 0x8000, 0x2079, 0x0100, 0x7940, 0xa18c, 0x0010, 0x7942,
- 0x7924, 0xd1b4, 0x0040, 0x118e, 0x7827, 0x0040, 0xd19c, 0x0040,
- 0x1193, 0x7827, 0x0008, 0x007e, 0x037e, 0x157e, 0x7900, 0xa18a,
- 0x0003, 0x0050, 0x11b9, 0x7954, 0xd1ac, 0x00c0, 0x11b9, 0x2009,
- 0x00f8, 0x1078, 0x3292, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9,
- 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x11b1, 0x7824, 0xd0ac, 0x00c0,
- 0x11ed, 0x00f0, 0x11a9, 0x2001, 0x0001, 0x1078, 0x1f8a, 0x0078,
- 0x11f6, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0008, 0x00e0,
- 0x11bf, 0x2091, 0x6000, 0x00f0, 0x11bf, 0x7853, 0x0400, 0x782f,
- 0x0000, 0x2009, 0x00f8, 0x1078, 0x3292, 0x20a9, 0x000e, 0x0005,
- 0x00f0, 0x11cf, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, 0x0010,
- 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, 0x11e4,
- 0x7824, 0xd0ac, 0x00c0, 0x11ed, 0x8319, 0x00c0, 0x11da, 0x2001,
- 0x0001, 0x1078, 0x1f8a, 0x0078, 0x11f4, 0x7828, 0xc09d, 0x782a,
- 0x7827, 0x0008, 0x7827, 0x0040, 0x7853, 0x0400, 0x157f, 0x037f,
- 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, 0x007c,
- 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048, 0x120c,
- 0x704f, 0xffff, 0x0078, 0x120e, 0x704f, 0x0000, 0x7053, 0xffff,
- 0x2061, 0x70a0, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800,
- 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000,
- 0x601f, 0x07d0, 0x2061, 0x70a8, 0x6003, 0x8000, 0x6007, 0x0000,
- 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000,
- 0x601b, 0x0001, 0x601f, 0x0000, 0x007c, 0x1078, 0x125b, 0x2011,
- 0x0000, 0x81ff, 0x0040, 0x125a, 0xa186, 0x0001, 0x00c0, 0x124a,
- 0x705f, 0x8fff, 0x7057, 0x7d01, 0x7063, 0x0100, 0x705b, 0x7d00,
- 0x0078, 0x1258, 0xa186, 0x0002, 0x00c0, 0x1252, 0x2011, 0x0000,
- 0x0078, 0x1258, 0xa186, 0x0005, 0x00c0, 0x1258, 0x2011, 0x0001,
- 0x1078, 0x1282, 0x007c, 0x2009, 0x0000, 0x2011, 0x0000, 0x1078,
- 0x1282, 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061,
- 0x7fff, 0x2c04, 0xa406, 0x0040, 0x1270, 0xc18d, 0x0078, 0x127d,
- 0xc185, 0x2011, 0x0001, 0x1078, 0x1282, 0x2061, 0xffff, 0x2362,
- 0x2c04, 0xa306, 0x00c0, 0x127d, 0xc195, 0x2011, 0x0001, 0x1078,
- 0x1282, 0x007c, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c,
- 0x2091, 0x8000, 0x0068, 0x128a, 0x007e, 0x017e, 0x2079, 0x0000,
- 0x7818, 0xa084, 0x0000, 0x00c0, 0x1290, 0x017f, 0x792e, 0x007f,
- 0x782a, 0x007f, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, 0x781b,
- 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2079, 0x6f00, 0x7803,
- 0x0005, 0x0078, 0x12a9, 0x007c, 0x2071, 0x6f00, 0x7158, 0x712e,
- 0x2021, 0x0001, 0xa190, 0x002d, 0xa298, 0x002d, 0x0048, 0x12c2,
- 0x705c, 0xa302, 0x00c8, 0x12c2, 0x220a, 0x2208, 0x2310, 0x8420,
- 0x0078, 0x12b4, 0x200b, 0x0000, 0x7496, 0x749a, 0x007c, 0x0e7e,
- 0x127e, 0x2091, 0x8000, 0x2071, 0x6f00, 0x7098, 0xa0ea, 0x0010,
- 0x00c8, 0x12d5, 0xa06e, 0x0078, 0x12df, 0x8001, 0x709a, 0x702c,
- 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f,
- 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x6f00, 0x127e, 0x2091, 0x8000,
- 0x7098, 0x8001, 0x00c8, 0x12ef, 0xa06e, 0x0078, 0x12f8, 0x709a,
- 0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000,
- 0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x6f00, 0x702c, 0x206a, 0x2d00, 0x702e, 0x7098, 0x8000, 0x709a,
- 0x127f, 0x0e7f, 0x007c, 0x8dff, 0x0040, 0x1317, 0x6804, 0x6807,
- 0x0000, 0x007e, 0x1078, 0x12fb, 0x0d7f, 0x0078, 0x130b, 0x007c,
- 0x0e7e, 0x2071, 0x6f00, 0x7098, 0xa08a, 0x0010, 0xa00d, 0x0e7f,
- 0x007c, 0x0e7e, 0x2071, 0x70d9, 0x7007, 0x0000, 0x701b, 0x0000,
- 0x701f, 0x0000, 0x2071, 0x0000, 0x7010, 0xa085, 0x8004, 0x7012,
- 0x0e7f, 0x007c, 0x0e7e, 0x2270, 0x700b, 0x0000, 0x2071, 0x70d9,
- 0x7018, 0xa088, 0x70e2, 0x220a, 0x8000, 0xa084, 0x0007, 0x701a,
- 0x7004, 0xa005, 0x00c0, 0x134a, 0x0f7e, 0x2079, 0x0010, 0x1078,
- 0x135b, 0x0f7f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x70d9, 0x7004,
- 0xa005, 0x00c0, 0x1359, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x135b,
- 0x0f7f, 0x0e7f, 0x007c, 0x7000, 0x0079, 0x135e, 0x1362, 0x13cc,
- 0x13e9, 0x13e9, 0x7018, 0x711c, 0xa106, 0x00c0, 0x136a, 0x7007,
- 0x0000, 0x007c, 0x0d7e, 0xa180, 0x70e2, 0x2004, 0x700a, 0x2068,
- 0x8108, 0xa18c, 0x0007, 0x711e, 0x7803, 0x0026, 0x6824, 0x7832,
- 0x6828, 0x7836, 0x682c, 0x783a, 0x6830, 0x783e, 0x6810, 0x700e,
- 0x680c, 0x7016, 0x6804, 0x0d7f, 0xd084, 0x0040, 0x138c, 0x7007,
- 0x0001, 0x1078, 0x1391, 0x007c, 0x7007, 0x0002, 0x1078, 0x13a7,
- 0x007c, 0x017e, 0x027e, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040,
- 0x00c8, 0x139c, 0x2110, 0xa006, 0x700e, 0x7212, 0x8203, 0x7822,
- 0x7803, 0x0020, 0x7803, 0x0041, 0x027f, 0x017f, 0x007c, 0x017e,
- 0x027e, 0x137e, 0x147e, 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014,
- 0x7803, 0x0026, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8,
- 0x13bb, 0x2110, 0xa006, 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822,
- 0x7803, 0x0020, 0x7803, 0x0001, 0x3300, 0x7016, 0x157f, 0x147f,
- 0x137f, 0x027f, 0x017f, 0x007c, 0x137e, 0x147e, 0x157e, 0x2099,
- 0x6fe5, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
- 0x127e, 0x2091, 0x8000, 0x7803, 0x0041, 0x7007, 0x0003, 0x7000,
- 0xc084, 0x7002, 0x700b, 0x6fe0, 0x127f, 0x157f, 0x147f, 0x137f,
- 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x7014, 0x209c, 0x20a1,
- 0x0014, 0x7803, 0x0026, 0x2001, 0x7015, 0x20ac, 0x53a6, 0x2099,
- 0x7016, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
- 0x127e, 0x2091, 0x8000, 0x7803, 0x0001, 0x7007, 0x0004, 0x7000,
- 0xc08c, 0x7002, 0x700b, 0x7011, 0x127f, 0x157f, 0x147f, 0x137f,
- 0x007c, 0x017e, 0x0e7e, 0x2071, 0x70d9, 0x0f7e, 0x2079, 0x0010,
- 0x7904, 0x7803, 0x0002, 0xd1fc, 0x0040, 0x142c, 0xa18c, 0x0700,
- 0x0040, 0x1429, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078,
- 0x142c, 0x7004, 0x1079, 0x1430, 0x0f7f, 0x0e7f, 0x017f, 0x007c,
- 0x135b, 0x1438, 0x145a, 0x1474, 0x149d, 0x1436, 0x0078, 0x1436,
- 0x137e, 0x147e, 0x157e, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803,
- 0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f,
- 0x137f, 0x700c, 0xa005, 0x0040, 0x1461, 0x1078, 0x1391, 0x007c,
- 0x7008, 0xa080, 0x0002, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078,
- 0x135b, 0x007c, 0x700c, 0xa005, 0x0040, 0x1461, 0x1078, 0x13a7,
- 0x007c, 0x0d7e, 0x7008, 0x2068, 0x7830, 0x6826, 0x7834, 0x682a,
- 0x7838, 0x682e, 0x783c, 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007,
- 0x0000, 0x1078, 0x135b, 0x007c, 0x137e, 0x147e, 0x157e, 0x2001,
- 0x6fe3, 0x2004, 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803,
- 0x0040, 0x20a9, 0x0020, 0x53a5, 0x2001, 0x6fe5, 0x2004, 0xd0bc,
- 0x0040, 0x1493, 0x2001, 0x6fee, 0x2004, 0xa080, 0x000d, 0x20a0,
- 0x20a9, 0x0020, 0x53a5, 0x157f, 0x147f, 0x137f, 0x7007, 0x0000,
- 0x1078, 0x39f5, 0x1078, 0x135b, 0x007c, 0x2001, 0x7013, 0x2003,
- 0x0100, 0x7007, 0x0000, 0x1078, 0x135b, 0x007c, 0x127e, 0x2091,
- 0x2100, 0x2079, 0x0030, 0x2071, 0x70ea, 0x7003, 0x0000, 0x700f,
- 0x70f0, 0x7013, 0x70f0, 0x780f, 0x0070, 0x127f, 0x007c, 0x6934,
- 0xa184, 0x0007, 0x0079, 0x14bc, 0x14c4, 0x150a, 0x14c4, 0x14c4,
- 0x14c4, 0x14ef, 0x14d3, 0x14c8, 0xa085, 0x0001, 0x0078, 0x1524,
- 0x684c, 0xd0bc, 0x0040, 0x14c4, 0x6860, 0x682e, 0x685c, 0x682a,
- 0x6858, 0x0078, 0x1512, 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0,
- 0x14c4, 0x684c, 0xd0bc, 0x0040, 0x14c4, 0x6860, 0x682e, 0x685c,
- 0x682a, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
- 0xa080, 0x1beb, 0x2004, 0x6832, 0x6858, 0x0078, 0x151a, 0xa18c,
- 0x00ff, 0xa186, 0x0015, 0x00c0, 0x14c4, 0x684c, 0xd0ac, 0x0040,
- 0x14c4, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
- 0xa080, 0x1beb, 0x2004, 0x6832, 0xa006, 0x682e, 0x682a, 0x6858,
- 0x0078, 0x151a, 0x684c, 0xd0ac, 0x0040, 0x14c4, 0xa006, 0x682e,
- 0x682a, 0x6858, 0xa18c, 0x000f, 0xa188, 0x1beb, 0x210c, 0x6932,
- 0x2d08, 0x691a, 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a,
- 0x697c, 0x6912, 0x6980, 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1,
- 0x2000, 0x2001, 0x020a, 0x2004, 0x82ff, 0x0040, 0x153f, 0xa280,
- 0x0004, 0x0d7e, 0x206c, 0x684c, 0xd0dc, 0x00c0, 0x153b, 0x1078,
- 0x14b7, 0x10c0, 0x1288, 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e,
- 0x047e, 0x037e, 0x027e, 0x2091, 0x2100, 0x027f, 0x037f, 0x047f,
- 0x7000, 0xa005, 0x00c0, 0x1553, 0x7206, 0x2001, 0x1567, 0x007e,
- 0x2260, 0x0078, 0x167f, 0x710c, 0x220a, 0x8108, 0x230a, 0x8108,
- 0x240a, 0x8108, 0xa182, 0x710b, 0x0048, 0x1560, 0x2009, 0x70f0,
- 0x710e, 0x7000, 0xa005, 0x00c0, 0x1567, 0x1078, 0x1668, 0x127f,
- 0x007c, 0x127e, 0x027e, 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100,
- 0x007f, 0x047f, 0x037f, 0x027f, 0x0d7e, 0x0c7e, 0x2460, 0x6110,
- 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0040, 0x15bb, 0x6808, 0xa005,
- 0x0040, 0x1621, 0x7000, 0xa005, 0x00c0, 0x1588, 0x0078, 0x15b5,
- 0x700c, 0x7110, 0xa106, 0x00c0, 0x1625, 0x7004, 0xa406, 0x00c0,
- 0x15b5, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, 0x159e, 0x047e,
- 0x1078, 0x1737, 0x047f, 0x2460, 0x0078, 0x157e, 0x2001, 0x0207,
- 0x2004, 0xd09c, 0x00c0, 0x1591, 0x7804, 0xa084, 0x6000, 0x0040,
- 0x15af, 0xa086, 0x6000, 0x0040, 0x15af, 0x0078, 0x1591, 0x7803,
- 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
- 0x55fc, 0x0078, 0x1625, 0x6808, 0xa005, 0x0040, 0x1621, 0x7000,
- 0xa005, 0x00c0, 0x15c5, 0x0078, 0x1621, 0x700c, 0x7110, 0xa106,
- 0x00c0, 0x15ce, 0x7004, 0xa406, 0x00c0, 0x1621, 0x2001, 0x0005,
- 0x2004, 0xd08c, 0x0040, 0x15db, 0x047e, 0x1078, 0x1737, 0x047f,
- 0x2460, 0x0078, 0x15bb, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0,
- 0x15ce, 0x2001, 0x0005, 0x2004, 0xd08c, 0x00c0, 0x15d4, 0x7804,
- 0xa084, 0x6000, 0x0040, 0x15f2, 0xa086, 0x6000, 0x0040, 0x15f2,
- 0x0078, 0x15ce, 0x7007, 0x0000, 0xa016, 0x2218, 0x7000, 0xa08e,
- 0x0001, 0x0040, 0x1613, 0xa08e, 0x0002, 0x00c0, 0x1621, 0x0c7e,
- 0x0e7e, 0x6818, 0x2060, 0x1078, 0x1bc0, 0x2804, 0xac70, 0x6034,
- 0xd09c, 0x00c0, 0x160f, 0x7308, 0x720c, 0x0078, 0x1611, 0x7310,
- 0x7214, 0x0e7f, 0x0c7f, 0x7820, 0xa318, 0x7824, 0xa211, 0x6810,
- 0xa300, 0x6812, 0x6814, 0xa201, 0x6816, 0x7803, 0x0004, 0x7003,
- 0x0000, 0x2009, 0x0048, 0x1078, 0x55fc, 0x0c7f, 0x0d7f, 0x127f,
- 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x70ea, 0x7000, 0xa086, 0x0000,
- 0x0040, 0x1665, 0x7004, 0xac06, 0x00c0, 0x1656, 0x2079, 0x0030,
- 0x7804, 0xd0fc, 0x00c0, 0x1652, 0x2001, 0x0207, 0x2004, 0xd09c,
- 0x00c0, 0x1638, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1644,
- 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, 0x0000,
- 0x0078, 0x1656, 0x1078, 0x1737, 0x0078, 0x162d, 0x157e, 0x20a9,
- 0x0009, 0x2009, 0x70f0, 0x2104, 0xac06, 0x00c0, 0x1660, 0x200a,
- 0xa188, 0x0003, 0x00f0, 0x165b, 0x157f, 0x0e7f, 0x0f7f, 0x007c,
- 0x700c, 0x7110, 0xa106, 0x00c0, 0x1670, 0x7003, 0x0000, 0x007c,
+ 0x73b8, 0x1078, 0x2a53, 0x1078, 0x5129, 0x2011, 0x0004, 0x1078,
+ 0x6135, 0x1078, 0x35ef, 0x70c7, 0x0000, 0x70bf, 0x0000, 0x70c3,
+ 0x0000, 0x1078, 0x1145, 0x2011, 0x0000, 0x2079, 0x6d51, 0x7804,
+ 0xd0ac, 0x0040, 0x1104, 0xc295, 0x70a4, 0xa005, 0x0040, 0x1109,
+ 0xc29d, 0x72be, 0xa296, 0x0004, 0x0040, 0x112a, 0x2011, 0x0001,
+ 0x1078, 0x6135, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002,
+ 0x0f7f, 0x1078, 0x1ee6, 0x2011, 0x0005, 0x1078, 0x5232, 0x1078,
+ 0x476a, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x127f,
+ 0x0078, 0x1144, 0x7003, 0x0003, 0x2001, 0x0000, 0x1078, 0x1dc9,
+ 0x2011, 0x0000, 0x1078, 0x5232, 0x2011, 0x0000, 0x1078, 0x523c,
+ 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x1078, 0x476a,
+ 0x1078, 0x4821, 0x0f7f, 0x127f, 0x007c, 0x0c7e, 0x20a9, 0x0082,
+ 0x2009, 0x007e, 0x1078, 0x342f, 0x8108, 0x00f0, 0x114a, 0x0c7f,
+ 0x007c, 0x127e, 0x2091, 0x8000, 0x708c, 0xa086, 0xffff, 0x0040,
+ 0x115f, 0x1078, 0x1ee6, 0x1078, 0x476a, 0x0078, 0x11a8, 0x70bc,
+ 0xd09c, 0x0040, 0x1187, 0xd084, 0x0040, 0x1187, 0x0f7e, 0x2079,
+ 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c, 0x0040, 0x1187,
+ 0x70c0, 0xa086, 0xffff, 0x0040, 0x1183, 0x1078, 0x1fdb, 0x1078,
+ 0x476a, 0x2011, 0x0001, 0x2019, 0x0000, 0x1078, 0x2013, 0x1078,
+ 0x476a, 0x0078, 0x11a8, 0x70c4, 0xa005, 0x00c0, 0x11a8, 0x7088,
+ 0xa005, 0x00c0, 0x11a8, 0x7003, 0x0003, 0x708f, 0xffff, 0x2001,
+ 0x0000, 0x1078, 0x1dc9, 0x1078, 0x2ad1, 0x2001, 0x6f11, 0x2004,
+ 0xa086, 0x0005, 0x00c0, 0x11a0, 0x2011, 0x0000, 0x1078, 0x5232,
+ 0x2011, 0x0000, 0x1078, 0x523c, 0x1078, 0x476a, 0x1078, 0x4821,
+ 0x127f, 0x007c, 0x017e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079,
+ 0x0100, 0x7843, 0x0000, 0x7924, 0xd1b4, 0x0040, 0x11b9, 0x7827,
+ 0x0040, 0xd19c, 0x0040, 0x11be, 0x7827, 0x0008, 0x007e, 0x037e,
+ 0x157e, 0x7900, 0xa18a, 0x0003, 0x0050, 0x11e4, 0x7954, 0xd1ac,
+ 0x00c0, 0x11e4, 0x2009, 0x00f8, 0x1078, 0x3233, 0x7843, 0x0090,
+ 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x11dc,
+ 0x7824, 0xd0ac, 0x00c0, 0x1218, 0x00f0, 0x11d4, 0x2001, 0x0001,
+ 0x1078, 0x1dc9, 0x0078, 0x1221, 0x7853, 0x0000, 0x782f, 0x0020,
+ 0x20a9, 0x0008, 0x00e0, 0x11ea, 0x2091, 0x6000, 0x00f0, 0x11ea,
+ 0x7853, 0x0400, 0x782f, 0x0000, 0x2009, 0x00f8, 0x1078, 0x3233,
+ 0x20a9, 0x000e, 0x0005, 0x00f0, 0x11fa, 0x7853, 0x1400, 0x7843,
+ 0x0090, 0x7843, 0x0010, 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005,
+ 0xd08c, 0x0040, 0x120f, 0x7824, 0xd0ac, 0x00c0, 0x1218, 0x8319,
+ 0x00c0, 0x1205, 0x2001, 0x0001, 0x1078, 0x1dc9, 0x0078, 0x121f,
+ 0x7828, 0xc09d, 0x782a, 0x7827, 0x0008, 0x7827, 0x0040, 0x7853,
+ 0x0400, 0x157f, 0x037f, 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c,
+ 0x007c, 0x007c, 0x007c, 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082,
+ 0x0002, 0x0048, 0x1237, 0x704f, 0xffff, 0x0078, 0x1239, 0x704f,
+ 0x0000, 0x7053, 0xffff, 0x7067, 0x0000, 0x706b, 0x0000, 0x2061,
+ 0x6f00, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f,
+ 0x0200, 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f,
+ 0x07d0, 0x2061, 0x6f08, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b,
+ 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b,
+ 0x0001, 0x601f, 0x0000, 0x007c, 0x1078, 0x128a, 0x2011, 0x0000,
+ 0x81ff, 0x0040, 0x1289, 0xa186, 0x0001, 0x00c0, 0x1279, 0x705f,
+ 0x8fff, 0x7057, 0x7c01, 0x7063, 0x0100, 0x705b, 0x7c00, 0x0078,
+ 0x1287, 0xa186, 0x0002, 0x00c0, 0x1281, 0x2011, 0x0000, 0x0078,
+ 0x1287, 0xa186, 0x0005, 0x00c0, 0x1287, 0x2011, 0x0001, 0x1078,
+ 0x12b1, 0x007c, 0x2009, 0x0000, 0x2011, 0x0000, 0x1078, 0x12b1,
+ 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061, 0x7fff,
+ 0x2c04, 0xa406, 0x0040, 0x129f, 0xc18d, 0x0078, 0x12ac, 0xc185,
+ 0x2011, 0x0001, 0x1078, 0x12b1, 0x2061, 0xffff, 0x2362, 0x2c04,
+ 0xa306, 0x00c0, 0x12ac, 0xc195, 0x2011, 0x0001, 0x1078, 0x12b1,
+ 0x007c, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c, 0x2091,
+ 0x8000, 0x0068, 0x12b9, 0x007e, 0x017e, 0x2079, 0x0000, 0x7818,
+ 0xa084, 0x0000, 0x00c0, 0x12bf, 0x017f, 0x792e, 0x007f, 0x782a,
+ 0x007f, 0x7826, 0x7823, 0x8002, 0x781b, 0x0001, 0x2091, 0x5000,
+ 0x2091, 0x4080, 0x2079, 0x6d00, 0x7803, 0x0005, 0x0078, 0x12d6,
+ 0x007c, 0x2071, 0x6d00, 0x7158, 0x712e, 0x2021, 0x0001, 0xa190,
+ 0x002d, 0xa298, 0x002d, 0x0048, 0x12ef, 0x705c, 0xa302, 0x00c8,
+ 0x12ef, 0x220a, 0x2208, 0x2310, 0x8420, 0x0078, 0x12e1, 0x200b,
+ 0x0000, 0x749e, 0x74a2, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000,
+ 0x2071, 0x6d00, 0x70a0, 0xa0ea, 0x0010, 0x00c8, 0x1302, 0xa06e,
+ 0x0078, 0x130c, 0x8001, 0x70a2, 0x702c, 0x2068, 0x2d04, 0x702e,
+ 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e,
+ 0x2071, 0x6d00, 0x127e, 0x2091, 0x8000, 0x70a0, 0x8001, 0x00c8,
+ 0x131c, 0xa06e, 0x0078, 0x1325, 0x70a2, 0x702c, 0x2068, 0x2d04,
+ 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c,
+ 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x6d00, 0x702c, 0x206a,
+ 0x2d00, 0x702e, 0x70a0, 0x8000, 0x70a2, 0x127f, 0x0e7f, 0x007c,
+ 0x8dff, 0x0040, 0x1344, 0x6804, 0x6807, 0x0000, 0x007e, 0x1078,
+ 0x1328, 0x0d7f, 0x0078, 0x1338, 0x007c, 0x0e7e, 0x2071, 0x6d00,
+ 0x70a0, 0xa08a, 0x0010, 0xa00d, 0x0e7f, 0x007c, 0x0e7e, 0x2071,
+ 0x6f31, 0x7007, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071,
+ 0x0000, 0x7010, 0xa085, 0x8004, 0x7012, 0x0e7f, 0x007c, 0x0e7e,
+ 0x2270, 0x700b, 0x0000, 0x2071, 0x6f31, 0x7018, 0xa088, 0x6f3a,
+ 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0,
+ 0x1377, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1388, 0x0f7f, 0x0e7f,
+ 0x007c, 0x0e7e, 0x2071, 0x6f31, 0x7004, 0xa005, 0x00c0, 0x1386,
+ 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1388, 0x0f7f, 0x0e7f, 0x007c,
+ 0x7000, 0x0079, 0x138b, 0x138f, 0x13f9, 0x1416, 0x1416, 0x7018,
+ 0x711c, 0xa106, 0x00c0, 0x1397, 0x7007, 0x0000, 0x007c, 0x0d7e,
+ 0xa180, 0x6f3a, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
+ 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
+ 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
+ 0x0d7f, 0xd084, 0x0040, 0x13b9, 0x7007, 0x0001, 0x1078, 0x13be,
+ 0x007c, 0x7007, 0x0002, 0x1078, 0x13d4, 0x007c, 0x017e, 0x027e,
+ 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x13c9, 0x2110,
+ 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
+ 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e,
+ 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c,
+ 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x13e8, 0x2110, 0xa006,
+ 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
+ 0x0001, 0x3300, 0x7016, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f,
+ 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0x6dc5, 0x20a1, 0x0018,
+ 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
+ 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b,
+ 0x6dc0, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e,
+ 0x157e, 0x2001, 0x6df4, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026,
+ 0x2001, 0x6df5, 0x20ac, 0x53a6, 0x2099, 0x6df6, 0x20a1, 0x0018,
+ 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
+ 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b,
+ 0x6df1, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e,
+ 0x2071, 0x6f31, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002,
+ 0xd1fc, 0x0040, 0x1459, 0xa18c, 0x0700, 0x0040, 0x1456, 0x7008,
+ 0xa080, 0x0002, 0x2003, 0x0200, 0x0078, 0x1459, 0x7004, 0x1079,
+ 0x145d, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x1388, 0x1465, 0x1487,
+ 0x14a1, 0x14ca, 0x1463, 0x0078, 0x1463, 0x137e, 0x147e, 0x157e,
+ 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x7010, 0x20a8,
+ 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f, 0x137f, 0x700c, 0xa005,
+ 0x0040, 0x148e, 0x1078, 0x13be, 0x007c, 0x7008, 0xa080, 0x0002,
+ 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x1388, 0x007c, 0x700c,
+ 0xa005, 0x0040, 0x148e, 0x1078, 0x13d4, 0x007c, 0x0d7e, 0x7008,
+ 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c,
+ 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x1388,
+ 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x6dc3, 0x2004, 0xa080,
+ 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020,
+ 0x53a5, 0x2001, 0x6dc5, 0x2004, 0xd0bc, 0x0040, 0x14c0, 0x2001,
+ 0x6dce, 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5,
+ 0x157f, 0x147f, 0x137f, 0x7007, 0x0000, 0x1078, 0x396e, 0x1078,
+ 0x1388, 0x007c, 0x2001, 0x6df3, 0x2003, 0x0100, 0x7007, 0x0000,
+ 0x1078, 0x1388, 0x007c, 0x127e, 0x2091, 0x2100, 0x2079, 0x0030,
+ 0x2071, 0x6f42, 0x7003, 0x0000, 0x700f, 0x6f48, 0x7013, 0x6f48,
+ 0x780f, 0x0070, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079,
+ 0x14e9, 0x14f1, 0x151b, 0x14f1, 0x14f1, 0x14f1, 0x1500, 0x14f1,
+ 0x14f5, 0xa085, 0x0001, 0x0078, 0x1531, 0x684c, 0xd0bc, 0x0040,
+ 0x14f1, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x1523,
+ 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x14f1, 0x684c, 0xd0ac,
+ 0x0040, 0x14f1, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084,
+ 0x000f, 0xa080, 0x1a82, 0x2004, 0x6832, 0xa006, 0x682e, 0x682a,
+ 0x6858, 0x0078, 0x152b, 0x684c, 0xd0ac, 0x0040, 0x14f1, 0xa006,
+ 0x682e, 0x682a, 0x6858, 0xa18c, 0x000f, 0xa188, 0x1a82, 0x210c,
+ 0x6932, 0x2d08, 0x691a, 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006,
+ 0x680a, 0x007c, 0x82ff, 0x0040, 0x1545, 0xa280, 0x0004, 0x0d7e,
+ 0x206c, 0x684c, 0xd0dc, 0x00c0, 0x1541, 0x1078, 0x14e4, 0x10c0,
+ 0x12b7, 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e,
+ 0x027e, 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005,
+ 0x00c0, 0x1559, 0x7206, 0x2001, 0x156d, 0x007e, 0x2260, 0x0078,
+ 0x164f, 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108,
+ 0xa182, 0x6f63, 0x0048, 0x1566, 0x2009, 0x6f48, 0x710e, 0x7000,
+ 0xa005, 0x00c0, 0x156d, 0x1078, 0x1638, 0x127f, 0x007c, 0x127e,
+ 0x027e, 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100, 0x007f, 0x047f,
+ 0x037f, 0x027f, 0x0c7e, 0x0d7e, 0x2460, 0x6110, 0x2168, 0x6a62,
+ 0x6b5e, 0xa005, 0x0040, 0x15bc, 0x6808, 0xa005, 0x0040, 0x15ea,
+ 0x7000, 0xa005, 0x00c0, 0x158e, 0x0078, 0x15b4, 0x700c, 0x7110,
+ 0xa106, 0x00c0, 0x15ba, 0x7004, 0xa406, 0x00c0, 0x15b4, 0x2001,
+ 0x0005, 0x2004, 0xd08c, 0x00c0, 0x15ee, 0x2001, 0x0207, 0x2004,
+ 0xd09c, 0x00c0, 0x1597, 0x7804, 0xa084, 0x6000, 0x0040, 0x15ae,
+ 0xa086, 0x6000, 0x0040, 0x15ae, 0x0078, 0x1597, 0x7803, 0x0004,
+ 0x7003, 0x0000, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5591,
+ 0x0078, 0x15ee, 0x0078, 0x15ee, 0x6808, 0xa005, 0x0040, 0x15ea,
+ 0x7000, 0xa005, 0x00c0, 0x15c6, 0x0078, 0x15ea, 0x700c, 0x7110,
+ 0xa106, 0x00c0, 0x15ba, 0x7004, 0xa406, 0x00c0, 0x15ea, 0x2001,
+ 0x0005, 0x2004, 0xd08c, 0x00c0, 0x15ee, 0x2001, 0x0207, 0x2004,
+ 0xd09c, 0x00c0, 0x15cf, 0x7804, 0xa084, 0x6000, 0x0040, 0x15e6,
+ 0xa086, 0x6000, 0x0040, 0x15e6, 0x0078, 0x15cf, 0x7803, 0x0004,
+ 0x7003, 0x0000, 0x2009, 0x0048, 0x1078, 0x5591, 0x0d7f, 0x0c7f,
+ 0x127f, 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x6f42, 0x7000, 0xa086,
+ 0x0000, 0x0040, 0x1635, 0x7004, 0xac06, 0x00c0, 0x1626, 0x2079,
+ 0x0030, 0x7804, 0xd0fc, 0x00c0, 0x1622, 0x2001, 0x0207, 0x2004,
+ 0xd09c, 0x00c0, 0x1601, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0,
+ 0x160d, 0x7908, 0xd1ec, 0x00c0, 0x1619, 0x2009, 0x0009, 0x0078,
+ 0x161b, 0x2009, 0x0019, 0x7803, 0x0002, 0x7902, 0x7003, 0x0003,
+ 0x0078, 0x1635, 0x1078, 0x16e5, 0x0078, 0x15f6, 0x157e, 0x20a9,
+ 0x0009, 0x2009, 0x6f48, 0x2104, 0xac06, 0x00c0, 0x1630, 0x200a,
+ 0xa188, 0x0003, 0x00f0, 0x162b, 0x157f, 0x0e7f, 0x0f7f, 0x007c,
+ 0x700c, 0x7110, 0xa106, 0x00c0, 0x1640, 0x7003, 0x0000, 0x007c,
0x2104, 0x7006, 0x2060, 0x8108, 0x211c, 0x8108, 0x2124, 0x8108,
- 0xa182, 0x710b, 0x0048, 0x167e, 0x2009, 0x70f0, 0x7112, 0x8cff,
- 0x00c0, 0x169e, 0x7908, 0xd1ec, 0x00c0, 0x1692, 0x1078, 0x190d,
- 0x0040, 0x1692, 0x7803, 0x0009, 0x7904, 0xd1fc, 0x0040, 0x168c,
- 0x7803, 0x0006, 0x7007, 0x0000, 0x1078, 0x190d, 0x0040, 0x16c5,
- 0x7803, 0x0019, 0x7003, 0x0003, 0x0078, 0x16c5, 0x6010, 0x2068,
- 0x2d58, 0x6828, 0xa406, 0x00c0, 0x16a9, 0x682c, 0xa306, 0x0040,
- 0x16ad, 0x1078, 0x1c0b, 0x00c0, 0x1682, 0x684c, 0xd0f4, 0x00c0,
- 0x1682, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034,
- 0xa0cc, 0x000f, 0x2009, 0x0011, 0x1078, 0x16c6, 0x0040, 0x16c4,
- 0x2009, 0x0001, 0x1078, 0x16c6, 0x2d58, 0x007c, 0x8aff, 0x0040,
- 0x1732, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x16e5, 0x0d7e,
- 0x2804, 0xac68, 0x2900, 0x0079, 0x16d5, 0x1714, 0x16f5, 0x16f5,
- 0x1714, 0x1714, 0x170c, 0x1714, 0x16f5, 0x1714, 0x16fb, 0x16fb,
- 0x1714, 0x1714, 0x1714, 0x1703, 0x16fb, 0xc0fc, 0x6852, 0x6b6c,
- 0x6a70, 0x6d1c, 0x6c20, 0x0d7e, 0xd99c, 0x0040, 0x1717, 0x2804,
- 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1717, 0x6b08, 0x6a0c, 0x6d00,
- 0x6c04, 0x0078, 0x1717, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08,
- 0x6e0c, 0x0078, 0x1717, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff,
- 0xa086, 0x001e, 0x00c0, 0x1714, 0x0d7f, 0x1078, 0x1ba7, 0x00c0,
- 0x16c6, 0xa00e, 0x0078, 0x1732, 0x0d7f, 0x1078, 0x1288, 0x7b22,
- 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000,
- 0x7002, 0x0d7f, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e,
- 0x2300, 0x6b10, 0xa302, 0x6812, 0x2200, 0x6a14, 0xa203, 0x6816,
- 0x1078, 0x1ba7, 0x007c, 0x1078, 0x1288, 0x1078, 0x1288, 0x127e,
- 0x2091, 0x2100, 0x007e, 0x017e, 0x2b68, 0x6818, 0x2060, 0x7904,
- 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, 0x1735, 0xa184, 0x0003,
- 0xa086, 0x0003, 0x0040, 0x1735, 0x7000, 0x0079, 0x174f, 0x1757,
- 0x1759, 0x182a, 0x188e, 0x18a5, 0x1757, 0x1757, 0x1757, 0x1078,
- 0x1288, 0x8001, 0x7002, 0xa184, 0x0880, 0x00c0, 0x176e, 0x8aff,
- 0x0040, 0x17ca, 0x2009, 0x0001, 0x1078, 0x16c6, 0x0040, 0x18b7,
- 0x2009, 0x0001, 0x1078, 0x16c6, 0x0078, 0x18b7, 0x7803, 0x0004,
- 0x7003, 0x0000, 0xd1dc, 0x0040, 0x17b9, 0x027e, 0x037e, 0x6b28,
- 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824, 0x6872, 0xa213, 0x6b2a,
- 0x6a2e, 0x7820, 0x6910, 0xa100, 0x6812, 0x7824, 0x6914, 0xa101,
- 0x6816, 0x037f, 0x027f, 0x7830, 0x681e, 0x7834, 0x6822, 0x1078,
- 0x1bc0, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003,
- 0x0000, 0x6850, 0xc0fd, 0x6852, 0x6808, 0x8001, 0x680a, 0x00c0,
- 0x17ab, 0x684c, 0xd0e4, 0x0040, 0x17ab, 0x7004, 0x2060, 0x2009,
- 0x0048, 0x1078, 0x55fc, 0x7808, 0xd0ec, 0x00c0, 0x17b5, 0x7803,
- 0x0009, 0x7003, 0x0004, 0x0078, 0x18b7, 0x1078, 0x1668, 0x0078,
- 0x18b7, 0x057e, 0x7d0c, 0x1078, 0x6e15, 0x057f, 0x1078, 0x18bb,
- 0x697c, 0x6912, 0x6980, 0x6916, 0x7803, 0x0009, 0x7003, 0x0003,
- 0x0078, 0x18b7, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005, 0x00c0,
- 0x17e2, 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0, 0x17de,
- 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x55fc, 0x1078, 0x1668,
- 0x0078, 0x18b7, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914, 0xa183,
- 0x0000, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa188, 0x0007,
- 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004, 0xa20a,
- 0x810b, 0x810b, 0x810b, 0x1078, 0x18ea, 0x7803, 0x0004, 0x780f,
- 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, 0x0040, 0x1803, 0x7803,
- 0x0002, 0x7803, 0x0004, 0x780f, 0x0070, 0x7004, 0x7007, 0x0000,
- 0x2060, 0x2009, 0x0048, 0x1078, 0x55fc, 0x1078, 0x190d, 0x0040,
- 0x17de, 0x7908, 0xd1ec, 0x00c0, 0x1821, 0x2009, 0x0009, 0x0078,
- 0x1823, 0x2009, 0x0019, 0x7902, 0x7803, 0x0009, 0x7003, 0x0003,
- 0x0078, 0x18b7, 0x8001, 0x7002, 0xd194, 0x0040, 0x183c, 0x7804,
- 0xd0fc, 0x00c0, 0x173f, 0x8aff, 0x0040, 0x18b7, 0x2009, 0x0001,
- 0x1078, 0x16c6, 0x0078, 0x18b7, 0xa184, 0x0880, 0x00c0, 0x1849,
- 0x8aff, 0x0040, 0x18b7, 0x2009, 0x0001, 0x1078, 0x16c6, 0x0078,
- 0x18b7, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040, 0x187d,
- 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1bc0, 0x0d7e, 0x0f7e,
- 0x2d78, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x186d, 0x6808,
- 0x2008, 0xa31a, 0x680c, 0xa213, 0x7810, 0xa100, 0x7812, 0x690c,
- 0x7814, 0xa101, 0x7816, 0x0078, 0x1879, 0x6810, 0x2008, 0xa31a,
- 0x6814, 0xa213, 0x7810, 0xa100, 0x7812, 0x6914, 0x7814, 0xa101,
- 0x7816, 0x0f7f, 0x0d7f, 0x0078, 0x1779, 0x057e, 0x7d0c, 0x1078,
- 0x6e15, 0x057f, 0x1078, 0x18bb, 0x697c, 0x6912, 0x6980, 0x6916,
- 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x18b7, 0x7803, 0x0004,
- 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x18a1, 0x6808, 0x8001,
- 0x680a, 0x00c0, 0x18a1, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
- 0x55fc, 0x1078, 0x1668, 0x0078, 0x18b7, 0x7803, 0x0004, 0x7003,
- 0x0000, 0x7004, 0x2060, 0x6010, 0xa005, 0x0040, 0x18a1, 0x2068,
- 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078, 0x167f, 0x017f,
- 0x007f, 0x127f, 0x007c, 0x1078, 0x18cc, 0x20e1, 0x9028, 0x700f,
- 0x70f0, 0x7013, 0x70f0, 0x2001, 0x015d, 0x200c, 0x810a, 0x2102,
- 0x2001, 0x0138, 0x2202, 0x007c, 0x2001, 0x0138, 0x2014, 0x2003,
- 0x0000, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x00c0,
- 0x18e9, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0, 0x18e9,
- 0x2001, 0x0111, 0x201c, 0x83ff, 0x00c0, 0x18e9, 0x8421, 0x00c0,
- 0x18d3, 0x007c, 0x3c00, 0x007e, 0x0e7e, 0x2071, 0x0200, 0x7808,
- 0xa084, 0xf000, 0xa10d, 0x1078, 0x18cc, 0x20e1, 0x7000, 0x7324,
- 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e,
- 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138,
- 0x2202, 0x0e7f, 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e, 0x7908,
- 0xa18c, 0x0fff, 0xa182, 0x0009, 0x0048, 0x191a, 0xa085, 0x0001,
- 0x0078, 0x192c, 0x2001, 0x020a, 0x81ff, 0x0040, 0x1925, 0x20e1,
- 0x6000, 0x200c, 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000, 0x200c,
- 0x200c, 0x7003, 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c, 0x0e7e,
- 0x2071, 0x710b, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e, 0xa280,
- 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x19b1, 0x6934, 0xa184,
- 0x0007, 0x0079, 0x1943, 0x194b, 0x199c, 0x194b, 0x194b, 0x194b,
- 0x1981, 0x195e, 0x194d, 0x1078, 0x1288, 0x684c, 0xd0b4, 0x0040,
- 0x1ab3, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
- 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x19a4, 0x6834, 0xa084,
- 0x00ff, 0xa086, 0x001e, 0x00c0, 0x194b, 0x684c, 0xd0b4, 0x0040,
- 0x1ab3, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
- 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004,
- 0xa084, 0x000f, 0xa080, 0x1beb, 0x2004, 0x6832, 0x6958, 0x0078,
- 0x19ad, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x19b1, 0x684c,
- 0xd0b4, 0x0040, 0x1ab3, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004,
- 0xa084, 0x000f, 0xa080, 0x1beb, 0x2004, 0x6832, 0x6958, 0xa006,
- 0x682e, 0x682a, 0x0078, 0x19ad, 0x684c, 0xd0b4, 0x0040, 0x1733,
- 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834, 0xa084,
- 0x000f, 0xa080, 0x1beb, 0x2004, 0x6832, 0x6926, 0x684c, 0xc0dd,
- 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804, 0xd0fc,
- 0x10c0, 0x1ab7, 0x0e7e, 0x0d7e, 0x2071, 0x710b, 0x7000, 0xa005,
- 0x00c0, 0x1a2d, 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c, 0x7004,
- 0x2068, 0x6818, 0x0d7e, 0x2068, 0x686c, 0x7812, 0x6890, 0x0f7e,
- 0x20e1, 0x9040, 0x2079, 0x0200, 0x781a, 0x2079, 0x0100, 0x8004,
- 0x78d6, 0x0f7f, 0x0d7f, 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060,
- 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x6908, 0xa184, 0x0007,
- 0x0040, 0x19ef, 0x017e, 0x2009, 0x0008, 0xa102, 0x017f, 0xa108,
- 0x791a, 0x7116, 0x701e, 0x680c, 0xa081, 0x0000, 0x781e, 0x701a,
- 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106, 0x00c0,
- 0x1a06, 0x6928, 0x6810, 0xa106, 0x0040, 0x1a13, 0x037e, 0x047e,
- 0x6b14, 0x6c10, 0x1078, 0x1c0b, 0x047f, 0x037f, 0x0040, 0x1a13,
- 0x0c7f, 0x0078, 0x1a2d, 0x8aff, 0x00c0, 0x1a1b, 0x0c7f, 0xa085,
- 0x0001, 0x0078, 0x1a2d, 0x127e, 0x2091, 0x8000, 0x2079, 0x0020,
- 0x2009, 0x0001, 0x1078, 0x1a31, 0x0040, 0x1a2a, 0x2009, 0x0001,
- 0x1078, 0x1a31, 0x127f, 0x0c7f, 0xa006, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x007c, 0x077e, 0x067e, 0x057e, 0x047e, 0x037e, 0x027e, 0x8aff,
- 0x0040, 0x1aac, 0x700c, 0x7214, 0xa202, 0x7010, 0x7218, 0xa203,
- 0x0048, 0x1aab, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1a5e,
- 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1a4e, 0x1a8d, 0x1a6e,
- 0x1a6e, 0x1a8d, 0x1a8d, 0x1a85, 0x1a8d, 0x1a6e, 0x1a8d, 0x1a74,
- 0x1a74, 0x1a8d, 0x1a8d, 0x1a8d, 0x1a7c, 0x1a74, 0xc0fc, 0x6852,
- 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1a91, 0x0d7e,
- 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1a90, 0x6b08, 0x6a0c,
- 0x6d00, 0x6c04, 0x0078, 0x1a90, 0x6b10, 0x6a14, 0x6d00, 0x6c04,
- 0x6f08, 0x6e0c, 0x0078, 0x1a90, 0x0d7f, 0x0d7e, 0x6834, 0xa084,
- 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1a8d, 0x0d7f, 0x1078, 0x1ba7,
- 0x00c0, 0x1a37, 0xa00e, 0x0078, 0x1aac, 0x0d7f, 0x1078, 0x1288,
- 0x0d7f, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902,
- 0x7000, 0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201,
- 0x682e, 0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078,
- 0x1ba7, 0x0078, 0x1aac, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f,
- 0x067f, 0x077f, 0x007c, 0x1078, 0x1288, 0x1078, 0x1288, 0x127e,
- 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x2079, 0x0020, 0x2071, 0x710b, 0x2b68, 0x6818, 0x2060, 0x7904,
- 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, 0x1ab5, 0x7000, 0x0079,
- 0x1ad1, 0x1b78, 0x1ad5, 0x1b45, 0x1b76, 0x8001, 0x7002, 0xd19c,
- 0x00c0, 0x1ae9, 0x8aff, 0x0040, 0x1b08, 0x2009, 0x0001, 0x1078,
- 0x1a31, 0x0040, 0x1b78, 0x2009, 0x0001, 0x1078, 0x1a31, 0x0078,
- 0x1b78, 0x7803, 0x0004, 0xd194, 0x0040, 0x1af9, 0x6850, 0xc0fc,
- 0x6852, 0x8aff, 0x00c0, 0x1afe, 0x684c, 0xc0f5, 0x684e, 0x0078,
- 0x1afe, 0x1078, 0x1bc0, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826,
- 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0078, 0x1b78,
- 0x711c, 0x81ff, 0x0040, 0x1b1e, 0x7918, 0x7922, 0x7827, 0x0000,
- 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, 0x700c, 0xa100, 0x700e,
- 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, 0x1b78, 0x0f7e, 0x027e,
- 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14, 0xa284,
- 0x0004, 0xa085, 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0, 0x1b2c,
- 0x79c8, 0x007f, 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102, 0x78c6,
- 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803,
- 0x0008, 0x7003, 0x0000, 0x0078, 0x1b78, 0x8001, 0x7002, 0xd194,
- 0x0040, 0x1b5a, 0x7804, 0xd0fc, 0x00c0, 0x1ac7, 0xd19c, 0x00c0,
- 0x1b74, 0x8aff, 0x0040, 0x1b78, 0x2009, 0x0001, 0x1078, 0x1a31,
- 0x0078, 0x1b78, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1bc0,
- 0x0d7e, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1b6d, 0x6808,
- 0xa31a, 0x680c, 0xa213, 0x0078, 0x1b71, 0x6810, 0xa31a, 0x6814,
- 0xa213, 0x0d7f, 0x0078, 0x1af9, 0x0078, 0x1af9, 0x1078, 0x1288,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c,
- 0x0f7e, 0x0e7e, 0x2071, 0x710b, 0x7000, 0xa086, 0x0000, 0x0040,
- 0x1ba4, 0x2079, 0x0020, 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x0040,
- 0x1b8b, 0x1078, 0x1ab7, 0x7000, 0xa086, 0x0000, 0x00c0, 0x1b8b,
- 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1b9a, 0x20e1, 0x9040,
+ 0xa182, 0x6f63, 0x0048, 0x164e, 0x2009, 0x6f48, 0x7112, 0x8cff,
+ 0x00c0, 0x1658, 0x7803, 0x0019, 0x7003, 0x0003, 0x0078, 0x167b,
+ 0x6010, 0x2068, 0x2d58, 0x6828, 0xa406, 0x00c0, 0x1663, 0x682c,
+ 0xa306, 0x0040, 0x1667, 0x1078, 0x1aa2, 0x00c0, 0x1652, 0x6824,
+ 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f,
+ 0x2009, 0x0011, 0x1078, 0x167c, 0x0040, 0x167a, 0x2009, 0x0001,
+ 0x1078, 0x167c, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x16e0, 0xa03e,
+ 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x169b, 0x0d7e, 0x2804, 0xac68,
+ 0x2900, 0x0079, 0x168b, 0x16ca, 0x16ab, 0x16ab, 0x16ca, 0x16ca,
+ 0x16c2, 0x16ca, 0x16ab, 0x16ca, 0x16b1, 0x16b1, 0x16ca, 0x16ca,
+ 0x16ca, 0x16ca, 0x16b1, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c,
+ 0x6c20, 0x0d7e, 0xd99c, 0x0040, 0x16cd, 0x2804, 0xac68, 0x6f08,
+ 0x6e0c, 0x0078, 0x16cd, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078,
+ 0x16cd, 0x7b0c, 0xd3bc, 0x0040, 0x16ba, 0x7b08, 0xa39c, 0x0fff,
+ 0x0078, 0x16bb, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
+ 0x0078, 0x16cd, 0x0d7f, 0x1078, 0x1a3f, 0x00c0, 0x167c, 0xa00e,
+ 0x0078, 0x16e0, 0x0d7f, 0x1078, 0x12b7, 0x7b22, 0x7a26, 0x7d32,
+ 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, 0x7002, 0x0d7f,
+ 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x1078, 0x1a3f,
+ 0x007c, 0x1078, 0x12b7, 0x1078, 0x12b7, 0x127e, 0x2091, 0x2100,
+ 0x007e, 0x017e, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002,
+ 0xa184, 0x0700, 0x00c0, 0x16e3, 0xa184, 0x0003, 0xa086, 0x0003,
+ 0x0040, 0x16e3, 0x7000, 0x0079, 0x16fd, 0x1701, 0x1703, 0x1779,
+ 0x17c0, 0x1078, 0x12b7, 0x8001, 0x7002, 0xa184, 0x0880, 0x00c0,
+ 0x1718, 0x8aff, 0x0040, 0x175b, 0x2009, 0x0001, 0x1078, 0x167c,
+ 0x0040, 0x17d3, 0x2009, 0x0001, 0x1078, 0x167c, 0x0078, 0x17d3,
+ 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040, 0x1751, 0x027e,
+ 0x037e, 0x6b28, 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824, 0x6872,
+ 0xa213, 0x6b2a, 0x6a2e, 0x037f, 0x027f, 0x7830, 0x681e, 0x7834,
+ 0x6822, 0x1078, 0x1a58, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800,
+ 0x6832, 0x7003, 0x0000, 0x6850, 0xc0fd, 0x6852, 0x6808, 0x8001,
+ 0x680a, 0x00c0, 0x174d, 0x684c, 0xd0e4, 0x0040, 0x174d, 0x7004,
+ 0x2060, 0x2009, 0x0048, 0x1078, 0x5591, 0x1078, 0x1638, 0x0078,
+ 0x17d3, 0x057e, 0x7d0c, 0xd5bc, 0x00c0, 0x1758, 0x1078, 0x6c41,
+ 0x057f, 0x0078, 0x1773, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005,
+ 0x00c0, 0x1773, 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0,
+ 0x176f, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5591, 0x1078,
+ 0x1638, 0x0078, 0x17d3, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078,
+ 0x17d3, 0x8001, 0x7002, 0xd194, 0x0040, 0x178b, 0x7804, 0xd0fc,
+ 0x00c0, 0x16ed, 0x8aff, 0x0040, 0x17d3, 0x2009, 0x0001, 0x1078,
+ 0x167c, 0x0078, 0x17d3, 0xa184, 0x0880, 0x00c0, 0x1798, 0x8aff,
+ 0x0040, 0x17d3, 0x2009, 0x0001, 0x1078, 0x167c, 0x0078, 0x17d3,
+ 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040, 0x17b9, 0x027e,
+ 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1a58, 0x0d7e, 0x2804, 0xac68,
+ 0x6034, 0xd09c, 0x00c0, 0x17b2, 0x6808, 0xa31a, 0x680c, 0xa213,
+ 0x0078, 0x17b6, 0x6810, 0xa31a, 0x6814, 0xa213, 0x0d7f, 0x0078,
+ 0x1723, 0x057e, 0x7d0c, 0x1078, 0x6c41, 0x057f, 0x0078, 0x1773,
+ 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x17d1, 0x6808, 0x8001,
+ 0x680a, 0x00c0, 0x17d1, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
+ 0x5591, 0x1078, 0x1638, 0x017f, 0x007f, 0x127f, 0x007c, 0x0e7e,
+ 0x2071, 0x6f63, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e, 0xa280,
+ 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1836, 0x6934, 0xa184,
+ 0x0007, 0x0079, 0x17eb, 0x17f3, 0x1821, 0x17f3, 0x17f3, 0x17f3,
+ 0x1806, 0x17f3, 0x17f5, 0x1078, 0x12b7, 0x684c, 0xd0b4, 0x0040,
+ 0x192f, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
+ 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1829, 0xa18c, 0x00ff,
+ 0xa186, 0x0015, 0x00c0, 0x1836, 0x684c, 0xd0b4, 0x0040, 0x192f,
+ 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080,
+ 0x1a82, 0x2004, 0x6832, 0x6958, 0xa006, 0x682e, 0x682a, 0x0078,
+ 0x1832, 0x684c, 0xd0b4, 0x0040, 0x16e1, 0x6958, 0xa006, 0x682e,
+ 0x682a, 0x2d00, 0x681a, 0x6834, 0xa084, 0x000f, 0xa080, 0x1a82,
+ 0x2004, 0x6832, 0x6926, 0x684c, 0xc0dd, 0x684e, 0x0d7f, 0x007c,
+ 0x0f7e, 0x2079, 0x0020, 0x7804, 0xd0fc, 0x10c0, 0x1933, 0x0e7e,
+ 0x0d7e, 0x2071, 0x6f63, 0x7000, 0xa005, 0x00c0, 0x18b2, 0x0c7e,
+ 0x7206, 0xa280, 0x0004, 0x205c, 0x7004, 0x2068, 0x6818, 0x0d7e,
+ 0x2068, 0x686c, 0x7812, 0x6890, 0x0f7e, 0x20e1, 0x9040, 0x2079,
+ 0x0200, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x0f7f, 0x0d7f,
+ 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034,
+ 0xa0cc, 0x000f, 0x6908, 0xa184, 0x0007, 0x0040, 0x1874, 0x017e,
+ 0x2009, 0x0008, 0xa102, 0x017f, 0xa108, 0x791a, 0x7116, 0x701e,
+ 0x680c, 0xa081, 0x0000, 0x781e, 0x701a, 0xa006, 0x700e, 0x7012,
+ 0x7004, 0x692c, 0x6814, 0xa106, 0x00c0, 0x188b, 0x6928, 0x6810,
+ 0xa106, 0x0040, 0x1898, 0x037e, 0x047e, 0x6b14, 0x6c10, 0x1078,
+ 0x1aa2, 0x047f, 0x037f, 0x0040, 0x1898, 0x0c7f, 0x0078, 0x18b2,
+ 0x8aff, 0x00c0, 0x18a0, 0x0c7f, 0xa085, 0x0001, 0x0078, 0x18b2,
+ 0x127e, 0x2091, 0x8000, 0x2079, 0x0020, 0x2009, 0x0001, 0x1078,
+ 0x18b6, 0x0040, 0x18af, 0x2009, 0x0001, 0x1078, 0x18b6, 0x127f,
+ 0x0c7f, 0xa006, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x077e, 0x067e,
+ 0x057e, 0x047e, 0x037e, 0x027e, 0x8aff, 0x0040, 0x1928, 0x700c,
+ 0x7214, 0xa202, 0x7010, 0x7218, 0xa203, 0x0048, 0x1927, 0xa03e,
+ 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x18e3, 0x0d7e, 0x2804, 0xac68,
+ 0x2900, 0x0079, 0x18d3, 0x1909, 0x18f3, 0x18f3, 0x1909, 0x1909,
+ 0x1901, 0x1909, 0x18f3, 0x1909, 0x18f9, 0x18f9, 0x1909, 0x1909,
+ 0x1909, 0x1909, 0x18f9, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c,
+ 0x6c20, 0xd99c, 0x0040, 0x190d, 0x0d7e, 0x2804, 0xac68, 0x6f08,
+ 0x6e0c, 0x0078, 0x190c, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078,
+ 0x190c, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078,
+ 0x190c, 0x0d7f, 0x1078, 0x1a3f, 0x00c0, 0x18bc, 0xa00e, 0x0078,
+ 0x1928, 0x0d7f, 0x1078, 0x12b7, 0x0d7f, 0x7b22, 0x7a26, 0x7d32,
+ 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, 0x7002, 0x6828,
+ 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x700c, 0xa300, 0x700e,
+ 0x7010, 0xa201, 0x7012, 0x1078, 0x1a3f, 0x0078, 0x1928, 0xa006,
+ 0x027f, 0x037f, 0x047f, 0x057f, 0x067f, 0x077f, 0x007c, 0x1078,
+ 0x12b7, 0x1078, 0x12b7, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e,
+ 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x2079, 0x0020, 0x2071, 0x6f63,
+ 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700,
+ 0x00c0, 0x1931, 0x7000, 0x0079, 0x194d, 0x1a09, 0x1951, 0x19d6,
+ 0x1a07, 0x8001, 0x7002, 0xd19c, 0x00c0, 0x1965, 0x8aff, 0x0040,
+ 0x199a, 0x2009, 0x0001, 0x1078, 0x18b6, 0x0040, 0x1a09, 0x2009,
+ 0x0001, 0x1078, 0x18b6, 0x0078, 0x1a09, 0x7803, 0x0004, 0xd194,
+ 0x0040, 0x1975, 0x6850, 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1990,
+ 0x684c, 0xc0f5, 0x684e, 0x0078, 0x1990, 0x027e, 0x037e, 0x6b28,
+ 0x6a2c, 0x701c, 0xa005, 0x10c0, 0x1a11, 0x7820, 0x686e, 0xa31a,
+ 0x7824, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x037f, 0x027f, 0x7830,
+ 0x681e, 0x7834, 0x6822, 0x1078, 0x1a58, 0x6850, 0xc0fd, 0x6852,
+ 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000,
+ 0x0078, 0x1a09, 0x711c, 0x81ff, 0x0040, 0x19af, 0x7922, 0x7827,
+ 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, 0x700c, 0xa100,
+ 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, 0x1a09, 0x0f7e,
+ 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14,
+ 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0,
+ 0x19bd, 0x79c8, 0x007f, 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102,
+ 0x78c6, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f,
+ 0x7803, 0x0008, 0x7003, 0x0000, 0x0078, 0x1a09, 0x8001, 0x7002,
+ 0xd194, 0x0040, 0x19eb, 0x7804, 0xd0fc, 0x00c0, 0x1943, 0xd19c,
+ 0x00c0, 0x1a05, 0x8aff, 0x0040, 0x1a09, 0x2009, 0x0001, 0x1078,
+ 0x18b6, 0x0078, 0x1a09, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078,
+ 0x1a58, 0x0d7e, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x19fe,
+ 0x6808, 0xa31a, 0x680c, 0xa213, 0x0078, 0x1a02, 0x6810, 0xa31a,
+ 0x6814, 0xa213, 0x0d7f, 0x0078, 0x1979, 0x0078, 0x1975, 0x1078,
+ 0x12b7, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f,
+ 0x007c, 0x7920, 0xa108, 0x7922, 0x7924, 0xa189, 0x0000, 0x7926,
+ 0x7930, 0xa10a, 0x7932, 0x7934, 0xa18b, 0x0000, 0x7936, 0x007c,
+ 0x0f7e, 0x0e7e, 0x2071, 0x6f63, 0x7000, 0xa086, 0x0000, 0x0040,
+ 0x1a3c, 0x2079, 0x0020, 0x7804, 0xa084, 0x0003, 0x0040, 0x1a36,
+ 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1a32, 0x20e1, 0x9040,
0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x0f7f, 0x007c, 0x8840,
- 0x2804, 0xa005, 0x00c0, 0x1bbb, 0x6004, 0xa005, 0x0040, 0x1bbd,
- 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x1beb, 0x2044,
- 0x88ff, 0x1040, 0x1288, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c,
- 0x8a50, 0x8841, 0x2804, 0xa005, 0x00c0, 0x1bda, 0x2c00, 0xad06,
- 0x0040, 0x1bcf, 0x6000, 0xa005, 0x00c0, 0x1bcf, 0x2d00, 0x2060,
- 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, 0x1bfb, 0x2044, 0x88ff,
- 0x1040, 0x1288, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d,
+ 0x2804, 0xa005, 0x00c0, 0x1a53, 0x6004, 0xa005, 0x0040, 0x1a55,
+ 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x1a82, 0x2044,
+ 0x88ff, 0x1040, 0x12b7, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c,
+ 0x8a50, 0x8841, 0x2804, 0xa005, 0x00c0, 0x1a72, 0x2c00, 0xad06,
+ 0x0040, 0x1a67, 0x6000, 0xa005, 0x00c0, 0x1a67, 0x2d00, 0x2060,
+ 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, 0x1a92, 0x2044, 0x88ff,
+ 0x1040, 0x12b7, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d,
0x0021, 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021,
- 0x0027, 0x0000, 0x0000, 0x0000, 0x1be0, 0x1bdc, 0x0000, 0x0000,
- 0x1bea, 0x0000, 0x1be0, 0x0000, 0x1be7, 0x1be4, 0x0000, 0x0000,
- 0x0000, 0x1bea, 0x1be7, 0x0000, 0x1be2, 0x1be2, 0x0000, 0x0000,
- 0x1bea, 0x0000, 0x1be2, 0x0000, 0x1be8, 0x1be8, 0x0000, 0x0000,
- 0x0000, 0x1bea, 0x1be8, 0x0a7e, 0x097e, 0x087e, 0x6858, 0xa055,
- 0x0040, 0x1ca8, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x1beb,
- 0xa986, 0x0007, 0x0040, 0x1c24, 0xa986, 0x000e, 0x0040, 0x1c24,
- 0xa986, 0x000f, 0x00c0, 0x1c28, 0x605c, 0xa422, 0x6060, 0xa31a,
- 0x2804, 0xa045, 0x00c0, 0x1c36, 0x0050, 0x1c30, 0x0078, 0x1ca8,
- 0x6004, 0xa065, 0x0040, 0x1ca8, 0x0078, 0x1c13, 0x2804, 0xa005,
- 0x0040, 0x1c54, 0xac68, 0xd99c, 0x00c0, 0x1c44, 0x6808, 0xa422,
- 0x680c, 0xa31b, 0x0078, 0x1c48, 0x6810, 0xa422, 0x6814, 0xa31b,
- 0x0048, 0x1c73, 0x2300, 0xa405, 0x0040, 0x1c5a, 0x8a51, 0x0040,
- 0x1ca8, 0x8840, 0x0078, 0x1c36, 0x6004, 0xa065, 0x0040, 0x1ca8,
- 0x0078, 0x1c13, 0x8a51, 0x0040, 0x1ca8, 0x8840, 0x2804, 0xa005,
- 0x00c0, 0x1c6d, 0x6004, 0xa065, 0x0040, 0x1ca8, 0x6034, 0xa0cc,
- 0x000f, 0xa9c0, 0x1beb, 0x2804, 0x2040, 0x2b68, 0x6850, 0xc0fc,
- 0x6852, 0x0078, 0x1ca0, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000,
- 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0, 0x1c8e,
- 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048, 0x1288,
- 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x1c9a, 0x6910, 0x2400,
- 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x1288, 0x6800, 0xa420,
- 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd, 0x6852,
- 0x2c00, 0x681a, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078, 0x1cad,
+ 0x0027, 0x0000, 0x0000, 0x1a78, 0x1a74, 0x0000, 0x0000, 0x8000,
+ 0x0000, 0x1a78, 0x0000, 0x1a7f, 0x1a7c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1a7f, 0x0000, 0x1a7a, 0x1a7a, 0x0000, 0x0000, 0x8000,
+ 0x0000, 0x1a7a, 0x0000, 0x1a80, 0x1a80, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x1a80, 0x0a7e, 0x097e, 0x087e, 0x6858, 0xa055, 0x0040,
+ 0x1b28, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x1a82, 0xa986,
+ 0x0007, 0x0040, 0x1ab7, 0xa986, 0x000f, 0x00c0, 0x1abb, 0x605c,
+ 0xa422, 0x6060, 0xa31a, 0x2804, 0xa045, 0x00c0, 0x1ac9, 0x0050,
+ 0x1ac3, 0x0078, 0x1b28, 0x6004, 0xa065, 0x0040, 0x1b28, 0x0078,
+ 0x1aaa, 0x2804, 0xa005, 0x0040, 0x1ae7, 0xac68, 0xd99c, 0x00c0,
+ 0x1ad7, 0x6808, 0xa422, 0x680c, 0xa31b, 0x0078, 0x1adb, 0x6810,
+ 0xa422, 0x6814, 0xa31b, 0x0048, 0x1af5, 0x2300, 0xa405, 0x0040,
+ 0x1aed, 0x8a51, 0x0040, 0x1b28, 0x8840, 0x0078, 0x1ac9, 0x6004,
+ 0xa065, 0x0040, 0x1b28, 0x0078, 0x1aaa, 0x8a51, 0x8840, 0x2b68,
+ 0x6850, 0xc0fc, 0x6852, 0x0078, 0x1b22, 0x8422, 0x8420, 0x831a,
+ 0xa399, 0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c,
+ 0x00c0, 0x1b10, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b,
+ 0x1048, 0x12b7, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x1b1c,
+ 0x6910, 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x12b7,
+ 0x6800, 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850,
+ 0xc0fd, 0x6852, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078, 0x1b2d,
0x087f, 0x097f, 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0005,
- 0x2004, 0xa084, 0x0007, 0x0079, 0x1cb5, 0x1cbd, 0x1cbe, 0x1cc1,
- 0x1cc4, 0x1cc9, 0x1ccc, 0x1cd1, 0x1cd6, 0x007c, 0x1078, 0x1ab7,
- 0x007c, 0x1078, 0x1737, 0x007c, 0x1078, 0x1737, 0x1078, 0x1ab7,
- 0x007c, 0x1078, 0x1411, 0x007c, 0x1078, 0x1ab7, 0x1078, 0x1411,
- 0x007c, 0x1078, 0x1737, 0x1078, 0x1411, 0x007c, 0x1078, 0x1737,
- 0x1078, 0x1ab7, 0x1078, 0x1411, 0x007c, 0x127e, 0x2091, 0x2300,
- 0x2079, 0x0200, 0x2071, 0x7380, 0x2069, 0x6f00, 0x2009, 0x0004,
- 0x7912, 0x7817, 0x0004, 0x1078, 0x1fb7, 0x781b, 0x0002, 0x20e1,
- 0x8700, 0x127f, 0x007c, 0x127e, 0x2091, 0x2300, 0x781c, 0xa084,
- 0x0007, 0x0079, 0x1cfb, 0x1d1f, 0x1d03, 0x1d07, 0x1d0b, 0x1d11,
- 0x1d15, 0x1d19, 0x1d1d, 0x1078, 0x3e23, 0x0078, 0x1d1f, 0x1078,
- 0x3e52, 0x0078, 0x1d1f, 0x1078, 0x3e23, 0x1078, 0x3e52, 0x0078,
- 0x1d1f, 0x1078, 0x1d21, 0x0078, 0x1d1f, 0x1078, 0x1d21, 0x0078,
- 0x1d1f, 0x1078, 0x1d21, 0x0078, 0x1d1f, 0x1078, 0x1d21, 0x127f,
- 0x007c, 0x007e, 0x017e, 0x027e, 0x7930, 0xa184, 0x0003, 0x0040,
- 0x1d2b, 0x1078, 0x1288, 0xa184, 0x0030, 0x0040, 0x1d3c, 0x6a00,
- 0xa286, 0x0003, 0x00c0, 0x1d36, 0x1078, 0x1288, 0x1078, 0x3229,
- 0x20e1, 0x9010, 0x0078, 0x1d48, 0xa184, 0x00c0, 0x0040, 0x1d42,
- 0x1078, 0x1288, 0xa184, 0x0300, 0x0040, 0x1d48, 0x20e1, 0x9020,
- 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e, 0x0f7e,
- 0x2071, 0x6f00, 0x7128, 0x2001, 0x70a3, 0x2102, 0x2001, 0x70ab,
- 0x2102, 0xa182, 0x0211, 0x00c8, 0x1d61, 0x2009, 0x0008, 0x0078,
- 0x1d8b, 0xa182, 0x0259, 0x00c8, 0x1d69, 0x2009, 0x0007, 0x0078,
- 0x1d8b, 0xa182, 0x02c1, 0x00c8, 0x1d71, 0x2009, 0x0006, 0x0078,
- 0x1d8b, 0xa182, 0x0349, 0x00c8, 0x1d79, 0x2009, 0x0005, 0x0078,
- 0x1d8b, 0xa182, 0x0421, 0x00c8, 0x1d81, 0x2009, 0x0004, 0x0078,
- 0x1d8b, 0xa182, 0x0581, 0x00c8, 0x1d89, 0x2009, 0x0003, 0x0078,
- 0x1d8b, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0xa182, 0x0005,
- 0x00c8, 0x1d95, 0x7916, 0x0078, 0x1d97, 0x7817, 0x0004, 0x1078,
- 0x1fb7, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091, 0x2200,
- 0x2061, 0x0100, 0x2071, 0x6f00, 0x6024, 0x6026, 0x6033, 0x00ef,
- 0x60e7, 0x0000, 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7,
- 0x6043, 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x00af,
- 0x600f, 0x00ff, 0x602b, 0x002f, 0x127f, 0x007c, 0x2001, 0x6f2b,
- 0x2003, 0x0000, 0x2001, 0x6f2a, 0x2003, 0x0001, 0x007c, 0x127e,
- 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x6124, 0xa184, 0x002c,
- 0x00c0, 0x1dd6, 0xa184, 0x0007, 0x0079, 0x1ddc, 0xa195, 0x0004,
- 0xa284, 0x0007, 0x0079, 0x1ddc, 0x1e08, 0x1de4, 0x1de8, 0x1dec,
- 0x1df2, 0x1df6, 0x1dfc, 0x1e02, 0x1078, 0x42ff, 0x0078, 0x1e08,
- 0x1078, 0x43ee, 0x0078, 0x1e08, 0x1078, 0x43ee, 0x1078, 0x42ff,
- 0x0078, 0x1e08, 0x1078, 0x1e0d, 0x0078, 0x1e08, 0x1078, 0x42ff,
- 0x1078, 0x1e0d, 0x0078, 0x1e08, 0x1078, 0x43ee, 0x1078, 0x1e0d,
- 0x0078, 0x1e08, 0x1078, 0x43ee, 0x1078, 0x42ff, 0x1078, 0x1e0d,
- 0x027f, 0x017f, 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040, 0x1ebd,
- 0x017e, 0x047e, 0x0c7e, 0x644c, 0x74b2, 0xa48c, 0xff00, 0xa196,
- 0xff00, 0x0040, 0x1e3c, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116,
- 0x0040, 0x1e3c, 0x7130, 0xd18c, 0x00c0, 0x1e3c, 0x2011, 0x6f52,
- 0x2214, 0xd2ec, 0x0040, 0x1e30, 0xc18d, 0x7132, 0x0078, 0x1e3c,
- 0x6240, 0xa294, 0x0010, 0x0040, 0x1e7a, 0x6248, 0xa294, 0xff00,
- 0xa296, 0xff00, 0x00c0, 0x1e7a, 0x037e, 0x73b0, 0x2011, 0x8013,
- 0x1078, 0x29fa, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011, 0x6f52,
- 0x220c, 0xd1a4, 0x0040, 0x1e62, 0x017e, 0x2009, 0x0001, 0x2011,
- 0x0100, 0x1078, 0x42cd, 0x2019, 0x000e, 0x1078, 0x6d5c, 0xa484,
- 0x00ff, 0x1078, 0x1fe4, 0x8127, 0xa006, 0x2009, 0x000e, 0x1078,
- 0x6dc4, 0x017f, 0xd1ac, 0x00c0, 0x1e6b, 0x2019, 0x0004, 0x1078,
- 0x2186, 0x0078, 0x1e7a, 0x157e, 0x20a9, 0x007e, 0x2009, 0x0000,
- 0x1078, 0x34cb, 0x00c0, 0x1e76, 0x1078, 0x32cf, 0x8108, 0x00f0,
- 0x1e70, 0x157f, 0x0c7f, 0x047f, 0x6043, 0x0000, 0x2009, 0x00f7,
- 0x1078, 0x3292, 0x0f7e, 0x2079, 0x70c9, 0x783c, 0xa086, 0x0000,
- 0x0040, 0x1e92, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140,
- 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, 0x1078, 0x5193, 0x2011,
- 0x0002, 0x1078, 0x519d, 0x1078, 0x50a9, 0x1078, 0x4204, 0x037e,
- 0x2019, 0x0000, 0x1078, 0x513b, 0x037f, 0x60e3, 0x0000, 0x017f,
- 0x2001, 0x6f00, 0x2014, 0xa296, 0x0004, 0x00c0, 0x1eb5, 0xd19c,
- 0x00c0, 0x1eb5, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001,
- 0x6f1e, 0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0040, 0x1f5e,
- 0x0f7e, 0x2079, 0x70c9, 0x783c, 0xa086, 0x0001, 0x00c0, 0x1ee1,
- 0x017e, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803,
- 0x1000, 0x7803, 0x0000, 0x2079, 0x70b6, 0x7807, 0x0000, 0x7833,
- 0x0000, 0x1078, 0x4893, 0x1078, 0x4943, 0x017f, 0x0f7f, 0x0078,
- 0x1f5e, 0x0f7f, 0x017e, 0x6220, 0xd2b4, 0x0040, 0x1f16, 0x1078,
- 0x4204, 0x1078, 0x4f8e, 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140,
- 0x6804, 0xa084, 0x4000, 0x0040, 0x1ef9, 0x6803, 0x1000, 0x6803,
- 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x70b6, 0x6028, 0xa09a, 0x0002,
- 0x00c8, 0x1f09, 0x8000, 0x602a, 0x0c7f, 0x1078, 0x4f80, 0x0078,
- 0x1f5d, 0x2019, 0x70bf, 0x2304, 0xa065, 0x0040, 0x1f13, 0x2009,
- 0x0027, 0x1078, 0x55fc, 0x0c7f, 0x0078, 0x1f5d, 0xd2bc, 0x0040,
- 0x1f5d, 0x1078, 0x4212, 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e,
- 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x1f2b, 0x6803,
- 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x70b6, 0x6044,
- 0xa09a, 0x0002, 0x00c8, 0x1f4c, 0x8000, 0x6046, 0x603c, 0x0c7f,
- 0xa005, 0x0040, 0x1f5d, 0x1078, 0x4209, 0xa080, 0x0007, 0x2004,
- 0xa086, 0x0006, 0x00c0, 0x1f48, 0x6017, 0x0012, 0x0078, 0x1f5d,
- 0x6017, 0x0016, 0x0078, 0x1f5d, 0x037e, 0x2019, 0x0001, 0x1078,
- 0x513b, 0x037f, 0x2019, 0x70c5, 0x2304, 0xa065, 0x0040, 0x1f5c,
- 0x2009, 0x004f, 0x1078, 0x55fc, 0x0c7f, 0x017f, 0xd19c, 0x0040,
- 0x1f86, 0x017e, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078,
- 0x5193, 0x2011, 0x0002, 0x1078, 0x519d, 0x1078, 0x50a9, 0x1078,
- 0x4204, 0x037e, 0x2019, 0x0000, 0x1078, 0x513b, 0x037f, 0x60e3,
- 0x0000, 0x1078, 0x6e33, 0x1078, 0x6e51, 0x2001, 0x6f00, 0x2003,
- 0x0004, 0x6027, 0x0008, 0x1078, 0x117d, 0x017f, 0xa18c, 0xffd0,
- 0x6126, 0x007c, 0x007e, 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x6f00, 0x71a8, 0x70aa, 0xa116, 0x0040,
- 0x1fb0, 0x81ff, 0x0040, 0x1fa2, 0x2011, 0x8011, 0x1078, 0x29fa,
- 0x0078, 0x1fb0, 0x2011, 0x8012, 0x1078, 0x29fa, 0x037e, 0x0c7e,
- 0x2061, 0x0100, 0x2019, 0x0028, 0x1078, 0x2186, 0x0c7f, 0x037f,
- 0x127f, 0x0f7f, 0x0e7f, 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e,
- 0x0f7e, 0x007e, 0x027e, 0x2061, 0x0100, 0xa190, 0x1fd2, 0x2204,
- 0x60f2, 0xa192, 0x0005, 0x00c8, 0x1fc9, 0xa190, 0x1fdb, 0x0078,
- 0x1fcb, 0x2011, 0x1fdf, 0x2204, 0x60ee, 0x027f, 0x007f, 0x0f7f,
- 0x0c7f, 0x007c, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420, 0x0348,
- 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140,
- 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0xa080, 0x2207, 0x200c, 0xa18c,
- 0xff00, 0x810f, 0x007c, 0xa080, 0x2207, 0x200c, 0xa18c, 0x00ff,
- 0x007c, 0x2011, 0x2015, 0x2019, 0x201f, 0x2025, 0x202b, 0x2031,
- 0x2039, 0x2041, 0x2047, 0x204d, 0x2055, 0x205d, 0x2065, 0x206d,
- 0x2077, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081,
- 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081,
- 0x2081, 0x107e, 0x007e, 0x0078, 0x209a, 0x107e, 0x007e, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1dc7, 0x0078, 0x209a, 0x107e,
- 0x007e, 0x1078, 0x1dc7, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1cae, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078, 0x1cae, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1dc7, 0x1078, 0x1cae, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1dc7, 0x1078, 0x1cae, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e,
- 0x007e, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1dc7, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1dc7, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1cae, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1cae, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1dc7, 0x1078, 0x1cae, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e,
- 0x007e, 0x1078, 0x1dc7, 0x1078, 0x1cae, 0x1078, 0x1cf3, 0x0078,
- 0x209a, 0x0005, 0x0078, 0x2081, 0xb084, 0x003c, 0x8004, 0x8004,
- 0x0079, 0x208a, 0x209a, 0x2017, 0x201b, 0x2021, 0x2027, 0x202d,
- 0x2033, 0x203b, 0x2043, 0x2049, 0x204f, 0x2057, 0x205f, 0x2067,
- 0x206f, 0x2079, 0x0008, 0x2084, 0x007f, 0x107f, 0x2091, 0x8001,
- 0x007c, 0x0c7e, 0x027e, 0x2001, 0x010c, 0x203c, 0x7274, 0x82ff,
- 0x0040, 0x20f0, 0x037e, 0x7384, 0xa38e, 0xffff, 0x00c0, 0x20b2,
- 0x2019, 0x0001, 0x8314, 0xa2e0, 0x74c0, 0x2c04, 0xa38c, 0x0001,
- 0x0040, 0x20bf, 0xa084, 0xff00, 0x8007, 0x0078, 0x20c1, 0xa084,
- 0x00ff, 0xa70e, 0x0040, 0x20e5, 0xa08e, 0x0000, 0x0040, 0x20e5,
- 0xa08e, 0x00ff, 0x0040, 0x20eb, 0x1078, 0x1fe4, 0x1078, 0x3494,
- 0x00c0, 0x20e8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
- 0x20df, 0x1078, 0x2138, 0x0040, 0x20e8, 0x0078, 0x20e5, 0x1078,
- 0x21d3, 0x1078, 0x215f, 0x0040, 0x20e8, 0x8318, 0x0078, 0x20b2,
- 0x7386, 0x0078, 0x20ed, 0x7087, 0xffff, 0x037f, 0x0078, 0x2135,
- 0xa780, 0x2207, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x20a9, 0x007e,
- 0x2009, 0x0000, 0x7084, 0xa096, 0xffff, 0x0040, 0x210c, 0xa092,
- 0x007e, 0x0048, 0x2107, 0x7087, 0xffff, 0x0078, 0x2132, 0x2008,
- 0x2011, 0x007e, 0xa202, 0x20a8, 0x2700, 0x157e, 0x017e, 0xa106,
- 0x0040, 0x2129, 0x1078, 0x3494, 0x00c0, 0x2132, 0x6004, 0xa084,
- 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2123, 0x1078, 0x2138, 0x0040,
- 0x2132, 0x0078, 0x2129, 0x1078, 0x21d3, 0x1078, 0x215f, 0x0040,
- 0x2132, 0x017f, 0x8108, 0x157f, 0x00f0, 0x210c, 0x7087, 0xffff,
- 0x0078, 0x2135, 0x017f, 0x157f, 0x7186, 0x027f, 0x0c7f, 0x007c,
- 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x556f, 0x0040,
- 0x215a, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078,
- 0x3463, 0x2001, 0x0000, 0x1078, 0x3477, 0x127e, 0x2091, 0x8000,
- 0x7080, 0x8000, 0x7082, 0x127f, 0x2009, 0x0004, 0x1078, 0x55fc,
- 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x017e,
- 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x556f, 0x0040, 0x2181,
- 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, 0x3463,
- 0x2001, 0x0002, 0x1078, 0x3477, 0x127e, 0x2091, 0x8000, 0x7080,
- 0x8000, 0x7082, 0x127f, 0x2009, 0x0002, 0x1078, 0x55fc, 0xa085,
- 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0e7e, 0x0c7e,
- 0x067e, 0x037e, 0x027e, 0x1078, 0x4582, 0x1078, 0x4532, 0x1078,
- 0x59e4, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e, 0x1078, 0x34cb,
- 0x00c0, 0x219e, 0x1078, 0x364c, 0x1078, 0x32cf, 0x017f, 0x8108,
- 0x00f0, 0x2195, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c,
- 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0,
- 0x027e, 0x2019, 0x0029, 0x1078, 0x457b, 0x1078, 0x44be, 0x2c08,
- 0x1078, 0x6bfe, 0x017f, 0x2e60, 0x1078, 0x364c, 0x1078, 0x32cf,
- 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x007e,
- 0x2071, 0x6f00, 0x7080, 0xa005, 0x0040, 0x21d0, 0x8001, 0x7082,
- 0x007f, 0x0e7f, 0x007c, 0x6000, 0xc08c, 0x6002, 0x007c, 0x0e7e,
- 0x0c7e, 0x037e, 0x027e, 0x017e, 0x157e, 0x81ff, 0x00c0, 0x21e4,
- 0x20a9, 0x0001, 0x0078, 0x21e8, 0x20a9, 0x007e, 0x2011, 0x0000,
- 0x027e, 0xa2e0, 0x7020, 0x2c64, 0x8cff, 0x0040, 0x21fa, 0x2019,
- 0x0029, 0x1078, 0x457b, 0x1078, 0x44be, 0x2c08, 0x1078, 0x6bfe,
- 0x1078, 0x364c, 0x027f, 0x8210, 0x00f0, 0x21e8, 0x027e, 0x027f,
- 0x157f, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x7eef,
- 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9,
- 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd,
- 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3,
- 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2,
- 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7,
- 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098,
- 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080,
- 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072,
- 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067,
- 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055,
- 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b,
- 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a,
- 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e,
- 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025,
- 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010,
- 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800,
- 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000,
- 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000,
- 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000,
- 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000,
- 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000,
- 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000,
- 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000,
- 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000,
- 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500,
- 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x2071,
- 0x6f6d, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a, 0x703e,
- 0x7033, 0x6f7d, 0x7037, 0x6f7d, 0x7007, 0x0001, 0x2061, 0x6fbd,
- 0x6003, 0x0002, 0x007c, 0x0090, 0x231e, 0x0068, 0x231e, 0x2071,
- 0x6f6d, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x231e, 0x2a60, 0x7820,
- 0xa08e, 0x0069, 0x00c0, 0x2405, 0x0079, 0x23a2, 0x007c, 0x2071,
- 0x6f6d, 0x7004, 0x0079, 0x2324, 0x2328, 0x2329, 0x2333, 0x2345,
- 0x007c, 0x0090, 0x2332, 0x0068, 0x2332, 0x2b78, 0x7818, 0xd084,
- 0x0040, 0x2351, 0x007c, 0x2b78, 0x2061, 0x6fbd, 0x6008, 0xa08e,
- 0x0100, 0x0040, 0x2340, 0xa086, 0x0200, 0x0040, 0x23fd, 0x007c,
- 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010, 0x2068, 0x6834,
- 0xa086, 0x0103, 0x0040, 0x234d, 0x007c, 0x2a60, 0x2b78, 0x7018,
- 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8, 0x235a, 0x61a8,
- 0x0079, 0x2362, 0x2100, 0xa08a, 0x0036, 0x00c8, 0x23f9, 0x61a8,
- 0x0079, 0x23a2, 0x23db, 0x240d, 0x2415, 0x2419, 0x2421, 0x2427,
- 0x242b, 0x2434, 0x2438, 0x2440, 0x2444, 0x23f9, 0x23f9, 0x23f9,
- 0x2448, 0x23f9, 0x2458, 0x246f, 0x2486, 0x2502, 0x2507, 0x2534,
- 0x2581, 0x2590, 0x25b1, 0x25e7, 0x25f1, 0x25fe, 0x2611, 0x2629,
- 0x2632, 0x266f, 0x2675, 0x23f9, 0x2680, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x2684, 0x268a, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x2692, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x269f, 0x26a5, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x2440, 0x2444, 0x23f9, 0x23f9, 0x26b7, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x2704, 0x27d1, 0x27e5, 0x27ec, 0x284f, 0x28a0,
- 0x28ab, 0x28ed, 0x28fa, 0x2907, 0x290a, 0x26bb, 0x2933, 0x297a,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x2a81, 0x2a8f, 0x2a9c, 0x2ad6,
- 0x713c, 0x0078, 0x23db, 0x2021, 0x4000, 0x1078, 0x29d4, 0x127e,
- 0x2091, 0x8000, 0x0068, 0x23e8, 0x7818, 0xd084, 0x0040, 0x23eb,
- 0x127f, 0x0078, 0x23df, 0x781b, 0x0001, 0x7c22, 0x7926, 0x7a2a,
- 0x7b2e, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, 0x127f,
- 0x007c, 0x2021, 0x4001, 0x0078, 0x23dd, 0x2021, 0x4002, 0x0078,
- 0x23dd, 0x2021, 0x4003, 0x0078, 0x23dd, 0x2021, 0x4005, 0x0078,
- 0x23dd, 0x2021, 0x4006, 0x0078, 0x23dd, 0xa02e, 0x2520, 0x7b28,
- 0x7a2c, 0x7824, 0x7930, 0x0078, 0x29e3, 0x7823, 0x0004, 0x7824,
- 0x007a, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078,
- 0x29e7, 0x7924, 0x7828, 0x2114, 0x200a, 0x0078, 0x23db, 0x7924,
- 0x2114, 0x0078, 0x23db, 0x2099, 0x0009, 0x20a1, 0x0009, 0x20a9,
- 0x0007, 0x53a3, 0x0078, 0x23db, 0x7824, 0x2060, 0x0078, 0x244a,
- 0x2009, 0x0001, 0x2011, 0x000f, 0x2019, 0x0007, 0x0078, 0x23db,
- 0x7d38, 0x7c3c, 0x0078, 0x240f, 0x7d38, 0x7c3c, 0x0078, 0x241b,
- 0x2061, 0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, 0x8c60, 0x8109,
- 0x00c0, 0x244c, 0x2010, 0xa005, 0x0040, 0x23db, 0x0078, 0x2401,
- 0x2061, 0x6f51, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2409, 0x8019,
- 0x0040, 0x2409, 0x604a, 0x6142, 0x782c, 0x6052, 0x7828, 0x6056,
- 0xa006, 0x605a, 0x605e, 0x1078, 0x3917, 0x0078, 0x23db, 0x2061,
- 0x6f51, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2409, 0x8019, 0x0040,
- 0x2409, 0x604e, 0x6146, 0x782c, 0x6062, 0x7828, 0x6066, 0xa006,
- 0x606a, 0x606e, 0x1078, 0x36ed, 0x0078, 0x23db, 0xa02e, 0x2520,
- 0x81ff, 0x00c0, 0x2405, 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005,
- 0x20a1, 0x6f74, 0x41a1, 0x1078, 0x29ab, 0x0040, 0x2405, 0x2009,
- 0x0020, 0x1078, 0x29e3, 0x701b, 0x249e, 0x007c, 0x6834, 0x2008,
- 0xa084, 0x00ff, 0xa096, 0x0011, 0x0040, 0x24aa, 0xa096, 0x0019,
- 0x00c0, 0x2405, 0x810f, 0xa18c, 0x00ff, 0x0040, 0x2405, 0x710e,
- 0x700c, 0x8001, 0x0040, 0x24db, 0x700e, 0x1078, 0x29ab, 0x0040,
- 0x2405, 0x2009, 0x0020, 0x2061, 0x6fbd, 0x6224, 0x6328, 0x642c,
- 0x6530, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9,
- 0x0000, 0x1078, 0x29e3, 0x701b, 0x24ce, 0x007c, 0x6834, 0xa084,
- 0x00ff, 0xa096, 0x0002, 0x0040, 0x24d9, 0xa096, 0x000a, 0x00c0,
- 0x2405, 0x0078, 0x24b0, 0x7010, 0x2068, 0x6838, 0xc0fd, 0x683a,
- 0x1078, 0x33c8, 0x00c0, 0x24e9, 0x7007, 0x0003, 0x701b, 0x24eb,
- 0x007c, 0x1078, 0x37b0, 0x127e, 0x2091, 0x8000, 0x20a9, 0x0005,
- 0x2099, 0x6f74, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1,
- 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020, 0x127f,
- 0x0078, 0x29e7, 0x6190, 0x7824, 0x6092, 0x0078, 0x23db, 0x2091,
- 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020, 0x782f,
- 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836, 0x2061,
- 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205, 0x783a,
- 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091, 0x5000,
- 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0xa08a, 0x0003,
- 0x00c8, 0x0427, 0x0078, 0x0423, 0x81ff, 0x00c0, 0x2405, 0x1078,
- 0x29c3, 0x0040, 0x2409, 0x7c28, 0x7d2c, 0x1078, 0x360f, 0xd28c,
- 0x00c0, 0x2546, 0x1078, 0x359f, 0x0078, 0x2548, 0x1078, 0x35db,
- 0x00c0, 0x2572, 0x2061, 0x7500, 0x127e, 0x2091, 0x8000, 0x6000,
- 0xa086, 0x0000, 0x0040, 0x2560, 0x6010, 0xa06d, 0x0040, 0x2560,
- 0x683c, 0xa406, 0x00c0, 0x2560, 0x6840, 0xa506, 0x0040, 0x256b,
- 0x127f, 0xace0, 0x0008, 0x2001, 0x6f15, 0x2004, 0xac02, 0x00c8,
- 0x2405, 0x0078, 0x254c, 0x1078, 0x6019, 0x127f, 0x0040, 0x2405,
- 0x0078, 0x23db, 0xa00e, 0x2001, 0x0005, 0x1078, 0x37b0, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x63dd, 0x1078, 0x3720, 0x127f, 0x0078,
- 0x23db, 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29c3, 0x0040, 0x2409,
- 0x1078, 0x3554, 0x1078, 0x3620, 0x0040, 0x2405, 0x0078, 0x23db,
- 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29c3, 0x0040, 0x2409, 0x2031,
- 0x000f, 0x1078, 0x3554, 0x8631, 0x00c8, 0x2599, 0x2019, 0x0005,
- 0x1078, 0x3641, 0x0040, 0x2405, 0x7828, 0xa08a, 0x1000, 0x00c8,
- 0x2409, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4194, 0x0078,
- 0x23db, 0x127e, 0x2091, 0x8000, 0x81ff, 0x00c0, 0x25e1, 0x2029,
- 0x007d, 0x644c, 0x2400, 0xa506, 0x0040, 0x25db, 0x2508, 0x1078,
- 0x34cb, 0x00c0, 0x25db, 0x2031, 0x000f, 0x1078, 0x3554, 0x8631,
- 0x00c8, 0x25c5, 0x2019, 0x0004, 0x1078, 0x3641, 0x0040, 0x25e1,
- 0x7824, 0xa08a, 0x1000, 0x00c8, 0x25e4, 0x8003, 0x800b, 0x810b,
- 0xa108, 0x1078, 0x4194, 0x8529, 0x00c8, 0x25ba, 0x127f, 0x0078,
- 0x23db, 0x127f, 0x0078, 0x2405, 0x127f, 0x0078, 0x2409, 0x1078,
- 0x29c3, 0x0040, 0x2409, 0x1078, 0x3584, 0x1078, 0x360f, 0x0078,
- 0x23db, 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29c3, 0x0040, 0x2409,
- 0x1078, 0x356d, 0x1078, 0x360f, 0x0078, 0x23db, 0x81ff, 0x00c0,
- 0x2405, 0x1078, 0x29c3, 0x0040, 0x2409, 0x1078, 0x35de, 0x0040,
- 0x2405, 0x1078, 0x3410, 0x1078, 0x3598, 0x1078, 0x360f, 0x0078,
- 0x23db, 0x1078, 0x29c3, 0x0040, 0x2409, 0x1078, 0x3554, 0x62a0,
- 0x2019, 0x0005, 0x0c7e, 0x1078, 0x364c, 0x0c7f, 0x1078, 0x457b,
- 0x1078, 0x44be, 0x2c08, 0x1078, 0x6bfe, 0x1078, 0x360f, 0x0078,
- 0x23db, 0x1078, 0x29c3, 0x0040, 0x2409, 0x1078, 0x360f, 0x2208,
- 0x0078, 0x23db, 0x157e, 0x0d7e, 0x0e7e, 0x2069, 0x6fff, 0x6810,
- 0x6914, 0xa10a, 0x00c8, 0x263e, 0x2009, 0x0000, 0x6816, 0x2011,
- 0x0000, 0x2019, 0x0000, 0x20a9, 0x007d, 0x2069, 0x7020, 0x2d04,
- 0xa075, 0x0040, 0x2653, 0x704c, 0x1078, 0x265d, 0xa210, 0x7080,
- 0x1078, 0x265d, 0xa318, 0x8d68, 0x00f0, 0x2647, 0x2300, 0xa218,
- 0x0e7f, 0x0d7f, 0x157f, 0x0078, 0x23db, 0x0f7e, 0x017e, 0xa07d,
- 0x0040, 0x266c, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff, 0x0040,
- 0x266c, 0x2178, 0x0078, 0x2664, 0x017f, 0x0f7f, 0x007c, 0x2069,
- 0x6fff, 0x6910, 0x6294, 0x0078, 0x23db, 0x81ff, 0x00c0, 0x2405,
- 0x614c, 0xa190, 0x2207, 0x2214, 0xa294, 0x00ff, 0x0078, 0x23db,
- 0x613c, 0x6240, 0x0078, 0x23db, 0x1078, 0x29c3, 0x0040, 0x2409,
- 0x0078, 0x23db, 0x1078, 0x29c3, 0x0040, 0x2409, 0x6244, 0x6338,
- 0x0078, 0x23db, 0x613c, 0x6240, 0x7824, 0x603e, 0x7b28, 0x6342,
- 0x2069, 0x6f51, 0x831f, 0xa305, 0x6816, 0x0078, 0x23db, 0x1078,
- 0x29c3, 0x0040, 0x2409, 0x0078, 0x23db, 0x1078, 0x29c3, 0x0040,
- 0x2409, 0x7828, 0xa00d, 0x0040, 0x2409, 0x782c, 0xa005, 0x0040,
- 0x2409, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078, 0x23db, 0x7d38,
- 0x7c3c, 0x0078, 0x2488, 0x7824, 0xa09c, 0x00ff, 0xa39a, 0x0003,
- 0x00c8, 0x2405, 0x624c, 0xa084, 0xff00, 0x8007, 0xa206, 0x00c0,
- 0x26d3, 0x2001, 0x6f40, 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c,
- 0x7d38, 0x0078, 0x29e7, 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29c3,
- 0x0040, 0x2409, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
- 0x2405, 0x0c7e, 0x1078, 0x29ab, 0x0c7f, 0x0040, 0x2405, 0x6837,
- 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x62f3, 0x0040, 0x2405,
- 0x7007, 0x0003, 0x701b, 0x26f5, 0x007c, 0x6830, 0xa086, 0x0100,
- 0x0040, 0x2405, 0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c, 0x7b28,
- 0x7c3c, 0x7d38, 0x0078, 0x29e7, 0x1078, 0x29ab, 0x0040, 0x2405,
- 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x29e3,
- 0x701b, 0x2713, 0x007c, 0xade8, 0x000d, 0x6800, 0xa005, 0x0040,
- 0x2409, 0x6804, 0xd0ac, 0x0040, 0x2720, 0xd0a4, 0x0040, 0x2409,
- 0xd094, 0x0040, 0x272b, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18c,
- 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x2736, 0x0c7e, 0x2061,
- 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f, 0x2009, 0x0100,
- 0x210c, 0xa18a, 0x0002, 0x0048, 0x274b, 0xd084, 0x0040, 0x274b,
- 0x6a28, 0xa28a, 0x007e, 0x00c8, 0x2409, 0xa288, 0x2207, 0x210c,
- 0xa18c, 0x00ff, 0x6152, 0xd0dc, 0x0040, 0x2754, 0x6828, 0xa08a,
- 0x007e, 0x00c8, 0x2409, 0x604e, 0x6808, 0xa08a, 0x0100, 0x0048,
- 0x2409, 0xa08a, 0x0841, 0x00c8, 0x2409, 0xa084, 0x0007, 0x00c0,
- 0x2409, 0x680c, 0xa005, 0x0040, 0x2409, 0x6810, 0xa005, 0x0040,
- 0x2409, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x2409, 0x8001, 0x0040,
- 0x2409, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x2409, 0x8001, 0x0040,
- 0x2409, 0x20a9, 0x001c, 0x2d98, 0x2069, 0x6f51, 0x2da0, 0x53a3,
- 0x6814, 0xa08c, 0x00ff, 0x613e, 0x8007, 0xa084, 0x00ff, 0x6042,
- 0x1078, 0x3917, 0x1078, 0x36ed, 0x6000, 0xa086, 0x0000, 0x00c0,
- 0x27cf, 0x6808, 0x602a, 0x1078, 0x1d4d, 0x6818, 0x691c, 0x6a20,
- 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, 0x611a, 0x621e,
- 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x27af, 0x6830, 0x6934, 0x6a38,
- 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0078, 0x27b1, 0xa084,
- 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x1078, 0x4220, 0x0c7e,
- 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x0c7f, 0x60ac,
- 0xa005, 0x0040, 0x27cb, 0x6003, 0x0001, 0x2091, 0x301d, 0x1078,
- 0x3229, 0x0078, 0x27cf, 0x6003, 0x0004, 0x2091, 0x301d, 0x0078,
- 0x23db, 0x6000, 0xa086, 0x0000, 0x0040, 0x2405, 0x2069, 0x6f51,
- 0x7830, 0x6842, 0x7834, 0x6846, 0x2d00, 0x2009, 0x001c, 0x7a2c,
- 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x29e7, 0x81ff, 0x00c0, 0x2405,
- 0x1078, 0x3229, 0x0078, 0x23db, 0x81ff, 0x00c0, 0x2405, 0x6174,
- 0x81ff, 0x0040, 0x2806, 0x703f, 0x0000, 0x2001, 0x74c0, 0x2009,
- 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x29e7, 0x701b, 0x23d8, 0x127f, 0x007c, 0x703f, 0x0001,
- 0x0d7e, 0x2069, 0x74c0, 0x20a9, 0x0040, 0x20a1, 0x74c0, 0x2019,
- 0xffff, 0x43a4, 0x654c, 0xa588, 0x2207, 0x210c, 0xa18c, 0x00ff,
- 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, 0x0040, 0x2838,
- 0x1078, 0x34cb, 0x00c0, 0x2838, 0x6014, 0x821c, 0x0048, 0x2830,
- 0xa398, 0x74c0, 0xa085, 0xff00, 0x8007, 0x201a, 0x0078, 0x2837,
- 0xa398, 0x74c0, 0x2324, 0xa4a4, 0xff00, 0xa405, 0x201a, 0x8210,
- 0x8108, 0xa182, 0x007f, 0x00c8, 0x283f, 0x0078, 0x281c, 0x8201,
- 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f, 0x20a9, 0x0040, 0x20a1,
- 0x74c0, 0x2099, 0x74c0, 0x1078, 0x3272, 0x0078, 0x27f5, 0x1078,
- 0x29c3, 0x0040, 0x2409, 0x0c7e, 0x1078, 0x29ab, 0x0c7f, 0x0040,
- 0x2405, 0x2001, 0x6f52, 0x2004, 0xd0b4, 0x0040, 0x287c, 0x6000,
- 0xd08c, 0x00c0, 0x287c, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
- 0x00c0, 0x287c, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078,
- 0x630f, 0x0040, 0x2405, 0x7007, 0x0003, 0x701b, 0x2878, 0x007c,
- 0x1078, 0x29c3, 0x0040, 0x2409, 0x20a9, 0x0029, 0x2c98, 0xade8,
- 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098,
- 0xad80, 0x0006, 0x20a0, 0x1078, 0x3272, 0x20a9, 0x0004, 0xac80,
- 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0, 0x1078, 0x3272, 0x2d00,
- 0x2009, 0x0029, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x29e7,
- 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29c3, 0x0040, 0x2409, 0x1078,
- 0x362b, 0x0078, 0x23db, 0x81ff, 0x00c0, 0x2405, 0x7828, 0xa08a,
- 0x1000, 0x00c8, 0x2409, 0x1078, 0x29c3, 0x0040, 0x2409, 0x2031,
- 0x000f, 0x1078, 0x3554, 0x8631, 0x00c8, 0x28b9, 0x2019, 0x0004,
- 0x1078, 0x3641, 0x7924, 0x810f, 0x7a28, 0x1078, 0x28c9, 0x0078,
- 0x23db, 0xa186, 0x00ff, 0x0040, 0x28d1, 0x1078, 0x28e1, 0x0078,
- 0x28e0, 0x2029, 0x007d, 0x2061, 0x6f00, 0x644c, 0x2400, 0xa506,
- 0x0040, 0x28dd, 0x2508, 0x1078, 0x28e1, 0x8529, 0x00c8, 0x28d6,
- 0x007c, 0x1078, 0x34cb, 0x00c0, 0x28ec, 0x2200, 0x8003, 0x800b,
- 0x810b, 0xa108, 0x1078, 0x4194, 0x007c, 0x81ff, 0x00c0, 0x2405,
- 0x1078, 0x29c3, 0x0040, 0x2409, 0x1078, 0x3554, 0x1078, 0x3636,
- 0x0078, 0x23db, 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29c3, 0x0040,
- 0x2409, 0x1078, 0x3554, 0x1078, 0x3620, 0x0078, 0x23db, 0x6100,
- 0x0078, 0x23db, 0x1078, 0x29c3, 0x0040, 0x2409, 0x6004, 0xa086,
- 0x0707, 0x0040, 0x2409, 0x2001, 0x6f00, 0x2004, 0xa086, 0x0003,
- 0x00c0, 0x2405, 0x0d7e, 0xace8, 0x000a, 0x7924, 0xd184, 0x0040,
- 0x2923, 0xace8, 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007,
- 0x783a, 0x6b04, 0x831f, 0x6a00, 0x8217, 0x0d7f, 0x6100, 0xa18c,
- 0x0200, 0x0078, 0x23db, 0x7824, 0xa084, 0x00ff, 0xa086, 0x00ff,
- 0x0040, 0x293d, 0x81ff, 0x00c0, 0x2405, 0x7828, 0xa08a, 0x1000,
- 0x00c8, 0x2409, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff,
- 0x0040, 0x2951, 0xa182, 0x007e, 0x00c8, 0x2409, 0x2100, 0x1078,
- 0x1feb, 0x027e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x2061, 0x70c9,
- 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0x0100, 0x6030, 0xa084,
- 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010,
- 0x2009, 0x001e, 0x2011, 0x324e, 0x1078, 0x4217, 0x7924, 0xa18c,
- 0xff00, 0x810f, 0x7a28, 0x1078, 0x28c9, 0x127f, 0x0c7f, 0x027f,
- 0x0078, 0x23db, 0x7924, 0xa18c, 0xff00, 0x810f, 0x0c7e, 0x1078,
- 0x3494, 0x2c08, 0x0c7f, 0x00c0, 0x2409, 0x0078, 0x23db, 0x017e,
- 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, 0x8108, 0x280a,
- 0x8108, 0x00f0, 0x2989, 0x017f, 0x007c, 0x017e, 0x0a7e, 0x0b7e,
- 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, 0x8000, 0x205c,
- 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, 0x280a, 0x0b7f,
- 0x0a7f, 0x017f, 0x007c, 0x1078, 0x12c7, 0x0040, 0x29c2, 0xa006,
- 0x6802, 0x7010, 0xa005, 0x00c0, 0x29ba, 0x2d00, 0x7012, 0x7016,
- 0x0078, 0x29c0, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016,
- 0xad80, 0x000d, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x1078,
- 0x34cb, 0x00c0, 0x29d1, 0xa6b4, 0x00ff, 0xa682, 0x0010, 0x0048,
- 0x29d2, 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff, 0x0040,
- 0x29df, 0x2168, 0x6904, 0x1078, 0x12fb, 0x0078, 0x29d6, 0x7112,
- 0x7116, 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x29e9, 0x2031,
- 0x0000, 0x2061, 0x6fbd, 0x6606, 0x6112, 0x600e, 0x6226, 0x632a,
- 0x642e, 0x6532, 0x2c10, 0x1078, 0x1332, 0x7007, 0x0002, 0x701b,
- 0x23db, 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, 0x0000,
- 0x2001, 0x6f7b, 0x2004, 0xa005, 0x00c0, 0x2a14, 0x0068, 0x2a14,
- 0x7818, 0xd084, 0x00c0, 0x2a14, 0x781b, 0x0001, 0x7a22, 0x7b26,
- 0x2091, 0x4080, 0x0078, 0x2a38, 0x017e, 0x0c7e, 0x0e7e, 0x2071,
- 0x6f6d, 0x7138, 0xa182, 0x0008, 0x0048, 0x2a22, 0x7030, 0x2060,
- 0x0078, 0x2a33, 0x7030, 0xa0e0, 0x0008, 0xac82, 0x6fbd, 0x0048,
- 0x2a2b, 0x2061, 0x6f7d, 0x2c00, 0x7032, 0x81ff, 0x00c0, 0x2a31,
- 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x0e7f, 0x0c7f, 0x017f,
- 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071, 0x6f6d, 0x7038, 0xa005,
- 0x0040, 0x2a72, 0x127e, 0x2091, 0x8000, 0x0068, 0x2a71, 0x0f7e,
- 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x2a70, 0x0c7e, 0x781b,
- 0x0001, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, 0x2091,
- 0x4080, 0x7038, 0x8001, 0x703a, 0xa005, 0x00c0, 0x2a66, 0x7033,
- 0x6f7d, 0x7037, 0x6f7d, 0x0c7f, 0x0078, 0x2a70, 0xac80, 0x0008,
- 0xa0fa, 0x6fbd, 0x0048, 0x2a6e, 0x2001, 0x6f7d, 0x7036, 0x0c7f,
- 0x0f7f, 0x127f, 0x0e7f, 0x007c, 0x027e, 0x2001, 0x6f52, 0x2004,
- 0xd0c4, 0x0040, 0x2a7f, 0x2011, 0x8014, 0x1078, 0x29fa, 0x027f,
- 0x007c, 0x81ff, 0x00c0, 0x2405, 0x127e, 0x2091, 0x8000, 0x6030,
- 0xc08d, 0x6032, 0x1078, 0x3229, 0x127f, 0x0078, 0x23db, 0x7824,
- 0x2008, 0xa18c, 0xfffd, 0x00c0, 0x2a9a, 0x61b4, 0xa10d, 0x61b6,
- 0x0078, 0x23db, 0x0078, 0x2409, 0x81ff, 0x00c0, 0x2405, 0x6000,
- 0xa086, 0x0003, 0x00c0, 0x2405, 0x2001, 0x6f52, 0x2004, 0xd0a4,
- 0x00c0, 0x2405, 0x1078, 0x29c3, 0x0040, 0x2409, 0x6004, 0xa084,
- 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2ab9, 0x7828, 0xa005, 0x0040,
- 0x23db, 0x0c7e, 0x1078, 0x29ab, 0x0c7f, 0x0040, 0x2405, 0x6837,
- 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x637c,
- 0x0040, 0x2405, 0x7007, 0x0003, 0x701b, 0x2acf, 0x007c, 0x6830,
- 0xa086, 0x0100, 0x0040, 0x2405, 0x0078, 0x23db, 0x2001, 0x6f00,
- 0x2004, 0xa086, 0x0003, 0x00c0, 0x2405, 0x7f24, 0x7a2c, 0x7b28,
- 0x7c3c, 0x7d38, 0x1078, 0x29ab, 0x0040, 0x2405, 0x2009, 0x0000,
- 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000, 0xad80, 0x0005,
- 0x7026, 0x20a0, 0x1078, 0x34cb, 0x00c0, 0x2b1c, 0x6004, 0xa0c6,
- 0x0707, 0x0040, 0x2b1c, 0xa084, 0x00ff, 0xa0c6, 0x0006, 0x00c0,
- 0x2b1c, 0x87ff, 0x0040, 0x2b0f, 0xac80, 0x0006, 0x2098, 0x3400,
- 0x20a9, 0x0004, 0x53a3, 0x1078, 0x2995, 0x0078, 0x2b18, 0xac80,
- 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078, 0x2995,
- 0x21a2, 0x94a0, 0xa6b0, 0x0005, 0x8108, 0xa186, 0x007e, 0x0040,
- 0x2b27, 0xa686, 0x0028, 0x0040, 0x2b30, 0x0078, 0x2af2, 0x86ff,
- 0x00c0, 0x2b2e, 0x7120, 0x810b, 0x0078, 0x23db, 0x702f, 0x0001,
- 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061, 0x6fbd, 0x6007,
- 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532,
- 0x2c10, 0x1078, 0x1332, 0x7007, 0x0002, 0x701b, 0x2b48, 0x007c,
- 0x702c, 0xa005, 0x00c0, 0x2b5a, 0x711c, 0x7024, 0x20a0, 0x7728,
- 0x2031, 0x0000, 0x2061, 0x6fbd, 0x6224, 0x6328, 0x642c, 0x6530,
- 0x0078, 0x2af2, 0x7120, 0x810b, 0x0078, 0x23db, 0x127e, 0x0c7e,
- 0x0e7e, 0x2061, 0x0100, 0x2071, 0x6f00, 0x6044, 0xd0a4, 0x00c0,
- 0x2b87, 0xd084, 0x0040, 0x2b70, 0x1078, 0x2cae, 0x0078, 0x2b83,
- 0xd08c, 0x0040, 0x2b77, 0x1078, 0x2bc5, 0x0078, 0x2b83, 0xd094,
- 0x0040, 0x2b7e, 0x1078, 0x2ba8, 0x0078, 0x2b83, 0xd09c, 0x0040,
- 0x2b83, 0x1078, 0x2b91, 0x0e7f, 0x0c7f, 0x127f, 0x007c, 0x017e,
- 0x6128, 0xd19c, 0x00c0, 0x2b8e, 0xc19d, 0x612a, 0x017f, 0x0078,
- 0x2b83, 0x6043, 0x0040, 0x6043, 0x0000, 0x7067, 0x0000, 0x707f,
- 0x0001, 0x709f, 0x0000, 0x2009, 0x74c0, 0x200b, 0x0000, 0x706b,
- 0x000f, 0x2009, 0x000f, 0x2011, 0x31e9, 0x1078, 0x4217, 0x007c,
- 0x7068, 0xa005, 0x00c0, 0x2bc4, 0x2011, 0x31e9, 0x1078, 0x4187,
- 0x6043, 0x0020, 0x6043, 0x0000, 0x6044, 0xd08c, 0x00c0, 0x2bc0,
- 0x707b, 0x0000, 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x2bc4,
- 0x706f, 0x0000, 0x0078, 0x2bc4, 0x007c, 0x706c, 0xa08a, 0x0003,
- 0x00c8, 0x2bce, 0x1079, 0x2bd1, 0x0078, 0x2bd0, 0x1078, 0x1288,
- 0x007c, 0x2bd4, 0x2c23, 0x2cad, 0x0f7e, 0x706f, 0x0001, 0x20e1,
- 0xa000, 0x20e1, 0x8700, 0x1078, 0x1d4d, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x2079, 0x7300, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b,
- 0x0000, 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b,
- 0x0000, 0x781f, 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b,
- 0x0000, 0x782f, 0x0000, 0x2079, 0x730c, 0x207b, 0x1101, 0x7807,
- 0x0000, 0x2099, 0x6f05, 0x20a1, 0x730e, 0x20a9, 0x0004, 0x53a3,
- 0x2079, 0x7312, 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0x7300,
- 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f,
- 0x0000, 0x1078, 0x3210, 0x0f7f, 0x7073, 0x0000, 0x6043, 0x0008,
- 0x6043, 0x0000, 0x007c, 0x0d7e, 0x7070, 0x7073, 0x0000, 0xa025,
- 0x0040, 0x2c97, 0x6020, 0xd0b4, 0x00c0, 0x2c95, 0x717c, 0x81ff,
- 0x0040, 0x2c7e, 0xa486, 0x000c, 0x00c0, 0x2c89, 0xa480, 0x0018,
- 0x8004, 0x20a8, 0x2011, 0x7380, 0x2019, 0x7300, 0x220c, 0x2304,
- 0xa106, 0x00c0, 0x2c55, 0x8210, 0x8318, 0x00f0, 0x2c3e, 0x6043,
- 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x706f,
- 0x0002, 0x707b, 0x0002, 0x0078, 0x2c95, 0x2069, 0x7380, 0x6930,
- 0xa18e, 0x1101, 0x00c0, 0x2c89, 0x6834, 0xa005, 0x00c0, 0x2c89,
- 0x6900, 0xa18c, 0x00ff, 0x00c0, 0x2c69, 0x6804, 0xa005, 0x0040,
- 0x2c7e, 0x2011, 0x738e, 0x2019, 0x6f05, 0x20a9, 0x0004, 0x220c,
- 0x2304, 0xa102, 0x0048, 0x2c7c, 0x00c0, 0x2c89, 0x8210, 0x8318,
- 0x00f0, 0x2c6f, 0x0078, 0x2c89, 0x707f, 0x0000, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x2099, 0x7380, 0x20a1, 0x020b, 0x20a9, 0x0014,
- 0x53a6, 0x6043, 0x0008, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0,
- 0x2c95, 0x60c3, 0x000c, 0x1078, 0x3210, 0x0d7f, 0x007c, 0x6020,
- 0xd0b4, 0x00c0, 0x2c95, 0x60c3, 0x000c, 0x2011, 0x70c0, 0x2013,
- 0x0000, 0x7073, 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7,
- 0x9575, 0x1078, 0x4f85, 0x0078, 0x2c95, 0x007c, 0x7078, 0xa08a,
- 0x001d, 0x00c8, 0x2cb7, 0x1079, 0x2cba, 0x0078, 0x2cb9, 0x1078,
- 0x1288, 0x007c, 0x2cde, 0x2ced, 0x2d1e, 0x2d33, 0x2d63, 0x2d8b,
- 0x2dbb, 0x2de5, 0x2e15, 0x2e3b, 0x2e86, 0x2ea8, 0x2ecc, 0x2ee2,
- 0x2f08, 0x2f1b, 0x2f24, 0x2f3d, 0x2f6b, 0x2f93, 0x2fc1, 0x2feb,
- 0x3030, 0x3065, 0x3087, 0x30c5, 0x30e9, 0x3102, 0x310f, 0x7003,
- 0x0007, 0x6004, 0xa084, 0xfff9, 0x6006, 0x007c, 0x608b, 0xbc94,
- 0x608f, 0xf0f0, 0x6043, 0x0002, 0x707b, 0x0001, 0x2009, 0x07d0,
- 0x2011, 0x31f0, 0x1078, 0x417a, 0x007c, 0x0f7e, 0x7070, 0xa086,
- 0x0014, 0x00c0, 0x2d1c, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0,
- 0x2d1c, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x2d1a,
- 0x7834, 0xa005, 0x00c0, 0x2d1a, 0x7a38, 0xd2fc, 0x0040, 0x2d10,
- 0x709c, 0xa005, 0x00c0, 0x2d10, 0x1078, 0x32a9, 0x709f, 0x0001,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0x707b, 0x0010, 0x1078, 0x2f24,
- 0x0078, 0x2d1c, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0003,
- 0x6043, 0x0004, 0x1078, 0x327a, 0x20a3, 0x1102, 0x20a3, 0x0000,
- 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x2d2a, 0x60c3, 0x0014,
- 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2d61,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014, 0x00c0, 0x2d5d,
- 0x2079, 0x7380, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x2d5d, 0x7834,
- 0xa005, 0x00c0, 0x2d5d, 0x7a38, 0xd2fc, 0x0040, 0x2d57, 0x709c,
- 0xa005, 0x00c0, 0x2d57, 0x1078, 0x32a9, 0x709f, 0x0001, 0x707b,
- 0x0004, 0x1078, 0x2d63, 0x0078, 0x2d61, 0x707b, 0x0002, 0x7073,
- 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0005, 0x1078, 0x327a, 0x20a3,
- 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0x738e, 0x7064, 0xa005,
- 0x00c0, 0x2d7d, 0x714c, 0xa186, 0xffff, 0x0040, 0x2d7d, 0x1078,
- 0x31b4, 0x0040, 0x2d7d, 0x1078, 0x32a9, 0x20a9, 0x0008, 0x2298,
- 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2db9,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014, 0x00c0, 0x2db5,
- 0x2079, 0x7380, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x2db5, 0x7834,
- 0xa005, 0x00c0, 0x2db5, 0x7a38, 0xd2fc, 0x0040, 0x2daf, 0x709c,
- 0xa005, 0x00c0, 0x2daf, 0x1078, 0x32a9, 0x709f, 0x0001, 0x707b,
- 0x0006, 0x1078, 0x2dbb, 0x0078, 0x2db9, 0x707b, 0x0002, 0x7073,
- 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0007, 0x1078, 0x327a, 0x20a3,
- 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x738e, 0x7064, 0xa005,
- 0x00c0, 0x2dd7, 0x7150, 0xa186, 0xffff, 0x0040, 0x2dd7, 0xa180,
- 0x2207, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x31b4, 0x20a9,
- 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0014, 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005,
- 0x0040, 0x2e13, 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014,
- 0x00c0, 0x2e0f, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1104, 0x00c0,
- 0x2e0f, 0x7834, 0xa005, 0x00c0, 0x2e0f, 0x7a38, 0xd2fc, 0x0040,
- 0x2e09, 0x709c, 0xa005, 0x00c0, 0x2e09, 0x1078, 0x32a9, 0x709f,
- 0x0001, 0x707b, 0x0008, 0x1078, 0x2e15, 0x0078, 0x2e13, 0x707b,
- 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0009, 0x1078,
- 0x327a, 0x20a3, 0x1105, 0x20a3, 0x0100, 0x3430, 0x7064, 0xa005,
- 0x00c0, 0x2e28, 0x1078, 0x311e, 0x0040, 0x2e38, 0x0078, 0x2e32,
- 0x20a9, 0x0008, 0x2099, 0x738e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x3210, 0x0078, 0x2e3a,
- 0x1078, 0x2cd7, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2e84,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014, 0x00c0, 0x2e80,
- 0x2079, 0x7380, 0x7a30, 0xa296, 0x1105, 0x00c0, 0x2e80, 0x7834,
- 0x2011, 0x0100, 0xa21e, 0x00c0, 0x2e69, 0x7a38, 0xd2fc, 0x0040,
- 0x2e61, 0x709c, 0xa005, 0x00c0, 0x2e61, 0x1078, 0x32a9, 0x709f,
- 0x0001, 0x7077, 0x0001, 0x707b, 0x000a, 0x1078, 0x2e86, 0x0078,
- 0x2e84, 0xa005, 0x00c0, 0x2e80, 0x7a38, 0xd2fc, 0x0040, 0x2e78,
- 0x709c, 0xa005, 0x00c0, 0x2e78, 0x1078, 0x32a9, 0x709f, 0x0001,
- 0x7077, 0x0000, 0x707b, 0x000e, 0x1078, 0x2f08, 0x0078, 0x2e84,
- 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x000b,
- 0x2011, 0x730e, 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4,
- 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4, 0x1078, 0x327a, 0x20a3,
- 0x1106, 0x20a3, 0x0000, 0x6030, 0xa085, 0x0100, 0x2012, 0x2298,
- 0x20a9, 0x0042, 0x53a6, 0x60c3, 0x0084, 0x1078, 0x3210, 0x007c,
- 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2eca, 0x2011, 0x31f0, 0x1078,
- 0x4187, 0xa086, 0x0084, 0x00c0, 0x2ec6, 0x2079, 0x7380, 0x7a30,
- 0xa296, 0x1106, 0x00c0, 0x2ec6, 0x7834, 0xa005, 0x00c0, 0x2ec6,
- 0x707b, 0x000c, 0x1078, 0x2ecc, 0x0078, 0x2eca, 0x707b, 0x0002,
- 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x000d, 0x1078, 0x327a,
- 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, 0x738e, 0x20a9, 0x0040,
- 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078,
- 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2f06, 0x2011,
- 0x31f0, 0x1078, 0x4187, 0xa086, 0x0084, 0x00c0, 0x2f02, 0x2079,
- 0x7380, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x2f02, 0x7834, 0xa005,
- 0x00c0, 0x2f02, 0x1078, 0x326c, 0x707b, 0x000e, 0x1078, 0x2f08,
- 0x0078, 0x2f06, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c,
- 0x707b, 0x000f, 0x7073, 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5,
- 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, 0x31f0,
- 0x1078, 0x417a, 0x007c, 0x7070, 0xa005, 0x0040, 0x2f23, 0x2011,
- 0x31f0, 0x1078, 0x4187, 0x007c, 0x707b, 0x0011, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x2099, 0x7380, 0x20a1, 0x020b, 0x7470, 0xa480,
- 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6,
- 0x60c3, 0x0014, 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005,
- 0x0040, 0x2f69, 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014,
- 0x00c0, 0x2f67, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1103, 0x00c0,
- 0x2f67, 0x7834, 0xa005, 0x00c0, 0x2f67, 0x7a38, 0xd2fc, 0x0040,
- 0x2f61, 0x709c, 0xa005, 0x00c0, 0x2f61, 0x1078, 0x32a9, 0x709f,
- 0x0001, 0x707b, 0x0012, 0x1078, 0x2f6b, 0x0078, 0x2f69, 0x7073,
- 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0013, 0x1078, 0x3286, 0x20a3,
- 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0x738e, 0x7064, 0xa005,
- 0x00c0, 0x2f85, 0x714c, 0xa186, 0xffff, 0x0040, 0x2f85, 0x1078,
- 0x31b4, 0x0040, 0x2f85, 0x1078, 0x32a9, 0x20a9, 0x0008, 0x2298,
+ 0x2004, 0xa084, 0x0007, 0x0079, 0x1b35, 0x1b3d, 0x1b3e, 0x1b41,
+ 0x1b44, 0x1b49, 0x1b4c, 0x1b51, 0x1b56, 0x007c, 0x1078, 0x1933,
+ 0x007c, 0x1078, 0x16e5, 0x007c, 0x1078, 0x16e5, 0x1078, 0x1933,
+ 0x007c, 0x1078, 0x143e, 0x007c, 0x1078, 0x1933, 0x1078, 0x143e,
+ 0x007c, 0x1078, 0x16e5, 0x1078, 0x143e, 0x007c, 0x1078, 0x16e5,
+ 0x1078, 0x1933, 0x1078, 0x143e, 0x007c, 0x127e, 0x2091, 0x2300,
+ 0x2079, 0x0200, 0x2071, 0x7280, 0x2069, 0x6d00, 0x2009, 0x0004,
+ 0x7912, 0x7916, 0x1078, 0x1df6, 0x781b, 0x0002, 0x20e1, 0x8700,
+ 0x127f, 0x007c, 0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007,
+ 0x0079, 0x1b7a, 0x1b9e, 0x1b82, 0x1b86, 0x1b8a, 0x1b90, 0x1b94,
+ 0x1b98, 0x1b9c, 0x1078, 0x3d7c, 0x0078, 0x1b9e, 0x1078, 0x3db0,
+ 0x0078, 0x1b9e, 0x1078, 0x3d7c, 0x1078, 0x3db0, 0x0078, 0x1b9e,
+ 0x1078, 0x1ba0, 0x0078, 0x1b9e, 0x1078, 0x1ba0, 0x0078, 0x1b9e,
+ 0x1078, 0x1ba0, 0x0078, 0x1b9e, 0x1078, 0x1ba0, 0x127f, 0x007c,
+ 0x007e, 0x017e, 0x027e, 0x7930, 0xa184, 0x0003, 0x0040, 0x1baa,
+ 0x1078, 0x12b7, 0xa184, 0x0030, 0x0040, 0x1bbb, 0x6a00, 0xa286,
+ 0x0003, 0x00c0, 0x1bb5, 0x1078, 0x12b7, 0x1078, 0x31cb, 0x20e1,
+ 0x9010, 0x0078, 0x1bc7, 0xa184, 0x00c0, 0x0040, 0x1bc1, 0x1078,
+ 0x12b7, 0xa184, 0x0300, 0x0040, 0x1bc7, 0x20e1, 0x9020, 0x7932,
+ 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e, 0x0f7e, 0x2071,
+ 0x6d00, 0x7128, 0x2001, 0x6f03, 0x2102, 0x2001, 0x6f0b, 0x2102,
+ 0xa182, 0x0211, 0x00c8, 0x1be0, 0x2009, 0x0008, 0x0078, 0x1c0a,
+ 0xa182, 0x0259, 0x00c8, 0x1be8, 0x2009, 0x0007, 0x0078, 0x1c0a,
+ 0xa182, 0x02c1, 0x00c8, 0x1bf0, 0x2009, 0x0006, 0x0078, 0x1c0a,
+ 0xa182, 0x0349, 0x00c8, 0x1bf8, 0x2009, 0x0005, 0x0078, 0x1c0a,
+ 0xa182, 0x0421, 0x00c8, 0x1c00, 0x2009, 0x0004, 0x0078, 0x1c0a,
+ 0xa182, 0x0581, 0x00c8, 0x1c08, 0x2009, 0x0003, 0x0078, 0x1c0a,
+ 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0x7916, 0x1078, 0x1df6,
+ 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091, 0x2200, 0x2061,
+ 0x0100, 0x2071, 0x6d00, 0x6024, 0x6026, 0x6033, 0x00ef, 0x60e7,
+ 0x0000, 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043,
+ 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x0caf, 0x600f,
+ 0x00ff, 0x602b, 0x002f, 0x127f, 0x007c, 0x2001, 0x6d2d, 0x2003,
+ 0x0000, 0x2001, 0x6d2c, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091,
+ 0x2200, 0x007e, 0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0,
+ 0x1c4d, 0xa184, 0x0007, 0x0079, 0x1c53, 0xa195, 0x0004, 0xa284,
+ 0x0007, 0x0079, 0x1c53, 0x1c7f, 0x1c5b, 0x1c5f, 0x1c63, 0x1c69,
+ 0x1c6d, 0x1c73, 0x1c79, 0x1078, 0x4226, 0x0078, 0x1c7f, 0x1078,
+ 0x42e4, 0x0078, 0x1c7f, 0x1078, 0x42e4, 0x1078, 0x4226, 0x0078,
+ 0x1c7f, 0x1078, 0x1c84, 0x0078, 0x1c7f, 0x1078, 0x4226, 0x1078,
+ 0x1c84, 0x0078, 0x1c7f, 0x1078, 0x42e4, 0x1078, 0x1c84, 0x0078,
+ 0x1c7f, 0x1078, 0x42e4, 0x1078, 0x4226, 0x1078, 0x1c84, 0x027f,
+ 0x017f, 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040, 0x1d24, 0x017e,
+ 0x047e, 0x0c7e, 0x644c, 0x74ba, 0xa48c, 0xff00, 0xa196, 0xff00,
+ 0x0040, 0x1cb3, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040,
+ 0x1cb3, 0x7130, 0xd18c, 0x00c0, 0x1cb3, 0x2011, 0x6d52, 0x2214,
+ 0xd2ec, 0x0040, 0x1ca7, 0xc18d, 0x7132, 0x0078, 0x1cb3, 0x6240,
+ 0xa294, 0x0010, 0x0040, 0x1cf2, 0x6248, 0xa294, 0xff00, 0xa296,
+ 0xff00, 0x00c0, 0x1cf2, 0x2011, 0x8013, 0x1078, 0x2a53, 0x7130,
+ 0xc185, 0x7132, 0x2011, 0x6d52, 0x220c, 0xd1a4, 0x0040, 0x1cda,
+ 0x017e, 0x2009, 0x0001, 0x2011, 0x0100, 0x1078, 0x41f4, 0x2019,
+ 0x000e, 0x1078, 0x6b8f, 0xa484, 0x00ff, 0xa080, 0x2091, 0x200c,
+ 0xa18c, 0xff00, 0x810f, 0x8127, 0xa006, 0x2009, 0x000e, 0x1078,
+ 0x6bf7, 0x017f, 0xd1ac, 0x00c0, 0x1ce3, 0x2019, 0x0004, 0x1078,
+ 0x202f, 0x0078, 0x1cf2, 0x157e, 0x20a9, 0x007f, 0x2009, 0x0000,
+ 0x1078, 0x3447, 0x00c0, 0x1cee, 0x1078, 0x3256, 0x8108, 0x00f0,
+ 0x1ce8, 0x157f, 0x0c7f, 0x047f, 0x6043, 0x0000, 0x2009, 0x00f7,
+ 0x1078, 0x3233, 0x2011, 0x0003, 0x1078, 0x5232, 0x2011, 0x0002,
+ 0x1078, 0x523c, 0x1078, 0x5148, 0x1078, 0x414c, 0x037e, 0x2019,
+ 0x0000, 0x1078, 0x51da, 0x037f, 0x60e3, 0x0000, 0x017f, 0x2001,
+ 0x6d00, 0x2014, 0xa296, 0x0004, 0x00c0, 0x1d1c, 0xd19c, 0x00c0,
+ 0x1d1c, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0x6d20,
+ 0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0040, 0x1d9d, 0x017e,
+ 0x6220, 0xd2b4, 0x0040, 0x1d5b, 0x1078, 0x414c, 0x1078, 0x4fe5,
+ 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
+ 0x0040, 0x1d3e, 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e,
+ 0x2061, 0x6f10, 0x6028, 0xa09a, 0x0002, 0x00c8, 0x1d4e, 0x8000,
+ 0x602a, 0x0c7f, 0x1078, 0x4fd7, 0x0078, 0x1d9c, 0x2019, 0x6f19,
+ 0x2304, 0xa065, 0x0040, 0x1d58, 0x2009, 0x0014, 0x1078, 0x5591,
+ 0x0c7f, 0x0078, 0x1d9c, 0xd2bc, 0x0040, 0x1d9c, 0x1078, 0x415a,
+ 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804,
+ 0xa084, 0x4000, 0x0040, 0x1d70, 0x6803, 0x1000, 0x6803, 0x0000,
+ 0x0d7f, 0x0c7e, 0x2061, 0x6f10, 0x6044, 0xa09a, 0x0002, 0x00c8,
+ 0x1d91, 0x8000, 0x6046, 0x603c, 0x0c7f, 0xa005, 0x0040, 0x1d9c,
+ 0x1078, 0x4151, 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0,
+ 0x1d8d, 0x6017, 0x0012, 0x0078, 0x1d9c, 0x6017, 0x0016, 0x0078,
+ 0x1d9c, 0x2019, 0x6f1f, 0x2304, 0xa065, 0x0040, 0x1d9b, 0x2009,
+ 0x004a, 0x1078, 0x5591, 0x0c7f, 0x017f, 0xd19c, 0x0040, 0x1dc5,
+ 0x017e, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078, 0x5232,
+ 0x2011, 0x0002, 0x1078, 0x523c, 0x1078, 0x5148, 0x1078, 0x414c,
+ 0x037e, 0x2019, 0x0000, 0x1078, 0x51da, 0x037f, 0x60e3, 0x0000,
+ 0x1078, 0x6c5f, 0x1078, 0x6c7d, 0x2001, 0x6d00, 0x2003, 0x0004,
+ 0x6027, 0x0008, 0x1078, 0x11aa, 0x017f, 0xa18c, 0xffd0, 0x6126,
+ 0x007c, 0x007e, 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091,
+ 0x8000, 0x2071, 0x6d00, 0x71b0, 0x70b2, 0xa116, 0x0040, 0x1def,
+ 0x81ff, 0x0040, 0x1de1, 0x2011, 0x8011, 0x1078, 0x2a53, 0x0078,
+ 0x1def, 0x2011, 0x8012, 0x1078, 0x2a53, 0x037e, 0x0c7e, 0x2061,
+ 0x0100, 0x2019, 0x0028, 0x1078, 0x202f, 0x0c7f, 0x037f, 0x127f,
+ 0x0f7f, 0x0e7f, 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x0f7e,
+ 0x007e, 0x027e, 0x2061, 0x0100, 0xa190, 0x1e09, 0x2204, 0x60f2,
+ 0xa190, 0x1e12, 0x2204, 0x60ee, 0x027f, 0x007f, 0x0f7f, 0x0c7f,
+ 0x007c, 0x083e, 0x083e, 0x083e, 0x0580, 0x0420, 0x0348, 0x02c0,
+ 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140, 0x00f8,
+ 0x00d0, 0x00b0, 0x00a0, 0x2028, 0x2130, 0xa094, 0xff00, 0x00c0,
+ 0x1e24, 0x81ff, 0x0040, 0x1e28, 0x1078, 0x3f00, 0x0078, 0x1e2f,
+ 0xa080, 0x2091, 0x200c, 0xa18c, 0xff00, 0x810f, 0xa006, 0x007c,
+ 0xa080, 0x2091, 0x200c, 0xa18c, 0x00ff, 0x007c, 0x1e56, 0x1e5a,
+ 0x1e5e, 0x1e64, 0x1e6a, 0x1e70, 0x1e76, 0x1e7e, 0x1e86, 0x1e8c,
+ 0x1e92, 0x1e9a, 0x1ea2, 0x1eaa, 0x1eb2, 0x1ebc, 0x1ec6, 0x1ec6,
+ 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6,
+ 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x1ec6, 0x107e, 0x007e,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x0078, 0x1edf, 0x107e, 0x007e,
+ 0x1078, 0x1c3e, 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1c3e,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1b2e, 0x0078, 0x1edf,
+ 0x107e, 0x007e, 0x1078, 0x1b2e, 0x0078, 0x1edf, 0x107e, 0x007e,
+ 0x1078, 0x1c3e, 0x1078, 0x1b2e, 0x0078, 0x1edf, 0x107e, 0x007e,
+ 0x1078, 0x1c3e, 0x1078, 0x1b2e, 0x0078, 0x1edf, 0x107e, 0x007e,
+ 0x1078, 0x1b72, 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1b72,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1c3e, 0x1078, 0x1b72,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1c3e, 0x1078, 0x1b72,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1b2e, 0x1078, 0x1b72,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1b2e, 0x1078, 0x1b72,
+ 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1c3e, 0x1078, 0x1b2e,
+ 0x1078, 0x1b72, 0x0078, 0x1edf, 0x107e, 0x007e, 0x1078, 0x1c3e,
+ 0x1078, 0x1b2e, 0x1078, 0x1b72, 0x0078, 0x1edf, 0x0005, 0x0078,
+ 0x1ec6, 0xb084, 0x003c, 0x8004, 0x8004, 0x0079, 0x1ecf, 0x1edf,
+ 0x1e5c, 0x1e60, 0x1e66, 0x1e6c, 0x1e72, 0x1e78, 0x1e80, 0x1e88,
+ 0x1e8e, 0x1e94, 0x1e9c, 0x1ea4, 0x1eac, 0x1eb4, 0x1ebe, 0x0008,
+ 0x1ec9, 0x007f, 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e, 0x027e,
+ 0x2041, 0x007e, 0x70bc, 0xd09c, 0x0040, 0x1ef0, 0x2041, 0x007f,
+ 0x2001, 0x010c, 0x203c, 0x727c, 0x82ff, 0x0040, 0x1f3b, 0x037e,
+ 0x738c, 0xa38e, 0xffff, 0x00c0, 0x1eff, 0x2019, 0x0001, 0x8314,
+ 0xa2e0, 0x73c0, 0x2c04, 0xa38c, 0x0001, 0x0040, 0x1f0c, 0xa084,
+ 0xff00, 0x8007, 0x0078, 0x1f0e, 0xa084, 0x00ff, 0xa70e, 0x0040,
+ 0x1f30, 0xa08e, 0x00ff, 0x0040, 0x1f36, 0x2009, 0x0000, 0x1078,
+ 0x1e1b, 0x1078, 0x3410, 0x00c0, 0x1f33, 0x6004, 0xa084, 0x00ff,
+ 0xa086, 0x0006, 0x00c0, 0x1f2a, 0x1078, 0x1f8d, 0x0040, 0x1f33,
+ 0x0078, 0x1f30, 0x1078, 0x208d, 0x1078, 0x1fb4, 0x0040, 0x1f33,
+ 0x8318, 0x0078, 0x1eff, 0x738e, 0x0078, 0x1f38, 0x708f, 0xffff,
+ 0x037f, 0x0078, 0x1f8a, 0xa780, 0x2091, 0x203c, 0xa7bc, 0xff00,
+ 0x873f, 0x708c, 0xa096, 0xffff, 0x0040, 0x1f4d, 0xa812, 0x00c8,
+ 0x1f5d, 0x708f, 0xffff, 0x0078, 0x1f87, 0x2009, 0x0000, 0x70bc,
+ 0xd09c, 0x0040, 0x1f58, 0xd094, 0x0040, 0x1f58, 0x2009, 0x007e,
+ 0x2100, 0xa802, 0x20a8, 0x0078, 0x1f61, 0x2008, 0x2810, 0xa202,
+ 0x20a8, 0x2700, 0x157e, 0x017e, 0xa106, 0x0040, 0x1f7e, 0x1078,
+ 0x3410, 0x00c0, 0x1f87, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
+ 0x00c0, 0x1f78, 0x1078, 0x1f8d, 0x0040, 0x1f87, 0x0078, 0x1f7e,
+ 0x1078, 0x208d, 0x1078, 0x1fb4, 0x0040, 0x1f87, 0x017f, 0x8108,
+ 0x157f, 0x00f0, 0x1f61, 0x708f, 0xffff, 0x0078, 0x1f8a, 0x017f,
+ 0x157f, 0x718e, 0x027f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e,
+ 0x0c7e, 0x2c68, 0x1078, 0x5504, 0x0040, 0x1faf, 0x2d00, 0x601a,
+ 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, 0x33df, 0x2001, 0x0000,
+ 0x1078, 0x33f3, 0x127e, 0x2091, 0x8000, 0x7088, 0x8000, 0x708a,
+ 0x127f, 0x2009, 0x0004, 0x1078, 0x5591, 0xa085, 0x0001, 0x0c7f,
+ 0x0d7f, 0x077f, 0x017f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e,
+ 0x2c68, 0x1078, 0x5504, 0x0040, 0x1fd6, 0x2d00, 0x601a, 0x601f,
+ 0x0001, 0x2001, 0x0000, 0x1078, 0x33df, 0x2001, 0x0002, 0x1078,
+ 0x33f3, 0x127e, 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f,
+ 0x2009, 0x0002, 0x1078, 0x5591, 0xa085, 0x0001, 0x0c7f, 0x0d7f,
+ 0x077f, 0x017f, 0x007c, 0x0c7e, 0x027e, 0x2009, 0x0080, 0x1078,
+ 0x3410, 0x00c0, 0x1fe9, 0x1078, 0x1fec, 0x0040, 0x1fe9, 0x70c3,
+ 0xffff, 0x027f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e,
+ 0x2c68, 0x1078, 0x5504, 0x0040, 0x200e, 0x2d00, 0x601a, 0x601f,
+ 0x0001, 0x2001, 0x0000, 0x1078, 0x33df, 0x2001, 0x0002, 0x1078,
+ 0x33f3, 0x127e, 0x2091, 0x8000, 0x70c4, 0x8000, 0x70c6, 0x127f,
+ 0x2009, 0x0002, 0x1078, 0x5591, 0xa085, 0x0001, 0x0c7f, 0x0d7f,
+ 0x077f, 0x017f, 0x007c, 0x0c7e, 0x0d7e, 0x2009, 0x007f, 0x1078,
+ 0x3410, 0x00c0, 0x202c, 0x2c68, 0x1078, 0x5504, 0x0040, 0x202c,
+ 0x2d00, 0x601a, 0x6312, 0x601f, 0x0001, 0x620a, 0x2009, 0x0022,
+ 0x1078, 0x5591, 0xa085, 0x0001, 0x0d7f, 0x0c7f, 0x007c, 0x0e7e,
+ 0x0c7e, 0x067e, 0x037e, 0x027e, 0x1078, 0x4463, 0x1078, 0x4417,
+ 0x1078, 0x59ce, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078,
+ 0x3447, 0x00c0, 0x2047, 0x1078, 0x35cf, 0x1078, 0x3256, 0x017f,
+ 0x8108, 0x00f0, 0x203e, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f,
+ 0x007c, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270,
+ 0x72a0, 0x027e, 0x2019, 0x0029, 0x1078, 0x445c, 0x1078, 0x43a9,
+ 0x2c08, 0x1078, 0x6a57, 0x017f, 0x2e60, 0x1078, 0x35cf, 0x1078,
+ 0x3256, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e,
+ 0x007e, 0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x00c0, 0x2083,
+ 0x2071, 0x6d00, 0x7088, 0xa005, 0x0040, 0x2080, 0x8001, 0x708a,
+ 0x007f, 0x0e7f, 0x007c, 0x2071, 0x6d00, 0x70c4, 0xa005, 0x0040,
+ 0x2080, 0x8001, 0x70c6, 0x0078, 0x2080, 0x6000, 0xc08c, 0x6002,
+ 0x007c, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc,
+ 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1,
+ 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6,
+ 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4,
+ 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa,
+ 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d,
+ 0x809b, 0x8098, 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282,
+ 0x8081, 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074,
+ 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a,
+ 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559,
+ 0x8056, 0x8055, 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d,
+ 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043,
+ 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932,
+ 0x4831, 0x802e, 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227,
+ 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18,
+ 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000,
+ 0x8000, 0x3800, 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000,
+ 0x8000, 0x3400, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
+ 0x3300, 0x3200, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
+ 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00,
+ 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900,
+ 0x2800, 0x8000, 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200,
+ 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00,
+ 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000,
+ 0x8000, 0x8000, 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600,
+ 0x1500, 0x8000, 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00,
+ 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900,
+ 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000,
+ 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000,
+ 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
+ 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
+ 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
+ 0x8000, 0x2071, 0x6d6d, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016,
+ 0x703a, 0x703e, 0x7033, 0x6d7d, 0x7037, 0x6d7d, 0x7007, 0x0001,
+ 0x2061, 0x6d9d, 0x6003, 0x0002, 0x007c, 0x0090, 0x21b8, 0x0068,
+ 0x21b8, 0x2071, 0x6d6d, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x21b8,
+ 0x2a60, 0x7820, 0xa08e, 0x0069, 0x00c0, 0x229c, 0x0079, 0x223c,
+ 0x007c, 0x2071, 0x6d6d, 0x7004, 0x0079, 0x21be, 0x21c2, 0x21c3,
+ 0x21cd, 0x21df, 0x007c, 0x0090, 0x21cc, 0x0068, 0x21cc, 0x2b78,
+ 0x7818, 0xd084, 0x0040, 0x21eb, 0x007c, 0x2b78, 0x2061, 0x6d9d,
+ 0x6008, 0xa08e, 0x0100, 0x0040, 0x21da, 0xa086, 0x0200, 0x0040,
+ 0x2294, 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010,
+ 0x2068, 0x6834, 0xa086, 0x0103, 0x0040, 0x21e7, 0x007c, 0x2a60,
+ 0x2b78, 0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8,
+ 0x21f4, 0x61b0, 0x0079, 0x21fc, 0x2100, 0xa08a, 0x0033, 0x00c8,
+ 0x2290, 0x61b0, 0x0079, 0x223c, 0x2272, 0x22a4, 0x22ac, 0x22b0,
+ 0x22b8, 0x22be, 0x22c2, 0x22cb, 0x22cf, 0x22d7, 0x22db, 0x2290,
+ 0x2290, 0x2290, 0x22df, 0x2290, 0x22ef, 0x2306, 0x231d, 0x2399,
+ 0x239e, 0x23cb, 0x2416, 0x2425, 0x2446, 0x247c, 0x2486, 0x2493,
+ 0x24a6, 0x24be, 0x24c7, 0x2504, 0x250a, 0x2290, 0x251a, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x251e, 0x2524, 0x2290, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x252c, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x2539, 0x253f, 0x2290, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x22d7, 0x22db, 0x2290, 0x2290,
+ 0x2551, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290, 0x2290,
+ 0x2290, 0x2290, 0x2290, 0x2290, 0x259e, 0x265d, 0x2671, 0x2678,
+ 0x26db, 0x2736, 0x2741, 0x2783, 0x2790, 0x279d, 0x27a0, 0x2555,
+ 0x27c9, 0x2811, 0x281e, 0x28fd, 0x29cb, 0x29f2, 0x2ade, 0x713c,
+ 0x0078, 0x2272, 0x2021, 0x4000, 0x1078, 0x2a2d, 0x127e, 0x2091,
+ 0x8000, 0x0068, 0x227f, 0x7818, 0xd084, 0x0040, 0x2282, 0x127f,
+ 0x0078, 0x2276, 0x781b, 0x0001, 0x7c22, 0x7926, 0x7a2a, 0x7b2e,
+ 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, 0x127f, 0x007c,
+ 0x2021, 0x4001, 0x0078, 0x2274, 0x2021, 0x4002, 0x0078, 0x2274,
+ 0x2021, 0x4003, 0x0078, 0x2274, 0x2021, 0x4005, 0x0078, 0x2274,
+ 0x2021, 0x4006, 0x0078, 0x2274, 0xa02e, 0x2520, 0x7b28, 0x7a2c,
+ 0x7824, 0x7930, 0x0078, 0x2a3c, 0x7823, 0x0004, 0x7824, 0x007a,
+ 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078, 0x2a40,
+ 0x7924, 0x7828, 0x2114, 0x200a, 0x0078, 0x2272, 0x7924, 0x2114,
+ 0x0078, 0x2272, 0x2099, 0x0009, 0x20a1, 0x0009, 0x20a9, 0x0007,
+ 0x53a3, 0x0078, 0x2272, 0x7824, 0x2060, 0x0078, 0x22e1, 0x2009,
+ 0x0001, 0x2011, 0x000d, 0x2019, 0x0000, 0x0078, 0x2272, 0x7d38,
+ 0x7c3c, 0x0078, 0x22a6, 0x7d38, 0x7c3c, 0x0078, 0x22b2, 0x2061,
+ 0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0,
+ 0x22e3, 0x2010, 0xa005, 0x0040, 0x2272, 0x0078, 0x2298, 0x2061,
+ 0x6d51, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x22a0, 0x8019, 0x0040,
+ 0x22a0, 0x604a, 0x6142, 0x782c, 0x6052, 0x7828, 0x6056, 0xa006,
+ 0x605a, 0x605e, 0x1078, 0x3890, 0x0078, 0x2272, 0x2061, 0x6d51,
+ 0x7824, 0x7930, 0xa11a, 0x00c8, 0x22a0, 0x8019, 0x0040, 0x22a0,
+ 0x604e, 0x6146, 0x782c, 0x6062, 0x7828, 0x6066, 0xa006, 0x606a,
+ 0x606e, 0x1078, 0x366e, 0x0078, 0x2272, 0xa02e, 0x2520, 0x81ff,
+ 0x00c0, 0x229c, 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1,
+ 0x6d74, 0x41a1, 0x1078, 0x2a04, 0x0040, 0x229c, 0x2009, 0x0020,
+ 0x1078, 0x2a3c, 0x701b, 0x2335, 0x007c, 0x6834, 0x2008, 0xa084,
+ 0x00ff, 0xa096, 0x0011, 0x0040, 0x2341, 0xa096, 0x0019, 0x00c0,
+ 0x229c, 0x810f, 0xa18c, 0x00ff, 0x0040, 0x229c, 0x710e, 0x700c,
+ 0x8001, 0x0040, 0x2372, 0x700e, 0x1078, 0x2a04, 0x0040, 0x229c,
+ 0x2009, 0x0020, 0x2061, 0x6d9d, 0x6224, 0x6328, 0x642c, 0x6530,
+ 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000,
+ 0x1078, 0x2a3c, 0x701b, 0x2365, 0x007c, 0x6834, 0xa084, 0x00ff,
+ 0xa096, 0x0002, 0x0040, 0x2370, 0xa096, 0x000a, 0x00c0, 0x229c,
+ 0x0078, 0x2347, 0x7010, 0x2068, 0x6838, 0xc0fd, 0x683a, 0x1078,
+ 0x3344, 0x00c0, 0x2380, 0x7007, 0x0003, 0x701b, 0x2382, 0x007c,
+ 0x1078, 0x372d, 0x127e, 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099,
+ 0x6d74, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000,
+ 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020, 0x127f, 0x0078,
+ 0x2a40, 0x6198, 0x7824, 0x609a, 0x0078, 0x2272, 0x2091, 0x8000,
+ 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020, 0x782f, 0x2020,
+ 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836, 0x2061, 0x0100,
+ 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205, 0x783a, 0x2009,
+ 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091, 0x5000, 0x2091,
+ 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0xa08a, 0x0003, 0x00c8,
+ 0x0427, 0x0078, 0x0423, 0x81ff, 0x00c0, 0x229c, 0x1078, 0x2a1c,
+ 0x0040, 0x22a0, 0x7c28, 0x7d2c, 0x1078, 0x3592, 0xd28c, 0x00c0,
+ 0x23dd, 0x1078, 0x3522, 0x0078, 0x23df, 0x1078, 0x355e, 0x00c0,
+ 0x2409, 0x2061, 0x7400, 0x127e, 0x2091, 0x8000, 0x6000, 0xa086,
+ 0x0000, 0x0040, 0x23f7, 0x6010, 0xa06d, 0x0040, 0x23f7, 0x683c,
+ 0xa406, 0x00c0, 0x23f7, 0x6840, 0xa506, 0x0040, 0x2402, 0x127f,
+ 0xace0, 0x0008, 0x2001, 0x6d15, 0x2004, 0xac02, 0x00c8, 0x229c,
+ 0x0078, 0x23e3, 0x1078, 0x5f5d, 0x127f, 0x0040, 0x229c, 0x0078,
+ 0x2272, 0xa00e, 0x2001, 0x0005, 0x1078, 0x372d, 0x127e, 0x2091,
+ 0x8000, 0x1078, 0x36a1, 0x127f, 0x0078, 0x2272, 0x81ff, 0x00c0,
+ 0x229c, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x1078, 0x34d7, 0x1078,
+ 0x35a3, 0x0040, 0x229c, 0x0078, 0x2272, 0x81ff, 0x00c0, 0x229c,
+ 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x2031, 0x000f, 0x1078, 0x34d7,
+ 0x8631, 0x00c8, 0x242e, 0x2019, 0x0005, 0x1078, 0x35c4, 0x0040,
+ 0x229c, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x22a0, 0x8003, 0x800b,
+ 0x810b, 0xa108, 0x1078, 0x40de, 0x0078, 0x2272, 0x127e, 0x2091,
+ 0x8000, 0x81ff, 0x00c0, 0x2476, 0x2029, 0x00ff, 0x644c, 0x2400,
+ 0xa506, 0x0040, 0x2470, 0x2508, 0x1078, 0x3447, 0x00c0, 0x2470,
+ 0x2031, 0x000f, 0x1078, 0x34d7, 0x8631, 0x00c8, 0x245a, 0x2019,
+ 0x0004, 0x1078, 0x35c4, 0x0040, 0x2476, 0x7824, 0xa08a, 0x1000,
+ 0x00c8, 0x2479, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x40de,
+ 0x8529, 0x00c8, 0x244f, 0x127f, 0x0078, 0x2272, 0x127f, 0x0078,
+ 0x229c, 0x127f, 0x0078, 0x22a0, 0x1078, 0x2a1c, 0x0040, 0x22a0,
+ 0x1078, 0x3507, 0x1078, 0x3592, 0x0078, 0x2272, 0x81ff, 0x00c0,
+ 0x229c, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x1078, 0x34f0, 0x1078,
+ 0x3592, 0x0078, 0x2272, 0x81ff, 0x00c0, 0x229c, 0x1078, 0x2a1c,
+ 0x0040, 0x22a0, 0x1078, 0x3561, 0x0040, 0x229c, 0x1078, 0x338c,
+ 0x1078, 0x351b, 0x1078, 0x3592, 0x0078, 0x2272, 0x1078, 0x2a1c,
+ 0x0040, 0x22a0, 0x1078, 0x34d7, 0x62a0, 0x2019, 0x0005, 0x0c7e,
+ 0x1078, 0x35cf, 0x0c7f, 0x1078, 0x445c, 0x1078, 0x43a9, 0x2c08,
+ 0x1078, 0x6a57, 0x1078, 0x3592, 0x0078, 0x2272, 0x1078, 0x2a1c,
+ 0x0040, 0x22a0, 0x1078, 0x3592, 0x2208, 0x0078, 0x2272, 0x157e,
+ 0x0d7e, 0x0e7e, 0x2069, 0x6ddf, 0x6810, 0x6914, 0xa10a, 0x00c8,
+ 0x24d3, 0x2009, 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000,
+ 0x20a9, 0x007e, 0x2069, 0x6e00, 0x2d04, 0xa075, 0x0040, 0x24e8,
+ 0x704c, 0x1078, 0x24f2, 0xa210, 0x7080, 0x1078, 0x24f2, 0xa318,
+ 0x8d68, 0x00f0, 0x24dc, 0x2300, 0xa218, 0x0e7f, 0x0d7f, 0x157f,
+ 0x0078, 0x2272, 0x0f7e, 0x017e, 0xa07d, 0x0040, 0x2501, 0x2001,
+ 0x0000, 0x8000, 0x2f0c, 0x81ff, 0x0040, 0x2501, 0x2178, 0x0078,
+ 0x24f9, 0x017f, 0x0f7f, 0x007c, 0x2069, 0x6ddf, 0x6910, 0x629c,
+ 0x0078, 0x2272, 0x81ff, 0x00c0, 0x229c, 0x614c, 0xa190, 0x2091,
+ 0x2214, 0xa294, 0x00ff, 0x6068, 0xa084, 0xff00, 0xa215, 0x6364,
+ 0x0078, 0x2272, 0x613c, 0x6240, 0x0078, 0x2272, 0x1078, 0x2a1c,
+ 0x0040, 0x22a0, 0x0078, 0x2272, 0x1078, 0x2a1c, 0x0040, 0x22a0,
+ 0x6244, 0x6338, 0x0078, 0x2272, 0x613c, 0x6240, 0x7824, 0x603e,
+ 0x7b28, 0x6342, 0x2069, 0x6d51, 0x831f, 0xa305, 0x6816, 0x0078,
+ 0x2272, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x0078, 0x2272, 0x1078,
+ 0x2a1c, 0x0040, 0x22a0, 0x7828, 0xa00d, 0x0040, 0x22a0, 0x782c,
+ 0xa005, 0x0040, 0x22a0, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078,
+ 0x2272, 0x7d38, 0x7c3c, 0x0078, 0x231f, 0x7824, 0xa09c, 0x00ff,
+ 0xa39a, 0x0003, 0x00c8, 0x229c, 0x624c, 0xa084, 0xff00, 0x8007,
+ 0xa206, 0x00c0, 0x256d, 0x2001, 0x6d40, 0x2009, 0x000c, 0x7a2c,
+ 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2a40, 0x81ff, 0x00c0, 0x229c,
+ 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x6004, 0xa084, 0x00ff, 0xa086,
+ 0x0006, 0x00c0, 0x229c, 0x0c7e, 0x1078, 0x2a04, 0x0c7f, 0x0040,
+ 0x229c, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x6223,
+ 0x0040, 0x229c, 0x7007, 0x0003, 0x701b, 0x258f, 0x007c, 0x6830,
+ 0xa086, 0x0100, 0x0040, 0x229c, 0xad80, 0x000e, 0x2009, 0x000c,
+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2a40, 0x1078, 0x2a04,
+ 0x0040, 0x229c, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
+ 0x1078, 0x2a3c, 0x701b, 0x25ad, 0x007c, 0xade8, 0x000d, 0x6800,
+ 0xa005, 0x0040, 0x22a0, 0x6804, 0xd0ac, 0x0040, 0x25ba, 0xd0a4,
+ 0x0040, 0x22a0, 0xd094, 0x0040, 0x25c5, 0x0c7e, 0x2061, 0x0100,
+ 0x6104, 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x25d0,
+ 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f,
+ 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048, 0x25e5, 0xd084,
+ 0x0040, 0x25e5, 0x6828, 0xa08a, 0x007f, 0x00c8, 0x22a0, 0xa088,
+ 0x2091, 0x210c, 0xa18c, 0x00ff, 0x6152, 0xd0dc, 0x0040, 0x25ee,
+ 0x6828, 0xa08a, 0x007f, 0x00c8, 0x22a0, 0x604e, 0x6808, 0xa08a,
+ 0x0100, 0x0048, 0x22a0, 0xa08a, 0x0841, 0x00c8, 0x22a0, 0xa084,
+ 0x0007, 0x00c0, 0x22a0, 0x680c, 0xa005, 0x0040, 0x22a0, 0x6810,
+ 0xa005, 0x0040, 0x22a0, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x22a0,
+ 0x8001, 0x0040, 0x22a0, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x22a0,
+ 0x8001, 0x0040, 0x22a0, 0x20a9, 0x001c, 0x2d98, 0x2069, 0x6d51,
+ 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e, 0x8007, 0xa084,
+ 0x00ff, 0x6042, 0x1078, 0x3890, 0x1078, 0x366e, 0x6000, 0xa086,
+ 0x0000, 0x00c0, 0x265b, 0x6808, 0x602a, 0x1078, 0x1bcc, 0x6818,
+ 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016,
+ 0x611a, 0x621e, 0x6322, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e,
+ 0x6312, 0x1078, 0x4168, 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040,
+ 0x602f, 0x0000, 0x0c7f, 0x60b4, 0xa005, 0x0040, 0x2657, 0x6003,
+ 0x0001, 0x2091, 0x301d, 0x1078, 0x31cb, 0x0078, 0x265b, 0x6003,
+ 0x0004, 0x2091, 0x301d, 0x0078, 0x2272, 0x6000, 0xa086, 0x0000,
+ 0x0040, 0x229c, 0x2069, 0x6d51, 0x7830, 0x6842, 0x7834, 0x6846,
+ 0x2d00, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078,
+ 0x2a40, 0x81ff, 0x00c0, 0x229c, 0x1078, 0x31cb, 0x0078, 0x2272,
+ 0x81ff, 0x00c0, 0x229c, 0x617c, 0x81ff, 0x0040, 0x2692, 0x703f,
+ 0x0000, 0x2001, 0x73c0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c,
+ 0x7d38, 0x127e, 0x2091, 0x8000, 0x1078, 0x2a40, 0x701b, 0x226f,
+ 0x127f, 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0x73c0, 0x20a9,
+ 0x0040, 0x20a1, 0x73c0, 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588,
+ 0x2091, 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002,
+ 0x2100, 0xa506, 0x0040, 0x26c4, 0x1078, 0x3447, 0x00c0, 0x26c4,
+ 0x6014, 0x821c, 0x0048, 0x26bc, 0xa398, 0x73c0, 0xa085, 0xff00,
+ 0x8007, 0x201a, 0x0078, 0x26c3, 0xa398, 0x73c0, 0x2324, 0xa4a4,
+ 0xff00, 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8,
+ 0x26cb, 0x0078, 0x26a8, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a,
+ 0x0d7f, 0x20a9, 0x0040, 0x20a1, 0x73c0, 0x2099, 0x73c0, 0x1078,
+ 0x3213, 0x0078, 0x2681, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x0c7e,
+ 0x1078, 0x2a04, 0x0c7f, 0x0040, 0x229c, 0x2001, 0x6d52, 0x2004,
+ 0xd0b4, 0x0040, 0x2708, 0x6000, 0xd08c, 0x00c0, 0x2708, 0x6004,
+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2708, 0x6837, 0x0000,
+ 0x6838, 0xc0fd, 0x683a, 0x1078, 0x625b, 0x0040, 0x229c, 0x7007,
+ 0x0003, 0x701b, 0x2704, 0x007c, 0x1078, 0x2a1c, 0x0040, 0x22a0,
+ 0x20a9, 0x0029, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9,
+ 0x0002, 0xac80, 0x0004, 0x2098, 0xad80, 0x0004, 0x20a0, 0x1078,
+ 0x3213, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098, 0xad80, 0x0006,
+ 0x20a0, 0x1078, 0x3213, 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098,
+ 0xad80, 0x000a, 0x20a0, 0x1078, 0x3213, 0x2d00, 0x2009, 0x0029,
+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2a40, 0x81ff, 0x00c0,
+ 0x229c, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x1078, 0x35ae, 0x0078,
+ 0x2272, 0x81ff, 0x00c0, 0x229c, 0x7828, 0xa08a, 0x1000, 0x00c8,
+ 0x22a0, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x2031, 0x000f, 0x1078,
+ 0x34d7, 0x8631, 0x00c8, 0x274f, 0x2019, 0x0004, 0x1078, 0x35c4,
+ 0x7924, 0x810f, 0x7a28, 0x1078, 0x275f, 0x0078, 0x2272, 0xa186,
+ 0x00ff, 0x0040, 0x2767, 0x1078, 0x2777, 0x0078, 0x2776, 0x2029,
+ 0x007e, 0x2061, 0x6d00, 0x644c, 0x2400, 0xa506, 0x0040, 0x2773,
+ 0x2508, 0x1078, 0x2777, 0x8529, 0x00c8, 0x276c, 0x007c, 0x1078,
+ 0x3447, 0x00c0, 0x2782, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108,
+ 0x1078, 0x40de, 0x007c, 0x81ff, 0x00c0, 0x229c, 0x1078, 0x2a1c,
+ 0x0040, 0x22a0, 0x1078, 0x34d7, 0x1078, 0x35b9, 0x0078, 0x2272,
+ 0x81ff, 0x00c0, 0x229c, 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x1078,
+ 0x34d7, 0x1078, 0x35a3, 0x0078, 0x2272, 0x6100, 0x0078, 0x2272,
+ 0x1078, 0x2a1c, 0x0040, 0x22a0, 0x6004, 0xa086, 0x0707, 0x0040,
+ 0x22a0, 0x2001, 0x6d00, 0x2004, 0xa086, 0x0003, 0x00c0, 0x229c,
+ 0x0d7e, 0xace8, 0x000a, 0x7924, 0xd184, 0x0040, 0x27b9, 0xace8,
+ 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04,
+ 0x831f, 0x6a00, 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200, 0x0078,
+ 0x2272, 0x81ff, 0x00c0, 0x229c, 0x7828, 0xa08a, 0x1000, 0x00c8,
+ 0x22a0, 0x7924, 0xa184, 0x00ff, 0xa082, 0x0010, 0x00c8, 0x22a0,
+ 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x27e6, 0xa182,
+ 0x007f, 0x00c8, 0x22a0, 0x2100, 0x1078, 0x1e30, 0x027e, 0x0c7e,
+ 0x127e, 0x2091, 0x8000, 0x2061, 0x6f23, 0x601b, 0x0000, 0x601f,
+ 0x0000, 0x2061, 0x6d00, 0x6003, 0x0001, 0x2061, 0x0100, 0x6030,
+ 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043,
+ 0x0010, 0x2009, 0x001e, 0x2011, 0x31f0, 0x1078, 0x415f, 0x7924,
+ 0x810f, 0x7a28, 0x1078, 0x275f, 0x127f, 0x0c7f, 0x027f, 0x0078,
+ 0x2272, 0x7924, 0xa18c, 0xff00, 0x810f, 0x0c7e, 0x1078, 0x3410,
+ 0x2c08, 0x0c7f, 0x00c0, 0x22a0, 0x0078, 0x2272, 0x81ff, 0x00c0,
+ 0x229c, 0x60bc, 0xd09c, 0x0040, 0x229c, 0x1078, 0x2a04, 0x0040,
+ 0x229c, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2a3c,
+ 0x701b, 0x2833, 0x007c, 0x2009, 0x0080, 0x1078, 0x3447, 0x00c0,
+ 0x229c, 0x0d7e, 0xade8, 0x000d, 0x6900, 0x6a08, 0x6b0c, 0x6c10,
+ 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0040, 0x28a7, 0xa0be,
+ 0x0112, 0x0040, 0x28a7, 0xa0be, 0x0113, 0x0040, 0x28a7, 0xa0be,
+ 0x0114, 0x0040, 0x28a7, 0xa0be, 0x0117, 0x0040, 0x28a7, 0xa0be,
+ 0x011a, 0x0040, 0x28a7, 0xa0be, 0x0121, 0x0040, 0x289d, 0xa0be,
+ 0x0131, 0x0040, 0x289d, 0xa0be, 0x0171, 0x0040, 0x28a7, 0xa0be,
+ 0x01a1, 0x00c0, 0x2870, 0x6830, 0x8007, 0x6832, 0x0078, 0x28ad,
+ 0xa0be, 0x0212, 0x0040, 0x28a3, 0xa0be, 0x0213, 0x0040, 0x28a3,
+ 0xa0be, 0x0214, 0x0040, 0x2895, 0xa0be, 0x0217, 0x0040, 0x288f,
+ 0xa0be, 0x021a, 0x00c0, 0x2889, 0x6838, 0x8007, 0x683a, 0x0078,
+ 0x28a7, 0xa0be, 0x0300, 0x0040, 0x28a7, 0x0078, 0x229c, 0xad80,
+ 0x0010, 0x20a9, 0x0007, 0x1078, 0x28d9, 0xad80, 0x000e, 0x20a9,
+ 0x0001, 0x1078, 0x28d9, 0x0078, 0x28a7, 0xad80, 0x000c, 0x1078,
+ 0x28e7, 0x0078, 0x28ad, 0xad80, 0x000e, 0x1078, 0x28e7, 0xad80,
+ 0x000c, 0x20a9, 0x0001, 0x1078, 0x28d9, 0x0c7e, 0x1078, 0x2a04,
+ 0x0040, 0x28ce, 0x6837, 0x0119, 0x684f, 0x0020, 0x685b, 0x0001,
+ 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92,
+ 0x6996, 0x689b, 0x0000, 0x0c7f, 0x0d7f, 0x1078, 0x623f, 0x0040,
+ 0x229c, 0x7007, 0x0003, 0x701b, 0x28d2, 0x007c, 0x0c7f, 0x0d7f,
+ 0x0078, 0x229c, 0x6820, 0xa086, 0x8001, 0x0040, 0x229c, 0x0078,
+ 0x2272, 0x017e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a,
+ 0x8108, 0x280a, 0x8108, 0x00f0, 0x28db, 0x017f, 0x007c, 0x017e,
+ 0x0a7e, 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054,
+ 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108,
+ 0x280a, 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x81ff, 0x00c0, 0x229c,
+ 0x7924, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0081, 0x0048, 0x22a0,
+ 0xa182, 0x00ff, 0x00c8, 0x22a0, 0x7a2c, 0x7b28, 0x6064, 0xa306,
+ 0x00c0, 0x2918, 0x6068, 0xa206, 0x00c0, 0x2918, 0x0078, 0x22a0,
+ 0x0c7e, 0x1078, 0x297b, 0x2c68, 0x0c7f, 0x0040, 0x2939, 0xa0c6,
+ 0x4007, 0x00c0, 0x2926, 0x7c26, 0x0078, 0x2936, 0xa0c6, 0x4008,
+ 0x00c0, 0x292e, 0x7f26, 0x7e2a, 0x0078, 0x2936, 0xa0c6, 0x4009,
+ 0x00c0, 0x2934, 0x0078, 0x2936, 0x2001, 0x4006, 0x2020, 0x0078,
+ 0x2274, 0x017e, 0x0b7e, 0x0c7e, 0x0e7e, 0x2c70, 0x1078, 0x5504,
+ 0x0040, 0x2969, 0x2d00, 0x601a, 0x2e58, 0x0e7f, 0x0e7e, 0x0c7e,
+ 0x1078, 0x2a04, 0x0c7f, 0x2b70, 0x0040, 0x229c, 0x6837, 0x0000,
+ 0x2d00, 0x6012, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, 0x33df,
+ 0x2001, 0x0002, 0x1078, 0x33f3, 0x127e, 0x2091, 0x8000, 0x7088,
+ 0x8000, 0x708a, 0x127f, 0x2009, 0x0002, 0x1078, 0x5591, 0xa085,
+ 0x0001, 0x0e7f, 0x0c7f, 0x0b7f, 0x017f, 0x0040, 0x229c, 0x7007,
+ 0x0003, 0x701b, 0x2974, 0x007c, 0x6830, 0xa086, 0x0100, 0x00c0,
+ 0x2272, 0x0078, 0x229c, 0x0e7e, 0x0d7e, 0x2029, 0x0000, 0x2021,
+ 0x0081, 0x20a9, 0x007e, 0x2071, 0x6e81, 0x2e04, 0xa005, 0x00c0,
+ 0x298f, 0x2100, 0xa406, 0x0040, 0x29c0, 0x0078, 0x29b4, 0x2068,
+ 0x6f10, 0x2700, 0xa306, 0x00c0, 0x29a5, 0x6e14, 0x2600, 0xa206,
+ 0x00c0, 0x29a5, 0x2400, 0xa106, 0x00c0, 0x29a1, 0x2d60, 0x0078,
+ 0x29c6, 0x2001, 0x4007, 0x0078, 0x29c7, 0x2400, 0xa106, 0x00c0,
+ 0x29b4, 0x6e14, 0x87ff, 0x00c0, 0x29b0, 0x86ff, 0x0040, 0x29c0,
+ 0x2001, 0x4008, 0x0078, 0x29c7, 0x8420, 0x8e70, 0x00f0, 0x2985,
+ 0x2001, 0x4009, 0x0078, 0x29c7, 0x2001, 0x0001, 0x0078, 0x29c7,
+ 0x1078, 0x3410, 0x00c0, 0x29bc, 0x6312, 0x6216, 0xa006, 0xa005,
+ 0x0d7f, 0x0e7f, 0x007c, 0x81ff, 0x00c0, 0x229c, 0x1078, 0x2a04,
+ 0x0040, 0x229c, 0x6837, 0x0000, 0x7824, 0xa005, 0x0040, 0x22a0,
+ 0xa096, 0x00ff, 0x0040, 0x29e0, 0xa092, 0x0004, 0x00c8, 0x22a0,
+ 0x2010, 0x2d18, 0x1078, 0x2013, 0x0040, 0x229c, 0x7007, 0x0003,
+ 0x701b, 0x29eb, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x229c,
+ 0x0078, 0x2272, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0081,
+ 0x0048, 0x22a0, 0xa182, 0x00ff, 0x00c8, 0x22a0, 0x1078, 0x615b,
+ 0x1078, 0x342f, 0x0078, 0x2272, 0x1078, 0x12f4, 0x0040, 0x2a1b,
+ 0xa006, 0x6802, 0x7010, 0xa005, 0x00c0, 0x2a13, 0x2d00, 0x7012,
+ 0x7016, 0x0078, 0x2a19, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006,
+ 0x7016, 0xad80, 0x000d, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff,
+ 0x1078, 0x3447, 0x00c0, 0x2a2a, 0xa6b4, 0x00ff, 0xa682, 0x0010,
+ 0x0048, 0x2a2b, 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff,
+ 0x0040, 0x2a38, 0x2168, 0x6904, 0x1078, 0x1328, 0x0078, 0x2a2f,
+ 0x7112, 0x7116, 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x2a42,
+ 0x2031, 0x0000, 0x2061, 0x6d9d, 0x6606, 0x6112, 0x600e, 0x6226,
+ 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x135f, 0x7007, 0x0002,
+ 0x701b, 0x2272, 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079,
+ 0x0000, 0x2001, 0x6d7b, 0x2004, 0xa005, 0x00c0, 0x2a6e, 0x0068,
+ 0x2a6e, 0x7818, 0xd084, 0x00c0, 0x2a6e, 0x781b, 0x0001, 0x7a22,
+ 0x7b26, 0x7c2a, 0x2091, 0x4080, 0x0078, 0x2a93, 0x017e, 0x0c7e,
+ 0x0e7e, 0x2071, 0x6d6d, 0x7138, 0xa182, 0x0004, 0x0048, 0x2a7c,
+ 0x7030, 0x2060, 0x0078, 0x2a8d, 0x7030, 0xa0e0, 0x0008, 0xac82,
+ 0x6d9d, 0x0048, 0x2a85, 0x2061, 0x6d7d, 0x2c00, 0x7032, 0x81ff,
+ 0x00c0, 0x2a8b, 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a,
+ 0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071,
+ 0x6d6d, 0x7038, 0xa005, 0x0040, 0x2acf, 0x127e, 0x2091, 0x8000,
+ 0x0068, 0x2ace, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0,
+ 0x2acd, 0x0c7e, 0x781b, 0x0001, 0x7034, 0x2060, 0x2c04, 0x7822,
+ 0x6004, 0x7826, 0x6008, 0x782a, 0x2091, 0x4080, 0x7038, 0x8001,
+ 0x703a, 0xa005, 0x00c0, 0x2ac3, 0x7033, 0x6d7d, 0x7037, 0x6d7d,
+ 0x0c7f, 0x0078, 0x2acd, 0xac80, 0x0008, 0xa0fa, 0x6d9d, 0x0048,
+ 0x2acb, 0x2001, 0x6d7d, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f,
+ 0x007c, 0x027e, 0x2001, 0x6d52, 0x2004, 0xd0c4, 0x0040, 0x2adc,
+ 0x2011, 0x8014, 0x1078, 0x2a53, 0x027f, 0x007c, 0x81ff, 0x00c0,
+ 0x229c, 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0x6032, 0x1078,
+ 0x31cb, 0x127f, 0x0078, 0x2272, 0x127e, 0x0c7e, 0x0e7e, 0x2061,
+ 0x0100, 0x2071, 0x6d00, 0x6044, 0xd0a4, 0x00c0, 0x2b11, 0xd084,
+ 0x0040, 0x2afe, 0x1078, 0x2c34, 0x0078, 0x2b11, 0xd08c, 0x0040,
+ 0x2b05, 0x1078, 0x2b4b, 0x0078, 0x2b11, 0xd094, 0x0040, 0x2b0c,
+ 0x1078, 0x2b2c, 0x0078, 0x2b11, 0xd09c, 0x0040, 0x2b11, 0x1078,
+ 0x2b15, 0x0e7f, 0x0c7f, 0x127f, 0x007c, 0x6043, 0x0040, 0x6043,
+ 0x0000, 0x706f, 0x0000, 0x7087, 0x0001, 0x70a7, 0x0000, 0x2009,
+ 0x73c0, 0x200b, 0x0000, 0x7073, 0x000f, 0x2009, 0x000f, 0x2011,
+ 0x3187, 0x1078, 0x415f, 0x007c, 0x7070, 0xa005, 0x00c0, 0x2b4a,
+ 0x2011, 0x3187, 0x1078, 0x40d1, 0x6043, 0x0020, 0x6043, 0x0000,
+ 0x6044, 0xd08c, 0x00c0, 0x2b46, 0x7003, 0x0001, 0x7083, 0x0000,
+ 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x2b4a, 0x7077, 0x0000,
+ 0x0078, 0x2b4a, 0x007c, 0x7074, 0xa08a, 0x0003, 0x00c8, 0x2b54,
+ 0x1079, 0x2b57, 0x0078, 0x2b56, 0x1078, 0x12b7, 0x007c, 0x2b5a,
+ 0x2ba9, 0x2c33, 0x0f7e, 0x7077, 0x0001, 0x20e1, 0xa000, 0x20e1,
+ 0x8700, 0x1078, 0x1bcc, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079,
+ 0x7200, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f,
+ 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f,
+ 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f,
+ 0x0000, 0x2079, 0x720c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099,
+ 0x6d05, 0x20a1, 0x720e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0x7212,
+ 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0x7200, 0x20a1, 0x020b,
+ 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x1078,
+ 0x31b2, 0x0f7f, 0x707b, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000,
+ 0x007c, 0x0d7e, 0x7078, 0x707b, 0x0000, 0xa025, 0x0040, 0x2c1d,
+ 0x6020, 0xd0b4, 0x00c0, 0x2c1b, 0x7184, 0x81ff, 0x0040, 0x2c04,
+ 0xa486, 0x000c, 0x00c0, 0x2c0f, 0xa480, 0x0018, 0x8004, 0x20a8,
+ 0x2011, 0x7280, 0x2019, 0x7200, 0x220c, 0x2304, 0xa106, 0x00c0,
+ 0x2bdb, 0x8210, 0x8318, 0x00f0, 0x2bc4, 0x6043, 0x0004, 0x608b,
+ 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x7077, 0x0002, 0x7083,
+ 0x0002, 0x0078, 0x2c1b, 0x2069, 0x7280, 0x6930, 0xa18e, 0x1101,
+ 0x00c0, 0x2c0f, 0x6834, 0xa005, 0x00c0, 0x2c0f, 0x6900, 0xa18c,
+ 0x00ff, 0x00c0, 0x2bef, 0x6804, 0xa005, 0x0040, 0x2c04, 0x2011,
+ 0x728e, 0x2019, 0x6d05, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102,
+ 0x0048, 0x2c02, 0x00c0, 0x2c0f, 0x8210, 0x8318, 0x00f0, 0x2bf5,
+ 0x0078, 0x2c0f, 0x7087, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x2099, 0x7280, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043,
+ 0x0008, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2c1b, 0x60c3,
+ 0x000c, 0x1078, 0x31b2, 0x0d7f, 0x007c, 0x6020, 0xd0b4, 0x00c0,
+ 0x2c1b, 0x60c3, 0x000c, 0x2011, 0x6f1a, 0x2013, 0x0000, 0x707b,
+ 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078,
+ 0x4fdc, 0x0078, 0x2c1b, 0x007c, 0x7080, 0xa08a, 0x001d, 0x00c8,
+ 0x2c3d, 0x1079, 0x2c40, 0x0078, 0x2c3f, 0x1078, 0x12b7, 0x007c,
+ 0x2c64, 0x2c73, 0x2ca6, 0x2cbb, 0x2ced, 0x2d17, 0x2d49, 0x2d73,
+ 0x2da5, 0x2dcb, 0x2e1a, 0x2e3c, 0x2e60, 0x2e76, 0x2e9c, 0x2eaf,
+ 0x2eb8, 0x2ed1, 0x2f01, 0x2f2b, 0x2f5b, 0x2f85, 0x2fce, 0x3003,
+ 0x3025, 0x3063, 0x3087, 0x30a0, 0x30ad, 0x7003, 0x0007, 0x6004,
+ 0xa084, 0xfff9, 0x6006, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0,
+ 0x6043, 0x0002, 0x7083, 0x0001, 0x2009, 0x07d0, 0x2011, 0x318e,
+ 0x1078, 0x40c4, 0x007c, 0x0f7e, 0x7078, 0xa086, 0x0014, 0x00c0,
+ 0x2ca4, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2ca4, 0x2079,
+ 0x7280, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x2ca2, 0x7834, 0xa005,
+ 0x00c0, 0x2ca2, 0x7a38, 0xd2fc, 0x0040, 0x2c98, 0x70a4, 0xa005,
+ 0x00c0, 0x2c98, 0x2019, 0x002a, 0x1078, 0x202f, 0x70a7, 0x0001,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0x7083, 0x0010, 0x1078, 0x2eb8,
+ 0x0078, 0x2ca4, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0003,
+ 0x6043, 0x0004, 0x1078, 0x321b, 0x20a3, 0x1102, 0x20a3, 0x0000,
+ 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x2cb2, 0x60c3, 0x0014,
+ 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x2ceb,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0014, 0x00c0, 0x2ce7,
+ 0x2079, 0x7280, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x2ce7, 0x7834,
+ 0xa005, 0x00c0, 0x2ce7, 0x7a38, 0xd2fc, 0x0040, 0x2ce1, 0x70a4,
+ 0xa005, 0x00c0, 0x2ce1, 0x2019, 0x002a, 0x1078, 0x202f, 0x70a7,
+ 0x0001, 0x7083, 0x0004, 0x1078, 0x2ced, 0x0078, 0x2ceb, 0x7083,
+ 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0005, 0x1078,
+ 0x321b, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0x728e,
+ 0x706c, 0xa005, 0x00c0, 0x2d09, 0x714c, 0xa186, 0xffff, 0x0040,
+ 0x2d09, 0x1078, 0x3152, 0x0040, 0x2d09, 0x2019, 0x002a, 0x1078,
+ 0x202f, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31b2, 0x007c, 0x0f7e,
+ 0x7078, 0xa005, 0x0040, 0x2d47, 0x2011, 0x318e, 0x1078, 0x40d1,
+ 0xa086, 0x0014, 0x00c0, 0x2d43, 0x2079, 0x7280, 0x7a30, 0xa296,
+ 0x1103, 0x00c0, 0x2d43, 0x7834, 0xa005, 0x00c0, 0x2d43, 0x7a38,
+ 0xd2fc, 0x0040, 0x2d3d, 0x70a4, 0xa005, 0x00c0, 0x2d3d, 0x2019,
+ 0x002a, 0x1078, 0x202f, 0x70a7, 0x0001, 0x7083, 0x0006, 0x1078,
+ 0x2d49, 0x0078, 0x2d47, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f,
+ 0x007c, 0x7083, 0x0007, 0x1078, 0x321b, 0x20a3, 0x1104, 0x20a3,
+ 0x0000, 0x3430, 0x2011, 0x728e, 0x706c, 0xa005, 0x00c0, 0x2d65,
+ 0x7150, 0xa186, 0xffff, 0x0040, 0x2d65, 0xa180, 0x2091, 0x200c,
+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x3152, 0x20a9, 0x0008, 0x2298,
0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2fbf,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014, 0x00c0, 0x2fbd,
- 0x2079, 0x7380, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2fbd, 0x7834,
- 0xa005, 0x00c0, 0x2fbd, 0x7a38, 0xd2fc, 0x0040, 0x2fb7, 0x709c,
- 0xa005, 0x00c0, 0x2fb7, 0x1078, 0x32a9, 0x709f, 0x0001, 0x707b,
- 0x0014, 0x1078, 0x2fc1, 0x0078, 0x2fbf, 0x7073, 0x0000, 0x0f7f,
- 0x007c, 0x707b, 0x0015, 0x1078, 0x3286, 0x20a3, 0x1104, 0x20a3,
- 0x0000, 0x3430, 0x2011, 0x738e, 0x7064, 0xa006, 0x00c0, 0x2fdd,
- 0x7150, 0xa186, 0xffff, 0x0040, 0x2fdd, 0xa180, 0x2207, 0x200c,
- 0xa18c, 0xff00, 0x810f, 0x1078, 0x31b4, 0x20a9, 0x0008, 0x2298,
+ 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x2da3,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0014, 0x00c0, 0x2d9f,
+ 0x2079, 0x7280, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2d9f, 0x7834,
+ 0xa005, 0x00c0, 0x2d9f, 0x7a38, 0xd2fc, 0x0040, 0x2d99, 0x70a4,
+ 0xa005, 0x00c0, 0x2d99, 0x2019, 0x002a, 0x1078, 0x202f, 0x70a7,
+ 0x0001, 0x7083, 0x0008, 0x1078, 0x2da5, 0x0078, 0x2da3, 0x7083,
+ 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0009, 0x1078,
+ 0x321b, 0x20a3, 0x1105, 0x20a3, 0x0100, 0x3430, 0x706c, 0xa005,
+ 0x00c0, 0x2db8, 0x1078, 0x30bc, 0x0040, 0x2dc8, 0x0078, 0x2dc2,
+ 0x20a9, 0x0008, 0x2099, 0x728e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31b2, 0x0078, 0x2dca,
+ 0x1078, 0x2c5d, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x2e18,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0014, 0x00c0, 0x2e14,
+ 0x2079, 0x7280, 0x7a30, 0xa296, 0x1105, 0x00c0, 0x2e14, 0x7834,
+ 0x2011, 0x0100, 0xa21e, 0x00c0, 0x2dfb, 0x7a38, 0xd2fc, 0x0040,
+ 0x2df3, 0x70a4, 0xa005, 0x00c0, 0x2df3, 0x2019, 0x002a, 0x1078,
+ 0x202f, 0x70a7, 0x0001, 0x707f, 0x0001, 0x7083, 0x000a, 0x1078,
+ 0x2e1a, 0x0078, 0x2e18, 0xa005, 0x00c0, 0x2e14, 0x7a38, 0xd2fc,
+ 0x0040, 0x2e0c, 0x70a4, 0xa005, 0x00c0, 0x2e0c, 0x2019, 0x002a,
+ 0x1078, 0x202f, 0x70a7, 0x0001, 0x707f, 0x0000, 0x7083, 0x000e,
+ 0x1078, 0x2e9c, 0x0078, 0x2e18, 0x7083, 0x0002, 0x707b, 0x0000,
+ 0x0f7f, 0x007c, 0x7083, 0x000b, 0x2011, 0x720e, 0x22a0, 0x20a9,
+ 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000,
+ 0x41a4, 0x1078, 0x321b, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x6030,
+ 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3,
+ 0x0084, 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040,
+ 0x2e5e, 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0084, 0x00c0,
+ 0x2e5a, 0x2079, 0x7280, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x2e5a,
+ 0x7834, 0xa005, 0x00c0, 0x2e5a, 0x7083, 0x000c, 0x1078, 0x2e60,
+ 0x0078, 0x2e5e, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c,
+ 0x7083, 0x000d, 0x1078, 0x321b, 0x20a3, 0x1107, 0x20a3, 0x0000,
+ 0x2099, 0x728e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x0084, 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078,
+ 0xa005, 0x0040, 0x2e9a, 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086,
+ 0x0084, 0x00c0, 0x2e96, 0x2079, 0x7280, 0x7a30, 0xa296, 0x1107,
+ 0x00c0, 0x2e96, 0x7834, 0xa005, 0x00c0, 0x2e96, 0x1078, 0x320d,
+ 0x7083, 0x000e, 0x1078, 0x2e9c, 0x0078, 0x2e9a, 0x7083, 0x0002,
+ 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x000f, 0x707b, 0x0000,
+ 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004,
+ 0x2009, 0x07d0, 0x2011, 0x318e, 0x1078, 0x40c4, 0x007c, 0x7078,
+ 0xa005, 0x0040, 0x2eb7, 0x2011, 0x318e, 0x1078, 0x40d1, 0x007c,
+ 0x7083, 0x0011, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7280,
+ 0x20a1, 0x020b, 0x7478, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084,
+ 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x1078, 0x31b2,
+ 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x2eff, 0x2011, 0x318e,
+ 0x1078, 0x40d1, 0xa086, 0x0014, 0x00c0, 0x2efd, 0x2079, 0x7280,
+ 0x7a30, 0xa296, 0x1103, 0x00c0, 0x2efd, 0x7834, 0xa005, 0x00c0,
+ 0x2efd, 0x7a38, 0xd2fc, 0x0040, 0x2ef7, 0x70a4, 0xa005, 0x00c0,
+ 0x2ef7, 0x2019, 0x002a, 0x1078, 0x202f, 0x70a7, 0x0001, 0x7083,
+ 0x0012, 0x1078, 0x2f01, 0x0078, 0x2eff, 0x707b, 0x0000, 0x0f7f,
+ 0x007c, 0x7083, 0x0013, 0x1078, 0x3227, 0x20a3, 0x1103, 0x20a3,
+ 0x0000, 0x3430, 0x2011, 0x728e, 0x706c, 0xa005, 0x00c0, 0x2f1d,
+ 0x714c, 0xa186, 0xffff, 0x0040, 0x2f1d, 0x1078, 0x3152, 0x0040,
+ 0x2f1d, 0x2019, 0x002a, 0x1078, 0x202f, 0x20a9, 0x0008, 0x2298,
0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x302e,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0014, 0x00c0, 0x302c,
- 0x2079, 0x7380, 0x7a30, 0xa296, 0x1105, 0x00c0, 0x302c, 0x7834,
- 0x2011, 0x0100, 0xa21e, 0x00c0, 0x3015, 0x7a38, 0xd2fc, 0x0040,
- 0x3011, 0x709c, 0xa005, 0x00c0, 0x3011, 0x1078, 0x32a9, 0x709f,
- 0x0001, 0x7077, 0x0001, 0x0078, 0x3026, 0xa005, 0x00c0, 0x302c,
- 0x7a38, 0xd2fc, 0x0040, 0x3024, 0x709c, 0xa005, 0x00c0, 0x3024,
- 0x1078, 0x32a9, 0x709f, 0x0001, 0x7077, 0x0000, 0x707b, 0x0016,
- 0x1078, 0x3030, 0x0078, 0x302e, 0x7073, 0x0000, 0x0f7f, 0x007c,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7380, 0x20a1, 0x020b,
- 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0x738e, 0x7074, 0xa005,
- 0x0040, 0x3046, 0x707b, 0x0017, 0x0078, 0x3048, 0x707b, 0x001b,
- 0x7064, 0xa005, 0x00c0, 0x3052, 0x1078, 0x311e, 0x0040, 0x3062,
- 0x0078, 0x305c, 0x20a9, 0x0008, 0x2099, 0x738e, 0x26a0, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x3210,
- 0x0078, 0x3064, 0x1078, 0x2cd7, 0x007c, 0x0f7e, 0x7070, 0xa005,
- 0x0040, 0x3085, 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0084,
- 0x00c0, 0x3083, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1106, 0x00c0,
- 0x3083, 0x7834, 0xa005, 0x00c0, 0x3083, 0x707b, 0x0018, 0x1078,
- 0x3087, 0x0078, 0x3085, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
- 0x0019, 0x1078, 0x3286, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430,
- 0x2099, 0x738e, 0x2039, 0x730e, 0x27a0, 0x20a9, 0x0040, 0x53a3,
- 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294,
- 0x00ff, 0x8007, 0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0,
- 0x730e, 0x2414, 0xa38c, 0x0001, 0x0040, 0x30b2, 0xa294, 0xff00,
- 0x0078, 0x30b5, 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798,
- 0x26a0, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0084, 0x1078, 0x3210, 0x007c, 0x0f7e, 0x7070, 0xa005,
- 0x0040, 0x30e7, 0x2011, 0x31f0, 0x1078, 0x4187, 0xa086, 0x0084,
- 0x00c0, 0x30e5, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1107, 0x00c0,
- 0x30e5, 0x7834, 0xa005, 0x00c0, 0x30e5, 0x1078, 0x326c, 0x707b,
- 0x001a, 0x1078, 0x30e9, 0x0078, 0x30e7, 0x7073, 0x0000, 0x0f7f,
- 0x007c, 0x707b, 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
- 0x7380, 0x20a1, 0x020b, 0x7470, 0xa480, 0x0018, 0xa080, 0x0007,
- 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078,
- 0x3210, 0x007c, 0x7070, 0xa005, 0x0040, 0x310e, 0x2011, 0x31f0,
- 0x1078, 0x4187, 0x707b, 0x001c, 0x1078, 0x310f, 0x007c, 0x7073,
- 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0001, 0x2009,
- 0x07d0, 0x2011, 0x31f0, 0x1078, 0x417a, 0x007c, 0x087e, 0x097e,
- 0x2029, 0x6f52, 0x252c, 0x20a9, 0x0008, 0x2041, 0x730e, 0x28a0,
- 0x2099, 0x738e, 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4,
- 0x0040, 0x3134, 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6,
- 0xffff, 0x00c0, 0x3146, 0xd5d4, 0x0040, 0x3141, 0x8210, 0x0078,
- 0x3142, 0x8211, 0x00f0, 0x3134, 0x0078, 0x31ab, 0x82ff, 0x00c0,
- 0x3158, 0xd5d4, 0x0040, 0x3152, 0xa1a6, 0x3fff, 0x0040, 0x313e,
- 0x0078, 0x3156, 0xa1a6, 0x3fff, 0x0040, 0x31ab, 0xa18d, 0xc000,
- 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0040, 0x3161, 0x2019,
- 0x0010, 0x2120, 0xd5d4, 0x0040, 0x3168, 0x8423, 0x0078, 0x3169,
- 0x8424, 0x00c8, 0x3176, 0xd5d4, 0x0040, 0x3171, 0x8319, 0x0078,
- 0x3172, 0x8318, 0x00f0, 0x3162, 0x0078, 0x31ab, 0x23a8, 0x2021,
- 0x0001, 0x8426, 0x8425, 0x00f0, 0x317a, 0x2328, 0x8529, 0xa2be,
- 0x0007, 0x0040, 0x318e, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a,
- 0x007f, 0x27a8, 0xa5a8, 0x0010, 0x00f0, 0x318a, 0x754e, 0xa5c8,
- 0x2207, 0x292c, 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea,
- 0x2018, 0x2304, 0xa405, 0x201a, 0x7067, 0x0001, 0x26a0, 0x2898,
- 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085,
- 0x0001, 0x0078, 0x31b1, 0xa006, 0x0078, 0x31b1, 0xa006, 0x1078,
- 0x1288, 0x097f, 0x087f, 0x007c, 0x2118, 0x2021, 0x0000, 0x2001,
- 0x0007, 0xa39a, 0x0010, 0x0048, 0x31c1, 0x8420, 0x8001, 0x0078,
- 0x31b9, 0x2118, 0x84ff, 0x0040, 0x31ca, 0xa39a, 0x0010, 0x8421,
- 0x00c0, 0x31c5, 0x2021, 0x0001, 0x83ff, 0x0040, 0x31d3, 0x8423,
- 0x8319, 0x00c0, 0x31cf, 0xa238, 0x2704, 0xa42c, 0x00c0, 0x31e8,
- 0xa405, 0x203a, 0x714e, 0xa1a0, 0x2207, 0x242c, 0xa5ac, 0x00ff,
- 0x6532, 0x60e7, 0x0000, 0x65ea, 0x7067, 0x0001, 0xa084, 0x0000,
- 0x007c, 0x0e7e, 0x2071, 0x6f00, 0x706b, 0x0000, 0x0e7f, 0x007c,
- 0x0e7e, 0x0f7e, 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x4f8e,
- 0x7004, 0xa084, 0x4000, 0x0040, 0x3201, 0x7003, 0x1000, 0x7003,
- 0x0000, 0x127e, 0x2091, 0x8000, 0x2071, 0x6f1e, 0x2073, 0x0000,
- 0x7843, 0x0090, 0x7843, 0x0010, 0x127f, 0x0f7f, 0x0e7f, 0x007c,
- 0x127e, 0x2091, 0x8000, 0x2011, 0x70c0, 0x2013, 0x0000, 0x7073,
- 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
- 0x1078, 0x4f85, 0x2009, 0x07d0, 0x2011, 0x31f0, 0x1078, 0x4217,
- 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x2009,
- 0x00f7, 0x1078, 0x3292, 0x2061, 0x70c9, 0x601b, 0x0000, 0x601f,
- 0x0000, 0x2061, 0x6f00, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043,
- 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x324e, 0x1078,
- 0x417a, 0x127f, 0x0c7f, 0x027f, 0x017f, 0x007c, 0x0e7e, 0x007e,
- 0x127e, 0x2091, 0x8000, 0x2071, 0x0100, 0x1078, 0x4f8e, 0x2071,
- 0x0140, 0x7004, 0xa084, 0x4000, 0x0040, 0x3262, 0x7003, 0x1000,
- 0x7003, 0x0000, 0x2001, 0x0001, 0x1078, 0x1f8a, 0x1078, 0x3229,
- 0x127f, 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0x74c0,
- 0x2099, 0x738e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0,
- 0x3272, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7300,
- 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x2099, 0x7380, 0x20a1, 0x020b, 0x20a9, 0x000c,
- 0x53a6, 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001,
- 0x6f2a, 0x2004, 0xa005, 0x00c0, 0x32a3, 0x6030, 0xa084, 0x00ff,
- 0xa105, 0x0078, 0x32a5, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f,
- 0x007c, 0x017e, 0x047e, 0x2001, 0x6f52, 0x2004, 0xd0a4, 0x0040,
- 0x32bc, 0xa006, 0x2020, 0x2009, 0x002a, 0x1078, 0x6dc4, 0x2001,
- 0x6f0c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x1078, 0x2186,
- 0x047f, 0x017f, 0x007c, 0x157e, 0x20a9, 0x007d, 0x2009, 0x7020,
- 0xa006, 0x200a, 0x8108, 0x00f0, 0x32c9, 0x157f, 0x007c, 0x0d7e,
- 0x037e, 0x157e, 0x137e, 0x147e, 0x2069, 0x6f51, 0xa006, 0x6002,
- 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2207, 0x231c,
- 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0,
- 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e,
- 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066,
- 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086,
- 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x61a2, 0x604a,
- 0x6810, 0x603a, 0x680c, 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042,
- 0x147f, 0x137f, 0x157f, 0x037f, 0x0d7f, 0x007c, 0x127e, 0x2091,
- 0x8000, 0x6944, 0xa1b4, 0x00ff, 0xa682, 0x0010, 0x00c8, 0x33bb,
- 0xa18c, 0xff00, 0x810f, 0xa182, 0x007e, 0x00c8, 0x33c1, 0x2001,
- 0x6f0c, 0x2004, 0xa084, 0x0003, 0x00c0, 0x33a4, 0xa188, 0x7020,
- 0x2104, 0xa065, 0x0040, 0x339a, 0x6004, 0xa084, 0x00ff, 0xa08e,
- 0x0006, 0x00c0, 0x33a0, 0x6078, 0xa00d, 0x0040, 0x3345, 0xa680,
- 0x6e58, 0x2004, 0xa10c, 0x00c0, 0x3394, 0x607c, 0xa00d, 0x0040,
- 0x3361, 0xa680, 0x6e58, 0x2004, 0xa10c, 0x0040, 0x3361, 0x694c,
- 0xd1fc, 0x00c0, 0x3357, 0x1078, 0x3454, 0x0078, 0x338f, 0x1078,
- 0x3425, 0x694c, 0xd1ec, 0x00c0, 0x338f, 0x1078, 0x356d, 0x0078,
- 0x338f, 0x694c, 0xa184, 0xa000, 0x0040, 0x337f, 0xd1ec, 0x0040,
- 0x3378, 0xd1fc, 0x0040, 0x3370, 0x1078, 0x3584, 0x0078, 0x337b,
- 0xa680, 0x6e58, 0x200c, 0x607c, 0xa105, 0x607e, 0x0078, 0x337f,
- 0xd1fc, 0x0040, 0x337f, 0x1078, 0x3425, 0x0078, 0x338f, 0x6050,
- 0xa00d, 0x0040, 0x338a, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
- 0x0078, 0x338f, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x1078,
- 0x445d, 0xa006, 0x127f, 0x007c, 0x2001, 0x0005, 0x2009, 0x0000,
- 0x0078, 0x33c5, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x33c5,
- 0xa082, 0x0006, 0x0048, 0x333b, 0x2009, 0x6f0c, 0x210c, 0xd18c,
- 0x0040, 0x33ae, 0x2001, 0x0004, 0x0078, 0x33b7, 0xd184, 0x0040,
- 0x33b5, 0x2001, 0x0004, 0x0078, 0x33b7, 0x2001, 0x0029, 0x2009,
- 0x0000, 0x0078, 0x33c5, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078,
- 0x33c5, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x127f, 0x007c,
- 0x6944, 0xa1b4, 0x00ff, 0xa682, 0x0010, 0x00c8, 0x340a, 0xa18c,
- 0xff00, 0x810f, 0xa182, 0x007e, 0x00c8, 0x33fa, 0xa188, 0x7020,
- 0x2104, 0xa065, 0x0040, 0x33fa, 0x6004, 0xa084, 0x00ff, 0xa08e,
- 0x0006, 0x00c0, 0x3400, 0x684c, 0xd0ec, 0x0040, 0x33ed, 0x1078,
- 0x3584, 0x1078, 0x3425, 0x0078, 0x33f5, 0x1078, 0x3425, 0x684c,
- 0xd0fc, 0x0040, 0x33f5, 0x1078, 0x356d, 0x1078, 0x3598, 0xa006,
- 0x0078, 0x340e, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x340e,
- 0xa082, 0x0006, 0x0048, 0x33e3, 0x2001, 0x0029, 0x2009, 0x0000,
- 0x0078, 0x340e, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x007c,
- 0x127e, 0x2091, 0x8000, 0x6050, 0xa00d, 0x0040, 0x341e, 0x2d00,
- 0x200a, 0x6803, 0x0000, 0x6052, 0x127f, 0x007c, 0x2d00, 0x6052,
- 0x604e, 0x6803, 0x0000, 0x0078, 0x341c, 0x127e, 0x2091, 0x8000,
- 0x604c, 0xa005, 0x0040, 0x3431, 0x6802, 0x2d00, 0x604e, 0x127f,
- 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x342f,
- 0x127e, 0x2091, 0x8000, 0x604c, 0xa06d, 0x0040, 0x3446, 0x6800,
- 0xa005, 0x00c0, 0x3444, 0x6052, 0x604e, 0xad05, 0x127f, 0x007c,
- 0x604c, 0xa06d, 0x0040, 0x3453, 0x6800, 0xa005, 0x00c0, 0x3451,
- 0x6052, 0x604e, 0xad05, 0x007c, 0x6803, 0x0000, 0x6084, 0xa00d,
- 0x0040, 0x345e, 0x2d00, 0x200a, 0x6086, 0x007c, 0x2d00, 0x6086,
- 0x6082, 0x0078, 0x345d, 0x127e, 0x0c7e, 0x027e, 0x2091, 0x8000,
- 0x6218, 0x2260, 0x6200, 0xa005, 0x0040, 0x3471, 0xc285, 0x0078,
- 0x3472, 0xc284, 0x6202, 0x027f, 0x0c7f, 0x127f, 0x007c, 0x127e,
- 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0xa294, 0xff00,
- 0xa215, 0x6206, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091,
- 0x8000, 0x6218, 0x2260, 0x6204, 0xa294, 0x00ff, 0x8007, 0xa215,
- 0x6206, 0x0c7f, 0x127f, 0x007c, 0x027e, 0xa182, 0x007e, 0x0048,
- 0x349d, 0xa085, 0x0001, 0x0078, 0x34b1, 0xa190, 0x7020, 0x2204,
- 0xa065, 0x00c0, 0x34b0, 0x017e, 0x0d7e, 0x1078, 0x12c7, 0x2d60,
- 0x0d7f, 0x017f, 0x0040, 0x3499, 0x2c00, 0x2012, 0x1078, 0x32cf,
- 0xa006, 0x027f, 0x007c, 0x027e, 0xa182, 0x007e, 0x0048, 0x34bc,
- 0xa085, 0x0001, 0x0078, 0x34c9, 0x0d7e, 0xa190, 0x7020, 0x2204,
- 0xa06d, 0x0040, 0x34c7, 0x2013, 0x0000, 0x1078, 0x12fb, 0x0d7f,
- 0xa006, 0x027f, 0x007c, 0x017e, 0xa182, 0x007e, 0x0048, 0x34d4,
- 0xa085, 0x0001, 0x0078, 0x34db, 0xa188, 0x7020, 0x2104, 0xa065,
- 0x0040, 0x34d0, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e, 0x137e,
- 0x147e, 0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, 0x6002,
- 0x2069, 0x738e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, 0xa10a,
- 0x0048, 0x34f3, 0x603a, 0x6814, 0x6066, 0x2099, 0x7396, 0xac88,
- 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0x739a, 0xac88,
- 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0x73ae, 0x6808,
- 0x606a, 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, 0xa182,
- 0x0211, 0x00c8, 0x3517, 0x2009, 0x0008, 0x0078, 0x3541, 0xa182,
- 0x0259, 0x00c8, 0x351f, 0x2009, 0x0007, 0x0078, 0x3541, 0xa182,
- 0x02c1, 0x00c8, 0x3527, 0x2009, 0x0006, 0x0078, 0x3541, 0xa182,
- 0x0349, 0x00c8, 0x352f, 0x2009, 0x0005, 0x0078, 0x3541, 0xa182,
- 0x0421, 0x00c8, 0x3537, 0x2009, 0x0004, 0x0078, 0x3541, 0xa182,
- 0x0581, 0x00c8, 0x353f, 0x2009, 0x0003, 0x0078, 0x3541, 0x2009,
- 0x0002, 0x6192, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x0e7e,
- 0x2071, 0x738d, 0x2e04, 0x6896, 0x2071, 0x738e, 0x7004, 0x689a,
- 0x701c, 0x689e, 0x0e7f, 0x007c, 0x2001, 0x6e58, 0xa600, 0x2004,
- 0x127e, 0x2091, 0x8000, 0x6178, 0xa10d, 0x617a, 0x127f, 0x007c,
- 0x2001, 0x6e58, 0xa600, 0x2004, 0x8002, 0x127e, 0x2091, 0x8000,
- 0x6178, 0xa10c, 0x617a, 0x127f, 0x007c, 0x2001, 0x6e58, 0xa600,
- 0x2004, 0x8002, 0x127e, 0x2091, 0x8000, 0x617c, 0xa10c, 0x617e,
- 0x127f, 0x0078, 0x357d, 0x1078, 0x3410, 0x1078, 0x35de, 0x00c0,
- 0x357b, 0x1078, 0x3598, 0x007c, 0x2001, 0x6e58, 0xa600, 0x2004,
- 0x127e, 0x2091, 0x8000, 0x617c, 0xa10d, 0x617e, 0x127f, 0x0078,
- 0x3593, 0x1078, 0x3454, 0x1078, 0x35a2, 0x00c0, 0x3591, 0x007c,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x445d, 0x127f, 0x007c, 0xa01e,
- 0x0078, 0x35a4, 0x2019, 0x0001, 0xa00e, 0x127e, 0x2091, 0x8000,
- 0x604c, 0x2068, 0x6000, 0xd0dc, 0x00c0, 0x35c4, 0x8dff, 0x0040,
- 0x35d9, 0x83ff, 0x0040, 0x35bc, 0x6844, 0xa084, 0x00ff, 0xa606,
- 0x0040, 0x35c9, 0x0078, 0x35c4, 0x683c, 0xa406, 0x00c0, 0x35c4,
- 0x6840, 0xa506, 0x0040, 0x35c9, 0x2d08, 0x6800, 0x2068, 0x0078,
- 0x35ae, 0x6a00, 0x604c, 0xad06, 0x00c0, 0x35d1, 0x624e, 0x0078,
- 0x35d4, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x35d9, 0x6152,
- 0x8dff, 0x127f, 0x007c, 0xa01e, 0x0078, 0x35e0, 0x2019, 0x0001,
- 0xa00e, 0x6080, 0x2068, 0x8dff, 0x0040, 0x360e, 0x83ff, 0x0040,
- 0x35f1, 0x6844, 0xa084, 0x00ff, 0xa606, 0x0040, 0x35fe, 0x0078,
- 0x35f9, 0x683c, 0xa406, 0x00c0, 0x35f9, 0x6840, 0xa506, 0x0040,
- 0x35fe, 0x2d08, 0x6800, 0x2068, 0x0078, 0x35e3, 0x6a00, 0x6080,
- 0xad06, 0x00c0, 0x3606, 0x6282, 0x0078, 0x3609, 0xa180, 0x0000,
- 0x2202, 0x82ff, 0x00c0, 0x360e, 0x6186, 0x8dff, 0x007c, 0x2001,
- 0x6e58, 0xa600, 0x2004, 0x6178, 0xa10c, 0x0040, 0x3619, 0x2011,
- 0x0001, 0x617c, 0xa10c, 0x0040, 0x361f, 0xa295, 0x0002, 0x007c,
- 0x1078, 0x366b, 0x0040, 0x3628, 0x1078, 0x62c8, 0x0078, 0x362a,
- 0xa085, 0x0001, 0x007c, 0x1078, 0x366b, 0x0040, 0x3633, 0x1078,
- 0x6257, 0x0078, 0x3635, 0xa085, 0x0001, 0x007c, 0x1078, 0x366b,
- 0x0040, 0x363e, 0x1078, 0x629d, 0x0078, 0x3640, 0xa085, 0x0001,
- 0x007c, 0x1078, 0x366b, 0x0040, 0x3649, 0x1078, 0x6273, 0x0078,
- 0x364b, 0xa085, 0x0001, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091,
- 0x8000, 0x6080, 0xa06d, 0x0040, 0x3663, 0x6800, 0x007e, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x63d5, 0x1078, 0x3720,
- 0x007f, 0x0078, 0x3652, 0x6083, 0x0000, 0x6087, 0x0000, 0x0d7f,
- 0x007f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, 0x0f7e, 0x2079,
- 0x6f51, 0x7804, 0xd0a4, 0x0040, 0x3697, 0x157e, 0x0c7e, 0x20a9,
- 0x007e, 0x2009, 0x0000, 0x017e, 0x1078, 0x34cb, 0x00c0, 0x368b,
- 0x6004, 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, 0x00c0, 0x368b,
- 0x6000, 0xc0ed, 0x6002, 0x017f, 0x8108, 0x00f0, 0x367b, 0x0c7f,
- 0x157f, 0x2009, 0x07d0, 0x2011, 0x3699, 0x1078, 0x4217, 0x0f7f,
- 0x007c, 0x2011, 0x3699, 0x1078, 0x4187, 0x157e, 0x0c7e, 0x20a9,
- 0x007e, 0x2009, 0x0000, 0x017e, 0x1078, 0x34cb, 0x00c0, 0x36c5,
- 0x6000, 0xd0ec, 0x0040, 0x36c5, 0x047e, 0x62a0, 0xa294, 0x00ff,
- 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0x6dc4, 0x6000, 0xc0e5,
- 0xc0ec, 0x6002, 0x2019, 0x0029, 0x1078, 0x457b, 0x1078, 0x44be,
- 0x2009, 0x0000, 0x1078, 0x6bfe, 0x047f, 0x017f, 0x8108, 0x00f0,
- 0x36a3, 0x0c7f, 0x157f, 0x007c, 0x0c7e, 0x6018, 0x2060, 0x6000,
- 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x2071, 0x6fff, 0x7003, 0x0001,
- 0x7007, 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000,
- 0x701f, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, 0x0020,
- 0x705f, 0x0040, 0x707f, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x6fff,
- 0x684c, 0xa005, 0x00c0, 0x36fb, 0x7028, 0xc085, 0x702a, 0xa085,
- 0x0001, 0x0078, 0x371e, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868,
- 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844,
- 0x7032, 0x2009, 0x000d, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c,
- 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x726e, 0x7372,
- 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, 0x0e7f, 0x007c,
- 0x0e7e, 0x6838, 0xd0fc, 0x00c0, 0x3771, 0x6804, 0xa00d, 0x0040,
- 0x373f, 0x0d7e, 0x0e7e, 0x2071, 0x6f00, 0x027e, 0xa016, 0x702c,
- 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x00c0, 0x3730,
- 0x702e, 0x7098, 0xa200, 0x709a, 0x027f, 0x0e7f, 0x0d7f, 0x2071,
- 0x6fff, 0x701c, 0xa005, 0x00c0, 0x3782, 0x0068, 0x3780, 0x2071,
- 0x6f51, 0x7004, 0xd09c, 0x0040, 0x3780, 0x6934, 0xa186, 0x0103,
- 0x00c0, 0x3793, 0x6948, 0x6844, 0xa105, 0x00c0, 0x3773, 0x2009,
- 0x8020, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x3780, 0x7122,
- 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080,
- 0x2071, 0x6f00, 0x702c, 0x206a, 0x2d00, 0x702e, 0x7098, 0x8000,
- 0x709a, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, 0x00c0, 0x3780,
- 0x6868, 0xa005, 0x00c0, 0x3780, 0x2009, 0x8020, 0x0078, 0x3759,
- 0x2071, 0x6fff, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, 0x7012,
- 0x7018, 0xa06d, 0x711a, 0x0040, 0x3790, 0x6902, 0x0078, 0x3791,
- 0x711e, 0x0078, 0x3771, 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0040,
- 0x37a1, 0xa186, 0x001e, 0x0040, 0x37a1, 0xa18e, 0x001f, 0x00c0,
- 0x3780, 0x684c, 0xd0cc, 0x0040, 0x3780, 0x6850, 0xa084, 0x00ff,
- 0xa086, 0x0001, 0x00c0, 0x3780, 0x2009, 0x8021, 0x0078, 0x3759,
- 0x007e, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0,
- 0x2001, 0x0000, 0x40a4, 0x007f, 0x684a, 0x6952, 0x007c, 0x2071,
- 0x6fff, 0x7004, 0x0079, 0x37c4, 0x37cc, 0x37db, 0x386b, 0x386c,
- 0x387c, 0x3882, 0x37cd, 0x3859, 0x007c, 0x127e, 0x2091, 0x8000,
- 0x0068, 0x37da, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, 0x4080,
- 0x7007, 0x0001, 0x127f, 0x701c, 0xa06d, 0x0040, 0x3858, 0x0e7e,
- 0x2071, 0x6f51, 0x7004, 0xd09c, 0x0040, 0x383a, 0x6934, 0xa186,
- 0x0103, 0x00c0, 0x3810, 0x6948, 0x6844, 0xa105, 0x00c0, 0x382d,
- 0x2009, 0x8020, 0x127e, 0x2091, 0x8000, 0x0068, 0x380c, 0x2071,
- 0x0000, 0x7018, 0xd084, 0x00c0, 0x380c, 0x7122, 0x683c, 0x7026,
- 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x127f, 0x0e7f,
- 0x1078, 0x38b5, 0x0078, 0x3858, 0x127f, 0x0e7f, 0x0078, 0x3858,
- 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0040, 0x381e, 0xa186, 0x001e,
- 0x0040, 0x381e, 0xa18e, 0x001f, 0x00c0, 0x383a, 0x684c, 0xd0cc,
- 0x0040, 0x383a, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0,
- 0x383a, 0x2009, 0x8021, 0x0078, 0x37f2, 0x6844, 0xa086, 0x0100,
- 0x00c0, 0x383a, 0x6868, 0xa005, 0x00c0, 0x383a, 0x2009, 0x8020,
- 0x0078, 0x37f2, 0x0e7f, 0x1078, 0x38c9, 0x0040, 0x3858, 0x700f,
- 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, 0x00c0, 0x384f,
- 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x384f, 0x710e, 0x7007,
- 0x0003, 0x1078, 0x38e9, 0x7050, 0xa086, 0x0100, 0x0040, 0x386c,
- 0x007c, 0x701c, 0xa06d, 0x0040, 0x386a, 0x1078, 0x38c9, 0x0040,
- 0x386a, 0x7007, 0x0003, 0x1078, 0x38e9, 0x7050, 0xa086, 0x0100,
- 0x0040, 0x386c, 0x007c, 0x007c, 0x7050, 0xa09e, 0x0100, 0x00c0,
- 0x3875, 0x7007, 0x0004, 0x0078, 0x387c, 0xa086, 0x0200, 0x00c0,
- 0x387b, 0x7007, 0x0005, 0x007c, 0x1078, 0x3883, 0x7006, 0x1078,
- 0x38b5, 0x007c, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102, 0x0048,
- 0x3890, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0078, 0x389a,
- 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x389a, 0x7070, 0xa081,
- 0x0000, 0x7072, 0x7132, 0x700c, 0x8001, 0x700e, 0x00c0, 0x38ae,
- 0x127e, 0x2091, 0x8000, 0x0068, 0x38b1, 0x2001, 0x000d, 0x2102,
- 0x2091, 0x4080, 0x2001, 0x0001, 0x127f, 0x007c, 0x2001, 0x0007,
- 0x007c, 0x2001, 0x0006, 0x127f, 0x007c, 0x701c, 0xa06d, 0x0040,
- 0x38c8, 0x127e, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04,
- 0x701e, 0xa005, 0x00c0, 0x38c5, 0x701a, 0x127f, 0x1078, 0x12fb,
- 0x007c, 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0040, 0x38d8,
- 0x2304, 0x230c, 0xa10e, 0x0040, 0x38d8, 0xa006, 0x0078, 0x38e8,
- 0x732c, 0x8319, 0x7130, 0xa102, 0x00c0, 0x38e2, 0x2300, 0xa005,
- 0x0078, 0x38e8, 0x0048, 0x38e7, 0xa302, 0x0078, 0x38e8, 0x8002,
- 0x007c, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000,
- 0x127e, 0x2091, 0x8000, 0x2009, 0x70d9, 0x2104, 0xc08d, 0x200a,
- 0x127f, 0x1078, 0x134c, 0x007c, 0x2071, 0x6fcd, 0x7003, 0x0000,
- 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000,
- 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000,
- 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x007c, 0x0e7e,
- 0x2071, 0x6fcd, 0x6848, 0xa005, 0x00c0, 0x3925, 0x7028, 0xc085,
- 0x702a, 0xa085, 0x0001, 0x0078, 0x394a, 0x6a50, 0x7236, 0x6b54,
- 0x733a, 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848,
- 0x702e, 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006,
- 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319,
- 0x7272, 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f,
- 0x0000, 0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, 0x6fcd, 0x7004,
- 0x1079, 0x39aa, 0x700c, 0x0079, 0x3955, 0x395a, 0x394f, 0x394f,
- 0x394f, 0x394f, 0x007c, 0x700c, 0x0079, 0x395e, 0x3963, 0x39a8,
- 0x39a8, 0x39a9, 0x39a9, 0x7830, 0x7930, 0xa106, 0x0040, 0x396d,
- 0x7830, 0x7930, 0xa106, 0x00c0, 0x3993, 0x7030, 0xa10a, 0x0040,
- 0x3993, 0x00c8, 0x3975, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x00c8,
- 0x3994, 0x1078, 0x12c7, 0x0040, 0x3993, 0x2d00, 0x705a, 0x7063,
- 0x0040, 0x2001, 0x0003, 0x7057, 0x0000, 0x127e, 0x007e, 0x2091,
- 0x8000, 0x2009, 0x70d9, 0x2104, 0xc085, 0x200a, 0x007f, 0x700e,
- 0x127f, 0x1078, 0x134c, 0x007c, 0x1078, 0x12c7, 0x0040, 0x3993,
- 0x2d00, 0x705a, 0x1078, 0x12c7, 0x00c0, 0x39a0, 0x0078, 0x397f,
- 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x0078, 0x3983,
- 0x007c, 0x007c, 0x39bb, 0x39bc, 0x39f3, 0x39f4, 0x39a8, 0x3a2a,
- 0x3a2f, 0x3a66, 0x3a67, 0x3a82, 0x3a83, 0x3a84, 0x3a85, 0x3a86,
- 0x3a87, 0x3af0, 0x3b1a, 0x007c, 0x700c, 0x0079, 0x39bf, 0x39c4,
- 0x39c7, 0x39d7, 0x39f2, 0x39f2, 0x1078, 0x395b, 0x007c, 0x127e,
- 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x3df9, 0x0040, 0x39d4,
- 0x2091, 0x8000, 0x1078, 0x395b, 0x0d7f, 0x0078, 0x39e0, 0x127e,
- 0x8001, 0x700e, 0x1078, 0x3df9, 0x7058, 0x2068, 0x7084, 0x705a,
- 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a,
- 0x0020, 0x00c8, 0x39ef, 0x1079, 0x3a0a, 0x127f, 0x007c, 0x127f,
- 0x1078, 0x3a88, 0x007c, 0x007c, 0x007c, 0x0e7e, 0x2071, 0x6fcd,
- 0x700c, 0x0079, 0x39fb, 0x3a00, 0x3a00, 0x3a00, 0x3a02, 0x3a06,
- 0x0e7f, 0x007c, 0x700f, 0x0001, 0x0078, 0x3a08, 0x700f, 0x0002,
- 0x0e7f, 0x007c, 0x3a88, 0x3a88, 0x3aa4, 0x3a88, 0x3b8f, 0x3a88,
- 0x3a88, 0x3a88, 0x3a88, 0x3a88, 0x3aa4, 0x3bd4, 0x3c1d, 0x3c75,
- 0x3c88, 0x3a88, 0x3a88, 0x3ac0, 0x3aa4, 0x3a88, 0x3a88, 0x3ad6,
- 0x3d0f, 0x3d2c, 0x3a88, 0x3ac0, 0x3a88, 0x3a88, 0x3a88, 0x3a88,
- 0x3ad6, 0x3d2c, 0x7020, 0x2068, 0x1078, 0x12fb, 0x007c, 0x700c,
- 0x0079, 0x3a32, 0x3a37, 0x3a3a, 0x3a4a, 0x3a65, 0x3a65, 0x1078,
- 0x395b, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078,
- 0x3df9, 0x0040, 0x3a47, 0x2091, 0x8000, 0x1078, 0x395b, 0x0d7f,
- 0x0078, 0x3a53, 0x127e, 0x8001, 0x700e, 0x1078, 0x3df9, 0x7058,
- 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834,
- 0xa084, 0x00ff, 0xa08a, 0x001a, 0x00c8, 0x3a62, 0x1079, 0x3a68,
- 0x127f, 0x007c, 0x127f, 0x1078, 0x3a88, 0x007c, 0x007c, 0x007c,
- 0x3a88, 0x3aa4, 0x3b79, 0x3a88, 0x3aa4, 0x3a88, 0x3aa4, 0x3aa4,
- 0x3a88, 0x3aa4, 0x3b79, 0x3aa4, 0x3aa4, 0x3aa4, 0x3aa4, 0x3aa4,
- 0x3a88, 0x3aa4, 0x3b79, 0x3a88, 0x3a88, 0x3aa4, 0x3a88, 0x3a88,
- 0x3a88, 0x3aa4, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c,
- 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x3720, 0x127f, 0x007c, 0x7007, 0x0001,
- 0x6838, 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x3720, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084,
- 0x00ff, 0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3720,
- 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd,
- 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3720, 0x127f, 0x007c,
- 0x6834, 0x8007, 0xa084, 0x00ff, 0x0040, 0x3a96, 0x8001, 0x00c0,
- 0x3acd, 0x7007, 0x0001, 0x0078, 0x3b56, 0x7007, 0x0006, 0x7012,
- 0x2d00, 0x7016, 0x701a, 0x704b, 0x3b56, 0x007c, 0x2d00, 0x7016,
- 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, 0x6ff8,
- 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8, 0x3ab2, 0x6884,
- 0xa08a, 0x0003, 0x00c8, 0x3ab2, 0xa080, 0x3b47, 0x2004, 0x70c6,
- 0x7010, 0xa015, 0x0040, 0x3b3a, 0x1078, 0x12c7, 0x00c0, 0x3afb,
- 0x7007, 0x000f, 0x007c, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x6000,
- 0x6836, 0x6004, 0xad00, 0x7096, 0x6008, 0xa20a, 0x00c8, 0x3b0a,
- 0xa00e, 0x2200, 0x7112, 0x620c, 0x8003, 0x800b, 0xa296, 0x0004,
- 0x0040, 0x3b13, 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022,
- 0x1078, 0x1332, 0x7090, 0xa08e, 0x0100, 0x0040, 0x3b2e, 0xa086,
- 0x0200, 0x0040, 0x3b26, 0x7007, 0x0010, 0x007c, 0x7020, 0x2068,
- 0x1078, 0x12fb, 0x7014, 0x2068, 0x0078, 0x3ab2, 0x7020, 0x2068,
- 0x7018, 0x6802, 0x6807, 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a,
- 0x0078, 0x3af0, 0x7014, 0x2068, 0x7007, 0x0001, 0x6834, 0xa084,
- 0x00ff, 0xa086, 0x001e, 0x0040, 0x3d49, 0x0078, 0x3b56, 0x3b4a,
- 0x3b4e, 0x3b52, 0x0002, 0x0011, 0x0007, 0x0004, 0x000a, 0x000f,
- 0x0005, 0x0006, 0x0012, 0x000f, 0x0005, 0x0006, 0x2009, 0x6f2a,
- 0x210c, 0x81ff, 0x00c0, 0x3b73, 0x6838, 0xa084, 0x00ff, 0x683a,
- 0x6853, 0x0000, 0x1078, 0x3316, 0x00c0, 0x3b67, 0x007c, 0x1078,
- 0x37b0, 0x127e, 0x2091, 0x8000, 0x1078, 0x63d5, 0x1078, 0x3720,
- 0x127f, 0x0078, 0x3b66, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078,
- 0x3b67, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, 0x7010,
- 0x8001, 0x7012, 0x0040, 0x3b88, 0x7007, 0x0006, 0x0078, 0x3b8e,
+ 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x2f59,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0014, 0x00c0, 0x2f57,
+ 0x2079, 0x7280, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2f57, 0x7834,
+ 0xa005, 0x00c0, 0x2f57, 0x7a38, 0xd2fc, 0x0040, 0x2f51, 0x70a4,
+ 0xa005, 0x00c0, 0x2f51, 0x2019, 0x002a, 0x1078, 0x202f, 0x70a7,
+ 0x0001, 0x7083, 0x0014, 0x1078, 0x2f5b, 0x0078, 0x2f59, 0x707b,
+ 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0015, 0x1078, 0x3227, 0x20a3,
+ 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x728e, 0x706c, 0xa006,
+ 0x00c0, 0x2f77, 0x7150, 0xa186, 0xffff, 0x0040, 0x2f77, 0xa180,
+ 0x2091, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x3152, 0x20a9,
+ 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x60c3, 0x0014, 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078, 0xa005,
+ 0x0040, 0x2fcc, 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0014,
+ 0x00c0, 0x2fca, 0x2079, 0x7280, 0x7a30, 0xa296, 0x1105, 0x00c0,
+ 0x2fca, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0, 0x2fb1, 0x7a38,
+ 0xd2fc, 0x0040, 0x2fad, 0x70a4, 0xa005, 0x00c0, 0x2fad, 0x2019,
+ 0x002a, 0x1078, 0x202f, 0x70a7, 0x0001, 0x707f, 0x0001, 0x0078,
+ 0x2fc4, 0xa005, 0x00c0, 0x2fca, 0x7a38, 0xd2fc, 0x0040, 0x2fc2,
+ 0x70a4, 0xa005, 0x00c0, 0x2fc2, 0x2019, 0x002a, 0x1078, 0x202f,
+ 0x70a7, 0x0001, 0x707f, 0x0000, 0x7083, 0x0016, 0x1078, 0x2fce,
+ 0x0078, 0x2fcc, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x2099, 0x7280, 0x20a1, 0x020b, 0x20a9, 0x000e,
+ 0x53a6, 0x3430, 0x2011, 0x728e, 0x707c, 0xa005, 0x0040, 0x2fe4,
+ 0x7083, 0x0017, 0x0078, 0x2fe6, 0x7083, 0x001b, 0x706c, 0xa005,
+ 0x00c0, 0x2ff0, 0x1078, 0x30bc, 0x0040, 0x3000, 0x0078, 0x2ffa,
+ 0x20a9, 0x0008, 0x2099, 0x728e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31b2, 0x0078, 0x3002,
+ 0x1078, 0x2c5d, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3023,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0084, 0x00c0, 0x3021,
+ 0x2079, 0x7280, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x3021, 0x7834,
+ 0xa005, 0x00c0, 0x3021, 0x7083, 0x0018, 0x1078, 0x3025, 0x0078,
+ 0x3023, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0019, 0x1078,
+ 0x3227, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0x728e,
+ 0x2039, 0x720e, 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x2728, 0x2514,
+ 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007,
+ 0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0, 0x720e, 0x2414,
+ 0xa38c, 0x0001, 0x0040, 0x3050, 0xa294, 0xff00, 0x0078, 0x3053,
+ 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9,
+ 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084,
+ 0x1078, 0x31b2, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3085,
+ 0x2011, 0x318e, 0x1078, 0x40d1, 0xa086, 0x0084, 0x00c0, 0x3083,
+ 0x2079, 0x7280, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x3083, 0x7834,
+ 0xa005, 0x00c0, 0x3083, 0x1078, 0x320d, 0x7083, 0x001a, 0x1078,
+ 0x3087, 0x0078, 0x3085, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083,
+ 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7280, 0x20a1,
+ 0x020b, 0x7478, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8,
+ 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078, 0x31b2, 0x007c,
+ 0x7078, 0xa005, 0x0040, 0x30ac, 0x2011, 0x318e, 0x1078, 0x40d1,
+ 0x7083, 0x001c, 0x1078, 0x30ad, 0x007c, 0x707b, 0x0000, 0x608b,
+ 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0001, 0x2009, 0x07d0, 0x2011,
+ 0x318e, 0x1078, 0x40c4, 0x007c, 0x087e, 0x097e, 0x2029, 0x6d52,
+ 0x252c, 0x20a9, 0x0008, 0x2041, 0x720e, 0x28a0, 0x2099, 0x728e,
+ 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x30d2,
+ 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0,
+ 0x30e4, 0xd5d4, 0x0040, 0x30df, 0x8210, 0x0078, 0x30e0, 0x8211,
+ 0x00f0, 0x30d2, 0x0078, 0x3149, 0x82ff, 0x00c0, 0x30f6, 0xd5d4,
+ 0x0040, 0x30f0, 0xa1a6, 0x3fff, 0x0040, 0x30dc, 0x0078, 0x30f4,
+ 0xa1a6, 0x3fff, 0x0040, 0x3149, 0xa18d, 0xc000, 0x20a9, 0x0010,
+ 0x2019, 0x0001, 0xd5d4, 0x0040, 0x30ff, 0x2019, 0x0010, 0x2120,
+ 0xd5d4, 0x0040, 0x3106, 0x8423, 0x0078, 0x3107, 0x8424, 0x00c8,
+ 0x3114, 0xd5d4, 0x0040, 0x310f, 0x8319, 0x0078, 0x3110, 0x8318,
+ 0x00f0, 0x3100, 0x0078, 0x3149, 0x23a8, 0x2021, 0x0001, 0x8426,
+ 0x8425, 0x00f0, 0x3118, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040,
+ 0x312c, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8,
+ 0xa5a8, 0x0010, 0x00f0, 0x3128, 0x754e, 0xa5c8, 0x2091, 0x292c,
+ 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304,
+ 0xa405, 0x201a, 0x706f, 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008,
+ 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, 0x0078,
+ 0x314f, 0xa006, 0x0078, 0x314f, 0xa006, 0x1078, 0x12b7, 0x097f,
+ 0x087f, 0x007c, 0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a,
+ 0x0010, 0x0048, 0x315f, 0x8420, 0x8001, 0x0078, 0x3157, 0x2118,
+ 0x84ff, 0x0040, 0x3168, 0xa39a, 0x0010, 0x8421, 0x00c0, 0x3163,
+ 0x2021, 0x0001, 0x83ff, 0x0040, 0x3171, 0x8423, 0x8319, 0x00c0,
+ 0x316d, 0xa238, 0x2704, 0xa42c, 0x00c0, 0x3186, 0xa405, 0x203a,
+ 0x714e, 0xa1a0, 0x2091, 0x242c, 0xa5ac, 0x00ff, 0x6532, 0x60e7,
+ 0x0000, 0x65ea, 0x706f, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e,
+ 0x2071, 0x6d00, 0x7073, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e,
+ 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x4fe5, 0x7004, 0xa084,
+ 0x4000, 0x0040, 0x319f, 0x7003, 0x1000, 0x7003, 0x0000, 0x127e,
+ 0x2091, 0x8000, 0x2071, 0x6d00, 0x7003, 0x0001, 0x2071, 0x6d20,
+ 0x2073, 0x0000, 0x7843, 0x0090, 0x7843, 0x0010, 0x127f, 0x0f7f,
+ 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x2011, 0x6f1a, 0x2013,
+ 0x0000, 0x707b, 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3, 0x0056,
+ 0x60a7, 0x9575, 0x1078, 0x4fdc, 0x2009, 0x07d0, 0x2011, 0x318e,
+ 0x1078, 0x415f, 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e, 0x2091,
+ 0x8000, 0x2009, 0x00f7, 0x1078, 0x3233, 0x2061, 0x6f23, 0x601b,
+ 0x0000, 0x601f, 0x0000, 0x2061, 0x6d00, 0x6003, 0x0001, 0x2061,
+ 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011,
+ 0x31f0, 0x1078, 0x40c4, 0x127f, 0x0c7f, 0x027f, 0x017f, 0x007c,
+ 0x0e7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x0100, 0x1078,
+ 0x4fe5, 0x2071, 0x0140, 0xa084, 0x4000, 0x0040, 0x3203, 0x7003,
+ 0x1000, 0x7003, 0x0000, 0x2001, 0x0001, 0x1078, 0x1dc9, 0x1078,
+ 0x31cb, 0x127f, 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1,
+ 0x73c0, 0x2099, 0x728e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0,
+ 0x00f0, 0x3213, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099,
+ 0x7200, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1,
+ 0x9080, 0x20e1, 0x4000, 0x2099, 0x7280, 0x20a1, 0x020b, 0x20a9,
+ 0x000c, 0x53a6, 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f,
+ 0x2001, 0x6d2c, 0x2004, 0xa005, 0x00c0, 0x3244, 0x6030, 0xa084,
+ 0x00ff, 0xa105, 0x0078, 0x3246, 0xa185, 0x00f7, 0x604a, 0x007f,
+ 0x0c7f, 0x007c, 0x157e, 0x20a9, 0x00ff, 0x2009, 0x6e00, 0xa006,
+ 0x200a, 0x8108, 0x00f0, 0x3250, 0x157f, 0x007c, 0x0d7e, 0x037e,
+ 0x157e, 0x137e, 0x147e, 0x2069, 0x6d51, 0xa006, 0x6002, 0x6007,
+ 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2091, 0x231c, 0xa39c,
+ 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4,
+ 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042,
+ 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, 0x606a,
+ 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, 0x608a,
+ 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x61a2, 0x604a, 0x6810,
+ 0x603a, 0x680c, 0x6046, 0x147f, 0x137f, 0x157f, 0x037f, 0x0d7f,
+ 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0xa1b4, 0x00ff, 0xa682,
+ 0x0010, 0x00c8, 0x3337, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff,
+ 0x00c8, 0x333d, 0xa188, 0x6e00, 0x2104, 0xa065, 0x0040, 0x3316,
+ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x331c, 0x6078,
+ 0xa00d, 0x0040, 0x32c1, 0xa680, 0x6c84, 0x2004, 0xa10c, 0x00c0,
+ 0x3310, 0x607c, 0xa00d, 0x0040, 0x32dd, 0xa680, 0x6c84, 0x2004,
+ 0xa10c, 0x0040, 0x32dd, 0x694c, 0xd1fc, 0x00c0, 0x32d3, 0x1078,
+ 0x33d0, 0x0078, 0x330b, 0x1078, 0x33a1, 0x694c, 0xd1ec, 0x00c0,
+ 0x330b, 0x1078, 0x34f0, 0x0078, 0x330b, 0x694c, 0xa184, 0xa000,
+ 0x0040, 0x32fb, 0xd1ec, 0x0040, 0x32f4, 0xd1fc, 0x0040, 0x32ec,
+ 0x1078, 0x3507, 0x0078, 0x32f7, 0xa680, 0x6c84, 0x200c, 0x607c,
+ 0xa105, 0x607e, 0x0078, 0x32fb, 0xd1fc, 0x0040, 0x32fb, 0x1078,
+ 0x33a1, 0x0078, 0x330b, 0x6050, 0xa00d, 0x0040, 0x3306, 0x2d00,
+ 0x200a, 0x6803, 0x0000, 0x6052, 0x0078, 0x330b, 0x2d00, 0x6052,
+ 0x604e, 0x6803, 0x0000, 0x1078, 0x4346, 0xa006, 0x127f, 0x007c,
+ 0x2001, 0x0005, 0x2009, 0x0000, 0x0078, 0x3341, 0x2001, 0x0028,
+ 0x2009, 0x0000, 0x0078, 0x3341, 0xa082, 0x0006, 0x0048, 0x32b7,
+ 0x2009, 0x6d0c, 0x210c, 0xd18c, 0x0040, 0x332a, 0x2001, 0x0004,
+ 0x0078, 0x3333, 0xd184, 0x0040, 0x3331, 0x2001, 0x0004, 0x0078,
+ 0x3333, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x3341, 0x2001,
+ 0x0029, 0x2009, 0x0000, 0x0078, 0x3341, 0x2001, 0x0029, 0x2009,
+ 0x0000, 0xa005, 0x127f, 0x007c, 0x6944, 0xa1b4, 0x00ff, 0xa682,
+ 0x0010, 0x00c8, 0x3386, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff,
+ 0x00c8, 0x3376, 0xa188, 0x6e00, 0x2104, 0xa065, 0x0040, 0x3376,
+ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x337c, 0x684c,
+ 0xd0ec, 0x0040, 0x3369, 0x1078, 0x3507, 0x1078, 0x33a1, 0x0078,
+ 0x3371, 0x1078, 0x33a1, 0x684c, 0xd0fc, 0x0040, 0x3371, 0x1078,
+ 0x34f0, 0x1078, 0x351b, 0xa006, 0x0078, 0x338a, 0x2001, 0x0028,
+ 0x2009, 0x0000, 0x0078, 0x338a, 0xa082, 0x0006, 0x0048, 0x335f,
+ 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x338a, 0x2001, 0x0029,
+ 0x2009, 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, 0x6050,
+ 0xa00d, 0x0040, 0x339a, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
+ 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078,
+ 0x3398, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x33ad,
+ 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e,
+ 0x6803, 0x0000, 0x0078, 0x33ab, 0x127e, 0x2091, 0x8000, 0x604c,
+ 0xa06d, 0x0040, 0x33c2, 0x6800, 0xa005, 0x00c0, 0x33c0, 0x6052,
+ 0x604e, 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x33cf,
+ 0x6800, 0xa005, 0x00c0, 0x33cd, 0x6052, 0x604e, 0xad05, 0x007c,
+ 0x6803, 0x0000, 0x6084, 0xa00d, 0x0040, 0x33da, 0x2d00, 0x200a,
+ 0x6086, 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x33d9, 0x127e,
+ 0x0c7e, 0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005,
+ 0x0040, 0x33ed, 0xc285, 0x0078, 0x33ee, 0xc284, 0x6202, 0x027f,
+ 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218,
+ 0x2260, 0x6204, 0xa294, 0xff00, 0xa215, 0x6206, 0x0c7f, 0x127f,
+ 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204,
+ 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x0c7f, 0x127f, 0x007c,
+ 0x027e, 0xa182, 0x00ff, 0x0048, 0x3419, 0xa085, 0x0001, 0x0078,
+ 0x342d, 0xa190, 0x6e00, 0x2204, 0xa065, 0x00c0, 0x342c, 0x017e,
+ 0x0d7e, 0x1078, 0x12f4, 0x2d60, 0x0d7f, 0x017f, 0x0040, 0x3415,
+ 0x2c00, 0x2012, 0x1078, 0x3256, 0xa006, 0x027f, 0x007c, 0x027e,
+ 0xa182, 0x00ff, 0x0048, 0x3438, 0xa085, 0x0001, 0x0078, 0x3445,
+ 0x0d7e, 0xa190, 0x6e00, 0x2204, 0xa06d, 0x0040, 0x3443, 0x2013,
+ 0x0000, 0x1078, 0x1328, 0x0d7f, 0xa006, 0x027f, 0x007c, 0x017e,
+ 0xa182, 0x00ff, 0x0048, 0x3450, 0xa085, 0x0001, 0x0078, 0x3457,
+ 0xa188, 0x6e00, 0x2104, 0xa065, 0x0040, 0x344c, 0xa006, 0x017f,
+ 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, 0x600b, 0x0000, 0x600f,
+ 0x0000, 0x6000, 0xc08c, 0x6002, 0x2069, 0x728e, 0x6808, 0x605e,
+ 0x6810, 0x6062, 0x6138, 0xa10a, 0x0048, 0x346f, 0x603a, 0x6814,
+ 0x6066, 0x2099, 0x7296, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004,
+ 0x53a3, 0x2099, 0x729a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004,
+ 0x53a3, 0x2069, 0x72ae, 0x6904, 0xa18c, 0x00ff, 0x810f, 0x6808,
+ 0xa084, 0x00ff, 0xa105, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072,
+ 0x6818, 0x6076, 0xa182, 0x0211, 0x00c8, 0x349a, 0x2009, 0x0008,
+ 0x0078, 0x34c4, 0xa182, 0x0259, 0x00c8, 0x34a2, 0x2009, 0x0007,
+ 0x0078, 0x34c4, 0xa182, 0x02c1, 0x00c8, 0x34aa, 0x2009, 0x0006,
+ 0x0078, 0x34c4, 0xa182, 0x0349, 0x00c8, 0x34b2, 0x2009, 0x0005,
+ 0x0078, 0x34c4, 0xa182, 0x0421, 0x00c8, 0x34ba, 0x2009, 0x0004,
+ 0x0078, 0x34c4, 0xa182, 0x0581, 0x00c8, 0x34c2, 0x2009, 0x0003,
+ 0x0078, 0x34c4, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f, 0x157f,
+ 0x0d7f, 0x007c, 0x0e7e, 0x2071, 0x728d, 0x2e04, 0x6896, 0x2071,
+ 0x728e, 0x7004, 0x689a, 0x701c, 0x689e, 0x0e7f, 0x007c, 0x2001,
+ 0x6c84, 0xa600, 0x2004, 0x127e, 0x2091, 0x8000, 0x6178, 0xa10d,
+ 0x617a, 0x127f, 0x007c, 0x2001, 0x6c84, 0xa600, 0x2004, 0x8002,
+ 0x127e, 0x2091, 0x8000, 0x6178, 0xa10c, 0x617a, 0x127f, 0x007c,
+ 0x2001, 0x6c84, 0xa600, 0x2004, 0x8002, 0x127e, 0x2091, 0x8000,
+ 0x617c, 0xa10c, 0x617e, 0x127f, 0x0078, 0x3500, 0x1078, 0x338c,
+ 0x1078, 0x3561, 0x00c0, 0x34fe, 0x1078, 0x351b, 0x007c, 0x2001,
+ 0x6c84, 0xa600, 0x2004, 0x127e, 0x2091, 0x8000, 0x617c, 0xa10d,
+ 0x617e, 0x127f, 0x0078, 0x3516, 0x1078, 0x33d0, 0x1078, 0x3525,
+ 0x00c0, 0x3514, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x4346,
+ 0x127f, 0x007c, 0xa01e, 0x0078, 0x3527, 0x2019, 0x0001, 0xa00e,
+ 0x127e, 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc, 0x00c0,
+ 0x3547, 0x8dff, 0x0040, 0x355c, 0x83ff, 0x0040, 0x353f, 0x6844,
+ 0xa084, 0x00ff, 0xa606, 0x0040, 0x354c, 0x0078, 0x3547, 0x683c,
+ 0xa406, 0x00c0, 0x3547, 0x6840, 0xa506, 0x0040, 0x354c, 0x2d08,
+ 0x6800, 0x2068, 0x0078, 0x3531, 0x6a00, 0x604c, 0xad06, 0x00c0,
+ 0x3554, 0x624e, 0x0078, 0x3557, 0xa180, 0x0000, 0x2202, 0x82ff,
+ 0x00c0, 0x355c, 0x6152, 0x8dff, 0x127f, 0x007c, 0xa01e, 0x0078,
+ 0x3563, 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff, 0x0040,
+ 0x3591, 0x83ff, 0x0040, 0x3574, 0x6844, 0xa084, 0x00ff, 0xa606,
+ 0x0040, 0x3581, 0x0078, 0x357c, 0x683c, 0xa406, 0x00c0, 0x357c,
+ 0x6840, 0xa506, 0x0040, 0x3581, 0x2d08, 0x6800, 0x2068, 0x0078,
+ 0x3566, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x3589, 0x6282, 0x0078,
+ 0x358c, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x3591, 0x6186,
+ 0x8dff, 0x007c, 0x2001, 0x6c84, 0xa600, 0x2004, 0x6178, 0xa10c,
+ 0x0040, 0x359c, 0x2011, 0x0001, 0x617c, 0xa10c, 0x0040, 0x35a2,
+ 0xa295, 0x0002, 0x007c, 0x1078, 0x35ec, 0x0040, 0x35ab, 0x1078,
+ 0x61f8, 0x0078, 0x35ad, 0xa085, 0x0001, 0x007c, 0x1078, 0x35ec,
+ 0x0040, 0x35b6, 0x1078, 0x6187, 0x0078, 0x35b8, 0xa085, 0x0001,
+ 0x007c, 0x1078, 0x35ec, 0x0040, 0x35c1, 0x1078, 0x61cd, 0x0078,
+ 0x35c3, 0xa085, 0x0001, 0x007c, 0x1078, 0x35ec, 0x0040, 0x35cc,
+ 0x1078, 0x61a3, 0x0078, 0x35ce, 0xa085, 0x0001, 0x007c, 0x127e,
+ 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d, 0x0040, 0x35e4,
+ 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078,
+ 0x36a1, 0x007f, 0x0078, 0x35d5, 0x6083, 0x0000, 0x6087, 0x0000,
+ 0x0d7f, 0x007f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, 0x0f7e,
+ 0x2079, 0x6d51, 0x7804, 0xd0a4, 0x0040, 0x3618, 0x157e, 0x0c7e,
+ 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x3447, 0x00c0,
+ 0x360c, 0x6004, 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, 0x00c0,
+ 0x360c, 0x6000, 0xc0ed, 0x6002, 0x017f, 0x8108, 0x00f0, 0x35fc,
+ 0x0c7f, 0x157f, 0x2009, 0x07d0, 0x2011, 0x361a, 0x1078, 0x415f,
+ 0x0f7f, 0x007c, 0x2011, 0x361a, 0x1078, 0x40d1, 0x157e, 0x0c7e,
+ 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x3447, 0x00c0,
+ 0x3646, 0x6000, 0xd0ec, 0x0040, 0x3646, 0x047e, 0x62a0, 0xa294,
+ 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0x6bf7, 0x6000,
+ 0xc0e5, 0xc0ec, 0x6002, 0x2019, 0x0029, 0x1078, 0x445c, 0x1078,
+ 0x43a9, 0x2009, 0x0000, 0x1078, 0x6a57, 0x047f, 0x017f, 0x8108,
+ 0x00f0, 0x3624, 0x0c7f, 0x157f, 0x007c, 0x0c7e, 0x6018, 0x2060,
+ 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x2071, 0x6ddf, 0x7003,
+ 0x0001, 0x7007, 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b,
+ 0x0000, 0x701f, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b,
+ 0x0020, 0x705f, 0x0040, 0x707f, 0x0000, 0x007c, 0x0e7e, 0x2071,
+ 0x6ddf, 0x684c, 0xa005, 0x00c0, 0x367c, 0x7028, 0xc085, 0x702a,
+ 0xa085, 0x0001, 0x0078, 0x369f, 0x6a60, 0x7236, 0x6b64, 0x733a,
+ 0x6868, 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e,
+ 0x6844, 0x7032, 0x2009, 0x000d, 0x200a, 0x8007, 0x8006, 0x8006,
+ 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x726e,
+ 0x7372, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, 0x0e7f,
+ 0x007c, 0x0e7e, 0x6838, 0xd0fc, 0x00c0, 0x36f2, 0x6804, 0xa00d,
+ 0x0040, 0x36c0, 0x0d7e, 0x0e7e, 0x2071, 0x6d00, 0x027e, 0xa016,
+ 0x702c, 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x00c0,
+ 0x36b1, 0x702e, 0x70a0, 0xa200, 0x70a2, 0x027f, 0x0e7f, 0x0d7f,
+ 0x2071, 0x6ddf, 0x701c, 0xa005, 0x00c0, 0x3703, 0x0068, 0x3701,
+ 0x2071, 0x6d51, 0x7004, 0xd09c, 0x0040, 0x3701, 0x6934, 0xa186,
+ 0x0103, 0x00c0, 0x3714, 0x6948, 0x6844, 0xa105, 0x00c0, 0x36f4,
+ 0x2009, 0x8020, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x3701,
+ 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091,
+ 0x4080, 0x2071, 0x6d00, 0x702c, 0x206a, 0x2d00, 0x702e, 0x70a0,
+ 0x8000, 0x70a2, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, 0x00c0,
+ 0x3701, 0x6868, 0xa005, 0x00c0, 0x3701, 0x2009, 0x8020, 0x0078,
+ 0x36da, 0x2071, 0x6ddf, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000,
+ 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040, 0x3711, 0x6902, 0x0078,
+ 0x3712, 0x711e, 0x0078, 0x36f2, 0xa18c, 0x00ff, 0xa18e, 0x0017,
+ 0x0040, 0x371e, 0xa18e, 0x001f, 0x00c0, 0x3701, 0x684c, 0xd0cc,
+ 0x0040, 0x3701, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0,
+ 0x3701, 0x2009, 0x8021, 0x0078, 0x36da, 0x007e, 0x6837, 0x0103,
+ 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4,
+ 0x007f, 0x684a, 0x6952, 0x007c, 0x2071, 0x6ddf, 0x7004, 0x0079,
+ 0x3741, 0x3749, 0x3758, 0x37e4, 0x37e5, 0x37f5, 0x37fb, 0x374a,
+ 0x37d2, 0x007c, 0x127e, 0x2091, 0x8000, 0x0068, 0x3757, 0x2009,
+ 0x000d, 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x127f,
+ 0x701c, 0xa06d, 0x0040, 0x37d1, 0x0e7e, 0x2071, 0x6d51, 0x7004,
+ 0xd09c, 0x0040, 0x37b3, 0x6934, 0xa186, 0x0103, 0x00c0, 0x378d,
+ 0x6948, 0x6844, 0xa105, 0x00c0, 0x37a6, 0x2009, 0x8020, 0x127e,
+ 0x2091, 0x8000, 0x0068, 0x3789, 0x2071, 0x0000, 0x7018, 0xd084,
+ 0x00c0, 0x3789, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b,
+ 0x0001, 0x2091, 0x4080, 0x127f, 0x0e7f, 0x1078, 0x382e, 0x0078,
+ 0x37d1, 0x127f, 0x0e7f, 0x0078, 0x37d1, 0xa18c, 0x00ff, 0xa18e,
+ 0x0017, 0x0040, 0x3797, 0xa18e, 0x001f, 0x00c0, 0x37b3, 0x684c,
+ 0xd0cc, 0x0040, 0x37b3, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001,
+ 0x00c0, 0x37b3, 0x2009, 0x8021, 0x0078, 0x376f, 0x6844, 0xa086,
+ 0x0100, 0x00c0, 0x37b3, 0x6868, 0xa005, 0x00c0, 0x37b3, 0x2009,
+ 0x8020, 0x0078, 0x376f, 0x0e7f, 0x1078, 0x3842, 0x0040, 0x37d1,
+ 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, 0x00c0,
+ 0x37c8, 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x37c8, 0x710e,
+ 0x7007, 0x0003, 0x1078, 0x3862, 0x7050, 0xa086, 0x0100, 0x0040,
+ 0x37e5, 0x007c, 0x701c, 0xa06d, 0x0040, 0x37e3, 0x1078, 0x3842,
+ 0x0040, 0x37e3, 0x7007, 0x0003, 0x1078, 0x3862, 0x7050, 0xa086,
+ 0x0100, 0x0040, 0x37e5, 0x007c, 0x007c, 0x7050, 0xa09e, 0x0100,
+ 0x00c0, 0x37ee, 0x7007, 0x0004, 0x0078, 0x37f5, 0xa086, 0x0200,
+ 0x00c0, 0x37f4, 0x7007, 0x0005, 0x007c, 0x1078, 0x37fc, 0x7006,
+ 0x1078, 0x382e, 0x007c, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102,
+ 0x0048, 0x3809, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0078,
+ 0x3813, 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x3813, 0x7070,
+ 0xa081, 0x0000, 0x7072, 0x7132, 0x700c, 0x8001, 0x700e, 0x00c0,
+ 0x3827, 0x127e, 0x2091, 0x8000, 0x0068, 0x382a, 0x2001, 0x000d,
+ 0x2102, 0x2091, 0x4080, 0x2001, 0x0001, 0x127f, 0x007c, 0x2001,
+ 0x0007, 0x007c, 0x2001, 0x0006, 0x127f, 0x007c, 0x701c, 0xa06d,
+ 0x0040, 0x3841, 0x127e, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012,
+ 0x2d04, 0x701e, 0xa005, 0x00c0, 0x383e, 0x701a, 0x127f, 0x1078,
+ 0x1328, 0x007c, 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0040,
+ 0x3851, 0x2304, 0x230c, 0xa10e, 0x0040, 0x3851, 0xa006, 0x0078,
+ 0x3861, 0x732c, 0x8319, 0x7130, 0xa102, 0x00c0, 0x385b, 0x2300,
+ 0xa005, 0x0078, 0x3861, 0x0048, 0x3860, 0xa302, 0x0078, 0x3861,
+ 0x8002, 0x007c, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053,
+ 0x0000, 0x127e, 0x2091, 0x8000, 0x2009, 0x6f31, 0x2104, 0xc08d,
+ 0x200a, 0x127f, 0x1078, 0x1379, 0x007c, 0x2071, 0x6dad, 0x7003,
+ 0x0000, 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f,
+ 0x0000, 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083,
+ 0x0000, 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x007c,
+ 0x0e7e, 0x2071, 0x6dad, 0x6848, 0xa005, 0x00c0, 0x389e, 0x7028,
+ 0xc085, 0x702a, 0xa085, 0x0001, 0x0078, 0x38c3, 0x6a50, 0x7236,
+ 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e,
+ 0x6848, 0x702e, 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007,
+ 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100,
+ 0xa319, 0x7272, 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001,
+ 0x700f, 0x0000, 0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, 0x6dad,
+ 0x7004, 0x1079, 0x3923, 0x700c, 0x0079, 0x38ce, 0x38d3, 0x38c8,
+ 0x38c8, 0x38c8, 0x38c8, 0x007c, 0x700c, 0x0079, 0x38d7, 0x38dc,
+ 0x3921, 0x3921, 0x3922, 0x3922, 0x7830, 0x7930, 0xa106, 0x0040,
+ 0x38e6, 0x7830, 0x7930, 0xa106, 0x00c0, 0x390c, 0x7030, 0xa10a,
+ 0x0040, 0x390c, 0x00c8, 0x38ee, 0x712c, 0xa10a, 0xa18a, 0x0002,
+ 0x00c8, 0x390d, 0x1078, 0x12f4, 0x0040, 0x390c, 0x2d00, 0x705a,
+ 0x7063, 0x0040, 0x2001, 0x0003, 0x7057, 0x0000, 0x127e, 0x007e,
+ 0x2091, 0x8000, 0x2009, 0x6f31, 0x2104, 0xc085, 0x200a, 0x007f,
+ 0x700e, 0x127f, 0x1078, 0x1379, 0x007c, 0x1078, 0x12f4, 0x0040,
+ 0x390c, 0x2d00, 0x705a, 0x1078, 0x12f4, 0x00c0, 0x3919, 0x0078,
+ 0x38f8, 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x0078,
+ 0x38fc, 0x007c, 0x007c, 0x3934, 0x3935, 0x396c, 0x396d, 0x3921,
+ 0x39a3, 0x39a8, 0x39df, 0x39e0, 0x39fb, 0x39fc, 0x39fd, 0x39fe,
+ 0x39ff, 0x3a00, 0x3a69, 0x3a93, 0x007c, 0x700c, 0x0079, 0x3938,
+ 0x393d, 0x3940, 0x3950, 0x396b, 0x396b, 0x1078, 0x38d4, 0x007c,
+ 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x3d52, 0x0040,
+ 0x394d, 0x2091, 0x8000, 0x1078, 0x38d4, 0x0d7f, 0x0078, 0x3959,
+ 0x127e, 0x8001, 0x700e, 0x1078, 0x3d52, 0x7058, 0x2068, 0x7084,
+ 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff,
+ 0xa08a, 0x0020, 0x00c8, 0x3968, 0x1079, 0x3983, 0x127f, 0x007c,
+ 0x127f, 0x1078, 0x3a01, 0x007c, 0x007c, 0x007c, 0x0e7e, 0x2071,
+ 0x6dad, 0x700c, 0x0079, 0x3974, 0x3979, 0x3979, 0x3979, 0x397b,
+ 0x397f, 0x0e7f, 0x007c, 0x700f, 0x0001, 0x0078, 0x3981, 0x700f,
+ 0x0002, 0x0e7f, 0x007c, 0x3a01, 0x3a01, 0x3a1d, 0x3a01, 0x3aff,
+ 0x3a01, 0x3a01, 0x3a01, 0x3a01, 0x3a01, 0x3a1d, 0x3b44, 0x3b8d,
+ 0x3be5, 0x3bf8, 0x3a01, 0x3a01, 0x3a39, 0x3a1d, 0x3a01, 0x3a01,
+ 0x3a4f, 0x3c74, 0x3c91, 0x3a01, 0x3a39, 0x3a01, 0x3a01, 0x3a01,
+ 0x3a01, 0x3a01, 0x3c91, 0x7020, 0x2068, 0x1078, 0x1328, 0x007c,
+ 0x700c, 0x0079, 0x39ab, 0x39b0, 0x39b3, 0x39c3, 0x39de, 0x39de,
+ 0x1078, 0x38d4, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e,
+ 0x1078, 0x3d52, 0x0040, 0x39c0, 0x2091, 0x8000, 0x1078, 0x38d4,
+ 0x0d7f, 0x0078, 0x39cc, 0x127e, 0x8001, 0x700e, 0x1078, 0x3d52,
+ 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000,
+ 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a, 0x00c8, 0x39db, 0x1079,
+ 0x39e1, 0x127f, 0x007c, 0x127f, 0x1078, 0x3a01, 0x007c, 0x007c,
+ 0x007c, 0x3a01, 0x3a1d, 0x3ae9, 0x3a01, 0x3a1d, 0x3a01, 0x3a1d,
+ 0x3a1d, 0x3a01, 0x3a1d, 0x3ae9, 0x3a1d, 0x3a1d, 0x3a1d, 0x3a1d,
+ 0x3a1d, 0x3a01, 0x3a1d, 0x3ae9, 0x3a01, 0x3a01, 0x3a1d, 0x3a01,
+ 0x3a01, 0x3a01, 0x3a1d, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c,
+ 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a,
+ 0x127e, 0x2091, 0x8000, 0x1078, 0x36a1, 0x127f, 0x007c, 0x7007,
+ 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, 0x2091,
+ 0x8000, 0x1078, 0x36a1, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838,
+ 0xa084, 0x00ff, 0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x36a1, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff,
+ 0xc0dd, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x36a1, 0x127f,
+ 0x007c, 0x6834, 0x8007, 0xa084, 0x00ff, 0x0040, 0x3a0f, 0x8001,
+ 0x00c0, 0x3a46, 0x7007, 0x0001, 0x0078, 0x3ac8, 0x7007, 0x0006,
+ 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x3ac8, 0x007c, 0x2d00,
+ 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1,
+ 0x6dd8, 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8, 0x3a2b,
+ 0x6884, 0xa08a, 0x0003, 0x00c8, 0x3a2b, 0xa080, 0x3ab9, 0x2004,
+ 0x70c6, 0x7010, 0xa015, 0x0040, 0x3ab3, 0x1078, 0x12f4, 0x00c0,
+ 0x3a74, 0x7007, 0x000f, 0x007c, 0x2d00, 0x7022, 0x70c4, 0x2060,
+ 0x6000, 0x6836, 0x6004, 0xad00, 0x7096, 0x6008, 0xa20a, 0x00c8,
+ 0x3a83, 0xa00e, 0x2200, 0x7112, 0x620c, 0x8003, 0x800b, 0xa296,
+ 0x0004, 0x0040, 0x3a8c, 0xa108, 0x719a, 0x810b, 0x719e, 0xae90,
+ 0x0022, 0x1078, 0x135f, 0x7090, 0xa08e, 0x0100, 0x0040, 0x3aa7,
+ 0xa086, 0x0200, 0x0040, 0x3a9f, 0x7007, 0x0010, 0x007c, 0x7020,
+ 0x2068, 0x1078, 0x1328, 0x7014, 0x2068, 0x0078, 0x3a2b, 0x7020,
+ 0x2068, 0x7018, 0x6802, 0x6807, 0x0000, 0x2d08, 0x2068, 0x6906,
+ 0x711a, 0x0078, 0x3a69, 0x7014, 0x2068, 0x7007, 0x0001, 0x0078,
+ 0x3ac8, 0x3abc, 0x3ac0, 0x3ac4, 0x0002, 0x0011, 0x0007, 0x0004,
+ 0x000a, 0x000f, 0x0005, 0x0006, 0x0012, 0x000f, 0x0005, 0x0006,
+ 0x2009, 0x6d2c, 0x210c, 0x81ff, 0x00c0, 0x3ae3, 0x6838, 0xa084,
+ 0x00ff, 0x683a, 0x6853, 0x0000, 0x1078, 0x3299, 0x00c0, 0x3ad9,
+ 0x007c, 0x1078, 0x372d, 0x127e, 0x2091, 0x8000, 0x1078, 0x36a1,
+ 0x127f, 0x0078, 0x3ad8, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078,
+ 0x3ad9, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, 0x7010,
+ 0x8001, 0x7012, 0x0040, 0x3af8, 0x7007, 0x0006, 0x0078, 0x3afe,
0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a, 0x007c, 0x7007,
0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff,
- 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x3bba, 0x2009, 0x0000,
- 0x20a9, 0x007e, 0xa096, 0x0002, 0x0040, 0x3bba, 0xa005, 0x00c0,
- 0x3bd1, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x34cb, 0x00c0,
- 0x3bd1, 0x067e, 0x6e44, 0xa6b4, 0x000f, 0x1078, 0x3560, 0x067f,
- 0x0078, 0x3bd1, 0x047e, 0x2011, 0x6f0c, 0x2224, 0xc484, 0xc48c,
- 0x2412, 0x047f, 0x0c7e, 0x1078, 0x34cb, 0x00c0, 0x3bcd, 0x2091,
- 0x8000, 0x607b, 0x0000, 0x2091, 0x8001, 0x8108, 0x00f0, 0x3bc3,
- 0x0c7f, 0x1078, 0x12fb, 0x007c, 0x127e, 0x2091, 0x8000, 0x7007,
- 0x0001, 0x2001, 0x6f52, 0x2004, 0xd0a4, 0x0040, 0x3c14, 0x6944,
- 0x1078, 0x3e15, 0x6100, 0xd184, 0x0040, 0x3bf9, 0x6858, 0xa084,
- 0x00ff, 0x00c0, 0x3c17, 0x6000, 0xd084, 0x0040, 0x3c14, 0x6004,
- 0xa005, 0x00c0, 0x3c1a, 0x6003, 0x0000, 0x600b, 0x0000, 0x0078,
- 0x3c11, 0x2011, 0x0001, 0x6860, 0xa005, 0x00c0, 0x3c01, 0x2001,
- 0x001e, 0x8000, 0x6016, 0x6858, 0xa084, 0x00ff, 0x0040, 0x3c14,
- 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, 0x0040, 0x3c14, 0x600a,
- 0x6202, 0x127f, 0x0078, 0x3de8, 0x127f, 0x0078, 0x3de0, 0x127f,
- 0x0078, 0x3dd8, 0x127f, 0x0078, 0x3ddc, 0x127e, 0x2091, 0x8000,
- 0x7007, 0x0001, 0x2001, 0x6f52, 0x2004, 0xd0a4, 0x0040, 0x3c72,
- 0x6944, 0x1078, 0x3e15, 0x6000, 0xa084, 0x0001, 0x0040, 0x3c72,
- 0x6204, 0x6308, 0x6c48, 0xa484, 0x0003, 0x0040, 0x3c4a, 0x6958,
- 0xa18c, 0x00ff, 0x8001, 0x00c0, 0x3c43, 0x2100, 0xa210, 0x0048,
- 0x3c6f, 0x0078, 0x3c4a, 0x8001, 0x00c0, 0x3c6f, 0x2100, 0xa212,
- 0x0048, 0x3c6f, 0xa484, 0x000c, 0x0040, 0x3c64, 0x6958, 0x810f,
- 0xa18c, 0x00ff, 0xa082, 0x0004, 0x00c0, 0x3c5c, 0x2100, 0xa318,
- 0x0048, 0x3c6f, 0x0078, 0x3c64, 0xa082, 0x0004, 0x00c0, 0x3c6f,
- 0x2100, 0xa31a, 0x0048, 0x3c6f, 0x6860, 0xa005, 0x0040, 0x3c6a,
- 0x8000, 0x6016, 0x6206, 0x630a, 0x127f, 0x0078, 0x3de8, 0x127f,
- 0x0078, 0x3de4, 0x127f, 0x0078, 0x3de0, 0x127e, 0x2091, 0x8000,
- 0x7007, 0x0001, 0x6944, 0x1078, 0x3e15, 0x6308, 0x8318, 0x0048,
- 0x3c85, 0x630a, 0x127f, 0x0078, 0x3df6, 0x127f, 0x0078, 0x3de4,
+ 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x3b2a, 0x2009, 0x0000,
+ 0x20a9, 0x007e, 0xa096, 0x0002, 0x0040, 0x3b2a, 0xa005, 0x00c0,
+ 0x3b41, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x3447, 0x00c0,
+ 0x3b41, 0x067e, 0x6e44, 0xa6b4, 0x000f, 0x1078, 0x34e3, 0x067f,
+ 0x0078, 0x3b41, 0x047e, 0x2011, 0x6d0c, 0x2224, 0xc484, 0xc48c,
+ 0x2412, 0x047f, 0x0c7e, 0x1078, 0x3447, 0x00c0, 0x3b3d, 0x2091,
+ 0x8000, 0x607b, 0x0000, 0x2091, 0x8001, 0x8108, 0x00f0, 0x3b33,
+ 0x0c7f, 0x1078, 0x1328, 0x007c, 0x127e, 0x2091, 0x8000, 0x7007,
+ 0x0001, 0x2001, 0x6d52, 0x2004, 0xd0a4, 0x0040, 0x3b84, 0x6944,
+ 0x1078, 0x3d6e, 0x6100, 0xd184, 0x0040, 0x3b69, 0x6858, 0xa084,
+ 0x00ff, 0x00c0, 0x3b87, 0x6000, 0xd084, 0x0040, 0x3b84, 0x6004,
+ 0xa005, 0x00c0, 0x3b8a, 0x6003, 0x0000, 0x600b, 0x0000, 0x0078,
+ 0x3b81, 0x2011, 0x0001, 0x6860, 0xa005, 0x00c0, 0x3b71, 0x2001,
+ 0x001e, 0x8000, 0x6016, 0x6858, 0xa084, 0x00ff, 0x0040, 0x3b84,
+ 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, 0x0040, 0x3b84, 0x600a,
+ 0x6202, 0x127f, 0x0078, 0x3d41, 0x127f, 0x0078, 0x3d39, 0x127f,
+ 0x0078, 0x3d31, 0x127f, 0x0078, 0x3d35, 0x127e, 0x2091, 0x8000,
+ 0x7007, 0x0001, 0x2001, 0x6d52, 0x2004, 0xd0a4, 0x0040, 0x3be2,
+ 0x6944, 0x1078, 0x3d6e, 0x6000, 0xa084, 0x0001, 0x0040, 0x3be2,
+ 0x6204, 0x6308, 0x6c48, 0xa484, 0x0003, 0x0040, 0x3bba, 0x6958,
+ 0xa18c, 0x00ff, 0x8001, 0x00c0, 0x3bb3, 0x2100, 0xa210, 0x0048,
+ 0x3bdf, 0x0078, 0x3bba, 0x8001, 0x00c0, 0x3bdf, 0x2100, 0xa212,
+ 0x0048, 0x3bdf, 0xa484, 0x000c, 0x0040, 0x3bd4, 0x6958, 0x810f,
+ 0xa18c, 0x00ff, 0xa082, 0x0004, 0x00c0, 0x3bcc, 0x2100, 0xa318,
+ 0x0048, 0x3bdf, 0x0078, 0x3bd4, 0xa082, 0x0004, 0x00c0, 0x3bdf,
+ 0x2100, 0xa31a, 0x0048, 0x3bdf, 0x6860, 0xa005, 0x0040, 0x3bda,
+ 0x8000, 0x6016, 0x6206, 0x630a, 0x127f, 0x0078, 0x3d41, 0x127f,
+ 0x0078, 0x3d3d, 0x127f, 0x0078, 0x3d39, 0x127e, 0x2091, 0x8000,
+ 0x7007, 0x0001, 0x6944, 0x1078, 0x3d6e, 0x6308, 0x8318, 0x0048,
+ 0x3bf5, 0x630a, 0x127f, 0x0078, 0x3d4f, 0x127f, 0x0078, 0x3d3d,
0x127e, 0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac,
- 0x0040, 0x3c9c, 0x027e, 0x2009, 0x0000, 0x2011, 0xfcff, 0x1078,
- 0x42cd, 0x027f, 0x0078, 0x3cd2, 0x6858, 0xa005, 0x0040, 0x3ce6,
- 0x685c, 0xa065, 0x0040, 0x3ce2, 0x2001, 0x6f2a, 0x2004, 0xa005,
- 0x0040, 0x3cae, 0x1078, 0x6337, 0x0078, 0x3cb4, 0x6013, 0x0400,
- 0x2009, 0x0041, 0x1078, 0x55fc, 0x6958, 0xa18c, 0xe600, 0xa186,
- 0x2000, 0x0040, 0x3cca, 0xa186, 0x0400, 0x0040, 0x3cca, 0x6944,
- 0x0c7e, 0x1078, 0x4225, 0x6000, 0xa084, 0xfdff, 0x6002, 0x0c7f,
- 0x0078, 0x3cd2, 0x027e, 0x2009, 0x0000, 0x2011, 0xfdff, 0x1078,
- 0x42cd, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x3cde, 0x6944, 0x1078,
- 0x4225, 0x6008, 0x8000, 0x0048, 0x3cde, 0x600a, 0x0c7f, 0x127f,
- 0x0078, 0x3de8, 0x0c7f, 0x127f, 0x0078, 0x3de0, 0x6954, 0xa186,
- 0x002a, 0x00c0, 0x3cf2, 0x2001, 0x6f0c, 0x200c, 0xc194, 0x2102,
- 0x0078, 0x3cd2, 0xa186, 0x0020, 0x0040, 0x3d07, 0xa186, 0x0029,
- 0x00c0, 0x3ce2, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x34cb,
- 0x00c0, 0x3cd2, 0x6000, 0xc0e4, 0x6002, 0x0078, 0x3cd2, 0x685c,
- 0xa065, 0x0040, 0x3ce2, 0x6017, 0x0014, 0x0078, 0x3cd2, 0x6944,
- 0x1078, 0x3e15, 0x6000, 0xa084, 0x0001, 0x0040, 0x3d28, 0x2091,
- 0x8000, 0x6204, 0x8210, 0x0048, 0x3d22, 0x6206, 0x2091, 0x8001,
- 0x0078, 0x3df6, 0x2091, 0x8001, 0x6853, 0x0016, 0x0078, 0x3def,
- 0x6853, 0x0007, 0x0078, 0x3def, 0x6834, 0x8007, 0xa084, 0x00ff,
- 0x00c0, 0x3d36, 0x1078, 0x3a96, 0x0078, 0x3d48, 0x2030, 0x8001,
- 0x00c0, 0x3d40, 0x7007, 0x0001, 0x1078, 0x3d49, 0x0078, 0x3d48,
- 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x3d49,
- 0x007c, 0x0e7e, 0x2009, 0x6f2a, 0x210c, 0x81ff, 0x00c0, 0x3dca,
- 0x2009, 0x6f0c, 0x210c, 0xd194, 0x00c0, 0x3dd4, 0x6848, 0x2070,
- 0xae82, 0x7500, 0x0048, 0x3db9, 0x2001, 0x6f15, 0x2004, 0xae02,
- 0x00c8, 0x3db9, 0x6944, 0x1078, 0x3e15, 0x6100, 0xa184, 0x0001,
- 0x0040, 0x3d9f, 0xa184, 0x0100, 0x00c0, 0x3dbd, 0xa184, 0x0200,
- 0x00c0, 0x3dc1, 0x601c, 0xa005, 0x00c0, 0x3dc5, 0x711c, 0xa186,
- 0x0006, 0x00c0, 0x3da4, 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08,
- 0x127e, 0x2091, 0x8000, 0x7010, 0xa005, 0x00c0, 0x3d96, 0x7112,
- 0x7018, 0xa065, 0x0040, 0x3dc9, 0x6000, 0xd0e4, 0x00c0, 0x3dce,
- 0x2e60, 0x1078, 0x422e, 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800,
- 0xa005, 0x00c0, 0x3d96, 0x6902, 0x127f, 0x0e7f, 0x007c, 0x0e7f,
- 0x6853, 0x0006, 0x0078, 0x3def, 0x6944, 0xa18c, 0xff00, 0x810f,
- 0x1078, 0x34cb, 0x00c0, 0x3dcf, 0x6000, 0xd0e4, 0x00c0, 0x3dcf,
- 0x711c, 0xa186, 0x0007, 0x00c0, 0x3db9, 0x6853, 0x0002, 0x0078,
- 0x3dd1, 0x6853, 0x0008, 0x0078, 0x3dd1, 0x6853, 0x000e, 0x0078,
- 0x3dd1, 0x6853, 0x0017, 0x0078, 0x3dd1, 0x6853, 0x0035, 0x0078,
- 0x3dd1, 0x127f, 0x6853, 0x0028, 0x0078, 0x3dd1, 0x127f, 0x6853,
- 0x0029, 0x0e7f, 0x0078, 0x3def, 0x6853, 0x002a, 0x0078, 0x3dd1,
- 0x2009, 0x003e, 0x0078, 0x3dea, 0x2009, 0x0004, 0x0078, 0x3dea,
- 0x2009, 0x0006, 0x0078, 0x3dea, 0x2009, 0x0016, 0x0078, 0x3dea,
- 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, 0xa105, 0x6856, 0x2091,
- 0x8000, 0x1078, 0x3720, 0x2091, 0x8001, 0x007c, 0x1078, 0x12fb,
- 0x007c, 0x702c, 0x7130, 0x8108, 0xa102, 0x0048, 0x3e06, 0xa00e,
- 0x7034, 0x7072, 0x7038, 0x7076, 0x0078, 0x3e12, 0x7070, 0xa080,
- 0x0040, 0x7072, 0x00c8, 0x3e12, 0x7074, 0xa081, 0x0000, 0x7076,
- 0xa085, 0x0001, 0x7932, 0x7132, 0x007c, 0x0d7e, 0x1078, 0x4225,
- 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004, 0x2204, 0xa085, 0x8002,
- 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000,
- 0x3d00, 0xa084, 0x7000, 0x0040, 0x3e31, 0xa086, 0x1000, 0x00c0,
- 0x3e4d, 0x20e1, 0x0004, 0x3d60, 0xd1bc, 0x00c0, 0x3e38, 0x3e60,
- 0xac84, 0x0007, 0x00c0, 0x3e4d, 0xac82, 0x7500, 0x0048, 0x3e4d,
- 0x6854, 0xac02, 0x00c8, 0x3e4d, 0x2009, 0x0047, 0x1078, 0x55fc,
- 0x7a1c, 0xd284, 0x00c0, 0x3e23, 0x007c, 0xa016, 0x1078, 0x1525,
- 0x0078, 0x3e48, 0x157e, 0x137e, 0x147e, 0x20e1, 0x3000, 0x3d20,
- 0x3e28, 0xa584, 0x0070, 0x00c0, 0x3e7b, 0xa484, 0x7000, 0xa086,
- 0x1000, 0x00c0, 0x3e7b, 0x1078, 0x3e88, 0x0040, 0x3e7b, 0x20e1,
- 0x3000, 0x7828, 0x7828, 0x1078, 0x3ea6, 0x147f, 0x137f, 0x157f,
- 0x2009, 0x70be, 0x2104, 0xa005, 0x00c0, 0x3e77, 0x007c, 0x1078,
- 0x4893, 0x0078, 0x3e76, 0x1078, 0x6df7, 0x1078, 0x3e88, 0x20e1,
- 0x3000, 0x7828, 0x7828, 0x147f, 0x137f, 0x157f, 0x0078, 0x3e76,
- 0xa484, 0x01ff, 0x6872, 0xa005, 0x0040, 0x3e9a, 0xa080, 0x001f,
- 0xa084, 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a,
- 0x53a5, 0x007c, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099,
- 0x020a, 0x53a5, 0xa085, 0x0001, 0x0078, 0x3e99, 0x7000, 0xa084,
- 0xff00, 0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x3eb3,
- 0x0078, 0x3f9f, 0x007c, 0xa196, 0x2000, 0x00c0, 0x3ec4, 0x6900,
- 0xa18e, 0x0001, 0x00c0, 0x3ec0, 0x1078, 0x2b5e, 0x0078, 0x3eb2,
- 0x1078, 0x3ecc, 0x0078, 0x3eb2, 0xa196, 0x8000, 0x00c0, 0x3eb2,
- 0x1078, 0x4025, 0x0078, 0x3eb2, 0x0c7e, 0x7110, 0xa18c, 0xff00,
- 0x810f, 0xa196, 0x0001, 0x0040, 0x3ed9, 0xa196, 0x0023, 0x00c0,
- 0x3f97, 0xa08e, 0x0023, 0x00c0, 0x3f0a, 0x1078, 0x4097, 0x0040,
- 0x3f97, 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x3ef2,
- 0x7034, 0xa005, 0x00c0, 0x3f97, 0x2009, 0x0015, 0x1078, 0x55fc,
- 0x0078, 0x3f97, 0xa08e, 0x0210, 0x00c0, 0x3efc, 0x2009, 0x0015,
- 0x1078, 0x55fc, 0x0078, 0x3f97, 0xa08e, 0x0100, 0x00c0, 0x3f97,
- 0x7034, 0xa005, 0x00c0, 0x3f97, 0x2009, 0x0016, 0x1078, 0x55fc,
- 0x0078, 0x3f97, 0xa08e, 0x0022, 0x00c0, 0x3f97, 0x7030, 0xa08e,
- 0x0300, 0x00c0, 0x3f1b, 0x7034, 0xa005, 0x00c0, 0x3f97, 0x2009,
- 0x0017, 0x0078, 0x3f7f, 0xa08e, 0x0500, 0x00c0, 0x3f27, 0x7034,
- 0xa005, 0x00c0, 0x3f97, 0x2009, 0x0018, 0x0078, 0x3f7f, 0xa08e,
- 0x2010, 0x00c0, 0x3f2f, 0x2009, 0x0019, 0x0078, 0x3f7f, 0xa08e,
- 0x2110, 0x00c0, 0x3f37, 0x2009, 0x001a, 0x0078, 0x3f7f, 0xa08e,
- 0x5200, 0x00c0, 0x3f43, 0x7034, 0xa005, 0x00c0, 0x3f97, 0x2009,
- 0x001b, 0x0078, 0x3f7f, 0xa08e, 0x5000, 0x00c0, 0x3f4f, 0x7034,
- 0xa005, 0x00c0, 0x3f97, 0x2009, 0x001c, 0x0078, 0x3f7f, 0xa08e,
- 0x1200, 0x00c0, 0x3f5b, 0x7034, 0xa005, 0x00c0, 0x3f97, 0x2009,
- 0x0024, 0x0078, 0x3f7f, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x00c0,
- 0x3f65, 0x2009, 0x002d, 0x0078, 0x3f7f, 0xa08c, 0xff00, 0xa18e,
- 0x5300, 0x00c0, 0x3f6f, 0x2009, 0x002a, 0x0078, 0x3f7f, 0xa08e,
- 0x0f00, 0x00c0, 0x3f77, 0x2009, 0x0020, 0x0078, 0x3f7f, 0xa08e,
- 0x5300, 0x00c0, 0x3f7d, 0x0078, 0x3f7d, 0x2009, 0x001d, 0x017e,
- 0x2011, 0x7383, 0x2204, 0x1078, 0x1fe4, 0x1078, 0x3494, 0x00c0,
- 0x3f99, 0x0c7e, 0x1078, 0x556f, 0x0040, 0x3f9c, 0x017f, 0x611a,
- 0x601f, 0x0004, 0x7120, 0x610a, 0x017f, 0x1078, 0x55fc, 0x0c7f,
- 0x007c, 0x017f, 0x0078, 0x3f97, 0x0c7f, 0x0078, 0x3f99, 0xa084,
- 0x0007, 0x0079, 0x3fa4, 0x007c, 0x3fac, 0x3fac, 0x3fac, 0x3fac,
- 0x3fac, 0x3fad, 0x3fc6, 0x400e, 0x007c, 0x7110, 0xd1bc, 0x0040,
- 0x3fc5, 0x7120, 0x2160, 0xac8c, 0x0007, 0x00c0, 0x3fc5, 0xac8a,
- 0x7500, 0x0048, 0x3fc5, 0x6854, 0xac02, 0x00c8, 0x3fc5, 0x7124,
- 0x610a, 0x2009, 0x0046, 0x1078, 0x55fc, 0x007c, 0x0c7e, 0x7110,
- 0xd1bc, 0x00c0, 0x400c, 0x2011, 0x7383, 0x2204, 0xa080, 0x2207,
- 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x34cb, 0x00c0, 0x400c,
- 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0, 0x3ff1,
- 0x0c7e, 0x1078, 0x556f, 0x017f, 0x0040, 0x400c, 0x611a, 0x601f,
- 0x0006, 0x7120, 0x610a, 0x2009, 0x0044, 0x1078, 0x55fc, 0x0078,
- 0x400c, 0x0c7e, 0x1078, 0x556f, 0x017f, 0x0040, 0x400c, 0x611a,
- 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x4004,
- 0x6007, 0x0005, 0x0078, 0x4006, 0x6007, 0x0001, 0x6003, 0x0001,
- 0x1078, 0x448b, 0x1078, 0x4893, 0x0c7f, 0x007c, 0x7110, 0xd1bc,
- 0x0040, 0x4024, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0, 0x4024,
- 0xac82, 0x7500, 0x0048, 0x4024, 0x6854, 0xac02, 0x00c8, 0x4024,
- 0x2009, 0x0045, 0x1078, 0x55fc, 0x007c, 0x7110, 0xa18c, 0xff00,
- 0x810f, 0xa18e, 0x0000, 0x00c0, 0x4035, 0xa084, 0x000f, 0xa08a,
- 0x0006, 0x10c8, 0x1288, 0x1079, 0x4036, 0x007c, 0x403c, 0x403d,
- 0x403c, 0x403c, 0x4079, 0x4088, 0x007c, 0x7110, 0xd1bc, 0x00c0,
- 0x4078, 0x700c, 0x1078, 0x1fe4, 0x1078, 0x3494, 0x00c0, 0x4078,
- 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0, 0x4061,
- 0x0c7e, 0x1078, 0x556f, 0x017f, 0x0040, 0x4078, 0x611a, 0x601f,
- 0x0005, 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, 0x55fc, 0x0078,
- 0x4078, 0x0c7e, 0x1078, 0x556f, 0x017f, 0x0040, 0x4078, 0x611a,
- 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x4074,
- 0x2009, 0x0005, 0x0078, 0x4076, 0x2009, 0x0001, 0x1078, 0x55fc,
- 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4087, 0x1078, 0x4097, 0x0040,
- 0x4087, 0x7124, 0x610a, 0x2009, 0x0089, 0x1078, 0x55fc, 0x007c,
- 0x7110, 0xd1bc, 0x0040, 0x4096, 0x1078, 0x4097, 0x0040, 0x4096,
- 0x7124, 0x610a, 0x2009, 0x008a, 0x1078, 0x55fc, 0x007c, 0x7020,
- 0x2060, 0xac84, 0x0007, 0x00c0, 0x40aa, 0xac82, 0x7500, 0x0048,
- 0x40aa, 0x2001, 0x6f15, 0x2004, 0xac02, 0x00c8, 0x40aa, 0xa085,
- 0x0001, 0x007c, 0xa006, 0x0078, 0x40a9, 0x2071, 0x70c9, 0x7003,
- 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7012, 0x7017, 0x7500,
- 0x7007, 0x0000, 0x7026, 0x702b, 0x4f9b, 0x7032, 0x7037, 0x4fdc,
- 0x703b, 0x0002, 0x703f, 0x0000, 0x007c, 0x2071, 0x70c9, 0x00e0,
- 0x4174, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x00c0, 0x413d,
- 0x700f, 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, 0x8000, 0x7138,
- 0x8109, 0x713a, 0x00c0, 0x413b, 0x703b, 0x0002, 0x2009, 0x0100,
- 0x2104, 0xa082, 0x0003, 0x00c8, 0x413b, 0x703c, 0xa086, 0x0001,
- 0x00c0, 0x4118, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
- 0x0040, 0x40f6, 0x6803, 0x1000, 0x0078, 0x40fd, 0x6804, 0xa084,
- 0x1000, 0x0040, 0x40fd, 0x6803, 0x0100, 0x6803, 0x0000, 0x703f,
- 0x0000, 0x2069, 0x70b6, 0x6804, 0xa082, 0x0006, 0x00c0, 0x410a,
- 0x6807, 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, 0x4111, 0x6833,
- 0x0000, 0x1078, 0x4893, 0x1078, 0x4943, 0x0d7f, 0x0078, 0x413b,
- 0x0d7e, 0x2069, 0x6f00, 0x6944, 0x6860, 0xa102, 0x00c8, 0x413a,
- 0x2069, 0x70b6, 0x6804, 0xa086, 0x0000, 0x00c0, 0x413a, 0x6830,
- 0xa086, 0x0000, 0x00c0, 0x413a, 0x703f, 0x0001, 0x6807, 0x0006,
- 0x6833, 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, 0x2069, 0x0140,
- 0x6803, 0x0600, 0x0d7f, 0x0078, 0x4140, 0x127e, 0x2091, 0x8000,
- 0x7024, 0xa00d, 0x0040, 0x4151, 0x7020, 0x8001, 0x7022, 0x00c0,
- 0x4151, 0x7023, 0x0009, 0x8109, 0x7126, 0x00c0, 0x4151, 0x7028,
- 0x107a, 0x7030, 0xa00d, 0x0040, 0x4162, 0x702c, 0x8001, 0x702e,
- 0x00c0, 0x4162, 0x702f, 0x0009, 0x8109, 0x7132, 0x00c0, 0x4162,
- 0x7034, 0x107a, 0x7018, 0xa00d, 0x0040, 0x4173, 0x7008, 0x8001,
- 0x700a, 0x00c0, 0x4173, 0x700b, 0x0009, 0x8109, 0x711a, 0x00c0,
- 0x4173, 0x701c, 0x107a, 0x127f, 0x7004, 0x0079, 0x4177, 0x419e,
- 0x419f, 0x41bb, 0x0e7e, 0x2071, 0x70c9, 0x7018, 0xa005, 0x00c0,
- 0x4185, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0e7e,
- 0x007e, 0x2071, 0x70c9, 0x701c, 0xa206, 0x00c0, 0x4191, 0x701a,
- 0x701e, 0x007f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x70c9, 0x6088,
- 0xa102, 0x0048, 0x419c, 0x618a, 0x0e7f, 0x007c, 0x007c, 0x7110,
- 0x1078, 0x34cb, 0x00c0, 0x41b1, 0x6088, 0x8001, 0x0048, 0x41b1,
- 0x608a, 0x00c0, 0x41b1, 0x127e, 0x2091, 0x8000, 0x1078, 0x4893,
- 0x127f, 0x8108, 0xa182, 0x007e, 0x0048, 0x41b9, 0xa00e, 0x7007,
- 0x0002, 0x7112, 0x007c, 0x7014, 0x2060, 0x127e, 0x2091, 0x8000,
- 0x6014, 0xa005, 0x0040, 0x41ea, 0x8001, 0x6016, 0x00c0, 0x41ea,
- 0x611c, 0xa186, 0x0003, 0x0040, 0x41d1, 0xa186, 0x0006, 0x00c0,
- 0x41e8, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0048, 0x41e8,
- 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, 0x41e1, 0x2001,
- 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0078, 0x41ea,
- 0x1078, 0x60aa, 0x127f, 0xac88, 0x0008, 0x7116, 0x2001, 0x6f16,
- 0x2004, 0xa102, 0x0048, 0x41f8, 0x7017, 0x7500, 0x7007, 0x0000,
- 0x007c, 0x0e7e, 0x2071, 0x70c9, 0x7027, 0x07d0, 0x7023, 0x0009,
- 0x703b, 0x0002, 0x0e7f, 0x007c, 0x2001, 0x70d2, 0x2003, 0x0000,
- 0x007c, 0x0e7e, 0x2071, 0x70c9, 0x7033, 0x07d0, 0x702f, 0x0009,
- 0x0e7f, 0x007c, 0x2011, 0x70d5, 0x2013, 0x0000, 0x007c, 0x0e7e,
- 0x2071, 0x70c9, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c,
- 0x0c7e, 0x2061, 0x715a, 0x0c7f, 0x007c, 0xa184, 0x000f, 0x8003,
- 0x8003, 0x8003, 0xa080, 0x715a, 0x2060, 0x007c, 0x6854, 0xa08a,
- 0x199a, 0x0048, 0x4235, 0x2001, 0x1999, 0xa005, 0x00c0, 0x4245,
- 0x6944, 0x0c7e, 0x1078, 0x4225, 0x6014, 0x0c7f, 0xa005, 0x00c0,
- 0x424a, 0x2001, 0x001e, 0x0078, 0x424a, 0xa08e, 0xffff, 0x00c0,
- 0x424a, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c,
- 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x4285, 0xd0b4, 0x00c0,
- 0x4261, 0xd0bc, 0x00c0, 0x4273, 0x2009, 0x0006, 0x1078, 0x42a8,
- 0x007c, 0xd0fc, 0x0040, 0x426e, 0xa084, 0x0003, 0xa08e, 0x0003,
- 0x0040, 0x42a1, 0xa08e, 0x0000, 0x00c0, 0x42a1, 0x2009, 0x0043,
- 0x1078, 0x55fc, 0x007c, 0xd0fc, 0x0040, 0x4280, 0xa084, 0x0003,
- 0xa08e, 0x0003, 0x0040, 0x42a1, 0xa08e, 0x0000, 0x00c0, 0x42a1,
- 0x2009, 0x0042, 0x1078, 0x55fc, 0x007c, 0xd0fc, 0x0040, 0x4297,
- 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x42a1, 0xa08e, 0x0002,
- 0x0040, 0x429b, 0x2009, 0x0041, 0x1078, 0x55fc, 0x007c, 0x1078,
- 0x42a6, 0x0078, 0x4296, 0x2009, 0x0043, 0x1078, 0x55fc, 0x0078,
- 0x4296, 0x2009, 0x0004, 0x1078, 0x42a8, 0x007c, 0x2009, 0x0001,
- 0x6010, 0xa0ec, 0xf000, 0x0040, 0x42cc, 0x2068, 0x6952, 0x6800,
- 0x6012, 0xa186, 0x0001, 0x00c0, 0x42c6, 0x694c, 0xa18c, 0x8100,
- 0xa18e, 0x8100, 0x00c0, 0x42c6, 0x0c7e, 0x6944, 0x1078, 0x4225,
- 0x6204, 0x8210, 0x0048, 0x42c5, 0x6206, 0x0c7f, 0x1078, 0x3720,
- 0x6010, 0xa06d, 0x10c0, 0x422e, 0x007c, 0x157e, 0x0c7e, 0x20a9,
- 0x0010, 0x2061, 0x715a, 0x6000, 0x81ff, 0x0040, 0x42da, 0xa205,
- 0x0078, 0x42db, 0xa204, 0x6002, 0xace0, 0x0008, 0x00f0, 0x42d3,
- 0x0c7f, 0x157f, 0x007c, 0x6808, 0xa005, 0x0040, 0x42eb, 0x8001,
- 0x680a, 0xa085, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x2079,
- 0x70b6, 0x127f, 0x0d7e, 0x2069, 0x70b6, 0x6803, 0x0005, 0x2069,
- 0x0004, 0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e,
- 0x6027, 0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x4307, 0x4311,
- 0x4336, 0x4391, 0x4317, 0x4336, 0x430f, 0x430f, 0x430f, 0x1078,
- 0x1288, 0x1078, 0x4204, 0x1078, 0x4893, 0x0c7f, 0x007c, 0x62c0,
- 0x82ff, 0x00c0, 0x431d, 0x0c7f, 0x007c, 0x2011, 0x31f0, 0x1078,
- 0x4187, 0x7828, 0xa092, 0x0002, 0x00c8, 0x432c, 0x8000, 0x782a,
- 0x1078, 0x3220, 0x0078, 0x431b, 0x1078, 0x31f0, 0x7807, 0x0003,
- 0x7827, 0x0000, 0x782b, 0x0000, 0x0078, 0x431b, 0x1078, 0x4204,
- 0x3c00, 0x007e, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214, 0x007f,
- 0x20e0, 0x82ff, 0x0040, 0x4354, 0x62c0, 0x82ff, 0x00c0, 0x4354,
- 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1288, 0x2009, 0x0013,
- 0x1078, 0x55fc, 0x0c7f, 0x007c, 0x3900, 0xa082, 0x71fa, 0x00c8,
- 0x435b, 0x1078, 0x54ff, 0x0c7e, 0x7824, 0xa065, 0x1040, 0x1288,
- 0x7804, 0xa086, 0x0004, 0x0040, 0x43d6, 0x7828, 0xa092, 0x2710,
- 0x00c8, 0x4371, 0x8000, 0x782a, 0x0c7f, 0x1078, 0x4f80, 0x0078,
- 0x4352, 0x6104, 0xa186, 0x0003, 0x00c0, 0x4388, 0x0e7e, 0x2071,
- 0x6f00, 0x70b4, 0x0e7f, 0xd08c, 0x0040, 0x4388, 0x0c7e, 0x0e7e,
- 0x2061, 0x0100, 0x2071, 0x6f00, 0x1078, 0x3229, 0x0e7f, 0x0c7f,
- 0x1078, 0x6e4a, 0x2009, 0x0014, 0x1078, 0x55fc, 0x0c7f, 0x0078,
- 0x4352, 0x2001, 0x70d2, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0,
- 0x43a5, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1288, 0x2009,
- 0x0013, 0x1078, 0x5649, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x3900,
- 0xa082, 0x71fa, 0x00c8, 0x43ae, 0x1078, 0x54ff, 0x7824, 0xa005,
- 0x1040, 0x1288, 0x781c, 0xa06d, 0x1040, 0x1288, 0x6800, 0xc0dc,
- 0x6802, 0x7924, 0x2160, 0x1078, 0x55d5, 0x693c, 0x81ff, 0x1040,
- 0x1288, 0x8109, 0x693e, 0x6854, 0xa015, 0x0040, 0x43ca, 0x7a1e,
- 0x0078, 0x43cc, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000,
- 0x0d7f, 0x0c7f, 0x1078, 0x4893, 0x0078, 0x43a3, 0x6104, 0xa186,
- 0x0002, 0x0040, 0x43e1, 0xa186, 0x0004, 0x0040, 0x43e1, 0x0078,
- 0x4365, 0x7808, 0xac06, 0x0040, 0x4365, 0x1078, 0x479a, 0x1078,
- 0x448b, 0x0c7f, 0x1078, 0x4893, 0x0078, 0x4352, 0x0c7e, 0x6027,
- 0x0002, 0x2011, 0x70d5, 0x2013, 0x0000, 0x62c8, 0x82ff, 0x00c0,
- 0x4408, 0x62c4, 0x82ff, 0x00c0, 0x4408, 0x793c, 0xa1e5, 0x0000,
- 0x0040, 0x4406, 0x2009, 0x0049, 0x1078, 0x55fc, 0x0c7f, 0x007c,
- 0x3908, 0xa192, 0x71fa, 0x00c8, 0x440f, 0x1078, 0x54ff, 0x6017,
- 0x0010, 0x793c, 0x81ff, 0x0040, 0x4406, 0x7944, 0xa192, 0x7530,
- 0x00c8, 0x442e, 0x8108, 0x7946, 0x1078, 0x4209, 0x793c, 0xa188,
- 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x442a, 0x6017, 0x0012,
- 0x0078, 0x4406, 0x6017, 0x0016, 0x0078, 0x4406, 0x037e, 0x2019,
- 0x0001, 0x1078, 0x513b, 0x037f, 0x1078, 0x6e4a, 0x793c, 0x2160,
- 0x2009, 0x004a, 0x1078, 0x55fc, 0x0078, 0x4406, 0x007e, 0x017e,
+ 0x0040, 0x3c0c, 0x027e, 0x2009, 0x0000, 0x2011, 0xfcff, 0x1078,
+ 0x41f4, 0x027f, 0x0078, 0x3c42, 0x6858, 0xa005, 0x0040, 0x3c56,
+ 0x685c, 0xa065, 0x0040, 0x3c52, 0x2001, 0x6d2c, 0x2004, 0xa005,
+ 0x0040, 0x3c1e, 0x1078, 0x6283, 0x0078, 0x3c24, 0x6013, 0x0400,
+ 0x2009, 0x0041, 0x1078, 0x5591, 0x6958, 0xa18c, 0xe600, 0xa186,
+ 0x2000, 0x0040, 0x3c3a, 0xa186, 0x0400, 0x0040, 0x3c3a, 0x6944,
+ 0x0c7e, 0x1078, 0x416d, 0x6000, 0xa084, 0xfdff, 0x6002, 0x0c7f,
+ 0x0078, 0x3c42, 0x027e, 0x2009, 0x0000, 0x2011, 0xfdff, 0x1078,
+ 0x41f4, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x3c4e, 0x6944, 0x1078,
+ 0x416d, 0x6008, 0x8000, 0x0048, 0x3c4e, 0x600a, 0x0c7f, 0x127f,
+ 0x0078, 0x3d41, 0x0c7f, 0x127f, 0x0078, 0x3d39, 0x6954, 0xa186,
+ 0x0020, 0x0040, 0x3c6c, 0xa186, 0x0029, 0x00c0, 0x3c52, 0x6944,
+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x3447, 0x00c0, 0x3c42, 0x6000,
+ 0xc0e4, 0x6002, 0x0078, 0x3c42, 0x685c, 0xa065, 0x0040, 0x3c52,
+ 0x6017, 0x0014, 0x0078, 0x3c42, 0x6944, 0x1078, 0x3d6e, 0x6000,
+ 0xa084, 0x0001, 0x0040, 0x3c8d, 0x2091, 0x8000, 0x6204, 0x8210,
+ 0x0048, 0x3c87, 0x6206, 0x2091, 0x8001, 0x0078, 0x3d4f, 0x2091,
+ 0x8001, 0x6853, 0x0016, 0x0078, 0x3d48, 0x6853, 0x0007, 0x0078,
+ 0x3d48, 0x6834, 0x8007, 0xa084, 0x00ff, 0x00c0, 0x3c9b, 0x1078,
+ 0x3a0f, 0x0078, 0x3cad, 0x2030, 0x8001, 0x00c0, 0x3ca5, 0x7007,
+ 0x0001, 0x1078, 0x3cae, 0x0078, 0x3cad, 0x7007, 0x0006, 0x7012,
+ 0x2d00, 0x7016, 0x701a, 0x704b, 0x3cae, 0x007c, 0x0e7e, 0x2009,
+ 0x6d2c, 0x210c, 0x81ff, 0x00c0, 0x3d28, 0x6848, 0x2070, 0xae82,
+ 0x7400, 0x0048, 0x3d18, 0x2001, 0x6d15, 0x2004, 0xae02, 0x00c8,
+ 0x3d18, 0x6944, 0x1078, 0x3d6e, 0x6100, 0xa184, 0x0001, 0x0040,
+ 0x3cfe, 0xa184, 0x0100, 0x00c0, 0x3d1c, 0xa184, 0x0200, 0x00c0,
+ 0x3d20, 0x601c, 0xa005, 0x00c0, 0x3d24, 0x711c, 0xa186, 0x0006,
+ 0x00c0, 0x3d03, 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08, 0x127e,
+ 0x2091, 0x8000, 0x7010, 0xa005, 0x00c0, 0x3cf5, 0x7112, 0x7018,
+ 0xa065, 0x0040, 0x3d28, 0x6000, 0xd0e4, 0x00c0, 0x3d2c, 0x2e60,
+ 0x1078, 0x4176, 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800, 0xa005,
+ 0x00c0, 0x3cf5, 0x6902, 0x127f, 0x0e7f, 0x007c, 0x0e7f, 0x6853,
+ 0x0006, 0x0078, 0x3d48, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078,
+ 0x3447, 0x00c0, 0x3d2c, 0x6000, 0xd0e4, 0x00c0, 0x3d2c, 0x711c,
+ 0xa186, 0x0007, 0x00c0, 0x3d18, 0x6853, 0x0002, 0x0078, 0x3d2e,
+ 0x6853, 0x0008, 0x0078, 0x3d2e, 0x6853, 0x000e, 0x0078, 0x3d2e,
+ 0x6853, 0x0017, 0x0078, 0x3d2e, 0x6853, 0x0035, 0x0078, 0x3d2e,
+ 0x6853, 0x0028, 0x0078, 0x3d2e, 0x6853, 0x0029, 0x0e7f, 0x0078,
+ 0x3d48, 0x2009, 0x003e, 0x0078, 0x3d43, 0x2009, 0x0004, 0x0078,
+ 0x3d43, 0x2009, 0x0006, 0x0078, 0x3d43, 0x2009, 0x0016, 0x0078,
+ 0x3d43, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, 0xa105, 0x6856,
+ 0x2091, 0x8000, 0x1078, 0x36a1, 0x2091, 0x8001, 0x007c, 0x1078,
+ 0x1328, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102, 0x0048, 0x3d5f,
+ 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0078, 0x3d6b, 0x7070,
+ 0xa080, 0x0040, 0x7072, 0x00c8, 0x3d6b, 0x7074, 0xa081, 0x0000,
+ 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x007c, 0x0d7e, 0x1078,
+ 0x416d, 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004, 0x2204, 0xa085,
+ 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002, 0x3d08, 0x20e1,
+ 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040, 0x3d8a, 0xa086, 0x1000,
+ 0x00c0, 0x3dab, 0x20e1, 0x0004, 0x3d60, 0xd1bc, 0x00c0, 0x3d91,
+ 0x3e60, 0xac84, 0x0007, 0x00c0, 0x3dab, 0xac82, 0x7400, 0x0048,
+ 0x3dab, 0x6854, 0xac02, 0x00c8, 0x3dab, 0x2009, 0x0047, 0x1078,
+ 0x5591, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x7a28, 0x7a1c, 0xd284,
+ 0x00c0, 0x3d7c, 0x007c, 0xa016, 0x1078, 0x1532, 0x0078, 0x3da1,
+ 0x157e, 0x137e, 0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584,
+ 0x0070, 0x00c0, 0x3dd9, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0,
+ 0x3dd9, 0x1078, 0x3de6, 0x0040, 0x3dd9, 0x20e1, 0x3000, 0x7828,
+ 0x7828, 0x1078, 0x3e04, 0x147f, 0x137f, 0x157f, 0x2009, 0x6f18,
+ 0x2104, 0xa005, 0x00c0, 0x3dd5, 0x007c, 0x1078, 0x476a, 0x0078,
+ 0x3dd4, 0x1078, 0x6c23, 0x1078, 0x3de6, 0x20e1, 0x3000, 0x7828,
+ 0x7828, 0x147f, 0x137f, 0x157f, 0x0078, 0x3dd4, 0xa484, 0x01ff,
+ 0x687a, 0xa005, 0x0040, 0x3df8, 0xa080, 0x001f, 0xa084, 0x03f8,
+ 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c,
+ 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5,
+ 0xa085, 0x0001, 0x0078, 0x3df7, 0x7000, 0xa084, 0xff00, 0xa08c,
+ 0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x3e11, 0x0078, 0x3f51,
+ 0x007c, 0xa196, 0x2000, 0x00c0, 0x3e22, 0x6900, 0xa18e, 0x0001,
+ 0x00c0, 0x3e1e, 0x1078, 0x2aec, 0x0078, 0x3e10, 0x1078, 0x3e2a,
+ 0x0078, 0x3e10, 0xa196, 0x8000, 0x00c0, 0x3e10, 0x1078, 0x3fd7,
+ 0x0078, 0x3e10, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196,
+ 0x0001, 0x0040, 0x3e37, 0xa196, 0x0023, 0x00c0, 0x3ef8, 0xa08e,
+ 0x0023, 0x00c0, 0x3e68, 0x1078, 0x404e, 0x0040, 0x3ef8, 0x7124,
+ 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x3e50, 0x7034, 0xa005,
+ 0x00c0, 0x3ef8, 0x2009, 0x0015, 0x1078, 0x5591, 0x0078, 0x3ef8,
+ 0xa08e, 0x0210, 0x00c0, 0x3e5a, 0x2009, 0x0015, 0x1078, 0x5591,
+ 0x0078, 0x3ef8, 0xa08e, 0x0100, 0x00c0, 0x3ef8, 0x7034, 0xa005,
+ 0x00c0, 0x3ef8, 0x2009, 0x0016, 0x1078, 0x5591, 0x0078, 0x3ef8,
+ 0xa08e, 0x0022, 0x00c0, 0x3ef8, 0x7030, 0xa08e, 0x0300, 0x00c0,
+ 0x3e79, 0x7034, 0xa005, 0x00c0, 0x3ef8, 0x2009, 0x0017, 0x0078,
+ 0x3eda, 0xa08e, 0x0500, 0x00c0, 0x3e85, 0x7034, 0xa005, 0x00c0,
+ 0x3ef8, 0x2009, 0x0018, 0x0078, 0x3eda, 0xa08e, 0x2010, 0x00c0,
+ 0x3e8d, 0x2009, 0x0019, 0x0078, 0x3eda, 0xa08e, 0x2110, 0x00c0,
+ 0x3e95, 0x2009, 0x001a, 0x0078, 0x3eda, 0xa08e, 0x5200, 0x00c0,
+ 0x3ea1, 0x7034, 0xa005, 0x00c0, 0x3ef8, 0x2009, 0x001b, 0x0078,
+ 0x3eda, 0xa08e, 0x5000, 0x00c0, 0x3ead, 0x7034, 0xa005, 0x00c0,
+ 0x3ef8, 0x2009, 0x001c, 0x0078, 0x3eda, 0xa08e, 0x2400, 0x00c0,
+ 0x3eb3, 0x0078, 0x3ed8, 0xa08e, 0x5300, 0x00c0, 0x3eb9, 0x0078,
+ 0x3ed8, 0xa08e, 0x0f00, 0x00c0, 0x3ec1, 0x2009, 0x0020, 0x0078,
+ 0x3eda, 0xa08e, 0x5300, 0x00c0, 0x3ec7, 0x0078, 0x3ed8, 0xa08e,
+ 0x6104, 0x00c0, 0x3ed8, 0x2009, 0x728e, 0x2011, 0x8015, 0x211c,
+ 0x8108, 0x2124, 0x1078, 0x2a53, 0x2009, 0x0023, 0x0078, 0x3eda,
+ 0x2009, 0x001d, 0x017e, 0x2011, 0x7283, 0x2204, 0x8211, 0x220c,
+ 0x1078, 0x1e1b, 0x00c0, 0x3efa, 0x1078, 0x3410, 0x00c0, 0x3efa,
+ 0x6612, 0x6516, 0x0c7e, 0x1078, 0x5504, 0x0040, 0x3efd, 0x017f,
+ 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0x017f, 0x1078, 0x5591,
+ 0x0c7f, 0x007c, 0x017f, 0x0078, 0x3ef8, 0x0c7f, 0x0078, 0x3efa,
+ 0x0e7e, 0x0d7e, 0x2028, 0x2130, 0xa696, 0x00ff, 0x00c0, 0x3f20,
+ 0xa596, 0xfffd, 0x00c0, 0x3f10, 0x2009, 0x007f, 0x0078, 0x3f4d,
+ 0xa596, 0xfffe, 0x00c0, 0x3f18, 0x2009, 0x007e, 0x0078, 0x3f4d,
+ 0xa596, 0xfffc, 0x00c0, 0x3f20, 0x2009, 0x0080, 0x0078, 0x3f4d,
+ 0x2011, 0x0000, 0x2021, 0x007e, 0x20a9, 0x0082, 0x2071, 0x6e7e,
+ 0x2e1c, 0x83ff, 0x00c0, 0x3f32, 0x82ff, 0x00c0, 0x3f41, 0x2410,
+ 0x0078, 0x3f41, 0x2368, 0x6b10, 0x007e, 0x2100, 0xa31e, 0x007f,
+ 0x00c0, 0x3f41, 0x6b14, 0xa31e, 0x00c0, 0x3f41, 0x2408, 0x0078,
+ 0x3f4d, 0x8420, 0x8e70, 0x00f0, 0x3f28, 0x82ff, 0x00c0, 0x3f4c,
+ 0xa085, 0x0001, 0x0078, 0x3f4e, 0x2208, 0xa006, 0x0d7f, 0x0e7f,
+ 0x007c, 0xa084, 0x0007, 0x0079, 0x3f56, 0x007c, 0x3f5e, 0x3f5e,
+ 0x3f5e, 0x3f5e, 0x3f5e, 0x3f5f, 0x3f78, 0x3fc0, 0x007c, 0x7110,
+ 0xd1bc, 0x0040, 0x3f77, 0x7120, 0x2160, 0xac8c, 0x0007, 0x00c0,
+ 0x3f77, 0xac8a, 0x7400, 0x0048, 0x3f77, 0x6854, 0xac02, 0x00c8,
+ 0x3f77, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078, 0x5591, 0x007c,
+ 0x0c7e, 0x7110, 0xd1bc, 0x00c0, 0x3fbe, 0x2011, 0x7283, 0x2204,
+ 0x8211, 0x220c, 0x1078, 0x1e1b, 0x00c0, 0x3fbe, 0x1078, 0x3447,
+ 0x00c0, 0x3fbe, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006,
+ 0x00c0, 0x3fa3, 0x0c7e, 0x1078, 0x5504, 0x017f, 0x0040, 0x3fbe,
+ 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x2009, 0x0044, 0x1078,
+ 0x5591, 0x0078, 0x3fbe, 0x0c7e, 0x1078, 0x5504, 0x017f, 0x0040,
+ 0x3fbe, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004,
+ 0x00c0, 0x3fb6, 0x6007, 0x0005, 0x0078, 0x3fb8, 0x6007, 0x0001,
+ 0x6003, 0x0001, 0x1078, 0x4376, 0x1078, 0x476a, 0x0c7f, 0x007c,
+ 0x7110, 0xd1bc, 0x0040, 0x3fd6, 0x7020, 0x2060, 0xac84, 0x0007,
+ 0x00c0, 0x3fd6, 0xac82, 0x7400, 0x0048, 0x3fd6, 0x6854, 0xac02,
+ 0x00c8, 0x3fd6, 0x2009, 0x0045, 0x1078, 0x5591, 0x007c, 0x7110,
+ 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x00c0, 0x3fe7, 0xa084,
+ 0x000f, 0xa08a, 0x0006, 0x10c8, 0x12b7, 0x1079, 0x3fe8, 0x007c,
+ 0x3fee, 0x3fef, 0x3fee, 0x3fee, 0x4030, 0x403f, 0x007c, 0x7110,
+ 0xd1bc, 0x00c0, 0x402f, 0x700c, 0x7108, 0x1078, 0x1e1b, 0x00c0,
+ 0x402f, 0x1078, 0x3410, 0x00c0, 0x402f, 0x6612, 0x6516, 0x6204,
+ 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0, 0x4018, 0x0c7e,
+ 0x1078, 0x5504, 0x017f, 0x0040, 0x402f, 0x611a, 0x601f, 0x0005,
+ 0x7120, 0x610a, 0x2009, 0x0028, 0x1078, 0x5591, 0x0078, 0x402f,
+ 0x0c7e, 0x1078, 0x5504, 0x017f, 0x0040, 0x402f, 0x611a, 0x601f,
+ 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x402b, 0x2009,
+ 0x0005, 0x0078, 0x402d, 0x2009, 0x0001, 0x1078, 0x5591, 0x007c,
+ 0x7110, 0xd1bc, 0x0040, 0x403e, 0x1078, 0x404e, 0x0040, 0x403e,
+ 0x7124, 0x610a, 0x2009, 0x0029, 0x1078, 0x5591, 0x007c, 0x7110,
+ 0xd1bc, 0x0040, 0x404d, 0x1078, 0x404e, 0x0040, 0x404d, 0x7124,
+ 0x610a, 0x2009, 0x002a, 0x1078, 0x5591, 0x007c, 0x7020, 0x2060,
+ 0xac84, 0x0007, 0x00c0, 0x4061, 0xac82, 0x7400, 0x0048, 0x4061,
+ 0x2001, 0x6d15, 0x2004, 0xac02, 0x00c8, 0x4061, 0xa085, 0x0001,
+ 0x007c, 0xa006, 0x0078, 0x4060, 0x2071, 0x6f23, 0x7003, 0x0003,
+ 0x700f, 0x0361, 0xa006, 0x701a, 0x7012, 0x7017, 0x7400, 0x7007,
+ 0x0000, 0x7026, 0x702b, 0x4ff2, 0x7032, 0x7037, 0x503e, 0x007c,
+ 0x2071, 0x6f23, 0x00e0, 0x40be, 0x2091, 0x6000, 0x700c, 0x8001,
+ 0x700e, 0x00c0, 0x4087, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e,
+ 0x2091, 0x8000, 0x7024, 0xa00d, 0x0040, 0x409b, 0x7020, 0x8001,
+ 0x7022, 0x00c0, 0x409b, 0x7023, 0x0009, 0x8109, 0x7126, 0x00c0,
+ 0x409b, 0x7028, 0x107a, 0x7030, 0xa00d, 0x0040, 0x40ac, 0x702c,
+ 0x8001, 0x702e, 0x00c0, 0x40ac, 0x702f, 0x0009, 0x8109, 0x7132,
+ 0x00c0, 0x40ac, 0x7034, 0x107a, 0x7018, 0xa00d, 0x0040, 0x40bd,
+ 0x7008, 0x8001, 0x700a, 0x00c0, 0x40bd, 0x700b, 0x0009, 0x8109,
+ 0x711a, 0x00c0, 0x40bd, 0x701c, 0x107a, 0x127f, 0x7004, 0x0079,
+ 0x40c1, 0x40e8, 0x40e9, 0x4105, 0x0e7e, 0x2071, 0x6f23, 0x7018,
+ 0xa005, 0x00c0, 0x40cf, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f,
+ 0x007c, 0x0e7e, 0x007e, 0x2071, 0x6f23, 0x701c, 0xa206, 0x00c0,
+ 0x40db, 0x701a, 0x701e, 0x007f, 0x0e7f, 0x007c, 0x0e7e, 0x2071,
+ 0x6f23, 0x6088, 0xa102, 0x0048, 0x40e6, 0x618a, 0x0e7f, 0x007c,
+ 0x007c, 0x7110, 0x1078, 0x3447, 0x00c0, 0x40fb, 0x6088, 0x8001,
+ 0x0048, 0x40fb, 0x608a, 0x00c0, 0x40fb, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x476a, 0x127f, 0x8108, 0xa182, 0x00ff, 0x0048, 0x4103,
+ 0xa00e, 0x7007, 0x0002, 0x7112, 0x007c, 0x7014, 0x2060, 0x127e,
+ 0x2091, 0x8000, 0x6014, 0xa005, 0x0040, 0x4134, 0x8001, 0x6016,
+ 0x00c0, 0x4134, 0x611c, 0xa186, 0x0003, 0x0040, 0x411b, 0xa186,
+ 0x0006, 0x00c0, 0x4132, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a,
+ 0x0048, 0x4132, 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048,
+ 0x412b, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116,
+ 0x0078, 0x4134, 0x1078, 0x5fea, 0x127f, 0xac88, 0x0008, 0x7116,
+ 0x2001, 0x6d16, 0x2004, 0xa102, 0x0048, 0x4142, 0x7017, 0x7400,
+ 0x7007, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x6f23, 0x7027, 0x07d0,
+ 0x7023, 0x0009, 0x0e7f, 0x007c, 0x2001, 0x6f2c, 0x2003, 0x0000,
+ 0x007c, 0x0e7e, 0x2071, 0x6f23, 0x7033, 0x07d0, 0x702f, 0x0009,
+ 0x0e7f, 0x007c, 0x2011, 0x6f2f, 0x2013, 0x0000, 0x007c, 0x0e7e,
+ 0x2071, 0x6f23, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c,
+ 0x0c7e, 0x2061, 0x6fb2, 0x0c7f, 0x007c, 0xa184, 0x000f, 0x8003,
+ 0x8003, 0x8003, 0xa080, 0x6fb2, 0x2060, 0x007c, 0x684c, 0xa08c,
+ 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x41ac, 0xd0b4, 0x00c0, 0x4188,
+ 0xd0bc, 0x00c0, 0x419a, 0x2009, 0x0006, 0x1078, 0x41cf, 0x007c,
+ 0xd0fc, 0x0040, 0x4195, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040,
+ 0x41c8, 0xa08e, 0x0000, 0x00c0, 0x41c8, 0x2009, 0x0043, 0x1078,
+ 0x5591, 0x007c, 0xd0fc, 0x0040, 0x41a7, 0xa084, 0x0003, 0xa08e,
+ 0x0003, 0x0040, 0x41c8, 0xa08e, 0x0000, 0x00c0, 0x41c8, 0x2009,
+ 0x0042, 0x1078, 0x5591, 0x007c, 0xd0fc, 0x0040, 0x41be, 0xa084,
+ 0x0003, 0xa08e, 0x0003, 0x0040, 0x41c8, 0xa08e, 0x0002, 0x0040,
+ 0x41c2, 0x2009, 0x0041, 0x1078, 0x5591, 0x007c, 0x1078, 0x41cd,
+ 0x0078, 0x41bd, 0x2009, 0x0043, 0x1078, 0x5591, 0x0078, 0x41bd,
+ 0x2009, 0x0004, 0x1078, 0x41cf, 0x007c, 0x2009, 0x0001, 0x6010,
+ 0xa0ec, 0xf000, 0x0040, 0x41f3, 0x2068, 0x6952, 0x6800, 0x6012,
+ 0xa186, 0x0001, 0x00c0, 0x41ed, 0x694c, 0xa18c, 0x8100, 0xa18e,
+ 0x8100, 0x00c0, 0x41ed, 0x0c7e, 0x6944, 0x1078, 0x416d, 0x6204,
+ 0x8210, 0x0048, 0x41ec, 0x6206, 0x0c7f, 0x1078, 0x36a1, 0x6010,
+ 0xa06d, 0x10c0, 0x4176, 0x007c, 0x157e, 0x0c7e, 0x20a9, 0x0010,
+ 0x2061, 0x6fb2, 0x6000, 0x81ff, 0x0040, 0x4201, 0xa205, 0x0078,
+ 0x4202, 0xa204, 0x6002, 0xace0, 0x0008, 0x00f0, 0x41fa, 0x0c7f,
+ 0x157f, 0x007c, 0x6808, 0xa005, 0x0040, 0x4212, 0x8001, 0x680a,
+ 0xa085, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x2079, 0x6f10,
+ 0x127f, 0x0d7e, 0x2069, 0x6f10, 0x6803, 0x0005, 0x2069, 0x0004,
+ 0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027,
+ 0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x422e, 0x4238, 0x425d,
+ 0x428e, 0x423e, 0x425d, 0x4236, 0x4236, 0x4236, 0x1078, 0x12b7,
+ 0x1078, 0x414c, 0x1078, 0x476a, 0x0c7f, 0x007c, 0x62c0, 0x82ff,
+ 0x00c0, 0x4244, 0x0c7f, 0x007c, 0x2011, 0x318e, 0x1078, 0x40d1,
+ 0x7828, 0xa092, 0x0002, 0x00c8, 0x4253, 0x8000, 0x782a, 0x1078,
+ 0x31c2, 0x0078, 0x4242, 0x1078, 0x318e, 0x7807, 0x0003, 0x7827,
+ 0x0000, 0x782b, 0x0000, 0x0078, 0x4242, 0x1078, 0x414c, 0x62c0,
+ 0x82ff, 0x00c0, 0x426f, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040,
+ 0x12b7, 0x2009, 0x0013, 0x1078, 0x5591, 0x0c7f, 0x007c, 0x0c7e,
+ 0x7824, 0xa065, 0x1040, 0x12b7, 0x7804, 0xa086, 0x0004, 0x0040,
+ 0x42cc, 0x7828, 0xa092, 0x2710, 0x00c8, 0x4285, 0x8000, 0x782a,
+ 0x0c7f, 0x1078, 0x4fd7, 0x0078, 0x426d, 0x1078, 0x6c76, 0x2009,
+ 0x0014, 0x1078, 0x5591, 0x0c7f, 0x0078, 0x426d, 0x2001, 0x6f2c,
+ 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0, 0x42a2, 0x782b, 0x0000,
+ 0x7824, 0xa065, 0x1040, 0x12b7, 0x2009, 0x0013, 0x1078, 0x55df,
+ 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x7824, 0xa005, 0x1040, 0x12b7,
+ 0x781c, 0xa06d, 0x1040, 0x12b7, 0x6800, 0xc0dc, 0x6802, 0x7924,
+ 0x2160, 0x1078, 0x556a, 0x693c, 0x81ff, 0x1040, 0x12b7, 0x8109,
+ 0x693e, 0x6854, 0xa015, 0x0040, 0x42c0, 0x7a1e, 0x0078, 0x42c2,
+ 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f, 0x0c7f,
+ 0x1078, 0x476a, 0x0078, 0x42a0, 0x6104, 0xa186, 0x0002, 0x0040,
+ 0x42d7, 0xa186, 0x0004, 0x0040, 0x42d7, 0x0078, 0x4279, 0x7808,
+ 0xac06, 0x0040, 0x4279, 0x1078, 0x4671, 0x1078, 0x4376, 0x0c7f,
+ 0x1078, 0x476a, 0x0078, 0x426d, 0x0c7e, 0x6027, 0x0002, 0x2011,
+ 0x6f2f, 0x2013, 0x0000, 0x62c8, 0x82ff, 0x00c0, 0x42fe, 0x62c4,
+ 0x82ff, 0x00c0, 0x42fe, 0x793c, 0xa1e5, 0x0000, 0x0040, 0x42fc,
+ 0x2009, 0x0049, 0x1078, 0x5591, 0x0c7f, 0x007c, 0x6017, 0x0010,
+ 0x793c, 0x81ff, 0x0040, 0x42fc, 0x7944, 0xa192, 0x2710, 0x00c8,
+ 0x431d, 0x8108, 0x7946, 0x1078, 0x4151, 0x793c, 0xa188, 0x0007,
+ 0x210c, 0xa18e, 0x0006, 0x00c0, 0x4319, 0x6017, 0x0012, 0x0078,
+ 0x42fc, 0x6017, 0x0016, 0x0078, 0x42fc, 0x1078, 0x6c76, 0x793c,
+ 0x2160, 0x2009, 0x004a, 0x1078, 0x5591, 0x0078, 0x42fc, 0x007e,
+ 0x017e, 0x0c7e, 0x127e, 0x600f, 0x0000, 0x2c08, 0x2061, 0x6f10,
+ 0x2091, 0x8000, 0x6020, 0x8000, 0x6022, 0x6010, 0xa005, 0x0040,
+ 0x4342, 0xa080, 0x0003, 0x2102, 0x6112, 0x127f, 0x0c7f, 0x017f,
+ 0x007f, 0x007c, 0x6116, 0x6112, 0x0078, 0x433d, 0x0d7e, 0x2069,
+ 0x6f10, 0x6000, 0xd0d4, 0x0040, 0x435d, 0x6820, 0x8000, 0x6822,
+ 0xa086, 0x0001, 0x00c0, 0x4356, 0x2c00, 0x681e, 0x6804, 0xa084,
+ 0x0007, 0x0079, 0x4772, 0x0d7f, 0x007c, 0xc0d5, 0x6002, 0x6818,
+ 0xa005, 0x0040, 0x436f, 0x6056, 0x605b, 0x0000, 0x007e, 0x2c00,
+ 0x681a, 0x0d7f, 0x685a, 0x2069, 0x6f10, 0x0078, 0x434d, 0x6056,
+ 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x434d, 0x007e, 0x017e,
0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061,
- 0x70b6, 0x6020, 0x8000, 0x6022, 0x6010, 0xa005, 0x0040, 0x4459,
- 0xa080, 0x0003, 0x2102, 0x6112, 0x127f, 0x0c7f, 0x017f, 0x007f,
- 0x007c, 0x6116, 0x6112, 0x0078, 0x4454, 0x0d7e, 0x2069, 0x70b6,
- 0x6000, 0xd0d4, 0x0040, 0x4472, 0x6820, 0x8000, 0x6822, 0xa086,
- 0x0001, 0x00c0, 0x446d, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007,
- 0x0079, 0x489b, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0040, 0x4484,
- 0x6056, 0x605b, 0x0000, 0x007e, 0x2c00, 0x681a, 0x0d7f, 0x685a,
- 0x2069, 0x70b6, 0x0078, 0x4464, 0x6056, 0x605a, 0x2c00, 0x681a,
- 0x681e, 0x0078, 0x4464, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091,
- 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x70b6, 0x6020, 0x8000,
- 0x6022, 0x6008, 0xa005, 0x0040, 0x44a6, 0xa080, 0x0003, 0x2102,
- 0x610a, 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x610e, 0x610a,
- 0x0078, 0x44a1, 0x0c7e, 0x600f, 0x0000, 0x2c08, 0x2061, 0x70b6,
- 0x6034, 0xa005, 0x0040, 0x44ba, 0xa080, 0x0003, 0x2102, 0x6136,
- 0x0c7f, 0x007c, 0x613a, 0x6136, 0x0078, 0x44b8, 0x0f7e, 0x0e7e,
- 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2071, 0x70b6,
- 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x4520,
- 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x451b, 0x703c,
- 0xac06, 0x00c0, 0x44e0, 0x6003, 0x000a, 0x630a, 0x0078, 0x451b,
- 0x7038, 0xac36, 0x00c0, 0x44e6, 0x660c, 0x763a, 0x7034, 0xac36,
- 0x00c0, 0x44f4, 0x2c00, 0xaf36, 0x0040, 0x44f2, 0x2f00, 0x7036,
- 0x0078, 0x44f4, 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
- 0x0040, 0x44fd, 0x7e0e, 0x0078, 0x44fe, 0x2678, 0x600f, 0x0000,
- 0x1078, 0x6216, 0x0040, 0x4516, 0x6010, 0x2068, 0x601c, 0xa086,
- 0x0003, 0x00c0, 0x4529, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
- 0x1078, 0x63d5, 0x1078, 0x3720, 0x1078, 0x632a, 0x1078, 0x6337,
- 0x0c7f, 0x0078, 0x44cd, 0x2c78, 0x600c, 0x2060, 0x0078, 0x44cd,
- 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x450b, 0x1078, 0x6d80,
- 0x0078, 0x4516, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x0f7e, 0x2031,
- 0x0000, 0x127e, 0x2091, 0x8000, 0x2079, 0x70b6, 0x7838, 0xa065,
- 0x0040, 0x4569, 0x600c, 0x007e, 0x600f, 0x0000, 0x783c, 0xac06,
- 0x00c0, 0x4550, 0x6003, 0x000a, 0x630a, 0x2c30, 0x0078, 0x4566,
- 0x1078, 0x6216, 0x0040, 0x4564, 0x6010, 0x2068, 0x601c, 0xa086,
- 0x0003, 0x00c0, 0x4572, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
- 0x1078, 0x3720, 0x1078, 0x632a, 0x1078, 0x6337, 0x007f, 0x0078,
- 0x453f, 0x7e3a, 0x7e36, 0x127f, 0x0f7f, 0x0d7f, 0x0c7f, 0x067f,
- 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x455b, 0x1078,
- 0x6d80, 0x0078, 0x4564, 0x027e, 0x1078, 0x458f, 0x1078, 0x4628,
- 0x027f, 0x007c, 0x0f7e, 0x127e, 0x2079, 0x70b6, 0x2091, 0x8000,
- 0x1078, 0x46bf, 0x1078, 0x4727, 0x127f, 0x0f7f, 0x007c, 0x0f7e,
- 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000,
- 0x2071, 0x70b6, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0040, 0x4617,
- 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x4612, 0x7024,
- 0xac06, 0x00c0, 0x45d5, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040,
- 0x45d0, 0x1078, 0x4f8e, 0x68c3, 0x0000, 0x1078, 0x5405, 0x7027,
+ 0x6f10, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040, 0x4391,
+ 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f, 0x007f,
+ 0x007c, 0x610e, 0x610a, 0x0078, 0x438c, 0x0c7e, 0x600f, 0x0000,
+ 0x2c08, 0x2061, 0x6f10, 0x6034, 0xa005, 0x0040, 0x43a5, 0xa080,
+ 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136, 0x0078,
+ 0x43a3, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e,
+ 0x127e, 0x2071, 0x6f10, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000,
+ 0x8cff, 0x0040, 0x4405, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206,
+ 0x00c0, 0x4400, 0x703c, 0xac06, 0x00c0, 0x43cb, 0x6003, 0x000a,
+ 0x630a, 0x0078, 0x4400, 0x7038, 0xac36, 0x00c0, 0x43d1, 0x660c,
+ 0x763a, 0x7034, 0xac36, 0x00c0, 0x43df, 0x2c00, 0xaf36, 0x0040,
+ 0x43dd, 0x2f00, 0x7036, 0x0078, 0x43df, 0x7037, 0x0000, 0x660c,
+ 0x067e, 0x2c00, 0xaf06, 0x0040, 0x43e8, 0x7e0e, 0x0078, 0x43e9,
+ 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003,
+ 0x00c0, 0x440e, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078,
+ 0x36a1, 0x1078, 0x6276, 0x1078, 0x6283, 0x0c7f, 0x0078, 0x43b8,
+ 0x2c78, 0x600c, 0x2060, 0x0078, 0x43b8, 0x127f, 0x007f, 0x027f,
+ 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
+ 0x0006, 0x00c0, 0x43f2, 0x1078, 0x6bb3, 0x0078, 0x43fb, 0x007e,
+ 0x067e, 0x0c7e, 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091,
+ 0x8000, 0x2079, 0x6f10, 0x7838, 0xa065, 0x0040, 0x444a, 0x600c,
+ 0x007e, 0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x4435, 0x6003,
+ 0x000a, 0x630a, 0x2c30, 0x0078, 0x4447, 0x6010, 0x2068, 0x601c,
+ 0xa086, 0x0003, 0x00c0, 0x4453, 0x6837, 0x0103, 0x6b4a, 0x6847,
+ 0x0000, 0x1078, 0x36a1, 0x1078, 0x6276, 0x1078, 0x6283, 0x007f,
+ 0x0078, 0x4424, 0x7e3a, 0x7e36, 0x127f, 0x0f7f, 0x0d7f, 0x0c7f,
+ 0x067f, 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x443c,
+ 0x1078, 0x6bb3, 0x0078, 0x4445, 0x027e, 0x1078, 0x4470, 0x1078,
+ 0x4507, 0x027f, 0x007c, 0x0f7e, 0x127e, 0x2079, 0x6f10, 0x2091,
+ 0x8000, 0x1078, 0x4599, 0x1078, 0x4601, 0x127f, 0x0f7f, 0x007c,
+ 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091,
+ 0x8000, 0x2071, 0x6f10, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0040,
+ 0x44f6, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x44f1,
+ 0x7024, 0xac06, 0x00c0, 0x44b6, 0x2069, 0x0100, 0x68c0, 0xa005,
+ 0x0040, 0x44b1, 0x1078, 0x4fe5, 0x68c3, 0x0000, 0x1078, 0x54a4,
+ 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000,
+ 0x0040, 0x44a6, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
+ 0x6824, 0xd084, 0x0040, 0x44ae, 0x6827, 0x0001, 0x037f, 0x0078,
+ 0x44b6, 0x6003, 0x0009, 0x630a, 0x0078, 0x44f1, 0x7014, 0xac36,
+ 0x00c0, 0x44bc, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0, 0x44ca,
+ 0x2c00, 0xaf36, 0x0040, 0x44c8, 0x2f00, 0x7012, 0x0078, 0x44ca,
+ 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x44d3,
+ 0x7e0e, 0x0078, 0x44d4, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068,
+ 0x1078, 0x6120, 0x0040, 0x44ea, 0x601c, 0xa086, 0x0003, 0x00c0,
+ 0x44fe, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36a1,
+ 0x1078, 0x6276, 0x1078, 0x6283, 0x1078, 0x5374, 0x0c7f, 0x0078,
+ 0x447e, 0x2c78, 0x600c, 0x2060, 0x0078, 0x447e, 0x127f, 0x007f,
+ 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
+ 0x0006, 0x00c0, 0x44e1, 0x1078, 0x6bb3, 0x0078, 0x44ea, 0x0c7e,
+ 0x007e, 0x127e, 0x2091, 0x8000, 0xa280, 0x6e00, 0x2004, 0xa065,
+ 0x0040, 0x4595, 0x0f7e, 0x0e7e, 0x0d7e, 0x067e, 0x2071, 0x6f10,
+ 0x6654, 0x7018, 0xac06, 0x00c0, 0x451e, 0x761a, 0x701c, 0xac06,
+ 0x00c0, 0x452a, 0x86ff, 0x00c0, 0x4529, 0x7018, 0x701e, 0x0078,
+ 0x452a, 0x761e, 0x6058, 0xa07d, 0x0040, 0x452f, 0x7e56, 0xa6ed,
+ 0x0000, 0x0040, 0x4535, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b,
+ 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x33c4, 0x0040,
+ 0x4591, 0x7624, 0x86ff, 0x0040, 0x4586, 0xa680, 0x0004, 0x2004,
+ 0xad06, 0x00c0, 0x4586, 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005,
+ 0x0040, 0x457d, 0x1078, 0x4fe5, 0x68c3, 0x0000, 0x1078, 0x54a4,
+ 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000,
+ 0x0040, 0x4566, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
+ 0x6824, 0xd084, 0x0040, 0x456e, 0x6827, 0x0001, 0x037f, 0x0d7f,
+ 0x0c7e, 0x603c, 0xa005, 0x0040, 0x4577, 0x8001, 0x603e, 0x2660,
+ 0x1078, 0x6283, 0x0c7f, 0x0078, 0x4586, 0x0d7f, 0x0c7e, 0x2660,
+ 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078, 0x453d, 0x6837, 0x0103,
+ 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36a1, 0x1078, 0x5374, 0x0078,
+ 0x453d, 0x067f, 0x0d7f, 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f,
+ 0x007c, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814,
+ 0xa065, 0x0040, 0x45f1, 0x600c, 0x007e, 0x600f, 0x0000, 0x7824,
+ 0xac06, 0x00c0, 0x45d6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040,
+ 0x45d0, 0x1078, 0x4fe5, 0x68c3, 0x0000, 0x1078, 0x54a4, 0x7827,
0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040,
0x45c5, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824,
- 0xd084, 0x0040, 0x45cd, 0x6827, 0x0001, 0x037f, 0x0078, 0x45d5,
- 0x6003, 0x0009, 0x630a, 0x0078, 0x4612, 0x7014, 0xac36, 0x00c0,
- 0x45db, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0, 0x45e9, 0x2c00,
- 0xaf36, 0x0040, 0x45e7, 0x2f00, 0x7012, 0x0078, 0x45e9, 0x7013,
- 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x45f2, 0x7e0e,
- 0x0078, 0x45f3, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078,
- 0x6216, 0x0040, 0x460b, 0x601c, 0xa086, 0x0003, 0x00c0, 0x461f,
- 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x63d5, 0x1078,
- 0x3720, 0x1078, 0x632a, 0x1078, 0x6337, 0x1078, 0x52d5, 0x0c7f,
- 0x0078, 0x459d, 0x2c78, 0x600c, 0x2060, 0x0078, 0x459d, 0x127f,
- 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c,
- 0xa086, 0x0006, 0x00c0, 0x4600, 0x1078, 0x6d80, 0x0078, 0x460b,
- 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0xa280, 0x7020, 0x2004,
- 0xa065, 0x0040, 0x46bb, 0x0f7e, 0x0e7e, 0x0d7e, 0x067e, 0x2071,
- 0x70b6, 0x6654, 0x7018, 0xac06, 0x00c0, 0x463f, 0x761a, 0x701c,
- 0xac06, 0x00c0, 0x464b, 0x86ff, 0x00c0, 0x464a, 0x7018, 0x701e,
- 0x0078, 0x464b, 0x761e, 0x6058, 0xa07d, 0x0040, 0x4650, 0x7e56,
- 0xa6ed, 0x0000, 0x0040, 0x4656, 0x2f00, 0x685a, 0x6057, 0x0000,
- 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x3448,
- 0x0040, 0x46b7, 0x7624, 0x86ff, 0x0040, 0x46a7, 0xa680, 0x0004,
- 0x2004, 0xad06, 0x00c0, 0x46a7, 0x0d7e, 0x2069, 0x0100, 0x68c0,
- 0xa005, 0x0040, 0x469e, 0x1078, 0x4f8e, 0x68c3, 0x0000, 0x1078,
- 0x5405, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384,
- 0x1000, 0x0040, 0x4687, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069,
- 0x0100, 0x6824, 0xd084, 0x0040, 0x468f, 0x6827, 0x0001, 0x037f,
- 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x4698, 0x8001, 0x603e,
- 0x2660, 0x1078, 0x6337, 0x0c7f, 0x0078, 0x46a7, 0x0d7f, 0x0c7e,
- 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078, 0x465e, 0x8dff,
- 0x0040, 0x46b3, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078,
- 0x63d5, 0x1078, 0x3720, 0x1078, 0x52d5, 0x0078, 0x465e, 0x067f,
- 0x0d7f, 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f, 0x007c, 0x007e,
- 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814, 0xa065, 0x0040,
- 0x4717, 0x600c, 0x007e, 0x600f, 0x0000, 0x7824, 0xac06, 0x00c0,
- 0x46fc, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x46f6, 0x1078,
- 0x4f8e, 0x68c3, 0x0000, 0x1078, 0x5405, 0x7827, 0x0000, 0x037e,
- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x46eb, 0x6803,
- 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
- 0x46f3, 0x6827, 0x0001, 0x037f, 0x0078, 0x46fc, 0x6003, 0x0009,
- 0x630a, 0x2c30, 0x0078, 0x4714, 0x6010, 0x2068, 0x1078, 0x6216,
- 0x0040, 0x4710, 0x601c, 0xa086, 0x0003, 0x00c0, 0x471e, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3720, 0x1078, 0x632a,
- 0x1078, 0x6337, 0x1078, 0x52d5, 0x007f, 0x0078, 0x46c6, 0x7e16,
- 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x4707, 0x1078, 0x6d80, 0x0078, 0x4710, 0x007e,
- 0x067e, 0x0c7e, 0x0d7e, 0x7818, 0xa065, 0x0040, 0x4793, 0x6054,
- 0x007e, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc,
- 0x6002, 0x1078, 0x3448, 0x0040, 0x4790, 0x7e24, 0x86ff, 0x0040,
- 0x4782, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x4782, 0x0d7e,
- 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4779, 0x1078, 0x4f8e,
- 0x68c3, 0x0000, 0x1078, 0x5405, 0x7827, 0x0000, 0x037e, 0x2069,
- 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x4762, 0x6803, 0x0100,
- 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x476a,
- 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040,
- 0x4773, 0x8001, 0x603e, 0x2660, 0x1078, 0x6337, 0x0c7f, 0x0078,
- 0x4782, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f,
- 0x0078, 0x4739, 0x8dff, 0x0040, 0x478c, 0x6837, 0x0103, 0x6b4a,
- 0x6847, 0x0000, 0x1078, 0x3720, 0x1078, 0x52d5, 0x0078, 0x4739,
- 0x007f, 0x0078, 0x472c, 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f,
- 0x007f, 0x007c, 0x0e7e, 0x0c7e, 0x2071, 0x70b6, 0x7004, 0xa084,
- 0x0007, 0x0079, 0x47a3, 0x47ad, 0x47b0, 0x47c9, 0x47e5, 0x482a,
- 0x47ad, 0x47ad, 0x47ab, 0x1078, 0x1288, 0x0c7f, 0x0e7f, 0x007c,
- 0x7024, 0xa065, 0x0040, 0x47be, 0x7020, 0x8001, 0x7022, 0x600c,
- 0xa015, 0x0040, 0x47c5, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000,
- 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7216, 0x7212, 0x0078,
- 0x47be, 0x6018, 0x2060, 0x1078, 0x3448, 0x6000, 0xc0dc, 0x6002,
- 0x7020, 0x8001, 0x7022, 0x0040, 0x47da, 0x6054, 0xa015, 0x0040,
- 0x47e1, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f,
- 0x007c, 0x7218, 0x721e, 0x0078, 0x47da, 0x7024, 0xa065, 0x0040,
- 0x4827, 0x700c, 0xac06, 0x00c0, 0x47fc, 0x1078, 0x52d5, 0x600c,
- 0xa015, 0x0040, 0x47f8, 0x720e, 0x600f, 0x0000, 0x0078, 0x4825,
- 0x720e, 0x720a, 0x0078, 0x4825, 0x7014, 0xac06, 0x00c0, 0x480f,
- 0x1078, 0x52d5, 0x600c, 0xa015, 0x0040, 0x480b, 0x7216, 0x600f,
- 0x0000, 0x0078, 0x4825, 0x7216, 0x7212, 0x0078, 0x4825, 0x6018,
- 0x2060, 0x1078, 0x3448, 0x6000, 0xc0dc, 0x6002, 0x1078, 0x52d5,
- 0x701c, 0xa065, 0x0040, 0x4825, 0x6054, 0xa015, 0x0040, 0x4823,
- 0x721e, 0x0078, 0x4825, 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f,
- 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x4837, 0x1078, 0x52d5,
- 0x600c, 0xa015, 0x0040, 0x483e, 0x720e, 0x600f, 0x0000, 0x1078,
- 0x5405, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a,
- 0x0078, 0x4837, 0x0d7e, 0x2069, 0x70b6, 0x6830, 0xa084, 0x0003,
- 0x0079, 0x484a, 0x4850, 0x4852, 0x4878, 0x4850, 0x1078, 0x1288,
- 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040, 0x486e,
- 0x683c, 0xa065, 0x0040, 0x4863, 0x600c, 0xa015, 0x0040, 0x486a,
- 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0c7f,
- 0x0d7f, 0x007c, 0x683a, 0x6836, 0x0078, 0x4863, 0x6843, 0x0000,
- 0x6838, 0xa065, 0x0040, 0x4863, 0x6003, 0x0003, 0x0078, 0x4863,
- 0x0c7e, 0x6843, 0x0000, 0x6847, 0x0000, 0x683c, 0xa065, 0x0040,
- 0x4890, 0x600c, 0xa015, 0x0040, 0x488c, 0x6a3a, 0x600f, 0x0000,
- 0x683f, 0x0000, 0x0078, 0x4890, 0x683f, 0x0000, 0x683a, 0x6836,
- 0x0c7f, 0x0d7f, 0x007c, 0x0d7e, 0x2069, 0x70b6, 0x6804, 0xa084,
- 0x0007, 0x0079, 0x489b, 0x48a5, 0x4932, 0x4932, 0x4932, 0x4932,
- 0x4934, 0x4932, 0x48a3, 0x1078, 0x1288, 0x6820, 0xa005, 0x00c0,
- 0x48ab, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x48ba,
- 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x497a, 0x0c7f,
- 0x0d7f, 0x007c, 0x6814, 0xa065, 0x0040, 0x48c8, 0x6807, 0x0001,
- 0x6826, 0x682b, 0x0000, 0x1078, 0x497a, 0x0c7f, 0x0d7f, 0x007c,
- 0x0e7e, 0x037e, 0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x492d, 0x704c,
- 0xa00d, 0x0040, 0x48d7, 0x7088, 0xa005, 0x0040, 0x48ef, 0x7054,
- 0xa075, 0x0040, 0x48e0, 0xa20e, 0x0040, 0x492d, 0x0078, 0x48e5,
- 0x6818, 0xa20e, 0x0040, 0x492d, 0x2070, 0x704c, 0xa00d, 0x0040,
- 0x48d7, 0x7088, 0xa005, 0x00c0, 0x48d7, 0x2e00, 0x681e, 0x733c,
- 0x7038, 0xa302, 0x00c8, 0x48d7, 0x1078, 0x55a4, 0x0040, 0x492d,
- 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a, 0xa180, 0x0015, 0x2004,
- 0xa08a, 0x199a, 0x0048, 0x4906, 0x2001, 0x1999, 0x8003, 0x801b,
- 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xa1e0,
- 0x2207, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078,
- 0x4c94, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26,
- 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040,
- 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f,
- 0x0078, 0x492b, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040,
- 0x4940, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x497a,
- 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0x70b6, 0x6830,
- 0xa086, 0x0000, 0x00c0, 0x4961, 0x6838, 0xa07d, 0x0040, 0x4961,
- 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x127e, 0x0f7e, 0x2091,
- 0x2200, 0x027f, 0x1078, 0x19b3, 0x00c0, 0x4964, 0x127f, 0x1078,
- 0x4ec1, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843, 0x0000, 0x7803,
- 0x0002, 0x780c, 0xa015, 0x0040, 0x4976, 0x6a3a, 0x780f, 0x0000,
- 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x4961, 0x683a, 0x6836,
- 0x0078, 0x4970, 0x601c, 0xa084, 0x0007, 0x1079, 0x4980, 0x007c,
- 0x4988, 0x498d, 0x4bcc, 0x4c64, 0x498d, 0x4bcc, 0x4c64, 0x4988,
- 0x1078, 0x479a, 0x1078, 0x4893, 0x007c, 0x157e, 0x137e, 0x147e,
- 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0030, 0x10c8, 0x1288, 0x6118,
- 0x2178, 0x79a0, 0xa1f8, 0x2207, 0x2f0c, 0xa18c, 0x00ff, 0x2c78,
- 0x2061, 0x0100, 0x619a, 0x1079, 0x49ab, 0x0f7f, 0x0c7f, 0x147f,
- 0x137f, 0x157f, 0x007c, 0x49dd, 0x4a15, 0x4a2d, 0x4a66, 0x4a93,
- 0x4a9b, 0x4abc, 0x4acd, 0x4ade, 0x4ae6, 0x4af7, 0x4ae6, 0x4b3f,
- 0x4acd, 0x4b60, 0x4b68, 0x4ade, 0x4b68, 0x4b79, 0x49db, 0x49db,
- 0x49db, 0x49db, 0x49db, 0x49db, 0x49db, 0x49db, 0x49db, 0x49db,
- 0x49db, 0x49db, 0x504c, 0x5061, 0x49db, 0x49db, 0x49db, 0x49db,
- 0x4abc, 0x4ae6, 0x49db, 0x4a2d, 0x4a66, 0x49db, 0x551f, 0x4ae6,
- 0x49db, 0x5542, 0x4ae6, 0x1078, 0x1288, 0x20a1, 0x020b, 0x1078,
- 0x4b8e, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x0d7e, 0x2069, 0x6f51,
- 0x6804, 0xd084, 0x0040, 0x49f7, 0x6828, 0x20a3, 0x0000, 0x017e,
- 0x1078, 0x1feb, 0x21a2, 0x017f, 0x0d7f, 0x0078, 0x49fc, 0x0d7f,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x6f05,
- 0x53a6, 0x20a9, 0x0004, 0x2099, 0x6f01, 0x53a6, 0x20a3, 0x0000,
- 0x6030, 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x001c, 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b, 0x1078,
- 0x4b8e, 0x20a3, 0x0500, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6030,
- 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, 0x6f05, 0x53a6,
- 0x60c3, 0x0010, 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b, 0x1078,
- 0x4b8e, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x2099, 0x70a0, 0x20a9,
- 0x0008, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x6f05, 0x53a6, 0x20a9,
- 0x0004, 0x2099, 0x6f01, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000,
- 0x00f0, 0x4a46, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4a4c,
- 0x2099, 0x70a8, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3,
- 0x0000, 0x00f0, 0x4a57, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0,
- 0x4a5d, 0x60c3, 0x0074, 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b,
- 0x1078, 0x4b8e, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800,
- 0x20a3, 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
- 0x0f7e, 0x2079, 0x6f51, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4a82,
- 0xa085, 0x0020, 0xd1a4, 0x0040, 0x4a87, 0xa085, 0x0010, 0xa085,
- 0x0002, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4b8e, 0x20a3,
- 0x5000, 0x0078, 0x4a33, 0x20a1, 0x020b, 0x1078, 0x4b8e, 0x20a3,
- 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
- 0x0014, 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4bad,
- 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0004, 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b, 0x1078,
- 0x4bad, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3,
- 0x2a00, 0x60c3, 0x0008, 0x1078, 0x4f7a, 0x007c, 0x20a1, 0x020b,
- 0x1078, 0x4bad, 0x20a3, 0x0200, 0x0078, 0x4a33, 0x20a1, 0x020b,
- 0x1078, 0x4bad, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003,
- 0x7810, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x4f7a, 0x007c, 0x0d7e,
- 0x20a1, 0x020b, 0x1078, 0x4bad, 0x20a3, 0x0210, 0x20a3, 0x0014,
- 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0,
- 0x4b1d, 0x6998, 0xa184, 0xc000, 0x00c0, 0x4b19, 0xd1ec, 0x0040,
- 0x4b15, 0x20a3, 0x2100, 0x0078, 0x4b1f, 0x20a3, 0x0100, 0x0078,
- 0x4b1f, 0x20a3, 0x0400, 0x0078, 0x4b1f, 0x20a3, 0x0700, 0xa006,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x6f51,
- 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4b2f, 0xa085, 0x0020, 0xd1a4,
- 0x0040, 0x4b34, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a2,
- 0x20a2, 0x60c3, 0x0014, 0x1078, 0x4f7a, 0x0d7f, 0x007c, 0x20a1,
- 0x020b, 0x1078, 0x4bad, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3,
- 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
+ 0xd084, 0x0040, 0x45cd, 0x6827, 0x0001, 0x037f, 0x0078, 0x45d6,
+ 0x6003, 0x0009, 0x630a, 0x2c30, 0x0078, 0x45ee, 0x6010, 0x2068,
+ 0x1078, 0x6120, 0x0040, 0x45ea, 0x601c, 0xa086, 0x0003, 0x00c0,
+ 0x45f8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36a1,
+ 0x1078, 0x6276, 0x1078, 0x6283, 0x1078, 0x5374, 0x007f, 0x0078,
+ 0x45a0, 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c,
+ 0x601c, 0xa086, 0x0006, 0x00c0, 0x45e1, 0x1078, 0x6bb3, 0x0078,
+ 0x45ea, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x7818, 0xa065, 0x0040,
+ 0x466a, 0x6054, 0x007e, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000,
+ 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x33c4, 0x0040, 0x4667, 0x7e24,
+ 0x86ff, 0x0040, 0x465c, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0,
+ 0x465c, 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4653,
+ 0x1078, 0x4fe5, 0x68c3, 0x0000, 0x1078, 0x54a4, 0x7827, 0x0000,
+ 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x463c,
+ 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
+ 0x0040, 0x4644, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c,
+ 0xa005, 0x0040, 0x464d, 0x8001, 0x603e, 0x2660, 0x1078, 0x6283,
+ 0x0c7f, 0x0078, 0x465c, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009,
+ 0x630a, 0x0c7f, 0x0078, 0x4613, 0x6837, 0x0103, 0x6b4a, 0x6847,
+ 0x0000, 0x1078, 0x36a1, 0x1078, 0x5374, 0x0078, 0x4613, 0x007f,
+ 0x0078, 0x4606, 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f, 0x007f,
+ 0x007c, 0x0e7e, 0x0c7e, 0x2071, 0x6f10, 0x7004, 0xa084, 0x0007,
+ 0x0079, 0x467a, 0x4684, 0x4687, 0x46a0, 0x46bc, 0x4701, 0x4684,
+ 0x4682, 0x4682, 0x1078, 0x12b7, 0x0c7f, 0x0e7f, 0x007c, 0x7024,
+ 0xa065, 0x0040, 0x4695, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015,
+ 0x0040, 0x469c, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000, 0x7027,
+ 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7216, 0x7212, 0x0078, 0x4695,
+ 0x6018, 0x2060, 0x1078, 0x33c4, 0x6000, 0xc0dc, 0x6002, 0x7020,
+ 0x8001, 0x7022, 0x0040, 0x46b1, 0x6054, 0xa015, 0x0040, 0x46b8,
+ 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c,
+ 0x7218, 0x721e, 0x0078, 0x46b1, 0x7024, 0xa065, 0x0040, 0x46fe,
+ 0x700c, 0xac06, 0x00c0, 0x46d3, 0x1078, 0x5374, 0x600c, 0xa015,
+ 0x0040, 0x46cf, 0x720e, 0x600f, 0x0000, 0x0078, 0x46fc, 0x720e,
+ 0x720a, 0x0078, 0x46fc, 0x7014, 0xac06, 0x00c0, 0x46e6, 0x1078,
+ 0x5374, 0x600c, 0xa015, 0x0040, 0x46e2, 0x7216, 0x600f, 0x0000,
+ 0x0078, 0x46fc, 0x7216, 0x7212, 0x0078, 0x46fc, 0x6018, 0x2060,
+ 0x1078, 0x33c4, 0x6000, 0xc0dc, 0x6002, 0x1078, 0x5374, 0x701c,
+ 0xa065, 0x0040, 0x46fc, 0x6054, 0xa015, 0x0040, 0x46fa, 0x721e,
+ 0x0078, 0x46fc, 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f, 0x0e7f,
+ 0x007c, 0x7024, 0xa065, 0x0040, 0x470e, 0x1078, 0x5374, 0x600c,
+ 0xa015, 0x0040, 0x4715, 0x720e, 0x600f, 0x0000, 0x1078, 0x54a4,
+ 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a, 0x0078,
+ 0x470e, 0x0d7e, 0x2069, 0x6f10, 0x6830, 0xa084, 0x0003, 0x0079,
+ 0x4721, 0x4727, 0x4729, 0x474f, 0x4725, 0x1078, 0x12b7, 0x0d7f,
+ 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040, 0x4745, 0x683c,
+ 0xa065, 0x0040, 0x473a, 0x600c, 0xa015, 0x0040, 0x4741, 0x6a3a,
+ 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0c7f, 0x0d7f,
+ 0x007c, 0x683a, 0x6836, 0x0078, 0x473a, 0x6843, 0x0000, 0x6838,
+ 0xa065, 0x0040, 0x473a, 0x6003, 0x0003, 0x0078, 0x473a, 0x0c7e,
+ 0x6843, 0x0000, 0x6847, 0x0000, 0x683c, 0xa065, 0x0040, 0x4767,
+ 0x600c, 0xa015, 0x0040, 0x4763, 0x6a3a, 0x600f, 0x0000, 0x683f,
+ 0x0000, 0x0078, 0x4767, 0x683f, 0x0000, 0x683a, 0x6836, 0x0c7f,
+ 0x0d7f, 0x007c, 0x0d7e, 0x2069, 0x6f10, 0x6804, 0xa084, 0x0007,
+ 0x0079, 0x4772, 0x477c, 0x4810, 0x4810, 0x4810, 0x4810, 0x4812,
+ 0x477a, 0x477a, 0x1078, 0x12b7, 0x6820, 0xa005, 0x00c0, 0x4782,
+ 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x4791, 0x6807,
+ 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x4858, 0x0c7f, 0x0d7f,
+ 0x007c, 0x6814, 0xa065, 0x0040, 0x479f, 0x6807, 0x0001, 0x6826,
+ 0x682b, 0x0000, 0x1078, 0x4858, 0x0c7f, 0x0d7f, 0x007c, 0x0e7e,
+ 0x037e, 0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x480b, 0x704c, 0xa00d,
+ 0x0040, 0x47ae, 0x7088, 0xa005, 0x0040, 0x47c6, 0x7054, 0xa075,
+ 0x0040, 0x47b7, 0xa20e, 0x0040, 0x480b, 0x0078, 0x47bc, 0x6818,
+ 0xa20e, 0x0040, 0x480b, 0x2070, 0x704c, 0xa00d, 0x0040, 0x47ae,
+ 0x7088, 0xa005, 0x00c0, 0x47ae, 0x2e00, 0x681e, 0x733c, 0x7038,
+ 0xa302, 0x00c8, 0x47ae, 0x1078, 0x5539, 0x0040, 0x480b, 0x8318,
+ 0x733e, 0x6112, 0x2e10, 0x621a, 0xa180, 0x0015, 0x2004, 0xa08a,
+ 0x199a, 0x0048, 0x47dd, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b,
+ 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xd1bc, 0x0040,
+ 0x47ed, 0x2009, 0x0000, 0x0078, 0x47f2, 0xa1e0, 0x2091, 0x2c0c,
+ 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078, 0x4c44, 0x7300,
+ 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000,
+ 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x0f7f, 0x0e7f,
+ 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f, 0x0078, 0x4809,
+ 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x481e, 0x6807,
+ 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x4858, 0x0c7f, 0x0d7f,
+ 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0x6f10, 0x6830, 0xa086, 0x0000,
+ 0x00c0, 0x483f, 0x6838, 0xa07d, 0x0040, 0x483f, 0x6833, 0x0001,
+ 0x683e, 0x6847, 0x0000, 0x127e, 0x0f7e, 0x2091, 0x2200, 0x027f,
+ 0x1078, 0x1838, 0x00c0, 0x4842, 0x127f, 0x1078, 0x4ed5, 0x0d7f,
+ 0x0f7f, 0x007c, 0x127f, 0x6843, 0x0000, 0x7803, 0x0002, 0x780c,
+ 0xa015, 0x0040, 0x4854, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000,
+ 0x683f, 0x0000, 0x0078, 0x483f, 0x683a, 0x6836, 0x0078, 0x484e,
+ 0x601c, 0xa084, 0x000f, 0x1079, 0x485e, 0x007c, 0x4867, 0x4869,
+ 0x4b33, 0x4c15, 0x4869, 0x4b33, 0x4c15, 0x4867, 0x4869, 0x1078,
+ 0x12b7, 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a,
+ 0x0024, 0x10c8, 0x12b7, 0x6118, 0x2178, 0x79a0, 0xa1f8, 0x2091,
+ 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0x1079,
+ 0x4887, 0x0f7f, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x48ad,
+ 0x48ec, 0x4904, 0x494c, 0x4979, 0x4981, 0x49a2, 0x49b3, 0x49c4,
+ 0x49cc, 0x49dd, 0x49cc, 0x4a25, 0x49b3, 0x4a55, 0x4a5d, 0x49c4,
+ 0x4a5d, 0x4a6e, 0x48ab, 0x48ab, 0x48ab, 0x48ab, 0x48ab, 0x48ab,
+ 0x48ab, 0x48ab, 0x48ab, 0x48ab, 0x48ab, 0x48ab, 0x50b8, 0x50cd,
+ 0x50f0, 0x5114, 0x49a2, 0x1078, 0x12b7, 0x20a1, 0x020b, 0x1078,
+ 0x4a83, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x0d7e, 0x2069, 0x6d51,
+ 0x6804, 0xd084, 0x0040, 0x48ce, 0x6828, 0x017e, 0x2069, 0x6d00,
+ 0x694c, 0xa106, 0x017f, 0x00c0, 0x48ce, 0x20a3, 0x0000, 0x6030,
+ 0xa084, 0x00ff, 0x20a2, 0x0d7f, 0x0078, 0x48d3, 0x0d7f, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x6d05, 0x53a6,
+ 0x20a9, 0x0004, 0x2099, 0x6d01, 0x53a6, 0x20a3, 0x0000, 0x6030,
+ 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
+ 0x001c, 0x1078, 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a83,
+ 0x20a3, 0x0500, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6030, 0xa084,
+ 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, 0x6d05, 0x53a6, 0x60c3,
+ 0x0010, 0x1078, 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a83,
+ 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x4917,
+ 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0078, 0x4919, 0x20a3,
+ 0x0300, 0x20a3, 0x0000, 0x2099, 0x6f00, 0x20a9, 0x0008, 0x53a6,
+ 0x20a9, 0x0004, 0x2099, 0x6d05, 0x53a6, 0x20a9, 0x0004, 0x2099,
+ 0x6d01, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x492c,
+ 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4932, 0x2099, 0x6f08,
+ 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0,
+ 0x493d, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x4943, 0x60c3,
+ 0x0074, 0x1078, 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a83,
+ 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000,
+ 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079,
+ 0x6d51, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4968, 0xa085, 0x0020,
+ 0xd1a4, 0x0040, 0x496d, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x4fd1,
+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a83, 0x20a3, 0x5000, 0x0078,
+ 0x4919, 0x20a1, 0x020b, 0x1078, 0x4a83, 0x20a3, 0x2110, 0x20a3,
+ 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0x20a3, 0x0000, 0x20a3,
0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x4f7a, 0x007c,
- 0x20a1, 0x020b, 0x1078, 0x4bad, 0x20a3, 0x0200, 0x0078, 0x49e3,
- 0x20a1, 0x020b, 0x1078, 0x4bad, 0x20a3, 0x0100, 0x20a3, 0x0000,
- 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x1078, 0x4f7a,
- 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, 0x020b, 0x1078,
- 0x4bad, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x000b, 0x20a3,
- 0x0000, 0x60c3, 0x0008, 0x1078, 0x4f7a, 0x007c, 0x027e, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x20a3, 0x2200, 0x6298, 0x22a2, 0x20a3,
- 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0129, 0x20a3, 0x0000, 0x1078,
- 0x4f69, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x20a3, 0x2300, 0x6298, 0x22a2, 0x20a3, 0x0000,
- 0x6230, 0x22a2, 0x20a3, 0x0198, 0x20a3, 0x0000, 0x1078, 0x4f69,
- 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x027f, 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a,
- 0x0085, 0x1048, 0x1288, 0xa08a, 0x008c, 0x10c8, 0x1288, 0x6118,
- 0x2178, 0x79a0, 0xa1f8, 0x2207, 0x2f0c, 0xa18c, 0x00ff, 0x2c78,
- 0x2061, 0x0100, 0x619a, 0xa082, 0x0085, 0x1079, 0x4bea, 0x0f7f,
- 0x0c7f, 0x007c, 0x4bf3, 0x4bfe, 0x4c18, 0x4bf1, 0x4bf1, 0x4bf1,
- 0x4bf3, 0x1078, 0x1288, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4c2b,
- 0x60c3, 0x0000, 0x1078, 0x4f7a, 0x147f, 0x007c, 0x147e, 0x20a1,
- 0x020b, 0x1078, 0x4c3e, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808,
- 0x20a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x000c, 0x1078, 0x4f7a, 0x147f, 0x007c,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x4c51, 0x20a3, 0x0003, 0x20a3,
- 0x0300, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078,
- 0x4f7a, 0x147f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x20a3, 0x8100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
- 0x20a3, 0x0009, 0x20a3, 0x0000, 0x0078, 0x4b9f, 0x027e, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x20a3, 0x8400, 0x6298, 0x22a2, 0x20a3,
- 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078,
- 0x4bbe, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x8500,
- 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1,
- 0x20a3, 0x0000, 0x0078, 0x4bbe, 0x0c7e, 0x0f7e, 0x2c78, 0x7804,
- 0xa08a, 0x0040, 0x1048, 0x1288, 0xa08a, 0x0050, 0x10c8, 0x1288,
- 0x7918, 0x2160, 0x61a0, 0xa1e0, 0x2207, 0x2c0c, 0xa18c, 0x00ff,
- 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x1079, 0x4c82, 0x0f7f,
- 0x0c7f, 0x007c, 0x4c94, 0x4d46, 0x4d07, 0x4e55, 0x4c92, 0x4c92,
- 0x4c92, 0x4c92, 0x4c92, 0x4c92, 0x4c92, 0x51ee, 0x51ff, 0x5210,
- 0x5221, 0x4c92, 0x1078, 0x1288, 0x0d7e, 0x157e, 0x147e, 0x20a1,
- 0x020b, 0x1078, 0x4ce7, 0x7910, 0x2168, 0x6944, 0xa18c, 0x00ff,
+ 0x0022, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
+ 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4afa, 0x20a3, 0x0200,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004,
+ 0x1078, 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4afa, 0x20a3,
+ 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3,
+ 0x0008, 0x1078, 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4afa,
+ 0x20a3, 0x0200, 0x0078, 0x4919, 0x20a1, 0x020b, 0x1078, 0x4afa,
+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x7810, 0x20a2,
+ 0x60c3, 0x0008, 0x1078, 0x4fd1, 0x007c, 0x0d7e, 0x20a1, 0x020b,
+ 0x1078, 0x4afa, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0800,
+ 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0, 0x4a03, 0x6998,
+ 0xa184, 0xc000, 0x00c0, 0x49ff, 0xd1ec, 0x0040, 0x49fb, 0x20a3,
+ 0x2100, 0x0078, 0x4a05, 0x20a3, 0x0100, 0x0078, 0x4a05, 0x20a3,
+ 0x0400, 0x0078, 0x4a05, 0x20a3, 0x0700, 0xa006, 0x20a2, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x6d51, 0x7904, 0x0f7f,
+ 0xd1ac, 0x00c0, 0x4a15, 0xa085, 0x0020, 0xd1a4, 0x0040, 0x4a1a,
+ 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a2, 0x20a2, 0x60c3,
+ 0x0014, 0x1078, 0x4fd1, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078,
+ 0x4afa, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x6018,
+ 0x0d7e, 0x2068, 0x6804, 0x0d7f, 0xa084, 0x00ff, 0xa086, 0x0006,
+ 0x0040, 0x4a3e, 0x20a3, 0x0400, 0x0078, 0x4a40, 0x20a3, 0x0100,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x60c3, 0x0014, 0x1078, 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x1078,
+ 0x4afa, 0x20a3, 0x0200, 0x0078, 0x48b3, 0x20a1, 0x020b, 0x1078,
+ 0x4afa, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3,
+ 0x2a00, 0x60c3, 0x0008, 0x1078, 0x4fd1, 0x007c, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x20a1, 0x020b, 0x1078, 0x4afa, 0x20a3, 0x0100,
+ 0x20a3, 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008,
+ 0x1078, 0x4fd1, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x7818, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e, 0x00c0, 0x4a96,
+ 0x20a3, 0x22ff, 0x20a3, 0xfffe, 0x0078, 0x4ac4, 0xa286, 0x007f,
+ 0x00c0, 0x4aa1, 0x0d7e, 0x20a3, 0x22ff, 0x20a3, 0xfffd, 0x0078,
+ 0x4ab8, 0xd2bc, 0x0040, 0x4ac0, 0xa286, 0x0080, 0x0d7e, 0x00c0,
+ 0x4aaf, 0x20a3, 0x22ff, 0x20a3, 0xfffc, 0x0078, 0x4ab8, 0xa2e8,
+ 0x6e00, 0x2d6c, 0x6810, 0xa085, 0x2200, 0x20a2, 0x6814, 0x20a2,
+ 0x2069, 0x6d19, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x4ac8,
+ 0x20a3, 0x2200, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
+ 0x20a3, 0x0129, 0x20a3, 0x0000, 0x1078, 0x4fc0, 0x22a2, 0x20a3,
+ 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x027f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
+ 0x02ff, 0x2011, 0xfffc, 0x22a2, 0x0d7e, 0x2069, 0x6d19, 0x2da6,
+ 0x8d68, 0x2da6, 0x0d7f, 0x20a3, 0x2029, 0x20a3, 0x0000, 0x0078,
+ 0x4acc, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3,
+ 0x0000, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818,
+ 0xa080, 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x4b19, 0x0d7e,
+ 0xa0e8, 0x6e00, 0x2d6c, 0x6810, 0xa085, 0x2300, 0x20a2, 0x6814,
+ 0x20a2, 0x2069, 0x6d19, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078,
+ 0x4b21, 0x20a3, 0x2300, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230,
+ 0x22a2, 0x20a3, 0x0198, 0x20a3, 0x0000, 0x1078, 0x4fc0, 0x22a2,
+ 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x027f, 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0025,
+ 0x1048, 0x12b7, 0xa08a, 0x002c, 0x10c8, 0x12b7, 0x6118, 0x2178,
+ 0x79a0, 0xa1f8, 0x2091, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061,
+ 0x0100, 0x619a, 0xa082, 0x0025, 0x1079, 0x4b51, 0x0f7f, 0x0c7f,
+ 0x007c, 0x4b5a, 0x4b65, 0x4b7f, 0x4b58, 0x4b58, 0x4b58, 0x4b5a,
+ 0x1078, 0x12b7, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4b8e, 0x60c3,
+ 0x0000, 0x1078, 0x4fd1, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b,
+ 0x1078, 0x4bbb, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2,
+ 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x000c, 0x1078, 0x4fd1, 0x147f, 0x007c, 0x147e,
+ 0x20a1, 0x020b, 0x1078, 0x4be8, 0x20a3, 0x0003, 0x20a3, 0x0300,
+ 0x60c3, 0x0004, 0x1078, 0x4fd1, 0x147f, 0x007c, 0x027e, 0x20e1,
+ 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092,
+ 0x007e, 0x0048, 0x4bad, 0x0d7e, 0xa0e8, 0x6e00, 0x2d6c, 0x6810,
+ 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x6d19, 0x2da6,
+ 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x4bb5, 0x20a3, 0x8100, 0x6298,
+ 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0009, 0x20a3,
+ 0x0000, 0x0078, 0x4acc, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x4bda,
+ 0x0d7e, 0xa0e8, 0x6e00, 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2,
+ 0x6814, 0x20a2, 0x2069, 0x6d19, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
+ 0x0078, 0x4be2, 0x20a3, 0x8400, 0x6298, 0x22a2, 0x20a3, 0x0000,
+ 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, 0x4b25,
+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
+ 0x2004, 0xa092, 0x007e, 0x0048, 0x4c07, 0x0d7e, 0xa0e8, 0x6e00,
+ 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069,
+ 0x6d19, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x4c0f, 0x20a3,
+ 0x8500, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
+ 0x00d1, 0x20a3, 0x0000, 0x0078, 0x4b25, 0x0c7e, 0x0f7e, 0x2c78,
+ 0x7804, 0xa08a, 0x0040, 0x1048, 0x12b7, 0xa08a, 0x004f, 0x10c8,
+ 0x12b7, 0x7918, 0x2160, 0x61a0, 0xa1e0, 0x2091, 0x2c0c, 0xa18c,
+ 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x1079, 0x4c33,
+ 0x0f7f, 0x0c7f, 0x007c, 0x4c44, 0x4d28, 0x4cd0, 0x4e50, 0x4c42,
+ 0x4c42, 0x4c42, 0x4c42, 0x4c42, 0x4c42, 0x4c42, 0x528d, 0x529e,
+ 0x52af, 0x52c0, 0x1078, 0x12b7, 0x0d7e, 0x157e, 0x147e, 0x20a1,
+ 0x020b, 0x1078, 0x4c93, 0x7910, 0x2168, 0x6944, 0xa18c, 0x00ff,
0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x0006,
- 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x4cb1, 0x20a3, 0x0002, 0x0078,
- 0x4cbd, 0xd1b4, 0x0040, 0x4cb8, 0x20a3, 0x0001, 0x0078, 0x4cbd,
- 0x20a3, 0x0000, 0x2230, 0x0078, 0x4cbf, 0x6a80, 0x6e7c, 0x20a9,
+ 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x4c61, 0x20a3, 0x0002, 0x0078,
+ 0x4c6d, 0xd1b4, 0x0040, 0x4c68, 0x20a3, 0x0001, 0x0078, 0x4c6d,
+ 0x20a3, 0x0000, 0x2230, 0x0078, 0x4c6f, 0x6a80, 0x6e7c, 0x20a9,
0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000, 0x00f0,
- 0x4cc3, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014,
- 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0x70d2, 0x2003,
- 0x07d0, 0x2001, 0x70d1, 0x2003, 0x0009, 0x2001, 0x70d7, 0x2003,
- 0x0002, 0x1078, 0x14b7, 0x147f, 0x157f, 0x0d7f, 0x007c, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210,
- 0xa294, 0x00ff, 0x2202, 0x8217, 0xa006, 0x20a3, 0x0600, 0x6198,
- 0x21a2, 0x20a2, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a2, 0x22a2,
- 0x20a2, 0x2fa2, 0x20a3, 0xffff, 0x20a2, 0x20a2, 0x007c, 0x0d7e,
- 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4d27, 0x7810,
- 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c,
- 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c,
- 0x1078, 0x4f7a, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0500, 0x6298, 0x22a2,
- 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000,
- 0x1078, 0x4f69, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e,
- 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4e36, 0x7810, 0x2068,
- 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084,
- 0xf000, 0x00c0, 0x4d63, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079,
- 0x4d6b, 0x0078, 0x4d66, 0xa006, 0x1079, 0x4d6b, 0x147f, 0x137f,
- 0x157f, 0x0d7f, 0x007c, 0x4d75, 0x4dd7, 0x4ddb, 0x4dfe, 0x4e0b,
- 0x4e1d, 0x4e21, 0x4d73, 0x1078, 0x1288, 0x017e, 0x037e, 0x694c,
- 0xa18c, 0x0003, 0xa186, 0x0000, 0x00c0, 0x4d88, 0x6b78, 0x23a2,
- 0x6868, 0x20a2, 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x4e02,
- 0xa186, 0x0001, 0x00c0, 0x4dd2, 0x6b78, 0x23a2, 0x6868, 0x20a2,
- 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c, 0x20a2,
- 0x2009, 0x0018, 0xa384, 0x0300, 0x0040, 0x4dd1, 0xd3c4, 0x0040,
- 0x4da3, 0x687c, 0xa108, 0xd3cc, 0x0040, 0x4da8, 0x6874, 0xa108,
- 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2,
- 0x8000, 0x00f0, 0x4dad, 0x157f, 0x22a2, 0x22a2, 0x22a2, 0xa184,
- 0x0003, 0x0040, 0x4dd1, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230,
- 0x22a2, 0x20a3, 0x0898, 0x20a2, 0x1078, 0x4f69, 0x22a2, 0x20a3,
- 0x0000, 0x61c2, 0x037f, 0x017f, 0x1078, 0x4f7a, 0x007c, 0x20a3,
- 0x0008, 0x0078, 0x4e00, 0x20a3, 0x0302, 0x22a2, 0x22a2, 0x22a2,
- 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2,
- 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a,
- 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x22a2, 0x60c3, 0x0032, 0x1078, 0x4f7a, 0x007c, 0x20a3, 0x0028,
- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018,
- 0x1078, 0x4f7a, 0x007c, 0x20a3, 0x0100, 0x22a2, 0x22a2, 0x22a2,
- 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x60c3, 0x0020, 0x1078, 0x4f7a, 0x007c, 0x20a3, 0x0008, 0x0078,
- 0x4e00, 0x037e, 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff,
- 0x8001, 0x00c0, 0x4e2f, 0x22a2, 0x037f, 0x0078, 0x4e00, 0x20a3,
- 0x0800, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x4e02, 0x027e, 0x20e1,
+ 0x4c73, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014,
+ 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0x6f2c, 0x2003,
+ 0x07d0, 0x2001, 0x6f2b, 0x2003, 0x0009, 0x1078, 0x14e4, 0x147f,
+ 0x157f, 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18,
+ 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217,
+ 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x4cb9, 0x0d7e,
+ 0xa0e8, 0x6e00, 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814,
+ 0x20a2, 0x2069, 0x6d19, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078,
+ 0x4cc1, 0x20a3, 0x0600, 0x6198, 0x21a2, 0x20a3, 0x0000, 0x6130,
+ 0x21a2, 0x20a3, 0x0829, 0x20a3, 0x0000, 0x22a2, 0x20a3, 0x0000,
+ 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x007c,
+ 0x0d7e, 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4cf0,
+ 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2,
+ 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3,
+ 0x000c, 0x1078, 0x4fd1, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c,
+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
+ 0x2004, 0xd0bc, 0x0040, 0x4d0e, 0x0d7e, 0xa0e8, 0x6e00, 0x2d6c,
+ 0x6810, 0xa085, 0x0500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x6d19,
+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x4d16, 0x20a3, 0x0500,
+ 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0889,
+ 0x20a3, 0x0000, 0x1078, 0x4fc0, 0x22a2, 0x20a3, 0x0000, 0x7a08,
+ 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c,
+ 0x0d7e, 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4e18,
+ 0x7810, 0x2068, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
+ 0x7810, 0xa084, 0xf000, 0x00c0, 0x4d45, 0x7810, 0xa084, 0x0700,
+ 0x8007, 0x1079, 0x4d4d, 0x0078, 0x4d48, 0xa006, 0x1079, 0x4d4d,
+ 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x4d57, 0x4db9, 0x4dbd,
+ 0x4de0, 0x4ded, 0x4dff, 0x4e03, 0x4d55, 0x1078, 0x12b7, 0x017e,
+ 0x037e, 0x694c, 0xa18c, 0x0003, 0xa186, 0x0000, 0x00c0, 0x4d6a,
+ 0x6b78, 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x037f, 0x017f,
+ 0x0078, 0x4de4, 0xa186, 0x0001, 0x00c0, 0x4db4, 0x6b78, 0x23a2,
+ 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2,
+ 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0040, 0x4db3,
+ 0xd3c4, 0x0040, 0x4d85, 0x687c, 0xa108, 0xd3cc, 0x0040, 0x4d8a,
+ 0x6874, 0xa108, 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c,
+ 0x831f, 0x23a2, 0x8000, 0x00f0, 0x4d8f, 0x157f, 0x22a2, 0x22a2,
+ 0x22a2, 0xa184, 0x0003, 0x0040, 0x4db3, 0x20a1, 0x020b, 0x20e1,
0x9080, 0x20e1, 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3,
- 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3, 0x0000, 0x1078,
- 0x4f69, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e,
- 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079,
- 0x4e68, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c,
- 0x4e70, 0x4e70, 0x4e72, 0x4e70, 0x4e70, 0x4e70, 0x4e97, 0x4e70,
- 0x1078, 0x1288, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912,
- 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x4ea1, 0x0d7e, 0x2069,
- 0x6f51, 0x6804, 0xd0bc, 0x0040, 0x4e8c, 0x682c, 0xa084, 0x00ff,
- 0x8007, 0x20a2, 0x0078, 0x4e8e, 0x20a3, 0x3f00, 0x0d7f, 0x22a2,
- 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x4f7a, 0x007c, 0x20a1,
- 0x020b, 0x2009, 0x0003, 0x1078, 0x4ea1, 0x20a3, 0x7f00, 0x0078,
- 0x4e8f, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0100,
- 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0888,
- 0xa18d, 0x0008, 0x21a2, 0x1078, 0x4f69, 0x22a2, 0x20a3, 0x0000,
- 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
- 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x2061, 0x0100, 0x2071, 0x6f00,
- 0x6130, 0x7818, 0x2068, 0x68a0, 0xa080, 0x2207, 0x2014, 0xa294,
- 0x00ff, 0x781c, 0xa086, 0x0006, 0x0040, 0x4f08, 0x6063, 0x0100,
- 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0809, 0x6077, 0x0008,
- 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f,
- 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014,
- 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c,
- 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x629e,
- 0x6017, 0x0016, 0x1078, 0x4209, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c,
- 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0040,
- 0x4f3d, 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073,
+ 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a2, 0x1078, 0x4fc0,
+ 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x037f, 0x017f, 0x1078, 0x4fd1,
+ 0x007c, 0x20a3, 0x0008, 0x0078, 0x4de2, 0x20a3, 0x0302, 0x22a2,
+ 0x22a2, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2,
+ 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2,
+ 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2,
+ 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x1078, 0x4fd1, 0x007c,
+ 0x20a3, 0x0028, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
+ 0x60c3, 0x0018, 0x1078, 0x4fd1, 0x007c, 0x20a3, 0x0100, 0x22a2,
+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2,
+ 0x22a2, 0x22a2, 0x60c3, 0x0020, 0x1078, 0x4fd1, 0x007c, 0x20a3,
+ 0x0008, 0x0078, 0x4de2, 0x037e, 0x7b10, 0xa384, 0xff00, 0x7812,
+ 0xa384, 0x00ff, 0x8001, 0x00c0, 0x4e11, 0x22a2, 0x037f, 0x0078,
+ 0x4de2, 0x20a3, 0x0800, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x4de4,
+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
+ 0x2004, 0xd0bc, 0x0040, 0x4e36, 0x0d7e, 0xa0e8, 0x6e00, 0x2d6c,
+ 0x6810, 0xa085, 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x6d19,
+ 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x4e3e, 0x20a3, 0x0700,
+ 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898,
+ 0x20a3, 0x0000, 0x1078, 0x4fc0, 0x22a2, 0x20a3, 0x0000, 0x7a08,
+ 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c,
+ 0x0d7e, 0x157e, 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084,
+ 0x0700, 0x8007, 0x1079, 0x4e63, 0x037f, 0x017f, 0x147f, 0x137f,
+ 0x157f, 0x0d7f, 0x007c, 0x4e6b, 0x4e6b, 0x4e6d, 0x4e6b, 0x4e6b,
+ 0x4e6b, 0x4e92, 0x4e6b, 0x1078, 0x12b7, 0x7910, 0xa18c, 0xf8ff,
+ 0xa18d, 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078,
+ 0x4e9c, 0x0d7e, 0x2069, 0x6d51, 0x6804, 0xd0bc, 0x0040, 0x4e87,
+ 0x682c, 0xa084, 0x00ff, 0x8007, 0x20a2, 0x0078, 0x4e89, 0x20a3,
+ 0x3f00, 0x0d7f, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078,
+ 0x4fd1, 0x007c, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x4e9c,
+ 0x20a3, 0x7f00, 0x0078, 0x4e8a, 0x027e, 0x20e1, 0x9080, 0x20e1,
+ 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x4eba,
+ 0x0d7e, 0xa0e8, 0x6e00, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2,
+ 0x6814, 0x20a2, 0x2069, 0x6d19, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
+ 0x0078, 0x4ec2, 0x20a3, 0x0100, 0x6298, 0x22a2, 0x20a3, 0x0000,
+ 0x6230, 0x22a2, 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078,
+ 0x4fc0, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e,
+ 0x057e, 0x047e, 0x037e, 0x2061, 0x0100, 0x2071, 0x6d00, 0x6130,
+ 0x7818, 0x2068, 0x68a0, 0x2028, 0xd0bc, 0x00c0, 0x4eee, 0xa080,
+ 0x2091, 0x2014, 0xa294, 0x00ff, 0x0078, 0x4ef2, 0x6910, 0x6a14,
+ 0x7364, 0x7468, 0x781c, 0xa086, 0x0006, 0x0040, 0x4f3d, 0xd5bc,
+ 0x0040, 0x4f02, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e,
+ 0x0078, 0x4f08, 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e,
+ 0x6073, 0x0809, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff,
+ 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808,
+ 0x6086, 0x7810, 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
+ 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af,
+ 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048, 0x4f31, 0x2011,
+ 0x0000, 0x629e, 0x6017, 0x0016, 0x1078, 0x4151, 0x037f, 0x047f,
+ 0x057f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c,
+ 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x4f83, 0xd5bc, 0x0040,
+ 0x4f51, 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078,
+ 0x4f57, 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073,
0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e,
0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082,
0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c, 0x60ca,
0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000,
- 0x629e, 0x6017, 0x0012, 0x0078, 0x4f02, 0x6063, 0x0700, 0x6266,
- 0x606b, 0x0000, 0x616e, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c,
- 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000,
- 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e,
- 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036,
- 0x60af, 0x95d5, 0x60d7, 0x0000, 0x629e, 0x6017, 0x0016, 0x0078,
- 0x4f02, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff,
- 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0x70b6, 0x6843, 0x0001,
- 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
- 0x1078, 0x4f85, 0x1078, 0x41f9, 0x007c, 0x007e, 0x6014, 0xa084,
- 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, 0x0c7e,
- 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016,
- 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, 0x1078,
- 0x4204, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000,
- 0x0040, 0x4fd8, 0x1078, 0x4f8e, 0x6803, 0x1000, 0x6803, 0x0000,
- 0x0c7e, 0x2061, 0x70b6, 0x6128, 0xa192, 0x0002, 0x00c8, 0x4fc5,
- 0x8108, 0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x4fd3, 0x1078,
- 0x41f9, 0x1078, 0x4f85, 0x0078, 0x4fd3, 0x6124, 0xa1e5, 0x0000,
- 0x0040, 0x4fd0, 0x1078, 0x6e4a, 0x2009, 0x0014, 0x1078, 0x55fc,
- 0x0c7f, 0x0078, 0x4fd3, 0x027f, 0x017f, 0x0d7f, 0x0c7f, 0x007c,
- 0x1078, 0x3229, 0x0078, 0x4fd3, 0x0c7e, 0x0d7e, 0x0e7e, 0x017e,
- 0x027e, 0x1078, 0x4212, 0x2071, 0x70b6, 0x713c, 0x81ff, 0x0040,
- 0x5006, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000,
- 0x0040, 0x500c, 0x6803, 0x1000, 0x6803, 0x0000, 0x037e, 0x2019,
- 0x0001, 0x1078, 0x513b, 0x037f, 0x713c, 0x2160, 0x1078, 0x6e4a,
- 0x2009, 0x004a, 0x1078, 0x55fc, 0x0078, 0x5006, 0x027f, 0x017f,
- 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x7144, 0xa192, 0x0002, 0x00c8,
- 0x4ff6, 0x8108, 0x7146, 0x1078, 0x4209, 0x0078, 0x5006, 0x0e7e,
- 0x0d7e, 0x0c7e, 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x6018, 0x2068, 0x6ca0, 0x2071, 0x70b6, 0x7018, 0x2068,
- 0x8dff, 0x0040, 0x5043, 0x68a0, 0xa406, 0x0040, 0x5033, 0x6854,
- 0x2068, 0x0078, 0x5028, 0x6010, 0x2060, 0x643c, 0x6540, 0x6644,
- 0xa6b4, 0x000f, 0x2d60, 0x1078, 0x359f, 0x0040, 0x5043, 0x1078,
- 0x52d5, 0xa085, 0x0001, 0x127f, 0x007f, 0x047f, 0x057f, 0x067f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b,
- 0x1078, 0x4b8e, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x4f7a, 0x147f, 0x157f,
- 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4bad, 0x20a3,
- 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0x6f40, 0x2019,
- 0x6f41, 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0,
- 0x5071, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078,
- 0x4f7a, 0x147f, 0x157f, 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x70b6, 0x700c, 0x2060, 0x8cff, 0x0040,
- 0x50a0, 0x1078, 0x6364, 0x00c0, 0x5097, 0x1078, 0x57d2, 0x600c,
- 0x007e, 0x1078, 0x55d5, 0x1078, 0x52d5, 0x0c7f, 0x0078, 0x508e,
- 0x700f, 0x0000, 0x700b, 0x0000, 0x127f, 0x007f, 0x0c7f, 0x0e7f,
- 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e,
- 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140,
- 0x2071, 0x70b6, 0x7024, 0x2060, 0x8cff, 0x0040, 0x50f9, 0x1078,
- 0x4f8e, 0x68c3, 0x0000, 0x1078, 0x4204, 0x2009, 0x0013, 0x1078,
- 0x55fc, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x50dc, 0x6827,
- 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x50ee, 0x7803, 0x1000,
- 0x7803, 0x0000, 0x0078, 0x50ee, 0xd084, 0x0040, 0x50e3, 0x6827,
- 0x0001, 0x0078, 0x50e5, 0x00f0, 0x50cb, 0x7804, 0xa084, 0x1000,
- 0x0040, 0x50ee, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f,
- 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f,
- 0x007c, 0x2001, 0x6f00, 0x2004, 0xa096, 0x0001, 0x0040, 0x5131,
- 0xa096, 0x0004, 0x0040, 0x5131, 0x6817, 0x0008, 0x68c3, 0x0000,
- 0x2011, 0x31f0, 0x1078, 0x4187, 0x20a9, 0x01f4, 0x6824, 0xd094,
- 0x0040, 0x511f, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040,
- 0x5131, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x5131, 0xd084,
- 0x0040, 0x5126, 0x6827, 0x0001, 0x0078, 0x5128, 0x00f0, 0x510e,
- 0x7804, 0xa084, 0x1000, 0x0040, 0x5131, 0x7803, 0x0100, 0x7803,
- 0x0000, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x157f, 0x127f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e,
- 0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100,
- 0x2079, 0x0140, 0x2071, 0x70b6, 0x703c, 0x2060, 0x8cff, 0x0040,
- 0x5189, 0x6817, 0x0010, 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078,
- 0x4212, 0x1078, 0x1b80, 0xa39d, 0x0000, 0x00c0, 0x5163, 0x2009,
- 0x0049, 0x1078, 0x55fc, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040,
- 0x5176, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5188,
- 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x5188, 0xd094, 0x0040,
- 0x517d, 0x6827, 0x0002, 0x0078, 0x517f, 0x00f0, 0x5165, 0x7804,
- 0xa084, 0x1000, 0x0040, 0x5188, 0x7803, 0x0100, 0x7803, 0x0000,
- 0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x157f, 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069,
- 0x70b6, 0x6a06, 0x127f, 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091,
- 0x8000, 0x2069, 0x70b6, 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e,
- 0x0e7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2071, 0x70b6, 0x7614,
- 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x51e7, 0x601c,
- 0xa206, 0x00c0, 0x51e2, 0x7014, 0xac36, 0x00c0, 0x51c1, 0x660c,
- 0x7616, 0x7010, 0xac36, 0x00c0, 0x51cf, 0x2c00, 0xaf36, 0x0040,
- 0x51cd, 0x2f00, 0x7012, 0x0078, 0x51cf, 0x7013, 0x0000, 0x660c,
- 0x067e, 0x2c00, 0xaf06, 0x0040, 0x51d8, 0x7e0e, 0x0078, 0x51d9,
- 0x2678, 0x600f, 0x0000, 0x1078, 0x6337, 0x1078, 0x52d5, 0x0c7f,
- 0x0078, 0x51b4, 0x2c78, 0x600c, 0x2060, 0x0078, 0x51b4, 0x127f,
- 0x007f, 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x4ce7, 0x7810, 0x20a2, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0078, 0x5230, 0x157e,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x4ce7, 0x7810, 0x20a2, 0xa006,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x5230,
- 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4ce7, 0x7810, 0x20a2,
- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078,
- 0x5230, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4ce7, 0x7810,
- 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200,
- 0x1078, 0x52e0, 0x60c3, 0x0020, 0x1078, 0x4f7a, 0x147f, 0x157f,
- 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120,
- 0xd1b4, 0x00c0, 0x5248, 0xd1bc, 0x00c0, 0x5292, 0x0078, 0x52d2,
- 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069,
- 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000,
- 0x0040, 0x5289, 0x6020, 0xd0b4, 0x0040, 0x5289, 0x6024, 0xd094,
- 0x00c0, 0x5289, 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0,
- 0x5289, 0x00f0, 0x5255, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107,
- 0x6130, 0xa18c, 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b,
- 0xbc91, 0x6043, 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024,
- 0xd094, 0x00c0, 0x5288, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x527f,
- 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000,
- 0x0078, 0x52d2, 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e,
- 0x0d7e, 0x2069, 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804,
- 0xa084, 0x4000, 0x0040, 0x52cb, 0x6020, 0xd0bc, 0x0040, 0x52cb,
- 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x52cb, 0x00f0,
- 0x529f, 0x027e, 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c,
- 0x00ff, 0xa10d, 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043,
- 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000,
- 0x00c0, 0x52c5, 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f,
- 0x200b, 0x0000, 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0x70b6,
- 0x7020, 0xa005, 0x0040, 0x52de, 0x8001, 0x7022, 0x0e7f, 0x007c,
- 0x20a9, 0x0008, 0x20a2, 0x00f0, 0x52e2, 0x20a2, 0x20a2, 0x007c,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x70b6, 0x7614, 0x2660, 0x2678, 0x2039,
- 0x0001, 0x87ff, 0x0040, 0x5378, 0x8cff, 0x0040, 0x5378, 0x601c,
- 0xa086, 0x0006, 0x00c0, 0x5373, 0x88ff, 0x0040, 0x530f, 0x2800,
- 0xac06, 0x00c0, 0x5373, 0x2039, 0x0000, 0x0078, 0x5313, 0x6018,
- 0xa206, 0x00c0, 0x5373, 0x7024, 0xac06, 0x00c0, 0x5341, 0x2069,
- 0x0100, 0x68c0, 0xa005, 0x0040, 0x533c, 0x6817, 0x0008, 0x68c3,
- 0x0000, 0x1078, 0x5405, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
- 0x6b04, 0xa384, 0x1000, 0x0040, 0x5331, 0x6803, 0x0100, 0x6803,
- 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5339, 0x6827,
- 0x0001, 0x037f, 0x0078, 0x5341, 0x6003, 0x0009, 0x630a, 0x0078,
- 0x5373, 0x7014, 0xac36, 0x00c0, 0x5347, 0x660c, 0x7616, 0x7010,
- 0xac36, 0x00c0, 0x5355, 0x2c00, 0xaf36, 0x0040, 0x5353, 0x2f00,
- 0x7012, 0x0078, 0x5355, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00,
- 0xaf06, 0x0040, 0x535e, 0x7e0e, 0x0078, 0x535f, 0x2678, 0x600f,
- 0x0000, 0x6010, 0x2068, 0x1078, 0x6216, 0x0040, 0x5369, 0x1078,
- 0x6d80, 0x1078, 0x6337, 0x1078, 0x52d5, 0x88ff, 0x00c0, 0x5382,
- 0x0c7f, 0x0078, 0x52f9, 0x2c78, 0x600c, 0x2060, 0x0078, 0x52f9,
- 0xa006, 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f,
- 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078,
- 0x5379, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e,
- 0x127e, 0x2091, 0x8000, 0x2071, 0x70b6, 0x7638, 0x2660, 0x2678,
- 0x8cff, 0x0040, 0x53f4, 0x601c, 0xa086, 0x0006, 0x00c0, 0x53ef,
- 0x88ff, 0x0040, 0x53a9, 0x2800, 0xac06, 0x00c0, 0x53ef, 0x0078,
- 0x53ad, 0x6018, 0xa206, 0x00c0, 0x53ef, 0x703c, 0xac06, 0x00c0,
- 0x53bf, 0x037e, 0x2019, 0x0001, 0x1078, 0x513b, 0x7033, 0x0000,
- 0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x037f, 0x7038,
- 0xac36, 0x00c0, 0x53c5, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0,
- 0x53d3, 0x2c00, 0xaf36, 0x0040, 0x53d1, 0x2f00, 0x7036, 0x0078,
- 0x53d3, 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
- 0x53dc, 0x7e0e, 0x0078, 0x53dd, 0x2678, 0x600f, 0x0000, 0x6010,
- 0x2068, 0x1078, 0x6216, 0x0040, 0x53e7, 0x1078, 0x6d80, 0x1078,
- 0x6337, 0x88ff, 0x00c0, 0x53fe, 0x0c7f, 0x0078, 0x5398, 0x2c78,
- 0x600c, 0x2060, 0x0078, 0x5398, 0xa006, 0x127f, 0x007f, 0x027f,
- 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000,
- 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x53f5, 0x0e7e, 0x2071, 0x70b6,
- 0x2001, 0x6f00, 0x2004, 0xa086, 0x0002, 0x00c0, 0x5413, 0x7007,
- 0x0005, 0x0078, 0x5415, 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e,
- 0x0e7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000,
- 0x2071, 0x70b6, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040,
- 0x5455, 0x2200, 0xac06, 0x00c0, 0x5450, 0x7038, 0xac36, 0x00c0,
- 0x5433, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5441, 0x2c00,
- 0xaf36, 0x0040, 0x543f, 0x2f00, 0x7036, 0x0078, 0x5441, 0x7037,
- 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0040, 0x5449, 0x7e0e, 0x0078,
- 0x544a, 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0078, 0x5455,
- 0x2c78, 0x600c, 0x2060, 0x0078, 0x5426, 0x127f, 0x007f, 0x027f,
- 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e,
- 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x70b6,
- 0x760c, 0x2660, 0x2678, 0x8cff, 0x0040, 0x54ee, 0x6018, 0xa080,
- 0x0028, 0x2004, 0xa206, 0x00c0, 0x54e9, 0x7024, 0xac06, 0x00c0,
- 0x549c, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x549c, 0x1078,
- 0x4f8e, 0x68c3, 0x0000, 0x1078, 0x5405, 0x7027, 0x0000, 0x037e,
- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x5493, 0x6803,
- 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
- 0x549b, 0x6827, 0x0001, 0x037f, 0x700c, 0xac36, 0x00c0, 0x54a2,
- 0x660c, 0x760e, 0x7008, 0xac36, 0x00c0, 0x54b0, 0x2c00, 0xaf36,
- 0x0040, 0x54ae, 0x2f00, 0x700a, 0x0078, 0x54b0, 0x700b, 0x0000,
- 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x54b9, 0x7e0e, 0x0078,
- 0x54ba, 0x2678, 0x600f, 0x0000, 0x1078, 0x6350, 0x00c0, 0x54c4,
- 0x1078, 0x21c6, 0x0078, 0x54e0, 0x1078, 0x6364, 0x00c0, 0x54cc,
- 0x1078, 0x57d2, 0x0078, 0x54e0, 0x6010, 0x2068, 0x1078, 0x6216,
- 0x0040, 0x54e0, 0x601c, 0xa086, 0x0003, 0x00c0, 0x54f6, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3720, 0x1078, 0x632a,
- 0x6003, 0x0000, 0x1078, 0x6337, 0x1078, 0x52d5, 0x0c7f, 0x0078,
- 0x546b, 0x2c78, 0x600c, 0x2060, 0x0078, 0x546b, 0x127f, 0x007f,
- 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x54d7, 0x1078, 0x6d80, 0x0078, 0x54e0, 0x037e,
- 0x157e, 0x137e, 0x147e, 0x3908, 0xa006, 0xa190, 0x0020, 0x221c,
- 0xa39e, 0x20a0, 0x00c0, 0x5510, 0x8210, 0x8000, 0x0078, 0x5507,
- 0xa005, 0x0040, 0x551a, 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0,
- 0x22c8, 0x53a3, 0x147f, 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e,
- 0x20a1, 0x020b, 0x1078, 0x4bad, 0x20a3, 0x0200, 0x20a3, 0x0014,
- 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x514c,
- 0x20a3, 0x4f47, 0x20a3, 0x4943, 0x20a3, 0x2020, 0x20a3, 0x0004,
- 0x20a3, 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x1078, 0x4f7a,
- 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4bad, 0x20a3, 0x0210,
- 0x20a3, 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x4f7a, 0x007c, 0x2061,
- 0x7500, 0x2a70, 0x7060, 0x7046, 0x704b, 0x7500, 0x007c, 0x0e7e,
- 0x127e, 0x2071, 0x6f00, 0x2091, 0x8000, 0x7544, 0xa582, 0x0001,
- 0x0048, 0x55a1, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
- 0x558d, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5589, 0x0078,
- 0x557c, 0x2061, 0x7500, 0x0078, 0x557c, 0x6003, 0x0008, 0x8529,
- 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x559d, 0x754a,
- 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704b, 0x7500, 0x0078,
- 0x5598, 0xa006, 0x0078, 0x559a, 0x0e7e, 0x2071, 0x6f00, 0x7544,
- 0xa582, 0x0001, 0x0048, 0x55d2, 0x7048, 0x2060, 0x6000, 0xa086,
- 0x0000, 0x0040, 0x55bf, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8,
- 0x55bb, 0x0078, 0x55ae, 0x2061, 0x7500, 0x0078, 0x55ae, 0x6003,
- 0x0008, 0x8529, 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8,
- 0x55ce, 0x754a, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7500,
- 0x0078, 0x55ca, 0xa006, 0x0078, 0x55cc, 0xac82, 0x7500, 0x1048,
- 0x1288, 0x2001, 0x6f15, 0x2004, 0xac02, 0x10c8, 0x1288, 0xa006,
- 0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000,
- 0x6003, 0x0000, 0x2061, 0x6f00, 0x6044, 0x8000, 0x6046, 0xa086,
- 0x0001, 0x0040, 0x55f4, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x4893, 0x127f, 0x0078, 0x55f3, 0x601c, 0xa084, 0x0007, 0x0079,
- 0x5601, 0x5609, 0x5611, 0x562d, 0x5649, 0x63e1, 0x63fd, 0x6419,
- 0x5609, 0xa18e, 0x0047, 0x00c0, 0x5610, 0xa016, 0x1078, 0x1525,
- 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x561b, 0x067f, 0x007c, 0x562b, 0x56f6, 0x57e1, 0x562b, 0x562b,
- 0x562b, 0x562b, 0x562b, 0x56a5, 0x5a63, 0x562b, 0x562b, 0x562b,
- 0x562b, 0x562b, 0x562b, 0x1078, 0x1288, 0x067e, 0x6000, 0xa0b2,
- 0x0010, 0x10c8, 0x1288, 0x1079, 0x5637, 0x067f, 0x007c, 0x5647,
- 0x5647, 0x5647, 0x5647, 0x5647, 0x5647, 0x5647, 0x5647, 0x5ed3,
- 0x5f99, 0x5647, 0x5eec, 0x5f45, 0x5eec, 0x5f45, 0x5647, 0x1078,
- 0x1288, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x5653, 0x067f, 0x007c, 0x5663, 0x5aa1, 0x5b47, 0x5c09, 0x5d5d,
- 0x5663, 0x5663, 0x5663, 0x5a7f, 0x5e88, 0x5e8c, 0x5663, 0x5663,
- 0x5663, 0x5663, 0x5eb2, 0x1078, 0x1288, 0x20a9, 0x000e, 0x2e98,
- 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398,
- 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8,
- 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x5673, 0x0e7e,
- 0x1078, 0x6216, 0x0040, 0x568a, 0x6010, 0x2070, 0x7007, 0x0000,
- 0x7037, 0x0103, 0x0e7f, 0x1078, 0x55d5, 0x007c, 0x0d7e, 0x20a9,
- 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x00c0,
- 0x56a2, 0x6018, 0x2068, 0x7038, 0x680a, 0x703c, 0x680e, 0x6800,
- 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x567f, 0x2100, 0xa1b2, 0x0030,
- 0x10c8, 0x1288, 0x0079, 0x56ac, 0x56de, 0x56ea, 0x56de, 0x56de,
- 0x56de, 0x56de, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc,
- 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc,
- 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56dc,
- 0x56dc, 0x56dc, 0x56dc, 0x56de, 0x56dc, 0x56dc, 0x56dc, 0x56dc,
- 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x56de, 0x56dc, 0x56dc, 0x56dc,
- 0x56dc, 0x56dc, 0x56dc, 0x56dc, 0x1078, 0x1288, 0x6003, 0x0001,
- 0x6106, 0x1078, 0x448b, 0x127e, 0x2091, 0x8000, 0x1078, 0x4893,
- 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x448b, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x4893, 0x127f, 0x007c, 0x6004, 0xa0b2,
- 0x0030, 0x10c8, 0x1288, 0xa1b6, 0x0013, 0x00c0, 0x5702, 0x2008,
- 0x0079, 0x575a, 0xa1b6, 0x0027, 0x00c0, 0x5740, 0x1078, 0x479a,
- 0x6004, 0x1078, 0x6350, 0x0040, 0x5713, 0x1078, 0x6364, 0x0040,
- 0x573c, 0x0078, 0x5737, 0x1078, 0x21c6, 0x2001, 0x0007, 0x1078,
- 0x3477, 0x6018, 0xa080, 0x0028, 0x200c, 0x017e, 0x027e, 0x037e,
- 0x2110, 0x2019, 0x0028, 0x1078, 0x457b, 0x1078, 0x44be, 0x0c7e,
- 0x6018, 0xa065, 0x0040, 0x572e, 0x1078, 0x364c, 0x0c7f, 0x2c08,
- 0x1078, 0x6bfe, 0x037f, 0x027f, 0x017f, 0x1078, 0x34b3, 0x1078,
- 0x55d5, 0x1078, 0x4893, 0x007c, 0x1078, 0x57d2, 0x0078, 0x5737,
- 0xa186, 0x0014, 0x00c0, 0x573b, 0x1078, 0x479a, 0x1078, 0x21a8,
- 0x1078, 0x6350, 0x00c0, 0x5750, 0x1078, 0x21c6, 0x0078, 0x5737,
- 0x1078, 0x6364, 0x00c0, 0x5758, 0x1078, 0x57d2, 0x0078, 0x5737,
- 0x0078, 0x5737, 0x578c, 0x578e, 0x5792, 0x5796, 0x579a, 0x579e,
- 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a,
- 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a,
- 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a,
- 0x57a2, 0x57a8, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a, 0x578a,
- 0x578a, 0x578a, 0x57a8, 0x57a8, 0x578a, 0x578a, 0x578a, 0x578a,
- 0x578a, 0x578a, 0x1078, 0x1288, 0x0078, 0x57a8, 0x2001, 0x000b,
- 0x0078, 0x57b1, 0x2001, 0x0003, 0x0078, 0x57b1, 0x2001, 0x0005,
- 0x0078, 0x57b1, 0x2001, 0x0001, 0x0078, 0x57b1, 0x2001, 0x0009,
- 0x0078, 0x57b1, 0x1078, 0x1288, 0x0078, 0x57b0, 0x1078, 0x3477,
- 0x1078, 0x479a, 0x6003, 0x0002, 0x6017, 0x0028, 0x1078, 0x4893,
- 0x007c, 0x1078, 0x3477, 0x1078, 0x479a, 0x6003, 0x0002, 0x037e,
- 0x2019, 0x6f5c, 0x2304, 0xa084, 0xff00, 0x00c0, 0x57c3, 0x2019,
- 0x0028, 0x0078, 0x57cc, 0x8007, 0xa09a, 0x0004, 0x0048, 0x57bf,
- 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x1078, 0x4893,
- 0x0078, 0x57b0, 0x0e7e, 0x1078, 0x6216, 0x0040, 0x57df, 0x6010,
- 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f,
- 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff, 0x0d7f,
- 0xa0b2, 0x000c, 0x10c8, 0x1288, 0x6604, 0xa6b6, 0x0028, 0x00c0,
- 0x57f5, 0x1078, 0x6399, 0x0078, 0x581e, 0x6604, 0xa6b6, 0x0029,
- 0x00c0, 0x57fe, 0x1078, 0x63b3, 0x0078, 0x581e, 0x6604, 0xa6b6,
- 0x001f, 0x00c0, 0x5807, 0x1078, 0x5665, 0x0078, 0x581e, 0x6604,
- 0xa6b6, 0x0000, 0x00c0, 0x5810, 0x1078, 0x568e, 0x0078, 0x581e,
- 0xa1b6, 0x0015, 0x00c0, 0x5818, 0x1079, 0x5823, 0x0078, 0x581e,
- 0xa1b6, 0x0016, 0x00c0, 0x581f, 0x1079, 0x58ec, 0x007c, 0x1078,
- 0x5609, 0x0078, 0x581e, 0x582f, 0x5832, 0x582f, 0x5873, 0x582f,
- 0x589b, 0x582f, 0x582f, 0x582f, 0x58c4, 0x582f, 0x58da, 0x0005,
- 0x0005, 0x007c, 0x0e7e, 0x2071, 0x6f00, 0x7070, 0xa086, 0x0074,
- 0x00c0, 0x585c, 0x1078, 0x6bd6, 0x00c0, 0x584e, 0x0d7e, 0x6018,
- 0x2068, 0x1078, 0x5860, 0x0d7f, 0x2001, 0x0006, 0x1078, 0x3477,
- 0x1078, 0x21c6, 0x1078, 0x55d5, 0x0078, 0x585e, 0x2001, 0x000a,
- 0x1078, 0x3477, 0x1078, 0x21c6, 0x6003, 0x0001, 0x6007, 0x0001,
- 0x1078, 0x448b, 0x0078, 0x585e, 0x1078, 0x588b, 0x0e7f, 0x007c,
- 0x6800, 0xd084, 0x0040, 0x5872, 0x2001, 0x0000, 0x1078, 0x3463,
- 0x2069, 0x6f51, 0x6804, 0xd0a4, 0x0040, 0x5872, 0x2001, 0x0006,
- 0x1078, 0x3485, 0x007c, 0x2011, 0x6f1c, 0x2204, 0xa086, 0x0074,
- 0x00c0, 0x5888, 0x1078, 0x59b5, 0x2001, 0x0004, 0x1078, 0x3477,
- 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x448b, 0x0078, 0x588a,
- 0x1078, 0x588b, 0x007c, 0x2001, 0x6f00, 0x2004, 0xa086, 0x0003,
- 0x0040, 0x5896, 0x2001, 0x0007, 0x1078, 0x3477, 0x1078, 0x55d5,
- 0x1078, 0x21c6, 0x007c, 0x0e7e, 0x2071, 0x6f00, 0x7070, 0xa086,
- 0x0014, 0x00c0, 0x58c0, 0x7000, 0xa086, 0x0003, 0x00c0, 0x58aa,
- 0x1078, 0x2a74, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x3547, 0x1078,
- 0x5860, 0x0d7f, 0x1078, 0x59bf, 0x00c0, 0x58c0, 0x2001, 0x0006,
- 0x1078, 0x3477, 0x1078, 0x55d5, 0x1078, 0x21c6, 0x0078, 0x58c2,
- 0x1078, 0x588b, 0x0e7f, 0x007c, 0x2011, 0x6f1c, 0x2204, 0xa086,
- 0x0014, 0x00c0, 0x58d7, 0x2001, 0x0002, 0x1078, 0x3477, 0x6003,
- 0x0001, 0x6007, 0x0001, 0x1078, 0x448b, 0x0078, 0x58d9, 0x1078,
- 0x588b, 0x007c, 0x2011, 0x6f1c, 0x2204, 0xa086, 0x0004, 0x00c0,
- 0x58e9, 0x2001, 0x0007, 0x1078, 0x3477, 0x1078, 0x55d5, 0x0078,
- 0x58eb, 0x1078, 0x588b, 0x007c, 0x582f, 0x58f8, 0x582f, 0x591e,
- 0x582f, 0x596a, 0x582f, 0x582f, 0x582f, 0x597d, 0x582f, 0x5990,
- 0x0c7e, 0x1078, 0x59a3, 0x00c0, 0x590d, 0x2001, 0x0000, 0x1078,
- 0x3463, 0x2001, 0x0002, 0x1078, 0x3477, 0x6003, 0x0001, 0x6007,
- 0x0002, 0x1078, 0x448b, 0x0078, 0x591c, 0x2009, 0x738f, 0x2104,
- 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x591a, 0x1078, 0x55d5,
- 0x0078, 0x591c, 0x1078, 0x588b, 0x0c7f, 0x007c, 0x1078, 0x59b2,
- 0x00c0, 0x5932, 0x2001, 0x0000, 0x1078, 0x3463, 0x2001, 0x0002,
- 0x1078, 0x3477, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x448b,
- 0x0078, 0x5952, 0x2009, 0x738e, 0x2134, 0xa6b4, 0x00ff, 0xa686,
- 0x0005, 0x0040, 0x5953, 0x2009, 0x738f, 0x2104, 0xa084, 0xff00,
- 0xa086, 0x1900, 0x00c0, 0x5950, 0xa686, 0x0009, 0x0040, 0x5953,
- 0x2001, 0x0004, 0x1078, 0x3477, 0x1078, 0x55d5, 0x0078, 0x5952,
- 0x1078, 0x588b, 0x007c, 0x0d7e, 0x6018, 0x2068, 0x6840, 0xa084,
- 0x00ff, 0xa005, 0x0040, 0x5965, 0x8001, 0x6842, 0x6017, 0x000a,
- 0x6007, 0x0016, 0x0d7f, 0x0078, 0x5952, 0x1078, 0x21a8, 0x0d7f,
- 0x0078, 0x5950, 0x1078, 0x59b2, 0x00c0, 0x597a, 0x2001, 0x0004,
- 0x1078, 0x3477, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x448b,
- 0x0078, 0x597c, 0x1078, 0x588b, 0x007c, 0x1078, 0x59b2, 0x00c0,
- 0x598d, 0x2001, 0x0008, 0x1078, 0x3477, 0x6003, 0x0001, 0x6007,
- 0x0005, 0x1078, 0x448b, 0x0078, 0x598f, 0x1078, 0x588b, 0x007c,
- 0x1078, 0x59b2, 0x00c0, 0x59a0, 0x2001, 0x000a, 0x1078, 0x3477,
- 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x448b, 0x0078, 0x59a2,
- 0x1078, 0x588b, 0x007c, 0x2009, 0x738e, 0x2104, 0xa086, 0x0003,
- 0x00c0, 0x59b1, 0x2009, 0x738f, 0x2104, 0xa084, 0xff00, 0xa086,
- 0x2a00, 0x007c, 0xa085, 0x0001, 0x007c, 0x0c7e, 0x017e, 0xac88,
- 0x0006, 0x2164, 0x1078, 0x34dd, 0x017f, 0x0c7f, 0x007c, 0x0e7e,
- 0x2071, 0x738c, 0x7004, 0xa086, 0x0014, 0x00c0, 0x59e2, 0x7008,
- 0xa086, 0x0800, 0x00c0, 0x59e2, 0x700c, 0xd0ec, 0x0040, 0x59e0,
- 0xa084, 0x0f00, 0xa086, 0x0100, 0x00c0, 0x59e0, 0x7024, 0xd0a4,
- 0x0040, 0x59e0, 0xd08c, 0x0040, 0x59e0, 0xa006, 0x0078, 0x59e2,
- 0xa085, 0x0001, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x077e,
- 0x057e, 0x047e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2029,
- 0x70bf, 0x252c, 0x2021, 0x70c5, 0x2424, 0x2061, 0x7500, 0x2071,
- 0x6f00, 0x7244, 0x7060, 0xa202, 0x00c8, 0x5a39, 0x1078, 0x6ddc,
- 0x0040, 0x5a31, 0x671c, 0xa786, 0x0001, 0x0040, 0x5a31, 0xa786,
- 0x0007, 0x0040, 0x5a31, 0x2500, 0xac06, 0x0040, 0x5a31, 0x2400,
- 0xac06, 0x0040, 0x5a31, 0x0c7e, 0x6000, 0xa086, 0x0004, 0x00c0,
- 0x5a1b, 0x1078, 0x1629, 0x6010, 0x2068, 0x1078, 0x6216, 0x0040,
- 0x5a2e, 0xa786, 0x0003, 0x00c0, 0x5a43, 0x6837, 0x0103, 0x6b4a,
- 0x6847, 0x0000, 0x1078, 0x3720, 0x1078, 0x632a, 0x1078, 0x6337,
- 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5a39, 0x0078,
- 0x59f9, 0x127f, 0x007f, 0x027f, 0x047f, 0x057f, 0x077f, 0x0c7f,
- 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0, 0x5a25, 0x1078,
- 0x6d80, 0x0078, 0x5a2e, 0x220c, 0x2304, 0xa106, 0x00c0, 0x5a56,
- 0x8210, 0x8318, 0x00f0, 0x5a4b, 0xa006, 0x007c, 0x2304, 0xa102,
- 0x0048, 0x5a5e, 0x2001, 0x0001, 0x0078, 0x5a60, 0x2001, 0x0000,
- 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a, 0x0030, 0x10c8, 0x1288,
- 0x1078, 0x6350, 0x0040, 0x5a72, 0x1078, 0x6364, 0x0040, 0x5a7b,
- 0x0078, 0x5a74, 0x1078, 0x21c6, 0x1078, 0x479a, 0x1078, 0x55d5,
- 0x1078, 0x4893, 0x007c, 0x1078, 0x57d2, 0x0078, 0x5a74, 0xa182,
- 0x0040, 0x0079, 0x5a83, 0x5a93, 0x5a93, 0x5a93, 0x5a93, 0x5a93,
- 0x5a93, 0x5a93, 0x5a93, 0x5a93, 0x5a93, 0x5a93, 0x5a95, 0x5a95,
- 0x5a95, 0x5a95, 0x5a93, 0x1078, 0x1288, 0x6003, 0x0001, 0x6106,
- 0x1078, 0x443e, 0x127e, 0x2091, 0x8000, 0x1078, 0x4893, 0x127f,
- 0x007c, 0xa186, 0x0013, 0x00c0, 0x5aaa, 0x6004, 0xa082, 0x0040,
- 0x0079, 0x5b20, 0xa186, 0x0027, 0x00c0, 0x5ac7, 0x1078, 0x479a,
- 0x1078, 0x21a8, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6216, 0x0040,
- 0x5ac1, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3720, 0x1078,
- 0x632a, 0x0d7f, 0x1078, 0x55d5, 0x1078, 0x4893, 0x007c, 0xa186,
- 0x0014, 0x00c0, 0x5ad0, 0x6004, 0xa082, 0x0040, 0x0079, 0x5af0,
- 0xa186, 0x0047, 0x10c0, 0x1288, 0x2001, 0x0109, 0x2004, 0xd084,
- 0x0040, 0x5aed, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e,
- 0x1078, 0x42ff, 0x027f, 0x017f, 0x007f, 0x127f, 0x6000, 0xa086,
- 0x0002, 0x00c0, 0x5aed, 0x0078, 0x5b47, 0x1078, 0x5609, 0x007c,
- 0x5b02, 0x5b00, 0x5b00, 0x5b00, 0x5b00, 0x5b00, 0x5b00, 0x5b00,
- 0x5b00, 0x5b00, 0x5b00, 0x5b19, 0x5b19, 0x5b19, 0x5b19, 0x5b00,
- 0x1078, 0x1288, 0x1078, 0x479a, 0x0d7e, 0x6110, 0x2168, 0x1078,
- 0x6216, 0x0040, 0x5b13, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078,
- 0x3720, 0x1078, 0x632a, 0x0d7f, 0x1078, 0x55d5, 0x1078, 0x4893,
- 0x007c, 0x1078, 0x479a, 0x1078, 0x55d5, 0x1078, 0x4893, 0x007c,
- 0x5b32, 0x5b30, 0x5b30, 0x5b30, 0x5b30, 0x5b30, 0x5b30, 0x5b30,
- 0x5b30, 0x5b30, 0x5b30, 0x5b40, 0x5b40, 0x5b40, 0x5b40, 0x5b30,
- 0x1078, 0x1288, 0x1078, 0x479a, 0x6003, 0x0002, 0x1078, 0x4893,
- 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x007c,
- 0x1078, 0x479a, 0x6003, 0x000f, 0x1078, 0x4893, 0x007c, 0xa182,
- 0x0040, 0x0079, 0x5b4b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b,
- 0x5b5d, 0x5be6, 0x5bfe, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b, 0x5b5b,
- 0x5b5b, 0x5b5b, 0x5b5b, 0x1078, 0x1288, 0x0e7e, 0x0d7e, 0x2071,
- 0x738c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040,
- 0x5bca, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5b8f, 0xa186,
- 0x0028, 0x00c0, 0x5b79, 0x1078, 0x633e, 0x684b, 0x001c, 0x0078,
- 0x5b91, 0xd6dc, 0x0040, 0x5b84, 0x684b, 0x0015, 0x7318, 0x6b62,
- 0x731c, 0x6b5e, 0x0078, 0x5b91, 0xd6d4, 0x0040, 0x5b8f, 0x684b,
- 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5b91, 0x684b,
- 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4, 0x0040, 0x5ba4,
- 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7398, 0xad90,
- 0x0019, 0x1078, 0x6008, 0x037f, 0xd6cc, 0x0040, 0x5bda, 0x7124,
- 0x695a, 0xa192, 0x0021, 0x00c8, 0x5bb8, 0x2071, 0x7398, 0x831c,
- 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x6008, 0x0078, 0x5bda,
- 0x6838, 0xd0fc, 0x0040, 0x5bc1, 0x2009, 0x0020, 0x695a, 0x0078,
- 0x5bad, 0x0f7e, 0x2d78, 0x1078, 0x5fa0, 0x0f7f, 0x1078, 0x5ff5,
- 0x0078, 0x5bdc, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c,
- 0xd0ac, 0x0040, 0x5bda, 0x6810, 0x6914, 0xa115, 0x0040, 0x5bda,
- 0x1078, 0x5d4e, 0x1078, 0x3720, 0x6218, 0x2268, 0x6a3c, 0x8211,
- 0x6a3e, 0x0d7f, 0x0e7f, 0x1078, 0x55d5, 0x007c, 0x0f7e, 0x6003,
- 0x0003, 0x2079, 0x738c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
+ 0xa582, 0x0080, 0x0048, 0x4f7e, 0x2011, 0x0000, 0x629e, 0x6017,
+ 0x0012, 0x0078, 0x4f34, 0xd5bc, 0x0040, 0x4f8e, 0xa185, 0x0700,
+ 0x20a2, 0x6266, 0x636a, 0x646e, 0x0078, 0x4f94, 0x6063, 0x0700,
+ 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0898, 0x6077, 0x0000,
+ 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f,
+ 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010,
+ 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab,
+ 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048,
+ 0x4fbb, 0x2011, 0x0000, 0x629e, 0x6017, 0x0016, 0x0078, 0x4f34,
+ 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202,
+ 0x8217, 0x007c, 0x0d7e, 0x2069, 0x6f10, 0x6843, 0x0001, 0x0d7f,
+ 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078,
+ 0x4fdc, 0x1078, 0x4143, 0x007c, 0x007e, 0x6014, 0xa084, 0x0004,
+ 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, 0x0c7e, 0x2061,
+ 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016, 0x0c7f,
+ 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, 0x1078, 0x414c,
+ 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040,
+ 0x503a, 0x1078, 0x4fe5, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e,
+ 0x2061, 0x6f10, 0x6128, 0xa192, 0x0002, 0x00c8, 0x5027, 0x8108,
+ 0x612a, 0x613c, 0x0c7f, 0x81ff, 0x0040, 0x5035, 0x1078, 0x4143,
+ 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x5023, 0x6017,
+ 0x0012, 0x0078, 0x5035, 0x1078, 0x4fdc, 0x0078, 0x5035, 0x6124,
+ 0xa1e5, 0x0000, 0x0040, 0x5032, 0x1078, 0x6c76, 0x2009, 0x0014,
+ 0x1078, 0x5591, 0x0c7f, 0x0078, 0x5035, 0x027f, 0x017f, 0x0d7f,
+ 0x0c7f, 0x007c, 0x1078, 0x31cb, 0x0078, 0x5035, 0x0c7e, 0x0d7e,
+ 0x0e7e, 0x017e, 0x027e, 0x1078, 0x415a, 0x2071, 0x6f10, 0x713c,
+ 0x81ff, 0x0040, 0x5079, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904,
+ 0x017e, 0x017f, 0xa194, 0x4000, 0x0040, 0x507f, 0x6017, 0x0010,
+ 0x7144, 0xa192, 0x0002, 0x00c8, 0x5071, 0x8108, 0x7146, 0x1078,
+ 0x4151, 0x713c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0,
+ 0x506d, 0x6017, 0x0012, 0x0078, 0x5079, 0x6017, 0x0016, 0x0078,
+ 0x5079, 0x1078, 0x6c76, 0x2009, 0x004a, 0x1078, 0x5591, 0x0078,
+ 0x5079, 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x1078,
+ 0x4151, 0x0078, 0x5079, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x057e,
+ 0x047e, 0x007e, 0x127e, 0x2091, 0x8000, 0x6018, 0x2068, 0x6ca0,
+ 0x2071, 0x6f10, 0x7018, 0x2068, 0x8dff, 0x0040, 0x50af, 0x68a0,
+ 0xa406, 0x0040, 0x509f, 0x6854, 0x2068, 0x0078, 0x5094, 0x6010,
+ 0x2060, 0x643c, 0x6540, 0x6644, 0xa6b4, 0x000f, 0x2d60, 0x1078,
+ 0x3522, 0x0040, 0x50af, 0x1078, 0x5374, 0xa085, 0x0001, 0x127f,
+ 0x007f, 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c,
+ 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4a83, 0x20a3, 0x0f00,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008,
+ 0x1078, 0x4fd1, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1,
+ 0x020b, 0x1078, 0x4afa, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9,
+ 0x0006, 0x2011, 0x6d40, 0x2019, 0x6d40, 0x23a6, 0x22a6, 0xa398,
+ 0x0002, 0xa290, 0x0002, 0x00f0, 0x50dd, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x001c, 0x1078, 0x4fd1, 0x147f, 0x157f, 0x007c,
+ 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b, 0x1078, 0x4ada,
+ 0x1078, 0x4af1, 0x7810, 0x007e, 0xa080, 0x0015, 0x2098, 0x7808,
+ 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004, 0x8003, 0x60c2,
+ 0x007f, 0xa080, 0x0001, 0x2004, 0x7812, 0x1078, 0x4fd1, 0x027f,
+ 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b,
+ 0x1078, 0x4a83, 0x20a3, 0x6200, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x4fd1, 0x147f, 0x157f,
+ 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071,
+ 0x6f10, 0x700c, 0x2060, 0x8cff, 0x0040, 0x513f, 0x600c, 0x007e,
+ 0x1078, 0x556a, 0x1078, 0x5374, 0x0c7f, 0x0078, 0x5133, 0x700f,
+ 0x0000, 0x700b, 0x0000, 0x127f, 0x007f, 0x0c7f, 0x0e7f, 0x007c,
+ 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e,
+ 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071,
+ 0x6f10, 0x7024, 0x2060, 0x8cff, 0x0040, 0x5198, 0x1078, 0x4fe5,
+ 0x68c3, 0x0000, 0x1078, 0x414c, 0x2009, 0x0013, 0x1078, 0x5591,
+ 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x517b, 0x6827, 0x0004,
+ 0x7804, 0xa084, 0x4000, 0x0040, 0x518d, 0x7803, 0x1000, 0x7803,
+ 0x0000, 0x0078, 0x518d, 0xd084, 0x0040, 0x5182, 0x6827, 0x0001,
+ 0x0078, 0x5184, 0x00f0, 0x516a, 0x7804, 0xa084, 0x1000, 0x0040,
+ 0x518d, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f,
+ 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
+ 0x2001, 0x6d00, 0x2004, 0xa096, 0x0001, 0x0040, 0x51d0, 0xa096,
+ 0x0004, 0x0040, 0x51d0, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011,
+ 0x318e, 0x1078, 0x40d1, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040,
+ 0x51be, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x51d0,
+ 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x51d0, 0xd084, 0x0040,
+ 0x51c5, 0x6827, 0x0001, 0x0078, 0x51c7, 0x00f0, 0x51ad, 0x7804,
+ 0xa084, 0x1000, 0x0040, 0x51d0, 0x7803, 0x0100, 0x7803, 0x0000,
+ 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f,
+ 0x127f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
+ 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079,
+ 0x0140, 0x2071, 0x6f10, 0x703c, 0x2060, 0x8cff, 0x0040, 0x5228,
+ 0x6817, 0x0010, 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078, 0x415a,
+ 0x1078, 0x1a20, 0xa39d, 0x0000, 0x00c0, 0x5202, 0x2009, 0x0049,
+ 0x1078, 0x5591, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x5215,
+ 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5227, 0x7803,
+ 0x1000, 0x7803, 0x0000, 0x0078, 0x5227, 0xd094, 0x0040, 0x521c,
+ 0x6827, 0x0002, 0x0078, 0x521e, 0x00f0, 0x5204, 0x7804, 0xa084,
+ 0x1000, 0x0040, 0x5227, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824,
+ 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f,
+ 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0x6f10,
+ 0x6a06, 0x127f, 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000,
+ 0x2069, 0x6f10, 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e,
+ 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2071, 0x6f10, 0x7614, 0x2660,
+ 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x5286, 0x601c, 0xa206,
+ 0x00c0, 0x5281, 0x7014, 0xac36, 0x00c0, 0x5260, 0x660c, 0x7616,
+ 0x7010, 0xac36, 0x00c0, 0x526e, 0x2c00, 0xaf36, 0x0040, 0x526c,
+ 0x2f00, 0x7012, 0x0078, 0x526e, 0x7013, 0x0000, 0x660c, 0x067e,
+ 0x2c00, 0xaf06, 0x0040, 0x5277, 0x7e0e, 0x0078, 0x5278, 0x2678,
+ 0x600f, 0x0000, 0x1078, 0x6283, 0x1078, 0x5374, 0x0c7f, 0x0078,
+ 0x5253, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5253, 0x127f, 0x007f,
+ 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1,
+ 0x020b, 0x1078, 0x4c93, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0078, 0x52cf, 0x157e, 0x147e,
+ 0x20a1, 0x020b, 0x1078, 0x4c93, 0x7810, 0x20a2, 0xa006, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x52cf, 0x157e,
+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x4c93, 0x7810, 0x20a2, 0xa006,
+ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x52cf,
+ 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4c93, 0x7810, 0x20a2,
+ 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078,
+ 0x537f, 0x60c3, 0x0020, 0x1078, 0x4fd1, 0x147f, 0x157f, 0x007c,
+ 0x127e, 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4,
+ 0x00c0, 0x52e7, 0xd1bc, 0x00c0, 0x5331, 0x0078, 0x5371, 0x2009,
+ 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140,
+ 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040,
+ 0x5328, 0x6020, 0xd0b4, 0x0040, 0x5328, 0x6024, 0xd094, 0x00c0,
+ 0x5328, 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x5328,
+ 0x00f0, 0x52f4, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130,
+ 0xa18c, 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91,
+ 0x6043, 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094,
+ 0x00c0, 0x5327, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x531e, 0x027f,
+ 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078,
+ 0x5371, 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e,
+ 0x2069, 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084,
+ 0x4000, 0x0040, 0x536a, 0x6020, 0xd0bc, 0x0040, 0x536a, 0x2104,
+ 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x536a, 0x00f0, 0x533e,
+ 0x027e, 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff,
+ 0xa10d, 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001,
+ 0x6043, 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0,
+ 0x5364, 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b,
+ 0x0000, 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0x6f10, 0x7020,
+ 0xa005, 0x0040, 0x537d, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9,
+ 0x0008, 0x20a2, 0x00f0, 0x5381, 0x20a2, 0x20a2, 0x007c, 0x0f7e,
+ 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091,
+ 0x8000, 0x2071, 0x6f10, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001,
+ 0x87ff, 0x0040, 0x5417, 0x8cff, 0x0040, 0x5417, 0x601c, 0xa086,
+ 0x0006, 0x00c0, 0x5412, 0x88ff, 0x0040, 0x53ae, 0x2800, 0xac06,
+ 0x00c0, 0x5412, 0x2039, 0x0000, 0x0078, 0x53b2, 0x6018, 0xa206,
+ 0x00c0, 0x5412, 0x7024, 0xac06, 0x00c0, 0x53e0, 0x2069, 0x0100,
+ 0x68c0, 0xa005, 0x0040, 0x53db, 0x6817, 0x0008, 0x68c3, 0x0000,
+ 0x1078, 0x54a4, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
+ 0xa384, 0x1000, 0x0040, 0x53d0, 0x6803, 0x0100, 0x6803, 0x0000,
+ 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x53d8, 0x6827, 0x0001,
+ 0x037f, 0x0078, 0x53e0, 0x6003, 0x0009, 0x630a, 0x0078, 0x5412,
+ 0x7014, 0xac36, 0x00c0, 0x53e6, 0x660c, 0x7616, 0x7010, 0xac36,
+ 0x00c0, 0x53f4, 0x2c00, 0xaf36, 0x0040, 0x53f2, 0x2f00, 0x7012,
+ 0x0078, 0x53f4, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
+ 0x0040, 0x53fd, 0x7e0e, 0x0078, 0x53fe, 0x2678, 0x600f, 0x0000,
+ 0x6010, 0x2068, 0x1078, 0x6120, 0x0040, 0x5408, 0x1078, 0x6bb3,
+ 0x1078, 0x6283, 0x1078, 0x5374, 0x88ff, 0x00c0, 0x5421, 0x0c7f,
+ 0x0078, 0x5398, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5398, 0xa006,
+ 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
+ 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x5418,
+ 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e,
+ 0x2091, 0x8000, 0x2071, 0x6f10, 0x7638, 0x2660, 0x2678, 0x8cff,
+ 0x0040, 0x5493, 0x601c, 0xa086, 0x0006, 0x00c0, 0x548e, 0x88ff,
+ 0x0040, 0x5448, 0x2800, 0xac06, 0x00c0, 0x548e, 0x0078, 0x544c,
+ 0x6018, 0xa206, 0x00c0, 0x548e, 0x703c, 0xac06, 0x00c0, 0x545e,
+ 0x037e, 0x2019, 0x0001, 0x1078, 0x51da, 0x7033, 0x0000, 0x703f,
+ 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x037f, 0x7038, 0xac36,
+ 0x00c0, 0x5464, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5472,
+ 0x2c00, 0xaf36, 0x0040, 0x5470, 0x2f00, 0x7036, 0x0078, 0x5472,
+ 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x547b,
+ 0x7e0e, 0x0078, 0x547c, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068,
+ 0x1078, 0x6120, 0x0040, 0x5486, 0x1078, 0x6bb3, 0x1078, 0x6283,
+ 0x88ff, 0x00c0, 0x549d, 0x0c7f, 0x0078, 0x5437, 0x2c78, 0x600c,
+ 0x2060, 0x0078, 0x5437, 0xa006, 0x127f, 0x007f, 0x027f, 0x067f,
+ 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f,
+ 0xa8c5, 0x0001, 0x0078, 0x5494, 0x0e7e, 0x2071, 0x6f10, 0x2001,
+ 0x6d00, 0x2004, 0xa086, 0x0002, 0x00c0, 0x54b2, 0x7007, 0x0005,
+ 0x0078, 0x54b4, 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e, 0x0e7e,
+ 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071,
+ 0x6f10, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040, 0x54f4,
+ 0x2200, 0xac06, 0x00c0, 0x54ef, 0x7038, 0xac36, 0x00c0, 0x54d2,
+ 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x54e0, 0x2c00, 0xaf36,
+ 0x0040, 0x54de, 0x2f00, 0x7036, 0x0078, 0x54e0, 0x7037, 0x0000,
+ 0x660c, 0x2c00, 0xaf06, 0x0040, 0x54e8, 0x7e0e, 0x0078, 0x54e9,
+ 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0078, 0x54f4, 0x2c78,
+ 0x600c, 0x2060, 0x0078, 0x54c5, 0x127f, 0x007f, 0x027f, 0x067f,
+ 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x2061, 0x7400, 0x2a70, 0x7060,
+ 0x7046, 0x704b, 0x7400, 0x007c, 0x0e7e, 0x127e, 0x2071, 0x6d00,
+ 0x2091, 0x8000, 0x7544, 0xa582, 0x0001, 0x0048, 0x5536, 0x7048,
+ 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x5522, 0xace0, 0x0008,
+ 0x7054, 0xac02, 0x00c8, 0x551e, 0x0078, 0x5511, 0x2061, 0x7400,
+ 0x0078, 0x5511, 0x6003, 0x0008, 0x8529, 0x7546, 0xaca8, 0x0008,
+ 0x7054, 0xa502, 0x00c8, 0x5532, 0x754a, 0xa085, 0x0001, 0x127f,
+ 0x0e7f, 0x007c, 0x704b, 0x7400, 0x0078, 0x552d, 0xa006, 0x0078,
+ 0x552f, 0x0e7e, 0x2071, 0x6d00, 0x7544, 0xa582, 0x0001, 0x0048,
+ 0x5567, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x5554,
+ 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5550, 0x0078, 0x5543,
+ 0x2061, 0x7400, 0x0078, 0x5543, 0x6003, 0x0008, 0x8529, 0x7546,
+ 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x5563, 0x754a, 0xa085,
+ 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7400, 0x0078, 0x555f, 0xa006,
+ 0x0078, 0x5561, 0xac82, 0x7400, 0x1048, 0x12b7, 0x2001, 0x6d15,
+ 0x2004, 0xac02, 0x10c8, 0x12b7, 0xa006, 0x6006, 0x600a, 0x600e,
+ 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, 0x6003, 0x0000, 0x2061,
+ 0x6d00, 0x6044, 0x8000, 0x6046, 0xa086, 0x0001, 0x0040, 0x5589,
+ 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x476a, 0x127f, 0x0078,
+ 0x5588, 0x601c, 0xa084, 0x000f, 0x0079, 0x5596, 0x559f, 0x55a7,
+ 0x55c3, 0x55df, 0x629a, 0x62b6, 0x62d2, 0x559f, 0x55a7, 0xa18e,
+ 0x0047, 0x00c0, 0x55a6, 0xa016, 0x1078, 0x1532, 0x007c, 0x067e,
+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12b7, 0x1079, 0x55b1, 0x067f,
+ 0x007c, 0x55c1, 0x5698, 0x5792, 0x55c1, 0x57d7, 0x55c1, 0x55c1,
+ 0x55c1, 0x5653, 0x5a4d, 0x55c1, 0x55c1, 0x55c1, 0x55c1, 0x55c1,
+ 0x55c1, 0x1078, 0x12b7, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8,
+ 0x12b7, 0x1079, 0x55cd, 0x067f, 0x007c, 0x55dd, 0x55dd, 0x55dd,
+ 0x55dd, 0x55dd, 0x55dd, 0x55dd, 0x55dd, 0x5e10, 0x5edd, 0x55dd,
+ 0x5e29, 0x5e8f, 0x5e29, 0x5e8f, 0x55dd, 0x1078, 0x12b7, 0x067e,
+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12b7, 0x1079, 0x55e9, 0x067f,
+ 0x007c, 0x55f9, 0x5a96, 0x5b05, 0x5bbb, 0x5cd2, 0x55f9, 0x55f9,
+ 0x55f9, 0x5a75, 0x5dc6, 0x5dca, 0x55f9, 0x55f9, 0x55f9, 0x55f9,
+ 0x5df0, 0x1078, 0x12b7, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0,
+ 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398, 0x94a0, 0x3318,
+ 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8, 0x0002, 0xa398,
+ 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x5609, 0x0e7e, 0x6010, 0x2070,
+ 0x7007, 0x0000, 0x7037, 0x0103, 0x0e7f, 0x1078, 0x556a, 0x007c,
+ 0x0d7e, 0x037e, 0x7330, 0xa386, 0x0200, 0x00c0, 0x562d, 0x6018,
+ 0x2068, 0x6813, 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0040,
+ 0x5637, 0x2068, 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x1078,
+ 0x556a, 0x037f, 0x0d7f, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98,
+ 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x5650, 0x6018,
+ 0x2068, 0x7038, 0x680a, 0x703c, 0x680e, 0x6800, 0xc08d, 0x6802,
+ 0x0d7f, 0x0078, 0x5615, 0x2100, 0xa1b2, 0x0024, 0x10c8, 0x12b7,
+ 0x0079, 0x565a, 0x5680, 0x568c, 0x5680, 0x5680, 0x5680, 0x5680,
+ 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e,
+ 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e,
+ 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e, 0x567e,
+ 0x567e, 0x5680, 0x567e, 0x5680, 0x5680, 0x567e, 0x1078, 0x12b7,
+ 0x6003, 0x0001, 0x6106, 0x1078, 0x4376, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x476a, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078,
+ 0x4376, 0x127e, 0x2091, 0x8000, 0x1078, 0x476a, 0x127f, 0x007c,
+ 0x6004, 0xa0b2, 0x0024, 0x10c8, 0x12b7, 0xa1b6, 0x0013, 0x00c0,
+ 0x56a4, 0x2008, 0x0079, 0x5706, 0xa1b6, 0x0014, 0x00c0, 0x56fd,
+ 0x1078, 0x4671, 0x6004, 0xa08e, 0x0000, 0x0040, 0x56fe, 0xa08e,
+ 0x0002, 0x0040, 0x56c9, 0xa08e, 0x0003, 0x0040, 0x56c9, 0xa08e,
+ 0x0004, 0x0040, 0x56c9, 0xa08e, 0x001f, 0x0040, 0x56fe, 0xa08e,
+ 0x0021, 0x0040, 0x5702, 0xa08e, 0x0022, 0x0040, 0x56fe, 0x0078,
+ 0x56f9, 0x1078, 0x206f, 0x2001, 0x0007, 0x1078, 0x33f3, 0x6018,
+ 0xa080, 0x0028, 0x200c, 0x1078, 0x5778, 0xa186, 0x007e, 0x00c0,
+ 0x56df, 0x2001, 0x6d2f, 0x2014, 0xa295, 0x0001, 0x2202, 0x017e,
+ 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078, 0x445c, 0x1078,
+ 0x43a9, 0x0c7e, 0x6018, 0xa065, 0x0040, 0x56f0, 0x1078, 0x35cf,
+ 0x0c7f, 0x2c08, 0x1078, 0x6a57, 0x037f, 0x027f, 0x017f, 0x1078,
+ 0x342f, 0x1078, 0x556a, 0x1078, 0x476a, 0x007c, 0x1078, 0x5778,
+ 0x0078, 0x56f9, 0x1078, 0x5786, 0x0078, 0x56f9, 0x572c, 0x572e,
+ 0x5732, 0x5736, 0x573a, 0x573e, 0x572a, 0x572a, 0x572a, 0x572a,
+ 0x572a, 0x572a, 0x572a, 0x572a, 0x572a, 0x572a, 0x572a, 0x572a,
+ 0x572a, 0x572a, 0x572a, 0x572a, 0x572a, 0x572a, 0x572a, 0x572a,
+ 0x572a, 0x572a, 0x572a, 0x572a, 0x5742, 0x5748, 0x572a, 0x5752,
+ 0x5748, 0x572a, 0x1078, 0x12b7, 0x0078, 0x5748, 0x2001, 0x000b,
+ 0x0078, 0x575b, 0x2001, 0x0003, 0x0078, 0x575b, 0x2001, 0x0005,
+ 0x0078, 0x575b, 0x2001, 0x0001, 0x0078, 0x575b, 0x2001, 0x0009,
+ 0x0078, 0x575b, 0x1078, 0x12b7, 0x0078, 0x575a, 0x1078, 0x33f3,
+ 0x1078, 0x4671, 0x6003, 0x0002, 0x6017, 0x0028, 0x1078, 0x476a,
+ 0x0078, 0x575a, 0x1078, 0x4671, 0x6003, 0x0004, 0x6017, 0x0028,
+ 0x1078, 0x476a, 0x007c, 0x1078, 0x33f3, 0x1078, 0x4671, 0x6003,
+ 0x0002, 0x037e, 0x2019, 0x6d5c, 0x2304, 0xa084, 0xff00, 0x00c0,
+ 0x576d, 0x2019, 0x0028, 0x0078, 0x5772, 0x8007, 0x8003, 0x801b,
+ 0x831b, 0xa318, 0x6316, 0x037f, 0x1078, 0x476a, 0x0078, 0x575a,
+ 0x0e7e, 0x6010, 0xa005, 0x0040, 0x5784, 0x2070, 0x7007, 0x0000,
+ 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f, 0x007c, 0x0e7e, 0xacf0,
+ 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x7023, 0x8001,
+ 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff,
+ 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x12b7, 0x6604, 0xa6b6, 0x001f,
+ 0x00c0, 0x57a6, 0x1078, 0x55fb, 0x0078, 0x57c6, 0x6604, 0xa6b6,
+ 0x0000, 0x00c0, 0x57af, 0x1078, 0x563c, 0x0078, 0x57c6, 0x6604,
+ 0xa6b6, 0x0022, 0x00c0, 0x57b8, 0x1078, 0x5620, 0x0078, 0x57c6,
+ 0xa1b6, 0x0015, 0x00c0, 0x57c0, 0x1079, 0x57cb, 0x0078, 0x57c6,
+ 0xa1b6, 0x0016, 0x00c0, 0x57c7, 0x1079, 0x58f6, 0x007c, 0x1078,
+ 0x559f, 0x0078, 0x57c6, 0x57ef, 0x57f2, 0x57ef, 0x5833, 0x57ef,
+ 0x5892, 0x57ef, 0x57ef, 0x57ef, 0x58ce, 0x57ef, 0x58e4, 0xa1b6,
+ 0x0048, 0x0040, 0x57e3, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
+ 0x1078, 0x1532, 0x007c, 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000,
+ 0x2070, 0x7037, 0x0103, 0x0e7f, 0x1078, 0x556a, 0x007c, 0x0005,
+ 0x0005, 0x007c, 0x0e7e, 0x2071, 0x6d00, 0x7078, 0xa086, 0x0074,
+ 0x00c0, 0x581c, 0x1078, 0x6a2b, 0x00c0, 0x580e, 0x0d7e, 0x6018,
+ 0x2068, 0x1078, 0x5820, 0x0d7f, 0x2001, 0x0006, 0x1078, 0x33f3,
+ 0x1078, 0x206f, 0x1078, 0x556a, 0x0078, 0x581e, 0x2001, 0x000a,
+ 0x1078, 0x33f3, 0x1078, 0x206f, 0x6003, 0x0001, 0x6007, 0x0001,
+ 0x1078, 0x4376, 0x0078, 0x581e, 0x1078, 0x5889, 0x0e7f, 0x007c,
+ 0x6800, 0xd084, 0x0040, 0x5832, 0x2001, 0x0000, 0x1078, 0x33df,
+ 0x2069, 0x6d51, 0x6804, 0xd0a4, 0x0040, 0x5832, 0x2001, 0x0006,
+ 0x1078, 0x3401, 0x007c, 0x0d7e, 0x2011, 0x6d1e, 0x2204, 0xa086,
+ 0x0074, 0x00c0, 0x5885, 0x1078, 0x599f, 0x6018, 0x2068, 0xa080,
+ 0x0028, 0x2014, 0xa286, 0x007e, 0x0040, 0x5850, 0xa286, 0x0080,
+ 0x00c0, 0x5879, 0x6813, 0x00ff, 0x6817, 0xfffc, 0x0078, 0x586f,
+ 0x0e7e, 0x0f7e, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0x6d2f,
+ 0x2e04, 0xa085, 0x0003, 0x2072, 0x2071, 0x7280, 0x2079, 0x0100,
+ 0x2e04, 0xa084, 0x00ff, 0x2069, 0x6d19, 0x206a, 0x78e6, 0x8e70,
+ 0x2e04, 0x2069, 0x6d1a, 0x206a, 0x78ea, 0x0f7f, 0x0e7f, 0x2001,
+ 0x0006, 0x1078, 0x33f3, 0x1078, 0x206f, 0x1078, 0x556a, 0x0078,
+ 0x5887, 0x2001, 0x0004, 0x1078, 0x33f3, 0x6003, 0x0001, 0x6007,
+ 0x0003, 0x1078, 0x4376, 0x0078, 0x5887, 0x1078, 0x5889, 0x0d7f,
+ 0x007c, 0x2001, 0x0007, 0x1078, 0x33f3, 0x1078, 0x206f, 0x1078,
+ 0x556a, 0x007c, 0x0e7e, 0x2071, 0x6d00, 0x7078, 0xa086, 0x0014,
+ 0x00c0, 0x58c8, 0x7000, 0xa086, 0x0003, 0x00c0, 0x58a5, 0x6010,
+ 0xa005, 0x00c0, 0x58a5, 0x1078, 0x2ad1, 0x0d7e, 0x6018, 0x2068,
+ 0x1078, 0x34ca, 0x1078, 0x5820, 0x0d7f, 0x1078, 0x59a9, 0x00c0,
+ 0x58c8, 0x2001, 0x0006, 0x1078, 0x33f3, 0x0e7e, 0x6010, 0xa005,
+ 0x0040, 0x58c1, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033,
+ 0x0200, 0x0e7f, 0x1078, 0x206f, 0x1078, 0x556a, 0x0078, 0x58cc,
+ 0x1078, 0x5778, 0x1078, 0x5889, 0x0e7f, 0x007c, 0x2011, 0x6d1e,
+ 0x2204, 0xa086, 0x0014, 0x00c0, 0x58e1, 0x2001, 0x0002, 0x1078,
+ 0x33f3, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4376, 0x0078,
+ 0x58e3, 0x1078, 0x5889, 0x007c, 0x2011, 0x6d1e, 0x2204, 0xa086,
+ 0x0004, 0x00c0, 0x58f3, 0x2001, 0x0007, 0x1078, 0x33f3, 0x1078,
+ 0x556a, 0x0078, 0x58f5, 0x1078, 0x5889, 0x007c, 0x57ef, 0x5902,
+ 0x57ef, 0x5928, 0x57ef, 0x5952, 0x57ef, 0x57ef, 0x57ef, 0x5967,
+ 0x57ef, 0x597a, 0x0c7e, 0x1078, 0x598d, 0x00c0, 0x5917, 0x2001,
+ 0x0000, 0x1078, 0x33df, 0x2001, 0x0002, 0x1078, 0x33f3, 0x6003,
+ 0x0001, 0x6007, 0x0002, 0x1078, 0x4376, 0x0078, 0x5926, 0x2009,
+ 0x728f, 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x5924,
+ 0x1078, 0x556a, 0x0078, 0x5926, 0x1078, 0x5889, 0x0c7f, 0x007c,
+ 0x1078, 0x599c, 0x00c0, 0x593c, 0x2001, 0x0000, 0x1078, 0x33df,
+ 0x2001, 0x0002, 0x1078, 0x33f3, 0x6003, 0x0001, 0x6007, 0x0002,
+ 0x1078, 0x4376, 0x0078, 0x5951, 0x1078, 0x5778, 0x2009, 0x728f,
+ 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x594f, 0x2001,
+ 0x0004, 0x1078, 0x33f3, 0x1078, 0x556a, 0x0078, 0x5951, 0x1078,
+ 0x5889, 0x007c, 0x1078, 0x599c, 0x00c0, 0x5962, 0x2001, 0x0004,
+ 0x1078, 0x33f3, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x4376,
+ 0x0078, 0x5966, 0x1078, 0x5778, 0x1078, 0x5889, 0x007c, 0x1078,
+ 0x599c, 0x00c0, 0x5977, 0x2001, 0x0008, 0x1078, 0x33f3, 0x6003,
+ 0x0001, 0x6007, 0x0005, 0x1078, 0x4376, 0x0078, 0x5979, 0x1078,
+ 0x5889, 0x007c, 0x1078, 0x599c, 0x00c0, 0x598a, 0x2001, 0x000a,
+ 0x1078, 0x33f3, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4376,
+ 0x0078, 0x598c, 0x1078, 0x5889, 0x007c, 0x2009, 0x728e, 0x2104,
+ 0xa086, 0x0003, 0x00c0, 0x599b, 0x2009, 0x728f, 0x2104, 0xa084,
+ 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001, 0x007c, 0x0c7e,
+ 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x3459, 0x017f, 0x0c7f,
+ 0x007c, 0x0e7e, 0x2071, 0x728c, 0x7004, 0xa086, 0x0014, 0x00c0,
+ 0x59cc, 0x7008, 0xa086, 0x0800, 0x00c0, 0x59cc, 0x700c, 0xd0ec,
+ 0x0040, 0x59ca, 0xa084, 0x0f00, 0xa086, 0x0100, 0x00c0, 0x59ca,
+ 0x7024, 0xd0a4, 0x0040, 0x59ca, 0xd08c, 0x0040, 0x59ca, 0xa006,
+ 0x0078, 0x59cc, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e,
+ 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e, 0x127e, 0x2091,
+ 0x8000, 0x2029, 0x6f19, 0x252c, 0x2021, 0x6f1f, 0x2424, 0x2061,
+ 0x7400, 0x2071, 0x6d00, 0x7244, 0x7060, 0xa202, 0x00c8, 0x5a23,
+ 0x1078, 0x6c0f, 0x0040, 0x5a1b, 0x671c, 0xa786, 0x0001, 0x0040,
+ 0x5a1b, 0xa786, 0x0007, 0x0040, 0x5a1b, 0x2500, 0xac06, 0x0040,
+ 0x5a1b, 0x2400, 0xac06, 0x0040, 0x5a1b, 0x0c7e, 0x6010, 0x2068,
+ 0x1078, 0x6120, 0x0040, 0x5a11, 0xa786, 0x0003, 0x00c0, 0x5a2d,
+ 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36a1, 0x1078,
+ 0x6276, 0x6000, 0xa086, 0x0004, 0x00c0, 0x5a18, 0x1078, 0x15f2,
+ 0x1078, 0x6283, 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8,
+ 0x5a23, 0x0078, 0x59e3, 0x127f, 0x007f, 0x027f, 0x047f, 0x057f,
+ 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0,
+ 0x5a08, 0x1078, 0x6bb3, 0x0078, 0x5a11, 0x220c, 0x2304, 0xa106,
+ 0x00c0, 0x5a40, 0x8210, 0x8318, 0x00f0, 0x5a35, 0xa006, 0x007c,
+ 0x2304, 0xa102, 0x0048, 0x5a48, 0x2001, 0x0001, 0x0078, 0x5a4a,
+ 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a, 0x0024,
+ 0x10c8, 0x12b7, 0xa08e, 0x0000, 0x0040, 0x5a71, 0xa08e, 0x0002,
+ 0x0040, 0x5a68, 0xa08e, 0x0003, 0x0040, 0x5a68, 0xa08e, 0x0004,
+ 0x0040, 0x5a68, 0xa08e, 0x001f, 0x0040, 0x5a71, 0x0078, 0x5a6a,
+ 0x1078, 0x206f, 0x1078, 0x4671, 0x1078, 0x556a, 0x1078, 0x476a,
+ 0x007c, 0x1078, 0x5778, 0x0078, 0x5a6a, 0xa182, 0x0040, 0x0079,
+ 0x5a79, 0x5a88, 0x5a88, 0x5a88, 0x5a88, 0x5a88, 0x5a88, 0x5a88,
+ 0x5a88, 0x5a88, 0x5a88, 0x5a88, 0x5a8a, 0x5a8a, 0x5a8a, 0x5a8a,
+ 0x1078, 0x12b7, 0x6003, 0x0001, 0x6106, 0x1078, 0x4327, 0x127e,
+ 0x2091, 0x8000, 0x1078, 0x476a, 0x127f, 0x007c, 0xa186, 0x0013,
+ 0x00c0, 0x5a9f, 0x6004, 0xa082, 0x0040, 0x0079, 0x5adf, 0xa186,
+ 0x0014, 0x10c0, 0x12b7, 0x6004, 0xa082, 0x0040, 0x0079, 0x5aa8,
+ 0x5ab9, 0x5ab7, 0x5ab7, 0x5ab7, 0x5ab7, 0x5ab7, 0x5ab7, 0x5ab7,
+ 0x5ab7, 0x5ab7, 0x5ab7, 0x5ad4, 0x5ad4, 0x5ad4, 0x5ad4, 0x1078,
+ 0x12b7, 0x2001, 0x0007, 0x1078, 0x33f3, 0x1078, 0x4671, 0x0d7e,
+ 0x6110, 0x2168, 0x1078, 0x6120, 0x0040, 0x5ace, 0x6837, 0x0103,
+ 0x684b, 0x0028, 0x1078, 0x36a1, 0x1078, 0x6276, 0x0d7f, 0x1078,
+ 0x556a, 0x1078, 0x476a, 0x007c, 0x2001, 0x0007, 0x1078, 0x33f3,
+ 0x1078, 0x4671, 0x1078, 0x556a, 0x1078, 0x476a, 0x007c, 0x5af0,
+ 0x5aee, 0x5aee, 0x5aee, 0x5aee, 0x5aee, 0x5aee, 0x5aee, 0x5aee,
+ 0x5aee, 0x5aee, 0x5afe, 0x5afe, 0x5afe, 0x5afe, 0x1078, 0x12b7,
+ 0x1078, 0x4671, 0x6003, 0x0002, 0x1078, 0x476a, 0x6010, 0xa088,
+ 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x007c, 0x1078, 0x4671,
+ 0x6003, 0x000f, 0x1078, 0x476a, 0x007c, 0xa182, 0x0040, 0x0079,
+ 0x5b09, 0x5b18, 0x5b18, 0x5b18, 0x5b18, 0x5b18, 0x5b1a, 0x5b98,
+ 0x5bb0, 0x5b18, 0x5b18, 0x5b18, 0x5b18, 0x5b18, 0x5b18, 0x5b18,
+ 0x1078, 0x12b7, 0x0e7e, 0x0d7e, 0x2071, 0x728c, 0x6110, 0x2168,
+ 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040, 0x5b87, 0xa68c, 0x00ff,
+ 0xa186, 0x0002, 0x0040, 0x5b4c, 0xa186, 0x0028, 0x00c0, 0x5b36,
+ 0x1078, 0x628a, 0x684b, 0x001c, 0x0078, 0x5b4e, 0xd6dc, 0x0040,
+ 0x5b41, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078,
+ 0x5b4e, 0xd6d4, 0x0040, 0x5b4c, 0x684b, 0x0007, 0x7318, 0x6b62,
+ 0x731c, 0x6b5e, 0x0078, 0x5b4e, 0x684b, 0x0000, 0x6837, 0x0103,
+ 0x6e46, 0xa01e, 0xd6c4, 0x0040, 0x5b61, 0x7328, 0x732c, 0x6b56,
+ 0x037e, 0x2308, 0x2019, 0x7298, 0xad90, 0x0019, 0x1078, 0x5f4c,
+ 0x037f, 0xd6cc, 0x0040, 0x5b8c, 0x7124, 0x695a, 0xa192, 0x0021,
+ 0x00c8, 0x5b75, 0x2071, 0x7298, 0x831c, 0x2300, 0xae18, 0xad90,
+ 0x001d, 0x1078, 0x5f4c, 0x0078, 0x5b8c, 0x6838, 0xd0fc, 0x0040,
+ 0x5b7e, 0x2009, 0x0020, 0x695a, 0x0078, 0x5b6a, 0x0f7e, 0x2d78,
+ 0x1078, 0x5ee4, 0x0f7f, 0x1078, 0x5f39, 0x0078, 0x5b8e, 0x684b,
+ 0x0000, 0x6837, 0x0103, 0x6e46, 0x1078, 0x36a1, 0x6218, 0x2268,
+ 0x6a3c, 0x8211, 0x6a3e, 0x0d7f, 0x0e7f, 0x1078, 0x556a, 0x007c,
+ 0x0f7e, 0x6003, 0x0003, 0x2079, 0x728c, 0x7c04, 0x7b00, 0x7e0c,
+ 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f,
+ 0x2c10, 0x1078, 0x17de, 0x1078, 0x4395, 0x1078, 0x4821, 0x007c,
+ 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
+ 0x1078, 0x1532, 0x007c, 0xa182, 0x0040, 0x0079, 0x5bbf, 0x5bce,
+ 0x5bce, 0x5bce, 0x5bce, 0x5bce, 0x5bd0, 0x5c5e, 0x5bce, 0x5bce,
+ 0x5c74, 0x5cb4, 0x5bce, 0x5bce, 0x5bce, 0x5bce, 0x1078, 0x12b7,
+ 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x728c, 0x6110, 0x2178,
+ 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218,
+ 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x5c59, 0xa694,
+ 0xff00, 0xa284, 0x0c00, 0x0040, 0x5bf1, 0x7018, 0x7862, 0x701c,
+ 0x785e, 0xa284, 0x0300, 0x0040, 0x5c59, 0x1078, 0x130f, 0x1040,
+ 0x12b7, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103,
+ 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c,
+ 0x00ff, 0xa186, 0x0002, 0x0040, 0x5c2b, 0xa186, 0x0028, 0x00c0,
+ 0x5c15, 0x684b, 0x001c, 0x0078, 0x5c2d, 0xd6dc, 0x0040, 0x5c20,
+ 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5c2d,
+ 0xd6d4, 0x0040, 0x5c2b, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c,
+ 0x6b5e, 0x0078, 0x5c2d, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852,
+ 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x5c42, 0x7328, 0x732c,
+ 0x6b56, 0x037e, 0x2308, 0x2019, 0x7298, 0xad90, 0x0019, 0x1078,
+ 0x5f4c, 0x037f, 0xd6cc, 0x0040, 0x5c59, 0x7124, 0x695a, 0xa192,
+ 0x0021, 0x00c8, 0x5c56, 0x2071, 0x7298, 0x831c, 0x2300, 0xae18,
+ 0xad90, 0x001d, 0x1078, 0x5f4c, 0x0078, 0x5c59, 0x2d78, 0x1078,
+ 0x5ee4, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003,
+ 0x0003, 0x2079, 0x728c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078,
- 0x1936, 0x1078, 0x44aa, 0x1078, 0x4943, 0x007c, 0x6003, 0x0004,
- 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1525,
- 0x007c, 0xa182, 0x0040, 0x0079, 0x5c0d, 0x5c1d, 0x5c1d, 0x5c1d,
- 0x5c1d, 0x5c1d, 0x5c1f, 0x5cb6, 0x5c1d, 0x5c1d, 0x5ccc, 0x5d2e,
- 0x5c1d, 0x5c1d, 0x5c1d, 0x5c1d, 0x5d35, 0x1078, 0x1288, 0x077e,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x738c, 0x6110, 0x2178, 0x7614,
+ 0x17de, 0x1078, 0x4fca, 0x007c, 0x0d7e, 0x6003, 0x0002, 0x1078,
+ 0x4719, 0x1078, 0x4821, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040,
+ 0x5cb2, 0xd1cc, 0x0040, 0x5c8d, 0x6948, 0x017e, 0x1078, 0x1338,
+ 0x0d7f, 0x1078, 0x5f39, 0x0078, 0x5cb0, 0x6837, 0x0103, 0x6944,
+ 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5cac, 0xa086, 0x0028,
+ 0x00c0, 0x5c9e, 0x684b, 0x001c, 0x0078, 0x5cae, 0xd1dc, 0x0040,
+ 0x5ca5, 0x684b, 0x0015, 0x0078, 0x5cae, 0xd1d4, 0x0040, 0x5cac,
+ 0x684b, 0x0007, 0x0078, 0x5cae, 0x684b, 0x0000, 0x1078, 0x36a1,
+ 0x1078, 0x556a, 0x0d7f, 0x007c, 0x2001, 0x0007, 0x1078, 0x33f3,
+ 0x1078, 0x4719, 0x0f7e, 0x0d7e, 0x6110, 0x2178, 0x1078, 0x6120,
+ 0x0040, 0x5ccb, 0x7837, 0x0103, 0x784b, 0x0028, 0x2f68, 0x1078,
+ 0x36a1, 0x1078, 0x6276, 0x0d7f, 0x0f7f, 0x1078, 0x556a, 0x1078,
+ 0x4821, 0x007c, 0xa182, 0x0040, 0x0079, 0x5cd6, 0x5ce5, 0x5ce5,
+ 0x5ce5, 0x5ce5, 0x5ce5, 0x5ce7, 0x5ce5, 0x5d82, 0x5d8a, 0x5ce5,
+ 0x5ce5, 0x5ce5, 0x5ce5, 0x5ce5, 0x5ce5, 0x1078, 0x12b7, 0x077e,
+ 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x728c, 0x6110, 0x2178, 0x7614,
0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268,
- 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x5cb1, 0xa694, 0xff00,
- 0xa284, 0x0c00, 0x0040, 0x5c40, 0x7018, 0x7862, 0x701c, 0x785e,
- 0xa284, 0x0300, 0x0040, 0x5cb1, 0x1078, 0x12e2, 0x1040, 0x1288,
- 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838,
- 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff,
- 0xa186, 0x0002, 0x0040, 0x5c7a, 0xa186, 0x0028, 0x00c0, 0x5c64,
- 0x684b, 0x001c, 0x0078, 0x5c7c, 0xd6dc, 0x0040, 0x5c6f, 0x684b,
- 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5c7c, 0xd6d4,
- 0x0040, 0x5c7a, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e,
- 0x0078, 0x5c7c, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854,
- 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x5c91, 0x7328, 0x732c, 0x6b56,
- 0x037e, 0x2308, 0x2019, 0x7398, 0xad90, 0x0019, 0x1078, 0x6008,
- 0x037f, 0xd6cc, 0x0040, 0x5cb1, 0x7124, 0x695a, 0xa192, 0x0021,
- 0x00c8, 0x5ca5, 0x2071, 0x7398, 0x831c, 0x2300, 0xae18, 0xad90,
- 0x001d, 0x1078, 0x6008, 0x0078, 0x5cb1, 0x7838, 0xd0fc, 0x0040,
- 0x5cae, 0x2009, 0x0020, 0x695a, 0x0078, 0x5c9a, 0x2d78, 0x1078,
- 0x5fa0, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003,
- 0x0003, 0x2079, 0x738c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
- 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078,
- 0x1936, 0x1078, 0x4f73, 0x007c, 0x0d7e, 0x6003, 0x0002, 0x1078,
- 0x4842, 0x1078, 0x4943, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040,
- 0x5d2c, 0xd1cc, 0x0040, 0x5d07, 0x6948, 0x6838, 0xd0fc, 0x0040,
- 0x5cff, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90, 0x000d,
- 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012,
- 0x8318, 0x8210, 0x00f0, 0x5cee, 0x157f, 0x007f, 0x6852, 0x007f,
- 0x684e, 0x017f, 0x2168, 0x1078, 0x130b, 0x0078, 0x5d2a, 0x017e,
- 0x1078, 0x130b, 0x0d7f, 0x1078, 0x5ff5, 0x0078, 0x5d2a, 0x6837,
- 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5d26,
- 0xa086, 0x0028, 0x00c0, 0x5d18, 0x684b, 0x001c, 0x0078, 0x5d28,
- 0xd1dc, 0x0040, 0x5d1f, 0x684b, 0x0015, 0x0078, 0x5d28, 0xd1d4,
- 0x0040, 0x5d26, 0x684b, 0x0007, 0x0078, 0x5d28, 0x684b, 0x0000,
- 0x1078, 0x3720, 0x1078, 0x55d5, 0x0d7f, 0x007c, 0x6003, 0x0002,
- 0x1078, 0x4842, 0x1078, 0x4943, 0x007c, 0x1078, 0x4842, 0x1078,
- 0x21a8, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6216, 0x0040, 0x5d48,
- 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3720, 0x1078, 0x632a,
- 0x0d7f, 0x1078, 0x55d5, 0x1078, 0x4943, 0x007c, 0x684b, 0x0015,
- 0xd1fc, 0x0040, 0x5d5a, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a,
- 0xa189, 0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, 0x0079,
- 0x5d61, 0x5d71, 0x5d71, 0x5d71, 0x5d71, 0x5d71, 0x5d73, 0x5d71,
- 0x5e17, 0x5e1f, 0x5d71, 0x5d71, 0x5d71, 0x5d71, 0x5d71, 0x5d71,
- 0x5d71, 0x1078, 0x1288, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071,
- 0x738c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c,
- 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff,
- 0x0040, 0x5e09, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x5d94,
- 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x5e06,
- 0x1078, 0x12e2, 0x1040, 0x1288, 0x2d00, 0x784a, 0x7f4c, 0xa7bd,
- 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, 0x683e,
- 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040,
- 0x5dcf, 0xa186, 0x0028, 0x00c0, 0x5db9, 0x684b, 0x001c, 0x0078,
- 0x5dd1, 0xd6dc, 0x0040, 0x5dc4, 0x684b, 0x0015, 0x7318, 0x6b62,
- 0x731c, 0x6b5e, 0x0078, 0x5dd1, 0xd6d4, 0x0040, 0x5dcf, 0x684b,
- 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5dd1, 0x684b,
- 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4,
- 0x0040, 0x5de6, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019,
- 0x7398, 0xad90, 0x0019, 0x1078, 0x6008, 0x037f, 0xd6cc, 0x0040,
- 0x5e06, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x5dfa, 0x2071,
- 0x7398, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x6008,
- 0x0078, 0x5e06, 0x7838, 0xd0fc, 0x0040, 0x5e03, 0x2009, 0x0020,
- 0x695a, 0x0078, 0x5def, 0x2d78, 0x1078, 0x5fa0, 0xd6dc, 0x00c0,
- 0x5e0c, 0xa006, 0x0078, 0x5e10, 0x2001, 0x0001, 0x7218, 0x731c,
- 0x1078, 0x1569, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x20e1,
- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1525, 0x007c, 0x0d7e,
- 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040, 0x5e86,
- 0xd1cc, 0x0040, 0x5e56, 0x6948, 0x6838, 0xd0fc, 0x0040, 0x5e4e,
- 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90, 0x000d, 0xa198,
- 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318,
- 0x8210, 0x00f0, 0x5e3d, 0x157f, 0x007f, 0x6852, 0x007f, 0x684e,
- 0x017f, 0x2168, 0x1078, 0x130b, 0x0078, 0x5e84, 0x017e, 0x1078,
- 0x130b, 0x0d7f, 0x1078, 0x5ff5, 0x0078, 0x5e84, 0x6837, 0x0103,
- 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5e75, 0xa086,
- 0x0028, 0x00c0, 0x5e67, 0x684b, 0x001c, 0x0078, 0x5e82, 0xd1dc,
- 0x0040, 0x5e6e, 0x684b, 0x0015, 0x0078, 0x5e82, 0xd1d4, 0x0040,
- 0x5e75, 0x684b, 0x0007, 0x0078, 0x5e82, 0x684b, 0x0000, 0x684c,
- 0xd0ac, 0x0040, 0x5e82, 0x6810, 0x6914, 0xa115, 0x0040, 0x5e82,
- 0x1078, 0x5d4e, 0x1078, 0x3720, 0x1078, 0x55d5, 0x0d7f, 0x007c,
- 0x1078, 0x479a, 0x0078, 0x5e8e, 0x1078, 0x4842, 0x1078, 0x6216,
- 0x0040, 0x5ea5, 0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, 0x2009,
- 0x6f0c, 0x210c, 0xd18c, 0x00c0, 0x5eae, 0xd184, 0x00c0, 0x5eaa,
- 0x6108, 0x694a, 0x1078, 0x3720, 0x0d7f, 0x1078, 0x55d5, 0x1078,
- 0x4893, 0x007c, 0x684b, 0x0004, 0x0078, 0x5ea2, 0x684b, 0x0004,
- 0x0078, 0x5ea2, 0xa182, 0x0040, 0x0079, 0x5eb6, 0x5ec6, 0x5ec6,
- 0x5ec6, 0x5ec6, 0x5ec6, 0x5ec8, 0x5ec6, 0x5ecb, 0x5ec6, 0x5ec6,
- 0x5ec6, 0x5ec6, 0x5ec6, 0x5ec6, 0x5ec6, 0x5ec6, 0x1078, 0x1288,
- 0x1078, 0x55d5, 0x007c, 0x007e, 0x027e, 0xa016, 0x1078, 0x1525,
- 0x027f, 0x007f, 0x007c, 0xa182, 0x0085, 0x0079, 0x5ed7, 0x5ee0,
- 0x5ede, 0x5ede, 0x5ede, 0x5ede, 0x5ede, 0x5ede, 0x1078, 0x1288,
- 0x6003, 0x0001, 0x6106, 0x1078, 0x443e, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x4893, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x5ef6,
- 0x6004, 0xa082, 0x0085, 0x2008, 0x0079, 0x5f2a, 0xa186, 0x0027,
- 0x00c0, 0x5f17, 0x1078, 0x479a, 0x1078, 0x21a8, 0x0d7e, 0x6010,
- 0x2068, 0x1078, 0x6216, 0x0040, 0x5f0d, 0x6837, 0x0103, 0x684b,
- 0x0029, 0x1078, 0x3720, 0x1078, 0x632a, 0x0d7f, 0x1078, 0x55d5,
- 0x1078, 0x4893, 0x007c, 0x1078, 0x5609, 0x0078, 0x5f12, 0xa186,
- 0x0014, 0x00c0, 0x5f13, 0x1078, 0x479a, 0x0d7e, 0x6010, 0x2068,
- 0x1078, 0x6216, 0x0040, 0x5f0d, 0x6837, 0x0103, 0x684b, 0x0006,
- 0x0078, 0x5f09, 0x5f33, 0x5f31, 0x5f31, 0x5f31, 0x5f31, 0x5f31,
- 0x5f3c, 0x1078, 0x1288, 0x1078, 0x479a, 0x6017, 0x0014, 0x6003,
- 0x000c, 0x1078, 0x4893, 0x007c, 0x1078, 0x479a, 0x6017, 0x0014,
- 0x6003, 0x000e, 0x1078, 0x4893, 0x007c, 0xa182, 0x008c, 0x00c8,
- 0x5f4f, 0xa182, 0x0085, 0x0048, 0x5f4f, 0x0079, 0x5f52, 0x1078,
- 0x5609, 0x007c, 0x5f59, 0x5f59, 0x5f59, 0x5f59, 0x5f5b, 0x5f7a,
- 0x5f59, 0x1078, 0x1288, 0x0d7e, 0x1078, 0x632a, 0x1078, 0x6216,
- 0x0040, 0x5f76, 0x6010, 0x2068, 0x6837, 0x0103, 0x6850, 0xd0b4,
- 0x0040, 0x5f6e, 0x684b, 0x0006, 0x0078, 0x5f72, 0x684b, 0x0005,
- 0x1078, 0x63dd, 0x6847, 0x0000, 0x1078, 0x3720, 0x1078, 0x55d5,
- 0x0d7f, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6216, 0x0040,
- 0x5f95, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x5f8b, 0x684b,
- 0x0006, 0x0078, 0x5f8f, 0x684b, 0x0005, 0x1078, 0x63dd, 0x6847,
- 0x0000, 0x1078, 0x3720, 0x1078, 0x632a, 0x0d7f, 0x1078, 0x55d5,
- 0x007c, 0x1078, 0x479a, 0x1078, 0x55d5, 0x1078, 0x4893, 0x007c,
- 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001, 0xa182, 0x0101,
- 0x00c8, 0x5fac, 0x0078, 0x5fae, 0x2009, 0x0100, 0x2130, 0x2069,
- 0x7398, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, 0x001d,
- 0x1078, 0x6008, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0040, 0x5fc2,
- 0x1078, 0x130b, 0x1078, 0x12e2, 0x0040, 0x5fec, 0x8528, 0x6837,
- 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x00c8,
- 0x5fd8, 0x2608, 0xad90, 0x000f, 0x1078, 0x6008, 0x0078, 0x5fec,
- 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90, 0x000f, 0x1078,
- 0x6008, 0x0078, 0x5fc2, 0x0f7f, 0x852f, 0xa5ad, 0x0003, 0x7d36,
- 0xa5ac, 0x0000, 0x0078, 0x5ff1, 0x0f7f, 0x852f, 0xa5ad, 0x0003,
- 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e, 0x8dff, 0x0040,
- 0x6006, 0x6804, 0xa07d, 0x0040, 0x6004, 0x6807, 0x0000, 0x1078,
- 0x3720, 0x2f68, 0x0078, 0x5ff9, 0x1078, 0x3720, 0x0f7f, 0x007c,
- 0x157e, 0xa184, 0x0001, 0x0040, 0x600e, 0x8108, 0x810c, 0x21a8,
- 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0, 0x6010, 0x157f,
- 0x007c, 0x127e, 0x2091, 0x8000, 0x601c, 0xa084, 0x0007, 0x1079,
- 0x6023, 0x127f, 0x007c, 0x6032, 0x602b, 0x602d, 0x604b, 0x602b,
- 0x602d, 0x602d, 0x602d, 0x1078, 0x1288, 0xa006, 0x007c, 0xa085,
- 0x0001, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6216, 0x0040,
- 0x6048, 0xa00e, 0x2001, 0x0005, 0x1078, 0x37b0, 0x1078, 0x63dd,
- 0x1078, 0x3720, 0x1078, 0x55d5, 0xa085, 0x0001, 0x0d7f, 0x007c,
- 0xa006, 0x0078, 0x6046, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1288,
- 0x1079, 0x6053, 0x007c, 0x6063, 0x6080, 0x6065, 0x6091, 0x607c,
- 0x6063, 0x602d, 0x6032, 0x6032, 0x602d, 0x602d, 0x602d, 0x602d,
- 0x602d, 0x602d, 0x602d, 0x1078, 0x1288, 0x0d7e, 0x6010, 0x2068,
- 0x1078, 0x6216, 0x0040, 0x606e, 0x1078, 0x63dd, 0x0d7f, 0x6007,
- 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078, 0x443e, 0x1078,
- 0x4893, 0xa085, 0x0001, 0x007c, 0x1078, 0x1629, 0x0078, 0x6065,
- 0x0e7e, 0x2071, 0x70b6, 0x7024, 0xac06, 0x00c0, 0x6089, 0x1078,
- 0x50a9, 0x1078, 0x5017, 0x0e7f, 0x00c0, 0x6065, 0x1078, 0x602d,
- 0x007c, 0x037e, 0x0e7e, 0x2071, 0x70b6, 0x703c, 0xac06, 0x00c0,
- 0x60a1, 0x2019, 0x0000, 0x1078, 0x513b, 0x0e7f, 0x037f, 0x0078,
- 0x6065, 0x1078, 0x5417, 0x0e7f, 0x037f, 0x00c0, 0x6065, 0x1078,
- 0x602d, 0x007c, 0x0c7e, 0x601c, 0xa084, 0x0007, 0x1079, 0x60b2,
- 0x0c7f, 0x007c, 0x60c0, 0x611d, 0x61ba, 0x60c4, 0x60c0, 0x60c0,
- 0x6a64, 0x55d5, 0x1078, 0x6364, 0x00c0, 0x60c0, 0x1078, 0x57d2,
- 0x007c, 0x6017, 0x0001, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8,
- 0x1288, 0x1079, 0x60cc, 0x007c, 0x60dc, 0x60de, 0x60fe, 0x6110,
- 0x6110, 0x60dc, 0x60c0, 0x60c0, 0x60c0, 0x6110, 0x6110, 0x60dc,
- 0x60dc, 0x60dc, 0x60dc, 0x611a, 0x1078, 0x1288, 0x0e7e, 0x6010,
- 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, 0x70b6, 0x7024, 0xac06,
- 0x0040, 0x60fa, 0x1078, 0x5017, 0x6007, 0x0085, 0x6003, 0x000b,
- 0x601f, 0x0002, 0x6017, 0x0014, 0x1078, 0x443e, 0x1078, 0x4893,
- 0x0e7f, 0x007c, 0x6017, 0x0001, 0x0078, 0x60f8, 0x0d7e, 0x6010,
- 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003,
- 0x000b, 0x601f, 0x0002, 0x1078, 0x443e, 0x1078, 0x4893, 0x007c,
- 0x0d7e, 0x6017, 0x0001, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852,
- 0x0d7f, 0x007c, 0x1078, 0x55d5, 0x007c, 0x6000, 0xa08a, 0x0010,
- 0x10c8, 0x1288, 0x1079, 0x6125, 0x007c, 0x6135, 0x60c1, 0x6137,
- 0x6135, 0x6135, 0x6135, 0x6135, 0x6135, 0x60ba, 0x60ba, 0x6135,
- 0x6135, 0x6135, 0x6135, 0x6135, 0x6135, 0x1078, 0x1288, 0x0d7e,
- 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x0d7f, 0xa08a, 0x000c,
- 0x10c8, 0x1288, 0x1079, 0x6145, 0x007c, 0x6151, 0x616c, 0x6151,
- 0x616c, 0x6151, 0x616c, 0x6153, 0x615c, 0x6151, 0x616c, 0x6151,
- 0x6161, 0x1078, 0x1288, 0x6004, 0xa08e, 0x0004, 0x0040, 0x6163,
- 0xa08e, 0x0002, 0x0040, 0x6163, 0x6004, 0x1078, 0x6364, 0x0040,
- 0x61b6, 0x1078, 0x21a8, 0x1078, 0x6364, 0x00c0, 0x6169, 0x1078,
- 0x57d2, 0x1078, 0x55d5, 0x007c, 0x0c7e, 0x0d7e, 0x6104, 0xa186,
- 0x0016, 0x0040, 0x61a6, 0xa186, 0x0002, 0x00c0, 0x6191, 0x6018,
- 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x6191, 0x8001,
- 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x1078,
- 0x556f, 0x0040, 0x6191, 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078,
- 0x61a6, 0x0d7f, 0x0c7f, 0x1078, 0x6364, 0x00c0, 0x6199, 0x1078,
- 0x57d2, 0x1078, 0x21a8, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x21c6, 0x127f, 0x0e7f, 0x1078, 0x55d5, 0x007c, 0x2001, 0x0002,
- 0x1078, 0x3477, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x448b,
- 0x1078, 0x4893, 0x0d7f, 0x0c7f, 0x0078, 0x61a5, 0x1078, 0x57d2,
- 0x0078, 0x6169, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x61c2, 0x007c, 0x61d2, 0x61d2, 0x61d2, 0x61d2, 0x61d2, 0x61d2,
- 0x61d2, 0x61d2, 0x61d2, 0x60c0, 0x61d2, 0x60c1, 0x61d4, 0x60c1,
- 0x61dd, 0x61d2, 0x1078, 0x1288, 0x6007, 0x008b, 0x6003, 0x000d,
- 0x1078, 0x443e, 0x1078, 0x4893, 0x007c, 0x1078, 0x632a, 0x1078,
- 0x6216, 0x0040, 0x61ff, 0x1078, 0x21a8, 0x0d7e, 0x1078, 0x6216,
- 0x0040, 0x61f2, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006,
- 0x1078, 0x3720, 0x0d7f, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003,
- 0x0001, 0x1078, 0x448b, 0x1078, 0x4893, 0x0078, 0x6201, 0x1078,
- 0x55d5, 0x007c, 0xa284, 0x0007, 0x00c0, 0x6213, 0xa282, 0x7500,
- 0x0048, 0x6213, 0x2001, 0x6f15, 0x2004, 0xa202, 0x00c8, 0x6213,
- 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x6212, 0x027e, 0x0e7e,
- 0x2071, 0x6f00, 0x6210, 0x7058, 0xa202, 0x0048, 0x6228, 0x705c,
- 0xa202, 0x00c8, 0x6228, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c,
- 0xa006, 0x0078, 0x6225, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2061, 0x7500, 0x2071, 0x6f00, 0x7344, 0x7060,
- 0xa302, 0x00c8, 0x6251, 0x601c, 0xa206, 0x00c0, 0x6249, 0x1078,
- 0x6364, 0x00c0, 0x6245, 0x1078, 0x57d2, 0x0c7e, 0x1078, 0x55d5,
- 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x6251, 0x0078,
- 0x6236, 0x127f, 0x007f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0c7e,
- 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x556f, 0x057f,
- 0x0040, 0x6270, 0x6612, 0x651a, 0x601f, 0x0003, 0x2009, 0x004b,
- 0x1078, 0x55fc, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
- 0xa006, 0x0078, 0x626c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000,
- 0x62a0, 0x0c7e, 0x1078, 0x556f, 0x057f, 0x0040, 0x629a, 0x6013,
- 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078, 0x364c,
- 0x0c7f, 0x1078, 0x457b, 0x1078, 0x44be, 0x2c08, 0x1078, 0x6bfe,
- 0x2009, 0x004c, 0x1078, 0x55fc, 0xa085, 0x0001, 0x127f, 0x057f,
- 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6296, 0x0c7e, 0x057e, 0x127e,
- 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x556f, 0x057f, 0x0040,
- 0x62c5, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005, 0x0c7e,
- 0x2560, 0x1078, 0x364c, 0x0c7f, 0x1078, 0x457b, 0x1078, 0x44be,
- 0x2c08, 0x1078, 0x6bfe, 0x2009, 0x004d, 0x1078, 0x55fc, 0xa085,
- 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x62c1,
+ 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x5d74, 0xa694, 0xff00,
+ 0xa284, 0x0c00, 0x0040, 0x5d08, 0x7018, 0x7862, 0x701c, 0x785e,
+ 0xa284, 0x0300, 0x0040, 0x5d71, 0x1078, 0x130f, 0x1040, 0x12b7,
+ 0x2d00, 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103,
+ 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c,
+ 0x00ff, 0xa186, 0x0002, 0x0040, 0x5d43, 0xa186, 0x0028, 0x00c0,
+ 0x5d2d, 0x684b, 0x001c, 0x0078, 0x5d45, 0xd6dc, 0x0040, 0x5d38,
+ 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5d45,
+ 0xd6d4, 0x0040, 0x5d43, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c,
+ 0x6b5e, 0x0078, 0x5d45, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852,
+ 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x5d5a, 0x7328, 0x732c,
+ 0x6b56, 0x037e, 0x2308, 0x2019, 0x7298, 0xad90, 0x0019, 0x1078,
+ 0x5f4c, 0x037f, 0xd6cc, 0x0040, 0x5d71, 0x7124, 0x695a, 0xa192,
+ 0x0021, 0x00c8, 0x5d6e, 0x2071, 0x7298, 0x831c, 0x2300, 0xae18,
+ 0xad90, 0x001d, 0x1078, 0x5f4c, 0x0078, 0x5d71, 0x2d78, 0x1078,
+ 0x5ee4, 0xd6dc, 0x00c0, 0x5d77, 0xa006, 0x0078, 0x5d7b, 0x2001,
+ 0x0001, 0x7218, 0x731c, 0x1078, 0x156f, 0x0d7f, 0x0e7f, 0x0f7f,
+ 0x077f, 0x007c, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078,
+ 0x1532, 0x007c, 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168, 0x694c,
+ 0xd1e4, 0x0040, 0x5dc4, 0xd1cc, 0x0040, 0x5d9f, 0x6948, 0x017e,
+ 0x1078, 0x1338, 0x0d7f, 0x1078, 0x5f39, 0x0078, 0x5dc2, 0x6837,
+ 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5dbe,
+ 0xa086, 0x0028, 0x00c0, 0x5db0, 0x684b, 0x001c, 0x0078, 0x5dc0,
+ 0xd1dc, 0x0040, 0x5db7, 0x684b, 0x0015, 0x0078, 0x5dc0, 0xd1d4,
+ 0x0040, 0x5dbe, 0x684b, 0x0007, 0x0078, 0x5dc0, 0x684b, 0x0000,
+ 0x1078, 0x36a1, 0x1078, 0x556a, 0x0d7f, 0x007c, 0x1078, 0x4671,
+ 0x0078, 0x5dcc, 0x1078, 0x4719, 0x1078, 0x6120, 0x0040, 0x5de3,
+ 0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, 0x2009, 0x6d0c, 0x210c,
+ 0xd18c, 0x00c0, 0x5dec, 0xd184, 0x00c0, 0x5de8, 0x6108, 0x694a,
+ 0x1078, 0x36a1, 0x0d7f, 0x1078, 0x556a, 0x1078, 0x476a, 0x007c,
+ 0x684b, 0x0004, 0x0078, 0x5de0, 0x684b, 0x0004, 0x0078, 0x5de0,
+ 0xa182, 0x0040, 0x0079, 0x5df4, 0x5e03, 0x5e03, 0x5e03, 0x5e03,
+ 0x5e03, 0x5e05, 0x5e03, 0x5e08, 0x5e03, 0x5e03, 0x5e03, 0x5e03,
+ 0x5e03, 0x5e03, 0x5e03, 0x1078, 0x12b7, 0x1078, 0x556a, 0x007c,
+ 0x007e, 0x027e, 0xa016, 0x1078, 0x1532, 0x027f, 0x007f, 0x007c,
+ 0xa182, 0x0025, 0x0079, 0x5e14, 0x5e1d, 0x5e1b, 0x5e1b, 0x5e1b,
+ 0x5e1b, 0x5e1b, 0x5e1b, 0x1078, 0x12b7, 0x6003, 0x0001, 0x6106,
+ 0x1078, 0x4327, 0x127e, 0x2091, 0x8000, 0x1078, 0x476a, 0x127f,
+ 0x007c, 0xa186, 0x0013, 0x00c0, 0x5e33, 0x6004, 0xa082, 0x0025,
+ 0x2008, 0x0079, 0x5e74, 0xa186, 0x0014, 0x00c0, 0x5e70, 0x1078,
+ 0x4671, 0x2001, 0x0007, 0x1078, 0x33f3, 0x6018, 0xa080, 0x0028,
+ 0x200c, 0x017e, 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078,
+ 0x445c, 0x1078, 0x43a9, 0x0c7e, 0x6018, 0xa065, 0x0040, 0x5e52,
+ 0x1078, 0x35cf, 0x0c7f, 0x2c08, 0x1078, 0x6a57, 0x037f, 0x027f,
+ 0x017f, 0x1078, 0x342f, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6120,
+ 0x0040, 0x5e6a, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078, 0x36a1,
+ 0x1078, 0x6276, 0x0d7f, 0x1078, 0x556a, 0x1078, 0x476a, 0x007c,
+ 0x1078, 0x559f, 0x0078, 0x5e6f, 0x5e7d, 0x5e7b, 0x5e7b, 0x5e7b,
+ 0x5e7b, 0x5e7b, 0x5e86, 0x1078, 0x12b7, 0x1078, 0x4671, 0x6017,
+ 0x0014, 0x6003, 0x000c, 0x1078, 0x476a, 0x007c, 0x1078, 0x4671,
+ 0x6017, 0x0014, 0x6003, 0x000e, 0x1078, 0x476a, 0x007c, 0xa182,
+ 0x002c, 0x00c8, 0x5e99, 0xa182, 0x0025, 0x0048, 0x5e99, 0x0079,
+ 0x5e9c, 0x1078, 0x559f, 0x007c, 0x5ea3, 0x5ea3, 0x5ea3, 0x5ea3,
+ 0x5ea5, 0x5ebf, 0x5ea3, 0x1078, 0x12b7, 0x0d7e, 0x1078, 0x6276,
+ 0x6010, 0x2068, 0x6837, 0x0103, 0x6850, 0xa084, 0x0040, 0x0040,
+ 0x5eb5, 0x684b, 0x0006, 0x0078, 0x5eb7, 0x684b, 0x0005, 0x6847,
+ 0x0000, 0x1078, 0x36a1, 0x1078, 0x556a, 0x0d7f, 0x007c, 0x0d7e,
+ 0x6010, 0x2068, 0x1078, 0x6120, 0x0040, 0x5ed9, 0x6837, 0x0103,
+ 0x6850, 0xa084, 0x0040, 0x0040, 0x5ed1, 0x684b, 0x0006, 0x0078,
+ 0x5ed3, 0x684b, 0x0005, 0x6847, 0x0000, 0x1078, 0x36a1, 0x1078,
+ 0x6276, 0x0d7f, 0x1078, 0x556a, 0x007c, 0x1078, 0x4671, 0x1078,
+ 0x556a, 0x1078, 0x476a, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e,
+ 0x2029, 0x0001, 0xa182, 0x0101, 0x00c8, 0x5ef0, 0x0078, 0x5ef2,
+ 0x2009, 0x0100, 0x2130, 0x2069, 0x7298, 0x831c, 0x2300, 0xad18,
+ 0x2009, 0x0020, 0xaf90, 0x001d, 0x1078, 0x5f4c, 0xa6b2, 0x0020,
+ 0x7804, 0xa06d, 0x0040, 0x5f06, 0x1078, 0x1338, 0x1078, 0x130f,
+ 0x0040, 0x5f30, 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20,
+ 0x7c06, 0xa68a, 0x003d, 0x00c8, 0x5f1c, 0x2608, 0xad90, 0x000f,
+ 0x1078, 0x5f4c, 0x0078, 0x5f30, 0xa6b2, 0x003c, 0x2009, 0x003c,
+ 0x2d78, 0xad90, 0x000f, 0x1078, 0x5f4c, 0x0078, 0x5f06, 0x0f7f,
+ 0x852f, 0xa5ad, 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x5f35,
+ 0x0f7f, 0x852f, 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f,
+ 0x007c, 0x0f7e, 0x8dff, 0x0040, 0x5f4a, 0x6804, 0xa07d, 0x0040,
+ 0x5f48, 0x6807, 0x0000, 0x1078, 0x36a1, 0x2f68, 0x0078, 0x5f3d,
+ 0x1078, 0x36a1, 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040,
+ 0x5f52, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318,
+ 0x8210, 0x00f0, 0x5f54, 0x157f, 0x007c, 0x127e, 0x2091, 0x8000,
+ 0x601c, 0xa084, 0x000f, 0x1079, 0x5f67, 0x127f, 0x007c, 0x5f76,
+ 0x5f6f, 0x5f71, 0x5f8d, 0x5f6f, 0x5f71, 0x5f71, 0x5f71, 0x1078,
+ 0x12b7, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0x0d7e, 0x6010,
+ 0x2068, 0x1078, 0x6120, 0x0040, 0x5f8a, 0xa00e, 0x2001, 0x0005,
+ 0x1078, 0x372d, 0x1078, 0x36a1, 0x1078, 0x556a, 0xa085, 0x0001,
+ 0x0d7f, 0x007c, 0xa006, 0x0078, 0x5f88, 0x6000, 0xa08a, 0x0010,
+ 0x10c8, 0x12b7, 0x1079, 0x5f95, 0x007c, 0x5fa5, 0x5fc4, 0x5fa7,
+ 0x5fd5, 0x5fc0, 0x5fa5, 0x5f71, 0x5f76, 0x5f76, 0x5f71, 0x5f71,
+ 0x5f71, 0x5f71, 0x5f71, 0x5f71, 0x5f71, 0x1078, 0x12b7, 0x0d7e,
+ 0x6010, 0x2068, 0x1078, 0x6120, 0x0040, 0x5fb2, 0x6850, 0xa085,
+ 0x0005, 0x6852, 0x0d7f, 0x6007, 0x0025, 0x6003, 0x000b, 0x601f,
+ 0x0002, 0x1078, 0x4327, 0x1078, 0x476a, 0xa085, 0x0001, 0x007c,
+ 0x1078, 0x15f2, 0x0078, 0x5fa7, 0x0e7e, 0x2071, 0x6f10, 0x7024,
+ 0xac06, 0x00c0, 0x5fcd, 0x1078, 0x5148, 0x1078, 0x5083, 0x0e7f,
+ 0x00c0, 0x5fa7, 0x1078, 0x5f71, 0x007c, 0x037e, 0x0e7e, 0x2071,
+ 0x6f10, 0x703c, 0xac06, 0x00c0, 0x5fe1, 0x2019, 0x0000, 0x1078,
+ 0x51da, 0x1078, 0x54b6, 0x0e7f, 0x037f, 0x00c0, 0x5fa7, 0x1078,
+ 0x5f71, 0x007c, 0x0c7e, 0x601c, 0xa084, 0x000f, 0x1079, 0x5ff2,
+ 0x0c7f, 0x007c, 0x5ffb, 0x605b, 0x60c8, 0x5fff, 0x5ffb, 0x5ffb,
+ 0x5ffb, 0x556a, 0x605b, 0x007c, 0x6017, 0x0001, 0x007c, 0x6000,
+ 0xa08a, 0x0010, 0x10c8, 0x12b7, 0x1079, 0x6007, 0x007c, 0x6017,
+ 0x6019, 0x603a, 0x604d, 0x604d, 0x6017, 0x5ffb, 0x5ffb, 0x5ffb,
+ 0x604d, 0x604d, 0x6017, 0x6017, 0x6017, 0x6017, 0x6058, 0x1078,
+ 0x12b7, 0x0e7e, 0x6010, 0x2070, 0x7050, 0xa085, 0x0040, 0x7052,
+ 0x2071, 0x6f10, 0x7024, 0xac06, 0x0040, 0x6036, 0x1078, 0x5083,
+ 0x6007, 0x0025, 0x6003, 0x000b, 0x601f, 0x0002, 0x6017, 0x0014,
+ 0x1078, 0x4327, 0x1078, 0x476a, 0x0e7f, 0x007c, 0x6017, 0x0001,
+ 0x0078, 0x6034, 0x0d7e, 0x6010, 0x2068, 0x6850, 0xa085, 0x0040,
+ 0x6852, 0x0d7f, 0x6007, 0x0025, 0x6003, 0x000b, 0x601f, 0x0002,
+ 0x1078, 0x4327, 0x1078, 0x476a, 0x007c, 0x0d7e, 0x6017, 0x0001,
+ 0x6010, 0x2068, 0x6850, 0xa085, 0x0040, 0x6852, 0x0d7f, 0x007c,
+ 0x1078, 0x556a, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x12b7,
+ 0x1079, 0x6063, 0x007c, 0x6073, 0x5ffc, 0x6075, 0x6073, 0x6075,
+ 0x6073, 0x6073, 0x6073, 0x5ffb, 0x5ffb, 0x6073, 0x6073, 0x6073,
+ 0x6073, 0x6073, 0x6073, 0x1078, 0x12b7, 0x0d7e, 0x6018, 0x2068,
+ 0x6804, 0xa084, 0x00ff, 0x0d7f, 0xa08a, 0x000c, 0x10c8, 0x12b7,
+ 0x1079, 0x6083, 0x007c, 0x608f, 0x60b1, 0x608f, 0x60b1, 0x608f,
+ 0x60b1, 0x6091, 0x609a, 0x608f, 0x60b1, 0x608f, 0x60aa, 0x1078,
+ 0x12b7, 0x6004, 0xa08e, 0x0004, 0x0040, 0x60ac, 0xa08e, 0x0002,
+ 0x0040, 0x60ac, 0xa08e, 0x0000, 0x0040, 0x60c0, 0xa08e, 0x001f,
+ 0x0040, 0x60c0, 0xa08e, 0x0021, 0x0040, 0x60c4, 0xa08e, 0x0022,
+ 0x0040, 0x60c0, 0x1078, 0x2051, 0x1078, 0x5778, 0x1078, 0x556a,
+ 0x007c, 0x1078, 0x5778, 0x1078, 0x2051, 0x0e7e, 0x127e, 0x2091,
+ 0x8000, 0x1078, 0x206f, 0x127f, 0x0e7f, 0x1078, 0x556a, 0x007c,
+ 0x1078, 0x5778, 0x0078, 0x60ac, 0x1078, 0x5786, 0x0078, 0x60ac,
+ 0x6000, 0xa08a, 0x0010, 0x10c8, 0x12b7, 0x1079, 0x60d0, 0x007c,
+ 0x60e0, 0x60e0, 0x60e0, 0x60e0, 0x60e0, 0x60e0, 0x60e0, 0x60e0,
+ 0x60e0, 0x5ffb, 0x60e0, 0x5ffc, 0x60e2, 0x5ffc, 0x60eb, 0x60e0,
+ 0x1078, 0x12b7, 0x6007, 0x002b, 0x6003, 0x000d, 0x1078, 0x4327,
+ 0x1078, 0x476a, 0x007c, 0x1078, 0x6276, 0x1078, 0x6120, 0x0040,
+ 0x6109, 0x1078, 0x2051, 0x0d7e, 0x6010, 0x2068, 0x6837, 0x0103,
+ 0x684b, 0x0006, 0x1078, 0x36a1, 0x0d7f, 0x601f, 0x0001, 0x6007,
+ 0x0001, 0x6003, 0x0001, 0x1078, 0x4376, 0x1078, 0x476a, 0x0078,
+ 0x610b, 0x1078, 0x556a, 0x007c, 0xa284, 0x0007, 0x00c0, 0x611d,
+ 0xa282, 0x7400, 0x0048, 0x611d, 0x2001, 0x6d15, 0x2004, 0xa202,
+ 0x00c8, 0x611d, 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x611c,
+ 0x027e, 0x0e7e, 0x2071, 0x6d00, 0x6210, 0x7058, 0xa202, 0x0048,
+ 0x6132, 0x705c, 0xa202, 0x00c8, 0x6132, 0xa085, 0x0001, 0x0e7f,
+ 0x027f, 0x007c, 0xa006, 0x0078, 0x612f, 0x0e7e, 0x0c7e, 0x037e,
+ 0x007e, 0x127e, 0x2091, 0x8000, 0x2061, 0x7400, 0x2071, 0x6d00,
+ 0x7344, 0x7060, 0xa302, 0x00c8, 0x6155, 0x601c, 0xa206, 0x00c0,
+ 0x614d, 0x0c7e, 0x1078, 0x556a, 0x0c7f, 0xace0, 0x0008, 0x7054,
+ 0xac02, 0x00c8, 0x6155, 0x0078, 0x6140, 0x127f, 0x007f, 0x037f,
+ 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0x127e, 0x2091,
+ 0x8000, 0xa188, 0x6e00, 0x210c, 0x81ff, 0x0040, 0x6182, 0x2061,
+ 0x7400, 0x2071, 0x6d00, 0x7344, 0x7060, 0xa302, 0x00c8, 0x6182,
+ 0x6018, 0xa106, 0x00c0, 0x617c, 0x1078, 0x2051, 0x017e, 0x0c7e,
+ 0x1078, 0x556a, 0x0c7f, 0x017f, 0xace0, 0x0008, 0x7054, 0xac02,
+ 0x0048, 0x6170, 0x127f, 0x017f, 0x0c7f, 0x0e7f, 0x007c, 0x0c7e,
+ 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5504, 0x057f,
+ 0x0040, 0x61a0, 0x6612, 0x651a, 0x601f, 0x0003, 0x2009, 0x004b,
+ 0x1078, 0x5591, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
+ 0xa006, 0x0078, 0x619c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000,
+ 0x62a0, 0x0c7e, 0x1078, 0x5504, 0x057f, 0x0040, 0x61ca, 0x6013,
+ 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078, 0x35cf,
+ 0x0c7f, 0x1078, 0x445c, 0x1078, 0x43a9, 0x2c08, 0x1078, 0x6a57,
+ 0x2009, 0x004c, 0x1078, 0x5591, 0xa085, 0x0001, 0x127f, 0x057f,
+ 0x0c7f, 0x007c, 0xa006, 0x0078, 0x61c6, 0x0c7e, 0x057e, 0x127e,
+ 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x5504, 0x057f, 0x0040,
+ 0x61f5, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005, 0x0c7e,
+ 0x2560, 0x1078, 0x35cf, 0x0c7f, 0x1078, 0x445c, 0x1078, 0x43a9,
+ 0x2c08, 0x1078, 0x6a57, 0x2009, 0x004d, 0x1078, 0x5591, 0xa085,
+ 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x61f1,
0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078,
- 0x556f, 0x057f, 0x0040, 0x62f0, 0x6612, 0x651a, 0x601f, 0x0003,
- 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x364c, 0x0c7f, 0x1078,
- 0x457b, 0x1078, 0x44be, 0x2c08, 0x1078, 0x6bfe, 0x2009, 0x004e,
- 0x1078, 0x55fc, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
- 0xa006, 0x0078, 0x62ec, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e,
- 0x1078, 0x556f, 0x017f, 0x0040, 0x630c, 0x660a, 0x611a, 0x601f,
- 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x55fc, 0xa085,
- 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6309, 0x0c7e,
- 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x556f, 0x017f, 0x0040,
- 0x6327, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000,
- 0x1078, 0x55fc, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006,
- 0x0078, 0x6324, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff,
- 0x0040, 0x6334, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x6013,
- 0x0000, 0x601f, 0x0007, 0x6017, 0x0014, 0x007c, 0x067e, 0x0c7e,
- 0x0d7e, 0x2031, 0x6f52, 0x2634, 0xd6e4, 0x0040, 0x634c, 0x6618,
- 0x2660, 0x6e44, 0x1078, 0x3584, 0x0d7f, 0x0c7f, 0x067f, 0x007c,
- 0x007e, 0x017e, 0x6004, 0xa08e, 0x0002, 0x0040, 0x6361, 0xa08e,
- 0x0003, 0x0040, 0x6361, 0xa08e, 0x0004, 0x0040, 0x6361, 0xa085,
- 0x0001, 0x017f, 0x007f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e,
- 0x0000, 0x0040, 0x6379, 0xa08e, 0x001f, 0x0040, 0x6379, 0xa08e,
- 0x0028, 0x0040, 0x6379, 0xa08e, 0x0029, 0x0040, 0x6379, 0xa085,
- 0x0001, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x0c7e, 0x1078, 0x556f, 0x017f, 0x0040, 0x6396, 0x611a, 0x601f,
- 0x0001, 0x2d00, 0x6012, 0x1078, 0x21a8, 0x2009, 0x0028, 0x1078,
- 0x55fc, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078,
- 0x6393, 0xa186, 0x0015, 0x00c0, 0x63ae, 0x2011, 0x6f1c, 0x2204,
- 0xa086, 0x0074, 0x00c0, 0x63ae, 0x1078, 0x59b5, 0x6003, 0x0001,
- 0x6007, 0x0029, 0x1078, 0x448b, 0x0078, 0x63b2, 0x1078, 0x57d2,
- 0x1078, 0x55d5, 0x007c, 0xa186, 0x0015, 0x00c0, 0x63d0, 0x2011,
- 0x6f1c, 0x2204, 0xa086, 0x0014, 0x00c0, 0x63d0, 0x0d7e, 0x6018,
- 0x2068, 0x1078, 0x3547, 0x0d7f, 0x1078, 0x59bf, 0x00c0, 0x63d0,
- 0x2001, 0x0006, 0x1078, 0x3477, 0x1078, 0x567f, 0x0078, 0x63d4,
- 0x1078, 0x57d2, 0x1078, 0x55d5, 0x007c, 0x6848, 0xa086, 0x0005,
- 0x00c0, 0x63dc, 0x1078, 0x63dd, 0x007c, 0x6850, 0xc0ad, 0x6852,
- 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x63eb, 0x067f, 0x007c, 0x63fb, 0x65cb, 0x66ac, 0x63fb, 0x63fb,
- 0x63fb, 0x63fb, 0x63fb, 0x6435, 0x6712, 0x63fb, 0x63fb, 0x63fb,
- 0x63fb, 0x63fb, 0x63fb, 0x1078, 0x1288, 0x067e, 0x6000, 0xa0b2,
- 0x0010, 0x10c8, 0x1288, 0x1079, 0x6407, 0x067f, 0x007c, 0x6417,
- 0x6a13, 0x6417, 0x6417, 0x6417, 0x6417, 0x6417, 0x6417, 0x69ee,
- 0x6a5d, 0x6417, 0x6417, 0x6417, 0x6417, 0x6417, 0x6417, 0x1078,
- 0x1288, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x6423, 0x067f, 0x007c, 0x6433, 0x685f, 0x68d1, 0x68f3, 0x693f,
- 0x6433, 0x6433, 0x6999, 0x671e, 0x69d6, 0x69da, 0x6433, 0x6433,
- 0x6433, 0x6433, 0x6433, 0x1078, 0x1288, 0xa1b2, 0x0030, 0x10c8,
- 0x1288, 0x2100, 0x0079, 0x643c, 0x646c, 0x6549, 0x646c, 0x646c,
- 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c,
- 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c,
- 0x646c, 0x646c, 0x646c, 0x646e, 0x649d, 0x64a8, 0x64d0, 0x64d6,
- 0x650a, 0x6542, 0x646c, 0x646c, 0x6551, 0x646c, 0x646c, 0x646c,
- 0x6558, 0x646c, 0x646c, 0x646c, 0x646c, 0x646c, 0x6575, 0x646c,
- 0x646c, 0x6580, 0x646c, 0x646c, 0x1078, 0x1288, 0x1078, 0x36cc,
- 0x6618, 0x0c7e, 0x2660, 0x1078, 0x34dd, 0x0c7f, 0xa6b0, 0x0001,
- 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x648f, 0x1078,
- 0x6b3d, 0x00c0, 0x64ca, 0x1078, 0x6adb, 0x00c0, 0x648b, 0x6007,
- 0x0008, 0x0078, 0x6544, 0x6007, 0x0009, 0x0078, 0x6544, 0x1078,
- 0x6ccf, 0x0040, 0x6499, 0x1078, 0x6b3d, 0x0040, 0x6483, 0x0078,
- 0x64ca, 0x6013, 0x1900, 0x0078, 0x648b, 0x6106, 0x1078, 0x6a9e,
- 0x6007, 0x0006, 0x0078, 0x6544, 0x6007, 0x0007, 0x0078, 0x6544,
- 0x0d7e, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686,
- 0x0006, 0x0040, 0x64ba, 0xa686, 0x0004, 0x0040, 0x64ba, 0x0d7f,
- 0x0078, 0x64ca, 0x1078, 0x6b9b, 0x00c0, 0x64c5, 0x1078, 0x3547,
- 0x6007, 0x000a, 0x0d7f, 0x0078, 0x6544, 0x6007, 0x000b, 0x0d7f,
- 0x0078, 0x6544, 0x1078, 0x21a8, 0x6007, 0x0001, 0x0078, 0x6544,
- 0x1078, 0x21a8, 0x6007, 0x000c, 0x0078, 0x6544, 0x1078, 0x36cc,
+ 0x5504, 0x057f, 0x0040, 0x6220, 0x6612, 0x651a, 0x601f, 0x0003,
+ 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x35cf, 0x0c7f, 0x1078,
+ 0x445c, 0x1078, 0x43a9, 0x2c08, 0x1078, 0x6a57, 0x2009, 0x004e,
+ 0x1078, 0x5591, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
+ 0xa006, 0x0078, 0x621c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e,
+ 0x1078, 0x5504, 0x017f, 0x0040, 0x623c, 0x660a, 0x611a, 0x601f,
+ 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x5591, 0xa085,
+ 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6239, 0x0c7e,
+ 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5504, 0x017f, 0x0040,
+ 0x6258, 0x660a, 0x611a, 0x601f, 0x0008, 0x2d00, 0x6012, 0x2009,
+ 0x0021, 0x1078, 0x5591, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c,
+ 0xa006, 0x0078, 0x6255, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e,
+ 0x1078, 0x5504, 0x017f, 0x0040, 0x6273, 0x611a, 0x601f, 0x0001,
+ 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078, 0x5591, 0xa085, 0x0001,
+ 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6270, 0x027e, 0x0d7e,
+ 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040, 0x6280, 0x8211, 0x6a3e,
+ 0x0d7f, 0x027f, 0x007c, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017,
+ 0x0014, 0x007c, 0x067e, 0x0c7e, 0x2031, 0x6d52, 0x2634, 0xd6e4,
+ 0x0040, 0x6297, 0x6618, 0x2660, 0x6e44, 0x1078, 0x3507, 0x0c7f,
+ 0x067f, 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12b7,
+ 0x1079, 0x62a4, 0x067f, 0x007c, 0x62b4, 0x640b, 0x64d4, 0x62b4,
+ 0x62b4, 0x62b4, 0x62b4, 0x62b4, 0x62ee, 0x6542, 0x62b4, 0x62b4,
+ 0x62b4, 0x62b4, 0x62b4, 0x62b4, 0x1078, 0x12b7, 0x067e, 0x6000,
+ 0xa0b2, 0x0010, 0x10c8, 0x12b7, 0x1079, 0x62c0, 0x067f, 0x007c,
+ 0x62d0, 0x6837, 0x62d0, 0x62d0, 0x62d0, 0x62d0, 0x62d0, 0x62d0,
+ 0x6812, 0x687d, 0x62d0, 0x62d0, 0x62d0, 0x62d0, 0x62d0, 0x62d0,
+ 0x1078, 0x12b7, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12b7,
+ 0x1079, 0x62dc, 0x067f, 0x007c, 0x62ec, 0x668f, 0x66fb, 0x671c,
+ 0x6769, 0x62ec, 0x62ec, 0x67be, 0x654e, 0x67fa, 0x67fe, 0x62ec,
+ 0x62ec, 0x62ec, 0x62ec, 0x62ec, 0x1078, 0x12b7, 0xa1b2, 0x0024,
+ 0x10c8, 0x12b7, 0x2100, 0x0079, 0x62f5, 0x6319, 0x63f5, 0x6319,
+ 0x6319, 0x6319, 0x6319, 0x6319, 0x6319, 0x6319, 0x6319, 0x6319,
+ 0x6319, 0x6319, 0x6319, 0x6319, 0x6319, 0x6319, 0x6319, 0x6319,
+ 0x6319, 0x6319, 0x6319, 0x6319, 0x631b, 0x634a, 0x6354, 0x637c,
+ 0x6382, 0x63b6, 0x63ee, 0x6319, 0x6319, 0x63fd, 0x6319, 0x6319,
+ 0x6404, 0x1078, 0x12b7, 0x1078, 0x364d, 0x6618, 0x0c7e, 0x2660,
+ 0x1078, 0x3459, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff,
+ 0xa082, 0x0006, 0x0048, 0x633c, 0x1078, 0x6993, 0x00c0, 0x6376,
+ 0x1078, 0x6931, 0x00c0, 0x6338, 0x6007, 0x0008, 0x0078, 0x63f0,
+ 0x6007, 0x0009, 0x0078, 0x63f0, 0x1078, 0x6b02, 0x0040, 0x6346,
+ 0x1078, 0x6993, 0x0040, 0x6330, 0x0078, 0x6376, 0x6013, 0x1900,
+ 0x0078, 0x6338, 0x1078, 0x68b7, 0x6007, 0x0006, 0x0078, 0x63f0,
+ 0x6007, 0x0007, 0x0078, 0x63f0, 0x0d7e, 0x6618, 0x2668, 0x6e04,
+ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6366, 0xa686,
+ 0x0004, 0x0040, 0x6366, 0x0d7f, 0x0078, 0x6376, 0x1078, 0x69f1,
+ 0x00c0, 0x6371, 0x1078, 0x34ca, 0x6007, 0x000a, 0x0d7f, 0x0078,
+ 0x63f0, 0x6007, 0x000b, 0x0d7f, 0x0078, 0x63f0, 0x1078, 0x2051,
+ 0x6007, 0x0001, 0x0078, 0x63f0, 0x1078, 0x2051, 0x6007, 0x000c,
+ 0x0078, 0x63f0, 0x1078, 0x364d, 0x6618, 0xa6b0, 0x0001, 0x2634,
+ 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x63a3, 0xa6b4, 0xff00,
+ 0x8637, 0xa686, 0x0006, 0x00c0, 0x6376, 0x1078, 0x6a00, 0x00c0,
+ 0x639d, 0x6007, 0x000e, 0x0078, 0x63f0, 0x1078, 0x2051, 0x6007,
+ 0x000f, 0x0078, 0x63f0, 0x1078, 0x6b02, 0x0040, 0x63b0, 0xa6b4,
+ 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6395, 0x0078, 0x6376,
+ 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x63f0, 0x1078, 0x364d,
0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006,
- 0x0048, 0x64f7, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0,
- 0x64ca, 0x1078, 0x6baa, 0x00c0, 0x64f1, 0x6007, 0x000e, 0x0078,
- 0x6544, 0x1078, 0x21a8, 0x6007, 0x000f, 0x0078, 0x6544, 0x1078,
- 0x6ccf, 0x0040, 0x6504, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x0040, 0x64e9, 0x0078, 0x64ca, 0x6013, 0x1900, 0x6007, 0x0009,
- 0x0078, 0x6544, 0x1078, 0x36cc, 0x6618, 0xa6b0, 0x0001, 0x2634,
- 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x652f, 0xa6b4, 0xff00,
- 0x8637, 0xa686, 0x0006, 0x00c0, 0x64ca, 0x1078, 0x6bd6, 0x00c0,
- 0x6529, 0x1078, 0x6adb, 0x00c0, 0x6529, 0x6007, 0x0010, 0x0078,
- 0x6544, 0x1078, 0x21a8, 0x6007, 0x0011, 0x0078, 0x6544, 0x1078,
- 0x6ccf, 0x0040, 0x653c, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x0040, 0x651d, 0x0078, 0x64ca, 0x6013, 0x1900, 0x6007, 0x0009,
- 0x0078, 0x6544, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x448b,
- 0x007c, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x448b, 0x0078,
- 0x6548, 0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x448b, 0x007c,
- 0x017e, 0x027e, 0x2011, 0x7388, 0x2214, 0x2c08, 0x1078, 0x6d97,
- 0x00c0, 0x6569, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x0078,
- 0x656e, 0x1078, 0x55d5, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001,
- 0x1078, 0x448b, 0x027f, 0x017f, 0x007c, 0x6106, 0x1078, 0x6587,
- 0x6007, 0x002b, 0x0078, 0x6544, 0x6007, 0x002c, 0x0078, 0x6544,
- 0x6106, 0x1078, 0x658c, 0x6007, 0x002e, 0x0078, 0x6544, 0x0d7e,
- 0x1078, 0x65b2, 0x0d7f, 0x007c, 0x0d7e, 0x1078, 0x65c1, 0x00c0,
- 0x65ab, 0x680c, 0xa08c, 0xff00, 0x6824, 0xa084, 0x00ff, 0xa115,
- 0x6212, 0xd1e4, 0x0040, 0x65a0, 0x2009, 0x0001, 0x0078, 0x65a7,
- 0xd1ec, 0x0040, 0x65ab, 0x2009, 0x0000, 0xa294, 0x00ff, 0x1078,
- 0x21d7, 0x0078, 0x65af, 0xa085, 0x0001, 0x0078, 0x65b0, 0xa006,
- 0x0d7f, 0x007c, 0x2069, 0x738d, 0x6800, 0xa082, 0x0010, 0x00c8,
- 0x65bf, 0x6013, 0x0000, 0xa085, 0x0001, 0x0078, 0x65c0, 0xa006,
- 0x007c, 0x6013, 0x0000, 0x2069, 0x738c, 0x6808, 0xa084, 0xff00,
- 0xa086, 0x0800, 0x007c, 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x1288,
- 0xa1b6, 0x0013, 0x00c0, 0x65d7, 0x2008, 0x0079, 0x65ea, 0xa1b6,
- 0x0027, 0x0040, 0x65df, 0xa1b6, 0x0014, 0x10c0, 0x1288, 0x2001,
- 0x0007, 0x1078, 0x3485, 0x1078, 0x479a, 0x1078, 0x6337, 0x1078,
- 0x4893, 0x007c, 0x661a, 0x661c, 0x661a, 0x661a, 0x661a, 0x661c,
- 0x6624, 0x6687, 0x664a, 0x6687, 0x665e, 0x6687, 0x6624, 0x6687,
- 0x667f, 0x6687, 0x667f, 0x6687, 0x6687, 0x661a, 0x661a, 0x661a,
- 0x661a, 0x661a, 0x661a, 0x661a, 0x661a, 0x661a, 0x661a, 0x661a,
- 0x661a, 0x661a, 0x6687, 0x661a, 0x661a, 0x661a, 0x661a, 0x6687,
- 0x6687, 0x661a, 0x661a, 0x661a, 0x661a, 0x6687, 0x6687, 0x661a,
- 0x6687, 0x6687, 0x1078, 0x1288, 0x1078, 0x479a, 0x6003, 0x0002,
- 0x1078, 0x4893, 0x0078, 0x668d, 0x0f7e, 0x2079, 0x6f51, 0x7804,
- 0x0f7f, 0xd0ac, 0x00c0, 0x6687, 0x2001, 0x0000, 0x1078, 0x3463,
- 0x2001, 0x0002, 0x1078, 0x3477, 0x1078, 0x479a, 0x601f, 0x0001,
- 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x448b, 0x1078, 0x4893,
- 0x0c7e, 0x6118, 0x2160, 0x2009, 0x0001, 0x1078, 0x4194, 0x0c7f,
- 0x0078, 0x668d, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4,
- 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6687, 0xa686, 0x0004,
- 0x0040, 0x6687, 0x2001, 0x0004, 0x0078, 0x6685, 0x2001, 0x6f00,
- 0x2004, 0xa086, 0x0003, 0x00c0, 0x6667, 0x1078, 0x2a74, 0x2001,
- 0x0006, 0x1078, 0x668e, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f,
- 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6687, 0x2001,
- 0x0006, 0x0078, 0x6685, 0x2001, 0x0004, 0x0078, 0x6685, 0x2001,
- 0x0006, 0x1078, 0x668e, 0x0078, 0x6687, 0x1078, 0x3485, 0x1078,
- 0x479a, 0x1078, 0x55d5, 0x1078, 0x4893, 0x007c, 0x017e, 0x0d7e,
- 0x6118, 0x2168, 0x6900, 0xd184, 0x0040, 0x66a9, 0x6104, 0xa18e,
- 0x000a, 0x00c0, 0x66a1, 0x699c, 0xd1a4, 0x00c0, 0x66a1, 0x2001,
- 0x0007, 0x1078, 0x3477, 0x2001, 0x0000, 0x1078, 0x3463, 0x1078,
- 0x21c6, 0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804,
- 0xa084, 0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1288,
- 0xa1b6, 0x0015, 0x00c0, 0x66c0, 0x1079, 0x66c7, 0x0078, 0x66c6,
- 0xa1b6, 0x0016, 0x10c0, 0x1288, 0x1079, 0x66f7, 0x007c, 0x582f,
- 0x582f, 0x582f, 0x582f, 0x582f, 0x582f, 0x582f, 0x66d3, 0x582f,
- 0x582f, 0x582f, 0x582f, 0x0f7e, 0x2079, 0x6f51, 0x7804, 0x0f7f,
- 0xd0ac, 0x00c0, 0x66ef, 0x2001, 0x0000, 0x1078, 0x3463, 0x2001,
- 0x0002, 0x1078, 0x3477, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007,
- 0x0002, 0x1078, 0x448b, 0x1078, 0x4893, 0x0078, 0x66f6, 0x2011,
- 0x7383, 0x220c, 0x1078, 0x32cf, 0x1078, 0x55d5, 0x007c, 0x582f,
- 0x582f, 0x582f, 0x582f, 0x582f, 0x582f, 0x582f, 0x6703, 0x582f,
- 0x582f, 0x582f, 0x582f, 0x1078, 0x59b2, 0x00c0, 0x670f, 0x6003,
- 0x0001, 0x6007, 0x0001, 0x1078, 0x448b, 0x0078, 0x6711, 0x1078,
- 0x55d5, 0x007c, 0x6004, 0xa08a, 0x0030, 0x10c8, 0x1288, 0x1078,
- 0x479a, 0x1078, 0x6337, 0x1078, 0x4893, 0x007c, 0xa182, 0x0040,
- 0x0079, 0x6722, 0x6732, 0x6732, 0x6732, 0x6732, 0x6734, 0x6732,
- 0x6732, 0x6732, 0x6732, 0x6732, 0x6732, 0x6732, 0x6732, 0x6732,
- 0x6732, 0x6732, 0x1078, 0x1288, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e,
- 0x047e, 0x027e, 0x6106, 0x2071, 0x7380, 0x7444, 0xa4a4, 0xe600,
- 0x0040, 0x67a5, 0xa486, 0x2000, 0x0040, 0x6764, 0xa486, 0x0400,
- 0x0040, 0x6764, 0x7130, 0xa18c, 0x00ff, 0xa182, 0x0010, 0x00c8,
- 0x6837, 0x0c7e, 0x1078, 0x4225, 0x2c68, 0x0c7f, 0x6a00, 0xa284,
- 0x0001, 0x0040, 0x6818, 0x1078, 0x42e3, 0x0040, 0x6843, 0xa295,
- 0x0200, 0x6a02, 0x0078, 0x676a, 0x2009, 0x0001, 0x2011, 0x0200,
- 0x1078, 0x42cd, 0x1078, 0x12e2, 0x1040, 0x1288, 0x6003, 0x0007,
- 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x6c5a,
- 0x2c00, 0x685e, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0xa18c,
- 0x00ff, 0xa10d, 0x6946, 0x684f, 0x0000, 0x6857, 0x0036, 0x1078,
- 0x3720, 0xa486, 0x2000, 0x00c0, 0x6793, 0x2019, 0x0017, 0x1078,
- 0x6d5c, 0x0078, 0x6805, 0xa486, 0x0400, 0x00c0, 0x679d, 0x2019,
- 0x0002, 0x1078, 0x6d5c, 0x0078, 0x6805, 0xa486, 0x0200, 0x00c0,
- 0x67a3, 0x1078, 0x6d4d, 0x0078, 0x6805, 0x7130, 0xa184, 0xff00,
- 0x00c0, 0x6857, 0xa18c, 0x00ff, 0xa182, 0x0010, 0x00c8, 0x6857,
- 0x0c7e, 0x1078, 0x4225, 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001,
- 0x0040, 0x685b, 0xa284, 0x0300, 0x00c0, 0x6853, 0x6804, 0xa005,
- 0x0040, 0x6843, 0x8001, 0x6806, 0x6003, 0x0007, 0x1078, 0x12c7,
- 0x0040, 0x680c, 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116,
- 0x683b, 0x0000, 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007,
- 0xa10d, 0x6946, 0x6853, 0x003d, 0x7044, 0xa084, 0x0003, 0xa086,
- 0x0002, 0x00c0, 0x67e7, 0x684f, 0x0040, 0x0078, 0x67f1, 0xa086,
- 0x0001, 0x00c0, 0x67ef, 0x684f, 0x0080, 0x0078, 0x67f1, 0x684f,
- 0x0000, 0x20a9, 0x000a, 0x2001, 0x7390, 0xad90, 0x0015, 0x200c,
- 0x810f, 0x2112, 0x8000, 0x8210, 0x00f0, 0x67f7, 0x200c, 0x6982,
- 0x8000, 0x200c, 0x697e, 0x1078, 0x3720, 0x027f, 0x047f, 0x157f,
- 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x6013, 0x0100, 0x6003, 0x0001,
- 0x6007, 0x0041, 0x1078, 0x443e, 0x1078, 0x4893, 0x0078, 0x6805,
- 0x2069, 0x7392, 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, 0x00c0,
- 0x6837, 0x2069, 0x7380, 0x686c, 0xa084, 0x00ff, 0x017e, 0x6110,
- 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003, 0x0001, 0x6007,
- 0x0043, 0x1078, 0x443e, 0x1078, 0x4893, 0x0078, 0x6805, 0x6013,
- 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x443e, 0x1078,
- 0x4893, 0x0078, 0x6805, 0x6013, 0x0300, 0x0078, 0x6849, 0x6013,
- 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x443e, 0x1078,
- 0x4893, 0x0078, 0x6805, 0x6013, 0x0500, 0x0078, 0x6849, 0x6013,
- 0x0600, 0x0078, 0x6818, 0x6013, 0x0200, 0x0078, 0x6818, 0xa186,
- 0x0013, 0x00c0, 0x6871, 0x6004, 0xa08a, 0x0040, 0x1048, 0x1288,
- 0xa08a, 0x0050, 0x10c8, 0x1288, 0xa082, 0x0040, 0x2008, 0x0079,
- 0x68a2, 0xa186, 0x0047, 0x00c0, 0x6877, 0x0078, 0x68d1, 0xa186,
- 0x0027, 0x0040, 0x687f, 0xa186, 0x0014, 0x10c0, 0x1288, 0x6004,
- 0xa082, 0x0040, 0x2008, 0x0079, 0x6885, 0x6895, 0x6897, 0x6897,
- 0x6895, 0x6895, 0x6895, 0x6895, 0x6895, 0x6895, 0x6895, 0x6895,
- 0x6895, 0x6895, 0x6895, 0x6895, 0x6895, 0x1078, 0x1288, 0x2001,
- 0x0007, 0x1078, 0x3485, 0x1078, 0x479a, 0x1078, 0x6337, 0x1078,
- 0x4893, 0x007c, 0x68b2, 0x68c2, 0x68bb, 0x68cb, 0x68b2, 0x68b2,
- 0x68b2, 0x68b2, 0x68b2, 0x68b2, 0x68b2, 0x68b2, 0x68b2, 0x68b2,
- 0x68b2, 0x68b2, 0x1078, 0x1288, 0x6010, 0xa088, 0x0013, 0x2104,
- 0xa085, 0x0400, 0x200a, 0x1078, 0x479a, 0x6003, 0x0002, 0x1078,
- 0x4893, 0x007c, 0x1078, 0x479a, 0x1078, 0x42a6, 0x1078, 0x55d5,
- 0x1078, 0x4893, 0x007c, 0x1078, 0x479a, 0x2009, 0x0041, 0x0078,
- 0x6999, 0xa182, 0x0040, 0x0079, 0x68d5, 0x68e5, 0x68e7, 0x68e5,
- 0x68e5, 0x68e5, 0x68e5, 0x68e5, 0x68e8, 0x68e5, 0x68e5, 0x68e5,
- 0x68e5, 0x68e5, 0x68e5, 0x68e5, 0x68e5, 0x1078, 0x1288, 0x007c,
- 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
- 0x1078, 0x1525, 0x007c, 0xa182, 0x0040, 0x0079, 0x68f7, 0x6907,
- 0x6907, 0x6907, 0x6907, 0x6907, 0x6907, 0x6907, 0x6907, 0x6907,
- 0x6909, 0x692c, 0x6907, 0x6907, 0x6907, 0x6907, 0x692c, 0x1078,
- 0x1288, 0x1078, 0x4842, 0x1078, 0x4943, 0x6010, 0x0d7e, 0x2068,
- 0x684c, 0xd0fc, 0x0040, 0x691f, 0xa08c, 0x0003, 0xa18e, 0x0002,
- 0x0040, 0x6925, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x6999, 0x6003,
- 0x0007, 0x1078, 0x42a6, 0x0d7f, 0x007c, 0x1078, 0x42a6, 0x1078,
- 0x55d5, 0x0d7f, 0x0078, 0x6924, 0x037e, 0x1078, 0x4842, 0x1078,
- 0x4943, 0x6010, 0x0d7e, 0x2068, 0x2019, 0x0004, 0x1078, 0x6d80,
- 0x1078, 0x6337, 0x6017, 0x0028, 0x0d7f, 0x037f, 0x007c, 0xa186,
- 0x0013, 0x00c0, 0x694d, 0x6004, 0xa086, 0x0042, 0x10c0, 0x1288,
- 0x1078, 0x479a, 0x1078, 0x4893, 0x007c, 0xa186, 0x0027, 0x0040,
- 0x6955, 0xa186, 0x0014, 0x00c0, 0x6965, 0x6004, 0xa086, 0x0042,
- 0x10c0, 0x1288, 0x2001, 0x0007, 0x1078, 0x3485, 0x1078, 0x479a,
- 0x1078, 0x6337, 0x1078, 0x4893, 0x007c, 0xa182, 0x0040, 0x0079,
- 0x6969, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979,
- 0x697b, 0x6987, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979,
- 0x6979, 0x1078, 0x1288, 0x037e, 0x047e, 0x20e1, 0x0005, 0x3d18,
- 0x3e20, 0x2c10, 0x1078, 0x1525, 0x047f, 0x037f, 0x007c, 0x6010,
- 0x0d7e, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x6993, 0x2009, 0x0041,
- 0x0d7f, 0x0078, 0x6999, 0x6003, 0x0007, 0x1078, 0x42a6, 0x0d7f,
- 0x007c, 0xa182, 0x0040, 0x0079, 0x699d, 0x69ad, 0x69af, 0x69bb,
- 0x69c7, 0x69ad, 0x69ad, 0x69ad, 0x69ad, 0x69ad, 0x69ad, 0x69ad,
- 0x69ad, 0x69ad, 0x69ad, 0x69ad, 0x69ad, 0x1078, 0x1288, 0x6003,
- 0x0001, 0x6106, 0x1078, 0x443e, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x4893, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x443e,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x4893, 0x127f, 0x007c, 0x6003,
- 0x0003, 0x6106, 0x2c10, 0x1078, 0x1936, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x44aa, 0x1078, 0x4943, 0x127f, 0x007c, 0x1078, 0x479a,
- 0x0078, 0x69dc, 0x1078, 0x4842, 0x6110, 0x81ff, 0x0040, 0x69e9,
- 0x0d7e, 0x2168, 0x037e, 0x2019, 0x0029, 0x1078, 0x6d80, 0x037f,
- 0x0d7f, 0x1078, 0x6337, 0x1078, 0x4893, 0x007c, 0xa182, 0x0085,
- 0x0079, 0x69f2, 0x69f9, 0x69f9, 0x69f9, 0x69fb, 0x69f9, 0x69f9,
- 0x69f9, 0x1078, 0x1288, 0x027e, 0x0e7e, 0x2071, 0x7380, 0x7220,
- 0x1078, 0x6c9a, 0x0040, 0x6a08, 0x6007, 0x0086, 0x0078, 0x6a0a,
- 0x6007, 0x0087, 0x6003, 0x0001, 0x1078, 0x443e, 0x1078, 0x4893,
- 0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x6a24, 0x6004,
- 0xa08a, 0x0085, 0x1048, 0x1288, 0xa08a, 0x008c, 0x10c8, 0x1288,
- 0xa082, 0x0085, 0x0079, 0x6a37, 0xa186, 0x0027, 0x0040, 0x6a2c,
- 0xa186, 0x0014, 0x10c0, 0x1288, 0x2001, 0x0007, 0x1078, 0x3485,
- 0x1078, 0x479a, 0x1078, 0x6337, 0x1078, 0x4893, 0x007c, 0x6a3e,
- 0x6a40, 0x6a40, 0x6a3e, 0x6a3e, 0x6a3e, 0x6a3e, 0x1078, 0x1288,
- 0x1078, 0x479a, 0x1078, 0x55d5, 0x1078, 0x4893, 0x007c, 0xa182,
- 0x0085, 0x1048, 0x1288, 0xa182, 0x008c, 0x10c8, 0x1288, 0xa182,
- 0x0085, 0x0079, 0x6a53, 0x6a5a, 0x6a5a, 0x6a5a, 0x6a5c, 0x6a5a,
- 0x6a5a, 0x6a5a, 0x1078, 0x1288, 0x007c, 0x1078, 0x479a, 0x1078,
- 0x6337, 0x1078, 0x4893, 0x007c, 0x037e, 0x2019, 0x000b, 0x1078,
- 0x6a6d, 0x601f, 0x0006, 0x037f, 0x007c, 0x127e, 0x037e, 0x087e,
- 0x2091, 0x8000, 0x2c40, 0x1078, 0x52e8, 0x00c0, 0x6a9a, 0x1078,
- 0x5389, 0x00c0, 0x6a9a, 0x6000, 0xa086, 0x0000, 0x0040, 0x6a9a,
- 0x601c, 0xa086, 0x0007, 0x0040, 0x6a9a, 0x0d7e, 0x6000, 0xa086,
- 0x0004, 0x00c0, 0x6a8d, 0x1078, 0x1629, 0x6010, 0x2068, 0x1078,
- 0x6216, 0x0040, 0x6a95, 0x1078, 0x6d80, 0x0d7f, 0x6013, 0x0000,
- 0x601f, 0x0007, 0x087f, 0x037f, 0x127f, 0x007c, 0x0f7e, 0x0c7e,
- 0x037e, 0x157e, 0x2079, 0x7380, 0x7838, 0xa084, 0x00ff, 0xa005,
- 0x00c0, 0x6ad6, 0x783c, 0x1078, 0x1fe4, 0x017e, 0x0c7e, 0x1078,
- 0x34cb, 0x00c0, 0x6ad4, 0x2011, 0x7390, 0xac98, 0x000a, 0x20a9,
- 0x0004, 0x1078, 0x5a4b, 0x00c0, 0x6ad4, 0x017f, 0x027f, 0x027e,
- 0x017e, 0x2019, 0x0029, 0x1078, 0x545d, 0x1078, 0x457b, 0x1078,
- 0x44be, 0x017f, 0x1078, 0x6bfe, 0x1078, 0x364c, 0x017f, 0x1078,
- 0x32cf, 0xa006, 0x0078, 0x6ad6, 0x0c7f, 0x017f, 0x157f, 0x037f,
- 0x0c7f, 0x0f7f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x2009, 0x6f1c,
- 0x2104, 0xa086, 0x0074, 0x00c0, 0x6b32, 0x2069, 0x738e, 0x690c,
- 0xa182, 0x0100, 0x0048, 0x6b22, 0x6908, 0xa184, 0x8000, 0x0040,
- 0x6b2e, 0xa184, 0x0800, 0x0040, 0x6b2e, 0x6910, 0xa18a, 0x0001,
- 0x0048, 0x6b26, 0x6914, 0x2069, 0x73ae, 0x6904, 0x81ff, 0x00c0,
- 0x6b1a, 0x690c, 0xa182, 0x0100, 0x0048, 0x6b22, 0x6908, 0x81ff,
- 0x00c0, 0x6b1e, 0x6910, 0xa18a, 0x0001, 0x0048, 0x6b26, 0x6918,
- 0xa18a, 0x0001, 0x0048, 0x6b2e, 0x0078, 0x6b38, 0x6013, 0x0100,
- 0x0078, 0x6b34, 0x6013, 0x0300, 0x0078, 0x6b34, 0x6013, 0x0500,
- 0x0078, 0x6b34, 0x6013, 0x0700, 0x0078, 0x6b34, 0x6013, 0x0900,
- 0x0078, 0x6b34, 0x6013, 0x0b00, 0x0078, 0x6b34, 0x6013, 0x0f00,
- 0x0078, 0x6b34, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078, 0x6b39,
- 0xa006, 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x027e,
- 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286,
- 0x0006, 0x0040, 0x6b61, 0xa286, 0x0004, 0x0040, 0x6b61, 0xa394,
- 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x6b61, 0xa286, 0x0004,
- 0x0040, 0x6b61, 0x0c7e, 0x2d60, 0x1078, 0x34dd, 0x0c7f, 0x0078,
- 0x6b94, 0x2011, 0x7396, 0xad98, 0x000a, 0x20a9, 0x0004, 0x1078,
- 0x5a4b, 0x00c0, 0x6b95, 0x2011, 0x739a, 0xad98, 0x0006, 0x20a9,
- 0x0004, 0x1078, 0x5a4b, 0x00c0, 0x6b95, 0x047e, 0x017e, 0x6aa0,
- 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x6f52, 0x210c, 0xd1a4,
- 0x0040, 0x6b89, 0x2009, 0x0029, 0x1078, 0x6dc4, 0x6800, 0xc0e5,
- 0x6802, 0x2019, 0x0029, 0x1078, 0x457b, 0x1078, 0x44be, 0x2c08,
- 0x1078, 0x6bfe, 0x017f, 0x047f, 0xa006, 0x157f, 0x037f, 0x027f,
- 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0x738e, 0x6800, 0xa086,
- 0x0800, 0x0040, 0x6ba7, 0x6013, 0x0000, 0x0078, 0x6ba8, 0xa006,
- 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e, 0x037e, 0x157e,
- 0x2079, 0x738c, 0x7830, 0xa00d, 0x00c0, 0x6bcf, 0x7834, 0x1078,
- 0x1fe4, 0x1078, 0x34cb, 0x00c0, 0x6bcf, 0x2011, 0x7390, 0xac98,
- 0x000a, 0x20a9, 0x0004, 0x1078, 0x5a4b, 0x00c0, 0x6bcf, 0x2011,
- 0x7394, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x5a4b, 0x157f,
- 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e, 0x007e,
- 0x017e, 0x027e, 0x037e, 0x157e, 0x2011, 0x7383, 0x2204, 0x1078,
- 0x1fe4, 0x1078, 0x34cb, 0x00c0, 0x6bf7, 0x2011, 0x7396, 0xac98,
- 0x000a, 0x20a9, 0x0004, 0x1078, 0x5a4b, 0x00c0, 0x6bf7, 0x2011,
- 0x739a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x5a4b, 0x157f,
- 0x037f, 0x027f, 0x017f, 0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e,
- 0x077e, 0x067e, 0x057e, 0x047e, 0x027e, 0x127e, 0x2091, 0x8000,
- 0x2029, 0x70bf, 0x252c, 0x2021, 0x70c5, 0x2424, 0x2061, 0x7500,
- 0x2071, 0x6f00, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8, 0x6c63,
- 0x2100, 0xac06, 0x0040, 0x6c59, 0x1078, 0x6ddc, 0x0040, 0x6c59,
- 0x671c, 0xa786, 0x0001, 0x0040, 0x6c78, 0xa786, 0x0007, 0x0040,
- 0x6c59, 0x2500, 0xac06, 0x0040, 0x6c59, 0x2400, 0xac06, 0x0040,
- 0x6c59, 0x1078, 0x6df0, 0x00c0, 0x6c59, 0x0d7e, 0x6000, 0xa086,
- 0x0004, 0x00c0, 0x6c3f, 0x017e, 0x1078, 0x1629, 0x017f, 0x6010,
- 0x2068, 0x1078, 0x6216, 0x0040, 0x6c56, 0xa786, 0x0003, 0x00c0,
- 0x6c6c, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x017e, 0x1078,
- 0x63d5, 0x1078, 0x3720, 0x017f, 0x1078, 0x632a, 0x0d7f, 0x1078,
- 0x6337, 0xace0, 0x0008, 0x2001, 0x6f15, 0x2004, 0xac02, 0x00c8,
- 0x6c63, 0x0078, 0x6c10, 0x127f, 0x027f, 0x047f, 0x057f, 0x067f,
- 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0, 0x6c49,
- 0xa386, 0x0005, 0x0040, 0x6c59, 0x1078, 0x6d80, 0x0078, 0x6c56,
- 0x1078, 0x6df0, 0x00c0, 0x6c59, 0xa180, 0x0001, 0x2004, 0xa086,
- 0x0018, 0x00c0, 0x6c59, 0x6000, 0xa086, 0x0002, 0x00c0, 0x6c59,
- 0x1078, 0x6350, 0x0040, 0x6c94, 0x1078, 0x6364, 0x00c0, 0x6c59,
- 0x1078, 0x57d2, 0x0078, 0x6c96, 0x1078, 0x21c6, 0x1078, 0x6337,
- 0x0078, 0x6c59, 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0x1078,
- 0x6d97, 0x017f, 0x0040, 0x6ca9, 0x601c, 0xa084, 0x0007, 0x1079,
- 0x6cac, 0x0e7f, 0x0c7f, 0x007c, 0x6cb4, 0x6cb4, 0x6cb4, 0x6cb4,
- 0x6cb4, 0x6cb4, 0x6cb6, 0x6cb4, 0xa006, 0x007c, 0x047e, 0x017e,
- 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00,
- 0x2009, 0x0020, 0x1078, 0x6dc4, 0x017f, 0x047f, 0x037e, 0x2019,
- 0x0002, 0x1078, 0x6a6d, 0x037f, 0xa085, 0x0001, 0x007c, 0x2001,
- 0x0001, 0x1078, 0x3463, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9,
- 0x0004, 0x2019, 0x6f05, 0x2011, 0x7396, 0x1078, 0x5a4b, 0x037f,
- 0x027f, 0x017f, 0x157f, 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e,
- 0x077e, 0x067e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2061, 0x7500,
- 0x2079, 0x0001, 0x8fff, 0x0040, 0x6d40, 0x2071, 0x6f00, 0x7644,
- 0x7060, 0x8001, 0xa602, 0x00c8, 0x6d40, 0x88ff, 0x0040, 0x6d06,
- 0x2800, 0xac06, 0x00c0, 0x6d36, 0x2079, 0x0000, 0x1078, 0x6ddc,
- 0x0040, 0x6d36, 0x2400, 0xac06, 0x0040, 0x6d36, 0x671c, 0xa786,
- 0x0006, 0x00c0, 0x6d36, 0xa786, 0x0007, 0x0040, 0x6d36, 0x88ff,
- 0x00c0, 0x6d1e, 0x6018, 0xa206, 0x00c0, 0x6d36, 0x0d7e, 0x6000,
- 0xa086, 0x0004, 0x00c0, 0x6d26, 0x1078, 0x1629, 0x6010, 0x2068,
- 0x1078, 0x6216, 0x0040, 0x6d30, 0x047e, 0x1078, 0x6d80, 0x047f,
- 0x0d7f, 0x1078, 0x6337, 0x88ff, 0x00c0, 0x6d49, 0xace0, 0x0008,
- 0x2001, 0x6f15, 0x2004, 0xac02, 0x00c8, 0x6d40, 0x0078, 0x6cf2,
- 0xa006, 0x127f, 0x027f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x0f7f,
- 0x007c, 0xa8c5, 0x0001, 0x0078, 0x6d41, 0x087e, 0x2041, 0x0000,
- 0x2c20, 0x2019, 0x0002, 0x6218, 0x1078, 0x52e8, 0x1078, 0x5389,
- 0x1078, 0x6ce5, 0x087f, 0x007c, 0x027e, 0x047e, 0x087e, 0x0c7e,
- 0x157e, 0x2c20, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e, 0x037e,
- 0x1078, 0x34cb, 0x00c0, 0x6d75, 0x2c10, 0x2041, 0x0000, 0x1078,
- 0x52e8, 0x1078, 0x5389, 0x1078, 0x6ce5, 0x037f, 0x017f, 0x8108,
- 0x00f0, 0x6d66, 0x157f, 0x0c7f, 0x087f, 0x047f, 0x027f, 0x007c,
- 0x017e, 0x0f7e, 0x8dff, 0x0040, 0x6d94, 0x6800, 0xa07d, 0x0040,
- 0x6d91, 0x6803, 0x0000, 0x6b52, 0x1078, 0x3720, 0x2f68, 0x0078,
- 0x6d85, 0x6b52, 0x1078, 0x3720, 0x0f7f, 0x017f, 0x007c, 0x0e7e,
- 0x047e, 0x037e, 0x2061, 0x7500, 0x2071, 0x6f00, 0x7444, 0x7060,
- 0x8001, 0xa402, 0x00c8, 0x6dbf, 0x2100, 0xac06, 0x0040, 0x6db1,
- 0x6000, 0xa086, 0x0000, 0x0040, 0x6db1, 0x6008, 0xa206, 0x0040,
- 0x6dbb, 0xace0, 0x0008, 0x2001, 0x6f15, 0x2004, 0xac02, 0x00c8,
- 0x6dbf, 0x0078, 0x6d9c, 0xa085, 0x0001, 0x0078, 0x6dc0, 0xa006,
- 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e, 0x007e, 0x1078, 0x12e2,
- 0x007f, 0x1040, 0x1288, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b,
- 0x0000, 0x685b, 0x0000, 0x685e, 0x6956, 0x6c46, 0x684f, 0x0000,
- 0x1078, 0x3720, 0x0d7f, 0x007c, 0x6700, 0xa786, 0x0000, 0x0040,
- 0x6def, 0xa786, 0x0001, 0x0040, 0x6def, 0xa786, 0x000a, 0x0040,
- 0x6def, 0xa786, 0x0009, 0x0040, 0x6def, 0xa085, 0x0001, 0x007c,
- 0x0e7e, 0x6018, 0x2070, 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x127e,
- 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x6f40, 0xd5a4, 0x0040,
- 0x6e04, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0x6e0a, 0x7030,
- 0x8000, 0x7032, 0xd5ac, 0x0040, 0x6e11, 0x2071, 0x6f4a, 0x1078,
- 0x6e40, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e,
- 0x2091, 0x8000, 0x2071, 0x6f40, 0xd5a4, 0x0040, 0x6e22, 0x7034,
- 0x8000, 0x7036, 0xd5b4, 0x0040, 0x6e28, 0x7030, 0x8000, 0x7032,
- 0xd5ac, 0x0040, 0x6e2f, 0x2071, 0x6f4a, 0x1078, 0x6e40, 0x0e7f,
- 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000,
- 0x2071, 0x6f42, 0x1078, 0x6e40, 0x0e7f, 0x007f, 0x127f, 0x007c,
- 0x2e04, 0x8000, 0x2072, 0x00c8, 0x6e49, 0x8e70, 0x2e04, 0x8000,
- 0x2072, 0x007c, 0x0e7e, 0x2071, 0x6f40, 0x1078, 0x6e40, 0x0e7f,
- 0x007c, 0x0e7e, 0x2071, 0x6f44, 0x1078, 0x6e40, 0x0e7f, 0x007c,
- 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
- 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000,
- 0x5879
+ 0x0048, 0x63db, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0,
+ 0x6376, 0x1078, 0x6a2b, 0x00c0, 0x63d5, 0x1078, 0x6931, 0x00c0,
+ 0x63d5, 0x6007, 0x0010, 0x0078, 0x63f0, 0x1078, 0x2051, 0x6007,
+ 0x0011, 0x0078, 0x63f0, 0x1078, 0x6b02, 0x0040, 0x63e8, 0xa6b4,
+ 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x63c9, 0x0078, 0x6376,
+ 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x63f0, 0x6007, 0x0012,
+ 0x6003, 0x0001, 0x1078, 0x4376, 0x007c, 0x6007, 0x0001, 0x6003,
+ 0x0001, 0x1078, 0x4376, 0x0078, 0x63f4, 0x6007, 0x0020, 0x6003,
+ 0x0001, 0x1078, 0x4376, 0x007c, 0x6007, 0x0023, 0x6003, 0x0001,
+ 0x1078, 0x4376, 0x007c, 0x6004, 0xa0b2, 0x0024, 0x10c8, 0x12b7,
+ 0xa1b6, 0x0013, 0x00c0, 0x6417, 0x2008, 0x0079, 0x6426, 0xa1b6,
+ 0x0014, 0x10c0, 0x12b7, 0x2001, 0x0007, 0x1078, 0x3401, 0x1078,
+ 0x4671, 0x1078, 0x6283, 0x1078, 0x476a, 0x007c, 0x644a, 0x644c,
+ 0x644a, 0x644a, 0x644a, 0x644c, 0x6454, 0x64af, 0x6472, 0x64af,
+ 0x6486, 0x64af, 0x6454, 0x64af, 0x64a7, 0x64af, 0x64a7, 0x64af,
+ 0x64af, 0x644a, 0x644a, 0x644a, 0x644a, 0x644a, 0x644a, 0x644a,
+ 0x644a, 0x644a, 0x644a, 0x644a, 0x644a, 0x644a, 0x64af, 0x644a,
+ 0x644a, 0x64af, 0x1078, 0x12b7, 0x1078, 0x4671, 0x6003, 0x0002,
+ 0x1078, 0x476a, 0x0078, 0x64b5, 0x0f7e, 0x2079, 0x6d51, 0x7804,
+ 0x0f7f, 0xd0ac, 0x00c0, 0x64af, 0x2001, 0x0000, 0x1078, 0x33df,
+ 0x2001, 0x0002, 0x1078, 0x33f3, 0x1078, 0x4671, 0x601f, 0x0001,
+ 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4376, 0x1078, 0x476a,
+ 0x0078, 0x64b5, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4,
+ 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x64af, 0xa686, 0x0004,
+ 0x0040, 0x64af, 0x2001, 0x0004, 0x0078, 0x64ad, 0x2001, 0x6d00,
+ 0x2004, 0xa086, 0x0003, 0x00c0, 0x648f, 0x1078, 0x2ad1, 0x2001,
+ 0x0006, 0x1078, 0x64b6, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f,
+ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x64af, 0x2001,
+ 0x0006, 0x0078, 0x64ad, 0x2001, 0x0004, 0x0078, 0x64ad, 0x2001,
+ 0x0006, 0x1078, 0x64b6, 0x0078, 0x64af, 0x1078, 0x3401, 0x1078,
+ 0x4671, 0x1078, 0x556a, 0x1078, 0x476a, 0x007c, 0x017e, 0x0d7e,
+ 0x6118, 0x2168, 0x6900, 0xd184, 0x0040, 0x64d1, 0x6104, 0xa18e,
+ 0x000a, 0x00c0, 0x64c9, 0x699c, 0xd1a4, 0x00c0, 0x64c9, 0x2001,
+ 0x0007, 0x1078, 0x33f3, 0x2001, 0x0000, 0x1078, 0x33df, 0x1078,
+ 0x206f, 0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804,
+ 0xa084, 0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x12b7,
+ 0xa1b6, 0x0015, 0x00c0, 0x64e8, 0x1079, 0x64ef, 0x0078, 0x64ee,
+ 0xa1b6, 0x0016, 0x10c0, 0x12b7, 0x1079, 0x6527, 0x007c, 0x57ef,
+ 0x57ef, 0x57ef, 0x57ef, 0x57ef, 0x57ef, 0x57ef, 0x64fb, 0x57ef,
+ 0x57ef, 0x57ef, 0x57ef, 0x0f7e, 0x2079, 0x6d51, 0x7804, 0x0f7f,
+ 0xd0ac, 0x00c0, 0x6517, 0x2001, 0x0000, 0x1078, 0x33df, 0x2001,
+ 0x0002, 0x1078, 0x33f3, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007,
+ 0x0002, 0x1078, 0x4376, 0x1078, 0x476a, 0x0078, 0x6526, 0x2011,
+ 0x7283, 0x220c, 0x017e, 0x0c7e, 0x1078, 0x3447, 0x00c0, 0x6526,
+ 0x1078, 0x3256, 0x0c7f, 0x017f, 0x1078, 0x556a, 0x007c, 0x57ef,
+ 0x57ef, 0x57ef, 0x57ef, 0x57ef, 0x57ef, 0x57ef, 0x6533, 0x57ef,
+ 0x57ef, 0x57ef, 0x57ef, 0x1078, 0x599c, 0x00c0, 0x653f, 0x6003,
+ 0x0001, 0x6007, 0x0001, 0x1078, 0x4376, 0x0078, 0x6541, 0x1078,
+ 0x556a, 0x007c, 0x6004, 0xa08a, 0x0024, 0x10c8, 0x12b7, 0x1078,
+ 0x4671, 0x1078, 0x6283, 0x1078, 0x476a, 0x007c, 0xa182, 0x0040,
+ 0x0079, 0x6552, 0x6561, 0x6561, 0x6561, 0x6561, 0x6563, 0x6561,
+ 0x6561, 0x6561, 0x6561, 0x6561, 0x6561, 0x6561, 0x6561, 0x6561,
+ 0x6561, 0x1078, 0x12b7, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e,
+ 0x027e, 0x2071, 0x7280, 0x7444, 0xa4a4, 0xe600, 0x0040, 0x65d4,
+ 0xa486, 0x2000, 0x0040, 0x6592, 0xa486, 0x0400, 0x0040, 0x6592,
+ 0x7130, 0xa18c, 0x00ff, 0xa182, 0x0010, 0x00c8, 0x6663, 0x0c7e,
+ 0x1078, 0x416d, 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040,
+ 0x6644, 0x1078, 0x420a, 0x0040, 0x666f, 0xa295, 0x0200, 0x6a02,
+ 0x0078, 0x6598, 0x2009, 0x0001, 0x2011, 0x0200, 0x1078, 0x41f4,
+ 0x1078, 0x130f, 0x1040, 0x12b7, 0x6003, 0x0007, 0x6106, 0x2d00,
+ 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00,
+ 0x685e, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0xa18c, 0x00ff,
+ 0xa10d, 0x6946, 0x684f, 0x0000, 0x6857, 0x0036, 0x1078, 0x36a1,
+ 0xa486, 0x2000, 0x00c0, 0x65c2, 0x2019, 0x0017, 0x1078, 0x6b8f,
+ 0x0078, 0x6631, 0xa486, 0x0400, 0x00c0, 0x65cc, 0x2019, 0x0002,
+ 0x1078, 0x6b8f, 0x0078, 0x6631, 0xa486, 0x0200, 0x00c0, 0x65d2,
+ 0x1078, 0x6b80, 0x0078, 0x6631, 0x7130, 0xa18c, 0x00ff, 0xa182,
+ 0x0010, 0x00c8, 0x6687, 0x0c7e, 0x1078, 0x416d, 0x2c68, 0x0c7f,
+ 0x6a00, 0xa284, 0x0001, 0x0040, 0x668b, 0xa284, 0x0300, 0x00c0,
+ 0x6683, 0x6804, 0xa005, 0x0040, 0x666f, 0x8001, 0x6806, 0x6003,
+ 0x0007, 0x6106, 0x1078, 0x12f4, 0x0040, 0x6638, 0x6013, 0x0000,
+ 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000, 0x2c00, 0x684a,
+ 0x6018, 0x2078, 0x78a0, 0x8007, 0xa10d, 0x6946, 0x6853, 0x003d,
+ 0x7044, 0xa084, 0x0003, 0xa086, 0x0002, 0x00c0, 0x6613, 0x684f,
+ 0x0040, 0x0078, 0x661d, 0xa086, 0x0001, 0x00c0, 0x661b, 0x684f,
+ 0x0080, 0x0078, 0x661d, 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001,
+ 0x7290, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, 0x8000, 0x8210,
+ 0x00f0, 0x6623, 0x200c, 0x6982, 0x8000, 0x200c, 0x697e, 0x1078,
+ 0x36a1, 0x027f, 0x047f, 0x157f, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c,
+ 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x4327,
+ 0x1078, 0x476a, 0x0078, 0x6631, 0x2069, 0x7292, 0x2d04, 0xa084,
+ 0xff00, 0xa086, 0x1200, 0x00c0, 0x6663, 0x2069, 0x7280, 0x686c,
+ 0xa084, 0x00ff, 0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112,
+ 0x017f, 0x6003, 0x0001, 0x6007, 0x0043, 0x1078, 0x4327, 0x1078,
+ 0x476a, 0x0078, 0x6631, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007,
+ 0x0041, 0x1078, 0x4327, 0x1078, 0x476a, 0x0078, 0x6631, 0xa284,
+ 0x0004, 0x00c0, 0x6677, 0x6013, 0x0300, 0x0078, 0x6679, 0x6013,
+ 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x4327, 0x1078,
+ 0x476a, 0x0078, 0x6631, 0x6013, 0x0500, 0x0078, 0x6679, 0x6013,
+ 0x0600, 0x0078, 0x6644, 0x6013, 0x0200, 0x0078, 0x6644, 0xa186,
+ 0x0013, 0x00c0, 0x66a1, 0x6004, 0xa08a, 0x0040, 0x1048, 0x12b7,
+ 0xa08a, 0x004f, 0x10c8, 0x12b7, 0xa082, 0x0040, 0x2008, 0x0079,
+ 0x66cd, 0xa186, 0x0047, 0x00c0, 0x66a7, 0x0078, 0x66fb, 0xa186,
+ 0x0014, 0x10c0, 0x12b7, 0x6004, 0xa082, 0x0040, 0x2008, 0x0079,
+ 0x66b1, 0x66c0, 0x66c2, 0x66c2, 0x66c0, 0x66c0, 0x66c0, 0x66c0,
+ 0x66c0, 0x66c0, 0x66c0, 0x66c0, 0x66c0, 0x66c0, 0x66c0, 0x66c0,
+ 0x1078, 0x12b7, 0x2001, 0x0007, 0x1078, 0x3401, 0x1078, 0x4671,
+ 0x1078, 0x6283, 0x1078, 0x476a, 0x007c, 0x66dc, 0x66ec, 0x66e5,
+ 0x66f5, 0x66dc, 0x66dc, 0x66dc, 0x66dc, 0x66dc, 0x66dc, 0x66dc,
+ 0x66dc, 0x66dc, 0x66dc, 0x66dc, 0x1078, 0x12b7, 0x6010, 0xa088,
+ 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x1078, 0x4671, 0x6003,
+ 0x0002, 0x1078, 0x476a, 0x007c, 0x1078, 0x4671, 0x1078, 0x41cd,
+ 0x1078, 0x556a, 0x1078, 0x476a, 0x007c, 0x1078, 0x4671, 0x2009,
+ 0x0041, 0x0078, 0x67be, 0xa182, 0x0040, 0x0079, 0x66ff, 0x670e,
+ 0x6710, 0x670e, 0x670e, 0x670e, 0x670e, 0x670e, 0x6711, 0x670e,
+ 0x670e, 0x670e, 0x670e, 0x670e, 0x670e, 0x670e, 0x1078, 0x12b7,
+ 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20,
+ 0x2c10, 0x1078, 0x1532, 0x007c, 0xa182, 0x0040, 0x0079, 0x6720,
+ 0x672f, 0x672f, 0x672f, 0x672f, 0x672f, 0x672f, 0x672f, 0x672f,
+ 0x672f, 0x6731, 0x6754, 0x672f, 0x672f, 0x672f, 0x672f, 0x1078,
+ 0x12b7, 0x1078, 0x4719, 0x1078, 0x4821, 0x6010, 0x0d7e, 0x2068,
+ 0x684c, 0xd0fc, 0x0040, 0x6747, 0xa08c, 0x0003, 0xa18e, 0x0002,
+ 0x0040, 0x674d, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x67be, 0x6003,
+ 0x0007, 0x1078, 0x41cd, 0x0d7f, 0x007c, 0x1078, 0x41cd, 0x1078,
+ 0x556a, 0x0d7f, 0x0078, 0x674c, 0x2001, 0x0007, 0x1078, 0x3401,
+ 0x1078, 0x4719, 0x1078, 0x4821, 0x6010, 0x0d7e, 0x2068, 0x037e,
+ 0x2019, 0x0004, 0x1078, 0x6bb3, 0x037f, 0x1078, 0x6283, 0x0d7f,
+ 0x007c, 0xa186, 0x0013, 0x00c0, 0x6777, 0x6004, 0xa086, 0x0042,
+ 0x10c0, 0x12b7, 0x1078, 0x4671, 0x1078, 0x476a, 0x007c, 0xa186,
+ 0x0014, 0x00c0, 0x678b, 0x6004, 0xa086, 0x0042, 0x10c0, 0x12b7,
+ 0x2001, 0x0007, 0x1078, 0x3401, 0x1078, 0x4671, 0x1078, 0x6283,
+ 0x1078, 0x476a, 0x007c, 0xa182, 0x0040, 0x0079, 0x678f, 0x679e,
+ 0x679e, 0x679e, 0x679e, 0x679e, 0x679e, 0x679e, 0x67a0, 0x67ac,
+ 0x679e, 0x679e, 0x679e, 0x679e, 0x679e, 0x679e, 0x1078, 0x12b7,
+ 0x037e, 0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078,
+ 0x1532, 0x047f, 0x037f, 0x007c, 0x6010, 0x0d7e, 0x2068, 0x684c,
+ 0xd0fc, 0x0040, 0x67b8, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x67be,
+ 0x6003, 0x0007, 0x1078, 0x41cd, 0x0d7f, 0x007c, 0xa182, 0x0040,
+ 0x0079, 0x67c2, 0x67d1, 0x67d3, 0x67df, 0x67eb, 0x67d1, 0x67d1,
+ 0x67d1, 0x67d1, 0x67d1, 0x67d1, 0x67d1, 0x67d1, 0x67d1, 0x67d1,
+ 0x67d1, 0x1078, 0x12b7, 0x6003, 0x0001, 0x6106, 0x1078, 0x4327,
+ 0x127e, 0x2091, 0x8000, 0x1078, 0x476a, 0x127f, 0x007c, 0x6003,
+ 0x0001, 0x6106, 0x1078, 0x4327, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x476a, 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078,
+ 0x17de, 0x127e, 0x2091, 0x8000, 0x1078, 0x4395, 0x1078, 0x4821,
+ 0x127f, 0x007c, 0x1078, 0x4671, 0x0078, 0x6800, 0x1078, 0x4719,
+ 0x6110, 0x81ff, 0x0040, 0x680d, 0x0d7e, 0x2168, 0x037e, 0x2019,
+ 0x0029, 0x1078, 0x6bb3, 0x037f, 0x0d7f, 0x1078, 0x6283, 0x1078,
+ 0x476a, 0x007c, 0xa182, 0x0025, 0x0079, 0x6816, 0x681d, 0x681d,
+ 0x681d, 0x681f, 0x681d, 0x681d, 0x681d, 0x1078, 0x12b7, 0x027e,
+ 0x0e7e, 0x2071, 0x7280, 0x7220, 0x1078, 0x6ad1, 0x0040, 0x682c,
+ 0x6007, 0x0026, 0x0078, 0x682e, 0x6007, 0x0027, 0x6003, 0x0001,
+ 0x1078, 0x4327, 0x1078, 0x476a, 0x0e7f, 0x027f, 0x007c, 0xa186,
+ 0x0013, 0x00c0, 0x6848, 0x6004, 0xa08a, 0x0025, 0x1048, 0x12b7,
+ 0xa08a, 0x002c, 0x10c8, 0x12b7, 0xa082, 0x0025, 0x0079, 0x6857,
+ 0xa186, 0x0014, 0x10c0, 0x12b7, 0x2001, 0x0007, 0x1078, 0x3401,
+ 0x1078, 0x4671, 0x1078, 0x6283, 0x1078, 0x476a, 0x007c, 0x685e,
+ 0x6860, 0x6860, 0x685e, 0x685e, 0x685e, 0x685e, 0x1078, 0x12b7,
+ 0x1078, 0x4671, 0x1078, 0x556a, 0x1078, 0x476a, 0x007c, 0xa182,
+ 0x0025, 0x1048, 0x12b7, 0xa182, 0x002c, 0x10c8, 0x12b7, 0xa182,
+ 0x0025, 0x0079, 0x6873, 0x687a, 0x687a, 0x687a, 0x687c, 0x687a,
+ 0x687a, 0x687a, 0x1078, 0x12b7, 0x007c, 0x1078, 0x4671, 0x1078,
+ 0x6283, 0x1078, 0x476a, 0x007c, 0x127e, 0x037e, 0x087e, 0x2091,
+ 0x8000, 0x2c40, 0x2019, 0x0002, 0x1078, 0x5387, 0x00c0, 0x68b3,
+ 0x1078, 0x5428, 0x00c0, 0x68b3, 0x6000, 0xa086, 0x0000, 0x0040,
+ 0x68b3, 0x601c, 0xa086, 0x0007, 0x0040, 0x68b3, 0x0d7e, 0x6010,
+ 0x2068, 0x1078, 0x6120, 0x0040, 0x68a7, 0x1078, 0x6bb3, 0x0d7f,
+ 0x6000, 0xa086, 0x0004, 0x00c0, 0x68af, 0x1078, 0x15f2, 0x6013,
+ 0x0000, 0x601f, 0x0007, 0x087f, 0x037f, 0x127f, 0x007c, 0x0f7e,
+ 0x0c7e, 0x037e, 0x157e, 0x2079, 0x7280, 0x7938, 0x783c, 0x1078,
+ 0x1e1b, 0x00c0, 0x68e8, 0x017e, 0x0c7e, 0x1078, 0x3447, 0x00c0,
+ 0x68e8, 0x2011, 0x7290, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078,
+ 0x5a35, 0x00c0, 0x68e8, 0x017f, 0x027f, 0x027e, 0x017e, 0x2019,
+ 0x0029, 0x1078, 0x445c, 0x1078, 0x43a9, 0x017f, 0x1078, 0x6a57,
+ 0x1078, 0x35cf, 0x017f, 0x1078, 0x3256, 0xa006, 0x0078, 0x68ea,
+ 0x0c7f, 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c, 0x0e7e,
+ 0x0d7e, 0x0c7e, 0x047e, 0x037e, 0x027e, 0x2061, 0x7400, 0x2071,
+ 0x6d00, 0x7444, 0x7060, 0x8001, 0xa402, 0x00c8, 0x6929, 0x2100,
+ 0xac06, 0x0040, 0x691b, 0x6000, 0xa086, 0x0000, 0x0040, 0x691b,
+ 0x6018, 0x2068, 0x68a0, 0xa206, 0x00c0, 0x691b, 0x631c, 0xa386,
+ 0x0004, 0x0040, 0x6925, 0xa386, 0x0005, 0x0040, 0x6925, 0xa386,
+ 0x0006, 0x0040, 0x6925, 0xace0, 0x0008, 0x2001, 0x6d15, 0x2004,
+ 0xac02, 0x00c8, 0x6929, 0x0078, 0x68f7, 0xa085, 0x0001, 0x0078,
+ 0x692a, 0xa006, 0x027f, 0x037f, 0x047f, 0x0c7f, 0x0d7f, 0x0e7f,
+ 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x2009, 0x6d1e, 0x2104, 0xa086,
+ 0x0074, 0x00c0, 0x6988, 0x2069, 0x728e, 0x690c, 0xa182, 0x0100,
+ 0x0048, 0x6978, 0x6908, 0xa184, 0x8000, 0x0040, 0x6984, 0xa184,
+ 0x0800, 0x0040, 0x6984, 0x6910, 0xa18a, 0x0001, 0x0048, 0x697c,
+ 0x6914, 0x2069, 0x72ae, 0x6904, 0x81ff, 0x00c0, 0x6970, 0x690c,
+ 0xa182, 0x0100, 0x0048, 0x6978, 0x6908, 0x81ff, 0x00c0, 0x6974,
+ 0x6910, 0xa18a, 0x0001, 0x0048, 0x697c, 0x6918, 0xa18a, 0x0001,
+ 0x0048, 0x6984, 0x0078, 0x698e, 0x6013, 0x0100, 0x0078, 0x698a,
+ 0x6013, 0x0300, 0x0078, 0x698a, 0x6013, 0x0500, 0x0078, 0x698a,
+ 0x6013, 0x0700, 0x0078, 0x698a, 0x6013, 0x0900, 0x0078, 0x698a,
+ 0x6013, 0x0b00, 0x0078, 0x698a, 0x6013, 0x0f00, 0x0078, 0x698a,
+ 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078, 0x698f, 0xa006, 0x017f,
+ 0x0d7f, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x027e, 0x037e, 0x157e,
+ 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0040,
+ 0x69b7, 0xa286, 0x0004, 0x0040, 0x69b7, 0xa394, 0xff00, 0x8217,
+ 0xa286, 0x0006, 0x0040, 0x69b7, 0xa286, 0x0004, 0x0040, 0x69b7,
+ 0x0c7e, 0x2d60, 0x1078, 0x3459, 0x0c7f, 0x0078, 0x69ea, 0x2011,
+ 0x7296, 0xad98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x5a35, 0x00c0,
+ 0x69eb, 0x2011, 0x729a, 0xad98, 0x0006, 0x20a9, 0x0004, 0x1078,
+ 0x5a35, 0x00c0, 0x69eb, 0x047e, 0x017e, 0x6aa0, 0xa294, 0x00ff,
+ 0x8227, 0xa006, 0x2009, 0x6d52, 0x210c, 0xd1a4, 0x0040, 0x69df,
+ 0x2009, 0x0029, 0x1078, 0x6bf7, 0x6800, 0xc0e5, 0x6802, 0x2019,
+ 0x0029, 0x1078, 0x445c, 0x1078, 0x43a9, 0x2c08, 0x1078, 0x6a57,
+ 0x017f, 0x047f, 0xa006, 0x157f, 0x037f, 0x027f, 0x0d7f, 0x0c7f,
+ 0x007c, 0x0d7e, 0x2069, 0x728e, 0x6800, 0xa086, 0x0800, 0x0040,
+ 0x69fd, 0x6013, 0x0000, 0x0078, 0x69fe, 0xa006, 0x0d7f, 0x007c,
+ 0x0c7e, 0x0f7e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2079, 0x728c,
+ 0x7930, 0x7834, 0x1078, 0x1e1b, 0x00c0, 0x6a24, 0x1078, 0x3447,
+ 0x00c0, 0x6a24, 0x2011, 0x7290, 0xac98, 0x000a, 0x20a9, 0x0004,
+ 0x1078, 0x5a35, 0x00c0, 0x6a24, 0x2011, 0x7294, 0xac98, 0x0006,
+ 0x20a9, 0x0004, 0x1078, 0x5a35, 0x157f, 0x037f, 0x027f, 0x017f,
+ 0x0f7f, 0x0c7f, 0x007c, 0x0c7e, 0x007e, 0x017e, 0x027e, 0x037e,
+ 0x157e, 0x2011, 0x7283, 0x2204, 0x8211, 0x220c, 0x1078, 0x1e1b,
+ 0x00c0, 0x6a50, 0x1078, 0x3447, 0x00c0, 0x6a50, 0x2011, 0x7296,
+ 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x5a35, 0x00c0, 0x6a50,
+ 0x2011, 0x729a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x5a35,
+ 0x157f, 0x037f, 0x027f, 0x017f, 0x007f, 0x0c7f, 0x007c, 0x0e7e,
+ 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e, 0x027e, 0x127e, 0x2091,
+ 0x8000, 0x2029, 0x6f19, 0x252c, 0x2021, 0x6f1f, 0x2424, 0x2061,
+ 0x7400, 0x2071, 0x6d00, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8,
+ 0x6abc, 0x2100, 0xac06, 0x0040, 0x6ab2, 0x1078, 0x6c0f, 0x0040,
+ 0x6ab2, 0x671c, 0xa786, 0x0001, 0x0040, 0x6ab2, 0xa786, 0x0007,
+ 0x0040, 0x6ab2, 0x2500, 0xac06, 0x0040, 0x6ab2, 0x2400, 0xac06,
+ 0x0040, 0x6ab2, 0x6018, 0x2070, 0x70a0, 0xa206, 0x00c0, 0x6ab2,
+ 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6120, 0x0040, 0x6aa6, 0xa786,
+ 0x0003, 0x00c0, 0x6ac5, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
+ 0x017e, 0x1078, 0x36a1, 0x017f, 0x1078, 0x6276, 0x0d7f, 0x6000,
+ 0xa086, 0x0004, 0x00c0, 0x6ab0, 0x017e, 0x1078, 0x15f2, 0x017f,
+ 0x1078, 0x6283, 0xace0, 0x0008, 0x2001, 0x6d15, 0x2004, 0xac02,
+ 0x00c8, 0x6abc, 0x0078, 0x6a69, 0x127f, 0x027f, 0x047f, 0x057f,
+ 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0,
+ 0x6a9b, 0xa386, 0x0005, 0x0040, 0x6ab2, 0x1078, 0x6bb3, 0x0078,
+ 0x6aa6, 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0x1078, 0x6bca,
+ 0x017f, 0x0040, 0x6ae0, 0x601c, 0xa084, 0x000f, 0x1079, 0x6ae3,
+ 0x0e7f, 0x0c7f, 0x007c, 0x6aeb, 0x6aeb, 0x6aeb, 0x6aeb, 0x6aeb,
+ 0x6aeb, 0x6aed, 0x6aeb, 0xa006, 0x007c, 0x047e, 0x017e, 0x7018,
+ 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009,
+ 0x0020, 0x1078, 0x6bf7, 0x017f, 0x047f, 0x1078, 0x6884, 0xa085,
+ 0x0001, 0x007c, 0x2001, 0x0001, 0x1078, 0x33df, 0x157e, 0x017e,
+ 0x027e, 0x037e, 0x20a9, 0x0004, 0x2019, 0x6d05, 0x2011, 0x7296,
+ 0x1078, 0x5a35, 0x037f, 0x027f, 0x017f, 0x157f, 0xa005, 0x007c,
+ 0x0f7e, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x027e, 0x127e, 0x2091,
+ 0x8000, 0x2061, 0x7400, 0x2079, 0x0001, 0x8fff, 0x0040, 0x6b73,
+ 0x2071, 0x6d00, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8, 0x6b73,
+ 0x88ff, 0x0040, 0x6b39, 0x2800, 0xac06, 0x00c0, 0x6b69, 0x2079,
+ 0x0000, 0x1078, 0x6c0f, 0x0040, 0x6b69, 0x2400, 0xac06, 0x0040,
+ 0x6b69, 0x671c, 0xa786, 0x0006, 0x00c0, 0x6b69, 0xa786, 0x0007,
+ 0x0040, 0x6b69, 0x88ff, 0x00c0, 0x6b51, 0x6018, 0xa206, 0x00c0,
+ 0x6b69, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6120, 0x0040, 0x6b5c,
+ 0x047e, 0x1078, 0x6bb3, 0x047f, 0x0d7f, 0x6000, 0xa086, 0x0004,
+ 0x00c0, 0x6b64, 0x1078, 0x15f2, 0x1078, 0x6283, 0x88ff, 0x00c0,
+ 0x6b7c, 0xace0, 0x0008, 0x2001, 0x6d15, 0x2004, 0xac02, 0x00c8,
+ 0x6b73, 0x0078, 0x6b25, 0xa006, 0x127f, 0x027f, 0x067f, 0x077f,
+ 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5, 0x0001, 0x0078, 0x6b74,
+ 0x087e, 0x2041, 0x0000, 0x2c20, 0x2019, 0x0002, 0x6218, 0x1078,
+ 0x5387, 0x1078, 0x5428, 0x1078, 0x6b18, 0x087f, 0x007c, 0x027e,
+ 0x047e, 0x087e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007f, 0x2009,
+ 0x0000, 0x017e, 0x037e, 0x1078, 0x3447, 0x00c0, 0x6ba8, 0x2c10,
+ 0x2041, 0x0000, 0x1078, 0x5387, 0x1078, 0x5428, 0x1078, 0x6b18,
+ 0x037f, 0x017f, 0x8108, 0x00f0, 0x6b99, 0x157f, 0x0c7f, 0x087f,
+ 0x047f, 0x027f, 0x007c, 0x017e, 0x0f7e, 0x8dff, 0x0040, 0x6bc7,
+ 0x6800, 0xa07d, 0x0040, 0x6bc4, 0x6803, 0x0000, 0x6b52, 0x1078,
+ 0x36a1, 0x2f68, 0x0078, 0x6bb8, 0x6b52, 0x1078, 0x36a1, 0x0f7f,
+ 0x017f, 0x007c, 0x0e7e, 0x047e, 0x037e, 0x2061, 0x7400, 0x2071,
+ 0x6d00, 0x7444, 0x7060, 0x8001, 0xa402, 0x00c8, 0x6bf2, 0x2100,
+ 0xac06, 0x0040, 0x6be4, 0x6000, 0xa086, 0x0000, 0x0040, 0x6be4,
+ 0x6008, 0xa206, 0x0040, 0x6bee, 0xace0, 0x0008, 0x2001, 0x6d15,
+ 0x2004, 0xac02, 0x00c8, 0x6bf2, 0x0078, 0x6bcf, 0xa085, 0x0001,
+ 0x0078, 0x6bf3, 0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e,
+ 0x007e, 0x1078, 0x130f, 0x007f, 0x1040, 0x12b7, 0x6837, 0x010d,
+ 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x685e, 0x6956,
+ 0x6c46, 0x684f, 0x0000, 0x1078, 0x36a1, 0x0d7f, 0x007c, 0x6700,
+ 0xa786, 0x0000, 0x0040, 0x6c22, 0xa786, 0x0001, 0x0040, 0x6c22,
+ 0xa786, 0x000a, 0x0040, 0x6c22, 0xa786, 0x0009, 0x0040, 0x6c22,
+ 0xa085, 0x0001, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000,
+ 0x2071, 0x6d00, 0xd5a4, 0x0040, 0x6c30, 0x7034, 0x8000, 0x7036,
+ 0xd5b4, 0x0040, 0x6c36, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040,
+ 0x6c3d, 0x2071, 0x6d0a, 0x1078, 0x6c6c, 0x0e7f, 0x007f, 0x127f,
+ 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x6d00,
+ 0xd5a4, 0x0040, 0x6c4e, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040,
+ 0x6c54, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x6c5b, 0x2071,
+ 0x6d0a, 0x1078, 0x6c6c, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e,
+ 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x6d02, 0x1078, 0x6c6c,
+ 0x0e7f, 0x007f, 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8,
+ 0x6c75, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071,
+ 0x6d00, 0x1078, 0x6c6c, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x6d04,
+ 0x1078, 0x6c6c, 0x0e7f, 0x007c, 0x0001, 0x0002, 0x0004, 0x0008,
+ 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800,
+ 0x1000, 0x2000, 0x4000, 0x8000, 0x614c
};
-#define ISP2100_CODE_LENGTH 0x5e69
+#define ISP2100_CODE_LENGTH 0x5c95
#endif
-#if !defined(ISP2100_FABRIC) && defined(ISP2100_SCCLUN)
-/************************************************************************
- * *
- * --- ISP2100 Initiator/Target Firmware --- *
- * with expanded LUN addressing. *
- * *
- * *
- ************************************************************************
- * *
- * NOTICE *
- * *
- * COPYRIGHT 1998 QLOGIC CORPORATION *
- * ALL RIGHTS RESERVED *
- * *
- * This computer program is CONFIDENTIAL and contains TRADE SECRETS of *
- * QLOGIC CORPORATION. The receipt or possession of this program does *
- * not convey any rights to reproduce or disclose its contents, or to *
- * manufacture, use, or sell anything that it may describe, in whole or *
- * in part, without the specific written consent of QLOGIC CORPORATION. *
- * Any reproduction of this program without the express written consent *
- * of QLOGIC CORPORATION is a violation of the copyright laws and may *
- * subject you to civil liability and criminal prosecution. *
- * *
- ************************************************************************
- */
+#if 0
/*
- * Firmware Version 1.15.07 (14:38 Oct 13, 1998)
+ * Firmware Version 1.14.06 (15:32 Jul 02, 1998)
*/
-
+#define ISP2100_CODE_VERSION 1*1024+14
static const u_int16_t ISP2100_RISC_CODE[] = {
- 0x0078, 0x1029, 0x0000, 0x5f74, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x0078, 0x1029, 0x0000, 0x5baf, 0x0000, 0x2043, 0x4f50, 0x5952,
0x4947, 0x4854, 0x2031, 0x3939, 0x3620, 0x514c, 0x4f47, 0x4943,
0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350,
0x3231, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
- 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3135, 0x2020, 0x2020,
- 0x2400, 0x20c1, 0x0021, 0x20a1, 0x6f74, 0x2009, 0x0000, 0x20a9,
- 0x068c, 0x41a4, 0x3400, 0x20c9, 0x73ff, 0x2091, 0x2000, 0x2059,
- 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x1ff1, 0x2051, 0x7000,
- 0x2a70, 0x705b, 0x8e00, 0x705f, 0xffff, 0x7057, 0x8df9, 0x7063,
- 0x0300, 0x1078, 0x1235, 0x20a1, 0x7600, 0x715c, 0x810d, 0x810d,
+ 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3134, 0x2020, 0x2020,
+ 0x2400, 0x20c1, 0x0021, 0x20a1, 0x6baf, 0x2009, 0x0000, 0x20a9,
+ 0x0651, 0x41a4, 0x3400, 0x20c9, 0x6fff, 0x2091, 0x2000, 0x2059,
+ 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x1f6e, 0x2051, 0x6c00,
+ 0x2a70, 0x705b, 0x8a00, 0x705f, 0xffff, 0x7057, 0x89f9, 0x7063,
+ 0x0300, 0x1078, 0x1217, 0x20a1, 0x7200, 0x715c, 0x810d, 0x810d,
0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0007, 0xa112, 0xa00e,
0x21a8, 0x41a4, 0x3400, 0x8211, 0x00c0, 0x1058, 0x715c, 0x3400,
0xa102, 0x0040, 0x1068, 0x0048, 0x1068, 0x20a8, 0xa00e, 0x41a4,
- 0x1078, 0x1200, 0x1078, 0x1321, 0x1078, 0x14a6, 0x1078, 0x192f,
- 0x1078, 0x32e1, 0x1078, 0x5687, 0x1078, 0x12ac, 0x1078, 0x22f7,
- 0x1078, 0x3a1c, 0x1078, 0x37f4, 0x1078, 0x41d0, 0x1078, 0x1dbe,
- 0x1078, 0x4410, 0x1078, 0x3f3d, 0x1078, 0x1cdd, 0x1078, 0x1d9d,
+ 0x1078, 0x11e2, 0x1078, 0x1301, 0x1078, 0x1486, 0x1078, 0x18ce,
+ 0x1078, 0x3162, 0x1078, 0x53b7, 0x1078, 0x128c, 0x1078, 0x2244,
+ 0x1078, 0x37a0, 0x1078, 0x3578, 0x1078, 0x3f4c, 0x1078, 0x1d4c,
+ 0x1078, 0x418b, 0x1078, 0x3cbc, 0x1078, 0x1c74, 0x1078, 0x1d2b,
0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x109d, 0x7820, 0xa086,
0x0002, 0x00c0, 0x109d, 0x7823, 0x4000, 0x0068, 0x1095, 0x781b,
0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000,
0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003,
- 0x00c0, 0x10bd, 0x1078, 0x2a59, 0x1078, 0x231f, 0x1078, 0x3a6c,
- 0x1078, 0x38df, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
- 0x10c1, 0x1078, 0x41e8, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
- 0x10aa, 0x1078, 0x5359, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x112a,
- 0x10cd, 0x117d, 0x11fd, 0x11fe, 0x11ff, 0x1078, 0x1288, 0x007c,
- 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2b7c, 0x2079, 0x0100,
- 0x7844, 0xa005, 0x00c0, 0x1127, 0x2011, 0x320e, 0x1078, 0x42aa,
+ 0x00c0, 0x10bd, 0x1078, 0x2967, 0x1078, 0x226c, 0x1078, 0x37f0,
+ 0x1078, 0x3663, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
+ 0x10c1, 0x1078, 0x3f64, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
+ 0x10aa, 0x1078, 0x50d1, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x1130,
+ 0x10cd, 0x1161, 0x11df, 0x11e0, 0x11e1, 0x1078, 0x126a, 0x007c,
+ 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2a02, 0x2079, 0x0100,
+ 0x7844, 0xa005, 0x00c0, 0x112d, 0x2011, 0x308c, 0x1078, 0x4026,
0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010,
- 0x73b0, 0x1078, 0x2a18, 0x1078, 0x51a4, 0x2011, 0x0004, 0x1078,
- 0x634b, 0x1078, 0x378e, 0x2079, 0x7051, 0x7804, 0xd0ac, 0x00c0,
- 0x1115, 0x2011, 0x0001, 0x1078, 0x634b, 0x7083, 0x0000, 0x7087,
- 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x20a1, 0x2011, 0x0005,
- 0x1078, 0x52b3, 0x1078, 0x49b7, 0x0c7e, 0x2061, 0x0100, 0x60e3,
- 0x0008, 0x0c7f, 0x127f, 0x0078, 0x1129, 0x7083, 0x0000, 0x7087,
- 0xffff, 0x7003, 0x0002, 0x2011, 0x0005, 0x1078, 0x52b3, 0x1078,
- 0x49b7, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x0f7f,
- 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x7084, 0xa086, 0xffff,
- 0x0040, 0x1138, 0x1078, 0x20a1, 0x1078, 0x49b7, 0x0078, 0x117b,
- 0x7080, 0xa005, 0x00c0, 0x117b, 0x2001, 0x7052, 0x2004, 0xd0ac,
- 0x0040, 0x115e, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000,
- 0x017e, 0x1078, 0x34fa, 0x00c0, 0x1151, 0x6000, 0xd0ec, 0x00c0,
- 0x1159, 0x017f, 0x8108, 0x00f0, 0x1148, 0x0c7f, 0x157f, 0x0078,
- 0x115e, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x117b, 0x7003, 0x0003,
- 0x7087, 0xffff, 0x2001, 0x0000, 0x1078, 0x1f8a, 0x1078, 0x2a92,
- 0x2001, 0x71b7, 0x2004, 0xa086, 0x0005, 0x00c0, 0x1173, 0x2011,
- 0x0000, 0x1078, 0x52b3, 0x2011, 0x0000, 0x1078, 0x52bd, 0x1078,
- 0x49b7, 0x1078, 0x4a67, 0x127f, 0x007c, 0x017e, 0x0f7e, 0x127e,
- 0x2091, 0x8000, 0x2079, 0x0100, 0x7940, 0xa18c, 0x0010, 0x7942,
- 0x7924, 0xd1b4, 0x0040, 0x118e, 0x7827, 0x0040, 0xd19c, 0x0040,
- 0x1193, 0x7827, 0x0008, 0x007e, 0x037e, 0x157e, 0x7900, 0xa18a,
- 0x0003, 0x0050, 0x11b9, 0x7954, 0xd1ac, 0x00c0, 0x11b9, 0x2009,
- 0x00f8, 0x1078, 0x32b0, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9,
- 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x11b1, 0x7824, 0xd0ac, 0x00c0,
- 0x11ed, 0x00f0, 0x11a9, 0x2001, 0x0001, 0x1078, 0x1f8a, 0x0078,
- 0x11f6, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0008, 0x00e0,
- 0x11bf, 0x2091, 0x6000, 0x00f0, 0x11bf, 0x7853, 0x0400, 0x782f,
- 0x0000, 0x2009, 0x00f8, 0x1078, 0x32b0, 0x20a9, 0x000e, 0x0005,
- 0x00f0, 0x11cf, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, 0x0010,
- 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, 0x11e4,
- 0x7824, 0xd0ac, 0x00c0, 0x11ed, 0x8319, 0x00c0, 0x11da, 0x2001,
- 0x0001, 0x1078, 0x1f8a, 0x0078, 0x11f4, 0x7828, 0xc09d, 0x782a,
- 0x7827, 0x0008, 0x7827, 0x0040, 0x7853, 0x0400, 0x157f, 0x037f,
- 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, 0x007c,
- 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048, 0x120c,
- 0x704f, 0xffff, 0x0078, 0x120e, 0x704f, 0x0000, 0x7053, 0xffff,
- 0x2061, 0x71a0, 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800,
- 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000,
- 0x601f, 0x07d0, 0x2061, 0x71a8, 0x6003, 0x8000, 0x6007, 0x0000,
- 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000,
- 0x601b, 0x0001, 0x601f, 0x0000, 0x007c, 0x1078, 0x125b, 0x2011,
- 0x0000, 0x81ff, 0x0040, 0x125a, 0xa186, 0x0001, 0x00c0, 0x124a,
- 0x705f, 0x8fff, 0x7057, 0x7e01, 0x7063, 0x0100, 0x705b, 0x7e00,
- 0x0078, 0x1258, 0xa186, 0x0002, 0x00c0, 0x1252, 0x2011, 0x0000,
- 0x0078, 0x1258, 0xa186, 0x0005, 0x00c0, 0x1258, 0x2011, 0x0001,
- 0x1078, 0x1282, 0x007c, 0x2009, 0x0000, 0x2011, 0x0000, 0x1078,
- 0x1282, 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061,
- 0x7fff, 0x2c04, 0xa406, 0x0040, 0x1270, 0xc18d, 0x0078, 0x127d,
- 0xc185, 0x2011, 0x0001, 0x1078, 0x1282, 0x2061, 0xffff, 0x2362,
- 0x2c04, 0xa306, 0x00c0, 0x127d, 0xc195, 0x2011, 0x0001, 0x1078,
- 0x1282, 0x007c, 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c,
- 0x2091, 0x8000, 0x0068, 0x128a, 0x007e, 0x017e, 0x2079, 0x0000,
- 0x7818, 0xa084, 0x0000, 0x00c0, 0x1290, 0x017f, 0x792e, 0x007f,
- 0x782a, 0x007f, 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, 0x781b,
- 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2079, 0x7000, 0x7803,
- 0x0005, 0x0078, 0x12a9, 0x007c, 0x2071, 0x7000, 0x7158, 0x712e,
- 0x2021, 0x0001, 0xa190, 0x002d, 0xa298, 0x002d, 0x0048, 0x12c2,
- 0x705c, 0xa302, 0x00c8, 0x12c2, 0x220a, 0x2208, 0x2310, 0x8420,
- 0x0078, 0x12b4, 0x200b, 0x0000, 0x7496, 0x749a, 0x007c, 0x0e7e,
- 0x127e, 0x2091, 0x8000, 0x2071, 0x7000, 0x7098, 0xa0ea, 0x0010,
- 0x00c8, 0x12d5, 0xa06e, 0x0078, 0x12df, 0x8001, 0x709a, 0x702c,
+ 0x73b0, 0x1078, 0x2926, 0x1078, 0x4f22, 0x2011, 0x0004, 0x1078,
+ 0x5fe2, 0x1078, 0x3512, 0x2079, 0x6c51, 0x7804, 0xd0ac, 0x00c0,
+ 0x1115, 0x2011, 0x0001, 0x1078, 0x5fe2, 0x7083, 0x0000, 0x7087,
+ 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x201e, 0x2011, 0x0005,
+ 0x1078, 0x502b, 0x1078, 0x4713, 0x0c7e, 0x2061, 0x0100, 0x60e3,
+ 0x0008, 0x0c7f, 0x127f, 0x0078, 0x112f, 0x7003, 0x0003, 0x2001,
+ 0x0000, 0x1078, 0x1f0f, 0x2011, 0x0000, 0x1078, 0x502b, 0x2011,
+ 0x0000, 0x1078, 0x5035, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008,
+ 0x0c7f, 0x1078, 0x4713, 0x1078, 0x47c3, 0x0f7f, 0x127f, 0x007c,
+ 0x127e, 0x2091, 0x8000, 0x7084, 0xa086, 0xffff, 0x0040, 0x113e,
+ 0x1078, 0x201e, 0x1078, 0x4713, 0x0078, 0x115f, 0x7080, 0xa005,
+ 0x00c0, 0x115f, 0x7003, 0x0003, 0x7087, 0xffff, 0x2001, 0x0000,
+ 0x1078, 0x1f0f, 0x1078, 0x29a0, 0x2001, 0x6db1, 0x2004, 0xa086,
+ 0x0005, 0x00c0, 0x1157, 0x2011, 0x0000, 0x1078, 0x502b, 0x2011,
+ 0x0000, 0x1078, 0x5035, 0x1078, 0x4713, 0x1078, 0x47c3, 0x127f,
+ 0x007c, 0x017e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, 0x0100,
+ 0x7843, 0x0000, 0x7924, 0xd1b4, 0x0040, 0x1170, 0x7827, 0x0040,
+ 0xd19c, 0x0040, 0x1175, 0x7827, 0x0008, 0x007e, 0x037e, 0x157e,
+ 0x7900, 0xa18a, 0x0003, 0x0050, 0x119b, 0x7954, 0xd1ac, 0x00c0,
+ 0x119b, 0x2009, 0x00f8, 0x1078, 0x3131, 0x7843, 0x0090, 0x7843,
+ 0x0010, 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x1193, 0x7824,
+ 0xd0ac, 0x00c0, 0x11cf, 0x00f0, 0x118b, 0x2001, 0x0001, 0x1078,
+ 0x1f0f, 0x0078, 0x11d8, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9,
+ 0x0008, 0x00e0, 0x11a1, 0x2091, 0x6000, 0x00f0, 0x11a1, 0x7853,
+ 0x0400, 0x782f, 0x0000, 0x2009, 0x00f8, 0x1078, 0x3131, 0x20a9,
+ 0x000e, 0x0005, 0x00f0, 0x11b1, 0x7853, 0x1400, 0x7843, 0x0090,
+ 0x7843, 0x0010, 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c,
+ 0x0040, 0x11c6, 0x7824, 0xd0ac, 0x00c0, 0x11cf, 0x8319, 0x00c0,
+ 0x11bc, 0x2001, 0x0001, 0x1078, 0x1f0f, 0x0078, 0x11d6, 0x7828,
+ 0xc09d, 0x782a, 0x7827, 0x0008, 0x7827, 0x0040, 0x7853, 0x0400,
+ 0x157f, 0x037f, 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c,
+ 0x007c, 0x007c, 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002,
+ 0x0048, 0x11ee, 0x704f, 0xffff, 0x0078, 0x11f0, 0x704f, 0x0000,
+ 0x7053, 0xffff, 0x2061, 0x6da0, 0x6003, 0x0909, 0x6007, 0x0000,
+ 0x600b, 0x8800, 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0003,
+ 0x601b, 0x0000, 0x601f, 0x07d0, 0x2061, 0x6da8, 0x6003, 0x8000,
+ 0x6007, 0x0000, 0x600b, 0x0000, 0x600f, 0x0200, 0x6013, 0x00ff,
+ 0x6017, 0x0000, 0x601b, 0x0001, 0x601f, 0x0000, 0x007c, 0x1078,
+ 0x123d, 0x2011, 0x0000, 0x81ff, 0x0040, 0x123c, 0xa186, 0x0001,
+ 0x00c0, 0x122c, 0x705f, 0x8fff, 0x7057, 0x7a01, 0x7063, 0x0100,
+ 0x705b, 0x7a00, 0x0078, 0x123a, 0xa186, 0x0002, 0x00c0, 0x1234,
+ 0x2011, 0x0000, 0x0078, 0x123a, 0xa186, 0x0005, 0x00c0, 0x123a,
+ 0x2011, 0x0001, 0x1078, 0x1264, 0x007c, 0x2009, 0x0000, 0x2011,
+ 0x0000, 0x1078, 0x1264, 0x2019, 0xaaaa, 0x2061, 0xffff, 0x2362,
+ 0x2c24, 0x2061, 0x7fff, 0x2c04, 0xa406, 0x0040, 0x1252, 0xc18d,
+ 0x0078, 0x125f, 0xc185, 0x2011, 0x0001, 0x1078, 0x1264, 0x2061,
+ 0xffff, 0x2362, 0x2c04, 0xa306, 0x00c0, 0x125f, 0xc195, 0x2011,
+ 0x0001, 0x1078, 0x1264, 0x007c, 0x3800, 0xa084, 0xfffc, 0xa205,
+ 0x20c0, 0x007c, 0x2091, 0x8000, 0x0068, 0x126c, 0x007e, 0x017e,
+ 0x2079, 0x0000, 0x7818, 0xa084, 0x0000, 0x00c0, 0x1272, 0x017f,
+ 0x792e, 0x007f, 0x782a, 0x007f, 0x7826, 0x7823, 0x8002, 0x781b,
+ 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2079, 0x6c00, 0x7803,
+ 0x0005, 0x0078, 0x1289, 0x007c, 0x2071, 0x6c00, 0x7158, 0x712e,
+ 0x2021, 0x0001, 0xa190, 0x002d, 0xa298, 0x002d, 0x0048, 0x12a2,
+ 0x705c, 0xa302, 0x00c8, 0x12a2, 0x220a, 0x2208, 0x2310, 0x8420,
+ 0x0078, 0x1294, 0x200b, 0x0000, 0x7496, 0x749a, 0x007c, 0x0e7e,
+ 0x127e, 0x2091, 0x8000, 0x2071, 0x6c00, 0x7098, 0xa0ea, 0x0010,
+ 0x00c8, 0x12b5, 0xa06e, 0x0078, 0x12bf, 0x8001, 0x709a, 0x702c,
0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f,
- 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x7000, 0x127e, 0x2091, 0x8000,
- 0x7098, 0x8001, 0x00c8, 0x12ef, 0xa06e, 0x0078, 0x12f8, 0x709a,
+ 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x6c00, 0x127e, 0x2091, 0x8000,
+ 0x7098, 0x8001, 0x00c8, 0x12cf, 0xa06e, 0x0078, 0x12d8, 0x709a,
0x702c, 0x2068, 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000,
0x127f, 0x0e7f, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x7000, 0x702c, 0x206a, 0x2d00, 0x702e, 0x7098, 0x8000, 0x709a,
- 0x127f, 0x0e7f, 0x007c, 0x8dff, 0x0040, 0x1317, 0x6804, 0x6807,
- 0x0000, 0x007e, 0x1078, 0x12fb, 0x0d7f, 0x0078, 0x130b, 0x007c,
- 0x0e7e, 0x2071, 0x7000, 0x7098, 0xa08a, 0x0010, 0xa00d, 0x0e7f,
- 0x007c, 0x0e7e, 0x2071, 0x71d9, 0x7007, 0x0000, 0x701b, 0x0000,
+ 0x6c00, 0x702c, 0x206a, 0x2d00, 0x702e, 0x7098, 0x8000, 0x709a,
+ 0x127f, 0x0e7f, 0x007c, 0x8dff, 0x0040, 0x12f7, 0x6804, 0x6807,
+ 0x0000, 0x007e, 0x1078, 0x12db, 0x0d7f, 0x0078, 0x12eb, 0x007c,
+ 0x0e7e, 0x2071, 0x6c00, 0x7098, 0xa08a, 0x0010, 0xa00d, 0x0e7f,
+ 0x007c, 0x0e7e, 0x2071, 0x6dd3, 0x7007, 0x0000, 0x701b, 0x0000,
0x701f, 0x0000, 0x2071, 0x0000, 0x7010, 0xa085, 0x8004, 0x7012,
- 0x0e7f, 0x007c, 0x0e7e, 0x2270, 0x700b, 0x0000, 0x2071, 0x71d9,
- 0x7018, 0xa088, 0x71e2, 0x220a, 0x8000, 0xa084, 0x0007, 0x701a,
- 0x7004, 0xa005, 0x00c0, 0x134a, 0x0f7e, 0x2079, 0x0010, 0x1078,
- 0x135b, 0x0f7f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x71d9, 0x7004,
- 0xa005, 0x00c0, 0x1359, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x135b,
- 0x0f7f, 0x0e7f, 0x007c, 0x7000, 0x0079, 0x135e, 0x1362, 0x13cc,
- 0x13e9, 0x13e9, 0x7018, 0x711c, 0xa106, 0x00c0, 0x136a, 0x7007,
- 0x0000, 0x007c, 0x0d7e, 0xa180, 0x71e2, 0x2004, 0x700a, 0x2068,
+ 0x0e7f, 0x007c, 0x0e7e, 0x2270, 0x700b, 0x0000, 0x2071, 0x6dd3,
+ 0x7018, 0xa088, 0x6ddc, 0x220a, 0x8000, 0xa084, 0x0007, 0x701a,
+ 0x7004, 0xa005, 0x00c0, 0x132a, 0x0f7e, 0x2079, 0x0010, 0x1078,
+ 0x133b, 0x0f7f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x6dd3, 0x7004,
+ 0xa005, 0x00c0, 0x1339, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x133b,
+ 0x0f7f, 0x0e7f, 0x007c, 0x7000, 0x0079, 0x133e, 0x1342, 0x13ac,
+ 0x13c9, 0x13c9, 0x7018, 0x711c, 0xa106, 0x00c0, 0x134a, 0x7007,
+ 0x0000, 0x007c, 0x0d7e, 0xa180, 0x6ddc, 0x2004, 0x700a, 0x2068,
0x8108, 0xa18c, 0x0007, 0x711e, 0x7803, 0x0026, 0x6824, 0x7832,
0x6828, 0x7836, 0x682c, 0x783a, 0x6830, 0x783e, 0x6810, 0x700e,
- 0x680c, 0x7016, 0x6804, 0x0d7f, 0xd084, 0x0040, 0x138c, 0x7007,
- 0x0001, 0x1078, 0x1391, 0x007c, 0x7007, 0x0002, 0x1078, 0x13a7,
+ 0x680c, 0x7016, 0x6804, 0x0d7f, 0xd084, 0x0040, 0x136c, 0x7007,
+ 0x0001, 0x1078, 0x1371, 0x007c, 0x7007, 0x0002, 0x1078, 0x1387,
0x007c, 0x017e, 0x027e, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040,
- 0x00c8, 0x139c, 0x2110, 0xa006, 0x700e, 0x7212, 0x8203, 0x7822,
+ 0x00c8, 0x137c, 0x2110, 0xa006, 0x700e, 0x7212, 0x8203, 0x7822,
0x7803, 0x0020, 0x7803, 0x0041, 0x027f, 0x017f, 0x007c, 0x017e,
0x027e, 0x137e, 0x147e, 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014,
0x7803, 0x0026, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8,
- 0x13bb, 0x2110, 0xa006, 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822,
+ 0x139b, 0x2110, 0xa006, 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822,
0x7803, 0x0020, 0x7803, 0x0001, 0x3300, 0x7016, 0x157f, 0x147f,
0x137f, 0x027f, 0x017f, 0x007c, 0x137e, 0x147e, 0x157e, 0x2099,
- 0x70e5, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
+ 0x6ce5, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
0x127e, 0x2091, 0x8000, 0x7803, 0x0041, 0x7007, 0x0003, 0x7000,
- 0xc084, 0x7002, 0x700b, 0x70e0, 0x127f, 0x157f, 0x147f, 0x137f,
- 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x7114, 0x209c, 0x20a1,
- 0x0014, 0x7803, 0x0026, 0x2001, 0x7115, 0x20ac, 0x53a6, 0x2099,
- 0x7116, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
+ 0xc084, 0x7002, 0x700b, 0x6ce0, 0x127f, 0x157f, 0x147f, 0x137f,
+ 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x6d14, 0x209c, 0x20a1,
+ 0x0014, 0x7803, 0x0026, 0x2001, 0x6d15, 0x20ac, 0x53a6, 0x2099,
+ 0x6d16, 0x20a1, 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020,
0x127e, 0x2091, 0x8000, 0x7803, 0x0001, 0x7007, 0x0004, 0x7000,
- 0xc08c, 0x7002, 0x700b, 0x7111, 0x127f, 0x157f, 0x147f, 0x137f,
- 0x007c, 0x017e, 0x0e7e, 0x2071, 0x71d9, 0x0f7e, 0x2079, 0x0010,
- 0x7904, 0x7803, 0x0002, 0xd1fc, 0x0040, 0x142c, 0xa18c, 0x0700,
- 0x0040, 0x1429, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078,
- 0x142c, 0x7004, 0x1079, 0x1430, 0x0f7f, 0x0e7f, 0x017f, 0x007c,
- 0x135b, 0x1438, 0x145a, 0x1474, 0x149d, 0x1436, 0x0078, 0x1436,
+ 0xc08c, 0x7002, 0x700b, 0x6d11, 0x127f, 0x157f, 0x147f, 0x137f,
+ 0x007c, 0x017e, 0x0e7e, 0x2071, 0x6dd3, 0x0f7e, 0x2079, 0x0010,
+ 0x7904, 0x7803, 0x0002, 0xd1fc, 0x0040, 0x140c, 0xa18c, 0x0700,
+ 0x0040, 0x1409, 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078,
+ 0x140c, 0x7004, 0x1079, 0x1410, 0x0f7f, 0x0e7f, 0x017f, 0x007c,
+ 0x133b, 0x1418, 0x143a, 0x1454, 0x147d, 0x1416, 0x0078, 0x1416,
0x137e, 0x147e, 0x157e, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803,
0x0040, 0x7010, 0x20a8, 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f,
- 0x137f, 0x700c, 0xa005, 0x0040, 0x1461, 0x1078, 0x1391, 0x007c,
+ 0x137f, 0x700c, 0xa005, 0x0040, 0x1441, 0x1078, 0x1371, 0x007c,
0x7008, 0xa080, 0x0002, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078,
- 0x135b, 0x007c, 0x700c, 0xa005, 0x0040, 0x1461, 0x1078, 0x13a7,
+ 0x133b, 0x007c, 0x700c, 0xa005, 0x0040, 0x1441, 0x1078, 0x1387,
0x007c, 0x0d7e, 0x7008, 0x2068, 0x7830, 0x6826, 0x7834, 0x682a,
0x7838, 0x682e, 0x783c, 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007,
- 0x0000, 0x1078, 0x135b, 0x007c, 0x137e, 0x147e, 0x157e, 0x2001,
- 0x70e3, 0x2004, 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803,
- 0x0040, 0x20a9, 0x0020, 0x53a5, 0x2001, 0x70e5, 0x2004, 0xd0bc,
- 0x0040, 0x1493, 0x2001, 0x70ee, 0x2004, 0xa080, 0x000d, 0x20a0,
+ 0x0000, 0x1078, 0x133b, 0x007c, 0x137e, 0x147e, 0x157e, 0x2001,
+ 0x6ce3, 0x2004, 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803,
+ 0x0040, 0x20a9, 0x0020, 0x53a5, 0x2001, 0x6ce5, 0x2004, 0xd0bc,
+ 0x0040, 0x1473, 0x2001, 0x6cee, 0x2004, 0xa080, 0x000d, 0x20a0,
0x20a9, 0x0020, 0x53a5, 0x157f, 0x147f, 0x137f, 0x7007, 0x0000,
- 0x1078, 0x3b15, 0x1078, 0x135b, 0x007c, 0x2001, 0x7113, 0x2003,
- 0x0100, 0x7007, 0x0000, 0x1078, 0x135b, 0x007c, 0x127e, 0x2091,
- 0x2100, 0x2079, 0x0030, 0x2071, 0x71ea, 0x7003, 0x0000, 0x700f,
- 0x71f0, 0x7013, 0x71f0, 0x780f, 0x0070, 0x127f, 0x007c, 0x6934,
- 0xa184, 0x0007, 0x0079, 0x14bc, 0x14c4, 0x150a, 0x14c4, 0x14c4,
- 0x14c4, 0x14ef, 0x14d3, 0x14c8, 0xa085, 0x0001, 0x0078, 0x1524,
- 0x684c, 0xd0bc, 0x0040, 0x14c4, 0x6860, 0x682e, 0x685c, 0x682a,
- 0x6858, 0x0078, 0x1512, 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0,
- 0x14c4, 0x684c, 0xd0bc, 0x0040, 0x14c4, 0x6860, 0x682e, 0x685c,
+ 0x1078, 0x3899, 0x1078, 0x133b, 0x007c, 0x2001, 0x6d13, 0x2003,
+ 0x0100, 0x7007, 0x0000, 0x1078, 0x133b, 0x007c, 0x127e, 0x2091,
+ 0x2100, 0x2079, 0x0030, 0x2071, 0x6de4, 0x7003, 0x0000, 0x700f,
+ 0x6dea, 0x7013, 0x6dea, 0x780f, 0x0070, 0x127f, 0x007c, 0x6934,
+ 0xa184, 0x0007, 0x0079, 0x149c, 0x14a4, 0x14ea, 0x14a4, 0x14a4,
+ 0x14a4, 0x14cf, 0x14b3, 0x14a8, 0xa085, 0x0001, 0x0078, 0x1504,
+ 0x684c, 0xd0bc, 0x0040, 0x14a4, 0x6860, 0x682e, 0x685c, 0x682a,
+ 0x6858, 0x0078, 0x14f2, 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0,
+ 0x14a4, 0x684c, 0xd0bc, 0x0040, 0x14a4, 0x6860, 0x682e, 0x685c,
0x682a, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
- 0xa080, 0x1beb, 0x2004, 0x6832, 0x6858, 0x0078, 0x151a, 0xa18c,
- 0x00ff, 0xa186, 0x0015, 0x00c0, 0x14c4, 0x684c, 0xd0ac, 0x0040,
- 0x14c4, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
- 0xa080, 0x1beb, 0x2004, 0x6832, 0xa006, 0x682e, 0x682a, 0x6858,
- 0x0078, 0x151a, 0x684c, 0xd0ac, 0x0040, 0x14c4, 0xa006, 0x682e,
- 0x682a, 0x6858, 0xa18c, 0x000f, 0xa188, 0x1beb, 0x210c, 0x6932,
+ 0xa080, 0x1b82, 0x2004, 0x6832, 0x6858, 0x0078, 0x14fa, 0xa18c,
+ 0x00ff, 0xa186, 0x0015, 0x00c0, 0x14a4, 0x684c, 0xd0ac, 0x0040,
+ 0x14a4, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
+ 0xa080, 0x1b82, 0x2004, 0x6832, 0xa006, 0x682e, 0x682a, 0x6858,
+ 0x0078, 0x14fa, 0x684c, 0xd0ac, 0x0040, 0x14a4, 0xa006, 0x682e,
+ 0x682a, 0x6858, 0xa18c, 0x000f, 0xa188, 0x1b82, 0x210c, 0x6932,
0x2d08, 0x691a, 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a,
- 0x697c, 0x6912, 0x6980, 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1,
- 0x2000, 0x2001, 0x020a, 0x2004, 0x82ff, 0x0040, 0x153f, 0xa280,
- 0x0004, 0x0d7e, 0x206c, 0x684c, 0xd0dc, 0x00c0, 0x153b, 0x1078,
- 0x14b7, 0x10c0, 0x1288, 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e,
- 0x047e, 0x037e, 0x027e, 0x2091, 0x2100, 0x027f, 0x037f, 0x047f,
- 0x7000, 0xa005, 0x00c0, 0x1553, 0x7206, 0x2001, 0x1567, 0x007e,
- 0x2260, 0x0078, 0x167f, 0x710c, 0x220a, 0x8108, 0x230a, 0x8108,
- 0x240a, 0x8108, 0xa182, 0x720b, 0x0048, 0x1560, 0x2009, 0x71f0,
- 0x710e, 0x7000, 0xa005, 0x00c0, 0x1567, 0x1078, 0x1668, 0x127f,
- 0x007c, 0x127e, 0x027e, 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100,
- 0x007f, 0x047f, 0x037f, 0x027f, 0x0d7e, 0x0c7e, 0x2460, 0x6110,
- 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0040, 0x15bb, 0x6808, 0xa005,
- 0x0040, 0x1621, 0x7000, 0xa005, 0x00c0, 0x1588, 0x0078, 0x15b5,
- 0x700c, 0x7110, 0xa106, 0x00c0, 0x1625, 0x7004, 0xa406, 0x00c0,
- 0x15b5, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, 0x159e, 0x047e,
- 0x1078, 0x1737, 0x047f, 0x2460, 0x0078, 0x157e, 0x2001, 0x0207,
- 0x2004, 0xd09c, 0x00c0, 0x1591, 0x7804, 0xa084, 0x6000, 0x0040,
- 0x15af, 0xa086, 0x6000, 0x0040, 0x15af, 0x0078, 0x1591, 0x7803,
- 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
- 0x571c, 0x0078, 0x1625, 0x6808, 0xa005, 0x0040, 0x1621, 0x7000,
- 0xa005, 0x00c0, 0x15c5, 0x0078, 0x1621, 0x700c, 0x7110, 0xa106,
- 0x00c0, 0x15ce, 0x7004, 0xa406, 0x00c0, 0x1621, 0x2001, 0x0005,
- 0x2004, 0xd08c, 0x0040, 0x15db, 0x047e, 0x1078, 0x1737, 0x047f,
- 0x2460, 0x0078, 0x15bb, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0,
- 0x15ce, 0x2001, 0x0005, 0x2004, 0xd08c, 0x00c0, 0x15d4, 0x7804,
- 0xa084, 0x6000, 0x0040, 0x15f2, 0xa086, 0x6000, 0x0040, 0x15f2,
- 0x0078, 0x15ce, 0x7007, 0x0000, 0xa016, 0x2218, 0x7000, 0xa08e,
- 0x0001, 0x0040, 0x1613, 0xa08e, 0x0002, 0x00c0, 0x1621, 0x0c7e,
- 0x0e7e, 0x6818, 0x2060, 0x1078, 0x1bc0, 0x2804, 0xac70, 0x6034,
- 0xd09c, 0x00c0, 0x160f, 0x7308, 0x720c, 0x0078, 0x1611, 0x7310,
- 0x7214, 0x0e7f, 0x0c7f, 0x7820, 0xa318, 0x7824, 0xa211, 0x6810,
- 0xa300, 0x6812, 0x6814, 0xa201, 0x6816, 0x7803, 0x0004, 0x7003,
- 0x0000, 0x2009, 0x0048, 0x1078, 0x571c, 0x0c7f, 0x0d7f, 0x127f,
- 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x71ea, 0x7000, 0xa086, 0x0000,
- 0x0040, 0x1665, 0x7004, 0xac06, 0x00c0, 0x1656, 0x2079, 0x0030,
- 0x7804, 0xd0fc, 0x00c0, 0x1652, 0x2001, 0x0207, 0x2004, 0xd09c,
- 0x00c0, 0x1638, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1644,
- 0x7803, 0x0002, 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, 0x0000,
- 0x0078, 0x1656, 0x1078, 0x1737, 0x0078, 0x162d, 0x157e, 0x20a9,
- 0x0009, 0x2009, 0x71f0, 0x2104, 0xac06, 0x00c0, 0x1660, 0x200a,
- 0xa188, 0x0003, 0x00f0, 0x165b, 0x157f, 0x0e7f, 0x0f7f, 0x007c,
- 0x700c, 0x7110, 0xa106, 0x00c0, 0x1670, 0x7003, 0x0000, 0x007c,
- 0x2104, 0x7006, 0x2060, 0x8108, 0x211c, 0x8108, 0x2124, 0x8108,
- 0xa182, 0x720b, 0x0048, 0x167e, 0x2009, 0x71f0, 0x7112, 0x8cff,
- 0x00c0, 0x169e, 0x7908, 0xd1ec, 0x00c0, 0x1692, 0x1078, 0x190d,
- 0x0040, 0x1692, 0x7803, 0x0009, 0x7904, 0xd1fc, 0x0040, 0x168c,
- 0x7803, 0x0006, 0x7007, 0x0000, 0x1078, 0x190d, 0x0040, 0x16c5,
- 0x7803, 0x0019, 0x7003, 0x0003, 0x0078, 0x16c5, 0x6010, 0x2068,
- 0x2d58, 0x6828, 0xa406, 0x00c0, 0x16a9, 0x682c, 0xa306, 0x0040,
- 0x16ad, 0x1078, 0x1c0b, 0x00c0, 0x1682, 0x684c, 0xd0f4, 0x00c0,
- 0x1682, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034,
- 0xa0cc, 0x000f, 0x2009, 0x0011, 0x1078, 0x16c6, 0x0040, 0x16c4,
- 0x2009, 0x0001, 0x1078, 0x16c6, 0x2d58, 0x007c, 0x8aff, 0x0040,
- 0x1732, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x16e5, 0x0d7e,
- 0x2804, 0xac68, 0x2900, 0x0079, 0x16d5, 0x1714, 0x16f5, 0x16f5,
- 0x1714, 0x1714, 0x170c, 0x1714, 0x16f5, 0x1714, 0x16fb, 0x16fb,
- 0x1714, 0x1714, 0x1714, 0x1703, 0x16fb, 0xc0fc, 0x6852, 0x6b6c,
- 0x6a70, 0x6d1c, 0x6c20, 0x0d7e, 0xd99c, 0x0040, 0x1717, 0x2804,
- 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1717, 0x6b08, 0x6a0c, 0x6d00,
- 0x6c04, 0x0078, 0x1717, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08,
- 0x6e0c, 0x0078, 0x1717, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff,
- 0xa086, 0x001e, 0x00c0, 0x1714, 0x0d7f, 0x1078, 0x1ba7, 0x00c0,
- 0x16c6, 0xa00e, 0x0078, 0x1732, 0x0d7f, 0x1078, 0x1288, 0x7b22,
- 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000,
- 0x7002, 0x0d7f, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e,
- 0x2300, 0x6b10, 0xa302, 0x6812, 0x2200, 0x6a14, 0xa203, 0x6816,
- 0x1078, 0x1ba7, 0x007c, 0x1078, 0x1288, 0x1078, 0x1288, 0x127e,
- 0x2091, 0x2100, 0x007e, 0x017e, 0x2b68, 0x6818, 0x2060, 0x7904,
- 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, 0x1735, 0xa184, 0x0003,
- 0xa086, 0x0003, 0x0040, 0x1735, 0x7000, 0x0079, 0x174f, 0x1757,
- 0x1759, 0x182a, 0x188e, 0x18a5, 0x1757, 0x1757, 0x1757, 0x1078,
- 0x1288, 0x8001, 0x7002, 0xa184, 0x0880, 0x00c0, 0x176e, 0x8aff,
- 0x0040, 0x17ca, 0x2009, 0x0001, 0x1078, 0x16c6, 0x0040, 0x18b7,
- 0x2009, 0x0001, 0x1078, 0x16c6, 0x0078, 0x18b7, 0x7803, 0x0004,
- 0x7003, 0x0000, 0xd1dc, 0x0040, 0x17b9, 0x027e, 0x037e, 0x6b28,
- 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824, 0x6872, 0xa213, 0x6b2a,
- 0x6a2e, 0x7820, 0x6910, 0xa100, 0x6812, 0x7824, 0x6914, 0xa101,
- 0x6816, 0x037f, 0x027f, 0x7830, 0x681e, 0x7834, 0x6822, 0x1078,
- 0x1bc0, 0x2a00, 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003,
- 0x0000, 0x6850, 0xc0fd, 0x6852, 0x6808, 0x8001, 0x680a, 0x00c0,
- 0x17ab, 0x684c, 0xd0e4, 0x0040, 0x17ab, 0x7004, 0x2060, 0x2009,
- 0x0048, 0x1078, 0x571c, 0x7808, 0xd0ec, 0x00c0, 0x17b5, 0x7803,
- 0x0009, 0x7003, 0x0004, 0x0078, 0x18b7, 0x1078, 0x1668, 0x0078,
- 0x18b7, 0x057e, 0x7d0c, 0x1078, 0x6f20, 0x057f, 0x1078, 0x18bb,
- 0x697c, 0x6912, 0x6980, 0x6916, 0x7803, 0x0009, 0x7003, 0x0003,
- 0x0078, 0x18b7, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005, 0x00c0,
- 0x17e2, 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0, 0x17de,
- 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x571c, 0x1078, 0x1668,
- 0x0078, 0x18b7, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914, 0xa183,
- 0x0000, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa188, 0x0007,
- 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004, 0xa20a,
- 0x810b, 0x810b, 0x810b, 0x1078, 0x18ea, 0x7803, 0x0004, 0x780f,
- 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, 0x0040, 0x1803, 0x7803,
- 0x0002, 0x7803, 0x0004, 0x780f, 0x0070, 0x7004, 0x7007, 0x0000,
- 0x2060, 0x2009, 0x0048, 0x1078, 0x571c, 0x1078, 0x190d, 0x0040,
- 0x17de, 0x7908, 0xd1ec, 0x00c0, 0x1821, 0x2009, 0x0009, 0x0078,
- 0x1823, 0x2009, 0x0019, 0x7902, 0x7803, 0x0009, 0x7003, 0x0003,
- 0x0078, 0x18b7, 0x8001, 0x7002, 0xd194, 0x0040, 0x183c, 0x7804,
- 0xd0fc, 0x00c0, 0x173f, 0x8aff, 0x0040, 0x18b7, 0x2009, 0x0001,
- 0x1078, 0x16c6, 0x0078, 0x18b7, 0xa184, 0x0880, 0x00c0, 0x1849,
- 0x8aff, 0x0040, 0x18b7, 0x2009, 0x0001, 0x1078, 0x16c6, 0x0078,
- 0x18b7, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040, 0x187d,
- 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1bc0, 0x0d7e, 0x0f7e,
- 0x2d78, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x186d, 0x6808,
- 0x2008, 0xa31a, 0x680c, 0xa213, 0x7810, 0xa100, 0x7812, 0x690c,
- 0x7814, 0xa101, 0x7816, 0x0078, 0x1879, 0x6810, 0x2008, 0xa31a,
- 0x6814, 0xa213, 0x7810, 0xa100, 0x7812, 0x6914, 0x7814, 0xa101,
- 0x7816, 0x0f7f, 0x0d7f, 0x0078, 0x1779, 0x057e, 0x7d0c, 0x1078,
- 0x6f20, 0x057f, 0x1078, 0x18bb, 0x697c, 0x6912, 0x6980, 0x6916,
- 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x18b7, 0x7803, 0x0004,
- 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x18a1, 0x6808, 0x8001,
- 0x680a, 0x00c0, 0x18a1, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
- 0x571c, 0x1078, 0x1668, 0x0078, 0x18b7, 0x7803, 0x0004, 0x7003,
- 0x0000, 0x7004, 0x2060, 0x6010, 0xa005, 0x0040, 0x18a1, 0x2068,
- 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078, 0x167f, 0x017f,
- 0x007f, 0x127f, 0x007c, 0x1078, 0x18cc, 0x20e1, 0x9028, 0x700f,
- 0x71f0, 0x7013, 0x71f0, 0x2001, 0x015d, 0x200c, 0x810a, 0x2102,
- 0x2001, 0x0138, 0x2202, 0x007c, 0x2001, 0x0138, 0x2014, 0x2003,
- 0x0000, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc, 0x00c0,
- 0x18e9, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0, 0x18e9,
- 0x2001, 0x0111, 0x201c, 0x83ff, 0x00c0, 0x18e9, 0x8421, 0x00c0,
- 0x18d3, 0x007c, 0x3c00, 0x007e, 0x0e7e, 0x2071, 0x0200, 0x7808,
- 0xa084, 0xf000, 0xa10d, 0x1078, 0x18cc, 0x20e1, 0x7000, 0x7324,
- 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e,
- 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138,
- 0x2202, 0x0e7f, 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e, 0x7908,
- 0xa18c, 0x0fff, 0xa182, 0x0009, 0x0048, 0x191a, 0xa085, 0x0001,
- 0x0078, 0x192c, 0x2001, 0x020a, 0x81ff, 0x0040, 0x1925, 0x20e1,
- 0x6000, 0x200c, 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000, 0x200c,
- 0x200c, 0x7003, 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c, 0x0e7e,
- 0x2071, 0x720b, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e, 0xa280,
- 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x19b1, 0x6934, 0xa184,
- 0x0007, 0x0079, 0x1943, 0x194b, 0x199c, 0x194b, 0x194b, 0x194b,
- 0x1981, 0x195e, 0x194d, 0x1078, 0x1288, 0x684c, 0xd0b4, 0x0040,
- 0x1ab3, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
- 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x19a4, 0x6834, 0xa084,
- 0x00ff, 0xa086, 0x001e, 0x00c0, 0x194b, 0x684c, 0xd0b4, 0x0040,
- 0x1ab3, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c,
- 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004,
- 0xa084, 0x000f, 0xa080, 0x1beb, 0x2004, 0x6832, 0x6958, 0x0078,
- 0x19ad, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x19b1, 0x684c,
- 0xd0b4, 0x0040, 0x1ab3, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004,
- 0xa084, 0x000f, 0xa080, 0x1beb, 0x2004, 0x6832, 0x6958, 0xa006,
- 0x682e, 0x682a, 0x0078, 0x19ad, 0x684c, 0xd0b4, 0x0040, 0x1733,
- 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834, 0xa084,
- 0x000f, 0xa080, 0x1beb, 0x2004, 0x6832, 0x6926, 0x684c, 0xc0dd,
- 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804, 0xd0fc,
- 0x10c0, 0x1ab7, 0x0e7e, 0x0d7e, 0x2071, 0x720b, 0x7000, 0xa005,
- 0x00c0, 0x1a2d, 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c, 0x7004,
- 0x2068, 0x6818, 0x0d7e, 0x2068, 0x686c, 0x7812, 0x6890, 0x0f7e,
- 0x20e1, 0x9040, 0x2079, 0x0200, 0x781a, 0x2079, 0x0100, 0x8004,
- 0x78d6, 0x0f7f, 0x0d7f, 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060,
- 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x6908, 0xa184, 0x0007,
- 0x0040, 0x19ef, 0x017e, 0x2009, 0x0008, 0xa102, 0x017f, 0xa108,
- 0x791a, 0x7116, 0x701e, 0x680c, 0xa081, 0x0000, 0x781e, 0x701a,
- 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106, 0x00c0,
- 0x1a06, 0x6928, 0x6810, 0xa106, 0x0040, 0x1a13, 0x037e, 0x047e,
- 0x6b14, 0x6c10, 0x1078, 0x1c0b, 0x047f, 0x037f, 0x0040, 0x1a13,
- 0x0c7f, 0x0078, 0x1a2d, 0x8aff, 0x00c0, 0x1a1b, 0x0c7f, 0xa085,
- 0x0001, 0x0078, 0x1a2d, 0x127e, 0x2091, 0x8000, 0x2079, 0x0020,
- 0x2009, 0x0001, 0x1078, 0x1a31, 0x0040, 0x1a2a, 0x2009, 0x0001,
- 0x1078, 0x1a31, 0x127f, 0x0c7f, 0xa006, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x007c, 0x077e, 0x067e, 0x057e, 0x047e, 0x037e, 0x027e, 0x8aff,
- 0x0040, 0x1aac, 0x700c, 0x7214, 0xa202, 0x7010, 0x7218, 0xa203,
- 0x0048, 0x1aab, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1a5e,
- 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1a4e, 0x1a8d, 0x1a6e,
- 0x1a6e, 0x1a8d, 0x1a8d, 0x1a85, 0x1a8d, 0x1a6e, 0x1a8d, 0x1a74,
- 0x1a74, 0x1a8d, 0x1a8d, 0x1a8d, 0x1a7c, 0x1a74, 0xc0fc, 0x6852,
- 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1a91, 0x0d7e,
- 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1a90, 0x6b08, 0x6a0c,
- 0x6d00, 0x6c04, 0x0078, 0x1a90, 0x6b10, 0x6a14, 0x6d00, 0x6c04,
- 0x6f08, 0x6e0c, 0x0078, 0x1a90, 0x0d7f, 0x0d7e, 0x6834, 0xa084,
- 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1a8d, 0x0d7f, 0x1078, 0x1ba7,
- 0x00c0, 0x1a37, 0xa00e, 0x0078, 0x1aac, 0x0d7f, 0x1078, 0x1288,
- 0x0d7f, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902,
- 0x7000, 0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201,
- 0x682e, 0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078,
- 0x1ba7, 0x0078, 0x1aac, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f,
- 0x067f, 0x077f, 0x007c, 0x1078, 0x1288, 0x1078, 0x1288, 0x127e,
- 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x2079, 0x0020, 0x2071, 0x720b, 0x2b68, 0x6818, 0x2060, 0x7904,
- 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, 0x1ab5, 0x7000, 0x0079,
- 0x1ad1, 0x1b78, 0x1ad5, 0x1b45, 0x1b76, 0x8001, 0x7002, 0xd19c,
- 0x00c0, 0x1ae9, 0x8aff, 0x0040, 0x1b08, 0x2009, 0x0001, 0x1078,
- 0x1a31, 0x0040, 0x1b78, 0x2009, 0x0001, 0x1078, 0x1a31, 0x0078,
- 0x1b78, 0x7803, 0x0004, 0xd194, 0x0040, 0x1af9, 0x6850, 0xc0fc,
- 0x6852, 0x8aff, 0x00c0, 0x1afe, 0x684c, 0xc0f5, 0x684e, 0x0078,
- 0x1afe, 0x1078, 0x1bc0, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826,
- 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0078, 0x1b78,
- 0x711c, 0x81ff, 0x0040, 0x1b1e, 0x7918, 0x7922, 0x7827, 0x0000,
- 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, 0x700c, 0xa100, 0x700e,
- 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, 0x1b78, 0x0f7e, 0x027e,
- 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14, 0xa284,
- 0x0004, 0xa085, 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0, 0x1b2c,
- 0x79c8, 0x007f, 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102, 0x78c6,
- 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803,
- 0x0008, 0x7003, 0x0000, 0x0078, 0x1b78, 0x8001, 0x7002, 0xd194,
- 0x0040, 0x1b5a, 0x7804, 0xd0fc, 0x00c0, 0x1ac7, 0xd19c, 0x00c0,
- 0x1b74, 0x8aff, 0x0040, 0x1b78, 0x2009, 0x0001, 0x1078, 0x1a31,
- 0x0078, 0x1b78, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1bc0,
- 0x0d7e, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1b6d, 0x6808,
- 0xa31a, 0x680c, 0xa213, 0x0078, 0x1b71, 0x6810, 0xa31a, 0x6814,
- 0xa213, 0x0d7f, 0x0078, 0x1af9, 0x0078, 0x1af9, 0x1078, 0x1288,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c,
- 0x0f7e, 0x0e7e, 0x2071, 0x720b, 0x7000, 0xa086, 0x0000, 0x0040,
- 0x1ba4, 0x2079, 0x0020, 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x0040,
- 0x1b8b, 0x1078, 0x1ab7, 0x7000, 0xa086, 0x0000, 0x00c0, 0x1b8b,
- 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1b9a, 0x20e1, 0x9040,
- 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x0f7f, 0x007c, 0x8840,
- 0x2804, 0xa005, 0x00c0, 0x1bbb, 0x6004, 0xa005, 0x0040, 0x1bbd,
- 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x1beb, 0x2044,
- 0x88ff, 0x1040, 0x1288, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c,
- 0x8a50, 0x8841, 0x2804, 0xa005, 0x00c0, 0x1bda, 0x2c00, 0xad06,
- 0x0040, 0x1bcf, 0x6000, 0xa005, 0x00c0, 0x1bcf, 0x2d00, 0x2060,
- 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, 0x1bfb, 0x2044, 0x88ff,
- 0x1040, 0x1288, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d,
- 0x0021, 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021,
- 0x0027, 0x0000, 0x0000, 0x0000, 0x1be0, 0x1bdc, 0x0000, 0x0000,
- 0x1bea, 0x0000, 0x1be0, 0x0000, 0x1be7, 0x1be4, 0x0000, 0x0000,
- 0x0000, 0x1bea, 0x1be7, 0x0000, 0x1be2, 0x1be2, 0x0000, 0x0000,
- 0x1bea, 0x0000, 0x1be2, 0x0000, 0x1be8, 0x1be8, 0x0000, 0x0000,
- 0x0000, 0x1bea, 0x1be8, 0x0a7e, 0x097e, 0x087e, 0x6858, 0xa055,
- 0x0040, 0x1ca8, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x1beb,
- 0xa986, 0x0007, 0x0040, 0x1c24, 0xa986, 0x000e, 0x0040, 0x1c24,
- 0xa986, 0x000f, 0x00c0, 0x1c28, 0x605c, 0xa422, 0x6060, 0xa31a,
- 0x2804, 0xa045, 0x00c0, 0x1c36, 0x0050, 0x1c30, 0x0078, 0x1ca8,
- 0x6004, 0xa065, 0x0040, 0x1ca8, 0x0078, 0x1c13, 0x2804, 0xa005,
- 0x0040, 0x1c54, 0xac68, 0xd99c, 0x00c0, 0x1c44, 0x6808, 0xa422,
- 0x680c, 0xa31b, 0x0078, 0x1c48, 0x6810, 0xa422, 0x6814, 0xa31b,
- 0x0048, 0x1c73, 0x2300, 0xa405, 0x0040, 0x1c5a, 0x8a51, 0x0040,
- 0x1ca8, 0x8840, 0x0078, 0x1c36, 0x6004, 0xa065, 0x0040, 0x1ca8,
- 0x0078, 0x1c13, 0x8a51, 0x0040, 0x1ca8, 0x8840, 0x2804, 0xa005,
- 0x00c0, 0x1c6d, 0x6004, 0xa065, 0x0040, 0x1ca8, 0x6034, 0xa0cc,
- 0x000f, 0xa9c0, 0x1beb, 0x2804, 0x2040, 0x2b68, 0x6850, 0xc0fc,
- 0x6852, 0x0078, 0x1ca0, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000,
- 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0, 0x1c8e,
- 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048, 0x1288,
- 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x1c9a, 0x6910, 0x2400,
- 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x1288, 0x6800, 0xa420,
- 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd, 0x6852,
- 0x2c00, 0x681a, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078, 0x1cad,
- 0x087f, 0x097f, 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0005,
- 0x2004, 0xa084, 0x0007, 0x0079, 0x1cb5, 0x1cbd, 0x1cbe, 0x1cc1,
- 0x1cc4, 0x1cc9, 0x1ccc, 0x1cd1, 0x1cd6, 0x007c, 0x1078, 0x1ab7,
- 0x007c, 0x1078, 0x1737, 0x007c, 0x1078, 0x1737, 0x1078, 0x1ab7,
- 0x007c, 0x1078, 0x1411, 0x007c, 0x1078, 0x1ab7, 0x1078, 0x1411,
- 0x007c, 0x1078, 0x1737, 0x1078, 0x1411, 0x007c, 0x1078, 0x1737,
- 0x1078, 0x1ab7, 0x1078, 0x1411, 0x007c, 0x127e, 0x2091, 0x2300,
- 0x2079, 0x0200, 0x2071, 0x7480, 0x2069, 0x7000, 0x2009, 0x0004,
- 0x7912, 0x7817, 0x0004, 0x1078, 0x1fb7, 0x781b, 0x0002, 0x20e1,
- 0x8700, 0x127f, 0x007c, 0x127e, 0x2091, 0x2300, 0x781c, 0xa084,
- 0x0007, 0x0079, 0x1cfb, 0x1d1f, 0x1d03, 0x1d07, 0x1d0b, 0x1d11,
- 0x1d15, 0x1d19, 0x1d1d, 0x1078, 0x3f46, 0x0078, 0x1d1f, 0x1078,
- 0x3f75, 0x0078, 0x1d1f, 0x1078, 0x3f46, 0x1078, 0x3f75, 0x0078,
- 0x1d1f, 0x1078, 0x1d21, 0x0078, 0x1d1f, 0x1078, 0x1d21, 0x0078,
- 0x1d1f, 0x1078, 0x1d21, 0x0078, 0x1d1f, 0x1078, 0x1d21, 0x127f,
- 0x007c, 0x007e, 0x017e, 0x027e, 0x7930, 0xa184, 0x0003, 0x0040,
- 0x1d2b, 0x1078, 0x1288, 0xa184, 0x0030, 0x0040, 0x1d3c, 0x6a00,
- 0xa286, 0x0003, 0x00c0, 0x1d36, 0x1078, 0x1288, 0x1078, 0x3247,
- 0x20e1, 0x9010, 0x0078, 0x1d48, 0xa184, 0x00c0, 0x0040, 0x1d42,
- 0x1078, 0x1288, 0xa184, 0x0300, 0x0040, 0x1d48, 0x20e1, 0x9020,
- 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e, 0x0f7e,
- 0x2071, 0x7000, 0x7128, 0x2001, 0x71a3, 0x2102, 0x2001, 0x71ab,
- 0x2102, 0xa182, 0x0211, 0x00c8, 0x1d61, 0x2009, 0x0008, 0x0078,
- 0x1d8b, 0xa182, 0x0259, 0x00c8, 0x1d69, 0x2009, 0x0007, 0x0078,
- 0x1d8b, 0xa182, 0x02c1, 0x00c8, 0x1d71, 0x2009, 0x0006, 0x0078,
- 0x1d8b, 0xa182, 0x0349, 0x00c8, 0x1d79, 0x2009, 0x0005, 0x0078,
- 0x1d8b, 0xa182, 0x0421, 0x00c8, 0x1d81, 0x2009, 0x0004, 0x0078,
- 0x1d8b, 0xa182, 0x0581, 0x00c8, 0x1d89, 0x2009, 0x0003, 0x0078,
- 0x1d8b, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0xa182, 0x0005,
- 0x00c8, 0x1d95, 0x7916, 0x0078, 0x1d97, 0x7817, 0x0004, 0x1078,
- 0x1fb7, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091, 0x2200,
- 0x2061, 0x0100, 0x2071, 0x7000, 0x6024, 0x6026, 0x6033, 0x00ef,
- 0x60e7, 0x0000, 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7,
- 0x6043, 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x00af,
- 0x600f, 0x00ff, 0x602b, 0x002f, 0x127f, 0x007c, 0x2001, 0x702b,
- 0x2003, 0x0000, 0x2001, 0x702a, 0x2003, 0x0001, 0x007c, 0x127e,
- 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x6124, 0xa184, 0x002c,
- 0x00c0, 0x1dd6, 0xa184, 0x0007, 0x0079, 0x1ddc, 0xa195, 0x0004,
- 0xa284, 0x0007, 0x0079, 0x1ddc, 0x1e08, 0x1de4, 0x1de8, 0x1dec,
- 0x1df2, 0x1df6, 0x1dfc, 0x1e02, 0x1078, 0x4423, 0x0078, 0x1e08,
- 0x1078, 0x4512, 0x0078, 0x1e08, 0x1078, 0x4512, 0x1078, 0x4423,
- 0x0078, 0x1e08, 0x1078, 0x1e0d, 0x0078, 0x1e08, 0x1078, 0x4423,
- 0x1078, 0x1e0d, 0x0078, 0x1e08, 0x1078, 0x4512, 0x1078, 0x1e0d,
- 0x0078, 0x1e08, 0x1078, 0x4512, 0x1078, 0x4423, 0x1078, 0x1e0d,
- 0x027f, 0x017f, 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040, 0x1ebd,
- 0x017e, 0x047e, 0x0c7e, 0x644c, 0x74b2, 0xa48c, 0xff00, 0xa196,
- 0xff00, 0x0040, 0x1e3c, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116,
- 0x0040, 0x1e3c, 0x7130, 0xd18c, 0x00c0, 0x1e3c, 0x2011, 0x7052,
- 0x2214, 0xd2ec, 0x0040, 0x1e30, 0xc18d, 0x7132, 0x0078, 0x1e3c,
- 0x6240, 0xa294, 0x0010, 0x0040, 0x1e7a, 0x6248, 0xa294, 0xff00,
- 0xa296, 0xff00, 0x00c0, 0x1e7a, 0x037e, 0x73b0, 0x2011, 0x8013,
- 0x1078, 0x2a18, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011, 0x7052,
- 0x220c, 0xd1a4, 0x0040, 0x1e62, 0x017e, 0x2009, 0x0001, 0x2011,
- 0x0100, 0x1078, 0x43f1, 0x2019, 0x000e, 0x1078, 0x6e67, 0xa484,
- 0x00ff, 0x1078, 0x1fe4, 0x8127, 0xa006, 0x2009, 0x000e, 0x1078,
- 0x6ecf, 0x017f, 0xd1ac, 0x00c0, 0x1e6b, 0x2019, 0x0004, 0x1078,
- 0x2186, 0x0078, 0x1e7a, 0x157e, 0x20a9, 0x007e, 0x2009, 0x0000,
- 0x1078, 0x34fa, 0x00c0, 0x1e76, 0x1078, 0x32ed, 0x8108, 0x00f0,
- 0x1e70, 0x157f, 0x0c7f, 0x047f, 0x6043, 0x0000, 0x2009, 0x00f7,
- 0x1078, 0x32b0, 0x0f7e, 0x2079, 0x71c9, 0x783c, 0xa086, 0x0000,
- 0x0040, 0x1e92, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140,
- 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, 0x1078, 0x52b3, 0x2011,
- 0x0002, 0x1078, 0x52bd, 0x1078, 0x51c9, 0x1078, 0x4327, 0x037e,
- 0x2019, 0x0000, 0x1078, 0x525b, 0x037f, 0x60e3, 0x0000, 0x017f,
- 0x2001, 0x7000, 0x2014, 0xa296, 0x0004, 0x00c0, 0x1eb5, 0xd19c,
- 0x00c0, 0x1eb5, 0x6228, 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001,
- 0x701e, 0x2003, 0x0000, 0x6027, 0x0020, 0xd194, 0x0040, 0x1f5e,
- 0x0f7e, 0x2079, 0x71c9, 0x783c, 0xa086, 0x0001, 0x00c0, 0x1ee1,
- 0x017e, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803,
- 0x1000, 0x7803, 0x0000, 0x2079, 0x71b6, 0x7807, 0x0000, 0x7833,
- 0x0000, 0x1078, 0x49b7, 0x1078, 0x4a67, 0x017f, 0x0f7f, 0x0078,
- 0x1f5e, 0x0f7f, 0x017e, 0x6220, 0xd2b4, 0x0040, 0x1f16, 0x1078,
- 0x4327, 0x1078, 0x50b0, 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140,
- 0x6804, 0xa084, 0x4000, 0x0040, 0x1ef9, 0x6803, 0x1000, 0x6803,
- 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x71b6, 0x6028, 0xa09a, 0x0002,
- 0x00c8, 0x1f09, 0x8000, 0x602a, 0x0c7f, 0x1078, 0x50a2, 0x0078,
- 0x1f5d, 0x2019, 0x71bf, 0x2304, 0xa065, 0x0040, 0x1f13, 0x2009,
- 0x0027, 0x1078, 0x571c, 0x0c7f, 0x0078, 0x1f5d, 0xd2bc, 0x0040,
- 0x1f5d, 0x1078, 0x4335, 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e,
- 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x1f2b, 0x6803,
- 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x71b6, 0x6044,
- 0xa09a, 0x0002, 0x00c8, 0x1f4c, 0x8000, 0x6046, 0x603c, 0x0c7f,
- 0xa005, 0x0040, 0x1f5d, 0x1078, 0x432c, 0xa080, 0x0007, 0x2004,
- 0xa086, 0x0006, 0x00c0, 0x1f48, 0x6017, 0x0012, 0x0078, 0x1f5d,
- 0x6017, 0x0016, 0x0078, 0x1f5d, 0x037e, 0x2019, 0x0001, 0x1078,
- 0x525b, 0x037f, 0x2019, 0x71c5, 0x2304, 0xa065, 0x0040, 0x1f5c,
- 0x2009, 0x004f, 0x1078, 0x571c, 0x0c7f, 0x017f, 0xd19c, 0x0040,
- 0x1f86, 0x017e, 0x6028, 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078,
- 0x52b3, 0x2011, 0x0002, 0x1078, 0x52bd, 0x1078, 0x51c9, 0x1078,
- 0x4327, 0x037e, 0x2019, 0x0000, 0x1078, 0x525b, 0x037f, 0x60e3,
- 0x0000, 0x1078, 0x6f3e, 0x1078, 0x6f5c, 0x2001, 0x7000, 0x2003,
- 0x0004, 0x6027, 0x0008, 0x1078, 0x117d, 0x017f, 0xa18c, 0xffd0,
- 0x6126, 0x007c, 0x007e, 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x7000, 0x71a8, 0x70aa, 0xa116, 0x0040,
- 0x1fb0, 0x81ff, 0x0040, 0x1fa2, 0x2011, 0x8011, 0x1078, 0x2a18,
- 0x0078, 0x1fb0, 0x2011, 0x8012, 0x1078, 0x2a18, 0x037e, 0x0c7e,
- 0x2061, 0x0100, 0x2019, 0x0028, 0x1078, 0x2186, 0x0c7f, 0x037f,
- 0x127f, 0x0f7f, 0x0e7f, 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e,
- 0x0f7e, 0x007e, 0x027e, 0x2061, 0x0100, 0xa190, 0x1fd2, 0x2204,
- 0x60f2, 0xa192, 0x0005, 0x00c8, 0x1fc9, 0xa190, 0x1fdb, 0x0078,
- 0x1fcb, 0x2011, 0x1fdf, 0x2204, 0x60ee, 0x027f, 0x007f, 0x0f7f,
- 0x0c7f, 0x007c, 0x0840, 0x0840, 0x0840, 0x0580, 0x0420, 0x0348,
- 0x02c0, 0x0258, 0x0210, 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140,
- 0x00f8, 0x00d0, 0x00b0, 0x00a0, 0xa080, 0x2207, 0x200c, 0xa18c,
- 0xff00, 0x810f, 0x007c, 0xa080, 0x2207, 0x200c, 0xa18c, 0x00ff,
- 0x007c, 0x2011, 0x2015, 0x2019, 0x201f, 0x2025, 0x202b, 0x2031,
- 0x2039, 0x2041, 0x2047, 0x204d, 0x2055, 0x205d, 0x2065, 0x206d,
- 0x2077, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081,
- 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081, 0x2081,
- 0x2081, 0x107e, 0x007e, 0x0078, 0x209a, 0x107e, 0x007e, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1dc7, 0x0078, 0x209a, 0x107e,
- 0x007e, 0x1078, 0x1dc7, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1cae, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078, 0x1cae, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1dc7, 0x1078, 0x1cae, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1dc7, 0x1078, 0x1cae, 0x0078,
- 0x209a, 0x107e, 0x007e, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e,
- 0x007e, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1dc7, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1dc7, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1cae, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1cae, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e, 0x007e, 0x1078,
- 0x1dc7, 0x1078, 0x1cae, 0x1078, 0x1cf3, 0x0078, 0x209a, 0x107e,
- 0x007e, 0x1078, 0x1dc7, 0x1078, 0x1cae, 0x1078, 0x1cf3, 0x0078,
- 0x209a, 0x0005, 0x0078, 0x2081, 0xb084, 0x003c, 0x8004, 0x8004,
- 0x0079, 0x208a, 0x209a, 0x2017, 0x201b, 0x2021, 0x2027, 0x202d,
- 0x2033, 0x203b, 0x2043, 0x2049, 0x204f, 0x2057, 0x205f, 0x2067,
- 0x206f, 0x2079, 0x0008, 0x2084, 0x007f, 0x107f, 0x2091, 0x8001,
- 0x007c, 0x0c7e, 0x027e, 0x2001, 0x010c, 0x203c, 0x7274, 0x82ff,
- 0x0040, 0x20f0, 0x037e, 0x7384, 0xa38e, 0xffff, 0x00c0, 0x20b2,
- 0x2019, 0x0001, 0x8314, 0xa2e0, 0x75c0, 0x2c04, 0xa38c, 0x0001,
- 0x0040, 0x20bf, 0xa084, 0xff00, 0x8007, 0x0078, 0x20c1, 0xa084,
- 0x00ff, 0xa70e, 0x0040, 0x20e5, 0xa08e, 0x0000, 0x0040, 0x20e5,
- 0xa08e, 0x00ff, 0x0040, 0x20eb, 0x1078, 0x1fe4, 0x1078, 0x34bf,
- 0x00c0, 0x20e8, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
- 0x20df, 0x1078, 0x2138, 0x0040, 0x20e8, 0x0078, 0x20e5, 0x1078,
- 0x21d3, 0x1078, 0x215f, 0x0040, 0x20e8, 0x8318, 0x0078, 0x20b2,
- 0x7386, 0x0078, 0x20ed, 0x7087, 0xffff, 0x037f, 0x0078, 0x2135,
- 0xa780, 0x2207, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x20a9, 0x007e,
- 0x2009, 0x0000, 0x7084, 0xa096, 0xffff, 0x0040, 0x210c, 0xa092,
- 0x007e, 0x0048, 0x2107, 0x7087, 0xffff, 0x0078, 0x2132, 0x2008,
- 0x2011, 0x007e, 0xa202, 0x20a8, 0x2700, 0x157e, 0x017e, 0xa106,
- 0x0040, 0x2129, 0x1078, 0x34bf, 0x00c0, 0x2132, 0x6004, 0xa084,
- 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2123, 0x1078, 0x2138, 0x0040,
- 0x2132, 0x0078, 0x2129, 0x1078, 0x21d3, 0x1078, 0x215f, 0x0040,
- 0x2132, 0x017f, 0x8108, 0x157f, 0x00f0, 0x210c, 0x7087, 0xffff,
- 0x0078, 0x2135, 0x017f, 0x157f, 0x7186, 0x027f, 0x0c7f, 0x007c,
- 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x568f, 0x0040,
- 0x215a, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078,
- 0x348e, 0x2001, 0x0000, 0x1078, 0x34a2, 0x127e, 0x2091, 0x8000,
- 0x7080, 0x8000, 0x7082, 0x127f, 0x2009, 0x0004, 0x1078, 0x571c,
- 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x017e,
- 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078, 0x568f, 0x0040, 0x2181,
- 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, 0x348e,
- 0x2001, 0x0002, 0x1078, 0x34a2, 0x127e, 0x2091, 0x8000, 0x7080,
- 0x8000, 0x7082, 0x127f, 0x2009, 0x0002, 0x1078, 0x571c, 0xa085,
- 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f, 0x007c, 0x0e7e, 0x0c7e,
- 0x067e, 0x037e, 0x027e, 0x1078, 0x46a6, 0x1078, 0x4656, 0x1078,
- 0x5b04, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e, 0x1078, 0x34fa,
- 0x00c0, 0x219e, 0x1078, 0x36e4, 0x1078, 0x32ed, 0x017f, 0x8108,
- 0x00f0, 0x2195, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c,
- 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0,
- 0x027e, 0x2019, 0x0029, 0x1078, 0x469f, 0x1078, 0x45e2, 0x2c08,
- 0x1078, 0x6d09, 0x017f, 0x2e60, 0x1078, 0x36e4, 0x1078, 0x32ed,
- 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x007e,
- 0x2071, 0x7000, 0x7080, 0xa005, 0x0040, 0x21d0, 0x8001, 0x7082,
- 0x007f, 0x0e7f, 0x007c, 0x6000, 0xc08c, 0x6002, 0x007c, 0x0e7e,
- 0x0c7e, 0x037e, 0x027e, 0x017e, 0x157e, 0x81ff, 0x00c0, 0x21e4,
- 0x20a9, 0x0001, 0x0078, 0x21e8, 0x20a9, 0x007e, 0x2011, 0x0000,
- 0x027e, 0xa2e0, 0x7120, 0x2c64, 0x8cff, 0x0040, 0x21fa, 0x2019,
- 0x0029, 0x1078, 0x469f, 0x1078, 0x45e2, 0x2c08, 0x1078, 0x6d09,
- 0x1078, 0x36e4, 0x027f, 0x8210, 0x00f0, 0x21e8, 0x027e, 0x027f,
- 0x157f, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x7eef,
- 0x7de8, 0x7ce4, 0x80e2, 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9,
- 0x80d6, 0x80d5, 0x80d4, 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd,
- 0x80cc, 0x80cb, 0x80ca, 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3,
- 0x80bc, 0x80ba, 0x75b9, 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2,
- 0x80b1, 0x80ae, 0x71ad, 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7,
- 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098,
- 0x6797, 0x6690, 0x658f, 0x6488, 0x6384, 0x6282, 0x8081, 0x8080,
- 0x617c, 0x607a, 0x8079, 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072,
- 0x8071, 0x806e, 0x5e6d, 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067,
- 0x5a66, 0x5965, 0x5863, 0x575c, 0x565a, 0x5559, 0x8056, 0x8055,
- 0x5454, 0x5353, 0x5252, 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b,
- 0x4e4a, 0x4d49, 0x8047, 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a,
- 0x8039, 0x8036, 0x4b35, 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e,
- 0x472d, 0x462c, 0x452b, 0x442a, 0x4329, 0x4227, 0x8026, 0x8025,
- 0x4123, 0x401f, 0x3f1e, 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010,
- 0x3b0f, 0x3a08, 0x8004, 0x3902, 0x8001, 0x8000, 0x8000, 0x3800,
- 0x3700, 0x3600, 0x8000, 0x3500, 0x8000, 0x8000, 0x8000, 0x3400,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3300, 0x3200,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x3100, 0x3000,
- 0x8000, 0x8000, 0x2f00, 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000,
- 0x8000, 0x8000, 0x2b00, 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000,
- 0x2700, 0x2600, 0x2500, 0x2400, 0x2300, 0x2200, 0x8000, 0x8000,
- 0x2100, 0x2000, 0x1f00, 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000,
- 0x1b00, 0x1a00, 0x8000, 0x1900, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x1800, 0x8000, 0x1700, 0x1600, 0x1500, 0x8000,
- 0x1400, 0x1300, 0x1200, 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000,
- 0x0e00, 0x0d00, 0x0c00, 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000,
- 0x0800, 0x0700, 0x8000, 0x0600, 0x8000, 0x8000, 0x8000, 0x0500,
- 0x0400, 0x0300, 0x8000, 0x0200, 0x8000, 0x8000, 0x8000, 0x0100,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x0000, 0x2071,
- 0x706d, 0x7003, 0x0002, 0xa006, 0x7012, 0x7016, 0x703a, 0x703e,
- 0x7033, 0x707d, 0x7037, 0x707d, 0x7007, 0x0001, 0x2061, 0x70bd,
- 0x6003, 0x0002, 0x007c, 0x0090, 0x231e, 0x0068, 0x231e, 0x2071,
- 0x706d, 0x2b78, 0x7818, 0xd084, 0x00c0, 0x231e, 0x2a60, 0x7820,
- 0xa08e, 0x0069, 0x00c0, 0x2405, 0x0079, 0x23a2, 0x007c, 0x2071,
- 0x706d, 0x7004, 0x0079, 0x2324, 0x2328, 0x2329, 0x2333, 0x2345,
- 0x007c, 0x0090, 0x2332, 0x0068, 0x2332, 0x2b78, 0x7818, 0xd084,
- 0x0040, 0x2351, 0x007c, 0x2b78, 0x2061, 0x70bd, 0x6008, 0xa08e,
- 0x0100, 0x0040, 0x2340, 0xa086, 0x0200, 0x0040, 0x23fd, 0x007c,
- 0x7014, 0x2068, 0x2a60, 0x7018, 0x007a, 0x7010, 0x2068, 0x6834,
- 0xa086, 0x0103, 0x0040, 0x234d, 0x007c, 0x2a60, 0x2b78, 0x7018,
- 0x007a, 0x2a60, 0x7820, 0xa08a, 0x0040, 0x00c8, 0x235a, 0x61a8,
- 0x0079, 0x2362, 0x2100, 0xa08a, 0x0036, 0x00c8, 0x23f9, 0x61a8,
- 0x0079, 0x23a2, 0x23db, 0x240d, 0x2415, 0x2419, 0x2421, 0x2427,
- 0x242b, 0x2434, 0x2438, 0x2440, 0x2444, 0x23f9, 0x23f9, 0x23f9,
- 0x2448, 0x23f9, 0x2458, 0x246f, 0x2486, 0x2502, 0x2507, 0x2534,
- 0x258e, 0x259f, 0x25bd, 0x25f0, 0x25fa, 0x2607, 0x261a, 0x2634,
- 0x263d, 0x267a, 0x2680, 0x23f9, 0x268b, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x268f, 0x2695, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x269d, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x26aa, 0x26b0, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x2440, 0x2444, 0x23f9, 0x23f9, 0x26c2, 0x23f9,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x23f9,
- 0x23f9, 0x23f9, 0x270f, 0x27dc, 0x27f0, 0x27f7, 0x285a, 0x28ab,
- 0x28b6, 0x28f5, 0x2904, 0x2913, 0x2916, 0x26c6, 0x293f, 0x2986,
- 0x23f9, 0x23f9, 0x23f9, 0x23f9, 0x2a9f, 0x2aad, 0x2aba, 0x2af4,
- 0x713c, 0x0078, 0x23db, 0x2021, 0x4000, 0x1078, 0x29f2, 0x127e,
- 0x2091, 0x8000, 0x0068, 0x23e8, 0x7818, 0xd084, 0x0040, 0x23eb,
- 0x127f, 0x0078, 0x23df, 0x781b, 0x0001, 0x7c22, 0x7926, 0x7a2a,
- 0x7b2e, 0x2091, 0x4080, 0x7007, 0x0001, 0x2091, 0x5000, 0x127f,
- 0x007c, 0x2021, 0x4001, 0x0078, 0x23dd, 0x2021, 0x4002, 0x0078,
- 0x23dd, 0x2021, 0x4003, 0x0078, 0x23dd, 0x2021, 0x4005, 0x0078,
- 0x23dd, 0x2021, 0x4006, 0x0078, 0x23dd, 0xa02e, 0x2520, 0x7b28,
- 0x7a2c, 0x7824, 0x7930, 0x0078, 0x2a01, 0x7823, 0x0004, 0x7824,
- 0x007a, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078,
- 0x2a05, 0x7924, 0x7828, 0x2114, 0x200a, 0x0078, 0x23db, 0x7924,
- 0x2114, 0x0078, 0x23db, 0x2099, 0x0009, 0x20a1, 0x0009, 0x20a9,
- 0x0007, 0x53a3, 0x0078, 0x23db, 0x7824, 0x2060, 0x0078, 0x244a,
- 0x2009, 0x0001, 0x2011, 0x000f, 0x2019, 0x0007, 0x0078, 0x23db,
- 0x7d38, 0x7c3c, 0x0078, 0x240f, 0x7d38, 0x7c3c, 0x0078, 0x241b,
- 0x2061, 0x1000, 0x610c, 0xa006, 0x2c14, 0xa200, 0x8c60, 0x8109,
- 0x00c0, 0x244c, 0x2010, 0xa005, 0x0040, 0x23db, 0x0078, 0x2401,
- 0x2061, 0x7051, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2409, 0x8019,
- 0x0040, 0x2409, 0x604a, 0x6142, 0x782c, 0x6052, 0x7828, 0x6056,
- 0xa006, 0x605a, 0x605e, 0x1078, 0x3a37, 0x0078, 0x23db, 0x2061,
- 0x7051, 0x7824, 0x7930, 0xa11a, 0x00c8, 0x2409, 0x8019, 0x0040,
- 0x2409, 0x604e, 0x6146, 0x782c, 0x6062, 0x7828, 0x6066, 0xa006,
- 0x606a, 0x606e, 0x1078, 0x380d, 0x0078, 0x23db, 0xa02e, 0x2520,
- 0x81ff, 0x00c0, 0x2405, 0x7924, 0x7b28, 0x7a2c, 0x20a9, 0x0005,
- 0x20a1, 0x7074, 0x41a1, 0x1078, 0x29b7, 0x0040, 0x2405, 0x2009,
- 0x0020, 0x1078, 0x2a01, 0x701b, 0x249e, 0x007c, 0x6834, 0x2008,
- 0xa084, 0x00ff, 0xa096, 0x0011, 0x0040, 0x24aa, 0xa096, 0x0019,
- 0x00c0, 0x2405, 0x810f, 0xa18c, 0x00ff, 0x0040, 0x2405, 0x710e,
- 0x700c, 0x8001, 0x0040, 0x24db, 0x700e, 0x1078, 0x29b7, 0x0040,
- 0x2405, 0x2009, 0x0020, 0x2061, 0x70bd, 0x6224, 0x6328, 0x642c,
- 0x6530, 0xa290, 0x0040, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9,
- 0x0000, 0x1078, 0x2a01, 0x701b, 0x24ce, 0x007c, 0x6834, 0xa084,
- 0x00ff, 0xa096, 0x0002, 0x0040, 0x24d9, 0xa096, 0x000a, 0x00c0,
- 0x2405, 0x0078, 0x24b0, 0x7010, 0x2068, 0x6838, 0xc0fd, 0x683a,
- 0x1078, 0x33f2, 0x00c0, 0x24e9, 0x7007, 0x0003, 0x701b, 0x24eb,
- 0x007c, 0x1078, 0x38d0, 0x127e, 0x2091, 0x8000, 0x20a9, 0x0005,
- 0x2099, 0x7074, 0x530a, 0x2100, 0xa210, 0xa399, 0x0000, 0xa4a1,
- 0x0000, 0xa5a9, 0x0000, 0xad80, 0x000d, 0x2009, 0x0020, 0x127f,
- 0x0078, 0x2a05, 0x6190, 0x7824, 0x6092, 0x0078, 0x23db, 0x2091,
- 0x8000, 0x7823, 0x4000, 0x7827, 0x4953, 0x782b, 0x5020, 0x782f,
- 0x2020, 0x2009, 0x017f, 0x2104, 0x7832, 0x3f00, 0x7836, 0x2061,
- 0x0100, 0x6200, 0x2061, 0x0200, 0x603c, 0x8007, 0xa205, 0x783a,
- 0x2009, 0x04fd, 0x2104, 0x783e, 0x781b, 0x0001, 0x2091, 0x5000,
- 0x2091, 0x4080, 0x2071, 0x0010, 0x20c1, 0x00f0, 0xa08a, 0x0003,
- 0x00c8, 0x0427, 0x0078, 0x0423, 0x81ff, 0x00c0, 0x2405, 0x7924,
- 0x810f, 0xa18c, 0x00ff, 0x1078, 0x34fa, 0x00c0, 0x2409, 0x7e38,
- 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, 0x2548, 0x0078, 0x2409,
- 0x7c28, 0x7d2c, 0x1078, 0x36ab, 0xd28c, 0x00c0, 0x2553, 0x1078,
- 0x363f, 0x0078, 0x2555, 0x1078, 0x3679, 0x00c0, 0x257f, 0x2061,
- 0x7600, 0x127e, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000, 0x0040,
- 0x256d, 0x6010, 0xa06d, 0x0040, 0x256d, 0x683c, 0xa406, 0x00c0,
- 0x256d, 0x6840, 0xa506, 0x0040, 0x2578, 0x127f, 0xace0, 0x0008,
- 0x2001, 0x7015, 0x2004, 0xac02, 0x00c8, 0x2405, 0x0078, 0x2559,
- 0x1078, 0x6139, 0x127f, 0x0040, 0x2405, 0x0078, 0x23db, 0xa00e,
- 0x2001, 0x0005, 0x1078, 0x38d0, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x64fd, 0x1078, 0x3840, 0x127f, 0x0078, 0x23db, 0x81ff, 0x00c0,
- 0x2405, 0x1078, 0x29cf, 0x0040, 0x2409, 0x1078, 0x3583, 0x0040,
- 0x2405, 0x1078, 0x36b8, 0x0040, 0x2405, 0x0078, 0x23db, 0x81ff,
- 0x00c0, 0x2405, 0x1078, 0x29e1, 0x0040, 0x2409, 0x1078, 0x371f,
- 0x0040, 0x2405, 0x2019, 0x0005, 0x1078, 0x36d9, 0x0040, 0x2405,
- 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2409, 0x8003, 0x800b, 0x810b,
- 0xa108, 0x1078, 0x42b7, 0x0078, 0x23db, 0x127e, 0x2091, 0x8000,
- 0x81ff, 0x00c0, 0x25ea, 0x2029, 0x007d, 0x644c, 0x2400, 0xa506,
- 0x0040, 0x25e4, 0x2508, 0x1078, 0x34fa, 0x00c0, 0x25e4, 0x1078,
- 0x371f, 0x0040, 0x2405, 0x2019, 0x0004, 0x1078, 0x36d9, 0x0040,
- 0x25ea, 0x7824, 0xa08a, 0x1000, 0x00c8, 0x25ed, 0x8003, 0x800b,
- 0x810b, 0xa108, 0x1078, 0x42b7, 0x8529, 0x00c8, 0x25c6, 0x127f,
- 0x0078, 0x23db, 0x127f, 0x0078, 0x2405, 0x127f, 0x0078, 0x2409,
- 0x1078, 0x29cf, 0x0040, 0x2409, 0x1078, 0x35f0, 0x1078, 0x36ab,
- 0x0078, 0x23db, 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29cf, 0x0040,
- 0x2409, 0x1078, 0x35df, 0x1078, 0x36ab, 0x0078, 0x23db, 0x81ff,
- 0x00c0, 0x2405, 0x1078, 0x29cf, 0x0040, 0x2409, 0x1078, 0x367c,
- 0x0040, 0x2405, 0x1078, 0x343b, 0x1078, 0x3638, 0x1078, 0x36ab,
- 0x0078, 0x23db, 0x1078, 0x29cf, 0x0040, 0x2409, 0x1078, 0x3583,
- 0x0040, 0x2405, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078, 0x36e4,
- 0x0c7f, 0x1078, 0x469f, 0x1078, 0x45e2, 0x2c08, 0x1078, 0x6d09,
- 0x1078, 0x36ab, 0x0078, 0x23db, 0x1078, 0x29cf, 0x0040, 0x2409,
- 0x1078, 0x36ab, 0x2208, 0x0078, 0x23db, 0x157e, 0x0d7e, 0x0e7e,
- 0x2069, 0x70ff, 0x6810, 0x6914, 0xa10a, 0x00c8, 0x2649, 0x2009,
- 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x007d,
- 0x2069, 0x7120, 0x2d04, 0xa075, 0x0040, 0x265e, 0x704c, 0x1078,
- 0x2668, 0xa210, 0x7080, 0x1078, 0x2668, 0xa318, 0x8d68, 0x00f0,
- 0x2652, 0x2300, 0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078, 0x23db,
- 0x0f7e, 0x017e, 0xa07d, 0x0040, 0x2677, 0x2001, 0x0000, 0x8000,
- 0x2f0c, 0x81ff, 0x0040, 0x2677, 0x2178, 0x0078, 0x266f, 0x017f,
- 0x0f7f, 0x007c, 0x2069, 0x70ff, 0x6910, 0x6294, 0x0078, 0x23db,
- 0x81ff, 0x00c0, 0x2405, 0x614c, 0xa190, 0x2207, 0x2214, 0xa294,
- 0x00ff, 0x0078, 0x23db, 0x613c, 0x6240, 0x0078, 0x23db, 0x1078,
- 0x29e1, 0x0040, 0x2409, 0x0078, 0x23db, 0x1078, 0x29e1, 0x0040,
- 0x2409, 0x6244, 0x6338, 0x0078, 0x23db, 0x613c, 0x6240, 0x7824,
- 0x603e, 0x7b28, 0x6342, 0x2069, 0x7051, 0x831f, 0xa305, 0x6816,
- 0x0078, 0x23db, 0x1078, 0x29e1, 0x0040, 0x2409, 0x0078, 0x23db,
- 0x1078, 0x29e1, 0x0040, 0x2409, 0x7828, 0xa00d, 0x0040, 0x2409,
- 0x782c, 0xa005, 0x0040, 0x2409, 0x6244, 0x6146, 0x6338, 0x603a,
- 0x0078, 0x23db, 0x7d38, 0x7c3c, 0x0078, 0x2488, 0x7824, 0xa09c,
- 0x00ff, 0xa39a, 0x0003, 0x00c8, 0x2405, 0x624c, 0xa084, 0xff00,
- 0x8007, 0xa206, 0x00c0, 0x26de, 0x2001, 0x7040, 0x2009, 0x000c,
- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2a05, 0x81ff, 0x00c0,
- 0x2405, 0x1078, 0x29e1, 0x0040, 0x2409, 0x6004, 0xa084, 0x00ff,
- 0xa086, 0x0006, 0x00c0, 0x2405, 0x0c7e, 0x1078, 0x29b7, 0x0c7f,
- 0x0040, 0x2405, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078,
- 0x6413, 0x0040, 0x2405, 0x7007, 0x0003, 0x701b, 0x2700, 0x007c,
- 0x6830, 0xa086, 0x0100, 0x0040, 0x2405, 0xad80, 0x000e, 0x2009,
- 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2a05, 0x1078,
- 0x29b7, 0x0040, 0x2405, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c,
- 0x7d38, 0x1078, 0x2a01, 0x701b, 0x271e, 0x007c, 0xade8, 0x000d,
- 0x6800, 0xa005, 0x0040, 0x2409, 0x6804, 0xd0ac, 0x0040, 0x272b,
- 0xd0a4, 0x0040, 0x2409, 0xd094, 0x0040, 0x2736, 0x0c7e, 0x2061,
- 0x0100, 0x6104, 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040,
- 0x2741, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106,
- 0x0c7f, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048, 0x2756,
- 0xd084, 0x0040, 0x2756, 0x6a28, 0xa28a, 0x007e, 0x00c8, 0x2409,
- 0xa288, 0x2207, 0x210c, 0xa18c, 0x00ff, 0x6152, 0xd0dc, 0x0040,
- 0x275f, 0x6828, 0xa08a, 0x007e, 0x00c8, 0x2409, 0x604e, 0x6808,
- 0xa08a, 0x0100, 0x0048, 0x2409, 0xa08a, 0x0841, 0x00c8, 0x2409,
- 0xa084, 0x0007, 0x00c0, 0x2409, 0x680c, 0xa005, 0x0040, 0x2409,
- 0x6810, 0xa005, 0x0040, 0x2409, 0x6848, 0x6940, 0xa10a, 0x00c8,
- 0x2409, 0x8001, 0x0040, 0x2409, 0x684c, 0x6944, 0xa10a, 0x00c8,
- 0x2409, 0x8001, 0x0040, 0x2409, 0x20a9, 0x001c, 0x2d98, 0x2069,
- 0x7051, 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e, 0x8007,
- 0xa084, 0x00ff, 0x6042, 0x1078, 0x3a37, 0x1078, 0x380d, 0x6000,
- 0xa086, 0x0000, 0x00c0, 0x27da, 0x6808, 0x602a, 0x1078, 0x1d4d,
- 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f,
- 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x27ba,
- 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f,
- 0x0078, 0x27bc, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312,
- 0x1078, 0x4343, 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040, 0x602f,
- 0x0000, 0x0c7f, 0x60ac, 0xa005, 0x0040, 0x27d6, 0x6003, 0x0001,
- 0x2091, 0x301d, 0x1078, 0x3247, 0x0078, 0x27da, 0x6003, 0x0004,
- 0x2091, 0x301d, 0x0078, 0x23db, 0x6000, 0xa086, 0x0000, 0x0040,
- 0x2405, 0x2069, 0x7051, 0x7830, 0x6842, 0x7834, 0x6846, 0x2d00,
- 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2a05,
- 0x81ff, 0x00c0, 0x2405, 0x1078, 0x3247, 0x0078, 0x23db, 0x81ff,
- 0x00c0, 0x2405, 0x6174, 0x81ff, 0x0040, 0x2811, 0x703f, 0x0000,
- 0x2001, 0x75c0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x2a05, 0x701b, 0x23d8, 0x127f,
- 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0x75c0, 0x20a9, 0x0040,
- 0x20a1, 0x75c0, 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588, 0x2207,
- 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100,
- 0xa506, 0x0040, 0x2843, 0x1078, 0x34fa, 0x00c0, 0x2843, 0x6014,
- 0x821c, 0x0048, 0x283b, 0xa398, 0x75c0, 0xa085, 0xff00, 0x8007,
- 0x201a, 0x0078, 0x2842, 0xa398, 0x75c0, 0x2324, 0xa4a4, 0xff00,
- 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x007f, 0x00c8, 0x284a,
- 0x0078, 0x2827, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f,
- 0x20a9, 0x0040, 0x20a1, 0x75c0, 0x2099, 0x75c0, 0x1078, 0x3290,
- 0x0078, 0x2800, 0x1078, 0x29e1, 0x0040, 0x2409, 0x0c7e, 0x1078,
- 0x29b7, 0x0c7f, 0x0040, 0x2405, 0x2001, 0x7052, 0x2004, 0xd0b4,
- 0x0040, 0x2887, 0x6000, 0xd08c, 0x00c0, 0x2887, 0x6004, 0xa084,
- 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2887, 0x6837, 0x0000, 0x6838,
- 0xc0fd, 0x683a, 0x1078, 0x642f, 0x0040, 0x2405, 0x7007, 0x0003,
- 0x701b, 0x2883, 0x007c, 0x1078, 0x29e1, 0x0040, 0x2409, 0x20a9,
- 0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0004,
- 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078, 0x3290,
- 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0,
- 0x1078, 0x3290, 0x2d00, 0x2009, 0x002b, 0x7a2c, 0x7b28, 0x7c3c,
- 0x7d38, 0x0078, 0x2a05, 0x81ff, 0x00c0, 0x2405, 0x1078, 0x29cf,
- 0x0040, 0x2409, 0x1078, 0x36c3, 0x0078, 0x23db, 0x81ff, 0x00c0,
- 0x2405, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2409, 0x1078, 0x29e1,
- 0x0040, 0x2409, 0x1078, 0x371f, 0x0040, 0x2405, 0x2019, 0x0004,
- 0x1078, 0x36d9, 0x7924, 0x810f, 0x7a28, 0x1078, 0x28d1, 0x0078,
- 0x23db, 0xa186, 0x00ff, 0x0040, 0x28d9, 0x1078, 0x28e9, 0x0078,
- 0x28e8, 0x2029, 0x007d, 0x2061, 0x7000, 0x644c, 0x2400, 0xa506,
- 0x0040, 0x28e5, 0x2508, 0x1078, 0x28e9, 0x8529, 0x00c8, 0x28de,
- 0x007c, 0x1078, 0x34fa, 0x00c0, 0x28f4, 0x2200, 0x8003, 0x800b,
- 0x810b, 0xa108, 0x1078, 0x42b7, 0x007c, 0x81ff, 0x00c0, 0x2405,
- 0x1078, 0x29cf, 0x0040, 0x2409, 0x1078, 0x3583, 0x0040, 0x2405,
- 0x1078, 0x36ce, 0x0078, 0x23db, 0x81ff, 0x00c0, 0x2405, 0x1078,
- 0x29cf, 0x0040, 0x2409, 0x1078, 0x3583, 0x0040, 0x2405, 0x1078,
- 0x36b8, 0x0078, 0x23db, 0x6100, 0x0078, 0x23db, 0x1078, 0x29e1,
- 0x0040, 0x2409, 0x6004, 0xa086, 0x0707, 0x0040, 0x2409, 0x2001,
- 0x7000, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2405, 0x0d7e, 0xace8,
- 0x000a, 0x7924, 0xd184, 0x0040, 0x292f, 0xace8, 0x0006, 0x680c,
+ 0x697c, 0x6912, 0x6980, 0x6916, 0x007c, 0x82ff, 0x0040, 0x1518,
+ 0xa280, 0x0004, 0x0d7e, 0x206c, 0x684c, 0xd0dc, 0x00c0, 0x1514,
+ 0x1078, 0x1497, 0x10c0, 0x126a, 0x6808, 0x8000, 0x680a, 0x0d7f,
+ 0x127e, 0x047e, 0x037e, 0x027e, 0x2091, 0x2100, 0x027f, 0x037f,
+ 0x047f, 0x7000, 0xa005, 0x00c0, 0x152c, 0x7206, 0x2001, 0x1540,
+ 0x007e, 0x2260, 0x0078, 0x1652, 0x710c, 0x220a, 0x8108, 0x230a,
+ 0x8108, 0x240a, 0x8108, 0xa182, 0x6e05, 0x0048, 0x1539, 0x2009,
+ 0x6dea, 0x710e, 0x7000, 0xa005, 0x00c0, 0x1540, 0x1078, 0x163b,
+ 0x127f, 0x007c, 0x127e, 0x027e, 0x037e, 0x0c7e, 0x007e, 0x2091,
+ 0x2100, 0x007f, 0x047f, 0x037f, 0x027f, 0x0d7e, 0x0c7e, 0x2460,
+ 0x6110, 0x2168, 0x6a62, 0x6b5e, 0xa005, 0x0040, 0x1594, 0x6808,
+ 0xa005, 0x0040, 0x15f4, 0x7000, 0xa005, 0x00c0, 0x1561, 0x0078,
+ 0x158e, 0x700c, 0x7110, 0xa106, 0x00c0, 0x15f8, 0x7004, 0xa406,
+ 0x00c0, 0x158e, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040, 0x1577,
+ 0x047e, 0x1078, 0x170a, 0x047f, 0x2460, 0x0078, 0x1557, 0x2001,
+ 0x0207, 0x2004, 0xd09c, 0x00c0, 0x156a, 0x7804, 0xa084, 0x6000,
+ 0x0040, 0x1588, 0xa086, 0x6000, 0x0040, 0x1588, 0x0078, 0x156a,
+ 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x2009, 0x0048,
+ 0x1078, 0x544c, 0x0078, 0x15f8, 0x6808, 0xa005, 0x0040, 0x15f4,
+ 0x7000, 0xa005, 0x00c0, 0x159e, 0x0078, 0x15f4, 0x700c, 0x7110,
+ 0xa106, 0x00c0, 0x15a7, 0x7004, 0xa406, 0x00c0, 0x15f4, 0x2001,
+ 0x0005, 0x2004, 0xd08c, 0x0040, 0x15b4, 0x047e, 0x1078, 0x170a,
+ 0x047f, 0x2460, 0x0078, 0x1594, 0x2001, 0x0207, 0x2004, 0xd09c,
+ 0x00c0, 0x15a7, 0x7804, 0xa084, 0x6000, 0x0040, 0x15c5, 0xa086,
+ 0x6000, 0x0040, 0x15c5, 0x0078, 0x15a7, 0x7007, 0x0000, 0xa016,
+ 0x2218, 0x7000, 0xa08e, 0x0001, 0x0040, 0x15e6, 0xa08e, 0x0002,
+ 0x00c0, 0x15f4, 0x0c7e, 0x0e7e, 0x6818, 0x2060, 0x1078, 0x1b57,
+ 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0, 0x15e2, 0x7308, 0x720c,
+ 0x0078, 0x15e4, 0x7310, 0x7214, 0x0e7f, 0x0c7f, 0x7820, 0xa318,
+ 0x7824, 0xa211, 0x6810, 0xa300, 0x6812, 0x6814, 0xa201, 0x6816,
+ 0x7803, 0x0004, 0x7003, 0x0000, 0x2009, 0x0048, 0x1078, 0x544c,
+ 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x6de4,
+ 0x7000, 0xa086, 0x0000, 0x0040, 0x1638, 0x7004, 0xac06, 0x00c0,
+ 0x1629, 0x2079, 0x0030, 0x7804, 0xd0fc, 0x00c0, 0x1625, 0x2001,
+ 0x0207, 0x2004, 0xd09c, 0x00c0, 0x160b, 0x7803, 0x0004, 0x7804,
+ 0xd0ac, 0x00c0, 0x1617, 0x7803, 0x0002, 0x7803, 0x0009, 0x7003,
+ 0x0003, 0x7007, 0x0000, 0x0078, 0x1629, 0x1078, 0x170a, 0x0078,
+ 0x1600, 0x157e, 0x20a9, 0x0009, 0x2009, 0x6dea, 0x2104, 0xac06,
+ 0x00c0, 0x1633, 0x200a, 0xa188, 0x0003, 0x00f0, 0x162e, 0x157f,
+ 0x0e7f, 0x0f7f, 0x007c, 0x700c, 0x7110, 0xa106, 0x00c0, 0x1643,
+ 0x7003, 0x0000, 0x007c, 0x2104, 0x7006, 0x2060, 0x8108, 0x211c,
+ 0x8108, 0x2124, 0x8108, 0xa182, 0x6e05, 0x0048, 0x1651, 0x2009,
+ 0x6dea, 0x7112, 0x8cff, 0x00c0, 0x1671, 0x7908, 0xd1ec, 0x00c0,
+ 0x1665, 0x1078, 0x18ac, 0x0040, 0x1665, 0x7803, 0x0009, 0x7904,
+ 0xd1fc, 0x0040, 0x165f, 0x7803, 0x0006, 0x7007, 0x0000, 0x1078,
+ 0x18ac, 0x0040, 0x1698, 0x7803, 0x0019, 0x7003, 0x0003, 0x0078,
+ 0x1698, 0x6010, 0x2068, 0x2d58, 0x6828, 0xa406, 0x00c0, 0x167c,
+ 0x682c, 0xa306, 0x0040, 0x1680, 0x1078, 0x1ba2, 0x00c0, 0x1655,
+ 0x684c, 0xd0f4, 0x00c0, 0x1655, 0x6824, 0x2050, 0x6818, 0x2060,
+ 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x2009, 0x0011, 0x1078,
+ 0x1699, 0x0040, 0x1697, 0x2009, 0x0001, 0x1078, 0x1699, 0x2d58,
+ 0x007c, 0x8aff, 0x0040, 0x1705, 0xa03e, 0x2730, 0x6850, 0xd0fc,
+ 0x00c0, 0x16b8, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x16a8,
+ 0x16e7, 0x16c8, 0x16c8, 0x16e7, 0x16e7, 0x16df, 0x16e7, 0x16c8,
+ 0x16e7, 0x16ce, 0x16ce, 0x16e7, 0x16e7, 0x16e7, 0x16d6, 0x16ce,
+ 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0x0d7e, 0xd99c,
+ 0x0040, 0x16ea, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x16ea,
+ 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x16ea, 0x6b10, 0x6a14,
+ 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x16ea, 0x0d7f, 0x0d7e,
+ 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x16e7, 0x0d7f,
+ 0x1078, 0x1b3e, 0x00c0, 0x1699, 0xa00e, 0x0078, 0x1705, 0x0d7f,
+ 0x1078, 0x126a, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e,
+ 0x7902, 0x7000, 0x8000, 0x7002, 0x0d7f, 0x6828, 0xa300, 0x682a,
+ 0x682c, 0xa201, 0x682e, 0x2300, 0x6b10, 0xa302, 0x6812, 0x2200,
+ 0x6a14, 0xa203, 0x6816, 0x1078, 0x1b3e, 0x007c, 0x1078, 0x126a,
+ 0x1078, 0x126a, 0x127e, 0x2091, 0x2100, 0x007e, 0x017e, 0x2b68,
+ 0x6818, 0x2060, 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0,
+ 0x1708, 0xa184, 0x0003, 0xa086, 0x0003, 0x0040, 0x1708, 0x7000,
+ 0x0079, 0x1722, 0x172a, 0x172c, 0x17f3, 0x184d, 0x1864, 0x172a,
+ 0x172a, 0x172a, 0x1078, 0x126a, 0x8001, 0x7002, 0xa184, 0x0880,
+ 0x00c0, 0x1741, 0x8aff, 0x0040, 0x1793, 0x2009, 0x0001, 0x1078,
+ 0x1699, 0x0040, 0x1876, 0x2009, 0x0001, 0x1078, 0x1699, 0x0078,
+ 0x1876, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040, 0x178c,
+ 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x7820, 0x686e, 0xa31a, 0x7824,
+ 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x7820, 0x6910, 0xa100, 0x6812,
+ 0x7824, 0x6914, 0xa101, 0x6816, 0x037f, 0x027f, 0x7830, 0x681e,
+ 0x7834, 0x6822, 0x1078, 0x1b57, 0x2a00, 0x6826, 0x2c00, 0x681a,
+ 0x2800, 0x6832, 0x7003, 0x0000, 0x6850, 0xc0fd, 0x6852, 0x6808,
+ 0x8001, 0x680a, 0x00c0, 0x177e, 0x684c, 0xd0e4, 0x0040, 0x177e,
+ 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x544c, 0x7808, 0xd0ec,
+ 0x00c0, 0x1788, 0x7803, 0x0009, 0x7003, 0x0004, 0x0078, 0x1876,
+ 0x1078, 0x163b, 0x0078, 0x1876, 0x057e, 0x7d0c, 0x1078, 0x6b5b,
+ 0x057f, 0x0078, 0x17ab, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005,
+ 0x00c0, 0x17ab, 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0,
+ 0x17a7, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x544c, 0x1078,
+ 0x163b, 0x0078, 0x1876, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914,
+ 0xa183, 0x0000, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa188,
+ 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004,
+ 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078, 0x187a, 0x7803, 0x0004,
+ 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, 0x0040, 0x17cc,
+ 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x0070, 0x7004, 0x7007,
+ 0x0000, 0x2060, 0x2009, 0x0048, 0x1078, 0x544c, 0x1078, 0x18ac,
+ 0x0040, 0x17a7, 0x7908, 0xd1ec, 0x00c0, 0x17ea, 0x2009, 0x0009,
+ 0x0078, 0x17ec, 0x2009, 0x0019, 0x7902, 0x7803, 0x0009, 0x7003,
+ 0x0003, 0x0078, 0x1876, 0x8001, 0x7002, 0xd194, 0x0040, 0x1805,
+ 0x7804, 0xd0fc, 0x00c0, 0x1712, 0x8aff, 0x0040, 0x1876, 0x2009,
+ 0x0001, 0x1078, 0x1699, 0x0078, 0x1876, 0xa184, 0x0880, 0x00c0,
+ 0x1812, 0x8aff, 0x0040, 0x1876, 0x2009, 0x0001, 0x1078, 0x1699,
+ 0x0078, 0x1876, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040,
+ 0x1846, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1b57, 0x0d7e,
+ 0x0f7e, 0x2d78, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1836,
+ 0x6808, 0x2008, 0xa31a, 0x680c, 0xa213, 0x7810, 0xa100, 0x7812,
+ 0x690c, 0x7814, 0xa101, 0x7816, 0x0078, 0x1842, 0x6810, 0x2008,
+ 0xa31a, 0x6814, 0xa213, 0x7810, 0xa100, 0x7812, 0x6914, 0x7814,
+ 0xa101, 0x7816, 0x0f7f, 0x0d7f, 0x0078, 0x174c, 0x057e, 0x7d0c,
+ 0x1078, 0x6b5b, 0x057f, 0x0078, 0x17ab, 0x7803, 0x0004, 0x7003,
+ 0x0000, 0x7004, 0xa00d, 0x0040, 0x1860, 0x6808, 0x8001, 0x680a,
+ 0x00c0, 0x1860, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x544c,
+ 0x1078, 0x163b, 0x0078, 0x1876, 0x7803, 0x0004, 0x7003, 0x0000,
+ 0x7004, 0x2060, 0x6010, 0xa005, 0x0040, 0x1860, 0x2068, 0x6808,
+ 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078, 0x1652, 0x017f, 0x007f,
+ 0x127f, 0x007c, 0x3c00, 0x007e, 0x0e7e, 0x2071, 0x0200, 0x7808,
+ 0xa084, 0xf000, 0xa10d, 0x2001, 0x0138, 0x2014, 0x2003, 0x0000,
+ 0x2001, 0x0141, 0x201c, 0xd3dc, 0x00c0, 0x1894, 0x2001, 0x0111,
+ 0x201c, 0x83ff, 0x0040, 0x1888, 0x20e1, 0x7000, 0x7324, 0x7420,
+ 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e, 0x702f,
+ 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138, 0x2202,
+ 0x0e7f, 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e, 0x7908, 0xa18c,
+ 0x0fff, 0xa182, 0x0009, 0x0048, 0x18b9, 0xa085, 0x0001, 0x0078,
+ 0x18cb, 0x2001, 0x020a, 0x81ff, 0x0040, 0x18c4, 0x20e1, 0x6000,
+ 0x200c, 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000, 0x200c, 0x200c,
+ 0x7003, 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c, 0x0e7e, 0x2071,
+ 0x6e05, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e, 0xa280, 0x0004,
+ 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1950, 0x6934, 0xa184, 0x0007,
+ 0x0079, 0x18e2, 0x18ea, 0x193b, 0x18ea, 0x18ea, 0x18ea, 0x1920,
+ 0x18fd, 0x18ec, 0x1078, 0x126a, 0x684c, 0xd0b4, 0x0040, 0x1a52,
+ 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c, 0x680a,
+ 0x6880, 0x680e, 0x6958, 0x0078, 0x1943, 0x6834, 0xa084, 0x00ff,
+ 0xa086, 0x001e, 0x00c0, 0x18ea, 0x684c, 0xd0b4, 0x0040, 0x1a52,
+ 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c, 0x680a,
+ 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084,
+ 0x000f, 0xa080, 0x1b82, 0x2004, 0x6832, 0x6958, 0x0078, 0x194c,
+ 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x1950, 0x684c, 0xd0b4,
+ 0x0040, 0x1a52, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084,
+ 0x000f, 0xa080, 0x1b82, 0x2004, 0x6832, 0x6958, 0xa006, 0x682e,
+ 0x682a, 0x0078, 0x194c, 0x684c, 0xd0b4, 0x0040, 0x1706, 0x6958,
+ 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834, 0xa084, 0x000f,
+ 0xa080, 0x1b82, 0x2004, 0x6832, 0x6926, 0x684c, 0xc0dd, 0x684e,
+ 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804, 0xd0fc, 0x10c0,
+ 0x1a56, 0x0e7e, 0x0d7e, 0x2071, 0x6e05, 0x7000, 0xa005, 0x00c0,
+ 0x19cc, 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c, 0x7004, 0x2068,
+ 0x6818, 0x0d7e, 0x2068, 0x686c, 0x7812, 0x6890, 0x0f7e, 0x20e1,
+ 0x9040, 0x2079, 0x0200, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6,
+ 0x0f7f, 0x0d7f, 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830,
+ 0x2040, 0x6034, 0xa0cc, 0x000f, 0x6908, 0xa184, 0x0007, 0x0040,
+ 0x198e, 0x017e, 0x2009, 0x0008, 0xa102, 0x017f, 0xa108, 0x791a,
+ 0x7116, 0x701e, 0x680c, 0xa081, 0x0000, 0x781e, 0x701a, 0xa006,
+ 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106, 0x00c0, 0x19a5,
+ 0x6928, 0x6810, 0xa106, 0x0040, 0x19b2, 0x037e, 0x047e, 0x6b14,
+ 0x6c10, 0x1078, 0x1ba2, 0x047f, 0x037f, 0x0040, 0x19b2, 0x0c7f,
+ 0x0078, 0x19cc, 0x8aff, 0x00c0, 0x19ba, 0x0c7f, 0xa085, 0x0001,
+ 0x0078, 0x19cc, 0x127e, 0x2091, 0x8000, 0x2079, 0x0020, 0x2009,
+ 0x0001, 0x1078, 0x19d0, 0x0040, 0x19c9, 0x2009, 0x0001, 0x1078,
+ 0x19d0, 0x127f, 0x0c7f, 0xa006, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c,
+ 0x077e, 0x067e, 0x057e, 0x047e, 0x037e, 0x027e, 0x8aff, 0x0040,
+ 0x1a4b, 0x700c, 0x7214, 0xa202, 0x7010, 0x7218, 0xa203, 0x0048,
+ 0x1a4a, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x19fd, 0x0d7e,
+ 0x2804, 0xac68, 0x2900, 0x0079, 0x19ed, 0x1a2c, 0x1a0d, 0x1a0d,
+ 0x1a2c, 0x1a2c, 0x1a24, 0x1a2c, 0x1a0d, 0x1a2c, 0x1a13, 0x1a13,
+ 0x1a2c, 0x1a2c, 0x1a2c, 0x1a1b, 0x1a13, 0xc0fc, 0x6852, 0x6b6c,
+ 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1a30, 0x0d7e, 0x2804,
+ 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1a2f, 0x6b08, 0x6a0c, 0x6d00,
+ 0x6c04, 0x0078, 0x1a2f, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08,
+ 0x6e0c, 0x0078, 0x1a2f, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff,
+ 0xa086, 0x001e, 0x00c0, 0x1a2c, 0x0d7f, 0x1078, 0x1b3e, 0x00c0,
+ 0x19d6, 0xa00e, 0x0078, 0x1a4b, 0x0d7f, 0x1078, 0x126a, 0x0d7f,
+ 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000,
+ 0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e,
+ 0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078, 0x1b3e,
+ 0x0078, 0x1a4b, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f, 0x067f,
+ 0x077f, 0x007c, 0x1078, 0x126a, 0x1078, 0x126a, 0x127e, 0x2091,
+ 0x2200, 0x007e, 0x017e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x2079,
+ 0x0020, 0x2071, 0x6e05, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803,
+ 0x0002, 0xa184, 0x0700, 0x00c0, 0x1a54, 0x7000, 0x0079, 0x1a70,
+ 0x1b17, 0x1a74, 0x1ae4, 0x1b15, 0x8001, 0x7002, 0xd19c, 0x00c0,
+ 0x1a88, 0x8aff, 0x0040, 0x1aa7, 0x2009, 0x0001, 0x1078, 0x19d0,
+ 0x0040, 0x1b17, 0x2009, 0x0001, 0x1078, 0x19d0, 0x0078, 0x1b17,
+ 0x7803, 0x0004, 0xd194, 0x0040, 0x1a98, 0x6850, 0xc0fc, 0x6852,
+ 0x8aff, 0x00c0, 0x1a9d, 0x684c, 0xc0f5, 0x684e, 0x0078, 0x1a9d,
+ 0x1078, 0x1b57, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826, 0x2c00,
+ 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0078, 0x1b17, 0x711c,
+ 0x81ff, 0x0040, 0x1abd, 0x7918, 0x7922, 0x7827, 0x0000, 0x7803,
+ 0x0001, 0x7000, 0x8000, 0x7002, 0x700c, 0xa100, 0x700e, 0x7010,
+ 0xa081, 0x0000, 0x7012, 0x0078, 0x1b17, 0x0f7e, 0x027e, 0x781c,
+ 0x007e, 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14, 0xa284, 0x0004,
+ 0xa085, 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0, 0x1acb, 0x79c8,
+ 0x007f, 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102, 0x78c6, 0xa284,
+ 0x0004, 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803, 0x0008,
+ 0x7003, 0x0000, 0x0078, 0x1b17, 0x8001, 0x7002, 0xd194, 0x0040,
+ 0x1af9, 0x7804, 0xd0fc, 0x00c0, 0x1a66, 0xd19c, 0x00c0, 0x1b13,
+ 0x8aff, 0x0040, 0x1b17, 0x2009, 0x0001, 0x1078, 0x19d0, 0x0078,
+ 0x1b17, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1b57, 0x0d7e,
+ 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1b0c, 0x6808, 0xa31a,
+ 0x680c, 0xa213, 0x0078, 0x1b10, 0x6810, 0xa31a, 0x6814, 0xa213,
+ 0x0d7f, 0x0078, 0x1a98, 0x0078, 0x1a98, 0x1078, 0x126a, 0x0c7f,
+ 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c, 0x0f7e,
+ 0x0e7e, 0x2071, 0x6e05, 0x7000, 0xa086, 0x0000, 0x0040, 0x1b3b,
+ 0x2079, 0x0020, 0x7804, 0xa084, 0x0003, 0x0040, 0x1b35, 0x7803,
+ 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1b31, 0x20e1, 0x9040, 0x7803,
+ 0x0002, 0x7003, 0x0000, 0x0e7f, 0x0f7f, 0x007c, 0x8840, 0x2804,
+ 0xa005, 0x00c0, 0x1b52, 0x6004, 0xa005, 0x0040, 0x1b54, 0x681a,
+ 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x1b82, 0x2044, 0x88ff,
+ 0x1040, 0x126a, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50,
+ 0x8841, 0x2804, 0xa005, 0x00c0, 0x1b71, 0x2c00, 0xad06, 0x0040,
+ 0x1b66, 0x6000, 0xa005, 0x00c0, 0x1b66, 0x2d00, 0x2060, 0x681a,
+ 0x6034, 0xa084, 0x000f, 0xa080, 0x1b92, 0x2044, 0x88ff, 0x1040,
+ 0x126a, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d, 0x0021,
+ 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021, 0x0027,
+ 0x0000, 0x0000, 0x0000, 0x1b77, 0x1b73, 0x0000, 0x0000, 0x1b81,
+ 0x0000, 0x1b77, 0x0000, 0x1b7e, 0x1b7b, 0x0000, 0x0000, 0x0000,
+ 0x1b81, 0x1b7e, 0x0000, 0x1b79, 0x1b79, 0x0000, 0x0000, 0x1b81,
+ 0x0000, 0x1b79, 0x0000, 0x1b7f, 0x1b7f, 0x0000, 0x0000, 0x0000,
+ 0x1b81, 0x1b7f, 0x0a7e, 0x097e, 0x087e, 0x6858, 0xa055, 0x0040,
+ 0x1c3f, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x1b82, 0xa986,
+ 0x0007, 0x0040, 0x1bbb, 0xa986, 0x000e, 0x0040, 0x1bbb, 0xa986,
+ 0x000f, 0x00c0, 0x1bbf, 0x605c, 0xa422, 0x6060, 0xa31a, 0x2804,
+ 0xa045, 0x00c0, 0x1bcd, 0x0050, 0x1bc7, 0x0078, 0x1c3f, 0x6004,
+ 0xa065, 0x0040, 0x1c3f, 0x0078, 0x1baa, 0x2804, 0xa005, 0x0040,
+ 0x1beb, 0xac68, 0xd99c, 0x00c0, 0x1bdb, 0x6808, 0xa422, 0x680c,
+ 0xa31b, 0x0078, 0x1bdf, 0x6810, 0xa422, 0x6814, 0xa31b, 0x0048,
+ 0x1c0a, 0x2300, 0xa405, 0x0040, 0x1bf1, 0x8a51, 0x0040, 0x1c3f,
+ 0x8840, 0x0078, 0x1bcd, 0x6004, 0xa065, 0x0040, 0x1c3f, 0x0078,
+ 0x1baa, 0x8a51, 0x0040, 0x1c3f, 0x8840, 0x2804, 0xa005, 0x00c0,
+ 0x1c04, 0x6004, 0xa065, 0x0040, 0x1c3f, 0x6034, 0xa0cc, 0x000f,
+ 0xa9c0, 0x1b82, 0x2804, 0x2040, 0x2b68, 0x6850, 0xc0fc, 0x6852,
+ 0x0078, 0x1c37, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x0d7e,
+ 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0, 0x1c25, 0x6908,
+ 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048, 0x126a, 0x6800,
+ 0xa420, 0x6804, 0xa319, 0x0078, 0x1c31, 0x6910, 0x2400, 0xa122,
+ 0x6914, 0x2300, 0xa11b, 0x1048, 0x126a, 0x6800, 0xa420, 0x6804,
+ 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd, 0x6852, 0x2c00,
+ 0x681a, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078, 0x1c44, 0x087f,
+ 0x097f, 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0005, 0x2004,
+ 0xa084, 0x0007, 0x0079, 0x1c4c, 0x1c54, 0x1c55, 0x1c58, 0x1c5b,
+ 0x1c60, 0x1c63, 0x1c68, 0x1c6d, 0x007c, 0x1078, 0x1a56, 0x007c,
+ 0x1078, 0x170a, 0x007c, 0x1078, 0x170a, 0x1078, 0x1a56, 0x007c,
+ 0x1078, 0x13f1, 0x007c, 0x1078, 0x1a56, 0x1078, 0x13f1, 0x007c,
+ 0x1078, 0x170a, 0x1078, 0x13f1, 0x007c, 0x1078, 0x170a, 0x1078,
+ 0x1a56, 0x1078, 0x13f1, 0x007c, 0x127e, 0x2091, 0x2300, 0x2079,
+ 0x0200, 0x2071, 0x7080, 0x2069, 0x6c00, 0x2009, 0x0004, 0x7912,
+ 0x7916, 0x1078, 0x1f3c, 0x781b, 0x0002, 0x20e1, 0x8700, 0x127f,
+ 0x007c, 0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007, 0x0079,
+ 0x1c91, 0x1cb5, 0x1c99, 0x1c9d, 0x1ca1, 0x1ca7, 0x1cab, 0x1caf,
+ 0x1cb3, 0x1078, 0x3cc5, 0x0078, 0x1cb5, 0x1078, 0x3cf9, 0x0078,
+ 0x1cb5, 0x1078, 0x3cc5, 0x1078, 0x3cf9, 0x0078, 0x1cb5, 0x1078,
+ 0x1cb7, 0x0078, 0x1cb5, 0x1078, 0x1cb7, 0x0078, 0x1cb5, 0x1078,
+ 0x1cb7, 0x0078, 0x1cb5, 0x1078, 0x1cb7, 0x127f, 0x007c, 0x007e,
+ 0x017e, 0x027e, 0x7930, 0xa184, 0x0003, 0x0040, 0x1cc1, 0x1078,
+ 0x126a, 0xa184, 0x0030, 0x0040, 0x1cd2, 0x6a00, 0xa286, 0x0003,
+ 0x00c0, 0x1ccc, 0x1078, 0x126a, 0x1078, 0x30c9, 0x20e1, 0x9010,
+ 0x0078, 0x1cde, 0xa184, 0x00c0, 0x0040, 0x1cd8, 0x1078, 0x126a,
+ 0xa184, 0x0300, 0x0040, 0x1cde, 0x20e1, 0x9020, 0x7932, 0x027f,
+ 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e, 0x0f7e, 0x2071, 0x6c00,
+ 0x7128, 0x2001, 0x6da3, 0x2102, 0x2001, 0x6dab, 0x2102, 0xa182,
+ 0x0211, 0x00c8, 0x1cf7, 0x2009, 0x0008, 0x0078, 0x1d21, 0xa182,
+ 0x0259, 0x00c8, 0x1cff, 0x2009, 0x0007, 0x0078, 0x1d21, 0xa182,
+ 0x02c1, 0x00c8, 0x1d07, 0x2009, 0x0006, 0x0078, 0x1d21, 0xa182,
+ 0x0349, 0x00c8, 0x1d0f, 0x2009, 0x0005, 0x0078, 0x1d21, 0xa182,
+ 0x0421, 0x00c8, 0x1d17, 0x2009, 0x0004, 0x0078, 0x1d21, 0xa182,
+ 0x0581, 0x00c8, 0x1d1f, 0x2009, 0x0003, 0x0078, 0x1d21, 0x2009,
+ 0x0002, 0x2079, 0x0200, 0x7912, 0x7916, 0x1078, 0x1f3c, 0x0f7f,
+ 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091, 0x2200, 0x2061, 0x0100,
+ 0x2071, 0x6c00, 0x6024, 0x6026, 0x6033, 0x00ef, 0x60e7, 0x0000,
+ 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000,
+ 0x602f, 0x0080, 0x602f, 0x0000, 0x6007, 0x00af, 0x600f, 0x00ff,
+ 0x602b, 0x002f, 0x127f, 0x007c, 0x2001, 0x6c2b, 0x2003, 0x0000,
+ 0x2001, 0x6c2a, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200,
+ 0x007e, 0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0, 0x1d64,
+ 0xa184, 0x0007, 0x0079, 0x1d6a, 0xa195, 0x0004, 0xa284, 0x0007,
+ 0x0079, 0x1d6a, 0x1d96, 0x1d72, 0x1d76, 0x1d7a, 0x1d80, 0x1d84,
+ 0x1d8a, 0x1d90, 0x1078, 0x419e, 0x0078, 0x1d96, 0x1078, 0x427a,
+ 0x0078, 0x1d96, 0x1078, 0x427a, 0x1078, 0x419e, 0x0078, 0x1d96,
+ 0x1078, 0x1d9b, 0x0078, 0x1d96, 0x1078, 0x419e, 0x1078, 0x1d9b,
+ 0x0078, 0x1d96, 0x1078, 0x427a, 0x1078, 0x1d9b, 0x0078, 0x1d96,
+ 0x1078, 0x427a, 0x1078, 0x419e, 0x1078, 0x1d9b, 0x027f, 0x017f,
+ 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040, 0x1e48, 0x017e, 0x047e,
+ 0x0c7e, 0x644c, 0x74b2, 0xa48c, 0xff00, 0xa196, 0xff00, 0x0040,
+ 0x1dca, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040, 0x1dca,
+ 0x7130, 0xd18c, 0x00c0, 0x1dca, 0x2011, 0x6c52, 0x2214, 0xd2ec,
+ 0x0040, 0x1dbe, 0xc18d, 0x7132, 0x0078, 0x1dca, 0x6240, 0xa294,
+ 0x0010, 0x0040, 0x1e05, 0x6248, 0xa294, 0xff00, 0xa296, 0xff00,
+ 0x00c0, 0x1e05, 0x2011, 0x8013, 0x1078, 0x2926, 0x7130, 0xc185,
+ 0x7132, 0x2011, 0x6c52, 0x220c, 0xd1a4, 0x0040, 0x1ded, 0x017e,
+ 0x2009, 0x0001, 0x2011, 0x0100, 0x1078, 0x416c, 0x2019, 0x000e,
+ 0x1078, 0x6aa2, 0xa484, 0x00ff, 0x1078, 0x1f61, 0x8127, 0xa006,
+ 0x2009, 0x000e, 0x1078, 0x6b0a, 0x017f, 0xd1ac, 0x00c0, 0x1df6,
+ 0x2019, 0x0004, 0x1078, 0x2103, 0x0078, 0x1e05, 0x157e, 0x20a9,
+ 0x007e, 0x2009, 0x0000, 0x1078, 0x336a, 0x00c0, 0x1e01, 0x1078,
+ 0x316e, 0x8108, 0x00f0, 0x1dfb, 0x157f, 0x0c7f, 0x047f, 0x6043,
+ 0x0000, 0x2009, 0x00f7, 0x1078, 0x3131, 0x0f7e, 0x2079, 0x6dc3,
+ 0x783c, 0xa086, 0x0000, 0x0040, 0x1e1d, 0x6027, 0x0004, 0x783f,
+ 0x0000, 0x2079, 0x0140, 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003,
+ 0x1078, 0x502b, 0x2011, 0x0002, 0x1078, 0x5035, 0x1078, 0x4f41,
+ 0x1078, 0x40a3, 0x037e, 0x2019, 0x0000, 0x1078, 0x4fd3, 0x037f,
+ 0x60e3, 0x0000, 0x017f, 0x2001, 0x6c00, 0x2014, 0xa296, 0x0004,
+ 0x00c0, 0x1e40, 0xd19c, 0x00c0, 0x1e40, 0x6228, 0xc29d, 0x622a,
+ 0x2003, 0x0001, 0x2001, 0x6c1e, 0x2003, 0x0000, 0x6027, 0x0020,
+ 0xd194, 0x0040, 0x1ee3, 0x0f7e, 0x2079, 0x6dc3, 0x783c, 0xa086,
+ 0x0001, 0x00c0, 0x1e6c, 0x017e, 0x6027, 0x0004, 0x783f, 0x0000,
+ 0x2079, 0x0140, 0x7803, 0x1000, 0x7803, 0x0000, 0x2079, 0x6db0,
+ 0x7807, 0x0000, 0x7833, 0x0000, 0x1078, 0x4713, 0x1078, 0x47c3,
+ 0x017f, 0x0f7f, 0x0078, 0x1ee3, 0x0f7f, 0x017e, 0x6220, 0xd2b4,
+ 0x0040, 0x1ea1, 0x1078, 0x40a3, 0x1078, 0x4e17, 0x6027, 0x0004,
+ 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x1e84,
+ 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x6db0,
+ 0x6028, 0xa09a, 0x0002, 0x00c8, 0x1e94, 0x8000, 0x602a, 0x0c7f,
+ 0x1078, 0x4e09, 0x0078, 0x1ee2, 0x2019, 0x6db9, 0x2304, 0xa065,
+ 0x0040, 0x1e9e, 0x2009, 0x0027, 0x1078, 0x544c, 0x0c7f, 0x0078,
+ 0x1ee2, 0xd2bc, 0x0040, 0x1ee2, 0x1078, 0x40b1, 0x6017, 0x0010,
+ 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
+ 0x0040, 0x1eb6, 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e,
+ 0x2061, 0x6db0, 0x6044, 0xa09a, 0x0002, 0x00c8, 0x1ed7, 0x8000,
+ 0x6046, 0x603c, 0x0c7f, 0xa005, 0x0040, 0x1ee2, 0x1078, 0x40a8,
+ 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0, 0x1ed3, 0x6017,
+ 0x0012, 0x0078, 0x1ee2, 0x6017, 0x0016, 0x0078, 0x1ee2, 0x2019,
+ 0x6dbf, 0x2304, 0xa065, 0x0040, 0x1ee1, 0x2009, 0x004f, 0x1078,
+ 0x544c, 0x0c7f, 0x017f, 0xd19c, 0x0040, 0x1f0b, 0x017e, 0x6028,
+ 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078, 0x502b, 0x2011, 0x0002,
+ 0x1078, 0x5035, 0x1078, 0x4f41, 0x1078, 0x40a3, 0x037e, 0x2019,
+ 0x0000, 0x1078, 0x4fd3, 0x037f, 0x60e3, 0x0000, 0x1078, 0x6b79,
+ 0x1078, 0x6b97, 0x2001, 0x6c00, 0x2003, 0x0004, 0x6027, 0x0008,
+ 0x1078, 0x1161, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c, 0x007e,
+ 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2071,
+ 0x6c00, 0x71a8, 0x70aa, 0xa116, 0x0040, 0x1f35, 0x81ff, 0x0040,
+ 0x1f27, 0x2011, 0x8011, 0x1078, 0x2926, 0x0078, 0x1f35, 0x2011,
+ 0x8012, 0x1078, 0x2926, 0x037e, 0x0c7e, 0x2061, 0x0100, 0x2019,
+ 0x0028, 0x1078, 0x2103, 0x0c7f, 0x037f, 0x127f, 0x0f7f, 0x0e7f,
+ 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x0f7e, 0x007e, 0x027e,
+ 0x2061, 0x0100, 0xa190, 0x1f4f, 0x2204, 0x60f2, 0xa190, 0x1f58,
+ 0x2204, 0x60ee, 0x027f, 0x007f, 0x0f7f, 0x0c7f, 0x007c, 0x083e,
+ 0x083e, 0x083e, 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210,
+ 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0,
+ 0x00a0, 0xa080, 0x2154, 0x200c, 0xa18c, 0xff00, 0x810f, 0x007c,
+ 0xa080, 0x2154, 0x200c, 0xa18c, 0x00ff, 0x007c, 0x1f8e, 0x1f92,
+ 0x1f96, 0x1f9c, 0x1fa2, 0x1fa8, 0x1fae, 0x1fb6, 0x1fbe, 0x1fc4,
+ 0x1fca, 0x1fd2, 0x1fda, 0x1fe2, 0x1fea, 0x1ff4, 0x1ffe, 0x1ffe,
+ 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe,
+ 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x1ffe, 0x107e, 0x007e,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x0078, 0x2017, 0x107e, 0x007e,
+ 0x1078, 0x1d55, 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1d55,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1c45, 0x0078, 0x2017,
+ 0x107e, 0x007e, 0x1078, 0x1c45, 0x0078, 0x2017, 0x107e, 0x007e,
+ 0x1078, 0x1d55, 0x1078, 0x1c45, 0x0078, 0x2017, 0x107e, 0x007e,
+ 0x1078, 0x1d55, 0x1078, 0x1c45, 0x0078, 0x2017, 0x107e, 0x007e,
+ 0x1078, 0x1c89, 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1c89,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1d55, 0x1078, 0x1c89,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1d55, 0x1078, 0x1c89,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1c45, 0x1078, 0x1c89,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1c45, 0x1078, 0x1c89,
+ 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1d55, 0x1078, 0x1c45,
+ 0x1078, 0x1c89, 0x0078, 0x2017, 0x107e, 0x007e, 0x1078, 0x1d55,
+ 0x1078, 0x1c45, 0x1078, 0x1c89, 0x0078, 0x2017, 0x0005, 0x0078,
+ 0x1ffe, 0xb084, 0x003c, 0x8004, 0x8004, 0x0079, 0x2007, 0x2017,
+ 0x1f94, 0x1f98, 0x1f9e, 0x1fa4, 0x1faa, 0x1fb0, 0x1fb8, 0x1fc0,
+ 0x1fc6, 0x1fcc, 0x1fd4, 0x1fdc, 0x1fe4, 0x1fec, 0x1ff6, 0x0008,
+ 0x2001, 0x007f, 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e, 0x027e,
+ 0x2001, 0x010c, 0x203c, 0x7274, 0x82ff, 0x0040, 0x206d, 0x037e,
+ 0x7384, 0xa38e, 0xffff, 0x00c0, 0x202f, 0x2019, 0x0001, 0x8314,
+ 0xa2e0, 0x71c0, 0x2c04, 0xa38c, 0x0001, 0x0040, 0x203c, 0xa084,
+ 0xff00, 0x8007, 0x0078, 0x203e, 0xa084, 0x00ff, 0xa70e, 0x0040,
+ 0x2062, 0xa08e, 0x0000, 0x0040, 0x2062, 0xa08e, 0x00ff, 0x0040,
+ 0x2068, 0x1078, 0x1f61, 0x1078, 0x3333, 0x00c0, 0x2065, 0x6004,
+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x205c, 0x1078, 0x20b5,
+ 0x0040, 0x2065, 0x0078, 0x2062, 0x1078, 0x2150, 0x1078, 0x20dc,
+ 0x0040, 0x2065, 0x8318, 0x0078, 0x202f, 0x7386, 0x0078, 0x206a,
+ 0x7087, 0xffff, 0x037f, 0x0078, 0x20b2, 0xa780, 0x2154, 0x203c,
+ 0xa7bc, 0xff00, 0x873f, 0x20a9, 0x007e, 0x2009, 0x0000, 0x7084,
+ 0xa096, 0xffff, 0x0040, 0x2089, 0xa092, 0x007e, 0x0048, 0x2084,
+ 0x7087, 0xffff, 0x0078, 0x20af, 0x2008, 0x2011, 0x007e, 0xa202,
+ 0x20a8, 0x2700, 0x157e, 0x017e, 0xa106, 0x0040, 0x20a6, 0x1078,
+ 0x3333, 0x00c0, 0x20af, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
+ 0x00c0, 0x20a0, 0x1078, 0x20b5, 0x0040, 0x20af, 0x0078, 0x20a6,
+ 0x1078, 0x2150, 0x1078, 0x20dc, 0x0040, 0x20af, 0x017f, 0x8108,
+ 0x157f, 0x00f0, 0x2089, 0x7087, 0xffff, 0x0078, 0x20b2, 0x017f,
+ 0x157f, 0x7186, 0x027f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e,
+ 0x0c7e, 0x2c68, 0x1078, 0x53bf, 0x0040, 0x20d7, 0x2d00, 0x601a,
+ 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, 0x3302, 0x2001, 0x0000,
+ 0x1078, 0x3316, 0x127e, 0x2091, 0x8000, 0x7080, 0x8000, 0x7082,
+ 0x127f, 0x2009, 0x0004, 0x1078, 0x544c, 0xa085, 0x0001, 0x0c7f,
+ 0x0d7f, 0x077f, 0x017f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e,
+ 0x2c68, 0x1078, 0x53bf, 0x0040, 0x20fe, 0x2d00, 0x601a, 0x601f,
+ 0x0001, 0x2001, 0x0000, 0x1078, 0x3302, 0x2001, 0x0002, 0x1078,
+ 0x3316, 0x127e, 0x2091, 0x8000, 0x7080, 0x8000, 0x7082, 0x127f,
+ 0x2009, 0x0002, 0x1078, 0x544c, 0xa085, 0x0001, 0x0c7f, 0x0d7f,
+ 0x077f, 0x017f, 0x007c, 0x0e7e, 0x0c7e, 0x067e, 0x037e, 0x027e,
+ 0x1078, 0x4406, 0x1078, 0x43b6, 0x1078, 0x5826, 0x20a9, 0x007e,
+ 0x2009, 0x0000, 0x017e, 0x1078, 0x336a, 0x00c0, 0x211b, 0x1078,
+ 0x34f2, 0x1078, 0x316e, 0x017f, 0x8108, 0x00f0, 0x2112, 0x027f,
+ 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x037e,
+ 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e, 0x2019, 0x0029,
+ 0x1078, 0x43ff, 0x1078, 0x4344, 0x2c08, 0x1078, 0x6946, 0x017f,
+ 0x2e60, 0x1078, 0x34f2, 0x1078, 0x316e, 0x017f, 0x027f, 0x037f,
+ 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071, 0x6c00, 0x7080,
+ 0xa005, 0x0040, 0x214d, 0x8001, 0x7082, 0x007f, 0x0e7f, 0x007c,
+ 0x6000, 0xc08c, 0x6002, 0x007c, 0x7eef, 0x7de8, 0x7ce4, 0x80e2,
+ 0x7be1, 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4,
+ 0x80d3, 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca,
+ 0x80c9, 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9,
+ 0x80b6, 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad,
+ 0x80ac, 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3,
+ 0x6a9f, 0x699e, 0x689d, 0x809b, 0x8098, 0x6797, 0x6690, 0x658f,
+ 0x6488, 0x6384, 0x6282, 0x8081, 0x8080, 0x617c, 0x607a, 0x8079,
+ 0x5f76, 0x8075, 0x8074, 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d,
+ 0x806c, 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863,
+ 0x575c, 0x565a, 0x5559, 0x8056, 0x8055, 0x5454, 0x5353, 0x5252,
+ 0x5151, 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047,
+ 0x4c46, 0x8045, 0x8043, 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35,
+ 0x8034, 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d, 0x462c, 0x452b,
+ 0x442a, 0x4329, 0x4227, 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e,
+ 0x3e1d, 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004,
+ 0x3902, 0x8001, 0x8000, 0x8000, 0x3800, 0x3700, 0x3600, 0x8000,
+ 0x3500, 0x8000, 0x8000, 0x8000, 0x3400, 0x8000, 0x8000, 0x8000,
+ 0x8000, 0x8000, 0x8000, 0x3300, 0x3200, 0x8000, 0x8000, 0x8000,
+ 0x8000, 0x8000, 0x8000, 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00,
+ 0x8000, 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00,
+ 0x8000, 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700, 0x2600, 0x2500,
+ 0x2400, 0x2300, 0x2200, 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00,
+ 0x1e00, 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000,
+ 0x1900, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x1800,
+ 0x8000, 0x1700, 0x1600, 0x1500, 0x8000, 0x1400, 0x1300, 0x1200,
+ 0x1100, 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00,
+ 0x0b00, 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, 0x8000,
+ 0x0600, 0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, 0x8000,
+ 0x0200, 0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, 0x8000,
+ 0x8000, 0x8000, 0x8000, 0x0000, 0x2071, 0x6c6d, 0x7003, 0x0002,
+ 0xa006, 0x7012, 0x7016, 0x703a, 0x703e, 0x7033, 0x6c7d, 0x7037,
+ 0x6c7d, 0x7007, 0x0001, 0x2061, 0x6cbd, 0x6003, 0x0002, 0x007c,
+ 0x0090, 0x226b, 0x0068, 0x226b, 0x2071, 0x6c6d, 0x2b78, 0x7818,
+ 0xd084, 0x00c0, 0x226b, 0x2a60, 0x7820, 0xa08e, 0x0069, 0x00c0,
+ 0x2351, 0x0079, 0x22ef, 0x007c, 0x2071, 0x6c6d, 0x7004, 0x0079,
+ 0x2271, 0x2275, 0x2276, 0x2280, 0x2292, 0x007c, 0x0090, 0x227f,
+ 0x0068, 0x227f, 0x2b78, 0x7818, 0xd084, 0x0040, 0x229e, 0x007c,
+ 0x2b78, 0x2061, 0x6cbd, 0x6008, 0xa08e, 0x0100, 0x0040, 0x228d,
+ 0xa086, 0x0200, 0x0040, 0x2349, 0x007c, 0x7014, 0x2068, 0x2a60,
+ 0x7018, 0x007a, 0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0040,
+ 0x229a, 0x007c, 0x2a60, 0x2b78, 0x7018, 0x007a, 0x2a60, 0x7820,
+ 0xa08a, 0x0040, 0x00c8, 0x22a7, 0x61a8, 0x0079, 0x22af, 0x2100,
+ 0xa08a, 0x0035, 0x00c8, 0x2345, 0x61a8, 0x0079, 0x22ef, 0x2327,
+ 0x2359, 0x2361, 0x2365, 0x236d, 0x2373, 0x2377, 0x2380, 0x2384,
+ 0x238c, 0x2390, 0x2345, 0x2345, 0x2345, 0x2394, 0x2345, 0x23a4,
+ 0x23bb, 0x23d2, 0x244e, 0x2453, 0x2480, 0x24cb, 0x24da, 0x24fb,
+ 0x2531, 0x253b, 0x2548, 0x255b, 0x2573, 0x257c, 0x25b9, 0x25bf,
+ 0x2345, 0x25ca, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x25ce,
+ 0x25d4, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345,
+ 0x2345, 0x25dc, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x25e9,
+ 0x25ef, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345,
+ 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345,
+ 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x238c,
+ 0x2390, 0x2345, 0x2345, 0x2601, 0x2345, 0x2345, 0x2345, 0x2345,
+ 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x2345, 0x264e,
+ 0x271d, 0x2731, 0x2738, 0x279b, 0x27ec, 0x27f7, 0x2839, 0x2846,
+ 0x2853, 0x2856, 0x2605, 0x287f, 0x28ca, 0x2345, 0x2345, 0x2345,
+ 0x2345, 0x29ad, 0x29bb, 0x29c8, 0x713c, 0x0078, 0x2327, 0x2021,
+ 0x4000, 0x1078, 0x2900, 0x127e, 0x2091, 0x8000, 0x0068, 0x2334,
+ 0x7818, 0xd084, 0x0040, 0x2337, 0x127f, 0x0078, 0x232b, 0x781b,
+ 0x0001, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x2091, 0x4080, 0x7007,
+ 0x0001, 0x2091, 0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078,
+ 0x2329, 0x2021, 0x4002, 0x0078, 0x2329, 0x2021, 0x4003, 0x0078,
+ 0x2329, 0x2021, 0x4005, 0x0078, 0x2329, 0x2021, 0x4006, 0x0078,
+ 0x2329, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078,
+ 0x290f, 0x7823, 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28,
+ 0x7a2c, 0x7824, 0x7930, 0x0078, 0x2913, 0x7924, 0x7828, 0x2114,
+ 0x200a, 0x0078, 0x2327, 0x7924, 0x2114, 0x0078, 0x2327, 0x2099,
+ 0x0009, 0x20a1, 0x0009, 0x20a9, 0x0007, 0x53a3, 0x0078, 0x2327,
+ 0x7824, 0x2060, 0x0078, 0x2396, 0x2009, 0x0001, 0x2011, 0x000e,
+ 0x2019, 0x0006, 0x0078, 0x2327, 0x7d38, 0x7c3c, 0x0078, 0x235b,
+ 0x7d38, 0x7c3c, 0x0078, 0x2367, 0x2061, 0x1000, 0x610c, 0xa006,
+ 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0, 0x2398, 0x2010, 0xa005,
+ 0x0040, 0x2327, 0x0078, 0x234d, 0x2061, 0x6c51, 0x7824, 0x7930,
+ 0xa11a, 0x00c8, 0x2355, 0x8019, 0x0040, 0x2355, 0x604a, 0x6142,
+ 0x782c, 0x6052, 0x7828, 0x6056, 0xa006, 0x605a, 0x605e, 0x1078,
+ 0x37bb, 0x0078, 0x2327, 0x2061, 0x6c51, 0x7824, 0x7930, 0xa11a,
+ 0x00c8, 0x2355, 0x8019, 0x0040, 0x2355, 0x604e, 0x6146, 0x782c,
+ 0x6062, 0x7828, 0x6066, 0xa006, 0x606a, 0x606e, 0x1078, 0x3591,
+ 0x0078, 0x2327, 0xa02e, 0x2520, 0x81ff, 0x00c0, 0x2351, 0x7924,
+ 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0x6c74, 0x41a1, 0x1078,
+ 0x28d7, 0x0040, 0x2351, 0x2009, 0x0020, 0x1078, 0x290f, 0x701b,
+ 0x23ea, 0x007c, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011,
+ 0x0040, 0x23f6, 0xa096, 0x0019, 0x00c0, 0x2351, 0x810f, 0xa18c,
+ 0x00ff, 0x0040, 0x2351, 0x710e, 0x700c, 0x8001, 0x0040, 0x2427,
+ 0x700e, 0x1078, 0x28d7, 0x0040, 0x2351, 0x2009, 0x0020, 0x2061,
+ 0x6cbd, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399,
+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x290f, 0x701b,
+ 0x241a, 0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040,
+ 0x2425, 0xa096, 0x000a, 0x00c0, 0x2351, 0x0078, 0x23fc, 0x7010,
+ 0x2068, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x3267, 0x00c0, 0x2435,
+ 0x7007, 0x0003, 0x701b, 0x2437, 0x007c, 0x1078, 0x3654, 0x127e,
+ 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099, 0x6c74, 0x530a, 0x2100,
+ 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80,
+ 0x000d, 0x2009, 0x0020, 0x127f, 0x0078, 0x2913, 0x6190, 0x7824,
+ 0x6092, 0x0078, 0x2327, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827,
+ 0x4953, 0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104,
+ 0x7832, 0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200,
+ 0x603c, 0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e,
+ 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010,
+ 0x20c1, 0x00f0, 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423,
+ 0x81ff, 0x00c0, 0x2351, 0x1078, 0x28ef, 0x0040, 0x2355, 0x7c28,
+ 0x7d2c, 0x1078, 0x34b5, 0xd28c, 0x00c0, 0x2492, 0x1078, 0x3445,
+ 0x0078, 0x2494, 0x1078, 0x3481, 0x00c0, 0x24be, 0x2061, 0x7200,
+ 0x127e, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000, 0x0040, 0x24ac,
+ 0x6010, 0xa06d, 0x0040, 0x24ac, 0x683c, 0xa406, 0x00c0, 0x24ac,
+ 0x6840, 0xa506, 0x0040, 0x24b7, 0x127f, 0xace0, 0x0008, 0x2001,
+ 0x6c15, 0x2004, 0xac02, 0x00c8, 0x2351, 0x0078, 0x2498, 0x1078,
+ 0x5de3, 0x127f, 0x0040, 0x2351, 0x0078, 0x2327, 0xa00e, 0x2001,
+ 0x0005, 0x1078, 0x3654, 0x127e, 0x2091, 0x8000, 0x1078, 0x35c4,
+ 0x127f, 0x0078, 0x2327, 0x81ff, 0x00c0, 0x2351, 0x1078, 0x28ef,
+ 0x0040, 0x2355, 0x1078, 0x33fa, 0x1078, 0x34c6, 0x0040, 0x2351,
+ 0x0078, 0x2327, 0x81ff, 0x00c0, 0x2351, 0x1078, 0x28ef, 0x0040,
+ 0x2355, 0x2031, 0x000f, 0x1078, 0x33fa, 0x8631, 0x00c8, 0x24e3,
+ 0x2019, 0x0005, 0x1078, 0x34e7, 0x0040, 0x2351, 0x7828, 0xa08a,
+ 0x1000, 0x00c8, 0x2355, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078,
+ 0x4033, 0x0078, 0x2327, 0x127e, 0x2091, 0x8000, 0x81ff, 0x00c0,
+ 0x252b, 0x2029, 0x007d, 0x644c, 0x2400, 0xa506, 0x0040, 0x2525,
+ 0x2508, 0x1078, 0x336a, 0x00c0, 0x2525, 0x2031, 0x000f, 0x1078,
+ 0x33fa, 0x8631, 0x00c8, 0x250f, 0x2019, 0x0004, 0x1078, 0x34e7,
+ 0x0040, 0x252b, 0x7824, 0xa08a, 0x1000, 0x00c8, 0x252e, 0x8003,
+ 0x800b, 0x810b, 0xa108, 0x1078, 0x4033, 0x8529, 0x00c8, 0x2504,
+ 0x127f, 0x0078, 0x2327, 0x127f, 0x0078, 0x2351, 0x127f, 0x0078,
+ 0x2355, 0x1078, 0x28ef, 0x0040, 0x2355, 0x1078, 0x342a, 0x1078,
+ 0x34b5, 0x0078, 0x2327, 0x81ff, 0x00c0, 0x2351, 0x1078, 0x28ef,
+ 0x0040, 0x2355, 0x1078, 0x3413, 0x1078, 0x34b5, 0x0078, 0x2327,
+ 0x81ff, 0x00c0, 0x2351, 0x1078, 0x28ef, 0x0040, 0x2355, 0x1078,
+ 0x3484, 0x0040, 0x2351, 0x1078, 0x32af, 0x1078, 0x343e, 0x1078,
+ 0x34b5, 0x0078, 0x2327, 0x1078, 0x28ef, 0x0040, 0x2355, 0x1078,
+ 0x33fa, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078, 0x34f2, 0x0c7f,
+ 0x1078, 0x43ff, 0x1078, 0x4344, 0x2c08, 0x1078, 0x6946, 0x1078,
+ 0x34b5, 0x0078, 0x2327, 0x1078, 0x28ef, 0x0040, 0x2355, 0x1078,
+ 0x34b5, 0x2208, 0x0078, 0x2327, 0x157e, 0x0d7e, 0x0e7e, 0x2069,
+ 0x6cff, 0x6810, 0x6914, 0xa10a, 0x00c8, 0x2588, 0x2009, 0x0000,
+ 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9, 0x007d, 0x2069,
+ 0x6d20, 0x2d04, 0xa075, 0x0040, 0x259d, 0x704c, 0x1078, 0x25a7,
+ 0xa210, 0x7080, 0x1078, 0x25a7, 0xa318, 0x8d68, 0x00f0, 0x2591,
+ 0x2300, 0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078, 0x2327, 0x0f7e,
+ 0x017e, 0xa07d, 0x0040, 0x25b6, 0x2001, 0x0000, 0x8000, 0x2f0c,
+ 0x81ff, 0x0040, 0x25b6, 0x2178, 0x0078, 0x25ae, 0x017f, 0x0f7f,
+ 0x007c, 0x2069, 0x6cff, 0x6910, 0x6294, 0x0078, 0x2327, 0x81ff,
+ 0x00c0, 0x2351, 0x614c, 0xa190, 0x2154, 0x2214, 0xa294, 0x00ff,
+ 0x0078, 0x2327, 0x613c, 0x6240, 0x0078, 0x2327, 0x1078, 0x28ef,
+ 0x0040, 0x2355, 0x0078, 0x2327, 0x1078, 0x28ef, 0x0040, 0x2355,
+ 0x6244, 0x6338, 0x0078, 0x2327, 0x613c, 0x6240, 0x7824, 0x603e,
+ 0x7b28, 0x6342, 0x2069, 0x6c51, 0x831f, 0xa305, 0x6816, 0x0078,
+ 0x2327, 0x1078, 0x28ef, 0x0040, 0x2355, 0x0078, 0x2327, 0x1078,
+ 0x28ef, 0x0040, 0x2355, 0x7828, 0xa00d, 0x0040, 0x2355, 0x782c,
+ 0xa005, 0x0040, 0x2355, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078,
+ 0x2327, 0x7d38, 0x7c3c, 0x0078, 0x23d4, 0x7824, 0xa09c, 0x00ff,
+ 0xa39a, 0x0003, 0x00c8, 0x2351, 0x624c, 0xa084, 0xff00, 0x8007,
+ 0xa206, 0x00c0, 0x261d, 0x2001, 0x6c40, 0x2009, 0x000c, 0x7a2c,
+ 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2913, 0x81ff, 0x00c0, 0x2351,
+ 0x1078, 0x28ef, 0x0040, 0x2355, 0x6004, 0xa084, 0x00ff, 0xa086,
+ 0x0006, 0x00c0, 0x2351, 0x0c7e, 0x1078, 0x28d7, 0x0c7f, 0x0040,
+ 0x2351, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x60a4,
+ 0x0040, 0x2351, 0x7007, 0x0003, 0x701b, 0x263f, 0x007c, 0x6830,
+ 0xa086, 0x0100, 0x0040, 0x2351, 0xad80, 0x000e, 0x2009, 0x000c,
+ 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2913, 0x1078, 0x28d7,
+ 0x0040, 0x2351, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
+ 0x1078, 0x290f, 0x701b, 0x265d, 0x007c, 0xade8, 0x000d, 0x6800,
+ 0xa005, 0x0040, 0x2355, 0x6804, 0xd0ac, 0x0040, 0x266a, 0xd0a4,
+ 0x0040, 0x2355, 0xd094, 0x0040, 0x2675, 0x0c7e, 0x2061, 0x0100,
+ 0x6104, 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x2680,
+ 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f,
+ 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048, 0x2697, 0xd084,
+ 0x0040, 0x2697, 0x6828, 0xa08a, 0x007e, 0x00c8, 0x2355, 0xa088,
+ 0x2154, 0x210c, 0xa18c, 0x00ff, 0x6152, 0x0078, 0x26a0, 0xd0dc,
+ 0x0040, 0x26a0, 0x6828, 0xa08a, 0x007e, 0x00c8, 0x2355, 0x604e,
+ 0x6808, 0xa08a, 0x0100, 0x0048, 0x2355, 0xa08a, 0x0841, 0x00c8,
+ 0x2355, 0xa084, 0x0007, 0x00c0, 0x2355, 0x680c, 0xa005, 0x0040,
+ 0x2355, 0x6810, 0xa005, 0x0040, 0x2355, 0x6848, 0x6940, 0xa10a,
+ 0x00c8, 0x2355, 0x8001, 0x0040, 0x2355, 0x684c, 0x6944, 0xa10a,
+ 0x00c8, 0x2355, 0x8001, 0x0040, 0x2355, 0x20a9, 0x001c, 0x2d98,
+ 0x2069, 0x6c51, 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e,
+ 0x8007, 0xa084, 0x00ff, 0x6042, 0x1078, 0x37bb, 0x1078, 0x3591,
+ 0x6000, 0xa086, 0x0000, 0x00c0, 0x271b, 0x6808, 0x602a, 0x1078,
+ 0x1ce3, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217,
+ 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040,
+ 0x26fb, 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217,
+ 0x831f, 0x0078, 0x26fd, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e,
+ 0x6312, 0x1078, 0x40bf, 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040,
+ 0x602f, 0x0000, 0x0c7f, 0x60ac, 0xa005, 0x0040, 0x2717, 0x6003,
+ 0x0001, 0x2091, 0x301d, 0x1078, 0x30c9, 0x0078, 0x271b, 0x6003,
+ 0x0004, 0x2091, 0x301d, 0x0078, 0x2327, 0x6000, 0xa086, 0x0000,
+ 0x0040, 0x2351, 0x2069, 0x6c51, 0x7830, 0x6842, 0x7834, 0x6846,
+ 0x2d00, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078,
+ 0x2913, 0x81ff, 0x00c0, 0x2351, 0x1078, 0x30c9, 0x0078, 0x2327,
+ 0x81ff, 0x00c0, 0x2351, 0x6174, 0x81ff, 0x0040, 0x2752, 0x703f,
+ 0x0000, 0x2001, 0x71c0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c,
+ 0x7d38, 0x127e, 0x2091, 0x8000, 0x1078, 0x2913, 0x701b, 0x2324,
+ 0x127f, 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0x71c0, 0x20a9,
+ 0x0040, 0x20a1, 0x71c0, 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588,
+ 0x2154, 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002,
+ 0x2100, 0xa506, 0x0040, 0x2784, 0x1078, 0x336a, 0x00c0, 0x2784,
+ 0x6014, 0x821c, 0x0048, 0x277c, 0xa398, 0x71c0, 0xa085, 0xff00,
+ 0x8007, 0x201a, 0x0078, 0x2783, 0xa398, 0x71c0, 0x2324, 0xa4a4,
+ 0xff00, 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x007f, 0x00c8,
+ 0x278b, 0x0078, 0x2768, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a,
+ 0x0d7f, 0x20a9, 0x0040, 0x20a1, 0x71c0, 0x2099, 0x71c0, 0x1078,
+ 0x3111, 0x0078, 0x2741, 0x1078, 0x28ef, 0x0040, 0x2355, 0x0c7e,
+ 0x1078, 0x28d7, 0x0c7f, 0x0040, 0x2351, 0x2001, 0x6c52, 0x2004,
+ 0xd0b4, 0x0040, 0x27c8, 0x6000, 0xd08c, 0x00c0, 0x27c8, 0x6004,
+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x27c8, 0x6837, 0x0000,
+ 0x6838, 0xc0fd, 0x683a, 0x1078, 0x60c0, 0x0040, 0x2351, 0x7007,
+ 0x0003, 0x701b, 0x27c4, 0x007c, 0x1078, 0x28ef, 0x0040, 0x2355,
+ 0x20a9, 0x0029, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9,
+ 0x0004, 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078,
+ 0x3111, 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a,
+ 0x20a0, 0x1078, 0x3111, 0x2d00, 0x2009, 0x0029, 0x7a2c, 0x7b28,
+ 0x7c3c, 0x7d38, 0x0078, 0x2913, 0x81ff, 0x00c0, 0x2351, 0x1078,
+ 0x28ef, 0x0040, 0x2355, 0x1078, 0x34d1, 0x0078, 0x2327, 0x81ff,
+ 0x00c0, 0x2351, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2355, 0x1078,
+ 0x28ef, 0x0040, 0x2355, 0x2031, 0x000f, 0x1078, 0x33fa, 0x8631,
+ 0x00c8, 0x2805, 0x2019, 0x0004, 0x1078, 0x34e7, 0x7924, 0x810f,
+ 0x7a28, 0x1078, 0x2815, 0x0078, 0x2327, 0xa186, 0x00ff, 0x0040,
+ 0x281d, 0x1078, 0x282d, 0x0078, 0x282c, 0x2029, 0x007d, 0x2061,
+ 0x6c00, 0x644c, 0x2400, 0xa506, 0x0040, 0x2829, 0x2508, 0x1078,
+ 0x282d, 0x8529, 0x00c8, 0x2822, 0x007c, 0x1078, 0x336a, 0x00c0,
+ 0x2838, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4033,
+ 0x007c, 0x81ff, 0x00c0, 0x2351, 0x1078, 0x28ef, 0x0040, 0x2355,
+ 0x1078, 0x33fa, 0x1078, 0x34dc, 0x0078, 0x2327, 0x81ff, 0x00c0,
+ 0x2351, 0x1078, 0x28ef, 0x0040, 0x2355, 0x1078, 0x33fa, 0x1078,
+ 0x34c6, 0x0078, 0x2327, 0x6100, 0x0078, 0x2327, 0x1078, 0x28ef,
+ 0x0040, 0x2355, 0x6004, 0xa086, 0x0707, 0x0040, 0x2355, 0x2001,
+ 0x6c00, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2351, 0x0d7e, 0xace8,
+ 0x000a, 0x7924, 0xd184, 0x0040, 0x286f, 0xace8, 0x0006, 0x680c,
0x8007, 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00,
- 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200, 0x0078, 0x23db, 0x7824,
- 0xa084, 0x00ff, 0xa086, 0x00ff, 0x0040, 0x2949, 0x81ff, 0x00c0,
- 0x2405, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2409, 0x7924, 0xa18c,
- 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x295d, 0xa182, 0x007e,
- 0x00c8, 0x2409, 0x2100, 0x1078, 0x1feb, 0x027e, 0x0c7e, 0x127e,
- 0x2091, 0x8000, 0x2061, 0x71c9, 0x601b, 0x0000, 0x601f, 0x0000,
- 0x2061, 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a,
- 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x326c,
- 0x1078, 0x433a, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078,
- 0x28d1, 0x127f, 0x0c7f, 0x027f, 0x0078, 0x23db, 0x7924, 0xa18c,
- 0xff00, 0x810f, 0x0c7e, 0x1078, 0x34bf, 0x2c08, 0x0c7f, 0x00c0,
- 0x2409, 0x0078, 0x23db, 0x017e, 0x2008, 0x2044, 0x8000, 0x204c,
- 0x8000, 0x290a, 0x8108, 0x280a, 0x8108, 0x00f0, 0x2995, 0x017f,
- 0x007c, 0x017e, 0x0a7e, 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c,
- 0x8000, 0x2054, 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108,
- 0x290a, 0x8108, 0x280a, 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x1078,
- 0x12c7, 0x0040, 0x29ce, 0xa006, 0x6802, 0x7010, 0xa005, 0x00c0,
- 0x29c6, 0x2d00, 0x7012, 0x7016, 0x0078, 0x29cc, 0x7014, 0x6802,
- 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, 0x000d, 0x007c, 0x7924,
- 0x810f, 0xa18c, 0x00ff, 0x1078, 0x34fa, 0x00c0, 0x29de, 0x7e28,
- 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, 0x29df, 0xa066, 0x8cff,
- 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x1078, 0x34fa, 0x00c0,
- 0x29ef, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0048, 0x29f0, 0xa066,
- 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff, 0x0040, 0x29fd, 0x2168,
- 0x6904, 0x1078, 0x12fb, 0x0078, 0x29f4, 0x7112, 0x7116, 0x017f,
- 0x007c, 0x2031, 0x0001, 0x0078, 0x2a07, 0x2031, 0x0000, 0x2061,
- 0x70bd, 0x6606, 0x6112, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532,
- 0x2c10, 0x1078, 0x1332, 0x7007, 0x0002, 0x701b, 0x23db, 0x007c,
- 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x707b,
- 0x2004, 0xa005, 0x00c0, 0x2a32, 0x0068, 0x2a32, 0x7818, 0xd084,
- 0x00c0, 0x2a32, 0x781b, 0x0001, 0x7a22, 0x7b26, 0x2091, 0x4080,
- 0x0078, 0x2a56, 0x017e, 0x0c7e, 0x0e7e, 0x2071, 0x706d, 0x7138,
- 0xa182, 0x0008, 0x0048, 0x2a40, 0x7030, 0x2060, 0x0078, 0x2a51,
- 0x7030, 0xa0e0, 0x0008, 0xac82, 0x70bd, 0x0048, 0x2a49, 0x2061,
- 0x707d, 0x2c00, 0x7032, 0x81ff, 0x00c0, 0x2a4f, 0x7036, 0x8108,
- 0x713a, 0x2262, 0x6306, 0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f,
- 0x007c, 0x0e7e, 0x2071, 0x706d, 0x7038, 0xa005, 0x0040, 0x2a90,
- 0x127e, 0x2091, 0x8000, 0x0068, 0x2a8f, 0x0f7e, 0x2079, 0x0000,
- 0x7818, 0xd084, 0x00c0, 0x2a8e, 0x0c7e, 0x781b, 0x0001, 0x7034,
- 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, 0x2091, 0x4080, 0x7038,
- 0x8001, 0x703a, 0xa005, 0x00c0, 0x2a84, 0x7033, 0x707d, 0x7037,
- 0x707d, 0x0c7f, 0x0078, 0x2a8e, 0xac80, 0x0008, 0xa0fa, 0x70bd,
- 0x0048, 0x2a8c, 0x2001, 0x707d, 0x7036, 0x0c7f, 0x0f7f, 0x127f,
- 0x0e7f, 0x007c, 0x027e, 0x2001, 0x7052, 0x2004, 0xd0c4, 0x0040,
- 0x2a9d, 0x2011, 0x8014, 0x1078, 0x2a18, 0x027f, 0x007c, 0x81ff,
- 0x00c0, 0x2405, 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0x6032,
- 0x1078, 0x3247, 0x127f, 0x0078, 0x23db, 0x7824, 0x2008, 0xa18c,
- 0xfffd, 0x00c0, 0x2ab8, 0x61b4, 0xa10d, 0x61b6, 0x0078, 0x23db,
- 0x0078, 0x2409, 0x81ff, 0x00c0, 0x2405, 0x6000, 0xa086, 0x0003,
- 0x00c0, 0x2405, 0x2001, 0x7052, 0x2004, 0xd0a4, 0x00c0, 0x2405,
- 0x1078, 0x29e1, 0x0040, 0x2409, 0x6004, 0xa084, 0x00ff, 0xa086,
- 0x0006, 0x00c0, 0x2ad7, 0x7828, 0xa005, 0x0040, 0x23db, 0x0c7e,
- 0x1078, 0x29b7, 0x0c7f, 0x0040, 0x2405, 0x6837, 0x0000, 0x6833,
- 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x649c, 0x0040, 0x2405,
- 0x7007, 0x0003, 0x701b, 0x2aed, 0x007c, 0x6830, 0xa086, 0x0100,
- 0x0040, 0x2405, 0x0078, 0x23db, 0x2001, 0x7000, 0x2004, 0xa086,
- 0x0003, 0x00c0, 0x2405, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
- 0x1078, 0x29b7, 0x0040, 0x2405, 0x2009, 0x0000, 0x2031, 0x0000,
- 0x7023, 0x0000, 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0,
- 0x1078, 0x34fa, 0x00c0, 0x2b3a, 0x6004, 0xa0c6, 0x0707, 0x0040,
- 0x2b3a, 0xa084, 0x00ff, 0xa0c6, 0x0006, 0x00c0, 0x2b3a, 0x87ff,
- 0x0040, 0x2b2d, 0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004,
- 0x53a3, 0x1078, 0x29a1, 0x0078, 0x2b36, 0xac80, 0x000a, 0x2098,
- 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078, 0x29a1, 0x21a2, 0x94a0,
- 0xa6b0, 0x0005, 0x8108, 0xa186, 0x007e, 0x0040, 0x2b45, 0xa686,
- 0x0028, 0x0040, 0x2b4e, 0x0078, 0x2b10, 0x86ff, 0x00c0, 0x2b4c,
- 0x7120, 0x810b, 0x0078, 0x23db, 0x702f, 0x0001, 0x711e, 0x7020,
- 0xa600, 0x7022, 0x772a, 0x2061, 0x70bd, 0x6007, 0x0000, 0x6612,
- 0x7024, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078,
- 0x1332, 0x7007, 0x0002, 0x701b, 0x2b66, 0x007c, 0x702c, 0xa005,
- 0x00c0, 0x2b78, 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000,
- 0x2061, 0x70bd, 0x6224, 0x6328, 0x642c, 0x6530, 0x0078, 0x2b10,
- 0x7120, 0x810b, 0x0078, 0x23db, 0x127e, 0x0c7e, 0x0e7e, 0x2061,
- 0x0100, 0x2071, 0x7000, 0x6044, 0xd0a4, 0x00c0, 0x2ba5, 0xd084,
- 0x0040, 0x2b8e, 0x1078, 0x2ccc, 0x0078, 0x2ba1, 0xd08c, 0x0040,
- 0x2b95, 0x1078, 0x2be3, 0x0078, 0x2ba1, 0xd094, 0x0040, 0x2b9c,
- 0x1078, 0x2bc6, 0x0078, 0x2ba1, 0xd09c, 0x0040, 0x2ba1, 0x1078,
- 0x2baf, 0x0e7f, 0x0c7f, 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c,
- 0x00c0, 0x2bac, 0xc19d, 0x612a, 0x017f, 0x0078, 0x2ba1, 0x6043,
- 0x0040, 0x6043, 0x0000, 0x7067, 0x0000, 0x707f, 0x0001, 0x709f,
- 0x0000, 0x2009, 0x75c0, 0x200b, 0x0000, 0x706b, 0x000f, 0x2009,
- 0x000f, 0x2011, 0x3207, 0x1078, 0x433a, 0x007c, 0x7068, 0xa005,
- 0x00c0, 0x2be2, 0x2011, 0x3207, 0x1078, 0x42aa, 0x6043, 0x0020,
- 0x6043, 0x0000, 0x6044, 0xd08c, 0x00c0, 0x2bde, 0x707b, 0x0000,
- 0x6043, 0x0090, 0x6043, 0x0010, 0x0078, 0x2be2, 0x706f, 0x0000,
- 0x0078, 0x2be2, 0x007c, 0x706c, 0xa08a, 0x0003, 0x00c8, 0x2bec,
- 0x1079, 0x2bef, 0x0078, 0x2bee, 0x1078, 0x1288, 0x007c, 0x2bf2,
- 0x2c41, 0x2ccb, 0x0f7e, 0x706f, 0x0001, 0x20e1, 0xa000, 0x20e1,
- 0x8700, 0x1078, 0x1d4d, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079,
- 0x7400, 0x207b, 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f,
- 0x00ef, 0x7813, 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f,
- 0x0000, 0x7823, 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f,
- 0x0000, 0x2079, 0x740c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099,
- 0x7005, 0x20a1, 0x740e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0x7412,
- 0x207b, 0x0000, 0x7807, 0x0000, 0x2099, 0x7400, 0x20a1, 0x020b,
- 0x20a9, 0x0014, 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x1078,
- 0x322e, 0x0f7f, 0x7073, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000,
- 0x007c, 0x0d7e, 0x7070, 0x7073, 0x0000, 0xa025, 0x0040, 0x2cb5,
- 0x6020, 0xd0b4, 0x00c0, 0x2cb3, 0x717c, 0x81ff, 0x0040, 0x2c9c,
- 0xa486, 0x000c, 0x00c0, 0x2ca7, 0xa480, 0x0018, 0x8004, 0x20a8,
- 0x2011, 0x7480, 0x2019, 0x7400, 0x220c, 0x2304, 0xa106, 0x00c0,
- 0x2c73, 0x8210, 0x8318, 0x00f0, 0x2c5c, 0x6043, 0x0004, 0x608b,
- 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0006, 0x706f, 0x0002, 0x707b,
- 0x0002, 0x0078, 0x2cb3, 0x2069, 0x7480, 0x6930, 0xa18e, 0x1101,
- 0x00c0, 0x2ca7, 0x6834, 0xa005, 0x00c0, 0x2ca7, 0x6900, 0xa18c,
- 0x00ff, 0x00c0, 0x2c87, 0x6804, 0xa005, 0x0040, 0x2c9c, 0x2011,
- 0x748e, 0x2019, 0x7005, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102,
- 0x0048, 0x2c9a, 0x00c0, 0x2ca7, 0x8210, 0x8318, 0x00f0, 0x2c8d,
- 0x0078, 0x2ca7, 0x707f, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x2099, 0x7480, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043,
- 0x0008, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2cb3, 0x60c3,
- 0x000c, 0x1078, 0x322e, 0x0d7f, 0x007c, 0x6020, 0xd0b4, 0x00c0,
- 0x2cb3, 0x60c3, 0x000c, 0x2011, 0x71c0, 0x2013, 0x0000, 0x7073,
- 0x0000, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078,
- 0x50a7, 0x0078, 0x2cb3, 0x007c, 0x7078, 0xa08a, 0x001d, 0x00c8,
- 0x2cd5, 0x1079, 0x2cd8, 0x0078, 0x2cd7, 0x1078, 0x1288, 0x007c,
- 0x2cfc, 0x2d0b, 0x2d3c, 0x2d51, 0x2d81, 0x2da9, 0x2dd9, 0x2e03,
- 0x2e33, 0x2e59, 0x2ea4, 0x2ec6, 0x2eea, 0x2f00, 0x2f26, 0x2f39,
- 0x2f42, 0x2f5b, 0x2f89, 0x2fb1, 0x2fdf, 0x3009, 0x304e, 0x3083,
- 0x30a5, 0x30e3, 0x3107, 0x3120, 0x312d, 0x7003, 0x0007, 0x6004,
- 0xa084, 0xfff9, 0x6006, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0,
- 0x6043, 0x0002, 0x707b, 0x0001, 0x2009, 0x07d0, 0x2011, 0x320e,
- 0x1078, 0x429d, 0x007c, 0x0f7e, 0x7070, 0xa086, 0x0014, 0x00c0,
- 0x2d3a, 0x6043, 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2d3a, 0x2079,
- 0x7480, 0x7a30, 0xa296, 0x1102, 0x00c0, 0x2d38, 0x7834, 0xa005,
- 0x00c0, 0x2d38, 0x7a38, 0xd2fc, 0x0040, 0x2d2e, 0x709c, 0xa005,
- 0x00c0, 0x2d2e, 0x1078, 0x32c7, 0x709f, 0x0001, 0x2011, 0x320e,
- 0x1078, 0x42aa, 0x707b, 0x0010, 0x1078, 0x2f42, 0x0078, 0x2d3a,
- 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0003, 0x6043, 0x0004,
- 0x1078, 0x3298, 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, 0x000a,
- 0x20a3, 0x0000, 0x00f0, 0x2d48, 0x60c3, 0x0014, 0x1078, 0x322e,
- 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2d7f, 0x2011, 0x320e,
- 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x2d7b, 0x2079, 0x7480,
- 0x7a30, 0xa296, 0x1102, 0x00c0, 0x2d7b, 0x7834, 0xa005, 0x00c0,
- 0x2d7b, 0x7a38, 0xd2fc, 0x0040, 0x2d75, 0x709c, 0xa005, 0x00c0,
- 0x2d75, 0x1078, 0x32c7, 0x709f, 0x0001, 0x707b, 0x0004, 0x1078,
- 0x2d81, 0x0078, 0x2d7f, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f,
- 0x007c, 0x707b, 0x0005, 0x1078, 0x3298, 0x20a3, 0x1103, 0x20a3,
- 0x0000, 0x3430, 0x2011, 0x748e, 0x7064, 0xa005, 0x00c0, 0x2d9b,
- 0x714c, 0xa186, 0xffff, 0x0040, 0x2d9b, 0x1078, 0x31d2, 0x0040,
- 0x2d9b, 0x1078, 0x32c7, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x322e,
- 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2dd7, 0x2011, 0x320e,
- 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x2dd3, 0x2079, 0x7480,
- 0x7a30, 0xa296, 0x1103, 0x00c0, 0x2dd3, 0x7834, 0xa005, 0x00c0,
- 0x2dd3, 0x7a38, 0xd2fc, 0x0040, 0x2dcd, 0x709c, 0xa005, 0x00c0,
- 0x2dcd, 0x1078, 0x32c7, 0x709f, 0x0001, 0x707b, 0x0006, 0x1078,
- 0x2dd9, 0x0078, 0x2dd7, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f,
- 0x007c, 0x707b, 0x0007, 0x1078, 0x3298, 0x20a3, 0x1104, 0x20a3,
- 0x0000, 0x3430, 0x2011, 0x748e, 0x7064, 0xa005, 0x00c0, 0x2df5,
- 0x7150, 0xa186, 0xffff, 0x0040, 0x2df5, 0xa180, 0x2207, 0x200c,
- 0xa18c, 0xff00, 0x810f, 0x1078, 0x31d2, 0x20a9, 0x0008, 0x2298,
+ 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200, 0x0078, 0x2327, 0x7824,
+ 0xa084, 0x00ff, 0xa086, 0x00ff, 0x0040, 0x2889, 0x81ff, 0x00c0,
+ 0x2351, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2355, 0x7924, 0xa18c,
+ 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x289d, 0xa182, 0x007e,
+ 0x00c8, 0x2355, 0x2100, 0x1078, 0x1f68, 0x027e, 0x0c7e, 0x127e,
+ 0x2091, 0x8000, 0x2061, 0x6dc3, 0x601b, 0x0000, 0x601f, 0x0000,
+ 0x2061, 0x6c00, 0x6003, 0x0001, 0x2061, 0x0100, 0x6030, 0xa084,
+ 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010,
+ 0x2009, 0x001e, 0x2011, 0x30ee, 0x1078, 0x40b6, 0x7924, 0xa18c,
+ 0xff00, 0x810f, 0x7a28, 0x1078, 0x2815, 0x127f, 0x0c7f, 0x027f,
+ 0x0078, 0x2327, 0x7924, 0xa18c, 0xff00, 0x810f, 0x0c7e, 0x1078,
+ 0x3333, 0x2c08, 0x0c7f, 0x00c0, 0x2355, 0x0078, 0x2327, 0x1078,
+ 0x12a7, 0x0040, 0x28ee, 0xa006, 0x6802, 0x7010, 0xa005, 0x00c0,
+ 0x28e6, 0x2d00, 0x7012, 0x7016, 0x0078, 0x28ec, 0x7014, 0x6802,
+ 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, 0x000d, 0x007c, 0x7e24,
+ 0x860f, 0xa18c, 0x00ff, 0x1078, 0x336a, 0x00c0, 0x28fd, 0xa6b4,
+ 0x00ff, 0xa682, 0x0010, 0x0048, 0x28fe, 0xa066, 0x8cff, 0x007c,
+ 0x017e, 0x7110, 0x81ff, 0x0040, 0x290b, 0x2168, 0x6904, 0x1078,
+ 0x12db, 0x0078, 0x2902, 0x7112, 0x7116, 0x017f, 0x007c, 0x2031,
+ 0x0001, 0x0078, 0x2915, 0x2031, 0x0000, 0x2061, 0x6cbd, 0x6606,
+ 0x6112, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078,
+ 0x1312, 0x7007, 0x0002, 0x701b, 0x2327, 0x007c, 0x0f7e, 0x127e,
+ 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x6c7b, 0x2004, 0xa005,
+ 0x00c0, 0x2940, 0x0068, 0x2940, 0x7818, 0xd084, 0x00c0, 0x2940,
+ 0x781b, 0x0001, 0x7a22, 0x7b26, 0x2091, 0x4080, 0x0078, 0x2964,
+ 0x017e, 0x0c7e, 0x0e7e, 0x2071, 0x6c6d, 0x7138, 0xa182, 0x0008,
+ 0x0048, 0x294e, 0x7030, 0x2060, 0x0078, 0x295f, 0x7030, 0xa0e0,
+ 0x0008, 0xac82, 0x6cbd, 0x0048, 0x2957, 0x2061, 0x6c7d, 0x2c00,
+ 0x7032, 0x81ff, 0x00c0, 0x295d, 0x7036, 0x8108, 0x713a, 0x2262,
+ 0x6306, 0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e,
+ 0x2071, 0x6c6d, 0x7038, 0xa005, 0x0040, 0x299e, 0x127e, 0x2091,
+ 0x8000, 0x0068, 0x299d, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084,
+ 0x00c0, 0x299c, 0x0c7e, 0x781b, 0x0001, 0x7034, 0x2060, 0x2c04,
+ 0x7822, 0x6004, 0x7826, 0x2091, 0x4080, 0x7038, 0x8001, 0x703a,
+ 0xa005, 0x00c0, 0x2992, 0x7033, 0x6c7d, 0x7037, 0x6c7d, 0x0c7f,
+ 0x0078, 0x299c, 0xac80, 0x0008, 0xa0fa, 0x6cbd, 0x0048, 0x299a,
+ 0x2001, 0x6c7d, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f, 0x007c,
+ 0x027e, 0x2001, 0x6c52, 0x2004, 0xd0c4, 0x0040, 0x29ab, 0x2011,
+ 0x8014, 0x1078, 0x2926, 0x027f, 0x007c, 0x81ff, 0x00c0, 0x2351,
+ 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0x6032, 0x1078, 0x30c9,
+ 0x127f, 0x0078, 0x2327, 0x7824, 0x2008, 0xa18c, 0xfffd, 0x00c0,
+ 0x29c6, 0x61b4, 0xa10d, 0x61b6, 0x0078, 0x2327, 0x0078, 0x2355,
+ 0x81ff, 0x00c0, 0x2351, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2351,
+ 0x2001, 0x6c52, 0x2004, 0xd0a4, 0x00c0, 0x2351, 0x1078, 0x28ef,
+ 0x0040, 0x2355, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
+ 0x29e5, 0x7828, 0xa005, 0x0040, 0x2327, 0x0c7e, 0x1078, 0x28d7,
+ 0x0c7f, 0x0040, 0x2351, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
+ 0xc0fd, 0x683a, 0x1078, 0x612d, 0x0040, 0x2351, 0x7007, 0x0003,
+ 0x701b, 0x29fb, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2351,
+ 0x0078, 0x2327, 0x127e, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071,
+ 0x6c00, 0x6044, 0xd0a4, 0x00c0, 0x2a27, 0xd084, 0x0040, 0x2a14,
+ 0x1078, 0x2b4a, 0x0078, 0x2a27, 0xd08c, 0x0040, 0x2a1b, 0x1078,
+ 0x2a61, 0x0078, 0x2a27, 0xd094, 0x0040, 0x2a22, 0x1078, 0x2a42,
+ 0x0078, 0x2a27, 0xd09c, 0x0040, 0x2a27, 0x1078, 0x2a2b, 0x0e7f,
+ 0x0c7f, 0x127f, 0x007c, 0x6043, 0x0040, 0x6043, 0x0000, 0x7067,
+ 0x0000, 0x707f, 0x0001, 0x709f, 0x0000, 0x2009, 0x71c0, 0x200b,
+ 0x0000, 0x706b, 0x000f, 0x2009, 0x000f, 0x2011, 0x3085, 0x1078,
+ 0x40b6, 0x007c, 0x7068, 0xa005, 0x00c0, 0x2a60, 0x2011, 0x3085,
+ 0x1078, 0x4026, 0x6043, 0x0020, 0x6043, 0x0000, 0x6044, 0xd08c,
+ 0x00c0, 0x2a5c, 0x7003, 0x0001, 0x707b, 0x0000, 0x6043, 0x0090,
+ 0x6043, 0x0010, 0x0078, 0x2a60, 0x706f, 0x0000, 0x0078, 0x2a60,
+ 0x007c, 0x706c, 0xa08a, 0x0003, 0x00c8, 0x2a6a, 0x1079, 0x2a6d,
+ 0x0078, 0x2a6c, 0x1078, 0x126a, 0x007c, 0x2a70, 0x2abf, 0x2b49,
+ 0x0f7e, 0x706f, 0x0001, 0x20e1, 0xa000, 0x20e1, 0x8700, 0x1078,
+ 0x1ce3, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0x7000, 0x207b,
+ 0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813,
+ 0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823,
+ 0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079,
+ 0x700c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0x6c05, 0x20a1,
+ 0x700e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0x7012, 0x207b, 0x0000,
+ 0x7807, 0x0000, 0x2099, 0x7000, 0x20a1, 0x020b, 0x20a9, 0x0014,
+ 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x1078, 0x30b0, 0x0f7f,
+ 0x7073, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x007c, 0x0d7e,
+ 0x7070, 0x7073, 0x0000, 0xa025, 0x0040, 0x2b33, 0x6020, 0xd0b4,
+ 0x00c0, 0x2b31, 0x717c, 0x81ff, 0x0040, 0x2b1a, 0xa486, 0x000c,
+ 0x00c0, 0x2b25, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0x7080,
+ 0x2019, 0x7000, 0x220c, 0x2304, 0xa106, 0x00c0, 0x2af1, 0x8210,
+ 0x8318, 0x00f0, 0x2ada, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f,
+ 0xf0f0, 0x6043, 0x0006, 0x706f, 0x0002, 0x707b, 0x0002, 0x0078,
+ 0x2b31, 0x2069, 0x7080, 0x6930, 0xa18e, 0x1101, 0x00c0, 0x2b25,
+ 0x6834, 0xa005, 0x00c0, 0x2b25, 0x6900, 0xa18c, 0x00ff, 0x00c0,
+ 0x2b05, 0x6804, 0xa005, 0x0040, 0x2b1a, 0x2011, 0x708e, 0x2019,
+ 0x6c05, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0048, 0x2b18,
+ 0x00c0, 0x2b25, 0x8210, 0x8318, 0x00f0, 0x2b0b, 0x0078, 0x2b25,
+ 0x707f, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7080,
+ 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008, 0x6043,
+ 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2b31, 0x60c3, 0x000c, 0x1078,
+ 0x30b0, 0x0d7f, 0x007c, 0x6020, 0xd0b4, 0x00c0, 0x2b31, 0x60c3,
+ 0x000c, 0x2011, 0x6dba, 0x2013, 0x0000, 0x7073, 0x0000, 0x20e1,
+ 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x4e0e, 0x0078,
+ 0x2b31, 0x007c, 0x7078, 0xa08a, 0x001d, 0x00c8, 0x2b53, 0x1079,
+ 0x2b56, 0x0078, 0x2b55, 0x1078, 0x126a, 0x007c, 0x2b7a, 0x2b89,
+ 0x2bba, 0x2bcf, 0x2bff, 0x2c27, 0x2c57, 0x2c81, 0x2cb1, 0x2cd7,
+ 0x2d22, 0x2d44, 0x2d68, 0x2d7e, 0x2da4, 0x2db7, 0x2dc0, 0x2dd9,
+ 0x2e07, 0x2e2f, 0x2e5d, 0x2e87, 0x2ecc, 0x2f01, 0x2f23, 0x2f61,
+ 0x2f85, 0x2f9e, 0x2fab, 0x7003, 0x0007, 0x6004, 0xa084, 0xfff9,
+ 0x6006, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0002,
+ 0x707b, 0x0001, 0x2009, 0x07d0, 0x2011, 0x308c, 0x1078, 0x4019,
+ 0x007c, 0x0f7e, 0x7070, 0xa086, 0x0014, 0x00c0, 0x2bb8, 0x6043,
+ 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2bb8, 0x2079, 0x7080, 0x7a30,
+ 0xa296, 0x1102, 0x00c0, 0x2bb6, 0x7834, 0xa005, 0x00c0, 0x2bb6,
+ 0x7a38, 0xd2fc, 0x0040, 0x2bac, 0x709c, 0xa005, 0x00c0, 0x2bac,
+ 0x1078, 0x3148, 0x709f, 0x0001, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0x707b, 0x0010, 0x1078, 0x2dc0, 0x0078, 0x2bb8, 0x7073, 0x0000,
+ 0x0f7f, 0x007c, 0x707b, 0x0003, 0x6043, 0x0004, 0x1078, 0x3119,
+ 0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000,
+ 0x00f0, 0x2bc6, 0x60c3, 0x0014, 0x1078, 0x30b0, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2bfd, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0xa086, 0x0014, 0x00c0, 0x2bf9, 0x2079, 0x7080, 0x7a30, 0xa296,
+ 0x1102, 0x00c0, 0x2bf9, 0x7834, 0xa005, 0x00c0, 0x2bf9, 0x7a38,
+ 0xd2fc, 0x0040, 0x2bf3, 0x709c, 0xa005, 0x00c0, 0x2bf3, 0x1078,
+ 0x3148, 0x709f, 0x0001, 0x707b, 0x0004, 0x1078, 0x2bff, 0x0078,
+ 0x2bfd, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
+ 0x0005, 0x1078, 0x3119, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
+ 0x2011, 0x708e, 0x7064, 0xa005, 0x00c0, 0x2c19, 0x714c, 0xa186,
+ 0xffff, 0x0040, 0x2c19, 0x1078, 0x3050, 0x0040, 0x2c19, 0x1078,
+ 0x3148, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x30b0, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2c55, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0xa086, 0x0014, 0x00c0, 0x2c51, 0x2079, 0x7080, 0x7a30, 0xa296,
+ 0x1103, 0x00c0, 0x2c51, 0x7834, 0xa005, 0x00c0, 0x2c51, 0x7a38,
+ 0xd2fc, 0x0040, 0x2c4b, 0x709c, 0xa005, 0x00c0, 0x2c4b, 0x1078,
+ 0x3148, 0x709f, 0x0001, 0x707b, 0x0006, 0x1078, 0x2c57, 0x0078,
+ 0x2c55, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
+ 0x0007, 0x1078, 0x3119, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430,
+ 0x2011, 0x708e, 0x7064, 0xa005, 0x00c0, 0x2c73, 0x7150, 0xa186,
+ 0xffff, 0x0040, 0x2c73, 0xa180, 0x2154, 0x200c, 0xa18c, 0xff00,
+ 0x810f, 0x1078, 0x3050, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x30b0,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2caf, 0x2011, 0x308c,
+ 0x1078, 0x4026, 0xa086, 0x0014, 0x00c0, 0x2cab, 0x2079, 0x7080,
+ 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2cab, 0x7834, 0xa005, 0x00c0,
+ 0x2cab, 0x7a38, 0xd2fc, 0x0040, 0x2ca5, 0x709c, 0xa005, 0x00c0,
+ 0x2ca5, 0x1078, 0x3148, 0x709f, 0x0001, 0x707b, 0x0008, 0x1078,
+ 0x2cb1, 0x0078, 0x2caf, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f,
+ 0x007c, 0x707b, 0x0009, 0x1078, 0x3119, 0x20a3, 0x1105, 0x20a3,
+ 0x0100, 0x3430, 0x7064, 0xa005, 0x00c0, 0x2cc4, 0x1078, 0x2fba,
+ 0x0040, 0x2cd4, 0x0078, 0x2cce, 0x20a9, 0x0008, 0x2099, 0x708e,
0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x322e, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2e31,
- 0x2011, 0x320e, 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x2e2d,
- 0x2079, 0x7480, 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2e2d, 0x7834,
- 0xa005, 0x00c0, 0x2e2d, 0x7a38, 0xd2fc, 0x0040, 0x2e27, 0x709c,
- 0xa005, 0x00c0, 0x2e27, 0x1078, 0x32c7, 0x709f, 0x0001, 0x707b,
- 0x0008, 0x1078, 0x2e33, 0x0078, 0x2e31, 0x707b, 0x0002, 0x7073,
- 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0009, 0x1078, 0x3298, 0x20a3,
- 0x1105, 0x20a3, 0x0100, 0x3430, 0x7064, 0xa005, 0x00c0, 0x2e46,
- 0x1078, 0x313c, 0x0040, 0x2e56, 0x0078, 0x2e50, 0x20a9, 0x0008,
- 0x2099, 0x748e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0014, 0x1078, 0x322e, 0x0078, 0x2e58, 0x1078, 0x2cf5,
- 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2ea2, 0x2011, 0x320e,
- 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x2e9e, 0x2079, 0x7480,
- 0x7a30, 0xa296, 0x1105, 0x00c0, 0x2e9e, 0x7834, 0x2011, 0x0100,
- 0xa21e, 0x00c0, 0x2e87, 0x7a38, 0xd2fc, 0x0040, 0x2e7f, 0x709c,
- 0xa005, 0x00c0, 0x2e7f, 0x1078, 0x32c7, 0x709f, 0x0001, 0x7077,
- 0x0001, 0x707b, 0x000a, 0x1078, 0x2ea4, 0x0078, 0x2ea2, 0xa005,
- 0x00c0, 0x2e9e, 0x7a38, 0xd2fc, 0x0040, 0x2e96, 0x709c, 0xa005,
- 0x00c0, 0x2e96, 0x1078, 0x32c7, 0x709f, 0x0001, 0x7077, 0x0000,
- 0x707b, 0x000e, 0x1078, 0x2f26, 0x0078, 0x2ea2, 0x707b, 0x0002,
- 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x000b, 0x2011, 0x740e,
- 0x22a0, 0x20a9, 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002,
- 0x2009, 0x0000, 0x41a4, 0x1078, 0x3298, 0x20a3, 0x1106, 0x20a3,
- 0x0000, 0x6030, 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042,
- 0x53a6, 0x60c3, 0x0084, 0x1078, 0x322e, 0x007c, 0x0f7e, 0x7070,
- 0xa005, 0x0040, 0x2ee8, 0x2011, 0x320e, 0x1078, 0x42aa, 0xa086,
- 0x0084, 0x00c0, 0x2ee4, 0x2079, 0x7480, 0x7a30, 0xa296, 0x1106,
- 0x00c0, 0x2ee4, 0x7834, 0xa005, 0x00c0, 0x2ee4, 0x707b, 0x000c,
- 0x1078, 0x2eea, 0x0078, 0x2ee8, 0x707b, 0x0002, 0x7073, 0x0000,
- 0x0f7f, 0x007c, 0x707b, 0x000d, 0x1078, 0x3298, 0x20a3, 0x1107,
- 0x20a3, 0x0000, 0x2099, 0x748e, 0x20a9, 0x0040, 0x53a6, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078, 0x322e, 0x007c,
- 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2f24, 0x2011, 0x320e, 0x1078,
- 0x42aa, 0xa086, 0x0084, 0x00c0, 0x2f20, 0x2079, 0x7480, 0x7a30,
- 0xa296, 0x1107, 0x00c0, 0x2f20, 0x7834, 0xa005, 0x00c0, 0x2f20,
- 0x1078, 0x328a, 0x707b, 0x000e, 0x1078, 0x2f26, 0x0078, 0x2f24,
- 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x000f,
- 0x7073, 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005,
- 0x6043, 0x0004, 0x2009, 0x07d0, 0x2011, 0x320e, 0x1078, 0x429d,
- 0x007c, 0x7070, 0xa005, 0x0040, 0x2f41, 0x2011, 0x320e, 0x1078,
- 0x42aa, 0x007c, 0x707b, 0x0011, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x2099, 0x7480, 0x20a1, 0x020b, 0x7470, 0xa480, 0x0018, 0xa080,
- 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014,
- 0x1078, 0x322e, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2f87,
- 0x2011, 0x320e, 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x2f85,
- 0x2079, 0x7480, 0x7a30, 0xa296, 0x1103, 0x00c0, 0x2f85, 0x7834,
- 0xa005, 0x00c0, 0x2f85, 0x7a38, 0xd2fc, 0x0040, 0x2f7f, 0x709c,
- 0xa005, 0x00c0, 0x2f7f, 0x1078, 0x32c7, 0x709f, 0x0001, 0x707b,
- 0x0012, 0x1078, 0x2f89, 0x0078, 0x2f87, 0x7073, 0x0000, 0x0f7f,
- 0x007c, 0x707b, 0x0013, 0x1078, 0x32a4, 0x20a3, 0x1103, 0x20a3,
- 0x0000, 0x3430, 0x2011, 0x748e, 0x7064, 0xa005, 0x00c0, 0x2fa3,
- 0x714c, 0xa186, 0xffff, 0x0040, 0x2fa3, 0x1078, 0x31d2, 0x0040,
- 0x2fa3, 0x1078, 0x32c7, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x322e,
- 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2fdd, 0x2011, 0x320e,
- 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x2fdb, 0x2079, 0x7480,
- 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2fdb, 0x7834, 0xa005, 0x00c0,
- 0x2fdb, 0x7a38, 0xd2fc, 0x0040, 0x2fd5, 0x709c, 0xa005, 0x00c0,
- 0x2fd5, 0x1078, 0x32c7, 0x709f, 0x0001, 0x707b, 0x0014, 0x1078,
- 0x2fdf, 0x0078, 0x2fdd, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
- 0x0015, 0x1078, 0x32a4, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430,
- 0x2011, 0x748e, 0x7064, 0xa006, 0x00c0, 0x2ffb, 0x7150, 0xa186,
- 0xffff, 0x0040, 0x2ffb, 0xa180, 0x2207, 0x200c, 0xa18c, 0xff00,
- 0x810f, 0x1078, 0x31d2, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x322e,
- 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x304c, 0x2011, 0x320e,
- 0x1078, 0x42aa, 0xa086, 0x0014, 0x00c0, 0x304a, 0x2079, 0x7480,
- 0x7a30, 0xa296, 0x1105, 0x00c0, 0x304a, 0x7834, 0x2011, 0x0100,
- 0xa21e, 0x00c0, 0x3033, 0x7a38, 0xd2fc, 0x0040, 0x302f, 0x709c,
- 0xa005, 0x00c0, 0x302f, 0x1078, 0x32c7, 0x709f, 0x0001, 0x7077,
- 0x0001, 0x0078, 0x3044, 0xa005, 0x00c0, 0x304a, 0x7a38, 0xd2fc,
- 0x0040, 0x3042, 0x709c, 0xa005, 0x00c0, 0x3042, 0x1078, 0x32c7,
- 0x709f, 0x0001, 0x7077, 0x0000, 0x707b, 0x0016, 0x1078, 0x304e,
- 0x0078, 0x304c, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x2099, 0x7480, 0x20a1, 0x020b, 0x20a9, 0x000e,
- 0x53a6, 0x3430, 0x2011, 0x748e, 0x7074, 0xa005, 0x0040, 0x3064,
- 0x707b, 0x0017, 0x0078, 0x3066, 0x707b, 0x001b, 0x7064, 0xa005,
- 0x00c0, 0x3070, 0x1078, 0x313c, 0x0040, 0x3080, 0x0078, 0x307a,
- 0x20a9, 0x0008, 0x2099, 0x748e, 0x26a0, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x322e, 0x0078, 0x3082,
- 0x1078, 0x2cf5, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x30a3,
- 0x2011, 0x320e, 0x1078, 0x42aa, 0xa086, 0x0084, 0x00c0, 0x30a1,
- 0x2079, 0x7480, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x30a1, 0x7834,
- 0xa005, 0x00c0, 0x30a1, 0x707b, 0x0018, 0x1078, 0x30a5, 0x0078,
- 0x30a3, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0019, 0x1078,
- 0x32a4, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0x748e,
- 0x2039, 0x740e, 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x2728, 0x2514,
- 0x8207, 0xa084, 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007,
- 0xa205, 0x202a, 0x6030, 0x2310, 0x8214, 0xa2a0, 0x740e, 0x2414,
- 0xa38c, 0x0001, 0x0040, 0x30d0, 0xa294, 0xff00, 0x0078, 0x30d3,
- 0xa294, 0x00ff, 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9,
- 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084,
- 0x1078, 0x322e, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x3105,
- 0x2011, 0x320e, 0x1078, 0x42aa, 0xa086, 0x0084, 0x00c0, 0x3103,
- 0x2079, 0x7480, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x3103, 0x7834,
- 0xa005, 0x00c0, 0x3103, 0x1078, 0x328a, 0x707b, 0x001a, 0x1078,
- 0x3107, 0x0078, 0x3105, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
- 0x001b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7480, 0x20a1,
- 0x020b, 0x7470, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8,
- 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0084, 0x1078, 0x322e, 0x007c,
- 0x7070, 0xa005, 0x0040, 0x312c, 0x2011, 0x320e, 0x1078, 0x42aa,
- 0x707b, 0x001c, 0x1078, 0x312d, 0x007c, 0x7073, 0x0000, 0x608b,
- 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0001, 0x2009, 0x07d0, 0x2011,
- 0x320e, 0x1078, 0x429d, 0x007c, 0x087e, 0x097e, 0x2029, 0x7052,
- 0x252c, 0x20a9, 0x0008, 0x2041, 0x740e, 0x28a0, 0x2099, 0x748e,
- 0x53a3, 0x20a9, 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x3152,
- 0x2011, 0x0000, 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0,
- 0x3164, 0xd5d4, 0x0040, 0x315f, 0x8210, 0x0078, 0x3160, 0x8211,
- 0x00f0, 0x3152, 0x0078, 0x31c9, 0x82ff, 0x00c0, 0x3176, 0xd5d4,
- 0x0040, 0x3170, 0xa1a6, 0x3fff, 0x0040, 0x315c, 0x0078, 0x3174,
- 0xa1a6, 0x3fff, 0x0040, 0x31c9, 0xa18d, 0xc000, 0x20a9, 0x0010,
- 0x2019, 0x0001, 0xd5d4, 0x0040, 0x317f, 0x2019, 0x0010, 0x2120,
- 0xd5d4, 0x0040, 0x3186, 0x8423, 0x0078, 0x3187, 0x8424, 0x00c8,
- 0x3194, 0xd5d4, 0x0040, 0x318f, 0x8319, 0x0078, 0x3190, 0x8318,
- 0x00f0, 0x3180, 0x0078, 0x31c9, 0x23a8, 0x2021, 0x0001, 0x8426,
- 0x8425, 0x00f0, 0x3198, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040,
- 0x31ac, 0x007e, 0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8,
- 0xa5a8, 0x0010, 0x00f0, 0x31a8, 0x754e, 0xa5c8, 0x2207, 0x292c,
- 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304,
- 0xa405, 0x201a, 0x7067, 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008,
- 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, 0x0078,
- 0x31cf, 0xa006, 0x0078, 0x31cf, 0xa006, 0x1078, 0x1288, 0x097f,
- 0x087f, 0x007c, 0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a,
- 0x0010, 0x0048, 0x31df, 0x8420, 0x8001, 0x0078, 0x31d7, 0x2118,
- 0x84ff, 0x0040, 0x31e8, 0xa39a, 0x0010, 0x8421, 0x00c0, 0x31e3,
- 0x2021, 0x0001, 0x83ff, 0x0040, 0x31f1, 0x8423, 0x8319, 0x00c0,
- 0x31ed, 0xa238, 0x2704, 0xa42c, 0x00c0, 0x3206, 0xa405, 0x203a,
- 0x714e, 0xa1a0, 0x2207, 0x242c, 0xa5ac, 0x00ff, 0x6532, 0x60e7,
- 0x0000, 0x65ea, 0x7067, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e,
- 0x2071, 0x7000, 0x706b, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e,
- 0x2079, 0x0100, 0x2071, 0x0140, 0x1078, 0x50b0, 0x7004, 0xa084,
- 0x4000, 0x0040, 0x321f, 0x7003, 0x1000, 0x7003, 0x0000, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x701e, 0x2073, 0x0000, 0x7843, 0x0090,
- 0x7843, 0x0010, 0x127f, 0x0f7f, 0x0e7f, 0x007c, 0x127e, 0x2091,
- 0x8000, 0x2011, 0x71c0, 0x2013, 0x0000, 0x7073, 0x0000, 0x127f,
- 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x50a7,
- 0x2009, 0x07d0, 0x2011, 0x320e, 0x1078, 0x433a, 0x007c, 0x017e,
- 0x027e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x2009, 0x00f7, 0x1078,
- 0x32b0, 0x2061, 0x71c9, 0x601b, 0x0000, 0x601f, 0x0000, 0x2061,
- 0x7000, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043, 0x0090, 0x6043,
- 0x0010, 0x2009, 0x001e, 0x2011, 0x326c, 0x1078, 0x429d, 0x127f,
- 0x0c7f, 0x027f, 0x017f, 0x007c, 0x0e7e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x2071, 0x0100, 0x1078, 0x50b0, 0x2071, 0x0140, 0x7004,
- 0xa084, 0x4000, 0x0040, 0x3280, 0x7003, 0x1000, 0x7003, 0x0000,
- 0x2001, 0x0001, 0x1078, 0x1f8a, 0x1078, 0x3247, 0x127f, 0x007f,
- 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0x75c0, 0x2099, 0x748e,
- 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x3290, 0x007c,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7400, 0x20a1, 0x020b,
- 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x2099, 0x7480, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c,
- 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001, 0x702a, 0x2004,
- 0xa005, 0x00c0, 0x32c1, 0x6030, 0xa084, 0x00ff, 0xa105, 0x0078,
- 0x32c3, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f, 0x007c, 0x017e,
- 0x047e, 0x2001, 0x7052, 0x2004, 0xd0a4, 0x0040, 0x32da, 0xa006,
- 0x2020, 0x2009, 0x002a, 0x1078, 0x6ecf, 0x2001, 0x700c, 0x200c,
- 0xc195, 0x2102, 0x2019, 0x002a, 0x1078, 0x2186, 0x047f, 0x017f,
- 0x007c, 0x157e, 0x20a9, 0x007d, 0x2009, 0x7120, 0xa006, 0x200a,
- 0x8108, 0x00f0, 0x32e7, 0x157f, 0x007c, 0x0d7e, 0x037e, 0x157e,
- 0x137e, 0x147e, 0x2069, 0x7051, 0xa006, 0x6002, 0x6007, 0x0707,
- 0x600a, 0x600e, 0x6012, 0xa198, 0x2207, 0x231c, 0xa39c, 0x00ff,
- 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4, 0x20a9,
- 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042, 0x604e,
- 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, 0x606a, 0x606e,
- 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, 0x608a, 0x608e,
- 0x6092, 0x6096, 0x609a, 0x609e, 0x61a2, 0x0d7e, 0x60a4, 0xa06d,
- 0x0040, 0x332c, 0x1078, 0x12fb, 0x60a7, 0x0000, 0x60a8, 0xa06d,
- 0x0040, 0x3334, 0x1078, 0x12fb, 0x60ab, 0x0000, 0x0d7f, 0xa006,
- 0x604a, 0x6810, 0x603a, 0x680c, 0x6046, 0x6814, 0xa084, 0x00ff,
- 0x6042, 0x147f, 0x137f, 0x157f, 0x037f, 0x0d7f, 0x007c, 0x127e,
- 0x2091, 0x8000, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000,
- 0x00c8, 0x33e5, 0xa18c, 0xff00, 0x810f, 0xa182, 0x007e, 0x00c8,
- 0x33eb, 0x2001, 0x700c, 0x2004, 0xa084, 0x0003, 0x00c0, 0x33ce,
- 0xa188, 0x7120, 0x2104, 0xa065, 0x0040, 0x33c4, 0x6004, 0xa084,
- 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x33ca, 0x60a4, 0xa00d, 0x0040,
- 0x3375, 0x1078, 0x370a, 0x0040, 0x33be, 0x60a8, 0xa00d, 0x0040,
- 0x338f, 0x1078, 0x375a, 0x00c0, 0x338f, 0x694c, 0xd1fc, 0x00c0,
- 0x3385, 0x1078, 0x347f, 0x0078, 0x33b9, 0x1078, 0x3450, 0x694c,
- 0xd1ec, 0x00c0, 0x33b9, 0x1078, 0x35df, 0x0078, 0x33b9, 0x694c,
- 0xa184, 0xa000, 0x0040, 0x33a9, 0xd1ec, 0x0040, 0x33a2, 0xd1fc,
- 0x0040, 0x339e, 0x1078, 0x35f0, 0x0078, 0x33a5, 0x1078, 0x35f0,
- 0x0078, 0x33a9, 0xd1fc, 0x0040, 0x33a9, 0x1078, 0x3450, 0x0078,
- 0x33b9, 0x6050, 0xa00d, 0x0040, 0x33b4, 0x2d00, 0x200a, 0x6803,
- 0x0000, 0x6052, 0x0078, 0x33b9, 0x2d00, 0x6052, 0x604e, 0x6803,
- 0x0000, 0x1078, 0x4581, 0xa006, 0x127f, 0x007c, 0x2001, 0x0005,
- 0x2009, 0x0000, 0x0078, 0x33ef, 0x2001, 0x0028, 0x2009, 0x0000,
- 0x0078, 0x33ef, 0xa082, 0x0006, 0x0048, 0x336d, 0x2009, 0x700c,
- 0x210c, 0xd18c, 0x0040, 0x33d8, 0x2001, 0x0004, 0x0078, 0x33e1,
- 0xd184, 0x0040, 0x33df, 0x2001, 0x0004, 0x0078, 0x33e1, 0x2001,
- 0x0029, 0x2009, 0x0000, 0x0078, 0x33ef, 0x2001, 0x0029, 0x2009,
- 0x0000, 0x0078, 0x33ef, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005,
- 0x127f, 0x007c, 0x6944, 0x6e48, 0xa684, 0x3fff, 0xa082, 0x4000,
- 0x00c8, 0x3435, 0xa18c, 0xff00, 0x810f, 0xa182, 0x007e, 0x00c8,
- 0x3425, 0xa188, 0x7120, 0x2104, 0xa065, 0x0040, 0x3425, 0x6004,
- 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x342b, 0x684c, 0xd0ec,
- 0x0040, 0x3418, 0x1078, 0x35f0, 0x1078, 0x3450, 0x0078, 0x3420,
- 0x1078, 0x3450, 0x684c, 0xd0fc, 0x0040, 0x3420, 0x1078, 0x35df,
- 0x1078, 0x3638, 0xa006, 0x0078, 0x3439, 0x2001, 0x0028, 0x2009,
- 0x0000, 0x0078, 0x3439, 0xa082, 0x0006, 0x0048, 0x340e, 0x2001,
- 0x0029, 0x2009, 0x0000, 0x0078, 0x3439, 0x2001, 0x0029, 0x2009,
- 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, 0x6050, 0xa00d,
- 0x0040, 0x3449, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x127f,
- 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x3447,
- 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x345c, 0x6802,
- 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803,
- 0x0000, 0x0078, 0x345a, 0x127e, 0x2091, 0x8000, 0x604c, 0xa06d,
- 0x0040, 0x3471, 0x6800, 0xa005, 0x00c0, 0x346f, 0x6052, 0x604e,
- 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x347e, 0x6800,
- 0xa005, 0x00c0, 0x347c, 0x6052, 0x604e, 0xad05, 0x007c, 0x6803,
- 0x0000, 0x6084, 0xa00d, 0x0040, 0x3489, 0x2d00, 0x200a, 0x6086,
- 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x3488, 0x127e, 0x0c7e,
- 0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005, 0x0040,
- 0x349c, 0xc285, 0x0078, 0x349d, 0xc284, 0x6202, 0x027f, 0x0c7f,
- 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260,
- 0x6204, 0xa294, 0xff00, 0xa215, 0x6206, 0x0c7f, 0x127f, 0x007c,
- 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0xa294,
- 0x00ff, 0x8007, 0xa215, 0x6206, 0x0c7f, 0x127f, 0x007c, 0x027e,
- 0xa182, 0x007e, 0x0048, 0x34c8, 0xa085, 0x0001, 0x0078, 0x34e0,
- 0xa190, 0x7120, 0x2204, 0xa065, 0x00c0, 0x34df, 0x017e, 0x0d7e,
- 0x1078, 0x12c7, 0x2d60, 0x0d7f, 0x017f, 0x0040, 0x34c4, 0x2c00,
- 0x2012, 0x60a7, 0x0000, 0x60ab, 0x0000, 0x1078, 0x32ed, 0xa006,
- 0x027f, 0x007c, 0x027e, 0xa182, 0x007e, 0x0048, 0x34eb, 0xa085,
- 0x0001, 0x0078, 0x34f8, 0x0d7e, 0xa190, 0x7120, 0x2204, 0xa06d,
- 0x0040, 0x34f6, 0x2013, 0x0000, 0x1078, 0x12fb, 0x0d7f, 0xa006,
- 0x027f, 0x007c, 0x017e, 0xa182, 0x007e, 0x0048, 0x3503, 0xa085,
- 0x0001, 0x0078, 0x350a, 0xa188, 0x7120, 0x2104, 0xa065, 0x0040,
- 0x34ff, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
+ 0x1078, 0x30b0, 0x0078, 0x2cd6, 0x1078, 0x2b73, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2d20, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0xa086, 0x0014, 0x00c0, 0x2d1c, 0x2079, 0x7080, 0x7a30, 0xa296,
+ 0x1105, 0x00c0, 0x2d1c, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0,
+ 0x2d05, 0x7a38, 0xd2fc, 0x0040, 0x2cfd, 0x709c, 0xa005, 0x00c0,
+ 0x2cfd, 0x1078, 0x3148, 0x709f, 0x0001, 0x7077, 0x0001, 0x707b,
+ 0x000a, 0x1078, 0x2d22, 0x0078, 0x2d20, 0xa005, 0x00c0, 0x2d1c,
+ 0x7a38, 0xd2fc, 0x0040, 0x2d14, 0x709c, 0xa005, 0x00c0, 0x2d14,
+ 0x1078, 0x3148, 0x709f, 0x0001, 0x7077, 0x0000, 0x707b, 0x000e,
+ 0x1078, 0x2da4, 0x0078, 0x2d20, 0x707b, 0x0002, 0x7073, 0x0000,
+ 0x0f7f, 0x007c, 0x707b, 0x000b, 0x2011, 0x700e, 0x22a0, 0x20a9,
+ 0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000,
+ 0x41a4, 0x1078, 0x3119, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x6030,
+ 0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3,
+ 0x0084, 0x1078, 0x30b0, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040,
+ 0x2d66, 0x2011, 0x308c, 0x1078, 0x4026, 0xa086, 0x0084, 0x00c0,
+ 0x2d62, 0x2079, 0x7080, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x2d62,
+ 0x7834, 0xa005, 0x00c0, 0x2d62, 0x707b, 0x000c, 0x1078, 0x2d68,
+ 0x0078, 0x2d66, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c,
+ 0x707b, 0x000d, 0x1078, 0x3119, 0x20a3, 0x1107, 0x20a3, 0x0000,
+ 0x2099, 0x708e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x0084, 0x1078, 0x30b0, 0x007c, 0x0f7e, 0x7070,
+ 0xa005, 0x0040, 0x2da2, 0x2011, 0x308c, 0x1078, 0x4026, 0xa086,
+ 0x0084, 0x00c0, 0x2d9e, 0x2079, 0x7080, 0x7a30, 0xa296, 0x1107,
+ 0x00c0, 0x2d9e, 0x7834, 0xa005, 0x00c0, 0x2d9e, 0x1078, 0x310b,
+ 0x707b, 0x000e, 0x1078, 0x2da4, 0x0078, 0x2da2, 0x707b, 0x0002,
+ 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x000f, 0x7073, 0x0000,
+ 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004,
+ 0x2009, 0x07d0, 0x2011, 0x308c, 0x1078, 0x4019, 0x007c, 0x7070,
+ 0xa005, 0x0040, 0x2dbf, 0x2011, 0x308c, 0x1078, 0x4026, 0x007c,
+ 0x707b, 0x0011, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7080,
+ 0x20a1, 0x020b, 0x7470, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084,
+ 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x1078, 0x30b0,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2e05, 0x2011, 0x308c,
+ 0x1078, 0x4026, 0xa086, 0x0014, 0x00c0, 0x2e03, 0x2079, 0x7080,
+ 0x7a30, 0xa296, 0x1103, 0x00c0, 0x2e03, 0x7834, 0xa005, 0x00c0,
+ 0x2e03, 0x7a38, 0xd2fc, 0x0040, 0x2dfd, 0x709c, 0xa005, 0x00c0,
+ 0x2dfd, 0x1078, 0x3148, 0x709f, 0x0001, 0x707b, 0x0012, 0x1078,
+ 0x2e07, 0x0078, 0x2e05, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
+ 0x0013, 0x1078, 0x3125, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
+ 0x2011, 0x708e, 0x7064, 0xa005, 0x00c0, 0x2e21, 0x714c, 0xa186,
+ 0xffff, 0x0040, 0x2e21, 0x1078, 0x3050, 0x0040, 0x2e21, 0x1078,
+ 0x3148, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x30b0, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2e5b, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0xa086, 0x0014, 0x00c0, 0x2e59, 0x2079, 0x7080, 0x7a30, 0xa296,
+ 0x1104, 0x00c0, 0x2e59, 0x7834, 0xa005, 0x00c0, 0x2e59, 0x7a38,
+ 0xd2fc, 0x0040, 0x2e53, 0x709c, 0xa005, 0x00c0, 0x2e53, 0x1078,
+ 0x3148, 0x709f, 0x0001, 0x707b, 0x0014, 0x1078, 0x2e5d, 0x0078,
+ 0x2e5b, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0015, 0x1078,
+ 0x3125, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x708e,
+ 0x7064, 0xa006, 0x00c0, 0x2e79, 0x7150, 0xa186, 0xffff, 0x0040,
+ 0x2e79, 0xa180, 0x2154, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078,
+ 0x3050, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x30b0, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2eca, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0xa086, 0x0014, 0x00c0, 0x2ec8, 0x2079, 0x7080, 0x7a30, 0xa296,
+ 0x1105, 0x00c0, 0x2ec8, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0,
+ 0x2eb1, 0x7a38, 0xd2fc, 0x0040, 0x2ead, 0x709c, 0xa005, 0x00c0,
+ 0x2ead, 0x1078, 0x3148, 0x709f, 0x0001, 0x7077, 0x0001, 0x0078,
+ 0x2ec2, 0xa005, 0x00c0, 0x2ec8, 0x7a38, 0xd2fc, 0x0040, 0x2ec0,
+ 0x709c, 0xa005, 0x00c0, 0x2ec0, 0x1078, 0x3148, 0x709f, 0x0001,
+ 0x7077, 0x0000, 0x707b, 0x0016, 0x1078, 0x2ecc, 0x0078, 0x2eca,
+ 0x7073, 0x0000, 0x0f7f, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x2099, 0x7080, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430,
+ 0x2011, 0x708e, 0x7074, 0xa005, 0x0040, 0x2ee2, 0x707b, 0x0017,
+ 0x0078, 0x2ee4, 0x707b, 0x001b, 0x7064, 0xa005, 0x00c0, 0x2eee,
+ 0x1078, 0x2fba, 0x0040, 0x2efe, 0x0078, 0x2ef8, 0x20a9, 0x0008,
+ 0x2099, 0x708e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x60c3, 0x0014, 0x1078, 0x30b0, 0x0078, 0x2f00, 0x1078, 0x2b73,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2f21, 0x2011, 0x308c,
+ 0x1078, 0x4026, 0xa086, 0x0084, 0x00c0, 0x2f1f, 0x2079, 0x7080,
+ 0x7a30, 0xa296, 0x1106, 0x00c0, 0x2f1f, 0x7834, 0xa005, 0x00c0,
+ 0x2f1f, 0x707b, 0x0018, 0x1078, 0x2f23, 0x0078, 0x2f21, 0x7073,
+ 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0019, 0x1078, 0x3125, 0x20a3,
+ 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0x708e, 0x2039, 0x700e,
+ 0x27a0, 0x20a9, 0x0040, 0x53a3, 0x2728, 0x2514, 0x8207, 0xa084,
+ 0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a,
+ 0x6030, 0x2310, 0x8214, 0xa2a0, 0x700e, 0x2414, 0xa38c, 0x0001,
+ 0x0040, 0x2f4e, 0xa294, 0xff00, 0x0078, 0x2f51, 0xa294, 0x00ff,
+ 0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078, 0x30b0,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2f83, 0x2011, 0x308c,
+ 0x1078, 0x4026, 0xa086, 0x0084, 0x00c0, 0x2f81, 0x2079, 0x7080,
+ 0x7a30, 0xa296, 0x1107, 0x00c0, 0x2f81, 0x7834, 0xa005, 0x00c0,
+ 0x2f81, 0x1078, 0x310b, 0x707b, 0x001a, 0x1078, 0x2f85, 0x0078,
+ 0x2f83, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x001b, 0x20e1,
+ 0x9080, 0x20e1, 0x4000, 0x2099, 0x7080, 0x20a1, 0x020b, 0x7470,
+ 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8,
+ 0x53a6, 0x60c3, 0x0084, 0x1078, 0x30b0, 0x007c, 0x7070, 0xa005,
+ 0x0040, 0x2faa, 0x2011, 0x308c, 0x1078, 0x4026, 0x707b, 0x001c,
+ 0x1078, 0x2fab, 0x007c, 0x7073, 0x0000, 0x608b, 0xbc85, 0x608f,
+ 0xb5b5, 0x6043, 0x0001, 0x2009, 0x07d0, 0x2011, 0x308c, 0x1078,
+ 0x4019, 0x007c, 0x087e, 0x097e, 0x2029, 0x6c52, 0x252c, 0x20a9,
+ 0x0008, 0x2041, 0x700e, 0x28a0, 0x2099, 0x708e, 0x53a3, 0x20a9,
+ 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x2fd0, 0x2011, 0x0000,
+ 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0, 0x2fe2, 0xd5d4,
+ 0x0040, 0x2fdd, 0x8210, 0x0078, 0x2fde, 0x8211, 0x00f0, 0x2fd0,
+ 0x0078, 0x3047, 0x82ff, 0x00c0, 0x2ff4, 0xd5d4, 0x0040, 0x2fee,
+ 0xa1a6, 0x3fff, 0x0040, 0x2fda, 0x0078, 0x2ff2, 0xa1a6, 0x3fff,
+ 0x0040, 0x3047, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001,
+ 0xd5d4, 0x0040, 0x2ffd, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0040,
+ 0x3004, 0x8423, 0x0078, 0x3005, 0x8424, 0x00c8, 0x3012, 0xd5d4,
+ 0x0040, 0x300d, 0x8319, 0x0078, 0x300e, 0x8318, 0x00f0, 0x2ffe,
+ 0x0078, 0x3047, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x00f0,
+ 0x3016, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040, 0x302a, 0x007e,
+ 0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8, 0xa5a8, 0x0010,
+ 0x00f0, 0x3026, 0x754e, 0xa5c8, 0x2154, 0x292c, 0xa5ac, 0x00ff,
+ 0x6532, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a,
+ 0x7067, 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, 0x0078, 0x304d, 0xa006,
+ 0x0078, 0x304d, 0xa006, 0x1078, 0x126a, 0x097f, 0x087f, 0x007c,
+ 0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a, 0x0010, 0x0048,
+ 0x305d, 0x8420, 0x8001, 0x0078, 0x3055, 0x2118, 0x84ff, 0x0040,
+ 0x3066, 0xa39a, 0x0010, 0x8421, 0x00c0, 0x3061, 0x2021, 0x0001,
+ 0x83ff, 0x0040, 0x306f, 0x8423, 0x8319, 0x00c0, 0x306b, 0xa238,
+ 0x2704, 0xa42c, 0x00c0, 0x3084, 0xa405, 0x203a, 0x714e, 0xa1a0,
+ 0x2154, 0x242c, 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea,
+ 0x7067, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x6c00,
+ 0x706b, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2079, 0x0100,
+ 0x2071, 0x0140, 0x1078, 0x4e17, 0x7004, 0xa084, 0x4000, 0x0040,
+ 0x309d, 0x7003, 0x1000, 0x7003, 0x0000, 0x127e, 0x2091, 0x8000,
+ 0x2071, 0x6c00, 0x7003, 0x0001, 0x2071, 0x6c1e, 0x2073, 0x0000,
+ 0x7843, 0x0090, 0x7843, 0x0010, 0x127f, 0x0f7f, 0x0e7f, 0x007c,
+ 0x127e, 0x2091, 0x8000, 0x2011, 0x6dba, 0x2013, 0x0000, 0x7073,
+ 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
+ 0x1078, 0x4e0e, 0x2009, 0x07d0, 0x2011, 0x308c, 0x1078, 0x40b6,
+ 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x2009,
+ 0x00f7, 0x1078, 0x3131, 0x2061, 0x6dc3, 0x601b, 0x0000, 0x601f,
+ 0x0000, 0x2061, 0x6c00, 0x6003, 0x0001, 0x2061, 0x0100, 0x6043,
+ 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x30ee, 0x1078,
+ 0x4019, 0x127f, 0x0c7f, 0x027f, 0x017f, 0x007c, 0x0e7e, 0x007e,
+ 0x127e, 0x2091, 0x8000, 0x2071, 0x0100, 0x1078, 0x4e17, 0x2071,
+ 0x0140, 0xa084, 0x4000, 0x0040, 0x3101, 0x7003, 0x1000, 0x7003,
+ 0x0000, 0x2001, 0x0001, 0x1078, 0x1f0f, 0x1078, 0x30c9, 0x127f,
+ 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040, 0x20a1, 0x71c0, 0x2099,
+ 0x708e, 0x3304, 0x8007, 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x3111,
+ 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7000, 0x20a1,
+ 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1,
+ 0x4000, 0x2099, 0x7080, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6,
+ 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100, 0x810f, 0x2001, 0x6c2a,
+ 0x2004, 0xa005, 0x00c0, 0x3142, 0x6030, 0xa084, 0x00ff, 0xa105,
+ 0x0078, 0x3144, 0xa185, 0x00f7, 0x604a, 0x007f, 0x0c7f, 0x007c,
+ 0x017e, 0x047e, 0x2001, 0x6c52, 0x2004, 0xd0a4, 0x0040, 0x315b,
+ 0xa006, 0x2020, 0x2009, 0x002a, 0x1078, 0x6b0a, 0x2001, 0x6c0c,
+ 0x200c, 0xc195, 0x2102, 0x2019, 0x002a, 0x1078, 0x2103, 0x047f,
+ 0x017f, 0x007c, 0x157e, 0x20a9, 0x007d, 0x2009, 0x6d20, 0xa006,
+ 0x200a, 0x8108, 0x00f0, 0x3168, 0x157f, 0x007c, 0x0d7e, 0x037e,
+ 0x157e, 0x137e, 0x147e, 0x2069, 0x6c51, 0xa006, 0x6002, 0x6007,
+ 0x0707, 0x600a, 0x600e, 0x6012, 0xa198, 0x2154, 0x231c, 0xa39c,
+ 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4,
+ 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042,
+ 0x604e, 0x6052, 0x6056, 0x605a, 0x605e, 0x6062, 0x6066, 0x606a,
+ 0x606e, 0x6072, 0x6076, 0x607a, 0x607e, 0x6082, 0x6086, 0x608a,
+ 0x608e, 0x6092, 0x6096, 0x609a, 0x609e, 0x61a2, 0x604a, 0x6810,
+ 0x603a, 0x680c, 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x147f,
+ 0x137f, 0x157f, 0x037f, 0x0d7f, 0x007c, 0x127e, 0x2091, 0x8000,
+ 0x6944, 0xa1b4, 0x00ff, 0xa682, 0x0010, 0x00c8, 0x325a, 0xa18c,
+ 0xff00, 0x810f, 0xa182, 0x007e, 0x00c8, 0x3260, 0x2001, 0x6c0c,
+ 0x2004, 0xa084, 0x0003, 0x00c0, 0x3243, 0xa188, 0x6d20, 0x2104,
+ 0xa065, 0x0040, 0x3239, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006,
+ 0x00c0, 0x323f, 0x6078, 0xa00d, 0x0040, 0x31e4, 0xa680, 0x6b9e,
+ 0x2004, 0xa10c, 0x00c0, 0x3233, 0x607c, 0xa00d, 0x0040, 0x3200,
+ 0xa680, 0x6b9e, 0x2004, 0xa10c, 0x0040, 0x3200, 0x694c, 0xd1fc,
+ 0x00c0, 0x31f6, 0x1078, 0x32f3, 0x0078, 0x322e, 0x1078, 0x32c4,
+ 0x694c, 0xd1ec, 0x00c0, 0x322e, 0x1078, 0x3413, 0x0078, 0x322e,
+ 0x694c, 0xa184, 0xa000, 0x0040, 0x321e, 0xd1ec, 0x0040, 0x3217,
+ 0xd1fc, 0x0040, 0x320f, 0x1078, 0x342a, 0x0078, 0x321a, 0xa680,
+ 0x6b9e, 0x200c, 0x607c, 0xa105, 0x607e, 0x0078, 0x321e, 0xd1fc,
+ 0x0040, 0x321e, 0x1078, 0x32c4, 0x0078, 0x322e, 0x6050, 0xa00d,
+ 0x0040, 0x3229, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0078,
+ 0x322e, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x1078, 0x42e3,
+ 0xa006, 0x127f, 0x007c, 0x2001, 0x0005, 0x2009, 0x0000, 0x0078,
+ 0x3264, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x3264, 0xa082,
+ 0x0006, 0x0048, 0x31da, 0x2009, 0x6c0c, 0x210c, 0xd18c, 0x0040,
+ 0x324d, 0x2001, 0x0004, 0x0078, 0x3256, 0xd184, 0x0040, 0x3254,
+ 0x2001, 0x0004, 0x0078, 0x3256, 0x2001, 0x0029, 0x2009, 0x0000,
+ 0x0078, 0x3264, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x3264,
+ 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x127f, 0x007c, 0x6944,
+ 0xa1b4, 0x00ff, 0xa682, 0x0010, 0x00c8, 0x32a9, 0xa18c, 0xff00,
+ 0x810f, 0xa182, 0x007e, 0x00c8, 0x3299, 0xa188, 0x6d20, 0x2104,
+ 0xa065, 0x0040, 0x3299, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006,
+ 0x00c0, 0x329f, 0x684c, 0xd0ec, 0x0040, 0x328c, 0x1078, 0x342a,
+ 0x1078, 0x32c4, 0x0078, 0x3294, 0x1078, 0x32c4, 0x684c, 0xd0fc,
+ 0x0040, 0x3294, 0x1078, 0x3413, 0x1078, 0x343e, 0xa006, 0x0078,
+ 0x32ad, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x32ad, 0xa082,
+ 0x0006, 0x0048, 0x3282, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078,
+ 0x32ad, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x007c, 0x127e,
+ 0x2091, 0x8000, 0x6050, 0xa00d, 0x0040, 0x32bd, 0x2d00, 0x200a,
+ 0x6803, 0x0000, 0x6052, 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e,
+ 0x6803, 0x0000, 0x0078, 0x32bb, 0x127e, 0x2091, 0x8000, 0x604c,
+ 0xa005, 0x0040, 0x32d0, 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c,
+ 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x32ce, 0x127e,
+ 0x2091, 0x8000, 0x604c, 0xa06d, 0x0040, 0x32e5, 0x6800, 0xa005,
+ 0x00c0, 0x32e3, 0x6052, 0x604e, 0xad05, 0x127f, 0x007c, 0x604c,
+ 0xa06d, 0x0040, 0x32f2, 0x6800, 0xa005, 0x00c0, 0x32f0, 0x6052,
+ 0x604e, 0xad05, 0x007c, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0040,
+ 0x32fd, 0x2d00, 0x200a, 0x6086, 0x007c, 0x2d00, 0x6086, 0x6082,
+ 0x0078, 0x32fc, 0x127e, 0x0c7e, 0x027e, 0x2091, 0x8000, 0x6218,
+ 0x2260, 0x6200, 0xa005, 0x0040, 0x3310, 0xc285, 0x0078, 0x3311,
+ 0xc284, 0x6202, 0x027f, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e,
+ 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0xa294, 0xff00, 0xa215,
+ 0x6206, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000,
+ 0x6218, 0x2260, 0x6204, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206,
+ 0x0c7f, 0x127f, 0x007c, 0x027e, 0xa182, 0x007e, 0x0048, 0x333c,
+ 0xa085, 0x0001, 0x0078, 0x3350, 0xa190, 0x6d20, 0x2204, 0xa065,
+ 0x00c0, 0x334f, 0x017e, 0x0d7e, 0x1078, 0x12a7, 0x2d60, 0x0d7f,
+ 0x017f, 0x0040, 0x3338, 0x2c00, 0x2012, 0x1078, 0x316e, 0xa006,
+ 0x027f, 0x007c, 0x027e, 0xa182, 0x007e, 0x0048, 0x335b, 0xa085,
+ 0x0001, 0x0078, 0x3368, 0x0d7e, 0xa190, 0x6d20, 0x2204, 0xa06d,
+ 0x0040, 0x3366, 0x2013, 0x0000, 0x1078, 0x12db, 0x0d7f, 0xa006,
+ 0x027f, 0x007c, 0x017e, 0xa182, 0x007e, 0x0048, 0x3373, 0xa085,
+ 0x0001, 0x0078, 0x337a, 0xa188, 0x6d20, 0x2104, 0xa065, 0x0040,
+ 0x336f, 0xa006, 0x017f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
0x600b, 0x0000, 0x600f, 0x0000, 0x6000, 0xc08c, 0x6002, 0x2069,
- 0x748e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, 0xa10a, 0x0048,
- 0x3522, 0x603a, 0x6814, 0x6066, 0x2099, 0x7496, 0xac88, 0x000a,
- 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0x749a, 0xac88, 0x0006,
- 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0x74ae, 0x6808, 0x606a,
- 0x690c, 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, 0xa182, 0x0211,
- 0x00c8, 0x3546, 0x2009, 0x0008, 0x0078, 0x3570, 0xa182, 0x0259,
- 0x00c8, 0x354e, 0x2009, 0x0007, 0x0078, 0x3570, 0xa182, 0x02c1,
- 0x00c8, 0x3556, 0x2009, 0x0006, 0x0078, 0x3570, 0xa182, 0x0349,
- 0x00c8, 0x355e, 0x2009, 0x0005, 0x0078, 0x3570, 0xa182, 0x0421,
- 0x00c8, 0x3566, 0x2009, 0x0004, 0x0078, 0x3570, 0xa182, 0x0581,
- 0x00c8, 0x356e, 0x2009, 0x0003, 0x0078, 0x3570, 0x2009, 0x0002,
- 0x6192, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x0e7e, 0x2071,
- 0x748d, 0x2e04, 0x6896, 0x2071, 0x748e, 0x7004, 0x689a, 0x701c,
- 0x689e, 0x0e7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4,
- 0xa06d, 0x0040, 0x35a7, 0x6900, 0x81ff, 0x00c0, 0x35bb, 0x6a04,
- 0xa282, 0x0010, 0x00c8, 0x35c0, 0xad88, 0x0004, 0x20a9, 0x0010,
- 0x2104, 0xa086, 0xffff, 0x0040, 0x35a2, 0x8108, 0x00f0, 0x3598,
- 0x1078, 0x1288, 0x260a, 0x8210, 0x6a06, 0x0078, 0x35bb, 0x1078,
- 0x12c7, 0x0040, 0x35c0, 0x2d00, 0x60a6, 0x6803, 0x0000, 0xad88,
- 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0, 0x35b3,
- 0x6807, 0x0001, 0x6e12, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c,
- 0xa006, 0x0078, 0x35bd, 0x127e, 0x2091, 0x8000, 0x1078, 0x3703,
- 0x00c0, 0x35dd, 0x200b, 0xffff, 0x0d7e, 0x60a4, 0x2068, 0x6804,
- 0xa08a, 0x0002, 0x0048, 0x35d8, 0x8001, 0x6806, 0x0078, 0x35dc,
- 0x1078, 0x12fb, 0x60a7, 0x0000, 0x0d7f, 0x127f, 0x007c, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x376f, 0x0078, 0x35e8, 0x1078, 0x343b,
- 0x1078, 0x367c, 0x00c0, 0x35e6, 0x1078, 0x3638, 0x127f, 0x007c,
- 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a8, 0xa06d, 0x0040, 0x3614,
- 0x6950, 0x81ff, 0x00c0, 0x3628, 0x6a54, 0xa282, 0x0010, 0x00c8,
- 0x3635, 0xad88, 0x0018, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff,
- 0x0040, 0x360f, 0x8108, 0x00f0, 0x3605, 0x1078, 0x1288, 0x260a,
- 0x8210, 0x6a56, 0x0078, 0x3628, 0x1078, 0x12c7, 0x0040, 0x3635,
- 0x2d00, 0x60aa, 0x6853, 0x0000, 0xad88, 0x0018, 0x20a9, 0x0010,
- 0x200b, 0xffff, 0x8108, 0x00f0, 0x3620, 0x6857, 0x0001, 0x6e62,
- 0x0078, 0x362c, 0x1078, 0x347f, 0x1078, 0x3642, 0x00c0, 0x362a,
- 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x3632,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x4581, 0x127f, 0x007c, 0xa01e,
- 0x0078, 0x3644, 0x2019, 0x0001, 0xa00e, 0x127e, 0x2091, 0x8000,
- 0x604c, 0x2068, 0x6000, 0xd0dc, 0x00c0, 0x3662, 0x8dff, 0x0040,
- 0x3677, 0x83ff, 0x0040, 0x365a, 0x6848, 0xa606, 0x0040, 0x3667,
- 0x0078, 0x3662, 0x683c, 0xa406, 0x00c0, 0x3662, 0x6840, 0xa506,
- 0x0040, 0x3667, 0x2d08, 0x6800, 0x2068, 0x0078, 0x364e, 0x6a00,
- 0x604c, 0xad06, 0x00c0, 0x366f, 0x624e, 0x0078, 0x3672, 0xa180,
- 0x0000, 0x2202, 0x82ff, 0x00c0, 0x3677, 0x6152, 0x8dff, 0x127f,
- 0x007c, 0xa01e, 0x0078, 0x367e, 0x2019, 0x0001, 0xa00e, 0x6080,
- 0x2068, 0x8dff, 0x0040, 0x36aa, 0x83ff, 0x0040, 0x368d, 0x6848,
- 0xa606, 0x0040, 0x369a, 0x0078, 0x3695, 0x683c, 0xa406, 0x00c0,
- 0x3695, 0x6840, 0xa506, 0x0040, 0x369a, 0x2d08, 0x6800, 0x2068,
- 0x0078, 0x3681, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x36a2, 0x6282,
- 0x0078, 0x36a5, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x36aa,
- 0x6186, 0x8dff, 0x007c, 0x1078, 0x3703, 0x00c0, 0x36b1, 0x2011,
- 0x0001, 0x1078, 0x3753, 0x00c0, 0x36b7, 0xa295, 0x0002, 0x007c,
- 0x1078, 0x378b, 0x0040, 0x36c0, 0x1078, 0x63e8, 0x0078, 0x36c2,
- 0xa085, 0x0001, 0x007c, 0x1078, 0x378b, 0x0040, 0x36cb, 0x1078,
- 0x6377, 0x0078, 0x36cd, 0xa085, 0x0001, 0x007c, 0x1078, 0x378b,
- 0x0040, 0x36d6, 0x1078, 0x63bd, 0x0078, 0x36d8, 0xa085, 0x0001,
- 0x007c, 0x1078, 0x378b, 0x0040, 0x36e1, 0x1078, 0x6393, 0x0078,
- 0x36e3, 0xa085, 0x0001, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091,
- 0x8000, 0x6080, 0xa06d, 0x0040, 0x36fb, 0x6800, 0x007e, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x64f5, 0x1078, 0x3840,
- 0x007f, 0x0078, 0x36ea, 0x6083, 0x0000, 0x6087, 0x0000, 0x0d7f,
- 0x007f, 0x127f, 0x007c, 0x60a4, 0xa00d, 0x00c0, 0x370a, 0xa085,
- 0x0001, 0x007c, 0x0e7e, 0x2170, 0x7000, 0xa005, 0x00c0, 0x371d,
- 0x20a9, 0x0010, 0xae88, 0x0004, 0x2104, 0xa606, 0x0040, 0x371d,
- 0x8108, 0x00f0, 0x3714, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x0d7e,
- 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x00c0, 0x372d, 0x1078,
- 0x12c7, 0x0040, 0x373f, 0x2d00, 0x60a6, 0x6803, 0x0001, 0x6807,
- 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108,
- 0x00f0, 0x3735, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006,
- 0x0078, 0x373c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d,
- 0x0040, 0x3750, 0x60a7, 0x0000, 0x1078, 0x12fb, 0xa085, 0x0001,
- 0x127f, 0x0d7f, 0x007c, 0x60a8, 0xa00d, 0x00c0, 0x375a, 0xa085,
- 0x0001, 0x007c, 0x0e7e, 0x2170, 0x7050, 0xa005, 0x00c0, 0x376d,
- 0x20a9, 0x0010, 0xae88, 0x0018, 0x2104, 0xa606, 0x0040, 0x376d,
- 0x8108, 0x00f0, 0x3764, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x3753, 0x00c0, 0x3789, 0x200b, 0xffff,
- 0x0d7e, 0x60a8, 0x2068, 0x6854, 0xa08a, 0x0002, 0x0048, 0x3784,
- 0x8001, 0x6856, 0x0078, 0x3788, 0x1078, 0x12fb, 0x60ab, 0x0000,
- 0x0d7f, 0x127f, 0x007c, 0x609c, 0xd0a4, 0x007c, 0x0f7e, 0x2079,
- 0x7051, 0x7804, 0xd0a4, 0x0040, 0x37b7, 0x157e, 0x0c7e, 0x20a9,
- 0x007e, 0x2009, 0x0000, 0x017e, 0x1078, 0x34fa, 0x00c0, 0x37ab,
- 0x6004, 0xa084, 0xff00, 0x8007, 0xa086, 0x0006, 0x00c0, 0x37ab,
- 0x6000, 0xc0ed, 0x6002, 0x017f, 0x8108, 0x00f0, 0x379b, 0x0c7f,
- 0x157f, 0x2009, 0x07d0, 0x2011, 0x37b9, 0x1078, 0x433a, 0x0f7f,
- 0x007c, 0x2011, 0x37b9, 0x1078, 0x42aa, 0x157e, 0x0c7e, 0x20a9,
- 0x007e, 0x2009, 0x0000, 0x017e, 0x1078, 0x34fa, 0x00c0, 0x37e5,
- 0x6000, 0xd0ec, 0x0040, 0x37e5, 0x047e, 0x62a0, 0xa294, 0x00ff,
- 0x8227, 0xa006, 0x2009, 0x0029, 0x1078, 0x6ecf, 0x6000, 0xc0e5,
- 0xc0ec, 0x6002, 0x2019, 0x0029, 0x1078, 0x469f, 0x1078, 0x45e2,
- 0x2009, 0x0000, 0x1078, 0x6d09, 0x047f, 0x017f, 0x8108, 0x00f0,
- 0x37c3, 0x0c7f, 0x157f, 0x007c, 0x0c7e, 0x6018, 0x2060, 0x6000,
- 0xc0ec, 0x6002, 0x0c7f, 0x007c, 0x2071, 0x70ff, 0x7003, 0x0001,
- 0x7007, 0x0000, 0x7013, 0x0000, 0x7017, 0x0000, 0x701b, 0x0000,
- 0x701f, 0x0000, 0x704b, 0x0001, 0x704f, 0x0000, 0x705b, 0x0020,
- 0x705f, 0x0040, 0x707f, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x70ff,
- 0x684c, 0xa005, 0x00c0, 0x381b, 0x7028, 0xc085, 0x702a, 0xa085,
- 0x0001, 0x0078, 0x383e, 0x6a60, 0x7236, 0x6b64, 0x733a, 0x6868,
- 0x703e, 0x7076, 0x686c, 0x7042, 0x707a, 0x684c, 0x702e, 0x6844,
- 0x7032, 0x2009, 0x000d, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c,
- 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319, 0x726e, 0x7372,
- 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0xa006, 0x0e7f, 0x007c,
- 0x0e7e, 0x6838, 0xd0fc, 0x00c0, 0x3891, 0x6804, 0xa00d, 0x0040,
- 0x385f, 0x0d7e, 0x0e7e, 0x2071, 0x7000, 0x027e, 0xa016, 0x702c,
- 0x2168, 0x6904, 0x206a, 0x8210, 0x2d00, 0x81ff, 0x00c0, 0x3850,
- 0x702e, 0x7098, 0xa200, 0x709a, 0x027f, 0x0e7f, 0x0d7f, 0x2071,
- 0x70ff, 0x701c, 0xa005, 0x00c0, 0x38a2, 0x0068, 0x38a0, 0x2071,
- 0x7051, 0x7004, 0xd09c, 0x0040, 0x38a0, 0x6934, 0xa186, 0x0103,
- 0x00c0, 0x38b3, 0x6948, 0x6844, 0xa105, 0x00c0, 0x3893, 0x2009,
- 0x8020, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0, 0x38a0, 0x7122,
- 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080,
- 0x2071, 0x7000, 0x702c, 0x206a, 0x2d00, 0x702e, 0x7098, 0x8000,
- 0x709a, 0x0e7f, 0x007c, 0x6844, 0xa086, 0x0100, 0x00c0, 0x38a0,
- 0x6868, 0xa005, 0x00c0, 0x38a0, 0x2009, 0x8020, 0x0078, 0x3879,
- 0x2071, 0x70ff, 0x2d08, 0x206b, 0x0000, 0x7010, 0x8000, 0x7012,
- 0x7018, 0xa06d, 0x711a, 0x0040, 0x38b0, 0x6902, 0x0078, 0x38b1,
- 0x711e, 0x0078, 0x3891, 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0040,
- 0x38c1, 0xa186, 0x001e, 0x0040, 0x38c1, 0xa18e, 0x001f, 0x00c0,
- 0x38a0, 0x684c, 0xd0cc, 0x0040, 0x38a0, 0x6850, 0xa084, 0x00ff,
- 0xa086, 0x0001, 0x00c0, 0x38a0, 0x2009, 0x8021, 0x0078, 0x3879,
- 0x007e, 0x6837, 0x0103, 0x20a9, 0x001c, 0xad80, 0x0011, 0x20a0,
- 0x2001, 0x0000, 0x40a4, 0x007f, 0x684a, 0x6952, 0x007c, 0x2071,
- 0x70ff, 0x7004, 0x0079, 0x38e4, 0x38ec, 0x38fb, 0x398b, 0x398c,
- 0x399c, 0x39a2, 0x38ed, 0x3979, 0x007c, 0x127e, 0x2091, 0x8000,
- 0x0068, 0x38fa, 0x2009, 0x000d, 0x7030, 0x200a, 0x2091, 0x4080,
- 0x7007, 0x0001, 0x127f, 0x701c, 0xa06d, 0x0040, 0x3978, 0x0e7e,
- 0x2071, 0x7051, 0x7004, 0xd09c, 0x0040, 0x395a, 0x6934, 0xa186,
- 0x0103, 0x00c0, 0x3930, 0x6948, 0x6844, 0xa105, 0x00c0, 0x394d,
- 0x2009, 0x8020, 0x127e, 0x2091, 0x8000, 0x0068, 0x392c, 0x2071,
- 0x0000, 0x7018, 0xd084, 0x00c0, 0x392c, 0x7122, 0x683c, 0x7026,
- 0x6840, 0x702a, 0x701b, 0x0001, 0x2091, 0x4080, 0x127f, 0x0e7f,
- 0x1078, 0x39d5, 0x0078, 0x3978, 0x127f, 0x0e7f, 0x0078, 0x3978,
- 0xa18c, 0x00ff, 0xa186, 0x0017, 0x0040, 0x393e, 0xa186, 0x001e,
- 0x0040, 0x393e, 0xa18e, 0x001f, 0x00c0, 0x395a, 0x684c, 0xd0cc,
- 0x0040, 0x395a, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0,
- 0x395a, 0x2009, 0x8021, 0x0078, 0x3912, 0x6844, 0xa086, 0x0100,
- 0x00c0, 0x395a, 0x6868, 0xa005, 0x00c0, 0x395a, 0x2009, 0x8020,
- 0x0078, 0x3912, 0x0e7f, 0x1078, 0x39e9, 0x0040, 0x3978, 0x700f,
- 0x0001, 0x6934, 0xa184, 0x00ff, 0xa086, 0x0003, 0x00c0, 0x396f,
- 0x810f, 0xa18c, 0x00ff, 0x8101, 0x0040, 0x396f, 0x710e, 0x7007,
- 0x0003, 0x1078, 0x3a09, 0x7050, 0xa086, 0x0100, 0x0040, 0x398c,
- 0x007c, 0x701c, 0xa06d, 0x0040, 0x398a, 0x1078, 0x39e9, 0x0040,
- 0x398a, 0x7007, 0x0003, 0x1078, 0x3a09, 0x7050, 0xa086, 0x0100,
- 0x0040, 0x398c, 0x007c, 0x007c, 0x7050, 0xa09e, 0x0100, 0x00c0,
- 0x3995, 0x7007, 0x0004, 0x0078, 0x399c, 0xa086, 0x0200, 0x00c0,
- 0x399b, 0x7007, 0x0005, 0x007c, 0x1078, 0x39a3, 0x7006, 0x1078,
- 0x39d5, 0x007c, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102, 0x0048,
- 0x39b0, 0xa00e, 0x7034, 0x706e, 0x7038, 0x7072, 0x0078, 0x39ba,
- 0x706c, 0xa080, 0x0040, 0x706e, 0x00c8, 0x39ba, 0x7070, 0xa081,
- 0x0000, 0x7072, 0x7132, 0x700c, 0x8001, 0x700e, 0x00c0, 0x39ce,
- 0x127e, 0x2091, 0x8000, 0x0068, 0x39d1, 0x2001, 0x000d, 0x2102,
- 0x2091, 0x4080, 0x2001, 0x0001, 0x127f, 0x007c, 0x2001, 0x0007,
- 0x007c, 0x2001, 0x0006, 0x127f, 0x007c, 0x701c, 0xa06d, 0x0040,
- 0x39e8, 0x127e, 0x2091, 0x8000, 0x7010, 0x8001, 0x7012, 0x2d04,
- 0x701e, 0xa005, 0x00c0, 0x39e5, 0x701a, 0x127f, 0x1078, 0x12fb,
- 0x007c, 0x2019, 0x000d, 0x2304, 0x230c, 0xa10e, 0x0040, 0x39f8,
- 0x2304, 0x230c, 0xa10e, 0x0040, 0x39f8, 0xa006, 0x0078, 0x3a08,
- 0x732c, 0x8319, 0x7130, 0xa102, 0x00c0, 0x3a02, 0x2300, 0xa005,
- 0x0078, 0x3a08, 0x0048, 0x3a07, 0xa302, 0x0078, 0x3a08, 0x8002,
- 0x007c, 0x2d00, 0x7026, 0xa080, 0x000d, 0x7056, 0x7053, 0x0000,
- 0x127e, 0x2091, 0x8000, 0x2009, 0x71d9, 0x2104, 0xc08d, 0x200a,
- 0x127f, 0x1078, 0x134c, 0x007c, 0x2071, 0x70cd, 0x7003, 0x0000,
- 0x7007, 0x0000, 0x700f, 0x0000, 0x702b, 0x0001, 0x704f, 0x0000,
- 0x7053, 0x0001, 0x705f, 0x0020, 0x7063, 0x0040, 0x7083, 0x0000,
- 0x708b, 0x0000, 0x708f, 0x0001, 0x70bf, 0x0000, 0x007c, 0x0e7e,
- 0x2071, 0x70cd, 0x6848, 0xa005, 0x00c0, 0x3a45, 0x7028, 0xc085,
- 0x702a, 0xa085, 0x0001, 0x0078, 0x3a6a, 0x6a50, 0x7236, 0x6b54,
- 0x733a, 0x6858, 0x703e, 0x707a, 0x685c, 0x7042, 0x707e, 0x6848,
- 0x702e, 0x6840, 0x7032, 0x2009, 0x000c, 0x200a, 0x8007, 0x8006,
- 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210, 0x2100, 0xa319,
- 0x7272, 0x7376, 0x7028, 0xc084, 0x702a, 0x7007, 0x0001, 0x700f,
- 0x0000, 0xa006, 0x0e7f, 0x007c, 0x2b78, 0x2071, 0x70cd, 0x7004,
- 0x1079, 0x3aca, 0x700c, 0x0079, 0x3a75, 0x3a7a, 0x3a6f, 0x3a6f,
- 0x3a6f, 0x3a6f, 0x007c, 0x700c, 0x0079, 0x3a7e, 0x3a83, 0x3ac8,
- 0x3ac8, 0x3ac9, 0x3ac9, 0x7830, 0x7930, 0xa106, 0x0040, 0x3a8d,
- 0x7830, 0x7930, 0xa106, 0x00c0, 0x3ab3, 0x7030, 0xa10a, 0x0040,
- 0x3ab3, 0x00c8, 0x3a95, 0x712c, 0xa10a, 0xa18a, 0x0002, 0x00c8,
- 0x3ab4, 0x1078, 0x12c7, 0x0040, 0x3ab3, 0x2d00, 0x705a, 0x7063,
- 0x0040, 0x2001, 0x0003, 0x7057, 0x0000, 0x127e, 0x007e, 0x2091,
- 0x8000, 0x2009, 0x71d9, 0x2104, 0xc085, 0x200a, 0x007f, 0x700e,
- 0x127f, 0x1078, 0x134c, 0x007c, 0x1078, 0x12c7, 0x0040, 0x3ab3,
- 0x2d00, 0x705a, 0x1078, 0x12c7, 0x00c0, 0x3ac0, 0x0078, 0x3a9f,
- 0x2d00, 0x7086, 0x7063, 0x0080, 0x2001, 0x0004, 0x0078, 0x3aa3,
- 0x007c, 0x007c, 0x3adb, 0x3adc, 0x3b13, 0x3b14, 0x3ac8, 0x3b4a,
- 0x3b4f, 0x3b86, 0x3b87, 0x3ba2, 0x3ba3, 0x3ba4, 0x3ba5, 0x3ba6,
- 0x3ba7, 0x3c10, 0x3c3a, 0x007c, 0x700c, 0x0079, 0x3adf, 0x3ae4,
- 0x3ae7, 0x3af7, 0x3b12, 0x3b12, 0x1078, 0x3a7b, 0x007c, 0x127e,
- 0x8001, 0x700e, 0x7058, 0x007e, 0x1078, 0x3f1c, 0x0040, 0x3af4,
- 0x2091, 0x8000, 0x1078, 0x3a7b, 0x0d7f, 0x0078, 0x3b00, 0x127e,
- 0x8001, 0x700e, 0x1078, 0x3f1c, 0x7058, 0x2068, 0x7084, 0x705a,
- 0x6803, 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a,
- 0x0020, 0x00c8, 0x3b0f, 0x1079, 0x3b2a, 0x127f, 0x007c, 0x127f,
- 0x1078, 0x3ba8, 0x007c, 0x007c, 0x007c, 0x0e7e, 0x2071, 0x70cd,
- 0x700c, 0x0079, 0x3b1b, 0x3b20, 0x3b20, 0x3b20, 0x3b22, 0x3b26,
- 0x0e7f, 0x007c, 0x700f, 0x0001, 0x0078, 0x3b28, 0x700f, 0x0002,
- 0x0e7f, 0x007c, 0x3ba8, 0x3ba8, 0x3bc4, 0x3ba8, 0x3caf, 0x3ba8,
- 0x3ba8, 0x3ba8, 0x3ba8, 0x3ba8, 0x3bc4, 0x3cee, 0x3d38, 0x3d91,
- 0x3da5, 0x3ba8, 0x3ba8, 0x3be0, 0x3bc4, 0x3ba8, 0x3ba8, 0x3bf6,
- 0x3e30, 0x3e4e, 0x3ba8, 0x3be0, 0x3ba8, 0x3ba8, 0x3ba8, 0x3ba8,
- 0x3bf6, 0x3e4e, 0x7020, 0x2068, 0x1078, 0x12fb, 0x007c, 0x700c,
- 0x0079, 0x3b52, 0x3b57, 0x3b5a, 0x3b6a, 0x3b85, 0x3b85, 0x1078,
- 0x3a7b, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e, 0x1078,
- 0x3f1c, 0x0040, 0x3b67, 0x2091, 0x8000, 0x1078, 0x3a7b, 0x0d7f,
- 0x0078, 0x3b73, 0x127e, 0x8001, 0x700e, 0x1078, 0x3f1c, 0x7058,
- 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000, 0x6834,
- 0xa084, 0x00ff, 0xa08a, 0x001a, 0x00c8, 0x3b82, 0x1079, 0x3b88,
- 0x127f, 0x007c, 0x127f, 0x1078, 0x3ba8, 0x007c, 0x007c, 0x007c,
- 0x3ba8, 0x3bc4, 0x3c99, 0x3ba8, 0x3bc4, 0x3ba8, 0x3bc4, 0x3bc4,
- 0x3ba8, 0x3bc4, 0x3c99, 0x3bc4, 0x3bc4, 0x3bc4, 0x3bc4, 0x3bc4,
- 0x3ba8, 0x3bc4, 0x3c99, 0x3ba8, 0x3ba8, 0x3bc4, 0x3ba8, 0x3ba8,
- 0x3ba8, 0x3bc4, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c, 0x007c,
- 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0d5, 0x683a, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x3840, 0x127f, 0x007c, 0x7007, 0x0001,
- 0x6838, 0xa084, 0x00ff, 0xc0e5, 0x683a, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x3840, 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084,
- 0x00ff, 0xc0ed, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3840,
- 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0dd,
- 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3840, 0x127f, 0x007c,
- 0x6834, 0x8007, 0xa084, 0x00ff, 0x0040, 0x3bb6, 0x8001, 0x00c0,
- 0x3bed, 0x7007, 0x0001, 0x0078, 0x3c76, 0x7007, 0x0006, 0x7012,
- 0x2d00, 0x7016, 0x701a, 0x704b, 0x3c76, 0x007c, 0x2d00, 0x7016,
- 0x701a, 0x20a9, 0x0004, 0xa080, 0x0024, 0x2098, 0x20a1, 0x70f8,
- 0x53a3, 0x6858, 0x7012, 0xa082, 0x0401, 0x00c8, 0x3bd2, 0x6884,
- 0xa08a, 0x0003, 0x00c8, 0x3bd2, 0xa080, 0x3c67, 0x2004, 0x70c6,
- 0x7010, 0xa015, 0x0040, 0x3c5a, 0x1078, 0x12c7, 0x00c0, 0x3c1b,
- 0x7007, 0x000f, 0x007c, 0x2d00, 0x7022, 0x70c4, 0x2060, 0x6000,
- 0x6836, 0x6004, 0xad00, 0x7096, 0x6008, 0xa20a, 0x00c8, 0x3c2a,
- 0xa00e, 0x2200, 0x7112, 0x620c, 0x8003, 0x800b, 0xa296, 0x0004,
- 0x0040, 0x3c33, 0xa108, 0x719a, 0x810b, 0x719e, 0xae90, 0x0022,
- 0x1078, 0x1332, 0x7090, 0xa08e, 0x0100, 0x0040, 0x3c4e, 0xa086,
- 0x0200, 0x0040, 0x3c46, 0x7007, 0x0010, 0x007c, 0x7020, 0x2068,
- 0x1078, 0x12fb, 0x7014, 0x2068, 0x0078, 0x3bd2, 0x7020, 0x2068,
- 0x7018, 0x6802, 0x6807, 0x0000, 0x2d08, 0x2068, 0x6906, 0x711a,
- 0x0078, 0x3c10, 0x7014, 0x2068, 0x7007, 0x0001, 0x6834, 0xa084,
- 0x00ff, 0xa086, 0x001e, 0x0040, 0x3e6b, 0x0078, 0x3c76, 0x3c6a,
- 0x3c6e, 0x3c72, 0x0002, 0x0011, 0x0007, 0x0004, 0x000a, 0x000f,
- 0x0005, 0x0006, 0x0012, 0x000f, 0x0005, 0x0006, 0x2009, 0x702a,
- 0x210c, 0x81ff, 0x00c0, 0x3c93, 0x6838, 0xa084, 0x00ff, 0x683a,
- 0x6853, 0x0000, 0x1078, 0x3347, 0x00c0, 0x3c87, 0x007c, 0x1078,
- 0x38d0, 0x127e, 0x2091, 0x8000, 0x1078, 0x64f5, 0x1078, 0x3840,
- 0x127f, 0x0078, 0x3c86, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078,
- 0x3c87, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906, 0x711a, 0x7010,
- 0x8001, 0x7012, 0x0040, 0x3ca8, 0x7007, 0x0006, 0x0078, 0x3cae,
- 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a, 0x007c, 0x7007,
- 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848, 0xa084, 0x00ff,
- 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x3cd8, 0x2009, 0x0000,
- 0x20a9, 0x007e, 0xa096, 0x0002, 0x0040, 0x3cd8, 0xa005, 0x00c0,
- 0x3ceb, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078, 0x34fa, 0x00c0,
- 0x3ceb, 0x067e, 0x6e50, 0x1078, 0x35c3, 0x067f, 0x0078, 0x3ceb,
- 0x047e, 0x2011, 0x700c, 0x2224, 0xc484, 0xc48c, 0x2412, 0x047f,
- 0x0c7e, 0x1078, 0x34fa, 0x00c0, 0x3ce7, 0x1078, 0x3742, 0x8108,
- 0x00f0, 0x3ce1, 0x0c7f, 0x1078, 0x12fb, 0x007c, 0x127e, 0x2091,
- 0x8000, 0x7007, 0x0001, 0x2001, 0x7052, 0x2004, 0xd0a4, 0x0040,
- 0x3d2f, 0x2009, 0x0000, 0x1078, 0x3f38, 0x6100, 0xd184, 0x0040,
- 0x3d14, 0x6858, 0xa084, 0x00ff, 0x00c0, 0x3d32, 0x6000, 0xd084,
- 0x0040, 0x3d2f, 0x6004, 0xa005, 0x00c0, 0x3d35, 0x6003, 0x0000,
- 0x600b, 0x0000, 0x0078, 0x3d2c, 0x2011, 0x0001, 0x6860, 0xa005,
- 0x00c0, 0x3d1c, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858, 0xa084,
- 0x00ff, 0x0040, 0x3d2f, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff,
- 0x0040, 0x3d2f, 0x600a, 0x6202, 0x127f, 0x0078, 0x3f0b, 0x127f,
- 0x0078, 0x3f03, 0x127f, 0x0078, 0x3efb, 0x127f, 0x0078, 0x3eff,
- 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x7052, 0x2004,
- 0xd0a4, 0x0040, 0x3d8e, 0x2009, 0x0000, 0x1078, 0x3f38, 0x6000,
- 0xa084, 0x0001, 0x0040, 0x3d8e, 0x6204, 0x6308, 0x6c48, 0xa484,
- 0x0003, 0x0040, 0x3d66, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0,
- 0x3d5f, 0x2100, 0xa210, 0x0048, 0x3d8b, 0x0078, 0x3d66, 0x8001,
- 0x00c0, 0x3d8b, 0x2100, 0xa212, 0x0048, 0x3d8b, 0xa484, 0x000c,
- 0x0040, 0x3d80, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004,
- 0x00c0, 0x3d78, 0x2100, 0xa318, 0x0048, 0x3d8b, 0x0078, 0x3d80,
- 0xa082, 0x0004, 0x00c0, 0x3d8b, 0x2100, 0xa31a, 0x0048, 0x3d8b,
- 0x6860, 0xa005, 0x0040, 0x3d86, 0x8000, 0x6016, 0x6206, 0x630a,
- 0x127f, 0x0078, 0x3f0b, 0x127f, 0x0078, 0x3f07, 0x127f, 0x0078,
- 0x3f03, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2009, 0x0000,
- 0x1078, 0x3f38, 0x6308, 0x8318, 0x0048, 0x3da2, 0x630a, 0x127f,
- 0x0078, 0x3f19, 0x127f, 0x0078, 0x3f07, 0x127e, 0x0c7e, 0x2091,
- 0x8000, 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040, 0x3dbb, 0x2009,
- 0x0000, 0x0c7e, 0x1078, 0x4348, 0x6000, 0x2001, 0xfcff, 0x6002,
- 0x0c7f, 0x0078, 0x3df2, 0x6858, 0xa005, 0x0040, 0x3e07, 0x685c,
- 0xa065, 0x0040, 0x3e03, 0x2001, 0x702a, 0x2004, 0xa005, 0x0040,
- 0x3dcd, 0x1078, 0x6457, 0x0078, 0x3dd3, 0x6013, 0x0400, 0x2009,
- 0x0041, 0x1078, 0x571c, 0x6958, 0xa18c, 0xe600, 0xa186, 0x2000,
- 0x0040, 0x3dea, 0xa186, 0x0400, 0x0040, 0x3dea, 0x2009, 0x0000,
- 0x0c7e, 0x1078, 0x4348, 0x6000, 0xa084, 0xfdff, 0x6002, 0x0c7f,
- 0x0078, 0x3df2, 0x027e, 0x2009, 0x0000, 0x2011, 0xfdff, 0x1078,
- 0x43f1, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x3dff, 0x2009, 0x0000,
- 0x1078, 0x4348, 0x6008, 0x8000, 0x0048, 0x3dff, 0x600a, 0x0c7f,
- 0x127f, 0x0078, 0x3f0b, 0x0c7f, 0x127f, 0x0078, 0x3f03, 0x6954,
- 0xa186, 0x002a, 0x00c0, 0x3e13, 0x2001, 0x700c, 0x200c, 0xc194,
- 0x2102, 0x0078, 0x3df2, 0xa186, 0x0020, 0x0040, 0x3e28, 0xa186,
- 0x0029, 0x00c0, 0x3e03, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078,
- 0x34fa, 0x00c0, 0x3df2, 0x6000, 0xc0e4, 0x6002, 0x0078, 0x3df2,
- 0x685c, 0xa065, 0x0040, 0x3e03, 0x6017, 0x0014, 0x0078, 0x3df2,
- 0x2009, 0x0000, 0x1078, 0x3f38, 0x6000, 0xa084, 0x0001, 0x0040,
- 0x3e4a, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048, 0x3e44, 0x6206,
- 0x2091, 0x8001, 0x0078, 0x3f19, 0x2091, 0x8001, 0x6853, 0x0016,
- 0x0078, 0x3f12, 0x6853, 0x0007, 0x0078, 0x3f12, 0x6834, 0x8007,
- 0xa084, 0x00ff, 0x00c0, 0x3e58, 0x1078, 0x3bb6, 0x0078, 0x3e6a,
- 0x2030, 0x8001, 0x00c0, 0x3e62, 0x7007, 0x0001, 0x1078, 0x3e6b,
- 0x0078, 0x3e6a, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a,
- 0x704b, 0x3e6b, 0x007c, 0x0e7e, 0x2009, 0x702a, 0x210c, 0x81ff,
- 0x00c0, 0x3eed, 0x2009, 0x700c, 0x210c, 0xd194, 0x00c0, 0x3ef7,
- 0x6848, 0x2070, 0xae82, 0x7600, 0x0048, 0x3edc, 0x2001, 0x7015,
- 0x2004, 0xae02, 0x00c8, 0x3edc, 0x2009, 0x0000, 0x1078, 0x3f38,
- 0x6100, 0xa184, 0x0001, 0x0040, 0x3ec2, 0xa184, 0x0100, 0x00c0,
- 0x3ee0, 0xa184, 0x0200, 0x00c0, 0x3ee4, 0x601c, 0xa005, 0x00c0,
- 0x3ee8, 0x711c, 0xa186, 0x0006, 0x00c0, 0x3ec7, 0x6853, 0x0000,
- 0x6803, 0x0000, 0x2d08, 0x127e, 0x2091, 0x8000, 0x7010, 0xa005,
- 0x00c0, 0x3eb9, 0x7112, 0x7018, 0xa065, 0x0040, 0x3eec, 0x6000,
- 0xd0e4, 0x00c0, 0x3ef1, 0x2e60, 0x1078, 0x4351, 0x127f, 0x0e7f,
- 0x007c, 0x2068, 0x6800, 0xa005, 0x00c0, 0x3eb9, 0x6902, 0x127f,
- 0x0e7f, 0x007c, 0x0e7f, 0x6853, 0x0006, 0x0078, 0x3f12, 0x6944,
- 0xa18c, 0xff00, 0x810f, 0x1078, 0x34fa, 0x00c0, 0x3ef2, 0x6000,
- 0xd0e4, 0x00c0, 0x3ef2, 0x711c, 0xa186, 0x0007, 0x00c0, 0x3edc,
- 0x6853, 0x0002, 0x0078, 0x3ef4, 0x6853, 0x0008, 0x0078, 0x3ef4,
- 0x6853, 0x000e, 0x0078, 0x3ef4, 0x6853, 0x0017, 0x0078, 0x3ef4,
- 0x6853, 0x0035, 0x0078, 0x3ef4, 0x127f, 0x6853, 0x0028, 0x0078,
- 0x3ef4, 0x127f, 0x6853, 0x0029, 0x0e7f, 0x0078, 0x3f12, 0x6853,
- 0x002a, 0x0078, 0x3ef4, 0x2009, 0x003e, 0x0078, 0x3f0d, 0x2009,
- 0x0004, 0x0078, 0x3f0d, 0x2009, 0x0006, 0x0078, 0x3f0d, 0x2009,
- 0x0016, 0x0078, 0x3f0d, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00,
- 0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x3840, 0x2091, 0x8001,
- 0x007c, 0x1078, 0x12fb, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102,
- 0x0048, 0x3f29, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0078,
- 0x3f35, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x3f35, 0x7074,
- 0xa081, 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x007c,
- 0x0d7e, 0x1078, 0x4348, 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004,
- 0x2204, 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002,
- 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040, 0x3f54,
- 0xa086, 0x1000, 0x00c0, 0x3f70, 0x20e1, 0x0004, 0x3d60, 0xd1bc,
- 0x00c0, 0x3f5b, 0x3e60, 0xac84, 0x0007, 0x00c0, 0x3f70, 0xac82,
- 0x7600, 0x0048, 0x3f70, 0x6854, 0xac02, 0x00c8, 0x3f70, 0x2009,
- 0x0047, 0x1078, 0x571c, 0x7a1c, 0xd284, 0x00c0, 0x3f46, 0x007c,
- 0xa016, 0x1078, 0x1525, 0x0078, 0x3f6b, 0x157e, 0x137e, 0x147e,
- 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0070, 0x00c0, 0x3f9e,
- 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x3f9e, 0x1078, 0x3fab,
- 0x0040, 0x3f9e, 0x20e1, 0x3000, 0x7828, 0x7828, 0x1078, 0x3fc9,
- 0x147f, 0x137f, 0x157f, 0x2009, 0x71be, 0x2104, 0xa005, 0x00c0,
- 0x3f9a, 0x007c, 0x1078, 0x49b7, 0x0078, 0x3f99, 0x1078, 0x6f02,
- 0x1078, 0x3fab, 0x20e1, 0x3000, 0x7828, 0x7828, 0x147f, 0x137f,
- 0x157f, 0x0078, 0x3f99, 0xa484, 0x01ff, 0x6872, 0xa005, 0x0040,
- 0x3fbd, 0xa080, 0x001f, 0xa084, 0x03f8, 0x80ac, 0x20e1, 0x1000,
- 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c, 0x20a9, 0x000c, 0x20e1,
- 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0xa085, 0x0001, 0x0078,
- 0x3fbc, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, 0x8007, 0xa196,
- 0x0000, 0x00c0, 0x3fd6, 0x0078, 0x40c2, 0x007c, 0xa196, 0x2000,
- 0x00c0, 0x3fe7, 0x6900, 0xa18e, 0x0001, 0x00c0, 0x3fe3, 0x1078,
- 0x2b7c, 0x0078, 0x3fd5, 0x1078, 0x3fef, 0x0078, 0x3fd5, 0xa196,
- 0x8000, 0x00c0, 0x3fd5, 0x1078, 0x4148, 0x0078, 0x3fd5, 0x0c7e,
- 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, 0x0040, 0x3ffc,
- 0xa196, 0x0023, 0x00c0, 0x40ba, 0xa08e, 0x0023, 0x00c0, 0x402d,
- 0x1078, 0x41ba, 0x0040, 0x40ba, 0x7124, 0x610a, 0x7030, 0xa08e,
- 0x0200, 0x00c0, 0x4015, 0x7034, 0xa005, 0x00c0, 0x40ba, 0x2009,
- 0x0015, 0x1078, 0x571c, 0x0078, 0x40ba, 0xa08e, 0x0210, 0x00c0,
- 0x401f, 0x2009, 0x0015, 0x1078, 0x571c, 0x0078, 0x40ba, 0xa08e,
- 0x0100, 0x00c0, 0x40ba, 0x7034, 0xa005, 0x00c0, 0x40ba, 0x2009,
- 0x0016, 0x1078, 0x571c, 0x0078, 0x40ba, 0xa08e, 0x0022, 0x00c0,
- 0x40ba, 0x7030, 0xa08e, 0x0300, 0x00c0, 0x403e, 0x7034, 0xa005,
- 0x00c0, 0x40ba, 0x2009, 0x0017, 0x0078, 0x40a2, 0xa08e, 0x0500,
- 0x00c0, 0x404a, 0x7034, 0xa005, 0x00c0, 0x40ba, 0x2009, 0x0018,
- 0x0078, 0x40a2, 0xa08e, 0x2010, 0x00c0, 0x4052, 0x2009, 0x0019,
- 0x0078, 0x40a2, 0xa08e, 0x2110, 0x00c0, 0x405a, 0x2009, 0x001a,
- 0x0078, 0x40a2, 0xa08e, 0x5200, 0x00c0, 0x4066, 0x7034, 0xa005,
- 0x00c0, 0x40ba, 0x2009, 0x001b, 0x0078, 0x40a2, 0xa08e, 0x5000,
- 0x00c0, 0x4072, 0x7034, 0xa005, 0x00c0, 0x40ba, 0x2009, 0x001c,
- 0x0078, 0x40a2, 0xa08e, 0x1200, 0x00c0, 0x407e, 0x7034, 0xa005,
- 0x00c0, 0x40ba, 0x2009, 0x0024, 0x0078, 0x40a2, 0xa08c, 0xff00,
- 0xa18e, 0x2400, 0x00c0, 0x4088, 0x2009, 0x002d, 0x0078, 0x40a2,
- 0xa08c, 0xff00, 0xa18e, 0x5300, 0x00c0, 0x4092, 0x2009, 0x002a,
- 0x0078, 0x40a2, 0xa08e, 0x0f00, 0x00c0, 0x409a, 0x2009, 0x0020,
- 0x0078, 0x40a2, 0xa08e, 0x5300, 0x00c0, 0x40a0, 0x0078, 0x40a0,
- 0x2009, 0x001d, 0x017e, 0x2011, 0x7483, 0x2204, 0x1078, 0x1fe4,
- 0x1078, 0x34bf, 0x00c0, 0x40bc, 0x0c7e, 0x1078, 0x568f, 0x0040,
- 0x40bf, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0x017f,
- 0x1078, 0x571c, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x40ba, 0x0c7f,
- 0x0078, 0x40bc, 0xa084, 0x0007, 0x0079, 0x40c7, 0x007c, 0x40cf,
- 0x40cf, 0x40cf, 0x40cf, 0x40cf, 0x40d0, 0x40e9, 0x4131, 0x007c,
- 0x7110, 0xd1bc, 0x0040, 0x40e8, 0x7120, 0x2160, 0xac8c, 0x0007,
- 0x00c0, 0x40e8, 0xac8a, 0x7600, 0x0048, 0x40e8, 0x6854, 0xac02,
- 0x00c8, 0x40e8, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078, 0x571c,
- 0x007c, 0x0c7e, 0x7110, 0xd1bc, 0x00c0, 0x412f, 0x2011, 0x7483,
- 0x2204, 0xa080, 0x2207, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078,
- 0x34fa, 0x00c0, 0x412f, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286,
- 0x0006, 0x00c0, 0x4114, 0x0c7e, 0x1078, 0x568f, 0x017f, 0x0040,
- 0x412f, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x2009, 0x0044,
- 0x1078, 0x571c, 0x0078, 0x412f, 0x0c7e, 0x1078, 0x568f, 0x017f,
- 0x0040, 0x412f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286,
- 0x0004, 0x00c0, 0x4127, 0x6007, 0x0005, 0x0078, 0x4129, 0x6007,
- 0x0001, 0x6003, 0x0001, 0x1078, 0x45af, 0x1078, 0x49b7, 0x0c7f,
- 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4147, 0x7020, 0x2060, 0xac84,
- 0x0007, 0x00c0, 0x4147, 0xac82, 0x7600, 0x0048, 0x4147, 0x6854,
- 0xac02, 0x00c8, 0x4147, 0x2009, 0x0045, 0x1078, 0x571c, 0x007c,
- 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x00c0, 0x4158,
- 0xa084, 0x000f, 0xa08a, 0x0006, 0x10c8, 0x1288, 0x1079, 0x4159,
- 0x007c, 0x415f, 0x4160, 0x415f, 0x415f, 0x419c, 0x41ab, 0x007c,
- 0x7110, 0xd1bc, 0x00c0, 0x419b, 0x700c, 0x1078, 0x1fe4, 0x1078,
- 0x34bf, 0x00c0, 0x419b, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286,
- 0x0006, 0x00c0, 0x4184, 0x0c7e, 0x1078, 0x568f, 0x017f, 0x0040,
- 0x419b, 0x611a, 0x601f, 0x0005, 0x7120, 0x610a, 0x2009, 0x0088,
- 0x1078, 0x571c, 0x0078, 0x419b, 0x0c7e, 0x1078, 0x568f, 0x017f,
- 0x0040, 0x419b, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286,
- 0x0004, 0x00c0, 0x4197, 0x2009, 0x0005, 0x0078, 0x4199, 0x2009,
- 0x0001, 0x1078, 0x571c, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x41aa,
- 0x1078, 0x41ba, 0x0040, 0x41aa, 0x7124, 0x610a, 0x2009, 0x0089,
- 0x1078, 0x571c, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x41b9, 0x1078,
- 0x41ba, 0x0040, 0x41b9, 0x7124, 0x610a, 0x2009, 0x008a, 0x1078,
- 0x571c, 0x007c, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0, 0x41cd,
- 0xac82, 0x7600, 0x0048, 0x41cd, 0x2001, 0x7015, 0x2004, 0xac02,
- 0x00c8, 0x41cd, 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x41cc,
- 0x2071, 0x71c9, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a,
- 0x7012, 0x7017, 0x7600, 0x7007, 0x0000, 0x7026, 0x702b, 0x50bd,
- 0x7032, 0x7037, 0x50fe, 0x703b, 0x0002, 0x703f, 0x0000, 0x007c,
- 0x2071, 0x71c9, 0x00e0, 0x4297, 0x2091, 0x6000, 0x700c, 0x8001,
- 0x700e, 0x00c0, 0x4260, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e,
- 0x2091, 0x8000, 0x7138, 0x8109, 0x713a, 0x00c0, 0x425e, 0x703b,
- 0x0002, 0x2009, 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8, 0x425e,
- 0x703c, 0xa086, 0x0001, 0x00c0, 0x423b, 0x0d7e, 0x2069, 0x0140,
- 0x6804, 0xa084, 0x4000, 0x0040, 0x4219, 0x6803, 0x1000, 0x0078,
- 0x4220, 0x6804, 0xa084, 0x1000, 0x0040, 0x4220, 0x6803, 0x0100,
- 0x6803, 0x0000, 0x703f, 0x0000, 0x2069, 0x71b6, 0x6804, 0xa082,
- 0x0006, 0x00c0, 0x422d, 0x6807, 0x0000, 0x6830, 0xa082, 0x0003,
- 0x00c0, 0x4234, 0x6833, 0x0000, 0x1078, 0x49b7, 0x1078, 0x4a67,
- 0x0d7f, 0x0078, 0x425e, 0x0d7e, 0x2069, 0x7000, 0x6944, 0x6860,
- 0xa102, 0x00c8, 0x425d, 0x2069, 0x71b6, 0x6804, 0xa086, 0x0000,
- 0x00c0, 0x425d, 0x6830, 0xa086, 0x0000, 0x00c0, 0x425d, 0x703f,
- 0x0001, 0x6807, 0x0006, 0x6833, 0x0003, 0x2069, 0x0100, 0x6830,
- 0x689e, 0x2069, 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078, 0x4263,
- 0x127e, 0x2091, 0x8000, 0x7024, 0xa00d, 0x0040, 0x4274, 0x7020,
- 0x8001, 0x7022, 0x00c0, 0x4274, 0x7023, 0x0009, 0x8109, 0x7126,
- 0x00c0, 0x4274, 0x7028, 0x107a, 0x7030, 0xa00d, 0x0040, 0x4285,
- 0x702c, 0x8001, 0x702e, 0x00c0, 0x4285, 0x702f, 0x0009, 0x8109,
- 0x7132, 0x00c0, 0x4285, 0x7034, 0x107a, 0x7018, 0xa00d, 0x0040,
- 0x4296, 0x7008, 0x8001, 0x700a, 0x00c0, 0x4296, 0x700b, 0x0009,
- 0x8109, 0x711a, 0x00c0, 0x4296, 0x701c, 0x107a, 0x127f, 0x7004,
- 0x0079, 0x429a, 0x42c1, 0x42c2, 0x42de, 0x0e7e, 0x2071, 0x71c9,
- 0x7018, 0xa005, 0x00c0, 0x42a8, 0x711a, 0x721e, 0x700b, 0x0009,
- 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071, 0x71c9, 0x701c, 0xa206,
- 0x00c0, 0x42b4, 0x701a, 0x701e, 0x007f, 0x0e7f, 0x007c, 0x0e7e,
- 0x2071, 0x71c9, 0x6088, 0xa102, 0x0048, 0x42bf, 0x618a, 0x0e7f,
- 0x007c, 0x007c, 0x7110, 0x1078, 0x34fa, 0x00c0, 0x42d4, 0x6088,
- 0x8001, 0x0048, 0x42d4, 0x608a, 0x00c0, 0x42d4, 0x127e, 0x2091,
- 0x8000, 0x1078, 0x49b7, 0x127f, 0x8108, 0xa182, 0x007e, 0x0048,
- 0x42dc, 0xa00e, 0x7007, 0x0002, 0x7112, 0x007c, 0x7014, 0x2060,
- 0x127e, 0x2091, 0x8000, 0x6014, 0xa005, 0x0040, 0x430d, 0x8001,
- 0x6016, 0x00c0, 0x430d, 0x611c, 0xa186, 0x0003, 0x0040, 0x42f4,
- 0xa186, 0x0006, 0x00c0, 0x430b, 0x6010, 0x2068, 0x6854, 0xa08a,
- 0x199a, 0x0048, 0x430b, 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a,
- 0x0048, 0x4304, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0xa108,
- 0x6116, 0x0078, 0x430d, 0x1078, 0x61ca, 0x127f, 0xac88, 0x0008,
- 0x7116, 0x2001, 0x7016, 0x2004, 0xa102, 0x0048, 0x431b, 0x7017,
- 0x7600, 0x7007, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x71c9, 0x7027,
- 0x07d0, 0x7023, 0x0009, 0x703b, 0x0002, 0x0e7f, 0x007c, 0x2001,
- 0x71d2, 0x2003, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x71c9, 0x7033,
- 0x07d0, 0x702f, 0x0009, 0x0e7f, 0x007c, 0x2011, 0x71d5, 0x2013,
- 0x0000, 0x007c, 0x0e7e, 0x2071, 0x71c9, 0x711a, 0x721e, 0x700b,
- 0x0009, 0x0e7f, 0x007c, 0x0c7e, 0x2061, 0x725a, 0x0c7f, 0x007c,
- 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x725a, 0x2060,
- 0x007c, 0x6854, 0xa08a, 0x199a, 0x0048, 0x4358, 0x2001, 0x1999,
- 0xa005, 0x00c0, 0x4368, 0x6944, 0x0c7e, 0x1078, 0x4348, 0x6014,
- 0x0c7f, 0xa005, 0x00c0, 0x436d, 0x2001, 0x001e, 0x0078, 0x436d,
- 0xa08e, 0xffff, 0x00c0, 0x436d, 0xa006, 0x8003, 0x800b, 0x810b,
- 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040,
- 0x43a8, 0xd0b4, 0x00c0, 0x4384, 0xd0bc, 0x00c0, 0x4396, 0x2009,
- 0x0006, 0x1078, 0x43cb, 0x007c, 0xd0fc, 0x0040, 0x4391, 0xa084,
- 0x0003, 0xa08e, 0x0003, 0x0040, 0x43c4, 0xa08e, 0x0000, 0x00c0,
- 0x43c4, 0x2009, 0x0043, 0x1078, 0x571c, 0x007c, 0xd0fc, 0x0040,
- 0x43a3, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x43c4, 0xa08e,
- 0x0000, 0x00c0, 0x43c4, 0x2009, 0x0042, 0x1078, 0x571c, 0x007c,
- 0xd0fc, 0x0040, 0x43ba, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040,
- 0x43c4, 0xa08e, 0x0002, 0x0040, 0x43be, 0x2009, 0x0041, 0x1078,
- 0x571c, 0x007c, 0x1078, 0x43c9, 0x0078, 0x43b9, 0x2009, 0x0043,
- 0x1078, 0x571c, 0x0078, 0x43b9, 0x2009, 0x0004, 0x1078, 0x43cb,
- 0x007c, 0x2009, 0x0001, 0x6010, 0xa0ec, 0xf000, 0x0040, 0x43f0,
- 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0, 0x43ea,
- 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x43ea, 0x0c7e,
- 0x2009, 0x0000, 0x1078, 0x4348, 0x6204, 0x8210, 0x0048, 0x43e9,
- 0x6206, 0x0c7f, 0x1078, 0x3840, 0x6010, 0xa06d, 0x10c0, 0x4351,
- 0x007c, 0x157e, 0x0c7e, 0x20a9, 0x0010, 0x2061, 0x725a, 0x6000,
- 0x81ff, 0x0040, 0x43fe, 0xa205, 0x0078, 0x43ff, 0xa204, 0x6002,
- 0xace0, 0x0008, 0x00f0, 0x43f7, 0x0c7f, 0x157f, 0x007c, 0x6808,
- 0xa005, 0x0040, 0x440f, 0x8001, 0x680a, 0xa085, 0x0001, 0x007c,
- 0x127e, 0x2091, 0x2200, 0x2079, 0x71b6, 0x127f, 0x0d7e, 0x2069,
- 0x71b6, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001,
- 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027, 0x0001, 0x7804, 0xa084,
- 0x0007, 0x0079, 0x442b, 0x4435, 0x445a, 0x44b5, 0x443b, 0x445a,
- 0x4433, 0x4433, 0x4433, 0x1078, 0x1288, 0x1078, 0x4327, 0x1078,
- 0x49b7, 0x0c7f, 0x007c, 0x62c0, 0x82ff, 0x00c0, 0x4441, 0x0c7f,
- 0x007c, 0x2011, 0x320e, 0x1078, 0x42aa, 0x7828, 0xa092, 0x0002,
- 0x00c8, 0x4450, 0x8000, 0x782a, 0x1078, 0x323e, 0x0078, 0x443f,
- 0x1078, 0x320e, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, 0x0000,
- 0x0078, 0x443f, 0x1078, 0x4327, 0x3c00, 0x007e, 0x2011, 0x0209,
- 0x20e1, 0x4000, 0x2214, 0x007f, 0x20e0, 0x82ff, 0x0040, 0x4478,
- 0x62c0, 0x82ff, 0x00c0, 0x4478, 0x782b, 0x0000, 0x7824, 0xa065,
- 0x1040, 0x1288, 0x2009, 0x0013, 0x1078, 0x571c, 0x0c7f, 0x007c,
- 0x3900, 0xa082, 0x72fa, 0x00c8, 0x447f, 0x1078, 0x561f, 0x0c7e,
- 0x7824, 0xa065, 0x1040, 0x1288, 0x7804, 0xa086, 0x0004, 0x0040,
- 0x44fa, 0x7828, 0xa092, 0x2710, 0x00c8, 0x4495, 0x8000, 0x782a,
- 0x0c7f, 0x1078, 0x50a2, 0x0078, 0x4476, 0x6104, 0xa186, 0x0003,
- 0x00c0, 0x44ac, 0x0e7e, 0x2071, 0x7000, 0x70b4, 0x0e7f, 0xd08c,
- 0x0040, 0x44ac, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071, 0x7000,
- 0x1078, 0x3247, 0x0e7f, 0x0c7f, 0x1078, 0x6f55, 0x2009, 0x0014,
- 0x1078, 0x571c, 0x0c7f, 0x0078, 0x4476, 0x2001, 0x71d2, 0x2003,
- 0x0000, 0x62c0, 0x82ff, 0x00c0, 0x44c9, 0x782b, 0x0000, 0x7824,
- 0xa065, 0x1040, 0x1288, 0x2009, 0x0013, 0x1078, 0x5769, 0x0c7f,
- 0x007c, 0x0c7e, 0x0d7e, 0x3900, 0xa082, 0x72fa, 0x00c8, 0x44d2,
- 0x1078, 0x561f, 0x7824, 0xa005, 0x1040, 0x1288, 0x781c, 0xa06d,
- 0x1040, 0x1288, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160, 0x1078,
- 0x56f5, 0x693c, 0x81ff, 0x1040, 0x1288, 0x8109, 0x693e, 0x6854,
- 0xa015, 0x0040, 0x44ee, 0x7a1e, 0x0078, 0x44f0, 0x7918, 0x791e,
- 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f, 0x0c7f, 0x1078, 0x49b7,
- 0x0078, 0x44c7, 0x6104, 0xa186, 0x0002, 0x0040, 0x4505, 0xa186,
- 0x0004, 0x0040, 0x4505, 0x0078, 0x4489, 0x7808, 0xac06, 0x0040,
- 0x4489, 0x1078, 0x48be, 0x1078, 0x45af, 0x0c7f, 0x1078, 0x49b7,
- 0x0078, 0x4476, 0x0c7e, 0x6027, 0x0002, 0x2011, 0x71d5, 0x2013,
- 0x0000, 0x62c8, 0x82ff, 0x00c0, 0x452c, 0x62c4, 0x82ff, 0x00c0,
- 0x452c, 0x793c, 0xa1e5, 0x0000, 0x0040, 0x452a, 0x2009, 0x0049,
- 0x1078, 0x571c, 0x0c7f, 0x007c, 0x3908, 0xa192, 0x72fa, 0x00c8,
- 0x4533, 0x1078, 0x561f, 0x6017, 0x0010, 0x793c, 0x81ff, 0x0040,
- 0x452a, 0x7944, 0xa192, 0x7530, 0x00c8, 0x4552, 0x8108, 0x7946,
- 0x1078, 0x432c, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006,
- 0x00c0, 0x454e, 0x6017, 0x0012, 0x0078, 0x452a, 0x6017, 0x0016,
- 0x0078, 0x452a, 0x037e, 0x2019, 0x0001, 0x1078, 0x525b, 0x037f,
- 0x1078, 0x6f55, 0x793c, 0x2160, 0x2009, 0x004a, 0x1078, 0x571c,
- 0x0078, 0x452a, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x600f, 0x0000, 0x2c08, 0x2061, 0x71b6, 0x6020, 0x8000, 0x6022,
- 0x6010, 0xa005, 0x0040, 0x457d, 0xa080, 0x0003, 0x2102, 0x6112,
- 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116, 0x6112, 0x0078,
- 0x4578, 0x0d7e, 0x2069, 0x71b6, 0x6000, 0xd0d4, 0x0040, 0x4596,
- 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0, 0x4591, 0x2c00,
- 0x681e, 0x6804, 0xa084, 0x0007, 0x0079, 0x49bf, 0xc0d5, 0x6002,
- 0x6818, 0xa005, 0x0040, 0x45a8, 0x6056, 0x605b, 0x0000, 0x007e,
- 0x2c00, 0x681a, 0x0d7f, 0x685a, 0x2069, 0x71b6, 0x0078, 0x4588,
- 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x4588, 0x007e,
- 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08,
- 0x2061, 0x71b6, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040,
- 0x45ca, 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f,
- 0x007f, 0x007c, 0x610e, 0x610a, 0x0078, 0x45c5, 0x0c7e, 0x600f,
- 0x0000, 0x2c08, 0x2061, 0x71b6, 0x6034, 0xa005, 0x0040, 0x45de,
- 0xa080, 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136,
- 0x0078, 0x45dc, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e,
- 0x007e, 0x127e, 0x2071, 0x71b6, 0x7638, 0x2660, 0x2678, 0x2091,
- 0x8000, 0x8cff, 0x0040, 0x4644, 0x6018, 0xa080, 0x0028, 0x2004,
- 0xa206, 0x00c0, 0x463f, 0x703c, 0xac06, 0x00c0, 0x4604, 0x6003,
- 0x000a, 0x630a, 0x0078, 0x463f, 0x7038, 0xac36, 0x00c0, 0x460a,
- 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x4618, 0x2c00, 0xaf36,
- 0x0040, 0x4616, 0x2f00, 0x7036, 0x0078, 0x4618, 0x7037, 0x0000,
- 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x4621, 0x7e0e, 0x0078,
- 0x4622, 0x2678, 0x600f, 0x0000, 0x1078, 0x6336, 0x0040, 0x463a,
- 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x464d, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x64f5, 0x1078, 0x3840,
- 0x1078, 0x644a, 0x1078, 0x6457, 0x0c7f, 0x0078, 0x45f1, 0x2c78,
- 0x600c, 0x2060, 0x0078, 0x45f1, 0x127f, 0x007f, 0x027f, 0x067f,
+ 0x708e, 0x6808, 0x605e, 0x6810, 0x6062, 0x6138, 0xa10a, 0x0048,
+ 0x3392, 0x603a, 0x6814, 0x6066, 0x2099, 0x7096, 0xac88, 0x000a,
+ 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2099, 0x709a, 0xac88, 0x0006,
+ 0x21a0, 0x20a9, 0x0004, 0x53a3, 0x2069, 0x70ae, 0x6904, 0xa18c,
+ 0x00ff, 0x810f, 0x6808, 0xa084, 0x00ff, 0xa105, 0x606a, 0x690c,
+ 0x616e, 0x6810, 0x6072, 0x6818, 0x6076, 0xa182, 0x0211, 0x00c8,
+ 0x33bd, 0x2009, 0x0008, 0x0078, 0x33e7, 0xa182, 0x0259, 0x00c8,
+ 0x33c5, 0x2009, 0x0007, 0x0078, 0x33e7, 0xa182, 0x02c1, 0x00c8,
+ 0x33cd, 0x2009, 0x0006, 0x0078, 0x33e7, 0xa182, 0x0349, 0x00c8,
+ 0x33d5, 0x2009, 0x0005, 0x0078, 0x33e7, 0xa182, 0x0421, 0x00c8,
+ 0x33dd, 0x2009, 0x0004, 0x0078, 0x33e7, 0xa182, 0x0581, 0x00c8,
+ 0x33e5, 0x2009, 0x0003, 0x0078, 0x33e7, 0x2009, 0x0002, 0x6192,
+ 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x0e7e, 0x2071, 0x708d,
+ 0x2e04, 0x6896, 0x2071, 0x708e, 0x7004, 0x689a, 0x701c, 0x689e,
+ 0x0e7f, 0x007c, 0x2001, 0x6b9e, 0xa600, 0x2004, 0x127e, 0x2091,
+ 0x8000, 0x6178, 0xa10d, 0x617a, 0x127f, 0x007c, 0x2001, 0x6b9e,
+ 0xa600, 0x2004, 0x8002, 0x127e, 0x2091, 0x8000, 0x6178, 0xa10c,
+ 0x617a, 0x127f, 0x007c, 0x2001, 0x6b9e, 0xa600, 0x2004, 0x8002,
+ 0x127e, 0x2091, 0x8000, 0x617c, 0xa10c, 0x617e, 0x127f, 0x0078,
+ 0x3423, 0x1078, 0x32af, 0x1078, 0x3484, 0x00c0, 0x3421, 0x1078,
+ 0x343e, 0x007c, 0x2001, 0x6b9e, 0xa600, 0x2004, 0x127e, 0x2091,
+ 0x8000, 0x617c, 0xa10d, 0x617e, 0x127f, 0x0078, 0x3439, 0x1078,
+ 0x32f3, 0x1078, 0x3448, 0x00c0, 0x3437, 0x007c, 0x127e, 0x2091,
+ 0x8000, 0x1078, 0x42e3, 0x127f, 0x007c, 0xa01e, 0x0078, 0x344a,
+ 0x2019, 0x0001, 0xa00e, 0x127e, 0x2091, 0x8000, 0x604c, 0x2068,
+ 0x6000, 0xd0dc, 0x00c0, 0x346a, 0x8dff, 0x0040, 0x347f, 0x83ff,
+ 0x0040, 0x3462, 0x6844, 0xa084, 0x00ff, 0xa606, 0x0040, 0x346f,
+ 0x0078, 0x346a, 0x683c, 0xa406, 0x00c0, 0x346a, 0x6840, 0xa506,
+ 0x0040, 0x346f, 0x2d08, 0x6800, 0x2068, 0x0078, 0x3454, 0x6a00,
+ 0x604c, 0xad06, 0x00c0, 0x3477, 0x624e, 0x0078, 0x347a, 0xa180,
+ 0x0000, 0x2202, 0x82ff, 0x00c0, 0x347f, 0x6152, 0x8dff, 0x127f,
+ 0x007c, 0xa01e, 0x0078, 0x3486, 0x2019, 0x0001, 0xa00e, 0x6080,
+ 0x2068, 0x8dff, 0x0040, 0x34b4, 0x83ff, 0x0040, 0x3497, 0x6844,
+ 0xa084, 0x00ff, 0xa606, 0x0040, 0x34a4, 0x0078, 0x349f, 0x683c,
+ 0xa406, 0x00c0, 0x349f, 0x6840, 0xa506, 0x0040, 0x34a4, 0x2d08,
+ 0x6800, 0x2068, 0x0078, 0x3489, 0x6a00, 0x6080, 0xad06, 0x00c0,
+ 0x34ac, 0x6282, 0x0078, 0x34af, 0xa180, 0x0000, 0x2202, 0x82ff,
+ 0x00c0, 0x34b4, 0x6186, 0x8dff, 0x007c, 0x2001, 0x6b9e, 0xa600,
+ 0x2004, 0x6178, 0xa10c, 0x0040, 0x34bf, 0x2011, 0x0001, 0x617c,
+ 0xa10c, 0x0040, 0x34c5, 0xa295, 0x0002, 0x007c, 0x1078, 0x350f,
+ 0x0040, 0x34ce, 0x1078, 0x6079, 0x0078, 0x34d0, 0xa085, 0x0001,
+ 0x007c, 0x1078, 0x350f, 0x0040, 0x34d9, 0x1078, 0x6008, 0x0078,
+ 0x34db, 0xa085, 0x0001, 0x007c, 0x1078, 0x350f, 0x0040, 0x34e4,
+ 0x1078, 0x604e, 0x0078, 0x34e6, 0xa085, 0x0001, 0x007c, 0x1078,
+ 0x350f, 0x0040, 0x34ef, 0x1078, 0x6024, 0x0078, 0x34f1, 0xa085,
+ 0x0001, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080,
+ 0xa06d, 0x0040, 0x3507, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a,
+ 0x6847, 0x0000, 0x1078, 0x35c4, 0x007f, 0x0078, 0x34f8, 0x6083,
+ 0x0000, 0x6087, 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c, 0x609c,
+ 0xd0a4, 0x007c, 0x0f7e, 0x2079, 0x6c51, 0x7804, 0xd0a4, 0x0040,
+ 0x353b, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e,
+ 0x1078, 0x336a, 0x00c0, 0x352f, 0x6004, 0xa084, 0xff00, 0x8007,
+ 0xa086, 0x0006, 0x00c0, 0x352f, 0x6000, 0xc0ed, 0x6002, 0x017f,
+ 0x8108, 0x00f0, 0x351f, 0x0c7f, 0x157f, 0x2009, 0x07d0, 0x2011,
+ 0x353d, 0x1078, 0x40b6, 0x0f7f, 0x007c, 0x2011, 0x353d, 0x1078,
+ 0x4026, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e,
+ 0x1078, 0x336a, 0x00c0, 0x3569, 0x6000, 0xd0ec, 0x0040, 0x3569,
+ 0x047e, 0x62a0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029,
+ 0x1078, 0x6b0a, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x2019, 0x0029,
+ 0x1078, 0x43ff, 0x1078, 0x4344, 0x2009, 0x0000, 0x1078, 0x6946,
+ 0x047f, 0x017f, 0x8108, 0x00f0, 0x3547, 0x0c7f, 0x157f, 0x007c,
+ 0x0c7e, 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c,
+ 0x2071, 0x6cff, 0x7003, 0x0001, 0x7007, 0x0000, 0x7013, 0x0000,
+ 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x704b, 0x0001,
+ 0x704f, 0x0000, 0x705b, 0x0020, 0x705f, 0x0040, 0x707f, 0x0000,
+ 0x007c, 0x0e7e, 0x2071, 0x6cff, 0x684c, 0xa005, 0x00c0, 0x359f,
+ 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078, 0x35c2, 0x6a60,
+ 0x7236, 0x6b64, 0x733a, 0x6868, 0x703e, 0x7076, 0x686c, 0x7042,
+ 0x707a, 0x684c, 0x702e, 0x6844, 0x7032, 0x2009, 0x000d, 0x200a,
+ 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210,
+ 0x2100, 0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007,
+ 0x0001, 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x6838, 0xd0fc, 0x00c0,
+ 0x3615, 0x6804, 0xa00d, 0x0040, 0x35e3, 0x0d7e, 0x0e7e, 0x2071,
+ 0x6c00, 0x027e, 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210,
+ 0x2d00, 0x81ff, 0x00c0, 0x35d4, 0x702e, 0x7098, 0xa200, 0x709a,
+ 0x027f, 0x0e7f, 0x0d7f, 0x2071, 0x6cff, 0x701c, 0xa005, 0x00c0,
+ 0x3626, 0x0068, 0x3624, 0x2071, 0x6c51, 0x7004, 0xd09c, 0x0040,
+ 0x3624, 0x6934, 0xa186, 0x0103, 0x00c0, 0x3637, 0x6948, 0x6844,
+ 0xa105, 0x00c0, 0x3617, 0x2009, 0x8020, 0x2071, 0x0000, 0x7018,
+ 0xd084, 0x00c0, 0x3624, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a,
+ 0x701b, 0x0001, 0x2091, 0x4080, 0x2071, 0x6c00, 0x702c, 0x206a,
+ 0x2d00, 0x702e, 0x7098, 0x8000, 0x709a, 0x0e7f, 0x007c, 0x6844,
+ 0xa086, 0x0100, 0x00c0, 0x3624, 0x6868, 0xa005, 0x00c0, 0x3624,
+ 0x2009, 0x8020, 0x0078, 0x35fd, 0x2071, 0x6cff, 0x2d08, 0x206b,
+ 0x0000, 0x7010, 0x8000, 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040,
+ 0x3634, 0x6902, 0x0078, 0x3635, 0x711e, 0x0078, 0x3615, 0xa18c,
+ 0x00ff, 0xa186, 0x0017, 0x0040, 0x3645, 0xa186, 0x001e, 0x0040,
+ 0x3645, 0xa18e, 0x001f, 0x00c0, 0x3624, 0x684c, 0xd0cc, 0x0040,
+ 0x3624, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3624,
+ 0x2009, 0x8021, 0x0078, 0x35fd, 0x007e, 0x6837, 0x0103, 0x20a9,
+ 0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f,
+ 0x684a, 0x6952, 0x007c, 0x2071, 0x6cff, 0x7004, 0x0079, 0x3668,
+ 0x3670, 0x367f, 0x370f, 0x3710, 0x3720, 0x3726, 0x3671, 0x36fd,
+ 0x007c, 0x127e, 0x2091, 0x8000, 0x0068, 0x367e, 0x2009, 0x000d,
+ 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x701c,
+ 0xa06d, 0x0040, 0x36fc, 0x0e7e, 0x2071, 0x6c51, 0x7004, 0xd09c,
+ 0x0040, 0x36de, 0x6934, 0xa186, 0x0103, 0x00c0, 0x36b4, 0x6948,
+ 0x6844, 0xa105, 0x00c0, 0x36d1, 0x2009, 0x8020, 0x127e, 0x2091,
+ 0x8000, 0x0068, 0x36b0, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0,
+ 0x36b0, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001,
+ 0x2091, 0x4080, 0x127f, 0x0e7f, 0x1078, 0x3759, 0x0078, 0x36fc,
+ 0x127f, 0x0e7f, 0x0078, 0x36fc, 0xa18c, 0x00ff, 0xa186, 0x0017,
+ 0x0040, 0x36c2, 0xa186, 0x001e, 0x0040, 0x36c2, 0xa18e, 0x001f,
+ 0x00c0, 0x36de, 0x684c, 0xd0cc, 0x0040, 0x36de, 0x6850, 0xa084,
+ 0x00ff, 0xa086, 0x0001, 0x00c0, 0x36de, 0x2009, 0x8021, 0x0078,
+ 0x3696, 0x6844, 0xa086, 0x0100, 0x00c0, 0x36de, 0x6868, 0xa005,
+ 0x00c0, 0x36de, 0x2009, 0x8020, 0x0078, 0x3696, 0x0e7f, 0x1078,
+ 0x376d, 0x0040, 0x36fc, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff,
+ 0xa086, 0x0003, 0x00c0, 0x36f3, 0x810f, 0xa18c, 0x00ff, 0x8101,
+ 0x0040, 0x36f3, 0x710e, 0x7007, 0x0003, 0x1078, 0x378d, 0x7050,
+ 0xa086, 0x0100, 0x0040, 0x3710, 0x007c, 0x701c, 0xa06d, 0x0040,
+ 0x370e, 0x1078, 0x376d, 0x0040, 0x370e, 0x7007, 0x0003, 0x1078,
+ 0x378d, 0x7050, 0xa086, 0x0100, 0x0040, 0x3710, 0x007c, 0x007c,
+ 0x7050, 0xa09e, 0x0100, 0x00c0, 0x3719, 0x7007, 0x0004, 0x0078,
+ 0x3720, 0xa086, 0x0200, 0x00c0, 0x371f, 0x7007, 0x0005, 0x007c,
+ 0x1078, 0x3727, 0x7006, 0x1078, 0x3759, 0x007c, 0x007c, 0x702c,
+ 0x7130, 0x8108, 0xa102, 0x0048, 0x3734, 0xa00e, 0x7034, 0x706e,
+ 0x7038, 0x7072, 0x0078, 0x373e, 0x706c, 0xa080, 0x0040, 0x706e,
+ 0x00c8, 0x373e, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c,
+ 0x8001, 0x700e, 0x00c0, 0x3752, 0x127e, 0x2091, 0x8000, 0x0068,
+ 0x3755, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001,
+ 0x127f, 0x007c, 0x2001, 0x0007, 0x007c, 0x2001, 0x0006, 0x127f,
+ 0x007c, 0x701c, 0xa06d, 0x0040, 0x376c, 0x127e, 0x2091, 0x8000,
+ 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, 0x00c0, 0x3769,
+ 0x701a, 0x127f, 0x1078, 0x12db, 0x007c, 0x2019, 0x000d, 0x2304,
+ 0x230c, 0xa10e, 0x0040, 0x377c, 0x2304, 0x230c, 0xa10e, 0x0040,
+ 0x377c, 0xa006, 0x0078, 0x378c, 0x732c, 0x8319, 0x7130, 0xa102,
+ 0x00c0, 0x3786, 0x2300, 0xa005, 0x0078, 0x378c, 0x0048, 0x378b,
+ 0xa302, 0x0078, 0x378c, 0x8002, 0x007c, 0x2d00, 0x7026, 0xa080,
+ 0x000d, 0x7056, 0x7053, 0x0000, 0x127e, 0x2091, 0x8000, 0x2009,
+ 0x6dd3, 0x2104, 0xc08d, 0x200a, 0x127f, 0x1078, 0x132c, 0x007c,
+ 0x2071, 0x6ccd, 0x7003, 0x0000, 0x7007, 0x0000, 0x700f, 0x0000,
+ 0x702b, 0x0001, 0x704f, 0x0000, 0x7053, 0x0001, 0x705f, 0x0020,
+ 0x7063, 0x0040, 0x7083, 0x0000, 0x708b, 0x0000, 0x708f, 0x0001,
+ 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x6ccd, 0x6848, 0xa005,
+ 0x00c0, 0x37c9, 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078,
+ 0x37ee, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a,
+ 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, 0x2009,
+ 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084,
+ 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, 0xc084,
+ 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, 0xa006, 0x0e7f, 0x007c,
+ 0x2b78, 0x2071, 0x6ccd, 0x7004, 0x1079, 0x384e, 0x700c, 0x0079,
+ 0x37f9, 0x37fe, 0x37f3, 0x37f3, 0x37f3, 0x37f3, 0x007c, 0x700c,
+ 0x0079, 0x3802, 0x3807, 0x384c, 0x384c, 0x384d, 0x384d, 0x7830,
+ 0x7930, 0xa106, 0x0040, 0x3811, 0x7830, 0x7930, 0xa106, 0x00c0,
+ 0x3837, 0x7030, 0xa10a, 0x0040, 0x3837, 0x00c8, 0x3819, 0x712c,
+ 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x3838, 0x1078, 0x12a7, 0x0040,
+ 0x3837, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, 0x7057,
+ 0x0000, 0x127e, 0x007e, 0x2091, 0x8000, 0x2009, 0x6dd3, 0x2104,
+ 0xc085, 0x200a, 0x007f, 0x700e, 0x127f, 0x1078, 0x132c, 0x007c,
+ 0x1078, 0x12a7, 0x0040, 0x3837, 0x2d00, 0x705a, 0x1078, 0x12a7,
+ 0x00c0, 0x3844, 0x0078, 0x3823, 0x2d00, 0x7086, 0x7063, 0x0080,
+ 0x2001, 0x0004, 0x0078, 0x3827, 0x007c, 0x007c, 0x385f, 0x3860,
+ 0x3897, 0x3898, 0x384c, 0x38ce, 0x38d3, 0x390a, 0x390b, 0x3926,
+ 0x3927, 0x3928, 0x3929, 0x392a, 0x392b, 0x3994, 0x39be, 0x007c,
+ 0x700c, 0x0079, 0x3863, 0x3868, 0x386b, 0x387b, 0x3896, 0x3896,
+ 0x1078, 0x37ff, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e,
+ 0x1078, 0x3c9b, 0x0040, 0x3878, 0x2091, 0x8000, 0x1078, 0x37ff,
+ 0x0d7f, 0x0078, 0x3884, 0x127e, 0x8001, 0x700e, 0x1078, 0x3c9b,
+ 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000,
+ 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020, 0x00c8, 0x3893, 0x1079,
+ 0x38ae, 0x127f, 0x007c, 0x127f, 0x1078, 0x392c, 0x007c, 0x007c,
+ 0x007c, 0x0e7e, 0x2071, 0x6ccd, 0x700c, 0x0079, 0x389f, 0x38a4,
+ 0x38a4, 0x38a4, 0x38a6, 0x38aa, 0x0e7f, 0x007c, 0x700f, 0x0001,
+ 0x0078, 0x38ac, 0x700f, 0x0002, 0x0e7f, 0x007c, 0x392c, 0x392c,
+ 0x3948, 0x392c, 0x3a31, 0x392c, 0x392c, 0x392c, 0x392c, 0x392c,
+ 0x3948, 0x3a76, 0x3abf, 0x3b17, 0x3b2a, 0x392c, 0x392c, 0x3964,
+ 0x3948, 0x392c, 0x392c, 0x397a, 0x3bb1, 0x3bce, 0x392c, 0x3964,
+ 0x392c, 0x392c, 0x392c, 0x392c, 0x397a, 0x3bce, 0x7020, 0x2068,
+ 0x1078, 0x12db, 0x007c, 0x700c, 0x0079, 0x38d6, 0x38db, 0x38de,
+ 0x38ee, 0x3909, 0x3909, 0x1078, 0x37ff, 0x007c, 0x127e, 0x8001,
+ 0x700e, 0x7058, 0x007e, 0x1078, 0x3c9b, 0x0040, 0x38eb, 0x2091,
+ 0x8000, 0x1078, 0x37ff, 0x0d7f, 0x0078, 0x38f7, 0x127e, 0x8001,
+ 0x700e, 0x1078, 0x3c9b, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
+ 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a,
+ 0x00c8, 0x3906, 0x1079, 0x390c, 0x127f, 0x007c, 0x127f, 0x1078,
+ 0x392c, 0x007c, 0x007c, 0x007c, 0x392c, 0x3948, 0x3a1b, 0x392c,
+ 0x3948, 0x392c, 0x3948, 0x3948, 0x392c, 0x3948, 0x3a1b, 0x3948,
+ 0x3948, 0x3948, 0x3948, 0x3948, 0x392c, 0x3948, 0x3a1b, 0x392c,
+ 0x392c, 0x3948, 0x392c, 0x392c, 0x392c, 0x3948, 0x007c, 0x007c,
+ 0x007c, 0x007c, 0x007c, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084,
+ 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x35c4,
+ 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0e5,
+ 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x35c4, 0x127f, 0x007c,
+ 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, 0x127e,
+ 0x2091, 0x8000, 0x1078, 0x35c4, 0x127f, 0x007c, 0x7007, 0x0001,
+ 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x35c4, 0x127f, 0x007c, 0x6834, 0x8007, 0xa084, 0x00ff,
+ 0x0040, 0x393a, 0x8001, 0x00c0, 0x3971, 0x7007, 0x0001, 0x0078,
+ 0x39fa, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b,
+ 0x39fa, 0x007c, 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080,
+ 0x0024, 0x2098, 0x20a1, 0x6cf8, 0x53a3, 0x6858, 0x7012, 0xa082,
+ 0x0401, 0x00c8, 0x3956, 0x6884, 0xa08a, 0x0003, 0x00c8, 0x3956,
+ 0xa080, 0x39eb, 0x2004, 0x70c6, 0x7010, 0xa015, 0x0040, 0x39de,
+ 0x1078, 0x12a7, 0x00c0, 0x399f, 0x7007, 0x000f, 0x007c, 0x2d00,
+ 0x7022, 0x70c4, 0x2060, 0x6000, 0x6836, 0x6004, 0xad00, 0x7096,
+ 0x6008, 0xa20a, 0x00c8, 0x39ae, 0xa00e, 0x2200, 0x7112, 0x620c,
+ 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x39b7, 0xa108, 0x719a,
+ 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x1312, 0x7090, 0xa08e,
+ 0x0100, 0x0040, 0x39d2, 0xa086, 0x0200, 0x0040, 0x39ca, 0x7007,
+ 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x12db, 0x7014, 0x2068,
+ 0x0078, 0x3956, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000,
+ 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x3994, 0x7014, 0x2068,
+ 0x7007, 0x0001, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0040,
+ 0x3beb, 0x0078, 0x39fa, 0x39ee, 0x39f2, 0x39f6, 0x0002, 0x0011,
+ 0x0007, 0x0004, 0x000a, 0x000f, 0x0005, 0x0006, 0x0012, 0x000f,
+ 0x0005, 0x0006, 0x2009, 0x6c2a, 0x210c, 0x81ff, 0x00c0, 0x3a15,
+ 0x6838, 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x1078, 0x31b5,
+ 0x00c0, 0x3a0b, 0x007c, 0x1078, 0x3654, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x35c4, 0x127f, 0x0078, 0x3a0a, 0x2001, 0x0028, 0x2009,
+ 0x0000, 0x0078, 0x3a0b, 0x7018, 0x6802, 0x2d08, 0x2068, 0x6906,
+ 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x3a2a, 0x7007, 0x0006,
+ 0x0078, 0x3a30, 0x7014, 0x2068, 0x7007, 0x0001, 0x7048, 0x107a,
+ 0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x6848,
+ 0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001, 0x0040, 0x3a5c,
+ 0x2009, 0x0000, 0x20a9, 0x007e, 0xa096, 0x0002, 0x0040, 0x3a5c,
+ 0xa005, 0x00c0, 0x3a73, 0x6944, 0x810f, 0xa18c, 0x00ff, 0x1078,
+ 0x336a, 0x00c0, 0x3a73, 0x067e, 0x6e44, 0xa6b4, 0x000f, 0x1078,
+ 0x3406, 0x067f, 0x0078, 0x3a73, 0x047e, 0x2011, 0x6c0c, 0x2224,
+ 0xc484, 0xc48c, 0x2412, 0x047f, 0x0c7e, 0x1078, 0x336a, 0x00c0,
+ 0x3a6f, 0x2091, 0x8000, 0x607b, 0x0000, 0x2091, 0x8001, 0x8108,
+ 0x00f0, 0x3a65, 0x0c7f, 0x1078, 0x12db, 0x007c, 0x127e, 0x2091,
+ 0x8000, 0x7007, 0x0001, 0x2001, 0x6c52, 0x2004, 0xd0a4, 0x0040,
+ 0x3ab6, 0x6944, 0x1078, 0x3cb7, 0x6100, 0xd184, 0x0040, 0x3a9b,
+ 0x6858, 0xa084, 0x00ff, 0x00c0, 0x3ab9, 0x6000, 0xd084, 0x0040,
+ 0x3ab6, 0x6004, 0xa005, 0x00c0, 0x3abc, 0x6003, 0x0000, 0x600b,
+ 0x0000, 0x0078, 0x3ab3, 0x2011, 0x0001, 0x6860, 0xa005, 0x00c0,
+ 0x3aa3, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858, 0xa084, 0x00ff,
+ 0x0040, 0x3ab6, 0x6006, 0x6858, 0x8007, 0xa084, 0x00ff, 0x0040,
+ 0x3ab6, 0x600a, 0x6202, 0x127f, 0x0078, 0x3c8a, 0x127f, 0x0078,
+ 0x3c82, 0x127f, 0x0078, 0x3c7a, 0x127f, 0x0078, 0x3c7e, 0x127e,
+ 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x6c52, 0x2004, 0xd0a4,
+ 0x0040, 0x3b14, 0x6944, 0x1078, 0x3cb7, 0x6000, 0xa084, 0x0001,
+ 0x0040, 0x3b14, 0x6204, 0x6308, 0x6c48, 0xa484, 0x0003, 0x0040,
+ 0x3aec, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0, 0x3ae5, 0x2100,
+ 0xa210, 0x0048, 0x3b11, 0x0078, 0x3aec, 0x8001, 0x00c0, 0x3b11,
+ 0x2100, 0xa212, 0x0048, 0x3b11, 0xa484, 0x000c, 0x0040, 0x3b06,
+ 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004, 0x00c0, 0x3afe,
+ 0x2100, 0xa318, 0x0048, 0x3b11, 0x0078, 0x3b06, 0xa082, 0x0004,
+ 0x00c0, 0x3b11, 0x2100, 0xa31a, 0x0048, 0x3b11, 0x6860, 0xa005,
+ 0x0040, 0x3b0c, 0x8000, 0x6016, 0x6206, 0x630a, 0x127f, 0x0078,
+ 0x3c8a, 0x127f, 0x0078, 0x3c86, 0x127f, 0x0078, 0x3c82, 0x127e,
+ 0x2091, 0x8000, 0x7007, 0x0001, 0x6944, 0x1078, 0x3cb7, 0x6308,
+ 0x8318, 0x0048, 0x3b27, 0x630a, 0x127f, 0x0078, 0x3c98, 0x127f,
+ 0x0078, 0x3c86, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001,
+ 0x684c, 0xd0ac, 0x0040, 0x3b3e, 0x027e, 0x2009, 0x0000, 0x2011,
+ 0xfcff, 0x1078, 0x416c, 0x027f, 0x0078, 0x3b74, 0x6858, 0xa005,
+ 0x0040, 0x3b88, 0x685c, 0xa065, 0x0040, 0x3b84, 0x2001, 0x6c2a,
+ 0x2004, 0xa005, 0x0040, 0x3b50, 0x1078, 0x60e8, 0x0078, 0x3b56,
+ 0x6013, 0x0400, 0x2009, 0x0041, 0x1078, 0x544c, 0x6958, 0xa18c,
+ 0xe600, 0xa186, 0x2000, 0x0040, 0x3b6c, 0xa186, 0x0400, 0x0040,
+ 0x3b6c, 0x6944, 0x0c7e, 0x1078, 0x40c4, 0x6000, 0xa084, 0xfdff,
+ 0x6002, 0x0c7f, 0x0078, 0x3b74, 0x027e, 0x2009, 0x0000, 0x2011,
+ 0xfdff, 0x1078, 0x416c, 0x027f, 0x684c, 0xd0c4, 0x0040, 0x3b80,
+ 0x6944, 0x1078, 0x40c4, 0x6008, 0x8000, 0x0048, 0x3b80, 0x600a,
+ 0x0c7f, 0x127f, 0x0078, 0x3c8a, 0x0c7f, 0x127f, 0x0078, 0x3c82,
+ 0x6954, 0xa186, 0x002a, 0x00c0, 0x3b94, 0x2001, 0x6c0c, 0x200c,
+ 0xc194, 0x2102, 0x0078, 0x3b74, 0xa186, 0x0020, 0x0040, 0x3ba9,
+ 0xa186, 0x0029, 0x00c0, 0x3b84, 0x6944, 0xa18c, 0xff00, 0x810f,
+ 0x1078, 0x336a, 0x00c0, 0x3b74, 0x6000, 0xc0e4, 0x6002, 0x0078,
+ 0x3b74, 0x685c, 0xa065, 0x0040, 0x3b84, 0x6017, 0x0014, 0x0078,
+ 0x3b74, 0x6944, 0x1078, 0x3cb7, 0x6000, 0xa084, 0x0001, 0x0040,
+ 0x3bca, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048, 0x3bc4, 0x6206,
+ 0x2091, 0x8001, 0x0078, 0x3c98, 0x2091, 0x8001, 0x6853, 0x0016,
+ 0x0078, 0x3c91, 0x6853, 0x0007, 0x0078, 0x3c91, 0x6834, 0x8007,
+ 0xa084, 0x00ff, 0x00c0, 0x3bd8, 0x1078, 0x393a, 0x0078, 0x3bea,
+ 0x2030, 0x8001, 0x00c0, 0x3be2, 0x7007, 0x0001, 0x1078, 0x3beb,
+ 0x0078, 0x3bea, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a,
+ 0x704b, 0x3beb, 0x007c, 0x0e7e, 0x2009, 0x6c2a, 0x210c, 0x81ff,
+ 0x00c0, 0x3c6c, 0x2009, 0x6c0c, 0x210c, 0xd194, 0x00c0, 0x3c76,
+ 0x6848, 0x2070, 0xae82, 0x7200, 0x0048, 0x3c5b, 0x2001, 0x6c15,
+ 0x2004, 0xae02, 0x00c8, 0x3c5b, 0x6944, 0x1078, 0x3cb7, 0x6100,
+ 0xa184, 0x0001, 0x0040, 0x3c41, 0xa184, 0x0100, 0x00c0, 0x3c5f,
+ 0xa184, 0x0200, 0x00c0, 0x3c63, 0x601c, 0xa005, 0x00c0, 0x3c67,
+ 0x711c, 0xa186, 0x0006, 0x00c0, 0x3c46, 0x6853, 0x0000, 0x6803,
+ 0x0000, 0x2d08, 0x127e, 0x2091, 0x8000, 0x7010, 0xa005, 0x00c0,
+ 0x3c38, 0x7112, 0x7018, 0xa065, 0x0040, 0x3c6b, 0x6000, 0xd0e4,
+ 0x00c0, 0x3c70, 0x2e60, 0x1078, 0x40cd, 0x127f, 0x0e7f, 0x007c,
+ 0x2068, 0x6800, 0xa005, 0x00c0, 0x3c38, 0x6902, 0x127f, 0x0e7f,
+ 0x007c, 0x0e7f, 0x6853, 0x0006, 0x0078, 0x3c91, 0x6944, 0xa18c,
+ 0xff00, 0x810f, 0x1078, 0x336a, 0x00c0, 0x3c71, 0x6000, 0xd0e4,
+ 0x00c0, 0x3c71, 0x711c, 0xa186, 0x0007, 0x00c0, 0x3c5b, 0x6853,
+ 0x0002, 0x0078, 0x3c73, 0x6853, 0x0008, 0x0078, 0x3c73, 0x6853,
+ 0x000e, 0x0078, 0x3c73, 0x6853, 0x0017, 0x0078, 0x3c73, 0x6853,
+ 0x0035, 0x0078, 0x3c73, 0x127f, 0x6853, 0x0028, 0x0078, 0x3c73,
+ 0x127f, 0x6853, 0x0029, 0x0e7f, 0x0078, 0x3c91, 0x6853, 0x002a,
+ 0x0078, 0x3c73, 0x2009, 0x003e, 0x0078, 0x3c8c, 0x2009, 0x0004,
+ 0x0078, 0x3c8c, 0x2009, 0x0006, 0x0078, 0x3c8c, 0x2009, 0x0016,
+ 0x0078, 0x3c8c, 0x2009, 0x0001, 0x6854, 0xa084, 0xff00, 0xa105,
+ 0x6856, 0x2091, 0x8000, 0x1078, 0x35c4, 0x2091, 0x8001, 0x007c,
+ 0x1078, 0x12db, 0x007c, 0x702c, 0x7130, 0x8108, 0xa102, 0x0048,
+ 0x3ca8, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076, 0x0078, 0x3cb4,
+ 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x3cb4, 0x7074, 0xa081,
+ 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, 0x7132, 0x007c, 0x0d7e,
+ 0x1078, 0x40c4, 0x0d7f, 0x007c, 0x0d7e, 0x2011, 0x0004, 0x2204,
+ 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1, 0x0002, 0x3d08,
+ 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040, 0x3cd3, 0xa086,
+ 0x1000, 0x00c0, 0x3cf4, 0x20e1, 0x0004, 0x3d60, 0xd1bc, 0x00c0,
+ 0x3cda, 0x3e60, 0xac84, 0x0007, 0x00c0, 0x3cf4, 0xac82, 0x7200,
+ 0x0048, 0x3cf4, 0x6854, 0xac02, 0x00c8, 0x3cf4, 0x2009, 0x0047,
+ 0x1078, 0x544c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x7a28, 0x7a1c,
+ 0xd284, 0x00c0, 0x3cc5, 0x007c, 0xa016, 0x1078, 0x1505, 0x0078,
+ 0x3cea, 0x157e, 0x137e, 0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28,
+ 0xa584, 0x0070, 0x00c0, 0x3d22, 0xa484, 0x7000, 0xa086, 0x1000,
+ 0x00c0, 0x3d22, 0x1078, 0x3d2f, 0x0040, 0x3d22, 0x20e1, 0x3000,
+ 0x7828, 0x7828, 0x1078, 0x3d4d, 0x147f, 0x137f, 0x157f, 0x2009,
+ 0x6db8, 0x2104, 0xa005, 0x00c0, 0x3d1e, 0x007c, 0x1078, 0x4713,
+ 0x0078, 0x3d1d, 0x1078, 0x6b3d, 0x1078, 0x3d2f, 0x20e1, 0x3000,
+ 0x7828, 0x7828, 0x147f, 0x137f, 0x157f, 0x0078, 0x3d1d, 0xa484,
+ 0x01ff, 0x6872, 0xa005, 0x0040, 0x3d41, 0xa080, 0x001f, 0xa084,
+ 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5,
+ 0x007c, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a,
+ 0x53a5, 0xa085, 0x0001, 0x0078, 0x3d40, 0x7000, 0xa084, 0xff00,
+ 0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x3d5a, 0x0078,
+ 0x3e3e, 0x007c, 0xa196, 0x2000, 0x00c0, 0x3d6b, 0x6900, 0xa18e,
+ 0x0001, 0x00c0, 0x3d67, 0x1078, 0x2a02, 0x0078, 0x3d59, 0x1078,
+ 0x3d73, 0x0078, 0x3d59, 0xa196, 0x8000, 0x00c0, 0x3d59, 0x1078,
+ 0x3ec4, 0x0078, 0x3d59, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f,
+ 0xa196, 0x0001, 0x0040, 0x3d80, 0xa196, 0x0023, 0x00c0, 0x3e36,
+ 0xa08e, 0x0023, 0x00c0, 0x3db1, 0x1078, 0x3f36, 0x0040, 0x3e36,
+ 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x3d99, 0x7034,
+ 0xa005, 0x00c0, 0x3e36, 0x2009, 0x0015, 0x1078, 0x544c, 0x0078,
+ 0x3e36, 0xa08e, 0x0210, 0x00c0, 0x3da3, 0x2009, 0x0015, 0x1078,
+ 0x544c, 0x0078, 0x3e36, 0xa08e, 0x0100, 0x00c0, 0x3e36, 0x7034,
+ 0xa005, 0x00c0, 0x3e36, 0x2009, 0x0016, 0x1078, 0x544c, 0x0078,
+ 0x3e36, 0xa08e, 0x0022, 0x00c0, 0x3e36, 0x7030, 0xa08e, 0x0300,
+ 0x00c0, 0x3dc2, 0x7034, 0xa005, 0x00c0, 0x3e36, 0x2009, 0x0017,
+ 0x0078, 0x3e1e, 0xa08e, 0x0500, 0x00c0, 0x3dce, 0x7034, 0xa005,
+ 0x00c0, 0x3e36, 0x2009, 0x0018, 0x0078, 0x3e1e, 0xa08e, 0x2010,
+ 0x00c0, 0x3dd6, 0x2009, 0x0019, 0x0078, 0x3e1e, 0xa08e, 0x2110,
+ 0x00c0, 0x3dde, 0x2009, 0x001a, 0x0078, 0x3e1e, 0xa08e, 0x5200,
+ 0x00c0, 0x3dea, 0x7034, 0xa005, 0x00c0, 0x3e36, 0x2009, 0x001b,
+ 0x0078, 0x3e1e, 0xa08e, 0x5000, 0x00c0, 0x3df6, 0x7034, 0xa005,
+ 0x00c0, 0x3e36, 0x2009, 0x001c, 0x0078, 0x3e1e, 0xa08e, 0x1200,
+ 0x00c0, 0x3e02, 0x7034, 0xa005, 0x00c0, 0x3e36, 0x2009, 0x0024,
+ 0x0078, 0x3e1e, 0xa08e, 0x2400, 0x00c0, 0x3e08, 0x0078, 0x3e1c,
+ 0xa08e, 0x5300, 0x00c0, 0x3e0e, 0x0078, 0x3e1c, 0xa08e, 0x0f00,
+ 0x00c0, 0x3e16, 0x2009, 0x0020, 0x0078, 0x3e1e, 0xa08e, 0x5300,
+ 0x00c0, 0x3e1c, 0x0078, 0x3e1c, 0x2009, 0x001d, 0x017e, 0x2011,
+ 0x7083, 0x2204, 0x1078, 0x1f61, 0x1078, 0x3333, 0x00c0, 0x3e38,
+ 0x0c7e, 0x1078, 0x53bf, 0x0040, 0x3e3b, 0x017f, 0x611a, 0x601f,
+ 0x0004, 0x7120, 0x610a, 0x017f, 0x1078, 0x544c, 0x0c7f, 0x007c,
+ 0x017f, 0x0078, 0x3e36, 0x0c7f, 0x0078, 0x3e38, 0xa084, 0x0007,
+ 0x0079, 0x3e43, 0x007c, 0x3e4b, 0x3e4b, 0x3e4b, 0x3e4b, 0x3e4b,
+ 0x3e4c, 0x3e65, 0x3ead, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x3e64,
+ 0x7120, 0x2160, 0xac8c, 0x0007, 0x00c0, 0x3e64, 0xac8a, 0x7200,
+ 0x0048, 0x3e64, 0x6854, 0xac02, 0x00c8, 0x3e64, 0x7124, 0x610a,
+ 0x2009, 0x0046, 0x1078, 0x544c, 0x007c, 0x0c7e, 0x7110, 0xd1bc,
+ 0x00c0, 0x3eab, 0x2011, 0x7083, 0x2204, 0xa080, 0x2154, 0x200c,
+ 0xa18c, 0xff00, 0x810f, 0x1078, 0x336a, 0x00c0, 0x3eab, 0x6204,
+ 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0, 0x3e90, 0x0c7e,
+ 0x1078, 0x53bf, 0x017f, 0x0040, 0x3eab, 0x611a, 0x601f, 0x0006,
+ 0x7120, 0x610a, 0x2009, 0x0044, 0x1078, 0x544c, 0x0078, 0x3eab,
+ 0x0c7e, 0x1078, 0x53bf, 0x017f, 0x0040, 0x3eab, 0x611a, 0x601f,
+ 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x3ea3, 0x6007,
+ 0x0005, 0x0078, 0x3ea5, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078,
+ 0x4311, 0x1078, 0x4713, 0x0c7f, 0x007c, 0x7110, 0xd1bc, 0x0040,
+ 0x3ec3, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0, 0x3ec3, 0xac82,
+ 0x7200, 0x0048, 0x3ec3, 0x6854, 0xac02, 0x00c8, 0x3ec3, 0x2009,
+ 0x0045, 0x1078, 0x544c, 0x007c, 0x7110, 0xa18c, 0xff00, 0x810f,
+ 0xa18e, 0x0000, 0x00c0, 0x3ed4, 0xa084, 0x000f, 0xa08a, 0x0006,
+ 0x10c8, 0x126a, 0x1079, 0x3ed5, 0x007c, 0x3edb, 0x3edc, 0x3edb,
+ 0x3edb, 0x3f18, 0x3f27, 0x007c, 0x7110, 0xd1bc, 0x00c0, 0x3f17,
+ 0x700c, 0x1078, 0x1f61, 0x1078, 0x3333, 0x00c0, 0x3f17, 0x6204,
+ 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0, 0x3f00, 0x0c7e,
+ 0x1078, 0x53bf, 0x017f, 0x0040, 0x3f17, 0x611a, 0x601f, 0x0005,
+ 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, 0x544c, 0x0078, 0x3f17,
+ 0x0c7e, 0x1078, 0x53bf, 0x017f, 0x0040, 0x3f17, 0x611a, 0x601f,
+ 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x3f13, 0x2009,
+ 0x0005, 0x0078, 0x3f15, 0x2009, 0x0001, 0x1078, 0x544c, 0x007c,
+ 0x7110, 0xd1bc, 0x0040, 0x3f26, 0x1078, 0x3f36, 0x0040, 0x3f26,
+ 0x7124, 0x610a, 0x2009, 0x0089, 0x1078, 0x544c, 0x007c, 0x7110,
+ 0xd1bc, 0x0040, 0x3f35, 0x1078, 0x3f36, 0x0040, 0x3f35, 0x7124,
+ 0x610a, 0x2009, 0x008a, 0x1078, 0x544c, 0x007c, 0x7020, 0x2060,
+ 0xac84, 0x0007, 0x00c0, 0x3f49, 0xac82, 0x7200, 0x0048, 0x3f49,
+ 0x2001, 0x6c15, 0x2004, 0xac02, 0x00c8, 0x3f49, 0xa085, 0x0001,
+ 0x007c, 0xa006, 0x0078, 0x3f48, 0x2071, 0x6dc3, 0x7003, 0x0003,
+ 0x700f, 0x0361, 0xa006, 0x701a, 0x7012, 0x7017, 0x7200, 0x7007,
+ 0x0000, 0x7026, 0x702b, 0x4e24, 0x7032, 0x7037, 0x4e70, 0x703b,
+ 0x0002, 0x703f, 0x0000, 0x007c, 0x2071, 0x6dc3, 0x00e0, 0x4013,
+ 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x00c0, 0x3fdc, 0x700f,
+ 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, 0x8000, 0x7138, 0x8109,
+ 0x713a, 0x00c0, 0x3fda, 0x703b, 0x0002, 0x2009, 0x0100, 0x2104,
+ 0xa082, 0x0003, 0x00c8, 0x3fda, 0x703c, 0xa086, 0x0001, 0x00c0,
+ 0x3fb7, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040,
+ 0x3f95, 0x6803, 0x1000, 0x0078, 0x3f9c, 0x6804, 0xa084, 0x1000,
+ 0x0040, 0x3f9c, 0x6803, 0x0100, 0x6803, 0x0000, 0x703f, 0x0000,
+ 0x2069, 0x6db0, 0x6804, 0xa082, 0x0006, 0x00c0, 0x3fa9, 0x6807,
+ 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, 0x3fb0, 0x6833, 0x0000,
+ 0x1078, 0x4713, 0x1078, 0x47c3, 0x0d7f, 0x0078, 0x3fda, 0x0d7e,
+ 0x2069, 0x6c00, 0x6944, 0x6860, 0xa102, 0x00c8, 0x3fd9, 0x2069,
+ 0x6db0, 0x6804, 0xa086, 0x0000, 0x00c0, 0x3fd9, 0x6830, 0xa086,
+ 0x0000, 0x00c0, 0x3fd9, 0x703f, 0x0001, 0x6807, 0x0006, 0x6833,
+ 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, 0x2069, 0x0140, 0x6803,
+ 0x0600, 0x0d7f, 0x0078, 0x3fdf, 0x127e, 0x2091, 0x8000, 0x7024,
+ 0xa00d, 0x0040, 0x3ff0, 0x7020, 0x8001, 0x7022, 0x00c0, 0x3ff0,
+ 0x7023, 0x0009, 0x8109, 0x7126, 0x00c0, 0x3ff0, 0x7028, 0x107a,
+ 0x7030, 0xa00d, 0x0040, 0x4001, 0x702c, 0x8001, 0x702e, 0x00c0,
+ 0x4001, 0x702f, 0x0009, 0x8109, 0x7132, 0x00c0, 0x4001, 0x7034,
+ 0x107a, 0x7018, 0xa00d, 0x0040, 0x4012, 0x7008, 0x8001, 0x700a,
+ 0x00c0, 0x4012, 0x700b, 0x0009, 0x8109, 0x711a, 0x00c0, 0x4012,
+ 0x701c, 0x107a, 0x127f, 0x7004, 0x0079, 0x4016, 0x403d, 0x403e,
+ 0x405a, 0x0e7e, 0x2071, 0x6dc3, 0x7018, 0xa005, 0x00c0, 0x4024,
+ 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0e7e, 0x007e,
+ 0x2071, 0x6dc3, 0x701c, 0xa206, 0x00c0, 0x4030, 0x701a, 0x701e,
+ 0x007f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x6dc3, 0x6088, 0xa102,
+ 0x0048, 0x403b, 0x618a, 0x0e7f, 0x007c, 0x007c, 0x7110, 0x1078,
+ 0x336a, 0x00c0, 0x4050, 0x6088, 0x8001, 0x0048, 0x4050, 0x608a,
+ 0x00c0, 0x4050, 0x127e, 0x2091, 0x8000, 0x1078, 0x4713, 0x127f,
+ 0x8108, 0xa182, 0x007e, 0x0048, 0x4058, 0xa00e, 0x7007, 0x0002,
+ 0x7112, 0x007c, 0x7014, 0x2060, 0x127e, 0x2091, 0x8000, 0x6014,
+ 0xa005, 0x0040, 0x4089, 0x8001, 0x6016, 0x00c0, 0x4089, 0x611c,
+ 0xa186, 0x0003, 0x0040, 0x4070, 0xa186, 0x0006, 0x00c0, 0x4087,
+ 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0048, 0x4087, 0xa082,
+ 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, 0x4080, 0x2001, 0x1999,
+ 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0078, 0x4089, 0x1078,
+ 0x5e70, 0x127f, 0xac88, 0x0008, 0x7116, 0x2001, 0x6c16, 0x2004,
+ 0xa102, 0x0048, 0x4097, 0x7017, 0x7200, 0x7007, 0x0000, 0x007c,
+ 0x0e7e, 0x2071, 0x6dc3, 0x7027, 0x07d0, 0x7023, 0x0009, 0x703b,
+ 0x0002, 0x0e7f, 0x007c, 0x2001, 0x6dcc, 0x2003, 0x0000, 0x007c,
+ 0x0e7e, 0x2071, 0x6dc3, 0x7033, 0x07d0, 0x702f, 0x0009, 0x0e7f,
+ 0x007c, 0x2011, 0x6dcf, 0x2013, 0x0000, 0x007c, 0x0e7e, 0x2071,
+ 0x6dc3, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0c7e,
+ 0x2061, 0x6e54, 0x0c7f, 0x007c, 0xa184, 0x000f, 0x8003, 0x8003,
+ 0x8003, 0xa080, 0x6e54, 0x2060, 0x007c, 0x6854, 0xa08a, 0x199a,
+ 0x0048, 0x40d4, 0x2001, 0x1999, 0xa005, 0x00c0, 0x40e4, 0x6944,
+ 0x0c7e, 0x1078, 0x40c4, 0x6014, 0x0c7f, 0xa005, 0x00c0, 0x40e9,
+ 0x2001, 0x001e, 0x0078, 0x40e9, 0xa08e, 0xffff, 0x00c0, 0x40e9,
+ 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c,
+ 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x4124, 0xd0b4, 0x00c0, 0x4100,
+ 0xd0bc, 0x00c0, 0x4112, 0x2009, 0x0006, 0x1078, 0x4147, 0x007c,
+ 0xd0fc, 0x0040, 0x410d, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040,
+ 0x4140, 0xa08e, 0x0000, 0x00c0, 0x4140, 0x2009, 0x0043, 0x1078,
+ 0x544c, 0x007c, 0xd0fc, 0x0040, 0x411f, 0xa084, 0x0003, 0xa08e,
+ 0x0003, 0x0040, 0x4140, 0xa08e, 0x0000, 0x00c0, 0x4140, 0x2009,
+ 0x0042, 0x1078, 0x544c, 0x007c, 0xd0fc, 0x0040, 0x4136, 0xa084,
+ 0x0003, 0xa08e, 0x0003, 0x0040, 0x4140, 0xa08e, 0x0002, 0x0040,
+ 0x413a, 0x2009, 0x0041, 0x1078, 0x544c, 0x007c, 0x1078, 0x4145,
+ 0x0078, 0x4135, 0x2009, 0x0043, 0x1078, 0x544c, 0x0078, 0x4135,
+ 0x2009, 0x0004, 0x1078, 0x4147, 0x007c, 0x2009, 0x0001, 0x6010,
+ 0xa0ec, 0xf000, 0x0040, 0x416b, 0x2068, 0x6952, 0x6800, 0x6012,
+ 0xa186, 0x0001, 0x00c0, 0x4165, 0x694c, 0xa18c, 0x8100, 0xa18e,
+ 0x8100, 0x00c0, 0x4165, 0x0c7e, 0x6944, 0x1078, 0x40c4, 0x6204,
+ 0x8210, 0x0048, 0x4164, 0x6206, 0x0c7f, 0x1078, 0x35c4, 0x6010,
+ 0xa06d, 0x10c0, 0x40cd, 0x007c, 0x157e, 0x0c7e, 0x20a9, 0x0010,
+ 0x2061, 0x6e54, 0x6000, 0x81ff, 0x0040, 0x4179, 0xa205, 0x0078,
+ 0x417a, 0xa204, 0x6002, 0xace0, 0x0008, 0x00f0, 0x4172, 0x0c7f,
+ 0x157f, 0x007c, 0x6808, 0xa005, 0x0040, 0x418a, 0x8001, 0x680a,
+ 0xa085, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x2079, 0x6db0,
+ 0x127f, 0x0d7e, 0x2069, 0x6db0, 0x6803, 0x0005, 0x2069, 0x0004,
+ 0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027,
+ 0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x41a6, 0x41b0, 0x41d5,
+ 0x4224, 0x41b6, 0x41d5, 0x41ae, 0x41ae, 0x41ae, 0x1078, 0x126a,
+ 0x1078, 0x40a3, 0x1078, 0x4713, 0x0c7f, 0x007c, 0x62c0, 0x82ff,
+ 0x00c0, 0x41bc, 0x0c7f, 0x007c, 0x2011, 0x308c, 0x1078, 0x4026,
+ 0x7828, 0xa092, 0x0002, 0x00c8, 0x41cb, 0x8000, 0x782a, 0x1078,
+ 0x30c0, 0x0078, 0x41ba, 0x1078, 0x308c, 0x7807, 0x0003, 0x7827,
+ 0x0000, 0x782b, 0x0000, 0x0078, 0x41ba, 0x1078, 0x40a3, 0x62c0,
+ 0x82ff, 0x00c0, 0x41e7, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040,
+ 0x126a, 0x2009, 0x0013, 0x1078, 0x544c, 0x0c7f, 0x007c, 0x3900,
+ 0xa082, 0x6ef4, 0x00c8, 0x41ee, 0x1078, 0x5397, 0x0c7e, 0x7824,
+ 0xa065, 0x1040, 0x126a, 0x7804, 0xa086, 0x0004, 0x0040, 0x4262,
+ 0x7828, 0xa092, 0x2710, 0x00c8, 0x4204, 0x8000, 0x782a, 0x0c7f,
+ 0x1078, 0x4e09, 0x0078, 0x41e5, 0x6104, 0xa186, 0x0003, 0x00c0,
+ 0x421b, 0x0e7e, 0x2071, 0x6c00, 0x70b4, 0x0e7f, 0xd08c, 0x0040,
+ 0x421b, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071, 0x6c00, 0x1078,
+ 0x30c9, 0x0e7f, 0x0c7f, 0x1078, 0x6b90, 0x2009, 0x0014, 0x1078,
+ 0x544c, 0x0c7f, 0x0078, 0x41e5, 0x2001, 0x6dcc, 0x2003, 0x0000,
+ 0x62c0, 0x82ff, 0x00c0, 0x4238, 0x782b, 0x0000, 0x7824, 0xa065,
+ 0x1040, 0x126a, 0x2009, 0x0013, 0x1078, 0x5499, 0x0c7f, 0x007c,
+ 0x0c7e, 0x0d7e, 0x7824, 0xa005, 0x1040, 0x126a, 0x781c, 0xa06d,
+ 0x1040, 0x126a, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160, 0x1078,
+ 0x5425, 0x693c, 0x81ff, 0x1040, 0x126a, 0x8109, 0x693e, 0x6854,
+ 0xa015, 0x0040, 0x4256, 0x7a1e, 0x0078, 0x4258, 0x7918, 0x791e,
+ 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f, 0x0c7f, 0x1078, 0x4713,
+ 0x0078, 0x4236, 0x6104, 0xa186, 0x0002, 0x0040, 0x426d, 0xa186,
+ 0x0004, 0x0040, 0x426d, 0x0078, 0x41f8, 0x7808, 0xac06, 0x0040,
+ 0x41f8, 0x1078, 0x461a, 0x1078, 0x4311, 0x0c7f, 0x1078, 0x4713,
+ 0x0078, 0x41e5, 0x0c7e, 0x6027, 0x0002, 0x2011, 0x6dcf, 0x2013,
+ 0x0000, 0x62c8, 0x82ff, 0x00c0, 0x4294, 0x62c4, 0x82ff, 0x00c0,
+ 0x4294, 0x793c, 0xa1e5, 0x0000, 0x0040, 0x4292, 0x2009, 0x0049,
+ 0x1078, 0x544c, 0x0c7f, 0x007c, 0x3908, 0xa192, 0x6ef4, 0x00c8,
+ 0x429b, 0x1078, 0x5397, 0x6017, 0x0010, 0x793c, 0x81ff, 0x0040,
+ 0x4292, 0x7944, 0xa192, 0x2710, 0x00c8, 0x42ba, 0x8108, 0x7946,
+ 0x1078, 0x40a8, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006,
+ 0x00c0, 0x42b6, 0x6017, 0x0012, 0x0078, 0x4292, 0x6017, 0x0016,
+ 0x0078, 0x4292, 0x1078, 0x6b90, 0x793c, 0x2160, 0x2009, 0x004a,
+ 0x1078, 0x544c, 0x0078, 0x4292, 0x007e, 0x017e, 0x0c7e, 0x127e,
+ 0x600f, 0x0000, 0x2c08, 0x2061, 0x6db0, 0x2091, 0x8000, 0x6020,
+ 0x8000, 0x6022, 0x6010, 0xa005, 0x0040, 0x42df, 0xa080, 0x0003,
+ 0x2102, 0x6112, 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116,
+ 0x6112, 0x0078, 0x42da, 0x0d7e, 0x2069, 0x6db0, 0x6000, 0xd0d4,
+ 0x0040, 0x42f8, 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0,
+ 0x42f3, 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, 0x0079, 0x471b,
+ 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0040, 0x430a, 0x6056, 0x605b,
+ 0x0000, 0x007e, 0x2c00, 0x681a, 0x0d7f, 0x685a, 0x2069, 0x6db0,
+ 0x0078, 0x42ea, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078,
+ 0x42ea, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f,
+ 0x0000, 0x2c08, 0x2061, 0x6db0, 0x6020, 0x8000, 0x6022, 0x6008,
+ 0xa005, 0x0040, 0x432c, 0xa080, 0x0003, 0x2102, 0x610a, 0x127f,
+ 0x0c7f, 0x017f, 0x007f, 0x007c, 0x610e, 0x610a, 0x0078, 0x4327,
+ 0x0c7e, 0x600f, 0x0000, 0x2c08, 0x2061, 0x6db0, 0x6034, 0xa005,
+ 0x0040, 0x4340, 0xa080, 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c,
+ 0x613a, 0x6136, 0x0078, 0x433e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
+ 0x067e, 0x027e, 0x007e, 0x127e, 0x2071, 0x6db0, 0x7638, 0x2660,
+ 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x43a4, 0x6018, 0xa080,
+ 0x0028, 0x2004, 0xa206, 0x00c0, 0x439f, 0x703c, 0xac06, 0x00c0,
+ 0x4366, 0x6003, 0x000a, 0x630a, 0x0078, 0x439f, 0x7038, 0xac36,
+ 0x00c0, 0x436c, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x437a,
+ 0x2c00, 0xaf36, 0x0040, 0x4378, 0x2f00, 0x7036, 0x0078, 0x437a,
+ 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x4383,
+ 0x7e0e, 0x0078, 0x4384, 0x2678, 0x600f, 0x0000, 0x1078, 0x5fcd,
+ 0x0040, 0x439a, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0,
+ 0x43ad, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x35c4,
+ 0x1078, 0x60db, 0x1078, 0x60e8, 0x0c7f, 0x0078, 0x4353, 0x2c78,
+ 0x600c, 0x2060, 0x0078, 0x4353, 0x127f, 0x007f, 0x027f, 0x067f,
0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006,
- 0x00c0, 0x462f, 0x1078, 0x6e8b, 0x0078, 0x463a, 0x007e, 0x067e,
+ 0x00c0, 0x4391, 0x1078, 0x6ac6, 0x0078, 0x439a, 0x007e, 0x067e,
0x0c7e, 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091, 0x8000,
- 0x2079, 0x71b6, 0x7838, 0xa065, 0x0040, 0x468d, 0x600c, 0x007e,
- 0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x4674, 0x6003, 0x000a,
- 0x630a, 0x2c30, 0x0078, 0x468a, 0x1078, 0x6336, 0x0040, 0x4688,
- 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x4696, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3840, 0x1078, 0x644a,
- 0x1078, 0x6457, 0x007f, 0x0078, 0x4663, 0x7e3a, 0x7e36, 0x127f,
+ 0x2079, 0x6db0, 0x7838, 0xa065, 0x0040, 0x43ed, 0x600c, 0x007e,
+ 0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x43d4, 0x6003, 0x000a,
+ 0x630a, 0x2c30, 0x0078, 0x43ea, 0x1078, 0x5fcd, 0x0040, 0x43e8,
+ 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x43f6, 0x6837,
+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x35c4, 0x1078, 0x60db,
+ 0x1078, 0x60e8, 0x007f, 0x0078, 0x43c3, 0x7e3a, 0x7e36, 0x127f,
0x0f7f, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x467f, 0x1078, 0x6e8b, 0x0078, 0x4688, 0x027e,
- 0x1078, 0x46b3, 0x1078, 0x474c, 0x027f, 0x007c, 0x0f7e, 0x127e,
- 0x2079, 0x71b6, 0x2091, 0x8000, 0x1078, 0x47e3, 0x1078, 0x484b,
+ 0x0006, 0x00c0, 0x43df, 0x1078, 0x6ac6, 0x0078, 0x43e8, 0x027e,
+ 0x1078, 0x4413, 0x1078, 0x44aa, 0x027f, 0x007c, 0x0f7e, 0x127e,
+ 0x2079, 0x6db0, 0x2091, 0x8000, 0x1078, 0x453f, 0x1078, 0x45a7,
0x127f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e,
- 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x71b6, 0x7614, 0x2660,
- 0x2678, 0x8cff, 0x0040, 0x473b, 0x6018, 0xa080, 0x0028, 0x2004,
- 0xa206, 0x00c0, 0x4736, 0x7024, 0xac06, 0x00c0, 0x46f9, 0x2069,
- 0x0100, 0x68c0, 0xa005, 0x0040, 0x46f4, 0x1078, 0x50b0, 0x68c3,
- 0x0000, 0x1078, 0x5525, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
- 0x6b04, 0xa384, 0x1000, 0x0040, 0x46e9, 0x6803, 0x0100, 0x6803,
- 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x46f1, 0x6827,
- 0x0001, 0x037f, 0x0078, 0x46f9, 0x6003, 0x0009, 0x630a, 0x0078,
- 0x4736, 0x7014, 0xac36, 0x00c0, 0x46ff, 0x660c, 0x7616, 0x7010,
- 0xac36, 0x00c0, 0x470d, 0x2c00, 0xaf36, 0x0040, 0x470b, 0x2f00,
- 0x7012, 0x0078, 0x470d, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00,
- 0xaf06, 0x0040, 0x4716, 0x7e0e, 0x0078, 0x4717, 0x2678, 0x600f,
- 0x0000, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040, 0x472f, 0x601c,
- 0xa086, 0x0003, 0x00c0, 0x4743, 0x6837, 0x0103, 0x6b4a, 0x6847,
- 0x0000, 0x1078, 0x64f5, 0x1078, 0x3840, 0x1078, 0x644a, 0x1078,
- 0x6457, 0x1078, 0x53f5, 0x0c7f, 0x0078, 0x46c1, 0x2c78, 0x600c,
- 0x2060, 0x0078, 0x46c1, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f,
- 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x4724,
- 0x1078, 0x6e8b, 0x0078, 0x472f, 0x0c7e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0xa280, 0x7120, 0x2004, 0xa065, 0x0040, 0x47df, 0x0f7e,
- 0x0e7e, 0x0d7e, 0x067e, 0x2071, 0x71b6, 0x6654, 0x7018, 0xac06,
- 0x00c0, 0x4763, 0x761a, 0x701c, 0xac06, 0x00c0, 0x476f, 0x86ff,
- 0x00c0, 0x476e, 0x7018, 0x701e, 0x0078, 0x476f, 0x761e, 0x6058,
- 0xa07d, 0x0040, 0x4774, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x477a,
- 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4,
- 0xc0dc, 0x6002, 0x1078, 0x3473, 0x0040, 0x47db, 0x7624, 0x86ff,
- 0x0040, 0x47cb, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x47cb,
- 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x47c2, 0x1078,
- 0x50b0, 0x68c3, 0x0000, 0x1078, 0x5525, 0x7027, 0x0000, 0x037e,
- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x47ab, 0x6803,
+ 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x6db0, 0x7614, 0x2660,
+ 0x2678, 0x8cff, 0x0040, 0x4499, 0x6018, 0xa080, 0x0028, 0x2004,
+ 0xa206, 0x00c0, 0x4494, 0x7024, 0xac06, 0x00c0, 0x4459, 0x2069,
+ 0x0100, 0x68c0, 0xa005, 0x0040, 0x4454, 0x1078, 0x4e17, 0x68c3,
+ 0x0000, 0x1078, 0x529d, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
+ 0x6b04, 0xa384, 0x1000, 0x0040, 0x4449, 0x6803, 0x0100, 0x6803,
+ 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4451, 0x6827,
+ 0x0001, 0x037f, 0x0078, 0x4459, 0x6003, 0x0009, 0x630a, 0x0078,
+ 0x4494, 0x7014, 0xac36, 0x00c0, 0x445f, 0x660c, 0x7616, 0x7010,
+ 0xac36, 0x00c0, 0x446d, 0x2c00, 0xaf36, 0x0040, 0x446b, 0x2f00,
+ 0x7012, 0x0078, 0x446d, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00,
+ 0xaf06, 0x0040, 0x4476, 0x7e0e, 0x0078, 0x4477, 0x2678, 0x600f,
+ 0x0000, 0x6010, 0x2068, 0x1078, 0x5fcd, 0x0040, 0x448d, 0x601c,
+ 0xa086, 0x0003, 0x00c0, 0x44a1, 0x6837, 0x0103, 0x6b4a, 0x6847,
+ 0x0000, 0x1078, 0x35c4, 0x1078, 0x60db, 0x1078, 0x60e8, 0x1078,
+ 0x516d, 0x0c7f, 0x0078, 0x4421, 0x2c78, 0x600c, 0x2060, 0x0078,
+ 0x4421, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
+ 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x4484, 0x1078, 0x6ac6,
+ 0x0078, 0x448d, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0xa280,
+ 0x6d20, 0x2004, 0xa065, 0x0040, 0x453b, 0x0f7e, 0x0e7e, 0x0d7e,
+ 0x067e, 0x2071, 0x6db0, 0x6654, 0x7018, 0xac06, 0x00c0, 0x44c1,
+ 0x761a, 0x701c, 0xac06, 0x00c0, 0x44cd, 0x86ff, 0x00c0, 0x44cc,
+ 0x7018, 0x701e, 0x0078, 0x44cd, 0x761e, 0x6058, 0xa07d, 0x0040,
+ 0x44d2, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x44d8, 0x2f00, 0x685a,
+ 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002,
+ 0x1078, 0x32e7, 0x0040, 0x4537, 0x7624, 0x86ff, 0x0040, 0x4529,
+ 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x4529, 0x0d7e, 0x2069,
+ 0x0100, 0x68c0, 0xa005, 0x0040, 0x4520, 0x1078, 0x4e17, 0x68c3,
+ 0x0000, 0x1078, 0x529d, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
+ 0x6b04, 0xa384, 0x1000, 0x0040, 0x4509, 0x6803, 0x0100, 0x6803,
+ 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4511, 0x6827,
+ 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x451a,
+ 0x8001, 0x603e, 0x2660, 0x1078, 0x60e8, 0x0c7f, 0x0078, 0x4529,
+ 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078,
+ 0x44e0, 0x8dff, 0x0040, 0x4533, 0x6837, 0x0103, 0x6b4a, 0x6847,
+ 0x0000, 0x1078, 0x35c4, 0x1078, 0x516d, 0x0078, 0x44e0, 0x067f,
+ 0x0d7f, 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f, 0x007c, 0x007e,
+ 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814, 0xa065, 0x0040,
+ 0x4597, 0x600c, 0x007e, 0x600f, 0x0000, 0x7824, 0xac06, 0x00c0,
+ 0x457c, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4576, 0x1078,
+ 0x4e17, 0x68c3, 0x0000, 0x1078, 0x529d, 0x7827, 0x0000, 0x037e,
+ 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x456b, 0x6803,
0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
- 0x47b3, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005,
- 0x0040, 0x47bc, 0x8001, 0x603e, 0x2660, 0x1078, 0x6457, 0x0c7f,
- 0x0078, 0x47cb, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a,
- 0x0c7f, 0x0078, 0x4782, 0x8dff, 0x0040, 0x47d7, 0x6837, 0x0103,
- 0x6b4a, 0x6847, 0x0000, 0x1078, 0x64f5, 0x1078, 0x3840, 0x1078,
- 0x53f5, 0x0078, 0x4782, 0x067f, 0x0d7f, 0x0e7f, 0x0f7f, 0x127f,
- 0x007f, 0x0c7f, 0x007c, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x2031,
- 0x0000, 0x7814, 0xa065, 0x0040, 0x483b, 0x600c, 0x007e, 0x600f,
- 0x0000, 0x7824, 0xac06, 0x00c0, 0x4820, 0x2069, 0x0100, 0x68c0,
- 0xa005, 0x0040, 0x481a, 0x1078, 0x50b0, 0x68c3, 0x0000, 0x1078,
- 0x5525, 0x7827, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384,
- 0x1000, 0x0040, 0x480f, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069,
- 0x0100, 0x6824, 0xd084, 0x0040, 0x4817, 0x6827, 0x0001, 0x037f,
- 0x0078, 0x4820, 0x6003, 0x0009, 0x630a, 0x2c30, 0x0078, 0x4838,
- 0x6010, 0x2068, 0x1078, 0x6336, 0x0040, 0x4834, 0x601c, 0xa086,
- 0x0003, 0x00c0, 0x4842, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
- 0x1078, 0x3840, 0x1078, 0x644a, 0x1078, 0x6457, 0x1078, 0x53f5,
- 0x007f, 0x0078, 0x47ea, 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f,
- 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x482b, 0x1078,
- 0x6e8b, 0x0078, 0x4834, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x7818,
- 0xa065, 0x0040, 0x48b7, 0x6054, 0x007e, 0x6057, 0x0000, 0x605b,
- 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x3473, 0x0040,
- 0x48b4, 0x7e24, 0x86ff, 0x0040, 0x48a6, 0xa680, 0x0004, 0x2004,
- 0xad06, 0x00c0, 0x48a6, 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005,
- 0x0040, 0x489d, 0x1078, 0x50b0, 0x68c3, 0x0000, 0x1078, 0x5525,
- 0x7827, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000,
- 0x0040, 0x4886, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
- 0x6824, 0xd084, 0x0040, 0x488e, 0x6827, 0x0001, 0x037f, 0x0d7f,
- 0x0c7e, 0x603c, 0xa005, 0x0040, 0x4897, 0x8001, 0x603e, 0x2660,
- 0x1078, 0x6457, 0x0c7f, 0x0078, 0x48a6, 0x0d7f, 0x0c7e, 0x2660,
- 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078, 0x485d, 0x8dff, 0x0040,
- 0x48b0, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3840,
- 0x1078, 0x53f5, 0x0078, 0x485d, 0x007f, 0x0078, 0x4850, 0x781e,
- 0x781a, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x0e7e, 0x0c7e,
- 0x2071, 0x71b6, 0x7004, 0xa084, 0x0007, 0x0079, 0x48c7, 0x48d1,
- 0x48d4, 0x48ed, 0x4909, 0x494e, 0x48d1, 0x48d1, 0x48cf, 0x1078,
- 0x1288, 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x48e2,
- 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0040, 0x48e9, 0x7216,
- 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f,
- 0x007c, 0x7216, 0x7212, 0x0078, 0x48e2, 0x6018, 0x2060, 0x1078,
- 0x3473, 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0040,
- 0x48fe, 0x6054, 0xa015, 0x0040, 0x4905, 0x721e, 0x7007, 0x0000,
- 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078,
- 0x48fe, 0x7024, 0xa065, 0x0040, 0x494b, 0x700c, 0xac06, 0x00c0,
- 0x4920, 0x1078, 0x53f5, 0x600c, 0xa015, 0x0040, 0x491c, 0x720e,
- 0x600f, 0x0000, 0x0078, 0x4949, 0x720e, 0x720a, 0x0078, 0x4949,
- 0x7014, 0xac06, 0x00c0, 0x4933, 0x1078, 0x53f5, 0x600c, 0xa015,
- 0x0040, 0x492f, 0x7216, 0x600f, 0x0000, 0x0078, 0x4949, 0x7216,
- 0x7212, 0x0078, 0x4949, 0x6018, 0x2060, 0x1078, 0x3473, 0x6000,
- 0xc0dc, 0x6002, 0x1078, 0x53f5, 0x701c, 0xa065, 0x0040, 0x4949,
- 0x6054, 0xa015, 0x0040, 0x4947, 0x721e, 0x0078, 0x4949, 0x7218,
- 0x721e, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065,
- 0x0040, 0x495b, 0x1078, 0x53f5, 0x600c, 0xa015, 0x0040, 0x4962,
- 0x720e, 0x600f, 0x0000, 0x1078, 0x5525, 0x7027, 0x0000, 0x0c7f,
- 0x0e7f, 0x007c, 0x720e, 0x720a, 0x0078, 0x495b, 0x0d7e, 0x2069,
- 0x71b6, 0x6830, 0xa084, 0x0003, 0x0079, 0x496e, 0x4974, 0x4976,
- 0x499c, 0x4974, 0x1078, 0x1288, 0x0d7f, 0x007c, 0x0c7e, 0x6840,
- 0xa086, 0x0001, 0x0040, 0x4992, 0x683c, 0xa065, 0x0040, 0x4987,
- 0x600c, 0xa015, 0x0040, 0x498e, 0x6a3a, 0x600f, 0x0000, 0x6833,
- 0x0000, 0x683f, 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836,
- 0x0078, 0x4987, 0x6843, 0x0000, 0x6838, 0xa065, 0x0040, 0x4987,
- 0x6003, 0x0003, 0x0078, 0x4987, 0x0c7e, 0x6843, 0x0000, 0x6847,
- 0x0000, 0x683c, 0xa065, 0x0040, 0x49b4, 0x600c, 0xa015, 0x0040,
- 0x49b0, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, 0x0078, 0x49b4,
- 0x683f, 0x0000, 0x683a, 0x6836, 0x0c7f, 0x0d7f, 0x007c, 0x0d7e,
- 0x2069, 0x71b6, 0x6804, 0xa084, 0x0007, 0x0079, 0x49bf, 0x49c9,
- 0x4a56, 0x4a56, 0x4a56, 0x4a56, 0x4a58, 0x4a56, 0x49c7, 0x1078,
- 0x1288, 0x6820, 0xa005, 0x00c0, 0x49cf, 0x0d7f, 0x007c, 0x0c7e,
- 0x680c, 0xa065, 0x0040, 0x49de, 0x6807, 0x0004, 0x6826, 0x682b,
- 0x0000, 0x1078, 0x4a9e, 0x0c7f, 0x0d7f, 0x007c, 0x6814, 0xa065,
- 0x0040, 0x49ec, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x1078,
- 0x4a9e, 0x0c7f, 0x0d7f, 0x007c, 0x0e7e, 0x037e, 0x6a1c, 0xa2f5,
- 0x0000, 0x0040, 0x4a51, 0x704c, 0xa00d, 0x0040, 0x49fb, 0x7088,
- 0xa005, 0x0040, 0x4a13, 0x7054, 0xa075, 0x0040, 0x4a04, 0xa20e,
- 0x0040, 0x4a51, 0x0078, 0x4a09, 0x6818, 0xa20e, 0x0040, 0x4a51,
- 0x2070, 0x704c, 0xa00d, 0x0040, 0x49fb, 0x7088, 0xa005, 0x00c0,
- 0x49fb, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x00c8, 0x49fb,
- 0x1078, 0x56c4, 0x0040, 0x4a51, 0x8318, 0x733e, 0x6112, 0x2e10,
- 0x621a, 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, 0x0048, 0x4a2a,
- 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f,
- 0x0f7e, 0x2c78, 0x71a0, 0xa1e0, 0x2207, 0x2c0c, 0xa18c, 0x00ff,
- 0x2061, 0x0100, 0x619a, 0x1078, 0x4db8, 0x7300, 0xc3dd, 0x7302,
- 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f, 0x0003,
- 0x7803, 0x0001, 0x7807, 0x0040, 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f,
- 0x007c, 0x037f, 0x0e7f, 0x0c7f, 0x0078, 0x4a4f, 0x0d7f, 0x007c,
- 0x0c7e, 0x680c, 0xa065, 0x0040, 0x4a64, 0x6807, 0x0004, 0x6826,
- 0x682b, 0x0000, 0x1078, 0x4a9e, 0x0c7f, 0x0d7f, 0x007c, 0x0f7e,
- 0x0d7e, 0x2069, 0x71b6, 0x6830, 0xa086, 0x0000, 0x00c0, 0x4a85,
- 0x6838, 0xa07d, 0x0040, 0x4a85, 0x6833, 0x0001, 0x683e, 0x6847,
- 0x0000, 0x127e, 0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078, 0x19b3,
- 0x00c0, 0x4a88, 0x127f, 0x1078, 0x4fe3, 0x0d7f, 0x0f7f, 0x007c,
- 0x127f, 0x6843, 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0040,
- 0x4a9a, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000,
- 0x0078, 0x4a85, 0x683a, 0x6836, 0x0078, 0x4a94, 0x601c, 0xa084,
- 0x0007, 0x1079, 0x4aa4, 0x007c, 0x4aac, 0x4ab1, 0x4cf0, 0x4d88,
- 0x4ab1, 0x4cf0, 0x4d88, 0x4aac, 0x1078, 0x48be, 0x1078, 0x49b7,
- 0x007c, 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a,
- 0x0030, 0x10c8, 0x1288, 0x6118, 0x2178, 0x79a0, 0xa1f8, 0x2207,
- 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0x1079,
- 0x4acf, 0x0f7f, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x4b01,
- 0x4b39, 0x4b51, 0x4b8a, 0x4bb7, 0x4bbf, 0x4be0, 0x4bf1, 0x4c02,
- 0x4c0a, 0x4c1b, 0x4c0a, 0x4c63, 0x4bf1, 0x4c84, 0x4c8c, 0x4c02,
- 0x4c8c, 0x4c9d, 0x4aff, 0x4aff, 0x4aff, 0x4aff, 0x4aff, 0x4aff,
- 0x4aff, 0x4aff, 0x4aff, 0x4aff, 0x4aff, 0x4aff, 0x516c, 0x5181,
- 0x4aff, 0x4aff, 0x4aff, 0x4aff, 0x4be0, 0x4c0a, 0x4aff, 0x4b51,
- 0x4b8a, 0x4aff, 0x563f, 0x4c0a, 0x4aff, 0x5662, 0x4c0a, 0x1078,
- 0x1288, 0x20a1, 0x020b, 0x1078, 0x4cb2, 0x20a3, 0x5200, 0x20a3,
- 0x0000, 0x0d7e, 0x2069, 0x7051, 0x6804, 0xd084, 0x0040, 0x4b1b,
- 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078, 0x1feb, 0x21a2, 0x017f,
- 0x0d7f, 0x0078, 0x4b20, 0x0d7f, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x20a9, 0x0004, 0x2099, 0x7005, 0x53a6, 0x20a9, 0x0004, 0x2099,
- 0x7001, 0x53a6, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, 0x509c,
- 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cb2, 0x20a3, 0x0500, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2, 0x20a9,
- 0x0004, 0x2099, 0x7005, 0x53a6, 0x60c3, 0x0010, 0x1078, 0x509c,
- 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cb2, 0x20a3, 0x0300, 0x20a3,
- 0x0000, 0x2099, 0x71a0, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0004,
- 0x2099, 0x7005, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7001, 0x53a6,
- 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4b6a, 0x20a9, 0x0008,
- 0x20a3, 0x0000, 0x00f0, 0x4b70, 0x2099, 0x71a8, 0x20a9, 0x0008,
- 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4b7b, 0x20a9,
- 0x000a, 0x20a3, 0x0000, 0x00f0, 0x4b81, 0x60c3, 0x0074, 0x1078,
- 0x509c, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cb2, 0x20a3, 0x2010,
- 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x7051, 0x7904,
- 0x0f7f, 0xd1ac, 0x00c0, 0x4ba6, 0xa085, 0x0020, 0xd1a4, 0x0040,
- 0x4bab, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x509c, 0x007c, 0x20a1,
- 0x020b, 0x1078, 0x4cb2, 0x20a3, 0x5000, 0x0078, 0x4b57, 0x20a1,
- 0x020b, 0x1078, 0x4cb2, 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x509c, 0x007c,
- 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0200, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x509c,
- 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0100, 0x20a3,
- 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x1078,
- 0x509c, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0200,
- 0x0078, 0x4b57, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0100,
- 0x20a3, 0x0000, 0x20a3, 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008,
- 0x1078, 0x509c, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x4cd1,
- 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068,
- 0x6894, 0xa086, 0x0014, 0x00c0, 0x4c41, 0x6998, 0xa184, 0xc000,
- 0x00c0, 0x4c3d, 0xd1ec, 0x0040, 0x4c39, 0x20a3, 0x2100, 0x0078,
- 0x4c43, 0x20a3, 0x0100, 0x0078, 0x4c43, 0x20a3, 0x0400, 0x0078,
- 0x4c43, 0x20a3, 0x0700, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
- 0x20a2, 0x0f7e, 0x2079, 0x7051, 0x7904, 0x0f7f, 0xd1ac, 0x00c0,
- 0x4c53, 0xa085, 0x0020, 0xd1a4, 0x0040, 0x4c58, 0xa085, 0x0010,
- 0xa085, 0x0002, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x1078,
- 0x509c, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3,
- 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3,
+ 0x4573, 0x6827, 0x0001, 0x037f, 0x0078, 0x457c, 0x6003, 0x0009,
+ 0x630a, 0x2c30, 0x0078, 0x4594, 0x6010, 0x2068, 0x1078, 0x5fcd,
+ 0x0040, 0x4590, 0x601c, 0xa086, 0x0003, 0x00c0, 0x459e, 0x6837,
+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x35c4, 0x1078, 0x60db,
+ 0x1078, 0x60e8, 0x1078, 0x516d, 0x007f, 0x0078, 0x4546, 0x7e16,
+ 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c, 0xa086,
+ 0x0006, 0x00c0, 0x4587, 0x1078, 0x6ac6, 0x0078, 0x4590, 0x007e,
+ 0x067e, 0x0c7e, 0x0d7e, 0x7818, 0xa065, 0x0040, 0x4613, 0x6054,
+ 0x007e, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc,
+ 0x6002, 0x1078, 0x32e7, 0x0040, 0x4610, 0x7e24, 0x86ff, 0x0040,
+ 0x4602, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x4602, 0x0d7e,
+ 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x45f9, 0x1078, 0x4e17,
+ 0x68c3, 0x0000, 0x1078, 0x529d, 0x7827, 0x0000, 0x037e, 0x2069,
+ 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x45e2, 0x6803, 0x0100,
+ 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x45ea,
+ 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040,
+ 0x45f3, 0x8001, 0x603e, 0x2660, 0x1078, 0x60e8, 0x0c7f, 0x0078,
+ 0x4602, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f,
+ 0x0078, 0x45b9, 0x8dff, 0x0040, 0x460c, 0x6837, 0x0103, 0x6b4a,
+ 0x6847, 0x0000, 0x1078, 0x35c4, 0x1078, 0x516d, 0x0078, 0x45b9,
+ 0x007f, 0x0078, 0x45ac, 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f,
+ 0x007f, 0x007c, 0x0e7e, 0x0c7e, 0x2071, 0x6db0, 0x7004, 0xa084,
+ 0x0007, 0x0079, 0x4623, 0x462d, 0x4630, 0x4649, 0x4665, 0x46aa,
+ 0x462d, 0x462d, 0x462b, 0x1078, 0x126a, 0x0c7f, 0x0e7f, 0x007c,
+ 0x7024, 0xa065, 0x0040, 0x463e, 0x7020, 0x8001, 0x7022, 0x600c,
+ 0xa015, 0x0040, 0x4645, 0x7216, 0x600f, 0x0000, 0x7007, 0x0000,
+ 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7216, 0x7212, 0x0078,
+ 0x463e, 0x6018, 0x2060, 0x1078, 0x32e7, 0x6000, 0xc0dc, 0x6002,
+ 0x7020, 0x8001, 0x7022, 0x0040, 0x465a, 0x6054, 0xa015, 0x0040,
+ 0x4661, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f,
+ 0x007c, 0x7218, 0x721e, 0x0078, 0x465a, 0x7024, 0xa065, 0x0040,
+ 0x46a7, 0x700c, 0xac06, 0x00c0, 0x467c, 0x1078, 0x516d, 0x600c,
+ 0xa015, 0x0040, 0x4678, 0x720e, 0x600f, 0x0000, 0x0078, 0x46a5,
+ 0x720e, 0x720a, 0x0078, 0x46a5, 0x7014, 0xac06, 0x00c0, 0x468f,
+ 0x1078, 0x516d, 0x600c, 0xa015, 0x0040, 0x468b, 0x7216, 0x600f,
+ 0x0000, 0x0078, 0x46a5, 0x7216, 0x7212, 0x0078, 0x46a5, 0x6018,
+ 0x2060, 0x1078, 0x32e7, 0x6000, 0xc0dc, 0x6002, 0x1078, 0x516d,
+ 0x701c, 0xa065, 0x0040, 0x46a5, 0x6054, 0xa015, 0x0040, 0x46a3,
+ 0x721e, 0x0078, 0x46a5, 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f,
+ 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x46b7, 0x1078, 0x516d,
+ 0x600c, 0xa015, 0x0040, 0x46be, 0x720e, 0x600f, 0x0000, 0x1078,
+ 0x529d, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a,
+ 0x0078, 0x46b7, 0x0d7e, 0x2069, 0x6db0, 0x6830, 0xa084, 0x0003,
+ 0x0079, 0x46ca, 0x46d0, 0x46d2, 0x46f8, 0x46d0, 0x1078, 0x126a,
+ 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040, 0x46ee,
+ 0x683c, 0xa065, 0x0040, 0x46e3, 0x600c, 0xa015, 0x0040, 0x46ea,
+ 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0c7f,
+ 0x0d7f, 0x007c, 0x683a, 0x6836, 0x0078, 0x46e3, 0x6843, 0x0000,
+ 0x6838, 0xa065, 0x0040, 0x46e3, 0x6003, 0x0003, 0x0078, 0x46e3,
+ 0x0c7e, 0x6843, 0x0000, 0x6847, 0x0000, 0x683c, 0xa065, 0x0040,
+ 0x4710, 0x600c, 0xa015, 0x0040, 0x470c, 0x6a3a, 0x600f, 0x0000,
+ 0x683f, 0x0000, 0x0078, 0x4710, 0x683f, 0x0000, 0x683a, 0x6836,
+ 0x0c7f, 0x0d7f, 0x007c, 0x0d7e, 0x2069, 0x6db0, 0x6804, 0xa084,
+ 0x0007, 0x0079, 0x471b, 0x4725, 0x47b2, 0x47b2, 0x47b2, 0x47b2,
+ 0x47b4, 0x47b2, 0x4723, 0x1078, 0x126a, 0x6820, 0xa005, 0x00c0,
+ 0x472b, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x473a,
+ 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x47fa, 0x0c7f,
+ 0x0d7f, 0x007c, 0x6814, 0xa065, 0x0040, 0x4748, 0x6807, 0x0001,
+ 0x6826, 0x682b, 0x0000, 0x1078, 0x47fa, 0x0c7f, 0x0d7f, 0x007c,
+ 0x0e7e, 0x037e, 0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x47ad, 0x704c,
+ 0xa00d, 0x0040, 0x4757, 0x7088, 0xa005, 0x0040, 0x476f, 0x7054,
+ 0xa075, 0x0040, 0x4760, 0xa20e, 0x0040, 0x47ad, 0x0078, 0x4765,
+ 0x6818, 0xa20e, 0x0040, 0x47ad, 0x2070, 0x704c, 0xa00d, 0x0040,
+ 0x4757, 0x7088, 0xa005, 0x00c0, 0x4757, 0x2e00, 0x681e, 0x733c,
+ 0x7038, 0xa302, 0x00c8, 0x4757, 0x1078, 0x53f4, 0x0040, 0x47ad,
+ 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a, 0xa180, 0x0015, 0x2004,
+ 0xa08a, 0x199a, 0x0048, 0x4786, 0x2001, 0x1999, 0x8003, 0x801b,
+ 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xa1e0,
+ 0x2154, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078,
+ 0x4b1d, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26,
+ 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807, 0x0040,
+ 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f,
+ 0x0078, 0x47ab, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040,
+ 0x47c0, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x47fa,
+ 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0x6db0, 0x6830,
+ 0xa086, 0x0000, 0x00c0, 0x47e1, 0x6838, 0xa07d, 0x0040, 0x47e1,
+ 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x127e, 0x0f7e, 0x2091,
+ 0x2200, 0x027f, 0x1078, 0x1952, 0x00c0, 0x47e4, 0x127f, 0x1078,
+ 0x4d4a, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843, 0x0000, 0x7803,
+ 0x0002, 0x780c, 0xa015, 0x0040, 0x47f6, 0x6a3a, 0x780f, 0x0000,
+ 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x47e1, 0x683a, 0x6836,
+ 0x0078, 0x47f0, 0x601c, 0xa084, 0x0007, 0x1079, 0x4800, 0x007c,
+ 0x4808, 0x480a, 0x4a59, 0x4aed, 0x480a, 0x4a59, 0x4aed, 0x4808,
+ 0x1078, 0x126a, 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004,
+ 0xa08a, 0x002a, 0x10c8, 0x126a, 0x6118, 0x2178, 0x79a0, 0xa1f8,
+ 0x2154, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a,
+ 0x1079, 0x4828, 0x0f7f, 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c,
+ 0x4854, 0x4893, 0x48ab, 0x48e4, 0x4911, 0x4919, 0x493a, 0x494b,
+ 0x495c, 0x4964, 0x4975, 0x4964, 0x49bd, 0x494b, 0x49ed, 0x49f5,
+ 0x495c, 0x49f5, 0x4a06, 0x4852, 0x4852, 0x4852, 0x4852, 0x4852,
+ 0x4852, 0x4852, 0x4852, 0x4852, 0x4852, 0x4852, 0x4852, 0x4eea,
+ 0x4eff, 0x4852, 0x4852, 0x4852, 0x4852, 0x493a, 0x4964, 0x4852,
+ 0x48ab, 0x48e4, 0x1078, 0x126a, 0x20a1, 0x020b, 0x1078, 0x4a1b,
+ 0x20a3, 0x5200, 0x20a3, 0x0000, 0x0d7e, 0x2069, 0x6c51, 0x6804,
+ 0xd084, 0x0040, 0x4875, 0x6828, 0x017e, 0x2069, 0x6c00, 0x694c,
+ 0xa106, 0x017f, 0x00c0, 0x4875, 0x20a3, 0x0000, 0x6030, 0xa084,
+ 0x00ff, 0x20a2, 0x0d7f, 0x0078, 0x487a, 0x0d7f, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x6c05, 0x53a6, 0x20a9,
+ 0x0004, 0x2099, 0x6c01, 0x53a6, 0x20a3, 0x0000, 0x6030, 0xa084,
+ 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c,
+ 0x1078, 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a1b, 0x20a3,
+ 0x0500, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff,
+ 0x20a2, 0x20a9, 0x0004, 0x2099, 0x6c05, 0x53a6, 0x60c3, 0x0010,
+ 0x1078, 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a1b, 0x20a3,
+ 0x0300, 0x20a3, 0x0000, 0x2099, 0x6da0, 0x20a9, 0x0008, 0x53a6,
+ 0x20a9, 0x0004, 0x2099, 0x6c05, 0x53a6, 0x20a9, 0x0004, 0x2099,
+ 0x6c01, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x48c4,
+ 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x48ca, 0x2099, 0x6da8,
+ 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0,
+ 0x48d5, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x48db, 0x60c3,
+ 0x0074, 0x1078, 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a1b,
+ 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000,
+ 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079,
+ 0x6c51, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4900, 0xa085, 0x0020,
+ 0xd1a4, 0x0040, 0x4905, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x4e03,
+ 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a1b, 0x20a3, 0x5000, 0x0078,
+ 0x48b1, 0x20a1, 0x020b, 0x1078, 0x4a1b, 0x20a3, 0x2110, 0x20a3,
+ 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0x20a3, 0x0000, 0x20a3,
0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
- 0x0014, 0x1078, 0x509c, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cd1,
- 0x20a3, 0x0200, 0x0078, 0x4b07, 0x20a1, 0x020b, 0x1078, 0x4cd1,
- 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00,
- 0x60c3, 0x0008, 0x1078, 0x509c, 0x007c, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0100, 0x20a3,
- 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x1078,
- 0x509c, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
- 0x2200, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
- 0x0129, 0x20a3, 0x0000, 0x1078, 0x508b, 0x22a2, 0x20a3, 0x0000,
- 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
- 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x2300,
- 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0198,
- 0x20a3, 0x0000, 0x1078, 0x508b, 0x22a2, 0x20a3, 0x0000, 0x7a08,
- 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c,
- 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048, 0x1288, 0xa08a,
- 0x008c, 0x10c8, 0x1288, 0x6118, 0x2178, 0x79a0, 0xa1f8, 0x2207,
- 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa082,
- 0x0085, 0x1079, 0x4d0e, 0x0f7f, 0x0c7f, 0x007c, 0x4d17, 0x4d22,
- 0x4d3c, 0x4d15, 0x4d15, 0x4d15, 0x4d17, 0x1078, 0x1288, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x4d4f, 0x60c3, 0x0000, 0x1078, 0x509c,
- 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4d62, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x2fa2, 0x20a3, 0x0000,
- 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c,
- 0x1078, 0x509c, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078,
- 0x4d75, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x60c3, 0x0004, 0x1078, 0x509c, 0x147f, 0x007c, 0x027e,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x8100, 0x6298, 0x22a2,
- 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000,
- 0x0078, 0x4cc3, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
- 0x8400, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
- 0x00d1, 0x20a3, 0x0000, 0x0078, 0x4ce2, 0x027e, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x20a3, 0x8500, 0x6298, 0x22a2, 0x20a3, 0x0000,
- 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, 0x4ce2,
- 0x0c7e, 0x0f7e, 0x2c78, 0x7804, 0xa08a, 0x0040, 0x1048, 0x1288,
- 0xa08a, 0x0050, 0x10c8, 0x1288, 0x7918, 0x2160, 0x61a0, 0xa1e0,
- 0x2207, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082,
- 0x0040, 0x1079, 0x4da6, 0x0f7f, 0x0c7f, 0x007c, 0x4db8, 0x4e68,
- 0x4e29, 0x4f77, 0x4db6, 0x4db6, 0x4db6, 0x4db6, 0x4db6, 0x4db6,
- 0x4db6, 0x530e, 0x531f, 0x5330, 0x5341, 0x4db6, 0x1078, 0x1288,
- 0x0d7e, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4e09, 0x7910,
- 0x2168, 0x6948, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c,
- 0xa184, 0x0006, 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x4dd3, 0x20a3,
- 0x0002, 0x0078, 0x4ddf, 0xd1b4, 0x0040, 0x4dda, 0x20a3, 0x0001,
- 0x0078, 0x4ddf, 0x20a3, 0x0000, 0x2230, 0x0078, 0x4de1, 0x6a80,
- 0x6e7c, 0x20a9, 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2,
- 0x8000, 0x00f0, 0x4de5, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1,
- 0x9080, 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001,
- 0x71d2, 0x2003, 0x07d0, 0x2001, 0x71d1, 0x2003, 0x0009, 0x2001,
- 0x71d7, 0x2003, 0x0002, 0x1078, 0x14b7, 0x147f, 0x157f, 0x0d7f,
- 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023,
- 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0xa006, 0x20a3,
- 0x0600, 0x6198, 0x21a2, 0x20a2, 0x6130, 0x21a2, 0x20a3, 0x0829,
- 0x20a2, 0x22a2, 0x20a2, 0x2fa2, 0x20a3, 0xffff, 0x20a2, 0x20a2,
- 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078,
- 0x4e49, 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880,
- 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
- 0x60c3, 0x000c, 0x1078, 0x509c, 0x147f, 0x137f, 0x157f, 0x0d7f,
- 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0500,
- 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0889,
- 0x20a3, 0x0000, 0x1078, 0x508b, 0x22a2, 0x20a3, 0x0000, 0x7a08,
- 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c,
- 0x0d7e, 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4f58,
- 0x7810, 0x2068, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x7810, 0xa084, 0xf000, 0x00c0, 0x4e85, 0x7810, 0xa084, 0x0700,
- 0x8007, 0x1079, 0x4e8d, 0x0078, 0x4e88, 0xa006, 0x1079, 0x4e8d,
- 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x4e97, 0x4ef9, 0x4efd,
- 0x4f20, 0x4f2d, 0x4f3f, 0x4f43, 0x4e95, 0x1078, 0x1288, 0x017e,
- 0x037e, 0x694c, 0xa18c, 0x0003, 0xa186, 0x0000, 0x00c0, 0x4eaa,
- 0x6b78, 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x037f, 0x017f,
- 0x0078, 0x4f24, 0xa186, 0x0001, 0x00c0, 0x4ef4, 0x6b78, 0x23a2,
- 0x6868, 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2,
- 0x687c, 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0040, 0x4ef3,
- 0xd3c4, 0x0040, 0x4ec5, 0x687c, 0xa108, 0xd3cc, 0x0040, 0x4eca,
- 0x6874, 0xa108, 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c,
- 0x831f, 0x23a2, 0x8000, 0x00f0, 0x4ecf, 0x157f, 0x22a2, 0x22a2,
- 0x22a2, 0xa184, 0x0003, 0x0040, 0x4ef3, 0x20a1, 0x020b, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3,
- 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a2, 0x1078, 0x508b,
- 0x22a2, 0x20a3, 0x0000, 0x61c2, 0x037f, 0x017f, 0x1078, 0x509c,
- 0x007c, 0x20a3, 0x0008, 0x0078, 0x4f22, 0x20a3, 0x0302, 0x22a2,
- 0x22a2, 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2,
- 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2,
- 0x20a3, 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2,
- 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x1078, 0x509c, 0x007c,
- 0x20a3, 0x0028, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x60c3, 0x0018, 0x1078, 0x509c, 0x007c, 0x20a3, 0x0100, 0x22a2,
- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2,
- 0x22a2, 0x22a2, 0x60c3, 0x0020, 0x1078, 0x509c, 0x007c, 0x20a3,
- 0x0008, 0x0078, 0x4f22, 0x037e, 0x7b10, 0xa384, 0xff00, 0x7812,
- 0xa384, 0x00ff, 0x8001, 0x00c0, 0x4f51, 0x22a2, 0x037f, 0x0078,
- 0x4f22, 0x20a3, 0x0800, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x4f24,
- 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0700, 0x6298,
- 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3,
- 0x0000, 0x1078, 0x508b, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2,
+ 0x0022, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
+ 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a3a, 0x20a3, 0x0200,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004,
+ 0x1078, 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a3a, 0x20a3,
+ 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3,
+ 0x0008, 0x1078, 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4a3a,
+ 0x20a3, 0x0200, 0x0078, 0x48b1, 0x20a1, 0x020b, 0x1078, 0x4a3a,
+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x7810, 0x20a2,
+ 0x60c3, 0x0008, 0x1078, 0x4e03, 0x007c, 0x0d7e, 0x20a1, 0x020b,
+ 0x1078, 0x4a3a, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0800,
+ 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0, 0x499b, 0x6998,
+ 0xa184, 0xc000, 0x00c0, 0x4997, 0xd1ec, 0x0040, 0x4993, 0x20a3,
+ 0x2100, 0x0078, 0x499d, 0x20a3, 0x0100, 0x0078, 0x499d, 0x20a3,
+ 0x0400, 0x0078, 0x499d, 0x20a3, 0x0700, 0xa006, 0x20a2, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x6c51, 0x7904, 0x0f7f,
+ 0xd1ac, 0x00c0, 0x49ad, 0xa085, 0x0020, 0xd1a4, 0x0040, 0x49b2,
+ 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a2, 0x20a2, 0x60c3,
+ 0x0014, 0x1078, 0x4e03, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078,
+ 0x4a3a, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x6018,
+ 0x0d7e, 0x2068, 0x6804, 0x0d7f, 0xa084, 0x00ff, 0xa086, 0x0006,
+ 0x0040, 0x49d6, 0x20a3, 0x0400, 0x0078, 0x49d8, 0x20a3, 0x0100,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x60c3, 0x0014, 0x1078, 0x4e03, 0x007c, 0x20a1, 0x020b, 0x1078,
+ 0x4a3a, 0x20a3, 0x0200, 0x0078, 0x485a, 0x20a1, 0x020b, 0x1078,
+ 0x4a3a, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3,
+ 0x2a00, 0x60c3, 0x0008, 0x1078, 0x4e03, 0x007c, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x20a1, 0x020b, 0x1078, 0x4a3a, 0x20a3, 0x0100,
+ 0x20a3, 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008,
+ 0x1078, 0x4e03, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x20a3, 0x2200, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
+ 0x20a3, 0x0129, 0x20a3, 0x0000, 0x1078, 0x4df2, 0x22a2, 0x20a3,
+ 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x027f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
+ 0x2300, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
+ 0x0198, 0x20a3, 0x0000, 0x1078, 0x4df2, 0x22a2, 0x20a3, 0x0000,
+ 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
+ 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048, 0x126a,
+ 0xa08a, 0x008c, 0x10c8, 0x126a, 0x6118, 0x2178, 0x79a0, 0xa1f8,
+ 0x2154, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a,
+ 0xa082, 0x0085, 0x1079, 0x4a77, 0x0f7f, 0x0c7f, 0x007c, 0x4a80,
+ 0x4a8b, 0x4aa5, 0x4a7e, 0x4a7e, 0x4a7e, 0x4a80, 0x1078, 0x126a,
+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x4ab4, 0x60c3, 0x0000, 0x1078,
+ 0x4e03, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4ac7,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x2fa2, 0x20a3,
+ 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
+ 0x000c, 0x1078, 0x4e03, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b,
+ 0x1078, 0x4ada, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x60c3, 0x0004,
+ 0x1078, 0x4e03, 0x147f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1,
+ 0x4000, 0x20a3, 0x8100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230,
+ 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000, 0x0078, 0x4a2c, 0x027e,
+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x8400, 0x6298, 0x22a2,
+ 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000,
+ 0x0078, 0x4a4b, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
+ 0x8500, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
+ 0x00d1, 0x20a3, 0x0000, 0x0078, 0x4a4b, 0x0c7e, 0x0f7e, 0x2c78,
+ 0x7804, 0xa08a, 0x0040, 0x1048, 0x126a, 0xa08a, 0x0050, 0x10c8,
+ 0x126a, 0x7918, 0x2160, 0x61a0, 0xa1e0, 0x2154, 0x2c0c, 0xa18c,
+ 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x1079, 0x4b0b,
+ 0x0f7f, 0x0c7f, 0x007c, 0x4b1d, 0x4bcf, 0x4b90, 0x4cde, 0x4b1b,
+ 0x4b1b, 0x4b1b, 0x4b1b, 0x4b1b, 0x4b1b, 0x4b1b, 0x5086, 0x5097,
+ 0x50a8, 0x50b9, 0x4b1b, 0x1078, 0x126a, 0x0d7e, 0x157e, 0x147e,
+ 0x20a1, 0x020b, 0x1078, 0x4b70, 0x7910, 0x2168, 0x6944, 0xa18c,
+ 0x00ff, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184,
+ 0x0006, 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x4b3a, 0x20a3, 0x0002,
+ 0x0078, 0x4b46, 0xd1b4, 0x0040, 0x4b41, 0x20a3, 0x0001, 0x0078,
+ 0x4b46, 0x20a3, 0x0000, 0x2230, 0x0078, 0x4b48, 0x6a80, 0x6e7c,
+ 0x20a9, 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000,
+ 0x00f0, 0x4b4c, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080,
+ 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0x6dcc,
+ 0x2003, 0x07d0, 0x2001, 0x6dcb, 0x2003, 0x0009, 0x2001, 0x6dd1,
+ 0x2003, 0x0002, 0x1078, 0x1497, 0x147f, 0x157f, 0x0d7f, 0x007c,
+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014,
+ 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0xa006, 0x20a3, 0x0600,
+ 0x6198, 0x21a2, 0x20a2, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a2,
+ 0x22a2, 0x20a2, 0x2fa2, 0x20a3, 0xffff, 0x20a2, 0x20a2, 0x007c,
+ 0x0d7e, 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4bb0,
+ 0x7810, 0x2068, 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2,
+ 0x687c, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3,
+ 0x000c, 0x1078, 0x4e03, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c,
+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0500, 0x6298,
+ 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0889, 0x20a3,
+ 0x0000, 0x1078, 0x4df2, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2,
0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e,
- 0x157e, 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700,
- 0x8007, 0x1079, 0x4f8a, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f,
- 0x0d7f, 0x007c, 0x4f92, 0x4f92, 0x4f94, 0x4f92, 0x4f92, 0x4f92,
- 0x4fb9, 0x4f92, 0x1078, 0x1288, 0x7910, 0xa18c, 0xf8ff, 0xa18d,
- 0x0600, 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x4fc3,
- 0x0d7e, 0x2069, 0x7051, 0x6804, 0xd0bc, 0x0040, 0x4fae, 0x682c,
- 0xa084, 0x00ff, 0x8007, 0x20a2, 0x0078, 0x4fb0, 0x20a3, 0x3f00,
- 0x0d7f, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x509c,
- 0x007c, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x4fc3, 0x20a3,
- 0x7f00, 0x0078, 0x4fb1, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x20a3, 0x0100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
- 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078, 0x508b, 0x22a2,
- 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x2061, 0x0100,
- 0x2071, 0x7000, 0x6130, 0x7818, 0x2068, 0x68a0, 0xa080, 0x2207,
- 0x2014, 0xa294, 0x00ff, 0x781c, 0xa086, 0x0006, 0x0040, 0x502a,
- 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0809,
- 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007,
- 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810,
- 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008,
+ 0x157e, 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4cbf, 0x7810,
+ 0x2068, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810,
+ 0xa084, 0xf000, 0x00c0, 0x4bec, 0x7810, 0xa084, 0x0700, 0x8007,
+ 0x1079, 0x4bf4, 0x0078, 0x4bef, 0xa006, 0x1079, 0x4bf4, 0x147f,
+ 0x137f, 0x157f, 0x0d7f, 0x007c, 0x4bfe, 0x4c60, 0x4c64, 0x4c87,
+ 0x4c94, 0x4ca6, 0x4caa, 0x4bfc, 0x1078, 0x126a, 0x017e, 0x037e,
+ 0x694c, 0xa18c, 0x0003, 0xa186, 0x0000, 0x00c0, 0x4c11, 0x6b78,
+ 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078,
+ 0x4c8b, 0xa186, 0x0001, 0x00c0, 0x4c5b, 0x6b78, 0x23a2, 0x6868,
+ 0x20a2, 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c,
+ 0x20a2, 0x2009, 0x0018, 0xa384, 0x0300, 0x0040, 0x4c5a, 0xd3c4,
+ 0x0040, 0x4c2c, 0x687c, 0xa108, 0xd3cc, 0x0040, 0x4c31, 0x6874,
+ 0xa108, 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f,
+ 0x23a2, 0x8000, 0x00f0, 0x4c36, 0x157f, 0x22a2, 0x22a2, 0x22a2,
+ 0xa184, 0x0003, 0x0040, 0x4c5a, 0x20a1, 0x020b, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000,
+ 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a2, 0x1078, 0x4df2, 0x22a2,
+ 0x20a3, 0x0000, 0x61c2, 0x037f, 0x017f, 0x1078, 0x4e03, 0x007c,
+ 0x20a3, 0x0008, 0x0078, 0x4c89, 0x20a3, 0x0302, 0x22a2, 0x22a2,
+ 0x22a2, 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2,
+ 0x22a2, 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3,
+ 0x000a, 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2,
+ 0x22a2, 0x22a2, 0x60c3, 0x0032, 0x1078, 0x4e03, 0x007c, 0x20a3,
+ 0x0028, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3,
+ 0x0018, 0x1078, 0x4e03, 0x007c, 0x20a3, 0x0100, 0x22a2, 0x22a2,
+ 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2,
+ 0x22a2, 0x60c3, 0x0020, 0x1078, 0x4e03, 0x007c, 0x20a3, 0x0008,
+ 0x0078, 0x4c89, 0x037e, 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384,
+ 0x00ff, 0x8001, 0x00c0, 0x4cb8, 0x22a2, 0x037f, 0x0078, 0x4c89,
+ 0x20a3, 0x0800, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x4c8b, 0x027e,
+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2,
+ 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3, 0x0000,
+ 0x1078, 0x4df2, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e,
+ 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, 0x8007,
+ 0x1079, 0x4cf1, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, 0x0d7f,
+ 0x007c, 0x4cf9, 0x4cf9, 0x4cfb, 0x4cf9, 0x4cf9, 0x4cf9, 0x4d20,
+ 0x4cf9, 0x1078, 0x126a, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600,
+ 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x4d2a, 0x0d7e,
+ 0x2069, 0x6c51, 0x6804, 0xd0bc, 0x0040, 0x4d15, 0x682c, 0xa084,
+ 0x00ff, 0x8007, 0x20a2, 0x0078, 0x4d17, 0x20a3, 0x3f00, 0x0d7f,
+ 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x4e03, 0x007c,
+ 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x4d2a, 0x20a3, 0x7f00,
+ 0x0078, 0x4d18, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
+ 0x0100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
+ 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078, 0x4df2, 0x22a2, 0x20a3,
+ 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x2061, 0x0100, 0x2071,
+ 0x6c00, 0x6130, 0x7818, 0x2068, 0x68a0, 0xa080, 0x2154, 0x2014,
+ 0xa294, 0x00ff, 0x781c, 0xa086, 0x0006, 0x0040, 0x4d91, 0x6063,
+ 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0809, 0x6077,
+ 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a,
+ 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070,
+ 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca,
+ 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000,
+ 0x629e, 0x6017, 0x0016, 0x1078, 0x40a8, 0x0c7f, 0x0d7f, 0x0e7f,
+ 0x007c, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086, 0x0002,
+ 0x0040, 0x4dc6, 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e,
+ 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff,
+ 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808,
+ 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c,
0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7,
- 0x0000, 0x629e, 0x6017, 0x0016, 0x1078, 0x432c, 0x0c7f, 0x0d7f,
- 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086,
- 0x0002, 0x0040, 0x505f, 0x6063, 0x0100, 0x6266, 0x606b, 0x0000,
- 0x616e, 0x6073, 0x0880, 0x6077, 0x0008, 0x688c, 0x8000, 0xa084,
- 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086,
- 0x7808, 0x6082, 0x7060, 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6,
- 0x707c, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5,
- 0x60d7, 0x0000, 0x629e, 0x6017, 0x0012, 0x0078, 0x5024, 0x6063,
- 0x0700, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0898, 0x6077,
- 0x0000, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a,
- 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a,
- 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce,
- 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x629e, 0x6017,
- 0x0016, 0x0078, 0x5024, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210,
- 0xa294, 0x00ff, 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0x71b6,
- 0x6843, 0x0001, 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056,
- 0x60a7, 0x9575, 0x1078, 0x50a7, 0x1078, 0x431c, 0x007c, 0x007e,
- 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c,
- 0x007e, 0x0c7e, 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085,
- 0x0008, 0x6016, 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e,
- 0x027e, 0x1078, 0x4327, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904,
- 0xa194, 0x4000, 0x0040, 0x50fa, 0x1078, 0x50b0, 0x6803, 0x1000,
- 0x6803, 0x0000, 0x0c7e, 0x2061, 0x71b6, 0x6128, 0xa192, 0x0002,
- 0x00c8, 0x50e7, 0x8108, 0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040,
- 0x50f5, 0x1078, 0x431c, 0x1078, 0x50a7, 0x0078, 0x50f5, 0x6124,
- 0xa1e5, 0x0000, 0x0040, 0x50f2, 0x1078, 0x6f55, 0x2009, 0x0014,
- 0x1078, 0x571c, 0x0c7f, 0x0078, 0x50f5, 0x027f, 0x017f, 0x0d7f,
- 0x0c7f, 0x007c, 0x1078, 0x3247, 0x0078, 0x50f5, 0x0c7e, 0x0d7e,
- 0x0e7e, 0x017e, 0x027e, 0x1078, 0x4335, 0x2071, 0x71b6, 0x713c,
- 0x81ff, 0x0040, 0x5128, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904,
- 0xa194, 0x4000, 0x0040, 0x512e, 0x6803, 0x1000, 0x6803, 0x0000,
- 0x037e, 0x2019, 0x0001, 0x1078, 0x525b, 0x037f, 0x713c, 0x2160,
- 0x1078, 0x6f55, 0x2009, 0x004a, 0x1078, 0x571c, 0x0078, 0x5128,
- 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x7144, 0xa192,
- 0x0002, 0x00c8, 0x5118, 0x8108, 0x7146, 0x1078, 0x432c, 0x0078,
- 0x5128, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x057e, 0x047e, 0x007e,
- 0x127e, 0x2091, 0x8000, 0x6018, 0x2068, 0x6ca0, 0x2071, 0x71b6,
- 0x7018, 0x2068, 0x8dff, 0x0040, 0x5163, 0x68a0, 0xa406, 0x0040,
- 0x5155, 0x6854, 0x2068, 0x0078, 0x514a, 0x6010, 0x2060, 0x643c,
- 0x6540, 0x6e48, 0x2d60, 0x1078, 0x363f, 0x0040, 0x5163, 0x1078,
- 0x53f5, 0xa085, 0x0001, 0x127f, 0x007f, 0x047f, 0x057f, 0x067f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b,
- 0x1078, 0x4cb2, 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x509c, 0x147f, 0x157f,
- 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3,
- 0x0200, 0x20a3, 0x0000, 0x20a9, 0x0006, 0x2011, 0x7040, 0x2019,
- 0x7041, 0x23a6, 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0,
- 0x5191, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078,
- 0x509c, 0x147f, 0x157f, 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x71b6, 0x700c, 0x2060, 0x8cff, 0x0040,
- 0x51c0, 0x1078, 0x6484, 0x00c0, 0x51b7, 0x1078, 0x58f2, 0x600c,
- 0x007e, 0x1078, 0x56f5, 0x1078, 0x53f5, 0x0c7f, 0x0078, 0x51ae,
+ 0x0000, 0x629e, 0x6017, 0x0012, 0x0078, 0x4d8b, 0x6063, 0x0700,
+ 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0898, 0x6077, 0x0000,
+ 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f,
+ 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010,
+ 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab,
+ 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x629e, 0x6017, 0x0016,
+ 0x0078, 0x4d8b, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294,
+ 0x00ff, 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0x6db0, 0x6843,
+ 0x0001, 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7,
+ 0x9575, 0x1078, 0x4e0e, 0x1078, 0x4098, 0x007c, 0x007e, 0x6014,
+ 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e,
+ 0x0c7e, 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008,
+ 0x6016, 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e,
+ 0x1078, 0x40a3, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194,
+ 0x4000, 0x0040, 0x4e6c, 0x1078, 0x4e17, 0x6803, 0x1000, 0x6803,
+ 0x0000, 0x0c7e, 0x2061, 0x6db0, 0x6128, 0xa192, 0x0002, 0x00c8,
+ 0x4e59, 0x8108, 0x612a, 0x613c, 0x0c7f, 0x81ff, 0x0040, 0x4e67,
+ 0x1078, 0x4098, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0,
+ 0x4e55, 0x6017, 0x0012, 0x0078, 0x4e67, 0x1078, 0x4e0e, 0x0078,
+ 0x4e67, 0x6124, 0xa1e5, 0x0000, 0x0040, 0x4e64, 0x1078, 0x6b90,
+ 0x2009, 0x0014, 0x1078, 0x544c, 0x0c7f, 0x0078, 0x4e67, 0x027f,
+ 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x1078, 0x30c9, 0x0078, 0x4e67,
+ 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x027e, 0x1078, 0x40b1, 0x2071,
+ 0x6db0, 0x713c, 0x81ff, 0x0040, 0x4eab, 0x2061, 0x0100, 0x2069,
+ 0x0140, 0x6904, 0x017e, 0x017f, 0xa194, 0x4000, 0x0040, 0x4eb1,
+ 0x6017, 0x0010, 0x7144, 0xa192, 0x0002, 0x00c8, 0x4ea3, 0x8108,
+ 0x7146, 0x1078, 0x40a8, 0x713c, 0xa188, 0x0007, 0x210c, 0xa18e,
+ 0x0006, 0x00c0, 0x4e9f, 0x6017, 0x0012, 0x0078, 0x4eab, 0x6017,
+ 0x0016, 0x0078, 0x4eab, 0x1078, 0x6b90, 0x2009, 0x004a, 0x1078,
+ 0x544c, 0x0078, 0x4eab, 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f,
+ 0x007c, 0x1078, 0x40a8, 0x0078, 0x4eab, 0x0e7e, 0x0d7e, 0x0c7e,
+ 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091, 0x8000, 0x6018,
+ 0x2068, 0x6ca0, 0x2071, 0x6db0, 0x7018, 0x2068, 0x8dff, 0x0040,
+ 0x4ee1, 0x68a0, 0xa406, 0x0040, 0x4ed1, 0x6854, 0x2068, 0x0078,
+ 0x4ec6, 0x6010, 0x2060, 0x643c, 0x6540, 0x6644, 0xa6b4, 0x000f,
+ 0x2d60, 0x1078, 0x3445, 0x0040, 0x4ee1, 0x1078, 0x516d, 0xa085,
+ 0x0001, 0x127f, 0x007f, 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f,
+ 0x0e7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4a1b,
+ 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2,
+ 0x60c3, 0x0008, 0x1078, 0x4e03, 0x147f, 0x157f, 0x007c, 0x157e,
+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x4a3a, 0x20a3, 0x0200, 0x20a3,
+ 0x0000, 0x20a9, 0x0006, 0x2011, 0x6c40, 0x2019, 0x6c41, 0x23a6,
+ 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0, 0x4f0f, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, 0x4e03, 0x147f,
+ 0x157f, 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000,
+ 0x2071, 0x6db0, 0x700c, 0x2060, 0x8cff, 0x0040, 0x4f38, 0x600c,
+ 0x007e, 0x1078, 0x5425, 0x1078, 0x516d, 0x0c7f, 0x0078, 0x4f2c,
0x700f, 0x0000, 0x700b, 0x0000, 0x127f, 0x007f, 0x0c7f, 0x0e7f,
0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e,
0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140,
- 0x2071, 0x71b6, 0x7024, 0x2060, 0x8cff, 0x0040, 0x5219, 0x1078,
- 0x50b0, 0x68c3, 0x0000, 0x1078, 0x4327, 0x2009, 0x0013, 0x1078,
- 0x571c, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x51fc, 0x6827,
- 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x520e, 0x7803, 0x1000,
- 0x7803, 0x0000, 0x0078, 0x520e, 0xd084, 0x0040, 0x5203, 0x6827,
- 0x0001, 0x0078, 0x5205, 0x00f0, 0x51eb, 0x7804, 0xa084, 0x1000,
- 0x0040, 0x520e, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f,
+ 0x2071, 0x6db0, 0x7024, 0x2060, 0x8cff, 0x0040, 0x4f91, 0x1078,
+ 0x4e17, 0x68c3, 0x0000, 0x1078, 0x40a3, 0x2009, 0x0013, 0x1078,
+ 0x544c, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x4f74, 0x6827,
+ 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x4f86, 0x7803, 0x1000,
+ 0x7803, 0x0000, 0x0078, 0x4f86, 0xd084, 0x0040, 0x4f7b, 0x6827,
+ 0x0001, 0x0078, 0x4f7d, 0x00f0, 0x4f63, 0x7804, 0xa084, 0x1000,
+ 0x0040, 0x4f86, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f,
0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f,
- 0x007c, 0x2001, 0x7000, 0x2004, 0xa096, 0x0001, 0x0040, 0x5251,
- 0xa096, 0x0004, 0x0040, 0x5251, 0x6817, 0x0008, 0x68c3, 0x0000,
- 0x2011, 0x320e, 0x1078, 0x42aa, 0x20a9, 0x01f4, 0x6824, 0xd094,
- 0x0040, 0x523f, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040,
- 0x5251, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x5251, 0xd084,
- 0x0040, 0x5246, 0x6827, 0x0001, 0x0078, 0x5248, 0x00f0, 0x522e,
- 0x7804, 0xa084, 0x1000, 0x0040, 0x5251, 0x7803, 0x0100, 0x7803,
+ 0x007c, 0x2001, 0x6c00, 0x2004, 0xa096, 0x0001, 0x0040, 0x4fc9,
+ 0xa096, 0x0004, 0x0040, 0x4fc9, 0x6817, 0x0008, 0x68c3, 0x0000,
+ 0x2011, 0x308c, 0x1078, 0x4026, 0x20a9, 0x01f4, 0x6824, 0xd094,
+ 0x0040, 0x4fb7, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040,
+ 0x4fc9, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x4fc9, 0xd084,
+ 0x0040, 0x4fbe, 0x6827, 0x0001, 0x0078, 0x4fc0, 0x00f0, 0x4fa6,
+ 0x7804, 0xa084, 0x1000, 0x0040, 0x4fc9, 0x7803, 0x0100, 0x7803,
0x0000, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
0x157f, 0x127f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e,
0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100,
- 0x2079, 0x0140, 0x2071, 0x71b6, 0x703c, 0x2060, 0x8cff, 0x0040,
- 0x52a9, 0x6817, 0x0010, 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078,
- 0x4335, 0x1078, 0x1b80, 0xa39d, 0x0000, 0x00c0, 0x5283, 0x2009,
- 0x0049, 0x1078, 0x571c, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040,
- 0x5296, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x52a8,
- 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x52a8, 0xd094, 0x0040,
- 0x529d, 0x6827, 0x0002, 0x0078, 0x529f, 0x00f0, 0x5285, 0x7804,
- 0xa084, 0x1000, 0x0040, 0x52a8, 0x7803, 0x0100, 0x7803, 0x0000,
+ 0x2079, 0x0140, 0x2071, 0x6db0, 0x703c, 0x2060, 0x8cff, 0x0040,
+ 0x5021, 0x6817, 0x0010, 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078,
+ 0x40b1, 0x1078, 0x1b1f, 0xa39d, 0x0000, 0x00c0, 0x4ffb, 0x2009,
+ 0x0049, 0x1078, 0x544c, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040,
+ 0x500e, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5020,
+ 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x5020, 0xd094, 0x0040,
+ 0x5015, 0x6827, 0x0002, 0x0078, 0x5017, 0x00f0, 0x4ffd, 0x7804,
+ 0xa084, 0x1000, 0x0040, 0x5020, 0x7803, 0x0100, 0x7803, 0x0000,
0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
0x157f, 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069,
- 0x71b6, 0x6a06, 0x127f, 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091,
- 0x8000, 0x2069, 0x71b6, 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e,
- 0x0e7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2071, 0x71b6, 0x7614,
- 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x5307, 0x601c,
- 0xa206, 0x00c0, 0x5302, 0x7014, 0xac36, 0x00c0, 0x52e1, 0x660c,
- 0x7616, 0x7010, 0xac36, 0x00c0, 0x52ef, 0x2c00, 0xaf36, 0x0040,
- 0x52ed, 0x2f00, 0x7012, 0x0078, 0x52ef, 0x7013, 0x0000, 0x660c,
- 0x067e, 0x2c00, 0xaf06, 0x0040, 0x52f8, 0x7e0e, 0x0078, 0x52f9,
- 0x2678, 0x600f, 0x0000, 0x1078, 0x6457, 0x1078, 0x53f5, 0x0c7f,
- 0x0078, 0x52d4, 0x2c78, 0x600c, 0x2060, 0x0078, 0x52d4, 0x127f,
+ 0x6db0, 0x6a06, 0x127f, 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091,
+ 0x8000, 0x2069, 0x6db0, 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e,
+ 0x0e7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2071, 0x6db0, 0x7614,
+ 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x507f, 0x601c,
+ 0xa206, 0x00c0, 0x507a, 0x7014, 0xac36, 0x00c0, 0x5059, 0x660c,
+ 0x7616, 0x7010, 0xac36, 0x00c0, 0x5067, 0x2c00, 0xaf36, 0x0040,
+ 0x5065, 0x2f00, 0x7012, 0x0078, 0x5067, 0x7013, 0x0000, 0x660c,
+ 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5070, 0x7e0e, 0x0078, 0x5071,
+ 0x2678, 0x600f, 0x0000, 0x1078, 0x60e8, 0x1078, 0x516d, 0x0c7f,
+ 0x0078, 0x504c, 0x2c78, 0x600c, 0x2060, 0x0078, 0x504c, 0x127f,
0x007f, 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x4e09, 0x7810, 0x20a2, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0078, 0x5350, 0x157e,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x4e09, 0x7810, 0x20a2, 0xa006,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x5350,
- 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4e09, 0x7810, 0x20a2,
+ 0x20a1, 0x020b, 0x1078, 0x4b70, 0x7810, 0x20a2, 0xa006, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0078, 0x50c8, 0x157e,
+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x4b70, 0x7810, 0x20a2, 0xa006,
+ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x50c8,
+ 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4b70, 0x7810, 0x20a2,
0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078,
- 0x5350, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4e09, 0x7810,
+ 0x50c8, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4b70, 0x7810,
0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200,
- 0x1078, 0x5400, 0x60c3, 0x0020, 0x1078, 0x509c, 0x147f, 0x157f,
+ 0x1078, 0x5178, 0x60c3, 0x0020, 0x1078, 0x4e03, 0x147f, 0x157f,
0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120,
- 0xd1b4, 0x00c0, 0x5368, 0xd1bc, 0x00c0, 0x53b2, 0x0078, 0x53f2,
+ 0xd1b4, 0x00c0, 0x50e0, 0xd1bc, 0x00c0, 0x512a, 0x0078, 0x516a,
0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069,
0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000,
- 0x0040, 0x53a9, 0x6020, 0xd0b4, 0x0040, 0x53a9, 0x6024, 0xd094,
- 0x00c0, 0x53a9, 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0,
- 0x53a9, 0x00f0, 0x5375, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107,
+ 0x0040, 0x5121, 0x6020, 0xd0b4, 0x0040, 0x5121, 0x6024, 0xd094,
+ 0x00c0, 0x5121, 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0,
+ 0x5121, 0x00f0, 0x50ed, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107,
0x6130, 0xa18c, 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b,
0xbc91, 0x6043, 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024,
- 0xd094, 0x00c0, 0x53a8, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x539f,
+ 0xd094, 0x00c0, 0x5120, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x5117,
0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000,
- 0x0078, 0x53f2, 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e,
+ 0x0078, 0x516a, 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e,
0x0d7e, 0x2069, 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804,
- 0xa084, 0x4000, 0x0040, 0x53eb, 0x6020, 0xd0bc, 0x0040, 0x53eb,
- 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x53eb, 0x00f0,
- 0x53bf, 0x027e, 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c,
+ 0xa084, 0x4000, 0x0040, 0x5163, 0x6020, 0xd0bc, 0x0040, 0x5163,
+ 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x5163, 0x00f0,
+ 0x5137, 0x027e, 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c,
0x00ff, 0xa10d, 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043,
0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000,
- 0x00c0, 0x53e5, 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f,
- 0x200b, 0x0000, 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0x71b6,
- 0x7020, 0xa005, 0x0040, 0x53fe, 0x8001, 0x7022, 0x0e7f, 0x007c,
- 0x20a9, 0x0008, 0x20a2, 0x00f0, 0x5402, 0x20a2, 0x20a2, 0x007c,
+ 0x00c0, 0x515d, 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f,
+ 0x200b, 0x0000, 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0x6db0,
+ 0x7020, 0xa005, 0x0040, 0x5176, 0x8001, 0x7022, 0x0e7f, 0x007c,
+ 0x20a9, 0x0008, 0x20a2, 0x00f0, 0x517a, 0x20a2, 0x20a2, 0x007c,
0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x71b6, 0x7614, 0x2660, 0x2678, 0x2039,
- 0x0001, 0x87ff, 0x0040, 0x5498, 0x8cff, 0x0040, 0x5498, 0x601c,
- 0xa086, 0x0006, 0x00c0, 0x5493, 0x88ff, 0x0040, 0x542f, 0x2800,
- 0xac06, 0x00c0, 0x5493, 0x2039, 0x0000, 0x0078, 0x5433, 0x6018,
- 0xa206, 0x00c0, 0x5493, 0x7024, 0xac06, 0x00c0, 0x5461, 0x2069,
- 0x0100, 0x68c0, 0xa005, 0x0040, 0x545c, 0x6817, 0x0008, 0x68c3,
- 0x0000, 0x1078, 0x5525, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
- 0x6b04, 0xa384, 0x1000, 0x0040, 0x5451, 0x6803, 0x0100, 0x6803,
- 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5459, 0x6827,
- 0x0001, 0x037f, 0x0078, 0x5461, 0x6003, 0x0009, 0x630a, 0x0078,
- 0x5493, 0x7014, 0xac36, 0x00c0, 0x5467, 0x660c, 0x7616, 0x7010,
- 0xac36, 0x00c0, 0x5475, 0x2c00, 0xaf36, 0x0040, 0x5473, 0x2f00,
- 0x7012, 0x0078, 0x5475, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00,
- 0xaf06, 0x0040, 0x547e, 0x7e0e, 0x0078, 0x547f, 0x2678, 0x600f,
- 0x0000, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040, 0x5489, 0x1078,
- 0x6e8b, 0x1078, 0x6457, 0x1078, 0x53f5, 0x88ff, 0x00c0, 0x54a2,
- 0x0c7f, 0x0078, 0x5419, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5419,
+ 0x2091, 0x8000, 0x2071, 0x6db0, 0x7614, 0x2660, 0x2678, 0x2039,
+ 0x0001, 0x87ff, 0x0040, 0x5210, 0x8cff, 0x0040, 0x5210, 0x601c,
+ 0xa086, 0x0006, 0x00c0, 0x520b, 0x88ff, 0x0040, 0x51a7, 0x2800,
+ 0xac06, 0x00c0, 0x520b, 0x2039, 0x0000, 0x0078, 0x51ab, 0x6018,
+ 0xa206, 0x00c0, 0x520b, 0x7024, 0xac06, 0x00c0, 0x51d9, 0x2069,
+ 0x0100, 0x68c0, 0xa005, 0x0040, 0x51d4, 0x6817, 0x0008, 0x68c3,
+ 0x0000, 0x1078, 0x529d, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
+ 0x6b04, 0xa384, 0x1000, 0x0040, 0x51c9, 0x6803, 0x0100, 0x6803,
+ 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x51d1, 0x6827,
+ 0x0001, 0x037f, 0x0078, 0x51d9, 0x6003, 0x0009, 0x630a, 0x0078,
+ 0x520b, 0x7014, 0xac36, 0x00c0, 0x51df, 0x660c, 0x7616, 0x7010,
+ 0xac36, 0x00c0, 0x51ed, 0x2c00, 0xaf36, 0x0040, 0x51eb, 0x2f00,
+ 0x7012, 0x0078, 0x51ed, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00,
+ 0xaf06, 0x0040, 0x51f6, 0x7e0e, 0x0078, 0x51f7, 0x2678, 0x600f,
+ 0x0000, 0x6010, 0x2068, 0x1078, 0x5fcd, 0x0040, 0x5201, 0x1078,
+ 0x6ac6, 0x1078, 0x60e8, 0x1078, 0x516d, 0x88ff, 0x00c0, 0x521a,
+ 0x0c7f, 0x0078, 0x5191, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5191,
0xa006, 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f,
0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078,
- 0x5499, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e,
- 0x127e, 0x2091, 0x8000, 0x2071, 0x71b6, 0x7638, 0x2660, 0x2678,
- 0x8cff, 0x0040, 0x5514, 0x601c, 0xa086, 0x0006, 0x00c0, 0x550f,
- 0x88ff, 0x0040, 0x54c9, 0x2800, 0xac06, 0x00c0, 0x550f, 0x0078,
- 0x54cd, 0x6018, 0xa206, 0x00c0, 0x550f, 0x703c, 0xac06, 0x00c0,
- 0x54df, 0x037e, 0x2019, 0x0001, 0x1078, 0x525b, 0x7033, 0x0000,
+ 0x5211, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e,
+ 0x127e, 0x2091, 0x8000, 0x2071, 0x6db0, 0x7638, 0x2660, 0x2678,
+ 0x8cff, 0x0040, 0x528c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x5287,
+ 0x88ff, 0x0040, 0x5241, 0x2800, 0xac06, 0x00c0, 0x5287, 0x0078,
+ 0x5245, 0x6018, 0xa206, 0x00c0, 0x5287, 0x703c, 0xac06, 0x00c0,
+ 0x5257, 0x037e, 0x2019, 0x0001, 0x1078, 0x4fd3, 0x7033, 0x0000,
0x703f, 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x037f, 0x7038,
- 0xac36, 0x00c0, 0x54e5, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0,
- 0x54f3, 0x2c00, 0xaf36, 0x0040, 0x54f1, 0x2f00, 0x7036, 0x0078,
- 0x54f3, 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
- 0x54fc, 0x7e0e, 0x0078, 0x54fd, 0x2678, 0x600f, 0x0000, 0x6010,
- 0x2068, 0x1078, 0x6336, 0x0040, 0x5507, 0x1078, 0x6e8b, 0x1078,
- 0x6457, 0x88ff, 0x00c0, 0x551e, 0x0c7f, 0x0078, 0x54b8, 0x2c78,
- 0x600c, 0x2060, 0x0078, 0x54b8, 0xa006, 0x127f, 0x007f, 0x027f,
+ 0xac36, 0x00c0, 0x525d, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0,
+ 0x526b, 0x2c00, 0xaf36, 0x0040, 0x5269, 0x2f00, 0x7036, 0x0078,
+ 0x526b, 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
+ 0x5274, 0x7e0e, 0x0078, 0x5275, 0x2678, 0x600f, 0x0000, 0x6010,
+ 0x2068, 0x1078, 0x5fcd, 0x0040, 0x527f, 0x1078, 0x6ac6, 0x1078,
+ 0x60e8, 0x88ff, 0x00c0, 0x5296, 0x0c7f, 0x0078, 0x5230, 0x2c78,
+ 0x600c, 0x2060, 0x0078, 0x5230, 0xa006, 0x127f, 0x007f, 0x027f,
0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000,
- 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x5515, 0x0e7e, 0x2071, 0x71b6,
- 0x2001, 0x7000, 0x2004, 0xa086, 0x0002, 0x00c0, 0x5533, 0x7007,
- 0x0005, 0x0078, 0x5535, 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e,
+ 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x528d, 0x0e7e, 0x2071, 0x6db0,
+ 0x2001, 0x6c00, 0x2004, 0xa086, 0x0002, 0x00c0, 0x52ab, 0x7007,
+ 0x0005, 0x0078, 0x52ad, 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e,
0x0e7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000,
- 0x2071, 0x71b6, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040,
- 0x5575, 0x2200, 0xac06, 0x00c0, 0x5570, 0x7038, 0xac36, 0x00c0,
- 0x5553, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5561, 0x2c00,
- 0xaf36, 0x0040, 0x555f, 0x2f00, 0x7036, 0x0078, 0x5561, 0x7037,
- 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0040, 0x5569, 0x7e0e, 0x0078,
- 0x556a, 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0078, 0x5575,
- 0x2c78, 0x600c, 0x2060, 0x0078, 0x5546, 0x127f, 0x007f, 0x027f,
+ 0x2071, 0x6db0, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040,
+ 0x52ed, 0x2200, 0xac06, 0x00c0, 0x52e8, 0x7038, 0xac36, 0x00c0,
+ 0x52cb, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x52d9, 0x2c00,
+ 0xaf36, 0x0040, 0x52d7, 0x2f00, 0x7036, 0x0078, 0x52d9, 0x7037,
+ 0x0000, 0x660c, 0x2c00, 0xaf06, 0x0040, 0x52e1, 0x7e0e, 0x0078,
+ 0x52e2, 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0078, 0x52ed,
+ 0x2c78, 0x600c, 0x2060, 0x0078, 0x52be, 0x127f, 0x007f, 0x027f,
0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e,
- 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x71b6,
- 0x760c, 0x2660, 0x2678, 0x8cff, 0x0040, 0x560e, 0x6018, 0xa080,
- 0x0028, 0x2004, 0xa206, 0x00c0, 0x5609, 0x7024, 0xac06, 0x00c0,
- 0x55bc, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x55bc, 0x1078,
- 0x50b0, 0x68c3, 0x0000, 0x1078, 0x5525, 0x7027, 0x0000, 0x037e,
- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x55b3, 0x6803,
+ 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x6db0,
+ 0x760c, 0x2660, 0x2678, 0x8cff, 0x0040, 0x5386, 0x6018, 0xa080,
+ 0x0028, 0x2004, 0xa206, 0x00c0, 0x5381, 0x7024, 0xac06, 0x00c0,
+ 0x5334, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x5334, 0x1078,
+ 0x4e17, 0x68c3, 0x0000, 0x1078, 0x529d, 0x7027, 0x0000, 0x037e,
+ 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x532b, 0x6803,
0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
- 0x55bb, 0x6827, 0x0001, 0x037f, 0x700c, 0xac36, 0x00c0, 0x55c2,
- 0x660c, 0x760e, 0x7008, 0xac36, 0x00c0, 0x55d0, 0x2c00, 0xaf36,
- 0x0040, 0x55ce, 0x2f00, 0x700a, 0x0078, 0x55d0, 0x700b, 0x0000,
- 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x55d9, 0x7e0e, 0x0078,
- 0x55da, 0x2678, 0x600f, 0x0000, 0x1078, 0x6470, 0x00c0, 0x55e4,
- 0x1078, 0x21c6, 0x0078, 0x5600, 0x1078, 0x6484, 0x00c0, 0x55ec,
- 0x1078, 0x58f2, 0x0078, 0x5600, 0x6010, 0x2068, 0x1078, 0x6336,
- 0x0040, 0x5600, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5616, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3840, 0x1078, 0x644a,
- 0x6003, 0x0000, 0x1078, 0x6457, 0x1078, 0x53f5, 0x0c7f, 0x0078,
- 0x558b, 0x2c78, 0x600c, 0x2060, 0x0078, 0x558b, 0x127f, 0x007f,
+ 0x5333, 0x6827, 0x0001, 0x037f, 0x700c, 0xac36, 0x00c0, 0x533a,
+ 0x660c, 0x760e, 0x7008, 0xac36, 0x00c0, 0x5348, 0x2c00, 0xaf36,
+ 0x0040, 0x5346, 0x2f00, 0x700a, 0x0078, 0x5348, 0x700b, 0x0000,
+ 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5351, 0x7e0e, 0x0078,
+ 0x5352, 0x2678, 0x600f, 0x0000, 0x1078, 0x6101, 0x00c0, 0x535c,
+ 0x1078, 0x2143, 0x0078, 0x5378, 0x1078, 0x6115, 0x00c0, 0x5364,
+ 0x1078, 0x5614, 0x0078, 0x5378, 0x6010, 0x2068, 0x1078, 0x5fcd,
+ 0x0040, 0x5378, 0x601c, 0xa086, 0x0003, 0x00c0, 0x538e, 0x6837,
+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x35c4, 0x1078, 0x60db,
+ 0x6003, 0x0000, 0x1078, 0x60e8, 0x1078, 0x516d, 0x0c7f, 0x0078,
+ 0x5303, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5303, 0x127f, 0x007f,
0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x55f7, 0x1078, 0x6e8b, 0x0078, 0x5600, 0x037e,
+ 0x0006, 0x00c0, 0x536f, 0x1078, 0x6ac6, 0x0078, 0x5378, 0x037e,
0x157e, 0x137e, 0x147e, 0x3908, 0xa006, 0xa190, 0x0020, 0x221c,
- 0xa39e, 0x20a0, 0x00c0, 0x5630, 0x8210, 0x8000, 0x0078, 0x5627,
- 0xa005, 0x0040, 0x563a, 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0,
- 0x22c8, 0x53a3, 0x147f, 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e,
- 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0200, 0x20a3, 0x0014,
- 0x60c3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x514c,
- 0x20a3, 0x4f47, 0x20a3, 0x4943, 0x20a3, 0x2020, 0x20a3, 0x0004,
- 0x20a3, 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x1078, 0x509c,
- 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4cd1, 0x20a3, 0x0210,
- 0x20a3, 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0018, 0x1078, 0x509c, 0x007c, 0x2061,
- 0x7600, 0x2a70, 0x7060, 0x7046, 0x704b, 0x7600, 0x007c, 0x0e7e,
- 0x127e, 0x2071, 0x7000, 0x2091, 0x8000, 0x7544, 0xa582, 0x0001,
- 0x0048, 0x56c1, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
- 0x56ad, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x56a9, 0x0078,
- 0x569c, 0x2061, 0x7600, 0x0078, 0x569c, 0x6003, 0x0008, 0x8529,
- 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x56bd, 0x754a,
- 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704b, 0x7600, 0x0078,
- 0x56b8, 0xa006, 0x0078, 0x56ba, 0x0e7e, 0x2071, 0x7000, 0x7544,
- 0xa582, 0x0001, 0x0048, 0x56f2, 0x7048, 0x2060, 0x6000, 0xa086,
- 0x0000, 0x0040, 0x56df, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8,
- 0x56db, 0x0078, 0x56ce, 0x2061, 0x7600, 0x0078, 0x56ce, 0x6003,
+ 0xa39e, 0x201d, 0x00c0, 0x53a8, 0x8210, 0x8000, 0x0078, 0x539f,
+ 0xa005, 0x0040, 0x53b2, 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0,
+ 0x22c8, 0x53a3, 0x147f, 0x137f, 0x157f, 0x037f, 0x007c, 0x2061,
+ 0x7200, 0x2a70, 0x7060, 0x7046, 0x704b, 0x7200, 0x007c, 0x0e7e,
+ 0x127e, 0x2071, 0x6c00, 0x2091, 0x8000, 0x7544, 0xa582, 0x0001,
+ 0x0048, 0x53f1, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040,
+ 0x53dd, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x53d9, 0x0078,
+ 0x53cc, 0x2061, 0x7200, 0x0078, 0x53cc, 0x6003, 0x0008, 0x8529,
+ 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x53ed, 0x754a,
+ 0xa085, 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704b, 0x7200, 0x0078,
+ 0x53e8, 0xa006, 0x0078, 0x53ea, 0x0e7e, 0x2071, 0x6c00, 0x7544,
+ 0xa582, 0x0001, 0x0048, 0x5422, 0x7048, 0x2060, 0x6000, 0xa086,
+ 0x0000, 0x0040, 0x540f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8,
+ 0x540b, 0x0078, 0x53fe, 0x2061, 0x7200, 0x0078, 0x53fe, 0x6003,
0x0008, 0x8529, 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8,
- 0x56ee, 0x754a, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7600,
- 0x0078, 0x56ea, 0xa006, 0x0078, 0x56ec, 0xac82, 0x7600, 0x1048,
- 0x1288, 0x2001, 0x7015, 0x2004, 0xac02, 0x10c8, 0x1288, 0xa006,
+ 0x541e, 0x754a, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7200,
+ 0x0078, 0x541a, 0xa006, 0x0078, 0x541c, 0xac82, 0x7200, 0x1048,
+ 0x126a, 0x2001, 0x6c15, 0x2004, 0xac02, 0x10c8, 0x126a, 0xa006,
0x6006, 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000,
- 0x6003, 0x0000, 0x2061, 0x7000, 0x6044, 0x8000, 0x6046, 0xa086,
- 0x0001, 0x0040, 0x5714, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x49b7, 0x127f, 0x0078, 0x5713, 0x601c, 0xa084, 0x0007, 0x0079,
- 0x5721, 0x5729, 0x5731, 0x574d, 0x5769, 0x6501, 0x651d, 0x6539,
- 0x5729, 0xa18e, 0x0047, 0x00c0, 0x5730, 0xa016, 0x1078, 0x1525,
- 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x573b, 0x067f, 0x007c, 0x574b, 0x5816, 0x5901, 0x574b, 0x574b,
- 0x574b, 0x574b, 0x574b, 0x57c5, 0x5b83, 0x574b, 0x574b, 0x574b,
- 0x574b, 0x574b, 0x574b, 0x1078, 0x1288, 0x067e, 0x6000, 0xa0b2,
- 0x0010, 0x10c8, 0x1288, 0x1079, 0x5757, 0x067f, 0x007c, 0x5767,
- 0x5767, 0x5767, 0x5767, 0x5767, 0x5767, 0x5767, 0x5767, 0x5ff3,
- 0x60b9, 0x5767, 0x600c, 0x6065, 0x600c, 0x6065, 0x5767, 0x1078,
- 0x1288, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x5773, 0x067f, 0x007c, 0x5783, 0x5bc1, 0x5c67, 0x5d29, 0x5e7d,
- 0x5783, 0x5783, 0x5783, 0x5b9f, 0x5fa8, 0x5fac, 0x5783, 0x5783,
- 0x5783, 0x5783, 0x5fd2, 0x1078, 0x1288, 0x20a9, 0x000e, 0x2e98,
+ 0x6003, 0x0000, 0x2061, 0x6c00, 0x6044, 0x8000, 0x6046, 0xa086,
+ 0x0001, 0x0040, 0x5444, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x4713, 0x127f, 0x0078, 0x5443, 0x601c, 0xa084, 0x0007, 0x0079,
+ 0x5451, 0x5459, 0x5461, 0x547d, 0x5499, 0x6186, 0x61a2, 0x61be,
+ 0x5459, 0xa18e, 0x0047, 0x00c0, 0x5460, 0xa016, 0x1078, 0x1505,
+ 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x126a, 0x1079,
+ 0x546b, 0x067f, 0x007c, 0x547b, 0x5540, 0x5623, 0x547b, 0x547b,
+ 0x547b, 0x547b, 0x547b, 0x54f5, 0x58a5, 0x547b, 0x547b, 0x547b,
+ 0x547b, 0x547b, 0x547b, 0x1078, 0x126a, 0x067e, 0x6000, 0xa0b2,
+ 0x0010, 0x10c8, 0x126a, 0x1079, 0x5487, 0x067f, 0x007c, 0x5497,
+ 0x5497, 0x5497, 0x5497, 0x5497, 0x5497, 0x5497, 0x5497, 0x5c9f,
+ 0x5d63, 0x5497, 0x5cb8, 0x5d11, 0x5cb8, 0x5d11, 0x5497, 0x1078,
+ 0x126a, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x126a, 0x1079,
+ 0x54a3, 0x067f, 0x007c, 0x54b3, 0x58e3, 0x5969, 0x5a2b, 0x5b54,
+ 0x54b3, 0x54b3, 0x54b3, 0x58c1, 0x5c54, 0x5c58, 0x54b3, 0x54b3,
+ 0x54b3, 0x54b3, 0x5c7e, 0x1078, 0x126a, 0x20a9, 0x000e, 0x2e98,
0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398,
0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8,
- 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x5793, 0x0e7e,
- 0x1078, 0x6336, 0x0040, 0x57aa, 0x6010, 0x2070, 0x7007, 0x0000,
- 0x7037, 0x0103, 0x0e7f, 0x1078, 0x56f5, 0x007c, 0x0d7e, 0x20a9,
+ 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x54c3, 0x0e7e,
+ 0x1078, 0x5fcd, 0x0040, 0x54da, 0x6010, 0x2070, 0x7007, 0x0000,
+ 0x7037, 0x0103, 0x0e7f, 0x1078, 0x5425, 0x007c, 0x0d7e, 0x20a9,
0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0xa1b6, 0x0015, 0x00c0,
- 0x57c2, 0x6018, 0x2068, 0x7038, 0x680a, 0x703c, 0x680e, 0x6800,
- 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x579f, 0x2100, 0xa1b2, 0x0030,
- 0x10c8, 0x1288, 0x0079, 0x57cc, 0x57fe, 0x580a, 0x57fe, 0x57fe,
- 0x57fe, 0x57fe, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc,
- 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc,
- 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fc,
- 0x57fc, 0x57fc, 0x57fc, 0x57fe, 0x57fc, 0x57fc, 0x57fc, 0x57fc,
- 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x57fe, 0x57fc, 0x57fc, 0x57fc,
- 0x57fc, 0x57fc, 0x57fc, 0x57fc, 0x1078, 0x1288, 0x6003, 0x0001,
- 0x6106, 0x1078, 0x45af, 0x127e, 0x2091, 0x8000, 0x1078, 0x49b7,
- 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x45af, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x49b7, 0x127f, 0x007c, 0x6004, 0xa0b2,
- 0x0030, 0x10c8, 0x1288, 0xa1b6, 0x0013, 0x00c0, 0x5822, 0x2008,
- 0x0079, 0x587a, 0xa1b6, 0x0027, 0x00c0, 0x5860, 0x1078, 0x48be,
- 0x6004, 0x1078, 0x6470, 0x0040, 0x5833, 0x1078, 0x6484, 0x0040,
- 0x585c, 0x0078, 0x5857, 0x1078, 0x21c6, 0x2001, 0x0007, 0x1078,
- 0x34a2, 0x6018, 0xa080, 0x0028, 0x200c, 0x017e, 0x027e, 0x037e,
- 0x2110, 0x2019, 0x0028, 0x1078, 0x469f, 0x1078, 0x45e2, 0x0c7e,
- 0x6018, 0xa065, 0x0040, 0x584e, 0x1078, 0x36e4, 0x0c7f, 0x2c08,
- 0x1078, 0x6d09, 0x037f, 0x027f, 0x017f, 0x1078, 0x34e2, 0x1078,
- 0x56f5, 0x1078, 0x49b7, 0x007c, 0x1078, 0x58f2, 0x0078, 0x5857,
- 0xa186, 0x0014, 0x00c0, 0x585b, 0x1078, 0x48be, 0x1078, 0x21a8,
- 0x1078, 0x6470, 0x00c0, 0x5870, 0x1078, 0x21c6, 0x0078, 0x5857,
- 0x1078, 0x6484, 0x00c0, 0x5878, 0x1078, 0x58f2, 0x0078, 0x5857,
- 0x0078, 0x5857, 0x58ac, 0x58ae, 0x58b2, 0x58b6, 0x58ba, 0x58be,
- 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa,
- 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa,
- 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa,
- 0x58c2, 0x58c8, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa, 0x58aa,
- 0x58aa, 0x58aa, 0x58c8, 0x58c8, 0x58aa, 0x58aa, 0x58aa, 0x58aa,
- 0x58aa, 0x58aa, 0x1078, 0x1288, 0x0078, 0x58c8, 0x2001, 0x000b,
- 0x0078, 0x58d1, 0x2001, 0x0003, 0x0078, 0x58d1, 0x2001, 0x0005,
- 0x0078, 0x58d1, 0x2001, 0x0001, 0x0078, 0x58d1, 0x2001, 0x0009,
- 0x0078, 0x58d1, 0x1078, 0x1288, 0x0078, 0x58d0, 0x1078, 0x34a2,
- 0x1078, 0x48be, 0x6003, 0x0002, 0x6017, 0x0028, 0x1078, 0x49b7,
- 0x007c, 0x1078, 0x34a2, 0x1078, 0x48be, 0x6003, 0x0002, 0x037e,
- 0x2019, 0x705c, 0x2304, 0xa084, 0xff00, 0x00c0, 0x58e3, 0x2019,
- 0x0028, 0x0078, 0x58ec, 0x8007, 0xa09a, 0x0004, 0x0048, 0x58df,
- 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x1078, 0x49b7,
- 0x0078, 0x58d0, 0x0e7e, 0x1078, 0x6336, 0x0040, 0x58ff, 0x6010,
- 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f,
- 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0x00ff, 0x0d7f,
- 0xa0b2, 0x000c, 0x10c8, 0x1288, 0x6604, 0xa6b6, 0x0028, 0x00c0,
- 0x5915, 0x1078, 0x64b9, 0x0078, 0x593e, 0x6604, 0xa6b6, 0x0029,
- 0x00c0, 0x591e, 0x1078, 0x64d3, 0x0078, 0x593e, 0x6604, 0xa6b6,
- 0x001f, 0x00c0, 0x5927, 0x1078, 0x5785, 0x0078, 0x593e, 0x6604,
- 0xa6b6, 0x0000, 0x00c0, 0x5930, 0x1078, 0x57ae, 0x0078, 0x593e,
- 0xa1b6, 0x0015, 0x00c0, 0x5938, 0x1079, 0x5943, 0x0078, 0x593e,
- 0xa1b6, 0x0016, 0x00c0, 0x593f, 0x1079, 0x5a0c, 0x007c, 0x1078,
- 0x5729, 0x0078, 0x593e, 0x594f, 0x5952, 0x594f, 0x5993, 0x594f,
- 0x59bb, 0x594f, 0x594f, 0x594f, 0x59e4, 0x594f, 0x59fa, 0x0005,
- 0x0005, 0x007c, 0x0e7e, 0x2071, 0x7000, 0x7070, 0xa086, 0x0074,
- 0x00c0, 0x597c, 0x1078, 0x6ce1, 0x00c0, 0x596e, 0x0d7e, 0x6018,
- 0x2068, 0x1078, 0x5980, 0x0d7f, 0x2001, 0x0006, 0x1078, 0x34a2,
- 0x1078, 0x21c6, 0x1078, 0x56f5, 0x0078, 0x597e, 0x2001, 0x000a,
- 0x1078, 0x34a2, 0x1078, 0x21c6, 0x6003, 0x0001, 0x6007, 0x0001,
- 0x1078, 0x45af, 0x0078, 0x597e, 0x1078, 0x59ab, 0x0e7f, 0x007c,
- 0x6800, 0xd084, 0x0040, 0x5992, 0x2001, 0x0000, 0x1078, 0x348e,
- 0x2069, 0x7051, 0x6804, 0xd0a4, 0x0040, 0x5992, 0x2001, 0x0006,
- 0x1078, 0x34b0, 0x007c, 0x2011, 0x701c, 0x2204, 0xa086, 0x0074,
- 0x00c0, 0x59a8, 0x1078, 0x5ad5, 0x2001, 0x0004, 0x1078, 0x34a2,
- 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x45af, 0x0078, 0x59aa,
- 0x1078, 0x59ab, 0x007c, 0x2001, 0x7000, 0x2004, 0xa086, 0x0003,
- 0x0040, 0x59b6, 0x2001, 0x0007, 0x1078, 0x34a2, 0x1078, 0x56f5,
- 0x1078, 0x21c6, 0x007c, 0x0e7e, 0x2071, 0x7000, 0x7070, 0xa086,
- 0x0014, 0x00c0, 0x59e0, 0x7000, 0xa086, 0x0003, 0x00c0, 0x59ca,
- 0x1078, 0x2a92, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x3576, 0x1078,
- 0x5980, 0x0d7f, 0x1078, 0x5adf, 0x00c0, 0x59e0, 0x2001, 0x0006,
- 0x1078, 0x34a2, 0x1078, 0x56f5, 0x1078, 0x21c6, 0x0078, 0x59e2,
- 0x1078, 0x59ab, 0x0e7f, 0x007c, 0x2011, 0x701c, 0x2204, 0xa086,
- 0x0014, 0x00c0, 0x59f7, 0x2001, 0x0002, 0x1078, 0x34a2, 0x6003,
- 0x0001, 0x6007, 0x0001, 0x1078, 0x45af, 0x0078, 0x59f9, 0x1078,
- 0x59ab, 0x007c, 0x2011, 0x701c, 0x2204, 0xa086, 0x0004, 0x00c0,
- 0x5a09, 0x2001, 0x0007, 0x1078, 0x34a2, 0x1078, 0x56f5, 0x0078,
- 0x5a0b, 0x1078, 0x59ab, 0x007c, 0x594f, 0x5a18, 0x594f, 0x5a3e,
- 0x594f, 0x5a8a, 0x594f, 0x594f, 0x594f, 0x5a9d, 0x594f, 0x5ab0,
- 0x0c7e, 0x1078, 0x5ac3, 0x00c0, 0x5a2d, 0x2001, 0x0000, 0x1078,
- 0x348e, 0x2001, 0x0002, 0x1078, 0x34a2, 0x6003, 0x0001, 0x6007,
- 0x0002, 0x1078, 0x45af, 0x0078, 0x5a3c, 0x2009, 0x748f, 0x2104,
- 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x5a3a, 0x1078, 0x56f5,
- 0x0078, 0x5a3c, 0x1078, 0x59ab, 0x0c7f, 0x007c, 0x1078, 0x5ad2,
- 0x00c0, 0x5a52, 0x2001, 0x0000, 0x1078, 0x348e, 0x2001, 0x0002,
- 0x1078, 0x34a2, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x45af,
- 0x0078, 0x5a72, 0x2009, 0x748e, 0x2134, 0xa6b4, 0x00ff, 0xa686,
- 0x0005, 0x0040, 0x5a73, 0x2009, 0x748f, 0x2104, 0xa084, 0xff00,
- 0xa086, 0x1900, 0x00c0, 0x5a70, 0xa686, 0x0009, 0x0040, 0x5a73,
- 0x2001, 0x0004, 0x1078, 0x34a2, 0x1078, 0x56f5, 0x0078, 0x5a72,
- 0x1078, 0x59ab, 0x007c, 0x0d7e, 0x6018, 0x2068, 0x6840, 0xa084,
- 0x00ff, 0xa005, 0x0040, 0x5a85, 0x8001, 0x6842, 0x6017, 0x000a,
- 0x6007, 0x0016, 0x0d7f, 0x0078, 0x5a72, 0x1078, 0x21a8, 0x0d7f,
- 0x0078, 0x5a70, 0x1078, 0x5ad2, 0x00c0, 0x5a9a, 0x2001, 0x0004,
- 0x1078, 0x34a2, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x45af,
- 0x0078, 0x5a9c, 0x1078, 0x59ab, 0x007c, 0x1078, 0x5ad2, 0x00c0,
- 0x5aad, 0x2001, 0x0008, 0x1078, 0x34a2, 0x6003, 0x0001, 0x6007,
- 0x0005, 0x1078, 0x45af, 0x0078, 0x5aaf, 0x1078, 0x59ab, 0x007c,
- 0x1078, 0x5ad2, 0x00c0, 0x5ac0, 0x2001, 0x000a, 0x1078, 0x34a2,
- 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x45af, 0x0078, 0x5ac2,
- 0x1078, 0x59ab, 0x007c, 0x2009, 0x748e, 0x2104, 0xa086, 0x0003,
- 0x00c0, 0x5ad1, 0x2009, 0x748f, 0x2104, 0xa084, 0xff00, 0xa086,
- 0x2a00, 0x007c, 0xa085, 0x0001, 0x007c, 0x0c7e, 0x017e, 0xac88,
- 0x0006, 0x2164, 0x1078, 0x350c, 0x017f, 0x0c7f, 0x007c, 0x0e7e,
- 0x2071, 0x748c, 0x7004, 0xa086, 0x0014, 0x00c0, 0x5b02, 0x7008,
- 0xa086, 0x0800, 0x00c0, 0x5b02, 0x700c, 0xd0ec, 0x0040, 0x5b00,
- 0xa084, 0x0f00, 0xa086, 0x0100, 0x00c0, 0x5b00, 0x7024, 0xd0a4,
- 0x0040, 0x5b00, 0xd08c, 0x0040, 0x5b00, 0xa006, 0x0078, 0x5b02,
- 0xa085, 0x0001, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x077e,
- 0x057e, 0x047e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2029,
- 0x71bf, 0x252c, 0x2021, 0x71c5, 0x2424, 0x2061, 0x7600, 0x2071,
- 0x7000, 0x7244, 0x7060, 0xa202, 0x00c8, 0x5b59, 0x1078, 0x6ee7,
- 0x0040, 0x5b51, 0x671c, 0xa786, 0x0001, 0x0040, 0x5b51, 0xa786,
- 0x0007, 0x0040, 0x5b51, 0x2500, 0xac06, 0x0040, 0x5b51, 0x2400,
- 0xac06, 0x0040, 0x5b51, 0x0c7e, 0x6000, 0xa086, 0x0004, 0x00c0,
- 0x5b3b, 0x1078, 0x1629, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040,
- 0x5b4e, 0xa786, 0x0003, 0x00c0, 0x5b63, 0x6837, 0x0103, 0x6b4a,
- 0x6847, 0x0000, 0x1078, 0x3840, 0x1078, 0x644a, 0x1078, 0x6457,
- 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5b59, 0x0078,
- 0x5b19, 0x127f, 0x007f, 0x027f, 0x047f, 0x057f, 0x077f, 0x0c7f,
- 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0, 0x5b45, 0x1078,
- 0x6e8b, 0x0078, 0x5b4e, 0x220c, 0x2304, 0xa106, 0x00c0, 0x5b76,
- 0x8210, 0x8318, 0x00f0, 0x5b6b, 0xa006, 0x007c, 0x2304, 0xa102,
- 0x0048, 0x5b7e, 0x2001, 0x0001, 0x0078, 0x5b80, 0x2001, 0x0000,
- 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a, 0x0030, 0x10c8, 0x1288,
- 0x1078, 0x6470, 0x0040, 0x5b92, 0x1078, 0x6484, 0x0040, 0x5b9b,
- 0x0078, 0x5b94, 0x1078, 0x21c6, 0x1078, 0x48be, 0x1078, 0x56f5,
- 0x1078, 0x49b7, 0x007c, 0x1078, 0x58f2, 0x0078, 0x5b94, 0xa182,
- 0x0040, 0x0079, 0x5ba3, 0x5bb3, 0x5bb3, 0x5bb3, 0x5bb3, 0x5bb3,
- 0x5bb3, 0x5bb3, 0x5bb3, 0x5bb3, 0x5bb3, 0x5bb3, 0x5bb5, 0x5bb5,
- 0x5bb5, 0x5bb5, 0x5bb3, 0x1078, 0x1288, 0x6003, 0x0001, 0x6106,
- 0x1078, 0x4562, 0x127e, 0x2091, 0x8000, 0x1078, 0x49b7, 0x127f,
- 0x007c, 0xa186, 0x0013, 0x00c0, 0x5bca, 0x6004, 0xa082, 0x0040,
- 0x0079, 0x5c40, 0xa186, 0x0027, 0x00c0, 0x5be7, 0x1078, 0x48be,
- 0x1078, 0x21a8, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6336, 0x0040,
- 0x5be1, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3840, 0x1078,
- 0x644a, 0x0d7f, 0x1078, 0x56f5, 0x1078, 0x49b7, 0x007c, 0xa186,
- 0x0014, 0x00c0, 0x5bf0, 0x6004, 0xa082, 0x0040, 0x0079, 0x5c10,
- 0xa186, 0x0047, 0x10c0, 0x1288, 0x2001, 0x0109, 0x2004, 0xd084,
- 0x0040, 0x5c0d, 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e,
- 0x1078, 0x4423, 0x027f, 0x017f, 0x007f, 0x127f, 0x6000, 0xa086,
- 0x0002, 0x00c0, 0x5c0d, 0x0078, 0x5c67, 0x1078, 0x5729, 0x007c,
- 0x5c22, 0x5c20, 0x5c20, 0x5c20, 0x5c20, 0x5c20, 0x5c20, 0x5c20,
- 0x5c20, 0x5c20, 0x5c20, 0x5c39, 0x5c39, 0x5c39, 0x5c39, 0x5c20,
- 0x1078, 0x1288, 0x1078, 0x48be, 0x0d7e, 0x6110, 0x2168, 0x1078,
- 0x6336, 0x0040, 0x5c33, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078,
- 0x3840, 0x1078, 0x644a, 0x0d7f, 0x1078, 0x56f5, 0x1078, 0x49b7,
- 0x007c, 0x1078, 0x48be, 0x1078, 0x56f5, 0x1078, 0x49b7, 0x007c,
- 0x5c52, 0x5c50, 0x5c50, 0x5c50, 0x5c50, 0x5c50, 0x5c50, 0x5c50,
- 0x5c50, 0x5c50, 0x5c50, 0x5c60, 0x5c60, 0x5c60, 0x5c60, 0x5c50,
- 0x1078, 0x1288, 0x1078, 0x48be, 0x6003, 0x0002, 0x1078, 0x49b7,
- 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x007c,
- 0x1078, 0x48be, 0x6003, 0x000f, 0x1078, 0x49b7, 0x007c, 0xa182,
- 0x0040, 0x0079, 0x5c6b, 0x5c7b, 0x5c7b, 0x5c7b, 0x5c7b, 0x5c7b,
- 0x5c7d, 0x5d06, 0x5d1e, 0x5c7b, 0x5c7b, 0x5c7b, 0x5c7b, 0x5c7b,
- 0x5c7b, 0x5c7b, 0x5c7b, 0x1078, 0x1288, 0x0e7e, 0x0d7e, 0x2071,
- 0x748c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff, 0x86ff, 0x0040,
- 0x5cea, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5caf, 0xa186,
- 0x0028, 0x00c0, 0x5c99, 0x1078, 0x645e, 0x684b, 0x001c, 0x0078,
- 0x5cb1, 0xd6dc, 0x0040, 0x5ca4, 0x684b, 0x0015, 0x7318, 0x6b62,
- 0x731c, 0x6b5e, 0x0078, 0x5cb1, 0xd6d4, 0x0040, 0x5caf, 0x684b,
- 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5cb1, 0x684b,
- 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4, 0x0040, 0x5cc4,
- 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7498, 0xad90,
- 0x0019, 0x1078, 0x6128, 0x037f, 0xd6cc, 0x0040, 0x5cfa, 0x7124,
- 0x695a, 0xa192, 0x0021, 0x00c8, 0x5cd8, 0x2071, 0x7498, 0x831c,
- 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x6128, 0x0078, 0x5cfa,
- 0x6838, 0xd0fc, 0x0040, 0x5ce1, 0x2009, 0x0020, 0x695a, 0x0078,
- 0x5ccd, 0x0f7e, 0x2d78, 0x1078, 0x60c0, 0x0f7f, 0x1078, 0x6115,
- 0x0078, 0x5cfc, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0x684c,
- 0xd0ac, 0x0040, 0x5cfa, 0x6810, 0x6914, 0xa115, 0x0040, 0x5cfa,
- 0x1078, 0x5e6e, 0x1078, 0x3840, 0x6218, 0x2268, 0x6a3c, 0x8211,
- 0x6a3e, 0x0d7f, 0x0e7f, 0x1078, 0x56f5, 0x007c, 0x0f7e, 0x6003,
- 0x0003, 0x2079, 0x748c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
- 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078,
- 0x1936, 0x1078, 0x45ce, 0x1078, 0x4a67, 0x007c, 0x6003, 0x0004,
- 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1525,
- 0x007c, 0xa182, 0x0040, 0x0079, 0x5d2d, 0x5d3d, 0x5d3d, 0x5d3d,
- 0x5d3d, 0x5d3d, 0x5d3f, 0x5dd6, 0x5d3d, 0x5d3d, 0x5dec, 0x5e4e,
- 0x5d3d, 0x5d3d, 0x5d3d, 0x5d3d, 0x5e55, 0x1078, 0x1288, 0x077e,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x748c, 0x6110, 0x2178, 0x7614,
- 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268,
- 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x5dd1, 0xa694, 0xff00,
- 0xa284, 0x0c00, 0x0040, 0x5d60, 0x7018, 0x7862, 0x701c, 0x785e,
- 0xa284, 0x0300, 0x0040, 0x5dd1, 0x1078, 0x12e2, 0x1040, 0x1288,
- 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837, 0x0103, 0x7838,
- 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff,
- 0xa186, 0x0002, 0x0040, 0x5d9a, 0xa186, 0x0028, 0x00c0, 0x5d84,
- 0x684b, 0x001c, 0x0078, 0x5d9c, 0xd6dc, 0x0040, 0x5d8f, 0x684b,
- 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5d9c, 0xd6d4,
- 0x0040, 0x5d9a, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e,
- 0x0078, 0x5d9c, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854,
- 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x5db1, 0x7328, 0x732c, 0x6b56,
- 0x037e, 0x2308, 0x2019, 0x7498, 0xad90, 0x0019, 0x1078, 0x6128,
- 0x037f, 0xd6cc, 0x0040, 0x5dd1, 0x7124, 0x695a, 0xa192, 0x0021,
- 0x00c8, 0x5dc5, 0x2071, 0x7498, 0x831c, 0x2300, 0xae18, 0xad90,
- 0x001d, 0x1078, 0x6128, 0x0078, 0x5dd1, 0x7838, 0xd0fc, 0x0040,
- 0x5dce, 0x2009, 0x0020, 0x695a, 0x0078, 0x5dba, 0x2d78, 0x1078,
- 0x60c0, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e, 0x6003,
- 0x0003, 0x2079, 0x748c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08, 0x6010,
- 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10, 0x1078,
- 0x1936, 0x1078, 0x5095, 0x007c, 0x0d7e, 0x6003, 0x0002, 0x1078,
- 0x4966, 0x1078, 0x4a67, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040,
- 0x5e4c, 0xd1cc, 0x0040, 0x5e27, 0x6948, 0x6838, 0xd0fc, 0x0040,
- 0x5e1f, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90, 0x000d,
- 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012,
- 0x8318, 0x8210, 0x00f0, 0x5e0e, 0x157f, 0x007f, 0x6852, 0x007f,
- 0x684e, 0x017f, 0x2168, 0x1078, 0x130b, 0x0078, 0x5e4a, 0x017e,
- 0x1078, 0x130b, 0x0d7f, 0x1078, 0x6115, 0x0078, 0x5e4a, 0x6837,
- 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5e46,
- 0xa086, 0x0028, 0x00c0, 0x5e38, 0x684b, 0x001c, 0x0078, 0x5e48,
- 0xd1dc, 0x0040, 0x5e3f, 0x684b, 0x0015, 0x0078, 0x5e48, 0xd1d4,
- 0x0040, 0x5e46, 0x684b, 0x0007, 0x0078, 0x5e48, 0x684b, 0x0000,
- 0x1078, 0x3840, 0x1078, 0x56f5, 0x0d7f, 0x007c, 0x6003, 0x0002,
- 0x1078, 0x4966, 0x1078, 0x4a67, 0x007c, 0x1078, 0x4966, 0x1078,
- 0x21a8, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6336, 0x0040, 0x5e68,
- 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3840, 0x1078, 0x644a,
- 0x0d7f, 0x1078, 0x56f5, 0x1078, 0x4a67, 0x007c, 0x684b, 0x0015,
- 0xd1fc, 0x0040, 0x5e7a, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a,
- 0xa189, 0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, 0x0079,
- 0x5e81, 0x5e91, 0x5e91, 0x5e91, 0x5e91, 0x5e91, 0x5e93, 0x5e91,
- 0x5f37, 0x5f3f, 0x5e91, 0x5e91, 0x5e91, 0x5e91, 0x5e91, 0x5e91,
- 0x5e91, 0x1078, 0x1288, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071,
- 0x748c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c,
- 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff,
- 0x0040, 0x5f29, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x5eb4,
- 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x5f26,
- 0x1078, 0x12e2, 0x1040, 0x1288, 0x2d00, 0x784a, 0x7f4c, 0xa7bd,
- 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, 0x683e,
- 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040,
- 0x5eef, 0xa186, 0x0028, 0x00c0, 0x5ed9, 0x684b, 0x001c, 0x0078,
- 0x5ef1, 0xd6dc, 0x0040, 0x5ee4, 0x684b, 0x0015, 0x7318, 0x6b62,
- 0x731c, 0x6b5e, 0x0078, 0x5ef1, 0xd6d4, 0x0040, 0x5eef, 0x684b,
- 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5ef1, 0x684b,
- 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4,
- 0x0040, 0x5f06, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019,
- 0x7498, 0xad90, 0x0019, 0x1078, 0x6128, 0x037f, 0xd6cc, 0x0040,
- 0x5f26, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x5f1a, 0x2071,
- 0x7498, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x6128,
- 0x0078, 0x5f26, 0x7838, 0xd0fc, 0x0040, 0x5f23, 0x2009, 0x0020,
- 0x695a, 0x0078, 0x5f0f, 0x2d78, 0x1078, 0x60c0, 0xd6dc, 0x00c0,
- 0x5f2c, 0xa006, 0x0078, 0x5f30, 0x2001, 0x0001, 0x7218, 0x731c,
- 0x1078, 0x1569, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x20e1,
- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1525, 0x007c, 0x0d7e,
- 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040, 0x5fa6,
- 0xd1cc, 0x0040, 0x5f76, 0x6948, 0x6838, 0xd0fc, 0x0040, 0x5f6e,
- 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90, 0x000d, 0xa198,
- 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318,
- 0x8210, 0x00f0, 0x5f5d, 0x157f, 0x007f, 0x6852, 0x007f, 0x684e,
- 0x017f, 0x2168, 0x1078, 0x130b, 0x0078, 0x5fa4, 0x017e, 0x1078,
- 0x130b, 0x0d7f, 0x1078, 0x6115, 0x0078, 0x5fa4, 0x6837, 0x0103,
- 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5f95, 0xa086,
- 0x0028, 0x00c0, 0x5f87, 0x684b, 0x001c, 0x0078, 0x5fa2, 0xd1dc,
- 0x0040, 0x5f8e, 0x684b, 0x0015, 0x0078, 0x5fa2, 0xd1d4, 0x0040,
- 0x5f95, 0x684b, 0x0007, 0x0078, 0x5fa2, 0x684b, 0x0000, 0x684c,
- 0xd0ac, 0x0040, 0x5fa2, 0x6810, 0x6914, 0xa115, 0x0040, 0x5fa2,
- 0x1078, 0x5e6e, 0x1078, 0x3840, 0x1078, 0x56f5, 0x0d7f, 0x007c,
- 0x1078, 0x48be, 0x0078, 0x5fae, 0x1078, 0x4966, 0x1078, 0x6336,
- 0x0040, 0x5fc5, 0x0d7e, 0x6110, 0x2168, 0x6837, 0x0103, 0x2009,
- 0x700c, 0x210c, 0xd18c, 0x00c0, 0x5fce, 0xd184, 0x00c0, 0x5fca,
- 0x6108, 0x694a, 0x1078, 0x3840, 0x0d7f, 0x1078, 0x56f5, 0x1078,
- 0x49b7, 0x007c, 0x684b, 0x0004, 0x0078, 0x5fc2, 0x684b, 0x0004,
- 0x0078, 0x5fc2, 0xa182, 0x0040, 0x0079, 0x5fd6, 0x5fe6, 0x5fe6,
- 0x5fe6, 0x5fe6, 0x5fe6, 0x5fe8, 0x5fe6, 0x5feb, 0x5fe6, 0x5fe6,
- 0x5fe6, 0x5fe6, 0x5fe6, 0x5fe6, 0x5fe6, 0x5fe6, 0x1078, 0x1288,
- 0x1078, 0x56f5, 0x007c, 0x007e, 0x027e, 0xa016, 0x1078, 0x1525,
- 0x027f, 0x007f, 0x007c, 0xa182, 0x0085, 0x0079, 0x5ff7, 0x6000,
- 0x5ffe, 0x5ffe, 0x5ffe, 0x5ffe, 0x5ffe, 0x5ffe, 0x1078, 0x1288,
- 0x6003, 0x0001, 0x6106, 0x1078, 0x4562, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x49b7, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x6016,
- 0x6004, 0xa082, 0x0085, 0x2008, 0x0079, 0x604a, 0xa186, 0x0027,
- 0x00c0, 0x6037, 0x1078, 0x48be, 0x1078, 0x21a8, 0x0d7e, 0x6010,
- 0x2068, 0x1078, 0x6336, 0x0040, 0x602d, 0x6837, 0x0103, 0x684b,
- 0x0029, 0x1078, 0x3840, 0x1078, 0x644a, 0x0d7f, 0x1078, 0x56f5,
- 0x1078, 0x49b7, 0x007c, 0x1078, 0x5729, 0x0078, 0x6032, 0xa186,
- 0x0014, 0x00c0, 0x6033, 0x1078, 0x48be, 0x0d7e, 0x6010, 0x2068,
- 0x1078, 0x6336, 0x0040, 0x602d, 0x6837, 0x0103, 0x684b, 0x0006,
- 0x0078, 0x6029, 0x6053, 0x6051, 0x6051, 0x6051, 0x6051, 0x6051,
- 0x605c, 0x1078, 0x1288, 0x1078, 0x48be, 0x6017, 0x0014, 0x6003,
- 0x000c, 0x1078, 0x49b7, 0x007c, 0x1078, 0x48be, 0x6017, 0x0014,
- 0x6003, 0x000e, 0x1078, 0x49b7, 0x007c, 0xa182, 0x008c, 0x00c8,
- 0x606f, 0xa182, 0x0085, 0x0048, 0x606f, 0x0079, 0x6072, 0x1078,
- 0x5729, 0x007c, 0x6079, 0x6079, 0x6079, 0x6079, 0x607b, 0x609a,
- 0x6079, 0x1078, 0x1288, 0x0d7e, 0x1078, 0x644a, 0x1078, 0x6336,
- 0x0040, 0x6096, 0x6010, 0x2068, 0x6837, 0x0103, 0x6850, 0xd0b4,
- 0x0040, 0x608e, 0x684b, 0x0006, 0x0078, 0x6092, 0x684b, 0x0005,
- 0x1078, 0x64fd, 0x6847, 0x0000, 0x1078, 0x3840, 0x1078, 0x56f5,
- 0x0d7f, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040,
- 0x60b5, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x60ab, 0x684b,
- 0x0006, 0x0078, 0x60af, 0x684b, 0x0005, 0x1078, 0x64fd, 0x6847,
- 0x0000, 0x1078, 0x3840, 0x1078, 0x644a, 0x0d7f, 0x1078, 0x56f5,
- 0x007c, 0x1078, 0x48be, 0x1078, 0x56f5, 0x1078, 0x49b7, 0x007c,
- 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001, 0xa182, 0x0101,
- 0x00c8, 0x60cc, 0x0078, 0x60ce, 0x2009, 0x0100, 0x2130, 0x2069,
- 0x7498, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020, 0xaf90, 0x001d,
- 0x1078, 0x6128, 0xa6b2, 0x0020, 0x7804, 0xa06d, 0x0040, 0x60e2,
- 0x1078, 0x130b, 0x1078, 0x12e2, 0x0040, 0x610c, 0x8528, 0x6837,
- 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a, 0x003d, 0x00c8,
- 0x60f8, 0x2608, 0xad90, 0x000f, 0x1078, 0x6128, 0x0078, 0x610c,
- 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90, 0x000f, 0x1078,
- 0x6128, 0x0078, 0x60e2, 0x0f7f, 0x852f, 0xa5ad, 0x0003, 0x7d36,
- 0xa5ac, 0x0000, 0x0078, 0x6111, 0x0f7f, 0x852f, 0xa5ad, 0x0003,
- 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e, 0x8dff, 0x0040,
- 0x6126, 0x6804, 0xa07d, 0x0040, 0x6124, 0x6807, 0x0000, 0x1078,
- 0x3840, 0x2f68, 0x0078, 0x6119, 0x1078, 0x3840, 0x0f7f, 0x007c,
- 0x157e, 0xa184, 0x0001, 0x0040, 0x612e, 0x8108, 0x810c, 0x21a8,
- 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0, 0x6130, 0x157f,
- 0x007c, 0x127e, 0x2091, 0x8000, 0x601c, 0xa084, 0x0007, 0x1079,
- 0x6143, 0x127f, 0x007c, 0x6152, 0x614b, 0x614d, 0x616b, 0x614b,
- 0x614d, 0x614d, 0x614d, 0x1078, 0x1288, 0xa006, 0x007c, 0xa085,
- 0x0001, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040,
- 0x6168, 0xa00e, 0x2001, 0x0005, 0x1078, 0x38d0, 0x1078, 0x64fd,
- 0x1078, 0x3840, 0x1078, 0x56f5, 0xa085, 0x0001, 0x0d7f, 0x007c,
- 0xa006, 0x0078, 0x6166, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1288,
- 0x1079, 0x6173, 0x007c, 0x6183, 0x61a0, 0x6185, 0x61b1, 0x619c,
- 0x6183, 0x614d, 0x6152, 0x6152, 0x614d, 0x614d, 0x614d, 0x614d,
- 0x614d, 0x614d, 0x614d, 0x1078, 0x1288, 0x0d7e, 0x6010, 0x2068,
- 0x1078, 0x6336, 0x0040, 0x618e, 0x1078, 0x64fd, 0x0d7f, 0x6007,
- 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078, 0x4562, 0x1078,
- 0x49b7, 0xa085, 0x0001, 0x007c, 0x1078, 0x1629, 0x0078, 0x6185,
- 0x0e7e, 0x2071, 0x71b6, 0x7024, 0xac06, 0x00c0, 0x61a9, 0x1078,
- 0x51c9, 0x1078, 0x5139, 0x0e7f, 0x00c0, 0x6185, 0x1078, 0x614d,
- 0x007c, 0x037e, 0x0e7e, 0x2071, 0x71b6, 0x703c, 0xac06, 0x00c0,
- 0x61c1, 0x2019, 0x0000, 0x1078, 0x525b, 0x0e7f, 0x037f, 0x0078,
- 0x6185, 0x1078, 0x5537, 0x0e7f, 0x037f, 0x00c0, 0x6185, 0x1078,
- 0x614d, 0x007c, 0x0c7e, 0x601c, 0xa084, 0x0007, 0x1079, 0x61d2,
- 0x0c7f, 0x007c, 0x61e0, 0x623d, 0x62da, 0x61e4, 0x61e0, 0x61e0,
- 0x6b6f, 0x56f5, 0x1078, 0x6484, 0x00c0, 0x61e0, 0x1078, 0x58f2,
+ 0x54f2, 0x6018, 0x2068, 0x7038, 0x680a, 0x703c, 0x680e, 0x6800,
+ 0xc08d, 0x6802, 0x0d7f, 0x0078, 0x54cf, 0x2100, 0xa1b2, 0x002a,
+ 0x10c8, 0x126a, 0x0079, 0x54fc, 0x5528, 0x5534, 0x5528, 0x5528,
+ 0x5528, 0x5528, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526,
+ 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526,
+ 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526, 0x5526,
+ 0x5526, 0x5526, 0x5526, 0x5528, 0x5526, 0x5526, 0x5526, 0x5526,
+ 0x5526, 0x5526, 0x5526, 0x5526, 0x5528, 0x5526, 0x1078, 0x126a,
+ 0x6003, 0x0001, 0x6106, 0x1078, 0x4311, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x4713, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078,
+ 0x4311, 0x127e, 0x2091, 0x8000, 0x1078, 0x4713, 0x127f, 0x007c,
+ 0x6004, 0xa0b2, 0x002a, 0x10c8, 0x126a, 0xa1b6, 0x0013, 0x00c0,
+ 0x554c, 0x2008, 0x0079, 0x55a2, 0xa1b6, 0x0027, 0x00c0, 0x558a,
+ 0x1078, 0x461a, 0x6004, 0x1078, 0x6101, 0x0040, 0x555d, 0x1078,
+ 0x6115, 0x0040, 0x5586, 0x0078, 0x5581, 0x1078, 0x2143, 0x2001,
+ 0x0007, 0x1078, 0x3316, 0x6018, 0xa080, 0x0028, 0x200c, 0x017e,
+ 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078, 0x43ff, 0x1078,
+ 0x4344, 0x0c7e, 0x6018, 0xa065, 0x0040, 0x5578, 0x1078, 0x34f2,
+ 0x0c7f, 0x2c08, 0x1078, 0x6946, 0x037f, 0x027f, 0x017f, 0x1078,
+ 0x3352, 0x1078, 0x5425, 0x1078, 0x4713, 0x007c, 0x1078, 0x5614,
+ 0x0078, 0x5581, 0xa186, 0x0014, 0x1078, 0x461a, 0x1078, 0x2125,
+ 0x1078, 0x6101, 0x00c0, 0x5598, 0x1078, 0x2143, 0x0078, 0x5581,
+ 0x1078, 0x6115, 0x00c0, 0x55a0, 0x1078, 0x5614, 0x0078, 0x5581,
+ 0x0078, 0x5581, 0x55ce, 0x55d0, 0x55d4, 0x55d8, 0x55dc, 0x55e0,
+ 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc,
+ 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc,
+ 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc,
+ 0x55e4, 0x55ea, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc, 0x55cc,
+ 0x55cc, 0x55cc, 0x55ea, 0x55ea, 0x1078, 0x126a, 0x0078, 0x55ea,
+ 0x2001, 0x000b, 0x0078, 0x55f3, 0x2001, 0x0003, 0x0078, 0x55f3,
+ 0x2001, 0x0005, 0x0078, 0x55f3, 0x2001, 0x0001, 0x0078, 0x55f3,
+ 0x2001, 0x0009, 0x0078, 0x55f3, 0x1078, 0x126a, 0x0078, 0x55f2,
+ 0x1078, 0x3316, 0x1078, 0x461a, 0x6003, 0x0002, 0x6017, 0x0028,
+ 0x1078, 0x4713, 0x007c, 0x1078, 0x3316, 0x1078, 0x461a, 0x6003,
+ 0x0002, 0x037e, 0x2019, 0x6c5c, 0x2304, 0xa084, 0xff00, 0x00c0,
+ 0x5605, 0x2019, 0x0028, 0x0078, 0x560e, 0x8007, 0xa09a, 0x0004,
+ 0x0048, 0x5601, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f,
+ 0x1078, 0x4713, 0x0078, 0x55f2, 0x0e7e, 0x1078, 0x5fcd, 0x0040,
+ 0x5621, 0x6010, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033,
+ 0x0100, 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084,
+ 0x00ff, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x126a, 0x6604, 0xa6b6,
+ 0x0028, 0x00c0, 0x5637, 0x1078, 0x614a, 0x0078, 0x5660, 0x6604,
+ 0xa6b6, 0x0029, 0x00c0, 0x5640, 0x1078, 0x6164, 0x0078, 0x5660,
+ 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x5649, 0x1078, 0x54b5, 0x0078,
+ 0x5660, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x5652, 0x1078, 0x54de,
+ 0x0078, 0x5660, 0xa1b6, 0x0015, 0x00c0, 0x565a, 0x1079, 0x5665,
+ 0x0078, 0x5660, 0xa1b6, 0x0016, 0x00c0, 0x5661, 0x1079, 0x572e,
+ 0x007c, 0x1078, 0x5459, 0x0078, 0x5660, 0x5671, 0x5674, 0x5671,
+ 0x56b5, 0x5671, 0x56dd, 0x5671, 0x5671, 0x5671, 0x5706, 0x5671,
+ 0x571c, 0x0005, 0x0005, 0x007c, 0x0e7e, 0x2071, 0x6c00, 0x7070,
+ 0xa086, 0x0074, 0x00c0, 0x569e, 0x1078, 0x691e, 0x00c0, 0x5690,
+ 0x0d7e, 0x6018, 0x2068, 0x1078, 0x56a2, 0x0d7f, 0x2001, 0x0006,
+ 0x1078, 0x3316, 0x1078, 0x2143, 0x1078, 0x5425, 0x0078, 0x56a0,
+ 0x2001, 0x000a, 0x1078, 0x3316, 0x1078, 0x2143, 0x6003, 0x0001,
+ 0x6007, 0x0001, 0x1078, 0x4311, 0x0078, 0x56a0, 0x1078, 0x56cd,
+ 0x0e7f, 0x007c, 0x6800, 0xd084, 0x0040, 0x56b4, 0x2001, 0x0000,
+ 0x1078, 0x3302, 0x2069, 0x6c51, 0x6804, 0xd0a4, 0x0040, 0x56b4,
+ 0x2001, 0x0006, 0x1078, 0x3324, 0x007c, 0x2011, 0x6c1c, 0x2204,
+ 0xa086, 0x0074, 0x00c0, 0x56ca, 0x1078, 0x57f7, 0x2001, 0x0004,
+ 0x1078, 0x3316, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x4311,
+ 0x0078, 0x56cc, 0x1078, 0x56cd, 0x007c, 0x2001, 0x6c00, 0x2004,
+ 0xa086, 0x0003, 0x0040, 0x56d8, 0x2001, 0x0007, 0x1078, 0x3316,
+ 0x1078, 0x5425, 0x1078, 0x2143, 0x007c, 0x0e7e, 0x2071, 0x6c00,
+ 0x7070, 0xa086, 0x0014, 0x00c0, 0x5702, 0x7000, 0xa086, 0x0003,
+ 0x00c0, 0x56ec, 0x1078, 0x29a0, 0x0d7e, 0x6018, 0x2068, 0x1078,
+ 0x33ed, 0x1078, 0x56a2, 0x0d7f, 0x1078, 0x5801, 0x00c0, 0x5702,
+ 0x2001, 0x0006, 0x1078, 0x3316, 0x1078, 0x5425, 0x1078, 0x2143,
+ 0x0078, 0x5704, 0x1078, 0x56cd, 0x0e7f, 0x007c, 0x2011, 0x6c1c,
+ 0x2204, 0xa086, 0x0014, 0x00c0, 0x5719, 0x2001, 0x0002, 0x1078,
+ 0x3316, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4311, 0x0078,
+ 0x571b, 0x1078, 0x56cd, 0x007c, 0x2011, 0x6c1c, 0x2204, 0xa086,
+ 0x0004, 0x00c0, 0x572b, 0x2001, 0x0007, 0x1078, 0x3316, 0x1078,
+ 0x5425, 0x0078, 0x572d, 0x1078, 0x56cd, 0x007c, 0x5671, 0x573a,
+ 0x5671, 0x5760, 0x5671, 0x57ac, 0x5671, 0x5671, 0x5671, 0x57bf,
+ 0x5671, 0x57d2, 0x0c7e, 0x1078, 0x57e5, 0x00c0, 0x574f, 0x2001,
+ 0x0000, 0x1078, 0x3302, 0x2001, 0x0002, 0x1078, 0x3316, 0x6003,
+ 0x0001, 0x6007, 0x0002, 0x1078, 0x4311, 0x0078, 0x575e, 0x2009,
+ 0x708f, 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x575c,
+ 0x1078, 0x5425, 0x0078, 0x575e, 0x1078, 0x56cd, 0x0c7f, 0x007c,
+ 0x1078, 0x57f4, 0x00c0, 0x5774, 0x2001, 0x0000, 0x1078, 0x3302,
+ 0x2001, 0x0002, 0x1078, 0x3316, 0x6003, 0x0001, 0x6007, 0x0002,
+ 0x1078, 0x4311, 0x0078, 0x5794, 0x2009, 0x708e, 0x2134, 0xa6b4,
+ 0x00ff, 0xa686, 0x0005, 0x0040, 0x5795, 0x2009, 0x708f, 0x2104,
+ 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x5792, 0xa686, 0x0009,
+ 0x0040, 0x5795, 0x2001, 0x0004, 0x1078, 0x3316, 0x1078, 0x5425,
+ 0x0078, 0x5794, 0x1078, 0x56cd, 0x007c, 0x0d7e, 0x6018, 0x2068,
+ 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x57a7, 0x8001, 0x6842,
+ 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f, 0x0078, 0x5794, 0x1078,
+ 0x2125, 0x0d7f, 0x0078, 0x5792, 0x1078, 0x57f4, 0x00c0, 0x57bc,
+ 0x2001, 0x0004, 0x1078, 0x3316, 0x6003, 0x0001, 0x6007, 0x0003,
+ 0x1078, 0x4311, 0x0078, 0x57be, 0x1078, 0x56cd, 0x007c, 0x1078,
+ 0x57f4, 0x00c0, 0x57cf, 0x2001, 0x0008, 0x1078, 0x3316, 0x6003,
+ 0x0001, 0x6007, 0x0005, 0x1078, 0x4311, 0x0078, 0x57d1, 0x1078,
+ 0x56cd, 0x007c, 0x1078, 0x57f4, 0x00c0, 0x57e2, 0x2001, 0x000a,
+ 0x1078, 0x3316, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4311,
+ 0x0078, 0x57e4, 0x1078, 0x56cd, 0x007c, 0x2009, 0x708e, 0x2104,
+ 0xa086, 0x0003, 0x00c0, 0x57f3, 0x2009, 0x708f, 0x2104, 0xa084,
+ 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001, 0x007c, 0x0c7e,
+ 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x337c, 0x017f, 0x0c7f,
+ 0x007c, 0x0e7e, 0x2071, 0x708c, 0x7004, 0xa086, 0x0014, 0x00c0,
+ 0x5824, 0x7008, 0xa086, 0x0800, 0x00c0, 0x5824, 0x700c, 0xd0ec,
+ 0x0040, 0x5822, 0xa084, 0x0f00, 0xa086, 0x0100, 0x00c0, 0x5822,
+ 0x7024, 0xd0a4, 0x0040, 0x5822, 0xd08c, 0x0040, 0x5822, 0xa006,
+ 0x0078, 0x5824, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e,
+ 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e, 0x127e, 0x2091,
+ 0x8000, 0x2029, 0x6db9, 0x252c, 0x2021, 0x6dbf, 0x2424, 0x2061,
+ 0x7200, 0x2071, 0x6c00, 0x7244, 0x7060, 0xa202, 0x00c8, 0x587b,
+ 0x1078, 0x6b22, 0x0040, 0x5873, 0x671c, 0xa786, 0x0001, 0x0040,
+ 0x5873, 0xa786, 0x0007, 0x0040, 0x5873, 0x2500, 0xac06, 0x0040,
+ 0x5873, 0x2400, 0xac06, 0x0040, 0x5873, 0x0c7e, 0x6000, 0xa086,
+ 0x0004, 0x00c0, 0x585d, 0x1078, 0x15fc, 0x6010, 0x2068, 0x1078,
+ 0x5fcd, 0x0040, 0x5870, 0xa786, 0x0003, 0x00c0, 0x5885, 0x6837,
+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x35c4, 0x1078, 0x60db,
+ 0x1078, 0x60e8, 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8,
+ 0x587b, 0x0078, 0x583b, 0x127f, 0x007f, 0x027f, 0x047f, 0x057f,
+ 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0,
+ 0x5867, 0x1078, 0x6ac6, 0x0078, 0x5870, 0x220c, 0x2304, 0xa106,
+ 0x00c0, 0x5898, 0x8210, 0x8318, 0x00f0, 0x588d, 0xa006, 0x007c,
+ 0x2304, 0xa102, 0x0048, 0x58a0, 0x2001, 0x0001, 0x0078, 0x58a2,
+ 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a, 0x002a,
+ 0x10c8, 0x126a, 0x1078, 0x6101, 0x0040, 0x58b4, 0x1078, 0x6115,
+ 0x0040, 0x58bd, 0x0078, 0x58b6, 0x1078, 0x2143, 0x1078, 0x461a,
+ 0x1078, 0x5425, 0x1078, 0x4713, 0x007c, 0x1078, 0x5614, 0x0078,
+ 0x58b6, 0xa182, 0x0040, 0x0079, 0x58c5, 0x58d5, 0x58d5, 0x58d5,
+ 0x58d5, 0x58d5, 0x58d5, 0x58d5, 0x58d5, 0x58d5, 0x58d5, 0x58d5,
+ 0x58d7, 0x58d7, 0x58d7, 0x58d7, 0x58d5, 0x1078, 0x126a, 0x6003,
+ 0x0001, 0x6106, 0x1078, 0x42c4, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x4713, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x58ec, 0x6004,
+ 0xa082, 0x0040, 0x0079, 0x5942, 0xa186, 0x0027, 0x00c0, 0x5909,
+ 0x1078, 0x461a, 0x1078, 0x2125, 0x0d7e, 0x6110, 0x2168, 0x1078,
+ 0x5fcd, 0x0040, 0x5903, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078,
+ 0x35c4, 0x1078, 0x60db, 0x0d7f, 0x1078, 0x5425, 0x1078, 0x4713,
+ 0x007c, 0xa186, 0x0014, 0x10c0, 0x126a, 0x6004, 0xa082, 0x0040,
+ 0x0079, 0x5912, 0x5924, 0x5922, 0x5922, 0x5922, 0x5922, 0x5922,
+ 0x5922, 0x5922, 0x5922, 0x5922, 0x5922, 0x593b, 0x593b, 0x593b,
+ 0x593b, 0x5922, 0x1078, 0x126a, 0x1078, 0x461a, 0x0d7e, 0x6110,
+ 0x2168, 0x1078, 0x5fcd, 0x0040, 0x5935, 0x6837, 0x0103, 0x684b,
+ 0x0006, 0x1078, 0x35c4, 0x1078, 0x60db, 0x0d7f, 0x1078, 0x5425,
+ 0x1078, 0x4713, 0x007c, 0x1078, 0x461a, 0x1078, 0x5425, 0x1078,
+ 0x4713, 0x007c, 0x5954, 0x5952, 0x5952, 0x5952, 0x5952, 0x5952,
+ 0x5952, 0x5952, 0x5952, 0x5952, 0x5952, 0x5962, 0x5962, 0x5962,
+ 0x5962, 0x5952, 0x1078, 0x126a, 0x1078, 0x461a, 0x6003, 0x0002,
+ 0x1078, 0x4713, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400,
+ 0x200a, 0x007c, 0x1078, 0x461a, 0x6003, 0x000f, 0x1078, 0x4713,
+ 0x007c, 0xa182, 0x0040, 0x0079, 0x596d, 0x597d, 0x597d, 0x597d,
+ 0x597d, 0x597d, 0x597f, 0x5a08, 0x5a20, 0x597d, 0x597d, 0x597d,
+ 0x597d, 0x597d, 0x597d, 0x597d, 0x597d, 0x1078, 0x126a, 0x0e7e,
+ 0x0d7e, 0x2071, 0x708c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff,
+ 0x86ff, 0x0040, 0x59ec, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040,
+ 0x59b1, 0xa186, 0x0028, 0x00c0, 0x599b, 0x1078, 0x60ef, 0x684b,
+ 0x001c, 0x0078, 0x59b3, 0xd6dc, 0x0040, 0x59a6, 0x684b, 0x0015,
+ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x59b3, 0xd6d4, 0x0040,
+ 0x59b1, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078,
+ 0x59b3, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4,
+ 0x0040, 0x59c6, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019,
+ 0x7098, 0xad90, 0x0019, 0x1078, 0x5dd2, 0x037f, 0xd6cc, 0x0040,
+ 0x59fc, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x59da, 0x2071,
+ 0x7098, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x5dd2,
+ 0x0078, 0x59fc, 0x6838, 0xd0fc, 0x0040, 0x59e3, 0x2009, 0x0020,
+ 0x695a, 0x0078, 0x59cf, 0x0f7e, 0x2d78, 0x1078, 0x5d6a, 0x0f7f,
+ 0x1078, 0x5dbf, 0x0078, 0x59fe, 0x684b, 0x0000, 0x6837, 0x0103,
+ 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x59fc, 0x6810, 0x6914, 0xa115,
+ 0x0040, 0x59fc, 0x1078, 0x5b45, 0x1078, 0x35c4, 0x6218, 0x2268,
+ 0x6a3c, 0x8211, 0x6a3e, 0x0d7f, 0x0e7f, 0x1078, 0x5425, 0x007c,
+ 0x0f7e, 0x6003, 0x0003, 0x2079, 0x708c, 0x7c04, 0x7b00, 0x7e0c,
+ 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f,
+ 0x2c10, 0x1078, 0x18d5, 0x1078, 0x4330, 0x1078, 0x47c3, 0x007c,
+ 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
+ 0x1078, 0x1505, 0x007c, 0xa182, 0x0040, 0x0079, 0x5a2f, 0x5a3f,
+ 0x5a3f, 0x5a3f, 0x5a3f, 0x5a3f, 0x5a41, 0x5acf, 0x5a3f, 0x5a3f,
+ 0x5ae5, 0x5b25, 0x5a3f, 0x5a3f, 0x5a3f, 0x5a3f, 0x5b2c, 0x1078,
+ 0x126a, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x708c, 0x6110,
+ 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e,
+ 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x5aca,
+ 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x5a62, 0x7018, 0x7862,
+ 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x5aca, 0x1078, 0x12c2,
+ 0x1040, 0x126a, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837,
+ 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46,
+ 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5a9c, 0xa186, 0x0028,
+ 0x00c0, 0x5a86, 0x684b, 0x001c, 0x0078, 0x5a9e, 0xd6dc, 0x0040,
+ 0x5a91, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078,
+ 0x5a9e, 0xd6d4, 0x0040, 0x5a9c, 0x684b, 0x0007, 0x7318, 0x6b62,
+ 0x731c, 0x6b5e, 0x0078, 0x5a9e, 0x684b, 0x0000, 0x6f4e, 0x7850,
+ 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x5ab3, 0x7328,
+ 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7098, 0xad90, 0x0019,
+ 0x1078, 0x5dd2, 0x037f, 0xd6cc, 0x0040, 0x5aca, 0x7124, 0x695a,
+ 0xa192, 0x0021, 0x00c8, 0x5ac7, 0x2071, 0x7098, 0x831c, 0x2300,
+ 0xae18, 0xad90, 0x001d, 0x1078, 0x5dd2, 0x0078, 0x5aca, 0x2d78,
+ 0x1078, 0x5d6a, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x0f7e,
+ 0x6003, 0x0003, 0x2079, 0x708c, 0x7c04, 0x7b00, 0x7e0c, 0x7d08,
+ 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f, 0x2c10,
+ 0x1078, 0x18d5, 0x1078, 0x4dfc, 0x007c, 0x0d7e, 0x6003, 0x0002,
+ 0x1078, 0x46c2, 0x1078, 0x47c3, 0x6110, 0x2168, 0x694c, 0xd1e4,
+ 0x0040, 0x5b23, 0xd1cc, 0x0040, 0x5afe, 0x6948, 0x017e, 0x1078,
+ 0x12eb, 0x0d7f, 0x1078, 0x5dbf, 0x0078, 0x5b21, 0x6837, 0x0103,
+ 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5b1d, 0xa086,
+ 0x0028, 0x00c0, 0x5b0f, 0x684b, 0x001c, 0x0078, 0x5b1f, 0xd1dc,
+ 0x0040, 0x5b16, 0x684b, 0x0015, 0x0078, 0x5b1f, 0xd1d4, 0x0040,
+ 0x5b1d, 0x684b, 0x0007, 0x0078, 0x5b1f, 0x684b, 0x0000, 0x1078,
+ 0x35c4, 0x1078, 0x5425, 0x0d7f, 0x007c, 0x6003, 0x0002, 0x1078,
+ 0x46c2, 0x1078, 0x47c3, 0x007c, 0x1078, 0x46c2, 0x1078, 0x2125,
+ 0x0d7e, 0x6110, 0x2168, 0x1078, 0x5fcd, 0x0040, 0x5b3f, 0x6837,
+ 0x0103, 0x684b, 0x0029, 0x1078, 0x35c4, 0x1078, 0x60db, 0x0d7f,
+ 0x1078, 0x5425, 0x1078, 0x47c3, 0x007c, 0x684b, 0x0015, 0xd1fc,
+ 0x0040, 0x5b51, 0x684b, 0x0007, 0x8002, 0x8000, 0x810a, 0xa189,
+ 0x0000, 0x6962, 0x685e, 0x007c, 0xa182, 0x0040, 0x0079, 0x5b58,
+ 0x5b68, 0x5b68, 0x5b68, 0x5b68, 0x5b68, 0x5b6a, 0x5b68, 0x5c05,
+ 0x5c0d, 0x5b68, 0x5b68, 0x5b68, 0x5b68, 0x5b68, 0x5b68, 0x5b68,
+ 0x1078, 0x126a, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x708c,
+ 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5,
+ 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040,
+ 0x5bf7, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x5b8b, 0x7018,
+ 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x5bf4, 0x1078,
+ 0x12c2, 0x1040, 0x126a, 0x2d00, 0x784a, 0x7f4c, 0xa7bd, 0x0200,
+ 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840,
+ 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5bc6,
+ 0xa186, 0x0028, 0x00c0, 0x5bb0, 0x684b, 0x001c, 0x0078, 0x5bc8,
+ 0xd6dc, 0x0040, 0x5bbb, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c,
+ 0x6b5e, 0x0078, 0x5bc8, 0xd6d4, 0x0040, 0x5bc6, 0x684b, 0x0007,
+ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5bc8, 0x684b, 0x0000,
+ 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040,
+ 0x5bdd, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7098,
+ 0xad90, 0x0019, 0x1078, 0x5dd2, 0x037f, 0xd6cc, 0x0040, 0x5bf4,
+ 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x5bf1, 0x2071, 0x7098,
+ 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x5dd2, 0x0078,
+ 0x5bf4, 0x2d78, 0x1078, 0x5d6a, 0xd6dc, 0x00c0, 0x5bfa, 0xa006,
+ 0x0078, 0x5bfe, 0x2001, 0x0001, 0x7218, 0x731c, 0x1078, 0x1542,
+ 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c, 0x20e1, 0x0005, 0x3d18,
+ 0x3e20, 0x2c10, 0x1078, 0x1505, 0x007c, 0x0d7e, 0x6003, 0x0002,
+ 0x6110, 0x2168, 0x694c, 0xd1e4, 0x0040, 0x5c52, 0xd1cc, 0x0040,
+ 0x5c22, 0x6948, 0x017e, 0x1078, 0x12eb, 0x0d7f, 0x1078, 0x5dbf,
+ 0x0078, 0x5c50, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186,
+ 0x0002, 0x0040, 0x5c41, 0xa086, 0x0028, 0x00c0, 0x5c33, 0x684b,
+ 0x001c, 0x0078, 0x5c4e, 0xd1dc, 0x0040, 0x5c3a, 0x684b, 0x0015,
+ 0x0078, 0x5c4e, 0xd1d4, 0x0040, 0x5c41, 0x684b, 0x0007, 0x0078,
+ 0x5c4e, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0040, 0x5c4e, 0x6810,
+ 0x6914, 0xa115, 0x0040, 0x5c4e, 0x1078, 0x5b45, 0x1078, 0x35c4,
+ 0x1078, 0x5425, 0x0d7f, 0x007c, 0x1078, 0x461a, 0x0078, 0x5c5a,
+ 0x1078, 0x46c2, 0x1078, 0x5fcd, 0x0040, 0x5c71, 0x0d7e, 0x6110,
+ 0x2168, 0x6837, 0x0103, 0x2009, 0x6c0c, 0x210c, 0xd18c, 0x00c0,
+ 0x5c7a, 0xd184, 0x00c0, 0x5c76, 0x6108, 0x694a, 0x1078, 0x35c4,
+ 0x0d7f, 0x1078, 0x5425, 0x1078, 0x4713, 0x007c, 0x684b, 0x0004,
+ 0x0078, 0x5c6e, 0x684b, 0x0004, 0x0078, 0x5c6e, 0xa182, 0x0040,
+ 0x0079, 0x5c82, 0x5c92, 0x5c92, 0x5c92, 0x5c92, 0x5c92, 0x5c94,
+ 0x5c92, 0x5c97, 0x5c92, 0x5c92, 0x5c92, 0x5c92, 0x5c92, 0x5c92,
+ 0x5c92, 0x5c92, 0x1078, 0x126a, 0x1078, 0x5425, 0x007c, 0x007e,
+ 0x027e, 0xa016, 0x1078, 0x1505, 0x027f, 0x007f, 0x007c, 0xa182,
+ 0x0085, 0x0079, 0x5ca3, 0x5cac, 0x5caa, 0x5caa, 0x5caa, 0x5caa,
+ 0x5caa, 0x5caa, 0x1078, 0x126a, 0x6003, 0x0001, 0x6106, 0x1078,
+ 0x42c4, 0x127e, 0x2091, 0x8000, 0x1078, 0x4713, 0x127f, 0x007c,
+ 0xa186, 0x0013, 0x00c0, 0x5cc2, 0x6004, 0xa082, 0x0085, 0x2008,
+ 0x0079, 0x5cf6, 0xa186, 0x0027, 0x00c0, 0x5ce3, 0x1078, 0x461a,
+ 0x1078, 0x2125, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x5fcd, 0x0040,
+ 0x5cd9, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x35c4, 0x1078,
+ 0x60db, 0x0d7f, 0x1078, 0x5425, 0x1078, 0x4713, 0x007c, 0x1078,
+ 0x5459, 0x0078, 0x5cde, 0xa186, 0x0014, 0x00c0, 0x5cdf, 0x1078,
+ 0x461a, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x5fcd, 0x0040, 0x5cd9,
+ 0x6837, 0x0103, 0x684b, 0x0006, 0x0078, 0x5cd5, 0x5cff, 0x5cfd,
+ 0x5cfd, 0x5cfd, 0x5cfd, 0x5cfd, 0x5d08, 0x1078, 0x126a, 0x1078,
+ 0x461a, 0x6017, 0x0014, 0x6003, 0x000c, 0x1078, 0x4713, 0x007c,
+ 0x1078, 0x461a, 0x6017, 0x0014, 0x6003, 0x000e, 0x1078, 0x4713,
+ 0x007c, 0xa182, 0x008c, 0x00c8, 0x5d1b, 0xa182, 0x0085, 0x0048,
+ 0x5d1b, 0x0079, 0x5d1e, 0x1078, 0x5459, 0x007c, 0x5d25, 0x5d25,
+ 0x5d25, 0x5d25, 0x5d27, 0x5d45, 0x5d25, 0x1078, 0x126a, 0x0d7e,
+ 0x1078, 0x60db, 0x1078, 0x5fcd, 0x0040, 0x5d41, 0x6010, 0x2068,
+ 0x6837, 0x0103, 0x6850, 0xa084, 0x0040, 0x0040, 0x5d3b, 0x684b,
+ 0x0006, 0x0078, 0x5d3d, 0x684b, 0x0005, 0x6847, 0x0000, 0x1078,
+ 0x35c4, 0x1078, 0x5425, 0x0d7f, 0x007c, 0x0d7e, 0x6010, 0x2068,
+ 0x1078, 0x5fcd, 0x0040, 0x5d5f, 0x6837, 0x0103, 0x6850, 0xa084,
+ 0x0040, 0x0040, 0x5d57, 0x684b, 0x0006, 0x0078, 0x5d59, 0x684b,
+ 0x0005, 0x6847, 0x0000, 0x1078, 0x35c4, 0x1078, 0x60db, 0x0d7f,
+ 0x1078, 0x5425, 0x007c, 0x1078, 0x461a, 0x1078, 0x5425, 0x1078,
+ 0x4713, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001,
+ 0xa182, 0x0101, 0x00c8, 0x5d76, 0x0078, 0x5d78, 0x2009, 0x0100,
+ 0x2130, 0x2069, 0x7098, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020,
+ 0xaf90, 0x001d, 0x1078, 0x5dd2, 0xa6b2, 0x0020, 0x7804, 0xa06d,
+ 0x0040, 0x5d8c, 0x1078, 0x12eb, 0x1078, 0x12c2, 0x0040, 0x5db6,
+ 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a,
+ 0x003d, 0x00c8, 0x5da2, 0x2608, 0xad90, 0x000f, 0x1078, 0x5dd2,
+ 0x0078, 0x5db6, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90,
+ 0x000f, 0x1078, 0x5dd2, 0x0078, 0x5d8c, 0x0f7f, 0x852f, 0xa5ad,
+ 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x5dbb, 0x0f7f, 0x852f,
+ 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e,
+ 0x8dff, 0x0040, 0x5dd0, 0x6804, 0xa07d, 0x0040, 0x5dce, 0x6807,
+ 0x0000, 0x1078, 0x35c4, 0x2f68, 0x0078, 0x5dc3, 0x1078, 0x35c4,
+ 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040, 0x5dd8, 0x8108,
+ 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0,
+ 0x5dda, 0x157f, 0x007c, 0x127e, 0x2091, 0x8000, 0x601c, 0xa084,
+ 0x0007, 0x1079, 0x5ded, 0x127f, 0x007c, 0x5dfc, 0x5df5, 0x5df7,
+ 0x5e13, 0x5df5, 0x5df7, 0x5df7, 0x5df7, 0x1078, 0x126a, 0xa006,
+ 0x007c, 0xa085, 0x0001, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078,
+ 0x5fcd, 0x0040, 0x5e10, 0xa00e, 0x2001, 0x0005, 0x1078, 0x3654,
+ 0x1078, 0x35c4, 0x1078, 0x5425, 0xa085, 0x0001, 0x0d7f, 0x007c,
+ 0xa006, 0x0078, 0x5e0e, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x126a,
+ 0x1079, 0x5e1b, 0x007c, 0x5e2b, 0x5e4a, 0x5e2d, 0x5e5b, 0x5e46,
+ 0x5e2b, 0x5df7, 0x5dfc, 0x5dfc, 0x5df7, 0x5df7, 0x5df7, 0x5df7,
+ 0x5df7, 0x5df7, 0x5df7, 0x1078, 0x126a, 0x0d7e, 0x6010, 0x2068,
+ 0x1078, 0x5fcd, 0x0040, 0x5e38, 0x6850, 0xa085, 0x0005, 0x6852,
+ 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078,
+ 0x42c4, 0x1078, 0x4713, 0xa085, 0x0001, 0x007c, 0x1078, 0x15fc,
+ 0x0078, 0x5e2d, 0x0e7e, 0x2071, 0x6db0, 0x7024, 0xac06, 0x00c0,
+ 0x5e53, 0x1078, 0x4f41, 0x1078, 0x4eb5, 0x0e7f, 0x00c0, 0x5e2d,
+ 0x1078, 0x5df7, 0x007c, 0x037e, 0x0e7e, 0x2071, 0x6db0, 0x703c,
+ 0xac06, 0x00c0, 0x5e67, 0x2019, 0x0000, 0x1078, 0x4fd3, 0x1078,
+ 0x52af, 0x0e7f, 0x037f, 0x00c0, 0x5e2d, 0x1078, 0x5df7, 0x007c,
+ 0x0c7e, 0x601c, 0xa084, 0x0007, 0x1079, 0x5e78, 0x0c7f, 0x007c,
+ 0x5e80, 0x5ee0, 0x5f71, 0x5e84, 0x5e80, 0x5e80, 0x67ac, 0x5425,
0x007c, 0x6017, 0x0001, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8,
- 0x1288, 0x1079, 0x61ec, 0x007c, 0x61fc, 0x61fe, 0x621e, 0x6230,
- 0x6230, 0x61fc, 0x61e0, 0x61e0, 0x61e0, 0x6230, 0x6230, 0x61fc,
- 0x61fc, 0x61fc, 0x61fc, 0x623a, 0x1078, 0x1288, 0x0e7e, 0x6010,
- 0x2070, 0x7050, 0xc0b5, 0x7052, 0x2071, 0x71b6, 0x7024, 0xac06,
- 0x0040, 0x621a, 0x1078, 0x5139, 0x6007, 0x0085, 0x6003, 0x000b,
- 0x601f, 0x0002, 0x6017, 0x0014, 0x1078, 0x4562, 0x1078, 0x49b7,
- 0x0e7f, 0x007c, 0x6017, 0x0001, 0x0078, 0x6218, 0x0d7e, 0x6010,
- 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003,
- 0x000b, 0x601f, 0x0002, 0x1078, 0x4562, 0x1078, 0x49b7, 0x007c,
- 0x0d7e, 0x6017, 0x0001, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852,
- 0x0d7f, 0x007c, 0x1078, 0x56f5, 0x007c, 0x6000, 0xa08a, 0x0010,
- 0x10c8, 0x1288, 0x1079, 0x6245, 0x007c, 0x6255, 0x61e1, 0x6257,
- 0x6255, 0x6255, 0x6255, 0x6255, 0x6255, 0x61da, 0x61da, 0x6255,
- 0x6255, 0x6255, 0x6255, 0x6255, 0x6255, 0x1078, 0x1288, 0x0d7e,
- 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff, 0x0d7f, 0xa08a, 0x000c,
- 0x10c8, 0x1288, 0x1079, 0x6265, 0x007c, 0x6271, 0x628c, 0x6271,
- 0x628c, 0x6271, 0x628c, 0x6273, 0x627c, 0x6271, 0x628c, 0x6271,
- 0x6281, 0x1078, 0x1288, 0x6004, 0xa08e, 0x0004, 0x0040, 0x6283,
- 0xa08e, 0x0002, 0x0040, 0x6283, 0x6004, 0x1078, 0x6484, 0x0040,
- 0x62d6, 0x1078, 0x21a8, 0x1078, 0x6484, 0x00c0, 0x6289, 0x1078,
- 0x58f2, 0x1078, 0x56f5, 0x007c, 0x0c7e, 0x0d7e, 0x6104, 0xa186,
- 0x0016, 0x0040, 0x62c6, 0xa186, 0x0002, 0x00c0, 0x62b1, 0x6018,
- 0x2068, 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x62b1, 0x8001,
- 0x6842, 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x1078,
- 0x568f, 0x0040, 0x62b1, 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078,
- 0x62c6, 0x0d7f, 0x0c7f, 0x1078, 0x6484, 0x00c0, 0x62b9, 0x1078,
- 0x58f2, 0x1078, 0x21a8, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x21c6, 0x127f, 0x0e7f, 0x1078, 0x56f5, 0x007c, 0x2001, 0x0002,
- 0x1078, 0x34a2, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x45af,
- 0x1078, 0x49b7, 0x0d7f, 0x0c7f, 0x0078, 0x62c5, 0x1078, 0x58f2,
- 0x0078, 0x6289, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x62e2, 0x007c, 0x62f2, 0x62f2, 0x62f2, 0x62f2, 0x62f2, 0x62f2,
- 0x62f2, 0x62f2, 0x62f2, 0x61e0, 0x62f2, 0x61e1, 0x62f4, 0x61e1,
- 0x62fd, 0x62f2, 0x1078, 0x1288, 0x6007, 0x008b, 0x6003, 0x000d,
- 0x1078, 0x4562, 0x1078, 0x49b7, 0x007c, 0x1078, 0x644a, 0x1078,
- 0x6336, 0x0040, 0x631f, 0x1078, 0x21a8, 0x0d7e, 0x1078, 0x6336,
- 0x0040, 0x6312, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006,
- 0x1078, 0x3840, 0x0d7f, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003,
- 0x0001, 0x1078, 0x45af, 0x1078, 0x49b7, 0x0078, 0x6321, 0x1078,
- 0x56f5, 0x007c, 0xa284, 0x0007, 0x00c0, 0x6333, 0xa282, 0x7600,
- 0x0048, 0x6333, 0x2001, 0x7015, 0x2004, 0xa202, 0x00c8, 0x6333,
- 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x6332, 0x027e, 0x0e7e,
- 0x2071, 0x7000, 0x6210, 0x7058, 0xa202, 0x0048, 0x6348, 0x705c,
- 0xa202, 0x00c8, 0x6348, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c,
- 0xa006, 0x0078, 0x6345, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2061, 0x7600, 0x2071, 0x7000, 0x7344, 0x7060,
- 0xa302, 0x00c8, 0x6371, 0x601c, 0xa206, 0x00c0, 0x6369, 0x1078,
- 0x6484, 0x00c0, 0x6365, 0x1078, 0x58f2, 0x0c7e, 0x1078, 0x56f5,
- 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x6371, 0x0078,
- 0x6356, 0x127f, 0x007f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0c7e,
- 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x568f, 0x057f,
- 0x0040, 0x6390, 0x6612, 0x651a, 0x601f, 0x0003, 0x2009, 0x004b,
- 0x1078, 0x571c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
- 0xa006, 0x0078, 0x638c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000,
- 0x62a0, 0x0c7e, 0x1078, 0x568f, 0x057f, 0x0040, 0x63ba, 0x6013,
- 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078, 0x36e4,
- 0x0c7f, 0x1078, 0x469f, 0x1078, 0x45e2, 0x2c08, 0x1078, 0x6d09,
- 0x2009, 0x004c, 0x1078, 0x571c, 0xa085, 0x0001, 0x127f, 0x057f,
- 0x0c7f, 0x007c, 0xa006, 0x0078, 0x63b6, 0x0c7e, 0x057e, 0x127e,
- 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x568f, 0x057f, 0x0040,
- 0x63e5, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005, 0x0c7e,
- 0x2560, 0x1078, 0x36e4, 0x0c7f, 0x1078, 0x469f, 0x1078, 0x45e2,
- 0x2c08, 0x1078, 0x6d09, 0x2009, 0x004d, 0x1078, 0x571c, 0xa085,
- 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x63e1,
- 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078,
- 0x568f, 0x057f, 0x0040, 0x6410, 0x6612, 0x651a, 0x601f, 0x0003,
- 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x36e4, 0x0c7f, 0x1078,
- 0x469f, 0x1078, 0x45e2, 0x2c08, 0x1078, 0x6d09, 0x2009, 0x004e,
- 0x1078, 0x571c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
- 0xa006, 0x0078, 0x640c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e,
- 0x1078, 0x568f, 0x017f, 0x0040, 0x642c, 0x660a, 0x611a, 0x601f,
- 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x571c, 0xa085,
- 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6429, 0x0c7e,
- 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x568f, 0x017f, 0x0040,
- 0x6447, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000,
- 0x1078, 0x571c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006,
- 0x0078, 0x6444, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff,
- 0x0040, 0x6454, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x6013,
- 0x0000, 0x601f, 0x0007, 0x6017, 0x0014, 0x007c, 0x067e, 0x0c7e,
- 0x0d7e, 0x2031, 0x7052, 0x2634, 0xd6e4, 0x0040, 0x646c, 0x6618,
- 0x2660, 0x6e48, 0x1078, 0x35f0, 0x0d7f, 0x0c7f, 0x067f, 0x007c,
- 0x007e, 0x017e, 0x6004, 0xa08e, 0x0002, 0x0040, 0x6481, 0xa08e,
- 0x0003, 0x0040, 0x6481, 0xa08e, 0x0004, 0x0040, 0x6481, 0xa085,
- 0x0001, 0x017f, 0x007f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e,
- 0x0000, 0x0040, 0x6499, 0xa08e, 0x001f, 0x0040, 0x6499, 0xa08e,
- 0x0028, 0x0040, 0x6499, 0xa08e, 0x0029, 0x0040, 0x6499, 0xa085,
- 0x0001, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x0c7e, 0x1078, 0x568f, 0x017f, 0x0040, 0x64b6, 0x611a, 0x601f,
- 0x0001, 0x2d00, 0x6012, 0x1078, 0x21a8, 0x2009, 0x0028, 0x1078,
- 0x571c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078,
- 0x64b3, 0xa186, 0x0015, 0x00c0, 0x64ce, 0x2011, 0x701c, 0x2204,
- 0xa086, 0x0074, 0x00c0, 0x64ce, 0x1078, 0x5ad5, 0x6003, 0x0001,
- 0x6007, 0x0029, 0x1078, 0x45af, 0x0078, 0x64d2, 0x1078, 0x58f2,
- 0x1078, 0x56f5, 0x007c, 0xa186, 0x0015, 0x00c0, 0x64f0, 0x2011,
- 0x701c, 0x2204, 0xa086, 0x0014, 0x00c0, 0x64f0, 0x0d7e, 0x6018,
- 0x2068, 0x1078, 0x3576, 0x0d7f, 0x1078, 0x5adf, 0x00c0, 0x64f0,
- 0x2001, 0x0006, 0x1078, 0x34a2, 0x1078, 0x579f, 0x0078, 0x64f4,
- 0x1078, 0x58f2, 0x1078, 0x56f5, 0x007c, 0x6848, 0xa086, 0x0005,
- 0x00c0, 0x64fc, 0x1078, 0x64fd, 0x007c, 0x6850, 0xc0ad, 0x6852,
- 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x650b, 0x067f, 0x007c, 0x651b, 0x66eb, 0x67cc, 0x651b, 0x651b,
- 0x651b, 0x651b, 0x651b, 0x6555, 0x6832, 0x651b, 0x651b, 0x651b,
- 0x651b, 0x651b, 0x651b, 0x1078, 0x1288, 0x067e, 0x6000, 0xa0b2,
- 0x0010, 0x10c8, 0x1288, 0x1079, 0x6527, 0x067f, 0x007c, 0x6537,
- 0x6b1e, 0x6537, 0x6537, 0x6537, 0x6537, 0x6537, 0x6537, 0x6af9,
- 0x6b68, 0x6537, 0x6537, 0x6537, 0x6537, 0x6537, 0x6537, 0x1078,
- 0x1288, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1288, 0x1079,
- 0x6543, 0x067f, 0x007c, 0x6553, 0x696a, 0x69dc, 0x69fe, 0x6a4a,
- 0x6553, 0x6553, 0x6aa4, 0x683e, 0x6ae1, 0x6ae5, 0x6553, 0x6553,
- 0x6553, 0x6553, 0x6553, 0x1078, 0x1288, 0xa1b2, 0x0030, 0x10c8,
- 0x1288, 0x2100, 0x0079, 0x655c, 0x658c, 0x6669, 0x658c, 0x658c,
- 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c,
- 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c,
- 0x658c, 0x658c, 0x658c, 0x658e, 0x65bd, 0x65c8, 0x65f0, 0x65f6,
- 0x662a, 0x6662, 0x658c, 0x658c, 0x6671, 0x658c, 0x658c, 0x658c,
- 0x6678, 0x658c, 0x658c, 0x658c, 0x658c, 0x658c, 0x6695, 0x658c,
- 0x658c, 0x66a0, 0x658c, 0x658c, 0x1078, 0x1288, 0x1078, 0x37ec,
- 0x6618, 0x0c7e, 0x2660, 0x1078, 0x350c, 0x0c7f, 0xa6b0, 0x0001,
- 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x65af, 0x1078,
- 0x6c48, 0x00c0, 0x65ea, 0x1078, 0x6be6, 0x00c0, 0x65ab, 0x6007,
- 0x0008, 0x0078, 0x6664, 0x6007, 0x0009, 0x0078, 0x6664, 0x1078,
- 0x6dda, 0x0040, 0x65b9, 0x1078, 0x6c48, 0x0040, 0x65a3, 0x0078,
- 0x65ea, 0x6013, 0x1900, 0x0078, 0x65ab, 0x6106, 0x1078, 0x6ba9,
- 0x6007, 0x0006, 0x0078, 0x6664, 0x6007, 0x0007, 0x0078, 0x6664,
- 0x0d7e, 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686,
- 0x0006, 0x0040, 0x65da, 0xa686, 0x0004, 0x0040, 0x65da, 0x0d7f,
- 0x0078, 0x65ea, 0x1078, 0x6ca6, 0x00c0, 0x65e5, 0x1078, 0x3576,
- 0x6007, 0x000a, 0x0d7f, 0x0078, 0x6664, 0x6007, 0x000b, 0x0d7f,
- 0x0078, 0x6664, 0x1078, 0x21a8, 0x6007, 0x0001, 0x0078, 0x6664,
- 0x1078, 0x21a8, 0x6007, 0x000c, 0x0078, 0x6664, 0x1078, 0x37ec,
- 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006,
- 0x0048, 0x6617, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0,
- 0x65ea, 0x1078, 0x6cb5, 0x00c0, 0x6611, 0x6007, 0x000e, 0x0078,
- 0x6664, 0x1078, 0x21a8, 0x6007, 0x000f, 0x0078, 0x6664, 0x1078,
- 0x6dda, 0x0040, 0x6624, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x0040, 0x6609, 0x0078, 0x65ea, 0x6013, 0x1900, 0x6007, 0x0009,
- 0x0078, 0x6664, 0x1078, 0x37ec, 0x6618, 0xa6b0, 0x0001, 0x2634,
- 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x664f, 0xa6b4, 0xff00,
- 0x8637, 0xa686, 0x0006, 0x00c0, 0x65ea, 0x1078, 0x6ce1, 0x00c0,
- 0x6649, 0x1078, 0x6be6, 0x00c0, 0x6649, 0x6007, 0x0010, 0x0078,
- 0x6664, 0x1078, 0x21a8, 0x6007, 0x0011, 0x0078, 0x6664, 0x1078,
- 0x6dda, 0x0040, 0x665c, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x0040, 0x663d, 0x0078, 0x65ea, 0x6013, 0x1900, 0x6007, 0x0009,
- 0x0078, 0x6664, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x45af,
- 0x007c, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x45af, 0x0078,
- 0x6668, 0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x45af, 0x007c,
- 0x017e, 0x027e, 0x2011, 0x7488, 0x2214, 0x2c08, 0x1078, 0x6ea2,
- 0x00c0, 0x6689, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x0078,
- 0x668e, 0x1078, 0x56f5, 0x2160, 0x6007, 0x0025, 0x6003, 0x0001,
- 0x1078, 0x45af, 0x027f, 0x017f, 0x007c, 0x6106, 0x1078, 0x66a7,
- 0x6007, 0x002b, 0x0078, 0x6664, 0x6007, 0x002c, 0x0078, 0x6664,
- 0x6106, 0x1078, 0x66ac, 0x6007, 0x002e, 0x0078, 0x6664, 0x0d7e,
- 0x1078, 0x66d2, 0x0d7f, 0x007c, 0x0d7e, 0x1078, 0x66e1, 0x00c0,
- 0x66cb, 0x680c, 0xa08c, 0xff00, 0x6824, 0xa084, 0x00ff, 0xa115,
- 0x6212, 0xd1e4, 0x0040, 0x66c0, 0x2009, 0x0001, 0x0078, 0x66c7,
- 0xd1ec, 0x0040, 0x66cb, 0x2009, 0x0000, 0xa294, 0x00ff, 0x1078,
- 0x21d7, 0x0078, 0x66cf, 0xa085, 0x0001, 0x0078, 0x66d0, 0xa006,
- 0x0d7f, 0x007c, 0x2069, 0x748d, 0x6800, 0xa082, 0x0010, 0x00c8,
- 0x66df, 0x6013, 0x0000, 0xa085, 0x0001, 0x0078, 0x66e0, 0xa006,
- 0x007c, 0x6013, 0x0000, 0x2069, 0x748c, 0x6808, 0xa084, 0xff00,
- 0xa086, 0x0800, 0x007c, 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x1288,
- 0xa1b6, 0x0013, 0x00c0, 0x66f7, 0x2008, 0x0079, 0x670a, 0xa1b6,
- 0x0027, 0x0040, 0x66ff, 0xa1b6, 0x0014, 0x10c0, 0x1288, 0x2001,
- 0x0007, 0x1078, 0x34b0, 0x1078, 0x48be, 0x1078, 0x6457, 0x1078,
- 0x49b7, 0x007c, 0x673a, 0x673c, 0x673a, 0x673a, 0x673a, 0x673c,
- 0x6744, 0x67a7, 0x676a, 0x67a7, 0x677e, 0x67a7, 0x6744, 0x67a7,
- 0x679f, 0x67a7, 0x679f, 0x67a7, 0x67a7, 0x673a, 0x673a, 0x673a,
- 0x673a, 0x673a, 0x673a, 0x673a, 0x673a, 0x673a, 0x673a, 0x673a,
- 0x673a, 0x673a, 0x67a7, 0x673a, 0x673a, 0x673a, 0x673a, 0x67a7,
- 0x67a7, 0x673a, 0x673a, 0x673a, 0x673a, 0x67a7, 0x67a7, 0x673a,
- 0x67a7, 0x67a7, 0x1078, 0x1288, 0x1078, 0x48be, 0x6003, 0x0002,
- 0x1078, 0x49b7, 0x0078, 0x67ad, 0x0f7e, 0x2079, 0x7051, 0x7804,
- 0x0f7f, 0xd0ac, 0x00c0, 0x67a7, 0x2001, 0x0000, 0x1078, 0x348e,
- 0x2001, 0x0002, 0x1078, 0x34a2, 0x1078, 0x48be, 0x601f, 0x0001,
- 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x45af, 0x1078, 0x49b7,
- 0x0c7e, 0x6118, 0x2160, 0x2009, 0x0001, 0x1078, 0x42b7, 0x0c7f,
- 0x0078, 0x67ad, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4,
- 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x67a7, 0xa686, 0x0004,
- 0x0040, 0x67a7, 0x2001, 0x0004, 0x0078, 0x67a5, 0x2001, 0x7000,
- 0x2004, 0xa086, 0x0003, 0x00c0, 0x6787, 0x1078, 0x2a92, 0x2001,
- 0x0006, 0x1078, 0x67ae, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f,
- 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x67a7, 0x2001,
- 0x0006, 0x0078, 0x67a5, 0x2001, 0x0004, 0x0078, 0x67a5, 0x2001,
- 0x0006, 0x1078, 0x67ae, 0x0078, 0x67a7, 0x1078, 0x34b0, 0x1078,
- 0x48be, 0x1078, 0x56f5, 0x1078, 0x49b7, 0x007c, 0x017e, 0x0d7e,
- 0x6118, 0x2168, 0x6900, 0xd184, 0x0040, 0x67c9, 0x6104, 0xa18e,
- 0x000a, 0x00c0, 0x67c1, 0x699c, 0xd1a4, 0x00c0, 0x67c1, 0x2001,
- 0x0007, 0x1078, 0x34a2, 0x2001, 0x0000, 0x1078, 0x348e, 0x1078,
- 0x21c6, 0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804,
- 0xa084, 0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1288,
- 0xa1b6, 0x0015, 0x00c0, 0x67e0, 0x1079, 0x67e7, 0x0078, 0x67e6,
- 0xa1b6, 0x0016, 0x10c0, 0x1288, 0x1079, 0x6817, 0x007c, 0x594f,
- 0x594f, 0x594f, 0x594f, 0x594f, 0x594f, 0x594f, 0x67f3, 0x594f,
- 0x594f, 0x594f, 0x594f, 0x0f7e, 0x2079, 0x7051, 0x7804, 0x0f7f,
- 0xd0ac, 0x00c0, 0x680f, 0x2001, 0x0000, 0x1078, 0x348e, 0x2001,
- 0x0002, 0x1078, 0x34a2, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007,
- 0x0002, 0x1078, 0x45af, 0x1078, 0x49b7, 0x0078, 0x6816, 0x2011,
- 0x7483, 0x220c, 0x1078, 0x32ed, 0x1078, 0x56f5, 0x007c, 0x594f,
- 0x594f, 0x594f, 0x594f, 0x594f, 0x594f, 0x594f, 0x6823, 0x594f,
- 0x594f, 0x594f, 0x594f, 0x1078, 0x5ad2, 0x00c0, 0x682f, 0x6003,
- 0x0001, 0x6007, 0x0001, 0x1078, 0x45af, 0x0078, 0x6831, 0x1078,
- 0x56f5, 0x007c, 0x6004, 0xa08a, 0x0030, 0x10c8, 0x1288, 0x1078,
- 0x48be, 0x1078, 0x6457, 0x1078, 0x49b7, 0x007c, 0xa182, 0x0040,
- 0x0079, 0x6842, 0x6852, 0x6852, 0x6852, 0x6852, 0x6854, 0x6852,
- 0x6852, 0x6852, 0x6852, 0x6852, 0x6852, 0x6852, 0x6852, 0x6852,
- 0x6852, 0x6852, 0x1078, 0x1288, 0x0d7e, 0x0e7e, 0x0f7e, 0x157e,
- 0x047e, 0x027e, 0x6106, 0x2071, 0x7480, 0x7444, 0xa4a4, 0xe600,
- 0x0040, 0x68b8, 0x2009, 0x0000, 0x0c7e, 0x1078, 0x4348, 0x2c68,
- 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040, 0x6923, 0x1078, 0x4407,
- 0x0040, 0x694e, 0xa295, 0x0200, 0x6a02, 0x0078, 0x687d, 0x2009,
- 0x0001, 0x2011, 0x0200, 0x1078, 0x43f1, 0x1078, 0x12e2, 0x1040,
- 0x1288, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000,
- 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6018, 0x2078, 0x78a0,
- 0x8007, 0x7130, 0x694a, 0xa084, 0xff00, 0x6846, 0x684f, 0x0000,
- 0x6857, 0x0036, 0x1078, 0x3840, 0xa486, 0x2000, 0x00c0, 0x68a6,
- 0x2019, 0x0017, 0x1078, 0x6e67, 0x0078, 0x6910, 0xa486, 0x0400,
- 0x00c0, 0x68b0, 0x2019, 0x0002, 0x1078, 0x6e67, 0x0078, 0x6910,
- 0xa486, 0x0200, 0x00c0, 0x68b6, 0x1078, 0x6e58, 0x0078, 0x6910,
- 0x2009, 0x0000, 0x0c7e, 0x1078, 0x4348, 0x2c68, 0x0c7f, 0x6a00,
- 0xa284, 0x0001, 0x0040, 0x6966, 0xa284, 0x0300, 0x00c0, 0x695e,
- 0x6804, 0xa005, 0x0040, 0x694e, 0x8001, 0x6806, 0x6003, 0x0007,
- 0x1078, 0x12c7, 0x0040, 0x6917, 0x6013, 0x0000, 0x6803, 0x0000,
+ 0x126a, 0x1079, 0x5e8c, 0x007c, 0x5e9c, 0x5e9e, 0x5ebf, 0x5ed2,
+ 0x5ed2, 0x5e9c, 0x5e80, 0x5e80, 0x5e80, 0x5ed2, 0x5ed2, 0x5e9c,
+ 0x5e9c, 0x5e9c, 0x5e9c, 0x5edd, 0x1078, 0x126a, 0x0e7e, 0x6010,
+ 0x2070, 0x7050, 0xa085, 0x0040, 0x7052, 0x2071, 0x6db0, 0x7024,
+ 0xac06, 0x0040, 0x5ebb, 0x1078, 0x4eb5, 0x6007, 0x0085, 0x6003,
+ 0x000b, 0x601f, 0x0002, 0x6017, 0x0014, 0x1078, 0x42c4, 0x1078,
+ 0x4713, 0x0e7f, 0x007c, 0x6017, 0x0001, 0x0078, 0x5eb9, 0x0d7e,
+ 0x6010, 0x2068, 0x6850, 0xa085, 0x0040, 0x6852, 0x0d7f, 0x6007,
+ 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078, 0x42c4, 0x1078,
+ 0x4713, 0x007c, 0x0d7e, 0x6017, 0x0001, 0x6010, 0x2068, 0x6850,
+ 0xa085, 0x0040, 0x6852, 0x0d7f, 0x007c, 0x1078, 0x5425, 0x007c,
+ 0x6000, 0xa08a, 0x0010, 0x10c8, 0x126a, 0x1079, 0x5ee8, 0x007c,
+ 0x5ef8, 0x5e81, 0x5efa, 0x5ef8, 0x5ef8, 0x5ef8, 0x5ef8, 0x5ef8,
+ 0x5e80, 0x5e80, 0x5ef8, 0x5ef8, 0x5ef8, 0x5ef8, 0x5ef8, 0x5ef8,
+ 0x1078, 0x126a, 0x0d7e, 0x6018, 0x2068, 0x6804, 0xa084, 0x00ff,
+ 0x0d7f, 0xa08a, 0x000c, 0x10c8, 0x126a, 0x1079, 0x5f08, 0x007c,
+ 0x5f14, 0x5f29, 0x5f14, 0x5f29, 0x5f14, 0x5f29, 0x5f16, 0x5f1f,
+ 0x5f14, 0x5f29, 0x5f14, 0x5f24, 0x1078, 0x126a, 0x6004, 0xa08e,
+ 0x0004, 0x0040, 0x5f26, 0xa08e, 0x0002, 0x0040, 0x5f26, 0x6004,
+ 0x1078, 0x6115, 0x0040, 0x5f6d, 0x1078, 0x2125, 0x1078, 0x5425,
+ 0x007c, 0x0c7e, 0x0d7e, 0x6104, 0xa186, 0x0016, 0x0040, 0x5f5d,
+ 0xa186, 0x0002, 0x00c0, 0x5f4e, 0x6018, 0x2068, 0x6840, 0xa084,
+ 0x00ff, 0xa005, 0x0040, 0x5f4e, 0x8001, 0x6842, 0x6013, 0x0000,
+ 0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x53bf, 0x0040, 0x5f4e,
+ 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x5f5d, 0x0d7f, 0x0c7f,
+ 0x1078, 0x2125, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x2143,
+ 0x127f, 0x0e7f, 0x1078, 0x5425, 0x007c, 0x2001, 0x0002, 0x1078,
+ 0x3316, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4311, 0x1078,
+ 0x4713, 0x0d7f, 0x0c7f, 0x0078, 0x5f5c, 0x1078, 0x5614, 0x0078,
+ 0x5f26, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x126a, 0x1079, 0x5f79,
+ 0x007c, 0x5f89, 0x5f89, 0x5f89, 0x5f89, 0x5f89, 0x5f89, 0x5f89,
+ 0x5f89, 0x5f89, 0x5e80, 0x5f89, 0x5e81, 0x5f8b, 0x5e81, 0x5f94,
+ 0x5f89, 0x1078, 0x126a, 0x6007, 0x008b, 0x6003, 0x000d, 0x1078,
+ 0x42c4, 0x1078, 0x4713, 0x007c, 0x1078, 0x60db, 0x1078, 0x5fcd,
+ 0x0040, 0x5fb6, 0x1078, 0x2125, 0x0d7e, 0x1078, 0x5fcd, 0x0040,
+ 0x5fa9, 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078,
+ 0x35c4, 0x0d7f, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001,
+ 0x1078, 0x4311, 0x1078, 0x4713, 0x0078, 0x5fb8, 0x1078, 0x5425,
+ 0x007c, 0xa284, 0x0007, 0x00c0, 0x5fca, 0xa282, 0x7200, 0x0048,
+ 0x5fca, 0x2001, 0x6c15, 0x2004, 0xa202, 0x00c8, 0x5fca, 0xa085,
+ 0x0001, 0x007c, 0xa006, 0x0078, 0x5fc9, 0x027e, 0x0e7e, 0x2071,
+ 0x6c00, 0x6210, 0x7058, 0xa202, 0x0048, 0x5fdf, 0x705c, 0xa202,
+ 0x00c8, 0x5fdf, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c, 0xa006,
+ 0x0078, 0x5fdc, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e, 0x2091,
+ 0x8000, 0x2061, 0x7200, 0x2071, 0x6c00, 0x7344, 0x7060, 0xa302,
+ 0x00c8, 0x6002, 0x601c, 0xa206, 0x00c0, 0x5ffa, 0x0c7e, 0x1078,
+ 0x5425, 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x6002,
+ 0x0078, 0x5fed, 0x127f, 0x007f, 0x037f, 0x0c7f, 0x0e7f, 0x007c,
+ 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x53bf,
+ 0x057f, 0x0040, 0x6021, 0x6612, 0x651a, 0x601f, 0x0003, 0x2009,
+ 0x004b, 0x1078, 0x544c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
+ 0x007c, 0xa006, 0x0078, 0x601d, 0x0c7e, 0x057e, 0x127e, 0x2091,
+ 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x53bf, 0x057f, 0x0040, 0x604b,
+ 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078,
+ 0x34f2, 0x0c7f, 0x1078, 0x43ff, 0x1078, 0x4344, 0x2c08, 0x1078,
+ 0x6946, 0x2009, 0x004c, 0x1078, 0x544c, 0xa085, 0x0001, 0x127f,
+ 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6047, 0x0c7e, 0x057e,
+ 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x53bf, 0x057f,
+ 0x0040, 0x6076, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005,
+ 0x0c7e, 0x2560, 0x1078, 0x34f2, 0x0c7f, 0x1078, 0x43ff, 0x1078,
+ 0x4344, 0x2c08, 0x1078, 0x6946, 0x2009, 0x004d, 0x1078, 0x544c,
+ 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078,
+ 0x6072, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e,
+ 0x1078, 0x53bf, 0x057f, 0x0040, 0x60a1, 0x6612, 0x651a, 0x601f,
+ 0x0003, 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x34f2, 0x0c7f,
+ 0x1078, 0x43ff, 0x1078, 0x4344, 0x2c08, 0x1078, 0x6946, 0x2009,
+ 0x004e, 0x1078, 0x544c, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
+ 0x007c, 0xa006, 0x0078, 0x609d, 0x0c7e, 0x127e, 0x2091, 0x8000,
+ 0x0c7e, 0x1078, 0x53bf, 0x017f, 0x0040, 0x60bd, 0x660a, 0x611a,
+ 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x544c,
+ 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x60ba,
+ 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x53bf, 0x017f,
+ 0x0040, 0x60d8, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009,
+ 0x0000, 0x1078, 0x544c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c,
+ 0xa006, 0x0078, 0x60d5, 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c,
+ 0x82ff, 0x0040, 0x60e5, 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c,
+ 0x6013, 0x0000, 0x601f, 0x0007, 0x6017, 0x0014, 0x007c, 0x067e,
+ 0x0c7e, 0x0d7e, 0x2031, 0x6c52, 0x2634, 0xd6e4, 0x0040, 0x60fd,
+ 0x6618, 0x2660, 0x6e44, 0x1078, 0x342a, 0x0d7f, 0x0c7f, 0x067f,
+ 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0002, 0x0040, 0x6112,
+ 0xa08e, 0x0003, 0x0040, 0x6112, 0xa08e, 0x0004, 0x0040, 0x6112,
+ 0xa085, 0x0001, 0x017f, 0x007f, 0x007c, 0x007e, 0x017e, 0x6004,
+ 0xa08e, 0x0000, 0x0040, 0x612a, 0xa08e, 0x001f, 0x0040, 0x612a,
+ 0xa08e, 0x0028, 0x0040, 0x612a, 0xa08e, 0x0029, 0x0040, 0x612a,
+ 0xa085, 0x0001, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091,
+ 0x8000, 0x0c7e, 0x1078, 0x53bf, 0x017f, 0x0040, 0x6147, 0x611a,
+ 0x601f, 0x0001, 0x2d00, 0x6012, 0x1078, 0x2125, 0x2009, 0x0028,
+ 0x1078, 0x544c, 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006,
+ 0x0078, 0x6144, 0xa186, 0x0015, 0x00c0, 0x615f, 0x2011, 0x6c1c,
+ 0x2204, 0xa086, 0x0074, 0x00c0, 0x615f, 0x1078, 0x57f7, 0x6003,
+ 0x0001, 0x6007, 0x0029, 0x1078, 0x4311, 0x0078, 0x6163, 0x1078,
+ 0x5614, 0x1078, 0x5425, 0x007c, 0xa186, 0x0015, 0x00c0, 0x6181,
+ 0x2011, 0x6c1c, 0x2204, 0xa086, 0x0014, 0x00c0, 0x6181, 0x0d7e,
+ 0x6018, 0x2068, 0x1078, 0x33ed, 0x0d7f, 0x1078, 0x5801, 0x00c0,
+ 0x6181, 0x2001, 0x0006, 0x1078, 0x3316, 0x1078, 0x54cf, 0x0078,
+ 0x6185, 0x1078, 0x5614, 0x1078, 0x5425, 0x007c, 0x067e, 0x6000,
+ 0xa0b2, 0x0010, 0x10c8, 0x126a, 0x1079, 0x6190, 0x067f, 0x007c,
+ 0x61a0, 0x6312, 0x63ed, 0x61a0, 0x61a0, 0x61a0, 0x61a0, 0x61a0,
+ 0x61da, 0x6453, 0x61a0, 0x61a0, 0x61a0, 0x61a0, 0x61a0, 0x61a0,
+ 0x1078, 0x126a, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x126a,
+ 0x1079, 0x61ac, 0x067f, 0x007c, 0x61bc, 0x675b, 0x61bc, 0x61bc,
+ 0x61bc, 0x61bc, 0x61bc, 0x61bc, 0x6736, 0x67a5, 0x61bc, 0x61bc,
+ 0x61bc, 0x61bc, 0x61bc, 0x61bc, 0x1078, 0x126a, 0x067e, 0x6000,
+ 0xa0b2, 0x0010, 0x10c8, 0x126a, 0x1079, 0x61c8, 0x067f, 0x007c,
+ 0x61d8, 0x65a5, 0x6617, 0x6639, 0x6687, 0x61d8, 0x61d8, 0x66e1,
+ 0x645f, 0x671e, 0x6722, 0x61d8, 0x61d8, 0x61d8, 0x61d8, 0x61d8,
+ 0x1078, 0x126a, 0xa1b2, 0x002a, 0x10c8, 0x126a, 0x2100, 0x0079,
+ 0x61e1, 0x620b, 0x62e8, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b,
+ 0x620b, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b,
+ 0x620b, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b, 0x620b,
+ 0x620d, 0x623c, 0x6247, 0x626f, 0x6275, 0x62a9, 0x62e1, 0x620b,
+ 0x620b, 0x62f0, 0x620b, 0x620b, 0x620b, 0x62f7, 0x620b, 0x620b,
+ 0x620b, 0x620b, 0x620b, 0x1078, 0x126a, 0x1078, 0x3570, 0x6618,
+ 0x0c7e, 0x2660, 0x1078, 0x337c, 0x0c7f, 0xa6b0, 0x0001, 0x2634,
+ 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x622e, 0x1078, 0x6885,
+ 0x00c0, 0x6269, 0x1078, 0x6823, 0x00c0, 0x622a, 0x6007, 0x0008,
+ 0x0078, 0x62e3, 0x6007, 0x0009, 0x0078, 0x62e3, 0x1078, 0x6a15,
+ 0x0040, 0x6238, 0x1078, 0x6885, 0x0040, 0x6222, 0x0078, 0x6269,
+ 0x6013, 0x1900, 0x0078, 0x622a, 0x6106, 0x1078, 0x67e6, 0x6007,
+ 0x0006, 0x0078, 0x62e3, 0x6007, 0x0007, 0x0078, 0x62e3, 0x0d7e,
+ 0x6618, 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
+ 0x0040, 0x6259, 0xa686, 0x0004, 0x0040, 0x6259, 0x0d7f, 0x0078,
+ 0x6269, 0x1078, 0x68e3, 0x00c0, 0x6264, 0x1078, 0x33ed, 0x6007,
+ 0x000a, 0x0d7f, 0x0078, 0x62e3, 0x6007, 0x000b, 0x0d7f, 0x0078,
+ 0x62e3, 0x1078, 0x2125, 0x6007, 0x0001, 0x0078, 0x62e3, 0x1078,
+ 0x2125, 0x6007, 0x000c, 0x0078, 0x62e3, 0x1078, 0x3570, 0x6618,
+ 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048,
+ 0x6296, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0, 0x6269,
+ 0x1078, 0x68f2, 0x00c0, 0x6290, 0x6007, 0x000e, 0x0078, 0x62e3,
+ 0x1078, 0x2125, 0x6007, 0x000f, 0x0078, 0x62e3, 0x1078, 0x6a15,
+ 0x0040, 0x62a3, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040,
+ 0x6288, 0x0078, 0x6269, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078,
+ 0x62e3, 0x1078, 0x3570, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684,
+ 0x00ff, 0xa082, 0x0006, 0x0048, 0x62ce, 0xa6b4, 0xff00, 0x8637,
+ 0xa686, 0x0006, 0x00c0, 0x6269, 0x1078, 0x691e, 0x00c0, 0x62c8,
+ 0x1078, 0x6823, 0x00c0, 0x62c8, 0x6007, 0x0010, 0x0078, 0x62e3,
+ 0x1078, 0x2125, 0x6007, 0x0011, 0x0078, 0x62e3, 0x1078, 0x6a15,
+ 0x0040, 0x62db, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040,
+ 0x62bc, 0x0078, 0x6269, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078,
+ 0x62e3, 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x4311, 0x007c,
+ 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x4311, 0x0078, 0x62e7,
+ 0x6007, 0x0020, 0x6003, 0x0001, 0x1078, 0x4311, 0x007c, 0x017e,
+ 0x027e, 0x2011, 0x7088, 0x2214, 0x2c08, 0x1078, 0x6add, 0x00c0,
+ 0x6308, 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x0078, 0x630b,
+ 0x2160, 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x4311, 0x027f,
+ 0x017f, 0x007c, 0x6004, 0xa0b2, 0x002a, 0x10c8, 0x126a, 0xa1b6,
+ 0x0013, 0x00c0, 0x631e, 0x2008, 0x0079, 0x6331, 0xa1b6, 0x0027,
+ 0x0040, 0x6326, 0xa1b6, 0x0014, 0x10c0, 0x126a, 0x2001, 0x0007,
+ 0x1078, 0x3324, 0x1078, 0x461a, 0x1078, 0x60e8, 0x1078, 0x4713,
+ 0x007c, 0x635b, 0x635d, 0x635b, 0x635b, 0x635b, 0x635d, 0x6365,
+ 0x63c8, 0x638b, 0x63c8, 0x639f, 0x63c8, 0x6365, 0x63c8, 0x63c0,
+ 0x63c8, 0x63c0, 0x63c8, 0x63c8, 0x635b, 0x635b, 0x635b, 0x635b,
+ 0x635b, 0x635b, 0x635b, 0x635b, 0x635b, 0x635b, 0x635b, 0x635b,
+ 0x635b, 0x63c8, 0x635b, 0x635b, 0x635b, 0x635b, 0x63c8, 0x63c8,
+ 0x635b, 0x635b, 0x635b, 0x1078, 0x126a, 0x1078, 0x461a, 0x6003,
+ 0x0002, 0x1078, 0x4713, 0x0078, 0x63ce, 0x0f7e, 0x2079, 0x6c51,
+ 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x63c8, 0x2001, 0x0000, 0x1078,
+ 0x3302, 0x2001, 0x0002, 0x1078, 0x3316, 0x1078, 0x461a, 0x601f,
+ 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4311, 0x1078,
+ 0x4713, 0x0c7e, 0x6118, 0x2160, 0x2009, 0x0001, 0x1078, 0x4033,
+ 0x0c7f, 0x0078, 0x63ce, 0x6618, 0x0d7e, 0x2668, 0x6e04, 0x0d7f,
+ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x63c8, 0xa686,
+ 0x0004, 0x0040, 0x63c8, 0x2001, 0x0004, 0x0078, 0x63c6, 0x2001,
+ 0x6c00, 0x2004, 0xa086, 0x0003, 0x00c0, 0x63a8, 0x1078, 0x29a0,
+ 0x2001, 0x0006, 0x1078, 0x63cf, 0x6618, 0x0d7e, 0x2668, 0x6e04,
+ 0x0d7f, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x63c8,
+ 0x2001, 0x0006, 0x0078, 0x63c6, 0x2001, 0x0004, 0x0078, 0x63c6,
+ 0x2001, 0x0006, 0x1078, 0x63cf, 0x0078, 0x63c8, 0x1078, 0x3324,
+ 0x1078, 0x461a, 0x1078, 0x5425, 0x1078, 0x4713, 0x007c, 0x017e,
+ 0x0d7e, 0x6118, 0x2168, 0x6900, 0xd184, 0x0040, 0x63ea, 0x6104,
+ 0xa18e, 0x000a, 0x00c0, 0x63e2, 0x699c, 0xd1a4, 0x00c0, 0x63e2,
+ 0x2001, 0x0007, 0x1078, 0x3316, 0x2001, 0x0000, 0x1078, 0x3302,
+ 0x1078, 0x2143, 0x0d7f, 0x017f, 0x007c, 0x0d7e, 0x6618, 0x2668,
+ 0x6804, 0xa084, 0xff00, 0x8007, 0x0d7f, 0xa0b2, 0x000c, 0x10c8,
+ 0x126a, 0xa1b6, 0x0015, 0x00c0, 0x6401, 0x1079, 0x6408, 0x0078,
+ 0x6407, 0xa1b6, 0x0016, 0x10c0, 0x126a, 0x1079, 0x6438, 0x007c,
+ 0x5671, 0x5671, 0x5671, 0x5671, 0x5671, 0x5671, 0x5671, 0x6414,
+ 0x5671, 0x5671, 0x5671, 0x5671, 0x0f7e, 0x2079, 0x6c51, 0x7804,
+ 0x0f7f, 0xd0ac, 0x00c0, 0x6430, 0x2001, 0x0000, 0x1078, 0x3302,
+ 0x2001, 0x0002, 0x1078, 0x3316, 0x601f, 0x0001, 0x6003, 0x0001,
+ 0x6007, 0x0002, 0x1078, 0x4311, 0x1078, 0x4713, 0x0078, 0x6437,
+ 0x2011, 0x7083, 0x220c, 0x1078, 0x316e, 0x1078, 0x5425, 0x007c,
+ 0x5671, 0x5671, 0x5671, 0x5671, 0x5671, 0x5671, 0x5671, 0x6444,
+ 0x5671, 0x5671, 0x5671, 0x5671, 0x1078, 0x57f4, 0x00c0, 0x6450,
+ 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4311, 0x0078, 0x6452,
+ 0x1078, 0x5425, 0x007c, 0x6004, 0xa08a, 0x002a, 0x10c8, 0x126a,
+ 0x1078, 0x461a, 0x1078, 0x60e8, 0x1078, 0x4713, 0x007c, 0xa182,
+ 0x0040, 0x0079, 0x6463, 0x6473, 0x6473, 0x6473, 0x6473, 0x6475,
+ 0x6473, 0x6473, 0x6473, 0x6473, 0x6473, 0x6473, 0x6473, 0x6473,
+ 0x6473, 0x6473, 0x6473, 0x1078, 0x126a, 0x0d7e, 0x0e7e, 0x0f7e,
+ 0x157e, 0x047e, 0x027e, 0x2071, 0x7080, 0x7444, 0xa4a4, 0xe600,
+ 0x0040, 0x64e6, 0xa486, 0x2000, 0x0040, 0x64a4, 0xa486, 0x0400,
+ 0x0040, 0x64a4, 0x7130, 0xa18c, 0x00ff, 0xa182, 0x0010, 0x00c8,
+ 0x6579, 0x0c7e, 0x1078, 0x40c4, 0x2c68, 0x0c7f, 0x6a00, 0xa284,
+ 0x0001, 0x0040, 0x655a, 0x1078, 0x4182, 0x0040, 0x6585, 0xa295,
+ 0x0200, 0x6a02, 0x0078, 0x64aa, 0x2009, 0x0001, 0x2011, 0x0200,
+ 0x1078, 0x416c, 0x1078, 0x12c2, 0x1040, 0x126a, 0x6003, 0x0007,
+ 0x6106, 0x2d00, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000,
+ 0x6c5a, 0x2c00, 0x685e, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130,
+ 0xa18c, 0x00ff, 0xa10d, 0x6946, 0x684f, 0x0000, 0x6857, 0x0036,
+ 0x1078, 0x35c4, 0xa486, 0x2000, 0x00c0, 0x64d4, 0x2019, 0x0017,
+ 0x1078, 0x6aa2, 0x0078, 0x6547, 0xa486, 0x0400, 0x00c0, 0x64de,
+ 0x2019, 0x0002, 0x1078, 0x6aa2, 0x0078, 0x6547, 0xa486, 0x0200,
+ 0x00c0, 0x64e4, 0x1078, 0x6a93, 0x0078, 0x6547, 0x7130, 0xa184,
+ 0xff00, 0x00c0, 0x659d, 0xa18c, 0x00ff, 0xa182, 0x0010, 0x00c8,
+ 0x659d, 0x0c7e, 0x1078, 0x40c4, 0x2c68, 0x0c7f, 0x6a00, 0xa284,
+ 0x0001, 0x0040, 0x65a1, 0xa284, 0x0300, 0x00c0, 0x6599, 0x6804,
+ 0xa005, 0x0040, 0x6585, 0x8001, 0x6806, 0x6003, 0x0007, 0x6106,
+ 0x1078, 0x12a7, 0x0040, 0x654e, 0x6013, 0x0000, 0x6803, 0x0000,
0x6837, 0x0116, 0x683b, 0x0000, 0x2c00, 0x684a, 0x6018, 0x2078,
- 0x78a0, 0x8007, 0x7130, 0x6986, 0x6846, 0x6853, 0x003d, 0x7044,
- 0xa084, 0x0003, 0xa086, 0x0002, 0x00c0, 0x68f2, 0x684f, 0x0040,
- 0x0078, 0x68fc, 0xa086, 0x0001, 0x00c0, 0x68fa, 0x684f, 0x0080,
- 0x0078, 0x68fc, 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001, 0x7490,
- 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, 0x8000, 0x8210, 0x00f0,
- 0x6902, 0x200c, 0x6982, 0x8000, 0x200c, 0x697e, 0x1078, 0x3840,
- 0x027f, 0x047f, 0x157f, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x6013,
- 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x4562, 0x1078,
- 0x49b7, 0x0078, 0x6910, 0x2069, 0x7492, 0x2d04, 0xa084, 0xff00,
- 0xa086, 0x1200, 0x00c0, 0x6942, 0x2069, 0x7480, 0x686c, 0xa084,
- 0x00ff, 0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f,
- 0x6003, 0x0001, 0x6007, 0x0043, 0x1078, 0x4562, 0x1078, 0x49b7,
- 0x0078, 0x6910, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041,
- 0x1078, 0x4562, 0x1078, 0x49b7, 0x0078, 0x6910, 0x6013, 0x0300,
- 0x0078, 0x6954, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041,
- 0x1078, 0x4562, 0x1078, 0x49b7, 0x0078, 0x6910, 0x6013, 0x0500,
- 0x0078, 0x6954, 0x6013, 0x0600, 0x0078, 0x6923, 0x6013, 0x0200,
- 0x0078, 0x6923, 0xa186, 0x0013, 0x00c0, 0x697c, 0x6004, 0xa08a,
- 0x0040, 0x1048, 0x1288, 0xa08a, 0x0050, 0x10c8, 0x1288, 0xa082,
- 0x0040, 0x2008, 0x0079, 0x69ad, 0xa186, 0x0047, 0x00c0, 0x6982,
- 0x0078, 0x69dc, 0xa186, 0x0027, 0x0040, 0x698a, 0xa186, 0x0014,
- 0x10c0, 0x1288, 0x6004, 0xa082, 0x0040, 0x2008, 0x0079, 0x6990,
- 0x69a0, 0x69a2, 0x69a2, 0x69a0, 0x69a0, 0x69a0, 0x69a0, 0x69a0,
- 0x69a0, 0x69a0, 0x69a0, 0x69a0, 0x69a0, 0x69a0, 0x69a0, 0x69a0,
- 0x1078, 0x1288, 0x2001, 0x0007, 0x1078, 0x34b0, 0x1078, 0x48be,
- 0x1078, 0x6457, 0x1078, 0x49b7, 0x007c, 0x69bd, 0x69cd, 0x69c6,
- 0x69d6, 0x69bd, 0x69bd, 0x69bd, 0x69bd, 0x69bd, 0x69bd, 0x69bd,
- 0x69bd, 0x69bd, 0x69bd, 0x69bd, 0x69bd, 0x1078, 0x1288, 0x6010,
- 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x1078, 0x48be,
- 0x6003, 0x0002, 0x1078, 0x49b7, 0x007c, 0x1078, 0x48be, 0x1078,
- 0x43c9, 0x1078, 0x56f5, 0x1078, 0x49b7, 0x007c, 0x1078, 0x48be,
- 0x2009, 0x0041, 0x0078, 0x6aa4, 0xa182, 0x0040, 0x0079, 0x69e0,
- 0x69f0, 0x69f2, 0x69f0, 0x69f0, 0x69f0, 0x69f0, 0x69f0, 0x69f3,
- 0x69f0, 0x69f0, 0x69f0, 0x69f0, 0x69f0, 0x69f0, 0x69f0, 0x69f0,
- 0x1078, 0x1288, 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005,
- 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1525, 0x007c, 0xa182, 0x0040,
- 0x0079, 0x6a02, 0x6a12, 0x6a12, 0x6a12, 0x6a12, 0x6a12, 0x6a12,
- 0x6a12, 0x6a12, 0x6a12, 0x6a14, 0x6a37, 0x6a12, 0x6a12, 0x6a12,
- 0x6a12, 0x6a37, 0x1078, 0x1288, 0x1078, 0x4966, 0x1078, 0x4a67,
- 0x6010, 0x0d7e, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x6a2a, 0xa08c,
- 0x0003, 0xa18e, 0x0002, 0x0040, 0x6a30, 0x2009, 0x0041, 0x0d7f,
- 0x0078, 0x6aa4, 0x6003, 0x0007, 0x1078, 0x43c9, 0x0d7f, 0x007c,
- 0x1078, 0x43c9, 0x1078, 0x56f5, 0x0d7f, 0x0078, 0x6a2f, 0x037e,
- 0x1078, 0x4966, 0x1078, 0x4a67, 0x6010, 0x0d7e, 0x2068, 0x2019,
- 0x0004, 0x1078, 0x6e8b, 0x1078, 0x6457, 0x6017, 0x0028, 0x0d7f,
- 0x037f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x6a58, 0x6004, 0xa086,
- 0x0042, 0x10c0, 0x1288, 0x1078, 0x48be, 0x1078, 0x49b7, 0x007c,
- 0xa186, 0x0027, 0x0040, 0x6a60, 0xa186, 0x0014, 0x00c0, 0x6a70,
- 0x6004, 0xa086, 0x0042, 0x10c0, 0x1288, 0x2001, 0x0007, 0x1078,
- 0x34b0, 0x1078, 0x48be, 0x1078, 0x6457, 0x1078, 0x49b7, 0x007c,
- 0xa182, 0x0040, 0x0079, 0x6a74, 0x6a84, 0x6a84, 0x6a84, 0x6a84,
- 0x6a84, 0x6a84, 0x6a84, 0x6a86, 0x6a92, 0x6a84, 0x6a84, 0x6a84,
- 0x6a84, 0x6a84, 0x6a84, 0x6a84, 0x1078, 0x1288, 0x037e, 0x047e,
- 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1525, 0x047f,
- 0x037f, 0x007c, 0x6010, 0x0d7e, 0x2068, 0x684c, 0xd0fc, 0x0040,
- 0x6a9e, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x6aa4, 0x6003, 0x0007,
- 0x1078, 0x43c9, 0x0d7f, 0x007c, 0xa182, 0x0040, 0x0079, 0x6aa8,
- 0x6ab8, 0x6aba, 0x6ac6, 0x6ad2, 0x6ab8, 0x6ab8, 0x6ab8, 0x6ab8,
- 0x6ab8, 0x6ab8, 0x6ab8, 0x6ab8, 0x6ab8, 0x6ab8, 0x6ab8, 0x6ab8,
- 0x1078, 0x1288, 0x6003, 0x0001, 0x6106, 0x1078, 0x4562, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x49b7, 0x127f, 0x007c, 0x6003, 0x0001,
- 0x6106, 0x1078, 0x4562, 0x127e, 0x2091, 0x8000, 0x1078, 0x49b7,
- 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078, 0x1936,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x45ce, 0x1078, 0x4a67, 0x127f,
- 0x007c, 0x1078, 0x48be, 0x0078, 0x6ae7, 0x1078, 0x4966, 0x6110,
- 0x81ff, 0x0040, 0x6af4, 0x0d7e, 0x2168, 0x037e, 0x2019, 0x0029,
- 0x1078, 0x6e8b, 0x037f, 0x0d7f, 0x1078, 0x6457, 0x1078, 0x49b7,
- 0x007c, 0xa182, 0x0085, 0x0079, 0x6afd, 0x6b04, 0x6b04, 0x6b04,
- 0x6b06, 0x6b04, 0x6b04, 0x6b04, 0x1078, 0x1288, 0x027e, 0x0e7e,
- 0x2071, 0x7480, 0x7220, 0x1078, 0x6da5, 0x0040, 0x6b13, 0x6007,
- 0x0086, 0x0078, 0x6b15, 0x6007, 0x0087, 0x6003, 0x0001, 0x1078,
- 0x4562, 0x1078, 0x49b7, 0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013,
- 0x00c0, 0x6b2f, 0x6004, 0xa08a, 0x0085, 0x1048, 0x1288, 0xa08a,
- 0x008c, 0x10c8, 0x1288, 0xa082, 0x0085, 0x0079, 0x6b42, 0xa186,
- 0x0027, 0x0040, 0x6b37, 0xa186, 0x0014, 0x10c0, 0x1288, 0x2001,
- 0x0007, 0x1078, 0x34b0, 0x1078, 0x48be, 0x1078, 0x6457, 0x1078,
- 0x49b7, 0x007c, 0x6b49, 0x6b4b, 0x6b4b, 0x6b49, 0x6b49, 0x6b49,
- 0x6b49, 0x1078, 0x1288, 0x1078, 0x48be, 0x1078, 0x56f5, 0x1078,
- 0x49b7, 0x007c, 0xa182, 0x0085, 0x1048, 0x1288, 0xa182, 0x008c,
- 0x10c8, 0x1288, 0xa182, 0x0085, 0x0079, 0x6b5e, 0x6b65, 0x6b65,
- 0x6b65, 0x6b67, 0x6b65, 0x6b65, 0x6b65, 0x1078, 0x1288, 0x007c,
- 0x1078, 0x48be, 0x1078, 0x6457, 0x1078, 0x49b7, 0x007c, 0x037e,
- 0x2019, 0x000b, 0x1078, 0x6b78, 0x601f, 0x0006, 0x037f, 0x007c,
- 0x127e, 0x037e, 0x087e, 0x2091, 0x8000, 0x2c40, 0x1078, 0x5408,
- 0x00c0, 0x6ba5, 0x1078, 0x54a9, 0x00c0, 0x6ba5, 0x6000, 0xa086,
- 0x0000, 0x0040, 0x6ba5, 0x601c, 0xa086, 0x0007, 0x0040, 0x6ba5,
- 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6b98, 0x1078, 0x1629,
- 0x6010, 0x2068, 0x1078, 0x6336, 0x0040, 0x6ba0, 0x1078, 0x6e8b,
- 0x0d7f, 0x6013, 0x0000, 0x601f, 0x0007, 0x087f, 0x037f, 0x127f,
- 0x007c, 0x0f7e, 0x0c7e, 0x037e, 0x157e, 0x2079, 0x7480, 0x7838,
- 0xa084, 0x00ff, 0xa005, 0x00c0, 0x6be1, 0x783c, 0x1078, 0x1fe4,
- 0x017e, 0x0c7e, 0x1078, 0x34fa, 0x00c0, 0x6bdf, 0x2011, 0x7490,
- 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x5b6b, 0x00c0, 0x6bdf,
- 0x017f, 0x027f, 0x027e, 0x017e, 0x2019, 0x0029, 0x1078, 0x557d,
- 0x1078, 0x469f, 0x1078, 0x45e2, 0x017f, 0x1078, 0x6d09, 0x1078,
- 0x36e4, 0x017f, 0x1078, 0x32ed, 0xa006, 0x0078, 0x6be1, 0x0c7f,
- 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c, 0x0c7e, 0x0d7e,
- 0x017e, 0x2009, 0x701c, 0x2104, 0xa086, 0x0074, 0x00c0, 0x6c3d,
- 0x2069, 0x748e, 0x690c, 0xa182, 0x0100, 0x0048, 0x6c2d, 0x6908,
- 0xa184, 0x8000, 0x0040, 0x6c39, 0xa184, 0x0800, 0x0040, 0x6c39,
- 0x6910, 0xa18a, 0x0001, 0x0048, 0x6c31, 0x6914, 0x2069, 0x74ae,
- 0x6904, 0x81ff, 0x00c0, 0x6c25, 0x690c, 0xa182, 0x0100, 0x0048,
- 0x6c2d, 0x6908, 0x81ff, 0x00c0, 0x6c29, 0x6910, 0xa18a, 0x0001,
- 0x0048, 0x6c31, 0x6918, 0xa18a, 0x0001, 0x0048, 0x6c39, 0x0078,
- 0x6c43, 0x6013, 0x0100, 0x0078, 0x6c3f, 0x6013, 0x0300, 0x0078,
- 0x6c3f, 0x6013, 0x0500, 0x0078, 0x6c3f, 0x6013, 0x0700, 0x0078,
- 0x6c3f, 0x6013, 0x0900, 0x0078, 0x6c3f, 0x6013, 0x0b00, 0x0078,
- 0x6c3f, 0x6013, 0x0f00, 0x0078, 0x6c3f, 0x6013, 0x2d00, 0xa085,
- 0x0001, 0x0078, 0x6c44, 0xa006, 0x017f, 0x0d7f, 0x0c7f, 0x007c,
- 0x0c7e, 0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04,
- 0xa394, 0x00ff, 0xa286, 0x0006, 0x0040, 0x6c6c, 0xa286, 0x0004,
- 0x0040, 0x6c6c, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006, 0x0040,
- 0x6c6c, 0xa286, 0x0004, 0x0040, 0x6c6c, 0x0c7e, 0x2d60, 0x1078,
- 0x350c, 0x0c7f, 0x0078, 0x6c9f, 0x2011, 0x7496, 0xad98, 0x000a,
- 0x20a9, 0x0004, 0x1078, 0x5b6b, 0x00c0, 0x6ca0, 0x2011, 0x749a,
- 0xad98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x5b6b, 0x00c0, 0x6ca0,
- 0x047e, 0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009,
- 0x7052, 0x210c, 0xd1a4, 0x0040, 0x6c94, 0x2009, 0x0029, 0x1078,
- 0x6ecf, 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x1078, 0x469f,
- 0x1078, 0x45e2, 0x2c08, 0x1078, 0x6d09, 0x017f, 0x047f, 0xa006,
- 0x157f, 0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069,
- 0x748e, 0x6800, 0xa086, 0x0800, 0x0040, 0x6cb2, 0x6013, 0x0000,
- 0x0078, 0x6cb3, 0xa006, 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e,
- 0x027e, 0x037e, 0x157e, 0x2079, 0x748c, 0x7830, 0xa00d, 0x00c0,
- 0x6cda, 0x7834, 0x1078, 0x1fe4, 0x1078, 0x34fa, 0x00c0, 0x6cda,
- 0x2011, 0x7490, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x5b6b,
- 0x00c0, 0x6cda, 0x2011, 0x7494, 0xac98, 0x0006, 0x20a9, 0x0004,
- 0x1078, 0x5b6b, 0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f,
- 0x007c, 0x0c7e, 0x007e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2011,
- 0x7483, 0x2204, 0x1078, 0x1fe4, 0x1078, 0x34fa, 0x00c0, 0x6d02,
- 0x2011, 0x7496, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x5b6b,
- 0x00c0, 0x6d02, 0x2011, 0x749a, 0xac98, 0x0006, 0x20a9, 0x0004,
- 0x1078, 0x5b6b, 0x157f, 0x037f, 0x027f, 0x017f, 0x007f, 0x0c7f,
- 0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e, 0x027e,
- 0x127e, 0x2091, 0x8000, 0x2029, 0x71bf, 0x252c, 0x2021, 0x71c5,
- 0x2424, 0x2061, 0x7600, 0x2071, 0x7000, 0x7644, 0x7060, 0x8001,
- 0xa602, 0x00c8, 0x6d6e, 0x2100, 0xac06, 0x0040, 0x6d64, 0x1078,
- 0x6ee7, 0x0040, 0x6d64, 0x671c, 0xa786, 0x0001, 0x0040, 0x6d83,
- 0xa786, 0x0007, 0x0040, 0x6d64, 0x2500, 0xac06, 0x0040, 0x6d64,
- 0x2400, 0xac06, 0x0040, 0x6d64, 0x1078, 0x6efb, 0x00c0, 0x6d64,
- 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6d4a, 0x017e, 0x1078,
- 0x1629, 0x017f, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040, 0x6d61,
- 0xa786, 0x0003, 0x00c0, 0x6d77, 0x6837, 0x0103, 0x6b4a, 0x6847,
- 0x0000, 0x017e, 0x1078, 0x64f5, 0x1078, 0x3840, 0x017f, 0x1078,
- 0x644a, 0x0d7f, 0x1078, 0x6457, 0xace0, 0x0008, 0x2001, 0x7015,
- 0x2004, 0xac02, 0x00c8, 0x6d6e, 0x0078, 0x6d1b, 0x127f, 0x027f,
- 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0xa786,
- 0x0006, 0x00c0, 0x6d54, 0xa386, 0x0005, 0x0040, 0x6d64, 0x1078,
- 0x6e8b, 0x0078, 0x6d61, 0x1078, 0x6efb, 0x00c0, 0x6d64, 0xa180,
- 0x0001, 0x2004, 0xa086, 0x0018, 0x00c0, 0x6d64, 0x6000, 0xa086,
- 0x0002, 0x00c0, 0x6d64, 0x1078, 0x6470, 0x0040, 0x6d9f, 0x1078,
- 0x6484, 0x00c0, 0x6d64, 0x1078, 0x58f2, 0x0078, 0x6da1, 0x1078,
- 0x21c6, 0x1078, 0x6457, 0x0078, 0x6d64, 0x0c7e, 0x0e7e, 0x017e,
- 0x2c08, 0x2170, 0x1078, 0x6ea2, 0x017f, 0x0040, 0x6db4, 0x601c,
- 0xa084, 0x0007, 0x1079, 0x6db7, 0x0e7f, 0x0c7f, 0x007c, 0x6dbf,
- 0x6dbf, 0x6dbf, 0x6dbf, 0x6dbf, 0x6dbf, 0x6dc1, 0x6dbf, 0xa006,
- 0x007c, 0x047e, 0x017e, 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4,
- 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x1078, 0x6ecf, 0x017f,
- 0x047f, 0x037e, 0x2019, 0x0002, 0x1078, 0x6b78, 0x037f, 0xa085,
- 0x0001, 0x007c, 0x2001, 0x0001, 0x1078, 0x348e, 0x157e, 0x017e,
- 0x027e, 0x037e, 0x20a9, 0x0004, 0x2019, 0x7005, 0x2011, 0x7496,
- 0x1078, 0x5b6b, 0x037f, 0x027f, 0x017f, 0x157f, 0xa005, 0x007c,
- 0x0f7e, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x027e, 0x127e, 0x2091,
- 0x8000, 0x2061, 0x7600, 0x2079, 0x0001, 0x8fff, 0x0040, 0x6e4b,
- 0x2071, 0x7000, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8, 0x6e4b,
- 0x88ff, 0x0040, 0x6e11, 0x2800, 0xac06, 0x00c0, 0x6e41, 0x2079,
- 0x0000, 0x1078, 0x6ee7, 0x0040, 0x6e41, 0x2400, 0xac06, 0x0040,
- 0x6e41, 0x671c, 0xa786, 0x0006, 0x00c0, 0x6e41, 0xa786, 0x0007,
- 0x0040, 0x6e41, 0x88ff, 0x00c0, 0x6e29, 0x6018, 0xa206, 0x00c0,
- 0x6e41, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6e31, 0x1078,
- 0x1629, 0x6010, 0x2068, 0x1078, 0x6336, 0x0040, 0x6e3b, 0x047e,
- 0x1078, 0x6e8b, 0x047f, 0x0d7f, 0x1078, 0x6457, 0x88ff, 0x00c0,
- 0x6e54, 0xace0, 0x0008, 0x2001, 0x7015, 0x2004, 0xac02, 0x00c8,
- 0x6e4b, 0x0078, 0x6dfd, 0xa006, 0x127f, 0x027f, 0x067f, 0x077f,
- 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5, 0x0001, 0x0078, 0x6e4c,
- 0x087e, 0x2041, 0x0000, 0x2c20, 0x2019, 0x0002, 0x6218, 0x1078,
- 0x5408, 0x1078, 0x54a9, 0x1078, 0x6df0, 0x087f, 0x007c, 0x027e,
- 0x047e, 0x087e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007e, 0x2009,
- 0x0000, 0x017e, 0x037e, 0x1078, 0x34fa, 0x00c0, 0x6e80, 0x2c10,
- 0x2041, 0x0000, 0x1078, 0x5408, 0x1078, 0x54a9, 0x1078, 0x6df0,
- 0x037f, 0x017f, 0x8108, 0x00f0, 0x6e71, 0x157f, 0x0c7f, 0x087f,
- 0x047f, 0x027f, 0x007c, 0x017e, 0x0f7e, 0x8dff, 0x0040, 0x6e9f,
- 0x6800, 0xa07d, 0x0040, 0x6e9c, 0x6803, 0x0000, 0x6b52, 0x1078,
- 0x3840, 0x2f68, 0x0078, 0x6e90, 0x6b52, 0x1078, 0x3840, 0x0f7f,
- 0x017f, 0x007c, 0x0e7e, 0x047e, 0x037e, 0x2061, 0x7600, 0x2071,
- 0x7000, 0x7444, 0x7060, 0x8001, 0xa402, 0x00c8, 0x6eca, 0x2100,
- 0xac06, 0x0040, 0x6ebc, 0x6000, 0xa086, 0x0000, 0x0040, 0x6ebc,
- 0x6008, 0xa206, 0x0040, 0x6ec6, 0xace0, 0x0008, 0x2001, 0x7015,
- 0x2004, 0xac02, 0x00c8, 0x6eca, 0x0078, 0x6ea7, 0xa085, 0x0001,
- 0x0078, 0x6ecb, 0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e,
- 0x007e, 0x1078, 0x12e2, 0x007f, 0x1040, 0x1288, 0x6837, 0x010d,
- 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x685e, 0x6956,
- 0x6c46, 0x684f, 0x0000, 0x1078, 0x3840, 0x0d7f, 0x007c, 0x6700,
- 0xa786, 0x0000, 0x0040, 0x6efa, 0xa786, 0x0001, 0x0040, 0x6efa,
- 0xa786, 0x000a, 0x0040, 0x6efa, 0xa786, 0x0009, 0x0040, 0x6efa,
- 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x70a0, 0xa206,
- 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071,
- 0x7040, 0xd5a4, 0x0040, 0x6f0f, 0x7034, 0x8000, 0x7036, 0xd5b4,
- 0x0040, 0x6f15, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x6f1c,
- 0x2071, 0x704a, 0x1078, 0x6f4b, 0x0e7f, 0x007f, 0x127f, 0x007c,
- 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x7040, 0xd5a4,
- 0x0040, 0x6f2d, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0x6f33,
- 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x6f3a, 0x2071, 0x704a,
- 0x1078, 0x6f4b, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e,
- 0x0e7e, 0x2091, 0x8000, 0x2071, 0x7042, 0x1078, 0x6f4b, 0x0e7f,
- 0x007f, 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8, 0x6f54,
- 0x8e70, 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071, 0x7040,
- 0x1078, 0x6f4b, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x7044, 0x1078,
- 0x6f4b, 0x0e7f, 0x007c, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010,
- 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000,
- 0x2000, 0x4000, 0x8000, 0xd13b
+ 0x78a0, 0x8007, 0xa10d, 0x6946, 0x6853, 0x003d, 0x7044, 0xa084,
+ 0x0003, 0xa086, 0x0002, 0x00c0, 0x6529, 0x684f, 0x0040, 0x0078,
+ 0x6533, 0xa086, 0x0001, 0x00c0, 0x6531, 0x684f, 0x0080, 0x0078,
+ 0x6533, 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001, 0x7090, 0xad90,
+ 0x0015, 0x200c, 0x810f, 0x2112, 0x8000, 0x8210, 0x00f0, 0x6539,
+ 0x200c, 0x6982, 0x8000, 0x200c, 0x697e, 0x1078, 0x35c4, 0x027f,
+ 0x047f, 0x157f, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c, 0x6013, 0x0100,
+ 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x42c4, 0x1078, 0x4713,
+ 0x0078, 0x6547, 0x2069, 0x7092, 0x2d04, 0xa084, 0xff00, 0xa086,
+ 0x1200, 0x00c0, 0x6579, 0x2069, 0x7080, 0x686c, 0xa084, 0x00ff,
+ 0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003,
+ 0x0001, 0x6007, 0x0043, 0x1078, 0x42c4, 0x1078, 0x4713, 0x0078,
+ 0x6547, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078,
+ 0x42c4, 0x1078, 0x4713, 0x0078, 0x6547, 0xa284, 0x0004, 0x00c0,
+ 0x658d, 0x6013, 0x0300, 0x0078, 0x658f, 0x6013, 0x0100, 0x6003,
+ 0x0001, 0x6007, 0x0041, 0x1078, 0x42c4, 0x1078, 0x4713, 0x0078,
+ 0x6547, 0x6013, 0x0500, 0x0078, 0x658f, 0x6013, 0x0600, 0x0078,
+ 0x655a, 0x6013, 0x0200, 0x0078, 0x655a, 0xa186, 0x0013, 0x00c0,
+ 0x65b7, 0x6004, 0xa08a, 0x0040, 0x1048, 0x126a, 0xa08a, 0x0050,
+ 0x10c8, 0x126a, 0xa082, 0x0040, 0x2008, 0x0079, 0x65e8, 0xa186,
+ 0x0047, 0x00c0, 0x65bd, 0x0078, 0x6617, 0xa186, 0x0027, 0x0040,
+ 0x65c5, 0xa186, 0x0014, 0x10c0, 0x126a, 0x6004, 0xa082, 0x0040,
+ 0x2008, 0x0079, 0x65cb, 0x65db, 0x65dd, 0x65dd, 0x65db, 0x65db,
+ 0x65db, 0x65db, 0x65db, 0x65db, 0x65db, 0x65db, 0x65db, 0x65db,
+ 0x65db, 0x65db, 0x65db, 0x1078, 0x126a, 0x2001, 0x0007, 0x1078,
+ 0x3324, 0x1078, 0x461a, 0x1078, 0x60e8, 0x1078, 0x4713, 0x007c,
+ 0x65f8, 0x6608, 0x6601, 0x6611, 0x65f8, 0x65f8, 0x65f8, 0x65f8,
+ 0x65f8, 0x65f8, 0x65f8, 0x65f8, 0x65f8, 0x65f8, 0x65f8, 0x65f8,
+ 0x1078, 0x126a, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400,
+ 0x200a, 0x1078, 0x461a, 0x6003, 0x0002, 0x1078, 0x4713, 0x007c,
+ 0x1078, 0x461a, 0x1078, 0x4145, 0x1078, 0x5425, 0x1078, 0x4713,
+ 0x007c, 0x1078, 0x461a, 0x2009, 0x0041, 0x0078, 0x66e1, 0xa182,
+ 0x0040, 0x0079, 0x661b, 0x662b, 0x662d, 0x662b, 0x662b, 0x662b,
+ 0x662b, 0x662b, 0x662e, 0x662b, 0x662b, 0x662b, 0x662b, 0x662b,
+ 0x662b, 0x662b, 0x662b, 0x1078, 0x126a, 0x007c, 0x6003, 0x0004,
+ 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1505,
+ 0x007c, 0xa182, 0x0040, 0x0079, 0x663d, 0x664d, 0x664d, 0x664d,
+ 0x664d, 0x664d, 0x664d, 0x664d, 0x664d, 0x664d, 0x664f, 0x6672,
+ 0x664d, 0x664d, 0x664d, 0x664d, 0x6672, 0x1078, 0x126a, 0x1078,
+ 0x46c2, 0x1078, 0x47c3, 0x6010, 0x0d7e, 0x2068, 0x684c, 0xd0fc,
+ 0x0040, 0x6665, 0xa08c, 0x0003, 0xa18e, 0x0002, 0x0040, 0x666b,
+ 0x2009, 0x0041, 0x0d7f, 0x0078, 0x66e1, 0x6003, 0x0007, 0x1078,
+ 0x4145, 0x0d7f, 0x007c, 0x1078, 0x4145, 0x1078, 0x5425, 0x0d7f,
+ 0x0078, 0x666a, 0x2001, 0x0007, 0x1078, 0x3324, 0x1078, 0x46c2,
+ 0x1078, 0x47c3, 0x6010, 0x0d7e, 0x2068, 0x037e, 0x2019, 0x0004,
+ 0x1078, 0x6ac6, 0x037f, 0x1078, 0x60e8, 0x0d7f, 0x007c, 0xa186,
+ 0x0013, 0x00c0, 0x6695, 0x6004, 0xa086, 0x0042, 0x10c0, 0x126a,
+ 0x1078, 0x461a, 0x1078, 0x4713, 0x007c, 0xa186, 0x0027, 0x0040,
+ 0x669d, 0xa186, 0x0014, 0x00c0, 0x66ad, 0x6004, 0xa086, 0x0042,
+ 0x10c0, 0x126a, 0x2001, 0x0007, 0x1078, 0x3324, 0x1078, 0x461a,
+ 0x1078, 0x60e8, 0x1078, 0x4713, 0x007c, 0xa182, 0x0040, 0x0079,
+ 0x66b1, 0x66c1, 0x66c1, 0x66c1, 0x66c1, 0x66c1, 0x66c1, 0x66c1,
+ 0x66c3, 0x66cf, 0x66c1, 0x66c1, 0x66c1, 0x66c1, 0x66c1, 0x66c1,
+ 0x66c1, 0x1078, 0x126a, 0x037e, 0x047e, 0x20e1, 0x0005, 0x3d18,
+ 0x3e20, 0x2c10, 0x1078, 0x1505, 0x047f, 0x037f, 0x007c, 0x6010,
+ 0x0d7e, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x66db, 0x2009, 0x0041,
+ 0x0d7f, 0x0078, 0x66e1, 0x6003, 0x0007, 0x1078, 0x4145, 0x0d7f,
+ 0x007c, 0xa182, 0x0040, 0x0079, 0x66e5, 0x66f5, 0x66f7, 0x6703,
+ 0x670f, 0x66f5, 0x66f5, 0x66f5, 0x66f5, 0x66f5, 0x66f5, 0x66f5,
+ 0x66f5, 0x66f5, 0x66f5, 0x66f5, 0x66f5, 0x1078, 0x126a, 0x6003,
+ 0x0001, 0x6106, 0x1078, 0x42c4, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x4713, 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x42c4,
+ 0x127e, 0x2091, 0x8000, 0x1078, 0x4713, 0x127f, 0x007c, 0x6003,
+ 0x0003, 0x6106, 0x2c10, 0x1078, 0x18d5, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x4330, 0x1078, 0x47c3, 0x127f, 0x007c, 0x1078, 0x461a,
+ 0x0078, 0x6724, 0x1078, 0x46c2, 0x6110, 0x81ff, 0x0040, 0x6731,
+ 0x0d7e, 0x2168, 0x037e, 0x2019, 0x0029, 0x1078, 0x6ac6, 0x037f,
+ 0x0d7f, 0x1078, 0x60e8, 0x1078, 0x4713, 0x007c, 0xa182, 0x0085,
+ 0x0079, 0x673a, 0x6741, 0x6741, 0x6741, 0x6743, 0x6741, 0x6741,
+ 0x6741, 0x1078, 0x126a, 0x027e, 0x0e7e, 0x2071, 0x7080, 0x7220,
+ 0x1078, 0x69e0, 0x0040, 0x6750, 0x6007, 0x0086, 0x0078, 0x6752,
+ 0x6007, 0x0087, 0x6003, 0x0001, 0x1078, 0x42c4, 0x1078, 0x4713,
+ 0x0e7f, 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x676c, 0x6004,
+ 0xa08a, 0x0085, 0x1048, 0x126a, 0xa08a, 0x008c, 0x10c8, 0x126a,
+ 0xa082, 0x0085, 0x0079, 0x677f, 0xa186, 0x0027, 0x0040, 0x6774,
+ 0xa186, 0x0014, 0x10c0, 0x126a, 0x2001, 0x0007, 0x1078, 0x3324,
+ 0x1078, 0x461a, 0x1078, 0x60e8, 0x1078, 0x4713, 0x007c, 0x6786,
+ 0x6788, 0x6788, 0x6786, 0x6786, 0x6786, 0x6786, 0x1078, 0x126a,
+ 0x1078, 0x461a, 0x1078, 0x5425, 0x1078, 0x4713, 0x007c, 0xa182,
+ 0x0085, 0x1048, 0x126a, 0xa182, 0x008c, 0x10c8, 0x126a, 0xa182,
+ 0x0085, 0x0079, 0x679b, 0x67a2, 0x67a2, 0x67a2, 0x67a4, 0x67a2,
+ 0x67a2, 0x67a2, 0x1078, 0x126a, 0x007c, 0x1078, 0x461a, 0x1078,
+ 0x60e8, 0x1078, 0x4713, 0x007c, 0x037e, 0x2019, 0x000b, 0x1078,
+ 0x67b5, 0x601f, 0x0006, 0x037f, 0x007c, 0x127e, 0x037e, 0x087e,
+ 0x2091, 0x8000, 0x2c40, 0x1078, 0x5180, 0x00c0, 0x67e2, 0x1078,
+ 0x5221, 0x00c0, 0x67e2, 0x6000, 0xa086, 0x0000, 0x0040, 0x67e2,
+ 0x601c, 0xa086, 0x0007, 0x0040, 0x67e2, 0x0d7e, 0x6000, 0xa086,
+ 0x0004, 0x00c0, 0x67d5, 0x1078, 0x15fc, 0x6010, 0x2068, 0x1078,
+ 0x5fcd, 0x0040, 0x67dd, 0x1078, 0x6ac6, 0x0d7f, 0x6013, 0x0000,
+ 0x601f, 0x0007, 0x087f, 0x037f, 0x127f, 0x007c, 0x0f7e, 0x0c7e,
+ 0x037e, 0x157e, 0x2079, 0x7080, 0x7838, 0xa084, 0x00ff, 0xa005,
+ 0x00c0, 0x681e, 0x783c, 0x1078, 0x1f61, 0x017e, 0x0c7e, 0x1078,
+ 0x336a, 0x00c0, 0x681c, 0x2011, 0x7090, 0xac98, 0x000a, 0x20a9,
+ 0x0004, 0x1078, 0x588d, 0x00c0, 0x681c, 0x017f, 0x027f, 0x027e,
+ 0x017e, 0x2019, 0x0029, 0x1078, 0x52f5, 0x1078, 0x43ff, 0x1078,
+ 0x4344, 0x017f, 0x1078, 0x6946, 0x1078, 0x34f2, 0x017f, 0x1078,
+ 0x316e, 0xa006, 0x0078, 0x681e, 0x0c7f, 0x017f, 0x157f, 0x037f,
+ 0x0c7f, 0x0f7f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x2009, 0x6c1c,
+ 0x2104, 0xa086, 0x0074, 0x00c0, 0x687a, 0x2069, 0x708e, 0x690c,
+ 0xa182, 0x0100, 0x0048, 0x686a, 0x6908, 0xa184, 0x8000, 0x0040,
+ 0x6876, 0xa184, 0x0800, 0x0040, 0x6876, 0x6910, 0xa18a, 0x0001,
+ 0x0048, 0x686e, 0x6914, 0x2069, 0x70ae, 0x6904, 0x81ff, 0x00c0,
+ 0x6862, 0x690c, 0xa182, 0x0100, 0x0048, 0x686a, 0x6908, 0x81ff,
+ 0x00c0, 0x6866, 0x6910, 0xa18a, 0x0001, 0x0048, 0x686e, 0x6918,
+ 0xa18a, 0x0001, 0x0048, 0x6876, 0x0078, 0x6880, 0x6013, 0x0100,
+ 0x0078, 0x687c, 0x6013, 0x0300, 0x0078, 0x687c, 0x6013, 0x0500,
+ 0x0078, 0x687c, 0x6013, 0x0700, 0x0078, 0x687c, 0x6013, 0x0900,
+ 0x0078, 0x687c, 0x6013, 0x0b00, 0x0078, 0x687c, 0x6013, 0x0f00,
+ 0x0078, 0x687c, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078, 0x6881,
+ 0xa006, 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x027e,
+ 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286,
+ 0x0006, 0x0040, 0x68a9, 0xa286, 0x0004, 0x0040, 0x68a9, 0xa394,
+ 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x68a9, 0xa286, 0x0004,
+ 0x0040, 0x68a9, 0x0c7e, 0x2d60, 0x1078, 0x337c, 0x0c7f, 0x0078,
+ 0x68dc, 0x2011, 0x7096, 0xad98, 0x000a, 0x20a9, 0x0004, 0x1078,
+ 0x588d, 0x00c0, 0x68dd, 0x2011, 0x709a, 0xad98, 0x0006, 0x20a9,
+ 0x0004, 0x1078, 0x588d, 0x00c0, 0x68dd, 0x047e, 0x017e, 0x6aa0,
+ 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x6c52, 0x210c, 0xd1a4,
+ 0x0040, 0x68d1, 0x2009, 0x0029, 0x1078, 0x6b0a, 0x6800, 0xc0e5,
+ 0x6802, 0x2019, 0x0029, 0x1078, 0x43ff, 0x1078, 0x4344, 0x2c08,
+ 0x1078, 0x6946, 0x017f, 0x047f, 0xa006, 0x157f, 0x037f, 0x027f,
+ 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0x708e, 0x6800, 0xa086,
+ 0x0800, 0x0040, 0x68ef, 0x6013, 0x0000, 0x0078, 0x68f0, 0xa006,
+ 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e, 0x037e, 0x157e,
+ 0x2079, 0x708c, 0x7830, 0xa00d, 0x00c0, 0x6917, 0x7834, 0x1078,
+ 0x1f61, 0x1078, 0x336a, 0x00c0, 0x6917, 0x2011, 0x7090, 0xac98,
+ 0x000a, 0x20a9, 0x0004, 0x1078, 0x588d, 0x00c0, 0x6917, 0x2011,
+ 0x7094, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x588d, 0x157f,
+ 0x037f, 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e, 0x007e,
+ 0x017e, 0x027e, 0x037e, 0x157e, 0x2011, 0x7083, 0x2204, 0x1078,
+ 0x1f61, 0x1078, 0x336a, 0x00c0, 0x693f, 0x2011, 0x7096, 0xac98,
+ 0x000a, 0x20a9, 0x0004, 0x1078, 0x588d, 0x00c0, 0x693f, 0x2011,
+ 0x709a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x588d, 0x157f,
+ 0x037f, 0x027f, 0x017f, 0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e,
+ 0x077e, 0x067e, 0x057e, 0x047e, 0x027e, 0x127e, 0x2091, 0x8000,
+ 0x2029, 0x6db9, 0x252c, 0x2021, 0x6dbf, 0x2424, 0x2061, 0x7200,
+ 0x2071, 0x6c00, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8, 0x69a9,
+ 0x2100, 0xac06, 0x0040, 0x699f, 0x1078, 0x6b22, 0x0040, 0x699f,
+ 0x671c, 0xa786, 0x0001, 0x0040, 0x69be, 0xa786, 0x0007, 0x0040,
+ 0x699f, 0x2500, 0xac06, 0x0040, 0x699f, 0x2400, 0xac06, 0x0040,
+ 0x699f, 0x1078, 0x6b36, 0x00c0, 0x699f, 0x0d7e, 0x6000, 0xa086,
+ 0x0004, 0x00c0, 0x6987, 0x017e, 0x1078, 0x15fc, 0x017f, 0x6010,
+ 0x2068, 0x1078, 0x5fcd, 0x0040, 0x699c, 0xa786, 0x0003, 0x00c0,
+ 0x69b2, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x017e, 0x1078,
+ 0x35c4, 0x017f, 0x1078, 0x60db, 0x0d7f, 0x1078, 0x60e8, 0xace0,
+ 0x0008, 0x2001, 0x6c15, 0x2004, 0xac02, 0x00c8, 0x69a9, 0x0078,
+ 0x6958, 0x127f, 0x027f, 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f,
+ 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0, 0x6991, 0xa386, 0x0005,
+ 0x0040, 0x699f, 0x1078, 0x6ac6, 0x0078, 0x699c, 0x1078, 0x6b36,
+ 0x00c0, 0x699f, 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, 0x00c0,
+ 0x699f, 0x6000, 0xa086, 0x0002, 0x00c0, 0x699f, 0x1078, 0x6101,
+ 0x0040, 0x69da, 0x1078, 0x6115, 0x00c0, 0x699f, 0x1078, 0x5614,
+ 0x0078, 0x69dc, 0x1078, 0x2143, 0x1078, 0x60e8, 0x0078, 0x699f,
+ 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0x1078, 0x6add, 0x017f,
+ 0x0040, 0x69ef, 0x601c, 0xa084, 0x0007, 0x1079, 0x69f2, 0x0e7f,
+ 0x0c7f, 0x007c, 0x69fa, 0x69fa, 0x69fa, 0x69fa, 0x69fa, 0x69fa,
+ 0x69fc, 0x69fa, 0xa006, 0x007c, 0x047e, 0x017e, 0x7018, 0xa080,
+ 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020,
+ 0x1078, 0x6b0a, 0x017f, 0x047f, 0x037e, 0x2019, 0x0002, 0x1078,
+ 0x67b5, 0x037f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0001, 0x1078,
+ 0x3302, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9, 0x0004, 0x2019,
+ 0x6c05, 0x2011, 0x7096, 0x1078, 0x588d, 0x037f, 0x027f, 0x017f,
+ 0x157f, 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x077e, 0x067e,
+ 0x027e, 0x127e, 0x2091, 0x8000, 0x2061, 0x7200, 0x2079, 0x0001,
+ 0x8fff, 0x0040, 0x6a86, 0x2071, 0x6c00, 0x7644, 0x7060, 0x8001,
+ 0xa602, 0x00c8, 0x6a86, 0x88ff, 0x0040, 0x6a4c, 0x2800, 0xac06,
+ 0x00c0, 0x6a7c, 0x2079, 0x0000, 0x1078, 0x6b22, 0x0040, 0x6a7c,
+ 0x2400, 0xac06, 0x0040, 0x6a7c, 0x671c, 0xa786, 0x0006, 0x00c0,
+ 0x6a7c, 0xa786, 0x0007, 0x0040, 0x6a7c, 0x88ff, 0x00c0, 0x6a64,
+ 0x6018, 0xa206, 0x00c0, 0x6a7c, 0x0d7e, 0x6000, 0xa086, 0x0004,
+ 0x00c0, 0x6a6c, 0x1078, 0x15fc, 0x6010, 0x2068, 0x1078, 0x5fcd,
+ 0x0040, 0x6a76, 0x047e, 0x1078, 0x6ac6, 0x047f, 0x0d7f, 0x1078,
+ 0x60e8, 0x88ff, 0x00c0, 0x6a8f, 0xace0, 0x0008, 0x2001, 0x6c15,
+ 0x2004, 0xac02, 0x00c8, 0x6a86, 0x0078, 0x6a38, 0xa006, 0x127f,
+ 0x027f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5,
+ 0x0001, 0x0078, 0x6a87, 0x087e, 0x2041, 0x0000, 0x2c20, 0x2019,
+ 0x0002, 0x6218, 0x1078, 0x5180, 0x1078, 0x5221, 0x1078, 0x6a2b,
+ 0x087f, 0x007c, 0x027e, 0x047e, 0x087e, 0x0c7e, 0x157e, 0x2c20,
+ 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e, 0x037e, 0x1078, 0x336a,
+ 0x00c0, 0x6abb, 0x2c10, 0x2041, 0x0000, 0x1078, 0x5180, 0x1078,
+ 0x5221, 0x1078, 0x6a2b, 0x037f, 0x017f, 0x8108, 0x00f0, 0x6aac,
+ 0x157f, 0x0c7f, 0x087f, 0x047f, 0x027f, 0x007c, 0x017e, 0x0f7e,
+ 0x8dff, 0x0040, 0x6ada, 0x6800, 0xa07d, 0x0040, 0x6ad7, 0x6803,
+ 0x0000, 0x6b52, 0x1078, 0x35c4, 0x2f68, 0x0078, 0x6acb, 0x6b52,
+ 0x1078, 0x35c4, 0x0f7f, 0x017f, 0x007c, 0x0e7e, 0x047e, 0x037e,
+ 0x2061, 0x7200, 0x2071, 0x6c00, 0x7444, 0x7060, 0x8001, 0xa402,
+ 0x00c8, 0x6b05, 0x2100, 0xac06, 0x0040, 0x6af7, 0x6000, 0xa086,
+ 0x0000, 0x0040, 0x6af7, 0x6008, 0xa206, 0x0040, 0x6b01, 0xace0,
+ 0x0008, 0x2001, 0x6c15, 0x2004, 0xac02, 0x00c8, 0x6b05, 0x0078,
+ 0x6ae2, 0xa085, 0x0001, 0x0078, 0x6b06, 0xa006, 0x037f, 0x047f,
+ 0x0e7f, 0x007c, 0x0d7e, 0x007e, 0x1078, 0x12c2, 0x007f, 0x1040,
+ 0x126a, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x685b,
+ 0x0000, 0x685e, 0x6956, 0x6c46, 0x684f, 0x0000, 0x1078, 0x35c4,
+ 0x0d7f, 0x007c, 0x6700, 0xa786, 0x0000, 0x0040, 0x6b35, 0xa786,
+ 0x0001, 0x0040, 0x6b35, 0xa786, 0x000a, 0x0040, 0x6b35, 0xa786,
+ 0x0009, 0x0040, 0x6b35, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018,
+ 0x2070, 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e,
+ 0x2091, 0x8000, 0x2071, 0x6c40, 0xd5a4, 0x0040, 0x6b4a, 0x7034,
+ 0x8000, 0x7036, 0xd5b4, 0x0040, 0x6b50, 0x7030, 0x8000, 0x7032,
+ 0xd5ac, 0x0040, 0x6b57, 0x2071, 0x6c4a, 0x1078, 0x6b86, 0x0e7f,
+ 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000,
+ 0x2071, 0x6c40, 0xd5a4, 0x0040, 0x6b68, 0x7034, 0x8000, 0x7036,
+ 0xd5b4, 0x0040, 0x6b6e, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040,
+ 0x6b75, 0x2071, 0x6c4a, 0x1078, 0x6b86, 0x0e7f, 0x007f, 0x127f,
+ 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x6c42,
+ 0x1078, 0x6b86, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x2e04, 0x8000,
+ 0x2072, 0x00c8, 0x6b8f, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x007c,
+ 0x0e7e, 0x2071, 0x6c40, 0x1078, 0x6b86, 0x0e7f, 0x007c, 0x0e7e,
+ 0x2071, 0x6c44, 0x1078, 0x6b86, 0x0e7f, 0x007c, 0x0001, 0x0002,
+ 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200,
+ 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000, 0x3cfe
};
-#define ISP2100_CODE_LENGTH 0x5f74
+#define ISP2100_CODE_LENGTH 0x5baf
#endif
-#if defined(ISP2100_FABRIC) && !defined(ISP2100_SCCLUN)
+#if 1
/************************************************************************
* *
- * --- ISP2100 Fabric Initiator/Target Firmware --- *
+ * --- ISP2100 Initiator/Target Firmware --- *
* *
* *
************************************************************************
@@ -8141,618 +9209,580 @@ static const u_int16_t ISP2100_RISC_CODE[] = {
************************************************************************
*/
/*
- * Firmware Version 1.15.07 (14:45 Oct 13, 1998)
+ * Firmware Version 1.15.00 (12:09 Sep 10, 1998)
*/
-
+#define ISP2100_CODE_VERSION 1*1024+15
static const u_int16_t ISP2100_RISC_CODE[] = {
- 0x0078, 0x1029, 0x0000, 0x6591, 0x0000, 0x2043, 0x4f50, 0x5952,
+ 0x0078, 0x1029, 0x0000, 0x5e35, 0x0000, 0x2043, 0x4f50, 0x5952,
0x4947, 0x4854, 0x2031, 0x3939, 0x3620, 0x514c, 0x4f47, 0x4943,
0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350,
0x3231, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3135, 0x2020, 0x2020,
- 0x2400, 0x20c1, 0x0021, 0x20a1, 0x7591, 0x2009, 0x0000, 0x20a9,
- 0x076f, 0x41a4, 0x3400, 0x20c9, 0x7aff, 0x2091, 0x2000, 0x2059,
- 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x2074, 0x2051, 0x7600,
- 0x2a70, 0x705b, 0x9500, 0x705f, 0xffff, 0x7057, 0x94f9, 0x7063,
- 0x0300, 0x1078, 0x1282, 0x20a1, 0x7d00, 0x715c, 0x810d, 0x810d,
+ 0x2400, 0x20c1, 0x0021, 0x20a1, 0x6e35, 0x2009, 0x0000, 0x20a9,
+ 0x06cb, 0x41a4, 0x3400, 0x20c9, 0x72ff, 0x2091, 0x2000, 0x2059,
+ 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x1fbd, 0x2051, 0x6f00,
+ 0x2a70, 0x705b, 0x8d00, 0x705f, 0xffff, 0x7057, 0x8cf9, 0x7063,
+ 0x0300, 0x1078, 0x1233, 0x20a1, 0x7500, 0x715c, 0x810d, 0x810d,
0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0007, 0xa112, 0xa00e,
0x21a8, 0x41a4, 0x3400, 0x8211, 0x00c0, 0x1058, 0x715c, 0x3400,
0xa102, 0x0040, 0x1068, 0x0048, 0x1068, 0x20a8, 0xa00e, 0x41a4,
- 0x1078, 0x1249, 0x1078, 0x136e, 0x1078, 0x14f3, 0x1078, 0x19a0,
- 0x1078, 0x35cf, 0x1078, 0x5b46, 0x1078, 0x12f9, 0x1078, 0x2403,
- 0x1078, 0x3c08, 0x1078, 0x39e0, 0x1078, 0x4446, 0x1078, 0x1e2f,
- 0x1078, 0x4685, 0x1078, 0x4126, 0x1078, 0x1d4e, 0x1078, 0x1e0e,
+ 0x1078, 0x11fe, 0x1078, 0x131f, 0x1078, 0x14a4, 0x1078, 0x1915,
+ 0x1078, 0x328f, 0x1078, 0x5533, 0x1078, 0x12aa, 0x1078, 0x22c3,
+ 0x1078, 0x38c8, 0x1078, 0x36a0, 0x1078, 0x4079, 0x1078, 0x1d9b,
+ 0x1078, 0x42b8, 0x1078, 0x3de6, 0x1078, 0x1cc3, 0x1078, 0x1d7a,
0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x109d, 0x7820, 0xa086,
0x0002, 0x00c0, 0x109d, 0x7823, 0x4000, 0x0068, 0x1095, 0x781b,
0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000,
0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003,
- 0x00c0, 0x10bd, 0x1078, 0x2d45, 0x1078, 0x242b, 0x1078, 0x3c58,
- 0x1078, 0x3acb, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
- 0x10c1, 0x1078, 0x445e, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
- 0x10aa, 0x1078, 0x5818, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x114b,
- 0x10cd, 0x11c6, 0x1246, 0x1247, 0x1248, 0x1078, 0x12d5, 0x007c,
- 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2e6a, 0x2079, 0x0100,
- 0x7844, 0xa005, 0x00c0, 0x113c, 0x2011, 0x34fc, 0x1078, 0x4520,
+ 0x00c0, 0x10bd, 0x1078, 0x2a07, 0x1078, 0x22eb, 0x1078, 0x3918,
+ 0x1078, 0x378b, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
+ 0x10c1, 0x1078, 0x4091, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
+ 0x10aa, 0x1078, 0x5205, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x112a,
+ 0x10cd, 0x117d, 0x11fb, 0x11fc, 0x11fd, 0x1078, 0x1286, 0x007c,
+ 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2b2a, 0x2079, 0x0100,
+ 0x7844, 0xa005, 0x00c0, 0x1127, 0x2011, 0x31bc, 0x1078, 0x4153,
0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010,
- 0x73b8, 0x1078, 0x2d02, 0x1078, 0x5663, 0x2011, 0x0004, 0x1078,
- 0x68f8, 0x1078, 0x397a, 0x70c7, 0x0000, 0x70bf, 0x0000, 0x70c3,
- 0x0000, 0x1078, 0x113f, 0x2011, 0x0000, 0x2079, 0x7651, 0x7804,
- 0xd0ac, 0x0040, 0x1104, 0xc295, 0x70a4, 0xa005, 0x0040, 0x1109,
- 0xc29d, 0x72be, 0xa296, 0x0004, 0x0040, 0x112a, 0x2011, 0x0001,
- 0x1078, 0x68f8, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002,
- 0x0f7f, 0x1078, 0x2124, 0x2011, 0x0005, 0x1078, 0x5772, 0x1078,
- 0x4c2c, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x127f,
- 0x0078, 0x113e, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002,
- 0x2011, 0x0005, 0x1078, 0x5772, 0x1078, 0x4c2c, 0x0c7e, 0x2061,
- 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x0f7f, 0x127f, 0x007c, 0x0c7e,
- 0x20a9, 0x0082, 0x2009, 0x007e, 0x1078, 0x37bf, 0x8108, 0x00f0,
- 0x1144, 0x0c7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x708c, 0xa086,
- 0xffff, 0x0040, 0x1159, 0x1078, 0x2124, 0x1078, 0x4c2c, 0x0078,
- 0x11c4, 0x70bc, 0xd09c, 0x0040, 0x1181, 0xd084, 0x0040, 0x1181,
- 0x0f7e, 0x2079, 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c,
- 0x0040, 0x1181, 0x70c0, 0xa086, 0xffff, 0x0040, 0x117d, 0x1078,
- 0x2219, 0x1078, 0x4c2c, 0x2011, 0x0001, 0x2019, 0x0000, 0x1078,
- 0x2251, 0x1078, 0x4c2c, 0x0078, 0x11c4, 0x70c4, 0xa005, 0x00c0,
- 0x11c4, 0x7088, 0xa005, 0x00c0, 0x11c4, 0x2001, 0x7652, 0x2004,
- 0xd0ac, 0x0040, 0x11a7, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009,
- 0x0000, 0x017e, 0x1078, 0x37d7, 0x00c0, 0x119a, 0x6000, 0xd0ec,
- 0x00c0, 0x11a2, 0x017f, 0x8108, 0x00f0, 0x1191, 0x0c7f, 0x157f,
- 0x0078, 0x11a7, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x11c4, 0x7003,
- 0x0003, 0x708f, 0xffff, 0x2001, 0x0000, 0x1078, 0x1fff, 0x1078,
- 0x2d80, 0x2001, 0x7837, 0x2004, 0xa086, 0x0005, 0x00c0, 0x11bc,
- 0x2011, 0x0000, 0x1078, 0x5772, 0x2011, 0x0000, 0x1078, 0x577c,
- 0x1078, 0x4c2c, 0x1078, 0x4cec, 0x127f, 0x007c, 0x017e, 0x0f7e,
- 0x127e, 0x2091, 0x8000, 0x2079, 0x0100, 0x7940, 0xa18c, 0x0010,
- 0x7942, 0x7924, 0xd1b4, 0x0040, 0x11d7, 0x7827, 0x0040, 0xd19c,
- 0x0040, 0x11dc, 0x7827, 0x0008, 0x007e, 0x037e, 0x157e, 0x7900,
- 0xa18a, 0x0003, 0x0050, 0x1202, 0x7954, 0xd1ac, 0x00c0, 0x1202,
- 0x2009, 0x00f8, 0x1078, 0x359e, 0x7843, 0x0090, 0x7843, 0x0010,
- 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x11fa, 0x7824, 0xd0ac,
- 0x00c0, 0x1236, 0x00f0, 0x11f2, 0x2001, 0x0001, 0x1078, 0x1fff,
- 0x0078, 0x123f, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0008,
- 0x00e0, 0x1208, 0x2091, 0x6000, 0x00f0, 0x1208, 0x7853, 0x0400,
- 0x782f, 0x0000, 0x2009, 0x00f8, 0x1078, 0x359e, 0x20a9, 0x000e,
- 0x0005, 0x00f0, 0x1218, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843,
- 0x0010, 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040,
- 0x122d, 0x7824, 0xd0ac, 0x00c0, 0x1236, 0x8319, 0x00c0, 0x1223,
- 0x2001, 0x0001, 0x1078, 0x1fff, 0x0078, 0x123d, 0x7828, 0xc09d,
- 0x782a, 0x7827, 0x0008, 0x7827, 0x0040, 0x7853, 0x0400, 0x157f,
- 0x037f, 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c,
- 0x007c, 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
- 0x1255, 0x704f, 0xffff, 0x0078, 0x1257, 0x704f, 0x0000, 0x7053,
- 0xffff, 0x7067, 0x0000, 0x706b, 0x0000, 0x2061, 0x7820, 0x6003,
- 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f, 0x0200, 0x6013,
- 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f, 0x07d0, 0x2061,
- 0x7828, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b, 0x0000, 0x600f,
- 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b, 0x0001, 0x601f,
- 0x0000, 0x007c, 0x1078, 0x12a8, 0x2011, 0x0000, 0x81ff, 0x0040,
- 0x12a7, 0xa186, 0x0001, 0x00c0, 0x1297, 0x705f, 0x8fff, 0x7057,
- 0x8501, 0x7063, 0x0100, 0x705b, 0x8500, 0x0078, 0x12a5, 0xa186,
- 0x0002, 0x00c0, 0x129f, 0x2011, 0x0000, 0x0078, 0x12a5, 0xa186,
- 0x0005, 0x00c0, 0x12a5, 0x2011, 0x0001, 0x1078, 0x12cf, 0x007c,
- 0x2009, 0x0000, 0x2011, 0x0000, 0x1078, 0x12cf, 0x2019, 0xaaaa,
- 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061, 0x7fff, 0x2c04, 0xa406,
- 0x0040, 0x12bd, 0xc18d, 0x0078, 0x12ca, 0xc185, 0x2011, 0x0001,
- 0x1078, 0x12cf, 0x2061, 0xffff, 0x2362, 0x2c04, 0xa306, 0x00c0,
- 0x12ca, 0xc195, 0x2011, 0x0001, 0x1078, 0x12cf, 0x007c, 0x3800,
- 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c, 0x2091, 0x8000, 0x0068,
- 0x12d7, 0x007e, 0x017e, 0x2079, 0x0000, 0x7818, 0xa084, 0x0000,
- 0x00c0, 0x12dd, 0x017f, 0x792e, 0x007f, 0x782a, 0x007f, 0x7826,
- 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001, 0x2091, 0x5000,
- 0x2091, 0x4080, 0x2079, 0x7600, 0x7803, 0x0005, 0x0078, 0x12f6,
- 0x007c, 0x2071, 0x7600, 0x7158, 0x712e, 0x2021, 0x0001, 0xa190,
- 0x002d, 0xa298, 0x002d, 0x0048, 0x130f, 0x705c, 0xa302, 0x00c8,
- 0x130f, 0x220a, 0x2208, 0x2310, 0x8420, 0x0078, 0x1301, 0x200b,
- 0x0000, 0x749e, 0x74a2, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000,
- 0x2071, 0x7600, 0x70a0, 0xa0ea, 0x0010, 0x00c8, 0x1322, 0xa06e,
- 0x0078, 0x132c, 0x8001, 0x70a2, 0x702c, 0x2068, 0x2d04, 0x702e,
- 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e,
- 0x2071, 0x7600, 0x127e, 0x2091, 0x8000, 0x70a0, 0x8001, 0x00c8,
- 0x133c, 0xa06e, 0x0078, 0x1345, 0x70a2, 0x702c, 0x2068, 0x2d04,
+ 0x73b0, 0x1078, 0x29c6, 0x1078, 0x5050, 0x2011, 0x0004, 0x1078,
+ 0x61f1, 0x1078, 0x363a, 0x2079, 0x6f51, 0x7804, 0xd0ac, 0x00c0,
+ 0x1115, 0x2011, 0x0001, 0x1078, 0x61f1, 0x7083, 0x0000, 0x7087,
+ 0xffff, 0x7003, 0x0002, 0x0f7f, 0x1078, 0x206d, 0x2011, 0x0005,
+ 0x1078, 0x515f, 0x1078, 0x484d, 0x0c7e, 0x2061, 0x0100, 0x60e3,
+ 0x0008, 0x0c7f, 0x127f, 0x0078, 0x1129, 0x7083, 0x0000, 0x7087,
+ 0xffff, 0x7003, 0x0002, 0x2011, 0x0005, 0x1078, 0x515f, 0x1078,
+ 0x484d, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x0f7f,
+ 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x7084, 0xa086, 0xffff,
+ 0x0040, 0x1138, 0x1078, 0x206d, 0x1078, 0x484d, 0x0078, 0x117b,
+ 0x7080, 0xa005, 0x00c0, 0x117b, 0x2001, 0x6f52, 0x2004, 0xd0ac,
+ 0x0040, 0x115e, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000,
+ 0x017e, 0x1078, 0x3497, 0x00c0, 0x1151, 0x6000, 0xd0ec, 0x00c0,
+ 0x1159, 0x017f, 0x8108, 0x00f0, 0x1148, 0x0c7f, 0x157f, 0x0078,
+ 0x115e, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x117b, 0x7003, 0x0003,
+ 0x7087, 0xffff, 0x2001, 0x0000, 0x1078, 0x1f5e, 0x1078, 0x2a40,
+ 0x2001, 0x70b7, 0x2004, 0xa086, 0x0005, 0x00c0, 0x1173, 0x2011,
+ 0x0000, 0x1078, 0x515f, 0x2011, 0x0000, 0x1078, 0x5169, 0x1078,
+ 0x484d, 0x1078, 0x48fd, 0x127f, 0x007c, 0x017e, 0x0f7e, 0x127e,
+ 0x2091, 0x8000, 0x2079, 0x0100, 0x7843, 0x0000, 0x7924, 0xd1b4,
+ 0x0040, 0x118c, 0x7827, 0x0040, 0xd19c, 0x0040, 0x1191, 0x7827,
+ 0x0008, 0x007e, 0x037e, 0x157e, 0x7900, 0xa18a, 0x0003, 0x0050,
+ 0x11b7, 0x7954, 0xd1ac, 0x00c0, 0x11b7, 0x2009, 0x00f8, 0x1078,
+ 0x325e, 0x7843, 0x0090, 0x7843, 0x0010, 0x20a9, 0x09c4, 0x7820,
+ 0xd09c, 0x00c0, 0x11af, 0x7824, 0xd0ac, 0x00c0, 0x11eb, 0x00f0,
+ 0x11a7, 0x2001, 0x0001, 0x1078, 0x1f5e, 0x0078, 0x11f4, 0x7853,
+ 0x0000, 0x782f, 0x0020, 0x20a9, 0x0008, 0x00e0, 0x11bd, 0x2091,
+ 0x6000, 0x00f0, 0x11bd, 0x7853, 0x0400, 0x782f, 0x0000, 0x2009,
+ 0x00f8, 0x1078, 0x325e, 0x20a9, 0x000e, 0x0005, 0x00f0, 0x11cd,
+ 0x7853, 0x1400, 0x7843, 0x0090, 0x7843, 0x0010, 0x2019, 0x61a8,
+ 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040, 0x11e2, 0x7824, 0xd0ac,
+ 0x00c0, 0x11eb, 0x8319, 0x00c0, 0x11d8, 0x2001, 0x0001, 0x1078,
+ 0x1f5e, 0x0078, 0x11f2, 0x7828, 0xc09d, 0x782a, 0x7827, 0x0008,
+ 0x7827, 0x0040, 0x7853, 0x0400, 0x157f, 0x037f, 0x007f, 0x127f,
+ 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c, 0x007c, 0x2a70, 0x2009,
+ 0x0100, 0x2104, 0xa082, 0x0002, 0x0048, 0x120a, 0x704f, 0xffff,
+ 0x0078, 0x120c, 0x704f, 0x0000, 0x7053, 0xffff, 0x2061, 0x70a0,
+ 0x6003, 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f, 0x0200,
+ 0x6013, 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f, 0x07d0,
+ 0x2061, 0x70a8, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b, 0x0000,
+ 0x600f, 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b, 0x0001,
+ 0x601f, 0x0000, 0x007c, 0x1078, 0x1259, 0x2011, 0x0000, 0x81ff,
+ 0x0040, 0x1258, 0xa186, 0x0001, 0x00c0, 0x1248, 0x705f, 0x8fff,
+ 0x7057, 0x7d01, 0x7063, 0x0100, 0x705b, 0x7d00, 0x0078, 0x1256,
+ 0xa186, 0x0002, 0x00c0, 0x1250, 0x2011, 0x0000, 0x0078, 0x1256,
+ 0xa186, 0x0005, 0x00c0, 0x1256, 0x2011, 0x0001, 0x1078, 0x1280,
+ 0x007c, 0x2009, 0x0000, 0x2011, 0x0000, 0x1078, 0x1280, 0x2019,
+ 0xaaaa, 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061, 0x7fff, 0x2c04,
+ 0xa406, 0x0040, 0x126e, 0xc18d, 0x0078, 0x127b, 0xc185, 0x2011,
+ 0x0001, 0x1078, 0x1280, 0x2061, 0xffff, 0x2362, 0x2c04, 0xa306,
+ 0x00c0, 0x127b, 0xc195, 0x2011, 0x0001, 0x1078, 0x1280, 0x007c,
+ 0x3800, 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c, 0x2091, 0x8000,
+ 0x0068, 0x1288, 0x007e, 0x017e, 0x2079, 0x0000, 0x7818, 0xa084,
+ 0x0000, 0x00c0, 0x128e, 0x017f, 0x792e, 0x007f, 0x782a, 0x007f,
+ 0x7826, 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001, 0x2091,
+ 0x5000, 0x2091, 0x4080, 0x2079, 0x6f00, 0x7803, 0x0005, 0x0078,
+ 0x12a7, 0x007c, 0x2071, 0x6f00, 0x7158, 0x712e, 0x2021, 0x0001,
+ 0xa190, 0x002d, 0xa298, 0x002d, 0x0048, 0x12c0, 0x705c, 0xa302,
+ 0x00c8, 0x12c0, 0x220a, 0x2208, 0x2310, 0x8420, 0x0078, 0x12b2,
+ 0x200b, 0x0000, 0x7496, 0x749a, 0x007c, 0x0e7e, 0x127e, 0x2091,
+ 0x8000, 0x2071, 0x6f00, 0x7098, 0xa0ea, 0x0010, 0x00c8, 0x12d3,
+ 0xa06e, 0x0078, 0x12dd, 0x8001, 0x709a, 0x702c, 0x2068, 0x2d04,
0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c,
- 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7600, 0x702c, 0x206a,
- 0x2d00, 0x702e, 0x70a0, 0x8000, 0x70a2, 0x127f, 0x0e7f, 0x007c,
- 0x8dff, 0x0040, 0x1364, 0x6804, 0x6807, 0x0000, 0x007e, 0x1078,
- 0x1348, 0x0d7f, 0x0078, 0x1358, 0x007c, 0x0e7e, 0x2071, 0x7600,
- 0x70a0, 0xa08a, 0x0010, 0xa00d, 0x0e7f, 0x007c, 0x0e7e, 0x2071,
- 0x7859, 0x7007, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071,
- 0x0000, 0x7010, 0xa085, 0x8004, 0x7012, 0x0e7f, 0x007c, 0x0e7e,
- 0x2270, 0x700b, 0x0000, 0x2071, 0x7859, 0x7018, 0xa088, 0x7862,
- 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0,
- 0x1397, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x13a8, 0x0f7f, 0x0e7f,
- 0x007c, 0x0e7e, 0x2071, 0x7859, 0x7004, 0xa005, 0x00c0, 0x13a6,
- 0x0f7e, 0x2079, 0x0010, 0x1078, 0x13a8, 0x0f7f, 0x0e7f, 0x007c,
- 0x7000, 0x0079, 0x13ab, 0x13af, 0x1419, 0x1436, 0x1436, 0x7018,
- 0x711c, 0xa106, 0x00c0, 0x13b7, 0x7007, 0x0000, 0x007c, 0x0d7e,
- 0xa180, 0x7862, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
- 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
- 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
- 0x0d7f, 0xd084, 0x0040, 0x13d9, 0x7007, 0x0001, 0x1078, 0x13de,
- 0x007c, 0x7007, 0x0002, 0x1078, 0x13f4, 0x007c, 0x017e, 0x027e,
- 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x13e9, 0x2110,
- 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
- 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e,
- 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c,
- 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1408, 0x2110, 0xa006,
- 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
- 0x0001, 0x3300, 0x7016, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f,
- 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0x76e5, 0x20a1, 0x0018,
- 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
- 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b,
- 0x76e0, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e,
- 0x157e, 0x2001, 0x7714, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026,
- 0x2001, 0x7715, 0x20ac, 0x53a6, 0x2099, 0x7716, 0x20a1, 0x0018,
- 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
- 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b,
- 0x7711, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e,
- 0x2071, 0x7859, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002,
- 0xd1fc, 0x0040, 0x1479, 0xa18c, 0x0700, 0x0040, 0x1476, 0x7008,
- 0xa080, 0x0002, 0x2003, 0x0200, 0x0078, 0x1479, 0x7004, 0x1079,
- 0x147d, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x13a8, 0x1485, 0x14a7,
- 0x14c1, 0x14ea, 0x1483, 0x0078, 0x1483, 0x137e, 0x147e, 0x157e,
- 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x7010, 0x20a8,
- 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f, 0x137f, 0x700c, 0xa005,
- 0x0040, 0x14ae, 0x1078, 0x13de, 0x007c, 0x7008, 0xa080, 0x0002,
- 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x13a8, 0x007c, 0x700c,
- 0xa005, 0x0040, 0x14ae, 0x1078, 0x13f4, 0x007c, 0x0d7e, 0x7008,
- 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c,
- 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x13a8,
- 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x76e3, 0x2004, 0xa080,
- 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020,
- 0x53a5, 0x2001, 0x76e5, 0x2004, 0xd0bc, 0x0040, 0x14e0, 0x2001,
- 0x76ee, 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5,
- 0x157f, 0x147f, 0x137f, 0x7007, 0x0000, 0x1078, 0x3d01, 0x1078,
- 0x13a8, 0x007c, 0x2001, 0x7713, 0x2003, 0x0100, 0x7007, 0x0000,
- 0x1078, 0x13a8, 0x007c, 0x127e, 0x2091, 0x2100, 0x2079, 0x0030,
- 0x2071, 0x786a, 0x7003, 0x0000, 0x700f, 0x7870, 0x7013, 0x7870,
- 0x780f, 0x0070, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079,
- 0x1509, 0x1511, 0x1557, 0x1511, 0x1511, 0x1511, 0x153c, 0x1520,
- 0x1515, 0xa085, 0x0001, 0x0078, 0x1571, 0x684c, 0xd0bc, 0x0040,
- 0x1511, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x155f,
- 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x1511, 0x684c, 0xd0bc,
- 0x0040, 0x1511, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, 0x681a,
- 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004,
- 0x6832, 0x6858, 0x0078, 0x1567, 0xa18c, 0x00ff, 0xa186, 0x0015,
- 0x00c0, 0x1511, 0x684c, 0xd0ac, 0x0040, 0x1511, 0x6804, 0x681a,
- 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004,
- 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x1567, 0x684c,
- 0xd0ac, 0x0040, 0x1511, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c,
- 0x000f, 0xa188, 0x1c5c, 0x210c, 0x6932, 0x2d08, 0x691a, 0x6826,
- 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980,
- 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a,
- 0x2004, 0x82ff, 0x0040, 0x158c, 0xa280, 0x0004, 0x0d7e, 0x206c,
- 0x684c, 0xd0dc, 0x00c0, 0x1588, 0x1078, 0x1504, 0x10c0, 0x12d5,
- 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e, 0x027e,
- 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005, 0x00c0,
- 0x15a0, 0x7206, 0x2001, 0x15b4, 0x007e, 0x2260, 0x0078, 0x16cc,
- 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182,
- 0x788b, 0x0048, 0x15ad, 0x2009, 0x7870, 0x710e, 0x7000, 0xa005,
- 0x00c0, 0x15b4, 0x1078, 0x16b5, 0x127f, 0x007c, 0x127e, 0x027e,
- 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100, 0x007f, 0x047f, 0x037f,
- 0x027f, 0x0d7e, 0x0c7e, 0x2460, 0x6110, 0x2168, 0x6a62, 0x6b5e,
- 0xa005, 0x0040, 0x1608, 0x6808, 0xa005, 0x0040, 0x166e, 0x7000,
- 0xa005, 0x00c0, 0x15d5, 0x0078, 0x1602, 0x700c, 0x7110, 0xa106,
- 0x00c0, 0x1672, 0x7004, 0xa406, 0x00c0, 0x1602, 0x2001, 0x0005,
- 0x2004, 0xd08c, 0x0040, 0x15eb, 0x047e, 0x1078, 0x17a5, 0x047f,
- 0x2460, 0x0078, 0x15cb, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0,
- 0x15de, 0x7804, 0xa084, 0x6000, 0x0040, 0x15fc, 0xa086, 0x6000,
- 0x0040, 0x15fc, 0x0078, 0x15de, 0x7803, 0x0004, 0x7003, 0x0000,
- 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5bdb, 0x0078, 0x1672,
- 0x6808, 0xa005, 0x0040, 0x166e, 0x7000, 0xa005, 0x00c0, 0x1612,
- 0x0078, 0x166e, 0x700c, 0x7110, 0xa106, 0x00c0, 0x161b, 0x7004,
- 0xa406, 0x00c0, 0x166e, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040,
- 0x1628, 0x047e, 0x1078, 0x17a5, 0x047f, 0x2460, 0x0078, 0x1608,
- 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x161b, 0x2001, 0x0005,
- 0x2004, 0xd08c, 0x00c0, 0x1621, 0x7804, 0xa084, 0x6000, 0x0040,
- 0x163f, 0xa086, 0x6000, 0x0040, 0x163f, 0x0078, 0x161b, 0x7007,
- 0x0000, 0xa016, 0x2218, 0x7000, 0xa08e, 0x0001, 0x0040, 0x1660,
- 0xa08e, 0x0002, 0x00c0, 0x166e, 0x0c7e, 0x0e7e, 0x6818, 0x2060,
- 0x1078, 0x1c31, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0, 0x165c,
- 0x7308, 0x720c, 0x0078, 0x165e, 0x7310, 0x7214, 0x0e7f, 0x0c7f,
- 0x7820, 0xa318, 0x7824, 0xa211, 0x6810, 0xa300, 0x6812, 0x6814,
- 0xa201, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x2009, 0x0048,
- 0x1078, 0x5bdb, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e, 0x0e7e,
- 0x2071, 0x786a, 0x7000, 0xa086, 0x0000, 0x0040, 0x16b2, 0x7004,
- 0xac06, 0x00c0, 0x16a3, 0x2079, 0x0030, 0x7804, 0xd0fc, 0x00c0,
- 0x169f, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x1685, 0x7803,
- 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1691, 0x7803, 0x0002, 0x7803,
- 0x0009, 0x7003, 0x0003, 0x7007, 0x0000, 0x0078, 0x16a3, 0x1078,
- 0x17a5, 0x0078, 0x167a, 0x157e, 0x20a9, 0x0009, 0x2009, 0x7870,
- 0x2104, 0xac06, 0x00c0, 0x16ad, 0x200a, 0xa188, 0x0003, 0x00f0,
- 0x16a8, 0x157f, 0x0e7f, 0x0f7f, 0x007c, 0x700c, 0x7110, 0xa106,
- 0x00c0, 0x16bd, 0x7003, 0x0000, 0x007c, 0x2104, 0x7006, 0x2060,
- 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0x788b, 0x0048,
- 0x16cb, 0x2009, 0x7870, 0x7112, 0x8cff, 0x00c0, 0x16eb, 0x7908,
- 0xd1ec, 0x00c0, 0x16df, 0x1078, 0x197e, 0x0040, 0x16df, 0x7803,
- 0x0009, 0x7904, 0xd1fc, 0x0040, 0x16d9, 0x7803, 0x0006, 0x7007,
- 0x0000, 0x1078, 0x197e, 0x0040, 0x1712, 0x7803, 0x0019, 0x7003,
- 0x0003, 0x0078, 0x1712, 0x6010, 0x2068, 0x2d58, 0x6828, 0xa406,
- 0x00c0, 0x16f6, 0x682c, 0xa306, 0x0040, 0x16fa, 0x1078, 0x1c7c,
- 0x00c0, 0x16cf, 0x684c, 0xd0f4, 0x00c0, 0x16cf, 0x6824, 0x2050,
- 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x2009,
- 0x0011, 0x1078, 0x1713, 0x0040, 0x1711, 0x2009, 0x0001, 0x1078,
- 0x1713, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x17a0, 0xa03e, 0x2730,
- 0x6850, 0xd0fc, 0x00c0, 0x1732, 0x0d7e, 0x2804, 0xac68, 0x2900,
- 0x0079, 0x1722, 0x1782, 0x1742, 0x1742, 0x1782, 0x1782, 0x177a,
- 0x1782, 0x1742, 0x1782, 0x1748, 0x1748, 0x1782, 0x1782, 0x1782,
- 0x1771, 0x1748, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20,
- 0x0d7e, 0xd99c, 0x0040, 0x1785, 0x2804, 0xac68, 0x6f08, 0x6e0c,
- 0x0078, 0x1785, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x1785,
- 0x7b0c, 0xd3bc, 0x0040, 0x1769, 0x7004, 0x0e7e, 0x2070, 0x701c,
- 0x0e7f, 0xa086, 0x0008, 0x00c0, 0x1769, 0x7b08, 0xa39c, 0x0fff,
- 0x2d20, 0x0d7f, 0x0d7e, 0x6a14, 0x82ff, 0x00c0, 0x1764, 0x6810,
- 0xa302, 0x0048, 0x1764, 0x6b10, 0x2011, 0x0000, 0x2468, 0x0078,
- 0x176b, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078,
- 0x1785, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e,
- 0x00c0, 0x1782, 0x0d7f, 0x1078, 0x1c18, 0x00c0, 0x1713, 0xa00e,
- 0x0078, 0x17a0, 0x0d7f, 0x1078, 0x12d5, 0x7b22, 0x7a26, 0x7d32,
+ 0x0e7e, 0x2071, 0x6f00, 0x127e, 0x2091, 0x8000, 0x7098, 0x8001,
+ 0x00c8, 0x12ed, 0xa06e, 0x0078, 0x12f6, 0x709a, 0x702c, 0x2068,
+ 0x2d04, 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f,
+ 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x6f00, 0x702c,
+ 0x206a, 0x2d00, 0x702e, 0x7098, 0x8000, 0x709a, 0x127f, 0x0e7f,
+ 0x007c, 0x8dff, 0x0040, 0x1315, 0x6804, 0x6807, 0x0000, 0x007e,
+ 0x1078, 0x12f9, 0x0d7f, 0x0078, 0x1309, 0x007c, 0x0e7e, 0x2071,
+ 0x6f00, 0x7098, 0xa08a, 0x0010, 0xa00d, 0x0e7f, 0x007c, 0x0e7e,
+ 0x2071, 0x70d9, 0x7007, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000,
+ 0x2071, 0x0000, 0x7010, 0xa085, 0x8004, 0x7012, 0x0e7f, 0x007c,
+ 0x0e7e, 0x2270, 0x700b, 0x0000, 0x2071, 0x70d9, 0x7018, 0xa088,
+ 0x70e2, 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005,
+ 0x00c0, 0x1348, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1359, 0x0f7f,
+ 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x70d9, 0x7004, 0xa005, 0x00c0,
+ 0x1357, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x1359, 0x0f7f, 0x0e7f,
+ 0x007c, 0x7000, 0x0079, 0x135c, 0x1360, 0x13ca, 0x13e7, 0x13e7,
+ 0x7018, 0x711c, 0xa106, 0x00c0, 0x1368, 0x7007, 0x0000, 0x007c,
+ 0x0d7e, 0xa180, 0x70e2, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c,
+ 0x0007, 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836,
+ 0x682c, 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016,
+ 0x6804, 0x0d7f, 0xd084, 0x0040, 0x138a, 0x7007, 0x0001, 0x1078,
+ 0x138f, 0x007c, 0x7007, 0x0002, 0x1078, 0x13a5, 0x007c, 0x017e,
+ 0x027e, 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x139a,
+ 0x2110, 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020,
+ 0x7803, 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e,
+ 0x147e, 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026,
+ 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x13b9, 0x2110,
+ 0xa006, 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020,
+ 0x7803, 0x0001, 0x3300, 0x7016, 0x157f, 0x147f, 0x137f, 0x027f,
+ 0x017f, 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0x6fe5, 0x20a1,
+ 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091,
+ 0x8000, 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002,
+ 0x700b, 0x6fe0, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e,
+ 0x147e, 0x157e, 0x2001, 0x7014, 0x209c, 0x20a1, 0x0014, 0x7803,
+ 0x0026, 0x2001, 0x7015, 0x20ac, 0x53a6, 0x2099, 0x7016, 0x20a1,
+ 0x0018, 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091,
+ 0x8000, 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002,
+ 0x700b, 0x7011, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e,
+ 0x0e7e, 0x2071, 0x70d9, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803,
+ 0x0002, 0xd1fc, 0x0040, 0x142a, 0xa18c, 0x0700, 0x0040, 0x1427,
+ 0x7008, 0xa080, 0x0002, 0x2003, 0x0200, 0x0078, 0x142a, 0x7004,
+ 0x1079, 0x142e, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x1359, 0x1436,
+ 0x1458, 0x1472, 0x149b, 0x1434, 0x0078, 0x1434, 0x137e, 0x147e,
+ 0x157e, 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x7010,
+ 0x20a8, 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f, 0x137f, 0x700c,
+ 0xa005, 0x0040, 0x145f, 0x1078, 0x138f, 0x007c, 0x7008, 0xa080,
+ 0x0002, 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x1359, 0x007c,
+ 0x700c, 0xa005, 0x0040, 0x145f, 0x1078, 0x13a5, 0x007c, 0x0d7e,
+ 0x7008, 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e,
+ 0x783c, 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078,
+ 0x1359, 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x6fe3, 0x2004,
+ 0xa080, 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9,
+ 0x0020, 0x53a5, 0x2001, 0x6fe5, 0x2004, 0xd0bc, 0x0040, 0x1491,
+ 0x2001, 0x6fee, 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020,
+ 0x53a5, 0x157f, 0x147f, 0x137f, 0x7007, 0x0000, 0x1078, 0x39c1,
+ 0x1078, 0x1359, 0x007c, 0x2001, 0x7013, 0x2003, 0x0100, 0x7007,
+ 0x0000, 0x1078, 0x1359, 0x007c, 0x127e, 0x2091, 0x2100, 0x2079,
+ 0x0030, 0x2071, 0x70ea, 0x7003, 0x0000, 0x700f, 0x70f0, 0x7013,
+ 0x70f0, 0x780f, 0x0070, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007,
+ 0x0079, 0x14ba, 0x14c2, 0x1508, 0x14c2, 0x14c2, 0x14c2, 0x14ed,
+ 0x14d1, 0x14c6, 0xa085, 0x0001, 0x0078, 0x1522, 0x684c, 0xd0bc,
+ 0x0040, 0x14c2, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078,
+ 0x1510, 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x14c2, 0x684c,
+ 0xd0bc, 0x0040, 0x14c2, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804,
+ 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1bd1,
+ 0x2004, 0x6832, 0x6858, 0x0078, 0x1518, 0xa18c, 0x00ff, 0xa186,
+ 0x0015, 0x00c0, 0x14c2, 0x684c, 0xd0ac, 0x0040, 0x14c2, 0x6804,
+ 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1bd1,
+ 0x2004, 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x1518,
+ 0x684c, 0xd0ac, 0x0040, 0x14c2, 0xa006, 0x682e, 0x682a, 0x6858,
+ 0xa18c, 0x000f, 0xa188, 0x1bd1, 0x210c, 0x6932, 0x2d08, 0x691a,
+ 0x6826, 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912,
+ 0x6980, 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001,
+ 0x020a, 0x2004, 0x82ff, 0x0040, 0x153d, 0xa280, 0x0004, 0x0d7e,
+ 0x206c, 0x684c, 0xd0dc, 0x00c0, 0x1539, 0x1078, 0x14b5, 0x10c0,
+ 0x1286, 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e,
+ 0x027e, 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005,
+ 0x00c0, 0x1551, 0x7206, 0x2001, 0x1565, 0x007e, 0x2260, 0x0078,
+ 0x167d, 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108,
+ 0xa182, 0x710b, 0x0048, 0x155e, 0x2009, 0x70f0, 0x710e, 0x7000,
+ 0xa005, 0x00c0, 0x1565, 0x1078, 0x1666, 0x127f, 0x007c, 0x127e,
+ 0x027e, 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100, 0x007f, 0x047f,
+ 0x037f, 0x027f, 0x0d7e, 0x0c7e, 0x2460, 0x6110, 0x2168, 0x6a62,
+ 0x6b5e, 0xa005, 0x0040, 0x15b9, 0x6808, 0xa005, 0x0040, 0x161f,
+ 0x7000, 0xa005, 0x00c0, 0x1586, 0x0078, 0x15b3, 0x700c, 0x7110,
+ 0xa106, 0x00c0, 0x1623, 0x7004, 0xa406, 0x00c0, 0x15b3, 0x2001,
+ 0x0005, 0x2004, 0xd08c, 0x0040, 0x159c, 0x047e, 0x1078, 0x1735,
+ 0x047f, 0x2460, 0x0078, 0x157c, 0x2001, 0x0207, 0x2004, 0xd09c,
+ 0x00c0, 0x158f, 0x7804, 0xa084, 0x6000, 0x0040, 0x15ad, 0xa086,
+ 0x6000, 0x0040, 0x15ad, 0x0078, 0x158f, 0x7803, 0x0004, 0x7003,
+ 0x0000, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x55c8, 0x0078,
+ 0x1623, 0x6808, 0xa005, 0x0040, 0x161f, 0x7000, 0xa005, 0x00c0,
+ 0x15c3, 0x0078, 0x161f, 0x700c, 0x7110, 0xa106, 0x00c0, 0x15cc,
+ 0x7004, 0xa406, 0x00c0, 0x161f, 0x2001, 0x0005, 0x2004, 0xd08c,
+ 0x0040, 0x15d9, 0x047e, 0x1078, 0x1735, 0x047f, 0x2460, 0x0078,
+ 0x15b9, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x15cc, 0x2001,
+ 0x0005, 0x2004, 0xd08c, 0x00c0, 0x15d2, 0x7804, 0xa084, 0x6000,
+ 0x0040, 0x15f0, 0xa086, 0x6000, 0x0040, 0x15f0, 0x0078, 0x15cc,
+ 0x7007, 0x0000, 0xa016, 0x2218, 0x7000, 0xa08e, 0x0001, 0x0040,
+ 0x1611, 0xa08e, 0x0002, 0x00c0, 0x161f, 0x0c7e, 0x0e7e, 0x6818,
+ 0x2060, 0x1078, 0x1ba6, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0,
+ 0x160d, 0x7308, 0x720c, 0x0078, 0x160f, 0x7310, 0x7214, 0x0e7f,
+ 0x0c7f, 0x7820, 0xa318, 0x7824, 0xa211, 0x6810, 0xa300, 0x6812,
+ 0x6814, 0xa201, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x2009,
+ 0x0048, 0x1078, 0x55c8, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e,
+ 0x0e7e, 0x2071, 0x70ea, 0x7000, 0xa086, 0x0000, 0x0040, 0x1663,
+ 0x7004, 0xac06, 0x00c0, 0x1654, 0x2079, 0x0030, 0x7804, 0xd0fc,
+ 0x00c0, 0x1650, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x1636,
+ 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1642, 0x7803, 0x0002,
+ 0x7803, 0x0009, 0x7003, 0x0003, 0x7007, 0x0000, 0x0078, 0x1654,
+ 0x1078, 0x1735, 0x0078, 0x162b, 0x157e, 0x20a9, 0x0009, 0x2009,
+ 0x70f0, 0x2104, 0xac06, 0x00c0, 0x165e, 0x200a, 0xa188, 0x0003,
+ 0x00f0, 0x1659, 0x157f, 0x0e7f, 0x0f7f, 0x007c, 0x700c, 0x7110,
+ 0xa106, 0x00c0, 0x166e, 0x7003, 0x0000, 0x007c, 0x2104, 0x7006,
+ 0x2060, 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0x710b,
+ 0x0048, 0x167c, 0x2009, 0x70f0, 0x7112, 0x8cff, 0x00c0, 0x169c,
+ 0x7908, 0xd1ec, 0x00c0, 0x1690, 0x1078, 0x18f3, 0x0040, 0x1690,
+ 0x7803, 0x0009, 0x7904, 0xd1fc, 0x0040, 0x168a, 0x7803, 0x0006,
+ 0x7007, 0x0000, 0x1078, 0x18f3, 0x0040, 0x16c3, 0x7803, 0x0019,
+ 0x7003, 0x0003, 0x0078, 0x16c3, 0x6010, 0x2068, 0x2d58, 0x6828,
+ 0xa406, 0x00c0, 0x16a7, 0x682c, 0xa306, 0x0040, 0x16ab, 0x1078,
+ 0x1bf1, 0x00c0, 0x1680, 0x684c, 0xd0f4, 0x00c0, 0x1680, 0x6824,
+ 0x2050, 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f,
+ 0x2009, 0x0011, 0x1078, 0x16c4, 0x0040, 0x16c2, 0x2009, 0x0001,
+ 0x1078, 0x16c4, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x1730, 0xa03e,
+ 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x16e3, 0x0d7e, 0x2804, 0xac68,
+ 0x2900, 0x0079, 0x16d3, 0x1712, 0x16f3, 0x16f3, 0x1712, 0x1712,
+ 0x170a, 0x1712, 0x16f3, 0x1712, 0x16f9, 0x16f9, 0x1712, 0x1712,
+ 0x1712, 0x1701, 0x16f9, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c,
+ 0x6c20, 0x0d7e, 0xd99c, 0x0040, 0x1715, 0x2804, 0xac68, 0x6f08,
+ 0x6e0c, 0x0078, 0x1715, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078,
+ 0x1715, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078,
+ 0x1715, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e,
+ 0x00c0, 0x1712, 0x0d7f, 0x1078, 0x1b8d, 0x00c0, 0x16c4, 0xa00e,
+ 0x0078, 0x1730, 0x0d7f, 0x1078, 0x1286, 0x7b22, 0x7a26, 0x7d32,
0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, 0x7002, 0x0d7f,
0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x2300, 0x6b10,
- 0xa302, 0x6812, 0x2200, 0x6a14, 0xa203, 0x6816, 0x1078, 0x1c18,
- 0x007c, 0x1078, 0x12d5, 0x1078, 0x12d5, 0x127e, 0x2091, 0x2100,
+ 0xa302, 0x6812, 0x2200, 0x6a14, 0xa203, 0x6816, 0x1078, 0x1b8d,
+ 0x007c, 0x1078, 0x1286, 0x1078, 0x1286, 0x127e, 0x2091, 0x2100,
0x007e, 0x017e, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002,
- 0xa184, 0x0700, 0x00c0, 0x17a3, 0xa184, 0x0003, 0xa086, 0x0003,
- 0x0040, 0x17a3, 0x7000, 0x0079, 0x17bd, 0x17c5, 0x17c7, 0x189b,
- 0x18ff, 0x1916, 0x17c5, 0x17c5, 0x17c5, 0x1078, 0x12d5, 0x8001,
- 0x7002, 0xa184, 0x0880, 0x00c0, 0x17dc, 0x8aff, 0x0040, 0x183b,
- 0x2009, 0x0001, 0x1078, 0x1713, 0x0040, 0x1928, 0x2009, 0x0001,
- 0x1078, 0x1713, 0x0078, 0x1928, 0x7803, 0x0004, 0x7003, 0x0000,
- 0xd1dc, 0x0040, 0x1827, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x7820,
+ 0xa184, 0x0700, 0x00c0, 0x1733, 0xa184, 0x0003, 0xa086, 0x0003,
+ 0x0040, 0x1733, 0x7000, 0x0079, 0x174d, 0x1755, 0x1757, 0x1826,
+ 0x1888, 0x189f, 0x1755, 0x1755, 0x1755, 0x1078, 0x1286, 0x8001,
+ 0x7002, 0xa184, 0x0880, 0x00c0, 0x176c, 0x8aff, 0x0040, 0x17c6,
+ 0x2009, 0x0001, 0x1078, 0x16c4, 0x0040, 0x18b1, 0x2009, 0x0001,
+ 0x1078, 0x16c4, 0x0078, 0x18b1, 0x7803, 0x0004, 0x7003, 0x0000,
+ 0xd1dc, 0x0040, 0x17b7, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x7820,
0x686e, 0xa31a, 0x7824, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x7820,
0x6910, 0xa100, 0x6812, 0x7824, 0x6914, 0xa101, 0x6816, 0x037f,
- 0x027f, 0x7830, 0x681e, 0x7834, 0x6822, 0x1078, 0x1c31, 0x2a00,
+ 0x027f, 0x7830, 0x681e, 0x7834, 0x6822, 0x1078, 0x1ba6, 0x2a00,
0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x6850,
- 0xc0fd, 0x6852, 0x6808, 0x8001, 0x680a, 0x00c0, 0x1819, 0x684c,
- 0xd0e4, 0x0040, 0x1819, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
- 0x5bdb, 0x7808, 0xd0ec, 0x00c0, 0x1823, 0x7803, 0x0009, 0x7003,
- 0x0004, 0x0078, 0x1928, 0x1078, 0x16b5, 0x0078, 0x1928, 0x057e,
- 0x7d0c, 0xd5bc, 0x00c0, 0x182e, 0x1078, 0x753d, 0x057f, 0x1078,
- 0x192c, 0x697c, 0x6912, 0x6980, 0x6916, 0x7803, 0x0009, 0x7003,
- 0x0003, 0x0078, 0x1928, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005,
- 0x00c0, 0x1853, 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0,
- 0x184f, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5bdb, 0x1078,
- 0x16b5, 0x0078, 0x1928, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914,
- 0xa183, 0x0000, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa188,
- 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004,
- 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078, 0x195b, 0x7803, 0x0004,
- 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, 0x0040, 0x1874,
- 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x0070, 0x7004, 0x7007,
- 0x0000, 0x2060, 0x2009, 0x0048, 0x1078, 0x5bdb, 0x1078, 0x197e,
- 0x0040, 0x184f, 0x7908, 0xd1ec, 0x00c0, 0x1892, 0x2009, 0x0009,
- 0x0078, 0x1894, 0x2009, 0x0019, 0x7902, 0x7803, 0x0009, 0x7003,
- 0x0003, 0x0078, 0x1928, 0x8001, 0x7002, 0xd194, 0x0040, 0x18ad,
- 0x7804, 0xd0fc, 0x00c0, 0x17ad, 0x8aff, 0x0040, 0x1928, 0x2009,
- 0x0001, 0x1078, 0x1713, 0x0078, 0x1928, 0xa184, 0x0880, 0x00c0,
- 0x18ba, 0x8aff, 0x0040, 0x1928, 0x2009, 0x0001, 0x1078, 0x1713,
- 0x0078, 0x1928, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040,
- 0x18ee, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1c31, 0x0d7e,
- 0x0f7e, 0x2d78, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x18de,
- 0x6808, 0x2008, 0xa31a, 0x680c, 0xa213, 0x7810, 0xa100, 0x7812,
- 0x690c, 0x7814, 0xa101, 0x7816, 0x0078, 0x18ea, 0x6810, 0x2008,
- 0xa31a, 0x6814, 0xa213, 0x7810, 0xa100, 0x7812, 0x6914, 0x7814,
- 0xa101, 0x7816, 0x0f7f, 0x0d7f, 0x0078, 0x17e7, 0x057e, 0x7d0c,
- 0x1078, 0x753d, 0x057f, 0x1078, 0x192c, 0x697c, 0x6912, 0x6980,
- 0x6916, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x1928, 0x7803,
- 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x1912, 0x6808,
- 0x8001, 0x680a, 0x00c0, 0x1912, 0x7004, 0x2060, 0x2009, 0x0048,
- 0x1078, 0x5bdb, 0x1078, 0x16b5, 0x0078, 0x1928, 0x7803, 0x0004,
- 0x7003, 0x0000, 0x7004, 0x2060, 0x6010, 0xa005, 0x0040, 0x1912,
- 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078, 0x16cc,
- 0x017f, 0x007f, 0x127f, 0x007c, 0x1078, 0x193d, 0x20e1, 0x9028,
- 0x700f, 0x7870, 0x7013, 0x7870, 0x2001, 0x015d, 0x200c, 0x810a,
- 0x2102, 0x2001, 0x0138, 0x2202, 0x007c, 0x2001, 0x0138, 0x2014,
- 0x2003, 0x0000, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc,
- 0x00c0, 0x195a, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0,
- 0x195a, 0x2001, 0x0111, 0x201c, 0x83ff, 0x00c0, 0x195a, 0x8421,
- 0x00c0, 0x1944, 0x007c, 0x3c00, 0x007e, 0x0e7e, 0x2071, 0x0200,
- 0x7808, 0xa084, 0xf000, 0xa10d, 0x1078, 0x193d, 0x20e1, 0x7000,
- 0x7324, 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f,
- 0x712e, 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001,
- 0x0138, 0x2202, 0x0e7f, 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e,
- 0x7908, 0xa18c, 0x0fff, 0xa182, 0x0009, 0x0048, 0x198b, 0xa085,
- 0x0001, 0x0078, 0x199d, 0x2001, 0x020a, 0x81ff, 0x0040, 0x1996,
- 0x20e1, 0x6000, 0x200c, 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000,
- 0x200c, 0x200c, 0x7003, 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c,
- 0x0e7e, 0x2071, 0x788b, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e,
- 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1a22, 0x6934,
- 0xa184, 0x0007, 0x0079, 0x19b4, 0x19bc, 0x1a0d, 0x19bc, 0x19bc,
- 0x19bc, 0x19f2, 0x19cf, 0x19be, 0x1078, 0x12d5, 0x684c, 0xd0b4,
- 0x0040, 0x1b24, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812,
- 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1a15, 0x6834,
- 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x19bc, 0x684c, 0xd0b4,
- 0x0040, 0x1b24, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812,
- 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d,
- 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004, 0x6832, 0x6958,
- 0x0078, 0x1a1e, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x1a22,
- 0x684c, 0xd0b4, 0x0040, 0x1b24, 0x6804, 0x681a, 0xa080, 0x000d,
- 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004, 0x6832, 0x6958,
- 0xa006, 0x682e, 0x682a, 0x0078, 0x1a1e, 0x684c, 0xd0b4, 0x0040,
- 0x17a1, 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834,
- 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004, 0x6832, 0x6926, 0x684c,
- 0xc0dd, 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804,
- 0xd0fc, 0x10c0, 0x1b28, 0x0e7e, 0x0d7e, 0x2071, 0x788b, 0x7000,
- 0xa005, 0x00c0, 0x1a9e, 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c,
- 0x7004, 0x2068, 0x6818, 0x0d7e, 0x2068, 0x686c, 0x7812, 0x6890,
- 0x0f7e, 0x20e1, 0x9040, 0x2079, 0x0200, 0x781a, 0x2079, 0x0100,
- 0x8004, 0x78d6, 0x0f7f, 0x0d7f, 0x2b68, 0x6824, 0x2050, 0x6818,
- 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x6908, 0xa184,
- 0x0007, 0x0040, 0x1a60, 0x017e, 0x2009, 0x0008, 0xa102, 0x017f,
- 0xa108, 0x791a, 0x7116, 0x701e, 0x680c, 0xa081, 0x0000, 0x781e,
- 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106,
- 0x00c0, 0x1a77, 0x6928, 0x6810, 0xa106, 0x0040, 0x1a84, 0x037e,
- 0x047e, 0x6b14, 0x6c10, 0x1078, 0x1c7c, 0x047f, 0x037f, 0x0040,
- 0x1a84, 0x0c7f, 0x0078, 0x1a9e, 0x8aff, 0x00c0, 0x1a8c, 0x0c7f,
- 0xa085, 0x0001, 0x0078, 0x1a9e, 0x127e, 0x2091, 0x8000, 0x2079,
- 0x0020, 0x2009, 0x0001, 0x1078, 0x1aa2, 0x0040, 0x1a9b, 0x2009,
- 0x0001, 0x1078, 0x1aa2, 0x127f, 0x0c7f, 0xa006, 0x0d7f, 0x0e7f,
- 0x0f7f, 0x007c, 0x077e, 0x067e, 0x057e, 0x047e, 0x037e, 0x027e,
- 0x8aff, 0x0040, 0x1b1d, 0x700c, 0x7214, 0xa202, 0x7010, 0x7218,
- 0xa203, 0x0048, 0x1b1c, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0,
- 0x1acf, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1abf, 0x1afe,
- 0x1adf, 0x1adf, 0x1afe, 0x1afe, 0x1af6, 0x1afe, 0x1adf, 0x1afe,
- 0x1ae5, 0x1ae5, 0x1afe, 0x1afe, 0x1afe, 0x1aed, 0x1ae5, 0xc0fc,
- 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1b02,
- 0x0d7e, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1b01, 0x6b08,
- 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x1b01, 0x6b10, 0x6a14, 0x6d00,
- 0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x1b01, 0x0d7f, 0x0d7e, 0x6834,
- 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1afe, 0x0d7f, 0x1078,
- 0x1c18, 0x00c0, 0x1aa8, 0xa00e, 0x0078, 0x1b1d, 0x0d7f, 0x1078,
- 0x12d5, 0x0d7f, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e,
- 0x7902, 0x7000, 0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c,
- 0xa201, 0x682e, 0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012,
- 0x1078, 0x1c18, 0x0078, 0x1b1d, 0xa006, 0x027f, 0x037f, 0x047f,
- 0x057f, 0x067f, 0x077f, 0x007c, 0x1078, 0x12d5, 0x1078, 0x12d5,
- 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e, 0x0e7e, 0x0d7e,
- 0x0c7e, 0x2079, 0x0020, 0x2071, 0x788b, 0x2b68, 0x6818, 0x2060,
- 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, 0x1b26, 0x7000,
- 0x0079, 0x1b42, 0x1be9, 0x1b46, 0x1bb6, 0x1be7, 0x8001, 0x7002,
- 0xd19c, 0x00c0, 0x1b5a, 0x8aff, 0x0040, 0x1b79, 0x2009, 0x0001,
- 0x1078, 0x1aa2, 0x0040, 0x1be9, 0x2009, 0x0001, 0x1078, 0x1aa2,
- 0x0078, 0x1be9, 0x7803, 0x0004, 0xd194, 0x0040, 0x1b6a, 0x6850,
- 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1b6f, 0x684c, 0xc0f5, 0x684e,
- 0x0078, 0x1b6f, 0x1078, 0x1c31, 0x6850, 0xc0fd, 0x6852, 0x2a00,
- 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0078,
- 0x1be9, 0x711c, 0x81ff, 0x0040, 0x1b8f, 0x7918, 0x7922, 0x7827,
- 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, 0x700c, 0xa100,
- 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, 0x1be9, 0x0f7e,
- 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14,
- 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0,
- 0x1b9d, 0x79c8, 0x007f, 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102,
- 0x78c6, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f,
- 0x7803, 0x0008, 0x7003, 0x0000, 0x0078, 0x1be9, 0x8001, 0x7002,
- 0xd194, 0x0040, 0x1bcb, 0x7804, 0xd0fc, 0x00c0, 0x1b38, 0xd19c,
- 0x00c0, 0x1be5, 0x8aff, 0x0040, 0x1be9, 0x2009, 0x0001, 0x1078,
- 0x1aa2, 0x0078, 0x1be9, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078,
- 0x1c31, 0x0d7e, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1bde,
- 0x6808, 0xa31a, 0x680c, 0xa213, 0x0078, 0x1be2, 0x6810, 0xa31a,
- 0x6814, 0xa213, 0x0d7f, 0x0078, 0x1b6a, 0x0078, 0x1b6a, 0x1078,
- 0x12d5, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f,
- 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x788b, 0x7000, 0xa086, 0x0000,
- 0x0040, 0x1c15, 0x2079, 0x0020, 0x20e1, 0x9040, 0x7804, 0xd0fc,
- 0x0040, 0x1bfc, 0x1078, 0x1b28, 0x7000, 0xa086, 0x0000, 0x00c0,
- 0x1bfc, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1c0b, 0x20e1,
- 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x0f7f, 0x007c,
- 0x8840, 0x2804, 0xa005, 0x00c0, 0x1c2c, 0x6004, 0xa005, 0x0040,
- 0x1c2e, 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x1c5c,
- 0x2044, 0x88ff, 0x1040, 0x12d5, 0x8a51, 0x007c, 0x2051, 0x0000,
- 0x007c, 0x8a50, 0x8841, 0x2804, 0xa005, 0x00c0, 0x1c4b, 0x2c00,
- 0xad06, 0x0040, 0x1c40, 0x6000, 0xa005, 0x00c0, 0x1c40, 0x2d00,
- 0x2060, 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, 0x1c6c, 0x2044,
- 0x88ff, 0x1040, 0x12d5, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019,
- 0x001d, 0x0021, 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b,
- 0x0021, 0x0027, 0x0000, 0x0000, 0x0000, 0x1c51, 0x1c4d, 0x0000,
- 0x0000, 0x1c5b, 0x0000, 0x1c51, 0x0000, 0x1c58, 0x1c55, 0x0000,
- 0x0000, 0x0000, 0x1c5b, 0x1c58, 0x0000, 0x1c53, 0x1c53, 0x0000,
- 0x0000, 0x1c5b, 0x0000, 0x1c53, 0x0000, 0x1c59, 0x1c59, 0x0000,
- 0x0000, 0x0000, 0x1c5b, 0x1c59, 0x0a7e, 0x097e, 0x087e, 0x6858,
- 0xa055, 0x0040, 0x1d19, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0,
- 0x1c5c, 0xa986, 0x0007, 0x0040, 0x1c95, 0xa986, 0x000e, 0x0040,
- 0x1c95, 0xa986, 0x000f, 0x00c0, 0x1c99, 0x605c, 0xa422, 0x6060,
- 0xa31a, 0x2804, 0xa045, 0x00c0, 0x1ca7, 0x0050, 0x1ca1, 0x0078,
- 0x1d19, 0x6004, 0xa065, 0x0040, 0x1d19, 0x0078, 0x1c84, 0x2804,
- 0xa005, 0x0040, 0x1cc5, 0xac68, 0xd99c, 0x00c0, 0x1cb5, 0x6808,
- 0xa422, 0x680c, 0xa31b, 0x0078, 0x1cb9, 0x6810, 0xa422, 0x6814,
- 0xa31b, 0x0048, 0x1ce4, 0x2300, 0xa405, 0x0040, 0x1ccb, 0x8a51,
- 0x0040, 0x1d19, 0x8840, 0x0078, 0x1ca7, 0x6004, 0xa065, 0x0040,
- 0x1d19, 0x0078, 0x1c84, 0x8a51, 0x0040, 0x1d19, 0x8840, 0x2804,
- 0xa005, 0x00c0, 0x1cde, 0x6004, 0xa065, 0x0040, 0x1d19, 0x6034,
- 0xa0cc, 0x000f, 0xa9c0, 0x1c5c, 0x2804, 0x2040, 0x2b68, 0x6850,
- 0xc0fc, 0x6852, 0x0078, 0x1d11, 0x8422, 0x8420, 0x831a, 0xa399,
- 0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0,
- 0x1cff, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048,
- 0x12d5, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x1d0b, 0x6910,
- 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x12d5, 0x6800,
- 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd,
- 0x6852, 0x2c00, 0x681a, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078,
- 0x1d1e, 0x087f, 0x097f, 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001,
- 0x0005, 0x2004, 0xa084, 0x0007, 0x0079, 0x1d26, 0x1d2e, 0x1d2f,
- 0x1d32, 0x1d35, 0x1d3a, 0x1d3d, 0x1d42, 0x1d47, 0x007c, 0x1078,
- 0x1b28, 0x007c, 0x1078, 0x17a5, 0x007c, 0x1078, 0x17a5, 0x1078,
- 0x1b28, 0x007c, 0x1078, 0x145e, 0x007c, 0x1078, 0x1b28, 0x1078,
- 0x145e, 0x007c, 0x1078, 0x17a5, 0x1078, 0x145e, 0x007c, 0x1078,
- 0x17a5, 0x1078, 0x1b28, 0x1078, 0x145e, 0x007c, 0x127e, 0x2091,
- 0x2300, 0x2079, 0x0200, 0x2071, 0x7b80, 0x2069, 0x7600, 0x2009,
- 0x0004, 0x7912, 0x7817, 0x0004, 0x1078, 0x202c, 0x781b, 0x0002,
- 0x20e1, 0x8700, 0x127f, 0x007c, 0x127e, 0x2091, 0x2300, 0x781c,
- 0xa084, 0x0007, 0x0079, 0x1d6c, 0x1d90, 0x1d74, 0x1d78, 0x1d7c,
- 0x1d82, 0x1d86, 0x1d8a, 0x1d8e, 0x1078, 0x412f, 0x0078, 0x1d90,
- 0x1078, 0x415e, 0x0078, 0x1d90, 0x1078, 0x412f, 0x1078, 0x415e,
- 0x0078, 0x1d90, 0x1078, 0x1d92, 0x0078, 0x1d90, 0x1078, 0x1d92,
- 0x0078, 0x1d90, 0x1078, 0x1d92, 0x0078, 0x1d90, 0x1078, 0x1d92,
- 0x127f, 0x007c, 0x007e, 0x017e, 0x027e, 0x7930, 0xa184, 0x0003,
- 0x0040, 0x1d9c, 0x1078, 0x12d5, 0xa184, 0x0030, 0x0040, 0x1dad,
- 0x6a00, 0xa286, 0x0003, 0x00c0, 0x1da7, 0x1078, 0x12d5, 0x1078,
- 0x3535, 0x20e1, 0x9010, 0x0078, 0x1db9, 0xa184, 0x00c0, 0x0040,
- 0x1db3, 0x1078, 0x12d5, 0xa184, 0x0300, 0x0040, 0x1db9, 0x20e1,
- 0x9020, 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e,
- 0x0f7e, 0x2071, 0x7600, 0x7128, 0x2001, 0x7823, 0x2102, 0x2001,
- 0x782b, 0x2102, 0xa182, 0x0211, 0x00c8, 0x1dd2, 0x2009, 0x0008,
- 0x0078, 0x1dfc, 0xa182, 0x0259, 0x00c8, 0x1dda, 0x2009, 0x0007,
- 0x0078, 0x1dfc, 0xa182, 0x02c1, 0x00c8, 0x1de2, 0x2009, 0x0006,
- 0x0078, 0x1dfc, 0xa182, 0x0349, 0x00c8, 0x1dea, 0x2009, 0x0005,
- 0x0078, 0x1dfc, 0xa182, 0x0421, 0x00c8, 0x1df2, 0x2009, 0x0004,
- 0x0078, 0x1dfc, 0xa182, 0x0581, 0x00c8, 0x1dfa, 0x2009, 0x0003,
- 0x0078, 0x1dfc, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0xa182,
- 0x0005, 0x00c8, 0x1e06, 0x7916, 0x0078, 0x1e08, 0x7817, 0x0004,
- 0x1078, 0x202c, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091,
- 0x2200, 0x2061, 0x0100, 0x2071, 0x7600, 0x6024, 0x6026, 0x6033,
- 0x00ef, 0x60e7, 0x0000, 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b,
- 0xf7f7, 0x6043, 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007,
- 0x0caf, 0x600f, 0x00ff, 0x602b, 0x002f, 0x127f, 0x007c, 0x2001,
- 0x762d, 0x2003, 0x0000, 0x2001, 0x762c, 0x2003, 0x0001, 0x007c,
- 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x6124, 0xa184,
- 0x002c, 0x00c0, 0x1e47, 0xa184, 0x0007, 0x0079, 0x1e4d, 0xa195,
- 0x0004, 0xa284, 0x0007, 0x0079, 0x1e4d, 0x1e79, 0x1e55, 0x1e59,
- 0x1e5d, 0x1e63, 0x1e67, 0x1e6d, 0x1e73, 0x1078, 0x4698, 0x0078,
- 0x1e79, 0x1078, 0x4787, 0x0078, 0x1e79, 0x1078, 0x4787, 0x1078,
- 0x4698, 0x0078, 0x1e79, 0x1078, 0x1e7e, 0x0078, 0x1e79, 0x1078,
- 0x4698, 0x1078, 0x1e7e, 0x0078, 0x1e79, 0x1078, 0x4787, 0x1078,
- 0x1e7e, 0x0078, 0x1e79, 0x1078, 0x4787, 0x1078, 0x4698, 0x1078,
- 0x1e7e, 0x027f, 0x017f, 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040,
- 0x1f32, 0x017e, 0x047e, 0x0c7e, 0x644c, 0x74ba, 0xa48c, 0xff00,
- 0xa196, 0xff00, 0x0040, 0x1ead, 0x6030, 0xa084, 0x00ff, 0x810f,
- 0xa116, 0x0040, 0x1ead, 0x7130, 0xd18c, 0x00c0, 0x1ead, 0x2011,
- 0x7652, 0x2214, 0xd2ec, 0x0040, 0x1ea1, 0xc18d, 0x7132, 0x0078,
- 0x1ead, 0x6240, 0xa294, 0x0010, 0x0040, 0x1eef, 0x6248, 0xa294,
- 0xff00, 0xa296, 0xff00, 0x00c0, 0x1eef, 0x037e, 0x73b8, 0x2011,
- 0x8013, 0x1078, 0x2d02, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011,
- 0x7652, 0x220c, 0xd1a4, 0x0040, 0x1ed7, 0x017e, 0x2009, 0x0001,
- 0x2011, 0x0100, 0x1078, 0x4666, 0x2019, 0x000e, 0x1078, 0x7484,
- 0xa484, 0x00ff, 0xa080, 0x2303, 0x200c, 0xa18c, 0xff00, 0x810f,
- 0x8127, 0xa006, 0x2009, 0x000e, 0x1078, 0x74ec, 0x017f, 0xd1ac,
- 0x00c0, 0x1ee0, 0x2019, 0x0004, 0x1078, 0x226d, 0x0078, 0x1eef,
- 0x157e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x1078, 0x37d7, 0x00c0,
- 0x1eeb, 0x1078, 0x35db, 0x8108, 0x00f0, 0x1ee5, 0x157f, 0x0c7f,
- 0x047f, 0x6043, 0x0000, 0x2009, 0x00f7, 0x1078, 0x359e, 0x0f7e,
- 0x2079, 0x7849, 0x783c, 0xa086, 0x0000, 0x0040, 0x1f07, 0x6027,
- 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x0000, 0x0f7f,
- 0x2011, 0x0003, 0x1078, 0x5772, 0x2011, 0x0002, 0x1078, 0x577c,
- 0x1078, 0x5688, 0x1078, 0x459d, 0x037e, 0x2019, 0x0000, 0x1078,
- 0x571a, 0x037f, 0x60e3, 0x0000, 0x017f, 0x2001, 0x7600, 0x2014,
- 0xa296, 0x0004, 0x00c0, 0x1f2a, 0xd19c, 0x00c0, 0x1f2a, 0x6228,
- 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0x7620, 0x2003, 0x0000,
- 0x6027, 0x0020, 0xd194, 0x0040, 0x1fd3, 0x0f7e, 0x2079, 0x7849,
- 0x783c, 0xa086, 0x0001, 0x00c0, 0x1f56, 0x017e, 0x6027, 0x0004,
- 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x1000, 0x7803, 0x0000,
- 0x2079, 0x7836, 0x7807, 0x0000, 0x7833, 0x0000, 0x1078, 0x4c2c,
- 0x1078, 0x4cec, 0x017f, 0x0f7f, 0x0078, 0x1fd3, 0x0f7f, 0x017e,
- 0x6220, 0xd2b4, 0x0040, 0x1f8b, 0x1078, 0x459d, 0x1078, 0x5534,
- 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
- 0x0040, 0x1f6e, 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e,
- 0x2061, 0x7836, 0x6028, 0xa09a, 0x0002, 0x00c8, 0x1f7e, 0x8000,
- 0x602a, 0x0c7f, 0x1078, 0x5526, 0x0078, 0x1fd2, 0x2019, 0x783f,
- 0x2304, 0xa065, 0x0040, 0x1f88, 0x2009, 0x0027, 0x1078, 0x5bdb,
- 0x0c7f, 0x0078, 0x1fd2, 0xd2bc, 0x0040, 0x1fd2, 0x1078, 0x45ab,
- 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804,
- 0xa084, 0x4000, 0x0040, 0x1fa0, 0x6803, 0x1000, 0x6803, 0x0000,
- 0x0d7f, 0x0c7e, 0x2061, 0x7836, 0x6044, 0xa09a, 0x0002, 0x00c8,
- 0x1fc1, 0x8000, 0x6046, 0x603c, 0x0c7f, 0xa005, 0x0040, 0x1fd2,
- 0x1078, 0x45a2, 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0,
- 0x1fbd, 0x6017, 0x0012, 0x0078, 0x1fd2, 0x6017, 0x0016, 0x0078,
- 0x1fd2, 0x037e, 0x2019, 0x0001, 0x1078, 0x571a, 0x037f, 0x2019,
- 0x7845, 0x2304, 0xa065, 0x0040, 0x1fd1, 0x2009, 0x004f, 0x1078,
- 0x5bdb, 0x0c7f, 0x017f, 0xd19c, 0x0040, 0x1ffb, 0x017e, 0x6028,
- 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078, 0x5772, 0x2011, 0x0002,
- 0x1078, 0x577c, 0x1078, 0x5688, 0x1078, 0x459d, 0x037e, 0x2019,
- 0x0000, 0x1078, 0x571a, 0x037f, 0x60e3, 0x0000, 0x1078, 0x755b,
- 0x1078, 0x7579, 0x2001, 0x7600, 0x2003, 0x0004, 0x6027, 0x0008,
- 0x1078, 0x11c6, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c, 0x007e,
- 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x7600, 0x71b0, 0x70b2, 0xa116, 0x0040, 0x2025, 0x81ff, 0x0040,
- 0x2017, 0x2011, 0x8011, 0x1078, 0x2d02, 0x0078, 0x2025, 0x2011,
- 0x8012, 0x1078, 0x2d02, 0x037e, 0x0c7e, 0x2061, 0x0100, 0x2019,
- 0x0028, 0x1078, 0x226d, 0x0c7f, 0x037f, 0x127f, 0x0f7f, 0x0e7f,
- 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x0f7e, 0x007e, 0x027e,
- 0x2061, 0x0100, 0xa190, 0x2047, 0x2204, 0x60f2, 0xa192, 0x0005,
- 0x00c8, 0x203e, 0xa190, 0x2050, 0x0078, 0x2040, 0x2011, 0x2054,
- 0x2204, 0x60ee, 0x027f, 0x007f, 0x0f7f, 0x0c7f, 0x007c, 0x0840,
- 0x0840, 0x0840, 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0,
- 0x00a0, 0x2028, 0x2130, 0xa094, 0xff00, 0x00c0, 0x2062, 0x81ff,
- 0x0040, 0x2066, 0x1078, 0x42e2, 0x0078, 0x206d, 0xa080, 0x2303,
- 0x200c, 0xa18c, 0xff00, 0x810f, 0xa006, 0x007c, 0xa080, 0x2303,
- 0x200c, 0xa18c, 0x00ff, 0x007c, 0x2094, 0x2098, 0x209c, 0x20a2,
- 0x20a8, 0x20ae, 0x20b4, 0x20bc, 0x20c4, 0x20ca, 0x20d0, 0x20d8,
- 0x20e0, 0x20e8, 0x20f0, 0x20fa, 0x2104, 0x2104, 0x2104, 0x2104,
- 0x2104, 0x2104, 0x2104, 0x2104, 0x2104, 0x2104, 0x2104, 0x2104,
- 0x2104, 0x2104, 0x2104, 0x2104, 0x107e, 0x007e, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38,
- 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e,
- 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38,
- 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38,
- 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1d64,
- 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1d1f, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1d1f, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d1f, 0x1078, 0x1d64,
- 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d1f,
- 0x1078, 0x1d64, 0x0078, 0x211d, 0x0005, 0x0078, 0x2104, 0xb084,
- 0x003c, 0x8004, 0x8004, 0x0079, 0x210d, 0x211d, 0x209a, 0x209e,
- 0x20a4, 0x20aa, 0x20b0, 0x20b6, 0x20be, 0x20c6, 0x20cc, 0x20d2,
- 0x20da, 0x20e2, 0x20ea, 0x20f2, 0x20fc, 0x0008, 0x2107, 0x007f,
- 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e, 0x027e, 0x2041, 0x007e,
- 0x70bc, 0xd09c, 0x0040, 0x212e, 0x2041, 0x007f, 0x2001, 0x010c,
- 0x203c, 0x727c, 0x82ff, 0x0040, 0x2179, 0x037e, 0x738c, 0xa38e,
- 0xffff, 0x00c0, 0x213d, 0x2019, 0x0001, 0x8314, 0xa2e0, 0x7cc0,
- 0x2c04, 0xa38c, 0x0001, 0x0040, 0x214a, 0xa084, 0xff00, 0x8007,
- 0x0078, 0x214c, 0xa084, 0x00ff, 0xa70e, 0x0040, 0x216e, 0xa08e,
- 0x00ff, 0x0040, 0x2174, 0x2009, 0x0000, 0x1078, 0x2059, 0x1078,
- 0x37a0, 0x00c0, 0x2171, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
- 0x00c0, 0x2168, 0x1078, 0x21cb, 0x0040, 0x2171, 0x0078, 0x216e,
- 0x1078, 0x22cf, 0x1078, 0x21f2, 0x0040, 0x2171, 0x8318, 0x0078,
- 0x213d, 0x738e, 0x0078, 0x2176, 0x708f, 0xffff, 0x037f, 0x0078,
- 0x21c8, 0xa780, 0x2303, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x708c,
- 0xa096, 0xffff, 0x0040, 0x218b, 0xa812, 0x00c8, 0x219b, 0x708f,
- 0xffff, 0x0078, 0x21c5, 0x2009, 0x0000, 0x70bc, 0xd09c, 0x0040,
- 0x2196, 0xd094, 0x0040, 0x2196, 0x2009, 0x007e, 0x2100, 0xa802,
- 0x20a8, 0x0078, 0x219f, 0x2008, 0x2810, 0xa202, 0x20a8, 0x2700,
- 0x157e, 0x017e, 0xa106, 0x0040, 0x21bc, 0x1078, 0x37a0, 0x00c0,
- 0x21c5, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x21b6,
- 0x1078, 0x21cb, 0x0040, 0x21c5, 0x0078, 0x21bc, 0x1078, 0x22cf,
- 0x1078, 0x21f2, 0x0040, 0x21c5, 0x017f, 0x8108, 0x157f, 0x00f0,
- 0x219f, 0x708f, 0xffff, 0x0078, 0x21c8, 0x017f, 0x157f, 0x718e,
- 0x027f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68,
- 0x1078, 0x5b4e, 0x0040, 0x21ed, 0x2d00, 0x601a, 0x601f, 0x0001,
- 0x2001, 0x0000, 0x1078, 0x376f, 0x2001, 0x0000, 0x1078, 0x3783,
- 0x127e, 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009,
- 0x0004, 0x1078, 0x5bdb, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f,
- 0x017f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078,
- 0x5b4e, 0x0040, 0x2214, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001,
- 0x0000, 0x1078, 0x376f, 0x2001, 0x0002, 0x1078, 0x3783, 0x127e,
- 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009, 0x0002,
- 0x1078, 0x5bdb, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f,
- 0x007c, 0x0c7e, 0x027e, 0x2009, 0x0080, 0x1078, 0x37a0, 0x00c0,
- 0x2227, 0x1078, 0x222a, 0x0040, 0x2227, 0x70c3, 0xffff, 0x027f,
- 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078,
- 0x5b4e, 0x0040, 0x224c, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001,
- 0x0000, 0x1078, 0x376f, 0x2001, 0x0002, 0x1078, 0x3783, 0x127e,
- 0x2091, 0x8000, 0x70c4, 0x8000, 0x70c6, 0x127f, 0x2009, 0x0002,
- 0x1078, 0x5bdb, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f,
- 0x007c, 0x0c7e, 0x0d7e, 0x2009, 0x007f, 0x1078, 0x37a0, 0x00c0,
- 0x226a, 0x2c68, 0x1078, 0x5b4e, 0x0040, 0x226a, 0x2d00, 0x601a,
- 0x6312, 0x601f, 0x0001, 0x620a, 0x2009, 0x0022, 0x1078, 0x5bdb,
- 0xa085, 0x0001, 0x0d7f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x067e,
- 0x037e, 0x027e, 0x1078, 0x491b, 0x1078, 0x48cb, 0x1078, 0x60a8,
- 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x37d7, 0x00c0,
- 0x2285, 0x1078, 0x3958, 0x1078, 0x35db, 0x017f, 0x8108, 0x00f0,
- 0x227c, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e,
- 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e,
- 0x2019, 0x0029, 0x1078, 0x4914, 0x1078, 0x4857, 0x2c08, 0x1078,
- 0x7326, 0x017f, 0x2e60, 0x1078, 0x3958, 0xa186, 0x007f, 0x0040,
- 0x22ab, 0x1078, 0x35db, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f,
- 0x007c, 0x0e7e, 0x007e, 0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc,
- 0x00c0, 0x22c5, 0x2071, 0x7600, 0x7088, 0xa005, 0x0040, 0x22c2,
- 0x8001, 0x708a, 0x007f, 0x0e7f, 0x007c, 0x2071, 0x7600, 0x70c4,
- 0xa005, 0x0040, 0x22c2, 0x8001, 0x70c6, 0x0078, 0x22c2, 0x6000,
+ 0xc0fd, 0x6852, 0x6808, 0x8001, 0x680a, 0x00c0, 0x17a9, 0x684c,
+ 0xd0e4, 0x0040, 0x17a9, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
+ 0x55c8, 0x7808, 0xd0ec, 0x00c0, 0x17b3, 0x7803, 0x0009, 0x7003,
+ 0x0004, 0x0078, 0x18b1, 0x1078, 0x1666, 0x0078, 0x18b1, 0x057e,
+ 0x7d0c, 0x1078, 0x6de1, 0x057f, 0x697c, 0x6912, 0x6980, 0x6916,
+ 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x18b1, 0x684c, 0xc0f5,
+ 0x684e, 0x7814, 0xa005, 0x00c0, 0x17de, 0x7003, 0x0000, 0x6808,
+ 0x8001, 0x680a, 0x00c0, 0x17da, 0x7004, 0x2060, 0x2009, 0x0048,
+ 0x1078, 0x55c8, 0x1078, 0x1666, 0x0078, 0x18b1, 0x7814, 0x6910,
+ 0xa102, 0x6812, 0x6914, 0xa183, 0x0000, 0x6816, 0x7814, 0x7908,
+ 0xa18c, 0x0fff, 0xa188, 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a,
+ 0x8104, 0x8004, 0x8004, 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078,
+ 0x18b5, 0x7803, 0x0004, 0x780f, 0xffff, 0x7803, 0x0001, 0x7804,
+ 0xd0fc, 0x0040, 0x17ff, 0x7803, 0x0002, 0x7803, 0x0004, 0x780f,
+ 0x0070, 0x7004, 0x7007, 0x0000, 0x2060, 0x2009, 0x0048, 0x1078,
+ 0x55c8, 0x1078, 0x18f3, 0x0040, 0x17da, 0x7908, 0xd1ec, 0x00c0,
+ 0x181d, 0x2009, 0x0009, 0x0078, 0x181f, 0x2009, 0x0019, 0x7902,
+ 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x18b1, 0x8001, 0x7002,
+ 0xd194, 0x0040, 0x1838, 0x7804, 0xd0fc, 0x00c0, 0x173d, 0x8aff,
+ 0x0040, 0x18b1, 0x2009, 0x0001, 0x1078, 0x16c4, 0x0078, 0x18b1,
+ 0xa184, 0x0880, 0x00c0, 0x1845, 0x8aff, 0x0040, 0x18b1, 0x2009,
+ 0x0001, 0x1078, 0x16c4, 0x0078, 0x18b1, 0x7803, 0x0004, 0x7003,
+ 0x0000, 0xd1dc, 0x0040, 0x1879, 0x027e, 0x037e, 0x6b28, 0x6a2c,
+ 0x1078, 0x1ba6, 0x0d7e, 0x0f7e, 0x2d78, 0x2804, 0xac68, 0x6034,
+ 0xd09c, 0x00c0, 0x1869, 0x6808, 0x2008, 0xa31a, 0x680c, 0xa213,
+ 0x7810, 0xa100, 0x7812, 0x690c, 0x7814, 0xa101, 0x7816, 0x0078,
+ 0x1875, 0x6810, 0x2008, 0xa31a, 0x6814, 0xa213, 0x7810, 0xa100,
+ 0x7812, 0x6914, 0x7814, 0xa101, 0x7816, 0x0f7f, 0x0d7f, 0x0078,
+ 0x1777, 0x057e, 0x7d0c, 0x1078, 0x6de1, 0x057f, 0x697c, 0x6912,
+ 0x6980, 0x6916, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x18b1,
+ 0x7803, 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x189b,
+ 0x6808, 0x8001, 0x680a, 0x00c0, 0x189b, 0x7004, 0x2060, 0x2009,
+ 0x0048, 0x1078, 0x55c8, 0x1078, 0x1666, 0x0078, 0x18b1, 0x7803,
+ 0x0004, 0x7003, 0x0000, 0x7004, 0x2060, 0x6010, 0xa005, 0x0040,
+ 0x189b, 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078,
+ 0x167d, 0x017f, 0x007f, 0x127f, 0x007c, 0x3c00, 0x007e, 0x0e7e,
+ 0x2071, 0x0200, 0x7808, 0xa084, 0xf000, 0xa10d, 0x2001, 0x0138,
+ 0x2014, 0x2003, 0x0000, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c,
+ 0xd3dc, 0x00c0, 0x18db, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048,
+ 0x00c0, 0x18db, 0x2001, 0x0111, 0x201c, 0x83ff, 0x00c0, 0x18db,
+ 0x8421, 0x00c0, 0x18c5, 0x20e1, 0x7000, 0x7324, 0x7420, 0x7028,
+ 0x7028, 0x7426, 0x7037, 0x0001, 0x810f, 0x712e, 0x702f, 0x0100,
+ 0x7037, 0x0008, 0x7326, 0x7422, 0x2001, 0x0138, 0x2202, 0x0e7f,
+ 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e, 0x7908, 0xa18c, 0x0fff,
+ 0xa182, 0x0009, 0x0048, 0x1900, 0xa085, 0x0001, 0x0078, 0x1912,
+ 0x2001, 0x020a, 0x81ff, 0x0040, 0x190b, 0x20e1, 0x6000, 0x200c,
+ 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000, 0x200c, 0x200c, 0x7003,
+ 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c, 0x0e7e, 0x2071, 0x710b,
+ 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e, 0xa280, 0x0004, 0x206c,
+ 0x694c, 0xd1dc, 0x00c0, 0x1997, 0x6934, 0xa184, 0x0007, 0x0079,
+ 0x1929, 0x1931, 0x1982, 0x1931, 0x1931, 0x1931, 0x1967, 0x1944,
+ 0x1933, 0x1078, 0x1286, 0x684c, 0xd0b4, 0x0040, 0x1a99, 0x6860,
+ 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c, 0x680a, 0x6880,
+ 0x680e, 0x6958, 0x0078, 0x198a, 0x6834, 0xa084, 0x00ff, 0xa086,
+ 0x001e, 0x00c0, 0x1931, 0x684c, 0xd0b4, 0x0040, 0x1a99, 0x6860,
+ 0x682e, 0x6816, 0x685c, 0x682a, 0x6812, 0x687c, 0x680a, 0x6880,
+ 0x680e, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
+ 0xa080, 0x1bd1, 0x2004, 0x6832, 0x6958, 0x0078, 0x1993, 0xa18c,
+ 0x00ff, 0xa186, 0x0015, 0x00c0, 0x1997, 0x684c, 0xd0b4, 0x0040,
+ 0x1a99, 0x6804, 0x681a, 0xa080, 0x000d, 0x2004, 0xa084, 0x000f,
+ 0xa080, 0x1bd1, 0x2004, 0x6832, 0x6958, 0xa006, 0x682e, 0x682a,
+ 0x0078, 0x1993, 0x684c, 0xd0b4, 0x0040, 0x1731, 0x6958, 0xa006,
+ 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834, 0xa084, 0x000f, 0xa080,
+ 0x1bd1, 0x2004, 0x6832, 0x6926, 0x684c, 0xc0dd, 0x684e, 0x0d7f,
+ 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804, 0xd0fc, 0x10c0, 0x1a9d,
+ 0x0e7e, 0x0d7e, 0x2071, 0x710b, 0x7000, 0xa005, 0x00c0, 0x1a13,
+ 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c, 0x7004, 0x2068, 0x6818,
+ 0x0d7e, 0x2068, 0x686c, 0x7812, 0x6890, 0x0f7e, 0x20e1, 0x9040,
+ 0x2079, 0x0200, 0x781a, 0x2079, 0x0100, 0x8004, 0x78d6, 0x0f7f,
+ 0x0d7f, 0x2b68, 0x6824, 0x2050, 0x6818, 0x2060, 0x6830, 0x2040,
+ 0x6034, 0xa0cc, 0x000f, 0x6908, 0xa184, 0x0007, 0x0040, 0x19d5,
+ 0x017e, 0x2009, 0x0008, 0xa102, 0x017f, 0xa108, 0x791a, 0x7116,
+ 0x701e, 0x680c, 0xa081, 0x0000, 0x781e, 0x701a, 0xa006, 0x700e,
+ 0x7012, 0x7004, 0x692c, 0x6814, 0xa106, 0x00c0, 0x19ec, 0x6928,
+ 0x6810, 0xa106, 0x0040, 0x19f9, 0x037e, 0x047e, 0x6b14, 0x6c10,
+ 0x1078, 0x1bf1, 0x047f, 0x037f, 0x0040, 0x19f9, 0x0c7f, 0x0078,
+ 0x1a13, 0x8aff, 0x00c0, 0x1a01, 0x0c7f, 0xa085, 0x0001, 0x0078,
+ 0x1a13, 0x127e, 0x2091, 0x8000, 0x2079, 0x0020, 0x2009, 0x0001,
+ 0x1078, 0x1a17, 0x0040, 0x1a10, 0x2009, 0x0001, 0x1078, 0x1a17,
+ 0x127f, 0x0c7f, 0xa006, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x077e,
+ 0x067e, 0x057e, 0x047e, 0x037e, 0x027e, 0x8aff, 0x0040, 0x1a92,
+ 0x700c, 0x7214, 0xa202, 0x7010, 0x7218, 0xa203, 0x0048, 0x1a91,
+ 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0, 0x1a44, 0x0d7e, 0x2804,
+ 0xac68, 0x2900, 0x0079, 0x1a34, 0x1a73, 0x1a54, 0x1a54, 0x1a73,
+ 0x1a73, 0x1a6b, 0x1a73, 0x1a54, 0x1a73, 0x1a5a, 0x1a5a, 0x1a73,
+ 0x1a73, 0x1a73, 0x1a62, 0x1a5a, 0xc0fc, 0x6852, 0x6b6c, 0x6a70,
+ 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1a77, 0x0d7e, 0x2804, 0xac68,
+ 0x6f08, 0x6e0c, 0x0078, 0x1a76, 0x6b08, 0x6a0c, 0x6d00, 0x6c04,
+ 0x0078, 0x1a76, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c,
+ 0x0078, 0x1a76, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086,
+ 0x001e, 0x00c0, 0x1a73, 0x0d7f, 0x1078, 0x1b8d, 0x00c0, 0x1a1d,
+ 0xa00e, 0x0078, 0x1a92, 0x0d7f, 0x1078, 0x1286, 0x0d7f, 0x7b22,
+ 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000,
+ 0x7002, 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x700c,
+ 0xa300, 0x700e, 0x7010, 0xa201, 0x7012, 0x1078, 0x1b8d, 0x0078,
+ 0x1a92, 0xa006, 0x027f, 0x037f, 0x047f, 0x057f, 0x067f, 0x077f,
+ 0x007c, 0x1078, 0x1286, 0x1078, 0x1286, 0x127e, 0x2091, 0x2200,
+ 0x007e, 0x017e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x2079, 0x0020,
+ 0x2071, 0x710b, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002,
+ 0xa184, 0x0700, 0x00c0, 0x1a9b, 0x7000, 0x0079, 0x1ab7, 0x1b5e,
+ 0x1abb, 0x1b2b, 0x1b5c, 0x8001, 0x7002, 0xd19c, 0x00c0, 0x1acf,
+ 0x8aff, 0x0040, 0x1aee, 0x2009, 0x0001, 0x1078, 0x1a17, 0x0040,
+ 0x1b5e, 0x2009, 0x0001, 0x1078, 0x1a17, 0x0078, 0x1b5e, 0x7803,
+ 0x0004, 0xd194, 0x0040, 0x1adf, 0x6850, 0xc0fc, 0x6852, 0x8aff,
+ 0x00c0, 0x1ae4, 0x684c, 0xc0f5, 0x684e, 0x0078, 0x1ae4, 0x1078,
+ 0x1ba6, 0x6850, 0xc0fd, 0x6852, 0x2a00, 0x6826, 0x2c00, 0x681a,
+ 0x2800, 0x6832, 0x7003, 0x0000, 0x0078, 0x1b5e, 0x711c, 0x81ff,
+ 0x0040, 0x1b04, 0x7918, 0x7922, 0x7827, 0x0000, 0x7803, 0x0001,
+ 0x7000, 0x8000, 0x7002, 0x700c, 0xa100, 0x700e, 0x7010, 0xa081,
+ 0x0000, 0x7012, 0x0078, 0x1b5e, 0x0f7e, 0x027e, 0x781c, 0x007e,
+ 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14, 0xa284, 0x0004, 0xa085,
+ 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0, 0x1b12, 0x79c8, 0x007f,
+ 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102, 0x78c6, 0xa284, 0x0004,
+ 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f, 0x7803, 0x0008, 0x7003,
+ 0x0000, 0x0078, 0x1b5e, 0x8001, 0x7002, 0xd194, 0x0040, 0x1b40,
+ 0x7804, 0xd0fc, 0x00c0, 0x1aad, 0xd19c, 0x00c0, 0x1b5a, 0x8aff,
+ 0x0040, 0x1b5e, 0x2009, 0x0001, 0x1078, 0x1a17, 0x0078, 0x1b5e,
+ 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1ba6, 0x0d7e, 0x2804,
+ 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1b53, 0x6808, 0xa31a, 0x680c,
+ 0xa213, 0x0078, 0x1b57, 0x6810, 0xa31a, 0x6814, 0xa213, 0x0d7f,
+ 0x0078, 0x1adf, 0x0078, 0x1adf, 0x1078, 0x1286, 0x0c7f, 0x0d7f,
+ 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f, 0x007c, 0x0f7e, 0x0e7e,
+ 0x2071, 0x710b, 0x7000, 0xa086, 0x0000, 0x0040, 0x1b8a, 0x2079,
+ 0x0020, 0x20e1, 0x9040, 0x7804, 0xd0fc, 0x0040, 0x1b71, 0x1078,
+ 0x1a9d, 0x7000, 0xa086, 0x0000, 0x00c0, 0x1b71, 0x7803, 0x0004,
+ 0x7804, 0xd0ac, 0x00c0, 0x1b80, 0x20e1, 0x9040, 0x7803, 0x0002,
+ 0x7003, 0x0000, 0x0e7f, 0x0f7f, 0x007c, 0x8840, 0x2804, 0xa005,
+ 0x00c0, 0x1ba1, 0x6004, 0xa005, 0x0040, 0x1ba3, 0x681a, 0x2060,
+ 0x6034, 0xa084, 0x000f, 0xa080, 0x1bd1, 0x2044, 0x88ff, 0x1040,
+ 0x1286, 0x8a51, 0x007c, 0x2051, 0x0000, 0x007c, 0x8a50, 0x8841,
+ 0x2804, 0xa005, 0x00c0, 0x1bc0, 0x2c00, 0xad06, 0x0040, 0x1bb5,
+ 0x6000, 0xa005, 0x00c0, 0x1bb5, 0x2d00, 0x2060, 0x681a, 0x6034,
+ 0xa084, 0x000f, 0xa080, 0x1be1, 0x2044, 0x88ff, 0x1040, 0x1286,
+ 0x007c, 0x0000, 0x0011, 0x0015, 0x0019, 0x001d, 0x0021, 0x0025,
+ 0x0029, 0x0000, 0x000f, 0x0015, 0x001b, 0x0021, 0x0027, 0x0000,
+ 0x0000, 0x0000, 0x1bc6, 0x1bc2, 0x0000, 0x0000, 0x1bd0, 0x0000,
+ 0x1bc6, 0x0000, 0x1bcd, 0x1bca, 0x0000, 0x0000, 0x0000, 0x1bd0,
+ 0x1bcd, 0x0000, 0x1bc8, 0x1bc8, 0x0000, 0x0000, 0x1bd0, 0x0000,
+ 0x1bc8, 0x0000, 0x1bce, 0x1bce, 0x0000, 0x0000, 0x0000, 0x1bd0,
+ 0x1bce, 0x0a7e, 0x097e, 0x087e, 0x6858, 0xa055, 0x0040, 0x1c8e,
+ 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0, 0x1bd1, 0xa986, 0x0007,
+ 0x0040, 0x1c0a, 0xa986, 0x000e, 0x0040, 0x1c0a, 0xa986, 0x000f,
+ 0x00c0, 0x1c0e, 0x605c, 0xa422, 0x6060, 0xa31a, 0x2804, 0xa045,
+ 0x00c0, 0x1c1c, 0x0050, 0x1c16, 0x0078, 0x1c8e, 0x6004, 0xa065,
+ 0x0040, 0x1c8e, 0x0078, 0x1bf9, 0x2804, 0xa005, 0x0040, 0x1c3a,
+ 0xac68, 0xd99c, 0x00c0, 0x1c2a, 0x6808, 0xa422, 0x680c, 0xa31b,
+ 0x0078, 0x1c2e, 0x6810, 0xa422, 0x6814, 0xa31b, 0x0048, 0x1c59,
+ 0x2300, 0xa405, 0x0040, 0x1c40, 0x8a51, 0x0040, 0x1c8e, 0x8840,
+ 0x0078, 0x1c1c, 0x6004, 0xa065, 0x0040, 0x1c8e, 0x0078, 0x1bf9,
+ 0x8a51, 0x0040, 0x1c8e, 0x8840, 0x2804, 0xa005, 0x00c0, 0x1c53,
+ 0x6004, 0xa065, 0x0040, 0x1c8e, 0x6034, 0xa0cc, 0x000f, 0xa9c0,
+ 0x1bd1, 0x2804, 0x2040, 0x2b68, 0x6850, 0xc0fc, 0x6852, 0x0078,
+ 0x1c86, 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x0d7e, 0x2b68,
+ 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0, 0x1c74, 0x6908, 0x2400,
+ 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048, 0x1286, 0x6800, 0xa420,
+ 0x6804, 0xa319, 0x0078, 0x1c80, 0x6910, 0x2400, 0xa122, 0x6914,
+ 0x2300, 0xa11b, 0x1048, 0x1286, 0x6800, 0xa420, 0x6804, 0xa319,
+ 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd, 0x6852, 0x2c00, 0x681a,
+ 0x007f, 0x007f, 0x007f, 0xa006, 0x0078, 0x1c93, 0x087f, 0x097f,
+ 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001, 0x0005, 0x2004, 0xa084,
+ 0x0007, 0x0079, 0x1c9b, 0x1ca3, 0x1ca4, 0x1ca7, 0x1caa, 0x1caf,
+ 0x1cb2, 0x1cb7, 0x1cbc, 0x007c, 0x1078, 0x1a9d, 0x007c, 0x1078,
+ 0x1735, 0x007c, 0x1078, 0x1735, 0x1078, 0x1a9d, 0x007c, 0x1078,
+ 0x140f, 0x007c, 0x1078, 0x1a9d, 0x1078, 0x140f, 0x007c, 0x1078,
+ 0x1735, 0x1078, 0x140f, 0x007c, 0x1078, 0x1735, 0x1078, 0x1a9d,
+ 0x1078, 0x140f, 0x007c, 0x127e, 0x2091, 0x2300, 0x2079, 0x0200,
+ 0x2071, 0x7380, 0x2069, 0x6f00, 0x2009, 0x0004, 0x7912, 0x7916,
+ 0x1078, 0x1f8b, 0x781b, 0x0002, 0x20e1, 0x8700, 0x127f, 0x007c,
+ 0x127e, 0x2091, 0x2300, 0x781c, 0xa084, 0x0007, 0x0079, 0x1ce0,
+ 0x1d04, 0x1ce8, 0x1cec, 0x1cf0, 0x1cf6, 0x1cfa, 0x1cfe, 0x1d02,
+ 0x1078, 0x3def, 0x0078, 0x1d04, 0x1078, 0x3e1e, 0x0078, 0x1d04,
+ 0x1078, 0x3def, 0x1078, 0x3e1e, 0x0078, 0x1d04, 0x1078, 0x1d06,
+ 0x0078, 0x1d04, 0x1078, 0x1d06, 0x0078, 0x1d04, 0x1078, 0x1d06,
+ 0x0078, 0x1d04, 0x1078, 0x1d06, 0x127f, 0x007c, 0x007e, 0x017e,
+ 0x027e, 0x7930, 0xa184, 0x0003, 0x0040, 0x1d10, 0x1078, 0x1286,
+ 0xa184, 0x0030, 0x0040, 0x1d21, 0x6a00, 0xa286, 0x0003, 0x00c0,
+ 0x1d1b, 0x1078, 0x1286, 0x1078, 0x31f5, 0x20e1, 0x9010, 0x0078,
+ 0x1d2d, 0xa184, 0x00c0, 0x0040, 0x1d27, 0x1078, 0x1286, 0xa184,
+ 0x0300, 0x0040, 0x1d2d, 0x20e1, 0x9020, 0x7932, 0x027f, 0x017f,
+ 0x007f, 0x007c, 0x017e, 0x0e7e, 0x0f7e, 0x2071, 0x6f00, 0x7128,
+ 0x2001, 0x70a3, 0x2102, 0x2001, 0x70ab, 0x2102, 0xa182, 0x0211,
+ 0x00c8, 0x1d46, 0x2009, 0x0008, 0x0078, 0x1d70, 0xa182, 0x0259,
+ 0x00c8, 0x1d4e, 0x2009, 0x0007, 0x0078, 0x1d70, 0xa182, 0x02c1,
+ 0x00c8, 0x1d56, 0x2009, 0x0006, 0x0078, 0x1d70, 0xa182, 0x0349,
+ 0x00c8, 0x1d5e, 0x2009, 0x0005, 0x0078, 0x1d70, 0xa182, 0x0421,
+ 0x00c8, 0x1d66, 0x2009, 0x0004, 0x0078, 0x1d70, 0xa182, 0x0581,
+ 0x00c8, 0x1d6e, 0x2009, 0x0003, 0x0078, 0x1d70, 0x2009, 0x0002,
+ 0x2079, 0x0200, 0x7912, 0x7916, 0x1078, 0x1f8b, 0x0f7f, 0x0e7f,
+ 0x017f, 0x007c, 0x127e, 0x2091, 0x2200, 0x2061, 0x0100, 0x2071,
+ 0x6f00, 0x6024, 0x6026, 0x6033, 0x00ef, 0x60e7, 0x0000, 0x60eb,
+ 0x00ef, 0x60e3, 0x0008, 0x604b, 0xf7f7, 0x6043, 0x0000, 0x602f,
+ 0x0080, 0x602f, 0x0000, 0x6007, 0x00af, 0x600f, 0x00ff, 0x602b,
+ 0x002f, 0x127f, 0x007c, 0x2001, 0x6f2b, 0x2003, 0x0000, 0x2001,
+ 0x6f2a, 0x2003, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200, 0x007e,
+ 0x017e, 0x027e, 0x6124, 0xa184, 0x002c, 0x00c0, 0x1db3, 0xa184,
+ 0x0007, 0x0079, 0x1db9, 0xa195, 0x0004, 0xa284, 0x0007, 0x0079,
+ 0x1db9, 0x1de5, 0x1dc1, 0x1dc5, 0x1dc9, 0x1dcf, 0x1dd3, 0x1dd9,
+ 0x1ddf, 0x1078, 0x42cb, 0x0078, 0x1de5, 0x1078, 0x43ae, 0x0078,
+ 0x1de5, 0x1078, 0x43ae, 0x1078, 0x42cb, 0x0078, 0x1de5, 0x1078,
+ 0x1dea, 0x0078, 0x1de5, 0x1078, 0x42cb, 0x1078, 0x1dea, 0x0078,
+ 0x1de5, 0x1078, 0x43ae, 0x1078, 0x1dea, 0x0078, 0x1de5, 0x1078,
+ 0x43ae, 0x1078, 0x42cb, 0x1078, 0x1dea, 0x027f, 0x017f, 0x007f,
+ 0x127f, 0x007c, 0xd1ac, 0x0040, 0x1e97, 0x017e, 0x047e, 0x0c7e,
+ 0x644c, 0x74b2, 0xa48c, 0xff00, 0xa196, 0xff00, 0x0040, 0x1e19,
+ 0x6030, 0xa084, 0x00ff, 0x810f, 0xa116, 0x0040, 0x1e19, 0x7130,
+ 0xd18c, 0x00c0, 0x1e19, 0x2011, 0x6f52, 0x2214, 0xd2ec, 0x0040,
+ 0x1e0d, 0xc18d, 0x7132, 0x0078, 0x1e19, 0x6240, 0xa294, 0x0010,
+ 0x0040, 0x1e54, 0x6248, 0xa294, 0xff00, 0xa296, 0xff00, 0x00c0,
+ 0x1e54, 0x2011, 0x8013, 0x1078, 0x29c6, 0x7130, 0xc185, 0x7132,
+ 0x2011, 0x6f52, 0x220c, 0xd1a4, 0x0040, 0x1e3c, 0x017e, 0x2009,
+ 0x0001, 0x2011, 0x0100, 0x1078, 0x4299, 0x2019, 0x000e, 0x1078,
+ 0x6d28, 0xa484, 0x00ff, 0x1078, 0x1fb0, 0x8127, 0xa006, 0x2009,
+ 0x000e, 0x1078, 0x6d90, 0x017f, 0xd1ac, 0x00c0, 0x1e45, 0x2019,
+ 0x0004, 0x1078, 0x2152, 0x0078, 0x1e54, 0x157e, 0x20a9, 0x007e,
+ 0x2009, 0x0000, 0x1078, 0x3497, 0x00c0, 0x1e50, 0x1078, 0x329b,
+ 0x8108, 0x00f0, 0x1e4a, 0x157f, 0x0c7f, 0x047f, 0x6043, 0x0000,
+ 0x2009, 0x00f7, 0x1078, 0x325e, 0x0f7e, 0x2079, 0x70c9, 0x783c,
+ 0xa086, 0x0000, 0x0040, 0x1e6c, 0x6027, 0x0004, 0x783f, 0x0000,
+ 0x2079, 0x0140, 0x7803, 0x0000, 0x0f7f, 0x2011, 0x0003, 0x1078,
+ 0x515f, 0x2011, 0x0002, 0x1078, 0x5169, 0x1078, 0x5075, 0x1078,
+ 0x41d0, 0x037e, 0x2019, 0x0000, 0x1078, 0x5107, 0x037f, 0x60e3,
+ 0x0000, 0x017f, 0x2001, 0x6f00, 0x2014, 0xa296, 0x0004, 0x00c0,
+ 0x1e8f, 0xd19c, 0x00c0, 0x1e8f, 0x6228, 0xc29d, 0x622a, 0x2003,
+ 0x0001, 0x2001, 0x6f1e, 0x2003, 0x0000, 0x6027, 0x0020, 0xd194,
+ 0x0040, 0x1f32, 0x0f7e, 0x2079, 0x70c9, 0x783c, 0xa086, 0x0001,
+ 0x00c0, 0x1ebb, 0x017e, 0x6027, 0x0004, 0x783f, 0x0000, 0x2079,
+ 0x0140, 0x7803, 0x1000, 0x7803, 0x0000, 0x2079, 0x70b6, 0x7807,
+ 0x0000, 0x7833, 0x0000, 0x1078, 0x484d, 0x1078, 0x48fd, 0x017f,
+ 0x0f7f, 0x0078, 0x1f32, 0x0f7f, 0x017e, 0x6220, 0xd2b4, 0x0040,
+ 0x1ef0, 0x1078, 0x41d0, 0x1078, 0x4f45, 0x6027, 0x0004, 0x0d7e,
+ 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x1ed3, 0x6803,
+ 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061, 0x70b6, 0x6028,
+ 0xa09a, 0x0002, 0x00c8, 0x1ee3, 0x8000, 0x602a, 0x0c7f, 0x1078,
+ 0x4f37, 0x0078, 0x1f31, 0x2019, 0x70bf, 0x2304, 0xa065, 0x0040,
+ 0x1eed, 0x2009, 0x0027, 0x1078, 0x55c8, 0x0c7f, 0x0078, 0x1f31,
+ 0xd2bc, 0x0040, 0x1f31, 0x1078, 0x41de, 0x6017, 0x0010, 0x6027,
+ 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000, 0x0040,
+ 0x1f05, 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e, 0x2061,
+ 0x70b6, 0x6044, 0xa09a, 0x0002, 0x00c8, 0x1f26, 0x8000, 0x6046,
+ 0x603c, 0x0c7f, 0xa005, 0x0040, 0x1f31, 0x1078, 0x41d5, 0xa080,
+ 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0, 0x1f22, 0x6017, 0x0012,
+ 0x0078, 0x1f31, 0x6017, 0x0016, 0x0078, 0x1f31, 0x2019, 0x70c5,
+ 0x2304, 0xa065, 0x0040, 0x1f30, 0x2009, 0x004f, 0x1078, 0x55c8,
+ 0x0c7f, 0x017f, 0xd19c, 0x0040, 0x1f5a, 0x017e, 0x6028, 0xc09c,
+ 0x602a, 0x2011, 0x0003, 0x1078, 0x515f, 0x2011, 0x0002, 0x1078,
+ 0x5169, 0x1078, 0x5075, 0x1078, 0x41d0, 0x037e, 0x2019, 0x0000,
+ 0x1078, 0x5107, 0x037f, 0x60e3, 0x0000, 0x1078, 0x6dff, 0x1078,
+ 0x6e1d, 0x2001, 0x6f00, 0x2003, 0x0004, 0x6027, 0x0008, 0x1078,
+ 0x117d, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c, 0x007e, 0x017e,
+ 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x6f00,
+ 0x71a8, 0x70aa, 0xa116, 0x0040, 0x1f84, 0x81ff, 0x0040, 0x1f76,
+ 0x2011, 0x8011, 0x1078, 0x29c6, 0x0078, 0x1f84, 0x2011, 0x8012,
+ 0x1078, 0x29c6, 0x037e, 0x0c7e, 0x2061, 0x0100, 0x2019, 0x0028,
+ 0x1078, 0x2152, 0x0c7f, 0x037f, 0x127f, 0x0f7f, 0x0e7f, 0x027f,
+ 0x017f, 0x007f, 0x007c, 0x0c7e, 0x0f7e, 0x007e, 0x027e, 0x2061,
+ 0x0100, 0xa190, 0x1f9e, 0x2204, 0x60f2, 0xa190, 0x1fa7, 0x2204,
+ 0x60ee, 0x027f, 0x007f, 0x0f7f, 0x0c7f, 0x007c, 0x0840, 0x0840,
+ 0x0840, 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210, 0x01a8,
+ 0x01a8, 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0, 0x00a0,
+ 0xa080, 0x21d3, 0x200c, 0xa18c, 0xff00, 0x810f, 0x007c, 0xa080,
+ 0x21d3, 0x200c, 0xa18c, 0x00ff, 0x007c, 0x1fdd, 0x1fe1, 0x1fe5,
+ 0x1feb, 0x1ff1, 0x1ff7, 0x1ffd, 0x2005, 0x200d, 0x2013, 0x2019,
+ 0x2021, 0x2029, 0x2031, 0x2039, 0x2043, 0x204d, 0x204d, 0x204d,
+ 0x204d, 0x204d, 0x204d, 0x204d, 0x204d, 0x204d, 0x204d, 0x204d,
+ 0x204d, 0x204d, 0x204d, 0x204d, 0x204d, 0x107e, 0x007e, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078,
+ 0x1da4, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078, 0x1da4, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x1078, 0x1c94, 0x0078, 0x2066, 0x107e,
+ 0x007e, 0x1078, 0x1c94, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078,
+ 0x1da4, 0x1078, 0x1c94, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078,
+ 0x1da4, 0x1078, 0x1c94, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078,
+ 0x1cd8, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078, 0x1cd8, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x1078, 0x1da4, 0x1078, 0x1cd8, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x1078, 0x1da4, 0x1078, 0x1cd8, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x1078, 0x1c94, 0x1078, 0x1cd8, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x1078, 0x1c94, 0x1078, 0x1cd8, 0x0078,
+ 0x2066, 0x107e, 0x007e, 0x1078, 0x1da4, 0x1078, 0x1c94, 0x1078,
+ 0x1cd8, 0x0078, 0x2066, 0x107e, 0x007e, 0x1078, 0x1da4, 0x1078,
+ 0x1c94, 0x1078, 0x1cd8, 0x0078, 0x2066, 0x0005, 0x0078, 0x204d,
+ 0xb084, 0x003c, 0x8004, 0x8004, 0x0079, 0x2056, 0x2066, 0x1fe3,
+ 0x1fe7, 0x1fed, 0x1ff3, 0x1ff9, 0x1fff, 0x2007, 0x200f, 0x2015,
+ 0x201b, 0x2023, 0x202b, 0x2033, 0x203b, 0x2045, 0x0008, 0x2050,
+ 0x007f, 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e, 0x027e, 0x2001,
+ 0x010c, 0x203c, 0x7274, 0x82ff, 0x0040, 0x20bc, 0x037e, 0x7384,
+ 0xa38e, 0xffff, 0x00c0, 0x207e, 0x2019, 0x0001, 0x8314, 0xa2e0,
+ 0x74c0, 0x2c04, 0xa38c, 0x0001, 0x0040, 0x208b, 0xa084, 0xff00,
+ 0x8007, 0x0078, 0x208d, 0xa084, 0x00ff, 0xa70e, 0x0040, 0x20b1,
+ 0xa08e, 0x0000, 0x0040, 0x20b1, 0xa08e, 0x00ff, 0x0040, 0x20b7,
+ 0x1078, 0x1fb0, 0x1078, 0x3460, 0x00c0, 0x20b4, 0x6004, 0xa084,
+ 0x00ff, 0xa086, 0x0006, 0x00c0, 0x20ab, 0x1078, 0x2104, 0x0040,
+ 0x20b4, 0x0078, 0x20b1, 0x1078, 0x219f, 0x1078, 0x212b, 0x0040,
+ 0x20b4, 0x8318, 0x0078, 0x207e, 0x7386, 0x0078, 0x20b9, 0x7087,
+ 0xffff, 0x037f, 0x0078, 0x2101, 0xa780, 0x21d3, 0x203c, 0xa7bc,
+ 0xff00, 0x873f, 0x20a9, 0x007e, 0x2009, 0x0000, 0x7084, 0xa096,
+ 0xffff, 0x0040, 0x20d8, 0xa092, 0x007e, 0x0048, 0x20d3, 0x7087,
+ 0xffff, 0x0078, 0x20fe, 0x2008, 0x2011, 0x007e, 0xa202, 0x20a8,
+ 0x2700, 0x157e, 0x017e, 0xa106, 0x0040, 0x20f5, 0x1078, 0x3460,
+ 0x00c0, 0x20fe, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
+ 0x20ef, 0x1078, 0x2104, 0x0040, 0x20fe, 0x0078, 0x20f5, 0x1078,
+ 0x219f, 0x1078, 0x212b, 0x0040, 0x20fe, 0x017f, 0x8108, 0x157f,
+ 0x00f0, 0x20d8, 0x7087, 0xffff, 0x0078, 0x2101, 0x017f, 0x157f,
+ 0x7186, 0x027f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e,
+ 0x2c68, 0x1078, 0x553b, 0x0040, 0x2126, 0x2d00, 0x601a, 0x601f,
+ 0x0001, 0x2001, 0x0000, 0x1078, 0x342f, 0x2001, 0x0000, 0x1078,
+ 0x3443, 0x127e, 0x2091, 0x8000, 0x7080, 0x8000, 0x7082, 0x127f,
+ 0x2009, 0x0004, 0x1078, 0x55c8, 0xa085, 0x0001, 0x0c7f, 0x0d7f,
+ 0x077f, 0x017f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68,
+ 0x1078, 0x553b, 0x0040, 0x214d, 0x2d00, 0x601a, 0x601f, 0x0001,
+ 0x2001, 0x0000, 0x1078, 0x342f, 0x2001, 0x0002, 0x1078, 0x3443,
+ 0x127e, 0x2091, 0x8000, 0x7080, 0x8000, 0x7082, 0x127f, 0x2009,
+ 0x0002, 0x1078, 0x55c8, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f,
+ 0x017f, 0x007c, 0x0e7e, 0x0c7e, 0x067e, 0x037e, 0x027e, 0x1078,
+ 0x453c, 0x1078, 0x44ec, 0x1078, 0x59ae, 0x20a9, 0x007e, 0x2009,
+ 0x0000, 0x017e, 0x1078, 0x3497, 0x00c0, 0x216a, 0x1078, 0x3618,
+ 0x1078, 0x329b, 0x017f, 0x8108, 0x00f0, 0x2161, 0x027f, 0x037f,
+ 0x067f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x037e, 0x027e,
+ 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e, 0x2019, 0x0029, 0x1078,
+ 0x4535, 0x1078, 0x4478, 0x2c08, 0x1078, 0x6bca, 0x017f, 0x2e60,
+ 0x1078, 0x3618, 0x1078, 0x329b, 0x017f, 0x027f, 0x037f, 0x0c7f,
+ 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071, 0x6f00, 0x7080, 0xa005,
+ 0x0040, 0x219c, 0x8001, 0x7082, 0x007f, 0x0e7f, 0x007c, 0x6000,
0xc08c, 0x6002, 0x007c, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e,
- 0x157e, 0x81ff, 0x00c0, 0x22e0, 0x20a9, 0x0001, 0x0078, 0x22e4,
- 0x20a9, 0x007f, 0x2011, 0x0000, 0x027e, 0xa2e0, 0x7720, 0x2c64,
- 0x8cff, 0x0040, 0x22f6, 0x2019, 0x0029, 0x1078, 0x4914, 0x1078,
- 0x4857, 0x2c08, 0x1078, 0x7326, 0x1078, 0x3958, 0x027f, 0x8210,
- 0x00f0, 0x22e4, 0x027e, 0x027f, 0x157f, 0x017f, 0x027f, 0x037f,
+ 0x157e, 0x81ff, 0x00c0, 0x21b0, 0x20a9, 0x0001, 0x0078, 0x21b4,
+ 0x20a9, 0x007e, 0x2011, 0x0000, 0x027e, 0xa2e0, 0x7020, 0x2c64,
+ 0x8cff, 0x0040, 0x21c6, 0x2019, 0x0029, 0x1078, 0x4535, 0x1078,
+ 0x4478, 0x2c08, 0x1078, 0x6bca, 0x1078, 0x3618, 0x027f, 0x8210,
+ 0x00f0, 0x21b4, 0x027e, 0x027f, 0x157f, 0x017f, 0x027f, 0x037f,
0x0c7f, 0x0e7f, 0x007c, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1,
0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3,
0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9,
@@ -8783,582 +9813,516 @@ static const u_int16_t ISP2100_RISC_CODE[] = {
0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, 0x0600,
0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, 0x0200,
0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x8000, 0x2071, 0x766d, 0x7003, 0x0002, 0xa006,
- 0x7012, 0x7016, 0x703a, 0x703e, 0x7033, 0x767d, 0x7037, 0x767d,
- 0x7007, 0x0001, 0x2061, 0x76bd, 0x6003, 0x0002, 0x007c, 0x0090,
- 0x242a, 0x0068, 0x242a, 0x2071, 0x766d, 0x2b78, 0x7818, 0xd084,
- 0x00c0, 0x242a, 0x2a60, 0x7820, 0xa08e, 0x0069, 0x00c0, 0x2511,
- 0x0079, 0x24ae, 0x007c, 0x2071, 0x766d, 0x7004, 0x0079, 0x2430,
- 0x2434, 0x2435, 0x243f, 0x2451, 0x007c, 0x0090, 0x243e, 0x0068,
- 0x243e, 0x2b78, 0x7818, 0xd084, 0x0040, 0x245d, 0x007c, 0x2b78,
- 0x2061, 0x76bd, 0x6008, 0xa08e, 0x0100, 0x0040, 0x244c, 0xa086,
- 0x0200, 0x0040, 0x2509, 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018,
- 0x007a, 0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0040, 0x2459,
+ 0x8000, 0x8000, 0x0000, 0x2071, 0x6f6d, 0x7003, 0x0002, 0xa006,
+ 0x7012, 0x7016, 0x703a, 0x703e, 0x7033, 0x6f7d, 0x7037, 0x6f7d,
+ 0x7007, 0x0001, 0x2061, 0x6fbd, 0x6003, 0x0002, 0x007c, 0x0090,
+ 0x22ea, 0x0068, 0x22ea, 0x2071, 0x6f6d, 0x2b78, 0x7818, 0xd084,
+ 0x00c0, 0x22ea, 0x2a60, 0x7820, 0xa08e, 0x0069, 0x00c0, 0x23d1,
+ 0x0079, 0x236e, 0x007c, 0x2071, 0x6f6d, 0x7004, 0x0079, 0x22f0,
+ 0x22f4, 0x22f5, 0x22ff, 0x2311, 0x007c, 0x0090, 0x22fe, 0x0068,
+ 0x22fe, 0x2b78, 0x7818, 0xd084, 0x0040, 0x231d, 0x007c, 0x2b78,
+ 0x2061, 0x6fbd, 0x6008, 0xa08e, 0x0100, 0x0040, 0x230c, 0xa086,
+ 0x0200, 0x0040, 0x23c9, 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018,
+ 0x007a, 0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0040, 0x2319,
0x007c, 0x2a60, 0x2b78, 0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a,
- 0x0040, 0x00c8, 0x2466, 0x61b0, 0x0079, 0x246e, 0x2100, 0xa08a,
- 0x0036, 0x00c8, 0x2505, 0x61b0, 0x0079, 0x24ae, 0x24e7, 0x2519,
- 0x2521, 0x2525, 0x252d, 0x2533, 0x2537, 0x2540, 0x2544, 0x254c,
- 0x2550, 0x2505, 0x2505, 0x2505, 0x2554, 0x2505, 0x2564, 0x257b,
- 0x2592, 0x260e, 0x2613, 0x2640, 0x268d, 0x269c, 0x26bd, 0x26f3,
- 0x26fd, 0x270a, 0x271d, 0x2735, 0x273e, 0x277b, 0x2781, 0x2505,
- 0x2791, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2795, 0x279b,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x27a3, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x27b0, 0x27b6,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x254c, 0x2550,
- 0x2505, 0x2505, 0x27c8, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2815, 0x28e2,
- 0x28f6, 0x28fd, 0x2960, 0x29bb, 0x29c6, 0x2a08, 0x2a15, 0x2a22,
- 0x2a25, 0x27cc, 0x2a4e, 0x2a95, 0x2aa2, 0x2b94, 0x2c7a, 0x2ca1,
- 0x2d8d, 0x2d9b, 0x2da8, 0x2de2, 0x713c, 0x0078, 0x24e7, 0x2021,
- 0x4000, 0x1078, 0x2cdc, 0x127e, 0x2091, 0x8000, 0x0068, 0x24f4,
- 0x7818, 0xd084, 0x0040, 0x24f7, 0x127f, 0x0078, 0x24eb, 0x781b,
+ 0x0040, 0x00c8, 0x2326, 0x61a8, 0x0079, 0x232e, 0x2100, 0xa08a,
+ 0x0036, 0x00c8, 0x23c5, 0x61a8, 0x0079, 0x236e, 0x23a7, 0x23d9,
+ 0x23e1, 0x23e5, 0x23ed, 0x23f3, 0x23f7, 0x2400, 0x2404, 0x240c,
+ 0x2410, 0x23c5, 0x23c5, 0x23c5, 0x2414, 0x23c5, 0x2424, 0x243b,
+ 0x2452, 0x24ce, 0x24d3, 0x2500, 0x254d, 0x255c, 0x257d, 0x25b3,
+ 0x25bd, 0x25ca, 0x25dd, 0x25f5, 0x25fe, 0x263b, 0x2641, 0x23c5,
+ 0x264c, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x2650, 0x2656,
+ 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5,
+ 0x265e, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x266b, 0x2671,
+ 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5,
+ 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5,
+ 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x240c, 0x2410,
+ 0x23c5, 0x23c5, 0x2683, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5,
+ 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x23c5, 0x26d0, 0x279d,
+ 0x27b1, 0x27b8, 0x281b, 0x286c, 0x2877, 0x28b9, 0x28c6, 0x28d3,
+ 0x28d6, 0x2687, 0x28ff, 0x2946, 0x23c5, 0x23c5, 0x23c5, 0x23c5,
+ 0x2a4d, 0x2a5b, 0x2a68, 0x2aa2, 0x713c, 0x0078, 0x23a7, 0x2021,
+ 0x4000, 0x1078, 0x29a0, 0x127e, 0x2091, 0x8000, 0x0068, 0x23b4,
+ 0x7818, 0xd084, 0x0040, 0x23b7, 0x127f, 0x0078, 0x23ab, 0x781b,
0x0001, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x2091, 0x4080, 0x7007,
0x0001, 0x2091, 0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078,
- 0x24e9, 0x2021, 0x4002, 0x0078, 0x24e9, 0x2021, 0x4003, 0x0078,
- 0x24e9, 0x2021, 0x4005, 0x0078, 0x24e9, 0x2021, 0x4006, 0x0078,
- 0x24e9, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078,
- 0x2ceb, 0x7823, 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28,
- 0x7a2c, 0x7824, 0x7930, 0x0078, 0x2cef, 0x7924, 0x7828, 0x2114,
- 0x200a, 0x0078, 0x24e7, 0x7924, 0x2114, 0x0078, 0x24e7, 0x2099,
- 0x0009, 0x20a1, 0x0009, 0x20a9, 0x0007, 0x53a3, 0x0078, 0x24e7,
- 0x7824, 0x2060, 0x0078, 0x2556, 0x2009, 0x0001, 0x2011, 0x000f,
- 0x2019, 0x0007, 0x0078, 0x24e7, 0x7d38, 0x7c3c, 0x0078, 0x251b,
- 0x7d38, 0x7c3c, 0x0078, 0x2527, 0x2061, 0x1000, 0x610c, 0xa006,
- 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0, 0x2558, 0x2010, 0xa005,
- 0x0040, 0x24e7, 0x0078, 0x250d, 0x2061, 0x7651, 0x7824, 0x7930,
- 0xa11a, 0x00c8, 0x2515, 0x8019, 0x0040, 0x2515, 0x604a, 0x6142,
+ 0x23a9, 0x2021, 0x4002, 0x0078, 0x23a9, 0x2021, 0x4003, 0x0078,
+ 0x23a9, 0x2021, 0x4005, 0x0078, 0x23a9, 0x2021, 0x4006, 0x0078,
+ 0x23a9, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078,
+ 0x29af, 0x7823, 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28,
+ 0x7a2c, 0x7824, 0x7930, 0x0078, 0x29b3, 0x7924, 0x7828, 0x2114,
+ 0x200a, 0x0078, 0x23a7, 0x7924, 0x2114, 0x0078, 0x23a7, 0x2099,
+ 0x0009, 0x20a1, 0x0009, 0x20a9, 0x0007, 0x53a3, 0x0078, 0x23a7,
+ 0x7824, 0x2060, 0x0078, 0x2416, 0x2009, 0x0001, 0x2011, 0x000f,
+ 0x2019, 0x0000, 0x0078, 0x23a7, 0x7d38, 0x7c3c, 0x0078, 0x23db,
+ 0x7d38, 0x7c3c, 0x0078, 0x23e7, 0x2061, 0x1000, 0x610c, 0xa006,
+ 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0, 0x2418, 0x2010, 0xa005,
+ 0x0040, 0x23a7, 0x0078, 0x23cd, 0x2061, 0x6f51, 0x7824, 0x7930,
+ 0xa11a, 0x00c8, 0x23d5, 0x8019, 0x0040, 0x23d5, 0x604a, 0x6142,
0x782c, 0x6052, 0x7828, 0x6056, 0xa006, 0x605a, 0x605e, 0x1078,
- 0x3c23, 0x0078, 0x24e7, 0x2061, 0x7651, 0x7824, 0x7930, 0xa11a,
- 0x00c8, 0x2515, 0x8019, 0x0040, 0x2515, 0x604e, 0x6146, 0x782c,
- 0x6062, 0x7828, 0x6066, 0xa006, 0x606a, 0x606e, 0x1078, 0x39f9,
- 0x0078, 0x24e7, 0xa02e, 0x2520, 0x81ff, 0x00c0, 0x2511, 0x7924,
- 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0x7674, 0x41a1, 0x1078,
- 0x2cb3, 0x0040, 0x2511, 0x2009, 0x0020, 0x1078, 0x2ceb, 0x701b,
- 0x25aa, 0x007c, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011,
- 0x0040, 0x25b6, 0xa096, 0x0019, 0x00c0, 0x2511, 0x810f, 0xa18c,
- 0x00ff, 0x0040, 0x2511, 0x710e, 0x700c, 0x8001, 0x0040, 0x25e7,
- 0x700e, 0x1078, 0x2cb3, 0x0040, 0x2511, 0x2009, 0x0020, 0x2061,
- 0x76bd, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399,
- 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x2ceb, 0x701b,
- 0x25da, 0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040,
- 0x25e5, 0xa096, 0x000a, 0x00c0, 0x2511, 0x0078, 0x25bc, 0x7010,
- 0x2068, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x36d4, 0x00c0, 0x25f5,
- 0x7007, 0x0003, 0x701b, 0x25f7, 0x007c, 0x1078, 0x3abc, 0x127e,
- 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099, 0x7674, 0x530a, 0x2100,
+ 0x38e3, 0x0078, 0x23a7, 0x2061, 0x6f51, 0x7824, 0x7930, 0xa11a,
+ 0x00c8, 0x23d5, 0x8019, 0x0040, 0x23d5, 0x604e, 0x6146, 0x782c,
+ 0x6062, 0x7828, 0x6066, 0xa006, 0x606a, 0x606e, 0x1078, 0x36b9,
+ 0x0078, 0x23a7, 0xa02e, 0x2520, 0x81ff, 0x00c0, 0x23d1, 0x7924,
+ 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0x6f74, 0x41a1, 0x1078,
+ 0x2977, 0x0040, 0x23d1, 0x2009, 0x0020, 0x1078, 0x29af, 0x701b,
+ 0x246a, 0x007c, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011,
+ 0x0040, 0x2476, 0xa096, 0x0019, 0x00c0, 0x23d1, 0x810f, 0xa18c,
+ 0x00ff, 0x0040, 0x23d1, 0x710e, 0x700c, 0x8001, 0x0040, 0x24a7,
+ 0x700e, 0x1078, 0x2977, 0x0040, 0x23d1, 0x2009, 0x0020, 0x2061,
+ 0x6fbd, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399,
+ 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x29af, 0x701b,
+ 0x249a, 0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040,
+ 0x24a5, 0xa096, 0x000a, 0x00c0, 0x23d1, 0x0078, 0x247c, 0x7010,
+ 0x2068, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x3394, 0x00c0, 0x24b5,
+ 0x7007, 0x0003, 0x701b, 0x24b7, 0x007c, 0x1078, 0x377c, 0x127e,
+ 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099, 0x6f74, 0x530a, 0x2100,
0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80,
- 0x000d, 0x2009, 0x0020, 0x127f, 0x0078, 0x2cef, 0x6198, 0x7824,
- 0x609a, 0x0078, 0x24e7, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827,
+ 0x000d, 0x2009, 0x0020, 0x127f, 0x0078, 0x29b3, 0x6190, 0x7824,
+ 0x6092, 0x0078, 0x23a7, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827,
0x4953, 0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104,
0x7832, 0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200,
0x603c, 0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e,
0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010,
0x20c1, 0x00f0, 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423,
- 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2ccb, 0x0040, 0x2515, 0x7c28,
- 0x7d2c, 0x1078, 0x391b, 0xd28c, 0x00c0, 0x2652, 0x1078, 0x38ab,
- 0x0078, 0x2654, 0x1078, 0x38e7, 0x00c0, 0x267e, 0x2061, 0x7d00,
- 0x127e, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000, 0x0040, 0x266c,
- 0x6010, 0xa06d, 0x0040, 0x266c, 0x683c, 0xa406, 0x00c0, 0x266c,
- 0x6840, 0xa506, 0x0040, 0x2677, 0x127f, 0xace0, 0x0008, 0x2001,
- 0x7615, 0x2004, 0xac02, 0x00c8, 0x2511, 0x0078, 0x2658, 0x1078,
- 0x66dd, 0x127f, 0x0040, 0x2511, 0x0078, 0x24e7, 0xa00e, 0x2001,
- 0x0005, 0x1078, 0x3abc, 0x127e, 0x2091, 0x8000, 0x1078, 0x6af2,
- 0x1078, 0x3a2c, 0x127f, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511,
- 0x1078, 0x2ccb, 0x0040, 0x2515, 0x1078, 0x3860, 0x1078, 0x392c,
- 0x0040, 0x2511, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x1078,
- 0x2ccb, 0x0040, 0x2515, 0x2031, 0x000f, 0x1078, 0x3860, 0x8631,
- 0x00c8, 0x26a5, 0x2019, 0x0005, 0x1078, 0x394d, 0x0040, 0x2511,
- 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2515, 0x8003, 0x800b, 0x810b,
- 0xa108, 0x1078, 0x452d, 0x0078, 0x24e7, 0x127e, 0x2091, 0x8000,
- 0x81ff, 0x00c0, 0x26ed, 0x2029, 0x00ff, 0x644c, 0x2400, 0xa506,
- 0x0040, 0x26e7, 0x2508, 0x1078, 0x37d7, 0x00c0, 0x26e7, 0x2031,
- 0x000f, 0x1078, 0x3860, 0x8631, 0x00c8, 0x26d1, 0x2019, 0x0004,
- 0x1078, 0x394d, 0x0040, 0x26ed, 0x7824, 0xa08a, 0x1000, 0x00c8,
- 0x26f0, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x452d, 0x8529,
- 0x00c8, 0x26c6, 0x127f, 0x0078, 0x24e7, 0x127f, 0x0078, 0x2511,
- 0x127f, 0x0078, 0x2515, 0x1078, 0x2ccb, 0x0040, 0x2515, 0x1078,
- 0x3890, 0x1078, 0x391b, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511,
- 0x1078, 0x2ccb, 0x0040, 0x2515, 0x1078, 0x3879, 0x1078, 0x391b,
- 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2ccb, 0x0040,
- 0x2515, 0x1078, 0x38ea, 0x0040, 0x2511, 0x1078, 0x371c, 0x1078,
- 0x38a4, 0x1078, 0x391b, 0x0078, 0x24e7, 0x1078, 0x2ccb, 0x0040,
- 0x2515, 0x1078, 0x3860, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078,
- 0x3958, 0x0c7f, 0x1078, 0x4914, 0x1078, 0x4857, 0x2c08, 0x1078,
- 0x7326, 0x1078, 0x391b, 0x0078, 0x24e7, 0x1078, 0x2ccb, 0x0040,
- 0x2515, 0x1078, 0x391b, 0x2208, 0x0078, 0x24e7, 0x157e, 0x0d7e,
- 0x0e7e, 0x2069, 0x76ff, 0x6810, 0x6914, 0xa10a, 0x00c8, 0x274a,
+ 0x81ff, 0x00c0, 0x23d1, 0x1078, 0x298f, 0x0040, 0x23d5, 0x7c28,
+ 0x7d2c, 0x1078, 0x35db, 0xd28c, 0x00c0, 0x2512, 0x1078, 0x356b,
+ 0x0078, 0x2514, 0x1078, 0x35a7, 0x00c0, 0x253e, 0x2061, 0x7500,
+ 0x127e, 0x2091, 0x8000, 0x6000, 0xa086, 0x0000, 0x0040, 0x252c,
+ 0x6010, 0xa06d, 0x0040, 0x252c, 0x683c, 0xa406, 0x00c0, 0x252c,
+ 0x6840, 0xa506, 0x0040, 0x2537, 0x127f, 0xace0, 0x0008, 0x2001,
+ 0x6f15, 0x2004, 0xac02, 0x00c8, 0x23d1, 0x0078, 0x2518, 0x1078,
+ 0x5fe3, 0x127f, 0x0040, 0x23d1, 0x0078, 0x23a7, 0xa00e, 0x2001,
+ 0x0005, 0x1078, 0x377c, 0x127e, 0x2091, 0x8000, 0x1078, 0x63a3,
+ 0x1078, 0x36ec, 0x127f, 0x0078, 0x23a7, 0x81ff, 0x00c0, 0x23d1,
+ 0x1078, 0x298f, 0x0040, 0x23d5, 0x1078, 0x3520, 0x1078, 0x35ec,
+ 0x0040, 0x23d1, 0x0078, 0x23a7, 0x81ff, 0x00c0, 0x23d1, 0x1078,
+ 0x298f, 0x0040, 0x23d5, 0x2031, 0x000f, 0x1078, 0x3520, 0x8631,
+ 0x00c8, 0x2565, 0x2019, 0x0005, 0x1078, 0x360d, 0x0040, 0x23d1,
+ 0x7828, 0xa08a, 0x1000, 0x00c8, 0x23d5, 0x8003, 0x800b, 0x810b,
+ 0xa108, 0x1078, 0x4160, 0x0078, 0x23a7, 0x127e, 0x2091, 0x8000,
+ 0x81ff, 0x00c0, 0x25ad, 0x2029, 0x007d, 0x644c, 0x2400, 0xa506,
+ 0x0040, 0x25a7, 0x2508, 0x1078, 0x3497, 0x00c0, 0x25a7, 0x2031,
+ 0x000f, 0x1078, 0x3520, 0x8631, 0x00c8, 0x2591, 0x2019, 0x0004,
+ 0x1078, 0x360d, 0x0040, 0x25ad, 0x7824, 0xa08a, 0x1000, 0x00c8,
+ 0x25b0, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4160, 0x8529,
+ 0x00c8, 0x2586, 0x127f, 0x0078, 0x23a7, 0x127f, 0x0078, 0x23d1,
+ 0x127f, 0x0078, 0x23d5, 0x1078, 0x298f, 0x0040, 0x23d5, 0x1078,
+ 0x3550, 0x1078, 0x35db, 0x0078, 0x23a7, 0x81ff, 0x00c0, 0x23d1,
+ 0x1078, 0x298f, 0x0040, 0x23d5, 0x1078, 0x3539, 0x1078, 0x35db,
+ 0x0078, 0x23a7, 0x81ff, 0x00c0, 0x23d1, 0x1078, 0x298f, 0x0040,
+ 0x23d5, 0x1078, 0x35aa, 0x0040, 0x23d1, 0x1078, 0x33dc, 0x1078,
+ 0x3564, 0x1078, 0x35db, 0x0078, 0x23a7, 0x1078, 0x298f, 0x0040,
+ 0x23d5, 0x1078, 0x3520, 0x62a0, 0x2019, 0x0005, 0x0c7e, 0x1078,
+ 0x3618, 0x0c7f, 0x1078, 0x4535, 0x1078, 0x4478, 0x2c08, 0x1078,
+ 0x6bca, 0x1078, 0x35db, 0x0078, 0x23a7, 0x1078, 0x298f, 0x0040,
+ 0x23d5, 0x1078, 0x35db, 0x2208, 0x0078, 0x23a7, 0x157e, 0x0d7e,
+ 0x0e7e, 0x2069, 0x6fff, 0x6810, 0x6914, 0xa10a, 0x00c8, 0x260a,
0x2009, 0x0000, 0x6816, 0x2011, 0x0000, 0x2019, 0x0000, 0x20a9,
- 0x007e, 0x2069, 0x7720, 0x2d04, 0xa075, 0x0040, 0x275f, 0x704c,
- 0x1078, 0x2769, 0xa210, 0x7080, 0x1078, 0x2769, 0xa318, 0x8d68,
- 0x00f0, 0x2753, 0x2300, 0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078,
- 0x24e7, 0x0f7e, 0x017e, 0xa07d, 0x0040, 0x2778, 0x2001, 0x0000,
- 0x8000, 0x2f0c, 0x81ff, 0x0040, 0x2778, 0x2178, 0x0078, 0x2770,
- 0x017f, 0x0f7f, 0x007c, 0x2069, 0x76ff, 0x6910, 0x629c, 0x0078,
- 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x614c, 0xa190, 0x2303, 0x2214,
- 0xa294, 0x00ff, 0x6068, 0xa084, 0xff00, 0xa215, 0x6364, 0x0078,
- 0x24e7, 0x613c, 0x6240, 0x0078, 0x24e7, 0x1078, 0x2ccb, 0x0040,
- 0x2515, 0x0078, 0x24e7, 0x1078, 0x2ccb, 0x0040, 0x2515, 0x6244,
- 0x6338, 0x0078, 0x24e7, 0x613c, 0x6240, 0x7824, 0x603e, 0x7b28,
- 0x6342, 0x2069, 0x7651, 0x831f, 0xa305, 0x6816, 0x0078, 0x24e7,
- 0x1078, 0x2ccb, 0x0040, 0x2515, 0x0078, 0x24e7, 0x1078, 0x2ccb,
- 0x0040, 0x2515, 0x7828, 0xa00d, 0x0040, 0x2515, 0x782c, 0xa005,
- 0x0040, 0x2515, 0x6244, 0x6146, 0x6338, 0x603a, 0x0078, 0x24e7,
- 0x7d38, 0x7c3c, 0x0078, 0x2594, 0x7824, 0xa09c, 0x00ff, 0xa39a,
- 0x0003, 0x00c8, 0x2511, 0x624c, 0xa084, 0xff00, 0x8007, 0xa206,
- 0x00c0, 0x27e4, 0x2001, 0x7640, 0x2009, 0x000c, 0x7a2c, 0x7b28,
- 0x7c3c, 0x7d38, 0x0078, 0x2cef, 0x81ff, 0x00c0, 0x2511, 0x1078,
- 0x2ccb, 0x0040, 0x2515, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
- 0x00c0, 0x2511, 0x0c7e, 0x1078, 0x2cb3, 0x0c7f, 0x0040, 0x2511,
- 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x69ec, 0x0040,
- 0x2511, 0x7007, 0x0003, 0x701b, 0x2806, 0x007c, 0x6830, 0xa086,
- 0x0100, 0x0040, 0x2511, 0xad80, 0x000e, 0x2009, 0x000c, 0x7a2c,
- 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2cef, 0x1078, 0x2cb3, 0x0040,
- 0x2511, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078,
- 0x2ceb, 0x701b, 0x2824, 0x007c, 0xade8, 0x000d, 0x6800, 0xa005,
- 0x0040, 0x2515, 0x6804, 0xd0ac, 0x0040, 0x2831, 0xd0a4, 0x0040,
- 0x2515, 0xd094, 0x0040, 0x283c, 0x0c7e, 0x2061, 0x0100, 0x6104,
- 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c, 0x0040, 0x2847, 0x0c7e,
- 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010, 0x6106, 0x0c7f, 0x2009,
- 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048, 0x285c, 0xd084, 0x0040,
- 0x285c, 0x6a28, 0xa28a, 0x007f, 0x00c8, 0x2515, 0xa288, 0x2303,
- 0x210c, 0xa18c, 0x00ff, 0x6152, 0xd0dc, 0x0040, 0x2865, 0x6828,
- 0xa08a, 0x007f, 0x00c8, 0x2515, 0x604e, 0x6808, 0xa08a, 0x0100,
- 0x0048, 0x2515, 0xa08a, 0x0841, 0x00c8, 0x2515, 0xa084, 0x0007,
- 0x00c0, 0x2515, 0x680c, 0xa005, 0x0040, 0x2515, 0x6810, 0xa005,
- 0x0040, 0x2515, 0x6848, 0x6940, 0xa10a, 0x00c8, 0x2515, 0x8001,
- 0x0040, 0x2515, 0x684c, 0x6944, 0xa10a, 0x00c8, 0x2515, 0x8001,
- 0x0040, 0x2515, 0x20a9, 0x001c, 0x2d98, 0x2069, 0x7651, 0x2da0,
- 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e, 0x8007, 0xa084, 0x00ff,
- 0x6042, 0x1078, 0x3c23, 0x1078, 0x39f9, 0x6000, 0xa086, 0x0000,
- 0x00c0, 0x28e0, 0x6808, 0x602a, 0x1078, 0x1dbe, 0x6818, 0x691c,
- 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217, 0x831f, 0x6016, 0x611a,
- 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040, 0x28c0, 0x6830, 0x6934,
- 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217, 0x831f, 0x0078, 0x28c2,
- 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e, 0x6312, 0x1078, 0x45b9,
- 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040, 0x602f, 0x0000, 0x0c7f,
- 0x60b4, 0xa005, 0x0040, 0x28dc, 0x6003, 0x0001, 0x2091, 0x301d,
- 0x1078, 0x3535, 0x0078, 0x28e0, 0x6003, 0x0004, 0x2091, 0x301d,
- 0x0078, 0x24e7, 0x6000, 0xa086, 0x0000, 0x0040, 0x2511, 0x2069,
- 0x7651, 0x7830, 0x6842, 0x7834, 0x6846, 0x2d00, 0x2009, 0x001c,
- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2cef, 0x81ff, 0x00c0,
- 0x2511, 0x1078, 0x3535, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511,
- 0x617c, 0x81ff, 0x0040, 0x2917, 0x703f, 0x0000, 0x2001, 0x7cc0,
- 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x127e, 0x2091,
- 0x8000, 0x1078, 0x2cef, 0x701b, 0x24e4, 0x127f, 0x007c, 0x703f,
- 0x0001, 0x0d7e, 0x2069, 0x7cc0, 0x20a9, 0x0040, 0x20a1, 0x7cc0,
- 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588, 0x2303, 0x210c, 0xa18c,
- 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002, 0x2100, 0xa506, 0x0040,
- 0x2949, 0x1078, 0x37d7, 0x00c0, 0x2949, 0x6014, 0x821c, 0x0048,
- 0x2941, 0xa398, 0x7cc0, 0xa085, 0xff00, 0x8007, 0x201a, 0x0078,
- 0x2948, 0xa398, 0x7cc0, 0x2324, 0xa4a4, 0xff00, 0xa405, 0x201a,
- 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8, 0x2950, 0x0078, 0x292d,
- 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a, 0x0d7f, 0x20a9, 0x0040,
- 0x20a1, 0x7cc0, 0x2099, 0x7cc0, 0x1078, 0x357e, 0x0078, 0x2906,
- 0x1078, 0x2ccb, 0x0040, 0x2515, 0x0c7e, 0x1078, 0x2cb3, 0x0c7f,
- 0x0040, 0x2511, 0x2001, 0x7652, 0x2004, 0xd0b4, 0x0040, 0x298d,
- 0x6000, 0xd08c, 0x00c0, 0x298d, 0x6004, 0xa084, 0x00ff, 0xa086,
- 0x0006, 0x00c0, 0x298d, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
- 0x1078, 0x6a24, 0x0040, 0x2511, 0x7007, 0x0003, 0x701b, 0x2989,
- 0x007c, 0x1078, 0x2ccb, 0x0040, 0x2515, 0x20a9, 0x0029, 0x2c98,
- 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9, 0x0002, 0xac80, 0x0004,
- 0x2098, 0xad80, 0x0004, 0x20a0, 0x1078, 0x357e, 0x20a9, 0x0004,
- 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078, 0x357e,
- 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a, 0x20a0,
- 0x1078, 0x357e, 0x2d00, 0x2009, 0x0029, 0x7a2c, 0x7b28, 0x7c3c,
- 0x7d38, 0x0078, 0x2cef, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2ccb,
- 0x0040, 0x2515, 0x1078, 0x3937, 0x0078, 0x24e7, 0x81ff, 0x00c0,
- 0x2511, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2515, 0x1078, 0x2ccb,
- 0x0040, 0x2515, 0x2031, 0x000f, 0x1078, 0x3860, 0x8631, 0x00c8,
- 0x29d4, 0x2019, 0x0004, 0x1078, 0x394d, 0x7924, 0x810f, 0x7a28,
- 0x1078, 0x29e4, 0x0078, 0x24e7, 0xa186, 0x00ff, 0x0040, 0x29ec,
- 0x1078, 0x29fc, 0x0078, 0x29fb, 0x2029, 0x007e, 0x2061, 0x7600,
- 0x644c, 0x2400, 0xa506, 0x0040, 0x29f8, 0x2508, 0x1078, 0x29fc,
- 0x8529, 0x00c8, 0x29f1, 0x007c, 0x1078, 0x37d7, 0x00c0, 0x2a07,
- 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x452d, 0x007c,
- 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2ccb, 0x0040, 0x2515, 0x1078,
- 0x3860, 0x1078, 0x3942, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511,
- 0x1078, 0x2ccb, 0x0040, 0x2515, 0x1078, 0x3860, 0x1078, 0x392c,
- 0x0078, 0x24e7, 0x6100, 0x0078, 0x24e7, 0x1078, 0x2ccb, 0x0040,
- 0x2515, 0x6004, 0xa086, 0x0707, 0x0040, 0x2515, 0x2001, 0x7600,
- 0x2004, 0xa086, 0x0003, 0x00c0, 0x2511, 0x0d7e, 0xace8, 0x000a,
- 0x7924, 0xd184, 0x0040, 0x2a3e, 0xace8, 0x0006, 0x680c, 0x8007,
- 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00, 0x8217,
- 0x0d7f, 0x6100, 0xa18c, 0x0200, 0x0078, 0x24e7, 0x7824, 0xa084,
- 0x00ff, 0xa086, 0x00ff, 0x0040, 0x2a58, 0x81ff, 0x00c0, 0x2511,
- 0x7828, 0xa08a, 0x1000, 0x00c8, 0x2515, 0x7924, 0xa18c, 0xff00,
- 0x810f, 0xa186, 0x00ff, 0x0040, 0x2a6c, 0xa182, 0x007f, 0x00c8,
- 0x2515, 0x2100, 0x1078, 0x206e, 0x027e, 0x0c7e, 0x127e, 0x2091,
- 0x8000, 0x2061, 0x7849, 0x601b, 0x0000, 0x601f, 0x0000, 0x2061,
- 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a, 0x6043,
- 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x355a, 0x1078,
- 0x45b0, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078, 0x29e4,
- 0x127f, 0x0c7f, 0x027f, 0x0078, 0x24e7, 0x7924, 0xa18c, 0xff00,
- 0x810f, 0x0c7e, 0x1078, 0x37a0, 0x2c08, 0x0c7f, 0x00c0, 0x2515,
- 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x60bc, 0xd09c, 0x0040,
- 0x2511, 0x1078, 0x2cb3, 0x0040, 0x2511, 0x6823, 0x0000, 0x7924,
- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2ceb, 0x701b, 0x2ab9,
- 0x007c, 0x2009, 0x0080, 0x1078, 0x37d7, 0x00c0, 0x2ac6, 0x6004,
- 0xa084, 0x00ff, 0xa086, 0x0006, 0x0040, 0x2aca, 0x2021, 0x400a,
- 0x0078, 0x24e9, 0x0d7e, 0xade8, 0x000d, 0x6900, 0x6a08, 0x6b0c,
- 0x6c10, 0x6d14, 0x6e18, 0x6820, 0xa0be, 0x0100, 0x0040, 0x2b3c,
- 0xa0be, 0x0112, 0x0040, 0x2b3c, 0xa0be, 0x0113, 0x0040, 0x2b3c,
- 0xa0be, 0x0114, 0x0040, 0x2b3c, 0xa0be, 0x0117, 0x0040, 0x2b3c,
- 0xa0be, 0x011a, 0x0040, 0x2b3c, 0xa0be, 0x0121, 0x0040, 0x2b32,
- 0xa0be, 0x0131, 0x0040, 0x2b32, 0xa0be, 0x0171, 0x0040, 0x2b3c,
- 0xa0be, 0x0173, 0x0040, 0x2b3c, 0xa0be, 0x01a1, 0x00c0, 0x2b05,
- 0x6830, 0x8007, 0x6832, 0x0078, 0x2b42, 0xa0be, 0x0212, 0x0040,
- 0x2b38, 0xa0be, 0x0213, 0x0040, 0x2b38, 0xa0be, 0x0214, 0x0040,
- 0x2b2a, 0xa0be, 0x0217, 0x0040, 0x2b24, 0xa0be, 0x021a, 0x00c0,
- 0x2b1e, 0x6838, 0x8007, 0x683a, 0x0078, 0x2b3c, 0xa0be, 0x0300,
- 0x0040, 0x2b3c, 0x0078, 0x2511, 0xad80, 0x0010, 0x20a9, 0x0007,
- 0x1078, 0x2b70, 0xad80, 0x000e, 0x20a9, 0x0001, 0x1078, 0x2b70,
- 0x0078, 0x2b3c, 0xad80, 0x000c, 0x1078, 0x2b7e, 0x0078, 0x2b42,
- 0xad80, 0x000e, 0x1078, 0x2b7e, 0xad80, 0x000c, 0x20a9, 0x0001,
- 0x1078, 0x2b70, 0x0c7e, 0x1078, 0x2cb3, 0x0040, 0x2b65, 0x6837,
- 0x0119, 0x684f, 0x0020, 0x685b, 0x0001, 0x810b, 0x697e, 0x6883,
- 0x0000, 0x6a86, 0x6b8a, 0x6c8e, 0x6d92, 0x6996, 0x689b, 0x0000,
- 0x0c7f, 0x0d7f, 0x6837, 0x0000, 0x1078, 0x6a08, 0x0040, 0x2511,
- 0x7007, 0x0003, 0x701b, 0x2b69, 0x007c, 0x0c7f, 0x0d7f, 0x0078,
- 0x2511, 0x6820, 0xa086, 0x8001, 0x0040, 0x2511, 0x0078, 0x24e7,
- 0x017e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x290a, 0x8108,
- 0x280a, 0x8108, 0x00f0, 0x2b72, 0x017f, 0x007c, 0x017e, 0x0a7e,
- 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c, 0x8000, 0x2054, 0x8000,
- 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108, 0x290a, 0x8108, 0x280a,
- 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x81ff, 0x00c0, 0x2511, 0x7924,
- 0x2140, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0080, 0x0048, 0x2515,
- 0xa182, 0x00ff, 0x00c8, 0x2515, 0x7a2c, 0x7b28, 0x6064, 0xa306,
- 0x00c0, 0x2bb5, 0x6068, 0xa246, 0xa8c4, 0xff00, 0x0040, 0x2515,
- 0xa206, 0x00c0, 0x2bb5, 0x0078, 0x2515, 0x0c7e, 0x1078, 0x2c1e,
- 0x2c68, 0x0c7f, 0x0040, 0x2bdc, 0xa0c6, 0x4000, 0x00c0, 0x2bc2,
- 0x0078, 0x2bd9, 0xa0c6, 0x4007, 0x00c0, 0x2bc9, 0x2408, 0x0078,
- 0x2bd9, 0xa0c6, 0x4008, 0x00c0, 0x2bd1, 0x2708, 0x2610, 0x0078,
- 0x2bd9, 0xa0c6, 0x4009, 0x00c0, 0x2bd7, 0x0078, 0x2bd9, 0x2001,
- 0x4006, 0x2020, 0x0078, 0x24e9, 0x017e, 0x0b7e, 0x0c7e, 0x0e7e,
- 0x2c70, 0x1078, 0x5b4e, 0x0040, 0x2c0c, 0x2d00, 0x601a, 0x2e58,
- 0x0e7f, 0x0e7e, 0x0c7e, 0x1078, 0x2cb3, 0x0c7f, 0x2b70, 0x0040,
- 0x2511, 0x6837, 0x0000, 0x2d00, 0x6012, 0x601f, 0x0001, 0x2001,
- 0x0000, 0x1078, 0x376f, 0x2001, 0x0002, 0x1078, 0x3783, 0x127e,
- 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009, 0x0002,
- 0x1078, 0x5bdb, 0xa085, 0x0001, 0x0e7f, 0x0c7f, 0x0b7f, 0x017f,
- 0x0040, 0x2511, 0x7007, 0x0003, 0x701b, 0x2c17, 0x007c, 0x6830,
- 0xa086, 0x0100, 0x00c0, 0x24e7, 0x0078, 0x2511, 0x0e7e, 0x0d7e,
- 0x2029, 0x0000, 0x2021, 0x0080, 0x20a9, 0x007f, 0x2071, 0x77a0,
- 0x2e04, 0xa005, 0x00c0, 0x2c32, 0x2100, 0xa406, 0x0040, 0x2c6f,
- 0x0078, 0x2c63, 0x2068, 0x6f10, 0x2700, 0xa306, 0x00c0, 0x2c54,
- 0x6e14, 0x2600, 0xa206, 0x00c0, 0x2c54, 0x2400, 0xa106, 0x00c0,
- 0x2c50, 0x2d60, 0xd884, 0x0040, 0x2c75, 0x6004, 0xa084, 0x00ff,
- 0xa086, 0x0006, 0x00c0, 0x2c75, 0x2001, 0x4000, 0x0078, 0x2c76,
- 0x2001, 0x4007, 0x0078, 0x2c76, 0x2400, 0xa106, 0x00c0, 0x2c63,
- 0x6e14, 0x87ff, 0x00c0, 0x2c5f, 0x86ff, 0x0040, 0x2c6f, 0x2001,
- 0x4008, 0x0078, 0x2c76, 0x8420, 0x8e70, 0x00f0, 0x2c28, 0x2001,
- 0x4009, 0x0078, 0x2c76, 0x2001, 0x0001, 0x0078, 0x2c76, 0x1078,
- 0x37a0, 0x00c0, 0x2c6b, 0x6312, 0x6216, 0xa006, 0xa005, 0x0d7f,
- 0x0e7f, 0x007c, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2cb3, 0x0040,
- 0x2511, 0x6837, 0x0000, 0x7824, 0xa005, 0x0040, 0x2515, 0xa096,
- 0x00ff, 0x0040, 0x2c8f, 0xa092, 0x0004, 0x00c8, 0x2515, 0x2010,
- 0x2d18, 0x1078, 0x2251, 0x0040, 0x2511, 0x7007, 0x0003, 0x701b,
- 0x2c9a, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2511, 0x0078,
- 0x24e7, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa182, 0x0080, 0x0048,
- 0x2515, 0xa182, 0x00ff, 0x00c8, 0x2515, 0x1078, 0x6924, 0x1078,
- 0x37bf, 0x0078, 0x24e7, 0x1078, 0x1314, 0x0040, 0x2cca, 0xa006,
- 0x6802, 0x7010, 0xa005, 0x00c0, 0x2cc2, 0x2d00, 0x7012, 0x7016,
- 0x0078, 0x2cc8, 0x7014, 0x6802, 0x2060, 0x2d00, 0x6006, 0x7016,
- 0xad80, 0x000d, 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x1078,
- 0x37d7, 0x00c0, 0x2cd9, 0xa6b4, 0x00ff, 0xa682, 0x0010, 0x0048,
- 0x2cda, 0xa066, 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff, 0x0040,
- 0x2ce7, 0x2168, 0x6904, 0x1078, 0x1348, 0x0078, 0x2cde, 0x7112,
- 0x7116, 0x017f, 0x007c, 0x2031, 0x0001, 0x0078, 0x2cf1, 0x2031,
- 0x0000, 0x2061, 0x76bd, 0x6606, 0x6112, 0x600e, 0x6226, 0x632a,
- 0x642e, 0x6532, 0x2c10, 0x1078, 0x137f, 0x7007, 0x0002, 0x701b,
- 0x24e7, 0x007c, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, 0x0000,
- 0x2001, 0x767b, 0x2004, 0xa005, 0x00c0, 0x2d1d, 0x0068, 0x2d1d,
- 0x7818, 0xd084, 0x00c0, 0x2d1d, 0x781b, 0x0001, 0x7a22, 0x7b26,
- 0x7c2a, 0x2091, 0x4080, 0x0078, 0x2d42, 0x017e, 0x0c7e, 0x0e7e,
- 0x2071, 0x766d, 0x7138, 0xa182, 0x0008, 0x0048, 0x2d2b, 0x7030,
- 0x2060, 0x0078, 0x2d3c, 0x7030, 0xa0e0, 0x0008, 0xac82, 0x76bd,
- 0x0048, 0x2d34, 0x2061, 0x767d, 0x2c00, 0x7032, 0x81ff, 0x00c0,
- 0x2d3a, 0x7036, 0x8108, 0x713a, 0x2262, 0x6306, 0x640a, 0x0e7f,
- 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071, 0x766d,
- 0x7038, 0xa005, 0x0040, 0x2d7e, 0x127e, 0x2091, 0x8000, 0x0068,
- 0x2d7d, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x2d7c,
- 0x0c7e, 0x781b, 0x0001, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004,
- 0x7826, 0x6008, 0x782a, 0x2091, 0x4080, 0x7038, 0x8001, 0x703a,
- 0xa005, 0x00c0, 0x2d72, 0x7033, 0x767d, 0x7037, 0x767d, 0x0c7f,
- 0x0078, 0x2d7c, 0xac80, 0x0008, 0xa0fa, 0x76bd, 0x0048, 0x2d7a,
- 0x2001, 0x767d, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f, 0x007c,
- 0x027e, 0x2001, 0x7652, 0x2004, 0xd0c4, 0x0040, 0x2d8b, 0x2011,
- 0x8014, 0x1078, 0x2d02, 0x027f, 0x007c, 0x81ff, 0x00c0, 0x2511,
- 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0x6032, 0x1078, 0x3535,
- 0x127f, 0x0078, 0x24e7, 0x7824, 0x2008, 0xa18c, 0xfffd, 0x00c0,
- 0x2da6, 0x61c8, 0xa10d, 0x61ca, 0x0078, 0x24e7, 0x0078, 0x2515,
- 0x81ff, 0x00c0, 0x2511, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2511,
- 0x2001, 0x7652, 0x2004, 0xd0a4, 0x00c0, 0x2511, 0x1078, 0x2ccb,
- 0x0040, 0x2515, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
- 0x2dc5, 0x7828, 0xa005, 0x0040, 0x24e7, 0x0c7e, 0x1078, 0x2cb3,
- 0x0c7f, 0x0040, 0x2511, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
- 0xc0fd, 0x683a, 0x1078, 0x6a91, 0x0040, 0x2511, 0x7007, 0x0003,
- 0x701b, 0x2ddb, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2511,
- 0x0078, 0x24e7, 0x2001, 0x7600, 0x2004, 0xa086, 0x0003, 0x00c0,
- 0x2511, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2cb3,
- 0x0040, 0x2511, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000,
- 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x37d7,
- 0x00c0, 0x2e28, 0x6004, 0xa0c6, 0x0707, 0x0040, 0x2e28, 0xa084,
- 0x00ff, 0xa0c6, 0x0006, 0x00c0, 0x2e28, 0x87ff, 0x0040, 0x2e1b,
+ 0x007d, 0x2069, 0x7020, 0x2d04, 0xa075, 0x0040, 0x261f, 0x704c,
+ 0x1078, 0x2629, 0xa210, 0x7080, 0x1078, 0x2629, 0xa318, 0x8d68,
+ 0x00f0, 0x2613, 0x2300, 0xa218, 0x0e7f, 0x0d7f, 0x157f, 0x0078,
+ 0x23a7, 0x0f7e, 0x017e, 0xa07d, 0x0040, 0x2638, 0x2001, 0x0000,
+ 0x8000, 0x2f0c, 0x81ff, 0x0040, 0x2638, 0x2178, 0x0078, 0x2630,
+ 0x017f, 0x0f7f, 0x007c, 0x2069, 0x6fff, 0x6910, 0x6294, 0x0078,
+ 0x23a7, 0x81ff, 0x00c0, 0x23d1, 0x614c, 0xa190, 0x21d3, 0x2214,
+ 0xa294, 0x00ff, 0x0078, 0x23a7, 0x613c, 0x6240, 0x0078, 0x23a7,
+ 0x1078, 0x298f, 0x0040, 0x23d5, 0x0078, 0x23a7, 0x1078, 0x298f,
+ 0x0040, 0x23d5, 0x6244, 0x6338, 0x0078, 0x23a7, 0x613c, 0x6240,
+ 0x7824, 0x603e, 0x7b28, 0x6342, 0x2069, 0x6f51, 0x831f, 0xa305,
+ 0x6816, 0x0078, 0x23a7, 0x1078, 0x298f, 0x0040, 0x23d5, 0x0078,
+ 0x23a7, 0x1078, 0x298f, 0x0040, 0x23d5, 0x7828, 0xa00d, 0x0040,
+ 0x23d5, 0x782c, 0xa005, 0x0040, 0x23d5, 0x6244, 0x6146, 0x6338,
+ 0x603a, 0x0078, 0x23a7, 0x7d38, 0x7c3c, 0x0078, 0x2454, 0x7824,
+ 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x00c8, 0x23d1, 0x624c, 0xa084,
+ 0xff00, 0x8007, 0xa206, 0x00c0, 0x269f, 0x2001, 0x6f40, 0x2009,
+ 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x29b3, 0x81ff,
+ 0x00c0, 0x23d1, 0x1078, 0x298f, 0x0040, 0x23d5, 0x6004, 0xa084,
+ 0x00ff, 0xa086, 0x0006, 0x00c0, 0x23d1, 0x0c7e, 0x1078, 0x2977,
+ 0x0c7f, 0x0040, 0x23d1, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
+ 0x1078, 0x62b9, 0x0040, 0x23d1, 0x7007, 0x0003, 0x701b, 0x26c1,
+ 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x23d1, 0xad80, 0x000e,
+ 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x29b3,
+ 0x1078, 0x2977, 0x0040, 0x23d1, 0x2009, 0x001c, 0x7a2c, 0x7b28,
+ 0x7c3c, 0x7d38, 0x1078, 0x29af, 0x701b, 0x26df, 0x007c, 0xade8,
+ 0x000d, 0x6800, 0xa005, 0x0040, 0x23d5, 0x6804, 0xd0ac, 0x0040,
+ 0x26ec, 0xd0a4, 0x0040, 0x23d5, 0xd094, 0x0040, 0x26f7, 0x0c7e,
+ 0x2061, 0x0100, 0x6104, 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c,
+ 0x0040, 0x2702, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010,
+ 0x6106, 0x0c7f, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048,
+ 0x2717, 0xd084, 0x0040, 0x2717, 0x6a28, 0xa28a, 0x007e, 0x00c8,
+ 0x23d5, 0xa288, 0x21d3, 0x210c, 0xa18c, 0x00ff, 0x6152, 0xd0dc,
+ 0x0040, 0x2720, 0x6828, 0xa08a, 0x007e, 0x00c8, 0x23d5, 0x604e,
+ 0x6808, 0xa08a, 0x0100, 0x0048, 0x23d5, 0xa08a, 0x0841, 0x00c8,
+ 0x23d5, 0xa084, 0x0007, 0x00c0, 0x23d5, 0x680c, 0xa005, 0x0040,
+ 0x23d5, 0x6810, 0xa005, 0x0040, 0x23d5, 0x6848, 0x6940, 0xa10a,
+ 0x00c8, 0x23d5, 0x8001, 0x0040, 0x23d5, 0x684c, 0x6944, 0xa10a,
+ 0x00c8, 0x23d5, 0x8001, 0x0040, 0x23d5, 0x20a9, 0x001c, 0x2d98,
+ 0x2069, 0x6f51, 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e,
+ 0x8007, 0xa084, 0x00ff, 0x6042, 0x1078, 0x38e3, 0x1078, 0x36b9,
+ 0x6000, 0xa086, 0x0000, 0x00c0, 0x279b, 0x6808, 0x602a, 0x1078,
+ 0x1d32, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217,
+ 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040,
+ 0x277b, 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217,
+ 0x831f, 0x0078, 0x277d, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e,
+ 0x6312, 0x1078, 0x41ec, 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040,
+ 0x602f, 0x0000, 0x0c7f, 0x60ac, 0xa005, 0x0040, 0x2797, 0x6003,
+ 0x0001, 0x2091, 0x301d, 0x1078, 0x31f5, 0x0078, 0x279b, 0x6003,
+ 0x0004, 0x2091, 0x301d, 0x0078, 0x23a7, 0x6000, 0xa086, 0x0000,
+ 0x0040, 0x23d1, 0x2069, 0x6f51, 0x7830, 0x6842, 0x7834, 0x6846,
+ 0x2d00, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078,
+ 0x29b3, 0x81ff, 0x00c0, 0x23d1, 0x1078, 0x31f5, 0x0078, 0x23a7,
+ 0x81ff, 0x00c0, 0x23d1, 0x6174, 0x81ff, 0x0040, 0x27d2, 0x703f,
+ 0x0000, 0x2001, 0x74c0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c,
+ 0x7d38, 0x127e, 0x2091, 0x8000, 0x1078, 0x29b3, 0x701b, 0x23a4,
+ 0x127f, 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0x74c0, 0x20a9,
+ 0x0040, 0x20a1, 0x74c0, 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588,
+ 0x21d3, 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002,
+ 0x2100, 0xa506, 0x0040, 0x2804, 0x1078, 0x3497, 0x00c0, 0x2804,
+ 0x6014, 0x821c, 0x0048, 0x27fc, 0xa398, 0x74c0, 0xa085, 0xff00,
+ 0x8007, 0x201a, 0x0078, 0x2803, 0xa398, 0x74c0, 0x2324, 0xa4a4,
+ 0xff00, 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x007f, 0x00c8,
+ 0x280b, 0x0078, 0x27e8, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a,
+ 0x0d7f, 0x20a9, 0x0040, 0x20a1, 0x74c0, 0x2099, 0x74c0, 0x1078,
+ 0x323e, 0x0078, 0x27c1, 0x1078, 0x298f, 0x0040, 0x23d5, 0x0c7e,
+ 0x1078, 0x2977, 0x0c7f, 0x0040, 0x23d1, 0x2001, 0x6f52, 0x2004,
+ 0xd0b4, 0x0040, 0x2848, 0x6000, 0xd08c, 0x00c0, 0x2848, 0x6004,
+ 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2848, 0x6837, 0x0000,
+ 0x6838, 0xc0fd, 0x683a, 0x1078, 0x62d5, 0x0040, 0x23d1, 0x7007,
+ 0x0003, 0x701b, 0x2844, 0x007c, 0x1078, 0x298f, 0x0040, 0x23d5,
+ 0x20a9, 0x0029, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9,
+ 0x0004, 0xac80, 0x0006, 0x2098, 0xad80, 0x0006, 0x20a0, 0x1078,
+ 0x323e, 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098, 0xad80, 0x000a,
+ 0x20a0, 0x1078, 0x323e, 0x2d00, 0x2009, 0x0029, 0x7a2c, 0x7b28,
+ 0x7c3c, 0x7d38, 0x0078, 0x29b3, 0x81ff, 0x00c0, 0x23d1, 0x1078,
+ 0x298f, 0x0040, 0x23d5, 0x1078, 0x35f7, 0x0078, 0x23a7, 0x81ff,
+ 0x00c0, 0x23d1, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x23d5, 0x1078,
+ 0x298f, 0x0040, 0x23d5, 0x2031, 0x000f, 0x1078, 0x3520, 0x8631,
+ 0x00c8, 0x2885, 0x2019, 0x0004, 0x1078, 0x360d, 0x7924, 0x810f,
+ 0x7a28, 0x1078, 0x2895, 0x0078, 0x23a7, 0xa186, 0x00ff, 0x0040,
+ 0x289d, 0x1078, 0x28ad, 0x0078, 0x28ac, 0x2029, 0x007d, 0x2061,
+ 0x6f00, 0x644c, 0x2400, 0xa506, 0x0040, 0x28a9, 0x2508, 0x1078,
+ 0x28ad, 0x8529, 0x00c8, 0x28a2, 0x007c, 0x1078, 0x3497, 0x00c0,
+ 0x28b8, 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4160,
+ 0x007c, 0x81ff, 0x00c0, 0x23d1, 0x1078, 0x298f, 0x0040, 0x23d5,
+ 0x1078, 0x3520, 0x1078, 0x3602, 0x0078, 0x23a7, 0x81ff, 0x00c0,
+ 0x23d1, 0x1078, 0x298f, 0x0040, 0x23d5, 0x1078, 0x3520, 0x1078,
+ 0x35ec, 0x0078, 0x23a7, 0x6100, 0x0078, 0x23a7, 0x1078, 0x298f,
+ 0x0040, 0x23d5, 0x6004, 0xa086, 0x0707, 0x0040, 0x23d5, 0x2001,
+ 0x6f00, 0x2004, 0xa086, 0x0003, 0x00c0, 0x23d1, 0x0d7e, 0xace8,
+ 0x000a, 0x7924, 0xd184, 0x0040, 0x28ef, 0xace8, 0x0006, 0x680c,
+ 0x8007, 0x783e, 0x6808, 0x8007, 0x783a, 0x6b04, 0x831f, 0x6a00,
+ 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200, 0x0078, 0x23a7, 0x7824,
+ 0xa084, 0x00ff, 0xa086, 0x00ff, 0x0040, 0x2909, 0x81ff, 0x00c0,
+ 0x23d1, 0x7828, 0xa08a, 0x1000, 0x00c8, 0x23d5, 0x7924, 0xa18c,
+ 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040, 0x291d, 0xa182, 0x007e,
+ 0x00c8, 0x23d5, 0x2100, 0x1078, 0x1fb7, 0x027e, 0x0c7e, 0x127e,
+ 0x2091, 0x8000, 0x2061, 0x70c9, 0x601b, 0x0000, 0x601f, 0x0000,
+ 0x2061, 0x0100, 0x6030, 0xa084, 0x00ff, 0x810f, 0xa105, 0x604a,
+ 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011, 0x321a,
+ 0x1078, 0x41e3, 0x7924, 0xa18c, 0xff00, 0x810f, 0x7a28, 0x1078,
+ 0x2895, 0x127f, 0x0c7f, 0x027f, 0x0078, 0x23a7, 0x7924, 0xa18c,
+ 0xff00, 0x810f, 0x0c7e, 0x1078, 0x3460, 0x2c08, 0x0c7f, 0x00c0,
+ 0x23d5, 0x0078, 0x23a7, 0x017e, 0x2008, 0x2044, 0x8000, 0x204c,
+ 0x8000, 0x290a, 0x8108, 0x280a, 0x8108, 0x00f0, 0x2955, 0x017f,
+ 0x007c, 0x017e, 0x0a7e, 0x0b7e, 0x2008, 0x2044, 0x8000, 0x204c,
+ 0x8000, 0x2054, 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a, 0x8108,
+ 0x290a, 0x8108, 0x280a, 0x0b7f, 0x0a7f, 0x017f, 0x007c, 0x1078,
+ 0x12c5, 0x0040, 0x298e, 0xa006, 0x6802, 0x7010, 0xa005, 0x00c0,
+ 0x2986, 0x2d00, 0x7012, 0x7016, 0x0078, 0x298c, 0x7014, 0x6802,
+ 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, 0x000d, 0x007c, 0x7e24,
+ 0x860f, 0xa18c, 0x00ff, 0x1078, 0x3497, 0x00c0, 0x299d, 0xa6b4,
+ 0x00ff, 0xa682, 0x0010, 0x0048, 0x299e, 0xa066, 0x8cff, 0x007c,
+ 0x017e, 0x7110, 0x81ff, 0x0040, 0x29ab, 0x2168, 0x6904, 0x1078,
+ 0x12f9, 0x0078, 0x29a2, 0x7112, 0x7116, 0x017f, 0x007c, 0x2031,
+ 0x0001, 0x0078, 0x29b5, 0x2031, 0x0000, 0x2061, 0x6fbd, 0x6606,
+ 0x6112, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078,
+ 0x1330, 0x7007, 0x0002, 0x701b, 0x23a7, 0x007c, 0x0f7e, 0x127e,
+ 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x6f7b, 0x2004, 0xa005,
+ 0x00c0, 0x29e0, 0x0068, 0x29e0, 0x7818, 0xd084, 0x00c0, 0x29e0,
+ 0x781b, 0x0001, 0x7a22, 0x7b26, 0x2091, 0x4080, 0x0078, 0x2a04,
+ 0x017e, 0x0c7e, 0x0e7e, 0x2071, 0x6f6d, 0x7138, 0xa182, 0x0008,
+ 0x0048, 0x29ee, 0x7030, 0x2060, 0x0078, 0x29ff, 0x7030, 0xa0e0,
+ 0x0008, 0xac82, 0x6fbd, 0x0048, 0x29f7, 0x2061, 0x6f7d, 0x2c00,
+ 0x7032, 0x81ff, 0x00c0, 0x29fd, 0x7036, 0x8108, 0x713a, 0x2262,
+ 0x6306, 0x0e7f, 0x0c7f, 0x017f, 0x127f, 0x0f7f, 0x007c, 0x0e7e,
+ 0x2071, 0x6f6d, 0x7038, 0xa005, 0x0040, 0x2a3e, 0x127e, 0x2091,
+ 0x8000, 0x0068, 0x2a3d, 0x0f7e, 0x2079, 0x0000, 0x7818, 0xd084,
+ 0x00c0, 0x2a3c, 0x0c7e, 0x781b, 0x0001, 0x7034, 0x2060, 0x2c04,
+ 0x7822, 0x6004, 0x7826, 0x2091, 0x4080, 0x7038, 0x8001, 0x703a,
+ 0xa005, 0x00c0, 0x2a32, 0x7033, 0x6f7d, 0x7037, 0x6f7d, 0x0c7f,
+ 0x0078, 0x2a3c, 0xac80, 0x0008, 0xa0fa, 0x6fbd, 0x0048, 0x2a3a,
+ 0x2001, 0x6f7d, 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f, 0x007c,
+ 0x027e, 0x2001, 0x6f52, 0x2004, 0xd0c4, 0x0040, 0x2a4b, 0x2011,
+ 0x8014, 0x1078, 0x29c6, 0x027f, 0x007c, 0x81ff, 0x00c0, 0x23d1,
+ 0x127e, 0x2091, 0x8000, 0x6030, 0xc08d, 0x6032, 0x1078, 0x31f5,
+ 0x127f, 0x0078, 0x23a7, 0x7824, 0x2008, 0xa18c, 0xfffd, 0x00c0,
+ 0x2a66, 0x61b4, 0xa10d, 0x61b6, 0x0078, 0x23a7, 0x0078, 0x23d5,
+ 0x81ff, 0x00c0, 0x23d1, 0x6000, 0xa086, 0x0003, 0x00c0, 0x23d1,
+ 0x2001, 0x6f52, 0x2004, 0xd0a4, 0x00c0, 0x23d1, 0x1078, 0x298f,
+ 0x0040, 0x23d5, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0,
+ 0x2a85, 0x7828, 0xa005, 0x0040, 0x23a7, 0x0c7e, 0x1078, 0x2977,
+ 0x0c7f, 0x0040, 0x23d1, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838,
+ 0xc0fd, 0x683a, 0x1078, 0x6342, 0x0040, 0x23d1, 0x7007, 0x0003,
+ 0x701b, 0x2a9b, 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x23d1,
+ 0x0078, 0x23a7, 0x2001, 0x6f00, 0x2004, 0xa086, 0x0003, 0x00c0,
+ 0x23d1, 0x7f24, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2977,
+ 0x0040, 0x23d1, 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000,
+ 0x702f, 0x0000, 0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x3497,
+ 0x00c0, 0x2ae8, 0x6004, 0xa0c6, 0x0707, 0x0040, 0x2ae8, 0xa084,
+ 0x00ff, 0xa0c6, 0x0006, 0x00c0, 0x2ae8, 0x87ff, 0x0040, 0x2adb,
0xac80, 0x0006, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078,
- 0x2b7e, 0x0078, 0x2e24, 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9,
- 0x0004, 0x53a3, 0x1078, 0x2b7e, 0x21a2, 0x94a0, 0xa6b0, 0x0005,
- 0x8108, 0xa186, 0x007e, 0x0040, 0x2e33, 0xa686, 0x0028, 0x0040,
- 0x2e3c, 0x0078, 0x2dfe, 0x86ff, 0x00c0, 0x2e3a, 0x7120, 0x810b,
- 0x0078, 0x24e7, 0x702f, 0x0001, 0x711e, 0x7020, 0xa600, 0x7022,
- 0x772a, 0x2061, 0x76bd, 0x6007, 0x0000, 0x6612, 0x7024, 0x600e,
- 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x137f, 0x7007,
- 0x0002, 0x701b, 0x2e54, 0x007c, 0x702c, 0xa005, 0x00c0, 0x2e66,
- 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0x76bd,
- 0x6224, 0x6328, 0x642c, 0x6530, 0x0078, 0x2dfe, 0x7120, 0x810b,
- 0x0078, 0x24e7, 0x127e, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071,
- 0x7600, 0x6044, 0xd0a4, 0x00c0, 0x2e93, 0xd084, 0x0040, 0x2e7c,
- 0x1078, 0x2fba, 0x0078, 0x2e8f, 0xd08c, 0x0040, 0x2e83, 0x1078,
- 0x2ed1, 0x0078, 0x2e8f, 0xd094, 0x0040, 0x2e8a, 0x1078, 0x2eb4,
- 0x0078, 0x2e8f, 0xd09c, 0x0040, 0x2e8f, 0x1078, 0x2e9d, 0x0e7f,
- 0x0c7f, 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c, 0x00c0, 0x2e9a,
- 0xc19d, 0x612a, 0x017f, 0x0078, 0x2e8f, 0x6043, 0x0040, 0x6043,
- 0x0000, 0x706f, 0x0000, 0x7087, 0x0001, 0x70a7, 0x0000, 0x2009,
- 0x7cc0, 0x200b, 0x0000, 0x7073, 0x000f, 0x2009, 0x000f, 0x2011,
- 0x34f5, 0x1078, 0x45b0, 0x007c, 0x7070, 0xa005, 0x00c0, 0x2ed0,
- 0x2011, 0x34f5, 0x1078, 0x4520, 0x6043, 0x0020, 0x6043, 0x0000,
- 0x6044, 0xd08c, 0x00c0, 0x2ecc, 0x7083, 0x0000, 0x6043, 0x0090,
- 0x6043, 0x0010, 0x0078, 0x2ed0, 0x7077, 0x0000, 0x0078, 0x2ed0,
- 0x007c, 0x7074, 0xa08a, 0x0003, 0x00c8, 0x2eda, 0x1079, 0x2edd,
- 0x0078, 0x2edc, 0x1078, 0x12d5, 0x007c, 0x2ee0, 0x2f2f, 0x2fb9,
- 0x0f7e, 0x7077, 0x0001, 0x20e1, 0xa000, 0x20e1, 0x8700, 0x1078,
- 0x1dbe, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0x7b00, 0x207b,
+ 0x2961, 0x0078, 0x2ae4, 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9,
+ 0x0004, 0x53a3, 0x1078, 0x2961, 0x21a2, 0x94a0, 0xa6b0, 0x0005,
+ 0x8108, 0xa186, 0x007e, 0x0040, 0x2af3, 0xa686, 0x0028, 0x0040,
+ 0x2afc, 0x0078, 0x2abe, 0x86ff, 0x00c0, 0x2afa, 0x7120, 0x810b,
+ 0x0078, 0x23a7, 0x702f, 0x0001, 0x711e, 0x7020, 0xa600, 0x7022,
+ 0x772a, 0x2061, 0x6fbd, 0x6007, 0x0000, 0x6612, 0x7024, 0x600e,
+ 0x6226, 0x632a, 0x642e, 0x6532, 0x2c10, 0x1078, 0x1330, 0x7007,
+ 0x0002, 0x701b, 0x2b14, 0x007c, 0x702c, 0xa005, 0x00c0, 0x2b26,
+ 0x711c, 0x7024, 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0x6fbd,
+ 0x6224, 0x6328, 0x642c, 0x6530, 0x0078, 0x2abe, 0x7120, 0x810b,
+ 0x0078, 0x23a7, 0x127e, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071,
+ 0x6f00, 0x6044, 0xd0a4, 0x00c0, 0x2b53, 0xd084, 0x0040, 0x2b3c,
+ 0x1078, 0x2c7a, 0x0078, 0x2b4f, 0xd08c, 0x0040, 0x2b43, 0x1078,
+ 0x2b91, 0x0078, 0x2b4f, 0xd094, 0x0040, 0x2b4a, 0x1078, 0x2b74,
+ 0x0078, 0x2b4f, 0xd09c, 0x0040, 0x2b4f, 0x1078, 0x2b5d, 0x0e7f,
+ 0x0c7f, 0x127f, 0x007c, 0x017e, 0x6128, 0xd19c, 0x00c0, 0x2b5a,
+ 0xc19d, 0x612a, 0x017f, 0x0078, 0x2b4f, 0x6043, 0x0040, 0x6043,
+ 0x0000, 0x7067, 0x0000, 0x707f, 0x0001, 0x709f, 0x0000, 0x2009,
+ 0x74c0, 0x200b, 0x0000, 0x706b, 0x000f, 0x2009, 0x000f, 0x2011,
+ 0x31b5, 0x1078, 0x41e3, 0x007c, 0x7068, 0xa005, 0x00c0, 0x2b90,
+ 0x2011, 0x31b5, 0x1078, 0x4153, 0x6043, 0x0020, 0x6043, 0x0000,
+ 0x6044, 0xd08c, 0x00c0, 0x2b8c, 0x707b, 0x0000, 0x6043, 0x0090,
+ 0x6043, 0x0010, 0x0078, 0x2b90, 0x706f, 0x0000, 0x0078, 0x2b90,
+ 0x007c, 0x706c, 0xa08a, 0x0003, 0x00c8, 0x2b9a, 0x1079, 0x2b9d,
+ 0x0078, 0x2b9c, 0x1078, 0x1286, 0x007c, 0x2ba0, 0x2bef, 0x2c79,
+ 0x0f7e, 0x706f, 0x0001, 0x20e1, 0xa000, 0x20e1, 0x8700, 0x1078,
+ 0x1d32, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2079, 0x7300, 0x207b,
0x2200, 0x7807, 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813,
0x0138, 0x7817, 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823,
0xffff, 0x7827, 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079,
- 0x7b0c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0x7605, 0x20a1,
- 0x7b0e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0x7b12, 0x207b, 0x0000,
- 0x7807, 0x0000, 0x2099, 0x7b00, 0x20a1, 0x020b, 0x20a9, 0x0014,
- 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x1078, 0x351c, 0x0f7f,
- 0x707b, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x007c, 0x0d7e,
- 0x7078, 0x707b, 0x0000, 0xa025, 0x0040, 0x2fa3, 0x6020, 0xd0b4,
- 0x00c0, 0x2fa1, 0x7184, 0x81ff, 0x0040, 0x2f8a, 0xa486, 0x000c,
- 0x00c0, 0x2f95, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0x7b80,
- 0x2019, 0x7b00, 0x220c, 0x2304, 0xa106, 0x00c0, 0x2f61, 0x8210,
- 0x8318, 0x00f0, 0x2f4a, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f,
- 0xf0f0, 0x6043, 0x0006, 0x7077, 0x0002, 0x7083, 0x0002, 0x0078,
- 0x2fa1, 0x2069, 0x7b80, 0x6930, 0xa18e, 0x1101, 0x00c0, 0x2f95,
- 0x6834, 0xa005, 0x00c0, 0x2f95, 0x6900, 0xa18c, 0x00ff, 0x00c0,
- 0x2f75, 0x6804, 0xa005, 0x0040, 0x2f8a, 0x2011, 0x7b8e, 0x2019,
- 0x7605, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0048, 0x2f88,
- 0x00c0, 0x2f95, 0x8210, 0x8318, 0x00f0, 0x2f7b, 0x0078, 0x2f95,
- 0x7087, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7b80,
+ 0x730c, 0x207b, 0x1101, 0x7807, 0x0000, 0x2099, 0x6f05, 0x20a1,
+ 0x730e, 0x20a9, 0x0004, 0x53a3, 0x2079, 0x7312, 0x207b, 0x0000,
+ 0x7807, 0x0000, 0x2099, 0x7300, 0x20a1, 0x020b, 0x20a9, 0x0014,
+ 0x53a6, 0x60c3, 0x000c, 0x600f, 0x0000, 0x1078, 0x31dc, 0x0f7f,
+ 0x7073, 0x0000, 0x6043, 0x0008, 0x6043, 0x0000, 0x007c, 0x0d7e,
+ 0x7070, 0x7073, 0x0000, 0xa025, 0x0040, 0x2c63, 0x6020, 0xd0b4,
+ 0x00c0, 0x2c61, 0x717c, 0x81ff, 0x0040, 0x2c4a, 0xa486, 0x000c,
+ 0x00c0, 0x2c55, 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0x7380,
+ 0x2019, 0x7300, 0x220c, 0x2304, 0xa106, 0x00c0, 0x2c21, 0x8210,
+ 0x8318, 0x00f0, 0x2c0a, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f,
+ 0xf0f0, 0x6043, 0x0006, 0x706f, 0x0002, 0x707b, 0x0002, 0x0078,
+ 0x2c61, 0x2069, 0x7380, 0x6930, 0xa18e, 0x1101, 0x00c0, 0x2c55,
+ 0x6834, 0xa005, 0x00c0, 0x2c55, 0x6900, 0xa18c, 0x00ff, 0x00c0,
+ 0x2c35, 0x6804, 0xa005, 0x0040, 0x2c4a, 0x2011, 0x738e, 0x2019,
+ 0x6f05, 0x20a9, 0x0004, 0x220c, 0x2304, 0xa102, 0x0048, 0x2c48,
+ 0x00c0, 0x2c55, 0x8210, 0x8318, 0x00f0, 0x2c3b, 0x0078, 0x2c55,
+ 0x707f, 0x0000, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7380,
0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008, 0x6043,
- 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2fa1, 0x60c3, 0x000c, 0x1078,
- 0x351c, 0x0d7f, 0x007c, 0x6020, 0xd0b4, 0x00c0, 0x2fa1, 0x60c3,
- 0x000c, 0x2011, 0x7840, 0x2013, 0x0000, 0x707b, 0x0000, 0x20e1,
- 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x552b, 0x0078,
- 0x2fa1, 0x007c, 0x7080, 0xa08a, 0x001d, 0x00c8, 0x2fc3, 0x1079,
- 0x2fc6, 0x0078, 0x2fc5, 0x1078, 0x12d5, 0x007c, 0x2fea, 0x2ff9,
- 0x302a, 0x303f, 0x306f, 0x3097, 0x30c7, 0x30f1, 0x3121, 0x3147,
- 0x3192, 0x31b4, 0x31d8, 0x31ee, 0x3214, 0x3227, 0x3230, 0x3249,
- 0x3277, 0x329f, 0x32cd, 0x32f7, 0x333c, 0x3371, 0x3393, 0x33d1,
- 0x33f5, 0x340e, 0x341b, 0x7003, 0x0007, 0x6004, 0xa084, 0xfff9,
+ 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2c61, 0x60c3, 0x000c, 0x1078,
+ 0x31dc, 0x0d7f, 0x007c, 0x6020, 0xd0b4, 0x00c0, 0x2c61, 0x60c3,
+ 0x000c, 0x2011, 0x70c0, 0x2013, 0x0000, 0x7073, 0x0000, 0x20e1,
+ 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x4f3c, 0x0078,
+ 0x2c61, 0x007c, 0x7078, 0xa08a, 0x001d, 0x00c8, 0x2c83, 0x1079,
+ 0x2c86, 0x0078, 0x2c85, 0x1078, 0x1286, 0x007c, 0x2caa, 0x2cb9,
+ 0x2cea, 0x2cff, 0x2d2f, 0x2d57, 0x2d87, 0x2db1, 0x2de1, 0x2e07,
+ 0x2e52, 0x2e74, 0x2e98, 0x2eae, 0x2ed4, 0x2ee7, 0x2ef0, 0x2f09,
+ 0x2f37, 0x2f5f, 0x2f8d, 0x2fb7, 0x2ffc, 0x3031, 0x3053, 0x3091,
+ 0x30b5, 0x30ce, 0x30db, 0x7003, 0x0007, 0x6004, 0xa084, 0xfff9,
0x6006, 0x007c, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0002,
- 0x7083, 0x0001, 0x2009, 0x07d0, 0x2011, 0x34fc, 0x1078, 0x4513,
- 0x007c, 0x0f7e, 0x7078, 0xa086, 0x0014, 0x00c0, 0x3028, 0x6043,
- 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x3028, 0x2079, 0x7b80, 0x7a30,
- 0xa296, 0x1102, 0x00c0, 0x3026, 0x7834, 0xa005, 0x00c0, 0x3026,
- 0x7a38, 0xd2fc, 0x0040, 0x301c, 0x70a4, 0xa005, 0x00c0, 0x301c,
- 0x1078, 0x35b5, 0x70a7, 0x0001, 0x2011, 0x34fc, 0x1078, 0x4520,
- 0x7083, 0x0010, 0x1078, 0x3230, 0x0078, 0x3028, 0x707b, 0x0000,
- 0x0f7f, 0x007c, 0x7083, 0x0003, 0x6043, 0x0004, 0x1078, 0x3586,
+ 0x707b, 0x0001, 0x2009, 0x07d0, 0x2011, 0x31bc, 0x1078, 0x4146,
+ 0x007c, 0x0f7e, 0x7070, 0xa086, 0x0014, 0x00c0, 0x2ce8, 0x6043,
+ 0x0000, 0x6020, 0xd0b4, 0x00c0, 0x2ce8, 0x2079, 0x7380, 0x7a30,
+ 0xa296, 0x1102, 0x00c0, 0x2ce6, 0x7834, 0xa005, 0x00c0, 0x2ce6,
+ 0x7a38, 0xd2fc, 0x0040, 0x2cdc, 0x709c, 0xa005, 0x00c0, 0x2cdc,
+ 0x1078, 0x3275, 0x709f, 0x0001, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0x707b, 0x0010, 0x1078, 0x2ef0, 0x0078, 0x2ce8, 0x7073, 0x0000,
+ 0x0f7f, 0x007c, 0x707b, 0x0003, 0x6043, 0x0004, 0x1078, 0x3246,
0x20a3, 0x1102, 0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000,
- 0x00f0, 0x3036, 0x60c3, 0x0014, 0x1078, 0x351c, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x306d, 0x2011, 0x34fc, 0x1078, 0x4520,
- 0xa086, 0x0014, 0x00c0, 0x3069, 0x2079, 0x7b80, 0x7a30, 0xa296,
- 0x1102, 0x00c0, 0x3069, 0x7834, 0xa005, 0x00c0, 0x3069, 0x7a38,
- 0xd2fc, 0x0040, 0x3063, 0x70a4, 0xa005, 0x00c0, 0x3063, 0x1078,
- 0x35b5, 0x70a7, 0x0001, 0x7083, 0x0004, 0x1078, 0x306f, 0x0078,
- 0x306d, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083,
- 0x0005, 0x1078, 0x3586, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
- 0x2011, 0x7b8e, 0x706c, 0xa005, 0x00c0, 0x3089, 0x714c, 0xa186,
- 0xffff, 0x0040, 0x3089, 0x1078, 0x34c0, 0x0040, 0x3089, 0x1078,
- 0x35b5, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x351c, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x30c5, 0x2011, 0x34fc, 0x1078, 0x4520,
- 0xa086, 0x0014, 0x00c0, 0x30c1, 0x2079, 0x7b80, 0x7a30, 0xa296,
- 0x1103, 0x00c0, 0x30c1, 0x7834, 0xa005, 0x00c0, 0x30c1, 0x7a38,
- 0xd2fc, 0x0040, 0x30bb, 0x70a4, 0xa005, 0x00c0, 0x30bb, 0x1078,
- 0x35b5, 0x70a7, 0x0001, 0x7083, 0x0006, 0x1078, 0x30c7, 0x0078,
- 0x30c5, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083,
- 0x0007, 0x1078, 0x3586, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430,
- 0x2011, 0x7b8e, 0x706c, 0xa005, 0x00c0, 0x30e3, 0x7150, 0xa186,
- 0xffff, 0x0040, 0x30e3, 0xa180, 0x2303, 0x200c, 0xa18c, 0xff00,
- 0x810f, 0x1078, 0x34c0, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x351c,
- 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x311f, 0x2011, 0x34fc,
- 0x1078, 0x4520, 0xa086, 0x0014, 0x00c0, 0x311b, 0x2079, 0x7b80,
- 0x7a30, 0xa296, 0x1104, 0x00c0, 0x311b, 0x7834, 0xa005, 0x00c0,
- 0x311b, 0x7a38, 0xd2fc, 0x0040, 0x3115, 0x70a4, 0xa005, 0x00c0,
- 0x3115, 0x1078, 0x35b5, 0x70a7, 0x0001, 0x7083, 0x0008, 0x1078,
- 0x3121, 0x0078, 0x311f, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f,
- 0x007c, 0x7083, 0x0009, 0x1078, 0x3586, 0x20a3, 0x1105, 0x20a3,
- 0x0100, 0x3430, 0x706c, 0xa005, 0x00c0, 0x3134, 0x1078, 0x342a,
- 0x0040, 0x3144, 0x0078, 0x313e, 0x20a9, 0x0008, 0x2099, 0x7b8e,
+ 0x00f0, 0x2cf6, 0x60c3, 0x0014, 0x1078, 0x31dc, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2d2d, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0xa086, 0x0014, 0x00c0, 0x2d29, 0x2079, 0x7380, 0x7a30, 0xa296,
+ 0x1102, 0x00c0, 0x2d29, 0x7834, 0xa005, 0x00c0, 0x2d29, 0x7a38,
+ 0xd2fc, 0x0040, 0x2d23, 0x709c, 0xa005, 0x00c0, 0x2d23, 0x1078,
+ 0x3275, 0x709f, 0x0001, 0x707b, 0x0004, 0x1078, 0x2d2f, 0x0078,
+ 0x2d2d, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
+ 0x0005, 0x1078, 0x3246, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
+ 0x2011, 0x738e, 0x7064, 0xa005, 0x00c0, 0x2d49, 0x714c, 0xa186,
+ 0xffff, 0x0040, 0x2d49, 0x1078, 0x3180, 0x0040, 0x2d49, 0x1078,
+ 0x3275, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31dc, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2d85, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0xa086, 0x0014, 0x00c0, 0x2d81, 0x2079, 0x7380, 0x7a30, 0xa296,
+ 0x1103, 0x00c0, 0x2d81, 0x7834, 0xa005, 0x00c0, 0x2d81, 0x7a38,
+ 0xd2fc, 0x0040, 0x2d7b, 0x709c, 0xa005, 0x00c0, 0x2d7b, 0x1078,
+ 0x3275, 0x709f, 0x0001, 0x707b, 0x0006, 0x1078, 0x2d87, 0x0078,
+ 0x2d85, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
+ 0x0007, 0x1078, 0x3246, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430,
+ 0x2011, 0x738e, 0x7064, 0xa005, 0x00c0, 0x2da3, 0x7150, 0xa186,
+ 0xffff, 0x0040, 0x2da3, 0xa180, 0x21d3, 0x200c, 0xa18c, 0xff00,
+ 0x810f, 0x1078, 0x3180, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31dc,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2ddf, 0x2011, 0x31bc,
+ 0x1078, 0x4153, 0xa086, 0x0014, 0x00c0, 0x2ddb, 0x2079, 0x7380,
+ 0x7a30, 0xa296, 0x1104, 0x00c0, 0x2ddb, 0x7834, 0xa005, 0x00c0,
+ 0x2ddb, 0x7a38, 0xd2fc, 0x0040, 0x2dd5, 0x709c, 0xa005, 0x00c0,
+ 0x2dd5, 0x1078, 0x3275, 0x709f, 0x0001, 0x707b, 0x0008, 0x1078,
+ 0x2de1, 0x0078, 0x2ddf, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f,
+ 0x007c, 0x707b, 0x0009, 0x1078, 0x3246, 0x20a3, 0x1105, 0x20a3,
+ 0x0100, 0x3430, 0x7064, 0xa005, 0x00c0, 0x2df4, 0x1078, 0x30ea,
+ 0x0040, 0x2e04, 0x0078, 0x2dfe, 0x20a9, 0x0008, 0x2099, 0x738e,
0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x351c, 0x0078, 0x3146, 0x1078, 0x2fe3, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x3190, 0x2011, 0x34fc, 0x1078, 0x4520,
- 0xa086, 0x0014, 0x00c0, 0x318c, 0x2079, 0x7b80, 0x7a30, 0xa296,
- 0x1105, 0x00c0, 0x318c, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0,
- 0x3175, 0x7a38, 0xd2fc, 0x0040, 0x316d, 0x70a4, 0xa005, 0x00c0,
- 0x316d, 0x1078, 0x35b5, 0x70a7, 0x0001, 0x707f, 0x0001, 0x7083,
- 0x000a, 0x1078, 0x3192, 0x0078, 0x3190, 0xa005, 0x00c0, 0x318c,
- 0x7a38, 0xd2fc, 0x0040, 0x3184, 0x70a4, 0xa005, 0x00c0, 0x3184,
- 0x1078, 0x35b5, 0x70a7, 0x0001, 0x707f, 0x0000, 0x7083, 0x000e,
- 0x1078, 0x3214, 0x0078, 0x3190, 0x7083, 0x0002, 0x707b, 0x0000,
- 0x0f7f, 0x007c, 0x7083, 0x000b, 0x2011, 0x7b0e, 0x22a0, 0x20a9,
+ 0x1078, 0x31dc, 0x0078, 0x2e06, 0x1078, 0x2ca3, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2e50, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0xa086, 0x0014, 0x00c0, 0x2e4c, 0x2079, 0x7380, 0x7a30, 0xa296,
+ 0x1105, 0x00c0, 0x2e4c, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0,
+ 0x2e35, 0x7a38, 0xd2fc, 0x0040, 0x2e2d, 0x709c, 0xa005, 0x00c0,
+ 0x2e2d, 0x1078, 0x3275, 0x709f, 0x0001, 0x7077, 0x0001, 0x707b,
+ 0x000a, 0x1078, 0x2e52, 0x0078, 0x2e50, 0xa005, 0x00c0, 0x2e4c,
+ 0x7a38, 0xd2fc, 0x0040, 0x2e44, 0x709c, 0xa005, 0x00c0, 0x2e44,
+ 0x1078, 0x3275, 0x709f, 0x0001, 0x7077, 0x0000, 0x707b, 0x000e,
+ 0x1078, 0x2ed4, 0x0078, 0x2e50, 0x707b, 0x0002, 0x7073, 0x0000,
+ 0x0f7f, 0x007c, 0x707b, 0x000b, 0x2011, 0x730e, 0x22a0, 0x20a9,
0x0040, 0x2019, 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000,
- 0x41a4, 0x1078, 0x3586, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x6030,
+ 0x41a4, 0x1078, 0x3246, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x6030,
0xa085, 0x0100, 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3,
- 0x0084, 0x1078, 0x351c, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040,
- 0x31d6, 0x2011, 0x34fc, 0x1078, 0x4520, 0xa086, 0x0084, 0x00c0,
- 0x31d2, 0x2079, 0x7b80, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x31d2,
- 0x7834, 0xa005, 0x00c0, 0x31d2, 0x7083, 0x000c, 0x1078, 0x31d8,
- 0x0078, 0x31d6, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c,
- 0x7083, 0x000d, 0x1078, 0x3586, 0x20a3, 0x1107, 0x20a3, 0x0000,
- 0x2099, 0x7b8e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x60c3, 0x0084, 0x1078, 0x351c, 0x007c, 0x0f7e, 0x7078,
- 0xa005, 0x0040, 0x3212, 0x2011, 0x34fc, 0x1078, 0x4520, 0xa086,
- 0x0084, 0x00c0, 0x320e, 0x2079, 0x7b80, 0x7a30, 0xa296, 0x1107,
- 0x00c0, 0x320e, 0x7834, 0xa005, 0x00c0, 0x320e, 0x1078, 0x3578,
- 0x7083, 0x000e, 0x1078, 0x3214, 0x0078, 0x3212, 0x7083, 0x0002,
- 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x000f, 0x707b, 0x0000,
+ 0x0084, 0x1078, 0x31dc, 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040,
+ 0x2e96, 0x2011, 0x31bc, 0x1078, 0x4153, 0xa086, 0x0084, 0x00c0,
+ 0x2e92, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x2e92,
+ 0x7834, 0xa005, 0x00c0, 0x2e92, 0x707b, 0x000c, 0x1078, 0x2e98,
+ 0x0078, 0x2e96, 0x707b, 0x0002, 0x7073, 0x0000, 0x0f7f, 0x007c,
+ 0x707b, 0x000d, 0x1078, 0x3246, 0x20a3, 0x1107, 0x20a3, 0x0000,
+ 0x2099, 0x738e, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x0084, 0x1078, 0x31dc, 0x007c, 0x0f7e, 0x7070,
+ 0xa005, 0x0040, 0x2ed2, 0x2011, 0x31bc, 0x1078, 0x4153, 0xa086,
+ 0x0084, 0x00c0, 0x2ece, 0x2079, 0x7380, 0x7a30, 0xa296, 0x1107,
+ 0x00c0, 0x2ece, 0x7834, 0xa005, 0x00c0, 0x2ece, 0x1078, 0x3238,
+ 0x707b, 0x000e, 0x1078, 0x2ed4, 0x0078, 0x2ed2, 0x707b, 0x0002,
+ 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x000f, 0x7073, 0x0000,
0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004,
- 0x2009, 0x07d0, 0x2011, 0x34fc, 0x1078, 0x4513, 0x007c, 0x7078,
- 0xa005, 0x0040, 0x322f, 0x2011, 0x34fc, 0x1078, 0x4520, 0x007c,
- 0x7083, 0x0011, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7b80,
- 0x20a1, 0x020b, 0x7478, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084,
- 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x1078, 0x351c,
- 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3275, 0x2011, 0x34fc,
- 0x1078, 0x4520, 0xa086, 0x0014, 0x00c0, 0x3273, 0x2079, 0x7b80,
- 0x7a30, 0xa296, 0x1103, 0x00c0, 0x3273, 0x7834, 0xa005, 0x00c0,
- 0x3273, 0x7a38, 0xd2fc, 0x0040, 0x326d, 0x70a4, 0xa005, 0x00c0,
- 0x326d, 0x1078, 0x35b5, 0x70a7, 0x0001, 0x7083, 0x0012, 0x1078,
- 0x3277, 0x0078, 0x3275, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083,
- 0x0013, 0x1078, 0x3592, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
- 0x2011, 0x7b8e, 0x706c, 0xa005, 0x00c0, 0x3291, 0x714c, 0xa186,
- 0xffff, 0x0040, 0x3291, 0x1078, 0x34c0, 0x0040, 0x3291, 0x1078,
- 0x35b5, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x351c, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x32cb, 0x2011, 0x34fc, 0x1078, 0x4520,
- 0xa086, 0x0014, 0x00c0, 0x32c9, 0x2079, 0x7b80, 0x7a30, 0xa296,
- 0x1104, 0x00c0, 0x32c9, 0x7834, 0xa005, 0x00c0, 0x32c9, 0x7a38,
- 0xd2fc, 0x0040, 0x32c3, 0x70a4, 0xa005, 0x00c0, 0x32c3, 0x1078,
- 0x35b5, 0x70a7, 0x0001, 0x7083, 0x0014, 0x1078, 0x32cd, 0x0078,
- 0x32cb, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0015, 0x1078,
- 0x3592, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x7b8e,
- 0x706c, 0xa006, 0x00c0, 0x32e9, 0x7150, 0xa186, 0xffff, 0x0040,
- 0x32e9, 0xa180, 0x2303, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078,
- 0x34c0, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x351c, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x333a, 0x2011, 0x34fc, 0x1078, 0x4520,
- 0xa086, 0x0014, 0x00c0, 0x3338, 0x2079, 0x7b80, 0x7a30, 0xa296,
- 0x1105, 0x00c0, 0x3338, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0,
- 0x3321, 0x7a38, 0xd2fc, 0x0040, 0x331d, 0x70a4, 0xa005, 0x00c0,
- 0x331d, 0x1078, 0x35b5, 0x70a7, 0x0001, 0x707f, 0x0001, 0x0078,
- 0x3332, 0xa005, 0x00c0, 0x3338, 0x7a38, 0xd2fc, 0x0040, 0x3330,
- 0x70a4, 0xa005, 0x00c0, 0x3330, 0x1078, 0x35b5, 0x70a7, 0x0001,
- 0x707f, 0x0000, 0x7083, 0x0016, 0x1078, 0x333c, 0x0078, 0x333a,
- 0x707b, 0x0000, 0x0f7f, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x2099, 0x7b80, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430,
- 0x2011, 0x7b8e, 0x707c, 0xa005, 0x0040, 0x3352, 0x7083, 0x0017,
- 0x0078, 0x3354, 0x7083, 0x001b, 0x706c, 0xa005, 0x00c0, 0x335e,
- 0x1078, 0x342a, 0x0040, 0x336e, 0x0078, 0x3368, 0x20a9, 0x0008,
- 0x2099, 0x7b8e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0014, 0x1078, 0x351c, 0x0078, 0x3370, 0x1078, 0x2fe3,
- 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x3391, 0x2011, 0x34fc,
- 0x1078, 0x4520, 0xa086, 0x0084, 0x00c0, 0x338f, 0x2079, 0x7b80,
- 0x7a30, 0xa296, 0x1106, 0x00c0, 0x338f, 0x7834, 0xa005, 0x00c0,
- 0x338f, 0x7083, 0x0018, 0x1078, 0x3393, 0x0078, 0x3391, 0x707b,
- 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0019, 0x1078, 0x3592, 0x20a3,
- 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0x7b8e, 0x2039, 0x7b0e,
+ 0x2009, 0x07d0, 0x2011, 0x31bc, 0x1078, 0x4146, 0x007c, 0x7070,
+ 0xa005, 0x0040, 0x2eef, 0x2011, 0x31bc, 0x1078, 0x4153, 0x007c,
+ 0x707b, 0x0011, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7380,
+ 0x20a1, 0x020b, 0x7470, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084,
+ 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x1078, 0x31dc,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x2f35, 0x2011, 0x31bc,
+ 0x1078, 0x4153, 0xa086, 0x0014, 0x00c0, 0x2f33, 0x2079, 0x7380,
+ 0x7a30, 0xa296, 0x1103, 0x00c0, 0x2f33, 0x7834, 0xa005, 0x00c0,
+ 0x2f33, 0x7a38, 0xd2fc, 0x0040, 0x2f2d, 0x709c, 0xa005, 0x00c0,
+ 0x2f2d, 0x1078, 0x3275, 0x709f, 0x0001, 0x707b, 0x0012, 0x1078,
+ 0x2f37, 0x0078, 0x2f35, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b,
+ 0x0013, 0x1078, 0x3252, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430,
+ 0x2011, 0x738e, 0x7064, 0xa005, 0x00c0, 0x2f51, 0x714c, 0xa186,
+ 0xffff, 0x0040, 0x2f51, 0x1078, 0x3180, 0x0040, 0x2f51, 0x1078,
+ 0x3275, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31dc, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2f8b, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0xa086, 0x0014, 0x00c0, 0x2f89, 0x2079, 0x7380, 0x7a30, 0xa296,
+ 0x1104, 0x00c0, 0x2f89, 0x7834, 0xa005, 0x00c0, 0x2f89, 0x7a38,
+ 0xd2fc, 0x0040, 0x2f83, 0x709c, 0xa005, 0x00c0, 0x2f83, 0x1078,
+ 0x3275, 0x709f, 0x0001, 0x707b, 0x0014, 0x1078, 0x2f8d, 0x0078,
+ 0x2f8b, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0015, 0x1078,
+ 0x3252, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x738e,
+ 0x7064, 0xa006, 0x00c0, 0x2fa9, 0x7150, 0xa186, 0xffff, 0x0040,
+ 0x2fa9, 0xa180, 0x21d3, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078,
+ 0x3180, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x31dc, 0x007c, 0x0f7e,
+ 0x7070, 0xa005, 0x0040, 0x2ffa, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0xa086, 0x0014, 0x00c0, 0x2ff8, 0x2079, 0x7380, 0x7a30, 0xa296,
+ 0x1105, 0x00c0, 0x2ff8, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0,
+ 0x2fe1, 0x7a38, 0xd2fc, 0x0040, 0x2fdd, 0x709c, 0xa005, 0x00c0,
+ 0x2fdd, 0x1078, 0x3275, 0x709f, 0x0001, 0x7077, 0x0001, 0x0078,
+ 0x2ff2, 0xa005, 0x00c0, 0x2ff8, 0x7a38, 0xd2fc, 0x0040, 0x2ff0,
+ 0x709c, 0xa005, 0x00c0, 0x2ff0, 0x1078, 0x3275, 0x709f, 0x0001,
+ 0x7077, 0x0000, 0x707b, 0x0016, 0x1078, 0x2ffc, 0x0078, 0x2ffa,
+ 0x7073, 0x0000, 0x0f7f, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x2099, 0x7380, 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430,
+ 0x2011, 0x738e, 0x7074, 0xa005, 0x0040, 0x3012, 0x707b, 0x0017,
+ 0x0078, 0x3014, 0x707b, 0x001b, 0x7064, 0xa005, 0x00c0, 0x301e,
+ 0x1078, 0x30ea, 0x0040, 0x302e, 0x0078, 0x3028, 0x20a9, 0x0008,
+ 0x2099, 0x738e, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x60c3, 0x0014, 0x1078, 0x31dc, 0x0078, 0x3030, 0x1078, 0x2ca3,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x3051, 0x2011, 0x31bc,
+ 0x1078, 0x4153, 0xa086, 0x0084, 0x00c0, 0x304f, 0x2079, 0x7380,
+ 0x7a30, 0xa296, 0x1106, 0x00c0, 0x304f, 0x7834, 0xa005, 0x00c0,
+ 0x304f, 0x707b, 0x0018, 0x1078, 0x3053, 0x0078, 0x3051, 0x7073,
+ 0x0000, 0x0f7f, 0x007c, 0x707b, 0x0019, 0x1078, 0x3252, 0x20a3,
+ 0x1106, 0x20a3, 0x0000, 0x3430, 0x2099, 0x738e, 0x2039, 0x730e,
0x27a0, 0x20a9, 0x0040, 0x53a3, 0x2728, 0x2514, 0x8207, 0xa084,
0x00ff, 0x8000, 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a,
- 0x6030, 0x2310, 0x8214, 0xa2a0, 0x7b0e, 0x2414, 0xa38c, 0x0001,
- 0x0040, 0x33be, 0xa294, 0xff00, 0x0078, 0x33c1, 0xa294, 0x00ff,
+ 0x6030, 0x2310, 0x8214, 0xa2a0, 0x730e, 0x2414, 0xa38c, 0x0001,
+ 0x0040, 0x307e, 0xa294, 0xff00, 0x0078, 0x3081, 0xa294, 0x00ff,
0x8007, 0xa215, 0x2222, 0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078, 0x351c,
- 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x33f3, 0x2011, 0x34fc,
- 0x1078, 0x4520, 0xa086, 0x0084, 0x00c0, 0x33f1, 0x2079, 0x7b80,
- 0x7a30, 0xa296, 0x1107, 0x00c0, 0x33f1, 0x7834, 0xa005, 0x00c0,
- 0x33f1, 0x1078, 0x3578, 0x7083, 0x001a, 0x1078, 0x33f5, 0x0078,
- 0x33f3, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x001b, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x2099, 0x7b80, 0x20a1, 0x020b, 0x7478,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078, 0x31dc,
+ 0x007c, 0x0f7e, 0x7070, 0xa005, 0x0040, 0x30b3, 0x2011, 0x31bc,
+ 0x1078, 0x4153, 0xa086, 0x0084, 0x00c0, 0x30b1, 0x2079, 0x7380,
+ 0x7a30, 0xa296, 0x1107, 0x00c0, 0x30b1, 0x7834, 0xa005, 0x00c0,
+ 0x30b1, 0x1078, 0x3238, 0x707b, 0x001a, 0x1078, 0x30b5, 0x0078,
+ 0x30b3, 0x7073, 0x0000, 0x0f7f, 0x007c, 0x707b, 0x001b, 0x20e1,
+ 0x9080, 0x20e1, 0x4000, 0x2099, 0x7380, 0x20a1, 0x020b, 0x7470,
0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8,
- 0x53a6, 0x60c3, 0x0084, 0x1078, 0x351c, 0x007c, 0x7078, 0xa005,
- 0x0040, 0x341a, 0x2011, 0x34fc, 0x1078, 0x4520, 0x7083, 0x001c,
- 0x1078, 0x341b, 0x007c, 0x707b, 0x0000, 0x608b, 0xbc85, 0x608f,
- 0xb5b5, 0x6043, 0x0001, 0x2009, 0x07d0, 0x2011, 0x34fc, 0x1078,
- 0x4513, 0x007c, 0x087e, 0x097e, 0x2029, 0x7652, 0x252c, 0x20a9,
- 0x0008, 0x2041, 0x7b0e, 0x28a0, 0x2099, 0x7b8e, 0x53a3, 0x20a9,
- 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x3440, 0x2011, 0x0000,
- 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0, 0x3452, 0xd5d4,
- 0x0040, 0x344d, 0x8210, 0x0078, 0x344e, 0x8211, 0x00f0, 0x3440,
- 0x0078, 0x34b7, 0x82ff, 0x00c0, 0x3464, 0xd5d4, 0x0040, 0x345e,
- 0xa1a6, 0x3fff, 0x0040, 0x344a, 0x0078, 0x3462, 0xa1a6, 0x3fff,
- 0x0040, 0x34b7, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001,
- 0xd5d4, 0x0040, 0x346d, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0040,
- 0x3474, 0x8423, 0x0078, 0x3475, 0x8424, 0x00c8, 0x3482, 0xd5d4,
- 0x0040, 0x347d, 0x8319, 0x0078, 0x347e, 0x8318, 0x00f0, 0x346e,
- 0x0078, 0x34b7, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x00f0,
- 0x3486, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040, 0x349a, 0x007e,
+ 0x53a6, 0x60c3, 0x0084, 0x1078, 0x31dc, 0x007c, 0x7070, 0xa005,
+ 0x0040, 0x30da, 0x2011, 0x31bc, 0x1078, 0x4153, 0x707b, 0x001c,
+ 0x1078, 0x30db, 0x007c, 0x7073, 0x0000, 0x608b, 0xbc85, 0x608f,
+ 0xb5b5, 0x6043, 0x0001, 0x2009, 0x07d0, 0x2011, 0x31bc, 0x1078,
+ 0x4146, 0x007c, 0x087e, 0x097e, 0x2029, 0x6f52, 0x252c, 0x20a9,
+ 0x0008, 0x2041, 0x730e, 0x28a0, 0x2099, 0x738e, 0x53a3, 0x20a9,
+ 0x0008, 0x2011, 0x0007, 0xd5d4, 0x0040, 0x3100, 0x2011, 0x0000,
+ 0x2800, 0xa200, 0x200c, 0xa1a6, 0xffff, 0x00c0, 0x3112, 0xd5d4,
+ 0x0040, 0x310d, 0x8210, 0x0078, 0x310e, 0x8211, 0x00f0, 0x3100,
+ 0x0078, 0x3177, 0x82ff, 0x00c0, 0x3124, 0xd5d4, 0x0040, 0x311e,
+ 0xa1a6, 0x3fff, 0x0040, 0x310a, 0x0078, 0x3122, 0xa1a6, 0x3fff,
+ 0x0040, 0x3177, 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001,
+ 0xd5d4, 0x0040, 0x312d, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0040,
+ 0x3134, 0x8423, 0x0078, 0x3135, 0x8424, 0x00c8, 0x3142, 0xd5d4,
+ 0x0040, 0x313d, 0x8319, 0x0078, 0x313e, 0x8318, 0x00f0, 0x312e,
+ 0x0078, 0x3177, 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x00f0,
+ 0x3146, 0x2328, 0x8529, 0xa2be, 0x0007, 0x0040, 0x315a, 0x007e,
0x2039, 0x0007, 0x2200, 0xa73a, 0x007f, 0x27a8, 0xa5a8, 0x0010,
- 0x00f0, 0x3496, 0x754e, 0xa5c8, 0x2303, 0x292c, 0xa5ac, 0x00ff,
+ 0x00f0, 0x3156, 0x754e, 0xa5c8, 0x21d3, 0x292c, 0xa5ac, 0x00ff,
0x6532, 0x60e7, 0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a,
- 0x706f, 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, 0x0078, 0x34bd, 0xa006,
- 0x0078, 0x34bd, 0xa006, 0x1078, 0x12d5, 0x097f, 0x087f, 0x007c,
+ 0x7067, 0x0001, 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0xa085, 0x0001, 0x0078, 0x317d, 0xa006,
+ 0x0078, 0x317d, 0xa006, 0x1078, 0x1286, 0x097f, 0x087f, 0x007c,
0x2118, 0x2021, 0x0000, 0x2001, 0x0007, 0xa39a, 0x0010, 0x0048,
- 0x34cd, 0x8420, 0x8001, 0x0078, 0x34c5, 0x2118, 0x84ff, 0x0040,
- 0x34d6, 0xa39a, 0x0010, 0x8421, 0x00c0, 0x34d1, 0x2021, 0x0001,
- 0x83ff, 0x0040, 0x34df, 0x8423, 0x8319, 0x00c0, 0x34db, 0xa238,
- 0x2704, 0xa42c, 0x00c0, 0x34f4, 0xa405, 0x203a, 0x714e, 0xa1a0,
- 0x2303, 0x242c, 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea,
- 0x706f, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7600,
- 0x7073, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2079, 0x0100,
- 0x2071, 0x0140, 0x1078, 0x5534, 0x7004, 0xa084, 0x4000, 0x0040,
- 0x350d, 0x7003, 0x1000, 0x7003, 0x0000, 0x127e, 0x2091, 0x8000,
- 0x2071, 0x7620, 0x2073, 0x0000, 0x7843, 0x0090, 0x7843, 0x0010,
+ 0x318d, 0x8420, 0x8001, 0x0078, 0x3185, 0x2118, 0x84ff, 0x0040,
+ 0x3196, 0xa39a, 0x0010, 0x8421, 0x00c0, 0x3191, 0x2021, 0x0001,
+ 0x83ff, 0x0040, 0x319f, 0x8423, 0x8319, 0x00c0, 0x319b, 0xa238,
+ 0x2704, 0xa42c, 0x00c0, 0x31b4, 0xa405, 0x203a, 0x714e, 0xa1a0,
+ 0x21d3, 0x242c, 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea,
+ 0x7067, 0x0001, 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x6f00,
+ 0x706b, 0x0000, 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2079, 0x0100,
+ 0x2071, 0x0140, 0x1078, 0x4f45, 0x7004, 0xa084, 0x4000, 0x0040,
+ 0x31cd, 0x7003, 0x1000, 0x7003, 0x0000, 0x127e, 0x2091, 0x8000,
+ 0x2071, 0x6f1e, 0x2073, 0x0000, 0x7843, 0x0090, 0x7843, 0x0010,
0x127f, 0x0f7f, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x2011,
- 0x7840, 0x2013, 0x0000, 0x707b, 0x0000, 0x127f, 0x20e1, 0x9080,
- 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x552b, 0x2009, 0x07d0,
- 0x2011, 0x34fc, 0x1078, 0x45b0, 0x007c, 0x017e, 0x027e, 0x0c7e,
- 0x127e, 0x2091, 0x8000, 0x2009, 0x00f7, 0x1078, 0x359e, 0x2061,
- 0x7849, 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0x7600, 0x6003,
+ 0x70c0, 0x2013, 0x0000, 0x7073, 0x0000, 0x127f, 0x20e1, 0x9080,
+ 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x4f3c, 0x2009, 0x07d0,
+ 0x2011, 0x31bc, 0x1078, 0x41e3, 0x007c, 0x017e, 0x027e, 0x0c7e,
+ 0x127e, 0x2091, 0x8000, 0x2009, 0x00f7, 0x1078, 0x325e, 0x2061,
+ 0x70c9, 0x601b, 0x0000, 0x601f, 0x0000, 0x2061, 0x6f00, 0x6003,
0x0001, 0x2061, 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009,
- 0x001e, 0x2011, 0x355a, 0x1078, 0x4513, 0x127f, 0x0c7f, 0x027f,
+ 0x001e, 0x2011, 0x321a, 0x1078, 0x4146, 0x127f, 0x0c7f, 0x027f,
0x017f, 0x007c, 0x0e7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x0100, 0x1078, 0x5534, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000,
- 0x0040, 0x356e, 0x7003, 0x1000, 0x7003, 0x0000, 0x2001, 0x0001,
- 0x1078, 0x1fff, 0x1078, 0x3535, 0x127f, 0x007f, 0x0e7f, 0x007c,
- 0x20a9, 0x0040, 0x20a1, 0x7cc0, 0x2099, 0x7b8e, 0x3304, 0x8007,
- 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x357e, 0x007c, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x2099, 0x7b00, 0x20a1, 0x020b, 0x20a9, 0x000c,
- 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7b80,
+ 0x0100, 0x1078, 0x4f45, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000,
+ 0x0040, 0x322e, 0x7003, 0x1000, 0x7003, 0x0000, 0x2001, 0x0001,
+ 0x1078, 0x1f5e, 0x1078, 0x31f5, 0x127f, 0x007f, 0x0e7f, 0x007c,
+ 0x20a9, 0x0040, 0x20a1, 0x74c0, 0x2099, 0x738e, 0x3304, 0x8007,
+ 0x20a2, 0x9398, 0x94a0, 0x00f0, 0x323e, 0x007c, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x2099, 0x7300, 0x20a1, 0x020b, 0x20a9, 0x000c,
+ 0x53a6, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7380,
0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c, 0x0c7e, 0x007e,
- 0x2061, 0x0100, 0x810f, 0x2001, 0x762c, 0x2004, 0xa005, 0x00c0,
- 0x35af, 0x6030, 0xa084, 0x00ff, 0xa105, 0x0078, 0x35b1, 0xa185,
+ 0x2061, 0x0100, 0x810f, 0x2001, 0x6f2a, 0x2004, 0xa005, 0x00c0,
+ 0x326f, 0x6030, 0xa084, 0x00ff, 0xa105, 0x0078, 0x3271, 0xa185,
0x00f7, 0x604a, 0x007f, 0x0c7f, 0x007c, 0x017e, 0x047e, 0x2001,
- 0x7652, 0x2004, 0xd0a4, 0x0040, 0x35c8, 0xa006, 0x2020, 0x2009,
- 0x002a, 0x1078, 0x74ec, 0x2001, 0x760c, 0x200c, 0xc195, 0x2102,
- 0x2019, 0x002a, 0x1078, 0x226d, 0x047f, 0x017f, 0x007c, 0x157e,
- 0x20a9, 0x00ff, 0x2009, 0x7720, 0xa006, 0x200a, 0x8108, 0x00f0,
- 0x35d5, 0x157f, 0x007c, 0x0d7e, 0x037e, 0x157e, 0x137e, 0x147e,
- 0x2069, 0x7651, 0xa006, 0x6002, 0x6007, 0x0707, 0x600a, 0x600e,
- 0x6012, 0xa198, 0x2303, 0x231c, 0xa39c, 0x00ff, 0x6316, 0x20a9,
+ 0x6f52, 0x2004, 0xd0a4, 0x0040, 0x3288, 0xa006, 0x2020, 0x2009,
+ 0x002a, 0x1078, 0x6d90, 0x2001, 0x6f0c, 0x200c, 0xc195, 0x2102,
+ 0x2019, 0x002a, 0x1078, 0x2152, 0x047f, 0x017f, 0x007c, 0x157e,
+ 0x20a9, 0x007d, 0x2009, 0x7020, 0xa006, 0x200a, 0x8108, 0x00f0,
+ 0x3295, 0x157f, 0x007c, 0x0d7e, 0x037e, 0x157e, 0x137e, 0x147e,
+ 0x2069, 0x6f51, 0xa006, 0x6002, 0x6007, 0x0707, 0x600a, 0x600e,
+ 0x6012, 0xa198, 0x21d3, 0x231c, 0xa39c, 0x00ff, 0x6316, 0x20a9,
0x0004, 0xac98, 0x0006, 0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98,
0x000a, 0x23a0, 0x40a4, 0x603e, 0x6042, 0x604e, 0x6052, 0x6056,
0x605a, 0x605e, 0x6062, 0x6066, 0x606a, 0x606e, 0x6072, 0x6076,
@@ -9366,5354 +10330,1904 @@ static const u_int16_t ISP2100_RISC_CODE[] = {
0x609a, 0x609e, 0x61a2, 0x604a, 0x6810, 0x603a, 0x680c, 0x6046,
0x6814, 0xa084, 0x00ff, 0x6042, 0x147f, 0x137f, 0x157f, 0x037f,
0x0d7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0xa1b4, 0x00ff,
- 0xa682, 0x0010, 0x00c8, 0x36c7, 0xa18c, 0xff00, 0x810f, 0xa182,
- 0x00ff, 0x00c8, 0x36cd, 0x2001, 0x760c, 0x2004, 0xa084, 0x0003,
- 0x00c0, 0x36b0, 0xa188, 0x7720, 0x2104, 0xa065, 0x0040, 0x36a6,
- 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x36ac, 0x6078,
- 0xa00d, 0x0040, 0x3651, 0xa680, 0x7580, 0x2004, 0xa10c, 0x00c0,
- 0x36a0, 0x607c, 0xa00d, 0x0040, 0x366d, 0xa680, 0x7580, 0x2004,
- 0xa10c, 0x0040, 0x366d, 0x694c, 0xd1fc, 0x00c0, 0x3663, 0x1078,
- 0x3760, 0x0078, 0x369b, 0x1078, 0x3731, 0x694c, 0xd1ec, 0x00c0,
- 0x369b, 0x1078, 0x3879, 0x0078, 0x369b, 0x694c, 0xa184, 0xa000,
- 0x0040, 0x368b, 0xd1ec, 0x0040, 0x3684, 0xd1fc, 0x0040, 0x367c,
- 0x1078, 0x3890, 0x0078, 0x3687, 0xa680, 0x7580, 0x200c, 0x607c,
- 0xa105, 0x607e, 0x0078, 0x368b, 0xd1fc, 0x0040, 0x368b, 0x1078,
- 0x3731, 0x0078, 0x369b, 0x6050, 0xa00d, 0x0040, 0x3696, 0x2d00,
- 0x200a, 0x6803, 0x0000, 0x6052, 0x0078, 0x369b, 0x2d00, 0x6052,
- 0x604e, 0x6803, 0x0000, 0x1078, 0x47f6, 0xa006, 0x127f, 0x007c,
- 0x2001, 0x0005, 0x2009, 0x0000, 0x0078, 0x36d1, 0x2001, 0x0028,
- 0x2009, 0x0000, 0x0078, 0x36d1, 0xa082, 0x0006, 0x0048, 0x3647,
- 0x2009, 0x760c, 0x210c, 0xd18c, 0x0040, 0x36ba, 0x2001, 0x0004,
- 0x0078, 0x36c3, 0xd184, 0x0040, 0x36c1, 0x2001, 0x0004, 0x0078,
- 0x36c3, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x36d1, 0x2001,
- 0x0029, 0x2009, 0x0000, 0x0078, 0x36d1, 0x2001, 0x0029, 0x2009,
+ 0xa682, 0x0010, 0x00c8, 0x3387, 0xa18c, 0xff00, 0x810f, 0xa182,
+ 0x007e, 0x00c8, 0x338d, 0x2001, 0x6f0c, 0x2004, 0xa084, 0x0003,
+ 0x00c0, 0x3370, 0xa188, 0x7020, 0x2104, 0xa065, 0x0040, 0x3366,
+ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x336c, 0x6078,
+ 0xa00d, 0x0040, 0x3311, 0xa680, 0x6e24, 0x2004, 0xa10c, 0x00c0,
+ 0x3360, 0x607c, 0xa00d, 0x0040, 0x332d, 0xa680, 0x6e24, 0x2004,
+ 0xa10c, 0x0040, 0x332d, 0x694c, 0xd1fc, 0x00c0, 0x3323, 0x1078,
+ 0x3420, 0x0078, 0x335b, 0x1078, 0x33f1, 0x694c, 0xd1ec, 0x00c0,
+ 0x335b, 0x1078, 0x3539, 0x0078, 0x335b, 0x694c, 0xa184, 0xa000,
+ 0x0040, 0x334b, 0xd1ec, 0x0040, 0x3344, 0xd1fc, 0x0040, 0x333c,
+ 0x1078, 0x3550, 0x0078, 0x3347, 0xa680, 0x6e24, 0x200c, 0x607c,
+ 0xa105, 0x607e, 0x0078, 0x334b, 0xd1fc, 0x0040, 0x334b, 0x1078,
+ 0x33f1, 0x0078, 0x335b, 0x6050, 0xa00d, 0x0040, 0x3356, 0x2d00,
+ 0x200a, 0x6803, 0x0000, 0x6052, 0x0078, 0x335b, 0x2d00, 0x6052,
+ 0x604e, 0x6803, 0x0000, 0x1078, 0x4417, 0xa006, 0x127f, 0x007c,
+ 0x2001, 0x0005, 0x2009, 0x0000, 0x0078, 0x3391, 0x2001, 0x0028,
+ 0x2009, 0x0000, 0x0078, 0x3391, 0xa082, 0x0006, 0x0048, 0x3307,
+ 0x2009, 0x6f0c, 0x210c, 0xd18c, 0x0040, 0x337a, 0x2001, 0x0004,
+ 0x0078, 0x3383, 0xd184, 0x0040, 0x3381, 0x2001, 0x0004, 0x0078,
+ 0x3383, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x3391, 0x2001,
+ 0x0029, 0x2009, 0x0000, 0x0078, 0x3391, 0x2001, 0x0029, 0x2009,
0x0000, 0xa005, 0x127f, 0x007c, 0x6944, 0xa1b4, 0x00ff, 0xa682,
- 0x0010, 0x00c8, 0x3716, 0xa18c, 0xff00, 0x810f, 0xa182, 0x00ff,
- 0x00c8, 0x3706, 0xa188, 0x7720, 0x2104, 0xa065, 0x0040, 0x3706,
- 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x370c, 0x684c,
- 0xd0ec, 0x0040, 0x36f9, 0x1078, 0x3890, 0x1078, 0x3731, 0x0078,
- 0x3701, 0x1078, 0x3731, 0x684c, 0xd0fc, 0x0040, 0x3701, 0x1078,
- 0x3879, 0x1078, 0x38a4, 0xa006, 0x0078, 0x371a, 0x2001, 0x0028,
- 0x2009, 0x0000, 0x0078, 0x371a, 0xa082, 0x0006, 0x0048, 0x36ef,
- 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x371a, 0x2001, 0x0029,
+ 0x0010, 0x00c8, 0x33d6, 0xa18c, 0xff00, 0x810f, 0xa182, 0x007e,
+ 0x00c8, 0x33c6, 0xa188, 0x7020, 0x2104, 0xa065, 0x0040, 0x33c6,
+ 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0, 0x33cc, 0x684c,
+ 0xd0ec, 0x0040, 0x33b9, 0x1078, 0x3550, 0x1078, 0x33f1, 0x0078,
+ 0x33c1, 0x1078, 0x33f1, 0x684c, 0xd0fc, 0x0040, 0x33c1, 0x1078,
+ 0x3539, 0x1078, 0x3564, 0xa006, 0x0078, 0x33da, 0x2001, 0x0028,
+ 0x2009, 0x0000, 0x0078, 0x33da, 0xa082, 0x0006, 0x0048, 0x33af,
+ 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x33da, 0x2001, 0x0029,
0x2009, 0x0000, 0xa005, 0x007c, 0x127e, 0x2091, 0x8000, 0x6050,
- 0xa00d, 0x0040, 0x372a, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
+ 0xa00d, 0x0040, 0x33ea, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052,
0x127f, 0x007c, 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078,
- 0x3728, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x373d,
+ 0x33e8, 0x127e, 0x2091, 0x8000, 0x604c, 0xa005, 0x0040, 0x33fd,
0x6802, 0x2d00, 0x604e, 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e,
- 0x6803, 0x0000, 0x0078, 0x373b, 0x127e, 0x2091, 0x8000, 0x604c,
- 0xa06d, 0x0040, 0x3752, 0x6800, 0xa005, 0x00c0, 0x3750, 0x6052,
- 0x604e, 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x375f,
- 0x6800, 0xa005, 0x00c0, 0x375d, 0x6052, 0x604e, 0xad05, 0x007c,
- 0x6803, 0x0000, 0x6084, 0xa00d, 0x0040, 0x376a, 0x2d00, 0x200a,
- 0x6086, 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x3769, 0x127e,
+ 0x6803, 0x0000, 0x0078, 0x33fb, 0x127e, 0x2091, 0x8000, 0x604c,
+ 0xa06d, 0x0040, 0x3412, 0x6800, 0xa005, 0x00c0, 0x3410, 0x6052,
+ 0x604e, 0xad05, 0x127f, 0x007c, 0x604c, 0xa06d, 0x0040, 0x341f,
+ 0x6800, 0xa005, 0x00c0, 0x341d, 0x6052, 0x604e, 0xad05, 0x007c,
+ 0x6803, 0x0000, 0x6084, 0xa00d, 0x0040, 0x342a, 0x2d00, 0x200a,
+ 0x6086, 0x007c, 0x2d00, 0x6086, 0x6082, 0x0078, 0x3429, 0x127e,
0x0c7e, 0x027e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6200, 0xa005,
- 0x0040, 0x377d, 0xc285, 0x0078, 0x377e, 0xc284, 0x6202, 0x027f,
+ 0x0040, 0x343d, 0xc285, 0x0078, 0x343e, 0xc284, 0x6202, 0x027f,
0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218,
0x2260, 0x6204, 0xa294, 0xff00, 0xa215, 0x6206, 0x0c7f, 0x127f,
0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x6218, 0x2260, 0x6204,
0xa294, 0x00ff, 0x8007, 0xa215, 0x6206, 0x0c7f, 0x127f, 0x007c,
- 0x027e, 0xa182, 0x00ff, 0x0048, 0x37a9, 0xa085, 0x0001, 0x0078,
- 0x37bd, 0xa190, 0x7720, 0x2204, 0xa065, 0x00c0, 0x37bc, 0x017e,
- 0x0d7e, 0x1078, 0x1314, 0x2d60, 0x0d7f, 0x017f, 0x0040, 0x37a5,
- 0x2c00, 0x2012, 0x1078, 0x35db, 0xa006, 0x027f, 0x007c, 0x027e,
- 0xa182, 0x00ff, 0x0048, 0x37c8, 0xa085, 0x0001, 0x0078, 0x37d5,
- 0x0d7e, 0xa190, 0x7720, 0x2204, 0xa06d, 0x0040, 0x37d3, 0x2013,
- 0x0000, 0x1078, 0x1348, 0x0d7f, 0xa006, 0x027f, 0x007c, 0x017e,
- 0xa182, 0x00ff, 0x0048, 0x37e0, 0xa085, 0x0001, 0x0078, 0x37e7,
- 0xa188, 0x7720, 0x2104, 0xa065, 0x0040, 0x37dc, 0xa006, 0x017f,
+ 0x027e, 0xa182, 0x007e, 0x0048, 0x3469, 0xa085, 0x0001, 0x0078,
+ 0x347d, 0xa190, 0x7020, 0x2204, 0xa065, 0x00c0, 0x347c, 0x017e,
+ 0x0d7e, 0x1078, 0x12c5, 0x2d60, 0x0d7f, 0x017f, 0x0040, 0x3465,
+ 0x2c00, 0x2012, 0x1078, 0x329b, 0xa006, 0x027f, 0x007c, 0x027e,
+ 0xa182, 0x007e, 0x0048, 0x3488, 0xa085, 0x0001, 0x0078, 0x3495,
+ 0x0d7e, 0xa190, 0x7020, 0x2204, 0xa06d, 0x0040, 0x3493, 0x2013,
+ 0x0000, 0x1078, 0x12f9, 0x0d7f, 0xa006, 0x027f, 0x007c, 0x017e,
+ 0xa182, 0x007e, 0x0048, 0x34a0, 0xa085, 0x0001, 0x0078, 0x34a7,
+ 0xa188, 0x7020, 0x2104, 0xa065, 0x0040, 0x349c, 0xa006, 0x017f,
0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e, 0x600b, 0x0000, 0x600f,
- 0x0000, 0x6000, 0xc08c, 0x6002, 0x2069, 0x7b8e, 0x6808, 0x605e,
- 0x6810, 0x6062, 0x6138, 0xa10a, 0x0048, 0x37ff, 0x603a, 0x6814,
- 0x6066, 0x2099, 0x7b96, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004,
- 0x53a3, 0x2099, 0x7b9a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004,
- 0x53a3, 0x2069, 0x7bae, 0x6808, 0x606a, 0x690c, 0x616e, 0x6810,
- 0x6072, 0x6818, 0x6076, 0xa182, 0x0211, 0x00c8, 0x3823, 0x2009,
- 0x0008, 0x0078, 0x384d, 0xa182, 0x0259, 0x00c8, 0x382b, 0x2009,
- 0x0007, 0x0078, 0x384d, 0xa182, 0x02c1, 0x00c8, 0x3833, 0x2009,
- 0x0006, 0x0078, 0x384d, 0xa182, 0x0349, 0x00c8, 0x383b, 0x2009,
- 0x0005, 0x0078, 0x384d, 0xa182, 0x0421, 0x00c8, 0x3843, 0x2009,
- 0x0004, 0x0078, 0x384d, 0xa182, 0x0581, 0x00c8, 0x384b, 0x2009,
- 0x0003, 0x0078, 0x384d, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f,
- 0x157f, 0x0d7f, 0x007c, 0x0e7e, 0x2071, 0x7b8d, 0x2e04, 0x6896,
- 0x2071, 0x7b8e, 0x7004, 0x689a, 0x701c, 0x689e, 0x0e7f, 0x007c,
- 0x2001, 0x7580, 0xa600, 0x2004, 0x127e, 0x2091, 0x8000, 0x6178,
- 0xa10d, 0x617a, 0x127f, 0x007c, 0x2001, 0x7580, 0xa600, 0x2004,
+ 0x0000, 0x6000, 0xc08c, 0x6002, 0x2069, 0x738e, 0x6808, 0x605e,
+ 0x6810, 0x6062, 0x6138, 0xa10a, 0x0048, 0x34bf, 0x603a, 0x6814,
+ 0x6066, 0x2099, 0x7396, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004,
+ 0x53a3, 0x2099, 0x739a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004,
+ 0x53a3, 0x2069, 0x73ae, 0x6808, 0x606a, 0x690c, 0x616e, 0x6810,
+ 0x6072, 0x6818, 0x6076, 0xa182, 0x0211, 0x00c8, 0x34e3, 0x2009,
+ 0x0008, 0x0078, 0x350d, 0xa182, 0x0259, 0x00c8, 0x34eb, 0x2009,
+ 0x0007, 0x0078, 0x350d, 0xa182, 0x02c1, 0x00c8, 0x34f3, 0x2009,
+ 0x0006, 0x0078, 0x350d, 0xa182, 0x0349, 0x00c8, 0x34fb, 0x2009,
+ 0x0005, 0x0078, 0x350d, 0xa182, 0x0421, 0x00c8, 0x3503, 0x2009,
+ 0x0004, 0x0078, 0x350d, 0xa182, 0x0581, 0x00c8, 0x350b, 0x2009,
+ 0x0003, 0x0078, 0x350d, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f,
+ 0x157f, 0x0d7f, 0x007c, 0x0e7e, 0x2071, 0x738d, 0x2e04, 0x6896,
+ 0x2071, 0x738e, 0x7004, 0x689a, 0x701c, 0x689e, 0x0e7f, 0x007c,
+ 0x2001, 0x6e24, 0xa600, 0x2004, 0x127e, 0x2091, 0x8000, 0x6178,
+ 0xa10d, 0x617a, 0x127f, 0x007c, 0x2001, 0x6e24, 0xa600, 0x2004,
0x8002, 0x127e, 0x2091, 0x8000, 0x6178, 0xa10c, 0x617a, 0x127f,
- 0x007c, 0x2001, 0x7580, 0xa600, 0x2004, 0x8002, 0x127e, 0x2091,
- 0x8000, 0x617c, 0xa10c, 0x617e, 0x127f, 0x0078, 0x3889, 0x1078,
- 0x371c, 0x1078, 0x38ea, 0x00c0, 0x3887, 0x1078, 0x38a4, 0x007c,
- 0x2001, 0x7580, 0xa600, 0x2004, 0x127e, 0x2091, 0x8000, 0x617c,
- 0xa10d, 0x617e, 0x127f, 0x0078, 0x389f, 0x1078, 0x3760, 0x1078,
- 0x38ae, 0x00c0, 0x389d, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x47f6, 0x127f, 0x007c, 0xa01e, 0x0078, 0x38b0, 0x2019, 0x0001,
+ 0x007c, 0x2001, 0x6e24, 0xa600, 0x2004, 0x8002, 0x127e, 0x2091,
+ 0x8000, 0x617c, 0xa10c, 0x617e, 0x127f, 0x0078, 0x3549, 0x1078,
+ 0x33dc, 0x1078, 0x35aa, 0x00c0, 0x3547, 0x1078, 0x3564, 0x007c,
+ 0x2001, 0x6e24, 0xa600, 0x2004, 0x127e, 0x2091, 0x8000, 0x617c,
+ 0xa10d, 0x617e, 0x127f, 0x0078, 0x355f, 0x1078, 0x3420, 0x1078,
+ 0x356e, 0x00c0, 0x355d, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x4417, 0x127f, 0x007c, 0xa01e, 0x0078, 0x3570, 0x2019, 0x0001,
0xa00e, 0x127e, 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc,
- 0x00c0, 0x38d0, 0x8dff, 0x0040, 0x38e5, 0x83ff, 0x0040, 0x38c8,
- 0x6844, 0xa084, 0x00ff, 0xa606, 0x0040, 0x38d5, 0x0078, 0x38d0,
- 0x683c, 0xa406, 0x00c0, 0x38d0, 0x6840, 0xa506, 0x0040, 0x38d5,
- 0x2d08, 0x6800, 0x2068, 0x0078, 0x38ba, 0x6a00, 0x604c, 0xad06,
- 0x00c0, 0x38dd, 0x624e, 0x0078, 0x38e0, 0xa180, 0x0000, 0x2202,
- 0x82ff, 0x00c0, 0x38e5, 0x6152, 0x8dff, 0x127f, 0x007c, 0xa01e,
- 0x0078, 0x38ec, 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff,
- 0x0040, 0x391a, 0x83ff, 0x0040, 0x38fd, 0x6844, 0xa084, 0x00ff,
- 0xa606, 0x0040, 0x390a, 0x0078, 0x3905, 0x683c, 0xa406, 0x00c0,
- 0x3905, 0x6840, 0xa506, 0x0040, 0x390a, 0x2d08, 0x6800, 0x2068,
- 0x0078, 0x38ef, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x3912, 0x6282,
- 0x0078, 0x3915, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x391a,
- 0x6186, 0x8dff, 0x007c, 0x2001, 0x7580, 0xa600, 0x2004, 0x6178,
- 0xa10c, 0x0040, 0x3925, 0x2011, 0x0001, 0x617c, 0xa10c, 0x0040,
- 0x392b, 0xa295, 0x0002, 0x007c, 0x1078, 0x3977, 0x0040, 0x3934,
- 0x1078, 0x69c1, 0x0078, 0x3936, 0xa085, 0x0001, 0x007c, 0x1078,
- 0x3977, 0x0040, 0x393f, 0x1078, 0x6950, 0x0078, 0x3941, 0xa085,
- 0x0001, 0x007c, 0x1078, 0x3977, 0x0040, 0x394a, 0x1078, 0x6996,
- 0x0078, 0x394c, 0xa085, 0x0001, 0x007c, 0x1078, 0x3977, 0x0040,
- 0x3955, 0x1078, 0x696c, 0x0078, 0x3957, 0xa085, 0x0001, 0x007c,
+ 0x00c0, 0x3590, 0x8dff, 0x0040, 0x35a5, 0x83ff, 0x0040, 0x3588,
+ 0x6844, 0xa084, 0x00ff, 0xa606, 0x0040, 0x3595, 0x0078, 0x3590,
+ 0x683c, 0xa406, 0x00c0, 0x3590, 0x6840, 0xa506, 0x0040, 0x3595,
+ 0x2d08, 0x6800, 0x2068, 0x0078, 0x357a, 0x6a00, 0x604c, 0xad06,
+ 0x00c0, 0x359d, 0x624e, 0x0078, 0x35a0, 0xa180, 0x0000, 0x2202,
+ 0x82ff, 0x00c0, 0x35a5, 0x6152, 0x8dff, 0x127f, 0x007c, 0xa01e,
+ 0x0078, 0x35ac, 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff,
+ 0x0040, 0x35da, 0x83ff, 0x0040, 0x35bd, 0x6844, 0xa084, 0x00ff,
+ 0xa606, 0x0040, 0x35ca, 0x0078, 0x35c5, 0x683c, 0xa406, 0x00c0,
+ 0x35c5, 0x6840, 0xa506, 0x0040, 0x35ca, 0x2d08, 0x6800, 0x2068,
+ 0x0078, 0x35af, 0x6a00, 0x6080, 0xad06, 0x00c0, 0x35d2, 0x6282,
+ 0x0078, 0x35d5, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0, 0x35da,
+ 0x6186, 0x8dff, 0x007c, 0x2001, 0x6e24, 0xa600, 0x2004, 0x6178,
+ 0xa10c, 0x0040, 0x35e5, 0x2011, 0x0001, 0x617c, 0xa10c, 0x0040,
+ 0x35eb, 0xa295, 0x0002, 0x007c, 0x1078, 0x3637, 0x0040, 0x35f4,
+ 0x1078, 0x628e, 0x0078, 0x35f6, 0xa085, 0x0001, 0x007c, 0x1078,
+ 0x3637, 0x0040, 0x35ff, 0x1078, 0x621d, 0x0078, 0x3601, 0xa085,
+ 0x0001, 0x007c, 0x1078, 0x3637, 0x0040, 0x360a, 0x1078, 0x6263,
+ 0x0078, 0x360c, 0xa085, 0x0001, 0x007c, 0x1078, 0x3637, 0x0040,
+ 0x3615, 0x1078, 0x6239, 0x0078, 0x3617, 0xa085, 0x0001, 0x007c,
0x127e, 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d, 0x0040,
- 0x396f, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
- 0x1078, 0x6aea, 0x1078, 0x3a2c, 0x007f, 0x0078, 0x395e, 0x6083,
+ 0x362f, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
+ 0x1078, 0x639b, 0x1078, 0x36ec, 0x007f, 0x0078, 0x361e, 0x6083,
0x0000, 0x6087, 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c, 0x609c,
- 0xd0a4, 0x007c, 0x0f7e, 0x2079, 0x7651, 0x7804, 0xd0a4, 0x0040,
- 0x39a3, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e,
- 0x1078, 0x37d7, 0x00c0, 0x3997, 0x6004, 0xa084, 0xff00, 0x8007,
- 0xa086, 0x0006, 0x00c0, 0x3997, 0x6000, 0xc0ed, 0x6002, 0x017f,
- 0x8108, 0x00f0, 0x3987, 0x0c7f, 0x157f, 0x2009, 0x07d0, 0x2011,
- 0x39a5, 0x1078, 0x45b0, 0x0f7f, 0x007c, 0x2011, 0x39a5, 0x1078,
- 0x4520, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e,
- 0x1078, 0x37d7, 0x00c0, 0x39d1, 0x6000, 0xd0ec, 0x0040, 0x39d1,
+ 0xd0a4, 0x007c, 0x0f7e, 0x2079, 0x6f51, 0x7804, 0xd0a4, 0x0040,
+ 0x3663, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e,
+ 0x1078, 0x3497, 0x00c0, 0x3657, 0x6004, 0xa084, 0xff00, 0x8007,
+ 0xa086, 0x0006, 0x00c0, 0x3657, 0x6000, 0xc0ed, 0x6002, 0x017f,
+ 0x8108, 0x00f0, 0x3647, 0x0c7f, 0x157f, 0x2009, 0x07d0, 0x2011,
+ 0x3665, 0x1078, 0x41e3, 0x0f7f, 0x007c, 0x2011, 0x3665, 0x1078,
+ 0x4153, 0x157e, 0x0c7e, 0x20a9, 0x007e, 0x2009, 0x0000, 0x017e,
+ 0x1078, 0x3497, 0x00c0, 0x3691, 0x6000, 0xd0ec, 0x0040, 0x3691,
0x047e, 0x62a0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029,
- 0x1078, 0x74ec, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x2019, 0x0029,
- 0x1078, 0x4914, 0x1078, 0x4857, 0x2009, 0x0000, 0x1078, 0x7326,
- 0x047f, 0x017f, 0x8108, 0x00f0, 0x39af, 0x0c7f, 0x157f, 0x007c,
+ 0x1078, 0x6d90, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x2019, 0x0029,
+ 0x1078, 0x4535, 0x1078, 0x4478, 0x2009, 0x0000, 0x1078, 0x6bca,
+ 0x047f, 0x017f, 0x8108, 0x00f0, 0x366f, 0x0c7f, 0x157f, 0x007c,
0x0c7e, 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c,
- 0x2071, 0x76ff, 0x7003, 0x0001, 0x7007, 0x0000, 0x7013, 0x0000,
+ 0x2071, 0x6fff, 0x7003, 0x0001, 0x7007, 0x0000, 0x7013, 0x0000,
0x7017, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x704b, 0x0001,
0x704f, 0x0000, 0x705b, 0x0020, 0x705f, 0x0040, 0x707f, 0x0000,
- 0x007c, 0x0e7e, 0x2071, 0x76ff, 0x684c, 0xa005, 0x00c0, 0x3a07,
- 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078, 0x3a2a, 0x6a60,
+ 0x007c, 0x0e7e, 0x2071, 0x6fff, 0x684c, 0xa005, 0x00c0, 0x36c7,
+ 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078, 0x36ea, 0x6a60,
0x7236, 0x6b64, 0x733a, 0x6868, 0x703e, 0x7076, 0x686c, 0x7042,
0x707a, 0x684c, 0x702e, 0x6844, 0x7032, 0x2009, 0x000d, 0x200a,
0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210,
0x2100, 0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007,
0x0001, 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x6838, 0xd0fc, 0x00c0,
- 0x3a7d, 0x6804, 0xa00d, 0x0040, 0x3a4b, 0x0d7e, 0x0e7e, 0x2071,
- 0x7600, 0x027e, 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210,
- 0x2d00, 0x81ff, 0x00c0, 0x3a3c, 0x702e, 0x70a0, 0xa200, 0x70a2,
- 0x027f, 0x0e7f, 0x0d7f, 0x2071, 0x76ff, 0x701c, 0xa005, 0x00c0,
- 0x3a8e, 0x0068, 0x3a8c, 0x2071, 0x7651, 0x7004, 0xd09c, 0x0040,
- 0x3a8c, 0x6934, 0xa186, 0x0103, 0x00c0, 0x3a9f, 0x6948, 0x6844,
- 0xa105, 0x00c0, 0x3a7f, 0x2009, 0x8020, 0x2071, 0x0000, 0x7018,
- 0xd084, 0x00c0, 0x3a8c, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a,
- 0x701b, 0x0001, 0x2091, 0x4080, 0x2071, 0x7600, 0x702c, 0x206a,
- 0x2d00, 0x702e, 0x70a0, 0x8000, 0x70a2, 0x0e7f, 0x007c, 0x6844,
- 0xa086, 0x0100, 0x00c0, 0x3a8c, 0x6868, 0xa005, 0x00c0, 0x3a8c,
- 0x2009, 0x8020, 0x0078, 0x3a65, 0x2071, 0x76ff, 0x2d08, 0x206b,
+ 0x373d, 0x6804, 0xa00d, 0x0040, 0x370b, 0x0d7e, 0x0e7e, 0x2071,
+ 0x6f00, 0x027e, 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210,
+ 0x2d00, 0x81ff, 0x00c0, 0x36fc, 0x702e, 0x7098, 0xa200, 0x709a,
+ 0x027f, 0x0e7f, 0x0d7f, 0x2071, 0x6fff, 0x701c, 0xa005, 0x00c0,
+ 0x374e, 0x0068, 0x374c, 0x2071, 0x6f51, 0x7004, 0xd09c, 0x0040,
+ 0x374c, 0x6934, 0xa186, 0x0103, 0x00c0, 0x375f, 0x6948, 0x6844,
+ 0xa105, 0x00c0, 0x373f, 0x2009, 0x8020, 0x2071, 0x0000, 0x7018,
+ 0xd084, 0x00c0, 0x374c, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a,
+ 0x701b, 0x0001, 0x2091, 0x4080, 0x2071, 0x6f00, 0x702c, 0x206a,
+ 0x2d00, 0x702e, 0x7098, 0x8000, 0x709a, 0x0e7f, 0x007c, 0x6844,
+ 0xa086, 0x0100, 0x00c0, 0x374c, 0x6868, 0xa005, 0x00c0, 0x374c,
+ 0x2009, 0x8020, 0x0078, 0x3725, 0x2071, 0x6fff, 0x2d08, 0x206b,
0x0000, 0x7010, 0x8000, 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040,
- 0x3a9c, 0x6902, 0x0078, 0x3a9d, 0x711e, 0x0078, 0x3a7d, 0xa18c,
- 0x00ff, 0xa186, 0x0017, 0x0040, 0x3aad, 0xa186, 0x001e, 0x0040,
- 0x3aad, 0xa18e, 0x001f, 0x00c0, 0x3a8c, 0x684c, 0xd0cc, 0x0040,
- 0x3a8c, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3a8c,
- 0x2009, 0x8021, 0x0078, 0x3a65, 0x007e, 0x6837, 0x0103, 0x20a9,
+ 0x375c, 0x6902, 0x0078, 0x375d, 0x711e, 0x0078, 0x373d, 0xa18c,
+ 0x00ff, 0xa186, 0x0017, 0x0040, 0x376d, 0xa186, 0x001e, 0x0040,
+ 0x376d, 0xa18e, 0x001f, 0x00c0, 0x374c, 0x684c, 0xd0cc, 0x0040,
+ 0x374c, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x374c,
+ 0x2009, 0x8021, 0x0078, 0x3725, 0x007e, 0x6837, 0x0103, 0x20a9,
0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f,
- 0x684a, 0x6952, 0x007c, 0x2071, 0x76ff, 0x7004, 0x0079, 0x3ad0,
- 0x3ad8, 0x3ae7, 0x3b77, 0x3b78, 0x3b88, 0x3b8e, 0x3ad9, 0x3b65,
- 0x007c, 0x127e, 0x2091, 0x8000, 0x0068, 0x3ae6, 0x2009, 0x000d,
+ 0x684a, 0x6952, 0x007c, 0x2071, 0x6fff, 0x7004, 0x0079, 0x3790,
+ 0x3798, 0x37a7, 0x3837, 0x3838, 0x3848, 0x384e, 0x3799, 0x3825,
+ 0x007c, 0x127e, 0x2091, 0x8000, 0x0068, 0x37a6, 0x2009, 0x000d,
0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x701c,
- 0xa06d, 0x0040, 0x3b64, 0x0e7e, 0x2071, 0x7651, 0x7004, 0xd09c,
- 0x0040, 0x3b46, 0x6934, 0xa186, 0x0103, 0x00c0, 0x3b1c, 0x6948,
- 0x6844, 0xa105, 0x00c0, 0x3b39, 0x2009, 0x8020, 0x127e, 0x2091,
- 0x8000, 0x0068, 0x3b18, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0,
- 0x3b18, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001,
- 0x2091, 0x4080, 0x127f, 0x0e7f, 0x1078, 0x3bc1, 0x0078, 0x3b64,
- 0x127f, 0x0e7f, 0x0078, 0x3b64, 0xa18c, 0x00ff, 0xa186, 0x0017,
- 0x0040, 0x3b2a, 0xa186, 0x001e, 0x0040, 0x3b2a, 0xa18e, 0x001f,
- 0x00c0, 0x3b46, 0x684c, 0xd0cc, 0x0040, 0x3b46, 0x6850, 0xa084,
- 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3b46, 0x2009, 0x8021, 0x0078,
- 0x3afe, 0x6844, 0xa086, 0x0100, 0x00c0, 0x3b46, 0x6868, 0xa005,
- 0x00c0, 0x3b46, 0x2009, 0x8020, 0x0078, 0x3afe, 0x0e7f, 0x1078,
- 0x3bd5, 0x0040, 0x3b64, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff,
- 0xa086, 0x0003, 0x00c0, 0x3b5b, 0x810f, 0xa18c, 0x00ff, 0x8101,
- 0x0040, 0x3b5b, 0x710e, 0x7007, 0x0003, 0x1078, 0x3bf5, 0x7050,
- 0xa086, 0x0100, 0x0040, 0x3b78, 0x007c, 0x701c, 0xa06d, 0x0040,
- 0x3b76, 0x1078, 0x3bd5, 0x0040, 0x3b76, 0x7007, 0x0003, 0x1078,
- 0x3bf5, 0x7050, 0xa086, 0x0100, 0x0040, 0x3b78, 0x007c, 0x007c,
- 0x7050, 0xa09e, 0x0100, 0x00c0, 0x3b81, 0x7007, 0x0004, 0x0078,
- 0x3b88, 0xa086, 0x0200, 0x00c0, 0x3b87, 0x7007, 0x0005, 0x007c,
- 0x1078, 0x3b8f, 0x7006, 0x1078, 0x3bc1, 0x007c, 0x007c, 0x702c,
- 0x7130, 0x8108, 0xa102, 0x0048, 0x3b9c, 0xa00e, 0x7034, 0x706e,
- 0x7038, 0x7072, 0x0078, 0x3ba6, 0x706c, 0xa080, 0x0040, 0x706e,
- 0x00c8, 0x3ba6, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c,
- 0x8001, 0x700e, 0x00c0, 0x3bba, 0x127e, 0x2091, 0x8000, 0x0068,
- 0x3bbd, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001,
+ 0xa06d, 0x0040, 0x3824, 0x0e7e, 0x2071, 0x6f51, 0x7004, 0xd09c,
+ 0x0040, 0x3806, 0x6934, 0xa186, 0x0103, 0x00c0, 0x37dc, 0x6948,
+ 0x6844, 0xa105, 0x00c0, 0x37f9, 0x2009, 0x8020, 0x127e, 0x2091,
+ 0x8000, 0x0068, 0x37d8, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0,
+ 0x37d8, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001,
+ 0x2091, 0x4080, 0x127f, 0x0e7f, 0x1078, 0x3881, 0x0078, 0x3824,
+ 0x127f, 0x0e7f, 0x0078, 0x3824, 0xa18c, 0x00ff, 0xa186, 0x0017,
+ 0x0040, 0x37ea, 0xa186, 0x001e, 0x0040, 0x37ea, 0xa18e, 0x001f,
+ 0x00c0, 0x3806, 0x684c, 0xd0cc, 0x0040, 0x3806, 0x6850, 0xa084,
+ 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3806, 0x2009, 0x8021, 0x0078,
+ 0x37be, 0x6844, 0xa086, 0x0100, 0x00c0, 0x3806, 0x6868, 0xa005,
+ 0x00c0, 0x3806, 0x2009, 0x8020, 0x0078, 0x37be, 0x0e7f, 0x1078,
+ 0x3895, 0x0040, 0x3824, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff,
+ 0xa086, 0x0003, 0x00c0, 0x381b, 0x810f, 0xa18c, 0x00ff, 0x8101,
+ 0x0040, 0x381b, 0x710e, 0x7007, 0x0003, 0x1078, 0x38b5, 0x7050,
+ 0xa086, 0x0100, 0x0040, 0x3838, 0x007c, 0x701c, 0xa06d, 0x0040,
+ 0x3836, 0x1078, 0x3895, 0x0040, 0x3836, 0x7007, 0x0003, 0x1078,
+ 0x38b5, 0x7050, 0xa086, 0x0100, 0x0040, 0x3838, 0x007c, 0x007c,
+ 0x7050, 0xa09e, 0x0100, 0x00c0, 0x3841, 0x7007, 0x0004, 0x0078,
+ 0x3848, 0xa086, 0x0200, 0x00c0, 0x3847, 0x7007, 0x0005, 0x007c,
+ 0x1078, 0x384f, 0x7006, 0x1078, 0x3881, 0x007c, 0x007c, 0x702c,
+ 0x7130, 0x8108, 0xa102, 0x0048, 0x385c, 0xa00e, 0x7034, 0x706e,
+ 0x7038, 0x7072, 0x0078, 0x3866, 0x706c, 0xa080, 0x0040, 0x706e,
+ 0x00c8, 0x3866, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c,
+ 0x8001, 0x700e, 0x00c0, 0x387a, 0x127e, 0x2091, 0x8000, 0x0068,
+ 0x387d, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001,
0x127f, 0x007c, 0x2001, 0x0007, 0x007c, 0x2001, 0x0006, 0x127f,
- 0x007c, 0x701c, 0xa06d, 0x0040, 0x3bd4, 0x127e, 0x2091, 0x8000,
- 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, 0x00c0, 0x3bd1,
- 0x701a, 0x127f, 0x1078, 0x1348, 0x007c, 0x2019, 0x000d, 0x2304,
- 0x230c, 0xa10e, 0x0040, 0x3be4, 0x2304, 0x230c, 0xa10e, 0x0040,
- 0x3be4, 0xa006, 0x0078, 0x3bf4, 0x732c, 0x8319, 0x7130, 0xa102,
- 0x00c0, 0x3bee, 0x2300, 0xa005, 0x0078, 0x3bf4, 0x0048, 0x3bf3,
- 0xa302, 0x0078, 0x3bf4, 0x8002, 0x007c, 0x2d00, 0x7026, 0xa080,
+ 0x007c, 0x701c, 0xa06d, 0x0040, 0x3894, 0x127e, 0x2091, 0x8000,
+ 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, 0x00c0, 0x3891,
+ 0x701a, 0x127f, 0x1078, 0x12f9, 0x007c, 0x2019, 0x000d, 0x2304,
+ 0x230c, 0xa10e, 0x0040, 0x38a4, 0x2304, 0x230c, 0xa10e, 0x0040,
+ 0x38a4, 0xa006, 0x0078, 0x38b4, 0x732c, 0x8319, 0x7130, 0xa102,
+ 0x00c0, 0x38ae, 0x2300, 0xa005, 0x0078, 0x38b4, 0x0048, 0x38b3,
+ 0xa302, 0x0078, 0x38b4, 0x8002, 0x007c, 0x2d00, 0x7026, 0xa080,
0x000d, 0x7056, 0x7053, 0x0000, 0x127e, 0x2091, 0x8000, 0x2009,
- 0x7859, 0x2104, 0xc08d, 0x200a, 0x127f, 0x1078, 0x1399, 0x007c,
- 0x2071, 0x76cd, 0x7003, 0x0000, 0x7007, 0x0000, 0x700f, 0x0000,
+ 0x70d9, 0x2104, 0xc08d, 0x200a, 0x127f, 0x1078, 0x134a, 0x007c,
+ 0x2071, 0x6fcd, 0x7003, 0x0000, 0x7007, 0x0000, 0x700f, 0x0000,
0x702b, 0x0001, 0x704f, 0x0000, 0x7053, 0x0001, 0x705f, 0x0020,
0x7063, 0x0040, 0x7083, 0x0000, 0x708b, 0x0000, 0x708f, 0x0001,
- 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x76cd, 0x6848, 0xa005,
- 0x00c0, 0x3c31, 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078,
- 0x3c56, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a,
+ 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x6fcd, 0x6848, 0xa005,
+ 0x00c0, 0x38f1, 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078,
+ 0x3916, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a,
0x685c, 0x7042, 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, 0x2009,
0x000c, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084,
0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, 0xc084,
0x702a, 0x7007, 0x0001, 0x700f, 0x0000, 0xa006, 0x0e7f, 0x007c,
- 0x2b78, 0x2071, 0x76cd, 0x7004, 0x1079, 0x3cb6, 0x700c, 0x0079,
- 0x3c61, 0x3c66, 0x3c5b, 0x3c5b, 0x3c5b, 0x3c5b, 0x007c, 0x700c,
- 0x0079, 0x3c6a, 0x3c6f, 0x3cb4, 0x3cb4, 0x3cb5, 0x3cb5, 0x7830,
- 0x7930, 0xa106, 0x0040, 0x3c79, 0x7830, 0x7930, 0xa106, 0x00c0,
- 0x3c9f, 0x7030, 0xa10a, 0x0040, 0x3c9f, 0x00c8, 0x3c81, 0x712c,
- 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x3ca0, 0x1078, 0x1314, 0x0040,
- 0x3c9f, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, 0x7057,
- 0x0000, 0x127e, 0x007e, 0x2091, 0x8000, 0x2009, 0x7859, 0x2104,
- 0xc085, 0x200a, 0x007f, 0x700e, 0x127f, 0x1078, 0x1399, 0x007c,
- 0x1078, 0x1314, 0x0040, 0x3c9f, 0x2d00, 0x705a, 0x1078, 0x1314,
- 0x00c0, 0x3cac, 0x0078, 0x3c8b, 0x2d00, 0x7086, 0x7063, 0x0080,
- 0x2001, 0x0004, 0x0078, 0x3c8f, 0x007c, 0x007c, 0x3cc7, 0x3cc8,
- 0x3cff, 0x3d00, 0x3cb4, 0x3d36, 0x3d3b, 0x3d72, 0x3d73, 0x3d8e,
- 0x3d8f, 0x3d90, 0x3d91, 0x3d92, 0x3d93, 0x3dfc, 0x3e26, 0x007c,
- 0x700c, 0x0079, 0x3ccb, 0x3cd0, 0x3cd3, 0x3ce3, 0x3cfe, 0x3cfe,
- 0x1078, 0x3c67, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e,
- 0x1078, 0x4105, 0x0040, 0x3ce0, 0x2091, 0x8000, 0x1078, 0x3c67,
- 0x0d7f, 0x0078, 0x3cec, 0x127e, 0x8001, 0x700e, 0x1078, 0x4105,
+ 0x2b78, 0x2071, 0x6fcd, 0x7004, 0x1079, 0x3976, 0x700c, 0x0079,
+ 0x3921, 0x3926, 0x391b, 0x391b, 0x391b, 0x391b, 0x007c, 0x700c,
+ 0x0079, 0x392a, 0x392f, 0x3974, 0x3974, 0x3975, 0x3975, 0x7830,
+ 0x7930, 0xa106, 0x0040, 0x3939, 0x7830, 0x7930, 0xa106, 0x00c0,
+ 0x395f, 0x7030, 0xa10a, 0x0040, 0x395f, 0x00c8, 0x3941, 0x712c,
+ 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x3960, 0x1078, 0x12c5, 0x0040,
+ 0x395f, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, 0x7057,
+ 0x0000, 0x127e, 0x007e, 0x2091, 0x8000, 0x2009, 0x70d9, 0x2104,
+ 0xc085, 0x200a, 0x007f, 0x700e, 0x127f, 0x1078, 0x134a, 0x007c,
+ 0x1078, 0x12c5, 0x0040, 0x395f, 0x2d00, 0x705a, 0x1078, 0x12c5,
+ 0x00c0, 0x396c, 0x0078, 0x394b, 0x2d00, 0x7086, 0x7063, 0x0080,
+ 0x2001, 0x0004, 0x0078, 0x394f, 0x007c, 0x007c, 0x3987, 0x3988,
+ 0x39bf, 0x39c0, 0x3974, 0x39f6, 0x39fb, 0x3a32, 0x3a33, 0x3a4e,
+ 0x3a4f, 0x3a50, 0x3a51, 0x3a52, 0x3a53, 0x3abc, 0x3ae6, 0x007c,
+ 0x700c, 0x0079, 0x398b, 0x3990, 0x3993, 0x39a3, 0x39be, 0x39be,
+ 0x1078, 0x3927, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e,
+ 0x1078, 0x3dc5, 0x0040, 0x39a0, 0x2091, 0x8000, 0x1078, 0x3927,
+ 0x0d7f, 0x0078, 0x39ac, 0x127e, 0x8001, 0x700e, 0x1078, 0x3dc5,
0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000,
- 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020, 0x00c8, 0x3cfb, 0x1079,
- 0x3d16, 0x127f, 0x007c, 0x127f, 0x1078, 0x3d94, 0x007c, 0x007c,
- 0x007c, 0x0e7e, 0x2071, 0x76cd, 0x700c, 0x0079, 0x3d07, 0x3d0c,
- 0x3d0c, 0x3d0c, 0x3d0e, 0x3d12, 0x0e7f, 0x007c, 0x700f, 0x0001,
- 0x0078, 0x3d14, 0x700f, 0x0002, 0x0e7f, 0x007c, 0x3d94, 0x3d94,
- 0x3db0, 0x3d94, 0x3e9b, 0x3d94, 0x3d94, 0x3d94, 0x3d94, 0x3d94,
- 0x3db0, 0x3ee0, 0x3f29, 0x3f81, 0x3f94, 0x3d94, 0x3d94, 0x3dcc,
- 0x3db0, 0x3d94, 0x3d94, 0x3de2, 0x401b, 0x4038, 0x3d94, 0x3dcc,
- 0x3d94, 0x3d94, 0x3d94, 0x3d94, 0x3de2, 0x4038, 0x7020, 0x2068,
- 0x1078, 0x1348, 0x007c, 0x700c, 0x0079, 0x3d3e, 0x3d43, 0x3d46,
- 0x3d56, 0x3d71, 0x3d71, 0x1078, 0x3c67, 0x007c, 0x127e, 0x8001,
- 0x700e, 0x7058, 0x007e, 0x1078, 0x4105, 0x0040, 0x3d53, 0x2091,
- 0x8000, 0x1078, 0x3c67, 0x0d7f, 0x0078, 0x3d5f, 0x127e, 0x8001,
- 0x700e, 0x1078, 0x4105, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
+ 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020, 0x00c8, 0x39bb, 0x1079,
+ 0x39d6, 0x127f, 0x007c, 0x127f, 0x1078, 0x3a54, 0x007c, 0x007c,
+ 0x007c, 0x0e7e, 0x2071, 0x6fcd, 0x700c, 0x0079, 0x39c7, 0x39cc,
+ 0x39cc, 0x39cc, 0x39ce, 0x39d2, 0x0e7f, 0x007c, 0x700f, 0x0001,
+ 0x0078, 0x39d4, 0x700f, 0x0002, 0x0e7f, 0x007c, 0x3a54, 0x3a54,
+ 0x3a70, 0x3a54, 0x3b5b, 0x3a54, 0x3a54, 0x3a54, 0x3a54, 0x3a54,
+ 0x3a70, 0x3ba0, 0x3be9, 0x3c41, 0x3c54, 0x3a54, 0x3a54, 0x3a8c,
+ 0x3a70, 0x3a54, 0x3a54, 0x3aa2, 0x3cdb, 0x3cf8, 0x3a54, 0x3a8c,
+ 0x3a54, 0x3a54, 0x3a54, 0x3a54, 0x3aa2, 0x3cf8, 0x7020, 0x2068,
+ 0x1078, 0x12f9, 0x007c, 0x700c, 0x0079, 0x39fe, 0x3a03, 0x3a06,
+ 0x3a16, 0x3a31, 0x3a31, 0x1078, 0x3927, 0x007c, 0x127e, 0x8001,
+ 0x700e, 0x7058, 0x007e, 0x1078, 0x3dc5, 0x0040, 0x3a13, 0x2091,
+ 0x8000, 0x1078, 0x3927, 0x0d7f, 0x0078, 0x3a1f, 0x127e, 0x8001,
+ 0x700e, 0x1078, 0x3dc5, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a,
- 0x00c8, 0x3d6e, 0x1079, 0x3d74, 0x127f, 0x007c, 0x127f, 0x1078,
- 0x3d94, 0x007c, 0x007c, 0x007c, 0x3d94, 0x3db0, 0x3e85, 0x3d94,
- 0x3db0, 0x3d94, 0x3db0, 0x3db0, 0x3d94, 0x3db0, 0x3e85, 0x3db0,
- 0x3db0, 0x3db0, 0x3db0, 0x3db0, 0x3d94, 0x3db0, 0x3e85, 0x3d94,
- 0x3d94, 0x3db0, 0x3d94, 0x3d94, 0x3d94, 0x3db0, 0x007c, 0x007c,
+ 0x00c8, 0x3a2e, 0x1079, 0x3a34, 0x127f, 0x007c, 0x127f, 0x1078,
+ 0x3a54, 0x007c, 0x007c, 0x007c, 0x3a54, 0x3a70, 0x3b45, 0x3a54,
+ 0x3a70, 0x3a54, 0x3a70, 0x3a70, 0x3a54, 0x3a70, 0x3b45, 0x3a70,
+ 0x3a70, 0x3a70, 0x3a70, 0x3a70, 0x3a54, 0x3a70, 0x3b45, 0x3a54,
+ 0x3a54, 0x3a70, 0x3a54, 0x3a54, 0x3a54, 0x3a70, 0x007c, 0x007c,
0x007c, 0x007c, 0x007c, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084,
- 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3a2c,
+ 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x36ec,
0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0e5,
- 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3a2c, 0x127f, 0x007c,
+ 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x36ec, 0x127f, 0x007c,
0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x3a2c, 0x127f, 0x007c, 0x7007, 0x0001,
+ 0x2091, 0x8000, 0x1078, 0x36ec, 0x127f, 0x007c, 0x7007, 0x0001,
0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x3a2c, 0x127f, 0x007c, 0x6834, 0x8007, 0xa084, 0x00ff,
- 0x0040, 0x3da2, 0x8001, 0x00c0, 0x3dd9, 0x7007, 0x0001, 0x0078,
- 0x3e62, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b,
- 0x3e62, 0x007c, 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080,
- 0x0024, 0x2098, 0x20a1, 0x76f8, 0x53a3, 0x6858, 0x7012, 0xa082,
- 0x0401, 0x00c8, 0x3dbe, 0x6884, 0xa08a, 0x0003, 0x00c8, 0x3dbe,
- 0xa080, 0x3e53, 0x2004, 0x70c6, 0x7010, 0xa015, 0x0040, 0x3e46,
- 0x1078, 0x1314, 0x00c0, 0x3e07, 0x7007, 0x000f, 0x007c, 0x2d00,
+ 0x1078, 0x36ec, 0x127f, 0x007c, 0x6834, 0x8007, 0xa084, 0x00ff,
+ 0x0040, 0x3a62, 0x8001, 0x00c0, 0x3a99, 0x7007, 0x0001, 0x0078,
+ 0x3b22, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b,
+ 0x3b22, 0x007c, 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080,
+ 0x0024, 0x2098, 0x20a1, 0x6ff8, 0x53a3, 0x6858, 0x7012, 0xa082,
+ 0x0401, 0x00c8, 0x3a7e, 0x6884, 0xa08a, 0x0003, 0x00c8, 0x3a7e,
+ 0xa080, 0x3b13, 0x2004, 0x70c6, 0x7010, 0xa015, 0x0040, 0x3b06,
+ 0x1078, 0x12c5, 0x00c0, 0x3ac7, 0x7007, 0x000f, 0x007c, 0x2d00,
0x7022, 0x70c4, 0x2060, 0x6000, 0x6836, 0x6004, 0xad00, 0x7096,
- 0x6008, 0xa20a, 0x00c8, 0x3e16, 0xa00e, 0x2200, 0x7112, 0x620c,
- 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x3e1f, 0xa108, 0x719a,
- 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x137f, 0x7090, 0xa08e,
- 0x0100, 0x0040, 0x3e3a, 0xa086, 0x0200, 0x0040, 0x3e32, 0x7007,
- 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x1348, 0x7014, 0x2068,
- 0x0078, 0x3dbe, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000,
- 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x3dfc, 0x7014, 0x2068,
+ 0x6008, 0xa20a, 0x00c8, 0x3ad6, 0xa00e, 0x2200, 0x7112, 0x620c,
+ 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x3adf, 0xa108, 0x719a,
+ 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x1330, 0x7090, 0xa08e,
+ 0x0100, 0x0040, 0x3afa, 0xa086, 0x0200, 0x0040, 0x3af2, 0x7007,
+ 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x12f9, 0x7014, 0x2068,
+ 0x0078, 0x3a7e, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000,
+ 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x3abc, 0x7014, 0x2068,
0x7007, 0x0001, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0040,
- 0x4055, 0x0078, 0x3e62, 0x3e56, 0x3e5a, 0x3e5e, 0x0002, 0x0011,
+ 0x3d15, 0x0078, 0x3b22, 0x3b16, 0x3b1a, 0x3b1e, 0x0002, 0x0011,
0x0007, 0x0004, 0x000a, 0x000f, 0x0005, 0x0006, 0x0012, 0x000f,
- 0x0005, 0x0006, 0x2009, 0x762c, 0x210c, 0x81ff, 0x00c0, 0x3e7f,
- 0x6838, 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x1078, 0x3622,
- 0x00c0, 0x3e73, 0x007c, 0x1078, 0x3abc, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x6aea, 0x1078, 0x3a2c, 0x127f, 0x0078, 0x3e72, 0x2001,
- 0x0028, 0x2009, 0x0000, 0x0078, 0x3e73, 0x7018, 0x6802, 0x2d08,
- 0x2068, 0x6906, 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x3e94,
- 0x7007, 0x0006, 0x0078, 0x3e9a, 0x7014, 0x2068, 0x7007, 0x0001,
+ 0x0005, 0x0006, 0x2009, 0x6f2a, 0x210c, 0x81ff, 0x00c0, 0x3b3f,
+ 0x6838, 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x1078, 0x32e2,
+ 0x00c0, 0x3b33, 0x007c, 0x1078, 0x377c, 0x127e, 0x2091, 0x8000,
+ 0x1078, 0x639b, 0x1078, 0x36ec, 0x127f, 0x0078, 0x3b32, 0x2001,
+ 0x0028, 0x2009, 0x0000, 0x0078, 0x3b33, 0x7018, 0x6802, 0x2d08,
+ 0x2068, 0x6906, 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x3b54,
+ 0x7007, 0x0006, 0x0078, 0x3b5a, 0x7014, 0x2068, 0x7007, 0x0001,
0x7048, 0x107a, 0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c,
0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001,
- 0x0040, 0x3ec6, 0x2009, 0x0000, 0x20a9, 0x007e, 0xa096, 0x0002,
- 0x0040, 0x3ec6, 0xa005, 0x00c0, 0x3edd, 0x6944, 0x810f, 0xa18c,
- 0x00ff, 0x1078, 0x37d7, 0x00c0, 0x3edd, 0x067e, 0x6e44, 0xa6b4,
- 0x000f, 0x1078, 0x386c, 0x067f, 0x0078, 0x3edd, 0x047e, 0x2011,
- 0x760c, 0x2224, 0xc484, 0xc48c, 0x2412, 0x047f, 0x0c7e, 0x1078,
- 0x37d7, 0x00c0, 0x3ed9, 0x2091, 0x8000, 0x607b, 0x0000, 0x2091,
- 0x8001, 0x8108, 0x00f0, 0x3ecf, 0x0c7f, 0x1078, 0x1348, 0x007c,
- 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x7652, 0x2004,
- 0xd0a4, 0x0040, 0x3f20, 0x6944, 0x1078, 0x4121, 0x6100, 0xd184,
- 0x0040, 0x3f05, 0x6858, 0xa084, 0x00ff, 0x00c0, 0x3f23, 0x6000,
- 0xd084, 0x0040, 0x3f20, 0x6004, 0xa005, 0x00c0, 0x3f26, 0x6003,
- 0x0000, 0x600b, 0x0000, 0x0078, 0x3f1d, 0x2011, 0x0001, 0x6860,
- 0xa005, 0x00c0, 0x3f0d, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858,
- 0xa084, 0x00ff, 0x0040, 0x3f20, 0x6006, 0x6858, 0x8007, 0xa084,
- 0x00ff, 0x0040, 0x3f20, 0x600a, 0x6202, 0x127f, 0x0078, 0x40f4,
- 0x127f, 0x0078, 0x40ec, 0x127f, 0x0078, 0x40e4, 0x127f, 0x0078,
- 0x40e8, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x7652,
- 0x2004, 0xd0a4, 0x0040, 0x3f7e, 0x6944, 0x1078, 0x4121, 0x6000,
- 0xa084, 0x0001, 0x0040, 0x3f7e, 0x6204, 0x6308, 0x6c48, 0xa484,
- 0x0003, 0x0040, 0x3f56, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0,
- 0x3f4f, 0x2100, 0xa210, 0x0048, 0x3f7b, 0x0078, 0x3f56, 0x8001,
- 0x00c0, 0x3f7b, 0x2100, 0xa212, 0x0048, 0x3f7b, 0xa484, 0x000c,
- 0x0040, 0x3f70, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004,
- 0x00c0, 0x3f68, 0x2100, 0xa318, 0x0048, 0x3f7b, 0x0078, 0x3f70,
- 0xa082, 0x0004, 0x00c0, 0x3f7b, 0x2100, 0xa31a, 0x0048, 0x3f7b,
- 0x6860, 0xa005, 0x0040, 0x3f76, 0x8000, 0x6016, 0x6206, 0x630a,
- 0x127f, 0x0078, 0x40f4, 0x127f, 0x0078, 0x40f0, 0x127f, 0x0078,
- 0x40ec, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x6944, 0x1078,
- 0x4121, 0x6308, 0x8318, 0x0048, 0x3f91, 0x630a, 0x127f, 0x0078,
- 0x4102, 0x127f, 0x0078, 0x40f0, 0x127e, 0x0c7e, 0x2091, 0x8000,
- 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040, 0x3fa8, 0x027e, 0x2009,
- 0x0000, 0x2011, 0xfcff, 0x1078, 0x4666, 0x027f, 0x0078, 0x3fde,
- 0x6858, 0xa005, 0x0040, 0x3ff2, 0x685c, 0xa065, 0x0040, 0x3fee,
- 0x2001, 0x762c, 0x2004, 0xa005, 0x0040, 0x3fba, 0x1078, 0x6a4c,
- 0x0078, 0x3fc0, 0x6013, 0x0400, 0x2009, 0x0041, 0x1078, 0x5bdb,
- 0x6958, 0xa18c, 0xe600, 0xa186, 0x2000, 0x0040, 0x3fd6, 0xa186,
- 0x0400, 0x0040, 0x3fd6, 0x6944, 0x0c7e, 0x1078, 0x45be, 0x6000,
- 0xa084, 0xfdff, 0x6002, 0x0c7f, 0x0078, 0x3fde, 0x027e, 0x2009,
- 0x0000, 0x2011, 0xfdff, 0x1078, 0x4666, 0x027f, 0x684c, 0xd0c4,
- 0x0040, 0x3fea, 0x6944, 0x1078, 0x45be, 0x6008, 0x8000, 0x0048,
- 0x3fea, 0x600a, 0x0c7f, 0x127f, 0x0078, 0x40f4, 0x0c7f, 0x127f,
- 0x0078, 0x40ec, 0x6954, 0xa186, 0x002a, 0x00c0, 0x3ffe, 0x2001,
- 0x760c, 0x200c, 0xc194, 0x2102, 0x0078, 0x3fde, 0xa186, 0x0020,
- 0x0040, 0x4013, 0xa186, 0x0029, 0x00c0, 0x3fee, 0x6944, 0xa18c,
- 0xff00, 0x810f, 0x1078, 0x37d7, 0x00c0, 0x3fde, 0x6000, 0xc0e4,
- 0x6002, 0x0078, 0x3fde, 0x685c, 0xa065, 0x0040, 0x3fee, 0x6017,
- 0x0014, 0x0078, 0x3fde, 0x6944, 0x1078, 0x4121, 0x6000, 0xa084,
- 0x0001, 0x0040, 0x4034, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048,
- 0x402e, 0x6206, 0x2091, 0x8001, 0x0078, 0x4102, 0x2091, 0x8001,
- 0x6853, 0x0016, 0x0078, 0x40fb, 0x6853, 0x0007, 0x0078, 0x40fb,
- 0x6834, 0x8007, 0xa084, 0x00ff, 0x00c0, 0x4042, 0x1078, 0x3da2,
- 0x0078, 0x4054, 0x2030, 0x8001, 0x00c0, 0x404c, 0x7007, 0x0001,
- 0x1078, 0x4055, 0x0078, 0x4054, 0x7007, 0x0006, 0x7012, 0x2d00,
- 0x7016, 0x701a, 0x704b, 0x4055, 0x007c, 0x0e7e, 0x2009, 0x762c,
- 0x210c, 0x81ff, 0x00c0, 0x40d6, 0x2009, 0x760c, 0x210c, 0xd194,
- 0x00c0, 0x40e0, 0x6848, 0x2070, 0xae82, 0x7d00, 0x0048, 0x40c5,
- 0x2001, 0x7615, 0x2004, 0xae02, 0x00c8, 0x40c5, 0x6944, 0x1078,
- 0x4121, 0x6100, 0xa184, 0x0001, 0x0040, 0x40ab, 0xa184, 0x0100,
- 0x00c0, 0x40c9, 0xa184, 0x0200, 0x00c0, 0x40cd, 0x601c, 0xa005,
- 0x00c0, 0x40d1, 0x711c, 0xa186, 0x0006, 0x00c0, 0x40b0, 0x6853,
+ 0x0040, 0x3b86, 0x2009, 0x0000, 0x20a9, 0x007e, 0xa096, 0x0002,
+ 0x0040, 0x3b86, 0xa005, 0x00c0, 0x3b9d, 0x6944, 0x810f, 0xa18c,
+ 0x00ff, 0x1078, 0x3497, 0x00c0, 0x3b9d, 0x067e, 0x6e44, 0xa6b4,
+ 0x000f, 0x1078, 0x352c, 0x067f, 0x0078, 0x3b9d, 0x047e, 0x2011,
+ 0x6f0c, 0x2224, 0xc484, 0xc48c, 0x2412, 0x047f, 0x0c7e, 0x1078,
+ 0x3497, 0x00c0, 0x3b99, 0x2091, 0x8000, 0x607b, 0x0000, 0x2091,
+ 0x8001, 0x8108, 0x00f0, 0x3b8f, 0x0c7f, 0x1078, 0x12f9, 0x007c,
+ 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x6f52, 0x2004,
+ 0xd0a4, 0x0040, 0x3be0, 0x6944, 0x1078, 0x3de1, 0x6100, 0xd184,
+ 0x0040, 0x3bc5, 0x6858, 0xa084, 0x00ff, 0x00c0, 0x3be3, 0x6000,
+ 0xd084, 0x0040, 0x3be0, 0x6004, 0xa005, 0x00c0, 0x3be6, 0x6003,
+ 0x0000, 0x600b, 0x0000, 0x0078, 0x3bdd, 0x2011, 0x0001, 0x6860,
+ 0xa005, 0x00c0, 0x3bcd, 0x2001, 0x001e, 0x8000, 0x6016, 0x6858,
+ 0xa084, 0x00ff, 0x0040, 0x3be0, 0x6006, 0x6858, 0x8007, 0xa084,
+ 0x00ff, 0x0040, 0x3be0, 0x600a, 0x6202, 0x127f, 0x0078, 0x3db4,
+ 0x127f, 0x0078, 0x3dac, 0x127f, 0x0078, 0x3da4, 0x127f, 0x0078,
+ 0x3da8, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001, 0x6f52,
+ 0x2004, 0xd0a4, 0x0040, 0x3c3e, 0x6944, 0x1078, 0x3de1, 0x6000,
+ 0xa084, 0x0001, 0x0040, 0x3c3e, 0x6204, 0x6308, 0x6c48, 0xa484,
+ 0x0003, 0x0040, 0x3c16, 0x6958, 0xa18c, 0x00ff, 0x8001, 0x00c0,
+ 0x3c0f, 0x2100, 0xa210, 0x0048, 0x3c3b, 0x0078, 0x3c16, 0x8001,
+ 0x00c0, 0x3c3b, 0x2100, 0xa212, 0x0048, 0x3c3b, 0xa484, 0x000c,
+ 0x0040, 0x3c30, 0x6958, 0x810f, 0xa18c, 0x00ff, 0xa082, 0x0004,
+ 0x00c0, 0x3c28, 0x2100, 0xa318, 0x0048, 0x3c3b, 0x0078, 0x3c30,
+ 0xa082, 0x0004, 0x00c0, 0x3c3b, 0x2100, 0xa31a, 0x0048, 0x3c3b,
+ 0x6860, 0xa005, 0x0040, 0x3c36, 0x8000, 0x6016, 0x6206, 0x630a,
+ 0x127f, 0x0078, 0x3db4, 0x127f, 0x0078, 0x3db0, 0x127f, 0x0078,
+ 0x3dac, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x6944, 0x1078,
+ 0x3de1, 0x6308, 0x8318, 0x0048, 0x3c51, 0x630a, 0x127f, 0x0078,
+ 0x3dc2, 0x127f, 0x0078, 0x3db0, 0x127e, 0x0c7e, 0x2091, 0x8000,
+ 0x7007, 0x0001, 0x684c, 0xd0ac, 0x0040, 0x3c68, 0x027e, 0x2009,
+ 0x0000, 0x2011, 0xfcff, 0x1078, 0x4299, 0x027f, 0x0078, 0x3c9e,
+ 0x6858, 0xa005, 0x0040, 0x3cb2, 0x685c, 0xa065, 0x0040, 0x3cae,
+ 0x2001, 0x6f2a, 0x2004, 0xa005, 0x0040, 0x3c7a, 0x1078, 0x62fd,
+ 0x0078, 0x3c80, 0x6013, 0x0400, 0x2009, 0x0041, 0x1078, 0x55c8,
+ 0x6958, 0xa18c, 0xe600, 0xa186, 0x2000, 0x0040, 0x3c96, 0xa186,
+ 0x0400, 0x0040, 0x3c96, 0x6944, 0x0c7e, 0x1078, 0x41f1, 0x6000,
+ 0xa084, 0xfdff, 0x6002, 0x0c7f, 0x0078, 0x3c9e, 0x027e, 0x2009,
+ 0x0000, 0x2011, 0xfdff, 0x1078, 0x4299, 0x027f, 0x684c, 0xd0c4,
+ 0x0040, 0x3caa, 0x6944, 0x1078, 0x41f1, 0x6008, 0x8000, 0x0048,
+ 0x3caa, 0x600a, 0x0c7f, 0x127f, 0x0078, 0x3db4, 0x0c7f, 0x127f,
+ 0x0078, 0x3dac, 0x6954, 0xa186, 0x002a, 0x00c0, 0x3cbe, 0x2001,
+ 0x6f0c, 0x200c, 0xc194, 0x2102, 0x0078, 0x3c9e, 0xa186, 0x0020,
+ 0x0040, 0x3cd3, 0xa186, 0x0029, 0x00c0, 0x3cae, 0x6944, 0xa18c,
+ 0xff00, 0x810f, 0x1078, 0x3497, 0x00c0, 0x3c9e, 0x6000, 0xc0e4,
+ 0x6002, 0x0078, 0x3c9e, 0x685c, 0xa065, 0x0040, 0x3cae, 0x6017,
+ 0x0014, 0x0078, 0x3c9e, 0x6944, 0x1078, 0x3de1, 0x6000, 0xa084,
+ 0x0001, 0x0040, 0x3cf4, 0x2091, 0x8000, 0x6204, 0x8210, 0x0048,
+ 0x3cee, 0x6206, 0x2091, 0x8001, 0x0078, 0x3dc2, 0x2091, 0x8001,
+ 0x6853, 0x0016, 0x0078, 0x3dbb, 0x6853, 0x0007, 0x0078, 0x3dbb,
+ 0x6834, 0x8007, 0xa084, 0x00ff, 0x00c0, 0x3d02, 0x1078, 0x3a62,
+ 0x0078, 0x3d14, 0x2030, 0x8001, 0x00c0, 0x3d0c, 0x7007, 0x0001,
+ 0x1078, 0x3d15, 0x0078, 0x3d14, 0x7007, 0x0006, 0x7012, 0x2d00,
+ 0x7016, 0x701a, 0x704b, 0x3d15, 0x007c, 0x0e7e, 0x2009, 0x6f2a,
+ 0x210c, 0x81ff, 0x00c0, 0x3d96, 0x2009, 0x6f0c, 0x210c, 0xd194,
+ 0x00c0, 0x3da0, 0x6848, 0x2070, 0xae82, 0x7500, 0x0048, 0x3d85,
+ 0x2001, 0x6f15, 0x2004, 0xae02, 0x00c8, 0x3d85, 0x6944, 0x1078,
+ 0x3de1, 0x6100, 0xa184, 0x0001, 0x0040, 0x3d6b, 0xa184, 0x0100,
+ 0x00c0, 0x3d89, 0xa184, 0x0200, 0x00c0, 0x3d8d, 0x601c, 0xa005,
+ 0x00c0, 0x3d91, 0x711c, 0xa186, 0x0006, 0x00c0, 0x3d70, 0x6853,
0x0000, 0x6803, 0x0000, 0x2d08, 0x127e, 0x2091, 0x8000, 0x7010,
- 0xa005, 0x00c0, 0x40a2, 0x7112, 0x7018, 0xa065, 0x0040, 0x40d5,
- 0x6000, 0xd0e4, 0x00c0, 0x40da, 0x2e60, 0x1078, 0x45c7, 0x127f,
- 0x0e7f, 0x007c, 0x2068, 0x6800, 0xa005, 0x00c0, 0x40a2, 0x6902,
- 0x127f, 0x0e7f, 0x007c, 0x0e7f, 0x6853, 0x0006, 0x0078, 0x40fb,
- 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x37d7, 0x00c0, 0x40db,
- 0x6000, 0xd0e4, 0x00c0, 0x40db, 0x711c, 0xa186, 0x0007, 0x00c0,
- 0x40c5, 0x6853, 0x0002, 0x0078, 0x40dd, 0x6853, 0x0008, 0x0078,
- 0x40dd, 0x6853, 0x000e, 0x0078, 0x40dd, 0x6853, 0x0017, 0x0078,
- 0x40dd, 0x6853, 0x0035, 0x0078, 0x40dd, 0x127f, 0x6853, 0x0028,
- 0x0078, 0x40dd, 0x127f, 0x6853, 0x0029, 0x0e7f, 0x0078, 0x40fb,
- 0x6853, 0x002a, 0x0078, 0x40dd, 0x2009, 0x003e, 0x0078, 0x40f6,
- 0x2009, 0x0004, 0x0078, 0x40f6, 0x2009, 0x0006, 0x0078, 0x40f6,
- 0x2009, 0x0016, 0x0078, 0x40f6, 0x2009, 0x0001, 0x6854, 0xa084,
- 0xff00, 0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x3a2c, 0x2091,
- 0x8001, 0x007c, 0x1078, 0x1348, 0x007c, 0x702c, 0x7130, 0x8108,
- 0xa102, 0x0048, 0x4112, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076,
- 0x0078, 0x411e, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x411e,
+ 0xa005, 0x00c0, 0x3d62, 0x7112, 0x7018, 0xa065, 0x0040, 0x3d95,
+ 0x6000, 0xd0e4, 0x00c0, 0x3d9a, 0x2e60, 0x1078, 0x41fa, 0x127f,
+ 0x0e7f, 0x007c, 0x2068, 0x6800, 0xa005, 0x00c0, 0x3d62, 0x6902,
+ 0x127f, 0x0e7f, 0x007c, 0x0e7f, 0x6853, 0x0006, 0x0078, 0x3dbb,
+ 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078, 0x3497, 0x00c0, 0x3d9b,
+ 0x6000, 0xd0e4, 0x00c0, 0x3d9b, 0x711c, 0xa186, 0x0007, 0x00c0,
+ 0x3d85, 0x6853, 0x0002, 0x0078, 0x3d9d, 0x6853, 0x0008, 0x0078,
+ 0x3d9d, 0x6853, 0x000e, 0x0078, 0x3d9d, 0x6853, 0x0017, 0x0078,
+ 0x3d9d, 0x6853, 0x0035, 0x0078, 0x3d9d, 0x127f, 0x6853, 0x0028,
+ 0x0078, 0x3d9d, 0x127f, 0x6853, 0x0029, 0x0e7f, 0x0078, 0x3dbb,
+ 0x6853, 0x002a, 0x0078, 0x3d9d, 0x2009, 0x003e, 0x0078, 0x3db6,
+ 0x2009, 0x0004, 0x0078, 0x3db6, 0x2009, 0x0006, 0x0078, 0x3db6,
+ 0x2009, 0x0016, 0x0078, 0x3db6, 0x2009, 0x0001, 0x6854, 0xa084,
+ 0xff00, 0xa105, 0x6856, 0x2091, 0x8000, 0x1078, 0x36ec, 0x2091,
+ 0x8001, 0x007c, 0x1078, 0x12f9, 0x007c, 0x702c, 0x7130, 0x8108,
+ 0xa102, 0x0048, 0x3dd2, 0xa00e, 0x7034, 0x7072, 0x7038, 0x7076,
+ 0x0078, 0x3dde, 0x7070, 0xa080, 0x0040, 0x7072, 0x00c8, 0x3dde,
0x7074, 0xa081, 0x0000, 0x7076, 0xa085, 0x0001, 0x7932, 0x7132,
- 0x007c, 0x0d7e, 0x1078, 0x45be, 0x0d7f, 0x007c, 0x0d7e, 0x2011,
+ 0x007c, 0x0d7e, 0x1078, 0x41f1, 0x0d7f, 0x007c, 0x0d7e, 0x2011,
0x0004, 0x2204, 0xa085, 0x8002, 0x2012, 0x0d7f, 0x007c, 0x20e1,
0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00, 0xa084, 0x7000, 0x0040,
- 0x413d, 0xa086, 0x1000, 0x00c0, 0x4159, 0x20e1, 0x0004, 0x3d60,
- 0xd1bc, 0x00c0, 0x4144, 0x3e60, 0xac84, 0x0007, 0x00c0, 0x4159,
- 0xac82, 0x7d00, 0x0048, 0x4159, 0x6854, 0xac02, 0x00c8, 0x4159,
- 0x2009, 0x0047, 0x1078, 0x5bdb, 0x7a1c, 0xd284, 0x00c0, 0x412f,
- 0x007c, 0xa016, 0x1078, 0x1572, 0x0078, 0x4154, 0x157e, 0x137e,
+ 0x3dfd, 0xa086, 0x1000, 0x00c0, 0x3e19, 0x20e1, 0x0004, 0x3d60,
+ 0xd1bc, 0x00c0, 0x3e04, 0x3e60, 0xac84, 0x0007, 0x00c0, 0x3e19,
+ 0xac82, 0x7500, 0x0048, 0x3e19, 0x6854, 0xac02, 0x00c8, 0x3e19,
+ 0x2009, 0x0047, 0x1078, 0x55c8, 0x7a1c, 0xd284, 0x00c0, 0x3def,
+ 0x007c, 0xa016, 0x1078, 0x1523, 0x0078, 0x3e14, 0x157e, 0x137e,
0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28, 0xa584, 0x0070, 0x00c0,
- 0x4187, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x4187, 0x1078,
- 0x4194, 0x0040, 0x4187, 0x20e1, 0x3000, 0x7828, 0x7828, 0x1078,
- 0x41b2, 0x147f, 0x137f, 0x157f, 0x2009, 0x783e, 0x2104, 0xa005,
- 0x00c0, 0x4183, 0x007c, 0x1078, 0x4c2c, 0x0078, 0x4182, 0x1078,
- 0x751f, 0x1078, 0x4194, 0x20e1, 0x3000, 0x7828, 0x7828, 0x147f,
- 0x137f, 0x157f, 0x0078, 0x4182, 0xa484, 0x01ff, 0x687a, 0xa005,
- 0x0040, 0x41a6, 0xa080, 0x001f, 0xa084, 0x03f8, 0x80ac, 0x20e1,
+ 0x3e47, 0xa484, 0x7000, 0xa086, 0x1000, 0x00c0, 0x3e47, 0x1078,
+ 0x3e54, 0x0040, 0x3e47, 0x20e1, 0x3000, 0x7828, 0x7828, 0x1078,
+ 0x3e72, 0x147f, 0x137f, 0x157f, 0x2009, 0x70be, 0x2104, 0xa005,
+ 0x00c0, 0x3e43, 0x007c, 0x1078, 0x484d, 0x0078, 0x3e42, 0x1078,
+ 0x6dc3, 0x1078, 0x3e54, 0x20e1, 0x3000, 0x7828, 0x7828, 0x147f,
+ 0x137f, 0x157f, 0x0078, 0x3e42, 0xa484, 0x01ff, 0x6872, 0xa005,
+ 0x0040, 0x3e66, 0xa080, 0x001f, 0xa084, 0x03f8, 0x80ac, 0x20e1,
0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0x007c, 0x20a9, 0x000c,
0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5, 0xa085, 0x0001,
- 0x0078, 0x41a5, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, 0x8007,
- 0xa196, 0x0000, 0x00c0, 0x41bf, 0x0078, 0x4333, 0x007c, 0xa196,
- 0x2000, 0x00c0, 0x41d0, 0x6900, 0xa18e, 0x0001, 0x00c0, 0x41cc,
- 0x1078, 0x2e6a, 0x0078, 0x41be, 0x1078, 0x41d8, 0x0078, 0x41be,
- 0xa196, 0x8000, 0x00c0, 0x41be, 0x1078, 0x43b9, 0x0078, 0x41be,
+ 0x0078, 0x3e65, 0x7000, 0xa084, 0xff00, 0xa08c, 0xf000, 0x8007,
+ 0xa196, 0x0000, 0x00c0, 0x3e7f, 0x0078, 0x3f6b, 0x007c, 0xa196,
+ 0x2000, 0x00c0, 0x3e90, 0x6900, 0xa18e, 0x0001, 0x00c0, 0x3e8c,
+ 0x1078, 0x2b2a, 0x0078, 0x3e7e, 0x1078, 0x3e98, 0x0078, 0x3e7e,
+ 0xa196, 0x8000, 0x00c0, 0x3e7e, 0x1078, 0x3ff1, 0x0078, 0x3e7e,
0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa196, 0x0001, 0x0040,
- 0x41e5, 0xa196, 0x0023, 0x00c0, 0x42da, 0xa08e, 0x0023, 0x00c0,
- 0x4216, 0x1078, 0x4430, 0x0040, 0x42da, 0x7124, 0x610a, 0x7030,
- 0xa08e, 0x0200, 0x00c0, 0x41fe, 0x7034, 0xa005, 0x00c0, 0x42da,
- 0x2009, 0x0015, 0x1078, 0x5bdb, 0x0078, 0x42da, 0xa08e, 0x0210,
- 0x00c0, 0x4208, 0x2009, 0x0015, 0x1078, 0x5bdb, 0x0078, 0x42da,
- 0xa08e, 0x0100, 0x00c0, 0x42da, 0x7034, 0xa005, 0x00c0, 0x42da,
- 0x2009, 0x0016, 0x1078, 0x5bdb, 0x0078, 0x42da, 0xa08e, 0x0022,
- 0x00c0, 0x42da, 0x7030, 0xa08e, 0x0300, 0x00c0, 0x4227, 0x7034,
- 0xa005, 0x00c0, 0x42da, 0x2009, 0x0017, 0x0078, 0x42a6, 0xa08e,
- 0x0500, 0x00c0, 0x4233, 0x7034, 0xa005, 0x00c0, 0x42da, 0x2009,
- 0x0018, 0x0078, 0x42a6, 0xa08e, 0x2010, 0x00c0, 0x423b, 0x2009,
- 0x0019, 0x0078, 0x42a6, 0xa08e, 0x2110, 0x00c0, 0x4243, 0x2009,
- 0x001a, 0x0078, 0x42a6, 0xa08e, 0x5200, 0x00c0, 0x424f, 0x7034,
- 0xa005, 0x00c0, 0x42da, 0x2009, 0x001b, 0x0078, 0x42a6, 0xa08e,
- 0x5000, 0x00c0, 0x425b, 0x7034, 0xa005, 0x00c0, 0x42da, 0x2009,
- 0x001c, 0x0078, 0x42a6, 0xa08e, 0x1200, 0x00c0, 0x4267, 0x7034,
- 0xa005, 0x00c0, 0x42da, 0x2009, 0x0024, 0x0078, 0x42a6, 0xa08c,
- 0xff00, 0xa18e, 0x2400, 0x00c0, 0x4271, 0x2009, 0x002d, 0x0078,
- 0x42a6, 0xa08c, 0xff00, 0xa18e, 0x5300, 0x00c0, 0x427b, 0x2009,
- 0x002a, 0x0078, 0x42a6, 0xa08e, 0x0f00, 0x00c0, 0x4283, 0x2009,
- 0x0020, 0x0078, 0x42a6, 0xa08e, 0x5300, 0x00c0, 0x4289, 0x0078,
- 0x42a4, 0xa08e, 0x6104, 0x00c0, 0x42a4, 0x2011, 0x7b8d, 0x8208,
- 0x2204, 0xa082, 0x0004, 0x20a8, 0x95ac, 0x95ac, 0x2011, 0x8015,
- 0x211c, 0x8108, 0x2124, 0x1078, 0x2d02, 0x8108, 0x00f0, 0x4296,
- 0x2009, 0x0023, 0x0078, 0x42a6, 0x2009, 0x001d, 0x017e, 0x2011,
- 0x7b83, 0x2204, 0x8211, 0x220c, 0x1078, 0x2059, 0x00c0, 0x42dc,
- 0x1078, 0x37a0, 0x00c0, 0x42dc, 0x6612, 0x6516, 0x86ff, 0x0040,
- 0x42cc, 0x017f, 0x017e, 0xa186, 0x0017, 0x00c0, 0x42cc, 0x6864,
- 0xa606, 0x00c0, 0x42cc, 0x6868, 0xa506, 0xa084, 0xff00, 0x00c0,
- 0x42cc, 0x6000, 0xc0f5, 0x6002, 0x0c7e, 0x1078, 0x5b4e, 0x0040,
- 0x42df, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0x017f,
- 0x1078, 0x5bdb, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x42da, 0x0c7f,
- 0x0078, 0x42dc, 0x0e7e, 0x0d7e, 0x2028, 0x2130, 0xa696, 0x00ff,
- 0x00c0, 0x4302, 0xa596, 0xfffd, 0x00c0, 0x42f2, 0x2009, 0x007f,
- 0x0078, 0x432f, 0xa596, 0xfffe, 0x00c0, 0x42fa, 0x2009, 0x007e,
- 0x0078, 0x432f, 0xa596, 0xfffc, 0x00c0, 0x4302, 0x2009, 0x0080,
- 0x0078, 0x432f, 0x2011, 0x0000, 0x2021, 0x007e, 0x20a9, 0x0082,
- 0x2071, 0x779e, 0x2e1c, 0x83ff, 0x00c0, 0x4314, 0x82ff, 0x00c0,
- 0x4323, 0x2410, 0x0078, 0x4323, 0x2368, 0x6b10, 0x007e, 0x2100,
- 0xa31e, 0x007f, 0x00c0, 0x4323, 0x6b14, 0xa31e, 0x00c0, 0x4323,
- 0x2408, 0x0078, 0x432f, 0x8420, 0x8e70, 0x00f0, 0x430a, 0x82ff,
- 0x00c0, 0x432e, 0xa085, 0x0001, 0x0078, 0x4330, 0x2208, 0xa006,
- 0x0d7f, 0x0e7f, 0x007c, 0xa084, 0x0007, 0x0079, 0x4338, 0x007c,
- 0x4340, 0x4340, 0x4340, 0x4340, 0x4340, 0x4341, 0x435a, 0x43a2,
- 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4359, 0x7120, 0x2160, 0xac8c,
- 0x0007, 0x00c0, 0x4359, 0xac8a, 0x7d00, 0x0048, 0x4359, 0x6854,
- 0xac02, 0x00c8, 0x4359, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078,
- 0x5bdb, 0x007c, 0x0c7e, 0x7110, 0xd1bc, 0x00c0, 0x43a0, 0x2011,
- 0x7b83, 0x2204, 0x8211, 0x220c, 0x1078, 0x2059, 0x00c0, 0x43a0,
- 0x1078, 0x37d7, 0x00c0, 0x43a0, 0x6204, 0xa294, 0xff00, 0x8217,
- 0xa286, 0x0006, 0x00c0, 0x4385, 0x0c7e, 0x1078, 0x5b4e, 0x017f,
- 0x0040, 0x43a0, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x2009,
- 0x0044, 0x1078, 0x5bdb, 0x0078, 0x43a0, 0x0c7e, 0x1078, 0x5b4e,
- 0x017f, 0x0040, 0x43a0, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a,
- 0xa286, 0x0004, 0x00c0, 0x4398, 0x6007, 0x0005, 0x0078, 0x439a,
- 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x4824, 0x1078, 0x4c2c,
- 0x0c7f, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x43b8, 0x7020, 0x2060,
- 0xac84, 0x0007, 0x00c0, 0x43b8, 0xac82, 0x7d00, 0x0048, 0x43b8,
- 0x6854, 0xac02, 0x00c8, 0x43b8, 0x2009, 0x0045, 0x1078, 0x5bdb,
+ 0x3ea5, 0xa196, 0x0023, 0x00c0, 0x3f63, 0xa08e, 0x0023, 0x00c0,
+ 0x3ed6, 0x1078, 0x4063, 0x0040, 0x3f63, 0x7124, 0x610a, 0x7030,
+ 0xa08e, 0x0200, 0x00c0, 0x3ebe, 0x7034, 0xa005, 0x00c0, 0x3f63,
+ 0x2009, 0x0015, 0x1078, 0x55c8, 0x0078, 0x3f63, 0xa08e, 0x0210,
+ 0x00c0, 0x3ec8, 0x2009, 0x0015, 0x1078, 0x55c8, 0x0078, 0x3f63,
+ 0xa08e, 0x0100, 0x00c0, 0x3f63, 0x7034, 0xa005, 0x00c0, 0x3f63,
+ 0x2009, 0x0016, 0x1078, 0x55c8, 0x0078, 0x3f63, 0xa08e, 0x0022,
+ 0x00c0, 0x3f63, 0x7030, 0xa08e, 0x0300, 0x00c0, 0x3ee7, 0x7034,
+ 0xa005, 0x00c0, 0x3f63, 0x2009, 0x0017, 0x0078, 0x3f4b, 0xa08e,
+ 0x0500, 0x00c0, 0x3ef3, 0x7034, 0xa005, 0x00c0, 0x3f63, 0x2009,
+ 0x0018, 0x0078, 0x3f4b, 0xa08e, 0x2010, 0x00c0, 0x3efb, 0x2009,
+ 0x0019, 0x0078, 0x3f4b, 0xa08e, 0x2110, 0x00c0, 0x3f03, 0x2009,
+ 0x001a, 0x0078, 0x3f4b, 0xa08e, 0x5200, 0x00c0, 0x3f0f, 0x7034,
+ 0xa005, 0x00c0, 0x3f63, 0x2009, 0x001b, 0x0078, 0x3f4b, 0xa08e,
+ 0x5000, 0x00c0, 0x3f1b, 0x7034, 0xa005, 0x00c0, 0x3f63, 0x2009,
+ 0x001c, 0x0078, 0x3f4b, 0xa08e, 0x1200, 0x00c0, 0x3f27, 0x7034,
+ 0xa005, 0x00c0, 0x3f63, 0x2009, 0x0024, 0x0078, 0x3f4b, 0xa08c,
+ 0xff00, 0xa18e, 0x2400, 0x00c0, 0x3f31, 0x2009, 0x002d, 0x0078,
+ 0x3f4b, 0xa08c, 0xff00, 0xa18e, 0x5300, 0x00c0, 0x3f3b, 0x2009,
+ 0x002a, 0x0078, 0x3f4b, 0xa08e, 0x0f00, 0x00c0, 0x3f43, 0x2009,
+ 0x0020, 0x0078, 0x3f4b, 0xa08e, 0x5300, 0x00c0, 0x3f49, 0x0078,
+ 0x3f49, 0x2009, 0x001d, 0x017e, 0x2011, 0x7383, 0x2204, 0x1078,
+ 0x1fb0, 0x1078, 0x3460, 0x00c0, 0x3f65, 0x0c7e, 0x1078, 0x553b,
+ 0x0040, 0x3f68, 0x017f, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a,
+ 0x017f, 0x1078, 0x55c8, 0x0c7f, 0x007c, 0x017f, 0x0078, 0x3f63,
+ 0x0c7f, 0x0078, 0x3f65, 0xa084, 0x0007, 0x0079, 0x3f70, 0x007c,
+ 0x3f78, 0x3f78, 0x3f78, 0x3f78, 0x3f78, 0x3f79, 0x3f92, 0x3fda,
+ 0x007c, 0x7110, 0xd1bc, 0x0040, 0x3f91, 0x7120, 0x2160, 0xac8c,
+ 0x0007, 0x00c0, 0x3f91, 0xac8a, 0x7500, 0x0048, 0x3f91, 0x6854,
+ 0xac02, 0x00c8, 0x3f91, 0x7124, 0x610a, 0x2009, 0x0046, 0x1078,
+ 0x55c8, 0x007c, 0x0c7e, 0x7110, 0xd1bc, 0x00c0, 0x3fd8, 0x2011,
+ 0x7383, 0x2204, 0xa080, 0x21d3, 0x200c, 0xa18c, 0xff00, 0x810f,
+ 0x1078, 0x3497, 0x00c0, 0x3fd8, 0x6204, 0xa294, 0xff00, 0x8217,
+ 0xa286, 0x0006, 0x00c0, 0x3fbd, 0x0c7e, 0x1078, 0x553b, 0x017f,
+ 0x0040, 0x3fd8, 0x611a, 0x601f, 0x0006, 0x7120, 0x610a, 0x2009,
+ 0x0044, 0x1078, 0x55c8, 0x0078, 0x3fd8, 0x0c7e, 0x1078, 0x553b,
+ 0x017f, 0x0040, 0x3fd8, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a,
+ 0xa286, 0x0004, 0x00c0, 0x3fd0, 0x6007, 0x0005, 0x0078, 0x3fd2,
+ 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x4445, 0x1078, 0x484d,
+ 0x0c7f, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x3ff0, 0x7020, 0x2060,
+ 0xac84, 0x0007, 0x00c0, 0x3ff0, 0xac82, 0x7500, 0x0048, 0x3ff0,
+ 0x6854, 0xac02, 0x00c8, 0x3ff0, 0x2009, 0x0045, 0x1078, 0x55c8,
0x007c, 0x7110, 0xa18c, 0xff00, 0x810f, 0xa18e, 0x0000, 0x00c0,
- 0x43c9, 0xa084, 0x000f, 0xa08a, 0x0006, 0x10c8, 0x12d5, 0x1079,
- 0x43ca, 0x007c, 0x43d0, 0x43d1, 0x43d0, 0x43d0, 0x4412, 0x4421,
- 0x007c, 0x7110, 0xd1bc, 0x00c0, 0x4411, 0x700c, 0x7108, 0x1078,
- 0x2059, 0x00c0, 0x4411, 0x1078, 0x37a0, 0x00c0, 0x4411, 0x6612,
- 0x6516, 0x6204, 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0,
- 0x43fa, 0x0c7e, 0x1078, 0x5b4e, 0x017f, 0x0040, 0x4411, 0x611a,
- 0x601f, 0x0005, 0x7120, 0x610a, 0x2009, 0x0088, 0x1078, 0x5bdb,
- 0x0078, 0x4411, 0x0c7e, 0x1078, 0x5b4e, 0x017f, 0x0040, 0x4411,
- 0x611a, 0x601f, 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0,
- 0x440d, 0x2009, 0x0005, 0x0078, 0x440f, 0x2009, 0x0001, 0x1078,
- 0x5bdb, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4420, 0x1078, 0x4430,
- 0x0040, 0x4420, 0x7124, 0x610a, 0x2009, 0x0089, 0x1078, 0x5bdb,
- 0x007c, 0x7110, 0xd1bc, 0x0040, 0x442f, 0x1078, 0x4430, 0x0040,
- 0x442f, 0x7124, 0x610a, 0x2009, 0x008a, 0x1078, 0x5bdb, 0x007c,
- 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0, 0x4443, 0xac82, 0x7d00,
- 0x0048, 0x4443, 0x2001, 0x7615, 0x2004, 0xac02, 0x00c8, 0x4443,
- 0xa085, 0x0001, 0x007c, 0xa006, 0x0078, 0x4442, 0x2071, 0x7849,
- 0x7003, 0x0003, 0x700f, 0x0361, 0xa006, 0x701a, 0x7012, 0x7017,
- 0x7d00, 0x7007, 0x0000, 0x7026, 0x702b, 0x5541, 0x7032, 0x7037,
- 0x5582, 0x703b, 0x0002, 0x703f, 0x0000, 0x007c, 0x2071, 0x7849,
- 0x00e0, 0x450d, 0x2091, 0x6000, 0x700c, 0x8001, 0x700e, 0x00c0,
- 0x44d6, 0x700f, 0x0361, 0x7007, 0x0001, 0x127e, 0x2091, 0x8000,
- 0x7138, 0x8109, 0x713a, 0x00c0, 0x44d4, 0x703b, 0x0002, 0x2009,
- 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8, 0x44d4, 0x703c, 0xa086,
- 0x0001, 0x00c0, 0x44b1, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084,
- 0x4000, 0x0040, 0x448f, 0x6803, 0x1000, 0x0078, 0x4496, 0x6804,
- 0xa084, 0x1000, 0x0040, 0x4496, 0x6803, 0x0100, 0x6803, 0x0000,
- 0x703f, 0x0000, 0x2069, 0x7836, 0x6804, 0xa082, 0x0006, 0x00c0,
- 0x44a3, 0x6807, 0x0000, 0x6830, 0xa082, 0x0003, 0x00c0, 0x44aa,
- 0x6833, 0x0000, 0x1078, 0x4c2c, 0x1078, 0x4cec, 0x0d7f, 0x0078,
- 0x44d4, 0x0d7e, 0x2069, 0x7600, 0x6944, 0x6860, 0xa102, 0x00c8,
- 0x44d3, 0x2069, 0x7836, 0x6804, 0xa086, 0x0000, 0x00c0, 0x44d3,
- 0x6830, 0xa086, 0x0000, 0x00c0, 0x44d3, 0x703f, 0x0001, 0x6807,
- 0x0006, 0x6833, 0x0003, 0x2069, 0x0100, 0x6830, 0x689e, 0x2069,
- 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078, 0x44d9, 0x127e, 0x2091,
- 0x8000, 0x7024, 0xa00d, 0x0040, 0x44ea, 0x7020, 0x8001, 0x7022,
- 0x00c0, 0x44ea, 0x7023, 0x0009, 0x8109, 0x7126, 0x00c0, 0x44ea,
- 0x7028, 0x107a, 0x7030, 0xa00d, 0x0040, 0x44fb, 0x702c, 0x8001,
- 0x702e, 0x00c0, 0x44fb, 0x702f, 0x0009, 0x8109, 0x7132, 0x00c0,
- 0x44fb, 0x7034, 0x107a, 0x7018, 0xa00d, 0x0040, 0x450c, 0x7008,
- 0x8001, 0x700a, 0x00c0, 0x450c, 0x700b, 0x0009, 0x8109, 0x711a,
- 0x00c0, 0x450c, 0x701c, 0x107a, 0x127f, 0x7004, 0x0079, 0x4510,
- 0x4537, 0x4538, 0x4554, 0x0e7e, 0x2071, 0x7849, 0x7018, 0xa005,
- 0x00c0, 0x451e, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f, 0x007c,
- 0x0e7e, 0x007e, 0x2071, 0x7849, 0x701c, 0xa206, 0x00c0, 0x452a,
- 0x701a, 0x701e, 0x007f, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x7849,
- 0x6088, 0xa102, 0x0048, 0x4535, 0x618a, 0x0e7f, 0x007c, 0x007c,
- 0x7110, 0x1078, 0x37d7, 0x00c0, 0x454a, 0x6088, 0x8001, 0x0048,
- 0x454a, 0x608a, 0x00c0, 0x454a, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x4c2c, 0x127f, 0x8108, 0xa182, 0x00ff, 0x0048, 0x4552, 0xa00e,
- 0x7007, 0x0002, 0x7112, 0x007c, 0x7014, 0x2060, 0x127e, 0x2091,
- 0x8000, 0x6014, 0xa005, 0x0040, 0x4583, 0x8001, 0x6016, 0x00c0,
- 0x4583, 0x611c, 0xa186, 0x0003, 0x0040, 0x456a, 0xa186, 0x0006,
- 0x00c0, 0x4581, 0x6010, 0x2068, 0x6854, 0xa08a, 0x199a, 0x0048,
- 0x4581, 0xa082, 0x1999, 0x6856, 0xa08a, 0x199a, 0x0048, 0x457a,
- 0x2001, 0x1999, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116, 0x0078,
- 0x4583, 0x1078, 0x676e, 0x127f, 0xac88, 0x0008, 0x7116, 0x2001,
- 0x7616, 0x2004, 0xa102, 0x0048, 0x4591, 0x7017, 0x7d00, 0x7007,
- 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7849, 0x7027, 0x07d0, 0x7023,
- 0x0009, 0x703b, 0x0002, 0x0e7f, 0x007c, 0x2001, 0x7852, 0x2003,
- 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7849, 0x7033, 0x07d0, 0x702f,
- 0x0009, 0x0e7f, 0x007c, 0x2011, 0x7855, 0x2013, 0x0000, 0x007c,
- 0x0e7e, 0x2071, 0x7849, 0x711a, 0x721e, 0x700b, 0x0009, 0x0e7f,
- 0x007c, 0x0c7e, 0x2061, 0x78da, 0x0c7f, 0x007c, 0xa184, 0x000f,
- 0x8003, 0x8003, 0x8003, 0xa080, 0x78da, 0x2060, 0x007c, 0x6854,
- 0xa08a, 0x199a, 0x0048, 0x45ce, 0x2001, 0x1999, 0xa005, 0x00c0,
- 0x45de, 0x6944, 0x0c7e, 0x1078, 0x45be, 0x6014, 0x0c7f, 0xa005,
- 0x00c0, 0x45e3, 0x2001, 0x001e, 0x0078, 0x45e3, 0xa08e, 0xffff,
- 0x00c0, 0x45e3, 0xa006, 0x8003, 0x800b, 0x810b, 0xa108, 0x6116,
- 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0, 0x0040, 0x461e, 0xd0b4,
- 0x00c0, 0x45fa, 0xd0bc, 0x00c0, 0x460c, 0x2009, 0x0006, 0x1078,
- 0x4641, 0x007c, 0xd0fc, 0x0040, 0x4607, 0xa084, 0x0003, 0xa08e,
- 0x0003, 0x0040, 0x463a, 0xa08e, 0x0000, 0x00c0, 0x463a, 0x2009,
- 0x0043, 0x1078, 0x5bdb, 0x007c, 0xd0fc, 0x0040, 0x4619, 0xa084,
- 0x0003, 0xa08e, 0x0003, 0x0040, 0x463a, 0xa08e, 0x0000, 0x00c0,
- 0x463a, 0x2009, 0x0042, 0x1078, 0x5bdb, 0x007c, 0xd0fc, 0x0040,
- 0x4630, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x463a, 0xa08e,
- 0x0002, 0x0040, 0x4634, 0x2009, 0x0041, 0x1078, 0x5bdb, 0x007c,
- 0x1078, 0x463f, 0x0078, 0x462f, 0x2009, 0x0043, 0x1078, 0x5bdb,
- 0x0078, 0x462f, 0x2009, 0x0004, 0x1078, 0x4641, 0x007c, 0x2009,
- 0x0001, 0x6010, 0xa0ec, 0xf000, 0x0040, 0x4665, 0x2068, 0x6952,
- 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0, 0x465f, 0x694c, 0xa18c,
- 0x8100, 0xa18e, 0x8100, 0x00c0, 0x465f, 0x0c7e, 0x6944, 0x1078,
- 0x45be, 0x6204, 0x8210, 0x0048, 0x465e, 0x6206, 0x0c7f, 0x1078,
- 0x3a2c, 0x6010, 0xa06d, 0x10c0, 0x45c7, 0x007c, 0x157e, 0x0c7e,
- 0x20a9, 0x0010, 0x2061, 0x78da, 0x6000, 0x81ff, 0x0040, 0x4673,
- 0xa205, 0x0078, 0x4674, 0xa204, 0x6002, 0xace0, 0x0008, 0x00f0,
- 0x466c, 0x0c7f, 0x157f, 0x007c, 0x6808, 0xa005, 0x0040, 0x4684,
- 0x8001, 0x680a, 0xa085, 0x0001, 0x007c, 0x127e, 0x2091, 0x2200,
- 0x2079, 0x7836, 0x127f, 0x0d7e, 0x2069, 0x7836, 0x6803, 0x0005,
- 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001, 0x206a, 0x0d7f, 0x007c,
- 0x0c7e, 0x6027, 0x0001, 0x7804, 0xa084, 0x0007, 0x0079, 0x46a0,
- 0x46aa, 0x46cf, 0x472a, 0x46b0, 0x46cf, 0x46a8, 0x46a8, 0x46a8,
- 0x1078, 0x12d5, 0x1078, 0x459d, 0x1078, 0x4c2c, 0x0c7f, 0x007c,
- 0x62c0, 0x82ff, 0x00c0, 0x46b6, 0x0c7f, 0x007c, 0x2011, 0x34fc,
- 0x1078, 0x4520, 0x7828, 0xa092, 0x0002, 0x00c8, 0x46c5, 0x8000,
- 0x782a, 0x1078, 0x352c, 0x0078, 0x46b4, 0x1078, 0x34fc, 0x7807,
- 0x0003, 0x7827, 0x0000, 0x782b, 0x0000, 0x0078, 0x46b4, 0x1078,
- 0x459d, 0x3c00, 0x007e, 0x2011, 0x0209, 0x20e1, 0x4000, 0x2214,
- 0x007f, 0x20e0, 0x82ff, 0x0040, 0x46ed, 0x62c0, 0x82ff, 0x00c0,
- 0x46ed, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x12d5, 0x2009,
- 0x0013, 0x1078, 0x5bdb, 0x0c7f, 0x007c, 0x3900, 0xa082, 0x797a,
- 0x00c8, 0x46f4, 0x1078, 0x5ade, 0x0c7e, 0x7824, 0xa065, 0x1040,
- 0x12d5, 0x7804, 0xa086, 0x0004, 0x0040, 0x476f, 0x7828, 0xa092,
- 0x2710, 0x00c8, 0x470a, 0x8000, 0x782a, 0x0c7f, 0x1078, 0x5526,
- 0x0078, 0x46eb, 0x6104, 0xa186, 0x0003, 0x00c0, 0x4721, 0x0e7e,
- 0x2071, 0x7600, 0x70c8, 0x0e7f, 0xd08c, 0x0040, 0x4721, 0x0c7e,
- 0x0e7e, 0x2061, 0x0100, 0x2071, 0x7600, 0x1078, 0x3535, 0x0e7f,
- 0x0c7f, 0x1078, 0x7572, 0x2009, 0x0014, 0x1078, 0x5bdb, 0x0c7f,
- 0x0078, 0x46eb, 0x2001, 0x7852, 0x2003, 0x0000, 0x62c0, 0x82ff,
- 0x00c0, 0x473e, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x12d5,
- 0x2009, 0x0013, 0x1078, 0x5c29, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e,
- 0x3900, 0xa082, 0x797a, 0x00c8, 0x4747, 0x1078, 0x5ade, 0x7824,
- 0xa005, 0x1040, 0x12d5, 0x781c, 0xa06d, 0x1040, 0x12d5, 0x6800,
- 0xc0dc, 0x6802, 0x7924, 0x2160, 0x1078, 0x5bb4, 0x693c, 0x81ff,
- 0x1040, 0x12d5, 0x8109, 0x693e, 0x6854, 0xa015, 0x0040, 0x4763,
- 0x7a1e, 0x0078, 0x4765, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827,
- 0x0000, 0x0d7f, 0x0c7f, 0x1078, 0x4c2c, 0x0078, 0x473c, 0x6104,
- 0xa186, 0x0002, 0x0040, 0x477a, 0xa186, 0x0004, 0x0040, 0x477a,
- 0x0078, 0x46fe, 0x7808, 0xac06, 0x0040, 0x46fe, 0x1078, 0x4b33,
- 0x1078, 0x4824, 0x0c7f, 0x1078, 0x4c2c, 0x0078, 0x46eb, 0x0c7e,
- 0x6027, 0x0002, 0x2011, 0x7855, 0x2013, 0x0000, 0x62c8, 0x82ff,
- 0x00c0, 0x47a1, 0x62c4, 0x82ff, 0x00c0, 0x47a1, 0x793c, 0xa1e5,
- 0x0000, 0x0040, 0x479f, 0x2009, 0x0049, 0x1078, 0x5bdb, 0x0c7f,
- 0x007c, 0x3908, 0xa192, 0x797a, 0x00c8, 0x47a8, 0x1078, 0x5ade,
- 0x6017, 0x0010, 0x793c, 0x81ff, 0x0040, 0x479f, 0x7944, 0xa192,
- 0x7530, 0x00c8, 0x47c7, 0x8108, 0x7946, 0x1078, 0x45a2, 0x793c,
- 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x47c3, 0x6017,
- 0x0012, 0x0078, 0x479f, 0x6017, 0x0016, 0x0078, 0x479f, 0x037e,
- 0x2019, 0x0001, 0x1078, 0x571a, 0x037f, 0x1078, 0x7572, 0x793c,
- 0x2160, 0x2009, 0x004a, 0x1078, 0x5bdb, 0x0078, 0x479f, 0x007e,
- 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08,
- 0x2061, 0x7836, 0x6020, 0x8000, 0x6022, 0x6010, 0xa005, 0x0040,
- 0x47f2, 0xa080, 0x0003, 0x2102, 0x6112, 0x127f, 0x0c7f, 0x017f,
- 0x007f, 0x007c, 0x6116, 0x6112, 0x0078, 0x47ed, 0x0d7e, 0x2069,
- 0x7836, 0x6000, 0xd0d4, 0x0040, 0x480b, 0x6820, 0x8000, 0x6822,
- 0xa086, 0x0001, 0x00c0, 0x4806, 0x2c00, 0x681e, 0x6804, 0xa084,
- 0x0007, 0x0079, 0x4c34, 0xc0d5, 0x6002, 0x6818, 0xa005, 0x0040,
- 0x481d, 0x6056, 0x605b, 0x0000, 0x007e, 0x2c00, 0x681a, 0x0d7f,
- 0x685a, 0x2069, 0x7836, 0x0078, 0x47fd, 0x6056, 0x605a, 0x2c00,
- 0x681a, 0x681e, 0x0078, 0x47fd, 0x007e, 0x017e, 0x0c7e, 0x127e,
- 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x7836, 0x6020,
- 0x8000, 0x6022, 0x6008, 0xa005, 0x0040, 0x483f, 0xa080, 0x0003,
- 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x610e,
- 0x610a, 0x0078, 0x483a, 0x0c7e, 0x600f, 0x0000, 0x2c08, 0x2061,
- 0x7836, 0x6034, 0xa005, 0x0040, 0x4853, 0xa080, 0x0003, 0x2102,
- 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136, 0x0078, 0x4851, 0x0f7e,
- 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2071,
- 0x7836, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040,
- 0x48b9, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x48b4,
- 0x703c, 0xac06, 0x00c0, 0x4879, 0x6003, 0x000a, 0x630a, 0x0078,
- 0x48b4, 0x7038, 0xac36, 0x00c0, 0x487f, 0x660c, 0x763a, 0x7034,
- 0xac36, 0x00c0, 0x488d, 0x2c00, 0xaf36, 0x0040, 0x488b, 0x2f00,
- 0x7036, 0x0078, 0x488d, 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00,
- 0xaf06, 0x0040, 0x4896, 0x7e0e, 0x0078, 0x4897, 0x2678, 0x600f,
- 0x0000, 0x1078, 0x68e3, 0x0040, 0x48af, 0x6010, 0x2068, 0x601c,
- 0xa086, 0x0003, 0x00c0, 0x48c2, 0x6837, 0x0103, 0x6b4a, 0x6847,
- 0x0000, 0x1078, 0x6aea, 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x1078,
- 0x6a4c, 0x0c7f, 0x0078, 0x4866, 0x2c78, 0x600c, 0x2060, 0x0078,
- 0x4866, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f,
- 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x48a4, 0x1078,
- 0x74a8, 0x0078, 0x48af, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x0f7e,
- 0x2031, 0x0000, 0x127e, 0x2091, 0x8000, 0x2079, 0x7836, 0x7838,
- 0xa065, 0x0040, 0x4902, 0x600c, 0x007e, 0x600f, 0x0000, 0x783c,
- 0xac06, 0x00c0, 0x48e9, 0x6003, 0x000a, 0x630a, 0x2c30, 0x0078,
- 0x48ff, 0x1078, 0x68e3, 0x0040, 0x48fd, 0x6010, 0x2068, 0x601c,
- 0xa086, 0x0003, 0x00c0, 0x490b, 0x6837, 0x0103, 0x6b4a, 0x6847,
- 0x0000, 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x1078, 0x6a4c, 0x007f,
- 0x0078, 0x48d8, 0x7e3a, 0x7e36, 0x127f, 0x0f7f, 0x0d7f, 0x0c7f,
- 0x067f, 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x48f4,
- 0x1078, 0x74a8, 0x0078, 0x48fd, 0x027e, 0x1078, 0x4928, 0x1078,
- 0x49c1, 0x027f, 0x007c, 0x0f7e, 0x127e, 0x2079, 0x7836, 0x2091,
- 0x8000, 0x1078, 0x4a58, 0x1078, 0x4ac0, 0x127f, 0x0f7f, 0x007c,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x2071, 0x7836, 0x7614, 0x2660, 0x2678, 0x8cff, 0x0040,
- 0x49b0, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0, 0x49ab,
- 0x7024, 0xac06, 0x00c0, 0x496e, 0x2069, 0x0100, 0x68c0, 0xa005,
- 0x0040, 0x4969, 0x1078, 0x5534, 0x68c3, 0x0000, 0x1078, 0x59e4,
- 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000,
- 0x0040, 0x495e, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100,
- 0x6824, 0xd084, 0x0040, 0x4966, 0x6827, 0x0001, 0x037f, 0x0078,
- 0x496e, 0x6003, 0x0009, 0x630a, 0x0078, 0x49ab, 0x7014, 0xac36,
- 0x00c0, 0x4974, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0, 0x4982,
- 0x2c00, 0xaf36, 0x0040, 0x4980, 0x2f00, 0x7012, 0x0078, 0x4982,
- 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x498b,
- 0x7e0e, 0x0078, 0x498c, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068,
- 0x1078, 0x68e3, 0x0040, 0x49a4, 0x601c, 0xa086, 0x0003, 0x00c0,
- 0x49b8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x6aea,
- 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x1078, 0x6a4c, 0x1078, 0x58b4,
- 0x0c7f, 0x0078, 0x4936, 0x2c78, 0x600c, 0x2060, 0x0078, 0x4936,
- 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c,
- 0x601c, 0xa086, 0x0006, 0x00c0, 0x4999, 0x1078, 0x74a8, 0x0078,
- 0x49a4, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0xa280, 0x7720,
- 0x2004, 0xa065, 0x0040, 0x4a54, 0x0f7e, 0x0e7e, 0x0d7e, 0x067e,
- 0x2071, 0x7836, 0x6654, 0x7018, 0xac06, 0x00c0, 0x49d8, 0x761a,
- 0x701c, 0xac06, 0x00c0, 0x49e4, 0x86ff, 0x00c0, 0x49e3, 0x7018,
- 0x701e, 0x0078, 0x49e4, 0x761e, 0x6058, 0xa07d, 0x0040, 0x49e9,
- 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x49ef, 0x2f00, 0x685a, 0x6057,
- 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078,
- 0x3754, 0x0040, 0x4a50, 0x7624, 0x86ff, 0x0040, 0x4a40, 0xa680,
- 0x0004, 0x2004, 0xad06, 0x00c0, 0x4a40, 0x0d7e, 0x2069, 0x0100,
- 0x68c0, 0xa005, 0x0040, 0x4a37, 0x1078, 0x5534, 0x68c3, 0x0000,
- 0x1078, 0x59e4, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
- 0xa384, 0x1000, 0x0040, 0x4a20, 0x6803, 0x0100, 0x6803, 0x0000,
- 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4a28, 0x6827, 0x0001,
- 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x4a31, 0x8001,
- 0x603e, 0x2660, 0x1078, 0x6a4c, 0x0c7f, 0x0078, 0x4a40, 0x0d7f,
- 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078, 0x49f7,
- 0x8dff, 0x0040, 0x4a4c, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
- 0x1078, 0x6aea, 0x1078, 0x3a2c, 0x1078, 0x58b4, 0x0078, 0x49f7,
- 0x067f, 0x0d7f, 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f, 0x007c,
- 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814, 0xa065,
- 0x0040, 0x4ab0, 0x600c, 0x007e, 0x600f, 0x0000, 0x7824, 0xac06,
- 0x00c0, 0x4a95, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4a8f,
- 0x1078, 0x5534, 0x68c3, 0x0000, 0x1078, 0x59e4, 0x7827, 0x0000,
- 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x4a84,
+ 0x4001, 0xa084, 0x000f, 0xa08a, 0x0006, 0x10c8, 0x1286, 0x1079,
+ 0x4002, 0x007c, 0x4008, 0x4009, 0x4008, 0x4008, 0x4045, 0x4054,
+ 0x007c, 0x7110, 0xd1bc, 0x00c0, 0x4044, 0x700c, 0x1078, 0x1fb0,
+ 0x1078, 0x3460, 0x00c0, 0x4044, 0x6204, 0xa294, 0xff00, 0x8217,
+ 0xa286, 0x0006, 0x00c0, 0x402d, 0x0c7e, 0x1078, 0x553b, 0x017f,
+ 0x0040, 0x4044, 0x611a, 0x601f, 0x0005, 0x7120, 0x610a, 0x2009,
+ 0x0088, 0x1078, 0x55c8, 0x0078, 0x4044, 0x0c7e, 0x1078, 0x553b,
+ 0x017f, 0x0040, 0x4044, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a,
+ 0xa286, 0x0004, 0x00c0, 0x4040, 0x2009, 0x0005, 0x0078, 0x4042,
+ 0x2009, 0x0001, 0x1078, 0x55c8, 0x007c, 0x7110, 0xd1bc, 0x0040,
+ 0x4053, 0x1078, 0x4063, 0x0040, 0x4053, 0x7124, 0x610a, 0x2009,
+ 0x0089, 0x1078, 0x55c8, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4062,
+ 0x1078, 0x4063, 0x0040, 0x4062, 0x7124, 0x610a, 0x2009, 0x008a,
+ 0x1078, 0x55c8, 0x007c, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0,
+ 0x4076, 0xac82, 0x7500, 0x0048, 0x4076, 0x2001, 0x6f15, 0x2004,
+ 0xac02, 0x00c8, 0x4076, 0xa085, 0x0001, 0x007c, 0xa006, 0x0078,
+ 0x4075, 0x2071, 0x70c9, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006,
+ 0x701a, 0x7012, 0x7017, 0x7500, 0x7007, 0x0000, 0x7026, 0x702b,
+ 0x4f52, 0x7032, 0x7037, 0x4f9e, 0x703b, 0x0002, 0x703f, 0x0000,
+ 0x007c, 0x2071, 0x70c9, 0x00e0, 0x4140, 0x2091, 0x6000, 0x700c,
+ 0x8001, 0x700e, 0x00c0, 0x4109, 0x700f, 0x0361, 0x7007, 0x0001,
+ 0x127e, 0x2091, 0x8000, 0x7138, 0x8109, 0x713a, 0x00c0, 0x4107,
+ 0x703b, 0x0002, 0x2009, 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8,
+ 0x4107, 0x703c, 0xa086, 0x0001, 0x00c0, 0x40e4, 0x0d7e, 0x2069,
+ 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x40c2, 0x6803, 0x1000,
+ 0x0078, 0x40c9, 0x6804, 0xa084, 0x1000, 0x0040, 0x40c9, 0x6803,
+ 0x0100, 0x6803, 0x0000, 0x703f, 0x0000, 0x2069, 0x70b6, 0x6804,
+ 0xa082, 0x0006, 0x00c0, 0x40d6, 0x6807, 0x0000, 0x6830, 0xa082,
+ 0x0003, 0x00c0, 0x40dd, 0x6833, 0x0000, 0x1078, 0x484d, 0x1078,
+ 0x48fd, 0x0d7f, 0x0078, 0x4107, 0x0d7e, 0x2069, 0x6f00, 0x6944,
+ 0x6860, 0xa102, 0x00c8, 0x4106, 0x2069, 0x70b6, 0x6804, 0xa086,
+ 0x0000, 0x00c0, 0x4106, 0x6830, 0xa086, 0x0000, 0x00c0, 0x4106,
+ 0x703f, 0x0001, 0x6807, 0x0006, 0x6833, 0x0003, 0x2069, 0x0100,
+ 0x6830, 0x689e, 0x2069, 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078,
+ 0x410c, 0x127e, 0x2091, 0x8000, 0x7024, 0xa00d, 0x0040, 0x411d,
+ 0x7020, 0x8001, 0x7022, 0x00c0, 0x411d, 0x7023, 0x0009, 0x8109,
+ 0x7126, 0x00c0, 0x411d, 0x7028, 0x107a, 0x7030, 0xa00d, 0x0040,
+ 0x412e, 0x702c, 0x8001, 0x702e, 0x00c0, 0x412e, 0x702f, 0x0009,
+ 0x8109, 0x7132, 0x00c0, 0x412e, 0x7034, 0x107a, 0x7018, 0xa00d,
+ 0x0040, 0x413f, 0x7008, 0x8001, 0x700a, 0x00c0, 0x413f, 0x700b,
+ 0x0009, 0x8109, 0x711a, 0x00c0, 0x413f, 0x701c, 0x107a, 0x127f,
+ 0x7004, 0x0079, 0x4143, 0x416a, 0x416b, 0x4187, 0x0e7e, 0x2071,
+ 0x70c9, 0x7018, 0xa005, 0x00c0, 0x4151, 0x711a, 0x721e, 0x700b,
+ 0x0009, 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071, 0x70c9, 0x701c,
+ 0xa206, 0x00c0, 0x415d, 0x701a, 0x701e, 0x007f, 0x0e7f, 0x007c,
+ 0x0e7e, 0x2071, 0x70c9, 0x6088, 0xa102, 0x0048, 0x4168, 0x618a,
+ 0x0e7f, 0x007c, 0x007c, 0x7110, 0x1078, 0x3497, 0x00c0, 0x417d,
+ 0x6088, 0x8001, 0x0048, 0x417d, 0x608a, 0x00c0, 0x417d, 0x127e,
+ 0x2091, 0x8000, 0x1078, 0x484d, 0x127f, 0x8108, 0xa182, 0x007e,
+ 0x0048, 0x4185, 0xa00e, 0x7007, 0x0002, 0x7112, 0x007c, 0x7014,
+ 0x2060, 0x127e, 0x2091, 0x8000, 0x6014, 0xa005, 0x0040, 0x41b6,
+ 0x8001, 0x6016, 0x00c0, 0x41b6, 0x611c, 0xa186, 0x0003, 0x0040,
+ 0x419d, 0xa186, 0x0006, 0x00c0, 0x41b4, 0x6010, 0x2068, 0x6854,
+ 0xa08a, 0x199a, 0x0048, 0x41b4, 0xa082, 0x1999, 0x6856, 0xa08a,
+ 0x199a, 0x0048, 0x41ad, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b,
+ 0xa108, 0x6116, 0x0078, 0x41b6, 0x1078, 0x6070, 0x127f, 0xac88,
+ 0x0008, 0x7116, 0x2001, 0x6f16, 0x2004, 0xa102, 0x0048, 0x41c4,
+ 0x7017, 0x7500, 0x7007, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x70c9,
+ 0x7027, 0x07d0, 0x7023, 0x0009, 0x703b, 0x0002, 0x0e7f, 0x007c,
+ 0x2001, 0x70d2, 0x2003, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x70c9,
+ 0x7033, 0x07d0, 0x702f, 0x0009, 0x0e7f, 0x007c, 0x2011, 0x70d5,
+ 0x2013, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x70c9, 0x711a, 0x721e,
+ 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0c7e, 0x2061, 0x715a, 0x0c7f,
+ 0x007c, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x715a,
+ 0x2060, 0x007c, 0x6854, 0xa08a, 0x199a, 0x0048, 0x4201, 0x2001,
+ 0x1999, 0xa005, 0x00c0, 0x4211, 0x6944, 0x0c7e, 0x1078, 0x41f1,
+ 0x6014, 0x0c7f, 0xa005, 0x00c0, 0x4216, 0x2001, 0x001e, 0x0078,
+ 0x4216, 0xa08e, 0xffff, 0x00c0, 0x4216, 0xa006, 0x8003, 0x800b,
+ 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0,
+ 0x0040, 0x4251, 0xd0b4, 0x00c0, 0x422d, 0xd0bc, 0x00c0, 0x423f,
+ 0x2009, 0x0006, 0x1078, 0x4274, 0x007c, 0xd0fc, 0x0040, 0x423a,
+ 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x426d, 0xa08e, 0x0000,
+ 0x00c0, 0x426d, 0x2009, 0x0043, 0x1078, 0x55c8, 0x007c, 0xd0fc,
+ 0x0040, 0x424c, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x426d,
+ 0xa08e, 0x0000, 0x00c0, 0x426d, 0x2009, 0x0042, 0x1078, 0x55c8,
+ 0x007c, 0xd0fc, 0x0040, 0x4263, 0xa084, 0x0003, 0xa08e, 0x0003,
+ 0x0040, 0x426d, 0xa08e, 0x0002, 0x0040, 0x4267, 0x2009, 0x0041,
+ 0x1078, 0x55c8, 0x007c, 0x1078, 0x4272, 0x0078, 0x4262, 0x2009,
+ 0x0043, 0x1078, 0x55c8, 0x0078, 0x4262, 0x2009, 0x0004, 0x1078,
+ 0x4274, 0x007c, 0x2009, 0x0001, 0x6010, 0xa0ec, 0xf000, 0x0040,
+ 0x4298, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0,
+ 0x4292, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x4292,
+ 0x0c7e, 0x6944, 0x1078, 0x41f1, 0x6204, 0x8210, 0x0048, 0x4291,
+ 0x6206, 0x0c7f, 0x1078, 0x36ec, 0x6010, 0xa06d, 0x10c0, 0x41fa,
+ 0x007c, 0x157e, 0x0c7e, 0x20a9, 0x0010, 0x2061, 0x715a, 0x6000,
+ 0x81ff, 0x0040, 0x42a6, 0xa205, 0x0078, 0x42a7, 0xa204, 0x6002,
+ 0xace0, 0x0008, 0x00f0, 0x429f, 0x0c7f, 0x157f, 0x007c, 0x6808,
+ 0xa005, 0x0040, 0x42b7, 0x8001, 0x680a, 0xa085, 0x0001, 0x007c,
+ 0x127e, 0x2091, 0x2200, 0x2079, 0x70b6, 0x127f, 0x0d7e, 0x2069,
+ 0x70b6, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085, 0x8001,
+ 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027, 0x0001, 0x7804, 0xa084,
+ 0x0007, 0x0079, 0x42d3, 0x42dd, 0x4302, 0x4351, 0x42e3, 0x4302,
+ 0x42db, 0x42db, 0x42db, 0x1078, 0x1286, 0x1078, 0x41d0, 0x1078,
+ 0x484d, 0x0c7f, 0x007c, 0x62c0, 0x82ff, 0x00c0, 0x42e9, 0x0c7f,
+ 0x007c, 0x2011, 0x31bc, 0x1078, 0x4153, 0x7828, 0xa092, 0x0002,
+ 0x00c8, 0x42f8, 0x8000, 0x782a, 0x1078, 0x31ec, 0x0078, 0x42e7,
+ 0x1078, 0x31bc, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b, 0x0000,
+ 0x0078, 0x42e7, 0x1078, 0x41d0, 0x62c0, 0x82ff, 0x00c0, 0x4314,
+ 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1286, 0x2009, 0x0013,
+ 0x1078, 0x55c8, 0x0c7f, 0x007c, 0x3900, 0xa082, 0x71fa, 0x00c8,
+ 0x431b, 0x1078, 0x54cb, 0x0c7e, 0x7824, 0xa065, 0x1040, 0x1286,
+ 0x7804, 0xa086, 0x0004, 0x0040, 0x4396, 0x7828, 0xa092, 0x2710,
+ 0x00c8, 0x4331, 0x8000, 0x782a, 0x0c7f, 0x1078, 0x4f37, 0x0078,
+ 0x4312, 0x6104, 0xa186, 0x0003, 0x00c0, 0x4348, 0x0e7e, 0x2071,
+ 0x6f00, 0x70b4, 0x0e7f, 0xd08c, 0x0040, 0x4348, 0x0c7e, 0x0e7e,
+ 0x2061, 0x0100, 0x2071, 0x6f00, 0x1078, 0x31f5, 0x0e7f, 0x0c7f,
+ 0x1078, 0x6e16, 0x2009, 0x0014, 0x1078, 0x55c8, 0x0c7f, 0x0078,
+ 0x4312, 0x2001, 0x70d2, 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0,
+ 0x4365, 0x782b, 0x0000, 0x7824, 0xa065, 0x1040, 0x1286, 0x2009,
+ 0x0013, 0x1078, 0x5615, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x3900,
+ 0xa082, 0x71fa, 0x00c8, 0x436e, 0x1078, 0x54cb, 0x7824, 0xa005,
+ 0x1040, 0x1286, 0x781c, 0xa06d, 0x1040, 0x1286, 0x6800, 0xc0dc,
+ 0x6802, 0x7924, 0x2160, 0x1078, 0x55a1, 0x693c, 0x81ff, 0x1040,
+ 0x1286, 0x8109, 0x693e, 0x6854, 0xa015, 0x0040, 0x438a, 0x7a1e,
+ 0x0078, 0x438c, 0x7918, 0x791e, 0x7807, 0x0000, 0x7827, 0x0000,
+ 0x0d7f, 0x0c7f, 0x1078, 0x484d, 0x0078, 0x4363, 0x6104, 0xa186,
+ 0x0002, 0x0040, 0x43a1, 0xa186, 0x0004, 0x0040, 0x43a1, 0x0078,
+ 0x4325, 0x7808, 0xac06, 0x0040, 0x4325, 0x1078, 0x4754, 0x1078,
+ 0x4445, 0x0c7f, 0x1078, 0x484d, 0x0078, 0x4312, 0x0c7e, 0x6027,
+ 0x0002, 0x2011, 0x70d5, 0x2013, 0x0000, 0x62c8, 0x82ff, 0x00c0,
+ 0x43c8, 0x62c4, 0x82ff, 0x00c0, 0x43c8, 0x793c, 0xa1e5, 0x0000,
+ 0x0040, 0x43c6, 0x2009, 0x0049, 0x1078, 0x55c8, 0x0c7f, 0x007c,
+ 0x3908, 0xa192, 0x71fa, 0x00c8, 0x43cf, 0x1078, 0x54cb, 0x6017,
+ 0x0010, 0x793c, 0x81ff, 0x0040, 0x43c6, 0x7944, 0xa192, 0x2710,
+ 0x00c8, 0x43ee, 0x8108, 0x7946, 0x1078, 0x41d5, 0x793c, 0xa188,
+ 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x43ea, 0x6017, 0x0012,
+ 0x0078, 0x43c6, 0x6017, 0x0016, 0x0078, 0x43c6, 0x1078, 0x6e16,
+ 0x793c, 0x2160, 0x2009, 0x004a, 0x1078, 0x55c8, 0x0078, 0x43c6,
+ 0x007e, 0x017e, 0x0c7e, 0x127e, 0x600f, 0x0000, 0x2c08, 0x2061,
+ 0x70b6, 0x2091, 0x8000, 0x6020, 0x8000, 0x6022, 0x6010, 0xa005,
+ 0x0040, 0x4413, 0xa080, 0x0003, 0x2102, 0x6112, 0x127f, 0x0c7f,
+ 0x017f, 0x007f, 0x007c, 0x6116, 0x6112, 0x0078, 0x440e, 0x0d7e,
+ 0x2069, 0x70b6, 0x6000, 0xd0d4, 0x0040, 0x442c, 0x6820, 0x8000,
+ 0x6822, 0xa086, 0x0001, 0x00c0, 0x4427, 0x2c00, 0x681e, 0x6804,
+ 0xa084, 0x0007, 0x0079, 0x4855, 0xc0d5, 0x6002, 0x6818, 0xa005,
+ 0x0040, 0x443e, 0x6056, 0x605b, 0x0000, 0x007e, 0x2c00, 0x681a,
+ 0x0d7f, 0x685a, 0x2069, 0x70b6, 0x0078, 0x441e, 0x6056, 0x605a,
+ 0x2c00, 0x681a, 0x681e, 0x0078, 0x441e, 0x007e, 0x017e, 0x0c7e,
+ 0x127e, 0x2091, 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x70b6,
+ 0x6020, 0x8000, 0x6022, 0x6008, 0xa005, 0x0040, 0x4460, 0xa080,
+ 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c,
+ 0x610e, 0x610a, 0x0078, 0x445b, 0x0c7e, 0x600f, 0x0000, 0x2c08,
+ 0x2061, 0x70b6, 0x6034, 0xa005, 0x0040, 0x4474, 0xa080, 0x0003,
+ 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a, 0x6136, 0x0078, 0x4472,
+ 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e,
+ 0x2071, 0x70b6, 0x7638, 0x2660, 0x2678, 0x2091, 0x8000, 0x8cff,
+ 0x0040, 0x44da, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0,
+ 0x44d5, 0x703c, 0xac06, 0x00c0, 0x449a, 0x6003, 0x000a, 0x630a,
+ 0x0078, 0x44d5, 0x7038, 0xac36, 0x00c0, 0x44a0, 0x660c, 0x763a,
+ 0x7034, 0xac36, 0x00c0, 0x44ae, 0x2c00, 0xaf36, 0x0040, 0x44ac,
+ 0x2f00, 0x7036, 0x0078, 0x44ae, 0x7037, 0x0000, 0x660c, 0x067e,
+ 0x2c00, 0xaf06, 0x0040, 0x44b7, 0x7e0e, 0x0078, 0x44b8, 0x2678,
+ 0x600f, 0x0000, 0x1078, 0x61dc, 0x0040, 0x44d0, 0x6010, 0x2068,
+ 0x601c, 0xa086, 0x0003, 0x00c0, 0x44e3, 0x6837, 0x0103, 0x6b4a,
+ 0x6847, 0x0000, 0x1078, 0x639b, 0x1078, 0x36ec, 0x1078, 0x62f0,
+ 0x1078, 0x62fd, 0x0c7f, 0x0078, 0x4487, 0x2c78, 0x600c, 0x2060,
+ 0x0078, 0x4487, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f,
+ 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x44c5,
+ 0x1078, 0x6d4c, 0x0078, 0x44d0, 0x007e, 0x067e, 0x0c7e, 0x0d7e,
+ 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091, 0x8000, 0x2079, 0x70b6,
+ 0x7838, 0xa065, 0x0040, 0x4523, 0x600c, 0x007e, 0x600f, 0x0000,
+ 0x783c, 0xac06, 0x00c0, 0x450a, 0x6003, 0x000a, 0x630a, 0x2c30,
+ 0x0078, 0x4520, 0x1078, 0x61dc, 0x0040, 0x451e, 0x6010, 0x2068,
+ 0x601c, 0xa086, 0x0003, 0x00c0, 0x452c, 0x6837, 0x0103, 0x6b4a,
+ 0x6847, 0x0000, 0x1078, 0x36ec, 0x1078, 0x62f0, 0x1078, 0x62fd,
+ 0x007f, 0x0078, 0x44f9, 0x7e3a, 0x7e36, 0x127f, 0x0f7f, 0x0d7f,
+ 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0,
+ 0x4515, 0x1078, 0x6d4c, 0x0078, 0x451e, 0x027e, 0x1078, 0x4549,
+ 0x1078, 0x45e2, 0x027f, 0x007c, 0x0f7e, 0x127e, 0x2079, 0x70b6,
+ 0x2091, 0x8000, 0x1078, 0x4679, 0x1078, 0x46e1, 0x127f, 0x0f7f,
+ 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e,
+ 0x2091, 0x8000, 0x2071, 0x70b6, 0x7614, 0x2660, 0x2678, 0x8cff,
+ 0x0040, 0x45d1, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0,
+ 0x45cc, 0x7024, 0xac06, 0x00c0, 0x458f, 0x2069, 0x0100, 0x68c0,
+ 0xa005, 0x0040, 0x458a, 0x1078, 0x4f45, 0x68c3, 0x0000, 0x1078,
+ 0x53d1, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384,
+ 0x1000, 0x0040, 0x457f, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069,
+ 0x0100, 0x6824, 0xd084, 0x0040, 0x4587, 0x6827, 0x0001, 0x037f,
+ 0x0078, 0x458f, 0x6003, 0x0009, 0x630a, 0x0078, 0x45cc, 0x7014,
+ 0xac36, 0x00c0, 0x4595, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0,
+ 0x45a3, 0x2c00, 0xaf36, 0x0040, 0x45a1, 0x2f00, 0x7012, 0x0078,
+ 0x45a3, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
+ 0x45ac, 0x7e0e, 0x0078, 0x45ad, 0x2678, 0x600f, 0x0000, 0x6010,
+ 0x2068, 0x1078, 0x61dc, 0x0040, 0x45c5, 0x601c, 0xa086, 0x0003,
+ 0x00c0, 0x45d9, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078,
+ 0x639b, 0x1078, 0x36ec, 0x1078, 0x62f0, 0x1078, 0x62fd, 0x1078,
+ 0x52a1, 0x0c7f, 0x0078, 0x4557, 0x2c78, 0x600c, 0x2060, 0x0078,
+ 0x4557, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
+ 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x45ba, 0x1078, 0x6d4c,
+ 0x0078, 0x45c5, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0xa280,
+ 0x7020, 0x2004, 0xa065, 0x0040, 0x4675, 0x0f7e, 0x0e7e, 0x0d7e,
+ 0x067e, 0x2071, 0x70b6, 0x6654, 0x7018, 0xac06, 0x00c0, 0x45f9,
+ 0x761a, 0x701c, 0xac06, 0x00c0, 0x4605, 0x86ff, 0x00c0, 0x4604,
+ 0x7018, 0x701e, 0x0078, 0x4605, 0x761e, 0x6058, 0xa07d, 0x0040,
+ 0x460a, 0x7e56, 0xa6ed, 0x0000, 0x0040, 0x4610, 0x2f00, 0x685a,
+ 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002,
+ 0x1078, 0x3414, 0x0040, 0x4671, 0x7624, 0x86ff, 0x0040, 0x4661,
+ 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x4661, 0x0d7e, 0x2069,
+ 0x0100, 0x68c0, 0xa005, 0x0040, 0x4658, 0x1078, 0x4f45, 0x68c3,
+ 0x0000, 0x1078, 0x53d1, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140,
+ 0x6b04, 0xa384, 0x1000, 0x0040, 0x4641, 0x6803, 0x0100, 0x6803,
+ 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4649, 0x6827,
+ 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x4652,
+ 0x8001, 0x603e, 0x2660, 0x1078, 0x62fd, 0x0c7f, 0x0078, 0x4661,
+ 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078,
+ 0x4618, 0x8dff, 0x0040, 0x466d, 0x6837, 0x0103, 0x6b4a, 0x6847,
+ 0x0000, 0x1078, 0x639b, 0x1078, 0x36ec, 0x1078, 0x52a1, 0x0078,
+ 0x4618, 0x067f, 0x0d7f, 0x0e7f, 0x0f7f, 0x127f, 0x007f, 0x0c7f,
+ 0x007c, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x0000, 0x7814,
+ 0xa065, 0x0040, 0x46d1, 0x600c, 0x007e, 0x600f, 0x0000, 0x7824,
+ 0xac06, 0x00c0, 0x46b6, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040,
+ 0x46b0, 0x1078, 0x4f45, 0x68c3, 0x0000, 0x1078, 0x53d1, 0x7827,
+ 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040,
+ 0x46a5, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824,
+ 0xd084, 0x0040, 0x46ad, 0x6827, 0x0001, 0x037f, 0x0078, 0x46b6,
+ 0x6003, 0x0009, 0x630a, 0x2c30, 0x0078, 0x46ce, 0x6010, 0x2068,
+ 0x1078, 0x61dc, 0x0040, 0x46ca, 0x601c, 0xa086, 0x0003, 0x00c0,
+ 0x46d8, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36ec,
+ 0x1078, 0x62f0, 0x1078, 0x62fd, 0x1078, 0x52a1, 0x007f, 0x0078,
+ 0x4680, 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c,
+ 0x601c, 0xa086, 0x0006, 0x00c0, 0x46c1, 0x1078, 0x6d4c, 0x0078,
+ 0x46ca, 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x7818, 0xa065, 0x0040,
+ 0x474d, 0x6054, 0x007e, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000,
+ 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x3414, 0x0040, 0x474a, 0x7e24,
+ 0x86ff, 0x0040, 0x473c, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0,
+ 0x473c, 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4733,
+ 0x1078, 0x4f45, 0x68c3, 0x0000, 0x1078, 0x53d1, 0x7827, 0x0000,
+ 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x471c,
0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
- 0x0040, 0x4a8c, 0x6827, 0x0001, 0x037f, 0x0078, 0x4a95, 0x6003,
- 0x0009, 0x630a, 0x2c30, 0x0078, 0x4aad, 0x6010, 0x2068, 0x1078,
- 0x68e3, 0x0040, 0x4aa9, 0x601c, 0xa086, 0x0003, 0x00c0, 0x4ab7,
- 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3a2c, 0x1078,
- 0x6a3f, 0x1078, 0x6a4c, 0x1078, 0x58b4, 0x007f, 0x0078, 0x4a5f,
- 0x7e16, 0x7e12, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c,
- 0xa086, 0x0006, 0x00c0, 0x4aa0, 0x1078, 0x74a8, 0x0078, 0x4aa9,
- 0x007e, 0x067e, 0x0c7e, 0x0d7e, 0x7818, 0xa065, 0x0040, 0x4b2c,
- 0x6054, 0x007e, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000, 0xc0d4,
- 0xc0dc, 0x6002, 0x1078, 0x3754, 0x0040, 0x4b29, 0x7e24, 0x86ff,
- 0x0040, 0x4b1b, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0, 0x4b1b,
- 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4b12, 0x1078,
- 0x5534, 0x68c3, 0x0000, 0x1078, 0x59e4, 0x7827, 0x0000, 0x037e,
- 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x4afb, 0x6803,
- 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040,
- 0x4b03, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c, 0xa005,
- 0x0040, 0x4b0c, 0x8001, 0x603e, 0x2660, 0x1078, 0x6a4c, 0x0c7f,
- 0x0078, 0x4b1b, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009, 0x630a,
- 0x0c7f, 0x0078, 0x4ad2, 0x8dff, 0x0040, 0x4b25, 0x6837, 0x0103,
- 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3a2c, 0x1078, 0x58b4, 0x0078,
- 0x4ad2, 0x007f, 0x0078, 0x4ac5, 0x781e, 0x781a, 0x0d7f, 0x0c7f,
- 0x067f, 0x007f, 0x007c, 0x0e7e, 0x0c7e, 0x2071, 0x7836, 0x7004,
- 0xa084, 0x0007, 0x0079, 0x4b3c, 0x4b46, 0x4b49, 0x4b62, 0x4b7e,
- 0x4bc3, 0x4b46, 0x4b46, 0x4b44, 0x1078, 0x12d5, 0x0c7f, 0x0e7f,
- 0x007c, 0x7024, 0xa065, 0x0040, 0x4b57, 0x7020, 0x8001, 0x7022,
- 0x600c, 0xa015, 0x0040, 0x4b5e, 0x7216, 0x600f, 0x0000, 0x7007,
- 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7216, 0x7212,
- 0x0078, 0x4b57, 0x6018, 0x2060, 0x1078, 0x3754, 0x6000, 0xc0dc,
- 0x6002, 0x7020, 0x8001, 0x7022, 0x0040, 0x4b73, 0x6054, 0xa015,
- 0x0040, 0x4b7a, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f,
- 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078, 0x4b73, 0x7024, 0xa065,
- 0x0040, 0x4bc0, 0x700c, 0xac06, 0x00c0, 0x4b95, 0x1078, 0x58b4,
- 0x600c, 0xa015, 0x0040, 0x4b91, 0x720e, 0x600f, 0x0000, 0x0078,
- 0x4bbe, 0x720e, 0x720a, 0x0078, 0x4bbe, 0x7014, 0xac06, 0x00c0,
- 0x4ba8, 0x1078, 0x58b4, 0x600c, 0xa015, 0x0040, 0x4ba4, 0x7216,
- 0x600f, 0x0000, 0x0078, 0x4bbe, 0x7216, 0x7212, 0x0078, 0x4bbe,
- 0x6018, 0x2060, 0x1078, 0x3754, 0x6000, 0xc0dc, 0x6002, 0x1078,
- 0x58b4, 0x701c, 0xa065, 0x0040, 0x4bbe, 0x6054, 0xa015, 0x0040,
- 0x4bbc, 0x721e, 0x0078, 0x4bbe, 0x7218, 0x721e, 0x7027, 0x0000,
- 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x4bd0, 0x1078,
- 0x58b4, 0x600c, 0xa015, 0x0040, 0x4bd7, 0x720e, 0x600f, 0x0000,
- 0x1078, 0x59e4, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x720e,
- 0x720a, 0x0078, 0x4bd0, 0x0d7e, 0x2069, 0x7836, 0x6830, 0xa084,
- 0x0003, 0x0079, 0x4be3, 0x4be9, 0x4beb, 0x4c11, 0x4be9, 0x1078,
- 0x12d5, 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001, 0x0040,
- 0x4c07, 0x683c, 0xa065, 0x0040, 0x4bfc, 0x600c, 0xa015, 0x0040,
- 0x4c03, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000,
- 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836, 0x0078, 0x4bfc, 0x6843,
- 0x0000, 0x6838, 0xa065, 0x0040, 0x4bfc, 0x6003, 0x0003, 0x0078,
- 0x4bfc, 0x0c7e, 0x6843, 0x0000, 0x6847, 0x0000, 0x683c, 0xa065,
- 0x0040, 0x4c29, 0x600c, 0xa015, 0x0040, 0x4c25, 0x6a3a, 0x600f,
- 0x0000, 0x683f, 0x0000, 0x0078, 0x4c29, 0x683f, 0x0000, 0x683a,
- 0x6836, 0x0c7f, 0x0d7f, 0x007c, 0x0d7e, 0x2069, 0x7836, 0x6804,
- 0xa084, 0x0007, 0x0079, 0x4c34, 0x4c3e, 0x4cdb, 0x4cdb, 0x4cdb,
- 0x4cdb, 0x4cdd, 0x4cdb, 0x4c3c, 0x1078, 0x12d5, 0x6820, 0xa005,
- 0x00c0, 0x4c44, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040,
- 0x4c53, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078, 0x4d23,
- 0x0c7f, 0x0d7f, 0x007c, 0x6814, 0xa065, 0x0040, 0x4c61, 0x6807,
- 0x0001, 0x6826, 0x682b, 0x0000, 0x1078, 0x4d23, 0x0c7f, 0x0d7f,
- 0x007c, 0x0e7e, 0x037e, 0x6a1c, 0xa2f5, 0x0000, 0x0040, 0x4cd6,
- 0x704c, 0xa00d, 0x0040, 0x4c70, 0x7088, 0xa005, 0x0040, 0x4c88,
- 0x7054, 0xa075, 0x0040, 0x4c79, 0xa20e, 0x0040, 0x4cd6, 0x0078,
- 0x4c7e, 0x6818, 0xa20e, 0x0040, 0x4cd6, 0x2070, 0x704c, 0xa00d,
- 0x0040, 0x4c70, 0x7088, 0xa005, 0x00c0, 0x4c70, 0x2e00, 0x681e,
- 0x733c, 0x7038, 0xa302, 0x00c8, 0x4c70, 0x1078, 0x5b83, 0x0040,
- 0x4cd6, 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a, 0xa180, 0x0015,
- 0x2004, 0xa08a, 0x199a, 0x0048, 0x4c9f, 0x2001, 0x1999, 0x8003,
- 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78, 0x71a0,
- 0xd1bc, 0x0040, 0x4cb8, 0x7100, 0xd1f4, 0x0040, 0x4cb4, 0x7114,
- 0xa18c, 0x00ff, 0x0078, 0x4cbd, 0x2009, 0x0000, 0x0078, 0x4cbd,
- 0xa1e0, 0x2303, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a,
- 0x1078, 0x5174, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002, 0x2f18,
- 0x6b26, 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001, 0x7807,
- 0x0040, 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f, 0x0e7f,
- 0x0c7f, 0x0078, 0x4cd4, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065,
- 0x0040, 0x4ce9, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078,
- 0x4d23, 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069, 0x7836,
- 0x6830, 0xa086, 0x0000, 0x00c0, 0x4d0a, 0x6838, 0xa07d, 0x0040,
- 0x4d0a, 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x127e, 0x0f7e,
- 0x2091, 0x2200, 0x027f, 0x1078, 0x1a24, 0x00c0, 0x4d0d, 0x127f,
- 0x1078, 0x5409, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843, 0x0000,
- 0x7803, 0x0002, 0x780c, 0xa015, 0x0040, 0x4d1f, 0x6a3a, 0x780f,
- 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x4d0a, 0x683a,
- 0x6836, 0x0078, 0x4d19, 0x601c, 0xa084, 0x000f, 0x1079, 0x4d29,
- 0x007c, 0x4d32, 0x4d37, 0x503e, 0x5134, 0x4d37, 0x503e, 0x5134,
- 0x4d32, 0x4d37, 0x1078, 0x4b33, 0x1078, 0x4c2c, 0x007c, 0x157e,
- 0x137e, 0x147e, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0030, 0x10c8,
- 0x12d5, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, 0x4d54, 0x7900,
- 0xd1f4, 0x0040, 0x4d50, 0x7914, 0xa18c, 0x00ff, 0x0078, 0x4d59,
- 0x2009, 0x0000, 0x0078, 0x4d59, 0xa1f8, 0x2303, 0x2f0c, 0xa18c,
- 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0x1079, 0x4d65, 0x0f7f,
- 0x0c7f, 0x147f, 0x137f, 0x157f, 0x007c, 0x4d97, 0x4dcf, 0x4de7,
- 0x4e66, 0x4e93, 0x4e9b, 0x4ebc, 0x4ecd, 0x4ede, 0x4ee6, 0x4ef7,
- 0x4ee6, 0x4f3f, 0x4ecd, 0x4f60, 0x4f68, 0x4ede, 0x4f68, 0x4f79,
- 0x4d95, 0x4d95, 0x4d95, 0x4d95, 0x4d95, 0x4d95, 0x4d95, 0x4d95,
- 0x4d95, 0x4d95, 0x4d95, 0x4d95, 0x55f2, 0x5607, 0x562a, 0x564e,
- 0x4ebc, 0x4d95, 0x4ebc, 0x4ee6, 0x4d95, 0x4de7, 0x4e66, 0x4d95,
- 0x5afe, 0x4ee6, 0x4d95, 0x5b21, 0x4ee6, 0x1078, 0x12d5, 0x20a1,
- 0x020b, 0x1078, 0x4f8e, 0x20a3, 0x5200, 0x20a3, 0x0000, 0x0d7e,
- 0x2069, 0x7651, 0x6804, 0xd084, 0x0040, 0x4db1, 0x6828, 0x20a3,
- 0x0000, 0x017e, 0x1078, 0x206e, 0x21a2, 0x017f, 0x0d7f, 0x0078,
- 0x4db6, 0x0d7f, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004,
- 0x2099, 0x7605, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7601, 0x53a6,
- 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, 0x5520, 0x007c, 0x20a1,
- 0x020b, 0x1078, 0x4f8e, 0x20a3, 0x0500, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x6030, 0xa084, 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099,
- 0x7605, 0x53a6, 0x60c3, 0x0010, 0x1078, 0x5520, 0x007c, 0x20a1,
- 0x020b, 0x1078, 0x4f8e, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086,
- 0x007e, 0x00c0, 0x4dfa, 0x20a3, 0x0400, 0x620c, 0xc2b4, 0x620e,
- 0x0078, 0x4dfc, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x7818, 0xa080,
- 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x4e35, 0x2099, 0x7820,
- 0x33a6, 0x9398, 0x33a6, 0x9398, 0x3304, 0xa084, 0x3fff, 0x20a2,
- 0x9398, 0x33a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x7605, 0x53a6, 0x20a9,
- 0x0004, 0x2099, 0x7601, 0x53a6, 0x20a9, 0x0010, 0x20a3, 0x0000,
- 0x00f0, 0x4e26, 0x2099, 0x7828, 0x33a6, 0x20a9, 0x0007, 0x20a3,
- 0x0000, 0x00f0, 0x4e2f, 0x0078, 0x4e55, 0x2099, 0x7820, 0x20a9,
- 0x0008, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7605, 0x53a6, 0x20a9,
- 0x0004, 0x2099, 0x7601, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000,
- 0x00f0, 0x4e46, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4e4c,
- 0x2099, 0x7828, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3,
- 0x0000, 0x00f0, 0x4e57, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0,
- 0x4e5d, 0x60c3, 0x0074, 0x1078, 0x5520, 0x007c, 0x20a1, 0x020b,
- 0x1078, 0x4f8e, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800,
- 0x20a3, 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
- 0x0f7e, 0x2079, 0x7651, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4e82,
- 0xa085, 0x0020, 0xd1a4, 0x0040, 0x4e87, 0xa085, 0x0010, 0xa085,
- 0x0002, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x5520, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4f8e, 0x20a3,
- 0x5000, 0x0078, 0x4dfc, 0x20a1, 0x020b, 0x1078, 0x4f8e, 0x20a3,
- 0x2110, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
- 0x0014, 0x1078, 0x5520, 0x007c, 0x20a1, 0x020b, 0x1078, 0x5005,
- 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0004, 0x1078, 0x5520, 0x007c, 0x20a1, 0x020b, 0x1078,
- 0x5005, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3,
- 0x2a00, 0x60c3, 0x0008, 0x1078, 0x5520, 0x007c, 0x20a1, 0x020b,
- 0x1078, 0x5005, 0x20a3, 0x0200, 0x0078, 0x4dfc, 0x20a1, 0x020b,
- 0x1078, 0x5005, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003,
- 0x7810, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x5520, 0x007c, 0x0d7e,
- 0x20a1, 0x020b, 0x1078, 0x5005, 0x20a3, 0x0210, 0x20a3, 0x0014,
- 0x20a3, 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0,
- 0x4f1d, 0x6998, 0xa184, 0xc000, 0x00c0, 0x4f19, 0xd1ec, 0x0040,
- 0x4f15, 0x20a3, 0x2100, 0x0078, 0x4f1f, 0x20a3, 0x0100, 0x0078,
- 0x4f1f, 0x20a3, 0x0400, 0x0078, 0x4f1f, 0x20a3, 0x0700, 0xa006,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x7651,
- 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4f2f, 0xa085, 0x0020, 0xd1a4,
- 0x0040, 0x4f34, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a2,
- 0x20a2, 0x60c3, 0x0014, 0x1078, 0x5520, 0x0d7f, 0x007c, 0x20a1,
- 0x020b, 0x1078, 0x5005, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3,
- 0x0000, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x5520, 0x007c,
- 0x20a1, 0x020b, 0x1078, 0x5005, 0x20a3, 0x0200, 0x0078, 0x4d9d,
- 0x20a1, 0x020b, 0x1078, 0x5005, 0x20a3, 0x0100, 0x20a3, 0x0000,
- 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x1078, 0x5520,
- 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, 0x020b, 0x1078,
- 0x5005, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x000b, 0x20a3,
- 0x0000, 0x60c3, 0x0008, 0x1078, 0x5520, 0x007c, 0x027e, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2014, 0xa286,
- 0x007e, 0x00c0, 0x4fa1, 0x20a3, 0x22ff, 0x20a3, 0xfffe, 0x0078,
- 0x4fcf, 0xa286, 0x007f, 0x00c0, 0x4fac, 0x0d7e, 0x20a3, 0x22ff,
- 0x20a3, 0xfffd, 0x0078, 0x4fc3, 0xd2bc, 0x0040, 0x4fcb, 0xa286,
- 0x0080, 0x0d7e, 0x00c0, 0x4fba, 0x20a3, 0x22ff, 0x20a3, 0xfffc,
- 0x0078, 0x4fc3, 0xa2e8, 0x7720, 0x2d6c, 0x6810, 0xa085, 0x2200,
- 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7619, 0x2da6, 0x8d68, 0x2da6,
- 0x0d7f, 0x0078, 0x4fd3, 0x20a3, 0x2200, 0x6298, 0x22a2, 0x20a3,
- 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0129, 0x20a3, 0x0000, 0x1078,
- 0x550f, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x20a3, 0x02ff, 0x2011, 0xfffc, 0x22a2, 0x0d7e,
- 0x2069, 0x7619, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x20a3, 0x2029,
- 0x20a3, 0x0000, 0x0078, 0x4fd7, 0x20a3, 0x0100, 0x20a3, 0x0000,
- 0x20a3, 0xfc02, 0x20a3, 0x0000, 0x007c, 0x027e, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e,
- 0x0048, 0x5024, 0x0d7e, 0xa0e8, 0x7720, 0x2d6c, 0x6810, 0xa085,
- 0x2300, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7619, 0x2da6, 0x8d68,
- 0x2da6, 0x0d7f, 0x0078, 0x502c, 0x20a3, 0x2300, 0x6298, 0x22a2,
- 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0198, 0x20a3, 0x0000,
- 0x1078, 0x550f, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0c7e, 0x0f7e,
- 0x6004, 0xa08a, 0x0085, 0x1048, 0x12d5, 0xa08a, 0x008c, 0x10c8,
- 0x12d5, 0x6118, 0x2178, 0x79a0, 0xd1bc, 0x0040, 0x505c, 0x7900,
- 0xd1f4, 0x0040, 0x5058, 0x7914, 0xa18c, 0x00ff, 0x0078, 0x5061,
- 0x2009, 0x0000, 0x0078, 0x5061, 0xa1f8, 0x2303, 0x2f0c, 0xa18c,
- 0x00ff, 0x2c78, 0x2061, 0x0100, 0x619a, 0xa082, 0x0085, 0x1079,
- 0x506c, 0x0f7f, 0x0c7f, 0x007c, 0x5075, 0x5080, 0x509a, 0x5073,
- 0x5073, 0x5073, 0x5075, 0x1078, 0x12d5, 0x147e, 0x20a1, 0x020b,
- 0x1078, 0x50ad, 0x60c3, 0x0000, 0x1078, 0x5520, 0x147f, 0x007c,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x50da, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x7808, 0x20a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0xffff,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x000c, 0x1078, 0x5520,
- 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078, 0x5107, 0x20a3,
- 0x0003, 0x20a3, 0x0300, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
- 0x0004, 0x1078, 0x5520, 0x147f, 0x007c, 0x027e, 0x20e1, 0x9080,
- 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e,
- 0x0048, 0x50cc, 0x0d7e, 0xa0e8, 0x7720, 0x2d6c, 0x6810, 0xa085,
- 0x8100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7619, 0x2da6, 0x8d68,
- 0x2da6, 0x0d7f, 0x0078, 0x50d4, 0x20a3, 0x8100, 0x6298, 0x22a2,
- 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0009, 0x20a3, 0x0000,
- 0x0078, 0x4fd7, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818,
- 0xa080, 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x50f9, 0x0d7e,
- 0xa0e8, 0x7720, 0x2d6c, 0x6810, 0xa085, 0x8400, 0x20a2, 0x6814,
- 0x20a2, 0x2069, 0x7619, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078,
- 0x5101, 0x20a3, 0x8400, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230,
- 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, 0x5030, 0x027e,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004,
- 0xa092, 0x007e, 0x0048, 0x5126, 0x0d7e, 0xa0e8, 0x7720, 0x2d6c,
- 0x6810, 0xa085, 0x8500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7619,
- 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x512e, 0x20a3, 0x8500,
- 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1,
- 0x20a3, 0x0000, 0x0078, 0x5030, 0x0c7e, 0x0f7e, 0x2c78, 0x7804,
- 0xa08a, 0x0040, 0x1048, 0x12d5, 0xa08a, 0x0050, 0x10c8, 0x12d5,
- 0x7918, 0x2160, 0x61a0, 0xd1bc, 0x0040, 0x5153, 0x6100, 0xd1f4,
- 0x0040, 0x514f, 0x6114, 0xa18c, 0x00ff, 0x0078, 0x5158, 0x2009,
- 0x0000, 0x0078, 0x5158, 0xa1e0, 0x2303, 0x2c0c, 0xa18c, 0x00ff,
- 0x2061, 0x0100, 0x619a, 0xa082, 0x0040, 0x1079, 0x5162, 0x0f7f,
- 0x0c7f, 0x007c, 0x5174, 0x525c, 0x5204, 0x5384, 0x5172, 0x5172,
- 0x5172, 0x5172, 0x5172, 0x5172, 0x5172, 0x57cd, 0x57de, 0x57ef,
- 0x5800, 0x5172, 0x1078, 0x12d5, 0x0d7e, 0x157e, 0x147e, 0x20a1,
- 0x020b, 0x1078, 0x51c7, 0x7910, 0x2168, 0x6944, 0xa18c, 0x00ff,
- 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x0006,
- 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x5191, 0x20a3, 0x0002, 0x0078,
- 0x519d, 0xd1b4, 0x0040, 0x5198, 0x20a3, 0x0001, 0x0078, 0x519d,
- 0x20a3, 0x0000, 0x2230, 0x0078, 0x519f, 0x6a80, 0x6e7c, 0x20a9,
- 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000, 0x00f0,
- 0x51a3, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014,
- 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0x7852, 0x2003,
- 0x07d0, 0x2001, 0x7851, 0x2003, 0x0009, 0x2001, 0x7857, 0x2003,
- 0x0002, 0x1078, 0x1504, 0x147f, 0x157f, 0x0d7f, 0x007c, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210,
- 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080, 0x0028, 0x2004,
- 0xd0bc, 0x0040, 0x51ed, 0x0d7e, 0xa0e8, 0x7720, 0x2d6c, 0x6810,
- 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7619, 0x2da6,
- 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x51f5, 0x20a3, 0x0600, 0x6198,
- 0x21a2, 0x20a3, 0x0000, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a3,
- 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x5224, 0x7810, 0x2068, 0x6860, 0x20a2,
- 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078, 0x5520, 0x147f,
- 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x5242,
- 0x0d7e, 0xa0e8, 0x7720, 0x2d6c, 0x6810, 0xa085, 0x0500, 0x20a2,
- 0x6814, 0x20a2, 0x2069, 0x7619, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
- 0x0078, 0x524a, 0x20a3, 0x0500, 0x6298, 0x22a2, 0x20a3, 0x0000,
- 0x6230, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x1078, 0x550f,
- 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x534c, 0x7810, 0x2068, 0xa016, 0x22a2,
- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000, 0x00c0,
- 0x5279, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x5281, 0x0078,
- 0x527c, 0xa006, 0x1079, 0x5281, 0x147f, 0x137f, 0x157f, 0x0d7f,
- 0x007c, 0x528b, 0x52ed, 0x52f1, 0x5314, 0x5321, 0x5333, 0x5337,
- 0x5289, 0x1078, 0x12d5, 0x017e, 0x037e, 0x694c, 0xa18c, 0x0003,
- 0xa186, 0x0000, 0x00c0, 0x529e, 0x6b78, 0x23a2, 0x6868, 0x20a2,
- 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x5318, 0xa186, 0x0001,
- 0x00c0, 0x52e8, 0x6b78, 0x23a2, 0x6868, 0x20a2, 0x6864, 0x20a2,
- 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c, 0x20a2, 0x2009, 0x0018,
- 0xa384, 0x0300, 0x0040, 0x52e7, 0xd3c4, 0x0040, 0x52b9, 0x687c,
- 0xa108, 0xd3cc, 0x0040, 0x52be, 0x6874, 0xa108, 0x157e, 0x20a9,
- 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, 0x8000, 0x00f0,
- 0x52c3, 0x157f, 0x22a2, 0x22a2, 0x22a2, 0xa184, 0x0003, 0x0040,
- 0x52e7, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
- 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
- 0x0898, 0x20a2, 0x1078, 0x550f, 0x22a2, 0x20a3, 0x0000, 0x61c2,
- 0x037f, 0x017f, 0x1078, 0x5520, 0x007c, 0x20a3, 0x0008, 0x0078,
- 0x5316, 0x20a3, 0x0302, 0x22a2, 0x22a2, 0x22a2, 0x20a3, 0x0012,
- 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x20a3,
- 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, 0x22a2, 0x22a2,
- 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3,
- 0x0032, 0x1078, 0x5520, 0x007c, 0x20a3, 0x0028, 0x22a2, 0x22a2,
- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x1078, 0x5520,
- 0x007c, 0x20a3, 0x0100, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0020,
- 0x1078, 0x5520, 0x007c, 0x20a3, 0x0008, 0x0078, 0x5316, 0x037e,
- 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001, 0x00c0,
- 0x5345, 0x22a2, 0x037f, 0x0078, 0x5316, 0x20a3, 0x0800, 0x22a2,
- 0x20a2, 0x037f, 0x0078, 0x5318, 0x027e, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x536a,
- 0x0d7e, 0xa0e8, 0x7720, 0x2d6c, 0x6810, 0xa085, 0x0700, 0x20a2,
- 0x6814, 0x20a2, 0x2069, 0x7619, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
- 0x0078, 0x5372, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000,
- 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3, 0x0000, 0x1078, 0x550f,
+ 0x0040, 0x4724, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c,
+ 0xa005, 0x0040, 0x472d, 0x8001, 0x603e, 0x2660, 0x1078, 0x62fd,
+ 0x0c7f, 0x0078, 0x473c, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009,
+ 0x630a, 0x0c7f, 0x0078, 0x46f3, 0x8dff, 0x0040, 0x4746, 0x6837,
+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36ec, 0x1078, 0x52a1,
+ 0x0078, 0x46f3, 0x007f, 0x0078, 0x46e6, 0x781e, 0x781a, 0x0d7f,
+ 0x0c7f, 0x067f, 0x007f, 0x007c, 0x0e7e, 0x0c7e, 0x2071, 0x70b6,
+ 0x7004, 0xa084, 0x0007, 0x0079, 0x475d, 0x4767, 0x476a, 0x4783,
+ 0x479f, 0x47e4, 0x4767, 0x4767, 0x4765, 0x1078, 0x1286, 0x0c7f,
+ 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x4778, 0x7020, 0x8001,
+ 0x7022, 0x600c, 0xa015, 0x0040, 0x477f, 0x7216, 0x600f, 0x0000,
+ 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7216,
+ 0x7212, 0x0078, 0x4778, 0x6018, 0x2060, 0x1078, 0x3414, 0x6000,
+ 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022, 0x0040, 0x4794, 0x6054,
+ 0xa015, 0x0040, 0x479b, 0x721e, 0x7007, 0x0000, 0x7027, 0x0000,
+ 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e, 0x0078, 0x4794, 0x7024,
+ 0xa065, 0x0040, 0x47e1, 0x700c, 0xac06, 0x00c0, 0x47b6, 0x1078,
+ 0x52a1, 0x600c, 0xa015, 0x0040, 0x47b2, 0x720e, 0x600f, 0x0000,
+ 0x0078, 0x47df, 0x720e, 0x720a, 0x0078, 0x47df, 0x7014, 0xac06,
+ 0x00c0, 0x47c9, 0x1078, 0x52a1, 0x600c, 0xa015, 0x0040, 0x47c5,
+ 0x7216, 0x600f, 0x0000, 0x0078, 0x47df, 0x7216, 0x7212, 0x0078,
+ 0x47df, 0x6018, 0x2060, 0x1078, 0x3414, 0x6000, 0xc0dc, 0x6002,
+ 0x1078, 0x52a1, 0x701c, 0xa065, 0x0040, 0x47df, 0x6054, 0xa015,
+ 0x0040, 0x47dd, 0x721e, 0x0078, 0x47df, 0x7218, 0x721e, 0x7027,
+ 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040, 0x47f1,
+ 0x1078, 0x52a1, 0x600c, 0xa015, 0x0040, 0x47f8, 0x720e, 0x600f,
+ 0x0000, 0x1078, 0x53d1, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c,
+ 0x720e, 0x720a, 0x0078, 0x47f1, 0x0d7e, 0x2069, 0x70b6, 0x6830,
+ 0xa084, 0x0003, 0x0079, 0x4804, 0x480a, 0x480c, 0x4832, 0x480a,
+ 0x1078, 0x1286, 0x0d7f, 0x007c, 0x0c7e, 0x6840, 0xa086, 0x0001,
+ 0x0040, 0x4828, 0x683c, 0xa065, 0x0040, 0x481d, 0x600c, 0xa015,
+ 0x0040, 0x4824, 0x6a3a, 0x600f, 0x0000, 0x6833, 0x0000, 0x683f,
+ 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a, 0x6836, 0x0078, 0x481d,
+ 0x6843, 0x0000, 0x6838, 0xa065, 0x0040, 0x481d, 0x6003, 0x0003,
+ 0x0078, 0x481d, 0x0c7e, 0x6843, 0x0000, 0x6847, 0x0000, 0x683c,
+ 0xa065, 0x0040, 0x484a, 0x600c, 0xa015, 0x0040, 0x4846, 0x6a3a,
+ 0x600f, 0x0000, 0x683f, 0x0000, 0x0078, 0x484a, 0x683f, 0x0000,
+ 0x683a, 0x6836, 0x0c7f, 0x0d7f, 0x007c, 0x0d7e, 0x2069, 0x70b6,
+ 0x6804, 0xa084, 0x0007, 0x0079, 0x4855, 0x485f, 0x48ec, 0x48ec,
+ 0x48ec, 0x48ec, 0x48ee, 0x48ec, 0x485d, 0x1078, 0x1286, 0x6820,
+ 0xa005, 0x00c0, 0x4865, 0x0d7f, 0x007c, 0x0c7e, 0x680c, 0xa065,
+ 0x0040, 0x4874, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000, 0x1078,
+ 0x4934, 0x0c7f, 0x0d7f, 0x007c, 0x6814, 0xa065, 0x0040, 0x4882,
+ 0x6807, 0x0001, 0x6826, 0x682b, 0x0000, 0x1078, 0x4934, 0x0c7f,
+ 0x0d7f, 0x007c, 0x0e7e, 0x037e, 0x6a1c, 0xa2f5, 0x0000, 0x0040,
+ 0x48e7, 0x704c, 0xa00d, 0x0040, 0x4891, 0x7088, 0xa005, 0x0040,
+ 0x48a9, 0x7054, 0xa075, 0x0040, 0x489a, 0xa20e, 0x0040, 0x48e7,
+ 0x0078, 0x489f, 0x6818, 0xa20e, 0x0040, 0x48e7, 0x2070, 0x704c,
+ 0xa00d, 0x0040, 0x4891, 0x7088, 0xa005, 0x00c0, 0x4891, 0x2e00,
+ 0x681e, 0x733c, 0x7038, 0xa302, 0x00c8, 0x4891, 0x1078, 0x5570,
+ 0x0040, 0x48e7, 0x8318, 0x733e, 0x6112, 0x2e10, 0x621a, 0xa180,
+ 0x0015, 0x2004, 0xa08a, 0x199a, 0x0048, 0x48c0, 0x2001, 0x1999,
+ 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x0f7e, 0x2c78,
+ 0x71a0, 0xa1e0, 0x21d3, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100,
+ 0x619a, 0x1078, 0x4c4b, 0x7300, 0xc3dd, 0x7302, 0x6807, 0x0002,
+ 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f, 0x0003, 0x7803, 0x0001,
+ 0x7807, 0x0040, 0x0f7f, 0x0e7f, 0x0c7f, 0x0d7f, 0x007c, 0x037f,
+ 0x0e7f, 0x0c7f, 0x0078, 0x48e5, 0x0d7f, 0x007c, 0x0c7e, 0x680c,
+ 0xa065, 0x0040, 0x48fa, 0x6807, 0x0004, 0x6826, 0x682b, 0x0000,
+ 0x1078, 0x4934, 0x0c7f, 0x0d7f, 0x007c, 0x0f7e, 0x0d7e, 0x2069,
+ 0x70b6, 0x6830, 0xa086, 0x0000, 0x00c0, 0x491b, 0x6838, 0xa07d,
+ 0x0040, 0x491b, 0x6833, 0x0001, 0x683e, 0x6847, 0x0000, 0x127e,
+ 0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078, 0x1999, 0x00c0, 0x491e,
+ 0x127f, 0x1078, 0x4e78, 0x0d7f, 0x0f7f, 0x007c, 0x127f, 0x6843,
+ 0x0000, 0x7803, 0x0002, 0x780c, 0xa015, 0x0040, 0x4930, 0x6a3a,
+ 0x780f, 0x0000, 0x6833, 0x0000, 0x683f, 0x0000, 0x0078, 0x491b,
+ 0x683a, 0x6836, 0x0078, 0x492a, 0x601c, 0xa084, 0x0007, 0x1079,
+ 0x493a, 0x007c, 0x4942, 0x4944, 0x4b83, 0x4c1b, 0x4944, 0x4b83,
+ 0x4c1b, 0x4942, 0x1078, 0x1286, 0x157e, 0x137e, 0x147e, 0x0c7e,
+ 0x0f7e, 0x6004, 0xa08a, 0x0030, 0x10c8, 0x1286, 0x6118, 0x2178,
+ 0x79a0, 0xa1f8, 0x21d3, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061,
+ 0x0100, 0x619a, 0x1079, 0x4962, 0x0f7f, 0x0c7f, 0x147f, 0x137f,
+ 0x157f, 0x007c, 0x4994, 0x49cc, 0x49e4, 0x4a1d, 0x4a4a, 0x4a52,
+ 0x4a73, 0x4a84, 0x4a95, 0x4a9d, 0x4aae, 0x4a9d, 0x4af6, 0x4a84,
+ 0x4b17, 0x4b1f, 0x4a95, 0x4b1f, 0x4b30, 0x4992, 0x4992, 0x4992,
+ 0x4992, 0x4992, 0x4992, 0x4992, 0x4992, 0x4992, 0x4992, 0x4992,
+ 0x4992, 0x5018, 0x502d, 0x4992, 0x4992, 0x4992, 0x4992, 0x4a73,
+ 0x4a9d, 0x4992, 0x49e4, 0x4a1d, 0x4992, 0x54eb, 0x4a9d, 0x4992,
+ 0x550e, 0x4a9d, 0x1078, 0x1286, 0x20a1, 0x020b, 0x1078, 0x4b45,
+ 0x20a3, 0x5200, 0x20a3, 0x0000, 0x0d7e, 0x2069, 0x6f51, 0x6804,
+ 0xd084, 0x0040, 0x49ae, 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078,
+ 0x1fb7, 0x21a2, 0x017f, 0x0d7f, 0x0078, 0x49b3, 0x0d7f, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x6f05, 0x53a6,
+ 0x20a9, 0x0004, 0x2099, 0x6f01, 0x53a6, 0x20a3, 0x0000, 0x6030,
+ 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
+ 0x001c, 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4b45,
+ 0x20a3, 0x0500, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6030, 0xa084,
+ 0x00ff, 0x20a2, 0x20a9, 0x0004, 0x2099, 0x6f05, 0x53a6, 0x60c3,
+ 0x0010, 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4b45,
+ 0x20a3, 0x0300, 0x20a3, 0x0000, 0x2099, 0x70a0, 0x20a9, 0x0008,
+ 0x53a6, 0x20a9, 0x0004, 0x2099, 0x6f05, 0x53a6, 0x20a9, 0x0004,
+ 0x2099, 0x6f01, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0,
+ 0x49fd, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4a03, 0x2099,
+ 0x70a8, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000,
+ 0x00f0, 0x4a0e, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x4a14,
+ 0x60c3, 0x0074, 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078,
+ 0x4b45, 0x20a3, 0x2010, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3,
+ 0x2000, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e,
+ 0x2079, 0x6f51, 0x7904, 0x0f7f, 0xd1ac, 0x00c0, 0x4a39, 0xa085,
+ 0x0020, 0xd1a4, 0x0040, 0x4a3e, 0xa085, 0x0010, 0xa085, 0x0002,
+ 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078,
+ 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4b45, 0x20a3, 0x5000,
+ 0x0078, 0x49ea, 0x20a1, 0x020b, 0x1078, 0x4b45, 0x20a3, 0x2110,
+ 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
+ 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4b64, 0x20a3,
+ 0x0200, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
+ 0x0004, 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078, 0x4b64,
+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00,
+ 0x60c3, 0x0008, 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b, 0x1078,
+ 0x4b64, 0x20a3, 0x0200, 0x0078, 0x49ea, 0x20a1, 0x020b, 0x1078,
+ 0x4b64, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x7810,
+ 0x20a2, 0x60c3, 0x0008, 0x1078, 0x4f31, 0x007c, 0x0d7e, 0x20a1,
+ 0x020b, 0x1078, 0x4b64, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3,
+ 0x0800, 0x7818, 0x2068, 0x6894, 0xa086, 0x0014, 0x00c0, 0x4ad4,
+ 0x6998, 0xa184, 0xc000, 0x00c0, 0x4ad0, 0xd1ec, 0x0040, 0x4acc,
+ 0x20a3, 0x2100, 0x0078, 0x4ad6, 0x20a3, 0x0100, 0x0078, 0x4ad6,
+ 0x20a3, 0x0400, 0x0078, 0x4ad6, 0x20a3, 0x0700, 0xa006, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x6f51, 0x7904,
+ 0x0f7f, 0xd1ac, 0x00c0, 0x4ae6, 0xa085, 0x0020, 0xd1a4, 0x0040,
+ 0x4aeb, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a2, 0x20a2,
+ 0x60c3, 0x0014, 0x1078, 0x4f31, 0x0d7f, 0x007c, 0x20a1, 0x020b,
+ 0x1078, 0x4b64, 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000,
+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x4f31, 0x007c, 0x20a1,
+ 0x020b, 0x1078, 0x4b64, 0x20a3, 0x0200, 0x0078, 0x499a, 0x20a1,
+ 0x020b, 0x1078, 0x4b64, 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3,
+ 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x1078, 0x4f31, 0x007c,
+ 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a1, 0x020b, 0x1078, 0x4b64,
+ 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000,
+ 0x60c3, 0x0008, 0x1078, 0x4f31, 0x007c, 0x027e, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x20a3, 0x2200, 0x6298, 0x22a2, 0x20a3, 0x0000,
+ 0x6230, 0x22a2, 0x20a3, 0x0129, 0x20a3, 0x0000, 0x1078, 0x4f20,
+ 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x027f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1,
+ 0x4000, 0x20a3, 0x2300, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230,
+ 0x22a2, 0x20a3, 0x0198, 0x20a3, 0x0000, 0x1078, 0x4f20, 0x22a2,
+ 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x027f, 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085,
+ 0x1048, 0x1286, 0xa08a, 0x008c, 0x10c8, 0x1286, 0x6118, 0x2178,
+ 0x79a0, 0xa1f8, 0x21d3, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061,
+ 0x0100, 0x619a, 0xa082, 0x0085, 0x1079, 0x4ba1, 0x0f7f, 0x0c7f,
+ 0x007c, 0x4baa, 0x4bb5, 0x4bcf, 0x4ba8, 0x4ba8, 0x4ba8, 0x4baa,
+ 0x1078, 0x1286, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4be2, 0x60c3,
+ 0x0000, 0x1078, 0x4f31, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b,
+ 0x1078, 0x4bf5, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2,
+ 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x000c, 0x1078, 0x4f31, 0x147f, 0x007c, 0x147e,
+ 0x20a1, 0x020b, 0x1078, 0x4c08, 0x20a3, 0x0003, 0x20a3, 0x0300,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x4f31,
+ 0x147f, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3,
+ 0x8100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
+ 0x0009, 0x20a3, 0x0000, 0x0078, 0x4b56, 0x027e, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x20a3, 0x8400, 0x6298, 0x22a2, 0x20a3, 0x0000,
+ 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, 0x4b75,
+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x8500, 0x6298,
+ 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3,
+ 0x0000, 0x0078, 0x4b75, 0x0c7e, 0x0f7e, 0x2c78, 0x7804, 0xa08a,
+ 0x0040, 0x1048, 0x1286, 0xa08a, 0x0050, 0x10c8, 0x1286, 0x7918,
+ 0x2160, 0x61a0, 0xa1e0, 0x21d3, 0x2c0c, 0xa18c, 0x00ff, 0x2061,
+ 0x0100, 0x619a, 0xa082, 0x0040, 0x1079, 0x4c39, 0x0f7f, 0x0c7f,
+ 0x007c, 0x4c4b, 0x4cfd, 0x4cbe, 0x4e0c, 0x4c49, 0x4c49, 0x4c49,
+ 0x4c49, 0x4c49, 0x4c49, 0x4c49, 0x51ba, 0x51cb, 0x51dc, 0x51ed,
+ 0x4c49, 0x1078, 0x1286, 0x0d7e, 0x157e, 0x147e, 0x20a1, 0x020b,
+ 0x1078, 0x4c9e, 0x7910, 0x2168, 0x6944, 0xa18c, 0x00ff, 0x21a2,
+ 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c, 0xa184, 0x0006, 0x8004,
+ 0x20a2, 0xd1ac, 0x0040, 0x4c68, 0x20a3, 0x0002, 0x0078, 0x4c74,
+ 0xd1b4, 0x0040, 0x4c6f, 0x20a3, 0x0001, 0x0078, 0x4c74, 0x20a3,
+ 0x0000, 0x2230, 0x0078, 0x4c76, 0x6a80, 0x6e7c, 0x20a9, 0x0008,
+ 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2, 0x8000, 0x00f0, 0x4c7a,
+ 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1, 0x9080, 0x6014, 0xa084,
+ 0x0004, 0xa085, 0x0009, 0x6016, 0x2001, 0x70d2, 0x2003, 0x07d0,
+ 0x2001, 0x70d1, 0x2003, 0x0009, 0x2001, 0x70d7, 0x2003, 0x0002,
+ 0x1078, 0x14b5, 0x147f, 0x157f, 0x0d7f, 0x007c, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294,
+ 0x00ff, 0x2202, 0x8217, 0xa006, 0x20a3, 0x0600, 0x6198, 0x21a2,
+ 0x20a2, 0x6130, 0x21a2, 0x20a3, 0x0829, 0x20a2, 0x22a2, 0x20a2,
+ 0x2fa2, 0x20a3, 0xffff, 0x20a2, 0x20a2, 0x007c, 0x0d7e, 0x157e,
+ 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4cde, 0x7810, 0x2068,
+ 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2,
+ 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078,
+ 0x4f31, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1,
+ 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0500, 0x6298, 0x22a2, 0x20a3,
+ 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000, 0x1078,
+ 0x4f20, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3,
+ 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e,
+ 0x147e, 0x20a1, 0x020b, 0x1078, 0x4ded, 0x7810, 0x2068, 0xa016,
+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084, 0xf000,
+ 0x00c0, 0x4d1a, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x4d22,
+ 0x0078, 0x4d1d, 0xa006, 0x1079, 0x4d22, 0x147f, 0x137f, 0x157f,
+ 0x0d7f, 0x007c, 0x4d2c, 0x4d8e, 0x4d92, 0x4db5, 0x4dc2, 0x4dd4,
+ 0x4dd8, 0x4d2a, 0x1078, 0x1286, 0x017e, 0x037e, 0x694c, 0xa18c,
+ 0x0003, 0xa186, 0x0000, 0x00c0, 0x4d3f, 0x6b78, 0x23a2, 0x6868,
+ 0x20a2, 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x4db9, 0xa186,
+ 0x0001, 0x00c0, 0x4d89, 0x6b78, 0x23a2, 0x6868, 0x20a2, 0x6864,
+ 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c, 0x20a2, 0x2009,
+ 0x0018, 0xa384, 0x0300, 0x0040, 0x4d88, 0xd3c4, 0x0040, 0x4d5a,
+ 0x687c, 0xa108, 0xd3cc, 0x0040, 0x4d5f, 0x6874, 0xa108, 0x157e,
+ 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2, 0x8000,
+ 0x00f0, 0x4d64, 0x157f, 0x22a2, 0x22a2, 0x22a2, 0xa184, 0x0003,
+ 0x0040, 0x4d88, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1, 0x4000,
+ 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
+ 0x20a3, 0x0898, 0x20a2, 0x1078, 0x4f20, 0x22a2, 0x20a3, 0x0000,
+ 0x61c2, 0x037f, 0x017f, 0x1078, 0x4f31, 0x007c, 0x20a3, 0x0008,
+ 0x0078, 0x4db7, 0x20a3, 0x0302, 0x22a2, 0x22a2, 0x22a2, 0x20a3,
+ 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
+ 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a, 0x22a2,
+ 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
+ 0x60c3, 0x0032, 0x1078, 0x4f31, 0x007c, 0x20a3, 0x0028, 0x22a2,
+ 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018, 0x1078,
+ 0x4f31, 0x007c, 0x20a3, 0x0100, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
+ 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3,
+ 0x0020, 0x1078, 0x4f31, 0x007c, 0x20a3, 0x0008, 0x0078, 0x4db7,
+ 0x037e, 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff, 0x8001,
+ 0x00c0, 0x4de6, 0x22a2, 0x037f, 0x0078, 0x4db7, 0x20a3, 0x0800,
+ 0x22a2, 0x20a2, 0x037f, 0x0078, 0x4db9, 0x027e, 0x20e1, 0x9080,
+ 0x20e1, 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000,
+ 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3, 0x0000, 0x1078, 0x4f20,
0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000,
0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e, 0x137e, 0x147e,
- 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x5397,
- 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x539f,
- 0x539f, 0x53a1, 0x539f, 0x539f, 0x539f, 0x53c6, 0x539f, 0x1078,
- 0x12d5, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912, 0x20a1,
- 0x020b, 0x2009, 0x0003, 0x1078, 0x53d0, 0x0d7e, 0x2069, 0x7651,
- 0x6804, 0xd0bc, 0x0040, 0x53bb, 0x682c, 0xa084, 0x00ff, 0x8007,
- 0x20a2, 0x0078, 0x53bd, 0x20a3, 0x3f00, 0x0d7f, 0x22a2, 0x22a2,
- 0x22a2, 0x60c3, 0x0001, 0x1078, 0x5520, 0x007c, 0x20a1, 0x020b,
- 0x2009, 0x0003, 0x1078, 0x53d0, 0x20a3, 0x7f00, 0x0078, 0x53be,
- 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028,
- 0x2004, 0xd0bc, 0x0040, 0x53ee, 0x0d7e, 0xa0e8, 0x7720, 0x2d6c,
- 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7619,
- 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x53f6, 0x20a3, 0x0100,
- 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0888,
- 0xa18d, 0x0008, 0x21a2, 0x1078, 0x550f, 0x22a2, 0x20a3, 0x0000,
- 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
- 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x057e, 0x047e, 0x037e, 0x2061,
- 0x0100, 0x2071, 0x7600, 0x6130, 0x7818, 0x2068, 0x68a0, 0x2028,
- 0xd0bc, 0x00c0, 0x5422, 0xa080, 0x2303, 0x2014, 0xa294, 0x00ff,
- 0x0078, 0x5426, 0x6910, 0x6a14, 0x7364, 0x7468, 0x781c, 0xa086,
- 0x0006, 0x0040, 0x547a, 0xd5bc, 0x0040, 0x5436, 0xa185, 0x0100,
- 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x543c, 0x6063, 0x0100,
- 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0809, 0x6077, 0x0008,
- 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f,
- 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014,
- 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c,
- 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582,
- 0x0080, 0x0048, 0x546e, 0x6a00, 0xd2f4, 0x0040, 0x546c, 0x6a14,
- 0xa294, 0x00ff, 0x0078, 0x546e, 0x2011, 0x0000, 0x629e, 0x6017,
- 0x0016, 0x1078, 0x45a2, 0x037f, 0x047f, 0x057f, 0x0c7f, 0x0d7f,
- 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c, 0xa084, 0x0003, 0xa086,
- 0x0002, 0x0040, 0x54c9, 0xd5bc, 0x0040, 0x548e, 0xa185, 0x0100,
- 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x5494, 0x6063, 0x0100,
- 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0880, 0x6077, 0x0008,
- 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f,
- 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7060, 0x608a, 0x705c,
- 0x608e, 0x7080, 0x60c6, 0x707c, 0x60ca, 0x686c, 0x60ce, 0x60ab,
- 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048,
- 0x54c4, 0x6a00, 0xd2f4, 0x0040, 0x54c2, 0x6a14, 0xa294, 0x00ff,
- 0x0078, 0x54c4, 0x2011, 0x0000, 0x629e, 0x6017, 0x0012, 0x0078,
- 0x5471, 0xd5bc, 0x0040, 0x54d4, 0xa185, 0x0700, 0x20a2, 0x6266,
- 0x636a, 0x646e, 0x0078, 0x54da, 0x6063, 0x0700, 0x6266, 0x606b,
+ 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079, 0x4e1f,
+ 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x4e27,
+ 0x4e27, 0x4e29, 0x4e27, 0x4e27, 0x4e27, 0x4e4e, 0x4e27, 0x1078,
+ 0x1286, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600, 0x7912, 0x20a1,
+ 0x020b, 0x2009, 0x0003, 0x1078, 0x4e58, 0x0d7e, 0x2069, 0x6f51,
+ 0x6804, 0xd0bc, 0x0040, 0x4e43, 0x682c, 0xa084, 0x00ff, 0x8007,
+ 0x20a2, 0x0078, 0x4e45, 0x20a3, 0x3f00, 0x0d7f, 0x22a2, 0x22a2,
+ 0x22a2, 0x60c3, 0x0001, 0x1078, 0x4f31, 0x007c, 0x20a1, 0x020b,
+ 0x2009, 0x0003, 0x1078, 0x4e58, 0x20a3, 0x7f00, 0x0078, 0x4e46,
+ 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x0100, 0x6298,
+ 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0888, 0xa18d,
+ 0x0008, 0x21a2, 0x1078, 0x4f20, 0x22a2, 0x20a3, 0x0000, 0x7a08,
+ 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c,
+ 0x0e7e, 0x0d7e, 0x0c7e, 0x2061, 0x0100, 0x2071, 0x6f00, 0x6130,
+ 0x7818, 0x2068, 0x68a0, 0xa080, 0x21d3, 0x2014, 0xa294, 0x00ff,
+ 0x781c, 0xa086, 0x0006, 0x0040, 0x4ebf, 0x6063, 0x0100, 0x6266,
+ 0x606b, 0x0000, 0x616e, 0x6073, 0x0809, 0x6077, 0x0008, 0x688c,
+ 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000,
+ 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810, 0x2070, 0x7014, 0x608a,
+ 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce,
+ 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x629e, 0x6017,
+ 0x0016, 0x1078, 0x41d5, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x7810,
+ 0x2070, 0x704c, 0xa084, 0x0003, 0xa086, 0x0002, 0x0040, 0x4ef4,
+ 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0880,
+ 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007,
+ 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7060,
+ 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c, 0x60ca, 0x686c,
+ 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0x629e,
+ 0x6017, 0x0012, 0x0078, 0x4eb9, 0x6063, 0x0700, 0x6266, 0x606b,
0x0000, 0x616e, 0x6073, 0x0898, 0x6077, 0x0000, 0x688c, 0x8000,
0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f, 0x0000, 0x2f00,
0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c,
0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af,
- 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048, 0x550a, 0x6a00,
- 0xd2f4, 0x0040, 0x5508, 0x6a14, 0xa294, 0x00ff, 0x0078, 0x550a,
- 0x2011, 0x0000, 0x629e, 0x6017, 0x0016, 0x0078, 0x5471, 0x7a18,
- 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217,
- 0x007c, 0x0d7e, 0x2069, 0x7836, 0x6843, 0x0001, 0x0d7f, 0x007c,
- 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078, 0x552b,
- 0x1078, 0x4592, 0x007c, 0x007e, 0x6014, 0xa084, 0x0004, 0xa085,
- 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, 0x0c7e, 0x2061, 0x0100,
- 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016, 0x0c7f, 0x007f,
- 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, 0x1078, 0x459d, 0x2061,
- 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x557e,
- 0x1078, 0x5534, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e, 0x2061,
- 0x7836, 0x6128, 0xa192, 0x0002, 0x00c8, 0x556b, 0x8108, 0x612a,
- 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x5579, 0x1078, 0x4592, 0x1078,
- 0x552b, 0x0078, 0x5579, 0x6124, 0xa1e5, 0x0000, 0x0040, 0x5576,
- 0x1078, 0x7572, 0x2009, 0x0014, 0x1078, 0x5bdb, 0x0c7f, 0x0078,
- 0x5579, 0x027f, 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x1078, 0x3535,
- 0x0078, 0x5579, 0x0c7e, 0x0d7e, 0x0e7e, 0x017e, 0x027e, 0x1078,
- 0x45ab, 0x2071, 0x7836, 0x713c, 0x81ff, 0x0040, 0x55ac, 0x2061,
- 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040, 0x55b2,
- 0x6803, 0x1000, 0x6803, 0x0000, 0x037e, 0x2019, 0x0001, 0x1078,
- 0x571a, 0x037f, 0x713c, 0x2160, 0x1078, 0x7572, 0x2009, 0x004a,
- 0x1078, 0x5bdb, 0x0078, 0x55ac, 0x027f, 0x017f, 0x0e7f, 0x0d7f,
- 0x0c7f, 0x007c, 0x7144, 0xa192, 0x0002, 0x00c8, 0x559c, 0x8108,
- 0x7146, 0x1078, 0x45a2, 0x0078, 0x55ac, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091, 0x8000, 0x6018,
- 0x2068, 0x6ca0, 0x2071, 0x7836, 0x7018, 0x2068, 0x8dff, 0x0040,
- 0x55e9, 0x68a0, 0xa406, 0x0040, 0x55d9, 0x6854, 0x2068, 0x0078,
- 0x55ce, 0x6010, 0x2060, 0x643c, 0x6540, 0x6644, 0xa6b4, 0x000f,
- 0x2d60, 0x1078, 0x38ab, 0x0040, 0x55e9, 0x1078, 0x58b4, 0xa085,
- 0x0001, 0x127f, 0x007f, 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f,
- 0x0e7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4f8e,
- 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2,
- 0x60c3, 0x0008, 0x1078, 0x5520, 0x147f, 0x157f, 0x007c, 0x157e,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x5005, 0x20a3, 0x0200, 0x20a3,
- 0x0000, 0x20a9, 0x0006, 0x2011, 0x7640, 0x2019, 0x7641, 0x23a6,
- 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0, 0x5617, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, 0x5520, 0x147f,
- 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b,
- 0x1078, 0x4fe5, 0x1078, 0x4ffc, 0x7810, 0x007e, 0xa080, 0x0015,
- 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004,
- 0x8003, 0x60c2, 0x007f, 0xa080, 0x0001, 0x2004, 0x7812, 0x1078,
- 0x5520, 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x4f8e, 0x20a3, 0x6200, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x5520,
- 0x147f, 0x157f, 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x2071, 0x7836, 0x700c, 0x2060, 0x8cff, 0x0040, 0x567f,
- 0x1078, 0x6a79, 0x00c0, 0x5676, 0x1078, 0x5e09, 0x600c, 0x007e,
- 0x1078, 0x5bb4, 0x1078, 0x58b4, 0x0c7f, 0x0078, 0x566d, 0x700f,
- 0x0000, 0x700b, 0x0000, 0x127f, 0x007f, 0x0c7f, 0x0e7f, 0x007c,
- 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e,
- 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071,
- 0x7836, 0x7024, 0x2060, 0x8cff, 0x0040, 0x56d8, 0x1078, 0x5534,
- 0x68c3, 0x0000, 0x1078, 0x459d, 0x2009, 0x0013, 0x1078, 0x5bdb,
- 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x56bb, 0x6827, 0x0004,
- 0x7804, 0xa084, 0x4000, 0x0040, 0x56cd, 0x7803, 0x1000, 0x7803,
- 0x0000, 0x0078, 0x56cd, 0xd084, 0x0040, 0x56c2, 0x6827, 0x0001,
- 0x0078, 0x56c4, 0x00f0, 0x56aa, 0x7804, 0xa084, 0x1000, 0x0040,
- 0x56cd, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f,
- 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
- 0x2001, 0x7600, 0x2004, 0xa096, 0x0001, 0x0040, 0x5710, 0xa096,
- 0x0004, 0x0040, 0x5710, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011,
- 0x34fc, 0x1078, 0x4520, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040,
- 0x56fe, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5710,
- 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x5710, 0xd084, 0x0040,
- 0x5705, 0x6827, 0x0001, 0x0078, 0x5707, 0x00f0, 0x56ed, 0x7804,
- 0xa084, 0x1000, 0x0040, 0x5710, 0x7803, 0x0100, 0x7803, 0x0000,
- 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f,
- 0x127f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079,
- 0x0140, 0x2071, 0x7836, 0x703c, 0x2060, 0x8cff, 0x0040, 0x5768,
- 0x6817, 0x0010, 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078, 0x45ab,
- 0x1078, 0x1bf1, 0xa39d, 0x0000, 0x00c0, 0x5742, 0x2009, 0x0049,
- 0x1078, 0x5bdb, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x5755,
- 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5767, 0x7803,
- 0x1000, 0x7803, 0x0000, 0x0078, 0x5767, 0xd094, 0x0040, 0x575c,
- 0x6827, 0x0002, 0x0078, 0x575e, 0x00f0, 0x5744, 0x7804, 0xa084,
- 0x1000, 0x0040, 0x5767, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824,
- 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f,
- 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0x7836,
- 0x6a06, 0x127f, 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000,
- 0x2069, 0x7836, 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e,
- 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2071, 0x7836, 0x7614, 0x2660,
- 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x57c6, 0x601c, 0xa206,
- 0x00c0, 0x57c1, 0x7014, 0xac36, 0x00c0, 0x57a0, 0x660c, 0x7616,
- 0x7010, 0xac36, 0x00c0, 0x57ae, 0x2c00, 0xaf36, 0x0040, 0x57ac,
- 0x2f00, 0x7012, 0x0078, 0x57ae, 0x7013, 0x0000, 0x660c, 0x067e,
- 0x2c00, 0xaf06, 0x0040, 0x57b7, 0x7e0e, 0x0078, 0x57b8, 0x2678,
- 0x600f, 0x0000, 0x1078, 0x6a4c, 0x1078, 0x58b4, 0x0c7f, 0x0078,
- 0x5793, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5793, 0x127f, 0x007f,
- 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1,
- 0x020b, 0x1078, 0x51c7, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2,
- 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0078, 0x580f, 0x157e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x51c7, 0x7810, 0x20a2, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x580f, 0x157e,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x51c7, 0x7810, 0x20a2, 0xa006,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x580f,
- 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x51c7, 0x7810, 0x20a2,
- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078,
- 0x58bf, 0x60c3, 0x0020, 0x1078, 0x5520, 0x147f, 0x157f, 0x007c,
- 0x127e, 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4,
- 0x00c0, 0x5827, 0xd1bc, 0x00c0, 0x5871, 0x0078, 0x58b1, 0x2009,
- 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140,
- 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040,
- 0x5868, 0x6020, 0xd0b4, 0x0040, 0x5868, 0x6024, 0xd094, 0x00c0,
- 0x5868, 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x5868,
- 0x00f0, 0x5834, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130,
- 0xa18c, 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91,
- 0x6043, 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094,
- 0x00c0, 0x5867, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x585e, 0x027f,
- 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078,
- 0x58b1, 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e,
- 0x2069, 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084,
- 0x4000, 0x0040, 0x58aa, 0x6020, 0xd0bc, 0x0040, 0x58aa, 0x2104,
- 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x58aa, 0x00f0, 0x587e,
- 0x027e, 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff,
- 0xa10d, 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001,
- 0x6043, 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0,
- 0x58a4, 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b,
- 0x0000, 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0x7836, 0x7020,
- 0xa005, 0x0040, 0x58bd, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9,
- 0x0008, 0x20a2, 0x00f0, 0x58c1, 0x20a2, 0x20a2, 0x007c, 0x0f7e,
- 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x2071, 0x7836, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001,
- 0x87ff, 0x0040, 0x5957, 0x8cff, 0x0040, 0x5957, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x5952, 0x88ff, 0x0040, 0x58ee, 0x2800, 0xac06,
- 0x00c0, 0x5952, 0x2039, 0x0000, 0x0078, 0x58f2, 0x6018, 0xa206,
- 0x00c0, 0x5952, 0x7024, 0xac06, 0x00c0, 0x5920, 0x2069, 0x0100,
- 0x68c0, 0xa005, 0x0040, 0x591b, 0x6817, 0x0008, 0x68c3, 0x0000,
- 0x1078, 0x59e4, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
- 0xa384, 0x1000, 0x0040, 0x5910, 0x6803, 0x0100, 0x6803, 0x0000,
- 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5918, 0x6827, 0x0001,
- 0x037f, 0x0078, 0x5920, 0x6003, 0x0009, 0x630a, 0x0078, 0x5952,
- 0x7014, 0xac36, 0x00c0, 0x5926, 0x660c, 0x7616, 0x7010, 0xac36,
- 0x00c0, 0x5934, 0x2c00, 0xaf36, 0x0040, 0x5932, 0x2f00, 0x7012,
- 0x0078, 0x5934, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
- 0x0040, 0x593d, 0x7e0e, 0x0078, 0x593e, 0x2678, 0x600f, 0x0000,
- 0x6010, 0x2068, 0x1078, 0x68e3, 0x0040, 0x5948, 0x1078, 0x74a8,
- 0x1078, 0x6a4c, 0x1078, 0x58b4, 0x88ff, 0x00c0, 0x5961, 0x0c7f,
- 0x0078, 0x58d8, 0x2c78, 0x600c, 0x2060, 0x0078, 0x58d8, 0xa006,
- 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x5958,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x7836, 0x7638, 0x2660, 0x2678, 0x8cff,
- 0x0040, 0x59d3, 0x601c, 0xa086, 0x0006, 0x00c0, 0x59ce, 0x88ff,
- 0x0040, 0x5988, 0x2800, 0xac06, 0x00c0, 0x59ce, 0x0078, 0x598c,
- 0x6018, 0xa206, 0x00c0, 0x59ce, 0x703c, 0xac06, 0x00c0, 0x599e,
- 0x037e, 0x2019, 0x0001, 0x1078, 0x571a, 0x7033, 0x0000, 0x703f,
- 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x037f, 0x7038, 0xac36,
- 0x00c0, 0x59a4, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x59b2,
- 0x2c00, 0xaf36, 0x0040, 0x59b0, 0x2f00, 0x7036, 0x0078, 0x59b2,
- 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x59bb,
- 0x7e0e, 0x0078, 0x59bc, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068,
- 0x1078, 0x68e3, 0x0040, 0x59c6, 0x1078, 0x74a8, 0x1078, 0x6a4c,
- 0x88ff, 0x00c0, 0x59dd, 0x0c7f, 0x0078, 0x5977, 0x2c78, 0x600c,
- 0x2060, 0x0078, 0x5977, 0xa006, 0x127f, 0x007f, 0x027f, 0x067f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f,
- 0xa8c5, 0x0001, 0x0078, 0x59d4, 0x0e7e, 0x2071, 0x7836, 0x2001,
- 0x7600, 0x2004, 0xa086, 0x0002, 0x00c0, 0x59f2, 0x7007, 0x0005,
- 0x0078, 0x59f4, 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e, 0x0e7e,
+ 0x95d5, 0x60d7, 0x0000, 0x629e, 0x6017, 0x0016, 0x0078, 0x4eb9,
+ 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202,
+ 0x8217, 0x007c, 0x0d7e, 0x2069, 0x70b6, 0x6843, 0x0001, 0x0d7f,
+ 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575, 0x1078,
+ 0x4f3c, 0x1078, 0x41c5, 0x007c, 0x007e, 0x6014, 0xa084, 0x0004,
+ 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, 0x0c7e, 0x2061,
+ 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016, 0x0c7f,
+ 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, 0x1078, 0x41d0,
+ 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000, 0x0040,
+ 0x4f9a, 0x1078, 0x4f45, 0x6803, 0x1000, 0x6803, 0x0000, 0x0c7e,
+ 0x2061, 0x70b6, 0x6128, 0xa192, 0x0002, 0x00c8, 0x4f87, 0x8108,
+ 0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x4f95, 0x1078, 0x41c5,
+ 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0, 0x4f83, 0x6017,
+ 0x0012, 0x0078, 0x4f95, 0x1078, 0x4f3c, 0x0078, 0x4f95, 0x6124,
+ 0xa1e5, 0x0000, 0x0040, 0x4f92, 0x1078, 0x6e16, 0x2009, 0x0014,
+ 0x1078, 0x55c8, 0x0c7f, 0x0078, 0x4f95, 0x027f, 0x017f, 0x0d7f,
+ 0x0c7f, 0x007c, 0x1078, 0x31f5, 0x0078, 0x4f95, 0x0c7e, 0x0d7e,
+ 0x0e7e, 0x017e, 0x027e, 0x1078, 0x41de, 0x2071, 0x70b6, 0x713c,
+ 0x81ff, 0x0040, 0x4fd9, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904,
+ 0x017e, 0x017f, 0xa194, 0x4000, 0x0040, 0x4fdf, 0x6017, 0x0010,
+ 0x7144, 0xa192, 0x0002, 0x00c8, 0x4fd1, 0x8108, 0x7146, 0x1078,
+ 0x41d5, 0x713c, 0xa188, 0x0007, 0x210c, 0xa18e, 0x0006, 0x00c0,
+ 0x4fcd, 0x6017, 0x0012, 0x0078, 0x4fd9, 0x6017, 0x0016, 0x0078,
+ 0x4fd9, 0x1078, 0x6e16, 0x2009, 0x004a, 0x1078, 0x55c8, 0x0078,
+ 0x4fd9, 0x027f, 0x017f, 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x1078,
+ 0x41d5, 0x0078, 0x4fd9, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x057e,
+ 0x047e, 0x007e, 0x127e, 0x2091, 0x8000, 0x6018, 0x2068, 0x6ca0,
+ 0x2071, 0x70b6, 0x7018, 0x2068, 0x8dff, 0x0040, 0x500f, 0x68a0,
+ 0xa406, 0x0040, 0x4fff, 0x6854, 0x2068, 0x0078, 0x4ff4, 0x6010,
+ 0x2060, 0x643c, 0x6540, 0x6644, 0xa6b4, 0x000f, 0x2d60, 0x1078,
+ 0x356b, 0x0040, 0x500f, 0x1078, 0x52a1, 0xa085, 0x0001, 0x127f,
+ 0x007f, 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c,
+ 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4b45, 0x20a3, 0x0f00,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008,
+ 0x1078, 0x4f31, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e, 0x20a1,
+ 0x020b, 0x1078, 0x4b64, 0x20a3, 0x0200, 0x20a3, 0x0000, 0x20a9,
+ 0x0006, 0x2011, 0x6f40, 0x2019, 0x6f41, 0x23a6, 0x22a6, 0xa398,
+ 0x0002, 0xa290, 0x0002, 0x00f0, 0x503d, 0x20a3, 0x0000, 0x20a3,
+ 0x0000, 0x60c3, 0x001c, 0x1078, 0x4f31, 0x147f, 0x157f, 0x007c,
+ 0x0e7e, 0x0c7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x70b6,
+ 0x700c, 0x2060, 0x8cff, 0x0040, 0x506c, 0x1078, 0x632a, 0x00c0,
+ 0x5063, 0x1078, 0x579c, 0x600c, 0x007e, 0x1078, 0x55a1, 0x1078,
+ 0x52a1, 0x0c7f, 0x0078, 0x505a, 0x700f, 0x0000, 0x700b, 0x0000,
+ 0x127f, 0x007f, 0x0c7f, 0x0e7f, 0x007c, 0x127e, 0x157e, 0x0f7e,
+ 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e, 0x007e, 0x2091, 0x8000,
+ 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x70b6, 0x7024, 0x2060,
+ 0x8cff, 0x0040, 0x50c5, 0x1078, 0x4f45, 0x68c3, 0x0000, 0x1078,
+ 0x41d0, 0x2009, 0x0013, 0x1078, 0x55c8, 0x20a9, 0x01f4, 0x6824,
+ 0xd094, 0x0040, 0x50a8, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000,
+ 0x0040, 0x50ba, 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x50ba,
+ 0xd084, 0x0040, 0x50af, 0x6827, 0x0001, 0x0078, 0x50b1, 0x00f0,
+ 0x5097, 0x7804, 0xa084, 0x1000, 0x0040, 0x50ba, 0x7803, 0x0100,
+ 0x7803, 0x0000, 0x6824, 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f,
+ 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, 0x2001, 0x6f00, 0x2004,
+ 0xa096, 0x0001, 0x0040, 0x50fd, 0xa096, 0x0004, 0x0040, 0x50fd,
+ 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011, 0x31bc, 0x1078, 0x4153,
+ 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x50eb, 0x6827, 0x0004,
+ 0x7804, 0xa084, 0x4000, 0x0040, 0x50fd, 0x7803, 0x1000, 0x7803,
+ 0x0000, 0x0078, 0x50fd, 0xd084, 0x0040, 0x50f2, 0x6827, 0x0001,
+ 0x0078, 0x50f4, 0x00f0, 0x50da, 0x7804, 0xa084, 0x1000, 0x0040,
+ 0x50fd, 0x7803, 0x0100, 0x7803, 0x0000, 0x007f, 0x017f, 0x027f,
+ 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, 0x127e,
+ 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e, 0x007e,
+ 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071, 0x70b6,
+ 0x703c, 0x2060, 0x8cff, 0x0040, 0x5155, 0x6817, 0x0010, 0x68cb,
+ 0x0000, 0x68c7, 0x0000, 0x1078, 0x41de, 0x1078, 0x1b66, 0xa39d,
+ 0x0000, 0x00c0, 0x512f, 0x2009, 0x0049, 0x1078, 0x55c8, 0x20a9,
+ 0x03e8, 0x6824, 0xd094, 0x0040, 0x5142, 0x6827, 0x0004, 0x7804,
+ 0xa084, 0x4000, 0x0040, 0x5154, 0x7803, 0x1000, 0x7803, 0x0000,
+ 0x0078, 0x5154, 0xd094, 0x0040, 0x5149, 0x6827, 0x0002, 0x0078,
+ 0x514b, 0x00f0, 0x5131, 0x7804, 0xa084, 0x1000, 0x0040, 0x5154,
+ 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f, 0x027f,
+ 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c, 0x0d7e,
+ 0x127e, 0x2091, 0x8000, 0x2069, 0x70b6, 0x6a06, 0x127f, 0x0d7f,
+ 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0x70b6, 0x6a32,
+ 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, 0x007e,
+ 0x127e, 0x2071, 0x70b6, 0x7614, 0x2660, 0x2678, 0x2091, 0x8000,
+ 0x8cff, 0x0040, 0x51b3, 0x601c, 0xa206, 0x00c0, 0x51ae, 0x7014,
+ 0xac36, 0x00c0, 0x518d, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0,
+ 0x519b, 0x2c00, 0xaf36, 0x0040, 0x5199, 0x2f00, 0x7012, 0x0078,
+ 0x519b, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040,
+ 0x51a4, 0x7e0e, 0x0078, 0x51a5, 0x2678, 0x600f, 0x0000, 0x1078,
+ 0x62fd, 0x1078, 0x52a1, 0x0c7f, 0x0078, 0x5180, 0x2c78, 0x600c,
+ 0x2060, 0x0078, 0x5180, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0e7f,
+ 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x4c9e,
+ 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3,
+ 0x4000, 0x0078, 0x51fc, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078,
+ 0x4c9e, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
+ 0x20a3, 0x2000, 0x0078, 0x51fc, 0x157e, 0x147e, 0x20a1, 0x020b,
+ 0x1078, 0x4c9e, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2, 0x20a2,
+ 0x20a2, 0x20a3, 0x0400, 0x0078, 0x51fc, 0x157e, 0x147e, 0x20a1,
+ 0x020b, 0x1078, 0x4c9e, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2,
+ 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078, 0x52ac, 0x60c3, 0x0020,
+ 0x1078, 0x4f31, 0x147f, 0x157f, 0x007c, 0x127e, 0x0c7e, 0x2091,
+ 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4, 0x00c0, 0x5214, 0xd1bc,
+ 0x00c0, 0x525e, 0x0078, 0x529e, 0x2009, 0x017f, 0x200b, 0x00a1,
+ 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, 0x20a9, 0x001e, 0x2009,
+ 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, 0x5255, 0x6020, 0xd0b4,
+ 0x0040, 0x5255, 0x6024, 0xd094, 0x00c0, 0x5255, 0x2104, 0xa084,
+ 0x000f, 0xa086, 0x0004, 0x00c0, 0x5255, 0x00f0, 0x5221, 0x027e,
+ 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, 0xa10d,
+ 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91, 0x6043, 0x0001, 0x6043,
+ 0x0000, 0x608a, 0x628e, 0x6024, 0xd094, 0x00c0, 0x5254, 0x6a04,
+ 0xa294, 0x4000, 0x00c0, 0x524b, 0x027f, 0x0d7f, 0x007f, 0x157f,
+ 0x2009, 0x017f, 0x200b, 0x0000, 0x0078, 0x529e, 0x2009, 0x017f,
+ 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140, 0x20a9,
+ 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040, 0x5297,
+ 0x6020, 0xd0bc, 0x0040, 0x5297, 0x2104, 0xa084, 0x000f, 0xa086,
+ 0x0004, 0x00c0, 0x5297, 0x00f0, 0x526b, 0x027e, 0x6164, 0xa18c,
+ 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff, 0xa10d, 0x6088, 0x628c,
+ 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001, 0x6043, 0x0000, 0x608a,
+ 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x5291, 0x027f, 0x0d7f,
+ 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0c7f, 0x127f,
+ 0x007c, 0x0e7e, 0x2071, 0x70b6, 0x7020, 0xa005, 0x0040, 0x52aa,
+ 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9, 0x0008, 0x20a2, 0x00f0,
+ 0x52ae, 0x20a2, 0x20a2, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
+ 0x077e, 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x70b6,
+ 0x7614, 0x2660, 0x2678, 0x2039, 0x0001, 0x87ff, 0x0040, 0x5344,
+ 0x8cff, 0x0040, 0x5344, 0x601c, 0xa086, 0x0006, 0x00c0, 0x533f,
+ 0x88ff, 0x0040, 0x52db, 0x2800, 0xac06, 0x00c0, 0x533f, 0x2039,
+ 0x0000, 0x0078, 0x52df, 0x6018, 0xa206, 0x00c0, 0x533f, 0x7024,
+ 0xac06, 0x00c0, 0x530d, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040,
+ 0x5308, 0x6817, 0x0008, 0x68c3, 0x0000, 0x1078, 0x53d1, 0x7027,
+ 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040,
+ 0x52fd, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824,
+ 0xd084, 0x0040, 0x5305, 0x6827, 0x0001, 0x037f, 0x0078, 0x530d,
+ 0x6003, 0x0009, 0x630a, 0x0078, 0x533f, 0x7014, 0xac36, 0x00c0,
+ 0x5313, 0x660c, 0x7616, 0x7010, 0xac36, 0x00c0, 0x5321, 0x2c00,
+ 0xaf36, 0x0040, 0x531f, 0x2f00, 0x7012, 0x0078, 0x5321, 0x7013,
+ 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x532a, 0x7e0e,
+ 0x0078, 0x532b, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078,
+ 0x61dc, 0x0040, 0x5335, 0x1078, 0x6d4c, 0x1078, 0x62fd, 0x1078,
+ 0x52a1, 0x88ff, 0x00c0, 0x534e, 0x0c7f, 0x0078, 0x52c5, 0x2c78,
+ 0x600c, 0x2060, 0x0078, 0x52c5, 0xa006, 0x127f, 0x007f, 0x067f,
+ 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000,
+ 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x5345, 0x0f7e, 0x0e7e, 0x0d7e,
0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x7836, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040, 0x5a34,
- 0x2200, 0xac06, 0x00c0, 0x5a2f, 0x7038, 0xac36, 0x00c0, 0x5a12,
- 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5a20, 0x2c00, 0xaf36,
- 0x0040, 0x5a1e, 0x2f00, 0x7036, 0x0078, 0x5a20, 0x7037, 0x0000,
- 0x660c, 0x2c00, 0xaf06, 0x0040, 0x5a28, 0x7e0e, 0x0078, 0x5a29,
- 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0078, 0x5a34, 0x2c78,
- 0x600c, 0x2060, 0x0078, 0x5a05, 0x127f, 0x007f, 0x027f, 0x067f,
- 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7836, 0x760c,
- 0x2660, 0x2678, 0x8cff, 0x0040, 0x5acd, 0x6018, 0xa080, 0x0028,
- 0x2004, 0xa206, 0x00c0, 0x5ac8, 0x7024, 0xac06, 0x00c0, 0x5a7b,
- 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x5a7b, 0x1078, 0x5534,
- 0x68c3, 0x0000, 0x1078, 0x59e4, 0x7027, 0x0000, 0x037e, 0x2069,
- 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x5a72, 0x6803, 0x0100,
- 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5a7a,
- 0x6827, 0x0001, 0x037f, 0x700c, 0xac36, 0x00c0, 0x5a81, 0x660c,
- 0x760e, 0x7008, 0xac36, 0x00c0, 0x5a8f, 0x2c00, 0xaf36, 0x0040,
- 0x5a8d, 0x2f00, 0x700a, 0x0078, 0x5a8f, 0x700b, 0x0000, 0x660c,
- 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5a98, 0x7e0e, 0x0078, 0x5a99,
- 0x2678, 0x600f, 0x0000, 0x1078, 0x6a65, 0x00c0, 0x5aa3, 0x1078,
- 0x22b1, 0x0078, 0x5abf, 0x1078, 0x6a79, 0x00c0, 0x5aab, 0x1078,
- 0x5e09, 0x0078, 0x5abf, 0x6010, 0x2068, 0x1078, 0x68e3, 0x0040,
- 0x5abf, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5ad5, 0x6837, 0x0103,
- 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x6003,
- 0x0000, 0x1078, 0x6a4c, 0x1078, 0x58b4, 0x0c7f, 0x0078, 0x5a4a,
- 0x2c78, 0x600c, 0x2060, 0x0078, 0x5a4a, 0x127f, 0x007f, 0x067f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006,
- 0x00c0, 0x5ab6, 0x1078, 0x74a8, 0x0078, 0x5abf, 0x037e, 0x157e,
- 0x137e, 0x147e, 0x3908, 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e,
- 0x2123, 0x00c0, 0x5aef, 0x8210, 0x8000, 0x0078, 0x5ae6, 0xa005,
- 0x0040, 0x5af9, 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0, 0x22c8,
- 0x53a3, 0x147f, 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1,
- 0x020b, 0x1078, 0x5005, 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3,
- 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x514c, 0x20a3,
- 0x4f47, 0x20a3, 0x4943, 0x20a3, 0x2020, 0x20a3, 0x0004, 0x20a3,
- 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x1078, 0x5520, 0x0d7f,
- 0x007c, 0x20a1, 0x020b, 0x1078, 0x5005, 0x20a3, 0x0210, 0x20a3,
- 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x60c3, 0x0018, 0x1078, 0x5520, 0x007c, 0x2061, 0x7d00,
- 0x2a70, 0x7060, 0x7046, 0x704b, 0x7d00, 0x007c, 0x0e7e, 0x127e,
- 0x2071, 0x7600, 0x2091, 0x8000, 0x7544, 0xa582, 0x0001, 0x0048,
- 0x5b80, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x5b6c,
- 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5b68, 0x0078, 0x5b5b,
- 0x2061, 0x7d00, 0x0078, 0x5b5b, 0x6003, 0x0008, 0x8529, 0x7546,
- 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x5b7c, 0x754a, 0xa085,
- 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704b, 0x7d00, 0x0078, 0x5b77,
- 0xa006, 0x0078, 0x5b79, 0x0e7e, 0x2071, 0x7600, 0x7544, 0xa582,
- 0x0001, 0x0048, 0x5bb1, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000,
- 0x0040, 0x5b9e, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5b9a,
- 0x0078, 0x5b8d, 0x2061, 0x7d00, 0x0078, 0x5b8d, 0x6003, 0x0008,
- 0x8529, 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x5bad,
- 0x754a, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7d00, 0x0078,
- 0x5ba9, 0xa006, 0x0078, 0x5bab, 0xac82, 0x7d00, 0x1048, 0x12d5,
- 0x2001, 0x7615, 0x2004, 0xac02, 0x10c8, 0x12d5, 0xa006, 0x6006,
- 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, 0x6003,
- 0x0000, 0x2061, 0x7600, 0x6044, 0x8000, 0x6046, 0xa086, 0x0001,
- 0x0040, 0x5bd3, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x4c2c,
- 0x127f, 0x0078, 0x5bd2, 0x601c, 0xa084, 0x000f, 0x0079, 0x5be0,
- 0x5be9, 0x5bf1, 0x5c0d, 0x5c29, 0x6af6, 0x6b12, 0x6b2e, 0x5be9,
- 0x5bf1, 0xa18e, 0x0047, 0x00c0, 0x5bf0, 0xa016, 0x1078, 0x1572,
- 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079,
- 0x5bfb, 0x067f, 0x007c, 0x5c0b, 0x5cf2, 0x5e24, 0x5c0b, 0x5e7b,
- 0x5c0b, 0x5c0b, 0x5c0b, 0x5ca1, 0x6127, 0x5c0b, 0x5c0b, 0x5c0b,
- 0x5c0b, 0x5c0b, 0x5c0b, 0x1078, 0x12d5, 0x067e, 0x6000, 0xa0b2,
- 0x0010, 0x10c8, 0x12d5, 0x1079, 0x5c17, 0x067f, 0x007c, 0x5c27,
- 0x5c27, 0x5c27, 0x5c27, 0x5c27, 0x5c27, 0x5c27, 0x5c27, 0x6597,
- 0x665d, 0x5c27, 0x65b0, 0x6609, 0x65b0, 0x6609, 0x5c27, 0x1078,
- 0x12d5, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079,
- 0x5c33, 0x067f, 0x007c, 0x5c43, 0x6165, 0x620b, 0x62cd, 0x6421,
- 0x5c43, 0x5c43, 0x5c43, 0x6143, 0x654c, 0x6550, 0x5c43, 0x5c43,
- 0x5c43, 0x5c43, 0x6576, 0x1078, 0x12d5, 0x20a9, 0x000e, 0x2e98,
- 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398,
- 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8,
- 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x5c53, 0x0e7e,
- 0x1078, 0x68e3, 0x0040, 0x5c6a, 0x6010, 0x2070, 0x7007, 0x0000,
- 0x7037, 0x0103, 0x0e7f, 0x1078, 0x5bb4, 0x007c, 0x0d7e, 0x037e,
- 0x7330, 0xa386, 0x0200, 0x00c0, 0x5c7b, 0x6018, 0x2068, 0x6813,
- 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0040, 0x5c85, 0x2068,
- 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x1078, 0x5bb4, 0x037f,
- 0x0d7f, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0,
- 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x5c9e, 0x6018, 0x2068, 0x7038,
+ 0x70b6, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040, 0x53c0, 0x601c,
+ 0xa086, 0x0006, 0x00c0, 0x53bb, 0x88ff, 0x0040, 0x5375, 0x2800,
+ 0xac06, 0x00c0, 0x53bb, 0x0078, 0x5379, 0x6018, 0xa206, 0x00c0,
+ 0x53bb, 0x703c, 0xac06, 0x00c0, 0x538b, 0x037e, 0x2019, 0x0001,
+ 0x1078, 0x5107, 0x7033, 0x0000, 0x703f, 0x0000, 0x7043, 0x0000,
+ 0x7047, 0x0000, 0x037f, 0x7038, 0xac36, 0x00c0, 0x5391, 0x660c,
+ 0x763a, 0x7034, 0xac36, 0x00c0, 0x539f, 0x2c00, 0xaf36, 0x0040,
+ 0x539d, 0x2f00, 0x7036, 0x0078, 0x539f, 0x7037, 0x0000, 0x660c,
+ 0x067e, 0x2c00, 0xaf06, 0x0040, 0x53a8, 0x7e0e, 0x0078, 0x53a9,
+ 0x2678, 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040,
+ 0x53b3, 0x1078, 0x6d4c, 0x1078, 0x62fd, 0x88ff, 0x00c0, 0x53ca,
+ 0x0c7f, 0x0078, 0x5364, 0x2c78, 0x600c, 0x2060, 0x0078, 0x5364,
+ 0xa006, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f,
+ 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078,
+ 0x53c1, 0x0e7e, 0x2071, 0x70b6, 0x2001, 0x6f00, 0x2004, 0xa086,
+ 0x0002, 0x00c0, 0x53df, 0x7007, 0x0005, 0x0078, 0x53e1, 0x7007,
+ 0x0000, 0x0e7f, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x067e, 0x027e,
+ 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x70b6, 0x2c10, 0x7638,
+ 0x2660, 0x2678, 0x8cff, 0x0040, 0x5421, 0x2200, 0xac06, 0x00c0,
+ 0x541c, 0x7038, 0xac36, 0x00c0, 0x53ff, 0x660c, 0x763a, 0x7034,
+ 0xac36, 0x00c0, 0x540d, 0x2c00, 0xaf36, 0x0040, 0x540b, 0x2f00,
+ 0x7036, 0x0078, 0x540d, 0x7037, 0x0000, 0x660c, 0x2c00, 0xaf06,
+ 0x0040, 0x5415, 0x7e0e, 0x0078, 0x5416, 0x2678, 0x600f, 0x0000,
+ 0xa085, 0x0001, 0x0078, 0x5421, 0x2c78, 0x600c, 0x2060, 0x0078,
+ 0x53f2, 0x127f, 0x007f, 0x027f, 0x067f, 0x0c7f, 0x0e7f, 0x0f7f,
+ 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x007e, 0x127e,
+ 0x2091, 0x8000, 0x2071, 0x70b6, 0x760c, 0x2660, 0x2678, 0x8cff,
+ 0x0040, 0x54ba, 0x6018, 0xa080, 0x0028, 0x2004, 0xa206, 0x00c0,
+ 0x54b5, 0x7024, 0xac06, 0x00c0, 0x5468, 0x2069, 0x0100, 0x68c0,
+ 0xa005, 0x0040, 0x5468, 0x1078, 0x4f45, 0x68c3, 0x0000, 0x1078,
+ 0x53d1, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384,
+ 0x1000, 0x0040, 0x545f, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069,
+ 0x0100, 0x6824, 0xd084, 0x0040, 0x5467, 0x6827, 0x0001, 0x037f,
+ 0x700c, 0xac36, 0x00c0, 0x546e, 0x660c, 0x760e, 0x7008, 0xac36,
+ 0x00c0, 0x547c, 0x2c00, 0xaf36, 0x0040, 0x547a, 0x2f00, 0x700a,
+ 0x0078, 0x547c, 0x700b, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
+ 0x0040, 0x5485, 0x7e0e, 0x0078, 0x5486, 0x2678, 0x600f, 0x0000,
+ 0x1078, 0x6316, 0x00c0, 0x5490, 0x1078, 0x2192, 0x0078, 0x54ac,
+ 0x1078, 0x632a, 0x00c0, 0x5498, 0x1078, 0x579c, 0x0078, 0x54ac,
+ 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040, 0x54ac, 0x601c, 0xa086,
+ 0x0003, 0x00c0, 0x54c2, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
+ 0x1078, 0x36ec, 0x1078, 0x62f0, 0x6003, 0x0000, 0x1078, 0x62fd,
+ 0x1078, 0x52a1, 0x0c7f, 0x0078, 0x5437, 0x2c78, 0x600c, 0x2060,
+ 0x0078, 0x5437, 0x127f, 0x007f, 0x067f, 0x0c7f, 0x0d7f, 0x0e7f,
+ 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x54a3, 0x1078,
+ 0x6d4c, 0x0078, 0x54ac, 0x037e, 0x157e, 0x137e, 0x147e, 0x3908,
+ 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e, 0x206c, 0x00c0, 0x54dc,
+ 0x8210, 0x8000, 0x0078, 0x54d3, 0xa005, 0x0040, 0x54e6, 0x20a9,
+ 0x0020, 0x2198, 0xa110, 0x22a0, 0x22c8, 0x53a3, 0x147f, 0x137f,
+ 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x4b64,
+ 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3, 0x0014, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x514c, 0x20a3, 0x4f47, 0x20a3, 0x4943,
+ 0x20a3, 0x2020, 0x20a3, 0x0004, 0x20a3, 0x7878, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x1078, 0x4f31, 0x0d7f, 0x007c, 0x20a1, 0x020b,
+ 0x1078, 0x4b64, 0x20a3, 0x0210, 0x20a3, 0x0018, 0x20a3, 0x0800,
+ 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000,
+ 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7810, 0xa084,
+ 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0018,
+ 0x1078, 0x4f31, 0x007c, 0x2061, 0x7500, 0x2a70, 0x7060, 0x7046,
+ 0x704b, 0x7500, 0x007c, 0x0e7e, 0x127e, 0x2071, 0x6f00, 0x2091,
+ 0x8000, 0x7544, 0xa582, 0x0001, 0x0048, 0x556d, 0x7048, 0x2060,
+ 0x6000, 0xa086, 0x0000, 0x0040, 0x5559, 0xace0, 0x0008, 0x7054,
+ 0xac02, 0x00c8, 0x5555, 0x0078, 0x5548, 0x2061, 0x7500, 0x0078,
+ 0x5548, 0x6003, 0x0008, 0x8529, 0x7546, 0xaca8, 0x0008, 0x7054,
+ 0xa502, 0x00c8, 0x5569, 0x754a, 0xa085, 0x0001, 0x127f, 0x0e7f,
+ 0x007c, 0x704b, 0x7500, 0x0078, 0x5564, 0xa006, 0x0078, 0x5566,
+ 0x0e7e, 0x2071, 0x6f00, 0x7544, 0xa582, 0x0001, 0x0048, 0x559e,
+ 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x558b, 0xace0,
+ 0x0008, 0x7054, 0xac02, 0x00c8, 0x5587, 0x0078, 0x557a, 0x2061,
+ 0x7500, 0x0078, 0x557a, 0x6003, 0x0008, 0x8529, 0x7546, 0xaca8,
+ 0x0008, 0x7054, 0xa502, 0x00c8, 0x559a, 0x754a, 0xa085, 0x0001,
+ 0x0e7f, 0x007c, 0x704b, 0x7500, 0x0078, 0x5596, 0xa006, 0x0078,
+ 0x5598, 0xac82, 0x7500, 0x1048, 0x1286, 0x2001, 0x6f15, 0x2004,
+ 0xac02, 0x10c8, 0x1286, 0xa006, 0x6006, 0x600a, 0x600e, 0x6012,
+ 0x6016, 0x601a, 0x601f, 0x0000, 0x6003, 0x0000, 0x2061, 0x6f00,
+ 0x6044, 0x8000, 0x6046, 0xa086, 0x0001, 0x0040, 0x55c0, 0x007c,
+ 0x127e, 0x2091, 0x8000, 0x1078, 0x484d, 0x127f, 0x0078, 0x55bf,
+ 0x601c, 0xa084, 0x0007, 0x0079, 0x55cd, 0x55d5, 0x55dd, 0x55f9,
+ 0x5615, 0x63a7, 0x63c3, 0x63df, 0x55d5, 0xa18e, 0x0047, 0x00c0,
+ 0x55dc, 0xa016, 0x1078, 0x1523, 0x007c, 0x067e, 0x6000, 0xa0b2,
+ 0x0010, 0x10c8, 0x1286, 0x1079, 0x55e7, 0x067f, 0x007c, 0x55f7,
+ 0x56c2, 0x57ab, 0x55f7, 0x55f7, 0x55f7, 0x55f7, 0x55f7, 0x5671,
+ 0x5a2d, 0x55f7, 0x55f7, 0x55f7, 0x55f7, 0x55f7, 0x55f7, 0x1078,
+ 0x1286, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1286, 0x1079,
+ 0x5603, 0x067f, 0x007c, 0x5613, 0x5613, 0x5613, 0x5613, 0x5613,
+ 0x5613, 0x5613, 0x5613, 0x5e9d, 0x5f63, 0x5613, 0x5eb6, 0x5f0f,
+ 0x5eb6, 0x5f0f, 0x5613, 0x1078, 0x1286, 0x067e, 0x6000, 0xa0b2,
+ 0x0010, 0x10c8, 0x1286, 0x1079, 0x561f, 0x067f, 0x007c, 0x562f,
+ 0x5a6b, 0x5b11, 0x5bd3, 0x5d27, 0x562f, 0x562f, 0x562f, 0x5a49,
+ 0x5e52, 0x5e56, 0x562f, 0x562f, 0x562f, 0x562f, 0x5e7c, 0x1078,
+ 0x1286, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0, 0x53a3, 0x20a9,
+ 0x0006, 0x3310, 0x3420, 0x9398, 0x94a0, 0x3318, 0x3428, 0x222e,
+ 0x2326, 0xa290, 0x0002, 0xa5a8, 0x0002, 0xa398, 0x0002, 0xa4a0,
+ 0x0002, 0x00f0, 0x563f, 0x0e7e, 0x1078, 0x61dc, 0x0040, 0x5656,
+ 0x6010, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x0e7f, 0x1078,
+ 0x55a1, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0,
+ 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x566e, 0x6018, 0x2068, 0x7038,
0x680a, 0x703c, 0x680e, 0x6800, 0xc08d, 0x6802, 0x0d7f, 0x0078,
- 0x5c5f, 0x2100, 0xa1b2, 0x0030, 0x10c8, 0x12d5, 0x0079, 0x5ca8,
- 0x5cda, 0x5ce6, 0x5cda, 0x5cda, 0x5cda, 0x5cda, 0x5cd8, 0x5cd8,
- 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8,
- 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8,
- 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cda,
- 0x5cd8, 0x5cda, 0x5cda, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8,
- 0x5cda, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8, 0x5cd8,
- 0x1078, 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078, 0x4824, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x4c2c, 0x127f, 0x007c, 0x6003, 0x0001,
- 0x6106, 0x1078, 0x4824, 0x127e, 0x2091, 0x8000, 0x1078, 0x4c2c,
- 0x127f, 0x007c, 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x12d5, 0xa1b6,
- 0x0013, 0x00c0, 0x5cfe, 0x2008, 0x0079, 0x5d87, 0xa1b6, 0x0027,
- 0x00c0, 0x5d54, 0x1078, 0x4b33, 0x6004, 0x1078, 0x6a65, 0x0040,
- 0x5d17, 0x1078, 0x6a79, 0x0040, 0x5d4c, 0xa08e, 0x0021, 0x0040,
- 0x5d50, 0xa08e, 0x0022, 0x0040, 0x5d4c, 0x0078, 0x5d47, 0x1078,
- 0x22b1, 0x2001, 0x0007, 0x1078, 0x3783, 0x6018, 0xa080, 0x0028,
- 0x200c, 0x1078, 0x5e09, 0xa186, 0x007e, 0x00c0, 0x5d2d, 0x2001,
- 0x762f, 0x2014, 0xa295, 0x0001, 0x2202, 0x017e, 0x027e, 0x037e,
- 0x2110, 0x2019, 0x0028, 0x1078, 0x4914, 0x1078, 0x4857, 0x0c7e,
- 0x6018, 0xa065, 0x0040, 0x5d3e, 0x1078, 0x3958, 0x0c7f, 0x2c08,
- 0x1078, 0x7326, 0x037f, 0x027f, 0x017f, 0x1078, 0x37bf, 0x1078,
- 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x1078, 0x5e09, 0x0078, 0x5d47,
- 0x1078, 0x5e18, 0x0078, 0x5d47, 0xa186, 0x0014, 0x00c0, 0x5d4b,
- 0x1078, 0x4b33, 0x1078, 0x228f, 0x1078, 0x6a65, 0x00c0, 0x5d74,
- 0x1078, 0x22b1, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, 0x5e09,
- 0xa186, 0x007e, 0x00c0, 0x5d72, 0x2001, 0x762f, 0x200c, 0xa18d,
- 0x0001, 0x2102, 0x0078, 0x5d47, 0x1078, 0x6a79, 0x00c0, 0x5d7c,
- 0x1078, 0x5e09, 0x0078, 0x5d47, 0x6004, 0xa08e, 0x0021, 0x0040,
- 0x5d78, 0xa08e, 0x0022, 0x1040, 0x5e18, 0x0078, 0x5d47, 0x5db9,
- 0x5dbb, 0x5dbf, 0x5dc3, 0x5dc7, 0x5dcb, 0x5db7, 0x5db7, 0x5db7,
- 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7,
- 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7,
- 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5dcf, 0x5dd5, 0x5db7,
- 0x5ddf, 0x5dd5, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5dd5,
- 0x5dd5, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x5db7, 0x1078,
- 0x12d5, 0x0078, 0x5dd5, 0x2001, 0x000b, 0x0078, 0x5de8, 0x2001,
- 0x0003, 0x0078, 0x5de8, 0x2001, 0x0005, 0x0078, 0x5de8, 0x2001,
- 0x0001, 0x0078, 0x5de8, 0x2001, 0x0009, 0x0078, 0x5de8, 0x1078,
- 0x12d5, 0x0078, 0x5de7, 0x1078, 0x3783, 0x1078, 0x4b33, 0x6003,
- 0x0002, 0x6017, 0x0028, 0x1078, 0x4c2c, 0x0078, 0x5de7, 0x1078,
- 0x4b33, 0x6003, 0x0004, 0x6017, 0x0028, 0x1078, 0x4c2c, 0x007c,
- 0x1078, 0x3783, 0x1078, 0x4b33, 0x6003, 0x0002, 0x037e, 0x2019,
- 0x765c, 0x2304, 0xa084, 0xff00, 0x00c0, 0x5dfa, 0x2019, 0x0028,
- 0x0078, 0x5e03, 0x8007, 0xa09a, 0x0004, 0x0048, 0x5df6, 0x8003,
- 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x1078, 0x4c2c, 0x0078,
- 0x5de7, 0x0e7e, 0x1078, 0x68e3, 0x0040, 0x5e16, 0x6010, 0x2070,
- 0x7007, 0x0000, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f, 0x007c,
- 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103,
- 0x7023, 0x8001, 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804,
- 0xa084, 0x00ff, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x12d5, 0x6604,
- 0xa6b6, 0x0028, 0x00c0, 0x5e38, 0x1078, 0x6aae, 0x0078, 0x5e6a,
- 0x6604, 0xa6b6, 0x0029, 0x00c0, 0x5e41, 0x1078, 0x6ac8, 0x0078,
- 0x5e6a, 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x5e4a, 0x1078, 0x5c45,
- 0x0078, 0x5e6a, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x5e53, 0x1078,
- 0x5c8a, 0x0078, 0x5e6a, 0x6604, 0xa6b6, 0x0022, 0x00c0, 0x5e5c,
- 0x1078, 0x5c6e, 0x0078, 0x5e6a, 0xa1b6, 0x0015, 0x00c0, 0x5e64,
- 0x1079, 0x5e6f, 0x0078, 0x5e6a, 0xa1b6, 0x0016, 0x00c0, 0x5e6b,
- 0x1079, 0x5fac, 0x007c, 0x1078, 0x5be9, 0x0078, 0x5e6a, 0x5e93,
- 0x5e96, 0x5e93, 0x5ed7, 0x5e93, 0x5f48, 0x5e93, 0x5e93, 0x5e93,
- 0x5f84, 0x5e93, 0x5f9a, 0xa1b6, 0x0048, 0x0040, 0x5e87, 0x20e1,
- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1572, 0x007c, 0x0e7e,
- 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x0e7f,
- 0x1078, 0x5bb4, 0x007c, 0x0005, 0x0005, 0x007c, 0x0e7e, 0x2071,
- 0x7600, 0x7078, 0xa086, 0x0074, 0x00c0, 0x5ec0, 0x1078, 0x72fa,
- 0x00c0, 0x5eb2, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x5ec4, 0x0d7f,
- 0x2001, 0x0006, 0x1078, 0x3783, 0x1078, 0x22b1, 0x1078, 0x5bb4,
- 0x0078, 0x5ec2, 0x2001, 0x000a, 0x1078, 0x3783, 0x1078, 0x22b1,
- 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4824, 0x0078, 0x5ec2,
- 0x1078, 0x5f38, 0x0e7f, 0x007c, 0x6800, 0xd084, 0x0040, 0x5ed6,
- 0x2001, 0x0000, 0x1078, 0x376f, 0x2069, 0x7651, 0x6804, 0xd0a4,
- 0x0040, 0x5ed6, 0x2001, 0x0006, 0x1078, 0x3791, 0x007c, 0x0d7e,
- 0x2011, 0x761e, 0x2204, 0xa086, 0x0074, 0x00c0, 0x5f34, 0x1078,
- 0x6079, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e,
- 0x0040, 0x5eff, 0xa286, 0x0080, 0x00c0, 0x5f28, 0x6813, 0x00ff,
- 0x6817, 0xfffc, 0x6010, 0xa005, 0x0040, 0x5f1e, 0x2068, 0x6807,
- 0x0000, 0x6837, 0x0103, 0x6833, 0x0200, 0x0078, 0x5f1e, 0x0e7e,
- 0x0f7e, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0x762f, 0x2e04,
- 0xa085, 0x0003, 0x2072, 0x2071, 0x7b80, 0x2079, 0x0100, 0x2e04,
- 0xa084, 0x00ff, 0x2069, 0x7619, 0x206a, 0x78e6, 0x8e70, 0x2e04,
- 0x2069, 0x761a, 0x206a, 0x78ea, 0x0f7f, 0x0e7f, 0x2001, 0x0006,
- 0x1078, 0x3783, 0x1078, 0x22b1, 0x1078, 0x5bb4, 0x0078, 0x5f36,
- 0x2001, 0x0004, 0x1078, 0x3783, 0x6003, 0x0001, 0x6007, 0x0003,
- 0x1078, 0x4824, 0x0078, 0x5f36, 0x1078, 0x5f38, 0x0d7f, 0x007c,
- 0x2001, 0x7600, 0x2004, 0xa086, 0x0003, 0x0040, 0x5f43, 0x2001,
- 0x0007, 0x1078, 0x3783, 0x1078, 0x22b1, 0x1078, 0x5bb4, 0x007c,
- 0x0e7e, 0x2071, 0x7600, 0x7078, 0xa086, 0x0014, 0x00c0, 0x5f7e,
- 0x7000, 0xa086, 0x0003, 0x00c0, 0x5f5b, 0x6010, 0xa005, 0x00c0,
- 0x5f5b, 0x1078, 0x2d80, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x3853,
- 0x1078, 0x5ec4, 0x0d7f, 0x1078, 0x6083, 0x00c0, 0x5f7e, 0x2001,
- 0x0006, 0x1078, 0x3783, 0x0e7e, 0x6010, 0xa005, 0x0040, 0x5f77,
- 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033, 0x0200, 0x0e7f,
- 0x1078, 0x22b1, 0x1078, 0x5bb4, 0x0078, 0x5f82, 0x1078, 0x5e09,
- 0x1078, 0x5f38, 0x0e7f, 0x007c, 0x2011, 0x761e, 0x2204, 0xa086,
- 0x0014, 0x00c0, 0x5f97, 0x2001, 0x0002, 0x1078, 0x3783, 0x6003,
- 0x0001, 0x6007, 0x0001, 0x1078, 0x4824, 0x0078, 0x5f99, 0x1078,
- 0x5f38, 0x007c, 0x2011, 0x761e, 0x2204, 0xa086, 0x0004, 0x00c0,
- 0x5fa9, 0x2001, 0x0007, 0x1078, 0x3783, 0x1078, 0x5bb4, 0x0078,
- 0x5fab, 0x1078, 0x5f38, 0x007c, 0x5e93, 0x5fb8, 0x5e93, 0x5fde,
- 0x5e93, 0x602c, 0x5e93, 0x5e93, 0x5e93, 0x6041, 0x5e93, 0x6054,
- 0x0c7e, 0x1078, 0x6067, 0x00c0, 0x5fcd, 0x2001, 0x0000, 0x1078,
- 0x376f, 0x2001, 0x0002, 0x1078, 0x3783, 0x6003, 0x0001, 0x6007,
- 0x0002, 0x1078, 0x4824, 0x0078, 0x5fdc, 0x2009, 0x7b8f, 0x2104,
- 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x5fda, 0x1078, 0x5bb4,
- 0x0078, 0x5fdc, 0x1078, 0x5f38, 0x0c7f, 0x007c, 0x1078, 0x6076,
- 0x00c0, 0x5ff2, 0x2001, 0x0000, 0x1078, 0x376f, 0x2001, 0x0002,
- 0x1078, 0x3783, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4824,
- 0x0078, 0x6014, 0x1078, 0x5e09, 0x2009, 0x7b8e, 0x2134, 0xa6b4,
- 0x00ff, 0xa686, 0x0005, 0x0040, 0x6015, 0x2009, 0x7b8f, 0x2104,
- 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x6012, 0xa686, 0x0009,
- 0x0040, 0x6015, 0x2001, 0x0004, 0x1078, 0x3783, 0x1078, 0x5bb4,
- 0x0078, 0x6014, 0x1078, 0x5f38, 0x007c, 0x0d7e, 0x6018, 0x2068,
- 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x6027, 0x8001, 0x6842,
- 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f, 0x0078, 0x6014, 0x1078,
- 0x228f, 0x0d7f, 0x0078, 0x6012, 0x1078, 0x6076, 0x00c0, 0x603c,
- 0x2001, 0x0004, 0x1078, 0x3783, 0x6003, 0x0001, 0x6007, 0x0003,
- 0x1078, 0x4824, 0x0078, 0x6040, 0x1078, 0x5e09, 0x1078, 0x5f38,
- 0x007c, 0x1078, 0x6076, 0x00c0, 0x6051, 0x2001, 0x0008, 0x1078,
- 0x3783, 0x6003, 0x0001, 0x6007, 0x0005, 0x1078, 0x4824, 0x0078,
- 0x6053, 0x1078, 0x5f38, 0x007c, 0x1078, 0x6076, 0x00c0, 0x6064,
- 0x2001, 0x000a, 0x1078, 0x3783, 0x6003, 0x0001, 0x6007, 0x0001,
- 0x1078, 0x4824, 0x0078, 0x6066, 0x1078, 0x5f38, 0x007c, 0x2009,
- 0x7b8e, 0x2104, 0xa086, 0x0003, 0x00c0, 0x6075, 0x2009, 0x7b8f,
- 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001,
- 0x007c, 0x0c7e, 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x37e9,
- 0x017f, 0x0c7f, 0x007c, 0x0e7e, 0x2071, 0x7b8c, 0x7004, 0xa086,
- 0x0014, 0x00c0, 0x60a6, 0x7008, 0xa086, 0x0800, 0x00c0, 0x60a6,
- 0x700c, 0xd0ec, 0x0040, 0x60a4, 0xa084, 0x0f00, 0xa086, 0x0100,
- 0x00c0, 0x60a4, 0x7024, 0xd0a4, 0x0040, 0x60a4, 0xd08c, 0x0040,
- 0x60a4, 0xa006, 0x0078, 0x60a6, 0xa085, 0x0001, 0x0e7f, 0x007c,
- 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e,
- 0x127e, 0x2091, 0x8000, 0x2029, 0x783f, 0x252c, 0x2021, 0x7845,
- 0x2424, 0x2061, 0x7d00, 0x2071, 0x7600, 0x7244, 0x7060, 0xa202,
- 0x00c8, 0x60fd, 0x1078, 0x7504, 0x0040, 0x60f5, 0x671c, 0xa786,
- 0x0001, 0x0040, 0x60f5, 0xa786, 0x0007, 0x0040, 0x60f5, 0x2500,
- 0xac06, 0x0040, 0x60f5, 0x2400, 0xac06, 0x0040, 0x60f5, 0x0c7e,
- 0x6000, 0xa086, 0x0004, 0x00c0, 0x60df, 0x1078, 0x1676, 0x6010,
- 0x2068, 0x1078, 0x68e3, 0x0040, 0x60f2, 0xa786, 0x0003, 0x00c0,
- 0x6107, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3a2c,
- 0x1078, 0x6a3f, 0x1078, 0x6a4c, 0x0c7f, 0xace0, 0x0008, 0x7054,
- 0xac02, 0x00c8, 0x60fd, 0x0078, 0x60bd, 0x127f, 0x007f, 0x027f,
- 0x047f, 0x057f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786,
- 0x0006, 0x00c0, 0x60e9, 0x1078, 0x74a8, 0x0078, 0x60f2, 0x220c,
- 0x2304, 0xa106, 0x00c0, 0x611a, 0x8210, 0x8318, 0x00f0, 0x610f,
- 0xa006, 0x007c, 0x2304, 0xa102, 0x0048, 0x6122, 0x2001, 0x0001,
- 0x0078, 0x6124, 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004,
- 0xa08a, 0x0030, 0x10c8, 0x12d5, 0x1078, 0x6a65, 0x0040, 0x6136,
- 0x1078, 0x6a79, 0x0040, 0x613f, 0x0078, 0x6138, 0x1078, 0x22b1,
- 0x1078, 0x4b33, 0x1078, 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x1078,
- 0x5e09, 0x0078, 0x6138, 0xa182, 0x0040, 0x0079, 0x6147, 0x6157,
- 0x6157, 0x6157, 0x6157, 0x6157, 0x6157, 0x6157, 0x6157, 0x6157,
- 0x6157, 0x6157, 0x6159, 0x6159, 0x6159, 0x6159, 0x6157, 0x1078,
- 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078, 0x47d7, 0x127e, 0x2091,
- 0x8000, 0x1078, 0x4c2c, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0,
- 0x616e, 0x6004, 0xa082, 0x0040, 0x0079, 0x61e4, 0xa186, 0x0027,
- 0x00c0, 0x618b, 0x1078, 0x4b33, 0x1078, 0x228f, 0x0d7e, 0x6110,
- 0x2168, 0x1078, 0x68e3, 0x0040, 0x6185, 0x6837, 0x0103, 0x684b,
- 0x0029, 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x0d7f, 0x1078, 0x5bb4,
- 0x1078, 0x4c2c, 0x007c, 0xa186, 0x0014, 0x00c0, 0x6194, 0x6004,
- 0xa082, 0x0040, 0x0079, 0x61b4, 0xa186, 0x0047, 0x10c0, 0x12d5,
- 0x2001, 0x0109, 0x2004, 0xd084, 0x0040, 0x61b1, 0x127e, 0x2091,
- 0x2200, 0x007e, 0x017e, 0x027e, 0x1078, 0x4698, 0x027f, 0x017f,
- 0x007f, 0x127f, 0x6000, 0xa086, 0x0002, 0x00c0, 0x61b1, 0x0078,
- 0x620b, 0x1078, 0x5be9, 0x007c, 0x61c6, 0x61c4, 0x61c4, 0x61c4,
- 0x61c4, 0x61c4, 0x61c4, 0x61c4, 0x61c4, 0x61c4, 0x61c4, 0x61dd,
- 0x61dd, 0x61dd, 0x61dd, 0x61c4, 0x1078, 0x12d5, 0x1078, 0x4b33,
- 0x0d7e, 0x6110, 0x2168, 0x1078, 0x68e3, 0x0040, 0x61d7, 0x6837,
- 0x0103, 0x684b, 0x0006, 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x0d7f,
- 0x1078, 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x1078, 0x4b33, 0x1078,
- 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x61f6, 0x61f4, 0x61f4, 0x61f4,
- 0x61f4, 0x61f4, 0x61f4, 0x61f4, 0x61f4, 0x61f4, 0x61f4, 0x6204,
- 0x6204, 0x6204, 0x6204, 0x61f4, 0x1078, 0x12d5, 0x1078, 0x4b33,
- 0x6003, 0x0002, 0x1078, 0x4c2c, 0x6010, 0xa088, 0x0013, 0x2104,
- 0xa085, 0x0400, 0x200a, 0x007c, 0x1078, 0x4b33, 0x6003, 0x000f,
- 0x1078, 0x4c2c, 0x007c, 0xa182, 0x0040, 0x0079, 0x620f, 0x621f,
- 0x621f, 0x621f, 0x621f, 0x621f, 0x6221, 0x62aa, 0x62c2, 0x621f,
- 0x621f, 0x621f, 0x621f, 0x621f, 0x621f, 0x621f, 0x621f, 0x1078,
- 0x12d5, 0x0e7e, 0x0d7e, 0x2071, 0x7b8c, 0x6110, 0x2168, 0x7614,
- 0xa6b4, 0x0fff, 0x86ff, 0x0040, 0x628e, 0xa68c, 0x00ff, 0xa186,
- 0x0002, 0x0040, 0x6253, 0xa186, 0x0028, 0x00c0, 0x623d, 0x1078,
- 0x6a53, 0x684b, 0x001c, 0x0078, 0x6255, 0xd6dc, 0x0040, 0x6248,
- 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x6255,
- 0xd6d4, 0x0040, 0x6253, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c,
- 0x6b5e, 0x0078, 0x6255, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46,
- 0xa01e, 0xd6c4, 0x0040, 0x6268, 0x7328, 0x732c, 0x6b56, 0x037e,
- 0x2308, 0x2019, 0x7b98, 0xad90, 0x0019, 0x1078, 0x66cc, 0x037f,
- 0xd6cc, 0x0040, 0x629e, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8,
- 0x627c, 0x2071, 0x7b98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d,
- 0x1078, 0x66cc, 0x0078, 0x629e, 0x6838, 0xd0fc, 0x0040, 0x6285,
- 0x2009, 0x0020, 0x695a, 0x0078, 0x6271, 0x0f7e, 0x2d78, 0x1078,
- 0x6664, 0x0f7f, 0x1078, 0x66b9, 0x0078, 0x62a0, 0x684b, 0x0000,
- 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x629e, 0x6810,
- 0x6914, 0xa115, 0x0040, 0x629e, 0x1078, 0x6412, 0x1078, 0x3a2c,
- 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x0d7f, 0x0e7f, 0x1078,
- 0x5bb4, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, 0x7b8c, 0x7c04,
- 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a,
- 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x19a7, 0x1078, 0x4843, 0x1078,
- 0x4cec, 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18,
- 0x3e20, 0x2c10, 0x1078, 0x1572, 0x007c, 0xa182, 0x0040, 0x0079,
- 0x62d1, 0x62e1, 0x62e1, 0x62e1, 0x62e1, 0x62e1, 0x62e3, 0x637a,
- 0x62e1, 0x62e1, 0x6390, 0x63f2, 0x62e1, 0x62e1, 0x62e1, 0x62e1,
- 0x63f9, 0x1078, 0x12d5, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071,
- 0x7b8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c,
- 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff,
- 0x0040, 0x6375, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x6304,
- 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x6375,
- 0x1078, 0x132f, 0x1040, 0x12d5, 0x2d00, 0x784a, 0x7f4c, 0xc7cd,
- 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840,
- 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x633e,
- 0xa186, 0x0028, 0x00c0, 0x6328, 0x684b, 0x001c, 0x0078, 0x6340,
- 0xd6dc, 0x0040, 0x6333, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c,
- 0x6b5e, 0x0078, 0x6340, 0xd6d4, 0x0040, 0x633e, 0x684b, 0x0007,
- 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x6340, 0x684b, 0x0000,
- 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040,
- 0x6355, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7b98,
- 0xad90, 0x0019, 0x1078, 0x66cc, 0x037f, 0xd6cc, 0x0040, 0x6375,
- 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x6369, 0x2071, 0x7b98,
- 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x66cc, 0x0078,
- 0x6375, 0x7838, 0xd0fc, 0x0040, 0x6372, 0x2009, 0x0020, 0x695a,
- 0x0078, 0x635e, 0x2d78, 0x1078, 0x6664, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x077f, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, 0x7b8c, 0x7c04,
- 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a,
- 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x19a7, 0x1078, 0x5519, 0x007c,
- 0x0d7e, 0x6003, 0x0002, 0x1078, 0x4bdb, 0x1078, 0x4cec, 0x6110,
- 0x2168, 0x694c, 0xd1e4, 0x0040, 0x63f0, 0xd1cc, 0x0040, 0x63cb,
- 0x6948, 0x6838, 0xd0fc, 0x0040, 0x63c3, 0x017e, 0x684c, 0x007e,
- 0x6850, 0x007e, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020,
- 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x00f0, 0x63b2,
- 0x157f, 0x007f, 0x6852, 0x007f, 0x684e, 0x017f, 0x2168, 0x1078,
- 0x1358, 0x0078, 0x63ee, 0x017e, 0x1078, 0x1358, 0x0d7f, 0x1078,
- 0x66b9, 0x0078, 0x63ee, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff,
- 0xa186, 0x0002, 0x0040, 0x63ea, 0xa086, 0x0028, 0x00c0, 0x63dc,
- 0x684b, 0x001c, 0x0078, 0x63ec, 0xd1dc, 0x0040, 0x63e3, 0x684b,
- 0x0015, 0x0078, 0x63ec, 0xd1d4, 0x0040, 0x63ea, 0x684b, 0x0007,
- 0x0078, 0x63ec, 0x684b, 0x0000, 0x1078, 0x3a2c, 0x1078, 0x5bb4,
- 0x0d7f, 0x007c, 0x6003, 0x0002, 0x1078, 0x4bdb, 0x1078, 0x4cec,
- 0x007c, 0x1078, 0x4bdb, 0x1078, 0x228f, 0x0d7e, 0x6110, 0x2168,
- 0x1078, 0x68e3, 0x0040, 0x640c, 0x6837, 0x0103, 0x684b, 0x0029,
- 0x1078, 0x3a2c, 0x1078, 0x6a3f, 0x0d7f, 0x1078, 0x5bb4, 0x1078,
- 0x4cec, 0x007c, 0x684b, 0x0015, 0xd1fc, 0x0040, 0x641e, 0x684b,
- 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e,
- 0x007c, 0xa182, 0x0040, 0x0079, 0x6425, 0x6435, 0x6435, 0x6435,
- 0x6435, 0x6435, 0x6437, 0x6435, 0x64db, 0x64e3, 0x6435, 0x6435,
- 0x6435, 0x6435, 0x6435, 0x6435, 0x6435, 0x1078, 0x12d5, 0x077e,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x7b8c, 0x6110, 0x2178, 0x7614,
- 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268,
- 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x64cd, 0xa694, 0xff00,
- 0xa284, 0x0c00, 0x0040, 0x6458, 0x7018, 0x7862, 0x701c, 0x785e,
- 0xa284, 0x0300, 0x0040, 0x64ca, 0x1078, 0x132f, 0x1040, 0x12d5,
- 0x2d00, 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103,
- 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c,
- 0x00ff, 0xa186, 0x0002, 0x0040, 0x6493, 0xa186, 0x0028, 0x00c0,
- 0x647d, 0x684b, 0x001c, 0x0078, 0x6495, 0xd6dc, 0x0040, 0x6488,
- 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x6495,
- 0xd6d4, 0x0040, 0x6493, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c,
- 0x6b5e, 0x0078, 0x6495, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852,
- 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x64aa, 0x7328, 0x732c,
- 0x6b56, 0x037e, 0x2308, 0x2019, 0x7b98, 0xad90, 0x0019, 0x1078,
- 0x66cc, 0x037f, 0xd6cc, 0x0040, 0x64ca, 0x7124, 0x695a, 0xa192,
- 0x0021, 0x00c8, 0x64be, 0x2071, 0x7b98, 0x831c, 0x2300, 0xae18,
- 0xad90, 0x001d, 0x1078, 0x66cc, 0x0078, 0x64ca, 0x7838, 0xd0fc,
- 0x0040, 0x64c7, 0x2009, 0x0020, 0x695a, 0x0078, 0x64b3, 0x2d78,
- 0x1078, 0x6664, 0xd6dc, 0x00c0, 0x64d0, 0xa006, 0x0078, 0x64d4,
- 0x2001, 0x0001, 0x7218, 0x731c, 0x1078, 0x15b6, 0x0d7f, 0x0e7f,
- 0x0f7f, 0x077f, 0x007c, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
- 0x1078, 0x1572, 0x007c, 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168,
- 0x694c, 0xd1e4, 0x0040, 0x654a, 0xd1cc, 0x0040, 0x651a, 0x6948,
- 0x6838, 0xd0fc, 0x0040, 0x6512, 0x017e, 0x684c, 0x007e, 0x6850,
- 0x007e, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e,
- 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x00f0, 0x6501, 0x157f,
- 0x007f, 0x6852, 0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x1358,
- 0x0078, 0x6548, 0x017e, 0x1078, 0x1358, 0x0d7f, 0x1078, 0x66b9,
- 0x0078, 0x6548, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186,
- 0x0002, 0x0040, 0x6539, 0xa086, 0x0028, 0x00c0, 0x652b, 0x684b,
- 0x001c, 0x0078, 0x6546, 0xd1dc, 0x0040, 0x6532, 0x684b, 0x0015,
- 0x0078, 0x6546, 0xd1d4, 0x0040, 0x6539, 0x684b, 0x0007, 0x0078,
- 0x6546, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0040, 0x6546, 0x6810,
- 0x6914, 0xa115, 0x0040, 0x6546, 0x1078, 0x6412, 0x1078, 0x3a2c,
- 0x1078, 0x5bb4, 0x0d7f, 0x007c, 0x1078, 0x4b33, 0x0078, 0x6552,
- 0x1078, 0x4bdb, 0x1078, 0x68e3, 0x0040, 0x6569, 0x0d7e, 0x6110,
- 0x2168, 0x6837, 0x0103, 0x2009, 0x760c, 0x210c, 0xd18c, 0x00c0,
- 0x6572, 0xd184, 0x00c0, 0x656e, 0x6108, 0x694a, 0x1078, 0x3a2c,
- 0x0d7f, 0x1078, 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x684b, 0x0004,
- 0x0078, 0x6566, 0x684b, 0x0004, 0x0078, 0x6566, 0xa182, 0x0040,
- 0x0079, 0x657a, 0x658a, 0x658a, 0x658a, 0x658a, 0x658a, 0x658c,
- 0x658a, 0x658f, 0x658a, 0x658a, 0x658a, 0x658a, 0x658a, 0x658a,
- 0x658a, 0x658a, 0x1078, 0x12d5, 0x1078, 0x5bb4, 0x007c, 0x007e,
- 0x027e, 0xa016, 0x1078, 0x1572, 0x027f, 0x007f, 0x007c, 0xa182,
- 0x0085, 0x0079, 0x659b, 0x65a4, 0x65a2, 0x65a2, 0x65a2, 0x65a2,
- 0x65a2, 0x65a2, 0x1078, 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078,
- 0x47d7, 0x127e, 0x2091, 0x8000, 0x1078, 0x4c2c, 0x127f, 0x007c,
- 0xa186, 0x0013, 0x00c0, 0x65ba, 0x6004, 0xa082, 0x0085, 0x2008,
- 0x0079, 0x65ee, 0xa186, 0x0027, 0x00c0, 0x65db, 0x1078, 0x4b33,
- 0x1078, 0x228f, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x68e3, 0x0040,
- 0x65d1, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3a2c, 0x1078,
- 0x6a3f, 0x0d7f, 0x1078, 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x1078,
- 0x5be9, 0x0078, 0x65d6, 0xa186, 0x0014, 0x00c0, 0x65d7, 0x1078,
- 0x4b33, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x68e3, 0x0040, 0x65d1,
- 0x6837, 0x0103, 0x684b, 0x0006, 0x0078, 0x65cd, 0x65f7, 0x65f5,
- 0x65f5, 0x65f5, 0x65f5, 0x65f5, 0x6600, 0x1078, 0x12d5, 0x1078,
- 0x4b33, 0x6017, 0x0014, 0x6003, 0x000c, 0x1078, 0x4c2c, 0x007c,
- 0x1078, 0x4b33, 0x6017, 0x0014, 0x6003, 0x000e, 0x1078, 0x4c2c,
- 0x007c, 0xa182, 0x008c, 0x00c8, 0x6613, 0xa182, 0x0085, 0x0048,
- 0x6613, 0x0079, 0x6616, 0x1078, 0x5be9, 0x007c, 0x661d, 0x661d,
- 0x661d, 0x661d, 0x661f, 0x663e, 0x661d, 0x1078, 0x12d5, 0x0d7e,
- 0x1078, 0x6a3f, 0x1078, 0x68e3, 0x0040, 0x663a, 0x6010, 0x2068,
- 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x6632, 0x684b, 0x0006,
- 0x0078, 0x6636, 0x684b, 0x0005, 0x1078, 0x6af2, 0x6847, 0x0000,
- 0x1078, 0x3a2c, 0x1078, 0x5bb4, 0x0d7f, 0x007c, 0x0d7e, 0x6010,
- 0x2068, 0x1078, 0x68e3, 0x0040, 0x6659, 0x6837, 0x0103, 0x6850,
- 0xd0b4, 0x0040, 0x664f, 0x684b, 0x0006, 0x0078, 0x6653, 0x684b,
- 0x0005, 0x1078, 0x6af2, 0x6847, 0x0000, 0x1078, 0x3a2c, 0x1078,
- 0x6a3f, 0x0d7f, 0x1078, 0x5bb4, 0x007c, 0x1078, 0x4b33, 0x1078,
- 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e,
- 0x2029, 0x0001, 0xa182, 0x0101, 0x00c8, 0x6670, 0x0078, 0x6672,
- 0x2009, 0x0100, 0x2130, 0x2069, 0x7b98, 0x831c, 0x2300, 0xad18,
- 0x2009, 0x0020, 0xaf90, 0x001d, 0x1078, 0x66cc, 0xa6b2, 0x0020,
- 0x7804, 0xa06d, 0x0040, 0x6686, 0x1078, 0x1358, 0x1078, 0x132f,
- 0x0040, 0x66b0, 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20,
- 0x7c06, 0xa68a, 0x003d, 0x00c8, 0x669c, 0x2608, 0xad90, 0x000f,
- 0x1078, 0x66cc, 0x0078, 0x66b0, 0xa6b2, 0x003c, 0x2009, 0x003c,
- 0x2d78, 0xad90, 0x000f, 0x1078, 0x66cc, 0x0078, 0x6686, 0x0f7f,
- 0x852f, 0xa5ad, 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x66b5,
- 0x0f7f, 0x852f, 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f,
- 0x007c, 0x0f7e, 0x8dff, 0x0040, 0x66ca, 0x6804, 0xa07d, 0x0040,
- 0x66c8, 0x6807, 0x0000, 0x1078, 0x3a2c, 0x2f68, 0x0078, 0x66bd,
- 0x1078, 0x3a2c, 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040,
- 0x66d2, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318,
- 0x8210, 0x00f0, 0x66d4, 0x157f, 0x007c, 0x127e, 0x2091, 0x8000,
- 0x601c, 0xa084, 0x000f, 0x1079, 0x66e7, 0x127f, 0x007c, 0x66f6,
- 0x66ef, 0x66f1, 0x670f, 0x66ef, 0x66f1, 0x66f1, 0x66f1, 0x1078,
- 0x12d5, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0x0d7e, 0x6010,
- 0x2068, 0x1078, 0x68e3, 0x0040, 0x670c, 0xa00e, 0x2001, 0x0005,
- 0x1078, 0x3abc, 0x1078, 0x6af2, 0x1078, 0x3a2c, 0x1078, 0x5bb4,
- 0xa085, 0x0001, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x670a, 0x6000,
- 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6717, 0x007c, 0x6727,
- 0x6744, 0x6729, 0x6755, 0x6740, 0x6727, 0x66f1, 0x66f6, 0x66f6,
- 0x66f1, 0x66f1, 0x66f1, 0x66f1, 0x66f1, 0x66f1, 0x66f1, 0x1078,
- 0x12d5, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x68e3, 0x0040, 0x6732,
- 0x1078, 0x6af2, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f,
- 0x0002, 0x1078, 0x47d7, 0x1078, 0x4c2c, 0xa085, 0x0001, 0x007c,
- 0x1078, 0x1676, 0x0078, 0x6729, 0x0e7e, 0x2071, 0x7836, 0x7024,
- 0xac06, 0x00c0, 0x674d, 0x1078, 0x5688, 0x1078, 0x55bd, 0x0e7f,
- 0x00c0, 0x6729, 0x1078, 0x66f1, 0x007c, 0x037e, 0x0e7e, 0x2071,
- 0x7836, 0x703c, 0xac06, 0x00c0, 0x6765, 0x2019, 0x0000, 0x1078,
- 0x571a, 0x0e7f, 0x037f, 0x0078, 0x6729, 0x1078, 0x59f6, 0x0e7f,
- 0x037f, 0x00c0, 0x6729, 0x1078, 0x66f1, 0x007c, 0x0c7e, 0x601c,
- 0xa084, 0x000f, 0x1079, 0x6776, 0x0c7f, 0x007c, 0x6785, 0x67e2,
- 0x6887, 0x6789, 0x6785, 0x6785, 0x7188, 0x5bb4, 0x67e2, 0x1078,
- 0x6a79, 0x00c0, 0x6785, 0x1078, 0x5e09, 0x007c, 0x6017, 0x0001,
- 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6791,
- 0x007c, 0x67a1, 0x67a3, 0x67c3, 0x67d5, 0x67d5, 0x67a1, 0x6785,
- 0x6785, 0x6785, 0x67d5, 0x67d5, 0x67a1, 0x67a1, 0x67a1, 0x67a1,
- 0x67df, 0x1078, 0x12d5, 0x0e7e, 0x6010, 0x2070, 0x7050, 0xc0b5,
- 0x7052, 0x2071, 0x7836, 0x7024, 0xac06, 0x0040, 0x67bf, 0x1078,
- 0x55bd, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6017,
- 0x0014, 0x1078, 0x47d7, 0x1078, 0x4c2c, 0x0e7f, 0x007c, 0x6017,
- 0x0001, 0x0078, 0x67bd, 0x0d7e, 0x6010, 0x2068, 0x6850, 0xc0b5,
- 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002,
- 0x1078, 0x47d7, 0x1078, 0x4c2c, 0x007c, 0x0d7e, 0x6017, 0x0001,
- 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x007c, 0x1078,
- 0x5bb4, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079,
- 0x67ea, 0x007c, 0x67fa, 0x6786, 0x67fc, 0x67fa, 0x67fc, 0x67fa,
- 0x67fa, 0x67fa, 0x677f, 0x677f, 0x67fa, 0x67fa, 0x67fa, 0x67fa,
- 0x67fa, 0x67fa, 0x1078, 0x12d5, 0x0d7e, 0x6018, 0x2068, 0x6804,
- 0xa084, 0x00ff, 0x0d7f, 0xa08a, 0x000c, 0x10c8, 0x12d5, 0x1079,
- 0x680a, 0x007c, 0x6816, 0x6835, 0x6816, 0x6835, 0x6816, 0x6835,
- 0x6818, 0x6821, 0x6816, 0x6835, 0x6816, 0x682e, 0x1078, 0x12d5,
- 0x6004, 0xa08e, 0x0004, 0x0040, 0x6830, 0xa08e, 0x0002, 0x0040,
- 0x6830, 0x6004, 0x1078, 0x6a79, 0x0040, 0x687f, 0xa08e, 0x0021,
- 0x0040, 0x6883, 0xa08e, 0x0022, 0x0040, 0x687f, 0x1078, 0x228f,
- 0x1078, 0x5e09, 0x1078, 0x5bb4, 0x007c, 0x0c7e, 0x0d7e, 0x6104,
- 0xa186, 0x0016, 0x0040, 0x686f, 0xa186, 0x0002, 0x00c0, 0x685e,
- 0x6018, 0x2068, 0x68a0, 0xd0bc, 0x00c0, 0x685e, 0x6840, 0xa084,
- 0x00ff, 0xa005, 0x0040, 0x685e, 0x8001, 0x6842, 0x6013, 0x0000,
- 0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x5b4e, 0x0040, 0x685e,
- 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x686f, 0x0d7f, 0x0c7f,
- 0x1078, 0x5e09, 0x1078, 0x228f, 0x0e7e, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x22b1, 0x127f, 0x0e7f, 0x1078, 0x5bb4, 0x007c, 0x2001,
- 0x0002, 0x1078, 0x3783, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078,
- 0x4824, 0x1078, 0x4c2c, 0x0d7f, 0x0c7f, 0x0078, 0x686e, 0x1078,
- 0x5e09, 0x0078, 0x6832, 0x1078, 0x5e18, 0x0078, 0x6832, 0x6000,
- 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x688f, 0x007c, 0x689f,
- 0x689f, 0x689f, 0x689f, 0x689f, 0x689f, 0x689f, 0x689f, 0x689f,
- 0x6785, 0x689f, 0x6786, 0x68a1, 0x6786, 0x68aa, 0x689f, 0x1078,
- 0x12d5, 0x6007, 0x008b, 0x6003, 0x000d, 0x1078, 0x47d7, 0x1078,
- 0x4c2c, 0x007c, 0x1078, 0x6a3f, 0x1078, 0x68e3, 0x0040, 0x68cc,
- 0x1078, 0x228f, 0x0d7e, 0x1078, 0x68e3, 0x0040, 0x68bf, 0x6010,
- 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078, 0x3a2c, 0x0d7f,
- 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x4824,
- 0x1078, 0x4c2c, 0x0078, 0x68ce, 0x1078, 0x5bb4, 0x007c, 0xa284,
- 0x0007, 0x00c0, 0x68e0, 0xa282, 0x7d00, 0x0048, 0x68e0, 0x2001,
- 0x7615, 0x2004, 0xa202, 0x00c8, 0x68e0, 0xa085, 0x0001, 0x007c,
- 0xa006, 0x0078, 0x68df, 0x027e, 0x0e7e, 0x2071, 0x7600, 0x6210,
- 0x7058, 0xa202, 0x0048, 0x68f5, 0x705c, 0xa202, 0x00c8, 0x68f5,
- 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c, 0xa006, 0x0078, 0x68f2,
- 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2061,
- 0x7d00, 0x2071, 0x7600, 0x7344, 0x7060, 0xa302, 0x00c8, 0x691e,
- 0x601c, 0xa206, 0x00c0, 0x6916, 0x1078, 0x6a79, 0x00c0, 0x6912,
- 0x1078, 0x5e09, 0x0c7e, 0x1078, 0x5bb4, 0x0c7f, 0xace0, 0x0008,
- 0x7054, 0xac02, 0x00c8, 0x691e, 0x0078, 0x6903, 0x127f, 0x007f,
- 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0x127e,
- 0x2091, 0x8000, 0xa188, 0x7720, 0x210c, 0x81ff, 0x0040, 0x694b,
- 0x2061, 0x7d00, 0x2071, 0x7600, 0x7344, 0x7060, 0xa302, 0x00c8,
- 0x694b, 0x6018, 0xa106, 0x00c0, 0x6945, 0x1078, 0x228f, 0x017e,
- 0x0c7e, 0x1078, 0x5bb4, 0x0c7f, 0x017f, 0xace0, 0x0008, 0x7054,
- 0xac02, 0x0048, 0x6939, 0x127f, 0x017f, 0x0c7f, 0x0e7f, 0x007c,
- 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5b4e,
- 0x057f, 0x0040, 0x6969, 0x6612, 0x651a, 0x601f, 0x0003, 0x2009,
- 0x004b, 0x1078, 0x5bdb, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
- 0x007c, 0xa006, 0x0078, 0x6965, 0x0c7e, 0x057e, 0x127e, 0x2091,
- 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x5b4e, 0x057f, 0x0040, 0x6993,
- 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078,
- 0x3958, 0x0c7f, 0x1078, 0x4914, 0x1078, 0x4857, 0x2c08, 0x1078,
- 0x7326, 0x2009, 0x004c, 0x1078, 0x5bdb, 0xa085, 0x0001, 0x127f,
- 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x698f, 0x0c7e, 0x057e,
- 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x5b4e, 0x057f,
- 0x0040, 0x69be, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005,
- 0x0c7e, 0x2560, 0x1078, 0x3958, 0x0c7f, 0x1078, 0x4914, 0x1078,
- 0x4857, 0x2c08, 0x1078, 0x7326, 0x2009, 0x004d, 0x1078, 0x5bdb,
+ 0x564b, 0x2100, 0xa1b2, 0x0030, 0x10c8, 0x1286, 0x0079, 0x5678,
+ 0x56aa, 0x56b6, 0x56aa, 0x56aa, 0x56aa, 0x56aa, 0x56a8, 0x56a8,
+ 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8,
+ 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8,
+ 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56aa,
+ 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8,
+ 0x56aa, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8, 0x56a8,
+ 0x1078, 0x1286, 0x6003, 0x0001, 0x6106, 0x1078, 0x4445, 0x127e,
+ 0x2091, 0x8000, 0x1078, 0x484d, 0x127f, 0x007c, 0x6003, 0x0001,
+ 0x6106, 0x1078, 0x4445, 0x127e, 0x2091, 0x8000, 0x1078, 0x484d,
+ 0x127f, 0x007c, 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x1286, 0xa1b6,
+ 0x0013, 0x00c0, 0x56ce, 0x2008, 0x0079, 0x5724, 0xa1b6, 0x0027,
+ 0x00c0, 0x570c, 0x1078, 0x4754, 0x6004, 0x1078, 0x6316, 0x0040,
+ 0x56df, 0x1078, 0x632a, 0x0040, 0x5708, 0x0078, 0x5703, 0x1078,
+ 0x2192, 0x2001, 0x0007, 0x1078, 0x3443, 0x6018, 0xa080, 0x0028,
+ 0x200c, 0x017e, 0x027e, 0x037e, 0x2110, 0x2019, 0x0028, 0x1078,
+ 0x4535, 0x1078, 0x4478, 0x0c7e, 0x6018, 0xa065, 0x0040, 0x56fa,
+ 0x1078, 0x3618, 0x0c7f, 0x2c08, 0x1078, 0x6bca, 0x037f, 0x027f,
+ 0x017f, 0x1078, 0x347f, 0x1078, 0x55a1, 0x1078, 0x484d, 0x007c,
+ 0x1078, 0x579c, 0x0078, 0x5703, 0xa186, 0x0014, 0x1078, 0x4754,
+ 0x1078, 0x2174, 0x1078, 0x6316, 0x00c0, 0x571a, 0x1078, 0x2192,
+ 0x0078, 0x5703, 0x1078, 0x632a, 0x00c0, 0x5722, 0x1078, 0x579c,
+ 0x0078, 0x5703, 0x0078, 0x5703, 0x5756, 0x5758, 0x575c, 0x5760,
+ 0x5764, 0x5768, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754,
+ 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754,
+ 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754, 0x5754,
+ 0x5754, 0x5754, 0x576c, 0x5772, 0x5754, 0x5754, 0x5754, 0x5754,
+ 0x5754, 0x5754, 0x5754, 0x5754, 0x5772, 0x5772, 0x5754, 0x5754,
+ 0x5754, 0x5754, 0x5754, 0x5754, 0x1078, 0x1286, 0x0078, 0x5772,
+ 0x2001, 0x000b, 0x0078, 0x577b, 0x2001, 0x0003, 0x0078, 0x577b,
+ 0x2001, 0x0005, 0x0078, 0x577b, 0x2001, 0x0001, 0x0078, 0x577b,
+ 0x2001, 0x0009, 0x0078, 0x577b, 0x1078, 0x1286, 0x0078, 0x577a,
+ 0x1078, 0x3443, 0x1078, 0x4754, 0x6003, 0x0002, 0x6017, 0x0028,
+ 0x1078, 0x484d, 0x007c, 0x1078, 0x3443, 0x1078, 0x4754, 0x6003,
+ 0x0002, 0x037e, 0x2019, 0x6f5c, 0x2304, 0xa084, 0xff00, 0x00c0,
+ 0x578d, 0x2019, 0x0028, 0x0078, 0x5796, 0x8007, 0xa09a, 0x0004,
+ 0x0048, 0x5789, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316, 0x037f,
+ 0x1078, 0x484d, 0x0078, 0x577a, 0x0e7e, 0x1078, 0x61dc, 0x0040,
+ 0x57a9, 0x6010, 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033,
+ 0x0100, 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084,
+ 0x00ff, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x1286, 0x6604, 0xa6b6,
+ 0x0028, 0x00c0, 0x57bf, 0x1078, 0x635f, 0x0078, 0x57e8, 0x6604,
+ 0xa6b6, 0x0029, 0x00c0, 0x57c8, 0x1078, 0x6379, 0x0078, 0x57e8,
+ 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x57d1, 0x1078, 0x5631, 0x0078,
+ 0x57e8, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x57da, 0x1078, 0x565a,
+ 0x0078, 0x57e8, 0xa1b6, 0x0015, 0x00c0, 0x57e2, 0x1079, 0x57ed,
+ 0x0078, 0x57e8, 0xa1b6, 0x0016, 0x00c0, 0x57e9, 0x1079, 0x58b6,
+ 0x007c, 0x1078, 0x55d5, 0x0078, 0x57e8, 0x57f9, 0x57fc, 0x57f9,
+ 0x583d, 0x57f9, 0x5865, 0x57f9, 0x57f9, 0x57f9, 0x588e, 0x57f9,
+ 0x58a4, 0x0005, 0x0005, 0x007c, 0x0e7e, 0x2071, 0x6f00, 0x7070,
+ 0xa086, 0x0074, 0x00c0, 0x5826, 0x1078, 0x6ba2, 0x00c0, 0x5818,
+ 0x0d7e, 0x6018, 0x2068, 0x1078, 0x582a, 0x0d7f, 0x2001, 0x0006,
+ 0x1078, 0x3443, 0x1078, 0x2192, 0x1078, 0x55a1, 0x0078, 0x5828,
+ 0x2001, 0x000a, 0x1078, 0x3443, 0x1078, 0x2192, 0x6003, 0x0001,
+ 0x6007, 0x0001, 0x1078, 0x4445, 0x0078, 0x5828, 0x1078, 0x5855,
+ 0x0e7f, 0x007c, 0x6800, 0xd084, 0x0040, 0x583c, 0x2001, 0x0000,
+ 0x1078, 0x342f, 0x2069, 0x6f51, 0x6804, 0xd0a4, 0x0040, 0x583c,
+ 0x2001, 0x0006, 0x1078, 0x3451, 0x007c, 0x2011, 0x6f1c, 0x2204,
+ 0xa086, 0x0074, 0x00c0, 0x5852, 0x1078, 0x597f, 0x2001, 0x0004,
+ 0x1078, 0x3443, 0x6003, 0x0001, 0x6007, 0x0003, 0x1078, 0x4445,
+ 0x0078, 0x5854, 0x1078, 0x5855, 0x007c, 0x2001, 0x6f00, 0x2004,
+ 0xa086, 0x0003, 0x0040, 0x5860, 0x2001, 0x0007, 0x1078, 0x3443,
+ 0x1078, 0x55a1, 0x1078, 0x2192, 0x007c, 0x0e7e, 0x2071, 0x6f00,
+ 0x7070, 0xa086, 0x0014, 0x00c0, 0x588a, 0x7000, 0xa086, 0x0003,
+ 0x00c0, 0x5874, 0x1078, 0x2a40, 0x0d7e, 0x6018, 0x2068, 0x1078,
+ 0x3513, 0x1078, 0x582a, 0x0d7f, 0x1078, 0x5989, 0x00c0, 0x588a,
+ 0x2001, 0x0006, 0x1078, 0x3443, 0x1078, 0x55a1, 0x1078, 0x2192,
+ 0x0078, 0x588c, 0x1078, 0x5855, 0x0e7f, 0x007c, 0x2011, 0x6f1c,
+ 0x2204, 0xa086, 0x0014, 0x00c0, 0x58a1, 0x2001, 0x0002, 0x1078,
+ 0x3443, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4445, 0x0078,
+ 0x58a3, 0x1078, 0x5855, 0x007c, 0x2011, 0x6f1c, 0x2204, 0xa086,
+ 0x0004, 0x00c0, 0x58b3, 0x2001, 0x0007, 0x1078, 0x3443, 0x1078,
+ 0x55a1, 0x0078, 0x58b5, 0x1078, 0x5855, 0x007c, 0x57f9, 0x58c2,
+ 0x57f9, 0x58e8, 0x57f9, 0x5934, 0x57f9, 0x57f9, 0x57f9, 0x5947,
+ 0x57f9, 0x595a, 0x0c7e, 0x1078, 0x596d, 0x00c0, 0x58d7, 0x2001,
+ 0x0000, 0x1078, 0x342f, 0x2001, 0x0002, 0x1078, 0x3443, 0x6003,
+ 0x0001, 0x6007, 0x0002, 0x1078, 0x4445, 0x0078, 0x58e6, 0x2009,
+ 0x738f, 0x2104, 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x58e4,
+ 0x1078, 0x55a1, 0x0078, 0x58e6, 0x1078, 0x5855, 0x0c7f, 0x007c,
+ 0x1078, 0x597c, 0x00c0, 0x58fc, 0x2001, 0x0000, 0x1078, 0x342f,
+ 0x2001, 0x0002, 0x1078, 0x3443, 0x6003, 0x0001, 0x6007, 0x0002,
+ 0x1078, 0x4445, 0x0078, 0x591c, 0x2009, 0x738e, 0x2134, 0xa6b4,
+ 0x00ff, 0xa686, 0x0005, 0x0040, 0x591d, 0x2009, 0x738f, 0x2104,
+ 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x591a, 0xa686, 0x0009,
+ 0x0040, 0x591d, 0x2001, 0x0004, 0x1078, 0x3443, 0x1078, 0x55a1,
+ 0x0078, 0x591c, 0x1078, 0x5855, 0x007c, 0x0d7e, 0x6018, 0x2068,
+ 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x592f, 0x8001, 0x6842,
+ 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f, 0x0078, 0x591c, 0x1078,
+ 0x2174, 0x0d7f, 0x0078, 0x591a, 0x1078, 0x597c, 0x00c0, 0x5944,
+ 0x2001, 0x0004, 0x1078, 0x3443, 0x6003, 0x0001, 0x6007, 0x0003,
+ 0x1078, 0x4445, 0x0078, 0x5946, 0x1078, 0x5855, 0x007c, 0x1078,
+ 0x597c, 0x00c0, 0x5957, 0x2001, 0x0008, 0x1078, 0x3443, 0x6003,
+ 0x0001, 0x6007, 0x0005, 0x1078, 0x4445, 0x0078, 0x5959, 0x1078,
+ 0x5855, 0x007c, 0x1078, 0x597c, 0x00c0, 0x596a, 0x2001, 0x000a,
+ 0x1078, 0x3443, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4445,
+ 0x0078, 0x596c, 0x1078, 0x5855, 0x007c, 0x2009, 0x738e, 0x2104,
+ 0xa086, 0x0003, 0x00c0, 0x597b, 0x2009, 0x738f, 0x2104, 0xa084,
+ 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001, 0x007c, 0x0c7e,
+ 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x34a9, 0x017f, 0x0c7f,
+ 0x007c, 0x0e7e, 0x2071, 0x738c, 0x7004, 0xa086, 0x0014, 0x00c0,
+ 0x59ac, 0x7008, 0xa086, 0x0800, 0x00c0, 0x59ac, 0x700c, 0xd0ec,
+ 0x0040, 0x59aa, 0xa084, 0x0f00, 0xa086, 0x0100, 0x00c0, 0x59aa,
+ 0x7024, 0xd0a4, 0x0040, 0x59aa, 0xd08c, 0x0040, 0x59aa, 0xa006,
+ 0x0078, 0x59ac, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x0e7e, 0x0d7e,
+ 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e, 0x127e, 0x2091,
+ 0x8000, 0x2029, 0x70bf, 0x252c, 0x2021, 0x70c5, 0x2424, 0x2061,
+ 0x7500, 0x2071, 0x6f00, 0x7244, 0x7060, 0xa202, 0x00c8, 0x5a03,
+ 0x1078, 0x6da8, 0x0040, 0x59fb, 0x671c, 0xa786, 0x0001, 0x0040,
+ 0x59fb, 0xa786, 0x0007, 0x0040, 0x59fb, 0x2500, 0xac06, 0x0040,
+ 0x59fb, 0x2400, 0xac06, 0x0040, 0x59fb, 0x0c7e, 0x6000, 0xa086,
+ 0x0004, 0x00c0, 0x59e5, 0x1078, 0x1627, 0x6010, 0x2068, 0x1078,
+ 0x61dc, 0x0040, 0x59f8, 0xa786, 0x0003, 0x00c0, 0x5a0d, 0x6837,
+ 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x36ec, 0x1078, 0x62f0,
+ 0x1078, 0x62fd, 0x0c7f, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8,
+ 0x5a03, 0x0078, 0x59c3, 0x127f, 0x007f, 0x027f, 0x047f, 0x057f,
+ 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0,
+ 0x59ef, 0x1078, 0x6d4c, 0x0078, 0x59f8, 0x220c, 0x2304, 0xa106,
+ 0x00c0, 0x5a20, 0x8210, 0x8318, 0x00f0, 0x5a15, 0xa006, 0x007c,
+ 0x2304, 0xa102, 0x0048, 0x5a28, 0x2001, 0x0001, 0x0078, 0x5a2a,
+ 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004, 0xa08a, 0x0030,
+ 0x10c8, 0x1286, 0x1078, 0x6316, 0x0040, 0x5a3c, 0x1078, 0x632a,
+ 0x0040, 0x5a45, 0x0078, 0x5a3e, 0x1078, 0x2192, 0x1078, 0x4754,
+ 0x1078, 0x55a1, 0x1078, 0x484d, 0x007c, 0x1078, 0x579c, 0x0078,
+ 0x5a3e, 0xa182, 0x0040, 0x0079, 0x5a4d, 0x5a5d, 0x5a5d, 0x5a5d,
+ 0x5a5d, 0x5a5d, 0x5a5d, 0x5a5d, 0x5a5d, 0x5a5d, 0x5a5d, 0x5a5d,
+ 0x5a5f, 0x5a5f, 0x5a5f, 0x5a5f, 0x5a5d, 0x1078, 0x1286, 0x6003,
+ 0x0001, 0x6106, 0x1078, 0x43f8, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x484d, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x5a74, 0x6004,
+ 0xa082, 0x0040, 0x0079, 0x5aea, 0xa186, 0x0027, 0x00c0, 0x5a91,
+ 0x1078, 0x4754, 0x1078, 0x2174, 0x0d7e, 0x6110, 0x2168, 0x1078,
+ 0x61dc, 0x0040, 0x5a8b, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078,
+ 0x36ec, 0x1078, 0x62f0, 0x0d7f, 0x1078, 0x55a1, 0x1078, 0x484d,
+ 0x007c, 0xa186, 0x0014, 0x00c0, 0x5a9a, 0x6004, 0xa082, 0x0040,
+ 0x0079, 0x5aba, 0xa186, 0x0047, 0x10c0, 0x1286, 0x2001, 0x0109,
+ 0x2004, 0xd084, 0x0040, 0x5ab7, 0x127e, 0x2091, 0x2200, 0x007e,
+ 0x017e, 0x027e, 0x1078, 0x42cb, 0x027f, 0x017f, 0x007f, 0x127f,
+ 0x6000, 0xa086, 0x0002, 0x00c0, 0x5ab7, 0x0078, 0x5b11, 0x1078,
+ 0x55d5, 0x007c, 0x5acc, 0x5aca, 0x5aca, 0x5aca, 0x5aca, 0x5aca,
+ 0x5aca, 0x5aca, 0x5aca, 0x5aca, 0x5aca, 0x5ae3, 0x5ae3, 0x5ae3,
+ 0x5ae3, 0x5aca, 0x1078, 0x1286, 0x1078, 0x4754, 0x0d7e, 0x6110,
+ 0x2168, 0x1078, 0x61dc, 0x0040, 0x5add, 0x6837, 0x0103, 0x684b,
+ 0x0006, 0x1078, 0x36ec, 0x1078, 0x62f0, 0x0d7f, 0x1078, 0x55a1,
+ 0x1078, 0x484d, 0x007c, 0x1078, 0x4754, 0x1078, 0x55a1, 0x1078,
+ 0x484d, 0x007c, 0x5afc, 0x5afa, 0x5afa, 0x5afa, 0x5afa, 0x5afa,
+ 0x5afa, 0x5afa, 0x5afa, 0x5afa, 0x5afa, 0x5b0a, 0x5b0a, 0x5b0a,
+ 0x5b0a, 0x5afa, 0x1078, 0x1286, 0x1078, 0x4754, 0x6003, 0x0002,
+ 0x1078, 0x484d, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400,
+ 0x200a, 0x007c, 0x1078, 0x4754, 0x6003, 0x000f, 0x1078, 0x484d,
+ 0x007c, 0xa182, 0x0040, 0x0079, 0x5b15, 0x5b25, 0x5b25, 0x5b25,
+ 0x5b25, 0x5b25, 0x5b27, 0x5bb0, 0x5bc8, 0x5b25, 0x5b25, 0x5b25,
+ 0x5b25, 0x5b25, 0x5b25, 0x5b25, 0x5b25, 0x1078, 0x1286, 0x0e7e,
+ 0x0d7e, 0x2071, 0x738c, 0x6110, 0x2168, 0x7614, 0xa6b4, 0x0fff,
+ 0x86ff, 0x0040, 0x5b94, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040,
+ 0x5b59, 0xa186, 0x0028, 0x00c0, 0x5b43, 0x1078, 0x6304, 0x684b,
+ 0x001c, 0x0078, 0x5b5b, 0xd6dc, 0x0040, 0x5b4e, 0x684b, 0x0015,
+ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5b5b, 0xd6d4, 0x0040,
+ 0x5b59, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078,
+ 0x5b5b, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46, 0xa01e, 0xd6c4,
+ 0x0040, 0x5b6e, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019,
+ 0x7398, 0xad90, 0x0019, 0x1078, 0x5fd2, 0x037f, 0xd6cc, 0x0040,
+ 0x5ba4, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x5b82, 0x2071,
+ 0x7398, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x5fd2,
+ 0x0078, 0x5ba4, 0x6838, 0xd0fc, 0x0040, 0x5b8b, 0x2009, 0x0020,
+ 0x695a, 0x0078, 0x5b77, 0x0f7e, 0x2d78, 0x1078, 0x5f6a, 0x0f7f,
+ 0x1078, 0x5fbf, 0x0078, 0x5ba6, 0x684b, 0x0000, 0x6837, 0x0103,
+ 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x5ba4, 0x6810, 0x6914, 0xa115,
+ 0x0040, 0x5ba4, 0x1078, 0x5d18, 0x1078, 0x36ec, 0x6218, 0x2268,
+ 0x6a3c, 0x8211, 0x6a3e, 0x0d7f, 0x0e7f, 0x1078, 0x55a1, 0x007c,
+ 0x0f7e, 0x6003, 0x0003, 0x2079, 0x738c, 0x7c04, 0x7b00, 0x7e0c,
+ 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f,
+ 0x2c10, 0x1078, 0x191c, 0x1078, 0x4464, 0x1078, 0x48fd, 0x007c,
+ 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
+ 0x1078, 0x1523, 0x007c, 0xa182, 0x0040, 0x0079, 0x5bd7, 0x5be7,
+ 0x5be7, 0x5be7, 0x5be7, 0x5be7, 0x5be9, 0x5c80, 0x5be7, 0x5be7,
+ 0x5c96, 0x5cf8, 0x5be7, 0x5be7, 0x5be7, 0x5be7, 0x5cff, 0x1078,
+ 0x1286, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x738c, 0x6110,
+ 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e,
+ 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x5c7b,
+ 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x5c0a, 0x7018, 0x7862,
+ 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x5c7b, 0x1078, 0x12e0,
+ 0x1040, 0x1286, 0x2d00, 0x784a, 0x7f4c, 0xc7cd, 0x7f4e, 0x6837,
+ 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46,
+ 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x5c44, 0xa186, 0x0028,
+ 0x00c0, 0x5c2e, 0x684b, 0x001c, 0x0078, 0x5c46, 0xd6dc, 0x0040,
+ 0x5c39, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078,
+ 0x5c46, 0xd6d4, 0x0040, 0x5c44, 0x684b, 0x0007, 0x7318, 0x6b62,
+ 0x731c, 0x6b5e, 0x0078, 0x5c46, 0x684b, 0x0000, 0x6f4e, 0x7850,
+ 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x5c5b, 0x7328,
+ 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7398, 0xad90, 0x0019,
+ 0x1078, 0x5fd2, 0x037f, 0xd6cc, 0x0040, 0x5c7b, 0x7124, 0x695a,
+ 0xa192, 0x0021, 0x00c8, 0x5c6f, 0x2071, 0x7398, 0x831c, 0x2300,
+ 0xae18, 0xad90, 0x001d, 0x1078, 0x5fd2, 0x0078, 0x5c7b, 0x7838,
+ 0xd0fc, 0x0040, 0x5c78, 0x2009, 0x0020, 0x695a, 0x0078, 0x5c64,
+ 0x2d78, 0x1078, 0x5f6a, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f, 0x007c,
+ 0x0f7e, 0x6003, 0x0003, 0x2079, 0x738c, 0x7c04, 0x7b00, 0x7e0c,
+ 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a, 0x7d0e, 0x0f7f,
+ 0x2c10, 0x1078, 0x191c, 0x1078, 0x4f2a, 0x007c, 0x0d7e, 0x6003,
+ 0x0002, 0x1078, 0x47fc, 0x1078, 0x48fd, 0x6110, 0x2168, 0x694c,
+ 0xd1e4, 0x0040, 0x5cf6, 0xd1cc, 0x0040, 0x5cd1, 0x6948, 0x6838,
+ 0xd0fc, 0x0040, 0x5cc9, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e,
+ 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8,
+ 0x2304, 0x2012, 0x8318, 0x8210, 0x00f0, 0x5cb8, 0x157f, 0x007f,
+ 0x6852, 0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x1309, 0x0078,
+ 0x5cf4, 0x017e, 0x1078, 0x1309, 0x0d7f, 0x1078, 0x5fbf, 0x0078,
+ 0x5cf4, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002,
+ 0x0040, 0x5cf0, 0xa086, 0x0028, 0x00c0, 0x5ce2, 0x684b, 0x001c,
+ 0x0078, 0x5cf2, 0xd1dc, 0x0040, 0x5ce9, 0x684b, 0x0015, 0x0078,
+ 0x5cf2, 0xd1d4, 0x0040, 0x5cf0, 0x684b, 0x0007, 0x0078, 0x5cf2,
+ 0x684b, 0x0000, 0x1078, 0x36ec, 0x1078, 0x55a1, 0x0d7f, 0x007c,
+ 0x6003, 0x0002, 0x1078, 0x47fc, 0x1078, 0x48fd, 0x007c, 0x1078,
+ 0x47fc, 0x1078, 0x2174, 0x0d7e, 0x6110, 0x2168, 0x1078, 0x61dc,
+ 0x0040, 0x5d12, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x36ec,
+ 0x1078, 0x62f0, 0x0d7f, 0x1078, 0x55a1, 0x1078, 0x48fd, 0x007c,
+ 0x684b, 0x0015, 0xd1fc, 0x0040, 0x5d24, 0x684b, 0x0007, 0x8002,
+ 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e, 0x007c, 0xa182,
+ 0x0040, 0x0079, 0x5d2b, 0x5d3b, 0x5d3b, 0x5d3b, 0x5d3b, 0x5d3b,
+ 0x5d3d, 0x5d3b, 0x5de1, 0x5de9, 0x5d3b, 0x5d3b, 0x5d3b, 0x5d3b,
+ 0x5d3b, 0x5d3b, 0x5d3b, 0x1078, 0x1286, 0x077e, 0x0f7e, 0x0e7e,
+ 0x0d7e, 0x2071, 0x738c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff,
+ 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211,
+ 0x6a3e, 0x86ff, 0x0040, 0x5dd3, 0xa694, 0xff00, 0xa284, 0x0c00,
+ 0x0040, 0x5d5e, 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300,
+ 0x0040, 0x5dd0, 0x1078, 0x12e0, 0x1040, 0x1286, 0x2d00, 0x784a,
+ 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a,
+ 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186,
+ 0x0002, 0x0040, 0x5d99, 0xa186, 0x0028, 0x00c0, 0x5d83, 0x684b,
+ 0x001c, 0x0078, 0x5d9b, 0xd6dc, 0x0040, 0x5d8e, 0x684b, 0x0015,
+ 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x5d9b, 0xd6d4, 0x0040,
+ 0x5d99, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078,
+ 0x5d9b, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856,
+ 0xa01e, 0xd6c4, 0x0040, 0x5db0, 0x7328, 0x732c, 0x6b56, 0x037e,
+ 0x2308, 0x2019, 0x7398, 0xad90, 0x0019, 0x1078, 0x5fd2, 0x037f,
+ 0xd6cc, 0x0040, 0x5dd0, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8,
+ 0x5dc4, 0x2071, 0x7398, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d,
+ 0x1078, 0x5fd2, 0x0078, 0x5dd0, 0x7838, 0xd0fc, 0x0040, 0x5dcd,
+ 0x2009, 0x0020, 0x695a, 0x0078, 0x5db9, 0x2d78, 0x1078, 0x5f6a,
+ 0xd6dc, 0x00c0, 0x5dd6, 0xa006, 0x0078, 0x5dda, 0x2001, 0x0001,
+ 0x7218, 0x731c, 0x1078, 0x1567, 0x0d7f, 0x0e7f, 0x0f7f, 0x077f,
+ 0x007c, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1523,
+ 0x007c, 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168, 0x694c, 0xd1e4,
+ 0x0040, 0x5e50, 0xd1cc, 0x0040, 0x5e20, 0x6948, 0x6838, 0xd0fc,
+ 0x0040, 0x5e18, 0x017e, 0x684c, 0x007e, 0x6850, 0x007e, 0xad90,
+ 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e, 0x21a8, 0x2304,
+ 0x2012, 0x8318, 0x8210, 0x00f0, 0x5e07, 0x157f, 0x007f, 0x6852,
+ 0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x1309, 0x0078, 0x5e4e,
+ 0x017e, 0x1078, 0x1309, 0x0d7f, 0x1078, 0x5fbf, 0x0078, 0x5e4e,
+ 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186, 0x0002, 0x0040,
+ 0x5e3f, 0xa086, 0x0028, 0x00c0, 0x5e31, 0x684b, 0x001c, 0x0078,
+ 0x5e4c, 0xd1dc, 0x0040, 0x5e38, 0x684b, 0x0015, 0x0078, 0x5e4c,
+ 0xd1d4, 0x0040, 0x5e3f, 0x684b, 0x0007, 0x0078, 0x5e4c, 0x684b,
+ 0x0000, 0x684c, 0xd0ac, 0x0040, 0x5e4c, 0x6810, 0x6914, 0xa115,
+ 0x0040, 0x5e4c, 0x1078, 0x5d18, 0x1078, 0x36ec, 0x1078, 0x55a1,
+ 0x0d7f, 0x007c, 0x1078, 0x4754, 0x0078, 0x5e58, 0x1078, 0x47fc,
+ 0x1078, 0x61dc, 0x0040, 0x5e6f, 0x0d7e, 0x6110, 0x2168, 0x6837,
+ 0x0103, 0x2009, 0x6f0c, 0x210c, 0xd18c, 0x00c0, 0x5e78, 0xd184,
+ 0x00c0, 0x5e74, 0x6108, 0x694a, 0x1078, 0x36ec, 0x0d7f, 0x1078,
+ 0x55a1, 0x1078, 0x484d, 0x007c, 0x684b, 0x0004, 0x0078, 0x5e6c,
+ 0x684b, 0x0004, 0x0078, 0x5e6c, 0xa182, 0x0040, 0x0079, 0x5e80,
+ 0x5e90, 0x5e90, 0x5e90, 0x5e90, 0x5e90, 0x5e92, 0x5e90, 0x5e95,
+ 0x5e90, 0x5e90, 0x5e90, 0x5e90, 0x5e90, 0x5e90, 0x5e90, 0x5e90,
+ 0x1078, 0x1286, 0x1078, 0x55a1, 0x007c, 0x007e, 0x027e, 0xa016,
+ 0x1078, 0x1523, 0x027f, 0x007f, 0x007c, 0xa182, 0x0085, 0x0079,
+ 0x5ea1, 0x5eaa, 0x5ea8, 0x5ea8, 0x5ea8, 0x5ea8, 0x5ea8, 0x5ea8,
+ 0x1078, 0x1286, 0x6003, 0x0001, 0x6106, 0x1078, 0x43f8, 0x127e,
+ 0x2091, 0x8000, 0x1078, 0x484d, 0x127f, 0x007c, 0xa186, 0x0013,
+ 0x00c0, 0x5ec0, 0x6004, 0xa082, 0x0085, 0x2008, 0x0079, 0x5ef4,
+ 0xa186, 0x0027, 0x00c0, 0x5ee1, 0x1078, 0x4754, 0x1078, 0x2174,
+ 0x0d7e, 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040, 0x5ed7, 0x6837,
+ 0x0103, 0x684b, 0x0029, 0x1078, 0x36ec, 0x1078, 0x62f0, 0x0d7f,
+ 0x1078, 0x55a1, 0x1078, 0x484d, 0x007c, 0x1078, 0x55d5, 0x0078,
+ 0x5edc, 0xa186, 0x0014, 0x00c0, 0x5edd, 0x1078, 0x4754, 0x0d7e,
+ 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040, 0x5ed7, 0x6837, 0x0103,
+ 0x684b, 0x0006, 0x0078, 0x5ed3, 0x5efd, 0x5efb, 0x5efb, 0x5efb,
+ 0x5efb, 0x5efb, 0x5f06, 0x1078, 0x1286, 0x1078, 0x4754, 0x6017,
+ 0x0014, 0x6003, 0x000c, 0x1078, 0x484d, 0x007c, 0x1078, 0x4754,
+ 0x6017, 0x0014, 0x6003, 0x000e, 0x1078, 0x484d, 0x007c, 0xa182,
+ 0x008c, 0x00c8, 0x5f19, 0xa182, 0x0085, 0x0048, 0x5f19, 0x0079,
+ 0x5f1c, 0x1078, 0x55d5, 0x007c, 0x5f23, 0x5f23, 0x5f23, 0x5f23,
+ 0x5f25, 0x5f44, 0x5f23, 0x1078, 0x1286, 0x0d7e, 0x1078, 0x62f0,
+ 0x1078, 0x61dc, 0x0040, 0x5f40, 0x6010, 0x2068, 0x6837, 0x0103,
+ 0x6850, 0xd0b4, 0x0040, 0x5f38, 0x684b, 0x0006, 0x0078, 0x5f3c,
+ 0x684b, 0x0005, 0x1078, 0x63a3, 0x6847, 0x0000, 0x1078, 0x36ec,
+ 0x1078, 0x55a1, 0x0d7f, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078,
+ 0x61dc, 0x0040, 0x5f5f, 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040,
+ 0x5f55, 0x684b, 0x0006, 0x0078, 0x5f59, 0x684b, 0x0005, 0x1078,
+ 0x63a3, 0x6847, 0x0000, 0x1078, 0x36ec, 0x1078, 0x62f0, 0x0d7f,
+ 0x1078, 0x55a1, 0x007c, 0x1078, 0x4754, 0x1078, 0x55a1, 0x1078,
+ 0x484d, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e, 0x2029, 0x0001,
+ 0xa182, 0x0101, 0x00c8, 0x5f76, 0x0078, 0x5f78, 0x2009, 0x0100,
+ 0x2130, 0x2069, 0x7398, 0x831c, 0x2300, 0xad18, 0x2009, 0x0020,
+ 0xaf90, 0x001d, 0x1078, 0x5fd2, 0xa6b2, 0x0020, 0x7804, 0xa06d,
+ 0x0040, 0x5f8c, 0x1078, 0x1309, 0x1078, 0x12e0, 0x0040, 0x5fb6,
+ 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20, 0x7c06, 0xa68a,
+ 0x003d, 0x00c8, 0x5fa2, 0x2608, 0xad90, 0x000f, 0x1078, 0x5fd2,
+ 0x0078, 0x5fb6, 0xa6b2, 0x003c, 0x2009, 0x003c, 0x2d78, 0xad90,
+ 0x000f, 0x1078, 0x5fd2, 0x0078, 0x5f8c, 0x0f7f, 0x852f, 0xa5ad,
+ 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x5fbb, 0x0f7f, 0x852f,
+ 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f, 0x007c, 0x0f7e,
+ 0x8dff, 0x0040, 0x5fd0, 0x6804, 0xa07d, 0x0040, 0x5fce, 0x6807,
+ 0x0000, 0x1078, 0x36ec, 0x2f68, 0x0078, 0x5fc3, 0x1078, 0x36ec,
+ 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040, 0x5fd8, 0x8108,
+ 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318, 0x8210, 0x00f0,
+ 0x5fda, 0x157f, 0x007c, 0x127e, 0x2091, 0x8000, 0x601c, 0xa084,
+ 0x0007, 0x1079, 0x5fed, 0x127f, 0x007c, 0x5ffc, 0x5ff5, 0x5ff7,
+ 0x6015, 0x5ff5, 0x5ff7, 0x5ff7, 0x5ff7, 0x1078, 0x1286, 0xa006,
+ 0x007c, 0xa085, 0x0001, 0x007c, 0x0d7e, 0x6010, 0x2068, 0x1078,
+ 0x61dc, 0x0040, 0x6012, 0xa00e, 0x2001, 0x0005, 0x1078, 0x377c,
+ 0x1078, 0x63a3, 0x1078, 0x36ec, 0x1078, 0x55a1, 0xa085, 0x0001,
+ 0x0d7f, 0x007c, 0xa006, 0x0078, 0x6010, 0x6000, 0xa08a, 0x0010,
+ 0x10c8, 0x1286, 0x1079, 0x601d, 0x007c, 0x602d, 0x604a, 0x602f,
+ 0x605b, 0x6046, 0x602d, 0x5ff7, 0x5ffc, 0x5ffc, 0x5ff7, 0x5ff7,
+ 0x5ff7, 0x5ff7, 0x5ff7, 0x5ff7, 0x5ff7, 0x1078, 0x1286, 0x0d7e,
+ 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040, 0x6038, 0x1078, 0x63a3,
+ 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x1078,
+ 0x43f8, 0x1078, 0x484d, 0xa085, 0x0001, 0x007c, 0x1078, 0x1627,
+ 0x0078, 0x602f, 0x0e7e, 0x2071, 0x70b6, 0x7024, 0xac06, 0x00c0,
+ 0x6053, 0x1078, 0x5075, 0x1078, 0x4fe3, 0x0e7f, 0x00c0, 0x602f,
+ 0x1078, 0x5ff7, 0x007c, 0x037e, 0x0e7e, 0x2071, 0x70b6, 0x703c,
+ 0xac06, 0x00c0, 0x6067, 0x2019, 0x0000, 0x1078, 0x5107, 0x1078,
+ 0x53e3, 0x0e7f, 0x037f, 0x00c0, 0x602f, 0x1078, 0x5ff7, 0x007c,
+ 0x0c7e, 0x601c, 0xa084, 0x0007, 0x1079, 0x6078, 0x0c7f, 0x007c,
+ 0x6086, 0x60e3, 0x6180, 0x608a, 0x6086, 0x6086, 0x6a30, 0x55a1,
+ 0x1078, 0x632a, 0x00c0, 0x6086, 0x1078, 0x579c, 0x007c, 0x6017,
+ 0x0001, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1286, 0x1079,
+ 0x6092, 0x007c, 0x60a2, 0x60a4, 0x60c4, 0x60d6, 0x60d6, 0x60a2,
+ 0x6086, 0x6086, 0x6086, 0x60d6, 0x60d6, 0x60a2, 0x60a2, 0x60a2,
+ 0x60a2, 0x60e0, 0x1078, 0x1286, 0x0e7e, 0x6010, 0x2070, 0x7050,
+ 0xc0b5, 0x7052, 0x2071, 0x70b6, 0x7024, 0xac06, 0x0040, 0x60c0,
+ 0x1078, 0x4fe3, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002,
+ 0x6017, 0x0014, 0x1078, 0x43f8, 0x1078, 0x484d, 0x0e7f, 0x007c,
+ 0x6017, 0x0001, 0x0078, 0x60be, 0x0d7e, 0x6010, 0x2068, 0x6850,
+ 0xc0b5, 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f,
+ 0x0002, 0x1078, 0x43f8, 0x1078, 0x484d, 0x007c, 0x0d7e, 0x6017,
+ 0x0001, 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x007c,
+ 0x1078, 0x55a1, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1286,
+ 0x1079, 0x60eb, 0x007c, 0x60fb, 0x6087, 0x60fd, 0x60fb, 0x60fb,
+ 0x60fb, 0x60fb, 0x60fb, 0x6080, 0x6080, 0x60fb, 0x60fb, 0x60fb,
+ 0x60fb, 0x60fb, 0x60fb, 0x1078, 0x1286, 0x0d7e, 0x6018, 0x2068,
+ 0x6804, 0xa084, 0x00ff, 0x0d7f, 0xa08a, 0x000c, 0x10c8, 0x1286,
+ 0x1079, 0x610b, 0x007c, 0x6117, 0x6132, 0x6117, 0x6132, 0x6117,
+ 0x6132, 0x6119, 0x6122, 0x6117, 0x6132, 0x6117, 0x6127, 0x1078,
+ 0x1286, 0x6004, 0xa08e, 0x0004, 0x0040, 0x6129, 0xa08e, 0x0002,
+ 0x0040, 0x6129, 0x6004, 0x1078, 0x632a, 0x0040, 0x617c, 0x1078,
+ 0x2174, 0x1078, 0x632a, 0x00c0, 0x612f, 0x1078, 0x579c, 0x1078,
+ 0x55a1, 0x007c, 0x0c7e, 0x0d7e, 0x6104, 0xa186, 0x0016, 0x0040,
+ 0x616c, 0xa186, 0x0002, 0x00c0, 0x6157, 0x6018, 0x2068, 0x6840,
+ 0xa084, 0x00ff, 0xa005, 0x0040, 0x6157, 0x8001, 0x6842, 0x6013,
+ 0x0000, 0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x553b, 0x0040,
+ 0x6157, 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x616c, 0x0d7f,
+ 0x0c7f, 0x1078, 0x632a, 0x00c0, 0x615f, 0x1078, 0x579c, 0x1078,
+ 0x2174, 0x0e7e, 0x127e, 0x2091, 0x8000, 0x1078, 0x2192, 0x127f,
+ 0x0e7f, 0x1078, 0x55a1, 0x007c, 0x2001, 0x0002, 0x1078, 0x3443,
+ 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4445, 0x1078, 0x484d,
+ 0x0d7f, 0x0c7f, 0x0078, 0x616b, 0x1078, 0x579c, 0x0078, 0x612f,
+ 0x6000, 0xa08a, 0x0010, 0x10c8, 0x1286, 0x1079, 0x6188, 0x007c,
+ 0x6198, 0x6198, 0x6198, 0x6198, 0x6198, 0x6198, 0x6198, 0x6198,
+ 0x6198, 0x6086, 0x6198, 0x6087, 0x619a, 0x6087, 0x61a3, 0x6198,
+ 0x1078, 0x1286, 0x6007, 0x008b, 0x6003, 0x000d, 0x1078, 0x43f8,
+ 0x1078, 0x484d, 0x007c, 0x1078, 0x62f0, 0x1078, 0x61dc, 0x0040,
+ 0x61c5, 0x1078, 0x2174, 0x0d7e, 0x1078, 0x61dc, 0x0040, 0x61b8,
+ 0x6010, 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078, 0x36ec,
+ 0x0d7f, 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078,
+ 0x4445, 0x1078, 0x484d, 0x0078, 0x61c7, 0x1078, 0x55a1, 0x007c,
+ 0xa284, 0x0007, 0x00c0, 0x61d9, 0xa282, 0x7500, 0x0048, 0x61d9,
+ 0x2001, 0x6f15, 0x2004, 0xa202, 0x00c8, 0x61d9, 0xa085, 0x0001,
+ 0x007c, 0xa006, 0x0078, 0x61d8, 0x027e, 0x0e7e, 0x2071, 0x6f00,
+ 0x6210, 0x7058, 0xa202, 0x0048, 0x61ee, 0x705c, 0xa202, 0x00c8,
+ 0x61ee, 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c, 0xa006, 0x0078,
+ 0x61eb, 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e, 0x2091, 0x8000,
+ 0x2061, 0x7500, 0x2071, 0x6f00, 0x7344, 0x7060, 0xa302, 0x00c8,
+ 0x6217, 0x601c, 0xa206, 0x00c0, 0x620f, 0x1078, 0x632a, 0x00c0,
+ 0x620b, 0x1078, 0x579c, 0x0c7e, 0x1078, 0x55a1, 0x0c7f, 0xace0,
+ 0x0008, 0x7054, 0xac02, 0x00c8, 0x6217, 0x0078, 0x61fc, 0x127f,
+ 0x007f, 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0c7e, 0x057e, 0x127e,
+ 0x2091, 0x8000, 0x0c7e, 0x1078, 0x553b, 0x057f, 0x0040, 0x6236,
+ 0x6612, 0x651a, 0x601f, 0x0003, 0x2009, 0x004b, 0x1078, 0x55c8,
+ 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078,
+ 0x6232, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e,
+ 0x1078, 0x553b, 0x057f, 0x0040, 0x6260, 0x6013, 0x0000, 0x651a,
+ 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078, 0x3618, 0x0c7f, 0x1078,
+ 0x4535, 0x1078, 0x4478, 0x2c08, 0x1078, 0x6bca, 0x2009, 0x004c,
+ 0x1078, 0x55c8, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c,
+ 0xa006, 0x0078, 0x625c, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000,
+ 0x62a0, 0x0c7e, 0x1078, 0x553b, 0x057f, 0x0040, 0x628b, 0x6612,
+ 0x651a, 0x601f, 0x0003, 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078,
+ 0x3618, 0x0c7f, 0x1078, 0x4535, 0x1078, 0x4478, 0x2c08, 0x1078,
+ 0x6bca, 0x2009, 0x004d, 0x1078, 0x55c8, 0xa085, 0x0001, 0x127f,
+ 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6287, 0x0c7e, 0x057e,
+ 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x553b, 0x057f,
+ 0x0040, 0x62b6, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005,
+ 0x0c7e, 0x2560, 0x1078, 0x3618, 0x0c7f, 0x1078, 0x4535, 0x1078,
+ 0x4478, 0x2c08, 0x1078, 0x6bca, 0x2009, 0x004e, 0x1078, 0x55c8,
0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078,
- 0x69ba, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e,
- 0x1078, 0x5b4e, 0x057f, 0x0040, 0x69e9, 0x6612, 0x651a, 0x601f,
- 0x0003, 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x3958, 0x0c7f,
- 0x1078, 0x4914, 0x1078, 0x4857, 0x2c08, 0x1078, 0x7326, 0x2009,
- 0x004e, 0x1078, 0x5bdb, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
- 0x007c, 0xa006, 0x0078, 0x69e5, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x0c7e, 0x1078, 0x5b4e, 0x017f, 0x0040, 0x6a05, 0x660a, 0x611a,
- 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x5bdb,
- 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6a02,
- 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5b4e, 0x017f,
- 0x0040, 0x6a21, 0x660a, 0x611a, 0x601f, 0x0008, 0x2d00, 0x6012,
- 0x2009, 0x0021, 0x1078, 0x5bdb, 0xa085, 0x0001, 0x127f, 0x0c7f,
- 0x007c, 0xa006, 0x0078, 0x6a1e, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x0c7e, 0x1078, 0x5b4e, 0x017f, 0x0040, 0x6a3c, 0x611a, 0x601f,
- 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078, 0x5bdb, 0xa085,
- 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6a39, 0x027e,
- 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040, 0x6a49, 0x8211,
- 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x6013, 0x0000, 0x601f, 0x0007,
- 0x6017, 0x0014, 0x007c, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x7652,
- 0x2634, 0xd6e4, 0x0040, 0x6a61, 0x6618, 0x2660, 0x6e44, 0x1078,
- 0x3890, 0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, 0x017e, 0x6004,
- 0xa08e, 0x0002, 0x0040, 0x6a76, 0xa08e, 0x0003, 0x0040, 0x6a76,
- 0xa08e, 0x0004, 0x0040, 0x6a76, 0xa085, 0x0001, 0x017f, 0x007f,
- 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0000, 0x0040, 0x6a8e,
- 0xa08e, 0x001f, 0x0040, 0x6a8e, 0xa08e, 0x0028, 0x0040, 0x6a8e,
- 0xa08e, 0x0029, 0x0040, 0x6a8e, 0xa085, 0x0001, 0x017f, 0x007f,
- 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5b4e,
- 0x017f, 0x0040, 0x6aab, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012,
- 0x1078, 0x228f, 0x2009, 0x0028, 0x1078, 0x5bdb, 0xa085, 0x0001,
- 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6aa8, 0xa186, 0x0015,
- 0x00c0, 0x6ac3, 0x2011, 0x761e, 0x2204, 0xa086, 0x0074, 0x00c0,
- 0x6ac3, 0x1078, 0x6079, 0x6003, 0x0001, 0x6007, 0x0029, 0x1078,
- 0x4824, 0x0078, 0x6ac7, 0x1078, 0x5e09, 0x1078, 0x5bb4, 0x007c,
- 0xa186, 0x0015, 0x00c0, 0x6ae5, 0x2011, 0x761e, 0x2204, 0xa086,
- 0x0014, 0x00c0, 0x6ae5, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x3853,
- 0x0d7f, 0x1078, 0x6083, 0x00c0, 0x6ae5, 0x2001, 0x0006, 0x1078,
- 0x3783, 0x1078, 0x5c5f, 0x0078, 0x6ae9, 0x1078, 0x5e09, 0x1078,
- 0x5bb4, 0x007c, 0x6848, 0xa086, 0x0005, 0x00c0, 0x6af1, 0x1078,
- 0x6af2, 0x007c, 0x6850, 0xc0ad, 0x6852, 0x007c, 0x067e, 0x6000,
- 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6b00, 0x067f, 0x007c,
- 0x6b10, 0x6ce7, 0x6dc8, 0x6b10, 0x6b10, 0x6b10, 0x6b10, 0x6b10,
- 0x6b4a, 0x6e36, 0x6b10, 0x6b10, 0x6b10, 0x6b10, 0x6b10, 0x6b10,
- 0x1078, 0x12d5, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12d5,
- 0x1079, 0x6b1c, 0x067f, 0x007c, 0x6b2c, 0x7137, 0x6b2c, 0x6b2c,
- 0x6b2c, 0x6b2c, 0x6b2c, 0x6b2c, 0x7112, 0x7181, 0x6b2c, 0x6b2c,
- 0x6b2c, 0x6b2c, 0x6b2c, 0x6b2c, 0x1078, 0x12d5, 0x067e, 0x6000,
- 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6b38, 0x067f, 0x007c,
- 0x6b48, 0x6f83, 0x6ff5, 0x7017, 0x7063, 0x6b48, 0x6b48, 0x70bd,
- 0x6e42, 0x70fa, 0x70fe, 0x6b48, 0x6b48, 0x6b48, 0x6b48, 0x6b48,
- 0x1078, 0x12d5, 0xa1b2, 0x0030, 0x10c8, 0x12d5, 0x2100, 0x0079,
- 0x6b51, 0x6b81, 0x6c5e, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81,
- 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81,
- 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81, 0x6b81,
- 0x6b83, 0x6bb2, 0x6bbd, 0x6be5, 0x6beb, 0x6c1f, 0x6c57, 0x6b81,
- 0x6b81, 0x6c66, 0x6b81, 0x6b81, 0x6c6d, 0x6c74, 0x6b81, 0x6b81,
- 0x6b81, 0x6b81, 0x6b81, 0x6c91, 0x6b81, 0x6b81, 0x6c9c, 0x6b81,
- 0x6b81, 0x1078, 0x12d5, 0x1078, 0x39d8, 0x6618, 0x0c7e, 0x2660,
- 0x1078, 0x37e9, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff,
- 0xa082, 0x0006, 0x0048, 0x6ba4, 0x1078, 0x7262, 0x00c0, 0x6bdf,
- 0x1078, 0x7200, 0x00c0, 0x6ba0, 0x6007, 0x0008, 0x0078, 0x6c59,
- 0x6007, 0x0009, 0x0078, 0x6c59, 0x1078, 0x73f7, 0x0040, 0x6bae,
- 0x1078, 0x7262, 0x0040, 0x6b98, 0x0078, 0x6bdf, 0x6013, 0x1900,
- 0x0078, 0x6ba0, 0x6106, 0x1078, 0x71c2, 0x6007, 0x0006, 0x0078,
- 0x6c59, 0x6007, 0x0007, 0x0078, 0x6c59, 0x0d7e, 0x6618, 0x2668,
- 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6bcf,
- 0xa686, 0x0004, 0x0040, 0x6bcf, 0x0d7f, 0x0078, 0x6bdf, 0x1078,
- 0x72c0, 0x00c0, 0x6bda, 0x1078, 0x3853, 0x6007, 0x000a, 0x0d7f,
- 0x0078, 0x6c59, 0x6007, 0x000b, 0x0d7f, 0x0078, 0x6c59, 0x1078,
- 0x228f, 0x6007, 0x0001, 0x0078, 0x6c59, 0x1078, 0x228f, 0x6007,
- 0x000c, 0x0078, 0x6c59, 0x1078, 0x39d8, 0x6618, 0xa6b0, 0x0001,
- 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x6c0c, 0xa6b4,
- 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0, 0x6bdf, 0x1078, 0x72cf,
- 0x00c0, 0x6c06, 0x6007, 0x000e, 0x0078, 0x6c59, 0x1078, 0x228f,
- 0x6007, 0x000f, 0x0078, 0x6c59, 0x1078, 0x73f7, 0x0040, 0x6c19,
- 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6bfe, 0x0078,
- 0x6bdf, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x6c59, 0x1078,
- 0x39d8, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082,
- 0x0006, 0x0048, 0x6c44, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x00c0, 0x6bdf, 0x1078, 0x72fa, 0x00c0, 0x6c3e, 0x1078, 0x7200,
- 0x00c0, 0x6c3e, 0x6007, 0x0010, 0x0078, 0x6c59, 0x1078, 0x228f,
- 0x6007, 0x0011, 0x0078, 0x6c59, 0x1078, 0x73f7, 0x0040, 0x6c51,
- 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6c32, 0x0078,
- 0x6bdf, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x6c59, 0x6007,
- 0x0012, 0x6003, 0x0001, 0x1078, 0x4824, 0x007c, 0x6007, 0x0001,
- 0x6003, 0x0001, 0x1078, 0x4824, 0x0078, 0x6c5d, 0x6007, 0x0020,
- 0x6003, 0x0001, 0x1078, 0x4824, 0x007c, 0x6007, 0x0023, 0x6003,
- 0x0001, 0x1078, 0x4824, 0x007c, 0x017e, 0x027e, 0x2011, 0x7b88,
- 0x2214, 0x2c08, 0x1078, 0x74bf, 0x00c0, 0x6c85, 0x2160, 0x6007,
- 0x0026, 0x6013, 0x1700, 0x0078, 0x6c8a, 0x1078, 0x5bb4, 0x2160,
- 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x4824, 0x027f, 0x017f,
- 0x007c, 0x6106, 0x1078, 0x6ca3, 0x6007, 0x002b, 0x0078, 0x6c59,
- 0x6007, 0x002c, 0x0078, 0x6c59, 0x6106, 0x1078, 0x6ca8, 0x6007,
- 0x002e, 0x0078, 0x6c59, 0x0d7e, 0x1078, 0x6cce, 0x0d7f, 0x007c,
- 0x0d7e, 0x1078, 0x6cdd, 0x00c0, 0x6cc7, 0x680c, 0xa08c, 0xff00,
- 0x6824, 0xa084, 0x00ff, 0xa115, 0x6212, 0xd1e4, 0x0040, 0x6cbc,
- 0x2009, 0x0001, 0x0078, 0x6cc3, 0xd1ec, 0x0040, 0x6cc7, 0x2009,
- 0x0000, 0xa294, 0x00ff, 0x1078, 0x22d3, 0x0078, 0x6ccb, 0xa085,
- 0x0001, 0x0078, 0x6ccc, 0xa006, 0x0d7f, 0x007c, 0x2069, 0x7b8d,
- 0x6800, 0xa082, 0x0010, 0x00c8, 0x6cdb, 0x6013, 0x0000, 0xa085,
- 0x0001, 0x0078, 0x6cdc, 0xa006, 0x007c, 0x6013, 0x0000, 0x2069,
- 0x7b8c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, 0x007c, 0x6004,
- 0xa0b2, 0x0030, 0x10c8, 0x12d5, 0xa1b6, 0x0013, 0x00c0, 0x6cf3,
- 0x2008, 0x0079, 0x6d06, 0xa1b6, 0x0027, 0x0040, 0x6cfb, 0xa1b6,
- 0x0014, 0x10c0, 0x12d5, 0x2001, 0x0007, 0x1078, 0x3791, 0x1078,
- 0x4b33, 0x1078, 0x6a4c, 0x1078, 0x4c2c, 0x007c, 0x6d36, 0x6d38,
- 0x6d36, 0x6d36, 0x6d36, 0x6d38, 0x6d40, 0x6da3, 0x6d66, 0x6da3,
- 0x6d7a, 0x6da3, 0x6d40, 0x6da3, 0x6d9b, 0x6da3, 0x6d9b, 0x6da3,
- 0x6da3, 0x6d36, 0x6d36, 0x6d36, 0x6d36, 0x6d36, 0x6d36, 0x6d36,
- 0x6d36, 0x6d36, 0x6d36, 0x6d36, 0x6d36, 0x6d36, 0x6da3, 0x6d36,
- 0x6d36, 0x6da3, 0x6d36, 0x6da3, 0x6da3, 0x6d36, 0x6d36, 0x6d36,
- 0x6d36, 0x6da3, 0x6da3, 0x6d36, 0x6da3, 0x6da3, 0x1078, 0x12d5,
- 0x1078, 0x4b33, 0x6003, 0x0002, 0x1078, 0x4c2c, 0x0078, 0x6da9,
- 0x0f7e, 0x2079, 0x7651, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x6da3,
- 0x2001, 0x0000, 0x1078, 0x376f, 0x2001, 0x0002, 0x1078, 0x3783,
- 0x1078, 0x4b33, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
- 0x1078, 0x4824, 0x1078, 0x4c2c, 0x0c7e, 0x6118, 0x2160, 0x2009,
- 0x0001, 0x1078, 0x452d, 0x0c7f, 0x0078, 0x6da9, 0x6618, 0x0d7e,
+ 0x62b2, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x553b,
+ 0x017f, 0x0040, 0x62d2, 0x660a, 0x611a, 0x601f, 0x0001, 0x2d00,
+ 0x6012, 0x2009, 0x001f, 0x1078, 0x55c8, 0xa085, 0x0001, 0x127f,
+ 0x0c7f, 0x007c, 0xa006, 0x0078, 0x62cf, 0x0c7e, 0x127e, 0x2091,
+ 0x8000, 0x0c7e, 0x1078, 0x553b, 0x017f, 0x0040, 0x62ed, 0x611a,
+ 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078, 0x55c8,
+ 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x62ea,
+ 0x027e, 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040, 0x62fa,
+ 0x8211, 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x6013, 0x0000, 0x601f,
+ 0x0007, 0x6017, 0x0014, 0x007c, 0x067e, 0x0c7e, 0x0d7e, 0x2031,
+ 0x6f52, 0x2634, 0xd6e4, 0x0040, 0x6312, 0x6618, 0x2660, 0x6e44,
+ 0x1078, 0x3550, 0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, 0x017e,
+ 0x6004, 0xa08e, 0x0002, 0x0040, 0x6327, 0xa08e, 0x0003, 0x0040,
+ 0x6327, 0xa08e, 0x0004, 0x0040, 0x6327, 0xa085, 0x0001, 0x017f,
+ 0x007f, 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0000, 0x0040,
+ 0x633f, 0xa08e, 0x001f, 0x0040, 0x633f, 0xa08e, 0x0028, 0x0040,
+ 0x633f, 0xa08e, 0x0029, 0x0040, 0x633f, 0xa085, 0x0001, 0x017f,
+ 0x007f, 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078,
+ 0x553b, 0x017f, 0x0040, 0x635c, 0x611a, 0x601f, 0x0001, 0x2d00,
+ 0x6012, 0x1078, 0x2174, 0x2009, 0x0028, 0x1078, 0x55c8, 0xa085,
+ 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6359, 0xa186,
+ 0x0015, 0x00c0, 0x6374, 0x2011, 0x6f1c, 0x2204, 0xa086, 0x0074,
+ 0x00c0, 0x6374, 0x1078, 0x597f, 0x6003, 0x0001, 0x6007, 0x0029,
+ 0x1078, 0x4445, 0x0078, 0x6378, 0x1078, 0x579c, 0x1078, 0x55a1,
+ 0x007c, 0xa186, 0x0015, 0x00c0, 0x6396, 0x2011, 0x6f1c, 0x2204,
+ 0xa086, 0x0014, 0x00c0, 0x6396, 0x0d7e, 0x6018, 0x2068, 0x1078,
+ 0x3513, 0x0d7f, 0x1078, 0x5989, 0x00c0, 0x6396, 0x2001, 0x0006,
+ 0x1078, 0x3443, 0x1078, 0x564b, 0x0078, 0x639a, 0x1078, 0x579c,
+ 0x1078, 0x55a1, 0x007c, 0x6848, 0xa086, 0x0005, 0x00c0, 0x63a2,
+ 0x1078, 0x63a3, 0x007c, 0x6850, 0xc0ad, 0x6852, 0x007c, 0x067e,
+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1286, 0x1079, 0x63b1, 0x067f,
+ 0x007c, 0x63c1, 0x658f, 0x6670, 0x63c1, 0x63c1, 0x63c1, 0x63c1,
+ 0x63c1, 0x63fb, 0x66d6, 0x63c1, 0x63c1, 0x63c1, 0x63c1, 0x63c1,
+ 0x63c1, 0x1078, 0x1286, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8,
+ 0x1286, 0x1079, 0x63cd, 0x067f, 0x007c, 0x63dd, 0x69df, 0x63dd,
+ 0x63dd, 0x63dd, 0x63dd, 0x63dd, 0x63dd, 0x69ba, 0x6a29, 0x63dd,
+ 0x63dd, 0x63dd, 0x63dd, 0x63dd, 0x63dd, 0x1078, 0x1286, 0x067e,
+ 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x1286, 0x1079, 0x63e9, 0x067f,
+ 0x007c, 0x63f9, 0x6827, 0x6899, 0x68bb, 0x690b, 0x63f9, 0x63f9,
+ 0x6965, 0x66e2, 0x69a2, 0x69a6, 0x63f9, 0x63f9, 0x63f9, 0x63f9,
+ 0x63f9, 0x1078, 0x1286, 0xa1b2, 0x0030, 0x10c8, 0x1286, 0x2100,
+ 0x0079, 0x6402, 0x6432, 0x650f, 0x6432, 0x6432, 0x6432, 0x6432,
+ 0x6432, 0x6432, 0x6432, 0x6432, 0x6432, 0x6432, 0x6432, 0x6432,
+ 0x6432, 0x6432, 0x6432, 0x6432, 0x6432, 0x6432, 0x6432, 0x6432,
+ 0x6432, 0x6434, 0x6463, 0x646e, 0x6496, 0x649c, 0x64d0, 0x6508,
+ 0x6432, 0x6432, 0x6517, 0x6432, 0x6432, 0x6432, 0x651e, 0x6432,
+ 0x6432, 0x6432, 0x6432, 0x6432, 0x6539, 0x6432, 0x6432, 0x6544,
+ 0x6432, 0x6432, 0x1078, 0x1286, 0x1078, 0x3698, 0x6618, 0x0c7e,
+ 0x2660, 0x1078, 0x34a9, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684,
+ 0x00ff, 0xa082, 0x0006, 0x0048, 0x6455, 0x1078, 0x6b09, 0x00c0,
+ 0x6490, 0x1078, 0x6aa7, 0x00c0, 0x6451, 0x6007, 0x0008, 0x0078,
+ 0x650a, 0x6007, 0x0009, 0x0078, 0x650a, 0x1078, 0x6c9b, 0x0040,
+ 0x645f, 0x1078, 0x6b09, 0x0040, 0x6449, 0x0078, 0x6490, 0x6013,
+ 0x1900, 0x0078, 0x6451, 0x6106, 0x1078, 0x6a6a, 0x6007, 0x0006,
+ 0x0078, 0x650a, 0x6007, 0x0007, 0x0078, 0x650a, 0x0d7e, 0x6618,
+ 0x2668, 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040,
+ 0x6480, 0xa686, 0x0004, 0x0040, 0x6480, 0x0d7f, 0x0078, 0x6490,
+ 0x1078, 0x6b67, 0x00c0, 0x648b, 0x1078, 0x3513, 0x6007, 0x000a,
+ 0x0d7f, 0x0078, 0x650a, 0x6007, 0x000b, 0x0d7f, 0x0078, 0x650a,
+ 0x1078, 0x2174, 0x6007, 0x0001, 0x0078, 0x650a, 0x1078, 0x2174,
+ 0x6007, 0x000c, 0x0078, 0x650a, 0x1078, 0x3698, 0x6618, 0xa6b0,
+ 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x64bd,
+ 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0, 0x6490, 0x1078,
+ 0x6b76, 0x00c0, 0x64b7, 0x6007, 0x000e, 0x0078, 0x650a, 0x1078,
+ 0x2174, 0x6007, 0x000f, 0x0078, 0x650a, 0x1078, 0x6c9b, 0x0040,
+ 0x64ca, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x64af,
+ 0x0078, 0x6490, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x650a,
+ 0x1078, 0x3698, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff,
+ 0xa082, 0x0006, 0x0048, 0x64f5, 0xa6b4, 0xff00, 0x8637, 0xa686,
+ 0x0006, 0x00c0, 0x6490, 0x1078, 0x6ba2, 0x00c0, 0x64ef, 0x1078,
+ 0x6aa7, 0x00c0, 0x64ef, 0x6007, 0x0010, 0x0078, 0x650a, 0x1078,
+ 0x2174, 0x6007, 0x0011, 0x0078, 0x650a, 0x1078, 0x6c9b, 0x0040,
+ 0x6502, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x64e3,
+ 0x0078, 0x6490, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x650a,
+ 0x6007, 0x0012, 0x6003, 0x0001, 0x1078, 0x4445, 0x007c, 0x6007,
+ 0x0001, 0x6003, 0x0001, 0x1078, 0x4445, 0x0078, 0x650e, 0x6007,
+ 0x0020, 0x6003, 0x0001, 0x1078, 0x4445, 0x007c, 0x017e, 0x027e,
+ 0x2011, 0x7388, 0x2214, 0x2c08, 0x1078, 0x6d63, 0x00c0, 0x652f,
+ 0x2160, 0x6007, 0x0026, 0x6013, 0x1700, 0x0078, 0x6532, 0x2160,
+ 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x4445, 0x027f, 0x017f,
+ 0x007c, 0x6106, 0x1078, 0x654b, 0x6007, 0x002b, 0x0078, 0x650a,
+ 0x6007, 0x002c, 0x0078, 0x650a, 0x6106, 0x1078, 0x6550, 0x6007,
+ 0x002e, 0x0078, 0x650a, 0x0d7e, 0x1078, 0x6576, 0x0d7f, 0x007c,
+ 0x0d7e, 0x1078, 0x6585, 0x00c0, 0x656f, 0x680c, 0xa08c, 0xff00,
+ 0x6824, 0xa084, 0x00ff, 0xa115, 0x6212, 0xd1e4, 0x0040, 0x6564,
+ 0x2009, 0x0001, 0x0078, 0x656b, 0xd1ec, 0x0040, 0x656f, 0x2009,
+ 0x0000, 0xa294, 0x00ff, 0x1078, 0x21a3, 0x0078, 0x6573, 0xa085,
+ 0x0001, 0x0078, 0x6574, 0xa006, 0x0d7f, 0x007c, 0x2069, 0x738d,
+ 0x6800, 0xa082, 0x0010, 0x00c8, 0x6583, 0x6013, 0x0000, 0xa085,
+ 0x0001, 0x0078, 0x6584, 0xa006, 0x007c, 0x6013, 0x0000, 0x2069,
+ 0x738c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, 0x007c, 0x6004,
+ 0xa0b2, 0x0030, 0x10c8, 0x1286, 0xa1b6, 0x0013, 0x00c0, 0x659b,
+ 0x2008, 0x0079, 0x65ae, 0xa1b6, 0x0027, 0x0040, 0x65a3, 0xa1b6,
+ 0x0014, 0x10c0, 0x1286, 0x2001, 0x0007, 0x1078, 0x3451, 0x1078,
+ 0x4754, 0x1078, 0x62fd, 0x1078, 0x484d, 0x007c, 0x65de, 0x65e0,
+ 0x65de, 0x65de, 0x65de, 0x65e0, 0x65e8, 0x664b, 0x660e, 0x664b,
+ 0x6622, 0x664b, 0x65e8, 0x664b, 0x6643, 0x664b, 0x6643, 0x664b,
+ 0x664b, 0x65de, 0x65de, 0x65de, 0x65de, 0x65de, 0x65de, 0x65de,
+ 0x65de, 0x65de, 0x65de, 0x65de, 0x65de, 0x65de, 0x664b, 0x65de,
+ 0x65de, 0x65de, 0x65de, 0x664b, 0x664b, 0x65de, 0x65de, 0x65de,
+ 0x65de, 0x664b, 0x664b, 0x65de, 0x664b, 0x664b, 0x1078, 0x1286,
+ 0x1078, 0x4754, 0x6003, 0x0002, 0x1078, 0x484d, 0x0078, 0x6651,
+ 0x0f7e, 0x2079, 0x6f51, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x664b,
+ 0x2001, 0x0000, 0x1078, 0x342f, 0x2001, 0x0002, 0x1078, 0x3443,
+ 0x1078, 0x4754, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
+ 0x1078, 0x4445, 0x1078, 0x484d, 0x0c7e, 0x6118, 0x2160, 0x2009,
+ 0x0001, 0x1078, 0x4160, 0x0c7f, 0x0078, 0x6651, 0x6618, 0x0d7e,
0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x0040, 0x6da3, 0xa686, 0x0004, 0x0040, 0x6da3, 0x2001, 0x0004,
- 0x0078, 0x6da1, 0x2001, 0x7600, 0x2004, 0xa086, 0x0003, 0x00c0,
- 0x6d83, 0x1078, 0x2d80, 0x2001, 0x0006, 0x1078, 0x6daa, 0x6618,
+ 0x0040, 0x664b, 0xa686, 0x0004, 0x0040, 0x664b, 0x2001, 0x0004,
+ 0x0078, 0x6649, 0x2001, 0x6f00, 0x2004, 0xa086, 0x0003, 0x00c0,
+ 0x662b, 0x1078, 0x2a40, 0x2001, 0x0006, 0x1078, 0x6652, 0x6618,
0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, 0x8637, 0xa686,
- 0x0006, 0x0040, 0x6da3, 0x2001, 0x0006, 0x0078, 0x6da1, 0x2001,
- 0x0004, 0x0078, 0x6da1, 0x2001, 0x0006, 0x1078, 0x6daa, 0x0078,
- 0x6da3, 0x1078, 0x3791, 0x1078, 0x4b33, 0x1078, 0x5bb4, 0x1078,
- 0x4c2c, 0x007c, 0x017e, 0x0d7e, 0x6118, 0x2168, 0x6900, 0xd184,
- 0x0040, 0x6dc5, 0x6104, 0xa18e, 0x000a, 0x00c0, 0x6dbd, 0x699c,
- 0xd1a4, 0x00c0, 0x6dbd, 0x2001, 0x0007, 0x1078, 0x3783, 0x2001,
- 0x0000, 0x1078, 0x376f, 0x1078, 0x22b1, 0x0d7f, 0x017f, 0x007c,
+ 0x0006, 0x0040, 0x664b, 0x2001, 0x0006, 0x0078, 0x6649, 0x2001,
+ 0x0004, 0x0078, 0x6649, 0x2001, 0x0006, 0x1078, 0x6652, 0x0078,
+ 0x664b, 0x1078, 0x3451, 0x1078, 0x4754, 0x1078, 0x55a1, 0x1078,
+ 0x484d, 0x007c, 0x017e, 0x0d7e, 0x6118, 0x2168, 0x6900, 0xd184,
+ 0x0040, 0x666d, 0x6104, 0xa18e, 0x000a, 0x00c0, 0x6665, 0x699c,
+ 0xd1a4, 0x00c0, 0x6665, 0x2001, 0x0007, 0x1078, 0x3443, 0x2001,
+ 0x0000, 0x1078, 0x342f, 0x1078, 0x2192, 0x0d7f, 0x017f, 0x007c,
0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, 0x8007, 0x0d7f,
- 0xa0b2, 0x000c, 0x10c8, 0x12d5, 0xa1b6, 0x0015, 0x00c0, 0x6ddc,
- 0x1079, 0x6de3, 0x0078, 0x6de2, 0xa1b6, 0x0016, 0x10c0, 0x12d5,
- 0x1079, 0x6e1b, 0x007c, 0x5e93, 0x5e93, 0x5e93, 0x5e93, 0x5e93,
- 0x5e93, 0x5e93, 0x6def, 0x5e93, 0x5e93, 0x5e93, 0x5e93, 0x0f7e,
- 0x2079, 0x7651, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x6e0b, 0x2001,
- 0x0000, 0x1078, 0x376f, 0x2001, 0x0002, 0x1078, 0x3783, 0x601f,
- 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4824, 0x1078,
- 0x4c2c, 0x0078, 0x6e1a, 0x2011, 0x7b83, 0x220c, 0x017e, 0x0c7e,
- 0x1078, 0x37d7, 0x00c0, 0x6e1a, 0x1078, 0x35db, 0x0c7f, 0x017f,
- 0x1078, 0x5bb4, 0x007c, 0x5e93, 0x5e93, 0x5e93, 0x5e93, 0x5e93,
- 0x5e93, 0x5e93, 0x6e27, 0x5e93, 0x5e93, 0x5e93, 0x5e93, 0x1078,
- 0x6076, 0x00c0, 0x6e33, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078,
- 0x4824, 0x0078, 0x6e35, 0x1078, 0x5bb4, 0x007c, 0x6004, 0xa08a,
- 0x0030, 0x10c8, 0x12d5, 0x1078, 0x4b33, 0x1078, 0x6a4c, 0x1078,
- 0x4c2c, 0x007c, 0xa182, 0x0040, 0x0079, 0x6e46, 0x6e56, 0x6e56,
- 0x6e56, 0x6e56, 0x6e58, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56,
- 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x1078, 0x12d5,
+ 0xa0b2, 0x000c, 0x10c8, 0x1286, 0xa1b6, 0x0015, 0x00c0, 0x6684,
+ 0x1079, 0x668b, 0x0078, 0x668a, 0xa1b6, 0x0016, 0x10c0, 0x1286,
+ 0x1079, 0x66bb, 0x007c, 0x57f9, 0x57f9, 0x57f9, 0x57f9, 0x57f9,
+ 0x57f9, 0x57f9, 0x6697, 0x57f9, 0x57f9, 0x57f9, 0x57f9, 0x0f7e,
+ 0x2079, 0x6f51, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x66b3, 0x2001,
+ 0x0000, 0x1078, 0x342f, 0x2001, 0x0002, 0x1078, 0x3443, 0x601f,
+ 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4445, 0x1078,
+ 0x484d, 0x0078, 0x66ba, 0x2011, 0x7383, 0x220c, 0x1078, 0x329b,
+ 0x1078, 0x55a1, 0x007c, 0x57f9, 0x57f9, 0x57f9, 0x57f9, 0x57f9,
+ 0x57f9, 0x57f9, 0x66c7, 0x57f9, 0x57f9, 0x57f9, 0x57f9, 0x1078,
+ 0x597c, 0x00c0, 0x66d3, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078,
+ 0x4445, 0x0078, 0x66d5, 0x1078, 0x55a1, 0x007c, 0x6004, 0xa08a,
+ 0x0030, 0x10c8, 0x1286, 0x1078, 0x4754, 0x1078, 0x62fd, 0x1078,
+ 0x484d, 0x007c, 0xa182, 0x0040, 0x0079, 0x66e6, 0x66f6, 0x66f6,
+ 0x66f6, 0x66f6, 0x66f8, 0x66f6, 0x66f6, 0x66f6, 0x66f6, 0x66f6,
+ 0x66f6, 0x66f6, 0x66f6, 0x66f6, 0x66f6, 0x66f6, 0x1078, 0x1286,
0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e, 0x027e, 0x6106, 0x2071,
- 0x7b80, 0x7444, 0xa4a4, 0xe600, 0x0040, 0x6ec9, 0xa486, 0x2000,
- 0x0040, 0x6e88, 0xa486, 0x0400, 0x0040, 0x6e88, 0x7130, 0xa18c,
- 0x00ff, 0xa182, 0x0010, 0x00c8, 0x6f5b, 0x0c7e, 0x1078, 0x45be,
- 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040, 0x6f3c, 0x1078,
- 0x467c, 0x0040, 0x6f67, 0xa295, 0x0200, 0x6a02, 0x0078, 0x6e8e,
- 0x2009, 0x0001, 0x2011, 0x0200, 0x1078, 0x4666, 0x1078, 0x132f,
- 0x1040, 0x12d5, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803,
+ 0x7380, 0x7444, 0xa4a4, 0xe600, 0x0040, 0x6769, 0xa486, 0x2000,
+ 0x0040, 0x6728, 0xa486, 0x0400, 0x0040, 0x6728, 0x7130, 0xa18c,
+ 0x00ff, 0xa182, 0x0010, 0x00c8, 0x67fb, 0x0c7e, 0x1078, 0x41f1,
+ 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040, 0x67dc, 0x1078,
+ 0x42af, 0x0040, 0x6807, 0xa295, 0x0200, 0x6a02, 0x0078, 0x672e,
+ 0x2009, 0x0001, 0x2011, 0x0200, 0x1078, 0x4299, 0x1078, 0x12e0,
+ 0x1040, 0x1286, 0x6003, 0x0007, 0x2d00, 0x6837, 0x010d, 0x6803,
0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00, 0x685e, 0x6018, 0x2078,
0x78a0, 0x8007, 0x7130, 0xa18c, 0x00ff, 0xa10d, 0x6946, 0x684f,
- 0x0000, 0x6857, 0x0036, 0x1078, 0x3a2c, 0xa486, 0x2000, 0x00c0,
- 0x6eb7, 0x2019, 0x0017, 0x1078, 0x7484, 0x0078, 0x6f29, 0xa486,
- 0x0400, 0x00c0, 0x6ec1, 0x2019, 0x0002, 0x1078, 0x7484, 0x0078,
- 0x6f29, 0xa486, 0x0200, 0x00c0, 0x6ec7, 0x1078, 0x7475, 0x0078,
- 0x6f29, 0x7130, 0xa184, 0xff00, 0x00c0, 0x6f7b, 0xa18c, 0x00ff,
- 0xa182, 0x0010, 0x00c8, 0x6f7b, 0x0c7e, 0x1078, 0x45be, 0x2c68,
- 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040, 0x6f7f, 0xa284, 0x0300,
- 0x00c0, 0x6f77, 0x6804, 0xa005, 0x0040, 0x6f67, 0x8001, 0x6806,
- 0x6003, 0x0007, 0x1078, 0x1314, 0x0040, 0x6f30, 0x6013, 0x0000,
+ 0x0000, 0x6857, 0x0036, 0x1078, 0x36ec, 0xa486, 0x2000, 0x00c0,
+ 0x6757, 0x2019, 0x0017, 0x1078, 0x6d28, 0x0078, 0x67c9, 0xa486,
+ 0x0400, 0x00c0, 0x6761, 0x2019, 0x0002, 0x1078, 0x6d28, 0x0078,
+ 0x67c9, 0xa486, 0x0200, 0x00c0, 0x6767, 0x1078, 0x6d19, 0x0078,
+ 0x67c9, 0x7130, 0xa184, 0xff00, 0x00c0, 0x681f, 0xa18c, 0x00ff,
+ 0xa182, 0x0010, 0x00c8, 0x681f, 0x0c7e, 0x1078, 0x41f1, 0x2c68,
+ 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040, 0x6823, 0xa284, 0x0300,
+ 0x00c0, 0x681b, 0x6804, 0xa005, 0x0040, 0x6807, 0x8001, 0x6806,
+ 0x6003, 0x0007, 0x1078, 0x12c5, 0x0040, 0x67d0, 0x6013, 0x0000,
0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000, 0x2c00, 0x684a,
0x6018, 0x2078, 0x78a0, 0x8007, 0xa10d, 0x6946, 0x6853, 0x003d,
- 0x7044, 0xa084, 0x0003, 0xa086, 0x0002, 0x00c0, 0x6f0b, 0x684f,
- 0x0040, 0x0078, 0x6f15, 0xa086, 0x0001, 0x00c0, 0x6f13, 0x684f,
- 0x0080, 0x0078, 0x6f15, 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001,
- 0x7b90, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, 0x8000, 0x8210,
- 0x00f0, 0x6f1b, 0x200c, 0x6982, 0x8000, 0x200c, 0x697e, 0x1078,
- 0x3a2c, 0x027f, 0x047f, 0x157f, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c,
- 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x47d7,
- 0x1078, 0x4c2c, 0x0078, 0x6f29, 0x2069, 0x7b92, 0x2d04, 0xa084,
- 0xff00, 0xa086, 0x1200, 0x00c0, 0x6f5b, 0x2069, 0x7b80, 0x686c,
+ 0x7044, 0xa084, 0x0003, 0xa086, 0x0002, 0x00c0, 0x67ab, 0x684f,
+ 0x0040, 0x0078, 0x67b5, 0xa086, 0x0001, 0x00c0, 0x67b3, 0x684f,
+ 0x0080, 0x0078, 0x67b5, 0x684f, 0x0000, 0x20a9, 0x000a, 0x2001,
+ 0x7390, 0xad90, 0x0015, 0x200c, 0x810f, 0x2112, 0x8000, 0x8210,
+ 0x00f0, 0x67bb, 0x200c, 0x6982, 0x8000, 0x200c, 0x697e, 0x1078,
+ 0x36ec, 0x027f, 0x047f, 0x157f, 0x0f7f, 0x0e7f, 0x0d7f, 0x007c,
+ 0x6013, 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x43f8,
+ 0x1078, 0x484d, 0x0078, 0x67c9, 0x2069, 0x7392, 0x2d04, 0xa084,
+ 0xff00, 0xa086, 0x1200, 0x00c0, 0x67fb, 0x2069, 0x7380, 0x686c,
0xa084, 0x00ff, 0x017e, 0x6110, 0xa18c, 0x0700, 0xa10d, 0x6112,
- 0x017f, 0x6003, 0x0001, 0x6007, 0x0043, 0x1078, 0x47d7, 0x1078,
- 0x4c2c, 0x0078, 0x6f29, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007,
- 0x0041, 0x1078, 0x47d7, 0x1078, 0x4c2c, 0x0078, 0x6f29, 0x6013,
- 0x0300, 0x0078, 0x6f6d, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007,
- 0x0041, 0x1078, 0x47d7, 0x1078, 0x4c2c, 0x0078, 0x6f29, 0x6013,
- 0x0500, 0x0078, 0x6f6d, 0x6013, 0x0600, 0x0078, 0x6f3c, 0x6013,
- 0x0200, 0x0078, 0x6f3c, 0xa186, 0x0013, 0x00c0, 0x6f95, 0x6004,
- 0xa08a, 0x0040, 0x1048, 0x12d5, 0xa08a, 0x0050, 0x10c8, 0x12d5,
- 0xa082, 0x0040, 0x2008, 0x0079, 0x6fc6, 0xa186, 0x0047, 0x00c0,
- 0x6f9b, 0x0078, 0x6ff5, 0xa186, 0x0027, 0x0040, 0x6fa3, 0xa186,
- 0x0014, 0x10c0, 0x12d5, 0x6004, 0xa082, 0x0040, 0x2008, 0x0079,
- 0x6fa9, 0x6fb9, 0x6fbb, 0x6fbb, 0x6fb9, 0x6fb9, 0x6fb9, 0x6fb9,
- 0x6fb9, 0x6fb9, 0x6fb9, 0x6fb9, 0x6fb9, 0x6fb9, 0x6fb9, 0x6fb9,
- 0x6fb9, 0x1078, 0x12d5, 0x2001, 0x0007, 0x1078, 0x3791, 0x1078,
- 0x4b33, 0x1078, 0x6a4c, 0x1078, 0x4c2c, 0x007c, 0x6fd6, 0x6fe6,
- 0x6fdf, 0x6fef, 0x6fd6, 0x6fd6, 0x6fd6, 0x6fd6, 0x6fd6, 0x6fd6,
- 0x6fd6, 0x6fd6, 0x6fd6, 0x6fd6, 0x6fd6, 0x6fd6, 0x1078, 0x12d5,
- 0x6010, 0xa088, 0x0013, 0x2104, 0xa085, 0x0400, 0x200a, 0x1078,
- 0x4b33, 0x6003, 0x0002, 0x1078, 0x4c2c, 0x007c, 0x1078, 0x4b33,
- 0x1078, 0x463f, 0x1078, 0x5bb4, 0x1078, 0x4c2c, 0x007c, 0x1078,
- 0x4b33, 0x2009, 0x0041, 0x0078, 0x70bd, 0xa182, 0x0040, 0x0079,
- 0x6ff9, 0x7009, 0x700b, 0x7009, 0x7009, 0x7009, 0x7009, 0x7009,
- 0x700c, 0x7009, 0x7009, 0x7009, 0x7009, 0x7009, 0x7009, 0x7009,
- 0x7009, 0x1078, 0x12d5, 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1,
- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1572, 0x007c, 0xa182,
- 0x0040, 0x0079, 0x701b, 0x702b, 0x702b, 0x702b, 0x702b, 0x702b,
- 0x702b, 0x702b, 0x702b, 0x702b, 0x702d, 0x7050, 0x702b, 0x702b,
- 0x702b, 0x702b, 0x7050, 0x1078, 0x12d5, 0x1078, 0x4bdb, 0x1078,
- 0x4cec, 0x6010, 0x0d7e, 0x2068, 0x684c, 0xd0fc, 0x0040, 0x7043,
- 0xa08c, 0x0003, 0xa18e, 0x0002, 0x0040, 0x7049, 0x2009, 0x0041,
- 0x0d7f, 0x0078, 0x70bd, 0x6003, 0x0007, 0x1078, 0x463f, 0x0d7f,
- 0x007c, 0x1078, 0x463f, 0x1078, 0x5bb4, 0x0d7f, 0x0078, 0x7048,
- 0x037e, 0x1078, 0x4bdb, 0x1078, 0x4cec, 0x6010, 0x0d7e, 0x2068,
- 0x2019, 0x0004, 0x1078, 0x74a8, 0x1078, 0x6a4c, 0x6017, 0x0028,
- 0x0d7f, 0x037f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x7071, 0x6004,
- 0xa086, 0x0042, 0x10c0, 0x12d5, 0x1078, 0x4b33, 0x1078, 0x4c2c,
- 0x007c, 0xa186, 0x0027, 0x0040, 0x7079, 0xa186, 0x0014, 0x00c0,
- 0x7089, 0x6004, 0xa086, 0x0042, 0x10c0, 0x12d5, 0x2001, 0x0007,
- 0x1078, 0x3791, 0x1078, 0x4b33, 0x1078, 0x6a4c, 0x1078, 0x4c2c,
- 0x007c, 0xa182, 0x0040, 0x0079, 0x708d, 0x709d, 0x709d, 0x709d,
- 0x709d, 0x709d, 0x709d, 0x709d, 0x709f, 0x70ab, 0x709d, 0x709d,
- 0x709d, 0x709d, 0x709d, 0x709d, 0x709d, 0x1078, 0x12d5, 0x037e,
- 0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1572,
+ 0x017f, 0x6003, 0x0001, 0x6007, 0x0043, 0x1078, 0x43f8, 0x1078,
+ 0x484d, 0x0078, 0x67c9, 0x6013, 0x0200, 0x6003, 0x0001, 0x6007,
+ 0x0041, 0x1078, 0x43f8, 0x1078, 0x484d, 0x0078, 0x67c9, 0xa284,
+ 0x0004, 0x00c0, 0x680f, 0x6013, 0x0300, 0x0078, 0x6811, 0x6013,
+ 0x0100, 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x43f8, 0x1078,
+ 0x484d, 0x0078, 0x67c9, 0x6013, 0x0500, 0x0078, 0x6811, 0x6013,
+ 0x0600, 0x0078, 0x67dc, 0x6013, 0x0200, 0x0078, 0x67dc, 0xa186,
+ 0x0013, 0x00c0, 0x6839, 0x6004, 0xa08a, 0x0040, 0x1048, 0x1286,
+ 0xa08a, 0x0050, 0x10c8, 0x1286, 0xa082, 0x0040, 0x2008, 0x0079,
+ 0x686a, 0xa186, 0x0047, 0x00c0, 0x683f, 0x0078, 0x6899, 0xa186,
+ 0x0027, 0x0040, 0x6847, 0xa186, 0x0014, 0x10c0, 0x1286, 0x6004,
+ 0xa082, 0x0040, 0x2008, 0x0079, 0x684d, 0x685d, 0x685f, 0x685f,
+ 0x685d, 0x685d, 0x685d, 0x685d, 0x685d, 0x685d, 0x685d, 0x685d,
+ 0x685d, 0x685d, 0x685d, 0x685d, 0x685d, 0x1078, 0x1286, 0x2001,
+ 0x0007, 0x1078, 0x3451, 0x1078, 0x4754, 0x1078, 0x62fd, 0x1078,
+ 0x484d, 0x007c, 0x687a, 0x688a, 0x6883, 0x6893, 0x687a, 0x687a,
+ 0x687a, 0x687a, 0x687a, 0x687a, 0x687a, 0x687a, 0x687a, 0x687a,
+ 0x687a, 0x687a, 0x1078, 0x1286, 0x6010, 0xa088, 0x0013, 0x2104,
+ 0xa085, 0x0400, 0x200a, 0x1078, 0x4754, 0x6003, 0x0002, 0x1078,
+ 0x484d, 0x007c, 0x1078, 0x4754, 0x1078, 0x4272, 0x1078, 0x55a1,
+ 0x1078, 0x484d, 0x007c, 0x1078, 0x4754, 0x2009, 0x0041, 0x0078,
+ 0x6965, 0xa182, 0x0040, 0x0079, 0x689d, 0x68ad, 0x68af, 0x68ad,
+ 0x68ad, 0x68ad, 0x68ad, 0x68ad, 0x68b0, 0x68ad, 0x68ad, 0x68ad,
+ 0x68ad, 0x68ad, 0x68ad, 0x68ad, 0x68ad, 0x1078, 0x1286, 0x007c,
+ 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
+ 0x1078, 0x1523, 0x007c, 0xa182, 0x0040, 0x0079, 0x68bf, 0x68cf,
+ 0x68cf, 0x68cf, 0x68cf, 0x68cf, 0x68cf, 0x68cf, 0x68cf, 0x68cf,
+ 0x68d1, 0x68f4, 0x68cf, 0x68cf, 0x68cf, 0x68cf, 0x68f4, 0x1078,
+ 0x1286, 0x1078, 0x47fc, 0x1078, 0x48fd, 0x6010, 0x0d7e, 0x2068,
+ 0x684c, 0xd0fc, 0x0040, 0x68e7, 0xa08c, 0x0003, 0xa18e, 0x0002,
+ 0x0040, 0x68ed, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x6965, 0x6003,
+ 0x0007, 0x1078, 0x4272, 0x0d7f, 0x007c, 0x1078, 0x4272, 0x1078,
+ 0x55a1, 0x0d7f, 0x0078, 0x68ec, 0x037e, 0x2019, 0x0001, 0x1078,
+ 0x5107, 0x1078, 0x47fc, 0x1078, 0x48fd, 0x6010, 0x0d7e, 0x2068,
+ 0x2019, 0x0004, 0x1078, 0x6d4c, 0x1078, 0x62fd, 0x6017, 0x0028,
+ 0x0d7f, 0x037f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x6919, 0x6004,
+ 0xa086, 0x0042, 0x10c0, 0x1286, 0x1078, 0x4754, 0x1078, 0x484d,
+ 0x007c, 0xa186, 0x0027, 0x0040, 0x6921, 0xa186, 0x0014, 0x00c0,
+ 0x6931, 0x6004, 0xa086, 0x0042, 0x10c0, 0x1286, 0x2001, 0x0007,
+ 0x1078, 0x3451, 0x1078, 0x4754, 0x1078, 0x62fd, 0x1078, 0x484d,
+ 0x007c, 0xa182, 0x0040, 0x0079, 0x6935, 0x6945, 0x6945, 0x6945,
+ 0x6945, 0x6945, 0x6945, 0x6945, 0x6947, 0x6953, 0x6945, 0x6945,
+ 0x6945, 0x6945, 0x6945, 0x6945, 0x6945, 0x1078, 0x1286, 0x037e,
+ 0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1523,
0x047f, 0x037f, 0x007c, 0x6010, 0x0d7e, 0x2068, 0x684c, 0xd0fc,
- 0x0040, 0x70b7, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x70bd, 0x6003,
- 0x0007, 0x1078, 0x463f, 0x0d7f, 0x007c, 0xa182, 0x0040, 0x0079,
- 0x70c1, 0x70d1, 0x70d3, 0x70df, 0x70eb, 0x70d1, 0x70d1, 0x70d1,
- 0x70d1, 0x70d1, 0x70d1, 0x70d1, 0x70d1, 0x70d1, 0x70d1, 0x70d1,
- 0x70d1, 0x1078, 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078, 0x47d7,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x4c2c, 0x127f, 0x007c, 0x6003,
- 0x0001, 0x6106, 0x1078, 0x47d7, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x4c2c, 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078,
- 0x19a7, 0x127e, 0x2091, 0x8000, 0x1078, 0x4843, 0x1078, 0x4cec,
- 0x127f, 0x007c, 0x1078, 0x4b33, 0x0078, 0x7100, 0x1078, 0x4bdb,
- 0x6110, 0x81ff, 0x0040, 0x710d, 0x0d7e, 0x2168, 0x037e, 0x2019,
- 0x0029, 0x1078, 0x74a8, 0x037f, 0x0d7f, 0x1078, 0x6a4c, 0x1078,
- 0x4c2c, 0x007c, 0xa182, 0x0085, 0x0079, 0x7116, 0x711d, 0x711d,
- 0x711d, 0x711f, 0x711d, 0x711d, 0x711d, 0x1078, 0x12d5, 0x027e,
- 0x0e7e, 0x2071, 0x7b80, 0x7220, 0x1078, 0x73c2, 0x0040, 0x712c,
- 0x6007, 0x0086, 0x0078, 0x712e, 0x6007, 0x0087, 0x6003, 0x0001,
- 0x1078, 0x47d7, 0x1078, 0x4c2c, 0x0e7f, 0x027f, 0x007c, 0xa186,
- 0x0013, 0x00c0, 0x7148, 0x6004, 0xa08a, 0x0085, 0x1048, 0x12d5,
- 0xa08a, 0x008c, 0x10c8, 0x12d5, 0xa082, 0x0085, 0x0079, 0x715b,
- 0xa186, 0x0027, 0x0040, 0x7150, 0xa186, 0x0014, 0x10c0, 0x12d5,
- 0x2001, 0x0007, 0x1078, 0x3791, 0x1078, 0x4b33, 0x1078, 0x6a4c,
- 0x1078, 0x4c2c, 0x007c, 0x7162, 0x7164, 0x7164, 0x7162, 0x7162,
- 0x7162, 0x7162, 0x1078, 0x12d5, 0x1078, 0x4b33, 0x1078, 0x5bb4,
- 0x1078, 0x4c2c, 0x007c, 0xa182, 0x0085, 0x1048, 0x12d5, 0xa182,
- 0x008c, 0x10c8, 0x12d5, 0xa182, 0x0085, 0x0079, 0x7177, 0x717e,
- 0x717e, 0x717e, 0x7180, 0x717e, 0x717e, 0x717e, 0x1078, 0x12d5,
- 0x007c, 0x1078, 0x4b33, 0x1078, 0x6a4c, 0x1078, 0x4c2c, 0x007c,
- 0x037e, 0x2019, 0x000b, 0x1078, 0x7191, 0x601f, 0x0006, 0x037f,
+ 0x0040, 0x695f, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x6965, 0x6003,
+ 0x0007, 0x1078, 0x4272, 0x0d7f, 0x007c, 0xa182, 0x0040, 0x0079,
+ 0x6969, 0x6979, 0x697b, 0x6987, 0x6993, 0x6979, 0x6979, 0x6979,
+ 0x6979, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979, 0x6979,
+ 0x6979, 0x1078, 0x1286, 0x6003, 0x0001, 0x6106, 0x1078, 0x43f8,
+ 0x127e, 0x2091, 0x8000, 0x1078, 0x484d, 0x127f, 0x007c, 0x6003,
+ 0x0001, 0x6106, 0x1078, 0x43f8, 0x127e, 0x2091, 0x8000, 0x1078,
+ 0x484d, 0x127f, 0x007c, 0x6003, 0x0003, 0x6106, 0x2c10, 0x1078,
+ 0x191c, 0x127e, 0x2091, 0x8000, 0x1078, 0x4464, 0x1078, 0x48fd,
+ 0x127f, 0x007c, 0x1078, 0x4754, 0x0078, 0x69a8, 0x1078, 0x47fc,
+ 0x6110, 0x81ff, 0x0040, 0x69b5, 0x0d7e, 0x2168, 0x037e, 0x2019,
+ 0x0029, 0x1078, 0x6d4c, 0x037f, 0x0d7f, 0x1078, 0x62fd, 0x1078,
+ 0x484d, 0x007c, 0xa182, 0x0085, 0x0079, 0x69be, 0x69c5, 0x69c5,
+ 0x69c5, 0x69c7, 0x69c5, 0x69c5, 0x69c5, 0x1078, 0x1286, 0x027e,
+ 0x0e7e, 0x2071, 0x7380, 0x7220, 0x1078, 0x6c66, 0x0040, 0x69d4,
+ 0x6007, 0x0086, 0x0078, 0x69d6, 0x6007, 0x0087, 0x6003, 0x0001,
+ 0x1078, 0x43f8, 0x1078, 0x484d, 0x0e7f, 0x027f, 0x007c, 0xa186,
+ 0x0013, 0x00c0, 0x69f0, 0x6004, 0xa08a, 0x0085, 0x1048, 0x1286,
+ 0xa08a, 0x008c, 0x10c8, 0x1286, 0xa082, 0x0085, 0x0079, 0x6a03,
+ 0xa186, 0x0027, 0x0040, 0x69f8, 0xa186, 0x0014, 0x10c0, 0x1286,
+ 0x2001, 0x0007, 0x1078, 0x3451, 0x1078, 0x4754, 0x1078, 0x62fd,
+ 0x1078, 0x484d, 0x007c, 0x6a0a, 0x6a0c, 0x6a0c, 0x6a0a, 0x6a0a,
+ 0x6a0a, 0x6a0a, 0x1078, 0x1286, 0x1078, 0x4754, 0x1078, 0x55a1,
+ 0x1078, 0x484d, 0x007c, 0xa182, 0x0085, 0x1048, 0x1286, 0xa182,
+ 0x008c, 0x10c8, 0x1286, 0xa182, 0x0085, 0x0079, 0x6a1f, 0x6a26,
+ 0x6a26, 0x6a26, 0x6a28, 0x6a26, 0x6a26, 0x6a26, 0x1078, 0x1286,
+ 0x007c, 0x1078, 0x4754, 0x1078, 0x62fd, 0x1078, 0x484d, 0x007c,
+ 0x037e, 0x2019, 0x000b, 0x1078, 0x6a39, 0x601f, 0x0006, 0x037f,
0x007c, 0x127e, 0x037e, 0x087e, 0x2091, 0x8000, 0x2c40, 0x1078,
- 0x58c7, 0x00c0, 0x71be, 0x1078, 0x5968, 0x00c0, 0x71be, 0x6000,
- 0xa086, 0x0000, 0x0040, 0x71be, 0x601c, 0xa086, 0x0007, 0x0040,
- 0x71be, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x71b1, 0x1078,
- 0x1676, 0x6010, 0x2068, 0x1078, 0x68e3, 0x0040, 0x71b9, 0x1078,
- 0x74a8, 0x0d7f, 0x6013, 0x0000, 0x601f, 0x0007, 0x087f, 0x037f,
- 0x127f, 0x007c, 0x0f7e, 0x0c7e, 0x037e, 0x157e, 0x2079, 0x7b80,
- 0x7838, 0xa08c, 0x00ff, 0x783c, 0x1078, 0x2059, 0x00c0, 0x71f9,
- 0x017e, 0x0c7e, 0x1078, 0x37d7, 0x00c0, 0x71f9, 0x2011, 0x7b90,
- 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x610f, 0x00c0, 0x71f9,
- 0x017f, 0x027f, 0x027e, 0x017e, 0x2019, 0x0029, 0x1078, 0x5a3c,
- 0x1078, 0x4914, 0x1078, 0x4857, 0x017f, 0x1078, 0x7326, 0x1078,
- 0x3958, 0x017f, 0x1078, 0x35db, 0x6612, 0x6516, 0xa006, 0x0078,
- 0x71fb, 0x0c7f, 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c,
- 0x0c7e, 0x0d7e, 0x017e, 0x2009, 0x761e, 0x2104, 0xa086, 0x0074,
- 0x00c0, 0x7257, 0x2069, 0x7b8e, 0x690c, 0xa182, 0x0100, 0x0048,
- 0x7247, 0x6908, 0xa184, 0x8000, 0x0040, 0x7253, 0xa184, 0x0800,
- 0x0040, 0x7253, 0x6910, 0xa18a, 0x0001, 0x0048, 0x724b, 0x6914,
- 0x2069, 0x7bae, 0x6904, 0x81ff, 0x00c0, 0x723f, 0x690c, 0xa182,
- 0x0100, 0x0048, 0x7247, 0x6908, 0x81ff, 0x00c0, 0x7243, 0x6910,
- 0xa18a, 0x0001, 0x0048, 0x724b, 0x6918, 0xa18a, 0x0001, 0x0048,
- 0x7253, 0x0078, 0x725d, 0x6013, 0x0100, 0x0078, 0x7259, 0x6013,
- 0x0300, 0x0078, 0x7259, 0x6013, 0x0500, 0x0078, 0x7259, 0x6013,
- 0x0700, 0x0078, 0x7259, 0x6013, 0x0900, 0x0078, 0x7259, 0x6013,
- 0x0b00, 0x0078, 0x7259, 0x6013, 0x0f00, 0x0078, 0x7259, 0x6013,
- 0x2d00, 0xa085, 0x0001, 0x0078, 0x725e, 0xa006, 0x017f, 0x0d7f,
- 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218,
- 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0040, 0x7286,
- 0xa286, 0x0004, 0x0040, 0x7286, 0xa394, 0xff00, 0x8217, 0xa286,
- 0x0006, 0x0040, 0x7286, 0xa286, 0x0004, 0x0040, 0x7286, 0x0c7e,
- 0x2d60, 0x1078, 0x37e9, 0x0c7f, 0x0078, 0x72b9, 0x2011, 0x7b96,
- 0xad98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x610f, 0x00c0, 0x72ba,
- 0x2011, 0x7b9a, 0xad98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x610f,
- 0x00c0, 0x72ba, 0x047e, 0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227,
- 0xa006, 0x2009, 0x7652, 0x210c, 0xd1a4, 0x0040, 0x72ae, 0x2009,
- 0x0029, 0x1078, 0x74ec, 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029,
- 0x1078, 0x4914, 0x1078, 0x4857, 0x2c08, 0x1078, 0x7326, 0x017f,
- 0x047f, 0xa006, 0x157f, 0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c,
- 0x0d7e, 0x2069, 0x7b8e, 0x6800, 0xa086, 0x0800, 0x0040, 0x72cc,
- 0x6013, 0x0000, 0x0078, 0x72cd, 0xa006, 0x0d7f, 0x007c, 0x0c7e,
- 0x0f7e, 0x017e, 0x027e, 0x037e, 0x157e, 0x2079, 0x7b8c, 0x7930,
- 0x7834, 0x1078, 0x2059, 0x00c0, 0x72f3, 0x1078, 0x37d7, 0x00c0,
- 0x72f3, 0x2011, 0x7b90, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078,
- 0x610f, 0x00c0, 0x72f3, 0x2011, 0x7b94, 0xac98, 0x0006, 0x20a9,
- 0x0004, 0x1078, 0x610f, 0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f,
+ 0x52b4, 0x00c0, 0x6a66, 0x1078, 0x5355, 0x00c0, 0x6a66, 0x6000,
+ 0xa086, 0x0000, 0x0040, 0x6a66, 0x601c, 0xa086, 0x0007, 0x0040,
+ 0x6a66, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6a59, 0x1078,
+ 0x1627, 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040, 0x6a61, 0x1078,
+ 0x6d4c, 0x0d7f, 0x6013, 0x0000, 0x601f, 0x0007, 0x087f, 0x037f,
+ 0x127f, 0x007c, 0x0f7e, 0x0c7e, 0x037e, 0x157e, 0x2079, 0x7380,
+ 0x7838, 0xa084, 0x00ff, 0xa005, 0x00c0, 0x6aa2, 0x783c, 0x1078,
+ 0x1fb0, 0x017e, 0x0c7e, 0x1078, 0x3497, 0x00c0, 0x6aa0, 0x2011,
+ 0x7390, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x5a15, 0x00c0,
+ 0x6aa0, 0x017f, 0x027f, 0x027e, 0x017e, 0x2019, 0x0029, 0x1078,
+ 0x5429, 0x1078, 0x4535, 0x1078, 0x4478, 0x017f, 0x1078, 0x6bca,
+ 0x1078, 0x3618, 0x017f, 0x1078, 0x329b, 0xa006, 0x0078, 0x6aa2,
+ 0x0c7f, 0x017f, 0x157f, 0x037f, 0x0c7f, 0x0f7f, 0x007c, 0x0c7e,
+ 0x0d7e, 0x017e, 0x2009, 0x6f1c, 0x2104, 0xa086, 0x0074, 0x00c0,
+ 0x6afe, 0x2069, 0x738e, 0x690c, 0xa182, 0x0100, 0x0048, 0x6aee,
+ 0x6908, 0xa184, 0x8000, 0x0040, 0x6afa, 0xa184, 0x0800, 0x0040,
+ 0x6afa, 0x6910, 0xa18a, 0x0001, 0x0048, 0x6af2, 0x6914, 0x2069,
+ 0x73ae, 0x6904, 0x81ff, 0x00c0, 0x6ae6, 0x690c, 0xa182, 0x0100,
+ 0x0048, 0x6aee, 0x6908, 0x81ff, 0x00c0, 0x6aea, 0x6910, 0xa18a,
+ 0x0001, 0x0048, 0x6af2, 0x6918, 0xa18a, 0x0001, 0x0048, 0x6afa,
+ 0x0078, 0x6b04, 0x6013, 0x0100, 0x0078, 0x6b00, 0x6013, 0x0300,
+ 0x0078, 0x6b00, 0x6013, 0x0500, 0x0078, 0x6b00, 0x6013, 0x0700,
+ 0x0078, 0x6b00, 0x6013, 0x0900, 0x0078, 0x6b00, 0x6013, 0x0b00,
+ 0x0078, 0x6b00, 0x6013, 0x0f00, 0x0078, 0x6b00, 0x6013, 0x2d00,
+ 0xa085, 0x0001, 0x0078, 0x6b05, 0xa006, 0x017f, 0x0d7f, 0x0c7f,
+ 0x007c, 0x0c7e, 0x0d7e, 0x027e, 0x037e, 0x157e, 0x6218, 0x2268,
+ 0x6b04, 0xa394, 0x00ff, 0xa286, 0x0006, 0x0040, 0x6b2d, 0xa286,
+ 0x0004, 0x0040, 0x6b2d, 0xa394, 0xff00, 0x8217, 0xa286, 0x0006,
+ 0x0040, 0x6b2d, 0xa286, 0x0004, 0x0040, 0x6b2d, 0x0c7e, 0x2d60,
+ 0x1078, 0x34a9, 0x0c7f, 0x0078, 0x6b60, 0x2011, 0x7396, 0xad98,
+ 0x000a, 0x20a9, 0x0004, 0x1078, 0x5a15, 0x00c0, 0x6b61, 0x2011,
+ 0x739a, 0xad98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x5a15, 0x00c0,
+ 0x6b61, 0x047e, 0x017e, 0x6aa0, 0xa294, 0x00ff, 0x8227, 0xa006,
+ 0x2009, 0x6f52, 0x210c, 0xd1a4, 0x0040, 0x6b55, 0x2009, 0x0029,
+ 0x1078, 0x6d90, 0x6800, 0xc0e5, 0x6802, 0x2019, 0x0029, 0x1078,
+ 0x4535, 0x1078, 0x4478, 0x2c08, 0x1078, 0x6bca, 0x017f, 0x047f,
+ 0xa006, 0x157f, 0x037f, 0x027f, 0x0d7f, 0x0c7f, 0x007c, 0x0d7e,
+ 0x2069, 0x738e, 0x6800, 0xa086, 0x0800, 0x0040, 0x6b73, 0x6013,
+ 0x0000, 0x0078, 0x6b74, 0xa006, 0x0d7f, 0x007c, 0x0c7e, 0x0f7e,
+ 0x017e, 0x027e, 0x037e, 0x157e, 0x2079, 0x738c, 0x7830, 0xa00d,
+ 0x00c0, 0x6b9b, 0x7834, 0x1078, 0x1fb0, 0x1078, 0x3497, 0x00c0,
+ 0x6b9b, 0x2011, 0x7390, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078,
+ 0x5a15, 0x00c0, 0x6b9b, 0x2011, 0x7394, 0xac98, 0x0006, 0x20a9,
+ 0x0004, 0x1078, 0x5a15, 0x157f, 0x037f, 0x027f, 0x017f, 0x0f7f,
0x0c7f, 0x007c, 0x0c7e, 0x007e, 0x017e, 0x027e, 0x037e, 0x157e,
- 0x2011, 0x7b83, 0x2204, 0x8211, 0x220c, 0x1078, 0x2059, 0x00c0,
- 0x731f, 0x1078, 0x37d7, 0x00c0, 0x731f, 0x2011, 0x7b96, 0xac98,
- 0x000a, 0x20a9, 0x0004, 0x1078, 0x610f, 0x00c0, 0x731f, 0x2011,
- 0x7b9a, 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x610f, 0x157f,
- 0x037f, 0x027f, 0x017f, 0x007f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e,
- 0x077e, 0x067e, 0x057e, 0x047e, 0x027e, 0x127e, 0x2091, 0x8000,
- 0x2029, 0x783f, 0x252c, 0x2021, 0x7845, 0x2424, 0x2061, 0x7d00,
- 0x2071, 0x7600, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8, 0x738b,
- 0x2100, 0xac06, 0x0040, 0x7381, 0x1078, 0x7504, 0x0040, 0x7381,
- 0x671c, 0xa786, 0x0001, 0x0040, 0x73a0, 0xa786, 0x0007, 0x0040,
- 0x7381, 0x2500, 0xac06, 0x0040, 0x7381, 0x2400, 0xac06, 0x0040,
- 0x7381, 0x1078, 0x7518, 0x00c0, 0x7381, 0x0d7e, 0x6000, 0xa086,
- 0x0004, 0x00c0, 0x7367, 0x017e, 0x1078, 0x1676, 0x017f, 0x6010,
- 0x2068, 0x1078, 0x68e3, 0x0040, 0x737e, 0xa786, 0x0003, 0x00c0,
- 0x7394, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x017e, 0x1078,
- 0x6aea, 0x1078, 0x3a2c, 0x017f, 0x1078, 0x6a3f, 0x0d7f, 0x1078,
- 0x6a4c, 0xace0, 0x0008, 0x2001, 0x7615, 0x2004, 0xac02, 0x00c8,
- 0x738b, 0x0078, 0x7338, 0x127f, 0x027f, 0x047f, 0x057f, 0x067f,
- 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0xa786, 0x0006, 0x00c0, 0x7371,
- 0xa386, 0x0005, 0x0040, 0x7381, 0x1078, 0x74a8, 0x0078, 0x737e,
- 0x1078, 0x7518, 0x00c0, 0x7381, 0xa180, 0x0001, 0x2004, 0xa086,
- 0x0018, 0x00c0, 0x7381, 0x6000, 0xa086, 0x0002, 0x00c0, 0x7381,
- 0x1078, 0x6a65, 0x0040, 0x73bc, 0x1078, 0x6a79, 0x00c0, 0x7381,
- 0x1078, 0x5e09, 0x0078, 0x73be, 0x1078, 0x22b1, 0x1078, 0x6a4c,
- 0x0078, 0x7381, 0x0c7e, 0x0e7e, 0x017e, 0x2c08, 0x2170, 0x1078,
- 0x74bf, 0x017f, 0x0040, 0x73d1, 0x601c, 0xa084, 0x000f, 0x1079,
- 0x73d4, 0x0e7f, 0x0c7f, 0x007c, 0x73dc, 0x73dc, 0x73dc, 0x73dc,
- 0x73dc, 0x73dc, 0x73de, 0x73dc, 0xa006, 0x007c, 0x047e, 0x017e,
- 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4, 0x00ff, 0x8427, 0x2c00,
- 0x2009, 0x0020, 0x1078, 0x74ec, 0x017f, 0x047f, 0x037e, 0x2019,
- 0x0002, 0x1078, 0x7191, 0x037f, 0xa085, 0x0001, 0x007c, 0x2001,
- 0x0001, 0x1078, 0x376f, 0x157e, 0x017e, 0x027e, 0x037e, 0x20a9,
- 0x0004, 0x2019, 0x7605, 0x2011, 0x7b96, 0x1078, 0x610f, 0x037f,
- 0x027f, 0x017f, 0x157f, 0xa005, 0x007c, 0x0f7e, 0x0e7e, 0x0c7e,
- 0x077e, 0x067e, 0x027e, 0x127e, 0x2091, 0x8000, 0x2061, 0x7d00,
- 0x2079, 0x0001, 0x8fff, 0x0040, 0x7468, 0x2071, 0x7600, 0x7644,
- 0x7060, 0x8001, 0xa602, 0x00c8, 0x7468, 0x88ff, 0x0040, 0x742e,
- 0x2800, 0xac06, 0x00c0, 0x745e, 0x2079, 0x0000, 0x1078, 0x7504,
- 0x0040, 0x745e, 0x2400, 0xac06, 0x0040, 0x745e, 0x671c, 0xa786,
- 0x0006, 0x00c0, 0x745e, 0xa786, 0x0007, 0x0040, 0x745e, 0x88ff,
- 0x00c0, 0x7446, 0x6018, 0xa206, 0x00c0, 0x745e, 0x0d7e, 0x6000,
- 0xa086, 0x0004, 0x00c0, 0x744e, 0x1078, 0x1676, 0x6010, 0x2068,
- 0x1078, 0x68e3, 0x0040, 0x7458, 0x047e, 0x1078, 0x74a8, 0x047f,
- 0x0d7f, 0x1078, 0x6a4c, 0x88ff, 0x00c0, 0x7471, 0xace0, 0x0008,
- 0x2001, 0x7615, 0x2004, 0xac02, 0x00c8, 0x7468, 0x0078, 0x741a,
- 0xa006, 0x127f, 0x027f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x0f7f,
- 0x007c, 0xa8c5, 0x0001, 0x0078, 0x7469, 0x087e, 0x2041, 0x0000,
- 0x2c20, 0x2019, 0x0002, 0x6218, 0x1078, 0x58c7, 0x1078, 0x5968,
- 0x1078, 0x740d, 0x087f, 0x007c, 0x027e, 0x047e, 0x087e, 0x0c7e,
- 0x157e, 0x2c20, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x037e,
- 0x1078, 0x37d7, 0x00c0, 0x749d, 0x2c10, 0x2041, 0x0000, 0x1078,
- 0x58c7, 0x1078, 0x5968, 0x1078, 0x740d, 0x037f, 0x017f, 0x8108,
- 0x00f0, 0x748e, 0x157f, 0x0c7f, 0x087f, 0x047f, 0x027f, 0x007c,
- 0x017e, 0x0f7e, 0x8dff, 0x0040, 0x74bc, 0x6800, 0xa07d, 0x0040,
- 0x74b9, 0x6803, 0x0000, 0x6b52, 0x1078, 0x3a2c, 0x2f68, 0x0078,
- 0x74ad, 0x6b52, 0x1078, 0x3a2c, 0x0f7f, 0x017f, 0x007c, 0x0e7e,
- 0x047e, 0x037e, 0x2061, 0x7d00, 0x2071, 0x7600, 0x7444, 0x7060,
- 0x8001, 0xa402, 0x00c8, 0x74e7, 0x2100, 0xac06, 0x0040, 0x74d9,
- 0x6000, 0xa086, 0x0000, 0x0040, 0x74d9, 0x6008, 0xa206, 0x0040,
- 0x74e3, 0xace0, 0x0008, 0x2001, 0x7615, 0x2004, 0xac02, 0x00c8,
- 0x74e7, 0x0078, 0x74c4, 0xa085, 0x0001, 0x0078, 0x74e8, 0xa006,
- 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e, 0x007e, 0x1078, 0x132f,
- 0x007f, 0x1040, 0x12d5, 0x6837, 0x010d, 0x6803, 0x0000, 0x683b,
- 0x0000, 0x685b, 0x0000, 0x685e, 0x6956, 0x6c46, 0x684f, 0x0000,
- 0x1078, 0x3a2c, 0x0d7f, 0x007c, 0x6700, 0xa786, 0x0000, 0x0040,
- 0x7517, 0xa786, 0x0001, 0x0040, 0x7517, 0xa786, 0x000a, 0x0040,
- 0x7517, 0xa786, 0x0009, 0x0040, 0x7517, 0xa085, 0x0001, 0x007c,
- 0x0e7e, 0x6018, 0x2070, 0x70a0, 0xa206, 0x0e7f, 0x007c, 0x127e,
- 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x7640, 0xd5a4, 0x0040,
- 0x752c, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0x7532, 0x7030,
- 0x8000, 0x7032, 0xd5ac, 0x0040, 0x7539, 0x2071, 0x764a, 0x1078,
- 0x7568, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e,
- 0x2091, 0x8000, 0x2071, 0x7640, 0xd5a4, 0x0040, 0x754a, 0x7034,
- 0x8000, 0x7036, 0xd5b4, 0x0040, 0x7550, 0x7030, 0x8000, 0x7032,
- 0xd5ac, 0x0040, 0x7557, 0x2071, 0x764a, 0x1078, 0x7568, 0x0e7f,
- 0x007f, 0x127f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000,
- 0x2071, 0x7642, 0x1078, 0x7568, 0x0e7f, 0x007f, 0x127f, 0x007c,
- 0x2e04, 0x8000, 0x2072, 0x00c8, 0x7571, 0x8e70, 0x2e04, 0x8000,
- 0x2072, 0x007c, 0x0e7e, 0x2071, 0x7640, 0x1078, 0x7568, 0x0e7f,
- 0x007c, 0x0e7e, 0x2071, 0x7644, 0x1078, 0x7568, 0x0e7f, 0x007c,
- 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
- 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000, 0x8000,
- 0x59e7
-};
-#define ISP2100_CODE_LENGTH 0x6591
-#endif
-#if defined(ISP2100_FABRIC) && defined(ISP2100_SCCLUN)
-/************************************************************************
- * *
- * --- ISP2100 Initiator/Target Firmware --- *
- * with Fabric support (Public Loop) and *
- * with expanded LUN addressing. *
- * *
- * *
- ************************************************************************
- * *
- * NOTICE *
- * *
- * COPYRIGHT 1998 QLOGIC CORPORATION *
- * ALL RIGHTS RESERVED *
- * *
- * This computer program is CONFIDENTIAL and contains TRADE SECRETS of *
- * QLOGIC CORPORATION. The receipt or possession of this program does *
- * not convey any rights to reproduce or disclose its contents, or to *
- * manufacture, use, or sell anything that it may describe, in whole or *
- * in part, without the specific written consent of QLOGIC CORPORATION. *
- * Any reproduction of this program without the express written consent *
- * of QLOGIC CORPORATION is a violation of the copyright laws and may *
- * subject you to civil liability and criminal prosecution. *
- * *
- ************************************************************************
- */
-/*
- * Firmware Version 1.15.07 (14:40 Oct 13, 1998)
- */
-
-static const u_int16_t ISP2100_RISC_CODE[] = {
- 0x0078, 0x1029, 0x0000, 0x669c, 0x0000, 0x2043, 0x4f50, 0x5952,
- 0x4947, 0x4854, 0x2031, 0x3939, 0x3620, 0x514c, 0x4f47, 0x4943,
- 0x2043, 0x4f52, 0x504f, 0x5241, 0x5449, 0x4f4e, 0x2049, 0x5350,
- 0x3231, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520, 0x2056,
- 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3135, 0x2020, 0x2020,
- 0x2400, 0x20c1, 0x0021, 0x20a1, 0x769c, 0x2009, 0x0000, 0x20a9,
- 0x0764, 0x41a4, 0x3400, 0x20c9, 0x7bff, 0x2091, 0x2000, 0x2059,
- 0x0000, 0x2b78, 0x7823, 0x0004, 0x2089, 0x2074, 0x2051, 0x7700,
- 0x2a70, 0x705b, 0x9600, 0x705f, 0xffff, 0x7057, 0x95f9, 0x7063,
- 0x0300, 0x1078, 0x1282, 0x20a1, 0x7e00, 0x715c, 0x810d, 0x810d,
- 0x810d, 0x810d, 0xa18c, 0x000f, 0x2001, 0x0007, 0xa112, 0xa00e,
- 0x21a8, 0x41a4, 0x3400, 0x8211, 0x00c0, 0x1058, 0x715c, 0x3400,
- 0xa102, 0x0040, 0x1068, 0x0048, 0x1068, 0x20a8, 0xa00e, 0x41a4,
- 0x1078, 0x1249, 0x1078, 0x136e, 0x1078, 0x14f3, 0x1078, 0x19a0,
- 0x1078, 0x35ed, 0x1078, 0x5c66, 0x1078, 0x12f9, 0x1078, 0x2403,
- 0x1078, 0x3d28, 0x1078, 0x3b00, 0x1078, 0x4569, 0x1078, 0x1e2f,
- 0x1078, 0x47a9, 0x1078, 0x4249, 0x1078, 0x1d4e, 0x1078, 0x1e0e,
- 0x2091, 0x3009, 0x7823, 0x0000, 0x0090, 0x109d, 0x7820, 0xa086,
- 0x0002, 0x00c0, 0x109d, 0x7823, 0x4000, 0x0068, 0x1095, 0x781b,
- 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2a70, 0x7003, 0x0000,
- 0x2001, 0x017f, 0x2003, 0x0000, 0x2a70, 0x7000, 0xa08e, 0x0003,
- 0x00c0, 0x10bd, 0x1078, 0x2d63, 0x1078, 0x242b, 0x1078, 0x3d78,
- 0x1078, 0x3beb, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
- 0x10c1, 0x1078, 0x4581, 0x0078, 0x10a4, 0x1079, 0x10c5, 0x0078,
- 0x10aa, 0x1078, 0x5938, 0x0078, 0x10b9, 0x10cf, 0x10d0, 0x114b,
- 0x10cd, 0x11c6, 0x1246, 0x1247, 0x1248, 0x1078, 0x12d5, 0x007c,
- 0x127e, 0x0f7e, 0x2091, 0x8000, 0x1078, 0x2e88, 0x2079, 0x0100,
- 0x7844, 0xa005, 0x00c0, 0x113c, 0x2011, 0x351a, 0x1078, 0x4643,
- 0x780f, 0x00ff, 0x7840, 0xa084, 0xfffb, 0x7842, 0x2011, 0x8010,
- 0x73b8, 0x1078, 0x2d20, 0x1078, 0x5783, 0x2011, 0x0004, 0x1078,
- 0x6a18, 0x1078, 0x3a9a, 0x70c7, 0x0000, 0x70bf, 0x0000, 0x70c3,
- 0x0000, 0x1078, 0x113f, 0x2011, 0x0000, 0x2079, 0x7751, 0x7804,
- 0xd0ac, 0x0040, 0x1104, 0xc295, 0x70a4, 0xa005, 0x0040, 0x1109,
- 0xc29d, 0x72be, 0xa296, 0x0004, 0x0040, 0x112a, 0x2011, 0x0001,
- 0x1078, 0x6a18, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002,
- 0x0f7f, 0x1078, 0x2124, 0x2011, 0x0005, 0x1078, 0x5892, 0x1078,
- 0x4d50, 0x0c7e, 0x2061, 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x127f,
- 0x0078, 0x113e, 0x708b, 0x0000, 0x708f, 0xffff, 0x7003, 0x0002,
- 0x2011, 0x0005, 0x1078, 0x5892, 0x1078, 0x4d50, 0x0c7e, 0x2061,
- 0x0100, 0x60e3, 0x0008, 0x0c7f, 0x0f7f, 0x127f, 0x007c, 0x0c7e,
- 0x20a9, 0x0082, 0x2009, 0x007e, 0x1078, 0x37ee, 0x8108, 0x00f0,
- 0x1144, 0x0c7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x708c, 0xa086,
- 0xffff, 0x0040, 0x1159, 0x1078, 0x2124, 0x1078, 0x4d50, 0x0078,
- 0x11c4, 0x70bc, 0xd09c, 0x0040, 0x1181, 0xd084, 0x0040, 0x1181,
- 0x0f7e, 0x2079, 0x0100, 0x790c, 0xc1b5, 0x790e, 0x0f7f, 0xd08c,
- 0x0040, 0x1181, 0x70c0, 0xa086, 0xffff, 0x0040, 0x117d, 0x1078,
- 0x2219, 0x1078, 0x4d50, 0x2011, 0x0001, 0x2019, 0x0000, 0x1078,
- 0x2251, 0x1078, 0x4d50, 0x0078, 0x11c4, 0x70c4, 0xa005, 0x00c0,
- 0x11c4, 0x7088, 0xa005, 0x00c0, 0x11c4, 0x2001, 0x7752, 0x2004,
- 0xd0ac, 0x0040, 0x11a7, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009,
- 0x0000, 0x017e, 0x1078, 0x3806, 0x00c0, 0x119a, 0x6000, 0xd0ec,
- 0x00c0, 0x11a2, 0x017f, 0x8108, 0x00f0, 0x1191, 0x0c7f, 0x157f,
- 0x0078, 0x11a7, 0x017f, 0x0c7f, 0x157f, 0x0078, 0x11c4, 0x7003,
- 0x0003, 0x708f, 0xffff, 0x2001, 0x0000, 0x1078, 0x1fff, 0x1078,
- 0x2d9e, 0x2001, 0x7937, 0x2004, 0xa086, 0x0005, 0x00c0, 0x11bc,
- 0x2011, 0x0000, 0x1078, 0x5892, 0x2011, 0x0000, 0x1078, 0x589c,
- 0x1078, 0x4d50, 0x1078, 0x4e10, 0x127f, 0x007c, 0x017e, 0x0f7e,
- 0x127e, 0x2091, 0x8000, 0x2079, 0x0100, 0x7940, 0xa18c, 0x0010,
- 0x7942, 0x7924, 0xd1b4, 0x0040, 0x11d7, 0x7827, 0x0040, 0xd19c,
- 0x0040, 0x11dc, 0x7827, 0x0008, 0x007e, 0x037e, 0x157e, 0x7900,
- 0xa18a, 0x0003, 0x0050, 0x1202, 0x7954, 0xd1ac, 0x00c0, 0x1202,
- 0x2009, 0x00f8, 0x1078, 0x35bc, 0x7843, 0x0090, 0x7843, 0x0010,
- 0x20a9, 0x09c4, 0x7820, 0xd09c, 0x00c0, 0x11fa, 0x7824, 0xd0ac,
- 0x00c0, 0x1236, 0x00f0, 0x11f2, 0x2001, 0x0001, 0x1078, 0x1fff,
- 0x0078, 0x123f, 0x7853, 0x0000, 0x782f, 0x0020, 0x20a9, 0x0008,
- 0x00e0, 0x1208, 0x2091, 0x6000, 0x00f0, 0x1208, 0x7853, 0x0400,
- 0x782f, 0x0000, 0x2009, 0x00f8, 0x1078, 0x35bc, 0x20a9, 0x000e,
- 0x0005, 0x00f0, 0x1218, 0x7853, 0x1400, 0x7843, 0x0090, 0x7843,
- 0x0010, 0x2019, 0x61a8, 0x7854, 0x0005, 0x0005, 0xd08c, 0x0040,
- 0x122d, 0x7824, 0xd0ac, 0x00c0, 0x1236, 0x8319, 0x00c0, 0x1223,
- 0x2001, 0x0001, 0x1078, 0x1fff, 0x0078, 0x123d, 0x7828, 0xc09d,
- 0x782a, 0x7827, 0x0008, 0x7827, 0x0040, 0x7853, 0x0400, 0x157f,
- 0x037f, 0x007f, 0x127f, 0x0f7f, 0x017f, 0x007c, 0x007c, 0x007c,
- 0x007c, 0x2a70, 0x2009, 0x0100, 0x2104, 0xa082, 0x0002, 0x0048,
- 0x1255, 0x704f, 0xffff, 0x0078, 0x1257, 0x704f, 0x0000, 0x7053,
- 0xffff, 0x7067, 0x0000, 0x706b, 0x0000, 0x2061, 0x7920, 0x6003,
- 0x0909, 0x6007, 0x0000, 0x600b, 0x8800, 0x600f, 0x0200, 0x6013,
- 0x00ff, 0x6017, 0x0003, 0x601b, 0x0000, 0x601f, 0x07d0, 0x2061,
- 0x7928, 0x6003, 0x8000, 0x6007, 0x0000, 0x600b, 0x0000, 0x600f,
- 0x0200, 0x6013, 0x00ff, 0x6017, 0x0000, 0x601b, 0x0001, 0x601f,
- 0x0000, 0x007c, 0x1078, 0x12a8, 0x2011, 0x0000, 0x81ff, 0x0040,
- 0x12a7, 0xa186, 0x0001, 0x00c0, 0x1297, 0x705f, 0x8fff, 0x7057,
- 0x8601, 0x7063, 0x0100, 0x705b, 0x8600, 0x0078, 0x12a5, 0xa186,
- 0x0002, 0x00c0, 0x129f, 0x2011, 0x0000, 0x0078, 0x12a5, 0xa186,
- 0x0005, 0x00c0, 0x12a5, 0x2011, 0x0001, 0x1078, 0x12cf, 0x007c,
- 0x2009, 0x0000, 0x2011, 0x0000, 0x1078, 0x12cf, 0x2019, 0xaaaa,
- 0x2061, 0xffff, 0x2362, 0x2c24, 0x2061, 0x7fff, 0x2c04, 0xa406,
- 0x0040, 0x12bd, 0xc18d, 0x0078, 0x12ca, 0xc185, 0x2011, 0x0001,
- 0x1078, 0x12cf, 0x2061, 0xffff, 0x2362, 0x2c04, 0xa306, 0x00c0,
- 0x12ca, 0xc195, 0x2011, 0x0001, 0x1078, 0x12cf, 0x007c, 0x3800,
- 0xa084, 0xfffc, 0xa205, 0x20c0, 0x007c, 0x2091, 0x8000, 0x0068,
- 0x12d7, 0x007e, 0x017e, 0x2079, 0x0000, 0x7818, 0xa084, 0x0000,
- 0x00c0, 0x12dd, 0x017f, 0x792e, 0x007f, 0x782a, 0x007f, 0x7826,
- 0x3900, 0x783a, 0x7823, 0x8002, 0x781b, 0x0001, 0x2091, 0x5000,
- 0x2091, 0x4080, 0x2079, 0x7700, 0x7803, 0x0005, 0x0078, 0x12f6,
- 0x007c, 0x2071, 0x7700, 0x7158, 0x712e, 0x2021, 0x0001, 0xa190,
- 0x002d, 0xa298, 0x002d, 0x0048, 0x130f, 0x705c, 0xa302, 0x00c8,
- 0x130f, 0x220a, 0x2208, 0x2310, 0x8420, 0x0078, 0x1301, 0x200b,
- 0x0000, 0x749e, 0x74a2, 0x007c, 0x0e7e, 0x127e, 0x2091, 0x8000,
- 0x2071, 0x7700, 0x70a0, 0xa0ea, 0x0010, 0x00c8, 0x1322, 0xa06e,
- 0x0078, 0x132c, 0x8001, 0x70a2, 0x702c, 0x2068, 0x2d04, 0x702e,
- 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c, 0x0e7e,
- 0x2071, 0x7700, 0x127e, 0x2091, 0x8000, 0x70a0, 0x8001, 0x00c8,
- 0x133c, 0xa06e, 0x0078, 0x1345, 0x70a2, 0x702c, 0x2068, 0x2d04,
- 0x702e, 0x206b, 0x0000, 0x6807, 0x0000, 0x127f, 0x0e7f, 0x007c,
- 0x0e7e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7700, 0x702c, 0x206a,
- 0x2d00, 0x702e, 0x70a0, 0x8000, 0x70a2, 0x127f, 0x0e7f, 0x007c,
- 0x8dff, 0x0040, 0x1364, 0x6804, 0x6807, 0x0000, 0x007e, 0x1078,
- 0x1348, 0x0d7f, 0x0078, 0x1358, 0x007c, 0x0e7e, 0x2071, 0x7700,
- 0x70a0, 0xa08a, 0x0010, 0xa00d, 0x0e7f, 0x007c, 0x0e7e, 0x2071,
- 0x7959, 0x7007, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x2071,
- 0x0000, 0x7010, 0xa085, 0x8004, 0x7012, 0x0e7f, 0x007c, 0x0e7e,
- 0x2270, 0x700b, 0x0000, 0x2071, 0x7959, 0x7018, 0xa088, 0x7962,
- 0x220a, 0x8000, 0xa084, 0x0007, 0x701a, 0x7004, 0xa005, 0x00c0,
- 0x1397, 0x0f7e, 0x2079, 0x0010, 0x1078, 0x13a8, 0x0f7f, 0x0e7f,
- 0x007c, 0x0e7e, 0x2071, 0x7959, 0x7004, 0xa005, 0x00c0, 0x13a6,
- 0x0f7e, 0x2079, 0x0010, 0x1078, 0x13a8, 0x0f7f, 0x0e7f, 0x007c,
- 0x7000, 0x0079, 0x13ab, 0x13af, 0x1419, 0x1436, 0x1436, 0x7018,
- 0x711c, 0xa106, 0x00c0, 0x13b7, 0x7007, 0x0000, 0x007c, 0x0d7e,
- 0xa180, 0x7962, 0x2004, 0x700a, 0x2068, 0x8108, 0xa18c, 0x0007,
- 0x711e, 0x7803, 0x0026, 0x6824, 0x7832, 0x6828, 0x7836, 0x682c,
- 0x783a, 0x6830, 0x783e, 0x6810, 0x700e, 0x680c, 0x7016, 0x6804,
- 0x0d7f, 0xd084, 0x0040, 0x13d9, 0x7007, 0x0001, 0x1078, 0x13de,
- 0x007c, 0x7007, 0x0002, 0x1078, 0x13f4, 0x007c, 0x017e, 0x027e,
- 0x710c, 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x13e9, 0x2110,
- 0xa006, 0x700e, 0x7212, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
- 0x0041, 0x027f, 0x017f, 0x007c, 0x017e, 0x027e, 0x137e, 0x147e,
- 0x157e, 0x7014, 0x2098, 0x20a1, 0x0014, 0x7803, 0x0026, 0x710c,
- 0x2011, 0x0040, 0xa182, 0x0040, 0x00c8, 0x1408, 0x2110, 0xa006,
- 0x700e, 0x22a8, 0x53a6, 0x8203, 0x7822, 0x7803, 0x0020, 0x7803,
- 0x0001, 0x3300, 0x7016, 0x157f, 0x147f, 0x137f, 0x027f, 0x017f,
- 0x007c, 0x137e, 0x147e, 0x157e, 0x2099, 0x77e5, 0x20a1, 0x0018,
- 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
- 0x7803, 0x0041, 0x7007, 0x0003, 0x7000, 0xc084, 0x7002, 0x700b,
- 0x77e0, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x137e, 0x147e,
- 0x157e, 0x2001, 0x7814, 0x209c, 0x20a1, 0x0014, 0x7803, 0x0026,
- 0x2001, 0x7815, 0x20ac, 0x53a6, 0x2099, 0x7816, 0x20a1, 0x0018,
- 0x20a9, 0x0008, 0x53a3, 0x7803, 0x0020, 0x127e, 0x2091, 0x8000,
- 0x7803, 0x0001, 0x7007, 0x0004, 0x7000, 0xc08c, 0x7002, 0x700b,
- 0x7811, 0x127f, 0x157f, 0x147f, 0x137f, 0x007c, 0x017e, 0x0e7e,
- 0x2071, 0x7959, 0x0f7e, 0x2079, 0x0010, 0x7904, 0x7803, 0x0002,
- 0xd1fc, 0x0040, 0x1479, 0xa18c, 0x0700, 0x0040, 0x1476, 0x7008,
- 0xa080, 0x0002, 0x2003, 0x0200, 0x0078, 0x1479, 0x7004, 0x1079,
- 0x147d, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x13a8, 0x1485, 0x14a7,
- 0x14c1, 0x14ea, 0x1483, 0x0078, 0x1483, 0x137e, 0x147e, 0x157e,
- 0x7014, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x7010, 0x20a8,
- 0x53a5, 0x3400, 0x7016, 0x157f, 0x147f, 0x137f, 0x700c, 0xa005,
- 0x0040, 0x14ae, 0x1078, 0x13de, 0x007c, 0x7008, 0xa080, 0x0002,
- 0x2003, 0x0100, 0x7007, 0x0000, 0x1078, 0x13a8, 0x007c, 0x700c,
- 0xa005, 0x0040, 0x14ae, 0x1078, 0x13f4, 0x007c, 0x0d7e, 0x7008,
- 0x2068, 0x7830, 0x6826, 0x7834, 0x682a, 0x7838, 0x682e, 0x783c,
- 0x6832, 0x680b, 0x0100, 0x0d7f, 0x7007, 0x0000, 0x1078, 0x13a8,
- 0x007c, 0x137e, 0x147e, 0x157e, 0x2001, 0x77e3, 0x2004, 0xa080,
- 0x000d, 0x20a0, 0x2099, 0x0014, 0x7803, 0x0040, 0x20a9, 0x0020,
- 0x53a5, 0x2001, 0x77e5, 0x2004, 0xd0bc, 0x0040, 0x14e0, 0x2001,
- 0x77ee, 0x2004, 0xa080, 0x000d, 0x20a0, 0x20a9, 0x0020, 0x53a5,
- 0x157f, 0x147f, 0x137f, 0x7007, 0x0000, 0x1078, 0x3e21, 0x1078,
- 0x13a8, 0x007c, 0x2001, 0x7813, 0x2003, 0x0100, 0x7007, 0x0000,
- 0x1078, 0x13a8, 0x007c, 0x127e, 0x2091, 0x2100, 0x2079, 0x0030,
- 0x2071, 0x796a, 0x7003, 0x0000, 0x700f, 0x7970, 0x7013, 0x7970,
- 0x780f, 0x0070, 0x127f, 0x007c, 0x6934, 0xa184, 0x0007, 0x0079,
- 0x1509, 0x1511, 0x1557, 0x1511, 0x1511, 0x1511, 0x153c, 0x1520,
- 0x1515, 0xa085, 0x0001, 0x0078, 0x1571, 0x684c, 0xd0bc, 0x0040,
- 0x1511, 0x6860, 0x682e, 0x685c, 0x682a, 0x6858, 0x0078, 0x155f,
- 0xa18c, 0x00ff, 0xa186, 0x001e, 0x00c0, 0x1511, 0x684c, 0xd0bc,
- 0x0040, 0x1511, 0x6860, 0x682e, 0x685c, 0x682a, 0x6804, 0x681a,
- 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004,
- 0x6832, 0x6858, 0x0078, 0x1567, 0xa18c, 0x00ff, 0xa186, 0x0015,
- 0x00c0, 0x1511, 0x684c, 0xd0ac, 0x0040, 0x1511, 0x6804, 0x681a,
- 0xa080, 0x000d, 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004,
- 0x6832, 0xa006, 0x682e, 0x682a, 0x6858, 0x0078, 0x1567, 0x684c,
- 0xd0ac, 0x0040, 0x1511, 0xa006, 0x682e, 0x682a, 0x6858, 0xa18c,
- 0x000f, 0xa188, 0x1c5c, 0x210c, 0x6932, 0x2d08, 0x691a, 0x6826,
- 0x684c, 0xc0dd, 0x684e, 0xa006, 0x680a, 0x697c, 0x6912, 0x6980,
- 0x6916, 0x007c, 0x20e1, 0x0007, 0x20e1, 0x2000, 0x2001, 0x020a,
- 0x2004, 0x82ff, 0x0040, 0x158c, 0xa280, 0x0004, 0x0d7e, 0x206c,
- 0x684c, 0xd0dc, 0x00c0, 0x1588, 0x1078, 0x1504, 0x10c0, 0x12d5,
- 0x6808, 0x8000, 0x680a, 0x0d7f, 0x127e, 0x047e, 0x037e, 0x027e,
- 0x2091, 0x2100, 0x027f, 0x037f, 0x047f, 0x7000, 0xa005, 0x00c0,
- 0x15a0, 0x7206, 0x2001, 0x15b4, 0x007e, 0x2260, 0x0078, 0x16cc,
- 0x710c, 0x220a, 0x8108, 0x230a, 0x8108, 0x240a, 0x8108, 0xa182,
- 0x798b, 0x0048, 0x15ad, 0x2009, 0x7970, 0x710e, 0x7000, 0xa005,
- 0x00c0, 0x15b4, 0x1078, 0x16b5, 0x127f, 0x007c, 0x127e, 0x027e,
- 0x037e, 0x0c7e, 0x007e, 0x2091, 0x2100, 0x007f, 0x047f, 0x037f,
- 0x027f, 0x0d7e, 0x0c7e, 0x2460, 0x6110, 0x2168, 0x6a62, 0x6b5e,
- 0xa005, 0x0040, 0x1608, 0x6808, 0xa005, 0x0040, 0x166e, 0x7000,
- 0xa005, 0x00c0, 0x15d5, 0x0078, 0x1602, 0x700c, 0x7110, 0xa106,
- 0x00c0, 0x1672, 0x7004, 0xa406, 0x00c0, 0x1602, 0x2001, 0x0005,
- 0x2004, 0xd08c, 0x0040, 0x15eb, 0x047e, 0x1078, 0x17a5, 0x047f,
- 0x2460, 0x0078, 0x15cb, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0,
- 0x15de, 0x7804, 0xa084, 0x6000, 0x0040, 0x15fc, 0xa086, 0x6000,
- 0x0040, 0x15fc, 0x0078, 0x15de, 0x7803, 0x0004, 0x7003, 0x0000,
- 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5cfb, 0x0078, 0x1672,
- 0x6808, 0xa005, 0x0040, 0x166e, 0x7000, 0xa005, 0x00c0, 0x1612,
- 0x0078, 0x166e, 0x700c, 0x7110, 0xa106, 0x00c0, 0x161b, 0x7004,
- 0xa406, 0x00c0, 0x166e, 0x2001, 0x0005, 0x2004, 0xd08c, 0x0040,
- 0x1628, 0x047e, 0x1078, 0x17a5, 0x047f, 0x2460, 0x0078, 0x1608,
- 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x161b, 0x2001, 0x0005,
- 0x2004, 0xd08c, 0x00c0, 0x1621, 0x7804, 0xa084, 0x6000, 0x0040,
- 0x163f, 0xa086, 0x6000, 0x0040, 0x163f, 0x0078, 0x161b, 0x7007,
- 0x0000, 0xa016, 0x2218, 0x7000, 0xa08e, 0x0001, 0x0040, 0x1660,
- 0xa08e, 0x0002, 0x00c0, 0x166e, 0x0c7e, 0x0e7e, 0x6818, 0x2060,
- 0x1078, 0x1c31, 0x2804, 0xac70, 0x6034, 0xd09c, 0x00c0, 0x165c,
- 0x7308, 0x720c, 0x0078, 0x165e, 0x7310, 0x7214, 0x0e7f, 0x0c7f,
- 0x7820, 0xa318, 0x7824, 0xa211, 0x6810, 0xa300, 0x6812, 0x6814,
- 0xa201, 0x6816, 0x7803, 0x0004, 0x7003, 0x0000, 0x2009, 0x0048,
- 0x1078, 0x5cfb, 0x0c7f, 0x0d7f, 0x127f, 0x007c, 0x0f7e, 0x0e7e,
- 0x2071, 0x796a, 0x7000, 0xa086, 0x0000, 0x0040, 0x16b2, 0x7004,
- 0xac06, 0x00c0, 0x16a3, 0x2079, 0x0030, 0x7804, 0xd0fc, 0x00c0,
- 0x169f, 0x2001, 0x0207, 0x2004, 0xd09c, 0x00c0, 0x1685, 0x7803,
- 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1691, 0x7803, 0x0002, 0x7803,
- 0x0009, 0x7003, 0x0003, 0x7007, 0x0000, 0x0078, 0x16a3, 0x1078,
- 0x17a5, 0x0078, 0x167a, 0x157e, 0x20a9, 0x0009, 0x2009, 0x7970,
- 0x2104, 0xac06, 0x00c0, 0x16ad, 0x200a, 0xa188, 0x0003, 0x00f0,
- 0x16a8, 0x157f, 0x0e7f, 0x0f7f, 0x007c, 0x700c, 0x7110, 0xa106,
- 0x00c0, 0x16bd, 0x7003, 0x0000, 0x007c, 0x2104, 0x7006, 0x2060,
- 0x8108, 0x211c, 0x8108, 0x2124, 0x8108, 0xa182, 0x798b, 0x0048,
- 0x16cb, 0x2009, 0x7970, 0x7112, 0x8cff, 0x00c0, 0x16eb, 0x7908,
- 0xd1ec, 0x00c0, 0x16df, 0x1078, 0x197e, 0x0040, 0x16df, 0x7803,
- 0x0009, 0x7904, 0xd1fc, 0x0040, 0x16d9, 0x7803, 0x0006, 0x7007,
- 0x0000, 0x1078, 0x197e, 0x0040, 0x1712, 0x7803, 0x0019, 0x7003,
- 0x0003, 0x0078, 0x1712, 0x6010, 0x2068, 0x2d58, 0x6828, 0xa406,
- 0x00c0, 0x16f6, 0x682c, 0xa306, 0x0040, 0x16fa, 0x1078, 0x1c7c,
- 0x00c0, 0x16cf, 0x684c, 0xd0f4, 0x00c0, 0x16cf, 0x6824, 0x2050,
- 0x6818, 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x2009,
- 0x0011, 0x1078, 0x1713, 0x0040, 0x1711, 0x2009, 0x0001, 0x1078,
- 0x1713, 0x2d58, 0x007c, 0x8aff, 0x0040, 0x17a0, 0xa03e, 0x2730,
- 0x6850, 0xd0fc, 0x00c0, 0x1732, 0x0d7e, 0x2804, 0xac68, 0x2900,
- 0x0079, 0x1722, 0x1782, 0x1742, 0x1742, 0x1782, 0x1782, 0x177a,
- 0x1782, 0x1742, 0x1782, 0x1748, 0x1748, 0x1782, 0x1782, 0x1782,
- 0x1771, 0x1748, 0xc0fc, 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20,
- 0x0d7e, 0xd99c, 0x0040, 0x1785, 0x2804, 0xac68, 0x6f08, 0x6e0c,
- 0x0078, 0x1785, 0x6b08, 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x1785,
- 0x7b0c, 0xd3bc, 0x0040, 0x1769, 0x7004, 0x0e7e, 0x2070, 0x701c,
- 0x0e7f, 0xa086, 0x0008, 0x00c0, 0x1769, 0x7b08, 0xa39c, 0x0fff,
- 0x2d20, 0x0d7f, 0x0d7e, 0x6a14, 0x82ff, 0x00c0, 0x1764, 0x6810,
- 0xa302, 0x0048, 0x1764, 0x6b10, 0x2011, 0x0000, 0x2468, 0x0078,
- 0x176b, 0x6b10, 0x6a14, 0x6d00, 0x6c04, 0x6f08, 0x6e0c, 0x0078,
- 0x1785, 0x0d7f, 0x0d7e, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e,
- 0x00c0, 0x1782, 0x0d7f, 0x1078, 0x1c18, 0x00c0, 0x1713, 0xa00e,
- 0x0078, 0x17a0, 0x0d7f, 0x1078, 0x12d5, 0x7b22, 0x7a26, 0x7d32,
- 0x7c36, 0x7f3a, 0x7e3e, 0x7902, 0x7000, 0x8000, 0x7002, 0x0d7f,
- 0x6828, 0xa300, 0x682a, 0x682c, 0xa201, 0x682e, 0x2300, 0x6b10,
- 0xa302, 0x6812, 0x2200, 0x6a14, 0xa203, 0x6816, 0x1078, 0x1c18,
- 0x007c, 0x1078, 0x12d5, 0x1078, 0x12d5, 0x127e, 0x2091, 0x2100,
- 0x007e, 0x017e, 0x2b68, 0x6818, 0x2060, 0x7904, 0x7803, 0x0002,
- 0xa184, 0x0700, 0x00c0, 0x17a3, 0xa184, 0x0003, 0xa086, 0x0003,
- 0x0040, 0x17a3, 0x7000, 0x0079, 0x17bd, 0x17c5, 0x17c7, 0x189b,
- 0x18ff, 0x1916, 0x17c5, 0x17c5, 0x17c5, 0x1078, 0x12d5, 0x8001,
- 0x7002, 0xa184, 0x0880, 0x00c0, 0x17dc, 0x8aff, 0x0040, 0x183b,
- 0x2009, 0x0001, 0x1078, 0x1713, 0x0040, 0x1928, 0x2009, 0x0001,
- 0x1078, 0x1713, 0x0078, 0x1928, 0x7803, 0x0004, 0x7003, 0x0000,
- 0xd1dc, 0x0040, 0x1827, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x7820,
- 0x686e, 0xa31a, 0x7824, 0x6872, 0xa213, 0x6b2a, 0x6a2e, 0x7820,
- 0x6910, 0xa100, 0x6812, 0x7824, 0x6914, 0xa101, 0x6816, 0x037f,
- 0x027f, 0x7830, 0x681e, 0x7834, 0x6822, 0x1078, 0x1c31, 0x2a00,
- 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x6850,
- 0xc0fd, 0x6852, 0x6808, 0x8001, 0x680a, 0x00c0, 0x1819, 0x684c,
- 0xd0e4, 0x0040, 0x1819, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078,
- 0x5cfb, 0x7808, 0xd0ec, 0x00c0, 0x1823, 0x7803, 0x0009, 0x7003,
- 0x0004, 0x0078, 0x1928, 0x1078, 0x16b5, 0x0078, 0x1928, 0x057e,
- 0x7d0c, 0xd5bc, 0x00c0, 0x182e, 0x1078, 0x7648, 0x057f, 0x1078,
- 0x192c, 0x697c, 0x6912, 0x6980, 0x6916, 0x7803, 0x0009, 0x7003,
- 0x0003, 0x0078, 0x1928, 0x684c, 0xc0f5, 0x684e, 0x7814, 0xa005,
- 0x00c0, 0x1853, 0x7003, 0x0000, 0x6808, 0x8001, 0x680a, 0x00c0,
- 0x184f, 0x7004, 0x2060, 0x2009, 0x0048, 0x1078, 0x5cfb, 0x1078,
- 0x16b5, 0x0078, 0x1928, 0x7814, 0x6910, 0xa102, 0x6812, 0x6914,
- 0xa183, 0x0000, 0x6816, 0x7814, 0x7908, 0xa18c, 0x0fff, 0xa188,
- 0x0007, 0x8114, 0x8214, 0x8214, 0xa10a, 0x8104, 0x8004, 0x8004,
- 0xa20a, 0x810b, 0x810b, 0x810b, 0x1078, 0x195b, 0x7803, 0x0004,
- 0x780f, 0xffff, 0x7803, 0x0001, 0x7804, 0xd0fc, 0x0040, 0x1874,
- 0x7803, 0x0002, 0x7803, 0x0004, 0x780f, 0x0070, 0x7004, 0x7007,
- 0x0000, 0x2060, 0x2009, 0x0048, 0x1078, 0x5cfb, 0x1078, 0x197e,
- 0x0040, 0x184f, 0x7908, 0xd1ec, 0x00c0, 0x1892, 0x2009, 0x0009,
- 0x0078, 0x1894, 0x2009, 0x0019, 0x7902, 0x7803, 0x0009, 0x7003,
- 0x0003, 0x0078, 0x1928, 0x8001, 0x7002, 0xd194, 0x0040, 0x18ad,
- 0x7804, 0xd0fc, 0x00c0, 0x17ad, 0x8aff, 0x0040, 0x1928, 0x2009,
- 0x0001, 0x1078, 0x1713, 0x0078, 0x1928, 0xa184, 0x0880, 0x00c0,
- 0x18ba, 0x8aff, 0x0040, 0x1928, 0x2009, 0x0001, 0x1078, 0x1713,
- 0x0078, 0x1928, 0x7803, 0x0004, 0x7003, 0x0000, 0xd1dc, 0x0040,
- 0x18ee, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078, 0x1c31, 0x0d7e,
- 0x0f7e, 0x2d78, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x18de,
- 0x6808, 0x2008, 0xa31a, 0x680c, 0xa213, 0x7810, 0xa100, 0x7812,
- 0x690c, 0x7814, 0xa101, 0x7816, 0x0078, 0x18ea, 0x6810, 0x2008,
- 0xa31a, 0x6814, 0xa213, 0x7810, 0xa100, 0x7812, 0x6914, 0x7814,
- 0xa101, 0x7816, 0x0f7f, 0x0d7f, 0x0078, 0x17e7, 0x057e, 0x7d0c,
- 0x1078, 0x7648, 0x057f, 0x1078, 0x192c, 0x697c, 0x6912, 0x6980,
- 0x6916, 0x7803, 0x0009, 0x7003, 0x0003, 0x0078, 0x1928, 0x7803,
- 0x0004, 0x7003, 0x0000, 0x7004, 0xa00d, 0x0040, 0x1912, 0x6808,
- 0x8001, 0x680a, 0x00c0, 0x1912, 0x7004, 0x2060, 0x2009, 0x0048,
- 0x1078, 0x5cfb, 0x1078, 0x16b5, 0x0078, 0x1928, 0x7803, 0x0004,
- 0x7003, 0x0000, 0x7004, 0x2060, 0x6010, 0xa005, 0x0040, 0x1912,
- 0x2068, 0x6808, 0x8000, 0x680a, 0x6c28, 0x6b2c, 0x1078, 0x16cc,
- 0x017f, 0x007f, 0x127f, 0x007c, 0x1078, 0x193d, 0x20e1, 0x9028,
- 0x700f, 0x7970, 0x7013, 0x7970, 0x2001, 0x015d, 0x200c, 0x810a,
- 0x2102, 0x2001, 0x0138, 0x2202, 0x007c, 0x2001, 0x0138, 0x2014,
- 0x2003, 0x0000, 0x2021, 0xb015, 0x2001, 0x0141, 0x201c, 0xd3dc,
- 0x00c0, 0x195a, 0x2001, 0x0109, 0x201c, 0xa39c, 0x0048, 0x00c0,
- 0x195a, 0x2001, 0x0111, 0x201c, 0x83ff, 0x00c0, 0x195a, 0x8421,
- 0x00c0, 0x1944, 0x007c, 0x3c00, 0x007e, 0x0e7e, 0x2071, 0x0200,
- 0x7808, 0xa084, 0xf000, 0xa10d, 0x1078, 0x193d, 0x20e1, 0x7000,
- 0x7324, 0x7420, 0x7028, 0x7028, 0x7426, 0x7037, 0x0001, 0x810f,
- 0x712e, 0x702f, 0x0100, 0x7037, 0x0008, 0x7326, 0x7422, 0x2001,
- 0x0138, 0x2202, 0x0e7f, 0x007f, 0x20e0, 0x007c, 0x3c00, 0x007e,
- 0x7908, 0xa18c, 0x0fff, 0xa182, 0x0009, 0x0048, 0x198b, 0xa085,
- 0x0001, 0x0078, 0x199d, 0x2001, 0x020a, 0x81ff, 0x0040, 0x1996,
- 0x20e1, 0x6000, 0x200c, 0x200c, 0x200c, 0x200c, 0x20e1, 0x7000,
- 0x200c, 0x200c, 0x7003, 0x0000, 0xa006, 0x007f, 0x20e0, 0x007c,
- 0x0e7e, 0x2071, 0x798b, 0x7003, 0x0000, 0x0e7f, 0x007c, 0x0d7e,
- 0xa280, 0x0004, 0x206c, 0x694c, 0xd1dc, 0x00c0, 0x1a22, 0x6934,
- 0xa184, 0x0007, 0x0079, 0x19b4, 0x19bc, 0x1a0d, 0x19bc, 0x19bc,
- 0x19bc, 0x19f2, 0x19cf, 0x19be, 0x1078, 0x12d5, 0x684c, 0xd0b4,
- 0x0040, 0x1b24, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812,
- 0x687c, 0x680a, 0x6880, 0x680e, 0x6958, 0x0078, 0x1a15, 0x6834,
- 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x19bc, 0x684c, 0xd0b4,
- 0x0040, 0x1b24, 0x6860, 0x682e, 0x6816, 0x685c, 0x682a, 0x6812,
- 0x687c, 0x680a, 0x6880, 0x680e, 0x6804, 0x681a, 0xa080, 0x000d,
- 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004, 0x6832, 0x6958,
- 0x0078, 0x1a1e, 0xa18c, 0x00ff, 0xa186, 0x0015, 0x00c0, 0x1a22,
- 0x684c, 0xd0b4, 0x0040, 0x1b24, 0x6804, 0x681a, 0xa080, 0x000d,
- 0x2004, 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004, 0x6832, 0x6958,
- 0xa006, 0x682e, 0x682a, 0x0078, 0x1a1e, 0x684c, 0xd0b4, 0x0040,
- 0x17a1, 0x6958, 0xa006, 0x682e, 0x682a, 0x2d00, 0x681a, 0x6834,
- 0xa084, 0x000f, 0xa080, 0x1c5c, 0x2004, 0x6832, 0x6926, 0x684c,
- 0xc0dd, 0x684e, 0x0d7f, 0x007c, 0x0f7e, 0x2079, 0x0020, 0x7804,
- 0xd0fc, 0x10c0, 0x1b28, 0x0e7e, 0x0d7e, 0x2071, 0x798b, 0x7000,
- 0xa005, 0x00c0, 0x1a9e, 0x0c7e, 0x7206, 0xa280, 0x0004, 0x205c,
- 0x7004, 0x2068, 0x6818, 0x0d7e, 0x2068, 0x686c, 0x7812, 0x6890,
- 0x0f7e, 0x20e1, 0x9040, 0x2079, 0x0200, 0x781a, 0x2079, 0x0100,
- 0x8004, 0x78d6, 0x0f7f, 0x0d7f, 0x2b68, 0x6824, 0x2050, 0x6818,
- 0x2060, 0x6830, 0x2040, 0x6034, 0xa0cc, 0x000f, 0x6908, 0xa184,
- 0x0007, 0x0040, 0x1a60, 0x017e, 0x2009, 0x0008, 0xa102, 0x017f,
- 0xa108, 0x791a, 0x7116, 0x701e, 0x680c, 0xa081, 0x0000, 0x781e,
- 0x701a, 0xa006, 0x700e, 0x7012, 0x7004, 0x692c, 0x6814, 0xa106,
- 0x00c0, 0x1a77, 0x6928, 0x6810, 0xa106, 0x0040, 0x1a84, 0x037e,
- 0x047e, 0x6b14, 0x6c10, 0x1078, 0x1c7c, 0x047f, 0x037f, 0x0040,
- 0x1a84, 0x0c7f, 0x0078, 0x1a9e, 0x8aff, 0x00c0, 0x1a8c, 0x0c7f,
- 0xa085, 0x0001, 0x0078, 0x1a9e, 0x127e, 0x2091, 0x8000, 0x2079,
- 0x0020, 0x2009, 0x0001, 0x1078, 0x1aa2, 0x0040, 0x1a9b, 0x2009,
- 0x0001, 0x1078, 0x1aa2, 0x127f, 0x0c7f, 0xa006, 0x0d7f, 0x0e7f,
- 0x0f7f, 0x007c, 0x077e, 0x067e, 0x057e, 0x047e, 0x037e, 0x027e,
- 0x8aff, 0x0040, 0x1b1d, 0x700c, 0x7214, 0xa202, 0x7010, 0x7218,
- 0xa203, 0x0048, 0x1b1c, 0xa03e, 0x2730, 0x6850, 0xd0fc, 0x00c0,
- 0x1acf, 0x0d7e, 0x2804, 0xac68, 0x2900, 0x0079, 0x1abf, 0x1afe,
- 0x1adf, 0x1adf, 0x1afe, 0x1afe, 0x1af6, 0x1afe, 0x1adf, 0x1afe,
- 0x1ae5, 0x1ae5, 0x1afe, 0x1afe, 0x1afe, 0x1aed, 0x1ae5, 0xc0fc,
- 0x6852, 0x6b6c, 0x6a70, 0x6d1c, 0x6c20, 0xd99c, 0x0040, 0x1b02,
- 0x0d7e, 0x2804, 0xac68, 0x6f08, 0x6e0c, 0x0078, 0x1b01, 0x6b08,
- 0x6a0c, 0x6d00, 0x6c04, 0x0078, 0x1b01, 0x6b10, 0x6a14, 0x6d00,
- 0x6c04, 0x6f08, 0x6e0c, 0x0078, 0x1b01, 0x0d7f, 0x0d7e, 0x6834,
- 0xa084, 0x00ff, 0xa086, 0x001e, 0x00c0, 0x1afe, 0x0d7f, 0x1078,
- 0x1c18, 0x00c0, 0x1aa8, 0xa00e, 0x0078, 0x1b1d, 0x0d7f, 0x1078,
- 0x12d5, 0x0d7f, 0x7b22, 0x7a26, 0x7d32, 0x7c36, 0x7f3a, 0x7e3e,
- 0x7902, 0x7000, 0x8000, 0x7002, 0x6828, 0xa300, 0x682a, 0x682c,
- 0xa201, 0x682e, 0x700c, 0xa300, 0x700e, 0x7010, 0xa201, 0x7012,
- 0x1078, 0x1c18, 0x0078, 0x1b1d, 0xa006, 0x027f, 0x037f, 0x047f,
- 0x057f, 0x067f, 0x077f, 0x007c, 0x1078, 0x12d5, 0x1078, 0x12d5,
- 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x0f7e, 0x0e7e, 0x0d7e,
- 0x0c7e, 0x2079, 0x0020, 0x2071, 0x798b, 0x2b68, 0x6818, 0x2060,
- 0x7904, 0x7803, 0x0002, 0xa184, 0x0700, 0x00c0, 0x1b26, 0x7000,
- 0x0079, 0x1b42, 0x1be9, 0x1b46, 0x1bb6, 0x1be7, 0x8001, 0x7002,
- 0xd19c, 0x00c0, 0x1b5a, 0x8aff, 0x0040, 0x1b79, 0x2009, 0x0001,
- 0x1078, 0x1aa2, 0x0040, 0x1be9, 0x2009, 0x0001, 0x1078, 0x1aa2,
- 0x0078, 0x1be9, 0x7803, 0x0004, 0xd194, 0x0040, 0x1b6a, 0x6850,
- 0xc0fc, 0x6852, 0x8aff, 0x00c0, 0x1b6f, 0x684c, 0xc0f5, 0x684e,
- 0x0078, 0x1b6f, 0x1078, 0x1c31, 0x6850, 0xc0fd, 0x6852, 0x2a00,
- 0x6826, 0x2c00, 0x681a, 0x2800, 0x6832, 0x7003, 0x0000, 0x0078,
- 0x1be9, 0x711c, 0x81ff, 0x0040, 0x1b8f, 0x7918, 0x7922, 0x7827,
- 0x0000, 0x7803, 0x0001, 0x7000, 0x8000, 0x7002, 0x700c, 0xa100,
- 0x700e, 0x7010, 0xa081, 0x0000, 0x7012, 0x0078, 0x1be9, 0x0f7e,
- 0x027e, 0x781c, 0x007e, 0x7818, 0x007e, 0x2079, 0x0100, 0x7a14,
- 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x7820, 0xd0bc, 0x00c0,
- 0x1b9d, 0x79c8, 0x007f, 0xa102, 0x78ca, 0x79c4, 0x007f, 0xa102,
- 0x78c6, 0xa284, 0x0004, 0xa085, 0x0012, 0x7816, 0x027f, 0x0f7f,
- 0x7803, 0x0008, 0x7003, 0x0000, 0x0078, 0x1be9, 0x8001, 0x7002,
- 0xd194, 0x0040, 0x1bcb, 0x7804, 0xd0fc, 0x00c0, 0x1b38, 0xd19c,
- 0x00c0, 0x1be5, 0x8aff, 0x0040, 0x1be9, 0x2009, 0x0001, 0x1078,
- 0x1aa2, 0x0078, 0x1be9, 0x027e, 0x037e, 0x6b28, 0x6a2c, 0x1078,
- 0x1c31, 0x0d7e, 0x2804, 0xac68, 0x6034, 0xd09c, 0x00c0, 0x1bde,
- 0x6808, 0xa31a, 0x680c, 0xa213, 0x0078, 0x1be2, 0x6810, 0xa31a,
- 0x6814, 0xa213, 0x0d7f, 0x0078, 0x1b6a, 0x0078, 0x1b6a, 0x1078,
- 0x12d5, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x017f, 0x007f, 0x127f,
- 0x007c, 0x0f7e, 0x0e7e, 0x2071, 0x798b, 0x7000, 0xa086, 0x0000,
- 0x0040, 0x1c15, 0x2079, 0x0020, 0x20e1, 0x9040, 0x7804, 0xd0fc,
- 0x0040, 0x1bfc, 0x1078, 0x1b28, 0x7000, 0xa086, 0x0000, 0x00c0,
- 0x1bfc, 0x7803, 0x0004, 0x7804, 0xd0ac, 0x00c0, 0x1c0b, 0x20e1,
- 0x9040, 0x7803, 0x0002, 0x7003, 0x0000, 0x0e7f, 0x0f7f, 0x007c,
- 0x8840, 0x2804, 0xa005, 0x00c0, 0x1c2c, 0x6004, 0xa005, 0x0040,
- 0x1c2e, 0x681a, 0x2060, 0x6034, 0xa084, 0x000f, 0xa080, 0x1c5c,
- 0x2044, 0x88ff, 0x1040, 0x12d5, 0x8a51, 0x007c, 0x2051, 0x0000,
- 0x007c, 0x8a50, 0x8841, 0x2804, 0xa005, 0x00c0, 0x1c4b, 0x2c00,
- 0xad06, 0x0040, 0x1c40, 0x6000, 0xa005, 0x00c0, 0x1c40, 0x2d00,
- 0x2060, 0x681a, 0x6034, 0xa084, 0x000f, 0xa080, 0x1c6c, 0x2044,
- 0x88ff, 0x1040, 0x12d5, 0x007c, 0x0000, 0x0011, 0x0015, 0x0019,
- 0x001d, 0x0021, 0x0025, 0x0029, 0x0000, 0x000f, 0x0015, 0x001b,
- 0x0021, 0x0027, 0x0000, 0x0000, 0x0000, 0x1c51, 0x1c4d, 0x0000,
- 0x0000, 0x1c5b, 0x0000, 0x1c51, 0x0000, 0x1c58, 0x1c55, 0x0000,
- 0x0000, 0x0000, 0x1c5b, 0x1c58, 0x0000, 0x1c53, 0x1c53, 0x0000,
- 0x0000, 0x1c5b, 0x0000, 0x1c53, 0x0000, 0x1c59, 0x1c59, 0x0000,
- 0x0000, 0x0000, 0x1c5b, 0x1c59, 0x0a7e, 0x097e, 0x087e, 0x6858,
- 0xa055, 0x0040, 0x1d19, 0x2d60, 0x6034, 0xa0cc, 0x000f, 0xa9c0,
- 0x1c5c, 0xa986, 0x0007, 0x0040, 0x1c95, 0xa986, 0x000e, 0x0040,
- 0x1c95, 0xa986, 0x000f, 0x00c0, 0x1c99, 0x605c, 0xa422, 0x6060,
- 0xa31a, 0x2804, 0xa045, 0x00c0, 0x1ca7, 0x0050, 0x1ca1, 0x0078,
- 0x1d19, 0x6004, 0xa065, 0x0040, 0x1d19, 0x0078, 0x1c84, 0x2804,
- 0xa005, 0x0040, 0x1cc5, 0xac68, 0xd99c, 0x00c0, 0x1cb5, 0x6808,
- 0xa422, 0x680c, 0xa31b, 0x0078, 0x1cb9, 0x6810, 0xa422, 0x6814,
- 0xa31b, 0x0048, 0x1ce4, 0x2300, 0xa405, 0x0040, 0x1ccb, 0x8a51,
- 0x0040, 0x1d19, 0x8840, 0x0078, 0x1ca7, 0x6004, 0xa065, 0x0040,
- 0x1d19, 0x0078, 0x1c84, 0x8a51, 0x0040, 0x1d19, 0x8840, 0x2804,
- 0xa005, 0x00c0, 0x1cde, 0x6004, 0xa065, 0x0040, 0x1d19, 0x6034,
- 0xa0cc, 0x000f, 0xa9c0, 0x1c5c, 0x2804, 0x2040, 0x2b68, 0x6850,
- 0xc0fc, 0x6852, 0x0078, 0x1d11, 0x8422, 0x8420, 0x831a, 0xa399,
- 0x0000, 0x0d7e, 0x2b68, 0x6c6e, 0x6b72, 0x0d7f, 0xd99c, 0x00c0,
- 0x1cff, 0x6908, 0x2400, 0xa122, 0x690c, 0x2300, 0xa11b, 0x1048,
- 0x12d5, 0x6800, 0xa420, 0x6804, 0xa319, 0x0078, 0x1d0b, 0x6910,
- 0x2400, 0xa122, 0x6914, 0x2300, 0xa11b, 0x1048, 0x12d5, 0x6800,
- 0xa420, 0x6804, 0xa319, 0x2b68, 0x6c1e, 0x6b22, 0x6850, 0xc0fd,
- 0x6852, 0x2c00, 0x681a, 0x007f, 0x007f, 0x007f, 0xa006, 0x0078,
- 0x1d1e, 0x087f, 0x097f, 0x0a7f, 0xa085, 0x0001, 0x007c, 0x2001,
- 0x0005, 0x2004, 0xa084, 0x0007, 0x0079, 0x1d26, 0x1d2e, 0x1d2f,
- 0x1d32, 0x1d35, 0x1d3a, 0x1d3d, 0x1d42, 0x1d47, 0x007c, 0x1078,
- 0x1b28, 0x007c, 0x1078, 0x17a5, 0x007c, 0x1078, 0x17a5, 0x1078,
- 0x1b28, 0x007c, 0x1078, 0x145e, 0x007c, 0x1078, 0x1b28, 0x1078,
- 0x145e, 0x007c, 0x1078, 0x17a5, 0x1078, 0x145e, 0x007c, 0x1078,
- 0x17a5, 0x1078, 0x1b28, 0x1078, 0x145e, 0x007c, 0x127e, 0x2091,
- 0x2300, 0x2079, 0x0200, 0x2071, 0x7c80, 0x2069, 0x7700, 0x2009,
- 0x0004, 0x7912, 0x7817, 0x0004, 0x1078, 0x202c, 0x781b, 0x0002,
- 0x20e1, 0x8700, 0x127f, 0x007c, 0x127e, 0x2091, 0x2300, 0x781c,
- 0xa084, 0x0007, 0x0079, 0x1d6c, 0x1d90, 0x1d74, 0x1d78, 0x1d7c,
- 0x1d82, 0x1d86, 0x1d8a, 0x1d8e, 0x1078, 0x4252, 0x0078, 0x1d90,
- 0x1078, 0x4281, 0x0078, 0x1d90, 0x1078, 0x4252, 0x1078, 0x4281,
- 0x0078, 0x1d90, 0x1078, 0x1d92, 0x0078, 0x1d90, 0x1078, 0x1d92,
- 0x0078, 0x1d90, 0x1078, 0x1d92, 0x0078, 0x1d90, 0x1078, 0x1d92,
- 0x127f, 0x007c, 0x007e, 0x017e, 0x027e, 0x7930, 0xa184, 0x0003,
- 0x0040, 0x1d9c, 0x1078, 0x12d5, 0xa184, 0x0030, 0x0040, 0x1dad,
- 0x6a00, 0xa286, 0x0003, 0x00c0, 0x1da7, 0x1078, 0x12d5, 0x1078,
- 0x3553, 0x20e1, 0x9010, 0x0078, 0x1db9, 0xa184, 0x00c0, 0x0040,
- 0x1db3, 0x1078, 0x12d5, 0xa184, 0x0300, 0x0040, 0x1db9, 0x20e1,
- 0x9020, 0x7932, 0x027f, 0x017f, 0x007f, 0x007c, 0x017e, 0x0e7e,
- 0x0f7e, 0x2071, 0x7700, 0x7128, 0x2001, 0x7923, 0x2102, 0x2001,
- 0x792b, 0x2102, 0xa182, 0x0211, 0x00c8, 0x1dd2, 0x2009, 0x0008,
- 0x0078, 0x1dfc, 0xa182, 0x0259, 0x00c8, 0x1dda, 0x2009, 0x0007,
- 0x0078, 0x1dfc, 0xa182, 0x02c1, 0x00c8, 0x1de2, 0x2009, 0x0006,
- 0x0078, 0x1dfc, 0xa182, 0x0349, 0x00c8, 0x1dea, 0x2009, 0x0005,
- 0x0078, 0x1dfc, 0xa182, 0x0421, 0x00c8, 0x1df2, 0x2009, 0x0004,
- 0x0078, 0x1dfc, 0xa182, 0x0581, 0x00c8, 0x1dfa, 0x2009, 0x0003,
- 0x0078, 0x1dfc, 0x2009, 0x0002, 0x2079, 0x0200, 0x7912, 0xa182,
- 0x0005, 0x00c8, 0x1e06, 0x7916, 0x0078, 0x1e08, 0x7817, 0x0004,
- 0x1078, 0x202c, 0x0f7f, 0x0e7f, 0x017f, 0x007c, 0x127e, 0x2091,
- 0x2200, 0x2061, 0x0100, 0x2071, 0x7700, 0x6024, 0x6026, 0x6033,
- 0x00ef, 0x60e7, 0x0000, 0x60eb, 0x00ef, 0x60e3, 0x0008, 0x604b,
- 0xf7f7, 0x6043, 0x0000, 0x602f, 0x0080, 0x602f, 0x0000, 0x6007,
- 0x0caf, 0x600f, 0x00ff, 0x602b, 0x002f, 0x127f, 0x007c, 0x2001,
- 0x772d, 0x2003, 0x0000, 0x2001, 0x772c, 0x2003, 0x0001, 0x007c,
- 0x127e, 0x2091, 0x2200, 0x007e, 0x017e, 0x027e, 0x6124, 0xa184,
- 0x002c, 0x00c0, 0x1e47, 0xa184, 0x0007, 0x0079, 0x1e4d, 0xa195,
- 0x0004, 0xa284, 0x0007, 0x0079, 0x1e4d, 0x1e79, 0x1e55, 0x1e59,
- 0x1e5d, 0x1e63, 0x1e67, 0x1e6d, 0x1e73, 0x1078, 0x47bc, 0x0078,
- 0x1e79, 0x1078, 0x48ab, 0x0078, 0x1e79, 0x1078, 0x48ab, 0x1078,
- 0x47bc, 0x0078, 0x1e79, 0x1078, 0x1e7e, 0x0078, 0x1e79, 0x1078,
- 0x47bc, 0x1078, 0x1e7e, 0x0078, 0x1e79, 0x1078, 0x48ab, 0x1078,
- 0x1e7e, 0x0078, 0x1e79, 0x1078, 0x48ab, 0x1078, 0x47bc, 0x1078,
- 0x1e7e, 0x027f, 0x017f, 0x007f, 0x127f, 0x007c, 0xd1ac, 0x0040,
- 0x1f32, 0x017e, 0x047e, 0x0c7e, 0x644c, 0x74ba, 0xa48c, 0xff00,
- 0xa196, 0xff00, 0x0040, 0x1ead, 0x6030, 0xa084, 0x00ff, 0x810f,
- 0xa116, 0x0040, 0x1ead, 0x7130, 0xd18c, 0x00c0, 0x1ead, 0x2011,
- 0x7752, 0x2214, 0xd2ec, 0x0040, 0x1ea1, 0xc18d, 0x7132, 0x0078,
- 0x1ead, 0x6240, 0xa294, 0x0010, 0x0040, 0x1eef, 0x6248, 0xa294,
- 0xff00, 0xa296, 0xff00, 0x00c0, 0x1eef, 0x037e, 0x73b8, 0x2011,
- 0x8013, 0x1078, 0x2d20, 0x037f, 0x7130, 0xc185, 0x7132, 0x2011,
- 0x7752, 0x220c, 0xd1a4, 0x0040, 0x1ed7, 0x017e, 0x2009, 0x0001,
- 0x2011, 0x0100, 0x1078, 0x478a, 0x2019, 0x000e, 0x1078, 0x758f,
- 0xa484, 0x00ff, 0xa080, 0x2303, 0x200c, 0xa18c, 0xff00, 0x810f,
- 0x8127, 0xa006, 0x2009, 0x000e, 0x1078, 0x75f7, 0x017f, 0xd1ac,
- 0x00c0, 0x1ee0, 0x2019, 0x0004, 0x1078, 0x226d, 0x0078, 0x1eef,
- 0x157e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x1078, 0x3806, 0x00c0,
- 0x1eeb, 0x1078, 0x35f9, 0x8108, 0x00f0, 0x1ee5, 0x157f, 0x0c7f,
- 0x047f, 0x6043, 0x0000, 0x2009, 0x00f7, 0x1078, 0x35bc, 0x0f7e,
- 0x2079, 0x7949, 0x783c, 0xa086, 0x0000, 0x0040, 0x1f07, 0x6027,
- 0x0004, 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x0000, 0x0f7f,
- 0x2011, 0x0003, 0x1078, 0x5892, 0x2011, 0x0002, 0x1078, 0x589c,
- 0x1078, 0x57a8, 0x1078, 0x46c0, 0x037e, 0x2019, 0x0000, 0x1078,
- 0x583a, 0x037f, 0x60e3, 0x0000, 0x017f, 0x2001, 0x7700, 0x2014,
- 0xa296, 0x0004, 0x00c0, 0x1f2a, 0xd19c, 0x00c0, 0x1f2a, 0x6228,
- 0xc29d, 0x622a, 0x2003, 0x0001, 0x2001, 0x7720, 0x2003, 0x0000,
- 0x6027, 0x0020, 0xd194, 0x0040, 0x1fd3, 0x0f7e, 0x2079, 0x7949,
- 0x783c, 0xa086, 0x0001, 0x00c0, 0x1f56, 0x017e, 0x6027, 0x0004,
- 0x783f, 0x0000, 0x2079, 0x0140, 0x7803, 0x1000, 0x7803, 0x0000,
- 0x2079, 0x7936, 0x7807, 0x0000, 0x7833, 0x0000, 0x1078, 0x4d50,
- 0x1078, 0x4e10, 0x017f, 0x0f7f, 0x0078, 0x1fd3, 0x0f7f, 0x017e,
- 0x6220, 0xd2b4, 0x0040, 0x1f8b, 0x1078, 0x46c0, 0x1078, 0x5656,
- 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804, 0xa084, 0x4000,
- 0x0040, 0x1f6e, 0x6803, 0x1000, 0x6803, 0x0000, 0x0d7f, 0x0c7e,
- 0x2061, 0x7936, 0x6028, 0xa09a, 0x0002, 0x00c8, 0x1f7e, 0x8000,
- 0x602a, 0x0c7f, 0x1078, 0x5648, 0x0078, 0x1fd2, 0x2019, 0x793f,
- 0x2304, 0xa065, 0x0040, 0x1f88, 0x2009, 0x0027, 0x1078, 0x5cfb,
- 0x0c7f, 0x0078, 0x1fd2, 0xd2bc, 0x0040, 0x1fd2, 0x1078, 0x46ce,
- 0x6017, 0x0010, 0x6027, 0x0004, 0x0d7e, 0x2069, 0x0140, 0x6804,
- 0xa084, 0x4000, 0x0040, 0x1fa0, 0x6803, 0x1000, 0x6803, 0x0000,
- 0x0d7f, 0x0c7e, 0x2061, 0x7936, 0x6044, 0xa09a, 0x0002, 0x00c8,
- 0x1fc1, 0x8000, 0x6046, 0x603c, 0x0c7f, 0xa005, 0x0040, 0x1fd2,
- 0x1078, 0x46c5, 0xa080, 0x0007, 0x2004, 0xa086, 0x0006, 0x00c0,
- 0x1fbd, 0x6017, 0x0012, 0x0078, 0x1fd2, 0x6017, 0x0016, 0x0078,
- 0x1fd2, 0x037e, 0x2019, 0x0001, 0x1078, 0x583a, 0x037f, 0x2019,
- 0x7945, 0x2304, 0xa065, 0x0040, 0x1fd1, 0x2009, 0x004f, 0x1078,
- 0x5cfb, 0x0c7f, 0x017f, 0xd19c, 0x0040, 0x1ffb, 0x017e, 0x6028,
- 0xc09c, 0x602a, 0x2011, 0x0003, 0x1078, 0x5892, 0x2011, 0x0002,
- 0x1078, 0x589c, 0x1078, 0x57a8, 0x1078, 0x46c0, 0x037e, 0x2019,
- 0x0000, 0x1078, 0x583a, 0x037f, 0x60e3, 0x0000, 0x1078, 0x7666,
- 0x1078, 0x7684, 0x2001, 0x7700, 0x2003, 0x0004, 0x6027, 0x0008,
- 0x1078, 0x11c6, 0x017f, 0xa18c, 0xffd0, 0x6126, 0x007c, 0x007e,
- 0x017e, 0x027e, 0x0e7e, 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x7700, 0x71b0, 0x70b2, 0xa116, 0x0040, 0x2025, 0x81ff, 0x0040,
- 0x2017, 0x2011, 0x8011, 0x1078, 0x2d20, 0x0078, 0x2025, 0x2011,
- 0x8012, 0x1078, 0x2d20, 0x037e, 0x0c7e, 0x2061, 0x0100, 0x2019,
- 0x0028, 0x1078, 0x226d, 0x0c7f, 0x037f, 0x127f, 0x0f7f, 0x0e7f,
- 0x027f, 0x017f, 0x007f, 0x007c, 0x0c7e, 0x0f7e, 0x007e, 0x027e,
- 0x2061, 0x0100, 0xa190, 0x2047, 0x2204, 0x60f2, 0xa192, 0x0005,
- 0x00c8, 0x203e, 0xa190, 0x2050, 0x0078, 0x2040, 0x2011, 0x2054,
- 0x2204, 0x60ee, 0x027f, 0x007f, 0x0f7f, 0x0c7f, 0x007c, 0x0840,
- 0x0840, 0x0840, 0x0580, 0x0420, 0x0348, 0x02c0, 0x0258, 0x0210,
- 0x01a8, 0x01a8, 0x01a8, 0x01a8, 0x0140, 0x00f8, 0x00d0, 0x00b0,
- 0x00a0, 0x2028, 0x2130, 0xa094, 0xff00, 0x00c0, 0x2062, 0x81ff,
- 0x0040, 0x2066, 0x1078, 0x4405, 0x0078, 0x206d, 0xa080, 0x2303,
- 0x200c, 0xa18c, 0xff00, 0x810f, 0xa006, 0x007c, 0xa080, 0x2303,
- 0x200c, 0xa18c, 0x00ff, 0x007c, 0x2094, 0x2098, 0x209c, 0x20a2,
- 0x20a8, 0x20ae, 0x20b4, 0x20bc, 0x20c4, 0x20ca, 0x20d0, 0x20d8,
- 0x20e0, 0x20e8, 0x20f0, 0x20fa, 0x2104, 0x2104, 0x2104, 0x2104,
- 0x2104, 0x2104, 0x2104, 0x2104, 0x2104, 0x2104, 0x2104, 0x2104,
- 0x2104, 0x2104, 0x2104, 0x2104, 0x107e, 0x007e, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38,
- 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e,
- 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38,
- 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38,
- 0x1078, 0x1d1f, 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1d64,
- 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1d1f, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1d1f, 0x1078, 0x1d64, 0x0078, 0x211d,
- 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d1f, 0x1078, 0x1d64,
- 0x0078, 0x211d, 0x107e, 0x007e, 0x1078, 0x1e38, 0x1078, 0x1d1f,
- 0x1078, 0x1d64, 0x0078, 0x211d, 0x0005, 0x0078, 0x2104, 0xb084,
- 0x003c, 0x8004, 0x8004, 0x0079, 0x210d, 0x211d, 0x209a, 0x209e,
- 0x20a4, 0x20aa, 0x20b0, 0x20b6, 0x20be, 0x20c6, 0x20cc, 0x20d2,
- 0x20da, 0x20e2, 0x20ea, 0x20f2, 0x20fc, 0x0008, 0x2107, 0x007f,
- 0x107f, 0x2091, 0x8001, 0x007c, 0x0c7e, 0x027e, 0x2041, 0x007e,
- 0x70bc, 0xd09c, 0x0040, 0x212e, 0x2041, 0x007f, 0x2001, 0x010c,
- 0x203c, 0x727c, 0x82ff, 0x0040, 0x2179, 0x037e, 0x738c, 0xa38e,
- 0xffff, 0x00c0, 0x213d, 0x2019, 0x0001, 0x8314, 0xa2e0, 0x7dc0,
- 0x2c04, 0xa38c, 0x0001, 0x0040, 0x214a, 0xa084, 0xff00, 0x8007,
- 0x0078, 0x214c, 0xa084, 0x00ff, 0xa70e, 0x0040, 0x216e, 0xa08e,
- 0x00ff, 0x0040, 0x2174, 0x2009, 0x0000, 0x1078, 0x2059, 0x1078,
- 0x37cb, 0x00c0, 0x2171, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
- 0x00c0, 0x2168, 0x1078, 0x21cb, 0x0040, 0x2171, 0x0078, 0x216e,
- 0x1078, 0x22cf, 0x1078, 0x21f2, 0x0040, 0x2171, 0x8318, 0x0078,
- 0x213d, 0x738e, 0x0078, 0x2176, 0x708f, 0xffff, 0x037f, 0x0078,
- 0x21c8, 0xa780, 0x2303, 0x203c, 0xa7bc, 0xff00, 0x873f, 0x708c,
- 0xa096, 0xffff, 0x0040, 0x218b, 0xa812, 0x00c8, 0x219b, 0x708f,
- 0xffff, 0x0078, 0x21c5, 0x2009, 0x0000, 0x70bc, 0xd09c, 0x0040,
- 0x2196, 0xd094, 0x0040, 0x2196, 0x2009, 0x007e, 0x2100, 0xa802,
- 0x20a8, 0x0078, 0x219f, 0x2008, 0x2810, 0xa202, 0x20a8, 0x2700,
- 0x157e, 0x017e, 0xa106, 0x0040, 0x21bc, 0x1078, 0x37cb, 0x00c0,
- 0x21c5, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x21b6,
- 0x1078, 0x21cb, 0x0040, 0x21c5, 0x0078, 0x21bc, 0x1078, 0x22cf,
- 0x1078, 0x21f2, 0x0040, 0x21c5, 0x017f, 0x8108, 0x157f, 0x00f0,
- 0x219f, 0x708f, 0xffff, 0x0078, 0x21c8, 0x017f, 0x157f, 0x718e,
- 0x027f, 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68,
- 0x1078, 0x5c6e, 0x0040, 0x21ed, 0x2d00, 0x601a, 0x601f, 0x0001,
- 0x2001, 0x0000, 0x1078, 0x379a, 0x2001, 0x0000, 0x1078, 0x37ae,
- 0x127e, 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009,
- 0x0004, 0x1078, 0x5cfb, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f,
- 0x017f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078,
- 0x5c6e, 0x0040, 0x2214, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001,
- 0x0000, 0x1078, 0x379a, 0x2001, 0x0002, 0x1078, 0x37ae, 0x127e,
- 0x2091, 0x8000, 0x7088, 0x8000, 0x708a, 0x127f, 0x2009, 0x0002,
- 0x1078, 0x5cfb, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f,
- 0x007c, 0x0c7e, 0x027e, 0x2009, 0x0080, 0x1078, 0x37cb, 0x00c0,
- 0x2227, 0x1078, 0x222a, 0x0040, 0x2227, 0x70c3, 0xffff, 0x027f,
- 0x0c7f, 0x007c, 0x017e, 0x077e, 0x0d7e, 0x0c7e, 0x2c68, 0x1078,
- 0x5c6e, 0x0040, 0x224c, 0x2d00, 0x601a, 0x601f, 0x0001, 0x2001,
- 0x0000, 0x1078, 0x379a, 0x2001, 0x0002, 0x1078, 0x37ae, 0x127e,
- 0x2091, 0x8000, 0x70c4, 0x8000, 0x70c6, 0x127f, 0x2009, 0x0002,
- 0x1078, 0x5cfb, 0xa085, 0x0001, 0x0c7f, 0x0d7f, 0x077f, 0x017f,
- 0x007c, 0x0c7e, 0x0d7e, 0x2009, 0x007f, 0x1078, 0x37cb, 0x00c0,
- 0x226a, 0x2c68, 0x1078, 0x5c6e, 0x0040, 0x226a, 0x2d00, 0x601a,
- 0x6312, 0x601f, 0x0001, 0x620a, 0x2009, 0x0022, 0x1078, 0x5cfb,
- 0xa085, 0x0001, 0x0d7f, 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x067e,
- 0x037e, 0x027e, 0x1078, 0x4a3f, 0x1078, 0x49ef, 0x1078, 0x61c8,
- 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e, 0x1078, 0x3806, 0x00c0,
- 0x2285, 0x1078, 0x39f0, 0x1078, 0x35f9, 0x017f, 0x8108, 0x00f0,
- 0x227c, 0x027f, 0x037f, 0x067f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e,
- 0x0c7e, 0x037e, 0x027e, 0x017e, 0x6218, 0x2270, 0x72a0, 0x027e,
- 0x2019, 0x0029, 0x1078, 0x4a38, 0x1078, 0x497b, 0x2c08, 0x1078,
- 0x7431, 0x017f, 0x2e60, 0x1078, 0x39f0, 0xa186, 0x007f, 0x0040,
- 0x22ab, 0x1078, 0x35f9, 0x017f, 0x027f, 0x037f, 0x0c7f, 0x0e7f,
- 0x007c, 0x0e7e, 0x007e, 0x6018, 0xa080, 0x0028, 0x2004, 0xd0bc,
- 0x00c0, 0x22c5, 0x2071, 0x7700, 0x7088, 0xa005, 0x0040, 0x22c2,
- 0x8001, 0x708a, 0x007f, 0x0e7f, 0x007c, 0x2071, 0x7700, 0x70c4,
- 0xa005, 0x0040, 0x22c2, 0x8001, 0x70c6, 0x0078, 0x22c2, 0x6000,
- 0xc08c, 0x6002, 0x007c, 0x0e7e, 0x0c7e, 0x037e, 0x027e, 0x017e,
- 0x157e, 0x81ff, 0x00c0, 0x22e0, 0x20a9, 0x0001, 0x0078, 0x22e4,
- 0x20a9, 0x007f, 0x2011, 0x0000, 0x027e, 0xa2e0, 0x7820, 0x2c64,
- 0x8cff, 0x0040, 0x22f6, 0x2019, 0x0029, 0x1078, 0x4a38, 0x1078,
- 0x497b, 0x2c08, 0x1078, 0x7431, 0x1078, 0x39f0, 0x027f, 0x8210,
- 0x00f0, 0x22e4, 0x027e, 0x027f, 0x157f, 0x017f, 0x027f, 0x037f,
- 0x0c7f, 0x0e7f, 0x007c, 0x7eef, 0x7de8, 0x7ce4, 0x80e2, 0x7be1,
- 0x80e0, 0x80dc, 0x80da, 0x7ad9, 0x80d6, 0x80d5, 0x80d4, 0x80d3,
- 0x80d2, 0x80d1, 0x79ce, 0x78cd, 0x80cc, 0x80cb, 0x80ca, 0x80c9,
- 0x80c7, 0x80c6, 0x77c5, 0x76c3, 0x80bc, 0x80ba, 0x75b9, 0x80b6,
- 0x74b5, 0x73b4, 0x72b3, 0x80b2, 0x80b1, 0x80ae, 0x71ad, 0x80ac,
- 0x70ab, 0x6faa, 0x6ea9, 0x80a7, 0x6da6, 0x6ca5, 0x6ba3, 0x6a9f,
- 0x699e, 0x689d, 0x809b, 0x8098, 0x6797, 0x6690, 0x658f, 0x6488,
- 0x6384, 0x6282, 0x8081, 0x8080, 0x617c, 0x607a, 0x8079, 0x5f76,
- 0x8075, 0x8074, 0x8073, 0x8072, 0x8071, 0x806e, 0x5e6d, 0x806c,
- 0x5d6b, 0x5c6a, 0x5b69, 0x8067, 0x5a66, 0x5965, 0x5863, 0x575c,
- 0x565a, 0x5559, 0x8056, 0x8055, 0x5454, 0x5353, 0x5252, 0x5151,
- 0x504e, 0x4f4d, 0x804c, 0x804b, 0x4e4a, 0x4d49, 0x8047, 0x4c46,
- 0x8045, 0x8043, 0x803c, 0x803a, 0x8039, 0x8036, 0x4b35, 0x8034,
- 0x4a33, 0x4932, 0x4831, 0x802e, 0x472d, 0x462c, 0x452b, 0x442a,
- 0x4329, 0x4227, 0x8026, 0x8025, 0x4123, 0x401f, 0x3f1e, 0x3e1d,
- 0x3d1b, 0x3c18, 0x8017, 0x8010, 0x3b0f, 0x3a08, 0x8004, 0x3902,
- 0x8001, 0x8000, 0x8000, 0x3800, 0x3700, 0x3600, 0x8000, 0x3500,
- 0x8000, 0x8000, 0x8000, 0x3400, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x3300, 0x3200, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x3100, 0x3000, 0x8000, 0x8000, 0x2f00, 0x8000,
- 0x2e00, 0x2d00, 0x2c00, 0x8000, 0x8000, 0x8000, 0x2b00, 0x8000,
- 0x2a00, 0x2900, 0x2800, 0x8000, 0x2700, 0x2600, 0x2500, 0x2400,
- 0x2300, 0x2200, 0x8000, 0x8000, 0x2100, 0x2000, 0x1f00, 0x1e00,
- 0x1d00, 0x1c00, 0x8000, 0x8000, 0x1b00, 0x1a00, 0x8000, 0x1900,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x1800, 0x8000,
- 0x1700, 0x1600, 0x1500, 0x8000, 0x1400, 0x1300, 0x1200, 0x1100,
- 0x1000, 0x0f00, 0x8000, 0x8000, 0x0e00, 0x0d00, 0x0c00, 0x0b00,
- 0x0a00, 0x0900, 0x8000, 0x8000, 0x0800, 0x0700, 0x8000, 0x0600,
- 0x8000, 0x8000, 0x8000, 0x0500, 0x0400, 0x0300, 0x8000, 0x0200,
- 0x8000, 0x8000, 0x8000, 0x0100, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x0000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000, 0x8000,
- 0x8000, 0x8000, 0x8000, 0x2071, 0x776d, 0x7003, 0x0002, 0xa006,
- 0x7012, 0x7016, 0x703a, 0x703e, 0x7033, 0x777d, 0x7037, 0x777d,
- 0x7007, 0x0001, 0x2061, 0x77bd, 0x6003, 0x0002, 0x007c, 0x0090,
- 0x242a, 0x0068, 0x242a, 0x2071, 0x776d, 0x2b78, 0x7818, 0xd084,
- 0x00c0, 0x242a, 0x2a60, 0x7820, 0xa08e, 0x0069, 0x00c0, 0x2511,
- 0x0079, 0x24ae, 0x007c, 0x2071, 0x776d, 0x7004, 0x0079, 0x2430,
- 0x2434, 0x2435, 0x243f, 0x2451, 0x007c, 0x0090, 0x243e, 0x0068,
- 0x243e, 0x2b78, 0x7818, 0xd084, 0x0040, 0x245d, 0x007c, 0x2b78,
- 0x2061, 0x77bd, 0x6008, 0xa08e, 0x0100, 0x0040, 0x244c, 0xa086,
- 0x0200, 0x0040, 0x2509, 0x007c, 0x7014, 0x2068, 0x2a60, 0x7018,
- 0x007a, 0x7010, 0x2068, 0x6834, 0xa086, 0x0103, 0x0040, 0x2459,
- 0x007c, 0x2a60, 0x2b78, 0x7018, 0x007a, 0x2a60, 0x7820, 0xa08a,
- 0x0040, 0x00c8, 0x2466, 0x61b0, 0x0079, 0x246e, 0x2100, 0xa08a,
- 0x0036, 0x00c8, 0x2505, 0x61b0, 0x0079, 0x24ae, 0x24e7, 0x2519,
- 0x2521, 0x2525, 0x252d, 0x2533, 0x2537, 0x2540, 0x2544, 0x254c,
- 0x2550, 0x2505, 0x2505, 0x2505, 0x2554, 0x2505, 0x2564, 0x257b,
- 0x2592, 0x260e, 0x2613, 0x2640, 0x269a, 0x26ab, 0x26c9, 0x26fc,
- 0x2706, 0x2713, 0x2726, 0x2740, 0x2749, 0x2786, 0x278c, 0x2505,
- 0x279c, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x27a0, 0x27a6,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x27ae, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x27bb, 0x27c1,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x254c, 0x2550,
- 0x2505, 0x2505, 0x27d3, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505,
- 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2505, 0x2820, 0x28ed,
- 0x2901, 0x2908, 0x296b, 0x29c6, 0x29d1, 0x2a10, 0x2a1f, 0x2a2e,
- 0x2a31, 0x27d7, 0x2a5a, 0x2aa1, 0x2aae, 0x2ba0, 0x2c86, 0x2cad,
- 0x2dab, 0x2db9, 0x2dc6, 0x2e00, 0x713c, 0x0078, 0x24e7, 0x2021,
- 0x4000, 0x1078, 0x2cfa, 0x127e, 0x2091, 0x8000, 0x0068, 0x24f4,
- 0x7818, 0xd084, 0x0040, 0x24f7, 0x127f, 0x0078, 0x24eb, 0x781b,
- 0x0001, 0x7c22, 0x7926, 0x7a2a, 0x7b2e, 0x2091, 0x4080, 0x7007,
- 0x0001, 0x2091, 0x5000, 0x127f, 0x007c, 0x2021, 0x4001, 0x0078,
- 0x24e9, 0x2021, 0x4002, 0x0078, 0x24e9, 0x2021, 0x4003, 0x0078,
- 0x24e9, 0x2021, 0x4005, 0x0078, 0x24e9, 0x2021, 0x4006, 0x0078,
- 0x24e9, 0xa02e, 0x2520, 0x7b28, 0x7a2c, 0x7824, 0x7930, 0x0078,
- 0x2d09, 0x7823, 0x0004, 0x7824, 0x007a, 0xa02e, 0x2520, 0x7b28,
- 0x7a2c, 0x7824, 0x7930, 0x0078, 0x2d0d, 0x7924, 0x7828, 0x2114,
- 0x200a, 0x0078, 0x24e7, 0x7924, 0x2114, 0x0078, 0x24e7, 0x2099,
- 0x0009, 0x20a1, 0x0009, 0x20a9, 0x0007, 0x53a3, 0x0078, 0x24e7,
- 0x7824, 0x2060, 0x0078, 0x2556, 0x2009, 0x0001, 0x2011, 0x000f,
- 0x2019, 0x0007, 0x0078, 0x24e7, 0x7d38, 0x7c3c, 0x0078, 0x251b,
- 0x7d38, 0x7c3c, 0x0078, 0x2527, 0x2061, 0x1000, 0x610c, 0xa006,
- 0x2c14, 0xa200, 0x8c60, 0x8109, 0x00c0, 0x2558, 0x2010, 0xa005,
- 0x0040, 0x24e7, 0x0078, 0x250d, 0x2061, 0x7751, 0x7824, 0x7930,
- 0xa11a, 0x00c8, 0x2515, 0x8019, 0x0040, 0x2515, 0x604a, 0x6142,
- 0x782c, 0x6052, 0x7828, 0x6056, 0xa006, 0x605a, 0x605e, 0x1078,
- 0x3d43, 0x0078, 0x24e7, 0x2061, 0x7751, 0x7824, 0x7930, 0xa11a,
- 0x00c8, 0x2515, 0x8019, 0x0040, 0x2515, 0x604e, 0x6146, 0x782c,
- 0x6062, 0x7828, 0x6066, 0xa006, 0x606a, 0x606e, 0x1078, 0x3b19,
- 0x0078, 0x24e7, 0xa02e, 0x2520, 0x81ff, 0x00c0, 0x2511, 0x7924,
- 0x7b28, 0x7a2c, 0x20a9, 0x0005, 0x20a1, 0x7774, 0x41a1, 0x1078,
- 0x2cbf, 0x0040, 0x2511, 0x2009, 0x0020, 0x1078, 0x2d09, 0x701b,
- 0x25aa, 0x007c, 0x6834, 0x2008, 0xa084, 0x00ff, 0xa096, 0x0011,
- 0x0040, 0x25b6, 0xa096, 0x0019, 0x00c0, 0x2511, 0x810f, 0xa18c,
- 0x00ff, 0x0040, 0x2511, 0x710e, 0x700c, 0x8001, 0x0040, 0x25e7,
- 0x700e, 0x1078, 0x2cbf, 0x0040, 0x2511, 0x2009, 0x0020, 0x2061,
- 0x77bd, 0x6224, 0x6328, 0x642c, 0x6530, 0xa290, 0x0040, 0xa399,
- 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0x1078, 0x2d09, 0x701b,
- 0x25da, 0x007c, 0x6834, 0xa084, 0x00ff, 0xa096, 0x0002, 0x0040,
- 0x25e5, 0xa096, 0x000a, 0x00c0, 0x2511, 0x0078, 0x25bc, 0x7010,
- 0x2068, 0x6838, 0xc0fd, 0x683a, 0x1078, 0x36fe, 0x00c0, 0x25f5,
- 0x7007, 0x0003, 0x701b, 0x25f7, 0x007c, 0x1078, 0x3bdc, 0x127e,
- 0x2091, 0x8000, 0x20a9, 0x0005, 0x2099, 0x7774, 0x530a, 0x2100,
- 0xa210, 0xa399, 0x0000, 0xa4a1, 0x0000, 0xa5a9, 0x0000, 0xad80,
- 0x000d, 0x2009, 0x0020, 0x127f, 0x0078, 0x2d0d, 0x6198, 0x7824,
- 0x609a, 0x0078, 0x24e7, 0x2091, 0x8000, 0x7823, 0x4000, 0x7827,
- 0x4953, 0x782b, 0x5020, 0x782f, 0x2020, 0x2009, 0x017f, 0x2104,
- 0x7832, 0x3f00, 0x7836, 0x2061, 0x0100, 0x6200, 0x2061, 0x0200,
- 0x603c, 0x8007, 0xa205, 0x783a, 0x2009, 0x04fd, 0x2104, 0x783e,
- 0x781b, 0x0001, 0x2091, 0x5000, 0x2091, 0x4080, 0x2071, 0x0010,
- 0x20c1, 0x00f0, 0xa08a, 0x0003, 0x00c8, 0x0427, 0x0078, 0x0423,
- 0x81ff, 0x00c0, 0x2511, 0x7924, 0x810f, 0xa18c, 0x00ff, 0x1078,
- 0x3806, 0x00c0, 0x2515, 0x7e38, 0xa684, 0x3fff, 0xa082, 0x4000,
- 0x0048, 0x2654, 0x0078, 0x2515, 0x7c28, 0x7d2c, 0x1078, 0x39b7,
- 0xd28c, 0x00c0, 0x265f, 0x1078, 0x394b, 0x0078, 0x2661, 0x1078,
- 0x3985, 0x00c0, 0x268b, 0x2061, 0x7e00, 0x127e, 0x2091, 0x8000,
- 0x6000, 0xa086, 0x0000, 0x0040, 0x2679, 0x6010, 0xa06d, 0x0040,
- 0x2679, 0x683c, 0xa406, 0x00c0, 0x2679, 0x6840, 0xa506, 0x0040,
- 0x2684, 0x127f, 0xace0, 0x0008, 0x2001, 0x7715, 0x2004, 0xac02,
- 0x00c8, 0x2511, 0x0078, 0x2665, 0x1078, 0x67fd, 0x127f, 0x0040,
- 0x2511, 0x0078, 0x24e7, 0xa00e, 0x2001, 0x0005, 0x1078, 0x3bdc,
- 0x127e, 0x2091, 0x8000, 0x1078, 0x6c12, 0x1078, 0x3b4c, 0x127f,
- 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2cd7, 0x0040,
- 0x2515, 0x1078, 0x388f, 0x0040, 0x2511, 0x1078, 0x39c4, 0x0040,
- 0x2511, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2ce9,
- 0x0040, 0x2515, 0x1078, 0x3a2b, 0x0040, 0x2511, 0x2019, 0x0005,
- 0x1078, 0x39e5, 0x0040, 0x2511, 0x7828, 0xa08a, 0x1000, 0x00c8,
- 0x2515, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4650, 0x0078,
- 0x24e7, 0x127e, 0x2091, 0x8000, 0x81ff, 0x00c0, 0x26f6, 0x2029,
- 0x00ff, 0x644c, 0x2400, 0xa506, 0x0040, 0x26f0, 0x2508, 0x1078,
- 0x3806, 0x00c0, 0x26f0, 0x1078, 0x3a2b, 0x0040, 0x2511, 0x2019,
- 0x0004, 0x1078, 0x39e5, 0x0040, 0x26f6, 0x7824, 0xa08a, 0x1000,
- 0x00c8, 0x26f9, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4650,
- 0x8529, 0x00c8, 0x26d2, 0x127f, 0x0078, 0x24e7, 0x127f, 0x0078,
- 0x2511, 0x127f, 0x0078, 0x2515, 0x1078, 0x2cd7, 0x0040, 0x2515,
- 0x1078, 0x38fc, 0x1078, 0x39b7, 0x0078, 0x24e7, 0x81ff, 0x00c0,
- 0x2511, 0x1078, 0x2cd7, 0x0040, 0x2515, 0x1078, 0x38eb, 0x1078,
- 0x39b7, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2cd7,
- 0x0040, 0x2515, 0x1078, 0x3988, 0x0040, 0x2511, 0x1078, 0x3747,
- 0x1078, 0x3944, 0x1078, 0x39b7, 0x0078, 0x24e7, 0x1078, 0x2cd7,
- 0x0040, 0x2515, 0x1078, 0x388f, 0x0040, 0x2511, 0x62a0, 0x2019,
- 0x0005, 0x0c7e, 0x1078, 0x39f0, 0x0c7f, 0x1078, 0x4a38, 0x1078,
- 0x497b, 0x2c08, 0x1078, 0x7431, 0x1078, 0x39b7, 0x0078, 0x24e7,
- 0x1078, 0x2cd7, 0x0040, 0x2515, 0x1078, 0x39b7, 0x2208, 0x0078,
- 0x24e7, 0x157e, 0x0d7e, 0x0e7e, 0x2069, 0x77ff, 0x6810, 0x6914,
- 0xa10a, 0x00c8, 0x2755, 0x2009, 0x0000, 0x6816, 0x2011, 0x0000,
- 0x2019, 0x0000, 0x20a9, 0x007e, 0x2069, 0x7820, 0x2d04, 0xa075,
- 0x0040, 0x276a, 0x704c, 0x1078, 0x2774, 0xa210, 0x7080, 0x1078,
- 0x2774, 0xa318, 0x8d68, 0x00f0, 0x275e, 0x2300, 0xa218, 0x0e7f,
- 0x0d7f, 0x157f, 0x0078, 0x24e7, 0x0f7e, 0x017e, 0xa07d, 0x0040,
- 0x2783, 0x2001, 0x0000, 0x8000, 0x2f0c, 0x81ff, 0x0040, 0x2783,
- 0x2178, 0x0078, 0x277b, 0x017f, 0x0f7f, 0x007c, 0x2069, 0x77ff,
- 0x6910, 0x629c, 0x0078, 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x614c,
- 0xa190, 0x2303, 0x2214, 0xa294, 0x00ff, 0x6068, 0xa084, 0xff00,
- 0xa215, 0x6364, 0x0078, 0x24e7, 0x613c, 0x6240, 0x0078, 0x24e7,
- 0x1078, 0x2ce9, 0x0040, 0x2515, 0x0078, 0x24e7, 0x1078, 0x2ce9,
- 0x0040, 0x2515, 0x6244, 0x6338, 0x0078, 0x24e7, 0x613c, 0x6240,
- 0x7824, 0x603e, 0x7b28, 0x6342, 0x2069, 0x7751, 0x831f, 0xa305,
- 0x6816, 0x0078, 0x24e7, 0x1078, 0x2ce9, 0x0040, 0x2515, 0x0078,
- 0x24e7, 0x1078, 0x2ce9, 0x0040, 0x2515, 0x7828, 0xa00d, 0x0040,
- 0x2515, 0x782c, 0xa005, 0x0040, 0x2515, 0x6244, 0x6146, 0x6338,
- 0x603a, 0x0078, 0x24e7, 0x7d38, 0x7c3c, 0x0078, 0x2594, 0x7824,
- 0xa09c, 0x00ff, 0xa39a, 0x0003, 0x00c8, 0x2511, 0x624c, 0xa084,
- 0xff00, 0x8007, 0xa206, 0x00c0, 0x27ef, 0x2001, 0x7740, 0x2009,
- 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2d0d, 0x81ff,
- 0x00c0, 0x2511, 0x1078, 0x2ce9, 0x0040, 0x2515, 0x6004, 0xa084,
- 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2511, 0x0c7e, 0x1078, 0x2cbf,
- 0x0c7f, 0x0040, 0x2511, 0x6837, 0x0000, 0x6838, 0xc0fd, 0x683a,
- 0x1078, 0x6b0c, 0x0040, 0x2511, 0x7007, 0x0003, 0x701b, 0x2811,
- 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2511, 0xad80, 0x000e,
- 0x2009, 0x000c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2d0d,
- 0x1078, 0x2cbf, 0x0040, 0x2511, 0x2009, 0x001c, 0x7a2c, 0x7b28,
- 0x7c3c, 0x7d38, 0x1078, 0x2d09, 0x701b, 0x282f, 0x007c, 0xade8,
- 0x000d, 0x6800, 0xa005, 0x0040, 0x2515, 0x6804, 0xd0ac, 0x0040,
- 0x283c, 0xd0a4, 0x0040, 0x2515, 0xd094, 0x0040, 0x2847, 0x0c7e,
- 0x2061, 0x0100, 0x6104, 0xa18c, 0xffdf, 0x6106, 0x0c7f, 0xd08c,
- 0x0040, 0x2852, 0x0c7e, 0x2061, 0x0100, 0x6104, 0xa18d, 0x0010,
- 0x6106, 0x0c7f, 0x2009, 0x0100, 0x210c, 0xa18a, 0x0002, 0x0048,
- 0x2867, 0xd084, 0x0040, 0x2867, 0x6a28, 0xa28a, 0x007f, 0x00c8,
- 0x2515, 0xa288, 0x2303, 0x210c, 0xa18c, 0x00ff, 0x6152, 0xd0dc,
- 0x0040, 0x2870, 0x6828, 0xa08a, 0x007f, 0x00c8, 0x2515, 0x604e,
- 0x6808, 0xa08a, 0x0100, 0x0048, 0x2515, 0xa08a, 0x0841, 0x00c8,
- 0x2515, 0xa084, 0x0007, 0x00c0, 0x2515, 0x680c, 0xa005, 0x0040,
- 0x2515, 0x6810, 0xa005, 0x0040, 0x2515, 0x6848, 0x6940, 0xa10a,
- 0x00c8, 0x2515, 0x8001, 0x0040, 0x2515, 0x684c, 0x6944, 0xa10a,
- 0x00c8, 0x2515, 0x8001, 0x0040, 0x2515, 0x20a9, 0x001c, 0x2d98,
- 0x2069, 0x7751, 0x2da0, 0x53a3, 0x6814, 0xa08c, 0x00ff, 0x613e,
- 0x8007, 0xa084, 0x00ff, 0x6042, 0x1078, 0x3d43, 0x1078, 0x3b19,
- 0x6000, 0xa086, 0x0000, 0x00c0, 0x28eb, 0x6808, 0x602a, 0x1078,
- 0x1dbe, 0x6818, 0x691c, 0x6a20, 0x6b24, 0x8007, 0x810f, 0x8217,
- 0x831f, 0x6016, 0x611a, 0x621e, 0x6322, 0x6c04, 0xd4f4, 0x0040,
- 0x28cb, 0x6830, 0x6934, 0x6a38, 0x6b3c, 0x8007, 0x810f, 0x8217,
- 0x831f, 0x0078, 0x28cd, 0xa084, 0xf0ff, 0x6006, 0x610a, 0x620e,
- 0x6312, 0x1078, 0x46dc, 0x0c7e, 0x2061, 0x0100, 0x602f, 0x0040,
- 0x602f, 0x0000, 0x0c7f, 0x60b4, 0xa005, 0x0040, 0x28e7, 0x6003,
- 0x0001, 0x2091, 0x301d, 0x1078, 0x3553, 0x0078, 0x28eb, 0x6003,
- 0x0004, 0x2091, 0x301d, 0x0078, 0x24e7, 0x6000, 0xa086, 0x0000,
- 0x0040, 0x2511, 0x2069, 0x7751, 0x7830, 0x6842, 0x7834, 0x6846,
- 0x2d00, 0x2009, 0x001c, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078,
- 0x2d0d, 0x81ff, 0x00c0, 0x2511, 0x1078, 0x3553, 0x0078, 0x24e7,
- 0x81ff, 0x00c0, 0x2511, 0x617c, 0x81ff, 0x0040, 0x2922, 0x703f,
- 0x0000, 0x2001, 0x7dc0, 0x2009, 0x0040, 0x7a2c, 0x7b28, 0x7c3c,
- 0x7d38, 0x127e, 0x2091, 0x8000, 0x1078, 0x2d0d, 0x701b, 0x24e4,
- 0x127f, 0x007c, 0x703f, 0x0001, 0x0d7e, 0x2069, 0x7dc0, 0x20a9,
- 0x0040, 0x20a1, 0x7dc0, 0x2019, 0xffff, 0x43a4, 0x654c, 0xa588,
- 0x2303, 0x210c, 0xa18c, 0x00ff, 0x216a, 0xa00e, 0x2011, 0x0002,
- 0x2100, 0xa506, 0x0040, 0x2954, 0x1078, 0x3806, 0x00c0, 0x2954,
- 0x6014, 0x821c, 0x0048, 0x294c, 0xa398, 0x7dc0, 0xa085, 0xff00,
- 0x8007, 0x201a, 0x0078, 0x2953, 0xa398, 0x7dc0, 0x2324, 0xa4a4,
- 0xff00, 0xa405, 0x201a, 0x8210, 0x8108, 0xa182, 0x0080, 0x00c8,
- 0x295b, 0x0078, 0x2938, 0x8201, 0x8007, 0x2d0c, 0xa105, 0x206a,
- 0x0d7f, 0x20a9, 0x0040, 0x20a1, 0x7dc0, 0x2099, 0x7dc0, 0x1078,
- 0x359c, 0x0078, 0x2911, 0x1078, 0x2ce9, 0x0040, 0x2515, 0x0c7e,
- 0x1078, 0x2cbf, 0x0c7f, 0x0040, 0x2511, 0x2001, 0x7752, 0x2004,
- 0xd0b4, 0x0040, 0x2998, 0x6000, 0xd08c, 0x00c0, 0x2998, 0x6004,
- 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2998, 0x6837, 0x0000,
- 0x6838, 0xc0fd, 0x683a, 0x1078, 0x6b44, 0x0040, 0x2511, 0x7007,
- 0x0003, 0x701b, 0x2994, 0x007c, 0x1078, 0x2ce9, 0x0040, 0x2515,
- 0x20a9, 0x002b, 0x2c98, 0xade8, 0x0002, 0x2da0, 0x53a3, 0x20a9,
- 0x0002, 0xac80, 0x0004, 0x2098, 0xad80, 0x0004, 0x20a0, 0x1078,
- 0x359c, 0x20a9, 0x0004, 0xac80, 0x0006, 0x2098, 0xad80, 0x0006,
- 0x20a0, 0x1078, 0x359c, 0x20a9, 0x0004, 0xac80, 0x000a, 0x2098,
- 0xad80, 0x000a, 0x20a0, 0x1078, 0x359c, 0x2d00, 0x2009, 0x002b,
- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x0078, 0x2d0d, 0x81ff, 0x00c0,
- 0x2511, 0x1078, 0x2cd7, 0x0040, 0x2515, 0x1078, 0x39cf, 0x0078,
- 0x24e7, 0x81ff, 0x00c0, 0x2511, 0x7828, 0xa08a, 0x1000, 0x00c8,
- 0x2515, 0x1078, 0x2ce9, 0x0040, 0x2515, 0x1078, 0x3a2b, 0x0040,
- 0x2511, 0x2019, 0x0004, 0x1078, 0x39e5, 0x7924, 0x810f, 0x7a28,
- 0x1078, 0x29ec, 0x0078, 0x24e7, 0xa186, 0x00ff, 0x0040, 0x29f4,
- 0x1078, 0x2a04, 0x0078, 0x2a03, 0x2029, 0x007e, 0x2061, 0x7700,
- 0x644c, 0x2400, 0xa506, 0x0040, 0x2a00, 0x2508, 0x1078, 0x2a04,
- 0x8529, 0x00c8, 0x29f9, 0x007c, 0x1078, 0x3806, 0x00c0, 0x2a0f,
- 0x2200, 0x8003, 0x800b, 0x810b, 0xa108, 0x1078, 0x4650, 0x007c,
- 0x81ff, 0x00c0, 0x2511, 0x1078, 0x2cd7, 0x0040, 0x2515, 0x1078,
- 0x388f, 0x0040, 0x2511, 0x1078, 0x39da, 0x0078, 0x24e7, 0x81ff,
- 0x00c0, 0x2511, 0x1078, 0x2cd7, 0x0040, 0x2515, 0x1078, 0x388f,
- 0x0040, 0x2511, 0x1078, 0x39c4, 0x0078, 0x24e7, 0x6100, 0x0078,
- 0x24e7, 0x1078, 0x2ce9, 0x0040, 0x2515, 0x6004, 0xa086, 0x0707,
- 0x0040, 0x2515, 0x2001, 0x7700, 0x2004, 0xa086, 0x0003, 0x00c0,
- 0x2511, 0x0d7e, 0xace8, 0x000a, 0x7924, 0xd184, 0x0040, 0x2a4a,
- 0xace8, 0x0006, 0x680c, 0x8007, 0x783e, 0x6808, 0x8007, 0x783a,
- 0x6b04, 0x831f, 0x6a00, 0x8217, 0x0d7f, 0x6100, 0xa18c, 0x0200,
- 0x0078, 0x24e7, 0x7824, 0xa084, 0x00ff, 0xa086, 0x00ff, 0x0040,
- 0x2a64, 0x81ff, 0x00c0, 0x2511, 0x7828, 0xa08a, 0x1000, 0x00c8,
- 0x2515, 0x7924, 0xa18c, 0xff00, 0x810f, 0xa186, 0x00ff, 0x0040,
- 0x2a78, 0xa182, 0x007f, 0x00c8, 0x2515, 0x2100, 0x1078, 0x206e,
- 0x027e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x2061, 0x7949, 0x601b,
- 0x0000, 0x601f, 0x0000, 0x2061, 0x0100, 0x6030, 0xa084, 0x00ff,
- 0x810f, 0xa105, 0x604a, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009,
- 0x001e, 0x2011, 0x3578, 0x1078, 0x46d3, 0x7924, 0xa18c, 0xff00,
- 0x810f, 0x7a28, 0x1078, 0x29ec, 0x127f, 0x0c7f, 0x027f, 0x0078,
- 0x24e7, 0x7924, 0xa18c, 0xff00, 0x810f, 0x0c7e, 0x1078, 0x37cb,
- 0x2c08, 0x0c7f, 0x00c0, 0x2515, 0x0078, 0x24e7, 0x81ff, 0x00c0,
- 0x2511, 0x60bc, 0xd09c, 0x0040, 0x2511, 0x1078, 0x2cbf, 0x0040,
- 0x2511, 0x6823, 0x0000, 0x7924, 0x7a2c, 0x7b28, 0x7c3c, 0x7d38,
- 0x1078, 0x2d09, 0x701b, 0x2ac5, 0x007c, 0x2009, 0x0080, 0x1078,
- 0x3806, 0x00c0, 0x2ad2, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006,
- 0x0040, 0x2ad6, 0x2021, 0x400a, 0x0078, 0x24e9, 0x0d7e, 0xade8,
- 0x000d, 0x6900, 0x6a08, 0x6b0c, 0x6c10, 0x6d14, 0x6e18, 0x6820,
- 0xa0be, 0x0100, 0x0040, 0x2b48, 0xa0be, 0x0112, 0x0040, 0x2b48,
- 0xa0be, 0x0113, 0x0040, 0x2b48, 0xa0be, 0x0114, 0x0040, 0x2b48,
- 0xa0be, 0x0117, 0x0040, 0x2b48, 0xa0be, 0x011a, 0x0040, 0x2b48,
- 0xa0be, 0x0121, 0x0040, 0x2b3e, 0xa0be, 0x0131, 0x0040, 0x2b3e,
- 0xa0be, 0x0171, 0x0040, 0x2b48, 0xa0be, 0x0173, 0x0040, 0x2b48,
- 0xa0be, 0x01a1, 0x00c0, 0x2b11, 0x6830, 0x8007, 0x6832, 0x0078,
- 0x2b4e, 0xa0be, 0x0212, 0x0040, 0x2b44, 0xa0be, 0x0213, 0x0040,
- 0x2b44, 0xa0be, 0x0214, 0x0040, 0x2b36, 0xa0be, 0x0217, 0x0040,
- 0x2b30, 0xa0be, 0x021a, 0x00c0, 0x2b2a, 0x6838, 0x8007, 0x683a,
- 0x0078, 0x2b48, 0xa0be, 0x0300, 0x0040, 0x2b48, 0x0078, 0x2511,
- 0xad80, 0x0010, 0x20a9, 0x0007, 0x1078, 0x2b7c, 0xad80, 0x000e,
- 0x20a9, 0x0001, 0x1078, 0x2b7c, 0x0078, 0x2b48, 0xad80, 0x000c,
- 0x1078, 0x2b8a, 0x0078, 0x2b4e, 0xad80, 0x000e, 0x1078, 0x2b8a,
- 0xad80, 0x000c, 0x20a9, 0x0001, 0x1078, 0x2b7c, 0x0c7e, 0x1078,
- 0x2cbf, 0x0040, 0x2b71, 0x6837, 0x0119, 0x684f, 0x0020, 0x685b,
- 0x0001, 0x810b, 0x697e, 0x6883, 0x0000, 0x6a86, 0x6b8a, 0x6c8e,
- 0x6d92, 0x6996, 0x689b, 0x0000, 0x0c7f, 0x0d7f, 0x6837, 0x0000,
- 0x1078, 0x6b28, 0x0040, 0x2511, 0x7007, 0x0003, 0x701b, 0x2b75,
- 0x007c, 0x0c7f, 0x0d7f, 0x0078, 0x2511, 0x6820, 0xa086, 0x8001,
- 0x0040, 0x2511, 0x0078, 0x24e7, 0x017e, 0x2008, 0x2044, 0x8000,
- 0x204c, 0x8000, 0x290a, 0x8108, 0x280a, 0x8108, 0x00f0, 0x2b7e,
- 0x017f, 0x007c, 0x017e, 0x0a7e, 0x0b7e, 0x2008, 0x2044, 0x8000,
- 0x204c, 0x8000, 0x2054, 0x8000, 0x205c, 0x2b0a, 0x8108, 0x2a0a,
- 0x8108, 0x290a, 0x8108, 0x280a, 0x0b7f, 0x0a7f, 0x017f, 0x007c,
- 0x81ff, 0x00c0, 0x2511, 0x7924, 0x2140, 0xa18c, 0xff00, 0x810f,
- 0xa182, 0x0080, 0x0048, 0x2515, 0xa182, 0x00ff, 0x00c8, 0x2515,
- 0x7a2c, 0x7b28, 0x6064, 0xa306, 0x00c0, 0x2bc1, 0x6068, 0xa246,
- 0xa8c4, 0xff00, 0x0040, 0x2515, 0xa206, 0x00c0, 0x2bc1, 0x0078,
- 0x2515, 0x0c7e, 0x1078, 0x2c2a, 0x2c68, 0x0c7f, 0x0040, 0x2be8,
- 0xa0c6, 0x4000, 0x00c0, 0x2bce, 0x0078, 0x2be5, 0xa0c6, 0x4007,
- 0x00c0, 0x2bd5, 0x2408, 0x0078, 0x2be5, 0xa0c6, 0x4008, 0x00c0,
- 0x2bdd, 0x2708, 0x2610, 0x0078, 0x2be5, 0xa0c6, 0x4009, 0x00c0,
- 0x2be3, 0x0078, 0x2be5, 0x2001, 0x4006, 0x2020, 0x0078, 0x24e9,
- 0x017e, 0x0b7e, 0x0c7e, 0x0e7e, 0x2c70, 0x1078, 0x5c6e, 0x0040,
- 0x2c18, 0x2d00, 0x601a, 0x2e58, 0x0e7f, 0x0e7e, 0x0c7e, 0x1078,
- 0x2cbf, 0x0c7f, 0x2b70, 0x0040, 0x2511, 0x6837, 0x0000, 0x2d00,
- 0x6012, 0x601f, 0x0001, 0x2001, 0x0000, 0x1078, 0x379a, 0x2001,
- 0x0002, 0x1078, 0x37ae, 0x127e, 0x2091, 0x8000, 0x7088, 0x8000,
- 0x708a, 0x127f, 0x2009, 0x0002, 0x1078, 0x5cfb, 0xa085, 0x0001,
- 0x0e7f, 0x0c7f, 0x0b7f, 0x017f, 0x0040, 0x2511, 0x7007, 0x0003,
- 0x701b, 0x2c23, 0x007c, 0x6830, 0xa086, 0x0100, 0x00c0, 0x24e7,
- 0x0078, 0x2511, 0x0e7e, 0x0d7e, 0x2029, 0x0000, 0x2021, 0x0080,
- 0x20a9, 0x007f, 0x2071, 0x78a0, 0x2e04, 0xa005, 0x00c0, 0x2c3e,
- 0x2100, 0xa406, 0x0040, 0x2c7b, 0x0078, 0x2c6f, 0x2068, 0x6f10,
- 0x2700, 0xa306, 0x00c0, 0x2c60, 0x6e14, 0x2600, 0xa206, 0x00c0,
- 0x2c60, 0x2400, 0xa106, 0x00c0, 0x2c5c, 0x2d60, 0xd884, 0x0040,
- 0x2c81, 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2c81,
- 0x2001, 0x4000, 0x0078, 0x2c82, 0x2001, 0x4007, 0x0078, 0x2c82,
- 0x2400, 0xa106, 0x00c0, 0x2c6f, 0x6e14, 0x87ff, 0x00c0, 0x2c6b,
- 0x86ff, 0x0040, 0x2c7b, 0x2001, 0x4008, 0x0078, 0x2c82, 0x8420,
- 0x8e70, 0x00f0, 0x2c34, 0x2001, 0x4009, 0x0078, 0x2c82, 0x2001,
- 0x0001, 0x0078, 0x2c82, 0x1078, 0x37cb, 0x00c0, 0x2c77, 0x6312,
- 0x6216, 0xa006, 0xa005, 0x0d7f, 0x0e7f, 0x007c, 0x81ff, 0x00c0,
- 0x2511, 0x1078, 0x2cbf, 0x0040, 0x2511, 0x6837, 0x0000, 0x7824,
- 0xa005, 0x0040, 0x2515, 0xa096, 0x00ff, 0x0040, 0x2c9b, 0xa092,
- 0x0004, 0x00c8, 0x2515, 0x2010, 0x2d18, 0x1078, 0x2251, 0x0040,
- 0x2511, 0x7007, 0x0003, 0x701b, 0x2ca6, 0x007c, 0x6830, 0xa086,
- 0x0100, 0x0040, 0x2511, 0x0078, 0x24e7, 0x7924, 0xa18c, 0xff00,
- 0x810f, 0xa182, 0x0080, 0x0048, 0x2515, 0xa182, 0x00ff, 0x00c8,
- 0x2515, 0x1078, 0x6a44, 0x1078, 0x37ee, 0x0078, 0x24e7, 0x1078,
- 0x1314, 0x0040, 0x2cd6, 0xa006, 0x6802, 0x7010, 0xa005, 0x00c0,
- 0x2cce, 0x2d00, 0x7012, 0x7016, 0x0078, 0x2cd4, 0x7014, 0x6802,
- 0x2060, 0x2d00, 0x6006, 0x7016, 0xad80, 0x000d, 0x007c, 0x7924,
- 0x810f, 0xa18c, 0x00ff, 0x1078, 0x3806, 0x00c0, 0x2ce6, 0x7e28,
- 0xa684, 0x3fff, 0xa082, 0x4000, 0x0048, 0x2ce7, 0xa066, 0x8cff,
- 0x007c, 0x7e24, 0x860f, 0xa18c, 0x00ff, 0x1078, 0x3806, 0x00c0,
- 0x2cf7, 0xa6b4, 0x00ff, 0xa682, 0x4000, 0x0048, 0x2cf8, 0xa066,
- 0x8cff, 0x007c, 0x017e, 0x7110, 0x81ff, 0x0040, 0x2d05, 0x2168,
- 0x6904, 0x1078, 0x1348, 0x0078, 0x2cfc, 0x7112, 0x7116, 0x017f,
- 0x007c, 0x2031, 0x0001, 0x0078, 0x2d0f, 0x2031, 0x0000, 0x2061,
- 0x77bd, 0x6606, 0x6112, 0x600e, 0x6226, 0x632a, 0x642e, 0x6532,
- 0x2c10, 0x1078, 0x137f, 0x7007, 0x0002, 0x701b, 0x24e7, 0x007c,
- 0x0f7e, 0x127e, 0x2091, 0x8000, 0x2079, 0x0000, 0x2001, 0x777b,
- 0x2004, 0xa005, 0x00c0, 0x2d3b, 0x0068, 0x2d3b, 0x7818, 0xd084,
- 0x00c0, 0x2d3b, 0x781b, 0x0001, 0x7a22, 0x7b26, 0x7c2a, 0x2091,
- 0x4080, 0x0078, 0x2d60, 0x017e, 0x0c7e, 0x0e7e, 0x2071, 0x776d,
- 0x7138, 0xa182, 0x0008, 0x0048, 0x2d49, 0x7030, 0x2060, 0x0078,
- 0x2d5a, 0x7030, 0xa0e0, 0x0008, 0xac82, 0x77bd, 0x0048, 0x2d52,
- 0x2061, 0x777d, 0x2c00, 0x7032, 0x81ff, 0x00c0, 0x2d58, 0x7036,
- 0x8108, 0x713a, 0x2262, 0x6306, 0x640a, 0x0e7f, 0x0c7f, 0x017f,
- 0x127f, 0x0f7f, 0x007c, 0x0e7e, 0x2071, 0x776d, 0x7038, 0xa005,
- 0x0040, 0x2d9c, 0x127e, 0x2091, 0x8000, 0x0068, 0x2d9b, 0x0f7e,
- 0x2079, 0x0000, 0x7818, 0xd084, 0x00c0, 0x2d9a, 0x0c7e, 0x781b,
- 0x0001, 0x7034, 0x2060, 0x2c04, 0x7822, 0x6004, 0x7826, 0x6008,
- 0x782a, 0x2091, 0x4080, 0x7038, 0x8001, 0x703a, 0xa005, 0x00c0,
- 0x2d90, 0x7033, 0x777d, 0x7037, 0x777d, 0x0c7f, 0x0078, 0x2d9a,
- 0xac80, 0x0008, 0xa0fa, 0x77bd, 0x0048, 0x2d98, 0x2001, 0x777d,
- 0x7036, 0x0c7f, 0x0f7f, 0x127f, 0x0e7f, 0x007c, 0x027e, 0x2001,
- 0x7752, 0x2004, 0xd0c4, 0x0040, 0x2da9, 0x2011, 0x8014, 0x1078,
- 0x2d20, 0x027f, 0x007c, 0x81ff, 0x00c0, 0x2511, 0x127e, 0x2091,
- 0x8000, 0x6030, 0xc08d, 0x6032, 0x1078, 0x3553, 0x127f, 0x0078,
- 0x24e7, 0x7824, 0x2008, 0xa18c, 0xfffd, 0x00c0, 0x2dc4, 0x61c8,
- 0xa10d, 0x61ca, 0x0078, 0x24e7, 0x0078, 0x2515, 0x81ff, 0x00c0,
- 0x2511, 0x6000, 0xa086, 0x0003, 0x00c0, 0x2511, 0x2001, 0x7752,
- 0x2004, 0xd0a4, 0x00c0, 0x2511, 0x1078, 0x2ce9, 0x0040, 0x2515,
- 0x6004, 0xa084, 0x00ff, 0xa086, 0x0006, 0x00c0, 0x2de3, 0x7828,
- 0xa005, 0x0040, 0x24e7, 0x0c7e, 0x1078, 0x2cbf, 0x0c7f, 0x0040,
- 0x2511, 0x6837, 0x0000, 0x6833, 0x0000, 0x6838, 0xc0fd, 0x683a,
- 0x1078, 0x6bb1, 0x0040, 0x2511, 0x7007, 0x0003, 0x701b, 0x2df9,
- 0x007c, 0x6830, 0xa086, 0x0100, 0x0040, 0x2511, 0x0078, 0x24e7,
- 0x2001, 0x7700, 0x2004, 0xa086, 0x0003, 0x00c0, 0x2511, 0x7f24,
- 0x7a2c, 0x7b28, 0x7c3c, 0x7d38, 0x1078, 0x2cbf, 0x0040, 0x2511,
- 0x2009, 0x0000, 0x2031, 0x0000, 0x7023, 0x0000, 0x702f, 0x0000,
- 0xad80, 0x0005, 0x7026, 0x20a0, 0x1078, 0x3806, 0x00c0, 0x2e46,
- 0x6004, 0xa0c6, 0x0707, 0x0040, 0x2e46, 0xa084, 0x00ff, 0xa0c6,
- 0x0006, 0x00c0, 0x2e46, 0x87ff, 0x0040, 0x2e39, 0xac80, 0x0006,
- 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3, 0x1078, 0x2b8a, 0x0078,
- 0x2e42, 0xac80, 0x000a, 0x2098, 0x3400, 0x20a9, 0x0004, 0x53a3,
- 0x1078, 0x2b8a, 0x21a2, 0x94a0, 0xa6b0, 0x0005, 0x8108, 0xa186,
- 0x007e, 0x0040, 0x2e51, 0xa686, 0x0028, 0x0040, 0x2e5a, 0x0078,
- 0x2e1c, 0x86ff, 0x00c0, 0x2e58, 0x7120, 0x810b, 0x0078, 0x24e7,
- 0x702f, 0x0001, 0x711e, 0x7020, 0xa600, 0x7022, 0x772a, 0x2061,
- 0x77bd, 0x6007, 0x0000, 0x6612, 0x7024, 0x600e, 0x6226, 0x632a,
- 0x642e, 0x6532, 0x2c10, 0x1078, 0x137f, 0x7007, 0x0002, 0x701b,
- 0x2e72, 0x007c, 0x702c, 0xa005, 0x00c0, 0x2e84, 0x711c, 0x7024,
- 0x20a0, 0x7728, 0x2031, 0x0000, 0x2061, 0x77bd, 0x6224, 0x6328,
- 0x642c, 0x6530, 0x0078, 0x2e1c, 0x7120, 0x810b, 0x0078, 0x24e7,
- 0x127e, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071, 0x7700, 0x6044,
- 0xd0a4, 0x00c0, 0x2eb1, 0xd084, 0x0040, 0x2e9a, 0x1078, 0x2fd8,
- 0x0078, 0x2ead, 0xd08c, 0x0040, 0x2ea1, 0x1078, 0x2eef, 0x0078,
- 0x2ead, 0xd094, 0x0040, 0x2ea8, 0x1078, 0x2ed2, 0x0078, 0x2ead,
- 0xd09c, 0x0040, 0x2ead, 0x1078, 0x2ebb, 0x0e7f, 0x0c7f, 0x127f,
- 0x007c, 0x017e, 0x6128, 0xd19c, 0x00c0, 0x2eb8, 0xc19d, 0x612a,
- 0x017f, 0x0078, 0x2ead, 0x6043, 0x0040, 0x6043, 0x0000, 0x706f,
- 0x0000, 0x7087, 0x0001, 0x70a7, 0x0000, 0x2009, 0x7dc0, 0x200b,
- 0x0000, 0x7073, 0x000f, 0x2009, 0x000f, 0x2011, 0x3513, 0x1078,
- 0x46d3, 0x007c, 0x7070, 0xa005, 0x00c0, 0x2eee, 0x2011, 0x3513,
- 0x1078, 0x4643, 0x6043, 0x0020, 0x6043, 0x0000, 0x6044, 0xd08c,
- 0x00c0, 0x2eea, 0x7083, 0x0000, 0x6043, 0x0090, 0x6043, 0x0010,
- 0x0078, 0x2eee, 0x7077, 0x0000, 0x0078, 0x2eee, 0x007c, 0x7074,
- 0xa08a, 0x0003, 0x00c8, 0x2ef8, 0x1079, 0x2efb, 0x0078, 0x2efa,
- 0x1078, 0x12d5, 0x007c, 0x2efe, 0x2f4d, 0x2fd7, 0x0f7e, 0x7077,
- 0x0001, 0x20e1, 0xa000, 0x20e1, 0x8700, 0x1078, 0x1dbe, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x2079, 0x7c00, 0x207b, 0x2200, 0x7807,
- 0x00ef, 0x780b, 0x0000, 0x780f, 0x00ef, 0x7813, 0x0138, 0x7817,
- 0x0000, 0x781b, 0x0000, 0x781f, 0x0000, 0x7823, 0xffff, 0x7827,
- 0xffff, 0x782b, 0x0000, 0x782f, 0x0000, 0x2079, 0x7c0c, 0x207b,
- 0x1101, 0x7807, 0x0000, 0x2099, 0x7705, 0x20a1, 0x7c0e, 0x20a9,
- 0x0004, 0x53a3, 0x2079, 0x7c12, 0x207b, 0x0000, 0x7807, 0x0000,
- 0x2099, 0x7c00, 0x20a1, 0x020b, 0x20a9, 0x0014, 0x53a6, 0x60c3,
- 0x000c, 0x600f, 0x0000, 0x1078, 0x353a, 0x0f7f, 0x707b, 0x0000,
- 0x6043, 0x0008, 0x6043, 0x0000, 0x007c, 0x0d7e, 0x7078, 0x707b,
- 0x0000, 0xa025, 0x0040, 0x2fc1, 0x6020, 0xd0b4, 0x00c0, 0x2fbf,
- 0x7184, 0x81ff, 0x0040, 0x2fa8, 0xa486, 0x000c, 0x00c0, 0x2fb3,
- 0xa480, 0x0018, 0x8004, 0x20a8, 0x2011, 0x7c80, 0x2019, 0x7c00,
- 0x220c, 0x2304, 0xa106, 0x00c0, 0x2f7f, 0x8210, 0x8318, 0x00f0,
- 0x2f68, 0x6043, 0x0004, 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043,
- 0x0006, 0x7077, 0x0002, 0x7083, 0x0002, 0x0078, 0x2fbf, 0x2069,
- 0x7c80, 0x6930, 0xa18e, 0x1101, 0x00c0, 0x2fb3, 0x6834, 0xa005,
- 0x00c0, 0x2fb3, 0x6900, 0xa18c, 0x00ff, 0x00c0, 0x2f93, 0x6804,
- 0xa005, 0x0040, 0x2fa8, 0x2011, 0x7c8e, 0x2019, 0x7705, 0x20a9,
- 0x0004, 0x220c, 0x2304, 0xa102, 0x0048, 0x2fa6, 0x00c0, 0x2fb3,
- 0x8210, 0x8318, 0x00f0, 0x2f99, 0x0078, 0x2fb3, 0x7087, 0x0000,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b,
- 0x20a9, 0x0014, 0x53a6, 0x6043, 0x0008, 0x6043, 0x0000, 0x6020,
- 0xd0b4, 0x00c0, 0x2fbf, 0x60c3, 0x000c, 0x1078, 0x353a, 0x0d7f,
- 0x007c, 0x6020, 0xd0b4, 0x00c0, 0x2fbf, 0x60c3, 0x000c, 0x2011,
- 0x7940, 0x2013, 0x0000, 0x707b, 0x0000, 0x20e1, 0x9080, 0x60a3,
- 0x0056, 0x60a7, 0x9575, 0x1078, 0x564d, 0x0078, 0x2fbf, 0x007c,
- 0x7080, 0xa08a, 0x001d, 0x00c8, 0x2fe1, 0x1079, 0x2fe4, 0x0078,
- 0x2fe3, 0x1078, 0x12d5, 0x007c, 0x3008, 0x3017, 0x3048, 0x305d,
- 0x308d, 0x30b5, 0x30e5, 0x310f, 0x313f, 0x3165, 0x31b0, 0x31d2,
- 0x31f6, 0x320c, 0x3232, 0x3245, 0x324e, 0x3267, 0x3295, 0x32bd,
- 0x32eb, 0x3315, 0x335a, 0x338f, 0x33b1, 0x33ef, 0x3413, 0x342c,
- 0x3439, 0x7003, 0x0007, 0x6004, 0xa084, 0xfff9, 0x6006, 0x007c,
- 0x608b, 0xbc94, 0x608f, 0xf0f0, 0x6043, 0x0002, 0x7083, 0x0001,
- 0x2009, 0x07d0, 0x2011, 0x351a, 0x1078, 0x4636, 0x007c, 0x0f7e,
- 0x7078, 0xa086, 0x0014, 0x00c0, 0x3046, 0x6043, 0x0000, 0x6020,
- 0xd0b4, 0x00c0, 0x3046, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1102,
- 0x00c0, 0x3044, 0x7834, 0xa005, 0x00c0, 0x3044, 0x7a38, 0xd2fc,
- 0x0040, 0x303a, 0x70a4, 0xa005, 0x00c0, 0x303a, 0x1078, 0x35d3,
- 0x70a7, 0x0001, 0x2011, 0x351a, 0x1078, 0x4643, 0x7083, 0x0010,
- 0x1078, 0x324e, 0x0078, 0x3046, 0x707b, 0x0000, 0x0f7f, 0x007c,
- 0x7083, 0x0003, 0x6043, 0x0004, 0x1078, 0x35a4, 0x20a3, 0x1102,
- 0x20a3, 0x0000, 0x20a9, 0x000a, 0x20a3, 0x0000, 0x00f0, 0x3054,
- 0x60c3, 0x0014, 0x1078, 0x353a, 0x007c, 0x0f7e, 0x7078, 0xa005,
- 0x0040, 0x308b, 0x2011, 0x351a, 0x1078, 0x4643, 0xa086, 0x0014,
- 0x00c0, 0x3087, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1102, 0x00c0,
- 0x3087, 0x7834, 0xa005, 0x00c0, 0x3087, 0x7a38, 0xd2fc, 0x0040,
- 0x3081, 0x70a4, 0xa005, 0x00c0, 0x3081, 0x1078, 0x35d3, 0x70a7,
- 0x0001, 0x7083, 0x0004, 0x1078, 0x308d, 0x0078, 0x308b, 0x7083,
- 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0005, 0x1078,
- 0x35a4, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e,
- 0x706c, 0xa005, 0x00c0, 0x30a7, 0x714c, 0xa186, 0xffff, 0x0040,
- 0x30a7, 0x1078, 0x34de, 0x0040, 0x30a7, 0x1078, 0x35d3, 0x20a9,
- 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0014, 0x1078, 0x353a, 0x007c, 0x0f7e, 0x7078, 0xa005,
- 0x0040, 0x30e3, 0x2011, 0x351a, 0x1078, 0x4643, 0xa086, 0x0014,
- 0x00c0, 0x30df, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1103, 0x00c0,
- 0x30df, 0x7834, 0xa005, 0x00c0, 0x30df, 0x7a38, 0xd2fc, 0x0040,
- 0x30d9, 0x70a4, 0xa005, 0x00c0, 0x30d9, 0x1078, 0x35d3, 0x70a7,
- 0x0001, 0x7083, 0x0006, 0x1078, 0x30e5, 0x0078, 0x30e3, 0x7083,
- 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0007, 0x1078,
- 0x35a4, 0x20a3, 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e,
- 0x706c, 0xa005, 0x00c0, 0x3101, 0x7150, 0xa186, 0xffff, 0x0040,
- 0x3101, 0xa180, 0x2303, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078,
- 0x34de, 0x20a9, 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x353a, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x313d, 0x2011, 0x351a, 0x1078, 0x4643,
- 0xa086, 0x0014, 0x00c0, 0x3139, 0x2079, 0x7c80, 0x7a30, 0xa296,
- 0x1104, 0x00c0, 0x3139, 0x7834, 0xa005, 0x00c0, 0x3139, 0x7a38,
- 0xd2fc, 0x0040, 0x3133, 0x70a4, 0xa005, 0x00c0, 0x3133, 0x1078,
- 0x35d3, 0x70a7, 0x0001, 0x7083, 0x0008, 0x1078, 0x313f, 0x0078,
- 0x313d, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083,
- 0x0009, 0x1078, 0x35a4, 0x20a3, 0x1105, 0x20a3, 0x0100, 0x3430,
- 0x706c, 0xa005, 0x00c0, 0x3152, 0x1078, 0x3448, 0x0040, 0x3162,
- 0x0078, 0x315c, 0x20a9, 0x0008, 0x2099, 0x7c8e, 0x26a0, 0x53a6,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x353a,
- 0x0078, 0x3164, 0x1078, 0x3001, 0x007c, 0x0f7e, 0x7078, 0xa005,
- 0x0040, 0x31ae, 0x2011, 0x351a, 0x1078, 0x4643, 0xa086, 0x0014,
- 0x00c0, 0x31aa, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1105, 0x00c0,
- 0x31aa, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0, 0x3193, 0x7a38,
- 0xd2fc, 0x0040, 0x318b, 0x70a4, 0xa005, 0x00c0, 0x318b, 0x1078,
- 0x35d3, 0x70a7, 0x0001, 0x707f, 0x0001, 0x7083, 0x000a, 0x1078,
- 0x31b0, 0x0078, 0x31ae, 0xa005, 0x00c0, 0x31aa, 0x7a38, 0xd2fc,
- 0x0040, 0x31a2, 0x70a4, 0xa005, 0x00c0, 0x31a2, 0x1078, 0x35d3,
- 0x70a7, 0x0001, 0x707f, 0x0000, 0x7083, 0x000e, 0x1078, 0x3232,
- 0x0078, 0x31ae, 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c,
- 0x7083, 0x000b, 0x2011, 0x7c0e, 0x22a0, 0x20a9, 0x0040, 0x2019,
- 0xffff, 0x43a4, 0x20a9, 0x0002, 0x2009, 0x0000, 0x41a4, 0x1078,
- 0x35a4, 0x20a3, 0x1106, 0x20a3, 0x0000, 0x6030, 0xa085, 0x0100,
- 0x2012, 0x2298, 0x20a9, 0x0042, 0x53a6, 0x60c3, 0x0084, 0x1078,
- 0x353a, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040, 0x31f4, 0x2011,
- 0x351a, 0x1078, 0x4643, 0xa086, 0x0084, 0x00c0, 0x31f0, 0x2079,
- 0x7c80, 0x7a30, 0xa296, 0x1106, 0x00c0, 0x31f0, 0x7834, 0xa005,
- 0x00c0, 0x31f0, 0x7083, 0x000c, 0x1078, 0x31f6, 0x0078, 0x31f4,
- 0x7083, 0x0002, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x000d,
- 0x1078, 0x35a4, 0x20a3, 0x1107, 0x20a3, 0x0000, 0x2099, 0x7c8e,
- 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
- 0x0084, 0x1078, 0x353a, 0x007c, 0x0f7e, 0x7078, 0xa005, 0x0040,
- 0x3230, 0x2011, 0x351a, 0x1078, 0x4643, 0xa086, 0x0084, 0x00c0,
- 0x322c, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1107, 0x00c0, 0x322c,
- 0x7834, 0xa005, 0x00c0, 0x322c, 0x1078, 0x3596, 0x7083, 0x000e,
- 0x1078, 0x3232, 0x0078, 0x3230, 0x7083, 0x0002, 0x707b, 0x0000,
- 0x0f7f, 0x007c, 0x7083, 0x000f, 0x707b, 0x0000, 0x608b, 0xbc85,
- 0x608f, 0xb5b5, 0x6043, 0x0005, 0x6043, 0x0004, 0x2009, 0x07d0,
- 0x2011, 0x351a, 0x1078, 0x4636, 0x007c, 0x7078, 0xa005, 0x0040,
- 0x324d, 0x2011, 0x351a, 0x1078, 0x4643, 0x007c, 0x7083, 0x0011,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b,
- 0x7478, 0xa480, 0x0018, 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004,
- 0x20a8, 0x53a6, 0x60c3, 0x0014, 0x1078, 0x353a, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x3293, 0x2011, 0x351a, 0x1078, 0x4643,
- 0xa086, 0x0014, 0x00c0, 0x3291, 0x2079, 0x7c80, 0x7a30, 0xa296,
- 0x1103, 0x00c0, 0x3291, 0x7834, 0xa005, 0x00c0, 0x3291, 0x7a38,
- 0xd2fc, 0x0040, 0x328b, 0x70a4, 0xa005, 0x00c0, 0x328b, 0x1078,
- 0x35d3, 0x70a7, 0x0001, 0x7083, 0x0012, 0x1078, 0x3295, 0x0078,
- 0x3293, 0x707b, 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0013, 0x1078,
- 0x35b0, 0x20a3, 0x1103, 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e,
- 0x706c, 0xa005, 0x00c0, 0x32af, 0x714c, 0xa186, 0xffff, 0x0040,
- 0x32af, 0x1078, 0x34de, 0x0040, 0x32af, 0x1078, 0x35d3, 0x20a9,
- 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0014, 0x1078, 0x353a, 0x007c, 0x0f7e, 0x7078, 0xa005,
- 0x0040, 0x32e9, 0x2011, 0x351a, 0x1078, 0x4643, 0xa086, 0x0014,
- 0x00c0, 0x32e7, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1104, 0x00c0,
- 0x32e7, 0x7834, 0xa005, 0x00c0, 0x32e7, 0x7a38, 0xd2fc, 0x0040,
- 0x32e1, 0x70a4, 0xa005, 0x00c0, 0x32e1, 0x1078, 0x35d3, 0x70a7,
- 0x0001, 0x7083, 0x0014, 0x1078, 0x32eb, 0x0078, 0x32e9, 0x707b,
- 0x0000, 0x0f7f, 0x007c, 0x7083, 0x0015, 0x1078, 0x35b0, 0x20a3,
- 0x1104, 0x20a3, 0x0000, 0x3430, 0x2011, 0x7c8e, 0x706c, 0xa006,
- 0x00c0, 0x3307, 0x7150, 0xa186, 0xffff, 0x0040, 0x3307, 0xa180,
- 0x2303, 0x200c, 0xa18c, 0xff00, 0x810f, 0x1078, 0x34de, 0x20a9,
- 0x0008, 0x2298, 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x0014, 0x1078, 0x353a, 0x007c, 0x0f7e, 0x7078, 0xa005,
- 0x0040, 0x3358, 0x2011, 0x351a, 0x1078, 0x4643, 0xa086, 0x0014,
- 0x00c0, 0x3356, 0x2079, 0x7c80, 0x7a30, 0xa296, 0x1105, 0x00c0,
- 0x3356, 0x7834, 0x2011, 0x0100, 0xa21e, 0x00c0, 0x333f, 0x7a38,
- 0xd2fc, 0x0040, 0x333b, 0x70a4, 0xa005, 0x00c0, 0x333b, 0x1078,
- 0x35d3, 0x70a7, 0x0001, 0x707f, 0x0001, 0x0078, 0x3350, 0xa005,
- 0x00c0, 0x3356, 0x7a38, 0xd2fc, 0x0040, 0x334e, 0x70a4, 0xa005,
- 0x00c0, 0x334e, 0x1078, 0x35d3, 0x70a7, 0x0001, 0x707f, 0x0000,
- 0x7083, 0x0016, 0x1078, 0x335a, 0x0078, 0x3358, 0x707b, 0x0000,
- 0x0f7f, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7c80,
- 0x20a1, 0x020b, 0x20a9, 0x000e, 0x53a6, 0x3430, 0x2011, 0x7c8e,
- 0x707c, 0xa005, 0x0040, 0x3370, 0x7083, 0x0017, 0x0078, 0x3372,
- 0x7083, 0x001b, 0x706c, 0xa005, 0x00c0, 0x337c, 0x1078, 0x3448,
- 0x0040, 0x338c, 0x0078, 0x3386, 0x20a9, 0x0008, 0x2099, 0x7c8e,
- 0x26a0, 0x53a6, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014,
- 0x1078, 0x353a, 0x0078, 0x338e, 0x1078, 0x3001, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x33af, 0x2011, 0x351a, 0x1078, 0x4643,
- 0xa086, 0x0084, 0x00c0, 0x33ad, 0x2079, 0x7c80, 0x7a30, 0xa296,
- 0x1106, 0x00c0, 0x33ad, 0x7834, 0xa005, 0x00c0, 0x33ad, 0x7083,
- 0x0018, 0x1078, 0x33b1, 0x0078, 0x33af, 0x707b, 0x0000, 0x0f7f,
- 0x007c, 0x7083, 0x0019, 0x1078, 0x35b0, 0x20a3, 0x1106, 0x20a3,
- 0x0000, 0x3430, 0x2099, 0x7c8e, 0x2039, 0x7c0e, 0x27a0, 0x20a9,
- 0x0040, 0x53a3, 0x2728, 0x2514, 0x8207, 0xa084, 0x00ff, 0x8000,
- 0x2018, 0xa294, 0x00ff, 0x8007, 0xa205, 0x202a, 0x6030, 0x2310,
- 0x8214, 0xa2a0, 0x7c0e, 0x2414, 0xa38c, 0x0001, 0x0040, 0x33dc,
- 0xa294, 0xff00, 0x0078, 0x33df, 0xa294, 0x00ff, 0x8007, 0xa215,
- 0x2222, 0x2798, 0x26a0, 0x20a9, 0x0040, 0x53a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0084, 0x1078, 0x353a, 0x007c, 0x0f7e,
- 0x7078, 0xa005, 0x0040, 0x3411, 0x2011, 0x351a, 0x1078, 0x4643,
- 0xa086, 0x0084, 0x00c0, 0x340f, 0x2079, 0x7c80, 0x7a30, 0xa296,
- 0x1107, 0x00c0, 0x340f, 0x7834, 0xa005, 0x00c0, 0x340f, 0x1078,
- 0x3596, 0x7083, 0x001a, 0x1078, 0x3413, 0x0078, 0x3411, 0x707b,
- 0x0000, 0x0f7f, 0x007c, 0x7083, 0x001b, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b, 0x7478, 0xa480, 0x0018,
- 0xa080, 0x0007, 0xa084, 0x03f8, 0x8004, 0x20a8, 0x53a6, 0x60c3,
- 0x0084, 0x1078, 0x353a, 0x007c, 0x7078, 0xa005, 0x0040, 0x3438,
- 0x2011, 0x351a, 0x1078, 0x4643, 0x7083, 0x001c, 0x1078, 0x3439,
- 0x007c, 0x707b, 0x0000, 0x608b, 0xbc85, 0x608f, 0xb5b5, 0x6043,
- 0x0001, 0x2009, 0x07d0, 0x2011, 0x351a, 0x1078, 0x4636, 0x007c,
- 0x087e, 0x097e, 0x2029, 0x7752, 0x252c, 0x20a9, 0x0008, 0x2041,
- 0x7c0e, 0x28a0, 0x2099, 0x7c8e, 0x53a3, 0x20a9, 0x0008, 0x2011,
- 0x0007, 0xd5d4, 0x0040, 0x345e, 0x2011, 0x0000, 0x2800, 0xa200,
- 0x200c, 0xa1a6, 0xffff, 0x00c0, 0x3470, 0xd5d4, 0x0040, 0x346b,
- 0x8210, 0x0078, 0x346c, 0x8211, 0x00f0, 0x345e, 0x0078, 0x34d5,
- 0x82ff, 0x00c0, 0x3482, 0xd5d4, 0x0040, 0x347c, 0xa1a6, 0x3fff,
- 0x0040, 0x3468, 0x0078, 0x3480, 0xa1a6, 0x3fff, 0x0040, 0x34d5,
- 0xa18d, 0xc000, 0x20a9, 0x0010, 0x2019, 0x0001, 0xd5d4, 0x0040,
- 0x348b, 0x2019, 0x0010, 0x2120, 0xd5d4, 0x0040, 0x3492, 0x8423,
- 0x0078, 0x3493, 0x8424, 0x00c8, 0x34a0, 0xd5d4, 0x0040, 0x349b,
- 0x8319, 0x0078, 0x349c, 0x8318, 0x00f0, 0x348c, 0x0078, 0x34d5,
- 0x23a8, 0x2021, 0x0001, 0x8426, 0x8425, 0x00f0, 0x34a4, 0x2328,
- 0x8529, 0xa2be, 0x0007, 0x0040, 0x34b8, 0x007e, 0x2039, 0x0007,
- 0x2200, 0xa73a, 0x007f, 0x27a8, 0xa5a8, 0x0010, 0x00f0, 0x34b4,
- 0x754e, 0xa5c8, 0x2303, 0x292c, 0xa5ac, 0x00ff, 0x6532, 0x60e7,
- 0x0000, 0x65ea, 0x2018, 0x2304, 0xa405, 0x201a, 0x706f, 0x0001,
- 0x26a0, 0x2898, 0x20a9, 0x0008, 0x53a6, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0xa085, 0x0001, 0x0078, 0x34db, 0xa006, 0x0078, 0x34db,
- 0xa006, 0x1078, 0x12d5, 0x097f, 0x087f, 0x007c, 0x2118, 0x2021,
- 0x0000, 0x2001, 0x0007, 0xa39a, 0x0010, 0x0048, 0x34eb, 0x8420,
- 0x8001, 0x0078, 0x34e3, 0x2118, 0x84ff, 0x0040, 0x34f4, 0xa39a,
- 0x0010, 0x8421, 0x00c0, 0x34ef, 0x2021, 0x0001, 0x83ff, 0x0040,
- 0x34fd, 0x8423, 0x8319, 0x00c0, 0x34f9, 0xa238, 0x2704, 0xa42c,
- 0x00c0, 0x3512, 0xa405, 0x203a, 0x714e, 0xa1a0, 0x2303, 0x242c,
- 0xa5ac, 0x00ff, 0x6532, 0x60e7, 0x0000, 0x65ea, 0x706f, 0x0001,
- 0xa084, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7700, 0x7073, 0x0000,
- 0x0e7f, 0x007c, 0x0e7e, 0x0f7e, 0x2079, 0x0100, 0x2071, 0x0140,
- 0x1078, 0x5656, 0x7004, 0xa084, 0x4000, 0x0040, 0x352b, 0x7003,
- 0x1000, 0x7003, 0x0000, 0x127e, 0x2091, 0x8000, 0x2071, 0x7720,
- 0x2073, 0x0000, 0x7843, 0x0090, 0x7843, 0x0010, 0x127f, 0x0f7f,
- 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x2011, 0x7940, 0x2013,
- 0x0000, 0x707b, 0x0000, 0x127f, 0x20e1, 0x9080, 0x60a3, 0x0056,
- 0x60a7, 0x9575, 0x1078, 0x564d, 0x2009, 0x07d0, 0x2011, 0x351a,
- 0x1078, 0x46d3, 0x007c, 0x017e, 0x027e, 0x0c7e, 0x127e, 0x2091,
- 0x8000, 0x2009, 0x00f7, 0x1078, 0x35bc, 0x2061, 0x7949, 0x601b,
- 0x0000, 0x601f, 0x0000, 0x2061, 0x7700, 0x6003, 0x0001, 0x2061,
- 0x0100, 0x6043, 0x0090, 0x6043, 0x0010, 0x2009, 0x001e, 0x2011,
- 0x3578, 0x1078, 0x4636, 0x127f, 0x0c7f, 0x027f, 0x017f, 0x007c,
- 0x0e7e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x0100, 0x1078,
- 0x5656, 0x2071, 0x0140, 0x7004, 0xa084, 0x4000, 0x0040, 0x358c,
- 0x7003, 0x1000, 0x7003, 0x0000, 0x2001, 0x0001, 0x1078, 0x1fff,
- 0x1078, 0x3553, 0x127f, 0x007f, 0x0e7f, 0x007c, 0x20a9, 0x0040,
- 0x20a1, 0x7dc0, 0x2099, 0x7c8e, 0x3304, 0x8007, 0x20a2, 0x9398,
- 0x94a0, 0x00f0, 0x359c, 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x2099, 0x7c00, 0x20a1, 0x020b, 0x20a9, 0x000c, 0x53a6, 0x007c,
- 0x20e1, 0x9080, 0x20e1, 0x4000, 0x2099, 0x7c80, 0x20a1, 0x020b,
- 0x20a9, 0x000c, 0x53a6, 0x007c, 0x0c7e, 0x007e, 0x2061, 0x0100,
- 0x810f, 0x2001, 0x772c, 0x2004, 0xa005, 0x00c0, 0x35cd, 0x6030,
- 0xa084, 0x00ff, 0xa105, 0x0078, 0x35cf, 0xa185, 0x00f7, 0x604a,
- 0x007f, 0x0c7f, 0x007c, 0x017e, 0x047e, 0x2001, 0x7752, 0x2004,
- 0xd0a4, 0x0040, 0x35e6, 0xa006, 0x2020, 0x2009, 0x002a, 0x1078,
- 0x75f7, 0x2001, 0x770c, 0x200c, 0xc195, 0x2102, 0x2019, 0x002a,
- 0x1078, 0x226d, 0x047f, 0x017f, 0x007c, 0x157e, 0x20a9, 0x00ff,
- 0x2009, 0x7820, 0xa006, 0x200a, 0x8108, 0x00f0, 0x35f3, 0x157f,
- 0x007c, 0x0d7e, 0x037e, 0x157e, 0x137e, 0x147e, 0x2069, 0x7751,
- 0xa006, 0x6002, 0x6007, 0x0707, 0x600a, 0x600e, 0x6012, 0xa198,
- 0x2303, 0x231c, 0xa39c, 0x00ff, 0x6316, 0x20a9, 0x0004, 0xac98,
- 0x0006, 0x23a0, 0x40a4, 0x20a9, 0x0004, 0xac98, 0x000a, 0x23a0,
- 0x40a4, 0x603e, 0x6042, 0x604e, 0x6052, 0x6056, 0x605a, 0x605e,
- 0x6062, 0x6066, 0x606a, 0x606e, 0x6072, 0x6076, 0x607a, 0x607e,
- 0x6082, 0x6086, 0x608a, 0x608e, 0x6092, 0x6096, 0x609a, 0x609e,
- 0x61a2, 0x0d7e, 0x60a4, 0xa06d, 0x0040, 0x3638, 0x1078, 0x1348,
- 0x60a7, 0x0000, 0x60a8, 0xa06d, 0x0040, 0x3640, 0x1078, 0x1348,
- 0x60ab, 0x0000, 0x0d7f, 0xa006, 0x604a, 0x6810, 0x603a, 0x680c,
- 0x6046, 0x6814, 0xa084, 0x00ff, 0x6042, 0x147f, 0x137f, 0x157f,
- 0x037f, 0x0d7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x6944, 0x6e48,
- 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8, 0x36f1, 0xa18c, 0xff00,
- 0x810f, 0xa182, 0x00ff, 0x00c8, 0x36f7, 0x2001, 0x770c, 0x2004,
- 0xa084, 0x0003, 0x00c0, 0x36da, 0xa188, 0x7820, 0x2104, 0xa065,
- 0x0040, 0x36d0, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006, 0x00c0,
- 0x36d6, 0x60a4, 0xa00d, 0x0040, 0x3681, 0x1078, 0x3a16, 0x0040,
- 0x36ca, 0x60a8, 0xa00d, 0x0040, 0x369b, 0x1078, 0x3a66, 0x00c0,
- 0x369b, 0x694c, 0xd1fc, 0x00c0, 0x3691, 0x1078, 0x378b, 0x0078,
- 0x36c5, 0x1078, 0x375c, 0x694c, 0xd1ec, 0x00c0, 0x36c5, 0x1078,
- 0x38eb, 0x0078, 0x36c5, 0x694c, 0xa184, 0xa000, 0x0040, 0x36b5,
- 0xd1ec, 0x0040, 0x36ae, 0xd1fc, 0x0040, 0x36aa, 0x1078, 0x38fc,
- 0x0078, 0x36b1, 0x1078, 0x38fc, 0x0078, 0x36b5, 0xd1fc, 0x0040,
- 0x36b5, 0x1078, 0x375c, 0x0078, 0x36c5, 0x6050, 0xa00d, 0x0040,
- 0x36c0, 0x2d00, 0x200a, 0x6803, 0x0000, 0x6052, 0x0078, 0x36c5,
- 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x1078, 0x491a, 0xa006,
- 0x127f, 0x007c, 0x2001, 0x0005, 0x2009, 0x0000, 0x0078, 0x36fb,
- 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x36fb, 0xa082, 0x0006,
- 0x0048, 0x3679, 0x2009, 0x770c, 0x210c, 0xd18c, 0x0040, 0x36e4,
- 0x2001, 0x0004, 0x0078, 0x36ed, 0xd184, 0x0040, 0x36eb, 0x2001,
- 0x0004, 0x0078, 0x36ed, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078,
- 0x36fb, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078, 0x36fb, 0x2001,
- 0x0029, 0x2009, 0x0000, 0xa005, 0x127f, 0x007c, 0x6944, 0x6e48,
- 0xa684, 0x3fff, 0xa082, 0x4000, 0x00c8, 0x3741, 0xa18c, 0xff00,
- 0x810f, 0xa182, 0x00ff, 0x00c8, 0x3731, 0xa188, 0x7820, 0x2104,
- 0xa065, 0x0040, 0x3731, 0x6004, 0xa084, 0x00ff, 0xa08e, 0x0006,
- 0x00c0, 0x3737, 0x684c, 0xd0ec, 0x0040, 0x3724, 0x1078, 0x38fc,
- 0x1078, 0x375c, 0x0078, 0x372c, 0x1078, 0x375c, 0x684c, 0xd0fc,
- 0x0040, 0x372c, 0x1078, 0x38eb, 0x1078, 0x3944, 0xa006, 0x0078,
- 0x3745, 0x2001, 0x0028, 0x2009, 0x0000, 0x0078, 0x3745, 0xa082,
- 0x0006, 0x0048, 0x371a, 0x2001, 0x0029, 0x2009, 0x0000, 0x0078,
- 0x3745, 0x2001, 0x0029, 0x2009, 0x0000, 0xa005, 0x007c, 0x127e,
- 0x2091, 0x8000, 0x6050, 0xa00d, 0x0040, 0x3755, 0x2d00, 0x200a,
- 0x6803, 0x0000, 0x6052, 0x127f, 0x007c, 0x2d00, 0x6052, 0x604e,
- 0x6803, 0x0000, 0x0078, 0x3753, 0x127e, 0x2091, 0x8000, 0x604c,
- 0xa005, 0x0040, 0x3768, 0x6802, 0x2d00, 0x604e, 0x127f, 0x007c,
- 0x2d00, 0x6052, 0x604e, 0x6803, 0x0000, 0x0078, 0x3766, 0x127e,
- 0x2091, 0x8000, 0x604c, 0xa06d, 0x0040, 0x377d, 0x6800, 0xa005,
- 0x00c0, 0x377b, 0x6052, 0x604e, 0xad05, 0x127f, 0x007c, 0x604c,
- 0xa06d, 0x0040, 0x378a, 0x6800, 0xa005, 0x00c0, 0x3788, 0x6052,
- 0x604e, 0xad05, 0x007c, 0x6803, 0x0000, 0x6084, 0xa00d, 0x0040,
- 0x3795, 0x2d00, 0x200a, 0x6086, 0x007c, 0x2d00, 0x6086, 0x6082,
- 0x0078, 0x3794, 0x127e, 0x0c7e, 0x027e, 0x2091, 0x8000, 0x6218,
- 0x2260, 0x6200, 0xa005, 0x0040, 0x37a8, 0xc285, 0x0078, 0x37a9,
- 0xc284, 0x6202, 0x027f, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e,
- 0x2091, 0x8000, 0x6218, 0x2260, 0x6204, 0xa294, 0xff00, 0xa215,
- 0x6206, 0x0c7f, 0x127f, 0x007c, 0x127e, 0x0c7e, 0x2091, 0x8000,
- 0x6218, 0x2260, 0x6204, 0xa294, 0x00ff, 0x8007, 0xa215, 0x6206,
- 0x0c7f, 0x127f, 0x007c, 0x027e, 0xa182, 0x00ff, 0x0048, 0x37d4,
- 0xa085, 0x0001, 0x0078, 0x37ec, 0xa190, 0x7820, 0x2204, 0xa065,
- 0x00c0, 0x37eb, 0x017e, 0x0d7e, 0x1078, 0x1314, 0x2d60, 0x0d7f,
- 0x017f, 0x0040, 0x37d0, 0x2c00, 0x2012, 0x60a7, 0x0000, 0x60ab,
- 0x0000, 0x1078, 0x35f9, 0xa006, 0x027f, 0x007c, 0x027e, 0xa182,
- 0x00ff, 0x0048, 0x37f7, 0xa085, 0x0001, 0x0078, 0x3804, 0x0d7e,
- 0xa190, 0x7820, 0x2204, 0xa06d, 0x0040, 0x3802, 0x2013, 0x0000,
- 0x1078, 0x1348, 0x0d7f, 0xa006, 0x027f, 0x007c, 0x017e, 0xa182,
- 0x00ff, 0x0048, 0x380f, 0xa085, 0x0001, 0x0078, 0x3816, 0xa188,
- 0x7820, 0x2104, 0xa065, 0x0040, 0x380b, 0xa006, 0x017f, 0x007c,
- 0x0d7e, 0x157e, 0x137e, 0x147e, 0x600b, 0x0000, 0x600f, 0x0000,
- 0x6000, 0xc08c, 0x6002, 0x2069, 0x7c8e, 0x6808, 0x605e, 0x6810,
- 0x6062, 0x6138, 0xa10a, 0x0048, 0x382e, 0x603a, 0x6814, 0x6066,
- 0x2099, 0x7c96, 0xac88, 0x000a, 0x21a0, 0x20a9, 0x0004, 0x53a3,
- 0x2099, 0x7c9a, 0xac88, 0x0006, 0x21a0, 0x20a9, 0x0004, 0x53a3,
- 0x2069, 0x7cae, 0x6808, 0x606a, 0x690c, 0x616e, 0x6810, 0x6072,
- 0x6818, 0x6076, 0xa182, 0x0211, 0x00c8, 0x3852, 0x2009, 0x0008,
- 0x0078, 0x387c, 0xa182, 0x0259, 0x00c8, 0x385a, 0x2009, 0x0007,
- 0x0078, 0x387c, 0xa182, 0x02c1, 0x00c8, 0x3862, 0x2009, 0x0006,
- 0x0078, 0x387c, 0xa182, 0x0349, 0x00c8, 0x386a, 0x2009, 0x0005,
- 0x0078, 0x387c, 0xa182, 0x0421, 0x00c8, 0x3872, 0x2009, 0x0004,
- 0x0078, 0x387c, 0xa182, 0x0581, 0x00c8, 0x387a, 0x2009, 0x0003,
- 0x0078, 0x387c, 0x2009, 0x0002, 0x6192, 0x147f, 0x137f, 0x157f,
- 0x0d7f, 0x007c, 0x0e7e, 0x2071, 0x7c8d, 0x2e04, 0x6896, 0x2071,
- 0x7c8e, 0x7004, 0x689a, 0x701c, 0x689e, 0x0e7f, 0x007c, 0x0d7e,
- 0x127e, 0x2091, 0x8000, 0x60a4, 0xa06d, 0x0040, 0x38b3, 0x6900,
- 0x81ff, 0x00c0, 0x38c7, 0x6a04, 0xa282, 0x0010, 0x00c8, 0x38cc,
- 0xad88, 0x0004, 0x20a9, 0x0010, 0x2104, 0xa086, 0xffff, 0x0040,
- 0x38ae, 0x8108, 0x00f0, 0x38a4, 0x1078, 0x12d5, 0x260a, 0x8210,
- 0x6a06, 0x0078, 0x38c7, 0x1078, 0x1314, 0x0040, 0x38cc, 0x2d00,
- 0x60a6, 0x6803, 0x0000, 0xad88, 0x0004, 0x20a9, 0x0010, 0x200b,
- 0xffff, 0x8108, 0x00f0, 0x38bf, 0x6807, 0x0001, 0x6e12, 0xa085,
- 0x0001, 0x127f, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x38c9, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x3a0f, 0x00c0, 0x38e9, 0x200b, 0xffff,
- 0x0d7e, 0x60a4, 0x2068, 0x6804, 0xa08a, 0x0002, 0x0048, 0x38e4,
- 0x8001, 0x6806, 0x0078, 0x38e8, 0x1078, 0x1348, 0x60a7, 0x0000,
- 0x0d7f, 0x127f, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x3a7b,
- 0x0078, 0x38f4, 0x1078, 0x3747, 0x1078, 0x3988, 0x00c0, 0x38f2,
- 0x1078, 0x3944, 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000,
- 0x60a8, 0xa06d, 0x0040, 0x3920, 0x6950, 0x81ff, 0x00c0, 0x3934,
- 0x6a54, 0xa282, 0x0010, 0x00c8, 0x3941, 0xad88, 0x0018, 0x20a9,
- 0x0010, 0x2104, 0xa086, 0xffff, 0x0040, 0x391b, 0x8108, 0x00f0,
- 0x3911, 0x1078, 0x12d5, 0x260a, 0x8210, 0x6a56, 0x0078, 0x3934,
- 0x1078, 0x1314, 0x0040, 0x3941, 0x2d00, 0x60aa, 0x6853, 0x0000,
- 0xad88, 0x0018, 0x20a9, 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0,
- 0x392c, 0x6857, 0x0001, 0x6e62, 0x0078, 0x3938, 0x1078, 0x378b,
- 0x1078, 0x394e, 0x00c0, 0x3936, 0xa085, 0x0001, 0x127f, 0x0d7f,
- 0x007c, 0xa006, 0x0078, 0x393e, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x491a, 0x127f, 0x007c, 0xa01e, 0x0078, 0x3950, 0x2019, 0x0001,
- 0xa00e, 0x127e, 0x2091, 0x8000, 0x604c, 0x2068, 0x6000, 0xd0dc,
- 0x00c0, 0x396e, 0x8dff, 0x0040, 0x3983, 0x83ff, 0x0040, 0x3966,
- 0x6848, 0xa606, 0x0040, 0x3973, 0x0078, 0x396e, 0x683c, 0xa406,
- 0x00c0, 0x396e, 0x6840, 0xa506, 0x0040, 0x3973, 0x2d08, 0x6800,
- 0x2068, 0x0078, 0x395a, 0x6a00, 0x604c, 0xad06, 0x00c0, 0x397b,
- 0x624e, 0x0078, 0x397e, 0xa180, 0x0000, 0x2202, 0x82ff, 0x00c0,
- 0x3983, 0x6152, 0x8dff, 0x127f, 0x007c, 0xa01e, 0x0078, 0x398a,
- 0x2019, 0x0001, 0xa00e, 0x6080, 0x2068, 0x8dff, 0x0040, 0x39b6,
- 0x83ff, 0x0040, 0x3999, 0x6848, 0xa606, 0x0040, 0x39a6, 0x0078,
- 0x39a1, 0x683c, 0xa406, 0x00c0, 0x39a1, 0x6840, 0xa506, 0x0040,
- 0x39a6, 0x2d08, 0x6800, 0x2068, 0x0078, 0x398d, 0x6a00, 0x6080,
- 0xad06, 0x00c0, 0x39ae, 0x6282, 0x0078, 0x39b1, 0xa180, 0x0000,
- 0x2202, 0x82ff, 0x00c0, 0x39b6, 0x6186, 0x8dff, 0x007c, 0x1078,
- 0x3a0f, 0x00c0, 0x39bd, 0x2011, 0x0001, 0x1078, 0x3a5f, 0x00c0,
- 0x39c3, 0xa295, 0x0002, 0x007c, 0x1078, 0x3a97, 0x0040, 0x39cc,
- 0x1078, 0x6ae1, 0x0078, 0x39ce, 0xa085, 0x0001, 0x007c, 0x1078,
- 0x3a97, 0x0040, 0x39d7, 0x1078, 0x6a70, 0x0078, 0x39d9, 0xa085,
- 0x0001, 0x007c, 0x1078, 0x3a97, 0x0040, 0x39e2, 0x1078, 0x6ab6,
- 0x0078, 0x39e4, 0xa085, 0x0001, 0x007c, 0x1078, 0x3a97, 0x0040,
- 0x39ed, 0x1078, 0x6a8c, 0x0078, 0x39ef, 0xa085, 0x0001, 0x007c,
- 0x127e, 0x007e, 0x0d7e, 0x2091, 0x8000, 0x6080, 0xa06d, 0x0040,
- 0x3a07, 0x6800, 0x007e, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000,
- 0x1078, 0x6c0a, 0x1078, 0x3b4c, 0x007f, 0x0078, 0x39f6, 0x6083,
- 0x0000, 0x6087, 0x0000, 0x0d7f, 0x007f, 0x127f, 0x007c, 0x60a4,
- 0xa00d, 0x00c0, 0x3a16, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x2170,
- 0x7000, 0xa005, 0x00c0, 0x3a29, 0x20a9, 0x0010, 0xae88, 0x0004,
- 0x2104, 0xa606, 0x0040, 0x3a29, 0x8108, 0x00f0, 0x3a20, 0xa085,
- 0x0001, 0x0e7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x60a4,
- 0xa06d, 0x00c0, 0x3a39, 0x1078, 0x1314, 0x0040, 0x3a4b, 0x2d00,
- 0x60a6, 0x6803, 0x0001, 0x6807, 0x0000, 0xad88, 0x0004, 0x20a9,
- 0x0010, 0x200b, 0xffff, 0x8108, 0x00f0, 0x3a41, 0xa085, 0x0001,
- 0x127f, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x3a48, 0x0d7e, 0x127e,
- 0x2091, 0x8000, 0x60a4, 0xa06d, 0x0040, 0x3a5c, 0x60a7, 0x0000,
- 0x1078, 0x1348, 0xa085, 0x0001, 0x127f, 0x0d7f, 0x007c, 0x60a8,
- 0xa00d, 0x00c0, 0x3a66, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x2170,
- 0x7050, 0xa005, 0x00c0, 0x3a79, 0x20a9, 0x0010, 0xae88, 0x0018,
- 0x2104, 0xa606, 0x0040, 0x3a79, 0x8108, 0x00f0, 0x3a70, 0xa085,
- 0x0001, 0x0e7f, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x3a5f,
- 0x00c0, 0x3a95, 0x200b, 0xffff, 0x0d7e, 0x60a8, 0x2068, 0x6854,
- 0xa08a, 0x0002, 0x0048, 0x3a90, 0x8001, 0x6856, 0x0078, 0x3a94,
- 0x1078, 0x1348, 0x60ab, 0x0000, 0x0d7f, 0x127f, 0x007c, 0x609c,
- 0xd0a4, 0x007c, 0x0f7e, 0x2079, 0x7751, 0x7804, 0xd0a4, 0x0040,
- 0x3ac3, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e,
- 0x1078, 0x3806, 0x00c0, 0x3ab7, 0x6004, 0xa084, 0xff00, 0x8007,
- 0xa086, 0x0006, 0x00c0, 0x3ab7, 0x6000, 0xc0ed, 0x6002, 0x017f,
- 0x8108, 0x00f0, 0x3aa7, 0x0c7f, 0x157f, 0x2009, 0x07d0, 0x2011,
- 0x3ac5, 0x1078, 0x46d3, 0x0f7f, 0x007c, 0x2011, 0x3ac5, 0x1078,
- 0x4643, 0x157e, 0x0c7e, 0x20a9, 0x007f, 0x2009, 0x0000, 0x017e,
- 0x1078, 0x3806, 0x00c0, 0x3af1, 0x6000, 0xd0ec, 0x0040, 0x3af1,
- 0x047e, 0x62a0, 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x0029,
- 0x1078, 0x75f7, 0x6000, 0xc0e5, 0xc0ec, 0x6002, 0x2019, 0x0029,
- 0x1078, 0x4a38, 0x1078, 0x497b, 0x2009, 0x0000, 0x1078, 0x7431,
- 0x047f, 0x017f, 0x8108, 0x00f0, 0x3acf, 0x0c7f, 0x157f, 0x007c,
- 0x0c7e, 0x6018, 0x2060, 0x6000, 0xc0ec, 0x6002, 0x0c7f, 0x007c,
- 0x2071, 0x77ff, 0x7003, 0x0001, 0x7007, 0x0000, 0x7013, 0x0000,
- 0x7017, 0x0000, 0x701b, 0x0000, 0x701f, 0x0000, 0x704b, 0x0001,
- 0x704f, 0x0000, 0x705b, 0x0020, 0x705f, 0x0040, 0x707f, 0x0000,
- 0x007c, 0x0e7e, 0x2071, 0x77ff, 0x684c, 0xa005, 0x00c0, 0x3b27,
- 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078, 0x3b4a, 0x6a60,
- 0x7236, 0x6b64, 0x733a, 0x6868, 0x703e, 0x7076, 0x686c, 0x7042,
- 0x707a, 0x684c, 0x702e, 0x6844, 0x7032, 0x2009, 0x000d, 0x200a,
- 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084, 0xffc0, 0xa210,
- 0x2100, 0xa319, 0x726e, 0x7372, 0x7028, 0xc084, 0x702a, 0x7007,
- 0x0001, 0xa006, 0x0e7f, 0x007c, 0x0e7e, 0x6838, 0xd0fc, 0x00c0,
- 0x3b9d, 0x6804, 0xa00d, 0x0040, 0x3b6b, 0x0d7e, 0x0e7e, 0x2071,
- 0x7700, 0x027e, 0xa016, 0x702c, 0x2168, 0x6904, 0x206a, 0x8210,
- 0x2d00, 0x81ff, 0x00c0, 0x3b5c, 0x702e, 0x70a0, 0xa200, 0x70a2,
- 0x027f, 0x0e7f, 0x0d7f, 0x2071, 0x77ff, 0x701c, 0xa005, 0x00c0,
- 0x3bae, 0x0068, 0x3bac, 0x2071, 0x7751, 0x7004, 0xd09c, 0x0040,
- 0x3bac, 0x6934, 0xa186, 0x0103, 0x00c0, 0x3bbf, 0x6948, 0x6844,
- 0xa105, 0x00c0, 0x3b9f, 0x2009, 0x8020, 0x2071, 0x0000, 0x7018,
- 0xd084, 0x00c0, 0x3bac, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a,
- 0x701b, 0x0001, 0x2091, 0x4080, 0x2071, 0x7700, 0x702c, 0x206a,
- 0x2d00, 0x702e, 0x70a0, 0x8000, 0x70a2, 0x0e7f, 0x007c, 0x6844,
- 0xa086, 0x0100, 0x00c0, 0x3bac, 0x6868, 0xa005, 0x00c0, 0x3bac,
- 0x2009, 0x8020, 0x0078, 0x3b85, 0x2071, 0x77ff, 0x2d08, 0x206b,
- 0x0000, 0x7010, 0x8000, 0x7012, 0x7018, 0xa06d, 0x711a, 0x0040,
- 0x3bbc, 0x6902, 0x0078, 0x3bbd, 0x711e, 0x0078, 0x3b9d, 0xa18c,
- 0x00ff, 0xa186, 0x0017, 0x0040, 0x3bcd, 0xa186, 0x001e, 0x0040,
- 0x3bcd, 0xa18e, 0x001f, 0x00c0, 0x3bac, 0x684c, 0xd0cc, 0x0040,
- 0x3bac, 0x6850, 0xa084, 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3bac,
- 0x2009, 0x8021, 0x0078, 0x3b85, 0x007e, 0x6837, 0x0103, 0x20a9,
- 0x001c, 0xad80, 0x0011, 0x20a0, 0x2001, 0x0000, 0x40a4, 0x007f,
- 0x684a, 0x6952, 0x007c, 0x2071, 0x77ff, 0x7004, 0x0079, 0x3bf0,
- 0x3bf8, 0x3c07, 0x3c97, 0x3c98, 0x3ca8, 0x3cae, 0x3bf9, 0x3c85,
- 0x007c, 0x127e, 0x2091, 0x8000, 0x0068, 0x3c06, 0x2009, 0x000d,
- 0x7030, 0x200a, 0x2091, 0x4080, 0x7007, 0x0001, 0x127f, 0x701c,
- 0xa06d, 0x0040, 0x3c84, 0x0e7e, 0x2071, 0x7751, 0x7004, 0xd09c,
- 0x0040, 0x3c66, 0x6934, 0xa186, 0x0103, 0x00c0, 0x3c3c, 0x6948,
- 0x6844, 0xa105, 0x00c0, 0x3c59, 0x2009, 0x8020, 0x127e, 0x2091,
- 0x8000, 0x0068, 0x3c38, 0x2071, 0x0000, 0x7018, 0xd084, 0x00c0,
- 0x3c38, 0x7122, 0x683c, 0x7026, 0x6840, 0x702a, 0x701b, 0x0001,
- 0x2091, 0x4080, 0x127f, 0x0e7f, 0x1078, 0x3ce1, 0x0078, 0x3c84,
- 0x127f, 0x0e7f, 0x0078, 0x3c84, 0xa18c, 0x00ff, 0xa186, 0x0017,
- 0x0040, 0x3c4a, 0xa186, 0x001e, 0x0040, 0x3c4a, 0xa18e, 0x001f,
- 0x00c0, 0x3c66, 0x684c, 0xd0cc, 0x0040, 0x3c66, 0x6850, 0xa084,
- 0x00ff, 0xa086, 0x0001, 0x00c0, 0x3c66, 0x2009, 0x8021, 0x0078,
- 0x3c1e, 0x6844, 0xa086, 0x0100, 0x00c0, 0x3c66, 0x6868, 0xa005,
- 0x00c0, 0x3c66, 0x2009, 0x8020, 0x0078, 0x3c1e, 0x0e7f, 0x1078,
- 0x3cf5, 0x0040, 0x3c84, 0x700f, 0x0001, 0x6934, 0xa184, 0x00ff,
- 0xa086, 0x0003, 0x00c0, 0x3c7b, 0x810f, 0xa18c, 0x00ff, 0x8101,
- 0x0040, 0x3c7b, 0x710e, 0x7007, 0x0003, 0x1078, 0x3d15, 0x7050,
- 0xa086, 0x0100, 0x0040, 0x3c98, 0x007c, 0x701c, 0xa06d, 0x0040,
- 0x3c96, 0x1078, 0x3cf5, 0x0040, 0x3c96, 0x7007, 0x0003, 0x1078,
- 0x3d15, 0x7050, 0xa086, 0x0100, 0x0040, 0x3c98, 0x007c, 0x007c,
- 0x7050, 0xa09e, 0x0100, 0x00c0, 0x3ca1, 0x7007, 0x0004, 0x0078,
- 0x3ca8, 0xa086, 0x0200, 0x00c0, 0x3ca7, 0x7007, 0x0005, 0x007c,
- 0x1078, 0x3caf, 0x7006, 0x1078, 0x3ce1, 0x007c, 0x007c, 0x702c,
- 0x7130, 0x8108, 0xa102, 0x0048, 0x3cbc, 0xa00e, 0x7034, 0x706e,
- 0x7038, 0x7072, 0x0078, 0x3cc6, 0x706c, 0xa080, 0x0040, 0x706e,
- 0x00c8, 0x3cc6, 0x7070, 0xa081, 0x0000, 0x7072, 0x7132, 0x700c,
- 0x8001, 0x700e, 0x00c0, 0x3cda, 0x127e, 0x2091, 0x8000, 0x0068,
- 0x3cdd, 0x2001, 0x000d, 0x2102, 0x2091, 0x4080, 0x2001, 0x0001,
- 0x127f, 0x007c, 0x2001, 0x0007, 0x007c, 0x2001, 0x0006, 0x127f,
- 0x007c, 0x701c, 0xa06d, 0x0040, 0x3cf4, 0x127e, 0x2091, 0x8000,
- 0x7010, 0x8001, 0x7012, 0x2d04, 0x701e, 0xa005, 0x00c0, 0x3cf1,
- 0x701a, 0x127f, 0x1078, 0x1348, 0x007c, 0x2019, 0x000d, 0x2304,
- 0x230c, 0xa10e, 0x0040, 0x3d04, 0x2304, 0x230c, 0xa10e, 0x0040,
- 0x3d04, 0xa006, 0x0078, 0x3d14, 0x732c, 0x8319, 0x7130, 0xa102,
- 0x00c0, 0x3d0e, 0x2300, 0xa005, 0x0078, 0x3d14, 0x0048, 0x3d13,
- 0xa302, 0x0078, 0x3d14, 0x8002, 0x007c, 0x2d00, 0x7026, 0xa080,
- 0x000d, 0x7056, 0x7053, 0x0000, 0x127e, 0x2091, 0x8000, 0x2009,
- 0x7959, 0x2104, 0xc08d, 0x200a, 0x127f, 0x1078, 0x1399, 0x007c,
- 0x2071, 0x77cd, 0x7003, 0x0000, 0x7007, 0x0000, 0x700f, 0x0000,
- 0x702b, 0x0001, 0x704f, 0x0000, 0x7053, 0x0001, 0x705f, 0x0020,
- 0x7063, 0x0040, 0x7083, 0x0000, 0x708b, 0x0000, 0x708f, 0x0001,
- 0x70bf, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x77cd, 0x6848, 0xa005,
- 0x00c0, 0x3d51, 0x7028, 0xc085, 0x702a, 0xa085, 0x0001, 0x0078,
- 0x3d76, 0x6a50, 0x7236, 0x6b54, 0x733a, 0x6858, 0x703e, 0x707a,
- 0x685c, 0x7042, 0x707e, 0x6848, 0x702e, 0x6840, 0x7032, 0x2009,
- 0x000c, 0x200a, 0x8007, 0x8006, 0x8006, 0xa08c, 0x003f, 0xa084,
- 0xffc0, 0xa210, 0x2100, 0xa319, 0x7272, 0x7376, 0x7028, 0xc084,
- 0x702a, 0x7007, 0x0001, 0x700f, 0x0000, 0xa006, 0x0e7f, 0x007c,
- 0x2b78, 0x2071, 0x77cd, 0x7004, 0x1079, 0x3dd6, 0x700c, 0x0079,
- 0x3d81, 0x3d86, 0x3d7b, 0x3d7b, 0x3d7b, 0x3d7b, 0x007c, 0x700c,
- 0x0079, 0x3d8a, 0x3d8f, 0x3dd4, 0x3dd4, 0x3dd5, 0x3dd5, 0x7830,
- 0x7930, 0xa106, 0x0040, 0x3d99, 0x7830, 0x7930, 0xa106, 0x00c0,
- 0x3dbf, 0x7030, 0xa10a, 0x0040, 0x3dbf, 0x00c8, 0x3da1, 0x712c,
- 0xa10a, 0xa18a, 0x0002, 0x00c8, 0x3dc0, 0x1078, 0x1314, 0x0040,
- 0x3dbf, 0x2d00, 0x705a, 0x7063, 0x0040, 0x2001, 0x0003, 0x7057,
- 0x0000, 0x127e, 0x007e, 0x2091, 0x8000, 0x2009, 0x7959, 0x2104,
- 0xc085, 0x200a, 0x007f, 0x700e, 0x127f, 0x1078, 0x1399, 0x007c,
- 0x1078, 0x1314, 0x0040, 0x3dbf, 0x2d00, 0x705a, 0x1078, 0x1314,
- 0x00c0, 0x3dcc, 0x0078, 0x3dab, 0x2d00, 0x7086, 0x7063, 0x0080,
- 0x2001, 0x0004, 0x0078, 0x3daf, 0x007c, 0x007c, 0x3de7, 0x3de8,
- 0x3e1f, 0x3e20, 0x3dd4, 0x3e56, 0x3e5b, 0x3e92, 0x3e93, 0x3eae,
- 0x3eaf, 0x3eb0, 0x3eb1, 0x3eb2, 0x3eb3, 0x3f1c, 0x3f46, 0x007c,
- 0x700c, 0x0079, 0x3deb, 0x3df0, 0x3df3, 0x3e03, 0x3e1e, 0x3e1e,
- 0x1078, 0x3d87, 0x007c, 0x127e, 0x8001, 0x700e, 0x7058, 0x007e,
- 0x1078, 0x4228, 0x0040, 0x3e00, 0x2091, 0x8000, 0x1078, 0x3d87,
- 0x0d7f, 0x0078, 0x3e0c, 0x127e, 0x8001, 0x700e, 0x1078, 0x4228,
- 0x7058, 0x2068, 0x7084, 0x705a, 0x6803, 0x0000, 0x6807, 0x0000,
- 0x6834, 0xa084, 0x00ff, 0xa08a, 0x0020, 0x00c8, 0x3e1b, 0x1079,
- 0x3e36, 0x127f, 0x007c, 0x127f, 0x1078, 0x3eb4, 0x007c, 0x007c,
- 0x007c, 0x0e7e, 0x2071, 0x77cd, 0x700c, 0x0079, 0x3e27, 0x3e2c,
- 0x3e2c, 0x3e2c, 0x3e2e, 0x3e32, 0x0e7f, 0x007c, 0x700f, 0x0001,
- 0x0078, 0x3e34, 0x700f, 0x0002, 0x0e7f, 0x007c, 0x3eb4, 0x3eb4,
- 0x3ed0, 0x3eb4, 0x3fbb, 0x3eb4, 0x3eb4, 0x3eb4, 0x3eb4, 0x3eb4,
- 0x3ed0, 0x3ffa, 0x4044, 0x409d, 0x40b1, 0x3eb4, 0x3eb4, 0x3eec,
- 0x3ed0, 0x3eb4, 0x3eb4, 0x3f02, 0x413c, 0x415a, 0x3eb4, 0x3eec,
- 0x3eb4, 0x3eb4, 0x3eb4, 0x3eb4, 0x3f02, 0x415a, 0x7020, 0x2068,
- 0x1078, 0x1348, 0x007c, 0x700c, 0x0079, 0x3e5e, 0x3e63, 0x3e66,
- 0x3e76, 0x3e91, 0x3e91, 0x1078, 0x3d87, 0x007c, 0x127e, 0x8001,
- 0x700e, 0x7058, 0x007e, 0x1078, 0x4228, 0x0040, 0x3e73, 0x2091,
- 0x8000, 0x1078, 0x3d87, 0x0d7f, 0x0078, 0x3e7f, 0x127e, 0x8001,
- 0x700e, 0x1078, 0x4228, 0x7058, 0x2068, 0x7084, 0x705a, 0x6803,
- 0x0000, 0x6807, 0x0000, 0x6834, 0xa084, 0x00ff, 0xa08a, 0x001a,
- 0x00c8, 0x3e8e, 0x1079, 0x3e94, 0x127f, 0x007c, 0x127f, 0x1078,
- 0x3eb4, 0x007c, 0x007c, 0x007c, 0x3eb4, 0x3ed0, 0x3fa5, 0x3eb4,
- 0x3ed0, 0x3eb4, 0x3ed0, 0x3ed0, 0x3eb4, 0x3ed0, 0x3fa5, 0x3ed0,
- 0x3ed0, 0x3ed0, 0x3ed0, 0x3ed0, 0x3eb4, 0x3ed0, 0x3fa5, 0x3eb4,
- 0x3eb4, 0x3ed0, 0x3eb4, 0x3eb4, 0x3eb4, 0x3ed0, 0x007c, 0x007c,
- 0x007c, 0x007c, 0x007c, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084,
- 0x00ff, 0xc0d5, 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3b4c,
- 0x127f, 0x007c, 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0e5,
- 0x683a, 0x127e, 0x2091, 0x8000, 0x1078, 0x3b4c, 0x127f, 0x007c,
- 0x7007, 0x0001, 0x6838, 0xa084, 0x00ff, 0xc0ed, 0x683a, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x3b4c, 0x127f, 0x007c, 0x7007, 0x0001,
- 0x6838, 0xa084, 0x00ff, 0xc0dd, 0x683a, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x3b4c, 0x127f, 0x007c, 0x6834, 0x8007, 0xa084, 0x00ff,
- 0x0040, 0x3ec2, 0x8001, 0x00c0, 0x3ef9, 0x7007, 0x0001, 0x0078,
- 0x3f82, 0x7007, 0x0006, 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b,
- 0x3f82, 0x007c, 0x2d00, 0x7016, 0x701a, 0x20a9, 0x0004, 0xa080,
- 0x0024, 0x2098, 0x20a1, 0x77f8, 0x53a3, 0x6858, 0x7012, 0xa082,
- 0x0401, 0x00c8, 0x3ede, 0x6884, 0xa08a, 0x0003, 0x00c8, 0x3ede,
- 0xa080, 0x3f73, 0x2004, 0x70c6, 0x7010, 0xa015, 0x0040, 0x3f66,
- 0x1078, 0x1314, 0x00c0, 0x3f27, 0x7007, 0x000f, 0x007c, 0x2d00,
- 0x7022, 0x70c4, 0x2060, 0x6000, 0x6836, 0x6004, 0xad00, 0x7096,
- 0x6008, 0xa20a, 0x00c8, 0x3f36, 0xa00e, 0x2200, 0x7112, 0x620c,
- 0x8003, 0x800b, 0xa296, 0x0004, 0x0040, 0x3f3f, 0xa108, 0x719a,
- 0x810b, 0x719e, 0xae90, 0x0022, 0x1078, 0x137f, 0x7090, 0xa08e,
- 0x0100, 0x0040, 0x3f5a, 0xa086, 0x0200, 0x0040, 0x3f52, 0x7007,
- 0x0010, 0x007c, 0x7020, 0x2068, 0x1078, 0x1348, 0x7014, 0x2068,
- 0x0078, 0x3ede, 0x7020, 0x2068, 0x7018, 0x6802, 0x6807, 0x0000,
- 0x2d08, 0x2068, 0x6906, 0x711a, 0x0078, 0x3f1c, 0x7014, 0x2068,
- 0x7007, 0x0001, 0x6834, 0xa084, 0x00ff, 0xa086, 0x001e, 0x0040,
- 0x4177, 0x0078, 0x3f82, 0x3f76, 0x3f7a, 0x3f7e, 0x0002, 0x0011,
- 0x0007, 0x0004, 0x000a, 0x000f, 0x0005, 0x0006, 0x0012, 0x000f,
- 0x0005, 0x0006, 0x2009, 0x772c, 0x210c, 0x81ff, 0x00c0, 0x3f9f,
- 0x6838, 0xa084, 0x00ff, 0x683a, 0x6853, 0x0000, 0x1078, 0x3653,
- 0x00c0, 0x3f93, 0x007c, 0x1078, 0x3bdc, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x6c0a, 0x1078, 0x3b4c, 0x127f, 0x0078, 0x3f92, 0x2001,
- 0x0028, 0x2009, 0x0000, 0x0078, 0x3f93, 0x7018, 0x6802, 0x2d08,
- 0x2068, 0x6906, 0x711a, 0x7010, 0x8001, 0x7012, 0x0040, 0x3fb4,
- 0x7007, 0x0006, 0x0078, 0x3fba, 0x7014, 0x2068, 0x7007, 0x0001,
- 0x7048, 0x107a, 0x007c, 0x7007, 0x0001, 0x6944, 0x810f, 0xa18c,
- 0x00ff, 0x6848, 0xa084, 0x00ff, 0x20a9, 0x0001, 0xa096, 0x0001,
- 0x0040, 0x3fe4, 0x2009, 0x0000, 0x20a9, 0x007e, 0xa096, 0x0002,
- 0x0040, 0x3fe4, 0xa005, 0x00c0, 0x3ff7, 0x6944, 0x810f, 0xa18c,
- 0x00ff, 0x1078, 0x3806, 0x00c0, 0x3ff7, 0x067e, 0x6e50, 0x1078,
- 0x38cf, 0x067f, 0x0078, 0x3ff7, 0x047e, 0x2011, 0x770c, 0x2224,
- 0xc484, 0xc48c, 0x2412, 0x047f, 0x0c7e, 0x1078, 0x3806, 0x00c0,
- 0x3ff3, 0x1078, 0x3a4e, 0x8108, 0x00f0, 0x3fed, 0x0c7f, 0x1078,
- 0x1348, 0x007c, 0x127e, 0x2091, 0x8000, 0x7007, 0x0001, 0x2001,
- 0x7752, 0x2004, 0xd0a4, 0x0040, 0x403b, 0x2009, 0x0000, 0x1078,
- 0x4244, 0x6100, 0xd184, 0x0040, 0x4020, 0x6858, 0xa084, 0x00ff,
- 0x00c0, 0x403e, 0x6000, 0xd084, 0x0040, 0x403b, 0x6004, 0xa005,
- 0x00c0, 0x4041, 0x6003, 0x0000, 0x600b, 0x0000, 0x0078, 0x4038,
- 0x2011, 0x0001, 0x6860, 0xa005, 0x00c0, 0x4028, 0x2001, 0x001e,
- 0x8000, 0x6016, 0x6858, 0xa084, 0x00ff, 0x0040, 0x403b, 0x6006,
- 0x6858, 0x8007, 0xa084, 0x00ff, 0x0040, 0x403b, 0x600a, 0x6202,
- 0x127f, 0x0078, 0x4217, 0x127f, 0x0078, 0x420f, 0x127f, 0x0078,
- 0x4207, 0x127f, 0x0078, 0x420b, 0x127e, 0x2091, 0x8000, 0x7007,
- 0x0001, 0x2001, 0x7752, 0x2004, 0xd0a4, 0x0040, 0x409a, 0x2009,
- 0x0000, 0x1078, 0x4244, 0x6000, 0xa084, 0x0001, 0x0040, 0x409a,
- 0x6204, 0x6308, 0x6c48, 0xa484, 0x0003, 0x0040, 0x4072, 0x6958,
- 0xa18c, 0x00ff, 0x8001, 0x00c0, 0x406b, 0x2100, 0xa210, 0x0048,
- 0x4097, 0x0078, 0x4072, 0x8001, 0x00c0, 0x4097, 0x2100, 0xa212,
- 0x0048, 0x4097, 0xa484, 0x000c, 0x0040, 0x408c, 0x6958, 0x810f,
- 0xa18c, 0x00ff, 0xa082, 0x0004, 0x00c0, 0x4084, 0x2100, 0xa318,
- 0x0048, 0x4097, 0x0078, 0x408c, 0xa082, 0x0004, 0x00c0, 0x4097,
- 0x2100, 0xa31a, 0x0048, 0x4097, 0x6860, 0xa005, 0x0040, 0x4092,
- 0x8000, 0x6016, 0x6206, 0x630a, 0x127f, 0x0078, 0x4217, 0x127f,
- 0x0078, 0x4213, 0x127f, 0x0078, 0x420f, 0x127e, 0x2091, 0x8000,
- 0x7007, 0x0001, 0x2009, 0x0000, 0x1078, 0x4244, 0x6308, 0x8318,
- 0x0048, 0x40ae, 0x630a, 0x127f, 0x0078, 0x4225, 0x127f, 0x0078,
- 0x4213, 0x127e, 0x0c7e, 0x2091, 0x8000, 0x7007, 0x0001, 0x684c,
- 0xd0ac, 0x0040, 0x40c7, 0x2009, 0x0000, 0x0c7e, 0x1078, 0x46e1,
- 0x6000, 0x2001, 0xfcff, 0x6002, 0x0c7f, 0x0078, 0x40fe, 0x6858,
- 0xa005, 0x0040, 0x4113, 0x685c, 0xa065, 0x0040, 0x410f, 0x2001,
- 0x772c, 0x2004, 0xa005, 0x0040, 0x40d9, 0x1078, 0x6b6c, 0x0078,
- 0x40df, 0x6013, 0x0400, 0x2009, 0x0041, 0x1078, 0x5cfb, 0x6958,
- 0xa18c, 0xe600, 0xa186, 0x2000, 0x0040, 0x40f6, 0xa186, 0x0400,
- 0x0040, 0x40f6, 0x2009, 0x0000, 0x0c7e, 0x1078, 0x46e1, 0x6000,
- 0xa084, 0xfdff, 0x6002, 0x0c7f, 0x0078, 0x40fe, 0x027e, 0x2009,
- 0x0000, 0x2011, 0xfdff, 0x1078, 0x478a, 0x027f, 0x684c, 0xd0c4,
- 0x0040, 0x410b, 0x2009, 0x0000, 0x1078, 0x46e1, 0x6008, 0x8000,
- 0x0048, 0x410b, 0x600a, 0x0c7f, 0x127f, 0x0078, 0x4217, 0x0c7f,
- 0x127f, 0x0078, 0x420f, 0x6954, 0xa186, 0x002a, 0x00c0, 0x411f,
- 0x2001, 0x770c, 0x200c, 0xc194, 0x2102, 0x0078, 0x40fe, 0xa186,
- 0x0020, 0x0040, 0x4134, 0xa186, 0x0029, 0x00c0, 0x410f, 0x6944,
- 0xa18c, 0xff00, 0x810f, 0x1078, 0x3806, 0x00c0, 0x40fe, 0x6000,
- 0xc0e4, 0x6002, 0x0078, 0x40fe, 0x685c, 0xa065, 0x0040, 0x410f,
- 0x6017, 0x0014, 0x0078, 0x40fe, 0x2009, 0x0000, 0x1078, 0x4244,
- 0x6000, 0xa084, 0x0001, 0x0040, 0x4156, 0x2091, 0x8000, 0x6204,
- 0x8210, 0x0048, 0x4150, 0x6206, 0x2091, 0x8001, 0x0078, 0x4225,
- 0x2091, 0x8001, 0x6853, 0x0016, 0x0078, 0x421e, 0x6853, 0x0007,
- 0x0078, 0x421e, 0x6834, 0x8007, 0xa084, 0x00ff, 0x00c0, 0x4164,
- 0x1078, 0x3ec2, 0x0078, 0x4176, 0x2030, 0x8001, 0x00c0, 0x416e,
- 0x7007, 0x0001, 0x1078, 0x4177, 0x0078, 0x4176, 0x7007, 0x0006,
- 0x7012, 0x2d00, 0x7016, 0x701a, 0x704b, 0x4177, 0x007c, 0x0e7e,
- 0x2009, 0x772c, 0x210c, 0x81ff, 0x00c0, 0x41f9, 0x2009, 0x770c,
- 0x210c, 0xd194, 0x00c0, 0x4203, 0x6848, 0x2070, 0xae82, 0x7e00,
- 0x0048, 0x41e8, 0x2001, 0x7715, 0x2004, 0xae02, 0x00c8, 0x41e8,
- 0x2009, 0x0000, 0x1078, 0x4244, 0x6100, 0xa184, 0x0001, 0x0040,
- 0x41ce, 0xa184, 0x0100, 0x00c0, 0x41ec, 0xa184, 0x0200, 0x00c0,
- 0x41f0, 0x601c, 0xa005, 0x00c0, 0x41f4, 0x711c, 0xa186, 0x0006,
- 0x00c0, 0x41d3, 0x6853, 0x0000, 0x6803, 0x0000, 0x2d08, 0x127e,
- 0x2091, 0x8000, 0x7010, 0xa005, 0x00c0, 0x41c5, 0x7112, 0x7018,
- 0xa065, 0x0040, 0x41f8, 0x6000, 0xd0e4, 0x00c0, 0x41fd, 0x2e60,
- 0x1078, 0x46ea, 0x127f, 0x0e7f, 0x007c, 0x2068, 0x6800, 0xa005,
- 0x00c0, 0x41c5, 0x6902, 0x127f, 0x0e7f, 0x007c, 0x0e7f, 0x6853,
- 0x0006, 0x0078, 0x421e, 0x6944, 0xa18c, 0xff00, 0x810f, 0x1078,
- 0x3806, 0x00c0, 0x41fe, 0x6000, 0xd0e4, 0x00c0, 0x41fe, 0x711c,
- 0xa186, 0x0007, 0x00c0, 0x41e8, 0x6853, 0x0002, 0x0078, 0x4200,
- 0x6853, 0x0008, 0x0078, 0x4200, 0x6853, 0x000e, 0x0078, 0x4200,
- 0x6853, 0x0017, 0x0078, 0x4200, 0x6853, 0x0035, 0x0078, 0x4200,
- 0x127f, 0x6853, 0x0028, 0x0078, 0x4200, 0x127f, 0x6853, 0x0029,
- 0x0e7f, 0x0078, 0x421e, 0x6853, 0x002a, 0x0078, 0x4200, 0x2009,
- 0x003e, 0x0078, 0x4219, 0x2009, 0x0004, 0x0078, 0x4219, 0x2009,
- 0x0006, 0x0078, 0x4219, 0x2009, 0x0016, 0x0078, 0x4219, 0x2009,
- 0x0001, 0x6854, 0xa084, 0xff00, 0xa105, 0x6856, 0x2091, 0x8000,
- 0x1078, 0x3b4c, 0x2091, 0x8001, 0x007c, 0x1078, 0x1348, 0x007c,
- 0x702c, 0x7130, 0x8108, 0xa102, 0x0048, 0x4235, 0xa00e, 0x7034,
- 0x7072, 0x7038, 0x7076, 0x0078, 0x4241, 0x7070, 0xa080, 0x0040,
- 0x7072, 0x00c8, 0x4241, 0x7074, 0xa081, 0x0000, 0x7076, 0xa085,
- 0x0001, 0x7932, 0x7132, 0x007c, 0x0d7e, 0x1078, 0x46e1, 0x0d7f,
- 0x007c, 0x0d7e, 0x2011, 0x0004, 0x2204, 0xa085, 0x8002, 0x2012,
- 0x0d7f, 0x007c, 0x20e1, 0x0002, 0x3d08, 0x20e1, 0x2000, 0x3d00,
- 0xa084, 0x7000, 0x0040, 0x4260, 0xa086, 0x1000, 0x00c0, 0x427c,
- 0x20e1, 0x0004, 0x3d60, 0xd1bc, 0x00c0, 0x4267, 0x3e60, 0xac84,
- 0x0007, 0x00c0, 0x427c, 0xac82, 0x7e00, 0x0048, 0x427c, 0x6854,
- 0xac02, 0x00c8, 0x427c, 0x2009, 0x0047, 0x1078, 0x5cfb, 0x7a1c,
- 0xd284, 0x00c0, 0x4252, 0x007c, 0xa016, 0x1078, 0x1572, 0x0078,
- 0x4277, 0x157e, 0x137e, 0x147e, 0x20e1, 0x3000, 0x3d20, 0x3e28,
- 0xa584, 0x0070, 0x00c0, 0x42aa, 0xa484, 0x7000, 0xa086, 0x1000,
- 0x00c0, 0x42aa, 0x1078, 0x42b7, 0x0040, 0x42aa, 0x20e1, 0x3000,
- 0x7828, 0x7828, 0x1078, 0x42d5, 0x147f, 0x137f, 0x157f, 0x2009,
- 0x793e, 0x2104, 0xa005, 0x00c0, 0x42a6, 0x007c, 0x1078, 0x4d50,
- 0x0078, 0x42a5, 0x1078, 0x762a, 0x1078, 0x42b7, 0x20e1, 0x3000,
- 0x7828, 0x7828, 0x147f, 0x137f, 0x157f, 0x0078, 0x42a5, 0xa484,
- 0x01ff, 0x687a, 0xa005, 0x0040, 0x42c9, 0xa080, 0x001f, 0xa084,
- 0x03f8, 0x80ac, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a, 0x53a5,
- 0x007c, 0x20a9, 0x000c, 0x20e1, 0x1000, 0x2ea0, 0x2099, 0x020a,
- 0x53a5, 0xa085, 0x0001, 0x0078, 0x42c8, 0x7000, 0xa084, 0xff00,
- 0xa08c, 0xf000, 0x8007, 0xa196, 0x0000, 0x00c0, 0x42e2, 0x0078,
- 0x4456, 0x007c, 0xa196, 0x2000, 0x00c0, 0x42f3, 0x6900, 0xa18e,
- 0x0001, 0x00c0, 0x42ef, 0x1078, 0x2e88, 0x0078, 0x42e1, 0x1078,
- 0x42fb, 0x0078, 0x42e1, 0xa196, 0x8000, 0x00c0, 0x42e1, 0x1078,
- 0x44dc, 0x0078, 0x42e1, 0x0c7e, 0x7110, 0xa18c, 0xff00, 0x810f,
- 0xa196, 0x0001, 0x0040, 0x4308, 0xa196, 0x0023, 0x00c0, 0x43fd,
- 0xa08e, 0x0023, 0x00c0, 0x4339, 0x1078, 0x4553, 0x0040, 0x43fd,
- 0x7124, 0x610a, 0x7030, 0xa08e, 0x0200, 0x00c0, 0x4321, 0x7034,
- 0xa005, 0x00c0, 0x43fd, 0x2009, 0x0015, 0x1078, 0x5cfb, 0x0078,
- 0x43fd, 0xa08e, 0x0210, 0x00c0, 0x432b, 0x2009, 0x0015, 0x1078,
- 0x5cfb, 0x0078, 0x43fd, 0xa08e, 0x0100, 0x00c0, 0x43fd, 0x7034,
- 0xa005, 0x00c0, 0x43fd, 0x2009, 0x0016, 0x1078, 0x5cfb, 0x0078,
- 0x43fd, 0xa08e, 0x0022, 0x00c0, 0x43fd, 0x7030, 0xa08e, 0x0300,
- 0x00c0, 0x434a, 0x7034, 0xa005, 0x00c0, 0x43fd, 0x2009, 0x0017,
- 0x0078, 0x43c9, 0xa08e, 0x0500, 0x00c0, 0x4356, 0x7034, 0xa005,
- 0x00c0, 0x43fd, 0x2009, 0x0018, 0x0078, 0x43c9, 0xa08e, 0x2010,
- 0x00c0, 0x435e, 0x2009, 0x0019, 0x0078, 0x43c9, 0xa08e, 0x2110,
- 0x00c0, 0x4366, 0x2009, 0x001a, 0x0078, 0x43c9, 0xa08e, 0x5200,
- 0x00c0, 0x4372, 0x7034, 0xa005, 0x00c0, 0x43fd, 0x2009, 0x001b,
- 0x0078, 0x43c9, 0xa08e, 0x5000, 0x00c0, 0x437e, 0x7034, 0xa005,
- 0x00c0, 0x43fd, 0x2009, 0x001c, 0x0078, 0x43c9, 0xa08e, 0x1200,
- 0x00c0, 0x438a, 0x7034, 0xa005, 0x00c0, 0x43fd, 0x2009, 0x0024,
- 0x0078, 0x43c9, 0xa08c, 0xff00, 0xa18e, 0x2400, 0x00c0, 0x4394,
- 0x2009, 0x002d, 0x0078, 0x43c9, 0xa08c, 0xff00, 0xa18e, 0x5300,
- 0x00c0, 0x439e, 0x2009, 0x002a, 0x0078, 0x43c9, 0xa08e, 0x0f00,
- 0x00c0, 0x43a6, 0x2009, 0x0020, 0x0078, 0x43c9, 0xa08e, 0x5300,
- 0x00c0, 0x43ac, 0x0078, 0x43c7, 0xa08e, 0x6104, 0x00c0, 0x43c7,
- 0x2011, 0x7c8d, 0x8208, 0x2204, 0xa082, 0x0004, 0x20a8, 0x95ac,
- 0x95ac, 0x2011, 0x8015, 0x211c, 0x8108, 0x2124, 0x1078, 0x2d20,
- 0x8108, 0x00f0, 0x43b9, 0x2009, 0x0023, 0x0078, 0x43c9, 0x2009,
- 0x001d, 0x017e, 0x2011, 0x7c83, 0x2204, 0x8211, 0x220c, 0x1078,
- 0x2059, 0x00c0, 0x43ff, 0x1078, 0x37cb, 0x00c0, 0x43ff, 0x6612,
- 0x6516, 0x86ff, 0x0040, 0x43ef, 0x017f, 0x017e, 0xa186, 0x0017,
- 0x00c0, 0x43ef, 0x6864, 0xa606, 0x00c0, 0x43ef, 0x6868, 0xa506,
- 0xa084, 0xff00, 0x00c0, 0x43ef, 0x6000, 0xc0f5, 0x6002, 0x0c7e,
- 0x1078, 0x5c6e, 0x0040, 0x4402, 0x017f, 0x611a, 0x601f, 0x0004,
- 0x7120, 0x610a, 0x017f, 0x1078, 0x5cfb, 0x0c7f, 0x007c, 0x017f,
- 0x0078, 0x43fd, 0x0c7f, 0x0078, 0x43ff, 0x0e7e, 0x0d7e, 0x2028,
- 0x2130, 0xa696, 0x00ff, 0x00c0, 0x4425, 0xa596, 0xfffd, 0x00c0,
- 0x4415, 0x2009, 0x007f, 0x0078, 0x4452, 0xa596, 0xfffe, 0x00c0,
- 0x441d, 0x2009, 0x007e, 0x0078, 0x4452, 0xa596, 0xfffc, 0x00c0,
- 0x4425, 0x2009, 0x0080, 0x0078, 0x4452, 0x2011, 0x0000, 0x2021,
- 0x007e, 0x20a9, 0x0082, 0x2071, 0x789e, 0x2e1c, 0x83ff, 0x00c0,
- 0x4437, 0x82ff, 0x00c0, 0x4446, 0x2410, 0x0078, 0x4446, 0x2368,
- 0x6b10, 0x007e, 0x2100, 0xa31e, 0x007f, 0x00c0, 0x4446, 0x6b14,
- 0xa31e, 0x00c0, 0x4446, 0x2408, 0x0078, 0x4452, 0x8420, 0x8e70,
- 0x00f0, 0x442d, 0x82ff, 0x00c0, 0x4451, 0xa085, 0x0001, 0x0078,
- 0x4453, 0x2208, 0xa006, 0x0d7f, 0x0e7f, 0x007c, 0xa084, 0x0007,
- 0x0079, 0x445b, 0x007c, 0x4463, 0x4463, 0x4463, 0x4463, 0x4463,
- 0x4464, 0x447d, 0x44c5, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x447c,
- 0x7120, 0x2160, 0xac8c, 0x0007, 0x00c0, 0x447c, 0xac8a, 0x7e00,
- 0x0048, 0x447c, 0x6854, 0xac02, 0x00c8, 0x447c, 0x7124, 0x610a,
- 0x2009, 0x0046, 0x1078, 0x5cfb, 0x007c, 0x0c7e, 0x7110, 0xd1bc,
- 0x00c0, 0x44c3, 0x2011, 0x7c83, 0x2204, 0x8211, 0x220c, 0x1078,
- 0x2059, 0x00c0, 0x44c3, 0x1078, 0x3806, 0x00c0, 0x44c3, 0x6204,
- 0xa294, 0xff00, 0x8217, 0xa286, 0x0006, 0x00c0, 0x44a8, 0x0c7e,
- 0x1078, 0x5c6e, 0x017f, 0x0040, 0x44c3, 0x611a, 0x601f, 0x0006,
- 0x7120, 0x610a, 0x2009, 0x0044, 0x1078, 0x5cfb, 0x0078, 0x44c3,
- 0x0c7e, 0x1078, 0x5c6e, 0x017f, 0x0040, 0x44c3, 0x611a, 0x601f,
- 0x0004, 0x7120, 0x610a, 0xa286, 0x0004, 0x00c0, 0x44bb, 0x6007,
- 0x0005, 0x0078, 0x44bd, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078,
- 0x4948, 0x1078, 0x4d50, 0x0c7f, 0x007c, 0x7110, 0xd1bc, 0x0040,
- 0x44db, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0, 0x44db, 0xac82,
- 0x7e00, 0x0048, 0x44db, 0x6854, 0xac02, 0x00c8, 0x44db, 0x2009,
- 0x0045, 0x1078, 0x5cfb, 0x007c, 0x7110, 0xa18c, 0xff00, 0x810f,
- 0xa18e, 0x0000, 0x00c0, 0x44ec, 0xa084, 0x000f, 0xa08a, 0x0006,
- 0x10c8, 0x12d5, 0x1079, 0x44ed, 0x007c, 0x44f3, 0x44f4, 0x44f3,
- 0x44f3, 0x4535, 0x4544, 0x007c, 0x7110, 0xd1bc, 0x00c0, 0x4534,
- 0x700c, 0x7108, 0x1078, 0x2059, 0x00c0, 0x4534, 0x1078, 0x37cb,
- 0x00c0, 0x4534, 0x6612, 0x6516, 0x6204, 0xa294, 0xff00, 0x8217,
- 0xa286, 0x0006, 0x00c0, 0x451d, 0x0c7e, 0x1078, 0x5c6e, 0x017f,
- 0x0040, 0x4534, 0x611a, 0x601f, 0x0005, 0x7120, 0x610a, 0x2009,
- 0x0088, 0x1078, 0x5cfb, 0x0078, 0x4534, 0x0c7e, 0x1078, 0x5c6e,
- 0x017f, 0x0040, 0x4534, 0x611a, 0x601f, 0x0004, 0x7120, 0x610a,
- 0xa286, 0x0004, 0x00c0, 0x4530, 0x2009, 0x0005, 0x0078, 0x4532,
- 0x2009, 0x0001, 0x1078, 0x5cfb, 0x007c, 0x7110, 0xd1bc, 0x0040,
- 0x4543, 0x1078, 0x4553, 0x0040, 0x4543, 0x7124, 0x610a, 0x2009,
- 0x0089, 0x1078, 0x5cfb, 0x007c, 0x7110, 0xd1bc, 0x0040, 0x4552,
- 0x1078, 0x4553, 0x0040, 0x4552, 0x7124, 0x610a, 0x2009, 0x008a,
- 0x1078, 0x5cfb, 0x007c, 0x7020, 0x2060, 0xac84, 0x0007, 0x00c0,
- 0x4566, 0xac82, 0x7e00, 0x0048, 0x4566, 0x2001, 0x7715, 0x2004,
- 0xac02, 0x00c8, 0x4566, 0xa085, 0x0001, 0x007c, 0xa006, 0x0078,
- 0x4565, 0x2071, 0x7949, 0x7003, 0x0003, 0x700f, 0x0361, 0xa006,
- 0x701a, 0x7012, 0x7017, 0x7e00, 0x7007, 0x0000, 0x7026, 0x702b,
- 0x5663, 0x7032, 0x7037, 0x56a4, 0x703b, 0x0002, 0x703f, 0x0000,
- 0x007c, 0x2071, 0x7949, 0x00e0, 0x4630, 0x2091, 0x6000, 0x700c,
- 0x8001, 0x700e, 0x00c0, 0x45f9, 0x700f, 0x0361, 0x7007, 0x0001,
- 0x127e, 0x2091, 0x8000, 0x7138, 0x8109, 0x713a, 0x00c0, 0x45f7,
- 0x703b, 0x0002, 0x2009, 0x0100, 0x2104, 0xa082, 0x0003, 0x00c8,
- 0x45f7, 0x703c, 0xa086, 0x0001, 0x00c0, 0x45d4, 0x0d7e, 0x2069,
- 0x0140, 0x6804, 0xa084, 0x4000, 0x0040, 0x45b2, 0x6803, 0x1000,
- 0x0078, 0x45b9, 0x6804, 0xa084, 0x1000, 0x0040, 0x45b9, 0x6803,
- 0x0100, 0x6803, 0x0000, 0x703f, 0x0000, 0x2069, 0x7936, 0x6804,
- 0xa082, 0x0006, 0x00c0, 0x45c6, 0x6807, 0x0000, 0x6830, 0xa082,
- 0x0003, 0x00c0, 0x45cd, 0x6833, 0x0000, 0x1078, 0x4d50, 0x1078,
- 0x4e10, 0x0d7f, 0x0078, 0x45f7, 0x0d7e, 0x2069, 0x7700, 0x6944,
- 0x6860, 0xa102, 0x00c8, 0x45f6, 0x2069, 0x7936, 0x6804, 0xa086,
- 0x0000, 0x00c0, 0x45f6, 0x6830, 0xa086, 0x0000, 0x00c0, 0x45f6,
- 0x703f, 0x0001, 0x6807, 0x0006, 0x6833, 0x0003, 0x2069, 0x0100,
- 0x6830, 0x689e, 0x2069, 0x0140, 0x6803, 0x0600, 0x0d7f, 0x0078,
- 0x45fc, 0x127e, 0x2091, 0x8000, 0x7024, 0xa00d, 0x0040, 0x460d,
- 0x7020, 0x8001, 0x7022, 0x00c0, 0x460d, 0x7023, 0x0009, 0x8109,
- 0x7126, 0x00c0, 0x460d, 0x7028, 0x107a, 0x7030, 0xa00d, 0x0040,
- 0x461e, 0x702c, 0x8001, 0x702e, 0x00c0, 0x461e, 0x702f, 0x0009,
- 0x8109, 0x7132, 0x00c0, 0x461e, 0x7034, 0x107a, 0x7018, 0xa00d,
- 0x0040, 0x462f, 0x7008, 0x8001, 0x700a, 0x00c0, 0x462f, 0x700b,
- 0x0009, 0x8109, 0x711a, 0x00c0, 0x462f, 0x701c, 0x107a, 0x127f,
- 0x7004, 0x0079, 0x4633, 0x465a, 0x465b, 0x4677, 0x0e7e, 0x2071,
- 0x7949, 0x7018, 0xa005, 0x00c0, 0x4641, 0x711a, 0x721e, 0x700b,
- 0x0009, 0x0e7f, 0x007c, 0x0e7e, 0x007e, 0x2071, 0x7949, 0x701c,
- 0xa206, 0x00c0, 0x464d, 0x701a, 0x701e, 0x007f, 0x0e7f, 0x007c,
- 0x0e7e, 0x2071, 0x7949, 0x6088, 0xa102, 0x0048, 0x4658, 0x618a,
- 0x0e7f, 0x007c, 0x007c, 0x7110, 0x1078, 0x3806, 0x00c0, 0x466d,
- 0x6088, 0x8001, 0x0048, 0x466d, 0x608a, 0x00c0, 0x466d, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x4d50, 0x127f, 0x8108, 0xa182, 0x00ff,
- 0x0048, 0x4675, 0xa00e, 0x7007, 0x0002, 0x7112, 0x007c, 0x7014,
- 0x2060, 0x127e, 0x2091, 0x8000, 0x6014, 0xa005, 0x0040, 0x46a6,
- 0x8001, 0x6016, 0x00c0, 0x46a6, 0x611c, 0xa186, 0x0003, 0x0040,
- 0x468d, 0xa186, 0x0006, 0x00c0, 0x46a4, 0x6010, 0x2068, 0x6854,
- 0xa08a, 0x199a, 0x0048, 0x46a4, 0xa082, 0x1999, 0x6856, 0xa08a,
- 0x199a, 0x0048, 0x469d, 0x2001, 0x1999, 0x8003, 0x800b, 0x810b,
- 0xa108, 0x6116, 0x0078, 0x46a6, 0x1078, 0x688e, 0x127f, 0xac88,
- 0x0008, 0x7116, 0x2001, 0x7716, 0x2004, 0xa102, 0x0048, 0x46b4,
- 0x7017, 0x7e00, 0x7007, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7949,
- 0x7027, 0x07d0, 0x7023, 0x0009, 0x703b, 0x0002, 0x0e7f, 0x007c,
- 0x2001, 0x7952, 0x2003, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7949,
- 0x7033, 0x07d0, 0x702f, 0x0009, 0x0e7f, 0x007c, 0x2011, 0x7955,
- 0x2013, 0x0000, 0x007c, 0x0e7e, 0x2071, 0x7949, 0x711a, 0x721e,
- 0x700b, 0x0009, 0x0e7f, 0x007c, 0x0c7e, 0x2061, 0x79da, 0x0c7f,
- 0x007c, 0xa184, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x79da,
- 0x2060, 0x007c, 0x6854, 0xa08a, 0x199a, 0x0048, 0x46f1, 0x2001,
- 0x1999, 0xa005, 0x00c0, 0x4701, 0x6944, 0x0c7e, 0x1078, 0x46e1,
- 0x6014, 0x0c7f, 0xa005, 0x00c0, 0x4706, 0x2001, 0x001e, 0x0078,
- 0x4706, 0xa08e, 0xffff, 0x00c0, 0x4706, 0xa006, 0x8003, 0x800b,
- 0x810b, 0xa108, 0x6116, 0x684c, 0xa08c, 0x00c0, 0xa18e, 0x00c0,
- 0x0040, 0x4741, 0xd0b4, 0x00c0, 0x471d, 0xd0bc, 0x00c0, 0x472f,
- 0x2009, 0x0006, 0x1078, 0x4764, 0x007c, 0xd0fc, 0x0040, 0x472a,
- 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x475d, 0xa08e, 0x0000,
- 0x00c0, 0x475d, 0x2009, 0x0043, 0x1078, 0x5cfb, 0x007c, 0xd0fc,
- 0x0040, 0x473c, 0xa084, 0x0003, 0xa08e, 0x0003, 0x0040, 0x475d,
- 0xa08e, 0x0000, 0x00c0, 0x475d, 0x2009, 0x0042, 0x1078, 0x5cfb,
- 0x007c, 0xd0fc, 0x0040, 0x4753, 0xa084, 0x0003, 0xa08e, 0x0003,
- 0x0040, 0x475d, 0xa08e, 0x0002, 0x0040, 0x4757, 0x2009, 0x0041,
- 0x1078, 0x5cfb, 0x007c, 0x1078, 0x4762, 0x0078, 0x4752, 0x2009,
- 0x0043, 0x1078, 0x5cfb, 0x0078, 0x4752, 0x2009, 0x0004, 0x1078,
- 0x4764, 0x007c, 0x2009, 0x0001, 0x6010, 0xa0ec, 0xf000, 0x0040,
- 0x4789, 0x2068, 0x6952, 0x6800, 0x6012, 0xa186, 0x0001, 0x00c0,
- 0x4783, 0x694c, 0xa18c, 0x8100, 0xa18e, 0x8100, 0x00c0, 0x4783,
- 0x0c7e, 0x2009, 0x0000, 0x1078, 0x46e1, 0x6204, 0x8210, 0x0048,
- 0x4782, 0x6206, 0x0c7f, 0x1078, 0x3b4c, 0x6010, 0xa06d, 0x10c0,
- 0x46ea, 0x007c, 0x157e, 0x0c7e, 0x20a9, 0x0010, 0x2061, 0x79da,
- 0x6000, 0x81ff, 0x0040, 0x4797, 0xa205, 0x0078, 0x4798, 0xa204,
- 0x6002, 0xace0, 0x0008, 0x00f0, 0x4790, 0x0c7f, 0x157f, 0x007c,
- 0x6808, 0xa005, 0x0040, 0x47a8, 0x8001, 0x680a, 0xa085, 0x0001,
- 0x007c, 0x127e, 0x2091, 0x2200, 0x2079, 0x7936, 0x127f, 0x0d7e,
- 0x2069, 0x7936, 0x6803, 0x0005, 0x2069, 0x0004, 0x2d04, 0xa085,
- 0x8001, 0x206a, 0x0d7f, 0x007c, 0x0c7e, 0x6027, 0x0001, 0x7804,
- 0xa084, 0x0007, 0x0079, 0x47c4, 0x47ce, 0x47f3, 0x484e, 0x47d4,
- 0x47f3, 0x47cc, 0x47cc, 0x47cc, 0x1078, 0x12d5, 0x1078, 0x46c0,
- 0x1078, 0x4d50, 0x0c7f, 0x007c, 0x62c0, 0x82ff, 0x00c0, 0x47da,
- 0x0c7f, 0x007c, 0x2011, 0x351a, 0x1078, 0x4643, 0x7828, 0xa092,
- 0x0002, 0x00c8, 0x47e9, 0x8000, 0x782a, 0x1078, 0x354a, 0x0078,
- 0x47d8, 0x1078, 0x351a, 0x7807, 0x0003, 0x7827, 0x0000, 0x782b,
- 0x0000, 0x0078, 0x47d8, 0x1078, 0x46c0, 0x3c00, 0x007e, 0x2011,
- 0x0209, 0x20e1, 0x4000, 0x2214, 0x007f, 0x20e0, 0x82ff, 0x0040,
- 0x4811, 0x62c0, 0x82ff, 0x00c0, 0x4811, 0x782b, 0x0000, 0x7824,
- 0xa065, 0x1040, 0x12d5, 0x2009, 0x0013, 0x1078, 0x5cfb, 0x0c7f,
- 0x007c, 0x3900, 0xa082, 0x7a7a, 0x00c8, 0x4818, 0x1078, 0x5bfe,
- 0x0c7e, 0x7824, 0xa065, 0x1040, 0x12d5, 0x7804, 0xa086, 0x0004,
- 0x0040, 0x4893, 0x7828, 0xa092, 0x2710, 0x00c8, 0x482e, 0x8000,
- 0x782a, 0x0c7f, 0x1078, 0x5648, 0x0078, 0x480f, 0x6104, 0xa186,
- 0x0003, 0x00c0, 0x4845, 0x0e7e, 0x2071, 0x7700, 0x70c8, 0x0e7f,
- 0xd08c, 0x0040, 0x4845, 0x0c7e, 0x0e7e, 0x2061, 0x0100, 0x2071,
- 0x7700, 0x1078, 0x3553, 0x0e7f, 0x0c7f, 0x1078, 0x767d, 0x2009,
- 0x0014, 0x1078, 0x5cfb, 0x0c7f, 0x0078, 0x480f, 0x2001, 0x7952,
- 0x2003, 0x0000, 0x62c0, 0x82ff, 0x00c0, 0x4862, 0x782b, 0x0000,
- 0x7824, 0xa065, 0x1040, 0x12d5, 0x2009, 0x0013, 0x1078, 0x5d49,
- 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x3900, 0xa082, 0x7a7a, 0x00c8,
- 0x486b, 0x1078, 0x5bfe, 0x7824, 0xa005, 0x1040, 0x12d5, 0x781c,
- 0xa06d, 0x1040, 0x12d5, 0x6800, 0xc0dc, 0x6802, 0x7924, 0x2160,
- 0x1078, 0x5cd4, 0x693c, 0x81ff, 0x1040, 0x12d5, 0x8109, 0x693e,
- 0x6854, 0xa015, 0x0040, 0x4887, 0x7a1e, 0x0078, 0x4889, 0x7918,
- 0x791e, 0x7807, 0x0000, 0x7827, 0x0000, 0x0d7f, 0x0c7f, 0x1078,
- 0x4d50, 0x0078, 0x4860, 0x6104, 0xa186, 0x0002, 0x0040, 0x489e,
- 0xa186, 0x0004, 0x0040, 0x489e, 0x0078, 0x4822, 0x7808, 0xac06,
- 0x0040, 0x4822, 0x1078, 0x4c57, 0x1078, 0x4948, 0x0c7f, 0x1078,
- 0x4d50, 0x0078, 0x480f, 0x0c7e, 0x6027, 0x0002, 0x2011, 0x7955,
- 0x2013, 0x0000, 0x62c8, 0x82ff, 0x00c0, 0x48c5, 0x62c4, 0x82ff,
- 0x00c0, 0x48c5, 0x793c, 0xa1e5, 0x0000, 0x0040, 0x48c3, 0x2009,
- 0x0049, 0x1078, 0x5cfb, 0x0c7f, 0x007c, 0x3908, 0xa192, 0x7a7a,
- 0x00c8, 0x48cc, 0x1078, 0x5bfe, 0x6017, 0x0010, 0x793c, 0x81ff,
- 0x0040, 0x48c3, 0x7944, 0xa192, 0x7530, 0x00c8, 0x48eb, 0x8108,
- 0x7946, 0x1078, 0x46c5, 0x793c, 0xa188, 0x0007, 0x210c, 0xa18e,
- 0x0006, 0x00c0, 0x48e7, 0x6017, 0x0012, 0x0078, 0x48c3, 0x6017,
- 0x0016, 0x0078, 0x48c3, 0x037e, 0x2019, 0x0001, 0x1078, 0x583a,
- 0x037f, 0x1078, 0x767d, 0x793c, 0x2160, 0x2009, 0x004a, 0x1078,
- 0x5cfb, 0x0078, 0x48c3, 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091,
- 0x8000, 0x600f, 0x0000, 0x2c08, 0x2061, 0x7936, 0x6020, 0x8000,
- 0x6022, 0x6010, 0xa005, 0x0040, 0x4916, 0xa080, 0x0003, 0x2102,
- 0x6112, 0x127f, 0x0c7f, 0x017f, 0x007f, 0x007c, 0x6116, 0x6112,
- 0x0078, 0x4911, 0x0d7e, 0x2069, 0x7936, 0x6000, 0xd0d4, 0x0040,
- 0x492f, 0x6820, 0x8000, 0x6822, 0xa086, 0x0001, 0x00c0, 0x492a,
- 0x2c00, 0x681e, 0x6804, 0xa084, 0x0007, 0x0079, 0x4d58, 0xc0d5,
- 0x6002, 0x6818, 0xa005, 0x0040, 0x4941, 0x6056, 0x605b, 0x0000,
- 0x007e, 0x2c00, 0x681a, 0x0d7f, 0x685a, 0x2069, 0x7936, 0x0078,
- 0x4921, 0x6056, 0x605a, 0x2c00, 0x681a, 0x681e, 0x0078, 0x4921,
- 0x007e, 0x017e, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x600f, 0x0000,
- 0x2c08, 0x2061, 0x7936, 0x6020, 0x8000, 0x6022, 0x6008, 0xa005,
- 0x0040, 0x4963, 0xa080, 0x0003, 0x2102, 0x610a, 0x127f, 0x0c7f,
- 0x017f, 0x007f, 0x007c, 0x610e, 0x610a, 0x0078, 0x495e, 0x0c7e,
- 0x600f, 0x0000, 0x2c08, 0x2061, 0x7936, 0x6034, 0xa005, 0x0040,
- 0x4977, 0xa080, 0x0003, 0x2102, 0x6136, 0x0c7f, 0x007c, 0x613a,
- 0x6136, 0x0078, 0x4975, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e,
- 0x027e, 0x007e, 0x127e, 0x2071, 0x7936, 0x7638, 0x2660, 0x2678,
- 0x2091, 0x8000, 0x8cff, 0x0040, 0x49dd, 0x6018, 0xa080, 0x0028,
- 0x2004, 0xa206, 0x00c0, 0x49d8, 0x703c, 0xac06, 0x00c0, 0x499d,
- 0x6003, 0x000a, 0x630a, 0x0078, 0x49d8, 0x7038, 0xac36, 0x00c0,
- 0x49a3, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x49b1, 0x2c00,
- 0xaf36, 0x0040, 0x49af, 0x2f00, 0x7036, 0x0078, 0x49b1, 0x7037,
- 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x49ba, 0x7e0e,
- 0x0078, 0x49bb, 0x2678, 0x600f, 0x0000, 0x1078, 0x6a03, 0x0040,
- 0x49d3, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x49e6,
- 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x6c0a, 0x1078,
- 0x3b4c, 0x1078, 0x6b5f, 0x1078, 0x6b6c, 0x0c7f, 0x0078, 0x498a,
- 0x2c78, 0x600c, 0x2060, 0x0078, 0x498a, 0x127f, 0x007f, 0x027f,
- 0x067f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x49c8, 0x1078, 0x75b3, 0x0078, 0x49d3, 0x007e,
- 0x067e, 0x0c7e, 0x0d7e, 0x0f7e, 0x2031, 0x0000, 0x127e, 0x2091,
- 0x8000, 0x2079, 0x7936, 0x7838, 0xa065, 0x0040, 0x4a26, 0x600c,
- 0x007e, 0x600f, 0x0000, 0x783c, 0xac06, 0x00c0, 0x4a0d, 0x6003,
- 0x000a, 0x630a, 0x2c30, 0x0078, 0x4a23, 0x1078, 0x6a03, 0x0040,
- 0x4a21, 0x6010, 0x2068, 0x601c, 0xa086, 0x0003, 0x00c0, 0x4a2f,
- 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3b4c, 0x1078,
- 0x6b5f, 0x1078, 0x6b6c, 0x007f, 0x0078, 0x49fc, 0x7e3a, 0x7e36,
- 0x127f, 0x0f7f, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x601c,
- 0xa086, 0x0006, 0x00c0, 0x4a18, 0x1078, 0x75b3, 0x0078, 0x4a21,
- 0x027e, 0x1078, 0x4a4c, 0x1078, 0x4ae5, 0x027f, 0x007c, 0x0f7e,
- 0x127e, 0x2079, 0x7936, 0x2091, 0x8000, 0x1078, 0x4b7c, 0x1078,
- 0x4be4, 0x127f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7936, 0x7614,
- 0x2660, 0x2678, 0x8cff, 0x0040, 0x4ad4, 0x6018, 0xa080, 0x0028,
- 0x2004, 0xa206, 0x00c0, 0x4acf, 0x7024, 0xac06, 0x00c0, 0x4a92,
- 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4a8d, 0x1078, 0x5656,
- 0x68c3, 0x0000, 0x1078, 0x5b04, 0x7027, 0x0000, 0x037e, 0x2069,
- 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x4a82, 0x6803, 0x0100,
- 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4a8a,
- 0x6827, 0x0001, 0x037f, 0x0078, 0x4a92, 0x6003, 0x0009, 0x630a,
- 0x0078, 0x4acf, 0x7014, 0xac36, 0x00c0, 0x4a98, 0x660c, 0x7616,
- 0x7010, 0xac36, 0x00c0, 0x4aa6, 0x2c00, 0xaf36, 0x0040, 0x4aa4,
- 0x2f00, 0x7012, 0x0078, 0x4aa6, 0x7013, 0x0000, 0x660c, 0x067e,
- 0x2c00, 0xaf06, 0x0040, 0x4aaf, 0x7e0e, 0x0078, 0x4ab0, 0x2678,
- 0x600f, 0x0000, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x4ac8,
- 0x601c, 0xa086, 0x0003, 0x00c0, 0x4adc, 0x6837, 0x0103, 0x6b4a,
- 0x6847, 0x0000, 0x1078, 0x6c0a, 0x1078, 0x3b4c, 0x1078, 0x6b5f,
- 0x1078, 0x6b6c, 0x1078, 0x59d4, 0x0c7f, 0x0078, 0x4a5a, 0x2c78,
- 0x600c, 0x2060, 0x0078, 0x4a5a, 0x127f, 0x007f, 0x067f, 0x0c7f,
- 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0,
- 0x4abd, 0x1078, 0x75b3, 0x0078, 0x4ac8, 0x0c7e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0xa280, 0x7820, 0x2004, 0xa065, 0x0040, 0x4b78,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x067e, 0x2071, 0x7936, 0x6654, 0x7018,
- 0xac06, 0x00c0, 0x4afc, 0x761a, 0x701c, 0xac06, 0x00c0, 0x4b08,
- 0x86ff, 0x00c0, 0x4b07, 0x7018, 0x701e, 0x0078, 0x4b08, 0x761e,
- 0x6058, 0xa07d, 0x0040, 0x4b0d, 0x7e56, 0xa6ed, 0x0000, 0x0040,
- 0x4b13, 0x2f00, 0x685a, 0x6057, 0x0000, 0x605b, 0x0000, 0x6000,
- 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x377f, 0x0040, 0x4b74, 0x7624,
- 0x86ff, 0x0040, 0x4b64, 0xa680, 0x0004, 0x2004, 0xad06, 0x00c0,
- 0x4b64, 0x0d7e, 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x4b5b,
- 0x1078, 0x5656, 0x68c3, 0x0000, 0x1078, 0x5b04, 0x7027, 0x0000,
- 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x4b44,
- 0x6803, 0x0100, 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084,
- 0x0040, 0x4b4c, 0x6827, 0x0001, 0x037f, 0x0d7f, 0x0c7e, 0x603c,
- 0xa005, 0x0040, 0x4b55, 0x8001, 0x603e, 0x2660, 0x1078, 0x6b6c,
- 0x0c7f, 0x0078, 0x4b64, 0x0d7f, 0x0c7e, 0x2660, 0x6003, 0x0009,
- 0x630a, 0x0c7f, 0x0078, 0x4b1b, 0x8dff, 0x0040, 0x4b70, 0x6837,
- 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x6c0a, 0x1078, 0x3b4c,
- 0x1078, 0x59d4, 0x0078, 0x4b1b, 0x067f, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x127f, 0x007f, 0x0c7f, 0x007c, 0x007e, 0x067e, 0x0c7e, 0x0d7e,
- 0x2031, 0x0000, 0x7814, 0xa065, 0x0040, 0x4bd4, 0x600c, 0x007e,
- 0x600f, 0x0000, 0x7824, 0xac06, 0x00c0, 0x4bb9, 0x2069, 0x0100,
- 0x68c0, 0xa005, 0x0040, 0x4bb3, 0x1078, 0x5656, 0x68c3, 0x0000,
- 0x1078, 0x5b04, 0x7827, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
- 0xa384, 0x1000, 0x0040, 0x4ba8, 0x6803, 0x0100, 0x6803, 0x0000,
- 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x4bb0, 0x6827, 0x0001,
- 0x037f, 0x0078, 0x4bb9, 0x6003, 0x0009, 0x630a, 0x2c30, 0x0078,
- 0x4bd1, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x4bcd, 0x601c,
- 0xa086, 0x0003, 0x00c0, 0x4bdb, 0x6837, 0x0103, 0x6b4a, 0x6847,
- 0x0000, 0x1078, 0x3b4c, 0x1078, 0x6b5f, 0x1078, 0x6b6c, 0x1078,
- 0x59d4, 0x007f, 0x0078, 0x4b83, 0x7e16, 0x7e12, 0x0d7f, 0x0c7f,
- 0x067f, 0x007f, 0x007c, 0x601c, 0xa086, 0x0006, 0x00c0, 0x4bc4,
- 0x1078, 0x75b3, 0x0078, 0x4bcd, 0x007e, 0x067e, 0x0c7e, 0x0d7e,
- 0x7818, 0xa065, 0x0040, 0x4c50, 0x6054, 0x007e, 0x6057, 0x0000,
- 0x605b, 0x0000, 0x6000, 0xc0d4, 0xc0dc, 0x6002, 0x1078, 0x377f,
- 0x0040, 0x4c4d, 0x7e24, 0x86ff, 0x0040, 0x4c3f, 0xa680, 0x0004,
- 0x2004, 0xad06, 0x00c0, 0x4c3f, 0x0d7e, 0x2069, 0x0100, 0x68c0,
- 0xa005, 0x0040, 0x4c36, 0x1078, 0x5656, 0x68c3, 0x0000, 0x1078,
- 0x5b04, 0x7827, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04, 0xa384,
- 0x1000, 0x0040, 0x4c1f, 0x6803, 0x0100, 0x6803, 0x0000, 0x2069,
- 0x0100, 0x6824, 0xd084, 0x0040, 0x4c27, 0x6827, 0x0001, 0x037f,
- 0x0d7f, 0x0c7e, 0x603c, 0xa005, 0x0040, 0x4c30, 0x8001, 0x603e,
- 0x2660, 0x1078, 0x6b6c, 0x0c7f, 0x0078, 0x4c3f, 0x0d7f, 0x0c7e,
- 0x2660, 0x6003, 0x0009, 0x630a, 0x0c7f, 0x0078, 0x4bf6, 0x8dff,
- 0x0040, 0x4c49, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078,
- 0x3b4c, 0x1078, 0x59d4, 0x0078, 0x4bf6, 0x007f, 0x0078, 0x4be9,
- 0x781e, 0x781a, 0x0d7f, 0x0c7f, 0x067f, 0x007f, 0x007c, 0x0e7e,
- 0x0c7e, 0x2071, 0x7936, 0x7004, 0xa084, 0x0007, 0x0079, 0x4c60,
- 0x4c6a, 0x4c6d, 0x4c86, 0x4ca2, 0x4ce7, 0x4c6a, 0x4c6a, 0x4c68,
- 0x1078, 0x12d5, 0x0c7f, 0x0e7f, 0x007c, 0x7024, 0xa065, 0x0040,
- 0x4c7b, 0x7020, 0x8001, 0x7022, 0x600c, 0xa015, 0x0040, 0x4c82,
- 0x7216, 0x600f, 0x0000, 0x7007, 0x0000, 0x7027, 0x0000, 0x0c7f,
- 0x0e7f, 0x007c, 0x7216, 0x7212, 0x0078, 0x4c7b, 0x6018, 0x2060,
- 0x1078, 0x377f, 0x6000, 0xc0dc, 0x6002, 0x7020, 0x8001, 0x7022,
- 0x0040, 0x4c97, 0x6054, 0xa015, 0x0040, 0x4c9e, 0x721e, 0x7007,
- 0x0000, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7218, 0x721e,
- 0x0078, 0x4c97, 0x7024, 0xa065, 0x0040, 0x4ce4, 0x700c, 0xac06,
- 0x00c0, 0x4cb9, 0x1078, 0x59d4, 0x600c, 0xa015, 0x0040, 0x4cb5,
- 0x720e, 0x600f, 0x0000, 0x0078, 0x4ce2, 0x720e, 0x720a, 0x0078,
- 0x4ce2, 0x7014, 0xac06, 0x00c0, 0x4ccc, 0x1078, 0x59d4, 0x600c,
- 0xa015, 0x0040, 0x4cc8, 0x7216, 0x600f, 0x0000, 0x0078, 0x4ce2,
- 0x7216, 0x7212, 0x0078, 0x4ce2, 0x6018, 0x2060, 0x1078, 0x377f,
- 0x6000, 0xc0dc, 0x6002, 0x1078, 0x59d4, 0x701c, 0xa065, 0x0040,
- 0x4ce2, 0x6054, 0xa015, 0x0040, 0x4ce0, 0x721e, 0x0078, 0x4ce2,
- 0x7218, 0x721e, 0x7027, 0x0000, 0x0c7f, 0x0e7f, 0x007c, 0x7024,
- 0xa065, 0x0040, 0x4cf4, 0x1078, 0x59d4, 0x600c, 0xa015, 0x0040,
- 0x4cfb, 0x720e, 0x600f, 0x0000, 0x1078, 0x5b04, 0x7027, 0x0000,
- 0x0c7f, 0x0e7f, 0x007c, 0x720e, 0x720a, 0x0078, 0x4cf4, 0x0d7e,
- 0x2069, 0x7936, 0x6830, 0xa084, 0x0003, 0x0079, 0x4d07, 0x4d0d,
- 0x4d0f, 0x4d35, 0x4d0d, 0x1078, 0x12d5, 0x0d7f, 0x007c, 0x0c7e,
- 0x6840, 0xa086, 0x0001, 0x0040, 0x4d2b, 0x683c, 0xa065, 0x0040,
- 0x4d20, 0x600c, 0xa015, 0x0040, 0x4d27, 0x6a3a, 0x600f, 0x0000,
- 0x6833, 0x0000, 0x683f, 0x0000, 0x0c7f, 0x0d7f, 0x007c, 0x683a,
- 0x6836, 0x0078, 0x4d20, 0x6843, 0x0000, 0x6838, 0xa065, 0x0040,
- 0x4d20, 0x6003, 0x0003, 0x0078, 0x4d20, 0x0c7e, 0x6843, 0x0000,
- 0x6847, 0x0000, 0x683c, 0xa065, 0x0040, 0x4d4d, 0x600c, 0xa015,
- 0x0040, 0x4d49, 0x6a3a, 0x600f, 0x0000, 0x683f, 0x0000, 0x0078,
- 0x4d4d, 0x683f, 0x0000, 0x683a, 0x6836, 0x0c7f, 0x0d7f, 0x007c,
- 0x0d7e, 0x2069, 0x7936, 0x6804, 0xa084, 0x0007, 0x0079, 0x4d58,
- 0x4d62, 0x4dff, 0x4dff, 0x4dff, 0x4dff, 0x4e01, 0x4dff, 0x4d60,
- 0x1078, 0x12d5, 0x6820, 0xa005, 0x00c0, 0x4d68, 0x0d7f, 0x007c,
- 0x0c7e, 0x680c, 0xa065, 0x0040, 0x4d77, 0x6807, 0x0004, 0x6826,
- 0x682b, 0x0000, 0x1078, 0x4e47, 0x0c7f, 0x0d7f, 0x007c, 0x6814,
- 0xa065, 0x0040, 0x4d85, 0x6807, 0x0001, 0x6826, 0x682b, 0x0000,
- 0x1078, 0x4e47, 0x0c7f, 0x0d7f, 0x007c, 0x0e7e, 0x037e, 0x6a1c,
- 0xa2f5, 0x0000, 0x0040, 0x4dfa, 0x704c, 0xa00d, 0x0040, 0x4d94,
- 0x7088, 0xa005, 0x0040, 0x4dac, 0x7054, 0xa075, 0x0040, 0x4d9d,
- 0xa20e, 0x0040, 0x4dfa, 0x0078, 0x4da2, 0x6818, 0xa20e, 0x0040,
- 0x4dfa, 0x2070, 0x704c, 0xa00d, 0x0040, 0x4d94, 0x7088, 0xa005,
- 0x00c0, 0x4d94, 0x2e00, 0x681e, 0x733c, 0x7038, 0xa302, 0x00c8,
- 0x4d94, 0x1078, 0x5ca3, 0x0040, 0x4dfa, 0x8318, 0x733e, 0x6112,
- 0x2e10, 0x621a, 0xa180, 0x0015, 0x2004, 0xa08a, 0x199a, 0x0048,
- 0x4dc3, 0x2001, 0x1999, 0x8003, 0x801b, 0x831b, 0xa318, 0x6316,
- 0x037f, 0x0f7e, 0x2c78, 0x71a0, 0xd1bc, 0x0040, 0x4ddc, 0x7100,
- 0xd1f4, 0x0040, 0x4dd8, 0x7114, 0xa18c, 0x00ff, 0x0078, 0x4de1,
- 0x2009, 0x0000, 0x0078, 0x4de1, 0xa1e0, 0x2303, 0x2c0c, 0xa18c,
- 0x00ff, 0x2061, 0x0100, 0x619a, 0x1078, 0x5298, 0x7300, 0xc3dd,
- 0x7302, 0x6807, 0x0002, 0x2f18, 0x6b26, 0x682b, 0x0000, 0x781f,
- 0x0003, 0x7803, 0x0001, 0x7807, 0x0040, 0x0f7f, 0x0e7f, 0x0c7f,
- 0x0d7f, 0x007c, 0x037f, 0x0e7f, 0x0c7f, 0x0078, 0x4df8, 0x0d7f,
- 0x007c, 0x0c7e, 0x680c, 0xa065, 0x0040, 0x4e0d, 0x6807, 0x0004,
- 0x6826, 0x682b, 0x0000, 0x1078, 0x4e47, 0x0c7f, 0x0d7f, 0x007c,
- 0x0f7e, 0x0d7e, 0x2069, 0x7936, 0x6830, 0xa086, 0x0000, 0x00c0,
- 0x4e2e, 0x6838, 0xa07d, 0x0040, 0x4e2e, 0x6833, 0x0001, 0x683e,
- 0x6847, 0x0000, 0x127e, 0x0f7e, 0x2091, 0x2200, 0x027f, 0x1078,
- 0x1a24, 0x00c0, 0x4e31, 0x127f, 0x1078, 0x552b, 0x0d7f, 0x0f7f,
- 0x007c, 0x127f, 0x6843, 0x0000, 0x7803, 0x0002, 0x780c, 0xa015,
- 0x0040, 0x4e43, 0x6a3a, 0x780f, 0x0000, 0x6833, 0x0000, 0x683f,
- 0x0000, 0x0078, 0x4e2e, 0x683a, 0x6836, 0x0078, 0x4e3d, 0x601c,
- 0xa084, 0x000f, 0x1079, 0x4e4d, 0x007c, 0x4e56, 0x4e5b, 0x5162,
- 0x5258, 0x4e5b, 0x5162, 0x5258, 0x4e56, 0x4e5b, 0x1078, 0x4c57,
- 0x1078, 0x4d50, 0x007c, 0x157e, 0x137e, 0x147e, 0x0c7e, 0x0f7e,
- 0x6004, 0xa08a, 0x0030, 0x10c8, 0x12d5, 0x6118, 0x2178, 0x79a0,
- 0xd1bc, 0x0040, 0x4e78, 0x7900, 0xd1f4, 0x0040, 0x4e74, 0x7914,
- 0xa18c, 0x00ff, 0x0078, 0x4e7d, 0x2009, 0x0000, 0x0078, 0x4e7d,
- 0xa1f8, 0x2303, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100,
- 0x619a, 0x1079, 0x4e89, 0x0f7f, 0x0c7f, 0x147f, 0x137f, 0x157f,
- 0x007c, 0x4ebb, 0x4ef3, 0x4f0b, 0x4f8a, 0x4fb7, 0x4fbf, 0x4fe0,
- 0x4ff1, 0x5002, 0x500a, 0x501b, 0x500a, 0x5063, 0x4ff1, 0x5084,
- 0x508c, 0x5002, 0x508c, 0x509d, 0x4eb9, 0x4eb9, 0x4eb9, 0x4eb9,
- 0x4eb9, 0x4eb9, 0x4eb9, 0x4eb9, 0x4eb9, 0x4eb9, 0x4eb9, 0x4eb9,
- 0x5712, 0x5727, 0x574a, 0x576e, 0x4fe0, 0x4eb9, 0x4fe0, 0x500a,
- 0x4eb9, 0x4f0b, 0x4f8a, 0x4eb9, 0x5c1e, 0x500a, 0x4eb9, 0x5c41,
- 0x500a, 0x1078, 0x12d5, 0x20a1, 0x020b, 0x1078, 0x50b2, 0x20a3,
- 0x5200, 0x20a3, 0x0000, 0x0d7e, 0x2069, 0x7751, 0x6804, 0xd084,
- 0x0040, 0x4ed5, 0x6828, 0x20a3, 0x0000, 0x017e, 0x1078, 0x206e,
- 0x21a2, 0x017f, 0x0d7f, 0x0078, 0x4eda, 0x0d7f, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x20a9, 0x0004, 0x2099, 0x7705, 0x53a6, 0x20a9,
- 0x0004, 0x2099, 0x7701, 0x53a6, 0x20a3, 0x0000, 0x6030, 0xa084,
- 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c,
- 0x1078, 0x5642, 0x007c, 0x20a1, 0x020b, 0x1078, 0x50b2, 0x20a3,
- 0x0500, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x6030, 0xa084, 0x00ff,
- 0x20a2, 0x20a9, 0x0004, 0x2099, 0x7705, 0x53a6, 0x60c3, 0x0010,
- 0x1078, 0x5642, 0x007c, 0x20a1, 0x020b, 0x1078, 0x50b2, 0x7818,
- 0xa080, 0x0028, 0x2004, 0xa086, 0x007e, 0x00c0, 0x4f1e, 0x20a3,
- 0x0400, 0x620c, 0xc2b4, 0x620e, 0x0078, 0x4f20, 0x20a3, 0x0300,
- 0x20a3, 0x0000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa086, 0x007e,
- 0x00c0, 0x4f59, 0x2099, 0x7920, 0x33a6, 0x9398, 0x33a6, 0x9398,
- 0x3304, 0xa084, 0x3fff, 0x20a2, 0x9398, 0x33a6, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a9, 0x0004,
- 0x2099, 0x7705, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7701, 0x53a6,
- 0x20a9, 0x0010, 0x20a3, 0x0000, 0x00f0, 0x4f4a, 0x2099, 0x7928,
- 0x33a6, 0x20a9, 0x0007, 0x20a3, 0x0000, 0x00f0, 0x4f53, 0x0078,
- 0x4f79, 0x2099, 0x7920, 0x20a9, 0x0008, 0x53a6, 0x20a9, 0x0004,
- 0x2099, 0x7705, 0x53a6, 0x20a9, 0x0004, 0x2099, 0x7701, 0x53a6,
- 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4f6a, 0x20a9, 0x0008,
- 0x20a3, 0x0000, 0x00f0, 0x4f70, 0x2099, 0x7928, 0x20a9, 0x0008,
- 0x53a6, 0x20a9, 0x0008, 0x20a3, 0x0000, 0x00f0, 0x4f7b, 0x20a9,
- 0x000a, 0x20a3, 0x0000, 0x00f0, 0x4f81, 0x60c3, 0x0074, 0x1078,
- 0x5642, 0x007c, 0x20a1, 0x020b, 0x1078, 0x50b2, 0x20a3, 0x2010,
- 0x20a3, 0x0014, 0x20a3, 0x0800, 0x20a3, 0x2000, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x0f7e, 0x2079, 0x7751, 0x7904,
- 0x0f7f, 0xd1ac, 0x00c0, 0x4fa6, 0xa085, 0x0020, 0xd1a4, 0x0040,
- 0x4fab, 0xa085, 0x0010, 0xa085, 0x0002, 0x20a2, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x5642, 0x007c, 0x20a1,
- 0x020b, 0x1078, 0x50b2, 0x20a3, 0x5000, 0x0078, 0x4f20, 0x20a1,
- 0x020b, 0x1078, 0x50b2, 0x20a3, 0x2110, 0x20a3, 0x0014, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0014, 0x1078, 0x5642, 0x007c,
- 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0200, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x5642,
- 0x007c, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0100, 0x20a3,
- 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00, 0x60c3, 0x0008, 0x1078,
- 0x5642, 0x007c, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0200,
- 0x0078, 0x4f20, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0100,
- 0x20a3, 0x0000, 0x20a3, 0x0003, 0x7810, 0x20a2, 0x60c3, 0x0008,
- 0x1078, 0x5642, 0x007c, 0x0d7e, 0x20a1, 0x020b, 0x1078, 0x5129,
- 0x20a3, 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0800, 0x7818, 0x2068,
- 0x6894, 0xa086, 0x0014, 0x00c0, 0x5041, 0x6998, 0xa184, 0xc000,
- 0x00c0, 0x503d, 0xd1ec, 0x0040, 0x5039, 0x20a3, 0x2100, 0x0078,
- 0x5043, 0x20a3, 0x0100, 0x0078, 0x5043, 0x20a3, 0x0400, 0x0078,
- 0x5043, 0x20a3, 0x0700, 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2,
- 0x20a2, 0x0f7e, 0x2079, 0x7751, 0x7904, 0x0f7f, 0xd1ac, 0x00c0,
- 0x5053, 0xa085, 0x0020, 0xd1a4, 0x0040, 0x5058, 0xa085, 0x0010,
- 0xa085, 0x0002, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x0014, 0x1078,
- 0x5642, 0x0d7f, 0x007c, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3,
- 0x0210, 0x20a3, 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0100, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x60c3,
- 0x0014, 0x1078, 0x5642, 0x007c, 0x20a1, 0x020b, 0x1078, 0x5129,
- 0x20a3, 0x0200, 0x0078, 0x4ec1, 0x20a1, 0x020b, 0x1078, 0x5129,
- 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0x0003, 0x20a3, 0x2a00,
- 0x60c3, 0x0008, 0x1078, 0x5642, 0x007c, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0100, 0x20a3,
- 0x0000, 0x20a3, 0x000b, 0x20a3, 0x0000, 0x60c3, 0x0008, 0x1078,
- 0x5642, 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818,
- 0xa080, 0x0028, 0x2014, 0xa286, 0x007e, 0x00c0, 0x50c5, 0x20a3,
- 0x22ff, 0x20a3, 0xfffe, 0x0078, 0x50f3, 0xa286, 0x007f, 0x00c0,
- 0x50d0, 0x0d7e, 0x20a3, 0x22ff, 0x20a3, 0xfffd, 0x0078, 0x50e7,
- 0xd2bc, 0x0040, 0x50ef, 0xa286, 0x0080, 0x0d7e, 0x00c0, 0x50de,
- 0x20a3, 0x22ff, 0x20a3, 0xfffc, 0x0078, 0x50e7, 0xa2e8, 0x7820,
- 0x2d6c, 0x6810, 0xa085, 0x2200, 0x20a2, 0x6814, 0x20a2, 0x2069,
- 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x50f7, 0x20a3,
- 0x2200, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3,
- 0x0129, 0x20a3, 0x0000, 0x1078, 0x5631, 0x22a2, 0x20a3, 0x0000,
- 0x2fa2, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f,
- 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x20a3, 0x02ff,
- 0x2011, 0xfffc, 0x22a2, 0x0d7e, 0x2069, 0x7719, 0x2da6, 0x8d68,
- 0x2da6, 0x0d7f, 0x20a3, 0x2029, 0x20a3, 0x0000, 0x0078, 0x50fb,
- 0x20a3, 0x0100, 0x20a3, 0x0000, 0x20a3, 0xfc02, 0x20a3, 0x0000,
- 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
- 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x5148, 0x0d7e, 0xa0e8,
- 0x7820, 0x2d6c, 0x6810, 0xa085, 0x2300, 0x20a2, 0x6814, 0x20a2,
- 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x5150,
- 0x20a3, 0x2300, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
- 0x20a3, 0x0198, 0x20a3, 0x0000, 0x1078, 0x5631, 0x22a2, 0x20a3,
- 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x027f, 0x007c, 0x0c7e, 0x0f7e, 0x6004, 0xa08a, 0x0085, 0x1048,
- 0x12d5, 0xa08a, 0x008c, 0x10c8, 0x12d5, 0x6118, 0x2178, 0x79a0,
- 0xd1bc, 0x0040, 0x5180, 0x7900, 0xd1f4, 0x0040, 0x517c, 0x7914,
- 0xa18c, 0x00ff, 0x0078, 0x5185, 0x2009, 0x0000, 0x0078, 0x5185,
- 0xa1f8, 0x2303, 0x2f0c, 0xa18c, 0x00ff, 0x2c78, 0x2061, 0x0100,
- 0x619a, 0xa082, 0x0085, 0x1079, 0x5190, 0x0f7f, 0x0c7f, 0x007c,
- 0x5199, 0x51a4, 0x51be, 0x5197, 0x5197, 0x5197, 0x5199, 0x1078,
- 0x12d5, 0x147e, 0x20a1, 0x020b, 0x1078, 0x51d1, 0x60c3, 0x0000,
- 0x1078, 0x5642, 0x147f, 0x007c, 0x147e, 0x20a1, 0x020b, 0x1078,
- 0x51fe, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2, 0x2fa2,
- 0x20a3, 0x0000, 0x20a3, 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000,
- 0x60c3, 0x000c, 0x1078, 0x5642, 0x147f, 0x007c, 0x147e, 0x20a1,
- 0x020b, 0x1078, 0x522b, 0x20a3, 0x0003, 0x20a3, 0x0300, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x0004, 0x1078, 0x5642, 0x147f,
- 0x007c, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080,
- 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x51f0, 0x0d7e, 0xa0e8,
- 0x7820, 0x2d6c, 0x6810, 0xa085, 0x8100, 0x20a2, 0x6814, 0x20a2,
- 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x51f8,
- 0x20a3, 0x8100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
- 0x20a3, 0x0009, 0x20a3, 0x0000, 0x0078, 0x50fb, 0x027e, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xa092,
- 0x007e, 0x0048, 0x521d, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810,
- 0xa085, 0x8400, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6,
- 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x5225, 0x20a3, 0x8400, 0x6298,
- 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3,
- 0x0000, 0x0078, 0x5154, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000,
- 0x7818, 0xa080, 0x0028, 0x2004, 0xa092, 0x007e, 0x0048, 0x524a,
- 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, 0xa085, 0x8500, 0x20a2,
- 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f,
- 0x0078, 0x5252, 0x20a3, 0x8500, 0x6298, 0x22a2, 0x20a3, 0x0000,
- 0x6230, 0x22a2, 0x20a3, 0x00d1, 0x20a3, 0x0000, 0x0078, 0x5154,
- 0x0c7e, 0x0f7e, 0x2c78, 0x7804, 0xa08a, 0x0040, 0x1048, 0x12d5,
- 0xa08a, 0x0050, 0x10c8, 0x12d5, 0x7918, 0x2160, 0x61a0, 0xd1bc,
- 0x0040, 0x5277, 0x6100, 0xd1f4, 0x0040, 0x5273, 0x6114, 0xa18c,
- 0x00ff, 0x0078, 0x527c, 0x2009, 0x0000, 0x0078, 0x527c, 0xa1e0,
- 0x2303, 0x2c0c, 0xa18c, 0x00ff, 0x2061, 0x0100, 0x619a, 0xa082,
- 0x0040, 0x1079, 0x5286, 0x0f7f, 0x0c7f, 0x007c, 0x5298, 0x537e,
- 0x5326, 0x54a6, 0x5296, 0x5296, 0x5296, 0x5296, 0x5296, 0x5296,
- 0x5296, 0x58ed, 0x58fe, 0x590f, 0x5920, 0x5296, 0x1078, 0x12d5,
- 0x0d7e, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x52e9, 0x7910,
- 0x2168, 0x6948, 0x21a2, 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x694c,
- 0xa184, 0x0006, 0x8004, 0x20a2, 0xd1ac, 0x0040, 0x52b3, 0x20a3,
- 0x0002, 0x0078, 0x52bf, 0xd1b4, 0x0040, 0x52ba, 0x20a3, 0x0001,
- 0x0078, 0x52bf, 0x20a3, 0x0000, 0x2230, 0x0078, 0x52c1, 0x6a80,
- 0x6e7c, 0x20a9, 0x0008, 0xad80, 0x0017, 0x200c, 0x810f, 0x21a2,
- 0x8000, 0x00f0, 0x52c5, 0x22a2, 0x26a2, 0x60c3, 0x0020, 0x20e1,
- 0x9080, 0x6014, 0xa084, 0x0004, 0xa085, 0x0009, 0x6016, 0x2001,
- 0x7952, 0x2003, 0x07d0, 0x2001, 0x7951, 0x2003, 0x0009, 0x2001,
- 0x7957, 0x2003, 0x0002, 0x1078, 0x1504, 0x147f, 0x157f, 0x0d7f,
- 0x007c, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7a18, 0xa280, 0x0023,
- 0x2014, 0x8210, 0xa294, 0x00ff, 0x2202, 0x8217, 0x7818, 0xa080,
- 0x0028, 0x2004, 0xd0bc, 0x0040, 0x530f, 0x0d7e, 0xa0e8, 0x7820,
- 0x2d6c, 0x6810, 0xa085, 0x0600, 0x20a2, 0x6814, 0x20a2, 0x2069,
- 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x5317, 0x20a3,
- 0x0600, 0x6198, 0x21a2, 0x20a3, 0x0000, 0x6130, 0x21a2, 0x20a3,
- 0x0829, 0x20a3, 0x0000, 0x22a2, 0x20a3, 0x0000, 0x2fa2, 0x20a3,
- 0xffff, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x007c, 0x0d7e, 0x157e,
- 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x5346, 0x7810, 0x2068,
- 0x6860, 0x20a2, 0x685c, 0x20a2, 0x6880, 0x20a2, 0x687c, 0x20a2,
- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x60c3, 0x000c, 0x1078,
- 0x5642, 0x147f, 0x137f, 0x157f, 0x0d7f, 0x007c, 0x027e, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc,
- 0x0040, 0x5364, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, 0xa085,
- 0x0500, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, 0x8d68,
- 0x2da6, 0x0d7f, 0x0078, 0x536c, 0x20a3, 0x0500, 0x6298, 0x22a2,
- 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0889, 0x20a3, 0x0000,
- 0x1078, 0x5631, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e,
- 0x137e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x546e, 0x7810, 0x2068,
- 0xa016, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x7810, 0xa084,
- 0xf000, 0x00c0, 0x539b, 0x7810, 0xa084, 0x0700, 0x8007, 0x1079,
- 0x53a3, 0x0078, 0x539e, 0xa006, 0x1079, 0x53a3, 0x147f, 0x137f,
- 0x157f, 0x0d7f, 0x007c, 0x53ad, 0x540f, 0x5413, 0x5436, 0x5443,
- 0x5455, 0x5459, 0x53ab, 0x1078, 0x12d5, 0x017e, 0x037e, 0x694c,
- 0xa18c, 0x0003, 0xa186, 0x0000, 0x00c0, 0x53c0, 0x6b78, 0x23a2,
- 0x6868, 0x20a2, 0x6864, 0x20a2, 0x037f, 0x017f, 0x0078, 0x543a,
- 0xa186, 0x0001, 0x00c0, 0x540a, 0x6b78, 0x23a2, 0x6868, 0x20a2,
- 0x6864, 0x20a2, 0x22a2, 0x6874, 0x20a2, 0x22a2, 0x687c, 0x20a2,
- 0x2009, 0x0018, 0xa384, 0x0300, 0x0040, 0x5409, 0xd3c4, 0x0040,
- 0x53db, 0x687c, 0xa108, 0xd3cc, 0x0040, 0x53e0, 0x6874, 0xa108,
- 0x157e, 0x20a9, 0x000d, 0xad80, 0x0020, 0x201c, 0x831f, 0x23a2,
- 0x8000, 0x00f0, 0x53e5, 0x157f, 0x22a2, 0x22a2, 0x22a2, 0xa184,
- 0x0003, 0x0040, 0x5409, 0x20a1, 0x020b, 0x20e1, 0x9080, 0x20e1,
- 0x4000, 0x20a3, 0x0700, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230,
- 0x22a2, 0x20a3, 0x0898, 0x20a2, 0x1078, 0x5631, 0x22a2, 0x20a3,
- 0x0000, 0x61c2, 0x037f, 0x017f, 0x1078, 0x5642, 0x007c, 0x20a3,
- 0x0008, 0x0078, 0x5438, 0x20a3, 0x0302, 0x22a2, 0x22a2, 0x22a2,
- 0x20a3, 0x0012, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2,
- 0x22a2, 0x20a3, 0x7000, 0x20a3, 0x0500, 0x22a2, 0x20a3, 0x000a,
- 0x22a2, 0x22a2, 0x20a3, 0x2500, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x22a2, 0x60c3, 0x0032, 0x1078, 0x5642, 0x007c, 0x20a3, 0x0028,
- 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0018,
- 0x1078, 0x5642, 0x007c, 0x20a3, 0x0100, 0x22a2, 0x22a2, 0x22a2,
- 0x22a2, 0x22a2, 0x20a3, 0x0008, 0x22a2, 0x22a2, 0x22a2, 0x22a2,
- 0x60c3, 0x0020, 0x1078, 0x5642, 0x007c, 0x20a3, 0x0008, 0x0078,
- 0x5438, 0x037e, 0x7b10, 0xa384, 0xff00, 0x7812, 0xa384, 0x00ff,
- 0x8001, 0x00c0, 0x5467, 0x22a2, 0x037f, 0x0078, 0x5438, 0x20a3,
- 0x0800, 0x22a2, 0x20a2, 0x037f, 0x0078, 0x543a, 0x027e, 0x20e1,
- 0x9080, 0x20e1, 0x4000, 0x7818, 0xa080, 0x0028, 0x2004, 0xd0bc,
- 0x0040, 0x548c, 0x0d7e, 0xa0e8, 0x7820, 0x2d6c, 0x6810, 0xa085,
- 0x0700, 0x20a2, 0x6814, 0x20a2, 0x2069, 0x7719, 0x2da6, 0x8d68,
- 0x2da6, 0x0d7f, 0x0078, 0x5494, 0x20a3, 0x0700, 0x6298, 0x22a2,
- 0x20a3, 0x0000, 0x6230, 0x22a2, 0x20a3, 0x0898, 0x20a3, 0x0000,
- 0x1078, 0x5631, 0x22a2, 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2,
- 0x20a3, 0x0000, 0x20a3, 0x0000, 0x027f, 0x007c, 0x0d7e, 0x157e,
- 0x137e, 0x147e, 0x017e, 0x037e, 0x7810, 0xa084, 0x0700, 0x8007,
- 0x1079, 0x54b9, 0x037f, 0x017f, 0x147f, 0x137f, 0x157f, 0x0d7f,
- 0x007c, 0x54c1, 0x54c1, 0x54c3, 0x54c1, 0x54c1, 0x54c1, 0x54e8,
- 0x54c1, 0x1078, 0x12d5, 0x7910, 0xa18c, 0xf8ff, 0xa18d, 0x0600,
- 0x7912, 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x54f2, 0x0d7e,
- 0x2069, 0x7751, 0x6804, 0xd0bc, 0x0040, 0x54dd, 0x682c, 0xa084,
- 0x00ff, 0x8007, 0x20a2, 0x0078, 0x54df, 0x20a3, 0x3f00, 0x0d7f,
- 0x22a2, 0x22a2, 0x22a2, 0x60c3, 0x0001, 0x1078, 0x5642, 0x007c,
- 0x20a1, 0x020b, 0x2009, 0x0003, 0x1078, 0x54f2, 0x20a3, 0x7f00,
- 0x0078, 0x54e0, 0x027e, 0x20e1, 0x9080, 0x20e1, 0x4000, 0x7818,
- 0xa080, 0x0028, 0x2004, 0xd0bc, 0x0040, 0x5510, 0x0d7e, 0xa0e8,
- 0x7820, 0x2d6c, 0x6810, 0xa085, 0x0100, 0x20a2, 0x6814, 0x20a2,
- 0x2069, 0x7719, 0x2da6, 0x8d68, 0x2da6, 0x0d7f, 0x0078, 0x5518,
- 0x20a3, 0x0100, 0x6298, 0x22a2, 0x20a3, 0x0000, 0x6230, 0x22a2,
- 0x20a3, 0x0888, 0xa18d, 0x0008, 0x21a2, 0x1078, 0x5631, 0x22a2,
- 0x20a3, 0x0000, 0x7a08, 0x22a2, 0x2fa2, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x027f, 0x007c, 0x0e7e, 0x0d7e, 0x0c7e, 0x057e, 0x047e,
- 0x037e, 0x2061, 0x0100, 0x2071, 0x7700, 0x6130, 0x7818, 0x2068,
- 0x68a0, 0x2028, 0xd0bc, 0x00c0, 0x5544, 0xa080, 0x2303, 0x2014,
- 0xa294, 0x00ff, 0x0078, 0x5548, 0x6910, 0x6a14, 0x7364, 0x7468,
- 0x781c, 0xa086, 0x0006, 0x0040, 0x559c, 0xd5bc, 0x0040, 0x5558,
- 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x555e,
- 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0809,
- 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007,
- 0x607a, 0x607f, 0x0000, 0x2f00, 0x6082, 0x7808, 0x6086, 0x7810,
- 0x2070, 0x7014, 0x608a, 0x7010, 0x608e, 0x700c, 0x60c6, 0x7008,
- 0x60ca, 0x686c, 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7,
- 0x0000, 0xa582, 0x0080, 0x0048, 0x5590, 0x6a00, 0xd2f4, 0x0040,
- 0x558e, 0x6a14, 0xa294, 0x00ff, 0x0078, 0x5590, 0x2011, 0x0000,
- 0x629e, 0x6017, 0x0016, 0x1078, 0x46c5, 0x037f, 0x047f, 0x057f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0x7810, 0x2070, 0x704c, 0xa084,
- 0x0003, 0xa086, 0x0002, 0x0040, 0x55eb, 0xd5bc, 0x0040, 0x55b0,
- 0xa185, 0x0100, 0x6062, 0x6266, 0x636a, 0x646e, 0x0078, 0x55b6,
- 0x6063, 0x0100, 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0880,
- 0x6077, 0x0008, 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007,
- 0x607a, 0x607f, 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7060,
- 0x608a, 0x705c, 0x608e, 0x7080, 0x60c6, 0x707c, 0x60ca, 0x686c,
- 0x60ce, 0x60ab, 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582,
- 0x0080, 0x0048, 0x55e6, 0x6a00, 0xd2f4, 0x0040, 0x55e4, 0x6a14,
- 0xa294, 0x00ff, 0x0078, 0x55e6, 0x2011, 0x0000, 0x629e, 0x6017,
- 0x0012, 0x0078, 0x5593, 0xd5bc, 0x0040, 0x55f6, 0xa185, 0x0700,
- 0x20a2, 0x6266, 0x636a, 0x646e, 0x0078, 0x55fc, 0x6063, 0x0700,
- 0x6266, 0x606b, 0x0000, 0x616e, 0x6073, 0x0898, 0x6077, 0x0000,
- 0x688c, 0x8000, 0xa084, 0x00ff, 0x688e, 0x8007, 0x607a, 0x607f,
- 0x0000, 0x2f00, 0x6086, 0x7808, 0x6082, 0x7014, 0x608a, 0x7010,
- 0x608e, 0x700c, 0x60c6, 0x7008, 0x60ca, 0x686c, 0x60ce, 0x60ab,
- 0x0036, 0x60af, 0x95d5, 0x60d7, 0x0000, 0xa582, 0x0080, 0x0048,
- 0x562c, 0x6a00, 0xd2f4, 0x0040, 0x562a, 0x6a14, 0xa294, 0x00ff,
- 0x0078, 0x562c, 0x2011, 0x0000, 0x629e, 0x6017, 0x0016, 0x0078,
- 0x5593, 0x7a18, 0xa280, 0x0023, 0x2014, 0x8210, 0xa294, 0x00ff,
- 0x2202, 0x8217, 0x007c, 0x0d7e, 0x2069, 0x7936, 0x6843, 0x0001,
- 0x0d7f, 0x007c, 0x20e1, 0x9080, 0x60a3, 0x0056, 0x60a7, 0x9575,
- 0x1078, 0x564d, 0x1078, 0x46b5, 0x007c, 0x007e, 0x6014, 0xa084,
- 0x0004, 0xa085, 0x0009, 0x6016, 0x007f, 0x007c, 0x007e, 0x0c7e,
- 0x2061, 0x0100, 0x6014, 0xa084, 0x0004, 0xa085, 0x0008, 0x6016,
- 0x0c7f, 0x007f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x027e, 0x1078,
- 0x46c0, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000,
- 0x0040, 0x56a0, 0x1078, 0x5656, 0x6803, 0x1000, 0x6803, 0x0000,
- 0x0c7e, 0x2061, 0x7936, 0x6128, 0xa192, 0x0002, 0x00c8, 0x568d,
- 0x8108, 0x612a, 0x6124, 0x0c7f, 0x81ff, 0x0040, 0x569b, 0x1078,
- 0x46b5, 0x1078, 0x564d, 0x0078, 0x569b, 0x6124, 0xa1e5, 0x0000,
- 0x0040, 0x5698, 0x1078, 0x767d, 0x2009, 0x0014, 0x1078, 0x5cfb,
- 0x0c7f, 0x0078, 0x569b, 0x027f, 0x017f, 0x0d7f, 0x0c7f, 0x007c,
- 0x1078, 0x3553, 0x0078, 0x569b, 0x0c7e, 0x0d7e, 0x0e7e, 0x017e,
- 0x027e, 0x1078, 0x46ce, 0x2071, 0x7936, 0x713c, 0x81ff, 0x0040,
- 0x56ce, 0x2061, 0x0100, 0x2069, 0x0140, 0x6904, 0xa194, 0x4000,
- 0x0040, 0x56d4, 0x6803, 0x1000, 0x6803, 0x0000, 0x037e, 0x2019,
- 0x0001, 0x1078, 0x583a, 0x037f, 0x713c, 0x2160, 0x1078, 0x767d,
- 0x2009, 0x004a, 0x1078, 0x5cfb, 0x0078, 0x56ce, 0x027f, 0x017f,
- 0x0e7f, 0x0d7f, 0x0c7f, 0x007c, 0x7144, 0xa192, 0x0002, 0x00c8,
- 0x56be, 0x8108, 0x7146, 0x1078, 0x46c5, 0x0078, 0x56ce, 0x0e7e,
- 0x0d7e, 0x0c7e, 0x067e, 0x057e, 0x047e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x6018, 0x2068, 0x6ca0, 0x2071, 0x7936, 0x7018, 0x2068,
- 0x8dff, 0x0040, 0x5709, 0x68a0, 0xa406, 0x0040, 0x56fb, 0x6854,
- 0x2068, 0x0078, 0x56f0, 0x6010, 0x2060, 0x643c, 0x6540, 0x6e48,
- 0x2d60, 0x1078, 0x394b, 0x0040, 0x5709, 0x1078, 0x59d4, 0xa085,
- 0x0001, 0x127f, 0x007f, 0x047f, 0x057f, 0x067f, 0x0c7f, 0x0d7f,
- 0x0e7f, 0x007c, 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x50b2,
- 0x20a3, 0x0f00, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x7808, 0x20a2,
- 0x60c3, 0x0008, 0x1078, 0x5642, 0x147f, 0x157f, 0x007c, 0x157e,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0200, 0x20a3,
- 0x0000, 0x20a9, 0x0006, 0x2011, 0x7740, 0x2019, 0x7741, 0x23a6,
- 0x22a6, 0xa398, 0x0002, 0xa290, 0x0002, 0x00f0, 0x5737, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x60c3, 0x001c, 0x1078, 0x5642, 0x147f,
- 0x157f, 0x007c, 0x157e, 0x147e, 0x017e, 0x027e, 0x20a1, 0x020b,
- 0x1078, 0x5109, 0x1078, 0x5120, 0x7810, 0x007e, 0xa080, 0x0015,
- 0x2098, 0x7808, 0xa088, 0x0002, 0x21a8, 0x53a6, 0xa080, 0x0004,
- 0x8003, 0x60c2, 0x007f, 0xa080, 0x0001, 0x2004, 0x7812, 0x1078,
- 0x5642, 0x027f, 0x017f, 0x147f, 0x157f, 0x007c, 0x157e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x50b2, 0x20a3, 0x6200, 0x20a3, 0x0000,
- 0x20a3, 0x0000, 0x7808, 0x20a2, 0x60c3, 0x0008, 0x1078, 0x5642,
- 0x147f, 0x157f, 0x007c, 0x0e7e, 0x0c7e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x2071, 0x7936, 0x700c, 0x2060, 0x8cff, 0x0040, 0x579f,
- 0x1078, 0x6b99, 0x00c0, 0x5796, 0x1078, 0x5f29, 0x600c, 0x007e,
- 0x1078, 0x5cd4, 0x1078, 0x59d4, 0x0c7f, 0x0078, 0x578d, 0x700f,
- 0x0000, 0x700b, 0x0000, 0x127f, 0x007f, 0x0c7f, 0x0e7f, 0x007c,
- 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x027e, 0x017e,
- 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079, 0x0140, 0x2071,
- 0x7936, 0x7024, 0x2060, 0x8cff, 0x0040, 0x57f8, 0x1078, 0x5656,
- 0x68c3, 0x0000, 0x1078, 0x46c0, 0x2009, 0x0013, 0x1078, 0x5cfb,
- 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040, 0x57db, 0x6827, 0x0004,
- 0x7804, 0xa084, 0x4000, 0x0040, 0x57ed, 0x7803, 0x1000, 0x7803,
- 0x0000, 0x0078, 0x57ed, 0xd084, 0x0040, 0x57e2, 0x6827, 0x0001,
- 0x0078, 0x57e4, 0x00f0, 0x57ca, 0x7804, 0xa084, 0x1000, 0x0040,
- 0x57ed, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824, 0x007f, 0x017f,
- 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f, 0x127f, 0x007c,
- 0x2001, 0x7700, 0x2004, 0xa096, 0x0001, 0x0040, 0x5830, 0xa096,
- 0x0004, 0x0040, 0x5830, 0x6817, 0x0008, 0x68c3, 0x0000, 0x2011,
- 0x351a, 0x1078, 0x4643, 0x20a9, 0x01f4, 0x6824, 0xd094, 0x0040,
- 0x581e, 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5830,
- 0x7803, 0x1000, 0x7803, 0x0000, 0x0078, 0x5830, 0xd084, 0x0040,
- 0x5825, 0x6827, 0x0001, 0x0078, 0x5827, 0x00f0, 0x580d, 0x7804,
- 0xa084, 0x1000, 0x0040, 0x5830, 0x7803, 0x0100, 0x7803, 0x0000,
- 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f,
- 0x127f, 0x007c, 0x127e, 0x157e, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x027e, 0x017e, 0x007e, 0x2091, 0x8000, 0x2069, 0x0100, 0x2079,
- 0x0140, 0x2071, 0x7936, 0x703c, 0x2060, 0x8cff, 0x0040, 0x5888,
- 0x6817, 0x0010, 0x68cb, 0x0000, 0x68c7, 0x0000, 0x1078, 0x46ce,
- 0x1078, 0x1bf1, 0xa39d, 0x0000, 0x00c0, 0x5862, 0x2009, 0x0049,
- 0x1078, 0x5cfb, 0x20a9, 0x03e8, 0x6824, 0xd094, 0x0040, 0x5875,
- 0x6827, 0x0004, 0x7804, 0xa084, 0x4000, 0x0040, 0x5887, 0x7803,
- 0x1000, 0x7803, 0x0000, 0x0078, 0x5887, 0xd094, 0x0040, 0x587c,
- 0x6827, 0x0002, 0x0078, 0x587e, 0x00f0, 0x5864, 0x7804, 0xa084,
- 0x1000, 0x0040, 0x5887, 0x7803, 0x0100, 0x7803, 0x0000, 0x6824,
- 0x007f, 0x017f, 0x027f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x157f,
- 0x127f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000, 0x2069, 0x7936,
- 0x6a06, 0x127f, 0x0d7f, 0x007c, 0x0d7e, 0x127e, 0x2091, 0x8000,
- 0x2069, 0x7936, 0x6a32, 0x127f, 0x0d7f, 0x007c, 0x0f7e, 0x0e7e,
- 0x0c7e, 0x067e, 0x007e, 0x127e, 0x2071, 0x7936, 0x7614, 0x2660,
- 0x2678, 0x2091, 0x8000, 0x8cff, 0x0040, 0x58e6, 0x601c, 0xa206,
- 0x00c0, 0x58e1, 0x7014, 0xac36, 0x00c0, 0x58c0, 0x660c, 0x7616,
- 0x7010, 0xac36, 0x00c0, 0x58ce, 0x2c00, 0xaf36, 0x0040, 0x58cc,
- 0x2f00, 0x7012, 0x0078, 0x58ce, 0x7013, 0x0000, 0x660c, 0x067e,
- 0x2c00, 0xaf06, 0x0040, 0x58d7, 0x7e0e, 0x0078, 0x58d8, 0x2678,
- 0x600f, 0x0000, 0x1078, 0x6b6c, 0x1078, 0x59d4, 0x0c7f, 0x0078,
- 0x58b3, 0x2c78, 0x600c, 0x2060, 0x0078, 0x58b3, 0x127f, 0x007f,
- 0x067f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x157e, 0x147e, 0x20a1,
- 0x020b, 0x1078, 0x52e9, 0x7810, 0x20a2, 0xa006, 0x20a2, 0x20a2,
- 0x20a2, 0x20a2, 0x20a3, 0x4000, 0x0078, 0x592f, 0x157e, 0x147e,
- 0x20a1, 0x020b, 0x1078, 0x52e9, 0x7810, 0x20a2, 0xa006, 0x20a2,
- 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x2000, 0x0078, 0x592f, 0x157e,
- 0x147e, 0x20a1, 0x020b, 0x1078, 0x52e9, 0x7810, 0x20a2, 0xa006,
- 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0400, 0x0078, 0x592f,
- 0x157e, 0x147e, 0x20a1, 0x020b, 0x1078, 0x52e9, 0x7810, 0x20a2,
- 0xa006, 0x20a2, 0x20a2, 0x20a2, 0x20a2, 0x20a3, 0x0200, 0x1078,
- 0x59df, 0x60c3, 0x0020, 0x1078, 0x5642, 0x147f, 0x157f, 0x007c,
- 0x127e, 0x0c7e, 0x2091, 0x8000, 0x2061, 0x0100, 0x6120, 0xd1b4,
- 0x00c0, 0x5947, 0xd1bc, 0x00c0, 0x5991, 0x0078, 0x59d1, 0x2009,
- 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e, 0x2069, 0x0140,
- 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084, 0x4000, 0x0040,
- 0x5988, 0x6020, 0xd0b4, 0x0040, 0x5988, 0x6024, 0xd094, 0x00c0,
- 0x5988, 0x2104, 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x5988,
- 0x00f0, 0x5954, 0x027e, 0x6198, 0xa18c, 0x00ff, 0x8107, 0x6130,
- 0xa18c, 0x00ff, 0xa10d, 0x6088, 0x628c, 0x618e, 0x608b, 0xbc91,
- 0x6043, 0x0001, 0x6043, 0x0000, 0x608a, 0x628e, 0x6024, 0xd094,
- 0x00c0, 0x5987, 0x6a04, 0xa294, 0x4000, 0x00c0, 0x597e, 0x027f,
- 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b, 0x0000, 0x0078,
- 0x59d1, 0x2009, 0x017f, 0x200b, 0x00a1, 0x157e, 0x007e, 0x0d7e,
- 0x2069, 0x0140, 0x20a9, 0x001e, 0x2009, 0x0169, 0x6804, 0xa084,
- 0x4000, 0x0040, 0x59ca, 0x6020, 0xd0bc, 0x0040, 0x59ca, 0x2104,
- 0xa084, 0x000f, 0xa086, 0x0004, 0x00c0, 0x59ca, 0x00f0, 0x599e,
- 0x027e, 0x6164, 0xa18c, 0x00ff, 0x8107, 0x6130, 0xa18c, 0x00ff,
- 0xa10d, 0x6088, 0x628c, 0x608b, 0xbc91, 0x618e, 0x6043, 0x0001,
- 0x6043, 0x0000, 0x608a, 0x628e, 0x6a04, 0xa294, 0x4000, 0x00c0,
- 0x59c4, 0x027f, 0x0d7f, 0x007f, 0x157f, 0x2009, 0x017f, 0x200b,
- 0x0000, 0x0c7f, 0x127f, 0x007c, 0x0e7e, 0x2071, 0x7936, 0x7020,
- 0xa005, 0x0040, 0x59dd, 0x8001, 0x7022, 0x0e7f, 0x007c, 0x20a9,
- 0x0008, 0x20a2, 0x00f0, 0x59e1, 0x20a2, 0x20a2, 0x007c, 0x0f7e,
- 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x067e, 0x007e, 0x127e, 0x2091,
- 0x8000, 0x2071, 0x7936, 0x7614, 0x2660, 0x2678, 0x2039, 0x0001,
- 0x87ff, 0x0040, 0x5a77, 0x8cff, 0x0040, 0x5a77, 0x601c, 0xa086,
- 0x0006, 0x00c0, 0x5a72, 0x88ff, 0x0040, 0x5a0e, 0x2800, 0xac06,
- 0x00c0, 0x5a72, 0x2039, 0x0000, 0x0078, 0x5a12, 0x6018, 0xa206,
- 0x00c0, 0x5a72, 0x7024, 0xac06, 0x00c0, 0x5a40, 0x2069, 0x0100,
- 0x68c0, 0xa005, 0x0040, 0x5a3b, 0x6817, 0x0008, 0x68c3, 0x0000,
- 0x1078, 0x5b04, 0x7027, 0x0000, 0x037e, 0x2069, 0x0140, 0x6b04,
- 0xa384, 0x1000, 0x0040, 0x5a30, 0x6803, 0x0100, 0x6803, 0x0000,
- 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5a38, 0x6827, 0x0001,
- 0x037f, 0x0078, 0x5a40, 0x6003, 0x0009, 0x630a, 0x0078, 0x5a72,
- 0x7014, 0xac36, 0x00c0, 0x5a46, 0x660c, 0x7616, 0x7010, 0xac36,
- 0x00c0, 0x5a54, 0x2c00, 0xaf36, 0x0040, 0x5a52, 0x2f00, 0x7012,
- 0x0078, 0x5a54, 0x7013, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06,
- 0x0040, 0x5a5d, 0x7e0e, 0x0078, 0x5a5e, 0x2678, 0x600f, 0x0000,
- 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x5a68, 0x1078, 0x75b3,
- 0x1078, 0x6b6c, 0x1078, 0x59d4, 0x88ff, 0x00c0, 0x5a81, 0x0c7f,
- 0x0078, 0x59f8, 0x2c78, 0x600c, 0x2060, 0x0078, 0x59f8, 0xa006,
- 0x127f, 0x007f, 0x067f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x007c, 0x6017, 0x0000, 0x0c7f, 0xa8c5, 0x0001, 0x0078, 0x5a78,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e,
- 0x2091, 0x8000, 0x2071, 0x7936, 0x7638, 0x2660, 0x2678, 0x8cff,
- 0x0040, 0x5af3, 0x601c, 0xa086, 0x0006, 0x00c0, 0x5aee, 0x88ff,
- 0x0040, 0x5aa8, 0x2800, 0xac06, 0x00c0, 0x5aee, 0x0078, 0x5aac,
- 0x6018, 0xa206, 0x00c0, 0x5aee, 0x703c, 0xac06, 0x00c0, 0x5abe,
- 0x037e, 0x2019, 0x0001, 0x1078, 0x583a, 0x7033, 0x0000, 0x703f,
- 0x0000, 0x7043, 0x0000, 0x7047, 0x0000, 0x037f, 0x7038, 0xac36,
- 0x00c0, 0x5ac4, 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5ad2,
- 0x2c00, 0xaf36, 0x0040, 0x5ad0, 0x2f00, 0x7036, 0x0078, 0x5ad2,
- 0x7037, 0x0000, 0x660c, 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5adb,
- 0x7e0e, 0x0078, 0x5adc, 0x2678, 0x600f, 0x0000, 0x6010, 0x2068,
- 0x1078, 0x6a03, 0x0040, 0x5ae6, 0x1078, 0x75b3, 0x1078, 0x6b6c,
- 0x88ff, 0x00c0, 0x5afd, 0x0c7f, 0x0078, 0x5a97, 0x2c78, 0x600c,
- 0x2060, 0x0078, 0x5a97, 0xa006, 0x127f, 0x007f, 0x027f, 0x067f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x6017, 0x0000, 0x0c7f,
- 0xa8c5, 0x0001, 0x0078, 0x5af4, 0x0e7e, 0x2071, 0x7936, 0x2001,
- 0x7700, 0x2004, 0xa086, 0x0002, 0x00c0, 0x5b12, 0x7007, 0x0005,
- 0x0078, 0x5b14, 0x7007, 0x0000, 0x0e7f, 0x007c, 0x0f7e, 0x0e7e,
- 0x0c7e, 0x067e, 0x027e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071,
- 0x7936, 0x2c10, 0x7638, 0x2660, 0x2678, 0x8cff, 0x0040, 0x5b54,
- 0x2200, 0xac06, 0x00c0, 0x5b4f, 0x7038, 0xac36, 0x00c0, 0x5b32,
- 0x660c, 0x763a, 0x7034, 0xac36, 0x00c0, 0x5b40, 0x2c00, 0xaf36,
- 0x0040, 0x5b3e, 0x2f00, 0x7036, 0x0078, 0x5b40, 0x7037, 0x0000,
- 0x660c, 0x2c00, 0xaf06, 0x0040, 0x5b48, 0x7e0e, 0x0078, 0x5b49,
- 0x2678, 0x600f, 0x0000, 0xa085, 0x0001, 0x0078, 0x5b54, 0x2c78,
- 0x600c, 0x2060, 0x0078, 0x5b25, 0x127f, 0x007f, 0x027f, 0x067f,
- 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0x0f7e, 0x0e7e, 0x0d7e, 0x0c7e,
- 0x067e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2071, 0x7936, 0x760c,
- 0x2660, 0x2678, 0x8cff, 0x0040, 0x5bed, 0x6018, 0xa080, 0x0028,
- 0x2004, 0xa206, 0x00c0, 0x5be8, 0x7024, 0xac06, 0x00c0, 0x5b9b,
- 0x2069, 0x0100, 0x68c0, 0xa005, 0x0040, 0x5b9b, 0x1078, 0x5656,
- 0x68c3, 0x0000, 0x1078, 0x5b04, 0x7027, 0x0000, 0x037e, 0x2069,
- 0x0140, 0x6b04, 0xa384, 0x1000, 0x0040, 0x5b92, 0x6803, 0x0100,
- 0x6803, 0x0000, 0x2069, 0x0100, 0x6824, 0xd084, 0x0040, 0x5b9a,
- 0x6827, 0x0001, 0x037f, 0x700c, 0xac36, 0x00c0, 0x5ba1, 0x660c,
- 0x760e, 0x7008, 0xac36, 0x00c0, 0x5baf, 0x2c00, 0xaf36, 0x0040,
- 0x5bad, 0x2f00, 0x700a, 0x0078, 0x5baf, 0x700b, 0x0000, 0x660c,
- 0x067e, 0x2c00, 0xaf06, 0x0040, 0x5bb8, 0x7e0e, 0x0078, 0x5bb9,
- 0x2678, 0x600f, 0x0000, 0x1078, 0x6b85, 0x00c0, 0x5bc3, 0x1078,
- 0x22b1, 0x0078, 0x5bdf, 0x1078, 0x6b99, 0x00c0, 0x5bcb, 0x1078,
- 0x5f29, 0x0078, 0x5bdf, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040,
- 0x5bdf, 0x601c, 0xa086, 0x0003, 0x00c0, 0x5bf5, 0x6837, 0x0103,
- 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3b4c, 0x1078, 0x6b5f, 0x6003,
- 0x0000, 0x1078, 0x6b6c, 0x1078, 0x59d4, 0x0c7f, 0x0078, 0x5b6a,
- 0x2c78, 0x600c, 0x2060, 0x0078, 0x5b6a, 0x127f, 0x007f, 0x067f,
- 0x0c7f, 0x0d7f, 0x0e7f, 0x0f7f, 0x007c, 0x601c, 0xa086, 0x0006,
- 0x00c0, 0x5bd6, 0x1078, 0x75b3, 0x0078, 0x5bdf, 0x037e, 0x157e,
- 0x137e, 0x147e, 0x3908, 0xa006, 0xa190, 0x0020, 0x221c, 0xa39e,
- 0x2123, 0x00c0, 0x5c0f, 0x8210, 0x8000, 0x0078, 0x5c06, 0xa005,
- 0x0040, 0x5c19, 0x20a9, 0x0020, 0x2198, 0xa110, 0x22a0, 0x22c8,
- 0x53a3, 0x147f, 0x137f, 0x157f, 0x037f, 0x007c, 0x0d7e, 0x20a1,
- 0x020b, 0x1078, 0x5129, 0x20a3, 0x0200, 0x20a3, 0x0014, 0x60c3,
- 0x0014, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x514c, 0x20a3,
- 0x4f47, 0x20a3, 0x4943, 0x20a3, 0x2020, 0x20a3, 0x0004, 0x20a3,
- 0x7878, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x1078, 0x5642, 0x0d7f,
- 0x007c, 0x20a1, 0x020b, 0x1078, 0x5129, 0x20a3, 0x0210, 0x20a3,
- 0x0018, 0x20a3, 0x0800, 0x7810, 0xa084, 0xff00, 0x20a2, 0x20a3,
- 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x7810, 0xa084, 0x00ff, 0x20a2, 0x20a3, 0x0000, 0x20a3,
- 0x0000, 0x60c3, 0x0018, 0x1078, 0x5642, 0x007c, 0x2061, 0x7e00,
- 0x2a70, 0x7060, 0x7046, 0x704b, 0x7e00, 0x007c, 0x0e7e, 0x127e,
- 0x2071, 0x7700, 0x2091, 0x8000, 0x7544, 0xa582, 0x0001, 0x0048,
- 0x5ca0, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000, 0x0040, 0x5c8c,
- 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5c88, 0x0078, 0x5c7b,
- 0x2061, 0x7e00, 0x0078, 0x5c7b, 0x6003, 0x0008, 0x8529, 0x7546,
- 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x5c9c, 0x754a, 0xa085,
- 0x0001, 0x127f, 0x0e7f, 0x007c, 0x704b, 0x7e00, 0x0078, 0x5c97,
- 0xa006, 0x0078, 0x5c99, 0x0e7e, 0x2071, 0x7700, 0x7544, 0xa582,
- 0x0001, 0x0048, 0x5cd1, 0x7048, 0x2060, 0x6000, 0xa086, 0x0000,
- 0x0040, 0x5cbe, 0xace0, 0x0008, 0x7054, 0xac02, 0x00c8, 0x5cba,
- 0x0078, 0x5cad, 0x2061, 0x7e00, 0x0078, 0x5cad, 0x6003, 0x0008,
- 0x8529, 0x7546, 0xaca8, 0x0008, 0x7054, 0xa502, 0x00c8, 0x5ccd,
- 0x754a, 0xa085, 0x0001, 0x0e7f, 0x007c, 0x704b, 0x7e00, 0x0078,
- 0x5cc9, 0xa006, 0x0078, 0x5ccb, 0xac82, 0x7e00, 0x1048, 0x12d5,
- 0x2001, 0x7715, 0x2004, 0xac02, 0x10c8, 0x12d5, 0xa006, 0x6006,
- 0x600a, 0x600e, 0x6012, 0x6016, 0x601a, 0x601f, 0x0000, 0x6003,
- 0x0000, 0x2061, 0x7700, 0x6044, 0x8000, 0x6046, 0xa086, 0x0001,
- 0x0040, 0x5cf3, 0x007c, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d50,
- 0x127f, 0x0078, 0x5cf2, 0x601c, 0xa084, 0x000f, 0x0079, 0x5d00,
- 0x5d09, 0x5d11, 0x5d2d, 0x5d49, 0x6c16, 0x6c32, 0x6c4e, 0x5d09,
- 0x5d11, 0xa18e, 0x0047, 0x00c0, 0x5d10, 0xa016, 0x1078, 0x1572,
- 0x007c, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079,
- 0x5d1b, 0x067f, 0x007c, 0x5d2b, 0x5e12, 0x5f44, 0x5d2b, 0x5f9b,
- 0x5d2b, 0x5d2b, 0x5d2b, 0x5dc1, 0x6247, 0x5d2b, 0x5d2b, 0x5d2b,
- 0x5d2b, 0x5d2b, 0x5d2b, 0x1078, 0x12d5, 0x067e, 0x6000, 0xa0b2,
- 0x0010, 0x10c8, 0x12d5, 0x1079, 0x5d37, 0x067f, 0x007c, 0x5d47,
- 0x5d47, 0x5d47, 0x5d47, 0x5d47, 0x5d47, 0x5d47, 0x5d47, 0x66b7,
- 0x677d, 0x5d47, 0x66d0, 0x6729, 0x66d0, 0x6729, 0x5d47, 0x1078,
- 0x12d5, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079,
- 0x5d53, 0x067f, 0x007c, 0x5d63, 0x6285, 0x632b, 0x63ed, 0x6541,
- 0x5d63, 0x5d63, 0x5d63, 0x6263, 0x666c, 0x6670, 0x5d63, 0x5d63,
- 0x5d63, 0x5d63, 0x6696, 0x1078, 0x12d5, 0x20a9, 0x000e, 0x2e98,
- 0x6010, 0x20a0, 0x53a3, 0x20a9, 0x0006, 0x3310, 0x3420, 0x9398,
- 0x94a0, 0x3318, 0x3428, 0x222e, 0x2326, 0xa290, 0x0002, 0xa5a8,
- 0x0002, 0xa398, 0x0002, 0xa4a0, 0x0002, 0x00f0, 0x5d73, 0x0e7e,
- 0x1078, 0x6a03, 0x0040, 0x5d8a, 0x6010, 0x2070, 0x7007, 0x0000,
- 0x7037, 0x0103, 0x0e7f, 0x1078, 0x5cd4, 0x007c, 0x0d7e, 0x037e,
- 0x7330, 0xa386, 0x0200, 0x00c0, 0x5d9b, 0x6018, 0x2068, 0x6813,
- 0x00ff, 0x6817, 0xfffd, 0x6010, 0xa005, 0x0040, 0x5da5, 0x2068,
- 0x6807, 0x0000, 0x6837, 0x0103, 0x6b32, 0x1078, 0x5cd4, 0x037f,
- 0x0d7f, 0x007c, 0x0d7e, 0x20a9, 0x000e, 0x2e98, 0x6010, 0x20a0,
- 0x53a3, 0xa1b6, 0x0015, 0x00c0, 0x5dbe, 0x6018, 0x2068, 0x7038,
- 0x680a, 0x703c, 0x680e, 0x6800, 0xc08d, 0x6802, 0x0d7f, 0x0078,
- 0x5d7f, 0x2100, 0xa1b2, 0x0030, 0x10c8, 0x12d5, 0x0079, 0x5dc8,
- 0x5dfa, 0x5e06, 0x5dfa, 0x5dfa, 0x5dfa, 0x5dfa, 0x5df8, 0x5df8,
- 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8,
- 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8,
- 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5dfa,
- 0x5df8, 0x5dfa, 0x5dfa, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8,
- 0x5dfa, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8, 0x5df8,
- 0x1078, 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078, 0x4948, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x4d50, 0x127f, 0x007c, 0x6003, 0x0001,
- 0x6106, 0x1078, 0x4948, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d50,
- 0x127f, 0x007c, 0x6004, 0xa0b2, 0x0030, 0x10c8, 0x12d5, 0xa1b6,
- 0x0013, 0x00c0, 0x5e1e, 0x2008, 0x0079, 0x5ea7, 0xa1b6, 0x0027,
- 0x00c0, 0x5e74, 0x1078, 0x4c57, 0x6004, 0x1078, 0x6b85, 0x0040,
- 0x5e37, 0x1078, 0x6b99, 0x0040, 0x5e6c, 0xa08e, 0x0021, 0x0040,
- 0x5e70, 0xa08e, 0x0022, 0x0040, 0x5e6c, 0x0078, 0x5e67, 0x1078,
- 0x22b1, 0x2001, 0x0007, 0x1078, 0x37ae, 0x6018, 0xa080, 0x0028,
- 0x200c, 0x1078, 0x5f29, 0xa186, 0x007e, 0x00c0, 0x5e4d, 0x2001,
- 0x772f, 0x2014, 0xa295, 0x0001, 0x2202, 0x017e, 0x027e, 0x037e,
- 0x2110, 0x2019, 0x0028, 0x1078, 0x4a38, 0x1078, 0x497b, 0x0c7e,
- 0x6018, 0xa065, 0x0040, 0x5e5e, 0x1078, 0x39f0, 0x0c7f, 0x2c08,
- 0x1078, 0x7431, 0x037f, 0x027f, 0x017f, 0x1078, 0x37ee, 0x1078,
- 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x1078, 0x5f29, 0x0078, 0x5e67,
- 0x1078, 0x5f38, 0x0078, 0x5e67, 0xa186, 0x0014, 0x00c0, 0x5e6b,
- 0x1078, 0x4c57, 0x1078, 0x228f, 0x1078, 0x6b85, 0x00c0, 0x5e94,
- 0x1078, 0x22b1, 0x6018, 0xa080, 0x0028, 0x200c, 0x1078, 0x5f29,
- 0xa186, 0x007e, 0x00c0, 0x5e92, 0x2001, 0x772f, 0x200c, 0xa18d,
- 0x0001, 0x2102, 0x0078, 0x5e67, 0x1078, 0x6b99, 0x00c0, 0x5e9c,
- 0x1078, 0x5f29, 0x0078, 0x5e67, 0x6004, 0xa08e, 0x0021, 0x0040,
- 0x5e98, 0xa08e, 0x0022, 0x1040, 0x5f38, 0x0078, 0x5e67, 0x5ed9,
- 0x5edb, 0x5edf, 0x5ee3, 0x5ee7, 0x5eeb, 0x5ed7, 0x5ed7, 0x5ed7,
- 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7,
- 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7,
- 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5eef, 0x5ef5, 0x5ed7,
- 0x5eff, 0x5ef5, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ef5,
- 0x5ef5, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x5ed7, 0x1078,
- 0x12d5, 0x0078, 0x5ef5, 0x2001, 0x000b, 0x0078, 0x5f08, 0x2001,
- 0x0003, 0x0078, 0x5f08, 0x2001, 0x0005, 0x0078, 0x5f08, 0x2001,
- 0x0001, 0x0078, 0x5f08, 0x2001, 0x0009, 0x0078, 0x5f08, 0x1078,
- 0x12d5, 0x0078, 0x5f07, 0x1078, 0x37ae, 0x1078, 0x4c57, 0x6003,
- 0x0002, 0x6017, 0x0028, 0x1078, 0x4d50, 0x0078, 0x5f07, 0x1078,
- 0x4c57, 0x6003, 0x0004, 0x6017, 0x0028, 0x1078, 0x4d50, 0x007c,
- 0x1078, 0x37ae, 0x1078, 0x4c57, 0x6003, 0x0002, 0x037e, 0x2019,
- 0x775c, 0x2304, 0xa084, 0xff00, 0x00c0, 0x5f1a, 0x2019, 0x0028,
- 0x0078, 0x5f23, 0x8007, 0xa09a, 0x0004, 0x0048, 0x5f16, 0x8003,
- 0x801b, 0x831b, 0xa318, 0x6316, 0x037f, 0x1078, 0x4d50, 0x0078,
- 0x5f07, 0x0e7e, 0x1078, 0x6a03, 0x0040, 0x5f36, 0x6010, 0x2070,
- 0x7007, 0x0000, 0x7037, 0x0103, 0x7033, 0x0100, 0x0e7f, 0x007c,
- 0x0e7e, 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103,
- 0x7023, 0x8001, 0x0e7f, 0x007c, 0x0d7e, 0x6618, 0x2668, 0x6804,
- 0xa084, 0x00ff, 0x0d7f, 0xa0b2, 0x000c, 0x10c8, 0x12d5, 0x6604,
- 0xa6b6, 0x0028, 0x00c0, 0x5f58, 0x1078, 0x6bce, 0x0078, 0x5f8a,
- 0x6604, 0xa6b6, 0x0029, 0x00c0, 0x5f61, 0x1078, 0x6be8, 0x0078,
- 0x5f8a, 0x6604, 0xa6b6, 0x001f, 0x00c0, 0x5f6a, 0x1078, 0x5d65,
- 0x0078, 0x5f8a, 0x6604, 0xa6b6, 0x0000, 0x00c0, 0x5f73, 0x1078,
- 0x5daa, 0x0078, 0x5f8a, 0x6604, 0xa6b6, 0x0022, 0x00c0, 0x5f7c,
- 0x1078, 0x5d8e, 0x0078, 0x5f8a, 0xa1b6, 0x0015, 0x00c0, 0x5f84,
- 0x1079, 0x5f8f, 0x0078, 0x5f8a, 0xa1b6, 0x0016, 0x00c0, 0x5f8b,
- 0x1079, 0x60cc, 0x007c, 0x1078, 0x5d09, 0x0078, 0x5f8a, 0x5fb3,
- 0x5fb6, 0x5fb3, 0x5ff7, 0x5fb3, 0x6068, 0x5fb3, 0x5fb3, 0x5fb3,
- 0x60a4, 0x5fb3, 0x60ba, 0xa1b6, 0x0048, 0x0040, 0x5fa7, 0x20e1,
- 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078, 0x1572, 0x007c, 0x0e7e,
- 0xacf0, 0x0004, 0x2e74, 0x7000, 0x2070, 0x7037, 0x0103, 0x0e7f,
- 0x1078, 0x5cd4, 0x007c, 0x0005, 0x0005, 0x007c, 0x0e7e, 0x2071,
- 0x7700, 0x7078, 0xa086, 0x0074, 0x00c0, 0x5fe0, 0x1078, 0x7405,
- 0x00c0, 0x5fd2, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x5fe4, 0x0d7f,
- 0x2001, 0x0006, 0x1078, 0x37ae, 0x1078, 0x22b1, 0x1078, 0x5cd4,
- 0x0078, 0x5fe2, 0x2001, 0x000a, 0x1078, 0x37ae, 0x1078, 0x22b1,
- 0x6003, 0x0001, 0x6007, 0x0001, 0x1078, 0x4948, 0x0078, 0x5fe2,
- 0x1078, 0x6058, 0x0e7f, 0x007c, 0x6800, 0xd084, 0x0040, 0x5ff6,
- 0x2001, 0x0000, 0x1078, 0x379a, 0x2069, 0x7751, 0x6804, 0xd0a4,
- 0x0040, 0x5ff6, 0x2001, 0x0006, 0x1078, 0x37bc, 0x007c, 0x0d7e,
- 0x2011, 0x771e, 0x2204, 0xa086, 0x0074, 0x00c0, 0x6054, 0x1078,
- 0x6199, 0x6018, 0x2068, 0xa080, 0x0028, 0x2014, 0xa286, 0x007e,
- 0x0040, 0x601f, 0xa286, 0x0080, 0x00c0, 0x6048, 0x6813, 0x00ff,
- 0x6817, 0xfffc, 0x6010, 0xa005, 0x0040, 0x603e, 0x2068, 0x6807,
- 0x0000, 0x6837, 0x0103, 0x6833, 0x0200, 0x0078, 0x603e, 0x0e7e,
- 0x0f7e, 0x6813, 0x00ff, 0x6817, 0xfffe, 0x2071, 0x772f, 0x2e04,
- 0xa085, 0x0003, 0x2072, 0x2071, 0x7c80, 0x2079, 0x0100, 0x2e04,
- 0xa084, 0x00ff, 0x2069, 0x7719, 0x206a, 0x78e6, 0x8e70, 0x2e04,
- 0x2069, 0x771a, 0x206a, 0x78ea, 0x0f7f, 0x0e7f, 0x2001, 0x0006,
- 0x1078, 0x37ae, 0x1078, 0x22b1, 0x1078, 0x5cd4, 0x0078, 0x6056,
- 0x2001, 0x0004, 0x1078, 0x37ae, 0x6003, 0x0001, 0x6007, 0x0003,
- 0x1078, 0x4948, 0x0078, 0x6056, 0x1078, 0x6058, 0x0d7f, 0x007c,
- 0x2001, 0x7700, 0x2004, 0xa086, 0x0003, 0x0040, 0x6063, 0x2001,
- 0x0007, 0x1078, 0x37ae, 0x1078, 0x22b1, 0x1078, 0x5cd4, 0x007c,
- 0x0e7e, 0x2071, 0x7700, 0x7078, 0xa086, 0x0014, 0x00c0, 0x609e,
- 0x7000, 0xa086, 0x0003, 0x00c0, 0x607b, 0x6010, 0xa005, 0x00c0,
- 0x607b, 0x1078, 0x2d9e, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x3882,
- 0x1078, 0x5fe4, 0x0d7f, 0x1078, 0x61a3, 0x00c0, 0x609e, 0x2001,
- 0x0006, 0x1078, 0x37ae, 0x0e7e, 0x6010, 0xa005, 0x0040, 0x6097,
- 0x2070, 0x7007, 0x0000, 0x7037, 0x0103, 0x7033, 0x0200, 0x0e7f,
- 0x1078, 0x22b1, 0x1078, 0x5cd4, 0x0078, 0x60a2, 0x1078, 0x5f29,
- 0x1078, 0x6058, 0x0e7f, 0x007c, 0x2011, 0x771e, 0x2204, 0xa086,
- 0x0014, 0x00c0, 0x60b7, 0x2001, 0x0002, 0x1078, 0x37ae, 0x6003,
- 0x0001, 0x6007, 0x0001, 0x1078, 0x4948, 0x0078, 0x60b9, 0x1078,
- 0x6058, 0x007c, 0x2011, 0x771e, 0x2204, 0xa086, 0x0004, 0x00c0,
- 0x60c9, 0x2001, 0x0007, 0x1078, 0x37ae, 0x1078, 0x5cd4, 0x0078,
- 0x60cb, 0x1078, 0x6058, 0x007c, 0x5fb3, 0x60d8, 0x5fb3, 0x60fe,
- 0x5fb3, 0x614c, 0x5fb3, 0x5fb3, 0x5fb3, 0x6161, 0x5fb3, 0x6174,
- 0x0c7e, 0x1078, 0x6187, 0x00c0, 0x60ed, 0x2001, 0x0000, 0x1078,
- 0x379a, 0x2001, 0x0002, 0x1078, 0x37ae, 0x6003, 0x0001, 0x6007,
- 0x0002, 0x1078, 0x4948, 0x0078, 0x60fc, 0x2009, 0x7c8f, 0x2104,
- 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x60fa, 0x1078, 0x5cd4,
- 0x0078, 0x60fc, 0x1078, 0x6058, 0x0c7f, 0x007c, 0x1078, 0x6196,
- 0x00c0, 0x6112, 0x2001, 0x0000, 0x1078, 0x379a, 0x2001, 0x0002,
- 0x1078, 0x37ae, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4948,
- 0x0078, 0x6134, 0x1078, 0x5f29, 0x2009, 0x7c8e, 0x2134, 0xa6b4,
- 0x00ff, 0xa686, 0x0005, 0x0040, 0x6135, 0x2009, 0x7c8f, 0x2104,
- 0xa084, 0xff00, 0xa086, 0x1900, 0x00c0, 0x6132, 0xa686, 0x0009,
- 0x0040, 0x6135, 0x2001, 0x0004, 0x1078, 0x37ae, 0x1078, 0x5cd4,
- 0x0078, 0x6134, 0x1078, 0x6058, 0x007c, 0x0d7e, 0x6018, 0x2068,
- 0x6840, 0xa084, 0x00ff, 0xa005, 0x0040, 0x6147, 0x8001, 0x6842,
- 0x6017, 0x000a, 0x6007, 0x0016, 0x0d7f, 0x0078, 0x6134, 0x1078,
- 0x228f, 0x0d7f, 0x0078, 0x6132, 0x1078, 0x6196, 0x00c0, 0x615c,
- 0x2001, 0x0004, 0x1078, 0x37ae, 0x6003, 0x0001, 0x6007, 0x0003,
- 0x1078, 0x4948, 0x0078, 0x6160, 0x1078, 0x5f29, 0x1078, 0x6058,
- 0x007c, 0x1078, 0x6196, 0x00c0, 0x6171, 0x2001, 0x0008, 0x1078,
- 0x37ae, 0x6003, 0x0001, 0x6007, 0x0005, 0x1078, 0x4948, 0x0078,
- 0x6173, 0x1078, 0x6058, 0x007c, 0x1078, 0x6196, 0x00c0, 0x6184,
- 0x2001, 0x000a, 0x1078, 0x37ae, 0x6003, 0x0001, 0x6007, 0x0001,
- 0x1078, 0x4948, 0x0078, 0x6186, 0x1078, 0x6058, 0x007c, 0x2009,
- 0x7c8e, 0x2104, 0xa086, 0x0003, 0x00c0, 0x6195, 0x2009, 0x7c8f,
- 0x2104, 0xa084, 0xff00, 0xa086, 0x2a00, 0x007c, 0xa085, 0x0001,
- 0x007c, 0x0c7e, 0x017e, 0xac88, 0x0006, 0x2164, 0x1078, 0x3818,
- 0x017f, 0x0c7f, 0x007c, 0x0e7e, 0x2071, 0x7c8c, 0x7004, 0xa086,
- 0x0014, 0x00c0, 0x61c6, 0x7008, 0xa086, 0x0800, 0x00c0, 0x61c6,
- 0x700c, 0xd0ec, 0x0040, 0x61c4, 0xa084, 0x0f00, 0xa086, 0x0100,
- 0x00c0, 0x61c4, 0x7024, 0xd0a4, 0x0040, 0x61c4, 0xd08c, 0x0040,
- 0x61c4, 0xa006, 0x0078, 0x61c6, 0xa085, 0x0001, 0x0e7f, 0x007c,
- 0x0e7e, 0x0d7e, 0x0c7e, 0x077e, 0x057e, 0x047e, 0x027e, 0x007e,
- 0x127e, 0x2091, 0x8000, 0x2029, 0x793f, 0x252c, 0x2021, 0x7945,
- 0x2424, 0x2061, 0x7e00, 0x2071, 0x7700, 0x7244, 0x7060, 0xa202,
- 0x00c8, 0x621d, 0x1078, 0x760f, 0x0040, 0x6215, 0x671c, 0xa786,
- 0x0001, 0x0040, 0x6215, 0xa786, 0x0007, 0x0040, 0x6215, 0x2500,
- 0xac06, 0x0040, 0x6215, 0x2400, 0xac06, 0x0040, 0x6215, 0x0c7e,
- 0x6000, 0xa086, 0x0004, 0x00c0, 0x61ff, 0x1078, 0x1676, 0x6010,
- 0x2068, 0x1078, 0x6a03, 0x0040, 0x6212, 0xa786, 0x0003, 0x00c0,
- 0x6227, 0x6837, 0x0103, 0x6b4a, 0x6847, 0x0000, 0x1078, 0x3b4c,
- 0x1078, 0x6b5f, 0x1078, 0x6b6c, 0x0c7f, 0xace0, 0x0008, 0x7054,
- 0xac02, 0x00c8, 0x621d, 0x0078, 0x61dd, 0x127f, 0x007f, 0x027f,
- 0x047f, 0x057f, 0x077f, 0x0c7f, 0x0d7f, 0x0e7f, 0x007c, 0xa786,
- 0x0006, 0x00c0, 0x6209, 0x1078, 0x75b3, 0x0078, 0x6212, 0x220c,
- 0x2304, 0xa106, 0x00c0, 0x623a, 0x8210, 0x8318, 0x00f0, 0x622f,
- 0xa006, 0x007c, 0x2304, 0xa102, 0x0048, 0x6242, 0x2001, 0x0001,
- 0x0078, 0x6244, 0x2001, 0x0000, 0xa18d, 0x0001, 0x007c, 0x6004,
- 0xa08a, 0x0030, 0x10c8, 0x12d5, 0x1078, 0x6b85, 0x0040, 0x6256,
- 0x1078, 0x6b99, 0x0040, 0x625f, 0x0078, 0x6258, 0x1078, 0x22b1,
- 0x1078, 0x4c57, 0x1078, 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x1078,
- 0x5f29, 0x0078, 0x6258, 0xa182, 0x0040, 0x0079, 0x6267, 0x6277,
- 0x6277, 0x6277, 0x6277, 0x6277, 0x6277, 0x6277, 0x6277, 0x6277,
- 0x6277, 0x6277, 0x6279, 0x6279, 0x6279, 0x6279, 0x6277, 0x1078,
- 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078, 0x48fb, 0x127e, 0x2091,
- 0x8000, 0x1078, 0x4d50, 0x127f, 0x007c, 0xa186, 0x0013, 0x00c0,
- 0x628e, 0x6004, 0xa082, 0x0040, 0x0079, 0x6304, 0xa186, 0x0027,
- 0x00c0, 0x62ab, 0x1078, 0x4c57, 0x1078, 0x228f, 0x0d7e, 0x6110,
- 0x2168, 0x1078, 0x6a03, 0x0040, 0x62a5, 0x6837, 0x0103, 0x684b,
- 0x0029, 0x1078, 0x3b4c, 0x1078, 0x6b5f, 0x0d7f, 0x1078, 0x5cd4,
- 0x1078, 0x4d50, 0x007c, 0xa186, 0x0014, 0x00c0, 0x62b4, 0x6004,
- 0xa082, 0x0040, 0x0079, 0x62d4, 0xa186, 0x0047, 0x10c0, 0x12d5,
- 0x2001, 0x0109, 0x2004, 0xd084, 0x0040, 0x62d1, 0x127e, 0x2091,
- 0x2200, 0x007e, 0x017e, 0x027e, 0x1078, 0x47bc, 0x027f, 0x017f,
- 0x007f, 0x127f, 0x6000, 0xa086, 0x0002, 0x00c0, 0x62d1, 0x0078,
- 0x632b, 0x1078, 0x5d09, 0x007c, 0x62e6, 0x62e4, 0x62e4, 0x62e4,
- 0x62e4, 0x62e4, 0x62e4, 0x62e4, 0x62e4, 0x62e4, 0x62e4, 0x62fd,
- 0x62fd, 0x62fd, 0x62fd, 0x62e4, 0x1078, 0x12d5, 0x1078, 0x4c57,
- 0x0d7e, 0x6110, 0x2168, 0x1078, 0x6a03, 0x0040, 0x62f7, 0x6837,
- 0x0103, 0x684b, 0x0006, 0x1078, 0x3b4c, 0x1078, 0x6b5f, 0x0d7f,
- 0x1078, 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x1078, 0x4c57, 0x1078,
- 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x6316, 0x6314, 0x6314, 0x6314,
- 0x6314, 0x6314, 0x6314, 0x6314, 0x6314, 0x6314, 0x6314, 0x6324,
- 0x6324, 0x6324, 0x6324, 0x6314, 0x1078, 0x12d5, 0x1078, 0x4c57,
- 0x6003, 0x0002, 0x1078, 0x4d50, 0x6010, 0xa088, 0x0013, 0x2104,
- 0xa085, 0x0400, 0x200a, 0x007c, 0x1078, 0x4c57, 0x6003, 0x000f,
- 0x1078, 0x4d50, 0x007c, 0xa182, 0x0040, 0x0079, 0x632f, 0x633f,
- 0x633f, 0x633f, 0x633f, 0x633f, 0x6341, 0x63ca, 0x63e2, 0x633f,
- 0x633f, 0x633f, 0x633f, 0x633f, 0x633f, 0x633f, 0x633f, 0x1078,
- 0x12d5, 0x0e7e, 0x0d7e, 0x2071, 0x7c8c, 0x6110, 0x2168, 0x7614,
- 0xa6b4, 0x0fff, 0x86ff, 0x0040, 0x63ae, 0xa68c, 0x00ff, 0xa186,
- 0x0002, 0x0040, 0x6373, 0xa186, 0x0028, 0x00c0, 0x635d, 0x1078,
- 0x6b73, 0x684b, 0x001c, 0x0078, 0x6375, 0xd6dc, 0x0040, 0x6368,
- 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x6375,
- 0xd6d4, 0x0040, 0x6373, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c,
- 0x6b5e, 0x0078, 0x6375, 0x684b, 0x0000, 0x6837, 0x0103, 0x6e46,
- 0xa01e, 0xd6c4, 0x0040, 0x6388, 0x7328, 0x732c, 0x6b56, 0x037e,
- 0x2308, 0x2019, 0x7c98, 0xad90, 0x0019, 0x1078, 0x67ec, 0x037f,
- 0xd6cc, 0x0040, 0x63be, 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8,
- 0x639c, 0x2071, 0x7c98, 0x831c, 0x2300, 0xae18, 0xad90, 0x001d,
- 0x1078, 0x67ec, 0x0078, 0x63be, 0x6838, 0xd0fc, 0x0040, 0x63a5,
- 0x2009, 0x0020, 0x695a, 0x0078, 0x6391, 0x0f7e, 0x2d78, 0x1078,
- 0x6784, 0x0f7f, 0x1078, 0x67d9, 0x0078, 0x63c0, 0x684b, 0x0000,
- 0x6837, 0x0103, 0x6e46, 0x684c, 0xd0ac, 0x0040, 0x63be, 0x6810,
- 0x6914, 0xa115, 0x0040, 0x63be, 0x1078, 0x6532, 0x1078, 0x3b4c,
- 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x0d7f, 0x0e7f, 0x1078,
- 0x5cd4, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, 0x7c8c, 0x7c04,
- 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a,
- 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x19a7, 0x1078, 0x4967, 0x1078,
- 0x4e10, 0x007c, 0x6003, 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18,
- 0x3e20, 0x2c10, 0x1078, 0x1572, 0x007c, 0xa182, 0x0040, 0x0079,
- 0x63f1, 0x6401, 0x6401, 0x6401, 0x6401, 0x6401, 0x6403, 0x649a,
- 0x6401, 0x6401, 0x64b0, 0x6512, 0x6401, 0x6401, 0x6401, 0x6401,
- 0x6519, 0x1078, 0x12d5, 0x077e, 0x0f7e, 0x0e7e, 0x0d7e, 0x2071,
- 0x7c8c, 0x6110, 0x2178, 0x7614, 0xa6b4, 0x0fff, 0x7e46, 0x7f4c,
- 0xc7e5, 0x7f4e, 0x6218, 0x2268, 0x6a3c, 0x8211, 0x6a3e, 0x86ff,
- 0x0040, 0x6495, 0xa694, 0xff00, 0xa284, 0x0c00, 0x0040, 0x6424,
- 0x7018, 0x7862, 0x701c, 0x785e, 0xa284, 0x0300, 0x0040, 0x6495,
- 0x1078, 0x132f, 0x1040, 0x12d5, 0x2d00, 0x784a, 0x7f4c, 0xc7cd,
- 0x7f4e, 0x6837, 0x0103, 0x7838, 0x683a, 0x783c, 0x683e, 0x7840,
- 0x6842, 0x6e46, 0xa68c, 0x00ff, 0xa186, 0x0002, 0x0040, 0x645e,
- 0xa186, 0x0028, 0x00c0, 0x6448, 0x684b, 0x001c, 0x0078, 0x6460,
- 0xd6dc, 0x0040, 0x6453, 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c,
- 0x6b5e, 0x0078, 0x6460, 0xd6d4, 0x0040, 0x645e, 0x684b, 0x0007,
- 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x6460, 0x684b, 0x0000,
- 0x6f4e, 0x7850, 0x6852, 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040,
- 0x6475, 0x7328, 0x732c, 0x6b56, 0x037e, 0x2308, 0x2019, 0x7c98,
- 0xad90, 0x0019, 0x1078, 0x67ec, 0x037f, 0xd6cc, 0x0040, 0x6495,
- 0x7124, 0x695a, 0xa192, 0x0021, 0x00c8, 0x6489, 0x2071, 0x7c98,
- 0x831c, 0x2300, 0xae18, 0xad90, 0x001d, 0x1078, 0x67ec, 0x0078,
- 0x6495, 0x7838, 0xd0fc, 0x0040, 0x6492, 0x2009, 0x0020, 0x695a,
- 0x0078, 0x647e, 0x2d78, 0x1078, 0x6784, 0x0d7f, 0x0e7f, 0x0f7f,
- 0x077f, 0x007c, 0x0f7e, 0x6003, 0x0003, 0x2079, 0x7c8c, 0x7c04,
- 0x7b00, 0x7e0c, 0x7d08, 0x6010, 0x2078, 0x7c12, 0x7b16, 0x7e0a,
- 0x7d0e, 0x0f7f, 0x2c10, 0x1078, 0x19a7, 0x1078, 0x563b, 0x007c,
- 0x0d7e, 0x6003, 0x0002, 0x1078, 0x4cff, 0x1078, 0x4e10, 0x6110,
- 0x2168, 0x694c, 0xd1e4, 0x0040, 0x6510, 0xd1cc, 0x0040, 0x64eb,
- 0x6948, 0x6838, 0xd0fc, 0x0040, 0x64e3, 0x017e, 0x684c, 0x007e,
- 0x6850, 0x007e, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020,
- 0x157e, 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x00f0, 0x64d2,
- 0x157f, 0x007f, 0x6852, 0x007f, 0x684e, 0x017f, 0x2168, 0x1078,
- 0x1358, 0x0078, 0x650e, 0x017e, 0x1078, 0x1358, 0x0d7f, 0x1078,
- 0x67d9, 0x0078, 0x650e, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff,
- 0xa186, 0x0002, 0x0040, 0x650a, 0xa086, 0x0028, 0x00c0, 0x64fc,
- 0x684b, 0x001c, 0x0078, 0x650c, 0xd1dc, 0x0040, 0x6503, 0x684b,
- 0x0015, 0x0078, 0x650c, 0xd1d4, 0x0040, 0x650a, 0x684b, 0x0007,
- 0x0078, 0x650c, 0x684b, 0x0000, 0x1078, 0x3b4c, 0x1078, 0x5cd4,
- 0x0d7f, 0x007c, 0x6003, 0x0002, 0x1078, 0x4cff, 0x1078, 0x4e10,
- 0x007c, 0x1078, 0x4cff, 0x1078, 0x228f, 0x0d7e, 0x6110, 0x2168,
- 0x1078, 0x6a03, 0x0040, 0x652c, 0x6837, 0x0103, 0x684b, 0x0029,
- 0x1078, 0x3b4c, 0x1078, 0x6b5f, 0x0d7f, 0x1078, 0x5cd4, 0x1078,
- 0x4e10, 0x007c, 0x684b, 0x0015, 0xd1fc, 0x0040, 0x653e, 0x684b,
- 0x0007, 0x8002, 0x8000, 0x810a, 0xa189, 0x0000, 0x6962, 0x685e,
- 0x007c, 0xa182, 0x0040, 0x0079, 0x6545, 0x6555, 0x6555, 0x6555,
- 0x6555, 0x6555, 0x6557, 0x6555, 0x65fb, 0x6603, 0x6555, 0x6555,
- 0x6555, 0x6555, 0x6555, 0x6555, 0x6555, 0x1078, 0x12d5, 0x077e,
- 0x0f7e, 0x0e7e, 0x0d7e, 0x2071, 0x7c8c, 0x6110, 0x2178, 0x7614,
- 0xa6b4, 0x0fff, 0x7e46, 0x7f4c, 0xc7e5, 0x7f4e, 0x6218, 0x2268,
- 0x6a3c, 0x8211, 0x6a3e, 0x86ff, 0x0040, 0x65ed, 0xa694, 0xff00,
- 0xa284, 0x0c00, 0x0040, 0x6578, 0x7018, 0x7862, 0x701c, 0x785e,
- 0xa284, 0x0300, 0x0040, 0x65ea, 0x1078, 0x132f, 0x1040, 0x12d5,
- 0x2d00, 0x784a, 0x7f4c, 0xa7bd, 0x0200, 0x7f4e, 0x6837, 0x0103,
- 0x7838, 0x683a, 0x783c, 0x683e, 0x7840, 0x6842, 0x6e46, 0xa68c,
- 0x00ff, 0xa186, 0x0002, 0x0040, 0x65b3, 0xa186, 0x0028, 0x00c0,
- 0x659d, 0x684b, 0x001c, 0x0078, 0x65b5, 0xd6dc, 0x0040, 0x65a8,
- 0x684b, 0x0015, 0x7318, 0x6b62, 0x731c, 0x6b5e, 0x0078, 0x65b5,
- 0xd6d4, 0x0040, 0x65b3, 0x684b, 0x0007, 0x7318, 0x6b62, 0x731c,
- 0x6b5e, 0x0078, 0x65b5, 0x684b, 0x0000, 0x6f4e, 0x7850, 0x6852,
- 0x7854, 0x6856, 0xa01e, 0xd6c4, 0x0040, 0x65ca, 0x7328, 0x732c,
- 0x6b56, 0x037e, 0x2308, 0x2019, 0x7c98, 0xad90, 0x0019, 0x1078,
- 0x67ec, 0x037f, 0xd6cc, 0x0040, 0x65ea, 0x7124, 0x695a, 0xa192,
- 0x0021, 0x00c8, 0x65de, 0x2071, 0x7c98, 0x831c, 0x2300, 0xae18,
- 0xad90, 0x001d, 0x1078, 0x67ec, 0x0078, 0x65ea, 0x7838, 0xd0fc,
- 0x0040, 0x65e7, 0x2009, 0x0020, 0x695a, 0x0078, 0x65d3, 0x2d78,
- 0x1078, 0x6784, 0xd6dc, 0x00c0, 0x65f0, 0xa006, 0x0078, 0x65f4,
- 0x2001, 0x0001, 0x7218, 0x731c, 0x1078, 0x15b6, 0x0d7f, 0x0e7f,
- 0x0f7f, 0x077f, 0x007c, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10,
- 0x1078, 0x1572, 0x007c, 0x0d7e, 0x6003, 0x0002, 0x6110, 0x2168,
- 0x694c, 0xd1e4, 0x0040, 0x666a, 0xd1cc, 0x0040, 0x663a, 0x6948,
- 0x6838, 0xd0fc, 0x0040, 0x6632, 0x017e, 0x684c, 0x007e, 0x6850,
- 0x007e, 0xad90, 0x000d, 0xa198, 0x000d, 0x2009, 0x0020, 0x157e,
- 0x21a8, 0x2304, 0x2012, 0x8318, 0x8210, 0x00f0, 0x6621, 0x157f,
- 0x007f, 0x6852, 0x007f, 0x684e, 0x017f, 0x2168, 0x1078, 0x1358,
- 0x0078, 0x6668, 0x017e, 0x1078, 0x1358, 0x0d7f, 0x1078, 0x67d9,
- 0x0078, 0x6668, 0x6837, 0x0103, 0x6944, 0xa184, 0x00ff, 0xa186,
- 0x0002, 0x0040, 0x6659, 0xa086, 0x0028, 0x00c0, 0x664b, 0x684b,
- 0x001c, 0x0078, 0x6666, 0xd1dc, 0x0040, 0x6652, 0x684b, 0x0015,
- 0x0078, 0x6666, 0xd1d4, 0x0040, 0x6659, 0x684b, 0x0007, 0x0078,
- 0x6666, 0x684b, 0x0000, 0x684c, 0xd0ac, 0x0040, 0x6666, 0x6810,
- 0x6914, 0xa115, 0x0040, 0x6666, 0x1078, 0x6532, 0x1078, 0x3b4c,
- 0x1078, 0x5cd4, 0x0d7f, 0x007c, 0x1078, 0x4c57, 0x0078, 0x6672,
- 0x1078, 0x4cff, 0x1078, 0x6a03, 0x0040, 0x6689, 0x0d7e, 0x6110,
- 0x2168, 0x6837, 0x0103, 0x2009, 0x770c, 0x210c, 0xd18c, 0x00c0,
- 0x6692, 0xd184, 0x00c0, 0x668e, 0x6108, 0x694a, 0x1078, 0x3b4c,
- 0x0d7f, 0x1078, 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x684b, 0x0004,
- 0x0078, 0x6686, 0x684b, 0x0004, 0x0078, 0x6686, 0xa182, 0x0040,
- 0x0079, 0x669a, 0x66aa, 0x66aa, 0x66aa, 0x66aa, 0x66aa, 0x66ac,
- 0x66aa, 0x66af, 0x66aa, 0x66aa, 0x66aa, 0x66aa, 0x66aa, 0x66aa,
- 0x66aa, 0x66aa, 0x1078, 0x12d5, 0x1078, 0x5cd4, 0x007c, 0x007e,
- 0x027e, 0xa016, 0x1078, 0x1572, 0x027f, 0x007f, 0x007c, 0xa182,
- 0x0085, 0x0079, 0x66bb, 0x66c4, 0x66c2, 0x66c2, 0x66c2, 0x66c2,
- 0x66c2, 0x66c2, 0x1078, 0x12d5, 0x6003, 0x0001, 0x6106, 0x1078,
- 0x48fb, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d50, 0x127f, 0x007c,
- 0xa186, 0x0013, 0x00c0, 0x66da, 0x6004, 0xa082, 0x0085, 0x2008,
- 0x0079, 0x670e, 0xa186, 0x0027, 0x00c0, 0x66fb, 0x1078, 0x4c57,
- 0x1078, 0x228f, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040,
- 0x66f1, 0x6837, 0x0103, 0x684b, 0x0029, 0x1078, 0x3b4c, 0x1078,
- 0x6b5f, 0x0d7f, 0x1078, 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x1078,
- 0x5d09, 0x0078, 0x66f6, 0xa186, 0x0014, 0x00c0, 0x66f7, 0x1078,
- 0x4c57, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x66f1,
- 0x6837, 0x0103, 0x684b, 0x0006, 0x0078, 0x66ed, 0x6717, 0x6715,
- 0x6715, 0x6715, 0x6715, 0x6715, 0x6720, 0x1078, 0x12d5, 0x1078,
- 0x4c57, 0x6017, 0x0014, 0x6003, 0x000c, 0x1078, 0x4d50, 0x007c,
- 0x1078, 0x4c57, 0x6017, 0x0014, 0x6003, 0x000e, 0x1078, 0x4d50,
- 0x007c, 0xa182, 0x008c, 0x00c8, 0x6733, 0xa182, 0x0085, 0x0048,
- 0x6733, 0x0079, 0x6736, 0x1078, 0x5d09, 0x007c, 0x673d, 0x673d,
- 0x673d, 0x673d, 0x673f, 0x675e, 0x673d, 0x1078, 0x12d5, 0x0d7e,
- 0x1078, 0x6b5f, 0x1078, 0x6a03, 0x0040, 0x675a, 0x6010, 0x2068,
- 0x6837, 0x0103, 0x6850, 0xd0b4, 0x0040, 0x6752, 0x684b, 0x0006,
- 0x0078, 0x6756, 0x684b, 0x0005, 0x1078, 0x6c12, 0x6847, 0x0000,
- 0x1078, 0x3b4c, 0x1078, 0x5cd4, 0x0d7f, 0x007c, 0x0d7e, 0x6010,
- 0x2068, 0x1078, 0x6a03, 0x0040, 0x6779, 0x6837, 0x0103, 0x6850,
- 0xd0b4, 0x0040, 0x676f, 0x684b, 0x0006, 0x0078, 0x6773, 0x684b,
- 0x0005, 0x1078, 0x6c12, 0x6847, 0x0000, 0x1078, 0x3b4c, 0x1078,
- 0x6b5f, 0x0d7f, 0x1078, 0x5cd4, 0x007c, 0x1078, 0x4c57, 0x1078,
- 0x5cd4, 0x1078, 0x4d50, 0x007c, 0x057e, 0x067e, 0x0d7e, 0x0f7e,
- 0x2029, 0x0001, 0xa182, 0x0101, 0x00c8, 0x6790, 0x0078, 0x6792,
- 0x2009, 0x0100, 0x2130, 0x2069, 0x7c98, 0x831c, 0x2300, 0xad18,
- 0x2009, 0x0020, 0xaf90, 0x001d, 0x1078, 0x67ec, 0xa6b2, 0x0020,
- 0x7804, 0xa06d, 0x0040, 0x67a6, 0x1078, 0x1358, 0x1078, 0x132f,
- 0x0040, 0x67d0, 0x8528, 0x6837, 0x0110, 0x683b, 0x0000, 0x2d20,
- 0x7c06, 0xa68a, 0x003d, 0x00c8, 0x67bc, 0x2608, 0xad90, 0x000f,
- 0x1078, 0x67ec, 0x0078, 0x67d0, 0xa6b2, 0x003c, 0x2009, 0x003c,
- 0x2d78, 0xad90, 0x000f, 0x1078, 0x67ec, 0x0078, 0x67a6, 0x0f7f,
- 0x852f, 0xa5ad, 0x0003, 0x7d36, 0xa5ac, 0x0000, 0x0078, 0x67d5,
- 0x0f7f, 0x852f, 0xa5ad, 0x0003, 0x7d36, 0x0d7f, 0x067f, 0x057f,
- 0x007c, 0x0f7e, 0x8dff, 0x0040, 0x67ea, 0x6804, 0xa07d, 0x0040,
- 0x67e8, 0x6807, 0x0000, 0x1078, 0x3b4c, 0x2f68, 0x0078, 0x67dd,
- 0x1078, 0x3b4c, 0x0f7f, 0x007c, 0x157e, 0xa184, 0x0001, 0x0040,
- 0x67f2, 0x8108, 0x810c, 0x21a8, 0x2304, 0x8007, 0x2012, 0x8318,
- 0x8210, 0x00f0, 0x67f4, 0x157f, 0x007c, 0x127e, 0x2091, 0x8000,
- 0x601c, 0xa084, 0x000f, 0x1079, 0x6807, 0x127f, 0x007c, 0x6816,
- 0x680f, 0x6811, 0x682f, 0x680f, 0x6811, 0x6811, 0x6811, 0x1078,
- 0x12d5, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c, 0x0d7e, 0x6010,
- 0x2068, 0x1078, 0x6a03, 0x0040, 0x682c, 0xa00e, 0x2001, 0x0005,
- 0x1078, 0x3bdc, 0x1078, 0x6c12, 0x1078, 0x3b4c, 0x1078, 0x5cd4,
- 0xa085, 0x0001, 0x0d7f, 0x007c, 0xa006, 0x0078, 0x682a, 0x6000,
- 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6837, 0x007c, 0x6847,
- 0x6864, 0x6849, 0x6875, 0x6860, 0x6847, 0x6811, 0x6816, 0x6816,
- 0x6811, 0x6811, 0x6811, 0x6811, 0x6811, 0x6811, 0x6811, 0x1078,
- 0x12d5, 0x0d7e, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x6852,
- 0x1078, 0x6c12, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f,
- 0x0002, 0x1078, 0x48fb, 0x1078, 0x4d50, 0xa085, 0x0001, 0x007c,
- 0x1078, 0x1676, 0x0078, 0x6849, 0x0e7e, 0x2071, 0x7936, 0x7024,
- 0xac06, 0x00c0, 0x686d, 0x1078, 0x57a8, 0x1078, 0x56df, 0x0e7f,
- 0x00c0, 0x6849, 0x1078, 0x6811, 0x007c, 0x037e, 0x0e7e, 0x2071,
- 0x7936, 0x703c, 0xac06, 0x00c0, 0x6885, 0x2019, 0x0000, 0x1078,
- 0x583a, 0x0e7f, 0x037f, 0x0078, 0x6849, 0x1078, 0x5b16, 0x0e7f,
- 0x037f, 0x00c0, 0x6849, 0x1078, 0x6811, 0x007c, 0x0c7e, 0x601c,
- 0xa084, 0x000f, 0x1079, 0x6896, 0x0c7f, 0x007c, 0x68a5, 0x6902,
- 0x69a7, 0x68a9, 0x68a5, 0x68a5, 0x7293, 0x5cd4, 0x6902, 0x1078,
- 0x6b99, 0x00c0, 0x68a5, 0x1078, 0x5f29, 0x007c, 0x6017, 0x0001,
- 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x68b1,
- 0x007c, 0x68c1, 0x68c3, 0x68e3, 0x68f5, 0x68f5, 0x68c1, 0x68a5,
- 0x68a5, 0x68a5, 0x68f5, 0x68f5, 0x68c1, 0x68c1, 0x68c1, 0x68c1,
- 0x68ff, 0x1078, 0x12d5, 0x0e7e, 0x6010, 0x2070, 0x7050, 0xc0b5,
- 0x7052, 0x2071, 0x7936, 0x7024, 0xac06, 0x0040, 0x68df, 0x1078,
- 0x56df, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002, 0x6017,
- 0x0014, 0x1078, 0x48fb, 0x1078, 0x4d50, 0x0e7f, 0x007c, 0x6017,
- 0x0001, 0x0078, 0x68dd, 0x0d7e, 0x6010, 0x2068, 0x6850, 0xc0b5,
- 0x6852, 0x0d7f, 0x6007, 0x0085, 0x6003, 0x000b, 0x601f, 0x0002,
- 0x1078, 0x48fb, 0x1078, 0x4d50, 0x007c, 0x0d7e, 0x6017, 0x0001,
- 0x6010, 0x2068, 0x6850, 0xc0b5, 0x6852, 0x0d7f, 0x007c, 0x1078,
- 0x5cd4, 0x007c, 0x6000, 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079,
- 0x690a, 0x007c, 0x691a, 0x68a6, 0x691c, 0x691a, 0x691c, 0x691a,
- 0x691a, 0x691a, 0x689f, 0x689f, 0x691a, 0x691a, 0x691a, 0x691a,
- 0x691a, 0x691a, 0x1078, 0x12d5, 0x0d7e, 0x6018, 0x2068, 0x6804,
- 0xa084, 0x00ff, 0x0d7f, 0xa08a, 0x000c, 0x10c8, 0x12d5, 0x1079,
- 0x692a, 0x007c, 0x6936, 0x6955, 0x6936, 0x6955, 0x6936, 0x6955,
- 0x6938, 0x6941, 0x6936, 0x6955, 0x6936, 0x694e, 0x1078, 0x12d5,
- 0x6004, 0xa08e, 0x0004, 0x0040, 0x6950, 0xa08e, 0x0002, 0x0040,
- 0x6950, 0x6004, 0x1078, 0x6b99, 0x0040, 0x699f, 0xa08e, 0x0021,
- 0x0040, 0x69a3, 0xa08e, 0x0022, 0x0040, 0x699f, 0x1078, 0x228f,
- 0x1078, 0x5f29, 0x1078, 0x5cd4, 0x007c, 0x0c7e, 0x0d7e, 0x6104,
- 0xa186, 0x0016, 0x0040, 0x698f, 0xa186, 0x0002, 0x00c0, 0x697e,
- 0x6018, 0x2068, 0x68a0, 0xd0bc, 0x00c0, 0x697e, 0x6840, 0xa084,
- 0x00ff, 0xa005, 0x0040, 0x697e, 0x8001, 0x6842, 0x6013, 0x0000,
- 0x601f, 0x0007, 0x6017, 0x0398, 0x1078, 0x5c6e, 0x0040, 0x697e,
- 0x2d00, 0x601a, 0x601f, 0x0001, 0x0078, 0x698f, 0x0d7f, 0x0c7f,
- 0x1078, 0x5f29, 0x1078, 0x228f, 0x0e7e, 0x127e, 0x2091, 0x8000,
- 0x1078, 0x22b1, 0x127f, 0x0e7f, 0x1078, 0x5cd4, 0x007c, 0x2001,
- 0x0002, 0x1078, 0x37ae, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078,
- 0x4948, 0x1078, 0x4d50, 0x0d7f, 0x0c7f, 0x0078, 0x698e, 0x1078,
- 0x5f29, 0x0078, 0x6952, 0x1078, 0x5f38, 0x0078, 0x6952, 0x6000,
- 0xa08a, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x69af, 0x007c, 0x69bf,
- 0x69bf, 0x69bf, 0x69bf, 0x69bf, 0x69bf, 0x69bf, 0x69bf, 0x69bf,
- 0x68a5, 0x69bf, 0x68a6, 0x69c1, 0x68a6, 0x69ca, 0x69bf, 0x1078,
- 0x12d5, 0x6007, 0x008b, 0x6003, 0x000d, 0x1078, 0x48fb, 0x1078,
- 0x4d50, 0x007c, 0x1078, 0x6b5f, 0x1078, 0x6a03, 0x0040, 0x69ec,
- 0x1078, 0x228f, 0x0d7e, 0x1078, 0x6a03, 0x0040, 0x69df, 0x6010,
- 0x2068, 0x6837, 0x0103, 0x684b, 0x0006, 0x1078, 0x3b4c, 0x0d7f,
- 0x601f, 0x0001, 0x6007, 0x0001, 0x6003, 0x0001, 0x1078, 0x4948,
- 0x1078, 0x4d50, 0x0078, 0x69ee, 0x1078, 0x5cd4, 0x007c, 0xa284,
- 0x0007, 0x00c0, 0x6a00, 0xa282, 0x7e00, 0x0048, 0x6a00, 0x2001,
- 0x7715, 0x2004, 0xa202, 0x00c8, 0x6a00, 0xa085, 0x0001, 0x007c,
- 0xa006, 0x0078, 0x69ff, 0x027e, 0x0e7e, 0x2071, 0x7700, 0x6210,
- 0x7058, 0xa202, 0x0048, 0x6a15, 0x705c, 0xa202, 0x00c8, 0x6a15,
- 0xa085, 0x0001, 0x0e7f, 0x027f, 0x007c, 0xa006, 0x0078, 0x6a12,
- 0x0e7e, 0x0c7e, 0x037e, 0x007e, 0x127e, 0x2091, 0x8000, 0x2061,
- 0x7e00, 0x2071, 0x7700, 0x7344, 0x7060, 0xa302, 0x00c8, 0x6a3e,
- 0x601c, 0xa206, 0x00c0, 0x6a36, 0x1078, 0x6b99, 0x00c0, 0x6a32,
- 0x1078, 0x5f29, 0x0c7e, 0x1078, 0x5cd4, 0x0c7f, 0xace0, 0x0008,
- 0x7054, 0xac02, 0x00c8, 0x6a3e, 0x0078, 0x6a23, 0x127f, 0x007f,
- 0x037f, 0x0c7f, 0x0e7f, 0x007c, 0x0e7e, 0x0c7e, 0x017e, 0x127e,
- 0x2091, 0x8000, 0xa188, 0x7820, 0x210c, 0x81ff, 0x0040, 0x6a6b,
- 0x2061, 0x7e00, 0x2071, 0x7700, 0x7344, 0x7060, 0xa302, 0x00c8,
- 0x6a6b, 0x6018, 0xa106, 0x00c0, 0x6a65, 0x1078, 0x228f, 0x017e,
- 0x0c7e, 0x1078, 0x5cd4, 0x0c7f, 0x017f, 0xace0, 0x0008, 0x7054,
- 0xac02, 0x0048, 0x6a59, 0x127f, 0x017f, 0x0c7f, 0x0e7f, 0x007c,
- 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5c6e,
- 0x057f, 0x0040, 0x6a89, 0x6612, 0x651a, 0x601f, 0x0003, 0x2009,
- 0x004b, 0x1078, 0x5cfb, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
- 0x007c, 0xa006, 0x0078, 0x6a85, 0x0c7e, 0x057e, 0x127e, 0x2091,
- 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x5c6e, 0x057f, 0x0040, 0x6ab3,
- 0x6013, 0x0000, 0x651a, 0x601f, 0x0003, 0x0c7e, 0x2560, 0x1078,
- 0x39f0, 0x0c7f, 0x1078, 0x4a38, 0x1078, 0x497b, 0x2c08, 0x1078,
- 0x7431, 0x2009, 0x004c, 0x1078, 0x5cfb, 0xa085, 0x0001, 0x127f,
- 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6aaf, 0x0c7e, 0x057e,
- 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e, 0x1078, 0x5c6e, 0x057f,
- 0x0040, 0x6ade, 0x6612, 0x651a, 0x601f, 0x0003, 0x2019, 0x0005,
- 0x0c7e, 0x2560, 0x1078, 0x39f0, 0x0c7f, 0x1078, 0x4a38, 0x1078,
- 0x497b, 0x2c08, 0x1078, 0x7431, 0x2009, 0x004d, 0x1078, 0x5cfb,
- 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f, 0x007c, 0xa006, 0x0078,
- 0x6ada, 0x0c7e, 0x057e, 0x127e, 0x2091, 0x8000, 0x62a0, 0x0c7e,
- 0x1078, 0x5c6e, 0x057f, 0x0040, 0x6b09, 0x6612, 0x651a, 0x601f,
- 0x0003, 0x2019, 0x0005, 0x0c7e, 0x2560, 0x1078, 0x39f0, 0x0c7f,
- 0x1078, 0x4a38, 0x1078, 0x497b, 0x2c08, 0x1078, 0x7431, 0x2009,
- 0x004e, 0x1078, 0x5cfb, 0xa085, 0x0001, 0x127f, 0x057f, 0x0c7f,
- 0x007c, 0xa006, 0x0078, 0x6b05, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x0c7e, 0x1078, 0x5c6e, 0x017f, 0x0040, 0x6b25, 0x660a, 0x611a,
- 0x601f, 0x0001, 0x2d00, 0x6012, 0x2009, 0x001f, 0x1078, 0x5cfb,
- 0xa085, 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6b22,
- 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5c6e, 0x017f,
- 0x0040, 0x6b41, 0x660a, 0x611a, 0x601f, 0x0008, 0x2d00, 0x6012,
- 0x2009, 0x0021, 0x1078, 0x5cfb, 0xa085, 0x0001, 0x127f, 0x0c7f,
- 0x007c, 0xa006, 0x0078, 0x6b3e, 0x0c7e, 0x127e, 0x2091, 0x8000,
- 0x0c7e, 0x1078, 0x5c6e, 0x017f, 0x0040, 0x6b5c, 0x611a, 0x601f,
- 0x0001, 0x2d00, 0x6012, 0x2009, 0x0000, 0x1078, 0x5cfb, 0xa085,
- 0x0001, 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6b59, 0x027e,
- 0x0d7e, 0x6218, 0x2268, 0x6a3c, 0x82ff, 0x0040, 0x6b69, 0x8211,
- 0x6a3e, 0x0d7f, 0x027f, 0x007c, 0x6013, 0x0000, 0x601f, 0x0007,
- 0x6017, 0x0014, 0x007c, 0x067e, 0x0c7e, 0x0d7e, 0x2031, 0x7752,
- 0x2634, 0xd6e4, 0x0040, 0x6b81, 0x6618, 0x2660, 0x6e48, 0x1078,
- 0x38fc, 0x0d7f, 0x0c7f, 0x067f, 0x007c, 0x007e, 0x017e, 0x6004,
- 0xa08e, 0x0002, 0x0040, 0x6b96, 0xa08e, 0x0003, 0x0040, 0x6b96,
- 0xa08e, 0x0004, 0x0040, 0x6b96, 0xa085, 0x0001, 0x017f, 0x007f,
- 0x007c, 0x007e, 0x017e, 0x6004, 0xa08e, 0x0000, 0x0040, 0x6bae,
- 0xa08e, 0x001f, 0x0040, 0x6bae, 0xa08e, 0x0028, 0x0040, 0x6bae,
- 0xa08e, 0x0029, 0x0040, 0x6bae, 0xa085, 0x0001, 0x017f, 0x007f,
- 0x007c, 0x0c7e, 0x127e, 0x2091, 0x8000, 0x0c7e, 0x1078, 0x5c6e,
- 0x017f, 0x0040, 0x6bcb, 0x611a, 0x601f, 0x0001, 0x2d00, 0x6012,
- 0x1078, 0x228f, 0x2009, 0x0028, 0x1078, 0x5cfb, 0xa085, 0x0001,
- 0x127f, 0x0c7f, 0x007c, 0xa006, 0x0078, 0x6bc8, 0xa186, 0x0015,
- 0x00c0, 0x6be3, 0x2011, 0x771e, 0x2204, 0xa086, 0x0074, 0x00c0,
- 0x6be3, 0x1078, 0x6199, 0x6003, 0x0001, 0x6007, 0x0029, 0x1078,
- 0x4948, 0x0078, 0x6be7, 0x1078, 0x5f29, 0x1078, 0x5cd4, 0x007c,
- 0xa186, 0x0015, 0x00c0, 0x6c05, 0x2011, 0x771e, 0x2204, 0xa086,
- 0x0014, 0x00c0, 0x6c05, 0x0d7e, 0x6018, 0x2068, 0x1078, 0x3882,
- 0x0d7f, 0x1078, 0x61a3, 0x00c0, 0x6c05, 0x2001, 0x0006, 0x1078,
- 0x37ae, 0x1078, 0x5d7f, 0x0078, 0x6c09, 0x1078, 0x5f29, 0x1078,
- 0x5cd4, 0x007c, 0x6848, 0xa086, 0x0005, 0x00c0, 0x6c11, 0x1078,
- 0x6c12, 0x007c, 0x6850, 0xc0ad, 0x6852, 0x007c, 0x067e, 0x6000,
- 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6c20, 0x067f, 0x007c,
- 0x6c30, 0x6e07, 0x6ee8, 0x6c30, 0x6c30, 0x6c30, 0x6c30, 0x6c30,
- 0x6c6a, 0x6f56, 0x6c30, 0x6c30, 0x6c30, 0x6c30, 0x6c30, 0x6c30,
- 0x1078, 0x12d5, 0x067e, 0x6000, 0xa0b2, 0x0010, 0x10c8, 0x12d5,
- 0x1079, 0x6c3c, 0x067f, 0x007c, 0x6c4c, 0x7242, 0x6c4c, 0x6c4c,
- 0x6c4c, 0x6c4c, 0x6c4c, 0x6c4c, 0x721d, 0x728c, 0x6c4c, 0x6c4c,
- 0x6c4c, 0x6c4c, 0x6c4c, 0x6c4c, 0x1078, 0x12d5, 0x067e, 0x6000,
- 0xa0b2, 0x0010, 0x10c8, 0x12d5, 0x1079, 0x6c58, 0x067f, 0x007c,
- 0x6c68, 0x708e, 0x7100, 0x7122, 0x716e, 0x6c68, 0x6c68, 0x71c8,
- 0x6f62, 0x7205, 0x7209, 0x6c68, 0x6c68, 0x6c68, 0x6c68, 0x6c68,
- 0x1078, 0x12d5, 0xa1b2, 0x0030, 0x10c8, 0x12d5, 0x2100, 0x0079,
- 0x6c71, 0x6ca1, 0x6d7e, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1,
- 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1,
- 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1, 0x6ca1,
- 0x6ca3, 0x6cd2, 0x6cdd, 0x6d05, 0x6d0b, 0x6d3f, 0x6d77, 0x6ca1,
- 0x6ca1, 0x6d86, 0x6ca1, 0x6ca1, 0x6d8d, 0x6d94, 0x6ca1, 0x6ca1,
- 0x6ca1, 0x6ca1, 0x6ca1, 0x6db1, 0x6ca1, 0x6ca1, 0x6dbc, 0x6ca1,
- 0x6ca1, 0x1078, 0x12d5, 0x1078, 0x3af8, 0x6618, 0x0c7e, 0x2660,
- 0x1078, 0x3818, 0x0c7f, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff,
- 0xa082, 0x0006, 0x0048, 0x6cc4, 0x1078, 0x736d, 0x00c0, 0x6cff,
- 0x1078, 0x730b, 0x00c0, 0x6cc0, 0x6007, 0x0008, 0x0078, 0x6d79,
- 0x6007, 0x0009, 0x0078, 0x6d79, 0x1078, 0x7502, 0x0040, 0x6cce,
- 0x1078, 0x736d, 0x0040, 0x6cb8, 0x0078, 0x6cff, 0x6013, 0x1900,
- 0x0078, 0x6cc0, 0x6106, 0x1078, 0x72cd, 0x6007, 0x0006, 0x0078,
- 0x6d79, 0x6007, 0x0007, 0x0078, 0x6d79, 0x0d7e, 0x6618, 0x2668,
- 0x6e04, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6cef,
- 0xa686, 0x0004, 0x0040, 0x6cef, 0x0d7f, 0x0078, 0x6cff, 0x1078,
- 0x73cb, 0x00c0, 0x6cfa, 0x1078, 0x3882, 0x6007, 0x000a, 0x0d7f,
- 0x0078, 0x6d79, 0x6007, 0x000b, 0x0d7f, 0x0078, 0x6d79, 0x1078,
- 0x228f, 0x6007, 0x0001, 0x0078, 0x6d79, 0x1078, 0x228f, 0x6007,
- 0x000c, 0x0078, 0x6d79, 0x1078, 0x3af8, 0x6618, 0xa6b0, 0x0001,
- 0x2634, 0xa684, 0x00ff, 0xa082, 0x0006, 0x0048, 0x6d2c, 0xa6b4,
- 0xff00, 0x8637, 0xa686, 0x0006, 0x00c0, 0x6cff, 0x1078, 0x73da,
- 0x00c0, 0x6d26, 0x6007, 0x000e, 0x0078, 0x6d79, 0x1078, 0x228f,
- 0x6007, 0x000f, 0x0078, 0x6d79, 0x1078, 0x7502, 0x0040, 0x6d39,
- 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6d1e, 0x0078,
- 0x6cff, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x6d79, 0x1078,
- 0x3af8, 0x6618, 0xa6b0, 0x0001, 0x2634, 0xa684, 0x00ff, 0xa082,
- 0x0006, 0x0048, 0x6d64, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x00c0, 0x6cff, 0x1078, 0x7405, 0x00c0, 0x6d5e, 0x1078, 0x730b,
- 0x00c0, 0x6d5e, 0x6007, 0x0010, 0x0078, 0x6d79, 0x1078, 0x228f,
- 0x6007, 0x0011, 0x0078, 0x6d79, 0x1078, 0x7502, 0x0040, 0x6d71,
- 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006, 0x0040, 0x6d52, 0x0078,
- 0x6cff, 0x6013, 0x1900, 0x6007, 0x0009, 0x0078, 0x6d79, 0x6007,
- 0x0012, 0x6003, 0x0001, 0x1078, 0x4948, 0x007c, 0x6007, 0x0001,
- 0x6003, 0x0001, 0x1078, 0x4948, 0x0078, 0x6d7d, 0x6007, 0x0020,
- 0x6003, 0x0001, 0x1078, 0x4948, 0x007c, 0x6007, 0x0023, 0x6003,
- 0x0001, 0x1078, 0x4948, 0x007c, 0x017e, 0x027e, 0x2011, 0x7c88,
- 0x2214, 0x2c08, 0x1078, 0x75ca, 0x00c0, 0x6da5, 0x2160, 0x6007,
- 0x0026, 0x6013, 0x1700, 0x0078, 0x6daa, 0x1078, 0x5cd4, 0x2160,
- 0x6007, 0x0025, 0x6003, 0x0001, 0x1078, 0x4948, 0x027f, 0x017f,
- 0x007c, 0x6106, 0x1078, 0x6dc3, 0x6007, 0x002b, 0x0078, 0x6d79,
- 0x6007, 0x002c, 0x0078, 0x6d79, 0x6106, 0x1078, 0x6dc8, 0x6007,
- 0x002e, 0x0078, 0x6d79, 0x0d7e, 0x1078, 0x6dee, 0x0d7f, 0x007c,
- 0x0d7e, 0x1078, 0x6dfd, 0x00c0, 0x6de7, 0x680c, 0xa08c, 0xff00,
- 0x6824, 0xa084, 0x00ff, 0xa115, 0x6212, 0xd1e4, 0x0040, 0x6ddc,
- 0x2009, 0x0001, 0x0078, 0x6de3, 0xd1ec, 0x0040, 0x6de7, 0x2009,
- 0x0000, 0xa294, 0x00ff, 0x1078, 0x22d3, 0x0078, 0x6deb, 0xa085,
- 0x0001, 0x0078, 0x6dec, 0xa006, 0x0d7f, 0x007c, 0x2069, 0x7c8d,
- 0x6800, 0xa082, 0x0010, 0x00c8, 0x6dfb, 0x6013, 0x0000, 0xa085,
- 0x0001, 0x0078, 0x6dfc, 0xa006, 0x007c, 0x6013, 0x0000, 0x2069,
- 0x7c8c, 0x6808, 0xa084, 0xff00, 0xa086, 0x0800, 0x007c, 0x6004,
- 0xa0b2, 0x0030, 0x10c8, 0x12d5, 0xa1b6, 0x0013, 0x00c0, 0x6e13,
- 0x2008, 0x0079, 0x6e26, 0xa1b6, 0x0027, 0x0040, 0x6e1b, 0xa1b6,
- 0x0014, 0x10c0, 0x12d5, 0x2001, 0x0007, 0x1078, 0x37bc, 0x1078,
- 0x4c57, 0x1078, 0x6b6c, 0x1078, 0x4d50, 0x007c, 0x6e56, 0x6e58,
- 0x6e56, 0x6e56, 0x6e56, 0x6e58, 0x6e60, 0x6ec3, 0x6e86, 0x6ec3,
- 0x6e9a, 0x6ec3, 0x6e60, 0x6ec3, 0x6ebb, 0x6ec3, 0x6ebb, 0x6ec3,
- 0x6ec3, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56,
- 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6e56, 0x6ec3, 0x6e56,
- 0x6e56, 0x6ec3, 0x6e56, 0x6ec3, 0x6ec3, 0x6e56, 0x6e56, 0x6e56,
- 0x6e56, 0x6ec3, 0x6ec3, 0x6e56, 0x6ec3, 0x6ec3, 0x1078, 0x12d5,
- 0x1078, 0x4c57, 0x6003, 0x0002, 0x1078, 0x4d50, 0x0078, 0x6ec9,
- 0x0f7e, 0x2079, 0x7751, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x6ec3,
- 0x2001, 0x0000, 0x1078, 0x379a, 0x2001, 0x0002, 0x1078, 0x37ae,
- 0x1078, 0x4c57, 0x601f, 0x0001, 0x6003, 0x0001, 0x6007, 0x0002,
- 0x1078, 0x4948, 0x1078, 0x4d50, 0x0c7e, 0x6118, 0x2160, 0x2009,
- 0x0001, 0x1078, 0x4650, 0x0c7f, 0x0078, 0x6ec9, 0x6618, 0x0d7e,
- 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, 0x8637, 0xa686, 0x0006,
- 0x0040, 0x6ec3, 0xa686, 0x0004, 0x0040, 0x6ec3, 0x2001, 0x0004,
- 0x0078, 0x6ec1, 0x2001, 0x7700, 0x2004, 0xa086, 0x0003, 0x00c0,
- 0x6ea3, 0x1078, 0x2d9e, 0x2001, 0x0006, 0x1078, 0x6eca, 0x6618,
- 0x0d7e, 0x2668, 0x6e04, 0x0d7f, 0xa6b4, 0xff00, 0x8637, 0xa686,
- 0x0006, 0x0040, 0x6ec3, 0x2001, 0x0006, 0x0078, 0x6ec1, 0x2001,
- 0x0004, 0x0078, 0x6ec1, 0x2001, 0x0006, 0x1078, 0x6eca, 0x0078,
- 0x6ec3, 0x1078, 0x37bc, 0x1078, 0x4c57, 0x1078, 0x5cd4, 0x1078,
- 0x4d50, 0x007c, 0x017e, 0x0d7e, 0x6118, 0x2168, 0x6900, 0xd184,
- 0x0040, 0x6ee5, 0x6104, 0xa18e, 0x000a, 0x00c0, 0x6edd, 0x699c,
- 0xd1a4, 0x00c0, 0x6edd, 0x2001, 0x0007, 0x1078, 0x37ae, 0x2001,
- 0x0000, 0x1078, 0x379a, 0x1078, 0x22b1, 0x0d7f, 0x017f, 0x007c,
- 0x0d7e, 0x6618, 0x2668, 0x6804, 0xa084, 0xff00, 0x8007, 0x0d7f,
- 0xa0b2, 0x000c, 0x10c8, 0x12d5, 0xa1b6, 0x0015, 0x00c0, 0x6efc,
- 0x1079, 0x6f03, 0x0078, 0x6f02, 0xa1b6, 0x0016, 0x10c0, 0x12d5,
- 0x1079, 0x6f3b, 0x007c, 0x5fb3, 0x5fb3, 0x5fb3, 0x5fb3, 0x5fb3,
- 0x5fb3, 0x5fb3, 0x6f0f, 0x5fb3, 0x5fb3, 0x5fb3, 0x5fb3, 0x0f7e,
- 0x2079, 0x7751, 0x7804, 0x0f7f, 0xd0ac, 0x00c0, 0x6f2b, 0x2001,
- 0x0000, 0x1078, 0x379a, 0x2001, 0x0002, 0x1078, 0x37ae, 0x601f,
- 0x0001, 0x6003, 0x0001, 0x6007, 0x0002, 0x1078, 0x4948, 0x1078,
- 0x4d50, 0x0078, 0x6f3a, 0x2011, 0x7c83, 0x220c, 0x017e, 0x0c7e,
- 0x1078, 0x3806, 0x00c0, 0x6f3a, 0x1078, 0x35f9, 0x0c7f, 0x017f,
- 0x1078, 0x5cd4, 0x007c, 0x5fb3, 0x5fb3, 0x5fb3, 0x5fb3, 0x5fb3,
- 0x5fb3, 0x5fb3, 0x6f47, 0x5fb3, 0x5fb3, 0x5fb3, 0x5fb3, 0x1078,
- 0x6196, 0x00c0, 0x6f53, 0x6003, 0x0001, 0x6007, 0x0001, 0x1078,
- 0x4948, 0x0078, 0x6f55, 0x1078, 0x5cd4, 0x007c, 0x6004, 0xa08a,
- 0x0030, 0x10c8, 0x12d5, 0x1078, 0x4c57, 0x1078, 0x6b6c, 0x1078,
- 0x4d50, 0x007c, 0xa182, 0x0040, 0x0079, 0x6f66, 0x6f76, 0x6f76,
- 0x6f76, 0x6f76, 0x6f78, 0x6f76, 0x6f76, 0x6f76, 0x6f76, 0x6f76,
- 0x6f76, 0x6f76, 0x6f76, 0x6f76, 0x6f76, 0x6f76, 0x1078, 0x12d5,
- 0x0d7e, 0x0e7e, 0x0f7e, 0x157e, 0x047e, 0x027e, 0x6106, 0x2071,
- 0x7c80, 0x7444, 0xa4a4, 0xe600, 0x0040, 0x6fdc, 0x2009, 0x0000,
- 0x0c7e, 0x1078, 0x46e1, 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001,
- 0x0040, 0x7047, 0x1078, 0x47a0, 0x0040, 0x7072, 0xa295, 0x0200,
- 0x6a02, 0x0078, 0x6fa1, 0x2009, 0x0001, 0x2011, 0x0200, 0x1078,
- 0x478a, 0x1078, 0x132f, 0x1040, 0x12d5, 0x6003, 0x0007, 0x2d00,
- 0x6837, 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x6c5a, 0x2c00,
- 0x685e, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x694a, 0xa084,
- 0xff00, 0x6846, 0x684f, 0x0000, 0x6857, 0x0036, 0x1078, 0x3b4c,
- 0xa486, 0x2000, 0x00c0, 0x6fca, 0x2019, 0x0017, 0x1078, 0x758f,
- 0x0078, 0x7034, 0xa486, 0x0400, 0x00c0, 0x6fd4, 0x2019, 0x0002,
- 0x1078, 0x758f, 0x0078, 0x7034, 0xa486, 0x0200, 0x00c0, 0x6fda,
- 0x1078, 0x7580, 0x0078, 0x7034, 0x2009, 0x0000, 0x0c7e, 0x1078,
- 0x46e1, 0x2c68, 0x0c7f, 0x6a00, 0xa284, 0x0001, 0x0040, 0x708a,
- 0xa284, 0x0300, 0x00c0, 0x7082, 0x6804, 0xa005, 0x0040, 0x7072,
- 0x8001, 0x6806, 0x6003, 0x0007, 0x1078, 0x1314, 0x0040, 0x703b,
- 0x6013, 0x0000, 0x6803, 0x0000, 0x6837, 0x0116, 0x683b, 0x0000,
- 0x2c00, 0x684a, 0x6018, 0x2078, 0x78a0, 0x8007, 0x7130, 0x6986,
- 0x6846, 0x6853, 0x003d, 0x7044, 0xa084, 0x0003, 0xa086, 0x0002,
- 0x00c0, 0x7016, 0x684f, 0x0040, 0x0078, 0x7020, 0xa086, 0x0001,
- 0x00c0, 0x701e, 0x684f, 0x0080, 0x0078, 0x7020, 0x684f, 0x0000,
- 0x20a9, 0x000a, 0x2001, 0x7c90, 0xad90, 0x0015, 0x200c, 0x810f,
- 0x2112, 0x8000, 0x8210, 0x00f0, 0x7026, 0x200c, 0x6982, 0x8000,
- 0x200c, 0x697e, 0x1078, 0x3b4c, 0x027f, 0x047f, 0x157f, 0x0f7f,
- 0x0e7f, 0x0d7f, 0x007c, 0x6013, 0x0100, 0x6003, 0x0001, 0x6007,
- 0x0041, 0x1078, 0x48fb, 0x1078, 0x4d50, 0x0078, 0x7034, 0x2069,
- 0x7c92, 0x2d04, 0xa084, 0xff00, 0xa086, 0x1200, 0x00c0, 0x7066,
- 0x2069, 0x7c80, 0x686c, 0xa084, 0x00ff, 0x017e, 0x6110, 0xa18c,
- 0x0700, 0xa10d, 0x6112, 0x017f, 0x6003, 0x0001, 0x6007, 0x0043,
- 0x1078, 0x48fb, 0x1078, 0x4d50, 0x0078, 0x7034, 0x6013, 0x0200,
- 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x48fb, 0x1078, 0x4d50,
- 0x0078, 0x7034, 0x6013, 0x0300, 0x0078, 0x7078, 0x6013, 0x0100,
- 0x6003, 0x0001, 0x6007, 0x0041, 0x1078, 0x48fb, 0x1078, 0x4d50,
- 0x0078, 0x7034, 0x6013, 0x0500, 0x0078, 0x7078, 0x6013, 0x0600,
- 0x0078, 0x7047, 0x6013, 0x0200, 0x0078, 0x7047, 0xa186, 0x0013,
- 0x00c0, 0x70a0, 0x6004, 0xa08a, 0x0040, 0x1048, 0x12d5, 0xa08a,
- 0x0050, 0x10c8, 0x12d5, 0xa082, 0x0040, 0x2008, 0x0079, 0x70d1,
- 0xa186, 0x0047, 0x00c0, 0x70a6, 0x0078, 0x7100, 0xa186, 0x0027,
- 0x0040, 0x70ae, 0xa186, 0x0014, 0x10c0, 0x12d5, 0x6004, 0xa082,
- 0x0040, 0x2008, 0x0079, 0x70b4, 0x70c4, 0x70c6, 0x70c6, 0x70c4,
- 0x70c4, 0x70c4, 0x70c4, 0x70c4, 0x70c4, 0x70c4, 0x70c4, 0x70c4,
- 0x70c4, 0x70c4, 0x70c4, 0x70c4, 0x1078, 0x12d5, 0x2001, 0x0007,
- 0x1078, 0x37bc, 0x1078, 0x4c57, 0x1078, 0x6b6c, 0x1078, 0x4d50,
- 0x007c, 0x70e1, 0x70f1, 0x70ea, 0x70fa, 0x70e1, 0x70e1, 0x70e1,
- 0x70e1, 0x70e1, 0x70e1, 0x70e1, 0x70e1, 0x70e1, 0x70e1, 0x70e1,
- 0x70e1, 0x1078, 0x12d5, 0x6010, 0xa088, 0x0013, 0x2104, 0xa085,
- 0x0400, 0x200a, 0x1078, 0x4c57, 0x6003, 0x0002, 0x1078, 0x4d50,
- 0x007c, 0x1078, 0x4c57, 0x1078, 0x4762, 0x1078, 0x5cd4, 0x1078,
- 0x4d50, 0x007c, 0x1078, 0x4c57, 0x2009, 0x0041, 0x0078, 0x71c8,
- 0xa182, 0x0040, 0x0079, 0x7104, 0x7114, 0x7116, 0x7114, 0x7114,
- 0x7114, 0x7114, 0x7114, 0x7117, 0x7114, 0x7114, 0x7114, 0x7114,
- 0x7114, 0x7114, 0x7114, 0x7114, 0x1078, 0x12d5, 0x007c, 0x6003,
- 0x0004, 0x6110, 0x20e1, 0x0005, 0x3d18, 0x3e20, 0x2c10, 0x1078,
- 0x1572, 0x007c, 0xa182, 0x0040, 0x0079, 0x7126, 0x7136, 0x7136,
- 0x7136, 0x7136, 0x7136, 0x7136, 0x7136, 0x7136, 0x7136, 0x7138,
- 0x715b, 0x7136, 0x7136, 0x7136, 0x7136, 0x715b, 0x1078, 0x12d5,
- 0x1078, 0x4cff, 0x1078, 0x4e10, 0x6010, 0x0d7e, 0x2068, 0x684c,
- 0xd0fc, 0x0040, 0x714e, 0xa08c, 0x0003, 0xa18e, 0x0002, 0x0040,
- 0x7154, 0x2009, 0x0041, 0x0d7f, 0x0078, 0x71c8, 0x6003, 0x0007,
- 0x1078, 0x4762, 0x0d7f, 0x007c, 0x1078, 0x4762, 0x1078, 0x5cd4,
- 0x0d7f, 0x0078, 0x7153, 0x037e, 0x1078, 0x4cff, 0x1078, 0x4e10,
- 0x6010, 0x0d7e, 0x2068, 0x2019, 0x0004, 0x1078, 0x75b3, 0x1078,
- 0x6b6c, 0x6017, 0x0028, 0x0d7f, 0x037f, 0x007c, 0xa186, 0x0013,
- 0x00c0, 0x717c, 0x6004, 0xa086, 0x0042, 0x10c0, 0x12d5, 0x1078,
- 0x4c57, 0x1078, 0x4d50, 0x007c, 0xa186, 0x0027, 0x0040, 0x7184,
- 0xa186, 0x0014, 0x00c0, 0x7194, 0x6004, 0xa086, 0x0042, 0x10c0,
- 0x12d5, 0x2001, 0x0007, 0x1078, 0x37bc, 0x1078, 0x4c57, 0x1078,
- 0x6b6c, 0x1078, 0x4d50, 0x007c, 0xa182, 0x0040, 0x0079, 0x7198,
- 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71aa,
- 0x71b6, 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71a8, 0x71a8,
- 0x1078, 0x12d5, 0x037e, 0x047e, 0x20e1, 0x0005, 0x3d18, 0x3e20,
- 0x2c10, 0x1078, 0x1572, 0x047f, 0x037f, 0x007c, 0x6010, 0x0d7e,
- 0x2068, 0x684c, 0xd0fc, 0x0040, 0x71c2, 0x2009, 0x0041, 0x0d7f,
- 0x0078, 0x71c8, 0x6003, 0x0007, 0x1078, 0x4762, 0x0d7f, 0x007c,
- 0xa182, 0x0040, 0x0079, 0x71cc, 0x71dc, 0x71de, 0x71ea, 0x71f6,
- 0x71dc, 0x71dc, 0x71dc, 0x71dc, 0x71dc, 0x71dc, 0x71dc, 0x71dc,
- 0x71dc, 0x71dc, 0x71dc, 0x71dc, 0x1078, 0x12d5, 0x6003, 0x0001,
- 0x6106, 0x1078, 0x48fb, 0x127e, 0x2091, 0x8000, 0x1078, 0x4d50,
- 0x127f, 0x007c, 0x6003, 0x0001, 0x6106, 0x1078, 0x48fb, 0x127e,
- 0x2091, 0x8000, 0x1078, 0x4d50, 0x127f, 0x007c, 0x6003, 0x0003,
- 0x6106, 0x2c10, 0x1078, 0x19a7, 0x127e, 0x2091, 0x8000, 0x1078,
- 0x4967, 0x1078, 0x4e10, 0x127f, 0x007c, 0x1078, 0x4c57, 0x0078,
- 0x720b, 0x1078, 0x4cff, 0x6110, 0x81ff, 0x0040, 0x7218, 0x0d7e,
- 0x2168, 0x037e, 0x2019, 0x0029, 0x1078, 0x75b3, 0x037f, 0x0d7f,
- 0x1078, 0x6b6c, 0x1078, 0x4d50, 0x007c, 0xa182, 0x0085, 0x0079,
- 0x7221, 0x7228, 0x7228, 0x7228, 0x722a, 0x7228, 0x7228, 0x7228,
- 0x1078, 0x12d5, 0x027e, 0x0e7e, 0x2071, 0x7c80, 0x7220, 0x1078,
- 0x74cd, 0x0040, 0x7237, 0x6007, 0x0086, 0x0078, 0x7239, 0x6007,
- 0x0087, 0x6003, 0x0001, 0x1078, 0x48fb, 0x1078, 0x4d50, 0x0e7f,
- 0x027f, 0x007c, 0xa186, 0x0013, 0x00c0, 0x7253, 0x6004, 0xa08a,
- 0x0085, 0x1048, 0x12d5, 0xa08a, 0x008c, 0x10c8, 0x12d5, 0xa082,
- 0x0085, 0x0079, 0x7266, 0xa186, 0x0027, 0x0040, 0x725b, 0xa186,
- 0x0014, 0x10c0, 0x12d5, 0x2001, 0x0007, 0x1078, 0x37bc, 0x1078,
- 0x4c57, 0x1078, 0x6b6c, 0x1078, 0x4d50, 0x007c, 0x726d, 0x726f,
- 0x726f, 0x726d, 0x726d, 0x726d, 0x726d, 0x1078, 0x12d5, 0x1078,
- 0x4c57, 0x1078, 0x5cd4, 0x1078, 0x4d50, 0x007c, 0xa182, 0x0085,
- 0x1048, 0x12d5, 0xa182, 0x008c, 0x10c8, 0x12d5, 0xa182, 0x0085,
- 0x0079, 0x7282, 0x7289, 0x7289, 0x7289, 0x728b, 0x7289, 0x7289,
- 0x7289, 0x1078, 0x12d5, 0x007c, 0x1078, 0x4c57, 0x1078, 0x6b6c,
- 0x1078, 0x4d50, 0x007c, 0x037e, 0x2019, 0x000b, 0x1078, 0x729c,
- 0x601f, 0x0006, 0x037f, 0x007c, 0x127e, 0x037e, 0x087e, 0x2091,
- 0x8000, 0x2c40, 0x1078, 0x59e7, 0x00c0, 0x72c9, 0x1078, 0x5a88,
- 0x00c0, 0x72c9, 0x6000, 0xa086, 0x0000, 0x0040, 0x72c9, 0x601c,
- 0xa086, 0x0007, 0x0040, 0x72c9, 0x0d7e, 0x6000, 0xa086, 0x0004,
- 0x00c0, 0x72bc, 0x1078, 0x1676, 0x6010, 0x2068, 0x1078, 0x6a03,
- 0x0040, 0x72c4, 0x1078, 0x75b3, 0x0d7f, 0x6013, 0x0000, 0x601f,
- 0x0007, 0x087f, 0x037f, 0x127f, 0x007c, 0x0f7e, 0x0c7e, 0x037e,
- 0x157e, 0x2079, 0x7c80, 0x7838, 0xa08c, 0x00ff, 0x783c, 0x1078,
- 0x2059, 0x00c0, 0x7304, 0x017e, 0x0c7e, 0x1078, 0x3806, 0x00c0,
- 0x7304, 0x2011, 0x7c90, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078,
- 0x622f, 0x00c0, 0x7304, 0x017f, 0x027f, 0x027e, 0x017e, 0x2019,
- 0x0029, 0x1078, 0x5b5c, 0x1078, 0x4a38, 0x1078, 0x497b, 0x017f,
- 0x1078, 0x7431, 0x1078, 0x39f0, 0x017f, 0x1078, 0x35f9, 0x6612,
- 0x6516, 0xa006, 0x0078, 0x7306, 0x0c7f, 0x017f, 0x157f, 0x037f,
- 0x0c7f, 0x0f7f, 0x007c, 0x0c7e, 0x0d7e, 0x017e, 0x2009, 0x771e,
- 0x2104, 0xa086, 0x0074, 0x00c0, 0x7362, 0x2069, 0x7c8e, 0x690c,
- 0xa182, 0x0100, 0x0048, 0x7352, 0x6908, 0xa184, 0x8000, 0x0040,
- 0x735e, 0xa184, 0x0800, 0x0040, 0x735e, 0x6910, 0xa18a, 0x0001,
- 0x0048, 0x7356, 0x6914, 0x2069, 0x7cae, 0x6904, 0x81ff, 0x00c0,
- 0x734a, 0x690c, 0xa182, 0x0100, 0x0048, 0x7352, 0x6908, 0x81ff,
- 0x00c0, 0x734e, 0x6910, 0xa18a, 0x0001, 0x0048, 0x7356, 0x6918,
- 0xa18a, 0x0001, 0x0048, 0x735e, 0x0078, 0x7368, 0x6013, 0x0100,
- 0x0078, 0x7364, 0x6013, 0x0300, 0x0078, 0x7364, 0x6013, 0x0500,
- 0x0078, 0x7364, 0x6013, 0x0700, 0x0078, 0x7364, 0x6013, 0x0900,
- 0x0078, 0x7364, 0x6013, 0x0b00, 0x0078, 0x7364, 0x6013, 0x0f00,
- 0x0078, 0x7364, 0x6013, 0x2d00, 0xa085, 0x0001, 0x0078, 0x7369,
- 0xa006, 0x017f, 0x0d7f, 0x0c7f, 0x007c, 0x0c7e, 0x0d7e, 0x027e,
- 0x037e, 0x157e, 0x6218, 0x2268, 0x6b04, 0xa394, 0x00ff, 0xa286,
- 0x0006, 0x0040, 0x7391, 0xa286, 0x0004, 0x0040, 0x7391, 0xa394,
- 0xff00, 0x8217, 0xa286, 0x0006, 0x0040, 0x7391, 0xa286, 0x0004,
- 0x0040, 0x7391, 0x0c7e, 0x2d60, 0x1078, 0x3818, 0x0c7f, 0x0078,
- 0x73c4, 0x2011, 0x7c96, 0xad98, 0x000a, 0x20a9, 0x0004, 0x1078,
- 0x622f, 0x00c0, 0x73c5, 0x2011, 0x7c9a, 0xad98, 0x0006, 0x20a9,
- 0x0004, 0x1078, 0x622f, 0x00c0, 0x73c5, 0x047e, 0x017e, 0x6aa0,
- 0xa294, 0x00ff, 0x8227, 0xa006, 0x2009, 0x7752, 0x210c, 0xd1a4,
- 0x0040, 0x73b9, 0x2009, 0x0029, 0x1078, 0x75f7, 0x6800, 0xc0e5,
- 0x6802, 0x2019, 0x0029, 0x1078, 0x4a38, 0x1078, 0x497b, 0x2c08,
- 0x1078, 0x7431, 0x017f, 0x047f, 0xa006, 0x157f, 0x037f, 0x027f,
- 0x0d7f, 0x0c7f, 0x007c, 0x0d7e, 0x2069, 0x7c8e, 0x6800, 0xa086,
- 0x0800, 0x0040, 0x73d7, 0x6013, 0x0000, 0x0078, 0x73d8, 0xa006,
- 0x0d7f, 0x007c, 0x0c7e, 0x0f7e, 0x017e, 0x027e, 0x037e, 0x157e,
- 0x2079, 0x7c8c, 0x7930, 0x7834, 0x1078, 0x2059, 0x00c0, 0x73fe,
- 0x1078, 0x3806, 0x00c0, 0x73fe, 0x2011, 0x7c90, 0xac98, 0x000a,
- 0x20a9, 0x0004, 0x1078, 0x622f, 0x00c0, 0x73fe, 0x2011, 0x7c94,
- 0xac98, 0x0006, 0x20a9, 0x0004, 0x1078, 0x622f, 0x157f, 0x037f,
- 0x027f, 0x017f, 0x0f7f, 0x0c7f, 0x007c, 0x0c7e, 0x007e, 0x017e,
- 0x027e, 0x037e, 0x157e, 0x2011, 0x7c83, 0x2204, 0x8211, 0x220c,
- 0x1078, 0x2059, 0x00c0, 0x742a, 0x1078, 0x3806, 0x00c0, 0x742a,
- 0x2011, 0x7c96, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078, 0x622f,
- 0x00c0, 0x742a, 0x2011, 0x7c9a, 0xac98, 0x0006, 0x20a9, 0x0004,
- 0x1078, 0x622f, 0x157f, 0x037f, 0x027f, 0x017f, 0x007f, 0x0c7f,
- 0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e, 0x027e,
- 0x127e, 0x2091, 0x8000, 0x2029, 0x793f, 0x252c, 0x2021, 0x7945,
- 0x2424, 0x2061, 0x7e00, 0x2071, 0x7700, 0x7644, 0x7060, 0x8001,
- 0xa602, 0x00c8, 0x7496, 0x2100, 0xac06, 0x0040, 0x748c, 0x1078,
- 0x760f, 0x0040, 0x748c, 0x671c, 0xa786, 0x0001, 0x0040, 0x74ab,
- 0xa786, 0x0007, 0x0040, 0x748c, 0x2500, 0xac06, 0x0040, 0x748c,
- 0x2400, 0xac06, 0x0040, 0x748c, 0x1078, 0x7623, 0x00c0, 0x748c,
- 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x7472, 0x017e, 0x1078,
- 0x1676, 0x017f, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x7489,
- 0xa786, 0x0003, 0x00c0, 0x749f, 0x6837, 0x0103, 0x6b4a, 0x6847,
- 0x0000, 0x017e, 0x1078, 0x6c0a, 0x1078, 0x3b4c, 0x017f, 0x1078,
- 0x6b5f, 0x0d7f, 0x1078, 0x6b6c, 0xace0, 0x0008, 0x2001, 0x7715,
- 0x2004, 0xac02, 0x00c8, 0x7496, 0x0078, 0x7443, 0x127f, 0x027f,
- 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c, 0xa786,
- 0x0006, 0x00c0, 0x747c, 0xa386, 0x0005, 0x0040, 0x748c, 0x1078,
- 0x75b3, 0x0078, 0x7489, 0x1078, 0x7623, 0x00c0, 0x748c, 0xa180,
- 0x0001, 0x2004, 0xa086, 0x0018, 0x00c0, 0x748c, 0x6000, 0xa086,
- 0x0002, 0x00c0, 0x748c, 0x1078, 0x6b85, 0x0040, 0x74c7, 0x1078,
- 0x6b99, 0x00c0, 0x748c, 0x1078, 0x5f29, 0x0078, 0x74c9, 0x1078,
- 0x22b1, 0x1078, 0x6b6c, 0x0078, 0x748c, 0x0c7e, 0x0e7e, 0x017e,
- 0x2c08, 0x2170, 0x1078, 0x75ca, 0x017f, 0x0040, 0x74dc, 0x601c,
- 0xa084, 0x000f, 0x1079, 0x74df, 0x0e7f, 0x0c7f, 0x007c, 0x74e7,
- 0x74e7, 0x74e7, 0x74e7, 0x74e7, 0x74e7, 0x74e9, 0x74e7, 0xa006,
- 0x007c, 0x047e, 0x017e, 0x7018, 0xa080, 0x0028, 0x2024, 0xa4a4,
- 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x1078, 0x75f7, 0x017f,
- 0x047f, 0x037e, 0x2019, 0x0002, 0x1078, 0x729c, 0x037f, 0xa085,
- 0x0001, 0x007c, 0x2001, 0x0001, 0x1078, 0x379a, 0x157e, 0x017e,
- 0x027e, 0x037e, 0x20a9, 0x0004, 0x2019, 0x7705, 0x2011, 0x7c96,
- 0x1078, 0x622f, 0x037f, 0x027f, 0x017f, 0x157f, 0xa005, 0x007c,
- 0x0f7e, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x027e, 0x127e, 0x2091,
- 0x8000, 0x2061, 0x7e00, 0x2079, 0x0001, 0x8fff, 0x0040, 0x7573,
- 0x2071, 0x7700, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8, 0x7573,
- 0x88ff, 0x0040, 0x7539, 0x2800, 0xac06, 0x00c0, 0x7569, 0x2079,
- 0x0000, 0x1078, 0x760f, 0x0040, 0x7569, 0x2400, 0xac06, 0x0040,
- 0x7569, 0x671c, 0xa786, 0x0006, 0x00c0, 0x7569, 0xa786, 0x0007,
- 0x0040, 0x7569, 0x88ff, 0x00c0, 0x7551, 0x6018, 0xa206, 0x00c0,
- 0x7569, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x7559, 0x1078,
- 0x1676, 0x6010, 0x2068, 0x1078, 0x6a03, 0x0040, 0x7563, 0x047e,
- 0x1078, 0x75b3, 0x047f, 0x0d7f, 0x1078, 0x6b6c, 0x88ff, 0x00c0,
- 0x757c, 0xace0, 0x0008, 0x2001, 0x7715, 0x2004, 0xac02, 0x00c8,
- 0x7573, 0x0078, 0x7525, 0xa006, 0x127f, 0x027f, 0x067f, 0x077f,
- 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5, 0x0001, 0x0078, 0x7574,
- 0x087e, 0x2041, 0x0000, 0x2c20, 0x2019, 0x0002, 0x6218, 0x1078,
- 0x59e7, 0x1078, 0x5a88, 0x1078, 0x7518, 0x087f, 0x007c, 0x027e,
- 0x047e, 0x087e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007f, 0x2009,
- 0x0000, 0x017e, 0x037e, 0x1078, 0x3806, 0x00c0, 0x75a8, 0x2c10,
- 0x2041, 0x0000, 0x1078, 0x59e7, 0x1078, 0x5a88, 0x1078, 0x7518,
- 0x037f, 0x017f, 0x8108, 0x00f0, 0x7599, 0x157f, 0x0c7f, 0x087f,
- 0x047f, 0x027f, 0x007c, 0x017e, 0x0f7e, 0x8dff, 0x0040, 0x75c7,
- 0x6800, 0xa07d, 0x0040, 0x75c4, 0x6803, 0x0000, 0x6b52, 0x1078,
- 0x3b4c, 0x2f68, 0x0078, 0x75b8, 0x6b52, 0x1078, 0x3b4c, 0x0f7f,
- 0x017f, 0x007c, 0x0e7e, 0x047e, 0x037e, 0x2061, 0x7e00, 0x2071,
- 0x7700, 0x7444, 0x7060, 0x8001, 0xa402, 0x00c8, 0x75f2, 0x2100,
- 0xac06, 0x0040, 0x75e4, 0x6000, 0xa086, 0x0000, 0x0040, 0x75e4,
- 0x6008, 0xa206, 0x0040, 0x75ee, 0xace0, 0x0008, 0x2001, 0x7715,
- 0x2004, 0xac02, 0x00c8, 0x75f2, 0x0078, 0x75cf, 0xa085, 0x0001,
- 0x0078, 0x75f3, 0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c, 0x0d7e,
- 0x007e, 0x1078, 0x132f, 0x007f, 0x1040, 0x12d5, 0x6837, 0x010d,
- 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x685e, 0x6956,
- 0x6c46, 0x684f, 0x0000, 0x1078, 0x3b4c, 0x0d7f, 0x007c, 0x6700,
- 0xa786, 0x0000, 0x0040, 0x7622, 0xa786, 0x0001, 0x0040, 0x7622,
- 0xa786, 0x000a, 0x0040, 0x7622, 0xa786, 0x0009, 0x0040, 0x7622,
- 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x70a0, 0xa206,
- 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071,
- 0x7740, 0xd5a4, 0x0040, 0x7637, 0x7034, 0x8000, 0x7036, 0xd5b4,
- 0x0040, 0x763d, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x7644,
- 0x2071, 0x774a, 0x1078, 0x7673, 0x0e7f, 0x007f, 0x127f, 0x007c,
- 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x7740, 0xd5a4,
- 0x0040, 0x7655, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040, 0x765b,
- 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x7662, 0x2071, 0x774a,
- 0x1078, 0x7673, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e, 0x007e,
- 0x0e7e, 0x2091, 0x8000, 0x2071, 0x7742, 0x1078, 0x7673, 0x0e7f,
- 0x007f, 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8, 0x767c,
- 0x8e70, 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071, 0x7740,
- 0x1078, 0x7673, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x7744, 0x1078,
- 0x7673, 0x0e7f, 0x007c, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010,
- 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800, 0x1000,
- 0x2000, 0x4000, 0x8000, 0xb2be
+ 0x2011, 0x7383, 0x2204, 0x1078, 0x1fb0, 0x1078, 0x3497, 0x00c0,
+ 0x6bc3, 0x2011, 0x7396, 0xac98, 0x000a, 0x20a9, 0x0004, 0x1078,
+ 0x5a15, 0x00c0, 0x6bc3, 0x2011, 0x739a, 0xac98, 0x0006, 0x20a9,
+ 0x0004, 0x1078, 0x5a15, 0x157f, 0x037f, 0x027f, 0x017f, 0x007f,
+ 0x0c7f, 0x007c, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x057e, 0x047e,
+ 0x027e, 0x127e, 0x2091, 0x8000, 0x2029, 0x70bf, 0x252c, 0x2021,
+ 0x70c5, 0x2424, 0x2061, 0x7500, 0x2071, 0x6f00, 0x7644, 0x7060,
+ 0x8001, 0xa602, 0x00c8, 0x6c2f, 0x2100, 0xac06, 0x0040, 0x6c25,
+ 0x1078, 0x6da8, 0x0040, 0x6c25, 0x671c, 0xa786, 0x0001, 0x0040,
+ 0x6c44, 0xa786, 0x0007, 0x0040, 0x6c25, 0x2500, 0xac06, 0x0040,
+ 0x6c25, 0x2400, 0xac06, 0x0040, 0x6c25, 0x1078, 0x6dbc, 0x00c0,
+ 0x6c25, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6c0b, 0x017e,
+ 0x1078, 0x1627, 0x017f, 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040,
+ 0x6c22, 0xa786, 0x0003, 0x00c0, 0x6c38, 0x6837, 0x0103, 0x6b4a,
+ 0x6847, 0x0000, 0x017e, 0x1078, 0x639b, 0x1078, 0x36ec, 0x017f,
+ 0x1078, 0x62f0, 0x0d7f, 0x1078, 0x62fd, 0xace0, 0x0008, 0x2001,
+ 0x6f15, 0x2004, 0xac02, 0x00c8, 0x6c2f, 0x0078, 0x6bdc, 0x127f,
+ 0x027f, 0x047f, 0x057f, 0x067f, 0x077f, 0x0c7f, 0x0e7f, 0x007c,
+ 0xa786, 0x0006, 0x00c0, 0x6c15, 0xa386, 0x0005, 0x0040, 0x6c25,
+ 0x1078, 0x6d4c, 0x0078, 0x6c22, 0x1078, 0x6dbc, 0x00c0, 0x6c25,
+ 0xa180, 0x0001, 0x2004, 0xa086, 0x0018, 0x00c0, 0x6c25, 0x6000,
+ 0xa086, 0x0002, 0x00c0, 0x6c25, 0x1078, 0x6316, 0x0040, 0x6c60,
+ 0x1078, 0x632a, 0x00c0, 0x6c25, 0x1078, 0x579c, 0x0078, 0x6c62,
+ 0x1078, 0x2192, 0x1078, 0x62fd, 0x0078, 0x6c25, 0x0c7e, 0x0e7e,
+ 0x017e, 0x2c08, 0x2170, 0x1078, 0x6d63, 0x017f, 0x0040, 0x6c75,
+ 0x601c, 0xa084, 0x0007, 0x1079, 0x6c78, 0x0e7f, 0x0c7f, 0x007c,
+ 0x6c80, 0x6c80, 0x6c80, 0x6c80, 0x6c80, 0x6c80, 0x6c82, 0x6c80,
+ 0xa006, 0x007c, 0x047e, 0x017e, 0x7018, 0xa080, 0x0028, 0x2024,
+ 0xa4a4, 0x00ff, 0x8427, 0x2c00, 0x2009, 0x0020, 0x1078, 0x6d90,
+ 0x017f, 0x047f, 0x037e, 0x2019, 0x0002, 0x1078, 0x6a39, 0x037f,
+ 0xa085, 0x0001, 0x007c, 0x2001, 0x0001, 0x1078, 0x342f, 0x157e,
+ 0x017e, 0x027e, 0x037e, 0x20a9, 0x0004, 0x2019, 0x6f05, 0x2011,
+ 0x7396, 0x1078, 0x5a15, 0x037f, 0x027f, 0x017f, 0x157f, 0xa005,
+ 0x007c, 0x0f7e, 0x0e7e, 0x0c7e, 0x077e, 0x067e, 0x027e, 0x127e,
+ 0x2091, 0x8000, 0x2061, 0x7500, 0x2079, 0x0001, 0x8fff, 0x0040,
+ 0x6d0c, 0x2071, 0x6f00, 0x7644, 0x7060, 0x8001, 0xa602, 0x00c8,
+ 0x6d0c, 0x88ff, 0x0040, 0x6cd2, 0x2800, 0xac06, 0x00c0, 0x6d02,
+ 0x2079, 0x0000, 0x1078, 0x6da8, 0x0040, 0x6d02, 0x2400, 0xac06,
+ 0x0040, 0x6d02, 0x671c, 0xa786, 0x0006, 0x00c0, 0x6d02, 0xa786,
+ 0x0007, 0x0040, 0x6d02, 0x88ff, 0x00c0, 0x6cea, 0x6018, 0xa206,
+ 0x00c0, 0x6d02, 0x0d7e, 0x6000, 0xa086, 0x0004, 0x00c0, 0x6cf2,
+ 0x1078, 0x1627, 0x6010, 0x2068, 0x1078, 0x61dc, 0x0040, 0x6cfc,
+ 0x047e, 0x1078, 0x6d4c, 0x047f, 0x0d7f, 0x1078, 0x62fd, 0x88ff,
+ 0x00c0, 0x6d15, 0xace0, 0x0008, 0x2001, 0x6f15, 0x2004, 0xac02,
+ 0x00c8, 0x6d0c, 0x0078, 0x6cbe, 0xa006, 0x127f, 0x027f, 0x067f,
+ 0x077f, 0x0c7f, 0x0e7f, 0x0f7f, 0x007c, 0xa8c5, 0x0001, 0x0078,
+ 0x6d0d, 0x087e, 0x2041, 0x0000, 0x2c20, 0x2019, 0x0002, 0x6218,
+ 0x1078, 0x52b4, 0x1078, 0x5355, 0x1078, 0x6cb1, 0x087f, 0x007c,
+ 0x027e, 0x047e, 0x087e, 0x0c7e, 0x157e, 0x2c20, 0x20a9, 0x007e,
+ 0x2009, 0x0000, 0x017e, 0x037e, 0x1078, 0x3497, 0x00c0, 0x6d41,
+ 0x2c10, 0x2041, 0x0000, 0x1078, 0x52b4, 0x1078, 0x5355, 0x1078,
+ 0x6cb1, 0x037f, 0x017f, 0x8108, 0x00f0, 0x6d32, 0x157f, 0x0c7f,
+ 0x087f, 0x047f, 0x027f, 0x007c, 0x017e, 0x0f7e, 0x8dff, 0x0040,
+ 0x6d60, 0x6800, 0xa07d, 0x0040, 0x6d5d, 0x6803, 0x0000, 0x6b52,
+ 0x1078, 0x36ec, 0x2f68, 0x0078, 0x6d51, 0x6b52, 0x1078, 0x36ec,
+ 0x0f7f, 0x017f, 0x007c, 0x0e7e, 0x047e, 0x037e, 0x2061, 0x7500,
+ 0x2071, 0x6f00, 0x7444, 0x7060, 0x8001, 0xa402, 0x00c8, 0x6d8b,
+ 0x2100, 0xac06, 0x0040, 0x6d7d, 0x6000, 0xa086, 0x0000, 0x0040,
+ 0x6d7d, 0x6008, 0xa206, 0x0040, 0x6d87, 0xace0, 0x0008, 0x2001,
+ 0x6f15, 0x2004, 0xac02, 0x00c8, 0x6d8b, 0x0078, 0x6d68, 0xa085,
+ 0x0001, 0x0078, 0x6d8c, 0xa006, 0x037f, 0x047f, 0x0e7f, 0x007c,
+ 0x0d7e, 0x007e, 0x1078, 0x12e0, 0x007f, 0x1040, 0x1286, 0x6837,
+ 0x010d, 0x6803, 0x0000, 0x683b, 0x0000, 0x685b, 0x0000, 0x685e,
+ 0x6956, 0x6c46, 0x684f, 0x0000, 0x1078, 0x36ec, 0x0d7f, 0x007c,
+ 0x6700, 0xa786, 0x0000, 0x0040, 0x6dbb, 0xa786, 0x0001, 0x0040,
+ 0x6dbb, 0xa786, 0x000a, 0x0040, 0x6dbb, 0xa786, 0x0009, 0x0040,
+ 0x6dbb, 0xa085, 0x0001, 0x007c, 0x0e7e, 0x6018, 0x2070, 0x70a0,
+ 0xa206, 0x0e7f, 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000,
+ 0x2071, 0x6f40, 0xd5a4, 0x0040, 0x6dd0, 0x7034, 0x8000, 0x7036,
+ 0xd5b4, 0x0040, 0x6dd6, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040,
+ 0x6ddd, 0x2071, 0x6f4a, 0x1078, 0x6e0c, 0x0e7f, 0x007f, 0x127f,
+ 0x007c, 0x127e, 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x6f40,
+ 0xd5a4, 0x0040, 0x6dee, 0x7034, 0x8000, 0x7036, 0xd5b4, 0x0040,
+ 0x6df4, 0x7030, 0x8000, 0x7032, 0xd5ac, 0x0040, 0x6dfb, 0x2071,
+ 0x6f4a, 0x1078, 0x6e0c, 0x0e7f, 0x007f, 0x127f, 0x007c, 0x127e,
+ 0x007e, 0x0e7e, 0x2091, 0x8000, 0x2071, 0x6f42, 0x1078, 0x6e0c,
+ 0x0e7f, 0x007f, 0x127f, 0x007c, 0x2e04, 0x8000, 0x2072, 0x00c8,
+ 0x6e15, 0x8e70, 0x2e04, 0x8000, 0x2072, 0x007c, 0x0e7e, 0x2071,
+ 0x6f40, 0x1078, 0x6e0c, 0x0e7f, 0x007c, 0x0e7e, 0x2071, 0x6f44,
+ 0x1078, 0x6e0c, 0x0e7f, 0x007c, 0x0001, 0x0002, 0x0004, 0x0008,
+ 0x0010, 0x0020, 0x0040, 0x0080, 0x0100, 0x0200, 0x0400, 0x0800,
+ 0x1000, 0x2000, 0x4000, 0x8000, 0x40d5
};
-#define ISP2100_CODE_LENGTH 0x669c
+#define ISP2100_CODE_LENGTH 0x5e35
#endif
diff --git a/sys/dev/isp/asm_sbus.h b/sys/dev/isp/asm_sbus.h
index b5df5f5d2403d..d81f3b9e4d849 100644
--- a/sys/dev/isp/asm_sbus.h
+++ b/sys/dev/isp/asm_sbus.h
@@ -1,14 +1,45 @@
-/* $Id: $ */
-/* release_12_28_98_A */
+/* $Id: asm_sbus.h,v 1.2 1998/04/14 17:43:24 mjacob Exp $ */
/*
* SBus Qlogic Host Adapter Firmware Tables
- * Copyright (c) 1996, 1997, 1998 by Qlogic Corporation
*
+ *---------------------------------------
+ * Copyright (c) 1997, 1998 by Matthew Jacob
+ * NASA/Ames Research Center
+ * All rights reserved.
+ *---------------------------------------
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice immediately at the beginning of the file, without modification,
+ * this list of conditions, and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*
* Version 1.24 Initiator Firmware (Aug 8, 1996)
+ *
+ * [from Qlogic]
*/
#define ISP_CODE_ORG 0x1000
-#if 0
#define ISP_CODE_VERSION 1*1024+24
static const u_int16_t ISP_RISC_CODE[] = {
0x0078, 0x1030, 0x0000, 0x231f, 0x0000, 0x12ff, 0x2043, 0x4f50,
@@ -1137,1169 +1168,3 @@ static const u_int16_t ISP_RISC_CODE[] = {
0x331b, 0x2019, 0x2626, 0x7b22, 0x7b26, 0x007c, 0xae5b
};
#define ISP_CODE_LENGTH 0x231f
-#endif
-#if 1
-/*
- * Version 1.31.00 ISP1000 Initiator RISC firmware
- */
-#define ISP_CODE_VERSION 1*1024+31
-static const u_int16_t ISP_RISC_CODE[] = {
- 0x0078, 0x1030, 0xa5e3, 0x241a, 0x0001, 0x12ff, 0x2043, 0x4f50,
- 0x5952, 0x4947, 0x4854, 0x2031, 0x3939, 0x312c, 0x3139, 0x3932,
- 0x2c31, 0x3939, 0x332c, 0x3139, 0x3934, 0x2051, 0x4c4f, 0x4749,
- 0x4320, 0x434f, 0x5250, 0x4f52, 0x4154, 0x494f, 0x4e00, 0x2049,
- 0x5350, 0x3130, 0x3030, 0x2046, 0x6972, 0x6d77, 0x6172, 0x6520,
- 0x2056, 0x6572, 0x7369, 0x6f6e, 0x2030, 0x312e, 0x3331, 0x2020,
- 0x2071, 0x0010, 0x70c3, 0x0004, 0x20c9, 0x3fff, 0x2089, 0x10ca,
- 0x70c7, 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0001,
- 0x3f00, 0x70d6, 0x2031, 0x0030, 0x2079, 0x3500, 0x7863, 0x0000,
- 0x2fa0, 0x2009, 0x012b, 0x2011, 0x0000, 0x20a9, 0x0040, 0x42a4,
- 0x8109, 0x00c0, 0x104d, 0x789b, 0x0101, 0x780b, 0x0002, 0x780f,
- 0x0002, 0x784f, 0x0bb8, 0x2069, 0x3540, 0x00a8, 0x106c, 0x681b,
- 0x003c, 0x2009, 0x1313, 0xa18c, 0xff00, 0x3700, 0xa084, 0x00ff,
- 0xa105, 0x20b8, 0x0078, 0x106e, 0x681b, 0x0028, 0x6807, 0x0007,
- 0x680b, 0x00fa, 0x680f, 0x0008, 0x6813, 0x0005, 0x681f, 0x0000,
- 0x6823, 0x0006, 0x6817, 0x0008, 0x6827, 0x0000, 0x2069, 0x3600,
- 0x2011, 0x0020, 0x2009, 0x0010, 0x680b, 0x0c19, 0x680f, 0x0019,
- 0x6803, 0xdd00, 0x6807, 0x001a, 0x6a1a, 0x2d00, 0xa0e8, 0x0008,
- 0xa290, 0x0004, 0x8109, 0x00c0, 0x1084, 0x2069, 0x3680, 0x20a9,
- 0x0080, 0x6837, 0x0000, 0x680b, 0x0040, 0x6817, 0x0064, 0x681f,
- 0x0002, 0xade8, 0x0010, 0x0070, 0x10a7, 0x0078, 0x1099, 0x1078,
- 0x1a42, 0x1078, 0x2f3d, 0x1078, 0x168b, 0x1078, 0x33bb, 0x3200,
- 0xa085, 0x000d, 0x2090, 0x70c3, 0x0000, 0x0090, 0x10be, 0x70c0,
- 0xa086, 0x0002, 0x00c0, 0x10be, 0x1078, 0x11be, 0x1078, 0x10ee,
- 0x1078, 0x1821, 0x1078, 0x19b2, 0x1078, 0x3280, 0x1078, 0x1787,
- 0x0078, 0x10be, 0x10d2, 0x10d4, 0x1b9f, 0x1b9f, 0x2f9b, 0x2f9b,
- 0x1b9f, 0x1b9f, 0x0078, 0x10d2, 0x0078, 0x10d4, 0x0078, 0x10d6,
- 0x0078, 0x10d8, 0x7008, 0x800c, 0x00c8, 0x10e9, 0x7007, 0x0002,
- 0xa08c, 0x000c, 0x00c0, 0x10ea, 0x8004, 0x8004, 0x00c8, 0x10e9,
- 0x087a, 0x097a, 0x70c3, 0x4002, 0x0078, 0x11c1, 0x0068, 0x1133,
- 0x7814, 0xa005, 0x00c0, 0x10f8, 0x0010, 0x1134, 0x0078, 0x1133,
- 0x2009, 0x3568, 0x2104, 0xa005, 0x00c0, 0x1133, 0x7814, 0xa086,
- 0x0001, 0x00c0, 0x1105, 0x1078, 0x1540, 0x7817, 0x0000, 0x2009,
- 0x356f, 0x2104, 0xa065, 0x0040, 0x1121, 0x2009, 0x356a, 0x211c,
- 0x8108, 0x2114, 0x8108, 0x2104, 0xa210, 0xa399, 0x0000, 0x2009,
- 0x001c, 0x6083, 0x0103, 0x1078, 0x161b, 0x00c0, 0x112d, 0x1078,
- 0x1682, 0x2009, 0x356f, 0x200b, 0x0000, 0x2009, 0x3569, 0x2104,
- 0x200b, 0x0000, 0xa005, 0x0040, 0x1131, 0x2001, 0x4005, 0x0078,
- 0x11c0, 0x0078, 0x11be, 0x007c, 0x2061, 0x0000, 0x6018, 0xa084,
- 0x0001, 0x0040, 0x113c, 0x007c, 0x70c3, 0x0000, 0x70c7, 0x0000,
- 0x70cb, 0x0000, 0x70cf, 0x0000, 0x70c0, 0xa0bc, 0xffc0, 0x00c0,
- 0x118c, 0x2038, 0x0079, 0x114c, 0x11be, 0x1209, 0x11d7, 0x1209,
- 0x125a, 0x125a, 0x11ce, 0x159a, 0x1265, 0x11ca, 0x11db, 0x11dd,
- 0x11df, 0x11e1, 0x159f, 0x11ca, 0x126b, 0x1287, 0x154e, 0x1594,
- 0x11e3, 0x1475, 0x1497, 0x14b1, 0x14da, 0x142e, 0x143c, 0x1450,
- 0x1464, 0x12f3, 0x11ca, 0x12a3, 0x12aa, 0x12af, 0x12b4, 0x12ba,
- 0x12bf, 0x12c4, 0x12c9, 0x12ce, 0x12d2, 0x12e7, 0x11ca, 0x11ca,
- 0x11ca, 0x11ca, 0x11ca, 0x12ff, 0x1308, 0x1317, 0x133d, 0x1347,
- 0x134e, 0x137a, 0x1389, 0x1398, 0x13aa, 0x1413, 0x11ca, 0x11ca,
- 0x11ca, 0x11ca, 0x11ca, 0x1423, 0xa0bc, 0xffa0, 0x00c0, 0x11ca,
- 0x2038, 0xa084, 0x001f, 0x0079, 0x1195, 0x11ca, 0x11ca, 0x11ca,
- 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca,
- 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca,
- 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x11ca, 0x15f7,
- 0x1601, 0x1605, 0x1613, 0x11ca, 0x11ca, 0x72ca, 0x71c6, 0x2001,
- 0x4006, 0x0078, 0x11c0, 0x73ce, 0x72ca, 0x71c6, 0x2001, 0x4000,
- 0x70c2, 0x2061, 0x0000, 0x601b, 0x0001, 0x2091, 0x5000, 0x2091,
- 0x4080, 0x007c, 0x70c3, 0x4001, 0x0078, 0x11c1, 0x2099, 0x0041,
- 0x20a1, 0x0041, 0x20a9, 0x0005, 0x53a3, 0x0078, 0x11be, 0x70c4,
- 0x70c3, 0x0004, 0x007a, 0x0078, 0x11be, 0x0078, 0x11be, 0x0078,
- 0x11be, 0x0078, 0x11be, 0x2091, 0x8000, 0x70c3, 0x0000, 0x70c7,
- 0x4953, 0x70cb, 0x5020, 0x70cf, 0x2020, 0x70d3, 0x0001, 0x3f00,
- 0x70d6, 0x2079, 0x0000, 0x781b, 0x0001, 0x2031, 0x0030, 0x2059,
- 0x1000, 0x2029, 0x0457, 0x2051, 0x0470, 0x2061, 0x0472, 0x20b9,
- 0xffff, 0x20c1, 0x0000, 0x2091, 0x5000, 0x2091, 0x4080, 0x0078,
- 0x0455, 0x71d0, 0x72c8, 0x73cc, 0x70c4, 0x20a0, 0x2098, 0x2031,
- 0x0030, 0x81ff, 0x0040, 0x11be, 0x7007, 0x0004, 0x731a, 0x721e,
- 0x2051, 0x0012, 0x2049, 0x1238, 0x2041, 0x11be, 0x7003, 0x0002,
- 0xa786, 0x0001, 0x00c0, 0x122a, 0x2049, 0x1246, 0x2041, 0x1252,
- 0x7003, 0x0003, 0x7017, 0x0000, 0x810b, 0x7112, 0x00c8, 0x1232,
- 0x7017, 0x0001, 0x7007, 0x0001, 0xa786, 0x0001, 0x0040, 0x1246,
- 0x700c, 0xa084, 0x007f, 0x8004, 0x2009, 0x0020, 0xa102, 0x0942,
- 0x094a, 0x20a8, 0x26a0, 0x53a6, 0x0078, 0x10da, 0x700c, 0xa084,
- 0x007f, 0x0040, 0x1246, 0x80ac, 0x0048, 0x1246, 0x2698, 0x53a5,
- 0x0078, 0x10da, 0x700c, 0xa084, 0x007f, 0x80ac, 0x2698, 0x53a5,
- 0x0078, 0x11be, 0x71c4, 0x70c8, 0x2114, 0xa79e, 0x0004, 0x00c0,
- 0x1262, 0x200a, 0x72ca, 0x0078, 0x11bd, 0x70c7, 0x0001, 0x70cb,
- 0x001f, 0x0078, 0x11be, 0x70c4, 0x72c8, 0x73cc, 0x74d0, 0x70c6,
- 0x72ca, 0x73ce, 0x74d2, 0xa005, 0x0040, 0x1281, 0x8001, 0x7872,
- 0x7a7a, 0x7b7e, 0x7c76, 0x7898, 0xa084, 0xfffc, 0x789a, 0x0078,
- 0x1285, 0x7898, 0xa085, 0x0001, 0x789a, 0x0078, 0x11be, 0x70c4,
- 0x72c8, 0x73cc, 0x74d4, 0x70c6, 0x72ca, 0x73ce, 0x74d6, 0xa005,
- 0x0040, 0x129d, 0x8001, 0x7886, 0x7a8e, 0x7b92, 0x7c8a, 0x7898,
- 0xa084, 0xfcff, 0x789a, 0x0078, 0x12a1, 0x7898, 0xa085, 0x0100,
- 0x789a, 0x0078, 0x11be, 0x2009, 0x3559, 0x210c, 0x2011, 0x015c,
- 0x0078, 0x11bc, 0x2009, 0x3541, 0x210c, 0x0078, 0x11bd, 0x2009,
- 0x3542, 0x210c, 0x0078, 0x11bd, 0x2061, 0x3540, 0x610c, 0x6210,
- 0x0078, 0x11bc, 0x2009, 0x3545, 0x210c, 0x0078, 0x11bd, 0x2009,
- 0x3546, 0x210c, 0x0078, 0x11bd, 0x2009, 0x3547, 0x210c, 0x0078,
- 0x11bd, 0x2009, 0x3548, 0x210c, 0x0078, 0x11bd, 0x7908, 0x7a0c,
- 0x0078, 0x11bc, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003,
- 0x8003, 0xa0e8, 0x3600, 0x6a00, 0x6804, 0xa084, 0x0008, 0x0040,
- 0x12e4, 0x6b08, 0x0078, 0x12e5, 0x6b0c, 0x0078, 0x11bb, 0x77c4,
- 0x1078, 0x169c, 0x2091, 0x8000, 0x6b1c, 0x6a14, 0x2091, 0x8001,
- 0x2708, 0x0078, 0x11bb, 0x77c4, 0x1078, 0x169c, 0x2091, 0x8000,
- 0x6908, 0x6a18, 0x6b10, 0x2091, 0x8001, 0x0078, 0x11bb, 0x71c4,
- 0xa182, 0x0010, 0x00c8, 0x11b6, 0x1078, 0x1ac6, 0x0078, 0x11bb,
- 0x71c4, 0xa182, 0x0010, 0x00c8, 0x11b6, 0x2011, 0x3541, 0x2204,
- 0x007e, 0x2112, 0x1078, 0x1a7f, 0x017f, 0x0078, 0x11bd, 0x71c4,
- 0x2011, 0x1335, 0x20a9, 0x0008, 0x2204, 0xa106, 0x0040, 0x1327,
- 0x8210, 0x0070, 0x1325, 0x0078, 0x131c, 0x0078, 0x11b6, 0xa292,
- 0x1335, 0x027e, 0x2011, 0x3542, 0x2204, 0x2112, 0x017f, 0x007e,
- 0x1078, 0x1a8b, 0x017f, 0x0078, 0x11bd, 0x03e8, 0x00fa, 0x01f4,
- 0x02ee, 0x0064, 0x0019, 0x0032, 0x004b, 0x2061, 0x3540, 0x610c,
- 0x6210, 0x70c4, 0x600e, 0x70c8, 0x6012, 0x0078, 0x11bc, 0x2061,
- 0x3540, 0x6114, 0x70c4, 0x6016, 0x0078, 0x11bd, 0x71c4, 0x2011,
- 0x0004, 0x2019, 0x1212, 0xa186, 0x0028, 0x0040, 0x1367, 0x2011,
- 0x0005, 0x2019, 0x1212, 0xa186, 0x0032, 0x0040, 0x1367, 0x2011,
- 0x0006, 0x2019, 0x1313, 0xa186, 0x003c, 0x00c0, 0x11b6, 0x2061,
- 0x3540, 0x6018, 0x007e, 0x611a, 0xa39c, 0xff00, 0x3700, 0xa084,
- 0x00ff, 0xa305, 0x20b8, 0x1078, 0x1a9c, 0x1078, 0x33bb, 0x017f,
- 0x0078, 0x11bd, 0x71c4, 0xa184, 0xffcf, 0x00c0, 0x11b6, 0x2011,
- 0x3547, 0x2204, 0x2112, 0x007e, 0x1078, 0x1abe, 0x017f, 0x0078,
- 0x11bd, 0x71c4, 0xa182, 0x0010, 0x00c8, 0x11b6, 0x2011, 0x3548,
- 0x2204, 0x007e, 0x2112, 0x1078, 0x1aad, 0x017f, 0x0078, 0x11bd,
- 0x71c4, 0x72c8, 0xa184, 0xfffd, 0x00c0, 0x11b5, 0xa284, 0xfffd,
- 0x00c0, 0x11b5, 0x2100, 0x7908, 0x780a, 0x2200, 0x7a0c, 0x780e,
- 0x0078, 0x11bc, 0x71c4, 0x8107, 0xa084, 0x000f, 0x8003, 0x8003,
- 0x8003, 0xa0e8, 0x3600, 0x2019, 0x0000, 0x72c8, 0x6800, 0x007e,
- 0xa226, 0x0040, 0x13d9, 0x6a02, 0xa484, 0x2000, 0x0040, 0x13c2,
- 0xa39d, 0x0010, 0xa484, 0x1000, 0x0040, 0x13c8, 0xa39d, 0x0008,
- 0xa484, 0x4000, 0x0040, 0x13d9, 0x810f, 0xa284, 0x4000, 0x0040,
- 0x13d5, 0x1078, 0x1ae0, 0x0078, 0x13d9, 0x1078, 0x1ad2, 0x0078,
- 0x13d9, 0x72cc, 0x82ff, 0x0040, 0x140b, 0x6808, 0xa206, 0x0040,
- 0x140b, 0xa2a4, 0x00ff, 0x2061, 0x3540, 0x6118, 0xa186, 0x0028,
- 0x0040, 0x13f2, 0xa186, 0x0032, 0x0040, 0x13f8, 0xa186, 0x003c,
- 0x0040, 0x13fe, 0xa482, 0x0064, 0x0048, 0x1408, 0x0078, 0x1402,
- 0xa482, 0x0050, 0x0048, 0x1408, 0x0078, 0x1402, 0xa482, 0x0043,
- 0x0048, 0x1408, 0x71c4, 0x71c6, 0x027f, 0x72ca, 0x0078, 0x11b7,
- 0x6a0a, 0xa39d, 0x000a, 0x6804, 0xa305, 0x6806, 0x027f, 0x6b0c,
- 0x71c4, 0x0078, 0x11bb, 0x77c4, 0x1078, 0x169c, 0x2091, 0x8000,
- 0x6a14, 0x6b1c, 0x2091, 0x8001, 0x70c8, 0x6816, 0x70cc, 0x681e,
- 0x2708, 0x0078, 0x11bb, 0x71c4, 0x72c8, 0x73cc, 0xa182, 0x0010,
- 0x00c8, 0x11b6, 0x1078, 0x1aee, 0x0078, 0x11bb, 0x77c4, 0x1078,
- 0x169c, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0002, 0x6a0a, 0x2091,
- 0x8001, 0x2708, 0x0078, 0x11bc, 0x77c4, 0x1078, 0x169c, 0x2091,
- 0x8000, 0x6a08, 0xa294, 0xfff9, 0x6a0a, 0x6804, 0xa005, 0x0040,
- 0x144b, 0x1078, 0x1a23, 0x2091, 0x8001, 0x2708, 0x0078, 0x11bc,
- 0x77c4, 0x1078, 0x169c, 0x2091, 0x8000, 0x6a08, 0xa295, 0x0004,
- 0x6a0a, 0x6804, 0xa005, 0x0040, 0x145f, 0x1078, 0x1a23, 0x2091,
- 0x8001, 0x2708, 0x0078, 0x11bc, 0x77c4, 0x2041, 0x0001, 0x2049,
- 0x0005, 0x2051, 0x0020, 0x2091, 0x8000, 0x1078, 0x16a9, 0x2091,
- 0x8001, 0x2708, 0x6a08, 0x0078, 0x11bc, 0x77c4, 0x72c8, 0x73cc,
- 0x77c6, 0x72ca, 0x73ce, 0x1078, 0x1722, 0x00c0, 0x1493, 0x6818,
- 0xa005, 0x0040, 0x148d, 0x2708, 0x1078, 0x1afe, 0x00c0, 0x148d,
- 0x7817, 0xffff, 0x2091, 0x8001, 0x007c, 0x2091, 0x8001, 0x2001,
- 0x4005, 0x0078, 0x11c0, 0x2091, 0x8001, 0x0078, 0x11be, 0x77c4,
- 0x77c6, 0x2041, 0x0021, 0x2049, 0x0005, 0x2051, 0x0020, 0x2091,
- 0x8000, 0x1078, 0x16a9, 0x2061, 0x3540, 0x60a3, 0x0003, 0x67b6,
- 0x60a7, 0x0000, 0x7817, 0xffff, 0x2091, 0x8001, 0x1078, 0x1a23,
- 0x007c, 0x77c8, 0x77ca, 0x77c4, 0x77c6, 0xa7bc, 0xff00, 0x2091,
- 0x8000, 0x2061, 0x3540, 0x60a3, 0x0002, 0x60a7, 0x0000, 0x67b6,
- 0x7817, 0xffff, 0x1078, 0x1a23, 0x2091, 0x8001, 0x2041, 0x0021,
- 0x2049, 0x0004, 0x2051, 0x0010, 0x2091, 0x8000, 0x1078, 0x16a9,
- 0x70c8, 0x6836, 0x8738, 0xa784, 0x0007, 0x00c0, 0x14ce, 0x2091,
- 0x8001, 0x007c, 0x7898, 0xa084, 0x0003, 0x00c0, 0x14fe, 0x2039,
- 0x0000, 0x2041, 0x0021, 0x2049, 0x0004, 0x2051, 0x0008, 0x1078,
- 0x169c, 0x2091, 0x8000, 0x6808, 0xa80d, 0x690a, 0x2091, 0x8001,
- 0x8738, 0xa784, 0x0007, 0x00c0, 0x14e7, 0xa7bc, 0xff00, 0x873f,
- 0x8738, 0x873f, 0xa784, 0x0f00, 0x00c0, 0x14e7, 0x2091, 0x8000,
- 0x2069, 0x0100, 0x6830, 0xa084, 0x0040, 0x0040, 0x1527, 0x684b,
- 0x0004, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0004, 0x0040, 0x1514,
- 0x0070, 0x1514, 0x0078, 0x150b, 0x684b, 0x0009, 0x20a9, 0x0014,
- 0x6848, 0xa084, 0x0001, 0x0040, 0x1521, 0x0070, 0x1521, 0x0078,
- 0x1518, 0x20a9, 0x00fa, 0x0070, 0x1527, 0x0078, 0x1523, 0x2079,
- 0x3500, 0x7817, 0x0001, 0x2061, 0x3540, 0x60a3, 0x0001, 0x60a7,
- 0x0000, 0x60c3, 0x000f, 0x7898, 0xa085, 0x0002, 0x789a, 0x6808,
- 0xa084, 0xfffd, 0x680a, 0x681b, 0x0046, 0x2091, 0x8001, 0x007c,
- 0x7898, 0xa084, 0xfffd, 0x789a, 0xa084, 0x0001, 0x00c0, 0x154a,
- 0x1078, 0x176a, 0x71c4, 0x71c6, 0x794a, 0x007c, 0x74c4, 0x73c8,
- 0x72cc, 0x74c6, 0x73ca, 0x72ce, 0x2079, 0x3500, 0x2009, 0x0040,
- 0x1078, 0x1679, 0x0040, 0x1590, 0x1078, 0x1649, 0x0040, 0x1564,
- 0x1078, 0x1682, 0x0078, 0x1590, 0x6010, 0x2091, 0x8001, 0x7817,
- 0xffff, 0x2009, 0x3568, 0x200b, 0x0005, 0x8108, 0x200b, 0x0000,
- 0x8108, 0x230a, 0x8108, 0x220a, 0x8108, 0x240a, 0x8108, 0x200a,
- 0x8108, 0x200b, 0x0000, 0x8108, 0x2c0a, 0xa02e, 0x2530, 0x0e7e,
- 0x1078, 0x2f16, 0x0e7f, 0x6592, 0x65a2, 0x6696, 0x66a6, 0x60ab,
- 0x0000, 0x60af, 0x0000, 0x2091, 0x8001, 0x1078, 0x1a23, 0x007c,
- 0x70c3, 0x4005, 0x0078, 0x11c1, 0x71c4, 0x70c7, 0x0000, 0x7906,
- 0x0078, 0x11be, 0x71c4, 0x71c6, 0x2168, 0x0078, 0x15a1, 0x2069,
- 0x1000, 0x690c, 0xa016, 0x2d04, 0xa210, 0x8d68, 0x8109, 0x00c0,
- 0x15a3, 0xa285, 0x0000, 0x00c0, 0x15b1, 0x70c3, 0x4000, 0x0078,
- 0x15b3, 0x70c3, 0x4003, 0x70ca, 0x0078, 0x11c1, 0x71c4, 0x72c8,
- 0x73cc, 0x2100, 0xa184, 0xfffc, 0x00c0, 0x11ca, 0x2100, 0x0079,
- 0x15c1, 0x15d8, 0x15ed, 0x15ef, 0x15f1, 0x70c3, 0x4003, 0x71ce,
- 0x72d2, 0x73d6, 0x0078, 0x15d4, 0x70c3, 0x4000, 0x70cf, 0x0000,
- 0x70d3, 0x0000, 0x70d7, 0x0000, 0x77c6, 0x71ca, 0x0078, 0x11be,
- 0x2031, 0x15f3, 0x2624, 0x8630, 0x2412, 0x2204, 0xa446, 0x00c0,
- 0x15c5, 0xa484, 0xffff, 0x00c0, 0x15da, 0x2031, 0x15f3, 0x8210,
- 0x8319, 0xa384, 0xffff, 0x00c0, 0x15da, 0x0078, 0x15cc, 0x0078,
- 0x15cc, 0x0078, 0x15cc, 0x5555, 0xaaaa, 0xffff, 0x0000, 0x7960,
- 0x71c6, 0x71c4, 0xa182, 0x0003, 0x00c8, 0x11b6, 0x7962, 0x0078,
- 0x11be, 0x7960, 0x71c6, 0x0078, 0x11be, 0x7954, 0x71c6, 0x71c4,
- 0x7956, 0x7958, 0x71ca, 0x71c8, 0x795a, 0x795c, 0x71ce, 0x71cc,
- 0x795e, 0x0078, 0x11be, 0x7954, 0x71c6, 0x7958, 0x71ca, 0x795c,
- 0x71ce, 0x0078, 0x11be, 0x700c, 0xa084, 0x007f, 0x0040, 0x1627,
- 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x1622, 0x7017,
- 0x0000, 0x7112, 0x721a, 0x731e, 0x8108, 0x810c, 0x81a9, 0x8c98,
- 0x20a1, 0x0030, 0x6080, 0x20a2, 0x53a6, 0x780c, 0xa085, 0x0000,
- 0x7002, 0x7007, 0x0001, 0x7108, 0x8104, 0x00c8, 0x163b, 0x7007,
- 0x0002, 0xa184, 0x000c, 0x710c, 0xa184, 0x0300, 0x7003, 0x0000,
- 0x007c, 0x700c, 0xa084, 0x007f, 0x0040, 0x1655, 0x7007, 0x0004,
- 0x7004, 0xa084, 0x0004, 0x00c0, 0x1650, 0x7017, 0x0000, 0x7112,
- 0x721a, 0x731e, 0x2099, 0x0030, 0x8108, 0x81ac, 0x780c, 0xa085,
- 0x0001, 0x7002, 0x7007, 0x0001, 0x7008, 0x800c, 0x00c8, 0x1664,
- 0x7007, 0x0002, 0xa08c, 0x000c, 0x00c0, 0x1676, 0x710c, 0xa184,
- 0x0300, 0x00c0, 0x1676, 0x2ca0, 0x53a5, 0xa006, 0x7003, 0x0000,
- 0x007c, 0x7850, 0xa065, 0x0040, 0x1681, 0x2c04, 0x7852, 0x2063,
- 0x0000, 0x007c, 0x0f7e, 0x2079, 0x3500, 0x7850, 0x2062, 0x2c00,
- 0x7852, 0x0f7f, 0x007c, 0x2011, 0x4000, 0x7a52, 0x2019, 0x015c,
- 0x8319, 0x0040, 0x1699, 0xa280, 0x002f, 0x2012, 0x2010, 0x0078,
- 0x1690, 0x2013, 0x0000, 0x007c, 0xa784, 0x0f00, 0x800c, 0xa784,
- 0x0007, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e8, 0x3680,
- 0x007c, 0x1078, 0x169c, 0x2900, 0x682a, 0x2a00, 0x682e, 0x6808,
- 0xa084, 0xffef, 0xa80d, 0x690a, 0x2009, 0x354f, 0x210c, 0x6804,
- 0xa005, 0x0040, 0x16c6, 0xa116, 0x00c0, 0x16c6, 0x2060, 0x6000,
- 0x6806, 0x017e, 0x200b, 0x0000, 0x0078, 0x16c9, 0x2009, 0x0000,
- 0x017e, 0x6804, 0xa065, 0x0040, 0x16d8, 0x6000, 0x6806, 0x1078,
- 0x16e9, 0x1078, 0x17d5, 0x6810, 0x8001, 0x6812, 0x00c0, 0x16c9,
- 0x017f, 0x6902, 0x6906, 0x007c, 0xa065, 0x0040, 0x16e8, 0x6098,
- 0x609b, 0x0000, 0x2008, 0x1078, 0x1682, 0x2100, 0x0078, 0x16dc,
- 0x007c, 0x6003, 0x0103, 0x20a9, 0x001c, 0xac80, 0x0004, 0x20a0,
- 0x2001, 0x0000, 0x40a4, 0x6828, 0x6016, 0x682c, 0x601e, 0x007c,
- 0x0e7e, 0x2071, 0x3540, 0x7040, 0xa08c, 0x0080, 0x00c0, 0x1706,
- 0xa088, 0x3580, 0x2d0a, 0x8000, 0x7042, 0xa006, 0x0e7f, 0x007c,
- 0x0e7e, 0x2071, 0x3540, 0x2009, 0x3580, 0x7240, 0x8221, 0x8211,
- 0x0048, 0x1720, 0x2104, 0x8108, 0xad06, 0x00c0, 0x170f, 0x8119,
- 0x211e, 0x8108, 0x8318, 0x8211, 0x00c8, 0x1718, 0x7442, 0xa006,
- 0x0e7f, 0x007c, 0x1078, 0x169c, 0x2091, 0x8000, 0x6804, 0x781e,
- 0xa065, 0x0040, 0x1769, 0x0078, 0x1733, 0x2c00, 0x781e, 0x6000,
- 0xa065, 0x0040, 0x1769, 0x600c, 0xa306, 0x00c0, 0x172d, 0x6008,
- 0xa206, 0x00c0, 0x172d, 0x2c28, 0x2001, 0x354f, 0x2004, 0xac06,
- 0x0040, 0x1769, 0x6804, 0xac06, 0x00c0, 0x1750, 0x6000, 0x2060,
- 0x6806, 0xa005, 0x00c0, 0x1750, 0x6803, 0x0000, 0x0078, 0x175a,
- 0x6400, 0x781c, 0x2060, 0x6402, 0xa486, 0x0000, 0x00c0, 0x175a,
- 0x2c00, 0x6802, 0x2560, 0x1078, 0x16e9, 0x6017, 0x0005, 0x601f,
- 0x0020, 0x1078, 0x17d5, 0x6810, 0x8001, 0x6812, 0x2001, 0xffff,
- 0xa005, 0x007c, 0x2039, 0x0000, 0x2041, 0x0021, 0x2049, 0x0004,
- 0x2051, 0x0008, 0x2091, 0x8000, 0x1078, 0x16a9, 0x8738, 0xa784,
- 0x0007, 0x00c0, 0x1774, 0xa7bc, 0xff00, 0x873f, 0x8738, 0x873f,
- 0xa784, 0x0f00, 0x00c0, 0x1774, 0x2091, 0x8001, 0x007c, 0x2061,
- 0x0000, 0x6018, 0xa084, 0x0001, 0x00c0, 0x1794, 0x78ac, 0x78af,
- 0x0000, 0xa005, 0x00c0, 0x1795, 0x007c, 0xa08c, 0xfff0, 0x0040,
- 0x179b, 0x1078, 0x1b81, 0x0079, 0x179d, 0x17ad, 0x17af, 0x17b5,
- 0x17b9, 0x17ad, 0x17bd, 0x17ad, 0x17ad, 0x17ad, 0x17ad, 0x17c3,
- 0x17c7, 0x17ad, 0x17ad, 0x17ad, 0x17ad, 0x1078, 0x1b81, 0x1078,
- 0x176a, 0x2001, 0x8001, 0x0078, 0x17cd, 0x2001, 0x8003, 0x0078,
- 0x17cd, 0x2001, 0x8004, 0x0078, 0x17cd, 0x1078, 0x176a, 0x2001,
- 0x8006, 0x0078, 0x17cd, 0x2001, 0x800c, 0x0078, 0x17cd, 0x1078,
- 0x176a, 0x2001, 0x800d, 0x0078, 0x17cd, 0x70c2, 0x2061, 0x0000,
- 0x601b, 0x0001, 0x2091, 0x4080, 0x007c, 0x2c04, 0x6082, 0x2c08,
- 0x2063, 0x0000, 0x7864, 0x8000, 0x7866, 0x7868, 0xa005, 0x796a,
- 0x0040, 0x17e5, 0x2c02, 0x0078, 0x17e6, 0x796e, 0x007c, 0x0c7e,
- 0x2061, 0x3500, 0x6883, 0x0103, 0x2d08, 0x206b, 0x0000, 0x6064,
- 0x8000, 0x6066, 0x6068, 0xa005, 0x616a, 0x0040, 0x17fa, 0x2d02,
- 0x0078, 0x17fb, 0x616e, 0x0c7f, 0x007c, 0x1078, 0x180e, 0x0040,
- 0x180d, 0x0c7e, 0x6098, 0xa065, 0x0040, 0x1808, 0x1078, 0x16dc,
- 0x0c7f, 0x609b, 0x0000, 0x1078, 0x1682, 0x007c, 0x786c, 0xa065,
- 0x0040, 0x1820, 0x2091, 0x8000, 0x7864, 0x8001, 0x7866, 0x2c04,
- 0x786e, 0xa005, 0x00c0, 0x181e, 0x786a, 0x8000, 0x2091, 0x8001,
- 0x007c, 0x7898, 0xa005, 0x00c0, 0x186f, 0x7974, 0x70d0, 0x0005,
- 0x0005, 0x72d0, 0xa206, 0x00c0, 0x1826, 0x2200, 0xa106, 0x00c0,
- 0x183d, 0x7804, 0xa005, 0x0040, 0x186f, 0x7807, 0x0000, 0x0068,
- 0x186f, 0x2091, 0x4080, 0x0078, 0x186f, 0x1078, 0x1679, 0x0040,
- 0x186f, 0x7a7c, 0x7b78, 0x8107, 0x8004, 0x8004, 0xa210, 0xa399,
- 0x0000, 0x2009, 0x0040, 0x1078, 0x1649, 0x0040, 0x1866, 0x1078,
- 0x1682, 0x7880, 0x8000, 0x7882, 0xa086, 0x0002, 0x00c0, 0x186f,
- 0x2091, 0x8000, 0x78af, 0x0002, 0x7883, 0x0000, 0x7898, 0xa085,
- 0x0003, 0x789a, 0x2091, 0x8001, 0x0078, 0x186f, 0x7883, 0x0000,
- 0x1078, 0x199c, 0x6000, 0xa084, 0x0007, 0x0079, 0x1870, 0x007c,
- 0x1878, 0x1887, 0x18a7, 0x1878, 0x18b9, 0x1878, 0x1878, 0x1878,
- 0x2039, 0x0400, 0x78a8, 0xa705, 0x78aa, 0x6004, 0xa705, 0x6006,
- 0x1078, 0x18f7, 0x6018, 0x78a6, 0x1078, 0x1984, 0x007c, 0x78a8,
- 0xa084, 0x0100, 0x0040, 0x188e, 0x0078, 0x1878, 0x78ab, 0x0000,
- 0x6000, 0x8007, 0xa084, 0x00ff, 0x789e, 0x8001, 0x609b, 0x0000,
- 0x0040, 0x18a4, 0x1078, 0x18f7, 0x0040, 0x18a4, 0x78a8, 0xa085,
- 0x0100, 0x78aa, 0x0078, 0x18a6, 0x1078, 0x191b, 0x007c, 0x78a8,
- 0xa08c, 0x0e00, 0x00c0, 0x18b0, 0xa084, 0x0100, 0x00c0, 0x18b2,
- 0x0078, 0x1878, 0x1078, 0x18f7, 0x00c0, 0x18b8, 0x1078, 0x191b,
- 0x007c, 0x78a8, 0xa084, 0x0100, 0x0040, 0x18c0, 0x0078, 0x1878,
- 0x78ab, 0x0000, 0x6710, 0x20a9, 0x0001, 0x6014, 0xa084, 0x00ff,
- 0xa005, 0x0040, 0x18dd, 0xa7bc, 0xff00, 0x20a9, 0x0008, 0xa08e,
- 0x0001, 0x0040, 0x18dd, 0x2039, 0x0000, 0x20a9, 0x0080, 0xa08e,
- 0x0002, 0x0040, 0x18dd, 0x0078, 0x18f4, 0x1078, 0x169c, 0x2d00,
- 0x2091, 0x8000, 0x682b, 0x0000, 0x682f, 0x0000, 0x6808, 0xa084,
- 0xffde, 0x680a, 0x2d00, 0xa080, 0x0010, 0x2068, 0x2091, 0x8001,
- 0x0070, 0x18f4, 0x0078, 0x18e0, 0x1078, 0x1682, 0x007c, 0x78a0,
- 0xa06d, 0x00c0, 0x1902, 0x2c00, 0x78a2, 0x78a6, 0x609b, 0x0000,
- 0x0078, 0x190e, 0x2c00, 0x689a, 0x609b, 0x0000, 0x78a2, 0x2d00,
- 0x6002, 0x78a4, 0xad06, 0x00c0, 0x190e, 0x6002, 0x789c, 0x8001,
- 0x789e, 0x00c0, 0x191a, 0x78a8, 0xa084, 0x0000, 0x78aa, 0x78a4,
- 0x2060, 0xa006, 0x007c, 0xa02e, 0x2530, 0x6118, 0xa184, 0x0060,
- 0x619e, 0x0040, 0x1927, 0x0e7e, 0x1078, 0x2f16, 0x0e7f, 0x6592,
- 0x65a2, 0x6696, 0x66a6, 0x60ab, 0x0000, 0x60af, 0x0000, 0x6710,
- 0x1078, 0x169c, 0x2091, 0x8000, 0x6808, 0xa084, 0x0001, 0x0040,
- 0x1949, 0x2091, 0x8001, 0x1078, 0x16e9, 0x2091, 0x8000, 0x1078,
- 0x17d5, 0x2091, 0x8001, 0x78a3, 0x0000, 0x78a7, 0x0000, 0x0078,
- 0x1983, 0x6020, 0xa096, 0x0001, 0x00c0, 0x1950, 0x8000, 0x6022,
- 0x6a10, 0x6814, 0x2091, 0x8001, 0xa202, 0x0048, 0x195f, 0x0040,
- 0x195f, 0x2039, 0x0200, 0x1078, 0x1984, 0x0078, 0x1983, 0x2c08,
- 0x2091, 0x8000, 0x6800, 0xa065, 0x0040, 0x1967, 0x6102, 0x6902,
- 0x00c0, 0x196b, 0x6906, 0x2160, 0x6003, 0x0000, 0x6810, 0x8000,
- 0x6812, 0x2091, 0x8001, 0x6808, 0xa08c, 0x0040, 0x0040, 0x197d,
- 0xa086, 0x0040, 0x680a, 0x1078, 0x16f8, 0x1078, 0x1a23, 0x78a7,
- 0x0000, 0x78a3, 0x0000, 0x007c, 0x6004, 0xa705, 0x6006, 0x2091,
- 0x8000, 0x1078, 0x17d5, 0x2091, 0x8001, 0x78a4, 0xa065, 0x0040,
- 0x1997, 0x6098, 0x78a6, 0x609b, 0x0000, 0x0078, 0x1987, 0x78a3,
- 0x0000, 0x78a7, 0x0000, 0x007c, 0x7970, 0x7874, 0x8000, 0xa10a,
- 0x00c8, 0x19a3, 0xa006, 0x7876, 0x70d2, 0x7804, 0xa005, 0x0040,
- 0x19b1, 0x8001, 0x7806, 0x00c0, 0x19b1, 0x0068, 0x19b1, 0x2091,
- 0x4080, 0x007c, 0x0068, 0x19cc, 0x2029, 0x0000, 0x786c, 0xa065,
- 0x0040, 0x19c7, 0x1078, 0x19cd, 0x0040, 0x19c7, 0x057e, 0x1078,
- 0x19e3, 0x057f, 0x00c0, 0x19c7, 0x8528, 0x0078, 0x19b6, 0x85ff,
- 0x0040, 0x19cc, 0x2091, 0x4080, 0x007c, 0x7b84, 0x7988, 0x72d4,
- 0x0005, 0x0005, 0x70d4, 0xa206, 0x00c0, 0x19cf, 0x2200, 0xa102,
- 0x00c0, 0x19dd, 0x2300, 0xa005, 0x007c, 0x0048, 0x19e1, 0xa302,
- 0x007c, 0x8002, 0x007c, 0x1078, 0x1a15, 0x2009, 0x001c, 0x6024,
- 0xa005, 0x0040, 0x19ed, 0x2009, 0x0040, 0x1078, 0x161b, 0x0040,
- 0x1a06, 0x7894, 0x8000, 0x7896, 0xa086, 0x0002, 0x00c0, 0x1a14,
- 0x2091, 0x8000, 0x78af, 0x0003, 0x7897, 0x0000, 0x7898, 0xa085,
- 0x0300, 0x789a, 0x2091, 0x8001, 0x0078, 0x1a14, 0x7897, 0x0000,
- 0x1078, 0x17fd, 0x7984, 0x7888, 0x8000, 0xa10a, 0x00c8, 0x1a11,
- 0xa006, 0x788a, 0x70d6, 0xa006, 0x007c, 0x8107, 0x8004, 0x8004,
- 0x7a90, 0x7b8c, 0xa210, 0xa399, 0x0000, 0x007c, 0x2009, 0x3568,
- 0x2091, 0x8000, 0x200a, 0x0f7e, 0x2079, 0x0100, 0x2009, 0x3540,
- 0x2091, 0x8000, 0x2104, 0xa086, 0x0000, 0x00c0, 0x1a3e, 0x2009,
- 0x3512, 0x2104, 0xa005, 0x00c0, 0x1a3e, 0x7830, 0xa084, 0x00c0,
- 0x00c0, 0x1a3e, 0x0018, 0x1a3e, 0x781b, 0x0044, 0x2091, 0x8001,
- 0x0f7f, 0x007c, 0x127e, 0x2091, 0x2300, 0x2071, 0x3540, 0x2079,
- 0x0100, 0x2019, 0x2ddb, 0x20a1, 0x012b, 0x2304, 0xa005, 0x0040,
- 0x1a5a, 0x789a, 0x8318, 0x23ac, 0x8318, 0x2398, 0x53a6, 0x3318,
- 0x0078, 0x1a4d, 0x789b, 0x0020, 0x20a9, 0x0010, 0x78af, 0x0000,
- 0x78af, 0x0220, 0x0070, 0x1a66, 0x0078, 0x1a5e, 0x7003, 0x0000,
- 0x1078, 0x1b65, 0x7004, 0xa084, 0x000f, 0xa085, 0x6280, 0x7806,
- 0x780f, 0x9200, 0x7843, 0x00d8, 0x7853, 0x0080, 0x780b, 0x0008,
- 0x7047, 0x357f, 0x7043, 0x0000, 0x127f, 0x2000, 0x007c, 0xa18c,
- 0x000f, 0x2011, 0x0101, 0x2204, 0xa084, 0xfff0, 0xa105, 0x2012,
- 0x1078, 0x1b65, 0x007c, 0x2011, 0x0101, 0x20a9, 0x0009, 0x810b,
- 0x0070, 0x1a94, 0x0078, 0x1a8f, 0xa18c, 0x0e00, 0x2204, 0xa084,
- 0xf1ff, 0xa105, 0x2012, 0x007c, 0x2009, 0x0101, 0x20a9, 0x0005,
- 0x8213, 0x0070, 0x1aa5, 0x0078, 0x1aa0, 0xa294, 0x00e0, 0x2104,
- 0xa084, 0xff1f, 0xa205, 0x200a, 0x007c, 0x2011, 0x0101, 0x20a9,
- 0x000c, 0x810b, 0x0070, 0x1ab6, 0x0078, 0x1ab1, 0xa18c, 0xf000,
- 0x2204, 0xa084, 0x0fff, 0xa105, 0x2012, 0x007c, 0x2011, 0x0102,
- 0x2204, 0xa084, 0xffcf, 0xa105, 0x2012, 0x007c, 0x8103, 0x8003,
- 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x62ac, 0x63ac,
- 0x0c7f, 0x007c, 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061,
- 0x0100, 0x609a, 0x60a4, 0xa084, 0xffdf, 0x60ae, 0x0c7f, 0x007c,
- 0x8103, 0x8003, 0xa080, 0x0022, 0x0c7e, 0x2061, 0x0100, 0x609a,
- 0x60a4, 0xa085, 0x0020, 0x60ae, 0x0c7f, 0x007c, 0x8103, 0x8003,
- 0xa080, 0x0020, 0x0c7e, 0x2061, 0x0100, 0x609a, 0x60a4, 0x62ae,
- 0x2010, 0x60a4, 0x63ae, 0x2018, 0x0c7f, 0x007c, 0x2091, 0x8000,
- 0x0c7e, 0x0e7e, 0x6818, 0xa005, 0x0040, 0x1b43, 0x2061, 0x3f80,
- 0x1078, 0x1b4b, 0x0040, 0x1b31, 0x20a9, 0x0000, 0x2061, 0x3e80,
- 0x0c7e, 0x1078, 0x1b4b, 0x0040, 0x1b1d, 0x0c7f, 0x8c60, 0x0070,
- 0x1b1b, 0x0078, 0x1b10, 0x0078, 0x1b43, 0x007f, 0xa082, 0x3e80,
- 0x2071, 0x3540, 0x70ba, 0x601c, 0xa085, 0x0800, 0x601e, 0x71b6,
- 0x60a7, 0x0000, 0x2001, 0x0004, 0x70a2, 0x1078, 0x1a1e, 0x0078,
- 0x1b3f, 0x2071, 0x3540, 0x601c, 0xa085, 0x0800, 0x601e, 0x71b6,
- 0x60a7, 0x0000, 0x2001, 0x0006, 0x70a2, 0x1078, 0x1a1e, 0x2001,
- 0x0000, 0x0078, 0x1b45, 0x2001, 0x0001, 0x2091, 0x8001, 0xa005,
- 0x0e7f, 0x0c7f, 0x007c, 0x2c04, 0xa005, 0x0040, 0x1b62, 0x2060,
- 0x600c, 0xa306, 0x00c0, 0x1b5f, 0x6008, 0xa206, 0x00c0, 0x1b5f,
- 0x6010, 0xa106, 0x00c0, 0x1b5f, 0xa006, 0x0078, 0x1b64, 0x6000,
- 0x0078, 0x1b4c, 0xa085, 0x0001, 0x007c, 0x2011, 0x3541, 0x220c,
- 0xa18c, 0x000f, 0x2011, 0x013b, 0x2204, 0xa084, 0x0100, 0x0040,
- 0x1b80, 0x2019, 0x0112, 0x201b, 0x1000, 0x2021, 0x013a, 0x2122,
- 0x2013, 0x0080, 0x2013, 0x008c, 0x2013, 0x0000, 0x201b, 0x0000,
- 0x007c, 0x0068, 0x1b81, 0x007e, 0x2071, 0x0000, 0x7018, 0xa084,
- 0x0001, 0x00c0, 0x1b86, 0x007f, 0x2e08, 0x2071, 0x0010, 0x70ca,
- 0x007f, 0x70c6, 0x70c3, 0x8002, 0x2071, 0x0000, 0x701b, 0x0001,
- 0x2091, 0x4080, 0x007f, 0x2070, 0x007f, 0x0078, 0x1b9d, 0x107e,
- 0x007e, 0x127e, 0x2091, 0x2300, 0x7f3c, 0x7e58, 0x7c30, 0x7d38,
- 0xa594, 0x003f, 0xa484, 0x4000, 0x0040, 0x1bb4, 0xa784, 0x007c,
- 0x00c0, 0x2da7, 0x1078, 0x1b81, 0xa49c, 0x000f, 0xa382, 0x0004,
- 0x0050, 0x1bbc, 0x1078, 0x1b81, 0x8507, 0xa084, 0x000f, 0x0079,
- 0x1bc1, 0x1fed, 0x209d, 0x20c3, 0x22e9, 0x2576, 0x25be, 0x25f5,
- 0x2670, 0x26ca, 0x274f, 0x1be7, 0x1bd1, 0x1e56, 0x1f20, 0x2555,
- 0x1bd1, 0x1078, 0x1b81, 0x0018, 0x1ba4, 0x127f, 0x2091, 0x8001,
- 0x007f, 0x107f, 0x007c, 0x7003, 0x0000, 0x703f, 0x0000, 0x7030,
- 0xa005, 0x0040, 0x1be5, 0x7033, 0x0000, 0x0018, 0x1ba4, 0x705c,
- 0xa005, 0x00c0, 0x1ca5, 0x70a0, 0xa084, 0x0007, 0x0079, 0x1bf0,
- 0x1cd1, 0x1bf8, 0x1c06, 0x1c27, 0x1c4d, 0x1c79, 0x1c77, 0x1bf8,
- 0x7808, 0xa084, 0xfffd, 0x780a, 0x2009, 0x0046, 0x1078, 0x241b,
- 0x00c0, 0x1c04, 0x7003, 0x0004, 0x0078, 0x1bd3, 0x1078, 0x2d69,
- 0x00c0, 0x1c25, 0x70b4, 0x8007, 0x789b, 0x007e, 0x78aa, 0x789b,
- 0x0010, 0x78ab, 0x000c, 0x789b, 0x0060, 0x78ab, 0x0001, 0x785b,
- 0x0004, 0x2009, 0x00f7, 0x1078, 0x2419, 0x00c0, 0x1c25, 0x7003,
- 0x0004, 0x70c3, 0x000f, 0x7033, 0x3570, 0x0078, 0x1bd3, 0x1078,
- 0x2d69, 0x00c0, 0x1c4b, 0x71b4, 0x8107, 0x789b, 0x007e, 0x78aa,
- 0x789b, 0x0010, 0xa18c, 0x0007, 0xa18d, 0x00c0, 0x79aa, 0x78ab,
- 0x0006, 0x789b, 0x0060, 0x78ab, 0x0002, 0x785b, 0x0004, 0x2009,
- 0x00f7, 0x1078, 0x2419, 0x00c0, 0x1c4b, 0x7003, 0x0004, 0x70c3,
- 0x000f, 0x7033, 0x3570, 0x0078, 0x1bd3, 0x1078, 0x2d69, 0x00c0,
- 0x1c75, 0x71b4, 0x8107, 0x789b, 0x007e, 0x78aa, 0x789b, 0x0010,
- 0xa18c, 0x0007, 0xa18d, 0x00c0, 0x79aa, 0x78ab, 0x0020, 0x71b8,
- 0x79aa, 0x78ab, 0x000d, 0x789b, 0x0060, 0x78ab, 0x0004, 0x785b,
- 0x0004, 0x2009, 0x00f7, 0x1078, 0x2419, 0x00c0, 0x1c75, 0x7003,
- 0x0004, 0x70c3, 0x000f, 0x7033, 0x3570, 0x0078, 0x1bd3, 0x0078,
- 0x1c27, 0x1078, 0x2d69, 0x00c0, 0x1bd3, 0x70bc, 0x2068, 0x789b,
- 0x0010, 0x6f10, 0x1078, 0x2cac, 0x2c50, 0x6810, 0x007e, 0x8007,
- 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x3600, 0x2048,
- 0x0c7e, 0x2060, 0x704a, 0x6000, 0x704e, 0x6004, 0x7052, 0x0c7f,
- 0x007f, 0xa084, 0x0007, 0xa085, 0x0080, 0x78aa, 0x6e18, 0x2041,
- 0x0001, 0x2001, 0x0004, 0x0078, 0x1dcc, 0x1078, 0x2d69, 0x00c0,
- 0x1bd3, 0x789b, 0x0010, 0x705c, 0x2068, 0x6f10, 0x1078, 0x2cac,
- 0x2c50, 0x6008, 0xa085, 0x0010, 0x600a, 0x6820, 0xa005, 0x0040,
- 0x1cc1, 0xa082, 0x0006, 0x0048, 0x1cbf, 0x0078, 0x1cc1, 0x6823,
- 0x0005, 0x6810, 0xa084, 0x0007, 0xa085, 0x0080, 0x78aa, 0x2031,
- 0x0020, 0x2041, 0x0001, 0x1078, 0x2dc8, 0x2001, 0x0003, 0x0078,
- 0x1dcc, 0x0018, 0x1ba4, 0x7440, 0xa485, 0x0000, 0x0040, 0x1ceb,
- 0xa080, 0x3580, 0x2030, 0x7144, 0x8108, 0xa12a, 0x0048, 0x1ce2,
- 0x2009, 0x3580, 0x2164, 0x6504, 0x85ff, 0x00c0, 0x1cf8, 0x8421,
- 0x00c0, 0x1cdc, 0x7146, 0x7003, 0x0000, 0x703f, 0x0000, 0x0078,
- 0x1bd3, 0x7640, 0xa6b0, 0x3580, 0x7144, 0x2600, 0x0078, 0x1ce7,
- 0x7146, 0x2568, 0x2558, 0x753e, 0x2c50, 0x6034, 0xa085, 0x0000,
- 0x00c0, 0x1cf5, 0x6708, 0x7736, 0xa784, 0x013f, 0x0040, 0x1d2a,
- 0xa784, 0x0021, 0x00c0, 0x1cf5, 0xa784, 0x0002, 0x0040, 0x1d17,
- 0xa784, 0x0004, 0x0040, 0x1cf5, 0xa7bc, 0xfffb, 0x670a, 0xa784,
- 0x0008, 0x00c0, 0x1cf5, 0xa784, 0x0010, 0x00c0, 0x1cf5, 0xa784,
- 0x0100, 0x0040, 0x1d2a, 0x6018, 0xa005, 0x00c0, 0x1cf5, 0xa7bc,
- 0xfeff, 0x670a, 0x681f, 0x0000, 0x6e18, 0xa684, 0x000e, 0x6118,
- 0x0040, 0x1d3a, 0x601c, 0xa102, 0x0048, 0x1d3d, 0x0040, 0x1d3d,
- 0x0078, 0x1cf1, 0x81ff, 0x00c0, 0x1cf1, 0xa784, 0x0080, 0x00c0,
- 0x1d43, 0x700c, 0x6022, 0xa7bc, 0xff7f, 0x670a, 0x6b10, 0x8307,
- 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa080, 0x3600, 0x2060,
- 0x2048, 0x704a, 0x6000, 0x704e, 0x6004, 0x7052, 0x2a60, 0x0018,
- 0x1ba4, 0x789b, 0x0010, 0xa046, 0x1078, 0x2d69, 0x00c0, 0x1bd3,
- 0x6b10, 0xa39c, 0x0007, 0xa39d, 0x00c0, 0x704c, 0xa084, 0x8000,
- 0x0040, 0x1d6e, 0xa684, 0x0001, 0x0040, 0x1d74, 0xa39c, 0xffbf,
- 0xa684, 0x000e, 0x00c0, 0x2901, 0xa684, 0x0010, 0x0040, 0x1d7e,
- 0xa39d, 0x0020, 0xa684, 0x000e, 0x00c0, 0x2907, 0x7baa, 0x8840,
- 0xa684, 0x000e, 0x00c0, 0x1d89, 0xa7bd, 0x0010, 0x670a, 0x0078,
- 0x1dca, 0x714c, 0xa18c, 0x0800, 0x0040, 0x290d, 0x2011, 0x0021,
- 0x8004, 0x8004, 0x0048, 0x1da0, 0x2011, 0x0022, 0x8004, 0x0048,
- 0x1da0, 0x2011, 0x0020, 0x8004, 0x0048, 0x1da0, 0x0040, 0x1dca,
- 0x7aaa, 0x8840, 0x1078, 0x2d82, 0x6a10, 0x610c, 0x8108, 0xa18c,
- 0x00ff, 0xa1e0, 0x3e80, 0x2c64, 0x8cff, 0x0040, 0x1dc1, 0x6010,
- 0xa206, 0x00c0, 0x1dab, 0x60b4, 0x8001, 0x60b6, 0x00c0, 0x1da6,
- 0x0c7e, 0x2a60, 0x6008, 0xa085, 0x0100, 0x600a, 0x0c7f, 0x0078,
- 0x1cd1, 0x1078, 0x2d69, 0x00c0, 0x1bd3, 0x2a60, 0x610e, 0x79aa,
- 0x8840, 0x712e, 0x2001, 0x0001, 0x007e, 0x7150, 0xa184, 0x0018,
- 0x0040, 0x1de0, 0xa184, 0x0010, 0x0040, 0x1dda, 0x1078, 0x2ad7,
- 0x00c0, 0x1de0, 0xa184, 0x0008, 0x0040, 0x1de0, 0x1078, 0x29f1,
- 0x007f, 0x7002, 0xa68c, 0x0060, 0x88ff, 0x0040, 0x1de9, 0xa18d,
- 0x0004, 0x795a, 0x69b2, 0x789b, 0x0060, 0x2800, 0x78aa, 0x789b,
- 0x0061, 0x6814, 0xa085, 0x8000, 0x6816, 0x78aa, 0x157e, 0x137e,
- 0x147e, 0x20a1, 0x012c, 0x789b, 0x0000, 0x8000, 0x80ac, 0xad80,
- 0x000a, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f, 0x6810, 0x8007,
- 0x789b, 0x007e, 0x78aa, 0x6d90, 0x7dd6, 0x7dde, 0x6e94, 0x7ed2,
- 0x7eda, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x1e18, 0x0098, 0x1e20,
- 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x2d82, 0x0078, 0x1bdb,
- 0x7200, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0, 0x1e2d, 0x781b,
- 0x0049, 0x1078, 0x2d82, 0x0078, 0x1e3e, 0x6ab0, 0xa295, 0x2000,
- 0x7a5a, 0x781b, 0x0049, 0x1078, 0x2d82, 0x7200, 0x2500, 0xa605,
- 0x0040, 0x1e3e, 0xa284, 0x0007, 0x1079, 0x1e4c, 0xad80, 0x0008,
- 0x7032, 0xa284, 0x0007, 0xa086, 0x0001, 0x00c0, 0x1e4a, 0x6018,
- 0x8000, 0x601a, 0x0078, 0x1bd3, 0x1e54, 0x30f3, 0x30f3, 0x30e2,
- 0x30f3, 0x1e54, 0x1e54, 0x1e54, 0x1078, 0x1b81, 0x7808, 0xa084,
- 0xfffd, 0x780a, 0x0f7e, 0x2079, 0x3500, 0x7898, 0x0f7f, 0xa084,
- 0x0001, 0x0040, 0x1e7c, 0x70a0, 0xa086, 0x0001, 0x00c0, 0x1e6b,
- 0x70a2, 0x0078, 0x1f04, 0x70a0, 0xa086, 0x0005, 0x00c0, 0x1e7a,
- 0x70bc, 0x2068, 0x6817, 0x0004, 0x6813, 0x0000, 0x681c, 0xa085,
- 0x0008, 0x681e, 0x70a3, 0x0000, 0x157e, 0x2011, 0x0004, 0x71a0,
- 0xa186, 0x0001, 0x0040, 0x1e9e, 0xa186, 0x0007, 0x00c0, 0x1e8e,
- 0x2009, 0x352b, 0x200b, 0x0005, 0x0078, 0x1e9e, 0x2009, 0x3513,
- 0x2104, 0x2009, 0x3512, 0x200a, 0x2009, 0x352b, 0x200b, 0x0001,
- 0x70a3, 0x0000, 0x70a7, 0x0001, 0x0078, 0x1ea0, 0x70a3, 0x0000,
- 0x1078, 0x2eca, 0x20a9, 0x0010, 0x2039, 0x0000, 0x1078, 0x2bb1,
- 0xa7b8, 0x0100, 0x0070, 0x1eae, 0x0078, 0x1ea6, 0x7000, 0x2020,
- 0x0079, 0x1eb2, 0x1ee0, 0x1ec9, 0x1ec9, 0x1ebc, 0x1ee0, 0x1ee0,
- 0x1eba, 0x1eba, 0x1078, 0x1b81, 0x2021, 0x3557, 0x2404, 0xa005,
- 0x0040, 0x1ec9, 0xad06, 0x00c0, 0x1ec9, 0x6800, 0x2022, 0x0078,
- 0x1ed9, 0x681c, 0xa084, 0x0001, 0x00c0, 0x1ed5, 0x6f10, 0x1078,
- 0x2cac, 0x1078, 0x28e4, 0x0078, 0x1ed9, 0x7054, 0x2060, 0x6800,
- 0x6002, 0x6a16, 0x681c, 0xa085, 0x0008, 0x681e, 0x1078, 0x17e7,
- 0x2021, 0x3f80, 0x1078, 0x1f0a, 0x2021, 0x3557, 0x1078, 0x1f0a,
- 0x20a9, 0x0000, 0x2021, 0x3e80, 0x1078, 0x1f0a, 0x8420, 0x0070,
- 0x1ef3, 0x0078, 0x1eec, 0x20a9, 0x0080, 0x2061, 0x3680, 0x6018,
- 0x6110, 0xa102, 0x6012, 0x601b, 0x0000, 0xace0, 0x0010, 0x0070,
- 0x1f03, 0x0078, 0x1ef7, 0x157f, 0x7003, 0x0000, 0x703f, 0x0000,
- 0x0078, 0x1bd3, 0x047e, 0x2404, 0xa005, 0x0040, 0x1f1c, 0x2068,
- 0x6800, 0x007e, 0x6a16, 0x681c, 0xa085, 0x0008, 0x681e, 0x1078,
- 0x17e7, 0x007f, 0x0078, 0x1f0c, 0x047f, 0x2023, 0x0000, 0x007c,
- 0xa282, 0x0003, 0x0050, 0x1f26, 0x1078, 0x1b81, 0x2300, 0x0079,
- 0x1f29, 0x1f2c, 0x1f9f, 0x1fad, 0xa282, 0x0002, 0x0040, 0x1f32,
- 0x1078, 0x1b81, 0x70a0, 0x70a3, 0x0000, 0x70c3, 0x0000, 0x0079,
- 0x1f39, 0x1f41, 0x1f41, 0x1f43, 0x1f77, 0x2913, 0x1f41, 0x1f77,
- 0x1f41, 0x1078, 0x1b81, 0x77b4, 0x1078, 0x2bb1, 0x77b4, 0xa7bc,
- 0x0f00, 0x1078, 0x2cac, 0x6018, 0xa005, 0x0040, 0x1f6e, 0x2021,
- 0x3f80, 0x2009, 0x0004, 0x2011, 0x0010, 0x1078, 0x1fc8, 0x0040,
- 0x1f6e, 0x157e, 0x20a9, 0x0000, 0x2021, 0x3e80, 0x047e, 0x2009,
- 0x0004, 0x2011, 0x0010, 0x1078, 0x1fc8, 0x047f, 0x0040, 0x1f6d,
- 0x8420, 0x0070, 0x1f6d, 0x0078, 0x1f5e, 0x157f, 0x8738, 0xa784,
- 0x0007, 0x00c0, 0x1f49, 0x0078, 0x1bdb, 0x0078, 0x1bdb, 0x77b4,
- 0x1078, 0x2cac, 0x6018, 0xa005, 0x0040, 0x1f9d, 0x2021, 0x3f80,
- 0x2009, 0x0005, 0x2011, 0x0020, 0x1078, 0x1fc8, 0x0040, 0x1f9d,
- 0x157e, 0x20a9, 0x0000, 0x2021, 0x3e80, 0x047e, 0x2009, 0x0005,
- 0x2011, 0x0020, 0x1078, 0x1fc8, 0x047f, 0x0040, 0x1f9c, 0x8420,
- 0x0070, 0x1f9c, 0x0078, 0x1f8d, 0x157f, 0x0078, 0x1bdb, 0x2200,
- 0x0079, 0x1fa2, 0x1fa5, 0x1fa7, 0x1fa7, 0x1078, 0x1b81, 0x70a3,
- 0x0000, 0x70a7, 0x0001, 0x0078, 0x1bd3, 0x2200, 0x0079, 0x1fb0,
- 0x1fb5, 0x1fa7, 0x1fb3, 0x1078, 0x1b81, 0x1078, 0x2428, 0x7000,
- 0xa086, 0x0001, 0x00c0, 0x28ba, 0x1078, 0x28fa, 0x6008, 0xa084,
- 0xffef, 0x600a, 0x1078, 0x28ad, 0x0040, 0x28ba, 0x0078, 0x1cd1,
- 0x2404, 0xa005, 0x0040, 0x1fe9, 0x2068, 0x2d04, 0x007e, 0x6810,
- 0xa706, 0x0040, 0x1fd7, 0x2d20, 0x007f, 0x0078, 0x1fc9, 0x007f,
- 0x2022, 0x6916, 0x681c, 0xa205, 0x681e, 0x1078, 0x17e7, 0x6010,
- 0x8001, 0x6012, 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x28fa,
- 0x007c, 0xa085, 0x0001, 0x0078, 0x1fe8, 0x2300, 0x0079, 0x1ff0,
- 0x1ff5, 0x1ff3, 0x2038, 0x1078, 0x1b81, 0x78e4, 0xa005, 0x00d0,
- 0x2018, 0x0018, 0x2018, 0x2008, 0xa084, 0x0030, 0x00c0, 0x2004,
- 0x781b, 0x0049, 0x0078, 0x1bd3, 0x78ec, 0xa084, 0x0003, 0x0040,
- 0x2000, 0x2100, 0xa084, 0x0007, 0x0079, 0x200e, 0x2026, 0x202c,
- 0x2020, 0x2016, 0x2d63, 0x2d63, 0x2016, 0x2032, 0x1078, 0x1b81,
- 0x7000, 0xa005, 0x0040, 0x1bdb, 0x2001, 0x0003, 0x0078, 0x22fd,
- 0x1078, 0x2b94, 0x781b, 0x0055, 0x0078, 0x1bd3, 0x1078, 0x2b94,
- 0x781b, 0x00dc, 0x0078, 0x1bd3, 0x1078, 0x2b94, 0x781b, 0x00e3,
- 0x0078, 0x1bd3, 0x1078, 0x2b94, 0x781b, 0x009d, 0x0078, 0x1bd3,
- 0xa584, 0x000f, 0x00c0, 0x2062, 0x1078, 0x2428, 0x7000, 0x0079,
- 0x2041, 0x2049, 0x2056, 0x2049, 0x28ba, 0x204b, 0x28ba, 0x2049,
- 0x2049, 0x1078, 0x1b81, 0x71a0, 0x70a3, 0x0000, 0xa186, 0x0004,
- 0x00c0, 0x2054, 0x0078, 0x2913, 0x0078, 0x28ba, 0x1078, 0x28fa,
- 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x28ad, 0x0040, 0x28ba,
- 0x0078, 0x1cd1, 0x78e4, 0xa005, 0x00d0, 0x2018, 0x0018, 0x2018,
- 0x2008, 0xa084, 0x0030, 0x00c0, 0x2071, 0x781b, 0x0049, 0x0078,
- 0x1bd3, 0x78ec, 0xa084, 0x0003, 0x0040, 0x206d, 0x2100, 0xa184,
- 0x0007, 0x0079, 0x207b, 0x208b, 0x2091, 0x2085, 0x2083, 0x2d63,
- 0x2d63, 0x2083, 0x2d5b, 0x1078, 0x1b81, 0x1078, 0x2b9c, 0x781b,
- 0x0055, 0x0078, 0x1bd3, 0x1078, 0x2b9c, 0x781b, 0x00dc, 0x0078,
- 0x1bd3, 0x1078, 0x2b9c, 0x781b, 0x00e3, 0x0078, 0x1bd3, 0x1078,
- 0x2b9c, 0x781b, 0x009d, 0x0078, 0x1bd3, 0x2300, 0x0079, 0x20a0,
- 0x20a5, 0x20a3, 0x20a7, 0x1078, 0x1b81, 0x0078, 0x2670, 0x6817,
- 0x0008, 0x78a3, 0x0000, 0x79e4, 0xa184, 0x0030, 0x0040, 0x2670,
- 0x78ec, 0xa084, 0x0003, 0x0040, 0x2670, 0xa184, 0x0007, 0x0079,
- 0x20b9, 0x2026, 0x202c, 0x2020, 0x2d3b, 0x2d63, 0x2d63, 0x20c1,
- 0x2d5b, 0x1078, 0x1b81, 0xa282, 0x0005, 0x0050, 0x20c9, 0x1078,
- 0x1b81, 0x2300, 0x0079, 0x20cc, 0x20cf, 0x22d1, 0x22dd, 0x2200,
- 0x0079, 0x20d2, 0x20d7, 0x20d9, 0x20ec, 0x20d7, 0x22b6, 0x1078,
- 0x1b81, 0x789b, 0x0018, 0x78a8, 0xa084, 0x00ff, 0xa082, 0x0020,
- 0x0048, 0x2b75, 0xa08a, 0x0004, 0x00c8, 0x2b75, 0x0079, 0x20e8,
- 0x2b75, 0x2b75, 0x2b75, 0x2b17, 0x789b, 0x0018, 0x79a8, 0xa184,
- 0x0080, 0x0040, 0x2101, 0xa184, 0x0018, 0x0040, 0x20fd, 0x0078,
- 0x2b75, 0x7000, 0xa005, 0x00c0, 0x20f7, 0x2011, 0x0003, 0x0078,
- 0x275d, 0xa184, 0x00ff, 0xa08a, 0x0010, 0x00c8, 0x2b75, 0x0079,
- 0x2109, 0x211b, 0x2119, 0x2131, 0x2133, 0x21c5, 0x2b75, 0x2b75,
- 0x21c7, 0x2b75, 0x2b75, 0x22b2, 0x22b2, 0x2b75, 0x2b75, 0x2b75,
- 0x22b4, 0x1078, 0x1b81, 0xa684, 0x1000, 0x0040, 0x2128, 0x2001,
- 0x0300, 0x8000, 0x8000, 0x783a, 0x781b, 0x009a, 0x0078, 0x1bd3,
- 0x6814, 0xa084, 0x8000, 0x0040, 0x212f, 0x6817, 0x0003, 0x0078,
- 0x2d3b, 0x1078, 0x1b81, 0x691c, 0x691e, 0xa684, 0x1800, 0x00c0,
- 0x214d, 0x681c, 0xa084, 0x0001, 0x00c0, 0x2155, 0x6814, 0xa086,
- 0x0008, 0x00c0, 0x2145, 0x6817, 0x0000, 0xa684, 0x0400, 0x0040,
- 0x21c1, 0x781b, 0x0058, 0x0078, 0x1bd3, 0xa684, 0x1000, 0x0040,
- 0x2155, 0x781b, 0x0058, 0x0078, 0x1bd3, 0xa684, 0x0060, 0x0040,
- 0x21bd, 0xa684, 0x0800, 0x0040, 0x21bd, 0xa684, 0x8000, 0x00c0,
- 0x2163, 0x0078, 0x217d, 0xa6b4, 0x7fff, 0x7e5a, 0x6eb2, 0x789b,
- 0x0074, 0x7aac, 0x79ac, 0x78ac, 0x801b, 0x00c8, 0x2170, 0x8000,
- 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x6b94, 0x2100, 0xa302,
- 0x68ae, 0x6b90, 0x2200, 0xa303, 0x68aa, 0xa684, 0x4000, 0x0040,
- 0x2185, 0xa6b4, 0xbfff, 0x7e5a, 0x6eb2, 0x7000, 0xa086, 0x0003,
- 0x00c0, 0x2192, 0x1078, 0x2f3d, 0x1078, 0x30e2, 0x781b, 0x0067,
- 0x0078, 0x1bd3, 0xa006, 0x1078, 0x3197, 0x6aac, 0x69a8, 0x6c94,
- 0x6b90, 0x2200, 0xa105, 0x0040, 0x21a1, 0x2200, 0xa422, 0x2100,
- 0xa31b, 0x7cd2, 0x7bd6, 0x2300, 0xa405, 0x00c0, 0x21af, 0xa6b5,
- 0x4000, 0x7e5a, 0x6eb2, 0x781b, 0x0067, 0x0078, 0x1bd3, 0x781b,
- 0x0067, 0x2200, 0xa115, 0x00c0, 0x21b9, 0x1078, 0x30f3, 0x0078,
- 0x1bd3, 0x1078, 0x3120, 0x0078, 0x1bd3, 0x781b, 0x006a, 0x0078,
- 0x1bd3, 0x781b, 0x0058, 0x0078, 0x1bd3, 0x1078, 0x1b81, 0x0078,
- 0x2224, 0x691c, 0xa184, 0x0100, 0x0040, 0x21df, 0xa18c, 0xfeff,
- 0x691e, 0x0c7e, 0x7048, 0x2060, 0x6000, 0xa084, 0xefff, 0x6002,
- 0x6004, 0xa084, 0xfff5, 0x6006, 0x0c7f, 0x0078, 0x2213, 0xa184,
- 0x0200, 0x0040, 0x2213, 0xa18c, 0xfdff, 0x691e, 0x0c7e, 0x7048,
- 0x2060, 0x6000, 0xa084, 0xdfff, 0x6002, 0x6004, 0xa084, 0xffef,
- 0x6006, 0x2008, 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x2213,
- 0x1078, 0x2ca8, 0x1078, 0x29f1, 0x88ff, 0x0040, 0x2213, 0x789b,
- 0x0060, 0x2800, 0x78aa, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684,
- 0x0400, 0x00c0, 0x220f, 0x781b, 0x0055, 0x0078, 0x1bd3, 0x781b,
- 0x0069, 0x0078, 0x1bd3, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x221c,
- 0x781b, 0x0058, 0x0078, 0x1bd3, 0x781b, 0x006a, 0x0078, 0x1bd3,
- 0x0078, 0x2b7b, 0x0078, 0x2b7b, 0x2019, 0x0000, 0x7990, 0xa18c,
- 0x0007, 0x0040, 0x2222, 0x789b, 0x0010, 0x78a8, 0xa094, 0x00ff,
- 0xa286, 0x0001, 0x00c0, 0x2247, 0x2300, 0x7ca8, 0xa400, 0x2018,
- 0xa102, 0x0040, 0x223f, 0x0048, 0x223f, 0x0078, 0x2241, 0x0078,
- 0x21c9, 0x24a8, 0x7aa8, 0x00f0, 0x2241, 0x0078, 0x222d, 0xa284,
- 0x00f0, 0xa086, 0x0020, 0x00c0, 0x22a3, 0x8318, 0x8318, 0x2300,
- 0xa102, 0x0040, 0x2257, 0x0048, 0x2257, 0x0078, 0x22a0, 0xa286,
- 0x0023, 0x0040, 0x2222, 0x6818, 0xa084, 0xfff1, 0x681a, 0x7e58,
- 0xa684, 0xfff1, 0xa085, 0x0010, 0x2030, 0x7e5a, 0x6008, 0xa085,
- 0x0010, 0x600a, 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008, 0x2c48,
- 0x0c7f, 0xa184, 0x0010, 0x0040, 0x227b, 0x1078, 0x2ca8, 0x1078,
- 0x2ad7, 0x0078, 0x228a, 0x0c7e, 0x7048, 0x2060, 0x6004, 0x2008,
- 0x2c48, 0x0c7f, 0xa184, 0x0008, 0x0040, 0x2213, 0x1078, 0x2ca8,
- 0x1078, 0x29f1, 0x88ff, 0x0040, 0x2213, 0x789b, 0x0060, 0x2800,
- 0x78aa, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x229c,
- 0x781b, 0x0055, 0x0078, 0x1bd3, 0x781b, 0x0069, 0x0078, 0x1bd3,
- 0x7aa8, 0x0078, 0x222d, 0x8318, 0x2300, 0xa102, 0x0040, 0x22ac,
- 0x0048, 0x22ac, 0x0078, 0x222d, 0xa284, 0x0080, 0x00c0, 0x2b81,
- 0x0078, 0x2b7b, 0x0078, 0x2b81, 0x0078, 0x2b75, 0x789b, 0x0018,
- 0x78a8, 0xa084, 0x00ff, 0xa08e, 0x0001, 0x0040, 0x22c1, 0x1078,
- 0x1b81, 0x7aa8, 0xa294, 0x00ff, 0x78a8, 0xa084, 0x00ff, 0xa08a,
- 0x0004, 0x00c8, 0x2b75, 0x0079, 0x22cd, 0x2b75, 0x2944, 0x2b75,
- 0x2a72, 0xa282, 0x0000, 0x00c0, 0x22d7, 0x1078, 0x1b81, 0x1078,
- 0x2b94, 0x781b, 0x0069, 0x0078, 0x1bd3, 0xa282, 0x0003, 0x00c0,
- 0x22e3, 0x1078, 0x1b81, 0x1078, 0x2ba4, 0x781b, 0x0069, 0x0078,
- 0x1bd3, 0xa282, 0x0004, 0x0050, 0x22ef, 0x1078, 0x1b81, 0x2300,
- 0x0079, 0x22f2, 0x22f5, 0x23d2, 0x2403, 0xa286, 0x0003, 0x0040,
- 0x22fb, 0x1078, 0x1b81, 0x2001, 0x0000, 0x703a, 0x7000, 0xa084,
- 0x0007, 0x0079, 0x2303, 0x230b, 0x230d, 0x230d, 0x2513, 0x253b,
- 0x24dd, 0x230b, 0x230b, 0x1078, 0x1b81, 0xa684, 0x1000, 0x00c0,
- 0x2315, 0x1078, 0x2eca, 0x0040, 0x23ac, 0x7868, 0xa08c, 0x00ff,
- 0x0040, 0x235d, 0xa186, 0x0008, 0x00c0, 0x232c, 0x1078, 0x28fa,
- 0x6008, 0xa084, 0xffef, 0x600a, 0x1078, 0x28ad, 0x0040, 0x235d,
- 0x1078, 0x2eca, 0x0078, 0x2344, 0xa186, 0x0028, 0x00c0, 0x235d,
- 0x1078, 0x2eca, 0x6008, 0xa084, 0xffef, 0x600a, 0x6018, 0xa005,
- 0x0040, 0x2344, 0x8001, 0x601a, 0xa005, 0x0040, 0x2344, 0x8001,
- 0xa005, 0x0040, 0x2344, 0x601e, 0x681c, 0xa084, 0x0001, 0x0040,
- 0x1bdb, 0x681c, 0xa084, 0xfffe, 0x681e, 0x7054, 0x0c7e, 0x2060,
- 0x6800, 0x6002, 0x0c7f, 0x6004, 0x6802, 0xa005, 0x2d00, 0x00c0,
- 0x235a, 0x6002, 0x6006, 0x0078, 0x1bdb, 0x017e, 0x1078, 0x2428,
- 0x017f, 0xa684, 0xdf00, 0x681a, 0x6827, 0x0000, 0x6f10, 0x81ff,
- 0x0040, 0x23ac, 0xa186, 0x0002, 0x00c0, 0x23a4, 0xa684, 0x0800,
- 0x00c0, 0x237a, 0xa684, 0x0060, 0x0040, 0x237a, 0x78d8, 0x7adc,
- 0x682e, 0x6a2a, 0x8717, 0xa294, 0x000f, 0x8213, 0x8213, 0x8213,
- 0xa290, 0x3600, 0xa290, 0x0000, 0x221c, 0xa384, 0x0100, 0x00c0,
- 0x238b, 0x0078, 0x2391, 0x8210, 0x2204, 0xa085, 0x0018, 0x2012,
- 0x8211, 0xa384, 0x0400, 0x0040, 0x239e, 0x689c, 0xa084, 0x0100,
- 0x00c0, 0x239e, 0x1078, 0x249c, 0x0078, 0x1bdb, 0x6008, 0xa085,
- 0x0002, 0x600a, 0x0078, 0x23ac, 0xa186, 0x0018, 0x0040, 0x23ac,
- 0xa186, 0x0014, 0x0040, 0x1bdb, 0x6912, 0x6814, 0xa084, 0x8000,
- 0x0040, 0x23b4, 0x7038, 0x6816, 0xa68c, 0xdf00, 0x691a, 0x1078,
- 0x28eb, 0x1078, 0x28fa, 0x00c0, 0x23c1, 0x6008, 0xa084, 0xffef,
- 0x600a, 0x681c, 0xa084, 0x0001, 0x00c0, 0x23ca, 0x1078, 0x28e4,
- 0x0078, 0x23ce, 0x7054, 0x2060, 0x6800, 0x6002, 0x1078, 0x17e7,
- 0x0078, 0x1bdb, 0xa282, 0x0004, 0x0048, 0x23d8, 0x1078, 0x1b81,
- 0x2200, 0x0079, 0x23db, 0x23df, 0x23e1, 0x23ee, 0x23e1, 0x1078,
- 0x1b81, 0x7000, 0xa086, 0x0005, 0x0040, 0x23ea, 0x1078, 0x2b94,
- 0x781b, 0x0069, 0x781b, 0x006a, 0x0078, 0x1bd3, 0x7890, 0x8007,
- 0x8001, 0xa084, 0x0007, 0xa080, 0x0018, 0x789a, 0x79a8, 0xa18c,
- 0x00ff, 0xa186, 0x0003, 0x0040, 0x23ff, 0x0078, 0x2b75, 0x781b,
- 0x006a, 0x0078, 0x1bd3, 0x681c, 0xa085, 0x0004, 0x681e, 0x82ff,
- 0x00c0, 0x240e, 0x1078, 0x2b94, 0x0078, 0x2415, 0x8211, 0x0040,
- 0x2413, 0x1078, 0x1b81, 0x1078, 0x2ba4, 0x781b, 0x0069, 0x0078,
- 0x1bd3, 0x1078, 0x2d82, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2425,
- 0x0018, 0x2425, 0x791a, 0xa006, 0x007c, 0xa085, 0x0001, 0x007c,
- 0xa684, 0x0060, 0x00c0, 0x2432, 0x682f, 0x0000, 0x682b, 0x0000,
- 0x0078, 0x249b, 0xa684, 0x0800, 0x00c0, 0x2441, 0x68b0, 0xa084,
- 0x4800, 0xa635, 0xa684, 0x0800, 0x00c0, 0x2441, 0x1078, 0x2eca,
- 0x007c, 0xa684, 0x0020, 0x0040, 0x246d, 0x78d0, 0x8003, 0x00c8,
- 0x244f, 0xa006, 0x1078, 0x3197, 0x78d4, 0x1078, 0x31fc, 0xa684,
- 0x4000, 0x0040, 0x2459, 0x682f, 0x0000, 0x682b, 0x0000, 0x0078,
- 0x243e, 0x68b0, 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0,
- 0x2453, 0x7038, 0xa005, 0x00c0, 0x2467, 0x703b, 0x0007, 0x79d8,
- 0x7adc, 0x692e, 0x6a2a, 0x0078, 0x243e, 0xa684, 0x4000, 0x0040,
- 0x2477, 0x682f, 0x0000, 0x682b, 0x0000, 0x0078, 0x243e, 0x68b0,
- 0xa084, 0x4800, 0xa635, 0xa684, 0x4000, 0x00c0, 0x2471, 0x7038,
- 0xa005, 0x00c0, 0x2485, 0x703b, 0x0007, 0x79d8, 0x7adc, 0x78d0,
- 0x80f3, 0x00c8, 0x248c, 0x8000, 0xa084, 0x003f, 0xa108, 0xa291,
- 0x0000, 0x692e, 0x6a2a, 0x2100, 0xa205, 0x00c0, 0x2499, 0x0078,
- 0x243e, 0x1078, 0x3197, 0x007c, 0xa384, 0x0200, 0x0040, 0x24a4,
- 0x6008, 0xa085, 0x0002, 0x600a, 0x6817, 0x0006, 0x6a28, 0x692c,
- 0x6a3a, 0x693e, 0x682b, 0x0300, 0x682f, 0x0000, 0x6833, 0x2000,
- 0x6893, 0x0000, 0x6897, 0x0020, 0x7000, 0x0079, 0x24b7, 0x24bf,
- 0x24c1, 0x24ca, 0x24bf, 0x24bf, 0x24bf, 0x24bf, 0x24bf, 0x1078,
- 0x1b81, 0x681c, 0xa084, 0x0001, 0x00c0, 0x24ca, 0x1078, 0x28e4,
- 0x0078, 0x24d0, 0x7054, 0x2c50, 0x2060, 0x6800, 0x6002, 0x2a60,
- 0x2021, 0x3557, 0x2404, 0xa005, 0x0040, 0x24d9, 0x2020, 0x0078,
- 0x24d2, 0x2d22, 0x206b, 0x0000, 0x007c, 0x77b4, 0x1078, 0x2bb1,
- 0xa7bc, 0x0f00, 0x1078, 0x2cac, 0x6018, 0xa005, 0x0040, 0x250c,
- 0x0d7e, 0x2001, 0x3f90, 0x2068, 0x0d7f, 0x2021, 0x3f80, 0x2009,
- 0x0004, 0x2011, 0x0010, 0x1078, 0x1fc8, 0x0040, 0x250c, 0x157e,
- 0x20a9, 0x0000, 0x2021, 0x3e80, 0x047e, 0x2009, 0x0004, 0x2011,
- 0x0010, 0x1078, 0x1fc8, 0x047f, 0x0040, 0x250b, 0x8420, 0x0070,
- 0x250b, 0x0078, 0x24fc, 0x157f, 0x8738, 0xa784, 0x0007, 0x00c0,
- 0x24e2, 0x0078, 0x1bdb, 0x1078, 0x28eb, 0x1078, 0x28fa, 0x6827,
- 0x0000, 0x789b, 0x000e, 0x6f10, 0x6813, 0x0002, 0x1078, 0x31cd,
- 0xa684, 0x0800, 0x0040, 0x2528, 0x6918, 0xa18d, 0x2000, 0x691a,
- 0x6814, 0xa084, 0x8000, 0x0040, 0x252f, 0x6817, 0x0000, 0x2021,
- 0x3557, 0x6800, 0x2022, 0x6a38, 0x693c, 0x6a2a, 0x692e, 0x1078,
- 0x17e7, 0x0078, 0x1bdb, 0x1078, 0x2428, 0x6827, 0x0000, 0x789b,
- 0x000e, 0x6f10, 0x1078, 0x2d87, 0xa08c, 0x00ff, 0x6912, 0x6814,
- 0xa084, 0x8000, 0x0040, 0x254e, 0x7038, 0x6816, 0xa68c, 0xdf00,
- 0x691a, 0x70a3, 0x0000, 0x0078, 0x1bdb, 0xa006, 0x1078, 0x2eca,
- 0x6813, 0x0000, 0x6817, 0x0001, 0xa68c, 0xdf00, 0x691a, 0x6827,
- 0x0000, 0x7000, 0x0079, 0x2564, 0x256c, 0x256e, 0x256e, 0x2570,
- 0x2570, 0x2570, 0x256c, 0x256c, 0x1078, 0x1b81, 0x1078, 0x28fa,
- 0x6008, 0xa084, 0xffef, 0x600a, 0x0078, 0x28c5, 0x2300, 0x0079,
- 0x2579, 0x257c, 0x257e, 0x25bc, 0x1078, 0x1b81, 0x7000, 0x0079,
- 0x2581, 0x2589, 0x258b, 0x258b, 0x2596, 0x258b, 0x259d, 0x2589,
- 0x2589, 0x1078, 0x1b81, 0xa684, 0x2000, 0x00c0, 0x2596, 0xa6b5,
- 0x2000, 0x7e5a, 0x1078, 0x30f3, 0x0078, 0x2d3b, 0x6814, 0xa084,
- 0x8000, 0x0040, 0x259d, 0x6817, 0x0007, 0x2009, 0x3518, 0x210c,
- 0xa186, 0x0000, 0x0040, 0x25b2, 0xa186, 0x0001, 0x0040, 0x25b6,
- 0x2009, 0x352b, 0x200b, 0x000b, 0x70a3, 0x0001, 0x781b, 0x0046,
- 0x0078, 0x1bd3, 0x781b, 0x00dd, 0x0078, 0x1bd3, 0x2009, 0x352b,
- 0x200b, 0x000a, 0x0078, 0x1bd3, 0x1078, 0x1b81, 0x2300, 0x0079,
- 0x25c1, 0x25c4, 0x25c6, 0x25e9, 0x1078, 0x1b81, 0x7000, 0x0079,
- 0x25c9, 0x25d1, 0x25d3, 0x25d3, 0x25de, 0x25d3, 0x25e5, 0x25d1,
- 0x25d1, 0x1078, 0x1b81, 0xa684, 0x2000, 0x00c0, 0x25de, 0xa6b5,
- 0x2000, 0x7e5a, 0x1078, 0x30f3, 0x0078, 0x2d3b, 0x6814, 0xa084,
- 0x8000, 0x0040, 0x25e5, 0x6817, 0x0007, 0x781b, 0x00e4, 0x0078,
- 0x1bd3, 0x681c, 0xa085, 0x0004, 0x681e, 0xa6b5, 0x0800, 0x1078,
- 0x2b94, 0x781b, 0x0069, 0x0078, 0x1bd3, 0x2300, 0x0079, 0x25f8,
- 0x25fb, 0x25fd, 0x25ff, 0x1078, 0x1b81, 0x1078, 0x1b81, 0xa684,
- 0x0400, 0x00c0, 0x261e, 0x782b, 0x3009, 0x789b, 0x0060, 0x78ab,
- 0x0000, 0xa684, 0xfffb, 0x785a, 0x79e4, 0xa184, 0x0020, 0x0040,
- 0x2616, 0x78ec, 0xa084, 0x0003, 0x00c0, 0x261a, 0x2001, 0x0014,
- 0x0078, 0x22fd, 0xa184, 0x0007, 0x0079, 0x2656, 0x7a90, 0xa294,
- 0x0007, 0x789b, 0x0060, 0x79a8, 0x81ff, 0x0040, 0x2654, 0x789b,
- 0x0010, 0x7ba8, 0xa384, 0x0001, 0x00c0, 0x2645, 0x7ba8, 0x7ba8,
- 0xa386, 0x0001, 0x00c0, 0x2638, 0x2009, 0xfff7, 0x0078, 0x263e,
- 0xa386, 0x0003, 0x00c0, 0x2645, 0x2009, 0xffef, 0x0c7e, 0x7048,
- 0x2060, 0x6004, 0xa104, 0x6006, 0x0c7f, 0x789b, 0x0060, 0x78ab,
- 0x0000, 0xa684, 0xfffb, 0x785a, 0x782b, 0x3009, 0x691c, 0xa18c,
- 0xfdff, 0xa18c, 0xfeff, 0x691e, 0x0078, 0x2d3b, 0x2026, 0x202c,
- 0x2660, 0x2668, 0x265e, 0x265e, 0x265e, 0x2d3b, 0x1078, 0x1b81,
- 0x691c, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x691e, 0x0078, 0x2d43,
- 0x691c, 0xa18c, 0xfdff, 0xa18c, 0xfeff, 0x691e, 0x0078, 0x2d3b,
- 0x79e4, 0xa184, 0x0030, 0x0040, 0x267a, 0x78ec, 0xa084, 0x0003,
- 0x00c0, 0x2682, 0x6814, 0xa085, 0x8000, 0x6816, 0x2001, 0x0014,
- 0x0078, 0x22fd, 0xa184, 0x0007, 0x0079, 0x2686, 0x2d3b, 0x2d3b,
- 0x268e, 0x2d3b, 0x2d63, 0x2d63, 0x2d3b, 0x2d3b, 0xa684, 0x0400,
- 0x00c0, 0x26bf, 0x681c, 0xa084, 0x0001, 0x0040, 0x2d43, 0xa68c,
- 0x2060, 0xa18c, 0xfffb, 0x795a, 0x69b2, 0x789b, 0x0060, 0x78ab,
- 0x0000, 0x789b, 0x0061, 0x6814, 0xa085, 0x8000, 0x6816, 0x78aa,
- 0x157e, 0x137e, 0x147e, 0x20a1, 0x012c, 0x789b, 0x0000, 0x8000,
- 0x80ac, 0xad80, 0x000a, 0x2098, 0x53a6, 0x147f, 0x137f, 0x157f,
- 0x6810, 0x8007, 0x789b, 0x007e, 0x78aa, 0x0078, 0x2d43, 0x6814,
- 0xa084, 0x8000, 0x0040, 0x26c6, 0x6817, 0x0008, 0x781b, 0x00d8,
- 0x0078, 0x1bd3, 0x2300, 0x0079, 0x26cd, 0x26d2, 0x274d, 0x26d0,
- 0x1078, 0x1b81, 0x7000, 0xa084, 0x0007, 0x0079, 0x26d7, 0x26df,
- 0x26e1, 0x26fd, 0x26df, 0x26df, 0x24dd, 0x26df, 0x26df, 0x1078,
- 0x1b81, 0x691c, 0xa18d, 0x0001, 0x691e, 0x6800, 0x6006, 0xa005,
- 0x00c0, 0x26eb, 0x6002, 0x6818, 0xa084, 0x000e, 0x0040, 0x26f7,
- 0x7014, 0x68b6, 0x712c, 0xa188, 0x3e80, 0x0078, 0x26f9, 0x2009,
- 0x3f80, 0x2104, 0x6802, 0x2d0a, 0x7156, 0x6eb2, 0xa684, 0x0060,
- 0x0040, 0x274b, 0xa684, 0x0800, 0x00c0, 0x270f, 0xa684, 0x7fff,
- 0x68b2, 0x6890, 0x6894, 0x1078, 0x2eca, 0x0078, 0x274b, 0xa684,
- 0x0020, 0x0040, 0x2721, 0xa006, 0x1078, 0x3197, 0x78d0, 0x8003,
- 0x00c8, 0x271d, 0x78d4, 0x1078, 0x31fc, 0x79d8, 0x7adc, 0x0078,
- 0x2725, 0x1078, 0x2cb9, 0x1078, 0x3197, 0xa684, 0x8000, 0x0040,
- 0x274b, 0xa684, 0x7fff, 0x68b2, 0x789b, 0x0074, 0x1078, 0x2d87,
- 0x2010, 0x1078, 0x2d87, 0x2008, 0xa684, 0x0020, 0x00c0, 0x2743,
- 0x1078, 0x2d87, 0x801b, 0x00c8, 0x273e, 0x8000, 0xa084, 0x003f,
- 0xa108, 0xa291, 0x0000, 0x6b94, 0x2100, 0xa302, 0x68ae, 0x6b90,
- 0x2200, 0xa303, 0x68aa, 0x0078, 0x1bdb, 0x0078, 0x2b81, 0x7033,
- 0x0000, 0xa282, 0x0005, 0x0050, 0x2757, 0x1078, 0x1b81, 0x2300,
- 0x0079, 0x275a, 0x275d, 0x2767, 0x278a, 0x2200, 0x0079, 0x2760,
- 0x2765, 0x2b81, 0x2765, 0x27b3, 0x2804, 0x1078, 0x1b81, 0x7000,
- 0xa086, 0x0001, 0x00c0, 0x2774, 0x1078, 0x28fa, 0x1078, 0x2eca,
- 0x7034, 0x600a, 0x0078, 0x2779, 0x7000, 0xa086, 0x0003, 0x0040,
- 0x276e, 0x7003, 0x0005, 0x2001, 0x3f90, 0x2068, 0x703e, 0x7032,
- 0x2200, 0x0079, 0x2783, 0x2b81, 0x2788, 0x27b3, 0x2788, 0x2b81,
- 0x1078, 0x1b81, 0x7000, 0xa086, 0x0001, 0x00c0, 0x2797, 0x1078,
- 0x28fa, 0x1078, 0x2eca, 0x7034, 0x600a, 0x0078, 0x279c, 0x7000,
- 0xa086, 0x0003, 0x0040, 0x2791, 0x7003, 0x0005, 0x2001, 0x3f90,
- 0x2068, 0x703e, 0x7032, 0x2200, 0x0079, 0x27a6, 0x27ad, 0x27ab,
- 0x27ad, 0x27ab, 0x27ad, 0x1078, 0x1b81, 0x1078, 0x2ba4, 0x781b,
- 0x0069, 0x0078, 0x1bd3, 0x7000, 0xa086, 0x0001, 0x00c0, 0x27c0,
- 0x1078, 0x28fa, 0x1078, 0x2eca, 0x7034, 0x600a, 0x0078, 0x27c5,
- 0x7000, 0xa086, 0x0003, 0x0040, 0x27ba, 0x7003, 0x0002, 0x7a80,
- 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, 0x0007, 0xa215,
- 0x2069, 0x3f80, 0x2d04, 0x2d08, 0x7156, 0x2068, 0xa005, 0x0040,
- 0x27e0, 0x6810, 0xa206, 0x0040, 0x27f9, 0x6800, 0x0078, 0x27d3,
- 0x7003, 0x0005, 0x2001, 0x3f90, 0x2068, 0x703e, 0x7032, 0x157e,
- 0x20a9, 0x002f, 0x2003, 0x0000, 0x8000, 0x0070, 0x27f1, 0x0078,
- 0x27ea, 0x157f, 0x6a12, 0x68b3, 0x0700, 0x681f, 0x0800, 0x6823,
- 0x0003, 0x6eb0, 0x7e5a, 0x681c, 0xa084, 0x0c00, 0x0040, 0x285a,
- 0x1078, 0x2b9c, 0x0078, 0x285a, 0x7000, 0xa086, 0x0001, 0x00c0,
- 0x2811, 0x1078, 0x28fa, 0x1078, 0x2eca, 0x7034, 0x600a, 0x0078,
- 0x2816, 0x7000, 0xa086, 0x0003, 0x0040, 0x280b, 0x7003, 0x0002,
- 0x7a80, 0xa294, 0x0f00, 0x789b, 0x0018, 0x7ca8, 0xa484, 0x0007,
- 0xa215, 0x79a8, 0x79a8, 0xa18c, 0x00ff, 0xa1e8, 0x3e80, 0x2d04,
- 0x2d08, 0x7156, 0x2068, 0xa005, 0x0040, 0x2835, 0x6810, 0xa206,
- 0x0040, 0x284e, 0x6800, 0x0078, 0x2828, 0x7003, 0x0005, 0x2001,
- 0x3f90, 0x2068, 0x703e, 0x7032, 0x157e, 0x20a9, 0x002f, 0x2003,
- 0x0000, 0x8000, 0x0070, 0x2846, 0x0078, 0x283f, 0x157f, 0x6a12,
- 0x68b3, 0x0700, 0x681f, 0x0800, 0x6823, 0x0003, 0x6eb0, 0x7e5a,
- 0x681c, 0xa084, 0x0c00, 0x0040, 0x285a, 0x1078, 0x2b98, 0x7e58,
- 0x0078, 0x285a, 0x027e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003,
- 0x8003, 0xa080, 0x3600, 0x2060, 0x704a, 0x6000, 0x704e, 0x6004,
- 0x7052, 0xa684, 0x0060, 0x0040, 0x2891, 0x6b94, 0x6c90, 0x69a8,
- 0x68ac, 0xa105, 0x00c0, 0x287f, 0x7bd2, 0x7bda, 0x7cd6, 0x7cde,
- 0xa6b4, 0xb7ff, 0x7e5a, 0x1078, 0x30f3, 0x0078, 0x2891, 0x68ac,
- 0xa31a, 0x2100, 0xa423, 0x2400, 0xa305, 0x0040, 0x2891, 0x7bd2,
- 0x7bda, 0x7cd6, 0x7cde, 0x68ac, 0xa6b4, 0xbfff, 0x7e5a, 0x1078,
- 0x3120, 0x077f, 0x1078, 0x2cac, 0x2009, 0x006a, 0xa684, 0x0008,
- 0x0040, 0x289c, 0x2009, 0x0069, 0xa6b5, 0x2000, 0x7e5a, 0x791a,
- 0x2d00, 0x703e, 0x8207, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
- 0xa080, 0x3600, 0x2048, 0x0078, 0x1bd3, 0x6020, 0xa005, 0x0040,
- 0x28b9, 0x8001, 0x6022, 0x6008, 0xa085, 0x0008, 0x600a, 0x7010,
- 0x6026, 0x007c, 0xa006, 0x1078, 0x2eca, 0x6813, 0x0000, 0x6817,
- 0x0001, 0x681f, 0x0040, 0x681b, 0x0100, 0x7000, 0xa084, 0x0007,
- 0x0079, 0x28ca, 0x28d2, 0x28d4, 0x28d4, 0x28e0, 0x28dc, 0x28d2,
- 0x28d2, 0x28d2, 0x1078, 0x1b81, 0x1078, 0x28eb, 0x1078, 0x28e4,
- 0x1078, 0x17e7, 0x0078, 0x1bdb, 0x70a3, 0x0000, 0x0078, 0x1bdb,
- 0x6817, 0x0000, 0x0078, 0x2513, 0x6800, 0xa005, 0x00c0, 0x28e9,
- 0x6002, 0x6006, 0x007c, 0x6010, 0xa005, 0x0040, 0x28f4, 0x8001,
- 0x00d0, 0x28f4, 0x1078, 0x1b81, 0x6012, 0x6008, 0xa084, 0xffef,
- 0x600a, 0x007c, 0x6018, 0xa005, 0x0040, 0x2900, 0x8001, 0x601a,
- 0x007c, 0x1078, 0x2d82, 0x6817, 0x0018, 0x0078, 0x2931, 0x1078,
- 0x2d82, 0x6817, 0x0019, 0x0078, 0x2931, 0x1078, 0x2d82, 0x6817,
- 0x001a, 0x0078, 0x2931, 0x77b4, 0x1078, 0x2cac, 0x71b8, 0xa18c,
- 0x00ff, 0xa1e8, 0x3e80, 0x2d04, 0x2d08, 0x2068, 0xa005, 0x00c0,
- 0x2923, 0x0078, 0x1bdb, 0x6810, 0x72b4, 0xa206, 0x0040, 0x292b,
- 0x6800, 0x0078, 0x291c, 0x6800, 0x200a, 0x6817, 0x0005, 0x70bf,
- 0x0000, 0x1078, 0x28eb, 0x681c, 0xa084, 0x0001, 0x00c0, 0x293a,
- 0x1078, 0x28e4, 0x1078, 0x28fa, 0x681b, 0x0000, 0x681f, 0x0020,
- 0x1078, 0x17e7, 0x0078, 0x1bdb, 0xa282, 0x0003, 0x00c0, 0x2b75,
- 0x7da8, 0xa5ac, 0x00ff, 0x7ea8, 0xa6b4, 0x00ff, 0x691c, 0xa18d,
- 0x0080, 0x691e, 0xa184, 0x0100, 0x0040, 0x29a4, 0xa18c, 0xfeff,
- 0x691e, 0xa6b4, 0x00ff, 0x0040, 0x298e, 0xa682, 0x000f, 0x0048,
- 0x2965, 0x0040, 0x2965, 0x2031, 0x000f, 0x852b, 0x852b, 0x1078,
- 0x2c2f, 0x0040, 0x296f, 0x1078, 0x2a3e, 0x0078, 0x2997, 0x1078,
- 0x2bea, 0x0c7e, 0x2960, 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078,
- 0x2a62, 0x0c7f, 0x691c, 0xa18d, 0x0100, 0x691e, 0x7e58, 0xa6b5,
- 0x0004, 0x7e5a, 0xa684, 0x0400, 0x00c0, 0x298a, 0x781b, 0x0055,
- 0x0078, 0x1bd3, 0x781b, 0x0069, 0x0078, 0x1bd3, 0x0c7e, 0x2960,
- 0x6004, 0xa084, 0xfff5, 0x6006, 0x1078, 0x2a62, 0x0c7f, 0x7e58,
- 0xa684, 0x0400, 0x00c0, 0x29a0, 0x781b, 0x0058, 0x0078, 0x1bd3,
- 0x781b, 0x006a, 0x0078, 0x1bd3, 0x0c7e, 0x7048, 0x2060, 0x6100,
- 0xa18c, 0x1000, 0x0040, 0x29e4, 0x6208, 0x8217, 0xa294, 0x00ff,
- 0xa282, 0x000f, 0x0048, 0x29b8, 0x0040, 0x29b8, 0x2011, 0x000f,
- 0x2600, 0xa202, 0x00c8, 0x29bd, 0x2230, 0x6208, 0xa294, 0x00ff,
- 0x7018, 0xa086, 0x0028, 0x00c0, 0x29cd, 0xa282, 0x0019, 0x00c8,
- 0x29d3, 0x2011, 0x0019, 0x0078, 0x29d3, 0xa282, 0x000c, 0x00c8,
- 0x29d3, 0x2011, 0x000c, 0x2200, 0xa502, 0x00c8, 0x29d8, 0x2228,
- 0x1078, 0x2bee, 0x852b, 0x852b, 0x1078, 0x2c2f, 0x0040, 0x29e4,
- 0x1078, 0x2a3e, 0x0078, 0x29e8, 0x1078, 0x2bea, 0x1078, 0x2a62,
- 0x7858, 0xa085, 0x0004, 0x785a, 0x0c7f, 0x781b, 0x0069, 0x0078,
- 0x1bd3, 0x0c7e, 0x2960, 0x6000, 0xa084, 0x1000, 0x00c0, 0x2a0c,
- 0x6010, 0xa084, 0x000f, 0x00c0, 0x2a06, 0xa18c, 0x0002, 0x00c0,
- 0x2a06, 0xa18c, 0xfff5, 0x6106, 0x0c7f, 0x007c, 0x2011, 0x0032,
- 0x2019, 0x0000, 0x0078, 0x2a2e, 0x6208, 0xa294, 0x00ff, 0x7018,
- 0xa086, 0x0028, 0x00c0, 0x2a1c, 0xa282, 0x0019, 0x00c8, 0x2a22,
- 0x2011, 0x0019, 0x0078, 0x2a22, 0xa282, 0x000c, 0x00c8, 0x2a22,
- 0x2011, 0x000c, 0x6308, 0x831f, 0xa39c, 0x00ff, 0xa382, 0x000f,
- 0x0048, 0x2a2e, 0x0040, 0x2a2e, 0x2019, 0x000f, 0x78ab, 0x0001,
- 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7aaa, 0x7baa, 0xa8c0, 0x0005,
- 0x681c, 0xa085, 0x0100, 0x681e, 0x0c7f, 0x007c, 0x0c7e, 0x7148,
- 0x2160, 0x2008, 0xa084, 0xfff0, 0xa635, 0x7e86, 0x6018, 0x789a,
- 0x7eae, 0x6612, 0x78a4, 0xa084, 0xfff8, 0xa18c, 0x0007, 0xa105,
- 0x78a6, 0x6016, 0x788a, 0xa6b4, 0x000f, 0x8637, 0x8204, 0x8004,
- 0xa084, 0x00ff, 0xa605, 0x600e, 0x6004, 0xa084, 0xfff5, 0x6006,
- 0x0c7f, 0x007c, 0x0c7e, 0x7048, 0x2060, 0x6018, 0x789a, 0x78a4,
- 0xa084, 0xfff0, 0x78a6, 0x6012, 0x7884, 0xa084, 0xfff0, 0x7886,
- 0x0c7f, 0x007c, 0xa282, 0x0002, 0x00c0, 0x2b75, 0x7aa8, 0x691c,
- 0xa18d, 0x0080, 0x691e, 0xa184, 0x0200, 0x0040, 0x2ab7, 0xa18c,
- 0xfdff, 0x691e, 0xa294, 0x00ff, 0xa282, 0x0002, 0x00c8, 0x2b75,
- 0x1078, 0x2afe, 0x1078, 0x2a62, 0xa980, 0x0001, 0x200c, 0x1078,
- 0x2ca8, 0x1078, 0x29f1, 0x88ff, 0x0040, 0x2aaa, 0x789b, 0x0060,
- 0x2800, 0x78aa, 0x7e58, 0xa6b5, 0x0004, 0x7e5a, 0xa684, 0x0400,
- 0x00c0, 0x2aa6, 0x781b, 0x0055, 0x0078, 0x1bd3, 0x781b, 0x0069,
- 0x0078, 0x1bd3, 0x7e58, 0xa684, 0x0400, 0x00c0, 0x2ab3, 0x781b,
- 0x0058, 0x0078, 0x1bd3, 0x781b, 0x006a, 0x0078, 0x1bd3, 0xa282,
- 0x0002, 0x00c8, 0x2abf, 0xa284, 0x0001, 0x0040, 0x2ac9, 0x7148,
- 0xa188, 0x0000, 0x210c, 0xa18c, 0x2000, 0x00c0, 0x2ac9, 0x2011,
- 0x0000, 0x1078, 0x2bdc, 0x1078, 0x2afe, 0x1078, 0x2a62, 0x7858,
- 0xa085, 0x0004, 0x785a, 0x781b, 0x0069, 0x0078, 0x1bd3, 0x0c7e,
- 0x027e, 0x2960, 0x6000, 0x2011, 0x0001, 0xa084, 0x2000, 0x00c0,
- 0x2aee, 0x6014, 0xa084, 0x0040, 0x00c0, 0x2aec, 0xa18c, 0xffef,
- 0x6106, 0xa006, 0x0078, 0x2afb, 0x2011, 0x0000, 0x78ab, 0x0001,
- 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0xa8c0, 0x0004, 0x681c,
- 0xa085, 0x0200, 0x681e, 0x027f, 0x0c7f, 0x007c, 0x0c7e, 0x7048,
- 0x2060, 0x82ff, 0x0040, 0x2b06, 0x2011, 0x0040, 0x6018, 0xa080,
- 0x0002, 0x789a, 0x78a4, 0xa084, 0xffbf, 0xa205, 0x78a6, 0x6016,
- 0x788a, 0x6004, 0xa084, 0xffef, 0x6006, 0x0c7f, 0x007c, 0x007e,
- 0x7000, 0xa086, 0x0003, 0x0040, 0x2b20, 0x007f, 0x0078, 0x2b23,
- 0x007f, 0x0078, 0x2b71, 0xa684, 0x0020, 0x0040, 0x2b71, 0x7888,
- 0xa084, 0x0040, 0x0040, 0x2b71, 0x78a8, 0x8001, 0x0040, 0x2b30,
- 0x7bb8, 0xa384, 0x003f, 0x831b, 0x00c8, 0x2b37, 0x8000, 0xa005,
- 0x0040, 0x2b58, 0x831b, 0x00c8, 0x2b40, 0x8001, 0x0040, 0x2b6d,
- 0xa006, 0x1078, 0x3197, 0x78b4, 0x1078, 0x31fc, 0x0078, 0x2b71,
- 0xa684, 0x4000, 0x0040, 0x2b58, 0x78b8, 0x801b, 0x00c8, 0x2b51,
- 0x8000, 0xa084, 0x003f, 0x00c0, 0x2b6d, 0xa6b4, 0xbfff, 0x7e5a,
- 0x79d8, 0x7adc, 0x2001, 0x0001, 0xa108, 0x00c8, 0x2b61, 0xa291,
- 0x0000, 0x79d2, 0x79da, 0x7ad6, 0x7ade, 0x1078, 0x3197, 0x781b,
- 0x0067, 0x1078, 0x3061, 0x0078, 0x1bd3, 0x781b, 0x0067, 0x0078,
- 0x1bd3, 0x781b, 0x006a, 0x0078, 0x1bd3, 0x1078, 0x2ba8, 0x781b,
- 0x0069, 0x0078, 0x1bd3, 0x1078, 0x2b94, 0x781b, 0x0069, 0x0078,
- 0x1bd3, 0x6823, 0x0002, 0x1078, 0x2b9c, 0x691c, 0xa18d, 0x0020,
- 0x691e, 0x6814, 0xa084, 0x8000, 0x0040, 0x2b90, 0x6817, 0x0005,
- 0x781b, 0x0069, 0x0078, 0x1bd3, 0x2001, 0x0005, 0x0078, 0x2baa,
- 0x2001, 0x000c, 0x0078, 0x2baa, 0x2001, 0x0006, 0x0078, 0x2baa,
- 0x2001, 0x000d, 0x0078, 0x2baa, 0x2001, 0x0009, 0x0078, 0x2baa,
- 0x2001, 0x0007, 0x789b, 0x007f, 0x78aa, 0xa6b5, 0x0008, 0x7e5a,
- 0x007c, 0x077e, 0x873f, 0xa7bc, 0x000f, 0x873b, 0x873b, 0x8703,
- 0xa0e0, 0x3600, 0xa7b8, 0x0020, 0x7f9a, 0x79a4, 0xa184, 0x000f,
- 0x0040, 0x2bca, 0xa184, 0xfff0, 0x78a6, 0x6012, 0x6004, 0xa085,
- 0x0008, 0x6006, 0x8738, 0x8738, 0x7f9a, 0x79a4, 0xa184, 0x0040,
- 0x0040, 0x2bda, 0xa184, 0xffbf, 0x78a6, 0x6016, 0x6004, 0xa085,
- 0x0010, 0x6006, 0x077f, 0x007c, 0x789b, 0x0010, 0x78ab, 0x0001,
- 0x78ab, 0x0002, 0x78ab, 0x0003, 0x7aaa, 0x789b, 0x0060, 0x78ab,
- 0x0004, 0x007c, 0x2031, 0x0000, 0x2029, 0x0032, 0x789b, 0x0010,
- 0x78ab, 0x0001, 0x78ab, 0x0003, 0x78ab, 0x0001, 0x7daa, 0x7eaa,
- 0x789b, 0x0060, 0x78ab, 0x0005, 0x007c, 0x157e, 0x8007, 0xa084,
- 0x00ff, 0x8003, 0x8003, 0xa080, 0x0020, 0x789a, 0x79a4, 0xa18c,
- 0xfff0, 0x2001, 0x3546, 0x2004, 0xa082, 0x0028, 0x0040, 0x2c18,
- 0x2021, 0x2c8f, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078, 0x2c1e,
- 0x2021, 0x2c9b, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064,
- 0x2404, 0xa084, 0xfff0, 0xa106, 0x0040, 0x2c2d, 0x8420, 0x2300,
- 0xa210, 0x0070, 0x2c2d, 0x0078, 0x2c20, 0x157f, 0x007c, 0x157e,
- 0x2011, 0x3546, 0x2214, 0xa282, 0x0032, 0x0048, 0x2c43, 0x0040,
- 0x2c47, 0x2021, 0x2c81, 0x2019, 0x0011, 0x20a9, 0x000e, 0x2011,
- 0x0032, 0x0078, 0x2c57, 0xa282, 0x0028, 0x0040, 0x2c4f, 0x2021,
- 0x2c8f, 0x2019, 0x0014, 0x20a9, 0x000c, 0x0078, 0x2c55, 0x2021,
- 0x2c9b, 0x2019, 0x0019, 0x20a9, 0x000d, 0x2011, 0x0064, 0x2200,
- 0xa502, 0x0040, 0x2c67, 0x0048, 0x2c67, 0x8420, 0x2300, 0xa210,
- 0x0070, 0x2c64, 0x0078, 0x2c57, 0x157f, 0xa006, 0x007c, 0x157f,
- 0xa582, 0x0064, 0x00c8, 0x2c70, 0x7808, 0xa085, 0x0070, 0x780a,
- 0x78ec, 0xa084, 0x0300, 0x0040, 0x2c7e, 0x2404, 0xa09e, 0x1201,
- 0x00c0, 0x2c7e, 0x2001, 0x2101, 0x0078, 0x2c7f, 0x2404, 0xa005,
- 0x007c, 0x1201, 0x3002, 0x3202, 0x4203, 0x4403, 0x5404, 0x5604,
- 0x6605, 0x6805, 0x7806, 0x7a06, 0x0a07, 0x0c07, 0x0e07, 0x3202,
- 0x4202, 0x5202, 0x6202, 0x7202, 0x6605, 0x7605, 0x7805, 0x7a05,
- 0x7c05, 0x7e05, 0x7f05, 0x2202, 0x3202, 0x4202, 0x5202, 0x5404,
- 0x6404, 0x7404, 0x7604, 0x7804, 0x7a04, 0x7c04, 0x7e04, 0x7f04,
- 0x789b, 0x0010, 0xa046, 0x007c, 0xa784, 0x0f00, 0x800c, 0xa784,
- 0x0007, 0x8003, 0x8003, 0x8003, 0x8003, 0xa105, 0xa0e0, 0x3680,
- 0x007c, 0x79d8, 0x7adc, 0x78d0, 0x801b, 0x00c8, 0x2cc0, 0x8000,
- 0xa084, 0x003f, 0xa108, 0xa291, 0x0000, 0x007c, 0x0f7e, 0x2079,
- 0x0100, 0x2009, 0x3540, 0x2091, 0x8000, 0x2104, 0x0079, 0x2cd0,
- 0x2d02, 0x2cda, 0x2cda, 0x2cda, 0x2cda, 0x2cda, 0x2cd8, 0x2cd8,
- 0x1078, 0x1b81, 0x784b, 0x0004, 0x7848, 0xa084, 0x0004, 0x00c0,
- 0x2cdc, 0x784b, 0x0008, 0x7848, 0xa084, 0x0008, 0x00c0, 0x2ce3,
- 0x68b0, 0xa085, 0x4000, 0x68b2, 0x7858, 0xa085, 0x4000, 0x785a,
- 0x7830, 0xa084, 0x0080, 0x00c0, 0x2d02, 0x0018, 0x2d02, 0x6818,
- 0xa084, 0x0020, 0x00c0, 0x2d00, 0x781b, 0x00dd, 0x0078, 0x2d02,
- 0x781b, 0x00e4, 0x2091, 0x8001, 0x0f7f, 0x007c, 0x0c7e, 0x6810,
- 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003, 0xa0e0, 0x3600,
- 0x6004, 0xa084, 0x000a, 0x00c0, 0x2d39, 0x6108, 0xa194, 0xff00,
- 0x0040, 0x2d39, 0xa18c, 0x00ff, 0x2001, 0x0019, 0xa106, 0x0040,
- 0x2d28, 0x2001, 0x0032, 0xa106, 0x0040, 0x2d2c, 0x0078, 0x2d30,
- 0x2009, 0x0020, 0x0078, 0x2d32, 0x2009, 0x003f, 0x0078, 0x2d32,
- 0x2011, 0x0000, 0x2100, 0xa205, 0x600a, 0x6004, 0xa085, 0x0002,
- 0x6006, 0x0c7f, 0x007c, 0x781b, 0x006a, 0x0078, 0x1bd3, 0x781b,
- 0x0069, 0x0078, 0x1bd3, 0x781b, 0x0058, 0x0078, 0x1bd3, 0x781b,
- 0x0055, 0x0078, 0x1bd3, 0x781b, 0x00dd, 0x0078, 0x1bd3, 0x781b,
- 0x00dc, 0x0078, 0x1bd3, 0x781b, 0x00e4, 0x0078, 0x1bd3, 0x781b,
- 0x00e3, 0x0078, 0x1bd3, 0x781b, 0x009e, 0x0078, 0x1bd3, 0x781b,
- 0x009d, 0x0078, 0x1bd3, 0x70a3, 0x0001, 0x781b, 0x0046, 0x0078,
- 0x1bd3, 0x007e, 0x7830, 0xa084, 0x00c0, 0x00c0, 0x2d80, 0x7808,
- 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005, 0x78ec,
- 0xa084, 0x0021, 0x0040, 0x2d80, 0x7808, 0xa085, 0x0002, 0x780a,
- 0x007f, 0x007c, 0x7808, 0xa085, 0x0002, 0x780a, 0x007c, 0x7830,
- 0xa084, 0x0040, 0x00c0, 0x2d87, 0x0098, 0x2d90, 0x78ac, 0x007c,
- 0x7808, 0xa084, 0xfffd, 0x780a, 0x0005, 0x0005, 0x0005, 0x0005,
- 0x78ec, 0xa084, 0x0021, 0x0040, 0x2d9f, 0x0098, 0x2d9d, 0x78ac,
- 0x007e, 0x7808, 0xa085, 0x0002, 0x780a, 0x007f, 0x007c, 0xa784,
- 0x0070, 0x0040, 0x2dab, 0x6817, 0x0003, 0x7858, 0xa084, 0x3f00,
- 0x681a, 0x682f, 0x0000, 0x682b, 0x0000, 0x784b, 0x0008, 0x78e4,
- 0xa005, 0x00d0, 0x2018, 0xa084, 0x0020, 0x0040, 0x2018, 0x78ec,
- 0xa084, 0x0003, 0x0040, 0x2018, 0x0018, 0x2018, 0x0078, 0x2b7b,
- 0x0c7e, 0x6810, 0x8007, 0xa084, 0x000f, 0x8003, 0x8003, 0x8003,
- 0xa080, 0x3600, 0x2060, 0x2048, 0x704a, 0x6000, 0x704e, 0x6004,
- 0x7052, 0x0c7f, 0x007c, 0x0020, 0x0020, 0x0000, 0x0020, 0x0000,
- 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
- 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
- 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0000,
- 0x0020, 0x0000, 0x0020, 0x0000, 0x0020, 0x0062, 0x0009, 0x0014,
- 0x0014, 0x9847, 0x0014, 0x0014, 0x98f5, 0x98e7, 0x0014, 0x0014,
- 0x0080, 0x00bf, 0x0100, 0x0402, 0x2008, 0xf880, 0xa20a, 0x0014,
- 0x300b, 0xa20c, 0x0014, 0xa200, 0x8838, 0x817e, 0x842a, 0x84a0,
- 0x3806, 0x8839, 0x28c2, 0x9cc3, 0xa805, 0x0864, 0xa83b, 0x3008,
- 0x28c1, 0x9cc3, 0xa201, 0x300c, 0x2847, 0x8161, 0x846a, 0x8000,
- 0x84a4, 0x1856, 0x883a, 0xa808, 0x28e2, 0x9ca0, 0xa8f3, 0x0864,
- 0xa829, 0x300c, 0xa801, 0x3008, 0x28e1, 0x9ca0, 0x280d, 0xa204,
- 0x64c0, 0x67a0, 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677,
- 0xa80f, 0x786e, 0x883e, 0xa80c, 0x282b, 0xa205, 0x64a0, 0x67a0,
- 0x6fc0, 0x1814, 0x883b, 0x7023, 0x8576, 0x8677, 0xa801, 0x883e,
- 0x2069, 0x28c1, 0x9cc3, 0x2044, 0x2103, 0x20a2, 0x2081, 0xa8dc,
- 0xa207, 0x0014, 0xa203, 0x8000, 0x84a8, 0x85a4, 0x1872, 0x849a,
- 0x883c, 0x1fe2, 0xf601, 0xa208, 0x856e, 0x866f, 0x0704, 0x3008,
- 0x9ca0, 0x0014, 0xa202, 0x8000, 0x85a4, 0x3009, 0x84a8, 0x19e2,
- 0xf848, 0x8174, 0x86eb, 0x85eb, 0x872e, 0x87a9, 0x883f, 0x08e6,
- 0xa8f1, 0xf861, 0xa8e8, 0xf801, 0x0014, 0xf881, 0x0016, 0x85b2,
- 0x80f0, 0x9532, 0xfaa2, 0x1de2, 0x0014, 0x8532, 0xf221, 0x0014,
- 0x1de2, 0x84a8, 0xd6e0, 0x1fe6, 0x0014, 0xa206, 0x6865, 0x817f,
- 0x842a, 0x1dc1, 0x8823, 0x0016, 0x6042, 0x8008, 0xa8fa, 0x8000,
- 0x84a4, 0x8160, 0x842a, 0xf021, 0x3008, 0x84a8, 0x1dc6, 0x20d7,
- 0x8822, 0x0016, 0x8000, 0x2848, 0x1011, 0xa8fc, 0x3008, 0x8000,
- 0xa000, 0x2802, 0x1011, 0xa8fd, 0xa887, 0x3008, 0x283d, 0x1011,
- 0xa8fd, 0xa209, 0x0017, 0x300c, 0x8000, 0x85a4, 0x1de2, 0xdac1,
- 0x0014, 0x26e0, 0x873a, 0xfaa2, 0x19f2, 0x1fe2, 0x0014, 0xa20b,
- 0x0014, 0xa20d, 0x817e, 0x842a, 0x84a0, 0x3806, 0x0210, 0x9ccd,
- 0x0704, 0x0000, 0x127e, 0x2091, 0x2200, 0x2049, 0x2eca, 0x7000,
- 0x7204, 0xa205, 0x720c, 0xa215, 0x7008, 0xa084, 0xfffd, 0xa205,
- 0x0040, 0x2edc, 0x0078, 0x2ee1, 0x7003, 0x0000, 0x127f, 0x2000,
- 0x007c, 0x7000, 0xa084, 0x0001, 0x00c0, 0x2f0f, 0x7108, 0x8104,
- 0x00c8, 0x2eee, 0x1078, 0x2fab, 0x0078, 0x2ee6, 0x700c, 0xa08c,
- 0x007f, 0x0040, 0x2f0f, 0x7004, 0x8004, 0x00c8, 0x2f06, 0x7014,
- 0xa005, 0x00c0, 0x2f02, 0x7010, 0xa005, 0x0040, 0x2f06, 0xa102,
- 0x00c8, 0x2ee6, 0x7007, 0x0010, 0x0078, 0x2f0f, 0x8aff, 0x0040,
- 0x2f0f, 0x1078, 0x316e, 0x00c0, 0x2f09, 0x0040, 0x2ee6, 0x1078,
- 0x2f59, 0x7003, 0x0000, 0x127f, 0x2000, 0x007c, 0x6424, 0x84ff,
- 0x0040, 0x2f33, 0x2c70, 0x2039, 0x2f38, 0x2704, 0xae68, 0x680c,
- 0xa630, 0x6808, 0xa529, 0x8421, 0x0040, 0x2f33, 0x8738, 0x2704,
- 0xa005, 0x00c0, 0x2f1e, 0x7098, 0xa075, 0x0040, 0x2f33, 0x2039,
- 0x2f35, 0x0078, 0x2f1d, 0x007c, 0x0000, 0x0004, 0x0008, 0x000c,
- 0x0010, 0x0014, 0x0018, 0x001c, 0x0000, 0x127e, 0x2091, 0x2200,
- 0x2079, 0x3500, 0x2071, 0x0010, 0x7007, 0x000a, 0x7007, 0x0002,
- 0x7003, 0x0000, 0x2071, 0x0020, 0x7007, 0x000a, 0x7007, 0x0002,
- 0x7003, 0x0000, 0x2049, 0x0000, 0x78b3, 0x0000, 0x127f, 0x2000,
- 0x007c, 0x2049, 0x2f59, 0x7004, 0x8004, 0x00c8, 0x2f85, 0x7007,
- 0x0012, 0x7108, 0x7008, 0xa106, 0x00c0, 0x2f61, 0xa184, 0x0030,
- 0x0040, 0x2f6e, 0xa086, 0x0030, 0x00c0, 0x2f61, 0x7000, 0xa084,
- 0x0001, 0x00c0, 0x2f85, 0x7008, 0xa084, 0x000c, 0x00c0, 0x2f83,
- 0x710c, 0xa184, 0x0300, 0x00c0, 0x2f83, 0xa184, 0x007f, 0x00c0,
- 0x2f59, 0x0078, 0x2f85, 0x6817, 0x0003, 0x7007, 0x0012, 0x7007,
- 0x0008, 0x7004, 0xa084, 0x0008, 0x00c0, 0x2f89, 0x7007, 0x0012,
- 0x7108, 0x8104, 0x0048, 0x2f8e, 0x78b3, 0x0000, 0x7003, 0x0000,
- 0x2049, 0x0000, 0x007c, 0x107e, 0x007e, 0x127e, 0x157e, 0x2091,
- 0x2200, 0x7108, 0x1078, 0x2fab, 0x157f, 0x127f, 0x2091, 0x8001,
- 0x007f, 0x107f, 0x007c, 0x7204, 0x2118, 0x7108, 0x700c, 0xa084,
- 0x0300, 0x00c0, 0x2fed, 0xa184, 0x000c, 0x00c0, 0x2fed, 0x8213,
- 0x8213, 0x8213, 0x8213, 0xa284, 0x0100, 0xa10d, 0x810b, 0x810b,
- 0x810f, 0xa184, 0x0007, 0x0079, 0x2fc5, 0x2fcf, 0x2fdf, 0x2fed,
- 0x2fdf, 0x3001, 0x3001, 0x2fed, 0x2fff, 0x1078, 0x1b81, 0x7007,
- 0x0002, 0x8aff, 0x00c0, 0x2fd8, 0x2049, 0x0000, 0x0078, 0x2fdc,
- 0x1078, 0x316e, 0x00c0, 0x2fd8, 0x78b3, 0x0000, 0x007c, 0x7007,
- 0x0002, 0x8aff, 0x00c0, 0x2fe6, 0x0078, 0x2fea, 0x1078, 0x316e,
- 0x00c0, 0x2fe6, 0x78b3, 0x0000, 0x007c, 0x7007, 0x0002, 0x1078,
- 0x2f59, 0x1078, 0x2cc6, 0x6814, 0xa084, 0x8000, 0x0040, 0x2ffa,
- 0x6817, 0x0002, 0x007c, 0x1078, 0x1b81, 0x1078, 0x1b81, 0x1078,
- 0x3053, 0x7210, 0x7114, 0x700c, 0xa09c, 0x007f, 0x2800, 0xa300,
- 0xa211, 0xa189, 0x0000, 0x78b0, 0xa005, 0x0040, 0x3013, 0x78b3,
- 0x0000, 0x0078, 0x3036, 0x1078, 0x3053, 0x2704, 0x2c58, 0xac60,
- 0x630c, 0x2200, 0xa322, 0x6308, 0x2100, 0xa31b, 0x2400, 0xa305,
- 0x0040, 0x302c, 0x00c8, 0x302c, 0x8412, 0x8210, 0x830a, 0xa189,
- 0x0000, 0x2b60, 0x0078, 0x3013, 0x2b60, 0x8a07, 0xa7ba, 0x2f35,
- 0xa73d, 0x2c00, 0x6882, 0x6f86, 0x6c8e, 0x6b8a, 0x7007, 0x0012,
- 0x1078, 0x2f59, 0x007c, 0x8738, 0x2704, 0xa005, 0x00c0, 0x3047,
- 0x6098, 0xa005, 0x0040, 0x3050, 0x2060, 0x2039, 0x2f35, 0x8a51,
- 0x0040, 0x304f, 0x7008, 0xa084, 0x00c0, 0xa086, 0x00c0, 0x007c,
- 0x2051, 0x0000, 0x007c, 0x8a50, 0x8739, 0x2704, 0xa004, 0x00c0,
- 0x3060, 0x2039, 0x2f3b, 0x6000, 0xa064, 0x00c0, 0x3060, 0x2d60,
- 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x6880, 0x2060,
- 0x6884, 0x6b88, 0x6c8c, 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff,
- 0xa0b8, 0x2f35, 0x7e08, 0xa6b5, 0x000c, 0x6818, 0xa084, 0x0040,
- 0x0040, 0x307c, 0xa6b5, 0x0001, 0x0f7e, 0x2079, 0x0100, 0x7858,
- 0x0f7f, 0xa084, 0x0040, 0x0040, 0x308b, 0xa684, 0x0001, 0x00c0,
- 0x308b, 0xa6b5, 0x0001, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004,
- 0x00c0, 0x308d, 0x7000, 0xa005, 0x0040, 0x3098, 0x1078, 0x1b81,
- 0x2400, 0xa305, 0x00c0, 0x309e, 0x0078, 0x30db, 0x2c58, 0x2704,
- 0xac60, 0x6004, 0xa400, 0x007e, 0x701a, 0x6000, 0xa301, 0x701e,
- 0x2009, 0x04fd, 0x2104, 0xa086, 0x04fd, 0x007f, 0x00c0, 0x30cb,
- 0xa084, 0x0001, 0x0040, 0x30cb, 0xa684, 0x0001, 0x00c0, 0x30cb,
- 0x7013, 0x0001, 0x7017, 0x0000, 0x7602, 0x7007, 0x0001, 0x78b3,
- 0x0001, 0xa4a0, 0x0001, 0xa399, 0x0000, 0x6004, 0xa400, 0x701a,
- 0x6000, 0xa301, 0x701e, 0x620c, 0x2400, 0xa202, 0x7012, 0x6208,
- 0x2300, 0xa203, 0x7016, 0x7602, 0x7007, 0x0001, 0x2b60, 0x1078,
- 0x303b, 0x0078, 0x30dd, 0x1078, 0x316e, 0x00c0, 0x30db, 0x127f,
- 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x7007,
- 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0, 0x30e9, 0x7003, 0x0008,
- 0x127f, 0x2000, 0x007c, 0x127e, 0x0d7e, 0x2091, 0x2200, 0x0d7f,
- 0x2049, 0x30f3, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004, 0x00c0,
- 0x30fc, 0x7000, 0xa005, 0x0040, 0x3107, 0x1078, 0x1b81, 0x7e08,
- 0xa6b5, 0x000c, 0x6818, 0xa084, 0x0040, 0x0040, 0x3111, 0xa6b5,
- 0x0001, 0x6824, 0xa005, 0x0040, 0x311d, 0x2050, 0x2039, 0x2f38,
- 0x2d60, 0x1078, 0x316e, 0x00c0, 0x3119, 0x127f, 0x2000, 0x007c,
- 0x127e, 0x007e, 0x017e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x037f,
- 0x047f, 0x7e08, 0xa6b5, 0x000c, 0x6818, 0xa084, 0x0040, 0x0040,
- 0x3133, 0xa6b5, 0x0001, 0x2049, 0x3120, 0x6824, 0xa055, 0x0040,
- 0x316b, 0x2d70, 0x2e60, 0x2039, 0x2f38, 0x2704, 0xae68, 0x680c,
- 0xa422, 0x6808, 0xa31b, 0x0048, 0x3158, 0x8a51, 0x00c0, 0x314a,
- 0x1078, 0x1b81, 0x8738, 0x2704, 0xa005, 0x00c0, 0x313e, 0x7098,
- 0xa075, 0x2060, 0x0040, 0x316b, 0x2039, 0x2f35, 0x0078, 0x313d,
- 0x8422, 0x8420, 0x831a, 0xa399, 0x0000, 0x690c, 0x2400, 0xa122,
- 0x6908, 0x2300, 0xa11b, 0x00c8, 0x3167, 0x1078, 0x1b81, 0x2071,
- 0x0020, 0x0078, 0x308b, 0x127f, 0x2000, 0x007c, 0x7008, 0xa084,
- 0x00c0, 0xa086, 0x00c0, 0x0040, 0x3196, 0x2704, 0xac08, 0x2104,
- 0x701e, 0x8108, 0x2104, 0x701a, 0x8108, 0x2104, 0x7016, 0x8108,
- 0x2104, 0x7012, 0x0f7e, 0x2079, 0x0100, 0x7858, 0x0f7f, 0xa084,
- 0x0040, 0x0040, 0x3191, 0xa684, 0x0001, 0x00c0, 0x3191, 0xa6b5,
- 0x0001, 0x7602, 0x7007, 0x0001, 0x1078, 0x303b, 0x007c, 0x127e,
- 0x007e, 0x0d7e, 0x2091, 0x2200, 0x2049, 0x3197, 0x0d7f, 0x087f,
- 0x7108, 0xa184, 0x00c0, 0x00c0, 0x31ad, 0x6824, 0xa005, 0x0040,
- 0x31bd, 0x0078, 0x2ee1, 0x0078, 0x31bd, 0x7108, 0x8104, 0x00c8,
- 0x31b5, 0x1078, 0x2fab, 0x0078, 0x31a0, 0x7007, 0x0010, 0x7108,
- 0x8104, 0x00c8, 0x31b7, 0x1078, 0x2fab, 0x7008, 0xa086, 0x0002,
- 0x00c0, 0x31a0, 0x7000, 0xa005, 0x00c0, 0x31a0, 0x7003, 0x0000,
- 0x2049, 0x0000, 0x127f, 0x2000, 0x007c, 0x127e, 0x147e, 0x137e,
- 0x157e, 0x0d7e, 0x2091, 0x2200, 0x0d7f, 0x2049, 0x31cd, 0xad80,
- 0x0010, 0x20a0, 0x2099, 0x0031, 0x700c, 0xa084, 0x007f, 0x6826,
- 0x7007, 0x0008, 0x7007, 0x0002, 0x7003, 0x0001, 0x0040, 0x31eb,
- 0x8000, 0x80ac, 0x53a5, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004,
- 0x00c0, 0x31ed, 0x2049, 0x0000, 0x7003, 0x0000, 0x157f, 0x137f,
- 0x147f, 0x127f, 0x2000, 0x007c, 0x127e, 0x007e, 0x0d7e, 0x2091,
- 0x2200, 0x0d7f, 0x2049, 0x31fc, 0x6880, 0x2060, 0x6884, 0x6b88,
- 0x6c8c, 0x8057, 0xaad4, 0x00ff, 0xa084, 0x00ff, 0xa0b8, 0x2f35,
- 0x7e08, 0xa6b5, 0x0004, 0x7007, 0x0004, 0x7004, 0xa084, 0x0004,
- 0x00c0, 0x3215, 0x2c58, 0x2704, 0xac60, 0x6004, 0xa400, 0x701a,
- 0x6000, 0xa301, 0x701e, 0x7013, 0x0001, 0x7017, 0x0000, 0x7602,
- 0x7007, 0x0001, 0x007f, 0x8007, 0x2009, 0x0031, 0x200a, 0x00a0,
- 0x322f, 0x7108, 0x7007, 0x0002, 0x810c, 0x00c8, 0x322f, 0x810c,
- 0x0048, 0x323c, 0x0078, 0x2fed, 0xa4a0, 0x0001, 0xa399, 0x0000,
- 0x6b8a, 0x6c8e, 0x7007, 0x0004, 0x2049, 0x0000, 0x7003, 0x0000,
- 0x127f, 0x2000, 0x007c, 0x20a9, 0x0010, 0xa006, 0x8004, 0x8086,
- 0x818e, 0x00c8, 0x3254, 0xa200, 0x00f0, 0x324f, 0x8086, 0x818e,
- 0x007c, 0x157e, 0x20a9, 0x0010, 0xa005, 0x0040, 0x327a, 0xa11a,
- 0x00c8, 0x327a, 0x8213, 0x818d, 0x0048, 0x326d, 0xa11a, 0x00c8,
- 0x326e, 0x00f0, 0x3262, 0x0078, 0x3272, 0xa11a, 0x2308, 0x8210,
- 0x00f0, 0x3262, 0x007e, 0x3200, 0xa084, 0xf7ff, 0x2080, 0x007f,
- 0x157f, 0x007c, 0x007e, 0x3200, 0xa085, 0x0800, 0x0078, 0x3276,
- 0x00e0, 0x32c2, 0x2091, 0x6000, 0x7820, 0x8001, 0x7822, 0x00c0,
- 0x32bc, 0x7824, 0x7822, 0x2091, 0x8000, 0x2069, 0x3540, 0x6800,
- 0xa084, 0x0007, 0x0040, 0x32a4, 0xa086, 0x0002, 0x0040, 0x32a4,
- 0x6830, 0xa00d, 0x0040, 0x32a4, 0x2104, 0xa005, 0x0040, 0x32a4,
- 0x8001, 0x200a, 0x0040, 0x3372, 0x2061, 0x3680, 0x20a9, 0x0080,
- 0x6034, 0xa005, 0x0040, 0x32b6, 0x8001, 0x6036, 0x00c0, 0x32b6,
- 0x6010, 0xa005, 0x0040, 0x32b6, 0x1078, 0x1a23, 0xace0, 0x0010,
- 0x0070, 0x32bc, 0x0078, 0x32a8, 0x1078, 0x32d7, 0x1078, 0x32c5,
- 0x1078, 0x32fc, 0x2091, 0x8001, 0x007c, 0x783c, 0x8001, 0x783e,
- 0x00c0, 0x32d6, 0x7840, 0x783e, 0x7848, 0xa005, 0x0040, 0x32d6,
- 0x8001, 0x784a, 0x00c0, 0x32d6, 0x1078, 0x1a23, 0x007c, 0x7834,
- 0x8001, 0x7836, 0x00c0, 0x32fb, 0x7838, 0x7836, 0x2091, 0x8000,
- 0x7844, 0xa005, 0x00c0, 0x32e6, 0x2001, 0x0101, 0x8001, 0x7846,
- 0xa080, 0x3e80, 0x2040, 0x2004, 0xa065, 0x0040, 0x32fb, 0x6020,
- 0xa005, 0x0040, 0x32f7, 0x8001, 0x6022, 0x0040, 0x332b, 0x6000,
- 0x2c40, 0x0078, 0x32ec, 0x007c, 0x7828, 0x8001, 0x782a, 0x00c0,
- 0x332a, 0x782c, 0x782a, 0x7830, 0xa005, 0x00c0, 0x3309, 0x2001,
- 0x0080, 0x8001, 0x7832, 0x8003, 0x8003, 0x8003, 0x8003, 0xa090,
- 0x3680, 0xa298, 0x0002, 0x2304, 0xa084, 0x0008, 0x0040, 0x332a,
- 0xa290, 0x0009, 0x2204, 0xa005, 0x0040, 0x3322, 0x8001, 0x2012,
- 0x00c0, 0x332a, 0x2304, 0xa084, 0xfff7, 0xa085, 0x0080, 0x201a,
- 0x1078, 0x1a23, 0x007c, 0x2069, 0x3540, 0x6800, 0xa005, 0x0040,
- 0x3335, 0x683c, 0xac06, 0x0040, 0x3372, 0x6017, 0x0006, 0x60b0,
- 0xa084, 0x3f00, 0x601a, 0x601c, 0xa084, 0x00ff, 0xa085, 0x0060,
- 0x601e, 0x6000, 0x2042, 0x6710, 0x6fb6, 0x1078, 0x169c, 0x6818,
- 0xa005, 0x0040, 0x334d, 0x8001, 0x681a, 0x6808, 0xa084, 0xffef,
- 0x680a, 0x6810, 0x8001, 0x00d0, 0x3357, 0x1078, 0x1b81, 0x6812,
- 0x602f, 0x0000, 0x602b, 0x0000, 0x2c68, 0x1078, 0x17e7, 0x2069,
- 0x3540, 0x2001, 0x0006, 0x68a2, 0x7944, 0xa184, 0x0100, 0x00c0,
- 0x336d, 0x69ba, 0x2001, 0x0004, 0x68a2, 0x1078, 0x1a1e, 0x2091,
- 0x8001, 0x007c, 0x2009, 0x354f, 0x2164, 0x2069, 0x0100, 0x6017,
- 0x0006, 0x6858, 0xa084, 0x3f00, 0x601a, 0x601c, 0xa084, 0x00ff,
- 0xa085, 0x0048, 0x601e, 0x602f, 0x0000, 0x602b, 0x0000, 0x6830,
- 0xa084, 0x0040, 0x0040, 0x33ac, 0x684b, 0x0004, 0x20a9, 0x0014,
- 0x6848, 0xa084, 0x0004, 0x0040, 0x3399, 0x0070, 0x3399, 0x0078,
- 0x3390, 0x684b, 0x0009, 0x20a9, 0x0014, 0x6848, 0xa084, 0x0001,
- 0x0040, 0x33a6, 0x0070, 0x33a6, 0x0078, 0x339d, 0x20a9, 0x00fa,
- 0x0070, 0x33ac, 0x0078, 0x33a8, 0x6808, 0xa084, 0xfffd, 0x680a,
- 0x681b, 0x0046, 0x2009, 0x3568, 0x200b, 0x0007, 0x784c, 0x784a,
- 0x2091, 0x8001, 0x007c, 0x2079, 0x3500, 0x1078, 0x3404, 0x1078,
- 0x33cc, 0x1078, 0x33e1, 0x1078, 0x33f6, 0x7833, 0x0000, 0x7847,
- 0x0000, 0x784b, 0x0000, 0x007c, 0x2019, 0x000a, 0x2011, 0x3546,
- 0x2204, 0xa086, 0x0032, 0x0040, 0x33de, 0x2019, 0x000c, 0x2204,
- 0xa086, 0x003c, 0x0040, 0x33de, 0x2019, 0x0008, 0x7b2a, 0x7b2e,
- 0x007c, 0x2019, 0x0030, 0x2011, 0x3546, 0x2204, 0xa086, 0x0032,
- 0x0040, 0x33f3, 0x2019, 0x0039, 0x2204, 0xa086, 0x003c, 0x0040,
- 0x33f3, 0x2019, 0x0027, 0x7b36, 0x7b3a, 0x007c, 0x2019, 0x000d,
- 0x2011, 0x3546, 0x2204, 0xa086, 0x003c, 0x0040, 0x3401, 0x2019,
- 0x000a, 0x7b3e, 0x7b42, 0x007c, 0x2019, 0x2faf, 0x2011, 0x3546,
- 0x2204, 0xa086, 0x0032, 0x0040, 0x3416, 0x2019, 0x3971, 0x2204,
- 0xa086, 0x003c, 0x0040, 0x3416, 0x2019, 0x2626, 0x7b22, 0x7b26,
- 0x007c, 0xda3e
-};
-#define ISP_CODE_LENGTH 0x241a
-#endif
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c
index 1b8b9d893a7ee..b93775007e833 100644
--- a/sys/dev/isp/isp.c
+++ b/sys/dev/isp/isp.c
@@ -1,5 +1,4 @@
-/* $Id: isp.c,v 1.10 1999/01/10 02:55:10 mjacob Exp $ */
-/* release_12_28_98_A+ */
+/* $FreeBSD$ */
/*
* Machine and OS Independent (well, as best as possible)
* code for the Qlogic ISP SCSI adapters.
@@ -52,7 +51,7 @@
#include <dev/isp/isp_freebsd.h>
#endif
#ifdef __linux__
-#include "isp_linux.h"
+#include <isp_linux.h>
#endif
/*
@@ -64,7 +63,7 @@
/*
* Local static data
*/
-#ifdef ISP_TARGET_MODE
+#if defined(ISP2100_TARGET_MODE) || defined(ISP_TARGET_MODE)
static const char tgtiqd[36] = {
0x03, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00,
0x51, 0x4C, 0x4F, 0x47, 0x49, 0x43, 0x20, 0x20,
@@ -89,16 +88,11 @@ static const char tgtiqd[36] = {
/*
* Local function prototypes.
*/
-static int isp_parse_async __P((struct ispsoftc *, int));
+static int isp_parse_async __P((struct ispsoftc *, u_int16_t));
static int isp_handle_other_response
__P((struct ispsoftc *, ispstatusreq_t *, u_int8_t *));
-#ifdef ISP_TARGET_MODE
+#if defined(ISP2100_TARGET_MODE) || defined(ISP_TARGET_MODE)
static int isp_modify_lun __P((struct ispsoftc *, int, int, int));
-static void isp_notify_ack __P((struct ispsoftc *, void *));
-static void isp_handle_atio __P((struct ispsoftc *, void *));
-static void isp_handle_atio2 __P((struct ispsoftc *, void *));
-static void isp_handle_ctio __P((struct ispsoftc *, void *));
-static void isp_handle_ctio2 __P((struct ispsoftc *, void *));
#endif
static void isp_parse_status
__P((struct ispsoftc *, ispstatusreq_t *, ISP_SCSI_XFER_T *));
@@ -107,7 +101,7 @@ static void isp_fw_state __P((struct ispsoftc *));
static void isp_dumpregs __P((struct ispsoftc *, const char *));
static void isp_dumpxflist __P((struct ispsoftc *));
static void isp_prtstst __P((ispstatusreq_t *));
-static char *isp2100_fw_statename __P((int));
+static char *isp2100_fw_statename __P((u_int8_t));
static void isp_mboxcmd __P((struct ispsoftc *, mbreg_t *));
static void isp_update __P((struct ispsoftc *));
@@ -128,7 +122,7 @@ isp_reset(isp)
{
static char once = 1;
mbreg_t mbs;
- int loops, i, dodnld = 1, deadchip;
+ int loops, i, dodnld = 1;
char *revname;
isp->isp_state = ISP_NILSTATE;
@@ -139,26 +133,16 @@ isp_reset(isp)
* here.
*/
isp->isp_dblev = DFLT_DBLEVEL;
- deadchip = ISP_READ(isp, HCCR) & HCCR_RESET;
- if (deadchip) {
- ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE);
- if (ISP_READ(isp, HCCR) & HCCR_RESET) {
- isp_dumpregs(isp, "still reset after release");
- SYS_DELAY(1000);
- } else {
- deadchip = 1;
- }
- }
-
if (isp->isp_type & ISP_HA_FC) {
revname = "2100";
} else {
sdparam *sdp = isp->isp_param;
- i = ISP_READ(isp, BIU_CONF0) & BIU_CONF0_HW_MASK;
- switch (i) {
+
+ int rev = ISP_READ(isp, BIU_CONF0) & BIU_CONF0_HW_MASK;
+ switch (rev) {
default:
PRINTF("%s: unknown chip rev. 0x%x- assuming a 1020\n",
- isp->isp_name, i);
+ isp->isp_name, rev);
/* FALLTHROUGH */
case 1:
revname = "1020";
@@ -195,20 +179,16 @@ isp_reset(isp)
* Try and figure out if we're connected to a differential bus.
* You have to pause the RISC processor to read SXP registers.
*/
- if (deadchip == 0) {
- ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE);
- i = 100;
- while ((ISP_READ(isp, HCCR) & HCCR_PAUSE) == 0) {
- SYS_DELAY(20);
- if (--i == 0) {
- isp_dumpregs(isp,
- "cannot stop RISC processor");
- i = -1;
- break;
- }
+ ISP_WRITE(isp, HCCR, HCCR_CMD_PAUSE);
+ i = 100;
+ while ((ISP_READ(isp, HCCR) & HCCR_PAUSE) == 0) {
+ SYS_DELAY(20);
+ if (--i == 0) {
+ PRINTF("%s: unable to pause RISC processor\n",
+ isp->isp_name);
+ i = -1;
+ break;
}
- } else {
- i = 0;
}
if (i > 0) {
if (isp->isp_bustype != ISP_BT_SBUS) {
@@ -243,10 +223,9 @@ isp_reset(isp)
sdp->isp_clock = 40;
}
/*
- * Restart processor, if necessary.
+ * Restart processor
*/
- if (deadchip == 0)
- ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE);
+ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE);
}
/*
* Machine dependent clock (if set) overrides
@@ -264,7 +243,7 @@ isp_reset(isp)
*/
ISP_RESET0(isp);
- if (once == 1 && deadchip == 0) {
+ if (once == 1) {
once = 0;
/*
* Get the current running firmware revision out of the
@@ -285,7 +264,6 @@ isp_reset(isp)
}
}
-
/*
* Hit the chip over the head with hammer,
* and give the ISP a chance to recover.
@@ -353,21 +331,9 @@ isp_reset(isp)
ISP_WRITE(isp, HCCR, HCCR_CMD_RESET);
SYS_DELAY(100);
- /*
- * Establish some initial burst rate thingies
- * (only for the 1XX0 boards). This really should
- * be done later after fetching from NVRAM.
- */
if (isp->isp_type & ISP_HA_SCSI) {
- u_int16_t conf1 = isp->isp_mdvec->dv_conf1;
- /*
- * Busted FIFO. Turn off all but burst enables.
- */
- if (isp->isp_type == ISP_HA_SCSI_1040A) {
- conf1 &= BIU_BURST_ENABLE;
- }
- ISP_SETBITS(isp, BIU_CONF1, conf1);
- if (conf1 & BIU_BURST_ENABLE) {
+ ISP_SETBITS(isp, BIU_CONF1, isp->isp_mdvec->dv_conf1);
+ if (isp->isp_mdvec->dv_conf1 & BIU_BURST_ENABLE) {
ISP_SETBITS(isp, CDMA_CONF, DMA_ENABLE_BURST);
ISP_SETBITS(isp, DDMA_CONF, DMA_ENABLE_BURST);
}
@@ -740,7 +706,7 @@ isp_fibre_init(isp)
fcparam *fcp;
isp_icb_t *icbp;
mbreg_t mbs;
- int count, loopid;
+ int count;
u_int8_t lwfs;
fcp = isp->isp_param;
@@ -749,41 +715,16 @@ isp_fibre_init(isp)
PRINTF("%s: can't setup DMA for mailboxes\n", isp->isp_name);
return;
}
- /*
- * For systems that don't have BIOS methods for which
- * we can easily change the NVRAM based loopid, we'll
- * override that here. Note that when we initialize
- * the firmware we may get back a different loopid than
- * we asked for anyway. XXX This is probably not the
- * best way to figure this out XXX
- */
-#ifndef __i386__
- loopid = DEFAULT_LOOPID;
-#else
- loopid = fcp->isp_loopid;
-#endif
-
icbp = (isp_icb_t *) fcp->isp_scratch;
- MEMZERO(icbp, sizeof (*icbp));
+ bzero(icbp, sizeof (*icbp));
icbp->icb_version = ICB_VERSION1;
-#ifdef ISP_TARGET_MODE
- fcp->isp_fwoptions = ICBOPT_TGT_ENABLE|ICBOPT_INI_TGTTYPE;
-#else
+
fcp->isp_fwoptions = 0;
-#endif
- fcp->isp_fwoptions |= ICBOPT_INI_ADISC|ICBOPT_FAIRNESS;
- fcp->isp_fwoptions |= ICBOPT_PDBCHANGE_AE;
- fcp->isp_fwoptions |= ICBOPT_HARD_ADDRESS;
-#ifdef CHECKME
- fcp->isp_fwoptions |= ICBOPT_USE_PORTNAME;
-#endif
-#ifdef THIS_WORKED
- /*
- * This has unhappiness in target mode
- */
- fcp->isp_fwoptions |= ICBOPT_FULL_LOGIN;
+#ifdef ISP2100_TARGET_MODE
+ fcp->isp_fwoptions |= ICBOPT_TGT_ENABLE | ICBOPT_INI_TGTTYPE;
+ icbp->icb_iqdevtype = 0x23; /* DPQ_SUPPORTED/PROCESSOR */
#endif
icbp->icb_fwoptions = fcp->isp_fwoptions;
icbp->icb_maxfrmlen = fcp->isp_maxfrmlen;
@@ -796,13 +737,9 @@ isp_fibre_init(isp)
icbp->icb_execthrottle = fcp->isp_execthrottle;
icbp->icb_retry_delay = fcp->isp_retry_delay;
icbp->icb_retry_count = fcp->isp_retry_count;
- icbp->icb_hardaddr = loopid;
MAKE_NODE_NAME_FROM_WWN(icbp->icb_nodename, fcp->isp_wwn);
- if (icbp->icb_fwoptions & ICBOPT_USE_PORTNAME) {
- u_int64_t portname = fcp->isp_wwn | (2LL << 56);
- MAKE_NODE_NAME_FROM_WWN(icbp->icb_nodename, portname);
- }
+
icbp->icb_rqstqlen = RQUEST_QUEUE_LEN;
icbp->icb_rsltqlen = RESULT_QUEUE_LEN;
icbp->icb_rqstaddr[RQRSP_ADDR0015] =
@@ -851,15 +788,24 @@ isp_fibre_init(isp)
isp->isp_residx = 0;
/*
- * Wait up to 5 seconds for FW to go to READY state.
+ * Wait up to 12 seconds for FW to go to READY state.
+ * This used to be 3 seconds, but that lost.
+ *
+ * This is all very much not right. The problem here
+ * is that the cable may not be plugged in, or there
+ * may be many many members of the loop that haven't
+ * been logged into.
+ *
+ * This model of doing things doesn't support dynamic
+ * attachment, so we just plain lose (for now).
*/
lwfs = FW_CONFIG_WAIT;
for (count = 0; count < 12000; count++) {
isp_fw_state(isp);
if (lwfs != fcp->isp_fwstate) {
PRINTF("%s: Firmware State %s -> %s\n",
- isp->isp_name, isp2100_fw_statename((int)lwfs),
- isp2100_fw_statename((int)fcp->isp_fwstate));
+ isp->isp_name, isp2100_fw_statename(lwfs),
+ isp2100_fw_statename(fcp->isp_fwstate));
lwfs = fcp->isp_fwstate;
}
if (fcp->isp_fwstate == FW_READY) {
@@ -882,14 +828,16 @@ isp_fibre_init(isp)
}
fcp->isp_loopid = mbs.param[1];
fcp->isp_alpa = mbs.param[2];
- PRINTF("%s: Loop ID %d, ALPA 0x%x\n", isp->isp_name,
+ PRINTF("%s: Loop ID 0x%x, ALPA 0x%x\n", isp->isp_name,
fcp->isp_loopid, fcp->isp_alpa);
isp->isp_state = ISP_INITSTATE;
-#ifdef ISP_TARGET_MODE
+#if defined(ISP2100_TARGET_MODE) || defined(ISP_TARGET_MODE)
DISABLE_INTS(isp);
- if (isp_modify_lun(isp, 0, 1, 1)) {
- PRINTF("%s: failed to enable target mode\n",
- isp->isp_name);
+ if (isp->isp_fwrev >= ISP_FW_REV(1, 13)) {
+ if (isp_modify_lun(isp, 0, 1, 1)) {
+ PRINTF("%s: failed to establish target mode\n",
+ isp->isp_name);
+ }
}
ENABLE_INTS(isp);
#endif
@@ -900,6 +848,29 @@ isp_fibre_init(isp)
}
/*
+ * Free any associated resources prior to decommissioning and
+ * set the card to a known state (so it doesn't wake up and kick
+ * us when we aren't expecting it to).
+ *
+ * Locks are held before coming here.
+ */
+void
+isp_uninit(isp)
+ struct ispsoftc *isp;
+{
+ /*
+ * Leave with interrupts disabled.
+ */
+ DISABLE_INTS(isp);
+
+ /*
+ * Stop the watchdog timer (if started).
+ */
+ STOP_WATCHDOG(isp_watch, isp);
+}
+
+
+/*
* Start a command. Locking is assumed done in the caller.
*/
@@ -964,7 +935,7 @@ ispscsicmd(xs)
u_int8_t niptr;
ispmarkreq_t *marker = (ispmarkreq_t *) reqp;
- MEMZERO((void *) marker, sizeof (*marker));
+ bzero((void *) marker, sizeof (*marker));
marker->req_header.rqs_entry_count = 1;
marker->req_header.rqs_entry_type = RQSTYPE_MARKER;
marker->req_modifier = SYNC_ALL;
@@ -991,7 +962,7 @@ ispscsicmd(xs)
iptr = niptr;
}
- MEMZERO((void *) reqp, UZSIZE);
+ bzero((void *) reqp, UZSIZE);
reqp->req_header.rqs_entry_count = 1;
if (isp->isp_type & ISP_HA_FC) {
reqp->req_header.rqs_entry_type = RQSTYPE_T2RQS;
@@ -1046,19 +1017,12 @@ ispscsicmd(xs)
reqp->req_flags = 0;
}
}
+ reqp->req_lun_trn = XS_LUN(xs);
reqp->req_target = XS_TGT(xs);
if (isp->isp_type & ISP_HA_SCSI) {
- reqp->req_lun_trn = XS_LUN(xs);
reqp->req_cdblen = XS_CDBLEN(xs);
- } else {
-#ifdef SCCLUN
- reqp->req_scclun = XS_LUN(xs);
-#else
- reqp->req_lun_trn = XS_LUN(xs);
-#endif
-
}
- MEMCPY(reqp->req_cdb, XS_CDBP(xs), XS_CDBLEN(xs));
+ bcopy((void *)XS_CDBP(xs), reqp->req_cdb, XS_CDBLEN(xs));
IDPRINTF(5, ("%s(%d.%d): START%d cmd 0x%x datalen %d\n", isp->isp_name,
XS_TGT(xs), XS_LUN(xs), reqp->req_header.rqs_seqno,
@@ -1158,18 +1122,7 @@ isp_control(isp, ctl, arg)
break;
}
mbs.param[0] = MBOX_ABORT;
-#ifdef SCCLUN
- if (isp->isp_type & ISP_HA_FC) {
- mbs.param[1] = XS_TGT(xs) << 8;
- mbs.param[4] = 0;
- mbs.param[5] = 0;
- mbs.param[6] = XS_LUN(xs);
- } else {
- mbs.param[1] = XS_TGT(xs) << 8 | XS_LUN(xs);
- }
-#else
- mbs.param[1] = XS_TGT(xs) << 8 | XS_LUN(xs);
-#endif
+ mbs.param[1] = XS_TGT(xs) | XS_LUN(xs);
mbs.param[2] = (i+1) >> 16;
mbs.param[3] = (i+1) & 0xffff;
isp_mboxcmd(isp, &mbs);
@@ -1227,7 +1180,7 @@ isp_intr(arg)
if (ISP_READ(isp, BIU_SEMA) & 1) {
u_int16_t mbox = ISP_READ(isp, OUTMAILBOX0);
- if (isp_parse_async(isp, (int) mbox))
+ if (isp_parse_async(isp, mbox))
return (1);
ISP_WRITE(isp, BIU_SEMA, 0);
}
@@ -1319,14 +1272,14 @@ isp_intr(arg)
XS_STS(xs) = sp->req_scsi_status & 0xff;
if (isp->isp_type & ISP_HA_SCSI) {
if (sp->req_state_flags & RQSF_GOT_SENSE) {
- MEMCPY(XS_SNSP(xs), sp->req_sense_data,
+ bcopy(sp->req_sense_data, XS_SNSP(xs),
XS_SNSLEN(xs));
XS_SNS_IS_VALID(xs);
}
} else {
if (XS_STS(xs) == SCSI_CHECK) {
XS_SNS_IS_VALID(xs);
- MEMCPY(XS_SNSP(xs), sp->req_sense_data,
+ bcopy(sp->req_sense_data, XS_SNSP(xs),
XS_SNSLEN(xs));
sp->req_state_flags |= RQSF_GOT_SENSE;
}
@@ -1346,9 +1299,8 @@ isp_intr(arg)
} else {
PRINTF("%s: unknown return %x\n", isp->isp_name,
sp->req_header.rqs_entry_type);
- if (XS_NOERR(xs)) {
+ if (XS_NOERR(xs))
XS_SETERR(xs, HBA_BOTCH);
- }
}
if (isp->isp_type & ISP_HA_SCSI) {
XS_RESID(xs) = sp->req_resid;
@@ -1368,8 +1320,7 @@ isp_intr(arg)
*/
if (XS_STS(xs) == SCSI_CHECK && !(XS_IS_SNS_VALID(xs))) {
if (XS_NOERR(xs)) {
- PRINTF("%s: ARQ failure for target %d lun %d\n",
- isp->isp_name, XS_TGT(xs), XS_LUN(xs));
+ PRINTF("%s: ARQ Failure\n", isp->isp_name);
XS_SETERR(xs, HBA_ARQFAIL);
}
}
@@ -1389,8 +1340,9 @@ isp_intr(arg)
}
ISP_WRITE(isp, INMAILBOX5, optr);
- if (isp->isp_nactive > 0)
- isp->isp_nactive--;
+ isp->isp_nactive--;
+ if (isp->isp_nactive < 0)
+ isp->isp_nactive = 0;
complist[ndone++] = xs; /* defer completion call until later */
}
/*
@@ -1417,15 +1369,12 @@ isp_intr(arg)
static int
isp_parse_async(isp, mbox)
struct ispsoftc *isp;
- int mbox;
+ u_int16_t mbox;
{
switch (mbox) {
case ASYNC_BUS_RESET:
PRINTF("%s: SCSI bus reset detected\n", isp->isp_name);
isp->isp_sendmarker = 1;
-#ifdef ISP_TARGET_MODE
- isp_notify_ack(isp, NULL);
-#endif
break;
case ASYNC_SYSTEM_ERROR:
@@ -1452,16 +1401,10 @@ isp_parse_async(isp, mbox)
case ASYNC_TIMEOUT_RESET:
PRINTF("%s: timeout initiated SCSI bus reset\n", isp->isp_name);
isp->isp_sendmarker = 1;
-#ifdef ISP_TARGET_MODE
- isp_notify_ack(isp, NULL);
-#endif
break;
- case ASYNC_DEVICE_RESET:
- PRINTF("%s: device reset\n", isp->isp_name);
-#ifdef ISP_TARGET_MODE
- isp_notify_ack(isp, NULL);
-#endif
+ case ASYNC_UNSPEC_TMODE:
+ PRINTF("%s: mystery async target completion\n", isp->isp_name);
break;
case ASYNC_EXTMSG_UNDERRUN:
@@ -1497,7 +1440,6 @@ isp_parse_async(isp, mbox)
break;
case ASYNC_CTIO_DONE:
- /* Should only occur when Fast Posting Set for 2100s */
PRINTF("%s: CTIO done\n", isp->isp_name);
break;
@@ -1515,9 +1457,6 @@ isp_parse_async(isp, mbox)
case ASYNC_LOOP_RESET:
PRINTF("%s: Loop RESET\n", isp->isp_name);
-#ifdef ISP_TARGET_MODE
- isp_notify_ack(isp, NULL);
-#endif
break;
case ASYNC_PDB_CHANGED:
@@ -1544,122 +1483,62 @@ isp_handle_other_response(isp, sp, optrp)
u_int8_t iptr, optr;
int reqsize = 0;
void *ireqp = NULL;
-#ifdef ISP_TARGET_MODE
- union {
- at_entry_t *atio;
- at2_entry_t *at2io;
- ct_entry_t *ctio;
- ct2_entry_t *ct2io;
- lun_entry_t *lunen;
- in_entry_t *inot;
- in_fcentry_t *inot_fc;
- na_entry_t *nack;
- na_fcentry_t *nack_fc;
- void *voidp;
-#define atio un.atio
-#define at2io un.at2io
-#define ctio un.ctio
-#define ct2io un.ct2io
-#define lunen un.lunen
-#define inot un.inot
-#define inot_fc un.inot_fc
-#define nack un.nack
-#define nack_fc un.nack_fc
- } un;
-
- un.voidp = sp;
-#endif
-
switch (sp->req_header.rqs_entry_type) {
case RQSTYPE_REQUEST:
return (-1);
-#ifdef ISP_TARGET_MODE
+#if defined(ISP2100_TARGET_MODE) || defined(ISP_TARGET_MODE)
case RQSTYPE_NOTIFY_ACK:
{
- static const char *f =
- "%s: Notify Ack Status 0x%x Sequence Id 0x%x\n"
- /*
- * The ISP is acknowleding our ack of an Immediate Notify.
- */
- if (isp->isp_type & ISP_HA_FC) {
- PRINTF(f, isp->isp_name,
- nack_fc->na-status, nack_fc->na_seqid);
- } else {
- PRINTF(f, isp->isp_name,
- nack->na_status, nack->na_seqid);
- }
+ ispnotify_t *spx = (ispnotify_t *) sp;
+ PRINTF("%s: Immediate Notify Ack %d.%d Status 0x%x Sequence "
+ "0x%x\n", isp->isp_name, spx->req_initiator, spx->req_lun,
+ spx->req_status, spx->req_sequence);
break;
}
case RQSTYPE_NOTIFY:
{
- u_int16_t seqid, status;
-
- /*
- * Either the ISP received a SCSI message it cannot handle
- * or some other out of band condition (e.g., Port Logout)
- * or it is returning an Immediate Notify entry we sent.
- */
- if (isp->isp_type & ISP_HA_FC) {
- status = inot_fc->status;
- seqid = inot_fc->in_seqid;
- } else {
- status = inot->status;
- seqid = inot->seqid & 0xff;
- }
- PRINTF("%s: Immediate Notify Status 0x%x Sequence Id 0x%x\n",
- isp->isp_name, status, seqid);
-
- switch (status) {
- case IN_MSG_RECEIVED:
- case IN_IDE_RECEIVED:
- ptisp_got_msg(ptp, &inot);
- break;
- case IN_RSRC_UNAVAIL:
- PRINTF("%s: Firmware out of ATIOs\n", isp->isp_name);
- break;
- case IN_ABORT_TASK:
- PRINTF("%s: Abort Task iid %d rx_id 0x%x\n",
- inot_fc->in_iid, seqid);
- break;
- case IN_PORT_LOGOUT:
- PRINTF("%s: Port Logout for Initiator %d\n",
- isp->isp_name, inot_fc->in_iid);
- break;
- default:
- PRINTF("%s: bad status (0x%x) in Immediate Notify\n",
- isp->isp_name, status);
- break;
-
- }
- isp_notify_ack(isp, un.voidp);
- reqsize = 0;
+ ispnotify_t *spx = (ispnotify_t *) sp;
+
+ PRINTF("%s: Notify loopid %d to lun %d req_status 0x%x "
+ "req_task_flags 0x%x seq 0x%x\n", isp->isp_name, spx->req_initiator, spx->req_lun, spx->req_status,
+ spx->req_task_flags, spx->req_sequence);
+ reqsize = sizeof (*spx);
+ spx->req_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK;
+ spx->req_header.rqs_entry_count = 1;
+ spx->req_header.rqs_flags = 0;
+ spx->req_header.rqs_seqno = isp->isp_seqno++;
+ spx->req_handle = (spx->req_initiator<<16) | RQSTYPE_NOTIFY_ACK;
+ if (spx->req_status == IN_RSRC_UNAVAIL)
+ spx->req_flags = LUN_INCR_CMD;
+ else if (spx->req_status == IN_NOCAP)
+ spx->req_flags = LUN_INCR_IMMED;
+ else {
+ reqsize = 0;
+ }
+ ireqp = spx;
break;
}
case RQSTYPE_ENABLE_LUN:
- case RQSTYPE_MODIFY_LUN:
- if (lunen->req_status != 1) {
- PRINTF("%s: ENABLE/MODIFY LUN returned status 0x%x\n",
- isp->isp_name, lunen->req_status);
+ {
+ isplun_t *ip = (isplun_t *) sp;
+ if (ip->req_status != 1) {
+ PRINTF("%s: ENABLE LUN returned status 0x%x\n",
+ isp->isp_name, ip->req_status);
}
break;
+ }
case RQSTYPE_ATIO2:
{
fcparam *fcp = isp->isp_param;
ispctiot2_t local, *ct2 = NULL;
ispatiot2_t *at2 = (ispatiot2_t *) sp;
- int s, lun;
+ int s;
-#ifdef SCCLUN
- lun = at2->req_scclun;
-#else
- lun = at2->req_lun;
-#endif
- PRINTF("%s: atio2 loopid %d for lun %d rxid 0x%x flags0x%x "
- "tflags0x%x ecodes0x%x rqstatus0x%x\n", isp->isp_name,
- at2->req_initiator, lun, at2->req_rxid,
- at2->req_flags, at2->req_taskflags, at2->req_execodes,
- at2->req_status);
+ PRINTF("%s: atio2 loopid %d for lun %d rxid 0x%x flags 0x%x "
+ "task flags 0x%x exec codes 0x%x\n", isp->isp_name,
+ at2->req_initiator, at2->req_lun, at2->req_rxid,
+ at2->req_flags, at2->req_taskflags, at2->req_execodes);
switch (at2->req_status & ~ATIO_SENSEVALID) {
case ATIO_PATH_INVALID:
@@ -1692,15 +1571,13 @@ isp_handle_other_response(isp, sp, optrp)
}
PRINTF("%s: datalen %d cdb0=0x%x\n", isp->isp_name,
at2->req_datalen, at2->req_cdb[0]);
- MEMZERO((void *) ct2, sizeof (*ct2));
+ bzero ((void *) ct2, sizeof (*ct2));
ct2->req_header.rqs_entry_type = RQSTYPE_CTIO2;
ct2->req_header.rqs_entry_count = 1;
ct2->req_header.rqs_flags = 0;
ct2->req_header.rqs_seqno = isp->isp_seqno++;
- ct2->req_handle = (at2->req_initiator << 16) | lun;
-#ifndef SCCLUN
- ct2->req_lun = lun;
-#endif
+ ct2->req_handle = (at2->req_initiator << 16) | at2->req_lun;
+ ct2->req_lun = at2->req_lun;
ct2->req_initiator = at2->req_initiator;
ct2->req_rxid = at2->req_rxid;
@@ -1718,16 +1595,16 @@ isp_handle_other_response(isp, sp, optrp)
ct2->req_seg_count = 1;
if (at2->req_cdb[0] == 0x12) {
s = sizeof(tgtiqd);
- MEMCPY(fcp->isp_scratch, tgtiqd, s);
+ bcopy((void *)tgtiqd, fcp->isp_scratch, s);
} else {
s = at2->req_datalen;
- MEMZERO(fcp->isp_scratch, s);
+ bzero(fcp->isp_scratch, s);
}
ct2->req_m.mode0.req_dataseg[0].ds_base =
fcp->isp_scdma;
ct2->req_m.mode0.req_dataseg[0].ds_count = s;
ct2->req_m.mode0.req_datalen = s;
-#if 1
+#if 0
if (at2->req_datalen < s) {
ct2->req_m.mode1.req_scsi_status |=
CTIO2_RESP_VALID|CTIO2_RSPOVERUN;
@@ -1741,7 +1618,7 @@ isp_handle_other_response(isp, sp, optrp)
default: /* ALL OTHERS */
ct2->req_flags |= CTIO_NODATA | CTIO2_SMODE1;
ct2->req_m.mode1.req_scsi_status = 0;
-#if 1
+#if 0
if (at2->req_datalen) {
ct2->req_m.mode1.req_scsi_status |=
CTIO2_RSPUNDERUN;
@@ -1773,8 +1650,9 @@ isp_handle_other_response(isp, sp, optrp)
ct2->req_m.mode1.req_sense_len = 18;
ct2->req_m.mode1.req_scsi_status |=
at2->req_scsi_status;
- MEMCPY(ct2->req_m.mode1.req_response,
- at2->req_sense, sizeof (at2->req_sense));
+ bcopy((void *)at2->req_sense,
+ (void *)ct2->req_m.mode1.req_response,
+ sizeof (at2->req_sense));
}
break;
}
@@ -1801,15 +1679,6 @@ isp_handle_other_response(isp, sp, optrp)
ireqp = at2;
break;
}
-#undef atio
-#undef at2io
-#undef ctio
-#undef ct2io
-#undef lunen
-#undef inot
-#undef inot_fc
-#undef nack
-#undef nack_fc
#endif
default:
PRINTF("%s: other response type %x\n", isp->isp_name,
@@ -1826,7 +1695,7 @@ isp_handle_other_response(isp, sp, optrp)
PRINTF("%s: Request Queue Overflow other response\n",
isp->isp_name);
} else {
- MEMCPY(reqp, ireqp, reqsize);
+ bcopy(ireqp, reqp, reqsize);
ISP_WRITE(isp, INMAILBOX4, iptr);
isp->isp_reqidx = iptr;
}
@@ -1834,37 +1703,7 @@ isp_handle_other_response(isp, sp, optrp)
return (0);
}
-#ifdef ISP_TARGET_MODE
-
-static void isp_tmd_newcmd_dflt __P((void *, tmd_cmd_t *));
-static void isp_tmd_event_dflt __P((void *, int));
-static void isp_tmd_notify_dflt __P((void *, tmd_notify_t *));
-
-static void isp_tgt_data_xfer __P ((tmd_cmd_t *));
-static void isp_tgt_endcmd __P ((tmd_cmd_t *, u_int8_t));
-static void isp_tgt_done __P ((tmd_cmd_t *));
-
-static void
-isp_tmd_newcmd_dflt(arg0, cmdp)
- void *arg0;
- tmd_cmd_t *cmdp;
-{
-}
-
-static void
-isp_tmd_event_dflt(arg0, event)
- void *arg0;
- int event;
-{
-}
-
-static void
-isp_tmd_notify_dflt(arg0, npt)
- void *arg0;
- tmd_notify_t *npt;
-{
-}
-
+#if defined(ISP2100_TARGET_MODE) || defined(ISP_TARGET_MODE)
/*
* Locks held, and ints disabled (if FC).
*
@@ -1890,14 +1729,13 @@ isp_modify_lun(isp, lun, icnt, ccnt)
return (-1);
}
- MEMZERO((void *) ip, sizeof (*ip));
+ bzero((void *) ip, sizeof (*ip));
ip->req_header.rqs_entry_type = RQSTYPE_ENABLE_LUN;
ip->req_header.rqs_entry_count = 1;
+ ip->req_header.rqs_flags = 0;
ip->req_header.rqs_seqno = isp->isp_seqno++;
ip->req_handle = RQSTYPE_ENABLE_LUN;
- if (isp->isp_type & ISP_HA_SCSI) {
- ip->req_lun = lun;
- }
+ ip->req_lun = lun;
ip->req_cmdcount = ccnt;
ip->req_imcount = icnt;
ip->req_timeout = 0; /* default 30 seconds */
@@ -1905,263 +1743,6 @@ isp_modify_lun(isp, lun, icnt, ccnt)
isp->isp_reqidx = iptr;
return (0);
}
-
-static void
-isp_notify_ack(isp, ptrp)
- struct ispsoftc *isp;
- void *ptrp;
-{
- void *reqp;
- u_int8_t iptr, optr;
- union {
- na_fcentry_t _naf;
- na_entry_t _nas;
- } un;
-
- MEMZERO((caddr_t)&un, sizeof (un));
- un._nas.na_header.rqs_entry_type = RQSTYPE_NOTIFY_ACK;
- un._nas.na_header.rqs_entry_count = 1;
-
- if (isp->isp_type & ISP_HA_FC) {
- na_fcentry_t *na = &un._nas;
- if (ptrp) {
- in_fcentry_t *inp = ptrp;
- na->na_iid = inp->in_iid;
- na->na_lun = inp->in_lun;
- na->na_task_flags = inp->in_task_flags;
- na->na_seqid = inp->in_seqid;
- na->na_status = inp->in_status;
- } else {
- na->na_flags = NAFC_RST_CLRD;
- }
- } else {
- na_entry_t *na = &un._nas;
- if (ptrp) {
- in_entry_t *inp = ptrp;
- na->na_iid = inp->in_iid;
- na->na_lun = inp->in_lun;
- na->na_tgt = inp->in_tgt;
- na->na_seqid = inp->in_seqid;
- } else {
- na->na_flags = NA_RST_CLRD;
- }
- }
- optr = isp->isp_reqodx = ISP_READ(isp, OUTMAILBOX4);
- iptr = isp->isp_reqidx;
- reqp = (void *) ISP_QUEUE_ENTRY(isp->isp_rquest, iptr);
- iptr = ISP_NXT_QENTRY(iptr, RQUEST_QUEUE_LEN);
- if (iptr == optr) {
- PRINTF("%s: Request Queue Overflow For isp_notify_ack\n",
- isp->isp_name);
- } else {
- MEMCPY(reqp, ireqp, sizeof (un));
- ISP_WRITE(isp, INMAILBOX4, iptr);
- isp->isp_reqidx = iptr;
- }
-}
-
-/*
- * These are dummy stubs for now until the outside framework is plugged in.
- */
-
-static void
-isp_handle_atio (isp, aep)
- struct ispsoftc *isp;
- at_entry_t *aep;
-{
- int status, connected;
- tmd_cmd_t local, *cdp = &local;
-
- /*
- * Get the ATIO status and see if we're still connected.
- */
- status = aep->at_status;
- connected = ((aep->at_flags & AT_NODISC) != 0);
-
- PRINTF("%s: ATIO status=0x%x, connected=%d\n", isp->isp_name,
- status, connected);
-
- /*
- * The firmware status (except for the SenseValid bit) indicates
- * why this ATIO was sent to us.
- * If SenseValid is set, the firware has recommended Sense Data.
- * If the Disconnects Disabled bit is set in the flags field,
- * we're still connected on the SCSI bus - i.e. the initiator
- * did not set DiscPriv in the identify message. We don't care
- * about this so it's ignored.
- */
- switch(status & ~TGTSVALID) {
- case AT_PATH_INVALID:
- /*
- * ATIO rejected by the firmware due to disabled lun.
- */
- PRINTF("%s: Firmware rejected ATIO for disabled lun %d\n",
- isp->isp_name, aep->at_lun);
- break;
-
- case AT_PHASE_ERROR:
- /*
- * Bus Pase Sequence error.
- *
- * The firmware should have filled in the correct
- * sense data.
- */
-
-
- if (status & TGTSVALID) {
- MEMCPY(&cdp->cd_sensedata, aep->at_sense,
- sizeof (cdp->cd_sensedata));
- PRINTF("%s: Bus Phase Sequence error key 0x%x\n",
- isp->isp_name, cdp->cd_sensedata[2] & 0xf);
- } else {
- PRINTF("%s: Bus Phase Sequence With No Sense\n",
- isp->isp_name);
- }
- (*isp->isp_tmd_newcmd)(isp, cdp);
- break;
-
- case AT_NOCAP:
- /*
- * Requested Capability not available
- * We sent an ATIO that overflowed the firmware's
- * command resource count.
- */
- PRINTF("%s: Firmware rejected ATIO, command count overflow\n",
- isp->isp_name);
- break;
-
- case AT_BDR_MSG:
- /*
- * If we send an ATIO to the firmware to increment
- * its command resource count, and the firmware is
- * recovering from a Bus Device Reset, it returns
- * the ATIO with this status.
- */
- PRINTF("%s: ATIO returned with BDR received\n", isp->isp_name);
- break;
-
- case AT_CDB:
- /*
- * New CDB
- */
- cdp->cd_hba = isp;
- cdp->cd_iid = aep->at_iid;
- cdp->cd_tgt = aep->at_tgt;
- cdp->cd_lun = aep->at_lun;
- cdp->cd_tagtype = aep->at_tag_type;
- cdp->cd_tagval = aep->at_tag_val;
- MEMCPY(cdp->cd_cdb, aep->at_cdb, 16);
- PRINTF("%s: CDB 0x%x itl %d/%d/%d\n", isp->isp_name,
- cdp->cd_cdb[0], cdp->cd_iid, cdp->cd_tgt, cdp->cd_lun);
- (*isp->isp_tmd_newcmd)(isp, cdp);
- break;
-
- default:
- PRINTF("%s: Unknown status (0x%x) in ATIO\n",
- isp->isp_name, status);
- cdp->cd_hba = isp;
- cdp->cd_iid = aep->at_iid;
- cdp->cd_tgt = aep->at_tgt;
- cdp->cd_lun = aep->at_lun;
- cdp->cd_tagtype = aep->at_tag_type;
- cdp->cd_tagval = aep->at_tag_val;
- isp_tgtcmd_done(cdp);
- break;
- }
-}
-
-static void
-isp_handle_atio2(isp, aep)
- struct ispsoftc *isp;
- at2_entry_t *aep;
-{
- int status;
- tmd_cmd_t local, *cdp = &local;
-
- /*
- * Get the ATIO2 status.
- */
- status = aep->at_status;
- PRINTD("%s: ATIO2 status=0x%x\n", status);
-
- /*
- * The firmware status (except for the SenseValid bit) indicates
- * why this ATIO was sent to us.
- * If SenseValid is set, the firware has recommended Sense Data.
- */
- switch(status & ~TGTSVALID) {
- case AT_PATH_INVALID:
- /*
- * ATIO rejected by the firmware due to disabled lun.
- */
- PRINTF("%s: Firmware rejected ATIO2 for disabled lun %d\n",
- isp->isp_name, aep->at_lun);
- break;
-
- case AT_NOCAP:
- /*
- * Requested Capability not available
- * We sent an ATIO that overflowed the firmware's
- * command resource count.
- */
- PRINTF("%s: Firmware rejected ATIO2, command count overflow\n",
- isp->isp_name);
- break;
-
- case AT_BDR_MSG:
- /*
- * If we send an ATIO to the firmware to increment
- * its command resource count, and the firmware is
- * recovering from a Bus Device Reset, it returns
- * the ATIO with this status.
- */
- PRINTF("%s: ATIO2 returned with BDR rcvd\n", isp->isp_name);
- break;
-
- case AT_CDB:
- /*
- * New CDB
- */
- cdp->cd_hba = isp;
- cdp->cd_iid = aep->at_iid;
- cdp->cd_tgt = 0;
- cdp->cd_lun = aep->at_lun;
- MEMCPY(cdp->cd_cdb, aep->at_cdb, 16);
- cdp->cd_rxid = aep->at_rxid;
- cdp->cp_origdlen = aep->at_datalen;
- cdp->cp_totbytes = 0;
- PRINTF("%s: CDB 0x%x rx_id 0x%x itl %d/%d/%d dlen %d\n",
- isp->isp_name, cdp->cd_cdb[0], cdp->cd_tagval, cdp->cd_iid,
- cdp->cd_tgt, cdp->cd_lun, aep->at_datalen);
- (*isp->isp_tmd_newcmd)(isp, cdp);
- break;
-
- default:
- PRINTF("%s: Unknown status (0x%x) in ATIO2\n",
- isp->isp_name, status);
- cdp->cd_hba = isp;
- cdp->cd_iid = aep->at_iid;
- cdp->cd_tgt = aep->at_tgt;
- cdp->cd_lun = aep->at_lun;
- cdp->cp_rxid = aep->at_rxid;
- isp_tgtcmd_done(cdp);
- break;
- }
-}
-
-static void
-isp_handle_ctio(isp, cep)
- struct ispsoftc *isp;
- ct_entry_t *aep;
-{
-}
-
-static void
-isp_handle_ctio2(isp, cep)
- struct ispsoftc *isp;
- at2_entry_t *aep;
-{
-}
#endif
static void
@@ -2288,7 +1869,7 @@ isp_parse_status(isp, sp, xs)
break;
case RQCS_UNEXP_BUS_FREE:
- PRINTF("%s: target %d lun %d had an unexpected bus free\n",
+ PRINTF("%s: target %d lun %d had unexeptected bus free\n",
isp->isp_name, XS_TGT(xs), XS_LUN(xs));
break;
@@ -2323,17 +1904,8 @@ isp_parse_status(isp, sp, xs)
break;
case RQCS_QUEUE_FULL:
- PRINTF("%s: internal queues full for target %d lun %d "
- "status 0x%x\n", isp->isp_name, XS_TGT(xs), XS_LUN(xs),
- XS_STS(xs));
- /*
- * If QFULL or some other status byte is set, then this
- * isn't an error, per se.
- */
- if (XS_STS(xs) != 0) {
- XS_SETERR(xs, HBA_NOERROR);
- return;
- }
+ PRINTF("%s: internal queues full for target %d lun %d\n",
+ isp->isp_name, XS_TGT(xs), XS_LUN(xs));
break;
case RQCS_PHASE_SKIPPED:
@@ -2556,29 +2128,6 @@ isp_mboxcmd(isp, mbp)
}
- /*
- * Check for variants
- */
-#ifdef SCCLUN
- if (isp->isp_type & ISP_HA_FC) {
- switch (mbp->param[0]) {
- case MBOX_ABORT:
- inparam = 7;
- break;
- case MBOX_ABORT_DEVICE:
- case MBOX_START_QUEUE:
- case MBOX_STOP_QUEUE:
- case MBOX_SINGLE_STEP_QUEUE:
- case MBOX_ABORT_QUEUE:
- case MBOX_GET_DEV_QUEUE_STATUS:
- inparam = 3;
- break;
- default:
- break;
- }
- }
-#endif
-
command_known:
/*
@@ -2597,7 +2146,7 @@ command_known:
isp->isp_name, ISP_READ(isp, BIU_ISR));
if (ISP_READ(isp, BIU_SEMA) & 1) {
u_int16_t mbox = ISP_READ(isp, OUTMAILBOX0);
- if (isp_parse_async(isp, (int) mbox))
+ if (isp_parse_async(isp, mbox))
return;
ISP_WRITE(isp, BIU_SEMA, 0);
}
@@ -2726,13 +2275,8 @@ command_known:
isp->isp_name, opcode);
break;
- /*
- * Be silent about these...
- */
-
case ASYNC_LOOP_UP:
case ASYNC_LIP_OCCURRED:
- case ASYNC_PDB_CHANGED:
break;
default:
@@ -2850,7 +2394,6 @@ again:
isp_mboxcmd(isp, &mbs);
if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
if (mbs.param[0] == ASYNC_LIP_OCCURRED ||
- mbs.param[0] == ASYNC_PDB_CHANGED ||
mbs.param[0] == ASYNC_LOOP_UP) {
if (once++ < 2) {
goto again;
@@ -3106,14 +2649,59 @@ isp_restart(isp)
if (XS_NULL(xs)) {
continue;
}
- if (isp->isp_nactive > 0)
- isp->isp_nactive--;
+ isp->isp_nactive--;
+ if (isp->isp_nactive < 0) {
+ isp->isp_nactive = 0;
+ }
XS_RESID(xs) = XS_XFRLEN(xs);
XS_SETERR(xs, HBA_BUSRESET);
XS_CMD_DONE(xs);
}
}
+void
+isp_watch(arg)
+ void *arg;
+{
+ int i;
+ struct ispsoftc *isp = arg;
+ ISP_SCSI_XFER_T *xs;
+ ISP_LOCKVAL_DECL;
+
+ /*
+ * Look for completely dead commands (but not polled ones).
+ */
+ ISP_ILOCK(isp);
+ for (i = 0; i < RQUEST_QUEUE_LEN; i++) {
+ if ((xs = (ISP_SCSI_XFER_T *) isp->isp_xflist[i]) == NULL) {
+ continue;
+ }
+ if (XS_TIME(xs) == 0) {
+ continue;
+ }
+ XS_TIME(xs) -= (WATCH_INTERVAL * 1000);
+ /*
+ * Avoid later thinking that this
+ * transaction is not being timed.
+ * Then give ourselves to watchdog
+ * periods of grace.
+ */
+ if (XS_TIME(xs) == 0)
+ XS_TIME(xs) = 1;
+ else if (XS_TIME(xs) > -(2 * WATCH_INTERVAL * 1000)) {
+ continue;
+ }
+ if (isp_control(isp, ISPCTL_ABORT_CMD, xs)) {
+ PRINTF("%s: isp_watch failed to abort command\n",
+ isp->isp_name);
+ isp_restart(isp);
+ break;
+ }
+ }
+ ISP_IUNLOCK(isp);
+ RESTART_WATCHDOG(isp_watch, isp);
+}
+
/*
* Miscellaneous debug statements.
*/
@@ -3159,7 +2747,7 @@ isp_prtstst(sp)
static char *
isp2100_fw_statename(state)
- int state;
+ u_int8_t state;
{
switch(state) {
case FW_CONFIG_WAIT: return "Config Wait";
@@ -3232,9 +2820,9 @@ isp_read_nvram(isp)
if (isp->isp_type & ISP_HA_SCSI) {
sdparam *sdp = (sdparam *) isp->isp_param;
+ /* XXX CHECK THIS FOR SANITY XXX */
sdp->isp_fifo_threshold =
- ISP_NVRAM_FIFO_THRESHOLD(nvram_data) |
- (ISP_NVRAM_FIFO_THRESHOLD_128(nvram_data) << 2);
+ ISP_NVRAM_FIFO_THRESHOLD(nvram_data);
sdp->isp_initiator_id =
ISP_NVRAM_INITIATOR_ID(nvram_data);
@@ -3276,6 +2864,8 @@ isp_read_nvram(isp)
sdp->isp_tag_aging =
ISP_NVRAM_TAG_AGE_LIMIT(nvram_data);
+ /* XXX ISP_NVRAM_FIFO_THRESHOLD_128 XXX */
+
sdp->isp_selection_timeout =
ISP_NVRAM_SELECTION_TIMEOUT(nvram_data);
@@ -3284,12 +2874,6 @@ isp_read_nvram(isp)
sdp->isp_fast_mttr = ISP_NVRAM_FAST_MTTR_ENABLE(nvram_data);
-#if 0
- PRINTF("%s: fifo_threshold = 0x%x cbena%d dbena%d\n",
- isp->isp_name, sdp->isp_fifo_threshold,
- sdp->isp_cmd_dma_burst_enable,
- sdp->isp_data_dma_burst_enabl);
-#endif
for (i = 0; i < 16; i++) {
sdp->isp_devparam[i].dev_enable =
ISP_NVRAM_TGT_DEVICE_ENABLE(nvram_data, i);
@@ -3364,9 +2948,8 @@ isp_read_nvram(isp)
fcp->isp_wwn = wwnstore.full64;
wwnstore.full64 = ISP2100_NVRAM_BOOT_NODE_NAME(nvram_data);
if (wwnstore.full64 != 0) {
- PRINTF("%s: BOOT DEVICE WWN 0x%08x%08x\n",
- isp->isp_name, wwnstore.wds.hi32,
- wwnstore.wds.lo32);
+ PRINTF("%s: BOOT DEVICE WWN 0x%08x%08x\n", isp->isp_name,
+ wwnstore.wds.hi32, wwnstore.wds.lo32);
}
fcp->isp_maxalloc =
ISP2100_NVRAM_MAXIOCBALLOCATION(nvram_data);
diff --git a/sys/dev/isp/isp_freebsd.c b/sys/dev/isp/isp_freebsd.c
index 21d1acd172b9d..654c17cc90e8d 100644
--- a/sys/dev/isp/isp_freebsd.c
+++ b/sys/dev/isp/isp_freebsd.c
@@ -1,5 +1,4 @@
-/* $Id: $ */
-/* release_12_28_98_A */
+/* $FreeBSD$ */
/*
* Platform (FreeBSD) dependent common attachment code for Qlogic adapters.
*
@@ -42,7 +41,8 @@ static void isp_poll __P((struct cam_sim *));
static void isp_action __P((struct cam_sim *, union ccb *));
void
-isp_attach(struct ispsoftc *isp)
+isp_attach(isp)
+ struct ispsoftc *isp;
{
struct ccb_setasync csa;
struct cam_devq *devq;
@@ -96,7 +96,11 @@ isp_attach(struct ispsoftc *isp)
}
static void
-isp_async(void *cbarg, u_int32_t code, struct cam_path *path, void *arg)
+isp_async(cbarg, code, path, arg)
+ void *cbarg;
+ u_int32_t code;
+ struct cam_path *path;
+ void *arg;
{
struct cam_sim *sim;
struct ispsoftc *isp;
@@ -130,14 +134,17 @@ isp_async(void *cbarg, u_int32_t code, struct cam_path *path, void *arg)
}
static void
-isp_poll(struct cam_sim *sim)
+isp_poll(sim)
+ struct cam_sim *sim;
{
isp_intr((struct ispsoftc *) cam_sim_softc(sim));
}
static void
-isp_action(struct cam_sim *sim, union ccb *ccb)
+isp_action(sim, ccb)
+ struct cam_sim *sim;
+ union ccb *ccb;
{
int s, tgt, error;
struct ispsoftc *isp;
@@ -188,13 +195,8 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
} else {
if (ccb->ccb_h.target_id > (MAX_FC_TARG-1)) {
ccb->ccb_h.status = CAM_PATH_INVALID;
-#ifdef SCCLUN
} else if (ccb->ccb_h.target_lun > 15) {
ccb->ccb_h.status = CAM_PATH_INVALID;
-#else
- } else if (ccb->ccb_h.target_lun > 65535) {
- ccb->ccb_h.status = CAM_PATH_INVALID;
-#endif
}
}
if (ccb->ccb_h.status == CAM_PATH_INVALID) {
@@ -205,14 +207,7 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
break;
}
- CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_INFO,
- ("cdb[0]=0x%x dlen%d\n",
- (ccb->ccb_h.flags & CAM_CDB_POINTER)?
- ccb->csio.cdb_io.cdb_ptr[0]:
- ccb->csio.cdb_io.cdb_bytes[0], ccb->csio.dxfer_len));
-
s = splcam();
- DISABLE_INTS(isp);
switch (ispscsicmd((ISP_SCSI_XFER_T *) ccb)) {
case CMD_QUEUED:
ccb->ccb_h.status |= CAM_SIM_QUEUED;
@@ -240,7 +235,6 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
xpt_done(ccb);
break;
}
- ENABLE_INTS(isp);
splx(s);
break;
@@ -484,26 +478,28 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
cpi->max_target = MAX_FC_TARG-1;
cpi->initiator_id =
((fcparam *)isp->isp_param)->isp_loopid;
-#ifdef SCCLUN
- cpi->max_lun = (1 << 16) - 1;
-#else
- cpi->max_lun = (1 << 4) - 1;
-#endif
+ /*
+ * XXX: actually, this is not right if we have
+ * XXX: 1.14 F/W and the second level lun addressing
+ * XXX: in place. It's also probably not right
+ * XXX: even for 1.13 f/w.
+ */
+ cpi->max_lun = 15;
} else {
cpi->initiator_id =
((sdparam *)isp->isp_param)->isp_initiator_id;
cpi->max_target = MAX_TARGETS-1;
if (isp->isp_fwrev >= ISP_FW_REV(7, 55)) {
-#if 0
/*
* Too much breakage.
*/
- cpi->max_lun = (1 << 5) - 1;
+#if 0
+ cpi->max_lun = 31;
#else
- cpi->max_lun = (1 << 3) - 1;
+ cpi->max_lun = 7;
#endif
} else {
- cpi->max_lun = (1 << 3) - 1;
+ cpi->max_lun = 7;
}
}
@@ -522,50 +518,11 @@ isp_action(struct cam_sim *sim, union ccb *ccb)
break;
}
}
-
-#define ISPDDB (CAM_DEBUG_INFO|CAM_DEBUG_TRACE|CAM_DEBUG_CDB)
-void
-isp_done(struct ccb_scsiio *sccb)
-{
- struct ispsoftc *isp = XS_ISP(sccb);
-
- if (XS_NOERR(sccb))
- XS_SETERR(sccb, CAM_REQ_CMP);
- sccb->ccb_h.status &= ~CAM_STATUS_MASK;
- sccb->ccb_h.status |= sccb->ccb_h.spriv_field0;
- if ((sccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP &&
- (sccb->scsi_status != SCSI_STATUS_OK)) {
- sccb->ccb_h.status &= ~CAM_STATUS_MASK;
- sccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR;
- }
- if ((sccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
- if ((sccb->ccb_h.status & CAM_DEV_QFRZN) == 0) {
- IDPRINTF(3, ("%s: freeze devq %d.%d ccbstat 0x%x\n",
- isp->isp_name, sccb->ccb_h.target_id,
- sccb->ccb_h.target_lun, sccb->ccb_h.status));
- xpt_freeze_devq(sccb->ccb_h.path, 1);
- sccb->ccb_h.status |= CAM_DEV_QFRZN;
- }
- }
- if (isp->isp_osinfo.simqfrozen) {
- sccb->ccb_h.status |= CAM_RELEASE_SIMQ;
- isp->isp_osinfo.simqfrozen = 0;
- }
- sccb->ccb_h.status &= ~CAM_SIM_QUEUED;
- if (CAM_DEBUGGED(sccb->ccb_h.path, ISPDDB) &&
- (sccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
- xpt_print_path(sccb->ccb_h.path);
- printf("cam completion status 0x%x\n", sccb->ccb_h.status);
- }
- xpt_done((union ccb *) sccb);
-}
-
#else
static void ispminphys __P((struct buf *));
static u_int32_t isp_adapter_info __P((int));
static int ispcmd __P((ISP_SCSI_XFER_T *));
-static void isp_watch __P((void *arg));
static struct scsi_adapter isp_switch = {
ispcmd, ispminphys, 0, 0, isp_adapter_info, "isp", { 0, 0 }
@@ -580,7 +537,8 @@ static int isp_poll __P((struct ispsoftc *, ISP_SCSI_XFER_T *, int));
* Complete attachment of hardware, include subdevices.
*/
void
-isp_attach(struct ispsoftc *isp)
+isp_attach(isp)
+ struct ispsoftc *isp;
{
struct scsibus_data *scbus;
@@ -589,7 +547,6 @@ isp_attach(struct ispsoftc *isp)
return;
}
isp->isp_state = ISP_RUNSTATE;
- START_WATCHDOG(isp);
isp->isp_osinfo._link.adapter_unit = isp->isp_osinfo.unit;
isp->isp_osinfo._link.adapter_softc = isp;
@@ -626,7 +583,8 @@ isp_attach(struct ispsoftc *isp)
*/
static void
-ispminphys(struct buf *bp)
+ispminphys(bp)
+ struct buf *bp;
{
/*
* Only the 10X0 has a 24 bit limit.
@@ -637,7 +595,8 @@ ispminphys(struct buf *bp)
}
static u_int32_t
-isp_adapter_info(int unit)
+isp_adapter_info(unit)
+ int unit;
{
/*
* XXX: FIND ISP BASED UPON UNIT AND GET REAL QUEUE LIMIT FROM THAT
@@ -646,7 +605,8 @@ isp_adapter_info(int unit)
}
static int
-ispcmd(ISP_SCSI_XFER_T *xs)
+ispcmd(xs)
+ ISP_SCSI_XFER_T *xs;
{
struct ispsoftc *isp;
int r;
@@ -683,7 +643,10 @@ ispcmd(ISP_SCSI_XFER_T *xs)
}
static int
-isp_poll(struct ispsoftc *isp, ISP_SCSI_XFER_T *xs, int mswait)
+isp_poll(isp, xs, mswait)
+ struct ispsoftc *isp;
+ ISP_SCSI_XFER_T *xs;
+ int mswait;
{
while (mswait) {
@@ -698,74 +661,4 @@ isp_poll(struct ispsoftc *isp, ISP_SCSI_XFER_T *xs, int mswait)
}
return (1);
}
-
-static void
-isp_watch(void *arg)
-{
- int i;
- struct ispsoftc *isp = arg;
- ISP_SCSI_XFER_T *xs;
- ISP_ILOCKVAL_DECL;
-
- /*
- * Look for completely dead commands (but not polled ones).
- */
- ISP_ILOCK(isp);
- for (i = 0; i < RQUEST_QUEUE_LEN; i++) {
- if ((xs = (ISP_SCSI_XFER_T *) isp->isp_xflist[i]) == NULL) {
- continue;
- }
- if (XS_TIME(xs) == 0) {
- continue;
- }
- XS_TIME(xs) -= (WATCH_INTERVAL * 1000);
- /*
- * Avoid later thinking that this
- * transaction is not being timed.
- * Then give ourselves to watchdog
- * periods of grace.
- */
- if (XS_TIME(xs) == 0)
- XS_TIME(xs) = 1;
- else if (XS_TIME(xs) > -(2 * WATCH_INTERVAL * 1000)) {
- continue;
- }
- if (isp_control(isp, ISPCTL_ABORT_CMD, xs)) {
- printf("%s: isp_watch failed to abort command\n",
- isp->isp_name);
- isp_restart(isp);
- break;
- }
- }
- RESTART_WATCHDOG(isp_watch, arg);
- ISP_IUNLOCK(isp);
-}
#endif
-
-/*
- * Free any associated resources prior to decommissioning and
- * set the card to a known state (so it doesn't wake up and kick
- * us when we aren't expecting it to).
- *
- * Locks are held before coming here.
- */
-void
-isp_uninit(struct ispsoftc *isp)
-{
- ISP_ILOCKVAL_DECL;
- ISP_ILOCK(isp);
- /*
- * Leave with interrupts disabled.
- */
- DISABLE_INTS(isp);
-
- /*
- * Turn off the watchdog (if active).
- */
- STOP_WATCHDOG(isp_watch, isp);
-
- /*
- * And out...
- */
- ISP_IUNLOCK(isp);
-}
diff --git a/sys/dev/isp/isp_freebsd.h b/sys/dev/isp/isp_freebsd.h
index 3e2e84328fc76..6677b7c29bf95 100644
--- a/sys/dev/isp/isp_freebsd.h
+++ b/sys/dev/isp/isp_freebsd.h
@@ -1,5 +1,4 @@
-/* $Id: isp_freebsd.h,v 1.8 1999/01/10 02:51:06 mjacob Exp $ */
-/* release_12_28_98_A+ */
+/* $FreeBSD$ */
/*
* Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions (non CAM version)
*---------------------------------------
@@ -36,7 +35,7 @@
#define _ISP_FREEBSD_H
#define ISP_PLATFORM_VERSION_MAJOR 0
-#define ISP_PLATFORM_VERSION_MINOR 98
+#define ISP_PLATFORM_VERSION_MINOR 97
#include <sys/param.h>
@@ -80,11 +79,7 @@ struct isposinfo {
#define IDPRINTF(lev, x) if (isp->isp_dblev >= lev) printf x
#define DFLT_DBLEVEL 1
-#define MEMZERO BZERO
-#define MEMCPY(dst, src, amt) bcopy((src), (dst), (amt))
-
#define ISP_LOCKVAL_DECL int isp_spl_save
-#define ISP_ILOCKVAL_DECL ISP_LOCKVAL_DECL
#define ISP_UNLOCK(isp) (void) splx(isp_spl_save)
#define ISP_LOCK(isp) isp_spl_save = splbio()
#define ISP_ILOCK(isp) ISP_LOCK(isp)
@@ -103,7 +98,7 @@ struct isposinfo {
#define XS_STS(xs) (xs)->status
#define XS_TIME(xs) (xs)->timeout
#define XS_SNSP(xs) (&(xs)->sense)
-#define XS_SNSLEN(xs) (sizeof((xs)->sense))
+#define XS_SNSLEN(xs) (sizeof (xs)->sense)
#define XS_SNSKEY(xs) ((xs)->sense.ext.extended.flags)
#define HBA_NOERROR XS_NOERROR
@@ -135,15 +130,18 @@ struct isposinfo {
/*
* Our default tag
*/
-#define XS_KINDOF_TAG(xs) REQFLAG_STAG
+#define XS_KINDOF_TAG(xs) REQFLAG_OTAG
#define CMD_COMPLETE COMPLETE
#define CMD_EAGAIN TRY_AGAIN_LATER
#define CMD_QUEUED SUCCESSFULLY_QUEUED
+
+
#define isp_name isp_osinfo.name
+
#define SYS_DELAY(x) DELAY(x)
#define WATCH_INTERVAL 30
@@ -161,7 +159,6 @@ struct isposinfo {
#define RESTART_WATCHDOG(f, s) START_WATCHDOG(f, s)
extern void isp_attach __P((struct ispsoftc *));
-extern void isp_uninit __P((struct ispsoftc *));
#define PVS "Qlogic ISP Driver, FreeBSD Non-Cam"
diff --git a/sys/dev/isp/isp_freebsd_cam.h b/sys/dev/isp/isp_freebsd_cam.h
index 7649a15511a1d..383b0078f7d13 100644
--- a/sys/dev/isp/isp_freebsd_cam.h
+++ b/sys/dev/isp/isp_freebsd_cam.h
@@ -1,5 +1,4 @@
-/* $Id: isp_freebsd_cam.h,v 1.11 1999/01/10 02:51:06 mjacob Exp $ */
-/* release_12_28_98_A+ */
+/* $FreeBSD$ */
/*
* Qlogic ISP SCSI Host Adapter FreeBSD Wrapper Definitions (CAM version)
*---------------------------------------
@@ -69,6 +68,7 @@ struct isposinfo {
int unit;
struct cam_sim *sim;
struct cam_path *path;
+ struct callout_handle watchid;
volatile char simqfrozen;
};
@@ -89,9 +89,6 @@ struct isposinfo {
#define PRINTF printf
#define IDPRINTF(lev, x) if (isp->isp_dblev >= lev) printf x
-#define MEMZERO bzero
-#define MEMCPY(dst, src, amt) bcopy((src), (dst), (amt))
-
#ifdef CAMDEBUG
#define DFLT_DBLEVEL 2
#else
@@ -99,7 +96,6 @@ struct isposinfo {
#endif
#define ISP_LOCKVAL_DECL int isp_spl_save
-#define ISP_ILOCKVAL_DECL ISP_LOCKVAL_DECL
#define ISP_UNLOCK(isp) (void) splx(isp_spl_save)
#define ISP_LOCK(isp) isp_spl_save = splcam()
#define ISP_ILOCK(isp) ISP_LOCK(isp)
@@ -119,7 +115,7 @@ struct isposinfo {
#define XS_STS(ccb) (ccb)->scsi_status
#define XS_TIME(ccb) (ccb)->ccb_h.timeout
#define XS_SNSP(ccb) (&(ccb)->sense_data)
-#define XS_SNSLEN(ccb) imin((sizeof((ccb)->sense_data)), ccb->sense_len)
+#define XS_SNSLEN(ccb) imin((sizeof (ccb)->sense_data), ccb->sense_len)
#define XS_SNSKEY(ccb) ((ccb)->sense_data.flags & 0xf)
/*
@@ -148,8 +144,32 @@ struct isposinfo {
#define XS_NOERR(ccb) \
((ccb)->ccb_h.spriv_field0 == CAM_REQ_INPROG)
-extern void isp_done(struct ccb_scsiio *);
-#define XS_CMD_DONE(sccb) isp_done(sccb)
+#define XS_CMD_DONE(sccb) \
+ if (XS_NOERR((sccb))) \
+ XS_SETERR((sccb), CAM_REQ_CMP); \
+ (sccb)->ccb_h.status &= ~CAM_STATUS_MASK; \
+ (sccb)->ccb_h.status |= (sccb)->ccb_h.spriv_field0; \
+ if (((sccb)->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP && \
+ (sccb)->scsi_status != SCSI_STATUS_OK) { \
+ (sccb)->ccb_h.status &= ~CAM_STATUS_MASK; \
+ (sccb)->ccb_h.status |= CAM_SCSI_STATUS_ERROR; \
+ } \
+ if (((sccb)->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) { \
+ if (((sccb)->ccb_h.status & CAM_DEV_QFRZN) == 0) { \
+ struct ispsoftc *isp = XS_ISP((sccb)); \
+ IDPRINTF(3, ("%s: freeze devq %d.%d ccbstat 0x%x\n",\
+ isp->isp_name, (sccb)->ccb_h.target_id, \
+ (sccb)->ccb_h.target_lun, (sccb)->ccb_h.status)); \
+ xpt_freeze_devq((sccb)->ccb_h.path, 1); \
+ (sccb)->ccb_h.status |= CAM_DEV_QFRZN; \
+ } \
+ } \
+ if ((XS_ISP((sccb)))->isp_osinfo.simqfrozen) { \
+ (sccb)->ccb_h.status |= CAM_RELEASE_SIMQ; \
+ (XS_ISP((sccb)))->isp_osinfo.simqfrozen = 0; \
+ } \
+ (sccb)->ccb_h.status &= ~CAM_SIM_QUEUED; \
+ xpt_done((union ccb *)(sccb))
#define XS_IS_CMD_DONE(ccb) \
(((ccb)->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_INPROG)
@@ -174,8 +194,14 @@ extern void isp_done(struct ccb_scsiio *);
#define CMD_QUEUED 2
#define SYS_DELAY(x) DELAY(x)
-#define STOP_WATCHDOG(f, s)
+
+#define WATCH_INTERVAL 30
+#define START_WATCHDOG(f, s) \
+ (s)->isp_osinfo.watchid = timeout(f, s, WATCH_INTERVAL * hz), \
+ s->isp_dogactive = 1
+#define STOP_WATCHDOG(f, s) untimeout(f, s, (s)->isp_osinfo.watchid),\
+ (s)->isp_dogactive = 0
+#define RESTART_WATCHDOG(f, s) START_WATCHDOG(f, s)
extern void isp_attach __P((struct ispsoftc *));
-extern void isp_uninit __P((struct ispsoftc *));
#endif /* _ISP_FREEBSD_CAM_H */
diff --git a/sys/dev/isp/ispmbox.h b/sys/dev/isp/ispmbox.h
index 24de5aebf94c8..b3f82a7821d51 100644
--- a/sys/dev/isp/ispmbox.h
+++ b/sys/dev/isp/ispmbox.h
@@ -1,5 +1,4 @@
-/* $Id: $ */
-/* release_12_28_98_A */
+/* $Id: ispmbox.h,v 1.7 1998/09/14 23:23:26 mjacob Exp $ */
/*
* Mailbox and Queue Entry Definitions for for Qlogic ISP SCSI adapters.
*
@@ -154,7 +153,7 @@ typedef struct {
#define ASYNC_RSP_XFER_ERR 0x8004
#define ASYNC_QWAKEUP 0x8005
#define ASYNC_TIMEOUT_RESET 0x8006
-#define ASYNC_DEVICE_RESET 0x8007
+#define ASYNC_UNSPEC_TMODE 0x8007
#define ASYNC_EXTMSG_UNDERRUN 0x800A
#define ASYNC_SCAM_INT 0x800B
#define ASYNC_HUNG_SCSI 0x800C
@@ -168,7 +167,7 @@ typedef struct {
#define ASYNC_LOOP_UP 0x8011
#define ASYNC_LOOP_DOWN 0x8012
#define ASYNC_LOOP_RESET 0x8013
-#define ASYNC_PDB_CHANGED 0x8014
+#define ASYNC_PDB_CHANGED 0x8014 /* Port Database Changed */
#define ASYNC_CHANGE_NOTIFY 0x8015
/*
@@ -242,7 +241,7 @@ typedef struct {
u_int16_t req_cdblen;
#define req_modifier req_cdblen /* marker packet */
u_int16_t req_flags;
- u_int16_t req_reserved;
+ u_int16_t _res1;
u_int16_t req_time;
u_int16_t req_seg_count;
u_int8_t req_cdb[12];
@@ -260,7 +259,7 @@ typedef struct {
u_int8_t req_lun_trn;
u_int8_t req_target;
#endif
- u_int16_t req_scclun;
+ u_int16_t _res1;
u_int16_t req_flags;
u_int16_t _res2;
u_int16_t req_time;
@@ -425,7 +424,169 @@ typedef struct {
#define RQSTF_NEGOTIATION 0x0080
/*
- * FC (ISP2100) specific initialization data structures
+ * Target Mode Structures
+ */
+/*
+ * Used for Enable LUN and Modify Lun types.
+ * (for FC, pre-1.14 FW layout revision).
+ */
+typedef struct {
+ isphdr_t req_header;
+ u_int32_t req_handle;
+#if BYTE_ORDER == BIG_ENDIAN
+ u_int8_t _reserved0;
+ u_int8_t req_lun; /* HOST->FW: LUN to enable */
+#else
+ u_int8_t req_lun; /* HOST->FW: LUN to enable */
+ u_int8_t _reserved0;
+#endif
+ u_int16_t _reserved1[3];
+#if BYTE_ORDER == BIG_ENDIAN
+ u_int8_t _reserved2;
+ u_int8_t req_status; /* FW->HOST: Status of Request */
+ u_int8_t req_imcount; /* HOST->FW: Immediate Notify Count */
+ u_int8_t req_cmdcount; /* HOST->FW: ATIO Count */
+#else
+ u_int8_t req_status; /* FW->HOST: Status of Request */
+ u_int8_t _reserved2;
+ u_int8_t req_cmdcount; /* HOST->FW: ATIO Count */
+ u_int8_t req_imcount; /* HOST->FW: Immediate Notify Count */
+#endif
+ u_int16_t _reserved3;
+ u_int16_t req_timeout; /* HOST->FW: Lun timeout value */
+} isplun_t;
+/* inbound status */
+#define LUN_OKAY 0x01
+#define LUN_ERR 0x04
+#define LUN_NOCAP 0x16
+#define LUN_ENABLED 0x3e
+/* outbound flags */
+#define LUN_INCR_CMD 0x0001
+#define LUN_DECR_CMD 0x0002
+#define LUN_INCR_IMMED 0x0100
+#define LUN_DECR_IMMED 0x0200
+
+typedef struct {
+ isphdr_t req_header;
+ u_int32_t req_handle;
+#if BYTE_ORDER == BIG_ENDIAN
+ u_int8_t req_initiator;
+ u_int8_t req_lun;
+#else
+ u_int8_t req_lun;
+ u_int8_t req_initiator;
+#endif
+ u_int16_t req_flags; /* NOTIFY_ACK only */
+ u_int16_t _reserved1[2];
+ u_int16_t req_status;
+ u_int16_t req_task_flags;
+ u_int16_t req_sequence;
+} ispnotify_t;
+
+#define IN_NOCAP 0x16
+#define IN_IDE_RECEIVED 0x33
+#define IN_RSRC_UNAVAIL 0x34
+#define IN_MSG_RECEIVED 0x36
+
+typedef struct {
+ isphdr_t req_header;
+ u_int32_t req_handle;
+#if BYTE_ORDER == BIG_ENDIAN
+ u_int8_t req_initiator;
+ u_int8_t req_lun;
+#else
+ u_int8_t req_lun;
+ u_int8_t req_initiator;
+#endif
+ u_int16_t req_rxid;
+ u_int16_t req_flags;
+ u_int16_t req_status;
+#if BYTE_ORDER == BIG_ENDIAN
+ u_int8_t req_taskcodes;
+ u_int8_t _reserved0;
+ u_int8_t req_execodes;
+ u_int8_t req_taskflags;
+#else
+ u_int8_t _reserved0;
+ u_int8_t req_taskcodes;
+ u_int8_t req_taskflags;
+ u_int8_t req_execodes;
+#endif
+ u_int8_t req_cdb[16];
+ u_int32_t req_datalen;
+ u_int16_t req_scclun;
+ u_int16_t _reserved1;;
+ u_int16_t req_scsi_status;
+ u_int8_t req_sense[18];
+} ispatiot2_t;
+
+#define ATIO_PATH_INVALID 0x07
+#define ATIO_PHASE_ERROR 0x14
+#define ATIO_NOCAP 0x16
+#define ATIO_BDR_MSG 0x17
+#define ATIO_CDB_RECEIVED 0x3d
+
+#define ATIO_SENSEVALID 0x80
+
+/*
+ * Continue Target I/O, type 2
+ */
+typedef struct {
+ isphdr_t req_header;
+ u_int32_t req_handle;
+#if BYTE_ORDER == BIG_ENDIAN
+ u_int8_t req_initiator;
+ u_int8_t req_lun;
+#else
+ u_int8_t req_lun;
+ u_int8_t req_initiator;
+#endif
+ u_int16_t req_rxid;
+ u_int16_t req_flags;
+ u_int16_t req_status;
+ u_int16_t req_timeout;
+ u_int16_t req_seg_count; /* data segment count */
+ u_int8_t req_reloff[4]; /* relative offset */
+ u_int8_t req_resid[4]; /* residual */
+ u_int8_t _reserved0[4];
+ union { /* should be offset 0x20 */
+ struct {
+ u_int16_t _reserved0;
+ u_int16_t req_scsi_status;
+ u_int32_t req_datalen;
+ ispds_t req_dataseg[ISP_RQDSEG_T2];
+ } mode0;
+ struct {
+ u_int16_t req_sense_len;
+ u_int16_t req_scsi_status;
+ u_int32_t req_response_length;
+ u_int8_t req_response[26];
+ } mode1;
+ struct {
+ u_int16_t _reserved0[2];
+ u_int32_t req_datalen;
+ ispds_t req_fcpiudata;
+ } mode2;
+ } req_m;
+} ispctiot2_t;
+
+#define CTIO_SEND_STATUS 0x8000
+#define CTIO_SEND_DATA 0x0040 /* To initiator */
+#define CTIO_RECV_DATA 0x0080
+#define CTIO_NODATA 0x00C0
+
+#define CTIO2_SMODE0 0x0000
+#define CTIO2_SMODE1 0x0001
+#define CTIO2_SMODE2 0x0002
+
+#define CTIO2_RESP_VALID 0x0100
+#define CTIO2_STATUS_VALID 0x0200
+#define CTIO2_RSPOVERUN 0x0400
+#define CTIO2_RSPUNDERUN 0x0800
+
+
+/*
+ * FC (ISP2100) specific data structures
*/
/*
@@ -498,6 +659,16 @@ typedef struct {
#define RQRSP_ADDR4863 3
+#if BYTE_ORDER == BIG_ENDIAN
+#define ICB_NNM0 6
+#define ICB_NNM1 7
+#define ICB_NNM2 4
+#define ICB_NNM3 5
+#define ICB_NNM4 2
+#define ICB_NNM5 3
+#define ICB_NNM6 0
+#define ICB_NNM7 1
+#else
#define ICB_NNM0 7
#define ICB_NNM1 6
#define ICB_NNM2 5
@@ -506,6 +677,7 @@ typedef struct {
#define ICB_NNM5 2
#define ICB_NNM6 1
#define ICB_NNM7 0
+#endif
#define MAKE_NODE_NAME_FROM_WWN(array, wwn) \
array[ICB_NNM0] = (u_int8_t) ((wwn >> 0) & 0xff), \
@@ -517,425 +689,4 @@ typedef struct {
array[ICB_NNM6] = (u_int8_t) ((wwn >> 48) & 0xff), \
array[ICB_NNM7] = (u_int8_t) ((wwn >> 56) & 0xff)
-/*
- * Target Mode Structures
- */
-#define TGTSVALID 0x80 /* scsi status & sense data valid */
-#define SUGGSENSELEN 18
-
-/*
- * Structure for Enable Lun and Modify Lun queue entries
- */
-typedef struct {
- isphdr_t le_header;
- u_int32_t le_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t le_lun;
- u_int8_t le_rsvd;
- u_int8_t le_ops; /* Modify LUN only */
- u_int8_t le_tgt; /* Not for FC */
-#endif
- u_int32_t le_flags; /* Not for FC */
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t le_status;
- u_int8_t le_rsvd2;
- u_int8_t le_cmd_count;
- u_int8_t le_in_count;
- u_int8_t le_cdb6len; /* Not for FC */
- u_int8_t le_cdb7len; /* Not for FC */
-#endif
- u_int16_t le_timeout;
- u_int16_t le_reserved[20];
-} lun_entry_t;
-
-/*
- * le_flags values
- */
-#define LUN_TQAE 0x00000001 /* Tagged Queue Action Enable */
-#define LUN_DSSM 0x01000000 /* Disable Sending SDP Message */
-#define LUN_DM 0x40000000 /* Disconnects Mandatory */
-
-/*
- * le_ops values
- */
-#define LUN_CCINCR 0x01 /* increment command count */
-#define LUN_CCDECR 0x02 /* decrement command count */
-#define LUN_ININCR 0x40 /* increment immed. notify count */
-#define LUN_INDECR 0x80 /* decrement immed. notify count */
-
-/*
- * le_status values
- */
-#define LUN_ERR 0x04 /* request completed with error */
-#define LUN_INVAL 0x06 /* invalid request */
-#define LUN_NOCAP 0x16 /* can't provide requested capability */
-#define LUN_ENABLED 0x3E /* LUN already enabled */
-
-/*
- * Immediate Notify Entry structure
- */
-#define IN_MSGLEN 8 /* 8 bytes */
-#define IN_RSVDLEN 8 /* 8 words */
-typedef struct {
- isphdr_t in_header;
- u_int32_t in_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t in_lun; /* lun */
- u_int8_t in_iid; /* initiator */
- u_int8_t in_rsvd;
- u_int8_t in_tgt; /* target */
-#endif
- u_int32_t in_flags;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t in_status;
- u_int8_t in_rsvd2;
- u_int8_t in_tag_val; /* tag value */
- u_int8_t in_tag_type; /* tag type */
-#endif
- u_int16_t in_seqid; /* sequence id */
- u_int8_t in_msg[IN_MSGLEN]; /* SCSI message bytes */
- u_int16_t in_reserved[IN_RSVDLEN];
- u_int8_t in_sense[SUGGSENSELEN]; /* suggested sense data */
-} in_entry_t;
-
-typedef struct {
- isphdr_t in_header;
- u_int32_t in_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t in_lun; /* lun */
- u_int8_t in_iid; /* initiator */
-#endif
- u_int16_t in_rsvd;
- u_int32_t in_rsvd2;
- u_int16_t in_status;
- u_int16_t in_task_flags;
- u_int16_t in_seqid; /* sequence id */
-} in_fcentry_t;
-
-/*
- * Values for the in_status field
- */
-#define IN_NO_RCAP 0x16 /* requested capability not available */
-#define IN_IDE_RECEIVED 0x33 /* Initiator Detected Error msg received */
-#define IN_RSRC_UNAVAIL 0x34 /* resource unavailable */
-#define IN_MSG_RECEIVED 0x36 /* SCSI message received */
-#define IN_PORT_LOGOUT 0x29 /* port has logged out (FC) */
-#define IN_ABORT_TASK 0x20 /* task named in RX_ID is being aborted (FC) */
-
-/*
- * Notify Acknowledge Entry structure
- */
-#define NA_RSVDLEN 22
-typedef struct {
- isphdr_t na_header;
- u_int32_t na_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t na_lun; /* lun */
- u_int8_t na_iid; /* initiator */
- u_int8_t na_rsvd;
- u_int8_t na_tgt; /* target */
-#endif
- u_int32_t na_flags;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t na_status;
- u_int8_t na_event;
-#endif
- u_int16_t na_seqid; /* sequence id */
- u_int16_t na_reserved[NA_RSVDLEN];
-} na_entry_t;
-
-/*
- * Value for the na_event field
- */
-#define NA_RST_CLRD 0x80 /* Clear an async event notification */
-
-#define NA2_RSVDLEN 21
-typedef struct {
- isphdr_t na_header;
- u_int32_t na_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t na_lun; /* lun */
- u_int8_t na_iid; /* initiator */
-#endif
- u_int16_t na_rsvd;
- u_int16_t na_flags;
- u_int16_t na_rsvd2;
- u_int16_t na_status;
- u_int16_t na_task_flags;
- u_int16_t na_seqid; /* sequence id */
- u_int16_t na_reserved[NA2_RSVDLEN];
-} na_fcentry_t;
-#define NAFC_RST_CLRD 0x40
-
-/*
- * Value for the na_event field
- */
-#define NA_RST_CLRD 0x80 /* Clear an async event notification */
-/*
- * Accept Target I/O Entry structure
- */
-#define ATIO_CDBLEN 26
-
-typedef struct {
- isphdr_t at_header;
- u_int32_t at_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t at_lun; /* lun */
- u_int8_t at_iid; /* initiator */
- u_int8_t at_cdblen; /* cdb length */
- u_int8_t at_tgt; /* target */
-#endif
- u_int32_t at_flags;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t at_status; /* firmware status */
- u_int8_t at_scsi_status; /* scsi status */
- u_int8_t at_tag_val; /* tag value */
- u_int8_t at_tag_type; /* tag type */
-#endif
- u_int8_t at_cdb[ATIO_CDBLEN]; /* received CDB */
- u_int8_t at_sense[SUGGSENSELEN]; /* suggested sense data */
-} at_entry_t;
-
-/*
- * at_flags values
- */
-#define AT_NODISC 0x00008000 /* disconnect disabled */
-#define AT_TQAE 0x00000001 /* Tagged Queue Action enabled */
-
-/*
- * at_status values
- */
-#define AT_PATH_INVALID 0x07 /* ATIO sent to firmware for disabled lun */
-#define AT_PHASE_ERROR 0x14 /* Bus phase sequence error */
-#define AT_NOCAP 0x16 /* Requested capability not available */
-#define AT_BDR_MSG 0x17 /* Bus Device Reset msg received */
-#define AT_CDB 0x3D /* CDB received */
-
-/*
- * Accept Target I/O Entry structure, Type 2
- */
-#define ATIO2_CDBLEN 16
-
-typedef struct {
- isphdr_t at_header;
- u_int32_t at_reserved2;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t at_lun; /* lun */
- u_int8_t at_iid; /* initiator */
-#endif
- u_int16_t at_rxid; /* response ID */
- u_int16_t at_flags;
- u_int16_t at_status; /* firmware status */
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t at_reserved1;
- u_int8_t at_taskcodes;
- u_int8_t at_taskflags;
- u_int8_t at_execodes;
-#endif
- u_int8_t at_cdb[ATIO2_CDBLEN]; /* received CDB */
- u_int32_t at_datalen; /* allocated data len */
- u_int16_t at_scclun;
- u_int16_t at_reserved3;
- u_int16_t at_scsi_status;
- u_int8_t at_sense[SUGGSENSELEN]; /* suggested sense data */
-} at2_entry_t;
-
-#define ATIO2_TC_ATTR_MASK 0x7
-#define ATIO2_TC_ATTR_SIMPLEQ 0
-#define ATIO2_TC_ATTR_HEADOFQ 1
-#define ATIO2_TC_ATTR_ORDERED 2
-#define ATIO2_TC_ATTR_ACAQ 4
-#define ATIO2_TC_ATTR_UNTAGGED 5
-#define TC2TT(code) \
- (((code) == ATIO2_TC_ATTR_SIMPLEQ)? 0x20 : \
- (((code) == ATIO2_TC_ATTR_HEADOFQ)? 0x21 : \
- (((code) == ATIO2_TC_ATTR_ORDERED)? 0x22 : \
- (((code) == ATIO2_TC_ATTR_ACAQ)? 0x24 : 0))))
-
-
-/*
- * Continue Target I/O Entry structure
- * Request from driver. The response from the
- * ISP firmware is the same except that the last 18
- * bytes are overwritten by suggested sense data if
- * the 'autosense valid' bit is set in the status byte.
- */
-typedef struct {
- isphdr_t ct_header;
- u_int32_t ct_reserved;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t ct_lun; /* lun */
- u_int8_t ct_iid; /* initiator id */
- u_int8_t ct_rsvd;
- u_int8_t ct_tgt; /* our target id */
-#endif
- u_int32_t ct_flags;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t ct_status; /* isp status */
- u_int8_t ct_scsi_status; /* scsi status */
- u_int8_t ct_tag_val; /* tag value */
- u_int8_t ct_tag_type; /* tag type */
-#endif
- u_int32_t ct_xfrlen; /* transfer length */
- u_int32_t ct_resid; /* residual length */
- u_int16_t ct_timeout;
- u_int16_t ct_seg_count;
- ispds_t ct_dataseg[ISP_RQDSEG];
-} ct_entry_t;
-
-/*
- * ct_flags values
- */
-#define CT_TQAE 0x00000001 /* Tagged Queue Action enable */
-#define CT_DATA_IN 0x00000040 /* Data direction */
-#define CT_DATA_OUT 0x00000080 /* Data direction */
-#define CT_NO_DATA 0x000000C0 /* Data direction */
-#define CT_DATAMASK 0x000000C0 /* Data direction */
-#define CT_NODISC 0x00008000 /* Disconnects disabled */
-#define CT_DSDP 0x01000000 /* Disable Save Data Pointers */
-#define CT_SENDRDP 0x04000000 /* Send Restore Pointers msg */
-#define CT_SENDSTATUS 0x80000000 /* Send SCSI status byte */
-
-/*
- * ct_status values
- * - set by the firmware when it returns the CTIO
- */
-#define CT_OK 0x01 /* completed without error */
-#define CT_ABORTED 0x02 /* aborted by host */
-#define CT_ERR 0x04 /* see sense data for error */
-#define CT_INVAL 0x06 /* request for disabled lun */
-#define CT_NOPATH 0x07 /* invalid ITL nexus */
-#define CT_INVRXID 0x08 /* (FC only) Invalid RX_ID */
-#define CT_RSELTMO 0x0A /* reselection timeout after 2 tries */
-#define CT_TIMEOUT 0x0B /* timed out */
-#define CT_RESET 0x0E /* SCSI Bus Reset occurred */
-#define CT_PHASE_ERROR 0x14 /* Bus phase sequence error */
-#define CT_BDR_MSG 0x17 /* Bus Device Reset msg received */
-#define CT_TERMINATED 0x19 /* due to Terminate Transfer mbox cmd */
-#define CT_LOGOUT 0x29 /* port logout not acknowledged yet */
-#define CT_NOACK 0x35 /* Outstanding Immed. Notify. entry */
-
-/*
- * When the firmware returns a CTIO entry, it may overwrite the last
- * part of the structure with sense data. This starts at offset 0x2E
- * into the entry, which is in the middle of ct_dataseg[1]. Rather
- * than define a new struct for this, I'm just using the sense data
- * offset.
- */
-#define CTIO_SENSE_OFFSET 0x2E
-
-/*
- * Entry length in u_longs. All entries are the same size so
- * any one will do as the numerator.
- */
-#define UINT32_ENTRY_SIZE (sizeof(at_entry_t)/sizeof(u_int32_t))
-
-/*
- * QLA2100 CTIO (type 2) entry
- */
-#define MAXRESPLEN 26
-typedef struct {
- isphdr_t ct_header;
- u_int32_t ct_reserved;
-#if BYTE_ORDER == BIG_ENDIAN
-#else
- u_int8_t ct_lun; /* lun */
- u_int8_t ct_iid; /* initiator id */
-#endif
- u_int16_t ct_rxid; /* response ID */
- u_int16_t ct_flags;
- u_int16_t ct_status; /* isp status */
- u_int16_t ct_timeout;
- u_int16_t ct_seg_count;
- u_int32_t ct_reloff; /* relative offset */
- u_int32_t ct_resid; /* residual length */
- union {
- /*
- * The three different modes that the target driver
- * can set the CTIO2 up as.
- *
- * The first is for sending FCP_DATA_IUs as well as
- * (optionally) sending a terminal SCSI status FCP_RSP_IU.
- *
- * The second is for sending SCSI sense data in an FCP_RSP_IU.
- * Note that no FCP_DATA_IUs will be sent.
- *
- * The third is for sending FCP_RSP_IUs as built specifically
- * in system memory as located by the isp_dataseg.
- */
- struct {
- u_int32_t _reserved;
- u_int16_t _reserved2;
- u_int16_t ct_scsi_status;
- u_int32_t ct_xfrlen;
- ispds_t ct_dataseg[ISP_RQDSEG_T2];
- } m0;
- struct {
- u_int16_t _reserved;
- u_int16_t _reserved2;
- u_int16_t ct_senselen;
- u_int16_t ct_scsi_status;
- u_int16_t ct_resplen;
- u_int8_t ct_resp[MAXRESPLEN];
- } m1;
- struct {
- u_int32_t _reserved;
- u_int16_t _reserved2;
- u_int16_t _reserved3;
- u_int32_t ct_datalen;
- ispds_t ct_fcp_rsp_iudata;
- } m2;
- /*
- * CTIO2 returned from F/W...
- */
- struct {
- u_int32_t _reserved[4];
- u_int16_t ct_scsi_status;
- u_int8_t ct_sense[SUGGSENSELEN];
- } fw;
- } rsp;
-} ct2_entry_t;
-/*
- * ct_flags values for CTIO2
- */
-#define CT2_FLAG_MMASK 0x0003
-#define CT2_FLAG_MODE0 0x0000
-#define CT2_FLAG_MODE1 0x0001
-#define CT2_FLAG_MODE2 0x0002
-#define CT2_DATA_IN CT_DATA_IN
-#define CT2_DATA_OUT CT_DATA_OUT
-#define CT2_NO_DATA CT_NO_DATA
-#define CT2_DATAMASK CT_DATA_MASK
-#define CT2_CCINCR 0x0100
-#define CT2_FASTPOST 0x0200
-#define CT2_SENDSTATUS 0x8000
-
-/*
- * ct_status values are (mostly) the same as that for ct_entry.
- */
-
-/*
- * ct_scsi_status values- the low 8 bits are the normal SCSI status
- * we know and love. The upper 8 bits are validity markers for FCP_RSP_IU
- * fields.
- */
-#define CT2_RSPLEN_VALID 0x0100
-#define CT2_SNSLEN_VALID 0x0200
-#define CT2_DATA_OVER 0x0400
-#define CT2_DATA_UNDER 0x0800
-
#endif /* _ISPMBOX_H */
diff --git a/sys/dev/isp/ispreg.h b/sys/dev/isp/ispreg.h
index 122a2976db1b6..a953bc1896542 100644
--- a/sys/dev/isp/ispreg.h
+++ b/sys/dev/isp/ispreg.h
@@ -1,5 +1,4 @@
-/* $Id: $ */
-/* release_12_28_98_A */
+/* $Id: ispreg.h,v 1.6 1998/09/08 01:09:46 mjacob Exp $ */
/*
* Machine Independent (well, as best as possible) register
* definitions for Qlogic ISP SCSI adapters.
@@ -671,7 +670,7 @@
(((u_int64_t)(c)[23]) << 16) | \
(((u_int64_t)(c)[24]) << 8) | \
(((u_int64_t)(c)[25]) << 0))
-#define ISP2100_NVRAM_HARDLOOPID(c) (c)[26]
+#define ISP2100_NVRAM_HARDLOOPID(c) (c)[24]
#define ISP2100_NVRAM_HBA_DISABLE(c) ISPBSMX(c, 70, 0, 0x01)
#define ISP2100_NVRAM_BIOS_DISABLE(c) ISPBSMX(c, 70, 1, 0x01)
diff --git a/sys/dev/isp/ispvar.h b/sys/dev/isp/ispvar.h
index 222f77e9e9051..d1aeade78e4c9 100644
--- a/sys/dev/isp/ispvar.h
+++ b/sys/dev/isp/ispvar.h
@@ -1,5 +1,4 @@
-/* $Id: ispvar.h,v 1.7 1998/12/28 19:22:27 mjacob Exp $ */
-/* release_12_28_98_A+ */
+/* $FreeBSD$ */
/*
* Soft Definitions for for Qlogic ISP SCSI adapters.
*
@@ -44,11 +43,11 @@
#include <dev/isp/ispmbox.h>
#endif
#ifdef __linux__
-#include "ispmbox.h"
+#include <ispmbox.h>
#endif
#define ISP_CORE_VERSION_MAJOR 1
-#define ISP_CORE_VERSION_MINOR 5
+#define ISP_CORE_VERSION_MINOR 3
/*
* Vector for MD code to provide specific services.
@@ -78,7 +77,6 @@ struct ispmdvec {
#define MAX_TARGETS 16
#define MAX_FC_TARG 126
-#define DEFAULT_LOOPID 113
/* queue length must be a power of two */
#define QENTRY_LEN 64
@@ -99,7 +97,7 @@ typedef struct {
isp_data_line_active_neg: 1,
isp_cmd_dma_burst_enable: 1,
isp_data_dma_burst_enabl: 1,
- isp_fifo_threshold : 3,
+ isp_fifo_threshold : 2,
isp_diffmode : 1,
isp_fast_mttr : 1,
isp_initiator_id : 4,
@@ -177,42 +175,6 @@ typedef struct {
#define FW_REINIT 0x0006
#define FW_NON_PART 0x0007
-#ifdef ISP_TARGET_MODE
-/*
- * Some temporary Target Mode definitions
- */
-typedef struct tmd_cmd {
- u_int8_t cd_iid; /* initiator */
- u_int8_t cd_tgt; /* target */
- u_int8_t cd_lun; /* LUN for this command */
- u_int8_t cd_state;
- u_int8_t cd_cdb[16]; /* command bytes */
- u_int8_t cd_sensedata[20];
- u_int16_t cd_rxid;
- u_int32_t cd_datalen;
- u_int32_t cd_totbytes;
- void * cd_hba;
-} tmd_cmd_t;
-
-/*
- * Async Target Mode Event Definitions
- */
-#define TMD_BUS_RESET 0
-#define TMD_BDR 1
-
-/*
- * Immediate Notify data structure.
- */
-#define NOTIFY_MSGLEN 5
-typedef struct {
- u_int8_t nt_iid; /* initiator */
- u_int8_t nt_tgt; /* target */
- u_int8_t nt_lun; /* LUN for this command */
- u_int8_t nt_msg[NOTIFY_MSGLEN]; /* SCSI message byte(s) */
-} tmd_notify_t;
-
-#endif
-
/*
* Soft Structure per host adapter
*/
@@ -228,7 +190,7 @@ struct ispsoftc {
struct ispmdvec * isp_mdvec;
/*
- * Mostly nonvolatile state, debugging, etc..
+ * State, debugging, etc..
*/
u_int : 8,
@@ -281,28 +243,6 @@ struct ispsoftc {
volatile caddr_t isp_result;
u_int32_t isp_rquest_dma;
u_int32_t isp_result_dma;
-
-#ifdef ISP_TARGET_MODE
- /*
- * Vectors for handling target mode support.
- *
- * isp_tmd_newcmd is for feeding a newly arrived command to some
- * upper layer.
- *
- * isp_tmd_event is for notifying some upper layer that an event has
- * occurred that is not necessarily tied to any target (e.g., a SCSI
- * Bus Reset).
- *
- * isp_tmd_notify is for notifying some upper layer that some
- * event is now occurring that is either pertinent for a specific
- * device or for a specific command (e.g., BDR or ABORT TAG).
- *
- * It is left undefined (for now) how pools of commands are managed.
- */
- void (*isp_tmd_newcmd) __P((void *, tmd_cmd_t *));
- void (*isp_tmd_event) __P((void *, int));
- void (*isp_tmd_notify) __P((void *, tmd_notify_t *));
-#endif
};
/*
@@ -388,6 +328,11 @@ void isp_reset __P((struct ispsoftc *));
void isp_init __P((struct ispsoftc *));
/*
+ * Free any associated resources prior to decommissioning.
+ */
+void isp_uninit __P((struct ispsoftc *));
+
+/*
* Reset the ISP and call completion for any orphaned commands.
*/
void isp_restart __P((struct ispsoftc *));
@@ -398,6 +343,11 @@ void isp_restart __P((struct ispsoftc *));
int isp_intr __P((void *));
/*
+ * Watchdog Routine
+ */
+void isp_watch __P((void *));
+
+/*
* Command Entry Point
*/
int32_t ispscsicmd __P((ISP_SCSI_XFER_T *));
diff --git a/sys/dev/kbd/atkbd.c b/sys/dev/kbd/atkbd.c
deleted file mode 100644
index 653e2955ffee4..0000000000000
--- a/sys/dev/kbd/atkbd.c
+++ /dev/null
@@ -1,1313 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: atkbd.c,v 1.2 1999/01/13 11:19:19 yokota Exp $
- */
-
-#include "atkbd.h"
-#include "opt_kbd.h"
-#include "opt_devfs.h"
-
-#if NATKBD > 0
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/conf.h>
-#include <sys/proc.h>
-#include <sys/tty.h>
-#include <sys/fcntl.h>
-#include <sys/malloc.h>
-
-#include <dev/kbd/kbdreg.h>
-#include <dev/kbd/atkbdreg.h>
-#include <dev/kbd/atkbdcreg.h>
-
-#ifndef __i386__
-
-#include <isa/isareg.h>
-
-#define ATKBD_SOFTC(unit) \
- ((atkbd_softc_t *)devclass_get_softc(atkbd_devclass, unit))
-
-#else /* __i386__ */
-
-#include <i386/isa/isa.h>
-#include <i386/isa/isa_device.h>
-
-extern struct isa_driver atkbddriver; /* XXX: a kludge; see below */
-
-static atkbd_softc_t *atkbd_softc[NATKBD];
-
-#define ATKBD_SOFTC(unit) atkbd_softc[(unit)]
-
-#endif /* __i386__ */
-
-static timeout_t atkbd_timeout;
-
-#ifdef KBD_INSTALL_CDEV
-
-static d_open_t atkbdopen;
-static d_close_t atkbdclose;
-static d_read_t atkbdread;
-static d_ioctl_t atkbdioctl;
-static d_poll_t atkbdpoll;
-
-static struct cdevsw atkbd_cdevsw = {
- atkbdopen, atkbdclose, atkbdread, nowrite,
- atkbdioctl, nostop, nullreset, nodevtotty,
- atkbdpoll, nommap, NULL, ATKBD_DRIVER_NAME,
- NULL, -1,
-};
-
-#endif /* KBD_INSTALL_CDEV */
-
-#ifdef __i386__
-
-atkbd_softc_t
-*atkbd_get_softc(int unit)
-{
- atkbd_softc_t *sc;
-
- if (unit >= sizeof(atkbd_softc)/sizeof(atkbd_softc[0]))
- return NULL;
- sc = atkbd_softc[unit];
- if (sc == NULL) {
- sc = atkbd_softc[unit]
- = malloc(sizeof(*sc), M_DEVBUF, M_NOWAIT);
- if (sc == NULL)
- return NULL;
- bzero(sc, sizeof(*sc));
- }
- return sc;
-}
-
-#endif /* __i386__ */
-
-int
-atkbd_probe_unit(int unit, atkbd_softc_t *sc, int port, int irq, int flags)
-{
- keyboard_switch_t *sw;
- int args[2];
-
- if (sc->flags & ATKBD_ATTACHED)
- return 0;
-
- sw = kbd_get_switch(ATKBD_DRIVER_NAME);
- if (sw == NULL)
- return ENXIO;
-
- args[0] = port;
- args[1] = irq;
- return (*sw->probe)(unit, &sc->kbd, args, flags);
-}
-
-int
-atkbd_attach_unit(int unit, atkbd_softc_t *sc)
-{
- keyboard_switch_t *sw;
- int error;
-
- if (sc->flags & ATKBD_ATTACHED)
- return 0;
-
- sw = kbd_get_switch(ATKBD_DRIVER_NAME);
- if (sw == NULL)
- return ENXIO;
-
- /* reset, initialize and enable the device */
- error = (*sw->init)(sc->kbd);
- if (error)
- return ENXIO;
- (*sw->enable)(sc->kbd);
-
-#ifdef KBD_INSTALL_CDEV
- /* attach a virtual keyboard cdev */
- error = kbd_attach(makedev(0, ATKBD_MKMINOR(unit)), sc->kbd,
- &atkbd_cdevsw);
- if (error)
- return error;
-#endif
-
- /*
- * This is a kludge to compensate for lost keyboard interrupts.
- * A similar code used to be in syscons. See below. XXX
- */
- atkbd_timeout(sc->kbd);
-
- if (bootverbose)
- (*sw->diag)(sc->kbd, bootverbose);
-
- sc->flags |= ATKBD_ATTACHED;
- return 0;
-}
-
-static void
-atkbd_timeout(void *arg)
-{
- keyboard_t *kbd;
- int s;
-
- /* The following comments are extracted from syscons.c (1.287) */
- /*
- * With release 2.1 of the Xaccel server, the keyboard is left
- * hanging pretty often. Apparently an interrupt from the
- * keyboard is lost, and I don't know why (yet).
- * This ugly hack calls scintr if input is ready for the keyboard
- * and conveniently hides the problem. XXX
- */
- /*
- * Try removing anything stuck in the keyboard controller; whether
- * it's a keyboard scan code or mouse data. `scintr()' doesn't
- * read the mouse data directly, but `kbdio' routines will, as a
- * side effect.
- */
- s = spltty();
- kbd = (keyboard_t *)arg;
- if ((*kbdsw[kbd->kb_index]->lock)(kbd, TRUE)) {
- /*
- * We have seen the lock flag is not set. Let's reset
- * the flag early, otherwise the LED update routine fails
- * which may want the lock during the interrupt routine.
- */
- (*kbdsw[kbd->kb_index]->lock)(kbd, FALSE);
- if ((*kbdsw[kbd->kb_index]->check_char)(kbd))
- (*kbdsw[kbd->kb_index]->intr)(kbd);
- }
- splx(s);
- timeout(atkbd_timeout, arg, hz/10);
-}
-
-/* cdev driver functions */
-
-#ifdef KBD_INSTALL_CDEV
-
-static int
-atkbdopen(dev_t dev, int flag, int mode, struct proc *p)
-{
- atkbd_softc_t *sc;
- int unit;
-
- unit = ATKBD_UNIT(dev);
- if ((unit >= NATKBD) || ((sc = ATKBD_SOFTC(unit)) == NULL))
- return ENXIO;
- if (mode & (FWRITE | O_CREAT | O_APPEND | O_TRUNC))
- return ENODEV;
-
- /* FIXME: set the initial input mode (K_XLATE?) and lock state? */
- return genkbdopen(&sc->gensc, sc->kbd, flag, mode, p);
-}
-
-static int
-atkbdclose(dev_t dev, int flag, int mode, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdclose(&sc->gensc, sc->kbd, flag, mode, p);
-}
-
-static int
-atkbdread(dev_t dev, struct uio *uio, int flag)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdread(&sc->gensc, sc->kbd, uio, flag);
-}
-
-static int
-atkbdioctl(dev_t dev, u_long cmd, caddr_t arg, int flag, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdioctl(&sc->gensc, sc->kbd, cmd, arg, flag, p);
-}
-
-static int
-atkbdpoll(dev_t dev, int event, struct proc *p)
-{
- atkbd_softc_t *sc;
-
- sc = ATKBD_SOFTC(ATKBD_UNIT(dev));
- return genkbdpoll(&sc->gensc, sc->kbd, event, p);
-}
-
-#endif /* KBD_INSTALL_CDEV */
-
-/* LOW-LEVEL */
-
-#include <machine/limits.h>
-#include <machine/console.h>
-#include <machine/clock.h>
-
-#define ATKBD_DEFAULT 0
-
-typedef struct atkbd_state {
- KBDC kbdc; /* keyboard controller */
- /* XXX: don't move this field; pcvt
- * expects `kbdc' to be the first
- * field in this structure. */
- int ks_mode; /* input mode (K_XLATE,K_RAW,K_CODE) */
- int ks_flags; /* flags */
-#define COMPOSE (1 << 0)
- int ks_state; /* shift/lock key state */
- int ks_accents; /* accent key index (> 0) */
- u_int ks_composed_char; /* composed char code (> 0) */
- u_char ks_prefix; /* AT scan code prefix */
-} atkbd_state_t;
-
-/* keyboard driver declaration */
-static int atkbd_configure(int flags);
-static kbd_probe_t atkbd_probe;
-static kbd_init_t atkbd_init;
-static kbd_term_t atkbd_term;
-static kbd_intr_t atkbd_intr;
-static kbd_test_if_t atkbd_test_if;
-static kbd_enable_t atkbd_enable;
-static kbd_disable_t atkbd_disable;
-static kbd_read_t atkbd_read;
-static kbd_check_t atkbd_check;
-static kbd_read_char_t atkbd_read_char;
-static kbd_check_char_t atkbd_check_char;
-static kbd_ioctl_t atkbd_ioctl;
-static kbd_lock_t atkbd_lock;
-static kbd_clear_state_t atkbd_clear_state;
-static kbd_get_state_t atkbd_get_state;
-static kbd_set_state_t atkbd_set_state;
-
-keyboard_switch_t atkbdsw = {
- atkbd_probe,
- atkbd_init,
- atkbd_term,
- atkbd_intr,
- atkbd_test_if,
- atkbd_enable,
- atkbd_disable,
- atkbd_read,
- atkbd_check,
- atkbd_read_char,
- atkbd_check_char,
- atkbd_ioctl,
- atkbd_lock,
- atkbd_clear_state,
- atkbd_get_state,
- atkbd_set_state,
- genkbd_get_fkeystr,
- genkbd_diag,
-};
-
-KEYBOARD_DRIVER(atkbd, atkbdsw, atkbd_configure);
-
-/* local functions */
-static int setup_kbd_port(KBDC kbdc, int port, int intr);
-static int get_kbd_echo(KBDC kbdc);
-static int probe_keyboard(KBDC kbdc, int flags);
-static int init_keyboard(KBDC kbdc, int *type, int flags);
-static int write_kbd(KBDC kbdc, int command, int data);
-static int get_kbd_id(KBDC kbdc);
-
-/* local variables */
-
-/* the initial key map, accent map and fkey strings */
-#include <dev/kbd/kbdtables.h>
-
-/* structures for the default keyboard */
-static keyboard_t default_kbd;
-static atkbd_state_t default_kbd_state;
-static keymap_t default_keymap;
-static accentmap_t default_accentmap;
-static fkeytab_t default_fkeytab[NUM_FKEYS];
-
-/*
- * The back door to the keyboard driver!
- * This function is called by the console driver, via the kbdio module,
- * to tickle keyboard drivers when the low-level console is being initialized.
- * Almost nothing in the kernel has been initialied yet. Try to probe
- * keyboards if possible.
- * NOTE: because of the way the low-level conole is initialized, this routine
- * may be called more than once!!
- */
-static int
-atkbd_configure(int flags)
-{
- keyboard_t *kbd;
- KBDC kbdc;
- int arg[2];
-#ifdef __i386__
- struct isa_device *dev;
-
- /* XXX: a kludge to obtain the device configuration flags */
- dev = find_isadev(isa_devtab_tty, &atkbddriver, 0);
- if (dev != NULL)
- flags |= dev->id_flags;
-#endif
-
- /* probe the keyboard controller */
- atkbdc_configure();
-
- /* probe the default keyboard */
- arg[0] = -1;
- arg[1] = -1;
- if (atkbd_probe(ATKBD_DEFAULT, &kbd, arg, flags))
- return 0;
-
- /* initialize it */
- kbdc = ((atkbd_state_t *)kbd->kb_data)->kbdc;
- if (!(flags & KB_CONF_PROBE_ONLY) && !KBD_IS_INITIALIZED(kbd)) {
- if (KBD_HAS_DEVICE(kbd)
- && init_keyboard(kbdc, &kbd->kb_type, flags)
- && (flags & KB_CONF_FAIL_IF_NO_KBD))
- return 0;
- KBD_INIT_DONE(kbd);
- }
-
- /* and register */
- if (!KBD_IS_CONFIGURED(kbd)) {
- if (kbd_register(kbd) < 0)
- return 0;
- KBD_CONFIG_DONE(kbd);
- }
-
- return 1; /* return the number of found keyboards */
-}
-
-/* low-level functions */
-
-/* initialize the keyboard_t structure and try to detect a keyboard */
-static int
-atkbd_probe(int unit, keyboard_t **kbdp, void *arg, int flags)
-{
- keyboard_t *kbd;
- atkbd_state_t *state;
- keymap_t *keymap;
- accentmap_t *accmap;
- fkeytab_t *fkeymap;
- int fkeymap_size;
- KBDC kbdc;
- int *data = (int *)arg;
-
- /* XXX */
- if (unit == ATKBD_DEFAULT) {
- *kbdp = kbd = &default_kbd;
- if (KBD_IS_PROBED(kbd))
- return 0;
- state = &default_kbd_state;
- keymap = &default_keymap;
- accmap = &default_accentmap;
- fkeymap = default_fkeytab;
- fkeymap_size =
- sizeof(default_fkeytab)/sizeof(default_fkeytab[0]);
- } else if (*kbdp == NULL) {
- *kbdp = kbd = malloc(sizeof(*kbd), M_DEVBUF, M_NOWAIT);
- if (kbd == NULL)
- return ENOMEM;
- bzero(kbd, sizeof(*kbd));
- state = malloc(sizeof(*state), M_DEVBUF, M_NOWAIT);
- keymap = malloc(sizeof(key_map), M_DEVBUF, M_NOWAIT);
- accmap = malloc(sizeof(accent_map), M_DEVBUF, M_NOWAIT);
- fkeymap = malloc(sizeof(fkey_tab), M_DEVBUF, M_NOWAIT);
- fkeymap_size = sizeof(fkey_tab)/sizeof(fkey_tab[0]);
- if ((state == NULL) || (keymap == NULL) || (accmap == NULL)
- || (fkeymap == NULL)) {
- if (state != NULL)
- free(state, M_DEVBUF);
- if (keymap != NULL)
- free(keymap, M_DEVBUF);
- if (accmap != NULL)
- free(accmap, M_DEVBUF);
- if (fkeymap != NULL)
- free(fkeymap, M_DEVBUF);
- free(kbd, M_DEVBUF);
- return ENOMEM;
- }
- bzero(state, sizeof(*state));
- } else if (KBD_IS_PROBED(*kbdp)) {
- return 0;
- } else {
- kbd = *kbdp;
- state = (atkbd_state_t *)kbd->kb_data;
- bzero(state, sizeof(*state));
- keymap = kbd->kb_keymap;
- accmap = kbd->kb_accentmap;
- fkeymap = kbd->kb_fkeytab;
- fkeymap_size = kbd->kb_fkeytab_size;
- }
-
- state->kbdc = kbdc = kbdc_open(data[0]);
- if (kbdc == NULL)
- return ENXIO;
- kbd_init_struct(kbd, ATKBD_DRIVER_NAME, KB_OTHER, unit, flags, data[0],
- IO_KBDSIZE);
- bcopy(&key_map, keymap, sizeof(key_map));
- bcopy(&accent_map, accmap, sizeof(accent_map));
- bcopy(fkey_tab, fkeymap,
- imin(fkeymap_size*sizeof(fkeymap[0]), sizeof(fkey_tab)));
- kbd_set_maps(kbd, keymap, accmap, fkeymap, fkeymap_size);
- kbd->kb_data = (void *)state;
-
- if (probe_keyboard(kbdc, flags)) {
- if (flags & KB_CONF_FAIL_IF_NO_KBD)
- return ENXIO;
- } else {
- KBD_FOUND_DEVICE(kbd);
- }
- atkbd_clear_state(kbd);
- state->ks_mode = K_XLATE;
- /*
- * FIXME: set the initial value for lock keys in ks_state
- * according to the BIOS data?
- */
-
- KBD_PROBE_DONE(kbd);
- return 0;
-}
-
-/* reset and initialize the device */
-static int
-atkbd_init(keyboard_t *kbd)
-{
- KBDC kbdc;
-
- if ((kbd == NULL) || !KBD_IS_PROBED(kbd))
- return ENXIO; /* shouldn't happen */
- kbdc = ((atkbd_state_t *)kbd->kb_data)->kbdc;
- if (kbdc == NULL)
- return ENXIO; /* shouldn't happen */
-
- if (!KBD_IS_INITIALIZED(kbd)) {
- if (KBD_HAS_DEVICE(kbd)
- && init_keyboard(kbdc, &kbd->kb_type, kbd->kb_config)
- && (kbd->kb_config & KB_CONF_FAIL_IF_NO_KBD))
- return ENXIO;
- atkbd_ioctl(kbd, KDSETLED,
- (caddr_t)&((atkbd_state_t *)(kbd->kb_data))->ks_state);
- KBD_INIT_DONE(kbd);
- }
- if (!KBD_IS_CONFIGURED(kbd)) {
- if (kbd_register(kbd) < 0)
- return ENXIO;
- KBD_CONFIG_DONE(kbd);
- }
-
- return 0;
-}
-
-/* finish using this keyboard */
-static int
-atkbd_term(keyboard_t *kbd)
-{
- kbd_unregister(kbd);
- return 0;
-}
-
-/* keyboard interrupt routine */
-static int
-atkbd_intr(keyboard_t *kbd)
-{
- atkbd_state_t *state;
- int c;
-
- if (KBD_IS_ACTIVE(kbd) && KBD_IS_BUSY(kbd)) {
- /* let the callback function to process the input */
- (*kbd->kb_callback.kc_func)(kbd, KBDIO_KEYINPUT,
- kbd->kb_callback.kc_arg);
- } else {
- /* read and discard the input; no one is waiting for input */
- do {
- c = atkbd_read_char(kbd, FALSE);
- } while (c != NOKEY);
-
- if (!KBD_HAS_DEVICE(kbd)) {
- /*
- * The keyboard was not detected before;
- * it must have been reconnected!
- */
- state = (atkbd_state_t *)kbd->kb_data;
- init_keyboard(state->kbdc, &kbd->kb_type,
- kbd->kb_config);
- atkbd_ioctl(kbd, KDSETLED, (caddr_t)&state->ks_state);
- KBD_FOUND_DEVICE(kbd);
- }
- }
- return 0;
-}
-
-/* test the interface to the device */
-static int
-atkbd_test_if(keyboard_t *kbd)
-{
- int error;
- int s;
-
- error = 0;
- empty_both_buffers(((atkbd_state_t *)kbd->kb_data)->kbdc, 10);
- s = spltty();
- if (!test_controller(((atkbd_state_t *)kbd->kb_data)->kbdc))
- error = EIO;
- else if (test_kbd_port(((atkbd_state_t *)kbd->kb_data)->kbdc) != 0)
- error = EIO;
- splx(s);
-
- return error;
-}
-
-/*
- * Enable the access to the device; until this function is called,
- * the client cannot read from the keyboard.
- */
-static int
-atkbd_enable(keyboard_t *kbd)
-{
- int s;
-
- s = spltty();
- KBD_ACTIVATE(kbd);
- splx(s);
- return 0;
-}
-
-/* disallow the access to the device */
-static int
-atkbd_disable(keyboard_t *kbd)
-{
- int s;
-
- s = spltty();
- KBD_DEACTIVATE(kbd);
- splx(s);
- return 0;
-}
-
-/* read one byte from the keyboard if it's allowed */
-static int
-atkbd_read(keyboard_t *kbd, int wait)
-{
- int c;
-
- if (wait)
- c = read_kbd_data(((atkbd_state_t *)kbd->kb_data)->kbdc);
- else
- c = read_kbd_data_no_wait(((atkbd_state_t *)kbd->kb_data)->kbdc);
- return (KBD_IS_ACTIVE(kbd) ? c : -1);
-}
-
-/* check if data is waiting */
-static int
-atkbd_check(keyboard_t *kbd)
-{
- if (!KBD_IS_ACTIVE(kbd))
- return FALSE;
- return kbdc_data_ready(((atkbd_state_t *)kbd->kb_data)->kbdc);
-}
-
-/* read char from the keyboard */
-static u_int
-atkbd_read_char(keyboard_t *kbd, int wait)
-{
- atkbd_state_t *state;
- u_int action;
- int scancode;
- int keycode;
-
- state = (atkbd_state_t *)kbd->kb_data;
-next_code:
- /* do we have a composed char to return? */
- if (!(state->ks_flags & COMPOSE) && (state->ks_composed_char > 0)) {
- action = state->ks_composed_char;
- state->ks_composed_char = 0;
- if (action > UCHAR_MAX)
- return ERRKEY;
- return action;
- }
-
- /* see if there is something in the keyboard port */
- if (wait) {
- do {
- scancode = read_kbd_data(state->kbdc);
- } while (scancode == -1);
- } else {
- scancode = read_kbd_data_no_wait(state->kbdc);
- if (scancode == -1)
- return NOKEY;
- }
-
- /* return the byte as is for the K_RAW mode */
- if (state->ks_mode == K_RAW)
- return scancode;
-
- /* translate the scan code into a keycode */
- keycode = scancode & 0x7F;
- switch (state->ks_prefix) {
- case 0x00: /* normal scancode */
- switch(scancode) {
- case 0xB8: /* left alt (compose key) released */
- if (state->ks_flags & COMPOSE) {
- state->ks_flags &= ~COMPOSE;
- if (state->ks_composed_char > UCHAR_MAX)
- state->ks_composed_char = 0;
- }
- break;
- case 0x38: /* left alt (compose key) pressed */
- if (!(state->ks_flags & COMPOSE)) {
- state->ks_flags |= COMPOSE;
- state->ks_composed_char = 0;
- }
- break;
- case 0xE0:
- case 0xE1:
- state->ks_prefix = scancode;
- goto next_code;
- }
- break;
- case 0xE0: /* 0xE0 prefix */
- state->ks_prefix = 0;
- switch (keycode) {
- case 0x1C: /* right enter key */
- keycode = 0x59;
- break;
- case 0x1D: /* right ctrl key */
- keycode = 0x5A;
- break;
- case 0x35: /* keypad divide key */
- keycode = 0x5B;
- break;
- case 0x37: /* print scrn key */
- keycode = 0x5C;
- break;
- case 0x38: /* right alt key (alt gr) */
- keycode = 0x5D;
- break;
- case 0x47: /* grey home key */
- keycode = 0x5E;
- break;
- case 0x48: /* grey up arrow key */
- keycode = 0x5F;
- break;
- case 0x49: /* grey page up key */
- keycode = 0x60;
- break;
- case 0x4B: /* grey left arrow key */
- keycode = 0x61;
- break;
- case 0x4D: /* grey right arrow key */
- keycode = 0x62;
- break;
- case 0x4F: /* grey end key */
- keycode = 0x63;
- break;
- case 0x50: /* grey down arrow key */
- keycode = 0x64;
- break;
- case 0x51: /* grey page down key */
- keycode = 0x65;
- break;
- case 0x52: /* grey insert key */
- keycode = 0x66;
- break;
- case 0x53: /* grey delete key */
- keycode = 0x67;
- break;
- /* the following 3 are only used on the MS "Natural" keyboard */
- case 0x5b: /* left Window key */
- keycode = 0x69;
- break;
- case 0x5c: /* right Window key */
- keycode = 0x6a;
- break;
- case 0x5d: /* menu key */
- keycode = 0x6b;
- break;
- default: /* ignore everything else */
- goto next_code;
- }
- break;
- case 0xE1: /* 0xE1 prefix */
- state->ks_prefix = 0;
- if (keycode == 0x1D)
- state->ks_prefix = 0x1D;
- goto next_code;
- /* NOT REACHED */
- case 0x1D: /* pause / break */
- state->ks_prefix = 0;
- if (keycode != 0x45)
- goto next_code;
- keycode = 0x68;
- break;
- }
-
- /* return the key code in the K_CODE mode */
- if (state->ks_mode == K_CODE)
- return (keycode | (scancode & 0x80));
-
- /* compose a character code */
- if (state->ks_flags & COMPOSE) {
- switch (scancode) {
- /* key pressed, process it */
- case 0x47: case 0x48: case 0x49: /* keypad 7,8,9 */
- state->ks_composed_char *= 10;
- state->ks_composed_char += scancode - 0x40;
- if (state->ks_composed_char > UCHAR_MAX)
- return ERRKEY;
- goto next_code;
- case 0x4B: case 0x4C: case 0x4D: /* keypad 4,5,6 */
- state->ks_composed_char *= 10;
- state->ks_composed_char += scancode - 0x47;
- if (state->ks_composed_char > UCHAR_MAX)
- return ERRKEY;
- goto next_code;
- case 0x4F: case 0x50: case 0x51: /* keypad 1,2,3 */
- state->ks_composed_char *= 10;
- state->ks_composed_char += scancode - 0x4E;
- if (state->ks_composed_char > UCHAR_MAX)
- return ERRKEY;
- goto next_code;
- case 0x52: /* keypad 0 */
- state->ks_composed_char *= 10;
- if (state->ks_composed_char > UCHAR_MAX)
- return ERRKEY;
- goto next_code;
-
- /* key released, no interest here */
- case 0xC7: case 0xC8: case 0xC9: /* keypad 7,8,9 */
- case 0xCB: case 0xCC: case 0xCD: /* keypad 4,5,6 */
- case 0xCF: case 0xD0: case 0xD1: /* keypad 1,2,3 */
- case 0xD2: /* keypad 0 */
- goto next_code;
-
- case 0x38: /* left alt key */
- break;
-
- default:
- if (state->ks_composed_char > 0) {
- state->ks_flags &= ~COMPOSE;
- state->ks_composed_char = 0;
- return ERRKEY;
- }
- break;
- }
- }
-
- /* keycode to key action */
- action = genkbd_keyaction(kbd, keycode, scancode & 0x80,
- &state->ks_state, &state->ks_accents);
- if (action == NOKEY)
- goto next_code;
- else
- return action;
-}
-
-/* check if char is waiting */
-static int
-atkbd_check_char(keyboard_t *kbd)
-{
- atkbd_state_t *state;
-
- if (!KBD_IS_ACTIVE(kbd))
- return FALSE;
- state = (atkbd_state_t *)kbd->kb_data;
- if (!(state->ks_flags & COMPOSE) && (state->ks_composed_char > 0))
- return TRUE;
- return kbdc_data_ready(state->kbdc);
-}
-
-/* some useful control functions */
-static int
-atkbd_ioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
-{
- /* trasnlate LED_XXX bits into the device specific bits */
- static u_char ledmap[8] = {
- 0, 4, 2, 6, 1, 5, 3, 7,
- };
- atkbd_state_t *state = kbd->kb_data;
- int error;
- int s;
- int i;
-
- s = spltty();
- switch (cmd) {
-
- case KDGKBMODE: /* get keyboard mode */
- *(int *)arg = state->ks_mode;
- break;
- case KDSKBMODE: /* set keyboard mode */
- switch (*(int *)arg) {
- case K_XLATE:
- if (state->ks_mode != K_XLATE) {
- /* make lock key state and LED state match */
- state->ks_state &= ~LOCK_MASK;
- state->ks_state |= KBD_LED_VAL(kbd);
- }
- /* FALL THROUGH */
- case K_RAW:
- case K_CODE:
- if (state->ks_mode != *(int *)arg) {
- atkbd_clear_state(kbd);
- state->ks_mode = *(int *)arg;
- }
- break;
- default:
- splx(s);
- return EINVAL;
- }
- break;
-
- case KDGETLED: /* get keyboard LED */
- *(int *)arg = KBD_LED_VAL(kbd);
- break;
- case KDSETLED: /* set keyboard LED */
- /* NOTE: lock key state in ks_state won't be changed */
- if (*(int *)arg & ~LOCK_MASK) {
- splx(s);
- return EINVAL;
- }
- i = *(int *)arg;
- /* replace CAPS LED with ALTGR LED for ALTGR keyboards */
- if (kbd->kb_keymap->n_keys > ALTGR_OFFSET) {
- if (i & ALKED)
- i |= CLKED;
- else
- i &= ~CLKED;
- }
- if (KBD_HAS_DEVICE(kbd)) {
- error = write_kbd(state->kbdc, KBDC_SET_LEDS,
- ledmap[i & LED_MASK]);
- if (error) {
- splx(s);
- return error;
- }
- }
- KBD_LED_VAL(kbd) = *(int *)arg;
- break;
-
- case KDGKBSTATE: /* get lock key state */
- *(int *)arg = state->ks_state & LOCK_MASK;
- break;
- case KDSKBSTATE: /* set lock key state */
- if (*(int *)arg & ~LOCK_MASK) {
- splx(s);
- return EINVAL;
- }
- state->ks_state &= ~LOCK_MASK;
- state->ks_state |= *(int *)arg;
- splx(s);
- /* set LEDs and quit */
- return atkbd_ioctl(kbd, KDSETLED, arg);
-
- case KDSETRAD: /* set keyboard repeat rate */
- splx(s);
- if (!KBD_HAS_DEVICE(kbd))
- return 0;
- return write_kbd(state->kbdc, KBDC_SET_TYPEMATIC,
- *(int *)arg);
-
- case PIO_KEYMAP: /* set keyboard translation table */
- case PIO_KEYMAPENT: /* set keyboard translation table entry */
- case PIO_DEADKEYMAP: /* set accent key translation table */
- state->ks_accents = 0;
- /* FALL THROUGH */
- default:
- splx(s);
- return genkbd_commonioctl(kbd, cmd, arg);
- }
-
- splx(s);
- return 0;
-}
-
-/* lock the access to the keyboard */
-static int
-atkbd_lock(keyboard_t *kbd, int lock)
-{
- return kbdc_lock(((atkbd_state_t *)kbd->kb_data)->kbdc, lock);
-}
-
-/* clear the internal state of the keyboard */
-static void
-atkbd_clear_state(keyboard_t *kbd)
-{
- atkbd_state_t *state;
-
- state = (atkbd_state_t *)kbd->kb_data;
- state->ks_flags = 0;
- state->ks_state &= LOCK_MASK; /* preserve locking key state */
- state->ks_accents = 0;
- state->ks_composed_char = 0;
-#if 0
- state->ks_prefix = 0; /* XXX */
-#endif
-}
-
-/* save the internal state */
-static int
-atkbd_get_state(keyboard_t *kbd, void *buf, size_t len)
-{
- if (len == 0)
- return sizeof(atkbd_state_t);
- if (len < sizeof(atkbd_state_t))
- return -1;
- bcopy(kbd->kb_data, buf, sizeof(atkbd_state_t));
- return 0;
-}
-
-/* set the internal state */
-static int
-atkbd_set_state(keyboard_t *kbd, void *buf, size_t len)
-{
- if (len < sizeof(atkbd_state_t))
- return ENOMEM;
- if (((atkbd_state_t *)kbd->kb_data)->kbdc
- != ((atkbd_state_t *)buf)->kbdc)
- return ENOMEM;
- bcopy(buf, kbd->kb_data, sizeof(atkbd_state_t));
- return 0;
-}
-
-/* local functions */
-
-static int
-setup_kbd_port(KBDC kbdc, int port, int intr)
-{
- if (!set_controller_command_byte(kbdc,
- KBD_KBD_CONTROL_BITS,
- ((port) ? KBD_ENABLE_KBD_PORT : KBD_DISABLE_KBD_PORT)
- | ((intr) ? KBD_ENABLE_KBD_INT : KBD_DISABLE_KBD_INT)))
- return 1;
- return 0;
-}
-
-static int
-get_kbd_echo(KBDC kbdc)
-{
- /* enable the keyboard port, but disable the keyboard intr. */
- if (setup_kbd_port(kbdc, TRUE, FALSE))
- /* CONTROLLER ERROR: there is very little we can do... */
- return ENXIO;
-
- /* see if something is present */
- write_kbd_command(kbdc, KBDC_ECHO);
- if (read_kbd_data(kbdc) != KBD_ECHO) {
- empty_both_buffers(kbdc, 10);
- test_controller(kbdc);
- test_kbd_port(kbdc);
- return ENXIO;
- }
-
- /* enable the keyboard port and intr. */
- if (setup_kbd_port(kbdc, TRUE, TRUE)) {
- /*
- * CONTROLLER ERROR
- * This is serious; the keyboard intr is left disabled!
- */
- return ENXIO;
- }
-
- return 0;
-}
-
-static int
-probe_keyboard(KBDC kbdc, int flags)
-{
- /*
- * Don't try to print anything in this function. The low-level
- * console may not have been initialized yet...
- */
- int err;
- int c;
- int m;
-
- if (!kbdc_lock(kbdc, TRUE)) {
- /* driver error? */
- return ENXIO;
- }
-
- /* flush any noise in the buffer */
- empty_both_buffers(kbdc, 10);
-
- /* save the current keyboard controller command byte */
- m = kbdc_get_device_mask(kbdc) & ~KBD_KBD_CONTROL_BITS;
- c = get_controller_command_byte(kbdc);
- if (c == -1) {
- /* CONTROLLER ERROR */
- kbdc_set_device_mask(kbdc, m);
- kbdc_lock(kbdc, FALSE);
- return ENXIO;
- }
-
- /*
- * The keyboard may have been screwed up by the boot block.
- * We may just be able to recover from error by testing the controller
- * and the keyboard port. The controller command byte needs to be
- * saved before this recovery operation, as some controllers seem
- * to set the command byte to particular values.
- */
- test_controller(kbdc);
- test_kbd_port(kbdc);
-
- err = get_kbd_echo(kbdc);
- if (err == 0) {
- kbdc_set_device_mask(kbdc, m | KBD_KBD_CONTROL_BITS);
- } else {
- if (c != -1)
- /* try to restore the command byte as before */
- set_controller_command_byte(kbdc, 0xff, c);
- kbdc_set_device_mask(kbdc, m);
- }
-
- kbdc_lock(kbdc, FALSE);
- return err;
-}
-
-static int
-init_keyboard(KBDC kbdc, int *type, int flags)
-{
- int codeset;
- int id;
- int c;
-
- if (!kbdc_lock(kbdc, TRUE)) {
- /* driver error? */
- return EIO;
- }
-
- /* save the current controller command byte */
- empty_both_buffers(kbdc, 10);
- c = get_controller_command_byte(kbdc);
- if (c == -1) {
- /* CONTROLLER ERROR */
- kbdc_lock(kbdc, FALSE);
- printf("atkbd: unable to get the current command byte value.\n");
- return EIO;
- }
- if (bootverbose)
- printf("atkbd: the current kbd controller command byte %04x\n",
- c);
-#if 0
- /* override the keyboard lock switch */
- c |= KBD_OVERRIDE_KBD_LOCK;
-#endif
-
- /* enable the keyboard port, but disable the keyboard intr. */
- if (setup_kbd_port(kbdc, TRUE, FALSE)) {
- /* CONTROLLER ERROR: there is very little we can do... */
- printf("atkbd: unable to set the command byte.\n");
- kbdc_lock(kbdc, FALSE);
- return EIO;
- }
-
- /*
- * Check if we have an XT keyboard before we attempt to reset it.
- * The procedure assumes that the keyboard and the controller have
- * been set up properly by BIOS and have not been messed up
- * during the boot process.
- */
- codeset = -1;
- if (flags & KB_CONF_ALT_SCANCODESET)
- /* the user says there is a XT keyboard */
- codeset = 1;
-#ifdef KBD_DETECT_XT_KEYBOARD
- else if ((c & KBD_TRANSLATION) == 0) {
- /* SET_SCANCODE_SET is not always supported; ignore error */
- if (send_kbd_command_and_data(kbdc, KBDC_SET_SCANCODE_SET, 0)
- == KBD_ACK)
- codeset = read_kbd_data(kbdc);
- }
- if (bootverbose)
- printf("atkbd: scancode set %d\n", codeset);
-#endif /* KBD_DETECT_XT_KEYBOARD */
-
- *type = KB_OTHER;
- id = get_kbd_id(kbdc);
- switch(id) {
- case 0x41ab:
- case 0x83ab:
- *type = KB_101;
- break;
- case -1: /* AT 84 keyboard doesn't return ID */
- *type = KB_84;
- break;
- default:
- break;
- }
- if (bootverbose)
- printf("atkbd: keyboard ID 0x%x (%d)\n", id, *type);
-
- /* reset keyboard hardware */
- if (!(flags & KB_CONF_NO_RESET) && !reset_kbd(kbdc)) {
- /*
- * KEYBOARD ERROR
- * Keyboard reset may fail either because the keyboard
- * doen't exist, or because the keyboard doesn't pass
- * the self-test, or the keyboard controller on the
- * motherboard and the keyboard somehow fail to shake hands.
- * It is just possible, particularly in the last case,
- * that the keyoard controller may be left in a hung state.
- * test_controller() and test_kbd_port() appear to bring
- * the keyboard controller back (I don't know why and how,
- * though.)
- */
- empty_both_buffers(kbdc, 10);
- test_controller(kbdc);
- test_kbd_port(kbdc);
- /*
- * We could disable the keyboard port and interrupt... but,
- * the keyboard may still exist (see above).
- */
- set_controller_command_byte(kbdc, 0xff, c);
- kbdc_lock(kbdc, FALSE);
- if (bootverbose)
- printf("atkbd: failed to reset the keyboard.\n");
- return EIO;
- }
-
- /*
- * Allow us to set the XT_KEYBD flag in UserConfig so that keyboards
- * such as those on the IBM ThinkPad laptop computers can be used
- * with the standard console driver.
- */
- if (codeset == 1) {
- if (send_kbd_command_and_data(kbdc,
- KBDC_SET_SCANCODE_SET, codeset) == KBD_ACK) {
- /* XT kbd doesn't need scan code translation */
- c &= ~KBD_TRANSLATION;
- } else {
- /*
- * KEYBOARD ERROR
- * The XT kbd isn't usable unless the proper scan
- * code set is selected.
- */
- set_controller_command_byte(kbdc, 0xff, c);
- kbdc_lock(kbdc, FALSE);
- printf("atkbd: unable to set the XT keyboard mode.\n");
- return EIO;
- }
- }
-
-#ifdef __alpha__
- if (send_kbd_command_and_data(
- kbdc, KBDC_SET_SCANCODE_SET, 2) != KBD_ACK) {
- printf("atkbd: can't set translation.\n");
-
- }
- c |= KBD_TRANSLATION;
-#endif
-
- /* enable the keyboard port and intr. */
- if (!set_controller_command_byte(kbdc,
- KBD_KBD_CONTROL_BITS | KBD_TRANSLATION | KBD_OVERRIDE_KBD_LOCK,
- (c & (KBD_TRANSLATION | KBD_OVERRIDE_KBD_LOCK))
- | KBD_ENABLE_KBD_PORT | KBD_ENABLE_KBD_INT)) {
- /*
- * CONTROLLER ERROR
- * This is serious; we are left with the disabled
- * keyboard intr.
- */
- set_controller_command_byte(kbdc, 0xff, c);
- kbdc_lock(kbdc, FALSE);
- printf("atkbd: unable to enable the keyboard port and intr.\n");
- return EIO;
- }
-
- kbdc_lock(kbdc, FALSE);
- return 0;
-}
-
-static int
-write_kbd(KBDC kbdc, int command, int data)
-{
- int s;
-
- /* prevent the timeout routine from polling the keyboard */
- if (!kbdc_lock(kbdc, TRUE))
- return EBUSY;
-
- /* disable the keyboard and mouse interrupt */
- s = spltty();
-#if 0
- c = get_controller_command_byte(kbdc);
- if ((c == -1)
- || !set_controller_command_byte(kbdc,
- kbdc_get_device_mask(kbdc),
- KBD_DISABLE_KBD_PORT | KBD_DISABLE_KBD_INT
- | KBD_DISABLE_AUX_PORT | KBD_DISABLE_AUX_INT)) {
- /* CONTROLLER ERROR */
- kbdc_lock(kbdc, FALSE);
- splx(s);
- return EIO;
- }
- /*
- * Now that the keyboard controller is told not to generate
- * the keyboard and mouse interrupts, call `splx()' to allow
- * the other tty interrupts. The clock interrupt may also occur,
- * but the timeout routine (`scrn_timer()') will be blocked
- * by the lock flag set via `kbdc_lock()'
- */
- splx(s);
-#endif
-
- if (send_kbd_command_and_data(kbdc, command, data) != KBD_ACK)
- send_kbd_command(kbdc, KBDC_ENABLE_KBD);
-
-#if 0
- /* restore the interrupts */
- if (!set_controller_command_byte(kbdc,
- kbdc_get_device_mask(kbdc),
- c & (KBD_KBD_CONTROL_BITS | KBD_AUX_CONTROL_BITS))) {
- /* CONTROLLER ERROR */
- }
-#else
- splx(s);
-#endif
- kbdc_lock(kbdc, FALSE);
-
- return 0;
-}
-
-static int
-get_kbd_id(KBDC kbdc)
-{
- int id1, id2;
-
- empty_both_buffers(kbdc, 10);
- id1 = id2 = -1;
- if (send_kbd_command(kbdc, KBDC_SEND_DEV_ID) != KBD_ACK)
- return -1;
-
- DELAY(10000); /* 10 msec delay */
- id1 = read_kbd_data(kbdc);
- if (id1 != -1)
- id2 = read_kbd_data(kbdc);
-
- if ((id1 == -1) || (id2 == -1)) {
- empty_both_buffers(kbdc, 10);
- test_controller(kbdc);
- test_kbd_port(kbdc);
- return -1;
- }
- return ((id2 << 8) | id1);
-}
-
-#endif /* NATKBD > 0 */
diff --git a/sys/dev/kbd/atkbdc.c b/sys/dev/kbd/atkbdc.c
deleted file mode 100644
index 0f61835f07634..0000000000000
--- a/sys/dev/kbd/atkbdc.c
+++ /dev/null
@@ -1,1017 +0,0 @@
-/*-
- * Copyright (c) 1996-1999
- * Kazutaka YOKOTA (yokota@zodiac.mech.utsunomiya-u.ac.jp)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: $
- * from kbdio.c,v 1.13 1998/09/25 11:55:46 yokota Exp
- */
-
-#include "atkbdc.h"
-#include "opt_kbd.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/syslog.h>
-
-#include <machine/clock.h>
-
-#include <dev/kbd/atkbdcreg.h>
-
-#ifndef __i386__
-#include <isa/isareg.h>
-#else
-#include <i386/isa/isa.h>
-#endif
-
-/* constants */
-
-#define MAXKBDC MAX(NATKBDC, 1)
-
-/* macros */
-
-#ifndef MAX
-#define MAX(x, y) ((x) > (y) ? (x) : (y))
-#endif
-
-#define kbdcp(p) ((atkbdc_softc_t *)(p))
-#define nextq(i) (((i) + 1) % KBDQ_BUFSIZE)
-#define availq(q) ((q)->head != (q)->tail)
-#if KBDIO_DEBUG >= 2
-#define emptyq(q) ((q)->tail = (q)->head = (q)->qcount = 0)
-#else
-#define emptyq(q) ((q)->tail = (q)->head = 0)
-#endif
-
-/* local variables */
-
-/*
- * We always need at least one copy of the kbdc_softc struct for the
- * low-level console. As the low-level console accesses the keyboard
- * controller before kbdc, and all other devices, is probed, we
- * statically allocate one entry. XXX
- */
-static atkbdc_softc_t default_kbdc;
-static atkbdc_softc_t *atkbdc_softc[MAXKBDC] = { &default_kbdc };
-
-static int verbose = KBDIO_DEBUG;
-
-/* function prototypes */
-
-static int atkbdc_setup(atkbdc_softc_t *sc, int port);
-static int addq(kqueue *q, int c);
-static int removeq(kqueue *q);
-static int wait_while_controller_busy(atkbdc_softc_t *kbdc);
-static int wait_for_data(atkbdc_softc_t *kbdc);
-static int wait_for_kbd_data(atkbdc_softc_t *kbdc);
-static int wait_for_kbd_ack(atkbdc_softc_t *kbdc);
-static int wait_for_aux_data(atkbdc_softc_t *kbdc);
-static int wait_for_aux_ack(atkbdc_softc_t *kbdc);
-
-#if NATKBDC > 0
-
-atkbdc_softc_t
-*atkbdc_get_softc(int unit)
-{
- atkbdc_softc_t *sc;
-
- if (unit >= sizeof(atkbdc_softc)/sizeof(atkbdc_softc[0]))
- return NULL;
- sc = atkbdc_softc[unit];
- if (sc == NULL) {
- sc = atkbdc_softc[unit]
- = malloc(sizeof(*sc), M_DEVBUF, M_NOWAIT);
- if (sc == NULL)
- return NULL;
- bzero(sc, sizeof(*sc));
- sc->port = -1; /* XXX */
- }
- return sc;
-}
-
-int
-atkbdc_probe_unit(atkbdc_softc_t *sc, int unit, int port)
-{
- return atkbdc_setup(sc, port);
-}
-
-#endif /* NATKBDC > 0 */
-
-/* the backdoor to the keyboard controller! XXX */
-int
-atkbdc_configure(void)
-{
- return atkbdc_setup(atkbdc_softc[0], -1);
-}
-
-static int
-atkbdc_setup(atkbdc_softc_t *sc, int port)
-{
- if (port <= 0)
- port = IO_KBD;
-
- if (sc->port <= 0) {
- sc->command_byte = -1;
- sc->command_mask = 0;
- sc->lock = FALSE;
- sc->kbd.head = sc->kbd.tail = 0;
- sc->aux.head = sc->aux.tail = 0;
-#if KBDIO_DEBUG >= 2
- sc->kbd.call_count = 0;
- sc->kbd.qcount = sc->kbd.max_qcount = 0;
- sc->aux.call_count = 0;
- sc->aux.qcount = sc->aux.max_qcount = 0;
-#endif
- }
- sc->port = port; /* may override the previous value */
- return 0;
-}
-
-/* associate a port number with a KBDC */
-
-KBDC
-kbdc_open(int port)
-{
- int s;
- int i;
-
- if (port <= 0)
- port = IO_KBD;
-
- s = spltty();
- for (i = 0; i < sizeof(atkbdc_softc)/sizeof(atkbdc_softc[0]); ++i) {
- if (atkbdc_softc[i] == NULL)
- continue;
- if (atkbdc_softc[i]->port == port) {
- splx(s);
- return (KBDC)atkbdc_softc[i];
- }
- if (atkbdc_softc[i]->port <= 0) {
- if (atkbdc_setup(atkbdc_softc[i], port))
- break;
- splx(s);
- return (KBDC)atkbdc_softc[i];
- }
- }
- splx(s);
- return NULL;
-}
-
-/*
- * I/O access arbitration in `kbdio'
- *
- * The `kbdio' module uses a simplistic convention to arbitrate
- * I/O access to the controller/keyboard/mouse. The convention requires
- * close cooperation of the calling device driver.
- *
- * The device driver which utilizes the `kbdio' module are assumed to
- * have the following set of routines.
- * a. An interrupt handler (the bottom half of the driver).
- * b. Timeout routines which may briefly polls the keyboard controller.
- * c. Routines outside interrupt context (the top half of the driver).
- * They should follow the rules below:
- * 1. The interrupt handler may assume that it always has full access
- * to the controller/keyboard/mouse.
- * 2. The other routines must issue `spltty()' if they wish to
- * prevent the interrupt handler from accessing
- * the controller/keyboard/mouse.
- * 3. The timeout routines and the top half routines of the device driver
- * arbitrate I/O access by observing the lock flag in `kbdio'.
- * The flag is manipulated via `kbdc_lock()'; when one wants to
- * perform I/O, call `kbdc_lock(kbdc, TRUE)' and proceed only if
- * the call returns with TRUE. Otherwise the caller must back off.
- * Call `kbdc_lock(kbdc, FALSE)' when necessary I/O operaion
- * is finished. This mechanism does not prevent the interrupt
- * handler from being invoked at any time and carrying out I/O.
- * Therefore, `spltty()' must be strategically placed in the device
- * driver code. Also note that the timeout routine may interrupt
- * `kbdc_lock()' called by the top half of the driver, but this
- * interruption is OK so long as the timeout routine observes the
- * the rule 4 below.
- * 4. The interrupt and timeout routines should not extend I/O operation
- * across more than one interrupt or timeout; they must complete
- * necessary I/O operation within one invokation of the routine.
- * This measns that if the timeout routine acquires the lock flag,
- * it must reset the flag to FALSE before it returns.
- */
-
-/* set/reset polling lock */
-int
-kbdc_lock(KBDC p, int lock)
-{
- int prevlock;
-
- prevlock = kbdcp(p)->lock;
- kbdcp(p)->lock = lock;
-
- return (prevlock != lock);
-}
-
-/* check if any data is waiting to be processed */
-int
-kbdc_data_ready(KBDC p)
-{
- return (availq(&kbdcp(p)->kbd) || availq(&kbdcp(p)->aux)
- || (inb(kbdcp(p)->port + KBD_STATUS_PORT) & KBDS_ANY_BUFFER_FULL));
-}
-
-/* queuing functions */
-
-static int
-addq(kqueue *q, int c)
-{
- if (nextq(q->tail) != q->head) {
- q->q[q->tail] = c;
- q->tail = nextq(q->tail);
-#if KBDIO_DEBUG >= 2
- ++q->call_count;
- ++q->qcount;
- if (q->qcount > q->max_qcount)
- q->max_qcount = q->qcount;
-#endif
- return TRUE;
- }
- return FALSE;
-}
-
-static int
-removeq(kqueue *q)
-{
- int c;
-
- if (q->tail != q->head) {
- c = q->q[q->head];
- q->head = nextq(q->head);
-#if KBDIO_DEBUG >= 2
- --q->qcount;
-#endif
- return c;
- }
- return -1;
-}
-
-/*
- * device I/O routines
- */
-static int
-wait_while_controller_busy(struct atkbdc_softc *kbdc)
-{
- /* CPU will stay inside the loop for 100msec at most */
- int retry = 5000;
- int port = kbdc->port;
- int f;
-
- while ((f = inb(port + KBD_STATUS_PORT)) & KBDS_INPUT_BUFFER_FULL) {
- if ((f & KBDS_BUFFER_FULL) == KBDS_KBD_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- addq(&kbdc->kbd, inb(port + KBD_DATA_PORT));
- } else if ((f & KBDS_BUFFER_FULL) == KBDS_AUX_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- addq(&kbdc->aux, inb(port + KBD_DATA_PORT));
- }
- DELAY(KBDC_DELAYTIME);
- if (--retry < 0)
- return FALSE;
- }
- return TRUE;
-}
-
-/*
- * wait for any data; whether it's from the controller,
- * the keyboard, or the aux device.
- */
-static int
-wait_for_data(struct atkbdc_softc *kbdc)
-{
- /* CPU will stay inside the loop for 200msec at most */
- int retry = 10000;
- int port = kbdc->port;
- int f;
-
- while ((f = inb(port + KBD_STATUS_PORT) & KBDS_ANY_BUFFER_FULL) == 0) {
- DELAY(KBDC_DELAYTIME);
- if (--retry < 0)
- return 0;
- }
- DELAY(KBDD_DELAYTIME);
- return f;
-}
-
-/* wait for data from the keyboard */
-static int
-wait_for_kbd_data(struct atkbdc_softc *kbdc)
-{
- /* CPU will stay inside the loop for 200msec at most */
- int retry = 10000;
- int port = kbdc->port;
- int f;
-
- while ((f = inb(port + KBD_STATUS_PORT) & KBDS_BUFFER_FULL)
- != KBDS_KBD_BUFFER_FULL) {
- if (f == KBDS_AUX_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- addq(&kbdc->aux, inb(port + KBD_DATA_PORT));
- }
- DELAY(KBDC_DELAYTIME);
- if (--retry < 0)
- return 0;
- }
- DELAY(KBDD_DELAYTIME);
- return f;
-}
-
-/*
- * wait for an ACK(FAh), RESEND(FEh), or RESET_FAIL(FCh) from the keyboard.
- * queue anything else.
- */
-static int
-wait_for_kbd_ack(struct atkbdc_softc *kbdc)
-{
- /* CPU will stay inside the loop for 200msec at most */
- int retry = 10000;
- int port = kbdc->port;
- int f;
- int b;
-
- while (retry-- > 0) {
- if ((f = inb(port + KBD_STATUS_PORT)) & KBDS_ANY_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- b = inb(port + KBD_DATA_PORT);
- if ((f & KBDS_BUFFER_FULL) == KBDS_KBD_BUFFER_FULL) {
- if ((b == KBD_ACK) || (b == KBD_RESEND)
- || (b == KBD_RESET_FAIL))
- return b;
- addq(&kbdc->kbd, b);
- } else if ((f & KBDS_BUFFER_FULL) == KBDS_AUX_BUFFER_FULL) {
- addq(&kbdc->aux, b);
- }
- }
- DELAY(KBDC_DELAYTIME);
- }
- return -1;
-}
-
-/* wait for data from the aux device */
-static int
-wait_for_aux_data(struct atkbdc_softc *kbdc)
-{
- /* CPU will stay inside the loop for 200msec at most */
- int retry = 10000;
- int port = kbdc->port;
- int f;
-
- while ((f = inb(port + KBD_STATUS_PORT) & KBDS_BUFFER_FULL)
- != KBDS_AUX_BUFFER_FULL) {
- if (f == KBDS_KBD_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- addq(&kbdc->kbd, inb(port + KBD_DATA_PORT));
- }
- DELAY(KBDC_DELAYTIME);
- if (--retry < 0)
- return 0;
- }
- DELAY(KBDD_DELAYTIME);
- return f;
-}
-
-/*
- * wait for an ACK(FAh), RESEND(FEh), or RESET_FAIL(FCh) from the aux device.
- * queue anything else.
- */
-static int
-wait_for_aux_ack(struct atkbdc_softc *kbdc)
-{
- /* CPU will stay inside the loop for 200msec at most */
- int retry = 10000;
- int port = kbdc->port;
- int f;
- int b;
-
- while (retry-- > 0) {
- if ((f = inb(port + KBD_STATUS_PORT)) & KBDS_ANY_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- b = inb(port + KBD_DATA_PORT);
- if ((f & KBDS_BUFFER_FULL) == KBDS_AUX_BUFFER_FULL) {
- if ((b == PSM_ACK) || (b == PSM_RESEND)
- || (b == PSM_RESET_FAIL))
- return b;
- addq(&kbdc->aux, b);
- } else if ((f & KBDS_BUFFER_FULL) == KBDS_KBD_BUFFER_FULL) {
- addq(&kbdc->kbd, b);
- }
- }
- DELAY(KBDC_DELAYTIME);
- }
- return -1;
-}
-
-/* write a one byte command to the controller */
-int
-write_controller_command(KBDC p, int c)
-{
- if (!wait_while_controller_busy(kbdcp(p)))
- return FALSE;
- outb(kbdcp(p)->port + KBD_COMMAND_PORT, c);
- return TRUE;
-}
-
-/* write a one byte data to the controller */
-int
-write_controller_data(KBDC p, int c)
-{
- if (!wait_while_controller_busy(kbdcp(p)))
- return FALSE;
- outb(kbdcp(p)->port + KBD_DATA_PORT, c);
- return TRUE;
-}
-
-/* write a one byte keyboard command */
-int
-write_kbd_command(KBDC p, int c)
-{
- if (!wait_while_controller_busy(kbdcp(p)))
- return FALSE;
- outb(kbdcp(p)->port + KBD_DATA_PORT, c);
- return TRUE;
-}
-
-/* write a one byte auxiliary device command */
-int
-write_aux_command(KBDC p, int c)
-{
- if (!write_controller_command(p, KBDC_WRITE_TO_AUX))
- return FALSE;
- return write_controller_data(p, c);
-}
-
-/* send a command to the keyboard and wait for ACK */
-int
-send_kbd_command(KBDC p, int c)
-{
- int retry = KBD_MAXRETRY;
- int res = -1;
-
- while (retry-- > 0) {
- if (!write_kbd_command(p, c))
- continue;
- res = wait_for_kbd_ack(kbdcp(p));
- if (res == KBD_ACK)
- break;
- }
- return res;
-}
-
-/* send a command to the auxiliary device and wait for ACK */
-int
-send_aux_command(KBDC p, int c)
-{
- int retry = KBD_MAXRETRY;
- int res = -1;
-
- while (retry-- > 0) {
- if (!write_aux_command(p, c))
- continue;
- /*
- * FIXME: XXX
- * The aux device may have already sent one or two bytes of
- * status data, when a command is received. It will immediately
- * stop data transmission, thus, leaving an incomplete data
- * packet in our buffer. We have to discard any unprocessed
- * data in order to remove such packets. Well, we may remove
- * unprocessed, but necessary data byte as well...
- */
- emptyq(&kbdcp(p)->aux);
- res = wait_for_aux_ack(kbdcp(p));
- if (res == PSM_ACK)
- break;
- }
- return res;
-}
-
-/* send a command and a data to the keyboard, wait for ACKs */
-int
-send_kbd_command_and_data(KBDC p, int c, int d)
-{
- int retry;
- int res = -1;
-
- for (retry = KBD_MAXRETRY; retry > 0; --retry) {
- if (!write_kbd_command(p, c))
- continue;
- res = wait_for_kbd_ack(kbdcp(p));
- if (res == KBD_ACK)
- break;
- else if (res != KBD_RESEND)
- return res;
- }
- if (retry <= 0)
- return res;
-
- for (retry = KBD_MAXRETRY, res = -1; retry > 0; --retry) {
- if (!write_kbd_command(p, d))
- continue;
- res = wait_for_kbd_ack(kbdcp(p));
- if (res != KBD_RESEND)
- break;
- }
- return res;
-}
-
-/* send a command and a data to the auxiliary device, wait for ACKs */
-int
-send_aux_command_and_data(KBDC p, int c, int d)
-{
- int retry;
- int res = -1;
-
- for (retry = KBD_MAXRETRY; retry > 0; --retry) {
- if (!write_aux_command(p, c))
- continue;
- emptyq(&kbdcp(p)->aux);
- res = wait_for_aux_ack(kbdcp(p));
- if (res == PSM_ACK)
- break;
- else if (res != PSM_RESEND)
- return res;
- }
- if (retry <= 0)
- return res;
-
- for (retry = KBD_MAXRETRY, res = -1; retry > 0; --retry) {
- if (!write_aux_command(p, d))
- continue;
- res = wait_for_aux_ack(kbdcp(p));
- if (res != PSM_RESEND)
- break;
- }
- return res;
-}
-
-/*
- * read one byte from any source; whether from the controller,
- * the keyboard, or the aux device
- */
-int
-read_controller_data(KBDC p)
-{
- if (availq(&kbdcp(p)->kbd))
- return removeq(&kbdcp(p)->kbd);
- if (availq(&kbdcp(p)->aux))
- return removeq(&kbdcp(p)->aux);
- if (!wait_for_data(kbdcp(p)))
- return -1; /* timeout */
- return inb(kbdcp(p)->port + KBD_DATA_PORT);
-}
-
-#if KBDIO_DEBUG >= 2
-static int call = 0;
-#endif
-
-/* read one byte from the keyboard */
-int
-read_kbd_data(KBDC p)
-{
-#if KBDIO_DEBUG >= 2
- if (++call > 2000) {
- call = 0;
- log(LOG_DEBUG, "kbdc: kbd q: %d calls, max %d chars, "
- "aux q: %d calls, max %d chars\n",
- kbdcp(p)->kbd.call_count, kbdcp(p)->kbd.max_qcount,
- kbdcp(p)->aux.call_count, kbdcp(p)->aux.max_qcount);
- }
-#endif
-
- if (availq(&kbdcp(p)->kbd))
- return removeq(&kbdcp(p)->kbd);
- if (!wait_for_kbd_data(kbdcp(p)))
- return -1; /* timeout */
- return inb(kbdcp(p)->port + KBD_DATA_PORT);
-}
-
-/* read one byte from the keyboard, but return immediately if
- * no data is waiting
- */
-int
-read_kbd_data_no_wait(KBDC p)
-{
- int f;
-
-#if KBDIO_DEBUG >= 2
- if (++call > 2000) {
- call = 0;
- log(LOG_DEBUG, "kbdc: kbd q: %d calls, max %d chars, "
- "aux q: %d calls, max %d chars\n",
- kbdcp(p)->kbd.call_count, kbdcp(p)->kbd.max_qcount,
- kbdcp(p)->aux.call_count, kbdcp(p)->aux.max_qcount);
- }
-#endif
-
- if (availq(&kbdcp(p)->kbd))
- return removeq(&kbdcp(p)->kbd);
- f = inb(kbdcp(p)->port + KBD_STATUS_PORT) & KBDS_BUFFER_FULL;
- if (f == KBDS_AUX_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- addq(&kbdcp(p)->aux, inb(kbdcp(p)->port + KBD_DATA_PORT));
- f = inb(kbdcp(p)->port + KBD_STATUS_PORT) & KBDS_BUFFER_FULL;
- }
- if (f == KBDS_KBD_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- return inb(kbdcp(p)->port + KBD_DATA_PORT);
- }
- return -1; /* no data */
-}
-
-/* read one byte from the aux device */
-int
-read_aux_data(KBDC p)
-{
- if (availq(&kbdcp(p)->aux))
- return removeq(&kbdcp(p)->aux);
- if (!wait_for_aux_data(kbdcp(p)))
- return -1; /* timeout */
- return inb(kbdcp(p)->port + KBD_DATA_PORT);
-}
-
-/* read one byte from the aux device, but return immediately if
- * no data is waiting
- */
-int
-read_aux_data_no_wait(KBDC p)
-{
- int f;
-
- if (availq(&kbdcp(p)->aux))
- return removeq(&kbdcp(p)->aux);
- f = inb(kbdcp(p)->port + KBD_STATUS_PORT) & KBDS_BUFFER_FULL;
- if (f == KBDS_KBD_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- addq(&kbdcp(p)->kbd, inb(kbdcp(p)->port + KBD_DATA_PORT));
- f = inb(kbdcp(p)->port + KBD_STATUS_PORT) & KBDS_BUFFER_FULL;
- }
- if (f == KBDS_AUX_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- return inb(kbdcp(p)->port + KBD_DATA_PORT);
- }
- return -1; /* no data */
-}
-
-/* discard data from the keyboard */
-void
-empty_kbd_buffer(KBDC p, int wait)
-{
- int t;
- int b;
- int f;
-#if KBDIO_DEBUG >= 2
- int c1 = 0;
- int c2 = 0;
-#endif
- int delta = 2;
-
- for (t = wait; t > 0; ) {
- if ((f = inb(kbdcp(p)->port + KBD_STATUS_PORT)) & KBDS_ANY_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- b = inb(kbdcp(p)->port + KBD_DATA_PORT);
- if ((f & KBDS_BUFFER_FULL) == KBDS_AUX_BUFFER_FULL) {
- addq(&kbdcp(p)->aux, b);
-#if KBDIO_DEBUG >= 2
- ++c2;
- } else {
- ++c1;
-#endif
- }
- t = wait;
- } else {
- t -= delta;
- }
- DELAY(delta*1000);
- }
-#if KBDIO_DEBUG >= 2
- if ((c1 > 0) || (c2 > 0))
- log(LOG_DEBUG, "kbdc: %d:%d char read (empty_kbd_buffer)\n", c1, c2);
-#endif
-
- emptyq(&kbdcp(p)->kbd);
-}
-
-/* discard data from the aux device */
-void
-empty_aux_buffer(KBDC p, int wait)
-{
- int t;
- int b;
- int f;
-#if KBDIO_DEBUG >= 2
- int c1 = 0;
- int c2 = 0;
-#endif
- int delta = 2;
-
- for (t = wait; t > 0; ) {
- if ((f = inb(kbdcp(p)->port + KBD_STATUS_PORT)) & KBDS_ANY_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- b = inb(kbdcp(p)->port + KBD_DATA_PORT);
- if ((f & KBDS_BUFFER_FULL) == KBDS_KBD_BUFFER_FULL) {
- addq(&kbdcp(p)->kbd, b);
-#if KBDIO_DEBUG >= 2
- ++c1;
- } else {
- ++c2;
-#endif
- }
- t = wait;
- } else {
- t -= delta;
- }
- DELAY(delta*1000);
- }
-#if KBDIO_DEBUG >= 2
- if ((c1 > 0) || (c2 > 0))
- log(LOG_DEBUG, "kbdc: %d:%d char read (empty_aux_buffer)\n", c1, c2);
-#endif
-
- emptyq(&kbdcp(p)->aux);
-}
-
-/* discard any data from the keyboard or the aux device */
-void
-empty_both_buffers(KBDC p, int wait)
-{
- int t;
- int f;
-#if KBDIO_DEBUG >= 2
- int c1 = 0;
- int c2 = 0;
-#endif
- int delta = 2;
-
- for (t = wait; t > 0; ) {
- if ((f = inb(kbdcp(p)->port + KBD_STATUS_PORT)) & KBDS_ANY_BUFFER_FULL) {
- DELAY(KBDD_DELAYTIME);
- (void)inb(kbdcp(p)->port + KBD_DATA_PORT);
-#if KBDIO_DEBUG >= 2
- if ((f & KBDS_BUFFER_FULL) == KBDS_KBD_BUFFER_FULL)
- ++c1;
- else
- ++c2;
-#endif
- t = wait;
- } else {
- t -= delta;
- }
- DELAY(delta*1000);
- }
-#if KBDIO_DEBUG >= 2
- if ((c1 > 0) || (c2 > 0))
- log(LOG_DEBUG, "kbdc: %d:%d char read (empty_both_buffers)\n", c1, c2);
-#endif
-
- emptyq(&kbdcp(p)->kbd);
- emptyq(&kbdcp(p)->aux);
-}
-
-/* keyboard and mouse device control */
-
-/* NOTE: enable the keyboard port but disable the keyboard
- * interrupt before calling "reset_kbd()".
- */
-int
-reset_kbd(KBDC p)
-{
- int retry = KBD_MAXRETRY;
- int again = KBD_MAXWAIT;
- int c = KBD_RESEND; /* keep the compiler happy */
-
- while (retry-- > 0) {
- empty_both_buffers(p, 10);
- if (!write_kbd_command(p, KBDC_RESET_KBD))
- continue;
- emptyq(&kbdcp(p)->kbd);
- c = read_controller_data(p);
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: RESET_KBD return code:%04x\n", c);
- if (c == KBD_ACK) /* keyboard has agreed to reset itself... */
- break;
- }
- if (retry < 0)
- return FALSE;
-
- while (again-- > 0) {
- /* wait awhile, well, in fact we must wait quite loooooooooooong */
- DELAY(KBD_RESETDELAY*1000);
- c = read_controller_data(p); /* RESET_DONE/RESET_FAIL */
- if (c != -1) /* wait again if the controller is not ready */
- break;
- }
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: RESET_KBD status:%04x\n", c);
- if (c != KBD_RESET_DONE)
- return FALSE;
- return TRUE;
-}
-
-/* NOTE: enable the aux port but disable the aux interrupt
- * before calling `reset_aux_dev()'.
- */
-int
-reset_aux_dev(KBDC p)
-{
- int retry = KBD_MAXRETRY;
- int again = KBD_MAXWAIT;
- int c = PSM_RESEND; /* keep the compiler happy */
-
- while (retry-- > 0) {
- empty_both_buffers(p, 10);
- if (!write_aux_command(p, PSMC_RESET_DEV))
- continue;
- emptyq(&kbdcp(p)->aux);
- /* NOTE: Compaq Armada laptops require extra delay here. XXX */
- for (again = KBD_MAXWAIT; again > 0; --again) {
- DELAY(KBD_RESETDELAY*1000);
- c = read_aux_data_no_wait(p);
- if (c != -1)
- break;
- }
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: RESET_AUX return code:%04x\n", c);
- if (c == PSM_ACK) /* aux dev is about to reset... */
- break;
- }
- if (retry < 0)
- return FALSE;
-
- for (again = KBD_MAXWAIT; again > 0; --again) {
- /* wait awhile, well, quite looooooooooooong */
- DELAY(KBD_RESETDELAY*1000);
- c = read_aux_data_no_wait(p); /* RESET_DONE/RESET_FAIL */
- if (c != -1) /* wait again if the controller is not ready */
- break;
- }
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: RESET_AUX status:%04x\n", c);
- if (c != PSM_RESET_DONE) /* reset status */
- return FALSE;
-
- c = read_aux_data(p); /* device ID */
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: RESET_AUX ID:%04x\n", c);
- /* NOTE: we could check the device ID now, but leave it later... */
- return TRUE;
-}
-
-/* controller diagnostics and setup */
-
-int
-test_controller(KBDC p)
-{
- int retry = KBD_MAXRETRY;
- int again = KBD_MAXWAIT;
- int c = KBD_DIAG_FAIL;
-
- while (retry-- > 0) {
- empty_both_buffers(p, 10);
- if (write_controller_command(p, KBDC_DIAGNOSE))
- break;
- }
- if (retry < 0)
- return FALSE;
-
- emptyq(&kbdcp(p)->kbd);
- while (again-- > 0) {
- /* wait awhile */
- DELAY(KBD_RESETDELAY*1000);
- c = read_controller_data(p); /* DIAG_DONE/DIAG_FAIL */
- if (c != -1) /* wait again if the controller is not ready */
- break;
- }
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: DIAGNOSE status:%04x\n", c);
- return (c == KBD_DIAG_DONE);
-}
-
-int
-test_kbd_port(KBDC p)
-{
- int retry = KBD_MAXRETRY;
- int again = KBD_MAXWAIT;
- int c = -1;
-
- while (retry-- > 0) {
- empty_both_buffers(p, 10);
- if (write_controller_command(p, KBDC_TEST_KBD_PORT))
- break;
- }
- if (retry < 0)
- return FALSE;
-
- emptyq(&kbdcp(p)->kbd);
- while (again-- > 0) {
- c = read_controller_data(p);
- if (c != -1) /* try again if the controller is not ready */
- break;
- }
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: TEST_KBD_PORT status:%04x\n", c);
- return c;
-}
-
-int
-test_aux_port(KBDC p)
-{
- int retry = KBD_MAXRETRY;
- int again = KBD_MAXWAIT;
- int c = -1;
-
- while (retry-- > 0) {
- empty_both_buffers(p, 10);
- if (write_controller_command(p, KBDC_TEST_AUX_PORT))
- break;
- }
- if (retry < 0)
- return FALSE;
-
- emptyq(&kbdcp(p)->kbd);
- while (again-- > 0) {
- c = read_controller_data(p);
- if (c != -1) /* try again if the controller is not ready */
- break;
- }
- if (verbose || bootverbose)
- log(LOG_DEBUG, "kbdc: TEST_AUX_PORT status:%04x\n", c);
- return c;
-}
-
-int
-kbdc_get_device_mask(KBDC p)
-{
- return kbdcp(p)->command_mask;
-}
-
-void
-kbdc_set_device_mask(KBDC p, int mask)
-{
- kbdcp(p)->command_mask =
- mask & (KBD_KBD_CONTROL_BITS | KBD_AUX_CONTROL_BITS);
-}
-
-int
-get_controller_command_byte(KBDC p)
-{
- if (kbdcp(p)->command_byte != -1)
- return kbdcp(p)->command_byte;
- if (!write_controller_command(p, KBDC_GET_COMMAND_BYTE))
- return -1;
- emptyq(&kbdcp(p)->kbd);
- kbdcp(p)->command_byte = read_controller_data(p);
- return kbdcp(p)->command_byte;
-}
-
-int
-set_controller_command_byte(KBDC p, int mask, int command)
-{
- if (get_controller_command_byte(p) == -1)
- return FALSE;
-
- command = (kbdcp(p)->command_byte & ~mask) | (command & mask);
- if (command & KBD_DISABLE_KBD_PORT) {
- if (!write_controller_command(p, KBDC_DISABLE_KBD_PORT))
- return FALSE;
- }
- if (!write_controller_command(p, KBDC_SET_COMMAND_BYTE))
- return FALSE;
- if (!write_controller_data(p, command))
- return FALSE;
- kbdcp(p)->command_byte = command;
-
- if (verbose)
- log(LOG_DEBUG, "kbdc: new command byte:%04x (set_controller...)\n",
- command);
-
- return TRUE;
-}
diff --git a/sys/dev/kbd/atkbdcreg.h b/sys/dev/kbd/atkbdcreg.h
deleted file mode 100644
index 81b0ad35dce9d..0000000000000
--- a/sys/dev/kbd/atkbdcreg.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/*-
- * Copyright (c) 1996-1999
- * Kazutaka YOKOTA (yokota@zodiac.mech.utsunomiya-u.ac.jp)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: $
- * from kbdio.h,v 1.8 1998/09/25 11:55:46 yokota Exp
- */
-
-#ifndef _DEV_KBD_ATKBDCREG_H_
-#define _DEV_KBD_ATKBDCREG_H_
-
-/* constants */
-
-/* I/O ports */
-#define KBD_STATUS_PORT 4 /* status port, read */
-#define KBD_COMMAND_PORT 4 /* controller command port, write */
-#define KBD_DATA_PORT 0 /* data port, read/write
- * also used as keyboard command
- * and mouse command port
- */
-
-/* controller commands (sent to KBD_COMMAND_PORT) */
-#define KBDC_SET_COMMAND_BYTE 0x0060
-#define KBDC_GET_COMMAND_BYTE 0x0020
-#define KBDC_WRITE_TO_AUX 0x00d4
-#define KBDC_DISABLE_AUX_PORT 0x00a7
-#define KBDC_ENABLE_AUX_PORT 0x00a8
-#define KBDC_TEST_AUX_PORT 0x00a9
-#define KBDC_DIAGNOSE 0x00aa
-#define KBDC_TEST_KBD_PORT 0x00ab
-#define KBDC_DISABLE_KBD_PORT 0x00ad
-#define KBDC_ENABLE_KBD_PORT 0x00ae
-
-/* controller command byte (set by KBDC_SET_COMMAND_BYTE) */
-#define KBD_TRANSLATION 0x0040
-#define KBD_RESERVED_BITS 0x0004
-#define KBD_OVERRIDE_KBD_LOCK 0x0008
-#define KBD_ENABLE_KBD_PORT 0x0000
-#define KBD_DISABLE_KBD_PORT 0x0010
-#define KBD_ENABLE_AUX_PORT 0x0000
-#define KBD_DISABLE_AUX_PORT 0x0020
-#define KBD_ENABLE_AUX_INT 0x0002
-#define KBD_DISABLE_AUX_INT 0x0000
-#define KBD_ENABLE_KBD_INT 0x0001
-#define KBD_DISABLE_KBD_INT 0x0000
-#define KBD_KBD_CONTROL_BITS (KBD_DISABLE_KBD_PORT | KBD_ENABLE_KBD_INT)
-#define KBD_AUX_CONTROL_BITS (KBD_DISABLE_AUX_PORT | KBD_ENABLE_AUX_INT)
-
-/* keyboard device commands (sent to KBD_DATA_PORT) */
-#define KBDC_RESET_KBD 0x00ff
-#define KBDC_ENABLE_KBD 0x00f4
-#define KBDC_DISABLE_KBD 0x00f5
-#define KBDC_SET_DEFAULTS 0x00f6
-#define KBDC_SEND_DEV_ID 0x00f2
-#define KBDC_SET_LEDS 0x00ed
-#define KBDC_ECHO 0x00ee
-#define KBDC_SET_SCANCODE_SET 0x00f0
-#define KBDC_SET_TYPEMATIC 0x00f3
-
-/* aux device commands (sent to KBD_DATA_PORT) */
-#define PSMC_RESET_DEV 0x00ff
-#define PSMC_ENABLE_DEV 0x00f4
-#define PSMC_DISABLE_DEV 0x00f5
-#define PSMC_SET_DEFAULTS 0x00f6
-#define PSMC_SEND_DEV_ID 0x00f2
-#define PSMC_SEND_DEV_STATUS 0x00e9
-#define PSMC_SEND_DEV_DATA 0x00eb
-#define PSMC_SET_SCALING11 0x00e6
-#define PSMC_SET_SCALING21 0x00e7
-#define PSMC_SET_RESOLUTION 0x00e8
-#define PSMC_SET_STREAM_MODE 0x00ea
-#define PSMC_SET_REMOTE_MODE 0x00f0
-#define PSMC_SET_SAMPLING_RATE 0x00f3
-
-/* PSMC_SET_RESOLUTION argument */
-#define PSMD_RES_LOW 0 /* typically 25ppi */
-#define PSMD_RES_MEDIUM_LOW 1 /* typically 50ppi */
-#define PSMD_RES_MEDIUM_HIGH 2 /* typically 100ppi (default) */
-#define PSMD_RES_HIGH 3 /* typically 200ppi */
-#define PSMD_MAX_RESOLUTION PSMD_RES_HIGH
-
-/* PSMC_SET_SAMPLING_RATE */
-#define PSMD_MAX_RATE 255 /* FIXME: not sure if it's possible */
-
-/* status bits (KBD_STATUS_PORT) */
-#define KBDS_BUFFER_FULL 0x0021
-#define KBDS_ANY_BUFFER_FULL 0x0001
-#define KBDS_KBD_BUFFER_FULL 0x0001
-#define KBDS_AUX_BUFFER_FULL 0x0021
-#define KBDS_INPUT_BUFFER_FULL 0x0002
-
-/* return code */
-#define KBD_ACK 0x00fa
-#define KBD_RESEND 0x00fe
-#define KBD_RESET_DONE 0x00aa
-#define KBD_RESET_FAIL 0x00fc
-#define KBD_DIAG_DONE 0x0055
-#define KBD_DIAG_FAIL 0x00fd
-#define KBD_ECHO 0x00ee
-
-#define PSM_ACK 0x00fa
-#define PSM_RESEND 0x00fe
-#define PSM_RESET_DONE 0x00aa
-#define PSM_RESET_FAIL 0x00fc
-
-/* aux device ID */
-#define PSM_MOUSE_ID 0
-#define PSM_BALLPOINT_ID 2
-#define PSM_INTELLI_ID 3
-
-#ifdef KERNEL
-
-#define ATKBDC_DRIVER_NAME "atkbdc"
-
-/*
- * driver specific options: the following options may be set by
- * `options' statements in the kernel configuration file.
- */
-
-/* retry count */
-#ifndef KBD_MAXRETRY
-#define KBD_MAXRETRY 3
-#endif
-
-/* timing parameters */
-#ifndef KBD_RESETDELAY
-#define KBD_RESETDELAY 200 /* wait 200msec after kbd/mouse reset */
-#endif
-#ifndef KBD_MAXWAIT
-#define KBD_MAXWAIT 5 /* wait 5 times at most after reset */
-#endif
-
-/* I/O recovery time */
-#define KBDC_DELAYTIME 20
-#define KBDD_DELAYTIME 7
-
-/* debug option */
-#ifndef KBDIO_DEBUG
-#define KBDIO_DEBUG 0
-#endif
-
-/* end of driver specific options */
-
-/* types/structures */
-
-#define KBDQ_BUFSIZE 32
-
-typedef struct _kqueue {
- int head;
- int tail;
- unsigned char q[KBDQ_BUFSIZE];
-#if KBDIO_DEBUG >= 2
- int call_count;
- int qcount;
- int max_qcount;
-#endif
-} kqueue;
-
-typedef struct atkbdc_softc {
- int port; /* base port address */
- int command_byte; /* current command byte value */
- int command_mask; /* command byte mask bits for kbd/aux devices */
- int lock; /* FIXME: XXX not quite a semaphore... */
- kqueue kbd; /* keyboard data queue */
- kqueue aux; /* auxiliary data queue */
-} atkbdc_softc_t;
-
-enum kbdc_device_ivar {
- KBDC_IVAR_PORT,
- KBDC_IVAR_IRQ,
- KBDC_IVAR_FLAGS,
-};
-
-typedef caddr_t KBDC;
-
-/* function prototypes */
-
-atkbdc_softc_t *atkbdc_get_softc(int unit);
-int atkbdc_probe_unit(atkbdc_softc_t *sc, int unit, int port);
-int atkbdc_configure(void);
-
-KBDC kbdc_open(int port);
-int kbdc_lock(KBDC kbdc, int lock);
-int kbdc_data_ready(KBDC kbdc);
-
-int write_controller_command(KBDC kbdc,int c);
-int write_controller_data(KBDC kbdc,int c);
-
-int write_kbd_command(KBDC kbdc,int c);
-int write_aux_command(KBDC kbdc,int c);
-int send_kbd_command(KBDC kbdc,int c);
-int send_aux_command(KBDC kbdc,int c);
-int send_kbd_command_and_data(KBDC kbdc,int c,int d);
-int send_aux_command_and_data(KBDC kbdc,int c,int d);
-
-int read_controller_data(KBDC kbdc);
-int read_kbd_data(KBDC kbdc);
-int read_kbd_data_no_wait(KBDC kbdc);
-int read_aux_data(KBDC kbdc);
-int read_aux_data_no_wait(KBDC kbdc);
-
-void empty_kbd_buffer(KBDC kbdc, int t);
-void empty_aux_buffer(KBDC kbdc, int t);
-void empty_both_buffers(KBDC kbdc, int t);
-
-int reset_kbd(KBDC kbdc);
-int reset_aux_dev(KBDC kbdc);
-
-int test_controller(KBDC kbdc);
-int test_kbd_port(KBDC kbdc);
-int test_aux_port(KBDC kbdc);
-
-int kbdc_get_device_mask(KBDC kbdc);
-void kbdc_set_device_mask(KBDC kbdc, int mask);
-
-int get_controller_command_byte(KBDC kbdc);
-int set_controller_command_byte(KBDC kbdc, int command, int flag);
-
-#endif /* KERNEL */
-
-#endif /* !_DEV_KBD_ATKBDCREG_H_ */
diff --git a/sys/dev/kbd/atkbdreg.h b/sys/dev/kbd/atkbdreg.h
deleted file mode 100644
index 9f20eeea5f3d7..0000000000000
--- a/sys/dev/kbd/atkbdreg.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: $
- */
-
-#ifndef _DEV_KBD_ATKBDREG_H_
-#define _DEV_KBD_ATKBDREG_H_
-
-#define ATKBD_DRIVER_NAME "atkbd"
-#define ATKBD_UNIT(dev) minor(dev)
-#define ATKBD_MKMINOR(unit) (unit)
-
-/* device configuration flags (atkbdprobe, atkbdattach) */
-#define KB_CONF_FAIL_IF_NO_KBD (1 << 0) /* don't install if no kbd is found */
-#define KB_CONF_NO_RESET (1 << 1) /* don't reset the keyboard */
-#define KB_CONF_ALT_SCANCODESET (1 << 2) /* assume the XT type keyboard */
-
-#ifdef KERNEL
-
-typedef struct atkbd_softc {
- short flags;
-#define ATKBD_ATTACHED (1 << 0)
- keyboard_t *kbd;
-#ifdef KBD_INSTALL_CDEV
- genkbd_softc_t gensc;
-#endif
-} atkbd_softc_t;
-
-#ifdef __i386__
-atkbd_softc_t *atkbd_get_softc(int unit);
-#endif
-int atkbd_probe_unit(int unit, atkbd_softc_t *sc,
- int port, int irq, int flags);
-int atkbd_attach_unit(int unit, atkbd_softc_t *sc);
-
-#endif /* KERNEL */
-
-#endif /* !_DEV_KBD_ATKBDREG_H_ */
diff --git a/sys/dev/kbd/kbd.c b/sys/dev/kbd/kbd.c
deleted file mode 100644
index e8c638327f909..0000000000000
--- a/sys/dev/kbd/kbd.c
+++ /dev/null
@@ -1,1198 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: kbd.c,v 1.2 1999/01/12 10:35:58 yokota Exp $
- */
-
-#include "kbd.h"
-#include "opt_kbd.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/conf.h>
-#include <sys/proc.h>
-#include <sys/tty.h>
-#include <sys/poll.h>
-#include <sys/vnode.h>
-#include <sys/uio.h>
-
-#include <machine/console.h>
-
-#include <dev/kbd/kbdreg.h>
-
-/* local arrays */
-
-/*
- * We need at least one entry each in order to initialize a keyboard
- * for the kernel console. The arrays will be increased dynamically
- * when necessary.
- */
-
-static int keyboards = 1;
-static keyboard_t *kbd_ini;
-static keyboard_t **keyboard = &kbd_ini;
-static keyboard_switch_t *kbdsw_ini;
- keyboard_switch_t **kbdsw = &kbdsw_ini;
-
-#ifdef KBD_INSTALL_CDEV
-
-#define ARRAY_DELTA 4
-
-static struct cdevsw *kbdcdevsw_ini;
-static struct cdevsw **kbdcdevsw = &kbdcdevsw_ini;
-
-static void
-kbd_realloc_array(void)
-{
- keyboard_t **new_kbd;
- keyboard_switch_t **new_kbdsw;
- struct cdevsw **new_cdevsw;
- int newsize;
- int s;
-
- s = spltty();
- newsize = ((keyboards + ARRAY_DELTA)/ARRAY_DELTA)*ARRAY_DELTA;
- new_kbd = malloc(sizeof(*new_kbd)*newsize, M_DEVBUF, M_NOWAIT);
- new_kbdsw = malloc(sizeof(*new_kbdsw)*newsize, M_DEVBUF, M_NOWAIT);
- new_cdevsw = malloc(sizeof(*new_cdevsw)*newsize, M_DEVBUF, M_NOWAIT);
- bzero(new_kbd, sizeof(*new_kbd)*newsize);
- bzero(new_kbdsw, sizeof(*new_kbdsw)*newsize);
- bzero(new_cdevsw, sizeof(*new_cdevsw)*newsize);
- bcopy(keyboard, new_kbd, sizeof(*keyboard)*keyboards);
- bcopy(kbdsw, new_kbdsw, sizeof(*kbdsw)*keyboards);
- bcopy(kbdcdevsw, new_cdevsw, sizeof(*kbdcdevsw)*keyboards);
- if (keyboards > 1) {
- free(keyboard, M_DEVBUF);
- free(kbdsw, M_DEVBUF);
- free(kbdcdevsw, M_DEVBUF);
- }
- keyboard = new_kbd;
- kbdsw = new_kbdsw;
- kbdcdevsw = new_cdevsw;
- keyboards = newsize;
- splx(s);
-
- if (bootverbose)
- printf("kbd: new array size %d\n", keyboards);
-}
-
-#endif /* KBD_INSTALL_CDEV */
-
-/*
- * Low-level keyboard driver functions
- * Keyboard subdrivers, such as the AT keyboard driver and the USB keyboard
- * driver, call these functions to initialize the keyboard_t structure
- * and register it to the virtual keyboard driver `kbd'.
- */
-
-/* initialize the keyboard_t structure */
-void
-kbd_init_struct(keyboard_t *kbd, char *name, int type, int unit, int config,
- int port, int port_size)
-{
- kbd->kb_flags = KB_NO_DEVICE; /* device has not been found */
- kbd->kb_name = name;
- kbd->kb_type = type;
- kbd->kb_unit = unit;
- kbd->kb_config = config;
- kbd->kb_led = 0; /* unknown */
- kbd->kb_io_base = port;
- kbd->kb_io_size = port_size;
- kbd->kb_data = NULL;
- kbd->kb_keymap = NULL;
- kbd->kb_accentmap = NULL;
- kbd->kb_fkeytab = NULL;
- kbd->kb_fkeytab_size = 0;
-}
-
-void
-kbd_set_maps(keyboard_t *kbd, keymap_t *keymap, accentmap_t *accmap,
- fkeytab_t *fkeymap, int fkeymap_size)
-{
- kbd->kb_keymap = keymap;
- kbd->kb_accentmap = accmap;
- kbd->kb_fkeytab = fkeymap;
- kbd->kb_fkeytab_size = fkeymap_size;
-}
-
-/* register a keyboard and associate it with a function table */
-int
-kbd_register(keyboard_t *kbd)
-{
- keyboard_driver_t **list;
- keyboard_driver_t *p;
- int index;
-
- for (index = 0; index < keyboards; ++index) {
- if (keyboard[index] == NULL)
- break;
- }
- if (index >= keyboards)
- return -1;
-
- kbd->kb_index = index;
- KBD_UNBUSY(kbd);
- KBD_VALID(kbd);
- kbd->kb_active = 0; /* disabled until someone calls kbd_enable() */
- kbd->kb_token = NULL;
- kbd->kb_callback.kc_func = NULL;
- kbd->kb_callback.kc_arg = NULL;
-
- list = (keyboard_driver_t **)kbddriver_set.ls_items;
- while ((p = *list++) != NULL) {
- if (strcmp(p->name, kbd->kb_name) == 0) {
- keyboard[index] = kbd;
- kbdsw[index] = p->kbdsw;
- return index;
- }
- }
-
- return -1;
-}
-
-int
-kbd_unregister(keyboard_t *kbd)
-{
- int error;
- int s;
-
- if ((kbd->kb_index < 0) || (kbd->kb_index >= keyboards))
- return ENOENT;
- if (keyboard[kbd->kb_index] != kbd)
- return ENOENT;
-
- s = spltty();
- if (KBD_IS_BUSY(kbd)) {
- error = (*kbd->kb_callback.kc_func)(kbd, KBDIO_UNLOADING,
- kbd->kb_callback.kc_arg);
- if (error) {
- splx(s);
- return error;
- }
- if (KBD_IS_BUSY(kbd)) {
- splx(s);
- return EBUSY;
- }
- }
- KBD_INVALID(kbd);
- keyboard[kbd->kb_index] = NULL;
- kbdsw[kbd->kb_index] = NULL;
-
- splx(s);
- return 0;
-}
-
-/* find a funciton table by the driver name */
-keyboard_switch_t
-*kbd_get_switch(char *driver)
-{
- keyboard_driver_t **list;
- keyboard_driver_t *p;
-
- list = (keyboard_driver_t **)kbddriver_set.ls_items;
- while ((p = *list++) != NULL) {
- if (strcmp(p->name, driver) == 0)
- return p->kbdsw;
- }
-
- return NULL;
-}
-
-/*
- * Keyboard client functions
- * Keyboard clients, such as the console driver `syscons' and the keyboard
- * cdev driver, use these functions to claim and release a keyboard for
- * exclusive use.
- */
-
-/* find the keyboard specified by a driver name and a unit number */
-int
-kbd_find_keyboard(char *driver, int unit)
-{
- int i;
-
- for (i = 0; i < keyboards; ++i) {
- if (keyboard[i] == NULL)
- continue;
- if (!KBD_IS_VALID(keyboard[i]))
- continue;
- if (strcmp("*", driver) && strcmp(keyboard[i]->kb_name, driver))
- continue;
- if ((unit != -1) && (keyboard[i]->kb_unit != unit))
- continue;
- return i;
- }
- return -1;
-}
-
-/* allocate a keyboard */
-int
-kbd_allocate(char *driver, int unit, void *id, kbd_callback_func_t *func,
- void *arg)
-{
- int index;
- int s;
-
- if (func == NULL)
- return -1;
-
- s = spltty();
- index = kbd_find_keyboard(driver, unit);
- if (index >= 0) {
- if (KBD_IS_BUSY(keyboard[index])) {
- splx(s);
- return -1;
- }
- keyboard[index]->kb_token = id;
- KBD_BUSY(keyboard[index]);
- keyboard[index]->kb_callback.kc_func = func;
- keyboard[index]->kb_callback.kc_arg = arg;
- (*kbdsw[index]->clear_state)(keyboard[index]);
- }
- splx(s);
- return index;
-}
-
-int
-kbd_release(keyboard_t *kbd, void *id)
-{
- int error;
- int s;
-
- s = spltty();
- if (!KBD_IS_VALID(kbd) || !KBD_IS_BUSY(kbd)) {
- error = EINVAL;
- } else if (kbd->kb_token != id) {
- error = EPERM;
- } else {
- kbd->kb_token = NULL;
- KBD_UNBUSY(kbd);
- kbd->kb_callback.kc_func = NULL;
- kbd->kb_callback.kc_arg = NULL;
- (*kbdsw[kbd->kb_index]->clear_state)(kbd);
- error = 0;
- }
- splx(s);
- return error;
-}
-
-int
-kbd_change_callback(keyboard_t *kbd, void *id, kbd_callback_func_t *func,
- void *arg)
-{
- int error;
- int s;
-
- s = spltty();
- if (!KBD_IS_VALID(kbd) || !KBD_IS_BUSY(kbd)) {
- error = EINVAL;
- } else if (kbd->kb_token != id) {
- error = EPERM;
- } else if (func == NULL) {
- error = EINVAL;
- } else {
- kbd->kb_callback.kc_func = func;
- kbd->kb_callback.kc_arg = arg;
- error = 0;
- }
- splx(s);
- return error;
-}
-
-/* get a keyboard structure */
-keyboard_t
-*kbd_get_keyboard(int index)
-{
- if ((index < 0) || (index >= keyboards))
- return NULL;
- if (!KBD_IS_VALID(keyboard[index]))
- return NULL;
- return keyboard[index];
-}
-
-/*
- * The back door for the console driver; configure keyboards
- * This function is for the kernel console to initialize keyboards
- * at very early stage.
- */
-
-int
-kbd_configure(int flags)
-{
- keyboard_driver_t **list;
- keyboard_driver_t *p;
-
- list = (keyboard_driver_t **)kbddriver_set.ls_items;
- while ((p = *list++) != NULL) {
- if (p->configure != NULL)
- (*p->configure)(flags);
- }
-
- return 0;
-}
-
-#ifdef KBD_INSTALL_CDEV
-
-/*
- * Virtual keyboard cdev driver functions
- * The virtual keyboard driver dispatches driver functions to
- * appropriate subdrivers.
- */
-
-#define KBD_UNIT(dev) minor(dev)
-
-static d_open_t kbdopen;
-static d_close_t kbdclose;
-static d_read_t kbdread;
-static d_write_t kbdwrite;
-static d_ioctl_t kbdioctl;
-static d_reset_t kbdreset;
-static d_devtotty_t kbddevtotty;
-static d_poll_t kbdpoll;
-static d_mmap_t kbdmmap;
-
-#define CDEV_MAJOR 112
-
-static struct cdevsw kbd_cdevsw = {
- kbdopen, kbdclose, kbdread, kbdwrite, /* ??? */
- kbdioctl, nullstop, kbdreset, kbddevtotty,
- kbdpoll, kbdmmap, nostrategy, "kbd",
- NULL, -1, nodump, nopsize,
-};
-
-static void
-vkbdattach(void *arg)
-{
- static int kbd_devsw_installed = FALSE;
- dev_t dev;
-
- if (!kbd_devsw_installed) {
- dev = makedev(CDEV_MAJOR, 0);
- cdevsw_add(&dev, &kbd_cdevsw, NULL);
- kbd_devsw_installed = TRUE;
- }
-}
-
-PSEUDO_SET(vkbdattach, kbd);
-
-int
-kbd_attach(dev_t dev, keyboard_t *kbd, struct cdevsw *cdevsw)
-{
- int s;
-
- if (kbd->kb_index >= keyboards)
- return EINVAL;
- if (keyboard[kbd->kb_index] != kbd)
- return EINVAL;
-
- s = spltty();
- kbd->kb_minor = minor(dev);
- kbdcdevsw[kbd->kb_index] = cdevsw;
- splx(s);
-
- /* XXX: DEVFS? */
-
- if (kbd->kb_index + 1 >= keyboards)
- kbd_realloc_array();
-
- printf("kbd%d at %s%d\n", kbd->kb_index, kbd->kb_name, kbd->kb_unit);
- return 0;
-}
-
-int
-kbd_detach(dev_t dev, keyboard_t *kbd, struct cdevsw *cdevsw)
-{
- int s;
-
- if (kbd->kb_index >= keyboards)
- return EINVAL;
- if (keyboard[kbd->kb_index] != kbd)
- return EINVAL;
- if (kbdcdevsw[kbd->kb_index] != cdevsw)
- return EINVAL;
-
- s = spltty();
- (*kbdsw[kbd->kb_index]->term)(kbd);
- kbdcdevsw[kbd->kb_index] = NULL;
- splx(s);
- return 0;
-}
-
-static int
-kbdopen(dev_t dev, int flag, int mode, struct proc *p)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (unit >= keyboards)
- return ENXIO;
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- if (KBD_IS_BUSY(keyboard[unit]))
- return EBUSY;
- return (*kbdcdevsw[unit]->d_open)(makedev(0, keyboard[unit]->kb_minor),
- flag, mode, p);
-}
-
-static int
-kbdclose(dev_t dev, int flag, int mode, struct proc *p)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_close)(makedev(0, keyboard[unit]->kb_minor),
- flag, mode, p);
-}
-
-static int
-kbdread(dev_t dev, struct uio *uio, int flag)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_read)(makedev(0, keyboard[unit]->kb_minor),
- uio, flag);
-}
-
-static int
-kbdwrite(dev_t dev, struct uio *uio, int flag)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_write)(makedev(0, keyboard[unit]->kb_minor),
- uio, flag);
-}
-
-static int
-kbdioctl(dev_t dev, u_long cmd, caddr_t arg, int flag, struct proc *p)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_ioctl)(makedev(0, keyboard[unit]->kb_minor),
- cmd, arg, flag, p);
-}
-
-static int
-kbdreset(dev_t dev)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_reset)(makedev(0, keyboard[unit]->kb_minor));
-}
-
-static struct tty
-*kbddevtotty(dev_t dev)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return NULL;
- return (*kbdcdevsw[unit]->d_devtotty)(makedev(0, keyboard[unit]->kb_minor));
-}
-
-static int
-kbdpoll(dev_t dev, int event, struct proc *p)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_poll)(makedev(0, keyboard[unit]->kb_minor),
- event, p);
-}
-
-static int
-kbdmmap(dev_t dev, vm_offset_t offset, int nprot)
-{
- int unit;
-
- unit = KBD_UNIT(dev);
- if (kbdcdevsw[unit] == NULL)
- return ENXIO;
- return (*kbdcdevsw[unit]->d_mmap)(makedev(0, keyboard[unit]->kb_minor),
- offset, nprot);
-}
-
-/*
- * Generic keyboard cdev driver functions
- * Keyboard subdrivers may call these functions to implement common
- * driver functions.
- */
-
-#define KB_QSIZE 512
-#define KB_BUFSIZE 64
-
-static kbd_callback_func_t genkbd_event;
-
-int
-genkbdopen(genkbd_softc_t *sc, keyboard_t *kbd, int mode, int flag,
- struct proc *p)
-{
- int s;
- int i;
-
- s = spltty();
- if (!KBD_IS_VALID(kbd)) {
- splx(s);
- return ENXIO;
- }
- i = kbd_allocate(kbd->kb_name, kbd->kb_unit, sc,
- genkbd_event, (void *)sc);
- if (i < 0) {
- splx(s);
- return EBUSY;
- }
- /* assert(i == kbd->kb_index) */
- /* assert(kbd == kbd_get_keyboard(i)) */
-
- /*
- * NOTE: even when we have successfully claimed a keyboard,
- * the device may still be missing (!KBD_HAS_DEVICE(kbd)).
- */
-
-#if 0
- bzero(&sc->gkb_q, sizeof(sc->gkb_q));
-#endif
- clist_alloc_cblocks(&sc->gkb_q, KB_QSIZE, KB_QSIZE/2); /* XXX */
- sc->gkb_rsel.si_flags = 0;
- sc->gkb_rsel.si_pid = 0;
- splx(s);
-
- return 0;
-}
-
-int
-genkbdclose(genkbd_softc_t *sc, keyboard_t *kbd, int mode, int flag,
- struct proc *p)
-{
- int s;
-
- /*
- * NOTE: the device may have already become invalid.
- * !KBD_IS_VALID(kbd)
- */
- s = spltty();
- kbd_release(kbd, (void *)sc);
-#if 0
- clist_free_cblocks(&sc->gkb_q);
-#endif
- splx(s);
-
- return 0;
-}
-
-int
-genkbdread(genkbd_softc_t *sc, keyboard_t *kbd, struct uio *uio, int flag)
-{
- u_char buffer[KB_BUFSIZE];
- int len;
- int error;
- int s;
-
- /* wait for input */
- s = spltty();
- while (sc->gkb_q.c_cc == 0) {
- if (!KBD_IS_VALID(kbd)) {
- splx(s);
- return EIO;
- }
- if (flag & IO_NDELAY) {
- splx(s);
- return EWOULDBLOCK;
- }
- sc->gkb_flags |= KB_ASLEEP;
- error = tsleep((caddr_t)sc, PZERO | PCATCH, "kbdrea", 0);
- if (error) {
- sc->gkb_flags &= ~KB_ASLEEP;
- splx(s);
- return error;
- }
- }
- splx(s);
-
- /* copy as much input as possible */
- error = 0;
- while (uio->uio_resid > 0) {
- len = imin(uio->uio_resid, sizeof(buffer));
- len = q_to_b(&sc->gkb_q, buffer, len);
- if (len <= 0)
- break;
- error = uiomove(buffer, len, uio);
- if (error)
- break;
- }
-
- return error;
-}
-
-int
-genkbdwrite(genkbd_softc_t *sc, keyboard_t *kbd, struct uio *uio, int flag)
-{
- if (!KBD_IS_VALID(kbd))
- return ENXIO;
- return ENODEV;
-}
-
-int
-genkbdioctl(genkbd_softc_t *sc, keyboard_t *kbd, u_long cmd, caddr_t arg,
- int flag, struct proc *p)
-{
- int error;
-
- if (kbd == NULL) /* XXX */
- return ENXIO;
- if (!KBD_IS_VALID(kbd))
- return ENXIO;
- error = (*kbdsw[kbd->kb_index]->ioctl)(kbd, cmd, arg);
- if (error == ENOIOCTL)
- error = ENODEV;
- return error;
-}
-
-int
-genkbdpoll(genkbd_softc_t *sc, keyboard_t *kbd, int events, struct proc *p)
-{
- int revents;
- int s;
-
- revents = 0;
- s = spltty();
- if (events & (POLLIN | POLLRDNORM)) {
- if ((sc->gkb_q.c_cc > 0) || !KBD_IS_VALID(kbd))
- revents |= (POLLIN | POLLRDNORM);
- else
- selrecord(p, &sc->gkb_rsel);
- }
- splx(s);
- return revents;
-}
-
-static int
-genkbd_event(keyboard_t *kbd, int event, void *arg)
-{
- genkbd_softc_t *sc;
- size_t len;
- u_char *cp;
- int mode;
- int c;
-
- /* assert(KBD_IS_VALID(kbd)) */
- sc = (genkbd_softc_t *)arg;
-
- switch (event) {
- case KBDIO_KEYINPUT:
- break;
- case KBDIO_UNLOADING:
- /* the keyboard is going... */
- kbd_release(kbd, (void *)sc);
- return 0;
- default:
- return EINVAL;
- }
-
- /* obtain the current key input mode */
- if ((*kbdsw[kbd->kb_index]->ioctl)(kbd, KDGKBMODE, (caddr_t)&mode))
- mode = K_XLATE;
-
- /* read all pending input */
- while ((*kbdsw[kbd->kb_index]->check_char)(kbd)) {
- c = (*kbdsw[kbd->kb_index]->read_char)(kbd, FALSE);
- if (c == NOKEY)
- continue;
- if (c == ERRKEY) /* XXX: ring bell? */
- continue;
- if (!KBD_IS_BUSY(kbd))
- /* the device is not open, discard the input */
- continue;
-
- /* store the byte as is for K_RAW and K_CODE modes */
- if (mode != K_XLATE) {
- putc(KEYCHAR(c), &sc->gkb_q);
- continue;
- }
-
- /* K_XLATE */
- if (c & RELKEY) /* key release is ignored */
- continue;
-
- /* process special keys; most of them are just ignored... */
- if (c & SPCLKEY) {
- switch (KEYCHAR(c)) {
- /* locking keys */
- case NLK: case CLK: case SLK: case ALK:
- /* shift keys */
- case LSH: case RSH: case LCTR: case RCTR:
- case LALT: case RALT: case ASH: case META:
- /* other special keys */
- case NOP: case SPSC: case RBT: case SUSP:
- case STBY: case DBG: case NEXT:
- /* ignore them... */
- continue;
- case BTAB: /* a backtab: ESC [ Z */
- putc(0x1b, &sc->gkb_q);
- putc('[', &sc->gkb_q);
- putc('Z', &sc->gkb_q);
- continue;
- }
- }
-
- /* normal chars, normal chars with the META, function keys */
- switch (KEYFLAGS(c)) {
- case 0: /* a normal char */
- putc(KEYCHAR(c), &sc->gkb_q);
- break;
- case MKEY: /* the META flag: prepend ESC */
- putc(0x1b, &sc->gkb_q);
- putc(KEYCHAR(c), &sc->gkb_q);
- break;
- case FKEY | SPCLKEY: /* a function key, return string */
- cp = (*kbdsw[kbd->kb_index]->get_fkeystr)(kbd,
- KEYCHAR(c), &len);
- if (cp != NULL) {
- while (len-- > 0)
- putc(*cp++, &sc->gkb_q);
- }
- break;
- }
- }
-
- /* wake up sleeping/polling processes */
- if (sc->gkb_q.c_cc > 0) {
- if (sc->gkb_flags & KB_ASLEEP) {
- sc->gkb_flags &= ~KB_ASLEEP;
- wakeup((caddr_t)sc);
- }
- selwakeup(&sc->gkb_rsel);
- }
-
- return 0;
-}
-
-#endif /* KBD_INSTALL_CDEV */
-
-/*
- * Generic low-level keyboard functions
- * The low-level functions in the keyboard subdriver may use these
- * functions.
- */
-
-int
-genkbd_commonioctl(keyboard_t *kbd, u_long cmd, caddr_t arg)
-{
- keyarg_t *keyp;
- fkeyarg_t *fkeyp;
- int s;
- int i;
-
- s = spltty();
- switch (cmd) {
-
- case KDGKBINFO: /* get keyboard information */
- ((keyboard_info_t *)arg)->kb_index = kbd->kb_index;
- i = imin(strlen(kbd->kb_name) + 1,
- sizeof(((keyboard_info_t *)arg)->kb_name));
- bcopy(kbd->kb_name, ((keyboard_info_t *)arg)->kb_name, i);
- ((keyboard_info_t *)arg)->kb_unit = kbd->kb_unit;
- ((keyboard_info_t *)arg)->kb_type = kbd->kb_type;
- ((keyboard_info_t *)arg)->kb_config = kbd->kb_config;
- ((keyboard_info_t *)arg)->kb_flags = kbd->kb_flags;
- break;
-
- case KDGKBTYPE: /* get keyboard type */
- *(int *)arg = kbd->kb_type;
- break;
-
- case GIO_KEYMAP: /* get keyboard translation table */
- bcopy(kbd->kb_keymap, arg, sizeof(*kbd->kb_keymap));
- break;
- case PIO_KEYMAP: /* set keyboard translation table */
- bzero(kbd->kb_accentmap, sizeof(*kbd->kb_accentmap));
- bcopy(arg, kbd->kb_keymap, sizeof(*kbd->kb_keymap));
- break;
-
- case GIO_KEYMAPENT: /* get keyboard translation table entry */
- keyp = (keyarg_t *)arg;
- if (keyp->keynum >= sizeof(kbd->kb_keymap->key)
- /sizeof(kbd->kb_keymap->key[0])) {
- splx(s);
- return EINVAL;
- }
- bcopy(&kbd->kb_keymap->key[keyp->keynum], &keyp->key,
- sizeof(keyp->key));
- break;
- case PIO_KEYMAPENT: /* set keyboard translation table entry */
- keyp = (keyarg_t *)arg;
- if (keyp->keynum >= sizeof(kbd->kb_keymap->key)
- /sizeof(kbd->kb_keymap->key[0])) {
- splx(s);
- return EINVAL;
- }
- bcopy(&keyp->key, &kbd->kb_keymap->key[keyp->keynum],
- sizeof(keyp->key));
- break;
-
- case GIO_DEADKEYMAP: /* get accent key translation table */
- bcopy(kbd->kb_accentmap, arg, sizeof(*kbd->kb_accentmap));
- break;
- case PIO_DEADKEYMAP: /* set accent key translation table */
- bcopy(arg, kbd->kb_accentmap, sizeof(*kbd->kb_accentmap));
- break;
-
- case GETFKEY: /* get functionkey string */
- fkeyp = (fkeyarg_t *)arg;
- if (fkeyp->keynum >= kbd->kb_fkeytab_size) {
- splx(s);
- return EINVAL;
- }
- bcopy(kbd->kb_fkeytab[fkeyp->keynum].str, fkeyp->keydef,
- kbd->kb_fkeytab[fkeyp->keynum].len);
- fkeyp->flen = kbd->kb_fkeytab[fkeyp->keynum].len;
- break;
- case SETFKEY: /* set functionkey string */
- fkeyp = (fkeyarg_t *)arg;
- if (fkeyp->keynum >= kbd->kb_fkeytab_size) {
- splx(s);
- return EINVAL;
- }
- kbd->kb_fkeytab[fkeyp->keynum].len = imin(fkeyp->flen, MAXFK);
- bcopy(fkeyp->keydef, kbd->kb_fkeytab[fkeyp->keynum].str,
- kbd->kb_fkeytab[fkeyp->keynum].len);
- break;
-
- default:
- splx(s);
- return ENOIOCTL;
- }
-
- splx(s);
- return 0;
-}
-
-/* get a pointer to the string associated with the given function key */
-u_char
-*genkbd_get_fkeystr(keyboard_t *kbd, int fkey, size_t *len)
-{
- if (kbd == NULL)
- return NULL;
- fkey -= F_FN;
- if (fkey > kbd->kb_fkeytab_size)
- return NULL;
- *len = kbd->kb_fkeytab[fkey].len;
- return kbd->kb_fkeytab[fkey].str;
-}
-
-/* diagnostic dump */
-static char
-*get_kbd_type_name(int type)
-{
- static struct {
- int type;
- char *name;
- } name_table[] = {
- { KB_84, "AT 84" },
- { KB_101, "AT 101/102" },
- { KB_OTHER, "generic" },
- };
- int i;
-
- for (i = 0; i < sizeof(name_table)/sizeof(name_table[0]); ++i) {
- if (type == name_table[i].type)
- return name_table[i].name;
- }
- return "unknown";
-}
-
-void
-genkbd_diag(keyboard_t *kbd, int level)
-{
- if (level > 0) {
- printf("kbd%d: %s%d, %s (%d), config:0x%x, flags:0x%x",
- kbd->kb_index, kbd->kb_name, kbd->kb_unit,
- get_kbd_type_name(kbd->kb_type), kbd->kb_type,
- kbd->kb_config, kbd->kb_flags);
- if (kbd->kb_io_base > 0)
- printf(", port:0x%x-0x%x", kbd->kb_io_base,
- kbd->kb_io_base + kbd->kb_io_size - 1);
- printf("\n");
- }
-}
-
-#define set_lockkey_state(k, s, l) \
- if (!((s) & l ## DOWN)) { \
- int i; \
- (s) |= l ## DOWN; \
- (s) ^= l ## ED; \
- i = (s) & LOCK_MASK; \
- (*kbdsw[(k)->kb_index]->ioctl)((k), KDSETLED, (caddr_t)&i); \
- }
-
-static u_int
-save_accent_key(keyboard_t *kbd, u_int key, int *accents)
-{
- int i;
-
- /* make an index into the accent map */
- i = key - F_ACC + 1;
- if ((i > kbd->kb_accentmap->n_accs)
- || (kbd->kb_accentmap->acc[i - 1].accchar == 0)) {
- /* the index is out of range or pointing to an empty entry */
- *accents = 0;
- return ERRKEY;
- }
-
- /*
- * If the same accent key has been hit twice, produce the accent char
- * itself.
- */
- if (i == *accents) {
- key = kbd->kb_accentmap->acc[i - 1].accchar;
- *accents = 0;
- return key;
- }
-
- /* remember the index and wait for the next key */
- *accents = i;
- return NOKEY;
-}
-
-static u_int
-make_accent_char(keyboard_t *kbd, u_int ch, int *accents)
-{
- struct acc_t *acc;
- int i;
-
- acc = &kbd->kb_accentmap->acc[*accents - 1];
- *accents = 0;
-
- /*
- * If the accent key is followed by the space key,
- * produce the accent char itself.
- */
- if (ch == ' ')
- return acc->accchar;
-
- /* scan the accent map */
- for (i = 0; i < NUM_ACCENTCHARS; ++i) {
- if (acc->map[i][0] == 0) /* end of table */
- break;
- if (acc->map[i][0] == ch)
- return acc->map[i][1];
- }
- /* this char cannot be accented... */
- return ERRKEY;
-}
-
-int
-genkbd_keyaction(keyboard_t *kbd, int keycode, int up, int *shiftstate,
- int *accents)
-{
- struct keyent_t *key;
- int state = *shiftstate;
- int action;
- int f;
- int i;
-
- f = state & (AGRS | ALKED);
- if ((f == AGRS1) || (f == AGRS2) || (f == ALKED))
- keycode += ALTGR_OFFSET;
- key = &kbd->kb_keymap->key[keycode];
- i = ((state & SHIFTS) ? 1 : 0)
- | ((state & CTLS) ? 2 : 0)
- | ((state & ALTS) ? 4 : 0);
- if (((key->flgs & FLAG_LOCK_C) && (state & CLKED))
- || ((key->flgs & FLAG_LOCK_N) && (state & NLKED)) )
- i ^= 1;
-
- action = key->map[i];
- if (up) { /* break: key released */
- if (key->spcl & (0x80 >> i)) {
- /* special keys */
- switch (action) {
- case LSH:
- state &= ~SHIFTS1;
- break;
- case RSH:
- state &= ~SHIFTS2;
- break;
- case LCTR:
- state &= ~CTLS1;
- break;
- case RCTR:
- state &= ~CTLS2;
- break;
- case LALT:
- state &= ~ALTS1;
- break;
- case RALT:
- state &= ~ALTS2;
- break;
- case ASH:
- state &= ~AGRS1;
- break;
- case META:
- state &= ~METAS1;
- break;
- case NLK:
- state &= ~NLKDOWN;
- break;
- case CLK:
-#ifndef PC98
- state &= ~CLKDOWN;
-#else
- state &= ~CLKED;
- i = state & LOCK_MASK;
- (*kbdsw[kbd->kb_index]->ioctl)(kbd, KDSETLED,
- (caddr_t)&i);
-#endif
- break;
- case SLK:
- state &= ~SLKDOWN;
- break;
- case ALK:
- state &= ~ALKDOWN;
- break;
- }
- *shiftstate = state;
- return (SPCLKEY | RELKEY | action);
- }
- /* release events of regular keys are not reported */
- return NOKEY;
- } else { /* make: key pressed */
- if (key->spcl & (0x80 >> i)) {
- /* special keys */
- switch (action) {
- /* LOCKING KEYS */
- case NLK:
- set_lockkey_state(kbd, state, NLK);
- break;
- case CLK:
-#ifndef PC98
- set_lockkey_state(kbd, state, CLK);
-#else
- state |= CLKED;
- i = state & LOCK_MASK;
- (*kbdsw[kbd->kb_index]->ioctl)(kbd, KDSETLED,
- (caddr_t)&i);
-#endif
- break;
- case SLK:
- set_lockkey_state(kbd, state, SLK);
- break;
- case ALK:
- set_lockkey_state(kbd, state, ALK);
- break;
- /* NON-LOCKING KEYS */
- case SPSC: case RBT: case SUSP: case STBY:
- case DBG: case NEXT:
- *accents = 0;
- break;
- case BTAB:
- *accents = 0;
- action |= BKEY;
- break;
- case LSH:
- state |= SHIFTS1;
- break;
- case RSH:
- state |= SHIFTS2;
- break;
- case LCTR:
- state |= CTLS1;
- break;
- case RCTR:
- state |= CTLS2;
- break;
- case LALT:
- state |= ALTS1;
- break;
- case RALT:
- state |= ALTS2;
- break;
- case ASH:
- state |= AGRS1;
- break;
- case META:
- state |= METAS1;
- break;
- default:
- /* is this an accent (dead) key? */
- if (action >= F_ACC && action <= L_ACC) {
- action = save_accent_key(kbd, action,
- accents);
- switch (action) {
- case NOKEY:
- case ERRKEY:
- return action;
- default:
- if (state & METAS)
- return (action | MKEY);
- else
- return action;
- }
- /* NOT REACHED */
- }
- /* other special keys */
- if (*accents > 0) {
- *accents = 0;
- return ERRKEY;
- }
- if (action >= F_FN && action <= L_FN)
- action |= FKEY;
- /* XXX: return fkey string for the FKEY? */
- }
- *shiftstate = state;
- return (SPCLKEY | action);
- } else {
- /* regular keys */
- if (*accents > 0) {
- /* make an accented char */
- action = make_accent_char(kbd, action, accents);
- if (action == ERRKEY)
- return action;
- }
- if (state & METAS)
- action |= MKEY;
- return action;
- }
- }
- /* NOT REACHED */
-}
diff --git a/sys/dev/kbd/kbdreg.h b/sys/dev/kbd/kbdreg.h
deleted file mode 100644
index d5920196507d4..0000000000000
--- a/sys/dev/kbd/kbdreg.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/*-
- * Copyright (c) 1999 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: kbdreg.h,v 1.1 1999/01/09 02:44:50 yokota Exp $
- */
-
-#ifndef _DEV_KBD_KBDREG_H_
-#define _DEV_KBD_KBDREG_H_
-
-/* forward declarations */
-typedef struct keyboard keyboard_t;
-struct keymap;
-struct accentmap;
-struct fkeytab;
-
-/* call back funcion */
-typedef int kbd_callback_func_t(keyboard_t *kbd, int event,
- void *arg);
-/* event types */
-#define KBDIO_KEYINPUT 0
-#define KBDIO_UNLOADING 1
-
-typedef struct keyboard_callback {
- kbd_callback_func_t *kc_func;
- void *kc_arg;
-} keyboard_callback_t;
-
-/* keyboard */
-struct keyboard {
- /* the following fields are managed by kbdio */
- int kb_index; /* kbdio index# */
- int kb_minor; /* minor number of the sub-device */
- int kb_flags; /* internal flags */
-#define KB_VALID (1 << 16) /* this entry is valid */
-#define KB_NO_DEVICE (1 << 17) /* device not present */
-#define KB_PROBED (1 << 18) /* device probed */
-#define KB_INITIALIZED (1 << 19) /* device initialized */
-#define KB_REGISTERED (1 << 20) /* device registered to kbdio */
-#define KB_BUSY (1 << 21) /* device used by a client */
- int kb_active; /* 0: inactive */
- void *kb_token; /* id of the current client */
- keyboard_callback_t kb_callback;/* callback function */
-
- /*
- * Device configuration flags:
- * The upper 16 bits are common between various keyboard devices.
- * The lower 16 bits are device-specific.
- */
- int kb_config;
-#define KB_CONF_PROBE_ONLY (1 << 16) /* probe only, don't initialize */
-
- /* the following fields are set up by the driver */
- char *kb_name; /* driver name */
- int kb_unit; /* unit # */
- int kb_type; /* KB_84, KB_101, KB_OTHER,... */
- int kb_io_base; /* port# if any */
- int kb_io_size; /* # of occupied port */
- int kb_led; /* LED status */
- struct keymap *kb_keymap; /* key map */
- struct accentmap *kb_accentmap; /* accent map */
- struct fkeytab *kb_fkeytab; /* function key strings */
- int kb_fkeytab_size;/* # of function key strings */
- void *kb_data; /* the driver's private data */
-};
-
-#define KBD_IS_VALID(k) ((k)->kb_flags & KB_VALID)
-#define KBD_VALID(k) ((k)->kb_flags |= KB_VALID)
-#define KBD_INVALID(k) ((k)->kb_flags &= ~KB_VALID)
-#define KBD_HAS_DEVICE(k) (!((k)->kb_flags & KB_NO_DEVICE))
-#define KBD_FOUND_DEVICE(k) ((k)->kb_flags &= ~KB_NO_DEVICE)
-#define KBD_IS_PROBED(k) ((k)->kb_flags & KB_PROBED)
-#define KBD_PROBE_DONE(k) ((k)->kb_flags |= KB_PROBED)
-#define KBD_IS_INITIALIZED(k) ((k)->kb_flags & KB_INITIALIZED)
-#define KBD_INIT_DONE(k) ((k)->kb_flags |= KB_INITIALIZED)
-#define KBD_IS_CONFIGURED(k) ((k)->kb_flags & KB_REGISTERED)
-#define KBD_CONFIG_DONE(k) ((k)->kb_flags |= KB_REGISTERED)
-#define KBD_IS_BUSY(k) ((k)->kb_flags & KB_BUSY)
-#define KBD_BUSY(k) ((k)->kb_flags |= KB_BUSY)
-#define KBD_UNBUSY(k) ((k)->kb_flags &= ~KB_BUSY)
-#define KBD_IS_ACTIVE(k) ((k)->kb_active)
-#define KBD_ACTIVATE(k) (++(k)->kb_active)
-#define KBD_DEACTIVATE(k) (--(k)->kb_active)
-#define KBD_LED_VAL(k) ((k)->kb_led)
-
-/* keyboard function table */
-typedef int kbd_probe_t(int unit, keyboard_t **kbdp, void *arg,
- int flags);
-typedef int kbd_init_t(keyboard_t *kbd);
-typedef int kbd_term_t(keyboard_t *kbd);
-typedef int kbd_intr_t(keyboard_t *kbd);
-typedef int kbd_test_if_t(keyboard_t *kbd);
-typedef int kbd_enable_t(keyboard_t *kbd);
-typedef int kbd_disable_t(keyboard_t *kbd);
-typedef int kbd_read_t(keyboard_t *kbd, int wait);
-typedef int kbd_check_t(keyboard_t *kbd);
-typedef u_int kbd_read_char_t(keyboard_t *kbd, int wait);
-typedef int kbd_check_char_t(keyboard_t *kbd);
-typedef int kbd_ioctl_t(keyboard_t *kbd, u_long cmd, caddr_t data);
-typedef int kbd_lock_t(keyboard_t *kbd, int lock);
-typedef void kbd_clear_state_t(keyboard_t *kbd);
-typedef int kbd_get_state_t(keyboard_t *kbd, void *buf, size_t len);
-typedef int kbd_set_state_t(keyboard_t *kbd, void *buf, size_t len);
-typedef u_char *kbd_get_fkeystr_t(keyboard_t *kbd, int fkey,
- size_t *len);
-typedef void kbd_diag_t(keyboard_t *kbd, int level);
-
-typedef struct keyboard_switch {
- kbd_probe_t *probe;
- kbd_init_t *init;
- kbd_term_t *term;
- kbd_intr_t *intr;
- kbd_test_if_t *test_if;
- kbd_enable_t *enable;
- kbd_disable_t *disable;
- kbd_read_t *read;
- kbd_check_t *check;
- kbd_read_char_t *read_char;
- kbd_check_char_t *check_char;
- kbd_ioctl_t *ioctl;
- kbd_lock_t *lock;
- kbd_clear_state_t *clear_state;
- kbd_get_state_t *get_state;
- kbd_set_state_t *set_state;
- kbd_get_fkeystr_t *get_fkeystr;
- kbd_diag_t *diag;
-} keyboard_switch_t;
-
-/* keyboard driver */
-typedef struct keyboard_driver {
- char *name;
- keyboard_switch_t *kbdsw;
- int (*configure)(int); /* backdoor for the console driver */
-} keyboard_driver_t;
-
-#ifdef KERNEL
-
-#define KEYBOARD_DRIVER(name, sw, config) \
- static struct keyboard_driver name##_driver = { \
- #name, &sw, config \
- }; \
- DATA_SET(kbddriver_set, name##_driver);
-
-/* global variables */
-extern keyboard_switch_t **kbdsw;
-extern struct linker_set kbddriver_set;
-
-/* functions for the keyboard driver */
-int kbd_register(keyboard_t *kbd);
-int kbd_unregister(keyboard_t *kbd);
-keyboard_switch_t *kbd_get_switch(char *driver);
-void kbd_init_struct(keyboard_t *kbd, char *name, int type,
- int unit, int config, int port,
- int port_size);
-void kbd_set_maps(keyboard_t *kbd, struct keymap *keymap,
- struct accentmap *accmap,
- struct fkeytab *fkeymap, int fkeymap_size);
-
-/* functions for the keyboard client */
-int kbd_allocate(char *driver, int unit, void *id,
- kbd_callback_func_t *func, void *arg);
-int kbd_release(keyboard_t *kbd, void *id);
-int kbd_change_callback(keyboard_t *kbd, void *id,
- kbd_callback_func_t *func, void *arg);
-int kbd_find_keyboard(char *driver, int unit);
-keyboard_t *kbd_get_keyboard(int index);
-
-/* a back door for the console driver to tickle the keyboard driver XXX */
-int kbd_configure(int flags);
- /* see `kb_config' above for flag bit definitions */
-
-#ifdef KBD_INSTALL_CDEV
-
-/* virtual keyboard cdev driver functions */
-
-int kbd_attach(dev_t dev, keyboard_t *kbd,
- struct cdevsw *sw);
-int kbd_detach(dev_t dev, keyboard_t *kbd,
- struct cdevsw *sw);
-
-/* generic keyboard cdev driver functions */
-
-typedef struct genkbd_softc {
- int gkb_flags; /* flag/status bits */
-#define KB_ASLEEP (1 << 0)
- struct clist gkb_q; /* input queue */
- struct selinfo gkb_rsel;
-} genkbd_softc_t;
-
-int genkbdopen(genkbd_softc_t *sc, keyboard_t *kbd, int flag, int mode,
- struct proc *p);
-int genkbdclose(genkbd_softc_t *sc, keyboard_t *kbd, int flag, int mode,
- struct proc *p);
-int genkbdread(genkbd_softc_t *sc, keyboard_t *kbd, struct uio *uio,
- int flag);
-int genkbdwrite(genkbd_softc_t *sc, keyboard_t *kbd, struct uio *uio,
- int flag);
-int genkbdioctl(genkbd_softc_t *sc, keyboard_t *kbd, u_long cmd,
- caddr_t arg, int flag, struct proc *p);
-int genkbdpoll(genkbd_softc_t *sc, keyboard_t *kbd, int event,
- struct proc *p);
-
-#endif /* KBD_INSTALL_CDEV */
-
-/* generic low-level keyboard functions */
-
-/* shift key state */
-#define SHIFTS1 (1 << 16)
-#define SHIFTS2 (1 << 17)
-#define SHIFTS (SHIFTS1 | SHIFTS2)
-#define CTLS1 (1 << 18)
-#define CTLS2 (1 << 19)
-#define CTLS (CTLS1 | CTLS2)
-#define ALTS1 (1 << 20)
-#define ALTS2 (1 << 21)
-#define ALTS (ALTS1 | ALTS2)
-#define AGRS1 (1 << 22)
-#define AGRS2 (1 << 23)
-#define AGRS (AGRS1 | AGRS2)
-#define METAS1 (1 << 24)
-#define METAS2 (1 << 25)
-#define METAS (METAS1 | METAS2)
-#define NLKDOWN (1 << 26)
-#define SLKDOWN (1 << 27)
-#define CLKDOWN (1 << 28)
-#define ALKDOWN (1 << 29)
-/* lock key state (defined in machine/console.h) */
-/*
-#define CLKED LED_CAP
-#define NLKED LED_NUM
-#define SLKED LED_SCR
-#define ALKED (1 << 3)
-#define LOCK_MASK (CLKED | NLKED | SLKED | ALKED)
-#define LED_CAP (1 << 0)
-#define LED_NUM (1 << 1)
-#define LED_SCR (1 << 2)
-#define LED_MASK (LED_CAP | LED_NUM | LED_SCR)
-*/
-
-kbd_get_fkeystr_t genkbd_get_fkeystr;
-kbd_diag_t genkbd_diag;
-
-int genkbd_commonioctl(keyboard_t *kbd, u_long cmd, caddr_t arg);
-int genkbd_keyaction(keyboard_t *kbd, int keycode, int down,
- int *shiftstate, int *accents);
-
-#endif /* KERNEL */
-
-#endif /* !_DEV_KBD_KBDREG_H_ */
diff --git a/sys/dev/kbd/kbdtables.h b/sys/dev/kbd/kbdtables.h
deleted file mode 100644
index c0d4663a6eacd..0000000000000
--- a/sys/dev/kbd/kbdtables.h
+++ /dev/null
@@ -1,1332 +0,0 @@
-/*-
- * Copyright (c) 1992-1998 Søren Schmidt
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer,
- * without modification, immediately at the beginning of the file.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: kbdtables.h,v 1.41 1998/09/15 18:16:37 sos Exp $
- */
-
-#define SET8 0x80 /* set eight bit on */
-
-#ifdef PC98
-#define NO_ACCENTCHARS
-/* PC-9801 keymap by kuribo@isl.melco.co.jp */
-static keymap_t key_map = { 0x80, /* PC98 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=01 */ '1', '!', '!', '!', '1', '!', '!', '!', 0x00, 0x00,
-/* sc=02 */ '2', '\"', 0x1A, 0x1A, '2', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=03 */ '3', '#', 0x1B, 0x1B, '3', '#', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=04 */ '4', '$', 0x1C, 0x1C, '4', '$', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=05 */ '5', '%', 0x1D, 0x1D, '5', '%', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=06 */ '6', '&', 0x1E, 0x1E, '6', '^', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=07 */ '7', '\'', 0x1F, 0x1F, '7', '&', '&', '&', 0x00, 0x00,
-/* sc=08 */ '8', '(', 0x7F, 0x7F, '8', '*', 0x08, 0x08, 0x00, 0x00,
-/* sc=09 */ '9', ')', '9', '9', '9', '(', '(', '(', 0x00, 0x00,
-/* sc=0a */ '0', NOP, '0', '0', '0', ')', ')', ')', 0x40, 0x00,
-/* sc=0b */ '-', '=', '-', '-', '-', '_', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=0c */ '^', '`', 0x1E, 0x1E, '=', '+', '+', '+', 0x00, 0x00,
-/* sc=0d */ '\\', '|', 0x1C, 0x1C, '\\', '|', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00,
-/* sc=0f */ '\t', '\t', '\t', '\t', '\t', '\t', '\t', '\t', 0x00, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ '@', '~', 0x00, 0x00, '[', '{', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=1b */ '[', '{', 0x1B, 0x1B, ']', '}', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=1c */ '\r', '\r', '\n', '\n', '\r', '\r', '\n', '\n', 0x00, 0x00,
-/* sc=1d */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1e */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=1f */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=20 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=21 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=22 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=23 */ 'j', 'J', '\n', '\n', 'j', 'J', '\n', '\n', 0x00, 0x01,
-/* sc=24 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=25 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=26 */ ';', '+', ';', ';', ';', ':', ';', ';', 0x00, 0x00,
-/* sc=27 */ ':', '*', ':', ':', '\'', '\"', '\'', '\'', 0x00, 0x00,
-/* sc=28 */ ']', '}', 0x1D, 0x1D, '`', '~', '~', '~', 0x00, 0x00,
-/* sc=29 */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=2a */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2b */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2c */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=2d */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=2e */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=2f */ 'm', 'M', '\r', '\r', 'm', 'M', '\r', '\r', 0x00, 0x01,
-/* sc=30 */ ',', '<', '<', '<', ',', '<', '<', '<', 0x00, 0x00,
-/* sc=31 */ '.', '>', '>', '>', '.', '>', '>', '>', 0x00, 0x00,
-/* sc=32 */ '/', '?', 0x7F, 0x7F, '/', '?', 0x7F, 0x7F, 0x00, 0x00,
-/* sc=33 */ NOP, '_', 0x1F, 0x1F, '\\', '|', 0x1C, 0x1C, 0x80, 0x00,
-/* sc=34 */ ' ', ' ', 0x00, 0x00, ' ', ' ', 0x00, 0x00, 0x00, 0x00,
-/* sc=35 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00,
-/* sc=36 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=37 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=38 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=39 */ 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, RBT, RBT, 0x03, 0x02,
-/* sc=3a */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=3b */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=3c */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=3d */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=3e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=3f */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=40 */ '-', '-', '-', '-', '-', '-', '-', '-', 0x00, 0x00,
-/* sc=41 */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x00,
-/* sc=42 */ '7', '7', '7', '7', '7', '7', '7', '7', 0x00, 0x00,
-/* sc=43 */ '8', '8', '8', '8', '8', '8', '8', '8', 0x00, 0x00,
-/* sc=44 */ '9', '9', '9', '9', '9', '9', '9', '9', 0x00, 0x00,
-/* sc=45 */ '*', '*', '*', '*', '*', '*', '*', '*', 0x00, 0x00,
-/* sc=46 */ '4', '4', '4', '4', '4', '4', '4', '4', 0x00, 0x00,
-/* sc=47 */ '5', '5', '5', '5', '5', '5', '5', '5', 0x00, 0x00,
-/* sc=48 */ '6', '6', '6', '6', '6', '6', '6', '6', 0x00, 0x00,
-/* sc=49 */ '+', '+', '+', '+', '+', '+', '+', '+', 0x00, 0x00,
-/* sc=4a */ '1', '1', '1', '1', '1', '1', '1', '1', 0x00, 0x00,
-/* sc=4b */ '2', '2', '2', '2', '2', '2', '2', '2', 0x00, 0x00,
-/* sc=4c */ '3', '3', '3', '3', '3', '3', '3', '3', 0x00, 0x00,
-/* sc=4d */ '=', '=', '=', '=', '=', '=', '=', '=', 0x00, 0x00,
-/* sc=4e */ '0', '0', '0', '0', '0', '0', '0', '0', 0x00, 0x00,
-/* sc=4f */ ',', ',', ',', ',', ',', ',', ',', ',', 0x00, 0x00,
-/* sc=50 */ '.', '.', '.', '.', '.', '.', '.', '.', 0x00, 0x00,
-/* sc=51 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x00, 0x00,
-/* sc=52 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=53 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=54 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=57 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=58 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=59 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5b */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5f */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=60 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=61 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=62 */ F( 1), F(13), F(25), F(37), S( 1), S( 1), S( 1), S( 1), 0xFF, 0x00,
-/* sc=63 */ F( 2), F(14), F(26), F(38), S( 2), S( 2), S( 2), S( 2), 0xFF, 0x00,
-/* sc=64 */ F( 3), F(15), F(27), F(39), S( 3), S( 3), S( 3), S( 3), 0xFF, 0x00,
-/* sc=65 */ F( 4), F(16), F(28), F(40), S( 4), S( 4), S( 4), S( 4), 0xFF, 0x00,
-/* sc=66 */ F( 5), F(17), F(29), F(41), S( 5), S( 5), S( 5), S( 5), 0xFF, 0x00,
-/* sc=67 */ F( 6), F(18), F(30), F(42), S( 6), S( 6), S( 6), S( 6), 0xFF, 0x00,
-/* sc=68 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=69 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=6a */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=6b */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=6c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6f */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=70 */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=71 */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=72 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=73 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=74 */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=75 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=76 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=77 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=78 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=79 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7b */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7f */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-};
-#endif
-
-#ifdef DKKEYMAP
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x6C, /* DK iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, '1', '!', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '2', '"', 0x00, 0x00, '@', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=04 */ '3', '#', NOP, NOP, 0x9E, '#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '4', 0xA4, NOP, NOP, '$', 0xA4, NOP, NOP, 0x33, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, '5', '%', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ '6', '&', NOP, NOP, '6', '&', NOP, NOP, 0x33, 0x00,
-/* sc=08 */ '7', '/', NOP, NOP, '{', '/', NOP, NOP, 0x33, 0x00,
-/* sc=09 */ '8', '(', 0x1B, 0x1B, '[', '(', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=0a */ '9', ')', 0x1D, 0x1D, ']', ')', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=0b */ '0', '=', NOP, NOP, '}', '=', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ '+', '?', NOP, NOP, '+', '?', NOP, NOP, 0x33, 0x00,
-/* sc=0d */ '\'', '`', NOP, NOP, '|', '`', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ 0xE5, 0xC5, NOP, NOP, 0x86, 0x8F, NOP, NOP, 0x33, 0x01,
-/* sc=1b */ '"', '^', 0x1E, 0x1E, '~', '^', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ 0xE6, 0xC6, NOP, NOP, 0x91, 0x92, NOP, NOP, 0x33, 0x01,
-/* sc=28 */ 0xF8, 0xD8, NOP, NOP, 0x9B, 0x9D, NOP, NOP, 0x33, 0x01,
-/* sc=29 */ 0xBD, 0xA7, NOP, NOP, 0xBD, 0xA7, NOP, NOP, 0x33, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '\'', '*', NOP, NOP, '\'', '*', NOP, NOP, 0x33, 0x00,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', ';', NOP, NOP, ',', ';', NOP, NOP, 0x33, 0x00,
-/* sc=34 */ '.', ':', NOP, NOP, '.', ':', NOP, NOP, 0x33, 0x00,
-/* sc=35 */ '-', '_', 0x1F, 0x1F, '-', '_', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', '*', '*', '*', '*', '*', '*', 0x00, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, NLK, NLK, NLK, NLK, NLK, NLK, 0xFF, 0x00,
-/* sc=46 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', '-', '-', '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', '6', '6', '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ '<', '>', 0x1C, 0x1C, '\\', '>', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x02,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x00,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-#endif
-
-#ifdef UKKEYMAP
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x6C, /* uk iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, '`', '`', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '2', '"', 0x00, 0x00, '@', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=04 */ '3', 0xA3, NOP, NOP, '#', '#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, '4', '$', NOP, NOP, 0x33, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, '5', '%', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ '6', '^', 0x1E, 0x1E, '^', '^', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=08 */ '7', '&', NOP, NOP, '[', '[', 0x1B, 0x1B, 0x30, 0x00,
-/* sc=09 */ '8', '*', NOP, NOP, '8', '*', NOP, NOP, 0x33, 0x00,
-/* sc=0a */ '9', '(', NOP, NOP, ']', ']', 0x1D, 0x1D, 0x30, 0x00,
-/* sc=0b */ '0', ')', NOP, NOP, '{', '{', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ '-', '_', 0x1F, 0x1F, '|', '|', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=0d */ '=', '+', NOP, NOP, '}', '}', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ '[', '{', 0x1B, 0x1B, '[', '{', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=1b */ ']', '}', 0x1D, 0x1D, ']', '}', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ ';', ':', NOP, NOP, ';', ':', NOP, NOP, 0x33, 0x00,
-/* sc=28 */ '\'', '@', 0x00, 0x00, '\'', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=29 */ '\\', '|', 0x1C, 0x1C, '\\', '\\', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '#', '~', NOP, NOP, '~', '~', NOP, NOP, 0x33, 0x00,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', '<', NOP, NOP, ',', '<', NOP, NOP, 0x33, 0x00,
-/* sc=34 */ '.', '>', NOP, NOP, '.', '>', NOP, NOP, 0x33, 0x00,
-/* sc=35 */ '/', '?', NOP, NOP, '/', '?', NOP, NOP, 0x33, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, '*', '*', 0x0A, 0x0A, 0x33, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, 0x13, 0x13, NLK, NLK, 0x13, 0x13, 0xCC, 0x00,
-/* sc=46 */ SLK, SLK, 0x7F, 0x7F, SLK, SLK, 0x7F, 0x7F, 0xCC, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', 0x1F, 0x1F, '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', 0x1E, 0x1E, '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ '\\', '|', 0x1C, 0x1C, '\\', '|', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFF, 0x02,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x02,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-#endif
-
-#ifdef GRKEYMAP
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x6C, /* german iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, '`', '`', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '2', '"', 0x00, 0x00, '@', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=04 */ '3', 0xA7, NOP, NOP, '#', '#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, '4', '$', NOP, NOP, 0x33, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, '5', '%', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ '6', '&', 0x1E, 0x1E, '^', '^', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=08 */ '7', '/', 0x1B, 0x1B, '[', '[', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=09 */ '8', '(', NOP, NOP, '8', '(', NOP, NOP, 0x33, 0x00,
-/* sc=0a */ '9', ')', 0x1D, 0x1D, ']', ']', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=0b */ '0', '=', NOP, NOP, '{', '{', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ 0xDF, '?', NOP, NOP, '|', '|', NOP, NOP, 0x33, 0x00,
-/* sc=0d */ 0x92, 0x93, NOP, NOP, '\'', '`', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ 0xFC, 0xDC, 0x1B, 0x1B, '[', '{', 0x1B, 0x1B, 0x00, 0x01,
-/* sc=1b */ '+', '*', 0x1D, 0x1D, ']', '}', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ 0xF6, 0xD6, NOP, NOP, 0xF6, 0xD6, NOP, NOP, 0x33, 0x01,
-/* sc=28 */ 0xE4, 0xC4, NOP, NOP, 0xE4, 0xC4, NOP, NOP, 0x33, 0x01,
-/* sc=29 */ '<', '>', 0x1C, 0x1C, '\\', '|', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '#', '^', 0x1E, 0x1E, '`', '~', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=2c */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', ';', NOP, NOP, ',', ';', NOP, NOP, 0x33, 0x00,
-/* sc=34 */ '.', ':', NOP, NOP, '.', ':', NOP, NOP, 0x33, 0x00,
-/* sc=35 */ '-', '_', 0x1F, 0x1F, '-', '_', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, '*', '*', 0x0A, 0x0A, 0x33, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, 0x13, 0x13, NLK, NLK, 0x13, 0x13, 0xCC, 0x00,
-/* sc=46 */ SLK, SLK, 0x7F, 0x7F, SLK, SLK, 0x7F, 0x7F, 0xCC, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', 0x1F, 0x1F, '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', 0x1E, 0x1E, '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFF, 0x02,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x02,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-#endif
-
-#ifdef SWKEYMAP
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x6C, /* swedish iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=03 */ '2', '"', 0x00, 0x00, '@', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=04 */ '3', '#', NOP, NOP, 0xA3, NOP, NOP, NOP, 0x37, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, 0xA4, NOP, NOP, NOP, 0x37, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=07 */ '6', '&', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=08 */ '7', '/', NOP, NOP, '{', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=09 */ '8', '(', NOP, NOP, '[', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=0a */ '9', ')', NOP, NOP, ']', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=0b */ '0', '=', NOP, NOP, '}', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=0c */ '+', '?', NOP, NOP, '\\', NOP, 0x1C, NOP, 0x35, 0x00,
-/* sc=0d */ 0x180, '`', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ 0xE5, 0xC5, NOP, NOP, '}', ']', NOP, NOP, 0x33, 0x01,
-/* sc=1b */ 0xA8, '^', NOP, NOP, '~', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ 0xF6, 0xD6, NOP, NOP, '|', '\\', NOP, NOP, 0x33, 0x01,
-/* sc=28 */ 0xE4, 0xC4, NOP, NOP, '{', '[', NOP, NOP, 0x33, 0x01,
-/* sc=29 */ 0xA7, 0xBD, NOP, NOP, '\\', '|', NOP, NOP, 0x33, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '\'', '*', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', ';', NOP, NOP, NOP, '<', NOP, NOP, 0x3B, 0x00,
-/* sc=34 */ '.', ':', NOP, NOP, NOP, '>', NOP, NOP, 0x3B, 0x00,
-/* sc=35 */ '-', '_', 0x1F, NOP, '/', '?', NOP, NOP, 0x13, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, '*', '*', 0x0A, 0x0A, 0x33, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, 0x13, 0x13, NLK, NLK, 0x13, 0x13, 0xCC, 0x00,
-/* sc=46 */ SLK, SLK, 0x7F, 0x7F, SLK, SLK, 0x7F, 0x7F, 0xCC, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', 0x1F, 0x1F, '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', 0x1E, 0x1E, '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ '<', '>', NOP, NOP, '|', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFF, 0x02,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x02,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-#endif
-
-#ifdef RUKEYMAP
-#define NO_ACCENTCHARS
-static keymap_t key_map = { 0xEC, /* keys number */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * -------------------------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, NOP, NOP, SET8|0x1B, SET8|0x1B, DBG, NOP, 0x33, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, SET8|'1', SET8|'!', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '2', '@', 0x00, 0x00, SET8|'2', SET8|'@', SET8|0x00, SET8|0x00, 0x00, 0x00,
-/* sc=04 */ '3', '#', NOP, NOP, SET8|'3', SET8|'#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, SET8|'4', SET8|'$', NOP, NOP, 0x33, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, SET8|'5', SET8|'%', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ '6', '^', 0x1E, 0x1E, SET8|'6', SET8|'^', SET8|0x1E, SET8|0x1E, 0x00, 0x00,
-/* sc=08 */ '7', '&', NOP, NOP, SET8|'7', SET8|'&', NOP, NOP, 0x33, 0x00,
-/* sc=09 */ '8', '*', NOP, NOP, SET8|'8', SET8|'*', NOP, NOP, 0x33, 0x00,
-/* sc=0a */ '9', '(', NOP, NOP, SET8|'9', SET8|'(', NOP, NOP, 0x33, 0x00,
-/* sc=0b */ '0', ')', NOP, NOP, SET8|'0', SET8|')', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ '-', '_', 0x1F, 0x1F, SET8|'-', SET8|'_', SET8|0x1F, SET8|0x1F, 0x00, 0x00,
-/* sc=0d */ '=', '+', NOP, NOP, SET8|'=', SET8|'+', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, SET8|0x08, SET8|0x08, SET8|0x7F, SET8|0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, SET8|0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, SET8|'q', SET8|'Q', SET8|0x11, SET8|0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, SET8|'w', SET8|'W', SET8|0x17, SET8|0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, SET8|'e', SET8|'E', SET8|0x05, SET8|0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, SET8|'r', SET8|'R', SET8|0x12, SET8|0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, SET8|'t', SET8|'T', SET8|0x14, SET8|0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, SET8|'y', SET8|'Y', SET8|0x19, SET8|0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, SET8|'u', SET8|'U', SET8|0x15, SET8|0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, SET8|'i', SET8|'I', SET8|0x09, SET8|0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, SET8|'o', SET8|'O', SET8|0x0F, SET8|0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, SET8|'p', SET8|'P', SET8|0x10, SET8|0x10, 0x00, 0x01,
-/* sc=1a */ '[', '{', 0x1B, 0x1B, SET8|'[', SET8|'{', SET8|0x1B, SET8|0x1B, 0x00, 0x00,
-/* sc=1b */ ']', '}', 0x1D, 0x1D, SET8|']', SET8|'}', SET8|0x1D, SET8|0x1D, 0x00, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, SET8|0x0D, SET8|0x0D, SET8|0x0A, SET8|0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, SET8|'a', SET8|'A', SET8|0x01, SET8|0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, SET8|'s', SET8|'S', SET8|0x13, SET8|0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, SET8|'d', SET8|'D', SET8|0x04, SET8|0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, SET8|'f', SET8|'F', SET8|0x06, SET8|0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, SET8|'g', SET8|'G', SET8|0x07, SET8|0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, SET8|'h', SET8|'H', SET8|0x08, SET8|0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, SET8|'j', SET8|'J', SET8|0x0A, SET8|0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, SET8|'k', SET8|'K', SET8|0x0B, SET8|0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, SET8|'l', SET8|'L', SET8|0x0C, SET8|0x0C, 0x00, 0x01,
-/* sc=27 */ ';', ':', NOP, NOP, SET8|';', SET8|':', NOP, NOP, 0x33, 0x00,
-/* sc=28 */ '\'', '"', NOP, NOP, SET8|'\'', SET8|'"', NOP, NOP, 0x33, 0x00,
-/* sc=29 */ '`', '~', NOP, NOP, SET8|'`', SET8|'~', NOP, NOP, 0x33, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '\\', '|', 0x1C, 0x1C, SET8|'\\', SET8|'|', SET8|0x1C, SET8|0x1C, 0x00, 0x00,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, SET8|'z', SET8|'Z', SET8|0x1A, SET8|0x1A, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, SET8|'x', SET8|'X', SET8|0x18, SET8|0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, SET8|'c', SET8|'C', SET8|0x03, SET8|0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, SET8|'v', SET8|'V', SET8|0x16, SET8|0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, SET8|'b', SET8|'B', SET8|0x02, SET8|0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, SET8|'n', SET8|'N', SET8|0x0E, SET8|0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, SET8|'m', SET8|'M', SET8|0x0D, SET8|0x0D, 0x00, 0x01,
-/* sc=33 */ ',', '<', NOP, NOP, SET8|',', SET8|'<', NOP, NOP, 0x33, 0x00,
-/* sc=34 */ '.', '>', NOP, NOP, SET8|'.', SET8|'>', NOP, NOP, 0x33, 0x00,
-/* sc=35 */ '/', '?', NOP, NOP, SET8|'/', SET8|'?', NOP, NOP, 0x33, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, SET8|'*', SET8|'*', SET8|0x0A, SET8|0x0A, 0x00, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', SET8|' ', SET8|' ', SUSP, SET8|' ', 0x00, 0x00,
-/* sc=3a */ ALK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, NLK, NLK, NLK, NLK, NLK, NLK, 0xFF, 0x00,
-/* sc=46 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', SET8|'7', SET8|'7', SET8|'7', SET8|'7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', SET8|'8', SET8|'8', SET8|'8', SET8|'8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', SET8|'9', SET8|'9', SET8|'9', SET8|'9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', '-', '-', SET8|'-', SET8|'-', SET8|'-', SET8|'-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', SET8|'4', SET8|'4', SET8|'4', SET8|'4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', SET8|'5', SET8|'5', SET8|'5', SET8|'5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', '6', '6', SET8|'6', SET8|'6', SET8|'6', SET8|'6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', SET8|'+', SET8|'+', SET8|'+', SET8|'+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', SET8|'1', SET8|'1', SET8|'1', SET8|'1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', SET8|'2', SET8|'2', SET8|'2', SET8|'2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', SET8|'3', SET8|'3', SET8|'3', SET8|'3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', SET8|'0', SET8|'0', SET8|'0', SET8|'0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', SET8|'.', SET8|'.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ ALK, ALK, ALK, ALK, ALK, ALK, ALK, ALK, 0xFF, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0A, 0x0A, SET8|0x0D, SET8|0x0D, SET8|0x0A, SET8|0x0A, 0x00, 0x00,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', NOP, NOP, SET8|'/', SET8|'/', NOP, NOP, 0x33, 0x00,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-/* sc=6c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=6f */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=70 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=71 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=72 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=73 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=74 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=75 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=76 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=77 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=78 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=79 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7a */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7b */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7c */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7d */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7e */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=7f */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* extended (ALTGR LOCK keys) */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, NOP, NOP, SET8|0x1B, SET8|0x1B, DBG, NOP, 0x33, 0x00,
-/* sc=02 */ '!', '1', NOP, NOP, SET8|'1', SET8|'!', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '"', '2', 0x00, 0x00, SET8|'2', SET8|'@', SET8|0x00, SET8|0x00, 0x00, 0x00,
-/* sc=04 */ '\'', '3', NOP, NOP, SET8|'3', SET8|'#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '*', '4', NOP, NOP, SET8|'4', SET8|'$', NOP, NOP, 0x33, 0x00,
-/* sc=06 */ ':', '5', NOP, NOP, SET8|'5', SET8|'%', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ ',', '6', 0x1E, 0x1E, SET8|'6', SET8|'^', SET8|0x1E, SET8|0x1E, 0x00, 0x00,
-/* sc=08 */ '.', '7', NOP, NOP, SET8|'7', SET8|'&', NOP, NOP, 0x33, 0x00,
-/* sc=09 */ ';', '8', NOP, NOP, SET8|'8', SET8|'*', NOP, NOP, 0x33, 0x00,
-/* sc=0a */ '(', '9', NOP, NOP, SET8|'9', SET8|'(', NOP, NOP, 0x33, 0x00,
-/* sc=0b */ ')', '0', NOP, NOP, SET8|'0', SET8|')', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ '-', '_', 0x1F, 0x1F, SET8|'-', SET8|'_', SET8|0x1F, SET8|0x1F, 0x00, 0x00,
-/* sc=0d */ '=', '+', NOP, NOP, SET8|'=', SET8|'+', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, SET8|0x08, SET8|0x08, SET8|0x7F, SET8|0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, SET8|0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 0xca, 0xea, 0x11, 0x11, SET8|'q', SET8|'Q', SET8|0x11, SET8|0x11, 0x00, 0x01,
-/* sc=11 */ 0xc3, 0xe3, 0x17, 0x17, SET8|'w', SET8|'W', SET8|0x17, SET8|0x17, 0x00, 0x01,
-/* sc=12 */ 0xd5, 0xf5, 0x05, 0x05, SET8|'e', SET8|'E', SET8|0x05, SET8|0x05, 0x00, 0x01,
-/* sc=13 */ 0xcb, 0xeb, 0x12, 0x12, SET8|'r', SET8|'R', SET8|0x12, SET8|0x12, 0x00, 0x01,
-/* sc=14 */ 0xc5, 0xe5, 0x14, 0x14, SET8|'t', SET8|'T', SET8|0x14, SET8|0x14, 0x00, 0x01,
-/* sc=15 */ 0xce, 0xee, 0x19, 0x19, SET8|'y', SET8|'Y', SET8|0x19, SET8|0x19, 0x00, 0x01,
-/* sc=16 */ 0xc7, 0xe7, 0x15, 0x15, SET8|'u', SET8|'U', SET8|0x15, SET8|0x15, 0x00, 0x01,
-/* sc=17 */ 0xdb, 0xfb, 0x09, 0x09, SET8|'i', SET8|'I', SET8|0x09, SET8|0x09, 0x00, 0x01,
-/* sc=18 */ 0xdd, 0xfd, 0x0F, 0x0F, SET8|'o', SET8|'O', SET8|0x0F, SET8|0x0F, 0x00, 0x01,
-/* sc=19 */ 0xda, 0xfa, 0x10, 0x10, SET8|'p', SET8|'P', SET8|0x10, SET8|0x10, 0x00, 0x01,
-/* sc=1a */ 0xc8, 0xe8, 0x1B, 0x1B, SET8|'[', SET8|'{', SET8|0x1B, SET8|0x1B, 0x00, 0x01,
-/* sc=1b */ 0xdf, 0xff, 0x1D, 0x1D, SET8|']', SET8|'}', SET8|0x1D, SET8|0x1D, 0x00, 0x01,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, SET8|0x0D, SET8|0x0D, SET8|0x0A, SET8|0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 0xc6, 0xe6, 0x01, 0x01, SET8|'a', SET8|'A', SET8|0x01, SET8|0x01, 0x00, 0x01,
-/* sc=1f */ 0xd9, 0xf9, 0x13, 0x13, SET8|'s', SET8|'S', SET8|0x13, SET8|0x13, 0x00, 0x01,
-/* sc=20 */ 0xd7, 0xf7, 0x04, 0x04, SET8|'d', SET8|'D', SET8|0x04, SET8|0x04, 0x00, 0x01,
-/* sc=21 */ 0xc1, 0xe1, 0x06, 0x06, SET8|'f', SET8|'F', SET8|0x06, SET8|0x06, 0x00, 0x01,
-/* sc=22 */ 0xd0, 0xf0, 0x07, 0x07, SET8|'g', SET8|'G', SET8|0x07, SET8|0x07, 0x00, 0x01,
-/* sc=23 */ 0xd2, 0xf2, 0x08, 0x08, SET8|'h', SET8|'H', SET8|0x08, SET8|0x08, 0x00, 0x01,
-/* sc=24 */ 0xcf, 0xef, 0x0A, 0x0A, SET8|'j', SET8|'J', SET8|0x0A, SET8|0x0A, 0x00, 0x01,
-/* sc=25 */ 0xcc, 0xec, 0x0B, 0x0B, SET8|'k', SET8|'K', SET8|0x0B, SET8|0x0B, 0x00, 0x01,
-/* sc=26 */ 0xc4, 0xe4, 0x0C, 0x0C, SET8|'l', SET8|'L', SET8|0x0C, SET8|0x0C, 0x00, 0x01,
-/* sc=27 */ 0xd6, 0xf6, NOP, NOP, SET8|';', SET8|':', NOP, NOP, 0x33, 0x01,
-/* sc=28 */ 0xdc, 0xfc, NOP, NOP, SET8|'\'', SET8|'"', NOP, NOP, 0x33, 0x01,
-/* sc=29 */ 0xa3, 0xb3, NOP, NOP, SET8|'`', SET8|'~', NOP, NOP, 0x33, 0x01,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '\\', '|', 0x1C, 0x1C, SET8|'\\', SET8|'|', SET8|0x1C, SET8|0x1C, 0x00, 0x00,
-/* sc=2c */ 0xd1, 0xf1, 0x1A, 0x1A, SET8|'z', SET8|'Z', SET8|0x1A, SET8|0x1A, 0x00, 0x01,
-/* sc=2d */ 0xde, 0xfe, 0x18, 0x18, SET8|'x', SET8|'X', SET8|0x18, SET8|0x18, 0x00, 0x01,
-/* sc=2e */ 0xd3, 0xf3, 0x03, 0x03, SET8|'c', SET8|'C', SET8|0x03, SET8|0x03, 0x00, 0x01,
-/* sc=2f */ 0xcd, 0xed, 0x16, 0x16, SET8|'v', SET8|'V', SET8|0x16, SET8|0x16, 0x00, 0x01,
-/* sc=30 */ 0xc9, 0xe9, 0x02, 0x02, SET8|'b', SET8|'B', SET8|0x02, SET8|0x02, 0x00, 0x01,
-/* sc=31 */ 0xd4, 0xf4, 0x0E, 0x0E, SET8|'n', SET8|'N', SET8|0x0E, SET8|0x0E, 0x00, 0x01,
-/* sc=32 */ 0xd8, 0xf8, 0x0D, 0x0D, SET8|'m', SET8|'M', SET8|0x0D, SET8|0x0D, 0x00, 0x01,
-/* sc=33 */ 0xc2, 0xe2, NOP, NOP, SET8|',', SET8|'<', NOP, NOP, 0x33, 0x01,
-/* sc=34 */ 0xc0, 0xe0, NOP, NOP, SET8|'.', SET8|'>', NOP, NOP, 0x33, 0x01,
-/* sc=35 */ '/', '?', NOP, NOP, SET8|'/', SET8|'?', NOP, NOP, 0x33, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, SET8|'*', SET8|'*', SET8|0x0A, SET8|0x0A, 0x00, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', SET8|' ', SET8|' ', SUSP, SET8|' ', 0x00, 0x00,
-/* sc=3a */ ALK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, NLK, NLK, NLK, NLK, NLK, NLK, 0xFF, 0x00,
-/* sc=46 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', SET8|'7', SET8|'7', SET8|'7', SET8|'7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', SET8|'8', SET8|'8', SET8|'8', SET8|'8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', SET8|'9', SET8|'9', SET8|'9', SET8|'9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', '-', '-', SET8|'-', SET8|'-', SET8|'-', SET8|'-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', SET8|'4', SET8|'4', SET8|'4', SET8|'4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', SET8|'5', SET8|'5', SET8|'5', SET8|'5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', '6', '6', SET8|'6', SET8|'6', SET8|'6', SET8|'6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', SET8|'+', SET8|'+', SET8|'+', SET8|'+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', SET8|'1', SET8|'1', SET8|'1', SET8|'1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', SET8|'2', SET8|'2', SET8|'2', SET8|'2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', SET8|'3', SET8|'3', SET8|'3', SET8|'3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', SET8|'0', SET8|'0', SET8|'0', SET8|'0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', SET8|'.', SET8|'.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ ALK, ALK, ALK, ALK, ALK, ALK, ALK, ALK, 0xFF, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0A, 0x0A, SET8|0x0D, SET8|0x0D, SET8|0x0A, SET8|0x0A, 0x00, 0x00,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', NOP, NOP, SET8|'/', SET8|'/', NOP, NOP, 0x33, 0x00,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-
-#endif
-
-#ifdef ESKEYMAP
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x69, /* spanish iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x00, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, '|', '|', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '2', '"', 0x00, 0x00, '@', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=04 */ '3', 0xB7, NOP, NOP, '#', '#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, '4', '4', NOP, NOP, 0x33, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, '5', '5', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ '6', '&', 0x1E, 0x1E, 0xAC, 0xAC, 0x1E, 0x1E, 0x00, 0x00,
-/* sc=08 */ '7', '/', 0x1B, 0x1B, '7', '7', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=09 */ '8', '(', NOP, NOP, '8', '8', NOP, NOP, 0x33, 0x00,
-/* sc=0a */ '9', ')', 0x1D, 0x1D, '8', '8', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=0b */ '0', '=', NOP, NOP, '9', '9', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ '\'', '?', NOP, NOP, '\'', '\'', NOP, NOP, 0x33, 0x00,
-/* sc=0d */ 0xA1, 0xBF, NOP, NOP, '\'', '`', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 0xE9, 0xC9, 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 0xFA, 0xDA, 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 0xED, 0xCD, 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 0xF3, 0xD3, 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ DGRA, DCIR, 0x1B, 0x1B, '[', '[', 0x1B, 0x1B, 0xC0, 0x01,
-/* sc=1b */ '+', '*', 0x1D, 0x1D, ']', '[', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 0xE1, 0xC1, 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ 0xF1, 0xD1, NOP, NOP, '~', NOP, NOP, NOP, 0x37, 0x01,
-/* sc=28 */ DACU, DUML, NOP, NOP, '{', '}', NOP, NOP, 0xF3, 0x01,
-/* sc=29 */ 0xBA, 0xAA, 0x1C, 0x1C, '\\', '\\', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ 0xE7, 0xC7, 0x1E, 0x1E, '}', '}', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x19, 0x19, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', ';', NOP, NOP, ',', ';', NOP, NOP, 0x33, 0x00,
-/* sc=34 */ '.', ':', NOP, NOP, '.', ':', NOP, NOP, 0x33, 0x00,
-/* sc=35 */ '-', '_', 0x1F, 0x1F, '-', '_', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', NEXT, NEXT, '*', '*', NEXT, NEXT, 0x33, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x00, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, 0x13, 0x13, NLK, NLK, 0x13, 0x13, 0xCC, 0x00,
-/* sc=46 */ SLK, SLK, 0x7F, 0x7F, SLK, SLK, 0x7F, 0x7F, 0xCC, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', 0x1F, 0x1F, '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', 0x1E, 0x1E, '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x02,
-/* sc=54 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ '<', '>', 0x1C, 0x1C, '\\', '>', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x02,
-/* sc=5c */ '*', '*', '*', '*', '*', '*', '*', '*', 0x00, 0x02,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(54), F(54), F(54), F(54), F(54), F(54), RBT, F(54), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-};
-#endif
-
-#ifdef ISKEYMAP
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x6C, /* icelandic iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=03 */ '2', '"', 0x00, 0x00, NOP, NOP, 0x00, 0x00, 0x0C, 0x00,
-/* sc=04 */ '3', '#', NOP, NOP, 0xA3, NOP, NOP, NOP, 0x37, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, 0xA4, NOP, NOP, NOP, 0x37, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=07 */ '6', '&', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=08 */ '7', '/', NOP, NOP, '{', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=09 */ '8', '(', NOP, NOP, '[', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=0a */ '9', ')', NOP, NOP, ']', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=0b */ '0', '=', NOP, NOP, '}', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=0c */ 0xF6, 0xD6, NOP, NOP, '\\', NOP, 0x1C, NOP, 0x35, 0x00,
-/* sc=0d */ '-', '_', NOP, NOP, NOP, NOP, NOP, NOP, 0x3F, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, '@', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ 0xF0, 0xD0, NOP, NOP, '}', ']', NOP, NOP, 0x33, 0x01,
-/* sc=1b */ '\'', '?', NOP, NOP, '~', NOP, NOP, NOP, 0x00, 0x01,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 0xDF, 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ 0xE6, 0xC6, NOP, NOP, '|', '\\', NOP, NOP, 0x33, 0x01,
-/* sc=28 */ DACU, DACU, NOP, NOP, DTIL, '[', NOP, NOP, 0xFB, 0x01,
-/* sc=29 */ DRIN, DDIA, NOP, NOP, DCIR, '*', NOP, NOP, 0xFB, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '+', '*', NOP, NOP, '`', '*', NOP, NOP, 0x00, 0x01,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', ';', NOP, NOP, NOP, '<', NOP, NOP, 0x3B, 0x00,
-/* sc=34 */ '.', ':', NOP, NOP, NOP, '>', NOP, NOP, 0x3B, 0x00,
-/* sc=35 */ 0xFE, 0xDE, 0x1F, NOP, '/', '?', NOP, NOP, 0x13, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, '*', '*', 0x0A, 0x0A, 0x33, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, 0x13, 0x13, NLK, NLK, 0x13, 0x13, 0xCC, 0x00,
-/* sc=46 */ SLK, SLK, 0x7F, 0x7F, SLK, SLK, 0x7F, 0x7F, 0xCC, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', 0x1F, 0x1F, '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', 0x1E, 0x1E, '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x00, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ '<', '>', NOP, NOP, '|', NOP, NOP, NOP, 0x37, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0xFF, 0x02,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x02,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-#endif
-
-#if !defined(DKKEYMAP) && !defined(UKKEYMAP) && !defined(GRKEYMAP) && !defined(SWKEYMAP) && !defined(RUKEYMAP) && !defined(ISKEYMAP) && !defined(ESKEYMAP) && !defined(PC98)
-#define ISO_ACCENTCHARS
-static keymap_t key_map = { 0x6C, /* US iso8859 keymap */
-/* alt
- * scan cntrl alt alt cntrl
- * code base shift cntrl shift alt shift cntrl shift spcl flgs
- * ---------------------------------------------------------------------------
- */
-/* sc=00 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=01 */ 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, DBG, 0x1B, 0x02, 0x00,
-/* sc=02 */ '1', '!', NOP, NOP, '1', '!', NOP, NOP, 0x33, 0x00,
-/* sc=03 */ '2', '@', 0x00, 0x00, '2', '@', 0x00, 0x00, 0x00, 0x00,
-/* sc=04 */ '3', '#', NOP, NOP, '3', '#', NOP, NOP, 0x33, 0x00,
-/* sc=05 */ '4', '$', NOP, NOP, '4', '$', NOP, NOP, 0x33, 0x00,
-/* sc=06 */ '5', '%', NOP, NOP, '5', '%', NOP, NOP, 0x33, 0x00,
-/* sc=07 */ '6', '^', 0x1E, 0x1E, '6', '^', 0x1E, 0x1E, 0x00, 0x00,
-/* sc=08 */ '7', '&', NOP, NOP, '7', '&', NOP, NOP, 0x33, 0x00,
-/* sc=09 */ '8', '*', NOP, NOP, '8', '*', NOP, NOP, 0x33, 0x00,
-/* sc=0a */ '9', '(', NOP, NOP, '9', '(', NOP, NOP, 0x33, 0x00,
-/* sc=0b */ '0', ')', NOP, NOP, '0', ')', NOP, NOP, 0x33, 0x00,
-/* sc=0c */ '-', '_', 0x1F, 0x1F, '-', '_', 0x1F, 0x1F, 0x00, 0x00,
-/* sc=0d */ '=', '+', NOP, NOP, '=', '+', NOP, NOP, 0x33, 0x00,
-/* sc=0e */ 0x08, 0x08, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, 0x00,
-/* sc=0f */ 0x09, BTAB, NOP, NOP, 0x09, BTAB, NOP, NOP, 0x77, 0x00,
-/* sc=10 */ 'q', 'Q', 0x11, 0x11, 'q', 'Q', 0x11, 0x11, 0x00, 0x01,
-/* sc=11 */ 'w', 'W', 0x17, 0x17, 'w', 'W', 0x17, 0x17, 0x00, 0x01,
-/* sc=12 */ 'e', 'E', 0x05, 0x05, 'e', 'E', 0x05, 0x05, 0x00, 0x01,
-/* sc=13 */ 'r', 'R', 0x12, 0x12, 'r', 'R', 0x12, 0x12, 0x00, 0x01,
-/* sc=14 */ 't', 'T', 0x14, 0x14, 't', 'T', 0x14, 0x14, 0x00, 0x01,
-/* sc=15 */ 'y', 'Y', 0x19, 0x19, 'y', 'Y', 0x19, 0x19, 0x00, 0x01,
-/* sc=16 */ 'u', 'U', 0x15, 0x15, 'u', 'U', 0x15, 0x15, 0x00, 0x01,
-/* sc=17 */ 'i', 'I', 0x09, 0x09, 'i', 'I', 0x09, 0x09, 0x00, 0x01,
-/* sc=18 */ 'o', 'O', 0x0F, 0x0F, 'o', 'O', 0x0F, 0x0F, 0x00, 0x01,
-/* sc=19 */ 'p', 'P', 0x10, 0x10, 'p', 'P', 0x10, 0x10, 0x00, 0x01,
-/* sc=1a */ '[', '{', 0x1B, 0x1B, '[', '{', 0x1B, 0x1B, 0x00, 0x00,
-/* sc=1b */ ']', '}', 0x1D, 0x1D, ']', '}', 0x1D, 0x1D, 0x00, 0x00,
-/* sc=1c */ 0x0D, 0x0D, 0x0A, 0x0A, 0x0D, 0x0D, 0x0A, 0x0A, 0x00, 0x00,
-/* sc=1d */ LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, LCTR, 0xFF, 0x00,
-/* sc=1e */ 'a', 'A', 0x01, 0x01, 'a', 'A', 0x01, 0x01, 0x00, 0x01,
-/* sc=1f */ 's', 'S', 0x13, 0x13, 's', 'S', 0x13, 0x13, 0x00, 0x01,
-/* sc=20 */ 'd', 'D', 0x04, 0x04, 'd', 'D', 0x04, 0x04, 0x00, 0x01,
-/* sc=21 */ 'f', 'F', 0x06, 0x06, 'f', 'F', 0x06, 0x06, 0x00, 0x01,
-/* sc=22 */ 'g', 'G', 0x07, 0x07, 'g', 'G', 0x07, 0x07, 0x00, 0x01,
-/* sc=23 */ 'h', 'H', 0x08, 0x08, 'h', 'H', 0x08, 0x08, 0x00, 0x01,
-/* sc=24 */ 'j', 'J', 0x0A, 0x0A, 'j', 'J', 0x0A, 0x0A, 0x00, 0x01,
-/* sc=25 */ 'k', 'K', 0x0B, 0x0B, 'k', 'K', 0x0B, 0x0B, 0x00, 0x01,
-/* sc=26 */ 'l', 'L', 0x0C, 0x0C, 'l', 'L', 0x0C, 0x0C, 0x00, 0x01,
-/* sc=27 */ ';', ':', NOP, NOP, ';', ':', NOP, NOP, 0x33, 0x00,
-/* sc=28 */ '\'', '"', NOP, NOP, '\'', '"', NOP, NOP, 0x33, 0x00,
-/* sc=29 */ '`', '~', NOP, NOP, '`', '~', NOP, NOP, 0x33, 0x00,
-/* sc=2a */ LSH, LSH, LSH, LSH, LSH, LSH, LSH, LSH, 0xFF, 0x00,
-/* sc=2b */ '\\', '|', 0x1C, 0x1C, '\\', '|', 0x1C, 0x1C, 0x00, 0x00,
-/* sc=2c */ 'z', 'Z', 0x1A, 0x1A, 'z', 'Z', 0x1A, 0x1A, 0x00, 0x01,
-/* sc=2d */ 'x', 'X', 0x18, 0x18, 'x', 'X', 0x18, 0x18, 0x00, 0x01,
-/* sc=2e */ 'c', 'C', 0x03, 0x03, 'c', 'C', 0x03, 0x03, 0x00, 0x01,
-/* sc=2f */ 'v', 'V', 0x16, 0x16, 'v', 'V', 0x16, 0x16, 0x00, 0x01,
-/* sc=30 */ 'b', 'B', 0x02, 0x02, 'b', 'B', 0x02, 0x02, 0x00, 0x01,
-/* sc=31 */ 'n', 'N', 0x0E, 0x0E, 'n', 'N', 0x0E, 0x0E, 0x00, 0x01,
-/* sc=32 */ 'm', 'M', 0x0D, 0x0D, 'm', 'M', 0x0D, 0x0D, 0x00, 0x01,
-/* sc=33 */ ',', '<', NOP, NOP, ',', '<', NOP, NOP, 0x33, 0x00,
-/* sc=34 */ '.', '>', NOP, NOP, '.', '>', NOP, NOP, 0x33, 0x00,
-/* sc=35 */ '/', '?', NOP, NOP, '/', '?', NOP, NOP, 0x33, 0x00,
-/* sc=36 */ RSH, RSH, RSH, RSH, RSH, RSH, RSH, RSH, 0xFF, 0x00,
-/* sc=37 */ '*', '*', 0x0A, 0x0A, '*', '*', 0x0A, 0x0A, 0x33, 0x00,
-/* sc=38 */ LALT, LALT, LALT, LALT, LALT, LALT, LALT, LALT, 0xFF, 0x00,
-/* sc=39 */ ' ', ' ', 0x00, ' ', ' ', ' ', SUSP, ' ', 0x02, 0x00,
-/* sc=3a */ CLK, CLK, CLK, CLK, CLK, CLK, CLK, CLK, 0xFF, 0x00,
-/* sc=3b */ F( 1), F(13), F(25), F(37), S( 1), S(11), S( 1), S(11), 0xFF, 0x00,
-/* sc=3c */ F( 2), F(14), F(26), F(38), S( 2), S(12), S( 2), S(12), 0xFF, 0x00,
-/* sc=3d */ F( 3), F(15), F(27), F(39), S( 3), S(13), S( 3), S(13), 0xFF, 0x00,
-/* sc=3e */ F( 4), F(16), F(28), F(40), S( 4), S(14), S( 4), S(14), 0xFF, 0x00,
-/* sc=3f */ F( 5), F(17), F(29), F(41), S( 5), S(15), S( 5), S(15), 0xFF, 0x00,
-/* sc=40 */ F( 6), F(18), F(30), F(42), S( 6), S(16), S( 6), S(16), 0xFF, 0x00,
-/* sc=41 */ F( 7), F(19), F(31), F(43), S( 7), S( 7), S( 7), S( 7), 0xFF, 0x00,
-/* sc=42 */ F( 8), F(20), F(32), F(44), S( 8), S( 8), S( 8), S( 8), 0xFF, 0x00,
-/* sc=43 */ F( 9), F(21), F(33), F(45), S( 9), S( 9), S( 9), S( 9), 0xFF, 0x00,
-/* sc=44 */ F(10), F(22), F(34), F(46), S(10), S(10), S(10), S(10), 0xFF, 0x00,
-/* sc=45 */ NLK, NLK, NLK, NLK, NLK, NLK, NLK, NLK, 0xFF, 0x00,
-/* sc=46 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=47 */ F(49), '7', '7', '7', '7', '7', '7', '7', 0x80, 0x02,
-/* sc=48 */ F(50), '8', '8', '8', '8', '8', '8', '8', 0x80, 0x02,
-/* sc=49 */ F(51), '9', '9', '9', '9', '9', '9', '9', 0x80, 0x02,
-/* sc=4a */ F(52), '-', '-', '-', '-', '-', '-', '-', 0x80, 0x02,
-/* sc=4b */ F(53), '4', '4', '4', '4', '4', '4', '4', 0x80, 0x02,
-/* sc=4c */ F(54), '5', '5', '5', '5', '5', '5', '5', 0x80, 0x02,
-/* sc=4d */ F(55), '6', '6', '6', '6', '6', '6', '6', 0x80, 0x02,
-/* sc=4e */ F(56), '+', '+', '+', '+', '+', '+', '+', 0x80, 0x02,
-/* sc=4f */ F(57), '1', '1', '1', '1', '1', '1', '1', 0x80, 0x02,
-/* sc=50 */ F(58), '2', '2', '2', '2', '2', '2', '2', 0x80, 0x02,
-/* sc=51 */ F(59), '3', '3', '3', '3', '3', '3', '3', 0x80, 0x02,
-/* sc=52 */ F(60), '0', '0', '0', '0', '0', '0', '0', 0x80, 0x02,
-/* sc=53 */ 0x7F, '.', '.', '.', '.', '.', RBT, RBT, 0x03, 0x02,
-/* sc=54 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=55 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=56 */ NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=57 */ F(11), F(23), F(35), F(47), S(11), S(11), S(11), S(11), 0xFF, 0x00,
-/* sc=58 */ F(12), F(24), F(36), F(48), S(12), S(12), S(12), S(12), 0xFF, 0x00,
-/* sc=59 */ 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00,
-/* sc=5a */ RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, RCTR, 0xFF, 0x00,
-/* sc=5b */ '/', '/', '/', '/', '/', '/', '/', '/', 0x00, 0x00,
-/* sc=5c */ NEXT, NOP, DBG, NOP, NOP, NOP, NOP, NOP, 0xFF, 0x00,
-/* sc=5d */ RALT, RALT, RALT, RALT, RALT, RALT, RALT, RALT, 0xFF, 0x00,
-/* sc=5e */ F(49), F(49), F(49), F(49), F(49), F(49), F(49), F(49), 0xFF, 0x00,
-/* sc=5f */ F(50), F(50), F(50), F(50), F(50), F(50), F(50), F(50), 0xFF, 0x00,
-/* sc=60 */ F(51), F(51), F(51), F(51), F(51), F(51), F(51), F(51), 0xFF, 0x00,
-/* sc=61 */ F(53), F(53), F(53), F(53), F(53), F(53), F(53), F(53), 0xFF, 0x00,
-/* sc=62 */ F(55), F(55), F(55), F(55), F(55), F(55), F(55), F(55), 0xFF, 0x00,
-/* sc=63 */ F(57), F(57), F(57), F(57), F(57), F(57), F(57), F(57), 0xFF, 0x00,
-/* sc=64 */ F(58), F(58), F(58), F(58), F(58), F(58), F(58), F(58), 0xFF, 0x00,
-/* sc=65 */ F(59), F(59), F(59), F(59), F(59), F(59), F(59), F(59), 0xFF, 0x00,
-/* sc=66 */ F(60), F(60), F(60), F(60), F(60), F(60), F(60), F(60), 0xFF, 0x00,
-/* sc=67 */ F(61), F(61), F(61), F(61), F(61), F(61), RBT, F(61), 0xFF, 0x00,
-/* sc=68 */ SLK, SLK, SLK, SLK, SLK, SLK, SLK, SLK, 0xFF, 0x00,
-/* sc=69 */ F(62), F(62), F(62), F(62), F(62), F(62), F(62), F(62), 0xFF, 0x00,
-/* sc=6a */ F(63), F(63), F(63), F(63), F(63), F(63), F(63), F(63), 0xFF, 0x00,
-/* sc=6b */ F(64), F(64), F(64), F(64), F(64), F(64), F(64), F(64), 0xFF, 0x00,
-};
-#endif
-
-#if defined(NO_ACCENTCHARS)
-static accentmap_t accent_map = { 0, /* empty accent map */
- {
- { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
- { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 }, { 0 },
- }
-};
-#endif
-
-#if defined(ISO_ACCENTCHARS)
-static accentmap_t accent_map = { 15, /* iso8859 accent map */
- {
- /* dgra=0 */
- { '`', { { 'a',0xe0 }, { 'A',0xc0 }, { 'e',0xe8 }, { 'E',0xc8 },
- { 'i',0xec }, { 'I',0xcc }, { 'o',0xf2 }, { 'O',0xd2 },
- { 'u',0xf9 }, { 'U',0xd9 }, }, },
- /* dacu=1 */
- { 0xb4, { { 'a',0xe1 }, { 'A',0xc1 }, { 'e',0xe9 }, { 'E',0xc9 },
- { 'i',0xed }, { 'I',0xcd }, { 'o',0xf3 }, { 'O',0xd3 },
- { 'u',0xfa }, { 'U',0xda }, { 'y',0xfd }, { 'Y',0xdd }, }, },
- /* dcir=2 */
- { '^', { { 'a',0xe2 }, { 'A',0xc2 }, { 'e',0xea }, { 'E',0xca },
- { 'i',0xee }, { 'I',0xce }, { 'o',0xf4 }, { 'O',0xd4 },
- { 'u',0xfb }, { 'U',0xdb }, }, },
- /* dtil=3 */
- { '~', { { 'a',0xe3 }, { 'A',0xc3 }, { 'n',0xf1 }, { 'N',0xd1 },
- { 'o',0xf5 }, { 'O',0xd5 }, }, },
- /* dmac=4 */
- { 0 },
- /* dbre=5 */
- { 0 },
- /* ddot=6 */
- { 0 },
- /* duml=7 */
- { 0xa8, { { 'a',0xe4 }, { 'A',0xc4 }, { 'e',0xeb }, { 'E',0xcb },
- { 'i',0xef }, { 'I',0xcf }, { 'o',0xf6 }, { 'O',0xd6 },
- { 'u',0xfc }, { 'U',0xdc }, { 'y',0xff }, }, },
- /* dsla=8 */
- { 0 },
- /* drin=9 */
- { 0xb0, { { 'a',0xe5 }, { 'A',0xc5 }, }, },
- /* dced=10 */
- { 0xb8, { { 'c',0xe7 }, { 'C',0xc7 }, }, },
- /* dapo=11 */
- { 0 },
- /* ddac=12 */
- { 0 },
- /* dogo=13 */
- { 0 },
- /* dcar=14 */
- { 0 },
- }
-};
-#endif /* ISO_ACCENTCHARS */
-
-static fkeytab_t fkey_tab[96] = {
-/* 01-04 */ {"\033[M", 3}, {"\033[N", 3}, {"\033[O", 3}, {"\033[P", 3},
-/* 05-08 */ {"\033[Q", 3}, {"\033[R", 3}, {"\033[S", 3}, {"\033[T", 3},
-/* 09-12 */ {"\033[U", 3}, {"\033[V", 3}, {"\033[W", 3}, {"\033[X", 3},
-/* 13-16 */ {"\033[Y", 3}, {"\033[Z", 3}, {"\033[a", 3}, {"\033[b", 3},
-/* 17-20 */ {"\033[c", 3}, {"\033[d", 3}, {"\033[e", 3}, {"\033[f", 3},
-/* 21-24 */ {"\033[g", 3}, {"\033[h", 3}, {"\033[i", 3}, {"\033[j", 3},
-/* 25-28 */ {"\033[k", 3}, {"\033[l", 3}, {"\033[m", 3}, {"\033[n", 3},
-/* 29-32 */ {"\033[o", 3}, {"\033[p", 3}, {"\033[q", 3}, {"\033[r", 3},
-/* 33-36 */ {"\033[s", 3}, {"\033[t", 3}, {"\033[u", 3}, {"\033[v", 3},
-/* 37-40 */ {"\033[w", 3}, {"\033[x", 3}, {"\033[y", 3}, {"\033[z", 3},
-/* 41-44 */ {"\033[@", 3}, {"\033[[", 3}, {"\033[\\",3}, {"\033[]", 3},
-/* 45-48 */ {"\033[^", 3}, {"\033[_", 3}, {"\033[`", 3}, {"\033[{", 3},
-/* 49-52 */ {"\033[H", 3}, {"\033[A", 3}, {"\033[I", 3}, {"-" , 1},
-/* 53-56 */ {"\033[D", 3}, {"\033[E", 3}, {"\033[C", 3}, {"+" , 1},
-/* 57-60 */ {"\033[F", 3}, {"\033[B", 3}, {"\033[G", 3}, {"\033[L", 3},
-/* 61-64 */ {"\177", 1}, {"\033[J", 3}, {"\033[~", 3}, {"\033[}", 3},
-/* 65-68 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 69-72 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 73-76 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 77-80 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 81-84 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 85-88 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 89-92 */ {"", 0} , {"", 0} , {"", 0} , {"", 0} ,
-/* 93-96 */ {"", 0} , {"", 0} , {"", 0} , {"", 0}
-};
diff --git a/sys/dev/pci/ohci_pci.c b/sys/dev/pci/ohci_pci.c
deleted file mode 100644
index ece467c1a5aab..0000000000000
--- a/sys/dev/pci/ohci_pci.c
+++ /dev/null
@@ -1,200 +0,0 @@
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * USB Open Host Controller driver.
- *
- * OHCI spec: http://www.intel.com/design/usb/ohci11d.pdf
- * USB spec: http://www.teleport.com/cgi-bin/mailmerge.cgi/~usb/cgiform.tpl
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/device.h>
-#include <sys/proc.h>
-#include <sys/queue.h>
-
-#include <pci/pcivar.h>
-#include <pci/pcireg.h>
-
-#define PCI_CLASS_SERIALBUS 0x0c000000
-#define PCI_SUBCLASS_COMMUNICATIONS_SERIAL 0x00000000
-#define PCI_SUBCLASS_SERIALBUS_FIREWIRE 0x00000000
-#define PCI_SUBCLASS_SERIALBUS_ACCESS 0x00010000
-#define PCI_SUBCLASS_SERIALBUS_SSA 0x00020000
-#define PCI_SUBCLASS_SERIALBUS_USB 0x00030000
-#define PCI_SUBCLASS_SERIALBUS_FIBER 0x00040000
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdivar.h>
-#include <dev/usb/usb_mem.h>
-
-#include <dev/usb/ohcireg.h>
-#include <dev/usb/ohcivar.h>
-
-#define PCI_INTERFACE(d) (((d) >> 8) & 0xff)
-#define PCI_SUBCLASS(d) ((d) & PCI_SUBCLASS_MASK)
-#define PCI_CLASS(d) ((d) & PCI_CLASS_MASK)
-
-#define PCI_VENDOR(d) ((d) & 0xffff)
-#define PCI_DEVICE(d) (((d) >> 8) & 0xffff)
-
-#define PCI_OHCI_VENDORID_ALI 0x10b9
-#define PCI_OHCI_VENDORID_SIS 0x1039
-
-#define PCI_OHCI_DEVICEID_ALADDIN_V 0x523710b9
-static const char ohci_device_aladdin_v[] = "AcerLabs M5237 (Aladdin-V) USB Host Controller";
-static const char ohci_device_generic[] = "OHCI USB Host Controller (generic)";
-
-#define PCI_OHCI_BASE_REG 0x10
-
-static const char *ohci_pci_probe __P((pcici_t, pcidi_t));
-static void ohci_pci_attach __P((pcici_t, int));
-
-u_long ohci_count = 0; /* global counter for nr. of devices found */
-
-static struct pci_device ohci_pci_device = {
- "ohci",
- ohci_pci_probe,
- ohci_pci_attach,
- &ohci_count,
- NULL
-};
-
-DATA_SET(pcidevice_set, ohci_pci_device);
-
-static const char *
-ohci_pci_probe(pcici_t config_id, pcidi_t device_id)
-{
- u_int32_t class;
-
- if (device_id == PCI_OHCI_DEVICEID_ALADDIN_V) {
- return (ohci_device_aladdin_v);
- } else {
- class = pci_conf_read(config_id, PCI_CLASS_REG);
- if ( (PCI_CLASS(class) == PCI_CLASS_SERIALBUS)
- && (PCI_SUBCLASS(class) == PCI_SUBCLASS_SERIALBUS_USB)
- && (PCI_INTERFACE(class) == PCI_INTERFACE_OHCI)) {
- return(ohci_device_generic);
- }
- }
-
- return NULL; /* dunno */
-}
-
-static void
-ohci_pci_attach(pcici_t config_id, int unit)
-{
- int id;
- usbd_status r;
- ohci_softc_t *sc = NULL;
- vm_offset_t pbase;
-
- sc = malloc(sizeof(ohci_softc_t), M_DEVBUF, M_NOWAIT);
- /* Do not free it below, intr might use the sc */
- if ( sc == NULL ) {
- printf("usb%d: could not allocate memory", unit);
- return;
- }
- memset(sc, 0, sizeof(ohci_softc_t));
-
- if(!pci_map_mem(config_id, PCI_CBMEM,
- (vm_offset_t *)&sc->sc_iobase, &pbase)) {
- printf("usb%d: could not map memory\n", unit);
- return;
- }
- sc->unit = unit;
-
- if ( !pci_map_int(config_id, (pci_inthand_t *)ohci_intr,
- (void *) sc, &bio_imask)) {
- printf("usb%d: could not map irq\n", unit);
- return;
- }
-
- /* Figure out vendor for root hub descriptor. */
- id = pci_conf_read(config_id, PCI_ID_REG);
- if (PCI_VENDOR(id) == PCI_OHCI_VENDORID_ALI)
- sprintf(sc->sc_vendor, "AcerLabs");
- else if (PCI_VENDOR(id) == PCI_OHCI_VENDORID_SIS)
- sprintf(sc->sc_vendor, "SiS");
- else
- sprintf(sc->sc_vendor, "(0x%04x)", PCI_VENDOR(id));
-
- /* We add a child to the root bus. After PCI configuration
- * has completed the root bus will start to probe and
- * attach all the devices attached to it, including our new
- * kid.
- *
- * FIXME Sometime in the future the UHCI controller itself will
- * become a kid of PCI device and this device add will no longer
- * be necessary.
- *
- * See README for an elaborate description of the bus
- * structure in spe.
- */
- sc->sc_bus.bdev = device_add_child(root_bus, "usb", unit, sc);
- if (!sc->sc_bus.bdev) {
- printf("%s%d: could not add USB device to root bus\n",
- device_get_name(sc->sc_bus.bdev),
- device_get_unit(sc->sc_bus.bdev));
- return;
- }
-
- r = ohci_init(sc);
- if (r != USBD_NORMAL_COMPLETION) {
- printf("usb%d: init failed, error=%d\n", unit, r);
- device_delete_child(root_bus, sc->sc_bus.bdev);
- return;
- }
-
- switch(id) {
- case PCI_OHCI_DEVICEID_ALADDIN_V:
- device_set_desc(sc->sc_bus.bdev, ohci_device_aladdin_v);
- break;
- default:
- printf("(New OHCI DeviceId=0x%08x)\n", id);
- device_set_desc(sc->sc_bus.bdev, ohci_device_generic);
- }
-
- return;
-}
diff --git a/sys/dev/pci/uhci_pci.c b/sys/dev/pci/uhci_pci.c
deleted file mode 100644
index 083540f4b7921..0000000000000
--- a/sys/dev/pci/uhci_pci.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/* FreeBSD $Id: uhci_pci.c,v 1.7 1999/01/06 19:55:49 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/device.h>
-#include <sys/proc.h>
-#include <sys/queue.h>
-
-#include <pci/pcivar.h>
-#include <pci/pcireg.h>
-
-#define PCI_CLASS_SERIALBUS 0x0c000000
-#define PCI_SUBCLASS_COMMUNICATIONS_SERIAL 0x00000000
-#define PCI_SUBCLASS_SERIALBUS_FIREWIRE 0x00000000
-#define PCI_SUBCLASS_SERIALBUS_ACCESS 0x00010000
-#define PCI_SUBCLASS_SERIALBUS_SSA 0x00020000
-#define PCI_SUBCLASS_SERIALBUS_USB 0x00030000
-#define PCI_SUBCLASS_SERIALBUS_FIBER 0x00040000
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdivar.h>
-#include <dev/usb/usb_mem.h>
-
-#include <dev/usb/uhcireg.h>
-#include <dev/usb/uhcivar.h>
-
-#define PCI_INTERFACE(d) (((d)>>8)&0xff)
-#define PCI_SUBCLASS(d) ((d)&PCI_SUBCLASS_MASK)
-#define PCI_CLASS(d) ((d)&PCI_CLASS_MASK)
-
-#define PCI_VENDOR(d) ((d)&0xffff)
-#define PCI_DEVICE(d) (((d)>>8)&0xffff)
-
-#define PCI_UHCI_VENDORID_INTEL 0x8086
-#define PCI_UHCI_VENDORID_VIA 0x1106
-
-#define PCI_UHCI_DEVICEID_PIIX3 0x70208086ul
-static const char *uhci_device_piix3 = "Intel 82371SB USB Host Controller";
-#define PCI_UHCI_DEVICEID_PIIX4 0x71128086ul
-#define PCI_UHCI_DEVICEID_PIIX4E 0x71128086ul /* no separate step */
-static const char *uhci_device_piix4 = "Intel 82371AB/EB USB Host Controller";
-#define PCI_UHCI_DEVICEID_VT83C572 0x30381106ul
-static const char *uhci_device_vt83c572 = "VIA 83C572 USB Host Controller";
-static const char *uhci_device_generic = "UHCI USB Controller (generic)";
-
-#define PCI_UHCI_BASE_REG 0x20
-
-static const char *uhci_pci_probe __P((pcici_t, pcidi_t));
-static void uhci_pci_attach __P((pcici_t, int));
-
-u_long uhci_count = 0; /* global counter for nr. of devices found */
-
-static struct pci_device uhci_pci_device = {
- "uhci",
- uhci_pci_probe,
- uhci_pci_attach,
- &uhci_count,
- NULL
-};
-
-DATA_SET(pcidevice_set, uhci_pci_device);
-
-
-static const char *
-uhci_pci_probe(pcici_t config_id, pcidi_t device_id)
-{
- u_int32_t class;
-
- if (device_id == PCI_UHCI_DEVICEID_PIIX3) {
- return (uhci_device_piix3);
- } else if (device_id == PCI_UHCI_DEVICEID_PIIX4) {
- return (uhci_device_piix4);
- } else if (device_id == PCI_UHCI_DEVICEID_VT83C572) {
- return (uhci_device_vt83c572);
- } else {
- class = pci_conf_read(config_id, PCI_CLASS_REG);
- if ( PCI_CLASS(class) == PCI_CLASS_SERIALBUS
- && PCI_SUBCLASS(class) == PCI_SUBCLASS_SERIALBUS_USB
- && PCI_INTERFACE(class) == PCI_INTERFACE_UHCI) {
- return (uhci_device_generic);
- }
- }
-
- return NULL; /* dunno... */
-}
-
-static void
-uhci_pci_attach(pcici_t config_id, int unit)
-{
- int id;
- char *typestr;
- usbd_status r;
- uhci_softc_t *sc = NULL;
-
- sc = malloc(sizeof(uhci_softc_t), M_DEVBUF, M_NOWAIT);
- /* Do not free it below, intr might use the sc */
- if ( sc == NULL ) {
- printf("usb%d: could not allocate memory", unit);
- return;
- }
- memset(sc, 0, sizeof(uhci_softc_t));
-
- sc->sc_iobase = pci_conf_read(config_id,PCI_UHCI_BASE_REG) & 0xffe0;
- sc->unit = unit;
-
- if ( !pci_map_int(config_id, (pci_inthand_t *)uhci_intr,
- (void *) sc, &bio_imask)) {
- printf("usb%d: could not map irq\n", unit);
- return;
- }
-
-#ifndef USBVERBOSE
- if (bootverbose)
-#endif
- {
- switch(pci_conf_read(config_id, PCI_USBREV) & PCI_USBREV_MASK) {
- case PCI_USBREV_PRE_1_0:
- typestr = "pre 1.0";
- break;
- case PCI_USBREV_1_0:
- typestr = "1.0";
- break;
- default:
- typestr = "unknown";
- break;
- }
- printf("usb%d: USB version %s, interrupting at %d\n", unit,
- typestr,
- (int)pci_conf_read(config_id,PCI_INTERRUPT_REG) & 0xff);
- }
-
- /* Figure out vendor for root hub descriptor. */
- id = pci_conf_read(config_id, PCI_ID_REG);
- if (PCI_VENDOR(id) == PCI_UHCI_VENDORID_INTEL)
- sprintf(sc->sc_vendor, "Intel");
- else if (PCI_VENDOR(id) == PCI_UHCI_VENDORID_VIA)
- sprintf(sc->sc_vendor, "VIA");
- else
- sprintf(sc->sc_vendor, "(0x%04x)", PCI_VENDOR(id));
-
- /* We add a child to the root bus. After PCI configuration
- * has completed the root bus will start to probe and
- * attach all the devices attached to it, including our new
- * kid.
- *
- * FIXME Sometime in the future the UHCI controller itself will
- * become a kid of PCI device and this device add will no longer
- * be necessary.
- *
- * See README for an elaborate description of the bus
- * structure in spe.
- */
- sc->sc_bus.bdev = device_add_child(root_bus, "usb", unit, sc);
- if (!sc->sc_bus.bdev) {
- printf("%s%d: could not add USB device to root bus\n",
- device_get_name(sc->sc_bus.bdev),
- device_get_unit(sc->sc_bus.bdev));
- return;
- }
-
- r = uhci_init(sc);
- if (r != USBD_NORMAL_COMPLETION) {
- printf("%s%d: init failed, error=%d\n",
- device_get_name(sc->sc_bus.bdev),
- device_get_unit(sc->sc_bus.bdev),
- r);
- device_delete_child(root_bus, sc->sc_bus.bdev);
- return;
- }
-
- switch (id) {
- case PCI_UHCI_DEVICEID_PIIX3:
- device_set_desc(sc->sc_bus.bdev, uhci_device_piix3);
- break;
- case PCI_UHCI_DEVICEID_PIIX4:
- device_set_desc(sc->sc_bus.bdev, uhci_device_piix4);
- break;
- case PCI_UHCI_DEVICEID_VT83C572:
- device_set_desc(sc->sc_bus.bdev, uhci_device_vt83c572);
- break;
- default:
- printf("(New UHCI DeviceId=0x%08x)\n", id);
- device_set_desc(sc->sc_bus.bdev, uhci_device_generic);
- }
-
- return;
-}
diff --git a/sys/dev/ppbus/if_plip.c b/sys/dev/ppbus/if_plip.c
index 7d64cd24fef6c..4bee255fd5a64 100644
--- a/sys/dev/ppbus/if_plip.c
+++ b/sys/dev/ppbus/if_plip.c
@@ -24,7 +24,7 @@
* SUCH DAMAGE.
*
* From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
- * $Id: if_plip.c,v 1.6 1998/11/07 14:35:41 nsouch Exp $
+ * $Id: if_plip.c,v 1.3 1998/08/17 01:05:23 bde Exp $
*/
/*
@@ -129,9 +129,7 @@
#define LPIPTBLSIZE 256 /* Size of octet translation table */
-#ifndef DEBUG
#define DEBUG
-#endif
#ifndef DEBUG
#define lprintf (void)
@@ -336,16 +334,17 @@ lpioctl (struct ifnet *ifp, u_long cmd, caddr_t data)
}
if (((ifp->if_flags & IFF_UP)) && (!(ifp->if_flags & IFF_RUNNING))) {
- /* XXX
+ /*
+ * Try to allocate the ppbus as soon as possible
+ * With ppbus allocation, interrupts are enabled
+ * Now IFF_UP means that we own the bus
+ *
+ * XXX
* Should the request be interruptible?
*/
if ((error = ppb_request_bus(&sc->lp_dev, PPB_WAIT|PPB_INTR)))
return (error);
- /* Now IFF_UP means that we own the bus */
-
- ppb_set_mode(&sc->lp_dev, PPB_COMPATIBLE);
-
if (lpinittables()) {
ppb_release_bus(&sc->lp_dev);
return ENOBUFS;
@@ -394,13 +393,6 @@ lpioctl (struct ifnet *ifp, u_long cmd, caddr_t data)
}
break;
- case SIOCGIFMEDIA:
- /*
- * No ifmedia support at this stage; maybe use it
- * in future for eg. protocol selection.
- */
- return EINVAL;
-
default:
lprintf("LP:ioctl(0x%lx)\n", cmd);
return EINVAL;
@@ -427,7 +419,7 @@ clpoutbyte (u_char byte, int spin, struct ppb_device *dev)
static __inline int
clpinbyte (int spin, struct ppb_device *dev)
{
- u_char c, cl;
+ int c, cl;
while((ppb_rstr(dev) & CLPIP_SHAKE))
if(!--spin) {
diff --git a/sys/dev/ppbus/immio.c b/sys/dev/ppbus/immio.c
index 67054f79bea2e..630707cb0ad02 100644
--- a/sys/dev/ppbus/immio.c
+++ b/sys/dev/ppbus/immio.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: immio.c,v 1.4 1998/10/31 11:35:21 nsouch Exp $
+ * $Id: immio.c,v 1.2 1998/09/20 14:41:54 nsouch Exp $
*
*/
@@ -47,8 +47,6 @@
#include <sys/kernel.h>
#endif /*KERNEL */
-#include "opt_vpo.h"
-
#include <dev/ppbus/ppbconf.h>
#include <dev/ppbus/ppb_msq.h>
#include <dev/ppbus/vpoio.h>
@@ -288,13 +286,9 @@ imm_disconnect(struct vpoio_data *vpo, int *connected, int release_bus)
ppb_MS_microseq(&vpo->vpo_dev, cpp_microseq, &ret);
- if ((s1 != (char)0xb8 || s2 != (char)0x18 || s3 != (char)0x38)) {
- if (bootverbose)
- printf("imm%d: (disconnect) s1=0x%x s2=0x%x, s3=0x%x\n",
- vpo->vpo_unit, s1 & 0xff, s2 & 0xff, s3 & 0xff);
- if (connected)
- *connected = VP0_ECONNECT;
- }
+ if ((s1 != (char)0xb8 || s2 != (char)0x18 || s3 != (char)0x38) &&
+ connected)
+ *connected = VP0_ECONNECT;
if (release_bus)
return (ppb_release_bus(&vpo->vpo_dev));
@@ -340,13 +334,9 @@ imm_connect(struct vpoio_data *vpo, int how, int *disconnected, int request_bus)
ppb_MS_microseq(&vpo->vpo_dev, cpp_microseq, &ret);
- if ((s1 != (char)0xb8 || s2 != (char)0x18 || s3 != (char)0x30)) {
- if (bootverbose)
- printf("imm%d: (connect) s1=0x%x s2=0x%x, s3=0x%x\n",
- vpo->vpo_unit, s1 & 0xff, s2 & 0xff, s3 & 0xff);
- if (disconnected)
- *disconnected = VP0_ECONNECT;
- }
+ if ((s1 != (char)0xb8 || s2 != (char)0x18 || s3 != (char)0x30)
+ && disconnected)
+ *disconnected = VP0_ECONNECT;
return (0);
}
diff --git a/sys/dev/ppbus/lpbb.c b/sys/dev/ppbus/lpbb.c
deleted file mode 100644
index cd8ff244a0c61..0000000000000
--- a/sys/dev/ppbus/lpbb.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*-
- * Copyright (c) 1998 Nicolas Souchu, Marc Bouget
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $Id: lpbb.c,v 1.3 1998/12/07 21:58:16 archie Exp $
- *
- */
-
-/*
- * I2C Bit-Banging over parallel port
- *
- * See the Official Philips interface description in lpbb(4)
- */
-
-#include <sys/param.h>
-#include <sys/kernel.h>
-#include <sys/systm.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#include <sys/buf.h>
-#include <sys/uio.h>
-#include <sys/malloc.h>
-
-#include <machine/clock.h>
-
-#include <dev/ppbus/ppbconf.h>
-
-#include <dev/iicbus/iiconf.h>
-#include <dev/iicbus/iicbus.h>
-
-#include "iicbb_if.h"
-
-/* iicbus softc */
-struct lpbb_softc {
-
- struct ppb_device lpbb_dev;
-};
-
-static int lpbb_detect(struct lpbb_softc *);
-
-static int lpbb_probe(device_t);
-static int lpbb_attach(device_t);
-static void lpbb_print_child(device_t, device_t);
-
-static int lpbb_callback(device_t, int, caddr_t *);
-static void lpbb_setlines(device_t, int, int);
-static int lpbb_getdataline(device_t);
-static int lpbb_reset(device_t, u_char, u_char, u_char *);
-
-static devclass_t lpbb_devclass;
-
-static device_method_t lpbb_methods[] = {
- /* device interface */
- DEVMETHOD(device_probe, lpbb_probe),
- DEVMETHOD(device_attach, lpbb_attach),
-
- /* bus interface */
- DEVMETHOD(bus_print_child, lpbb_print_child),
-
- /* iicbb interface */
- DEVMETHOD(iicbb_callback, lpbb_callback),
- DEVMETHOD(iicbb_setlines, lpbb_setlines),
- DEVMETHOD(iicbb_getdataline, lpbb_getdataline),
- DEVMETHOD(iicbb_reset, lpbb_reset),
-
- { 0, 0 }
-};
-
-static driver_t lpbb_driver = {
- "lpbb",
- lpbb_methods,
- DRIVER_TYPE_MISC,
- sizeof(struct lpbb_softc),
-};
-
-/*
- * Make ourselves visible as a ppbus driver
- */
-static struct ppb_device *lpbb_ppb_probe(struct ppb_data *ppb);
-static int lpbb_ppb_attach(struct ppb_device *dev);
-
-#define MAXLPBB 8 /* XXX not much better! */
-static struct lpbb_softc *lpbbdata[MAXLPBB];
-static int nlpbb = 0;
-
-#ifdef KERNEL
-
-static struct ppb_driver lpbbdriver = {
- lpbb_ppb_probe, lpbb_ppb_attach, "lpbb"
-};
-DATA_SET(ppbdriver_set, lpbbdriver);
-
-#endif /* KERNEL */
-
-static int
-lpbb_probe(device_t dev)
-{
- struct lpbb_softc *sc = lpbbdata[device_get_unit(dev)];
- struct lpbb_softc *scdst = (struct lpbb_softc *)device_get_softc(dev);
-
- /* XXX copy softc. Yet, ppbus device is sc->lpbb_dev, but will be
- * dev->parent when ppbus will be ported to the new bus architecture */
- bcopy(sc, scdst, sizeof(struct lpbb_softc));
-
- device_set_desc(dev, "parallel I2C bit-banging interface");
-
- /* probe done by ppbus initialization */
- return (0);
-}
-
-static int
-lpbb_attach(device_t dev)
-{
- device_t bitbang, iicbus;
-
- /* add generic bit-banging code */
- bitbang = device_add_child(dev, "iicbb", -1, NULL);
-
- /* add the iicbus to the tree */
- iicbus = iicbus_alloc_bus(bitbang);
-
- device_probe_and_attach(bitbang);
-
- /* XXX should be in iicbb_attach! */
- device_probe_and_attach(iicbus);
-
- return (0);
-}
-
-/*
- * lppbb_ppb_probe()
- */
-static struct ppb_device *
-lpbb_ppb_probe(struct ppb_data *ppb)
-{
- struct lpbb_softc *sc;
-
- sc = (struct lpbb_softc *) malloc(sizeof(struct lpbb_softc),
- M_TEMP, M_NOWAIT);
- if (!sc) {
- printf("lpbb: cannot malloc!\n");
- return (0);
- }
- bzero(sc, sizeof(struct lpbb_softc));
-
- lpbbdata[nlpbb] = sc;
-
- /*
- * ppbus dependent initialisation.
- */
- sc->lpbb_dev.id_unit = nlpbb;
- sc->lpbb_dev.name = lpbbdriver.name;
- sc->lpbb_dev.ppb = ppb;
- sc->lpbb_dev.intr = 0;
-
- if (!lpbb_detect(sc)) {
- free(sc, M_TEMP);
- return (NULL);
- }
-
- /* Ok, go to next device on next probe */
- nlpbb ++;
-
- /* XXX wrong according to new bus architecture. ppbus needs to be
- * ported
- */
- return (&sc->lpbb_dev);
-}
-
-static int
-lpbb_ppb_attach(struct ppb_device *dev)
-{
- /* add the parallel port I2C interface to the bus tree */
- if (!device_add_child(root_bus, "lpbb", dev->id_unit, NULL))
- return (0);
-
- return (1);
-}
-
-static int
-lpbb_callback(device_t dev, int index, caddr_t *data)
-{
- struct lpbb_softc *sc = (struct lpbb_softc *)device_get_softc(dev);
- int error = 0;
- int how;
-
- switch (index) {
- case IIC_REQUEST_BUS:
- /* request the ppbus */
- how = *(int *)data;
- error = ppb_request_bus(&sc->lpbb_dev, how);
- break;
-
- case IIC_RELEASE_BUS:
- /* release the ppbus */
- error = ppb_release_bus(&sc->lpbb_dev);
- break;
-
- default:
- error = EINVAL;
- }
-
- return (error);
-}
-
-#define SDA_out 0x80
-#define SCL_out 0x08
-#define SDA_in 0x80
-#define SCL_in 0x08
-#define ALIM 0x20
-#define I2CKEY 0x50
-
-static int getSDA(struct lpbb_softc *sc)
-{
-if((ppb_rstr(&sc->lpbb_dev)&SDA_in)==SDA_in)
- return 1;
-else
- return 0;
-}
-
-static void setSDA(struct lpbb_softc *sc, char val)
-{
-if(val==0)
- ppb_wdtr(&sc->lpbb_dev, (u_char)SDA_out);
-else
- ppb_wdtr(&sc->lpbb_dev, (u_char)~SDA_out);
-}
-
-static void setSCL(struct lpbb_softc *sc, unsigned char val)
-{
-if(val==0)
- ppb_wctr(&sc->lpbb_dev, (u_char)(ppb_rctr(&sc->lpbb_dev)&~SCL_out));
-else
- ppb_wctr(&sc->lpbb_dev, (u_char)(ppb_rctr(&sc->lpbb_dev)|SCL_out));
-}
-
-static int lpbb_detect(struct lpbb_softc *sc)
-{
- if (ppb_request_bus(&sc->lpbb_dev, PPB_DONTWAIT)) {
- printf("lpbb: can't allocate ppbus\n");
- return (0);
- }
-
- /* reset bus */
- setSDA(sc, 1);
- setSCL(sc, 1);
-
- if ((ppb_rstr(&sc->lpbb_dev) & I2CKEY) ||
- ((ppb_rstr(&sc->lpbb_dev) & ALIM) != ALIM)) {
-
- ppb_release_bus(&sc->lpbb_dev);
- return (0);
- }
-
- ppb_release_bus(&sc->lpbb_dev);
-
- return (1);
-}
-
-static int
-lpbb_reset(device_t dev, u_char speed, u_char addr, u_char * oldaddr)
-{
- struct lpbb_softc *sc = (struct lpbb_softc *)device_get_softc(dev);
-
- /* reset bus */
- setSDA(sc, 1);
- setSCL(sc, 1);
-
- return (IIC_ENOADDR);
-}
-
-static void
-lpbb_setlines(device_t dev, int ctrl, int data)
-{
- struct lpbb_softc *sc = (struct lpbb_softc *)device_get_softc(dev);
-
- setSCL(sc, ctrl);
- setSDA(sc, data);
-}
-
-static int
-lpbb_getdataline(device_t dev)
-{
- struct lpbb_softc *sc = (struct lpbb_softc *)device_get_softc(dev);
-
- return (getSDA(sc));
-}
-
-static void
-lpbb_print_child(device_t bus, device_t dev)
-{
- printf(" on %s%d", device_get_name(bus), device_get_unit(bus));
-
- return;
-}
-
-DRIVER_MODULE(lpbb, root, lpbb_driver, lpbb_devclass, 0, 0);
diff --git a/sys/dev/ppbus/nlpt.c b/sys/dev/ppbus/nlpt.c
index 89d6c7f5a5a34..2a48eb4a2b766 100644
--- a/sys/dev/ppbus/nlpt.c
+++ b/sys/dev/ppbus/nlpt.c
@@ -47,7 +47,7 @@
*
* from: unknown origin, 386BSD 0.1
* From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
- * $Id: nlpt.c,v 1.11 1998/12/04 22:00:33 archie Exp $
+ * $Id: nlpt.c,v 1.9 1998/08/03 19:14:31 msmith Exp $
*/
/*
@@ -81,19 +81,12 @@
#endif /*KERNEL*/
#include <dev/ppbus/ppbconf.h>
-#include <dev/ppbus/ppb_1284.h>
#include <dev/ppbus/nlpt.h>
-#include "opt_nlpt.h"
-
#ifndef NLPT_DEBUG
-#define nlprintf(args)
+#define nlprintf (void)
#else
-#define nlprintf(args) \
- do { \
- if (nlptflag) \
- printf args; \
- } while (0)
+#define nlprintf if (nlptflag) printf
static int volatile nlptflag = 1;
#endif
@@ -102,7 +95,6 @@ static int volatile nlptflag = 1;
#define LPTOUTMAX 1 /* maximal timeout 1 s */
#define LPPRI (PZERO+8)
#define BUFSIZE 1024
-#define BUFSTATSIZE 32
#define LPTUNIT(s) ((s)&0x03)
#define LPTFLAGS(s) ((s)&0xfc)
@@ -167,12 +159,11 @@ DATA_SET(ppbdriver_set, nlptdriver);
static d_open_t nlptopen;
static d_close_t nlptclose;
static d_write_t nlptwrite;
-static d_read_t nlptread;
static d_ioctl_t nlptioctl;
#define CDEV_MAJOR 16
static struct cdevsw nlpt_cdevsw =
- { nlptopen, nlptclose, nlptread, nlptwrite, /*16*/
+ { nlptopen, nlptclose, noread, nlptwrite, /*16*/
nlptioctl, nullstop, nullreset, nodevtotty, /* lpt */
seltrue, nommap, nostrat, LPT_NAME, NULL, -1 };
@@ -181,9 +172,6 @@ lpt_request_ppbus(struct lpt_data *sc, int how)
{
int error;
- if (sc->sc_state & HAVEBUS)
- return (0);
-
/* we have the bus only if the request succeded */
if ((error = ppb_request_bus(&sc->lpt_dev, how)) == 0)
sc->sc_state |= HAVEBUS;
@@ -194,10 +182,13 @@ lpt_request_ppbus(struct lpt_data *sc, int how)
static int
lpt_release_ppbus(struct lpt_data *sc)
{
- ppb_release_bus(&sc->lpt_dev);
- sc->sc_state &= ~HAVEBUS;
+ int error;
+
+ /* we do not have the bus only if the request succeeded */
+ if ((error = ppb_release_bus(&sc->lpt_dev)) == 0)
+ sc->sc_state &= ~HAVEBUS;
- return (0);
+ return (error);
}
/*
@@ -216,7 +207,7 @@ nlpt_port_test(struct lpt_data *sc, u_char data, u_char mask)
temp = ppb_rdtr(&sc->lpt_dev) & mask;
}
while (temp != data && --timeout);
- nlprintf(("out=%x\tin=%x\ttout=%d\n", data, temp, timeout));
+ nlprintf("out=%x\tin=%x\ttout=%d\n", data, temp, timeout);
return (temp == data);
}
@@ -377,15 +368,15 @@ nlptattach(struct ppb_device *dev)
ppb_wctr(&sc->lpt_dev, LPC_NINIT);
/* check if we can use interrupt, should be done by ppc stuff */
- nlprintf(("oldirq %x\n", sc->sc_irq));
+ nlprintf("oldirq %x\n", sc->sc_irq);
if (ppb_get_irq(&sc->lpt_dev)) {
sc->sc_irq = LP_HAS_IRQ | LP_USE_IRQ | LP_ENABLE_IRQ;
printf(LPT_NAME "%d: Interrupt-driven port\n", dev->id_unit);
} else {
sc->sc_irq = 0;
- nlprintf((LPT_NAME "%d: Polled port\n", dev->id_unit));
+ nlprintf(LPT_NAME "%d: Polled port\n", dev->id_unit);
}
- nlprintf(("irq %x\n", sc->sc_irq));
+ nlprintf("irq %x\n", sc->sc_irq);
lpt_release_ppbus(sc);
@@ -407,7 +398,7 @@ nlptout(void *arg)
struct lpt_data *sc = arg;
int pl;
- nlprintf(("T %x ", ppb_rstr(&sc->lpt_dev)));
+ nlprintf ("T %x ", ppb_rstr(&sc->lpt_dev));
if (sc->sc_state & OPEN) {
sc->sc_backoff++;
if (sc->sc_backoff > hz/LPTOUTMAX)
@@ -444,7 +435,7 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
struct lpt_data *sc;
int s;
- int trys, err;
+ int trys;
u_int unit = LPTUNIT(minor(dev));
if ((unit >= nlpt))
@@ -453,7 +444,7 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
sc = lptdata[unit];
if (sc->sc_state) {
- nlprintf((LPT_NAME ": still open %x\n", sc->sc_state));
+ nlprintf(LPT_NAME ": still open %x\n", sc->sc_state);
return(EBUSY);
} else
sc->sc_state |= LPTINIT;
@@ -467,11 +458,12 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
}
/* request the ppbus only if we don't have it already */
- if (err = lpt_request_ppbus(sc, PPB_WAIT|PPB_INTR))
- return (err);
+ if ((sc->sc_state & HAVEBUS) == 0 &&
+ lpt_request_ppbus(sc, PPB_WAIT|PPB_INTR))
+ return (EINTR);
s = spltty();
- nlprintf((LPT_NAME " flags 0x%x\n", sc->sc_flags));
+ nlprintf(LPT_NAME " flags 0x%x\n", sc->sc_flags);
/* set IRQ status according to ENABLE_IRQ flag */
if (sc->sc_irq & LP_ENABLE_IRQ)
@@ -497,7 +489,7 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
if (trys++ >= LPINITRDY*4) {
splx(s);
sc->sc_state = 0;
- nlprintf(("status %x\n", ppb_rstr(&sc->lpt_dev)));
+ nlprintf ("status %x\n", ppb_rstr(&sc->lpt_dev) );
lpt_release_ppbus(sc);
return (EBUSY);
@@ -530,7 +522,6 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
sc->sc_state = OPEN;
sc->sc_inbuf = geteblk(BUFSIZE);
- sc->sc_statbuf = geteblk(BUFSTATSIZE);
sc->sc_xfercnt = 0;
splx(s);
@@ -538,14 +529,14 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
lpt_release_ppbus(sc);
/* only use timeout if using interrupt */
- nlprintf(("irq %x\n", sc->sc_irq));
+ nlprintf("irq %x\n", sc->sc_irq);
if (sc->sc_irq & LP_USE_IRQ) {
sc->sc_state |= TOUT;
timeout(nlptout, (caddr_t)sc,
(sc->sc_backoff = hz/LPTOUTINITIAL));
}
- nlprintf(("opened.\n"));
+ nlprintf("opened.\n");
return(0);
}
@@ -564,7 +555,8 @@ nlptclose(dev_t dev, int flags, int fmt, struct proc *p)
if(sc->sc_flags & LP_BYPASS)
goto end_close;
- if (err = lpt_request_ppbus(sc, PPB_WAIT|PPB_INTR))
+ if ((sc->sc_state & HAVEBUS) == 0 &&
+ (err = lpt_request_ppbus(sc, PPB_WAIT|PPB_INTR)))
return (err);
sc->sc_state &= ~OPEN;
@@ -581,7 +573,6 @@ nlptclose(dev_t dev, int flags, int fmt, struct proc *p)
ppb_wctr(&sc->lpt_dev, LPC_NINIT);
brelse(sc->sc_inbuf);
- brelse(sc->sc_statbuf);
end_close:
/* release the bus anyway */
@@ -589,7 +580,7 @@ end_close:
sc->sc_state = 0;
sc->sc_xfercnt = 0;
- nlprintf(("closed.\n"));
+ nlprintf("closed.\n");
return(0);
}
@@ -607,7 +598,7 @@ nlpt_pushbytes(struct lpt_data *sc)
int spin, err, tic;
char ch;
- nlprintf(("p"));
+ nlprintf("p");
/* loop for every character .. */
while (sc->sc_xfercnt > 0) {
/* printer data */
@@ -654,40 +645,6 @@ nlpt_pushbytes(struct lpt_data *sc)
}
/*
- * nlptread --retrieve printer status in IEEE1284 NIBBLE mode
- */
-
-static int
-nlptread(dev_t dev, struct uio *uio, int ioflag)
-{
- struct lpt_data *sc = lptdata[LPTUNIT(minor(dev))];
- int error = 0, len;
-
- if ((error = ppb_1284_negociate(&sc->lpt_dev, PPB_NIBBLE, 0)))
- return (error);
-
- /* read data in an other buffer, read/write may be simultaneous */
- len = 0;
- while (uio->uio_resid) {
- if ((error = ppb_1284_read(&sc->lpt_dev, PPB_NIBBLE,
- sc->sc_statbuf->b_data, min(BUFSTATSIZE,
- uio->uio_resid), &len))) {
- goto error;
- }
-
- if (!len)
- goto error; /* no more data */
-
- if ((error = uiomove(sc->sc_statbuf->b_data, len, uio)))
- goto error;
- }
-
-error:
- ppb_1284_terminate(&sc->lpt_dev);
- return (error);
-}
-
-/*
* nlptwrite --copy a line from user space to a local buffer, then call
* putc to get the chars moved to the output queue.
*
@@ -699,7 +656,6 @@ nlptwrite(dev_t dev, struct uio *uio, int ioflag)
{
register unsigned n;
int pl, err;
- u_int unit = LPTUNIT(minor(dev));
struct lpt_data *sc = lptdata[LPTUNIT(minor(dev))];
if(sc->sc_flags & LP_BYPASS) {
@@ -708,46 +664,26 @@ nlptwrite(dev_t dev, struct uio *uio, int ioflag)
}
/* request the ppbus only if we don't have it already */
- if (err = lpt_request_ppbus(sc, PPB_WAIT|PPB_INTR))
- return (err);
+ if ((sc->sc_state & HAVEBUS) == 0 &&
+ lpt_request_ppbus(sc, PPB_WAIT|PPB_INTR))
+ return (EINTR);
sc->sc_state &= ~INTERRUPTED;
while ((n = min(BUFSIZE, uio->uio_resid)) != 0) {
sc->sc_cp = sc->sc_inbuf->b_data ;
uiomove(sc->sc_cp, n, uio);
sc->sc_xfercnt = n ;
-
- if (sc->sc_irq & LP_ENABLE_EXT) {
- /* try any extended mode */
- err = ppb_write(&sc->lpt_dev, sc->sc_cp,
- sc->sc_xfercnt, 0);
- switch (err) {
- case 0:
- /* if not all data was sent, we could rely
- * on polling for the last bytes */
- sc->sc_xfercnt = 0;
- break;
- case EINTR:
- sc->sc_state |= INTERRUPTED;
- return(err);
- case EINVAL:
- /* advanced mode not avail */
- log(LOG_NOTICE, LPT_NAME "%d: advanced mode not avail, polling\n", unit);
- break;
- default:
- return(err);
- }
- } else while ((sc->sc_xfercnt > 0)&&(sc->sc_irq & LP_USE_IRQ)) {
- nlprintf(("i"));
+ while ((sc->sc_xfercnt > 0)&&(sc->sc_irq & LP_USE_IRQ)) {
+ nlprintf("i");
/* if the printer is ready for a char, */
/* give it one */
if ((sc->sc_state & OBUSY) == 0){
- nlprintf(("\nC %d. ", sc->sc_xfercnt));
+ nlprintf("\nC %d. ", sc->sc_xfercnt);
pl = spltty();
nlpt_intr(sc->lpt_unit);
(void) splx(pl);
}
- nlprintf(("W "));
+ nlprintf("W ");
if (sc->sc_state & OBUSY)
if ((err = tsleep((caddr_t)sc,
LPPRI|PCATCH, LPT_NAME "write", 0))) {
@@ -755,10 +691,9 @@ nlptwrite(dev_t dev, struct uio *uio, int ioflag)
return(err);
}
}
-
/* check to see if we must do a polled write */
if(!(sc->sc_irq & LP_USE_IRQ) && (sc->sc_xfercnt)) {
- nlprintf(("p"));
+ nlprintf("p");
err = nlpt_pushbytes(sc);
@@ -806,7 +741,7 @@ nlpt_intr(int unit)
if (sc->sc_xfercnt) {
/* send char */
- /*nlprintf(("%x ", *sc->sc_cp)); */
+ /*nlprintf("%x ", *sc->sc_cp); */
ppb_wdtr(&sc->lpt_dev, *sc->sc_cp++) ;
ppb_wctr(&sc->lpt_dev, sc->sc_control|LPC_STB);
/* DELAY(X) */
@@ -824,7 +759,7 @@ nlpt_intr(int unit)
if(!(sc->sc_state & INTERRUPTED))
wakeup((caddr_t)sc);
- nlprintf(("w "));
+ nlprintf("w ");
return;
} else { /* check for error */
if(((sts & (LPS_NERR | LPS_OUT) ) != LPS_NERR) &&
@@ -832,7 +767,7 @@ nlpt_intr(int unit)
sc->sc_state |= EERROR;
/* nlptout() will jump in and try to restart. */
}
- nlprintf(("sts %x ", sts));
+ nlprintf("sts %x ", sts);
}
static void
@@ -870,35 +805,15 @@ nlptioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
* this gets syslog'd.
*/
old_sc_irq = sc->sc_irq;
- switch(*(int*)data) {
- case 0:
+ if(*(int*)data == 0)
sc->sc_irq &= (~LP_ENABLE_IRQ);
- break;
- case 1:
- sc->sc_irq &= (~LP_ENABLE_EXT);
+ else
sc->sc_irq |= LP_ENABLE_IRQ;
- break;
- case 2:
- /* classic irq based transfer and advanced
- * modes are in conflict
- */
- sc->sc_irq &= (~LP_ENABLE_IRQ);
- sc->sc_irq |= LP_ENABLE_EXT;
- break;
- case 3:
- sc->sc_irq &= (~LP_ENABLE_EXT);
- break;
- default:
- break;
- }
-
if (old_sc_irq != sc->sc_irq )
- log(LOG_NOTICE, LPT_NAME "%d: switched to %s %s mode\n",
+ log(LOG_NOTICE, LPT_NAME "%d: switched to %s mode\n",
unit,
(sc->sc_irq & LP_ENABLE_IRQ)?
- "interrupt-driven":"polled",
- (sc->sc_irq & LP_ENABLE_EXT)?
- "extended":"standard");
+ "interrupt-driven":"polled");
} else /* polled port */
error = EOPNOTSUPP;
break;
diff --git a/sys/dev/ppbus/nlpt.h b/sys/dev/ppbus/nlpt.h
index 31292b9f7ed7b..b0b3df6457a78 100644
--- a/sys/dev/ppbus/nlpt.h
+++ b/sys/dev/ppbus/nlpt.h
@@ -27,7 +27,7 @@
* @(#)lptreg.h 1.1 (Berkeley) 12/19/90
* Id: lptreg.h,v 1.6 1997/02/22 09:36:52 peter Exp
*
- * $Id: nlpt.h,v 1.2 1997/08/16 14:05:32 msmith Exp $
+ * $Id: nlpt.h,v 1.1 1997/08/14 13:57:40 msmith Exp $
*/
#ifndef __NLPT_H
#define __NLPT_H
@@ -61,15 +61,13 @@ struct lpt_data {
#define LP_AUTOLF 0x40 /* tell printer to do an automatic lf */
#define LP_BYPASS 0x80 /* bypass printer ready checks */
struct buf *sc_inbuf;
- struct buf *sc_statbuf;
short sc_xfercnt ;
char sc_primed;
char *sc_cp ;
- u_short sc_irq ; /* IRQ status of port */
+ u_char sc_irq ; /* IRQ status of port */
#define LP_HAS_IRQ 0x01 /* we have an irq available */
#define LP_USE_IRQ 0x02 /* we are using our irq */
#define LP_ENABLE_IRQ 0x04 /* enable IRQ on open */
-#define LP_ENABLE_EXT 0x10 /* we shall use advanced mode when possible */
u_char sc_backoff ; /* time to call lptout() again */
#ifdef DEVFS
diff --git a/sys/dev/ppbus/ppb_1284.c b/sys/dev/ppbus/ppb_1284.c
index 5da5fa3eac3ad..56524d1052e7b 100644
--- a/sys/dev/ppbus/ppb_1284.c
+++ b/sys/dev/ppbus/ppb_1284.c
@@ -23,15 +23,11 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppb_1284.c,v 1.7 1999/01/10 12:04:54 nsouch Exp $
+ * $Id: ppb_1284.c,v 1.5 1998/09/13 18:26:26 nsouch Exp $
*
*/
-/*
- * General purpose routines for the IEEE1284-1994 Standard
- */
-
-#include "opt_ppb_1284.h"
+#include "opt_debug_1284.h"
#include <sys/param.h>
#include <sys/systm.h>
@@ -46,414 +42,24 @@
*
* Wait for the peripherial up to 40ms
*/
-static int
-do_1284_wait(struct ppb_device *dev, char mask, char status)
-{
- return (ppb_poll_device(dev, 4, mask, status, PPB_NOINTR | PPB_POLL));
-}
-
-static int
-do_peripheral_wait(struct ppb_device *dev, char mask, char status)
-{
- return (ppb_poll_device(dev, 100, mask, status, PPB_NOINTR | PPB_POLL));
-}
-
-#define nibble2char(s) (((s & ~nACK) >> 3) | (~s & nBUSY) >> 4)
-
-/*
- * ppb_1284_reset_error()
- *
- * Unconditionaly reset the error field
- */
-static int
-ppb_1284_reset_error(struct ppb_device *dev, int state)
-{
- dev->ppb->error = PPB_NO_ERROR;
- dev->ppb->state = state;
-
- return (0);
-}
-
-/*
- * ppb_1284_get_state()
- *
- * Get IEEE1284 state
- */
-static int
-ppb_1284_get_state(struct ppb_device *dev)
-{
- return (dev->ppb->state);
-}
-
-/*
- * ppb_1284_set_state()
- *
- * Change IEEE1284 state if no error occured
- */
-static int
-ppb_1284_set_state(struct ppb_device *dev, int state)
-{
- /* call ppb_1284_reset_error() if you absolutly want to change
- * the state from PPB_ERROR to another */
- if ((dev->ppb->state != PPB_ERROR) &&
- (dev->ppb->error == PPB_NO_ERROR)) {
- dev->ppb->state = state;
- dev->ppb->error = PPB_NO_ERROR;
- }
-
- return (0);
-}
-
-static int
-ppb_1284_set_error(struct ppb_device *dev, int error, int event)
-{
- /* do not accumulate errors */
- if ((dev->ppb->error == PPB_NO_ERROR) &&
- (dev->ppb->state != PPB_ERROR)) {
- dev->ppb->error = error;
- dev->ppb->state = PPB_ERROR;
- }
-
-#ifdef DEBUG_1284
- printf("ppb1284: error=%d status=0x%x event=%d\n", error,
- ppb_rstr(dev) & 0xff, event);
-#endif
-
- return (0);
-}
-
-/*
- * ppb_request_mode()
- *
- * Converts mode+options into ext. value
- */
-static int
-ppb_request_mode(int mode, int options)
-{
- int request_mode = 0;
-
- if (options & PPB_EXTENSIBILITY_LINK) {
- request_mode = EXT_LINK_1284_NORMAL;
-
- } else {
- switch (mode) {
- case PPB_NIBBLE:
- request_mode = (options & PPB_REQUEST_ID) ?
- NIBBLE_1284_REQUEST_ID :
- NIBBLE_1284_NORMAL;
- break;
- case PPB_PS2:
- request_mode = (options & PPB_REQUEST_ID) ?
- BYTE_1284_REQUEST_ID :
- BYTE_1284_NORMAL;
- break;
- case PPB_ECP:
- if (options & PPB_USE_RLE)
- request_mode = (options & PPB_REQUEST_ID) ?
- ECP_1284_RLE_REQUEST_ID :
- ECP_1284_RLE;
- else
- request_mode = (options & PPB_REQUEST_ID) ?
- ECP_1284_REQUEST_ID :
- ECP_1284_NORMAL;
- break;
- case PPB_EPP:
- request_mode = EPP_1284_NORMAL;
- break;
- default:
- panic("%s: unsupported mode %d\n", __FUNCTION__, mode);
- }
- }
-
- return (request_mode);
-}
-
-/*
- * ppb_peripheral_negociate()
- *
- * Negociate the peripheral side
- */
-int
-ppb_peripheral_negociate(struct ppb_device *dev, int mode, int options)
-{
- int spin, request_mode, error = 0;
- char r;
-
- ppb_set_mode(dev, PPB_COMPATIBLE);
- ppb_1284_set_state(dev, PPB_PERIPHERAL_NEGOCIATION);
-
- /* compute ext. value */
- request_mode = ppb_request_mode(mode, options);
-
- /* wait host */
- spin = 10;
- while (spin-- && (ppb_rstr(dev) & nBUSY))
- DELAY(1);
-
- /* check termination */
- if (!(ppb_rstr(dev) & SELECT) || !spin) {
- error = ENODEV;
- goto error;
- }
-
- /* Event 4 - read ext. value */
- r = ppb_rdtr(dev);
-
- /* nibble mode is not supported */
- if ((r == (char)request_mode) ||
- (r == NIBBLE_1284_NORMAL)) {
-
- /* Event 5 - restore direction bit, no data avail */
- ppb_wctr(dev, (STROBE | nINIT) & ~(SELECTIN));
- DELAY(1);
-
- /* Event 6 */
- ppb_wctr(dev, (nINIT) & ~(SELECTIN | STROBE));
-
- if (r == NIBBLE_1284_NORMAL) {
-#ifdef DEBUG_1284
- printf("R");
-#endif
- ppb_1284_set_error(dev, PPB_MODE_UNSUPPORTED, 4);
- error = EINVAL;
- goto error;
- } else {
- ppb_1284_set_state(dev, PPB_PERIPHERAL_IDLE);
- switch (r) {
- case BYTE_1284_NORMAL:
- ppb_set_mode(dev, PPB_BYTE);
- break;
- default:
- break;
- }
-#ifdef DEBUG_1284
- printf("A");
-#endif
- /* negociation succeeds */
- }
- } else {
- /* Event 5 - mode not supported */
- ppb_wctr(dev, SELECTIN);
- DELAY(1);
-
- /* Event 6 */
- ppb_wctr(dev, (SELECTIN) & ~(STROBE | nINIT));
- ppb_1284_set_error(dev, PPB_MODE_UNSUPPORTED, 4);
-
-#ifdef DEBUG_1284
- printf("r");
-#endif
- error = EINVAL;
- goto error;
- }
-
- return (0);
-
-error:
- ppb_peripheral_terminate(dev, PPB_WAIT);
- return (error);
-}
-
-/*
- * ppb_peripheral_terminate()
- *
- * Terminate peripheral transfer side
- *
- * Always return 0 in compatible mode
- */
-int
-ppb_peripheral_terminate(struct ppb_device *dev, int how)
-{
- int error = 0;
-
-#ifdef DEBUG_1284
- printf("t");
-#endif
-
- ppb_1284_set_state(dev, PPB_PERIPHERAL_TERMINATION);
-
- /* Event 22 - wait up to host response time (1s) */
- if ((error = do_peripheral_wait(dev, SELECT | nBUSY, 0))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 22);
- goto error;
- }
-
- /* Event 24 */
- ppb_wctr(dev, (nINIT | STROBE) & ~(AUTOFEED | SELECTIN));
-
- /* Event 25 - wait up to host response time (1s) */
- if ((error = do_peripheral_wait(dev, nBUSY, nBUSY))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 25);
- goto error;
- }
-
- /* Event 26 */
- ppb_wctr(dev, (SELECTIN | nINIT | STROBE) & ~(AUTOFEED));
- DELAY(1);
- /* Event 27 */
- ppb_wctr(dev, (SELECTIN | nINIT) & ~(STROBE | AUTOFEED));
-
- /* Event 28 - wait up to host response time (1s) */
- if ((error = do_peripheral_wait(dev, nBUSY, 0))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 28);
- goto error;
- }
-
-error:
- ppb_set_mode(dev, PPB_COMPATIBLE);
- ppb_1284_set_state(dev, PPB_FORWARD_IDLE);
-
- return (0);
-}
-
-/*
- * byte_peripheral_outbyte()
- *
- * Write 1 byte in BYTE mode
- */
-static int
-byte_peripheral_outbyte(struct ppb_device *dev, char *buffer, int last)
-{
- int error = 0;
-
- /* Event 7 */
- if ((error = do_1284_wait(dev, nBUSY, nBUSY))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 7);
- goto error;
- }
-
- /* check termination */
- if (!(ppb_rstr(dev) & SELECT)) {
- ppb_peripheral_terminate(dev, PPB_WAIT);
- goto error;
- }
-
- /* Event 15 - put byte on data lines */
-#ifdef DEBUG_1284
- printf("B");
-#endif
- ppb_wdtr(dev, *buffer);
-
- /* Event 9 */
- ppb_wctr(dev, (AUTOFEED | STROBE) & ~(nINIT | SELECTIN));
-
- /* Event 10 - wait data read */
- if ((error = do_peripheral_wait(dev, nBUSY, 0))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 16);
- goto error;
- }
-
- /* Event 11 */
- if (!last) {
- ppb_wctr(dev, (AUTOFEED) & ~(nINIT | STROBE | SELECTIN));
- } else {
- ppb_wctr(dev, (nINIT) & ~(STROBE | SELECTIN | AUTOFEED));
- }
-
-#if 0
- /* Event 16 - wait strobe */
- if ((error = do_peripheral_wait(dev, nACK | nBUSY, 0))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 16);
- goto error;
- }
-#endif
-
- /* check termination */
- if (!(ppb_rstr(dev) & SELECT)) {
- ppb_peripheral_terminate(dev, PPB_WAIT);
- goto error;
- }
-
-error:
- return (error);
-}
-
-/*
- * byte_peripheral_write()
- *
- * Write n bytes in BYTE mode
- */
int
-byte_peripheral_write(struct ppb_device *dev, char *buffer, int len, int *sent)
+do_1284_wait(struct ppb_device *dev, char mask, char status)
{
- int error = 0, i;
+ int i;
char r;
- ppb_1284_set_state(dev, PPB_PERIPHERAL_TRANSFER);
-
- /* wait forever, the remote host is master and should initiate
- * termination
- */
- for (i=0; i<len; i++) {
- /* force remote nFAULT low to release the remote waiting
- * process, if any
- */
- r = ppb_rctr(dev);
- ppb_wctr(dev, r & ~nINIT);
-
-#ifdef DEBUG_1284
- printf("y");
-#endif
- /* Event 7 */
- error = ppb_poll_device(dev, PPB_FOREVER, nBUSY, nBUSY,
- PPB_INTR);
-
- if (error && error != EWOULDBLOCK)
- goto error;
-
-#ifdef DEBUG_1284
- printf("b");
-#endif
- if ((error = byte_peripheral_outbyte(dev, buffer+i, (i == len-1))))
- goto error;
+ /* try up to 5ms */
+ for (i = 0; i < 20; i++) {
+ r = ppb_rstr(dev);
+ DELAY(25);
+ if ((r & mask) == status)
+ return (0);
}
-error:
- if (!error)
- ppb_1284_set_state(dev, PPB_PERIPHERAL_IDLE);
- *sent = i;
- return (error);
+ return (ppb_poll_device(dev, 4, mask, status, PPB_NOINTR));
}
-/*
- * byte_1284_inbyte()
- *
- * Read 1 byte in BYTE mode
- */
-int
-byte_1284_inbyte(struct ppb_device *dev, char *buffer)
-{
- int error = 0;
-
- /* Event 7 - ready to take data (nAUTO low) */
- ppb_wctr(dev, (PCD | nINIT | AUTOFEED) & ~(STROBE | SELECTIN));
-
- /* Event 9 - peripheral set nAck low */
- if ((error = do_1284_wait(dev, nACK, 0))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 9);
- goto error;
- }
-
- /* read the byte */
- *buffer = ppb_rdtr(dev);
-
- /* Event 10 - data received, can't accept more */
- ppb_wctr(dev, (nINIT) & ~(AUTOFEED | STROBE | SELECTIN));
-
- /* Event 11 - peripheral ack */
- if ((error = do_1284_wait(dev, nACK, nACK))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 11);
- goto error;
- }
-
- /* Event 16 - strobe */
- ppb_wctr(dev, (nINIT | STROBE) & ~(AUTOFEED | SELECTIN));
- DELAY(3);
- ppb_wctr(dev, (nINIT) & ~(AUTOFEED | STROBE | SELECTIN));
-
-error:
- return (error);
-}
+#define nibble2char(s) (((s & ~nACK) >> 3) | (~s & nBUSY) >> 4)
/*
* nibble_1284_inbyte()
@@ -467,379 +73,126 @@ nibble_1284_inbyte(struct ppb_device *dev, char *buffer)
int i, error;
for (i = 0; i < 2; i++) {
+ /* ready to take data (nAUTO low) */
+ ppb_wctr(dev, AUTOFEED & ~(STROBE | SELECTIN));
- /* Event 7 - ready to take data (nAUTO low) */
- ppb_wctr(dev, (nINIT | AUTOFEED) & ~(STROBE | SELECTIN));
-
- /* Event 8 - peripheral writes the first nibble */
-
- /* Event 9 - peripheral set nAck low */
- if ((error = do_1284_wait(dev, nACK, 0))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 9);
- goto error;
- }
+ if ((error = do_1284_wait(dev, nACK, 0)))
+ return (error);
/* read nibble */
nibble[i] = ppb_rstr(dev);
- /* Event 10 - ack, nibble received */
- ppb_wctr(dev, nINIT & ~(AUTOFEED | STROBE | SELECTIN));
+ /* ack, not ready for another nibble */
+ ppb_wctr(dev, 0 & ~(AUTOFEED | STROBE | SELECTIN));
- /* Event 11 - wait ack from peripherial */
- if ((error = do_1284_wait(dev, nACK, nACK))) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 11);
- goto error;
- }
+ /* wait ack from peripherial */
+ if ((error = do_1284_wait(dev, nACK, nACK)))
+ return (error);
}
*buffer = ((nibble2char(nibble[1]) << 4) & 0xf0) |
(nibble2char(nibble[0]) & 0x0f);
-error:
- return (error);
-}
-
-/*
- * spp_1284_read()
- *
- * Read in IEEE1284 NIBBLE/BYTE mode
- */
-int
-spp_1284_read(struct ppb_device *dev, int mode, char *buffer, int max, int *read)
-{
- int error = 0, len = 0;
- int terminate_after_transfer = 1;
- int state;
-
- *read = len = 0;
-
- state = ppb_1284_get_state(dev);
-
- switch (state) {
- case PPB_FORWARD_IDLE:
- if ((error = ppb_1284_negociate(dev, mode, 0)))
- return (error);
- break;
-
- case PPB_REVERSE_IDLE:
- terminate_after_transfer = 0;
- break;
-
- default:
- ppb_1284_terminate(dev);
- if ((error = ppb_1284_negociate(dev, mode, 0)))
- return (error);
- break;
- }
-
- while ((len < max) && !(ppb_rstr(dev) & (nFAULT))) {
-
- ppb_1284_set_state(dev, PPB_REVERSE_TRANSFER);
-
-#ifdef DEBUG_1284
- printf("B");
-#endif
-
- switch (mode) {
- case PPB_NIBBLE:
- /* read a byte, error means no more data */
- if (nibble_1284_inbyte(dev, buffer+len))
- goto end_while;
- break;
- case PPB_BYTE:
- if (byte_1284_inbyte(dev, buffer+len))
- goto end_while;
- break;
- default:
- error = EINVAL;
- goto end_while;
- }
- len ++;
- }
-end_while:
-
- if (!error)
- ppb_1284_set_state(dev, PPB_REVERSE_IDLE);
-
- *read = len;
-
- if (terminate_after_transfer || error)
- ppb_1284_terminate(dev);
-
- return (error);
+ return (0);
}
/*
- * ppb_1284_read_id()
- *
+ * nibble_1284_sync()
*/
-int
-ppb_1284_read_id(struct ppb_device *dev, int mode, char *buffer,
- int max, int *read)
+void
+nibble_1284_sync(struct ppb_device *dev)
{
- int error = 0;
+ char ctr;
- /* fill the buffer with 0s */
- bzero(buffer, max);
+ ctr = ppb_rctr(dev);
- switch (mode) {
- case PPB_NIBBLE:
- case PPB_ECP:
- if ((error = ppb_1284_negociate(dev, PPB_NIBBLE, PPB_REQUEST_ID)))
- return (error);
- error = spp_1284_read(dev, PPB_NIBBLE, buffer, max, read);
- break;
- case PPB_BYTE:
- if ((error = ppb_1284_negociate(dev, PPB_BYTE, PPB_REQUEST_ID)))
- return (error);
- error = spp_1284_read(dev, PPB_BYTE, buffer, max, read);
- break;
- default:
- panic("%s: unsupported mode %d\n", __FUNCTION__, mode);
- }
+ ppb_wctr(dev, (ctr & ~AUTOFEED) | SELECTIN);
+ if (do_1284_wait(dev, nACK, 0))
+ return;
- ppb_1284_terminate(dev);
- return (error);
-}
+ ppb_wctr(dev, ctr | AUTOFEED);
+ do_1284_wait(dev, nACK, nACK);
-/*
- * ppb_1284_read()
- *
- * IEEE1284 read
- */
-int
-ppb_1284_read(struct ppb_device *dev, int mode, char *buffer,
- int max, int *read)
-{
- int error = 0;
+ ppb_wctr(dev, (ctr & ~AUTOFEED) | SELECTIN);
- switch (mode) {
- case PPB_NIBBLE:
- case PPB_BYTE:
- error = spp_1284_read(dev, mode, buffer, max, read);
- break;
- default:
- return (EINVAL);
- }
-
- return (error);
+ return;
}
/*
* ppb_1284_negociate()
*
- * IEEE1284 negociation phase
- *
* Normal nibble mode or request device id mode (see ppb_1284.h)
- *
- * After negociation, nFAULT is low if data is available
*/
int
-ppb_1284_negociate(struct ppb_device *dev, int mode, int options)
+ppb_1284_negociate(struct ppb_device *dev, int mode)
{
int error;
- int request_mode;
+ int phase = 0;
-#ifdef DEBUG_1284
- printf("n");
-#endif
-
- if (ppb_1284_get_state(dev) >= PPB_PERIPHERAL_NEGOCIATION)
- ppb_peripheral_terminate(dev, PPB_WAIT);
-
- if (ppb_1284_get_state(dev) != PPB_FORWARD_IDLE)
- ppb_1284_terminate(dev);
-
-#ifdef DEBUG_1284
- printf("%d", mode);
-#endif
-
- /* ensure the host is in compatible mode */
- ppb_set_mode(dev, PPB_COMPATIBLE);
-
- /* reset error to catch the actual negociation error */
- ppb_1284_reset_error(dev, PPB_FORWARD_IDLE);
-
- /* calculate ext. value */
- request_mode = ppb_request_mode(mode, options);
-
- /* default state */
ppb_wctr(dev, (nINIT | SELECTIN) & ~(STROBE | AUTOFEED));
DELAY(1);
- /* enter negociation phase */
- ppb_1284_set_state(dev, PPB_NEGOCIATION);
-
- /* Event 0 - put the exten. value on the data lines */
- ppb_wdtr(dev, request_mode);
-
-#ifdef PERIPH_1284
- /* request remote host attention */
- ppb_wctr(dev, (nINIT | STROBE) & ~(AUTOFEED | SELECTIN));
- DELAY(1);
- ppb_wctr(dev, (nINIT) & ~(STROBE | AUTOFEED | SELECTIN));
-#else
+ ppb_wdtr(dev, mode);
DELAY(1);
-#endif /* !PERIPH_1284 */
-
- /* Event 1 - enter IEEE1284 mode */
ppb_wctr(dev, (nINIT | AUTOFEED) & ~(STROBE | SELECTIN));
-#ifdef PERIPH_1284
- /* ignore the PError line, wait a bit more, remote host's
- * interrupts don't respond fast enough */
- if (ppb_poll_device(dev, 40, nACK | SELECT | nFAULT,
- SELECT | nFAULT, PPB_NOINTR | PPB_POLL)) {
- ppb_1284_set_error(dev, PPB_NOT_IEEE1284, 2);
- error = ENODEV;
- goto error;
- }
-#else
- /* Event 2 - trying IEEE1284 dialog */
- if (do_1284_wait(dev, nACK | PERROR | SELECT | nFAULT,
- PERROR | SELECT | nFAULT)) {
- ppb_1284_set_error(dev, PPB_NOT_IEEE1284, 2);
- error = ENODEV;
+ if ((error = do_1284_wait(dev, nACK | PERROR | SELECT | nFAULT,
+ PERROR | SELECT | nFAULT)))
goto error;
- }
-#endif /* !PERIPH_1284 */
- /* Event 3 - latch the ext. value to the peripheral */
+ phase = 1;
+
ppb_wctr(dev, (nINIT | STROBE | AUTOFEED) & ~SELECTIN);
- DELAY(1);
+ DELAY(5);
- /* Event 4 - IEEE1284 device recognized */
ppb_wctr(dev, nINIT & ~(SELECTIN | AUTOFEED | STROBE));
- /* Event 6 - waiting for status lines */
- if (do_1284_wait(dev, nACK, nACK)) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 6);
- error = EBUSY;
+#if 0 /* not respected by most devices */
+ if ((error = do_1284_wait(dev, nACK, nACK)))
goto error;
- }
-
- /* Event 7 - quering result consider nACK not to misunderstand
- * a remote computer terminate sequence */
- if (options & PPB_EXTENSIBILITY_LINK) {
-
- /* XXX not fully supported yet */
- ppb_1284_terminate(dev);
- return (0);
- }
- if (request_mode == NIBBLE_1284_NORMAL) {
- if (do_1284_wait(dev, nACK | SELECT, nACK)) {
- ppb_1284_set_error(dev, PPB_MODE_UNSUPPORTED, 7);
- error = ENODEV;
- goto error;
- }
- } else {
- if (do_1284_wait(dev, nACK | SELECT, SELECT | nACK)) {
- ppb_1284_set_error(dev, PPB_MODE_UNSUPPORTED, 7);
- error = ENODEV;
+ if (mode == 0)
+ if ((error = do_1284_wait(dev, SELECT, 0)))
goto error;
- }
- }
-
- switch (mode) {
- case PPB_NIBBLE:
- case PPB_PS2:
- /* enter reverse idle phase */
- ppb_1284_set_state(dev, PPB_REVERSE_IDLE);
- break;
- case PPB_ECP:
- /* negociation ok, now setup the communication */
- ppb_1284_set_state(dev, PPB_SETUP);
- ppb_wctr(dev, (nINIT | AUTOFEED) & ~(SELECTIN | STROBE));
-
-#ifdef PERIPH_1284
- /* ignore PError line */
- if (do_1284_wait(dev, nACK | SELECT | nBUSY,
- nACK | SELECT | nBUSY)) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 30);
- error = ENODEV;
- goto error;
- }
-#else
- if (do_1284_wait(dev, nACK | SELECT | PERROR | nBUSY,
- nACK | SELECT | PERROR | nBUSY)) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 30);
- error = ENODEV;
+ else
+ if ((error = do_1284_wait(dev, SELECT, SELECT)))
goto error;
- }
-#endif /* !PERIPH_1284 */
-
- /* ok, the host enters the ForwardIdle state */
- ppb_1284_set_state(dev, PPB_ECP_FORWARD_IDLE);
- break;
- case PPB_EPP:
- ppb_1284_set_state(dev, PPB_EPP_IDLE);
- break;
-
- default:
- panic("%s: unknown mode (%d)!", __FUNCTION__, mode);
- }
- ppb_set_mode(dev, mode);
+#endif
return (0);
error:
- ppb_1284_terminate(dev);
+ if (bootverbose)
+ printf("%s: status=0x%x %d\n", __FUNCTION__, ppb_rstr(dev), phase);
return (error);
}
-/*
- * ppb_1284_terminate()
- *
- * IEEE1284 termination phase, return code should ignored since the host
- * is _always_ in compatible mode after ppb_1284_terminate()
- */
int
-ppb_1284_terminate(struct ppb_device *dev)
+ppb_1284_terminate(struct ppb_device *dev, int how)
{
+ int error;
-#ifdef DEBUG_1284
- printf("T");
-#endif
-
- /* do not reset error here to keep the error that
- * may occured before the ppb_1284_terminate() call */
- ppb_1284_set_state(dev, PPB_TERMINATION);
+ switch (how) {
+ case VALID_STATE:
-#ifdef PERIPH_1284
- /* request remote host attention */
- ppb_wctr(dev, (nINIT | STROBE | SELECTIN) & ~(AUTOFEED));
- DELAY(1);
-#endif /* PERIPH_1284 */
+ ppb_wctr(dev, SELECTIN & ~(STROBE | AUTOFEED));
- /* Event 22 - set nSelectin low and nAutoFeed high */
- ppb_wctr(dev, (nINIT | SELECTIN) & ~(STROBE | AUTOFEED));
+ if ((error = do_1284_wait(dev, nACK | nBUSY | nFAULT, nFAULT)))
+ return (error);
- /* Event 24 - waiting for peripheral, Xflag ignored */
- if (do_1284_wait(dev, nACK | nBUSY | nFAULT, nFAULT)) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 24);
- goto error;
- }
+ ppb_wctr(dev, (SELECTIN | AUTOFEED) & ~STROBE);
- /* Event 25 - set nAutoFd low */
- ppb_wctr(dev, (nINIT | SELECTIN | AUTOFEED) & ~STROBE);
+ if ((error = do_1284_wait(dev, nACK, nACK)))
+ return (error);
- /* Event 26 - compatible mode status is set */
+ ppb_wctr(dev, SELECTIN & ~(STROBE | AUTOFEED));
+ break;
- /* Event 27 - peripheral set nAck high */
- if (do_1284_wait(dev, nACK, nACK)) {
- ppb_1284_set_error(dev, PPB_TIMEOUT, 27);
+ default:
+ return (EINVAL);
}
- /* Event 28 - end termination, return to idle phase */
- ppb_wctr(dev, (nINIT | SELECTIN) & ~(STROBE | AUTOFEED));
-
-error:
- /* return to compatible mode */
- ppb_set_mode(dev, PPB_COMPATIBLE);
- ppb_1284_set_state(dev, PPB_FORWARD_IDLE);
-
return (0);
}
diff --git a/sys/dev/ppbus/ppb_1284.h b/sys/dev/ppbus/ppb_1284.h
index ea009b7d381dd..1cc98d4614a52 100644
--- a/sys/dev/ppbus/ppb_1284.h
+++ b/sys/dev/ppbus/ppb_1284.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppb_1284.h,v 1.3 1998/09/13 18:26:26 nsouch Exp $
+ * $Id: ppb_1284.h,v 1.2 1998/08/03 19:14:31 msmith Exp $
*
*/
#ifndef __1284_H
@@ -66,59 +66,20 @@
#define Intr nACK
/* request mode values */
-#define NIBBLE_1284_NORMAL 0x0
-#define NIBBLE_1284_REQUEST_ID 0x4
-#define BYTE_1284_NORMAL 0x1
-#define BYTE_1284_REQUEST_ID 0x5
-#define ECP_1284_NORMAL 0x10
-#define ECP_1284_REQUEST_ID 0x14
-#define ECP_1284_RLE 0x30
-#define ECP_1284_RLE_REQUEST_ID 0x34
-#define EPP_1284_NORMAL 0x40
-#define EXT_LINK_1284_NORMAL 0x80
-
-/* ieee1284 mode options */
-#define PPB_REQUEST_ID 0x1
-#define PPB_USE_RLE 0x2
-#define PPB_EXTENSIBILITY_LINK 0x4
-
-/* ieee1284 errors */
-#define PPB_NO_ERROR 0
-#define PPB_MODE_UNSUPPORTED 1 /* mode not supported by peripheral */
-#define PPB_NOT_IEEE1284 2 /* not an IEEE1284 compliant periph. */
-#define PPB_TIMEOUT 3 /* timeout */
-#define PPB_INVALID_MODE 4 /* current mode is incorrect */
-
-/* ieee1284 host side states */
-#define PPB_ERROR 0
-#define PPB_FORWARD_IDLE 1
-#define PPB_NEGOCIATION 2
-#define PPB_SETUP 3
-#define PPB_ECP_FORWARD_IDLE 4
-#define PPB_FWD_TO_REVERSE 5
-#define PPB_REVERSE_IDLE 6
-#define PPB_REVERSE_TRANSFER 7
-#define PPB_REVERSE_TO_FWD 8
-#define PPB_EPP_IDLE 9
-#define PPB_TERMINATION 10
-
-/* peripheral side states */
-#define PPB_PERIPHERAL_NEGOCIATION 11
-#define PPB_PERIPHERAL_IDLE 12
-#define PPB_PERIPHERAL_TRANSFER 13
-#define PPB_PERIPHERAL_TERMINATION 14
+#define NIBBLE_1284_NORMAL 0
+#define NIBBLE_1284_REQUEST_ID 4
-extern int nibble_1284_inbyte(struct ppb_device *, char *);
-extern int byte_1284_inbyte(struct ppb_device *, char *);
-extern int spp_1284_read(struct ppb_device *, int, char *, int, int *);
+/* how to terminate */
+#define VALID_STATE 0
+#define IMMEDIATE 1
+
+extern int do_1284_wait(struct ppb_device *, char, char);
-extern int ppb_1284_negociate(struct ppb_device *, int, int);
-extern int ppb_1284_terminate(struct ppb_device *);
-extern int ppb_1284_read_id(struct ppb_device *, int, char *, int, int *);
-extern int ppb_1284_read(struct ppb_device *, int, char *, int, int *);
+extern int nibble_1284_inbyte(struct ppb_device *, char *);
+extern void nibble_1284_sync(struct ppb_device *);
+extern int nibble_1284_mode(struct ppb_device *, int);
-extern int ppb_peripheral_terminate(struct ppb_device *, int);
-extern int ppb_peripheral_negociate(struct ppb_device *, int, int);
-extern int byte_peripheral_write(struct ppb_device *, char *, int, int *);
+extern int ppb_1284_negociate(struct ppb_device *, int);
+extern int ppb_1284_terminate(struct ppb_device *, int how);
#endif
diff --git a/sys/dev/ppbus/ppb_base.c b/sys/dev/ppbus/ppb_base.c
index 83fc26ef02948..7555b24f752e5 100644
--- a/sys/dev/ppbus/ppb_base.c
+++ b/sys/dev/ppbus/ppb_base.c
@@ -23,13 +23,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppb_base.c,v 1.5 1998/09/13 18:26:26 nsouch Exp $
+ * $Id: ppb_base.c,v 1.4 1998/08/03 19:14:31 msmith Exp $
*
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
-#include <machine/clock.h>
#include <dev/ppbus/ppbconf.h>
@@ -71,39 +70,28 @@ int
ppb_poll_device(struct ppb_device *dev, int max,
char mask, char status, int how)
{
- int i, j, error;
- char r;
-
- /* try at least up to 10ms */
- for (j = 0; j < ((how & PPB_POLL) ? max : 1); j++) {
- for (i = 0; i < 10000; i++) {
- r = ppb_rstr(dev);
- DELAY(1);
- if ((r & mask) == status)
- return (0);
- }
- }
+ int i, error;
- if (!(how & PPB_POLL)) {
- for (i = 0; max == PPB_FOREVER || i < max-1; i++) {
+ for (i = 0; i < max; i++) {
if ((ppb_rstr(dev) & mask) == status)
return (0);
switch (how) {
case PPB_NOINTR:
/* wait 10 ms */
- tsleep((caddr_t)dev, PPBPRI, "ppbpoll", hz/100);
+ if ((error = tsleep((caddr_t)dev, PPBPRI,
+ "ppbpoll", hz/100)))
+ return (error);
break;
case PPB_INTR:
default:
/* wait 10 ms */
if ((error = tsleep((caddr_t)dev, PPBPRI | PCATCH,
- "ppbpoll", hz/100)) != EWOULDBLOCK)
+ "ppbpoll", hz/100)))
return (error);
break;
}
- }
}
return (EWOULDBLOCK);
@@ -120,31 +108,16 @@ ppb_set_mode(struct ppb_device *dev, int mode)
struct ppb_data *ppb = dev->ppb;
int old_mode = ppb_get_mode(dev);
- if ((*ppb->ppb_link->adapter->setmode)(
- ppb->ppb_link->adapter_unit, mode))
+ if ((*ppb->ppb_link->adapter->setmode)(dev->id_unit, mode))
return (-1);
/* XXX yet device mode = ppbus mode = chipset mode */
- dev->mode = ppb->mode = (mode & PPB_MASK);
+ dev->mode = ppb->mode = mode;
return (old_mode);
}
/*
- * ppb_write()
- *
- * Write charaters to the port
- */
-int
-ppb_write(struct ppb_device *dev, char *buf, int len, int how)
-{
- struct ppb_data *ppb = dev->ppb;
-
- return (ppb->ppb_link->adapter->write(ppb->ppb_link->adapter_unit,
- buf, len, how));
-}
-
-/*
* ppb_reset_epp_timeout()
*
* Reset the EPP timeout bit in the status register
@@ -157,7 +130,7 @@ ppb_reset_epp_timeout(struct ppb_device *dev)
if (ppb->ppb_owner != dev)
return (EACCES);
- (*ppb->ppb_link->adapter->reset_epp_timeout)(ppb->ppb_link->adapter_unit);
+ (*ppb->ppb_link->adapter->reset_epp_timeout)(dev->id_unit);
return (0);
}
@@ -175,7 +148,7 @@ ppb_ecp_sync(struct ppb_device *dev)
if (ppb->ppb_owner != dev)
return (EACCES);
- (*ppb->ppb_link->adapter->ecp_sync)(ppb->ppb_link->adapter_unit);
+ (*ppb->ppb_link->adapter->ecp_sync)(dev->id_unit);
return (0);
}
diff --git a/sys/dev/ppbus/ppb_msq.c b/sys/dev/ppbus/ppb_msq.c
index addcf041ab487..7e631e4945216 100644
--- a/sys/dev/ppbus/ppb_msq.c
+++ b/sys/dev/ppbus/ppb_msq.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppb_msq.c,v 1.3 1998/09/20 14:41:54 nsouch Exp $
+ * $Id: ppb_msq.c,v 1.2 1998/09/13 18:26:26 nsouch Exp $
*
*/
#include <machine/stdarg.h>
@@ -272,19 +272,9 @@ ppb_MS_microseq(struct ppb_device *dev, struct ppb_microseq *msq, int *ret)
xfer = mode2xfer(dev, mi->opcode);
/* figure out if we should use ieee1284 code */
- if (!xfer->loop) {
- if (mi->opcode == MS_OP_PUT) {
- if ((error = ppb->ppb_link->adapter->write(
- ppb->ppb_link->adapter_unit,
- (char *)mi->arg[0].p,
- mi->arg[1].i, 0)))
- goto error;
-
- INCR_PC;
- goto next;
- } else
- panic("%s: IEEE1284 read not supported", __FUNCTION__);
- }
+ if (!xfer->loop)
+ panic("%s: IEEE1284 code not supported",
+ __FUNCTION__);
/* XXX should use ppb_MS_init_msq() */
initxfer[0].arg[0].p = mi->arg[0].p;
@@ -319,12 +309,10 @@ ppb_MS_microseq(struct ppb_device *dev, struct ppb_microseq *msq, int *ret)
* is unknown here
*/
if ((error = ppb->ppb_link->adapter->exec_microseq(
- ppb->ppb_link->adapter_unit,
- &mi)))
+ dev->id_unit, &mi)))
goto error;
break;
}
- next:
}
error:
return (error);
diff --git a/sys/dev/ppbus/ppb_msq.h b/sys/dev/ppbus/ppb_msq.h
index 4bba2997ac257..cdc815408d7fc 100644
--- a/sys/dev/ppbus/ppb_msq.h
+++ b/sys/dev/ppbus/ppb_msq.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppb_msq.h,v 1.2 1998/09/13 18:26:26 nsouch Exp $
+ * $Id: ppb_msq.h,v 1.1.2.7 1998/06/20 19:03:47 son Exp $
*
*/
#ifndef __PPB_MSQ_H
@@ -34,7 +34,7 @@
*/
/* microsequence parameter descriptor */
-#define MS_INS_MASK 0x00ff /* mask to retrieve the instruction position < 256 XXX */
+#define MS_INS_MASK 0x00ff /* mask to retrieve the instruction position */
#define MS_ARG_MASK 0x0f00 /* mask to retrieve the argument number */
#define MS_TYP_MASK 0xf000 /* mask to retrieve the type of the param */
diff --git a/sys/dev/ppbus/ppbconf.c b/sys/dev/ppbus/ppbconf.c
index 01ac663a22528..86ebe024e6066 100644
--- a/sys/dev/ppbus/ppbconf.c
+++ b/sys/dev/ppbus/ppbconf.c
@@ -1,5 +1,5 @@
/*-
- * Copyright (c) 1997, 1998, 1999 Nicolas Souchu
+ * Copyright (c) 1997, 1998 Nicolas Souchu
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -23,12 +23,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppbconf.c,v 1.12 1999/01/11 21:22:41 nsouch Exp $
+ * $Id: ppbconf.c,v 1.7 1998/09/13 18:26:26 nsouch Exp $
*
*/
#include <sys/param.h>
#include <sys/systm.h>
-#include <sys/linker_set.h>
+#include <sys/kernel.h>
#include <sys/malloc.h>
#include <vm/vm.h>
@@ -37,8 +37,6 @@
#include <dev/ppbus/ppbconf.h>
#include <dev/ppbus/ppb_1284.h>
-#include "opt_ppb_1284.h"
-
LIST_HEAD(, ppb_data) ppbdata; /* list of existing ppbus */
/*
@@ -82,30 +80,15 @@ ppb_alloc_bus(void)
return(ppb);
}
-#define PPB_PNP_PRINTER 0
-#define PPB_PNP_MODEM 1
-#define PPB_PNP_NET 2
-#define PPB_PNP_HDC 3
-#define PPB_PNP_PCMCIA 4
-#define PPB_PNP_MEDIA 5
-#define PPB_PNP_FDC 6
-#define PPB_PNP_PORTS 7
-#define PPB_PNP_SCANNER 8
-#define PPB_PNP_DIGICAM 9
-
-#ifndef DONTPROBE_1284
-
static char *pnp_tokens[] = {
"PRINTER", "MODEM", "NET", "HDC", "PCMCIA", "MEDIA",
"FDC", "PORTS", "SCANNER", "DIGICAM", "", NULL };
-#if 0
static char *pnp_classes[] = {
"printer", "modem", "network device",
"hard disk", "PCMCIA", "multimedia device",
"floppy disk", "ports", "scanner",
"digital camera", "unknown device", NULL };
-#endif
/*
* search_token()
@@ -151,40 +134,75 @@ search_token(char *str, int slen, char *token)
* Returns the class id. of the peripherial, -1 otherwise
*/
static int
-ppb_pnp_detect(struct ppb_data *ppb, struct ppb_device *pnpdev)
+ppb_pnp_detect(struct ppb_data *ppb)
{
- char *token, *class = 0;
+ char *token, *q, *class = 0;
int i, len, error;
int class_id = -1;
char str[PPB_PnP_STRING_SIZE+1];
+ struct ppb_device pnpdev; /* temporary device to perform I/O */
- printf("Probing for PnP devices on ppbus%d:\n",
+ /* initialize the pnpdev structure for future use */
+ bzero(&pnpdev, sizeof(pnpdev));
+
+ pnpdev.ppb = ppb;
+
+ if (bootverbose)
+ printf("ppb: <PnP> probing devices on ppbus %d...\n",
ppb->ppb_link->adapter_unit);
-
- if ((error = ppb_1284_read_id(pnpdev, PPB_NIBBLE, str,
- PPB_PnP_STRING_SIZE, &len)))
+
+ if (ppb_request_bus(&pnpdev, PPB_DONTWAIT)) {
+ if (bootverbose)
+ printf("ppb: <PnP> cannot allocate ppbus!\n");
+ return (-1);
+ }
+
+ if ((error = ppb_1284_negociate(&pnpdev, NIBBLE_1284_REQUEST_ID))) {
+ if (bootverbose)
+ printf("ppb: <PnP> ppb_1284_negociate()=%d\n", error);
+
goto end_detect;
+ }
+
+ len = 0;
+ for (q=str; !(ppb_rstr(&pnpdev) & PERROR); q++) {
+ if ((error = nibble_1284_inbyte(&pnpdev, q))) {
+ if (bootverbose) {
+ *q = '\0';
+ printf("ppb: <PnP> len=%d, %s\n", len, str);
+ printf("ppb: <PnP> nibble_1284_inbyte()=%d\n",
+ error);
+ }
+ goto end_detect;
+ }
-#ifdef DEBUG_1284
- printf("ppb: <PnP> %d characters: ", len);
- for (i = 0; i < len; i++)
- printf("%c(0x%x) ", str[i], str[i]);
- printf("\n");
-#endif
+ if (len++ >= PPB_PnP_STRING_SIZE) {
+ printf("ppb: <PnP> not space left!\n");
+ goto end_detect;
+ }
+ }
+ *q = '\0';
+
+ nibble_1284_sync(&pnpdev);
+
+ if (bootverbose) {
+ printf("ppb: <PnP> %d characters: ", len);
+ for (i = 0; i < len; i++)
+ printf("0x%x ", str[i]);
+ printf("\n");
+ }
/* replace ';' characters by '\0' */
for (i = 0; i < len; i++)
str[i] = (str[i] == ';') ? '\0' : str[i];
- if ((token = search_token(str, len, "MFG")) != NULL ||
- (token = search_token(str, len, "MANUFACTURER")) != NULL)
+ if ((token = search_token(str, len, "MFG")) != NULL)
printf("ppbus%d: <%s", ppb->ppb_link->adapter_unit,
search_token(token, UNKNOWN_LENGTH, ":") + 1);
else
printf("ppbus%d: <unknown", ppb->ppb_link->adapter_unit);
- if ((token = search_token(str, len, "MDL")) != NULL ||
- (token = search_token(str, len, "MODEL")) != NULL)
+ if ((token = search_token(str, len, "MDL")) != NULL)
printf(" %s",
search_token(token, UNKNOWN_LENGTH, ":") + 1);
else
@@ -205,8 +223,7 @@ ppb_pnp_detect(struct ppb_data *ppb, struct ppb_device *pnpdev)
printf(" %s", class);
}
- if ((token = search_token(str, len, "CMD")) != NULL ||
- (token = search_token(str, len, "COMMAND")) != NULL)
+ if ((token = search_token(str, len, "CMD")) != NULL)
printf(" %s",
search_token(token, UNKNOWN_LENGTH, ":") + 1);
@@ -224,120 +241,13 @@ ppb_pnp_detect(struct ppb_data *ppb, struct ppb_device *pnpdev)
class_id = PPB_PnP_UNKNOWN;
end_detect:
- return (class_id);
-}
-
-/*
- * ppb_scan_bus()
- *
- * Scan the ppbus for IEEE1284 compliant devices
- */
-static int
-ppb_scan_bus(struct ppb_data *ppb)
-{
- struct ppb_device pnpdev; /* temporary device to perform I/O */
- int error = 0;
-
- /* initialize the pnpdev structure for future use */
- bzero(&pnpdev, sizeof(pnpdev));
- pnpdev.ppb = ppb;
-
- if ((error = ppb_request_bus(&pnpdev, PPB_DONTWAIT))) {
- if (bootverbose)
- printf("ppb: cannot allocate ppbus!\n");
-
- return (error);
- }
-
- /* try all IEEE1284 modes, for one device only
- *
- * XXX We should implement the IEEE1284.3 standard to detect
- * daisy chained devices
- */
-
- error = ppb_1284_negociate(&pnpdev, PPB_NIBBLE, PPB_REQUEST_ID);
+ if ((error = ppb_1284_terminate(&pnpdev, VALID_STATE)) && bootverbose)
+ printf("ppb: ppb_1284_terminate()=%d\n", error);
- if ((ppb->state == PPB_ERROR) && (ppb->error == PPB_NOT_IEEE1284))
- goto end_scan;
-
- ppb_1284_terminate(&pnpdev);
-
- printf("ppb%d: IEEE1284 device found ", ppb->ppb_link->adapter_unit);
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_NIBBLE, 0))) {
- printf("/NIBBLE");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_PS2, 0))) {
- printf("/PS2");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_ECP, 0))) {
- printf("/ECP");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_ECP, PPB_USE_RLE))) {
- printf("/ECP_RLE");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_EPP, 0))) {
- printf("/EPP");
- ppb_1284_terminate(&pnpdev);
- }
-
- /* try more IEEE1284 modes */
- if (bootverbose) {
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_NIBBLE,
- PPB_REQUEST_ID))) {
- printf("/NIBBLE_ID");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_PS2,
- PPB_REQUEST_ID))) {
- printf("/PS2_ID");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_ECP,
- PPB_REQUEST_ID))) {
- printf("/ECP_ID");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_ECP,
- PPB_REQUEST_ID | PPB_USE_RLE))) {
- printf("/ECP_RLE_ID");
- ppb_1284_terminate(&pnpdev);
- }
-
- if (!(error = ppb_1284_negociate(&pnpdev, PPB_COMPATIBLE,
- PPB_EXTENSIBILITY_LINK))) {
- printf("/Extensibility Link");
- ppb_1284_terminate(&pnpdev);
- }
- }
-
- printf("\n");
-
- /* detect PnP devices */
- ppb->class_id = ppb_pnp_detect(ppb, &pnpdev);
-
- ppb_release_bus(&pnpdev);
-
- return (0);
-
-end_scan:
ppb_release_bus(&pnpdev);
- return (error);
+ return (class_id);
}
-#endif /* !DONTPROBE_1284 */
-
/*
* ppb_attachdevs()
*
@@ -347,16 +257,18 @@ end_scan:
int
ppb_attachdevs(struct ppb_data *ppb)
{
+ int error;
struct ppb_device *dev;
struct ppb_driver **p_drvpp, *p_drvp;
LIST_INIT(&ppb->ppb_devs); /* initialise device/driver list */
p_drvpp = (struct ppb_driver **)ppbdriver_set.ls_items;
-#ifndef DONTPROBE_1284
- /* detect IEEE1284 compliant devices */
- ppb_scan_bus(ppb);
-#endif /* !DONTPROBE_1284 */
+/* XXX wait for ieee1284 good support */
+#if 0
+ /* detect PnP devices */
+ ppb->class_id = ppb_pnp_detect(ppb);
+#endif
/*
* Blindly try all probes here. Later we should look at
diff --git a/sys/dev/ppbus/ppbconf.h b/sys/dev/ppbus/ppbconf.h
index c47e4ab7d04dd..80efe282a62b3 100644
--- a/sys/dev/ppbus/ppbconf.h
+++ b/sys/dev/ppbus/ppbconf.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppbconf.h,v 1.10 1999/01/10 12:04:55 nsouch Exp $
+ * $Id: ppbconf.h,v 1.8 1998/09/13 18:26:26 nsouch Exp $
*
*/
#ifndef __PPBCONF_H
@@ -47,12 +47,7 @@
#define PPB_EPP 0x4 /* EPP mode, 32 bit */
#define PPB_ECP 0x8 /* ECP mode */
-/* mode aliases */
-#define PPB_SPP PPB_NIBBLE|PPB_PS2
-#define PPB_BYTE PPB_PS2
-
-#define PPB_MASK 0x0f
-#define PPB_OPTIONS_MASK 0xf0
+#define PPB_SPP PPB_NIBBLE|PPB_PS2
#define PPB_IS_EPP(mode) (mode & PPB_EPP)
#define PPB_IN_EPP_MODE(dev) (PPB_IS_EPP (ppb_get_mode (dev)))
@@ -108,8 +103,6 @@ struct ppb_status {
#define PPB_NOINTR 0
#define PPB_WAIT 0x1
#define PPB_INTR 0x2
-#define PPB_POLL 0x4
-#define PPB_FOREVER -1
/*
* Microsequence stuff.
@@ -151,14 +144,14 @@ struct ppb_context {
struct microseq *curmsq; /* currently executed microseqence */
};
+
struct ppb_device {
int id_unit; /* unit of the device */
char *name; /* name of the device */
ushort mode; /* current mode of the device */
- ushort avm; /* available IEEE1284 modes of
- * the device */
+ ushort avm; /* available modes of the device */
struct ppb_context ctx; /* context of the device */
@@ -191,8 +184,6 @@ struct ppb_adapter {
int (*exec_microseq)(int, struct ppb_microseq **);
int (*setmode)(int, int);
- int (*read)(int, char *, int, int);
- int (*write)(int, char *, int, int);
void (*outsb_epp)(int, char *, int);
void (*outsw_epp)(int, char *, int);
@@ -201,12 +192,12 @@ struct ppb_adapter {
void (*insw_epp)(int, char *, int);
void (*insl_epp)(int, char *, int);
- u_char (*r_dtr)(int);
- u_char (*r_str)(int);
- u_char (*r_ctr)(int);
- u_char (*r_epp)(int);
- u_char (*r_ecr)(int);
- u_char (*r_fifo)(int);
+ char (*r_dtr)(int);
+ char (*r_str)(int);
+ char (*r_ctr)(int);
+ char (*r_epp)(int);
+ char (*r_ecr)(int);
+ char (*r_fifo)(int);
void (*w_dtr)(int, char);
void (*w_str)(int, char);
@@ -239,7 +230,7 @@ struct ppb_link {
/*
* Maximum size of the PnP info string
*/
-#define PPB_PnP_STRING_SIZE 256 /* XXX */
+#define PPB_PnP_STRING_SIZE 128 /* XXX */
/*
* Parallel Port Bus structure.
@@ -259,11 +250,10 @@ struct ppb_data {
#define PPB_PnP_UNKNOWN 10
int class_id; /* not a PnP device if class_id < 0 */
- int state; /* current IEEE1284 state */
- int error; /* last IEEE1284 error */
-
ushort mode; /* IEEE 1284-1994 mode
* NIBBLE, PS2, EPP or ECP */
+ ushort avm; /* IEEE 1284-1994 available
+ * modes */
struct ppb_link *ppb_link; /* link to the adapter */
struct ppb_device *ppb_owner; /* device which owns the bus */
@@ -304,7 +294,6 @@ extern int ppb_ecp_sync(struct ppb_device *);
extern int ppb_get_status(struct ppb_device *, struct ppb_status *);
extern int ppb_set_mode(struct ppb_device *, int);
-extern int ppb_write(struct ppb_device *, char *, int, int);
/*
* These are defined as macros for speedup.
diff --git a/sys/dev/ppbus/ppi.c b/sys/dev/ppbus/ppi.c
index e0072f3e4cda8..f742e4b56fae5 100644
--- a/sys/dev/ppbus/ppi.c
+++ b/sys/dev/ppbus/ppi.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: ppi.c,v 1.8 1998/12/07 21:58:16 archie Exp $
+ * $Id: ppi.c,v 1.6 1998/01/02 09:30:39 msmith Exp $
*
*/
#include "ppi.h"
@@ -34,35 +34,18 @@
#include <sys/systm.h>
#include <sys/conf.h>
#include <sys/kernel.h>
-#include <sys/uio.h>
#include <sys/malloc.h>
#include <sys/fcntl.h>
-#include <machine/clock.h>
-
#include <dev/ppbus/ppbconf.h>
-#include <dev/ppbus/ppb_msq.h>
-
-#include "opt_ppb_1284.h"
-
-#ifdef PERIPH_1284
-#include <dev/ppbus/ppb_1284.h>
-#endif
-
#include <dev/ppbus/ppi.h>
-#define BUFSIZE 512
struct ppi_data {
int ppi_unit;
int ppi_flags;
#define HAVE_PPBUS (1<<0)
-#define HAD_PPBUS (1<<1)
-
- int ppi_count;
- int ppi_mode; /* IEEE1284 mode */
- char ppi_buffer[BUFSIZE];
struct ppb_device ppi_dev;
};
@@ -87,41 +70,13 @@ DATA_SET(ppbdriver_set, ppidriver);
static d_open_t ppiopen;
static d_close_t ppiclose;
static d_ioctl_t ppiioctl;
-static d_write_t ppiwrite;
-static d_read_t ppiread;
#define CDEV_MAJOR 82
static struct cdevsw ppi_cdevsw =
- { ppiopen, ppiclose, ppiread, ppiwrite, /* 82 */
+ { ppiopen, ppiclose, noread, nowrite, /* 82 */
ppiioctl, nullstop, nullreset, nodevtotty,
seltrue, nommap, nostrat, "ppi", NULL, -1 };
-#ifdef PERIPH_1284
-
-static void
-ppi_enable_intr(struct ppi_data *ppi)
-{
- char r;
-
- r = ppb_rctr(&ppi->ppi_dev);
- ppb_wctr(&ppi->ppi_dev, r | IRQENABLE);
-
- return;
-}
-
-static void
-ppi_disable_intr(struct ppi_data *ppi)
-{
- char r;
-
- r = ppb_rctr(&ppi->ppi_dev);
- ppb_wctr(&ppi->ppi_dev, r & ~IRQENABLE);
-
- return;
-}
-
-#endif /* PERIPH_1284 */
-
/*
* ppiprobe()
*/
@@ -161,6 +116,8 @@ ppiprobe(struct ppb_data *ppb)
static int
ppiattach(struct ppb_device *dev)
{
+ struct ppi_data *ppi = ppidata[dev->id_unit];
+
/*
* Report ourselves
*/
@@ -170,72 +127,9 @@ ppiattach(struct ppb_device *dev)
return (1);
}
-/*
- * Cable
- * -----
- *
- * Use an IEEE1284 compliant (DB25/DB25) cable with the following tricks:
- *
- * nStrobe <-> nAck 1 <-> 10
- * nAutofd <-> Busy 11 <-> 14
- * nSelectin <-> Select 17 <-> 13
- * nInit <-> nFault 15 <-> 16
- *
- */
static void
ppiintr(int unit)
{
-#ifdef PERIPH_1284
- struct ppi_data *ppi = ppidata[unit];
-
- ppi_disable_intr(ppi);
-
- switch (ppi->ppi_dev.ppb->state) {
-
- /* accept IEEE1284 negociation then wakeup an waiting process to
- * continue negociation at process level */
- case PPB_FORWARD_IDLE:
- /* Event 1 */
- if ((ppb_rstr(&ppi->ppi_dev) & (SELECT | nBUSY)) ==
- (SELECT | nBUSY)) {
- /* IEEE1284 negociation */
-#ifdef DEBUG_1284
- printf("N");
-#endif
-
- /* Event 2 - prepare for reading the ext. value */
- ppb_wctr(&ppi->ppi_dev, (PCD | STROBE | nINIT) & ~SELECTIN);
-
- ppi->ppi_dev.ppb->state = PPB_NEGOCIATION;
-
- } else {
-#ifdef DEBUG_1284
- printf("0x%x", ppb_rstr(&ppi->ppi_dev));
-#endif
- ppb_peripheral_terminate(&ppi->ppi_dev, PPB_DONTWAIT);
- break;
- }
-
- /* wake up any process waiting for negociation from
- * remote master host */
-
- /* XXX should set a variable to warn the process about
- * the interrupt */
-
- wakeup(ppi);
- break;
- default:
-#ifdef DEBUG_1284
- printf("?%d", ppi->ppi_dev.ppb->state);
-#endif
- ppi->ppi_dev.ppb->state = PPB_FORWARD_IDLE;
- ppb_set_mode(&ppi->ppi_dev, PPB_COMPATIBLE);
- break;
- }
-
- ppi_enable_intr(ppi);
-#endif /* PERIPH_1284 */
-
return;
}
@@ -249,16 +143,11 @@ ppiopen(dev_t dev, int flags, int fmt, struct proc *p)
if (unit >= nppi)
return (ENXIO);
- if (!(ppi->ppi_flags & HAVE_PPBUS)) {
- if ((res = ppb_request_bus(&ppi->ppi_dev,
- (flags & O_NONBLOCK) ? PPB_DONTWAIT :
- (PPB_WAIT | PPB_INTR))))
+ if (!(ppi->ppi_flags & HAVE_PPBUS))
+ if ((res = ppb_request_bus(&ppi->ppi_dev, (flags & O_NONBLOCK) ? PPB_DONTWAIT : (PPB_WAIT | PPB_INTR))))
return (res);
- ppi->ppi_flags |= HAVE_PPBUS;
- }
- ppi->ppi_count += 1;
-
+ ppi->ppi_flags |= HAVE_PPBUS;
return (0);
}
@@ -268,206 +157,12 @@ ppiclose(dev_t dev, int flags, int fmt, struct proc *p)
u_int unit = minor(dev);
struct ppi_data *ppi = ppidata[unit];
- ppi->ppi_count --;
- if (!ppi->ppi_count) {
-
-#ifdef PERIPH_1284
- switch (ppi->ppi_dev.ppb->state) {
- case PPB_PERIPHERAL_IDLE:
- ppb_peripheral_terminate(&ppi->ppi_dev, 0);
- break;
- case PPB_REVERSE_IDLE:
- case PPB_EPP_IDLE:
- case PPB_ECP_FORWARD_IDLE:
- default:
- ppb_1284_terminate(&ppi->ppi_dev);
- break;
- }
-#endif /* PERIPH_1284 */
-
+ if (ppi->ppi_flags & HAVE_PPBUS)
ppb_release_bus(&ppi->ppi_dev);
- ppi->ppi_flags &= ~HAVE_PPBUS;
- }
-
+ ppi->ppi_flags &= ~HAVE_PPBUS;
return (0);
}
-/*
- * ppiread()
- *
- * IEEE1284 compliant read.
- *
- * First, try negociation to BYTE then NIBBLE mode
- * If no data is available, wait for it otherwise transfer as much as possible
- */
-static int
-ppiread(dev_t dev, struct uio *uio, int ioflag)
-{
-#ifdef PERIPH_1284
- u_int unit = minor(dev);
- struct ppi_data *ppi = ppidata[unit];
- int len, error = 0;
-
- switch (ppi->ppi_dev.ppb->state) {
- case PPB_PERIPHERAL_IDLE:
- ppb_peripheral_terminate(&ppi->ppi_dev, 0);
- /* fall throught */
-
- case PPB_FORWARD_IDLE:
- /* if can't negociate NIBBLE mode then try BYTE mode,
- * the peripheral may be a computer
- */
- if ((ppb_1284_negociate(&ppi->ppi_dev,
- ppi->ppi_mode = PPB_NIBBLE, 0))) {
-
- /* XXX Wait 2 seconds to let the remote host some
- * time to terminate its interrupt
- */
- tsleep(ppi, PPBPRI, "ppiread", 2*hz);
-
- if ((error = ppb_1284_negociate(&ppi->ppi_dev,
- ppi->ppi_mode = PPB_BYTE, 0)))
- return (error);
- }
- break;
-
- case PPB_REVERSE_IDLE:
- case PPB_EPP_IDLE:
- case PPB_ECP_FORWARD_IDLE:
- default:
- break;
- }
-
-#ifdef DEBUG_1284
- printf("N");
-#endif
- /* read data */
- len = 0;
- while (uio->uio_resid) {
- if ((error = ppb_1284_read(&ppi->ppi_dev, ppi->ppi_mode,
- ppi->ppi_buffer, min(BUFSIZE, uio->uio_resid),
- &len))) {
- goto error;
- }
-
- if (!len)
- goto error; /* no more data */
-
-#ifdef DEBUG_1284
- printf("d");
-#endif
- if ((error = uiomove(ppi->ppi_buffer, len, uio)))
- goto error;
- }
-
-error:
-
-#else /* PERIPH_1284 */
- int error = ENODEV;
-#endif
-
- return (error);
-}
-
-/*
- * ppiwrite()
- *
- * IEEE1284 compliant write
- *
- * Actually, this is the peripheral side of a remote IEEE1284 read
- *
- * The first part of the negociation (IEEE1284 device detection) is
- * done at interrupt level, then the remaining is done by the writing
- * process
- *
- * Once negociation done, transfer data
- */
-static int
-ppiwrite(dev_t dev, struct uio *uio, int ioflag)
-{
-#ifdef PERIPH_1284
- u_int unit = minor(dev);
- struct ppi_data *ppi = ppidata[unit];
- struct ppb_data *ppb = ppi->ppi_dev.ppb;
- int len, error = 0, sent;
-
-#if 0
- int ret;
-
- #define ADDRESS MS_PARAM(0, 0, MS_TYP_PTR)
- #define LENGTH MS_PARAM(0, 1, MS_TYP_INT)
-
- struct ppb_microseq msq[] = {
- { MS_OP_PUT, { MS_UNKNOWN, MS_UNKNOWN, MS_UNKNOWN } },
- MS_RET(0)
- };
-
- /* negociate ECP mode */
- if (ppb_1284_negociate(&ppi->ppi_dev, PPB_ECP, 0)) {
- printf("ppiwrite: ECP negociation failed\n");
- }
-
- while (!error && (len = min(uio->uio_resid, BUFSIZE))) {
- uiomove(ppi->ppi_buffer, len, uio);
-
- ppb_MS_init_msq(msq, 2, ADDRESS, ppi->ppi_buffer, LENGTH, len);
-
- error = ppb_MS_microseq(&ppi->ppi_dev, msq, &ret);
- }
-#endif
-
- /* we have to be peripheral to be able to send data, so
- * wait for the appropriate state
- */
- if (ppb->state < PPB_PERIPHERAL_NEGOCIATION)
- ppb_1284_terminate(&ppi->ppi_dev);
-
- while (ppb->state != PPB_PERIPHERAL_IDLE) {
- /* XXX should check a variable before sleeping */
-#ifdef DEBUG_1284
- printf("s");
-#endif
-
- ppi_enable_intr(ppi);
-
- /* sleep until IEEE1284 negociation starts */
- error = tsleep(ppi, PCATCH | PPBPRI, "ppiwrite", 0);
-
- switch (error) {
- case 0:
- /* negociate peripheral side with BYTE mode */
- ppb_peripheral_negociate(&ppi->ppi_dev, PPB_BYTE, 0);
- break;
- case EWOULDBLOCK:
- break;
- default:
- goto error;
- }
- }
-#ifdef DEBUG_1284
- printf("N");
-#endif
-
- /* negociation done, write bytes to master host */
- while (len = min(uio->uio_resid, BUFSIZE)) {
- uiomove(ppi->ppi_buffer, len, uio);
- if ((error = byte_peripheral_write(&ppi->ppi_dev,
- ppi->ppi_buffer, len, &sent)))
- goto error;
-#ifdef DEBUG_1284
- printf("d");
-#endif
- }
-
-error:
-
-#else /* PERIPH_1284 */
- int error = ENODEV;
-#endif
-
- return (error);
-}
-
static int
ppiioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
{
@@ -515,6 +210,7 @@ ppiioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
case PPISFIFO: /* write FIFO */
ppb_wfifo(&ppi->ppi_dev, *val);
break;
+
default:
error = ENOTTY;
break;
diff --git a/sys/dev/ppbus/pps.c b/sys/dev/ppbus/pps.c
index 95b255cb1bb31..9d1f20d9e04bc 100644
--- a/sys/dev/ppbus/pps.c
+++ b/sys/dev/ppbus/pps.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: pps.c,v 1.11 1998/08/24 16:31:27 phk Exp $
+ * $Id: pps.c,v 1.10 1998/08/03 19:14:31 msmith Exp $
*
* This driver implements a draft-mogul-pps-api-02.txt PPS source.
*
@@ -153,6 +153,7 @@ ppsintr(int unit)
{
struct pps_data *sc = softc[unit];
struct timespec tc;
+ struct timeval tv;
nanotime(&tc);
if (!(ppb_rstr(&sc->pps_dev) & nACK))
@@ -170,8 +171,6 @@ ppsintr(int unit)
sc->ppsinfo.assert_sequence++;
#ifdef PPS_SYNC
if (sc->ppsparam.mode & PPS_HARDPPSONASSERT) {
- struct timeval tv;
-
tv.tv_sec = tc.tv_sec;
tv.tv_usec = tc.tv_nsec / 1000;
hardpps(&tv, tv.tv_usec);
diff --git a/sys/dev/ppbus/vpo.c b/sys/dev/ppbus/vpo.c
index 17b67c5f632d7..0585a497cd9b3 100644
--- a/sys/dev/ppbus/vpo.c
+++ b/sys/dev/ppbus/vpo.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: vpo.c,v 1.10 1999/01/09 18:05:46 nsouch Exp $
+ * $Id: vpo.c,v 1.4 1997/09/01 00:51:52 bde Exp $
*
*/
@@ -51,8 +51,6 @@
#include <sys/kernel.h>
#endif /*KERNEL */
-#include "opt_vpo.h"
-
#include <dev/ppbus/ppbconf.h>
#include <dev/ppbus/vpoio.h>
@@ -159,6 +157,7 @@ vpoprobe(struct ppb_data *ppb)
static int
vpoattach(struct ppb_device *dev)
{
+ struct scsibus_data *scbus;
struct vpo_data *vpo = vpodata[dev->id_unit];
struct cam_devq *devq;
@@ -212,11 +211,9 @@ vpoattach(struct ppb_device *dev)
static void
vpo_intr(struct vpo_data *vpo, struct ccb_scsiio *csio)
{
- int errno; /* error in errno.h */
+
+ int i, errno; /* error in errno.h */
int s;
-#ifdef VP0_DEBUG
- int i;
-#endif
s = splcam();
@@ -413,10 +410,6 @@ vpo_action(struct cam_sim *sim, union ccb *ccb)
printf("vpo%d: XPT_PATH_INQ request\n", vpo->vpo_unit);
#endif
cpi->version_num = 1; /* XXX??? */
- cpi->hba_inquiry = 0;
- cpi->target_sprt = 0;
- cpi->hba_misc = 0;
- cpi->hba_eng_cnt = 0;
cpi->max_target = 7;
cpi->max_lun = 0;
cpi->initiator_id = VP0_INITIATOR;
diff --git a/sys/dev/ppbus/vpoio.c b/sys/dev/ppbus/vpoio.c
index 54791ee44dcc7..a416efefb8ef9 100644
--- a/sys/dev/ppbus/vpoio.c
+++ b/sys/dev/ppbus/vpoio.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: vpoio.c,v 1.4 1998/12/07 21:58:16 archie Exp $
+ * $Id: vpoio.c,v 1.2 1998/09/13 18:26:26 nsouch Exp $
*
*/
@@ -41,8 +41,6 @@
#include <sys/kernel.h>
#endif /*KERNEL */
-#include "opt_vpo.h"
-
#include <dev/ppbus/ppbconf.h>
#include <dev/ppbus/ppb_msq.h>
#include <dev/ppbus/vpoio.h>
@@ -286,13 +284,8 @@ vpoio_connect(struct vpoio_data *vpo, int how)
int error;
int ret;
- if ((error = ppb_request_bus(&vpo->vpo_dev, how))) {
-
-#ifdef VP0_DEBUG
- printf("%s: can't request bus!\n", __FUNCTION__);
-#endif
+ if ((error = ppb_request_bus(&vpo->vpo_dev, how)))
return error;
- }
if (PPB_IN_EPP_MODE(&vpo->vpo_dev))
ppb_MS_microseq(&vpo->vpo_dev, connect_epp_microseq, &ret);
@@ -444,8 +437,8 @@ vpoio_outstr(struct vpoio_data *vpo, char *buffer, int size)
ppb_wctr(&vpo->vpo_dev,
H_AUTO | H_nSELIN | H_INIT | H_STROBE);
}
+ /* ppb_ecp_sync(&vpo->vpo_dev); */
#endif
- ppb_ecp_sync(&vpo->vpo_dev);
return (error);
}
@@ -456,7 +449,10 @@ vpoio_outstr(struct vpoio_data *vpo, char *buffer, int size)
static int
vpoio_instr(struct vpoio_data *vpo, char *buffer, int size)
{
+
+ register int k;
int error = 0;
+ int r, mode, epp;
ppb_MS_exec(&vpo->vpo_dev, MS_OP_GET, buffer, size, MS_UNKNOWN, &error);
@@ -483,8 +479,8 @@ vpoio_instr(struct vpoio_data *vpo, char *buffer, int size)
ppb_wctr(&vpo->vpo_dev, PCD |
H_AUTO | H_nSELIN | H_INIT | H_STROBE);
}
+ /* ppb_ecp_sync(&vpo->vpo_dev); */
#endif
- ppb_ecp_sync(&vpo->vpo_dev);
return (error);
}
@@ -492,6 +488,7 @@ vpoio_instr(struct vpoio_data *vpo, char *buffer, int size)
static char
vpoio_select(struct vpoio_data *vpo, int initiator, int target)
{
+ register int k;
int ret;
struct ppb_microseq select_microseq[] = {
@@ -708,10 +705,6 @@ vpoio_reset_bus(struct vpoio_data *vpo)
{
/* first, connect to the drive */
if (vpoio_connect(vpo, PPB_WAIT|PPB_INTR) || !vpoio_in_disk_mode(vpo)) {
-
-#ifdef VP0_DEBUG
- printf("%s: not in disk mode!\n", __FUNCTION__);
-#endif
/* release ppbus */
vpoio_disconnect(vpo);
return (1);
diff --git a/sys/dev/smbus/smb.c b/sys/dev/smbus/smb.c
index b5d29194430eb..94719fb83ad68 100644
--- a/sys/dev/smbus/smb.c
+++ b/sys/dev/smbus/smb.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: smb.c,v 1.5 1999/01/09 18:08:23 nsouch Exp $
+ * $Id: smb.c,v 1.2 1998/09/04 17:53:42 nsouch Exp $
*
*/
#include <sys/param.h>
@@ -119,6 +119,8 @@ smb_probe(device_t dev)
static int
smb_attach(device_t dev)
{
+ struct smb_softc *sc = (struct smb_softc *)device_get_softc(dev);
+
return (0);
}
@@ -157,9 +159,24 @@ smbclose(dev_t dev, int flags, int fmt, struct proc *p)
static int
smbwrite(dev_t dev, struct uio * uio, int ioflag)
{
- /* not supported */
+ device_t smbdev = IIC_DEVICE(minor(dev));
+ struct smb_softc *sc = IIC_SOFTC(minor(dev));
+ int error, count;
- return (EINVAL);
+ if (!sc || !smbdev)
+ return (EINVAL);
+
+ if (sc->sc_count == 0)
+ return (EINVAL);
+
+ count = min(uio->uio_resid, BUFSIZE);
+ uiomove(sc->sc_buffer, count, uio);
+
+ /* we consider the command char as the first character to send */
+ smbus_bwrite(device_get_parent(smbdev), sc->sc_addr,
+ sc->sc_buffer[0], count-1, sc->sc_buffer+1);
+
+ return (0);
}
static int
@@ -180,62 +197,65 @@ smbioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
int error = 0;
struct smbcmd *s = (struct smbcmd *)data;
- if (!sc || !s)
+ if (!sc)
return (EINVAL);
switch (cmd) {
case SMB_QUICK_WRITE:
- error=smbus_quick(parent, s->slave, SMB_QWRITE);
+ smbus_quick(parent, sc->sc_addr, SMB_QWRITE);
goto end;
case SMB_QUICK_READ:
- error=smbus_quick(parent, s->slave, SMB_QREAD);
+ smbus_quick(parent, sc->sc_addr, SMB_QREAD);
goto end;
};
+ if (!s)
+ return (EINVAL);
+
switch (cmd) {
case SMB_SENDB:
- error=smbus_sendb(parent, s->slave, s->cmd);
+ smbus_sendb(parent, sc->sc_addr, s->cmd);
break;
case SMB_RECVB:
- error=smbus_recvb(parent, s->slave, &s->cmd);
+ smbus_recvb(parent, sc->sc_addr, &s->cmd);
break;
case SMB_WRITEB:
- error=smbus_writeb(parent, s->slave, s->cmd, s->data.byte);
+ smbus_writeb(parent, sc->sc_addr, s->cmd, s->data.byte);
break;
case SMB_WRITEW:
- error=smbus_writew(parent, s->slave, s->cmd, s->data.word);
+ smbus_writew(parent, sc->sc_addr, s->cmd, s->data.word);
break;
case SMB_READB:
if (s->data.byte_ptr)
- error=smbus_readb(parent, s->slave, s->cmd,
+ smbus_readb(parent, sc->sc_addr, s->cmd,
s->data.byte_ptr);
break;
case SMB_READW:
if (s->data.word_ptr)
- error=smbus_readw(parent, s->slave, s->cmd, s->data.word_ptr);
+ smbus_readw(parent, sc->sc_addr, s->cmd, s->data.word_ptr);
break;
case SMB_PCALL:
if (s->data.process.rdata)
- error=smbus_pcall(parent, s->slave, s->cmd,
+ smbus_pcall(parent, sc->sc_addr, s->cmd,
s->data.process.sdata, s->data.process.rdata);
break;
case SMB_BWRITE:
if (s->count && s->data.byte_ptr)
- error=smbus_bwrite(parent, s->slave, s->cmd, s->count,
+ smbus_bwrite(parent, sc->sc_addr, s->cmd, s->count,
s->data.byte_ptr);
break;
case SMB_BREAD:
if (s->count && s->data.byte_ptr)
- error=smbus_bread(parent, s->slave, s->cmd, s->count,
+ smbus_bread(parent, sc->sc_addr, s->cmd, s->count,
s->data.byte_ptr);
break;
diff --git a/sys/dev/smbus/smbconf.c b/sys/dev/smbus/smbconf.c
index 458916f8e8e8e..60798f5c82ddb 100644
--- a/sys/dev/smbus/smbconf.c
+++ b/sys/dev/smbus/smbconf.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: smbconf.c,v 1.3 1998/11/22 22:01:42 nsouch Exp $
+ * $Id: smbconf.c,v 1.1.1.2 1998/08/13 15:16:57 son Exp $
*
*/
#include <sys/param.h>
@@ -65,29 +65,10 @@ smbus_alloc_bus(device_t parent)
/* add the bus to the parent */
child = device_add_child(parent, "smbus", -1, NULL);
- return (child);
-}
-
-static int
-smbus_poll(struct smbus_softc *sc, int how)
-{
- int error;
-
- switch (how) {
- case (SMB_WAIT | SMB_INTR):
- error = tsleep(sc, SMBPRI|PCATCH, "smbreq", 0);
- break;
-
- case (SMB_WAIT | SMB_NOINTR):
- error = tsleep(sc, SMBPRI, "smbreq", 0);
- break;
-
- default:
- return (EWOULDBLOCK);
- break;
- }
+ if (child)
+ device_set_desc(child, "System Management Bus");
- return (error);
+ return (child);
}
/*
@@ -103,20 +84,25 @@ smbus_request_bus(device_t bus, device_t dev, int how)
struct smbus_softc *sc = (struct smbus_softc *)device_get_softc(bus);
int s, error = 0;
- /* first, ask the underlying layers if the request is ok */
- do {
- error = SMBUS_CALLBACK(device_get_parent(bus),
- SMB_REQUEST_BUS, (caddr_t)&how);
- if (error)
- error = smbus_poll(sc, how);
- } while (error);
-
while (!error) {
s = splhigh();
if (sc->owner) {
splx(s);
- error = smbus_poll(sc, how);
+ switch (how) {
+ case (SMB_WAIT | SMB_INTR):
+ error = tsleep(sc, SMBPRI|PCATCH, "smbreq", 0);
+ break;
+
+ case (SMB_WAIT | SMB_NOINTR):
+ error = tsleep(sc, SMBPRI, "smbreq", 0);
+ break;
+
+ default:
+ return (EWOULDBLOCK);
+ break;
+ }
+
} else {
sc->owner = dev;
@@ -137,13 +123,7 @@ int
smbus_release_bus(device_t bus, device_t dev)
{
struct smbus_softc *sc = (struct smbus_softc *)device_get_softc(bus);
- int s, error;
-
- /* first, ask the underlying layers if the release is ok */
- error = SMBUS_CALLBACK(device_get_parent(bus), SMB_RELEASE_BUS, NULL);
-
- if (error)
- return (error);
+ int s;
s = splhigh();
if (sc->owner != dev) {
@@ -168,7 +148,7 @@ smbus_release_bus(device_t bus, device_t dev)
u_char
smbus_get_addr(device_t dev)
{
- uintptr_t addr;
+ u_long addr;
device_t parent = device_get_parent(dev);
BUS_READ_IVAR(parent, dev, SMBUS_IVAR_ADDR, &addr);
diff --git a/sys/dev/smbus/smbconf.h b/sys/dev/smbus/smbconf.h
index 0a442ec9633ae..10fc3bcb011ca 100644
--- a/sys/dev/smbus/smbconf.h
+++ b/sys/dev/smbus/smbconf.h
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: smbconf.h,v 1.1.1.1 1998/09/03 20:52:54 nsouch Exp $
+ * $Id: smbconf.h,v 1.1.1.2 1998/08/13 15:16:58 son Exp $
*/
#ifndef __SMBONF_H
#define __SMBONF_H
@@ -43,18 +43,10 @@
#define SMB_INTR 0x2
/*
- * callback index
- */
-#define SMB_REQUEST_BUS 0x1
-#define SMB_RELEASE_BUS 0x2
-
-/*
* SMB bus errors
*/
#define SMB_ENOERR 0x0
#define SMB_EBUSERR 0x1
-#define SMB_ENOTSUPP 0x2
-#define SMB_ENOACK 0x3
/*
* How Quick command is executed
diff --git a/sys/dev/smbus/smbus.c b/sys/dev/smbus/smbus.c
index ca067103c43e3..f9f787d3a4719 100644
--- a/sys/dev/smbus/smbus.c
+++ b/sys/dev/smbus/smbus.c
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: smbus.c,v 1.6 1998/12/28 19:07:51 nsouch Exp $
+ * $Id: smbus.c,v 1.1.1.2 1998/08/13 15:16:58 son Exp $
*
*/
#include <sys/param.h>
@@ -46,6 +46,7 @@
*/
struct smbus_device {
const char *smbd_name; /* device name */
+ const u_char smbd_addr; /* address of the device */
const char *smbd_desc; /* device descriptor */
};
@@ -53,7 +54,7 @@ struct smbus_device {
* list of known devices
*/
struct smbus_device smbus_children[] = {
- { "smb", "SMBus general purpose I/O" },
+ { "smb", 0, "General Call" },
{ NULL, 0 }
};
@@ -65,10 +66,7 @@ static devclass_t smbus_devclass;
static int smbus_probe(device_t);
static int smbus_attach(device_t);
static void smbus_print_child(device_t, device_t);
-
-#if 0
static int smbus_read_ivar(device_t , device_t, int, u_long *);
-#endif
static device_method_t smbus_methods[] = {
/* device interface */
@@ -79,8 +77,10 @@ static device_method_t smbus_methods[] = {
/* bus interface */
DEVMETHOD(bus_print_child, smbus_print_child),
- DEVMETHOD(bus_read_ivar, bus_generic_read_ivar),
+ DEVMETHOD(bus_read_ivar, smbus_read_ivar),
DEVMETHOD(bus_write_ivar, bus_generic_write_ivar),
+ DEVMETHOD(bus_create_intr, bus_generic_create_intr),
+ DEVMETHOD(bus_connect_intr, bus_generic_connect_intr),
{ 0, 0 }
};
@@ -100,7 +100,14 @@ static driver_t smbus_driver = {
static int
smbus_probe(device_t dev)
{
- device_set_desc(dev, "System Management Bus");
+ struct smbus_device *smbdev;
+ device_t child;
+
+ for (smbdev = smbus_children; smbdev->smbd_name; smbdev++) {
+
+ child = device_add_child(dev, smbdev->smbd_name, -1, smbdev);
+ device_set_desc(child, smbdev->smbd_desc);
+ }
return (0);
}
@@ -108,20 +115,10 @@ smbus_probe(device_t dev)
static int
smbus_attach(device_t dev)
{
- struct smbus_device *smbdev;
+ struct smbus_softc *sc = device_get_softc(dev);
+ device_t parent = device_get_parent(dev);
- /* add known devices */
- for (smbdev = smbus_children; smbdev->smbd_name; smbdev++) {
- device_t child;
-
- if (devclass_find(smbdev->smbd_name)) {
- child = device_add_child(dev, smbdev->smbd_name,
- -1, smbdev);
- device_set_desc(child, smbdev->smbd_desc);
- } else if (bootverbose)
- printf("smbus: %s devclass not found\n",
- smbdev->smbd_name);
- }
+ printf("Probing for devices on the SMB bus:\n");
bus_generic_attach(dev);
return (0);
@@ -136,27 +133,25 @@ smbus_generic_intr(device_t dev, u_char devaddr, char low, char high)
static void
smbus_print_child(device_t bus, device_t dev)
{
+ struct smbus_device* smbdev = DEVTOSMBUS(dev);
- printf(" on %s%d", device_get_name(bus), device_get_unit(bus));
+ printf(" on %s%d addr 0x%x", device_get_name(bus),
+ device_get_unit(bus), smbdev->smbd_addr);
return;
}
-#if 0
static int
smbus_read_ivar(device_t bus, device_t dev, int index, u_long* result)
{
struct smbus_device* smbdev = DEVTOSMBUS(dev);
switch (index) {
- default:
+ case SMBUS_IVAR_ADDR:
+ *result = smbdev->smbd_addr;
break;
}
return (ENOENT);
}
-#endif
DRIVER_MODULE(smbus, iicsmb, smbus_driver, smbus_devclass, 0, 0);
-DRIVER_MODULE(smbus, bti2c, smbus_driver, smbus_devclass, 0, 0);
-DRIVER_MODULE(smbus, intsmb, smbus_driver, smbus_devclass, 0, 0);
-DRIVER_MODULE(smbus, smbv, smbus_driver, smbus_devclass, 0, 0);
diff --git a/sys/dev/smbus/smbus_if.m b/sys/dev/smbus/smbus_if.m
index 3e118811b5b06..3c9ee5a0ecc1d 100644
--- a/sys/dev/smbus/smbus_if.m
+++ b/sys/dev/smbus/smbus_if.m
@@ -23,13 +23,13 @@
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# $Id: smbus_if.m,v 1.3 1998/11/07 14:56:04 nsouch Exp $
+# $Id: smbus_if.m,v 1.1.1.2 1998/08/13 15:16:58 son Exp $
#
-INTERFACE smbus;
+INTERFACE smbus
#
-# Interpret interrupt
+# Interprete interrupt
#
METHOD void intr {
device_t dev;
@@ -40,15 +40,6 @@ METHOD void intr {
};
#
-# smbus callback
-#
-METHOD int callback {
- device_t dev;
- int index;
- caddr_t data;
-};
-
-#
# Quick command
#
METHOD int quick {
@@ -129,7 +120,7 @@ METHOD int pcall {
#
# Block Write command
#
-METHOD int bwrite {
+METHODE int bwrite {
device_t dev;
u_char slave;
char cmd;
@@ -140,7 +131,7 @@ METHOD int bwrite {
#
# Block Read command
#
-METHOD int bread {
+METHODE int bread {
device_t dev;
u_char slave;
char cmd;
diff --git a/sys/dev/syscons/scvesactl.c b/sys/dev/syscons/scvesactl.c
deleted file mode 100644
index 6f48630e276cf..0000000000000
--- a/sys/dev/syscons/scvesactl.c
+++ /dev/null
@@ -1,143 +0,0 @@
-/*-
- * Copyright (c) 1998 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: $
- */
-
-#include "sc.h"
-#include "vga.h"
-#include "opt_syscons.h"
-#include "opt_vga.h"
-#include "opt_vesa.h"
-#include "opt_vm86.h"
-
-#ifdef VGA_NO_MODE_CHANGE
-#undef VESA
-#endif
-
-#if (NSC > 0 && NVGA > 0 && defined(VESA) && defined(VM86)) || defined(KLD_MODULE)
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/conf.h>
-#include <sys/tty.h>
-#include <sys/kernel.h>
-
-#include <machine/apm_bios.h>
-#include <machine/console.h>
-#include <machine/pc/vesa.h>
-
-#include <dev/fb/fbreg.h>
-#include <dev/syscons/syscons.h>
-
-static d_ioctl_t *prev_user_ioctl;
-
-static int
-vesa_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
-{
- scr_stat *scp;
- struct tty *tp;
- int mode;
-
- tp = scdevtotty(dev);
- if (!tp)
- return ENXIO;
- scp = sc_get_scr_stat(tp->t_dev);
-
- switch (cmd) {
-
- /* generic text modes */
- case SW_TEXT_132x25: case SW_TEXT_132x30:
- case SW_TEXT_132x43: case SW_TEXT_132x50:
- case SW_TEXT_132x60:
- if (!(scp->adp->va_flags & V_ADP_MODECHANGE))
- return ENODEV;
- return sc_set_text_mode(scp, tp, cmd & 0xff, 0, 0, 0);
-
- /* text modes */
- case SW_VESA_C80x60:
- case SW_VESA_C132x25:
- case SW_VESA_C132x43:
- case SW_VESA_C132x50:
- case SW_VESA_C132x60:
- if (!(scp->adp->va_flags & V_ADP_MODECHANGE))
- return ENODEV;
- mode = (cmd & 0xff) + M_VESA_BASE;
- return sc_set_text_mode(scp, tp, mode, 0, 0, 0);
-
- /* graphics modes */
- case SW_VESA_32K_320: case SW_VESA_64K_320:
- case SW_VESA_FULL_320:
-
- case SW_VESA_CG640x400:
-
- case SW_VESA_CG640x480:
- case SW_VESA_32K_640: case SW_VESA_64K_640:
- case SW_VESA_FULL_640:
-
- case SW_VESA_800x600: case SW_VESA_CG800x600:
- case SW_VESA_32K_800: case SW_VESA_64K_800:
- case SW_VESA_FULL_800:
-
- case SW_VESA_1024x768: case SW_VESA_CG1024x768:
- case SW_VESA_32K_1024: case SW_VESA_64K_1024:
- case SW_VESA_FULL_1024:
-
- case SW_VESA_1280x1024: case SW_VESA_CG1280x1024:
- case SW_VESA_32K_1280: case SW_VESA_64K_1280:
- case SW_VESA_FULL_1280:
- if (!(scp->adp->va_flags & V_ADP_MODECHANGE))
- return ENODEV;
- mode = (cmd & 0xff) + M_VESA_BASE;
- return sc_set_graphics_mode(scp, tp, mode);
- }
-
- if (prev_user_ioctl)
- return (*prev_user_ioctl)(dev, cmd, data, flag, p);
- else
- return ENOIOCTL;
-}
-
-int
-vesa_load_ioctl(void)
-{
- if (prev_user_ioctl)
- return EBUSY;
- prev_user_ioctl = sc_user_ioctl;
- sc_user_ioctl = vesa_ioctl;
- return 0;
-}
-
-int
-vesa_unload_ioctl(void)
-{
- if (sc_user_ioctl != vesa_ioctl)
- return EBUSY;
- sc_user_ioctl = prev_user_ioctl;
- prev_user_ioctl = NULL;
- return 0;
-}
-
-#endif /* (NSC > 0 && NVGA > 0 && VESA && VM86) || KLD_MODULE */
diff --git a/sys/dev/syscons/scvidctl.c b/sys/dev/syscons/scvidctl.c
deleted file mode 100644
index 8374028974709..0000000000000
--- a/sys/dev/syscons/scvidctl.c
+++ /dev/null
@@ -1,583 +0,0 @@
-/*-
- * Copyright (c) 1998 Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer as
- * the first lines of this file unmodified.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: scvidctl.c,v 1.6 1999/01/11 03:18:26 yokota Exp $
- */
-
-#include "sc.h"
-#include "opt_syscons.h"
-
-#if NSC > 0
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/signalvar.h>
-#include <sys/tty.h>
-#include <sys/kernel.h>
-
-#ifdef __i386__
-#include <machine/apm_bios.h>
-#endif
-#include <machine/console.h>
-
-#include <dev/fb/fbreg.h>
-#include <dev/syscons/syscons.h>
-
-/* for compatibility with previous versions */
-typedef struct old_video_adapter {
- int va_index;
- int va_type;
- int va_flags;
-#define V_ADP_COLOR (1<<0)
-#define V_ADP_MODECHANGE (1<<1)
-#define V_ADP_STATESAVE (1<<2)
-#define V_ADP_STATELOAD (1<<3)
-#define V_ADP_FONT (1<<4)
-#define V_ADP_PALETTE (1<<5)
-#define V_ADP_BORDER (1<<6)
-#define V_ADP_VESA (1<<7)
- int va_crtc_addr;
- u_int va_window; /* virtual address */
- size_t va_window_size;
- size_t va_window_gran;
- u_int va_buffer; /* virtual address */
- size_t va_buffer_size;
- int va_initial_mode;
- int va_initial_bios_mode;
- int va_mode;
-} old_video_adapter_t;
-
-#define OLD_CONS_ADPINFO _IOWR('c', 101, old_video_adapter_t)
-
-/* variables */
-extern scr_stat *cur_console;
-extern int fonts_loaded;
-extern int sc_history_size;
-extern u_char palette[];
-
-int
-sc_set_text_mode(scr_stat *scp, struct tty *tp, int mode, int xsize, int ysize,
- int fontsize)
-{
- video_info_t info;
- int error;
- int s;
- int i;
-
- if ((*vidsw[scp->ad]->get_info)(scp->adp, mode, &info))
- return ENODEV;
-
- /* adjust argument values */
- if (fontsize <= 0)
- fontsize = info.vi_cheight;
- if (fontsize < 14) {
- fontsize = 8;
- if (!(fonts_loaded & FONT_8))
- return EINVAL;
- } else if (fontsize >= 16) {
- fontsize = 16;
- if (!(fonts_loaded & FONT_16))
- return EINVAL;
- } else {
- fontsize = 14;
- if (!(fonts_loaded & FONT_14))
- return EINVAL;
- }
- if ((xsize <= 0) || (xsize > info.vi_width))
- xsize = info.vi_width;
- if ((ysize <= 0) || (ysize > info.vi_height))
- ysize = info.vi_height;
-
- /* stop screen saver, etc */
- s = spltty();
- if ((error = sc_clean_up(scp))) {
- splx(s);
- return error;
- }
-
- /* set up scp */
- if (scp->history != NULL)
- i = imax(scp->history_size / scp->xsize
- - imax(sc_history_size, scp->ysize), 0);
- else
- i = 0;
- /*
- * This is a kludge to fend off scrn_update() while we
- * muck around with scp. XXX
- */
- scp->status |= UNKNOWN_MODE;
- scp->status &= ~(GRAPHICS_MODE | PIXEL_MODE);
- scp->mode = mode;
- scp->font_size = fontsize;
- scp->xsize = xsize;
- scp->ysize = ysize;
- scp->xoff = 0;
- scp->yoff = 0;
- scp->xpixel = scp->xsize*8;
- scp->ypixel = scp->ysize*fontsize;
-
- /* allocate buffers */
- sc_alloc_scr_buffer(scp, TRUE, TRUE);
- if (ISMOUSEAVAIL(scp->adp->va_flags))
- sc_alloc_cut_buffer(scp, FALSE);
- sc_alloc_history_buffer(scp, sc_history_size, i, FALSE);
- splx(s);
-
- if (scp == cur_console)
- set_mode(scp);
- scp->status &= ~UNKNOWN_MODE;
-
- if (tp == NULL)
- return 0;
- if (tp->t_winsize.ws_col != scp->xsize
- || tp->t_winsize.ws_row != scp->ysize) {
- tp->t_winsize.ws_col = scp->xsize;
- tp->t_winsize.ws_row = scp->ysize;
- pgsignal(tp->t_pgrp, SIGWINCH, 1);
- }
-
- return 0;
-}
-
-int
-sc_set_graphics_mode(scr_stat *scp, struct tty *tp, int mode)
-{
- video_info_t info;
- int error;
- int s;
-
- if ((*vidsw[scp->ad]->get_info)(scp->adp, mode, &info))
- return ENODEV;
-
- /* stop screen saver, etc */
- s = spltty();
- if ((error = sc_clean_up(scp))) {
- splx(s);
- return error;
- }
-
- /* set up scp */
- scp->status |= (UNKNOWN_MODE | GRAPHICS_MODE);
- scp->status &= ~PIXEL_MODE;
- scp->mode = mode;
- scp->xoff = 0;
- scp->yoff = 0;
- scp->xpixel = info.vi_width;
- scp->ypixel = info.vi_height;
- scp->xsize = info.vi_width/8;
- scp->ysize = info.vi_height/info.vi_cheight;
- scp->font_size = FONT_NONE;
- /* move the mouse cursor at the center of the screen */
- sc_move_mouse(scp, scp->xpixel / 2, scp->ypixel / 2);
- splx(s);
-
- if (scp == cur_console)
- set_mode(scp);
- /* clear_graphics();*/
- scp->status &= ~UNKNOWN_MODE;
-
- if (tp == NULL)
- return 0;
- if (tp->t_winsize.ws_xpixel != scp->xpixel
- || tp->t_winsize.ws_ypixel != scp->ypixel) {
- tp->t_winsize.ws_xpixel = scp->xpixel;
- tp->t_winsize.ws_ypixel = scp->ypixel;
- pgsignal(tp->t_pgrp, SIGWINCH, 1);
- }
-
- return 0;
-}
-
-int
-sc_set_pixel_mode(scr_stat *scp, struct tty *tp, int xsize, int ysize,
- int fontsize)
-{
- video_info_t info;
- int error;
- int s;
- int i;
-
- if ((*vidsw[scp->ad]->get_info)(scp->adp, scp->mode, &info))
- return ENODEV; /* this shouldn't happen */
-
-#ifdef SC_VIDEO_DEBUG
- if (scp->scr_buf != NULL) {
- printf("set_pixel_mode(): mode:%x, col:%d, row:%d, font:%d\n",
- scp->mode, xsize, ysize, fontsize);
- }
-#endif
-
- /* adjust argument values */
- if ((fontsize <= 0) || (fontsize == FONT_NONE))
- fontsize = info.vi_cheight;
- if (fontsize < 14) {
- fontsize = 8;
- if (!(fonts_loaded & FONT_8))
- return EINVAL;
- } else if (fontsize >= 16) {
- fontsize = 16;
- if (!(fonts_loaded & FONT_16))
- return EINVAL;
- } else {
- fontsize = 14;
- if (!(fonts_loaded & FONT_14))
- return EINVAL;
- }
- if (xsize <= 0)
- xsize = info.vi_width/8;
- if (ysize <= 0)
- ysize = info.vi_height/fontsize;
-
-#ifdef SC_VIDEO_DEBUG
- if (scp->scr_buf != NULL) {
- printf("set_pixel_mode(): mode:%x, col:%d, row:%d, font:%d\n",
- scp->mode, xsize, ysize, fontsize);
- printf("set_pixel_mode(): window:%x, %dx%d, xoff:%d, yoff:%d\n",
- scp->adp->va_window, info.vi_width, info.vi_height,
- (info.vi_width/8 - xsize)/2,
- (info.vi_height/fontsize - ysize)/2);
- }
-#endif
-
- if ((info.vi_width < xsize*8) || (info.vi_height < ysize*fontsize))
- return EINVAL;
-
- /* only 16 color, 4 plane modes are supported XXX */
- if ((info.vi_depth != 4) || (info.vi_planes != 4))
- return ENODEV;
-
- /*
- * set_pixel_mode() currently does not support video modes whose
- * memory size is larger than 64K. Because such modes require
- * bank switching to access the entire screen. XXX
- */
- if (info.vi_width*info.vi_height/8 > info.vi_window_size)
- return ENODEV;
-
- /* stop screen saver, etc */
- s = spltty();
- if ((error = sc_clean_up(scp))) {
- splx(s);
- return error;
- }
-
- /* set up scp */
- if (scp->history != NULL)
- i = imax(scp->history_size / scp->xsize
- - imax(sc_history_size, scp->ysize), 0);
- else
- i = 0;
- scp->status |= (UNKNOWN_MODE | PIXEL_MODE);
- scp->status &= ~(GRAPHICS_MODE | MOUSE_ENABLED);
- scp->xsize = xsize;
- scp->ysize = ysize;
- scp->font_size = fontsize;
- scp->xoff = (scp->xpixel/8 - xsize)/2;
- scp->yoff = (scp->ypixel/fontsize - ysize)/2;
-
- /* allocate buffers */
- sc_alloc_scr_buffer(scp, TRUE, TRUE);
- if (ISMOUSEAVAIL(scp->adp->va_flags))
- sc_alloc_cut_buffer(scp, FALSE);
- sc_alloc_history_buffer(scp, sc_history_size, i, FALSE);
- splx(s);
-
- if (scp == cur_console)
- set_border(scp, scp->border);
-
- scp->status &= ~UNKNOWN_MODE;
-
-#ifdef SC_VIDEO_DEBUG
- printf("set_pixel_mode(): status:%x\n", scp->status);
-#endif
-
- if (tp == NULL)
- return 0;
- if (tp->t_winsize.ws_col != scp->xsize
- || tp->t_winsize.ws_row != scp->ysize) {
- tp->t_winsize.ws_col = scp->xsize;
- tp->t_winsize.ws_row = scp->ysize;
- pgsignal(tp->t_pgrp, SIGWINCH, 1);
- }
-
- return 0;
-}
-
-int
-sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag, struct proc *p)
-{
- scr_stat *scp;
- int error;
- int s;
-
- scp = sc_get_scr_stat(tp->t_dev);
-
- switch (cmd) {
-
- case CONS_CURRENT: /* get current adapter type */
- if (scp->adp == NULL)
- return ENODEV;
- *(int *)data = scp->adp->va_type;
- return 0;
-
- case CONS_CURRENTADP: /* get current adapter index */
- *(int *)data = scp->ad;
- return 0;
-
- case OLD_CONS_ADPINFO: /* adapter information */
- if (scp->adp == NULL)
- return ENODEV;
- ((old_video_adapter_t *)data)->va_index = scp->adp->va_index;
- ((old_video_adapter_t *)data)->va_type = scp->adp->va_type;
- ((old_video_adapter_t *)data)->va_flags = scp->adp->va_flags;
- ((old_video_adapter_t *)data)->va_crtc_addr = scp->adp->va_crtc_addr;
- ((old_video_adapter_t *)data)->va_window = scp->adp->va_window;
- ((old_video_adapter_t *)data)->va_window_size
- = scp->adp->va_window_size;
- ((old_video_adapter_t *)data)->va_window_gran
- = scp->adp->va_window_gran;
- ((old_video_adapter_t *)data)->va_buffer = scp->adp->va_buffer;
- ((old_video_adapter_t *)data)->va_buffer_size
- = scp->adp->va_buffer_size;
- ((old_video_adapter_t *)data)->va_mode = scp->adp->va_mode;
- ((old_video_adapter_t *)data)->va_initial_mode
- = scp->adp->va_initial_mode;
- ((old_video_adapter_t *)data)->va_initial_bios_mode
- = scp->adp->va_initial_bios_mode;
- return 0;
-
- case CONS_ADPINFO: /* adapter information */
- if (scp->adp == NULL)
- return ENODEV;
- ((video_adapter_info_t *)data)->va_index = scp->adp->va_index;
- ((video_adapter_info_t *)data)->va_type = scp->adp->va_type;
- bcopy(scp->adp->va_name, ((video_adapter_info_t *)data)->va_name,
- imin(strlen(scp->adp->va_name) + 1,
- sizeof(((video_adapter_info_t *)data)->va_name)));
- ((video_adapter_info_t *)data)->va_unit = scp->adp->va_unit;
- ((video_adapter_info_t *)data)->va_flags = scp->adp->va_flags;
- ((video_adapter_info_t *)data)->va_io_base = scp->adp->va_io_base;
- ((video_adapter_info_t *)data)->va_io_size = scp->adp->va_io_size;
- ((video_adapter_info_t *)data)->va_crtc_addr = scp->adp->va_crtc_addr;
- ((video_adapter_info_t *)data)->va_mem_base = scp->adp->va_mem_base;
- ((video_adapter_info_t *)data)->va_mem_size = scp->adp->va_mem_size;
- ((video_adapter_info_t *)data)->va_window = scp->adp->va_window;
- ((video_adapter_info_t *)data)->va_window_size
- = scp->adp->va_window_size;
- ((video_adapter_info_t *)data)->va_window_gran
- = scp->adp->va_window_gran;
- ((video_adapter_info_t *)data)->va_buffer = scp->adp->va_buffer;
- ((video_adapter_info_t *)data)->va_buffer_size
- = scp->adp->va_buffer_size;
- ((video_adapter_info_t *)data)->va_mode = scp->adp->va_mode;
- ((video_adapter_info_t *)data)->va_mode_flags = scp->adp->va_mode_flags;
- ((video_adapter_info_t *)data)->va_initial_mode
- = scp->adp->va_initial_mode;
- ((video_adapter_info_t *)data)->va_initial_bios_mode
- = scp->adp->va_initial_bios_mode;
- return 0;
-
- case CONS_GET: /* get current video mode */
- *(int *)data = scp->mode;
- return 0;
-
- case CONS_MODEINFO: /* get mode information */
- return ((*vidsw[scp->ad]->get_info)(scp->adp,
- ((video_info_t *)data)->vi_mode, (video_info_t *)data)
- ? ENODEV : 0);
-
- case CONS_FINDMODE: /* find a matching video mode */
- return ((*vidsw[scp->ad]->query_mode)(scp->adp, (video_info_t *)data)
- ? ENODEV : 0);
-
- case CONS_SETWINORG:
- return ((*vidsw[scp->ad]->set_win_org)(scp->adp, *(u_int *)data)
- ? ENODEV : 0);
-
- /* generic text modes */
- case SW_TEXT_80x25: case SW_TEXT_80x30:
- case SW_TEXT_80x43: case SW_TEXT_80x50:
- case SW_TEXT_80x60:
- /* FALL THROUGH */
-
- /* VGA TEXT MODES */
- case SW_VGA_C40x25:
- case SW_VGA_C80x25: case SW_VGA_M80x25:
- case SW_VGA_C80x30: case SW_VGA_M80x30:
- case SW_VGA_C80x50: case SW_VGA_M80x50:
- case SW_VGA_C80x60: case SW_VGA_M80x60:
- case SW_B40x25: case SW_C40x25:
- case SW_B80x25: case SW_C80x25:
- case SW_ENH_B40x25: case SW_ENH_C40x25:
- case SW_ENH_B80x25: case SW_ENH_C80x25:
- case SW_ENH_B80x43: case SW_ENH_C80x43:
- case SW_EGAMONO80x25:
-
-#ifdef PC98
- /* PC98 TEXT MODES */
- case SW_PC98_80x25:
- case SW_PC98_80x30:
-#endif
- if (!(scp->adp->va_flags & V_ADP_MODECHANGE))
- return ENODEV;
- return sc_set_text_mode(scp, tp, cmd & 0xff, 0, 0, 0);
-
- /* GRAPHICS MODES */
- case SW_BG320: case SW_BG640:
- case SW_CG320: case SW_CG320_D: case SW_CG640_E:
- case SW_CG640x350: case SW_ENH_CG640:
- case SW_BG640x480: case SW_CG640x480: case SW_VGA_CG320:
- case SW_VGA_MODEX:
- if (!(scp->adp->va_flags & V_ADP_MODECHANGE))
- return ENODEV;
- return sc_set_graphics_mode(scp, tp, cmd & 0xff);
-
- case KDSETMODE: /* set current mode of this (virtual) console */
- switch (*(int *)data) {
- case KD_TEXT: /* switch to TEXT (known) mode */
- /*
- * If scp->mode is of graphics modes, we don't know which
- * text mode to switch back to...
- */
- if (scp->status & GRAPHICS_MODE)
- return EINVAL;
- /* restore fonts & palette ! */
-#if 0
- if (ISFONTAVAIL(scp->adp->va_flags)
- && !(scp->status & (GRAPHICS_MODE | PIXEL_MODE)))
- /*
- * FONT KLUDGE
- * Don't load fonts for now... XXX
- */
- if (fonts_loaded & FONT_8)
- copy_font(scp, LOAD, 8, font_8);
- if (fonts_loaded & FONT_14)
- copy_font(scp, LOAD, 14, font_14);
- if (fonts_loaded & FONT_16)
- copy_font(scp, LOAD, 16, font_16);
- }
-#endif
- load_palette(scp->adp, palette);
-
- /* move hardware cursor out of the way */
- (*vidsw[scp->ad]->set_hw_cursor)(scp->adp, -1, -1);
-
- /* FALL THROUGH */
-
- case KD_TEXT1: /* switch to TEXT (known) mode */
- /*
- * If scp->mode is of graphics modes, we don't know which
- * text/pixel mode to switch back to...
- */
- if (scp->status & GRAPHICS_MODE)
- return EINVAL;
- s = spltty();
- if ((error = sc_clean_up(scp))) {
- splx(s);
- return error;
- }
-#ifndef PC98
- scp->status |= UNKNOWN_MODE;
- splx(s);
- /* no restore fonts & palette */
- if (scp == cur_console)
- set_mode(scp);
- sc_clear_screen(scp);
- scp->status &= ~UNKNOWN_MODE;
-#else /* PC98 */
- scp->status &= ~UNKNOWN_MODE;
- /* no restore fonts & palette */
- if (scp == cur_console)
- set_mode(scp);
- sc_clear_screen(scp);
- splx(s);
-#endif /* PC98 */
- return 0;
-
- case KD_PIXEL: /* pixel (raster) display */
- if (!(scp->status & (GRAPHICS_MODE | PIXEL_MODE)))
- return EINVAL;
- if (scp->status & GRAPHICS_MODE)
- return sc_set_pixel_mode(scp, tp, scp->xsize, scp->ysize,
- scp->font_size);
- s = spltty();
- if ((error = sc_clean_up(scp))) {
- splx(s);
- return error;
- }
- scp->status |= (UNKNOWN_MODE | PIXEL_MODE);
- splx(s);
- if (scp == cur_console) {
- set_mode(scp);
- load_palette(scp->adp, palette);
- }
- sc_clear_screen(scp);
- scp->status &= ~UNKNOWN_MODE;
- return 0;
-
- case KD_GRAPHICS: /* switch to GRAPHICS (unknown) mode */
- s = spltty();
- if ((error = sc_clean_up(scp))) {
- splx(s);
- return error;
- }
- scp->status |= UNKNOWN_MODE;
- splx(s);
-#ifdef PC98
- if (scp == cur_console)
- set_mode(scp);
-#endif
- return 0;
-
- default:
- return EINVAL;
- }
- /* NOT REACHED */
-
- case KDRASTER: /* set pixel (raster) display mode */
- if (ISUNKNOWNSC(scp) || ISTEXTSC(scp))
- return ENODEV;
- return sc_set_pixel_mode(scp, tp, ((int *)data)[0], ((int *)data)[1],
- ((int *)data)[2]);
-
- case KDGETMODE: /* get current mode of this (virtual) console */
- /*
- * From the user program's point of view, KD_PIXEL is the same
- * as KD_TEXT...
- */
- *data = ISGRAPHSC(scp) ? KD_GRAPHICS : KD_TEXT;
- return 0;
-
- case KDSBORDER: /* set border color of this (virtual) console */
- scp->border = *data;
- if (scp == cur_console)
- set_border(scp, scp->border);
- return 0;
- }
-
- return ENOIOCTL;
-}
-
-#endif /* NSC > 0 */
diff --git a/sys/dev/syscons/syscons.c b/sys/dev/syscons/syscons.c
deleted file mode 100644
index ce71733f1584f..0000000000000
--- a/sys/dev/syscons/syscons.c
+++ /dev/null
@@ -1,4529 +0,0 @@
-/*-
- * Copyright (c) 1992-1998 Søren Schmidt
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer,
- * without modification, immediately at the beginning of the file.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: syscons.c,v 1.292 1999/01/17 14:23:15 yokota Exp $
- */
-
-#include "sc.h"
-#include "splash.h"
-#ifdef __i386__
-#include "apm.h"
-#endif
-#include "opt_ddb.h"
-#include "opt_devfs.h"
-#ifdef __i386__
-#include "opt_vesa.h"
-#include "opt_vm86.h"
-#endif
-#include "opt_syscons.h"
-
-#if NSC > 0
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/reboot.h>
-#include <sys/conf.h>
-#include <sys/proc.h>
-#include <sys/signalvar.h>
-#include <sys/tty.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#ifdef DEVFS
-#include <sys/devfsext.h>
-#endif
-
-#include <machine/bootinfo.h>
-#include <machine/clock.h>
-#include <machine/cons.h>
-#include <machine/console.h>
-#include <machine/mouse.h>
-#include <machine/md_var.h>
-#include <machine/psl.h>
-#include <machine/frame.h>
-#include <machine/pc/display.h>
-#ifdef __i386__
-#include <machine/pc/vesa.h>
-#include <machine/apm_bios.h>
-#include <machine/random.h>
-#endif
-
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
-
-#include <dev/kbd/kbdreg.h>
-#include <dev/fb/fbreg.h>
-#include <dev/fb/vgareg.h>
-#include <dev/fb/splashreg.h>
-#include <dev/syscons/syscons.h>
-
-#ifndef __i386__
-#include <isa/isareg.h>
-#else
-#include <i386/isa/isa.h>
-#include <i386/isa/isa_device.h>
-#include <i386/isa/timerreg.h>
-#endif
-
-#if !defined(MAXCONS)
-#define MAXCONS 16
-#endif
-
-#if !defined(SC_MAX_HISTORY_SIZE)
-#define SC_MAX_HISTORY_SIZE (1000 * MAXCONS)
-#endif
-
-#if !defined(SC_HISTORY_SIZE)
-#define SC_HISTORY_SIZE (ROW * 4)
-#endif
-
-#if (SC_HISTORY_SIZE * MAXCONS) > SC_MAX_HISTORY_SIZE
-#undef SC_MAX_HISTORY_SIZE
-#define SC_MAX_HISTORY_SIZE (SC_HISTORY_SIZE * MAXCONS)
-#endif
-
-#if !defined(SC_MOUSE_CHAR)
-#define SC_MOUSE_CHAR (0xd0)
-#endif
-
-#define COLD 0
-#define WARM 1
-
-#define DEFAULT_BLANKTIME (5*60) /* 5 minutes */
-#define MAX_BLANKTIME (7*24*60*60) /* 7 days!? */
-
-/* for backward compatibility */
-#define OLD_CONS_MOUSECTL _IOWR('c', 10, old_mouse_info_t)
-
-typedef struct old_mouse_data {
- int x;
- int y;
- int buttons;
-} old_mouse_data_t;
-
-typedef struct old_mouse_info {
- int operation;
- union {
- struct old_mouse_data data;
- struct mouse_mode mode;
- } u;
-} old_mouse_info_t;
-
-static default_attr user_default = {
- (FG_LIGHTGREY | BG_BLACK) << 8,
- (FG_BLACK | BG_LIGHTGREY) << 8
-};
-
-static default_attr kernel_default = {
- (FG_WHITE | BG_BLACK) << 8,
- (FG_BLACK | BG_LIGHTGREY) << 8
-};
-
-static scr_stat main_console;
-static scr_stat *console[MAXCONS];
-#ifdef DEVFS
-static void *sc_devfs_token[MAXCONS];
-static void *sc_mouse_devfs_token;
-static void *sc_console_devfs_token;
-#endif
- scr_stat *cur_console;
-static scr_stat *new_scp, *old_scp;
-static term_stat kernel_console;
-static default_attr *current_default;
-static int sc_flags;
-static char init_done = COLD;
-static u_short sc_buffer[ROW*COL];
-static char shutdown_in_progress = FALSE;
-static char font_loading_in_progress = FALSE;
-static char switch_in_progress = FALSE;
-static char write_in_progress = FALSE;
-static char blink_in_progress = FALSE;
-static int blinkrate = 0;
-static int adapter = -1;
-static int keyboard = -1;
-static keyboard_t *kbd;
-static int delayed_next_scr = FALSE;
-static long scrn_blank_time = 0; /* screen saver timeout value */
-static int scrn_blanked = FALSE; /* screen saver active flag */
-static long scrn_time_stamp;
-static int saver_mode = CONS_LKM_SAVER; /* LKM/user saver */
-static int run_scrn_saver = FALSE; /* should run the saver? */
-static int scrn_idle = FALSE; /* about to run the saver */
-static int scrn_saver_failed;
- u_char scr_map[256];
- u_char scr_rmap[256];
-static int initial_video_mode; /* initial video mode # */
- int fonts_loaded = 0
-#ifdef STD8X16FONT
- | FONT_16
-#endif
- ;
-
- u_char font_8[256*8];
- u_char font_14[256*14];
-#ifdef STD8X16FONT
-extern
-#endif
- u_char font_16[256*16];
- u_char palette[256*3];
-static u_char *cut_buffer;
-static int cut_buffer_size;
-static int mouse_level; /* sysmouse protocol level */
-static mousestatus_t mouse_status = { 0, 0, 0, 0, 0, 0 };
-static u_short mouse_and_mask[16] = {
- 0xc000, 0xe000, 0xf000, 0xf800,
- 0xfc00, 0xfe00, 0xff00, 0xff80,
- 0xfe00, 0x1e00, 0x1f00, 0x0f00,
- 0x0f00, 0x0000, 0x0000, 0x0000
- };
-static u_short mouse_or_mask[16] = {
- 0x0000, 0x4000, 0x6000, 0x7000,
- 0x7800, 0x7c00, 0x7e00, 0x6800,
- 0x0c00, 0x0c00, 0x0600, 0x0600,
- 0x0000, 0x0000, 0x0000, 0x0000
- };
-
- int sc_history_size = SC_HISTORY_SIZE;
-static int extra_history_size =
- SC_MAX_HISTORY_SIZE - SC_HISTORY_SIZE * MAXCONS;
-
-static void none_saver(int blank) { }
-static void (*current_saver)(int blank) = none_saver;
- d_ioctl_t *sc_user_ioctl;
-
-static int sticky_splash = FALSE;
-static struct {
- u_int8_t cursor_start;
- u_int8_t cursor_end;
- u_int8_t shift_state;
- } bios_value;
-
-/* OS specific stuff */
-#ifdef not_yet_done
-#define VIRTUAL_TTY(x) (sccons[x] = ttymalloc(sccons[x]))
-struct CONSOLE_TTY (sccons[MAXCONS] = ttymalloc(sccons[MAXCONS]))
-struct MOUSE_TTY (sccons[MAXCONS+1] = ttymalloc(sccons[MAXCONS+1]))
-struct tty *sccons[MAXCONS+2];
-#else
-#define VIRTUAL_TTY(x) &sccons[x]
-#define CONSOLE_TTY &sccons[MAXCONS]
-#define MOUSE_TTY &sccons[MAXCONS+1]
-static struct tty sccons[MAXCONS+2];
-#endif
-#define SC_MOUSE 128
-#define SC_CONSOLE 255
-vm_offset_t Crtat;
-static const int nsccons = MAXCONS+2;
-
-#define WRAPHIST(scp, pointer, offset)\
- ((scp)->history + ((((pointer) - (scp)->history) + (scp)->history_size \
- + (offset)) % (scp)->history_size))
-#define ISSIGVALID(sig) ((sig) > 0 && (sig) < NSIG)
-
-/* some useful macros */
-#define kbd_read_char(kbd, wait) \
- (*kbdsw[(kbd)->kb_index]->read_char)((kbd), (wait))
-#define kbd_check_char(kbd) \
- (*kbdsw[(kbd)->kb_index]->check_char)((kbd))
-#define kbd_enable(kbd) \
- (*kbdsw[(kbd)->kb_index]->enable)((kbd))
-#define kbd_disable(kbd) \
- (*kbdsw[(kbd)->kb_index]->disable)((kbd))
-#define kbd_lock(kbd, lockf) \
- (*kbdsw[(kbd)->kb_index]->lock)((kbd), (lockf))
-#define kbd_ioctl(kbd, cmd, arg) \
- (((kbd) == NULL) ? \
- ENODEV : (*kbdsw[(kbd)->kb_index]->ioctl)((kbd), (cmd), (arg)))
-#define kbd_clear_state(kbd) \
- (*kbdsw[(kbd)->kb_index]->clear_state)((kbd))
-#define kbd_get_fkeystr(kbd, fkey, len) \
- (*kbdsw[(kbd)->kb_index]->get_fkeystr)((kbd), (fkey), (len))
-
-/* prototypes */
-static kbd_callback_func_t sckbdevent;
-static int scparam(struct tty *tp, struct termios *t);
-static int scvidprobe(int unit, int flags, int cons);
-static int sckbdprobe(int unit, int flags, int cons);
-static void scstart(struct tty *tp);
-static void scmousestart(struct tty *tp);
-static void scinit(void);
-static void scshutdown(int howto, void *arg);
-static u_int scgetc(keyboard_t *kbd, u_int flags);
-#define SCGETC_CN 1
-#define SCGETC_NONBLOCK 2
-static int sccngetch(int flags);
-static void sccnupdate(scr_stat *scp);
-static scr_stat *alloc_scp(void);
-static void init_scp(scr_stat *scp);
-static void get_bios_values(void);
-static void sc_bcopy(scr_stat *scp, u_short *p, int from, int to, int mark);
-static int get_scr_num(void);
-static timeout_t scrn_timer;
-static void scrn_update(scr_stat *scp, int show_cursor);
-#if NSPLASH > 0
-static int scsplash_callback(int);
-static void scsplash_saver(int show);
-static int add_scrn_saver(void (*this_saver)(int));
-static int remove_scrn_saver(void (*this_saver)(int));
-static int set_scrn_saver_mode(scr_stat *scp, int mode, u_char *pal, int border);
-static int restore_scrn_saver_mode(scr_stat *scp, int changemode);
-static void stop_scrn_saver(void (*saver)(int));
-static int wait_scrn_saver_stop(void);
-#define scsplash_stick(stick) (sticky_splash = (stick))
-#else /* !NSPLASH */
-#define stop_scrn_saver(saver)
-#define wait_scrn_saver_stop() 0
-#define scsplash_stick(stick)
-#endif /* NSPLASH */
-static int switch_scr(scr_stat *scp, u_int next_scr);
-static void exchange_scr(void);
-static void scan_esc(scr_stat *scp, u_char c);
-static void ansi_put(scr_stat *scp, u_char *buf, int len);
-static void draw_cursor_image(scr_stat *scp);
-static void remove_cursor_image(scr_stat *scp);
-static void move_crsr(scr_stat *scp, int x, int y);
-static void history_to_screen(scr_stat *scp);
-static int history_up_line(scr_stat *scp);
-static int history_down_line(scr_stat *scp);
-static int mask2attr(struct term_stat *term);
-static int save_kbd_state(scr_stat *scp);
-static int update_kbd_state(int state, int mask);
-static int update_kbd_leds(int which);
-static void set_destructive_cursor(scr_stat *scp);
-static void set_mouse_pos(scr_stat *scp);
-static int skip_spc_right(scr_stat *scp, u_short *p);
-static int skip_spc_left(scr_stat *scp, u_short *p);
-static void mouse_cut(scr_stat *scp);
-static void mouse_cut_start(scr_stat *scp);
-static void mouse_cut_end(scr_stat *scp);
-static void mouse_cut_word(scr_stat *scp);
-static void mouse_cut_line(scr_stat *scp);
-static void mouse_cut_extend(scr_stat *scp);
-static void mouse_paste(scr_stat *scp);
-static void draw_mouse_image(scr_stat *scp);
-static void remove_mouse_image(scr_stat *scp);
-static void draw_cutmarking(scr_stat *scp);
-static void remove_cutmarking(scr_stat *scp);
-static void do_bell(scr_stat *scp, int pitch, int duration);
-static timeout_t blink_screen;
-
-#define CDEV_MAJOR 12
-
-#ifdef __i386__
-
-static cn_probe_t sccnprobe;
-static cn_init_t sccninit;
-static cn_getc_t sccngetc;
-static cn_checkc_t sccncheckc;
-static cn_putc_t sccnputc;
-
-CONS_DRIVER(sc, sccnprobe, sccninit, sccngetc, sccncheckc, sccnputc);
-
-#else /* !__i386__ */
-
-static cn_getc_t sccngetc;
-static cn_checkc_t sccncheckc;
-static cn_putc_t sccnputc;
-
-struct consdev sc_cons = {
- NULL, NULL, sccngetc, sccncheckc, sccnputc,
- NULL, makedev(CDEV_MAJOR, 0), CN_NORMAL,
-};
-
-#endif /* __i386__ */
-
-static d_open_t scopen;
-static d_close_t scclose;
-static d_read_t scread;
-static d_write_t scwrite;
-static d_ioctl_t scioctl;
-static d_mmap_t scmmap;
-
-struct cdevsw sc_cdevsw = {
- scopen, scclose, scread, scwrite,
- scioctl, nullstop, noreset, scdevtotty,
- ttpoll, scmmap, nostrategy, "sc",
- NULL, -1, nodump, nopsize,
- D_TTY,
-};
-
-#ifdef __i386__
-
-#define fillw_io(p, b, c) fillw((p), (void *)(b), (c))
-
-#endif
-
-#ifdef __alpha__
-
-static void
-fillw(int pat, void *base, size_t cnt)
-{
- u_short *sp = base;
- while (cnt--)
- *sp++ = pat;
-}
-
-static void
-fillw_io(int pat, u_int32_t base, size_t cnt)
-{
- while (cnt--) {
- writew(base, pat);
- base += 2;
- }
-}
-
-#endif
-
-static void
-draw_cursor_image(scr_stat *scp)
-{
- u_short cursor_image;
- vm_offset_t ptr;
- u_short prev_image;
-
- if (ISPIXELSC(scp)) {
- sc_bcopy(scp, scp->scr_buf, scp->cursor_pos - scp->scr_buf,
- scp->cursor_pos - scp->scr_buf, 1);
- return;
- }
-
- ptr = scp->adp->va_window + 2*(scp->cursor_pos - scp->scr_buf);
-
- /* do we have a destructive cursor ? */
- if (sc_flags & CHAR_CURSOR) {
- prev_image = scp->cursor_saveunder;
- cursor_image = readw(ptr) & 0x00ff;
- if (cursor_image == DEAD_CHAR)
- cursor_image = prev_image & 0x00ff;
- cursor_image |= *(scp->cursor_pos) & 0xff00;
- scp->cursor_saveunder = cursor_image;
- /* update the cursor bitmap if the char under the cursor has changed */
- if (prev_image != cursor_image)
- set_destructive_cursor(scp);
- /* modify cursor_image */
- if (!(sc_flags & BLINK_CURSOR)||((sc_flags & BLINK_CURSOR)&&(blinkrate & 4))){
- /*
- * When the mouse pointer is at the same position as the cursor,
- * the cursor bitmap needs to be updated even if the char under
- * the cursor hasn't changed, because the mouse pionter may
- * have moved by a few dots within the cursor cel.
- */
- if ((prev_image == cursor_image)
- && (cursor_image != *(scp->cursor_pos)))
- set_destructive_cursor(scp);
- cursor_image &= 0xff00;
- cursor_image |= DEAD_CHAR;
- }
- } else {
- cursor_image = (readw(ptr) & 0x00ff) | *(scp->cursor_pos) & 0xff00;
- scp->cursor_saveunder = cursor_image;
- if (!(sc_flags & BLINK_CURSOR)||((sc_flags & BLINK_CURSOR)&&(blinkrate & 4))){
- if ((cursor_image & 0x7000) == 0x7000) {
- cursor_image &= 0x8fff;
- if(!(cursor_image & 0x0700))
- cursor_image |= 0x0700;
- } else {
- cursor_image |= 0x7000;
- if ((cursor_image & 0x0700) == 0x0700)
- cursor_image &= 0xf0ff;
- }
- }
- }
- writew(ptr, cursor_image);
-}
-
-static void
-remove_cursor_image(scr_stat *scp)
-{
- if (ISPIXELSC(scp))
- sc_bcopy(scp, scp->scr_buf, scp->cursor_oldpos - scp->scr_buf,
- scp->cursor_oldpos - scp->scr_buf, 0);
- else
- writew(scp->adp->va_window + 2*(scp->cursor_oldpos - scp->scr_buf),
- scp->cursor_saveunder);
-}
-
-static void
-move_crsr(scr_stat *scp, int x, int y)
-{
- if (x < 0)
- x = 0;
- if (y < 0)
- y = 0;
- if (x >= scp->xsize)
- x = scp->xsize-1;
- if (y >= scp->ysize)
- y = scp->ysize-1;
- scp->xpos = x;
- scp->ypos = y;
- scp->cursor_pos = scp->scr_buf + scp->ypos * scp->xsize + scp->xpos;
-}
-
-int
-sc_probe_unit(int unit, int flags)
-{
- if (!scvidprobe(unit, flags, FALSE)) {
- if (bootverbose)
- printf("sc%d: no video adapter is found.\n", unit);
- return ENXIO;
- }
-
- return ((sckbdprobe(unit, flags, FALSE)) ? 0 : ENXIO);
-}
-
-/* probe video adapters, return TRUE if found */
-static int
-scvidprobe(int unit, int flags, int cons)
-{
- video_adapter_t *adp;
-
- /*
- * Access the video adapter driver through the back door!
- * Video adapter drivers need to be configured before syscons.
- * However, when syscons is being probed as the low-level console,
- * they have not been initialized yet. We force them to initialize
- * themselves here. XXX
- */
- vid_configure(cons ? VIO_PROBE_ONLY : 0);
-
- /* allocate a frame buffer */
- if (adapter < 0) {
- adapter = vid_allocate("*", -1, (void *)&adapter);
- if (adapter < 0)
- return FALSE;
- }
- adp = vid_get_adapter(adapter); /* shouldn't fail */
-
- Crtat = adp->va_window;
- initial_video_mode = adp->va_initial_mode;
-
- return TRUE;
-}
-
-/* probe the keyboard, return TRUE if found */
-static int
-sckbdprobe(int unit, int flags, int cons)
-{
- /* access the keyboard driver through the backdoor! */
- kbd_configure(cons ? KB_CONF_PROBE_ONLY : 0);
-
- /* allocate a keyboard and register the keyboard event handler */
- if (keyboard < 0) {
- keyboard = kbd_allocate("*", -1, (void *)&keyboard, sckbdevent, NULL);
- if (keyboard < 0)
- return FALSE;
- }
- kbd = kbd_get_keyboard(keyboard); /* shouldn't fail */
-
- return TRUE;
-}
-
-#if NAPM > 0
-static int
-scresume(void *dummy)
-{
- if (kbd != NULL)
- kbd_clear_state(kbd);
- return 0;
-}
-#endif
-
-int
-sc_attach_unit(int unit, int flags)
-{
- scr_stat *scp;
-#if defined(VESA) && defined(VM86)
- video_info_t info;
-#endif
- dev_t cdev = makedev(CDEV_MAJOR, 0);
-#ifdef DEVFS
- int vc;
-#endif
-
- scinit();
- scp = console[0];
- sc_flags = flags;
- if (!ISFONTAVAIL(scp->adp->va_flags))
- sc_flags &= ~CHAR_CURSOR;
-
- /* copy temporary buffer to final buffer */
- scp->scr_buf = NULL;
- sc_alloc_scr_buffer(scp, FALSE, FALSE);
- bcopy(sc_buffer, scp->scr_buf, scp->xsize*scp->ysize*sizeof(u_short));
-
- /* cut buffer is available only when the mouse pointer is used */
- if (ISMOUSEAVAIL(scp->adp->va_flags))
- sc_alloc_cut_buffer(scp, FALSE);
-
- /* initialize history buffer & pointers */
- sc_alloc_history_buffer(scp, sc_history_size, 0, FALSE);
-
-#if defined(VESA) && defined(VM86)
- if ((sc_flags & VESA800X600)
- && ((*vidsw[scp->ad]->get_info)(scp->adp, M_VESA_800x600, &info) == 0)) {
-#if NSPLASH > 0
- splash_term(scp->adp);
-#endif
- sc_set_graphics_mode(scp, NULL, M_VESA_800x600);
- sc_set_pixel_mode(scp, NULL, COL, ROW, 16);
- initial_video_mode = M_VESA_800x600;
-#if NSPLASH > 0
- /* put up the splash again! */
- splash_init(scp->adp, scsplash_callback);
-#endif
- }
-#endif /* VESA && VM86 */
-
- /* initialize cursor stuff */
- if (!ISGRAPHSC(scp))
- draw_cursor_image(scp);
-
- /* get screen update going */
- scrn_timer((void *)TRUE);
-
- /* set up the keyboard */
- kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&scp->kbd_mode);
- update_kbd_state(scp->status, LOCK_MASK);
-
- if (bootverbose) {
- printf("sc%d:", unit);
- if (adapter >= 0)
- printf(" fb%d", adapter);
- if (keyboard >= 0)
- printf(" kbd%d", keyboard);
- printf("\n");
- }
- printf("sc%d: ", unit);
- switch(scp->adp->va_type) {
- case KD_VGA:
- printf("VGA %s", (scp->adp->va_flags & V_ADP_COLOR) ? "color" : "mono");
- break;
- case KD_EGA:
- printf("EGA %s", (scp->adp->va_flags & V_ADP_COLOR) ? "color" : "mono");
- break;
- case KD_CGA:
- printf("CGA");
- break;
- case KD_MONO:
- case KD_HERCULES:
- default:
- printf("MDA/Hercules");
- break;
- }
- printf(" <%d virtual consoles, flags=0x%x>\n", MAXCONS, sc_flags);
-
-#if NAPM > 0
- scp->r_hook.ah_fun = scresume;
- scp->r_hook.ah_arg = NULL;
- scp->r_hook.ah_name = "system keyboard";
- scp->r_hook.ah_order = APM_MID_ORDER;
- apm_hook_establish(APM_HOOK_RESUME , &scp->r_hook);
-#endif
-
- at_shutdown(scshutdown, NULL, SHUTDOWN_PRE_SYNC);
-
- cdevsw_add(&cdev, &sc_cdevsw, NULL);
-
-#ifdef DEVFS
- for (vc = 0; vc < MAXCONS; vc++)
- sc_devfs_token[vc] = devfs_add_devswf(&sc_cdevsw, vc, DV_CHR,
- UID_ROOT, GID_WHEEL, 0600, "ttyv%r", vc);
- sc_mouse_devfs_token = devfs_add_devswf(&sc_cdevsw, SC_MOUSE, DV_CHR,
- UID_ROOT, GID_WHEEL, 0600, "sysmouse");
- sc_console_devfs_token = devfs_add_devswf(&sc_cdevsw, SC_CONSOLE, DV_CHR,
- UID_ROOT, GID_WHEEL, 0600, "consolectl");
-#endif
- return 0;
-}
-
-struct tty
-*scdevtotty(dev_t dev)
-{
- int unit = minor(dev);
-
- if (init_done == COLD)
- return(NULL);
- if (unit == SC_CONSOLE)
- return CONSOLE_TTY;
- if (unit == SC_MOUSE)
- return MOUSE_TTY;
- if (unit >= MAXCONS || unit < 0)
- return(NULL);
- return VIRTUAL_TTY(unit);
-}
-
-int
-scopen(dev_t dev, int flag, int mode, struct proc *p)
-{
- struct tty *tp = scdevtotty(dev);
- keyarg_t key;
- int s;
-
- if (!tp)
- return(ENXIO);
-
- tp->t_oproc = (minor(dev) == SC_MOUSE) ? scmousestart : scstart;
- tp->t_param = scparam;
- tp->t_dev = dev;
- if (!(tp->t_state & TS_ISOPEN)) {
- ttychars(tp);
- /* Use the current setting of the <-- key as default VERASE. */
- /* If the Delete key is preferable, an stty is necessary */
- key.keynum = 0x0e; /* how do we know this magic number... XXX */
- kbd_ioctl(kbd, GIO_KEYMAPENT, (caddr_t)&key);
- tp->t_cc[VERASE] = key.key.map[0];
- tp->t_iflag = TTYDEF_IFLAG;
- tp->t_oflag = TTYDEF_OFLAG;
- tp->t_cflag = TTYDEF_CFLAG;
- tp->t_lflag = TTYDEF_LFLAG;
- tp->t_ispeed = tp->t_ospeed = TTYDEF_SPEED;
- scparam(tp, &tp->t_termios);
- (*linesw[tp->t_line].l_modem)(tp, 1);
- if (minor(dev) == SC_MOUSE)
- mouse_level = 0; /* XXX */
- if (minor(dev) < MAXCONS && console[minor(dev)]) {
- s = spltty();
- sc_clean_up(console[minor(dev)]);
- splx(s);
- }
- }
- else
- if (tp->t_state & TS_XCLUDE && p->p_ucred->cr_uid != 0)
- return(EBUSY);
- if (minor(dev) < MAXCONS && !console[minor(dev)]) {
- console[minor(dev)] = alloc_scp();
- if (ISGRAPHSC(console[minor(dev)]))
- sc_set_pixel_mode(console[minor(dev)], NULL, COL, ROW, 16);
- }
- if (minor(dev)<MAXCONS && !tp->t_winsize.ws_col && !tp->t_winsize.ws_row) {
- tp->t_winsize.ws_col = console[minor(dev)]->xsize;
- tp->t_winsize.ws_row = console[minor(dev)]->ysize;
- }
- return ((*linesw[tp->t_line].l_open)(dev, tp));
-}
-
-int
-scclose(dev_t dev, int flag, int mode, struct proc *p)
-{
- struct tty *tp = scdevtotty(dev);
- struct scr_stat *scp;
-
- if (!tp)
- return(ENXIO);
- if (minor(dev) < MAXCONS) {
- scp = sc_get_scr_stat(tp->t_dev);
- if (scp->status & SWITCH_WAIT_ACQ)
- wakeup((caddr_t)&scp->smode);
-#if not_yet_done
- if (scp == &main_console) {
- scp->pid = 0;
- scp->proc = NULL;
- scp->smode.mode = VT_AUTO;
- }
- else {
- free(scp->scr_buf, M_DEVBUF);
- if (scp->history != NULL) {
- free(scp->history, M_DEVBUF);
- if (scp->history_size / scp->xsize
- > imax(sc_history_size, scp->ysize))
- extra_history_size += scp->history_size / scp->xsize
- - imax(sc_history_size, scp->ysize);
- }
- free(scp, M_DEVBUF);
- console[minor(dev)] = NULL;
- }
-#else
- scp->pid = 0;
- scp->proc = NULL;
- scp->smode.mode = VT_AUTO;
-#endif
- }
- spltty();
- (*linesw[tp->t_line].l_close)(tp, flag);
- ttyclose(tp);
- spl0();
- return(0);
-}
-
-int
-scread(dev_t dev, struct uio *uio, int flag)
-{
- struct tty *tp = scdevtotty(dev);
-
- if (!tp)
- return(ENXIO);
- return((*linesw[tp->t_line].l_read)(tp, uio, flag));
-}
-
-int
-scwrite(dev_t dev, struct uio *uio, int flag)
-{
- struct tty *tp = scdevtotty(dev);
-
- if (!tp)
- return(ENXIO);
- return((*linesw[tp->t_line].l_write)(tp, uio, flag));
-}
-
-static int
-sckbdevent(keyboard_t *thiskbd, int event, void *arg)
-{
- static struct tty *cur_tty;
- int c;
- size_t len;
- u_char *cp;
-
- /* assert(thiskbd == kbd) */
-
- switch (event) {
- case KBDIO_KEYINPUT:
- break;
- case KBDIO_UNLOADING:
- kbd = NULL;
- kbd_release(thiskbd, (void *)&keyboard);
- return 0;
- default:
- return EINVAL;
- }
-
- /*
- * Loop while there is still input to get from the keyboard.
- * I don't think this is nessesary, and it doesn't fix
- * the Xaccel-2.1 keyboard hang, but it can't hurt. XXX
- */
- while ((c = scgetc(thiskbd, SCGETC_NONBLOCK)) != NOKEY) {
-
- cur_tty = VIRTUAL_TTY(get_scr_num());
- if (!(cur_tty->t_state & TS_ISOPEN))
- if (!((cur_tty = CONSOLE_TTY)->t_state & TS_ISOPEN))
- continue;
-
- switch (KEYFLAGS(c)) {
- case 0x0000: /* normal key */
- (*linesw[cur_tty->t_line].l_rint)(KEYCHAR(c), cur_tty);
- break;
- case FKEY: /* function key, return string */
- cp = kbd_get_fkeystr(thiskbd, KEYCHAR(c), &len);
- if (cp != NULL) {
- while (len-- > 0)
- (*linesw[cur_tty->t_line].l_rint)(*cp++, cur_tty);
- }
- break;
- case MKEY: /* meta is active, prepend ESC */
- (*linesw[cur_tty->t_line].l_rint)(0x1b, cur_tty);
- (*linesw[cur_tty->t_line].l_rint)(KEYCHAR(c), cur_tty);
- break;
- case BKEY: /* backtab fixed sequence (esc [ Z) */
- (*linesw[cur_tty->t_line].l_rint)(0x1b, cur_tty);
- (*linesw[cur_tty->t_line].l_rint)('[', cur_tty);
- (*linesw[cur_tty->t_line].l_rint)('Z', cur_tty);
- break;
- }
- }
-
- if (cur_console->status & MOUSE_VISIBLE) {
- remove_mouse_image(cur_console);
- cur_console->status &= ~MOUSE_VISIBLE;
- }
-
- return 0;
-}
-
-static int
-scparam(struct tty *tp, struct termios *t)
-{
- tp->t_ispeed = t->c_ispeed;
- tp->t_ospeed = t->c_ospeed;
- tp->t_cflag = t->c_cflag;
- return 0;
-}
-
-int
-scioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
-{
- u_int delta_ehs;
- int error;
- int i;
- struct tty *tp;
- scr_stat *scp;
- int s;
-
- tp = scdevtotty(dev);
- if (!tp)
- return ENXIO;
- scp = sc_get_scr_stat(tp->t_dev);
-
- /* If there is a user_ioctl function call that first */
- if (sc_user_ioctl) {
- error = (*sc_user_ioctl)(dev, cmd, data, flag, p);
- if (error != ENOIOCTL)
- return error;
- }
-
- error = sc_vid_ioctl(tp, cmd, data, flag, p);
- if (error != ENOIOCTL)
- return error;
-
- switch (cmd) { /* process console hardware related ioctl's */
-
- case GIO_ATTR: /* get current attributes */
- *(int*)data = (scp->term.cur_attr >> 8) & 0xFF;
- return 0;
-
- case GIO_COLOR: /* is this a color console ? */
- *(int *)data = (scp->adp->va_flags & V_ADP_COLOR) ? 1 : 0;
- return 0;
-
- case CONS_BLANKTIME: /* set screen saver timeout (0 = no saver) */
- if (*(int *)data < 0 || *(int *)data > MAX_BLANKTIME)
- return EINVAL;
- s = spltty();
- scrn_blank_time = *(int *)data;
- run_scrn_saver = (scrn_blank_time != 0);
- splx(s);
- return 0;
-
- case CONS_CURSORTYPE: /* set cursor type blink/noblink */
- if ((*(int*)data) & 0x01)
- sc_flags |= BLINK_CURSOR;
- else
- sc_flags &= ~BLINK_CURSOR;
- if ((*(int*)data) & 0x02) {
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- sc_flags |= CHAR_CURSOR;
- } else
- sc_flags &= ~CHAR_CURSOR;
- /*
- * The cursor shape is global property; all virtual consoles
- * are affected. Update the cursor in the current console...
- */
- if (!ISGRAPHSC(cur_console)) {
- s = spltty();
- remove_cursor_image(cur_console);
- if (sc_flags & CHAR_CURSOR)
- set_destructive_cursor(cur_console);
- draw_cursor_image(cur_console);
- splx(s);
- }
- return 0;
-
- case CONS_BELLTYPE: /* set bell type sound/visual */
- if ((*(int *)data) & 0x01)
- sc_flags |= VISUAL_BELL;
- else
- sc_flags &= ~VISUAL_BELL;
- if ((*(int *)data) & 0x02)
- sc_flags |= QUIET_BELL;
- else
- sc_flags &= ~QUIET_BELL;
- return 0;
-
- case CONS_HISTORY: /* set history size */
- if (*(int *)data > 0) {
- int lines; /* buffer size to allocate */
- int lines0; /* current buffer size */
-
- lines = imax(*(int *)data, scp->ysize);
- lines0 = (scp->history != NULL) ?
- scp->history_size / scp->xsize : scp->ysize;
- if (lines0 > imax(sc_history_size, scp->ysize))
- delta_ehs = lines0 - imax(sc_history_size, scp->ysize);
- else
- delta_ehs = 0;
- /*
- * syscons unconditionally allocates buffers upto SC_HISTORY_SIZE
- * lines or scp->ysize lines, whichever is larger. A value
- * greater than that is allowed, subject to extra_history_size.
- */
- if (lines > imax(sc_history_size, scp->ysize))
- if (lines - imax(sc_history_size, scp->ysize) >
- extra_history_size + delta_ehs)
- return EINVAL;
- if (cur_console->status & BUFFER_SAVED)
- return EBUSY;
- sc_alloc_history_buffer(scp, lines, delta_ehs, TRUE);
- return 0;
- }
- else
- return EINVAL;
-
- case CONS_MOUSECTL: /* control mouse arrow */
- case OLD_CONS_MOUSECTL:
- {
- /* MOUSE_BUTTON?DOWN -> MOUSE_MSC_BUTTON?UP */
- static int butmap[8] = {
- MOUSE_MSC_BUTTON1UP | MOUSE_MSC_BUTTON2UP | MOUSE_MSC_BUTTON3UP,
- MOUSE_MSC_BUTTON2UP | MOUSE_MSC_BUTTON3UP,
- MOUSE_MSC_BUTTON1UP | MOUSE_MSC_BUTTON3UP,
- MOUSE_MSC_BUTTON3UP,
- MOUSE_MSC_BUTTON1UP | MOUSE_MSC_BUTTON2UP,
- MOUSE_MSC_BUTTON2UP,
- MOUSE_MSC_BUTTON1UP,
- 0,
- };
- mouse_info_t *mouse = (mouse_info_t*)data;
- mouse_info_t buf;
-
- /* FIXME: */
- if (!ISMOUSEAVAIL(scp->adp->va_flags))
- return ENODEV;
-
- if (cmd == OLD_CONS_MOUSECTL) {
- static u_char swapb[] = { 0, 4, 2, 6, 1, 5, 3, 7 };
- old_mouse_info_t *old_mouse = (old_mouse_info_t *)data;
-
- mouse = &buf;
- mouse->operation = old_mouse->operation;
- switch (mouse->operation) {
- case MOUSE_MODE:
- mouse->u.mode = old_mouse->u.mode;
- break;
- case MOUSE_SHOW:
- case MOUSE_HIDE:
- break;
- case MOUSE_MOVEABS:
- case MOUSE_MOVEREL:
- case MOUSE_ACTION:
- mouse->u.data.x = old_mouse->u.data.x;
- mouse->u.data.y = old_mouse->u.data.y;
- mouse->u.data.z = 0;
- mouse->u.data.buttons = swapb[old_mouse->u.data.buttons & 0x7];
- break;
- case MOUSE_GETINFO:
- old_mouse->u.data.x = scp->mouse_xpos;
- old_mouse->u.data.y = scp->mouse_ypos;
- old_mouse->u.data.buttons = swapb[scp->mouse_buttons & 0x7];
- break;
- default:
- return EINVAL;
- }
- }
-
- switch (mouse->operation) {
- case MOUSE_MODE:
- if (ISSIGVALID(mouse->u.mode.signal)) {
- scp->mouse_signal = mouse->u.mode.signal;
- scp->mouse_proc = p;
- scp->mouse_pid = p->p_pid;
- }
- else {
- scp->mouse_signal = 0;
- scp->mouse_proc = NULL;
- scp->mouse_pid = 0;
- }
- return 0;
-
- case MOUSE_SHOW:
- if (ISTEXTSC(scp) && !(scp->status & MOUSE_ENABLED)) {
- scp->status |= (MOUSE_ENABLED | MOUSE_VISIBLE);
- scp->mouse_oldpos = scp->mouse_pos;
- mark_all(scp);
- return 0;
- }
- else
- return EINVAL;
- break;
-
- case MOUSE_HIDE:
- if (ISTEXTSC(scp) && (scp->status & MOUSE_ENABLED)) {
- scp->status &= ~(MOUSE_ENABLED | MOUSE_VISIBLE);
- mark_all(scp);
- return 0;
- }
- else
- return EINVAL;
- break;
-
- case MOUSE_MOVEABS:
- scp->mouse_xpos = mouse->u.data.x;
- scp->mouse_ypos = mouse->u.data.y;
- set_mouse_pos(scp);
- break;
-
- case MOUSE_MOVEREL:
- scp->mouse_xpos += mouse->u.data.x;
- scp->mouse_ypos += mouse->u.data.y;
- set_mouse_pos(scp);
- break;
-
- case MOUSE_GETINFO:
- mouse->u.data.x = scp->mouse_xpos;
- mouse->u.data.y = scp->mouse_ypos;
- mouse->u.data.z = 0;
- mouse->u.data.buttons = scp->mouse_buttons;
- return 0;
-
- case MOUSE_ACTION:
- case MOUSE_MOTION_EVENT:
- /* this should maybe only be settable from /dev/consolectl SOS */
- /* send out mouse event on /dev/sysmouse */
-
- mouse_status.dx += mouse->u.data.x;
- mouse_status.dy += mouse->u.data.y;
- mouse_status.dz += mouse->u.data.z;
- if (mouse->operation == MOUSE_ACTION)
- mouse_status.button = mouse->u.data.buttons;
- mouse_status.flags |=
- ((mouse->u.data.x || mouse->u.data.y || mouse->u.data.z) ?
- MOUSE_POSCHANGED : 0)
- | (mouse_status.obutton ^ mouse_status.button);
- if (mouse_status.flags == 0)
- return 0;
-
- if (ISTEXTSC(cur_console) && (cur_console->status & MOUSE_ENABLED))
- cur_console->status |= MOUSE_VISIBLE;
-
- if ((MOUSE_TTY)->t_state & TS_ISOPEN) {
- u_char buf[MOUSE_SYS_PACKETSIZE];
- int j;
-
- /* the first five bytes are compatible with MouseSystems' */
- buf[0] = MOUSE_MSC_SYNC
- | butmap[mouse_status.button & MOUSE_STDBUTTONS];
- j = imax(imin(mouse->u.data.x, 255), -256);
- buf[1] = j >> 1;
- buf[3] = j - buf[1];
- j = -imax(imin(mouse->u.data.y, 255), -256);
- buf[2] = j >> 1;
- buf[4] = j - buf[2];
- for (j = 0; j < MOUSE_MSC_PACKETSIZE; j++)
- (*linesw[(MOUSE_TTY)->t_line].l_rint)(buf[j],MOUSE_TTY);
- if (mouse_level >= 1) { /* extended part */
- j = imax(imin(mouse->u.data.z, 127), -128);
- buf[5] = (j >> 1) & 0x7f;
- buf[6] = (j - (j >> 1)) & 0x7f;
- /* buttons 4-10 */
- buf[7] = (~mouse_status.button >> 3) & 0x7f;
- for (j = MOUSE_MSC_PACKETSIZE;
- j < MOUSE_SYS_PACKETSIZE; j++)
- (*linesw[(MOUSE_TTY)->t_line].l_rint)(buf[j],MOUSE_TTY);
- }
- }
-
- if (cur_console->mouse_signal) {
- cur_console->mouse_buttons = mouse->u.data.buttons;
- /* has controlling process died? */
- if (cur_console->mouse_proc &&
- (cur_console->mouse_proc != pfind(cur_console->mouse_pid))){
- cur_console->mouse_signal = 0;
- cur_console->mouse_proc = NULL;
- cur_console->mouse_pid = 0;
- }
- else
- psignal(cur_console->mouse_proc, cur_console->mouse_signal);
- }
- else if (mouse->operation == MOUSE_ACTION && cut_buffer != NULL) {
- /* process button presses */
- if ((cur_console->mouse_buttons ^ mouse->u.data.buttons) &&
- ISTEXTSC(cur_console)) {
- cur_console->mouse_buttons = mouse->u.data.buttons;
- if (cur_console->mouse_buttons & MOUSE_BUTTON1DOWN)
- mouse_cut_start(cur_console);
- else
- mouse_cut_end(cur_console);
- if (cur_console->mouse_buttons & MOUSE_BUTTON2DOWN ||
- cur_console->mouse_buttons & MOUSE_BUTTON3DOWN)
- mouse_paste(cur_console);
- }
- }
-
- if (mouse->u.data.x != 0 || mouse->u.data.y != 0) {
- cur_console->mouse_xpos += mouse->u.data.x;
- cur_console->mouse_ypos += mouse->u.data.y;
- set_mouse_pos(cur_console);
- }
-
- break;
-
- case MOUSE_BUTTON_EVENT:
- if ((mouse->u.event.id & MOUSE_BUTTONS) == 0)
- return EINVAL;
- if (mouse->u.event.value < 0)
- return EINVAL;
-
- if (mouse->u.event.value > 0) {
- cur_console->mouse_buttons |= mouse->u.event.id;
- mouse_status.button |= mouse->u.event.id;
- } else {
- cur_console->mouse_buttons &= ~mouse->u.event.id;
- mouse_status.button &= ~mouse->u.event.id;
- }
- mouse_status.flags |= mouse_status.obutton ^ mouse_status.button;
- if (mouse_status.flags == 0)
- return 0;
-
- if (ISTEXTSC(cur_console) && (cur_console->status & MOUSE_ENABLED))
- cur_console->status |= MOUSE_VISIBLE;
-
- if ((MOUSE_TTY)->t_state & TS_ISOPEN) {
- u_char buf[8];
- int i;
-
- buf[0] = MOUSE_MSC_SYNC
- | butmap[mouse_status.button & MOUSE_STDBUTTONS];
- buf[7] = (~mouse_status.button >> 3) & 0x7f;
- buf[1] = buf[2] = buf[3] = buf[4] = buf[5] = buf[6] = 0;
- for (i = 0;
- i < ((mouse_level >= 1) ? MOUSE_SYS_PACKETSIZE
- : MOUSE_MSC_PACKETSIZE); i++)
- (*linesw[(MOUSE_TTY)->t_line].l_rint)(buf[i],MOUSE_TTY);
- }
-
- if (cur_console->mouse_signal) {
- if (cur_console->mouse_proc &&
- (cur_console->mouse_proc != pfind(cur_console->mouse_pid))){
- cur_console->mouse_signal = 0;
- cur_console->mouse_proc = NULL;
- cur_console->mouse_pid = 0;
- }
- else
- psignal(cur_console->mouse_proc, cur_console->mouse_signal);
- break;
- }
-
- if (!ISTEXTSC(cur_console) || (cut_buffer == NULL))
- break;
-
- switch (mouse->u.event.id) {
- case MOUSE_BUTTON1DOWN:
- switch (mouse->u.event.value % 4) {
- case 0: /* up */
- mouse_cut_end(cur_console);
- break;
- case 1:
- mouse_cut_start(cur_console);
- break;
- case 2:
- mouse_cut_word(cur_console);
- break;
- case 3:
- mouse_cut_line(cur_console);
- break;
- }
- break;
- case MOUSE_BUTTON2DOWN:
- switch (mouse->u.event.value) {
- case 0: /* up */
- break;
- default:
- mouse_paste(cur_console);
- break;
- }
- break;
- case MOUSE_BUTTON3DOWN:
- switch (mouse->u.event.value) {
- case 0: /* up */
- if (!(cur_console->mouse_buttons & MOUSE_BUTTON1DOWN))
- mouse_cut_end(cur_console);
- break;
- default:
- mouse_cut_extend(cur_console);
- break;
- }
- break;
- }
- break;
-
- default:
- return EINVAL;
- }
- /* make screensaver happy */
- sc_touch_scrn_saver();
- return 0;
- }
-
- /* MOUSE_XXX: /dev/sysmouse ioctls */
- case MOUSE_GETHWINFO: /* get device information */
- {
- mousehw_t *hw = (mousehw_t *)data;
-
- if (tp != MOUSE_TTY)
- return ENOTTY;
- hw->buttons = 10; /* XXX unknown */
- hw->iftype = MOUSE_IF_SYSMOUSE;
- hw->type = MOUSE_MOUSE;
- hw->model = MOUSE_MODEL_GENERIC;
- hw->hwid = 0;
- return 0;
- }
-
- case MOUSE_GETMODE: /* get protocol/mode */
- {
- mousemode_t *mode = (mousemode_t *)data;
-
- if (tp != MOUSE_TTY)
- return ENOTTY;
- mode->level = mouse_level;
- switch (mode->level) {
- case 0:
- /* at this level, sysmouse emulates MouseSystems protocol */
- mode->protocol = MOUSE_PROTO_MSC;
- mode->rate = -1; /* unknown */
- mode->resolution = -1; /* unknown */
- mode->accelfactor = 0; /* disabled */
- mode->packetsize = MOUSE_MSC_PACKETSIZE;
- mode->syncmask[0] = MOUSE_MSC_SYNCMASK;
- mode->syncmask[1] = MOUSE_MSC_SYNC;
- break;
-
- case 1:
- /* at this level, sysmouse uses its own protocol */
- mode->protocol = MOUSE_PROTO_SYSMOUSE;
- mode->rate = -1;
- mode->resolution = -1;
- mode->accelfactor = 0;
- mode->packetsize = MOUSE_SYS_PACKETSIZE;
- mode->syncmask[0] = MOUSE_SYS_SYNCMASK;
- mode->syncmask[1] = MOUSE_SYS_SYNC;
- break;
- }
- return 0;
- }
-
- case MOUSE_SETMODE: /* set protocol/mode */
- {
- mousemode_t *mode = (mousemode_t *)data;
-
- if (tp != MOUSE_TTY)
- return ENOTTY;
- if ((mode->level < 0) || (mode->level > 1))
- return EINVAL;
- mouse_level = mode->level;
- return 0;
- }
-
- case MOUSE_GETLEVEL: /* get operation level */
- if (tp != MOUSE_TTY)
- return ENOTTY;
- *(int *)data = mouse_level;
- return 0;
-
- case MOUSE_SETLEVEL: /* set operation level */
- if (tp != MOUSE_TTY)
- return ENOTTY;
- if ((*(int *)data < 0) || (*(int *)data > 1))
- return EINVAL;
- mouse_level = *(int *)data;
- return 0;
-
- case MOUSE_GETSTATUS: /* get accumulated mouse events */
- if (tp != MOUSE_TTY)
- return ENOTTY;
- s = spltty();
- *(mousestatus_t *)data = mouse_status;
- mouse_status.flags = 0;
- mouse_status.obutton = mouse_status.button;
- mouse_status.dx = 0;
- mouse_status.dy = 0;
- mouse_status.dz = 0;
- splx(s);
- return 0;
-
-#if notyet
- case MOUSE_GETVARS: /* get internal mouse variables */
- case MOUSE_SETVARS: /* set internal mouse variables */
- if (tp != MOUSE_TTY)
- return ENOTTY;
- return ENODEV;
-#endif
-
- case MOUSE_READSTATE: /* read status from the device */
- case MOUSE_READDATA: /* read data from the device */
- if (tp != MOUSE_TTY)
- return ENOTTY;
- return ENODEV;
-
- case CONS_GETINFO: /* get current (virtual) console info */
- {
- vid_info_t *ptr = (vid_info_t*)data;
- if (ptr->size == sizeof(struct vid_info)) {
- ptr->m_num = get_scr_num();
- ptr->mv_col = scp->xpos;
- ptr->mv_row = scp->ypos;
- ptr->mv_csz = scp->xsize;
- ptr->mv_rsz = scp->ysize;
- ptr->mv_norm.fore = (scp->term.std_color & 0x0f00)>>8;
- ptr->mv_norm.back = (scp->term.std_color & 0xf000)>>12;
- ptr->mv_rev.fore = (scp->term.rev_color & 0x0f00)>>8;
- ptr->mv_rev.back = (scp->term.rev_color & 0xf000)>>12;
- ptr->mv_grfc.fore = 0; /* not supported */
- ptr->mv_grfc.back = 0; /* not supported */
- ptr->mv_ovscan = scp->border;
- if (scp == cur_console)
- save_kbd_state(scp);
- ptr->mk_keylock = scp->status & LOCK_MASK;
- return 0;
- }
- return EINVAL;
- }
-
- case CONS_GETVERS: /* get version number */
- *(int*)data = 0x200; /* version 2.0 */
- return 0;
-
- case CONS_IDLE: /* see if the screen has been idle */
- /*
- * When the screen is in the GRAPHICS_MODE or UNKNOWN_MODE,
- * the user process may have been writing something on the
- * screen and syscons is not aware of it. Declare the screen
- * is NOT idle if it is in one of these modes. But there is
- * an exception to it; if a screen saver is running in the
- * graphics mode in the current screen, we should say that the
- * screen has been idle.
- */
- *(int *)data = scrn_idle
- && (!ISGRAPHSC(cur_console)
- || (cur_console->status & SAVER_RUNNING));
- return 0;
-
- case CONS_SAVERMODE: /* set saver mode */
- switch(*(int *)data) {
- case CONS_USR_SAVER:
- /* if a LKM screen saver is running, stop it first. */
- scsplash_stick(FALSE);
- saver_mode = *(int *)data;
- s = spltty();
- if ((error = wait_scrn_saver_stop())) {
- splx(s);
- return error;
- }
- scp->status |= SAVER_RUNNING;
- scsplash_stick(TRUE);
- splx(s);
- break;
- case CONS_LKM_SAVER:
- s = spltty();
- if ((saver_mode == CONS_USR_SAVER) && (scp->status & SAVER_RUNNING))
- scp->status &= ~SAVER_RUNNING;
- saver_mode = *(int *)data;
- splx(s);
- break;
- default:
- return EINVAL;
- }
- return 0;
-
- case CONS_SAVERSTART: /* immediately start/stop the screen saver */
- /*
- * Note that this ioctl does not guarantee the screen saver
- * actually starts or stops. It merely attempts to do so...
- */
- s = spltty();
- run_scrn_saver = (*(int *)data != 0);
- if (run_scrn_saver)
- scrn_time_stamp -= scrn_blank_time;
- splx(s);
- return 0;
-
- case VT_SETMODE: /* set screen switcher mode */
- {
- struct vt_mode *mode;
-
- mode = (struct vt_mode *)data;
- if (ISSIGVALID(mode->relsig) && ISSIGVALID(mode->acqsig) &&
- ISSIGVALID(mode->frsig)) {
- bcopy(data, &scp->smode, sizeof(struct vt_mode));
- if (scp->smode.mode == VT_PROCESS) {
- scp->proc = p;
- scp->pid = scp->proc->p_pid;
- }
- return 0;
- } else
- return EINVAL;
- }
-
- case VT_GETMODE: /* get screen switcher mode */
- bcopy(&scp->smode, data, sizeof(struct vt_mode));
- return 0;
-
- case VT_RELDISP: /* screen switcher ioctl */
- switch(*(int *)data) {
- case VT_FALSE: /* user refuses to release screen, abort */
- if (scp == old_scp && (scp->status & SWITCH_WAIT_REL)) {
- old_scp->status &= ~SWITCH_WAIT_REL;
- switch_in_progress = FALSE;
- return 0;
- }
- return EINVAL;
-
- case VT_TRUE: /* user has released screen, go on */
- if (scp == old_scp && (scp->status & SWITCH_WAIT_REL)) {
- scp->status &= ~SWITCH_WAIT_REL;
- exchange_scr();
- if (new_scp->smode.mode == VT_PROCESS) {
- new_scp->status |= SWITCH_WAIT_ACQ;
- psignal(new_scp->proc, new_scp->smode.acqsig);
- }
- else
- switch_in_progress = FALSE;
- return 0;
- }
- return EINVAL;
-
- case VT_ACKACQ: /* acquire acknowledged, switch completed */
- if (scp == new_scp && (scp->status & SWITCH_WAIT_ACQ)) {
- scp->status &= ~SWITCH_WAIT_ACQ;
- switch_in_progress = FALSE;
- return 0;
- }
- return EINVAL;
-
- default:
- return EINVAL;
- }
- /* NOT REACHED */
-
- case VT_OPENQRY: /* return free virtual console */
- for (i = 0; i < MAXCONS; i++) {
- tp = VIRTUAL_TTY(i);
- if (!(tp->t_state & TS_ISOPEN)) {
- *(int *)data = i + 1;
- return 0;
- }
- }
- return EINVAL;
-
- case VT_ACTIVATE: /* switch to screen *data */
- s = spltty();
- sc_clean_up(cur_console);
- splx(s);
- return switch_scr(scp, *(int *)data - 1);
-
- case VT_WAITACTIVE: /* wait for switch to occur */
- if (*(int *)data > MAXCONS || *(int *)data < 0)
- return EINVAL;
- s = spltty();
- error = sc_clean_up(cur_console);
- splx(s);
- if (error)
- return error;
- if (minor(dev) == *(int *)data - 1)
- return 0;
- if (*(int *)data == 0) {
- if (scp == cur_console)
- return 0;
- }
- else
- scp = console[*(int *)data - 1];
- while ((error=tsleep((caddr_t)&scp->smode, PZERO|PCATCH,
- "waitvt", 0)) == ERESTART) ;
- return error;
-
- case VT_GETACTIVE:
- *(int *)data = get_scr_num()+1;
- return 0;
-
- case KDENABIO: /* allow io operations */
- error = suser(p->p_ucred, &p->p_acflag);
- if (error != 0)
- return error;
- if (securelevel > 0)
- return EPERM;
-#ifdef __i386__
- p->p_md.md_regs->tf_eflags |= PSL_IOPL;
-#endif
- return 0;
-
- case KDDISABIO: /* disallow io operations (default) */
-#ifdef __i386__
- p->p_md.md_regs->tf_eflags &= ~PSL_IOPL;
-#endif
- return 0;
-
- case KDSKBSTATE: /* set keyboard state (locks) */
- if (*(int *)data & ~LOCK_MASK)
- return EINVAL;
- scp->status &= ~LOCK_MASK;
- scp->status |= *(int *)data;
- if (scp == cur_console)
- update_kbd_state(scp->status, LOCK_MASK);
- return 0;
-
- case KDGKBSTATE: /* get keyboard state (locks) */
- if (scp == cur_console)
- save_kbd_state(scp);
- *(int *)data = scp->status & LOCK_MASK;
- return 0;
-
- case KDSETRAD: /* set keyboard repeat & delay rates */
- if (*(int *)data & ~0x7f)
- return EINVAL;
- error = kbd_ioctl(kbd, KDSETRAD, data);
- if (error == ENOIOCTL)
- error = ENODEV;
- return error;
-
- case KDSKBMODE: /* set keyboard mode */
- switch (*(int *)data) {
- case K_XLATE: /* switch to XLT ascii mode */
- case K_RAW: /* switch to RAW scancode mode */
- case K_CODE: /* switch to CODE mode */
- scp->kbd_mode = *(int *)data;
- if (scp == cur_console)
- kbd_ioctl(kbd, cmd, data);
- return 0;
- default:
- return EINVAL;
- }
- /* NOT REACHED */
-
- case KDGKBMODE: /* get keyboard mode */
- *(int *)data = scp->kbd_mode;
- return 0;
-
- case KDGKBINFO:
- error = kbd_ioctl(kbd, cmd, data);
- if (error == ENOIOCTL)
- error = ENODEV;
- return error;
-
- case KDMKTONE: /* sound the bell */
- if (*(int*)data)
- do_bell(scp, (*(int*)data)&0xffff,
- (((*(int*)data)>>16)&0xffff)*hz/1000);
- else
- do_bell(scp, scp->bell_pitch, scp->bell_duration);
- return 0;
-
- case KIOCSOUND: /* make tone (*data) hz */
-#ifdef __i386__
- if (scp == cur_console) {
- if (*(int*)data) {
- int pitch = timer_freq / *(int*)data;
-
- /* set command for counter 2, 2 byte write */
- if (acquire_timer2(TIMER_16BIT|TIMER_SQWAVE))
- return EBUSY;
-
- /* set pitch */
- outb(TIMER_CNTR2, pitch);
- outb(TIMER_CNTR2, (pitch>>8));
-
- /* enable counter 2 output to speaker */
- outb(IO_PPI, inb(IO_PPI) | 3);
- }
- else {
- /* disable counter 2 output to speaker */
- outb(IO_PPI, inb(IO_PPI) & 0xFC);
- release_timer2();
- }
- }
-#endif /* __i386__ */
- return 0;
-
- case KDGKBTYPE: /* get keyboard type */
- error = kbd_ioctl(kbd, cmd, data);
- if (error == ENOIOCTL) {
- /* always return something? XXX */
- *(int *)data = 0;
- }
- return 0;
-
- case KDSETLED: /* set keyboard LED status */
- if (*(int *)data & ~LED_MASK) /* FIXME: LOCK_MASK? */
- return EINVAL;
- scp->status &= ~LED_MASK;
- scp->status |= *(int *)data;
- if (scp == cur_console)
- update_kbd_leds(scp->status);
- return 0;
-
- case KDGETLED: /* get keyboard LED status */
- if (scp == cur_console)
- save_kbd_state(scp);
- *(int *)data = scp->status & LED_MASK;
- return 0;
-
- case CONS_SETKBD: /* set the new keyboard */
- {
- keyboard_t *newkbd;
-
- s = spltty();
- newkbd = kbd_get_keyboard(*(int *)data);
- if (newkbd == NULL) {
- splx(s);
- return EINVAL;
- }
- error = 0;
- if (kbd != newkbd) {
- i = kbd_allocate(newkbd->kb_name, newkbd->kb_unit,
- (void *)&keyboard, sckbdevent, NULL);
- /* i == newkbd->kb_index */
- if (i >= 0) {
- if (kbd != NULL) {
- save_kbd_state(cur_console);
- kbd_release(kbd, (void *)&keyboard);
- }
- kbd = kbd_get_keyboard(i); /* kbd == newkbd */
- keyboard = i;
- kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&cur_console->kbd_mode);
- update_kbd_state(cur_console->status, LOCK_MASK);
- } else {
- error = EPERM; /* XXX */
- }
- }
- splx(s);
- return error;
- }
-
- case CONS_RELKBD: /* release the current keyboard */
- s = spltty();
- error = 0;
- if (kbd != NULL) {
- save_kbd_state(cur_console);
- error = kbd_release(kbd, (void *)&keyboard);
- if (error == 0) {
- kbd = NULL;
- keyboard = -1;
- }
- }
- splx(s);
- return error;
-
- case GIO_SCRNMAP: /* get output translation table */
- bcopy(&scr_map, data, sizeof(scr_map));
- return 0;
-
- case PIO_SCRNMAP: /* set output translation table */
- bcopy(data, &scr_map, sizeof(scr_map));
- for (i=0; i<sizeof(scr_map); i++)
- scr_rmap[scr_map[i]] = i;
- return 0;
-
- case GIO_KEYMAP: /* get keyboard translation table */
- case PIO_KEYMAP: /* set keyboard translation table */
- case GIO_DEADKEYMAP: /* get accent key translation table */
- case PIO_DEADKEYMAP: /* set accent key translation table */
- case GETFKEY: /* get function key string */
- case SETFKEY: /* set function key string */
- error = kbd_ioctl(kbd, cmd, data);
- if (error == ENOIOCTL)
- error = ENODEV;
- return error;
-
- case PIO_FONT8x8: /* set 8x8 dot font */
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- bcopy(data, font_8, 8*256);
- fonts_loaded |= FONT_8;
- /*
- * FONT KLUDGE
- * Always use the font page #0. XXX
- * Don't load if the current font size is not 8x8.
- */
- if (ISTEXTSC(cur_console) && (cur_console->font_size < 14))
- copy_font(cur_console, LOAD, 8, font_8);
- return 0;
-
- case GIO_FONT8x8: /* get 8x8 dot font */
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- if (fonts_loaded & FONT_8) {
- bcopy(font_8, data, 8*256);
- return 0;
- }
- else
- return ENXIO;
-
- case PIO_FONT8x14: /* set 8x14 dot font */
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- bcopy(data, font_14, 14*256);
- fonts_loaded |= FONT_14;
- /*
- * FONT KLUDGE
- * Always use the font page #0. XXX
- * Don't load if the current font size is not 8x14.
- */
- if (ISTEXTSC(cur_console)
- && (cur_console->font_size >= 14) && (cur_console->font_size < 16))
- copy_font(cur_console, LOAD, 14, font_14);
- return 0;
-
- case GIO_FONT8x14: /* get 8x14 dot font */
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- if (fonts_loaded & FONT_14) {
- bcopy(font_14, data, 14*256);
- return 0;
- }
- else
- return ENXIO;
-
- case PIO_FONT8x16: /* set 8x16 dot font */
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- bcopy(data, font_16, 16*256);
- fonts_loaded |= FONT_16;
- /*
- * FONT KLUDGE
- * Always use the font page #0. XXX
- * Don't load if the current font size is not 8x16.
- */
- if (ISTEXTSC(cur_console) && (cur_console->font_size >= 16))
- copy_font(cur_console, LOAD, 16, font_16);
- return 0;
-
- case GIO_FONT8x16: /* get 8x16 dot font */
- if (!ISFONTAVAIL(scp->adp->va_flags))
- return ENXIO;
- if (fonts_loaded & FONT_16) {
- bcopy(font_16, data, 16*256);
- return 0;
- }
- else
- return ENXIO;
- default:
- break;
- }
-
- error = (*linesw[tp->t_line].l_ioctl)(tp, cmd, data, flag, p);
- if (error != ENOIOCTL)
- return(error);
- error = ttioctl(tp, cmd, data, flag);
- if (error != ENOIOCTL)
- return(error);
- return(ENOTTY);
-}
-
-static void
-scstart(struct tty *tp)
-{
- struct clist *rbp;
- int s, len;
- u_char buf[PCBURST];
- scr_stat *scp = sc_get_scr_stat(tp->t_dev);
-
- if (scp->status & SLKED || blink_in_progress)
- return; /* XXX who repeats the call when the above flags are cleared? */
- s = spltty();
- if (!(tp->t_state & (TS_TIMEOUT | TS_BUSY | TS_TTSTOP))) {
- tp->t_state |= TS_BUSY;
- rbp = &tp->t_outq;
- while (rbp->c_cc) {
- len = q_to_b(rbp, buf, PCBURST);
- splx(s);
- ansi_put(scp, buf, len);
- s = spltty();
- }
- tp->t_state &= ~TS_BUSY;
- ttwwakeup(tp);
- }
- splx(s);
-}
-
-static void
-scmousestart(struct tty *tp)
-{
- struct clist *rbp;
- int s;
- u_char buf[PCBURST];
-
- s = spltty();
- if (!(tp->t_state & (TS_TIMEOUT | TS_BUSY | TS_TTSTOP))) {
- tp->t_state |= TS_BUSY;
- rbp = &tp->t_outq;
- while (rbp->c_cc) {
- q_to_b(rbp, buf, PCBURST);
- }
- tp->t_state &= ~TS_BUSY;
- ttwwakeup(tp);
- }
- splx(s);
-}
-
-#if __i386__
-
-/* XXX kludge! */
-extern struct isa_driver scdriver;
-
-static void
-sccnprobe(struct consdev *cp)
-{
- struct isa_device *dvp;
-
- /*
- * Take control if we are the highest priority enabled display device.
- */
- dvp = find_display();
- if (dvp == NULL || dvp->id_driver != &scdriver) {
- cp->cn_pri = CN_DEAD;
- return;
- }
-
- if (!scvidprobe(dvp->id_unit, dvp->id_flags, TRUE)) {
- cp->cn_pri = CN_DEAD;
- return;
- }
- sckbdprobe(dvp->id_unit, dvp->id_flags, TRUE);
-
- /* initialize required fields */
- cp->cn_dev = makedev(CDEV_MAJOR, SC_CONSOLE);
- cp->cn_pri = CN_INTERNAL;
-}
-
-static void
-sccninit(struct consdev *cp)
-{
- scinit();
-}
-
-#else /* !__i386__ */
-
-extern struct consdev *cn_tab;
-
-void
-sccnattach(void)
-{
- if (!scvidprobe(0, 0, TRUE) || !sckbdprobe(0, 0, TRUE)) {
- return;
- }
-
- scinit();
- cn_tab = &sc_cons;
-}
-
-#endif /* __i386__ */
-
-static void
-sccnputc(dev_t dev, int c)
-{
- u_char buf[1];
- scr_stat *scp = console[0];
- term_stat save = scp->term;
- u_short *p;
- int s;
- int i;
-
- if (scp == cur_console && scp->status & SLKED) {
- scp->status &= ~SLKED;
- update_kbd_state(scp->status, SLKED);
- if (cur_console->status & BUFFER_SAVED) {
- p = cur_console->history_save;
- for (i = 0; i < cur_console->ysize; ++i) {
- bcopy(p, cur_console->scr_buf + (cur_console->xsize*i),
- cur_console->xsize*sizeof(u_short));
- p += cur_console->xsize;
- if (p + cur_console->xsize
- > cur_console->history + cur_console->history_size)
- p = cur_console->history;
- }
- cur_console->status &= ~BUFFER_SAVED;
- cur_console->history_head = cur_console->history_save;
- cur_console->status |= CURSOR_ENABLED;
- mark_all(cur_console);
- }
-#if 1 /* XXX */
- scstart(VIRTUAL_TTY(get_scr_num()));
-#endif
- }
-
- scp->term = kernel_console;
- current_default = &kernel_default;
- if (scp == cur_console && !ISGRAPHSC(scp))
- remove_cursor_image(scp);
- buf[0] = c;
- ansi_put(scp, buf, 1);
- kernel_console = scp->term;
- current_default = &user_default;
- scp->term = save;
-
- s = spltty(); /* block sckbdevent and scrn_timer */
- sccnupdate(scp);
- splx(s);
-}
-
-static int
-sccngetc(dev_t dev)
-{
- return sccngetch(0);
-}
-
-static int
-sccncheckc(dev_t dev)
-{
- return sccngetch(SCGETC_NONBLOCK);
-}
-
-static int
-sccngetch(int flags)
-{
- int cur_mode;
- int s = spltty(); /* block sckbdevent and scrn_timer while we poll */
- int c;
-
- /*
- * Stop the screen saver and update the screen if necessary.
- * What if we have been running in the screen saver code... XXX
- */
- sc_touch_scrn_saver();
- sccnupdate(cur_console);
-
- if (kbd == NULL) {
- splx(s);
- return -1;
- }
-
- /*
- * Make sure the keyboard is accessible even when the kbd device
- * driver is disabled.
- */
- kbd_enable(kbd);
-
- /* we shall always use the keyboard in the XLATE mode here */
- cur_mode = cur_console->kbd_mode;
- cur_console->kbd_mode = K_XLATE;
- kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&cur_console->kbd_mode);
-
- c = scgetc(kbd, SCGETC_CN | flags);
-
- cur_console->kbd_mode = cur_mode;
- kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&cur_console->kbd_mode);
- kbd_disable(kbd);
- splx(s);
-
- switch (KEYFLAGS(c)) {
- case 0: /* normal char */
- return KEYCHAR(c);
- case FKEY: /* function key */
- return c; /* XXX */
- case NOKEY:
- case ERRKEY:
- default:
- return -1;
- }
- /* NOT REACHED */
-}
-
-static void
-sccnupdate(scr_stat *scp)
-{
- /* this is a cut-down version of scrn_timer()... */
-
- if (font_loading_in_progress)
- return;
-
- if (panicstr || shutdown_in_progress) {
- sc_touch_scrn_saver();
- } else if (scp != cur_console) {
- return;
- }
-
- if (!run_scrn_saver)
- scrn_idle = FALSE;
- if ((saver_mode != CONS_LKM_SAVER) || !scrn_idle)
- if (scrn_blanked)
- stop_scrn_saver(current_saver);
-
- if (scp != cur_console || blink_in_progress || switch_in_progress)
- return;
-
- if (!ISGRAPHSC(scp) && !(scp->status & SAVER_RUNNING))
- scrn_update(scp, TRUE);
-}
-
-scr_stat
-*sc_get_scr_stat(dev_t dev)
-{
- int unit = minor(dev);
-
- if (unit == SC_CONSOLE)
- return console[0];
- if (unit >= MAXCONS || unit < 0)
- return(NULL);
- return console[unit];
-}
-
-static int
-get_scr_num()
-{
- int i = 0;
-
- while ((i < MAXCONS) && (cur_console != console[i]))
- i++;
- return i < MAXCONS ? i : 0;
-}
-
-static void
-scrn_timer(void *arg)
-{
- static int kbd_interval = 0;
- struct timeval tv;
- scr_stat *scp;
- int s;
-
- /* don't do anything when we are touching font */
- if (font_loading_in_progress) {
- if (arg)
- timeout(scrn_timer, (void *)TRUE, hz / 10);
- return;
- }
- s = spltty();
-
- if ((kbd == NULL) && (sc_flags & AUTODETECT_KBD)) {
- /* try to allocate a keyboard automatically */
- if (++kbd_interval >= 25) {
- keyboard = kbd_allocate("*", -1, (void *)&keyboard,
- sckbdevent, NULL);
- if (keyboard >= 0) {
- kbd = kbd_get_keyboard(keyboard);
- kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&cur_console->kbd_mode);
- update_kbd_state(cur_console->status, LOCK_MASK);
- }
- kbd_interval = 0;
- }
- }
-
- /* should we stop the screen saver? */
- getmicrouptime(&tv);
- if (panicstr || shutdown_in_progress)
- sc_touch_scrn_saver();
- if (run_scrn_saver) {
- scrn_idle = (tv.tv_sec > scrn_time_stamp + scrn_blank_time);
- } else {
- scrn_time_stamp = tv.tv_sec;
- scrn_idle = FALSE;
- if (scrn_blank_time > 0)
- run_scrn_saver = TRUE;
- }
- if ((saver_mode != CONS_LKM_SAVER) || !scrn_idle)
- if (scrn_blanked)
- stop_scrn_saver(current_saver);
-
- /* should we just return ? */
- if (blink_in_progress || switch_in_progress) {
- if (arg)
- timeout(scrn_timer, (void *)TRUE, hz / 10);
- splx(s);
- return;
- }
-
- /* Update the screen */
- scp = cur_console;
- if (!ISGRAPHSC(scp) && !(scp->status & SAVER_RUNNING))
- scrn_update(scp, TRUE);
-
- /* should we activate the screen saver? */
- if ((saver_mode == CONS_LKM_SAVER) && scrn_idle)
- if (!ISGRAPHSC(scp) || scrn_blanked)
- (*current_saver)(TRUE);
-
- if (arg)
- timeout(scrn_timer, (void *)TRUE, hz / 25);
- splx(s);
-}
-
-static void
-scrn_update(scr_stat *scp, int show_cursor)
-{
- /* update screen image */
- if (scp->start <= scp->end)
- sc_bcopy(scp, scp->scr_buf, scp->start, scp->end, 0);
-
- /* we are not to show the cursor and the mouse pointer... */
- if (!show_cursor) {
- scp->end = 0;
- scp->start = scp->xsize*scp->ysize - 1;
- return;
- }
-
- /* update "pseudo" mouse pointer image */
- if (scp->status & MOUSE_VISIBLE) {
- /* did mouse move since last time ? */
- if (scp->status & MOUSE_MOVED) {
- /* do we need to remove old mouse pointer image ? */
- if (scp->mouse_cut_start != NULL ||
- (scp->mouse_pos-scp->scr_buf) <= scp->start ||
- (scp->mouse_pos+scp->xsize + 1 - scp->scr_buf) >= scp->end) {
- remove_mouse_image(scp);
- }
- scp->status &= ~MOUSE_MOVED;
- draw_mouse_image(scp);
- }
- else {
- /* mouse didn't move, has it been overwritten ? */
- if ((scp->mouse_pos+scp->xsize + 1 - scp->scr_buf) >= scp->start &&
- (scp->mouse_pos - scp->scr_buf) <= scp->end) {
- draw_mouse_image(scp);
- }
- }
- }
-
- /* update cursor image */
- if (scp->status & CURSOR_ENABLED) {
- /* did cursor move since last time ? */
- if (scp->cursor_pos != scp->cursor_oldpos) {
- /* do we need to remove old cursor image ? */
- if ((scp->cursor_oldpos - scp->scr_buf) < scp->start ||
- ((scp->cursor_oldpos - scp->scr_buf) > scp->end)) {
- remove_cursor_image(scp);
- }
- scp->cursor_oldpos = scp->cursor_pos;
- draw_cursor_image(scp);
- }
- else {
- /* cursor didn't move, has it been overwritten ? */
- if (scp->cursor_pos - scp->scr_buf >= scp->start &&
- scp->cursor_pos - scp->scr_buf <= scp->end) {
- draw_cursor_image(scp);
- } else {
- /* if its a blinking cursor, we may have to update it */
- if (sc_flags & BLINK_CURSOR)
- draw_cursor_image(scp);
- }
- }
- blinkrate++;
- }
-
- if (scp->mouse_cut_start != NULL)
- draw_cutmarking(scp);
-
- scp->end = 0;
- scp->start = scp->xsize*scp->ysize - 1;
-}
-
-#if NSPLASH > 0
-
-static int
-scsplash_callback(int event)
-{
- int error;
-
- switch (event) {
- case SPLASH_INIT:
- scrn_saver_failed = FALSE;
- if (add_scrn_saver(scsplash_saver) == 0) {
- run_scrn_saver = TRUE;
- if (cold && !(boothowto & (RB_VERBOSE | RB_CONFIG))) {
- scsplash_stick(TRUE);
- (*current_saver)(TRUE);
- }
- }
- return 0;
-
- case SPLASH_TERM:
- if (current_saver == scsplash_saver) {
- scsplash_stick(FALSE);
- error = remove_scrn_saver(scsplash_saver);
- if (error)
- return error;
- }
- return 0;
-
- default:
- return EINVAL;
- }
-}
-
-static void
-scsplash_saver(int show)
-{
- static int busy = FALSE;
- scr_stat *scp;
-
- if (busy)
- return;
- busy = TRUE;
-
- scp = cur_console;
- if (show) {
- if (!scrn_saver_failed) {
- if (!scrn_blanked)
- set_scrn_saver_mode(scp, -1, NULL, 0);
- switch (splash(scp->adp, TRUE)) {
- case 0: /* succeeded */
- scrn_blanked = TRUE;
- break;
- case EAGAIN: /* try later */
- restore_scrn_saver_mode(scp, FALSE);
- break;
- default:
- scrn_saver_failed = TRUE;
- scsplash_stick(FALSE);
- printf("scsplash_saver(): failed to put up the image\n");
- restore_scrn_saver_mode(scp, TRUE);
- break;
- }
- }
- } else if (!sticky_splash) {
- if (scrn_blanked && (splash(scp->adp, FALSE) == 0)) {
- restore_scrn_saver_mode(scp, TRUE);
- scrn_blanked = FALSE;
- }
- }
- busy = FALSE;
-}
-
-static int
-add_scrn_saver(void (*this_saver)(int))
-{
- int error;
-
- if (current_saver != none_saver) {
- error = remove_scrn_saver(current_saver);
- if (error)
- return error;
- }
-
- run_scrn_saver = FALSE;
- saver_mode = CONS_LKM_SAVER;
- current_saver = this_saver;
- return 0;
-}
-
-static int
-remove_scrn_saver(void (*this_saver)(int))
-{
- if (current_saver != this_saver)
- return EINVAL;
-
- /*
- * In order to prevent `current_saver' from being called by
- * the timeout routine `scrn_timer()' while we manipulate
- * the saver list, we shall set `current_saver' to `none_saver'
- * before stopping the current saver, rather than blocking by `splXX()'.
- */
- current_saver = none_saver;
- if (scrn_blanked)
- stop_scrn_saver(this_saver);
-
- return (scrn_blanked ? EBUSY : 0);
-}
-
-static int
-set_scrn_saver_mode(scr_stat *scp, int mode, u_char *pal, int border)
-{
- int s;
-
- /* assert(scp == cur_console) */
- s = spltty();
- scp->splash_save_mode = scp->mode;
- scp->splash_save_status = scp->status & (GRAPHICS_MODE | PIXEL_MODE);
- scp->status &= ~(GRAPHICS_MODE | PIXEL_MODE);
- scp->status |= (UNKNOWN_MODE | SAVER_RUNNING);
- splx(s);
- if (mode < 0)
- return 0;
- scp->mode = mode;
- if (set_mode(scp) == 0) {
- if (scp->adp->va_mode_flags & V_INFO_GRAPHICS)
- scp->status |= GRAPHICS_MODE;
- if (pal != NULL)
- load_palette(scp->adp, pal);
- set_border(scp, border);
- return 0;
- } else {
- s = spltty();
- scp->mode = scp->splash_save_mode;
- scp->status &= ~(UNKNOWN_MODE | SAVER_RUNNING);
- scp->status |= scp->splash_save_status;
- splx(s);
- return 1;
- }
-}
-
-static int
-restore_scrn_saver_mode(scr_stat *scp, int changemode)
-{
- int mode;
- int status;
- int s;
-
- /* assert(scp == cur_console) */
- s = spltty();
- mode = scp->mode;
- status = scp->status;
- scp->mode = scp->splash_save_mode;
- scp->status &= ~(UNKNOWN_MODE | SAVER_RUNNING);
- scp->status |= scp->splash_save_status;
- if (!changemode) {
- splx(s);
- return 0;
- }
- if (set_mode(scp) == 0) {
- load_palette(scp->adp, palette);
- splx(s);
- return 0;
- } else {
- scp->mode = mode;
- scp->status = status;
- splx(s);
- return 1;
- }
-}
-
-static void
-stop_scrn_saver(void (*saver)(int))
-{
- (*saver)(FALSE);
- run_scrn_saver = FALSE;
- /* the screen saver may have chosen not to stop after all... */
- if (scrn_blanked)
- return;
-
- mark_all(cur_console);
- if (delayed_next_scr)
- switch_scr(cur_console, delayed_next_scr - 1);
- wakeup((caddr_t)&scrn_blanked);
-}
-
-static int
-wait_scrn_saver_stop(void)
-{
- int error = 0;
-
- while (scrn_blanked) {
- run_scrn_saver = FALSE;
- error = tsleep((caddr_t)&scrn_blanked, PZERO | PCATCH, "scrsav", 0);
- run_scrn_saver = FALSE;
- if (error != ERESTART)
- break;
- }
- return error;
-}
-
-#endif /* NSPLASH */
-
-void
-sc_touch_scrn_saver(void)
-{
- scsplash_stick(FALSE);
- run_scrn_saver = FALSE;
-}
-
-void
-sc_clear_screen(scr_stat *scp)
-{
- move_crsr(scp, 0, 0);
- scp->cursor_oldpos = scp->cursor_pos;
- fillw(scp->term.cur_color | scr_map[0x20], scp->scr_buf,
- scp->xsize * scp->ysize);
- mark_all(scp);
- remove_cutmarking(scp);
-}
-
-static int
-switch_scr(scr_stat *scp, u_int next_scr)
-{
- /* delay switch if actively updating screen */
- if (scrn_blanked || write_in_progress || blink_in_progress) {
- delayed_next_scr = next_scr+1;
- sc_touch_scrn_saver();
- return 0;
- }
-
- if (switch_in_progress && (cur_console->proc != pfind(cur_console->pid)))
- switch_in_progress = FALSE;
-
- if (next_scr >= MAXCONS || switch_in_progress ||
- (cur_console->smode.mode == VT_AUTO && ISGRAPHSC(cur_console))) {
- do_bell(scp, BELL_PITCH, BELL_DURATION);
- return EINVAL;
- }
-
- /* is the wanted virtual console open ? */
- if (next_scr) {
- struct tty *tp = VIRTUAL_TTY(next_scr);
- if (!(tp->t_state & TS_ISOPEN)) {
- do_bell(scp, BELL_PITCH, BELL_DURATION);
- return EINVAL;
- }
- }
-
- switch_in_progress = TRUE;
- old_scp = cur_console;
- new_scp = console[next_scr];
- wakeup((caddr_t)&new_scp->smode);
- if (new_scp == old_scp) {
- switch_in_progress = FALSE;
- delayed_next_scr = FALSE;
- return 0;
- }
-
- /* has controlling process died? */
- if (old_scp->proc && (old_scp->proc != pfind(old_scp->pid)))
- old_scp->smode.mode = VT_AUTO;
- if (new_scp->proc && (new_scp->proc != pfind(new_scp->pid)))
- new_scp->smode.mode = VT_AUTO;
-
- /* check the modes and switch appropriately */
- if (old_scp->smode.mode == VT_PROCESS) {
- old_scp->status |= SWITCH_WAIT_REL;
- psignal(old_scp->proc, old_scp->smode.relsig);
- }
- else {
- exchange_scr();
- if (new_scp->smode.mode == VT_PROCESS) {
- new_scp->status |= SWITCH_WAIT_ACQ;
- psignal(new_scp->proc, new_scp->smode.acqsig);
- }
- else
- switch_in_progress = FALSE;
- }
- return 0;
-}
-
-static void
-exchange_scr(void)
-{
- /* save the current state of video and keyboard */
- move_crsr(old_scp, old_scp->xpos, old_scp->ypos);
- if (old_scp->kbd_mode == K_XLATE)
- save_kbd_state(old_scp);
-
- /* set up the video for the new screen */
- cur_console = new_scp;
- if (old_scp->mode != new_scp->mode || ISUNKNOWNSC(old_scp))
- set_mode(new_scp);
- move_crsr(new_scp, new_scp->xpos, new_scp->ypos);
- if (ISTEXTSC(new_scp) && (sc_flags & CHAR_CURSOR))
- set_destructive_cursor(new_scp);
- if (ISGRAPHSC(old_scp))
- load_palette(new_scp->adp, palette);
- set_border(new_scp, new_scp->border);
-
- /* set up the keyboard for the new screen */
- if (old_scp->kbd_mode != new_scp->kbd_mode)
- kbd_ioctl(kbd, KDSKBMODE, (caddr_t)&new_scp->kbd_mode);
- update_kbd_state(new_scp->status, LOCK_MASK);
-
- delayed_next_scr = FALSE;
- mark_all(new_scp);
-}
-
-static void
-scan_esc(scr_stat *scp, u_char c)
-{
- static u_char ansi_col[16] =
- {0, 4, 2, 6, 1, 5, 3, 7, 8, 12, 10, 14, 9, 13, 11, 15};
- int i, n;
- u_short *src, *dst, count;
-
- if (scp->term.esc == 1) { /* seen ESC */
- switch (c) {
-
- case '7': /* Save cursor position */
- scp->saved_xpos = scp->xpos;
- scp->saved_ypos = scp->ypos;
- break;
-
- case '8': /* Restore saved cursor position */
- if (scp->saved_xpos >= 0 && scp->saved_ypos >= 0)
- move_crsr(scp, scp->saved_xpos, scp->saved_ypos);
- break;
-
- case '[': /* Start ESC [ sequence */
- scp->term.esc = 2;
- scp->term.last_param = -1;
- for (i = scp->term.num_param; i < MAX_ESC_PAR; i++)
- scp->term.param[i] = 1;
- scp->term.num_param = 0;
- return;
-
- case 'M': /* Move cursor up 1 line, scroll if at top */
- if (scp->ypos > 0)
- move_crsr(scp, scp->xpos, scp->ypos - 1);
- else {
- bcopy(scp->scr_buf, scp->scr_buf + scp->xsize,
- (scp->ysize - 1) * scp->xsize * sizeof(u_short));
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->scr_buf, scp->xsize);
- mark_all(scp);
- }
- break;
-#if notyet
- case 'Q':
- scp->term.esc = 4;
- return;
-#endif
- case 'c': /* Clear screen & home */
- sc_clear_screen(scp);
- break;
-
- case '(': /* iso-2022: designate 94 character set to G0 */
- scp->term.esc = 5;
- return;
- }
- }
- else if (scp->term.esc == 2) { /* seen ESC [ */
- if (c >= '0' && c <= '9') {
- if (scp->term.num_param < MAX_ESC_PAR) {
- if (scp->term.last_param != scp->term.num_param) {
- scp->term.last_param = scp->term.num_param;
- scp->term.param[scp->term.num_param] = 0;
- }
- else
- scp->term.param[scp->term.num_param] *= 10;
- scp->term.param[scp->term.num_param] += c - '0';
- return;
- }
- }
- scp->term.num_param = scp->term.last_param + 1;
- switch (c) {
-
- case ';':
- if (scp->term.num_param < MAX_ESC_PAR)
- return;
- break;
-
- case '=':
- scp->term.esc = 3;
- scp->term.last_param = -1;
- for (i = scp->term.num_param; i < MAX_ESC_PAR; i++)
- scp->term.param[i] = 1;
- scp->term.num_param = 0;
- return;
-
- case 'A': /* up n rows */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos, scp->ypos - n);
- break;
-
- case 'B': /* down n rows */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos, scp->ypos + n);
- break;
-
- case 'C': /* right n columns */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos + n, scp->ypos);
- break;
-
- case 'D': /* left n columns */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos - n, scp->ypos);
- break;
-
- case 'E': /* cursor to start of line n lines down */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, 0, scp->ypos + n);
- break;
-
- case 'F': /* cursor to start of line n lines up */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, 0, scp->ypos - n);
- break;
-
- case 'f': /* Cursor move */
- case 'H':
- if (scp->term.num_param == 0)
- move_crsr(scp, 0, 0);
- else if (scp->term.num_param == 2)
- move_crsr(scp, scp->term.param[1] - 1, scp->term.param[0] - 1);
- break;
-
- case 'J': /* Clear all or part of display */
- if (scp->term.num_param == 0)
- n = 0;
- else
- n = scp->term.param[0];
- switch (n) {
- case 0: /* clear form cursor to end of display */
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->cursor_pos,
- scp->scr_buf + scp->xsize * scp->ysize - scp->cursor_pos);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, scp->xsize * scp->ysize - 1);
- remove_cutmarking(scp);
- break;
- case 1: /* clear from beginning of display to cursor */
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->scr_buf,
- scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, 0);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- remove_cutmarking(scp);
- break;
- case 2: /* clear entire display */
- fillw(scp->term.cur_color | scr_map[0x20], scp->scr_buf,
- scp->xsize * scp->ysize);
- mark_all(scp);
- remove_cutmarking(scp);
- break;
- }
- break;
-
- case 'K': /* Clear all or part of line */
- if (scp->term.num_param == 0)
- n = 0;
- else
- n = scp->term.param[0];
- switch (n) {
- case 0: /* clear form cursor to end of line */
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->cursor_pos,
- scp->xsize - scp->xpos);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf +
- scp->xsize - 1 - scp->xpos);
- break;
- case 1: /* clear from beginning of line to cursor */
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->cursor_pos - scp->xpos,
- scp->xpos + 1);
- mark_for_update(scp, scp->ypos * scp->xsize);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- break;
- case 2: /* clear entire line */
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->cursor_pos - scp->xpos,
- scp->xsize);
- mark_for_update(scp, scp->ypos * scp->xsize);
- mark_for_update(scp, (scp->ypos + 1) * scp->xsize - 1);
- break;
- }
- break;
-
- case 'L': /* Insert n lines */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->ysize - scp->ypos)
- n = scp->ysize - scp->ypos;
- src = scp->scr_buf + scp->ypos * scp->xsize;
- dst = src + n * scp->xsize;
- count = scp->ysize - (scp->ypos + n);
- bcopy(src, dst, count * scp->xsize * sizeof(u_short));
- fillw(scp->term.cur_color | scr_map[0x20], src,
- n * scp->xsize);
- mark_for_update(scp, scp->ypos * scp->xsize);
- mark_for_update(scp, scp->xsize * scp->ysize - 1);
- break;
-
- case 'M': /* Delete n lines */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->ysize - scp->ypos)
- n = scp->ysize - scp->ypos;
- dst = scp->scr_buf + scp->ypos * scp->xsize;
- src = dst + n * scp->xsize;
- count = scp->ysize - (scp->ypos + n);
- bcopy(src, dst, count * scp->xsize * sizeof(u_short));
- src = dst + count * scp->xsize;
- fillw(scp->term.cur_color | scr_map[0x20], src,
- n * scp->xsize);
- mark_for_update(scp, scp->ypos * scp->xsize);
- mark_for_update(scp, scp->xsize * scp->ysize - 1);
- break;
-
- case 'P': /* Delete n chars */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->xsize - scp->xpos)
- n = scp->xsize - scp->xpos;
- dst = scp->cursor_pos;
- src = dst + n;
- count = scp->xsize - (scp->xpos + n);
- bcopy(src, dst, count * sizeof(u_short));
- src = dst + count;
- fillw(scp->term.cur_color | scr_map[0x20], src, n);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf + n + count - 1);
- break;
-
- case '@': /* Insert n chars */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->xsize - scp->xpos)
- n = scp->xsize - scp->xpos;
- src = scp->cursor_pos;
- dst = src + n;
- count = scp->xsize - (scp->xpos + n);
- bcopy(src, dst, count * sizeof(u_short));
- fillw(scp->term.cur_color | scr_map[0x20], src, n);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf + n + count - 1);
- break;
-
- case 'S': /* scroll up n lines */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->ysize)
- n = scp->ysize;
- bcopy(scp->scr_buf + (scp->xsize * n),
- scp->scr_buf,
- scp->xsize * (scp->ysize - n) * sizeof(u_short));
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->scr_buf + scp->xsize * (scp->ysize - n),
- scp->xsize * n);
- mark_all(scp);
- break;
-
- case 'T': /* scroll down n lines */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->ysize)
- n = scp->ysize;
- bcopy(scp->scr_buf,
- scp->scr_buf + (scp->xsize * n),
- scp->xsize * (scp->ysize - n) *
- sizeof(u_short));
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->scr_buf, scp->xsize * n);
- mark_all(scp);
- break;
-
- case 'X': /* erase n characters in line */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if (n > scp->xsize - scp->xpos)
- n = scp->xsize - scp->xpos;
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->cursor_pos, n);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf + n - 1);
- break;
-
- case 'Z': /* move n tabs backwards */
- n = scp->term.param[0]; if (n < 1) n = 1;
- if ((i = scp->xpos & 0xf8) == scp->xpos)
- i -= 8*n;
- else
- i -= 8*(n-1);
- if (i < 0)
- i = 0;
- move_crsr(scp, i, scp->ypos);
- break;
-
- case '`': /* move cursor to column n */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, n - 1, scp->ypos);
- break;
-
- case 'a': /* move cursor n columns to the right */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos + n, scp->ypos);
- break;
-
- case 'd': /* move cursor to row n */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos, n - 1);
- break;
-
- case 'e': /* move cursor n rows down */
- n = scp->term.param[0]; if (n < 1) n = 1;
- move_crsr(scp, scp->xpos, scp->ypos + n);
- break;
-
- case 'm': /* change attribute */
- if (scp->term.num_param == 0) {
- scp->term.attr_mask = NORMAL_ATTR;
- scp->term.cur_attr =
- scp->term.cur_color = scp->term.std_color;
- break;
- }
- for (i = 0; i < scp->term.num_param; i++) {
- switch (n = scp->term.param[i]) {
- case 0: /* back to normal */
- scp->term.attr_mask = NORMAL_ATTR;
- scp->term.cur_attr =
- scp->term.cur_color = scp->term.std_color;
- break;
- case 1: /* bold */
- scp->term.attr_mask |= BOLD_ATTR;
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 4: /* underline */
- scp->term.attr_mask |= UNDERLINE_ATTR;
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 5: /* blink */
- scp->term.attr_mask |= BLINK_ATTR;
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 7: /* reverse video */
- scp->term.attr_mask |= REVERSE_ATTR;
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 30: case 31: /* set fg color */
- case 32: case 33: case 34:
- case 35: case 36: case 37:
- scp->term.attr_mask |= FOREGROUND_CHANGED;
- scp->term.cur_color =
- (scp->term.cur_color&0xF000) | (ansi_col[(n-30)&7]<<8);
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 40: case 41: /* set bg color */
- case 42: case 43: case 44:
- case 45: case 46: case 47:
- scp->term.attr_mask |= BACKGROUND_CHANGED;
- scp->term.cur_color =
- (scp->term.cur_color&0x0F00) | (ansi_col[(n-40)&7]<<12);
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- }
- }
- break;
-
- case 's': /* Save cursor position */
- scp->saved_xpos = scp->xpos;
- scp->saved_ypos = scp->ypos;
- break;
-
- case 'u': /* Restore saved cursor position */
- if (scp->saved_xpos >= 0 && scp->saved_ypos >= 0)
- move_crsr(scp, scp->saved_xpos, scp->saved_ypos);
- break;
-
- case 'x':
- if (scp->term.num_param == 0)
- n = 0;
- else
- n = scp->term.param[0];
- switch (n) {
- case 0: /* reset attributes */
- scp->term.attr_mask = NORMAL_ATTR;
- scp->term.cur_attr =
- scp->term.cur_color = scp->term.std_color =
- current_default->std_color;
- scp->term.rev_color = current_default->rev_color;
- break;
- case 1: /* set ansi background */
- scp->term.attr_mask &= ~BACKGROUND_CHANGED;
- scp->term.cur_color = scp->term.std_color =
- (scp->term.std_color & 0x0F00) |
- (ansi_col[(scp->term.param[1])&0x0F]<<12);
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 2: /* set ansi foreground */
- scp->term.attr_mask &= ~FOREGROUND_CHANGED;
- scp->term.cur_color = scp->term.std_color =
- (scp->term.std_color & 0xF000) |
- (ansi_col[(scp->term.param[1])&0x0F]<<8);
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 3: /* set ansi attribute directly */
- scp->term.attr_mask &= ~(FOREGROUND_CHANGED|BACKGROUND_CHANGED);
- scp->term.cur_color = scp->term.std_color =
- (scp->term.param[1]&0xFF)<<8;
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 5: /* set ansi reverse video background */
- scp->term.rev_color =
- (scp->term.rev_color & 0x0F00) |
- (ansi_col[(scp->term.param[1])&0x0F]<<12);
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 6: /* set ansi reverse video foreground */
- scp->term.rev_color =
- (scp->term.rev_color & 0xF000) |
- (ansi_col[(scp->term.param[1])&0x0F]<<8);
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- case 7: /* set ansi reverse video directly */
- scp->term.rev_color =
- (scp->term.param[1]&0xFF)<<8;
- scp->term.cur_attr = mask2attr(&scp->term);
- break;
- }
- break;
-
- case 'z': /* switch to (virtual) console n */
- if (scp->term.num_param == 1)
- switch_scr(scp, scp->term.param[0]);
- break;
- }
- }
- else if (scp->term.esc == 3) { /* seen ESC [0-9]+ = */
- if (c >= '0' && c <= '9') {
- if (scp->term.num_param < MAX_ESC_PAR) {
- if (scp->term.last_param != scp->term.num_param) {
- scp->term.last_param = scp->term.num_param;
- scp->term.param[scp->term.num_param] = 0;
- }
- else
- scp->term.param[scp->term.num_param] *= 10;
- scp->term.param[scp->term.num_param] += c - '0';
- return;
- }
- }
- scp->term.num_param = scp->term.last_param + 1;
- switch (c) {
-
- case ';':
- if (scp->term.num_param < MAX_ESC_PAR)
- return;
- break;
-
- case 'A': /* set display border color */
- if (scp->term.num_param == 1) {
- scp->border=scp->term.param[0] & 0xff;
- if (scp == cur_console)
- set_border(cur_console, scp->border);
- }
- break;
-
- case 'B': /* set bell pitch and duration */
- if (scp->term.num_param == 2) {
- scp->bell_pitch = scp->term.param[0];
- scp->bell_duration = scp->term.param[1];
- }
- break;
-
- case 'C': /* set cursor type & shape */
- if (scp->term.num_param == 1) {
- if (scp->term.param[0] & 0x01)
- sc_flags |= BLINK_CURSOR;
- else
- sc_flags &= ~BLINK_CURSOR;
- if ((scp->term.param[0] & 0x02)
- && ISFONTAVAIL(scp->adp->va_flags))
- sc_flags |= CHAR_CURSOR;
- else
- sc_flags &= ~CHAR_CURSOR;
- }
- else if (scp->term.num_param == 2) {
- scp->cursor_start = scp->term.param[0] & 0x1F;
- scp->cursor_end = scp->term.param[1] & 0x1F;
- }
- /*
- * The cursor shape is global property; all virtual consoles
- * are affected. Update the cursor in the current console...
- */
- if (!ISGRAPHSC(cur_console)) {
- i = spltty();
- remove_cursor_image(cur_console);
- if (sc_flags & CHAR_CURSOR)
- set_destructive_cursor(cur_console);
- draw_cursor_image(cur_console);
- splx(i);
- }
- break;
-
- case 'F': /* set ansi foreground */
- if (scp->term.num_param == 1) {
- scp->term.attr_mask &= ~FOREGROUND_CHANGED;
- scp->term.cur_color = scp->term.std_color =
- (scp->term.std_color & 0xF000)
- | ((scp->term.param[0] & 0x0F) << 8);
- scp->term.cur_attr = mask2attr(&scp->term);
- }
- break;
-
- case 'G': /* set ansi background */
- if (scp->term.num_param == 1) {
- scp->term.attr_mask &= ~BACKGROUND_CHANGED;
- scp->term.cur_color = scp->term.std_color =
- (scp->term.std_color & 0x0F00)
- | ((scp->term.param[0] & 0x0F) << 12);
- scp->term.cur_attr = mask2attr(&scp->term);
- }
- break;
-
- case 'H': /* set ansi reverse video foreground */
- if (scp->term.num_param == 1) {
- scp->term.rev_color =
- (scp->term.rev_color & 0xF000)
- | ((scp->term.param[0] & 0x0F) << 8);
- scp->term.cur_attr = mask2attr(&scp->term);
- }
- break;
-
- case 'I': /* set ansi reverse video background */
- if (scp->term.num_param == 1) {
- scp->term.rev_color =
- (scp->term.rev_color & 0x0F00)
- | ((scp->term.param[0] & 0x0F) << 12);
- scp->term.cur_attr = mask2attr(&scp->term);
- }
- break;
- }
- }
-#if notyet
- else if (scp->term.esc == 4) { /* seen ESC Q */
- /* to be filled */
- }
-#endif
- else if (scp->term.esc == 5) { /* seen ESC ( */
- switch (c) {
- case 'B': /* iso-2022: desginate ASCII into G0 */
- break;
- /* other items to be filled */
- default:
- break;
- }
- }
- scp->term.esc = 0;
-}
-
-static void
-ansi_put(scr_stat *scp, u_char *buf, int len)
-{
- u_char *ptr = buf;
-
- /* make screensaver happy */
- if (!sticky_splash && scp == cur_console)
- run_scrn_saver = FALSE;
-
- write_in_progress++;
-outloop:
- if (scp->term.esc) {
- scan_esc(scp, *ptr++);
- len--;
- }
- else if (PRINTABLE(*ptr)) { /* Print only printables */
- int cnt = len <= (scp->xsize-scp->xpos) ? len : (scp->xsize-scp->xpos);
- u_short cur_attr = scp->term.cur_attr;
- u_short *cursor_pos = scp->cursor_pos;
- do {
- /*
- * gcc-2.6.3 generates poor (un)sign extension code. Casting the
- * pointers in the following to volatile should have no effect,
- * but in fact speeds up this inner loop from 26 to 18 cycles
- * (+ cache misses) on i486's.
- */
-#define UCVP(ucp) ((u_char volatile *)(ucp))
- *cursor_pos++ = UCVP(scr_map)[*UCVP(ptr)] | cur_attr;
- ptr++;
- cnt--;
- } while (cnt && PRINTABLE(*ptr));
- len -= (cursor_pos - scp->cursor_pos);
- scp->xpos += (cursor_pos - scp->cursor_pos);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- mark_for_update(scp, cursor_pos - scp->scr_buf);
- scp->cursor_pos = cursor_pos;
- if (scp->xpos >= scp->xsize) {
- scp->xpos = 0;
- scp->ypos++;
- }
- }
- else {
- switch(*ptr) {
- case 0x07:
- do_bell(scp, scp->bell_pitch, scp->bell_duration);
- break;
-
- case 0x08: /* non-destructive backspace */
- if (scp->cursor_pos > scp->scr_buf) {
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- scp->cursor_pos--;
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- if (scp->xpos > 0)
- scp->xpos--;
- else {
- scp->xpos += scp->xsize - 1;
- scp->ypos--;
- }
- }
- break;
-
- case 0x09: /* non-destructive tab */
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- scp->cursor_pos += (8 - scp->xpos % 8u);
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- if ((scp->xpos += (8 - scp->xpos % 8u)) >= scp->xsize) {
- scp->xpos = 0;
- scp->ypos++;
- }
- break;
-
- case 0x0a: /* newline, same pos */
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- scp->cursor_pos += scp->xsize;
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- scp->ypos++;
- break;
-
- case 0x0c: /* form feed, clears screen */
- sc_clear_screen(scp);
- break;
-
- case 0x0d: /* return, return to pos 0 */
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- scp->cursor_pos -= scp->xpos;
- mark_for_update(scp, scp->cursor_pos - scp->scr_buf);
- scp->xpos = 0;
- break;
-
- case 0x1b: /* start escape sequence */
- scp->term.esc = 1;
- scp->term.num_param = 0;
- break;
- }
- ptr++; len--;
- }
- /* do we have to scroll ?? */
- if (scp->cursor_pos >= scp->scr_buf + scp->ysize * scp->xsize) {
- remove_cutmarking(scp);
- if (scp->history != NULL) {
- bcopy(scp->scr_buf, scp->history_head,
- scp->xsize * sizeof(u_short));
- scp->history_head += scp->xsize;
- if (scp->history_head + scp->xsize >
- scp->history + scp->history_size)
- scp->history_head = scp->history;
- }
- bcopy(scp->scr_buf + scp->xsize, scp->scr_buf,
- scp->xsize * (scp->ysize - 1) * sizeof(u_short));
- fillw(scp->term.cur_color | scr_map[0x20],
- scp->scr_buf + scp->xsize * (scp->ysize - 1),
- scp->xsize);
- scp->cursor_pos -= scp->xsize;
- scp->ypos--;
- mark_all(scp);
- }
- if (len)
- goto outloop;
- write_in_progress--;
- if (delayed_next_scr)
- switch_scr(scp, delayed_next_scr - 1);
-}
-
-static void
-scinit(void)
-{
- video_adapter_t *adp;
- int col;
- int row;
- u_int i;
-
- if (init_done != COLD)
- return;
- init_done = WARM;
-
- get_bios_values();
-
- /* extract the hardware cursor location and hide the cursor for now */
- adp = vid_get_adapter(adapter);
- (*vidsw[adapter]->read_hw_cursor)(adp, &col, &row);
- (*vidsw[adapter]->set_hw_cursor)(adp, -1, -1);
-
- /* set up the first console */
- current_default = &user_default;
- console[0] = &main_console;
- init_scp(console[0]);
- cur_console = console[0];
-
- /* copy screen to temporary buffer */
- if (ISTEXTSC(console[0]))
- bcopy_fromio(console[0]->adp->va_window, sc_buffer,
- console[0]->xsize * console[0]->ysize * sizeof(u_short));
-
- console[0]->scr_buf = console[0]->mouse_pos = console[0]->mouse_oldpos
- = sc_buffer;
- if (col >= console[0]->xsize)
- col = 0;
- if (row >= console[0]->ysize)
- row = console[0]->ysize - 1;
- console[0]->xpos = col;
- console[0]->ypos = row;
- console[0]->cursor_pos = console[0]->cursor_oldpos =
- sc_buffer + row*console[0]->xsize + col;
- console[0]->cursor_saveunder = *console[0]->cursor_pos;
- for (i=1; i<MAXCONS; i++)
- console[i] = NULL;
- kernel_console.esc = 0;
- kernel_console.attr_mask = NORMAL_ATTR;
- kernel_console.cur_attr =
- kernel_console.cur_color = kernel_console.std_color =
- kernel_default.std_color;
- kernel_console.rev_color = kernel_default.rev_color;
-
- /* initialize mapscrn arrays to a one to one map */
- for (i=0; i<sizeof(scr_map); i++) {
- scr_map[i] = scr_rmap[i] = i;
- }
-
- /* Save font and palette */
- if (ISFONTAVAIL(cur_console->adp->va_flags)) {
- if (fonts_loaded & FONT_16) {
- copy_font(cur_console, LOAD, 16, font_16);
- } else {
- copy_font(cur_console, SAVE, 16, font_16);
- fonts_loaded = FONT_16;
- set_destructive_cursor(cur_console);
- }
- /*
- * FONT KLUDGE
- * Always use the font page #0. XXX
- */
- (*vidsw[cur_console->ad]->show_font)(cur_console->adp, 0);
- }
- save_palette(cur_console->adp, palette);
-
-#if NSPLASH > 0
- /* we are ready to put up the splash image! */
- splash_init(cur_console->adp, scsplash_callback);
-#endif
-}
-
-static void
-scshutdown(int howto, void *arg)
-{
- sc_touch_scrn_saver();
- if (!cold && cur_console->smode.mode == VT_AUTO
- && console[0]->smode.mode == VT_AUTO)
- switch_scr(cur_console, 0);
- shutdown_in_progress = TRUE;
-}
-
-int
-sc_clean_up(scr_stat *scp)
-{
- int error;
-
- sc_touch_scrn_saver();
- if ((error = wait_scrn_saver_stop()))
- return error;
- scp->status &= ~MOUSE_VISIBLE;
- remove_cutmarking(scp);
- return 0;
-}
-
-void
-sc_alloc_scr_buffer(scr_stat *scp, int wait, int clear)
-{
- if (scp->scr_buf)
- free(scp->scr_buf, M_DEVBUF);
- scp->scr_buf = (u_short *)malloc(scp->xsize*scp->ysize*sizeof(u_short),
- M_DEVBUF, (wait) ? M_WAITOK : M_NOWAIT);
-
- if (clear) {
- /* clear the screen and move the text cursor to the top-left position */
- sc_clear_screen(scp);
- } else {
- /* retain the current cursor position, but adjust pointers */
- move_crsr(scp, scp->xpos, scp->ypos);
- scp->cursor_oldpos = scp->cursor_pos;
- }
-
- /* move the mouse cursor at the center of the screen */
- sc_move_mouse(scp, scp->xpixel / 2, scp->ypixel / 2);
-}
-
-void
-sc_alloc_cut_buffer(scr_stat *scp, int wait)
-{
- if ((cut_buffer == NULL)
- || (cut_buffer_size < scp->xsize * scp->ysize + 1)) {
- if (cut_buffer != NULL)
- free(cut_buffer, M_DEVBUF);
- cut_buffer_size = scp->xsize * scp->ysize + 1;
- cut_buffer = (u_char *)malloc(cut_buffer_size,
- M_DEVBUF, (wait) ? M_WAITOK : M_NOWAIT);
- if (cut_buffer != NULL)
- cut_buffer[0] = '\0';
- }
-}
-
-void
-sc_alloc_history_buffer(scr_stat *scp, int lines, int extra, int wait)
-{
- u_short *usp;
-
- if (lines < scp->ysize)
- lines = scp->ysize;
-
- usp = scp->history;
- scp->history = NULL;
- if (usp != NULL) {
- free(usp, M_DEVBUF);
- if (extra > 0)
- extra_history_size += extra;
- }
-
- scp->history_size = lines * scp->xsize;
- if (lines > imax(sc_history_size, scp->ysize))
- extra_history_size -= lines - imax(sc_history_size, scp->ysize);
- usp = (u_short *)malloc(scp->history_size * sizeof(u_short),
- M_DEVBUF, (wait) ? M_WAITOK : M_NOWAIT);
- if (usp != NULL)
- bzero(usp, scp->history_size * sizeof(u_short));
- scp->history_head = scp->history_pos = usp;
- scp->history = usp;
-}
-
-static scr_stat
-*alloc_scp()
-{
- scr_stat *scp;
-
- scp = (scr_stat *)malloc(sizeof(scr_stat), M_DEVBUF, M_WAITOK);
- init_scp(scp);
- sc_alloc_scr_buffer(scp, TRUE, TRUE);
- if (ISMOUSEAVAIL(scp->adp->va_flags))
- sc_alloc_cut_buffer(scp, TRUE);
- sc_alloc_history_buffer(scp, sc_history_size, 0, TRUE);
-/* SOS
- if (scp->adp->va_flags & V_ADP_MODECHANGE)
- set_mode(scp);
-*/
- sc_clear_screen(scp);
- scp->cursor_saveunder = *scp->cursor_pos;
- return scp;
-}
-
-static void
-init_scp(scr_stat *scp)
-{
- video_info_t info;
-
- scp->ad = adapter;
- scp->adp = vid_get_adapter(scp->ad);
- (*vidsw[scp->ad]->get_info)(scp->adp, initial_video_mode, &info);
-
- scp->status = 0;
- scp->mode = initial_video_mode;
- scp->scr_buf = NULL;
- if (info.vi_flags & V_INFO_GRAPHICS) {
- scp->status |= GRAPHICS_MODE;
- scp->xpixel = info.vi_width;
- scp->ypixel = info.vi_height;
- scp->xsize = info.vi_width/8;
- scp->ysize = info.vi_height/info.vi_cheight;
- scp->font_size = FONT_NONE;
- } else {
- scp->xsize = info.vi_width;
- scp->ysize = info.vi_height;
- scp->xpixel = scp->xsize*8;
- scp->ypixel = scp->ysize*info.vi_cheight;
- scp->font_size = info.vi_cheight;
- }
- scp->xoff = scp->yoff = 0;
- scp->xpos = scp->ypos = 0;
- scp->saved_xpos = scp->saved_ypos = -1;
- scp->start = scp->xsize * scp->ysize;
- scp->end = 0;
- scp->term.esc = 0;
- scp->term.attr_mask = NORMAL_ATTR;
- scp->term.cur_attr =
- scp->term.cur_color = scp->term.std_color =
- current_default->std_color;
- scp->term.rev_color = current_default->rev_color;
- scp->border = BG_BLACK;
- scp->cursor_start = bios_value.cursor_start;
- scp->cursor_end = bios_value.cursor_end;
- scp->mouse_xpos = scp->xsize*8/2;
- scp->mouse_ypos = scp->ysize*scp->font_size/2;
- scp->mouse_cut_start = scp->mouse_cut_end = NULL;
- scp->mouse_signal = 0;
- scp->mouse_pid = 0;
- scp->mouse_proc = NULL;
- scp->kbd_mode = K_XLATE;
- scp->bell_pitch = BELL_PITCH;
- scp->bell_duration = BELL_DURATION;
- scp->status |= (bios_value.shift_state & 0x20) ? NLKED : 0;
- scp->status |= CURSOR_ENABLED;
- scp->pid = 0;
- scp->proc = NULL;
- scp->smode.mode = VT_AUTO;
- scp->history_head = scp->history_pos = scp->history = NULL;
- scp->history_size = imax(sc_history_size, scp->ysize) * scp->xsize;
-}
-
-static void
-get_bios_values(void)
-{
- bios_value.cursor_start = *(u_int8_t *)pa_to_va(0x461);
- bios_value.cursor_end = *(u_int8_t *)pa_to_va(0x460);
- bios_value.shift_state = *(u_int8_t *)pa_to_va(0x417);
-}
-
-static void
-history_to_screen(scr_stat *scp)
-{
- int i;
-
- for (i=0; i<scp->ysize; i++)
- bcopy(scp->history + (((scp->history_pos - scp->history) +
- scp->history_size-((i+1)*scp->xsize))%scp->history_size),
- scp->scr_buf + (scp->xsize * (scp->ysize-1 - i)),
- scp->xsize * sizeof(u_short));
- mark_all(scp);
-}
-
-static int
-history_up_line(scr_stat *scp)
-{
- if (WRAPHIST(scp, scp->history_pos, -(scp->xsize*scp->ysize)) !=
- scp->history_head) {
- scp->history_pos = WRAPHIST(scp, scp->history_pos, -scp->xsize);
- history_to_screen(scp);
- return 0;
- }
- else
- return -1;
-}
-
-static int
-history_down_line(scr_stat *scp)
-{
- if (scp->history_pos != scp->history_head) {
- scp->history_pos = WRAPHIST(scp, scp->history_pos, scp->xsize);
- history_to_screen(scp);
- return 0;
- }
- else
- return -1;
-}
-
-/*
- * scgetc(flags) - get character from keyboard.
- * If flags & SCGETC_CN, then avoid harmful side effects.
- * If flags & SCGETC_NONBLOCK, then wait until a key is pressed, else
- * return NOKEY if there is nothing there.
- */
-static u_int
-scgetc(keyboard_t *kbd, u_int flags)
-{
- u_int c;
- int this_scr;
- int f;
- int i;
-
- if (kbd == NULL)
- return NOKEY;
-
-next_code:
- /* I don't like this, but... XXX */
- if (flags & SCGETC_CN)
- sccnupdate(cur_console);
- /* first see if there is something in the keyboard port */
- for (;;) {
- c = kbd_read_char(kbd, !(flags & SCGETC_NONBLOCK));
- if (c == ERRKEY) {
- if (!(flags & SCGETC_CN))
- do_bell(cur_console, BELL_PITCH, BELL_DURATION);
- } else if (c == NOKEY)
- return c;
- else
- break;
- }
-
- /* make screensaver happy */
- if (!(c & RELKEY))
- sc_touch_scrn_saver();
-
-#ifdef __i386__
- if (!(flags & SCGETC_CN))
- /* do the /dev/random device a favour */
- add_keyboard_randomness(c);
-#endif
-
- if (cur_console->kbd_mode != K_XLATE)
- return KEYCHAR(c);
-
- /* if scroll-lock pressed allow history browsing */
- if (!ISGRAPHSC(cur_console) && cur_console->history
- && cur_console->status & SLKED) {
-
- cur_console->status &= ~CURSOR_ENABLED;
- if (!(cur_console->status & BUFFER_SAVED)) {
- cur_console->status |= BUFFER_SAVED;
- cur_console->history_save = cur_console->history_head;
-
- /* copy screen into top of history buffer */
- for (i=0; i<cur_console->ysize; i++) {
- bcopy(cur_console->scr_buf + (cur_console->xsize * i),
- cur_console->history_head,
- cur_console->xsize * sizeof(u_short));
- cur_console->history_head += cur_console->xsize;
- if (cur_console->history_head + cur_console->xsize >
- cur_console->history + cur_console->history_size)
- cur_console->history_head=cur_console->history;
- }
- cur_console->history_pos = cur_console->history_head;
- history_to_screen(cur_console);
- }
- switch (c) {
- /* FIXME: key codes */
- case SPCLKEY | FKEY | F(49): /* home key */
- remove_cutmarking(cur_console);
- cur_console->history_pos = cur_console->history_head;
- history_to_screen(cur_console);
- goto next_code;
-
- case SPCLKEY | FKEY | F(57): /* end key */
- remove_cutmarking(cur_console);
- cur_console->history_pos =
- WRAPHIST(cur_console, cur_console->history_head,
- cur_console->xsize*cur_console->ysize);
- history_to_screen(cur_console);
- goto next_code;
-
- case SPCLKEY | FKEY | F(50): /* up arrow key */
- remove_cutmarking(cur_console);
- if (history_up_line(cur_console))
- if (!(flags & SCGETC_CN))
- do_bell(cur_console, BELL_PITCH, BELL_DURATION);
- goto next_code;
-
- case SPCLKEY | FKEY | F(58): /* down arrow key */
- remove_cutmarking(cur_console);
- if (history_down_line(cur_console))
- if (!(flags & SCGETC_CN))
- do_bell(cur_console, BELL_PITCH, BELL_DURATION);
- goto next_code;
-
- case SPCLKEY | FKEY | F(51): /* page up key */
- remove_cutmarking(cur_console);
- for (i=0; i<cur_console->ysize; i++)
- if (history_up_line(cur_console)) {
- if (!(flags & SCGETC_CN))
- do_bell(cur_console, BELL_PITCH, BELL_DURATION);
- break;
- }
- goto next_code;
-
- case SPCLKEY | FKEY | F(59): /* page down key */
- remove_cutmarking(cur_console);
- for (i=0; i<cur_console->ysize; i++)
- if (history_down_line(cur_console)) {
- if (!(flags & SCGETC_CN))
- do_bell(cur_console, BELL_PITCH, BELL_DURATION);
- break;
- }
- goto next_code;
- }
- }
-
- /*
- * Process and consume special keys here. Return a plain char code
- * or a char code with the META flag or a function key code.
- */
- if (c & RELKEY) {
- /* key released */
- /* goto next_code */
- } else {
- /* key pressed */
- if (c & SPCLKEY) {
- c &= ~SPCLKEY;
- switch (KEYCHAR(c)) {
- /* LOCKING KEYS */
- case NLK: case CLK: case ALK:
- break;
- case SLK:
- kbd_ioctl(kbd, KDGKBSTATE, (caddr_t)&f);
- if (f & SLKED) {
- cur_console->status |= SLKED;
- } else {
- if (cur_console->status & SLKED) {
- cur_console->status &= ~SLKED;
- if (cur_console->status & BUFFER_SAVED) {
- int i;
- u_short *ptr = cur_console->history_save;
-
- for (i=0; i<cur_console->ysize; i++) {
- bcopy(ptr,
- cur_console->scr_buf +
- (cur_console->xsize*i),
- cur_console->xsize * sizeof(u_short));
- ptr += cur_console->xsize;
- if (ptr + cur_console->xsize >
- cur_console->history +
- cur_console->history_size)
- ptr = cur_console->history;
- }
- cur_console->status &= ~BUFFER_SAVED;
- cur_console->history_head=cur_console->history_save;
- cur_console->status |= CURSOR_ENABLED;
- mark_all(cur_console);
- }
- scstart(VIRTUAL_TTY(get_scr_num()));
- }
- }
- break;
-
- /* NON-LOCKING KEYS */
- case NOP:
- case LSH: case RSH: case LCTR: case RCTR:
- case LALT: case RALT: case ASH: case META:
- break;
-
- case BTAB:
- return c;
-
- case SPSC:
- /* force activatation/deactivation of the screen saver */
- if (!scrn_blanked) {
- run_scrn_saver = TRUE;
- scrn_time_stamp -= scrn_blank_time;
- }
-#if NSPLASH > 0
- if (cold) {
- /*
- * While devices are being probed, the screen saver need
- * to be invoked explictly. XXX
- */
- if (scrn_blanked) {
- scsplash_stick(FALSE);
- stop_scrn_saver(current_saver);
- } else {
- if (!ISGRAPHSC(cur_console)) {
- scsplash_stick(TRUE);
- (*current_saver)(TRUE);
- }
- }
- }
-#endif /* NSPLASH */
- break;
-
- case RBT:
-#ifndef SC_DISABLE_REBOOT
- shutdown_nice();
-#endif
- break;
-
-#if NAPM > 0
- case SUSP:
- apm_suspend(PMST_SUSPEND);
- break;
- case STBY:
- apm_suspend(PMST_STANDBY);
- break;
-#else
- case SUSP:
- case STBY:
- break;
-#endif
-
- case DBG:
-#ifdef DDB /* try to switch to console 0 */
- /*
- * TRY to make sure the screen saver is stopped,
- * and the screen is updated before switching to
- * the vty0.
- */
- scrn_timer((void *)FALSE);
- if (cur_console->smode.mode == VT_AUTO &&
- console[0]->smode.mode == VT_AUTO)
- switch_scr(cur_console, 0);
- Debugger("manual escape to debugger");
-#else
- printf("No debugger in kernel\n");
-#endif
- break;
-
- case NEXT:
- this_scr = get_scr_num();
- for (i = this_scr + 1; i != this_scr; i = (i + 1)%MAXCONS) {
- struct tty *tp = VIRTUAL_TTY(i);
- if (tp->t_state & TS_ISOPEN) {
- switch_scr(cur_console, i);
- break;
- }
- }
- break;
-
- default:
- if (KEYCHAR(c) >= F_SCR && KEYCHAR(c) <= L_SCR) {
- switch_scr(cur_console, KEYCHAR(c) - F_SCR);
- break;
- }
- /* assert(c & FKEY) */
- return c;
- }
- /* goto next_code */
- } else {
- /* regular keys (maybe MKEY is set) */
- return c;
- }
- }
-
- goto next_code;
-}
-
-int
-scmmap(dev_t dev, vm_offset_t offset, int nprot)
-{
- struct tty *tp;
- struct scr_stat *scp;
-
- tp = scdevtotty(dev);
- if (!tp)
- return ENXIO;
- scp = sc_get_scr_stat(tp->t_dev);
- return (*vidsw[scp->ad]->mmap)(scp->adp, offset);
-}
-
-/*
- * Calculate hardware attributes word using logical attributes mask and
- * hardware colors
- */
-
-static int
-mask2attr(struct term_stat *term)
-{
- int attr, mask = term->attr_mask;
-
- if (mask & REVERSE_ATTR) {
- attr = ((mask & FOREGROUND_CHANGED) ?
- ((term->cur_color & 0xF000) >> 4) :
- (term->rev_color & 0x0F00)) |
- ((mask & BACKGROUND_CHANGED) ?
- ((term->cur_color & 0x0F00) << 4) :
- (term->rev_color & 0xF000));
- } else
- attr = term->cur_color;
-
- /* XXX: underline mapping for Hercules adapter can be better */
- if (mask & (BOLD_ATTR | UNDERLINE_ATTR))
- attr ^= 0x0800;
- if (mask & BLINK_ATTR)
- attr ^= 0x8000;
-
- return attr;
-}
-
-static int
-save_kbd_state(scr_stat *scp)
-{
- int state;
- int error;
-
- error = kbd_ioctl(kbd, KDGKBSTATE, (caddr_t)&state);
- if (error == ENOIOCTL)
- error = ENODEV;
- if (error == 0) {
- scp->status &= ~LOCK_MASK;
- scp->status |= state;
- }
- return error;
-}
-
-static int
-update_kbd_state(int new_bits, int mask)
-{
- int state;
- int error;
-
- if (mask != LOCK_MASK) {
- error = kbd_ioctl(kbd, KDGKBSTATE, (caddr_t)&state);
- if (error == ENOIOCTL)
- error = ENODEV;
- if (error)
- return error;
- state &= ~mask;
- state |= new_bits & mask;
- } else {
- state = new_bits & LOCK_MASK;
- }
- error = kbd_ioctl(kbd, KDSKBSTATE, (caddr_t)&state);
- if (error == ENOIOCTL)
- error = ENODEV;
- return error;
-}
-
-static int
-update_kbd_leds(int which)
-{
- int error;
-
- which &= LOCK_MASK;
- error = kbd_ioctl(kbd, KDSETLED, (caddr_t)&which);
- if (error == ENOIOCTL)
- error = ENODEV;
- return error;
-}
-
-int
-set_mode(scr_stat *scp)
-{
- video_info_t info;
-
- /* reject unsupported mode */
- if ((*vidsw[scp->ad]->get_info)(scp->adp, scp->mode, &info))
- return 1;
-
- /* if this vty is not currently showing, do nothing */
- if (scp != cur_console)
- return 0;
-
- /* setup video hardware for the given mode */
- (*vidsw[scp->ad]->set_mode)(scp->adp, scp->mode);
- Crtat = scp->adp->va_window;
-
- if (!(scp->status & GRAPHICS_MODE)) {
- /* load appropriate font */
- if (!(scp->status & PIXEL_MODE) && ISFONTAVAIL(scp->adp->va_flags)) {
- if (scp->font_size < 14) {
- if (fonts_loaded & FONT_8)
- copy_font(scp, LOAD, 8, font_8);
- } else if (scp->font_size >= 16) {
- if (fonts_loaded & FONT_16)
- copy_font(scp, LOAD, 16, font_16);
- } else {
- if (fonts_loaded & FONT_14)
- copy_font(scp, LOAD, 14, font_14);
- }
- /*
- * FONT KLUDGE:
- * This is an interim kludge to display correct font.
- * Always use the font page #0 on the video plane 2.
- * Somehow we cannot show the font in other font pages on
- * some video cards... XXX
- */
- (*vidsw[scp->ad]->show_font)(scp->adp, 0);
- }
- mark_all(scp);
- }
-
- if (scp->status & PIXEL_MODE)
- bzero_io(scp->adp->va_window, scp->xpixel*scp->ypixel/8);
-
- set_border(scp, scp->border);
-
- /* move hardware cursor out of the way */
- (*vidsw[scp->ad]->set_hw_cursor)(scp->adp, -1, -1);
-
- return 0;
-}
-
-void
-set_border(scr_stat *scp, int color)
-{
- vm_offset_t p;
- int xoff;
- int yoff;
- int xlen;
- int ylen;
- int i;
-
- (*vidsw[scp->ad]->set_border)(scp->adp, color);
-
- if (scp->status & PIXEL_MODE) {
- outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */
- outw(GDCIDX, 0x0003); /* data rotate/function select */
- outw(GDCIDX, 0x0f01); /* set/reset enable */
- outw(GDCIDX, 0xff08); /* bit mask */
- outw(GDCIDX, (color << 8) | 0x00); /* set/reset */
- p = scp->adp->va_window;
- xoff = scp->xoff;
- yoff = scp->yoff*scp->font_size;
- xlen = scp->xpixel/8;
- ylen = scp->ysize*scp->font_size;
- if (yoff > 0) {
- bzero_io(p, xlen*yoff);
- bzero_io(p + xlen*(yoff + ylen),
- xlen*scp->ypixel - xlen*(yoff + ylen));
- }
- if (xoff > 0) {
- for (i = 0; i < ylen; ++i) {
- bzero_io(p + xlen*(yoff + i), xoff);
- bzero_io(p + xlen*(yoff + i) + xoff + scp->xsize,
- xlen - xoff - scp->xsize);
- }
- }
- outw(GDCIDX, 0x0000); /* set/reset */
- outw(GDCIDX, 0x0001); /* set/reset enable */
- }
-}
-
-void
-copy_font(scr_stat *scp, int operation, int font_size, u_char *buf)
-{
- /*
- * FONT KLUDGE:
- * This is an interim kludge to display correct font.
- * Always use the font page #0 on the video plane 2.
- * Somehow we cannot show the font in other font pages on
- * some video cards... XXX
- */
- font_loading_in_progress = TRUE;
- if (operation == LOAD) {
- (*vidsw[scp->ad]->load_font)(scp->adp, 0, font_size, buf, 0, 256);
- if (sc_flags & CHAR_CURSOR)
- set_destructive_cursor(scp);
- } else if (operation == SAVE) {
- (*vidsw[scp->ad]->save_font)(scp->adp, 0, font_size, buf, 0, 256);
- }
- font_loading_in_progress = FALSE;
-}
-
-static void
-set_destructive_cursor(scr_stat *scp)
-{
- u_char cursor[32];
- u_char *font_buffer;
- int font_size;
- int crtc_addr;
- int i;
-
- if (!ISFONTAVAIL(scp->adp->va_flags)
- || (scp->status & (GRAPHICS_MODE | PIXEL_MODE)))
- return;
-
- if (scp->font_size < 14) {
- font_buffer = font_8;
- font_size = 8;
- } else if (scp->font_size >= 16) {
- font_buffer = font_16;
- font_size = 16;
- } else {
- font_buffer = font_14;
- font_size = 14;
- }
-
- if (scp->status & MOUSE_VISIBLE) {
- if ((scp->cursor_saveunder & 0xff) == SC_MOUSE_CHAR)
- bcopy(&scp->mouse_cursor[0], cursor, scp->font_size);
- else if ((scp->cursor_saveunder & 0xff) == SC_MOUSE_CHAR + 1)
- bcopy(&scp->mouse_cursor[32], cursor, scp->font_size);
- else if ((scp->cursor_saveunder & 0xff) == SC_MOUSE_CHAR + 2)
- bcopy(&scp->mouse_cursor[64], cursor, scp->font_size);
- else if ((scp->cursor_saveunder & 0xff) == SC_MOUSE_CHAR + 3)
- bcopy(&scp->mouse_cursor[96], cursor, scp->font_size);
- else
- bcopy(font_buffer+((scp->cursor_saveunder & 0xff)*scp->font_size),
- cursor, scp->font_size);
- }
- else
- bcopy(font_buffer + ((scp->cursor_saveunder & 0xff) * scp->font_size),
- cursor, scp->font_size);
- for (i=0; i<32; i++)
- if ((i >= scp->cursor_start && i <= scp->cursor_end) ||
- (scp->cursor_start >= scp->font_size && i == scp->font_size - 1))
- cursor[i] |= 0xff;
-#if 1
- crtc_addr = scp->adp->va_crtc_addr;
- while (!(inb(crtc_addr+6) & 0x08)) /* wait for vertical retrace */ ;
-#endif
- font_loading_in_progress = TRUE;
- (*vidsw[scp->ad]->load_font)(scp->adp, 0, font_size, cursor, DEAD_CHAR, 1);
- font_loading_in_progress = FALSE;
-}
-
-void
-sc_move_mouse(scr_stat *scp, int x, int y)
-{
- scp->mouse_xpos = x;
- scp->mouse_ypos = y;
- scp->mouse_pos = scp->mouse_oldpos =
- scp->scr_buf + (y / scp->font_size) * scp->xsize + x / 8;
-}
-
-static void
-set_mouse_pos(scr_stat *scp)
-{
- static int last_xpos = -1, last_ypos = -1;
-
- if (scp->mouse_xpos < 0)
- scp->mouse_xpos = 0;
- if (scp->mouse_ypos < 0)
- scp->mouse_ypos = 0;
- if (!ISTEXTSC(scp)) {
- if (scp->mouse_xpos > scp->xpixel-1)
- scp->mouse_xpos = scp->xpixel-1;
- if (scp->mouse_ypos > scp->ypixel-1)
- scp->mouse_ypos = scp->ypixel-1;
- return;
- }
- if (scp->mouse_xpos > (scp->xsize*8)-1)
- scp->mouse_xpos = (scp->xsize*8)-1;
- if (scp->mouse_ypos > (scp->ysize*scp->font_size)-1)
- scp->mouse_ypos = (scp->ysize*scp->font_size)-1;
-
- if (scp->mouse_xpos != last_xpos || scp->mouse_ypos != last_ypos) {
- scp->status |= MOUSE_MOVED;
-
- scp->mouse_pos = scp->scr_buf +
- ((scp->mouse_ypos/scp->font_size)*scp->xsize + scp->mouse_xpos/8);
-
- if ((scp->status & MOUSE_VISIBLE) && (scp->status & MOUSE_CUTTING))
- mouse_cut(scp);
- }
-}
-
-#define isspace(c) (((c) & 0xff) == ' ')
-
-static int
-skip_spc_right(scr_stat *scp, u_short *p)
-{
- int i;
-
- for (i = (p - scp->scr_buf) % scp->xsize; i < scp->xsize; ++i) {
- if (!isspace(*p))
- break;
- ++p;
- }
- return i;
-}
-
-static int
-skip_spc_left(scr_stat *scp, u_short *p)
-{
- int i;
-
- for (i = (p-- - scp->scr_buf) % scp->xsize - 1; i >= 0; --i) {
- if (!isspace(*p))
- break;
- --p;
- }
- return i;
-}
-
-static void
-mouse_cut(scr_stat *scp)
-{
- u_short *end;
- u_short *p;
- int i = 0;
- int j = 0;
-
- scp->mouse_cut_end = (scp->mouse_pos >= scp->mouse_cut_start) ?
- scp->mouse_pos + 1 : scp->mouse_pos;
- end = (scp->mouse_cut_start > scp->mouse_cut_end) ?
- scp->mouse_cut_start : scp->mouse_cut_end;
- for (p = (scp->mouse_cut_start > scp->mouse_cut_end) ?
- scp->mouse_cut_end : scp->mouse_cut_start; p < end; ++p) {
- cut_buffer[i] = *p & 0xff;
- /* remember the position of the last non-space char */
- if (!isspace(cut_buffer[i++]))
- j = i;
- /* trim trailing blank when crossing lines */
- if (((p - scp->scr_buf) % scp->xsize) == (scp->xsize - 1)) {
- cut_buffer[j++] = '\r';
- i = j;
- }
- }
- cut_buffer[i] = '\0';
-
- /* scan towards the end of the last line */
- --p;
- for (i = (p - scp->scr_buf) % scp->xsize; i < scp->xsize; ++i) {
- if (!isspace(*p))
- break;
- ++p;
- }
- /* if there is nothing but blank chars, trim them, but mark towards eol */
- if (i >= scp->xsize) {
- if (scp->mouse_cut_start > scp->mouse_cut_end)
- scp->mouse_cut_start = p;
- else
- scp->mouse_cut_end = p;
- cut_buffer[j++] = '\r';
- cut_buffer[j] = '\0';
- }
-
- mark_for_update(scp, scp->mouse_cut_start - scp->scr_buf);
- mark_for_update(scp, scp->mouse_cut_end - scp->scr_buf);
-}
-
-static void
-mouse_cut_start(scr_stat *scp)
-{
- int i;
-
- if (scp->status & MOUSE_VISIBLE) {
- if (scp->mouse_pos == scp->mouse_cut_start &&
- scp->mouse_cut_start == scp->mouse_cut_end - 1) {
- cut_buffer[0] = '\0';
- remove_cutmarking(scp);
- } else if (skip_spc_right(scp, scp->mouse_pos) >= scp->xsize) {
- /* if the pointer is on trailing blank chars, mark towards eol */
- i = skip_spc_left(scp, scp->mouse_pos) + 1;
- scp->mouse_cut_start = scp->scr_buf +
- ((scp->mouse_pos - scp->scr_buf) / scp->xsize) * scp->xsize + i;
- scp->mouse_cut_end = scp->scr_buf +
- ((scp->mouse_pos - scp->scr_buf) / scp->xsize + 1) * scp->xsize;
- cut_buffer[0] = '\r';
- cut_buffer[1] = '\0';
- scp->status |= MOUSE_CUTTING;
- } else {
- scp->mouse_cut_start = scp->mouse_pos;
- scp->mouse_cut_end = scp->mouse_cut_start + 1;
- cut_buffer[0] = *scp->mouse_cut_start & 0xff;
- cut_buffer[1] = '\0';
- scp->status |= MOUSE_CUTTING;
- }
- mark_all(scp);
- /* delete all other screens cut markings */
- for (i=0; i<MAXCONS; i++) {
- if (console[i] == NULL || console[i] == scp)
- continue;
- remove_cutmarking(console[i]);
- }
- }
-}
-
-static void
-mouse_cut_end(scr_stat *scp)
-{
- if (scp->status & MOUSE_VISIBLE) {
- scp->status &= ~MOUSE_CUTTING;
- }
-}
-
-static void
-mouse_cut_word(scr_stat *scp)
-{
- u_short *p;
- u_short *sol;
- u_short *eol;
- int i;
-
- /*
- * Because we don't have locale information in the kernel,
- * we only distinguish space char and non-space chars. Punctuation
- * chars, symbols and other regular chars are all treated alike.
- */
- if (scp->status & MOUSE_VISIBLE) {
- sol = scp->scr_buf
- + ((scp->mouse_pos - scp->scr_buf) / scp->xsize) * scp->xsize;
- eol = sol + scp->xsize;
- if (isspace(*scp->mouse_pos)) {
- for (p = scp->mouse_pos; p >= sol; --p)
- if (!isspace(*p))
- break;
- scp->mouse_cut_start = ++p;
- for (p = scp->mouse_pos; p < eol; ++p)
- if (!isspace(*p))
- break;
- scp->mouse_cut_end = p;
- } else {
- for (p = scp->mouse_pos; p >= sol; --p)
- if (isspace(*p))
- break;
- scp->mouse_cut_start = ++p;
- for (p = scp->mouse_pos; p < eol; ++p)
- if (isspace(*p))
- break;
- scp->mouse_cut_end = p;
- }
- for (i = 0, p = scp->mouse_cut_start; p < scp->mouse_cut_end; ++p)
- cut_buffer[i++] = *p & 0xff;
- cut_buffer[i] = '\0';
- scp->status |= MOUSE_CUTTING;
- }
-}
-
-static void
-mouse_cut_line(scr_stat *scp)
-{
- u_short *p;
- int i;
-
- if (scp->status & MOUSE_VISIBLE) {
- scp->mouse_cut_start = scp->scr_buf
- + ((scp->mouse_pos - scp->scr_buf) / scp->xsize) * scp->xsize;
- scp->mouse_cut_end = scp->mouse_cut_start + scp->xsize;
- for (i = 0, p = scp->mouse_cut_start; p < scp->mouse_cut_end; ++p)
- cut_buffer[i++] = *p & 0xff;
- cut_buffer[i++] = '\r';
- cut_buffer[i] = '\0';
- scp->status |= MOUSE_CUTTING;
- }
-}
-
-static void
-mouse_cut_extend(scr_stat *scp)
-{
- if ((scp->status & MOUSE_VISIBLE) && !(scp->status & MOUSE_CUTTING)
- && (scp->mouse_cut_start != NULL)) {
- mouse_cut(scp);
- scp->status |= MOUSE_CUTTING;
- }
-}
-
-static void
-mouse_paste(scr_stat *scp)
-{
- if (scp->status & MOUSE_VISIBLE) {
- struct tty *tp;
- u_char *ptr = cut_buffer;
-
- tp = VIRTUAL_TTY(get_scr_num());
- while (*ptr)
- (*linesw[tp->t_line].l_rint)(scr_rmap[*ptr++], tp);
- }
-}
-
-static void
-draw_mouse_image(scr_stat *scp)
-{
- u_short buffer[32];
- u_short xoffset, yoffset;
- vm_offset_t crt_pos = scp->adp->va_window + 2*(scp->mouse_pos - scp->scr_buf);
- u_char *font_buffer;
- int font_size;
- int crtc_addr;
- int i;
-
- if (scp->font_size < 14) {
- font_buffer = font_8;
- font_size = 8;
- } else if (scp->font_size >= 16) {
- font_buffer = font_16;
- font_size = 16;
- } else {
- font_buffer = font_14;
- font_size = 14;
- }
-
- xoffset = scp->mouse_xpos % 8;
- yoffset = scp->mouse_ypos % scp->font_size;
-
- /* prepare mousepointer char's bitmaps */
- bcopy(font_buffer + ((*(scp->mouse_pos) & 0xff) * font_size),
- &scp->mouse_cursor[0], font_size);
- bcopy(font_buffer + ((*(scp->mouse_pos+1) & 0xff) * font_size),
- &scp->mouse_cursor[32], font_size);
- bcopy(font_buffer + ((*(scp->mouse_pos+scp->xsize) & 0xff) * font_size),
- &scp->mouse_cursor[64], font_size);
- bcopy(font_buffer + ((*(scp->mouse_pos+scp->xsize+1) & 0xff) * font_size),
- &scp->mouse_cursor[96], font_size);
- for (i=0; i<font_size; i++) {
- buffer[i] = scp->mouse_cursor[i]<<8 | scp->mouse_cursor[i+32];
- buffer[i+font_size]=scp->mouse_cursor[i+64]<<8|scp->mouse_cursor[i+96];
- }
-
- /* now and-or in the mousepointer image */
- for (i=0; i<16; i++) {
- buffer[i+yoffset] =
- ( buffer[i+yoffset] & ~(mouse_and_mask[i] >> xoffset))
- | (mouse_or_mask[i] >> xoffset);
- }
- for (i=0; i<font_size; i++) {
- scp->mouse_cursor[i] = (buffer[i] & 0xff00) >> 8;
- scp->mouse_cursor[i+32] = buffer[i] & 0xff;
- scp->mouse_cursor[i+64] = (buffer[i+font_size] & 0xff00) >> 8;
- scp->mouse_cursor[i+96] = buffer[i+font_size] & 0xff;
- }
-
- scp->mouse_oldpos = scp->mouse_pos;
-
-#if 1
- /* wait for vertical retrace to avoid jitter on some videocards */
- crtc_addr = scp->adp->va_crtc_addr;
- while (!(inb(crtc_addr+6) & 0x08)) /* idle */ ;
-#endif
- font_loading_in_progress = TRUE;
- (*vidsw[scp->ad]->load_font)(scp->adp, 0, 32, scp->mouse_cursor,
- SC_MOUSE_CHAR, 4);
- font_loading_in_progress = FALSE;
-
- writew(crt_pos, (*(scp->mouse_pos) & 0xff00) | SC_MOUSE_CHAR);
- writew(crt_pos+2*scp->xsize,
- (*(scp->mouse_pos + scp->xsize) & 0xff00) | (SC_MOUSE_CHAR + 2));
- if (scp->mouse_xpos < (scp->xsize-1)*8) {
- writew(crt_pos + 2, (*(scp->mouse_pos + 1) & 0xff00) | (SC_MOUSE_CHAR + 1));
- writew(crt_pos+2*scp->xsize + 2,
- (*(scp->mouse_pos + scp->xsize + 1) & 0xff00) | (SC_MOUSE_CHAR + 3));
- }
- mark_for_update(scp, scp->mouse_pos - scp->scr_buf);
- mark_for_update(scp, scp->mouse_pos + scp->xsize + 1 - scp->scr_buf);
-}
-
-static void
-remove_mouse_image(scr_stat *scp)
-{
- vm_offset_t crt_pos;
-
- if (!ISTEXTSC(scp))
- return;
-
- crt_pos = scp->adp->va_window + 2*(scp->mouse_oldpos - scp->scr_buf);
- writew(crt_pos, *(scp->mouse_oldpos));
- writew(crt_pos+2, *(scp->mouse_oldpos+1));
- writew(crt_pos+2*scp->xsize, *(scp->mouse_oldpos+scp->xsize));
- writew(crt_pos+2*scp->xsize+2, *(scp->mouse_oldpos+scp->xsize+1));
- mark_for_update(scp, scp->mouse_oldpos - scp->scr_buf);
- mark_for_update(scp, scp->mouse_oldpos + scp->xsize + 1 - scp->scr_buf);
-}
-
-static void
-draw_cutmarking(scr_stat *scp)
-{
- vm_offset_t crt_pos;
- u_short *ptr;
- u_short och, nch;
-
- crt_pos = scp->adp->va_window;
- for (ptr=scp->scr_buf; ptr<=(scp->scr_buf+(scp->xsize*scp->ysize)); ptr++) {
- nch = och = readw(crt_pos + 2*(ptr - scp->scr_buf));
- /* are we outside the selected area ? */
- if ( ptr < (scp->mouse_cut_start > scp->mouse_cut_end ?
- scp->mouse_cut_end : scp->mouse_cut_start) ||
- ptr >= (scp->mouse_cut_start > scp->mouse_cut_end ?
- scp->mouse_cut_start : scp->mouse_cut_end)) {
- if (ptr != scp->cursor_pos)
- nch = (och & 0xff) | (*ptr & 0xff00);
- }
- else {
- /* are we clear of the cursor image ? */
- if (ptr != scp->cursor_pos)
- nch = (och & 0x88ff) | (*ptr & 0x7000)>>4 | (*ptr & 0x0700)<<4;
- else {
- if (sc_flags & CHAR_CURSOR)
- nch = (och & 0x88ff)|(*ptr & 0x7000)>>4|(*ptr & 0x0700)<<4;
- else
- if (!(sc_flags & BLINK_CURSOR))
- nch = (och & 0xff) | (*ptr & 0xff00);
- }
- }
- if (nch != och)
- writew(crt_pos + 2*(ptr - scp->scr_buf), nch);
- }
-}
-
-static void
-remove_cutmarking(scr_stat *scp)
-{
- scp->mouse_cut_start = scp->mouse_cut_end = NULL;
- scp->status &= ~MOUSE_CUTTING;
- mark_all(scp);
-}
-
-static void
-do_bell(scr_stat *scp, int pitch, int duration)
-{
- if (cold || shutdown_in_progress)
- return;
-
- if (scp != cur_console && (sc_flags & QUIET_BELL))
- return;
-
- if (sc_flags & VISUAL_BELL) {
- if (blink_in_progress)
- return;
- blink_in_progress = 4;
- if (scp != cur_console)
- blink_in_progress += 2;
- blink_screen(cur_console);
- } else {
- if (scp != cur_console)
- pitch *= 2;
- sysbeep(pitch, duration);
- }
-}
-
-static void
-blink_screen(void *arg)
-{
- scr_stat *scp = arg;
-
- if (!ISTEXTSC(scp) || (blink_in_progress <= 1)) {
- blink_in_progress = FALSE;
- mark_all(scp);
- if (delayed_next_scr)
- switch_scr(scp, delayed_next_scr - 1);
- }
- else {
- if (blink_in_progress & 1)
- fillw_io(kernel_default.std_color | scr_map[0x20],
- scp->adp->va_window,
- scp->xsize * scp->ysize);
- else
- fillw_io(kernel_default.rev_color | scr_map[0x20],
- scp->adp->va_window,
- scp->xsize * scp->ysize);
- blink_in_progress--;
- timeout(blink_screen, scp, hz / 10);
- }
-}
-
-void
-sc_bcopy(scr_stat *scp, u_short *p, int from, int to, int mark)
-{
- u_char *font;
- vm_offset_t d;
- vm_offset_t e;
- u_char *f;
- int font_size;
- int line_length;
- int xsize;
- u_short bg;
- int i, j;
- u_char c;
-
- if (ISTEXTSC(scp)) {
- bcopy_toio(p + from, scp->adp->va_window + 2*from,
- (to - from + 1)*sizeof(u_short));
- } else /* if ISPIXELSC(scp) */ {
- if (mark)
- mark = 255;
- font_size = scp->font_size;
- if (font_size < 14)
- font = font_8;
- else if (font_size >= 16)
- font = font_16;
- else
- font = font_14;
- line_length = scp->xpixel/8;
- xsize = scp->xsize;
- d = scp->adp->va_window
- + scp->xoff + scp->yoff*font_size*line_length
- + (from%xsize) + font_size*line_length*(from/xsize);
-
- outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */
- outw(GDCIDX, 0x0003); /* data rotate/function select */
- outw(GDCIDX, 0x0f01); /* set/reset enable */
- bg = -1;
- for (i = from ; i <= to ; i++) {
- /* set background color in EGA/VGA latch */
- if (bg != (p[i] & 0xf000)) {
- bg = (p[i] & 0xf000);
- outw(GDCIDX, (bg >> 4) | 0x00); /* set/reset */
- outw(GDCIDX, 0xff08); /* bit mask */
- writeb(d, 0);
- c = readb(d); /* set the background color in the latch */
- }
- /* foreground color */
- outw(GDCIDX, (p[i] & 0x0f00) | 0x00); /* set/reset */
- e = d;
- f = &font[(p[i] & 0x00ff)*font_size];
- for (j = 0 ; j < font_size; j++, f++) {
- outw(GDCIDX, ((*f^mark) << 8) | 0x08); /* bit mask */
- writeb(e, 0);
- e += line_length;
- }
- d++;
- if ((i % xsize) == xsize - 1)
- d += scp->xoff*2 + (font_size - 1)*line_length;
- }
- outw(GDCIDX, 0x0000); /* set/reset */
- outw(GDCIDX, 0x0001); /* set/reset enable */
- outw(GDCIDX, 0xff08); /* bit mask */
-
-#if 0 /* VGA only */
- outw(GDCIDX, 0x0305); /* read mode 0, write mode 3 */
- outw(GDCIDX, 0x0003); /* data rotate/function select */
- outw(GDCIDX, 0x0f01); /* set/reset enable */
- outw(GDCIDX, 0xff08); /* bit mask */
- bg = -1;
- for (i = from ; i <= to ; i++) {
- /* set background color in EGA/VGA latch */
- if (bg != (p[i] & 0xf000)) {
- bg = (p[i] & 0xf000);
- outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */
- outw(GDCIDX, (bg >> 4) | 0x00); /* set/reset */
- *d = 0;
- c = *d; /* set the background color in the latch */
- outw(GDCIDX, 0x0305); /* read mode 0, write mode 3 */
- }
- /* foreground color */
- outw(GDCIDX, (p[i] & 0x0f00) | 0x00); /* set/reset */
- e = (u_char *)d;
- f = &font[(p[i] & 0x00ff)*font_size];
- for (j = 0 ; j < font_size; j++, f++) {
- *e = *f^mark;
- e += line_length;
- }
- d++;
- if ((i % xsize) == xsize - 1)
- d += scp->xoff*2 + (font_size - 1)*line_length;
- }
- outw(GDCIDX, 0x0005); /* read mode 0, write mode 0 */
- outw(GDCIDX, 0x0000); /* set/reset */
- outw(GDCIDX, 0x0001); /* set/reset enable */
-#endif /* 0 */
- }
-}
-
-#endif /* NSC */
diff --git a/sys/dev/syscons/syscons.h b/sys/dev/syscons/syscons.h
deleted file mode 100644
index 1a88a8c7b5ae9..0000000000000
--- a/sys/dev/syscons/syscons.h
+++ /dev/null
@@ -1,241 +0,0 @@
-/*-
- * Copyright (c) 1995-1998 Søren Schmidt
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer,
- * without modification, immediately at the beginning of the file.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * $Id: syscons.h,v 1.45 1999/01/11 03:18:29 yokota Exp $
- */
-
-#ifndef _DEV_SYSCONS_SYSCONS_H_
-#define _DEV_SYSCONS_SYSCONS_H_
-
-/* vm things */
-#define ISMAPPED(pa, width) \
- (((pa) <= (u_long)0x1000 - (width)) \
- || ((pa) >= 0xa0000 && (pa) <= 0x100000 - (width)))
-#define pa_to_va(pa) (KERNBASE + (pa)) /* works if ISMAPPED(pa...) */
-
-/* printable chars */
-#define PRINTABLE(ch) ((ch) > 0x1b || ((ch) > 0x0d && (ch) < 0x1b) \
- || (ch) < 0x07)
-
-/* macros for "intelligent" screen update */
-#define mark_for_update(scp, x) {\
- if ((x) < scp->start) scp->start = (x);\
- else if ((x) > scp->end) scp->end = (x);\
- }
-#define mark_all(scp) {\
- scp->start = 0;\
- scp->end = scp->xsize * scp->ysize - 1;\
- }
-
-/* status flags */
-#define UNKNOWN_MODE 0x00010
-#define SWITCH_WAIT_REL 0x00080
-#define SWITCH_WAIT_ACQ 0x00100
-#define BUFFER_SAVED 0x00200
-#define CURSOR_ENABLED 0x00400
-#define MOUSE_ENABLED 0x00800
-#define MOUSE_MOVED 0x01000
-#define MOUSE_CUTTING 0x02000
-#define MOUSE_VISIBLE 0x04000
-#define GRAPHICS_MODE 0x08000
-#define PIXEL_MODE 0x10000
-#define SAVER_RUNNING 0x20000
-
-/* configuration flags */
-#define VISUAL_BELL 0x00001
-#define BLINK_CURSOR 0x00002
-#define CHAR_CURSOR 0x00004
-/* these options are now obsolete; use corresponding options for kbd driver */
-#if 0
-#define DETECT_KBD 0x00008
-#define XT_KEYBD 0x00010
-#define KBD_NORESET 0x00020
-#endif
-#define QUIET_BELL 0x00040
-#define VESA800X600 0x00080
-#define AUTODETECT_KBD 0x00100
-
-/* attribute flags */
-#define NORMAL_ATTR 0x00
-#define BLINK_ATTR 0x01
-#define BOLD_ATTR 0x02
-#define UNDERLINE_ATTR 0x04
-#define REVERSE_ATTR 0x08
-#define FOREGROUND_CHANGED 0x10
-#define BACKGROUND_CHANGED 0x20
-
-/* misc defines */
-#define FALSE 0
-#define TRUE 1
-#define MAX_ESC_PAR 5
-#define LOAD 1
-#define SAVE 0
-#define COL 80
-#define ROW 25
-#define BELL_DURATION 5
-#define BELL_PITCH 800
-#define CONSOLE_BUFSIZE 1024
-#define PCBURST 128
-#define FONT_NONE 1
-#define FONT_8 2
-#define FONT_14 4
-#define FONT_16 8
-
-/* special characters */
-#define cntlc 0x03
-#define cntld 0x04
-#define bs 0x08
-#define lf 0x0a
-#define cr 0x0d
-#define del 0x7f
-
-#define DEAD_CHAR 0x07 /* char used for cursor */
-
-typedef struct term_stat {
- int esc; /* processing escape sequence */
- int num_param; /* # of parameters to ESC */
- int last_param; /* last parameter # */
- int param[MAX_ESC_PAR]; /* contains ESC parameters */
- int cur_attr; /* current hardware attr word */
- int attr_mask; /* current logical attr mask */
- int cur_color; /* current hardware color */
- int std_color; /* normal hardware color */
- int rev_color; /* reverse hardware color */
-} term_stat;
-
-typedef struct scr_stat {
- int ad; /* video adapter index */
- video_adapter_t *adp; /* video adapter structure */
- u_short *scr_buf; /* buffer when off screen */
- int xpos; /* current X position */
- int ypos; /* current Y position */
- int saved_xpos; /* saved X position */
- int saved_ypos; /* saved Y position */
- int xsize; /* X text size */
- int ysize; /* Y text size */
- int xpixel; /* X graphics size */
- int ypixel; /* Y graphics size */
- int xoff; /* X offset in pixel mode */
- int yoff; /* Y offset in pixel mode */
- int font_size; /* fontsize in Y direction */
- int start; /* modified area start */
- int end; /* modified area end */
- term_stat term; /* terminal emulation stuff */
- int status; /* status (bitfield) */
- int kbd_mode; /* keyboard I/O mode */
- u_short *cursor_pos; /* cursor buffer position */
- u_short *cursor_oldpos; /* cursor old buffer position */
- u_short cursor_saveunder; /* saved chars under cursor */
- char cursor_start; /* cursor start line # */
- char cursor_end; /* cursor end line # */
- u_short *mouse_pos; /* mouse buffer position */
- u_short *mouse_oldpos; /* mouse old buffer position */
- short mouse_xpos; /* mouse x coordinate */
- short mouse_ypos; /* mouse y coordinate */
- short mouse_buttons; /* mouse buttons */
- u_char mouse_cursor[128]; /* mouse cursor bitmap store */
- u_short *mouse_cut_start; /* mouse cut start pos */
- u_short *mouse_cut_end; /* mouse cut end pos */
- struct proc *mouse_proc; /* proc* of controlling proc */
- pid_t mouse_pid; /* pid of controlling proc */
- int mouse_signal; /* signal # to report with */
- u_short bell_duration;
- u_short bell_pitch;
- u_char border; /* border color */
- int mode; /* mode */
- pid_t pid; /* pid of controlling proc */
- struct proc *proc; /* proc* of controlling proc */
- struct vt_mode smode; /* switch mode */
- u_short *history; /* circular history buffer */
- u_short *history_head; /* current head position */
- u_short *history_pos; /* position shown on screen */
- u_short *history_save; /* save area index */
- int history_size; /* size of history buffer */
-#ifdef __i386__
- struct apmhook r_hook; /* reconfiguration support */
-#endif
- int splash_save_mode; /* saved mode for splash screen */
- int splash_save_status; /* saved status for splash screen */
-} scr_stat;
-
-typedef struct default_attr {
- int std_color; /* normal hardware color */
- int rev_color; /* reverse hardware color */
-} default_attr;
-
-
-#define ISTEXTSC(scp) (!((scp)->status \
- & (UNKNOWN_MODE | GRAPHICS_MODE | PIXEL_MODE)))
-#define ISGRAPHSC(scp) (((scp)->status \
- & (UNKNOWN_MODE | GRAPHICS_MODE)))
-#define ISPIXELSC(scp) (((scp)->status \
- & (UNKNOWN_MODE | GRAPHICS_MODE | PIXEL_MODE))\
- == PIXEL_MODE)
-#define ISUNKNOWNSC(scp) ((scp)->status & UNKNOWN_MODE)
-
-#define ISFONTAVAIL(af) ((af) & V_ADP_FONT)
-#define ISMOUSEAVAIL(af) ((af) & V_ADP_FONT)
-#define ISPALAVAIL(af) ((af) & V_ADP_PALETTE)
-
-/* misc prototypes used by different syscons related LKM's */
-
-/* syscons.c */
-int sc_probe_unit(int unit, int flags);
-int sc_attach_unit(int unit, int flags);
-
-extern int (*sc_user_ioctl)(dev_t dev, u_long cmd, caddr_t data, int flag,
- struct proc *p);
-
-int set_mode(scr_stat *scp);
-scr_stat *sc_get_scr_stat(dev_t dev);
-
-void copy_font(scr_stat *scp, int operation, int font_size, u_char *font_image);
-void set_border(scr_stat *scp, int color);
-#define save_palette(adp, pal) \
- (*vidsw[(adp)->va_index]->save_palette)((adp), (pal))
-#define load_palette(adp, pal) \
- (*vidsw[(adp)->va_index]->load_palette)((adp), (pal))
-
-void sc_touch_scrn_saver(void);
-void sc_clear_screen(scr_stat *scp);
-void sc_move_mouse(scr_stat *scp, int x, int y);
-int sc_clean_up(scr_stat *scp);
-void sc_alloc_scr_buffer(scr_stat *scp, int wait, int clear);
-void sc_alloc_cut_buffer(scr_stat *scp, int wait);
-void sc_alloc_history_buffer(scr_stat *scp, int lines, int extra, int wait);
-struct tty *scdevtotty(dev_t dev);
-
-/* scvidctl.c */
-int sc_set_text_mode(scr_stat *scp, struct tty *tp, int mode,
- int xsize, int ysize, int fontsize);
-int sc_set_graphics_mode(scr_stat *scp, struct tty *tp, int mode);
-int sc_set_pixel_mode(scr_stat *scp, struct tty *tp,
- int xsize, int ysize, int fontsize);
-int sc_vid_ioctl(struct tty *tp, u_long cmd, caddr_t data, int flag,
- struct proc *p);
-
-#endif /* !_DEV_SYSCONS_SYSCONS_H_ */
diff --git a/sys/dev/usb/hid.c b/sys/dev/usb/hid.c
deleted file mode 100644
index ea04a05b67e56..0000000000000
--- a/sys/dev/usb/hid.c
+++ /dev/null
@@ -1,471 +0,0 @@
-/* $NetBSD: hid.c,v 1.7 1999/01/08 11:58:25 augustss Exp $ */
-/* FreeBSD $Id: hid.c,v 1.5 1999/01/07 23:31:29 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__FreeBSD__)
-#include <sys/bus.h>
-#endif
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-
-#include <dev/usb/hid.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (usbdebug) printf x
-#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
-extern int usbdebug;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-static void hid_clear_local __P((struct hid_item *));
-
-#define MAXUSAGE 100
-struct hid_data {
- u_char *start;
- u_char *end;
- u_char *p;
- struct hid_item cur;
- int32_t usages[MAXUSAGE];
- int nu;
- int minset;
- int multi;
- int multimax;
- int kindset;
-};
-
-static void
-hid_clear_local(c)
- struct hid_item *c;
-{
- c->usage = 0;
- c->usage_minimum = 0;
- c->usage_maximum = 0;
- c->designator_index = 0;
- c->designator_minimum = 0;
- c->designator_maximum = 0;
- c->string_index = 0;
- c->string_minimum = 0;
- c->string_maximum = 0;
- c->set_delimiter = 0;
-}
-
-struct hid_data *
-hid_start_parse(d, len, kindset)
- void *d;
- int len;
- int kindset;
-{
- struct hid_data *s;
-
- s = malloc(sizeof *s, M_TEMP, M_WAITOK);
- memset(s, 0, sizeof *s);
- s->start = s->p = d;
- s->end = (char *)d + len;
- s->kindset = kindset;
- return (s);
-}
-
-void
-hid_end_parse(s)
- struct hid_data *s;
-{
- while (s->cur.next) {
- struct hid_item *hi = s->cur.next->next;
- free(s->cur.next, M_TEMP);
- s->cur.next = hi;
- }
- free(s, M_TEMP);
-}
-
-int
-hid_get_item(s, h)
- struct hid_data *s;
- struct hid_item *h;
-{
- struct hid_item *c = &s->cur;
- int bTag, bType, bSize;
- u_char *data;
- int32_t dval;
- u_char *p;
- struct hid_item *hi;
- int i;
-
- top:
- if (s->multimax) {
- if (s->multi < s->multimax) {
- c->usage = s->usages[min(s->multi, s->nu-1)];
- s->multi++;
- *h = *c;
- c->loc.pos += c->loc.size;
- h->next = 0;
- return (1);
- } else {
- c->loc.count = s->multimax;
- s->multimax = 0;
- s->nu = 0;
- hid_clear_local(c);
- }
- }
- for (;;) {
- p = s->p;
- if (p >= s->end)
- return (0);
-
- bSize = *p++;
- if (bSize == 0xfe) {
- /* long item */
- bSize = *p++;
- bSize |= *p++ << 8;
- bTag = *p++;
- data = p;
- p += bSize;
- bType = 0xff; /* XXX what should it be */
- } else {
- /* short item */
- bTag = bSize >> 4;
- bType = (bSize >> 2) & 3;
- bSize &= 3;
- if (bSize == 3) bSize = 4;
- data = p;
- p += bSize;
- }
- s->p = p;
- switch(bSize) {
- case 0:
- dval = 0;
- break;
- case 1:
- dval = (int8_t)*data++;
- break;
- case 2:
- dval = *data++;
- dval |= *data++ << 8;
- dval = (int16_t)dval;
- break;
- case 4:
- dval = *data++;
- dval |= *data++ << 8;
- dval |= *data++ << 16;
- dval |= *data++ << 24;
- break;
- default:
- printf("BAD LENGTH %d\n", bSize);
- continue;
- }
-
- switch (bType) {
- case 0: /* Main */
- switch (bTag) {
- case 8: /* Input */
- if (!(s->kindset & (1 << hid_input)))
- continue;
- c->kind = hid_input;
- c->flags = dval;
- ret:
- if (c->flags & HIO_VARIABLE) {
- s->multimax = c->loc.count;
- s->multi = 0;
- c->loc.count = 1;
- if (s->minset) {
- for (i = c->usage_minimum;
- i <= c->usage_maximum;
- i++) {
- s->usages[s->nu] = i;
- if (s->nu < MAXUSAGE-1)
- s->nu++;
- }
- s->minset = 0;
- }
- goto top;
- } else {
- *h = *c;
- h->next = 0;
- c->loc.pos +=
- c->loc.size * c->loc.count;
- hid_clear_local(c);
- s->minset = 0;
- return (1);
- }
- case 9: /* Output */
- if (!(s->kindset & (1 << hid_output)))
- continue;
- c->kind = hid_output;
- c->flags = dval;
- goto ret;
- case 10: /* Collection */
- c->kind = hid_collection;
- c->collection = dval;
- c->collevel++;
- *h = *c;
- hid_clear_local(c);
- s->nu = 0;
- return (1);
- case 11: /* Feature */
- if (!(s->kindset & (1 << hid_feature)))
- continue;
- c->kind = hid_feature;
- c->flags = dval;
- goto ret;
- case 12: /* End collection */
- c->kind = hid_endcollection;
- c->collevel--;
- *h = *c;
- hid_clear_local(c);
- s->nu = 0;
- return (1);
- default:
- printf("Main bTag=%d\n", bTag);
- break;
- }
- break;
- case 1: /* Global */
- switch (bTag) {
- case 0:
- c->_usage_page = dval << 16;
- break;
- case 1:
- c->logical_minimum = dval;
- break;
- case 2:
- c->logical_maximum = dval;
- break;
- case 3:
- c->physical_maximum = dval;
- break;
- case 4:
- c->physical_maximum = dval;
- break;
- case 5:
- c->unit_exponent = dval;
- break;
- case 6:
- c->unit = dval;
- break;
- case 7:
- c->loc.size = dval;
- break;
- case 8:
- c->report_ID = dval;
- break;
- case 9:
- c->loc.count = dval;
- break;
- case 10: /* Push */
- hi = malloc(sizeof *hi, M_TEMP, M_WAITOK);
- *hi = s->cur;
- c->next = hi;
- break;
- case 11: /* Pop */
- hi = c->next;
- s->cur = *hi;
- free(hi, M_TEMP);
- break;
- default:
- printf("Global bTag=%d\n", bTag);
- break;
- }
- break;
- case 2: /* Local */
- switch (bTag) {
- case 0:
- if (bSize == 1)
- dval = c->_usage_page | (dval&0xff);
- else if (bSize == 2)
- dval = c->_usage_page | (dval&0xffff);
- c->usage = dval;
- if (s->nu < MAXUSAGE)
- s->usages[s->nu++] = dval;
- /* else XXX */
- break;
- case 1:
- s->minset = 1;
- if (bSize == 1)
- dval = c->_usage_page | (dval&0xff);
- else if (bSize == 2)
- dval = c->_usage_page | (dval&0xffff);
- c->usage_minimum = dval;
- break;
- case 2:
- if (bSize == 1)
- dval = c->_usage_page | (dval&0xff);
- else if (bSize == 2)
- dval = c->_usage_page | (dval&0xffff);
- c->usage_maximum = dval;
- break;
- case 3:
- c->designator_index = dval;
- break;
- case 4:
- c->designator_minimum = dval;
- break;
- case 5:
- c->designator_maximum = dval;
- break;
- case 7:
- c->string_index = dval;
- break;
- case 8:
- c->string_minimum = dval;
- break;
- case 9:
- c->string_maximum = dval;
- break;
- case 10:
- c->set_delimiter = dval;
- break;
- default:
- printf("Local bTag=%d\n", bTag);
- break;
- }
- break;
- default:
- printf("default bType=%d\n", bType);
- break;
- }
- }
-}
-
-int
-hid_report_size(buf, len, k, idp)
- void *buf;
- int len;
- enum hid_kind k;
- u_int8_t *idp;
-{
- struct hid_data *d;
- struct hid_item h;
- int size, id;
-
- id = 0;
- for (d = hid_start_parse(buf, len, 1<<k); hid_get_item(d, &h); )
- if (h.report_ID)
- id = h.report_ID;
- hid_end_parse(d);
- size = h.loc.pos;
- if (id) {
- size += 8;
- *idp = id; /* XXX wrong */
- } else
- *idp = 0;
- return ((size + 7) / 8);
-}
-
-int
-hid_locate(desc, size, u, k, loc, flags)
- void *desc;
- int size;
- u_int32_t u;
- enum hid_kind k;
- struct hid_location *loc;
- u_int32_t *flags;
-{
- struct hid_data *d;
- struct hid_item h;
-
- for (d = hid_start_parse(desc, size, 1<<k); hid_get_item(d, &h); ) {
- if (h.kind == k && !(h.flags & HIO_CONST) && h.usage == u) {
- if (loc)
- *loc = h.loc;
- if (flags)
- *flags = h.flags;
- hid_end_parse(d);
- return (1);
- }
- }
- hid_end_parse(d);
- loc->size = 0;
- return (0);
-}
-
-u_long
-hid_get_data(buf, loc)
- u_char *buf;
- struct hid_location *loc;
-{
- u_int hpos = loc->pos;
- u_int hsize = loc->size;
- u_int32_t data;
- int i, s;
-
- DPRINTFN(10, ("hid_get_data: loc %d/%d\n", hpos, hsize));
-
- if (hsize == 0)
- return (0);
-
- data = 0;
- s = hpos / 8;
- for (i = hpos; i < hpos+hsize; i += 8)
- data |= buf[i / 8] << ((i / 8 - s) * 8);
- data >>= hpos % 8;
- data &= (1 << hsize) - 1;
- hsize = 32 - hsize;
- /* Sign extend */
- data = ((int32_t)data << hsize) >> hsize;
- DPRINTFN(10,("hid_get_data: loc %d/%d = %lu\n",
- loc->pos, loc->size, (long)data));
- return (data);
-}
-
-int
-hid_is_collection(desc, size, usage)
- void *desc;
- int size;
- u_int32_t usage;
-{
- struct hid_data *hd;
- struct hid_item hi;
- int r;
-
- hd = hid_start_parse(desc, size, hid_input);
- if (!hd)
- return (0);
-
- r = hid_get_item(hd, &hi) &&
- hi.kind == hid_collection &&
- hi.usage == usage;
- hid_end_parse(hd);
- return (r);
-}
diff --git a/sys/dev/usb/hid.h b/sys/dev/usb/hid.h
deleted file mode 100644
index 0529701d72a2e..0000000000000
--- a/sys/dev/usb/hid.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/* $NetBSD: hid.h,v 1.3 1998/11/25 22:32:04 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-enum hid_kind {
- hid_input, hid_output, hid_feature, hid_collection, hid_endcollection
-};
-
-struct hid_location {
- u_int32_t size;
- u_int32_t count;
- u_int32_t pos;
-};
-
-struct hid_item {
- /* Global */
- int32_t _usage_page;
- int32_t logical_minimum;
- int32_t logical_maximum;
- int32_t physical_minimum;
- int32_t physical_maximum;
- int32_t unit_exponent;
- int32_t unit;
- int32_t report_ID;
- /* Local */
- int32_t usage;
- int32_t usage_minimum;
- int32_t usage_maximum;
- int32_t designator_index;
- int32_t designator_minimum;
- int32_t designator_maximum;
- int32_t string_index;
- int32_t string_minimum;
- int32_t string_maximum;
- int32_t set_delimiter;
- /* Misc */
- int32_t collection;
- int collevel;
- enum hid_kind kind;
- u_int32_t flags;
- /* Location */
- struct hid_location loc;
- /* */
- struct hid_item *next;
-};
-
-struct hid_data *hid_start_parse __P((void *d, int len, int kindset));
-void hid_end_parse __P((struct hid_data *s));
-int hid_get_item __P((struct hid_data *s, struct hid_item *h));
-int hid_report_size __P((void *buf, int len, enum hid_kind k, u_int8_t *id));
-int hid_locate __P((void *desc, int size, u_int32_t usage,
- enum hid_kind kind, struct hid_location *loc,
- u_int32_t *flags));
-u_long hid_get_data __P((u_char *buf, struct hid_location *loc));
-int hid_is_collection __P((void *desc, int size, u_int32_t usage));
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c
deleted file mode 100644
index 1cb64b33769ad..0000000000000
--- a/sys/dev/usb/ohci.c
+++ /dev/null
@@ -1,2228 +0,0 @@
-/* $NetBSD: ohci.c,v 1.23 1999/01/07 02:06:05 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * USB Open Host Controller driver.
- *
- * OHCI spec: http://www.intel.com/design/usb/ohci11d.pdf
- * USB spec: http://www.teleport.com/cgi-bin/mailmerge.cgi/~usb/cgiform.tpl
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#endif
-#include <sys/proc.h>
-#include <sys/queue.h>
-#include <sys/select.h>
-
-#include <machine/bus.h>
-#include <machine/endian.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdivar.h>
-#include <dev/usb/usb_quirks.h>
-#include <dev/usb/usb_mem.h>
-
-#include <dev/usb/ohcireg.h>
-#include <dev/usb/ohcivar.h>
-
-#if defined(__FreeBSD__)
-#include <machine/clock.h>
-
-#define delay(d) DELAY(d)
-
-#endif
-
-/*
- * The OHCI controller is little endian, so on big endian machines
- * the data strored in memory needs to be swapped.
- */
-#if BYTE_ORDER == BIG_ENDIAN
-#define LE(x) (bswap32(x))
-#else
-#define LE(x) (x)
-#endif
-
-struct ohci_pipe;
-
-ohci_soft_ed_t *ohci_alloc_sed __P((ohci_softc_t *));
-void ohci_free_sed __P((ohci_softc_t *, ohci_soft_ed_t *));
-
-ohci_soft_td_t *ohci_alloc_std __P((ohci_softc_t *));
-void ohci_free_std __P((ohci_softc_t *, ohci_soft_td_t *));
-
-usbd_status ohci_open __P((usbd_pipe_handle));
-void ohci_poll __P((struct usbd_bus *));
-void ohci_waitintr __P((ohci_softc_t *, usbd_request_handle));
-void ohci_rhsc __P((ohci_softc_t *, usbd_request_handle));
-void ohci_process_done __P((ohci_softc_t *, ohci_physaddr_t));
-void ohci_ii_done __P((ohci_softc_t *, usbd_request_handle));
-void ohci_ctrl_done __P((ohci_softc_t *, usbd_request_handle));
-void ohci_intr_done __P((ohci_softc_t *, usbd_request_handle));
-void ohci_bulk_done __P((ohci_softc_t *, usbd_request_handle));
-
-usbd_status ohci_device_request __P((usbd_request_handle reqh));
-void ohci_add_ed __P((ohci_soft_ed_t *, ohci_soft_ed_t *));
-void ohci_rem_ed __P((ohci_soft_ed_t *, ohci_soft_ed_t *));
-void ohci_hash_add_td __P((ohci_softc_t *, ohci_soft_td_t *));
-void ohci_hash_rem_td __P((ohci_softc_t *, ohci_soft_td_t *));
-ohci_soft_td_t *ohci_hash_find_td __P((ohci_softc_t *, ohci_physaddr_t));
-
-usbd_status ohci_root_ctrl_transfer __P((usbd_request_handle));
-usbd_status ohci_root_ctrl_start __P((usbd_request_handle));
-void ohci_root_ctrl_abort __P((usbd_request_handle));
-void ohci_root_ctrl_close __P((usbd_pipe_handle));
-
-usbd_status ohci_root_intr_transfer __P((usbd_request_handle));
-usbd_status ohci_root_intr_start __P((usbd_request_handle));
-void ohci_root_intr_abort __P((usbd_request_handle));
-void ohci_root_intr_close __P((usbd_pipe_handle));
-
-usbd_status ohci_device_ctrl_transfer __P((usbd_request_handle));
-usbd_status ohci_device_ctrl_start __P((usbd_request_handle));
-void ohci_device_ctrl_abort __P((usbd_request_handle));
-void ohci_device_ctrl_close __P((usbd_pipe_handle));
-
-usbd_status ohci_device_bulk_transfer __P((usbd_request_handle));
-usbd_status ohci_device_bulk_start __P((usbd_request_handle));
-void ohci_device_bulk_abort __P((usbd_request_handle));
-void ohci_device_bulk_close __P((usbd_pipe_handle));
-
-usbd_status ohci_device_intr_transfer __P((usbd_request_handle));
-usbd_status ohci_device_intr_start __P((usbd_request_handle));
-void ohci_device_intr_abort __P((usbd_request_handle));
-void ohci_device_intr_close __P((usbd_pipe_handle));
-usbd_status ohci_device_setintr __P((ohci_softc_t *sc,
- struct ohci_pipe *pipe, int ival));
-
-int ohci_str __P((usb_string_descriptor_t *, int, char *));
-
-void ohci_timeout __P((void *));
-void ohci_rhsc_able __P((ohci_softc_t *, int));
-
-#ifdef USB_DEBUG
-ohci_softc_t *thesc;
-void ohci_dumpregs __P((ohci_softc_t *));
-void ohci_dump_tds __P((ohci_soft_td_t *));
-void ohci_dump_td __P((ohci_soft_td_t *));
-void ohci_dump_ed __P((ohci_soft_ed_t *));
-#endif
-
-#if defined(__NetBSD__)
-#define OWRITE4(sc, r, x) bus_space_write_4((sc)->iot, (sc)->ioh, (r), (x))
-#define OREAD4(sc, r) bus_space_read_4((sc)->iot, (sc)->ioh, (r))
-#define OREAD2(sc, r) bus_space_read_2((sc)->iot, (sc)->ioh, (r))
-#elif defined(__FreeBSD__)
-#define OWRITE4(sc, r, x) *(u_int32_t *) ((sc)->sc_iobase + (r)) = x
-#define OREAD4(sc, r) (*(u_int32_t *) ((sc)->sc_iobase + (r)))
-#define OREAD2(sc, r) (*(u_int16_t *) ((sc)->sc_iobase + (r)))
-#endif
-
-/* Reverse the bits in a value 0 .. 31 */
-static u_int8_t revbits[OHCI_NO_INTRS] =
- { 0x00, 0x10, 0x08, 0x18, 0x04, 0x14, 0x0c, 0x1c,
- 0x02, 0x12, 0x0a, 0x1a, 0x06, 0x16, 0x0e, 0x1e,
- 0x01, 0x11, 0x09, 0x19, 0x05, 0x15, 0x0d, 0x1d,
- 0x03, 0x13, 0x0b, 0x1b, 0x07, 0x17, 0x0f, 0x1f };
-
-struct ohci_pipe {
- struct usbd_pipe pipe;
- ohci_soft_ed_t *sed;
- ohci_soft_td_t *tail;
- /* Info needed for different pipe kinds. */
- union {
- /* Control pipe */
- struct {
- usb_dma_t datadma;
- usb_dma_t reqdma;
- u_int length;
- ohci_soft_td_t *setup, *xfer, *stat;
- } ctl;
- /* Interrupt pipe */
- struct {
- usb_dma_t datadma;
- int nslots;
- int pos;
- } intr;
- /* Bulk pipe */
- struct {
- usb_dma_t datadma;
- u_int length;
- } bulk;
- } u;
-};
-
-#define OHCI_INTR_ENDPT 1
-
-struct usbd_methods ohci_root_ctrl_methods = {
- ohci_root_ctrl_transfer,
- ohci_root_ctrl_start,
- ohci_root_ctrl_abort,
- ohci_root_ctrl_close,
- 0,
-};
-
-struct usbd_methods ohci_root_intr_methods = {
- ohci_root_intr_transfer,
- ohci_root_intr_start,
- ohci_root_intr_abort,
- ohci_root_intr_close,
- 0,
-};
-
-struct usbd_methods ohci_device_ctrl_methods = {
- ohci_device_ctrl_transfer,
- ohci_device_ctrl_start,
- ohci_device_ctrl_abort,
- ohci_device_ctrl_close,
- 0,
-};
-
-struct usbd_methods ohci_device_intr_methods = {
- ohci_device_intr_transfer,
- ohci_device_intr_start,
- ohci_device_intr_abort,
- ohci_device_intr_close,
-};
-
-struct usbd_methods ohci_device_bulk_methods = {
- ohci_device_bulk_transfer,
- ohci_device_bulk_start,
- ohci_device_bulk_abort,
- ohci_device_bulk_close,
- 0,
-};
-
-ohci_soft_ed_t *
-ohci_alloc_sed(sc)
- ohci_softc_t *sc;
-{
- ohci_soft_ed_t *sed;
- usbd_status r;
- int i, offs;
- usb_dma_t dma;
-
- if (!sc->sc_freeeds) {
- DPRINTFN(2, ("ohci_alloc_sed: allocating chunk\n"));
- sed = malloc(sizeof(ohci_soft_ed_t) * OHCI_ED_CHUNK,
- M_USBDEV, M_NOWAIT);
- if (!sed)
- return 0;
- r = usb_allocmem(sc->sc_dmatag, OHCI_ED_SIZE * OHCI_ED_CHUNK,
- OHCI_ED_ALIGN, &dma);
- if (r != USBD_NORMAL_COMPLETION) {
- free(sed, M_USBDEV);
- return 0;
- }
- for(i = 0; i < OHCI_ED_CHUNK; i++, sed++) {
- offs = i * OHCI_ED_SIZE;
- sed->physaddr = DMAADDR(&dma) + offs;
- sed->ed = (ohci_ed_t *)
- ((char *)KERNADDR(&dma) + offs);
- sed->next = sc->sc_freeeds;
- sc->sc_freeeds = sed;
- }
- }
- sed = sc->sc_freeeds;
- sc->sc_freeeds = sed->next;
- memset(sed->ed, 0, OHCI_ED_SIZE);
- sed->next = 0;
- return sed;
-}
-
-void
-ohci_free_sed(sc, sed)
- ohci_softc_t *sc;
- ohci_soft_ed_t *sed;
-{
- sed->next = sc->sc_freeeds;
- sc->sc_freeeds = sed;
-}
-
-ohci_soft_td_t *
-ohci_alloc_std(sc)
- ohci_softc_t *sc;
-{
- ohci_soft_td_t *std;
- usbd_status r;
- int i, offs;
- usb_dma_t dma;
-
- if (!sc->sc_freetds) {
- DPRINTFN(2, ("ohci_alloc_std: allocating chunk\n"));
- std = malloc(sizeof(ohci_soft_td_t) * OHCI_TD_CHUNK,
- M_USBDEV, M_NOWAIT);
- if (!std)
- return 0;
- r = usb_allocmem(sc->sc_dmatag, OHCI_TD_SIZE * OHCI_TD_CHUNK,
- OHCI_TD_ALIGN, &dma);
- if (r != USBD_NORMAL_COMPLETION) {
- free(std, M_USBDEV);
- return 0;
- }
- for(i = 0; i < OHCI_TD_CHUNK; i++, std++) {
- offs = i * OHCI_TD_SIZE;
- std->physaddr = DMAADDR(&dma) + offs;
- std->td = (ohci_td_t *)
- ((char *)KERNADDR(&dma) + offs);
- std->nexttd = sc->sc_freetds;
- sc->sc_freetds = std;
- }
- }
- std = sc->sc_freetds;
- sc->sc_freetds = std->nexttd;
- memset(std->td, 0, OHCI_TD_SIZE);
- std->nexttd = 0;
- return (std);
-}
-
-void
-ohci_free_std(sc, std)
- ohci_softc_t *sc;
- ohci_soft_td_t *std;
-{
- std->nexttd = sc->sc_freetds;
- sc->sc_freetds = std;
-}
-
-usbd_status
-ohci_init(sc)
- ohci_softc_t *sc;
-{
- ohci_soft_ed_t *sed, *psed;
- usbd_status r;
- int rev;
- int i;
- u_int32_t s, ctl, ival, hcr, fm, per;
-
- DPRINTF(("ohci_init: start\n"));
- rev = OREAD4(sc, OHCI_REVISION);
- printf("%s: OHCI version %d.%d%s\n", USBDEVNAME(sc->sc_bus.bdev),
- OHCI_REV_HI(rev), OHCI_REV_LO(rev),
- OHCI_REV_LEGACY(rev) ? ", legacy support" : "");
- if (OHCI_REV_HI(rev) != 1 || OHCI_REV_LO(rev) != 0) {
- printf("%s: unsupported OHCI revision\n",
- USBDEVNAME(sc->sc_bus.bdev));
- return (USBD_INVAL);
- }
-
- for (i = 0; i < OHCI_HASH_SIZE; i++)
- LIST_INIT(&sc->sc_hash_tds[i]);
-
- /* Allocate the HCCA area. */
- r = usb_allocmem(sc->sc_dmatag, OHCI_HCCA_SIZE,
- OHCI_HCCA_ALIGN, &sc->sc_hccadma);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- sc->sc_hcca = (struct ohci_hcca *)KERNADDR(&sc->sc_hccadma);
- memset(sc->sc_hcca, 0, OHCI_HCCA_SIZE);
-
- sc->sc_eintrs = OHCI_NORMAL_INTRS;
-
- sc->sc_ctrl_head = ohci_alloc_sed(sc);
- if (!sc->sc_ctrl_head) {
- r = USBD_NOMEM;
- goto bad1;
- }
- sc->sc_ctrl_head->ed->ed_flags |= LE(OHCI_ED_SKIP);
- sc->sc_bulk_head = ohci_alloc_sed(sc);
- if (!sc->sc_bulk_head) {
- r = USBD_NOMEM;
- goto bad2;
- }
- sc->sc_bulk_head->ed->ed_flags |= LE(OHCI_ED_SKIP);
-
- /* Allocate all the dummy EDs that make up the interrupt tree. */
- for (i = 0; i < OHCI_NO_EDS; i++) {
- sed = ohci_alloc_sed(sc);
- if (!sed) {
- while (--i >= 0)
- ohci_free_sed(sc, sc->sc_eds[i]);
- r = USBD_NOMEM;
- goto bad3;
- }
- /* All ED fields are set to 0. */
- sc->sc_eds[i] = sed;
- sed->ed->ed_flags |= LE(OHCI_ED_SKIP);
- if (i != 0) {
- psed = sc->sc_eds[(i-1) / 2];
- sed->next = psed;
- sed->ed->ed_nexted = LE(psed->physaddr);
- }
- }
- /*
- * Fill HCCA interrupt table. The bit reversal is to get
- * the tree set up properly to spread the interrupts.
- */
- for (i = 0; i < OHCI_NO_INTRS; i++)
- sc->sc_hcca->hcca_interrupt_table[revbits[i]] =
- LE(sc->sc_eds[OHCI_NO_EDS-OHCI_NO_INTRS+i]->physaddr);
-
- /* Determine in what context we are running. */
- ctl = OREAD4(sc, OHCI_CONTROL);
- if (ctl & OHCI_IR) {
- /* SMM active, request change */
- DPRINTF(("ohci_init: SMM active, request owner change\n"));
- s = OREAD4(sc, OHCI_COMMAND_STATUS);
- OWRITE4(sc, OHCI_COMMAND_STATUS, s | OHCI_OCR);
- for (i = 0; i < 100 && (ctl & OHCI_IR); i++) {
- delay(1000);
- ctl = OREAD4(sc, OHCI_CONTROL);
- }
- if ((ctl & OHCI_IR) == 0) {
- printf("%s: SMM does not respond, resetting\n",
- USBDEVNAME(sc->sc_bus.bdev));
- OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET);
- goto reset;
- }
- } else if ((ctl & OHCI_HCFS_MASK) != OHCI_HCFS_RESET) {
- /* BIOS started controller. */
- DPRINTF(("ohci_init: BIOS active\n"));
- if ((ctl & OHCI_HCFS_MASK) != OHCI_HCFS_OPERATIONAL) {
- OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_OPERATIONAL);
- delay(USB_RESUME_DELAY * 1000);
- }
- } else {
- DPRINTF(("ohci_init: cold started\n"));
- reset:
- /* Controller was cold started. */
- delay(USB_BUS_RESET_DELAY * 1000);
- }
-
- /*
- * This reset should not be necessary according to the OHCI spec, but
- * without it some controllers do not start.
- */
- DPRINTF(("%s: resetting\n", USBDEVNAME(sc->sc_bus.bdev)));
- OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET);
- delay(USB_BUS_RESET_DELAY * 1000);
-
- /* We now own the host controller and the bus has been reset. */
- ival = OHCI_GET_IVAL(OREAD4(sc, OHCI_FM_INTERVAL));
-
- OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_HCR); /* Reset HC */
- /* Nominal time for a reset is 10 us. */
- for (i = 0; i < 10; i++) {
- delay(10);
- hcr = OREAD4(sc, OHCI_COMMAND_STATUS) & OHCI_HCR;
- if (!hcr)
- break;
- }
- if (hcr) {
- printf("%s: reset timeout\n", USBDEVNAME(sc->sc_bus.bdev));
- r = USBD_IOERROR;
- goto bad3;
- }
-#ifdef USB_DEBUG
- thesc = sc;
- if (ohcidebug > 15)
- ohci_dumpregs(sc);
-#endif
-
- /* The controller is now in suspend state, we have 2ms to finish. */
-
- /* Set up HC registers. */
- OWRITE4(sc, OHCI_HCCA, DMAADDR(&sc->sc_hccadma));
- OWRITE4(sc, OHCI_CONTROL_HEAD_ED, sc->sc_ctrl_head->physaddr);
- OWRITE4(sc, OHCI_BULK_HEAD_ED, sc->sc_bulk_head->physaddr);
- OWRITE4(sc, OHCI_INTERRUPT_DISABLE, OHCI_ALL_INTRS);
- OWRITE4(sc, OHCI_INTERRUPT_ENABLE, sc->sc_eintrs | OHCI_MIE);
- ctl = OREAD4(sc, OHCI_CONTROL);
- ctl &= ~(OHCI_CBSR_MASK | OHCI_LES | OHCI_HCFS_MASK | OHCI_IR);
- ctl |= OHCI_PLE | OHCI_IE | OHCI_CLE | OHCI_BLE |
- OHCI_RATIO_1_4 | OHCI_HCFS_OPERATIONAL;
- /* And finally start it! */
- OWRITE4(sc, OHCI_CONTROL, ctl);
-
- /*
- * The controller is now OPERATIONAL. Set a some final
- * registers that should be set earlier, but that the
- * controller ignores when in the SUSPEND state.
- */
- fm = (OREAD4(sc, OHCI_FM_INTERVAL) & OHCI_FIT) ^ OHCI_FIT;
- fm |= OHCI_FSMPS(ival) | ival;
- OWRITE4(sc, OHCI_FM_INTERVAL, fm);
- per = OHCI_PERIODIC(ival); /* 90% periodic */
- OWRITE4(sc, OHCI_PERIODIC_START, per);
-
- OWRITE4(sc, OHCI_RH_STATUS, OHCI_LPSC); /* Enable port power */
-
- sc->sc_noport = OHCI_GET_NDP(OREAD4(sc, OHCI_RH_DESCRIPTOR_A));
-
-#ifdef USB_DEBUG
- if (ohcidebug > 5)
- ohci_dumpregs(sc);
-#endif
-
- /* Set up the bus struct. */
- sc->sc_bus.open_pipe = ohci_open;
- sc->sc_bus.pipe_size = sizeof(struct ohci_pipe);
- sc->sc_bus.do_poll = ohci_poll;
-
- return (USBD_NORMAL_COMPLETION);
-
- bad3:
- ohci_free_sed(sc, sc->sc_ctrl_head);
- bad2:
- ohci_free_sed(sc, sc->sc_bulk_head);
- bad1:
- usb_freemem(sc->sc_dmatag, &sc->sc_hccadma);
- return (r);
-}
-
-#ifdef USB_DEBUG
-void ohcidump(void);
-void ohcidump(void) { ohci_dumpregs(thesc); }
-
-void
-ohci_dumpregs(sc)
- ohci_softc_t *sc;
-{
- printf("ohci_dumpregs: rev=0x%08x control=0x%08x command=0x%08x\n",
- OREAD4(sc, OHCI_REVISION),
- OREAD4(sc, OHCI_CONTROL),
- OREAD4(sc, OHCI_COMMAND_STATUS));
- printf(" intrstat=0x%08x intre=0x%08x intrd=0x%08x\n",
- OREAD4(sc, OHCI_INTERRUPT_STATUS),
- OREAD4(sc, OHCI_INTERRUPT_ENABLE),
- OREAD4(sc, OHCI_INTERRUPT_DISABLE));
- printf(" hcca=0x%08x percur=0x%08x ctrlhd=0x%08x\n",
- OREAD4(sc, OHCI_HCCA),
- OREAD4(sc, OHCI_PERIOD_CURRENT_ED),
- OREAD4(sc, OHCI_CONTROL_HEAD_ED));
- printf(" ctrlcur=0x%08x bulkhd=0x%08x bulkcur=0x%08x\n",
- OREAD4(sc, OHCI_CONTROL_CURRENT_ED),
- OREAD4(sc, OHCI_BULK_HEAD_ED),
- OREAD4(sc, OHCI_BULK_CURRENT_ED));
- printf(" done=0x%08x fmival=0x%08x fmrem=0x%08x\n",
- OREAD4(sc, OHCI_DONE_HEAD),
- OREAD4(sc, OHCI_FM_INTERVAL),
- OREAD4(sc, OHCI_FM_REMAINING));
- printf(" fmnum=0x%08x perst=0x%08x lsthrs=0x%08x\n",
- OREAD4(sc, OHCI_FM_NUMBER),
- OREAD4(sc, OHCI_PERIODIC_START),
- OREAD4(sc, OHCI_LS_THRESHOLD));
- printf(" desca=0x%08x descb=0x%08x stat=0x%08x\n",
- OREAD4(sc, OHCI_RH_DESCRIPTOR_A),
- OREAD4(sc, OHCI_RH_DESCRIPTOR_B),
- OREAD4(sc, OHCI_RH_STATUS));
- printf(" port1=0x%08x port2=0x%08x\n",
- OREAD4(sc, OHCI_RH_PORT_STATUS(1)),
- OREAD4(sc, OHCI_RH_PORT_STATUS(2)));
- printf(" HCCA: frame_number=0x%04x done_head=0x%08x\n",
- LE(sc->sc_hcca->hcca_frame_number),
- LE(sc->sc_hcca->hcca_done_head));
-}
-#endif
-
-int
-ohci_intr(p)
- void *p;
-{
- ohci_softc_t *sc = p;
- u_int32_t intrs = 0, eintrs;
- ohci_physaddr_t done;
-
- /* In case the interrupt occurs before initialization has completed. */
- if (sc == NULL || sc->sc_hcca == NULL) { /* NWH added sc==0 */
-#ifdef DIAGNOSTIC
- printf("ohci_intr: sc->sc_hcca == NULL\n");
-#endif
- return (0);
- }
-
- done = LE(sc->sc_hcca->hcca_done_head);
- if (done != 0) {
- sc->sc_hcca->hcca_done_head = 0;
- if (done & ~OHCI_DONE_INTRS)
- intrs = OHCI_WDH;
- if (done & OHCI_DONE_INTRS)
- intrs |= OREAD4(sc, OHCI_INTERRUPT_STATUS);
- } else
- intrs = OREAD4(sc, OHCI_INTERRUPT_STATUS);
- if (!intrs)
- return (0);
- intrs &= ~OHCI_MIE;
- OWRITE4(sc, OHCI_INTERRUPT_STATUS, intrs); /* Acknowledge */
- eintrs = intrs & sc->sc_eintrs;
- if (!eintrs)
- return (0);
-
- sc->sc_intrs++;
- DPRINTFN(7, ("ohci_intr: sc=%p intrs=%x(%x) eintr=%x\n",
- sc, (u_int)intrs, OREAD4(sc, OHCI_INTERRUPT_STATUS),
- (u_int)eintrs));
-
- if (eintrs & OHCI_SO) {
- printf("%s: scheduling overrun\n",USBDEVNAME(sc->sc_bus.bdev));
- /* XXX do what */
- intrs &= ~OHCI_SO;
- }
- if (eintrs & OHCI_WDH) {
- ohci_process_done(sc, done &~ OHCI_DONE_INTRS);
- intrs &= ~OHCI_WDH;
- }
- if (eintrs & OHCI_RD) {
- /* XXX process resume detect */
- }
- if (eintrs & OHCI_UE) {
- printf("%s: unrecoverable error, controller halted\n",
- USBDEVNAME(sc->sc_bus.bdev));
- OWRITE4(sc, OHCI_CONTROL, OHCI_HCFS_RESET);
- /* XXX what else */
- }
- if (eintrs & OHCI_RHSC) {
- ohci_rhsc(sc, sc->sc_intrreqh);
- intrs &= ~OHCI_RHSC;
-
- /*
- * Disable RHSC interrupt for now, because it will be
- * on until the port has been reset.
- */
- ohci_rhsc_able(sc, 0);
- }
-
- /* Block unprocessed interrupts. XXX */
- OWRITE4(sc, OHCI_INTERRUPT_DISABLE, intrs);
- sc->sc_eintrs &= ~intrs;
-
- return (1);
-}
-
-void
-ohci_rhsc_able(sc, on)
- ohci_softc_t *sc;
- int on;
-{
- DPRINTFN(4, ("ohci_rhsc_able: on=%d\n", on));
- if (on) {
- sc->sc_eintrs |= OHCI_RHSC;
- OWRITE4(sc, OHCI_INTERRUPT_ENABLE, OHCI_RHSC);
- } else {
- sc->sc_eintrs &= ~OHCI_RHSC;
- OWRITE4(sc, OHCI_INTERRUPT_DISABLE, OHCI_RHSC);
- }
-}
-
-#ifdef USB_DEBUG
-char *ohci_cc_strs[] = {
- "NO_ERROR",
- "CRC",
- "BIT_STUFFING",
- "DATA_TOGGLE_MISMATCH",
- "STALL",
- "DEVICE_NOT_RESPONDING",
- "PID_CHECK_FAILURE",
- "UNEXPECTED_PID",
- "DATA_OVERRUN",
- "DATA_UNDERRUN",
- "BUFFER_OVERRUN",
- "BUFFER_UNDERRUN",
- "NOT_ACCESSED",
-};
-#endif
-
-void
-ohci_process_done(sc, done)
- ohci_softc_t *sc;
- ohci_physaddr_t done;
-{
- ohci_soft_td_t *std = NULL, *sdone;
- usbd_request_handle reqh;
- int len, cc;
-
- DPRINTFN(10,("ohci_process_done: done=0x%08lx\n", (u_long)done));
-
- /* Reverse the done list. */
- for (sdone = 0; done; done = LE(std->td->td_nexttd)) {
- std = ohci_hash_find_td(sc, done);
- std->dnext = sdone;
- sdone = std;
- }
-
-#ifdef USB_DEBUG
- if (ohcidebug > 10) {
- printf("ohci_process_done: TD done:\n");
- ohci_dump_tds(sdone);
- }
-#endif
-
- for (std = sdone; std; std = std->dnext) {
- reqh = std->reqh;
- DPRINTFN(10, ("ohci_process_done: std=%p reqh=%p hcpriv=%p\n",
- std, reqh, reqh->hcpriv));
- cc = OHCI_TD_GET_CC(LE(std->td->td_flags));
- if (cc == OHCI_CC_NO_ERROR) {
- if (std->td->td_cbp == 0)
- len = std->len;
- else
- len = LE(std->td->td_be) -
- LE(std->td->td_cbp) + 1;
- /*
- * Only do a callback on the last stage of a transfer.
- * Others have hcpriv = 0.
- */
- if ((reqh->pipe->endpoint->edesc->bmAttributes &
- UE_XFERTYPE) == UE_CONTROL) {
- /* For a control transfer the length is in
- * the xfer stage */
- if (reqh->hcpriv == std) {
- reqh->status = USBD_NORMAL_COMPLETION;
- ohci_ii_done(sc, reqh);
- } else
- reqh->actlen = len;
- } else {
- if (reqh->hcpriv == std) {
- reqh->actlen = len;
- reqh->status = USBD_NORMAL_COMPLETION;
- ohci_ii_done(sc, reqh);
- }
- }
- } else {
- ohci_soft_td_t *p, *n;
- struct ohci_pipe *opipe =
- (struct ohci_pipe *)reqh->pipe;
- DPRINTFN(-1,("ohci_process_done: error cc=%d (%s)\n",
- OHCI_TD_GET_CC(LE(std->td->td_flags)),
- ohci_cc_strs[OHCI_TD_GET_CC(LE(std->td->td_flags))]));
- /*
- * Endpoint is halted. First unlink all the TDs
- * belonging to the failed transfer, and then restart
- * the endpoint.
- */
- for (p = std->nexttd; p->reqh == reqh; p = n) {
- n = p->nexttd;
- ohci_hash_rem_td(sc, p);
- ohci_free_std(sc, p);
- }
- /* clear halt */
- opipe->sed->ed->ed_headp = LE(p->physaddr);
- OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_CLF);
-
- if (cc == OHCI_CC_STALL)
- reqh->status = USBD_STALLED;
- else
- reqh->status = USBD_IOERROR;
- ohci_ii_done(sc, reqh);
- }
- ohci_hash_rem_td(sc, std);
- ohci_free_std(sc, std);
- }
-}
-
-void
-ohci_ii_done(sc, reqh)
- ohci_softc_t *sc;
- usbd_request_handle reqh;
-{
- switch (reqh->pipe->endpoint->edesc->bmAttributes & UE_XFERTYPE) {
- case UE_CONTROL:
- ohci_ctrl_done(sc, reqh);
- usb_start_next(reqh->pipe);
- break;
- case UE_INTERRUPT:
- ohci_intr_done(sc, reqh);
- break;
- case UE_BULK:
- ohci_bulk_done(sc, reqh);
- usb_start_next(reqh->pipe);
- break;
- case UE_ISOCHRONOUS:
- printf("ohci_process_done: ISO done?\n");
- usb_start_next(reqh->pipe);
- break;
- }
-
- /* And finally execute callback. */
- reqh->xfercb(reqh);
-}
-
-void
-ohci_ctrl_done(sc, reqh)
- ohci_softc_t *sc;
- usbd_request_handle reqh;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)reqh->pipe;
- u_int len = opipe->u.ctl.length;
- usb_dma_t *dma;
-
- DPRINTFN(10,("ohci_ctrl_done: reqh=%p\n", reqh));
-
- if (!reqh->isreq) {
- panic("ohci_ctrl_done: not a request\n");
- return;
- }
-
- if (len != 0) {
- dma = &opipe->u.ctl.datadma;
- if (reqh->request.bmRequestType & UT_READ)
- memcpy(reqh->buffer, KERNADDR(dma), len);
- usb_freemem(sc->sc_dmatag, dma);
- }
- usb_untimeout(ohci_timeout, reqh, reqh->timo_handle);
-}
-
-void
-ohci_intr_done(sc, reqh)
- ohci_softc_t *sc;
- usbd_request_handle reqh;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)reqh->pipe;
- usb_dma_t *dma;
- ohci_soft_ed_t *sed = opipe->sed;
- ohci_soft_td_t *xfer, *tail;
-
-
- DPRINTFN(10,("ohci_intr_done: reqh=%p, actlen=%d\n",
- reqh, reqh->actlen));
-
- dma = &opipe->u.intr.datadma;
- memcpy(reqh->buffer, KERNADDR(dma), reqh->actlen);
-
- if (reqh->pipe->intrreqh == reqh) {
- xfer = opipe->tail;
- tail = ohci_alloc_std(sc); /* XXX should reuse TD */
- if (!tail) {
- reqh->status = USBD_NOMEM;
- return;
- }
- tail->reqh = 0;
-
- xfer->td->td_flags = LE(
- OHCI_TD_IN | OHCI_TD_NOCC |
- OHCI_TD_SET_DI(1) | OHCI_TD_TOGGLE_CARRY);
- if (reqh->flags & USBD_SHORT_XFER_OK)
- xfer->td->td_flags |= LE(OHCI_TD_R);
- xfer->td->td_cbp = LE(DMAADDR(dma));
- xfer->nexttd = tail;
- xfer->td->td_nexttd = LE(tail->physaddr);
- xfer->td->td_be = LE(LE(xfer->td->td_cbp) + reqh->length - 1);
- xfer->len = reqh->length;
- xfer->reqh = reqh;
-
- reqh->hcpriv = xfer;
-
- ohci_hash_add_td(sc, xfer);
- sed->ed->ed_tailp = LE(tail->physaddr);
- opipe->tail = tail;
- } else {
- usb_freemem(sc->sc_dmatag, dma);
- usb_start_next(reqh->pipe);
- }
-}
-
-void
-ohci_bulk_done(sc, reqh)
- ohci_softc_t *sc;
- usbd_request_handle reqh;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)reqh->pipe;
- usb_dma_t *dma;
-
-
- DPRINTFN(10,("ohci_bulk_done: reqh=%p, actlen=%d\n",
- reqh, reqh->actlen));
-
- dma = &opipe->u.bulk.datadma;
- if (reqh->request.bmRequestType & UT_READ)
- memcpy(reqh->buffer, KERNADDR(dma), reqh->actlen);
- usb_freemem(sc->sc_dmatag, dma);
- usb_untimeout(ohci_timeout, reqh, reqh->timo_handle);
-}
-
-void
-ohci_rhsc(sc, reqh)
- ohci_softc_t *sc;
- usbd_request_handle reqh;
-{
- usbd_pipe_handle pipe;
- struct ohci_pipe *opipe;
- u_char *p;
- int i, m;
- int hstatus;
-
- hstatus = OREAD4(sc, OHCI_RH_STATUS);
- DPRINTF(("ohci_rhsc: sc=%p reqh=%p hstatus=0x%08x\n",
- sc, reqh, hstatus));
-
- if (reqh == 0) {
- /* Just ignore the change. */
- return;
- }
-
- pipe = reqh->pipe;
- opipe = (struct ohci_pipe *)pipe;
-
- p = KERNADDR(&opipe->u.intr.datadma);
- m = min(sc->sc_noport, reqh->length * 8 - 1);
- memset(p, 0, reqh->length);
- for (i = 1; i <= m; i++) {
- if (OREAD4(sc, OHCI_RH_PORT_STATUS(i)) >> 16)
- p[i/8] |= 1 << (i%8);
- }
- DPRINTF(("ohci_rhsc: change=0x%02x\n", *p));
- reqh->actlen = reqh->length;
- reqh->status = USBD_NORMAL_COMPLETION;
- reqh->xfercb(reqh);
-
- if (reqh->pipe->intrreqh != reqh) {
- sc->sc_intrreqh = 0;
- usb_freemem(sc->sc_dmatag, &opipe->u.intr.datadma);
- usb_start_next(reqh->pipe);
- }
-}
-
-/*
- * Wait here until controller claims to have an interrupt.
- * Then call ohci_intr and return. Use timeout to avoid waiting
- * too long.
- */
-void
-ohci_waitintr(sc, reqh)
- ohci_softc_t *sc;
- usbd_request_handle reqh;
-{
- int timo = reqh->timeout;
- int usecs;
- u_int32_t intrs;
-
- reqh->status = USBD_IN_PROGRESS;
- for (usecs = timo * 1000000 / hz; usecs > 0; usecs -= 1000) {
- usb_delay_ms(&sc->sc_bus, 1);
- intrs = OREAD4(sc, OHCI_INTERRUPT_STATUS) & sc->sc_eintrs;
- DPRINTFN(15,("ohci_waitintr: 0x%04x\n", intrs));
-#ifdef USB_DEBUG
- if (ohcidebug > 15)
- ohci_dumpregs(sc);
-#endif
- if (intrs) {
- ohci_intr(sc);
- if (reqh->status != USBD_IN_PROGRESS)
- return;
- }
- }
-
- /* Timeout */
- DPRINTF(("ohci_waitintr: timeout\n"));
- reqh->status = USBD_TIMEOUT;
- ohci_ii_done(sc, reqh);
- /* XXX should free TD */
-}
-
-void
-ohci_poll(bus)
- struct usbd_bus *bus;
-{
- ohci_softc_t *sc = (ohci_softc_t *)bus;
-
- if (OREAD4(sc, OHCI_INTERRUPT_STATUS) & sc->sc_eintrs)
- ohci_intr(sc);
-}
-
-usbd_status
-ohci_device_request(reqh)
- usbd_request_handle reqh;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)reqh->pipe;
- usb_device_request_t *req = &reqh->request;
- usbd_device_handle dev = opipe->pipe.device;
- ohci_softc_t *sc = (ohci_softc_t *)dev->bus;
- int addr = dev->address;
- ohci_soft_td_t *setup, *xfer = 0, *stat, *next, *tail;
- ohci_soft_ed_t *sed;
- usb_dma_t *dmap;
- int isread;
- int len;
- usbd_status r;
- int s;
-
- isread = req->bmRequestType & UT_READ;
- len = UGETW(req->wLength);
-
- DPRINTFN(3,("ohci_device_control type=0x%02x, request=0x%02x, "
- "wValue=0x%04x, wIndex=0x%04x len=%d, addr=%d, endpt=%d\n",
- req->bmRequestType, req->bRequest, UGETW(req->wValue),
- UGETW(req->wIndex), len, addr,
- opipe->pipe.endpoint->edesc->bEndpointAddress));
-
- setup = opipe->tail;
- stat = ohci_alloc_std(sc);
- if (!stat) {
- r = USBD_NOMEM;
- goto bad1;
- }
- tail = ohci_alloc_std(sc);
- if (!tail) {
- r = USBD_NOMEM;
- goto bad2;
- }
- tail->reqh = 0;
-
- sed = opipe->sed;
- dmap = &opipe->u.ctl.datadma;
- opipe->u.ctl.length = len;
-
- /* Update device address and length since they may have changed. */
- /* XXX This only needs to be done once, but it's too early in open. */
- sed->ed->ed_flags = LE(
- (LE(sed->ed->ed_flags) & ~(OHCI_ED_ADDRMASK | OHCI_ED_MAXPMASK)) |
- OHCI_ED_SET_FA(addr) |
- OHCI_ED_SET_MAXP(UGETW(opipe->pipe.endpoint->edesc->wMaxPacketSize)));
-
- /* Set up data transaction */
- if (len != 0) {
- xfer = ohci_alloc_std(sc);
- if (!xfer) {
- r = USBD_NOMEM;
- goto bad3;
- }
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- goto bad4;
- xfer->td->td_flags = LE(
- (isread ? OHCI_TD_IN : OHCI_TD_OUT) | OHCI_TD_NOCC |
- OHCI_TD_TOGGLE_1 | OHCI_TD_NOINTR |
- (reqh->flags & USBD_SHORT_XFER_OK ? OHCI_TD_R : 0));
- xfer->td->td_cbp = LE(DMAADDR(dmap));
- xfer->nexttd = stat;
- xfer->td->td_nexttd = LE(stat->physaddr);
- xfer->td->td_be = LE(LE(xfer->td->td_cbp) + len - 1);
- xfer->len = len;
- xfer->reqh = reqh;
-
- next = xfer;
- } else
- next = stat;
-
- memcpy(KERNADDR(&opipe->u.ctl.reqdma), req, sizeof *req);
- if (!isread && len != 0)
- memcpy(KERNADDR(dmap), reqh->buffer, len);
-
- setup->td->td_flags = LE(OHCI_TD_SETUP | OHCI_TD_NOCC |
- OHCI_TD_TOGGLE_0 | OHCI_TD_NOINTR);
- setup->td->td_cbp = LE(DMAADDR(&opipe->u.ctl.reqdma));
- setup->nexttd = next;
- setup->td->td_nexttd = LE(next->physaddr);
- setup->td->td_be = LE(LE(setup->td->td_cbp) + sizeof *req - 1);
- setup->len = 0; /* XXX The number of byte we count */
- setup->reqh = reqh;
-
- stat->td->td_flags = LE(
- (isread ? OHCI_TD_OUT : OHCI_TD_IN) | OHCI_TD_NOCC |
- OHCI_TD_TOGGLE_1 | OHCI_TD_SET_DI(1));
- stat->td->td_cbp = 0;
- stat->nexttd = tail;
- stat->td->td_nexttd = LE(tail->physaddr);
- stat->td->td_be = 0;
- stat->len = 0;
- stat->reqh = reqh;
-
- reqh->hcpriv = stat;
-
-#if USB_DEBUG
- if (ohcidebug > 5) {
- printf("ohci_device_request:\n");
- ohci_dump_ed(sed);
- ohci_dump_tds(setup);
- }
-#endif
-
- /* Insert ED in schedule */
- s = splusb();
- ohci_hash_add_td(sc, setup);
- if (len != 0)
- ohci_hash_add_td(sc, xfer);
- ohci_hash_add_td(sc, stat);
- sed->ed->ed_tailp = LE(tail->physaddr);
- opipe->tail = tail;
- OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_CLF);
- if (reqh->timeout && !sc->sc_bus.use_polling) {
- usb_timeout(ohci_timeout, reqh,
- MS_TO_TICKS(reqh->timeout), reqh->timo_handle);
- }
- splx(s);
-
-#if USB_DEBUG
- if (ohcidebug > 5) {
- delay(5000);
- printf("ohci_device_request: status=%x\n",
- OREAD4(sc, OHCI_COMMAND_STATUS));
- ohci_dump_ed(sed);
- ohci_dump_tds(setup);
- }
-#endif
-
- return (USBD_NORMAL_COMPLETION);
-
- bad4:
- ohci_free_std(sc, xfer);
- bad3:
- ohci_free_std(sc, tail);
- bad2:
- ohci_free_std(sc, stat);
- bad1:
- return (r);
-}
-
-/*
- * Add an ED to the schedule. Called at splusb().
- */
-void
-ohci_add_ed(sed, head)
- ohci_soft_ed_t *sed;
- ohci_soft_ed_t *head;
-{
- sed->next = head->next;
- sed->ed->ed_nexted = head->ed->ed_nexted;
- head->next = sed;
- head->ed->ed_nexted = LE(sed->physaddr);
-}
-
-/*
- * Remove an ED from the schedule. Called at splusb().
- */
-void
-ohci_rem_ed(sed, head)
- ohci_soft_ed_t *sed;
- ohci_soft_ed_t *head;
-{
- ohci_soft_ed_t *p;
-
- /* XXX */
- for (p = head; p && p->next != sed; p = p->next)
- ;
- if (!p)
- panic("ohci_rem_ed: ED not found\n");
- p->next = sed->next;
- p->ed->ed_nexted = sed->ed->ed_nexted;
-}
-
-/*
- * When a transfer is completed the TD is added to the done queue by
- * the host controller. This queue is the processed by software.
- * Unfortunately the queue contains the physical address of the TD
- * and we have no simple way to translate this back to a kernel address.
- * To make the translation possible (and fast) we use a hash table of
- * TDs currently in the schedule. The physical address is used as the
- * hash value.
- */
-
-#define HASH(a) (((a) >> 4) % OHCI_HASH_SIZE)
-/* Called at splusb() */
-void
-ohci_hash_add_td(sc, std)
- ohci_softc_t *sc;
- ohci_soft_td_t *std;
-{
- int h = HASH(std->physaddr);
-
- LIST_INSERT_HEAD(&sc->sc_hash_tds[h], std, hnext);
-}
-
-/* Called at splusb() */
-void
-ohci_hash_rem_td(sc, std)
- ohci_softc_t *sc;
- ohci_soft_td_t *std;
-{
- LIST_REMOVE(std, hnext);
-}
-
-ohci_soft_td_t *
-ohci_hash_find_td(sc, a)
- ohci_softc_t *sc;
- ohci_physaddr_t a;
-{
- int h = HASH(a);
- ohci_soft_td_t *std;
-
- for (std = LIST_FIRST(&sc->sc_hash_tds[h]);
- std != 0;
- std = LIST_NEXT(std, hnext))
- if (std->physaddr == a)
- return (std);
- panic("ohci_hash_find_td: addr 0x%08lx not found\n", (u_long)a);
-}
-
-void
-ohci_timeout(addr)
- void *addr;
-{
-#if 0
- usbd_request_handle *reqh = addr;
- int s;
-
- DPRINTF(("ohci_timeout: reqh=%p\n", reqh));
- s = splusb();
- /* XXX need to inactivate TD before calling interrupt routine */
- ohci_XXX_done(reqh);
- splx(s);
-#endif
-}
-
-#ifdef USB_DEBUG
-void
-ohci_dump_tds(std)
- ohci_soft_td_t *std;
-{
- for (; std; std = std->nexttd)
- ohci_dump_td(std);
-}
-
-void
-ohci_dump_td(std)
- ohci_soft_td_t *std;
-{
- printf("TD(%p) at %08lx: %b delay=%d ec=%d cc=%d\ncbp=0x%08lx "
- "nexttd=0x%08lx be=0x%08lx\n",
- std, (u_long)std->physaddr,
- (int)LE(std->td->td_flags),
- "\20\23R\24OUT\25IN\31TOG1\32SETTOGGLE",
- OHCI_TD_GET_DI(LE(std->td->td_flags)),
- OHCI_TD_GET_EC(LE(std->td->td_flags)),
- OHCI_TD_GET_CC(LE(std->td->td_flags)),
- (u_long)LE(std->td->td_cbp),
- (u_long)LE(std->td->td_nexttd), (u_long)LE(std->td->td_be));
-}
-
-void
-ohci_dump_ed(sed)
- ohci_soft_ed_t *sed;
-{
- printf("ED(%p) at %08lx: addr=%d endpt=%d maxp=%d %b\ntailp=0x%08lx "
- "headp=%b nexted=0x%08lx\n",
- sed, (u_long)sed->physaddr,
- OHCI_ED_GET_FA(LE(sed->ed->ed_flags)),
- OHCI_ED_GET_EN(LE(sed->ed->ed_flags)),
- OHCI_ED_GET_MAXP(LE(sed->ed->ed_flags)),
- (int)LE(sed->ed->ed_flags),
- "\20\14OUT\15IN\16LOWSPEED\17SKIP\20ISO",
- (u_long)LE(sed->ed->ed_tailp),
- (int)LE(sed->ed->ed_headp), "\20\1HALT\2CARRY",
- (u_long)LE(sed->ed->ed_nexted));
-}
-#endif
-
-usbd_status
-ohci_open(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_device_handle dev = pipe->device;
- ohci_softc_t *sc = (ohci_softc_t *)dev->bus;
- usb_endpoint_descriptor_t *ed = pipe->endpoint->edesc;
- struct ohci_pipe *opipe = (struct ohci_pipe *)pipe;
- u_int8_t addr = dev->address;
- ohci_soft_ed_t *sed;
- ohci_soft_td_t *std;
- usbd_status r;
- int s;
-
- DPRINTFN(1, ("ohci_open: pipe=%p, addr=%d, endpt=%d (%d)\n",
- pipe, addr, ed->bEndpointAddress, sc->sc_addr));
- if (addr == sc->sc_addr) {
- switch (ed->bEndpointAddress) {
- case USB_CONTROL_ENDPOINT:
- pipe->methods = &ohci_root_ctrl_methods;
- break;
- case UE_IN | OHCI_INTR_ENDPT:
- pipe->methods = &ohci_root_intr_methods;
- break;
- default:
- return (USBD_INVAL);
- }
- } else {
- sed = ohci_alloc_sed(sc);
- if (sed == 0)
- goto bad0;
- std = ohci_alloc_std(sc);
- if (std == 0)
- goto bad1;
- opipe->sed = sed;
- opipe->tail = std;
- sed->ed->ed_flags = LE(
- OHCI_ED_SET_FA(addr) |
- OHCI_ED_SET_EN(ed->bEndpointAddress) |
- OHCI_ED_DIR_TD |
- (dev->lowspeed ? OHCI_ED_SPEED : 0) |
- ((ed->bmAttributes & UE_XFERTYPE) == UE_ISOCHRONOUS ?
- OHCI_ED_FORMAT_ISO : OHCI_ED_FORMAT_GEN) |
- OHCI_ED_SET_MAXP(UGETW(ed->wMaxPacketSize)));
- sed->ed->ed_headp = sed->ed->ed_tailp = LE(std->physaddr);
-
- switch (ed->bmAttributes & UE_XFERTYPE) {
- case UE_CONTROL:
- pipe->methods = &ohci_device_ctrl_methods;
- r = usb_allocmem(sc->sc_dmatag,
- sizeof(usb_device_request_t),
- 0, &opipe->u.ctl.reqdma);
- if (r != USBD_NORMAL_COMPLETION)
- goto bad;
- s = splusb();
- ohci_add_ed(sed, sc->sc_ctrl_head);
- splx(s);
- break;
- case UE_INTERRUPT:
- pipe->methods = &ohci_device_intr_methods;
- return (ohci_device_setintr(sc, opipe, ed->bInterval));
- case UE_ISOCHRONOUS:
- printf("ohci_open: open iso unimplemented\n");
- return (USBD_XXX);
- case UE_BULK:
- pipe->methods = &ohci_device_bulk_methods;
- s = splusb();
- ohci_add_ed(sed, sc->sc_bulk_head);
- splx(s);
- break;
- }
- }
- return (USBD_NORMAL_COMPLETION);
-
- bad:
- ohci_free_std(sc, std);
- bad1:
- ohci_free_sed(sc, sed);
- bad0:
- return (USBD_NOMEM);
-
-}
-
-/*
- * Data structures and routines to emulate the root hub.
- */
-usb_device_descriptor_t ohci_devd = {
- USB_DEVICE_DESCRIPTOR_SIZE,
- UDESC_DEVICE, /* type */
- {0x00, 0x01}, /* USB version */
- UCLASS_HUB, /* class */
- USUBCLASS_HUB, /* subclass */
- 0, /* protocol */
- 64, /* max packet */
- {0},{0},{0x00,0x01}, /* device id */
- 1,2,0, /* string indicies */
- 1 /* # of configurations */
-};
-
-usb_config_descriptor_t ohci_confd = {
- USB_CONFIG_DESCRIPTOR_SIZE,
- UDESC_CONFIG,
- {USB_CONFIG_DESCRIPTOR_SIZE +
- USB_INTERFACE_DESCRIPTOR_SIZE +
- USB_ENDPOINT_DESCRIPTOR_SIZE},
- 1,
- 1,
- 0,
- UC_SELF_POWERED,
- 0 /* max power */
-};
-
-usb_interface_descriptor_t ohci_ifcd = {
- USB_INTERFACE_DESCRIPTOR_SIZE,
- UDESC_INTERFACE,
- 0,
- 0,
- 1,
- UCLASS_HUB,
- USUBCLASS_HUB,
- 0,
- 0
-};
-
-usb_endpoint_descriptor_t ohci_endpd = {
- USB_ENDPOINT_DESCRIPTOR_SIZE,
- UDESC_ENDPOINT,
- UE_IN | OHCI_INTR_ENDPT,
- UE_INTERRUPT,
- {8, 0}, /* max packet */
- 255
-};
-
-usb_hub_descriptor_t ohci_hubd = {
- USB_HUB_DESCRIPTOR_SIZE,
- UDESC_HUB,
- 0,
- {0,0},
- 0,
- 0,
- {0},
-};
-
-int
-ohci_str(p, l, s)
- usb_string_descriptor_t *p;
- int l;
- char *s;
-{
- int i;
-
- if (l == 0)
- return (0);
- p->bLength = 2 * strlen(s) + 2;
- if (l == 1)
- return (1);
- p->bDescriptorType = UDESC_STRING;
- l -= 2;
- for (i = 0; s[i] && l > 1; i++, l -= 2)
- USETW2(p->bString[i], 0, s[i]);
- return (2*i+2);
-}
-
-/*
- * Simulate a hardware hub by handling all the necessary requests.
- */
-usbd_status
-ohci_root_ctrl_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (ohci_root_ctrl_start(reqh));
-}
-
-usbd_status
-ohci_root_ctrl_start(reqh)
- usbd_request_handle reqh;
-{
- ohci_softc_t *sc = (ohci_softc_t *)reqh->pipe->device->bus;
- usb_device_request_t *req;
- void *buf;
- int port, i;
- int len, value, index, l, totlen = 0;
- usb_port_status_t ps;
- usb_hub_descriptor_t hubd;
- usbd_status r;
- u_int32_t v;
-
- if (!reqh->isreq)
- /* XXX panic */
- return (USBD_INVAL);
- req = &reqh->request;
- buf = reqh->buffer;
-
- DPRINTFN(4,("ohci_root_ctrl_control type=0x%02x request=%02x\n",
- req->bmRequestType, req->bRequest));
-
- len = UGETW(req->wLength);
- value = UGETW(req->wValue);
- index = UGETW(req->wIndex);
-#define C(x,y) ((x) | ((y) << 8))
- switch(C(req->bRequest, req->bmRequestType)) {
- case C(UR_CLEAR_FEATURE, UT_WRITE_DEVICE):
- case C(UR_CLEAR_FEATURE, UT_WRITE_INTERFACE):
- case C(UR_CLEAR_FEATURE, UT_WRITE_ENDPOINT):
- /*
- * DEVICE_REMOTE_WAKEUP and ENDPOINT_HALT are no-ops
- * for the integrated root hub.
- */
- break;
- case C(UR_GET_CONFIG, UT_READ_DEVICE):
- if (len > 0) {
- *(u_int8_t *)buf = sc->sc_conf;
- totlen = 1;
- }
- break;
- case C(UR_GET_DESCRIPTOR, UT_READ_DEVICE):
- DPRINTFN(8,("ohci_root_ctrl_control wValue=0x%04x\n", value));
- switch(value >> 8) {
- case UDESC_DEVICE:
- if ((value & 0xff) != 0) {
- r = USBD_IOERROR;
- goto ret;
- }
- totlen = l = min(len, USB_DEVICE_DESCRIPTOR_SIZE);
- memcpy(buf, &ohci_devd, l);
- break;
- case UDESC_CONFIG:
- if ((value & 0xff) != 0) {
- r = USBD_IOERROR;
- goto ret;
- }
- totlen = l = min(len, USB_CONFIG_DESCRIPTOR_SIZE);
- memcpy(buf, &ohci_confd, l);
- buf = (char *)buf + l;
- len -= l;
- l = min(len, USB_INTERFACE_DESCRIPTOR_SIZE);
- totlen += l;
- memcpy(buf, &ohci_ifcd, l);
- buf = (char *)buf + l;
- len -= l;
- l = min(len, USB_ENDPOINT_DESCRIPTOR_SIZE);
- totlen += l;
- memcpy(buf, &ohci_endpd, l);
- break;
- case UDESC_STRING:
- if (len == 0)
- break;
- *(u_int8_t *)buf = 0;
- totlen = 1;
- switch (value & 0xff) {
- case 1: /* Vendor */
- totlen = ohci_str(buf, len, sc->sc_vendor);
- break;
- case 2: /* Product */
- totlen = ohci_str(buf, len, "OHCI root hub");
- break;
- }
- break;
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- break;
- case C(UR_GET_INTERFACE, UT_READ_INTERFACE):
- if (len > 0) {
- *(u_int8_t *)buf = 0;
- totlen = 1;
- }
- break;
- case C(UR_GET_STATUS, UT_READ_DEVICE):
- if (len > 1) {
- USETW(((usb_status_t *)buf)->wStatus,UDS_SELF_POWERED);
- totlen = 2;
- }
- break;
- case C(UR_GET_STATUS, UT_READ_INTERFACE):
- case C(UR_GET_STATUS, UT_READ_ENDPOINT):
- if (len > 1) {
- USETW(((usb_status_t *)buf)->wStatus, 0);
- totlen = 2;
- }
- break;
- case C(UR_SET_ADDRESS, UT_WRITE_DEVICE):
- if (value >= USB_MAX_DEVICES) {
- r = USBD_IOERROR;
- goto ret;
- }
- sc->sc_addr = value;
- break;
- case C(UR_SET_CONFIG, UT_WRITE_DEVICE):
- if (value != 0 && value != 1) {
- r = USBD_IOERROR;
- goto ret;
- }
- sc->sc_conf = value;
- break;
- case C(UR_SET_DESCRIPTOR, UT_WRITE_DEVICE):
- break;
- case C(UR_SET_FEATURE, UT_WRITE_DEVICE):
- case C(UR_SET_FEATURE, UT_WRITE_INTERFACE):
- case C(UR_SET_FEATURE, UT_WRITE_ENDPOINT):
- r = USBD_IOERROR;
- goto ret;
- case C(UR_SET_INTERFACE, UT_WRITE_INTERFACE):
- break;
- case C(UR_SYNCH_FRAME, UT_WRITE_ENDPOINT):
- break;
- /* Hub requests */
- case C(UR_CLEAR_FEATURE, UT_WRITE_CLASS_DEVICE):
- break;
- case C(UR_CLEAR_FEATURE, UT_WRITE_CLASS_OTHER):
- DPRINTFN(8, ("ohci_root_ctrl_control: UR_CLEAR_PORT_FEATURE "
- "port=%d feature=%d\n",
- index, value));
- if (index < 1 || index > sc->sc_noport) {
- r = USBD_IOERROR;
- goto ret;
- }
- port = OHCI_RH_PORT_STATUS(index);
- switch(value) {
- case UHF_PORT_ENABLE:
- OWRITE4(sc, port, UPS_CURRENT_CONNECT_STATUS);
- break;
- case UHF_PORT_SUSPEND:
- OWRITE4(sc, port, UPS_OVERCURRENT_INDICATOR);
- break;
- case UHF_PORT_POWER:
- OWRITE4(sc, port, UPS_LOW_SPEED);
- break;
- case UHF_C_PORT_CONNECTION:
- OWRITE4(sc, port, UPS_C_CONNECT_STATUS << 16);
- break;
- case UHF_C_PORT_ENABLE:
- OWRITE4(sc, port, UPS_C_PORT_ENABLED << 16);
- break;
- case UHF_C_PORT_SUSPEND:
- OWRITE4(sc, port, UPS_C_SUSPEND << 16);
- break;
- case UHF_C_PORT_OVER_CURRENT:
- OWRITE4(sc, port, UPS_C_OVERCURRENT_INDICATOR << 16);
- break;
- case UHF_C_PORT_RESET:
- OWRITE4(sc, port, UPS_C_PORT_RESET << 16);
- break;
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- switch(value) {
- case UHF_C_PORT_CONNECTION:
- case UHF_C_PORT_ENABLE:
- case UHF_C_PORT_SUSPEND:
- case UHF_C_PORT_OVER_CURRENT:
- case UHF_C_PORT_RESET:
- /* Enable RHSC interrupt if condition is cleared. */
- if ((OREAD4(sc, port) >> 16) == 0)
- ohci_rhsc_able(sc, 1);
- break;
- default:
- break;
- }
- break;
- case C(UR_GET_DESCRIPTOR, UT_READ_CLASS_DEVICE):
- if (value != 0) {
- r = USBD_IOERROR;
- goto ret;
- }
- v = OREAD4(sc, OHCI_RH_DESCRIPTOR_A);
- hubd = ohci_hubd;
- hubd.bNbrPorts = sc->sc_noport;
- USETW(hubd.wHubCharacteristics,
- (v & OHCI_NPS ? UHD_PWR_NO_SWITCH :
- v & OHCI_PSM ? UHD_PWR_GANGED : UHD_PWR_INDIVIDUAL)
- /* XXX overcurrent */
- );
- hubd.bPwrOn2PwrGood = OHCI_GET_POTPGT(v);
- v = OREAD4(sc, OHCI_RH_DESCRIPTOR_B);
- for (i = 0, l = sc->sc_noport; l > 0; i++, l -= 8, v >>= 8)
- hubd.DeviceRemovable[i++] = (u_int8_t)v;
- hubd.bDescLength = USB_HUB_DESCRIPTOR_SIZE + i;
- l = min(len, hubd.bDescLength);
- totlen = l;
- memcpy(buf, &hubd, l);
- break;
- case C(UR_GET_STATUS, UT_READ_CLASS_DEVICE):
- if (len != 4) {
- r = USBD_IOERROR;
- goto ret;
- }
- memset(buf, 0, len); /* ? XXX */
- totlen = len;
- break;
- case C(UR_GET_STATUS, UT_READ_CLASS_OTHER):
- DPRINTFN(8,("ohci_root_ctrl_transfer: get port status i=%d\n",
- index));
- if (index < 1 || index > sc->sc_noport) {
- r = USBD_IOERROR;
- goto ret;
- }
- if (len != 4) {
- r = USBD_IOERROR;
- goto ret;
- }
- v = OREAD4(sc, OHCI_RH_PORT_STATUS(index));
- DPRINTFN(8,("ohci_root_ctrl_transfer: port status=0x%04x\n",
- v));
- USETW(ps.wPortStatus, v);
- USETW(ps.wPortChange, v >> 16);
- l = min(len, sizeof ps);
- memcpy(buf, &ps, l);
- totlen = l;
- break;
- case C(UR_SET_DESCRIPTOR, UT_WRITE_CLASS_DEVICE):
- r = USBD_IOERROR;
- goto ret;
- case C(UR_SET_FEATURE, UT_WRITE_CLASS_DEVICE):
- break;
- case C(UR_SET_FEATURE, UT_WRITE_CLASS_OTHER):
- if (index < 1 || index > sc->sc_noport) {
- r = USBD_IOERROR;
- goto ret;
- }
- port = OHCI_RH_PORT_STATUS(index);
- switch(value) {
- case UHF_PORT_ENABLE:
- OWRITE4(sc, port, UPS_PORT_ENABLED);
- break;
- case UHF_PORT_SUSPEND:
- OWRITE4(sc, port, UPS_SUSPEND);
- break;
- case UHF_PORT_RESET:
- DPRINTFN(5,("ohci_root_ctrl_transfer: reset port %d\n",
- index));
- OWRITE4(sc, port, UPS_RESET);
- for (i = 0; i < 10; i++) {
- usb_delay_ms(&sc->sc_bus, 10);
- if ((OREAD4(sc, port) & UPS_RESET) == 0)
- break;
- }
- DPRINTFN(8,("ohci port %d reset, status = 0x%04x\n",
- index, OREAD4(sc, port)));
- break;
- case UHF_PORT_POWER:
- DPRINTFN(2,("ohci_root_ctrl_transfer: set port power "
- "%d\n", index));
- OWRITE4(sc, port, UPS_PORT_POWER);
- break;
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- break;
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- reqh->actlen = totlen;
- r = USBD_NORMAL_COMPLETION;
- ret:
- reqh->status = r;
- reqh->xfercb(reqh);
- usb_start_next(reqh->pipe);
- return (USBD_IN_PROGRESS);
-}
-
-/* Abort a root control request. */
-void
-ohci_root_ctrl_abort(reqh)
- usbd_request_handle reqh;
-{
- /* Nothing to do, all transfers are synchronous. */
-}
-
-/* Close the root pipe. */
-void
-ohci_root_ctrl_close(pipe)
- usbd_pipe_handle pipe;
-{
- DPRINTF(("ohci_root_ctrl_close\n"));
-}
-
-usbd_status
-ohci_root_intr_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (ohci_root_intr_start(reqh));
-}
-
-usbd_status
-ohci_root_intr_start(reqh)
- usbd_request_handle reqh;
-{
- usbd_pipe_handle pipe = reqh->pipe;
- ohci_softc_t *sc = (ohci_softc_t *)pipe->device->bus;
- struct ohci_pipe *upipe = (struct ohci_pipe *)pipe;
- usb_dma_t *dmap;
- usbd_status r;
- int len;
-
- len = reqh->length;
- dmap = &upipe->u.intr.datadma;
- if (len == 0)
- return (USBD_INVAL); /* XXX should it be? */
-
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- sc->sc_intrreqh = reqh;
-
- return (USBD_IN_PROGRESS);
-}
-
-/* Abort a root interrupt request. */
-void
-ohci_root_intr_abort(reqh)
- usbd_request_handle reqh;
-{
- /* No need to abort. */
-}
-
-/* Close the root pipe. */
-void
-ohci_root_intr_close(pipe)
- usbd_pipe_handle pipe;
-{
- ohci_softc_t *sc = (ohci_softc_t *)pipe->device->bus;
- sc->sc_intrreqh = 0;
-
- DPRINTF(("ohci_root_intr_close\n"));
-}
-
-/************************/
-
-usbd_status
-ohci_device_ctrl_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (ohci_device_ctrl_start(reqh));
-}
-
-usbd_status
-ohci_device_ctrl_start(reqh)
- usbd_request_handle reqh;
-{
- ohci_softc_t *sc = (ohci_softc_t *)reqh->pipe->device->bus;
- usbd_status r;
-
- if (!reqh->isreq) {
- /* XXX panic */
- printf("ohci_device_ctrl_transfer: not a request\n");
- return (USBD_INVAL);
- }
-
- r = ohci_device_request(reqh);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
-
- if (sc->sc_bus.use_polling)
- ohci_waitintr(sc, reqh);
- return (USBD_IN_PROGRESS);
-}
-
-/* Abort a device control request. */
-void
-ohci_device_ctrl_abort(reqh)
- usbd_request_handle reqh;
-{
- /* XXX inactivate */
- usb_delay_ms(reqh->pipe->device->bus, 1); /* make sure it is donw */
- /* XXX call done */
-}
-
-/* Close a device control pipe. */
-void
-ohci_device_ctrl_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)pipe;
- ohci_softc_t *sc = (ohci_softc_t *)pipe->device->bus;
- ohci_soft_ed_t *sed = opipe->sed;
- int s;
-
- s = splusb();
- sed->ed->ed_flags |= LE(OHCI_ED_SKIP);
- if ((LE(sed->ed->ed_tailp) & OHCI_TAILMASK) != LE(sed->ed->ed_headp))
- usb_delay_ms(&sc->sc_bus, 2);
- ohci_rem_ed(sed, sc->sc_ctrl_head);
- splx(s);
- ohci_free_std(sc, opipe->tail);
- ohci_free_sed(sc, opipe->sed);
- /* XXX free other resources */
-}
-
-/************************/
-
-usbd_status
-ohci_device_bulk_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (ohci_device_bulk_start(reqh));
-}
-
-usbd_status
-ohci_device_bulk_start(reqh)
- usbd_request_handle reqh;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)reqh->pipe;
- usbd_device_handle dev = opipe->pipe.device;
- ohci_softc_t *sc = (ohci_softc_t *)dev->bus;
- int addr = dev->address;
- ohci_soft_td_t *xfer, *tail;
- ohci_soft_ed_t *sed;
- usb_dma_t *dmap;
- usbd_status r;
- int s, len, isread;
-
- if (reqh->isreq) {
- /* XXX panic */
- printf("ohci_device_bulk_transfer: a request\n");
- return (USBD_INVAL);
- }
-
- len = reqh->length;
- dmap = &opipe->u.bulk.datadma;
- isread = reqh->pipe->endpoint->edesc->bEndpointAddress & UE_IN;
- sed = opipe->sed;
-
- opipe->u.bulk.length = len;
-
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret1;
-
- tail = ohci_alloc_std(sc);
- if (!tail) {
- r = USBD_NOMEM;
- goto ret2;
- }
- tail->reqh = 0;
-
- /* Update device address */
- sed->ed->ed_flags = LE(
- (LE(sed->ed->ed_flags) & ~OHCI_ED_ADDRMASK) |
- OHCI_ED_SET_FA(addr));
-
- /* Set up data transaction */
- xfer = opipe->tail;
- xfer->td->td_flags = LE(
- (isread ? OHCI_TD_IN : OHCI_TD_OUT) | OHCI_TD_NOCC |
- OHCI_TD_SET_DI(1) | OHCI_TD_TOGGLE_CARRY |
- (reqh->flags & USBD_SHORT_XFER_OK ? OHCI_TD_R : 0));
- xfer->td->td_cbp = LE(DMAADDR(dmap));
- xfer->nexttd = tail;
- xfer->td->td_nexttd = LE(tail->physaddr);
- xfer->td->td_be = LE(LE(xfer->td->td_cbp) + len - 1);
- xfer->len = len;
- xfer->reqh = reqh;
-
- reqh->hcpriv = xfer;
-
- if (!isread)
- memcpy(KERNADDR(dmap), reqh->buffer, len);
-
- /* Insert ED in schedule */
- s = splusb();
- ohci_hash_add_td(sc, xfer);
- sed->ed->ed_tailp = LE(tail->physaddr);
- opipe->tail = tail;
- OWRITE4(sc, OHCI_COMMAND_STATUS, OHCI_BLF);
- if (reqh->timeout && !sc->sc_bus.use_polling) {
- usb_timeout(ohci_timeout, reqh,
- MS_TO_TICKS(reqh->timeout), reqh->timo_handle);
- }
- splx(s);
-
- return (USBD_IN_PROGRESS);
-
- ret2:
- usb_freemem(sc->sc_dmatag, dmap);
- ret1:
- return (r);
-}
-
-/* Abort a device bulk request. */
-void
-ohci_device_bulk_abort(reqh)
- usbd_request_handle reqh;
-{
-#if 0
- sed->ed->ed_flags |= LE(OHCI_ED_SKIP);
- if ((LE(sed->ed->ed_tailp) & OHCI_TAILMASK) != LE(sed->ed->ed_headp))
- usb_delay_ms(reqh->pipe->device->bus, 2);
-#endif
- /* XXX inactivate */
- usb_delay_ms(reqh->pipe->device->bus, 1); /* make sure it is done */
- /* XXX call done */
-}
-
-/* Close a device bulk pipe. */
-void
-ohci_device_bulk_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)pipe;
- usbd_device_handle dev = opipe->pipe.device;
- ohci_softc_t *sc = (ohci_softc_t *)dev->bus;
- int s;
-
- s = splusb();
- ohci_rem_ed(opipe->sed, sc->sc_bulk_head);
- splx(s);
- ohci_free_std(sc, opipe->tail);
- ohci_free_sed(sc, opipe->sed);
- /* XXX free other resources */
-}
-
-/************************/
-
-usbd_status
-ohci_device_intr_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (ohci_device_intr_start(reqh));
-}
-
-usbd_status
-ohci_device_intr_start(reqh)
- usbd_request_handle reqh;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)reqh->pipe;
- usbd_device_handle dev = opipe->pipe.device;
- ohci_softc_t *sc = (ohci_softc_t *)dev->bus;
- ohci_soft_ed_t *sed = opipe->sed;
- ohci_soft_td_t *xfer, *tail;
- usb_dma_t *dmap;
- usbd_status r;
- int len;
- int s;
-
- DPRINTFN(3, ("ohci_device_intr_transfer: reqh=%p buf=%p len=%d "
- "flags=%d priv=%p\n",
- reqh, reqh->buffer, reqh->length, reqh->flags, reqh->priv));
-
- if (reqh->isreq)
- panic("ohci_device_intr_transfer: a request\n");
-
- len = reqh->length;
- dmap = &opipe->u.intr.datadma;
- if (len == 0)
- return (USBD_INVAL); /* XXX should it be? */
-
- xfer = opipe->tail;
- tail = ohci_alloc_std(sc);
- if (!tail) {
- r = USBD_NOMEM;
- goto ret1;
- }
- tail->reqh = 0;
-
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret2;
-
- xfer->td->td_flags = LE(
- OHCI_TD_IN | OHCI_TD_NOCC |
- OHCI_TD_SET_DI(1) | OHCI_TD_TOGGLE_CARRY);
- if (reqh->flags & USBD_SHORT_XFER_OK)
- xfer->td->td_flags |= LE(OHCI_TD_R);
- xfer->td->td_cbp = LE(DMAADDR(dmap));
- xfer->nexttd = tail;
- xfer->td->td_nexttd = LE(tail->physaddr);
- xfer->td->td_be = LE(LE(xfer->td->td_cbp) + len - 1);
- xfer->len = len;
- xfer->reqh = reqh;
-
- reqh->hcpriv = xfer;
-
-#if USB_DEBUG
- if (ohcidebug > 5) {
- printf("ohci_device_intr_transfer:\n");
- ohci_dump_ed(sed);
- ohci_dump_tds(xfer);
- }
-#endif
-
- /* Insert ED in schedule */
- s = splusb();
- ohci_hash_add_td(sc, xfer);
- sed->ed->ed_tailp = LE(tail->physaddr);
- opipe->tail = tail;
-#if 0
- if (reqh->timeout && !sc->sc_bus.use_polling) {
- usb_timeout(ohci_timeout, reqh,
- MS_TO_TICKS(reqh->timeout), reqh->timo_handle);
- }
-#endif
- sed->ed->ed_flags &= LE(~OHCI_ED_SKIP);
-
-#ifdef USB_DEBUG
- if (ohcidebug > 5) {
- delay(5000);
- printf("ohci_device_intr_transfer: status=%x\n",
- OREAD4(sc, OHCI_COMMAND_STATUS));
- ohci_dump_ed(sed);
- ohci_dump_tds(xfer);
- }
-#endif
- /* moved splx(s) because of indefinite printing of TD's */
- splx(s);
-
- return (USBD_IN_PROGRESS);
-
- ret2:
- ohci_free_std(sc, xfer);
- ret1:
- return (r);
-}
-
-/* Abort a device control request. */
-void
-ohci_device_intr_abort(reqh)
- usbd_request_handle reqh;
-{
- /* XXX inactivate */
- usb_delay_ms(reqh->pipe->device->bus, 1); /* make sure it is done */
- if (reqh->pipe->intrreqh == reqh) {
- DPRINTF(("ohci_device_intr_abort: remove\n"));
- reqh->pipe->intrreqh = 0;
- ohci_intr_done((ohci_softc_t *)reqh->pipe->device->bus, reqh);
- }
-}
-
-/* Close a device interrupt pipe. */
-void
-ohci_device_intr_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct ohci_pipe *opipe = (struct ohci_pipe *)pipe;
- ohci_softc_t *sc = (ohci_softc_t *)pipe->device->bus;
- int nslots = opipe->u.intr.nslots;
- int pos = opipe->u.intr.pos;
- int j;
- ohci_soft_ed_t *p, *sed = opipe->sed;
- int s;
-
- DPRINTFN(1,("ohci_device_intr_close: pipe=%p nslots=%d pos=%d\n",
- pipe, nslots, pos));
- s = splusb();
- sed->ed->ed_flags |= LE(OHCI_ED_SKIP);
- if ((sed->ed->ed_tailp & LE(OHCI_TAILMASK)) != sed->ed->ed_headp)
- usb_delay_ms(&sc->sc_bus, 2);
-
- for (p = sc->sc_eds[pos]; p && p->next != sed; p = p->next)
- ;
- if (!p)
- panic("ohci_device_intr_close: ED not found\n");
- p->next = sed->next;
- p->ed->ed_nexted = sed->ed->ed_nexted;
- splx(s);
-
- for (j = 0; j < nslots; j++)
- --sc->sc_bws[pos * nslots + j];
-
- ohci_free_std(sc, opipe->tail);
- ohci_free_sed(sc, opipe->sed);
- /* XXX free other resources */
-}
-
-usbd_status
-ohci_device_setintr(sc, opipe, ival)
- ohci_softc_t *sc;
- struct ohci_pipe *opipe;
- int ival;
-{
- int i, j, s, best;
- u_int npoll, slow, shigh, nslots;
- u_int bestbw, bw;
- ohci_soft_ed_t *hsed, *sed = opipe->sed;
-
- DPRINTFN(2, ("ohci_setintr: pipe=%p\n", opipe));
- if (ival == 0) {
- printf("ohci_setintr: 0 interval\n");
- return (USBD_INVAL);
- }
-
- npoll = OHCI_NO_INTRS;
- while (npoll > ival)
- npoll /= 2;
- DPRINTFN(2, ("ohci_setintr: ival=%d npoll=%d\n", ival, npoll));
-
- /*
- * We now know which level in the tree the ED must go into.
- * Figure out which slot has most bandwidth left over.
- * Slots to examine:
- * npoll
- * 1 0
- * 2 1 2
- * 4 3 4 5 6
- * 8 7 8 9 10 11 12 13 14
- * N (N-1) .. (N-1+N-1)
- */
- slow = npoll-1;
- shigh = slow + npoll;
- nslots = OHCI_NO_INTRS / npoll;
- for (best = i = slow, bestbw = ~0; i < shigh; i++) {
- bw = 0;
- for (j = 0; j < nslots; j++)
- bw += sc->sc_bws[i * nslots + j];
- if (bw < bestbw) {
- best = i;
- bestbw = bw;
- }
- }
- DPRINTFN(2, ("ohci_setintr: best=%d(%d..%d) bestbw=%d\n",
- best, slow, shigh, bestbw));
-
- s = splusb();
- hsed = sc->sc_eds[best];
- sed->next = hsed->next;
- sed->ed->ed_nexted = hsed->ed->ed_nexted;
- hsed->next = sed;
- hsed->ed->ed_nexted = LE(sed->physaddr);
- splx(s);
-
- for (j = 0; j < nslots; j++)
- ++sc->sc_bws[best * nslots + j];
- opipe->u.intr.nslots = nslots;
- opipe->u.intr.pos = best;
-
- DPRINTFN(5, ("ohci_setintr: returns %p\n", opipe));
- return (USBD_NORMAL_COMPLETION);
-}
-
diff --git a/sys/dev/usb/ohcireg.h b/sys/dev/usb/ohcireg.h
deleted file mode 100644
index bd44e8be40711..0000000000000
--- a/sys/dev/usb/ohcireg.h
+++ /dev/null
@@ -1,208 +0,0 @@
-/* $NetBSD: ohcireg.h,v 1.7 1998/12/10 23:16:47 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _DEV_PCI_OHCIREG_H_
-#define _DEV_PCI_OHCIREG_H_
-
-/*** PCI config registers ***/
-
-#define PCI_CBMEM 0x10 /* configuration base memory */
-
-#define PCI_INTERFACE_OHCI 0x10
-
-/*** OHCI registers */
-
-#define OHCI_REVISION 0x00 /* OHCI revision # */
-#define OHCI_REV_LO(rev) ((rev)&0xf)
-#define OHCI_REV_HI(rev) (((rev)>>4)&0xf)
-#define OHCI_REV_LEGACY(rev) ((rev) & 0x100)
-
-#define OHCI_CONTROL 0x04
-#define OHCI_CBSR_MASK 0x00000003 /* Control/Bulk Service Ratio */
-#define OHCI_RATIO_1_1 0x00000000
-#define OHCI_RATIO_1_2 0x00000001
-#define OHCI_RATIO_1_3 0x00000002
-#define OHCI_RATIO_1_4 0x00000003
-#define OHCI_PLE 0x00000004 /* Periodic List Enable */
-#define OHCI_IE 0x00000008 /* Isochronous Enable */
-#define OHCI_CLE 0x00000010 /* Control List Enable */
-#define OHCI_BLE 0x00000020 /* Bulk List Enable */
-#define OHCI_HCFS_MASK 0x000000c0 /* HostControllerFunctionalState */
-#define OHCI_HCFS_RESET 0x00000000
-#define OHCI_HCFS_RESUME 0x00000040
-#define OHCI_HCFS_OPERATIONAL 0x00000080
-#define OHCI_HCFS_SUSPEND 0x000000c0
-#define OHCI_IR 0x00000100 /* Interrupt Routing */
-#define OHCI_RWC 0x00000200 /* Remote Wakeup Connected */
-#define OHCI_RWE 0x00000400 /* Remote Wakeup Enabled */
-#define OHCI_COMMAND_STATUS 0x08
-#define OHCI_HCR 0x00000001 /* Host Controller Reset */
-#define OHCI_CLF 0x00000002 /* Control List Filled */
-#define OHCI_BLF 0x00000004 /* Bulk List Filled */
-#define OHCI_OCR 0x00000008 /* Ownership Change Request */
-#define OHCI_SOC_MASK 0x00030000 /* Scheduling Overrun Count */
-#define OHCI_INTERRUPT_STATUS 0x0c
-#define OHCI_SO 0x00000001 /* Scheduling Overrun */
-#define OHCI_WDH 0x00000002 /* Writeback Done Head */
-#define OHCI_SF 0x00000004 /* Start of Frame */
-#define OHCI_RD 0x00000008 /* Resume Detected */
-#define OHCI_UE 0x00000010 /* Unrecoverable Error */
-#define OHCI_FNO 0x00000020 /* Frame Number Overflow */
-#define OHCI_RHSC 0x00000040 /* Root Hub Status Change */
-#define OHCI_OC 0x40000000 /* Ownership Change */
-#define OHCI_MIE 0x80000000 /* Master Interrupt Enable */
-#define OHCI_INTERRUPT_ENABLE 0x10
-#define OHCI_INTERRUPT_DISABLE 0x14
-#define OHCI_HCCA 0x18
-#define OHCI_PERIOD_CURRENT_ED 0x1c
-#define OHCI_CONTROL_HEAD_ED 0x20
-#define OHCI_CONTROL_CURRENT_ED 0x24
-#define OHCI_BULK_HEAD_ED 0x28
-#define OHCI_BULK_CURRENT_ED 0x2c
-#define OHCI_DONE_HEAD 0x30
-#define OHCI_FM_INTERVAL 0x34
-#define OHCI_GET_IVAL(s) ((s) & 0x3fff)
-#define OHCI_GET_FSMPS(s) (((s) >> 16) & 0x7fff)
-#define OHCI_FIT 0x80000000
-#define OHCI_FM_REMAINING 0x38
-#define OHCI_FM_NUMBER 0x3c
-#define OHCI_PERIODIC_START 0x40
-#define OHCI_LS_THRESHOLD 0x44
-#define OHCI_RH_DESCRIPTOR_A 0x48
-#define OHCI_GET_NDP(s) ((s) & 0xff)
-#define OHCI_PSM 0x0100 /* Power Switching Mode */
-#define OHCI_NPS 0x0200 /* No Power Switching */
-#define OHCI_GET_POTPGT(s) ((s) >> 24)
-#define OHCI_RH_DESCRIPTOR_B 0x4c
-#define OHCI_RH_STATUS 0x50
-#define OHCI_LPS 0x00000001 /* Local Power Status */
-#define OHCI_OCI 0x00000002 /* OverCurrent Indicator */
-#define OHCI_DRWE 0x00008000 /* Device Remote Wakeup Enable */
-#define OHCI_LPSC 0x00010000 /* Local Power Status Change */
-#define OHCI_CCIC 0x00020000 /* OverCurrent Indicator Change */
-#define OHCI_CRWE 0x80000000 /* Clear Remote Wakeup Enable */
-#define OHCI_RH_PORT_STATUS(n) (0x50 + (n)*4) /* 1 based indexing */
-
-#define OHCI_LES (OHCI_PLE | OHCI_IE | OHCI_CLE | OHCI_BLE)
-#define OHCI_ALL_INTRS (OHCI_SO | OHCI_WDH | OHCI_SF | OHCI_RD | OHCI_UE | \
- OHCI_FNO | OHCI_RHSC | OHCI_OC)
-#define OHCI_NORMAL_INTRS (OHCI_SO | OHCI_WDH | OHCI_RD | OHCI_UE | OHCI_RHSC)
-
-#define OHCI_FSMPS(i) (((i-210)*6/7) << 16)
-#define OHCI_PERIODIC(i) ((i)*9/10)
-
-typedef u_int32_t ohci_physaddr_t;
-
-#define OHCI_NO_INTRS 32
-struct ohci_hcca {
- ohci_physaddr_t hcca_interrupt_table[OHCI_NO_INTRS];
- u_int32_t hcca_frame_number;
- ohci_physaddr_t hcca_done_head;
-#define OHCI_DONE_INTRS 1
-};
-#define OHCI_HCCA_SIZE 256
-#define OHCI_HCCA_ALIGN 256
-
-typedef struct {
- u_int32_t ed_flags;
-#define OHCI_ED_GET_FA(s) ((s) & 0x7f)
-#define OHCI_ED_ADDRMASK 0x0000007f
-#define OHCI_ED_SET_FA(s) (s)
-#define OHCI_ED_GET_EN(s) (((s) >> 7) & 0xf)
-#define OHCI_ED_SET_EN(s) ((s) << 7)
-#define OHCI_ED_DIR_MASK 0x00001800
-#define OHCI_ED_DIR_TD 0x00000000
-#define OHCI_ED_DIR_OUT 0x00000800
-#define OHCI_ED_DIR_IN 0x00001000
-#define OHCI_ED_SPEED 0x00002000
-#define OHCI_ED_SKIP 0x00004000
-#define OHCI_ED_FORMAT_GEN 0x00000000
-#define OHCI_ED_FORMAT_ISO 0x00008000
-#define OHCI_ED_GET_MAXP(s) (((s) >> 16) & 0x07ff)
-#define OHCI_ED_SET_MAXP(s) ((s) << 16)
-#define OHCI_ED_MAXPMASK (0x7ff << 16)
- ohci_physaddr_t ed_tailp;
-#define OHCI_HALTED 0x00000002
-#define OHCI_TOGGLECARRY 0x00000001
-#define OHCI_TAILMASK 0xfffffffc
- ohci_physaddr_t ed_headp;
- ohci_physaddr_t ed_nexted;
-} ohci_ed_t;
-#define OHCI_ED_SIZE 16
-#define OHCI_ED_ALIGN 16
-
-typedef struct {
- u_int32_t td_flags;
-#define OHCI_TD_R 0x00040000 /* Buffer Rounding */
-#define OHCI_TD_DP_MASK 0x00180000 /* Direction / PID */
-#define OHCI_TD_SETUP 0x00000000
-#define OHCI_TD_OUT 0x00080000
-#define OHCI_TD_IN 0x00100000
-#define OHCI_TD_GET_DI(x) (((x) >> 21) & 7) /* Delay Interrupt */
-#define OHCI_TD_SET_DI(x) ((x) << 21)
-#define OHCI_TD_NOINTR 0x00e00000
-#define OHCI_TD_TOGGLE_CARRY 0x00000000
-#define OHCI_TD_TOGGLE_0 0x02000000
-#define OHCI_TD_TOGGLE_1 0x03000000
-#define OHCI_TD_GET_EC(x) (((x) >> 26) & 3) /* Error Count */
-#define OHCI_TD_GET_CC(x) ((x) >> 28) /* Condition Code */
-#define OHCI_TD_NOCC 0xf0000000
- ohci_physaddr_t td_cbp; /* Current Buffer Pointer */
- ohci_physaddr_t td_nexttd; /* Next TD */
- ohci_physaddr_t td_be; /* Buffer End */
-} ohci_td_t;
-#define OHCI_TD_SIZE 16
-#define OHCI_TD_ALIGN 16
-
-#define OHCI_CC_NO_ERROR 0
-#define OHCI_CC_CRC 1
-#define OHCI_CC_BIT_STUFFING 2
-#define OHCI_CC_DATA_TOGGLE_MISMATCH 3
-#define OHCI_CC_STALL 4
-#define OHCI_CC_DEVICE_NOT_RESPONDING 5
-#define OHCI_CC_PID_CHECK_FAILURE 6
-#define OHCI_CC_UNEXPECTED_PID 7
-#define OHCI_CC_DATA_OVERRUN 8
-#define OHCI_CC_DATA_UNDERRUN 9
-#define OHCI_CC_BUFFER_OVERRUN 12
-#define OHCI_CC_BUFFER_UNDERRUN 13
-#define OHCI_CC_NOT_ACCESSED 15
-
-#endif /* _DEV_PCI_OHCIREG_H_ */
diff --git a/sys/dev/usb/ohcivar.h b/sys/dev/usb/ohcivar.h
deleted file mode 100644
index db8631f7976e1..0000000000000
--- a/sys/dev/usb/ohcivar.h
+++ /dev/null
@@ -1,115 +0,0 @@
-/* $NetBSD: ohcivar.h,v 1.4 1998/12/26 12:53:01 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-typedef struct ohci_soft_ed {
- ohci_ed_t *ed;
- struct ohci_soft_ed *next;
- ohci_physaddr_t physaddr;
-} ohci_soft_ed_t;
-#define OHCI_ED_CHUNK 256
-
-typedef struct ohci_soft_td {
- ohci_td_t *td;
- struct ohci_soft_td *nexttd; /* mirrors nexttd in TD */
- struct ohci_soft_td *dnext; /* next in done list */
- ohci_physaddr_t physaddr;
- LIST_ENTRY(ohci_soft_td) hnext;
- /*ohci_soft_ed_t *sed;*/
- usbd_request_handle reqh;
- u_int16_t len;
-} ohci_soft_td_t;
-#define OHCI_TD_CHUNK 256
-
-#define OHCI_NO_EDS (2*OHCI_NO_INTRS-1)
-
-#define OHCI_HASH_SIZE 128
-
-typedef struct ohci_softc {
- struct usbd_bus sc_bus; /* base device */
-#if defined(__NetBSD__)
- void *sc_ih; /* interrupt vectoring */
- bus_space_tag_t iot;
- bus_space_handle_t ioh;
-
- bus_dma_tag_t sc_dmatag; /* DMA tag */
- /* XXX should keep track of all DMA memory */
-
-#elif defined(__FreeBSD__)
- int sc_iobase;
- int unit;
-#endif /* __FreeBSD__ */
-
- usb_dma_t sc_hccadma;
- struct ohci_hcca *sc_hcca;
- ohci_soft_ed_t *sc_eds[OHCI_NO_EDS];
- u_int sc_bws[OHCI_NO_INTRS];
-
- u_int32_t sc_eintrs;
- ohci_soft_ed_t *sc_ctrl_head;
- ohci_soft_ed_t *sc_bulk_head;
-
- LIST_HEAD(, ohci_soft_td) sc_hash_tds[OHCI_HASH_SIZE];
-
- int sc_noport;
- u_int8_t sc_addr; /* device address */
- u_int8_t sc_conf; /* device configuration */
-
- ohci_soft_ed_t *sc_freeeds;
- ohci_soft_td_t *sc_freetds;
-
- usbd_request_handle sc_intrreqh;
-
- int sc_intrs;
- char sc_vendor[16];
-} ohci_softc_t;
-
-usbd_status ohci_init __P((ohci_softc_t *));
-int ohci_intr __P((void *));
-
-#define MS_TO_TICKS(ms) ((ms) * hz / 1000)
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (ohcidebug) printf x
-#define DPRINTFN(n,x) if (ohcidebug>(n)) printf x
-extern int ohcidebug;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
diff --git a/sys/dev/usb/ucom.c b/sys/dev/usb/ucom.c
deleted file mode 100644
index 749cad455f3f3..0000000000000
--- a/sys/dev/usb/ucom.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* $NetBSD: ucom.c,v 1.6 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <dev/usb/usb_port.h>
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/ioccom.h>
-#include <sys/conf.h>
-#endif
-#include <sys/tty.h>
-#include <sys/file.h>
-#include <sys/select.h>
-#include <sys/proc.h>
-#include <sys/vnode.h>
-#include <sys/poll.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-#include <dev/usb/hid.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (ucomdebug) printf x
-#define DPRINTFN(n,x) if (ucomdebug>(n)) printf x
-int ucomdebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-struct ucom_softc {
- bdevice sc_dev; /* base device */
- usbd_interface_handle sc_iface; /* interface */
-};
-
-void ucom_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
-void ucom_disco __P((void *));
-
-USB_DECLARE_DRIVER(ucom);
-
-USB_MATCH(ucom)
-{
- USB_MATCH_START(ucom, uaa);
- usb_interface_descriptor_t *id;
-
- if (!uaa->iface)
- return (UMATCH_NONE);
- id = usbd_get_interface_descriptor(uaa->iface);
- if (id &&
- id->bInterfaceClass != UCLASS_CDC ||
- id->bInterfaceSubClass != USUBCLASS_ABSTRACT_CONTROL_MODEL)
- return (UMATCH_NONE);
- return (UMATCH_IFACECLASS_IFACESUBCLASS);
-}
-
-USB_ATTACH(ucom)
-{
- USB_ATTACH_START(ucom, sc, uaa);
- usbd_interface_handle iface = uaa->iface;
- usb_interface_descriptor_t *id;
- char devinfo[1024];
-
- sc->sc_iface = iface;
- id = usbd_get_interface_descriptor(iface);
- usbd_devinfo(uaa->device, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
- devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-#if defined(__FreeBSD__)
-static int
-ucom_detach(device_t self)
-{
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
- return 0;
-}
-#endif
-
-#if defined(__FreeBSD__)
-DRIVER_MODULE(ucom, uhub, ucom_driver, ucom_devclass, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/ugen.c b/sys/dev/usb/ugen.c
deleted file mode 100644
index f739b4b642c95..0000000000000
--- a/sys/dev/usb/ugen.c
+++ /dev/null
@@ -1,985 +0,0 @@
-/* $NetBSD: ugen.c,v 1.11 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/ioccom.h>
-#include <sys/conf.h>
-#include <sys/fcntl.h>
-#include <sys/filio.h>
-#endif
-#include <sys/tty.h>
-#include <sys/file.h>
-#include <sys/select.h>
-#include <sys/proc.h>
-#include <sys/vnode.h>
-#include <sys/poll.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (ugendebug) printf x
-#define DPRINTFN(n,x) if (ugendebug>(n)) printf x
-int ugendebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-struct ugen_endpoint {
- struct ugen_softc *sc;
- usb_endpoint_descriptor_t *edesc;
- usbd_interface_handle iface;
- int state;
-#define UGEN_OPEN 0x01 /* device is open */
-#define UGEN_ASLP 0x02 /* waiting for data */
-#define UGEN_SHORT_OK 0x04 /* short xfers are OK */
- usbd_pipe_handle pipeh;
- struct clist q;
- struct selinfo rsel;
- void *ibuf;
-};
-
-#define UGEN_CHUNK 128 /* chunk size for read */
-#define UGEN_IBSIZE 1020 /* buffer size */
-#define UGEN_BBSIZE 1024
-
-struct ugen_softc {
- bdevice sc_dev; /* base device */
- struct usbd_device *sc_udev;
-
- struct ugen_endpoint sc_endpoints[USB_MAX_ENDPOINTS][2];
-#define OUT 0 /* index order is important, from UE_OUT */
-#define IN 1 /* from UE_IN */
-
- int sc_disconnected; /* device is gone */
-};
-
-int ugenopen __P((dev_t, int, int, struct proc *));
-int ugenclose __P((dev_t, int, int, struct proc *p));
-int ugenread __P((dev_t, struct uio *uio, int));
-int ugenwrite __P((dev_t, struct uio *uio, int));
-int ugenioctl __P((dev_t, u_long, caddr_t, int, struct proc *));
-int ugenpoll __P((dev_t, int, struct proc *));
-void ugenintr __P((usbd_request_handle reqh, usbd_private_handle addr,
- usbd_status status));
-void ugen_disco __P((void *));
-
-#define UGEN_CDEV_MAJOR 114
-
-int ugen_set_config __P((struct ugen_softc *sc, int configno));
-usb_config_descriptor_t *ugen_get_cdesc __P((struct ugen_softc *sc, int index,
- int *lenp));
-usbd_status ugen_set_interface __P((struct ugen_softc *, int, int));
-int ugen_get_alt_index __P((struct ugen_softc *sc, int ifaceidx));
-
-#define UGENUNIT(n) (((n) >> 4) & 0xf)
-#define UGENENDPOINT(n) ((n) & 0xf)
-
-USB_DECLARE_DRIVER(ugen);
-
-USB_MATCH(ugen)
-{
- USB_MATCH_START(ugen, uaa);
-
- if (uaa->usegeneric)
- return (UMATCH_GENERIC);
- else
- return (UMATCH_NONE);
-}
-
-USB_ATTACH(ugen)
-{
- USB_ATTACH_START(ugen, sc, uaa);
- char devinfo[1024];
- usbd_status r;
- int conf;
-
- usbd_devinfo(uaa->device, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s\n", USBDEVNAME(sc->sc_dev), devinfo);
-
- sc->sc_udev = uaa->device;
- conf = 1; /* XXX should not hard code 1 */
- r = ugen_set_config(sc, conf);
- if (r != USBD_NORMAL_COMPLETION) {
- printf("%s: setting configuration %d failed\n",
- USBDEVNAME(sc->sc_dev), conf);
- sc->sc_disconnected = 1;
- USB_ATTACH_ERROR_RETURN;
- }
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-int
-ugen_set_config(sc, configno)
- struct ugen_softc *sc;
- int configno;
-{
- usbd_device_handle dev = sc->sc_udev;
- usbd_interface_handle iface;
- usb_endpoint_descriptor_t *ed;
- struct ugen_endpoint *sce;
- u_int8_t niface, nendpt;
- int ifaceno, endptno, endpt;
- usbd_status r;
-
- DPRINTFN(1,("ugen_set_config: %s to configno %d, sc=%p\n",
- USBDEVNAME(sc->sc_dev), configno, sc));
- if (usbd_get_config_descriptor(dev)->bConfigurationValue != configno) {
- /* Avoid setting the current value. */
- r = usbd_set_config_no(dev, configno, 0);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- }
-
- r = usbd_interface_count(dev, &niface);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- memset(sc->sc_endpoints, 0, sizeof sc->sc_endpoints);
- for (ifaceno = 0; ifaceno < niface; ifaceno++) {
- DPRINTFN(1,("ugen_set_config: ifaceno %d\n", ifaceno));
- r = usbd_device2interface_handle(dev, ifaceno, &iface);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- r = usbd_endpoint_count(iface, &nendpt);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- for (endptno = 0; endptno < nendpt; endptno++) {
- ed = usbd_interface2endpoint_descriptor(iface,endptno);
- endpt = ed->bEndpointAddress;
- sce = &sc->sc_endpoints[UE_GET_ADDR(endpt)]
- [UE_GET_IN(endpt)];
- DPRINTFN(1,("ugen_set_config: endptno %d, endpt=0x%02x"
- "(%d,%d), sce=%p\n",
- endptno, endpt, UE_GET_ADDR(endpt),
- UE_GET_IN(endpt), sce));
- sce->sc = sc;
- sce->edesc = ed;
- sce->iface = iface;
- }
- }
- return (USBD_NORMAL_COMPLETION);
-}
-
-void
-ugen_disco(p)
- void *p;
-{
- struct ugen_softc *sc = p;
- sc->sc_disconnected = 1;
-}
-
-int
-ugenopen(dev, flag, mode, p)
- dev_t dev;
- int flag;
- int mode;
- struct proc *p;
-{
- int unit = UGENUNIT(dev);
- int endpt = UGENENDPOINT(dev);
- usb_endpoint_descriptor_t *edesc;
- struct ugen_endpoint *sce;
- int dir, isize;
- usbd_status r;
-
- USB_GET_SC_OPEN(ugen, unit, sc);
- DPRINTFN(5, ("ugenopen: flag=%d, mode=%d, unit=%d endpt=%d\n",
- flag, mode, unit, endpt));
-
- if (sc->sc_disconnected)
- return (EIO);
-
- if (endpt == USB_CONTROL_ENDPOINT) {
- /*if ((flag & (FWRITE|FREAD)) != (FWRITE|FREAD))
- return (EACCES);*/
- sce = &sc->sc_endpoints[USB_CONTROL_ENDPOINT][OUT];
- if (sce->state & UGEN_OPEN)
- return (EBUSY);
- } else {
- switch (flag & (FWRITE|FREAD)) {
- case FWRITE:
- dir = OUT;
- break;
- case FREAD:
- dir = IN;
- break;
- default:
- return (EACCES);
- }
- sce = &sc->sc_endpoints[endpt][dir];
- DPRINTFN(5, ("ugenopen: sc=%p, endpt=%d, dir=%d, sce=%p\n",
- sc, endpt, dir, sce));
- if (sce->state & UGEN_OPEN)
- return (EBUSY);
- edesc = sce->edesc;
- if (!edesc)
- return (ENXIO);
- switch (edesc->bmAttributes & UE_XFERTYPE) {
- case UE_INTERRUPT:
- isize = UGETW(edesc->wMaxPacketSize);
- if (isize == 0) /* shouldn't happen */
- return (EINVAL);
- sce->ibuf = malloc(isize, M_USB, M_WAITOK);
- DPRINTFN(5, ("ugenopen: intr endpt=%d,isize=%d\n",
- endpt, isize));
-#if defined(__NetBSD__)
- if (clalloc(&sce->q, UGEN_IBSIZE, 0) == -1)
- return (ENOMEM);
-#elif defined(__FreeBSD__)
- clist_alloc_cblocks(&sce->q, UGEN_IBSIZE, 0);
-#endif
- r = usbd_open_pipe_intr(sce->iface,
- edesc->bEndpointAddress,
- USBD_SHORT_XFER_OK, &sce->pipeh, sce,
- sce->ibuf, isize, ugenintr);
- if (r != USBD_NORMAL_COMPLETION) {
- free(sce->ibuf, M_USB);
-#if defined(__NetBSD__)
- clfree(&sce->q);
-#elif defined(__FreeBSD__)
- clist_free_cblocks(&sce->q);
-#endif
- return (EIO);
- }
- usbd_set_disco(sce->pipeh, ugen_disco, sc);
- DPRINTFN(5, ("ugenopen: interrupt open done\n"));
- break;
- case UE_BULK:
- r = usbd_open_pipe(sce->iface,
- edesc->bEndpointAddress, 0,
- &sce->pipeh);
- if (r != USBD_NORMAL_COMPLETION)
- return (EIO);
- break;
- case UE_CONTROL:
- case UE_ISOCHRONOUS:
- return (EINVAL);
- }
- }
- sce->state |= UGEN_OPEN;
- return (0);
-}
-
-int
-ugenclose(dev, flag, mode, p)
- dev_t dev;
- int flag;
- int mode;
- struct proc *p;
-{
- USB_GET_SC(ugen, UGENUNIT(dev), sc);
- int endpt = UGENENDPOINT(dev);
- struct ugen_endpoint *sce;
- int dir;
-
- DPRINTFN(5, ("ugenclose: flag=%d, mode=%d\n", flag, mode));
- if (sc->sc_disconnected)
- return (EIO);
-
- if (endpt == USB_CONTROL_ENDPOINT) {
- DPRINTFN(5, ("ugenclose: close control\n"));
- sc->sc_endpoints[endpt][OUT].state = 0;
- return (0);
- }
-
- flag = FWRITE | FREAD; /* XXX bug if generic open/close */
-
- /* The open modes have been joined, so check for both modes. */
- for (dir = OUT; dir <= IN; dir++) {
- if (flag & (dir == OUT ? FWRITE : FREAD)) {
- sce = &sc->sc_endpoints[endpt][dir];
- if (!sce || !sce->pipeh) /* XXX */
- continue; /* XXX */
- DPRINTFN(5, ("ugenclose: endpt=%d dir=%d sce=%p\n",
- endpt, dir, sce));
- sce->state = 0;
-
- usbd_abort_pipe(sce->pipeh);
- usbd_close_pipe(sce->pipeh);
- sce->pipeh = 0;
-
- if (sce->ibuf) {
- free(sce->ibuf, M_USB);
- sce->ibuf = 0;
- }
- }
- }
-
- return (0);
-}
-
-int
-ugenread(dev, uio, flag)
- dev_t dev;
- struct uio *uio;
- int flag;
-{
- USB_GET_SC(ugen, UGENUNIT(dev), sc);
- int endpt = UGENENDPOINT(dev);
- struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][IN];
- u_int32_t n, tn;
- char buf[UGEN_BBSIZE];
- usbd_request_handle reqh;
- usbd_status r;
- int s;
- int error = 0;
- u_char buffer[UGEN_CHUNK];
-
- DPRINTFN(5, ("ugenread: %d:%d\n", UGENUNIT(dev), UGENENDPOINT(dev)));
- if (sc->sc_disconnected)
- return (EIO);
-
-#ifdef DIAGNOSTIC
- if (!sce->edesc) {
- printf("ugenread: no edesc\n");
- return (EIO);
- }
- if (!sce->pipeh) {
- printf("ugenread: no pipe\n");
- return (EIO);
- }
-#endif
-
- switch (sce->edesc->bmAttributes & UE_XFERTYPE) {
- case UE_INTERRUPT:
- /* Block until activity occured. */
- s = splusb();
- while (sce->q.c_cc == 0) {
- if (flag & IO_NDELAY) {
- splx(s);
- return (EWOULDBLOCK);
- }
- sce->state |= UGEN_ASLP;
- DPRINTFN(5, ("ugenread: sleep on %p\n", sc));
- error = tsleep((caddr_t)sce, PZERO | PCATCH,
- "ugenri", 0);
- DPRINTFN(5, ("ugenread: woke, error=%d\n", error));
- if (error) {
- sce->state &= ~UGEN_ASLP;
- splx(s);
- return (error);
- }
- }
- splx(s);
-
- /* Transfer as many chunks as possible. */
- while (sce->q.c_cc > 0 && uio->uio_resid > 0) {
- n = min(sce->q.c_cc, uio->uio_resid);
- if (n > sizeof(buffer))
- n = sizeof(buffer);
-
- /* Remove a small chunk from the input queue. */
- q_to_b(&sce->q, buffer, n);
- DPRINTFN(5, ("ugenread: got %d chars\n", n));
-
- /* Copy the data to the user process. */
- error = uiomove(buffer, n, uio);
- if (error)
- break;
- }
- break;
- case UE_BULK:
- reqh = usbd_alloc_request();
- if (reqh == 0)
- return (ENOMEM);
- while ((n = min(UGEN_BBSIZE, uio->uio_resid)) != 0) {
- DPRINTFN(1, ("ugenread: start transfer %d bytes\n", n));
- tn = n;
- r = usbd_bulk_transfer(reqh, sce->pipeh, 0, buf,
- &tn, "ugenrb");
- if (r != USBD_NORMAL_COMPLETION) {
- if (r == USBD_INTERRUPTED)
- error = EINTR;
- else
- error = EIO;
- break;
- }
- DPRINTFN(1, ("ugenread: got %d bytes\n", tn));
- error = uiomove(buf, tn, uio);
- if (error || tn < n)
- break;
- }
- usbd_free_request(reqh);
- break;
- default:
- return (ENXIO);
- }
-
- return (error);
-}
-
-int
-ugenwrite(dev, uio, flag)
- dev_t dev;
- struct uio *uio;
- int flag;
-{
- USB_GET_SC(ugen, UGENUNIT(dev), sc);
- int endpt = UGENENDPOINT(dev);
- struct ugen_endpoint *sce = &sc->sc_endpoints[endpt][OUT];
- size_t n;
- int error = 0;
- char buf[UGEN_BBSIZE];
- usbd_request_handle reqh;
- usbd_status r;
-
- if (sc->sc_disconnected)
- return (EIO);
-
-#ifdef DIAGNOSTIC
- if (!sce->edesc) {
- printf("ugenwrite: no edesc\n");
- return (EIO);
- }
- if (!sce->pipeh) {
- printf("ugenwrite: no pipe\n");
- return (EIO);
- }
-#endif
-
- DPRINTF(("ugenwrite\n"));
- switch (sce->edesc->bmAttributes & UE_XFERTYPE) {
- case UE_BULK:
- reqh = usbd_alloc_request();
- if (reqh == 0)
- return (EIO);
- while ((n = min(UGEN_BBSIZE, uio->uio_resid)) != 0) {
- error = uiomove(buf, n, uio);
- if (error)
- break;
- DPRINTFN(1, ("ugenwrite: transfer %d bytes\n", n));
- r = usbd_bulk_transfer(reqh, sce->pipeh, 0, buf,
- &n, "ugenwb");
- if (r != USBD_NORMAL_COMPLETION) {
- if (r == USBD_INTERRUPTED)
- error = EINTR;
- else
- error = EIO;
- break;
- }
- }
- usbd_free_request(reqh);
- break;
- default:
- return (ENXIO);
- }
- return (error);
-}
-
-
-void
-ugenintr(reqh, addr, status)
- usbd_request_handle reqh;
- usbd_private_handle addr;
- usbd_status status;
-{
- struct ugen_endpoint *sce = addr;
- /*struct ugen_softc *sc = sce->sc;*/
- usbd_private_handle priv;
- void *buffer;
- u_int32_t count;
- usbd_status xstatus;
- u_char *ibuf;
-
- if (status == USBD_CANCELLED)
- return;
-
- if (status != USBD_NORMAL_COMPLETION) {
- DPRINTF(("ugenintr: status=%d\n", status));
- usbd_clear_endpoint_stall_async(sce->pipeh);
- return;
- }
-
- (void)usbd_get_request_status(reqh, &priv, &buffer, &count, &xstatus);
- ibuf = sce->ibuf;
-
- DPRINTFN(5, ("ugenintr: reqh=%p status=%d count=%d\n",
- reqh, xstatus, count));
- DPRINTFN(5, (" data = %02x %02x %02x\n",
- ibuf[0], ibuf[1], ibuf[2]));
-
- (void)b_to_q(ibuf, count, &sce->q);
-
- if (sce->state & UGEN_ASLP) {
- sce->state &= ~UGEN_ASLP;
- DPRINTFN(5, ("ugen_intr: waking %p\n", sce));
- wakeup((caddr_t)sce);
- }
- selwakeup(&sce->rsel);
-}
-
-usbd_status
-ugen_set_interface(sc, ifaceidx, altno)
- struct ugen_softc *sc;
- int ifaceidx, altno;
-{
- usbd_interface_handle iface;
- usb_endpoint_descriptor_t *ed;
- usbd_status r;
- struct ugen_endpoint *sce;
- u_int8_t niface, nendpt, endptno, endpt;
-
- DPRINTFN(15, ("ugen_set_interface %d %d\n", ifaceidx, altno));
-
- r = usbd_interface_count(sc->sc_udev, &niface);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (ifaceidx < 0 || ifaceidx >= niface)
- return (USBD_INVAL);
-
- r = usbd_device2interface_handle(sc->sc_udev, ifaceidx, &iface);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- r = usbd_endpoint_count(iface, &nendpt);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- for (endptno = 0; endptno < nendpt; endptno++) {
- ed = usbd_interface2endpoint_descriptor(iface,endptno);
- endpt = ed->bEndpointAddress;
- sce = &sc->sc_endpoints[UE_GET_ADDR(endpt)][UE_GET_IN(endpt)];
- sce->sc = 0;
- sce->edesc = 0;
- sce->iface = 0;
- }
-
- /* change setting */
- r = usbd_set_interface(iface, altno);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
-
- r = usbd_endpoint_count(iface, &nendpt);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- for (endptno = 0; endptno < nendpt; endptno++) {
- ed = usbd_interface2endpoint_descriptor(iface,endptno);
- endpt = ed->bEndpointAddress;
- sce = &sc->sc_endpoints[UE_GET_ADDR(endpt)][UE_GET_IN(endpt)];
- sce->sc = sc;
- sce->edesc = ed;
- sce->iface = iface;
- }
- return (0);
-}
-
-/* Retrieve a complete descriptor for a certain device and index. */
-usb_config_descriptor_t *
-ugen_get_cdesc(sc, index, lenp)
- struct ugen_softc *sc;
- int index;
- int *lenp;
-{
- usb_config_descriptor_t *cdesc, *tdesc, cdescr;
- int len;
- usbd_status r;
-
- if (index == USB_CURRENT_CONFIG_INDEX) {
- tdesc = usbd_get_config_descriptor(sc->sc_udev);
- len = UGETW(tdesc->wTotalLength);
- if (lenp)
- *lenp = len;
- cdesc = malloc(len, M_TEMP, M_WAITOK);
- memcpy(cdesc, tdesc, len);
- DPRINTFN(5,("ugen_get_cdesc: current, len=%d\n", len));
- } else {
- r = usbd_get_config_desc(sc->sc_udev, index, &cdescr);
- if (r != USBD_NORMAL_COMPLETION)
- return (0);
- len = UGETW(cdescr.wTotalLength);
- DPRINTFN(5,("ugen_get_cdesc: index=%d, len=%d\n", index, len));
- if (lenp)
- *lenp = len;
- cdesc = malloc(len, M_TEMP, M_WAITOK);
- r = usbd_get_config_desc_full(sc->sc_udev, index, cdesc, len);
- if (r != USBD_NORMAL_COMPLETION) {
- free(cdesc, M_TEMP);
- return (0);
- }
- }
- return (cdesc);
-}
-
-int
-ugen_get_alt_index(sc, ifaceidx)
- struct ugen_softc *sc;
- int ifaceidx;
-{
- usbd_interface_handle iface;
- usbd_status r;
-
- r = usbd_device2interface_handle(sc->sc_udev, ifaceidx, &iface);
- if (r != USBD_NORMAL_COMPLETION)
- return (-1);
- return (usbd_get_interface_altindex(iface));
-}
-
-int
-ugenioctl(dev, cmd, addr, flag, p)
- dev_t dev;
- u_long cmd;
- caddr_t addr;
- int flag;
- struct proc *p;
-{
- USB_GET_SC(ugen, UGENUNIT(dev), sc);
- int endpt = UGENENDPOINT(dev);
- struct ugen_endpoint *sce;
- usbd_status r;
- usbd_interface_handle iface;
- struct usb_config_desc *cd;
- usb_config_descriptor_t *cdesc;
- struct usb_interface_desc *id;
- usb_interface_descriptor_t *idesc;
- struct usb_endpoint_desc *ed;
- usb_endpoint_descriptor_t *edesc;
- struct usb_alt_interface *ai;
- struct usb_string_desc *si;
- u_int8_t conf, alt;
-
- DPRINTFN(5, ("ugenioctl: cmd=%08lx\n", cmd));
- if (sc->sc_disconnected)
- return (EIO);
-
- switch (cmd) {
- case FIONBIO:
- /* All handled in the upper FS layer. */
- return (0);
- case USB_SET_SHORT_XFER:
- /* This flag only affects read */
- sce = &sc->sc_endpoints[endpt][IN];
-#ifdef DIAGNOSTIC
- if (!sce->pipeh) {
- printf("ugenioctl: no pipe\n");
- return (EIO);
- }
-#endif
- if (*(int *)addr)
- sce->state |= UGEN_SHORT_OK;
- else
- sce->state &= ~UGEN_SHORT_OK;
- return (0);
- default:
- break;
- }
-
- if (endpt != USB_CONTROL_ENDPOINT)
- return (EINVAL);
-
- switch (cmd) {
-#ifdef USB_DEBUG
- case USB_SETDEBUG:
- ugendebug = *(int *)addr;
- break;
-#endif
- case USB_GET_CONFIG:
- r = usbd_get_config(sc->sc_udev, &conf);
- if (r != USBD_NORMAL_COMPLETION)
- return (EIO);
- *(int *)addr = conf;
- break;
- case USB_SET_CONFIG:
- if (!(flag & FWRITE))
- return (EPERM);
- r = ugen_set_config(sc, *(int *)addr);
- if (r != USBD_NORMAL_COMPLETION)
- return (EIO);
- break;
- case USB_GET_ALTINTERFACE:
- ai = (struct usb_alt_interface *)addr;
- r = usbd_device2interface_handle(sc->sc_udev,
- ai->interface_index, &iface);
- if (r != USBD_NORMAL_COMPLETION)
- return (EINVAL);
- idesc = usbd_get_interface_descriptor(iface);
- if (!idesc)
- return (EIO);
- ai->alt_no = idesc->bAlternateSetting;
- break;
- case USB_SET_ALTINTERFACE:
- if (!(flag & FWRITE))
- return (EPERM);
- ai = (struct usb_alt_interface *)addr;
- r = usbd_device2interface_handle(sc->sc_udev,
- ai->interface_index, &iface);
- if (r != USBD_NORMAL_COMPLETION)
- return (EINVAL);
- r = ugen_set_interface(sc, ai->interface_index, ai->alt_no);
- if (r != USBD_NORMAL_COMPLETION)
- return (EINVAL);
- break;
- case USB_GET_NO_ALT:
- ai = (struct usb_alt_interface *)addr;
- cdesc = ugen_get_cdesc(sc, ai->config_index, 0);
- if (!cdesc)
- return (EINVAL);
- idesc = usbd_find_idesc(cdesc, ai->interface_index, 0);
- if (!idesc)
- return (EINVAL);
- ai->alt_no = usbd_get_no_alts(cdesc, idesc->bInterfaceNumber);
- break;
- case USB_GET_DEVICE_DESC:
- *(usb_device_descriptor_t *)addr =
- *usbd_get_device_descriptor(sc->sc_udev);
- break;
- case USB_GET_CONFIG_DESC:
- cd = (struct usb_config_desc *)addr;
- cdesc = ugen_get_cdesc(sc, cd->config_index, 0);
- if (!cdesc)
- return (EINVAL);
- cd->desc = *cdesc;
- free(cdesc, M_TEMP);
- break;
- case USB_GET_INTERFACE_DESC:
- id = (struct usb_interface_desc *)addr;
- cdesc = ugen_get_cdesc(sc, id->config_index, 0);
- if (!cdesc)
- return (EINVAL);
- if (id->config_index == USB_CURRENT_CONFIG_INDEX &&
- id->alt_index == USB_CURRENT_ALT_INDEX)
- alt = ugen_get_alt_index(sc, id->interface_index);
- else
- alt = id->alt_index;
- idesc = usbd_find_idesc(cdesc, id->interface_index, alt);
- if (!idesc) {
- free(cdesc, M_TEMP);
- return (EINVAL);
- }
- id->desc = *idesc;
- free(cdesc, M_TEMP);
- break;
- case USB_GET_ENDPOINT_DESC:
- ed = (struct usb_endpoint_desc *)addr;
- cdesc = ugen_get_cdesc(sc, ed->config_index, 0);
- if (!cdesc)
- return (EINVAL);
- if (ed->config_index == USB_CURRENT_CONFIG_INDEX &&
- ed->alt_index == USB_CURRENT_ALT_INDEX)
- alt = ugen_get_alt_index(sc, ed->interface_index);
- else
- alt = ed->alt_index;
- edesc = usbd_find_edesc(cdesc, ed->interface_index,
- alt, ed->endpoint_index);
- if (!edesc) {
- free(cdesc, M_TEMP);
- return (EINVAL);
- }
- ed->desc = *edesc;
- free(cdesc, M_TEMP);
- break;
- case USB_GET_FULL_DESC:
- {
- int len;
- struct iovec iov;
- struct uio uio;
- struct usb_full_desc *fd = (struct usb_full_desc *)addr;
- int error;
-
- cdesc = ugen_get_cdesc(sc, fd->config_index, &len);
- if (len > fd->size)
- len = fd->size;
- iov.iov_base = (caddr_t)fd->data;
- iov.iov_len = len;
- uio.uio_iov = &iov;
- uio.uio_iovcnt = 1;
- uio.uio_resid = len;
- uio.uio_offset = 0;
- uio.uio_segflg = UIO_USERSPACE;
- uio.uio_rw = UIO_READ;
- uio.uio_procp = p;
- error = uiomove((caddr_t)cdesc, len, &uio);
- free(cdesc, M_TEMP);
- return (error);
- }
- case USB_GET_STRING_DESC:
- si = (struct usb_string_desc *)addr;
- r = usbd_get_string_desc(sc->sc_udev, si->string_index,
- si->language_id, &si->desc);
- if (r != USBD_NORMAL_COMPLETION)
- return (EINVAL);
- break;
- case USB_DO_REQUEST:
- {
- struct usb_ctl_request *ur = (void *)addr;
- int len = UGETW(ur->request.wLength);
- struct iovec iov;
- struct uio uio;
- void *ptr = 0;
- usbd_status r;
- int error = 0;
-
- if (!(flag & FWRITE))
- return (EPERM);
- /* Avoid requests that would damage the bus integrity. */
- if ((ur->request.bmRequestType == UT_WRITE_DEVICE &&
- ur->request.bRequest == UR_SET_ADDRESS) ||
- (ur->request.bmRequestType == UT_WRITE_DEVICE &&
- ur->request.bRequest == UR_SET_CONFIG) ||
- (ur->request.bmRequestType == UT_WRITE_INTERFACE &&
- ur->request.bRequest == UR_SET_INTERFACE))
- return (EINVAL);
-
- if (len < 0 || len > 32767)
- return (EINVAL);
- if (len != 0) {
- iov.iov_base = (caddr_t)ur->data;
- iov.iov_len = len;
- uio.uio_iov = &iov;
- uio.uio_iovcnt = 1;
- uio.uio_resid = len;
- uio.uio_offset = 0;
- uio.uio_segflg = UIO_USERSPACE;
- uio.uio_rw =
- ur->request.bmRequestType & UT_READ ?
- UIO_READ : UIO_WRITE;
- uio.uio_procp = p;
- ptr = malloc(len, M_TEMP, M_WAITOK);
- if (uio.uio_rw == UIO_WRITE) {
- error = uiomove(ptr, len, &uio);
- if (error)
- goto ret;
- }
- }
- r = usbd_do_request_flags(sc->sc_udev, &ur->request,
- ptr, ur->flags, &ur->actlen);
- if (r) {
- error = EIO;
- goto ret;
- }
- if (len != 0) {
- if (uio.uio_rw == UIO_READ) {
- error = uiomove(ptr, len, &uio);
- if (error)
- goto ret;
- }
- }
- ret:
- if (ptr)
- free(ptr, M_TEMP);
- return (error);
- }
- case USB_GET_DEVICEINFO:
- usbd_fill_deviceinfo(sc->sc_udev,
- (struct usb_device_info *)addr);
- break;
- default:
- return (EINVAL);
- }
- return (0);
-}
-
-int
-ugenpoll(dev, events, p)
- dev_t dev;
- int events;
- struct proc *p;
-{
- USB_GET_SC(ugen, UGENUNIT(dev), sc);
- /* XXX */
- struct ugen_endpoint *sce;
- int revents = 0;
- int s;
-
- if (sc->sc_disconnected)
- return (EIO);
-
- sce = &sc->sc_endpoints[UGENENDPOINT(dev)][IN];
-#ifdef DIAGNOSTIC
- if (!sce->edesc) {
- printf("ugenwrite: no edesc\n");
- return (EIO);
- }
- if (!sce->pipeh) {
- printf("ugenpoll: no pipe\n");
- return (EIO);
- }
-#endif
- s = splusb();
- switch (sce->edesc->bmAttributes & UE_XFERTYPE) {
- case UE_INTERRUPT:
- if (events & (POLLIN | POLLRDNORM)) {
- if (sce->q.c_cc > 0)
- revents |= events & (POLLIN | POLLRDNORM);
- else
- selrecord(p, &sce->rsel);
- }
- break;
- case UE_BULK:
- /*
- * We have no easy way of determining if a read will
- * yield any data or a write will happen.
- * Pretend they will.
- */
- revents |= events &
- (POLLIN | POLLRDNORM | POLLOUT | POLLWRNORM);
- break;
- default:
- break;
- }
- splx(s);
- return (revents);
-}
-
-#if defined(__FreeBSD__)
-static int
-ugen_detach(device_t self)
-{
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
- return 0;
-}
-
-DRIVER_MODULE(ugen, uhub, ugen_driver, ugen_devclass, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/uhci.c b/sys/dev/usb/uhci.c
deleted file mode 100644
index 707bfe3795ba8..0000000000000
--- a/sys/dev/usb/uhci.c
+++ /dev/null
@@ -1,2620 +0,0 @@
-/* $NetBSD: uhci.c,v 1.22 1999/01/08 11:58:25 augustss Exp $ */
-/* FreeBSD $Id: uhci.c,v 1.6 1999/01/07 23:31:33 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * USB Universal Host Controller driver.
- * Handles PIIX3 and PIIX4.
- *
- * Data sheets: ftp://download.intel.com/design/intarch/datashts/29055002.pdf
- * ftp://download.intel.com/design/intarch/datashts/29056201.pdf
- * UHCI spec: http://www.intel.com/design/usb/uhci11d.pdf
- * USB spec: http://www.teleport.com/cgi-bin/mailmerge.cgi/~usb/cgiform.tpl
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#endif
-#include <sys/proc.h>
-#include <sys/queue.h>
-#include <sys/select.h>
-
-#include <machine/bus.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdivar.h>
-#include <dev/usb/usb_mem.h>
-#include <dev/usb/usb_quirks.h>
-
-#include <dev/usb/uhcireg.h>
-#include <dev/usb/uhcivar.h>
-
-#if defined(__FreeBSD__)
-#include <machine/clock.h>
-
-#define delay(d) DELAY(d)
-#endif
-
-#define MS_TO_TICKS(ms) ((ms) * hz / 1000)
-
-struct uhci_pipe {
- struct usbd_pipe pipe;
- uhci_intr_info_t *iinfo;
- int newtoggle;
- /* Info needed for different pipe kinds. */
- union {
- /* Control pipe */
- struct {
- uhci_soft_qh_t *sqh;
- usb_dma_t reqdma;
- usb_dma_t datadma;
- uhci_soft_td_t *setup, *stat;
- u_int length;
- } ctl;
- /* Interrupt pipe */
- struct {
- usb_dma_t datadma;
- int npoll;
- uhci_soft_qh_t **qhs;
- } intr;
- /* Bulk pipe */
- struct {
- uhci_soft_qh_t *sqh;
- usb_dma_t datadma;
- u_int length;
- int isread;
- } bulk;
- /* Iso pipe */
- struct iso {
- u_int bufsize;
- u_int nbuf;
- usb_dma_t *bufs;
- uhci_soft_td_t **stds;
- } iso;
- } u;
-};
-
-/*
- * The uhci_intr_info free list can be global since they contain
- * no dma specific data. The other free lists do.
- */
-LIST_HEAD(, uhci_intr_info) uhci_ii_free;
-
-void uhci_busreset __P((uhci_softc_t *));
-usbd_status uhci_run __P((uhci_softc_t *, int run));
-uhci_soft_td_t *uhci_alloc_std __P((uhci_softc_t *));
-void uhci_free_std __P((uhci_softc_t *, uhci_soft_td_t *));
-uhci_soft_qh_t *uhci_alloc_sqh __P((uhci_softc_t *));
-void uhci_free_sqh __P((uhci_softc_t *, uhci_soft_qh_t *));
-uhci_intr_info_t *uhci_alloc_intr_info __P((uhci_softc_t *));
-void uhci_free_intr_info __P((uhci_intr_info_t *ii));
-#if 0
-void uhci_enter_ctl_q __P((uhci_softc_t *, uhci_soft_qh_t *,
- uhci_intr_info_t *));
-void uhci_exit_ctl_q __P((uhci_softc_t *, uhci_soft_qh_t *));
-#endif
-
-void uhci_free_std_chain __P((uhci_softc_t *,
- uhci_soft_td_t *, uhci_soft_td_t *));
-usbd_status uhci_alloc_std_chain __P((struct uhci_pipe *, uhci_softc_t *,
- int, int, int, usb_dma_t *,
- uhci_soft_td_t **,
- uhci_soft_td_t **));
-void uhci_timo __P((void *));
-void uhci_waitintr __P((uhci_softc_t *, usbd_request_handle));
-void uhci_check_intr __P((uhci_softc_t *, uhci_intr_info_t *));
-void uhci_ii_done __P((uhci_intr_info_t *, int));
-void uhci_timeout __P((void *));
-void uhci_wakeup_ctrl __P((void *, int, int, void *, int));
-void uhci_lock_frames __P((uhci_softc_t *));
-void uhci_unlock_frames __P((uhci_softc_t *));
-void uhci_add_ctrl __P((uhci_softc_t *, uhci_soft_qh_t *));
-void uhci_add_bulk __P((uhci_softc_t *, uhci_soft_qh_t *));
-void uhci_remove_ctrl __P((uhci_softc_t *, uhci_soft_qh_t *));
-void uhci_remove_bulk __P((uhci_softc_t *, uhci_soft_qh_t *));
-int uhci_str __P((usb_string_descriptor_t *, int, char *));
-
-void uhci_wakeup_cb __P((usbd_request_handle reqh));
-
-usbd_status uhci_device_ctrl_transfer __P((usbd_request_handle));
-usbd_status uhci_device_ctrl_start __P((usbd_request_handle));
-void uhci_device_ctrl_abort __P((usbd_request_handle));
-void uhci_device_ctrl_close __P((usbd_pipe_handle));
-usbd_status uhci_device_intr_transfer __P((usbd_request_handle));
-usbd_status uhci_device_intr_start __P((usbd_request_handle));
-void uhci_device_intr_abort __P((usbd_request_handle));
-void uhci_device_intr_close __P((usbd_pipe_handle));
-usbd_status uhci_device_bulk_transfer __P((usbd_request_handle));
-usbd_status uhci_device_bulk_start __P((usbd_request_handle));
-void uhci_device_bulk_abort __P((usbd_request_handle));
-void uhci_device_bulk_close __P((usbd_pipe_handle));
-usbd_status uhci_device_isoc_transfer __P((usbd_request_handle));
-usbd_status uhci_device_isoc_start __P((usbd_request_handle));
-void uhci_device_isoc_abort __P((usbd_request_handle));
-void uhci_device_isoc_close __P((usbd_pipe_handle));
-usbd_status uhci_device_isoc_setbuf __P((usbd_pipe_handle, u_int, u_int));
-
-usbd_status uhci_root_ctrl_transfer __P((usbd_request_handle));
-usbd_status uhci_root_ctrl_start __P((usbd_request_handle));
-void uhci_root_ctrl_abort __P((usbd_request_handle));
-void uhci_root_ctrl_close __P((usbd_pipe_handle));
-usbd_status uhci_root_intr_transfer __P((usbd_request_handle));
-usbd_status uhci_root_intr_start __P((usbd_request_handle));
-void uhci_root_intr_abort __P((usbd_request_handle));
-void uhci_root_intr_close __P((usbd_pipe_handle));
-
-usbd_status uhci_open __P((usbd_pipe_handle));
-void uhci_poll __P((struct usbd_bus *));
-
-usbd_status uhci_device_request __P((usbd_request_handle reqh));
-void uhci_ctrl_done __P((uhci_intr_info_t *ii));
-void uhci_bulk_done __P((uhci_intr_info_t *ii));
-
-void uhci_add_intr __P((uhci_softc_t *, int, uhci_soft_qh_t *));
-void uhci_remove_intr __P((uhci_softc_t *, int, uhci_soft_qh_t *));
-usbd_status uhci_device_setintr __P((uhci_softc_t *sc,
- struct uhci_pipe *pipe, int ival));
-void uhci_intr_done __P((uhci_intr_info_t *ii));
-void uhci_isoc_done __P((uhci_intr_info_t *ii));
-
-#ifdef USB_DEBUG
-static void uhci_dumpregs __P((uhci_softc_t *));
-void uhci_dump_tds __P((uhci_soft_td_t *));
-void uhci_dump_qh __P((uhci_soft_qh_t *));
-void uhci_dump __P((void));
-void uhci_dump_td __P((uhci_soft_td_t *));
-#endif
-
-#if defined(__NetBSD__)
-#define UWRITE2(sc, r, x) bus_space_write_2((sc)->iot, (sc)->ioh, (r), (x))
-#define UWRITE4(sc, r, x) bus_space_write_4((sc)->iot, (sc)->ioh, (r), (x))
-#define UREAD2(sc, r) bus_space_read_2((sc)->iot, (sc)->ioh, (r))
-#define UREAD4(sc, r) bus_space_read_4((sc)->iot, (sc)->ioh, (r))
-#elif defined(__FreeBSD__)
-#define UWRITE2(sc,r,x) outw((sc)->sc_iobase + (r), (x))
-#define UWRITE4(sc,r,x) outl((sc)->sc_iobase + (r), (x))
-#define UREAD2(sc,r) inw((sc)->sc_iobase + (r))
-#define UREAD4(sc,r) inl((sc)->sc_iobase + (r))
-#endif
-
-#define UHCICMD(sc, cmd) UWRITE2(sc, UHCI_CMD, cmd)
-#define UHCISTS(sc) UREAD2(sc, UHCI_STS)
-
-#define UHCI_RESET_TIMEOUT 100 /* reset timeout */
-
-#define UHCI_CURFRAME(sc) (UREAD2(sc, UHCI_FRNUM) & UHCI_FRNUM_MASK)
-
-#define UHCI_INTR_ENDPT 1
-
-struct usbd_methods uhci_root_ctrl_methods = {
- uhci_root_ctrl_transfer,
- uhci_root_ctrl_start,
- uhci_root_ctrl_abort,
- uhci_root_ctrl_close,
- 0,
-};
-
-struct usbd_methods uhci_root_intr_methods = {
- uhci_root_intr_transfer,
- uhci_root_intr_start,
- uhci_root_intr_abort,
- uhci_root_intr_close,
- 0,
-};
-
-struct usbd_methods uhci_device_ctrl_methods = {
- uhci_device_ctrl_transfer,
- uhci_device_ctrl_start,
- uhci_device_ctrl_abort,
- uhci_device_ctrl_close,
- 0,
-};
-
-struct usbd_methods uhci_device_intr_methods = {
- uhci_device_intr_transfer,
- uhci_device_intr_start,
- uhci_device_intr_abort,
- uhci_device_intr_close,
- 0,
-};
-
-struct usbd_methods uhci_device_bulk_methods = {
- uhci_device_bulk_transfer,
- uhci_device_bulk_start,
- uhci_device_bulk_abort,
- uhci_device_bulk_close,
- 0,
-};
-
-struct usbd_methods uhci_device_isoc_methods = {
- uhci_device_isoc_transfer,
- uhci_device_isoc_start,
- uhci_device_isoc_abort,
- uhci_device_isoc_close,
- uhci_device_isoc_setbuf,
-};
-
-void
-uhci_busreset(sc)
- uhci_softc_t *sc;
-{
- UHCICMD(sc, UHCI_CMD_GRESET); /* global reset */
- usb_delay_ms(&sc->sc_bus, USB_BUS_RESET_DELAY); /* wait a little */
- UHCICMD(sc, 0); /* do nothing */
-}
-
-usbd_status
-uhci_init(sc)
- uhci_softc_t *sc;
-{
- usbd_status r;
- int i, j;
- uhci_soft_qh_t *csqh, *bsqh, *sqh;
- uhci_soft_td_t *std;
- usb_dma_t dma;
- static int uhci_global_init_done = 0;
-
- DPRINTFN(1,("uhci_init: start\n"));
-
- if (!uhci_global_init_done) {
- uhci_global_init_done = 1;
- LIST_INIT(&uhci_ii_free);
- }
-
-#if defined(USB_DEBUG)
- if (uhcidebug > 2)
- uhci_dumpregs(sc);
-#endif
-
- uhci_run(sc, 0); /* stop the controller */
- UWRITE2(sc, UHCI_INTR, 0); /* disable interrupts */
-
- /* Allocate and initialize real frame array. */
- r = usb_allocmem(sc->sc_dmatag,
- UHCI_FRAMELIST_COUNT * sizeof(uhci_physaddr_t),
- UHCI_FRAMELIST_ALIGN, &dma);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- sc->sc_pframes = KERNADDR(&dma);
- UWRITE2(sc, UHCI_FRNUM, 0); /* set frame number to 0 */
- UWRITE4(sc, UHCI_FLBASEADDR, DMAADDR(&dma)); /* set frame list */
-
- uhci_busreset(sc);
-
- /* Allocate the dummy QH where bulk traffic will be queued. */
- bsqh = uhci_alloc_sqh(sc);
- if (!bsqh)
- return (USBD_NOMEM);
- bsqh->qh->qh_hlink = UHCI_PTR_T; /* end of QH chain */
- bsqh->qh->qh_elink = UHCI_PTR_T;
- sc->sc_bulk_start = sc->sc_bulk_end = bsqh;
-
- /* Allocate the dummy QH where control traffic will be queued. */
- csqh = uhci_alloc_sqh(sc);
- if (!csqh)
- return (USBD_NOMEM);
- csqh->qh->hlink = bsqh;
- csqh->qh->qh_hlink = bsqh->physaddr | UHCI_PTR_Q;
- csqh->qh->qh_elink = UHCI_PTR_T;
- sc->sc_ctl_start = sc->sc_ctl_end = csqh;
-
- /*
- * Make all (virtual) frame list pointers point to the interrupt
- * queue heads and the interrupt queue heads at the control
- * queue head and point the physical frame list to the virtual.
- */
- for(i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
- std = uhci_alloc_std(sc);
- sqh = uhci_alloc_sqh(sc);
- if (!std || !sqh)
- return (USBD_NOMEM);
- std->td->link.sqh = sqh;
- std->td->td_link = sqh->physaddr | UHCI_PTR_Q;
- std->td->td_status = UHCI_TD_IOS; /* iso, inactive */
- std->td->td_token = 0;
- std->td->td_buffer = 0;
- sqh->qh->hlink = csqh;
- sqh->qh->qh_hlink = csqh->physaddr | UHCI_PTR_Q;
- sqh->qh->elink = 0;
- sqh->qh->qh_elink = UHCI_PTR_T;
- sc->sc_vframes[i].htd = std;
- sc->sc_vframes[i].etd = std;
- sc->sc_vframes[i].hqh = sqh;
- sc->sc_vframes[i].eqh = sqh;
- for (j = i;
- j < UHCI_FRAMELIST_COUNT;
- j += UHCI_VFRAMELIST_COUNT)
- sc->sc_pframes[j] = std->physaddr;
- }
-
- LIST_INIT(&sc->sc_intrhead);
-
- /* Set up the bus struct. */
- sc->sc_bus.open_pipe = uhci_open;
- sc->sc_bus.pipe_size = sizeof(struct uhci_pipe);
- sc->sc_bus.do_poll = uhci_poll;
-
- DPRINTFN(1,("uhci_init: enabling\n"));
- UWRITE2(sc, UHCI_INTR, UHCI_INTR_TOCRCIE | UHCI_INTR_RIE |
- UHCI_INTR_IOCE | UHCI_INTR_SPIE); /* enable interrupts */
-
- return (uhci_run(sc, 1)); /* and here we go... */
-}
-
-#ifdef USB_DEBUG
-static void
-uhci_dumpregs(sc)
- uhci_softc_t *sc;
-{
- printf("%s; regs: cmd=%04x, sts=%04x, intr=%04x, frnum=%04x, "
- "flbase=%08x, sof=%04x, portsc1=%04x, portsc2=%04x\n",
- USBDEVNAME(sc->sc_bus.bdev),
- UREAD2(sc, UHCI_CMD),
- UREAD2(sc, UHCI_STS),
- UREAD2(sc, UHCI_INTR),
- UREAD2(sc, UHCI_FRNUM),
- UREAD2(sc, UHCI_FLBASEADDR),
- UREAD2(sc, UHCI_SOF),
- UREAD2(sc, UHCI_PORTSC1),
- UREAD2(sc, UHCI_PORTSC2));
-}
-
-int uhci_longtd = 1;
-
-void
-uhci_dump_td(p)
- uhci_soft_td_t *p;
-{
- printf("TD(%p) at %08lx = 0x%08lx 0x%08lx 0x%08lx 0x%08lx\n",
- p, (long)p->physaddr,
- (long)p->td->td_link,
- (long)p->td->td_status,
- (long)p->td->td_token,
- (long)p->td->td_buffer);
- if (uhci_longtd)
- printf(" %b %b,errcnt=%d,actlen=%d pid=%02x,addr=%d,endpt=%d,"
- "D=%d,maxlen=%d\n",
- (int)p->td->td_link,
- "\20\1T\2Q\3VF",
- (int)p->td->td_status,
- "\20\22BITSTUFF\23CRCTO\24NAK\25BABBLE\26DBUFFER\27"
- "STALLED\30ACTIVE\31IOC\32ISO\33LS\36SPD",
- UHCI_TD_GET_ERRCNT(p->td->td_status),
- UHCI_TD_GET_ACTLEN(p->td->td_status),
- UHCI_TD_GET_PID(p->td->td_token),
- UHCI_TD_GET_DEVADDR(p->td->td_token),
- UHCI_TD_GET_ENDPT(p->td->td_token),
- UHCI_TD_GET_DT(p->td->td_token),
- UHCI_TD_GET_MAXLEN(p->td->td_token));
-}
-
-void
-uhci_dump_qh(p)
- uhci_soft_qh_t *p;
-{
- printf("QH(%p) at %08x: hlink=%08x elink=%08x\n", p, (int)p->physaddr,
- p->qh->qh_hlink, p->qh->qh_elink);
-}
-
-
-#if 0
-void
-uhci_dump()
-{
- uhci_softc_t *sc = uhci;
-
- uhci_dumpregs(sc);
- printf("intrs=%d\n", sc->sc_intrs);
- printf("framelist[i].link = %08x\n", sc->sc_framelist[0].link);
- uhci_dump_qh(sc->sc_ctl_start->qh->hlink);
-}
-#endif
-
-void
-uhci_dump_tds(std)
- uhci_soft_td_t *std;
-{
- uhci_soft_td_t *p;
-
- for(p = std; p; p = p->td->link.std)
- uhci_dump_td(p);
-}
-#endif
-
-/*
- * This routine is executed periodically and simulates interrupts
- * from the root controller interrupt pipe for port status change.
- */
-void
-uhci_timo(addr)
- void *addr;
-{
- usbd_request_handle reqh = addr;
- usbd_pipe_handle pipe = reqh->pipe;
- uhci_softc_t *sc = (uhci_softc_t *)pipe->device->bus;
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- int s;
- u_char *p;
-
- DPRINTFN(15, ("uhci_timo\n"));
-
- p = KERNADDR(&upipe->u.intr.datadma);
- p[0] = 0;
- if (UREAD2(sc, UHCI_PORTSC1) & (UHCI_PORTSC_CSC|UHCI_PORTSC_OCIC))
- p[0] |= 1<<1;
- if (UREAD2(sc, UHCI_PORTSC2) & (UHCI_PORTSC_CSC|UHCI_PORTSC_OCIC))
- p[0] |= 1<<2;
- s = splusb();
- if (p[0] != 0) {
- reqh->actlen = 1;
- reqh->status = USBD_NORMAL_COMPLETION;
- reqh->xfercb(reqh);
- }
- if (reqh->pipe->intrreqh == reqh) {
- usb_timeout(uhci_timo, reqh, sc->sc_ival, reqh->timo_handle);
- } else {
- usb_freemem(sc->sc_dmatag, &upipe->u.intr.datadma);
- usb_start_next(reqh->pipe);
- }
- splx(s);
-}
-
-
-void
-uhci_lock_frames(sc)
- uhci_softc_t *sc;
-{
- int s = splusb();
- while (sc->sc_vflock) {
- sc->sc_vflock |= UHCI_WANT_LOCK;
- tsleep(&sc->sc_vflock, PRIBIO, "uhcqhl", 0);
- }
- sc->sc_vflock = UHCI_HAS_LOCK;
- splx(s);
-}
-
-void
-uhci_unlock_frames(sc)
- uhci_softc_t *sc;
-{
- int s = splusb();
- sc->sc_vflock &= ~UHCI_HAS_LOCK;
- if (sc->sc_vflock & UHCI_WANT_LOCK)
- wakeup(&sc->sc_vflock);
- splx(s);
-}
-
-/*
- * Allocate an interrupt information struct. A free list is kept
- * for fast allocation.
- */
-uhci_intr_info_t *
-uhci_alloc_intr_info(sc)
- uhci_softc_t *sc;
-{
- uhci_intr_info_t *ii;
-
- ii = LIST_FIRST(&uhci_ii_free);
- if (ii)
- LIST_REMOVE(ii, list);
- else {
- ii = malloc(sizeof(uhci_intr_info_t), M_USBDEV, M_NOWAIT);
- }
- ii->sc = sc;
- return ii;
-}
-
-void
-uhci_free_intr_info(ii)
- uhci_intr_info_t *ii;
-{
- LIST_INSERT_HEAD(&uhci_ii_free, ii, list); /* and put on free list */
-}
-
-/* Add control QH, called at splusb(). */
-void
-uhci_add_ctrl(sc, sqh)
- uhci_softc_t *sc;
- uhci_soft_qh_t *sqh;
-{
- uhci_qh_t *eqh;
-
- DPRINTFN(10, ("uhci_add_ctrl: sqh=%p\n", sqh));
- eqh = sc->sc_ctl_end->qh;
- sqh->qh->hlink = eqh->hlink;
- sqh->qh->qh_hlink = eqh->qh_hlink;
- eqh->hlink = sqh;
- eqh->qh_hlink = sqh->physaddr | UHCI_PTR_Q;
- sc->sc_ctl_end = sqh;
-}
-
-/* Remove control QH, called at splusb(). */
-void
-uhci_remove_ctrl(sc, sqh)
- uhci_softc_t *sc;
- uhci_soft_qh_t *sqh;
-{
- uhci_soft_qh_t *pqh;
-
- DPRINTFN(10, ("uhci_remove_ctrl: sqh=%p\n", sqh));
- for (pqh = sc->sc_ctl_start; pqh->qh->hlink != sqh; pqh=pqh->qh->hlink)
-#if defined(DIAGNOSTIC) || defined(USB_DEBUG)
- if (pqh->qh->qh_hlink & UHCI_PTR_T) {
- printf("uhci_remove_ctrl: QH not found\n");
- return;
- }
-#else
- ;
-#endif
- pqh->qh->hlink = sqh->qh->hlink;
- pqh->qh->qh_hlink = sqh->qh->qh_hlink;
- if (sc->sc_ctl_end == sqh)
- sc->sc_ctl_end = pqh;
-}
-
-/* Add bulk QH, called at splusb(). */
-void
-uhci_add_bulk(sc, sqh)
- uhci_softc_t *sc;
- uhci_soft_qh_t *sqh;
-{
- uhci_qh_t *eqh;
-
- DPRINTFN(10, ("uhci_add_bulk: sqh=%p\n", sqh));
- eqh = sc->sc_bulk_end->qh;
- sqh->qh->hlink = eqh->hlink;
- sqh->qh->qh_hlink = eqh->qh_hlink;
- eqh->hlink = sqh;
- eqh->qh_hlink = sqh->physaddr | UHCI_PTR_Q;
- sc->sc_bulk_end = sqh;
-}
-
-/* Remove bulk QH, called at splusb(). */
-void
-uhci_remove_bulk(sc, sqh)
- uhci_softc_t *sc;
- uhci_soft_qh_t *sqh;
-{
- uhci_soft_qh_t *pqh;
-
- DPRINTFN(10, ("uhci_remove_bulk: sqh=%p\n", sqh));
- for (pqh = sc->sc_bulk_start;
- pqh->qh->hlink != sqh;
- pqh = pqh->qh->hlink)
-#if defined(DIAGNOSTIC) || defined(USB_DEBUG)
- if (pqh->qh->qh_hlink & UHCI_PTR_T) {
- printf("uhci_remove_bulk: QH not found\n");
- return;
- }
-#else
- ;
-#endif
- pqh->qh->hlink = sqh->qh->hlink;
- pqh->qh->qh_hlink = sqh->qh->qh_hlink;
- if (sc->sc_bulk_end == sqh)
- sc->sc_bulk_end = pqh;
-}
-
-int
-uhci_intr(p)
- void *p;
-{
- uhci_softc_t *sc = p;
- int status, ret;
- uhci_intr_info_t *ii;
-
- sc->sc_intrs++;
-#if defined(USB_DEBUG)
- if (uhcidebug > 9) {
- printf("uhci_intr %p\n", sc);
- uhci_dumpregs(sc);
- }
-#endif
- status = UREAD2(sc, UHCI_STS);
- ret = 0;
- if (status & UHCI_STS_USBINT) {
- UWRITE2(sc, UHCI_STS, UHCI_STS_USBINT); /* acknowledge */
- ret = 1;
- }
- if (status & UHCI_STS_USBEI) {
- UWRITE2(sc, UHCI_STS, UHCI_STS_USBEI); /* acknowledge */
- ret = 1;
- }
- if (status & UHCI_STS_RD) {
- UWRITE2(sc, UHCI_STS, UHCI_STS_RD); /* acknowledge */
- printf("%s: resume detect\n", USBDEVNAME(sc->sc_bus.bdev));
- ret = 1;
- }
- if (status & UHCI_STS_HSE) {
- UWRITE2(sc, UHCI_STS, UHCI_STS_HSE); /* acknowledge */
- printf("%s: Host System Error\n", USBDEVNAME(sc->sc_bus.bdev));
- ret = 1;
- }
- if (status & UHCI_STS_HCPE) {
- UWRITE2(sc, UHCI_STS, UHCI_STS_HCPE); /* acknowledge */
- printf("%s: Host System Error\n", USBDEVNAME(sc->sc_bus.bdev));
- ret = 1;
- }
- if (status & UHCI_STS_HCH)
- printf("%s: controller halted\n", USBDEVNAME(sc->sc_bus.bdev));
- if (!ret)
- return 0;
-
- /*
- * Interrupts on UHCI really suck. When the host controller
- * interrupts because a transfer is completed there is no
- * way of knowing which transfer it was. You can scan down
- * the TDs and QHs of the previous frame to limit the search,
- * but that assumes that the interrupt was not delayed by more
- * than 1 ms, which may not always be true (e.g. after debug
- * output on a slow console).
- * We scan all interrupt descriptors to see if any have
- * completed.
- */
- for (ii = LIST_FIRST(&sc->sc_intrhead); ii; ii = LIST_NEXT(ii, list))
- uhci_check_intr(sc, ii);
-
- DPRINTFN(10, ("uhci_intr: exit\n"));
- return 1;
-}
-
-/* Check for an interrupt. */
-void
-uhci_check_intr(sc, ii)
- uhci_softc_t *sc;
- uhci_intr_info_t *ii;
-{
- struct uhci_pipe *upipe;
- uhci_soft_td_t *std, *lstd;
- u_int32_t status;
-
- DPRINTFN(15, ("uhci_check_intr: ii=%p\n", ii));
-#ifdef DIAGNOSTIC
- if (!ii) {
- printf("uhci_check_intr: no ii? %p\n", ii);
- return;
- }
-#endif
- if (!ii->stdstart)
- return;
- lstd = ii->stdend;
-#ifdef DIAGNOSTIC
- if (!lstd) {
- printf("uhci_check_intr: std==0\n");
- return;
- }
-#endif
- /* If the last TD is still active the whole transfer probably is. */
- if (lstd->td->td_status & UHCI_TD_ACTIVE) {
- DPRINTFN(15, ("uhci_check_intr: active ii=%p\n", ii));
- for (std = ii->stdstart; std != lstd; std = std->td->link.std){
- status = std->td->td_status;
- if ((status & UHCI_TD_STALLED) ||
- (status & (UHCI_TD_SPD | UHCI_TD_ACTIVE)) ==
- UHCI_TD_SPD)
- goto done;
- }
- DPRINTFN(15, ("uhci_check_intr: ii=%p std=%p still active\n",
- ii, ii->stdstart));
- return;
- }
- done:
- upipe = (struct uhci_pipe *)ii->reqh->pipe;
- upipe->pipe.endpoint->toggle = upipe->newtoggle;
- uhci_ii_done(ii, 0);
- usb_untimeout(uhci_timeout, ii, ii->timeout_handle);
-}
-
-void
-uhci_ii_done(ii, timo)
- uhci_intr_info_t *ii;
- int timo;
-{
- usbd_request_handle reqh = ii->reqh;
- uhci_soft_td_t *std;
- u_int32_t tst;
- int len, status, attr;
-
- DPRINTFN(10, ("uhci_ii_done: ii=%p ready %d\n", ii, timo));
-
-#ifdef DIAGNOSTIC
- {
- int s = splhigh();
- if (ii->isdone) {
- printf("uhci_ii_done: is done!\n");
- splx(s);
- return;
- }
- ii->isdone = 1;
- splx(s);
- }
-#endif
-
- /* The transfer is done, compute length and status. */
- /* XXX Should stop at first inactive to get toggle right. */
- /* XXX Is this correct for control xfers? */
- for (len = status = 0, std = ii->stdstart;
- std != 0;
- std = std->td->link.std) {
- tst = std->td->td_status;
- status |= tst;
-#ifdef USB_DEBUG
- if ((tst & UHCI_TD_ERROR) && uhcidebug) {
- printf("uhci_ii_done: intr error TD:\n");
- uhci_dump_td(std);
- }
-#endif
- if (UHCI_TD_GET_PID(std->td->td_token) != UHCI_TD_PID_SETUP)
- len += UHCI_TD_GET_ACTLEN(tst);
- }
- status &= UHCI_TD_ERROR;
- DPRINTFN(10, ("uhci_check_intr: len=%d, status=0x%x\n", len, status));
- if (status != 0) {
- DPRINTFN(-1+(status==UHCI_TD_STALLED),
- ("uhci_ii_done: error, addr=%d, endpt=0x%02x, "
- "status 0x%b\n",
- reqh->pipe->device->address,
- reqh->pipe->endpoint->edesc->bEndpointAddress,
- (int)status,
- "\20\22BITSTUFF\23CRCTO\24NAK\25BABBLE\26DBUFFER\27"
- "STALLED\30ACTIVE"));
- if (status == UHCI_TD_STALLED)
- reqh->status = USBD_STALLED;
- else
- reqh->status = USBD_IOERROR; /* more info XXX */
- reqh->actlen = 0;
- } else {
- reqh->status = USBD_NORMAL_COMPLETION;
- reqh->actlen = len;
- }
- if (timo) {
- /* We got a timeout. Make sure transaction is not active. */
- reqh->status = USBD_TIMEOUT;
- for (std = ii->stdstart; std != 0; std = std->td->link.std)
- std->td->td_status &= ~UHCI_TD_ACTIVE;
- /* XXX should we wait 1 ms */
- }
- DPRINTFN(5, ("uhci_ii_done: calling handler ii=%p\n", ii));
-
- attr = reqh->pipe->endpoint->edesc->bmAttributes;
- switch (attr & UE_XFERTYPE) {
- case UE_CONTROL:
- uhci_ctrl_done(ii);
- usb_start_next(reqh->pipe);
- break;
- case UE_ISOCHRONOUS:
- uhci_isoc_done(ii);
- usb_start_next(reqh->pipe);
- break;
- case UE_BULK:
- uhci_bulk_done(ii);
- usb_start_next(reqh->pipe);
- break;
- case UE_INTERRUPT:
- uhci_intr_done(ii);
- break;
- }
-
- /* And finally execute callback. */
- reqh->xfercb(reqh);
-}
-
-/*
- * Called when a request does not complete.
- */
-void
-uhci_timeout(addr)
- void *addr;
-{
- uhci_intr_info_t *ii = addr;
- int s;
-
- DPRINTF(("uhci_timeout: ii=%p\n", ii));
- s = splusb();
- uhci_ii_done(ii, 1);
- splx(s);
-}
-
-/*
- * Wait here until controller claims to have an interrupt.
- * Then call uhci_intr and return. Use timeout to avoid waiting
- * too long.
- * Only used during boot when interrupts are not enabled yet.
- */
-void
-uhci_waitintr(sc, reqh)
- uhci_softc_t *sc;
- usbd_request_handle reqh;
-{
- int timo = reqh->timeout;
- int usecs;
- uhci_intr_info_t *ii;
-
- DPRINTFN(10,("uhci_waitintr: timeout = %ds\n", timo));
-
- reqh->status = USBD_IN_PROGRESS;
- for (usecs = timo * 1000000 / hz; usecs > 0; usecs -= 1000) {
- usb_delay_ms(&sc->sc_bus, 1);
- DPRINTFN(10,("uhci_waitintr: 0x%04x\n", UREAD2(sc, UHCI_STS)));
- if (UREAD2(sc, UHCI_STS) & UHCI_STS_USBINT) {
- uhci_intr(sc);
- if (reqh->status != USBD_IN_PROGRESS)
- return;
- }
- }
-
- /* Timeout */
- DPRINTF(("uhci_waitintr: timeout\n"));
- for (ii = LIST_FIRST(&sc->sc_intrhead);
- ii && ii->reqh != reqh;
- ii = LIST_NEXT(ii, list))
- ;
- if (ii)
- uhci_ii_done(ii, 1);
- else
- panic("uhci_waitintr: lost intr_info\n");
-}
-
-void
-uhci_poll(bus)
- struct usbd_bus *bus;
-{
- uhci_softc_t *sc = (uhci_softc_t *)bus;
-
- if (UREAD2(sc, UHCI_STS) & UHCI_STS_USBINT)
- uhci_intr(sc);
-}
-
-#if 0
-void
-uhci_reset(p)
- void *p;
-{
- uhci_softc_t *sc = p;
- int n;
-
- UHCICMD(sc, UHCI_CMD_HCRESET);
- /* The reset bit goes low when the controller is done. */
- for (n = 0; n < UHCI_RESET_TIMEOUT &&
- (UREAD2(sc, UHCI_CMD) & UHCI_CMD_HCRESET); n++)
- delay(100);
- if (n >= UHCI_RESET_TIMEOUT)
- printf("%s: controller did not reset\n",
- USBDEVNAME(sc->sc_bus.bdev));
-}
-#endif
-
-usbd_status
-uhci_run(sc, run)
- uhci_softc_t *sc;
- int run;
-{
- int s, n, running;
-
- run = run != 0;
- s = splusb();
- running = !(UREAD2(sc, UHCI_STS) & UHCI_STS_HCH);
- if (run == running) {
- splx(s);
- return (USBD_NORMAL_COMPLETION);
- }
- UWRITE2(sc, UHCI_CMD, run ? UHCI_CMD_RS : 0);
- for(n = 0; n < 10; n++) {
- running = !(UREAD2(sc, UHCI_STS) & UHCI_STS_HCH);
- /* return when we've entered the state we want */
- if (run == running) {
- splx(s);
- return (USBD_NORMAL_COMPLETION);
- }
- usb_delay_ms(&sc->sc_bus, 1);
- }
- splx(s);
- printf("%s: cannot %s\n", USBDEVNAME(sc->sc_bus.bdev),
- run ? "start" : "stop");
- return (USBD_IOERROR);
-}
-
-/*
- * Memory management routines.
- * uhci_alloc_std allocates TDs
- * uhci_alloc_sqh allocates QHs
- * These two routines do their own free list management,
- * partly for speed, partly because allocating DMAable memory
- * has page size granularaity so much memory would be wasted if
- * only one TD/QH (32 bytes) was placed in each allocated chunk.
- */
-
-uhci_soft_td_t *
-uhci_alloc_std(sc)
- uhci_softc_t *sc;
-{
- uhci_soft_td_t *std;
- usbd_status r;
- int i;
- usb_dma_t dma;
-
- if (!sc->sc_freetds) {
- DPRINTFN(2,("uhci_alloc_std: allocating chunk\n"));
- std = malloc(sizeof(uhci_soft_td_t) * UHCI_TD_CHUNK,
- M_USBDEV, M_NOWAIT);
- if (!std)
- return (0);
- r = usb_allocmem(sc->sc_dmatag, UHCI_TD_SIZE * UHCI_TD_CHUNK,
- UHCI_TD_ALIGN, &dma);
- if (r != USBD_NORMAL_COMPLETION) {
- free(std, M_USBDEV);
- return (0);
- }
- for(i = 0; i < UHCI_TD_CHUNK; i++, std++) {
- std->physaddr = DMAADDR(&dma) + i * UHCI_TD_SIZE;
- std->td = (uhci_td_t *)
- ((char *)KERNADDR(&dma) + i * UHCI_TD_SIZE);
- std->td->link.std = sc->sc_freetds;
- sc->sc_freetds = std;
- }
- }
- std = sc->sc_freetds;
- sc->sc_freetds = std->td->link.std;
- memset(std->td, 0, UHCI_TD_SIZE);
- return std;
-}
-
-void
-uhci_free_std(sc, std)
- uhci_softc_t *sc;
- uhci_soft_td_t *std;
-{
-#ifdef DIAGNOSTIC
-#define TD_IS_FREE 0x12345678
- if (std->td->td_token == TD_IS_FREE) {
- printf("uhci_free_std: freeing free TD %p\n", std);
- return;
- }
- std->td->td_token = TD_IS_FREE;
-#endif
- std->td->link.std = sc->sc_freetds;
- sc->sc_freetds = std;
-}
-
-uhci_soft_qh_t *
-uhci_alloc_sqh(sc)
- uhci_softc_t *sc;
-{
- uhci_soft_qh_t *sqh;
- usbd_status r;
- int i, offs;
- usb_dma_t dma;
-
- if (!sc->sc_freeqhs) {
- DPRINTFN(2, ("uhci_alloc_sqh: allocating chunk\n"));
- sqh = malloc(sizeof(uhci_soft_qh_t) * UHCI_QH_CHUNK,
- M_USBDEV, M_NOWAIT);
- if (!sqh)
- return 0;
- r = usb_allocmem(sc->sc_dmatag, UHCI_QH_SIZE * UHCI_QH_CHUNK,
- UHCI_QH_ALIGN, &dma);
- if (r != USBD_NORMAL_COMPLETION) {
- free(sqh, M_USBDEV);
- return 0;
- }
- for(i = 0; i < UHCI_QH_CHUNK; i++, sqh++) {
- offs = i * UHCI_QH_SIZE;
- sqh->physaddr = DMAADDR(&dma) + offs;
- sqh->qh = (uhci_qh_t *)
- ((char *)KERNADDR(&dma) + offs);
- sqh->qh->hlink = sc->sc_freeqhs;
- sc->sc_freeqhs = sqh;
- }
- }
- sqh = sc->sc_freeqhs;
- sc->sc_freeqhs = sqh->qh->hlink;
- memset(sqh->qh, 0, UHCI_QH_SIZE);
- return (sqh);
-}
-
-void
-uhci_free_sqh(sc, sqh)
- uhci_softc_t *sc;
- uhci_soft_qh_t *sqh;
-{
- sqh->qh->hlink = sc->sc_freeqhs;
- sc->sc_freeqhs = sqh;
-}
-
-#if 0
-/*
- * Enter a list of transfers onto a control queue.
- * Called at splusb()
- */
-void
-uhci_enter_ctl_q(sc, sqh, ii)
- uhci_softc_t *sc;
- uhci_soft_qh_t *sqh;
- uhci_intr_info_t *ii;
-{
- DPRINTFN(5, ("uhci_enter_ctl_q: sqh=%p\n", sqh));
-
-}
-#endif
-
-void
-uhci_free_std_chain(sc, std, stdend)
- uhci_softc_t *sc;
- uhci_soft_td_t *std;
- uhci_soft_td_t *stdend;
-{
- uhci_soft_td_t *p;
-
- for (; std != stdend; std = p) {
- p = std->td->link.std;
- uhci_free_std(sc, std);
- }
-}
-
-usbd_status
-uhci_alloc_std_chain(upipe, sc, len, rd, spd, dma, sp, ep)
- struct uhci_pipe *upipe;
- uhci_softc_t *sc;
- int len, rd, spd;
- usb_dma_t *dma;
- uhci_soft_td_t **sp, **ep;
-{
- uhci_soft_td_t *p, *lastp;
- uhci_physaddr_t lastlink;
- int i, ntd, l, tog, maxp;
- u_int32_t status;
- int addr = upipe->pipe.device->address;
- int endpt = upipe->pipe.endpoint->edesc->bEndpointAddress;
-
- DPRINTFN(15, ("uhci_alloc_std_chain: addr=%d endpt=%d len=%d ls=%d "
- "spd=%d\n", addr, endpt, len,
- upipe->pipe.device->lowspeed, spd));
- if (len == 0) {
- *sp = *ep = 0;
- DPRINTFN(-1,("uhci_alloc_std_chain: len=0\n"));
- return (USBD_NORMAL_COMPLETION);
- }
- maxp = UGETW(upipe->pipe.endpoint->edesc->wMaxPacketSize);
- if (maxp == 0) {
- printf("uhci_alloc_std_chain: maxp=0\n");
- return (USBD_INVAL);
- }
- ntd = (len + maxp - 1) / maxp;
- tog = upipe->pipe.endpoint->toggle;
- if (ntd % 2 == 0)
- tog ^= 1;
- upipe->newtoggle = tog ^ 1;
- lastp = 0;
- lastlink = UHCI_PTR_T;
- ntd--;
- status = UHCI_TD_SET_ERRCNT(2) | UHCI_TD_ACTIVE;
- if (upipe->pipe.device->lowspeed)
- status |= UHCI_TD_LS;
- if (spd)
- status |= UHCI_TD_SPD;
- for (i = ntd; i >= 0; i--) {
- p = uhci_alloc_std(sc);
- if (!p) {
- uhci_free_std_chain(sc, lastp, 0);
- return (USBD_NOMEM);
- }
- p->td->link.std = lastp;
- p->td->td_link = lastlink;
- lastp = p;
- lastlink = p->physaddr;
- p->td->td_status = status;
- if (i == ntd) {
- /* last TD */
- l = len % maxp;
- if (l == 0) l = maxp;
- *ep = p;
- } else
- l = maxp;
- p->td->td_token =
- rd ? UHCI_TD_IN (l, endpt, addr, tog) :
- UHCI_TD_OUT(l, endpt, addr, tog);
- p->td->td_buffer = DMAADDR(dma) + i * maxp;
- tog ^= 1;
- }
- *sp = lastp;
- /*upipe->pipe.endpoint->toggle = tog;*/
- DPRINTFN(10, ("uhci_alloc_std_chain: oldtog=%d newtog=%d\n",
- upipe->pipe.endpoint->toggle, upipe->newtoggle));
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-uhci_device_bulk_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (uhci_device_bulk_start(reqh));
-}
-
-usbd_status
-uhci_device_bulk_start(reqh)
- usbd_request_handle reqh;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
- uhci_intr_info_t *ii = upipe->iinfo;
- uhci_soft_td_t *xfer, *xferend;
- uhci_soft_qh_t *sqh;
- usb_dma_t *dmap;
- usbd_status r;
- int len, isread;
- int s;
-
- DPRINTFN(3, ("uhci_device_bulk_transfer: reqh=%p buf=%p len=%d "
- "flags=%d\n",
- reqh, reqh->buffer, reqh->length, reqh->flags));
-
- if (reqh->isreq)
- panic("uhci_device_bulk_transfer: a request\n");
-
- len = reqh->length;
- dmap = &upipe->u.bulk.datadma;
- isread = reqh->pipe->endpoint->edesc->bEndpointAddress & UE_IN;
- sqh = upipe->u.bulk.sqh;
-
- upipe->u.bulk.isread = isread;
- upipe->u.bulk.length = len;
-
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret1;
- r = uhci_alloc_std_chain(upipe, sc, len, isread,
- reqh->flags & USBD_SHORT_XFER_OK,
- dmap, &xfer, &xferend);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret2;
- xferend->td->td_status |= UHCI_TD_IOC;
-
- if (!isread && len != 0)
- memcpy(KERNADDR(dmap), reqh->buffer, len);
-
-#ifdef USB_DEBUG
- if (uhcidebug > 10) {
- printf("uhci_device_bulk_transfer: xfer(1)\n");
- uhci_dump_tds(xfer);
- }
-#endif
-
- /* Set up interrupt info. */
- ii->reqh = reqh;
- ii->stdstart = xfer;
- ii->stdend = xferend;
-#ifdef DIAGNOSTIC
- ii->isdone = 0;
-#endif
-
- sqh->qh->elink = xfer;
- sqh->qh->qh_elink = xfer->physaddr;
- sqh->intr_info = ii;
-
- s = splusb();
- uhci_add_bulk(sc, sqh);
- LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list);
-
- if (reqh->timeout && !sc->sc_bus.use_polling) {
- usb_timeout(uhci_timeout, ii,
- MS_TO_TICKS(reqh->timeout), ii->timeout_handle);
- }
- splx(s);
-
-#ifdef USB_DEBUG
- if (uhcidebug > 10) {
- printf("uhci_device_bulk_transfer: xfer(2)\n");
- uhci_dump_tds(xfer);
- }
-#endif
-
- return (USBD_IN_PROGRESS);
-
- ret2:
- if (len != 0)
- usb_freemem(sc->sc_dmatag, dmap);
- ret1:
- return (r);
-}
-
-/* Abort a device bulk request. */
-void
-uhci_device_bulk_abort(reqh)
- usbd_request_handle reqh;
-{
- /* XXX inactivate */
- usb_delay_ms(reqh->pipe->device->bus, 1);/* make sure it is done */
- /* XXX call done */
-}
-
-/* Close a device bulk pipe. */
-void
-uhci_device_bulk_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
-
- uhci_free_sqh(sc, upipe->u.bulk.sqh);
- uhci_free_intr_info(upipe->iinfo);
- /* XXX free other resources */
-}
-
-usbd_status
-uhci_device_ctrl_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (uhci_device_ctrl_start(reqh));
-}
-
-usbd_status
-uhci_device_ctrl_start(reqh)
- usbd_request_handle reqh;
-{
- uhci_softc_t *sc = (uhci_softc_t *)reqh->pipe->device->bus;
- usbd_status r;
-
- if (!reqh->isreq)
- panic("uhci_device_ctrl_transfer: not a request\n");
-
- r = uhci_device_request(reqh);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
-
- if (sc->sc_bus.use_polling)
- uhci_waitintr(sc, reqh);
- return (USBD_IN_PROGRESS);
-}
-
-usbd_status
-uhci_device_intr_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (uhci_device_intr_start(reqh));
-}
-
-usbd_status
-uhci_device_intr_start(reqh)
- usbd_request_handle reqh;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
- uhci_intr_info_t *ii = upipe->iinfo;
- uhci_soft_td_t *xfer, *xferend;
- uhci_soft_qh_t *sqh;
- usb_dma_t *dmap;
- usbd_status r;
- int len, i;
- int s;
-
- DPRINTFN(3, ("uhci_device_intr_transfer: reqh=%p buf=%p len=%d "
- "flags=%d\n",
- reqh, reqh->buffer, reqh->length, reqh->flags));
-
- if (reqh->isreq)
- panic("uhci_device_intr_transfer: a request\n");
-
- len = reqh->length;
- dmap = &upipe->u.intr.datadma;
- if (len == 0)
- return (USBD_INVAL); /* XXX should it be? */
-
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret1;
- r = uhci_alloc_std_chain(upipe, sc, len, 1,
- reqh->flags & USBD_SHORT_XFER_OK,
- dmap, &xfer, &xferend);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret2;
- xferend->td->td_status |= UHCI_TD_IOC;
-
-#ifdef USB_DEBUG
- if (uhcidebug > 10) {
- printf("uhci_device_intr_transfer: xfer(1)\n");
- uhci_dump_tds(xfer);
- uhci_dump_qh(upipe->u.intr.qhs[0]);
- }
-#endif
-
- s = splusb();
- /* Set up interrupt info. */
- ii->reqh = reqh;
- ii->stdstart = xfer;
- ii->stdend = xferend;
-#ifdef DIAGNOSTIC
- ii->isdone = 0;
-#endif
-
- DPRINTFN(10,("uhci_device_intr_transfer: qhs[0]=%p\n",
- upipe->u.intr.qhs[0]));
- for (i = 0; i < upipe->u.intr.npoll; i++) {
- sqh = upipe->u.intr.qhs[i];
- sqh->qh->elink = xfer;
- sqh->qh->qh_elink = xfer->physaddr;
- }
- splx(s);
-
-#ifdef USB_DEBUG
- if (uhcidebug > 10) {
- printf("uhci_device_intr_transfer: xfer(2)\n");
- uhci_dump_tds(xfer);
- uhci_dump_qh(upipe->u.intr.qhs[0]);
- }
-#endif
-
- return (USBD_IN_PROGRESS);
-
- ret2:
- if (len != 0)
- usb_freemem(sc->sc_dmatag, dmap);
- ret1:
- return (r);
-}
-
-/* Abort a device control request. */
-void
-uhci_device_ctrl_abort(reqh)
- usbd_request_handle reqh;
-{
- /* XXX inactivate */
- usb_delay_ms(reqh->pipe->device->bus, 1); /* make sure it is done */
- /* XXX call done */
-}
-
-/* Close a device control pipe. */
-void
-uhci_device_ctrl_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
-
- uhci_free_intr_info(upipe->iinfo);
- /* XXX free other resources */
-}
-
-/* Abort a device interrupt request. */
-void
-uhci_device_intr_abort(reqh)
- usbd_request_handle reqh;
-{
- struct uhci_pipe *upipe;
-
- DPRINTFN(1, ("uhci_device_intr_abort: reqh=%p\n", reqh));
- /* XXX inactivate */
- usb_delay_ms(reqh->pipe->device->bus, 2); /* make sure it is done */
- if (reqh->pipe->intrreqh == reqh) {
- DPRINTF(("uhci_device_intr_abort: remove\n"));
- reqh->pipe->intrreqh = 0;
- upipe = (struct uhci_pipe *)reqh->pipe;
- uhci_intr_done(upipe->u.intr.qhs[0]->intr_info);
- }
-}
-
-/* Close a device interrupt pipe. */
-void
-uhci_device_intr_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- uhci_softc_t *sc = (uhci_softc_t *)pipe->device->bus;
- int i, s, npoll;
-
- upipe->iinfo->stdstart = 0; /* inactive */
-
- /* Unlink descriptors from controller data structures. */
- npoll = upipe->u.intr.npoll;
- uhci_lock_frames(sc);
- for (i = 0; i < npoll; i++)
- uhci_remove_intr(sc, upipe->u.intr.qhs[i]->pos,
- upipe->u.intr.qhs[i]);
- uhci_unlock_frames(sc);
-
- /*
- * We now have to wait for any activity on the physical
- * descriptors to stop.
- */
- usb_delay_ms(&sc->sc_bus, 2);
-
- for(i = 0; i < npoll; i++)
- uhci_free_sqh(sc, upipe->u.intr.qhs[i]);
- free(upipe->u.intr.qhs, M_USB);
-
- s = splusb();
- LIST_REMOVE(upipe->iinfo, list); /* remove from active list */
- splx(s);
- uhci_free_intr_info(upipe->iinfo);
-
- /* XXX free other resources */
-}
-
-usbd_status
-uhci_device_request(reqh)
- usbd_request_handle reqh;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
- usb_device_request_t *req = &reqh->request;
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
- int addr = dev->address;
- int endpt = upipe->pipe.endpoint->edesc->bEndpointAddress;
- uhci_intr_info_t *ii = upipe->iinfo;
- uhci_soft_td_t *setup, *xfer, *stat, *next, *xferend;
- uhci_soft_qh_t *sqh;
- usb_dma_t *dmap;
- int len;
- u_int32_t ls;
- usbd_status r;
- int isread;
- int s;
-
- DPRINTFN(3,("uhci_device_control type=0x%02x, request=0x%02x, "
- "wValue=0x%04x, wIndex=0x%04x len=%d, addr=%d, endpt=%d\n",
- req->bmRequestType, req->bRequest, UGETW(req->wValue),
- UGETW(req->wIndex), UGETW(req->wLength),
- addr, endpt));
-
- ls = dev->lowspeed ? UHCI_TD_LS : 0;
- isread = req->bmRequestType & UT_READ;
- len = UGETW(req->wLength);
-
- setup = upipe->u.ctl.setup;
- stat = upipe->u.ctl.stat;
- sqh = upipe->u.ctl.sqh;
- dmap = &upipe->u.ctl.datadma;
-
- /* Set up data transaction */
- if (len != 0) {
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret1;
- upipe->pipe.endpoint->toggle = 1;
- r = uhci_alloc_std_chain(upipe, sc, len, isread,
- reqh->flags & USBD_SHORT_XFER_OK,
- dmap, &xfer, &xferend);
- if (r != USBD_NORMAL_COMPLETION)
- goto ret2;
- next = xfer;
- xferend->td->link.std = stat;
- xferend->td->td_link = stat->physaddr;
- } else {
- next = stat;
- }
- upipe->u.ctl.length = len;
-
- memcpy(KERNADDR(&upipe->u.ctl.reqdma), req, sizeof *req);
- if (!isread && len != 0)
- memcpy(KERNADDR(dmap), reqh->buffer, len);
-
- setup->td->link.std = next;
- setup->td->td_link = next->physaddr;
- setup->td->td_status = UHCI_TD_SET_ERRCNT(2) | ls | UHCI_TD_ACTIVE;
- setup->td->td_token = UHCI_TD_SETUP(sizeof *req, endpt, addr);
- setup->td->td_buffer = DMAADDR(&upipe->u.ctl.reqdma);
-
- stat->td->link.std = 0;
- stat->td->td_link = UHCI_PTR_T;
- stat->td->td_status = UHCI_TD_SET_ERRCNT(2) | ls |
- UHCI_TD_ACTIVE | UHCI_TD_IOC;
- stat->td->td_token =
- isread ? UHCI_TD_OUT(0, endpt, addr, 1) :
- UHCI_TD_IN (0, endpt, addr, 1);
- stat->td->td_buffer = 0;
-
-#ifdef USB_DEBUG
- if (uhcidebug > 20) {
- printf("uhci_device_request: setup\n");
- uhci_dump_td(setup);
- printf("uhci_device_request: stat\n");
- uhci_dump_td(stat);
- }
-#endif
-
- /* Set up interrupt info. */
- ii->reqh = reqh;
- ii->stdstart = setup;
- ii->stdend = stat;
-#ifdef DIAGNOSTIC
- ii->isdone = 0;
-#endif
-
- sqh->qh->elink = setup;
- sqh->qh->qh_elink = setup->physaddr;
- sqh->intr_info = ii;
-
- s = splusb();
- uhci_add_ctrl(sc, sqh);
- LIST_INSERT_HEAD(&sc->sc_intrhead, ii, list);
-#ifdef USB_DEBUG
- if (uhcidebug > 12) {
- uhci_soft_td_t *std;
- uhci_soft_qh_t *xqh;
- uhci_soft_qh_t *sxqh;
- int maxqh = 0;
- uhci_physaddr_t link;
- printf("uhci_enter_ctl_q: follow from [0]\n");
- for (std = sc->sc_vframes[0].htd, link = 0;
- (link & UHCI_PTR_Q) == 0;
- std = std->td->link.std) {
- link = std->td->td_link;
- uhci_dump_td(std);
- }
- for (sxqh = xqh = (uhci_soft_qh_t *)std;
- xqh;
- xqh = (maxqh++ == 5 || xqh->qh->hlink==sxqh ||
- xqh->qh->hlink==xqh ? NULL : xqh->qh->hlink)) {
- uhci_dump_qh(xqh);
- uhci_dump_qh(sxqh);
- }
- printf("Enqueued QH:\n");
- uhci_dump_qh(sqh);
- uhci_dump_tds(sqh->qh->elink);
- }
-#endif
- if (reqh->timeout && !sc->sc_bus.use_polling) {
- usb_timeout(uhci_timeout, ii,
- MS_TO_TICKS(reqh->timeout), ii->timeout_handle);
- }
- splx(s);
-
- return (USBD_NORMAL_COMPLETION);
-
- ret2:
- if (len != 0)
- usb_freemem(sc->sc_dmatag, dmap);
- ret1:
- return (r);
-}
-
-usbd_status
-uhci_device_isoc_transfer(reqh)
- usbd_request_handle reqh;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
-#ifdef USB_DEBUG
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
-#endif
-
- DPRINTFN(1,("uhci_device_isoc_transfer: sc=%p\n", sc));
- if (upipe->u.iso.bufsize == 0)
- return (USBD_INVAL);
-
- /* XXX copy data */
- return (USBD_XXX);
-}
-
-usbd_status
-uhci_device_isoc_start(reqh)
- usbd_request_handle reqh;
-{
- return (USBD_XXX);
-}
-
-void
-uhci_device_isoc_abort(reqh)
- usbd_request_handle reqh;
-{
- /* XXX Can't abort a single request. */
-}
-
-void
-uhci_device_isoc_close(pipe)
- usbd_pipe_handle pipe;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
- struct iso *iso;
- int i;
-
- /*
- * Make sure all TDs are marked as inactive.
- * Wait for completion.
- * Unschedule.
- * Deallocate.
- */
- iso = &upipe->u.iso;
-
- for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++)
- iso->stds[i]->td->td_status &= ~UHCI_TD_ACTIVE;
- usb_delay_ms(&sc->sc_bus, 2); /* wait for completion */
-
- uhci_lock_frames(sc);
- for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
- uhci_soft_td_t *std, *vstd;
-
- std = iso->stds[i];
- for (vstd = sc->sc_vframes[i % UHCI_VFRAMELIST_COUNT].htd;
- vstd && vstd->td->link.std != std;
- vstd = vstd->td->link.std)
- ;
- if (!vstd) {
- /*panic*/
- printf("uhci_device_isoc_close: %p not found\n", std);
- uhci_unlock_frames(sc);
- return;
- }
- vstd->td->link = std->td->link;
- vstd->td->td_link = std->td->td_link;
- uhci_free_std(sc, std);
- }
- uhci_unlock_frames(sc);
-
- for (i = 0; i < iso->nbuf; i++)
- usb_freemem(sc->sc_dmatag, &iso->bufs[i]);
- free(iso->stds, M_USB);
- free(iso->bufs, M_USB);
-
- /* XXX what else? */
-}
-
-usbd_status
-uhci_device_isoc_setbuf(pipe, bufsize, nbuf)
- usbd_pipe_handle pipe;
- u_int bufsize;
- u_int nbuf;
-{
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- usbd_device_handle dev = upipe->pipe.device;
- uhci_softc_t *sc = (uhci_softc_t *)dev->bus;
- int addr = upipe->pipe.device->address;
- int endpt = upipe->pipe.endpoint->edesc->bEndpointAddress;
- int rd = upipe->pipe.endpoint->edesc->bEndpointAddress & UE_IN;
- struct iso *iso;
- int i;
- usbd_status r;
-
- /*
- * For simplicity the number of buffers must fit nicely in the frame
- * list.
- */
- if (UHCI_VFRAMELIST_COUNT % nbuf != 0)
- return (USBD_INVAL);
-
- iso = &upipe->u.iso;
- iso->bufsize = bufsize;
- iso->nbuf = nbuf;
-
- /* Allocate memory for buffers. */
- iso->bufs = malloc(nbuf * sizeof(usb_dma_t), M_USB, M_WAITOK);
- iso->stds = malloc(UHCI_VFRAMELIST_COUNT * sizeof (uhci_soft_td_t *),
- M_USB, M_WAITOK);
-
- for (i = 0; i < nbuf; i++) {
- r = usb_allocmem(sc->sc_dmatag, bufsize, 0, &iso->bufs[i]);
- if (r != USBD_NORMAL_COMPLETION) {
- nbuf = i;
- goto bad1;
- }
- }
-
- /* Allocate the TDs. */
- for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
- iso->stds[i] = uhci_alloc_std(sc);
- if (iso->stds[i] == 0)
- goto bad2;
- }
-
- /* XXX check schedule */
-
- /* XXX interrupts */
-
- /* Insert TDs into schedule, all marked inactive. */
- uhci_lock_frames(sc);
- for (i = 0; i < UHCI_VFRAMELIST_COUNT; i++) {
- uhci_soft_td_t *std, *vstd;
-
- std = iso->stds[i];
- std->td->td_status = UHCI_TD_IOS; /* iso, inactive */
- std->td->td_token =
- rd ? UHCI_TD_IN (0, endpt, addr, 0) :
- UHCI_TD_OUT(0, endpt, addr, 0);
- std->td->td_buffer = DMAADDR(&iso->bufs[i % nbuf]);
-
- vstd = sc->sc_vframes[i % UHCI_VFRAMELIST_COUNT].htd;
- std->td->link = vstd->td->link;
- std->td->td_link = vstd->td->td_link;
- vstd->td->link.std = std;
- vstd->td->td_link = std->physaddr;
- }
- uhci_unlock_frames(sc);
-
- return (USBD_NORMAL_COMPLETION);
-
- bad2:
- while (--i >= 0)
- uhci_free_std(sc, iso->stds[i]);
- bad1:
- for (i = 0; i < nbuf; i++)
- usb_freemem(sc->sc_dmatag, &iso->bufs[i]);
- free(iso->stds, M_USB);
- free(iso->bufs, M_USB);
- return (USBD_NOMEM);
-}
-
-void
-uhci_isoc_done(ii)
- uhci_intr_info_t *ii;
-{
-}
-
-void
-uhci_intr_done(ii)
- uhci_intr_info_t *ii;
-{
- uhci_softc_t *sc = ii->sc;
- usbd_request_handle reqh = ii->reqh;
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
- usb_dma_t *dma;
- uhci_soft_qh_t *sqh;
- int i, npoll;
-
- DPRINTFN(5, ("uhci_intr_done: length=%d\n", reqh->actlen));
-
- dma = &upipe->u.intr.datadma;
- memcpy(reqh->buffer, KERNADDR(dma), reqh->actlen);
- npoll = upipe->u.intr.npoll;
- for(i = 0; i < npoll; i++) {
- sqh = upipe->u.intr.qhs[i];
- sqh->qh->elink = 0;
- sqh->qh->qh_elink = UHCI_PTR_T;
- }
- uhci_free_std_chain(sc, ii->stdstart, 0);
-
- /* XXX Wasteful. */
- if (reqh->pipe->intrreqh == reqh) {
- uhci_soft_td_t *xfer, *xferend;
-
- /* This alloc cannot fail since we freed the chain above. */
- uhci_alloc_std_chain(upipe, sc, reqh->length, 1,
- reqh->flags & USBD_SHORT_XFER_OK,
- dma, &xfer, &xferend);
- xferend->td->td_status |= UHCI_TD_IOC;
-
-#ifdef USB_DEBUG
- if (uhcidebug > 10) {
- printf("uhci_device_intr_done: xfer(1)\n");
- uhci_dump_tds(xfer);
- uhci_dump_qh(upipe->u.intr.qhs[0]);
- }
-#endif
-
- ii->stdstart = xfer;
- ii->stdend = xferend;
-#ifdef DIAGNOSTIC
- ii->isdone = 0;
-#endif
- for (i = 0; i < npoll; i++) {
- sqh = upipe->u.intr.qhs[i];
- sqh->qh->elink = xfer;
- sqh->qh->qh_elink = xfer->physaddr;
- }
- } else {
- usb_freemem(sc->sc_dmatag, dma);
- ii->stdstart = 0; /* mark as inactive */
- usb_start_next(reqh->pipe);
- }
-}
-
-/* Deallocate request data structures */
-void
-uhci_ctrl_done(ii)
- uhci_intr_info_t *ii;
-{
- uhci_softc_t *sc = ii->sc;
- usbd_request_handle reqh = ii->reqh;
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
- u_int len = upipe->u.ctl.length;
- usb_dma_t *dma;
- uhci_td_t *htd = ii->stdstart->td;
-
-#ifdef DIAGNOSTIC
- if (!reqh->isreq)
- panic("uhci_ctrl_done: not a request\n");
-#endif
-
- LIST_REMOVE(ii, list); /* remove from active list */
-
- uhci_remove_ctrl(sc, upipe->u.ctl.sqh);
-
- if (len != 0) {
- dma = &upipe->u.ctl.datadma;
- if (reqh->request.bmRequestType & UT_READ)
- memcpy(reqh->buffer, KERNADDR(dma), len);
- uhci_free_std_chain(sc, htd->link.std, ii->stdend);
- usb_freemem(sc->sc_dmatag, dma);
- }
- DPRINTFN(5, ("uhci_ctrl_done: length=%d\n", reqh->actlen));
-}
-
-/* Deallocate request data structures */
-void
-uhci_bulk_done(ii)
- uhci_intr_info_t *ii;
-{
- uhci_softc_t *sc = ii->sc;
- usbd_request_handle reqh = ii->reqh;
- struct uhci_pipe *upipe = (struct uhci_pipe *)reqh->pipe;
- u_int len = upipe->u.bulk.length;
- usb_dma_t *dma;
- uhci_td_t *htd = ii->stdstart->td;
-
- LIST_REMOVE(ii, list); /* remove from active list */
-
- uhci_remove_bulk(sc, upipe->u.bulk.sqh);
-
- if (len != 0) {
- dma = &upipe->u.bulk.datadma;
- if (upipe->u.bulk.isread && len != 0)
- memcpy(reqh->buffer, KERNADDR(dma), len);
- uhci_free_std_chain(sc, htd->link.std, 0);
- usb_freemem(sc->sc_dmatag, dma);
- }
- DPRINTFN(4, ("uhci_bulk_done: length=%d\n", reqh->actlen));
- /* XXX compute new toggle */
-}
-
-/* Add interrupt QH, called with vflock. */
-void
-uhci_add_intr(sc, n, sqh)
- uhci_softc_t *sc;
- int n;
- uhci_soft_qh_t *sqh;
-{
- struct uhci_vframe *vf = &sc->sc_vframes[n];
- uhci_qh_t *eqh;
-
- DPRINTFN(4, ("uhci_add_intr: n=%d sqh=%p\n", n, sqh));
- eqh = vf->eqh->qh;
- sqh->qh->hlink = eqh->hlink;
- sqh->qh->qh_hlink = eqh->qh_hlink;
- eqh->hlink = sqh;
- eqh->qh_hlink = sqh->physaddr | UHCI_PTR_Q;
- vf->eqh = sqh;
- vf->bandwidth++;
-}
-
-/* Remove interrupt QH, called with vflock. */
-void
-uhci_remove_intr(sc, n, sqh)
- uhci_softc_t *sc;
- int n;
- uhci_soft_qh_t *sqh;
-{
- struct uhci_vframe *vf = &sc->sc_vframes[n];
- uhci_soft_qh_t *pqh;
-
- DPRINTFN(4, ("uhci_remove_intr: n=%d sqh=%p\n", n, sqh));
-
- for (pqh = vf->hqh; pqh->qh->hlink != sqh; pqh = pqh->qh->hlink)
-#if defined(DIAGNOSTIC) || defined(USB_DEBUG)
- if (pqh->qh->qh_hlink & UHCI_PTR_T) {
- printf("uhci_remove_intr: QH not found\n");
- return;
- }
-#else
- ;
-#endif
- pqh->qh->hlink = sqh->qh->hlink;
- pqh->qh->qh_hlink = sqh->qh->qh_hlink;
- if (vf->eqh == sqh)
- vf->eqh = pqh;
- vf->bandwidth--;
-}
-
-usbd_status
-uhci_device_setintr(sc, upipe, ival)
- uhci_softc_t *sc;
- struct uhci_pipe *upipe;
- int ival;
-{
- uhci_soft_qh_t *sqh;
- int i, npoll, s;
- u_int bestbw, bw, bestoffs, offs;
-
- DPRINTFN(2, ("uhci_setintr: pipe=%p\n", upipe));
- if (ival == 0) {
- printf("uhci_setintr: 0 interval\n");
- return (USBD_INVAL);
- }
-
- if (ival > UHCI_VFRAMELIST_COUNT)
- ival = UHCI_VFRAMELIST_COUNT;
- npoll = (UHCI_VFRAMELIST_COUNT + ival - 1) / ival;
- DPRINTFN(2, ("uhci_setintr: ival=%d npoll=%d\n", ival, npoll));
-
- upipe->u.intr.npoll = npoll;
- upipe->u.intr.qhs =
- malloc(npoll * sizeof(uhci_soft_qh_t *), M_USB, M_WAITOK);
-
- /*
- * Figure out which offset in the schedule that has most
- * bandwidth left over.
- */
-#define MOD(i) ((i) & (UHCI_VFRAMELIST_COUNT-1))
- for (bestoffs = offs = 0, bestbw = ~0; offs < ival; offs++) {
- for (bw = i = 0; i < npoll; i++)
- bw += sc->sc_vframes[MOD(i * ival + offs)].bandwidth;
- if (bw < bestbw) {
- bestbw = bw;
- bestoffs = offs;
- }
- }
- DPRINTFN(1, ("uhci_setintr: bw=%d offs=%d\n", bestbw, bestoffs));
-
- upipe->iinfo->stdstart = 0;
- for(i = 0; i < npoll; i++) {
- upipe->u.intr.qhs[i] = sqh = uhci_alloc_sqh(sc);
- sqh->qh->elink = 0;
- sqh->qh->qh_elink = UHCI_PTR_T;
- sqh->pos = MOD(i * ival + bestoffs);
- sqh->intr_info = upipe->iinfo;
- }
-#undef MOD
-
- s = splusb();
- LIST_INSERT_HEAD(&sc->sc_intrhead, upipe->iinfo, list);
- splx(s);
-
- uhci_lock_frames(sc);
- /* Enter QHs into the controller data structures. */
- for(i = 0; i < npoll; i++)
- uhci_add_intr(sc, upipe->u.intr.qhs[i]->pos,
- upipe->u.intr.qhs[i]);
- uhci_unlock_frames(sc);
-
- DPRINTFN(5, ("uhci_setintr: returns %p\n", upipe));
- return (USBD_NORMAL_COMPLETION);
-}
-
-/* Open a new pipe. */
-usbd_status
-uhci_open(pipe)
- usbd_pipe_handle pipe;
-{
- uhci_softc_t *sc = (uhci_softc_t *)pipe->device->bus;
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- usb_endpoint_descriptor_t *ed = pipe->endpoint->edesc;
- usbd_status r;
-
- DPRINTFN(1, ("uhci_open: pipe=%p, addr=%d, endpt=%d (%d)\n",
- pipe, pipe->device->address,
- ed->bEndpointAddress, sc->sc_addr));
- if (pipe->device->address == sc->sc_addr) {
- switch (ed->bEndpointAddress) {
- case USB_CONTROL_ENDPOINT:
- pipe->methods = &uhci_root_ctrl_methods;
- break;
- case UE_IN | UHCI_INTR_ENDPT:
- pipe->methods = &uhci_root_intr_methods;
- break;
- default:
- return (USBD_INVAL);
- }
- } else {
- upipe->iinfo = uhci_alloc_intr_info(sc);
- if (upipe->iinfo == 0)
- return (USBD_NOMEM);
- switch (ed->bmAttributes & UE_XFERTYPE) {
- case UE_CONTROL:
- pipe->methods = &uhci_device_ctrl_methods;
- upipe->u.ctl.sqh = uhci_alloc_sqh(sc);
- if (upipe->u.ctl.sqh == 0)
- goto bad;
- upipe->u.ctl.setup = uhci_alloc_std(sc);
- if (upipe->u.ctl.setup == 0) {
- uhci_free_sqh(sc, upipe->u.ctl.sqh);
- goto bad;
- }
- upipe->u.ctl.stat = uhci_alloc_std(sc);
- if (upipe->u.ctl.stat == 0) {
- uhci_free_sqh(sc, upipe->u.ctl.sqh);
- uhci_free_std(sc, upipe->u.ctl.setup);
- goto bad;
- }
- r = usb_allocmem(sc->sc_dmatag,
- sizeof(usb_device_request_t),
- 0, &upipe->u.ctl.reqdma);
- if (r != USBD_NORMAL_COMPLETION) {
- uhci_free_sqh(sc, upipe->u.ctl.sqh);
- uhci_free_std(sc, upipe->u.ctl.setup);
- uhci_free_std(sc, upipe->u.ctl.stat);
- goto bad;
- }
- break;
- case UE_INTERRUPT:
- pipe->methods = &uhci_device_intr_methods;
- return (uhci_device_setintr(sc, upipe, ed->bInterval));
- case UE_ISOCHRONOUS:
- pipe->methods = &uhci_device_isoc_methods;
- upipe->u.iso.nbuf = 0;
- return (USBD_NORMAL_COMPLETION);
- case UE_BULK:
- pipe->methods = &uhci_device_bulk_methods;
- upipe->u.bulk.sqh = uhci_alloc_sqh(sc);
- if (upipe->u.bulk.sqh == 0)
- goto bad;
- break;
- }
- }
- return (USBD_NORMAL_COMPLETION);
-
- bad:
- uhci_free_intr_info(upipe->iinfo);
- return (USBD_NOMEM);
-}
-
-/*
- * Data structures and routines to emulate the root hub.
- */
-usb_device_descriptor_t uhci_devd = {
- USB_DEVICE_DESCRIPTOR_SIZE,
- UDESC_DEVICE, /* type */
- {0x00, 0x01}, /* USB version */
- UCLASS_HUB, /* class */
- USUBCLASS_HUB, /* subclass */
- 0, /* protocol */
- 64, /* max packet */
- {0},{0},{0x00,0x01}, /* device id */
- 1,2,0, /* string indicies */
- 1 /* # of configurations */
-};
-
-usb_config_descriptor_t uhci_confd = {
- USB_CONFIG_DESCRIPTOR_SIZE,
- UDESC_CONFIG,
- {USB_CONFIG_DESCRIPTOR_SIZE +
- USB_INTERFACE_DESCRIPTOR_SIZE +
- USB_ENDPOINT_DESCRIPTOR_SIZE},
- 1,
- 1,
- 0,
- UC_SELF_POWERED,
- 0 /* max power */
-};
-
-usb_interface_descriptor_t uhci_ifcd = {
- USB_INTERFACE_DESCRIPTOR_SIZE,
- UDESC_INTERFACE,
- 0,
- 0,
- 1,
- UCLASS_HUB,
- USUBCLASS_HUB,
- 0,
- 0
-};
-
-usb_endpoint_descriptor_t uhci_endpd = {
- USB_ENDPOINT_DESCRIPTOR_SIZE,
- UDESC_ENDPOINT,
- UE_IN | UHCI_INTR_ENDPT,
- UE_INTERRUPT,
- {8},
- 255
-};
-
-usb_hub_descriptor_t uhci_hubd_piix = {
- USB_HUB_DESCRIPTOR_SIZE,
- UDESC_HUB,
- 2,
- { UHD_PWR_NO_SWITCH | UHD_OC_INDIVIDUAL, 0 },
- 50, /* power on to power good */
- 0,
- { 0x00 }, /* both ports are removable */
-};
-
-int
-uhci_str(p, l, s)
- usb_string_descriptor_t *p;
- int l;
- char *s;
-{
- int i;
-
- if (l == 0)
- return (0);
- p->bLength = 2 * strlen(s) + 2;
- if (l == 1)
- return (1);
- p->bDescriptorType = UDESC_STRING;
- l -= 2;
- for (i = 0; s[i] && l > 1; i++, l -= 2)
- USETW2(p->bString[i], 0, s[i]);
- return (2*i+2);
-}
-
-/*
- * Simulate a hardware hub by handling all the necessary requests.
- */
-usbd_status
-uhci_root_ctrl_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (uhci_root_ctrl_start(reqh));
-}
-
-usbd_status
-uhci_root_ctrl_start(reqh)
- usbd_request_handle reqh;
-{
- uhci_softc_t *sc = (uhci_softc_t *)reqh->pipe->device->bus;
- usb_device_request_t *req;
- void *buf;
- int port, x;
- int len, value, index, status, change, l, totlen = 0;
- usb_port_status_t ps;
- usbd_status r;
-
- if (!reqh->isreq)
- panic("uhci_root_ctrl_transfer: not a request\n");
- req = &reqh->request;
- buf = reqh->buffer;
-
- DPRINTFN(2,("uhci_root_ctrl_control type=0x%02x request=%02x\n",
- req->bmRequestType, req->bRequest));
-
- len = UGETW(req->wLength);
- value = UGETW(req->wValue);
- index = UGETW(req->wIndex);
-#define C(x,y) ((x) | ((y) << 8))
- switch(C(req->bRequest, req->bmRequestType)) {
- case C(UR_CLEAR_FEATURE, UT_WRITE_DEVICE):
- case C(UR_CLEAR_FEATURE, UT_WRITE_INTERFACE):
- case C(UR_CLEAR_FEATURE, UT_WRITE_ENDPOINT):
- /*
- * DEVICE_REMOTE_WAKEUP and ENDPOINT_HALT are no-ops
- * for the integrated root hub.
- */
- break;
- case C(UR_GET_CONFIG, UT_READ_DEVICE):
- if (len > 0) {
- *(u_int8_t *)buf = sc->sc_conf;
- totlen = 1;
- }
- break;
- case C(UR_GET_DESCRIPTOR, UT_READ_DEVICE):
- DPRINTFN(2,("uhci_root_ctrl_control wValue=0x%04x\n", value));
- switch(value >> 8) {
- case UDESC_DEVICE:
- if ((value & 0xff) != 0) {
- r = USBD_IOERROR;
- goto ret;
- }
- totlen = l = min(len, USB_DEVICE_DESCRIPTOR_SIZE);
- memcpy(buf, &uhci_devd, l);
- break;
- case UDESC_CONFIG:
- if ((value & 0xff) != 0) {
- r = USBD_IOERROR;
- goto ret;
- }
- totlen = l = min(len, USB_CONFIG_DESCRIPTOR_SIZE);
- memcpy(buf, &uhci_confd, l);
- buf = (char *)buf + l;
- len -= l;
- l = min(len, USB_INTERFACE_DESCRIPTOR_SIZE);
- totlen += l;
- memcpy(buf, &uhci_ifcd, l);
- buf = (char *)buf + l;
- len -= l;
- l = min(len, USB_ENDPOINT_DESCRIPTOR_SIZE);
- totlen += l;
- memcpy(buf, &uhci_endpd, l);
- break;
- case UDESC_STRING:
- if (len == 0)
- break;
- *(u_int8_t *)buf = 0;
- totlen = 1;
- switch (value & 0xff) {
- case 1: /* Vendor */
- totlen = uhci_str(buf, len, sc->sc_vendor);
- break;
- case 2: /* Product */
- totlen = uhci_str(buf, len, "UHCI root hub");
- break;
- }
- break;
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- break;
- case C(UR_GET_INTERFACE, UT_READ_INTERFACE):
- if (len > 0) {
- *(u_int8_t *)buf = 0;
- totlen = 1;
- }
- break;
- case C(UR_GET_STATUS, UT_READ_DEVICE):
- if (len > 1) {
- USETW(((usb_status_t *)buf)->wStatus,UDS_SELF_POWERED);
- totlen = 2;
- }
- break;
- case C(UR_GET_STATUS, UT_READ_INTERFACE):
- case C(UR_GET_STATUS, UT_READ_ENDPOINT):
- if (len > 1) {
- USETW(((usb_status_t *)buf)->wStatus, 0);
- totlen = 2;
- }
- break;
- case C(UR_SET_ADDRESS, UT_WRITE_DEVICE):
- if (value >= USB_MAX_DEVICES) {
- r = USBD_IOERROR;
- goto ret;
- }
- sc->sc_addr = value;
- break;
- case C(UR_SET_CONFIG, UT_WRITE_DEVICE):
- if (value != 0 && value != 1) {
- r = USBD_IOERROR;
- goto ret;
- }
- sc->sc_conf = value;
- break;
- case C(UR_SET_DESCRIPTOR, UT_WRITE_DEVICE):
- break;
- case C(UR_SET_FEATURE, UT_WRITE_DEVICE):
- case C(UR_SET_FEATURE, UT_WRITE_INTERFACE):
- case C(UR_SET_FEATURE, UT_WRITE_ENDPOINT):
- r = USBD_IOERROR;
- goto ret;
- case C(UR_SET_INTERFACE, UT_WRITE_INTERFACE):
- break;
- case C(UR_SYNCH_FRAME, UT_WRITE_ENDPOINT):
- break;
- /* Hub requests */
- case C(UR_CLEAR_FEATURE, UT_WRITE_CLASS_DEVICE):
- break;
- case C(UR_CLEAR_FEATURE, UT_WRITE_CLASS_OTHER):
- DPRINTFN(3, ("uhci_root_ctrl_control: UR_CLEAR_PORT_FEATURE "
- "port=%d feature=%d\n",
- index, value));
- if (index == 1)
- port = UHCI_PORTSC1;
- else if (index == 2)
- port = UHCI_PORTSC2;
- else {
- r = USBD_IOERROR;
- goto ret;
- }
- switch(value) {
- case UHF_PORT_ENABLE:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x & ~UHCI_PORTSC_PE);
- break;
- case UHF_PORT_SUSPEND:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x & ~UHCI_PORTSC_SUSP);
- break;
- case UHF_PORT_RESET:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x & ~UHCI_PORTSC_PR);
- break;
- case UHF_C_PORT_CONNECTION:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_CSC);
- break;
- case UHF_C_PORT_ENABLE:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_POEDC);
- break;
- case UHF_C_PORT_OVER_CURRENT:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_OCIC);
- break;
- case UHF_C_PORT_RESET:
- sc->sc_isreset = 0;
- r = USBD_NORMAL_COMPLETION;
- goto ret;
- case UHF_PORT_CONNECTION:
- case UHF_PORT_OVER_CURRENT:
- case UHF_PORT_POWER:
- case UHF_PORT_LOW_SPEED:
- case UHF_C_PORT_SUSPEND:
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- break;
- case C(UR_GET_BUS_STATE, UT_READ_CLASS_OTHER):
- if (index == 1)
- port = UHCI_PORTSC1;
- else if (index == 2)
- port = UHCI_PORTSC2;
- else {
- r = USBD_IOERROR;
- goto ret;
- }
- if (len > 0) {
- *(u_int8_t *)buf =
- (UREAD2(sc, port) & UHCI_PORTSC_LS) >>
- UHCI_PORTSC_LS_SHIFT;
- totlen = 1;
- }
- break;
- case C(UR_GET_DESCRIPTOR, UT_READ_CLASS_DEVICE):
- if (value != 0) {
- r = USBD_IOERROR;
- goto ret;
- }
- l = min(len, USB_HUB_DESCRIPTOR_SIZE);
- totlen = l;
- memcpy(buf, &uhci_hubd_piix, l);
- break;
- case C(UR_GET_STATUS, UT_READ_CLASS_DEVICE):
- if (len != 4) {
- r = USBD_IOERROR;
- goto ret;
- }
- memset(buf, 0, len);
- totlen = len;
- break;
- case C(UR_GET_STATUS, UT_READ_CLASS_OTHER):
- if (index == 1)
- port = UHCI_PORTSC1;
- else if (index == 2)
- port = UHCI_PORTSC2;
- else {
- r = USBD_IOERROR;
- goto ret;
- }
- if (len != 4) {
- r = USBD_IOERROR;
- goto ret;
- }
- x = UREAD2(sc, port);
- status = change = 0;
- if (x & UHCI_PORTSC_CCS )
- status |= UPS_CURRENT_CONNECT_STATUS;
- if (x & UHCI_PORTSC_CSC )
- change |= UPS_C_CONNECT_STATUS;
- if (x & UHCI_PORTSC_PE )
- status |= UPS_PORT_ENABLED;
- if (x & UHCI_PORTSC_POEDC)
- change |= UPS_C_PORT_ENABLED;
- if (x & UHCI_PORTSC_OCI )
- status |= UPS_OVERCURRENT_INDICATOR;
- if (x & UHCI_PORTSC_OCIC )
- change |= UPS_C_OVERCURRENT_INDICATOR;
- if (x & UHCI_PORTSC_SUSP )
- status |= UPS_SUSPEND;
- if (x & UHCI_PORTSC_LSDA )
- status |= UPS_LOW_SPEED;
- status |= UPS_PORT_POWER;
- if (sc->sc_isreset)
- change |= UPS_C_PORT_RESET;
- USETW(ps.wPortStatus, status);
- USETW(ps.wPortChange, change);
- l = min(len, sizeof ps);
- memcpy(buf, &ps, l);
- totlen = l;
- break;
- case C(UR_SET_DESCRIPTOR, UT_WRITE_CLASS_DEVICE):
- r = USBD_IOERROR;
- goto ret;
- case C(UR_SET_FEATURE, UT_WRITE_CLASS_DEVICE):
- break;
- case C(UR_SET_FEATURE, UT_WRITE_CLASS_OTHER):
- if (index == 1)
- port = UHCI_PORTSC1;
- else if (index == 2)
- port = UHCI_PORTSC2;
- else {
- r = USBD_IOERROR;
- goto ret;
- }
- switch(value) {
- case UHF_PORT_ENABLE:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_PE);
- break;
- case UHF_PORT_SUSPEND:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_SUSP);
- break;
- case UHF_PORT_RESET:
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_PR);
- usb_delay_ms(&sc->sc_bus, 10);
- UWRITE2(sc, port, x & ~UHCI_PORTSC_PR);
- delay(100);
- x = UREAD2(sc, port);
- UWRITE2(sc, port, x | UHCI_PORTSC_PE);
- delay(100);
- DPRINTFN(3,("uhci port %d reset, status = 0x%04x\n",
- index, UREAD2(sc, port)));
- sc->sc_isreset = 1;
- break;
- case UHF_C_PORT_CONNECTION:
- case UHF_C_PORT_ENABLE:
- case UHF_C_PORT_OVER_CURRENT:
- case UHF_PORT_CONNECTION:
- case UHF_PORT_OVER_CURRENT:
- case UHF_PORT_POWER:
- case UHF_PORT_LOW_SPEED:
- case UHF_C_PORT_SUSPEND:
- case UHF_C_PORT_RESET:
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- break;
- default:
- r = USBD_IOERROR;
- goto ret;
- }
- reqh->actlen = totlen;
- r = USBD_NORMAL_COMPLETION;
- ret:
- reqh->status = r;
- reqh->xfercb(reqh);
- usb_start_next(reqh->pipe);
- return (USBD_IN_PROGRESS);
-}
-
-/* Abort a root control request. */
-void
-uhci_root_ctrl_abort(reqh)
- usbd_request_handle reqh;
-{
- /* Nothing to do, all transfers are syncronous. */
-}
-
-/* Close the root pipe. */
-void
-uhci_root_ctrl_close(pipe)
- usbd_pipe_handle pipe;
-{
- usb_untimeout(uhci_timo, pipe->intrreqh, pipe->intrreqh->timo_handle);
- DPRINTF(("uhci_root_ctrl_close\n"));
-}
-
-/* Abort a root interrupt request. */
-void
-uhci_root_intr_abort(reqh)
- usbd_request_handle reqh;
-{
- usb_untimeout(uhci_timo, reqh, reqh->timo_handle);
-}
-
-usbd_status
-uhci_root_intr_transfer(reqh)
- usbd_request_handle reqh;
-{
- int s;
- usbd_status r;
-
- s = splusb();
- r = usb_insert_transfer(reqh);
- splx(s);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- else
- return (uhci_root_intr_start(reqh));
-}
-
-/* Start a transfer on the root interrupt pipe */
-usbd_status
-uhci_root_intr_start(reqh)
- usbd_request_handle reqh;
-{
- usbd_pipe_handle pipe = reqh->pipe;
- uhci_softc_t *sc = (uhci_softc_t *)pipe->device->bus;
- struct uhci_pipe *upipe = (struct uhci_pipe *)pipe;
- usb_dma_t *dmap;
- usbd_status r;
- int len;
-
- DPRINTFN(3, ("uhci_root_intr_transfer: reqh=%p buf=%p len=%d "
- "flags=%d\n",
- reqh, reqh->buffer, reqh->length, reqh->flags));
-
- len = reqh->length;
- dmap = &upipe->u.intr.datadma;
- if (len == 0)
- return (USBD_INVAL); /* XXX should it be? */
-
- r = usb_allocmem(sc->sc_dmatag, len, 0, dmap);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
-
- sc->sc_ival = MS_TO_TICKS(reqh->pipe->endpoint->edesc->bInterval);
- usb_timeout(uhci_timo, reqh, sc->sc_ival, reqh->timo_handle);
- return (USBD_IN_PROGRESS);
-}
-
-/* Close the root interrupt pipe. */
-void
-uhci_root_intr_close(pipe)
- usbd_pipe_handle pipe;
-{
- usb_untimeout(uhci_timo, pipe->intrreqh, pipe->intrreqh->timo_handle);
- DPRINTF(("uhci_root_intr_close\n"));
-}
diff --git a/sys/dev/usb/uhcireg.h b/sys/dev/usb/uhcireg.h
deleted file mode 100644
index 9c8ef008b2b70..0000000000000
--- a/sys/dev/usb/uhcireg.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/* $NetBSD: uhcireg.h,v 1.5 1998/12/27 23:40:52 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _DEV_PCI_UHCIREG_H_
-#define _DEV_PCI_UHCIREG_H_
-
-/*** PCI config registers ***/
-
-#define PCI_USBREV 0x60 /* USB protocol revision */
-#define PCI_USBREV_MASK 0xff
-#define PCI_USBREV_PRE_1_0 0x00
-#define PCI_USBREV_1_0 0x10
-
-#define PCI_CBIO 0x20 /* configuration base IO */
-
-#define PCI_INTERFACE_UHCI 0x00
-
-/*** UHCI registers ***/
-
-#define UHCI_CMD 0x00
-#define UHCI_CMD_RS 0x0001
-#define UHCI_CMD_HCRESET 0x0002
-#define UHCI_CMD_GRESET 0x0004
-#define UHCI_CMD_EGSM 0x0008
-#define UHCI_CMD_FGR 0x0010
-#define UHCI_CMD_SWDBG 0x0020
-#define UHCI_CMD_CF 0x0040
-#define UHCI_CMD_MAXP 0x0080
-
-#define UHCI_STS 0x02
-#define UHCI_STS_USBINT 0x0001
-#define UHCI_STS_USBEI 0x0002
-#define UHCI_STS_RD 0x0004
-#define UHCI_STS_HSE 0x0008
-#define UHCI_STS_HCPE 0x0010
-#define UHCI_STS_HCH 0x0020
-
-#define UHCI_INTR 0x04
-#define UHCI_INTR_TOCRCIE 0x0001
-#define UHCI_INTR_RIE 0x0002
-#define UHCI_INTR_IOCE 0x0004
-#define UHCI_INTR_SPIE 0x0008
-
-#define UHCI_FRNUM 0x06
-#define UHCI_FRNUM_MASK 0x03ff
-
-
-#define UHCI_FLBASEADDR 0x08
-
-#define UHCI_SOF 0x0c
-#define UHCI_SOF_MASK 0x7f
-
-#define UHCI_PORTSC1 0x010
-#define UHCI_PORTSC2 0x012
-#define UHCI_PORTSC_CCS 0x0001
-#define UHCI_PORTSC_CSC 0x0002
-#define UHCI_PORTSC_PE 0x0004
-#define UHCI_PORTSC_POEDC 0x0008
-#define UHCI_PORTSC_LS 0x0030
-#define UHCI_PORTSC_LS_SHIFT 4
-#define UHCI_PORTSC_RD 0x0040
-#define UHCI_PORTSC_LSDA 0x0100
-#define UHCI_PORTSC_PR 0x0200
-#define UHCI_PORTSC_OCI 0x0400
-#define UHCI_PORTSC_OCIC 0x0800
-#define UHCI_PORTSC_SUSP 0x1000
-
-#define UHCI_FRAMELIST_COUNT 1024
-#define UHCI_FRAMELIST_ALIGN 4096
-
-#define UHCI_TD_ALIGN 16
-#define UHCI_QH_ALIGN 16
-
-typedef u_int32_t uhci_physaddr_t;
-#define UHCI_PTR_T 0x00000001
-#define UHCI_PTR_Q 0x00000002
-#define UHCI_PTR_VF 0x00000004
-
-typedef union {
- struct uhci_soft_qh *sqh;
- struct uhci_soft_td *std;
-} uhci_soft_td_qh_t;
-
-/*
- * The Queue Heads and Transfer Descriptors and accessed
- * by both the CPU and the USB controller which runs
- * concurrently. This means that they have to be accessed
- * with great care. As long as the data structures are
- * not linked into the controller's frame list they cannot
- * be accessed by it and anything goes. As soon as a
- * TD is accessible by the controller it "owns" the td_status
- * field; it will not be written by the CPU. Similarly
- * the controller "owns" the qh_elink field.
- */
-
-typedef struct {
- uhci_physaddr_t td_link;
- u_int32_t td_status;
-#define UHCI_TD_GET_ACTLEN(s) (((s) + 1) & 0x3ff)
-#define UHCI_TD_ZERO_ACTLEN(t) ((t) | 0x3ff)
-#define UHCI_TD_BITSTUFF 0x00020000
-#define UHCI_TD_CRCTO 0x00040000
-#define UHCI_TD_NAK 0x00080000
-#define UHCI_TD_BABBLE 0x00100000
-#define UHCI_TD_DBUFFER 0x00200000
-#define UHCI_TD_STALLED 0x00400000
-#define UHCI_TD_ACTIVE 0x00800000
-#define UHCI_TD_IOC 0x01000000
-#define UHCI_TD_IOS 0x02000000
-#define UHCI_TD_LS 0x04000000
-#define UHCI_TD_GET_ERRCNT(s) (((s) >> 27) & 3)
-#define UHCI_TD_SET_ERRCNT(n) ((n) << 27)
-#define UHCI_TD_SPD 0x20000000
- u_int32_t td_token;
-#define UHCI_TD_PID_IN 0x00000069
-#define UHCI_TD_PID_OUT 0x000000e1
-#define UHCI_TD_PID_SETUP 0x0000002d
-#define UHCI_TD_GET_PID(s) ((s) & 0xff)
-#define UHCI_TD_SET_DEVADDR(a) ((a) << 8)
-#define UHCI_TD_GET_DEVADDR(s) (((s) >> 8) & 0x7f)
-#define UHCI_TD_SET_ENDPT(e) (((e)&0xf) << 15)
-#define UHCI_TD_GET_ENDPT(s) (((s) >> 15) & 0xf)
-#define UHCI_TD_SET_DT(t) ((t) << 19)
-#define UHCI_TD_GET_DT(s) (((s) >> 19) & 1)
-#define UHCI_TD_SET_MAXLEN(l) (((l)-1) << 21)
-#define UHCI_TD_GET_MAXLEN(s) ((((s) >> 21) + 1) & 0x7ff)
-#define UHCI_TD_MAXLEN_MASK 0xffe00000
- u_int32_t td_buffer;
- uhci_soft_td_qh_t link; /* soft version of the td_link field */
- /* padding to 32 bytes */
-} uhci_td_t;
-#define UHCI_TD_SIZE 32
-
-#define UHCI_TD_ERROR (UHCI_TD_BITSTUFF|UHCI_TD_CRCTO|UHCI_TD_BABBLE|UHCI_TD_DBUFFER|UHCI_TD_STALLED)
-
-#define UHCI_TD_SETUP(len, endp, dev) (UHCI_TD_SET_MAXLEN(len) | \
- UHCI_TD_SET_ENDPT(endp) | UHCI_TD_SET_DEVADDR(dev) | UHCI_TD_PID_SETUP)
-#define UHCI_TD_OUT(len, endp, dev, dt) (UHCI_TD_SET_MAXLEN(len) | \
- UHCI_TD_SET_ENDPT(endp) | UHCI_TD_SET_DEVADDR(dev) | \
- UHCI_TD_PID_OUT | UHCI_TD_SET_DT(dt))
-#define UHCI_TD_IN(len, endp, dev, dt) (UHCI_TD_SET_MAXLEN(len) | \
- UHCI_TD_SET_ENDPT(endp) | UHCI_TD_SET_DEVADDR(dev) | UHCI_TD_PID_IN | \
- UHCI_TD_SET_DT(dt))
-
-typedef struct {
- uhci_physaddr_t qh_hlink;
- uhci_physaddr_t qh_elink;
- struct uhci_soft_qh *hlink; /* soft version of qh_hlink */
- struct uhci_soft_td *elink; /* soft version of qh_elink */
- /* padding to 32 bytes */
-} uhci_qh_t;
-#define UHCI_QH_SIZE 32
-
-#endif /* _DEV_PCI_UHCIREG_H_ */
diff --git a/sys/dev/usb/uhcivar.h b/sys/dev/usb/uhcivar.h
deleted file mode 100644
index 7143c42fbf0d1..0000000000000
--- a/sys/dev/usb/uhcivar.h
+++ /dev/null
@@ -1,180 +0,0 @@
-/* $NetBSD: uhcivar.h,v 1.5 1998/12/26 12:53:02 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * To avoid having 1024 TDs for each isochronous transfer we introduce
- * a virtual frame list. Every UHCI_VFRAMELIST_COUNT entries in the real
- * frame list points to a non-active TD. These, in turn, which form the
- * starts of the virtual frame list. This also has the advantage that it
- * simplifies linking in/out TD/QH in the schedule.
- * Furthermore, initially each of the inactive TDs point to an inactive
- * QH that forms the start of the interrupt traffic for that slot.
- * Each of these QHs point to the same QH that is the start of control
- * traffic.
- *
- * UHCI_VFRAMELIST_COUNT should be a power of 2 and <= UHCI_FRAMELIST_COUNT.
- */
-#define UHCI_VFRAMELIST_COUNT 128
-
-typedef struct uhci_soft_qh uhci_soft_qh_t;
-typedef struct uhci_soft_td uhci_soft_td_t;
-
-/*
- * An interrupt info struct contains the information needed to
- * execute a requested routine when the controller generates an
- * interrupt. Since we cannot know which transfer generated
- * the interrupt all structs are linked together so they can be
- * searched at interrupt time.
- */
-typedef struct uhci_intr_info {
- struct uhci_softc *sc;
- usbd_request_handle reqh;
- uhci_soft_td_t *stdstart;
- uhci_soft_td_t *stdend;
- LIST_ENTRY(uhci_intr_info) list;
-#if defined(__FreeBSD__)
- struct callout_handle timeout_handle;
-#endif /* defined(__FreeBSD__) */
-#ifdef DIAGNOSTIC
- int isdone;
-#endif
-} uhci_intr_info_t;
-
-/*
- * Extra information that we need for a TD.
- */
-struct uhci_soft_td {
- uhci_td_t *td; /* The real TD */
- uhci_physaddr_t physaddr; /* and its physical address. */
-};
-#define UHCI_TD_CHUNK 128 /*(PAGE_SIZE / UHCI_TD_SIZE)*/
-
-/*
- * Extra information that we need for a QH.
- */
-struct uhci_soft_qh {
- uhci_qh_t *qh; /* The real QH */
- uhci_physaddr_t physaddr; /* and its physical address. */
- int pos; /* Timeslot position */
- uhci_intr_info_t *intr_info; /* Who to call on completion. */
-};
-#define UHCI_QH_CHUNK 128 /*(PAGE_SIZE / UHCI_QH_SIZE)*/
-
-/* Only used for buffer free list. */
-struct uhci_buffer {
- struct uhci_buffer *next;
-};
-#define UHCI_BUFFER_SIZE 64
-#define UHCI_BUFFER_CHUNK 64 /*(PAGE_SIZE / UHCI_BUFFER_SIZE)*/
-
-/*
- * Information about an entry in the virtial frame list.
- */
-struct uhci_vframe {
- uhci_soft_td_t *htd; /* pointer to dummy TD */
- uhci_soft_td_t *etd; /* pointer to last TD */
- uhci_soft_qh_t *hqh; /* pointer to dummy QH */
- uhci_soft_qh_t *eqh; /* pointer to last QH */
- u_int bandwidth; /* max bandwidth used by this frame */
-};
-
-typedef struct uhci_softc {
- struct usbd_bus sc_bus; /* base device */
-#if defined(__NetBSD__)
- void *sc_ih; /* interrupt vectoring */
- bus_space_tag_t iot;
- bus_space_handle_t ioh;
-
- bus_dma_tag_t sc_dmatag; /* DMA tag */
- /* XXX should keep track of all DMA memory */
-#elif defined(__FreeBSD__)
- int sc_iobase;
- int unit;
-#endif /* defined(__FreeBSD__) */
-
- uhci_physaddr_t *sc_pframes;
- struct uhci_vframe sc_vframes[UHCI_VFRAMELIST_COUNT];
-
- uhci_soft_qh_t *sc_ctl_start; /* dummy QH for control */
- uhci_soft_qh_t *sc_ctl_end; /* last control QH */
- uhci_soft_qh_t *sc_bulk_start; /* dummy QH for bulk */
- uhci_soft_qh_t *sc_bulk_end; /* last bulk transfer */
-
- uhci_soft_td_t *sc_freetds;
- uhci_soft_qh_t *sc_freeqhs;
- struct uhci_buffer *sc_freebuffers;
-
- u_int8_t sc_addr; /* device address */
- u_int8_t sc_conf; /* device configuration */
-
- char sc_isreset;
-
- int sc_intrs;
- LIST_HEAD(, uhci_intr_info) sc_intrhead;
-
- /* Info for the root hub interrupt channel. */
- int sc_ival;
-
- char sc_vflock;
-#define UHCI_HAS_LOCK 1
-#define UHCI_WANT_LOCK 2
-
-#if defined(__NetBSD__)
- usb_dma_t *sc_mallocs;
-#endif
-
- char sc_vendor[16];
-} uhci_softc_t;
-
-usbd_status uhci_init __P((uhci_softc_t *));
-int uhci_intr __P((void *));
-#if 0
-void uhci_reset __P((void *));
-#endif
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (uhcidebug) printf x
-#define DPRINTFN(n,x) if (uhcidebug>(n)) printf x
-extern int uhcidebug;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
diff --git a/sys/dev/usb/uhid.c b/sys/dev/usb/uhid.c
deleted file mode 100644
index 26c0e5b5b20f6..0000000000000
--- a/sys/dev/usb/uhid.c
+++ /dev/null
@@ -1,546 +0,0 @@
-/* $NetBSD: uhid.c,v 1.14 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/ioccom.h>
-#include <sys/filio.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/ioccom.h>
-#endif
-#include <sys/tty.h>
-#include <sys/file.h>
-#include <sys/select.h>
-#include <sys/proc.h>
-#include <sys/vnode.h>
-#include <sys/poll.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/hid.h>
-#include <dev/usb/usb_quirks.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (uhiddebug) printf x
-#define DPRINTFN(n,x) if (uhiddebug>(n)) printf x
-int uhiddebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-struct uhid_softc {
- bdevice sc_dev; /* base device */
- usbd_interface_handle sc_iface; /* interface */
- usbd_pipe_handle sc_intrpipe; /* interrupt pipe */
- int sc_ep_addr;
-
- int sc_isize;
- int sc_osize;
- int sc_fsize;
- u_int8_t sc_iid;
- u_int8_t sc_oid;
- u_int8_t sc_fid;
-
- char *sc_ibuf;
- char *sc_obuf;
-
- void *sc_repdesc;
- int sc_repdesc_size;
-
- struct clist sc_q;
- struct selinfo sc_rsel;
- u_char sc_state; /* driver state */
-#define UHID_OPEN 0x01 /* device is open */
-#define UHID_ASLP 0x02 /* waiting for device data */
-#define UHID_NEEDCLEAR 0x04 /* needs clearing endpoint stall */
-#define UHID_IMMED 0x08 /* return read data immediately */
- int sc_disconnected; /* device is gone */
-};
-
-#define UHIDUNIT(dev) (minor(dev))
-#define UHID_CHUNK 128 /* chunk size for read */
-#define UHID_BSIZE 1020 /* buffer size */
-
-int uhidopen __P((dev_t, int, int, struct proc *));
-int uhidclose __P((dev_t, int, int, struct proc *p));
-int uhidread __P((dev_t, struct uio *uio, int));
-int uhidwrite __P((dev_t, struct uio *uio, int));
-int uhidioctl __P((dev_t, u_long, caddr_t, int, struct proc *));
-int uhidpoll __P((dev_t, int, struct proc *));
-void uhid_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
-void uhid_disco __P((void *));
-
-USB_DECLARE_DRIVER(uhid);
-
-USB_MATCH(uhid)
-{
- USB_MATCH_START(uhid, uaa);
- usb_interface_descriptor_t *id;
-
- if (!uaa->iface)
- return (UMATCH_NONE);
- id = usbd_get_interface_descriptor(uaa->iface);
- if (!id || id->bInterfaceClass != UCLASS_HID)
- return (UMATCH_NONE);
- return (UMATCH_IFACECLASS_GENERIC);
-}
-
-USB_ATTACH(uhid)
-{
- USB_ATTACH_START(uhid, sc, uaa);
- usbd_interface_handle iface = uaa->iface;
- usb_interface_descriptor_t *id;
- usb_endpoint_descriptor_t *ed;
- int size;
- void *desc;
- usbd_status r;
- char devinfo[1024];
-
- sc->sc_disconnected = 1;
- sc->sc_iface = iface;
- id = usbd_get_interface_descriptor(iface);
- usbd_devinfo(uaa->device, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
- devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
-
- ed = usbd_interface2endpoint_descriptor(iface, 0);
- if (!ed) {
- printf("%s: could not read endpoint descriptor\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- DPRINTFN(10,("uhid_attach: bLength=%d bDescriptorType=%d "
- "bEndpointAddress=%d-%s bmAttributes=%d wMaxPacketSize=%d"
- " bInterval=%d\n",
- ed->bLength, ed->bDescriptorType,
- ed->bEndpointAddress & UE_ADDR,
- ed->bEndpointAddress & UE_IN ? "in" : "out",
- ed->bmAttributes & UE_XFERTYPE,
- UGETW(ed->wMaxPacketSize), ed->bInterval));
-
- if ((ed->bEndpointAddress & UE_IN) != UE_IN ||
- (ed->bmAttributes & UE_XFERTYPE) != UE_INTERRUPT) {
- printf("%s: unexpected endpoint\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- sc->sc_ep_addr = ed->bEndpointAddress;
- sc->sc_disconnected = 0;
-
- r = usbd_alloc_report_desc(uaa->iface, &desc, &size, M_USB);
- if (r != USBD_NORMAL_COMPLETION) {
- printf("%s: no report descriptor\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- (void)usbd_set_idle(iface, 0, 0);
-
- sc->sc_isize = hid_report_size(desc, size, hid_input, &sc->sc_iid);
- sc->sc_osize = hid_report_size(desc, size, hid_output, &sc->sc_oid);
- sc->sc_fsize = hid_report_size(desc, size, hid_feature, &sc->sc_fid);
-
- sc->sc_repdesc = desc;
- sc->sc_repdesc_size = size;
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-#if defined(__FreeBSD__)
-static int
-uhid_detach(device_t self)
-{
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
- return 0;
-}
-#endif
-
-void
-uhid_disco(p)
- void *p;
-{
- struct uhid_softc *sc = p;
-
- DPRINTF(("ums_hid: sc=%p\n", sc));
- usbd_abort_pipe(sc->sc_intrpipe);
- sc->sc_disconnected = 1;
-}
-
-void
-uhid_intr(reqh, addr, status)
- usbd_request_handle reqh;
- usbd_private_handle addr;
- usbd_status status;
-{
- struct uhid_softc *sc = addr;
-
- DPRINTFN(5, ("uhid_intr: status=%d\n", status));
- DPRINTFN(5, ("uhid_intr: data = %02x %02x %02x\n",
- sc->sc_ibuf[0], sc->sc_ibuf[1], sc->sc_ibuf[2]));
-
- if (status == USBD_CANCELLED)
- return;
-
- if (status != USBD_NORMAL_COMPLETION) {
- DPRINTF(("uhid_intr: status=%d\n", status));
- sc->sc_state |= UHID_NEEDCLEAR;
- return;
- }
-
- (void) b_to_q(sc->sc_ibuf, sc->sc_isize, &sc->sc_q);
-
- if (sc->sc_state & UHID_ASLP) {
- sc->sc_state &= ~UHID_ASLP;
- DPRINTFN(5, ("uhid_intr: waking %p\n", sc));
- wakeup((caddr_t)sc);
- }
- selwakeup(&sc->sc_rsel);
-}
-
-int
-uhidopen(dev, flag, mode, p)
- dev_t dev;
- int flag;
- int mode;
- struct proc *p;
-{
- usbd_status r;
- USB_GET_SC_OPEN(uhid, UHIDUNIT(dev), sc);
-
- if (!sc)
- return (ENXIO);
-
- DPRINTF(("uhidopen: sc=%p, disco=%d\n", sc, sc->sc_disconnected));
-
- if (sc->sc_disconnected)
- return (EIO);
-
- if (sc->sc_state & UHID_OPEN)
- return (EBUSY);
-
-#if defined(__NetBSD__)
- if (clalloc(&sc->sc_q, UHID_BSIZE, 0) == -1)
- return (ENOMEM);
-#elif defined(__FreeBSD__)
- clist_alloc_cblocks(&sc->sc_q, UHID_BSIZE, 0);
-#endif
-
- sc->sc_state |= UHID_OPEN;
- sc->sc_state &= ~UHID_IMMED;
-
- sc->sc_ibuf = malloc(sc->sc_isize, M_USB, M_WAITOK);
- sc->sc_obuf = malloc(sc->sc_osize, M_USB, M_WAITOK);
-
- /* Set up interrupt pipe. */
- r = usbd_open_pipe_intr(sc->sc_iface, sc->sc_ep_addr,
- USBD_SHORT_XFER_OK,
- &sc->sc_intrpipe, sc, sc->sc_ibuf,
- sc->sc_isize, uhid_intr);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("uhidopen: usbd_open_pipe_intr failed, "
- "error=%d\n",r));
- sc->sc_state &= ~UHID_OPEN;
- return (EIO);
- }
- usbd_set_disco(sc->sc_intrpipe, uhid_disco, sc);
-
- return (0);
-}
-
-int
-uhidclose(dev, flag, mode, p)
- dev_t dev;
- int flag;
- int mode;
- struct proc *p;
-{
- USB_GET_SC(uhid, UHIDUNIT(dev), sc);
-
- if (sc->sc_disconnected)
- return (EIO);
-
- DPRINTF(("uhidclose: sc=%p\n", sc));
-
- /* Disable interrupts. */
- usbd_abort_pipe(sc->sc_intrpipe);
- usbd_close_pipe(sc->sc_intrpipe);
-
- sc->sc_state &= ~UHID_OPEN;
-
-#if defined(__NetBSD__)
- clfree(&sc->sc_q);
-#elif defined(__FreeBSD__)
- clist_free_cblocks(&sc->sc_q);
-#endif
-
- free(sc->sc_ibuf, M_USB);
- free(sc->sc_obuf, M_USB);
-
- return (0);
-}
-
-int
-uhidread(dev, uio, flag)
- dev_t dev;
- struct uio *uio;
- int flag;
-{
- int s;
- int error = 0;
- size_t length;
- u_char buffer[UHID_CHUNK];
- usbd_status r;
- USB_GET_SC(uhid, UHIDUNIT(dev), sc);
-
- if (sc->sc_disconnected)
- return (EIO);
-
- DPRINTFN(1, ("uhidread\n"));
- if (sc->sc_state & UHID_IMMED) {
- DPRINTFN(1, ("uhidread immed\n"));
-
- r = usbd_get_report(sc->sc_iface, UHID_INPUT_REPORT,
- sc->sc_iid, sc->sc_ibuf, sc->sc_isize);
- if (r != USBD_NORMAL_COMPLETION)
- return (EIO);
- return (uiomove(buffer, sc->sc_isize, uio));
- }
-
- s = splusb();
- while (sc->sc_q.c_cc == 0) {
- if (flag & IO_NDELAY) {
- splx(s);
- return EWOULDBLOCK;
- }
- sc->sc_state |= UHID_ASLP;
- DPRINTFN(5, ("uhidread: sleep on %p\n", sc));
- error = tsleep((caddr_t)sc, PZERO | PCATCH, "uhidrea", 0);
- DPRINTFN(5, ("uhidread: woke, error=%d\n", error));
- if (error) {
- sc->sc_state &= ~UHID_ASLP;
- splx(s);
- return (error);
- }
- if (sc->sc_state & UHID_NEEDCLEAR) {
- DPRINTFN(-1,("uhidread: clearing stall\n"));
- sc->sc_state &= ~UHID_NEEDCLEAR;
- usbd_clear_endpoint_stall(sc->sc_intrpipe);
- }
- }
- splx(s);
-
- /* Transfer as many chunks as possible. */
- while (sc->sc_q.c_cc > 0 && uio->uio_resid > 0) {
- length = min(sc->sc_q.c_cc, uio->uio_resid);
- if (length > sizeof(buffer))
- length = sizeof(buffer);
-
- /* Remove a small chunk from the input queue. */
- (void) q_to_b(&sc->sc_q, buffer, length);
- DPRINTFN(5, ("uhidread: got %d chars\n", length));
-
- /* Copy the data to the user process. */
- if ((error = uiomove(buffer, length, uio)) != 0)
- break;
- }
-
- return (error);
-}
-
-int
-uhidwrite(dev, uio, flag)
- dev_t dev;
- struct uio *uio;
- int flag;
-{
- int error;
- int size;
- usbd_status r;
- USB_GET_SC(uhid, UHIDUNIT(dev), sc);
-
- if (sc->sc_disconnected)
- return (EIO);
-
- DPRINTFN(1, ("uhidwrite\n"));
-
- size = sc->sc_osize;
- error = 0;
- while (uio->uio_resid > 0) {
- if (uio->uio_resid != size)
- return (0);
- if ((error = uiomove(sc->sc_obuf, size, uio)) != 0)
- break;
- if (sc->sc_oid)
- r = usbd_set_report(sc->sc_iface, UHID_OUTPUT_REPORT,
- sc->sc_obuf[0],
- sc->sc_obuf+1, size-1);
- else
- r = usbd_set_report(sc->sc_iface, UHID_OUTPUT_REPORT,
- 0, sc->sc_obuf, size);
- if (r != USBD_NORMAL_COMPLETION) {
- error = EIO;
- break;
- }
- }
- return (error);
-}
-
-int
-uhidioctl(dev, cmd, addr, flag, p)
- dev_t dev;
- u_long cmd;
- caddr_t addr;
- int flag;
- struct proc *p;
-{
- struct usb_ctl_report_desc *rd;
- struct usb_ctl_report *re;
- int size, id;
- usbd_status r;
- USB_GET_SC(uhid, UHIDUNIT(dev), sc);
-
- if (sc->sc_disconnected)
- return (EIO);
-
- DPRINTFN(2, ("uhidioctl: cmd=%lx\n", cmd));
- switch (cmd) {
- case FIONBIO:
- /* All handled in the upper FS layer. */
- break;
-
- case USB_GET_REPORT_DESC:
- rd = (struct usb_ctl_report_desc *)addr;
- size = min(sc->sc_repdesc_size, sizeof rd->data);
- rd->size = size;
- memcpy(rd->data, sc->sc_repdesc, size);
- break;
-
- case USB_SET_IMMED:
- if (*(int *)addr) {
- /* XXX should read into ibuf, but does it matter */
- r = usbd_get_report(sc->sc_iface, UHID_INPUT_REPORT,
- sc->sc_iid, sc->sc_ibuf,
- sc->sc_isize);
- if (r != USBD_NORMAL_COMPLETION)
- return (EOPNOTSUPP);
-
- sc->sc_state |= UHID_IMMED;
- } else
- sc->sc_state &= ~UHID_IMMED;
- break;
-
- case USB_GET_REPORT:
- re = (struct usb_ctl_report *)addr;
- switch (re->report) {
- case UHID_INPUT_REPORT:
- size = sc->sc_isize;
- id = sc->sc_iid;
- break;
- case UHID_OUTPUT_REPORT:
- size = sc->sc_osize;
- id = sc->sc_oid;
- break;
- case UHID_FEATURE_REPORT:
- size = sc->sc_fsize;
- id = sc->sc_fid;
- break;
- default:
- return (EINVAL);
- }
- r = usbd_get_report(sc->sc_iface, re->report, id,
- re->data, size);
- if (r != USBD_NORMAL_COMPLETION)
- return (EIO);
- break;
-
- default:
- return (EINVAL);
- }
- return (0);
-}
-
-int
-uhidpoll(dev, events, p)
- dev_t dev;
- int events;
- struct proc *p;
-{
- int revents = 0;
- int s;
- USB_GET_SC(uhid, UHIDUNIT(dev), sc);
-
- if (sc->sc_disconnected)
- return (EIO);
-
- s = splusb();
- if (events & (POLLOUT | POLLWRNORM))
- revents |= events & (POLLOUT | POLLWRNORM);
- if (events & (POLLIN | POLLRDNORM)) {
- if (sc->sc_q.c_cc > 0)
- revents |= events & (POLLIN | POLLRDNORM);
- else
- selrecord(p, &sc->sc_rsel);
- }
-
- splx(s);
- return (revents);
-}
-
-#if defined(__FreeBSD__)
-DRIVER_MODULE(uhid, uhub, uhid_driver, uhid_devclass, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/uhub.c b/sys/dev/usb/uhub.c
deleted file mode 100644
index 40ff36317addc..0000000000000
--- a/sys/dev/usb/uhub.c
+++ /dev/null
@@ -1,521 +0,0 @@
-/* $NetBSD: uhub.c,v 1.14 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#endif
-#include <sys/proc.h>
-
-#include <dev/usb/usb.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdivar.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (usbdebug) printf x
-#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
-extern int usbdebug;
-extern char *usbd_error_strs[];
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-struct uhub_softc {
- bdevice sc_dev; /* base device */
- usbd_device_handle sc_hub; /* USB device */
- usbd_pipe_handle sc_ipipe; /* interrupt pipe */
- u_int8_t sc_status[1]; /* XXX more ports */
- u_char sc_running;
-};
-
-usbd_status uhub_init_port __P((struct usbd_port *));
-void uhub_disconnect __P((struct usbd_port *up));
-usbd_status uhub_explore __P((usbd_device_handle hub));
-void uhub_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
-
-/*void uhub_disco __P((void *));*/
-
-USB_DECLARE_DRIVER(uhub);
-
-#if defined(__FreeBSD__)
-devclass_t uhubroot_devclass;
-
-static device_method_t uhubroot_methods[] = {
- DEVMETHOD(device_probe, uhub_match),
- DEVMETHOD(device_attach, uhub_attach),
- /* detach is not allowed for a root hub */
- {0,0}
-};
-
-static driver_t uhubroot_driver = {
- "uhub",
- uhubroot_methods,
- DRIVER_TYPE_MISC,
- sizeof(struct uhub_softc)
-};
-#endif
-
-#if defined(__NetBSD__)
-struct cfattach uhub_uhub_ca = {
- sizeof(struct uhub_softc), uhub_match, uhub_attach
-};
-#endif
-
-USB_MATCH(uhub)
-{
- USB_MATCH_START(uhub, uaa);
- usb_device_descriptor_t *dd = usbd_get_device_descriptor(uaa->device);
-
- DPRINTFN(5,("uhub_match, dd=%p\n", dd));
- /*
- * The subclass for hubs seems to be 0 for some and 1 for others,
- * so we just ignore the subclass.
- */
- if (uaa->iface == 0 && dd->bDeviceClass == UCLASS_HUB)
- return (UMATCH_DEVCLASS_DEVSUBCLASS);
- return (UMATCH_NONE);
-}
-
-USB_ATTACH(uhub)
-{
- USB_ATTACH_START(uhub, sc, uaa);
- usbd_device_handle dev = uaa->device;
- char devinfo[1024];
- usbd_status r;
- struct usbd_hub *hub;
- usb_device_request_t req;
- usb_hub_descriptor_t hubdesc;
- int p, port, nports, nremov;
- usbd_interface_handle iface;
- usb_endpoint_descriptor_t *ed;
-
- DPRINTFN(1,("uhub_attach\n"));
- sc->sc_hub = dev;
- usbd_devinfo(dev, 1, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s\n", USBDEVNAME(sc->sc_dev), devinfo);
-
- r = usbd_set_config_index(dev, 0, 1);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("%s: configuration failed, error=%d(%s)\n",
- USBDEVNAME(sc->sc_dev), r, usbd_error_strs[r]));
- USB_ATTACH_ERROR_RETURN;
- }
-
- if (dev->depth > USB_HUB_MAX_DEPTH) {
- printf("%s: hub depth (%d) exceeded, hub ignored\n",
- USBDEVNAME(sc->sc_dev), USB_HUB_MAX_DEPTH);
- USB_ATTACH_ERROR_RETURN;
- }
-
- /* Get hub descriptor. */
- req.bmRequestType = UT_READ_CLASS_DEVICE;
- req.bRequest = UR_GET_DESCRIPTOR;
- USETW(req.wValue, 0);
- USETW(req.wIndex, 0);
- USETW(req.wLength, USB_HUB_DESCRIPTOR_SIZE);
- DPRINTFN(1,("usb_init_hub: getting hub descriptor\n"));
- r = usbd_do_request(dev, &req, &hubdesc);
- nports = hubdesc.bNbrPorts;
- if (r == USBD_NORMAL_COMPLETION && nports > 7) {
- USETW(req.wLength, USB_HUB_DESCRIPTOR_SIZE + (nports+1) / 8);
- r = usbd_do_request(dev, &req, &hubdesc);
- }
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("%s: getting hub descriptor failed, error=%d(%s)\n",
- USBDEVNAME(sc->sc_dev), r, usbd_error_strs[r]));
- USB_ATTACH_ERROR_RETURN;
- }
-
- for (nremov = 0, port = 1; port <= nports; port++)
- if (!UHD_NOT_REMOV(&hubdesc, port))
- nremov++;
- printf("%s: %d port%s with %d removable, %s powered\n",
- USBDEVNAME(sc->sc_dev), nports, nports != 1 ? "s" : "",
- nremov, dev->self_powered ? "self" : "bus");
-
-
- hub = malloc(sizeof(*hub) + (nports-1) * sizeof(struct usbd_port),
- M_USB, M_NOWAIT);
- if (hub == 0)
- USB_ATTACH_ERROR_RETURN;
- dev->hub = hub;
- dev->hub->hubsoftc = sc;
- hub->explore = uhub_explore;
- hub->hubdesc = hubdesc;
-
- DPRINTFN(1,("usbhub_init_hub: selfpowered=%d, parent=%p, "
- "parent->selfpowered=%d\n",
- dev->self_powered, dev->powersrc->parent,
- dev->powersrc->parent ?
- dev->powersrc->parent->self_powered : 0));
- if (!dev->self_powered && dev->powersrc->parent &&
- !dev->powersrc->parent->self_powered) {
- printf("%s: bus powered hub connected to bus powered hub, "
- "ignored\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- /* Set up interrupt pipe. */
- r = usbd_device2interface_handle(dev, 0, &iface);
- if (r != USBD_NORMAL_COMPLETION) {
- printf("%s: no interface handle\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
- ed = usbd_interface2endpoint_descriptor(iface, 0);
- if (ed == 0) {
- printf("%s: no endpoint descriptor\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
- if ((ed->bmAttributes & UE_XFERTYPE) != UE_INTERRUPT) {
- printf("%s: bad interrupt endpoint\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- r = usbd_open_pipe_intr(iface, ed->bEndpointAddress,USBD_SHORT_XFER_OK,
- &sc->sc_ipipe, sc, sc->sc_status,
- sizeof(sc->sc_status),
- uhub_intr);
- if (r != USBD_NORMAL_COMPLETION) {
- printf("%s: cannot open interrupt pipe\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- /* Wait with power off for a while. */
- usbd_delay_ms(dev, USB_POWER_DOWN_TIME);
-
- for (p = 0; p < nports; p++) {
- struct usbd_port *up = &hub->ports[p];
- up->device = 0;
- up->parent = dev;
- up->portno = p+1;
- r = uhub_init_port(up);
- if (r != USBD_NORMAL_COMPLETION)
- printf("%s: init of port %d failed\n",
- USBDEVNAME(sc->sc_dev), up->portno);
- }
- sc->sc_running = 1;
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-#if defined(__FreeBSD__)
-static int
-uhub_detach(device_t self)
-{
- struct uhub_softc *sc = device_get_softc(self);
- int nports = sc->sc_hub->hub->hubdesc.bNbrPorts;
- int p;
-
- for (p = 0; p < nports; p++) {
- struct usbd_port *up = &sc->sc_hub->hub->ports[p];
- if (up->device)
- uhub_disconnect(up);
- }
-
- free(sc->sc_hub->hub, M_USB);
-
- return 0;
-}
-#endif
-
-usbd_status
-uhub_init_port(up)
- struct usbd_port *up;
-{
- int port = up->portno;
- usbd_device_handle dev = up->parent;
- usbd_status r;
- u_int16_t pstatus;
-
- r = usbd_get_port_status(dev, port, &up->status);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- pstatus = UGETW(up->status.wPortStatus);
- DPRINTF(("usbd_init_port: adding hub port=%d status=0x%04x "
- "change=0x%04x\n",
- port, pstatus, UGETW(up->status.wPortChange)));
- if ((pstatus & UPS_PORT_POWER) == 0) {
- /* Port lacks power, turn it on */
-
- /* First let the device go through a good power cycle, */
- usbd_delay_ms(dev, USB_PORT_POWER_DOWN_TIME);
-
- /* then turn the power on. */
- r = usbd_set_port_feature(dev, port, UHF_PORT_POWER);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- r = usbd_get_port_status(dev, port, &up->status);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- DPRINTF(("usb_init_port: turn on port %d power status=0x%04x "
- "change=0x%04x\n",
- port, UGETW(up->status.wPortStatus),
- UGETW(up->status.wPortChange)));
- /* Wait for stable power. */
- usbd_delay_ms(dev, dev->hub->hubdesc.bPwrOn2PwrGood *
- UHD_PWRON_FACTOR);
- }
- if (dev->self_powered)
- /* Self powered hub, give ports maximum current. */
- up->power = USB_MAX_POWER;
- else
- up->power = USB_MIN_POWER;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-uhub_explore(dev)
- usbd_device_handle dev;
-{
- usb_hub_descriptor_t *hd = &dev->hub->hubdesc;
- struct uhub_softc *sc = dev->hub->hubsoftc;
- struct usbd_port *up;
- usbd_status r;
- int port;
- int change, status;
-
- DPRINTFN(10, ("uhub_explore dev=%p addr=%d\n", dev, dev->address));
-
- if (!sc->sc_running)
- return (USBD_NOT_STARTED);
-
- /* Ignore hubs that are too deep. */
- if (dev->depth > USB_HUB_MAX_DEPTH)
- return (USBD_TOO_DEEP);
-
- for(port = 1; port <= hd->bNbrPorts; port++) {
- up = &dev->hub->ports[port-1];
- r = usbd_get_port_status(dev, port, &up->status);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("uhub_explore: get port status failed, "
- "error=%d(%s)\n",
- r, usbd_error_strs[r]));
- continue;
- }
- status = UGETW(up->status.wPortStatus);
- change = UGETW(up->status.wPortChange);
- DPRINTFN(5, ("uhub_explore: port %d status 0x%04x 0x%04x\n",
- port, status, change));
- if (change & UPS_C_PORT_ENABLED) {
- usbd_clear_port_feature(dev, port, UHF_C_PORT_ENABLE);
- if (status & UPS_PORT_ENABLED) {
- printf("%s: illegal enable change, port %d\n",
- USBDEVNAME(sc->sc_dev), port);
- } else {
- /* Port error condition. */
- if (up->restartcnt++ < USBD_RESTART_MAX) {
- printf("%s: port error, restarting "
- "port %d\n",
- USBDEVNAME(sc->sc_dev), port);
- goto disco;
- } else {
- printf("%s: port error, giving up "
- "port %d\n",
- USBDEVNAME(sc->sc_dev), port);
- }
- }
- }
- if (!(change & UPS_C_CONNECT_STATUS)) {
- /* No status change, just do recursive explore. */
- if (up->device && up->device->hub)
- up->device->hub->explore(up->device);
- continue;
- }
- DPRINTF(("uhub_explore: status change hub=%d port=%d\n",
- dev->address, port));
- usbd_clear_port_feature(dev, port, UHF_C_PORT_CONNECTION);
- usbd_clear_port_feature(dev, port, UHF_C_PORT_ENABLE);
- /*
- * If there is already a device on the port the change status
- * must mean that is has disconnected. Looking at the
- * current connect status is not enough to figure this out
- * since a new unit may have been connected before we handle
- * the disconnect.
- */
- disco:
- if (up->device) {
- /* Disconnected */
- DPRINTF(("uhub_explore: device %d disappeared "
- "on port %d\n",
- up->device->address, port));
- uhub_disconnect(up);
- usbd_clear_port_feature(dev, port,
- UHF_C_PORT_CONNECTION);
- }
- if (!(status & UPS_CURRENT_CONNECT_STATUS))
- continue;
-
- /* Connected */
- up->restartcnt = 0;
-
- /* Wait for maximum device power up time. */
- usbd_delay_ms(dev, USB_PORT_POWERUP_DELAY);
-
- /* Reset port, which implies enabling it. */
- if (usbd_reset_port(dev, port, &up->status) !=
- USBD_NORMAL_COMPLETION)
- continue;
-
- /* Get device info and set its address. */
- r = usbd_new_device(&sc->sc_dev, dev->bus,
- dev->depth + 1, status & UPS_LOW_SPEED,
- port, up);
- /* XXX retry a few times? */
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTFN(-1,("uhub_explore: usb_new_device failed, "
- "error=%d(%s)\n", r, usbd_error_strs[r]));
- /* Avoid addressing problems by disabling. */
- /* usbd_reset_port(dev, port, &up->status); */
-/* XXX
- * What should we do. The device may or may not be at its
- * assigned address. In any case we'd like to ignore it.
- * Maybe the port should be disabled until the device is
- * disconnected.
- */
- if (r == USBD_SET_ADDR_FAILED || 1) {/* XXX */
- /* The unit refused to accept a new
- * address, and since we cannot leave
- * at 0 we have to disable the port
- * instead. */
- printf("%s: device problem, disabling "
- "port %d\n",
- USBDEVNAME(sc->sc_dev), port);
- usbd_clear_port_feature(dev, port,
- UHF_PORT_ENABLE);
- /* Make sure we don't try to restart it. */
- up->restartcnt = USBD_RESTART_MAX;
- }
- } else {
- if (up->device->hub)
- up->device->hub->explore(up->device);
- }
- }
- return (USBD_NORMAL_COMPLETION);
-}
-
-void
-uhub_disconnect(up)
- struct usbd_port *up;
-{
- usbd_device_handle dev = up->device;
- usbd_pipe_handle p, n;
- int i;
- struct softc { bdevice sc_dev; }; /* all softc begin like this */
-
- DPRINTFN(3,("uhub_disconnect: up=%p dev=%p port=%d\n",
- up, dev, up->portno));
-
- printf("%s: at %s port %d (addr %d) disconnected\n",
- USBDEVNAME(((struct softc *)dev->softc)->sc_dev),
- USBDEVNAME(((struct uhub_softc *)up->parent->softc)->sc_dev),
- up->portno, dev->address);
-
- if (!dev->cdesc) {
- /* Partially attached device, just drop it. */
- dev->bus->devices[dev->address] = 0;
- up->device = 0;
- return;
- }
-
- for (i = 0; i < dev->cdesc->bNumInterface; i++) {
- for (p = LIST_FIRST(&dev->ifaces[i].pipes); p; p = n) {
- n = LIST_NEXT(p, next);
- if (p->disco)
- p->disco(p->discoarg);
- usbd_abort_pipe(p);
- usbd_close_pipe(p);
- }
- }
-
- /* XXX Free all data structures and disable further I/O. */
- if (dev->hub) {
- struct usbd_port *rup;
- int p, nports;
-
- DPRINTFN(3,("usb_disconnect: hub, recursing\n"));
- nports = dev->hub->hubdesc.bNbrPorts;
- for(p = 0; p < nports; p++) {
- rup = &dev->hub->ports[p];
- if (rup->device)
- uhub_disconnect(rup);
- }
- }
-
- dev->bus->devices[dev->address] = 0;
- up->device = 0;
- /* XXX free */
-#if defined(__FreeBSD__)
- device_delete_child(
- device_get_parent(((struct softc *)dev->softc)->sc_dev),
- ((struct softc *)dev->softc)->sc_dev);
-#endif
-}
-
-void
-uhub_intr(reqh, addr, status)
- usbd_request_handle reqh;
- usbd_private_handle addr;
- usbd_status status;
-{
- struct uhub_softc *sc = addr;
-
- DPRINTFN(5,("uhub_intr: sc=%p\n", sc));
- if (status != USBD_NORMAL_COMPLETION)
- usbd_clear_endpoint_stall_async(sc->sc_ipipe);
- else
- usb_needs_explore(sc->sc_hub->bus);
-}
-
-#if defined(__FreeBSD__)
-DRIVER_MODULE(uhub, usb, uhubroot_driver, uhubroot_devclass, 0, 0);
-DRIVER_MODULE(uhub, uhub, uhub_driver, uhub_devclass, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/ukbd.c b/sys/dev/usb/ukbd.c
deleted file mode 100644
index 0d54e01f3ac1f..0000000000000
--- a/sys/dev/usb/ukbd.c
+++ /dev/null
@@ -1,680 +0,0 @@
-/* $NetBSD: ukbd.c,v 1.22 1999/01/09 12:10:36 drochner Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * Information about USB keyboard can be found in the USB HID spec.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/ioccom.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <machine/clock.h>
-#endif
-#include <sys/tty.h>
-#include <sys/file.h>
-#include <sys/select.h>
-#include <sys/proc.h>
-#include <sys/vnode.h>
-#include <sys/poll.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-#include <dev/usb/hid.h>
-
-#if defined(__NetBSD__)
-#include <dev/wscons/wsconsio.h>
-#include <dev/wscons/wskbdvar.h>
-#include <dev/wscons/wsksymdef.h>
-#include <dev/wscons/wsksymvar.h>
-#include <dev/wscons/wskbdmap_mfii.h>
-
-#include "opt_pckbd_layout.h"
-#include "opt_wsdisplay_compat.h"
-
-#elif defined(__FreeBSD__)
-#include <machine/clock.h>
-#define delay(d) DELAY(d)
-#endif
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (ukbddebug) printf x
-#define DPRINTFN(n,x) if (ukbddebug>(n)) printf x
-int ukbddebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-#define UPROTO_BOOT_KEYBOARD 1
-
-#define NKEYCODE 6
-
-#define NUM_LOCK 0x01
-#define CAPS_LOCK 0x02
-#define SCROLL_LOCK 0x04
-
-struct ukbd_data {
- u_int8_t modifiers;
-#define MOD_CONTROL_L 0x01
-#define MOD_CONTROL_R 0x10
-#define MOD_SHIFT_L 0x02
-#define MOD_SHIFT_R 0x20
-#define MOD_ALT_L 0x04
-#define MOD_ALT_R 0x40
-#define MOD_WIN_L 0x08
-#define MOD_WIN_R 0x80
- u_int8_t reserved;
- u_int8_t keycode[NKEYCODE];
-};
-
-#define PRESS 0
-#define RELEASE 0x100
-
-#define NMOD 6
-static struct {
- int mask, key;
-} ukbd_mods[NMOD] = {
- { MOD_CONTROL_L, 29 },
- { MOD_CONTROL_R, 58 },
- { MOD_SHIFT_L, 42 },
- { MOD_SHIFT_R, 54 },
- { MOD_ALT_L, 56 },
- { MOD_ALT_R, 184 },
-};
-
-#define NN 0 /* no translation */
-/*
- * Translate USB keycodes to US keyboard AT scancodes.
- * Scancodes >= 128 represent EXTENDED keycodes.
- */
-static u_int8_t ukbd_trtab[256] = {
- 0, 0, 0, 0, 30, 48, 46, 32, /* 00 - 07 */
- 18, 33, 34, 35, 23, 36, 37, 38, /* 08 - 0F */
- 50, 49, 24, 25, 16, 19, 31, 20, /* 10 - 17 */
- 22, 47, 17, 45, 21, 44, 2, 3, /* 18 - 1F */
- 4, 5, 6, 7, 8, 9, 10, 11, /* 20 - 27 */
- 28, 1, 14, 15, 57, 12, 13, 26, /* 28 - 2F */
- 27, 43, NN, 39, 40, 41, 51, 52, /* 30 - 37 */
- 53, 58, 59, 60, 61, 62, 63, 64, /* 38 - 3F */
- 65, 66, 67, 68, 87, 88, 170, 70, /* 40 - 47 */
- 127, 210, 199, 201, 211, 207, 209, 205, /* 48 - 4F */
- 203, 208, 200, 69, 181, 55, 74, 78, /* 50 - 57 */
- 156, 79, 80, 81, 75, 76, 77, 71, /* 58 - 5F */
- 72, 73, 82, 83, NN, NN, NN, NN, /* 60 - 67 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* 68 - 6F */
- NN, NN, NN, NN, NN, NN, 221, NN, /* 70 - 77 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* 78 - 7F */
- NN, NN, NN, NN, NN, NN, NN, NN, /* 80 - 87 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* 88 - 8F */
- NN, NN, NN, NN, NN, NN, NN, NN, /* 90 - 97 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* 98 - 9F */
- NN, NN, NN, NN, NN, NN, NN, NN, /* A0 - A7 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* A8 - AF */
- NN, NN, NN, NN, NN, NN, NN, NN, /* B0 - B7 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* B8 - BF */
- NN, NN, NN, NN, NN, NN, NN, NN, /* C0 - C7 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* C8 - CF */
- NN, NN, NN, NN, NN, NN, NN, NN, /* D0 - D7 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* D8 - DF */
- NN, NN, NN, NN, NN, NN, NN, NN, /* E0 - E7 */
- NN, NN, NN, 219, NN, NN, NN, 220, /* E8 - EF */
- NN, NN, NN, NN, NN, NN, NN, NN, /* F0 - F7 */
- NN, NN, NN, NN, NN, NN, NN, NN, /* F8 - FF */
-};
-
-#define KEY_ERROR 0x01
-
-#define MAXKEYS (NMOD+2*NKEYCODE)
-
-struct ukbd_softc {
- bdevice sc_dev; /* base device */
- usbd_interface_handle sc_iface; /* interface */
- usbd_pipe_handle sc_intrpipe; /* interrupt pipe */
- int sc_ep_addr;
-
- struct ukbd_data sc_ndata;
- struct ukbd_data sc_odata;
-
- char sc_enabled;
- char sc_disconnected; /* device is gone */
-
- int sc_leds;
-#if defined(__NetBSD__)
- struct device *sc_wskbddev;
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-#define REP_DELAY1 400
-#define REP_DELAYN 100
- int sc_rawkbd;
- int sc_nrep;
- char sc_rep[MAXKEYS];
-#endif
-
- int sc_polling;
- int sc_pollchar;
-#endif
-};
-
-#define UKBDUNIT(dev) (minor(dev))
-#define UKBD_CHUNK 128 /* chunk size for read */
-#define UKBD_BSIZE 1020 /* buffer size */
-
-void ukbd_cngetc __P((void *, u_int *, int *));
-void ukbd_cnpollc __P((void *, int));
-
-#if defined(__NetBSD__)
-const struct wskbd_consops ukbd_consops = {
- ukbd_cngetc,
- ukbd_cnpollc,
-};
-#endif
-
-void ukbd_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
-void ukbd_disco __P((void *));
-
-int ukbd_enable __P((void *, int));
-void ukbd_set_leds __P((void *, int));
-#if defined(__NetBSD__)
-int ukbd_ioctl __P((void *, u_long, caddr_t, int, struct proc *));
-int ukbd_cnattach __P((void *v));
-void ukbd_rawrepeat __P((void *v));
-
-const struct wskbd_accessops ukbd_accessops = {
- ukbd_enable,
- ukbd_set_leds,
- ukbd_ioctl,
-#if 0
- ukbd_cnattach,
-#endif
-};
-
-const struct wskbd_mapdata ukbd_keymapdata = {
- pckbd_keydesctab,
-#ifdef PCKBD_LAYOUT
- PCKBD_LAYOUT,
-#else
- KB_US,
-#endif
-};
-#endif
-
-USB_DECLARE_DRIVER(ukbd);
-
-USB_MATCH(ukbd)
-{
- USB_MATCH_START(ukbd, uaa);
- usb_interface_descriptor_t *id;
-
- /* Check that this is a keyboard that speaks the boot protocol. */
- if (!uaa->iface)
- return (UMATCH_NONE);
- id = usbd_get_interface_descriptor(uaa->iface);
- if (!id ||
- id->bInterfaceClass != UCLASS_HID ||
- id->bInterfaceSubClass != USUBCLASS_BOOT ||
- id->bInterfaceProtocol != UPROTO_BOOT_KEYBOARD)
- return (UMATCH_NONE);
- return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
-}
-
-USB_ATTACH(ukbd)
-{
- USB_ATTACH_START(ukbd, sc, uaa);
- usbd_interface_handle iface = uaa->iface;
- usb_interface_descriptor_t *id;
- usb_endpoint_descriptor_t *ed;
- usbd_status r;
- char devinfo[1024];
-#if defined(__NetBSD__)
- struct wskbddev_attach_args a;
-#endif
-
- sc->sc_disconnected = 1;
- sc->sc_iface = iface;
- id = usbd_get_interface_descriptor(iface);
- usbd_devinfo(uaa->device, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
- devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
-
- ed = usbd_interface2endpoint_descriptor(iface, 0);
- if (!ed) {
- printf("%s: could not read endpoint descriptor\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- DPRINTFN(10,("ukbd_attach: bLength=%d bDescriptorType=%d "
- "bEndpointAddress=%d-%s bmAttributes=%d wMaxPacketSize=%d"
- " bInterval=%d\n",
- ed->bLength, ed->bDescriptorType,
- ed->bEndpointAddress & UE_ADDR,
- ed->bEndpointAddress & UE_IN ? "in" : "out",
- ed->bmAttributes & UE_XFERTYPE,
- UGETW(ed->wMaxPacketSize), ed->bInterval));
-
- if ((ed->bEndpointAddress & UE_IN) != UE_IN ||
- (ed->bmAttributes & UE_XFERTYPE) != UE_INTERRUPT) {
- printf("%s: unexpected endpoint\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- if ((usbd_get_quirks(uaa->device)->uq_flags & UQ_NO_SET_PROTO) == 0) {
- r = usbd_set_protocol(iface, 0);
- DPRINTFN(5, ("ukbd_attach: protocol set\n"));
- if (r != USBD_NORMAL_COMPLETION) {
- printf("%s: set protocol failed\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
- }
-
- /* Ignore if SETIDLE fails since it is not crucial. */
- usbd_set_idle(iface, 0, 0);
-
- sc->sc_ep_addr = ed->bEndpointAddress;
- sc->sc_disconnected = 0;
-
-#if defined(__NetBSD__)
- a.console = 0;
-
- a.keymap = &ukbd_keymapdata;
-
- a.accessops = &ukbd_accessops;
- a.accesscookie = sc;
-
- /* Flash the leds; no real purpose, just shows we're alive. */
- ukbd_set_leds(sc, WSKBD_LED_SCROLL | WSKBD_LED_NUM | WSKBD_LED_CAPS);
- usbd_delay_ms(uaa->device, 300);
- ukbd_set_leds(sc, 0);
-
- sc->sc_wskbddev = config_found(self, &a, wskbddevprint);
-
-#elif defined(__FreeBSD__)
- /* XXX why waste CPU in delay() ? */
- /* It's alive! IT'S ALIVE! Do a little song and dance. */
- ukbd_set_leds(sc, NUM_LOCK);
- delay(15000);
- ukbd_set_leds(sc, CAPS_LOCK);
- delay(20000);
- ukbd_set_leds(sc, SCROLL_LOCK);
- delay(30000);
- ukbd_set_leds(sc, CAPS_LOCK);
- delay(50000);
- ukbd_set_leds(sc, NUM_LOCK);
-
- ukbd_enable(sc, 1);
-#endif
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-#if defined(__FreeBSD__)
-int
-ukbd_detach(device_t self)
-{
- struct ukbd_softc *sc = device_get_softc(self);
- char *devinfo = (char *) device_get_desc(self);
-
- if (sc->sc_enabled)
- return (ENXIO);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
-
- return (0);
-}
-#endif
-
-void
-ukbd_disco(p)
- void *p;
-{
- struct ukbd_softc *sc = p;
-
- DPRINTF(("ukbd_disco: sc=%p\n", sc));
- usbd_abort_pipe(sc->sc_intrpipe);
- sc->sc_disconnected = 1;
-}
-
-int
-ukbd_enable(v, on)
- void *v;
- int on;
-{
- struct ukbd_softc *sc = v;
- usbd_status r;
-
- if (on) {
- /* Set up interrupt pipe. */
- if (sc->sc_enabled)
- return (EBUSY);
-
- sc->sc_enabled = 1;
- r = usbd_open_pipe_intr(sc->sc_iface, sc->sc_ep_addr,
- USBD_SHORT_XFER_OK,
- &sc->sc_intrpipe, sc, &sc->sc_ndata,
- sizeof(sc->sc_ndata), ukbd_intr);
- if (r != USBD_NORMAL_COMPLETION)
- return (EIO);
- usbd_set_disco(sc->sc_intrpipe, ukbd_disco, sc);
- } else {
- /* Disable interrupts. */
- usbd_abort_pipe(sc->sc_intrpipe);
- usbd_close_pipe(sc->sc_intrpipe);
-
- sc->sc_enabled = 0;
- }
-
- return (0);
-}
-
-void
-ukbd_intr(reqh, addr, status)
- usbd_request_handle reqh;
- usbd_private_handle addr;
- usbd_status status;
-{
- struct ukbd_softc *sc = addr;
- struct ukbd_data *ud = &sc->sc_ndata;
- int mod, omod;
- int ibuf[MAXKEYS]; /* chars events */
- int nkeys, i, j;
- int key, c;
-#define ADDKEY(c) ibuf[nkeys++] = (c)
-
- DPRINTFN(5, ("ukbd_intr: status=%d\n", status));
- if (status == USBD_CANCELLED)
- return;
-
- if (status != USBD_NORMAL_COMPLETION) {
- DPRINTF(("ukbd_intr: status=%d\n", status));
- usbd_clear_endpoint_stall_async(sc->sc_intrpipe);
- return;
- }
-
- DPRINTFN(5, (" mod=0x%02x key0=0x%02x key1=0x%02x\n",
- ud->modifiers, ud->keycode[0], ud->keycode[1]));
-
- if (ud->keycode[0] == KEY_ERROR)
- return; /* ignore */
- nkeys = 0;
- mod = ud->modifiers;
- omod = sc->sc_odata.modifiers;
- if (mod != omod)
- for (i = 0; i < NMOD; i++)
- if (( mod & ukbd_mods[i].mask) !=
- (omod & ukbd_mods[i].mask))
- ADDKEY(ukbd_mods[i].key |
- (mod & ukbd_mods[i].mask
- ? PRESS : RELEASE));
- if (memcmp(ud->keycode, sc->sc_odata.keycode, NKEYCODE) != 0) {
- /* Check for released keys. */
- for (i = 0; i < NKEYCODE; i++) {
- key = sc->sc_odata.keycode[i];
- if (key == 0)
- continue;
- for (j = 0; j < NKEYCODE; j++)
- if (key == ud->keycode[j])
- goto rfound;
- c = ukbd_trtab[key];
- if (c)
- ADDKEY(c | RELEASE);
- rfound:
- ;
- }
-
- /* Check for pressed keys. */
- for (i = 0; i < NKEYCODE; i++) {
- key = ud->keycode[i];
- if (key == 0)
- continue;
- for (j = 0; j < NKEYCODE; j++)
- if (key == sc->sc_odata.keycode[j])
- goto pfound;
- c = ukbd_trtab[key];
- DPRINTFN(2,("ukbd_intr: press key=0x%02x -> 0x%02x\n",
- key, c));
- if (c)
- ADDKEY(c | PRESS);
- pfound:
- ;
- }
- }
- sc->sc_odata = *ud;
-
- if (nkeys == 0)
- return;
-
-#if defined(__NetBSD__)
- if (sc->sc_polling) {
- DPRINTFN(1,("ukbd_intr: pollchar = 0x%02x\n", ibuf[0]));
- if (nkeys > 0)
- sc->sc_pollchar = ibuf[0]; /* XXX lost keys? */
- return;
- }
-#ifdef WSDISPLAY_COMPAT_RAWKBD
- if (sc->sc_rawkbd) {
- char cbuf[MAXKEYS * 2];
- int npress;
-
- for (npress = i = j = 0; i < nkeys; i++, j++) {
- c = ibuf[i];
- if (c & 0x80)
- cbuf[j++] = 0xe0;
- cbuf[j] = c & 0x7f;
- if (c & RELEASE)
- cbuf[j] |= 0x80;
- else {
- /* remember keys for autorepeat */
- if (c & 0x80)
- sc->sc_rep[npress++] = 0xe0;
- sc->sc_rep[npress++] = c & 0x7f;
- }
- }
- wskbd_rawinput(sc->sc_wskbddev, cbuf, j);
- untimeout(ukbd_rawrepeat, sc);
- if (npress != 0) {
- sc->sc_nrep = npress;
- timeout(ukbd_rawrepeat, sc, hz * REP_DELAY1 / 1000);
- }
- return;
- }
-#endif
-
- for (i = 0; i < nkeys; i++) {
- c = ibuf[i];
- wskbd_input(sc->sc_wskbddev,
- c & RELEASE ? WSCONS_EVENT_KEY_UP : WSCONS_EVENT_KEY_DOWN,
- c & 0xff);
- }
-#elif defined(__FreeBSD__)
- /* XXX shouldn't the keys be used? */
- for (i = 0; i < nkeys; i++) {
- c = ibuf[i];
- printf("%c (%d) %s ",
- ((c&0xff) < 32 || (c&0xff) > 126? '.':(c&0xff)), c,
- (c&RELEASE? "released":"pressed"));
- if (ud->modifiers)
- printf("mod = 0x%04x ", ud->modifiers);
- for (i = 0; i < NKEYCODE; i++)
- if (ud->keycode[i])
- printf("%d ", ud->keycode[i]);
- printf("\n");
- }
-#endif
-}
-
-void
-ukbd_set_leds(v, leds)
- void *v;
- int leds;
-{
- struct ukbd_softc *sc = v;
- u_int8_t res;
-
- DPRINTF(("ukbd_set_leds: sc=%p leds=%d\n", sc, leds));
-
- sc->sc_leds = leds;
-#if defined(__NetBSD__)
- res = 0;
- if (leds & WSKBD_LED_SCROLL)
- res |= SCROLL_LOCK;
- if (leds & WSKBD_LED_NUM)
- res |= NUM_LOCK;
- if (leds & WSKBD_LED_CAPS)
- res |= CAPS_LOCK;
-#elif defined(__FreeBSD__)
- res = leds;
-#endif
- usbd_set_report_async(sc->sc_iface, UHID_OUTPUT_REPORT, 0, &res, 1);
-}
-
-#if defined(__NetBSD__)
-
-#ifdef WSDISPLAY_COMPAT_RAWKBD
-void
-ukbd_rawrepeat(v)
- void *v;
-{
- struct ukbd_softc *sc = v;
-
- wskbd_rawinput(sc->sc_wskbddev, sc->sc_rep, sc->sc_nrep);
- timeout(ukbd_rawrepeat, sc, hz * REP_DELAYN / 1000);
-}
-#endif
-
-int
-ukbd_ioctl(v, cmd, data, flag, p)
- void *v;
- u_long cmd;
- caddr_t data;
- int flag;
- struct proc *p;
-{
- struct ukbd_softc *sc = v;
-
- switch (cmd) {
- case WSKBDIO_GTYPE:
- *(int *)data = WSKBD_TYPE_USB;
- return (0);
- case WSKBDIO_SETLEDS:
- ukbd_set_leds(v, *(int *)data);
- return (0);
- case WSKBDIO_GETLEDS:
- *(int *)data = sc->sc_leds;
- return (0);
-#ifdef WSDISPLAY_COMPAT_RAWKBD
- case WSKBDIO_SETMODE:
- DPRINTF(("ukbd_ioctl: set raw = %d\n", *(int *)data));
- sc->sc_rawkbd = *(int *)data == WSKBD_RAW;
- untimeout(ukbd_rawrepeat, sc);
- return (0);
-#endif
- }
- return (-1);
-}
-
-/* Console interface. */
-void
-ukbd_cngetc(v, type, data)
- void *v;
- u_int *type;
- int *data;
-{
- struct ukbd_softc *sc = v;
- usbd_lock_token s;
- int c;
-
- DPRINTFN(1,("ukbd_cngetc: enter\n"));
- s = usbd_lock();
- sc->sc_polling = 1;
- sc->sc_pollchar = -1;
- while(sc->sc_pollchar == -1)
- usbd_dopoll(sc->sc_iface);
- sc->sc_polling = 0;
- c = sc->sc_pollchar;
- *type = c & RELEASE ? WSCONS_EVENT_KEY_UP : WSCONS_EVENT_KEY_DOWN;
- *data = c & 0xff;
- usbd_unlock(s);
- DPRINTFN(1,("ukbd_cngetc: return 0x%02x\n", c));
-}
-
-void
-ukbd_cnpollc(v, on)
- void *v;
- int on;
-{
- struct ukbd_softc *sc = v;
-
- DPRINTFN(2,("ukbd_cnpollc: sc=%p on=%d\n", v, on));
-
- usbd_set_polling(sc->sc_iface, on);
-}
-
-int
-ukbd_cnattach(v)
- void *v;
-{
- struct ukbd_softc *sc = v;
-
- DPRINTF(("ukbd_cnattach: sc=%p\n", sc));
- wskbd_cnattach(&ukbd_consops, sc, &ukbd_keymapdata);
- return (0);
-}
-
-#endif /* NetBSD */
-
-#if defined(__FreeBSD__)
-DRIVER_MODULE(ukbd, uhub, ukbd_driver, ukbd_devclass, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/ulpt.c b/sys/dev/usb/ulpt.c
deleted file mode 100644
index 074fe04893335..0000000000000
--- a/sys/dev/usb/ulpt.c
+++ /dev/null
@@ -1,451 +0,0 @@
-/* $NetBSD: ulpt.c,v 1.10 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/proc.h>
-#include <sys/malloc.h>
-#include <sys/kernel.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/ioccom.h>
-#include <sys/module.h>
-#include <sys/bus.h>
-#endif
-#include <sys/uio.h>
-#include <sys/conf.h>
-#include <sys/syslog.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-
-#define TIMEOUT hz*16 /* wait up to 16 seconds for a ready */
-#define STEP hz/4
-
-#define LPTPRI (PZERO+8)
-#define ULPT_BSIZE 1024
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (ulptdebug) printf x
-#define DPRINTFN(n,x) if (ulptdebug>(n)) printf x
-int ulptdebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-#define UR_GET_DEVICE_ID 0
-#define UR_GET_PORT_STATUS 1
-#define UR_SOFT_RESET 2
-
-#define LPS_NERR 0x08 /* printer no error */
-#define LPS_SELECT 0x10 /* printer selected */
-#define LPS_NOPAPER 0x20 /* printer out of paper */
-#define LPS_INVERT (LPS_SELECT|LPS_NERR)
-#define LPS_MASK (LPS_SELECT|LPS_NERR|LPS_NOPAPER)
-
-struct ulpt_softc {
- bdevice sc_dev;
- usbd_device_handle sc_udev; /* device */
- usbd_interface_handle sc_iface; /* interface */
- int sc_ifaceno;
- usbd_pipe_handle sc_bulkpipe; /* bulk pipe */
- int sc_bulk;
-
- u_char sc_state;
-#define ULPT_OPEN 0x01 /* device is open */
-#define ULPT_OBUSY 0x02 /* printer is busy doing output */
-#define ULPT_INIT 0x04 /* waiting to initialize for open */
- u_char sc_flags;
-#if defined(__NetBSD__)
-#define ULPT_NOPRIME 0x40 /* don't prime on open */
-#elif defined(__FreeBSD__)
-/* values taken from i386/isa/lpt.c */
-#define ULPT_POS_INIT 0x04 /* if we are a postive init signal */
-#define ULPT_POS_ACK 0x08 /* if we are a positive going ack */
-#define ULPT_NOPRIME 0x10 /* don't prime the printer at all */
-#define ULPT_PRIMEOPEN 0x20 /* prime on every open */
-#define ULPT_AUTOLF 0x40 /* tell printer to do an automatic lf */
-#define ULPT_BYPASS 0x80 /* bypass printer ready checks */
-#endif
- u_char sc_laststatus;
-};
-
-#if defined(__NetBSD__)
-int ulptopen __P((dev_t, int, int, struct proc *));
-int ulptclose __P((dev_t, int, int, struct proc *p));
-int ulptwrite __P((dev_t, struct uio *uio, int));
-int ulptioctl __P((dev_t, u_long, caddr_t, int, struct proc *));
-#elif defined(__FreeBSD__)
-static d_open_t ulptopen;
-static d_close_t ulptclose;
-static d_write_t ulptwrite;
-static d_ioctl_t ulptioctl;
-
-#define ULPT_CDEV_MAJOR 113
-
-static struct cdevsw ulpt_cdevsw = {
- ulptopen, ulptclose, noread, ulptwrite,
- ulptioctl, nostop, nullreset, nodevtotty,
- seltrue, nommap, nostrat,
- "ulpt", NULL, -1
-};
-#endif
-
-int ulpt_status __P((struct ulpt_softc *));
-void ulpt_reset __P((struct ulpt_softc *));
-int ulpt_statusmsg __P((u_char, struct ulpt_softc *));
-
-#if defined(__NetBSD__)
-#define ULPTUNIT(s) (minor(s) & 0x1f)
-#define ULPTFLAGS(s) (minor(s) & 0xe0)
-#elif defined(__FreeBSD__)
-/* defines taken from i386/isa/lpt.c */
-#define ULPTUNIT(s) (minor(s) & 0x03)
-#define ULPTFLAGS(s) (minor(s) & 0xfc)
-#endif
-
-USB_DECLARE_DRIVER(ulpt);
-
-USB_MATCH(ulpt)
-{
- USB_MATCH_START(ulpt, uaa);
- usb_interface_descriptor_t *id;
-
- DPRINTFN(10,("ulpt_match\n"));
- if (!uaa->iface)
- return (UMATCH_NONE);
- id = usbd_get_interface_descriptor(uaa->iface);
- if (id &&
- id->bInterfaceClass == UCLASS_PRINTER &&
- id->bInterfaceSubClass == USUBCLASS_PRINTER &&
- (id->bInterfaceProtocol == UPROTO_PRINTER_UNI ||
- id->bInterfaceProtocol == UPROTO_PRINTER_BI))
- return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
- return (UMATCH_NONE);
-}
-
-USB_ATTACH(ulpt)
-{
- USB_ATTACH_START(ulpt, sc, uaa);
- usbd_device_handle dev = uaa->device;
- usbd_interface_handle iface = uaa->iface;
- usb_interface_descriptor_t *id = usbd_get_interface_descriptor(iface);
-#if 0
- usb_config_descriptor_t *cd = usbd_get_config_descriptor(dev);
- usb_device_request_t req;
-#endif
- char devinfo[1024];
- usb_endpoint_descriptor_t *ed;
- usbd_status r;
-
- DPRINTFN(10,("ulpt_attach: sc=%p\n", sc));
- usbd_devinfo(dev, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
- devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
-
- /* Figure out which endpoint is the bulk out endpoint. */
- ed = usbd_interface2endpoint_descriptor(iface, 0);
- if (!ed)
- goto nobulk;
- if ((ed->bEndpointAddress & UE_IN) != UE_OUT ||
- (ed->bmAttributes & UE_XFERTYPE) != UE_BULK) {
- /* In case we are using a bidir protocol... */
- ed = usbd_interface2endpoint_descriptor(iface, 1);
- if (!ed)
- goto nobulk;
- if ((ed->bEndpointAddress & UE_IN) != UE_OUT ||
- (ed->bmAttributes & UE_XFERTYPE) != UE_BULK)
- goto nobulk;
- }
- sc->sc_bulk = ed->bEndpointAddress;
- DPRINTFN(10, ("ulpt_attach: bulk=%d\n", sc->sc_bulk));
-
- sc->sc_iface = iface;
- r = usbd_interface2device_handle(iface, &sc->sc_udev);
- if (r != USBD_NORMAL_COMPLETION)
- USB_ATTACH_ERROR_RETURN;
- sc->sc_ifaceno = id->bInterfaceNumber;
-
-#if 0
-XXX needs a different way to read the id string since the length
-is unknown. usbd_do_request() returns error on a short transfer.
- req.bmRequestType = UT_READ_CLASS_INTERFACE;
- req.bRequest = UR_GET_DEVICE_ID;
- USETW(req.wValue, cd->bConfigurationValue);
- USETW2(req.wIndex, id->bInterfaceNumber, id->bAlternateSetting);
- USETW(req.wLength, sizeof devinfo - 1);
- r = usbd_do_request(dev, &req, devinfo);
- if (r == USBD_NORMAL_COMPLETION) {
- int len;
- char *idstr;
- len = (devinfo[0] << 8) | (devinfo[1] & 0xff);
- /* devinfo now contains an IEEE-1284 device ID */
- idstr = devinfo+2;
- idstr[len] = 0;
- printf("%s: device id <%s>\n", USBDEVNAME(sc->sc_dev), idstr);
- } else {
- printf("%s: cannot get device id\n", USBDEVNAME(sc->sc_dev));
- }
-#endif
-
- USB_ATTACH_SUCCESS_RETURN;
-
- nobulk:
- printf("%s: could not find bulk endpoint\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
-}
-
-int
-ulpt_status(sc)
- struct ulpt_softc *sc;
-{
- usb_device_request_t req;
- usbd_status r;
- u_char status;
-
- req.bmRequestType = UT_READ_CLASS_INTERFACE;
- req.bRequest = UR_GET_PORT_STATUS;
- USETW(req.wValue, 0);
- USETW(req.wIndex, sc->sc_ifaceno);
- USETW(req.wLength, 1);
- r = usbd_do_request(sc->sc_udev, &req, &status);
- DPRINTFN(1, ("ulpt_status: status=0x%02x r=%d\n", status, r));
- if (r == USBD_NORMAL_COMPLETION)
- return (status);
- else
- return (0);
-}
-
-void
-ulpt_reset(sc)
- struct ulpt_softc *sc;
-{
- usb_device_request_t req;
-
- DPRINTFN(1, ("ulpt_reset\n"));
- req.bmRequestType = UT_WRITE_CLASS_OTHER;
- req.bRequest = UR_SOFT_RESET;
- USETW(req.wValue, 0);
- USETW(req.wIndex, sc->sc_ifaceno);
- USETW(req.wLength, 0);
- (void)usbd_do_request(sc->sc_udev, &req, 0);
-}
-
-/*
- * Reset the printer, then wait until it's selected and not busy.
- */
-int
-ulptopen(dev, flag, mode, p)
- dev_t dev;
- int flag;
- int mode;
- struct proc *p;
-{
- u_char flags = ULPTFLAGS(dev);
- usbd_status r;
- int spin, error;
- USB_GET_SC_OPEN(ulpt, ULPTUNIT(dev), sc);
-
- if (!sc || !sc->sc_iface)
- return ENXIO;
-
- if (sc->sc_state)
- return EBUSY;
-
- sc->sc_state = ULPT_INIT;
- sc->sc_flags = flags;
- DPRINTF(("ulptopen: flags=0x%x\n", (unsigned)flags));
-
-#if USB_DEBUG && defined(__FreeBSD__)
- /* Ignoring these flags might not be a good idea */
- if ((flags ^ ULPT_NOPRIME) != 0)
- DPRINTF(("flags ignored: %b\n", flags,
- "\20\3POS_INIT\4POS_ACK\6PRIME_OPEN\7AUTOLF\10BYPASS"));
-#endif
- if ((flags & ULPT_NOPRIME) == 0)
- ulpt_reset(sc);
-
- for (spin = 0; (ulpt_status(sc) & LPS_SELECT) == 0; spin += STEP) {
- if (spin >= TIMEOUT) {
- sc->sc_state = 0;
- return EBUSY;
- }
-
- /* wait 1/4 second, give up if we get a signal */
- error = tsleep((caddr_t)sc, LPTPRI | PCATCH, "ulptop", STEP);
- if (error != EWOULDBLOCK) {
- sc->sc_state = 0;
- return error;
- }
- }
-
- r = usbd_open_pipe(sc->sc_iface, sc->sc_bulk, 0, &sc->sc_bulkpipe);
- if (r != USBD_NORMAL_COMPLETION) {
- sc->sc_state = 0;
- return (EIO);
- }
-
- sc->sc_state = ULPT_OPEN;
-
- DPRINTF(("ulptopen: done\n"));
- return (0);
-}
-
-int
-ulpt_statusmsg(status, sc)
- u_char status;
- struct ulpt_softc *sc;
-{
- u_char new;
-
- status = (status ^ LPS_INVERT) & LPS_MASK;
- new = status & ~sc->sc_laststatus;
- sc->sc_laststatus = status;
-
- if (new & LPS_SELECT)
- log(LOG_NOTICE, "%s: offline\n", USBDEVNAME(sc->sc_dev));
- else if (new & LPS_NOPAPER)
- log(LOG_NOTICE, "%s: out of paper\n", USBDEVNAME(sc->sc_dev));
- else if (new & LPS_NERR)
- log(LOG_NOTICE, "%s: output error\n", USBDEVNAME(sc->sc_dev));
-
- return status;
-}
-
-int
-ulptclose(dev, flag, mode, p)
- dev_t dev;
- int flag;
- int mode;
- struct proc *p;
-{
- USB_GET_SC(ulpt, ULPTUNIT(dev), sc);
-
- usbd_close_pipe(sc->sc_bulkpipe);
-
- sc->sc_state = 0;
-
- DPRINTF(("ulptclose: closed\n"));
- return (0);
-}
-
-int
-ulptwrite(dev, uio, flags)
- dev_t dev;
- struct uio *uio;
- int flags;
-{
- size_t n;
- int error = 0;
- char buf[ULPT_BSIZE];
- usbd_request_handle reqh;
- usbd_status r;
- USB_GET_SC(ulpt, ULPTUNIT(dev), sc);
-
- DPRINTF(("ulptwrite\n"));
- reqh = usbd_alloc_request();
- if (reqh == 0)
- return (ENOMEM);
- while ((n = min(ULPT_BSIZE, uio->uio_resid)) != 0) {
- ulpt_statusmsg(ulpt_status(sc), sc);
- error = uiomove(buf, n, uio);
- if (error)
- break;
- /* XXX use callback to enable interrupt? */
- r = usbd_setup_request(reqh, sc->sc_bulkpipe, 0, buf, n,
- 0, USBD_NO_TIMEOUT, 0);
- if (r != USBD_NORMAL_COMPLETION) {
- error = EIO;
- break;
- }
- DPRINTFN(1, ("ulptwrite: transfer %d bytes\n", n));
- r = usbd_sync_transfer(reqh);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("ulptwrite: error=%d\n", r));
- usbd_clear_endpoint_stall(sc->sc_bulkpipe);
- error = EIO;
- break;
- }
- }
- usbd_free_request(reqh);
- return (error);
-}
-
-int
-ulptioctl(dev, cmd, data, flag, p)
- dev_t dev;
- u_long cmd;
- caddr_t data;
- int flag;
- struct proc *p;
-{
- int error = 0;
-
- switch (cmd) {
- default:
- error = ENODEV;
- }
-
- return error;
-}
-
-#if defined(__FreeBSD__)
-static int
-ulpt_detach(device_t self)
-{
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
- return 0;
-}
-
-CDEV_DRIVER_MODULE(ulpt, uhub, ulpt_driver, ulpt_devclass,
- ULPT_CDEV_MAJOR, ulpt_cdevsw, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/umodem.c b/sys/dev/usb/umodem.c
deleted file mode 100644
index 16bfae25ae168..0000000000000
--- a/sys/dev/usb/umodem.c
+++ /dev/null
@@ -1,142 +0,0 @@
-/* $NetBSD: umodem.c,v 1.5 1999/01/08 11:58:25 augustss Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/ioccom.h>
-#include <sys/conf.h>
-#endif
-#include <sys/tty.h>
-#include <sys/file.h>
-#include <sys/select.h>
-#include <sys/proc.h>
-#include <sys/vnode.h>
-#include <sys/device.h>
-#include <sys/poll.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbcdc.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (umodemdebug) printf x
-#define DPRINTFN(n,x) if (umodemdebug>(n)) printf x
-int umodemdebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-struct umodem_softc {
- bdevice sc_dev; /* base device */
- usbd_interface_handle sc_ctl; /* control interface */
- usbd_interface_handle sc_data; /* data interface */
- uByte cmCaps;
- uByte acmCaps;
-};
-
-void umodem_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
-void umodem_disco __P((void *));
-
-USB_DECLARE_DRIVER(umodem);
-
-USB_MATCH(umodem)
-{
- USB_MATCH_START(umodem, uaa);
-
- usb_interface_descriptor_t *id;
-
- if (!uaa->iface)
- return (UMATCH_NONE);
- id = usbd_get_interface_descriptor(uaa->iface);
- if (!id ||
- id->bInterfaceClass != UCLASS_CDC ||
- id->bInterfaceSubClass != USUBCLASS_ABSTRACT_CONTROL_MODEL ||
- id->bInterfaceProtocol != UPROTO_CDC_AT)
- return (UMATCH_NONE);
- return (UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO);
-}
-
-USB_ATTACH(umodem)
-{
- USB_ATTACH_START(umodem, sc, uaa);
- usbd_interface_handle iface = uaa->iface;
- usb_interface_descriptor_t *id;
- char devinfo[1024];
-
- sc->sc_ctl = iface;
- id = usbd_get_interface_descriptor(iface);
- usbd_devinfo(uaa->device, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
- devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-#if defined(__FreeBSD__)
-static int
-umodem_detach(device_t self)
-{
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
-
- return 0;
-}
-#endif
-
-#if defined(__FreeBSD__)
-DRIVER_MODULE(umodem, uhub, umodem_driver, umodem_devclass, usbd_driver_load,0);
-#endif
-
diff --git a/sys/dev/usb/ums.c b/sys/dev/usb/ums.c
deleted file mode 100644
index e92d027ec0db3..0000000000000
--- a/sys/dev/usb/ums.c
+++ /dev/null
@@ -1,720 +0,0 @@
-/* $NetBSD: ums.c,v 1.19 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#include <sys/ioctl.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/ioccom.h>
-#include <sys/conf.h>
-#endif
-#include <sys/tty.h>
-#include <sys/file.h>
-#include <sys/select.h>
-#include <sys/proc.h>
-#include <sys/vnode.h>
-#include <sys/poll.h>
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-#include <dev/usb/hid.h>
-
-#if defined(__NetBSD__)
-#include <dev/wscons/wsconsio.h>
-#include <dev/wscons/wsmousevar.h>
-#elif defined(__FreeBSD__)
-#include <machine/mouse.h>
-#endif
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (umsdebug) printf x
-#define DPRINTFN(n,x) if (umsdebug>(n)) printf x
-int umsdebug = 6;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-#define UMSUNIT(s) (minor(s)&0x1f)
-
-#define PS2LBUTMASK x01
-#define PS2RBUTMASK x02
-#define PS2MBUTMASK x04
-#define PS2BUTMASK 0x0f
-
-#define QUEUE_BUFSIZE 240 /* MUST be divisible by 3 _and_ 4 */
-
-struct ums_softc {
- bdevice sc_dev; /* base device */
- usbd_interface_handle sc_iface; /* interface */
- usbd_pipe_handle sc_intrpipe; /* interrupt pipe */
- int sc_ep_addr;
-
- u_char *sc_ibuf;
- u_int8_t sc_iid;
- int sc_isize;
- struct hid_location sc_loc_x, sc_loc_y, sc_loc_z;
- struct hid_location *sc_loc_btn;
-
- int sc_enabled;
- int sc_disconnected; /* device is gone */
-
- int flags; /* device configuration */
-#define UMS_Z 0x01 /* z direction available */
- int nbuttons;
-#define MAX_BUTTONS 7 /* chosen because sc_buttons is u_char */
-
-#if defined(__NetBSD__)
- u_char sc_buttons; /* mouse button status */
- struct device *sc_wsmousedev;
-#elif defined(__FreeBSD__)
- u_char qbuf[QUEUE_BUFSIZE]; /* must be divisable by 3&4 */
- u_char dummy[100]; /* XXX just for safety and for now */
- int qcount, qhead, qtail;
- mousehw_t hw;
- mousemode_t mode;
- mousestatus_t status;
-
- int state;
-# define UMS_ASLEEP 0x01 /* readFromDevice is waiting */
-# define UMS_SELECT 0x02 /* select is waiting */
- struct selinfo rsel; /* process waiting in select */
-#endif
-};
-
-#define MOUSE_FLAGS_MASK (HIO_CONST|HIO_RELATIVE)
-#define MOUSE_FLAGS (HIO_RELATIVE)
-
-void ums_intr __P((usbd_request_handle, usbd_private_handle, usbd_status));
-void ums_disco __P((void *));
-
-static int ums_enable __P((void *));
-static void ums_disable __P((void *));
-
-#if defined(__NetBSD__)
-static int ums_ioctl __P((void *, u_long, caddr_t, int, struct proc *));
-
-const struct wsmouse_accessops ums_accessops = {
- ums_enable,
- ums_ioctl,
- ums_disable,
-};
-
-#elif defined(__FreeBSD__)
-static d_open_t ums_open;
-static d_close_t ums_close;
-static d_read_t ums_read;
-static d_ioctl_t ums_ioctl;
-static d_poll_t ums_poll;
-
-#define UMS_CDEV_MAJOR 111
-
-static struct cdevsw ums_cdevsw = {
- ums_open, ums_close, ums_read, nowrite,
- ums_ioctl, nostop, nullreset, nodevtotty,
- ums_poll, nommap, nostrat,
- "ums", NULL, -1
-};
-#endif
-
-USB_DECLARE_DRIVER(ums);
-
-USB_MATCH(ums)
-{
- USB_MATCH_START(ums, uaa);
- usb_interface_descriptor_t *id;
- int size, ret;
- void *desc;
- usbd_status r;
-
- if (!uaa->iface)
- return (UMATCH_NONE);
- id = usbd_get_interface_descriptor(uaa->iface);
- if (!id || id->bInterfaceClass != UCLASS_HID)
- return (UMATCH_NONE);
-
- r = usbd_alloc_report_desc(uaa->iface, &desc, &size, M_TEMP);
- if (r != USBD_NORMAL_COMPLETION)
- return (UMATCH_NONE);
-
- if (hid_is_collection(desc, size,
- HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE)))
- ret = UMATCH_IFACECLASS;
- else
- ret = UMATCH_NONE;
-
- free(desc, M_TEMP);
- return (ret);
-}
-
-USB_ATTACH(ums)
-{
- USB_ATTACH_START(ums, sc, uaa);
- usbd_interface_handle iface = uaa->iface;
- usb_interface_descriptor_t *id;
- usb_endpoint_descriptor_t *ed;
-#if defined(__NetBSD__)
- struct wsmousedev_attach_args a;
-#endif
- int size;
- void *desc;
- usbd_status r;
- char devinfo[1024];
- u_int32_t flags;
- int i;
- struct hid_location loc_btn;
-
- sc->sc_disconnected = 1;
- sc->sc_iface = iface;
- id = usbd_get_interface_descriptor(iface);
- usbd_devinfo(uaa->device, 0, devinfo);
- USB_ATTACH_SETUP;
- printf("%s: %s, iclass %d/%d\n", USBDEVNAME(sc->sc_dev),
- devinfo, id->bInterfaceClass, id->bInterfaceSubClass);
- ed = usbd_interface2endpoint_descriptor(iface, 0);
- if (!ed) {
- printf("%s: could not read endpoint descriptor\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- DPRINTFN(10,("ums_attach: bLength=%d bDescriptorType=%d "
- "bEndpointAddress=%d-%s bmAttributes=%d wMaxPacketSize=%d"
- " bInterval=%d\n",
- ed->bLength, ed->bDescriptorType,
- ed->bEndpointAddress & UE_ADDR,
- ed->bEndpointAddress & UE_IN ? "in" : "out",
- ed->bmAttributes & UE_XFERTYPE,
- UGETW(ed->wMaxPacketSize), ed->bInterval));
-
- if ((ed->bEndpointAddress & UE_IN) != UE_IN ||
- (ed->bmAttributes & UE_XFERTYPE) != UE_INTERRUPT) {
- printf("%s: unexpected endpoint\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
-
- r = usbd_alloc_report_desc(uaa->iface, &desc, &size, M_TEMP);
- if (r != USBD_NORMAL_COMPLETION)
- USB_ATTACH_ERROR_RETURN;
-
- if (!hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X),
- hid_input, &sc->sc_loc_x, &flags)) {
- printf("%s: mouse has no X report\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
- if ((flags & MOUSE_FLAGS_MASK) != MOUSE_FLAGS) {
- printf("%s: X report 0x%04x not supported\n",
- USBDEVNAME(sc->sc_dev), flags);
- USB_ATTACH_ERROR_RETURN;
- }
-
- if (!hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y),
- hid_input, &sc->sc_loc_y, &flags)) {
- printf("%s: mouse has no Y report\n", USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
- if ((flags & MOUSE_FLAGS_MASK) != MOUSE_FLAGS) {
- printf("%s: Y report 0x%04x not supported\n",
- USBDEVNAME(sc->sc_dev), flags);
- USB_ATTACH_ERROR_RETURN;
- }
-
- /* try to guess the Z activator: first check Z, then WHEEL */
- if (hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Z),
- hid_input, &sc->sc_loc_z, &flags) ||
- hid_locate(desc, size, HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_WHEEL),
- hid_input, &sc->sc_loc_z, &flags)) {
- if ((flags & MOUSE_FLAGS_MASK) != MOUSE_FLAGS) {
- sc->sc_loc_z.size = 0; /* Bad Z coord, ignore it */
- } else {
-#if defined(__FreeBSD__)
-#ifdef USBVERBOSE
- printf("%s: Z dir. ignored due to bugs in ums.c\n",
- USBDEVNAME(sc->sc_dev));
-#endif
-#else
- sc->flags |= UMS_Z;
-#endif
- }
- }
-
- /* figure out the number of buttons */
- for (i = 1; i <= MAX_BUTTONS; i++)
- if (!hid_locate(desc, size, HID_USAGE2(HUP_BUTTON, i),
- hid_input, &loc_btn, 0))
- break;
- sc->nbuttons = i - 1;
- sc->sc_loc_btn = malloc(sizeof(struct hid_location)*sc->nbuttons,
- M_USBDEV, M_NOWAIT);
- if (!sc->sc_loc_btn)
- USB_ATTACH_ERROR_RETURN;
-
- printf("%s: %d buttons%s\n", USBDEVNAME(sc->sc_dev),
- sc->nbuttons, (sc->flags & UMS_Z? " and Z dir." : ""));
-
- for (i = 1; i <= sc->nbuttons; i++)
- hid_locate(desc, size, HID_USAGE2(HUP_BUTTON, i),
- hid_input, &sc->sc_loc_btn[i-1], 0);
-
- sc->sc_isize = hid_report_size(desc, size, hid_input, &sc->sc_iid);
- sc->sc_ibuf = malloc(sc->sc_isize, M_USB, M_NOWAIT);
- if (!sc->sc_ibuf) {
- free(sc->sc_loc_btn, M_USB);
- USB_ATTACH_ERROR_RETURN;
- }
-
- sc->sc_ep_addr = ed->bEndpointAddress;
- sc->sc_disconnected = 0;
- free(desc, M_TEMP);
-
-#ifdef USB_DEBUG
- DPRINTF(("ums_attach: sc=%p\n", sc));
- DPRINTF(("ums_attach: X\t%d/%d\n",
- sc->sc_loc_x.pos, sc->sc_loc_x.size));
- DPRINTF(("ums_attach: Y\t%d/%d\n",
- sc->sc_loc_x.pos, sc->sc_loc_x.size));
- if (sc->flags & UMS_Z)
- DPRINTF(("ums_attach: Z\t%d/%d\n",
- sc->sc_loc_z.pos, sc->sc_loc_z.size));
- for (i = 1; i <= sc->nbuttons; i++) {
- DPRINTF(("ums_attach: B%d\t%d/%d\n",
- i, sc->sc_loc_btn[i-1].pos,sc->sc_loc_btn[i-1].size));
- }
- DPRINTF(("ums_attach: size=%d, id=%d\n", sc->sc_isize, sc->sc_iid));
-#endif
-
-#if defined(__NetBSD__)
- a.accessops = &ums_accessops;
- a.accesscookie = sc;
-
- sc->sc_wsmousedev = config_found(self, &a, wsmousedevprint);
-#elif defined(__FreeBSD__)
- sc->hw.buttons = 2; /* XXX hw&mode values are bogus */
- sc->hw.iftype = MOUSE_IF_PS2;
- sc->hw.type = MOUSE_MOUSE;
- if (sc->flags & UMS_Z)
- sc->hw.model = MOUSE_MODEL_INTELLI;
- else
- sc->hw.model = MOUSE_MODEL_GENERIC;
- sc->hw.hwid = 0;
- sc->mode.protocol = MOUSE_PROTO_PS2;
- sc->mode.rate = -1;
- sc->mode.resolution = MOUSE_RES_DEFAULT;
- sc->mode.accelfactor = 1;
- sc->mode.level = 0;
- if (sc->flags & UMS_Z) {
- sc->mode.packetsize = MOUSE_INTELLI_PACKETSIZE;
- sc->mode.syncmask[0] = 0xc8;
- } else {
- sc->mode.packetsize = MOUSE_PS2_PACKETSIZE;
- sc->mode.syncmask[0] = 0xc0;
- }
- sc->mode.syncmask[1] = 0;
-
- sc->status.flags = 0;
- sc->status.button = sc->status.obutton = 0;
- sc->status.dx = sc->status.dy = sc->status.dz = 0;
-
- sc->rsel.si_flags = 0;
- sc->rsel.si_pid = 0;
-#endif
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-
-#if defined(__FreeBSD__)
-static int
-ums_detach(device_t self)
-{
- struct ums_softc *sc = device_get_softc(self);
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
- free(sc->sc_loc_btn, M_USB);
- free(sc->sc_ibuf, M_USB);
-
- return 0;
-}
-#endif
-
-void
-ums_disco(p)
- void *p;
-{
- struct ums_softc *sc = p;
-
- DPRINTF(("ums_disco: sc=%p\n", sc));
- usbd_abort_pipe(sc->sc_intrpipe);
- sc->sc_disconnected = 1;
-}
-
-void
-ums_intr(reqh, addr, status)
- usbd_request_handle reqh;
- usbd_private_handle addr;
- usbd_status status;
-{
- struct ums_softc *sc = addr;
- u_char *ibuf;
- int dx, dy, dz;
- u_char buttons = 0;
- int i;
-
-#if defined(__NetBSD__)
-#define UMS_BUT(i) ((i) == 1 || (i) == 2 ? 3 - (i) : i)
-#elif defined(__FreeBSD__)
-#define UMS_BUT(i) (i)
-#endif
-
- DPRINTFN(5, ("ums_intr: sc=%p status=%d\n", sc, status));
- DPRINTFN(5, ("ums_intr: data = %02x %02x %02x\n",
- sc->sc_ibuf[0], sc->sc_ibuf[1], sc->sc_ibuf[2]));
-
- if (status == USBD_CANCELLED)
- return;
-
- if (status != USBD_NORMAL_COMPLETION) {
- DPRINTF(("ums_intr: status=%d\n", status));
- usbd_clear_endpoint_stall_async(sc->sc_intrpipe);
- return;
- }
-
- ibuf = sc->sc_ibuf;
- if (sc->sc_iid) {
- if (*ibuf++ != sc->sc_iid)
- return;
- }
-
- dx = hid_get_data(ibuf, &sc->sc_loc_x);
- dy = -hid_get_data(ibuf, &sc->sc_loc_y);
- dz = hid_get_data(ibuf, &sc->sc_loc_z);
- for (i = 0; i < sc->nbuttons; i++)
- if (hid_get_data(ibuf, &sc->sc_loc_btn[i]))
- buttons |= (1 << UMS_BUT(i));
-
-#if defined(__NetBSD__)
- if (dx || dy || buttons != sc->sc_buttons) {
- DPRINTFN(10, ("ums_intr: x:%d y:%d z:%d buttons:0x%x\n",
- dx, dy, dz, buttons));
- sc->sc_buttons = buttons;
- if (sc->sc_wsmousedev)
- wsmouse_input(sc->sc_wsmousedev, buttons, dx, dy, dz);
-#elif defined(__FreeBSD__)
- if (dx || dy || (sc->flags & UMS_Z && dz)
- || buttons != sc->status.button) {
- DPRINTFN(5, ("ums_intr: x:%d y:%d z:%d buttons:0x%x\n",
- dx, dy, dz, buttons));
-
- sc->status.button = buttons;
- sc->status.dx += dx;
- sc->status.dy += dy;
- sc->status.dz += dz;
-
- /* Discard data in case of full buffer */
- if (sc->qcount == sizeof(sc->qbuf)) {
- DPRINTF(("Buffer full, discarded packet"));
- return;
- }
-
- sc->qbuf[sc->qhead] = MOUSE_PS2_SYNC;
- if (dx < 0)
- sc->qbuf[sc->qhead] |= MOUSE_PS2_XNEG;
- if (dx > 255 || dx < -255)
- sc->qbuf[sc->qhead] |= MOUSE_PS2_XOVERFLOW;
- if (dy < 0)
- sc->qbuf[sc->qhead] |= MOUSE_PS2_YNEG;
- if (dy > 255 || dy < -255)
- sc->qbuf[sc->qhead] |= MOUSE_PS2_YOVERFLOW;
- sc->qbuf[sc->qhead++] |= buttons;
- sc->qbuf[sc->qhead++] = dx;
- sc->qbuf[sc->qhead++] = dy;
- sc->qcount += 3;
- if (sc->flags & UMS_Z) {
- sc->qbuf[sc->qhead++] = dz;
- sc->qcount++;
- }
-#ifdef USB_DEBUG
- if (sc->qhead > sizeof(sc->qbuf))
- DPRINTF(("Buffer overrun! %d %d\n",
- sc->qhead, sizeof(sc->qbuf)));
-#endif
- /* wrap round at end of buffer */
- if (sc->qhead >= sizeof(sc->qbuf))
- sc->qhead = 0;
-
- /* someone waiting for data */
- if (sc->state & UMS_ASLEEP) {
- DPRINTF(("Waking up %p\n", sc));
- wakeup(sc);
- }
- if (sc->state & UMS_SELECT) {
- DPRINTF(("Waking up select %p\n", &sc->rsel));
- selwakeup(&sc->rsel);
- }
-#endif
- }
-}
-
-
-static int
-ums_enable(v)
- void *v;
-{
- struct ums_softc *sc = v;
-
- usbd_status r;
-
- if (sc->sc_enabled)
- return EBUSY;
-
- sc->sc_enabled = 1;
-#if defined(__NetBSD__)
- sc->sc_buttons = 0;
-#elif defined(__FreeBSD__)
- sc->qcount = 0;
- sc->qhead = sc->qtail = 0;
- sc->status.flags = 0;
- sc->status.button = sc->status.obutton = 0;
- sc->status.dx = sc->status.dy = sc->status.dz = 0;
-#endif
-
- /* Set up interrupt pipe. */
- r = usbd_open_pipe_intr(sc->sc_iface, sc->sc_ep_addr,
- USBD_SHORT_XFER_OK, &sc->sc_intrpipe, sc,
- sc->sc_ibuf, sc->sc_isize, ums_intr);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("ums_enable: usbd_open_pipe_intr failed, error=%d\n",
- r));
- sc->sc_enabled = 0;
- return (EIO);
- }
- usbd_set_disco(sc->sc_intrpipe, ums_disco, sc);
- return (0);
-}
-
-static void
-ums_disable(v)
- void *v;
-{
- struct ums_softc *sc = v;
-
- /* Disable interrupts. */
- usbd_abort_pipe(sc->sc_intrpipe);
- usbd_close_pipe(sc->sc_intrpipe);
-
- sc->sc_enabled = 0;
-
-#if defined(USBVERBOSE) && defined(__FreeBSD__)
- if (sc->qcount != 0)
- DPRINTF(("Discarded %d bytes in queue\n", sc->qcount));
-#endif
-}
-
-#if defined(__NetBSD__)
-static int
-ums_ioctl(v, cmd, data, flag, p)
- void *v;
- u_long cmd;
- caddr_t data;
- int flag;
- struct proc *p;
-
-{
- switch (cmd) {
- case WSMOUSEIO_GTYPE:
- *(u_int *)data = WSMOUSE_TYPE_USB;
- return (0);
- }
-
- return (-1);
-}
-
-#elif defined(__FreeBSD__)
-static int
-ums_open(dev_t dev, int flag, int fmt, struct proc *p)
-{
- USB_GET_SC_OPEN(ums, UMSUNIT(dev), sc);
-
- return ums_enable(sc);
-}
-
-static int
-ums_close(dev_t dev, int flag, int fmt, struct proc *p)
-{
- USB_GET_SC(ums, UMSUNIT(dev), sc);
-
- if (sc->sc_enabled)
- ums_disable(sc);
-
- return 0;
-}
-
-static int
-ums_read(dev_t dev, struct uio *uio, int flag)
-{
- USB_GET_SC(ums, UMSUNIT(dev), sc);
- int s;
- char buf[sizeof(sc->qbuf)];
- int l = 0;
- int error;
-
- s = splusb();
- while (sc->qcount == 0 ) {
- /* NWH XXX non blocking I/O ??
- if (non blocking I/O ) {
- splx(s);
- return EWOULDBLOCK;
- } else {
- */
- sc->state |= UMS_ASLEEP;
- error = tsleep(sc, PZERO | PCATCH, "umsrea", 0);
- sc->state &= ~UMS_ASLEEP;
- if (error) {
- splx(s);
- return error;
- }
- }
-
- while ((sc->qcount > 0) && (uio->uio_resid > 0)) {
- l = (sc->qcount < uio->uio_resid? sc->qcount:uio->uio_resid);
- if (l > sizeof(buf))
- l = sizeof(buf);
- if (l > sizeof(sc->qbuf) - sc->qtail) /* transfer till end of buf */
- l = sizeof(sc->qbuf) - sc->qtail;
-
- splx(s);
- uiomove(&sc->qbuf[sc->qtail], l, uio);
- s = splusb();
-
- if ( sc->qcount - l < 0 ) {
- DPRINTF(("qcount below 0, count=%d l=%d\n", sc->qcount, l));
- sc->qcount = l;
- }
- sc->qcount -= l; /* remove the bytes from the buffer */
- sc->qtail = (sc->qtail + l) % sizeof(sc->qbuf);
- }
- splx(s);
-
- return 0;
-}
-
-static int
-ums_poll(dev_t dev, int events, struct proc *p)
-{
- USB_GET_SC(ums, UMSUNIT(dev), sc);
- int revents = 0;
- int s;
-
- s = splusb();
- if (events & (POLLIN | POLLRDNORM)) {
- if (sc->qcount) {
- revents = events & (POLLIN | POLLRDNORM);
- } else {
- sc->state |= UMS_SELECT;
- selrecord(p, &sc->rsel);
- sc->state &= ~UMS_SELECT;
- }
- }
- splx(s);
-
- return revents;
-}
-
-int
-ums_ioctl(dev_t dev, u_long cmd, caddr_t addr, int flag, struct proc *p)
-{
- USB_GET_SC(ums, UMSUNIT(dev), sc);
- int error = 0;
- int s;
-
- switch(cmd) {
- case MOUSE_GETHWINFO:
- *(mousehw_t *)addr = sc->hw;
- break;
- case MOUSE_GETMODE:
- *(mousemode_t *)addr = sc->mode;
- break;
- case MOUSE_GETLEVEL:
- *(int *)addr = sc->mode.level;
- break;
- case MOUSE_GETSTATUS: {
- mousestatus_t *status = (mousestatus_t *) addr;
-
- s = splusb();
- *status = sc->status;
- sc->status.obutton = sc->status.button;
- sc->status.button = 0;
- sc->status.dx = sc->status.dy = sc->status.dz = 0;
- splx(s);
-
- if (status->dx || status->dy || status->dz)
- status->flags |= MOUSE_POSCHANGED;
- if (status->button != status->obutton)
- status->flags |= MOUSE_BUTTONSCHANGED;
- break;
- }
- default:
- error = ENOTTY;
- }
-
- return error;
-}
-#endif
-
-#if defined(__FreeBSD__)
-CDEV_DRIVER_MODULE(ums, uhub, ums_driver, ums_devclass,
- UMS_CDEV_MAJOR, ums_cdevsw, usbd_driver_load, 0);
-#endif
diff --git a/sys/dev/usb/usb.c b/sys/dev/usb/usb.c
deleted file mode 100644
index 70c75166b2662..0000000000000
--- a/sys/dev/usb/usb.c
+++ /dev/null
@@ -1,418 +0,0 @@
-/* $NetBSD: usb.c,v 1.11 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * USB specifications and other documentation can be found at
- * http://www.usb.org/developers/data/ and
- * http://www.usb.org/developers/index.html .
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/ioccom.h>
-#include <sys/uio.h>
-#include <sys/conf.h>
-#endif
-#include <sys/poll.h>
-#include <sys/proc.h>
-#include <sys/select.h>
-
-#include <dev/usb/usb.h>
-
-#if defined(__FreeBSD__)
-MALLOC_DEFINE(M_USB, "USB", "USB");
-MALLOC_DEFINE(M_USBDEV, "USBdev", "USB device");
-
-#include "usb_if.h"
-#endif /* defined(__FreeBSD__) */
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdivar.h>
-#include <dev/usb/usb_quirks.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (usbdebug) printf x
-#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
-int usbdebug = 1;
-int uhcidebug = 1;
-int ohcidebug = 1;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-#define USBUNIT(dev) (minor(dev))
-
-struct usb_softc {
- bdevice sc_dev; /* base device */
- usbd_bus_handle sc_bus; /* USB controller */
- struct usbd_port sc_port; /* dummy port for root hub */
- char sc_running;
- char sc_exploring;
- struct selinfo sc_consel; /* waiting for connect change */
-};
-
-#if defined(__NetBSD__)
-int usbopen __P((dev_t, int, int, struct proc *));
-int usbclose __P((dev_t, int, int, struct proc *));
-int usbioctl __P((dev_t, u_long, caddr_t, int, struct proc *));
-int usbpoll __P((dev_t, int, struct proc *));
-
-#elif defined(__FreeBSD__)
-d_open_t usbopen;
-d_close_t usbclose;
-d_ioctl_t usbioctl;
-int usbpoll __P((dev_t, int, struct proc *));
-
-struct cdevsw usb_cdevsw = {
- usbopen, usbclose, noread, nowrite,
- usbioctl, nullstop, nullreset, nodevtotty,
- usbpoll, nommap, nostrat,
- "usb", NULL, -1
-};
-#endif
-
-usbd_status usb_discover __P((struct usb_softc *));
-
-USB_DECLARE_DRIVER_INIT(usb, DEVMETHOD(bus_print_child, usbd_print_child));
-
-USB_MATCH(usb)
-{
- DPRINTF(("usbd_match\n"));
- return (UMATCH_GENERIC);
-}
-
-USB_ATTACH(usb)
-{
-#if defined(__NetBSD__)
- struct usb_softc *sc = (struct usb_softc *)self;
-#elif defined(__FreeBSD__)
- struct usb_softc *sc = device_get_softc(self);
- void *aux = device_get_ivars(self);
-#endif
- usbd_device_handle dev;
- usbd_status r;
-
-#if defined(__NetBSD__)
- printf("\n");
-#elif defined(__FreeBSD__)
- sc->sc_dev = self;
-#endif
-
- DPRINTF(("usbd_attach\n"));
- usbd_init();
- sc->sc_bus = aux;
- sc->sc_bus->usbctl = sc;
- sc->sc_running = 1;
- sc->sc_bus->use_polling = 1;
- sc->sc_port.power = USB_MAX_POWER;
- r = usbd_new_device(&sc->sc_dev, sc->sc_bus, 0, 0, 0, &sc->sc_port);
-
- if (r == USBD_NORMAL_COMPLETION) {
- dev = sc->sc_port.device;
- if (!dev->hub) {
- sc->sc_running = 0;
- printf("%s: root device is not a hub\n",
- USBDEVNAME(sc->sc_dev));
- USB_ATTACH_ERROR_RETURN;
- }
- sc->sc_bus->root_hub = dev;
- dev->hub->explore(sc->sc_bus->root_hub);
- } else {
- printf("%s: root hub problem, error=%d\n",
- USBDEVNAME(sc->sc_dev), r);
- sc->sc_running = 0;
- }
- sc->sc_bus->use_polling = 0;
-
- USB_ATTACH_SUCCESS_RETURN;
-}
-
-#if defined(__NetBSD__)
-int
-usbctlprint(aux, pnp)
- void *aux;
- const char *pnp;
-{
- /* only "usb"es can attach to host controllers */
- if (pnp)
- printf("usb at %s", pnp);
-
- return (UNCONF);
-}
-#endif
-
-int
-usbopen(dev, flag, mode, p)
- dev_t dev;
- int flag, mode;
- struct proc *p;
-{
- USB_GET_SC_OPEN(usb, USBUNIT(dev), sc);
-
- if (sc == 0 || !sc->sc_running)
- return (ENXIO);
-
- return (0);
-}
-
-int
-usbclose(dev, flag, mode, p)
- dev_t dev;
- int flag, mode;
- struct proc *p;
-{
- return (0);
-}
-
-int
-usbioctl(dev, cmd, data, flag, p)
- dev_t dev;
- u_long cmd;
- caddr_t data;
- int flag;
- struct proc *p;
-{
- USB_GET_SC(usb, USBUNIT(dev), sc);
-
- if (sc == 0 || !sc->sc_running)
- return (ENXIO);
- switch (cmd) {
-#ifdef USB_DEBUG
- case USB_SETDEBUG:
- usbdebug = uhcidebug = ohcidebug = *(int *)data;
- break;
-#endif
- case USB_DISCOVER:
- usb_discover(sc);
- break;
- case USB_REQUEST:
- {
- struct usb_ctl_request *ur = (void *)data;
- int len = UGETW(ur->request.wLength);
- struct iovec iov;
- struct uio uio;
- void *ptr = 0;
- int addr = ur->addr;
- usbd_status r;
- int error = 0;
-
- DPRINTF(("usbioctl: USB_REQUEST addr=%d len=%d\n", addr, len));
- if (len < 0 || len > 32768)
- return (EINVAL);
- if (addr < 0 || addr >= USB_MAX_DEVICES ||
- sc->sc_bus->devices[addr] == 0)
- return (EINVAL);
- if (len != 0) {
- iov.iov_base = (caddr_t)ur->data;
- iov.iov_len = len;
- uio.uio_iov = &iov;
- uio.uio_iovcnt = 1;
- uio.uio_resid = len;
- uio.uio_offset = 0;
- uio.uio_segflg = UIO_USERSPACE;
- uio.uio_rw =
- ur->request.bmRequestType & UT_READ ?
- UIO_READ : UIO_WRITE;
- uio.uio_procp = p;
- ptr = malloc(len, M_TEMP, M_WAITOK);
- if (uio.uio_rw == UIO_WRITE) {
- error = uiomove(ptr, len, &uio);
- if (error)
- goto ret;
- }
- }
- r = usbd_do_request_flags(sc->sc_bus->devices[addr],
- &ur->request, ptr,
- ur->flags, &ur->actlen);
- if (r) {
- error = EIO;
- goto ret;
- }
- if (len != 0) {
- if (uio.uio_rw == UIO_READ) {
- error = uiomove(ptr, len, &uio);
- if (error)
- goto ret;
- }
- }
- ret:
- if (ptr)
- free(ptr, M_TEMP);
- return (error);
- }
-
- case USB_DEVICEINFO:
- {
- struct usb_device_info *di = (void *)data;
- int addr = di->addr;
- usbd_device_handle dev;
-
- if (addr < 1 || addr >= USB_MAX_DEVICES)
- return (EINVAL);
- dev = sc->sc_bus->devices[addr];
- if (dev == 0)
- return (ENXIO);
- usbd_fill_deviceinfo(dev, di);
- break;
- }
-
- case USB_DEVICESTATS:
- *(struct usb_device_stats *)data = sc->sc_bus->stats;
- break;
-
- default:
- return (ENXIO);
- }
- return (0);
-}
-
-int
-usbpoll(dev, events, p)
- dev_t dev;
- int events;
- struct proc *p;
-{
- int revents, s;
- USB_GET_SC(usb, USBUNIT(dev), sc);
-
- DPRINTFN(2, ("usbpoll: sc=%p events=0x%x\n", sc, events));
- s = splusb();
- revents = 0;
- if (events & (POLLOUT | POLLWRNORM))
- if (sc->sc_bus->needs_explore)
- revents |= events & (POLLOUT | POLLWRNORM);
- DPRINTFN(2, ("usbpoll: revents=0x%x\n", revents));
- if (revents == 0) {
- if (events & (POLLOUT | POLLWRNORM)) {
- DPRINTFN(2, ("usbpoll: selrecord\n"));
- selrecord(p, &sc->sc_consel);
- }
- }
- splx(s);
- return (revents);
-}
-
-#if 0
-int
-usb_bus_count()
-{
- int i, n;
-
- for (i = n = 0; i < usb_cd.cd_ndevs; i++)
- if (usb_cd.cd_devs[i])
- n++;
- return (n);
-}
-#endif
-
-#if defined(__NetBSD__)
-usbd_status
-usb_get_bus_handle(n, h)
- int n;
- usbd_bus_handle *h;
-{
- int i;
-
- for (i = 0; i < usb_cd.cd_ndevs; i++)
- if (usb_cd.cd_devs[i] && n-- == 0) {
- *h = usb_cd.cd_devs[i];
- return (USBD_NORMAL_COMPLETION);
- }
- return (USBD_INVAL);
-}
-#endif
-
-usbd_status
-usb_discover(sc)
- struct usb_softc *sc;
-{
- int s;
-
- /* Explore device tree from the root */
- /* We need mutual exclusion while traversing the device tree. */
- s = splusb();
- while (sc->sc_exploring)
- tsleep(&sc->sc_exploring, PRIBIO, "usbdis", 0);
- sc->sc_exploring = 1;
- sc->sc_bus->needs_explore = 0;
- splx(s);
-
- sc->sc_bus->root_hub->hub->explore(sc->sc_bus->root_hub);
-
- s = splusb();
- sc->sc_exploring = 0;
- wakeup(&sc->sc_exploring);
- splx(s);
- /* XXX should we start over if sc_needsexplore is set again? */
- return (0);
-}
-
-void
-usb_needs_explore(bus)
- usbd_bus_handle bus;
-{
- bus->needs_explore = 1;
- selwakeup(&bus->usbctl->sc_consel);
-}
-
-#if defined(__FreeBSD__)
-int
-usb_detach(device_t self)
-{
- char *devinfo = (char *) device_get_desc(self);
-
- if (devinfo) {
- device_set_desc(self, NULL);
- free(devinfo, M_USB);
- }
-
- return (0);
-}
-
-DRIVER_MODULE(usb, root, usb_driver, usb_devclass, 0, 0);
-#endif
diff --git a/sys/dev/usb/usb.h b/sys/dev/usb/usb.h
deleted file mode 100644
index 17f0f0eeed715..0000000000000
--- a/sys/dev/usb/usb.h
+++ /dev/null
@@ -1,493 +0,0 @@
-/* $NetBSD: usb.h,v 1.17 1999/01/03 01:09:18 augustss Exp $ */
-/* FreeBSD $Id: usb.h,v 1.6 1999/01/07 23:31:37 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef _USB_H_
-#define _USB_H_
-
-#include <sys/types.h>
-#if defined(__NetBSD__)
-#include <sys/ioctl.h>
-#endif
-
-#if defined(__NetBSD__)
-#if defined(_KERNEL)
-#include <dev/usb/usb_port.h>
-#endif /* _KERNEL */
-
-#elif defined(__FreeBSD__)
-#include <sys/malloc.h>
-
-#if defined(KERNEL)
-MALLOC_DECLARE(M_USB);
-MALLOC_DECLARE(M_USBDEV);
-
-#include <dev/usb/usb_port.h>
-#endif /* KERNEL */
-#endif /* __FreeBSD__ */
-
-
-#define USB_MAX_DEVICES 128
-#define USB_START_ADDR 0
-
-#define USB_CONTROL_ENDPOINT 0
-#define USB_MAX_ENDPOINTS 16
-
-#define USB_FRAMES_PER_SECOND 1000
-
-/*
- * The USB records contain some unaligned little-endian word
- * components. The U[SG]ETW macros take care of both the alignment
- * and endian problem and should always be used to access 16 bit
- * values.
- */
-typedef u_int8_t uByte;
-typedef u_int8_t uWord[2];
-#define UGETW(w) ((w)[0] | ((w)[1] << 8))
-#define USETW(w,v) ((w)[0] = (u_int8_t)(v), (w)[1] = (u_int8_t)((v) >> 8))
-#define USETW2(w,h,l) ((w)[0] = (u_int8_t)(l), (w)[1] = (u_int8_t)(h))
-typedef u_int8_t uDWord[4];
-#define UGETDW(w) ((w)[0] | ((w)[1] << 8) | ((w)[2] << 16) | ((w)[3] << 24))
-#define USETDW(w,v) ((w)[0] = (u_int8_t)(v), \
- (w)[1] = (u_int8_t)((v) >> 8), \
- (w)[2] = (u_int8_t)((v) >> 16), \
- (w)[3] = (u_int8_t)((v) >> 24))
-/*
- * On little-endian machines that can handle unanliged accesses
- * (e.g. i386) these macros can be replaced by the following.
- */
-#if 0
-#define UGETW(w) (*(u_int16_t *)(w))
-#define USETW(w,v) (*(u_int16_t *)(w) = (v))
-#endif
-
-typedef struct {
- uByte bmRequestType;
- uByte bRequest;
- uWord wValue;
- uWord wIndex;
- uWord wLength;
-} usb_device_request_t;
-
-#define UT_WRITE 0x00
-#define UT_READ 0x80
-#define UT_STANDARD 0x00
-#define UT_CLASS 0x20
-#define UT_VENDOR 0x40
-#define UT_DEVICE 0x00
-#define UT_INTERFACE 0x01
-#define UT_ENDPOINT 0x02
-#define UT_OTHER 0x03
-
-#define UT_READ_DEVICE (UT_READ | UT_STANDARD | UT_DEVICE)
-#define UT_READ_INTERFACE (UT_READ | UT_STANDARD | UT_INTERFACE)
-#define UT_READ_ENDPOINT (UT_READ | UT_STANDARD | UT_ENDPOINT)
-#define UT_WRITE_DEVICE (UT_WRITE | UT_STANDARD | UT_DEVICE)
-#define UT_WRITE_INTERFACE (UT_WRITE | UT_STANDARD | UT_INTERFACE)
-#define UT_WRITE_ENDPOINT (UT_WRITE | UT_STANDARD | UT_ENDPOINT)
-#define UT_READ_CLASS_DEVICE (UT_READ | UT_CLASS | UT_DEVICE)
-#define UT_READ_CLASS_INTERFACE (UT_READ | UT_CLASS | UT_INTERFACE)
-#define UT_READ_CLASS_OTHER (UT_READ | UT_CLASS | UT_OTHER)
-#define UT_WRITE_CLASS_DEVICE (UT_WRITE | UT_CLASS | UT_DEVICE)
-#define UT_WRITE_CLASS_INTERFACE (UT_WRITE | UT_CLASS | UT_INTERFACE)
-#define UT_WRITE_CLASS_OTHER (UT_WRITE | UT_CLASS | UT_OTHER)
-#define UT_READ_VENDOR_DEVICE (UT_READ | UT_VENDOR | UT_DEVICE)
-#define UT_READ_VENDOR_INTERFACE (UT_READ | UT_VENDOR | UT_INTERFACE)
-#define UT_READ_VENDOR_OTHER (UT_READ | UT_VENDOR | UT_OTHER)
-#define UT_WRITE_VENDOR_DEVICE (UT_WRITE | UT_VENDOR | UT_DEVICE)
-#define UT_WRITE_VENDOR_INTERFACE (UT_WRITE | UT_VENDOR | UT_INTERFACE)
-#define UT_WRITE_VENDOR_OTHER (UT_WRITE | UT_VENDOR | UT_OTHER)
-
-/* Requests */
-#define UR_GET_STATUS 0x00
-#define UR_CLEAR_FEATURE 0x01
-#define UR_SET_FEATURE 0x03
-#define UR_SET_ADDRESS 0x05
-#define UR_GET_DESCRIPTOR 0x06
-#define UDESC_DEVICE 1
-#define UDESC_CONFIG 2
-#define UDESC_STRING 3
-#define UDESC_INTERFACE 4
-#define UDESC_ENDPOINT 5
-#define UR_SET_DESCRIPTOR 0x07
-#define UR_GET_CONFIG 0x08
-#define UR_SET_CONFIG 0x09
-#define UR_GET_INTERFACE 0x0a
-#define UR_SET_INTERFACE 0x0b
-#define UR_SYNCH_FRAME 0x0c
-
-/* Feature numbers */
-#define UF_ENDPOINT_HALT 0
-#define UF_DEVICE_REMOTE_WAKEUP 1
-
-#define USB_MAX_IPACKET 8 /* maximum size of the initial packet */
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bDescriptorSubtype;
-} usb_descriptor_t;
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uWord bcdUSB;
- uByte bDeviceClass;
- uByte bDeviceSubClass;
- uByte bDeviceProtocol;
- uByte bMaxPacketSize;
- /* The fields below are not part of the initial descriptor. */
- uWord idVendor;
- uWord idProduct;
- uWord bcdDevice;
- uByte iManufacturer;
- uByte iProduct;
- uByte iSerialNumber;
- uByte bNumConfigurations;
-} usb_device_descriptor_t;
-#define USB_DEVICE_DESCRIPTOR_SIZE 18
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uWord wTotalLength;
- uByte bNumInterface;
- uByte bConfigurationValue;
- uByte iConfiguration;
- uByte bmAttributes;
-#define UC_BUS_POWERED 0x80
-#define UC_SELF_POWERED 0x40
-#define UC_REMOTE_WAKEUP 0x20
- uByte bMaxPower; /* max current in 2 mA units */
-#define UC_POWER_FACTOR 2
-} usb_config_descriptor_t;
-#define USB_CONFIG_DESCRIPTOR_SIZE 9
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bInterfaceNumber;
- uByte bAlternateSetting;
- uByte bNumEndpoints;
- uByte bInterfaceClass;
- uByte bInterfaceSubClass;
- uByte bInterfaceProtocol;
- uByte iInterface;
-} usb_interface_descriptor_t;
-#define USB_INTERFACE_DESCRIPTOR_SIZE 9
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bEndpointAddress;
-#define UE_IN 0x80
-#define UE_OUT 0x00
-#define UE_ADDR 0x0f
-#define UE_GET_ADDR(a) ((a) & UE_ADDR)
-#define UE_GET_IN(a) (((a) >> 7) & 1)
- uByte bmAttributes;
-#define UE_XFERTYPE 0x03
-#define UE_CONTROL 0x00
-#define UE_ISOCHRONOUS 0x01
-#define UE_BULK 0x02
-#define UE_INTERRUPT 0x03
-#define UE_ISO_TYPE 0x0c
-#define UE_ISO_ASYNC 0x04
-#define UE_ISO_ADAPT 0x08
-#define UE_ISO_SYNC 0x0c
- uWord wMaxPacketSize;
- uByte bInterval;
-} usb_endpoint_descriptor_t;
-#define USB_ENDPOINT_DESCRIPTOR_SIZE 7
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uWord bString[127];
-} usb_string_descriptor_t;
-#define USB_MAX_STRING_LEN 128
-#define USB_LANGUAGE_TABLE 0 /* # of the string language id table */
-
-/* Hub specific request */
-#define UR_GET_BUS_STATE 0x02
-
-/* Hub features */
-#define UHF_C_HUB_LOCAL_POWER 0
-#define UHF_C_HUB_OVER_CURRENT 1
-#define UHF_PORT_CONNECTION 0
-#define UHF_PORT_ENABLE 1
-#define UHF_PORT_SUSPEND 2
-#define UHF_PORT_OVER_CURRENT 3
-#define UHF_PORT_RESET 4
-#define UHF_PORT_POWER 8
-#define UHF_PORT_LOW_SPEED 9
-#define UHF_C_PORT_CONNECTION 16
-#define UHF_C_PORT_ENABLE 17
-#define UHF_C_PORT_SUSPEND 18
-#define UHF_C_PORT_OVER_CURRENT 19
-#define UHF_C_PORT_RESET 20
-
-typedef struct {
- uByte bDescLength;
- uByte bDescriptorType;
- uByte bNbrPorts;
- uWord wHubCharacteristics;
-#define UHD_PWR 0x03
-#define UHD_PWR_GANGED 0x00
-#define UHD_PWR_INDIVIDUAL 0x01
-#define UHD_PWR_NO_SWITCH 0x02
-#define UHD_COMPOUND 0x04
-#define UHD_OC 0x18
-#define UHD_OC_GLOBAL 0x00
-#define UHD_OC_INDIVIDUAL 0x08
-#define UHD_OC_NONE 0x10
- uByte bPwrOn2PwrGood; /* delay in 2 ms units */
-#define UHD_PWRON_FACTOR 2
- uByte bHubContrCurrent;
- uByte DeviceRemovable[32]; /* max 255 ports */
-#define UHD_NOT_REMOV(desc, i) \
- (((desc)->DeviceRemovable[(i)/8] >> ((i) % 8)) & 1)
- /* deprecated uByte PortPowerCtrlMask[]; */
-} usb_hub_descriptor_t;
-#define USB_HUB_DESCRIPTOR_SIZE 8
-
-typedef struct {
- uWord wStatus;
-/* Device status flags */
-#define UDS_SELF_POWERED 0x0001
-#define UDS_REMOTE_WAKEUP 0x0002
-/* Endpoint status flags */
-#define UES_HALT 0x0001
-} usb_status_t;
-
-typedef struct {
- uWord wHubStatus;
-#define UHS_LOCAL_POWER 0x0001
-#define UHS_OVER_CURRENT 0x0002
- uWord wHubChange;
-} usb_hub_status_t;
-
-typedef struct {
- uWord wPortStatus;
-#define UPS_CURRENT_CONNECT_STATUS 0x0001
-#define UPS_PORT_ENABLED 0x0002
-#define UPS_SUSPEND 0x0004
-#define UPS_OVERCURRENT_INDICATOR 0x0008
-#define UPS_RESET 0x0010
-#define UPS_PORT_POWER 0x0100
-#define UPS_LOW_SPEED 0x0200
- uWord wPortChange;
-#define UPS_C_CONNECT_STATUS 0x0001
-#define UPS_C_PORT_ENABLED 0x0002
-#define UPS_C_SUSPEND 0x0004
-#define UPS_C_OVERCURRENT_INDICATOR 0x0008
-#define UPS_C_PORT_RESET 0x0010
-} usb_port_status_t;
-
-#define UDESC_CS_DEVICE 0x21
-#define UDESC_CS_CONFIG 0x22
-#define UDESC_CS_STRING 0x23
-#define UDESC_CS_INTERFACE 0x24
-#define UDESC_CS_ENDPOINT 0x25
-
-#define UDESC_HUB 0x29
-
-#define UCLASS_UNSPEC 0
-#define UCLASS_AUDIO 1
-#define USUBCLASS_AUDIOCONTROL 1
-#define USUBCLASS_AUDIOSTREAM 2
-#define UCLASS_CDC 2 /* communication */
-#define USUBCLASS_ABSTRACT_CONTROL_MODEL 2
-#define UPROTO_CDC_AT 1
-#define UCLASS_HID 3
-#define USUBCLASS_BOOT 1
-#define UCLASS_PRINTER 7
-#define USUBCLASS_PRINTER 1
-#define UPROTO_PRINTER_UNI 1
-#define UPROTO_PRINTER_BI 2
-#define UCLASS_HUB 9
-#define USUBCLASS_HUB 0
-#define UCLASS_DATA 10
-
-#define USB_HUB_MAX_DEPTH 5
-
-/*
- * Minimum time a device needs to be powered down to go through
- * a power cycle. XXX Are these time in the spec?
- */
-#define USB_POWER_DOWN_TIME 200 /* ms */
-#define USB_PORT_POWER_DOWN_TIME 100 /* ms */
-
-#if 0
-/* These are the values from the spec. */
-#define USB_PORT_RESET_DELAY 10 /* ms */
-#define USB_PORT_RESET_SETTLE 10 /* ms */
-#define USB_PORT_POWERUP_DELAY 100 /* ms */
-#define USB_SET_ADDRESS_SETTLE 2 /* ms */
-#else
-/* Allow for marginal (i.e. non-conforming) devices. */
-#define USB_PORT_RESET_DELAY 20 /* ms */
-#define USB_PORT_RESET_RECOVERY 50 /* ms */
-#define USB_PORT_POWERUP_DELAY 200 /* ms */
-#define USB_SET_ADDRESS_SETTLE 10 /* ms */
-#endif
-
-#define USB_MIN_POWER 100 /* mA */
-#define USB_MAX_POWER 500 /* mA */
-
-
-#define USB_BUS_RESET_DELAY 100 /* ms XXX?*/
-#define USB_RESUME_DELAY 10 /* ms XXX?*/
-
-/*** ioctl() related stuff ***/
-
-struct usb_ctl_request {
- int addr;
- usb_device_request_t request;
- void *data;
- int flags;
-/* XXX must match flags in usbdi.h */
-#define USBD_SHORT_XFER_OK 0x04
- int actlen; /* actual length transferred */
-};
-
-struct usb_alt_interface {
- int config_index;
- int interface_index;
- int alt_no;
-};
-
-#define USB_CURRENT_CONFIG_INDEX (-1)
-#define USB_CURRENT_ALT_INDEX (-1)
-
-struct usb_config_desc {
- int config_index;
- usb_config_descriptor_t desc;
-};
-
-struct usb_interface_desc {
- int config_index;
- int interface_index;
- int alt_index;
- usb_interface_descriptor_t desc;
-};
-
-struct usb_endpoint_desc {
- int config_index;
- int interface_index;
- int alt_index;
- int endpoint_index;
- usb_endpoint_descriptor_t desc;
-};
-
-struct usb_full_desc {
- int config_index;
- u_int size;
- u_char *data;
-};
-
-struct usb_string_desc {
- int string_index;
- int language_id;
- usb_string_descriptor_t desc;
-};
-
-struct usb_ctl_report_desc {
- int size;
- u_char data[1024]; /* filled data size will vary */
-};
-
-struct usb_device_info {
- u_int8_t addr; /* device address */
- char product[USB_MAX_STRING_LEN];
- char vendor[USB_MAX_STRING_LEN];
- char revision[8];
- u_int16_t productNo;
- u_int16_t vendorNo;
- u_int8_t class;
- u_int8_t config;
- u_int8_t lowspeed;
- int power; /* power consumption in mA, 0 if selfpowered */
- int nports;
- u_int8_t ports[16];/* hub only: addresses of devices on ports */
-#define USB_PORT_ENABLED 0xff
-#define USB_PORT_SUSPENDED 0xfe
-#define USB_PORT_POWERED 0xfd
-#define USB_PORT_DISABLED 0xfc
-};
-
-struct usb_ctl_report {
- int report;
- u_char data[1024]; /* filled data size will vary */
-};
-
-struct usb_device_stats {
- u_long requests[4]; /* indexed by transfer type UE_* */
-};
-
-/* USB controller */
-#define USB_REQUEST _IOWR('U', 1, struct usb_ctl_request)
-#define USB_SETDEBUG _IOW ('U', 2, int)
-#define USB_DISCOVER _IO ('U', 3)
-#define USB_DEVICEINFO _IOWR('U', 4, struct usb_device_info)
-#define USB_DEVICESTATS _IOR ('U', 5, struct usb_device_stats)
-
-/* Generic HID device */
-#define USB_GET_REPORT_DESC _IOR ('U', 21, struct usb_ctl_report_desc)
-#define USB_SET_IMMED _IOW ('U', 22, int)
-#define USB_GET_REPORT _IOWR('U', 23, struct usb_ctl_report)
-
-/* Generic USB device */
-#define USB_GET_CONFIG _IOR ('U', 100, int)
-#define USB_SET_CONFIG _IOW ('U', 101, int)
-#define USB_GET_ALTINTERFACE _IOWR('U', 102, struct usb_alt_interface)
-#define USB_SET_ALTINTERFACE _IOWR('U', 103, struct usb_alt_interface)
-#define USB_GET_NO_ALT _IOWR('U', 104, struct usb_alt_interface)
-#define USB_GET_DEVICE_DESC _IOR ('U', 105, usb_device_descriptor_t)
-#define USB_GET_CONFIG_DESC _IOWR('U', 106, struct usb_config_desc)
-#define USB_GET_INTERFACE_DESC _IOWR('U', 107, struct usb_interface_desc)
-#define USB_GET_ENDPOINT_DESC _IOWR('U', 108, struct usb_endpoint_desc)
-#define USB_GET_FULL_DESC _IOWR('U', 109, struct usb_full_desc)
-#define USB_GET_STRING_DESC _IOWR('U', 110, struct usb_string_desc)
-#define USB_DO_REQUEST _IOWR('U', 111, struct usb_ctl_request)
-#define USB_GET_DEVICEINFO _IOR ('U', 112, struct usb_device_info)
-#define USB_SET_SHORT_XFER _IOW ('U', 113, int)
-
-#endif /* _USB_H_ */
diff --git a/sys/dev/usb/usb_if.m b/sys/dev/usb/usb_if.m
deleted file mode 100644
index fa5649c555dad..0000000000000
--- a/sys/dev/usb/usb_if.m
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright (c) 1992-1998 Nick Hibma <hibma@skylink.it>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer,
-# without modification, immediately at the beginning of the file.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-# 3. The name of the author may not be used to endorse or promote products
-# derived from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# $Id$
-#
-
-# USB interface description
-#
-
-INTERFACE usb;
-
-# The device should start probing for new children again
-#
-METHOD int reconfigure {
- device_t dev;
-};
-
diff --git a/sys/dev/usb/usb_mem.h b/sys/dev/usb/usb_mem.h
deleted file mode 100644
index f6ffb96879457..0000000000000
--- a/sys/dev/usb/usb_mem.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* $NetBSD: usb_mem.h,v 1.4 1999/01/09 12:16:54 augustss Exp $ */
-/* FreeBSD $Id: usb_mem.h,v 1.4 1999/01/07 23:31:38 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if defined(__NetBSD__)
-typedef struct usb_block_dma {
- bus_dma_tag_t tag;
- bus_dmamap_t map;
- caddr_t kaddr;
- bus_dma_segment_t segs[1];
- int nsegs;
- size_t size;
- size_t align;
- int fullblock;
- LIST_ENTRY(usb_block_dma) next;
-} usb_dma_block_t;
-
-typedef struct {
- usb_dma_block_t *block;
- u_int offs;
-} usb_dma_t;
-
-#define DMAADDR(dma) ((dma)->block->segs[0].ds_addr + (dma)->offs)
-#define KERNADDR(dma) ((void *)((dma)->block->kaddr + (dma)->offs))
-
-usbd_status usb_allocmem __P((bus_dma_tag_t, size_t, size_t, usb_dma_t *));
-void usb_freemem __P((bus_dma_tag_t, usb_dma_t *));
-
-#elif defined(__FreeBSD__)
-
-/*
- * FreeBSD does not have special functions for dma memory, so let's keep it
- * simple for now.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/queue.h>
-#include <sys/proc.h>
-#include <sys/buf.h>
-#include <sys/malloc.h>
-#include <sys/kernel.h>
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-#include <machine/pmap.h> /* for vtophys */
-
-typedef void * usb_dma_t;
-
-#define usb_allocmem(t,s,a,p) (*(p) = malloc(s, M_USB, M_NOWAIT), (*(p) == NULL? USBD_NOMEM: USBD_NORMAL_COMPLETION))
-#define usb_freemem(t,p) (free(*(p), M_USB))
-
-#define DMAADDR(dma) (vtophys(*(dma)))
-#define KERNADDR(dma) ((void *) *(dma))
-#endif
-
diff --git a/sys/dev/usb/usb_port.h b/sys/dev/usb/usb_port.h
deleted file mode 100644
index d7bd4f0040ddf..0000000000000
--- a/sys/dev/usb/usb_port.h
+++ /dev/null
@@ -1,217 +0,0 @@
-/* $NetBSD: usb_port.h,v 1.5 1999/01/08 11:58:25 augustss Exp $ */
-/* $FreeBSD$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-/*
- * Macro's to cope with the differences between operating systems.
- */
-
-/*
- * NetBSD
- */
-
-#if defined(__NetBSD__)
-#include "opt_usbverbose.h"
-
-#define USBDEVNAME(bdev) ((bdev).dv_xname)
-
-typedef struct device bdevice; /* base device */
-
-#define usb_timeout(f, d, t, h) timeout((f), (d), (t))
-#define usb_untimeout(f, d, h) untimeout((f), (d))
-
-#define USB_DECLARE_DRIVER_INIT(dname, _2) \
-int __CONCAT(dname,_match) __P((struct device *, struct cfdata *, void *)); \
-void __CONCAT(dname,_attach) __P((struct device *, struct device *, void *)); \
-\
-extern struct cfdriver __CONCAT(dname,_cd); \
-\
-struct cfattach __CONCAT(dname,_ca) = { \
- sizeof(struct __CONCAT(dname,_softc)), \
- __CONCAT(dname,_match), \
- __CONCAT(dname,_attach) \
-}
-
-#define USB_MATCH(dname) \
-int \
-__CONCAT(dname,_match)(parent, match, aux) \
- struct device *parent; \
- struct cfdata *match; \
- void *aux;
-
-#define USB_MATCH_START(dname, uaa) \
- struct usb_attach_arg *uaa = aux
-
-#define USB_ATTACH(dname) \
-void \
-__CONCAT(dname,_attach)(parent, self, aux) \
- struct device *parent; \
- struct device *self; \
- void *aux;
-
-#define USB_ATTACH_START(dname, sc, uaa) \
- struct __CONCAT(dname,_softc) *sc = \
- (struct __CONCAT(dname,_softc) *)self; \
- struct usb_attach_arg *uaa = aux
-
-/* Returns from attach */
-#define USB_ATTACH_ERROR_RETURN return
-#define USB_ATTACH_SUCCESS_RETURN return
-
-#define USB_ATTACH_SETUP printf("\n")
-
-#define USB_GET_SC_OPEN(dname, unit, sc) \
- struct __CONCAT(dname,_softc) *sc; \
- if (unit >= __CONCAT(dname,_cd).cd_ndevs) \
- return (ENXIO); \
- sc = __CONCAT(dname,_cd).cd_devs[unit]; \
- if (!sc) \
- return (ENXIO)
-
-#define USB_GET_SC(dname, unit, sc) \
- struct __CONCAT(dname,_softc) *sc = __CONCAT(dname,_cd).cd_devs[unit]
-
-#define USB_DO_ATTACH(dev, bdev, parent, args, print, sub) \
- ((dev)->softc = config_found_sm(parent, args, print, sub))
-
-
-
-
-#elif defined(__FreeBSD__)
-/*
- * FreeBSD
- */
-
-#include "opt_usb.h"
-/*
- * The following is not a type def to avoid error messages
- * because of includes in the wrong order.
- */
-#define bdevice device_t
-#define USBDEVNAME(bdev) usbd_devname(&bdev)
-
-/* XXX Change this when FreeBSD has memset
- */
-#define memset(d, v, s) \
- do{ \
- if ((v) == 0) \
- bzero((d), (s)); \
- else \
- panic("Non zero filler for memset, cannot handle!"); \
- } while (0)
-
-
-#define usb_timeout(f, d, t, h) ((h) = timeout((f), (d), (t)))
-#define usb_untimeout(f, d, h) untimeout((f), (d), (h))
-
-#define USB_DECLARE_DRIVER_INIT(dname, init...) \
-static device_probe_t __CONCAT(dname,_match); \
-static device_attach_t __CONCAT(dname,_attach); \
-static device_detach_t __CONCAT(dname,_detach); \
-\
-static devclass_t __CONCAT(dname,_devclass); \
-\
-static device_method_t __CONCAT(dname,_methods)[] = { \
- DEVMETHOD(device_probe, __CONCAT(dname,_match)), \
- DEVMETHOD(device_attach, __CONCAT(dname,_attach)), \
- DEVMETHOD(device_detach, __CONCAT(dname,_detach)), \
- init, \
- {0,0} \
-}; \
-\
-static driver_t __CONCAT(dname,_driver) = { \
- #dname, \
- __CONCAT(dname,_methods), \
- DRIVER_TYPE_MISC, \
- sizeof(struct __CONCAT(dname,_softc)) \
-}
-
-#define USB_MATCH(dname) \
-static int \
-__CONCAT(dname,_match)(device_t device)
-
-#define USB_MATCH_START(dname, uaa) \
- struct usb_attach_arg *uaa = device_get_ivars(device)
-
-#define USB_ATTACH(dname) \
-static int \
-__CONCAT(dname,_attach)(device_t self)
-
-#define USB_ATTACH_START(dname, sc, uaa) \
- struct __CONCAT(dname,_softc) *sc = device_get_softc(self); \
- struct usb_attach_arg *uaa = device_get_ivars(self)
-
-/* Returns from attach */
-#define USB_ATTACH_ERROR_RETURN return ENXIO
-#define USB_ATTACH_SUCCESS_RETURN return 0
-
-#define USB_ATTACH_SETUP \
- usbd_device_set_desc(self, devinfo); \
- sc->sc_dev = self
-
-#define USB_GET_SC_OPEN(dname, unit, sc) \
- struct __CONCAT(dname,_softc) *sc = \
- devclass_get_softc(__CONCAT(dname,_devclass), unit); \
- if (!sc) \
- return (ENXIO)
-
-#define USB_GET_SC(dname, unit, sc) \
- struct __CONCAT(dname,_softc) *sc = \
- devclass_get_softc(__CONCAT(dname,_devclass), unit)
-
-#define USB_DO_ATTACH(dev, bdev, parent, args, print, sub) \
- (device_probe_and_attach((bdev)) == 0 ? ((dev)->softc = (bdev)) : 0)
-
-/* conversion from one type of queue to the other */
-#define SIMPLEQ_REMOVE_HEAD STAILQ_REMOVE_HEAD_UNTIL
-#define SIMPLEQ_INSERT_HEAD STAILQ_INSERT_HEAD
-#define SIMPLEQ_INSERT_TAIL STAILQ_INSERT_TAIL
-#define SIMPLEQ_NEXT STAILQ_NEXT
-#define SIMPLEQ_FIRST STAILQ_FIRST
-#define SIMPLEQ_HEAD STAILQ_HEAD
-#define SIMPLEQ_INIT STAILQ_INIT
-#define SIMPLEQ_ENTRY STAILQ_ENTRY
-
-#endif /* __FreeBSD__ */
-
-
-
-#define USB_DECLARE_DRIVER(dname) \
- USB_DECLARE_DRIVER_INIT(dname, {0,0} )
diff --git a/sys/dev/usb/usb_quirks.c b/sys/dev/usb/usb_quirks.c
deleted file mode 100644
index e7c8208abce19..0000000000000
--- a/sys/dev/usb/usb_quirks.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $NetBSD: usb_quirks.c,v 1.8 1999/01/08 11:58:25 augustss Exp $ */
-/* FreeBSD $Id: usb_quirks.c,v 1.5 1999/01/07 23:31:39 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#if defined(__FreeBSD__)
-#include <sys/bus.h>
-#endif
-
-#include <dev/usb/usb.h>
-
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-
-#ifdef USB_DEBUG
-extern int usbdebug;
-#endif
-
-struct usbd_quirk_entry {
- u_int16_t idVendor;
- u_int16_t idProduct;
- u_int16_t bcdDevice;
- struct usbd_quirks quirks;
-} quirks[] = {
- { USB_VENDOR_GENIUS, USB_PRODUCT_GENIUS_NICHE, 0x100, { UQ_NO_SET_PROTO}},
- { USB_VENDOR_INSIDEOUT,USB_PRODUCT_INSIDEOUT_EDGEPORT4,
- 0x094, { UQ_SWAP_UNICODE}},
- { USB_VENDOR_UNIXTAR, USB_PRODUCT_UNIXTAR_UTUSB41, 0x100, { UQ_HUB_POWER }},
- { USB_VENDOR_BTC, USB_PRODUCT_BTC_BTC7932, 0x100, { UQ_NO_STRINGS }},
- { USB_VENDOR_ADS, USB_PRODUCT_ADS_ENET, 0x002, { UQ_NO_STRINGS }},
- { USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1, 0x101, { UQ_NO_STRINGS }},
- { USB_VENDOR_JAZZ, USB_PRODUCT_JAZZ_J6502, 0x0a2, { UQ_BAD_ADC }},
- { 0, 0, 0, { 0 } }
-};
-
-struct usbd_quirks usbd_no_quirk = { 0 };
-
-struct usbd_quirks *
-usbd_find_quirk(d)
- usb_device_descriptor_t *d;
-{
- struct usbd_quirk_entry *t;
-
- for (t = quirks; t->idVendor != 0; t++) {
- if (t->idVendor == UGETW(d->idVendor) &&
- t->idProduct == UGETW(d->idProduct) &&
- t->bcdDevice == UGETW(d->bcdDevice))
- break;
- }
-#ifdef USB_DEBUG
- if (usbdebug && t->quirks.uq_flags)
- printf("usbd_find_quirk 0x%04x/0x%04x/%x: %d\n",
- UGETW(d->idVendor), UGETW(d->idProduct),
- UGETW(d->bcdDevice), t->quirks.uq_flags);
-#endif
- return (&t->quirks);
-}
diff --git a/sys/dev/usb/usb_quirks.h b/sys/dev/usb/usb_quirks.h
deleted file mode 100644
index 07935d58143f6..0000000000000
--- a/sys/dev/usb/usb_quirks.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* $NetBSD: usb_quirks.h,v 1.5 1998/12/29 15:23:59 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct usbd_quirks {
- u_int32_t uq_flags; /* Device problems: */
-#define UQ_NO_SET_PROTO 0x01 /* cannot handle SET PROTOCOL. */
-#define UQ_SWAP_UNICODE 0x02 /* has some Unicode strings swapped. */
-#define UQ_HUB_POWER 0x04 /* does not respond correctly to get
- device status; use get hub status. */
-#define UQ_NO_STRINGS 0x08 /* string descriptors are broken. */
-#define UQ_BAD_ADC 0x10 /* bad audio spec version number. */
-};
-
-extern struct usbd_quirks usbd_no_quirk;
-
-struct usbd_quirks *usbd_find_quirk __P((usb_device_descriptor_t *));
diff --git a/sys/dev/usb/usb_subr.c b/sys/dev/usb/usb_subr.c
deleted file mode 100644
index d903c07951642..0000000000000
--- a/sys/dev/usb/usb_subr.c
+++ /dev/null
@@ -1,1127 +0,0 @@
-/* $NetBSD: usb_subr.c,v 1.27 1999/01/08 11:58:25 augustss Exp $ */
-/* FreeBSD $Id: usb_subr.c,v 1.6 1999/01/07 23:31:40 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#elif defined(__FreeBSD__)
-#include <sys/module.h>
-#include <sys/bus.h>
-#endif
-#include <sys/proc.h>
-#include <sys/select.h>
-
-#include <dev/usb/usb.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdivar.h>
-#include <dev/usb/usbdevs.h>
-#include <dev/usb/usb_quirks.h>
-
-#if defined(__FreeBSD__)
-#include <machine/clock.h>
-#define delay(d) DELAY(d)
-#endif
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (usbdebug) printf x
-#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
-extern int usbdebug;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-static usbd_status usbd_set_config __P((usbd_device_handle, int));
-char *usbd_get_string __P((usbd_device_handle, int, char *));
-int usbd_getnewaddr __P((usbd_bus_handle bus));
-#if defined(__NetBSD__)
-int usbd_print __P((void *aux, const char *pnp));
-int usbd_submatch __P((bdevice *, struct cfdata *cf, void *));
-#endif
-void usbd_free_iface_data __P((usbd_device_handle dev, int ifcno));
-void usbd_kill_pipe __P((usbd_pipe_handle));
-usbd_status usbd_probe_and_attach
- __P((bdevice *parent, usbd_device_handle dev, int port, int addr));
-
-
-#ifdef USBVERBOSE
-typedef u_int16_t usb_vendor_id_t;
-typedef u_int16_t usb_product_id_t;
-
-/*
- * Descriptions of of known vendors and devices ("products").
- */
-struct usb_knowndev {
- usb_vendor_id_t vendor;
- usb_product_id_t product;
- int flags;
- char *vendorname, *productname;
-};
-#define USB_KNOWNDEV_NOPROD 0x01 /* match on vendor only */
-
-#include <dev/usb/usbdevs_data.h>
-#endif /* USBVERBOSE */
-
-#ifdef USB_DEBUG
-char *usbd_error_strs[] = {
- "NORMAL_COMPLETION",
- "IN_PROGRESS",
- "PENDING_REQUESTS",
- "NOT_STARTED",
- "INVAL",
- "IS_IDLE",
- "NOMEM",
- "CANCELLED",
- "BAD_ADDRESS",
- "IN_USE",
- "INTERFACE_NOT_ACTIVE",
- "NO_ADDR",
- "SET_ADDR_FAILED",
- "NO_POWER",
- "TOO_DEEP",
- "IOERROR",
- "NOT_CONFIGURED",
- "TIMEOUT",
- "SHORT_XFER",
- "STALLED",
- "XXX",
-};
-#endif
-
-usbd_status
-usbd_get_string_desc(dev, sindex, langid, sdesc)
- usbd_device_handle dev;
- int sindex;
- int langid;
- usb_string_descriptor_t *sdesc;
-{
- usb_device_request_t req;
- usbd_status r;
-
- req.bmRequestType = UT_READ_DEVICE;
- req.bRequest = UR_GET_DESCRIPTOR;
- USETW2(req.wValue, UDESC_STRING, sindex);
- USETW(req.wIndex, langid);
- USETW(req.wLength, 1); /* only size byte first */
- r = usbd_do_request(dev, &req, sdesc);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- USETW(req.wLength, sdesc->bLength); /* the whole string */
- return (usbd_do_request(dev, &req, sdesc));
-}
-
-char *
-usbd_get_string(dev, si, buf)
- usbd_device_handle dev;
- int si;
- char *buf;
-{
- int swap = dev->quirks->uq_flags & UQ_SWAP_UNICODE;
- usb_string_descriptor_t us;
- char *s;
- int i, n;
- u_int16_t c;
- usbd_status r;
-
- if (si == 0)
- return (0);
- if (dev->quirks->uq_flags & UQ_NO_STRINGS)
- return (0);
- if (dev->langid == USBD_NOLANG) {
- /* Set up default language */
- r = usbd_get_string_desc(dev, USB_LANGUAGE_TABLE, 0, &us);
- if (r != USBD_NORMAL_COMPLETION || us.bLength < 4) {
- dev->langid = 0; /* Well, just pick English then */
- } else {
- /* Pick the first language as the default. */
- dev->langid = UGETW(us.bString[0]);
- }
- }
- r = usbd_get_string_desc(dev, si, dev->langid, &us);
- if (r != USBD_NORMAL_COMPLETION)
- return (0);
- s = buf;
- n = us.bLength / 2 - 1;
- for (i = 0; i < n; i++) {
- c = UGETW(us.bString[i]);
- /* Convert from Unicode, handle buggy strings. */
- if ((c & 0xff00) == 0)
- *s++ = c;
- else if ((c & 0x00ff) == 0 && swap)
- *s++ = c >> 8;
- else
- *s++ = '?';
- }
- *s++ = 0;
- return buf;
-}
-
-void
-usbd_devinfo_vp(dev, v, p)
- usbd_device_handle dev;
- char *v, *p;
-{
- usb_device_descriptor_t *udd = &dev->ddesc;
- char *vendor = 0, *product = 0;
-#ifdef USBVERBOSE
- struct usb_knowndev *kdp;
-#endif
-
- vendor = usbd_get_string(dev, udd->iManufacturer, v);
- product = usbd_get_string(dev, udd->iProduct, p);
-#ifdef USBVERBOSE
- if (!vendor) {
- for(kdp = usb_knowndevs;
- kdp->vendorname != NULL;
- kdp++) {
- if (kdp->vendor == UGETW(udd->idVendor) &&
- (kdp->product == UGETW(udd->idProduct) ||
- (kdp->flags & USB_KNOWNDEV_NOPROD) != 0))
- break;
- }
- if (kdp->vendorname == NULL)
- vendor = product = NULL;
- else {
- vendor = kdp->vendorname;
- product = (kdp->flags & USB_KNOWNDEV_NOPROD) == 0 ?
- kdp->productname : NULL;
- }
- }
-#endif
- if (vendor)
- strcpy(v, vendor);
- else
- sprintf(v, "vendor 0x%04x", UGETW(udd->idVendor));
- if (product)
- strcpy(p, product);
- else
- sprintf(p, "product 0x%04x", UGETW(udd->idProduct));
-}
-
-int
-usbd_printBCD(cp, bcd)
- char *cp;
- int bcd;
-{
- return (sprintf(cp, "%x.%02x", bcd >> 8, bcd & 0xff));
-}
-
-void
-usbd_devinfo(dev, showclass, cp)
- usbd_device_handle dev;
- int showclass;
- char *cp;
-{
- usb_device_descriptor_t *udd = &dev->ddesc;
- char vendor[USB_MAX_STRING_LEN];
- char product[USB_MAX_STRING_LEN];
- int bcdDevice, bcdUSB;
-
- usbd_devinfo_vp(dev, vendor, product);
- cp += sprintf(cp, "%s %s", vendor, product);
- if (showclass)
- cp += sprintf(cp, ", class %d/%d",
- udd->bDeviceClass, udd->bDeviceSubClass);
- bcdUSB = UGETW(udd->bcdUSB);
- bcdDevice = UGETW(udd->bcdDevice);
- cp += sprintf(cp, ", rev ");
- cp += usbd_printBCD(cp, bcdUSB);
- *cp++ = '/';
- cp += usbd_printBCD(cp, bcdDevice);
- cp += sprintf(cp, ", addr %d", dev->address);
- *cp = 0;
-}
-
-/* Delay for a certain number of ms */
-void
-usb_delay_ms(bus, ms)
- usbd_bus_handle bus;
- u_int ms;
-{
- /* Wait at least two clock ticks so we know the time has passed. */
- if (bus->use_polling)
- delay((ms+1) * 1000);
- else
- tsleep(&ms, PRIBIO, "usbdly", (ms*hz+999)/1000 + 1);
-}
-
-/* Delay given a device handle. */
-void
-usbd_delay_ms(dev, ms)
- usbd_device_handle dev;
- u_int ms;
-{
- usb_delay_ms(dev->bus, ms);
-}
-
-usbd_status
-usbd_reset_port(dev, port, ps)
- usbd_device_handle dev;
- int port;
- usb_port_status_t *ps;
-{
- usb_device_request_t req;
- usbd_status r;
- int n;
-
- req.bmRequestType = UT_WRITE_CLASS_OTHER;
- req.bRequest = UR_SET_FEATURE;
- USETW(req.wValue, UHF_PORT_RESET);
- USETW(req.wIndex, port);
- USETW(req.wLength, 0);
- r = usbd_do_request(dev, &req, 0);
- DPRINTFN(1,("usbd_reset_port: port %d reset done, error=%d(%s)\n",
- port, r, usbd_error_strs[r]));
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- n = 10;
- do {
- /* Wait for device to recover from reset. */
- usbd_delay_ms(dev, USB_PORT_RESET_DELAY);
- r = usbd_get_port_status(dev, port, ps);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("usbd_reset_port: get status failed %d\n",r));
- return (r);
- }
- } while ((UGETW(ps->wPortChange) & UPS_C_PORT_RESET) == 0 && --n > 0);
- if (n == 0) {
- printf("usbd_reset_port: timeout\n");
- return (USBD_IOERROR);
- }
- r = usbd_clear_port_feature(dev, port, UHF_C_PORT_RESET);
-#ifdef USB_DEBUG
- if (r != USBD_NORMAL_COMPLETION)
- DPRINTF(("usbd_reset_port: clear port feature failed %d\n",r));
-#endif
-
- /* Wait for the device to recover from reset. */
- usbd_delay_ms(dev, USB_PORT_RESET_RECOVERY);
- return (r);
-}
-
-usb_interface_descriptor_t *
-usbd_find_idesc(cd, ifaceidx, altidx)
- usb_config_descriptor_t *cd;
- int ifaceidx;
- int altidx;
-{
- char *p = (char *)cd;
- char *end = p + UGETW(cd->wTotalLength);
- usb_interface_descriptor_t *d;
- int curidx, lastidx, curaidx = 0;
-
- for (curidx = lastidx = -1; p < end; ) {
- d = (usb_interface_descriptor_t *)p;
- DPRINTFN(4,("usbd_find_idesc: idx=%d(%d) altidx=%d(%d) len=%d "
- "type=%d\n",
- ifaceidx, curidx, altidx, curaidx,
- d->bLength, d->bDescriptorType));
- if (d->bLength == 0) /* bad descriptor */
- break;
- p += d->bLength;
- if (p <= end && d->bDescriptorType == UDESC_INTERFACE) {
- if (d->bInterfaceNumber != lastidx) {
- lastidx = d->bInterfaceNumber;
- curidx++;
- curaidx = 0;
- } else
- curaidx++;
- if (ifaceidx == curidx && altidx == curaidx)
- return (d);
- }
- }
- return (0);
-}
-
-usb_endpoint_descriptor_t *
-usbd_find_edesc(cd, ifaceidx, altidx, endptidx)
- usb_config_descriptor_t *cd;
- int ifaceidx;
- int altidx;
- int endptidx;
-{
- char *p = (char *)cd;
- char *end = p + UGETW(cd->wTotalLength);
- usb_interface_descriptor_t *d;
- usb_endpoint_descriptor_t *e;
- int curidx;
-
- d = usbd_find_idesc(cd, ifaceidx, altidx);
- if (!d)
- return (0);
- if (endptidx >= d->bNumEndpoints) /* quick exit */
- return (0);
-
- curidx = -1;
- for (p = (char *)d + d->bLength; p < end; ) {
- e = (usb_endpoint_descriptor_t *)p;
- if (e->bLength == 0) /* bad descriptor */
- break;
- p += e->bLength;
- if (p <= end && e->bDescriptorType == UDESC_INTERFACE)
- return (0);
- if (p <= end && e->bDescriptorType == UDESC_ENDPOINT) {
- curidx++;
- if (curidx == endptidx)
- return (e);
- }
- }
- return (0);
-}
-
-usbd_status
-usbd_fill_iface_data(dev, ifaceidx, altidx)
- usbd_device_handle dev;
- int ifaceidx;
- int altidx;
-{
- usbd_interface_handle ifc = &dev->ifaces[ifaceidx];
- char *p, *end;
- int endpt, nendpt;
-
- DPRINTFN(4,("usbd_fill_iface_data: ifaceidx=%d altidx=%d\n",
- ifaceidx, altidx));
- ifc->device = dev;
- ifc->idesc = usbd_find_idesc(dev->cdesc, ifaceidx, altidx);
- if (ifc->idesc == 0)
- return (USBD_INVAL);
- ifc->index = ifaceidx;
- ifc->altindex = altidx;
- nendpt = ifc->idesc->bNumEndpoints;
- DPRINTFN(10,("usbd_fill_iface_data: found idesc n=%d\n", nendpt));
- if (nendpt != 0) {
- ifc->endpoints = malloc(nendpt * sizeof(struct usbd_endpoint),
- M_USB, M_NOWAIT);
- if (ifc->endpoints == 0)
- return (USBD_NOMEM);
- } else
- ifc->endpoints = 0;
- ifc->priv = 0;
- p = (char *)ifc->idesc + ifc->idesc->bLength;
- end = (char *)dev->cdesc + UGETW(dev->cdesc->wTotalLength);
-#define ed ((usb_endpoint_descriptor_t *)p)
- for (endpt = 0; endpt < nendpt; endpt++) {
- DPRINTFN(10,("usbd_fill_iface_data: endpt=%d\n", endpt));
- for (; p < end; p += ed->bLength) {
- ed = (usb_endpoint_descriptor_t *)p;
- DPRINTFN(10,("usbd_fill_iface_data: p=%p end=%p "
- "len=%d type=%d\n",
- p, end, ed->bLength, ed->bDescriptorType));
- if (p + ed->bLength <= end && ed->bLength != 0 &&
- ed->bDescriptorType == UDESC_ENDPOINT)
- goto found;
- if (ed->bDescriptorType == UDESC_INTERFACE ||
- ed->bLength == 0)
- break;
- }
- /* passed end, or bad desc */
- goto bad;
- found:
- ifc->endpoints[endpt].edesc = ed;
- ifc->endpoints[endpt].state = USBD_ENDPOINT_ACTIVE;
- ifc->endpoints[endpt].refcnt = 0;
- ifc->endpoints[endpt].toggle = 0;
- p += ed->bLength;
- }
-#undef ed
- LIST_INIT(&ifc->pipes);
- ifc->state = USBD_INTERFACE_ACTIVE;
- return (USBD_NORMAL_COMPLETION);
-
- bad:
- free(ifc->endpoints, M_USB);
- return (USBD_INVAL);
-}
-
-void
-usbd_free_iface_data(dev, ifcno)
- usbd_device_handle dev;
- int ifcno;
-{
- usbd_interface_handle ifc = &dev->ifaces[ifcno];
- if (ifc->endpoints)
- free(ifc->endpoints, M_USB);
-}
-
-static usbd_status
-usbd_set_config(dev, conf)
- usbd_device_handle dev;
- int conf;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_WRITE_DEVICE;
- req.bRequest = UR_SET_CONFIG;
- USETW(req.wValue, conf);
- USETW(req.wIndex, 0);
- USETW(req.wLength, 0);
- return (usbd_do_request(dev, &req, 0));
-}
-
-usbd_status
-usbd_set_config_no(dev, no, msg)
- usbd_device_handle dev;
- int no;
- int msg;
-{
- int index;
- usb_config_descriptor_t cd;
- usbd_status r;
-
- DPRINTFN(5,("usbd_set_config_no: %d\n", no));
- /* Figure out what config index to use. */
- for (index = 0; index < dev->ddesc.bNumConfigurations; index++) {
- r = usbd_get_config_desc(dev, index, &cd);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (cd.bConfigurationValue == no)
- return (usbd_set_config_index(dev, index, msg));
- }
- return (USBD_INVAL);
-}
-
-usbd_status
-usbd_set_config_index(dev, index, msg)
- usbd_device_handle dev;
- int index;
- int msg;
-{
- usb_status_t ds;
- usb_hub_status_t hs;
- usb_config_descriptor_t cd, *cdp;
- usbd_status r;
- int ifcidx, nifc, len, selfpowered, power;
-
- DPRINTFN(5,("usbd_set_config_index: dev=%p index=%d\n", dev, index));
-
- /* XXX check that all interfaces are idle */
- if (dev->config != 0) {
- DPRINTF(("usbd_set_config_index: free old config\n"));
- /* Free all configuration data structures. */
- nifc = dev->cdesc->bNumInterface;
- for (ifcidx = 0; ifcidx < nifc; ifcidx++)
- usbd_free_iface_data(dev, ifcidx);
- free(dev->ifaces, M_USB);
- free(dev->cdesc, M_USB);
- dev->ifaces = 0;
- dev->cdesc = 0;
- dev->config = 0;
- dev->state = USBD_DEVICE_ADDRESSED;
- }
-
- /* Figure out what config number to use. */
- r = usbd_get_config_desc(dev, index, &cd);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- len = UGETW(cd.wTotalLength);
- cdp = malloc(len, M_USB, M_NOWAIT);
- if (cdp == 0)
- return (USBD_NOMEM);
- r = usbd_get_desc(dev, UDESC_CONFIG, index, len, cdp);
- if (r != USBD_NORMAL_COMPLETION)
- goto bad;
- if (cdp->bDescriptorType != UDESC_CONFIG) {
- DPRINTFN(-1,("usbd_set_config_index: bad desc %d\n",
- cdp->bDescriptorType));
- r = USBD_INVAL;
- goto bad;
- }
- selfpowered = 0;
- if (cdp->bmAttributes & UC_SELF_POWERED) {
- /* May be self powered. */
- if (cdp->bmAttributes & UC_BUS_POWERED) {
- /* Must ask device. */
- if (dev->quirks->uq_flags & UQ_HUB_POWER) {
- /* Buggy hub, use hub descriptor. */
- r = usbd_get_hub_status(dev, &hs);
- if (r == USBD_NORMAL_COMPLETION &&
- !(UGETW(hs.wHubStatus) & UHS_LOCAL_POWER))
- selfpowered = 1;
- } else {
- r = usbd_get_device_status(dev, &ds);
- if (r == USBD_NORMAL_COMPLETION &&
- (UGETW(ds.wStatus) & UDS_SELF_POWERED))
- selfpowered = 1;
- }
- DPRINTF(("usbd_set_config_index: status=0x%04x, "
- "error=%d(%s)\n",
- UGETW(ds.wStatus), r, usbd_error_strs[r]));
- } else
- selfpowered = 1;
- }
- DPRINTF(("usbd_set_config_index: (addr %d) attr=0x%02x, "
- "selfpowered=%d, power=%d, powerquirk=%x\n",
- dev->address, cdp->bmAttributes,
- selfpowered, cdp->bMaxPower * 2,
- dev->quirks->uq_flags & UQ_HUB_POWER));
-#ifdef USB_DEBUG
- if (!dev->powersrc) {
- printf("usbd_set_config_index: No power source?\n");
- return (USBD_IOERROR);
- }
-#endif
- power = cdp->bMaxPower * 2;
- if (power > dev->powersrc->power) {
- /* XXX print nicer message. */
- if (msg)
- printf("%s: device addr %d (config %d) exceeds power "
- "budget, %d mA > %d mA\n",
- USBDEVNAME(dev->bus->bdev), dev->address,
- cdp->bConfigurationValue,
- power, dev->powersrc->power);
- r = USBD_NO_POWER;
- goto bad;
- }
- dev->power = power;
- dev->self_powered = selfpowered;
-
- DPRINTF(("usbd_set_config_index: set config %d\n",
- cdp->bConfigurationValue));
- r = usbd_set_config(dev, cdp->bConfigurationValue);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("usbd_set_config_index: setting config=%d failed, "
- "error=%d(%s)\n",
- cdp->bConfigurationValue, r, usbd_error_strs[r]));
- goto bad;
- }
- DPRINTF(("usbd_set_config_index: setting new config %d\n",
- cdp->bConfigurationValue));
- nifc = cdp->bNumInterface;
- dev->ifaces = malloc(nifc * sizeof(struct usbd_interface),
- M_USB, M_NOWAIT);
- if (dev->ifaces == 0) {
- r = USBD_NOMEM;
- goto bad;
- }
- DPRINTFN(5,("usbd_set_config_index: dev=%p cdesc=%p\n", dev, cdp));
- dev->cdesc = cdp;
- dev->config = cdp->bConfigurationValue;
- dev->state = USBD_DEVICE_CONFIGURED;
- for (ifcidx = 0; ifcidx < nifc; ifcidx++) {
- r = usbd_fill_iface_data(dev, ifcidx, 0);
- if (r != USBD_NORMAL_COMPLETION) {
- while (--ifcidx >= 0)
- usbd_free_iface_data(dev, ifcidx);
- goto bad;
- }
- }
-
- return (USBD_NORMAL_COMPLETION);
-
- bad:
- free(cdp, M_USB);
- return (r);
-}
-
-/* XXX add function for alternate settings */
-
-usbd_status
-usbd_setup_pipe(dev, iface, ep, pipe)
- usbd_device_handle dev;
- usbd_interface_handle iface;
- struct usbd_endpoint *ep;
- usbd_pipe_handle *pipe;
-{
- usbd_pipe_handle p;
- usbd_status r;
-
- DPRINTFN(1,("usbd_setup_pipe: dev=%p iface=%p ep=%p pipe=%p\n",
- dev, iface, ep, pipe));
- p = malloc(dev->bus->pipe_size, M_USB, M_NOWAIT);
- if (p == 0)
- return (USBD_NOMEM);
- p->device = dev;
- p->iface = iface;
- p->state = USBD_PIPE_ACTIVE;
- p->endpoint = ep;
- ep->refcnt++;
- p->refcnt = 1;
- p->intrreqh = 0;
- p->running = 0;
- SIMPLEQ_INIT(&p->queue);
- r = dev->bus->open_pipe(p);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTFN(-1,("usbd_setup_pipe: endpoint=0x%x failed, error=%d"
- "(%s)\n",
- ep->edesc->bEndpointAddress, r, usbd_error_strs[r]));
- free(p, M_USB);
- return (r);
- }
- *pipe = p;
- return (USBD_NORMAL_COMPLETION);
-}
-
-/* Abort the device control pipe. */
-void
-usbd_kill_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- pipe->methods->close(pipe);
- pipe->endpoint->refcnt--;
- free(pipe, M_USB);
-}
-
-int
-usbd_getnewaddr(bus)
- usbd_bus_handle bus;
-{
- int addr;
-
- for (addr = 1; addr < USB_MAX_DEVICES; addr++)
- if (bus->devices[addr] == 0)
- return (addr);
- return (-1);
-}
-
-
-usbd_status
-usbd_probe_and_attach(parent, dev, port, addr)
- bdevice *parent;
- usbd_device_handle dev;
- int port;
- int addr;
-{
- struct usb_attach_arg uaa;
- usb_device_descriptor_t *dd = &dev->ddesc;
- int r, found, i, confi, nifaces;
- usbd_interface_handle ifaces[256]; /* 256 is the absolute max */
-
-#if defined(__FreeBSD__)
-/* XXX uaa is a static var. Not a problem as it _should_ be used only
- * during probe and attach. Should be changed however
- */
- bdevice bdev;
- bdev = device_add_child(*parent, NULL, -1, &uaa);
- if (!bdev) {
- printf("%s: Device creation failed\n", USBDEVNAME(dev->bus->bdev));
- return (USBD_INVAL);
- }
-#endif
-
- uaa.device = dev;
- uaa.iface = 0;
- uaa.ifaces = 0;
- uaa.nifaces = 0;
- uaa.usegeneric = 0;
- uaa.port = port;
- uaa.configno = UHUB_UNK_CONFIGURATION;
- uaa.ifaceno = UHUB_UNK_INTERFACE;
-
- /* First try with device specific drivers. */
- if (USB_DO_ATTACH(dev, bdev, parent, &uaa, usbd_print, usbd_submatch))
- return (USBD_NORMAL_COMPLETION);
-
- DPRINTF(("usbd_probe_and_attach: no device specific driver found\n"));
-
- /* Next try with interface drivers. */
- for (confi = 0; confi < dd->bNumConfigurations; confi++) {
- DPRINTFN(1,("usbd_probe_and_attach: trying config idx=%d\n",
- confi));
- r = usbd_set_config_index(dev, confi, 1);
- if (r != USBD_NORMAL_COMPLETION) {
-#ifdef USB_DEBUG
- DPRINTF(("%s: port %d, set config at addr %d failed, "
- "error=%d(%s)\n", USBDEVNAME(*parent), port,
- addr, r, usbd_error_strs[r]));
-#else
- printf("%s: port %d, set config at addr %d failed\n",
- USBDEVNAME(*parent), port, addr);
-#endif
-#if defined(__FreeBSD__)
- device_delete_child(*parent, bdev);
-#endif
- return (r);
- }
- nifaces = dev->cdesc->bNumInterface;
- uaa.configno = dev->cdesc->bConfigurationValue;
- for (i = 0; i < nifaces; i++)
- ifaces[i] = &dev->ifaces[i];
- uaa.ifaces = ifaces;
- uaa.nifaces = nifaces;
- for (found = i = 0; i < nifaces; i++) {
- if (!ifaces[i])
- continue; /* interface already claimed */
- uaa.iface = ifaces[i];
- uaa.ifaceno = ifaces[i]->idesc->bInterfaceNumber;
- if (USB_DO_ATTACH(dev, bdev, parent, &uaa, usbd_print,
- usbd_submatch)) {
- found++;
- ifaces[i] = 0; /* consumed */
- }
- }
- if (found != 0)
- return (USBD_NORMAL_COMPLETION);
- }
- /* No interfaces were attached in any of the configurations. */
- if (dd->bNumConfigurations > 1)/* don't change if only 1 config */
- usbd_set_config_index(dev, 0, 0);
-
- DPRINTF(("usbd_probe_and_attach: no interface drivers found\n"));
-
- /* Finally try the generic driver. */
- uaa.iface = 0;
- uaa.usegeneric = 1;
- uaa.configno = UHUB_UNK_CONFIGURATION;
- uaa.ifaceno = UHUB_UNK_INTERFACE;
- if (USB_DO_ATTACH(dev, bdev, parent, &uaa, usbd_print, usbd_submatch))
- return (USBD_NORMAL_COMPLETION);
-
- /*
- * The generic attach failed, but leave the device as it is.
- * We just did not find any drivers, that's all. The device is
- * fully operational and not harming anyone.
- */
- DPRINTF(("usbd_probe_and_attach: generic attach failed\n"));
-#if defined(__FreeBSD__)
-/*
- * XXX should we delete the child again? Left for now to avoid dangling
- * references.
- device_delete_child(*parent, bdev);
-*/
-#endif
- return (USBD_NORMAL_COMPLETION);
-}
-
-
-
-/*
- * Called when a new device has been put in the powered state,
- * but not yet in the addressed state.
- * Get initial descriptor, set the address, get full descriptor,
- * and attach a driver.
- */
-usbd_status
-usbd_new_device(parent, bus, depth, lowspeed, port, up)
- bdevice *parent;
- usbd_bus_handle bus;
- int depth;
- int lowspeed;
- int port;
- struct usbd_port *up;
-{
- usbd_device_handle dev;
- usb_device_descriptor_t *dd;
- usbd_status r;
- int addr;
- int i;
-
- DPRINTF(("usbd_new_device bus=%p depth=%d lowspeed=%d\n",
- bus, depth, lowspeed));
- addr = usbd_getnewaddr(bus);
- if (addr < 0) {
- printf("%s: No free USB addresses, new device ignored.\n",
- USBDEVNAME(bus->bdev));
- return (USBD_NO_ADDR);
- }
-
- dev = malloc(sizeof *dev, M_USB, M_NOWAIT);
- if (dev == 0)
- return (USBD_NOMEM);
- memset(dev, 0, sizeof(*dev));
-
- dev->bus = bus;
-
- /* Set up default endpoint handle. */
- dev->def_ep.edesc = &dev->def_ep_desc;
- dev->def_ep.state = USBD_ENDPOINT_ACTIVE;
-
- /* Set up default endpoint descriptor. */
- dev->def_ep_desc.bLength = USB_ENDPOINT_DESCRIPTOR_SIZE;
- dev->def_ep_desc.bDescriptorType = UDESC_ENDPOINT;
- dev->def_ep_desc.bEndpointAddress = USB_CONTROL_ENDPOINT;
- dev->def_ep_desc.bmAttributes = UE_CONTROL;
- USETW(dev->def_ep_desc.wMaxPacketSize, USB_MAX_IPACKET);
- dev->def_ep_desc.bInterval = 0;
-
- dev->state = USBD_DEVICE_DEFAULT;
- dev->quirks = &usbd_no_quirk;
- dev->address = USB_START_ADDR;
- dev->ddesc.bMaxPacketSize = 0;
- dev->lowspeed = lowspeed != 0;
- dev->depth = depth;
- dev->powersrc = up;
- dev->langid = USBD_NOLANG;
-
- /* Establish the the default pipe. */
- r = usbd_setup_pipe(dev, 0, &dev->def_ep, &dev->default_pipe);
- if (r != USBD_NORMAL_COMPLETION) {
- usbd_remove_device(dev, up);
- return (r);
- }
-
- up->device = dev;
- dd = &dev->ddesc;
- /* Try a few times in case the device is slow (i.e. outside specs.) */
- for (i = 0; i < 5; i++) {
- /* Get the first 8 bytes of the device descriptor. */
- r = usbd_get_desc(dev, UDESC_DEVICE, 0, USB_MAX_IPACKET, dd);
- if (r == USBD_NORMAL_COMPLETION)
- break;
- usbd_delay_ms(dev, 200);
- }
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTFN(-1, ("usbd_new_device: addr=%d, getting first desc "
- "failed\n",
- addr));
- usbd_remove_device(dev, up);
- return (r);
- }
-
- if (dd->bDescriptorType != UDESC_DEVICE) {
- /* Illegal device descriptor */
- DPRINTFN(-1,("usbd_new_device: illegal descriptor %d\n",
- dd->bDescriptorType));
- usbd_remove_device(dev, up);
- return (USBD_INVAL);
- }
-
- DPRINTF(("usbd_new_device: adding unit addr=%d, rev=%02x, class=%d, "
- "subclass=%d, protocol=%d, maxpacket=%d, ls=%d\n",
- addr,UGETW(dd->bcdUSB), dd->bDeviceClass, dd->bDeviceSubClass,
- dd->bDeviceProtocol, dd->bMaxPacketSize, dev->lowspeed));
-
- USETW(dev->def_ep_desc.wMaxPacketSize, dd->bMaxPacketSize);
-
- /* Get the full device descriptor. */
- r = usbd_get_device_desc(dev, dd);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTFN(-1, ("usbd_new_device: addr=%d, getting full desc "
- "failed\n", addr));
- usbd_remove_device(dev, up);
- return (r);
- }
-
- /* Figure out what's wrong with this device. */
- dev->quirks = usbd_find_quirk(dd);
-
- /* Set the address */
- r = usbd_set_address(dev, addr);
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTFN(-1,("usb_new_device: set address %d failed\n",addr));
- r = USBD_SET_ADDR_FAILED;
- usbd_remove_device(dev, up);
- return (r);
- }
- /* Allow device time to set new address */
- usbd_delay_ms(dev, USB_SET_ADDRESS_SETTLE);
-
- dev->address = addr; /* New device address now */
- dev->state = USBD_DEVICE_ADDRESSED;
- bus->devices[addr] = dev;
-
- /* Assume 100mA bus powered for now. Changed when configured. */
- dev->power = USB_MIN_POWER;
- dev->self_powered = 0;
-
- DPRINTF(("usbd_new_device: new dev (addr %d), dev=%p, parent=%p\n",
- addr, dev, parent));
-
- r = usbd_probe_and_attach(parent, dev, port, addr);
- if (r != USBD_NORMAL_COMPLETION) {
- usbd_remove_device(dev, up);
- return (r);
- }
-
- return (USBD_NORMAL_COMPLETION);
-}
-
-void
-usbd_remove_device(dev, up)
- usbd_device_handle dev;
- struct usbd_port *up;
-{
- DPRINTF(("usbd_remove_device: %p\n", dev));
-
- if (dev->default_pipe)
- usbd_kill_pipe(dev->default_pipe);
- up->device = 0;
- dev->bus->devices[dev->address] = 0;
-
- free(dev, M_USB);
-}
-
-#if defined(__NetBSD__)
-int
-usbd_print(aux, pnp)
- void *aux;
- const char *pnp;
-{
- struct usb_attach_arg *uaa = aux;
- char devinfo[1024];
-
- DPRINTFN(15, ("usbd_print dev=%p\n", uaa->device));
- if (pnp) {
- if (!uaa->usegeneric)
- return (QUIET);
- usbd_devinfo(uaa->device, 1, devinfo);
- printf("%s, %s", devinfo, pnp);
- }
- if (uaa->port != 0)
- printf(" port %d", uaa->port);
- if (uaa->configno != UHUB_UNK_CONFIGURATION)
- printf(" configuration %d", uaa->configno);
- if (uaa->ifaceno != UHUB_UNK_INTERFACE)
- printf(" interface %d", uaa->ifaceno);
- return (UNCONF);
-}
-
-int
-usbd_submatch(parent, cf, aux)
- struct device *parent;
- struct cfdata *cf;
- void *aux;
-{
- struct usb_attach_arg *uaa = aux;
-
- if ((uaa->port != 0 &&
- cf->uhubcf_port != UHUB_UNK_PORT &&
- cf->uhubcf_port != uaa->port) ||
- (uaa->configno != UHUB_UNK_CONFIGURATION &&
- cf->uhubcf_configuration != UHUB_UNK_CONFIGURATION &&
- cf->uhubcf_configuration != uaa->configno) ||
- (uaa->ifaceno != UHUB_UNK_INTERFACE &&
- cf->uhubcf_interface != UHUB_UNK_INTERFACE &&
- cf->uhubcf_interface != uaa->ifaceno))
- return 0;
- return ((*cf->cf_attach->ca_match)(parent, cf, aux));
-}
-#endif
-
-usbd_status
-usb_insert_transfer(reqh)
- usbd_request_handle reqh;
-{
- usbd_pipe_handle pipe = reqh->pipe;
- usbd_interface_handle iface = pipe->iface;
-
- if (pipe->state == USBD_PIPE_IDLE ||
- (iface && iface->state == USBD_INTERFACE_IDLE))
- return (USBD_IS_IDLE);
- SIMPLEQ_INSERT_TAIL(&pipe->queue, reqh, next);
- if (pipe->state != USBD_PIPE_ACTIVE ||
- (iface && iface->state != USBD_INTERFACE_ACTIVE))
- return (USBD_NOT_STARTED);
- if (pipe->running)
- return (USBD_IN_PROGRESS);
- pipe->running = 1;
- return (USBD_NORMAL_COMPLETION);
-}
-
-void
-usb_start_next(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_request_handle reqh;
- usbd_status r;
-
-#ifdef DIAGNOSTIC
- if (SIMPLEQ_FIRST(&pipe->queue) == 0) {
- printf("usb_start_next: empty\n");
- return;
- }
-#endif
-
- /* First remove remove old */
- SIMPLEQ_REMOVE_HEAD(&pipe->queue, SIMPLEQ_FIRST(&pipe->queue), next);
- if (pipe->state != USBD_PIPE_ACTIVE) {
- pipe->running = 0;
- return;
- }
- reqh = SIMPLEQ_FIRST(&pipe->queue);
- DPRINTFN(5, ("usb_start_next: start reqh=%p\n", reqh));
- if (!reqh)
- pipe->running = 0;
- else {
- r = pipe->methods->start(reqh);
- if (r != USBD_IN_PROGRESS) {
- printf("usb_start_next: error=%d\n", r);
- pipe->running = 0;
- /* XXX do what? */
- }
- }
-}
-
-void
-usbd_fill_deviceinfo(dev, di)
- usbd_device_handle dev;
- struct usb_device_info *di;
-{
- struct usbd_port *p;
- int i, r, s;
-
- di->config = dev->config;
- usbd_devinfo_vp(dev, di->vendor, di->product);
- usbd_printBCD(di->revision, UGETW(dev->ddesc.bcdDevice));
- di->vendorNo = UGETW(dev->ddesc.idVendor);
- di->productNo = UGETW(dev->ddesc.idProduct);
- di->class = dev->ddesc.bDeviceClass;
- di->power = dev->self_powered ? 0 : dev->power;
- di->lowspeed = dev->lowspeed;
- di->addr = dev->address;
- if (dev->hub) {
- for (i = 0;
- i < sizeof(di->ports) / sizeof(di->ports[0]) &&
- i < dev->hub->hubdesc.bNbrPorts;
- i++) {
- p = &dev->hub->ports[i];
- if (p->device)
- r = p->device->address;
- else {
- s = UGETW(p->status.wPortStatus);
- if (s & UPS_PORT_ENABLED)
- r = USB_PORT_ENABLED;
- else if (s & UPS_SUSPEND)
- r = USB_PORT_SUSPENDED;
- else if (s & UPS_PORT_POWER)
- r = USB_PORT_POWERED;
- else
- r = USB_PORT_DISABLED;
- }
- di->ports[i] = r;
- }
- di->nports = dev->hub->hubdesc.bNbrPorts;
- } else
- di->nports = 0;
-}
diff --git a/sys/dev/usb/usbcdc.h b/sys/dev/usb/usbcdc.h
deleted file mode 100644
index 3d3eb818f1b2e..0000000000000
--- a/sys/dev/usb/usbcdc.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/* $NetBSD: usbcdc.h,v 1.3 1999/01/03 01:09:18 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef _USBCDC_H_
-#define _USBCDC_H_
-
-#define UDESCSUB_CDC_HEADER 0
-#define UDESCSUB_CDC_CM 1 /* Call Management */
-#define UDESCSUB_CDC_ACM 2 /* Abstract Control Model */
-#define UDESCSUB_CDC_DLM 3 /* Direct Line Management */
-#define UDESCSUB_CDC_TRF 4 /* Telephone Ringer */
-#define UDESCSUB_CDC_TCLSR 5 /* Telephone Call ... */
-#define UDESCSUB_CDC_UNION 6
-#define UDESCSUB_CDC_CS 7 /* Country Selection */
-#define UDESCSUB_CDC_TOM 8 /* Telephone Operational Modes */
-#define UDESCSUB_CDC_USBT 9 /* USB Terminal */
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bDescriptorSubtype;
- uWord bcdCDC;
-} usb_cdc_header_descriptor_t;
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bDescriptorSubtype;
- uByte bmCapabilities;
-#define USB_CDC_CM_DOES_CM 0x01
-#define USB_CDC_CM_CM_OVER_DATA 0x02
- uByte bDataInterface;
-} usb_cdc_cm_descriptor_t;
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bDescriptorSubtype;
- uByte bmCapabilities;
-#define USB_CDC_ACM_HAS_FEATURE 0x01
-#define USB_CDC_ACM_HAS_LINE 0x02
-#define USB_CDC_ACM_HAS_BREAK 0x04
-#define USB_CDC_ACM_HAS_NETWORK_CONN 0x08
-} usb_cdc_acm_descriptor_t;
-
-typedef struct {
- uByte bLength;
- uByte bDescriptorType;
- uByte bDescriptorSubtype;
- uByte bMasterInterface;
- uByte bSlaveInterface[1];
-} usb_cdc_union_descriptor_t;
-
-#define UCDC_SEND_ENCAPSULATED_COMMAND 0x00
-#define UCDC_GET_ENCAPSULATED_RESPONSE 0x01
-#define UCDC_SET_COMM_FEATURE 0x02
-#define UCDC_GET_COMM_FEATURE 0x03
-#define UCDC_ABSTRACT_STATE 0x01
-#define UCDC_COUNTRY_SETTING 0x02
-#define UCDC_CLEAR_COMM_FEATURE 0x04
-#define UCDC_SET_LINE_CODING 0x20
-#define UCDC_GET_LINE_CODING 0x21
-
-typedef struct {
- uWord wState;
-#define UCDC_IDLE_SETTING 0x0001
-#define UCDC_DATA_MULTIPLEXED 0x0002
-} usb_cdc_abstract_state_t;
-
-typedef struct {
- uDWord dwDTERate;
- uByte bCharFormat;
-#define UCDC_STOP_BIT_1 0
-#define UCDC_STOP_BIT_1_5 1
-#define UCDC_STOP_BIT_2 2
- uByte bParityType;
-#define UCDC_PARITY_NONE 0
-#define UCDC_PARITY_ODD 1
-#define UCDC_PARITY_EVEN 2
-#define UCDC_PARITY_MARK 3
-#define UCDC_PARITY_SPACE 4
- uByte bDataBits;
-} usb_cdc_line_state_t;
-
-typedef struct {
- uByte bmRequestType;
-#define UCDC_NOTIFICATION 0xa1
- uByte bNotification;
-#define UCDC_N_NETWORK_CONNECTION 0x00
-#define UCDC_N_RESPONSE_AVAILABLE 0x01
-#define UCDC_N_AUX_JACK_HOOK_STATE 0x08
-#define UCDC_N_RING_DETECT 0x09
-#define UCDC_N_SERIAL_STATE 0x20
-#define UCDC_N_CALL_STATE_CHANGED 0x28
-#define UCDC_N_LINE_STATE_CHANGED 0x29
-#define UCDC_N_CONNECTION_SPEED_CHANGE 0x2a
- uWord wValue;
- uWord wIndex;
- uWord wLength;
- uByte data[16];
-} usb_cdc_notification_t;
-#define UCDC_NOTIFICATION_LENGTH 8
-
-#endif /* _USBCDC_H_ */
diff --git a/sys/dev/usb/usbdevs.h b/sys/dev/usb/usbdevs.h
deleted file mode 100644
index 24398066a8c92..0000000000000
--- a/sys/dev/usb/usbdevs.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/* $FreeBSD$ */
-
-/*
- * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
- *
- * generated from:
- * NetBSD: usbdevs,v 1.19 1999/01/08 11:18:38 augustss Exp
- */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-/*
- * List of known USB vendors
- */
-
-#define USB_VENDOR_NEC 0x0409 /* NEC */
-#define USB_VENDOR_KODAK 0x040a /* Eastman Kodak */
-/* Computer Access Technology Corporation */
-#define USB_VENDOR_CATC 0x0423 /* CATC */
-#define USB_VENDOR_NANAO 0x0440 /* Nanao */
-#define USB_VENDOR_UNIXTAR 0x0451 /* Unixtar */
-#define USB_VENDOR_GENIUS 0x0458 /* Genius */
-#define USB_VENDOR_MICROSOFT 0x045e /* Microsoft */
-#define USB_VENDOR_KENSINGTON 0x0461 /* Kensington */
-#define USB_VENDOR_CHERRY 0x046a /* Cherry */
-/* Behavior Technology Corporation */
-#define USB_VENDOR_BTC 0x046e /* BTC */
-#define USB_VENDOR_PHILIPS 0x0471 /* Philips */
-#define USB_VENDOR_CONNECTIX 0x0478 /* Connectix */
-#define USB_VENDOR_ACER 0x04a5 /* Acer Peripherals */
-#define USB_VENDOR_CYPRESS 0x04b4 /* Cypress Semiconductor */
-#define USB_VENDOR_3COM 0x04c1 /* 3Com */
-#define USB_VENDOR_SHUTTLE 0x04e6 /* Shuttle Technology */
-#define USB_VENDOR_JAZZ 0x04fa /* Jazz */
-#define USB_VENDOR_ATEN 0x0557 /* ATen */
-#define USB_VENDOR_PERACOM 0x0565 /* Peracom */
-#define USB_VENDOR_EIZO 0x056d /* EIZO */
-#define USB_VENDOR_AGILER 0x056e /* Agiler */
-#define USB_VENDOR_BELKIN 0x05ab /* Belkin */
-#define USB_VENDOR_LOGITECH 0x05ac /* Logitech */
-#define USB_VENDOR_EIZONANAO 0x05e7 /* EIZO Nanao */
-#define USB_VENDOR_CHIC 0x05fe /* Chic Technology */
-#define USB_VENDOR_ADS 0x06e1 /* ADS Technologies */
-#define USB_VENDOR_PLX 0x10b5 /* PLX */
-#define USB_VENDOR_ENTREGA 0x1645 /* Entrega */
-#define USB_VENDOR_INSIDEOUT 0x1608 /* Inside Out Networks */
-#define USB_VENDOR_INTEL 0x8086 /* Intel */
-
-/*
- * List of known products. Grouped by vendor.
- */
-
-/* NEC products */
-#define USB_PRODUCT_NEC_HUB 0x55aa /* hub */
-#define USB_PRODUCT_NEC_HUB_B 0x55ab /* hub */
-
-/* Kodak products */
-#define USB_PRODUCT_KODAK_DC260 0x0110 /* Digital Science DC260 */
-
-/* CATC products */
-#define USB_PRODUCT_CATC_ANDROMEDA 0x1237 /* Andromeda hub */
-
-/* Unixtar products */
-#define USB_PRODUCT_UNIXTAR_UTUSB41 0x1446 /* UT-USB41 hub */
-
-/* Genius products */
-#define USB_PRODUCT_GENIUS_NICHE 0x0001 /* Niche mouse */
-#define USB_PRODUCT_GENIUS_FLIGHT2000 0x1004 /* Flight 2000 joystick */
-
-/* Microsoft products */
-#define USB_PRODUCT_MICROSOFT_INTELLIMOUSE 0x0009 /* IntelliMouse */
-
-/* Kensington products */
-#define USB_PRODUCT_KENSINGTON_MOUSEINABOX 0x4d02 /* Mouse-in-a-Box */
-
-/* Cherry products */
-#define USB_PRODUCT_CHERRY_MY3000KBD 0x0001 /* My3000 keyboard */
-#define USB_PRODUCT_CHERRY_MY3000HUB 0x0003 /* My3000 hub */
-
-/* Behavior Technology Corporation products */
-#define USB_PRODUCT_BTC_BTC7932 0x6782 /* Keyboard with mouse port */
-
-/* Philips products */
-#define USB_PRODUCT_PHILIPS_DSS 0x0101 /* DSS 350 Digital Speaker System */
-#define USB_PRODUCT_PHILIPS_HUB 0x0201 /* hub */
-
-/* Connectix products */
-#define USB_PRODUCT_CONNECTIX_QUICKCAM 0x0001 /* QuickCam */
-
-/* Acer products */
-#define USB_PRODUCT_ACER_ACERSCAN_C310U 0x12a6 /* Acerscan C310U */
-
-/* Cypress Semiconduuctor products */
-#define USB_PRODUCT_CYPRESS_MOUSE 0x0001 /* mouse */
-
-/* 3Com products */
-#define USB_PRODUCT_3COM_USR56K 0x3021 /* U.S.Robotics 56000 Voice USB Modem */
-
-/* Shuttle Technology products */
-#define USB_PRODUCT_SHUTTLE_EUSB 0x0001 /* E-USB Bridge */
-
-/* Jazz products */
-#define USB_PRODUCT_JAZZ_J6502 0x4201 /* J-6502 speakers */
-
-/* ATen products */
-#define USB_PRODUCT_ATEN_UC1284 0x2001 /* Parallel printer adapter */
-
-/* Peracom products */
-#define USB_PRODUCT_PERACOM_SERIAL1 0x0001 /* Serial Converter */
-
-/* EIZO products */
-#define USB_PRODUCT_EIZO_HUB 0x0000 /* hub */
-#define USB_PRODUCT_EIZO_MONITOR 0x0001 /* monitor */
-
-/* Agiler products */
-#define USB_PRODUCT_AGILER_MOUSE29UO 0x0002 /* mouse 29UO */
-
-/* Belkin products */
-#define USB_PRODUCT_BELKIN_F5U002 0x0002 /* Parallel printer adapter */
-
-/* Logitech products */
-#define USB_PRODUCT_LOGITECH_M2452 0x0203 /* M2452 keyboard */
-#define USB_PRODUCT_LOGITECH_M4848 0x0301 /* M4848 mouse */
-
-/* Chic Technology products */
-#define USB_PRODUCT_CHIC_MOUSE1 0x0001 /* mouse */
-
-/* ADS products */
-#define USB_PRODUCT_ADS_ENET 0x0008 /* Ethernet adapter */
-
-/* PLX products */
-#define USB_PRODUCT_PLX_TESTBOARD 0x9060 /* test board */
-
-#define USB_PRODUCT_ENTREGA_CENTRONICS 0x0006 /* Centronics connector */
-#define USB_PRODUCT_ENTREGA_SERIAL 0x8001 /* DB25 Serial connector */
-
-/* Inside Out Networks products */
-#define USB_PRODUCT_INSIDEOUT_EDGEPORT4 0x0001 /* EdgePort/4 serial ports */
-
-/* Intel products */
-#define USB_PRODUCT_INTEL_TESTBOARD 0x9890 /* 82930 test board */
diff --git a/sys/dev/usb/usbdevs_data.h b/sys/dev/usb/usbdevs_data.h
deleted file mode 100644
index a6815eb6c9da6..0000000000000
--- a/sys/dev/usb/usbdevs_data.h
+++ /dev/null
@@ -1,439 +0,0 @@
-/* $FreeBSD$ */
-
-/*
- * THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT.
- *
- * generated from:
- * NetBSD: usbdevs,v 1.19 1999/01/08 11:18:38 augustss Exp
- */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct usb_knowndev usb_knowndevs[] = {
- {
- USB_VENDOR_NEC, USB_PRODUCT_NEC_HUB,
- 0,
- "NEC",
- "hub",
- },
- {
- USB_VENDOR_NEC, USB_PRODUCT_NEC_HUB_B,
- 0,
- "NEC",
- "hub",
- },
- {
- USB_VENDOR_KODAK, USB_PRODUCT_KODAK_DC260,
- 0,
- "Eastman Kodak",
- "Digital Science DC260",
- },
- {
- USB_VENDOR_CATC, USB_PRODUCT_CATC_ANDROMEDA,
- 0,
- "CATC",
- "Andromeda hub",
- },
- {
- USB_VENDOR_UNIXTAR, USB_PRODUCT_UNIXTAR_UTUSB41,
- 0,
- "Unixtar",
- "UT-USB41 hub",
- },
- {
- USB_VENDOR_GENIUS, USB_PRODUCT_GENIUS_NICHE,
- 0,
- "Genius",
- "Niche mouse",
- },
- {
- USB_VENDOR_GENIUS, USB_PRODUCT_GENIUS_FLIGHT2000,
- 0,
- "Genius",
- "Flight 2000 joystick",
- },
- {
- USB_VENDOR_MICROSOFT, USB_PRODUCT_MICROSOFT_INTELLIMOUSE,
- 0,
- "Microsoft",
- "IntelliMouse",
- },
- {
- USB_VENDOR_KENSINGTON, USB_PRODUCT_KENSINGTON_MOUSEINABOX,
- 0,
- "Kensington",
- "Mouse-in-a-Box",
- },
- {
- USB_VENDOR_CHERRY, USB_PRODUCT_CHERRY_MY3000KBD,
- 0,
- "Cherry",
- "My3000 keyboard",
- },
- {
- USB_VENDOR_CHERRY, USB_PRODUCT_CHERRY_MY3000HUB,
- 0,
- "Cherry",
- "My3000 hub",
- },
- {
- USB_VENDOR_BTC, USB_PRODUCT_BTC_BTC7932,
- 0,
- "BTC",
- "Keyboard with mouse port",
- },
- {
- USB_VENDOR_PHILIPS, USB_PRODUCT_PHILIPS_DSS,
- 0,
- "Philips",
- "DSS 350 Digital Speaker System",
- },
- {
- USB_VENDOR_PHILIPS, USB_PRODUCT_PHILIPS_HUB,
- 0,
- "Philips",
- "hub",
- },
- {
- USB_VENDOR_CONNECTIX, USB_PRODUCT_CONNECTIX_QUICKCAM,
- 0,
- "Connectix",
- "QuickCam",
- },
- {
- USB_VENDOR_ACER, USB_PRODUCT_ACER_ACERSCAN_C310U,
- 0,
- "Acer Peripherals",
- "Acerscan C310U",
- },
- {
- USB_VENDOR_CYPRESS, USB_PRODUCT_CYPRESS_MOUSE,
- 0,
- "Cypress Semiconductor",
- "mouse",
- },
- {
- USB_VENDOR_3COM, USB_PRODUCT_3COM_USR56K,
- 0,
- "3Com",
- "U.S.Robotics 56000 Voice USB Modem",
- },
- {
- USB_VENDOR_SHUTTLE, USB_PRODUCT_SHUTTLE_EUSB,
- 0,
- "Shuttle Technology",
- "E-USB Bridge",
- },
- {
- USB_VENDOR_JAZZ, USB_PRODUCT_JAZZ_J6502,
- 0,
- "Jazz",
- "J-6502 speakers",
- },
- {
- USB_VENDOR_ATEN, USB_PRODUCT_ATEN_UC1284,
- 0,
- "ATen",
- "Parallel printer adapter",
- },
- {
- USB_VENDOR_PERACOM, USB_PRODUCT_PERACOM_SERIAL1,
- 0,
- "Peracom",
- "Serial Converter",
- },
- {
- USB_VENDOR_EIZO, USB_PRODUCT_EIZO_HUB,
- 0,
- "EIZO",
- "hub",
- },
- {
- USB_VENDOR_EIZO, USB_PRODUCT_EIZO_MONITOR,
- 0,
- "EIZO",
- "monitor",
- },
- {
- USB_VENDOR_AGILER, USB_PRODUCT_AGILER_MOUSE29UO,
- 0,
- "Agiler",
- "mouse 29UO",
- },
- {
- USB_VENDOR_BELKIN, USB_PRODUCT_BELKIN_F5U002,
- 0,
- "Belkin",
- "Parallel printer adapter",
- },
- {
- USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_M2452,
- 0,
- "Logitech",
- "M2452 keyboard",
- },
- {
- USB_VENDOR_LOGITECH, USB_PRODUCT_LOGITECH_M4848,
- 0,
- "Logitech",
- "M4848 mouse",
- },
- {
- USB_VENDOR_CHIC, USB_PRODUCT_CHIC_MOUSE1,
- 0,
- "Chic Technology",
- "mouse",
- },
- {
- USB_VENDOR_ADS, USB_PRODUCT_ADS_ENET,
- 0,
- "ADS Technologies",
- "Ethernet adapter",
- },
- {
- USB_VENDOR_PLX, USB_PRODUCT_PLX_TESTBOARD,
- 0,
- "PLX",
- "test board",
- },
- {
- USB_VENDOR_ENTREGA, USB_PRODUCT_ENTREGA_CENTRONICS,
- 0,
- "Entrega",
- "Centronics connector",
- },
- {
- USB_VENDOR_ENTREGA, USB_PRODUCT_ENTREGA_SERIAL,
- 0,
- "Entrega",
- "DB25 Serial connector",
- },
- {
- USB_VENDOR_INSIDEOUT, USB_PRODUCT_INSIDEOUT_EDGEPORT4,
- 0,
- "Inside Out Networks",
- "EdgePort/4 serial ports",
- },
- {
- USB_VENDOR_INTEL, USB_PRODUCT_INTEL_TESTBOARD,
- 0,
- "Intel",
- "82930 test board",
- },
- {
- USB_VENDOR_NEC, 0,
- USB_KNOWNDEV_NOPROD,
- "NEC",
- NULL,
- },
- {
- USB_VENDOR_KODAK, 0,
- USB_KNOWNDEV_NOPROD,
- "Eastman Kodak",
- NULL,
- },
- {
- USB_VENDOR_CATC, 0,
- USB_KNOWNDEV_NOPROD,
- "CATC",
- NULL,
- },
- {
- USB_VENDOR_NANAO, 0,
- USB_KNOWNDEV_NOPROD,
- "Nanao",
- NULL,
- },
- {
- USB_VENDOR_UNIXTAR, 0,
- USB_KNOWNDEV_NOPROD,
- "Unixtar",
- NULL,
- },
- {
- USB_VENDOR_GENIUS, 0,
- USB_KNOWNDEV_NOPROD,
- "Genius",
- NULL,
- },
- {
- USB_VENDOR_MICROSOFT, 0,
- USB_KNOWNDEV_NOPROD,
- "Microsoft",
- NULL,
- },
- {
- USB_VENDOR_KENSINGTON, 0,
- USB_KNOWNDEV_NOPROD,
- "Kensington",
- NULL,
- },
- {
- USB_VENDOR_CHERRY, 0,
- USB_KNOWNDEV_NOPROD,
- "Cherry",
- NULL,
- },
- {
- USB_VENDOR_BTC, 0,
- USB_KNOWNDEV_NOPROD,
- "BTC",
- NULL,
- },
- {
- USB_VENDOR_PHILIPS, 0,
- USB_KNOWNDEV_NOPROD,
- "Philips",
- NULL,
- },
- {
- USB_VENDOR_CONNECTIX, 0,
- USB_KNOWNDEV_NOPROD,
- "Connectix",
- NULL,
- },
- {
- USB_VENDOR_ACER, 0,
- USB_KNOWNDEV_NOPROD,
- "Acer Peripherals",
- NULL,
- },
- {
- USB_VENDOR_CYPRESS, 0,
- USB_KNOWNDEV_NOPROD,
- "Cypress Semiconductor",
- NULL,
- },
- {
- USB_VENDOR_3COM, 0,
- USB_KNOWNDEV_NOPROD,
- "3Com",
- NULL,
- },
- {
- USB_VENDOR_SHUTTLE, 0,
- USB_KNOWNDEV_NOPROD,
- "Shuttle Technology",
- NULL,
- },
- {
- USB_VENDOR_JAZZ, 0,
- USB_KNOWNDEV_NOPROD,
- "Jazz",
- NULL,
- },
- {
- USB_VENDOR_ATEN, 0,
- USB_KNOWNDEV_NOPROD,
- "ATen",
- NULL,
- },
- {
- USB_VENDOR_PERACOM, 0,
- USB_KNOWNDEV_NOPROD,
- "Peracom",
- NULL,
- },
- {
- USB_VENDOR_EIZO, 0,
- USB_KNOWNDEV_NOPROD,
- "EIZO",
- NULL,
- },
- {
- USB_VENDOR_AGILER, 0,
- USB_KNOWNDEV_NOPROD,
- "Agiler",
- NULL,
- },
- {
- USB_VENDOR_BELKIN, 0,
- USB_KNOWNDEV_NOPROD,
- "Belkin",
- NULL,
- },
- {
- USB_VENDOR_LOGITECH, 0,
- USB_KNOWNDEV_NOPROD,
- "Logitech",
- NULL,
- },
- {
- USB_VENDOR_EIZONANAO, 0,
- USB_KNOWNDEV_NOPROD,
- "EIZO Nanao",
- NULL,
- },
- {
- USB_VENDOR_CHIC, 0,
- USB_KNOWNDEV_NOPROD,
- "Chic Technology",
- NULL,
- },
- {
- USB_VENDOR_ADS, 0,
- USB_KNOWNDEV_NOPROD,
- "ADS Technologies",
- NULL,
- },
- {
- USB_VENDOR_PLX, 0,
- USB_KNOWNDEV_NOPROD,
- "PLX",
- NULL,
- },
- {
- USB_VENDOR_ENTREGA, 0,
- USB_KNOWNDEV_NOPROD,
- "Entrega",
- NULL,
- },
- {
- USB_VENDOR_INSIDEOUT, 0,
- USB_KNOWNDEV_NOPROD,
- "Inside Out Networks",
- NULL,
- },
- {
- USB_VENDOR_INTEL, 0,
- USB_KNOWNDEV_NOPROD,
- "Intel",
- NULL,
- },
- { 0, 0, 0, NULL, NULL, }
-};
diff --git a/sys/dev/usb/usbdi.c b/sys/dev/usb/usbdi.c
deleted file mode 100644
index e1ed20a0f8a72..0000000000000
--- a/sys/dev/usb/usbdi.c
+++ /dev/null
@@ -1,1294 +0,0 @@
-/* $NetBSD: usbdi.c,v 1.20 1999/01/08 11:58:26 augustss Exp $ */
-/* FreeBSD $Id: usbdi.c,v 1.7 1999/01/07 23:31:42 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#if defined(__NetBSD__)
-#include <sys/device.h>
-#else
-#include <sys/module.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#endif
-#include <sys/malloc.h>
-#include <sys/proc.h>
-
-#include <dev/usb/usb.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-#include <dev/usb/usbdivar.h>
-
-#if defined(__FreeBSD__)
-#include "usb_if.h"
-#endif
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (usbdebug) printf x
-#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
-extern int usbdebug;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-static usbd_status usbd_ar_pipe __P((usbd_pipe_handle pipe));
-static usbd_status usbd_ar_iface __P((usbd_interface_handle iface));
-static void usbd_transfer_cb __P((usbd_request_handle reqh));
-static void usbd_sync_transfer_cb __P((usbd_request_handle reqh));
-static usbd_status usbd_do_transfer __P((usbd_request_handle reqh));
-void usbd_do_request_async_cb
- __P((usbd_request_handle, usbd_private_handle, usbd_status));
-
-static SIMPLEQ_HEAD(, usbd_request) usbd_free_requests;
-
-#if defined(__FreeBSD__)
-#define USB_CDEV_MAJOR 108
-
-extern struct cdevsw usb_cdevsw;
-#endif
-
-usbd_status
-usbd_open_pipe(iface, address, flags, pipe)
- usbd_interface_handle iface;
- u_int8_t address;
- u_int8_t flags;
- usbd_pipe_handle *pipe;
-{
- usbd_pipe_handle p;
- struct usbd_endpoint *ep;
- usbd_status r;
- int i;
-
- if (iface->state != USBD_INTERFACE_ACTIVE)
- return (USBD_INTERFACE_NOT_ACTIVE);
- for (i = 0; i < iface->idesc->bNumEndpoints; i++) {
- ep = &iface->endpoints[i];
- if (ep->edesc->bEndpointAddress == address)
- goto found;
- }
- return (USBD_BAD_ADDRESS);
- found:
- if ((flags & USBD_EXCLUSIVE_USE) &&
- ep->refcnt != 0)
- return (USBD_IN_USE);
- r = usbd_setup_pipe(iface->device, iface, ep, &p);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- LIST_INSERT_HEAD(&iface->pipes, p, next);
- *pipe = p;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_open_pipe_intr(iface, address, flags, pipe, priv, buffer, length, cb)
- usbd_interface_handle iface;
- u_int8_t address;
- u_int8_t flags;
- usbd_pipe_handle *pipe;
- usbd_private_handle priv;
- void *buffer;
- u_int32_t length;
- usbd_callback cb;
-{
- usbd_status r;
- usbd_request_handle reqh;
- usbd_pipe_handle ipipe;
-
- reqh = usbd_alloc_request();
- if (reqh == 0)
- return (USBD_NOMEM);
- r = usbd_open_pipe(iface, address, USBD_EXCLUSIVE_USE, &ipipe);
- if (r != USBD_NORMAL_COMPLETION)
- goto bad1;
- r = usbd_setup_request(reqh, ipipe, priv, buffer, length,
- USBD_XFER_IN | flags, USBD_NO_TIMEOUT, cb);
- if (r != USBD_NORMAL_COMPLETION)
- goto bad2;
- ipipe->intrreqh = reqh;
- r = usbd_transfer(reqh);
- *pipe = ipipe;
- if (r != USBD_IN_PROGRESS)
- goto bad3;
- return (USBD_NORMAL_COMPLETION);
-
- bad3:
- ipipe->intrreqh = 0;
- bad2:
- usbd_close_pipe(ipipe);
- bad1:
- usbd_free_request(reqh);
- return r;
-}
-
-usbd_status
-usbd_open_pipe_iso(iface, address, flags, pipe, priv, bufsize, nbuf, cb)
- usbd_interface_handle iface;
- u_int8_t address;
- u_int8_t flags;
- usbd_pipe_handle *pipe;
- usbd_private_handle priv;
- u_int32_t bufsize;
- u_int32_t nbuf;
- usbd_callback cb;
-{
- usbd_status r;
- usbd_pipe_handle p;
-
- r = usbd_open_pipe(iface, address, USBD_EXCLUSIVE_USE, &p);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (!p->methods->isobuf) {
- usbd_close_pipe(p);
- return (USBD_INVAL);
- }
- r = p->methods->isobuf(p, bufsize, nbuf);
- if (r != USBD_NORMAL_COMPLETION) {
- usbd_close_pipe(p);
- return (r);
- }
- *pipe = p;
- return r;
-}
-
-usbd_status
-usbd_close_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- if (pipe->iface->state != USBD_INTERFACE_ACTIVE)
- return (USBD_INTERFACE_NOT_ACTIVE);
- if (--pipe->refcnt != 0)
- return (USBD_NORMAL_COMPLETION);
- if (SIMPLEQ_FIRST(&pipe->queue) != 0)
- return (USBD_PENDING_REQUESTS);
- LIST_REMOVE(pipe, next);
- pipe->endpoint->refcnt--;
- pipe->methods->close(pipe);
- if (pipe->intrreqh)
- usbd_free_request(pipe->intrreqh);
- free(pipe, M_USB);
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_transfer(reqh)
- usbd_request_handle reqh;
-{
- reqh->xfercb = usbd_transfer_cb;
- return (usbd_do_transfer(reqh));
-}
-
-static usbd_status
-usbd_do_transfer(reqh)
- usbd_request_handle reqh;
-{
- usbd_pipe_handle pipe = reqh->pipe;
-
- DPRINTFN(10,("usbd_do_transfer: reqh=%p\n", reqh));
- reqh->done = 0;
- return (pipe->methods->transfer(reqh));
-}
-
-usbd_request_handle
-usbd_alloc_request()
-{
- usbd_request_handle reqh;
-
- reqh = SIMPLEQ_FIRST(&usbd_free_requests);
- if (reqh)
- SIMPLEQ_REMOVE_HEAD(&usbd_free_requests, reqh, next);
- else
- reqh = malloc(sizeof(*reqh), M_USB, M_NOWAIT);
- if (!reqh)
- return (0);
- memset(reqh, 0, sizeof *reqh);
- return (reqh);
-}
-
-usbd_status
-usbd_free_request(reqh)
- usbd_request_handle reqh;
-{
- SIMPLEQ_INSERT_HEAD(&usbd_free_requests, reqh, next);
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_setup_request(reqh, pipe, priv, buffer, length, flags, timeout, callback)
- usbd_request_handle reqh;
- usbd_pipe_handle pipe;
- usbd_private_handle priv;
- void *buffer;
- u_int32_t length;
- u_int16_t flags;
- u_int32_t timeout;
- void (*callback) __P((usbd_request_handle,
- usbd_private_handle,
- usbd_status));
-{
- reqh->pipe = pipe;
- reqh->isreq = 0;
- reqh->priv = priv;
- reqh->buffer = buffer;
- reqh->length = length;
- reqh->actlen = 0;
- reqh->flags = flags;
- reqh->callback = callback;
- reqh->status = USBD_NOT_STARTED;
- reqh->retries = 1;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_setup_device_request(reqh, req)
- usbd_request_handle reqh;
- usb_device_request_t *req;
-{
- reqh->isreq = 1;
- reqh->request = *req;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_setup_default_request(reqh, dev, priv, timeout, req, buffer,
- length, flags, callback)
- usbd_request_handle reqh;
- usbd_device_handle dev;
- usbd_private_handle priv;
- u_int32_t timeout;
- usb_device_request_t *req;
- void *buffer;
- u_int32_t length;
- u_int16_t flags;
- void (*callback) __P((usbd_request_handle,
- usbd_private_handle,
- usbd_status));
-{
- reqh->pipe = dev->default_pipe;
- reqh->priv = priv;
- reqh->buffer = buffer;
- reqh->length = length;
- reqh->actlen = 0;
- reqh->flags = flags;
- reqh->timeout = timeout;
- reqh->status = USBD_NOT_STARTED;
- reqh->callback = callback;
- reqh->request = *req;
- reqh->isreq = 1;
- reqh->retries = 1;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_set_request_timeout(reqh, timeout)
- usbd_request_handle reqh;
- u_int32_t timeout;
-{
- reqh->timeout = timeout;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_get_request_status(reqh, priv, buffer, count, status)
- usbd_request_handle reqh;
- usbd_private_handle *priv;
- void **buffer;
- u_int32_t *count;
- usbd_status *status;
-{
- *priv = reqh->priv;
- *buffer = reqh->buffer;
- *count = reqh->actlen;
- *status = reqh->status;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_request_device_data(reqh, req)
- usbd_request_handle reqh;
- usb_device_request_t *req;
-{
- if (!reqh->isreq)
- return (USBD_INVAL);
- *req = reqh->request;
- return (USBD_NORMAL_COMPLETION);
-}
-
-#if 0
-usb_descriptor_t *
-usbd_get_descriptor(iface, desc_type)
- usbd_interface_handle *iface;
- u_int8_t desc_type;
-XX
-#endif
-
-usb_config_descriptor_t *
-usbd_get_config_descriptor(dev)
- usbd_device_handle dev;
-{
- return (dev->cdesc);
-}
-
-usb_interface_descriptor_t *
-usbd_get_interface_descriptor(iface)
- usbd_interface_handle iface;
-{
- return (iface->idesc);
-}
-
-usb_device_descriptor_t *
-usbd_get_device_descriptor(dev)
- usbd_device_handle dev;
-{
- return (&dev->ddesc);
-}
-
-usb_endpoint_descriptor_t *
-usbd_interface2endpoint_descriptor(iface, index)
- usbd_interface_handle iface;
- u_int8_t index;
-{
- if (index >= iface->idesc->bNumEndpoints)
- return (0);
- return (iface->endpoints[index].edesc);
-}
-
-usbd_status
-usbd_set_configuration(dev, conf)
- usbd_device_handle dev;
- u_int8_t conf;
-{
- return usbd_set_config_no(dev, conf, 0);
-}
-
-usbd_status
-usbd_retry_request(reqh, retry_count)
- usbd_request_handle reqh;
- u_int32_t retry_count;
-{
- usbd_status r;
-
- r = usbd_set_pipe_state(reqh->pipe, USBD_PIPE_ACTIVE);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- reqh->retries = retry_count;
- return (usbd_transfer(reqh));
-}
-
-usbd_status
-usbd_abort_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_status r;
- int s, st;
-
- if (pipe->iface->state != USBD_INTERFACE_ACTIVE)
- return (USBD_INTERFACE_NOT_ACTIVE);
- s = splusb();
- st = pipe->state;
- r = usbd_ar_pipe(pipe);
- pipe->state = st;
- splx(s);
- return (r);
-}
-
-usbd_status
-usbd_abort_interface(iface)
- usbd_interface_handle iface;
-{
- usbd_status r;
- int s, st;
-
- s = splusb();
- st = iface->state;
- r = usbd_ar_iface(iface);
- iface->state = st;
- splx(s);
- return (r);
-}
-
-usbd_status
-usbd_reset_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_status r;
- int s;
-
- if (pipe->iface->state != USBD_INTERFACE_ACTIVE)
- return (USBD_INTERFACE_NOT_ACTIVE);
- s = splusb();
- r = usbd_ar_pipe(pipe);
- /* XXX anything else */
- pipe->state = USBD_PIPE_ACTIVE;
- splx(s);
- return (r);
-}
-
-usbd_status
-usbd_reset_interface(iface)
- usbd_interface_handle iface;
-{
- usbd_status r;
- int s;
-
- s = splusb();
- r = usbd_ar_iface(iface);
- /* XXX anything else */
- iface->state = USBD_INTERFACE_ACTIVE;
- splx(s);
- return (r);
-}
-
-usbd_status
-usbd_clear_endpoint_stall(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_device_handle dev = pipe->device;
- usb_device_request_t req;
- usbd_status r;
-
- req.bmRequestType = UT_WRITE_ENDPOINT;
- req.bRequest = UR_CLEAR_FEATURE;
- USETW(req.wValue, UF_ENDPOINT_HALT);
- USETW(req.wIndex, pipe->endpoint->edesc->bEndpointAddress);
- USETW(req.wLength, 0);
- r = usbd_do_request(dev, &req, 0);
-#if 0
-XXX should we do this?
- if (r == USBD_NORMAL_COMPLETION) {
- pipe->state = USBD_PIPE_ACTIVE;
- /* XXX activate pipe */
- }
-#endif
- return (r);
-}
-
-usbd_status
-usbd_clear_endpoint_stall_async(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_device_handle dev = pipe->device;
- usb_device_request_t req;
- usbd_status r;
-
- req.bmRequestType = UT_WRITE_ENDPOINT;
- req.bRequest = UR_CLEAR_FEATURE;
- USETW(req.wValue, UF_ENDPOINT_HALT);
- USETW(req.wIndex, pipe->endpoint->edesc->bEndpointAddress);
- USETW(req.wLength, 0);
- r = usbd_do_request_async(dev, &req, 0);
- return (r);
-}
-
-usbd_status
-usbd_set_pipe_state(pipe, state)
- usbd_pipe_handle pipe;
- usbd_pipe_state state;
-{
- int s;
- usbd_status r;
- usbd_request_handle reqh;
-
- if (pipe->iface->state != USBD_INTERFACE_ACTIVE)
- return (USBD_INTERFACE_NOT_ACTIVE);
- if (state != USBD_PIPE_ACTIVE &&
- state != USBD_PIPE_STALLED &&
- state != USBD_PIPE_IDLE)
- return (USBD_INVAL);
- pipe->state = state;
- r = USBD_NORMAL_COMPLETION;
- if (state == USBD_PIPE_ACTIVE) {
- s = splusb();
- if (!pipe->running) {
- reqh = SIMPLEQ_FIRST(&pipe->queue);
- if (reqh != 0) {
- pipe->running = 1;
- splx(s);
- r = pipe->methods->start(reqh);
- } else
- splx(s);
- } else
- splx(s);
- }
- return (r);
-}
-
-usbd_status
-usbd_get_pipe_state(pipe, state, endpoint_state, request_count)
- usbd_pipe_handle pipe;
- usbd_pipe_state *state;
- u_int32_t *endpoint_state;
- u_int32_t *request_count;
-{
- int n;
- usbd_request_handle r;
-
- *state = pipe->state;
- *endpoint_state = pipe->endpoint->state;
- for (r = SIMPLEQ_FIRST(&pipe->queue), n = 0;
- r != 0;
- r = SIMPLEQ_NEXT(r, next), n++)
- ;
- *request_count = n;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_set_interface_state(iface, state)
- usbd_interface_handle iface;
- usbd_interface_state state;
-{
- int ps;
- usbd_pipe_handle p;
-
- if (state == USBD_INTERFACE_ACTIVE)
- ps = USBD_PIPE_ACTIVE;
- else if (state == USBD_INTERFACE_STALLED)
- ps = USBD_PIPE_STALLED;
- else if (state == USBD_INTERFACE_IDLE)
- ps = USBD_PIPE_IDLE;
- else
- return (USBD_INVAL);
- iface->state = USBD_INTERFACE_ACTIVE; /* to allow setting the pipe */
- for (p = LIST_FIRST(&iface->pipes); p != 0; p = LIST_NEXT(p, next))
- usbd_set_pipe_state(p, ps);
- iface->state = state;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_get_interface_state(iface, state)
- usbd_interface_handle iface;
- usbd_interface_state *state;
-{
- *state = iface->state;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_get_device_state(dev, state)
- usbd_device_handle dev;
- usbd_device_state *state;
-{
- *state = dev->state;
- return (USBD_NORMAL_COMPLETION);
-}
-
-#if 0
-usbd_status
-usbd_set_device_state(dev, state)
- usbd_device_handle dev;
- usbd_device_state state;
-X
-#endif
-
-usbd_status
-usbd_device_address(dev, address)
- usbd_device_handle dev;
- u_int8_t *address;
-{
- *address = dev->address;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_endpoint_address(pipe, address)
- usbd_pipe_handle pipe;
- u_int8_t *address;
-{
- *address = pipe->endpoint->edesc->bEndpointAddress;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_endpoint_count(iface, count)
- usbd_interface_handle iface;
- u_int8_t *count;
-{
- *count = iface->idesc->bNumEndpoints;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_interface_count(dev, count)
- usbd_device_handle dev;
- u_int8_t *count;
-{
- if (!dev->cdesc)
- return (USBD_NOT_CONFIGURED);
- *count = dev->cdesc->bNumInterface;
- return (USBD_NORMAL_COMPLETION);
-}
-
-#if 0
-u_int8_t
-usbd_bus_count()
-{
- return (usb_bus_count());
-}
-#endif
-
-#if defined(__NetBSD__)
-usbd_status
-usbd_get_bus_handle(index, bus)
- u_int8_t index;
- usbd_bus_handle *bus;
-{
- return (usb_get_bus_handle(index, bus));
-}
-#endif
-
-usbd_status
-usbd_get_root_hub(bus, dev)
- usbd_bus_handle bus;
- usbd_device_handle *dev;
-{
- *dev = bus->root_hub;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_port_count(dev, nports)
- usbd_device_handle dev;
- u_int8_t *nports;
-{
- if (dev->hub == 0)
- return (USBD_INVAL);
- *nports = dev->hub->hubdesc.bNbrPorts;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_hub2device_handle(dev, port, devp)
- usbd_device_handle dev;
- u_int8_t port;
- usbd_device_handle *devp;
-{
- if (dev->hub == 0 || port >= dev->hub->hubdesc.bNbrPorts ||
- dev->hub->ports[port].device == 0)
- return (USBD_INVAL);
- *devp = dev->hub->ports[port].device;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_request2pipe_handle(reqh, pipe)
- usbd_request_handle reqh;
- usbd_pipe_handle *pipe;
-{
- *pipe = reqh->pipe;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_pipe2interface_handle(pipe, iface)
- usbd_pipe_handle pipe;
- usbd_interface_handle *iface;
-{
- *iface = pipe->iface;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_interface2device_handle(iface, dev)
- usbd_interface_handle iface;
- usbd_device_handle *dev;
-{
- *dev = iface->device;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_device2bus_handle(dev, bus)
- usbd_device_handle dev;
- usbd_bus_handle *bus;
-{
- *bus = dev->bus;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_device2interface_handle(dev, ifaceno, iface)
- usbd_device_handle dev;
- u_int8_t ifaceno;
- usbd_interface_handle *iface;
-{
- if (!dev->cdesc)
- return (USBD_NOT_CONFIGURED);
- if (ifaceno >= dev->cdesc->bNumInterface)
- return (USBD_INVAL);
- *iface = &dev->ifaces[ifaceno];
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_set_interface_private_handle(iface, priv)
- usbd_interface_handle iface;
- usbd_private_handle priv;
-{
- iface->priv = priv;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_get_interface_private_handle(iface, priv)
- usbd_interface_handle iface;
- usbd_private_handle *priv;
-{
- *priv = iface->priv;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_reference_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- pipe->refcnt++;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_dereference_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- pipe->refcnt--;
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_lock_token
-usbd_lock()
-{
- return (splusb());
-}
-
-void
-usbd_unlock(tok)
- usbd_lock_token tok;
-{
- splx(tok);
-}
-
-/* XXXX use altno */
-usbd_status
-usbd_set_interface(iface, altidx)
- usbd_interface_handle iface;
- int altidx;
-{
- usb_device_request_t req;
- usbd_status r;
-
- if (LIST_FIRST(&iface->pipes) != 0)
- return (USBD_IN_USE);
-
- if (iface->endpoints)
- free(iface->endpoints, M_USB);
- iface->endpoints = 0;
- iface->idesc = 0;
- iface->state = USBD_INTERFACE_IDLE;
-
- r = usbd_fill_iface_data(iface->device, iface->index, altidx);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
-
- req.bmRequestType = UT_WRITE_INTERFACE;
- req.bRequest = UR_SET_INTERFACE;
- USETW(req.wValue, iface->idesc->bAlternateSetting);
- USETW(req.wIndex, iface->idesc->bInterfaceNumber);
- USETW(req.wLength, 0);
- return usbd_do_request(iface->device, &req, 0);
-}
-
-int
-usbd_get_no_alts(cdesc, ifaceno)
- usb_config_descriptor_t *cdesc;
- int ifaceno;
-{
- char *p = (char *)cdesc;
- char *end = p + UGETW(cdesc->wTotalLength);
- usb_interface_descriptor_t *d;
- int n;
-
- for (n = 0; p < end; p += d->bLength) {
- d = (usb_interface_descriptor_t *)p;
- if (p + d->bLength <= end &&
- d->bDescriptorType == UDESC_INTERFACE &&
- d->bInterfaceNumber == ifaceno)
- n++;
- }
- return (n);
-}
-
-int
-usbd_get_interface_altindex(iface)
- usbd_interface_handle iface;
-{
- return (iface->altindex);
-}
-
-usbd_status
-usbd_get_interface(iface, aiface)
- usbd_interface_handle iface;
- u_int8_t *aiface;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_INTERFACE;
- req.bRequest = UR_GET_INTERFACE;
- USETW(req.wValue, 0);
- USETW(req.wIndex, iface->idesc->bInterfaceNumber);
- USETW(req.wLength, 1);
- return usbd_do_request(iface->device, &req, aiface);
-}
-
-/*** Internal routines ***/
-
-/* Dequeue all pipe operations, called at splusb(). */
-static usbd_status
-usbd_ar_pipe(pipe)
- usbd_pipe_handle pipe;
-{
- usbd_request_handle reqh;
-
-#if 0
- for (;;) {
- reqh = SIMPLEQ_FIRST(&pipe->queue);
- if (reqh == 0)
- break;
- SIMPLEQ_REMOVE_HEAD(&pipe->queue, reqh, next);
- reqh->status = USBD_CANCELLED;
- if (reqh->callback)
- reqh->callback(reqh, reqh->priv, reqh->status);
- }
-#else
- while ((reqh = SIMPLEQ_FIRST(&pipe->queue))) {
- pipe->methods->abort(reqh);
- SIMPLEQ_REMOVE_HEAD(&pipe->queue, reqh, next);
- }
-#endif
- return (USBD_NORMAL_COMPLETION);
-}
-
-/* Dequeue all interface operations, called at splusb(). */
-static usbd_status
-usbd_ar_iface(iface)
- usbd_interface_handle iface;
-{
- usbd_pipe_handle p;
- usbd_status r, ret = USBD_NORMAL_COMPLETION;
-
- for (p = LIST_FIRST(&iface->pipes); p != 0; p = LIST_NEXT(p, next)) {
- r = usbd_ar_pipe(p);
- if (r != USBD_NORMAL_COMPLETION)
- ret = r;
- }
- return (ret);
-}
-
-static int usbd_global_init_done = 0;
-
-void
-usbd_init()
-{
-#if defined(__FreeBSD__)
- dev_t dev;
-#endif
-
- if (!usbd_global_init_done) {
- usbd_global_init_done = 1;
- SIMPLEQ_INIT(&usbd_free_requests);
-
-#if defined(__FreeBSD__)
- dev = makedev(USB_CDEV_MAJOR, 0);
- cdevsw_add(&dev, &usb_cdevsw, NULL);
-#endif
- }
-}
-
-static void
-usbd_transfer_cb(reqh)
- usbd_request_handle reqh;
-{
- usbd_pipe_handle pipe = reqh->pipe;
-
- /* Count completed transfers. */
- ++pipe->device->bus->stats.requests
- [pipe->endpoint->edesc->bmAttributes & UE_XFERTYPE];
-
- /* XXX check retry count */
- reqh->done = 1;
- if (reqh->status == USBD_NORMAL_COMPLETION &&
- reqh->actlen < reqh->length &&
- !(reqh->flags & USBD_SHORT_XFER_OK)) {
- DPRINTFN(-1, ("usbd_transfer_cb: short xfer %d<%d (bytes)\n",
- reqh->actlen, reqh->length));
- reqh->status = USBD_SHORT_XFER;
- }
- if (reqh->callback)
- reqh->callback(reqh, reqh->priv, reqh->status);
-}
-
-static void
-usbd_sync_transfer_cb(reqh)
- usbd_request_handle reqh;
-{
- usbd_transfer_cb(reqh);
- if (!reqh->pipe->device->bus->use_polling)
- wakeup(reqh);
-}
-
-/* Like usbd_transfer(), but waits for completion. */
-usbd_status
-usbd_sync_transfer(reqh)
- usbd_request_handle reqh;
-{
- usbd_status r;
- int s;
-
- reqh->xfercb = usbd_sync_transfer_cb;
- r = usbd_do_transfer(reqh);
- if (r != USBD_IN_PROGRESS)
- return (r);
- s = splusb();
- if (!reqh->done) {
- if (reqh->pipe->device->bus->use_polling)
- panic("usbd_sync_transfer: not done\n");
- tsleep(reqh, PRIBIO, "usbsyn", 0);
- }
- splx(s);
- return (reqh->status);
-}
-
-usbd_status
-usbd_do_request(dev, req, data)
- usbd_device_handle dev;
- usb_device_request_t *req;
- void *data;
-{
- return (usbd_do_request_flags(dev, req, data, 0, 0));
-}
-
-usbd_status
-usbd_do_request_flags(dev, req, data, flags, actlen)
- usbd_device_handle dev;
- usb_device_request_t *req;
- void *data;
- u_int16_t flags;
- int *actlen;
-{
- usbd_request_handle reqh;
- usbd_status r;
-
-#ifdef DIAGNOSTIC
- if (!curproc) {
- printf("usbd_do_request: not in process context\n");
- return (USBD_XXX);
- }
-#endif
-
- reqh = usbd_alloc_request();
- if (reqh == 0)
- return (USBD_NOMEM);
- r = usbd_setup_default_request(
- reqh, dev, 0, USBD_DEFAULT_TIMEOUT, req, data,
- UGETW(req->wLength), flags, 0);
- if (r != USBD_NORMAL_COMPLETION)
- goto bad;
- r = usbd_sync_transfer(reqh);
-#if defined(USB_DEBUG) || defined(DIAGNOSTIC)
- if (reqh->actlen > reqh->length)
- printf("usbd_do_request: overrun addr=%d type=0x%02x req=0x"
- "%02x val=%d index=%d rlen=%d length=%d actlen=%d\n",
- dev->address, reqh->request.bmRequestType,
- reqh->request.bRequest, UGETW(reqh->request.wValue),
- UGETW(reqh->request.wIndex),
- UGETW(reqh->request.wLength),
- reqh->length, reqh->actlen);
-#endif
- if (actlen)
- *actlen = reqh->actlen;
- if (r == USBD_STALLED) {
- /*
- * The control endpoint has stalled. Control endpoints
- * should not halt, but some may do so anyway so clear
- * any halt condition.
- */
- usb_device_request_t treq;
- usb_status_t status;
- u_int16_t s;
- usbd_status nr;
-
- treq.bmRequestType = UT_READ_ENDPOINT;
- treq.bRequest = UR_GET_STATUS;
- USETW(treq.wValue, 0);
- USETW(treq.wIndex, 0);
- USETW(treq.wLength, sizeof(usb_status_t));
- nr = usbd_setup_default_request(
- reqh, dev, 0, USBD_DEFAULT_TIMEOUT, &treq, &status,
- sizeof(usb_status_t), 0, 0);
- if (nr != USBD_NORMAL_COMPLETION)
- goto bad;
- nr = usbd_sync_transfer(reqh);
- if (nr != USBD_NORMAL_COMPLETION)
- goto bad;
- s = UGETW(status.wStatus);
- DPRINTF(("usbd_do_request: status = 0x%04x\n", s));
- if (!(s & UES_HALT))
- goto bad;
- treq.bmRequestType = UT_WRITE_ENDPOINT;
- treq.bRequest = UR_CLEAR_FEATURE;
- USETW(treq.wValue, UF_ENDPOINT_HALT);
- USETW(treq.wIndex, 0);
- USETW(treq.wLength, 0);
- nr = usbd_setup_default_request(
- reqh, dev, 0, USBD_DEFAULT_TIMEOUT, &treq, &status,
- 0, 0, 0);
- if (nr != USBD_NORMAL_COMPLETION)
- goto bad;
- nr = usbd_sync_transfer(reqh);
- if (nr != USBD_NORMAL_COMPLETION)
- goto bad;
- }
-
- bad:
- usbd_free_request(reqh);
- return (r);
-}
-
-void
-usbd_do_request_async_cb(reqh, priv, status)
- usbd_request_handle reqh;
- usbd_private_handle priv;
- usbd_status status;
-{
-#if defined(USB_DEBUG) || defined(DIAGNOSTIC)
- if (reqh->actlen > reqh->length)
- printf("usbd_do_request: overrun addr=%d type=0x%02x req=0x"
- "%02x val=%d index=%d rlen=%d length=%d actlen=%d\n",
- reqh->pipe->device->address,
- reqh->request.bmRequestType,
- reqh->request.bRequest, UGETW(reqh->request.wValue),
- UGETW(reqh->request.wIndex),
- UGETW(reqh->request.wLength),
- reqh->length, reqh->actlen);
-#endif
- usbd_free_request(reqh);
-}
-
-/*
- * Execute a request without waiting for completion.
- * Can be used from interrupt context.
- */
-usbd_status
-usbd_do_request_async(dev, req, data)
- usbd_device_handle dev;
- usb_device_request_t *req;
- void *data;
-{
- usbd_request_handle reqh;
- usbd_status r;
-
- reqh = usbd_alloc_request();
- if (reqh == 0)
- return (USBD_NOMEM);
- r = usbd_setup_default_request(
- reqh, dev, 0, USBD_DEFAULT_TIMEOUT, req, data,
- UGETW(req->wLength), 0, usbd_do_request_async_cb);
- if (r != USBD_NORMAL_COMPLETION) {
- usbd_free_request(reqh);
- return (r);
- }
- r = usbd_transfer(reqh);
- if (r != USBD_IN_PROGRESS)
- return (r);
- return (USBD_NORMAL_COMPLETION);
-}
-
-struct usbd_quirks *
-usbd_get_quirks(dev)
- usbd_device_handle dev;
-{
- return (dev->quirks);
-}
-
-void
-usbd_set_disco(p, hdl, data)
- usbd_pipe_handle p;
- void (*hdl) __P((void *));
- void *data;
-{
- p->disco = hdl;
- p->discoarg = data;
-}
-
-/* XXX do periodic free() of free list */
-
-/*
- * Called from keyboard driver when in polling mode.
- */
-void
-usbd_dopoll(iface)
- usbd_interface_handle iface;
-{
- iface->device->bus->do_poll(iface->device->bus);
-}
-
-void
-usbd_set_polling(iface, on)
- usbd_interface_handle iface;
- int on;
-{
- iface->device->bus->use_polling = on;
-}
-
-
-usb_endpoint_descriptor_t *
-usbd_get_endpoint_descriptor(iface, address)
- usbd_interface_handle iface;
- u_int8_t address;
-{
- struct usbd_endpoint *ep;
- int i;
-
- for (i = 0; i < iface->idesc->bNumEndpoints; i++) {
- ep = &iface->endpoints[i];
- if (ep->edesc->bEndpointAddress == address)
- return (iface->endpoints[i].edesc);
- }
- return (0);
-}
-
-#if defined(__FreeBSD__)
-void
-usbd_print_child(device_t parent, device_t child)
-{
- /*
- struct usb_softc *sc = device_get_softc(child);
- */
-
- printf(" at %s%d", device_get_name(parent), device_get_unit(parent));
-
- /* XXX How do we get to the usbd_device_handle???
- usbd_device_handle dev = invalidadosch;
-
- printf(" addr %d", dev->addr);
-
- if (bootverbose) {
- if (dev->lowspeed)
- printf(", lowspeed");
- if (dev->self_powered)
- printf(", self powered");
- else
- printf(", %dmA", dev->power);
- printf(", config %d", dev->config);
- }
- */
-}
-
-/* Reconfigure all the USB busses in the system. */
-int
-usbd_driver_load(module_t mod, int what, void *arg)
-{
- devclass_t usb_devclass = devclass_find("usb");
- devclass_t ugen_devclass = devclass_find("ugen");
- device_t *devlist;
- int devcount;
- int error;
-
- switch (what) {
- case MOD_LOAD:
- case MOD_UNLOAD:
- if (!usb_devclass)
- return 0; /* just ignore call */
-
- if (ugen_devclass) {
- /* detach devices from generic driver if possible */
- error = devclass_get_devices(ugen_devclass, &devlist,
- &devcount);
- if (!error)
- for (devcount--; devcount >= 0; devcount--)
- (void)DEVICE_DETACH(devlist[devcount]);
- }
-
- error = devclass_get_devices(usb_devclass, &devlist, &devcount);
- if (error)
- return 0; /* XXX maybe transient, or error? */
-
- for (devcount--; devcount >= 0; devcount--)
- USB_RECONFIGURE(devlist[devcount]);
-
- free(devlist, M_TEMP);
- return 0;
- }
-
- return 0; /* nothing to do by us */
-}
-
-/* Set the description of the device including a malloc and copy. */
-void
-usbd_device_set_desc(device_t device, char *devinfo)
-{
- size_t l;
- char *desc;
-
- if ( devinfo ) {
- l = strlen(devinfo);
- desc = malloc(l+1, M_USB, M_NOWAIT);
- if (desc)
- memcpy(desc, devinfo, l+1);
- } else
- desc = NULL;
-
- device_set_desc(device, desc);
-}
-
-char *
-usbd_devname(bdevice *bdev)
-{
- static char buf[20];
- /* XXX a static buffer is not exactly a good idea, but the only
- * thing that goes wrong is the string that is being printed
- */
-
- sprintf(buf, "%s%d", device_get_name(*bdev), device_get_unit(*bdev));
- return (buf);
-}
-
-#endif
diff --git a/sys/dev/usb/usbdi.h b/sys/dev/usb/usbdi.h
deleted file mode 100644
index 88db91f8cb006..0000000000000
--- a/sys/dev/usb/usbdi.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/* $NetBSD: usbdi.h,v 1.16 1999/01/08 11:58:26 augustss Exp $ */
-/* FreeBSD $Id: usbdi.h,v 1.4 1999/01/07 23:31:43 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-typedef struct usbd_bus *usbd_bus_handle;
-typedef struct usbd_device *usbd_device_handle;
-typedef struct usbd_interface *usbd_interface_handle;
-typedef struct usbd_pipe *usbd_pipe_handle;
-typedef struct usbd_request *usbd_request_handle;
-typedef void *usbd_private_handle;
-
-typedef enum {
- USBD_ENDPOINT_ACTIVE,
- USBD_ENDPOINT_STALLED,
-} usbd_endpoint_state;
-
-typedef enum {
- USBD_PIPE_ACTIVE,
- USBD_PIPE_STALLED,
- USBD_PIPE_IDLE,
-} usbd_pipe_state;
-
-typedef enum {
- USBD_INTERFACE_ACTIVE,
- USBD_INTERFACE_STALLED,
- USBD_INTERFACE_IDLE,
-} usbd_interface_state;
-
-typedef enum {
- USBD_DEVICE_ATTACHED,
- USBD_DEVICE_POWERED,
- USBD_DEVICE_DEFAULT,
- USBD_DEVICE_ADDRESSED,
- USBD_DEVICE_CONFIGURED,
- USBD_DEVICE_SUSPENDED,
-} usbd_device_state;
-
-typedef enum {
- USBD_NORMAL_COMPLETION = 0,
- USBD_IN_PROGRESS,
- /* errors */
- USBD_PENDING_REQUESTS,
- USBD_NOT_STARTED,
- USBD_INVAL,
- USBD_IS_IDLE,
- USBD_NOMEM,
- USBD_CANCELLED,
- USBD_BAD_ADDRESS,
- USBD_IN_USE,
- USBD_INTERFACE_NOT_ACTIVE,
- USBD_NO_ADDR,
- USBD_SET_ADDR_FAILED,
- USBD_NO_POWER,
- USBD_TOO_DEEP,
- USBD_IOERROR,
- USBD_NOT_CONFIGURED,
- USBD_TIMEOUT,
- USBD_SHORT_XFER,
- USBD_STALLED,
- USBD_INTERRUPTED,
-
- USBD_XXX,
-} usbd_status;
-
-typedef int usbd_lock_token;
-
-typedef void (*usbd_callback) __P((usbd_request_handle, usbd_private_handle,
- usbd_status));
-
-/* Open flags */
-#define USBD_EXCLUSIVE_USE 0x01
-
-/* Request flags */
-#define USBD_XFER_OUT 0x01
-#define USBD_XFER_IN 0x02
-#define USBD_SHORT_XFER_OK 0x04
-
-#define USBD_NO_TIMEOUT 0
-#define USBD_DEFAULT_TIMEOUT 5000 /* ms = 5 s */
-
-usbd_status usbd_open_pipe
- __P((usbd_interface_handle iface, u_int8_t address,
- u_int8_t flags, usbd_pipe_handle *pipe));
-usbd_status usbd_close_pipe __P((usbd_pipe_handle pipe));
-usbd_status usbd_transfer __P((usbd_request_handle req));
-usbd_request_handle usbd_alloc_request __P((void));
-usbd_status usbd_free_request __P((usbd_request_handle reqh));
-usbd_status usbd_setup_request
- __P((usbd_request_handle reqh, usbd_pipe_handle pipe,
- usbd_private_handle priv, void *buffer,
- u_int32_t length, u_int16_t flags, u_int32_t timeout,
- usbd_callback));
-usbd_status usbd_setup_device_request
- __P((usbd_request_handle reqh, usb_device_request_t *req));
-usbd_status usbd_setup_default_request
- __P((usbd_request_handle reqh, usbd_device_handle dev,
- usbd_private_handle priv, u_int32_t timeout,
- usb_device_request_t *req, void *buffer,
- u_int32_t length, u_int16_t flags, usbd_callback));
-usbd_status usbd_set_request_timeout
- __P((usbd_request_handle reqh, u_int32_t timeout));
-usbd_status usbd_get_request_status
- __P((usbd_request_handle reqh, usbd_private_handle *priv,
- void **buffer, u_int32_t *count, usbd_status *status));
-usbd_status usbd_request_device_data
- __P((usbd_request_handle reqh, usb_device_request_t *req));
-usb_descriptor_t *usbd_get_descriptor
- __P((usbd_interface_handle *iface, u_int8_t desc_type));
-usb_endpoint_descriptor_t *usbd_interface2endpoint_descriptor
- __P((usbd_interface_handle iface, u_int8_t address));
-usbd_status usbd_set_configuration
- __P((usbd_device_handle dev, u_int8_t conf));
-usbd_status usbd_retry_request
- __P((usbd_request_handle reqh, u_int32_t retry_count));
-usbd_status usbd_abort_pipe __P((usbd_pipe_handle pipe));
-usbd_status usbd_abort_interface __P((usbd_interface_handle iface));
-usbd_status usbd_reset_pipe __P((usbd_pipe_handle pipe));
-usbd_status usbd_reset_interface __P((usbd_interface_handle iface));
-usbd_status usbd_clear_endpoint_stall __P((usbd_pipe_handle pipe));
-usbd_status usbd_clear_endpoint_stall_async __P((usbd_pipe_handle pipe));
-usbd_status usbd_set_pipe_state
- __P((usbd_pipe_handle pipe, usbd_pipe_state state));
-usbd_status usbd_get_pipe_state
- __P((usbd_pipe_handle pipe, usbd_pipe_state *state,
- u_int32_t *endpoint_state, u_int32_t *request_count));
-usbd_status usbd_set_interface_state
- __P((usbd_interface_handle iface, usbd_interface_state state));
-usbd_status usbd_get_interface_state
- __P((usbd_interface_handle iface, usbd_interface_state *state));
-usbd_status usbd_get_device_state
- __P((usbd_device_handle dev, usbd_device_state *state));
-usbd_status usbd_set_device_state
- __P((usbd_device_handle dev, usbd_device_state state));
-usbd_status usbd_device_address
- __P((usbd_device_handle dev, u_int8_t *address));
-usbd_status usbd_endpoint_address
- __P((usbd_pipe_handle dev, u_int8_t *address));
-usbd_status usbd_endpoint_count
- __P((usbd_interface_handle dev, u_int8_t *count));
-usbd_status usbd_interface_count
- __P((usbd_device_handle dev, u_int8_t *count));
-#if 0
-u_int8_t usbd_bus_count __P((void));
-#endif
-usbd_status usbd_get_bus_handle __P((u_int8_t index, usbd_bus_handle *bus));
-usbd_status usbd_get_root_hub
- __P((usbd_bus_handle bus, usbd_device_handle *dev));
-usbd_status usbd_port_count __P((usbd_device_handle hub, u_int8_t *nports));
-usbd_status usbd_hub2device_handle
- __P((usbd_device_handle hub, u_int8_t port, usbd_device_handle *dev));
-usbd_status usbd_request2pipe_handle
- __P((usbd_request_handle reqh, usbd_pipe_handle *pipe));
-usbd_status usbd_pipe2interface_handle
- __P((usbd_pipe_handle pipe, usbd_interface_handle *iface));
-usbd_status usbd_interface2device_handle
- __P((usbd_interface_handle iface, usbd_device_handle *dev));
-usbd_status usbd_device2bus_handle
- __P((usbd_device_handle dev, usbd_bus_handle *bus));
-usbd_status usbd_device2interface_handle
- __P((usbd_device_handle dev, u_int8_t ifaceno,
- usbd_interface_handle *iface));
-usbd_status usbd_set_interface_private_handle
- __P((usbd_interface_handle iface, usbd_private_handle priv));
-usbd_status usbd_get_interface_private_handle
- __P((usbd_interface_handle iface, usbd_private_handle *priv));
-usbd_status usbd_reference_pipe __P((usbd_pipe_handle pipe));
-usbd_status usbd_dereference_pipe __P((usbd_pipe_handle pipe));
-usbd_lock_token usbd_lock __P((void));
-void usbd_unlock __P((usbd_lock_token tok));
-
-/* Non-standard */
-usbd_status usbd_sync_transfer __P((usbd_request_handle req));
-usbd_status usbd_open_pipe_intr
- __P((usbd_interface_handle iface, u_int8_t address,
- u_int8_t flags, usbd_pipe_handle *pipe,
- usbd_private_handle priv, void *buffer,
- u_int32_t length, usbd_callback));
-usbd_status usbd_open_pipe_iso
- __P((usbd_interface_handle iface, u_int8_t address,
- u_int8_t flags, usbd_pipe_handle *pipe,
- usbd_private_handle priv, u_int32_t bufsize, u_int32_t nbuf,
- usbd_callback));
-usbd_status usbd_do_request
- __P((usbd_device_handle pipe, usb_device_request_t *req, void *data));
-usbd_status usbd_do_request_async
- __P((usbd_device_handle pipe, usb_device_request_t *req, void *data));
-usbd_status usbd_do_request_flags
- __P((usbd_device_handle pipe, usb_device_request_t *req,
- void *data, u_int16_t flags, int *));
-usb_interface_descriptor_t *usbd_get_interface_descriptor
- __P((usbd_interface_handle iface));
-usb_config_descriptor_t *usbd_get_config_descriptor
- __P((usbd_device_handle dev));
-usb_device_descriptor_t *usbd_get_device_descriptor
- __P((usbd_device_handle dev));
-usbd_status usbd_set_interface __P((usbd_interface_handle, int));
-int usbd_get_no_alts __P((usb_config_descriptor_t *, int));
-usbd_status usbd_get_interface
- __P((usbd_interface_handle iface, u_int8_t *aiface));
-void usbd_fill_deviceinfo
- __P((usbd_device_handle dev, struct usb_device_info *di));
-int usbd_get_interface_altindex __P((usbd_interface_handle iface));
-
-usb_interface_descriptor_t *usbd_find_idesc
- __P((usb_config_descriptor_t *cd, int iindex, int ano));
-usb_endpoint_descriptor_t *usbd_find_edesc
- __P((usb_config_descriptor_t *cd, int ifaceidx, int altidx,
- int endptidx));
-
-void usbd_dopoll __P((usbd_interface_handle));
-void usbd_set_polling __P((usbd_interface_handle iface, int on));
-
-/* NetBSD attachment information */
-
-/* Attach data */
-struct usb_attach_arg {
- int port;
- int configno;
- int ifaceno;
- usbd_device_handle device; /* current device */
- usbd_interface_handle iface; /* current interface */
- int usegeneric;
- usbd_interface_handle *ifaces; /* all interfaces */
- int nifaces; /* number of interfaces */
-};
-
-#if defined(__NetBSD__)
-/* Match codes. */
-/* First five codes is for a whole device. */
-#define UMATCH_VENDOR_PRODUCT_REV 14
-#define UMATCH_VENDOR_PRODUCT 13
-#define UMATCH_VENDOR_DEVCLASS_DEVPROTO 12
-#define UMATCH_DEVCLASS_DEVSUBCLASS_DEVPROTO 11
-#define UMATCH_DEVCLASS_DEVSUBCLASS 10
-/* Next six codes are for interfaces. */
-#define UMATCH_VENDOR_PRODUCT_REV_CONF_IFACE 9
-#define UMATCH_VENDOR_PRODUCT_CONF_IFACE 8
-#define UMATCH_VENDOR_IFACESUBCLASS_IFACEPROTO 7
-#define UMATCH_VENDOR_IFACESUBCLASS 6
-#define UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO 5
-#define UMATCH_IFACECLASS_IFACESUBCLASS 4
-#define UMATCH_IFACECLASS 3
-#define UMATCH_IFACECLASS_GENERIC 2
-/* Generic driver */
-#define UMATCH_GENERIC 1
-/* No match */
-#define UMATCH_NONE 0
-
-#elif defined(__FreeBSD__)
-/* FreeBSD needs values less than zero */
-/* for the moment disabled
-#define UMATCH_VENDOR_PRODUCT_REV -14
-#define UMATCH_VENDOR_PRODUCT -13
-#define UMATCH_VENDOR_DEVCLASS_DEVPROTO -12
-#define UMATCH_DEVCLASS_DEVSUBCLASS_DEVPROTO -11
-#define UMATCH_DEVCLASS_DEVSUBCLASS -10
-#define UMATCH_VENDOR_PRODUCT_REV_CONF_IFACE -9
-#define UMATCH_VENDOR_PRODUCT_CONF_IFACE -8
-#define UMATCH_VENDOR_IFACESUBCLASS_IFACEPROTO -7
-#define UMATCH_VENDOR_IFACESUBCLASS -6
-#define UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO -5
-#define UMATCH_IFACECLASS_IFACESUBCLASS -4
-#define UMATCH_IFACECLASS -3
-#define UMATCH_IFACECLASS_GENERIC -2
-#define UMATCH_GENERIC -1
-#define UMATCH_NONE ENXIO
-
-* For the moment we use Yes/No answers with appropriate
-* sorting in the config file
-*/
-#define UMATCH_VENDOR_PRODUCT_REV 0
-#define UMATCH_VENDOR_PRODUCT 0
-#define UMATCH_VENDOR_DEVCLASS_DEVPROTO 0
-#define UMATCH_DEVCLASS_DEVSUBCLASS_DEVPROTO 0
-#define UMATCH_DEVCLASS_DEVSUBCLASS 0
-#define UMATCH_VENDOR_PRODUCT_REV_CONF_IFACE 0
-#define UMATCH_VENDOR_PRODUCT_CONF_IFACE 0
-#define UMATCH_VENDOR_IFACESUBCLASS_IFACEPROTO 0
-#define UMATCH_VENDOR_IFACESUBCLASS 0
-#define UMATCH_IFACECLASS_IFACESUBCLASS_IFACEPROTO 0
-#define UMATCH_IFACECLASS_IFACESUBCLASS 0
-#define UMATCH_IFACECLASS 0
-#define UMATCH_IFACECLASS_GENERIC 0
-#define UMATCH_GENERIC 0
-#define UMATCH_NONE ENXIO
-
-
-#endif
-
-void usbd_devinfo __P((usbd_device_handle, int, char *));
-struct usbd_quirks *usbd_get_quirks __P((usbd_device_handle));
-void usbd_set_disco __P((usbd_pipe_handle, void (*)(void *), void *));
-usb_endpoint_descriptor_t *usbd_get_endpoint_descriptor
- __P((usbd_interface_handle iface, u_int8_t address));
-
-#if defined(__FreeBSD__)
-int usbd_driver_load __P((module_t mod, int what, void *arg));
-void usbd_device_set_desc __P((device_t device, char *devinfo));
-char *usbd_devname(bdevice *bdev);
-bus_print_child_t usbd_print_child;
-#endif
-
-/* XXX */
-#define splusb splbio
-#define IPL_USB IPL_BIO
-/* XXX */
-
diff --git a/sys/dev/usb/usbdi_util.c b/sys/dev/usb/usbdi_util.c
deleted file mode 100644
index fbb7a809ef40f..0000000000000
--- a/sys/dev/usb/usbdi_util.c
+++ /dev/null
@@ -1,511 +0,0 @@
-/* $NetBSD: usbdi_util.c,v 1.13 1999/01/08 11:58:26 augustss Exp $ */
-/* FreeBSD $Id: usbdi_util.c,v 1.5 1999/01/07 23:31:43 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/proc.h>
-#if defined(__FreeBSD__)
-#include <sys/bus.h>
-#endif
-
-#include <dev/usb/usb.h>
-#include <dev/usb/usbhid.h>
-
-#include <dev/usb/usbdi.h>
-#include <dev/usb/usbdi_util.h>
-
-#ifdef USB_DEBUG
-#define DPRINTF(x) if (usbdebug) printf x
-#define DPRINTFN(n,x) if (usbdebug>(n)) printf x
-extern int usbdebug;
-#else
-#define DPRINTF(x)
-#define DPRINTFN(n,x)
-#endif
-
-usbd_status
-usbd_get_desc(dev, type, index, len, desc)
- usbd_device_handle dev;
- int type, index;
- int len;
- void *desc;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_DEVICE;
- req.bRequest = UR_GET_DESCRIPTOR;
- USETW2(req.wValue, type, index);
- USETW(req.wIndex, 0);
- USETW(req.wLength, len);
- return (usbd_do_request(dev, &req, desc));
-}
-
-usbd_status
-usbd_get_config_desc(dev, conf, d)
- usbd_device_handle dev;
- int conf;
- usb_config_descriptor_t *d;
-{
- usbd_status r;
-
- DPRINTFN(3,("usbd_get_config_desc: conf=%d\n", conf));
- r = usbd_get_desc(dev, UDESC_CONFIG, conf,
- USB_CONFIG_DESCRIPTOR_SIZE, d);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (d->bDescriptorType != UDESC_CONFIG) {
- DPRINTFN(-1,("usbd_get_config_desc: conf %d, bad desc %d\n",
- conf, d->bDescriptorType));
- return (USBD_INVAL);
- }
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_get_config_desc_full(dev, conf, d, size)
- usbd_device_handle dev;
- int conf;
- void *d;
- int size;
-{
- DPRINTFN(3,("usbd_get_config_desc_full: conf=%d\n", conf));
- return (usbd_get_desc(dev, UDESC_CONFIG, conf, size, d));
-}
-
-usbd_status
-usbd_get_device_desc(dev, d)
- usbd_device_handle dev;
- usb_device_descriptor_t *d;
-{
- DPRINTFN(3,("usbd_get_device_desc:\n"));
- return (usbd_get_desc(dev, UDESC_DEVICE,
- 0, USB_DEVICE_DESCRIPTOR_SIZE, d));
-}
-
-usbd_status
-usbd_get_device_status(dev, st)
- usbd_device_handle dev;
- usb_status_t *st;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_DEVICE;
- req.bRequest = UR_GET_STATUS;
- USETW(req.wValue, 0);
- USETW(req.wIndex, 0);
- USETW(req.wLength, sizeof(usb_status_t));
- return (usbd_do_request(dev, &req, st));
-}
-
-usbd_status
-usbd_get_hub_status(dev, st)
- usbd_device_handle dev;
- usb_hub_status_t *st;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_CLASS_DEVICE;
- req.bRequest = UR_GET_STATUS;
- USETW(req.wValue, 0);
- USETW(req.wIndex, 0);
- USETW(req.wLength, sizeof(usb_hub_status_t));
- return (usbd_do_request(dev, &req, st));
-}
-
-usbd_status
-usbd_set_address(dev, addr)
- usbd_device_handle dev;
- int addr;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_WRITE_DEVICE;
- req.bRequest = UR_SET_ADDRESS;
- USETW(req.wValue, addr);
- USETW(req.wIndex, 0);
- USETW(req.wLength, 0);
- return usbd_do_request(dev, &req, 0);
-}
-
-usbd_status
-usbd_get_port_status(dev, port, ps)
- usbd_device_handle dev;
- int port;
- usb_port_status_t *ps;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_CLASS_OTHER;
- req.bRequest = UR_GET_STATUS;
- USETW(req.wValue, 0);
- USETW(req.wIndex, port);
- USETW(req.wLength, sizeof *ps);
- return (usbd_do_request(dev, &req, ps));
-}
-
-usbd_status
-usbd_clear_port_feature(dev, port, sel)
- usbd_device_handle dev;
- int port, sel;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_WRITE_CLASS_OTHER;
- req.bRequest = UR_CLEAR_FEATURE;
- USETW(req.wValue, sel);
- USETW(req.wIndex, port);
- USETW(req.wLength, 0);
- return (usbd_do_request(dev, &req, 0));
-}
-
-usbd_status
-usbd_set_port_feature(dev, port, sel)
- usbd_device_handle dev;
- int port, sel;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_WRITE_CLASS_OTHER;
- req.bRequest = UR_SET_FEATURE;
- USETW(req.wValue, sel);
- USETW(req.wIndex, port);
- USETW(req.wLength, 0);
- return (usbd_do_request(dev, &req, 0));
-}
-
-
-usbd_status
-usbd_set_protocol(iface, report)
- usbd_interface_handle iface;
- int report;
-{
- usb_interface_descriptor_t *id = usbd_get_interface_descriptor(iface);
- usbd_device_handle dev;
- usb_device_request_t req;
- usbd_status r;
-
- DPRINTFN(4, ("usbd_set_protocol: iface=%p, report=%d, endpt=%d\n",
- iface, report, id->bInterfaceNumber));
- if (!id)
- return (USBD_IOERROR);
- r = usbd_interface2device_handle(iface, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (!id)
- return (USBD_INVAL);
- req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
- req.bRequest = UR_SET_PROTOCOL;
- USETW(req.wValue, report);
- USETW(req.wIndex, id->bInterfaceNumber);
- USETW(req.wLength, 0);
- return (usbd_do_request(dev, &req, 0));
-}
-
-usbd_status
-usbd_set_report(iface, type, id, data, len)
- usbd_interface_handle iface;
- int type;
- int id;
- void *data;
- int len;
-{
- usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
- usbd_device_handle dev;
- usb_device_request_t req;
- usbd_status r;
-
- DPRINTFN(4, ("usbd_set_report: len=%d\n", len));
- if (!ifd)
- return (USBD_IOERROR);
- r = usbd_interface2device_handle(iface, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (!ifd)
- return (USBD_INVAL);
- req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
- req.bRequest = UR_SET_REPORT;
- USETW2(req.wValue, type, id);
- USETW(req.wIndex, ifd->bInterfaceNumber);
- USETW(req.wLength, len);
- return (usbd_do_request(dev, &req, data));
-}
-
-usbd_status
-usbd_set_report_async(iface, type, id, data, len)
- usbd_interface_handle iface;
- int type;
- int id;
- void *data;
- int len;
-{
- usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
- usbd_device_handle dev;
- usb_device_request_t req;
- usbd_status r;
-
- DPRINTFN(4, ("usbd_set_report_async: len=%d\n", len));
- if (!ifd)
- return (USBD_IOERROR);
- r = usbd_interface2device_handle(iface, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (!ifd)
- return (USBD_INVAL);
- req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
- req.bRequest = UR_SET_REPORT;
- USETW2(req.wValue, type, id);
- USETW(req.wIndex, ifd->bInterfaceNumber);
- USETW(req.wLength, len);
- return (usbd_do_request_async(dev, &req, data));
-}
-
-usbd_status
-usbd_get_report(iface, type, id, data, len)
- usbd_interface_handle iface;
- int type;
- int id;
- void *data;
- int len;
-{
- usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
- usbd_device_handle dev;
- usb_device_request_t req;
- usbd_status r;
-
- DPRINTFN(4, ("usbd_set_report: len=%d\n", len));
- if (!id)
- return (USBD_IOERROR);
- r = usbd_interface2device_handle(iface, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (!ifd)
- return (USBD_INVAL);
- req.bmRequestType = UT_READ_CLASS_INTERFACE;
- req.bRequest = UR_GET_REPORT;
- USETW2(req.wValue, type, id);
- USETW(req.wIndex, ifd->bInterfaceNumber);
- USETW(req.wLength, len);
- return (usbd_do_request(dev, &req, data));
-}
-
-usbd_status
-usbd_set_idle(iface, duration, id)
- usbd_interface_handle iface;
- int duration;
- int id;
-{
- usb_interface_descriptor_t *ifd = usbd_get_interface_descriptor(iface);
- usbd_device_handle dev;
- usb_device_request_t req;
- usbd_status r;
-
- DPRINTFN(4, ("usbd_set_idle: %d %d\n", duration, id));
- if (!ifd)
- return (USBD_IOERROR);
- r = usbd_interface2device_handle(iface, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- if (!ifd)
- return (USBD_INVAL);
- req.bmRequestType = UT_WRITE_CLASS_INTERFACE;
- req.bRequest = UR_SET_IDLE;
- USETW2(req.wValue, duration, id);
- USETW(req.wIndex, ifd->bInterfaceNumber);
- USETW(req.wLength, 0);
- return (usbd_do_request(dev, &req, 0));
-}
-
-usbd_status
-usbd_get_report_descriptor(dev, ifcno, repid, size, d)
- usbd_device_handle dev;
- int ifcno;
- int repid;
- int size;
- void *d;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_INTERFACE;
- req.bRequest = UR_GET_DESCRIPTOR;
- USETW2(req.wValue, UDESC_REPORT, repid);
- USETW(req.wIndex, ifcno);
- USETW(req.wLength, size);
- return (usbd_do_request(dev, &req, d));
-}
-
-usb_hid_descriptor_t *
-usbd_get_hid_descriptor(ifc)
- usbd_interface_handle ifc;
-{
- usb_interface_descriptor_t *idesc = usbd_get_interface_descriptor(ifc);
- usbd_device_handle dev;
- usb_config_descriptor_t *cdesc;
- usb_hid_descriptor_t *hd;
- char *p, *end;
- usbd_status r;
-
- if (!idesc)
- return (0);
- r = usbd_interface2device_handle(ifc, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (0);
- cdesc = usbd_get_config_descriptor(dev);
-
- p = (char *)idesc + idesc->bLength;
- end = (char *)cdesc + UGETW(cdesc->wTotalLength);
-
- for (; p < end; p += hd->bLength) {
- hd = (usb_hid_descriptor_t *)p;
- if (p + hd->bLength <= end && hd->bDescriptorType == UDESC_HID)
- return (hd);
- if (hd->bDescriptorType == UDESC_INTERFACE)
- break;
- }
- return (0);
-}
-
-usbd_status
-usbd_alloc_report_desc(ifc, descp, sizep, mem)
- usbd_interface_handle ifc;
- void **descp;
- int *sizep;
-#if defined(__NetBSD__)
- int mem;
-#elif defined(__FreeBSD__)
- struct malloc_type *mem;
-#endif
-
-{
- usb_interface_descriptor_t *id;
- usb_hid_descriptor_t *hid;
- usbd_device_handle dev;
- usbd_status r;
-
- r = usbd_interface2device_handle(ifc, &dev);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- id = usbd_get_interface_descriptor(ifc);
- if (!id)
- return (USBD_INVAL);
- hid = usbd_get_hid_descriptor(ifc);
- if (!hid)
- return (USBD_IOERROR);
- *sizep = UGETW(hid->descrs[0].wDescriptorLength);
- *descp = malloc(*sizep, mem, M_NOWAIT);
- if (!*descp)
- return (USBD_NOMEM);
- /* XXX should not use 0 Report ID */
- r = usbd_get_report_descriptor(dev, id->bInterfaceNumber, 0,
- *sizep, *descp);
- if (r != USBD_NORMAL_COMPLETION) {
- free(*descp, mem);
- return (r);
- }
- return (USBD_NORMAL_COMPLETION);
-}
-
-usbd_status
-usbd_get_config(dev, conf)
- usbd_device_handle dev;
- u_int8_t *conf;
-{
- usb_device_request_t req;
-
- req.bmRequestType = UT_READ_DEVICE;
- req.bRequest = UR_GET_CONFIG;
- USETW(req.wValue, 0);
- USETW(req.wIndex, 0);
- USETW(req.wLength, 1);
- return (usbd_do_request(dev, &req, conf));
-}
-
-static void usbd_bulk_transfer_cb __P((usbd_request_handle reqh,
- usbd_private_handle priv, usbd_status status));
-static void
-usbd_bulk_transfer_cb(reqh, priv, status)
- usbd_request_handle reqh;
- usbd_private_handle priv;
- usbd_status status;
-{
- wakeup(reqh);
-}
-
-usbd_status
-usbd_bulk_transfer(reqh, pipe, flags, buf, size, lbl)
- usbd_request_handle reqh;
- usbd_pipe_handle pipe;
- u_int16_t flags;
- void *buf;
- u_int32_t *size;
- char *lbl;
-{
- usbd_private_handle priv;
- void *buffer;
- usbd_status r;
- int s, error;
-
- r = usbd_setup_request(reqh, pipe, 0, buf, *size,
- flags, USBD_NO_TIMEOUT, usbd_bulk_transfer_cb);
- if (r != USBD_NORMAL_COMPLETION)
- return (r);
- DPRINTFN(1, ("usbd_bulk_transfer: start transfer %d bytes\n", *size));
- s = splusb(); /* don't want callback until tsleep() */
- r = usbd_transfer(reqh);
- if (r != USBD_IN_PROGRESS) {
- splx(s);
- return (r);
- }
- error = tsleep((caddr_t)reqh, PZERO | PCATCH, lbl, 0);
- splx(s);
- if (error) {
- usbd_abort_pipe(pipe);
- return (USBD_INTERRUPTED);
- }
- usbd_get_request_status(reqh, &priv, &buffer, size, &r);
- DPRINTFN(1,("usbd_bulk_transfer: transferred %d\n", *size));
- if (r != USBD_NORMAL_COMPLETION) {
- DPRINTF(("usbd_bulk_transfer: error=%d\n", r));
- usbd_clear_endpoint_stall(pipe);
- }
- return (r);
-}
-
diff --git a/sys/dev/usb/usbdi_util.h b/sys/dev/usb/usbdi_util.h
deleted file mode 100644
index f5d700d1d91ce..0000000000000
--- a/sys/dev/usb/usbdi_util.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* $NetBSD: usbdi_util.h,v 1.12 1999/01/01 15:25:57 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-usbd_status usbd_get_desc __P((usbd_device_handle dev, int type,
- int index, int len, void *desc));
-usbd_status usbd_get_config_desc __P((usbd_device_handle, int,
- usb_config_descriptor_t *));
-usbd_status usbd_get_config_desc_full __P((usbd_device_handle, int,
- void *, int));
-usbd_status usbd_get_device_desc __P((usbd_device_handle dev,
- usb_device_descriptor_t *d));
-usbd_status usbd_set_address __P((usbd_device_handle dev, int addr));
-usbd_status usbd_get_port_status __P((usbd_device_handle,
- int, usb_port_status_t *));
-usbd_status usbd_set_port_feature __P((usbd_device_handle dev, int, int));
-usbd_status usbd_clear_port_feature __P((usbd_device_handle, int, int));
-usbd_status usbd_get_device_status __P((usbd_device_handle,usb_status_t*));
-usbd_status usbd_get_hub_status __P((usbd_device_handle dev,
- usb_hub_status_t *st));
-usbd_status usbd_set_protocol __P((usbd_interface_handle dev, int report));
-usbd_status usbd_get_report_descriptor
- __P((usbd_device_handle dev, int ifcno, int repid, int size, void *d));
-struct usb_hid_descriptor *usbd_get_hid_descriptor
- __P((usbd_interface_handle ifc));
-usbd_status usbd_set_report
- __P((usbd_interface_handle iface,int type,int id,void *data,int len));
-usbd_status usbd_set_report_async
- __P((usbd_interface_handle iface,int type,int id,void *data,int len));
-usbd_status usbd_get_report
- __P((usbd_interface_handle iface,int type,int id,void *data,int len));
-usbd_status usbd_set_idle
- __P((usbd_interface_handle iface, int duration, int id));
-#if defined(__NetBSD__)
-usbd_status usbd_alloc_report_desc
- __P((usbd_interface_handle ifc, void **descp, int *sizep, int mem));
-#elif defined(__FreeBSD__)
-usbd_status usbd_alloc_report_desc
- __P((usbd_interface_handle ifc, void **descp, int *sizep, struct malloc_type * mem));
-#endif
-usbd_status usbd_get_config
- __P((usbd_device_handle dev, u_int8_t *conf));
-usbd_status usbd_get_string_desc
- __P((usbd_device_handle dev, int sindex, int langid,
- usb_string_descriptor_t *sdesc));
-void usbd_delay_ms __P((usbd_device_handle, u_int));
-
-
-usbd_status usbd_set_config_no
- __P((usbd_device_handle dev, int no, int msg));
-usbd_status usbd_set_config_index
- __P((usbd_device_handle dev, int index, int msg));
-
-usbd_status usbd_bulk_transfer
- __P((usbd_request_handle reqh, usbd_pipe_handle pipe, u_int16_t flags,
- void *buf, u_int32_t *size, char *lbl));
diff --git a/sys/dev/usb/usbdivar.h b/sys/dev/usb/usbdivar.h
deleted file mode 100644
index 7c89b777e3d03..0000000000000
--- a/sys/dev/usb/usbdivar.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/* $NetBSD: usbdivar.h,v 1.16 1999/01/08 11:58:26 augustss Exp $ */
-/* FreeBSD $Id: usbdivar.h,v 1.6 1999/01/07 23:31:45 n_hibma Exp $ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-struct usbd_request;
-struct usbd_pipe;
-
-struct usbd_endpoint {
- usb_endpoint_descriptor_t *edesc;
- usbd_endpoint_state state;
- int refcnt;
- int toggle; /* XXX */
-};
-
-typedef void (*usbd_xfercb)__P((usbd_request_handle req));
-
-struct usbd_methods {
- usbd_status (*transfer)__P((usbd_request_handle reqh));
- usbd_status (*start)__P((usbd_request_handle reqh));
- void (*abort)__P((usbd_request_handle reqh));
- void (*close)__P((usbd_pipe_handle pipe));
- usbd_status (*isobuf)__P((usbd_pipe_handle pipe,
- u_int32_t bufsize,u_int32_t nbuf));
-};
-
-struct usbd_port {
- usb_port_status_t status;
- u_int16_t power; /* mA of current on port */
- u_int8_t portno;
- u_int8_t restartcnt;
-#define USBD_RESTART_MAX 5
- struct usbd_device *device;
- struct usbd_device *parent; /* The ports hub */
-};
-
-struct usbd_hub {
- usbd_status (*explore)__P((usbd_device_handle hub));
- void *hubsoftc;
- usb_hub_descriptor_t hubdesc;
- struct usbd_port ports[1];
-};
-
-struct usb_softc;
-
-/*****/
-
-struct usbd_bus {
- /* Filled by HC driver */
- bdevice bdev; /* base device, host adapter */
- usbd_status (*open_pipe)__P((struct usbd_pipe *pipe));
- u_int32_t pipe_size; /* size of a pipe struct */
- void (*do_poll)__P((struct usbd_bus *));
- /* Filled by usb driver */
- struct usbd_device *root_hub;
- usbd_device_handle devices[USB_MAX_DEVICES];
- char needs_explore;/* a hub a signalled a change */
- char use_polling;
- struct usb_softc *usbctl;
- struct usb_device_stats stats;
-};
-
-struct usbd_device {
- struct usbd_bus *bus;
- usbd_device_state state;
- struct usbd_pipe *default_pipe;
- u_int8_t address;
- u_int8_t depth;
- u_int8_t lowspeed;
- u_int16_t power;
- u_int8_t self_powered;
- int config;
- int langid; /* language to use for strings */
-#define USBD_NOLANG (-1)
- struct usbd_port *powersrc;
- struct usbd_endpoint def_ep; /* for pipe 0 */
- usb_endpoint_descriptor_t def_ep_desc; /* for pipe 0 */
- struct usbd_interface *ifaces;
- usb_device_descriptor_t ddesc;
- usb_config_descriptor_t *cdesc; /* full config descr */
- struct usbd_quirks *quirks;
- struct usbd_hub *hub; /* only if this is a hub */
- void *softc; /* device softc if attached */
-};
-
-struct usbd_interface {
- struct usbd_device *device;
- usbd_interface_state state;
- usb_interface_descriptor_t *idesc;
- int index;
- int altindex;
- struct usbd_endpoint *endpoints;
- void *priv;
- LIST_HEAD(, usbd_pipe) pipes;
-};
-
-struct usbd_pipe {
- struct usbd_interface *iface;
- struct usbd_device *device;
- struct usbd_endpoint *endpoint;
- usbd_pipe_state state;
- int32_t refcnt;
- char running;
- SIMPLEQ_HEAD(, usbd_request) queue;
- LIST_ENTRY(usbd_pipe) next;
-
- void (*disco) __P((void *));
- void *discoarg;
-
- usbd_request_handle intrreqh; /* used for repeating requests */
-
- /* Filled by HC driver. */
- struct usbd_methods *methods;
-};
-
-struct usbd_request {
- struct usbd_pipe *pipe;
- void *priv;
- void *buffer;
- u_int32_t length;
- u_int32_t actlen;
- u_int16_t flags;
- u_int32_t timeout;
- usbd_status status;
- usbd_callback callback;
- usbd_xfercb xfercb;
- u_int32_t retries;
- char done;
-
- usb_device_request_t request;
- u_int8_t isreq;
-
- SIMPLEQ_ENTRY(usbd_request) next;
-
- void *hcpriv; /* XXX private use by the HC driver */
-
-#if defined(__FreeBSD__)
- struct callout_handle timo_handle;
-#endif
-};
-
-void usbd_init __P((void));
-
-/* Routines from usb_subr.c */
-int usbctlprint __P((void *, const char *));
-void usb_delay_ms __P((usbd_bus_handle, u_int));
-void usbd_devinfo_vp __P((usbd_device_handle, char *, char *));
-usbd_status usbd_reset_port __P((usbd_device_handle dev,
- int port, usb_port_status_t *ps));
-usbd_status usbd_setup_pipe __P((usbd_device_handle dev,
- usbd_interface_handle iface,
- struct usbd_endpoint *,
- usbd_pipe_handle *pipe));
-usbd_status usbd_new_device __P((bdevice *parent,
- usbd_bus_handle bus, int depth,
- int lowspeed, int port,
- struct usbd_port *));
-void usbd_remove_device __P((usbd_device_handle,
- struct usbd_port *));
-int usbd_printBCD __P((char *cp, int bcd));
-usbd_status usb_insert_transfer __P((usbd_request_handle reqh));
-void usb_start_next __P((usbd_pipe_handle pipe));
-usbd_status usbd_fill_iface_data __P((usbd_device_handle dev,
- int i, int a));
-
-/* Routines from usb.c */
-int usb_bus_count __P((void));
-usbd_status usb_get_bus_handle __P((int, usbd_bus_handle *));
-void usb_needs_explore __P((usbd_bus_handle));
-
-/* Locator stuff. */
-
-#if defined(__NetBSD__)
-#include "locators.h"
-#elif defined(__FreeBSD__)
-/* XXX these values are used to statically bind some elements in the USB tree
- * to specific driver instances. This should be somehow emulated in FreeBSD
- * but can be done later on.
- * The values are copied from the files.usb file in the NetBSD sources.
- */
-#define UHUBCF_PORT_DEFAULT -1
-#define UHUBCF_CONFIGURATION_DEFAULT -1
-#define UHUBCF_INTERFACE_DEFAULT -1
-#endif
-
-#define uhubcf_port cf_loc[UHUBCF_PORT]
-#define uhubcf_configuration cf_loc[UHUBCF_CONFIGURATION]
-#define uhubcf_interface cf_loc[UHUBCF_INTERFACE]
-#define UHUB_UNK_PORT UHUBCF_PORT_DEFAULT /* wildcarded 'port' */
-#define UHUB_UNK_CONFIGURATION UHUBCF_CONFIGURATION_DEFAULT /* wildcarded 'configuration' */
-#define UHUB_UNK_INTERFACE UHUBCF_INTERFACE_DEFAULT /* wildcarded 'interface' */
-
diff --git a/sys/dev/usb/usbhid.h b/sys/dev/usb/usbhid.h
deleted file mode 100644
index edec4130e1473..0000000000000
--- a/sys/dev/usb/usbhid.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* $NetBSD: usbhid.h,v 1.3 1998/12/26 12:53:04 augustss Exp $ */
-/* FreeBSD $Id$ */
-
-/*
- * Copyright (c) 1998 The NetBSD Foundation, Inc.
- * All rights reserved.
- *
- * This code is derived from software contributed to The NetBSD Foundation
- * by Lennart Augustsson (augustss@carlstedt.se) at
- * Carlstedt Research & Technology.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the NetBSD
- * Foundation, Inc. and its contributors.
- * 4. Neither the name of The NetBSD Foundation nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#ifndef _USBHID_H_
-#define _USBHID_H_
-
-#define UR_GET_HID_DESCRIPTOR 0x06
-#define UDESC_HID 0x21
-#define UDESC_REPORT 0x22
-#define UDESC_PHYSICAL 0x23
-#define UR_SET_HID_DESCRIPTOR 0x07
-#define UR_GET_REPORT 0x01
-#define UR_SET_REPORT 0x09
-#define UR_GET_IDLE 0x02
-#define UR_SET_IDLE 0x0a
-#define UR_GET_PROTOCOL 0x03
-#define UR_SET_PROTOCOL 0x0b
-
-typedef struct usb_hid_descriptor {
- uByte bLength;
- uByte bDescriptorType;
- uWord bcdHID;
- uByte bCountryCode;
- uByte bNumDescriptors;
- struct {
- uByte bDescriptorType;
- uWord wDescriptorLength;
- } descrs[1];
-} usb_hid_descriptor_t;
-#define USB_HID_DESCRIPTOR_SIZE(n) (9+(n)*3)
-
-/* Usage pages */
-#define HUP_GENERIC_DESKTOP 0x0001
-#define HUP_SIMULATION 0x0002
-#define HUP_LEDS 0x0008
-#define HUP_BUTTON 0x0009
-
-/* Usages, generic desktop */
-#define HUG_POINTER 0x0001
-#define HUG_MOUSE 0x0002
-#define HUG_JOYSTICK 0x0004
-#define HUG_GAME_PAD 0x0005
-#define HUG_KEYBOARD 0x0006
-#define HUG_KEYPAD 0x0007
-#define HUG_X 0x0030
-#define HUG_Y 0x0031
-#define HUG_Z 0x0032
-#define HUG_RX 0x0033
-#define HUG_RY 0x0034
-#define HUG_RZ 0x0035
-#define HUG_SLIDER 0x0036
-#define HUG_DIAL 0x0037
-#define HUG_WHEEL 0x0038
-#define HUG_HAT_SWITCH 0x0039
-#define HUG_COUNTED_BUFFER 0x003a
-#define HUG_BYTE_COUNT 0x003b
-#define HUG_MOTION_WAKEUP 0x003c
-#define HUG_VX 0x0040
-#define HUG_VY 0x0041
-#define HUG_VZ 0x0042
-#define HUG_VBRX 0x0043
-#define HUG_VBRY 0x0044
-#define HUG_VBRZ 0x0045
-#define HUG_VNO 0x0046
-#define HUG_SYSTEM_CONTROL 0x0080
-#define HUG_SYSTEM_POWER_DOWN 0x0081
-#define HUG_SYSTEM_SLEEP 0x0082
-#define HUG_SYSTEM_WAKEUP 0x0083
-#define HUG_SYSTEM_CONTEXT_MENU 0x0084
-#define HUG_SYSTEM_MAIN_MENU 0x0085
-#define HUG_SYSTEM_APP_MENU 0x0086
-#define HUG_SYSTEM_MENU_HELP 0x0087
-#define HUG_SYSTEM_MENU_EXIT 0x0088
-#define HUG_SYSTEM_MENU_SELECT 0x0089
-#define HUG_SYSTEM_MENU_RIGHT 0x008a
-#define HUG_SYSTEM_MENU_LEFT 0x008b
-#define HUG_SYSTEM_MENU_UP 0x008c
-#define HUG_SYSTEM_MENU_DOWN 0x008d
-
-#define HID_USAGE2(p,u) (((p) << 16) | u)
-
-#define UHID_INPUT_REPORT 0x01
-#define UHID_OUTPUT_REPORT 0x02
-#define UHID_FEATURE_REPORT 0x03
-
-/* Bits in the input/output/feature items */
-#define HIO_CONST 0x001
-#define HIO_VARIABLE 0x002
-#define HIO_RELATIVE 0x004
-#define HIO_WRAP 0x008
-#define HIO_NONLINEAR 0x010
-#define HIO_NOPREF 0x020
-#define HIO_NULLSTATE 0x040
-#define HIO_VOLATILE 0x080
-#define HIO_BUFBYTES 0x100
-
-#endif /* _USBHID_H_ */
diff --git a/sys/dev/vinum/COPYRIGHT b/sys/dev/vinum/COPYRIGHT
deleted file mode 100644
index ed43ff1f54ebb..0000000000000
--- a/sys/dev/vinum/COPYRIGHT
+++ /dev/null
@@ -1,37 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: COPYRIGHT,v 1.1.1.1 1998/09/16 05:56:21 grog Exp $
- */
diff --git a/sys/dev/vinum/Makefile b/sys/dev/vinum/Makefile
deleted file mode 100644
index 363aa7a1e1b5f..0000000000000
--- a/sys/dev/vinum/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-# $Id: Makefile,v 1.4 1998/12/28 04:56:22 peter Exp $
-
-.PATH: ${.CURDIR}/../../sys/dev/ccd
-KMOD= vinum_mod
-SRCS= vinum.c vinum.h vnode_if.h parser.c config.c io.c util.c vinumhdr.h request.h \
- state.c memory.c request.c lock.c vinumext.h vinumio.h vinumkw.h \
- vinumstate.h vinumvar.h revive.c vinumioctl.c interrupt.c
-NOMAN=
-PSEUDO_LKM=
-CFLAGS = -I${.CURDIR} -O -g -DVINUMDEBUG -Wall -Wno-unused -Wno-parentheses
-
-CLEANFILES+= vinum.h vnode_if.h vnode_if.c
-
-all:
-
-# We don't need this, but the Makefile wants it
-vinum.h:
- touch $@
-
-state.h: maketabs vinumstate.h
- ./maketabs >state.h
-
-maketabs: maketabs.c
- ${CC} -g -o maketabs maketabs.c
-
-.include <bsd.kmod.mk>
diff --git a/sys/dev/vinum/makestatetext b/sys/dev/vinum/makestatetext
deleted file mode 100755
index 02a927e4e3080..0000000000000
--- a/sys/dev/vinum/makestatetext
+++ /dev/null
@@ -1,78 +0,0 @@
-#!/bin/sh
-# Make statetexts.h from vinumstate.h
-# $Id: makestatetext,v 1.5 1999/01/15 07:30:45 grog Exp grog $
-infile=vinumstate.h
-ofile=statetexts.h
-cat > $ofile <<FOO
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called \`\`Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided \`\`as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- */
-
-FOO
-
-echo >>$ofile "/* Created by $0 on" `date`. "Do not edit */"
-echo >>$ofile
-echo >>$ofile "/* Drive state texts */"
-echo >>$ofile "char *drivestatetext [] =
- { "
-egrep -e 'drive_[A-z0-9]*,' <$infile | grep -v = | sed 's: *drive_\([^,]*\).*: \"\1\",:' >>$ofile
-cat <<FOO >> $ofile
- };
-
-/* Subdisk state texts */
-char *sdstatetext [] =
- {
-FOO
-egrep -e 'sd_[A-z0-9]*,' $infile | grep -v = | sed 's: *sd_\([^,]*\).*: \"\1\",:' >>$ofile
-cat <<FOO >> $ofile
- };
-
-/* Plex state texts */
-char *plexstatetext [] =
- {
-FOO
-egrep -e 'plex_[A-z0-9]*,' $infile | grep -v = | sed 's: *plex_\([^,]*\).*: \"\1\",:' >>$ofile
-cat <<FOO >> $ofile
- };
-
-/* Volume state texts */
-char *volstatetext [] =
- {
-FOO
-egrep -e 'volume_[A-z0-9]*,' $infile | grep -v = | sed 's: *volume_\([^,]*\).*: \"\1\",:' >>$ofile
-cat <<FOO >> $ofile
- };
-FOO
diff --git a/sys/dev/vinum/request.h b/sys/dev/vinum/request.h
deleted file mode 100644
index dfeb19604ca2c..0000000000000
--- a/sys/dev/vinum/request.h
+++ /dev/null
@@ -1,220 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: request.h,v 1.13 1999/01/14 05:46:22 grog Exp grog $
- */
-
-/* Information needed to set up a transfer */
-
-enum xferinfo {
- XFR_NORMAL_READ = 1,
- XFR_NORMAL_WRITE = 2, /* write request in normal mode */
- XFR_RECOVERY_READ = 4,
- XFR_DEGRADED_WRITE = 8,
- XFR_PARITYLESS_WRITE = 0x10,
- XFR_NO_PARITY_STRIPE = 0x20, /* parity stripe is not available */
- XFR_DATA_BLOCK = 0x40, /* data block in request */
- XFR_PARITY_BLOCK = 0x80, /* parity block in request */
- XFR_BAD_SUBDISK = 0x100, /* this subdisk is dead */
- XFR_MALLOCED = 0x200, /* this buffer is malloced */
-#if VINUMDEBUG
- XFR_PHASE2 = 0x800, /* documentation only: 2nd phase write */
-#endif
- XFR_REVIVECONFLICT = 0x1000, /* possible conflict with a revive operation */
- /* operations that need a parity block */
- XFR_PARITYOP = (XFR_NORMAL_WRITE | XFR_RECOVERY_READ | XFR_DEGRADED_WRITE),
- /* operations that use the group parameters */
- XFR_GROUPOP = (XFR_DEGRADED_WRITE | XFR_RECOVERY_READ),
- /* operations that that use the data parameters */
- XFR_DATAOP = (XFR_NORMAL_READ | XFR_NORMAL_WRITE | XFR_PARITYLESS_WRITE),
- /* operations requiring read before write */
- XFR_RBW = (XFR_NORMAL_WRITE | XFR_DEGRADED_WRITE),
- /* operations that need a malloced buffer */
- XFR_NEEDS_MALLOC = (XFR_NORMAL_WRITE | XFR_RECOVERY_READ | XFR_DEGRADED_WRITE)
-};
-
-/* Describe one low-level request, part
- * of a high-level request. This is an
- * extended struct buf buffer, and the first
- * element *must* be a struct buf. We pass this structure
- * to the I/O routines instead of a struct buf in oder
- * to be able to locate the high-level request when it
- * completes.
- *
- * All offsets and lengths are in "blocks", i.e. sectors */
-struct rqelement {
- struct buf b; /* buf structure */
- struct rqgroup *rqg; /* pointer to our group */
- /* Information about the transfer */
- daddr_t sdoffset; /* offset in subdisk */
- int useroffset; /* offset in user buffer of normal data */
- /* dataoffset and datalen refer to "individual"
- * data transfers (normal read, parityless write)
- * and also degraded write.
- *
- * groupoffset and grouplen refer to the other
- * "group" operations (normal write, recovery read)
- * Both the offsets are relative to the start of the
- * local buffer */
- int dataoffset; /* offset in buffer of the normal data */
- int groupoffset; /* offset in buffer of group data */
- short datalen; /* length of normal data (sectors) */
- short grouplen; /* length of group data (sectors) */
- short buflen; /* total buffer length to allocate */
- short flags; /* really enum xferinfo (see above) */
- /* Ways to find other components */
- short sdno; /* subdisk number */
- short driveno; /* drive number */
-};
-
-/* A group of requests built to satisfy a certain
- * component of a user request */
-struct rqgroup {
- struct rqgroup *next; /* pointer to next group */
- struct request *rq; /* pointer to the request */
- short count; /* number of requests in this group */
- short active; /* and number active */
- short plexno; /* index of plex */
- int badsdno; /* index of bad subdisk or -1 */
- enum xferinfo flags; /* description of transfer */
- struct rqelement rqe[0]; /* and the elements of this request */
-};
-
-/* Describe one high-level request and the
- * work we have to do to satisfy it */
-struct request {
- struct buf *bp; /* pointer to the high-level request */
- enum xferinfo flags;
- union {
- int volno; /* volume index */
- int plexno; /* or plex index */
- } volplex;
- int error; /* current error indication */
- int sdno; /* reviving subdisk (XFR_REVIVECONFLICT) */
- short isplex; /* set if this is a plex request */
- short active; /* number of subrequests still active */
- struct rqgroup *rqg; /* pointer to the first group of requests */
- struct rqgroup *lrqg; /* and to the last group of requests */
- struct request *next; /* link of waiting requests */
-};
-
-/* Extended buffer header for subdisk I/O. Includes
- * a pointer to the user I/O request. */
-struct sdbuf {
- struct buf b; /* our buffer */
- struct buf *bp; /* and pointer to parent */
- short driveno; /* drive index */
- short sdno; /* and subdisk index */
-};
-
-/* Values returned by rqe and friends.
- * Be careful with these: they are in order of increasing
- * seriousness. Some routines check for > REQUEST_RECOVERED
- * to indicate a completely failed request. */
-enum requeststatus {
- REQUEST_OK, /* request built OK */
- REQUEST_RECOVERED, /* request OK, but involves RAID5 recovery */
- REQUEST_EOF, /* request failed: outside plex */
- REQUEST_DOWN, /* request failed: subdisk down */
- REQUEST_ENOMEM /* ran out of memory */
-};
-
-#ifdef VINUMDEBUG
-/* Trace entry for request info (DEBUG_LASTREQS) */
-enum rqinfo_type {
- loginfo_unused, /* never been used */
- loginfo_user_bp, /* this is the bp when strategy is called */
- loginfo_user_bpl, /* and this is the bp at launch time */
- loginfo_rqe, /* user RQE */
- loginfo_iodone, /* iodone */
- loginfo_raid5_data, /* write RAID-5 data block */
- loginfo_raid5_parity /* write RAID-5 parity block */
-};
-
-union rqinfou { /* info to pass to logrq */
- struct buf *bp;
- struct rqelement *rqe; /* address of request, for correlation */
-};
-
-struct rqinfo {
- enum rqinfo_type type; /* kind of event */
- struct timeval timestamp; /* time it happened */
- struct buf *bp; /* point to user buffer */
- union {
- struct buf b; /* yup, the *whole* buffer header */
- struct rqelement rqe; /* and the whole rqe */
- } info;
-};
-
-#define RQINFO_SIZE 128 /* number of info slots in buffer */
-
-void logrq(enum rqinfo_type type, union rqinfou info, struct buf *ubp);
-#endif
-
-/* Structures for the daemon */
-
-/* types of request to the daemon */
-enum daemonrq {
- daemonrq_none, /* dummy to catch bugs */
- daemonrq_ioerror, /* error occurred on I/O */
- daemonrq_saveconfig, /* save configuration */
- daemonrq_return, /* return to userland */
- daemonrq_ping, /* show sign of life */
- daemonrq_init, /* initialize a plex */
- daemonrq_revive, /* revive a subdisk */
-};
-
-/* info field for daemon requests */
-union daemoninfo { /* and the request information */
- struct request *rq; /* for daemonrq_ioerror */
- struct sd *sd; /* for daemonrq_revive */
- struct plex *plex; /* for daemonrq_init */
-};
-
-struct daemonq {
- struct daemonq *next; /* pointer to next element in queue */
- enum daemonrq type; /* type of request */
- union daemoninfo info; /* and the request information */
-};
-
-void queue_daemon_request(enum daemonrq type, union daemoninfo info);
-
-extern int daemon_options;
-
-enum daemon_option {
- daemon_verbose = 1, /* talk about what we're doing */
- daemon_stopped = 2,
- daemon_noupdate = 4, /* don't update the disk config, for recovery */
-};
diff --git a/sys/dev/vinum/statetexts.h b/sys/dev/vinum/statetexts.h
deleted file mode 100644
index 1388400b46eea..0000000000000
--- a/sys/dev/vinum/statetexts.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- */
-
-/* Created by ./makestatetext on Wed Jan 20 16:30:10 CST 1999. Do not edit */
-
-/* Drive state texts */
-char *drivestatetext[] =
-{
- "unallocated",
- "uninit",
- "down",
- "up",
-};
-
-/* Subdisk state texts */
-char *sdstatetext[] =
-{
- "unallocated",
- "uninit",
- "init",
- "empty",
- "initializing",
- "obsolete",
- "stale",
- "crashed",
- "down",
- "reviving",
- "reborn",
- "up",
-};
-
-/* Plex state texts */
-char *plexstatetext[] =
-{
- "unallocated",
- "init",
- "faulty",
- "down",
- "initializing",
- "corrupt",
- "degraded",
- "flaky",
- "up",
-};
-
-/* Volume state texts */
-char *volstatetext[] =
-{
- "unallocated",
- "uninit",
- "down",
- "up",
-};
diff --git a/sys/dev/vinum/vinum.c b/sys/dev/vinum/vinum.c
deleted file mode 100644
index 5d0dad245559d..0000000000000
--- a/sys/dev/vinum/vinum.c
+++ /dev/null
@@ -1,501 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinum.c,v 1.23 1999/01/15 05:03:15 grog Exp grog $
- */
-
-#define STATIC /* nothing while we're testing XXX */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-#include <sys/sysproto.h> /* for sync(2) */
-#ifdef VINUMDEBUG
-#include <sys/reboot.h>
-int debug = 0;
-#endif
-#include <dev/vinum/request.h>
-
-STATIC struct cdevsw vinum_cdevsw =
-{
- vinumopen, vinumclose, vinumread, vinumwrite,
- vinumioctl, nostop, nullreset, nodevtotty,
- seltrue, nommap, vinumstrategy, "vinum",
- NULL, -1, vinumdump, vinumsize,
- D_DISK, 0, -1
-};
-
-/* Called by main() during pseudo-device attachment. */
-STATIC void vinumattach(void *);
-
-STATIC void vinumgetdisklabel(dev_t);
-int vinum_inactive(void);
-void free_vinum(int);
-
-#ifndef ACTUALLY_LKM_NOT_KERNEL
-STATIC int vinum_modevent(module_t mod, modeventtype_t type, void *unused);
-#endif
-
-/* Why aren't these declared anywhere? XXX */
-int setjmp(jmp_buf);
-void longjmp(jmp_buf, int);
-
-extern jmp_buf command_fail; /* return here if config fails */
-
-struct _vinum_conf vinum_conf; /* configuration information */
-
-STATIC int vinum_devsw_installed = 0;
-
-/*
- * Called by main() during pseudo-device attachment. All we need
- * to do is allocate enough space for devices to be configured later, and
- * add devsw entries.
- */
-void
-vinumattach(void *dummy)
-{
- char *buf; /* pointer to temporary buffer */
- struct _ioctl_reply *ioctl_reply; /* struct to return */
- struct uio uio;
- struct iovec iovec;
-
- /* modload should prevent multiple loads, so this is worth a panic */
- if ((vinum_conf.flags & VF_LOADED) != NULL)
- panic("vinum: already loaded");
-
- printf("vinum: loaded\n");
- vinum_conf.flags |= VF_LOADED; /* we're loaded now */
-
- daemonq = NULL; /* initialize daemon's work queue */
- dqend = NULL;
-
- cdevsw_add_generic(BDEV_MAJOR, CDEV_MAJOR, &vinum_cdevsw);
-#ifdef DEVFS
-#error DEVFS not finished yet
-#endif
-
- uio.uio_iov = &iovec;
- uio.uio_iovcnt = 1; /* just one buffer */
- uio.uio_offset = 0; /* start at the beginning */
- uio.uio_resid = 512; /* one sector */
- uio.uio_segflg = UIO_SYSSPACE; /* we're in system space */
- uio.uio_rw = UIO_READ; /* do we need this? */
- uio.uio_procp = curproc; /* do it for our own process */
-
- iovec.iov_len = 512;
- buf = (char *) Malloc(iovec.iov_len); /* get a buffer */
- CHECKALLOC(buf, "vinum: no memory\n"); /* can't get 512 bytes? */
- iovec.iov_base = buf; /* read into buf */
-
- /* allocate space: drives... */
- DRIVE = (struct drive *) Malloc(sizeof(struct drive) * INITIAL_DRIVES);
- CHECKALLOC(DRIVE, "vinum: no memory\n");
- vinum_conf.drives_allocated = INITIAL_DRIVES; /* number of drive slots allocated */
- vinum_conf.drives_used = 0; /* and number in use */
-
- /* volumes, ... */
- VOL = (struct volume *) Malloc(sizeof(struct volume) * INITIAL_VOLUMES);
- CHECKALLOC(VOL, "vinum: no memory\n");
- vinum_conf.volumes_allocated = INITIAL_VOLUMES; /* number of volume slots allocated */
- vinum_conf.volumes_used = 0; /* and number in use */
-
- /* plexes, ... */
- PLEX = (struct plex *) Malloc(sizeof(struct plex) * INITIAL_PLEXES);
- CHECKALLOC(PLEX, "vinum: no memory\n");
- vinum_conf.plexes_allocated = INITIAL_PLEXES; /* number of plex slots allocated */
- vinum_conf.plexes_used = 0; /* and number in use */
-
- /* and subdisks */
- SD = (struct sd *) Malloc(sizeof(struct sd) * INITIAL_SUBDISKS);
- CHECKALLOC(SD, "vinum: no memory\n");
- vinum_conf.subdisks_allocated = INITIAL_SUBDISKS; /* number of sd slots allocated */
- vinum_conf.subdisks_used = 0; /* and number in use */
-
- ioctl_reply = NULL; /* no reply on longjmp */
-}
-
-/* Check if we have anything open. If so, return 0 (not inactive),
- * otherwise 1 (inactive) */
-int
-vinum_inactive(void)
-{
- int i;
- int can_do = 1; /* assume we can do it */
-
- lock_config();
- for (i = 0; i < vinum_conf.volumes_used; i++) {
- if (VOL[i].opencount != 0) { /* volume is open */
- can_do = 0;
- break;
- }
- }
- unlock_config();
- return can_do;
-}
-
-/* Free all structures.
- * If cleardrive is 0, save the configuration; otherwise
- * remove the configuration from the drive.
- *
- * Before coming here, ensure that no volumes are open.
- */
-void
-free_vinum(int cleardrive)
-{
- int i;
-
- if (cleardrive) {
- for (i = 0; i < vinum_conf.drives_used; i++)
- remove_drive(i); /* remove the drive */
- } else { /* keep the config */
- save_config();
- if (DRIVE != NULL) {
- for (i = 0; i < vinum_conf.drives_used; i++)
- free_drive(&DRIVE[i]); /* close files and things */
- Free(DRIVE);
- }
- }
- queue_daemon_request(daemonrq_return, NULL); /* tell daemon to stop */
- if (SD != NULL)
- Free(SD);
- if (PLEX != NULL) {
- for (i = 0; i < vinum_conf.plexes_used; i++) {
- struct plex *plex = &vinum_conf.plex[i];
-
- if (plex->state != plex_unallocated) { /* we have real data there */
- if (plex->sdnos)
- Free(plex->sdnos);
- }
- }
- Free(PLEX);
- }
- if (VOL != NULL)
- Free(VOL);
- bzero(&vinum_conf, sizeof(vinum_conf));
- while ((daemon_options & daemon_stopped) == 0) /* daemon hasn't stopped yet, */
- tsleep(&vinum_daemon, PRIBIO, "vdaemn", 10 * hz); /* wait for it to stop */
- tsleep(&vinum_daemon, PRIBIO, "diedie", 3 * hz); /* and wait another 3 secs XXX */
-}
-
-#ifdef ACTUALLY_LKM_NOT_KERNEL /* stuff for LKMs */
-
-MOD_MISC(vinum);
-
-/*
- * Function called when loading the driver.
- */
-
-STATIC int
-vinum_load(struct lkm_table *lkmtp, int cmd)
-{
- vinumattach(NULL);
- return 0; /* OK */
-}
-
-/*
- * Function called when unloading the driver.
- */
-STATIC int
-vinum_unload(struct lkm_table *lkmtp, int cmd)
-{
- if (vinum_inactive()) { /* is anything open? */
- struct sync_args dummyarg =
- {0};
-
- printf("vinum: unloaded\n");
- sync(curproc, &dummyarg); /* write out buffers */
- free_vinum(0); /* no: clean up */
- cdevsw[CDEV_MAJOR] = NULL; /* and cdevsw */
- return 0;
- } else
- return EBUSY;
-}
-
-/*
- * Dispatcher function for the module (load/unload/stat).
- */
-int
-vinum_mod(struct lkm_table *lkmtp, int cmd, int ver)
-{
- MOD_DISPATCH(vinum, /* module name */
- lkmtp, /* LKM table */
- cmd, /* command */
- ver,
- vinum_load, /* load with this function */
- vinum_unload, /* and unload with this */
- lkm_nullcmd);
-}
-
-#else /* not LKM */
-
-STATIC int
-vinum_modevent(module_t mod, modeventtype_t type, void *unused)
-{
- struct sync_args dummyarg =
- {0};
-
- switch (type) {
- case MOD_LOAD:
- vinumattach(NULL);
- return 0; /* OK */
- case MOD_UNLOAD:
- if (!vinum_inactive()) /* is anything open? */
- return EBUSY;
- sync(curproc, &dummyarg); /* write out buffers */
- free_vinum(0); /* no: clean up */
- cdevsw[CDEV_MAJOR] = NULL; /* and cdevsw */
- return 0;
- default:
- break;
- }
- return 0;
-}
-
-moduledata_t vinum_mod =
-{
- "vinum",
- vinum_modevent,
- 0
-};
-DECLARE_MODULE(vinum, vinum_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);
-
-#endif /* LKM */
-
-/* ARGSUSED */
-/* Open a vinum object
- * At the moment, we only open volumes and the
- * super device. It's a nice concept to be
- * able to open drives, subdisks and plexes, but
- * I can't think what good it could be */
-int
-vinumopen(dev_t dev,
- int flags,
- int fmt,
- struct proc *p)
-{
- int s; /* spl */
- int error;
- unsigned int index;
- struct volume *vol;
- struct plex *plex;
- struct sd *sd;
- struct devcode *device;
-
- device = (struct devcode *) &dev;
-
- error = 0;
- /* First, decide what we're looking at */
- switch (device->type) {
- case VINUM_VOLUME_TYPE:
- index = Volno(dev);
- if (index >= vinum_conf.volumes_used)
- return ENXIO; /* no such device */
- vol = &VOL[index];
-
- switch (vol->state) {
- case volume_unallocated:
- case volume_uninit:
- return ENXIO;
-
- case volume_up:
- vol->opencount = 1;
- vol->pid = p->p_pid; /* and say who we are (do we need this? XXX) */
- return 0;
-
- case volume_down:
- return EIO;
-
- default:
- return EINVAL;
- }
-
- case VINUM_PLEX_TYPE:
- if (Volno(dev) >= vinum_conf.volumes_used)
- return ENXIO;
- index = Plexno(dev); /* get plex index in vinum_conf */
- if (index >= vinum_conf.plexes_used)
- return ENXIO; /* no such device */
- plex = &PLEX[index];
-
- switch (plex->state) {
- case plex_unallocated:
- return EINVAL;
-
- default:
- s = splhigh();
- if (plex->pid /* it's open already */
- && (plex->pid != p->p_pid)) { /* and not by us, */
- splx(s);
- return EBUSY; /* one at a time, please */
- }
- plex->pid = p->p_pid; /* and say who we are (do we need this? XXX) */
- splx(s);
- return 0;
- }
-
- case VINUM_SD_TYPE:
- if ((Volno(dev) >= vinum_conf.volumes_used) || /* no such volume */
- (Plexno(dev) >= vinum_conf.plexes_used)) /* or no such plex */
- return ENXIO; /* no such device */
- index = Sdno(dev); /* get the subdisk number */
- if (index >= vinum_conf.subdisks_used)
- return ENXIO; /* no such device */
- sd = &SD[index];
-
- /* Opening a subdisk is always a special operation, so we
- * ignore the state as long as it represents a real subdisk */
- switch (sd->state) {
- case sd_unallocated:
- case sd_uninit:
- return EINVAL;
-
- default:
- s = splhigh();
- if (sd->pid /* it's open already */
- && (sd->pid != p->p_pid)) { /* and not by us, */
- splx(s);
- return EBUSY; /* one at a time, please */
- }
- sd->pid = p->p_pid; /* and say who we are (do we need this? XXX) */
- splx(s);
- return 0;
- }
-
- case VINUM_DRIVE_TYPE:
- default:
- return ENODEV; /* don't know what to do with these */
-
- case VINUM_SUPERDEV_TYPE:
- if (p->p_ucred->cr_uid == 0) { /* root calling, */
- vinum_conf.opencount = 1; /* we're open */
- return 0; /* no worries opening super dev */
- } else
- return EPERM; /* you can't do that! */
- }
-}
-
-/* ARGSUSED */
-int
-vinumclose(dev_t dev,
- int flags,
- int fmt,
- struct proc *p)
-{
- unsigned int index;
- struct volume *vol;
- struct plex *plex;
- struct sd *sd;
- struct devcode *device = (struct devcode *) &dev;
-
- index = Volno(dev);
- /* First, decide what we're looking at */
- switch (device->type) {
- case VINUM_VOLUME_TYPE:
- if (index >= vinum_conf.volumes_used)
- return ENXIO; /* no such device */
- vol = &VOL[index];
-
- switch (vol->state) {
- case volume_unallocated:
- case volume_uninit:
- return ENXIO;
-
- case volume_up:
- vol->opencount = 0; /* reset our flags */
- vol->pid = NULL; /* and forget who owned us */
- return 0;
-
- case volume_down:
- return EIO;
-
- default:
- return EINVAL;
- }
-
- case VINUM_PLEX_TYPE:
- if (Volno(dev) >= vinum_conf.volumes_used)
- return ENXIO;
- index = Plexno(dev); /* get plex index in vinum_conf */
- if (index >= vinum_conf.plexes_used)
- return ENXIO; /* no such device */
- plex = &PLEX[index];
- plex->pid = 0;
- return 0;
-
- case VINUM_SD_TYPE:
- if ((Volno(dev) >= vinum_conf.volumes_used) || /* no such volume */
- (Plexno(dev) >= vinum_conf.plexes_used)) /* or no such plex */
- return ENXIO; /* no such device */
- index = Sdno(dev); /* get the subdisk number */
- if (index >= vinum_conf.subdisks_used)
- return ENXIO; /* no such device */
- sd = &SD[index];
- sd->pid = 0;
- return 0;
-
- case VINUM_SUPERDEV_TYPE:
- if (p->p_ucred->cr_uid == 0) /* root calling, */
- vinum_conf.opencount = 0; /* no longer open */
- return 0; /* no worries closing super dev */
-
- case VINUM_DRIVE_TYPE:
- default:
- return ENODEV; /* don't know what to do with these */
- }
-}
-
-/* size routine */
-int
-vinumsize(dev_t dev)
-{
- struct volume *vol;
- int size;
-
- vol = &VOL[Volno(dev)];
-
- if (vol->state == volume_up)
- size = vol->size;
- else
- return 0; /* err on the size of conservatism */
-
- return size;
-}
-
-int
-vinumdump(dev_t dev)
-{
- /* Not implemented. */
- return ENXIO;
-}
diff --git a/sys/dev/vinum/vinumconfig.c b/sys/dev/vinum/vinumconfig.c
deleted file mode 100644
index 32e56b9250560..0000000000000
--- a/sys/dev/vinum/vinumconfig.c
+++ /dev/null
@@ -1,1730 +0,0 @@
-/* To do:
-
- * Don't store drive configuration on the config DB: read each drive's header
- * to decide where it is.
- *
- * Accept any old crap in the config_<foo> functions, and complain when
- * we try to bring it up.
- *
- * When trying to bring volumes up, check that the complete address range
- * is covered.
- */
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumconfig.c,v 1.22 1998/12/30 05:07:24 grog Exp grog $
- */
-
-#define STATIC /* nothing while we're testing XXX */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-
-extern jmp_buf command_fail; /* return on a failed command */
-
-/* Why aren't these declared anywhere? XXX */
-void longjmp(jmp_buf, int);
-
-#define MAXTOKEN 64 /* maximum number of tokens in a line */
-
-/* We can afford the luxury of global variables here,
- * since start_config ensures that these functions
- * are single-threaded. */
-
-/* These are indices in vinum_conf of the last-mentioned of each kind of object */
-static int current_drive = -1; /* note the last drive we mention, for
- * some defaults */
-static int current_plex = -1; /* and the same for the last plex */
-static int current_volume = -1; /* and the last volme */
-static struct _ioctl_reply *ioctl_reply; /* struct to return via ioctl */
-
-
-/* These values are used by most of these routines, so set them as globals */
-static char *token[MAXTOKEN]; /* pointers to individual tokens */
-static int tokens; /* number of tokens */
-
-#define TOCONS 0x01
-#define TOTTY 0x02
-#define TOLOG 0x04
-
-struct putchar_arg {
- int flags;
- struct tty *tty;
-};
-
-#define MSG_MAX 1024 /* maximum length of a formatted message */
-/* Format an error message and return to the user in the reply.
- * CARE: This routine is designed to be called only from the
- * configuration routines, so it assumes it's the owner of
- * the configuration lock, and unlocks it on exit */
-void
-throw_rude_remark(int error, char *msg,...)
-{
- int retval;
- va_list ap;
- char *text;
- static int finishing; /* don't recurse */
- int was_finishing;
-
- va_start(ap, msg);
- if ((ioctl_reply != NULL) /* we're called from the user */
- &&(!(vinum_conf.flags & VF_KERNELOP))) { /* and we're not doing kernel things: return msg */
- /* XXX We can't just format to ioctl_reply, since it
- * may contain our input parameters */
- text = Malloc(MSG_MAX);
- if (text == NULL) {
- printf("vinum: can't allocate error message buffer");
- printf("vinum: ");
- vprintf(msg, ap); /* print to the console */
- printf("\n");
- } else {
- retval = kvprintf(msg, NULL, (void *) text, 10, ap);
- text[retval] = '\0'; /* delimit */
- strcpy(ioctl_reply->msg, text);
- ioctl_reply->error = error; /* first byte is the error number */
- Free(text);
- }
- } else {
- printf("vinum: ");
- vprintf(msg, ap); /* print to the console */
- printf("\n");
- }
- va_end(ap);
-
- if (vinum_conf.flags & VF_READING_CONFIG) /* go through to the bitter end, */
- return;
- /* We have a problem here: we want to unlock the
- * configuration, which implies tidying up, but
- * if we find an error while tidying up, we could
- * recurse for ever. Use this kludge to only try
- * once */
- was_finishing = finishing;
- finishing = 1;
- finish_config(was_finishing); /* unlock anything we may be holding */
- finishing = was_finishing;
- longjmp(command_fail, error);
-}
-
-/* Function declarations */
-int atoi(char *); /* no atoi in the kernel */
-
-/* Minimal version of atoi */
-int
-atoi(char *s)
-{ /* no atoi in the kernel */
- int r = 0;
- int sign = 1;
-
- while (((*s >= '0') && (*s <= '9')) || (*s == '-')) {
- if (*s == '-')
- sign = -sign;
- else
- r = r * 10 + (*s - '0');
- }
- return r;
-}
-
-/* Find index of volume in vinum_conf. Return the index
- * if found, or -1 if not */
-int
-volume_index(struct volume *vol)
-{
- int i;
-
- for (i = 0; i < vinum_conf.volumes_used; i++)
- if (&VOL[i] == vol)
- return i;
- return -1;
-}
-
-/* Find index of plex in vinum_conf. Return the index
- * if found, or -1 if not */
-int
-plex_index(struct plex *plex)
-{
- int i;
-
- for (i = 0; i < vinum_conf.plexes_used; i++)
- if (&PLEX[i] == plex)
- return i;
- return -1;
-}
-
-/* Find index of subdisk in vinum_conf. Return the index
- * if found, or -1 if not */
-int
-sd_index(struct sd *sd)
-{
- int i;
-
- for (i = 0; i < vinum_conf.subdisks_used; i++)
- if (&SD[i] == sd)
- return i;
- return -1;
-}
-
-/* Find index of drive in vinum_conf. Return the index
- * if found, or -1 if not */
-int
-drive_index(struct drive *drive)
-{
- int i;
-
- for (i = 0; i < vinum_conf.drives_used; i++)
- if (&DRIVE[i] == drive)
- return i;
- return -1;
-}
-
-/* Check a volume to see if the plex is already assigned to it.
- * Return index in volume->plex, or -1 if not assigned */
-int
-my_plex(int volno, int plexno)
-{
- int i;
- struct volume *vol;
-
- vol = &VOL[volno]; /* point to volno */
- for (i = 0; i < vol->plexes; i++)
- if (vol->plex[i] == plexno)
- return i;
- return -1; /* not found */
-}
-
-/* Check a plex to see if the subdisk is already assigned to it.
- * Return index in plex->sd, or -1 if not assigned */
-int
-my_sd(int plexno, int sdno)
-{
- int i;
- struct plex *plex;
-
- plex = &PLEX[plexno];
- for (i = 0; i < plex->subdisks; i++)
- if (plex->sdnos[i] == sdno)
- return i;
- return -1; /* not found */
-}
-
-/* Check that this operation is being done in the kernel.
- * longjmp out if not. op the name of the operation. */
-void
-checkkernel(char *op)
-{
- if (vinum_conf.flags & VF_KERNELOP == 0)
- throw_rude_remark(EPERM, "Can't perform '%s' from user space", op);
-}
-
-/* Add plex to the volume if possible */
-int
-give_plex_to_volume(int volno, int plexno)
-{
- struct volume *vol;
-
- /* XXX It's not an error for the plex to already
- * belong to the volume, but we need to check a
- * number of things to make sure it's done right.
- * Some day. */
- if (my_plex(volno, plexno) >= 0)
- return plexno; /* that's it */
-
- vol = &VOL[volno]; /* point to volume */
- if (vol->plexes == MAXPLEX) /* all plexes allocated */
- throw_rude_remark(ENOSPC,
- "Too many plexes for volume %s",
- vol->name);
- else if ((vol->plexes > 0) /* we have other plexes */
- &&(vol->flags & VF_CONFIG_SETUPSTATE == 0)) /* and we're not setting up state */
- invalidate_subdisks(&PLEX[plexno], sd_stale); /* make the subdisks invalid */
- vol->plex[vol->plexes] = plexno; /* this one */
- vol->plexes++; /* add another plex */
- PLEX[plexno].volno = volno; /* note the number of our volume */
-
- return vol->plexes - 1; /* and return its index */
-}
-
-/* Add subdisk to a plex if possible */
-int
-give_sd_to_plex(int plexno, int sdno)
-{
- int i;
- struct plex *plex;
- struct sd *sd;
-
- /* XXX It's not an error for the sd to already
- * belong to the plex, but we need to check a
- * number of things to make sure it's done right.
- * Some day. */
- i = my_sd(plexno, sdno);
- if (i >= 0) /* does it already belong to us? */
- return i; /* that's it */
-
- plex = &PLEX[plexno]; /* point to the plex */
- sd = &SD[sdno]; /* and the subdisk */
-
- /* Do we have an offset? Otherwise put it after the last one */
- if (sd->plexoffset < 0) { /* no offset specified */
- if (plex->subdisks > 0) {
- struct sd *lastsd = &SD[plex->sdnos[plex->subdisks - 1]]; /* last subdisk */
-
- if (plex->organization == plex_concat) /* concat, */
- sd->plexoffset = lastsd->sectors + lastsd->plexoffset; /* starts here */
- else /* striped or RAID-5, */
- sd->plexoffset = plex->stripesize * plex->subdisks; /* starts here */
- } else /* first subdisk */
- sd->plexoffset = 0; /* start at the beginning */
- }
- if (plex->subdisks == MAXSD) /* we already have our maximum */
- throw_rude_remark(ENOSPC, /* crap out */
- "Can't add %s to %s: plex full\n",
- sd->name,
- plex->name);
-
- plex->subdisks++; /* another entry */
- if (plex->subdisks >= plex->subdisks_allocated) /* need more space */
- EXPAND(plex->sdnos, int, plex->subdisks_allocated, INITIAL_SUBDISKS_IN_PLEX);
-
- /* Adjust size of plex and volume. */
- plex->length += sd->sectors; /* plex gets this much bigger */
- if (plex->volno >= 0) /* we have a volume */
- VOL[plex->volno].size = max(VOL[plex->volno].size, plex->length); /* adjust its size */
-
- /* We need to check that the subdisks don't overlap,
- * but we can't do that until a point where we *must*
- * know the size of all the subdisks. That's not
- * here. But we need to sort them by offset */
- for (i = 0; i < plex->subdisks - 1; i++) {
- if (sd->plexoffset < SD[plex->sdnos[i]].plexoffset) { /* it fits before this one */
- /* First move any remaining subdisks by one */
- int j;
-
- for (j = plex->subdisks - 1; j > i; j--) /* move up one at a time */
- plex->sdnos[j] = plex->sdnos[j - 1];
- plex->sdnos[i] = sdno;
- sd->plexsdno = i; /* note where we are in the subdisk */
- return i;
- }
- }
-
- /* The plex doesn't have any subdisk with a larger
- * offset. Insert it */
- plex->sdnos[i] = sdno;
- sd->plexsdno = i; /* note where we are in the subdisk */
- return i;
-}
-
-/* Add a subdisk to drive if possible. The pointer to the drive
- * must already be stored in the sd structure, but the drive
- * doesn't know about the subdisk yet. */
-static void
-give_sd_to_drive(int sdno)
-{
- struct sd *sd; /* pointer to subdisk */
- struct drive *drive; /* and drive */
- int fe; /* index in free list */
-
- sd = &SD[sdno]; /* point to sd */
- drive = &DRIVE[sd->driveno]; /* and drive */
-
- if (drive->state != drive_up)
- update_sd_state(sdno); /* that crashes the subdisk */
- if (sd->sectors > drive->sectors_available) { /* too big, */
- sd->driveoffset = -1; /* don't be confusing */
- throw_rude_remark(ENOSPC, "No space for %s on %s", sd->name, drive->label.name);
- }
- drive->subdisks_used++; /* one more subdisk */
-
- /* no offset specified, find one */
- if (sd->driveoffset < 0) {
- for (fe = 0; fe < drive->freelist_entries; fe++) {
- if (drive->freelist[fe].sectors >= sd->sectors) { /* it'll fit here */
- sd->driveoffset = drive->freelist[fe].offset;
- if (sd->sectors == drive->freelist[fe].sectors) { /* used up the entire entry */
- if (fe < (drive->freelist_entries - 1)) /* not the last one, */
- bcopy(&drive->freelist[fe + 1],
- &drive->freelist[fe],
- (drive->freelist_entries - fe) * sizeof(struct drive_freelist));
- drive->freelist_entries--; /* one less entry */
- } else {
- drive->freelist[fe].sectors -= sd->sectors; /* this much less space */
- drive->freelist[fe].offset += sd->sectors; /* this much further on */
- }
- drive->sectors_available -= sd->sectors; /* and note how much less space we have */
- break;
- }
- }
- if (fe == drive->freelist_entries)
- /* Didn't find anything. Although the drive has
- * enough space, it's too fragmented */
- {
- sd->driveoffset = -1; /* don't be confusing */
- throw_rude_remark(ENOSPC, "No space for %s on %s", sd->name, drive->label.name);
- }
- } else { /* specific offset */
- /* For a specific offset to work, the space must be
- * entirely in a single freelist entry. Look for it. */
- u_int64_t sdend = sd->driveoffset + sd->sectors; /* end of our subdisk */
- for (fe = 0; fe < drive->freelist_entries; fe++) {
- u_int64_t dend = drive->freelist[fe].offset + drive->freelist[fe].sectors; /* end of entry */
- if (dend >= sdend) { /* fits before here */
- if (drive->freelist[fe].offset > sd->driveoffset) /* starts after the beginning of sd area */
- throw_rude_remark(ENOSPC,
- "No space for subdisk %s on drive %s at offset %qd\n",
- sd->name,
- drive->label.name);
-
- /* We've found the space, and we can allocate it.
- * We don't need to say that to the subdisk, which
- * already knows about it. We need to tell it to
- * the free list, though. We have four possibilities:
- *
- * 1. The subdisk exactly eats up the entry. That's the
- * same as above.
- * 2. The subdisk starts at the beginning and leaves space
- * at the end.
- * 3. The subdisk starts after the beginning and leaves
- * space at the end as well: we end up with another
- * fragment.
- * 4. The subdisk leaves space at the beginning and finishes
- * at the end.
- */
- drive->sectors_available -= sd->sectors; /* note how much less space we have */
- if (sd->driveoffset == drive->freelist[fe].offset) { /* 1 or 2 */
- if (sd->sectors == drive->freelist[fe].sectors) { /* 1: used up the entire entry */
- if (fe < (drive->freelist_entries - 1)) /* not the last one, */
- bcopy(&drive->freelist[fe + 1],
- &drive->freelist[fe],
- (drive->freelist_entries - fe) * sizeof(struct drive_freelist));
- drive->freelist_entries--; /* one less entry */
- } else { /* 2: space at the end */
- drive->freelist[fe].sectors -= sd->sectors; /* this much less space */
- drive->freelist[fe].offset += sd->sectors; /* this much further on */
- }
- } else { /* 3 or 4 */
- drive->freelist[fe].sectors = sd->driveoffset - drive->freelist[fe].offset;
- if (dend > sdend) { /* 3: space at the end as well */
- if (fe < (drive->freelist_entries - 1)) /* not the last one */
- bcopy(&drive->freelist[fe], /* move the rest down */
- &drive->freelist[fe + 1],
- (drive->freelist_entries - fe) * sizeof(struct drive_freelist));
- drive->freelist_entries++; /* one less entry */
- drive->freelist[fe + 1].offset = sdend; /* second entry starts after sd */
- drive->freelist[fe + 1].sectors = dend - sdend; /* and is this long */
- }
- }
- break;
- }
- }
- }
- drive->opencount++; /* one more subdisk attached */
-}
-
-/* Get an empty drive entry from the drive table */
-int
-get_empty_drive(void)
-{
- int driveno;
- struct drive *drive;
-
- /* first see if we have one which has been deallocated */
- for (driveno = 0; driveno < vinum_conf.drives_used; driveno++) {
- if (DRIVE[driveno].state == drive_unallocated) /* bingo */
- break;
- }
-
- if (driveno >= vinum_conf.drives_used)
- /* Couldn't find a deallocated drive. Allocate a new one */
- {
- vinum_conf.drives_used++;
- if (vinum_conf.drives_used > vinum_conf.drives_allocated) /* we've used all our allocation */
- EXPAND(DRIVE, struct drive, vinum_conf.drives_allocated, INITIAL_DRIVES);
- }
- /* got a drive entry. Make it pretty */
- drive = &DRIVE[driveno];
- bzero(drive, sizeof(struct drive));
- drive->driveno = driveno; /* put number in structure */
- return driveno; /* return the index */
-}
-
-/* Find the named drive in vinum_conf.drive, return a pointer
- * return the index in vinum_conf.drive.
- * Don't mark the drive as allocated (XXX SMP)
- * If create != 0, create an entry if it doesn't exist
- */
-/* XXX check if we have it open from attach */
-int
-find_drive(const char *name, int create)
-{
- int driveno;
- struct drive *drive;
-
- if (name != NULL) {
- for (driveno = 0; driveno < vinum_conf.drives_used; driveno++) {
- drive = &DRIVE[driveno]; /* point to drive */
- if ((drive->label.name[0] != '\0') /* it has a name */
- &&(strcmp(drive->label.name, name) == 0)) /* and it's this one: found */
- return driveno;
- }
- }
- /* the drive isn't in the list. Add it if he wants */
- if (create == 0) /* don't want to create */
- return -1; /* give up */
-
- driveno = get_empty_drive();
- drive = &DRIVE[driveno];
- if (name != NULL)
- bcopy(name, /* put in its name */
- drive->label.name,
- min(sizeof(drive->label.name),
- strlen(name)));
- drive->state = drive_uninit; /* in use, nothing worthwhile there */
- drive->flags |= VF_NEWBORN; /* newly born drive */
- return driveno; /* return the index */
-}
-
-/* Find a drive given its device name.
- * devname must be valid.
- * Otherwise the same as find_drive above */
-int
-find_drive_by_dev(const char *devname, int create)
-{
- int driveno;
- struct drive *drive;
-
- for (driveno = 0; driveno < vinum_conf.drives_used; driveno++) {
- drive = &DRIVE[driveno]; /* point to drive */
- if ((drive->label.name[0] != '\0') /* it has a name */
- &&(strcmp(drive->devicename, devname) == 0)) /* and it's this one: found */
- return driveno;
- }
-
- /* the drive isn't in the list. Add it if he wants */
- if (create == 0) /* don't want to create */
- return -1; /* give up */
-
- driveno = get_empty_drive();
- drive = &DRIVE[driveno];
- bcopy(devname, /* put in its name */
- drive->devicename,
- min(sizeof(drive->devicename),
- strlen(devname)));
- drive->state = drive_uninit; /* in use, nothing worthwhile there */
- drive->flags |= VF_NEWBORN; /* newly born drive */
- return driveno; /* return the index */
-}
-
-/* Find an empty subdisk in the subdisk table */
-int
-get_empty_sd(void)
-{
- int sdno;
- struct sd *sd;
-
- /* first see if we have one which has been deallocated */
- for (sdno = 0; sdno < vinum_conf.subdisks_used; sdno++) {
- if (SD[sdno].state == sd_unallocated) /* bingo */
- break;
- }
-
- if (sdno >= vinum_conf.subdisks_used) { /* No unused sd found. Allocate a new one */
- vinum_conf.subdisks_used++;
- if (vinum_conf.subdisks_used > vinum_conf.subdisks_allocated)
- EXPAND(SD, struct sd, vinum_conf.subdisks_allocated, INITIAL_SUBDISKS);
- }
- /* initialize some things */
- sd = &SD[sdno]; /* point to it */
- bzero(sd, sizeof(struct sd)); /* initialize */
- sd->plexno = -1; /* no plex */
- sd->driveno = -1; /* and no drive */
- sd->plexoffset = -1; /* and no offsets */
- sd->driveoffset = -1;
- return sdno; /* return the index */
-}
-
-/* return a drive to the free pool */
-void
-free_drive(struct drive *drive)
-{
- lockdrive(drive);
- if (drive->vp != NULL) /* device open */
- vn_close(drive->vp, FREAD | FWRITE, FSCRED, drive->p);
- bzero(drive, sizeof(struct drive)); /* this also sets drive_unallocated */
- vinum_conf.drives_used--; /* one less drive */
- unlockdrive(drive);
-}
-
-/* Find the named subdisk in vinum_conf.sd.
-
- * If create != 0, create an entry if it doesn't exist
- *
- * Return index in vinum_conf.sd
- */
-int
-find_subdisk(const char *name, int create)
-{
- int sdno;
- struct sd *sd;
-
- for (sdno = 0; sdno < vinum_conf.subdisks_allocated; sdno++) {
- if (strcmp(SD[sdno].name, name) == 0) /* found it */
- return sdno;
- }
-
- /* the subdisk isn't in the list. Add it if he wants */
- if (create == 0) /* don't want to create */
- return -1; /* give up */
-
- /* Allocate one and insert the name */
- sdno = get_empty_sd();
- sd = &SD[sdno];
- bcopy(name, sd->name, min(sizeof(sd->name), strlen(name))); /* put in its name */
- sd->flags |= VF_NEWBORN; /* newly born subdisk */
- return sdno; /* return the pointer */
-}
-
-/* Free an allocated sd entry
- * This performs memory management only. remove()
- * is responsible for checking relationships.
- */
-void
-free_sd(int sdno)
-{
- struct sd *sd;
- struct drive *drive;
- int fe; /* free list entry */
- u_int64_t sdend; /* end of our subdisk */
- u_int64_t dend; /* end of our freelist entry */
-
- sd = &SD[sdno];
- if ((sd->driveno >= 0) /* we have a drive, */
- &&(sd->sectors > 0)) { /* and some space on it */
- drive = &DRIVE[sd->driveno];
- sdend = sd->driveoffset + sd->sectors; /* end of our subdisk */
-
- /* Look for where to return the sd address space */
- for (fe = 0;
- (fe < drive->freelist_entries) && (drive->freelist[fe].offset < sd->driveoffset);
- fe++);
- /* Now we are pointing to the last entry, the first
- * with a higher offset than the subdisk, or both. */
- if ((fe > 1) /* not the first entry */
- &&((fe == drive->freelist_entries) /* gone past the end */
- ||(drive->freelist[fe].offset > sd->driveoffset))) /* or past the block were looking for */
- fe--; /* point to the block before */
- dend = drive->freelist[fe].offset + drive->freelist[fe].sectors; /* end of the entry */
-
- /* At this point, we are pointing to the correct
- * place in the free list. A number of possibilities
- * exist:
- *
- * 1. The block to be freed immediately follows
- * the block to which we are pointing. Just
- * enlarge it.
- * 2. The block to be freed starts at the end of
- * the current block and ends at the beginning
- * of the following block. Merge the three
- * areas into a single block.
- * 3. The block to be freed starts after the end
- * of the block and ends before the start of
- * the following block. Create a new free block.
- * 4. The block to be freed starts after the end
- * of the block, but ends at the start of the
- * following block. Enlarge the following block
- * downwards.
- *
- */
- if (sd->driveoffset == dend) { /* it starts after the end of this block */
- if ((fe < drive->freelist_entries - 1) /* we're not the last block in the free list */
- &&(sdend == drive->freelist[fe + 1].offset)) { /* and the subdisk ends at the start of the
- * next block */
- drive->freelist[fe].sectors = drive->freelist[fe + 1].sectors; /* 2: merge all three blocks */
- if (fe < drive->freelist_entries - 2) /* still more blocks after next */
- bcopy(&drive->freelist[fe + 2], /* move down one */
- &drive->freelist[fe + 1],
- (drive->freelist_entries - 2 - fe) * sizeof(struct drive_freelist));
- drive->freelist_entries--; /* one less entry in the free list */
- } else /* 1: just enlarge this block */
- drive->freelist[fe].sectors += sd->sectors;
- } else {
- if (sd->driveoffset > dend) /* it starts after this block */
- fe++; /* so look at the next block */
- if ((fe < drive->freelist_entries) /* we're not the last block in the free list */
- &&(sdend == drive->freelist[fe].offset)) { /* and the subdisk ends at the start of
- * this block: case 4 */
- drive->freelist[fe].offset = sd->driveoffset; /* it starts where the sd was */
- drive->freelist[fe].sectors += sd->sectors; /* and it's this much bigger */
- } else { /* case 3: non-contiguous */
- if (fe < drive->freelist_entries) /* not after the last block, */
- bcopy(&drive->freelist[fe], /* move the rest up one entry */
- &drive->freelist[fe + 1],
- (drive->freelist_entries - fe) * sizeof(struct drive_freelist));
- drive->freelist_entries++; /* one less entry */
- drive->freelist[fe].offset = sd->driveoffset; /* this entry represents the sd */
- drive->freelist[fe].sectors = sd->sectors;
- }
- }
- drive->opencount--; /* one less subdisk attached */
- }
- bzero(sd, sizeof(struct sd)); /* and clear it out */
- sd->state = sd_unallocated;
- vinum_conf.subdisks_used--; /* one less sd */
-}
-
-/* Find an empty plex in the plex table */
-int
-get_empty_plex(void)
-{
- int plexno;
- struct plex *plex; /* if we allocate one */
-
- /* first see if we have one which has been deallocated */
- for (plexno = 0; plexno < vinum_conf.plexes_used; plexno++) {
- if (PLEX[plexno].state == plex_unallocated) /* bingo */
- break; /* and get out of here */
- }
-
- if (plexno >= vinum_conf.plexes_used) {
- /* Couldn't find a deallocated plex. Allocate a new one */
- vinum_conf.plexes_used++;
- if (vinum_conf.plexes_used > vinum_conf.plexes_allocated)
- EXPAND(PLEX, struct plex, vinum_conf.plexes_allocated, INITIAL_PLEXES);
- }
- /* Found a plex. Give it an sd structure */
- plex = &PLEX[plexno]; /* this one is ours */
- bzero(plex, sizeof(struct plex)); /* polish it up */
- plex->sdnos = (int *) Malloc(sizeof(int) * INITIAL_SUBDISKS_IN_PLEX); /* allocate sd table */
- CHECKALLOC(plex->sdnos, "vinum: Can't allocate plex subdisk table");
- bzero(plex->sdnos, (sizeof(int) * INITIAL_SUBDISKS_IN_PLEX)); /* do we need this? */
- plex->subdisks = 0; /* no subdisks in use */
- plex->subdisks_allocated = INITIAL_SUBDISKS_IN_PLEX; /* and we have space for this many */
- plex->organization = plex_disorg; /* and it's not organized */
- plex->volno = -1; /* no volume yet */
- return plexno; /* return the index */
-}
-
-/* Find the named plex in vinum_conf.plex
-
- * If create != 0, create an entry if it doesn't exist
- * return index in vinum_conf.plex
- */
-int
-find_plex(const char *name, int create)
-{
- int plexno;
- struct plex *plex;
-
- for (plexno = 0; plexno < vinum_conf.plexes_allocated; plexno++) {
- if (strcmp(PLEX[plexno].name, name) == 0) /* found it */
- return plexno;
- }
-
- /* the plex isn't in the list. Add it if he wants */
- if (create == 0) /* don't want to create */
- return -1; /* give up */
-
- /* Allocate one and insert the name */
- plexno = get_empty_plex();
- plex = &PLEX[plexno]; /* point to it */
- bcopy(name, plex->name, min(sizeof(plex->name), strlen(name))); /* put in its name */
- plex->flags |= VF_NEWBORN; /* newly born plex */
- return plexno; /* return the pointer */
-}
-
-/* Free an allocated plex entry
- * and its associated memory areas */
-void
-free_plex(int plexno)
-{
- struct plex *plex;
-
- plex = &PLEX[plexno];
- if (plex->sdnos)
- Free(plex->sdnos);
- if (plex->lock)
- Free(plex->lock);
- bzero(plex, sizeof(struct plex)); /* and clear it out */
- plex->state = plex_unallocated;
- vinum_conf.plexes_used--; /* one less plex */
-}
-
-/* Find an empty volume in the volume table */
-int
-get_empty_volume(void)
-{
- int volno;
- struct volume *vol;
-
- /* first see if we have one which has been deallocated */
- for (volno = 0; volno < vinum_conf.volumes_used; volno++) {
- if (VOL[volno].state == volume_unallocated) /* bingo */
- break;
- }
-
- if (volno >= vinum_conf.volumes_used)
- /* Couldn't find a deallocated volume. Allocate a new one */
- {
- vinum_conf.volumes_used++;
- if (vinum_conf.volumes_used > vinum_conf.volumes_allocated)
- EXPAND(VOL, struct volume, vinum_conf.volumes_allocated, INITIAL_VOLUMES);
- }
- /* Now initialize fields */
- vol = &VOL[volno];
- bzero(vol, sizeof(struct volume));
- vol->preferred_plex = -1; /* default to round robin */
- vol->preferred_plex = ROUND_ROBIN_READPOL; /* round robin */
-
- return volno; /* return the index */
-}
-
-/* Find the named volume in vinum_conf.volume.
-
- * If create != 0, create an entry if it doesn't exist
- * return the index in vinum_conf
- */
-int
-find_volume(const char *name, int create)
-{
- int volno;
- struct volume *vol;
-
- for (volno = 0; volno < vinum_conf.volumes_used; volno++) {
- if (strcmp(VOL[volno].name, name) == 0) /* found it */
- return volno;
- }
-
- /* the volume isn't in the list. Add it if he wants */
- if (create == 0) /* don't want to create */
- return -1; /* give up */
-
- /* Allocate one and insert the name */
- volno = get_empty_volume();
- vol = &VOL[volno];
- bcopy(name, vol->name, min(sizeof(vol->name), strlen(name))); /* put in its name */
- vol->blocksize = DEV_BSIZE; /* block size of this volume */
- vol->flags |= VF_NEWBORN; /* newly born volume */
- return volno; /* return the pointer */
-}
-
-/* Free an allocated volume entry
- * and its associated memory areas */
-void
-free_volume(int volno)
-{
- struct volume *vol;
-
- vol = &VOL[volno];
- bzero(vol, sizeof(struct volume)); /* and clear it out */
- vol->state = volume_unallocated;
- vinum_conf.volumes_used--; /* one less volume */
-}
-
-/* Handle a drive definition. We store the information in the global variable
- * drive, so we don't need to allocate.
- *
- * If we find an error, print a message and return
- */
-void
-config_drive(int update)
-{
- enum drive_label_info partition_status; /* info about the partition */
- int parameter;
- int driveno; /* index of drive in vinum_conf */
- struct drive *drive; /* and pointer to it */
-
- if (tokens < 2) /* not enough tokens */
- throw_rude_remark(EINVAL, "Drive has no name");
- driveno = find_drive(token[1], 1); /* allocate a drive to initialize */
- drive = &DRIVE[driveno]; /* and get a pointer */
- if (update && ((drive->flags & VF_NEWBORN) == 0)) /* this drive exists already */
- return; /* don't do anything */
- drive->flags &= ~VF_NEWBORN; /* no longer newly born */
-
- if (drive->state != drive_uninit) { /* we already know this drive */
- /* XXX Check which definition is more up-to-date. Give
- * preference for the definition on its own drive */
- return; /* XXX */
- }
- for (parameter = 2; parameter < tokens; parameter++) { /* look at the other tokens */
- switch (get_keyword(token[parameter], &keyword_set)) {
- case kw_device:
- parameter++;
- if (drive->devicename[0] != '\0') { /* we know this drive... */
- if (strcmp(drive->devicename, token[parameter])) /* different name */
- close_drive(drive); /* close it if it's open */
- else /* no change */
- break;
- }
- /* open the device and get the configuration */
- bcopy(token[parameter], /* insert device information */
- drive->devicename,
- min(sizeof(drive->devicename),
- strlen(token[parameter])));
- partition_status = read_drive_label(drive, 1);
- switch (partition_status) {
- case DL_CANT_OPEN: /* not our kind */
- close_drive(drive);
- if (drive->lasterror == EFTYPE) /* wrong kind of partition */
- throw_rude_remark(drive->lasterror,
- "Drive %s has invalid partition type",
- drive->label.name);
- else /* I/O error of some kind */
- throw_rude_remark(drive->lasterror,
- "Can't initialize drive %s",
- drive->label.name);
- break;
-
- case DL_WRONG_DRIVE: /* valid drive, not the name we expected */
- close_drive(drive);
- throw_rude_remark(drive->lasterror,
- "Incorrect drive name %s specified for drive %s",
- token[1],
- drive->label.name);
- break;
-
- case DL_DELETED_LABEL: /* it was a drive, but we deleted it */
- break;
-
- case DL_NOT_OURS: /* nothing to do with the rest */
- case DL_OURS:
- break;
- }
- /* read_drive_label overwrites the device name.
- * If we get here, we can have the drive,
- * so put it back again */
- bcopy(token[parameter],
- drive->devicename,
- min(sizeof(drive->devicename),
- strlen(token[parameter])));
- break;
-
- case kw_state:
- checkkernel(token[++parameter]); /* must be a kernel user */
- drive->state = DriveState(token[parameter]); /* set the state */
- break;
-
- default:
- close_drive(drive);
- throw_rude_remark(EINVAL,
- "Drive %s, invalid keyword: %s",
- token[1],
- token[parameter]);
- }
- }
-
- if (drive->devicename[0] == '\0') {
- drive->state = drive_unallocated; /* deallocate the drive */
- throw_rude_remark(EINVAL, "No device name for %s", drive->label.name);
- }
-}
-
-/* Handle a subdisk definition. We store the information in the global variable
- * sd, so we don't need to allocate.
- *
- * If we find an error, print a message and return
- */
-void
-config_subdisk(int update)
-{
- int parameter;
- int sdno; /* index of sd in vinum_conf */
- struct sd *sd; /* and pointer to it */
- u_int64_t size;
- int detached = 0; /* set to 1 if this is a detached subdisk */
- int sdindex = -1; /* index in plexes subdisk table */
- int namedsdno;
- enum sdstate state = sd_unallocated; /* state to set, if specified */
-
- sdno = get_empty_sd(); /* allocate an SD to initialize */
- sd = &SD[sdno]; /* and get a pointer */
-
- for (parameter = 1; parameter < tokens; parameter++) { /* look at the other tokens */
- switch (get_keyword(token[parameter], &keyword_set)) {
- case kw_detached:
- detached = 1;
- break;
-
- case kw_plexoffset:
- size = sizespec(token[++parameter]);
- if ((size % DEV_BSIZE) != 0)
- throw_rude_remark(EINVAL, "sd %s, bad plex offset alignment: %qd", sd->name, size);
- else
- sd->plexoffset = size / DEV_BSIZE;
- break;
-
- case kw_driveoffset:
- size = sizespec(token[++parameter]);
- if ((size % DEV_BSIZE) != 0)
- throw_rude_remark(EINVAL, "sd %s, bad drive offset alignment: %qd", sd->name, size);
- else
- sd->driveoffset = size / DEV_BSIZE;
- break;
-
- case kw_name:
- namedsdno = find_subdisk(token[++parameter], 0); /* find an existing sd with this name */
- if (namedsdno >= 0) { /* got one */
- if (update) /* are we updating? */
- return; /* that's OK, nothing more to do */
- else
- throw_rude_remark(EINVAL, "Duplicate subdisk %s", token[parameter]);
- }
- bcopy(token[parameter],
- sd->name,
- min(sizeof(sd->name), strlen(token[parameter])));
- break;
-
- case kw_len:
- size = sizespec(token[++parameter]);
- if ((size % DEV_BSIZE) != 0)
- throw_rude_remark(EINVAL, "sd %s, length %d not multiple of sector size", sd->name, size);
- else
- sd->sectors = size / DEV_BSIZE;
- break;
-
- case kw_drive:
- sd->driveno = find_drive(token[++parameter], 1); /* insert drive information */
- break;
-
- case kw_plex:
- sd->plexno = find_plex(token[++parameter], 1); /* insert plex information */
- break;
-
- /* Set the state. We can't do this directly,
- * because give_sd_to_plex may change it */
- case kw_state:
- checkkernel(token[++parameter]); /* must be a kernel user */
- state = SdState(token[parameter]); /* set the state */
- break;
-
- default:
- throw_rude_remark(EINVAL, "sd %s, invalid keyword: %s", sd->name, token[parameter]);
- }
- }
-
- /* Check we have a drive name */
- if (sd->driveno < 0) { /* didn't specify a drive */
- sd->driveno = current_drive; /* set to the current drive */
- if (sd->driveno < 0) /* no current drive? */
- throw_rude_remark(EINVAL, "Subdisk %s is not associated with a drive", sd->name);
- }
- /* Check for a plex name */
- if ((sd->plexno < 0) /* didn't specify a plex */
- &&(!detached)) /* and didn't say not to, */
- sd->plexno = current_plex; /* set to the current plex */
-
- if (sd->plexno >= 0)
- sdindex = give_sd_to_plex(sd->plexno, sdno); /* now tell the plex that it has this sd */
-
- sd->sdno = sdno; /* point to our entry in the table */
-
- /* Does the subdisk have a name? If not, give it one */
- if (sd->name[0] == '\0') { /* no name */
- char sdsuffix[8]; /* form sd name suffix here */
-
- /* Do we have a plex name? */
- if (sdindex >= 0) /* we have a plex */
- strcpy(sd->name, PLEX[sd->plexno].name); /* take it from there */
- else /* no way */
- throw_rude_remark(EINVAL, "Unnamed sd is not associated with a plex");
- sprintf(sdsuffix, ".s%d", sdindex); /* form the suffix */
- strcat(sd->name, sdsuffix); /* and add it to the name */
- }
- /* do we have complete info for this subdisk? */
- if (sd->sectors == 0)
- throw_rude_remark(EINVAL, "sd %s has no length spec", sd->name);
-
- if (state != sd_unallocated) /* we had a specific state to set */
- sd->state = state; /* do it now */
- else if (sd->state == sd_unallocated) /* no, nothing set yet, */
- sd->state = sd_up; /* must be up */
-
- /* register the subdisk with the drive. This action
- * will have the side effect of setting the offset if
- * we haven't specified one, and causing an error
- * message if it overlaps with another subdisk. */
- give_sd_to_drive(sdno);
-}
-
-/* Handle a plex definition.
- */
-void
-config_plex(int update)
-{
- int parameter;
- int plexno; /* index of plex in vinum_conf */
- struct plex *plex; /* and pointer to it */
- int pindex = MAXPLEX; /* index in volume's plex list */
- int detached = 0; /* don't give it to a volume */
- int namedplexno;
-
- current_plex = -1; /* forget the previous plex */
- plexno = get_empty_plex(); /* allocate a plex */
- plex = &PLEX[plexno]; /* and point to it */
- plex->plexno = plexno; /* and back to the config */
-
- for (parameter = 1; parameter < tokens; parameter++) { /* look at the other tokens */
- switch (get_keyword(token[parameter], &keyword_set)) {
- case kw_detached:
- detached = 1;
- break;
-
- case kw_name:
- namedplexno = find_plex(token[++parameter], 0); /* find an existing plex with this name */
- if (namedplexno >= 0) { /* plex exists already, */
- if (update) /* are we updating? */
- return; /* yes: that's OK, just return */
- else
- throw_rude_remark(EINVAL, "Duplicate plex %s", token[parameter]);
- }
- bcopy(token[parameter], /* put in the name */
- plex->name,
- min(MAXPLEXNAME, strlen(token[parameter])));
- break;
-
- case kw_org: /* plex organization */
- switch (get_keyword(token[++parameter], &keyword_set)) {
- case kw_concat:
- plex->organization = plex_concat;
- break;
-
- case kw_striped:
- {
- int stripesize = sizespec(token[++parameter]);
-
- plex->organization = plex_striped;
- if (stripesize % DEV_BSIZE != 0) /* not a multiple of block size, */
- throw_rude_remark(EINVAL, "plex %s: stripe size %d not a multiple of sector size",
- plex->name,
- stripesize);
- else
- plex->stripesize = stripesize / DEV_BSIZE;
- break;
- }
-
-
- default:
- throw_rude_remark(EINVAL, "Invalid plex organization");
- }
- if (((plex->organization == plex_striped)
- )
- && (plex->stripesize == 0)) /* didn't specify a valid stripe size */
- throw_rude_remark(EINVAL, "Need a stripe size parameter");
- break;
-
- case kw_volume:
- plex->volno = find_volume(token[++parameter], 1); /* insert a pointer to the volume */
- break;
-
- case kw_sd: /* add a subdisk */
- {
- int sdno;
-
- sdno = find_subdisk(token[++parameter], 1); /* find a subdisk */
- SD[sdno].plexoffset = sizespec(token[++parameter]); /* get the offset */
- give_sd_to_plex(plexno, sdno); /* and insert it there */
- break;
- }
-
- case kw_state:
- checkkernel(token[++parameter]); /* only for kernel use */
- plex->state = PlexState(token[parameter]); /* set the state */
- break;
-
- default:
- throw_rude_remark(EINVAL, "plex %s, invalid keyword: %s",
- plex->name,
- token[parameter]);
- }
- }
-
- if ((plex->volno < 0) /* we don't have a volume */
- &&(!detached)) /* and we wouldn't object */
- plex->volno = current_volume;
-
- if (plex->volno >= 0)
- pindex = give_plex_to_volume(plex->volno, plexno); /* Now tell the volume that it has this plex */
-
- /* Does the plex have a name? If not, give it one */
- if (plex->name[0] == '\0') { /* no name */
- char plexsuffix[8]; /* form plex name suffix here */
- /* Do we have a volume name? */
- if (plex->volno >= 0) /* we have a volume */
- strcpy(plex->name, /* take it from there */
- VOL[plex->volno].name);
- else /* no way */
- throw_rude_remark(EINVAL, "Unnamed plex is not associated with a volume");
- sprintf(plexsuffix, ".p%d", pindex); /* form the suffix */
- strcat(plex->name, plexsuffix); /* and add it to the name */
- }
- /* Note the last plex we configured */
- current_plex = plexno;
- if (plex->state == plex_unallocated) /* we haven't changed the state, */
- plex->state = plex_init; /* we're initialized now */
-}
-
-/* Handle a volume definition.
- * If we find an error, print a message, deallocate the nascent volume, and return
- */
-void
-config_volume(int update)
-{
- int parameter;
- int volno;
- struct volume *vol; /* collect volume info here */
- int i;
-
- if (tokens < 2) /* not enough tokens */
- throw_rude_remark(EINVAL, "Volume has no name");
- current_volume = -1; /* forget the previous volume */
- volno = find_volume(token[1], 1); /* allocate a volume to initialize */
- vol = &VOL[volno]; /* and get a pointer */
- if (update && ((vol->flags & VF_NEWBORN) == 0)) /* this volume exists already */
- return; /* don't do anything */
- vol->flags &= ~VF_NEWBORN; /* no longer newly born */
-
- for (parameter = 2; parameter < tokens; parameter++) { /* look at all tokens */
- switch (get_keyword(token[parameter], &keyword_set)) {
- case kw_plex:
- {
- int plexno; /* index of this plex */
-
- plexno = find_plex(token[++parameter], 1); /* find a plex */
- if (plexno < 0) /* couldn't */
- break; /* we've already had an error message */
- plexno = my_plex(volno, plexno); /* does it already belong to us? */
- if (plexno > 0) /* yes, shouldn't get it again */
- throw_rude_remark(EINVAL,
- "Plex %s already belongs to volume %s",
- token[parameter],
- vol->name);
- else if (++vol->plexes > 8) /* another entry */
- throw_rude_remark(EINVAL,
- "Too many plexes for volume %s",
- vol->name);
- vol->plex[vol->plexes - 1] = plexno;
- }
- break;
-
- case kw_readpol:
- switch (get_keyword(token[++parameter], &keyword_set)) { /* decide what to do */
- case kw_round:
- vol->preferred_plex = ROUND_ROBIN_READPOL; /* default */
- break;
-
- case kw_prefer:
- {
- int myplexno; /* index of this plex */
-
- myplexno = find_plex(token[++parameter], 1); /* find a plex */
- if (myplexno < 0) /* couldn't */
- break; /* we've already had an error message */
- myplexno = my_plex(volno, myplexno); /* does it already belong to us? */
- if (myplexno > 0) /* yes */
- vol->preferred_plex = myplexno; /* just note the index */
- else if (++vol->plexes > 8) /* another entry */
- throw_rude_remark(EINVAL, "Too many plexes");
- else { /* space for the new plex */
- vol->plex[vol->plexes - 1] = myplexno; /* add it to our list */
- vol->preferred_plex = vol->plexes - 1; /* and note the index */
- }
- }
- break;
-
- default:
- throw_rude_remark(EINVAL, "Invalid read policy");
- }
-
- case kw_setupstate:
- vol->flags |= VF_CONFIG_SETUPSTATE; /* set the volume up later on */
- break;
-
- case kw_state:
- checkkernel(token[++parameter]); /* must be a kernel user */
- vol->state = VolState(token[parameter]); /* set the state */
- break;
-
- /* XXX experimental ideas. These are not
- * documented, and will not be until I
- * decide they're worth keeping */
- case kw_writethrough: /* set writethrough mode */
- vol->flags |= VF_WRITETHROUGH;
- break;
-
- case kw_writeback: /* set writeback mode */
- vol->flags &= ~VF_WRITETHROUGH;
- break;
-
- case kw_raw:
- vol->flags |= VF_RAW; /* raw volume (no label) */
- break;
-
- default:
- throw_rude_remark(EINVAL, "volume %s, invalid keyword: %s",
- vol->name,
- token[parameter]);
- }
- }
-
- current_volume = volno; /* note last referred volume */
- vol->devno = VINUMBDEV(volno, 0, 0, VINUM_VOLUME_TYPE); /* also note device number */
-
- /* Before we can actually use the volume, we need
- * a volume label. We could start to fake one here,
- * but it will be a lot easier when we have some
- * to copy from the drives, so defer it until we
- * set up the configuration. XXX */
- if (vol->state == volume_unallocated)
- vol->state = volume_down; /* now ready to bring up at the end */
-
- /* Find out how big our volume is */
- for (i = 0; i < vol->plexes; i++)
- vol->size = max(vol->size, PLEX[vol->plex[i]].length);
-}
-
-/* Parse a config entry. CARE! This destroys the original contents of the
- * config entry, which we don't really need after this. More specifically, it
- * places \0 characters at the end of each token.
- *
- * Return 0 if all is well, otherwise EINVAL */
-int
-parse_config(char *cptr, struct keywordset *keyset, int update)
-{
- int status;
-
- status = 0; /* until proven otherwise */
- tokens = tokenize(cptr, token); /* chop up into tokens */
-
- if (tokens <= 0) /* screwed up or empty line */
- return tokens; /* give up */
-
- if (token[0][0] == '#') /* comment line */
- return 0;
-
- switch (get_keyword(token[0], keyset)) { /* decide what to do */
- case kw_read: /* read config from a specified drive */
- vinum_scandisk(&token[1], tokens - 1); /* read the config from disk */
- break;
-
- case kw_drive:
- config_drive(update);
- break;
-
- case kw_subdisk:
- config_subdisk(update);
- break;
-
- case kw_plex:
- config_plex(update);
- break;
-
- case kw_volume:
- config_volume(update);
- break;
-
- /* Anything else is invalid in this context */
- default:
- throw_rude_remark(EINVAL, /* should we die? */
- "Invalid configuration information: %s",
- token[0]);
- }
- return status;
-}
-
-/* parse a line handed in from userland via ioctl.
- * This differs only by the error reporting mechanism:
- * we return the error indication in the reply to the
- * ioctl, so we need to set a global static pointer in
- * this file. This technique works because we have
- * ensured that configuration is performed in a single-
- * threaded manner */
-int
-parse_user_config(char *cptr, struct keywordset *keyset)
-{
- int status;
-
- ioctl_reply = (struct _ioctl_reply *) cptr;
- status = parse_config(cptr, keyset, 0);
- ioctl_reply = NULL; /* don't do this again */
- return status;
-}
-
-/* Remove an object */
-void
-remove(struct vinum_ioctl_msg *msg)
-{
- struct vinum_ioctl_msg message = *msg; /* make a copy to hand on */
-
- ioctl_reply = (struct _ioctl_reply *) msg; /* reinstate the address to reply to */
- ioctl_reply->error = 0; /* no error, */
- ioctl_reply->msg[0] = '\0'; /* no message */
-
- switch (message.type) {
- case drive_object:
- remove_drive_entry(message.index, message.force, message.recurse);
- updateconfig(0);
- return;
-
- case sd_object:
- remove_sd_entry(message.index, message.force, message.recurse);
- updateconfig(0);
- return;
-
- case plex_object:
- remove_plex_entry(message.index, message.force, message.recurse);
- updateconfig(0);
- return;
-
- case volume_object:
- remove_volume_entry(message.index, message.force, message.recurse);
- updateconfig(0);
- return;
-
- default:
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "Invalid object type");
- }
-}
-
-/* Remove a drive. */
-void
-remove_drive_entry(int driveno, int force, int recurse)
-{
- struct drive *drive = &DRIVE[driveno];
-
- if ((driveno > vinum_conf.drives_used) /* not a valid drive */
- ||(drive->state == drive_unallocated)) { /* or nothing there */
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "No such drive");
- } else if (drive->opencount > 0) { /* we have subdisks */
- if (force) { /* do it at any cost */
- int sdno;
- struct vinum_ioctl_msg sdmsg;
-
- for (sdno = 0; sdno < vinum_conf.subdisks_used; sdno++) {
- if ((SD[sdno].state != sd_unallocated) /* subdisk is allocated */
- &&(SD[sdno].driveno == driveno)) { /* and it belongs to this drive */
- sdmsg.index = sdno;
- sdmsg.type = sd_object;
- sdmsg.recurse = 1;
- sdmsg.force = force;
- remove(&sdmsg); /* remove the subdisk by force */
- }
- }
- remove_drive(driveno); /* now remove it */
- } else
- ioctl_reply->error = EBUSY; /* can't do that */
- } else
- remove_drive(driveno); /* just remove it */
-}
-
-/* remove a subdisk */
-void
-remove_sd_entry(int sdno, int force, int recurse)
-{
- struct sd *sd = &SD[sdno];
-
- if ((sdno > vinum_conf.subdisks_used) /* not a valid sd */
- ||(sd->state == sd_unallocated)) { /* or nothing there */
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "No such subdisk");
- } else if (sd->plexno >= 0) { /* we have a plex */
- if (force) { /* do it at any cost */
- struct plex *plex = &PLEX[sd->plexno]; /* point to our plex */
- int mysdno;
-
- for (mysdno = 0; /* look for ourselves */
- mysdno < plex->subdisks && &SD[plex->sdnos[mysdno]] != sd;
- mysdno++);
- if (mysdno == plex->subdisks) /* didn't find it */
- throw_rude_remark(ENOENT, "plex %s does not contain subdisk %s", plex->name, sd->name);
- if (mysdno < (plex->subdisks - 1)) /* not the last subdisk */
- bcopy(&plex->sdnos[mysdno + 1],
- &plex->sdnos[mysdno],
- (plex->subdisks - 1 - mysdno) * sizeof(int));
- plex->subdisks--;
- /* removing a subdisk from a striped or
- * RAID-5 plex really tears the hell out
- * of the structure, and it needs to be
- * reinitialized */
- /* XXX Think about this. Maybe we should just
- * leave a hole */
- if (plex->organization != plex_concat) /* not concatenated, */
- set_plex_state(plex->plexno, plex_faulty, setstate_force); /* need to reinitialize */
- printf("vinum: removing %s\n", sd->name);
- free_sd(sdno);
- } else
- ioctl_reply->error = EBUSY; /* can't do that */
- } else {
- printf("vinum: removing %s\n", sd->name);
- free_sd(sdno);
- }
-}
-
-/* remove a plex */
-void
-remove_plex_entry(int plexno, int force, int recurse)
-{
- struct plex *plex = &PLEX[plexno];
- int sdno;
-
- if ((plexno > vinum_conf.plexes_used) /* not a valid plex */
- ||(plex->state == plex_unallocated)) { /* or nothing there */
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "No such plex");
- } else if (plex->pid) { /* we're open */
- ioctl_reply->error = EBUSY; /* no getting around that */
- return;
- }
- if (plex->subdisks) {
- if (force) { /* do it anyway */
- if (recurse) { /* remove all below */
- for (sdno = 0; sdno < plex->subdisks; sdno++)
- free_sd(plex->sdnos[sdno]); /* free all subdisks */
- } else { /* just tear them out */
- for (sdno = 0; sdno < plex->subdisks; sdno++)
- SD[plex->sdnos[sdno]].plexno = -1; /* no plex any more */
- }
- } else { /* can't do it without force */
- ioctl_reply->error = EBUSY; /* can't do that */
- return;
- }
- }
- if (plex->volno >= 0) { /* we are part of a volume */
- /* XXX This should be more intelligent. We should
- * be able to remove a plex as long as the volume
- * does not lose any data, which is normally the
- * case when it has more than one plex. To do it
- * right we must compare the completeness of the
- * mapping of all the plexes in the volume */
- if (force) { /* do it at any cost */
- struct volume *vol = &VOL[plex->volno];
- int myplexno;
-
- for (myplexno = 0; myplexno < vol->plexes; myplexno++)
- if (vol->plex[myplexno] == plexno) /* found it */
- break;
- if (myplexno == vol->plexes) /* didn't find it. Huh? */
- throw_rude_remark(ENOENT, "volume %s does not contain plex %s", vol->name, plex->name);
- if (myplexno < (vol->plexes - 1)) /* not the last plex in the list */
- bcopy(&vol->plex[myplexno + 1], &vol->plex[myplexno], vol->plexes - 1 - myplexno);
- vol->plexes--;
- } else {
- ioctl_reply->error = EBUSY; /* can't do that */
- return;
- }
- }
- printf("vinum: removing %s\n", plex->name);
- free_plex(plexno);
-}
-
-/* remove a volume */
-void
-remove_volume_entry(int volno, int force, int recurse)
-{
- struct volume *vol = &VOL[volno];
- int plexno;
-
- if ((volno > vinum_conf.volumes_used) /* not a valid volume */
- ||(vol->state == volume_unallocated)) { /* or nothing there */
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "No such volume");
- } else if (vol->opencount) /* we're open */
- ioctl_reply->error = EBUSY; /* no getting around that */
- else if (vol->plexes) {
- if (recurse && force) { /* remove all below */
- struct vinum_ioctl_msg plexmsg;
-
- plexmsg.type = plex_object;
- plexmsg.recurse = 1;
- plexmsg.force = force;
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- plexmsg.index = vol->plex[plexno]; /* plex number */
- remove(&plexmsg);
- }
- printf("vinum: removing %s\n", vol->name);
- free_volume(volno);
- } else
- ioctl_reply->error = EBUSY; /* can't do that */
- } else {
- printf("vinum: removing %s\n", vol->name);
- free_volume(volno);
- }
-}
-
-void
-update_sd_config(int sdno, int kernelstate)
-{
- if (!kernelstate)
- set_sd_state(sdno, sd_up, setstate_configuring);
-}
-
-void
-update_plex_config(int plexno, int kernelstate)
-{
- int error = 0;
- u_int64_t size;
- int sdno;
- struct plex *plex = &PLEX[plexno];
- enum plexstate state = plex_up; /* state we want the plex in */
-
- /* XXX Insert checks here for sparse plexes and volumes */
-
- /* Check that our subdisks make sense. For
- * striped and RAID5 plexes, we need at least
- * two subdisks, and they must all be the same
- * size */
- if (((plex->organization == plex_striped)
- )
- && (plex->subdisks < 2)) {
- error = 1;
- printf("vinum: plex %s does not have at least 2 subdisks\n", plex->name);
- if (!kernelstate)
- set_plex_state(plexno, plex_down, setstate_force | setstate_configuring);
- }
- size = 0;
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- if (((plex->organization == plex_striped)
- )
- && (sdno > 0)
- && (SD[plex->sdnos[sdno]].sectors != SD[plex->sdnos[sdno - 1]].sectors)) {
- error = 1;
- printf("vinum: %s must have equal sized subdisks\n", plex->name);
- set_plex_state(plexno, plex_down, setstate_force | setstate_configuring);
- }
- size += SD[plex->sdnos[sdno]].sectors;
- }
-
- if (plex->subdisks) { /* plex has subdisks, calculate size */
- /* XXX We shouldn't need to calculate the size any
- * more. Check this some time */
- if (plex->length != size)
- printf("Correcting length of %s: was %qd, is %qd\n", plex->name, plex->length, size);
- plex->length = size;
- } else { /* no subdisks, */
- plex->length = 0; /* no size */
- state = plex_down; /* take it down */
- }
- if (!(kernelstate || error))
- set_plex_state(plexno, state, setstate_none | setstate_configuring);
-}
-
-void
-update_volume_config(int volno, int kernelstate)
-{
- struct volume *vol = &VOL[volno];
- struct plex *plex;
- int plexno;
-
- if (vol->state != volume_unallocated)
- /* Recalculate the size of the volume */
- {
- vol->size = 0;
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- plex = &PLEX[vol->plex[plexno]];
- vol->size = max(plex->length, vol->size); /* maximum size */
- plex->volplexno = plexno; /* note it in the plex */
- }
- }
- if (!kernelstate) /* try to bring it up */
- set_volume_state(volno, volume_up, setstate_configuring);
-}
-
-/* Update the global configuration.
- * kernelstate is != 0 if we're reading in a config
- * from disk. In this case, we don't try to
- * bring the devices up, though we will bring
- * them down if there's some error which got
- * missed when writing to disk.
- */
-void
-updateconfig(int kernelstate)
-{
- int plexno;
- int volno;
-
-
- for (plexno = 0; plexno < vinum_conf.plexes_used; plexno++)
- update_plex_config(plexno, kernelstate);
-
- for (volno = 0; volno < vinum_conf.volumes_used; volno++) {
- VOL[volno].flags &= ~VF_CONFIG_SETUPSTATE; /* no more setupstate */
- set_volume_state(volno, volume_up, setstate_configuring);
- }
- save_config();
-}
-
-/* Start manual changes to the configuration and lock out
- * others who may wish to do so.
- * XXX why do we need this and lock_config too? */
-int
-start_config(void)
-{
- int error;
-
- while ((vinum_conf.flags & VF_CONFIGURING) != 0) {
- vinum_conf.flags |= VF_WILL_CONFIGURE;
- if ((error = tsleep(&vinum_conf, PRIBIO | PCATCH, "vincfg", 0)) != 0)
- return error;
- }
- /* We need two flags here: VF_CONFIGURING
- * tells other processes to hold off (this
- * function), and VF_CONFIG_INCOMPLETE
- * tells the state change routines not to
- * propagate incrememntal state changes */
- vinum_conf.flags |= VF_CONFIGURING | VF_CONFIG_INCOMPLETE;
- current_drive = -1; /* reset the defaults */
- current_plex = -1; /* and the same for the last plex */
- current_volume = -1; /* and the last volme */
- return 0;
-}
-
-/* Update the config if update is 1, and unlock
- * it. We won't update the configuration if we
- * are called in a recursive loop via throw_rude_remark.
- */
-void
-finish_config(int update)
-{
- vinum_conf.flags &= ~VF_CONFIG_INCOMPLETE; /* we've finished our config */
- if (update)
- updateconfig(0); /* so update things */
- else
- updateconfig(1); /* do some updates only */
- vinum_conf.flags &= ~VF_CONFIGURING; /* and now other people can take a turn */
- if ((vinum_conf.flags & VF_WILL_CONFIGURE) != 0) {
- vinum_conf.flags &= ~VF_WILL_CONFIGURE;
- wakeup(&vinum_conf);
- }
-}
diff --git a/sys/dev/vinum/vinumdaemon.c b/sys/dev/vinum/vinumdaemon.c
deleted file mode 100644
index 23f3213f4cec7..0000000000000
--- a/sys/dev/vinum/vinumdaemon.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/* daemon.c: kernel part of Vinum daemon */
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumdaemon.c,v 1.3 1999/01/18 04:32:50 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "vinumhdr.h"
-#include "request.h"
-
-#ifdef VINUMDEBUG
-#include <sys/reboot.h>
-#endif
-
-/* declarations */
-void recover_io(struct request *rq);
-
-struct daemonq *daemonq; /* daemon's work queue */
-struct daemonq *dqend; /* and the end of the queue */
-int daemon_options = 0; /* options */
-
-void
-vinum_daemon(void)
-{
- struct daemonq *request;
- int s;
-
- daemon_save_config(); /* start by saving the configuration */
- while (1) {
- tsleep(&vinum_daemon, PRIBIO, "vinum", 0); /* wait for something to happen */
-
- while (daemonq != NULL) { /* we have work to do, */
- s = splhigh(); /* don't get interrupted here */
- request = daemonq; /* get the request */
- daemonq = daemonq->next; /* and detach it */
- if (daemonq == NULL) /* got to the end, */
- dqend = NULL; /* no end any more */
- splx(s);
-
- switch (request->type) {
- /* We had an I/O error on a request. Go through the
- * request and try to salvage it */
- case daemonrq_ioerror:
- if (daemon_options & daemon_verbose) {
- struct request *rq = request->info.rq;
-
- printf("vinumd: recovering I/O request: %x\n%s dev 0x%x, offset 0x%x, length %ld\n",
- (u_int) rq,
- rq->bp->b_flags & B_READ ? "Read" : "Write",
- rq->bp->b_dev,
- rq->bp->b_blkno,
- rq->bp->b_bcount);
- }
- recover_io(request->info.rq); /* the failed request */
- break;
-
- /* Write the config to disk. We could end up with
- * quite a few of these in a row. Only honour the
- * last one */
- case daemonrq_saveconfig:
- if ((daemonq == NULL) /* no more requests */
- ||(daemonq->type != daemonrq_saveconfig)) { /* or the next isn't the same */
- if ((daemon_options & daemon_noupdate) == 0) { /* we can do it */
- if (daemon_options & daemon_verbose)
- printf("vinumd: saving config\n");
- daemon_save_config(); /* save it */
- }
- }
- break;
-
- case daemonrq_return: /* been told to stop */
- if (daemon_options & daemon_verbose)
- printf("vinumd: stopping\n");
- daemon_options |= daemon_stopped; /* note that we've stopped */
- wakeup(vinum_daemon); /* in case somebody's waiting for us to stop */
- return;
- break;
-
- case daemonrq_ping: /* tell the caller we're here */
- if (daemon_options & daemon_verbose)
- printf("vinumd: ping reply\n");
- wakeup(&vinum_finddaemon); /* wake up the caller */
- break;
-
- case daemonrq_init: /* initialize a plex */
- /* XXX */
- case daemonrq_revive: /* revive a subdisk */
- /* XXX */
- default:
- printf("Invalid request\n");
- break;
- }
- Free(request);
- }
- }
-}
-
-/* Recover a failed I/O operation.
-
- * The correct way to do this is to examine the request and determine
- * how to recover each individual failure. In the case of a write,
- * this could be as simple as doing nothing: the defective drives may
- * already be down, and there may be nothing else to do. In case of
- * a read, it will be necessary to retry if there are alternative
- * copies of the data.
- *
- * The easy way (here) is just to reissue the request. This will take
- * a little longer, but nothing like as long as the failure will have
- * taken.
- *
- */
-void
-recover_io(struct request *rq)
-{
- vinumstrategy(rq->bp); /* reissue the command */
-}
-
-/* Functions called to interface with the daemon */
-
-/* queue a request for the daemon */
-void
-queue_daemon_request(enum daemonrq type, union daemoninfo info)
-{
- int s;
-
- struct daemonq *qelt = (struct daemonq *) Malloc(sizeof(struct daemonq));
- qelt->next = NULL; /* end of the chain */
- qelt->type = type;
- qelt->info = info;
- s = splhigh();
- if (daemonq) { /* something queued already */
- dqend->next = qelt;
- dqend = qelt;
- } else { /* queue is empty, */
- daemonq = qelt; /* this is the whole queue */
- dqend = qelt;
- }
- splx(s);
- wakeup(&vinum_daemon); /* and give the dæmon a kick */
-}
-
-/* see if the daemon is running. Return 0 (no error)
- * if it is, ESRCH otherwise */
-
-int
-vinum_finddaemon()
-{
- int result;
-
- int i;
-
- for (i = 0; i < 2; i++) { /* try twice */
- queue_daemon_request(daemonrq_ping, NULL); /* queue a ping */
- do
- result = tsleep(&vinum_finddaemon, PUSER, "recolte", 20 * hz);
- while (result == ERESTART); /* let it finish */
- }
-
- if (result) /* will be EWOULDBLOCK or EINTR */
- return ESRCH; /* no process */
- return 0;
-}
-
-int
-vinum_setdaemonopts(int options)
-{
- daemon_options = options;
- return 0;
-}
diff --git a/sys/dev/vinum/vinumext.h b/sys/dev/vinum/vinumext.h
deleted file mode 100644
index 40ffbbbd3eeb8..0000000000000
--- a/sys/dev/vinum/vinumext.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumext.h,v 1.18 1999/01/15 02:41:16 grog Exp grog $
- */
-
-/* vinumext.h: external definitions */
-
-extern struct _vinum_conf vinum_conf; /* configuration information */
-
-#ifdef VINUMDEBUG
-extern debug; /* debug flags */
-#endif
-
-#define CHECKALLOC(ptr, msg) \
- if (ptr == NULL) \
- { \
- printf (msg); \
- longjmp (command_fail, -1); \
- }
-#ifndef KERNEL
-struct vnode;
-struct proc;
-#endif
-
-#ifdef KERNEL
-int give_sd_to_plex(int plexno, int sdno);
-int give_plex_to_volume(int volno, int plexno);
-struct drive *check_drive(char *);
-enum drive_label_info read_drive_label(struct drive *, int);
-int parse_config(char *, struct keywordset *, int);
-int parse_user_config(char *cptr, struct keywordset *keyset);
-u_int64_t sizespec(char *spec);
-int volume_index(struct volume *volume);
-int plex_index(struct plex *plex);
-int sd_index(struct sd *sd);
-int drive_index(struct drive *drive);
-int my_plex(int volno, int plexno);
-int my_sd(int plexno, int sdno);
-int get_empty_drive(void);
-int find_drive(const char *name, int create);
-int find_drive_by_dev(const char *devname, int create);
-int get_empty_sd(void);
-int find_subdisk(const char *name, int create);
-void free_sd(int sdno);
-void free_volume(int volno);
-int get_empty_plex(void);
-int find_plex(const char *name, int create);
-void free_plex(int plexno);
-int get_empty_volume(void);
-int find_volume(const char *name, int create);
-void config_subdisk(int);
-void config_plex(int);
-void config_volume(int);
-void config_drive(int);
-void updateconfig(int);
-void update_sd_config(int sdno, int kernelstate);
-void update_plex_config(int plexno, int kernelstate);
-void update_volume_config(int volno, int kernelstate);
-void update_config(void);
-void drive_io_done(struct buf *);
-void save_config(void);
-void daemon_save_config(void);
-void write_config(char *, int);
-int start_config(void);
-void finish_config(int);
-void remove(struct vinum_ioctl_msg *msg);
-void remove_drive_entry(int driveno, int force, int recurse);
-void remove_sd_entry(int sdno, int force, int recurse);
-void remove_plex_entry(int plexno, int force, int recurse);
-void remove_volume_entry(int volno, int force, int recurse);
-
-void checkernel(char *);
-int open_drive(struct drive *, struct proc *, int);
-void close_drive(struct drive *drive);
-int driveio(struct drive *, char *, size_t, off_t, int);
-/* #define read_drive(a, b, c, d) driveio (a, b, c, d, B_READ)
- #define write_drive(a, b, c, d) driveio (a, b, c, d, B_WRITE) */
-int set_drive_parms(struct drive *drive);
-int init_drive(struct drive *, int);
-/* void throw_rude_remark (int, struct _ioctl_reply *, char *, ...); XXX */
-void throw_rude_remark(int, char *,...);
-
-/* XXX die die */
-int read_drive(struct drive *drive, void *buf, size_t length, off_t offset);
-int write_drive(struct drive *drive, void *buf, size_t length, off_t offset);
-void format_config(char *config, int len);
-void checkkernel(char *op);
-void free_drive(struct drive *drive);
-void down_drive(struct drive *drive);
-void remove_drive(int driveno);
-
-void vinum_scandisk(char *drivename[], int drives);
-
-/* I/O */
-d_open_t vinumopen;
-d_close_t vinumclose;
-d_strategy_t vinumstrategy;
-d_ioctl_t vinumioctl;
-d_dump_t vinumdump;
-d_psize_t vinumsize;
-d_read_t vinumread;
-d_write_t vinumwrite;
-
-int vinumstart(struct buf *bp, int reviveok);
-int launch_requests(struct request *rq, int reviveok);
-void sdio(struct buf *bp);
-
-/* XXX Do we need this? */
-int vinumpart(dev_t);
-
-#ifdef VINUMDEBUG
-/* Memory allocation and request tracing */
-void vinum_meminfo(caddr_t data);
-int vinum_mallocinfo(caddr_t data);
-int vinum_rqinfo(caddr_t data);
-#endif
-
-void expand_table(void **, int, int);
-
-struct request;
-struct rqgroup *allocrqg(struct request *rq, int elements);
-void deallocrqg(struct rqgroup *rqg);
-
-/* Device number decoding */
-int Volno(dev_t x);
-int Plexno(dev_t x);
-int Sdno(dev_t x);
-
-/* State transitions */
-int set_drive_state(int driveno, enum drivestate state, enum setstateflags flags);
-int set_sd_state(int sdno, enum sdstate state, enum setstateflags flags);
-enum requeststatus checksdstate(struct sd *sd, struct request *rq, daddr_t diskaddr, daddr_t diskend);
-int set_plex_state(int plexno, enum plexstate state, enum setstateflags flags);
-int set_volume_state(int volumeno, enum volumestate state, enum setstateflags flags);
-void update_sd_state(int sdno);
-void update_plex_state(int plexno);
-void update_volume_state(int volno);
-void invalidate_subdisks(struct plex *, enum sdstate);
-void get_volume_label(struct volume *vol, struct disklabel *lp);
-int write_volume_label(int);
-void start_object(struct vinum_ioctl_msg *);
-void stop_object(struct vinum_ioctl_msg *);
-void setstate(struct vinum_ioctl_msg *msg);
-void vinum_label(int);
-int vinum_writedisklabel(struct volume *, struct disklabel *);
-int initsd(int);
-
-int restart_plex(int plexno);
-int revive_read(struct sd *sd);
-int revive_block(int sdno);
-
-/* Auxiliary functions */
-enum sdstates sdstatemap(struct plex *plex);
-enum volplexstate vpstate(struct plex *plex);
-#endif
-
-enum keyword get_keyword(char *, struct keywordset *);
-void listconfig(void);
-char *drive_state(enum drivestate);
-char *volume_state(enum volumestate);
-char *plex_state(enum plexstate);
-char *plex_org(enum plexorg);
-char *sd_state(enum sdstate);
-enum drivestate DriveState(char *text);
-enum sdstate SdState(char *text);
-enum plexstate PlexState(char *text);
-enum volumestate VolState(char *text);
-struct drive *validdrive(int driveno, struct _ioctl_reply *);
-struct sd *validsd(int sdno, struct _ioctl_reply *);
-struct plex *validplex(int plexno, struct _ioctl_reply *);
-struct volume *validvol(int volno, struct _ioctl_reply *);
-int tokenize(char *, char *[]);
-void resetstats(struct vinum_ioctl_msg *msg);
-
-/* Locking */
-int lockdrive(struct drive *drive);
-void unlockdrive(struct drive *drive);
-int lockvol(struct volume *vol);
-void unlockvol(struct volume *vol);
-int lockplex(struct plex *plex);
-void unlockplex(struct plex *plex);
-int lockrange(struct plex *plex, off_t first, off_t last);
-void unlockrange(struct plex *plex, off_t first, off_t last);
-int lock_config(void);
-void unlock_config(void);
-
-/* Dæmon */
-
-void vinum_daemon(void);
-int vinum_finddaemon(void);
-int vinum_setdaemonopts(int);
-extern struct daemonq *daemonq; /* daemon's work queue */
-extern struct daemonq *dqend; /* and the end of the queue */
diff --git a/sys/dev/vinum/vinumhdr.h b/sys/dev/vinum/vinumhdr.h
deleted file mode 100644
index c913665cc30ce..0000000000000
--- a/sys/dev/vinum/vinumhdr.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- */
-
-/* Header files used by all modules */
-/* $Id: vinumhdr.h,v 1.11 1998/12/30 05:11:15 grog Exp grog $ */
-
-#ifdef KERNEL
-#define REALLYKERNEL
-#endif
-#include <sys/param.h>
-#ifdef REALLYKERNEL
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#endif
-#ifdef DEVFS
-#error "DEVFS code not complete yet"
-#include <sys/devfsext.h>
-#endif /*DEVFS */
-#include <sys/proc.h>
-#include <sys/errno.h>
-#include <sys/dkstat.h>
-#include <sys/buf.h>
-#include <sys/malloc.h>
-#include <sys/uio.h>
-#include <sys/namei.h>
-#include <sys/conf.h>
-#include <sys/stat.h>
-#include <sys/disklabel.h>
-#include <ufs/ffs/fs.h>
-#include <sys/mount.h>
-#include <sys/device.h>
-#undef KERNEL /* XXX */
-#include <sys/disk.h>
-#ifdef REALLYKERNEL
-#define KERNEL
-#endif
-#include <sys/syslog.h>
-#include <sys/fcntl.h>
-#include <sys/vnode.h>
-#include <sys/dkbad.h>
-#include <sys/queue.h>
-#ifdef KERNEL
-#include <machine/setjmp.h>
-#include <machine/stdarg.h>
-#else
-#include <setjmp.h>
-#include <stdarg.h>
-#endif
-#include <vm/vm.h>
-#include <dev/vinum/vinumvar.h>
-#include <dev/vinum/vinumio.h>
-#include <dev/vinum/vinumkw.h>
-#include <dev/vinum/vinumext.h>
-
-#undef Free /* defined in some funny net stuff */
-#ifdef REALLYKERNEL
-#ifdef VINUMDEBUG
-#define Malloc(x) MMalloc ((x), __FILE__, __LINE__) /* show where we came from */
-#define Free(x) FFree ((x), __FILE__, __LINE__) /* show where we came from */
-caddr_t MMalloc (int size, char *, int);
-void FFree (void *mem, char *, int);
-#else
-#define Malloc(x) malloc((x), M_DEVBUF, M_WAITOK)
-#define Free(x) free((x), M_DEVBUF)
-#endif
-#else
-#define Malloc(x) malloc ((x)) /* just the size */
-#define Free(x) free ((x)) /* just the address */
-#endif
-
diff --git a/sys/dev/vinum/vinuminterrupt.c b/sys/dev/vinum/vinuminterrupt.c
deleted file mode 100644
index 073ee7635c775..0000000000000
--- a/sys/dev/vinum/vinuminterrupt.c
+++ /dev/null
@@ -1,210 +0,0 @@
-/* interrupt.c: bottom half of the driver */
-
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinuminterrupt.c,v 1.4 1999/01/12 04:30:12 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-#include <dev/vinum/request.h>
-#include <miscfs/specfs/specdev.h>
-#include <sys/resourcevar.h>
-
-void complete_raid5_write(struct rqelement *);
-void freerq(struct request *rq);
-void free_rqg(struct rqgroup *rqg);
-void complete_rqe(struct buf *bp);
-void sdio_done(struct buf *bp);
-
-/* Take a completed buffer, transfer the data back if
- * it's a read, and complete the high-level request
- * if this is the last subrequest.
- *
- * The bp parameter is in fact a struct rqelement, which
- * includes a couple of extras at the end.
- */
-void
-complete_rqe(struct buf *bp)
-{
- struct rqelement *rqe;
- struct request *rq;
- struct rqgroup *rqg;
- struct buf *ubp; /* user buffer */
-
- rqe = (struct rqelement *) bp; /* point to the element element that completed */
- rqg = rqe->rqg; /* and the request group */
- rq = rqg->rq; /* and the complete request */
- ubp = rq->bp; /* user buffer */
-
-#ifdef VINUMDEBUG
- if (debug & DEBUG_LASTREQS)
- logrq(loginfo_iodone, rqe, ubp);
-#endif
- if ((bp->b_flags & B_ERROR) != 0) { /* transfer in error */
- if (bp->b_error != 0) /* did it return a number? */
- rq->error = bp->b_error; /* yes, put it in. */
- else if (rq->error == 0) /* no: do we have one already? */
- rq->error = EIO; /* no: catchall "I/O error" */
- SD[rqe->sdno].lasterror = rq->error;
- if (bp->b_flags & B_READ) {
- printf("%s: fatal read I/O error\n", SD[rqe->sdno].name);
- set_sd_state(rqe->sdno, sd_crashed, setstate_force); /* subdisk is crashed */
- } else { /* write operation */
- printf("%s: fatal write I/O error\n", SD[rqe->sdno].name);
- set_sd_state(rqe->sdno, sd_stale, setstate_force); /* subdisk is stale */
- }
- if (rq->error == ENXIO) { /* the drive's down too */
- printf("%s: fatal drive I/O error\n", DRIVE[rqe->driveno].label.name);
- DRIVE[rqe->driveno].lasterror = rq->error;
- set_drive_state(rqe->driveno, /* take the drive down */
- drive_down,
- setstate_force);
- }
- }
- /* Now update the statistics */
- if (bp->b_flags & B_READ) { /* read operation */
- DRIVE[rqe->driveno].reads++;
- DRIVE[rqe->driveno].bytes_read += bp->b_bcount;
- SD[rqe->sdno].reads++;
- SD[rqe->sdno].bytes_read += bp->b_bcount;
- PLEX[rqe->rqg->plexno].reads++;
- PLEX[rqe->rqg->plexno].bytes_read += bp->b_bcount;
- } else { /* write operation */
- DRIVE[rqe->driveno].writes++;
- DRIVE[rqe->driveno].bytes_written += bp->b_bcount;
- SD[rqe->sdno].writes++;
- SD[rqe->sdno].bytes_written += bp->b_bcount;
- PLEX[rqe->rqg->plexno].writes++;
- PLEX[rqe->rqg->plexno].bytes_written += bp->b_bcount;
- }
- rqg->active--; /* one less request active */
- if (rqg->active == 0) /* request group finished, */
- rq->active--; /* one less */
- if (rq->active == 0) { /* request finished, */
-#if VINUMDEBUG
- if (debug & DEBUG_RESID) {
- if (ubp->b_resid != 0) /* still something to transfer? */
- Debugger("resid");
-
- {
- int i;
- for (i = 0; i < ubp->b_bcount; i += 512) /* XXX debug */
- if (((char *) ubp->b_data)[i] != '<') { /* and not what we expected */
- printf("At 0x%x (offset 0x%x): '%c' (0x%x)\n",
- (int) (&((char *) ubp->b_data)[i]),
- i,
- ((char *) ubp->b_data)[i],
- ((char *) ubp->b_data)[i]);
- Debugger("complete_request checksum");
- }
- }
- }
-#endif
-
- if (rq->error) { /* did we have an error? */
- if (rq->isplex) { /* plex operation, */
- ubp->b_flags |= B_ERROR; /* yes, propagate to user */
- ubp->b_error = rq->error;
- } else /* try to recover */
- queue_daemon_request(daemonrq_ioerror, rq); /* let the daemon complete */
- } else {
- ubp->b_resid = 0; /* completed our transfer */
- if (rq->isplex == 0) /* volume request, */
- VOL[rq->volplex.volno].active--; /* another request finished */
- biodone(ubp); /* top level buffer completed */
- freerq(rq); /* return the request storage */
- }
- }
-}
-
-
-/* Free a request block and anything hanging off it */
-void
-freerq(struct request *rq)
-{
- struct rqgroup *rqg;
- struct rqgroup *nrqg; /* next in chain */
- int rqno;
-
- for (rqg = rq->rqg; rqg != NULL; rqg = nrqg) { /* through the whole request chain */
- for (rqno = 0; rqno < rqg->count; rqno++)
- if ((rqg->rqe[rqno].flags & XFR_MALLOCED) /* data buffer was malloced, */
- &&rqg->rqe[rqno].b.b_data) /* and the allocation succeeded */
- Free(rqg->rqe[rqno].b.b_data); /* free it */
- nrqg = rqg->next; /* note the next one */
- Free(rqg); /* and free this one */
- }
- Free(rq); /* free the request itself */
-}
-
-void
-free_rqg(struct rqgroup *rqg)
-{
- if ((rqg->flags & XFR_GROUPOP) /* RAID 5 request */
- &&(rqg->rqe) /* got a buffer structure */
- &&(rqg->rqe->b.b_data)) /* and it has a buffer allocated */
- Free(rqg->rqe->b.b_data); /* free it */
-}
-
-/* I/O on subdisk completed */
-void
-sdio_done(struct buf *bp)
-{
- struct sdbuf *sbp;
-
- sbp = (struct sdbuf *) bp;
- if (sbp->b.b_flags & B_ERROR) { /* had an error */
- bp->b_flags |= B_ERROR;
- bp->b_error = sbp->b.b_error;
- }
- bp->b_resid = sbp->b.b_resid;
- biodone(sbp->bp); /* complete the caller's I/O */
- /* Now update the statistics */
- if (bp->b_flags & B_READ) { /* read operation */
- DRIVE[sbp->driveno].reads++;
- DRIVE[sbp->driveno].bytes_read += bp->b_bcount;
- SD[sbp->sdno].reads++;
- SD[sbp->sdno].bytes_read += bp->b_bcount;
- } else { /* write operation */
- DRIVE[sbp->driveno].writes++;
- DRIVE[sbp->driveno].bytes_written += bp->b_bcount;
- SD[sbp->sdno].writes++;
- SD[sbp->sdno].bytes_written += bp->b_bcount;
- }
- Free(sbp);
-}
diff --git a/sys/dev/vinum/vinumio.c b/sys/dev/vinum/vinumio.c
deleted file mode 100644
index 331debfa643cd..0000000000000
--- a/sys/dev/vinum/vinumio.c
+++ /dev/null
@@ -1,1032 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumio.c,v 1.21 1998/12/30 06:04:31 grog Exp grog $
- */
-
-#define STATIC /* nothing while we're testing XXX */
-
-#include "opt_vinum.h"
-
-#define REALLYKERNEL
-#include "vinumhdr.h"
-#include "request.h"
-#include <miscfs/specfs/specdev.h>
-
-extern jmp_buf command_fail; /* return on a failed command */
-struct _ioctl_reply *ioctl_reply; /* data pointer, for returning error messages */
-
-/* Why aren't these declared anywhere? XXX */
-int setjmp(jmp_buf);
-void longjmp(jmp_buf, int);
-
-static char *sappend(char *txt, char *s);
-static int drivecmp(const void *va, const void *vb);
-
-/* Open the device associated with the drive, and set drive's vp.
- * Return an error number */
-int
-open_drive(struct drive *drive, struct proc *p, int verbose)
-{
- struct nameidata nd;
- struct vattr va;
- int error;
-
- if (drive->devicename[0] == '\0') /* no device name */
- sprintf(drive->devicename, "/dev/%s", drive->label.name); /* get it from the drive name */
- NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, drive->devicename, p);
- error = vn_open(&nd, FREAD | FWRITE, 0); /* open the device */
- if (error != 0) { /* can't open? */
- set_drive_state(drive->driveno, drive_down, setstate_force);
- drive->lasterror = error;
- if (verbose)
- printf("vinum open_drive %s: failed with error %d\n", drive->devicename, error); /* XXX */
- return error;
- }
- drive->vp = nd.ni_vp;
- drive->p = p;
-
- if (drive->vp->v_usecount > 1) { /* already in use? */
- if (verbose)
- printf("open_drive %s: use count %d, ignoring\n", /* XXX where does this come from? */
- drive->devicename,
- drive->vp->v_usecount);
- drive->vp->v_usecount = 1; /* will this work? */
- }
- error = VOP_GETATTR(drive->vp, &va, NOCRED, drive->p);
- if (error) {
- VOP_UNLOCK(drive->vp, 0, drive->p);
- close_drive(drive);
- set_drive_state(drive->driveno, drive_down, setstate_force);
- drive->lasterror = error;
- if (verbose)
- printf("vinum open_drive %s: GETAATTR returns error %d\n", drive->devicename, error); /* XXX */
- return error;
- }
- drive->dev = va.va_rdev; /* device */
-
- if (va.va_type != VBLK) { /* only consider block devices */
- VOP_UNLOCK(drive->vp, 0, drive->p);
- close_drive(drive);
- set_drive_state(drive->driveno, drive_down, setstate_force); /* this also closes the drive */
- drive->lasterror = ENOTBLK;
- if (verbose)
- printf("vinum open_drive %s: Not a block device\n", drive->devicename); /* XXX */
- return ENOTBLK;
- }
- drive->vp->v_numoutput = 0;
- VOP_UNLOCK(drive->vp, 0, drive->p);
- return 0;
-}
-
-/* Set some variables in the drive struct
- * in more convenient form. Return error indication */
-int
-set_drive_parms(struct drive *drive)
-{
- drive->blocksize = BLKDEV_IOSIZE; /* XXX do we need this? */
- drive->secsperblock = drive->blocksize /* number of sectors per block */
- / drive->partinfo.disklab->d_secsize;
-
- /* Now update the label part */
- bcopy(hostname, drive->label.sysname, VINUMHOSTNAMELEN); /* put in host name */
- getmicrotime(&drive->label.date_of_birth); /* and current time */
- drive->label.drive_size = ((u_int64_t) drive->partinfo.part->p_size) /* size of the drive in bytes */
- *((u_int64_t) drive->partinfo.disklab->d_secsize);
-
- /* number of sectors available for subdisks */
- drive->sectors_available = drive->label.drive_size / DEV_BSIZE - DATASTART;
-
- /* XXX Bug in 3.0 as of January 1998: you can open
- * non-existent slices. They have a length of 0 */
- if (drive->label.drive_size < MINVINUMSLICE) { /* too small to worry about */
- set_drive_state(drive->driveno, drive_down, setstate_force);
- drive->lasterror = ENOSPC;
- return ENOSPC;
- }
- drive->freelist_size = INITIAL_DRIVE_FREELIST; /* initial number of entries */
- drive->freelist = (struct drive_freelist *)
- Malloc(INITIAL_DRIVE_FREELIST * sizeof(struct drive_freelist));
- if (drive->freelist == NULL) /* can't malloc, dammit */
- return ENOSPC;
- drive->freelist_entries = 1; /* just (almost) the complete drive */
- drive->freelist[0].offset = DATASTART; /* starts here */
- drive->freelist[0].sectors = (drive->label.drive_size >> DEV_BSHIFT) - DATASTART; /* and it's this long */
- if (drive->label.name[0] != '\0') /* got a name */
- set_drive_state(drive->driveno, drive_up, setstate_force); /* our drive is accessible */
- else /* we know about it, but that's all */
- drive->state = drive_uninit;
- return 0;
-}
-
-/* Initialize a drive: open the device and add device
- * information */
-int
-init_drive(struct drive *drive, int verbose)
-{
- int error;
-
- if (drive->devicename[0] == '\0') { /* no device name yet, default to drive name */
- drive->lasterror = EINVAL;
- /* This is a bug if it happens internally,
- * so print a message regardless */
- printf("vinum: Can't open drive without drive name\n"); /* XXX */
- return EINVAL;
- }
- error = open_drive(drive, curproc, verbose); /* open the drive */
- if (error)
- return error;
-
- error = VOP_IOCTL(drive->vp, /* get the partition information */
- DIOCGPART,
- (caddr_t) & drive->partinfo,
- FREAD,
- NOCRED,
- curproc);
- if (error) {
- if (verbose)
- printf("vinum open_drive %s: Can't get partition information, error %d\n",
- drive->devicename,
- error); /* XXX */
- close_drive(drive);
- drive->lasterror = error;
- set_drive_state(drive->driveno, drive_down, setstate_force);
- return error;
- }
- if (drive->partinfo.part->p_fstype != 0) { /* not plain */
- drive->lasterror = EFTYPE;
- if (verbose)
- printf("vinum open_drive %s: Wrong partition type for vinum\n", drive->devicename); /* XXX */
- close_drive(drive);
- set_drive_state(drive->driveno, drive_down, setstate_force);
- return EFTYPE;
- }
- return set_drive_parms(drive); /* set various odds and ends */
-}
-
-/* Close a drive if it's open. No errors */
-void
-close_drive(struct drive *drive)
-{
- if (drive->vp) {
- lockdrive(drive); /* keep the daemon out */
- vn_close(drive->vp, FREAD | FWRITE, NOCRED, drive->p);
- if (drive->vp->v_usecount) { /* XXX shouldn't happen */
- printf("close_drive %s: use count still %d\n", drive->devicename, drive->vp->v_usecount);
- drive->vp->v_usecount = 0; /* will this work? */
- }
- drive->vp = NULL;
- unlockdrive(drive);
- }
-}
-
-/* Remove drive from the configuration.
- * Caller must ensure that it isn't active
- */
-void
-remove_drive(int driveno)
-{
- struct drive *drive = &vinum_conf.drive[driveno];
- long long int nomagic = VINUM_NOMAGIC; /* no magic number */
-
- write_drive(drive, /* obliterate the magic, but leave a hint */
- (char *) &nomagic,
- 8,
- VINUM_LABEL_OFFSET);
- free_drive(drive); /* close it and free resources */
- save_config(); /* and save the updated configuration */
-}
-
-/* Transfer drive data. Usually called from one of these defines;
- * #define read_drive(a, b, c, d) driveio (a, b, c, d, B_READ)
- * #define write_drive(a, b, c, d) driveio (a, b, c, d, B_WRITE)
- *
- * length and offset are in bytes, but must be multiples of sector
- * size. The function *does not check* for this condition, and
- * truncates ruthlessly.
- * Return error number
- */
-int
-driveio(struct drive *drive, char *buf, size_t length, off_t offset, int flag)
-{
- int error;
- struct buf *bp;
- char foo[40];
-
- error = 0; /* to keep the compiler happy */
- while (length) { /* divide into small enough blocks */
- int len = min(length, MAXBSIZE); /* maximum block device transfer is MAXBSIZE */
-
- bp = geteblk(len); /* get a buffer header */
- bp->b_flags = B_BUSY | flag; /* get busy */
- bp->b_proc = curproc; /* process */
- bp->b_dev = drive->vp->v_un.vu_specinfo->si_rdev; /* device */
- bp->b_blkno = offset / drive->partinfo.disklab->d_secsize; /* block number */
- bp->b_data = buf;
- bp->b_bcount = len;
- bp->b_bufsize = len;
-
- (*bdevsw[major(bp->b_dev)]->d_strategy) (bp); /* initiate the transfer */
-
- error = biowait(bp);
- printf("driveio: %s dev 0x%x, block 0x%x, len 0x%lx, error %d\n", /* XXX */
- flag ? "read" : "write",
- bp->b_dev,
- bp->b_blkno,
- bp->b_bcount,
- error);
- bcopy(buf, foo, 40);
- foo[39] = '\0';
- printf("---> %s\n", foo); /* XXXXXX */
- bp->b_flags |= B_INVAL | B_AGE;
- brelse(bp);
- if (error)
- break;
- length -= len; /* update pointers */
- buf += len;
- offset += len;
- }
- return error;
-}
-
-/* Read data from a drive
-
- * Return error number
- */
-int
-read_drive(struct drive *drive, void *buf, size_t length, off_t offset)
-{
- int error;
- struct buf *bp;
- daddr_t nextbn;
- long bscale;
-
- struct uio uio;
- struct iovec iov;
- daddr_t blocknum; /* block number */
- int blockoff; /* offset in block */
- int count; /* amount to transfer */
-
- iov.iov_base = buf;
- iov.iov_len = length;
-
- uio.uio_iov = &iov;
- uio.uio_iovcnt = length;
- uio.uio_offset = offset;
- uio.uio_resid = length;
- uio.uio_segflg = UIO_SYSSPACE;
- uio.uio_rw = UIO_READ;
- uio.uio_procp = curproc;
-
- bscale = btodb(drive->blocksize); /* mask off offset from block number */
- do {
- blocknum = btodb(uio.uio_offset) & ~(bscale - 1); /* get the block number */
- blockoff = uio.uio_offset % drive->blocksize; /* offset in block */
- count = min((unsigned) (drive->blocksize - blockoff), /* amount to transfer in this block */
- uio.uio_resid);
-
- /* XXX Check this. I think the test is wrong */
- if (drive->vp->v_lastr + bscale == blocknum) { /* did our last read finish in this block? */
- nextbn = blocknum + bscale; /* note the end of the transfer */
- error = breadn(drive->vp, /* and read with read-ahead */
- blocknum,
- (int) drive->blocksize,
- &nextbn,
- (int *) &drive->blocksize,
- 1,
- NOCRED,
- &bp);
- } else /* random read: just read this block */
- error = bread(drive->vp, blocknum, (int) drive->blocksize, NOCRED, &bp);
- drive->vp->v_lastr = blocknum; /* note the last block we read */
- count = min(count, drive->blocksize - bp->b_resid);
- if (error) {
- brelse(bp);
- return error;
- }
- error = uiomove((char *) bp->b_data + blockoff, count, &uio); /* move the data */
- brelse(bp);
- }
- while (error == 0 && uio.uio_resid > 0 && count != 0);
- return error;
-}
-
-/* Write data to a drive
-
- * Return error number
- */
-int
-write_drive(struct drive *drive, void *buf, size_t length, off_t offset)
-{
- int error;
- struct buf *bp;
- struct uio uio;
- struct iovec iov;
- daddr_t blocknum; /* block number */
- int blockoff; /* offset in block */
- int count; /* amount to transfer */
- int blockshift;
-
- if (drive->state == drive_down) /* currently down */
- return 0; /* ignore */
- if (drive->vp == NULL) {
- drive->lasterror = ENODEV;
- return ENODEV; /* not configured yet */
- }
- iov.iov_base = buf;
- iov.iov_len = length;
-
- uio.uio_iov = &iov;
- uio.uio_iovcnt = length;
- uio.uio_offset = offset;
- uio.uio_resid = length;
- uio.uio_segflg = UIO_SYSSPACE;
- uio.uio_rw = UIO_WRITE;
- uio.uio_procp = curproc;
-
- error = 0;
- blockshift = btodb(drive->blocksize) - 1; /* amount to shift block number
- * to get sector number */
- do {
- blocknum = btodb(uio.uio_offset) & ~blockshift; /* get the block number */
- blockoff = uio.uio_offset % drive->blocksize; /* offset in block */
- count = min((unsigned) (drive->blocksize - blockoff), /* amount to transfer in this block */
- uio.uio_resid);
- if (count == drive->blocksize) /* the whole block */
- bp = getblk(drive->vp, blocknum, drive->blocksize, 0, 0); /* just transfer it */
- else /* partial block: */
- error = bread(drive->vp, /* read it first */
- blocknum,
- drive->blocksize,
- NOCRED,
- &bp);
- count = min(count, drive->blocksize - bp->b_resid); /* how much will we transfer now? */
- if (error == 0)
- error = uiomove((char *) bp->b_data + blockoff, /* move the data to the block */
- count,
- &uio);
- if (error) {
- brelse(bp);
- drive->lasterror = error;
- switch (error) {
- case EIO:
- set_drive_state(drive->driveno, drive_down, setstate_force);
- break;
-
- /* XXX Add other possibilities here */
- default:
- }
- return error;
- }
- if (count + blockoff == drive->blocksize)
- /* The transfer goes to the end of the block. There's
- * no need to wait for any more data to arrive. */
- bawrite(bp); /* start the write now */
- else
- bdwrite(bp); /* do a delayed write */
- }
- while (error == 0 && uio.uio_resid > 0 && count != 0);
- if (error)
- drive->lasterror = error;
- return error; /* OK */
-}
-
-/* Wake up on completion */
-void
-drive_io_done(struct buf *bp)
-{
- wakeup((caddr_t) bp); /* Wachet auf! */
- bp->b_flags &= ~B_CALL; /* don't do this again */
-}
-
-/* Check a drive for a vinum header. If found,
- * update the drive information. We come here
- * with a partially populated drive structure
- * which includes the device name.
- *
- * Return information on what we found.
- *
- * This function is called from two places: check_drive,
- * which wants to find out whether the drive is a
- * Vinum drive, and config_drive, which asserts that
- * it is a vinum drive. In the first case, we don't
- * print error messages (verbose==0), in the second
- * we do (verbose==1).
- */
-enum drive_label_info
-read_drive_label(struct drive *drive, int verbose)
-{
- int error;
- int result; /* result of our search */
- struct vinum_hdr *vhdr; /* and as header */
-
- error = init_drive(drive, 0); /* find the drive */
- if (error) /* find the drive */
- return DL_CANT_OPEN; /* not ours */
-
- vhdr = (struct vinum_hdr *) Malloc(VINUMHEADERLEN); /* allocate buffers */
- CHECKALLOC(vhdr, "Can't allocate memory");
-
- error = read_drive(drive, (void *) vhdr, VINUMHEADERLEN, VINUM_LABEL_OFFSET);
- if (vhdr->magic == VINUM_MAGIC) { /* ours! */
- if (drive->label.name[0] /* we have a name for this drive */
- &&(strcmp(drive->label.name, vhdr->label.name))) { /* but it doesn't match the real name */
- drive->lasterror = EINVAL;
- result = DL_WRONG_DRIVE; /* it's the wrong drive */
- } else {
- drive->state = drive_up; /* it's OK by us */
- result = DL_OURS;
- }
- /* We copy the drive anyway so that we have
- * the correct name in the drive info. This
- * may not be the name specified */
- drive->label = vhdr->label; /* put in the label information */
- } else if (vhdr->magic == VINUM_NOMAGIC) /* was ours, but we gave it away */
- result = DL_DELETED_LABEL;
- else
- result = DL_NOT_OURS; /* we could have it, but we don't yet */
- Free(vhdr); /* that's all. */
- return result;
-}
-
-/* Check a drive for a vinum header. If found,
- * read configuration information from the drive and
- * incorporate the data into the configuration.
- *
- * Return
- */
-struct drive *
-check_drive(char *drivename)
-{
- int driveno;
- struct drive *drive;
-
- driveno = find_drive_by_dev(drivename, 1); /* entry doesn't exist, create it */
- drive = &vinum_conf.drive[driveno]; /* and get a pointer */
-
- if (read_drive_label(drive, 0) != DL_OURS) { /* not ours */
- if (drive->lasterror == 0)
- drive->lasterror = ENODEV;
- set_drive_state(drive->driveno, drive_down, setstate_force);
- }
- return drive;
-}
-
-static char *
-sappend(char *txt, char *s)
-{
- while (*s++ = *txt++);
- return s - 1;
-}
-
-/* Kludge: kernel printf doesn't handle quads */
-static char *lltoa (long long l, char *s);
-
-static char *lltoa (long long l, char *s)
-{
- if (l < 0)
- {
- *s++ = '-';
- l = -l;
- }
- if (l > 9)
- {
- s = lltoa (l / 10, s);
- l %= 10;
- }
- *s++ = l + '0';
- return s;
- }
-/* Format the configuration in text form into the buffer
- * at config. Don't go beyond len bytes
- * XXX this stinks. Fix soon. */
-void format_config (char *config, int len)
-{
-#if __FreeBSD__ == 2
- BROKEN_GDB
-#endif
- int i;
- int j;
- char *s = config;
-
- bzero (config, len);
-
-#if 0 /* XXX die, die */
- /* First write the drive configuration */
- for (i = 0; i < vinum_conf.drives_used; i++)
- {
- struct drive *drive;
-
- drive = &vinum_conf.drive [i];
- if (drive->state != drive_unallocated)
- {
- sprintf (s,
- "drive %s state %s device %s\n",
- drive->label.name,
- drive_state (drive->state),
- drive->devicename);
- while (*s)
- s++; /* find the end */
- if (s > &config [len - 80])
- {
- printf ("vinum: configuration data overflow\n");
- return;
- }
- }
- }
-#endif
-
- /* Then the volume configuration */
- for (i = 0; i < vinum_conf.volumes_used; i++)
- {
- struct volume *vol;
-
- vol = &vinum_conf.volume [i];
- if (vol->state != volume_unallocated)
- {
- if (vol->preferred_plex >= 0) /* preferences, */
- sprintf (s,
- "volume %s state %s readpol prefer %s",
- vol->name,
- volume_state (vol->state),
- vinum_conf.plex [vol->preferred_plex].name);
- else /* default round-robin */
- sprintf (s,
- "volume %s state %s",
- vol->name,
- volume_state (vol->state));
- while (*s)
- s++; /* find the end */
-#if 0
- /* Do we need to state the plexes? */
- for (j = 0; j < vol->plexes; j++)
- {
- sprintf (s, " plex %s", vinum_conf.plex [vol->plex [j]].name);
- while (*s)
- s++; /* find the end */
- }
-#endif
- s = sappend ("\n", s);
- if (s > &config [len - 80])
- {
- printf ("vinum: configuration data overflow\n");
- return;
- }
- }
- }
-
- /* Then the plex configuration */
- for (i = 0; i < vinum_conf.plexes_used; i++)
- {
- struct plex *plex;
-
- plex = &vinum_conf.plex [i];
- if (plex->state != plex_unallocated)
- {
- sprintf (s, "plex name %s state %s org %s ",
- plex->name,
- plex_state (plex->state),
- plex_org (plex->organization) );
- while (*s)
- s++; /* find the end */
- if ((plex->organization == plex_striped)
-#ifdef RAID5
- || (plex->organization == plex_raid5)
-#endif
- )
- {
- sprintf (s, "%db ", (int) plex->stripesize);
- while (*s)
- s++; /* find the end */
- }
- if (plex->volno >= 0) /* we have a volume */
- sprintf (s, "vol %s ", vinum_conf.volume [plex->volno].name);
- while (*s)
- s++; /* find the end */
- for (j = 0; j < plex->subdisks; j++)
- {
- sprintf (s, " sd %s", vinum_conf.sd [plex->sdnos [j]].name);
- }
- s = sappend ("\n", s);
- if (s > &config [len - 80])
- {
- printf ("vinum: configuration data overflow\n");
- return;
- }
- }
- }
-
- /* And finally the subdisk configuration */
- for (i = 0; i < vinum_conf.subdisks_used; i++)
- {
- struct sd *sd = &vinum_conf.sd [i]; /* XXX */
- if (vinum_conf.sd [i].state != sd_unallocated)
- {
- sprintf (s,
- "sd name %s drive %s plex %s state %s len ",
- sd->name,
- vinum_conf.drive [sd->driveno].label.name,
- vinum_conf.plex [sd->plexno].name,
- sd_state (sd->state) );
- while (*s)
- s++; /* find the end */
- s = lltoa (sd->sectors, s);
- s = sappend ("b driveoffset ", s);
- s = lltoa (sd->driveoffset, s);
- s = sappend ("b plexoffset ", s);
- s = lltoa (sd->plexoffset, s);
- s = sappend ("b\n", s);
- if (s > &config [len - 80])
- {
- printf ("vinum: configuration data overflow\n");
- return;
- }
- }
- }
- }
-
-/* issue a save config request to the dæmon. The actual work
- * is done in process context by daemon_save_config */
-void
-save_config(void)
-{
- queue_daemon_request(daemonrq_saveconfig, NULL);
-}
-
-/* Write the configuration to all vinum slices. This
- * is performed by the dæmon only */
-void
-daemon_save_config(void)
-{
- int error;
- int written_config; /* set when we first write the config to disk */
- int driveno;
- struct drive *drive; /* point to current drive info */
- struct vinum_hdr *vhdr; /* and as header */
- char *config; /* point to config data */
- int wlabel_on; /* to set writing label on/off */
-
- /* don't save the configuration while we're still working on it */
- if (vinum_conf.flags & VF_CONFIGURING)
- return;
- written_config = 0; /* no config written yet */
- /* Build a volume header */
- vhdr = (struct vinum_hdr *) Malloc(VINUMHEADERLEN); /* get space for the config data */
- CHECKALLOC(vhdr, "Can't allocate config data");
- vhdr->magic = VINUM_MAGIC; /* magic number */
- vhdr->config_length = MAXCONFIG; /* length of following config info */
-
- config = Malloc(MAXCONFIG); /* get space for the config data */
- CHECKALLOC(config, "Can't allocate config data");
-
- format_config(config, MAXCONFIG);
- error = 0; /* no errors yet */
- for (driveno = 0; driveno < vinum_conf.drives_used; driveno++) {
- drive = &vinum_conf.drive[driveno]; /* point to drive */
- lockdrive(drive); /* don't let it change */
-
- /* First, do some drive consistency checks. Some
- * of these are kludges, others require a process
- * context and couldn't be done before */
- if ((drive->devicename[0] == '\0') /* XXX we keep getting these nameless drives */
- ||(drive->label.name[0] == '\0')) { /* XXX we keep getting these nameless drives */
- unlockdrive(drive);
- printf("Removing incomplete drive, index %d\n", driveno);
- if (drive->vp) /* how can it be open without a name? */
- close_drive(drive);
- free_drive(drive); /* get rid of it */
- break;
- }
- if ((drive->vp == NULL) /* drive not open */
- &&(drive->state > drive_down)) { /* and it thinks it's not down */
- unlockdrive(drive);
- set_drive_state(driveno, drive_down, setstate_force); /* tell it what's what */
- }
- if ((drive->state == drive_down) /* it's down */
- &&(drive->vp != NULL)) { /* but open, */
- unlockdrive(drive);
- close_drive(drive); /* close it */
- } else if (drive->state > drive_down) {
- getmicrotime(&drive->label.last_update); /* time of last update is now */
- bcopy((char *) &drive->label, /* and the label info from the drive structure */
- (char *) &vhdr->label,
- sizeof(vhdr->label));
- if ((drive->state != drive_unallocated)
- && (drive->state != drive_uninit)) {
- wlabel_on = 1; /* enable writing the label */
- error = VOP_IOCTL(drive->vp, /* make the label writeable */
- DIOCWLABEL,
- (caddr_t) & wlabel_on,
- FWRITE,
- NOCRED,
- curproc);
- if (error == 0)
- error = write_drive(drive, (char *) vhdr, VINUMHEADERLEN, VINUM_LABEL_OFFSET);
- if (error == 0)
- error = write_drive(drive, config, MAXCONFIG, VINUM_CONFIG_OFFSET); /* first config copy */
- if (error == 0)
- error = write_drive(drive, config, MAXCONFIG, VINUM_CONFIG_OFFSET + MAXCONFIG); /* second copy */
- wlabel_on = 0; /* enable writing the label */
- if (error == 0)
- VOP_IOCTL(drive->vp, /* make the label non-writeable again */
- DIOCWLABEL,
- (caddr_t) & wlabel_on,
- FWRITE,
- NOCRED,
- curproc);
- unlockdrive(drive);
- if (error) {
- printf("vinum: Can't write config to %s, error %d\n", drive->devicename, error);
- set_drive_state(drive->driveno, drive_down, setstate_force);
- } else
- written_config = 1; /* we've written it on at least one drive */
- }
- }
- }
- Free(vhdr);
- Free(config);
-}
-
-/* Disk labels are a mess. The correct way to access them
- * is with the DIOC[GSW]DINFO ioctls, but some programs, such
- * as newfs, access the disk directly, so we have to write
- * things there. We do this only on request. If a user
- * request tries to read it directly, we fake up one on the fly.
- */
-
-/* get_volume_label returns a label structure to lp, which
- * is allocated by the caller */
-void
-get_volume_label(struct volume *vol, struct disklabel *lp)
-{
- bzero(lp, sizeof(struct disklabel));
-
- strncpy(lp->d_typename, "vinum", sizeof(lp->d_typename));
- lp->d_type = DTYPE_VINUM;
- strncpy(lp->d_packname, vol->name, min(sizeof(lp->d_packname), sizeof(vol->name)));
- lp->d_rpm = 14400 * vol->plexes; /* to keep them guessing */
- lp->d_interleave = 1;
- lp->d_flags = 0;
-
- /* Fitting unto the vine, a vinum has a single
- * track with all its sectors */
- lp->d_secsize = DEV_BSIZE; /* bytes per sector */
- lp->d_nsectors = vol->size; /* data sectors per track */
- lp->d_ntracks = 1; /* tracks per cylinder */
- lp->d_ncylinders = 1; /* data cylinders per unit */
- lp->d_secpercyl = vol->size; /* data sectors per cylinder */
- lp->d_secperunit = vol->size; /* data sectors per unit */
-
- lp->d_bbsize = BBSIZE;
- lp->d_sbsize = SBSIZE;
-
- lp->d_magic = DISKMAGIC;
- lp->d_magic2 = DISKMAGIC;
-
- /* Set up partitions a, b and c to be identical
- * and the size of the volume. a is UFS, b is
- * swap, c is nothing */
- lp->d_partitions[0].p_size = vol->size;
- lp->d_partitions[0].p_fsize = 1024;
- lp->d_partitions[0].p_fstype = FS_BSDFFS; /* FreeBSD File System :-) */
- lp->d_partitions[0].p_fsize = 1024; /* FS fragment size */
- lp->d_partitions[0].p_frag = 8; /* and fragments per block */
- lp->d_partitions[SWAP_PART].p_size = vol->size;
- lp->d_partitions[SWAP_PART].p_fstype = FS_SWAP; /* swap partition */
- lp->d_partitions[LABEL_PART].p_size = vol->size;
- lp->d_npartitions = LABEL_PART + 1;
- strncpy(lp->d_packname, vol->name, min(sizeof(lp->d_packname), sizeof(vol->name)));
- lp->d_checksum = dkcksum(lp);
-}
-
-/* Write a volume label. This implements the VINUM_LABEL ioctl. */
-int
-write_volume_label(int volno)
-{
- struct disklabel *lp;
- struct buf *bp;
- struct disklabel *dlp;
- struct volume *vol;
- int error;
-
- lp = (struct disklabel *) Malloc((sizeof(struct disklabel) + (DEV_BSIZE - 1)) & (DEV_BSIZE - 1));
- if (lp == 0)
- return ENOMEM;
-
- if ((unsigned) (volno) >= (unsigned) vinum_conf.volumes_used) /* invalid volume */
- return ENOENT;
-
- vol = &VOL[volno]; /* volume in question */
- if (vol->state == volume_unallocated) /* nothing there */
- return ENOENT;
-
- get_volume_label(vol, lp); /* get the label */
-
- /* Now write to disk. This code is derived from the
- * system writedisklabel (), which does silly things
- * like reading the label and refusing to write
- * unless it's already there. */
- bp = geteblk((int) lp->d_secsize); /* get a buffer */
- bp->b_dev = minor(vol->devno) | (CDEV_MAJOR << MAJORDEV_SHIFT); /* our own raw volume */
- bp->b_blkno = LABELSECTOR * ((int) lp->d_secsize / DEV_BSIZE);
- bp->b_bcount = lp->d_secsize;
- bzero(bp->b_data, lp->d_secsize);
- dlp = (struct disklabel *) bp->b_data;
- *dlp = *lp;
- bp->b_flags &= ~B_INVAL;
- bp->b_flags |= B_BUSY | B_WRITE;
- vinumstrategy(bp); /* write it out */
- error = biowait(bp);
- bp->b_flags |= B_INVAL | B_AGE;
- brelse(bp);
- return error;
-}
-
-/* Initialize a subdisk */
-int
-initsd(int sdno)
-{
- return 0;
-}
-
-/* Look at all disks on the system for vinum slices */
-void
-vinum_scandisk(char *drivename[], int drives)
-{
- struct drive *volatile drive;
- volatile int driveno;
- int firstdrive; /* first drive in this list */
- volatile int gooddrives; /* number of usable drives found */
- int firsttime; /* set if we have never configured before */
- int error;
- struct nameidata nd; /* mount point credentials */
- char *config_text; /* read the config info from disk into here */
- char *volatile cptr; /* pointer into config information */
- char *eptr; /* end pointer into config information */
- char *config_line; /* copy the config line to */
- volatile int status;
- struct drive **volatile drivelist;
-#define DRIVENAMELEN 64
-#define DRIVEPARTS 35 /* max partitions per drive, excluding c */
- char partname[DRIVENAMELEN]; /* for creating partition names */
-
- status = 0; /* success indication */
- vinum_conf.flags |= VF_KERNELOP | VF_READING_CONFIG; /* kernel operation: reading config */
-
- gooddrives = 0; /* number of usable drives found */
- firstdrive = vinum_conf.drives_used; /* the first drive */
- firsttime = vinum_conf.drives_used == 0; /* are we a virgin? */
-
-
- /* allocate a drive pointer list */
- drivelist = (struct drive **) Malloc(drives * DRIVEPARTS * sizeof(struct drive *));
- CHECKALLOC(drivelist, "Can't allocate memory");
-
- /* Open all drives and find which was modified most recently */
- for (driveno = 0; driveno < drives; driveno++) {
- char part; /* UNIX partition */
-
- for (part = 'a'; part < 'i'; part++)
- if (part != 'c') { /* don't do the c partition */
- snprintf(partname, /* /dev/sd0a */
- DRIVENAMELEN,
- "%s%c",
- drivename[driveno],
- part);
- drive = check_drive(partname); /* try to open it */
- if (drive->lasterror != 0) /* didn't work, */
- free_drive(drive); /* get rid of it */
- else if (drive->flags & VF_CONFIGURED) /* already read this config, */
- printf("vinum: already read config from %s\n", /* say so */
- drive->label.name);
- else {
- drivelist[gooddrives] = drive; /* keep a pointer to the drive */
- drive->flags &= ~VF_NEWBORN; /* which is no longer newly born */
- gooddrives++;
- }
- }
- }
-
- if (gooddrives == 0) {
- printf("vinum: no drives found\n");
- return;
- }
- /* We now have at least one drive
- * open. Sort them in order of config time
- * and merge the config info with what we
- * have already */
- qsort(drivelist, gooddrives, sizeof(struct drive *), drivecmp);
- config_text = (char *) Malloc(MAXCONFIG * 2); /* allocate buffers */
- CHECKALLOC(config_text, "Can't allocate memory");
- config_line = (char *) Malloc(MAXCONFIGLINE * 2); /* allocate buffers */
- CHECKALLOC(config_line, "Can't allocate memory");
- for (driveno = 0; driveno < gooddrives; driveno++) { /* now include the config */
- drive = drivelist[driveno];
-
- if (firsttime && (driveno == 0)) /* we've never configured before, */
- printf("vinum: reading configuration from %s\n", drive->devicename);
- else
- printf("vinum: updating configuration from %s\n", drive->devicename);
-
- /* Read in both copies of the configuration information */
- error = read_drive(drive, config_text, MAXCONFIG * 2, VINUM_CONFIG_OFFSET);
-
- if (error != 0) {
- printf("vinum: Can't read device %s, error %d\n", drive->devicename, error);
- Free(config_text);
- Free(config_line);
- free_drive(drive); /* give it back */
- status = error;
- }
- /* XXX At this point, check that the two copies are the same, and do something useful if not.
- * In particular, consider which is newer, and what this means for the integrity of the
- * data on the drive */
-
- else {
- /* Parse the configuration, and add it to the global configuration */
- for (cptr = config_text; *cptr != '\0';) { /* love this style(9) */
- volatile int parse_status; /* return value from parse_config */
-
- for (eptr = config_line; (*cptr != '\n') && (*cptr != '\0');) /* until the end of the line */
- *eptr++ = *cptr++;
- *eptr = '\0'; /* and delimit */
- if (setjmp(command_fail) == 0) { /* come back here on error and continue */
- parse_status = parse_config(config_line, &keyword_set, 1); /* parse the config line */
- if (parse_status < 0) { /* error in config */
- /* This config should have been parsed in user
- * space. If we run into problems here, something
- * serious is afoot. Complain and let the user
- * snarf the config to see what's wrong */
- printf("vinum: Config error on drive %s, aborting integration\n", nd.ni_dirp);
- Free(config_text);
- Free(config_line);
- free_drive(drive); /* give it back */
- status = EINVAL;
- }
- }
- while (*cptr == '\n')
- cptr++; /* skip to next line */
- }
- }
- drive->flags |= VF_CONFIGURED; /* read this drive's configuration */
- }
-
- Free(config_text);
- Free(drivelist);
- vinum_conf.flags &= ~(VF_KERNELOP | VF_READING_CONFIG);
- if (status != 0)
- throw_rude_remark(status, "Couldn't read configuration");
- updateconfig(VF_KERNELOP); /* update from kernel space */
-}
-
-/* Compare the modification dates of the drives, for qsort.
- * Return 1 if a < b, 0 if a == b, 01 if a > b: in other
- * words, sort backwards */
-int
-drivecmp(const void *va, const void *vb)
-{
- struct drive *a = *(struct drive **) va;
- struct drive *b = *(struct drive **) vb;
-
- if ((a->label.last_update.tv_sec == b->label.last_update.tv_sec)
- && (a->label.last_update.tv_usec == b->label.last_update.tv_usec))
- return 0;
- else if ((a->label.last_update.tv_sec > b->label.last_update.tv_sec)
- || ((a->label.last_update.tv_sec == b->label.last_update.tv_sec)
- && (a->label.last_update.tv_usec > b->label.last_update.tv_usec)))
- return -1;
- else
- return 1;
-}
diff --git a/sys/dev/vinum/vinumio.h b/sys/dev/vinum/vinumio.h
deleted file mode 100644
index fe1c09b096067..0000000000000
--- a/sys/dev/vinum/vinumio.h
+++ /dev/null
@@ -1,145 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumio.h,v 1.14 1999/01/18 05:00:30 grog Exp grog $
- */
-
-#ifdef VINUMDEBUG
-#define MAX_IOCTL_REPLY 4096
-#else
-#define MAX_IOCTL_REPLY 256
-#endif
-
-#define L 'F' /* ID letter of our ioctls */
-/* VINUM_CREATE returns a buffer of this kind */
-struct _ioctl_reply {
- int error;
- char msg[MAX_IOCTL_REPLY];
-};
-
-/* ioctl requests */
-#define BUFSIZE 1024 /* size of buffer, including continuations */
-#define VINUM_CREATE _IOC(IOC_IN | IOC_OUT, L, 64, BUFSIZE) /* configure vinum */
-#define VINUM_GETCONFIG _IOR(L, 65, struct _vinum_conf) /* get global config */
-#define VINUM_DRIVECONFIG _IOWR(L, 66, struct drive) /* get drive config */
-#define VINUM_SDCONFIG _IOWR(L, 67, struct sd) /* get subdisk config */
-#define VINUM_PLEXCONFIG _IOWR(L, 68, struct plex) /* get plex config */
-#define VINUM_VOLCONFIG _IOWR(L, 69, struct volume) /* get volume config */
-#define VINUM_PLEXSDCONFIG _IOWR(L, 70, struct sd) /* get sd config for plex (plex, sdno) */
-#define VINUM_GETFREELIST _IOWR(L, 71, struct drive_freelist) /* get freelist element (drive, fe) */
-#define VINUM_SAVECONFIG _IOC(0, L, 72, 0) /* release locks, update, write config to disk */
-#define VINUM_RESETCONFIG _IOC(0, L, 73, 0) /* trash config on disk */
-#define VINUM_INIT _IOC(0, L, 74, 0) /* read config from disk */
-#ifdef VINUMDEBUG
-
-struct debuginfo {
- int changeit;
- int param;
-};
-
-#define VINUM_DEBUG _IOWR(L, 75, struct debuginfo) /* call the debugger from ioctl () */
-#endif
-
-enum objecttype {
- drive_object,
- sd_object,
- plex_object,
- volume_object,
- invalid_object
-};
-
-/* Start an object. Pass two integers:
- * msg [0] index in vinum_conf.<object>
- * msg [1] type of object (see below)
- *
- * Return ioctl_reply
- */
-#define VINUM_SETSTATE _IOC(IOC_IN | IOC_OUT, L, 76, MAX_IOCTL_REPLY) /* start an object */
-
-/* The state to set with VINUM_SETSTATE. Since
- * each object has a different set of states, we
- * need to translate later */
-enum objectstate {
- object_down,
- object_initializing,
- object_up
-};
-
-/* This structure is used for modifying objects
- * (VINUM_SETSTATE, VINUM_REMOVE, VINUM_RESETSTATS, VINUM_ATTACH,
- * VINUM_DETACH, VINUM_REPLACE
- */
-struct vinum_ioctl_msg {
- int index;
- enum objecttype type;
- enum objectstate state; /* state to set (VINUM_SETSTATE) */
- int force; /* do it even if it doesn't make sense */
- int recurse; /* recurse (VINUM_REMOVE) */
- int otherobject; /* superordinate object (attach),
- * replacement object (replace) */
- int rename; /* rename object (attach) */
- int64_t offset; /* offset of subdisk (for attach) */
-};
-
-#define VINUM_RELEASECONFIG _IOC(0, L, 77, 0) /* release locks and write config to disk */
-#define VINUM_STARTCONFIG _IOC(0, L, 78, 0) /* start a configuration operation */
-#define VINUM_MEMINFO _IOR(L, 79, struct meminfo) /* get memory usage summary */
-#define VINUM_MALLOCINFO _IOWR(L, 80, struct mc) /* get specific malloc information [i] */
-#define VINUM_LABEL _IOC(IOC_IN | IOC_OUT, L, 81, MAX_IOCTL_REPLY) /* label a volume */
-#define VINUM_INITSD _IOW(L, 82, int) /* initialize a subdisk */
-#define VINUM_REMOVE _IOC(IOC_IN | IOC_OUT, L, 83, MAX_IOCTL_REPLY) /* remove an object */
-/* 84, 85 going begging */
-#define VINUM_RESETSTATS _IOC(IOC_IN | IOC_OUT, L, 86, MAX_IOCTL_REPLY) /* reset object stats */
-#define VINUM_ATTACH _IOC(IOC_IN | IOC_OUT, L, 87, MAX_IOCTL_REPLY) /* reset object stats */
-#define VINUM_DETACH _IOC(IOC_IN | IOC_OUT, L, 88, MAX_IOCTL_REPLY) /* reset object stats */
-
-struct vinum_rename_msg {
- int index;
- int recurse; /* rename subordinate objects too */
- enum objecttype type;
- char newname[MAXNAME]; /* new name to give to object */
-};
-
-#define VINUM_RENAME _IOC(IOC_IN | IOC_OUT, L, 89, MAX_IOCTL_REPLY) /* reset object stats */
-#define VINUM_REPLACE _IOC(IOC_IN | IOC_OUT, L, 90, MAX_IOCTL_REPLY) /* reset object stats */
-
-#ifdef VINUMDEBUG
-#define VINUM_RQINFO _IOWR(L, 91, struct rqinfo) /* get request info [i] from trace buffer */
-#endif
-
-#define VINUM_DAEMON _IOC(0, L, 92, 0) /* perform the kernel part of Vinum daemon */
-#define VINUM_FINDDAEMON _IOC(0, L, 93, 0) /* check for presence of Vinum daemon */
-#define VINUM_SETDAEMON _IOW(L, 94, int) /* set daemon flags */
-#define VINUM_GETDAEMON _IOR(L, 95, int) /* get daemon flags */
diff --git a/sys/dev/vinum/vinumioctl.c b/sys/dev/vinum/vinumioctl.c
deleted file mode 100644
index a2052b87c1d20..0000000000000
--- a/sys/dev/vinum/vinumioctl.c
+++ /dev/null
@@ -1,767 +0,0 @@
-/* XXX replace all the checks on object validity with
- * calls to valid<object> */
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumioctl.c,v 1.7 1999/01/18 03:36:17 grog Exp grog $
- */
-
-#define STATIC /* nothing while we're testing XXX */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-#include <sys/sysproto.h> /* for sync(2) */
-#ifdef VINUMDEBUG
-#include <sys/reboot.h>
-#include <dev/vinum/request.h>
-#endif
-
-jmp_buf command_fail; /* return on a failed command */
-
-/* Why aren't these declared anywhere? XXX */
-int setjmp(jmp_buf);
-void longjmp(jmp_buf, int);
-
-int vinum_inactive(void);
-void free_vinum(int);
-void attachobject(struct vinum_ioctl_msg *);
-void detachobject(struct vinum_ioctl_msg *);
-void renameobject(struct vinum_rename_msg *);
-void replaceobject(struct vinum_ioctl_msg *);
-
-/* ioctl routine */
-int
-vinumioctl(dev_t dev,
- u_long cmd,
- caddr_t data,
- int flag,
- struct proc *p)
-{
- unsigned int objno;
- int error = 0;
- struct volume *vol;
- unsigned int index; /* for transferring config info */
- unsigned int sdno; /* for transferring config info */
- int fe; /* free list element number */
- struct _ioctl_reply *ioctl_reply = (struct _ioctl_reply *) data; /* struct to return */
-
- struct devcode *device = (struct devcode *) &dev;
-
- /* First, decide what we're looking at */
- switch (device->type) {
- case VINUM_SUPERDEV_TYPE:
- ioctl_reply = (struct _ioctl_reply *) data; /* save the address to reply to */
- error = setjmp(command_fail); /* come back here on error */
- if (error) /* bombed out */
- return 0; /* the reply will contain meaningful info */
- switch (cmd) {
-#ifdef VINUMDEBUG
- case VINUM_DEBUG:
- if (((struct debuginfo *) data)->changeit) /* change debug settings */
- debug = (((struct debuginfo *) data)->param);
- else {
- if (debug & DEBUG_REMOTEGDB)
- boothowto |= RB_GDB; /* serial debug line */
- else
- boothowto &= ~RB_GDB; /* local ddb */
- Debugger("vinum debug");
- }
- ioctl_reply = (struct _ioctl_reply *) data; /* reinstate the address to reply to */
- ioctl_reply->error = 0;
- return 0;
-#endif
-
- case VINUM_CREATE: /* create a vinum object */
- error = lock_config(); /* get the config for us alone */
- if (error) /* can't do it, */
- return error; /* give up */
- error = setjmp(command_fail); /* come back here on error */
- if (error == 0) { /* first time, */
- parse_user_config((char *) data, &keyword_set); /* update the config */
- ioctl_reply->error = 0; /* no error if we make it here */
- } else if (ioctl_reply->error == 0) { /* longjmp, but no error status */
- ioctl_reply->error = EINVAL; /* note that something's up */
- ioctl_reply->msg[0] = '\0'; /* no message? */
- }
- unlock_config();
- return 0; /* must be 0 to return the real error info */
-
- case VINUM_GETCONFIG: /* get the configuration information */
- bcopy(&vinum_conf, data, sizeof(vinum_conf));
- return 0;
-
- /* start configuring the subsystem */
- case VINUM_STARTCONFIG:
- return start_config(); /* just lock it */
-
- /* Move the individual parts of the config to user space.
-
- * Specify the index of the object in the first word of data,
- * and return the object there
- */
- case VINUM_DRIVECONFIG:
- index = *(int *) data; /* get the index */
- if (index >= (unsigned) vinum_conf.drives_used) /* can't do it */
- return EFAULT; /* bang */
- bcopy(&DRIVE[index], data, sizeof(struct drive)); /* copy the config item out */
- return 0;
-
- case VINUM_SDCONFIG:
- index = *(int *) data; /* get the index */
- if (index >= (unsigned) vinum_conf.subdisks_used) /* can't do it */
- return EFAULT; /* bang */
- bcopy(&SD[index], data, sizeof(struct sd)); /* copy the config item out */
- return 0;
-
- case VINUM_PLEXCONFIG:
- index = *(int *) data; /* get the index */
- if (index >= (unsigned) vinum_conf.plexes_used) /* can't do it */
- return EFAULT; /* bang */
- bcopy(&PLEX[index], data, sizeof(struct plex)); /* copy the config item out */
- return 0;
-
- case VINUM_VOLCONFIG:
- index = *(int *) data; /* get the index */
- if (index >= (unsigned) vinum_conf.volumes_used) /* can't do it */
- return EFAULT; /* bang */
- bcopy(&VOL[index], data, sizeof(struct volume)); /* copy the config item out */
- return 0;
-
- case VINUM_PLEXSDCONFIG:
- index = *(int *) data; /* get the plex index */
- sdno = ((int *) data)[1]; /* and the sd index */
- if ((index >= (unsigned) vinum_conf.plexes_used) /* plex doesn't exist */
- ||(sdno >= PLEX[index].subdisks)) /* or it doesn't have this many subdisks */
- return EFAULT; /* bang */
- bcopy(&SD[PLEX[index].sdnos[sdno]], /* copy the config item out */
- data,
- sizeof(struct sd));
- return 0;
-
- case VINUM_SAVECONFIG:
- if (VFLAGS & VF_CONFIGURING) { /* must be us, the others are asleep */
- finish_config(1); /* finish the configuration and update it */
- save_config(); /* save configuration to disk */
- } else
- error = EINVAL; /* queue up for this one, please */
- return error;
-
- case VINUM_RELEASECONFIG: /* release the config */
- if (VFLAGS & VF_CONFIGURING) { /* must be us, the others are asleep */
- finish_config(0); /* finish the configuration, don't change it */
- save_config(); /* save configuration to disk */
- } else
- error = EINVAL; /* release what config? */
- return error;
-
- case VINUM_INIT:
- ioctl_reply = (struct _ioctl_reply *) data; /* reinstate the address to reply to */
- ioctl_reply->error = 0;
- return 0;
-
- case VINUM_RESETCONFIG:
- if (vinum_inactive() && (vinum_conf.opencount < 2)) { /* if we're not active */
- /* Note the open count. We may be called from v, so we'll be open.
- * Keep the count so we don't underflow */
- int oc = vinum_conf.opencount;
- free_vinum(1); /* clean up everything */
- printf("vinum: CONFIGURATION OBLITERATED\n");
- vinum_conf.opencount = oc;
- ioctl_reply = (struct _ioctl_reply *) data; /* reinstate the address to reply to */
- ioctl_reply->error = 0;
- return 0;
- }
- return EBUSY;
-
- case VINUM_SETSTATE:
- setstate((struct vinum_ioctl_msg *) data); /* set an object state */
- return 0;
-
-#ifdef VINUMDEBUG
- case VINUM_MEMINFO:
- vinum_meminfo(data);
- return 0;
-
- case VINUM_MALLOCINFO:
- return vinum_mallocinfo(data);
-
- case VINUM_RQINFO:
- return vinum_rqinfo(data);
-#endif
-
- case VINUM_LABEL: /* label a volume */
- ioctl_reply->error = write_volume_label(*(int *) data); /* index of the volume to label */
- ioctl_reply->msg[0] = '\0'; /* no message */
- return 0;
-
- case VINUM_REMOVE:
- remove((struct vinum_ioctl_msg *) data); /* remove an object */
- return 0;
-
- case VINUM_GETFREELIST: /* get a drive free list element */
- index = *(int *) data; /* get the drive index */
- fe = ((int *) data)[1]; /* and the free list element */
- if ((index >= (unsigned) vinum_conf.drives_used) /* plex doesn't exist */
- ||(DRIVE[index].state == drive_unallocated))
- return ENODEV;
- if (fe >= DRIVE[index].freelist_entries) /* no such entry */
- return ENOENT;
- bcopy(&DRIVE[index].freelist[fe],
- data,
- sizeof(struct drive_freelist));
- return 0;
-
- case VINUM_RESETSTATS:
- resetstats((struct vinum_ioctl_msg *) data); /* reset object stats */
- return 0;
-
- /* attach an object to a superordinate object */
- case VINUM_ATTACH:
- attachobject((struct vinum_ioctl_msg *) data);
- return 0;
-
- /* detach an object from a superordinate object */
- case VINUM_DETACH:
- detachobject((struct vinum_ioctl_msg *) data);
- return 0;
-
- /* rename an object */
- case VINUM_RENAME:
- renameobject((struct vinum_rename_msg *) data);
- return 0;
-
- /* replace an object */
- case VINUM_REPLACE:
- replaceobject((struct vinum_ioctl_msg *) data);
- return 0;
-
- case VINUM_DAEMON:
- vinum_daemon(); /* perform the daemon */
- return 0;
-
- case VINUM_FINDDAEMON: /* check for presence of daemon */
- return vinum_finddaemon();
- return 0;
-
- case VINUM_SETDAEMON: /* set daemon flags */
- return vinum_setdaemonopts(*(int *) data);
-
- case VINUM_GETDAEMON: /* get daemon flags */
- *(int *) data = daemon_options;
- return 0;
-
- default:
- /* FALLTHROUGH */
- }
-
- default:
- printf("vinumioctl: invalid ioctl from process %d (%s): %lx\n",
- curproc->p_pid,
- curproc->p_comm,
- cmd); /* XXX */
- return EINVAL;
-
- case VINUM_DRIVE_TYPE:
- case VINUM_PLEX_TYPE:
- return EAGAIN; /* try again next week */
-
- case VINUM_SD_TYPE:
- objno = Sdno(dev);
-
- switch (cmd) {
- case VINUM_INITSD: /* initialize subdisk */
- return initsd(objno);
-
- default:
- return EINVAL;
- }
- break;
-
- case VINUM_VOLUME_TYPE:
- objno = Volno(dev);
-
- if ((unsigned) objno >= (unsigned) vinum_conf.volumes_used) /* not a valid volume */
- return ENXIO;
- vol = &VOL[objno];
- if (vol->state != volume_up) /* not up, */
- return EIO; /* I/O error */
-
- switch (cmd) {
- case DIOCGDINFO: /* get disk label */
- get_volume_label(vol, (struct disklabel *) data);
- break;
-
- /* Care! DIOCGPART returns *pointers* to
- * the caller, so we need to store this crap as well.
- * And yes, we need it. */
- case DIOCGPART: /* get partition information */
- get_volume_label(vol, &vol->label);
- ((struct partinfo *) data)->disklab = &vol->label;
- ((struct partinfo *) data)->part = &vol->label.d_partitions[0];
- break;
-
- /* We don't have this stuff on hardware,
- * so just pretend to do it so that
- * utilities don't get upset. */
- case DIOCWDINFO: /* write partition info */
- case DIOCSDINFO: /* set partition info */
- return 0; /* not a titty */
-
- case DIOCWLABEL: /* set or reset label writeable */
- if ((flag & FWRITE) == 0) /* not writeable? */
- return EACCES; /* no, die */
- if (*(int *) data != 0) /* set it? */
- vol->flags |= VF_WLABEL; /* yes */
- else
- vol->flags &= ~VF_WLABEL; /* no, reset */
- break;
-
- default:
- return ENOTTY; /* not my kind of ioctl */
- }
- break;
- }
- return 0; /* XXX */
-}
-
-/* The following four functions check the supplied
- * object index and return a pointer to the object
- * if it exists. Otherwise they longjump out via
- * throw_rude_remark */
-struct drive *
-validdrive(int driveno, struct _ioctl_reply *reply)
-{
- if ((driveno < vinum_conf.drives_used)
- && (DRIVE[driveno].state != drive_unallocated))
- return &DRIVE[driveno];
- strcpy(reply->msg, "No such drive");
- reply->error = ENOENT;
- return NULL;
-}
-
-struct sd *
-validsd(int sdno, struct _ioctl_reply *reply)
-{
- if ((sdno < vinum_conf.subdisks_used)
- && (SD[sdno].state != sd_unallocated))
- return &SD[sdno];
- strcpy(reply->msg, "No such subdisk");
- reply->error = ENOENT;
- return NULL;
-}
-
-struct plex *
-validplex(int plexno, struct _ioctl_reply *reply)
-{
- if ((plexno < vinum_conf.plexes_used)
- && (PLEX[plexno].state != plex_unallocated))
- return &PLEX[plexno];
- strcpy(reply->msg, "No such plex");
- reply->error = ENOENT;
- return NULL;
-}
-
-struct volume *
-validvol(int volno, struct _ioctl_reply *reply)
-{
- if ((volno < vinum_conf.volumes_used)
- && (VOL[volno].state != volume_unallocated))
- return &VOL[volno];
- strcpy(reply->msg, "No such volume");
- reply->error = ENOENT;
- return NULL;
-}
-
-/* reset an object's stats */
-void
-resetstats(struct vinum_ioctl_msg *msg)
-{
- struct _ioctl_reply *reply = (struct _ioctl_reply *) msg;
-
- switch (msg->type) {
- case drive_object:
- if (msg->index < vinum_conf.drives_used) {
- struct drive *drive = &DRIVE[msg->index];
- if (drive->state != drive_unallocated) {
- drive->reads = 0; /* number of reads on this drive */
- drive->writes = 0; /* number of writes on this drive */
- drive->bytes_read = 0; /* number of bytes read */
- drive->bytes_written = 0; /* number of bytes written */
- reply->error = 0;
- return;
- }
- reply->error = EINVAL;
- return;
- }
- case sd_object:
- if (msg->index < vinum_conf.subdisks_used) {
- struct sd *sd = &SD[msg->index];
- if (sd->state != sd_unallocated) {
- sd->reads = 0; /* number of reads on this subdisk */
- sd->writes = 0; /* number of writes on this subdisk */
- sd->bytes_read = 0; /* number of bytes read */
- sd->bytes_written = 0; /* number of bytes written */
- reply->error = 0;
- return;
- }
- reply->error = EINVAL;
- return;
- }
- break;
-
- case plex_object:
- if (msg->index < vinum_conf.plexes_used) {
- struct plex *plex = &PLEX[msg->index];
- if (plex->state != plex_unallocated) {
- plex->reads = 0;
- plex->writes = 0; /* number of writes on this plex */
- plex->bytes_read = 0; /* number of bytes read */
- plex->bytes_written = 0; /* number of bytes written */
- plex->multiblock = 0; /* requests that needed more than one block */
- plex->multistripe = 0; /* requests that needed more than one stripe */
- reply->error = 0;
- return;
- }
- reply->error = EINVAL;
- return;
- }
- break;
-
- case volume_object:
- if (msg->index < vinum_conf.volumes_used) {
- struct volume *vol = &VOL[msg->index];
- if (vol->state != volume_unallocated) {
- vol->bytes_read = 0; /* number of bytes read */
- vol->bytes_written = 0; /* number of bytes written */
- vol->reads = 0; /* number of reads on this volume */
- vol->writes = 0; /* number of writes on this volume */
- vol->recovered_reads = 0; /* reads recovered from another plex */
- reply->error = 0;
- return;
- }
- reply->error = EINVAL;
- return;
- }
- case invalid_object: /* can't get this */
- reply->error = EINVAL;
- return;
- }
-}
-
-/* attach an object to a superior object */
-void
-attachobject(struct vinum_ioctl_msg *msg)
-{
- struct _ioctl_reply *reply = (struct _ioctl_reply *) msg;
- int sdno;
- struct sd *sd;
- struct plex *plex;
- struct volume *vol;
-
- switch (msg->type) {
- case drive_object: /* you can't attach a drive to anything */
- case volume_object: /* nor a volume */
- case invalid_object: /* "this can't happen" */
- reply->error = EINVAL;
- reply->msg[0] = '\0'; /* vinum(8) doesn't do this */
- return;
-
- case sd_object:
- sd = validsd(msg->index, reply);
- if (sd == NULL) /* not a valid subdisk */
- return;
- plex = validplex(msg->otherobject, reply);
- if (plex) {
- if (sd->plexno >= 0) { /* already belong to a plex */
- reply->error = EBUSY; /* no message, the user should check */
- reply->msg[0] = '\0';
- return;
- }
- sd->plexoffset = msg->offset; /* this is where we want it */
- set_sd_state(sd->sdno, sd_stale, setstate_force); /* make sure it's stale */
- give_sd_to_plex(plex->plexno, sd->sdno); /* and give it to the plex */
- update_sd_config(sd->sdno, 0);
- save_config();
- reply->error = 0;
- }
- if (sd->state == sd_reviving)
- reply->error = EAGAIN; /* need to revive it */
- else
- reply->error = 0;
- break;
-
- case plex_object:
- plex = validplex(msg->index, reply); /* get plex */
- if (plex == NULL)
- return;
- if (plex->organization != plex_concat) { /* can't attach to striped and raid-5 */
- reply->error = EINVAL; /* no message, the user should check */
- reply->msg[0] = '\0';
- return;
- }
- vol = validvol(msg->otherobject, reply); /* and volume information */
- if (vol) {
- if ((vol->plexes == MAXPLEX) /* we have too many already */
- ||(plex->volno >= 0)) { /* or the plex has an owner */
- reply->error = EINVAL; /* no message, the user should check */
- reply->msg[0] = '\0';
- return;
- }
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- sd = &SD[plex->sdnos[sdno]];
-
- if (sd->state > sd_down) /* real subdisk, vaguely accessible */
- set_sd_state(plex->sdnos[sdno], sd_stale, setstate_force); /* make it stale */
- }
- set_plex_state(plex->plexno, plex_up, setstate_none); /* update plex state */
- give_plex_to_volume(msg->otherobject, msg->index); /* and give it to the volume */
- update_plex_config(plex->plexno, 0);
- save_config();
- }
- }
-}
-
-/* detach an object from a superior object */
-void
-detachobject(struct vinum_ioctl_msg *msg)
-{
- struct _ioctl_reply *reply = (struct _ioctl_reply *) msg;
- struct sd *sd;
- struct plex *plex;
- struct volume *vol;
- int sdno;
- int plexno;
-
- switch (msg->type) {
- case drive_object: /* you can't detach a drive from anything */
- case volume_object: /* nor a volume */
- case invalid_object: /* "this can't happen" */
- reply->error = EINVAL;
- reply->msg[0] = '\0'; /* vinum(8) doesn't do this */
- return;
-
- case sd_object:
- sd = validsd(msg->index, reply);
- if (sd == NULL)
- return;
- if (sd->plexno < 0) { /* doesn't belong to a plex */
- reply->error = ENOENT;
- strcpy(reply->msg, "Subdisk is not attached");
- return;
- } else { /* valid plex number */
- plex = &PLEX[sd->plexno];
- if ((!msg->force) /* don't force things */
- &&((plex->state == plex_up) /* and the plex is up */
- ||((plex->state == plex_flaky) && sd->state == sd_up))) { /* or flaky with this sd up */
- reply->error = EBUSY; /* we need this sd */
- reply->msg[0] = '\0';
- return;
- }
- sd->plexno = -1; /* anonymous sd */
- if (plex->subdisks == 1) { /* this was the only subdisk */
- Free(plex->sdnos); /* free the subdisk array */
- plex->sdnos = NULL; /* and note the fact */
- plex->subdisks_allocated = 0; /* no subdisk space */
- } else {
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- if (plex->sdnos[sdno] == msg->index) /* found our subdisk */
- break;
- }
- if (sdno < (plex->subdisks - 1)) /* not the last one, compact */
- bcopy(&plex->sdnos[sdno + 1],
- &plex->sdnos[sdno],
- (plex->subdisks - 1 - sdno) * sizeof(int));
- }
- plex->subdisks--;
- if (!bcmp(plex->name, sd->name, strlen(plex->name))) { /* this subdisk is named after the plex */
- bcopy(sd->name,
- &sd->name[3],
- min(strlen(sd->name), MAXSDNAME - 3));
- bcopy("ex-", sd->name, 3);
- sd->name[MAXSDNAME - 1] = '\0';
- }
- update_plex_config(plex->plexno, 0);
- if ((plex->organization == plex_striped) /* we've just mutilated our plex, */
- )
- set_plex_state(plex->plexno,
- plex_down,
- setstate_force | setstate_configuring);
- update_sd_config(sd->sdno, 0);
- save_config();
- reply->error = 0;
- }
- return;
-
- case plex_object:
- plex = validplex(msg->index, reply); /* get plex */
- if (plex == NULL)
- return;
- if (plex->volno >= 0) {
- int volno = plex->volno;
-
- vol = &VOL[volno];
- if ((!msg->force) /* don't force things */
- &&((vol->state == volume_up) /* and the volume is up */
- &&(vol->plexes == 1))) { /* and this is the last plex */
- /* XXX As elsewhere, check whether we will lose
- * mapping by removing this plex */
- reply->error = EBUSY; /* we need this plex */
- reply->msg[0] = '\0';
- return;
- }
- plex->volno = -1; /* anonymous plex */
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- if (vol->plex[plexno] == msg->index) /* found our plex */
- break;
- }
- if (plexno < (vol->plexes - 1)) /* not the last one, compact */
- bcopy(&vol[plexno + 1], &vol[plexno], (vol->plexes - 1 - plexno) * sizeof(int));
- vol->plexes--;
- if (!bcmp(vol->name, plex->name, strlen(vol->name))) { /* this plex is named after the volume */
- /* First, check if the subdisks are the same */
- if (msg->recurse) {
- int sdno;
-
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- struct sd *sd = &SD[plex->sdnos[sdno]];
-
- if (!bcmp(plex->name, sd->name, strlen(plex->name))) { /* subdisk is named after the plex */
- bcopy(sd->name, &sd->name[3], min(strlen(sd->name), MAXSDNAME - 3));
- bcopy("ex-", sd->name, 3);
- sd->name[MAXSDNAME - 1] = '\0';
- }
- }
- }
- bcopy(plex->name, &plex->name[3], min(strlen(plex->name), MAXPLEXNAME - 3));
- bcopy("ex-", plex->name, 3);
- plex->name[MAXPLEXNAME - 1] = '\0';
- }
- update_plex_config(plex->plexno, 0);
- update_volume_config(volno, 0);
- save_config();
- reply->error = 0;
- } else {
- reply->error = ENOENT;
- strcpy(reply->msg, "Plex is not attached");
- }
- }
-}
-
-void
-renameobject(struct vinum_rename_msg *msg)
-{
- struct _ioctl_reply *reply = (struct _ioctl_reply *) msg;
- struct drive *drive;
- struct sd *sd;
- struct plex *plex;
- struct volume *vol;
-
- switch (msg->type) {
- case drive_object: /* you can't attach a drive to anything */
- if (find_drive(msg->newname, 0) >= 0) { /* we have that name already, */
- reply->error = EEXIST;
- reply->msg[0] = '\0';
- return;
- }
- drive = validdrive(msg->index, reply);
- if (drive) {
- bcopy(msg->newname, drive->label.name, MAXDRIVENAME);
- save_config();
- reply->error = 0;
- }
- return;
-
- case sd_object: /* you can't attach a subdisk to anything */
- if (find_subdisk(msg->newname, 0) >= 0) { /* we have that name already, */
- reply->error = EEXIST;
- reply->msg[0] = '\0';
- return;
- }
- sd = validsd(msg->index, reply);
- if (sd) {
- bcopy(msg->newname, sd->name, MAXSDNAME);
- update_sd_config(sd->sdno, 0);
- save_config();
- reply->error = 0;
- }
- return;
-
- case plex_object: /* you can't attach a plex to anything */
- if (find_plex(msg->newname, 0) >= 0) { /* we have that name already, */
- reply->error = EEXIST;
- reply->msg[0] = '\0';
- return;
- }
- plex = validplex(msg->index, reply);
- if (plex) {
- bcopy(msg->newname, plex->name, MAXPLEXNAME);
- update_plex_config(plex->plexno, 0);
- save_config();
- reply->error = 0;
- }
- return;
-
- case volume_object: /* you can't attach a volume to anything */
- if (find_volume(msg->newname, 0) >= 0) { /* we have that name already, */
- reply->error = EEXIST;
- reply->msg[0] = '\0';
- return;
- }
- vol = validvol(msg->index, reply);
- if (vol) {
- bcopy(msg->newname, vol->name, MAXVOLNAME);
- update_volume_config(msg->index, 0);
- save_config();
- reply->error = 0;
- }
- return;
-
- case invalid_object:
- reply->error = EINVAL;
- reply->msg[0] = '\0';
- }
-}
-
-/* Replace one object with another */
-void
-replaceobject(struct vinum_ioctl_msg *msg)
-{
- struct _ioctl_reply *reply = (struct _ioctl_reply *) msg;
-
- reply->error = ENODEV; /* until I know how to do this */
- strcpy(reply->msg, "replace not implemented yet");
-/* save_config (); */
-}
diff --git a/sys/dev/vinum/vinumkw.h b/sys/dev/vinum/vinumkw.h
deleted file mode 100644
index 25dbced2fc282..0000000000000
--- a/sys/dev/vinum/vinumkw.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumkw.h,v 1.11 1999/01/18 03:32:10 grog Exp grog $
- */
-
-#ifdef KERNEL
-#include "opt_vinum.h"
-#endif
-
-/* Command keywords that vinum knows. These include both user-level
- * and kernel-level stuff */
-
-/* Our complete vocabulary. The names of the commands are
- * the same as the identifier without the kw_ at the beginning
- * (i.e. kw_create defines the "create" keyword). Preprocessor
- * magic in parser.c does the rest. */
-enum keyword {
- kw_create,
- kw_modify,
- kw_list,
- kw_l = kw_list,
- kw_ld, /* list drive */
- kw_ls, /* list subdisk */
- kw_lp, /* list plex */
- kw_lv, /* list volume */
- kw_set,
- kw_rm,
- kw_start,
- kw_stop,
- kw_makedev, /* make /dev/vinum devices */
- kw_setdaemon, /* set daemon flags */
- kw_getdaemon, /* set daemon flags */
- kw_help,
- kw_drive,
- kw_sd,
- kw_subdisk = kw_sd,
- kw_plex,
- kw_volume,
- kw_vol = kw_volume,
- kw_read,
- kw_readpol,
- kw_org,
- kw_name,
- kw_concat,
- kw_striped,
- kw_raid5,
- kw_driveoffset,
- kw_plexoffset,
- kw_len,
- kw_length = kw_len,
- kw_state,
- kw_setupstate,
- kw_d, /* flag names */
- kw_f,
- kw_r,
- kw_s,
- kw_v,
- kw_round, /* round robin */
- kw_prefer, /* prefer plex */
- kw_device,
- kw_init,
- kw_label,
- kw_resetconfig,
- kw_writethrough,
- kw_writeback,
- kw_raw,
- kw_resetstats,
- kw_attach,
- kw_detach,
- kw_rename,
- kw_printconfig,
- kw_replace,
- kw_detached,
-#ifdef VINUMDEBUG
- kw_debug, /* go into debugger */
-#endif
- kw_info,
- kw_quit,
- kw_invalid_keyword = -1
-};
-
-struct _keywords {
- char *name;
- enum keyword keyword;
-};
-
-struct keywordset {
- int size;
- struct _keywords *k;
-};
-
-extern struct _keywords keywords[];
-extern struct _keywords flag_keywords[];
-
-extern struct keywordset keyword_set;
-extern struct keywordset flag_set;
diff --git a/sys/dev/vinum/vinumlock.c b/sys/dev/vinum/vinumlock.c
deleted file mode 100644
index b367dc57a50fe..0000000000000
--- a/sys/dev/vinum/vinumlock.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumlock.c,v 1.8 1999/01/14 02:52:13 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-
-/* Lock routines. Currently, we lock either an individual volume
- * or the global configuration. I don't think tsleep and
- * wakeup are SMP safe. FIXME XXX */
-
-/* Lock a drive, wait if it's in use */
-int
-lockdrive(struct drive *drive)
-{
- int error;
-
- /* XXX get rid of drive->flags |= VF_LOCKING; */
- while ((drive->flags & VF_LOCKED) != 0) {
- /* There are problems sleeping on a unique identifier,
- * since the drive structure can move, and the unlock
- * function can be called after killing the drive.
- * Solve this by waiting on this function; the number
- * of conflicts is negligible */
- if ((error = tsleep(&lockdrive,
- PRIBIO | PCATCH,
- "vindrv",
- 0)) != 0)
- return error;
- }
- drive->flags |= VF_LOCKED;
- drive->pid = curproc->p_pid; /* it's a panic error if curproc is null */
- return 0;
-}
-
-/* Unlock a drive and let the next one at it */
-void
-unlockdrive(struct drive *drive)
-{
- drive->flags &= ~VF_LOCKED;
- /* we don't reset pid: it's of hysterical interest */
- wakeup(&lockdrive);
-}
-
-/* Lock a volume, wait if it's in use */
-int
-lockvol(struct volume *vol)
-{
- int error;
-
- while ((vol->flags & VF_LOCKED) != 0) {
- vol->flags |= VF_LOCKING;
- /* It would seem to make more sense to sleep on
- * the address 'vol'. Unfortuntaly we can't
- * guarantee that this address won't change due to
- * table expansion. The address we choose won't change. */
- if ((error = tsleep(&vinum_conf.volume + vol->devno,
- PRIBIO | PCATCH,
- "volock",
- 0)) != 0)
- return error;
- }
- vol->flags |= VF_LOCKED;
- return 0;
-}
-
-/* Unlock a volume and let the next one at it */
-void
-unlockvol(struct volume *vol)
-{
- vol->flags &= ~VF_LOCKED;
- if ((vol->flags & VF_LOCKING) != 0) {
- vol->flags &= ~VF_LOCKING;
- wakeup(&vinum_conf.volume + vol->devno);
- }
-}
-
-/* Lock a plex, wait if it's in use */
-int
-lockplex(struct plex *plex)
-{
- int error;
-
- while ((plex->flags & VF_LOCKED) != 0) {
- plex->flags |= VF_LOCKING;
- /* It would seem to make more sense to sleep on
- * the address 'plex'. Unfortunately we can't
- * guarantee that this address won't change due to
- * table expansion. The address we choose won't change. */
- if ((error = tsleep(&vinum_conf.plex + plex->sdnos[0],
- PRIBIO | PCATCH,
- "plexlk",
- 0)) != 0)
- return error;
- }
- plex->flags |= VF_LOCKED;
- return 0;
-}
-
-/* Unlock a plex and let the next one at it */
-void
-unlockplex(struct plex *plex)
-{
- plex->flags &= ~VF_LOCKED;
- if ((plex->flags & VF_LOCKING) != 0) {
- plex->flags &= ~VF_LOCKING;
- wakeup(&vinum_conf.plex + plex->plexno);
- }
-}
-
-
-/* Get a lock for the global config, wait if it's not available */
-int
-lock_config(void)
-{
- int error;
-
- while ((vinum_conf.flags & VF_LOCKED) != 0) {
- vinum_conf.flags |= VF_LOCKING;
- if ((error = tsleep(&vinum_conf, PRIBIO | PCATCH, "vincfg", 0)) != 0)
- return error;
- }
- vinum_conf.flags |= VF_LOCKED;
- return 0;
-}
-
-/* Unlock and wake up any waiters */
-void
-unlock_config(void)
-{
- vinum_conf.flags &= ~VF_LOCKED;
- if ((vinum_conf.flags & VF_LOCKING) != 0) {
- vinum_conf.flags &= ~VF_LOCKING;
- wakeup(&vinum_conf);
- }
-}
diff --git a/sys/dev/vinum/vinummemory.c b/sys/dev/vinum/vinummemory.c
deleted file mode 100644
index c06bd9abd4db8..0000000000000
--- a/sys/dev/vinum/vinummemory.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinummemory.c,v 1.19 1998/12/30 06:22:26 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-
-extern jmp_buf command_fail; /* return on a failed command */
-
-#ifdef VINUMDEBUG
-#include <dev/vinum/request.h>
-extern struct rqinfo rqinfo[];
-extern struct rqinfo *rqip;
-#endif
-
-/* Why aren't these declared anywhere? XXX */
-int setjmp(jmp_buf);
-void longjmp(jmp_buf, int);
-
-void freedatabuf(struct mc *me);
-caddr_t allocdatabuf(struct mc *me);
-
-void
-expand_table(void **table, int oldsize, int newsize)
-{
- if (newsize > oldsize) {
- int *temp;
-
- temp = (int *) Malloc(newsize); /* allocate a new table */
- CHECKALLOC(temp, "vinum: Can't expand table\n");
- if (*table != NULL) { /* already something there, */
- bcopy((char *) *table, (char *) temp, oldsize); /* copy it to the old table */
- Free(*table);
- }
- *table = temp;
- }
-}
-
-#if VINUMDEBUG /* XXX debug */
-#define MALLOCENTRIES 16384
-int malloccount = 0;
-int highwater = 0; /* highest index ever allocated */
-static struct mc malloced[MALLOCENTRIES];
-
-static total_malloced;
-
-caddr_t
-MMalloc(int size, char *file, int line)
-{
- caddr_t result;
- int i;
- static int seq = 0;
- int s;
- struct mc me; /* information to pass to allocdatabuf */
-
- if (malloccount >= MALLOCENTRIES) { /* too many */
- printf("vinum: can't allocate table space to trace memory allocation");
- return 0; /* can't continue */
- }
- result = malloc(size, M_DEVBUF, M_WAITOK); /* use malloc for smaller and irregular stuff */
- if (result == NULL)
- printf("vinum: can't allocate %d bytes from %s:%d\n", size, file, line);
- else {
- me.flags = 0; /* allocation via malloc */
- s = splhigh();
- for (i = 0; i < malloccount; i++) {
- if (((result + size) > malloced[i].address)
- && (result < malloced[i].address + malloced[i].size)) /* overlap */
- Debugger("Malloc overlap");
- }
- if (result) {
- char *f = rindex(file, '/'); /* chop off dirname if present */
-
- if (f == NULL)
- f = file;
- else
- f++; /* skip the / */
- i = malloccount++;
- total_malloced += size;
- malloced[i].address = result;
- malloced[i].size = size;
- malloced[i].line = line;
- malloced[i].seq = seq++;
- malloced[i].flags = me.flags;
- malloced[i].databuf = me.databuf; /* only used with kva alloc */
- bcopy(f, malloced[i].file, min(strlen(f) + 1, 16));
- }
- if (malloccount > highwater)
- highwater = malloccount;
- splx(s);
- }
- return result;
-}
-
-void
-FFree(void *mem, char *file, int line)
-{
- int i;
- int s;
-
- s = splhigh();
- for (i = 0; i < malloccount; i++) {
- if ((caddr_t) mem == malloced[i].address) { /* found it */
- bzero(mem, malloced[i].size); /* XXX */
- free(mem, M_DEVBUF);
- malloccount--;
- total_malloced -= malloced[i].size;
- if (i < malloccount) /* more coming after */
- bcopy(&malloced[i + 1], &malloced[i], (malloccount - i) * sizeof(struct mc));
- splx(s);
- return;
- }
- }
- splx(s);
- printf("Freeing unallocated data at 0x%08x from %s, line %d\n", (int) mem, file, line);
- Debugger("Free");
-}
-
-void
-vinum_meminfo(caddr_t data)
-{
- struct meminfo *m = (struct meminfo *) data;
-
- m->mallocs = malloccount;
- m->total_malloced = total_malloced;
- m->malloced = malloced;
- m->highwater = highwater;
-}
-
-int
-vinum_mallocinfo(caddr_t data)
-{
- struct mc *m = (struct mc *) data;
- unsigned int ent = *(int *) data; /* 1st word is index */
-
- if (ent >= malloccount)
- return ENOENT;
- m->address = malloced[ent].address;
- m->size = malloced[ent].size;
- m->line = malloced[ent].line;
- m->seq = malloced[ent].seq;
- bcopy(malloced[ent].file, m->file, 16);
- return 0;
-}
-
-/* return the nth request trace buffer entry. This
- * is indexed back from the current entry (which
- * has index 0) */
-int
-vinum_rqinfo(caddr_t data)
-{
- struct rqinfo *rq = (struct rqinfo *) data;
- int ent = *(int *) data; /* 1st word is index */
- int lastent = rqip - rqinfo; /* entry number of current entry */
-
- if (ent >= RQINFO_SIZE) /* out of the table */
- return ENOENT;
- if ((ent = lastent - ent - 1) < 0)
- ent += RQINFO_SIZE; /* roll over backwards */
- bcopy(&rqinfo[ent], rq, sizeof(struct rqinfo));
- return 0;
-}
-#endif
diff --git a/sys/dev/vinum/vinumparser.c b/sys/dev/vinum/vinumparser.c
deleted file mode 100644
index 7812f64bbd8b3..0000000000000
--- a/sys/dev/vinum/vinumparser.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumparser.c,v 1.14 1999/01/18 03:30:07 grog Exp grog $
- */
-
-/* This file contains the parser for the configuration routines. It's used
- * both in the kernel and in the user interface program, thus the separate file. */
-
-/* Go through a text and split up into text tokens. These are either non-blank
- * sequences, or any sequence (except \0) enclosed in ' or ". Embedded ' or
- * " characters may be escaped by \, which otherwise has no special meaning.
- *
- * Delimit by following with a \0, and return pointers to the starts at token [].
- * Return the number of tokens found as the return value.
- *
- * This method has the restriction that a closing " or ' must be followed by
- * grey space.
- *
- * Error conditions are end of line before end of quote, or no space after
- * a closing quote. In this case, tokenize() returns -1. */
-
-#ifdef KERNEL
-#include "opt_vinum.h"
-#endif
-
-#include <sys/param.h>
-#ifdef KERNEL
-#undef KERNEL /* XXX */
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#else
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#endif
-/* All this mess for a single struct definition */
-#include <sys/uio.h>
-#include <sys/namei.h>
-#include <sys/disklabel.h>
-#include <sys/mount.h>
-#include <sys/device.h>
-#include <sys/disk.h>
-#include <sys/buf.h>
-
-#include <dev/vinum/vinumvar.h>
-#include <dev/vinum/vinumkw.h>
-#include <dev/vinum/vinumio.h>
-#include <dev/vinum/vinumext.h>
-
-#ifdef REALLYKERNEL
-#define isspace(c) ((c == ' ') || (c == '\t')) /* check for white space */
-#else /* get it from the headers */
-#include <ctype.h>
-#endif
-
-/* enum keyword is defined in vinumvar.h */
-
-#define keypair(x) { #x, kw_##x } /* create pair "foo", kw_foo */
-#define flagkeypair(x) { "-"#x, kw_##x } /* create pair "-foo", kw_foo */
-#define KEYWORDSET(x) {sizeof (x) / sizeof (struct _keywords), x}
-
-/* Normal keywords. These are all the words that vinum knows. */
-struct _keywords keywords[] =
-{keypair(drive),
- keypair(sd),
- keypair(subdisk),
- keypair(plex),
- keypair(volume),
- keypair(vol),
- keypair(setupstate),
- keypair(readpol),
- keypair(org),
- keypair(name),
- keypair(writethrough),
- keypair(writeback),
- keypair(raw),
- keypair(device),
- keypair(concat),
- keypair(raid5),
- keypair(striped),
- keypair(plexoffset),
- keypair(driveoffset),
- keypair(length),
- keypair(len),
- keypair(state),
- keypair(round),
- keypair(prefer),
- keypair(rename),
- keypair(detached),
-#ifndef KERNEL /* for vinum(8) only */
-#ifdef VINUMDEBUG
- keypair(debug),
-#endif
- keypair(attach),
- keypair(detach),
- keypair(printconfig),
- keypair(replace),
- keypair(create),
- keypair(read),
- keypair(modify),
- keypair(list),
- keypair(l),
- keypair(ld),
- keypair(ls),
- keypair(lp),
- keypair(lv),
- keypair(info),
- keypair(set),
- keypair(rm),
- keypair(init),
- keypair(label),
- keypair(resetconfig),
- keypair(start),
- keypair(stop),
- keypair(makedev),
- keypair(help),
- keypair(quit),
- keypair(setdaemon),
- keypair(getdaemon),
- keypair(resetstats)
-#endif
-};
-struct keywordset keyword_set = KEYWORDSET(keywords);
-
-#ifndef KERNEL
-struct _keywords flag_keywords[] =
-{flagkeypair(f),
- flagkeypair(d),
- flagkeypair(v),
- flagkeypair(s),
- flagkeypair(r)
-};
-struct keywordset flag_set = KEYWORDSET(flag_keywords);
-
-#endif
-
-int
-tokenize(char *cptr, char *token[])
-{
- char delim; /* delimiter for searching for the partner */
- int tokennr; /* index of this token */
- tokennr = 0; /* none found yet */
-
- for (;;) {
- while (isspace(*cptr))
- cptr++; /* skip initial white space */
- if ((*cptr == '\0') || (*cptr == '\n') || (*cptr == '#')) /* end of line */
- return tokennr; /* return number of tokens found */
- delim = *cptr;
- token[tokennr] = cptr; /* point to it */
- tokennr++; /* one more */
- /* XXX this is broken. It leaves superfluous \\ characters in the text */
- if ((delim == '\'') || (delim == '"')) { /* delimitered */
- for (;;) {
- cptr++;
- if ((*cptr == delim) && (cptr[-1] != '\\')) { /* found the partner */
- cptr++; /* move on past */
- if (!isspace(*cptr)) /* error, no space after closing quote */
- return -1;
- *cptr++ = '\0'; /* delimit */
- } else if ((*cptr == '\0') || (*cptr == '\n')) /* end of line */
- return -1;
- }
- } else { /* not quoted */
- while ((*cptr != '\0') && (!isspace(*cptr)) && (*cptr != '\n'))
- cptr++;
- if (*cptr != '\0') /* not end of the line, */
- *cptr++ = '\0'; /* delimit and move to the next */
- }
- }
-}
-
-/* Find a keyword and return an index */
-enum keyword
-get_keyword(char *name, struct keywordset *keywordset)
-{
- int i;
- struct _keywords *keywords = keywordset->k; /* point to the keywords */
- for (i = 0; i < keywordset->size; i++)
- if (!strcmp(name, keywords[i].name))
- return (enum keyword) keywords[i].keyword;
- return kw_invalid_keyword;
-}
diff --git a/sys/dev/vinum/vinumrequest.c b/sys/dev/vinum/vinumrequest.c
deleted file mode 100644
index 91f6e15dd9e38..0000000000000
--- a/sys/dev/vinum/vinumrequest.c
+++ /dev/null
@@ -1,925 +0,0 @@
-/* XXX to do:
-
- * Decide where we need splbio ()
- */
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumrequest.c,v 1.22 1999/01/17 06:15:46 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-#include <dev/vinum/request.h>
-#include <miscfs/specfs/specdev.h>
-#include <sys/resourcevar.h>
-
-enum requeststatus bre(struct request *rq,
- int plexno,
- daddr_t * diskstart,
- daddr_t diskend);
-enum requeststatus bre5(struct request *rq,
- int plexno,
- daddr_t * diskstart,
- daddr_t diskend);
-enum requeststatus build_read_request(struct request *rq, int volplexno);
-enum requeststatus build_write_request(struct request *rq);
-enum requeststatus build_rq_buffer(struct rqelement *rqe, struct plex *plex);
-void freerq(struct request *rq);
-void free_rqg(struct rqgroup *rqg);
-int find_alternate_sd(struct request *rq);
-int check_range_covered(struct request *);
-void complete_rqe(struct buf *bp);
-void complete_raid5_write(struct rqelement *);
-int abortrequest(struct request *rq, int error);
-void sdio_done(struct buf *bp);
-int vinum_bounds_check(struct buf *bp, struct volume *vol);
-caddr_t allocdatabuf(struct rqelement *rqe);
-void freedatabuf(struct rqelement *rqe);
-
-#ifdef VINUMDEBUG
-struct rqinfo rqinfo[RQINFO_SIZE];
-struct rqinfo *rqip = rqinfo;
-
-void
-logrq(enum rqinfo_type type, union rqinfou info, struct buf *ubp)
-{
- int s = splhigh();
-
- microtime(&rqip->timestamp); /* when did this happen? */
- rqip->type = type;
- rqip->bp = ubp; /* user buffer */
- switch (type) {
- case loginfo_user_bp:
- case loginfo_user_bpl:
- bcopy(info.bp, &rqip->info.b, sizeof(struct buf));
- break;
-
- case loginfo_iodone:
- case loginfo_rqe:
- case loginfo_raid5_data:
- case loginfo_raid5_parity:
- bcopy(info.rqe, &rqip->info.rqe, sizeof(struct rqelement));
- break;
-
- case loginfo_unused:
- break;
- }
- rqip++;
- if (rqip >= &rqinfo[RQINFO_SIZE]) /* wrap around */
- rqip = rqinfo;
- splx(s);
-}
-
-#endif
-
-void
-vinumstrategy(struct buf *bp)
-{
- int volno;
- struct volume *vol = NULL;
- struct devcode *device = (struct devcode *) &bp->b_dev; /* decode device number */
-
- switch (device->type) {
- case VINUM_SD_TYPE:
- case VINUM_RAWSD_TYPE:
- sdio(bp);
- return;
-
- /* In fact, vinum doesn't handle drives: they're
- * handled directly by the disk drivers */
- case VINUM_DRIVE_TYPE:
- default:
- bp->b_error = EIO; /* I/O error */
- bp->b_flags |= B_ERROR;
- biodone(bp);
- return;
-
- case VINUM_VOLUME_TYPE: /* volume I/O */
- volno = Volno(bp->b_dev);
- vol = &VOL[volno];
- if (vol->state != volume_up) { /* can't access this volume */
- bp->b_error = EIO; /* I/O error */
- bp->b_flags |= B_ERROR;
- biodone(bp);
- return;
- }
- if (vinum_bounds_check(bp, vol) <= 0) { /* don't like them bounds */
- biodone(bp); /* have nothing to do with this */
- return;
- }
- /* FALLTHROUGH */
- /* Plex I/O is pretty much the same as volume I/O
- * for a single plex. Indicate this by passing a NULL
- * pointer (set above) for the volume */
- case VINUM_PLEX_TYPE:
- case VINUM_RAWPLEX_TYPE:
- bp->b_resid = bp->b_bcount; /* transfer everything */
- vinumstart(bp, 0);
- return;
- }
-}
-
-/* Start a transfer. Return -1 on error,
- * 0 if OK, 1 if we need to retry.
- * Parameter reviveok is set when doing
- * transfers for revives: it allows transfers to
- * be started immediately when a revive is in
- * progress. During revive, normal transfers
- * are queued if they share address space with
- * a currently active revive operation. */
-int
-vinumstart(struct buf *bp, int reviveok)
-{
- int plexno;
- int maxplex; /* maximum number of plexes to handle */
- struct volume *vol;
- struct request *rq; /* build up our request here */
- enum requeststatus status;
-
-#if VINUMDEBUG
- if (debug & DEBUG_LASTREQS)
- logrq(loginfo_user_bp, bp, bp);
-#endif
-
- /* XXX In these routines, we're assuming that
- * we will always be called with bp->b_bcount
- * which is a multiple of the sector size. This
- * is a reasonable assumption, since we are only
- * called from system routines. Should we check
- * anyway? */
-
- if ((bp->b_bcount % DEV_BSIZE) != 0) { /* bad length */
- bp->b_error = EINVAL; /* invalid size */
- bp->b_flags |= B_ERROR;
- biodone(bp);
- return -1;
- }
- rq = (struct request *) Malloc(sizeof(struct request)); /* allocate a request struct */
- if (rq == NULL) { /* can't do it */
- bp->b_error = ENOMEM; /* can't get memory */
- bp->b_flags |= B_ERROR;
- biodone(bp);
- return -1;
- }
- bzero(rq, sizeof(struct request));
-
- /* Note the volume ID. This can be NULL, which
- * the request building functions use as an
- * indication for single plex I/O */
- rq->bp = bp; /* and the user buffer struct */
-
- if (DEVTYPE(bp->b_dev) == VINUM_VOLUME_TYPE) { /* it's a volume, */
- rq->volplex.volno = Volno(bp->b_dev); /* get the volume number */
- vol = &VOL[rq->volplex.volno]; /* and point to it */
- vol->active++; /* one more active request */
- maxplex = vol->plexes; /* consider all its plexes */
- } else {
- vol = NULL; /* no volume */
- rq->volplex.plexno = Plexno(bp->b_dev); /* point to the plex */
- rq->isplex = 1; /* note that it's a plex */
- maxplex = 1; /* just the one plex */
- }
-
- if (bp->b_flags & B_READ) {
- /* This is a read request. Decide
- * which plex to read from.
- *
- * There's a potential race condition here,
- * since we're not locked, and we could end
- * up multiply incrementing the round-robin
- * counter. This doesn't have any serious
- * effects, however. */
- if (vol != NULL) {
- vol->reads++;
- vol->bytes_read += bp->b_bcount;
- plexno = vol->preferred_plex; /* get the plex to use */
- if (plexno < 0) { /* round robin */
- plexno = vol->last_plex_read;
- vol->last_plex_read++;
- if (vol->last_plex_read == vol->plexes) /* got the the end? */
- vol->last_plex_read = 0; /* wrap around */
- }
- status = build_read_request(rq, plexno); /* build a request */
- } else {
- daddr_t diskaddr = bp->b_blkno; /* start offset of transfer */
- status = bre(rq, /* build a request list */
- rq->volplex.plexno,
- &diskaddr,
- diskaddr + (bp->b_bcount / DEV_BSIZE));
- }
-
- if ((status > REQUEST_RECOVERED) /* can't satisfy it */
- ||(bp->b_flags & B_DONE)) { /* XXX shouldn't get this without bad status */
- if (status == REQUEST_DOWN) { /* not enough subdisks */
- bp->b_error = EIO; /* I/O error */
- bp->b_flags |= B_ERROR;
- }
- biodone(bp);
- freerq(rq);
- return -1;
- } { /* XXX */
- int result;
- int s = splhigh();
- result = launch_requests(rq, reviveok); /* now start the requests if we can */
- splx(s);
- return result;
- }
- } else
- /* This is a write operation. We write to all
- * plexes. If this is a RAID 5 plex, we must also
- * update the parity stripe. */
- {
- if (vol != NULL) {
- vol->writes++;
- vol->bytes_written += bp->b_bcount;
- status = build_write_request(rq); /* Not all the subdisks are up */
- } else { /* plex I/O */
- daddr_t diskstart;
-
- diskstart = bp->b_blkno; /* start offset of transfer */
- status = bre(rq,
- Plexno(bp->b_dev),
- &diskstart,
- bp->b_blkno + (bp->b_bcount / DEV_BSIZE)); /* build requests for the plex */
- }
- if ((status > REQUEST_RECOVERED) /* can't satisfy it */
- ||(bp->b_flags & B_DONE)) { /* XXX shouldn't get this without bad status */
- if (status == REQUEST_DOWN) { /* not enough subdisks */
- bp->b_error = EIO; /* I/O error */
- bp->b_flags |= B_ERROR;
- }
- if ((bp->b_flags & B_DONE) == 0)
- biodone(bp);
- freerq(rq);
- return -1;
- }
- return launch_requests(rq, reviveok); /* now start the requests if we can */
- }
-}
-
-/* Call the low-level strategy routines to
- * perform the requests in a struct request */
-int
-launch_requests(struct request *rq, int reviveok)
-{
- struct rqgroup *rqg;
- int rqno; /* loop index */
- struct rqelement *rqe; /* current element */
- int s;
-
- /* First find out whether we're reviving, and the
- * request contains a conflict. If so, we hang
- * the request off plex->waitlist of the first
- * plex we find which is reviving */
- if ((rq->flags & XFR_REVIVECONFLICT) /* possible revive conflict */
- &&(!reviveok)) { /* and we don't want to do it now, */
- struct sd *sd;
- struct request *waitlist; /* point to the waitlist */
-
- sd = &SD[rq->sdno];
- if (sd->waitlist != NULL) { /* something there already, */
- waitlist = sd->waitlist;
- while (waitlist->next != NULL) /* find the end */
- waitlist = waitlist->next;
- waitlist->next = rq; /* hook our request there */
- } else
- sd->waitlist = rq; /* hook our request at the front */
-
-#if VINUMDEBUG
- if (debug & DEBUG_REVIVECONFLICT)
- printf("Revive conflict sd %d: %x\n%s dev 0x%x, offset 0x%x, length %ld\n",
- rq->sdno,
- (u_int) rq,
- rq->bp->b_flags & B_READ ? "Read" : "Write",
- rq->bp->b_dev,
- rq->bp->b_blkno,
- rq->bp->b_bcount); /* XXX */
-#endif
- return 0; /* and get out of here */
- }
- rq->active = 0; /* nothing yet */
- /* XXX This is probably due to a bug */
- if (rq->rqg == NULL) { /* no request */
- printf("vinum: null rqg");
- abortrequest(rq, EINVAL);
- return -1;
- }
-#if VINUMDEBUG
- if (debug & DEBUG_ADDRESSES)
- printf("Request: %x\n%s dev 0x%x, offset 0x%x, length %ld\n",
- (u_int) rq,
- rq->bp->b_flags & B_READ ? "Read" : "Write",
- rq->bp->b_dev,
- rq->bp->b_blkno,
- rq->bp->b_bcount); /* XXX */
- vinum_conf.lastrq = (int) rq;
- vinum_conf.lastbuf = rq->bp;
- if (debug & DEBUG_LASTREQS)
- logrq(loginfo_user_bpl, rq->bp, rq->bp);
-#endif
- for (rqg = rq->rqg; rqg != NULL; rqg = rqg->next) { /* through the whole request chain */
- rqg->active = rqg->count; /* they're all active */
- rq->active++; /* one more active request group */
- for (rqno = 0; rqno < rqg->count; rqno++) {
- rqe = &rqg->rqe[rqno];
- if (rqe->flags & XFR_BAD_SUBDISK) /* this subdisk is bad, */
- rqg->active--; /* one less active request */
- else {
- if ((rqe->b.b_flags & B_READ) == 0)
- rqe->b.b_vp->v_numoutput++; /* one more output going */
- rqe->b.b_flags |= B_ORDERED; /* XXX chase SCSI driver */
-#if VINUMDEBUG
- if (debug & DEBUG_ADDRESSES)
- printf(" %s dev 0x%x, sd %d, offset 0x%x, devoffset 0x%x, length %ld\n",
- rqe->b.b_flags & B_READ ? "Read" : "Write",
- rqe->b.b_dev,
- rqe->sdno,
- (u_int) (rqe->b.b_blkno - SD[rqe->sdno].driveoffset),
- rqe->b.b_blkno,
- rqe->b.b_bcount); /* XXX */
- if (debug & DEBUG_NUMOUTPUT)
- printf(" vinumstart sd %d numoutput %ld\n",
- rqe->sdno,
- rqe->b.b_vp->v_numoutput);
- if (debug & DEBUG_LASTREQS)
- logrq(loginfo_rqe, rqe, rq->bp);
-#endif
- /* fire off the request */
- s = splbio();
- (*bdevsw[major(rqe->b.b_dev)]->d_strategy) (&rqe->b);
- splx(s);
- }
- /* XXX Do we need caching? Think about this more */
- }
- }
- return 0;
-}
-
-/* define the low-level requests needed to perform a
- * high-level I/O operation for a specific plex 'plexno'.
- *
- * Return 0 if all subdisks involved in the request are up, 1 if some
- * subdisks are not up, and -1 if the request is at least partially
- * outside the bounds of the subdisks.
- *
- * Modify the pointer *diskstart to point to the end address. On
- * read, return on the first bad subdisk, so that the caller
- * (build_read_request) can try alternatives.
- *
- * On entry to this routine, the rqg structures are not assigned. The
- * assignment is performed by expandrq(). Strictly speaking, the
- * elements rqe->sdno of all entries should be set to -1, since 0
- * (from bzero) is a valid subdisk number. We avoid this problem by
- * initializing the ones we use, and not looking at the others (index
- * >= rqg->requests).
- */
-enum requeststatus
-bre(struct request *rq,
- int plexno,
- daddr_t * diskaddr,
- daddr_t diskend)
-{
- int sdno;
- struct sd *sd;
- struct rqgroup *rqg;
- struct buf *bp; /* user's bp */
- struct plex *plex;
- enum requeststatus status; /* return value */
- daddr_t plexoffset; /* offset of transfer in plex */
- daddr_t stripebase; /* base address of stripe (1st subdisk) */
- daddr_t stripeoffset; /* offset in stripe */
- daddr_t blockoffset; /* offset in stripe on subdisk */
- struct rqelement *rqe; /* point to this request information */
- daddr_t diskstart = *diskaddr; /* remember where this transfer starts */
-
- bp = rq->bp; /* buffer pointer */
- status = REQUEST_OK; /* return value: OK until proven otherwise */
- plex = &PLEX[plexno]; /* point to the plex */
-
- switch (plex->organization) {
- case plex_concat:
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- sd = &SD[plex->sdnos[sdno]];
- if ((*diskaddr < (sd->plexoffset + sd->sectors)) /* The request starts before the end of this */
- &&(diskend > sd->plexoffset)) { /* subdisk and ends after the start of this sd */
- if (sd->state != sd_up) {
- enum requeststatus s;
-
- s = checksdstate(sd, rq, *diskaddr, diskend); /* do we need to change state? */
- if (s)
- return s; /* XXX get this right */
- }
- rqg = allocrqg(rq, 1); /* space for the request */
- if (rqg == NULL) { /* malloc failed */
- bp->b_flags |= B_ERROR;
- bp->b_error = ENOMEM;
- biodone(bp);
- return REQUEST_ENOMEM;
- }
- rqg->plexno = plexno;
-
- rqe = &rqg->rqe[0]; /* point to the element */
- rqe->rqg = rqg; /* group */
- rqe->sdno = sd->sdno; /* put in the subdisk number */
- plexoffset = max(sd->plexoffset, *diskaddr); /* start offset in plex */
- rqe->sdoffset = plexoffset - sd->plexoffset; /* start offset in subdisk */
- rqe->useroffset = plexoffset - diskstart; /* start offset in user buffer */
- rqe->dataoffset = 0;
- rqe->datalen = min(diskend - *diskaddr, /* number of sectors to transfer in this sd */
- sd->sectors - rqe->sdoffset);
- rqe->groupoffset = 0; /* no groups for concatenated plexes */
- rqe->grouplen = 0;
- rqe->buflen = rqe->datalen; /* buffer length is data buffer length */
- rqe->flags = 0;
- rqe->driveno = sd->driveno;
- *diskaddr += rqe->datalen; /* bump the address */
- if (build_rq_buffer(rqe, plex)) { /* build the buffer */
- deallocrqg(rqg);
- bp->b_flags |= B_ERROR;
- bp->b_error = ENOMEM;
- biodone(bp);
- return REQUEST_ENOMEM; /* can't do it */
- }
- }
- if (*diskaddr > diskend) /* we're finished, */
- break; /* get out of here */
- }
- break;
-
- case plex_striped:
- {
- while (*diskaddr < diskend) { /* until we get it all sorted out */
- /* The offset of the start address from
- * the start of the stripe */
- stripeoffset = *diskaddr % (plex->stripesize * plex->subdisks);
-
- /* The plex-relative address of the
- * start of the stripe */
- stripebase = *diskaddr - stripeoffset;
-
- /* The number of the subdisk in which
- * the start is located */
- sdno = stripeoffset / plex->stripesize;
-
- /* The offset from the beginning of the stripe
- * on this subdisk */
- blockoffset = stripeoffset % plex->stripesize;
-
- sd = &SD[plex->sdnos[sdno]]; /* the subdisk in question */
- if (sd->state != sd_up) {
- enum requeststatus s;
-
- s = checksdstate(sd, rq, *diskaddr, diskend); /* do we need to change state? */
- if (s) /* give up? */
- return s; /* yup */
- }
- rqg = allocrqg(rq, 1); /* space for the request */
- if (rqg == NULL) { /* malloc failed */
- bp->b_flags |= B_ERROR;
- bp->b_error = ENOMEM;
- biodone(bp);
- return REQUEST_ENOMEM;
- }
- rqg->plexno = plexno;
-
- rqe = &rqg->rqe[0]; /* point to the element */
- rqe->rqg = rqg;
- rqe->sdoffset = stripebase / plex->subdisks + blockoffset; /* start offset in this subdisk */
- rqe->useroffset = *diskaddr - diskstart; /* The offset of the start in the user buffer */
- rqe->dataoffset = 0;
- rqe->datalen = min(diskend - *diskaddr, /* the amount remaining to transfer */
- plex->stripesize - blockoffset); /* and the amount left in this stripe */
- rqe->groupoffset = 0; /* no groups for striped plexes */
- rqe->grouplen = 0;
- rqe->buflen = rqe->datalen; /* buffer length is data buffer length */
- rqe->flags = 0;
- rqe->sdno = sd->sdno; /* put in the subdisk number */
- rqe->driveno = sd->driveno;
-
- if (rqe->sdoffset >= sd->sectors) { /* starts beyond the end of the subdisk? */
- deallocrqg(rqg);
- return REQUEST_EOF;
- } else if (rqe->sdoffset + rqe->datalen > sd->sectors) /* ends beyond the end of the subdisk? */
- rqe->datalen = sd->sectors - rqe->sdoffset; /* yes, truncate */
-
- if (build_rq_buffer(rqe, plex)) { /* build the buffer */
- deallocrqg(rqg);
- bp->b_flags |= B_ERROR;
- bp->b_error = ENOMEM;
- biodone(bp);
- return REQUEST_ENOMEM; /* can't do it */
- }
- *diskaddr += rqe->datalen; /* look at the remainder */
- if (*diskaddr < diskend) { /* didn't finish the request on this stripe */
- plex->multiblock++; /* count another one */
- if (sdno == plex->subdisks - 1) /* last subdisk, */
- plex->multistripe++; /* another stripe as well */
- }
- }
- }
- break;
-
-
- default:
- printf("vinum: invalid plex type in bre");
- }
-
- return status;
-}
-
-/* Build up a request structure for reading volumes.
- * This function is not needed for plex reads, since there's
- * no recovery if a plex read can't be satisified. */
-enum requeststatus
-build_read_request(struct request *rq, /* request */
- int plexindex)
-{ /* index in the volume's plex table */
- struct buf *bp;
- daddr_t startaddr; /* offset of previous part of transfer */
- daddr_t diskaddr; /* offset of current part of transfer */
- daddr_t diskend; /* and end offset of transfer */
- int plexno; /* plex index in vinum_conf */
- struct rqgroup *rqg; /* point to the request we're working on */
- struct volume *vol; /* volume in question */
- off_t oldstart; /* note where we started */
- int recovered = 0; /* set if we recover a read */
- enum requeststatus status = REQUEST_OK;
-
- bp = rq->bp; /* buffer pointer */
- diskaddr = bp->b_blkno; /* start offset of transfer */
- diskend = diskaddr + (bp->b_bcount / DEV_BSIZE); /* and end offset of transfer */
- rqg = &rq->rqg[plexindex]; /* plex request */
- vol = &VOL[rq->volplex.volno]; /* point to volume */
-
- while (diskaddr < diskend) { /* build up request components */
- startaddr = diskaddr;
- status = bre(rq, vol->plex[plexindex], &diskaddr, diskend); /* build up a request */
- switch (status) {
- case REQUEST_OK:
- continue;
-
- case REQUEST_RECOVERED:
- recovered = 1;
- break;
-
- case REQUEST_EOF:
- case REQUEST_ENOMEM:
- return status;
-
- /* if we get here, we have either had a failure or
- * a RAID 5 recovery. We don't want to use the
- * recovery, because it's expensive, so first we
- * check if we have alternatives */
- case REQUEST_DOWN: /* can't access the plex */
- if (vol != NULL) { /* and this is volume I/O */
- /* Try to satisfy the request
- * from another plex */
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- diskaddr = startaddr; /* start at the beginning again */
- oldstart = startaddr; /* and note where that was */
- if (plexno != plexindex) { /* don't try this plex again */
- bre(rq, vol->plex[plexno], &diskaddr, diskend); /* try a request */
- if (diskaddr > oldstart) { /* we satisfied another part */
- recovered = 1; /* we recovered from the problem */
- status = REQUEST_OK; /* don't complain about it */
- break;
- }
- }
- if (plexno == (vol->plexes - 1)) /* couldn't satisfy the request */
- return REQUEST_DOWN; /* failed */
- }
- } else
- return REQUEST_DOWN; /* bad luck */
- }
- if (recovered)
- vol->recovered_reads += recovered; /* adjust our recovery count */
- }
- return status;
-}
-
-/* Build up a request structure for writes.
- * Return 0 if all subdisks involved in the request are up, 1 if some
- * subdisks are not up, and -1 if the request is at least partially
- * outside the bounds of the subdisks. */
-enum requeststatus
-build_write_request(struct request *rq)
-{ /* request */
- struct buf *bp;
- daddr_t diskstart; /* offset of current part of transfer */
- daddr_t diskend; /* and end offset of transfer */
- int plexno; /* plex index in vinum_conf */
- struct volume *vol; /* volume in question */
- enum requeststatus status;
-
- bp = rq->bp; /* buffer pointer */
- vol = &VOL[rq->volplex.volno]; /* point to volume */
- diskend = bp->b_blkno + (bp->b_bcount / DEV_BSIZE); /* end offset of transfer */
- status = REQUEST_OK;
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- diskstart = bp->b_blkno; /* start offset of transfer */
- status = max(status, bre(rq, /* build requests for the plex */
- vol->plex[plexno],
- &diskstart,
- diskend));
- }
- return status;
-}
-
-/* Fill in the struct buf part of a request element. */
-enum requeststatus
-build_rq_buffer(struct rqelement *rqe, struct plex *plex)
-{
- struct sd *sd; /* point to subdisk */
- struct volume *vol;
- struct buf *bp;
- struct buf *ubp; /* user (high level) buffer header */
-
- vol = &VOL[rqe->rqg->rq->volplex.volno];
- sd = &SD[rqe->sdno]; /* point to subdisk */
- bp = &rqe->b;
- ubp = rqe->rqg->rq->bp; /* pointer to user buffer header */
-
- /* Initialize the buf struct */
- bzero(&rqe->b, sizeof(struct buf));
- bp->b_proc = ubp->b_proc; /* process pointer */
- bp->b_flags = ubp->b_flags & (B_NOCACHE | B_READ | B_ASYNC); /* copy these flags from user bp */
- bp->b_flags |= B_CALL | B_BUSY; /* inform us when it's done */
- /* XXX Should we check for reviving plexes here, and
- * set B_ORDERED if so? */
- bp->b_iodone = complete_rqe; /* by calling us here */
- bp->b_dev = DRIVE[rqe->driveno].dev; /* drive device */
- bp->b_blkno = rqe->sdoffset + sd->driveoffset; /* start address */
- bp->b_bcount = rqe->buflen << DEV_BSHIFT; /* number of bytes to transfer */
- bp->b_resid = bp->b_bcount; /* and it's still all waiting */
- bp->b_bufsize = bp->b_bcount; /* and buffer size */
- bp->b_vp = DRIVE[rqe->driveno].vp; /* drive vnode */
- bp->b_rcred = FSCRED; /* we have the file system credentials */
- bp->b_wcred = FSCRED; /* we have the file system credentials */
-
- if (rqe->flags & XFR_MALLOCED) { /* this operation requires a malloced buffer */
- bp->b_data = Malloc(bp->b_bcount); /* get a buffer to put it in */
- if (bp->b_data == NULL) { /* failed */
- Debugger("XXX");
- abortrequest(rqe->rqg->rq, ENOMEM);
- return REQUEST_ENOMEM; /* no memory */
- }
- } else
- /* Point directly to user buffer data. This means
- * that we don't need to do anything when we have
- * finished the transfer */
- bp->b_data = ubp->b_data + rqe->useroffset * DEV_BSIZE;
- return 0;
-}
-/* Abort a request: free resources and complete the
- * user request with the specified error */
-int
-abortrequest(struct request *rq, int error)
-{
- struct buf *bp = rq->bp; /* user buffer */
-
- bp->b_flags |= B_ERROR;
- bp->b_error = error;
- freerq(rq); /* free everything we're doing */
- biodone(bp);
- return error; /* and give up */
-}
-
-/* Check that our transfer will cover the
- * complete address space of the user request.
- *
- * Return 1 if it can, otherwise 0 */
-int
-check_range_covered(struct request *rq)
-{
- /* XXX */
- return 1;
-}
-
-/* Perform I/O on a subdisk */
-void
-sdio(struct buf *bp)
-{
- int s; /* spl */
- struct sd *sd;
- struct sdbuf *sbp;
- daddr_t endoffset;
- struct drive *drive;
-
- sd = &SD[Sdno(bp->b_dev)]; /* point to the subdisk */
- drive = &DRIVE[sd->driveno];
-
- if (drive->state != drive_up) { /* XXX until we get the states fixed */
- if (bp->b_flags & B_WRITE) /* writing, */
- set_sd_state(Sdno(bp->b_dev), sd_stale, setstate_force);
- else
- set_sd_state(Sdno(bp->b_dev), sd_crashed, setstate_force);
- bp->b_flags |= B_ERROR;
- bp->b_error = EIO;
- biodone(bp);
- return;
- }
- if (sd->state < sd_empty) { /* nothing to talk to, */
- bp->b_flags |= B_ERROR;
- bp->b_flags = EIO;
- if (bp->b_flags & B_BUSY) /* XXX why isn't this always the case? */
- biodone(bp);
- return;
- }
- /* Get a buffer */
- sbp = (struct sdbuf *) Malloc(sizeof(struct sdbuf));
- if (sbp == NULL) {
- bp->b_flags |= B_ERROR;
- bp->b_error = ENOMEM;
- biodone(bp);
- return;
- }
- bcopy(bp, &sbp->b, sizeof(struct buf)); /* start with the user's buffer */
- sbp->b.b_flags |= B_CALL; /* tell us when it's done */
- sbp->b.b_iodone = sdio_done; /* here */
- sbp->b.b_dev = DRIVE[sd->driveno].dev; /* device */
- sbp->b.b_vp = DRIVE[sd->driveno].vp; /* vnode */
- sbp->b.b_blkno += sd->driveoffset;
- sbp->bp = bp; /* note the address of the original header */
- sbp->sdno = sd->sdno; /* note for statistics */
- sbp->driveno = sd->driveno;
- endoffset = bp->b_blkno + sbp->b.b_bcount / DEV_BSIZE; /* final sector offset */
- if (endoffset > sd->sectors) { /* beyond the end */
- sbp->b.b_bcount -= (endoffset - sd->sectors) * DEV_BSIZE; /* trim */
- if (sbp->b.b_bcount <= 0) { /* nothing to transfer */
- bp->b_resid = bp->b_bcount; /* nothing transferred */
- /* XXX Grrr. This doesn't seem to work. Return
- * an error after all */
- bp->b_flags |= B_ERROR;
- bp->b_error = ENOSPC;
- biodone(bp);
- Free(sbp);
- return;
- }
- }
- if ((sbp->b.b_flags & B_READ) == 0) /* write */
- sbp->b.b_vp->v_numoutput++; /* one more output going */
-#if VINUMDEBUG
- if (debug & DEBUG_ADDRESSES)
- printf(" %s dev 0x%x, sd %d, offset 0x%x, devoffset 0x%x, length %ld\n",
- sbp->b.b_flags & B_READ ? "Read" : "Write",
- sbp->b.b_dev,
- sbp->sdno,
- (u_int) (sbp->b.b_blkno - SD[sbp->sdno].driveoffset),
- (int) sbp->b.b_blkno,
- sbp->b.b_bcount); /* XXX */
- if (debug & DEBUG_NUMOUTPUT)
- printf(" vinumstart sd %d numoutput %ld\n",
- sbp->sdno,
- sbp->b.b_vp->v_numoutput);
-#endif
- s = splbio();
- (*bdevsw[major(sbp->b.b_dev)]->d_strategy) (&sbp->b);
- splx(s);
-}
-
-/* Simplified version of bounds_check_with_label
- * Determine the size of the transfer, and make sure it is
- * within the boundaries of the partition. Adjust transfer
- * if needed, and signal errors or early completion.
- *
- * Volumes are simpler than disk slices: they only contain
- * one component (though we call them a, b and c to make
- * system utilities happy), and they always take up the
- * complete space of the "partition".
- *
- * I'm still not happy with this: why should the label be
- * protected? If it weren't so damned difficult to write
- * one in the first pleace (because it's protected), it wouldn't
- * be a problem.
- */
-int
-vinum_bounds_check(struct buf *bp, struct volume *vol)
-{
- int maxsize = vol->size; /* size of the partition (sectors) */
- int size = (bp->b_bcount + DEV_BSIZE - 1) >> DEV_BSHIFT; /* size of this request (sectors) */
-
- /* Would this transfer overwrite the disk label? */
- if (bp->b_blkno <= LABELSECTOR /* starts before or at the label */
-#if LABELSECTOR != 0
- && bp->b_blkno + size > LABELSECTOR /* and finishes after */
-#endif
- && (!(vol->flags & VF_RAW)) /* and it's not raw */
- &&major(bp->b_dev) == BDEV_MAJOR /* and it's the block device */
- && (bp->b_flags & B_READ) == 0 /* and it's a write */
- && (!vol->flags & (VF_WLABEL | VF_LABELLING))) { /* and we're not allowed to write the label */
- bp->b_error = EROFS; /* read-only */
- bp->b_flags |= B_ERROR;
- return -1;
- }
- if (size == 0) /* no transfer specified, */
- return 0; /* treat as EOF */
- /* beyond partition? */
- if (bp->b_blkno < 0 /* negative start */
- || bp->b_blkno + size > maxsize) { /* or goes beyond the end of the partition */
- /* if exactly at end of disk, return an EOF */
- if (bp->b_blkno == maxsize) {
- bp->b_resid = bp->b_bcount;
- return 0;
- }
- /* or truncate if part of it fits */
- size = maxsize - bp->b_blkno;
- if (size <= 0) { /* nothing to transfer */
- bp->b_error = EINVAL;
- bp->b_flags |= B_ERROR;
- return -1;
- }
- bp->b_bcount = size << DEV_BSHIFT;
- }
- bp->b_pblkno = bp->b_blkno;
- return 1;
-}
-
-/* Allocate a request group and hook
- * it in in the list for rq */
-struct rqgroup *
-allocrqg(struct request *rq, int elements)
-{
- struct rqgroup *rqg; /* the one we're going to allocate */
- int size = sizeof(struct rqgroup) + elements * sizeof(struct rqelement);
-
- rqg = (struct rqgroup *) Malloc(size);
- if (rqg != NULL) { /* malloc OK, */
- if (rq->rqg) /* we already have requests */
- rq->lrqg->next = rqg; /* hang it off the end */
- else /* first request */
- rq->rqg = rqg; /* at the start */
- rq->lrqg = rqg; /* this one is the last in the list */
-
- bzero(rqg, size); /* no old junk */
- rqg->rq = rq; /* point back to the parent request */
- rqg->count = elements; /* number of requests in the group */
- } else
- Debugger("XXX");
- return rqg;
-}
-
-/* Deallocate a request group out of a chain. We do
- * this by linear search: the chain is short, this
- * almost never happens, and currently it can only
- * happen to the first member of the chain. */
-void
-deallocrqg(struct rqgroup *rqg)
-{
- struct rqgroup *rqgc = rqg->rq->rqg; /* point to the request chain */
-
- if (rqg->rq->rqg == rqg) /* we're first in line */
- rqg->rq->rqg = rqg->next; /* unhook ourselves */
- else {
- while (rqgc->next != rqg) /* find the group */
- rqgc = rqgc->next;
- rqgc->next = rqg->next;
- }
- Free(rqgc);
-}
-
-/* Character device interface */
-int
-vinumread(dev_t dev, struct uio *uio, int ioflag)
-{
- return (physio(vinumstrategy, NULL, dev, 1, minphys, uio));
-}
-
-int
-vinumwrite(dev_t dev, struct uio *uio, int ioflag)
-{
- return (physio(vinumstrategy, NULL, dev, 0, minphys, uio));
-}
diff --git a/sys/dev/vinum/vinumrevive.c b/sys/dev/vinum/vinumrevive.c
deleted file mode 100644
index e7cc3dd33a4d8..0000000000000
--- a/sys/dev/vinum/vinumrevive.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumrevive.c,v 1.6 1999/01/17 06:20:44 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-#include <dev/vinum/request.h>
-
-/* revive a block of a subdisk. Return an error
- * indication. EAGAIN means successful copy, but
- * that more blocks remain to be copied. EINVAL means
- * that the subdisk isn't associated with a plex (which
- * means a programming error if we get here at all;
- * FIXME)
- * XXX We should specify a block size here. At the moment,
- * just take a default value. FIXME */
-int
-revive_block(int sdno)
-{
- struct sd *sd;
- struct plex *plex;
- struct volume *vol;
- struct buf *bp;
- int error = EAGAIN;
- int size; /* size of revive block, bytes */
- int s; /* priority level */
- daddr_t plexblkno; /* lblkno in plex */
-
- plexblkno = 0; /* to keep the compiler happy */
- sd = &SD[sdno];
- if (sd->plexno < 0) /* no plex? */
- return EINVAL;
- plex = &PLEX[sd->plexno]; /* point to plex */
- if (plex->volno >= 0)
- vol = &VOL[plex->volno];
- else
- vol = NULL;
-
- if (sd->revive_blocksize == 0) {
- if (plex->stripesize != 0) /* we're striped, don't revive more than */
- sd->revive_blocksize = min(DEFAULT_REVIVE_BLOCKSIZE, /* one block at a time */
- plex->stripesize << DEV_BSHIFT);
- else
- sd->revive_blocksize = DEFAULT_REVIVE_BLOCKSIZE;
- }
- size = min(sd->revive_blocksize >> DEV_BSHIFT, sd->sectors - sd->revived) << DEV_BSHIFT;
-
- s = splbio();
-
- bp = geteblk(size); /* Get a buffer */
- if (bp == NULL) {
- splx(s);
- return ENOMEM;
- }
- if (bp->b_qindex != 0) /* on a queue, */
- bremfree(bp); /* remove it XXX how can this happen? */
- splx(s);
-
- /* Amount to transfer: block size, unless it
- * would overlap the end */
- bp->b_bufsize = size;
- bp->b_bcount = bp->b_bufsize;
- bp->b_resid = 0;
-
- /* Now decide where to read from */
-
- switch (plex->organization) {
- daddr_t stripeoffset; /* offset in stripe */
-
- case plex_concat:
- plexblkno = sd->revived + sd->plexoffset; /* corresponding address in plex */
- break;
-
- case plex_striped:
- stripeoffset = sd->revived % plex->stripesize; /* offset from beginning of stripe */
- plexblkno = sd->plexoffset /* base */
- + (sd->revived - stripeoffset) * plex->subdisks /* offset to beginning of stripe */
- + sd->revived % plex->stripesize; /* offset from beginning of stripe */
- break;
-
- case plex_raid5:
- case plex_disorg: /* to keep the compiler happy */
- }
-
- {
- bp->b_blkno = plexblkno; /* start here */
- if (vol != NULL) /* it's part of a volume, */
- /* First, read the data from the volume. We don't
- * care which plex, that's bre's job */
- bp->b_dev = VINUMBDEV(plex->volno, 0, 0, VINUM_VOLUME_TYPE); /* create the device number */
- else /* it's an unattached plex */
- bp->b_dev = VINUMRBDEV(sd->plexno, VINUM_RAWPLEX_TYPE); /* create the device number */
-
- bp->b_flags = B_BUSY | B_READ; /* either way, read it */
- vinumstart(bp, 1);
- biowait(bp);
- }
- if (bp->b_flags & B_ERROR)
- error = bp->b_error;
- else
- /* Now write to the subdisk */
- {
- s = splbio();
- if (bp->b_qindex != 0) /* on a queue, */
- bremfree(bp); /* remove it */
- splx(s);
-
- bp->b_dev = VINUMRBDEV(sdno, VINUM_RAWSD_TYPE); /* create the device number */
- bp->b_flags = B_BUSY | B_ORDERED; /* and make this an ordered write */
- bp->b_resid = 0x0;
- bp->b_blkno = sd->revived; /* write it to here */
- sdio(bp); /* perform the I/O */
- biowait(bp);
- if (bp->b_flags & B_ERROR)
- error = bp->b_error;
- else {
- sd->revived += bp->b_bcount >> DEV_BSHIFT; /* moved this much further down */
- if (sd->revived >= sd->sectors) { /* finished */
- sd->revived = 0;
- set_sd_state(sdno, sd_up, setstate_force); /* bring the sd up */
- printf("vinum: %s is %s\n", sd->name, sd_state(sd->state));
- save_config(); /* and save the updated configuration */
- error = 0; /* we're done */
- }
- }
- while (sd->waitlist) { /* we have waiting requests */
-#if VINUMDEBUG
- struct request *rq = sd->waitlist;
-
- if (debug & DEBUG_REVIVECONFLICT)
- printf("Relaunch revive conflict sd %d: %x\n%s dev 0x%x, offset 0x%x, length %ld\n",
- rq->sdno,
- (u_int) rq,
- rq->bp->b_flags & B_READ ? "Read" : "Write",
- rq->bp->b_dev,
- rq->bp->b_blkno,
- rq->bp->b_bcount);
-#endif
- launch_requests(sd->waitlist, 1); /* do them now */
- sd->waitlist = sd->waitlist->next; /* and move on to the next */
- }
- }
- if (bp->b_qindex == 0) /* not on a queue, */
- brelse(bp); /* is this kosher? */
- return error;
-}
diff --git a/sys/dev/vinum/vinumstate.c b/sys/dev/vinum/vinumstate.c
deleted file mode 100644
index 8d44fecfcdf2d..0000000000000
--- a/sys/dev/vinum/vinumstate.c
+++ /dev/null
@@ -1,843 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumstate.c,v 2.10 1999/01/17 06:19:23 grog Exp grog $
- */
-
-#define REALLYKERNEL
-#include "opt_vinum.h"
-#include <dev/vinum/vinumhdr.h>
-#include <dev/vinum/request.h>
-
-/* Update drive state */
-/* Return 1 if the state changes, otherwise 0 */
-int
-set_drive_state(int driveno, enum drivestate newstate, enum setstateflags flags)
-{
- struct drive *drive = &DRIVE[driveno];
- int oldstate = drive->state;
- int sdno;
-
- if (drive->state == drive_unallocated) /* no drive to do anything with, */
- return 0;
-
- if (newstate != oldstate) { /* don't change it if it's not different */
- if ((newstate == drive_down) /* the drive's going down */
- &&(!(flags & setstate_force))
- && (drive->opencount != 0)) /* we can't do it */
- return 0; /* don't do it */
- drive->state = newstate; /* set the state */
- if (drive->label.name[0] != '\0') /* we have a name, */
- printf("vinum: drive %s is %s\n", drive->label.name, drive_state(drive->state));
- if ((drive->state == drive_up)
- && (drive->vp == NULL)) /* should be open, but we're not */
- init_drive(drive, 1); /* which changes the state again */
- if (newstate != oldstate) { /* state has changed */
- for (sdno = 0; sdno < vinum_conf.subdisks_used; sdno++) { /* find this drive's subdisks */
- if (SD[sdno].driveno == driveno) /* belongs to this drive */
- update_sd_state(sdno); /* update the state */
- }
- }
- if ((flags & setstate_configuring) == 0) /* configuring? */
- save_config(); /* no: save the updated configuration now */
- return 1;
- }
- return 0;
-}
-
-/* Try to set the subdisk state. Return 1 if state changed to
- * what we wanted, -1 if it changed to something else, and 0
- * if no change.
- *
- * This routine is called both from the user (up, down states
- * only) and internally.
- */
-int
-set_sd_state(int sdno, enum sdstate newstate, enum setstateflags flags)
-{
- struct sd *sd = &SD[sdno];
- struct plex *plex;
- struct volume *vol;
- int oldstate = sd->state;
- int status = 1; /* status to return */
-
- if ((newstate == oldstate)
- || (sd->state == sd_unallocated)) /* no subdisk to do anything with, */
- return 0;
-
- if (sd->driveoffset < 0) { /* not allocated space */
- sd->state = sd_down;
- if (newstate != sd_down) {
- if (sd->plexno >= 0)
- sdstatemap(&PLEX[sd->plexno]); /* count up subdisks */
- return -1;
- }
- } else { /* space allocated */
- switch (newstate) {
- case sd_down:
- if ((!flags & setstate_force) /* but gently */
- &&(sd->plexno >= 0)) /* and we're attached to a plex, */
- return 0; /* don't do it */
- break;
-
- case sd_up:
- if (DRIVE[sd->driveno].state != drive_up) /* can't bring the sd up if the drive isn't, */
- return 0; /* not even by force */
- switch (sd->state) {
- case sd_crashed:
- case sd_down: /* been down, no data lost */
- if ((sd->plexno >= 0) /* we're associated with a plex */
- &&(((PLEX[sd->plexno].state < plex_firstup) /* and it's not up */
- ||(PLEX[sd->plexno].subdisks > 1)))) /* or it's the only one */
- break; /* do it */
- /* XXX Get this right: make sure that other plexes in
- * the volume cover this address space, otherwise
- * we make this one sd_up.
- *
- * Do we even want this any more?
- */
- sd->state = sd_reborn; /* here it is again */
- printf("vinum: subdisk %s is %s, not %s\n", sd->name, sd_state(sd->state), sd_state(newstate));
- status = -1;
- break;
-
- case sd_init: /* brand new */
- if (flags & setstate_configuring) /* we're doing this while configuring */
- break;
- /* otherwise it's like being empty */
- /* FALLTHROUGH */
-
- case sd_empty:
- if ((sd->plexno >= 0) /* we're associated with a plex */
- &&(((PLEX[sd->plexno].state < plex_firstup) /* and it's not up */
- ||(PLEX[sd->plexno].subdisks > 1)))) /* or it's the only one */
- break;
- /* Otherwise it's just out of date */
- /* FALLTHROUGH */
-
- case sd_stale: /* out of date info, need reviving */
- case sd_obsolete:
- /* 1. If the subdisk is not part of a plex, bring it up, don't revive.
-
- * 2. If the subdisk is part of a one-plex volume or an unattached plex,
- * and it's not RAID-5, we *can't revive*. The subdisk doesn't
- * change its state.
- *
- * 3. If the subdisk is part of a one-plex volume or an unattached plex,
- * and it's RAID-5, but more than one subdisk is down, we *still
- * can't revive*. The subdisk doesn't change its state.
- *
- * 4. If the subdisk is part of a multi-plex volume, we'll change to
- * reviving and let the revive routines find out whether it will work
- * or not. If they don't, the revive stops with an error message,
- * but the state doesn't change (FWIW).*/
- if (sd->plexno < 0) /* no plex associated, */
- break; /* bring it up */
- plex = &PLEX[sd->plexno];
- if (plex->volno >= 0) /* have a volume */
- vol = &VOL[plex->volno];
- else
- vol = NULL;
- if (((vol == NULL) /* no volume */ ||(vol->plexes == 1)) /* or only one plex in volume */
- &&((plex->organization != plex_raid5) /* or it's a RAID-5 plex */
- ||(plex->sddowncount > 1))) /* with more than one subdisk down, */
- return 0; /* can't do it */
- sd->state = sd_reviving; /* put in reviving state */
- sd->revived = 0; /* nothing done yet */
- status = EAGAIN; /* need to repeat */
- break;
-
- /* XXX This is silly. We need to be able to
- * bring the subdisk up when it's finished
- * initializing, but not from the user. We
- * use the same ioctl in each case, but Vinum(8)
- * doesn't supply the -f flag, so we use that
- * to decide whether to do it or not */
- case sd_initializing:
- if (flags & setstate_force)
- break; /* do it if we have to */
- return 0; /* no */
-
- case sd_reviving:
- if (flags & setstate_force) /* insist, */
- break;
- return EAGAIN; /* no, try again */
-
- default: /* can't do it */
- /* There's no way to bring subdisks up directly from
- * other states. First they need to be initialized
- * or revived */
- return 0;
- }
- break;
-
- default: /* other ones, only internal with force */
- if (flags & setstate_force == 0) /* no force? What's this? */
- return 0; /* don't do it */
- }
- }
- if (status == 1) { /* we can do it, */
- sd->state = newstate;
- printf("vinum: %s is %s\n", sd->name, sd_state(sd->state));
- } else /* we don't get here with status 0 */
- printf("vinum: %s is %s, not %s\n", sd->name, sd_state(sd->state), sd_state(newstate));
- if (sd->plexno >= 0) /* we belong to a plex */
- update_plex_state(sd->plexno); /* update plex state */
- if ((flags & setstate_configuring) == 0) /* save config now */
- save_config();
- return status;
-}
-
-/* Set the state of a plex dependent on its subdisks.
- * This time round, we'll let plex state just reflect
- * aggregate subdisk state, so this becomes an order of
- * magnitude less complicated. In particular, ignore
- * the requested state.
- */
-int
-set_plex_state(int plexno, enum plexstate state, enum setstateflags flags)
-{
- struct plex *plex; /* point to our plex */
- enum plexstate oldstate;
- enum volplexstate vps; /* how do we compare with the other plexes? */
-
- plex = &PLEX[plexno]; /* point to our plex */
- oldstate = plex->state;
-
- if ((plex->state == plex_unallocated) /* or no plex to do anything with, */
- ||((state == oldstate) /* or we're already there */
- &&(state != plex_up))) /* and it's not up */
- return 0;
-
- vps = vpstate(plex); /* how do we compare with the other plexes? */
-
- switch (state) {
- /* We can't bring the plex up, even by force,
- * unless it's ready. update_plex_state
- * checks that */
- case plex_up: /* bring the plex up */
- update_plex_state(plex->plexno); /* it'll come up if it can */
- break;
-
- case plex_down: /* want to take it down */
- if (((vps == volplex_onlyus) /* we're the only one up */
- ||(vps == volplex_onlyusup)) /* we're the only one up */
- &&(!(flags & setstate_force))) /* and we don't want to use force */
- return 0; /* can't do it */
- plex->state = state; /* do it */
- invalidate_subdisks(plex, sd_down); /* and down all up subdisks */
- break;
-
- /* This is only requested internally.
- * Trust ourselves */
- case plex_faulty:
- plex->state = state; /* do it */
- invalidate_subdisks(plex, sd_crashed); /* and crash all up subdisks */
- break;
-
- case plex_initializing:
- /* XXX consider what safeguards we need here */
- if ((flags & setstate_force) == 0)
- return 0;
- plex->state = state; /* do it */
- break;
-
- /* What's this? */
- default:
- return 0;
- }
- if (plex->state != oldstate) /* we've changed, */
- printf("vinum: %s is %s\n", plex->name, plex_state(plex->state)); /* tell them about it */
- /* Now see what we have left, and whether
- * we're taking the volume down */
- if (plex->volno >= 0) /* we have a volume */
- update_volume_state(plex->volno); /* update its state */
- if ((flags & setstate_configuring) == 0) /* save config now */
- save_config(); /* yes: save the updated configuration */
- return 1;
-}
-
-/* Update the state of a plex dependent on its plexes. */
-int
-set_volume_state(int volno, enum volumestate state, enum setstateflags flags)
-{
- struct volume *vol = &VOL[volno]; /* point to our volume */
-
- if ((vol->state == state) /* we're there already */
- ||(vol->state == volume_unallocated)) /* or no volume to do anything with, */
- return 0;
-
- if (state == volume_up) /* want to come up */
- update_volume_state(volno);
- else if (state == volume_down) { /* want to go down */
- if ((vol->opencount == 0) /* not open */
- ||((flags & setstate_force) != 0)) { /* or we're forcing */
- vol->state = volume_down;
- printf("vinum: volume %s is %s\n", vol->name, volume_state(vol->state));
- if ((flags & setstate_configuring) == 0) /* save config now */
- save_config(); /* yes: save the updated configuration */
- return 1;
- }
- }
- return 0; /* no change */
-}
-
-/* Set the state of a subdisk based on its environment */
-void
-update_sd_state(int sdno)
-{
- struct sd *sd;
- struct drive *drive;
- enum sdstate oldstate;
-
- sd = &SD[sdno];
- oldstate = sd->state;
- drive = &DRIVE[sd->driveno];
-
- if (drive->state == drive_up) {
- switch (sd->state) {
- case sd_down:
- case sd_crashed:
- sd->state = sd_reborn; /* back up again with no loss */
- break;
-
- default:
- break;
- }
- } else { /* down or worse */
- switch (sd->state) {
- case sd_up:
- case sd_reborn:
- case sd_reviving:
- sd->state = sd_crashed; /* lost our drive */
- break;
-
- default:
- break;
- }
- }
- if (sd->state != oldstate) /* state has changed, */
- printf("vinum: %s is %s\n", sd->name, sd_state(sd->state)); /* say so */
- if (sd->plexno >= 0) /* we're part of a plex, */
- update_plex_state(sd->plexno); /* update its state */
-}
-
-/* Set the state of a plex based on its environment */
-void
-update_plex_state(int plexno)
-{
- struct plex *plex; /* point to our plex */
- enum plexstate oldstate;
- enum volplexstate vps; /* how do we compare with the other plexes? */
- enum sdstates statemap; /* get a map of the subdisk states */
-
- plex = &PLEX[plexno]; /* point to our plex */
- oldstate = plex->state;
-
- vps = vpstate(plex); /* how do we compare with the other plexes? */
- statemap = sdstatemap(plex); /* get a map of the subdisk states */
-
- if (statemap == sd_upstate) /* all subdisks ready for action */
- /* All the subdisks are up. This also means that
- * they are consistent, so we can just bring
- * the plex up */
- plex->state = plex_up; /* go for it */
- else if (statemap == sd_emptystate) { /* nothing done yet */
- if (((vps & (volplex_otherup | volplex_onlyus)) == 0) /* nothing is up */ &&(plex->state == plex_init) /* we're brand spanking new */
- &&(plex->volno >= 0) /* and we have a volume */
- &&(VOL[plex->volno].flags & VF_CONFIG_SETUPSTATE)) { /* and we consider that up */
- /* Conceptually, an empty plex does not contain valid data,
- * but normally we'll see this state when we have just
- * created a plex, and it's either consistent from earlier,
- * or we don't care about the previous contents (we're going
- * to create a file system or use it for swap).
- *
- * We need to do this in one swell foop: on the next call
- * we will no longer be just empty.
- *
- * This code assumes that all the other plexes are also
- * capable of coming up (i.e. all the sds are up), but
- * that's OK: we'll come back to this function for the remaining
- * plexes in the volume. */
- struct volume *vol = &VOL[plex->volno];
- int plexno;
-
- for (plexno = 0; plexno < vol->plexes; plexno++)
- PLEX[vol->plex[plexno]].state = plex_up;
- } else if (vps & volplex_otherup == 0) { /* no other plexes up */
- int sdno;
-
- plex->state = plex_up; /* we can call that up */
- for (sdno = 0; sdno < plex->subdisks; sdno++) { /* change the subdisks to up state */
- SD[plex->sdnos[sdno]].state = sd_up;
- printf("vinum: %s is up\n", SD[plex->sdnos[sdno]].name); /* tell them about it */
- }
- } else
- plex->state = plex_faulty; /* no, it's down */
- } else if (statemap & (sd_upstate | sd_rebornstate) == statemap) /* all up or reborn */
- plex->state = plex_flaky;
- else if (statemap & (sd_upstate | sd_rebornstate)) /* some up or reborn */
- plex->state = plex_corrupt; /* corrupt */
- else if (statemap & sd_initstate) /* some subdisks initializing */
- plex->state = plex_initializing;
- else /* nothing at all up */
- plex->state = plex_faulty;
-
- if (plex->state != oldstate) /* state has changed, */
- printf("vinum: %s is %s\n", plex->name, plex_state(plex->state)); /* tell them about it */
- if (plex->volno >= 0) /* we're part of a volume, */
- update_volume_state(plex->volno); /* update its state */
-}
-
-/* Set volume state based on its components */
-void
-update_volume_state(int volno)
-{
- struct volume *vol; /* our volume */
- int plexno;
- enum volumestate oldstate;
-
- vol = &VOL[volno]; /* point to our volume */
- oldstate = vol->state;
-
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- struct plex *plex = &PLEX[vol->plex[plexno]]; /* point to the plex */
- if (plex->state >= plex_corrupt) { /* something accessible, */
- vol->state = volume_up;
- break;
- }
- }
- if (plexno == vol->plexes) /* didn't find an up plex */
- vol->state = volume_down;
-
- if (vol->state != oldstate) { /* state changed */
- printf("vinum: %s is %s\n", vol->name, volume_state(vol->state));
- save_config(); /* save the updated configuration */
- }
-}
-
-/* Called from request routines when they find
- * a subdisk which is not kosher. Decide whether
- * it warrants changing the state. Return
- * REQUEST_DOWN if we can't use the subdisk,
- * REQUEST_OK if we can. */
-/* A prior version of this function checked the plex
- * state as well. At the moment, consider plex states
- * information for the user only. We'll ignore them
- * and use the subdisk state only. The last version of
- * this file with the old logic was 2.7. XXX */
-enum requeststatus
-checksdstate(struct sd *sd, struct request *rq, daddr_t diskaddr, daddr_t diskend)
-{
- struct plex *plex = &PLEX[sd->plexno];
- int writeop = (rq->bp->b_flags & B_READ) == 0; /* note if we're writing */
-
- switch (sd->state) {
- /* We shouldn't get called if the subdisk is up */
- case sd_up:
- return REQUEST_OK;
-
- case sd_reviving:
- /* Access to a reviving subdisk depends on the
- * organization of the plex:
-
- * - If it's concatenated, access the subdisk up to its current
- * revive point. If we want to write to the subdisk overlapping the
- * current revive block, set the conflict flag in the request, asking
- * the caller to put the request on the wait list, which will be
- * attended to by revive_block when it's done.
- * - if it's striped, we can't do it (we could do some hairy
- * calculations, but it's unlikely to work).
- * - if it's RAID-5, we can do it as long as only one
- * subdisk is down */
- if (plex->state == plex_striped) /* plex is striped, */
- return REQUEST_DOWN; /* can't access it now */
- if (diskaddr > (sd->revived
- + sd->plexoffset
- + (sd->revive_blocksize >> DEV_BSHIFT))) /* we're beyond the end */
- return REQUEST_DOWN; /* don't take the sd down again... */
- else if (diskend > (sd->revived + sd->plexoffset)) { /* we finish beyond the end */
- if (writeop) {
- rq->flags |= XFR_REVIVECONFLICT; /* note a potential conflict */
- rq->sdno = sd->sdno; /* and which sd last caused it */
- } else
- return REQUEST_DOWN; /* can't read this yet */
- }
- return REQUEST_OK;
-
- case sd_reborn:
- if (writeop)
- return REQUEST_OK; /* always write to a reborn disk */
- else /* don't allow a read */
- /* Handle the mapping. We don't want to reject
- * a read request to a reborn subdisk if that's
- * all we have. XXX */
- return REQUEST_DOWN;
-
- case sd_down:
- if (writeop) /* writing to a consistent down disk */
- set_sd_state(sd->sdno, sd_obsolete, setstate_force); /* it's not consistent now */
- return REQUEST_DOWN; /* and it's down one way or another */
-
- case sd_crashed:
- if (writeop) /* writing to a consistent down disk */
- set_sd_state(sd->sdno, sd_stale, setstate_force); /* it's not consistent now */
- return REQUEST_DOWN; /* and it's down one way or another */
-
- default:
- return REQUEST_DOWN;
- }
-}
-
-/* return a state map for the subdisks of a plex */
-enum sdstates
-sdstatemap(struct plex *plex)
-{
- int sdno;
- enum sdstates statemap = 0; /* note the states we find */
-
- plex->sddowncount = 0; /* no subdisks down yet */
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- struct sd *sd = &SD[plex->sdnos[sdno]]; /* point to the subdisk */
-
- switch (sd->state) {
- case sd_empty:
- statemap |= sd_emptystate;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_init:
- statemap |= sd_initstate;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_down:
- statemap |= sd_downstate;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_crashed:
- statemap |= sd_crashedstate;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_obsolete:
- statemap |= sd_obsolete;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_stale:
- statemap |= sd_stalestate;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_reborn:
- statemap |= sd_rebornstate;
- break;
-
- case sd_up:
- statemap |= sd_upstate;
- break;
-
- case sd_initializing:
- statemap |= sd_initstate;
- (plex->sddowncount)++; /* another unusable subdisk */
- break;
-
- case sd_unallocated:
- case sd_uninit:
- case sd_reviving:
- statemap |= sd_otherstate;
- (plex->sddowncount)++; /* another unusable subdisk */
- }
- }
- return statemap;
-}
-
-/* determine the state of the volume relative to this plex */
-enum volplexstate
-vpstate(struct plex *plex)
-{
- struct volume *vol;
- enum volplexstate state = volplex_onlyusdown; /* state to return */
- int plexno;
-
- if (plex->volno < 0) /* not associated with a volume */
- return volplex_onlyusdown; /* assume the worst */
-
- vol = &VOL[plex->volno]; /* point to our volume */
- for (plexno = 0; plexno < vol->plexes; plexno++) {
- if (&PLEX[vol->plex[plexno]] == plex) { /* us */
-#if RAID5
- if (PLEX[vol->plex[plexno]].state >= plex_degraded) /* are we up? */
- state |= volplex_onlyus; /* yes */
-#else
- if (PLEX[vol->plex[plexno]].state >= plex_flaky) /* are we up? */
- state |= volplex_onlyus; /* yes */
-#endif
- } else {
-#if RAID5
- if (PLEX[vol->plex[plexno]].state >= plex_degraded) /* not us */
- state |= volplex_otherup; /* and when they were up, they were up */
- else
- state |= volplex_alldown; /* and when they were down, they were down */
-#else
- if (PLEX[vol->plex[plexno]].state >= plex_flaky) /* not us */
- state |= volplex_otherup; /* and when they were up, they were up */
- else
- state |= volplex_alldown; /* and when they were down, they were down */
-#endif
- }
- }
- return state; /* and when they were only halfway up */
-} /* they were neither up nor down */
-
-/* Check if all bits b are set in a */
-int allset(int a, int b);
-
-int
-allset(int a, int b)
-{
- return (a & b) == b;
-}
-
-/* Invalidate the subdisks belonging to a plex */
-void
-invalidate_subdisks(struct plex *plex, enum sdstate state)
-{
- int sdno;
-
- for (sdno = 0; sdno < plex->subdisks; sdno++) { /* for each subdisk */
- struct sd *sd = &SD[plex->sdnos[sdno]];
-
- switch (sd->state) {
- case sd_unallocated:
- case sd_uninit:
- case sd_init:
- case sd_initializing:
- case sd_empty:
- case sd_obsolete:
- case sd_stale:
- case sd_crashed:
- case sd_down:
- break;
-
- case sd_reviving:
- case sd_reborn:
- case sd_up:
- set_sd_state(plex->sdnos[sdno], state, setstate_force);
- }
- }
-}
-
-/* Start an object, in other words do what we can to get it up.
- * This is called from vinumioctl (VINUMSTART).
- * Return error indications via ioctl_reply
- */
-void
-start_object(struct vinum_ioctl_msg *data)
-{
- int status;
- int objindex = data->index; /* data gets overwritten */
- struct _ioctl_reply *ioctl_reply = (struct _ioctl_reply *) data; /* format for returning replies */
- enum setstateflags flags;
-
- if (data->force != 0) /* are we going to use force? */
- flags = setstate_force; /* yes */
- else
- flags = setstate_none; /* no */
-
- switch (data->type) {
- case drive_object:
- status = set_drive_state(objindex, drive_up, flags);
- if (DRIVE[objindex].state != drive_up) /* set status on whether we really did it */
- ioctl_reply->error = EINVAL;
- else
- ioctl_reply->error = 0;
- break;
-
- case sd_object:
- if (SD[objindex].state == sd_reviving) { /* reviving, */
- ioctl_reply->error = revive_block(objindex); /* revive another block */
- ioctl_reply->msg[0] = '\0'; /* no comment */
- return;
- }
- status = set_sd_state(objindex, sd_up, flags); /* set state */
- if (status == EAGAIN) { /* first revive, */
- ioctl_reply->error = revive_block(objindex); /* revive the first block */
- ioctl_reply->error = EAGAIN;
- } else {
- if (SD[objindex].state != sd_up) /* set status on whether we really did it */
- ioctl_reply->error = EINVAL;
- else
- ioctl_reply->error = 0;
- }
- break;
-
- case plex_object:
- status = set_plex_state(objindex, plex_up, flags);
- if (PLEX[objindex].state != plex_up) /* set status on whether we really did it */
- ioctl_reply->error = EINVAL;
- else
- ioctl_reply->error = 0;
- break;
-
- case volume_object:
- status = set_volume_state(objindex, volume_up, flags);
- if (VOL[objindex].state != volume_up) /* set status on whether we really did it */
- ioctl_reply->error = EINVAL;
- else
- ioctl_reply->error = 0;
- break;
-
- default:
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "Invalid object type");
- return;
- }
- /* There's no point in saying anything here:
- * the userland program does it better */
- ioctl_reply->msg[0] = '\0';
-}
-
-/* Stop an object, in other words do what we can to get it down
- * This is called from vinumioctl (VINUMSTOP).
- * Return error indications via ioctl_reply.
- */
-void
-stop_object(struct vinum_ioctl_msg *data)
-{
- int status = 1;
- int objindex = data->index; /* save the number from change */
- struct _ioctl_reply *ioctl_reply = (struct _ioctl_reply *) data; /* format for returning replies */
-
- switch (data->type) {
- case drive_object:
- status = set_drive_state(objindex, drive_down, data->force);
- break;
-
- case sd_object:
- status = set_sd_state(objindex, sd_down, data->force);
- break;
-
- case plex_object:
- status = set_plex_state(objindex, plex_down, data->force);
- break;
-
- case volume_object:
- status = set_volume_state(objindex, volume_down, data->force);
- break;
-
- default:
- ioctl_reply->error = EINVAL;
- strcpy(ioctl_reply->msg, "Invalid object type");
- return;
- }
- ioctl_reply->msg[0] = '\0';
- if (status == 0) /* couldn't do it */
- ioctl_reply->error = EINVAL;
- else
- ioctl_reply->error = 0;
-}
-
-/* VINUM_SETSTATE ioctl: set an object state
- * msg is the message passed by the user */
-void
-setstate(struct vinum_ioctl_msg *msg)
-{
- int sdno;
- struct sd *sd;
- struct plex *plex;
- struct _ioctl_reply *ioctl_reply = (struct _ioctl_reply *) msg; /* format for returning replies */
-
- switch (msg->state) {
- case object_down:
- stop_object(msg);
- break;
-
- case object_initializing:
- switch (msg->type) {
- case sd_object:
- sd = &SD[msg->index];
- if ((msg->index >= vinum_conf.subdisks_used)
- || (sd->state == sd_unallocated)) {
- sprintf(ioctl_reply->msg, "Invalid subdisk %d", msg->index);
- ioctl_reply->error = EFAULT;
- return;
- }
- set_sd_state(msg->index, sd_initializing, msg->force);
- if (sd->state != sd_initializing) {
- strcpy(ioctl_reply->msg, "Can't set state");
- ioctl_reply->error = EINVAL;
- } else
- ioctl_reply->error = 0;
- break;
-
- case plex_object:
- plex = &PLEX[msg->index];
- if ((msg->index >= vinum_conf.plexes_used)
- || (plex->state == plex_unallocated)) {
- sprintf(ioctl_reply->msg, "Invalid subdisk %d", msg->index);
- ioctl_reply->error = EFAULT;
- return;
- }
- set_plex_state(msg->index, plex_initializing, msg->force);
- if (plex->state != plex_initializing) {
- strcpy(ioctl_reply->msg, "Can't set state");
- ioctl_reply->error = EINVAL;
- } else {
- ioctl_reply->error = 0;
- for (sdno = 0; sdno < plex->subdisks; sdno++) {
- sd = &SD[plex->sdnos[sdno]];
- set_sd_state(plex->sdnos[sdno], sd_initializing, msg->force);
- if (sd->state != sd_initializing) {
- strcpy(ioctl_reply->msg, "Can't set state");
- ioctl_reply->error = EINVAL;
- break;
- }
- }
- }
- break;
-
- default:
- strcpy(ioctl_reply->msg, "Invalid object");
- ioctl_reply->error = EINVAL;
- }
- break;
-
- case object_up:
- start_object(msg);
- }
-}
diff --git a/sys/dev/vinum/vinumstate.h b/sys/dev/vinum/vinumstate.h
deleted file mode 100644
index 267626949069d..0000000000000
--- a/sys/dev/vinum/vinumstate.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumstate.h,v 1.12 1998/12/30 01:31:52 grog Exp grog $
- */
-
-/* This file gets read by makestatetext to create text files
- * with the names of the states, so don't change the file
- * format */
-
-enum volumestate {
- volume_unallocated,
- /* present but unused. Must be 0 */
-
- volume_uninit,
- /* mentioned elsewhere but not defined */
-
- volume_down,
-
- /* The volume is up and functional, but not all plexes may be available */
- volume_up,
- volume_laststate = volume_up /* last value, for table dimensions */
-};
-
-enum plexstate {
- /* An empty entry, not a plex at all. */
- plex_unallocated,
-
- /* The plex has been allocated, but there configuration
- * is not complete */
- plex_init,
-
- /* A plex which has gone completely down because of
- * I/O errors. */
- plex_faulty,
-
- /* A plex which has been taken down by the
- * administrator. */
- plex_down,
-
- /* A plex which is being initialized */
- plex_initializing,
-
- /* *** The remaining states represent plexes which are
- * at least partially up. Keep these separate so that
- * they can be checked more easily. */
-
- /* A plex entry which is at least partially up. Not
- * all subdisks are available, and an inconsistency
- * has occurred. If no other plex is uncorrupted,
- * the volume is no longer consistent. */
- plex_corrupt,
-
- plex_firstup = plex_corrupt, /* first "up" state */
-
- /* A RAID-5 plex entry which is accessible, but one
- * subdisk is down, requiring recovery for many
- * I/O requests. */
- plex_degraded,
-
- /* A plex which is really up, but which has a reborn
- * subdisk which we don't completely trust, and
- * which we don't want to read if we can avoid it */
- plex_flaky,
-
- /* A plex entry which is completely up. All subdisks
- * are up. */
- plex_up,
-
- plex_laststate = plex_up /* last value, for table dimensions */
-};
-
-/* subdisk states */
-enum sdstate {
- /* An empty entry, not a subdisk at all. */
- sd_unallocated,
-
- /* A subdisk entry which has not been created
- * completely. Some fields may be empty.
- */
- sd_uninit,
-
- /* A subdisk entry which has been created completely.
- * All fields are correct, but the disk hasn't
- * been updated.
- */
- sd_init,
-
- /* A subdisk entry which has been created completely.
- * All fields are correct, and the disk has been
- * updated, but there is no data on the disk.
- */
- sd_empty,
-
- /* A subdisk entry which has been created completely and
- * which is currently being initialized */
- sd_initializing,
-
- /* *** The following states represent invalid data */
- /* A subdisk entry which has been created completely.
- * All fields are correct, the config on disk has been
- * updated, and the data was valid, but since then the
- * drive has been taken down, and as a result updates
- * have been missed.
- */
- sd_obsolete,
-
- /* A subdisk entry which has been created completely.
- * All fields are correct, the disk has been updated,
- * and the data was valid, but since then the drive
- * has been crashed and updates have been lost.
- */
- sd_stale,
-
- /* *** The following states represent valid, inaccessible data */
-
- /* A subdisk entry which has been created completely.
- * All fields are correct, the disk has been updated,
- * and the data was valid, but since then the drive
- * has gone down. No attempt has been made to write
- * to the subdisk since the crash, so the data is valid.
- */
- sd_crashed,
-
- /* A subdisk entry which was up, which contained
- * valid data, and which was taken down by the
- * administrator. The data is valid. */
- sd_down,
-
- /* *** This is invalid data (the subdisk previously had
- * a numerically lower state), but it is currently in the
- * process of being revived. We can write but not read. */
- sd_reviving,
-
- /* *** The following states represent accessible subdisks
- * with valid data */
-
- /* A subdisk entry which has been created completely.
- * All fields are correct, the disk has been updated,
- * and the data was valid, but since then the drive
- * has gone down and up again. No updates were lost,
- * but it is possible that the subdisk has been
- * damaged. We won't read from this subdisk if we
- * have a choice. If this is the only subdisk which
- * covers this address space in the plex, we set its
- * state to sd_up under these circumstances, so this
- * status implies that there is another subdisk to
- * fulfil the request. */
- sd_reborn,
-
- /* A subdisk entry which has been created completely.
- * All fields are correct, the disk has been updated,
- * and the data is valid.
- */
- sd_up,
-
- sd_laststate = sd_up /* last value, for table dimensions */
-};
-
-enum drivestate {
- drive_unallocated,
- /* present but unused. Must be 0 */
-
- drive_uninit,
- /* just mentioned in some other config entry */
-
- drive_down,
- /* not accessible */
-
- drive_up,
- /* up and running */
-
- drive_laststate = drive_up /* last value, for table dimensions */
-};
diff --git a/sys/dev/vinum/vinumutil.c b/sys/dev/vinum/vinumutil.c
deleted file mode 100644
index 22d8be8431dd2..0000000000000
--- a/sys/dev/vinum/vinumutil.c
+++ /dev/null
@@ -1,280 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumutil.c,v 1.10 1999/01/02 00:39:04 grog Exp grog $
- */
-
-/* This file contains utility routines used both in kernel and user context */
-
-#ifdef KERNEL
-#include "opt_vinum.h"
-#endif
-#include <dev/vinum/vinumhdr.h>
-#include <dev/vinum/statetexts.h>
-#ifndef REALLYKERNEL
-#include <stdio.h>
-extern jmp_buf command_fail; /* return on a failed command */
-#endif
-
-static char numeric_state[32]; /* temporary buffer for ASCII conversions */
-#define STATECOUNT(x) (sizeof (x##statetext) / sizeof (char *))
-/* Return drive state as a string */
-char *
-drive_state(enum drivestate state)
-{
- if (((unsigned) state) >= STATECOUNT(drive)) {
- sprintf(numeric_state, "Invalid state %d", (int) state);
- return numeric_state;
- } else
- return drivestatetext[state];
-}
-
-/* Return volume state as a string */
-char *
-volume_state(enum volumestate state)
-{
- if (((unsigned) state) >= STATECOUNT(vol)) {
- sprintf(numeric_state, "Invalid state %d", (int) state);
- return numeric_state;
- } else
- return volstatetext[state];
-}
-
-/* Return plex state as a string */
-char *
-plex_state(enum plexstate state)
-{
- if (((unsigned) state) >= STATECOUNT(plex)) {
- sprintf(numeric_state, "Invalid state %d", (int) state);
- return numeric_state;
- } else
- return plexstatetext[state];
-}
-
-/* Return plex organization as a string */
-char *
-plex_org(enum plexorg org)
-{
- switch (org) {
- case plex_disorg: /* disorganized */
- return "disorg";
- break;
-
- case plex_concat: /* concatenated plex */
- return "concat";
- break;
-
- case plex_striped: /* striped plex */
- return "striped";
- break;
-
- case plex_raid5: /* RAID5 plex */
- return "raid5";
- break;
-
- default:
- sprintf(numeric_state, "Invalid org %d", (int) org);
- return numeric_state;
- }
-}
-
-/* Return sd state as a string */
-char *
-sd_state(enum sdstate state)
-{
- if (((unsigned) state) >= STATECOUNT(sd)) {
- sprintf(numeric_state, "Invalid state %d", (int) state);
- return numeric_state;
- } else
- return sdstatetext[state];
-}
-
-/* Now convert in the other direction */
-/* These are currently used only internally,
- * so we don't do too much error checking */
-enum drivestate
-DriveState(char *text)
-{
- int i;
- for (i = 0; i < STATECOUNT(drive); i++)
- if (strcmp(text, drivestatetext[i]) == 0) /* found it */
- return (enum drivestate) i;
- return -1;
-}
-
-enum sdstate
-SdState(char *text)
-{
- int i;
- for (i = 0; i < STATECOUNT(sd); i++)
- if (strcmp(text, sdstatetext[i]) == 0) /* found it */
- return (enum sdstate) i;
- return -1;
-}
-
-enum plexstate
-PlexState(char *text)
-{
- int i;
- for (i = 0; i < STATECOUNT(plex); i++)
- if (strcmp(text, plexstatetext[i]) == 0) /* found it */
- return (enum plexstate) i;
- return -1;
-}
-
-enum volumestate
-VolState(char *text)
-{
- int i;
- for (i = 0; i < STATECOUNT(vol); i++)
- if (strcmp(text, volstatetext[i]) == 0) /* found it */
- return (enum volstate) i;
- return -1;
-}
-
-/* Take a number with an optional scale factor and convert
- * it to a number of bytes.
- *
- * The scale factors are:
- *
- * b blocks (of 512 bytes)
- * k kilobytes (1024 bytes)
- * m megabytes (of 1024 * 1024 bytes)
- * g gigabytes (of 1024 * 1024 * 1024 bytes)
- */
-u_int64_t
-sizespec(char *spec)
-{
- u_int64_t size;
- char *s;
-
- size = 0;
- s = spec;
- if ((*s >= '0') && (*s <= '9')) { /* it's numeric */
- while ((*s >= '0') && (*s <= '9')) /* it's numeric */
- size = size * 10 + *s++ - '0'; /* convert it */
- switch (*s) {
- case '\0':
- return size;
-
- case 'B':
- case 'b':
- return size * 512;
-
- case 'K':
- case 'k':
- return size * 1024;
-
- case 'M':
- case 'm':
- return size * 1024 * 1024;
-
- case 'G':
- case 'g':
- return size * 1024 * 1024 * 1024;
- }
- }
-#ifdef REALLYKERNEL
- throw_rude_remark(EINVAL, "Invalid length specification: %s", spec);
-#else
- fprintf(stderr, "Invalid length specification: %s", spec);
- longjmp(command_fail, -1);
-#endif
- /* NOTREACHED */
- return -1;
-}
-
-/* Extract the volume number from a device number.
- * Perform no checking. */
-int
-Volno(dev_t dev)
-{
- int x = (int) dev;
- return (x & MASK(VINUM_VOL_WIDTH)) >> VINUM_VOL_SHIFT;
-}
-
-/* Extract a plex number from a device number.
- * Don't check the major number, but check the
- * type. Return -1 for invalid types. */
-int
-Plexno(dev_t dev)
-{
- int x = (int) dev;
-
- switch (DEVTYPE(dev)) {
- case VINUM_VOLUME_TYPE:
- case VINUM_DRIVE_TYPE:
- case VINUM_SUPERDEV_TYPE:
- case VINUM_RAWSD_TYPE:
- return -1;
-
- case VINUM_PLEX_TYPE:
- case VINUM_SD_TYPE:
- return VOL[Volno(x)].plex[(x >> VINUM_PLEX_SHIFT) & (MASK(VINUM_PLEX_WIDTH))];
-
- case VINUM_RAWPLEX_TYPE:
- return ((x & MASK(VINUM_VOL_WIDTH)) >> VINUM_VOL_SHIFT) /* low order 8 bits */
- |((x >> VINUM_RAWPLEX_SHIFT)
- & (MASK(VINUM_RAWPLEX_WIDTH)
- << (VINUM_VOL_SHIFT + VINUM_VOL_WIDTH))); /* upper 12 bits */
- }
- return 0; /* compiler paranoia */
-}
-
-/* Extract a subdisk number from a device number.
- * Don't check the major number, but check the
- * type. Return -1 for invalid types. */
-int
-Sdno(dev_t dev)
-{
- int x = (int) dev;
-
- switch (DEVTYPE(dev)) {
- case VINUM_VOLUME_TYPE:
- case VINUM_DRIVE_TYPE:
- case VINUM_SUPERDEV_TYPE:
- case VINUM_PLEX_TYPE:
- case VINUM_RAWPLEX_TYPE:
- return -1;
-
- case VINUM_SD_TYPE:
- return PLEX[Plexno(x)].sdnos[(x >> VINUM_SD_SHIFT) & (MASK(VINUM_SD_WIDTH))];
-
- case VINUM_RAWSD_TYPE:
- return ((x & MASK(VINUM_VOL_WIDTH)) >> VINUM_VOL_SHIFT) /* low order 8 bits */
- |((x >> VINUM_RAWPLEX_SHIFT) & (MASK(VINUM_RAWPLEX_WIDTH) << (VINUM_VOL_SHIFT + VINUM_VOL_WIDTH))); /* upper 12 bits */
- }
- return -1; /* compiler paranoia */
-}
diff --git a/sys/dev/vinum/vinumvar.h b/sys/dev/vinum/vinumvar.h
deleted file mode 100644
index df579fad53662..0000000000000
--- a/sys/dev/vinum/vinumvar.h
+++ /dev/null
@@ -1,528 +0,0 @@
-/*-
- * Copyright (c) 1997, 1998
- * Nan Yang Computer Services Limited. All rights reserved.
- *
- * This software is distributed under the so-called ``Berkeley
- * License'':
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Nan Yang Computer
- * Services Limited.
- * 4. Neither the name of the Company nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * This software is provided ``as is'', and any express or implied
- * warranties, including, but not limited to, the implied warranties of
- * merchantability and fitness for a particular purpose are disclaimed.
- * In no event shall the company or contributors be liable for any
- * direct, indirect, incidental, special, exemplary, or consequential
- * damages (including, but not limited to, procurement of substitute
- * goods or services; loss of use, data, or profits; or business
- * interruption) however caused and on any theory of liability, whether
- * in contract, strict liability, or tort (including negligence or
- * otherwise) arising in any way out of the use of this software, even if
- * advised of the possibility of such damage.
- *
- * $Id: vinumvar.h,v 1.18 1999/01/15 06:00:24 grog Exp grog $
- */
-
-#include <sys/time.h>
-#include <dev/vinum/vinumstate.h>
-/* Some configuration maxima. They're an enum because
- * we can't define global constants. Sorry about that.
- *
- * These aren't as bad as they look: most of them are soft limits.
- */
-
-enum constants {
- VINUM_HEADER = 512, /* size of header on disk */
- MAXCONFIGLINE = 1024, /* maximum size of a single config line */
- /* XXX Do we still need this? */
- MINVINUMSLICE = 1048576, /* minimum size of a slice */
-
- CDEV_MAJOR = 91, /* major number for character device */
- BDEV_MAJOR = 25, /* and block device */
-
- ROUND_ROBIN_READPOL = -1, /* round robin read policy */
-
- /* type field in minor number */
- VINUM_VOLUME_TYPE = 0,
- VINUM_PLEX_TYPE = 1,
- VINUM_SD_TYPE = 2,
- VINUM_DRIVE_TYPE = 3,
- VINUM_SUPERDEV_TYPE = 4, /* super device. */
- VINUM_RAWPLEX_TYPE = 5, /* anonymous plex */
- VINUM_RAWSD_TYPE = 6, /* anonymous subdisk */
-
- /* Shifts for the individual fields in the device */
- VINUM_TYPE_SHIFT = 28,
- VINUM_VOL_SHIFT = 0,
- VINUM_PLEX_SHIFT = 16,
- VINUM_SD_SHIFT = 20,
- VINUM_VOL_WIDTH = 8,
- VINUM_PLEX_WIDTH = 3,
- VINUM_SD_WIDTH = 8,
-
- /* Shifts for the second half of raw plex and
- * subdisk numbers */
- VINUM_RAWPLEX_SHIFT = 8, /* shift the second half this much */
- VINUM_RAWPLEX_WIDTH = 12, /* width of second half */
-
- MAJORDEV_SHIFT = 8,
-
- MAXPLEX = 8, /* maximum number of plexes in a volume */
- MAXSD = 256, /* maximum number of subdisks in a plex */
- MAXDRIVENAME = 32, /* maximum length of a device name */
- MAXSDNAME = 64, /* maximum length of a subdisk name */
- MAXPLEXNAME = 64, /* maximum length of a plex name */
- MAXVOLNAME = 64, /* maximum length of a volume name */
- MAXNAME = 64, /* maximum length of any name */
-
-
-/* Create a block device number */
-#define VINUMBDEV(v,p,s,t) ((BDEV_MAJOR << MAJORDEV_SHIFT) \
- | (v << VINUM_VOL_SHIFT) \
- | (p << VINUM_PLEX_SHIFT) \
- | (s << VINUM_SD_SHIFT) \
- | (t << VINUM_TYPE_SHIFT) )
-
-/* Create a bit mask for x bits */
-#define MASK(x) ((1 << (x)) - 1)
-
-/* Create a raw block device number */
-#define VINUMRBDEV(d,t) ((BDEV_MAJOR << MAJORDEV_SHIFT) \
- | ((d & MASK (VINUM_VOL_WIDTH)) << VINUM_VOL_SHIFT) \
- | ((d & ~MASK (VINUM_VOL_WIDTH)) \
- << (VINUM_PLEX_SHIFT + VINUM_VOL_WIDTH)) \
- | (t << VINUM_TYPE_SHIFT) )
-
-/* And a character device number */
-#define VINUMCDEV(v,p,s,t) ((CDEV_MAJOR << MAJORDEV_SHIFT) \
- | (v << VINUM_VOL_SHIFT) \
- | (p << VINUM_PLEX_SHIFT) \
- | (s << VINUM_SD_SHIFT) \
- | (t << VINUM_TYPE_SHIFT) )
-
-/* extract device type */
-#define DEVTYPE(x) ((x >> VINUM_TYPE_SHIFT) & 7)
-
- VINUM_SUPERDEV = VINUMBDEV(0, 0, 0, VINUM_SUPERDEV_TYPE), /* superdevice number */
-
-/* the number of object entries to cater for initially, and also the
- * value by which they are incremented. It doesn't take long
- * to extend them, so theoretically we could start with 1 of each, but
- * it's untidy to allocate such small areas. These values are
- * probably too small.
- */
-
- INITIAL_DRIVES = 4,
- INITIAL_VOLUMES = 4,
- INITIAL_PLEXES = 8,
- INITIAL_SUBDISKS = 16,
- INITIAL_SUBDISKS_IN_PLEX = 4, /* number of subdisks to allocate to a plex */
- INITIAL_SUBDISKS_IN_DRIVE = 4, /* number of subdisks to allocate to a drive */
- INITIAL_DRIVE_FREELIST = 16, /* number of entries in drive freelist */
- PLEX_REGION_TABLE_SIZE = 8, /* number of entries in plex region tables */
- INITIAL_LOCKS = 8, /* number of locks to allocate to a volume */
- DEFAULT_REVIVE_BLOCKSIZE = 65536, /* size of block to transfer in one op */
- VINUMHOSTNAMELEN = 32, /* host name field in label */
-};
-
-/* device numbers */
-
-/*
- * 31 30 28 27 20 19 18 16 15 8 7 0
- * |-----------------------------------------------------------------------------------------------|
- * |X | Type | Subdisk number | X| Plex | Major number | volume number |
- * |-----------------------------------------------------------------------------------------------|
- *
- * 0x2 03 1 19 06
- *
- * The fields in the minor number are interpreted as follows:
- *
- * Volume: Only type and volume number are relevant
- * Plex in volume: type, plex number in volume and volume number are relevant
- * raw plex: type, plex number is made of bits 27-16 and 7-0
- * raw subdisk: type, subdisk number is made of bits 27-16 and 7-0
- */
-
-struct devcode {
-/* CARE. These fields assume a big-endian word. On a
- * little-endian system, they're the wrong way around */
- unsigned volume:8; /* up to 256 volumes */
- unsigned major:8; /* this is where the major number fits */
- unsigned plex:3; /* up to 8 plexes per volume */
- unsigned unused:1; /* up for grabs */
- unsigned sd:8; /* up to 256 subdisks per plex */
- unsigned type:3; /* type of object */
- /* type field
- VINUM_VOLUME = 0,
- VINUM_PLEX = 1,
- VINUM_SUBDISK = 2,
- VINUM_DRIVE = 3,
- VINUM_SUPERDEV = 4,
- VINUM_RAWPLEX = 5,
- VINUM_RAWSD = 6 */
- unsigned signbit:1; /* to make 32 bits */
-};
-
-#define VINUM_DIR "/dev/vinum"
-#define VINUM_RDIR "/dev/rvinum"
-#define VINUM_SUPERDEV_NAME VINUM_DIR"/control"
-
-/* Flags for all objects. Most of them only apply to
- * specific objects, but we have space for all in any
- * 32 bit flags word. */
-enum objflags {
- VF_LOCKED = 1, /* somebody has locked access to this object */
- VF_LOCKING = 2, /* we want access to this object */
- VF_WRITETHROUGH = 8, /* volume: write through */
- VF_INITED = 0x10, /* unit has been initialized */
- VF_WLABEL = 0x20, /* label area is writable */
- VF_LABELLING = 0x40, /* unit is currently being labelled */
- VF_WANTED = 0x80, /* someone is waiting to obtain a lock */
- VF_RAW = 0x100, /* raw volume (no file system) */
- VF_LOADED = 0x200, /* module is loaded */
- VF_CONFIGURING = 0x400, /* somebody is changing the config */
- VF_WILL_CONFIGURE = 0x800, /* somebody wants to change the config */
- VF_CONFIG_INCOMPLETE = 0x1000, /* haven't finished changing the config */
- VF_CONFIG_SETUPSTATE = 0x2000, /* set a volume up if all plexes are empty */
- VF_READING_CONFIG = 0x4000, /* we're reading config database from disk */
- VF_KERNELOP = 0x8000, /* we're performing ops from kernel space */
- VF_NEWBORN = 0x10000, /* for objects: we've just created it */
- VF_CONFIGURED = 0x20000, /* for drives: we read the config */
-};
-
-/* Global configuration information for the vinum subsystem */
-struct _vinum_conf {
- /* Pointers to vinum structures */
- struct drive *drive;
- struct sd *sd;
- struct plex *plex;
- struct volume *volume;
-
- /* the number allocated */
- int drives_allocated;
- int subdisks_allocated;
- int plexes_allocated;
- int volumes_allocated;
-
- /* and the number currently in use */
- int drives_used;
- int subdisks_used;
- int plexes_used;
- int volumes_used;
-
- int flags;
- int opencount; /* number of times we've been opened */
-#if VINUMDEBUG
- int lastrq;
- struct buf *lastbuf;
- struct rqinfo **rqipp;
- struct rqinfo *rqinfop;
-#endif
-};
-
-/* Use these defines to simplify code */
-#define DRIVE vinum_conf.drive
-#define SD vinum_conf.sd
-#define PLEX vinum_conf.plex
-#define VOL vinum_conf.volume
-#define VFLAGS vinum_conf.flags
-
-/* Slice header
-
- * Vinum drives start with this structure:
- *
- *\ Sector
- * |--------------------------------------|
- * | PDP-11 memorial boot block | 0
- * |--------------------------------------|
- * | Disk label, maybe | 1
- * |--------------------------------------|
- * | Slice definition (vinum_hdr) | 2
- * |--------------------------------------|
- * | |
- * | Configuration info, first copy | 3
- * | |
- * |--------------------------------------|
- * | |
- * | Configuration info, second copy | 3 + size of config
- * | |
- * |--------------------------------------|
- */
-
-/* Sizes and offsets of our information */
-enum {
- VINUM_LABEL_OFFSET = 4096, /* offset of vinum label */
- VINUMHEADERLEN = 512, /* size of vinum label */
- VINUM_CONFIG_OFFSET = 4608, /* offset of first config copy */
- MAXCONFIG = 65536, /* and size of config copy */
- DATASTART = (MAXCONFIG * 2 + VINUM_CONFIG_OFFSET) / DEV_BSIZE /* this is where the data starts */
-};
-
-/* hostname is 256 bytes long, but we don't need to shlep
- * multiple copies in vinum. We use the host name just
- * to identify this system, and 32 bytes should be ample
- * for that purpose */
-
-struct vinum_label {
- char sysname[VINUMHOSTNAMELEN]; /* system name at time of creation */
- char name[MAXDRIVENAME]; /* our name of the drive */
- struct timeval date_of_birth; /* the time it was created */
- struct timeval last_update; /* and the time of last update */
- off_t drive_size; /* total size in bytes of the drive.
- * This value includes the headers */
-};
-
-struct vinum_hdr {
- long long magic; /* we're long on magic numbers */
- /* XXX Get these right for big-endian */
-#define VINUM_MAGIC 22322600044678729LL /* should be this */
-#define VINUM_NOMAGIC 22322600044678990LL /* becomes this after obliteration */
- int config_length; /* size in bytes of each copy of the
- * configuration info.
- * This must be a multiple of the sector size. */
-
- struct vinum_label label; /* unique label */
-};
-
-/* Information returned from read_drive_label */
-enum drive_label_info {
- DL_CANT_OPEN, /* invalid partition */
- DL_NOT_OURS, /* valid partition, but no vinum label */
- DL_DELETED_LABEL, /* valid partition, deleted label found */
- DL_WRONG_DRIVE, /* drive name doesn't match */
- DL_OURS /* valid partition and label found */
-};
-
-/*** Drive definitions ***/
-/* A drive corresponds to a disk slice. We use a different term to show
- * the difference in usage: it doesn't have to be a slice, and could
- * theroretically be a complete, unpartitioned disk */
-
-struct drive {
- enum drivestate state; /* current state */
- int flags; /* flags */
- int subdisks_allocated; /* number of entries in sd */
- int subdisks_used; /* and the number used */
- int blocksize; /* size of fs blocks */
- int pid; /* of locker */
- u_int64_t sectors_available; /* number of sectors still available */
- int secsperblock;
- int lasterror; /* last error on drive */
- int driveno; /* index of drive in vinum_conf */
- int opencount; /* number of up subdisks */
- u_int64_t reads; /* number of reads on this drive */
- u_int64_t writes; /* number of writes on this drive */
- u_int64_t bytes_read; /* number of bytes read */
- u_int64_t bytes_written; /* number of bytes written */
- dev_t dev; /* and device number */
- char devicename[MAXDRIVENAME]; /* name of the slice it's on */
- struct vnode *vp; /* vnode pointer */
- struct proc *p;
- struct vinum_label label; /* and the label information */
- struct partinfo partinfo; /* partition information */
- int freelist_size; /* number of entries alloced in free list */
- int freelist_entries; /* number of entries used in free list */
- struct drive_freelist { /* sorted list of free space on drive */
- u_int64_t offset;
- long sectors;
- } *freelist;
-};
-
-/*** Subdisk definitions ***/
-
-struct sd {
- enum sdstate state; /* state */
- int flags;
- int lasterror; /* last error occurred */
- /* offsets in blocks */
- int64_t driveoffset; /* offset on drive */
- /* plexoffset is the offset from the beginning of the
- * plex to the very first part of the subdisk, in
- * sectors. For striped and RAID-5 plexes, only
- * the first stripe is located at this offset */
- int64_t plexoffset; /* offset in plex */
- u_int64_t sectors; /* and length in sectors */
- int plexno; /* index of plex, if it belongs */
- int driveno; /* index of the drive on which it is located */
- int sdno; /* our index in vinum_conf */
- int plexsdno; /* and our number in our plex
- * (undefined if no plex) */
- int pid; /* pid of process which opened us */
- u_int64_t reads; /* number of reads on this subdisk */
- u_int64_t writes; /* number of writes on this subdisk */
- u_int64_t bytes_read; /* number of bytes read */
- u_int64_t bytes_written; /* number of bytes written */
- /* revive parameters */
- u_int64_t revived; /* block number of current revive request */
- int revive_blocksize; /* revive block size (bytes) */
- int revive_interval; /* and time to wait between transfers */
- struct request *waitlist; /* list of requests waiting on revive op */
- char name[MAXSDNAME]; /* name of subdisk */
-};
-
-/*** Plex definitions ***/
-
-/* kinds of plex organization */
-enum plexorg {
- plex_disorg, /* disorganized */
- plex_concat, /* concatenated plex */
- plex_striped, /* striped plex */
- plex_raid5 /* RAID5 plex */
-};
-
-struct plex {
- enum plexorg organization; /* Plex organization */
- enum plexstate state; /* and current state */
- u_int64_t length; /* total length of plex (max offset, in blocks) */
- int flags;
- int stripesize; /* size of stripe or raid band, in sectors */
- int subdisks; /* number of associated subdisks */
- int subdisks_allocated; /* number of subdisks allocated space for */
- int *sdnos; /* list of component subdisks */
- int plexno; /* index of plex in vinum_conf */
- int volno; /* index of volume */
- int volplexno; /* number of plex in volume */
- int pid; /* pid of process which opened us */
- /* Lock information */
- int locks; /* number of locks used */
- int alloclocks; /* number of locks allocated */
- struct rangelock *lock; /* ranges of locked addresses */
- /* Statistics */
- u_int64_t reads; /* number of reads on this plex */
- u_int64_t writes; /* number of writes on this plex */
- u_int64_t bytes_read; /* number of bytes read */
- u_int64_t bytes_written; /* number of bytes written */
- u_int64_t multiblock; /* requests that needed more than one block */
- u_int64_t multistripe; /* requests that needed more than one stripe */
- int sddowncount; /* number of subdisks down */
- char name[MAXPLEXNAME]; /* name of plex */
-};
-
-/*** Volume definitions ***/
-
-
-struct volume {
- enum volumestate state; /* current state */
- int plexes; /* number of plexes */
- int preferred_plex; /* plex to read from, -1 for round-robin */
- int last_plex_read; /* index of plex used for last read,
- * for round-robin */
- dev_t devno; /* device number */
- int flags; /* status and configuration flags */
- int opencount; /* number of opens (all the same process) */
- int openflags; /* flags supplied to last open(2) */
- u_int64_t size; /* size of volume */
- int disk; /* disk index */
- int blocksize; /* logical block size */
- int active; /* number of outstanding requests active */
- int subops; /* and the number of suboperations */
- pid_t pid; /* pid of locker */
- /* Statistics */
- u_int64_t bytes_read; /* number of bytes read */
- u_int64_t bytes_written; /* number of bytes written */
- u_int64_t reads; /* number of reads on this volume */
- u_int64_t writes; /* number of writes on this volume */
- u_int64_t recovered_reads; /* reads recovered from another plex */
- /* Unlike subdisks in the plex, space for the plex pointers is static */
- int plex[MAXPLEX]; /* index of plexes */
- char name[MAXVOLNAME]; /* name of volume */
- struct disklabel label; /* for DIOCGPART */
-};
-
-/* Table expansion. Expand table, which contains oldcount
- * entries of type element, by increment entries, and change
- * oldcount accordingly */
-#define EXPAND(table, element, oldcount, increment) \
-{ \
- expand_table ((void **) &table, \
- oldcount * sizeof (element), \
- (oldcount + increment) * sizeof (element) ); \
- oldcount += increment; \
- }
-
-/* Information on vinum's memory usage */
-struct meminfo {
- int mallocs; /* number of malloced blocks */
- int total_malloced; /* total amount malloced */
- int highwater; /* maximum number of mallocs */
- struct mc *malloced; /* pointer to kernel table */
-};
-
-struct mc {
- int seq;
- int size;
- short line;
- short flags;
-#define ALLOC_KVA 1 /* allocated via kva calls */
- int *databuf; /* really vm_object_t */
- caddr_t address;
- char file[16];
-};
-
-/* These enums are used by the state transition
- * routines. They're in bit map format:
- *
- * Bit 0: Other plexes in the volume are down
- * Bit 1: Other plexes in the volume are up
- * Bit 2: The current plex is up
- * Maybe they should be local to
- * state.c */
-enum volplexstate {
- volplex_onlyusdown = 0, /* we're the only plex, and we're down */
- volplex_alldown, /* 1: another plex is down, and so are we */
- volplex_otherup, /* 2: another plex is up */
- volplex_otherupdown, /* other plexes are up and down */
- volplex_onlyus, /* 4: we're up and alone */
- volplex_onlyusup, /* only we are up, others are down */
- volplex_allup, /* all plexes are up */
- volplex_someup /* some plexes are up, including us */
-};
-
-/* state map for plex */
-enum sdstates {
- sd_emptystate = 1,
- sd_downstate = 2, /* found an SD which is down */
- sd_crashedstate = 4, /* found an SD which is crashed */
- sd_obsoletestate = 8, /* found an SD which is obsolete */
- sd_stalestate = 16, /* found an SD which is stale */
- sd_rebornstate = 32, /* found an SD which is reborn */
- sd_upstate = 64, /* found an SD which is up */
- sd_initstate = 128, /* found an SD which is init */
- sd_otherstate = 256 /* found an SD in some other state */
-};
-
-/* This is really just a parameter to pass to
- * set_<foo>_state, but since it needs to be known
- * in the external definitions, we need to define
- * it here */
-enum setstateflags {
- setstate_none = 0, /* no flags */
- setstate_force = 1, /* force the state change */
- setstate_configuring = 2, /* we're currently configuring, don't save */
-};
-
-#ifdef VINUMDEBUG
-/* Debugging stuff */
-enum debugflags {
- DEBUG_ADDRESSES = 1, /* show buffer information during requests */
- DEBUG_NUMOUTPUT = 2, /* show the value of vp->v_numoutput */
- DEBUG_RESID = 4, /* go into debugger in complete_rqe */
- DEBUG_LASTREQS = 8, /* keep a circular buffer of last requests */
- DEBUG_REVIVECONFLICT = 16, /* print info about revive conflicts */
- DEBUG_REMOTEGDB = 256, /* go into remote gdb */
-};
-
-#endif
diff --git a/sys/dev/vx/if_vx.c b/sys/dev/vx/if_vx.c
index b1d056fc8ba58..df8a606578ded 100644
--- a/sys/dev/vx/if_vx.c
+++ b/sys/dev/vx/if_vx.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: if_vx.c,v 1.18 1998/07/13 09:52:53 bde Exp $
+ * $Id: if_vx.c,v 1.17 1998/06/07 17:09:51 dfr Exp $
*
*/
@@ -131,6 +131,7 @@ static void vxsetfilter __P((struct vx_softc *));
static void vxgetlink __P((struct vx_softc *));
static void vxsetlink __P((struct vx_softc *));
/* int vxbusyeeprom __P((struct vx_softc *)); */
+/* void vxintr __P((void *)); */
struct vx_softc *
vxalloc(unit)
@@ -639,11 +640,10 @@ vxtxstat(sc)
}
void
-vxintr(voidsc)
- void *voidsc;
+vxintr(sc)
+ struct vx_softc *sc;
{
register short status;
- struct vx_softc *sc = voidsc;
struct ifnet *ifp = &sc->arpcom.ac_if;
for (;;) {
diff --git a/sys/dev/vx/if_vxreg.h b/sys/dev/vx/if_vxreg.h
index 688da0374649d..99708af18509e 100644
--- a/sys/dev/vx/if_vxreg.h
+++ b/sys/dev/vx/if_vxreg.h
@@ -452,5 +452,5 @@ extern struct vx_softc *vxalloc __P((int));
extern void vxfree __P((struct vx_softc *));
extern int vxattach __P((struct vx_softc *));
extern void vxstop __P((struct vx_softc *));
-extern void vxintr __P((void *));
+extern void vxintr __P((struct vx_softc *));
extern int vxbusyeeprom __P((struct vx_softc *));